diff --git a/README.md b/README.md index c0a7dbb..c167cb5 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,69 @@ tags: Note content here. ``` +## Zotero and Zotpress Citation Support + +This plugin can convert pandoc-style citations in your note to Zotpress shortcodes when publishing. + +Supported source format in Obsidian: + +```markdown +[[@citekey]] +[[@key1; @key2]] +[[@key,pp. 21-24]] +``` + +Published shortcode output examples: + +```text +[zotpressInText item="{16058788:9ZU64DIJ}"] +[zotpressInText item="{16058788:7D6FGXB2},{16058788:W8HPAWWQ}"] +``` + +When bibliography auto-append is needed, the plugin appends: + +```markdown +--- + +# Bibliography + +[zotpressInTextBib style="apa" sortby="author" sort="ASC"] +``` + +### Required plugins and local services + +To make citekey to item-key conversion work, you need all of the following: + +1. WordPress plugin: Zotpress installed and activated on your WordPress site. +2. Zotero desktop app: running locally while publishing from Obsidian. +3. Zotero add-on: Better BibTeX for Zotero installed and enabled. +4. Better BibTeX JSON-RPC server reachable from Obsidian (default endpoint is `http://localhost:23119/better-bibtex/json-rpc`). + +Optional but common in Obsidian workflows: + +1. A citation management plugin that helps insert citekeys (for example, plugins that insert `[@key]` style references). + +### New related settings + +In plugin settings: + +1. Format Zotpress shortcodes + - Enables citation conversion during publish. +2. Resolve citekeys via Better BibTeX + - Resolves citekeys like `@key` to Zotero library ID and item key. +3. Better BibTeX JSON-RPC endpoint + - URL for Better BibTeX local API. Default: `http://localhost:23119/better-bibtex/json-rpc`. +4. Better BibTeX library selector + - Optional selector passed to Better BibTeX when resolving items. Examples: `My Library`, `*`, or a library ID. +5. Fallback Zotpress library id + - Used when library ID cannot be inferred from lookup response. + +### Behavior and fallback + +1. If resolution succeeds, citekeys are replaced with Zotpress-compatible `{libraryID:itemKey}` tuples. +2. If some citekeys cannot be resolved, unresolved citations are left unchanged in the content. +3. If Better BibTeX is unreachable, publish still continues and the plugin shows a warning notice. + ## Limits This plugin uses XML-RPC or REST protocol to publish to WordPress. diff --git a/main.js b/main.js index 79123a4..8bcf0e5 100644 --- a/main.js +++ b/main.js @@ -65130,7 +65130,12 @@ var DEFAULT_SETTINGS = { mathJaxOutputType: "svg" /* SVG */, commentConvertMode: "ignore" /* Ignore */, enableHtml: false, - replaceMediaLinks: true + replaceMediaLinks: true, + formatZotpressShortcodes: false, + zotpressResolveViaBetterBibTeX: true, + zotpressBetterBibTeXEndpointUrl: "http://localhost:23119/better-bibtex/json-rpc", + zotpressBetterBibTeXLibrarySelector: "", + zotpressLibraryId: "" }; async function upgradeSettings(existingSettings, to) { console.log(existingSettings, to); @@ -68993,11 +68998,11 @@ var import_obsidian4 = require("obsidian"); // src/confirm-modal.ts var import_obsidian2 = require("obsidian"); -function openConfirmModal(messages, plugin4) { +function openConfirmModal(messages, plugin5) { return new Promise((resolve, reject) => { const modal = new ConfirmModal( messages, - plugin4, + plugin5, (code2, modal2) => { resolve({ code: code2 @@ -69009,10 +69014,10 @@ function openConfirmModal(messages, plugin4) { }); } var ConfirmModal = class extends import_obsidian2.Modal { - constructor(messages, plugin4, onAction) { - super(plugin4.app); + constructor(messages, plugin5, onAction) { + super(plugin5.app); this.messages = messages; - this.plugin = plugin4; + this.plugin = plugin5; this.onAction = onAction; } onOpen() { @@ -69047,9 +69052,9 @@ var ConfirmModal = class extends import_obsidian2.Modal { // src/abstract-modal.ts var import_obsidian3 = require("obsidian"); var AbstractModal = class extends import_obsidian3.Modal { - constructor(plugin4) { - super(plugin4.app); - this.plugin = plugin4; + constructor(plugin5) { + super(plugin5.app); + this.plugin = plugin5; } t(key, vars) { return this.plugin.i18n.t(key, vars); @@ -72297,9 +72302,9 @@ try { // src/wp-publish-modal.ts var WpPublishModal = class extends AbstractModal { - constructor(plugin4, categories, postTypes, onSubmit, matterData) { - super(plugin4); - this.plugin = plugin4; + constructor(plugin5, categories, postTypes, onSubmit, matterData) { + super(plugin5); + this.plugin = plugin5; this.categories = categories; this.postTypes = postTypes; this.onSubmit = onSubmit; @@ -77335,9 +77340,9 @@ MarkdownIt.prototype.disable = function(list2, ignoreInvalid) { } return this; }; -MarkdownIt.prototype.use = function(plugin4) { +MarkdownIt.prototype.use = function(plugin5) { const args = [this].concat(Array.prototype.slice.call(arguments, 1)); - plugin4.apply(plugin4, args); + plugin5.apply(plugin5, args); return this; }; MarkdownIt.prototype.parse = function(src, env) { @@ -77491,6 +77496,84 @@ function plugin3(md) { }; } +// src/markdown-it-citation-plugin.ts +var tokenType3 = "ob_pandoc_citation"; +var pluginOptions4 = { + enabled: false +}; +function parseCitationEntry(value) { + const entry = trim_default(value); + if (entry.length === 0 || !entry.startsWith("@")) { + return null; + } + const withoutPrefix = trim_default(entry.slice(1)); + if (withoutPrefix.length === 0) { + return null; + } + const separatorIndex = withoutPrefix.indexOf(","); + if (separatorIndex < 0) { + return { + key: withoutPrefix + }; + } + const key = trim_default(withoutPrefix.slice(0, separatorIndex)); + const locator = trim_default(withoutPrefix.slice(separatorIndex + 1)); + if (key.length === 0) { + return null; + } + if (locator.length === 0) { + return { + key + }; + } + return { + key, + locator + }; +} +function toZotpressInTextShortcode(entries) { + const itemValue = entries.map((entry) => { + if (entry.locator) { + return `{${entry.key},${entry.locator}}`; + } + return `{${entry.key}}`; + }).join(";"); + return `[zotpressInText item="${itemValue}"]`; +} +var MarkdownItCitationPluginInstance = { + plugin: plugin4, + updateEnabled: (enabled) => { + pluginOptions4.enabled = enabled; + } +}; +function plugin4(md) { + md.inline.ruler.after("backticks", tokenType3, (state, silent) => { + if (!pluginOptions4.enabled) { + return false; + } + const regex = /^\[\[\s*(@[^\]\n]+?)\s*\]\]/; + const match3 = state.src.slice(state.pos).match(regex); + if (!match3) { + return false; + } + const rawBody = match3[1]; + const entries = rawBody.split(";").map(parseCitationEntry); + if (entries.length === 0 || entries.some((entry) => entry === null)) { + return false; + } + if (silent) { + return true; + } + const token = state.push(tokenType3, "span", 0); + token.content = toZotpressInTextShortcode(entries); + state.pos += match3[0].length; + return true; + }); + md.renderer.rules[tokenType3] = (tokens, idx) => { + return tokens[idx].content; + }; +} + // src/app-state.ts var AppStore = class { constructor() { @@ -77499,25 +77582,25 @@ var AppStore = class { } }; var AppState = new AppStore(); -AppState.markdownParser.use(MarkdownItCommentPluginInstance.plugin).use(MarkdownItMathJax3PluginInstance.plugin).use(MarkdownItImagePluginInstance.plugin); +AppState.markdownParser.use(MarkdownItCommentPluginInstance.plugin).use(MarkdownItMathJax3PluginInstance.plugin).use(MarkdownItImagePluginInstance.plugin).use(MarkdownItCitationPluginInstance.plugin); // src/abstract-wp-client.ts var import_file_type_checker = __toESM(require_dist()); // src/post-published-modal.ts var import_obsidian6 = require("obsidian"); -function openPostPublishedModal(plugin4) { +function openPostPublishedModal(plugin5) { return new Promise((resolve, reject) => { - new PostPublishedModal(plugin4, (modal) => { + new PostPublishedModal(plugin5, (modal) => { resolve(); modal.close(); }); }); } var PostPublishedModal = class extends import_obsidian6.Modal { - constructor(plugin4, onOpenClicked) { - super(plugin4.app); - this.plugin = plugin4; + constructor(plugin5, onOpenClicked) { + super(plugin5.app); + this.plugin = plugin5; this.onOpenClicked = onOpenClicked; } onOpen() { @@ -77545,9 +77628,9 @@ var PostPublishedModal = class extends import_obsidian6.Modal { // src/wp-login-modal.ts var import_obsidian7 = require("obsidian"); -function openLoginModal(plugin4, profile, validateUser) { +function openLoginModal(plugin5, profile, validateUser) { return new Promise((resolve, reject) => { - const modal = new WpLoginModal(plugin4, profile, async (auth, loginModal) => { + const modal = new WpLoginModal(plugin5, profile, async (auth, loginModal) => { const validate = await validateUser(auth); if (validate) { resolve({ @@ -77556,16 +77639,16 @@ function openLoginModal(plugin4, profile, validateUser) { }); modal.close(); } else { - showError(plugin4.i18n.t("error_invalidUser")); + showError(plugin5.i18n.t("error_invalidUser")); } }); modal.open(); }); } var WpLoginModal = class extends AbstractModal { - constructor(plugin4, profile, onSubmit) { - super(plugin4); - this.plugin = plugin4; + constructor(plugin5, profile, onSubmit) { + super(plugin5); + this.plugin = plugin5; this.profile = profile; this.onSubmit = onSubmit; } @@ -77623,10 +77706,327 @@ var WpLoginModal = class extends AbstractModal { } }; +// src/zotpress-citation-resolver.ts +var http = __toESM(require("http")); +var https = __toESM(require("https")); +function parseCitationEntry2(value) { + const entry = trim_default(value); + if (entry.length === 0 || !entry.startsWith("@")) { + return null; + } + const withoutPrefix = trim_default(entry.slice(1)); + if (withoutPrefix.length === 0) { + return null; + } + const separatorIndex = withoutPrefix.indexOf(","); + if (separatorIndex < 0) { + return { + key: withoutPrefix + }; + } + const key = trim_default(withoutPrefix.slice(0, separatorIndex)); + const locator = trim_default(withoutPrefix.slice(separatorIndex + 1)); + if (key.length === 0) { + return null; + } + if (locator.length === 0) { + return { + key + }; + } + return { + key, + locator + }; +} +function findCitationMatches(content) { + const regex = /\[\[\s*(@[^\]\n]+?)\s*\]\]/g; + const matches = []; + let match3 = regex.exec(content); + while (match3 !== null) { + const body = match3[1]; + const entries = body.split(";").map(parseCitationEntry2); + if (entries.length > 0 && entries.every((entry) => entry !== null)) { + matches.push({ + raw: match3[0], + start: match3.index, + end: match3.index + match3[0].length, + entries + }); + } + match3 = regex.exec(content); + } + return matches; +} +function toZotpressInTextShortcode2(entries, mapped) { + const tuples = entries.map((entry) => { + const resolved = mapped[entry.key]; + if (entry.locator) { + return `{${resolved.libraryId}:${resolved.itemKey},${entry.locator}}`; + } + return `{${resolved.libraryId}:${resolved.itemKey}}`; + }); + if (tuples.length === 1) { + return `[zotpressInText item="${tuples[0]}"]`; + } + return `[zotpressInText item="${tuples.join(",")}"]`; +} +function collectStringValues(value) { + if (!value || typeof value !== "object") { + return []; + } + const values = []; + const queue = [value]; + while (queue.length > 0) { + const next2 = queue.shift(); + if (!next2 || typeof next2 !== "object") { + continue; + } + for (const currentValue of Object.values(next2)) { + if (typeof currentValue === "string") { + values.push(currentValue); + } else if (currentValue && typeof currentValue === "object") { + queue.push(currentValue); + } + } + } + return values; +} +function parseItemReferenceFromUri(uri) { + const pattern = /\/(users|groups)\/(\d+)\/items\/([A-Z0-9]{8})\b/i; + const match3 = uri.match(pattern); + if (!match3) { + return null; + } + return { + libraryId: match3[2], + itemKey: match3[3] + }; +} +function asString(value) { + if (typeof value === "string" && value.trim().length > 0) { + return value.trim(); + } + if (typeof value === "number") { + return `${value}`; + } + return null; +} +function extractFromUnknownItem(value, fallbackLibraryId) { + if (!value || typeof value !== "object") { + return null; + } + const source = value; + let libraryId = asString(source.libraryID) || asString(source.libraryId) || asString(source.userID) || asString(source.groupID) || null; + let itemKey = asString(source.itemKey) || asString(source.key) || null; + for (const str of collectStringValues(value)) { + const parsed = parseItemReferenceFromUri(str); + if (parsed) { + libraryId = parsed.libraryId; + itemKey = itemKey || parsed.itemKey; + break; + } + } + if (!itemKey) { + const id = asString(source.id); + if (id && /^[A-Z0-9]{8}$/i.test(id)) { + itemKey = id; + } + } + if (!libraryId && fallbackLibraryId) { + libraryId = fallbackLibraryId; + } + if (!libraryId || !itemKey) { + return null; + } + return { + libraryId, + itemKey + }; +} +function httpPost(endpointUrl, body) { + return new Promise((resolve, reject) => { + var _a2; + let parsed; + try { + parsed = new URL(endpointUrl); + } catch (e) { + reject(new Error(`Invalid endpoint URL: ${endpointUrl}`)); + return; + } + const isHttps = parsed.protocol === "https:"; + const lib2 = isHttps ? https : http; + const port = parsed.port ? parseInt(parsed.port, 10) : isHttps ? 443 : 80; + const bodyBuf = Buffer.from(body, "utf8"); + const req = lib2.request( + { + hostname: parsed.hostname, + port, + path: parsed.pathname + ((_a2 = parsed.search) != null ? _a2 : ""), + method: "POST", + headers: { + "Content-Type": "application/json", + Accept: "application/json", + "Content-Length": bodyBuf.byteLength + } + }, + (res) => { + const chunks = []; + res.on("data", (chunk) => chunks.push(chunk)); + res.on("end", () => resolve(Buffer.concat(chunks).toString("utf8"))); + res.on("error", reject); + } + ); + req.on("error", reject); + req.write(bodyBuf); + req.end(); + }); +} +async function callJsonRpc(endpointUrl, method, params) { + const body = JSON.stringify({ + jsonrpc: "2.0", + id: `${Date.now()}-${Math.random().toString(36).slice(2)}`, + method, + params + }); + const responseText = await httpPost(endpointUrl, body); + let payload; + try { + payload = JSON.parse(responseText); + } catch (e) { + throw new Error(`Invalid JSON from Better BibTeX: ${responseText.slice(0, 120)}`); + } + if ("error" in payload && payload.error) { + throw new Error(payload.error.message); + } + return payload.result; +} +async function resolveWithSearch(citekeys, options) { + var _a2; + const mapped = {}; + for (const citekey of citekeys) { + try { + const results = await callJsonRpc( + options.endpointUrl, + "item.search", + [citekey] + ); + if (!Array.isArray(results) || results.length === 0) { + console.warn(`[Zotpress] No BBT search results for citekey "${citekey}"`); + continue; + } + const item = (_a2 = results.find((r) => asString(r.citekey) === citekey)) != null ? _a2 : results.length === 1 ? results[0] : null; + if (!item) { + console.warn(`[Zotpress] Exact match not found for "${citekey}" among`, results.map((r) => r.citekey)); + continue; + } + const uri = asString(item.id); + if (uri) { + const parsed = parseItemReferenceFromUri(uri); + if (parsed) { + mapped[citekey] = parsed; + console.log(`[Zotpress] Resolved "${citekey}" \u2192 ${parsed.libraryId}:${parsed.itemKey}`); + continue; + } + } + const extracted = extractFromUnknownItem(item, options.fallbackLibraryId); + if (extracted) { + mapped[citekey] = extracted; + console.log(`[Zotpress] Resolved "${citekey}" via fields \u2192 ${extracted.libraryId}:${extracted.itemKey}`); + } else { + console.warn(`[Zotpress] Could not extract libraryId/itemKey for "${citekey}". URI: "${uri}"`); + } + } catch (err) { + console.error(`[Zotpress] item.search failed for "${citekey}":`, err); + } + } + return { mapped, unresolved: citekeys.filter((k) => !mapped[k]) }; +} +async function resolveWithBbtJsonExport(citekeys, options) { + var _a2; + const params = [citekeys, "BetterBibTeX JSON"]; + if (options.librarySelector && options.librarySelector.trim().length > 0) { + params.push(options.librarySelector.trim()); + } + const exportRaw = await callJsonRpc(options.endpointUrl, "item.export", params); + const exportJson = JSON.parse(exportRaw); + const mapped = {}; + for (const item of (_a2 = exportJson.items) != null ? _a2 : []) { + const citekey = asString(item.citationKey); + if (!citekey || !citekeys.includes(citekey)) { + continue; + } + const uriStr = collectStringValues(item).find((s) => parseItemReferenceFromUri(s) !== null); + const parsed = uriStr ? parseItemReferenceFromUri(uriStr) : null; + const resolved = parsed != null ? parsed : extractFromUnknownItem(item, options.fallbackLibraryId); + if (resolved) { + mapped[citekey] = resolved; + console.log(`[Zotpress] Fallback resolved "${citekey}" \u2192 ${resolved.libraryId}:${resolved.itemKey}`); + } + } + return { mapped, unresolved: citekeys.filter((k) => !mapped[k]) }; +} +async function resolveCitekeys(citekeys, options) { + if (citekeys.length === 0) { + return { mapped: {}, unresolved: [] }; + } + try { + const primary = await resolveWithSearch(citekeys, options); + if (primary.unresolved.length === 0) { + return primary; + } + console.log(`[Zotpress] ${primary.unresolved.length} citekey(s) unresolved after search, trying export fallback`); + const fallback = await resolveWithBbtJsonExport(primary.unresolved, options); + return { + mapped: { ...primary.mapped, ...fallback.mapped }, + unresolved: fallback.unresolved + }; + } catch (error2) { + const message2 = error2 instanceof Error ? error2.message : "Unknown Better BibTeX lookup error"; + console.error("[Zotpress] resolveCitekeys failed:", message2); + return { mapped: {}, unresolved: citekeys, error: message2 }; + } +} +async function convertPandocCitationsToZotpress(content, options) { + if (!options.enabled) { + return { + content, + unresolvedCitekeys: [] + }; + } + const matches = findCitationMatches(content); + if (matches.length === 0) { + return { + content, + unresolvedCitekeys: [] + }; + } + const citekeys = Array.from(new Set(matches.flatMap((match3) => match3.entries.map((entry) => entry.key)))); + const resolved = await resolveCitekeys(citekeys, { + endpointUrl: options.endpointUrl, + librarySelector: options.librarySelector, + fallbackLibraryId: options.fallbackLibraryId + }); + let output = ""; + let cursor = 0; + for (const match3 of matches) { + output += content.slice(cursor, match3.start); + const canReplace = match3.entries.every((entry) => !!resolved.mapped[entry.key]); + output += canReplace ? toZotpressInTextShortcode2(match3.entries, resolved.mapped) : match3.raw; + cursor = match3.end; + } + output += content.slice(cursor); + return { + content: output, + unresolvedCitekeys: resolved.unresolved, + lookupError: resolved.error + }; +} + // src/abstract-wp-client.ts var AbstractWordPressClient = class { - constructor(plugin4, profile) { - this.plugin = plugin4; + constructor(plugin5, profile) { + this.plugin = plugin5; this.profile = profile; /** * Client name. @@ -77693,7 +78093,8 @@ var AbstractWordPressClient = class { auth, postParams }); - const html3 = AppState.markdownParser.render(postParams.content); + const publishContent = await this.preparePublishContent(postParams.content); + const html3 = AppState.markdownParser.render(publishContent); const result = await this.publish( (_a2 = postParams.title) != null ? _a2 : "A post from Obsidian!", html3, @@ -77739,6 +78140,58 @@ var AbstractWordPressClient = class { } return result; } + async preparePublishContent(content) { + if (!this.plugin.settings.formatZotpressShortcodes) { + return content; + } + let publishContent = content; + if (this.plugin.settings.zotpressResolveViaBetterBibTeX) { + const conversion = await convertPandocCitationsToZotpress(content, { + enabled: true, + endpointUrl: this.plugin.settings.zotpressBetterBibTeXEndpointUrl, + librarySelector: this.plugin.settings.zotpressBetterBibTeXLibrarySelector, + fallbackLibraryId: this.plugin.settings.zotpressLibraryId + }); + publishContent = conversion.content; + if (conversion.lookupError) { + new import_obsidian8.Notice(this.plugin.i18n.t("message_zotpressLookupFailed", { + message: conversion.lookupError + }), ERROR_NOTICE_TIMEOUT); + } + if (conversion.unresolvedCitekeys.length > 0) { + new import_obsidian8.Notice(this.plugin.i18n.t("message_zotpressUnresolvedCitekeys", { + citekeys: conversion.unresolvedCitekeys.join(", ") + }), ERROR_NOTICE_TIMEOUT); + } + } + if (this.hasZotpressInTextBibliography(publishContent)) { + return publishContent; + } + const hasZotpressCitations = this.hasZotpressInTextCitation(publishContent); + const hasLegacyDoubleBracketCitations = this.hasConvertibleDoubleBracketCitation(publishContent); + const shouldAppendBib = hasZotpressCitations || !this.plugin.settings.zotpressResolveViaBetterBibTeX && hasLegacyDoubleBracketCitations; + if (!shouldAppendBib) { + return publishContent; + } + const separator = publishContent.endsWith("\n") ? "" : "\n\n"; + return `${publishContent}${separator}--- + +# Bibliography + +[zotpressInTextBib style="apa" sortby="author" sort="ASC"]`; + } + hasConvertibleDoubleBracketCitation(content) { + const citationRegex = /\[\[\s*@[^\]\n]+\s*\]\]/; + return citationRegex.test(content); + } + hasZotpressInTextBibliography(content) { + const bibliographyRegex = /\[zotpressInTextBib(\s[^\]]*)?\]/i; + return bibliographyRegex.test(content); + } + hasZotpressInTextCitation(content) { + const citationRegex = /\[zotpress(?:InText)?\s+items?=/i; + return citationRegex.test(content); + } async updatePostImages(params) { var _a2; const { postParams, auth } = params; @@ -77766,7 +78219,13 @@ var AbstractWordPressClient = class { content }, auth); if (result.code === 0 /* OK */) { - postParams.content = postParams.content.replace(img.original, `![${imgFile.name}](${result.data.url})`); + if (img.width && img.height) { + postParams.content = postParams.content.replace(img.original, `![[${result.data.url}|${img.width}x${img.height}]]`); + } else if (img.width) { + postParams.content = postParams.content.replace(img.original, `![[${result.data.url}|${img.width}]]`); + } else { + postParams.content = postParams.content.replace(img.original, `![[${result.data.url}]]`); + } } else { if (result.error.code === 2 /* ServerInternalError */) { new import_obsidian8.Notice(result.error.message, ERROR_NOTICE_TIMEOUT); @@ -77933,10 +78392,10 @@ function isFaultResponse(response) { return response.faultCode !== void 0; } var WpXmlRpcClient = class extends AbstractWordPressClient { - constructor(plugin4, profile) { + constructor(plugin5, profile) { var _a2; - super(plugin4, profile); - this.plugin = plugin4; + super(plugin5, profile); + this.plugin = plugin5; this.profile = profile; this.name = "WpXmlRpcClient"; this.client = new XmlRpcClient({ @@ -78237,10 +78696,10 @@ var RestClient = class { // src/wp-rest-client.ts var WpRestClient = class extends AbstractWordPressClient { - constructor(plugin4, profile, context) { + constructor(plugin5, profile, context) { var _a2; - super(plugin4, profile); - this.plugin = plugin4; + super(plugin5, profile); + this.plugin = plugin5; this.profile = profile; this.context = context; this.name = "WpRestClient"; @@ -78553,30 +79012,30 @@ var WpRestClientWpComOAuth2Context = class { }; // src/wp-clients.ts -function getWordPressClient(plugin4, profile) { +function getWordPressClient(plugin5, profile) { if (!profile.endpoint || profile.endpoint.length === 0) { - showError(plugin4.i18n.t("error_noEndpoint")); + showError(plugin5.i18n.t("error_noEndpoint")); return null; } let client = null; switch (profile.apiType) { case "xml-rpc" /* XML_RPC */: - client = new WpXmlRpcClient(plugin4, profile); + client = new WpXmlRpcClient(plugin5, profile); break; case "miniOrange" /* RestAPI_miniOrange */: - client = new WpRestClient(plugin4, profile, new WpRestClientMiniOrangeContext()); + client = new WpRestClient(plugin5, profile, new WpRestClientMiniOrangeContext()); break; case "application-passwords" /* RestApi_ApplicationPasswords */: - client = new WpRestClient(plugin4, profile, new WpRestClientAppPasswordContext()); + client = new WpRestClient(plugin5, profile, new WpRestClientAppPasswordContext()); break; case "WpComOAuth2" /* RestApi_WpComOAuth2 */: if (profile.wpComOAuth2Token) { - client = new WpRestClient(plugin4, profile, new WpRestClientWpComOAuth2Context( + client = new WpRestClient(plugin5, profile, new WpRestClientWpComOAuth2Context( profile.wpComOAuth2Token.blogId, profile.wpComOAuth2Token.accessToken )); } else { - showError(plugin4.i18n.t("error_invalidWpComToken")); + showError(plugin5.i18n.t("error_invalidWpComToken")); } break; default: @@ -78603,6 +79062,9 @@ function isPromiseFulfilledResult(obj) { function setupMarkdownParser(settings) { MarkdownItMathJax3PluginInstance.updateOutputType(settings.mathJaxOutputType); MarkdownItCommentPluginInstance.updateConvertMode(settings.commentConvertMode); + MarkdownItCitationPluginInstance.updateEnabled( + settings.formatZotpressShortcodes && !settings.zotpressResolveViaBetterBibTeX + ); } function rendererProfile(profile, container) { let name = profile.name; @@ -78629,20 +79091,20 @@ function isValidUrl(url) { return false; } } -function doClientPublish(plugin4, profileOrName, defaultPostParams) { +function doClientPublish(plugin5, profileOrName, defaultPostParams) { let profile; if (isString_default(profileOrName)) { - profile = plugin4.settings.profiles.find((it) => it.name === profileOrName); + profile = plugin5.settings.profiles.find((it) => it.name === profileOrName); } else { profile = profileOrName; } if (profile) { - const client = getWordPressClient(plugin4, profile); + const client = getWordPressClient(plugin5, profile); if (client) { client.publishPost(defaultPostParams).then(); } } else { - const noSuchProfileMessage = plugin4.i18n.t("error_noSuchProfile", { + const noSuchProfileMessage = plugin5.i18n.t("error_noSuchProfile", { profileName: String(profileOrName) }); showError(noSuchProfileMessage); @@ -78688,19 +79150,19 @@ async function processFile(file, app) { // src/oauth2-client.ts var import_obsidian11 = require("obsidian"); var OAuth2Client = class _OAuth2Client { - constructor(options, plugin4) { + constructor(options, plugin5) { this.options = options; - this.plugin = plugin4; + this.plugin = plugin5; console.log(options); } - static getWpOAuth2Client(plugin4) { + static getWpOAuth2Client(plugin5) { return new _OAuth2Client({ clientId: WP_OAUTH2_CLIENT_ID, clientSecret: WP_OAUTH2_CLIENT_SECRET, tokenEndpoint: WP_OAUTH2_TOKEN_ENDPOINT, authorizeEndpoint: WP_OAUTH2_AUTHORIZE_ENDPOINT, validateTokenEndpoint: WP_OAUTH2_VALIDATE_TOKEN_ENDPOINT - }, plugin4); + }, plugin5); } async getAuthorizeCode(params) { const query = { @@ -78798,7 +79260,7 @@ function base64Url(buf) { } // src/wp-profile-modal.ts -function openProfileModal(plugin4, profile = { +function openProfileModal(plugin5, profile = { name: "", apiType: "xml-rpc" /* XML_RPC */, endpoint: "", @@ -78809,7 +79271,7 @@ function openProfileModal(plugin4, profile = { lastSelectedCategories: [1] }, atIndex = -1) { return new Promise((resolve, reject) => { - const modal = new WpProfileModal(plugin4, (profile2, atIndex2) => { + const modal = new WpProfileModal(plugin5, (profile2, atIndex2) => { resolve({ profile: profile2, atIndex: atIndex2 @@ -78819,7 +79281,7 @@ function openProfileModal(plugin4, profile = { }); } var WpProfileModal = class extends AbstractModal { - constructor(plugin4, onSubmit, profile = { + constructor(plugin5, onSubmit, profile = { name: "", apiType: "xml-rpc" /* XML_RPC */, endpoint: "", @@ -78829,16 +79291,17 @@ var WpProfileModal = class extends AbstractModal { isDefault: false, lastSelectedCategories: [1] }, atIndex = -1) { - super(plugin4); - this.plugin = plugin4; + super(plugin5); + this.plugin = plugin5; this.onSubmit = onSubmit; this.profile = profile; this.atIndex = atIndex; this.profileData = Object.assign({}, profile); this.tokenGotRef = AppState.events.on("OAUTH2_TOKEN_GOT" /* OAUTH2_TOKEN_GOT */, async (token) => { - this.profileData.wpComOAuth2Token = token; + const tokenData = token; + this.profileData.wpComOAuth2Token = tokenData; if (atIndex >= 0) { - this.plugin.settings.profiles[atIndex].wpComOAuth2Token = token; + this.plugin.settings.profiles[atIndex].wpComOAuth2Token = tokenData; await this.plugin.saveSettings(); } }); @@ -79015,10 +79478,10 @@ var WpProfileModal = class extends AbstractModal { // src/wp-profile-manage-modal.ts var WpProfileManageModal = class extends AbstractModal { - constructor(plugin4) { - super(plugin4); - this.plugin = plugin4; - this.profiles = plugin4.settings.profiles; + constructor(plugin5) { + super(plugin5); + this.plugin = plugin5; + this.profiles = plugin5.settings.profiles; } onOpen() { const renderProfiles = () => { @@ -79089,9 +79552,9 @@ var WpProfileManageModal = class extends AbstractModal { // src/settings.ts var WordpressSettingTab = class extends import_obsidian14.PluginSettingTab { - constructor(plugin4) { - super(plugin4.app, plugin4); - this.plugin = plugin4; + constructor(plugin5) { + super(plugin5.app, plugin5); + this.plugin = plugin5; } display() { const t = (key, vars) => { @@ -79204,6 +79667,39 @@ var WordpressSettingTab = class extends import_obsidian14.PluginSettingTab { await this.plugin.saveSettings(); }) ); + new import_obsidian14.Setting(containerEl).setName(t("settings_formatZotpressShortcodes")).setDesc(t("settings_formatZotpressShortcodesDesc")).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.formatZotpressShortcodes).onChange(async (value) => { + this.plugin.settings.formatZotpressShortcodes = value; + await this.plugin.saveSettings(); + setupMarkdownParser(this.plugin.settings); + }) + ); + new import_obsidian14.Setting(containerEl).setName(t("settings_zotpressResolveViaBetterBibTeX")).setDesc(t("settings_zotpressResolveViaBetterBibTeXDesc")).addToggle( + (toggle) => toggle.setValue(this.plugin.settings.zotpressResolveViaBetterBibTeX).setDisabled(!this.plugin.settings.formatZotpressShortcodes).onChange(async (value) => { + this.plugin.settings.zotpressResolveViaBetterBibTeX = value; + await this.plugin.saveSettings(); + setupMarkdownParser(this.plugin.settings); + this.display(); + }) + ); + new import_obsidian14.Setting(containerEl).setName(t("settings_zotpressBetterBibTeXEndpointUrl")).setDesc(t("settings_zotpressBetterBibTeXEndpointUrlDesc")).addText( + (text4) => text4.setPlaceholder("http://localhost:23119/better-bibtex/json-rpc").setValue(this.plugin.settings.zotpressBetterBibTeXEndpointUrl).setDisabled(!this.plugin.settings.zotpressResolveViaBetterBibTeX || !this.plugin.settings.formatZotpressShortcodes).onChange(async (value) => { + this.plugin.settings.zotpressBetterBibTeXEndpointUrl = value.trim(); + await this.plugin.saveSettings(); + }) + ); + new import_obsidian14.Setting(containerEl).setName(t("settings_zotpressBetterBibTeXLibrarySelector")).setDesc(t("settings_zotpressBetterBibTeXLibrarySelectorDesc")).addText( + (text4) => text4.setPlaceholder("My Library").setValue(this.plugin.settings.zotpressBetterBibTeXLibrarySelector).setDisabled(!this.plugin.settings.zotpressResolveViaBetterBibTeX || !this.plugin.settings.formatZotpressShortcodes).onChange(async (value) => { + this.plugin.settings.zotpressBetterBibTeXLibrarySelector = value.trim(); + await this.plugin.saveSettings(); + }) + ); + new import_obsidian14.Setting(containerEl).setName(t("settings_zotpressLibraryId")).setDesc(t("settings_zotpressLibraryIdDesc")).addText( + (text4) => text4.setPlaceholder("16058788").setValue(this.plugin.settings.zotpressLibraryId).setDisabled(!this.plugin.settings.zotpressResolveViaBetterBibTeX || !this.plugin.settings.formatZotpressShortcodes).onChange(async (value) => { + this.plugin.settings.zotpressLibraryId = value.trim(); + await this.plugin.saveSettings(); + }) + ); } }; @@ -79268,6 +79764,8 @@ __export(en_exports, { message_publishFailed: () => message_publishFailed, message_publishSuccessfully: () => message_publishSuccessfully, message_wpComTokenValidated: () => message_wpComTokenValidated, + message_zotpressLookupFailed: () => message_zotpressLookupFailed, + message_zotpressUnresolvedCitekeys: () => message_zotpressUnresolvedCitekeys, profileModal_Save: () => profileModal_Save, profileModal_name: () => profileModal_name, profileModal_nameDesc: () => profileModal_nameDesc, @@ -79335,6 +79833,8 @@ __export(en_exports, { settings_defaultPostStatusPublish: () => settings_defaultPostStatusPublish, settings_enableHtml: () => settings_enableHtml, settings_enableHtmlDesc: () => settings_enableHtmlDesc, + settings_formatZotpressShortcodes: () => settings_formatZotpressShortcodes, + settings_formatZotpressShortcodesDesc: () => settings_formatZotpressShortcodesDesc, settings_mathJaxOutputType: () => settings_mathJaxOutputType, settings_mathJaxOutputTypeDesc: () => settings_mathJaxOutputTypeDesc, settings_mathJaxOutputTypeSVG: () => settings_mathJaxOutputTypeSVG, @@ -79359,7 +79859,15 @@ __export(en_exports, { settings_wpComOAuth2RefreshTokenDesc: () => settings_wpComOAuth2RefreshTokenDesc, settings_wpComOAuth2ValidateTokenButtonText: () => settings_wpComOAuth2ValidateTokenButtonText, settings_xmlRpcPath: () => settings_xmlRpcPath, - settings_xmlRpcPathDesc: () => settings_xmlRpcPathDesc + settings_xmlRpcPathDesc: () => settings_xmlRpcPathDesc, + settings_zotpressBetterBibTeXEndpointUrl: () => settings_zotpressBetterBibTeXEndpointUrl, + settings_zotpressBetterBibTeXEndpointUrlDesc: () => settings_zotpressBetterBibTeXEndpointUrlDesc, + settings_zotpressBetterBibTeXLibrarySelector: () => settings_zotpressBetterBibTeXLibrarySelector, + settings_zotpressBetterBibTeXLibrarySelectorDesc: () => settings_zotpressBetterBibTeXLibrarySelectorDesc, + settings_zotpressLibraryId: () => settings_zotpressLibraryId, + settings_zotpressLibraryIdDesc: () => settings_zotpressLibraryIdDesc, + settings_zotpressResolveViaBetterBibTeX: () => settings_zotpressResolveViaBetterBibTeX, + settings_zotpressResolveViaBetterBibTeXDesc: () => settings_zotpressResolveViaBetterBibTeXDesc }); var error_noEndpoint = "No WordPress URL set."; var error_notWpCom = "The URL is not wordpress.com, please check again."; @@ -79443,6 +79951,18 @@ var settings_enableHtml = "Enable HTML"; var settings_enableHtmlDesc = "Enable HTML tags in notes. This might cause XSS attack to your WordPress."; var settings_replaceMediaLinks = "Replace media links"; var settings_replaceMediaLinksDesc = "Replace media links to WordPress URLs after uploading."; +var settings_formatZotpressShortcodes = "Format Zotpress shortcodes"; +var settings_formatZotpressShortcodesDesc = "Convert pandoc citations like [[@key]] to Zotpress shortcodes during publish."; +var settings_zotpressResolveViaBetterBibTeX = "Resolve citekeys via Better BibTeX"; +var settings_zotpressResolveViaBetterBibTeXDesc = "Resolve [[@citekey]] to Zotero item references before creating Zotpress shortcodes."; +var settings_zotpressBetterBibTeXEndpointUrl = "Better BibTeX JSON-RPC endpoint"; +var settings_zotpressBetterBibTeXEndpointUrlDesc = "Local Better BibTeX endpoint, usually http://localhost:23119/better-bibtex/json-rpc"; +var settings_zotpressBetterBibTeXLibrarySelector = "Better BibTeX library selector"; +var settings_zotpressBetterBibTeXLibrarySelectorDesc = "Optional library selector passed to Better BibTeX, such as My Library, *, or a library id."; +var settings_zotpressLibraryId = "Fallback Zotpress library id"; +var settings_zotpressLibraryIdDesc = "Fallback id used when library id cannot be inferred from Better BibTeX response."; +var message_zotpressLookupFailed = "Better BibTeX citation lookup failed: <%= message %>"; +var message_zotpressUnresolvedCitekeys = "Some citekeys could not be resolved and were left unchanged: <%= citekeys %>"; var loginModal_title = "WordPress Login"; var loginModal_username = "Username"; var loginModal_usernameDesc = "Username for <%= url %>"; @@ -79573,6 +80093,18 @@ var en_default = { settings_enableHtmlDesc, settings_replaceMediaLinks, settings_replaceMediaLinksDesc, + settings_formatZotpressShortcodes, + settings_formatZotpressShortcodesDesc, + settings_zotpressResolveViaBetterBibTeX, + settings_zotpressResolveViaBetterBibTeXDesc, + settings_zotpressBetterBibTeXEndpointUrl, + settings_zotpressBetterBibTeXEndpointUrlDesc, + settings_zotpressBetterBibTeXLibrarySelector, + settings_zotpressBetterBibTeXLibrarySelectorDesc, + settings_zotpressLibraryId, + settings_zotpressLibraryIdDesc, + message_zotpressLookupFailed, + message_zotpressUnresolvedCitekeys, loginModal_title, loginModal_username, loginModal_usernameDesc, @@ -79663,6 +80195,8 @@ __export(zh_cn_exports, { message_publishFailed: () => message_publishFailed2, message_publishSuccessfully: () => message_publishSuccessfully2, message_wpComTokenValidated: () => message_wpComTokenValidated2, + message_zotpressLookupFailed: () => message_zotpressLookupFailed2, + message_zotpressUnresolvedCitekeys: () => message_zotpressUnresolvedCitekeys2, profileModal_Save: () => profileModal_Save2, profileModal_name: () => profileModal_name2, profileModal_nameDesc: () => profileModal_nameDesc2, @@ -79730,6 +80264,8 @@ __export(zh_cn_exports, { settings_defaultPostStatusPublish: () => settings_defaultPostStatusPublish2, settings_enableHtml: () => settings_enableHtml2, settings_enableHtmlDesc: () => settings_enableHtmlDesc2, + settings_formatZotpressShortcodes: () => settings_formatZotpressShortcodes2, + settings_formatZotpressShortcodesDesc: () => settings_formatZotpressShortcodesDesc2, settings_mathJaxOutputType: () => settings_mathJaxOutputType2, settings_mathJaxOutputTypeDesc: () => settings_mathJaxOutputTypeDesc2, settings_mathJaxOutputTypeSVG: () => settings_mathJaxOutputTypeSVG2, @@ -79754,7 +80290,15 @@ __export(zh_cn_exports, { settings_wpComOAuth2RefreshTokenDesc: () => settings_wpComOAuth2RefreshTokenDesc2, settings_wpComOAuth2ValidateTokenButtonText: () => settings_wpComOAuth2ValidateTokenButtonText2, settings_xmlRpcPath: () => settings_xmlRpcPath2, - settings_xmlRpcPathDesc: () => settings_xmlRpcPathDesc2 + settings_xmlRpcPathDesc: () => settings_xmlRpcPathDesc2, + settings_zotpressBetterBibTeXEndpointUrl: () => settings_zotpressBetterBibTeXEndpointUrl2, + settings_zotpressBetterBibTeXEndpointUrlDesc: () => settings_zotpressBetterBibTeXEndpointUrlDesc2, + settings_zotpressBetterBibTeXLibrarySelector: () => settings_zotpressBetterBibTeXLibrarySelector2, + settings_zotpressBetterBibTeXLibrarySelectorDesc: () => settings_zotpressBetterBibTeXLibrarySelectorDesc2, + settings_zotpressLibraryId: () => settings_zotpressLibraryId2, + settings_zotpressLibraryIdDesc: () => settings_zotpressLibraryIdDesc2, + settings_zotpressResolveViaBetterBibTeX: () => settings_zotpressResolveViaBetterBibTeX2, + settings_zotpressResolveViaBetterBibTeXDesc: () => settings_zotpressResolveViaBetterBibTeXDesc2 }); var error_noEndpoint2 = "\u6CA1\u6709\u8BBE\u7F6E WordPress URL"; var error_notWpCom2 = "\u4E0D\u662F\u5408\u6CD5\u7684 wordpress.com \u5730\u5740\uFF0C\u8BF7\u68C0\u67E5"; @@ -79838,6 +80382,18 @@ var settings_enableHtml2 = "\u542F\u7528 HTML"; var settings_enableHtmlDesc2 = "\u542F\u7528\u7B14\u8BB0\u4E2D\u7684 HTML \u6807\u7B7E\u3002\u8FD9\u53EF\u80FD\u5BFC\u81F4\u9488\u5BF9 WordPress \u7684 XSS \u653B\u51FB"; var settings_replaceMediaLinks2 = "\u66FF\u6362\u5A92\u4F53\u94FE\u63A5"; var settings_replaceMediaLinksDesc2 = "\u4E0A\u4F20\u6210\u529F\u4E4B\u540E\uFF0C\u5C06\u6587\u6863\u4E2D\u7684\u8DEF\u5F84\u66FF\u6362\u4E3A WordPress \u94FE\u63A5"; +var settings_formatZotpressShortcodes2 = "\u683C\u5F0F\u5316 Zotpress \u77ED\u4EE3\u7801"; +var settings_formatZotpressShortcodesDesc2 = "\u53D1\u5E03\u65F6\u5C06\u7C7B\u4F3C [[@key]] \u7684 pandoc \u5F15\u7528\u8F6C\u6362\u4E3A Zotpress \u77ED\u4EE3\u7801"; +var settings_zotpressResolveViaBetterBibTeX2 = "\u901A\u8FC7 Better BibTeX \u89E3\u6790 citekey"; +var settings_zotpressResolveViaBetterBibTeXDesc2 = "\u5728\u751F\u6210 Zotpress \u77ED\u4EE3\u7801\u524D\uFF0C\u5C06 [[@citekey]] \u89E3\u6790\u4E3A Zotero \u6761\u76EE\u5F15\u7528"; +var settings_zotpressBetterBibTeXEndpointUrl2 = "Better BibTeX JSON-RPC \u5730\u5740"; +var settings_zotpressBetterBibTeXEndpointUrlDesc2 = "\u672C\u5730 Better BibTeX \u63A5\u53E3\u5730\u5740\uFF0C\u901A\u5E38\u662F http://localhost:23119/better-bibtex/json-rpc"; +var settings_zotpressBetterBibTeXLibrarySelector2 = "Better BibTeX \u6587\u5E93\u9009\u62E9\u5668"; +var settings_zotpressBetterBibTeXLibrarySelectorDesc2 = "\u53EF\u9009\uFF0C\u4F20\u7ED9 Better BibTeX \u7684\u6587\u5E93\u53C2\u6570\uFF0C\u4F8B\u5982 My Library\u3001* \u6216\u6587\u5E93 id"; +var settings_zotpressLibraryId2 = "Zotpress \u56DE\u9000\u6587\u5E93 id"; +var settings_zotpressLibraryIdDesc2 = "\u5F53 Better BibTeX \u8FD4\u56DE\u4E2D\u65E0\u6CD5\u63A8\u65AD\u6587\u5E93 id \u65F6\u4F7F\u7528\u7684\u56DE\u9000\u503C"; +var message_zotpressLookupFailed2 = "Better BibTeX \u5F15\u7528\u67E5\u8BE2\u5931\u8D25\uFF1A<%= message %>"; +var message_zotpressUnresolvedCitekeys2 = "\u90E8\u5206 citekey \u672A\u89E3\u6790\uFF0C\u5DF2\u4FDD\u7559\u539F\u6837\uFF1A<%= citekeys %>"; var loginModal_title2 = "WordPress \u767B\u5F55"; var loginModal_username2 = "\u7528\u6237\u540D"; var loginModal_usernameDesc2 = "<%= url %> \u7528\u6237\u540D"; @@ -79968,6 +80524,18 @@ var zh_cn_default = { settings_enableHtmlDesc: settings_enableHtmlDesc2, settings_replaceMediaLinks: settings_replaceMediaLinks2, settings_replaceMediaLinksDesc: settings_replaceMediaLinksDesc2, + settings_formatZotpressShortcodes: settings_formatZotpressShortcodes2, + settings_formatZotpressShortcodesDesc: settings_formatZotpressShortcodesDesc2, + settings_zotpressResolveViaBetterBibTeX: settings_zotpressResolveViaBetterBibTeX2, + settings_zotpressResolveViaBetterBibTeXDesc: settings_zotpressResolveViaBetterBibTeXDesc2, + settings_zotpressBetterBibTeXEndpointUrl: settings_zotpressBetterBibTeXEndpointUrl2, + settings_zotpressBetterBibTeXEndpointUrlDesc: settings_zotpressBetterBibTeXEndpointUrlDesc2, + settings_zotpressBetterBibTeXLibrarySelector: settings_zotpressBetterBibTeXLibrarySelector2, + settings_zotpressBetterBibTeXLibrarySelectorDesc: settings_zotpressBetterBibTeXLibrarySelectorDesc2, + settings_zotpressLibraryId: settings_zotpressLibraryId2, + settings_zotpressLibraryIdDesc: settings_zotpressLibraryIdDesc2, + message_zotpressLookupFailed: message_zotpressLookupFailed2, + message_zotpressUnresolvedCitekeys: message_zotpressUnresolvedCitekeys2, loginModal_title: loginModal_title2, loginModal_username: loginModal_username2, loginModal_usernameDesc: loginModal_usernameDesc2, @@ -80054,20 +80622,20 @@ get_fn = function(key) { }; // src/wp-profile-chooser-modal.ts -function openProfileChooserModal(plugin4) { +function openProfileChooserModal(plugin5) { return new Promise((resolve, reject) => { - const modal = new WpProfileChooserModal(plugin4, (profile) => { + const modal = new WpProfileChooserModal(plugin5, (profile) => { resolve(profile); }); modal.open(); }); } var WpProfileChooserModal = class extends AbstractModal { - constructor(plugin4, onChoose) { - super(plugin4); - this.plugin = plugin4; + constructor(plugin5, onChoose) { + super(plugin5); + this.plugin = plugin5; this.onChoose = onChoose; - this.profiles = plugin4.settings.profiles; + this.profiles = plugin5.settings.profiles; } onOpen() { const chooseProfile = (profile) => { @@ -80293,4 +80861,3 @@ lodash-es/lodash.js: * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors *) */ -//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL09wdGlvbnMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL1ByaW9yaXRpemVkTGlzdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvRnVuY3Rpb25MaXN0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9JbnB1dEpheC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvRmluZE1hdGgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL3N0cmluZy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTWF0aEl0ZW0udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvRmluZFRlWC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9BdHRyaWJ1dGVzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9UcmVlL05vZGUudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9PcGVyYXRvckRpY3Rpb25hcnkudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbW8udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvTm9kZVV0aWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvRmlsdGVyVXRpbC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9UZXhFcnJvci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvUmV0cmllcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvbXBvbmVudHMvdmVyc2lvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvSGFuZGxlckxpc3QudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9tYXRoamF4LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvdXRpbC9Bc3luY0xvYWQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL0VudGl0aWVzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L1BhcnNlVXRpbC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9TdGFjay50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9UZXhQYXJzZXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvU3RhY2tJdGVtLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9UcmVlL0ZhY3RvcnkudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvU3RhY2tJdGVtRmFjdG9yeS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9Ob2RlRmFjdG9yeS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9QYXJzZU9wdGlvbnMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvVGFncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9NYXBIYW5kbGVyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L0NvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvU3ltYm9sLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L1N5bWJvbE1hcC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9iYXNlL0Jhc2VJdGVtcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9UZXhDb25zdGFudHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL2xlbmd0aHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYmFzZS9CYXNlTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9QYXJzZU1ldGhvZHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYmFzZS9CYXNlTWFwcGluZ3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYmFzZS9CYXNlQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9hY3Rpb24vQWN0aW9uQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9hbXMvQW1zSXRlbXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYW1zL0Ftc01ldGhvZHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYW1zL0Ftc01hcHBpbmdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2Ftcy9BbXNDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2Ftc2NkL0Ftc0NkTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9hbXNjZC9BbXNDZE1hcHBpbmdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2Ftc2NkL0Ftc0NkQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9iYm94L0Jib3hDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2JvbGRzeW1ib2wvQm9sZHN5bWJvbENvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYnJha2V0L0JyYWtldEl0ZW1zLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2JyYWtldC9CcmFrZXRNZXRob2RzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2JyYWtldC9CcmFrZXRNYXBwaW5ncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9icmFrZXQvQnJha2V0Q29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9idXNzcHJvb2ZzL0J1c3Nwcm9vZnNVdGlsLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2J1c3Nwcm9vZnMvQnVzc3Byb29mc0l0ZW1zLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2J1c3Nwcm9vZnMvQnVzc3Byb29mc01ldGhvZHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYnVzc3Byb29mcy9CdXNzcHJvb2ZzTWFwcGluZ3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvYnVzc3Byb29mcy9CdXNzcHJvb2ZzQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9lbmNsb3NlL0VuY2xvc2VDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2NhbmNlbC9DYW5jZWxDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2VtcGhlcS9FbXBoZXFVdGlsLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2Nhc2VzL0Nhc2VzQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9jZW50ZXJub3QvQ2VudGVybm90Q29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9jb2xvci9Db2xvck1ldGhvZHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvY29sb3IvQ29sb3JDb25zdGFudHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvY29sb3IvQ29sb3JVdGlsLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2NvbG9yL0NvbG9yQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9jb2xvcnYyL0NvbG9yVjJDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2NvbG9ydGJsL0NvbG9ydGJsQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9uZXdjb21tYW5kL05ld2NvbW1hbmRVdGlsLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L25ld2NvbW1hbmQvTmV3Y29tbWFuZE1ldGhvZHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbmV3Y29tbWFuZC9OZXdjb21tYW5kSXRlbXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvY29uZmlnbWFjcm9zL0NvbmZpZ01hY3Jvc0NvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvZW1waGVxL0VtcGhlcUNvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbmV3Y29tbWFuZC9OZXdjb21tYW5kTWFwcGluZ3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbmV3Y29tbWFuZC9OZXdjb21tYW5kQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9leHRwZmVpbC9FeHRwZmVpbENvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvZ2Vuc3ltYi9HZW5zeW1iQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9odG1sL0h0bWxNZXRob2RzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L2h0bWwvSHRtbENvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbWF0aHRvb2xzL01hdGh0b29sc1V0aWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbWF0aHRvb2xzL01hdGh0b29sc01ldGhvZHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvbWF0aHRvb2xzL01hdGh0b29sc01hcHBpbmdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L21hdGh0b29scy9NYXRodG9vbHNUYWdzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L21hdGh0b29scy9NYXRodG9vbHNJdGVtcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9tYXRodG9vbHMvTWF0aHRvb2xzQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWhjaGVtcGFyc2VyL2Rpc3QvbWhjaGVtUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L21oY2hlbS9NaGNoZW1Db25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L25vZXJyb3JzL05vRXJyb3JzQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9ub3VuZGVmaW5lZC9Ob1VuZGVmaW5lZENvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvcGh5c2ljcy9QaHlzaWNzSXRlbXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvcGh5c2ljcy9QaHlzaWNzTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9waHlzaWNzL1BoeXNpY3NNYXBwaW5ncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9waHlzaWNzL1BoeXNpY3NDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L3NldG9wdGlvbnMvU2V0T3B0aW9uc0NvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvdGFnZm9ybWF0L1RhZ0Zvcm1hdENvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvdGV4dG1hY3Jvcy9UZXh0TWFjcm9zTWV0aG9kcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC90ZXh0bWFjcm9zL1RleHRQYXJzZXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvdGV4dGNvbXAvVGV4dGNvbXBNYXBwaW5ncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC90ZXh0Y29tcC9UZXh0Y29tcENvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvdGV4dG1hY3Jvcy9UZXh0TWFjcm9zTWFwcGluZ3MudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvdGV4dG1hY3Jvcy9UZXh0TWFjcm9zQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC91cGdyZWVrL1VwZ3JlZWtDb25maWd1cmF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaW5wdXQvdGV4L3VuaWNvZGUvVW5pY29kZUNvbmZpZ3VyYXRpb24udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9pbnB1dC90ZXgvdmVyYi9WZXJiQ29uZmlndXJhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2lucHV0L3RleC9BbGxQYWNrYWdlcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvT3V0cHV0SmF4LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvdXRpbC9TdHlsZXMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL1N0eWxlTGlzdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vT3V0cHV0SmF4LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9UcmVlL1dyYXBwZXJGYWN0b3J5LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVyRmFjdG9yeS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvQkJveC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvVHJlZS9XcmFwcGVyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9Gb250RGF0YS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbWF0aC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tYXRoLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tYXRoLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tcm93LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21yb3cudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21yb3cudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21pLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21pLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9taS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbW8udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21vLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbW4udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21zLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21zLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbXRleHQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXRleHQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL210ZXh0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21lcnJvci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbWVycm9yLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tc3BhY2UudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXNwYWNlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tc3BhY2UudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21wYWRkZWQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXBhZGRlZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXBhZGRlZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tcGhhbnRvbS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXBoYW50b20udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21mcmFjLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21mcmFjLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tZnJhYy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbXNxcnQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXNxcnQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL21zcXJ0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tcm9vdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tcm9vdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXJvb3QudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21mZW5jZWQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWZlbmNlZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbWZlbmNlZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvc2NyaXB0YmFzZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvc2NyaXB0YmFzZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbXN1YnN1cC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tc3Vic3VwLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tc3Vic3VwLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tdW5kZXJvdmVyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL211bmRlcm92ZXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL211bmRlcm92ZXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL21tdWx0aXNjcmlwdHMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbW11bHRpc2NyaXB0cy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbW11bHRpc2NyaXB0cy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL3V0aWwvbnVtZXJpYy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbXRhYmxlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL210YWJsZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvbXRhYmxlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tdHIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXRyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tdHIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL210ZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tdGQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL210ZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbWFjdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tYWN0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tYWN0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9Ob3RhdGlvbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvbWVuY2xvc2UudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL05vdGF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21lbmNsb3NlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tZW5jbG9zZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvc2VtYW50aWNzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL3NlbWFudGljcy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvc2VtYW50aWNzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9XcmFwcGVycy9tZ2x5cGgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWdseXBoLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy9tZ2x5cGgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL1dyYXBwZXJzL1RlWEF0b20udHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTW1sTm9kZXMvVGVYQXRvbS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlcnMvVGVYQXRvbS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vV3JhcHBlcnMvVGV4dE5vZGUudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL1dyYXBwZXJzL1RleHROb2RlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9XcmFwcGVycy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvV3JhcHBlckZhY3RvcnkudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL0ZvbnREYXRhLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9ib2xkLWl0YWxpYy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L2JvbGQtaXRhbGljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L2JvbGQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9kb3VibGUtc3RydWNrLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvZG91YmxlLXN0cnVjay50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L2ZyYWt0dXItYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L2ZyYWt0dXItYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L2ZyYWt0dXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9mcmFrdHVyLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvaXRhbGljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvaXRhbGljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvbGFyZ2VvcC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L2xhcmdlb3AudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9tb25vc3BhY2UudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9tb25vc3BhY2UudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9ub3JtYWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9ub3JtYWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9zYW5zLXNlcmlmLWJvbGQtaXRhbGljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvc2Fucy1zZXJpZi1ib2xkLWl0YWxpYy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3NhbnMtc2VyaWYtYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L3NhbnMtc2VyaWYtYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3NhbnMtc2VyaWYtaXRhbGljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvc2Fucy1zZXJpZi1pdGFsaWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9zYW5zLXNlcmlmLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvc2Fucy1zZXJpZi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3NjcmlwdC1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvc2NyaXB0LWJvbGQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9zY3JpcHQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC9zY3JpcHQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC9zbWFsbG9wLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvc21hbGxvcC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3RleC1jYWxsaWdyYXBoaWMtYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L3RleC1jYWxsaWdyYXBoaWMtYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L3RleC1jYWxsaWdyYXBoaWMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC90ZXgtY2FsbGlncmFwaGljLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvdGV4LW1hdGhpdC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L3RleC1tYXRoaXQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvY29tbW9uL2ZvbnRzL3RleC90ZXgtb2xkc3R5bGUtYm9sZC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvZm9udHMvdGV4L3RleC1vbGRzdHlsZS1ib2xkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvdGV4LW9sZHN0eWxlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvdGV4LW9sZHN0eWxlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvdGV4LXNpemUzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvdGV4LXNpemUzLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvdGV4LXNpemU0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy9mb250cy90ZXgvdGV4LXNpemU0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L2NvbW1vbi9mb250cy90ZXgvdGV4LXZhcmlhbnQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC90ZXgtdmFyaWFudC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9jb21tb24vZm9udHMvdGV4L2RlbGltaXRlcnMudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9vdXRwdXQvc3ZnL2ZvbnRzL3RleC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL291dHB1dC9zdmcvRm9udENhY2hlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvb3V0cHV0L3N2Zy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvRE9NQWRhcHRvci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2FkYXB0b3JzL05vZGVNaXhpbi50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2FkYXB0b3JzL2xpdGUvRWxlbWVudC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2FkYXB0b3JzL2xpdGUvRG9jdW1lbnQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9hZGFwdG9ycy9saXRlL1RleHQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9hZGFwdG9ycy9saXRlL0xpc3QudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9hZGFwdG9ycy9saXRlL1BhcnNlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2FkYXB0b3JzL2xpdGUvV2luZG93LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvYWRhcHRvcnMvbGl0ZUFkYXB0b3IudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL0xpbmtlZExpc3QudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01hdGhMaXN0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9UcmVlL05vZGVGYWN0b3J5LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21zdHlsZS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tYWxpZ25ncm91cC50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tYWxpZ25tYXJrLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbE5vZGVzL21hdGhjaG9pY2UudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL01tbFRyZWUvTU1MLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL01tbEZhY3RvcnkudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy91dGlsL0JpdEZpZWxkLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NYXRoRG9jdW1lbnQudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL0hhbmRsZXIudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9oYW5kbGVycy9odG1sL0hUTUxNYXRoSXRlbS50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2hhbmRsZXJzL2h0bWwvSFRNTE1hdGhMaXN0LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaGFuZGxlcnMvaHRtbC9IVE1MRG9tU3RyaW5ncy50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2hhbmRsZXJzL2h0bWwvSFRNTERvY3VtZW50LnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvaGFuZGxlcnMvaHRtbC9IVE1MSGFuZGxlci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2hhbmRsZXJzL2h0bWwudHMiLCAibm9kZV9tb2R1bGVzL21hdGhqYXgtZnVsbC90cy9jb3JlL1RyZWUvVmlzaXRvci50cyIsICJub2RlX21vZHVsZXMvbWF0aGpheC1mdWxsL3RzL2NvcmUvTW1sVHJlZS9NbWxWaXNpdG9yLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvY29yZS9NbWxUcmVlL1NlcmlhbGl6ZWRNbWxWaXNpdG9yLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXRoamF4LWZ1bGwvdHMvYTExeS9hc3Npc3RpdmUtbW1sLnRzIiwgIm5vZGVfbW9kdWxlcy9kb21lbGVtZW50dHlwZS9saWIvZXNtL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9kb21oYW5kbGVyL2xpYi9lc20vbm9kZS5qcyIsICJub2RlX21vZHVsZXMvZG9taGFuZGxlci9saWIvZXNtL2luZGV4LmpzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2VudGl0aWVzLzYxYWZkNDcwMWVhYTczNjk3OGIxM2M3MzUxY2QzZGU5YTk2YjA0YmMvc3JjL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS1odG1sLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2VudGl0aWVzLzYxYWZkNDcwMWVhYTczNjk3OGIxM2M3MzUxY2QzZGU5YTk2YjA0YmMvc3JjL2dlbmVyYXRlZC9kZWNvZGUtZGF0YS14bWwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvZW50aXRpZXMvNjFhZmQ0NzAxZWFhNzM2OTc4YjEzYzczNTFjZDNkZTlhOTZiMDRiYy9zcmMvZGVjb2RlX2NvZGVwb2ludC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9lbnRpdGllcy82MWFmZDQ3MDFlYWE3MzY5NzhiMTNjNzM1MWNkM2RlOWE5NmIwNGJjL3NyYy9kZWNvZGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvZW50aXRpZXMvNjFhZmQ0NzAxZWFhNzM2OTc4YjEzYzczNTFjZDNkZTlhOTZiMDRiYy9zcmMvZ2VuZXJhdGVkL2VuY29kZS1odG1sLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2VudGl0aWVzLzYxYWZkNDcwMWVhYTczNjk3OGIxM2M3MzUxY2QzZGU5YTk2YjA0YmMvc3JjL2VzY2FwZS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9lbnRpdGllcy82MWFmZDQ3MDFlYWE3MzY5NzhiMTNjNzM1MWNkM2RlOWE5NmIwNGJjL3NyYy9lbmNvZGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvZW50aXRpZXMvNjFhZmQ0NzAxZWFhNzM2OTc4YjEzYzczNTFjZDNkZTlhOTZiMDRiYy9zcmMvaW5kZXgudHMiLCAibm9kZV9tb2R1bGVzL2RvbS1zZXJpYWxpemVyL2xpYi9lc20vZm9yZWlnbk5hbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy9kb20tc2VyaWFsaXplci9saWIvZXNtL2luZGV4LmpzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2RvbXV0aWxzLzBhYjhiY2YxZWNmYzcwZGZjOTMyOTFhNGNiMjQ5NjU3OGFjMjVlOWMvc3JjL3N0cmluZ2lmeS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9kb211dGlscy8wYWI4YmNmMWVjZmM3MGRmYzkzMjkxYTRjYjI0OTY1NzhhYzI1ZTljL3NyYy90cmF2ZXJzYWwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvZG9tdXRpbHMvMGFiOGJjZjFlY2ZjNzBkZmM5MzI5MWE0Y2IyNDk2NTc4YWMyNWU5Yy9zcmMvbWFuaXB1bGF0aW9uLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2RvbXV0aWxzLzBhYjhiY2YxZWNmYzcwZGZjOTMyOTFhNGNiMjQ5NjU3OGFjMjVlOWMvc3JjL3F1ZXJ5aW5nLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2RvbXV0aWxzLzBhYjhiY2YxZWNmYzcwZGZjOTMyOTFhNGNiMjQ5NjU3OGFjMjVlOWMvc3JjL2xlZ2FjeS50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9kb211dGlscy8wYWI4YmNmMWVjZmM3MGRmYzkzMjkxYTRjYjI0OTY1NzhhYzI1ZTljL3NyYy9oZWxwZXJzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2RvbXV0aWxzLzBhYjhiY2YxZWNmYzcwZGZjOTMyOTFhNGNiMjQ5NjU3OGFjMjVlOWMvc3JjL2ZlZWRzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2RvbXV0aWxzLzBhYjhiY2YxZWNmYzcwZGZjOTMyOTFhNGNiMjQ5NjU3OGFjMjVlOWMvc3JjL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9vcHRpb25zLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9zdGF0aWMudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vc3JjL3V0aWxzLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9hcGkvYXR0cmlidXRlcy50cyIsICJub2RlX21vZHVsZXMvY3NzLXdoYXQvbGliL2VzL3R5cGVzLmpzIiwgIm5vZGVfbW9kdWxlcy9jc3Mtd2hhdC9saWIvZXMvcGFyc2UuanMiLCAibm9kZV9tb2R1bGVzL2Nzcy13aGF0L2xpYi9lcy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvYm9vbGJhc2UvaW5kZXguanMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvY3NzLXNlbGVjdC8wZjA3MjVhOWRmZWRkZDJmZGI1NGVkYTk2NTZjZGJhYjViYmY2YmU2L3NyYy9zb3J0LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2Nzcy1zZWxlY3QvMGYwNzI1YTlkZmVkZGQyZmRiNTRlZGE5NjU2Y2RiYWI1YmJmNmJlNi9zcmMvYXR0cmlidXRlcy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9udGgtY2hlY2svNjM5ZmQyYTQwMDBiNjlmODIzNTBhYWQ4YzM0Y2I0M2Y3N2U0ODNiYS9zcmMvcGFyc2UudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvbnRoLWNoZWNrLzYzOWZkMmE0MDAwYjY5ZjgyMzUwYWFkOGMzNGNiNDNmNzdlNDgzYmEvc3JjL2NvbXBpbGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvbnRoLWNoZWNrLzYzOWZkMmE0MDAwYjY5ZjgyMzUwYWFkOGMzNGNiNDNmNzdlNDgzYmEvc3JjL2luZGV4LnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2Nzcy1zZWxlY3QvMGYwNzI1YTlkZmVkZGQyZmRiNTRlZGE5NjU2Y2RiYWI1YmJmNmJlNi9zcmMvcHNldWRvLXNlbGVjdG9ycy9maWx0ZXJzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2Nzcy1zZWxlY3QvMGYwNzI1YTlkZmVkZGQyZmRiNTRlZGE5NjU2Y2RiYWI1YmJmNmJlNi9zcmMvcHNldWRvLXNlbGVjdG9ycy9wc2V1ZG9zLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2Nzcy1zZWxlY3QvMGYwNzI1YTlkZmVkZGQyZmRiNTRlZGE5NjU2Y2RiYWI1YmJmNmJlNi9zcmMvcHNldWRvLXNlbGVjdG9ycy9hbGlhc2VzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2Nzcy1zZWxlY3QvMGYwNzI1YTlkZmVkZGQyZmRiNTRlZGE5NjU2Y2RiYWI1YmJmNmJlNi9zcmMvcHNldWRvLXNlbGVjdG9ycy9zdWJzZWxlY3RzLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2Nzcy1zZWxlY3QvMGYwNzI1YTlkZmVkZGQyZmRiNTRlZGE5NjU2Y2RiYWI1YmJmNmJlNi9zcmMvcHNldWRvLXNlbGVjdG9ycy9pbmRleC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9jc3Mtc2VsZWN0LzBmMDcyNWE5ZGZlZGRkMmZkYjU0ZWRhOTY1NmNkYmFiNWJiZjZiZTYvc3JjL2dlbmVyYWwudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvY3NzLXNlbGVjdC8wZjA3MjVhOWRmZWRkZDJmZGI1NGVkYTk2NTZjZGJhYjViYmY2YmU2L3NyYy9jb21waWxlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2Nzcy1zZWxlY3QvMGYwNzI1YTlkZmVkZGQyZmRiNTRlZGE5NjU2Y2RiYWI1YmJmNmJlNi9zcmMvaW5kZXgudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2NoZWVyaW9qcy9jaGVlcmlvLXNlbGVjdC9lZjA2M2E2Y2E0YzNmMGQwMmQyZmMzNTA1ZTc1MGI2ZmI4MWM0NDhkL3NyYy9wb3NpdGlvbmFscy50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vY2hlZXJpb2pzL2NoZWVyaW8tc2VsZWN0L2VmMDYzYTZjYTRjM2YwZDAyZDJmYzM1MDVlNzUwYjZmYjgxYzQ0OGQvc3JjL2hlbHBlcnMudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2NoZWVyaW9qcy9jaGVlcmlvLXNlbGVjdC9lZjA2M2E2Y2E0YzNmMGQwMmQyZmMzNTA1ZTc1MGI2ZmI4MWM0NDhkL3NyYy9pbmRleC50cyIsICJub2RlX21vZHVsZXMvY2hlZXJpby9zcmMvYXBpL3RyYXZlcnNpbmcudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vc3JjL3BhcnNlLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9hcGkvbWFuaXB1bGF0aW9uLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9hcGkvY3NzLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9hcGkvZm9ybXMudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vc3JjL2FwaS9leHRyYWN0LnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9jaGVlcmlvLnRzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9sb2FkLnRzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9jb21tb24vdW5pY29kZS5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2Vycm9yLWNvZGVzLmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC90b2tlbml6ZXIvcHJlcHJvY2Vzc29yLmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9jb21tb24vdG9rZW4uanMiLCAibm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L2NvbW1vbi9odG1sLmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC90b2tlbml6ZXIvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L3BhcnNlci9vcGVuLWVsZW1lbnQtc3RhY2suanMiLCAibm9kZV9tb2R1bGVzL3BhcnNlNS9kaXN0L3BhcnNlci9mb3JtYXR0aW5nLWVsZW1lbnQtbGlzdC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvdHJlZS1hZGFwdGVycy9kZWZhdWx0LmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9jb21tb24vZG9jdHlwZS5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvY29tbW9uL2ZvcmVpZ24tY29udGVudC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1L2Rpc3QvcGFyc2VyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9zZXJpYWxpemVyL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9wYXJzZTUvZGlzdC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvcGFyc2U1LWh0bWxwYXJzZXIyLXRyZWUtYWRhcHRlci9kaXN0L2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9jaGVlcmlvL3NyYy9wYXJzZXJzL3BhcnNlNS1hZGFwdGVyLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2h0bWxwYXJzZXIyL2UyOTM5YTZjN2IwNWQ1YzQ4NDViNGEyZTQ1OGE0ZmMwYTY1YTMyMWQvc3JjL1Rva2VuaXplci50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9odG1scGFyc2VyMi9lMjkzOWE2YzdiMDVkNWM0ODQ1YjRhMmU0NThhNGZjMGE2NWEzMjFkL3NyYy9QYXJzZXIudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvaHRtbHBhcnNlcjIvZTI5MzlhNmM3YjA1ZDVjNDg0NWI0YTJlNDU4YTRmYzBhNjVhMzIxZC9zcmMvaW5kZXgudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vc3JjL2xvYWQtcGFyc2UudHMiLCAibm9kZV9tb2R1bGVzL2NoZWVyaW8vc3JjL2luZGV4LWJyb3dzZXIubXRzIiwgIm5vZGVfbW9kdWxlcy9tZW5zY2gvbGliL2RlYnVnLmpzIiwgIm5vZGVfbW9kdWxlcy9tZW5zY2gvbGliL2xleGVyLmpzIiwgIm5vZGVfbW9kdWxlcy9tZW5zY2gvbGliL3BhcnNlci5qcyIsICJub2RlX21vZHVsZXMvbWVuc2NoL2xpYi9zdHJpbmdpZnkuanMiLCAibm9kZV9tb2R1bGVzL21lbnNjaC9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvc2xpY2svcGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9qdWljZS9saWIvc2VsZWN0b3IuanMiLCAibm9kZV9tb2R1bGVzL2p1aWNlL2xpYi9wcm9wZXJ0eS5qcyIsICJub2RlX21vZHVsZXMvanVpY2UvbGliL3V0aWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9qdWljZS9saWIvY2hlZXJpby5qcyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9lbnRpdGllcy82MWFmZDQ3MDFlYWE3MzY5NzhiMTNjNzM1MWNkM2RlOWE5NmIwNGJjL3NyYy9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEtaHRtbC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9lbnRpdGllcy82MWFmZDQ3MDFlYWE3MzY5NzhiMTNjNzM1MWNkM2RlOWE5NmIwNGJjL3NyYy9nZW5lcmF0ZWQvZGVjb2RlLWRhdGEteG1sLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2VudGl0aWVzLzYxYWZkNDcwMWVhYTczNjk3OGIxM2M3MzUxY2QzZGU5YTk2YjA0YmMvc3JjL2RlY29kZV9jb2RlcG9pbnQudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvZW50aXRpZXMvNjFhZmQ0NzAxZWFhNzM2OTc4YjEzYzczNTFjZDNkZTlhOTZiMDRiYy9zcmMvZGVjb2RlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2VudGl0aWVzLzYxYWZkNDcwMWVhYTczNjk3OGIxM2M3MzUxY2QzZGU5YTk2YjA0YmMvc3JjL2dlbmVyYXRlZC9lbmNvZGUtaHRtbC50cyIsICJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZmI1NS9lbnRpdGllcy82MWFmZDQ3MDFlYWE3MzY5NzhiMTNjNzM1MWNkM2RlOWE5NmIwNGJjL3NyYy9lc2NhcGUudHMiLCAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL2ZiNTUvZW50aXRpZXMvNjFhZmQ0NzAxZWFhNzM2OTc4YjEzYzczNTFjZDNkZTlhOTZiMDRiYy9zcmMvZW5jb2RlLnRzIiwgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9mYjU1L2VudGl0aWVzLzYxYWZkNDcwMWVhYTczNjk3OGIxM2M3MzUxY2QzZGU5YTk2YjA0YmMvc3JjL2luZGV4LnRzIiwgIm5vZGVfbW9kdWxlcy9qdWljZS9saWIvbnVtYmVycy5qcyIsICJub2RlX21vZHVsZXMvanVpY2UvbGliL3ZhcmlhYmxlcy5qcyIsICJub2RlX21vZHVsZXMvanVpY2UvbGliL2lubGluZS5qcyIsICJub2RlX21vZHVsZXMvanVpY2UvY2xpZW50LmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L3V0aWxzL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L2NvcmUvZmlsZS10eXBlcy9hdWRpby5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC9jb3JlL2ZpbGUtdHlwZXMvY29tcHJlc3NlZC5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC9jb3JlL2ZpbGUtdHlwZXMvb3RoZXIuanMiLCAibm9kZV9tb2R1bGVzL2ZpbGUtdHlwZS1jaGVja2VyL2Rpc3QvY29yZS9maWxlLXR5cGVzL2ltYWdlLmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L2NvcmUvZmlsZS10eXBlcy92aWRlby5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC92YWxpZGF0aW9uL2F1ZGlvLmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L3ZhbGlkYXRpb24vY29tcHJlc3NlZC5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC92YWxpZGF0aW9uL2ltYWdlLmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L3ZhbGlkYXRpb24vb3RoZXIuanMiLCAibm9kZV9tb2R1bGVzL2ZpbGUtdHlwZS1jaGVja2VyL2Rpc3QvdmFsaWRhdGlvbi92aWRlby5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC92YWxpZGF0aW9uL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L2NvcmUvZmlsZS10eXBlcy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC9jb3JlL2ludGVyZmFjZXMvZHRvL2RldGVjdGVkLWZpbGUtaW5mby5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC9jb3JlL2ludGVyZmFjZXMvZHRvL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L2NvcmUvaW50ZXJmYWNlcy9vcHRpb25zL2RldGVjdC1maWxlLW9wdGlvbnMuanMiLCAibm9kZV9tb2R1bGVzL2ZpbGUtdHlwZS1jaGVja2VyL2Rpc3QvY29yZS9pbnRlcmZhY2VzL29wdGlvbnMvdmFsaWRhdGUtZmlsZS10eXBlLW9wdGlvbnMuanMiLCAibm9kZV9tb2R1bGVzL2ZpbGUtdHlwZS1jaGVja2VyL2Rpc3QvY29yZS9pbnRlcmZhY2VzL29wdGlvbnMvZmlsZS12YWxpZGF0b3Itb3B0aW9ucy5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC9jb3JlL2ludGVyZmFjZXMvb3B0aW9ucy96aXAtdmFsaWRhdG9yLW9wdGlvbnMuanMiLCAibm9kZV9tb2R1bGVzL2ZpbGUtdHlwZS1jaGVja2VyL2Rpc3QvY29yZS9pbnRlcmZhY2VzL29wdGlvbnMvaW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2ZpbGUtdHlwZS1jaGVja2VyL2Rpc3QvY29yZS9pbnRlcmZhY2VzL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L2NvcmUvdHlwZXMvZmlsZS1pbmZvLmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L2NvcmUvdHlwZXMvZmlsZS1zaWduYXR1cmUuanMiLCAibm9kZV9tb2R1bGVzL2ZpbGUtdHlwZS1jaGVja2VyL2Rpc3QvY29yZS90eXBlcy9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC9jb3JlL2luZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9maWxlLXR5cGUtY2hlY2tlci9kaXN0L2RldGVjdGlvbi9pbmRleC5qcyIsICJub2RlX21vZHVsZXMvZmlsZS10eXBlLWNoZWNrZXIvZGlzdC9pbmRleC5qcyIsICJzcmMvbWFpbi50cyIsICJzcmMvc2V0dGluZ3MudHMiLCAic3JjL3dwLXByb2ZpbGUtbWFuYWdlLW1vZGFsLnRzIiwgInNyYy93cC1wcm9maWxlLW1vZGFsLnRzIiwgInNyYy9jb25zdHMudHMiLCAic3JjL3V0aWxzLnRzIiwgInNyYy9tYXJrZG93bi1pdC1tYXRoamF4My1wbHVnaW4udHMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZnJlZUdsb2JhbC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19yb290LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX1N5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRSYXdUYWcuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fb2JqZWN0VG9TdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUdldFRhZy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzT2JqZWN0TGlrZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzU3ltYm9sLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5TWFwLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNBcnJheS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVG9TdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdHJpbW1lZEVuZEluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VUcmltLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNPYmplY3QuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90b051bWJlci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL3RvRmluaXRlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdG9JbnRlZ2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaWRlbnRpdHkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Z1bmN0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcmVKc0RhdGEuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNNYXNrZWQuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fdG9Tb3VyY2UuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzTmF0aXZlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFZhbHVlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldE5hdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19XZWFrTWFwLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VDcmVhdGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXBwbHkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29weUFycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3Nob3J0T3V0LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvY29uc3RhbnQuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZGVmaW5lUHJvcGVydHkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVNldFRvU3RyaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3NldFRvU3RyaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2FycmF5RWFjaC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlRmluZEluZGV4LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc05hTi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdHJpY3RJbmRleE9mLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJbmRleE9mLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzSW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUFzc2lnblZhbHVlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvZXEuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNzaWduVmFsdWUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY29weU9iamVjdC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vdmVyUmVzdC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlUmVzdC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzTGVuZ3RoLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNBcnJheUxpa2UuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNJdGVyYXRlZUNhbGwuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY3JlYXRlQXNzaWduZXIuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faXNQcm90b3R5cGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVRpbWVzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc0FyZ3VtZW50cy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzQXJndW1lbnRzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvc3R1YkZhbHNlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNCdWZmZXIuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzVHlwZWRBcnJheS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlVW5hcnkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbm9kZVV0aWwuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc1R5cGVkQXJyYXkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlMaWtlS2V5cy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19vdmVyQXJnLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25hdGl2ZUtleXMuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUtleXMuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9rZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25hdGl2ZUtleXNJbi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlS2V5c0luLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMva2V5c0luLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXNzaWduSW5XaXRoLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX25hdGl2ZUNyZWF0ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19oYXNoQ2xlYXIuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaERlbGV0ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19oYXNoR2V0LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2hhc2hIYXMuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faGFzaFNldC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19IYXNoLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2xpc3RDYWNoZUNsZWFyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Fzc29jSW5kZXhPZi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19saXN0Q2FjaGVEZWxldGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fbGlzdENhY2hlR2V0LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2xpc3RDYWNoZUhhcy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19saXN0Q2FjaGVTZXQuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fTGlzdENhY2hlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX01hcC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19tYXBDYWNoZUNsZWFyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2lzS2V5YWJsZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRNYXBEYXRhLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hcENhY2hlRGVsZXRlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hcENhY2hlR2V0LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hcENhY2hlSGFzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX21hcENhY2hlU2V0LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX01hcENhY2hlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdG9TdHJpbmcuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXJyYXlQdXNoLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFByb3RvdHlwZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzUGxhaW5PYmplY3QuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0Vycm9yLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvYXR0ZW1wdC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlU2xpY2UuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2FzdFNsaWNlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2hhc1VuaWNvZGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYXNjaWlUb0FycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3VuaWNvZGVUb0FycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3N0cmluZ1RvQXJyYXkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZVByb3BlcnR5T2YuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fc3RhY2tDbGVhci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdGFja0RlbGV0ZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdGFja0dldC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdGFja0hhcy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19zdGFja1NldC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19TdGFjay5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19iYXNlQXNzaWduLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VBc3NpZ25Jbi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jbG9uZUJ1ZmZlci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19hcnJheUZpbHRlci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL3N0dWJBcnJheS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19nZXRTeW1ib2xzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2NvcHlTeW1ib2xzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFN5bWJvbHNJbi5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jb3B5U3ltYm9sc0luLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VHZXRBbGxLZXlzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldEFsbEtleXMuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZ2V0QWxsS2V5c0luLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX0RhdGFWaWV3LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX1Byb21pc2UuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fU2V0LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2dldFRhZy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19pbml0Q2xvbmVBcnJheS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19VaW50OEFycmF5LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Nsb25lQXJyYXlCdWZmZXIuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2xvbmVEYXRhVmlldy5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jbG9uZVJlZ0V4cC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jbG9uZVN5bWJvbC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jbG9uZVR5cGVkQXJyYXkuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faW5pdENsb25lQnlUYWcuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9faW5pdENsb25lT2JqZWN0LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc01hcC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzTWFwLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc1NldC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzU2V0LmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VDbG9uZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2Nsb25lRGVlcC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19lc2NhcGVIdG1sQ2hhci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2VzY2FwZS5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzU3RyaW5nLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VWYWx1ZXMuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fYmFzZUlzQXJyYXlCdWZmZXIuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0FycmF5QnVmZmVyLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNCb29sZWFuLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2Jhc2VJc0RhdGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0RhdGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc0ludGVnZXIuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9pc051bWJlci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzTmlsLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvaXNTYWZlSW50ZWdlci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL2lzVW5kZWZpbmVkLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX2N1c3RvbURlZmF1bHRzQXNzaWduSW4uanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fZXNjYXBlU3RyaW5nQ2hhci5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19yZUludGVycG9sYXRlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlRXNjYXBlLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvX3JlRXZhbHVhdGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90ZW1wbGF0ZVNldHRpbmdzLmpzIiwgIm5vZGVfbW9kdWxlcy9sb2Rhc2gtZXMvdGVtcGxhdGUuanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy9fY2hhcnNFbmRJbmRleC5qcyIsICJub2RlX21vZHVsZXMvbG9kYXNoLWVzL19jaGFyc1N0YXJ0SW5kZXguanMiLCAibm9kZV9tb2R1bGVzL2xvZGFzaC1lcy90cmltLmpzIiwgInNyYy9wYXNzLWNyeXB0by50cyIsICJzcmMvcGx1Z2luLXNldHRpbmdzLnRzIiwgInNyYy94bWxycGMtY2xpZW50LnRzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9jb25zdGFudHMuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2NvbnN0cnVjdEZyb20uanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RvRGF0ZS5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvYWRkRGF5cy5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9kZWZhdWx0T3B0aW9ucy5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvc3RhcnRPZldlZWsuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZJU09XZWVrLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXRJU09XZWVrWWVhci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL25vcm1hbGl6ZURhdGVzLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mRGF5LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3N0YXJ0T2ZJU09XZWVrWWVhci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvaXNEYXRlLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9pc1ZhbGlkLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mWWVhci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL2VuLVVTL19saWIvZm9ybWF0RGlzdGFuY2UuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2xvY2FsZS9fbGliL2J1aWxkRm9ybWF0TG9uZ0ZuLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRMb25nLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvZW4tVVMvX2xpYi9mb3JtYXRSZWxhdGl2ZS5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL19saWIvYnVpbGRMb2NhbGl6ZUZuLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvZW4tVVMvX2xpYi9sb2NhbGl6ZS5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL19saWIvYnVpbGRNYXRjaEZuLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvX2xpYi9idWlsZE1hdGNoUGF0dGVybkZuLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9sb2NhbGUvZW4tVVMvX2xpYi9tYXRjaC5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvbG9jYWxlL2VuLVVTLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXREYXlPZlllYXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldElTT1dlZWsuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldFdlZWtZZWFyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9zdGFydE9mV2Vla1llYXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldFdlZWsuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvYWRkTGVhZGluZ1plcm9zLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL2Zvcm1hdC9saWdodEZvcm1hdHRlcnMuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvZm9ybWF0L2Zvcm1hdHRlcnMuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL19saWIvZm9ybWF0L2xvbmdGb3JtYXR0ZXJzLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9fbGliL3Byb3RlY3RlZFRva2Vucy5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvZm9ybWF0LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9mb3JtYXRJU08uanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL2dldERlZmF1bHRPcHRpb25zLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9nZXRJU09EYXkuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3RyYW5zcG9zZS5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9TZXR0ZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMvRXJhUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL2NvbnN0YW50cy5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi91dGlscy5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL1llYXJQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9Mb2NhbFdlZWtZZWFyUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMvSVNPV2Vla1llYXJQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9FeHRlbmRlZFllYXJQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9RdWFydGVyUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMvU3RhbmRBbG9uZVF1YXJ0ZXJQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9Nb250aFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL1N0YW5kQWxvbmVNb250aFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvc2V0V2Vlay5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0xvY2FsV2Vla1BhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvc2V0SVNPV2Vlay5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0lTT1dlZWtQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9EYXRlUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMvRGF5T2ZZZWFyUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9zZXREYXkuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9EYXlQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9Mb2NhbERheVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL1N0YW5kQWxvbmVMb2NhbERheVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvc2V0SVNPRGF5LmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMvSVNPRGF5UGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMvQU1QTVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0FNUE1NaWRuaWdodFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0RheVBlcmlvZFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIxdG8xMlBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIwdG8yM1BhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIwVG8xMVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0hvdXIxVG8yNFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL01pbnV0ZVBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL1NlY29uZFBhcnNlci5qcyIsICJub2RlX21vZHVsZXMvZGF0ZS1mbnMvcGFyc2UvX2xpYi9wYXJzZXJzL0ZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9JU09UaW1lem9uZVdpdGhaUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMvSVNPVGltZXpvbmVQYXJzZXIuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlL19saWIvcGFyc2Vycy9UaW1lc3RhbXBTZWNvbmRzUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMvVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyLmpzIiwgIm5vZGVfbW9kdWxlcy9kYXRlLWZucy9wYXJzZS9fbGliL3BhcnNlcnMuanMiLCAibm9kZV9tb2R1bGVzL2RhdGUtZm5zL3BhcnNlLmpzIiwgInNyYy9hYnN0cmFjdC13cC1jbGllbnQudHMiLCAic3JjL3dwLXB1Ymxpc2gtbW9kYWwudHMiLCAic3JjL2NvbmZpcm0tbW9kYWwudHMiLCAic3JjL2Fic3RyYWN0LW1vZGFsLnRzIiwgIm5vZGVfbW9kdWxlcy9pbWFzay9lc20vY29yZS91dGlscy5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL2NvcmUvYWN0aW9uLWRldGFpbHMuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9jb3JlL2hvbGRlci5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL21hc2tlZC9mYWN0b3J5LmpzIiwgIm5vZGVfbW9kdWxlcy9pbWFzay9lc20vY29udHJvbHMvbWFzay1lbGVtZW50LmpzIiwgIm5vZGVfbW9kdWxlcy9pbWFzay9lc20vY29udHJvbHMvaHRtbC1tYXNrLWVsZW1lbnQuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9jb250cm9scy9odG1sLWlucHV0LW1hc2stZWxlbWVudC5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL2NvbnRyb2xzL2h0bWwtY29udGVudGVkaXRhYmxlLW1hc2stZWxlbWVudC5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL2NvbnRyb2xzL2lucHV0LWhpc3RvcnkuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9jb250cm9scy9pbnB1dC5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL2NvcmUvY2hhbmdlLWRldGFpbHMuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9jb3JlL2NvbnRpbnVvdXMtdGFpbC1kZXRhaWxzLmpzIiwgIm5vZGVfbW9kdWxlcy9pbWFzay9lc20vbWFza2VkL2Jhc2UuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9tYXNrZWQvcGF0dGVybi9jaHVuay10YWlsLWRldGFpbHMuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9tYXNrZWQvcGF0dGVybi9jdXJzb3IuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9tYXNrZWQvcGF0dGVybi9maXhlZC1kZWZpbml0aW9uLmpzIiwgIm5vZGVfbW9kdWxlcy9pbWFzay9lc20vbWFza2VkL3BhdHRlcm4vaW5wdXQtZGVmaW5pdGlvbi5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL21hc2tlZC9yZWdleHAuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9tYXNrZWQvcGF0dGVybi5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL21hc2tlZC9yYW5nZS5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL21hc2tlZC9kYXRlLmpzIiwgIm5vZGVfbW9kdWxlcy9pbWFzay9lc20vbWFza2VkL2R5bmFtaWMuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9tYXNrZWQvZW51bS5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL21hc2tlZC9mdW5jdGlvbi5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL21hc2tlZC9udW1iZXIuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9tYXNrZWQvcGlwZS5qcyIsICJub2RlX21vZHVsZXMvaW1hc2svZXNtL21hc2tlZC9yZXBlYXQuanMiLCAibm9kZV9tb2R1bGVzL2ltYXNrL2VzbS9pbmRleC5qcyIsICJzcmMvYXBwLXN0YXRlLnRzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvY29tbW9uL3V0aWxzLm1qcyIsICJub2RlX21vZHVsZXMvbWR1cmwvaW5kZXgubWpzIiwgIm5vZGVfbW9kdWxlcy9tZHVybC9saWIvZGVjb2RlLm1qcyIsICJub2RlX21vZHVsZXMvbWR1cmwvbGliL2VuY29kZS5tanMiLCAibm9kZV9tb2R1bGVzL21kdXJsL2xpYi9mb3JtYXQubWpzIiwgIm5vZGVfbW9kdWxlcy9tZHVybC9saWIvcGFyc2UubWpzIiwgIm5vZGVfbW9kdWxlcy91Yy5taWNyby9pbmRleC5tanMiLCAibm9kZV9tb2R1bGVzL3VjLm1pY3JvL3Byb3BlcnRpZXMvQW55L3JlZ2V4Lm1qcyIsICJub2RlX21vZHVsZXMvdWMubWljcm8vY2F0ZWdvcmllcy9DYy9yZWdleC5tanMiLCAibm9kZV9tb2R1bGVzL3VjLm1pY3JvL2NhdGVnb3JpZXMvQ2YvcmVnZXgubWpzIiwgIm5vZGVfbW9kdWxlcy91Yy5taWNyby9jYXRlZ29yaWVzL1AvcmVnZXgubWpzIiwgIm5vZGVfbW9kdWxlcy91Yy5taWNyby9jYXRlZ29yaWVzL1MvcmVnZXgubWpzIiwgIm5vZGVfbW9kdWxlcy91Yy5taWNyby9jYXRlZ29yaWVzL1ovcmVnZXgubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvaGVscGVycy9pbmRleC5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9oZWxwZXJzL3BhcnNlX2xpbmtfbGFiZWwubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvaGVscGVycy9wYXJzZV9saW5rX2Rlc3RpbmF0aW9uLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2hlbHBlcnMvcGFyc2VfbGlua190aXRsZS5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9yZW5kZXJlci5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlci5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi90b2tlbi5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3N0YXRlX2NvcmUubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9ub3JtYWxpemUubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9ibG9jay5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2lubGluZS5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL2xpbmtpZnkubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9yZXBsYWNlbWVudHMubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfY29yZS9zbWFydHF1b3Rlcy5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19jb3JlL3RleHRfam9pbi5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfY29yZS5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9zdGF0ZV9ibG9jay5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay90YWJsZS5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9jb2RlLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL2ZlbmNlLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL2Jsb2NrcXVvdGUubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svaHIubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svbGlzdC5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9yZWZlcmVuY2UubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvY29tbW9uL2h0bWxfYmxvY2tzLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL2NvbW1vbi9odG1sX3JlLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL2h0bWxfYmxvY2subWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfYmxvY2svaGVhZGluZy5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9saGVhZGluZy5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19ibG9jay9wYXJhZ3JhcGgubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcGFyc2VyX2Jsb2NrLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9zdGF0ZV9pbmxpbmUubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL3RleHQubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL2xpbmtpZnkubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL25ld2xpbmUubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL2VzY2FwZS5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvYmFja3RpY2tzLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9zdHJpa2V0aHJvdWdoLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9lbXBoYXNpcy5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvbGluay5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvaW1hZ2UubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcnVsZXNfaW5saW5lL2F1dG9saW5rLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9odG1sX2lubGluZS5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvZW50aXR5Lm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9iYWxhbmNlX3BhaXJzLm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3J1bGVzX2lubGluZS9mcmFnbWVudHNfam9pbi5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wYXJzZXJfaW5saW5lLm1qcyIsICJub2RlX21vZHVsZXMvbGlua2lmeS1pdC9saWIvcmUubWpzIiwgIm5vZGVfbW9kdWxlcy9saW5raWZ5LWl0L2luZGV4Lm1qcyIsICJub2RlX21vZHVsZXMvcHVueWNvZGUuanMvcHVueWNvZGUuZXM2LmpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvcHJlc2V0cy9kZWZhdWx0Lm1qcyIsICJub2RlX21vZHVsZXMvbWFya2Rvd24taXQvbGliL3ByZXNldHMvemVyby5tanMiLCAibm9kZV9tb2R1bGVzL21hcmtkb3duLWl0L2xpYi9wcmVzZXRzL2NvbW1vbm1hcmsubWpzIiwgIm5vZGVfbW9kdWxlcy9tYXJrZG93bi1pdC9saWIvaW5kZXgubWpzIiwgInNyYy9tYXJrZG93bi1pdC1pbWFnZS1wbHVnaW4udHMiLCAic3JjL21hcmtkb3duLWl0LWNvbW1lbnQtcGx1Z2luLnRzIiwgInNyYy9wb3N0LXB1Ymxpc2hlZC1tb2RhbC50cyIsICJzcmMvd3AtbG9naW4tbW9kYWwudHMiLCAic3JjL3dwLXhtbC1ycGMtY2xpZW50LnRzIiwgInNyYy9yZXN0LWNsaWVudC50cyIsICJzcmMvdHlwZXMudHMiLCAic3JjL3dwLXJlc3QtY2xpZW50LnRzIiwgInNyYy93cC1jbGllbnRzLnRzIiwgInNyYy9vYXV0aDItY2xpZW50LnRzIiwgInNyYy9pY29ucy50cyIsICJzcmMvaTE4bi9lbi5qc29uIiwgInNyYy9pMThuL3poLWNuLmpzb24iLCAic3JjL2kxOG4vbGFuZ3MudHMiLCAic3JjL2kxOG4udHMiLCAic3JjL3dwLXByb2ZpbGUtY2hvb3Nlci1tb2RhbC50cyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBvcHRpb24gbGlzdHNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmpzZG9jLXJlcXVpcmUgKi9cbmNvbnN0IE9CSkVDVCA9IHt9LmNvbnN0cnVjdG9yO1xuXG4vKipcbiAqICBDaGVjayBpZiBhbiBvYmplY3QgaXMgYW4gb2JqZWN0IGxpdGVyYWwgKGFzIG9wcG9zZWQgdG8gYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcylcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KG9iajogYW55KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwgJiZcbiAgICAob2JqLmNvbnN0cnVjdG9yID09PSBPQkpFQ1QgfHwgb2JqLmNvbnN0cnVjdG9yID09PSBFeHBhbmRhYmxlKTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBHZW5lcmljIGxpc3Qgb2Ygb3B0aW9uc1xuICovXG5leHBvcnQgdHlwZSBPcHRpb25MaXN0ID0ge1tuYW1lOiBzdHJpbmddOiBhbnl9O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBVc2VkIHRvIGFwcGVuZCBhbiBhcnJheSB0byBhbiBhcnJheSBpbiBkZWZhdWx0IG9wdGlvbnNcbiAqICBFLmcuLCBhbiBvcHRpb24gb2YgdGhlIGZvcm1cbiAqXG4gKiAgICB7XG4gKiAgICAgIG5hbWU6IHtbQVBQRU5EXTogWzEsIDIsIDNdfVxuICogICAgfVxuICpcbiAqICB3aGVyZSAnbmFtZScgaXMgYW4gYXJyYXkgaW4gdGhlIGRlZmF1bHQgb3B0aW9ucyB3b3VsZCBlbmQgdXAgd2l0aCBuYW1lIGhhdmluZyBpdHNcbiAqICBvcmlnaW5hbCB2YWx1ZSB3aXRoIDEsIDIsIGFuZCAzIGFwcGVuZGVkLlxuICovXG5leHBvcnQgY29uc3QgQVBQRU5EID0gJ1srXSc7XG5cbi8qKlxuICogIFVzZWQgdG8gcmVtb3ZlIGVsZW1lbnRzIGZyb20gYW4gYXJyYXkgaW4gZGVmYXVsdCBvcHRpb25zXG4gKiAgRS5nLiwgYW4gb3B0aW9uIG9mIHRoZSBmb3JtXG4gKlxuICogICAge1xuICogICAgICBuYW1lOiB7W1JFTU9WRV06IFsyXX1cbiAqICAgIH1cbiAqXG4gKiAgd2hlcmUgJ25hbWUnIGlzIGFuIGFycmF5IGluIHRoZSBkZWZhdWx0IG9wdGlvbnMgd291bGQgZW5kIHVwIHdpdGggbmFtZSBoYXZpbmcgaXRzXG4gKiAgb3JpZ2luYWwgdmFsdWUgYnV0IHdpdGggYW55IGVudHJ5IG9mIDIgcmVtb3ZlZCAgU28gaWYgdGhlIG9yaWdpbmFsIHZhbHVlIHdhcyBbMSwgMiwgMywgMl0sXG4gKiAgdGhlbiB0aGUgZmluYWwgdmFsdWUgd2lsbCBiZSBbMSwgM10gaW5zdGVhZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFJFTU9WRSA9ICdbLV0nO1xuXG5cbi8qKlxuICogIFByb3ZpZGVzIG9wdGlvbnMgZm9yIHRoZSBvcHRpb24gdXRsaXRpZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBPUFRJT05TID0ge1xuICBpbnZhbGlkT3B0aW9uOiAnd2FybicgYXMgKCdmYXRhbCcgfCAnd2FybicpLFxuICAvKipcbiAgICogRnVuY3Rpb24gdG8gcmVwb3J0IG1lc3NhZ2VzIGZvciBpbnZhbGlkIG9wdGlvbnNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgICBUaGUgbWVzc2FnZSBmb3IgdGhlIGludmFsaWQgcGFyYW1ldGVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5ICAgICAgIFRoZSBpbnZhbGlkIGtleSBpdHNlbGYuXG4gICAqL1xuICBvcHRpb25FcnJvcjogKG1lc3NhZ2U6IHN0cmluZywgX2tleTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKE9QVElPTlMuaW52YWxpZE9wdGlvbiA9PT0gJ2ZhdGFsJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICBjb25zb2xlLndhcm4oJ01hdGhKYXg6ICcgKyBtZXNzYWdlKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIEEgQ2xhc3MgdG8gdXNlIGZvciBvcHRpb25zIHRoYXQgc2hvdWxkIG5vdCBwcm9kdWNlIHdhcm5pbmdzIGlmIGFuIHVuZGVmaW5lZCBrZXkgaXMgdXNlZFxuICovXG5leHBvcnQgY2xhc3MgRXhwYW5kYWJsZSB7fVxuXG4vKipcbiAqIFByb2R1Y2VzIGFuIGluc3RhbmNlIG9mIEV4cGFuZGFibGUgd2l0aCB0aGUgZ2l2ZW4gdmFsdWVzICh0byBiZSB1c2VkIGluIGRlZmluaW5nIG9wdGlvbnNcbiAqIHRoYXQgY2FuIHVzZSBrZXlzIHRoYXQgZG9uJ3QgaGF2ZSBkZWZhdWx0IHZhbHVlcykuICBFLmcuLCBkZWZhdWx0IG9wdGlvbnMgb2YgdGhlIGZvcm06XG4gKlxuICogIE9QVElPTlMgPSB7XG4gKiAgICAgdHlwZXM6IGV4cGFuZGFibGUoe1xuICogICAgICAgYTogMSxcbiAqICAgICAgIGI6IDJcbiAqICAgICB9KVxuICogIH1cbiAqXG4gKiAgd291bGQgYWxsb3cgdXNlciBvcHRpb25zIG9mXG4gKlxuICogIHtcbiAqICAgICB0eXBlczoge1xuICogICAgICAgYzogM1xuICogICAgIH1cbiAqICB9XG4gKlxuICogIHdpdGhvdXQgcmVwb3J0aW5nIGFuIGVycm9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXhwYW5kYWJsZShkZWY6IE9wdGlvbkxpc3QpIHtcbiAgcmV0dXJuIE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShFeHBhbmRhYmxlLnByb3RvdHlwZSksIGRlZik7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIE1ha2Ugc3VyZSBhbiBvcHRpb24gaXMgYW4gQXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VBcnJheSh4OiBhbnkpOiBhbnlbXSB7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHgpID8geCA6IFt4XTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBHZXQgYWxsIGtleXMgYW5kIHN5bWJvbHMgZnJvbSBhbiBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge09wdGlvbmxpc3R9IGRlZiAgICAgICAgVGhlIG9iamVjdCB3aG9zZSBrZXlzIGFyZSB0byBiZSByZXR1cm5lZFxuICogQHJldHVybiB7KHN0cmluZyB8IHN5bWJvbClbXX0gIFRoZSBsaXN0IG9mIGtleXMgZm9yIHRoZSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGtleXMoZGVmOiBPcHRpb25MaXN0KTogKHN0cmluZyB8IHN5bWJvbClbXSB7XG4gIGlmICghZGVmKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHJldHVybiAoT2JqZWN0LmtleXMoZGVmKSBhcyAoc3RyaW5nIHwgc3ltYm9sKVtdKS5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhkZWYpKTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBNYWtlIGEgZGVlcCBjb3B5IG9mIGFuIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T3B0aW9uTGlzdH0gZGVmICBUaGUgb2JqZWN0IHRvIGJlIGNvcGllZFxuICogQHJldHVybiB7T3B0aW9uTGlzdH0gICAgIFRoZSBjb3B5IG9mIHRoZSBvYmplY3RcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvcHkoZGVmOiBPcHRpb25MaXN0KTogT3B0aW9uTGlzdCB7XG4gIGxldCBwcm9wczogT3B0aW9uTGlzdCA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKGRlZikpIHtcbiAgICBsZXQgcHJvcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZGVmLCBrZXkpO1xuICAgIGxldCB2YWx1ZSA9IHByb3AudmFsdWU7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBwcm9wLnZhbHVlID0gaW5zZXJ0KFtdLCB2YWx1ZSwgZmFsc2UpO1xuICAgIH0gZWxzZSBpZiAoaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICBwcm9wLnZhbHVlID0gY29weSh2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChwcm9wLmVudW1lcmFibGUpIHtcbiAgICAgIHByb3BzW2tleSBhcyBzdHJpbmddID0gcHJvcDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGRlZi5jb25zdHJ1Y3RvciA9PT0gRXhwYW5kYWJsZSA/IGV4cGFuZGFibGUoe30pIDoge30sIHByb3BzKTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBJbnNlcnQgb25lIG9iamVjdCBpbnRvIGFub3RoZXIgKHdpdGggb3B0aW9uYWwgd2FybmluZ3MgYWJvdXRcbiAqIGtleXMgdGhhdCBhcmVuJ3QgaW4gdGhlIG9yaWdpbmFsKVxuICpcbiAqIEBwYXJhbSB7T3B0aW9uTGlzdH0gZHN0ICBUaGUgb3B0aW9uIGxpc3QgdG8gbWVyZ2UgaW50b1xuICogQHBhcmFtIHtPcHRpb25MaXN0fSBzcmMgIFRoZSBvcHRpb25zIHRvIGJlIG1lcmdlZFxuICogQHBhcmFtIHtib29sZWFufSB3YXJuICAgIFRydWUgaWYgYSB3YXJuaW5nIHNob3VsZCBiZSBpc3N1ZWQgZm9yIGEgc3JjIG9wdGlvbiB0aGF0IGlzbid0IGFscmVhZHkgaW4gZHN0XG4gKiBAcmV0dXJuIHtPcHRpb25MaXN0fSAgICAgVGhlIG1vZGlmaWVkIGRlc3RpbmF0aW9uIG9wdGlvbiBsaXN0IChkc3QpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnQoZHN0OiBPcHRpb25MaXN0LCBzcmM6IE9wdGlvbkxpc3QsIHdhcm46IGJvb2xlYW4gPSB0cnVlKTogT3B0aW9uTGlzdCB7XG4gIGZvciAobGV0IGtleSBvZiBrZXlzKHNyYykgYXMgc3RyaW5nW10pIHtcbiAgICAvL1xuICAgIC8vIENoZWNrIGlmIHRoZSBrZXkgaXMgdmFsaWQgKGkuZS4sIGlzIGluIHRoZSBkZWZhdWx0cyBvciBpbiBhbiBleHBhbmRhYmxlIGJsb2NrKVxuICAgIC8vXG4gICAgaWYgKHdhcm4gJiYgZHN0W2tleV0gPT09IHVuZGVmaW5lZCAmJiBkc3QuY29uc3RydWN0b3IgIT09IEV4cGFuZGFibGUpIHtcbiAgICAgIGlmICh0eXBlb2Yga2V5ID09PSAnc3ltYm9sJykge1xuICAgICAgICBrZXkgPSAoa2V5IGFzIHN5bWJvbCkudG9TdHJpbmcoKTtcbiAgICAgIH1cbiAgICAgIE9QVElPTlMub3B0aW9uRXJyb3IoYEludmFsaWQgb3B0aW9uIFwiJHtrZXl9XCIgKG5vIGRlZmF1bHQgdmFsdWUpLmAsIGtleSk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyBTaG9ydGhhbmRzIGZvciB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiB2YWx1ZXNcbiAgICAvL1xuICAgIGxldCBzdmFsID0gc3JjW2tleV0sIGR2YWwgPSBkc3Rba2V5XTtcbiAgICAvL1xuICAgIC8vIElmIHRoZSBzb3VyY2UgaXMgYW4gb2JqZWN0IGxpdGVyYWwgYW5kIHRoZSBkZXN0aW5hdGlvbiBleGlzdHMgYW5kIGlzIGVpdGhlciBhblxuICAgIC8vICAgb2JqZWN0IG9yIGEgZnVuY3Rpb24gKHNvIGNhbiBoYXZlIHByb3BlcnRpZXMgYWRkZWQgdG8gaXQpLi4uXG4gICAgLy9cbiAgICBpZiAoaXNPYmplY3Qoc3ZhbCkgJiYgZHZhbCAhPT0gbnVsbCAmJlxuICAgICAgICAodHlwZW9mIGR2YWwgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBkdmFsID09PSAnZnVuY3Rpb24nKSkge1xuICAgICAgY29uc3QgaWRzID0ga2V5cyhzdmFsKTtcbiAgICAgIC8vXG4gICAgICAvLyBDaGVjayBmb3IgQVBQRU5EIG9yIFJFTU9WRSBvYmplY3RzOlxuICAgICAgLy9cbiAgICAgIGlmIChcbiAgICAgICAgLy9cbiAgICAgICAgLy8gSWYgdGhlIGRlc3RpbmF0aW9uIHZhbHVlIGlzIGFuIGFycmF5Li4uXG4gICAgICAgIC8vXG4gICAgICAgIEFycmF5LmlzQXJyYXkoZHZhbCkgJiZcbiAgICAgICAgICAoXG4gICAgICAgICAgICAvL1xuICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgb25seSBvbmUga2V5IGFuZCBpdCBpcyBBUFBFTkQgb3IgUkVNT1ZFIGFuZCB0aGUga2V5cyB2YWx1ZSBpcyBhbiBhcnJheS4uLlxuICAgICAgICAgICAgLy9cbiAgICAgICAgICAgIChpZHMubGVuZ3RoID09PSAxICYmIChpZHNbMF0gPT09IEFQUEVORCB8fCBpZHNbMF0gPT09IFJFTU9WRSkgJiYgQXJyYXkuaXNBcnJheShzdmFsW2lkc1swXV0pKSB8fFxuICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAvLyBPciBpZiB0aGVyZSBhcmUgdHdvIGtleXMgYW5kIHRoZXkgYXJlIEFQUEVORCBhbmQgUkVNT1ZFIGFuZCBib3RoIGtleXMnIHZhbHVlc1xuICAgICAgICAgICAgICAvLyAgIGFyZSBhcnJheXMuLi5cbiAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgKGlkcy5sZW5ndGggPT09IDIgJiYgaWRzLnNvcnQoKS5qb2luKCcsJykgPT09IEFQUEVORCArICcsJyArIFJFTU9WRSAmJlxuICAgICAgICAgICAgICAgQXJyYXkuaXNBcnJheShzdmFsW0FQUEVORF0pICYmIEFycmF5LmlzQXJyYXkoc3ZhbFtSRU1PVkVdKSlcbiAgICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gVGhlbiByZW1vdmUgYW55IHZhbHVlcyB0byBiZSByZW1vdmVkXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChzdmFsW1JFTU9WRV0pIHtcbiAgICAgICAgICBkdmFsID0gZHN0W2tleV0gPSBkdmFsLmZpbHRlcih4ID0+IHN2YWxbUkVNT1ZFXS5pbmRleE9mKHgpIDwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gQW5kIGFwcGVuZCBhbnkgdmFsdWVzIHRvIGJlIGFkZGVkIChtYWtlIGEgY29weSBzbyBhcyBub3QgdG8gbW9kaWZ5IHRoZSBvcmlnaW5hbClcbiAgICAgICAgLy9cbiAgICAgICAgaWYgKHN2YWxbQVBQRU5EXSkge1xuICAgICAgICAgIGRzdFtrZXldID0gWy4uLmR2YWwsIC4uLnN2YWxbQVBQRU5EXV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIE90aGVyd2lzZSBpbnNlcnQgdGhlIHZhbHVlcyBvZiB0aGUgc291cmNlIG9iamVjdCBpbnRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3RcbiAgICAgICAgLy9cbiAgICAgICAgaW5zZXJ0KGR2YWwsIHN2YWwsIHdhcm4pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShzdmFsKSkge1xuICAgICAgLy9cbiAgICAgIC8vIElmIHRoZSBzb3VyY2UgaXMgYW4gYXJyYXksIHJlcGxhY2UgdGhlIGRlc3RpbmF0aW9uIHdpdGggYW4gZW1wdHkgYXJyYXlcbiAgICAgIC8vICAgYW5kIGNvcHkgdGhlIHNvdXJjZSB2YWx1ZXMgaW50byBpdC5cbiAgICAgIC8vXG4gICAgICBkc3Rba2V5XSA9IFtdO1xuICAgICAgaW5zZXJ0KGRzdFtrZXldLCBzdmFsLCBmYWxzZSk7XG4gICAgfSBlbHNlIGlmIChpc09iamVjdChzdmFsKSkge1xuICAgICAgLy9cbiAgICAgIC8vIElmIHRoZSBzb3VyY2UgaXMgYW4gb2JqZWN0IGxpdGVyYWwsIHNldCB0aGUgZGVzdGluYXRpb24gdG8gYSBjb3B5IG9mIGl0XG4gICAgICAvL1xuICAgICAgZHN0W2tleV0gPSBjb3B5KHN2YWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL1xuICAgICAgLy8gT3RoZXJ3aXNlIHNldCB0aGUgZGVzdGluYXRpb24gdG8gdGhlIHNvdXJjZSB2YWx1ZVxuICAgICAgLy9cbiAgICAgIGRzdFtrZXldID0gc3ZhbDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRzdDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBNZXJnZSBvcHRpb25zIHdpdGhvdXQgd2FybmluZ3MgKHNvIHdlIGNhbiBhZGQgbmV3IGRlZmF1bHQgdmFsdWVzIGludG8gYW5cbiAqIGV4aXN0aW5nIGRlZmF1bHQgbGlzdClcbiAqXG4gKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgIFRoZSBvcHRpb24gbGlzdCB0byBiZSBtZXJnZWQgaW50b1xuICogQHBhcmFtIHtPcHRpb25MaXN0W119IGRlZnMgICBUaGUgb3B0aW9uIGxpc3RzIHRvIG1lcmdlIGludG8gdGhlIGZpcnN0IG9uZVxuICogQHJldHVybiB7T3B0aW9uTGlzdH0gICAgICAgICBUaGUgbW9kaWZpZWQgb3B0aW9ucyBsaXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZhdWx0T3B0aW9ucyhvcHRpb25zOiBPcHRpb25MaXN0LCAuLi5kZWZzOiBPcHRpb25MaXN0W10pOiBPcHRpb25MaXN0IHtcbiAgZGVmcy5mb3JFYWNoKGRlZiA9PiBpbnNlcnQob3B0aW9ucywgZGVmLCBmYWxzZSkpO1xuICByZXR1cm4gb3B0aW9ucztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBNZXJnZSBvcHRpb25zIHdpdGggd2FybmluZ3MgYWJvdXQgdW5kZWZpbmVkIG9uZXMgKHNvIHdlIGNhbiBtZXJnZVxuICogdXNlciBvcHRpb25zIGludG8gdGhlIGRlZmF1bHQgbGlzdClcbiAqXG4gKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgIFRoZSBvcHRpb24gbGlzdCB0byBiZSBtZXJnZWQgaW50b1xuICogQHBhcmFtIHtPcHRpb25MaXN0W119IGRlZnMgICBUaGUgb3B0aW9uIGxpc3RzIHRvIG1lcmdlIGludG8gdGhlIGZpcnN0IG9uZVxuICogQHJldHVybiB7T3B0aW9uTGlzdH0gICAgICAgICBUaGUgbW9kaWZpZWQgb3B0aW9ucyBsaXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VyT3B0aW9ucyhvcHRpb25zOiBPcHRpb25MaXN0LCAuLi5kZWZzOiBPcHRpb25MaXN0W10pOiBPcHRpb25MaXN0IHtcbiAgZGVmcy5mb3JFYWNoKGRlZiA9PiBpbnNlcnQob3B0aW9ucywgZGVmLCB0cnVlKSk7XG4gIHJldHVybiBvcHRpb25zO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFNlbGVjdCBhIHN1YnNldCBvZiBvcHRpb25zIGJ5IGtleSBuYW1lXG4gKlxuICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICBUaGUgb3B0aW9uIGxpc3QgZnJvbSB3aGljaCBvcHRpb24gdmFsdWVzIHdpbGwgYmUgdGFrZW5cbiAqIEBwYXJhbSB7c3RyaW5nW119IGtleXMgICAgICAgVGhlIG5hbWVzIG9mIHRoZSBvcHRpb25zIHRvIGV4dHJhY3RcbiAqIEByZXR1cm4ge09wdGlvbkxpc3R9ICAgICAgICAgVGhlIG9wdGlvbiBsaXN0IGNvbnNpc3Rpbmcgb2Ygb25seSB0aGUgb25lcyB3aG9zZSBrZXlzIHdlcmUgZ2l2ZW5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlbGVjdE9wdGlvbnMob3B0aW9uczogT3B0aW9uTGlzdCwgLi4ua2V5czogc3RyaW5nW10pOiBPcHRpb25MaXN0IHtcbiAgbGV0IHN1YnNldDogT3B0aW9uTGlzdCA9IHt9O1xuICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgc3Vic2V0W2tleV0gPSBvcHRpb25zW2tleV07XG4gICAgfVxuICB9XG4gIHJldHVybiBzdWJzZXQ7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogU2VsZWN0IGEgc3Vic2V0IG9mIG9wdGlvbnMgYnkga2V5cyBmcm9tIGFuIG9iamVjdFxuICpcbiAqIEBwYXJhbSB7T3B0aW9uTGlzdH0gb3B0aW9ucyAgVGhlIG9wdGlvbiBsaXN0IGZyb20gd2hpY2ggdGhlIG9wdGlvbiB2YWx1ZXMgd2lsbCBiZSB0YWtlblxuICogQHBhcmFtIHtPcHRpb25MaXN0fSBvYmplY3QgICBUaGUgb3B0aW9uIGxpc3Qgd2hvc2Uga2V5cyB3aWxsIGJlIHVzZWQgdG8gc2VsZWN0IHRoZSBvcHRpb25zXG4gKiBAcmV0dXJuIHtPcHRpb25MaXN0fSAgICAgICAgIFRoZSBvcHRpb24gbGlzdCBjb25zaXN0aW5nIG9mIHRoZSBvcHRpb24gdmFsdWVzIGZyb20gdGhlIGZpcnN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IHdob3NlIGtleXMgYXJlIHRob3NlIGZyb20gdGhlIHNlY29uZCBsaXN0LlxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VsZWN0T3B0aW9uc0Zyb21LZXlzKG9wdGlvbnM6IE9wdGlvbkxpc3QsIG9iamVjdDogT3B0aW9uTGlzdCk6IE9wdGlvbkxpc3Qge1xuICByZXR1cm4gc2VsZWN0T3B0aW9ucyhvcHRpb25zLCAuLi5PYmplY3Qua2V5cyhvYmplY3QpKTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgU2VwYXJhdGUgb3B0aW9ucyBpbnRvIHNldHM6IHRoZSBvbmVzIGhhdmluZyB0aGUgc2FtZSBrZXlzXG4gKiAgYXMgdGhlIHNlY29uZCBvYmplY3QsIHRoZSB0aGlyZCBvYmplY3QsIGV0YywgYW5kIHRoZSBvbmVzIHRoYXQgZG9uJ3QuXG4gKiAgKFVzZWQgdG8gc2VwYXJhdGUgYW4gb3B0aW9uIGxpc3QgaW50byB0aGUgb3B0aW9ucyBuZWVkZWQgZm9yIHNldmVyYWxcbiAqICAgc3Vib2JqZWN0cy4pXG4gKlxuICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICAgIFRoZSBvcHRpb24gbGlzdCB0byBiZSBzcGxpdCBpbnRvIHBhcnRzXG4gKiBAcGFyYW0ge09wdGlvbkxpc3RbXX0gb2JqZWN0cyAgVGhlIGxpc3Qgb2Ygb3B0aW9uIGxpc3RzIHdob3NlIGtleXMgYXJlIHVzZWQgdG8gYnJlYWsgdXBcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG9yaWdpbmFsIG9wdGlvbnMgaW50byBzZXBhcmF0ZSBwaWVjZXMuXG4gKiBAcmV0dXJuIHtPcHRpb25MaXN0W119ICAgICAgICAgVGhlIG9wdGlvbiBsaXN0cyB0YWtlbiBmcm9tIHRoZSBvcmlnaW5hbCBiYXNlZCBvbiB0aGVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5cyBvZiB0aGUgb3RoZXIgb2JqZWN0cy4gIFRoZSBmaXJzdCBvbmUgaW4gdGhlIGxpc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lzdHMgb2YgdGhlIHZhbHVlcyBub3QgYXBwZWFyaW5nIGluIGFueSBvZiB0aGUgb3RoZXJzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpLmUuLCB3aG9zZSBrZXlzIHdlcmUgbm90IGluIGFueSBvZiB0aGUgb3RoZXJzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcGFyYXRlT3B0aW9ucyhvcHRpb25zOiBPcHRpb25MaXN0LCAuLi5vYmplY3RzOiBPcHRpb25MaXN0W10pOiBPcHRpb25MaXN0W10ge1xuICBsZXQgcmVzdWx0czogT3B0aW9uTGlzdFtdID0gW107XG4gIGZvciAoY29uc3Qgb2JqZWN0IG9mIG9iamVjdHMpIHtcbiAgICBsZXQgZXhpc3RzOiBPcHRpb25MaXN0ID0ge30sIG1pc3Npbmc6IE9wdGlvbkxpc3QgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvcHRpb25zIHx8IHt9KSkge1xuICAgICAgKG9iamVjdFtrZXldID09PSB1bmRlZmluZWQgPyBtaXNzaW5nIDogZXhpc3RzKVtrZXldID0gb3B0aW9uc1trZXldO1xuICAgIH1cbiAgICByZXN1bHRzLnB1c2goZXhpc3RzKTtcbiAgICBvcHRpb25zID0gbWlzc2luZztcbiAgfVxuICByZXN1bHRzLnVuc2hpZnQob3B0aW9ucyk7XG4gIHJldHVybiByZXN1bHRzO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIExvb2sgdXAgYSB2YWx1ZSBmcm9tIG9iamVjdCBsaXRlcmFsLCBiZWluZyBzdXJlIGl0IGlzIGFuXG4gKiAgYWN0dWFsIHByb3BlcnR5IChub3QgaW5oZXJpdGVkKSwgd2l0aCBhIGRlZmF1bHQgaWYgbm90IGZvdW5kLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGtleSB0byBsb29rIHVwLlxuICogQHBhcmFtIHtPcHRpb25MaXN0fSBsb29rdXAgICBUaGUgbGlzdCBvZiBvcHRpb25zIHRvIGNoZWNrLlxuICogQHBhcmFtIHthbnl9IGRlZiAgICAgICAgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpZiB0aGUga2V5IGlzbid0IGZvdW5kLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9va3VwKG5hbWU6IHN0cmluZywgbG9va3VwOiBPcHRpb25MaXN0LCBkZWY6IGFueSA9IG51bGwpIHtcbiAgcmV0dXJuIChsb29rdXAuaGFzT3duUHJvcGVydHkobmFtZSkgPyBsb29rdXBbbmFtZV0gOiBkZWYpO1xufVxuXG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgYSBsaXN0IHNvcnRlZCBieSBhIG51bWVyaWMgcHJpb3JpdHlcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBQcmlvcml0aXplZExpc3RJdGVtPERhdGFDbGFzcz4gaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIERhdGFDbGFzcyAgIFRoZSBjbGFzcyBvZiBkYXRhIHN0b3JlZCBpbiB0aGUgaXRlbVxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpb3JpdGl6ZWRMaXN0SXRlbTxEYXRhQ2xhc3M+IHtcblxuICAvKipcbiAgICogVGhlIHByaW9yaXR5IG9mIHRoaXMgaXRlbVxuICAgKi9cbiAgcHJpb3JpdHk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGRhdGEgZm9yIHRoZSBsaXN0IGl0ZW1cbiAgICovXG4gIGl0ZW06IERhdGFDbGFzcztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgUHJpb3JpdGl6ZWRMaXN0PERhdGFDbGFzcz4gY2xhc3NcbiAqXG4gKiBAdGVtcGxhdGUgRGF0YUNsYXNzICAgVGhlIGNsYXNzIG9mIGRhdGEgc3RvcmVkIGluIHRoZSBsaXN0XG4gKi9cblxuZXhwb3J0IGNsYXNzIFByaW9yaXRpemVkTGlzdDxEYXRhQ2xhc3M+IHtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcHJpb3JpdHkgZm9yIGl0ZW1zIGFkZGVkIHRvIHRoZSBsaXN0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIERFRkFVTFRQUklPUklUWTogbnVtYmVyID0gNTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgaXRlbXMsIHNvcnRlZCBieSBwcmlvcml0eSAoc21hbGxlc3QgbnVtYmVyIGZpcnN0KVxuICAgKi9cbiAgcHJvdGVjdGVkIGl0ZW1zOiBQcmlvcml0aXplZExpc3RJdGVtPERhdGFDbGFzcz5bXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYWtlIHRoZSBsaXN0IGl0ZXJhYmxlLCBhbmQgcmV0dXJuIHRoZSBkYXRhIGZvciB0aGUgaXRlbXMgaW4gdGhlIGxpc3RcbiAgICpcbiAgICogQHJldHVybiB7e25leHQ6IEZ1bmN0aW9ufX0gIFRoZSBvYmplY3QgY29udGFpbmluZyB0aGUgaXRlcmF0b3IncyBuZXh0KCkgZnVuY3Rpb25cbiAgICovXG4gIHB1YmxpYyBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYXRvcjxQcmlvcml0aXplZExpc3RJdGVtPERhdGFDbGFzcz4+IHtcbiAgICBsZXQgaSA9IDA7XG4gICAgbGV0IGl0ZW1zID0gdGhpcy5pdGVtcztcbiAgICByZXR1cm4ge1xuICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmpzZG9jLXJlcXVpcmUgKi9cbiAgICAgIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8UHJpb3JpdGl6ZWRMaXN0SXRlbTxEYXRhQ2xhc3M+PiB7XG4gICAgICAgIHJldHVybiB7dmFsdWU6IGl0ZW1zW2krK10sIGRvbmU6IChpID4gaXRlbXMubGVuZ3RoKX07XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gaXRlbSB0byB0aGUgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGFDbGFzc30gaXRlbSAgIFRoZSBkYXRhIGZvciB0aGUgaXRlbSB0byBiZSBhZGRlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gcHJpb3JpdHkgIFRoZSBwcmlvcml0eSBmb3IgdGhlIGl0ZW1cbiAgICogQHJldHVybiB7RGF0YUNsYXNzfSAgICAgICBUaGUgZGF0YSBpdHNlbGZcbiAgICovXG4gIHB1YmxpYyBhZGQoaXRlbTogRGF0YUNsYXNzLCBwcmlvcml0eTogbnVtYmVyID0gUHJpb3JpdGl6ZWRMaXN0LkRFRkFVTFRQUklPUklUWSk6IERhdGFDbGFzcyB7XG4gICAgbGV0IGkgPSB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICBkbyB7XG4gICAgICBpLS07XG4gICAgfSB3aGlsZSAoaSA+PSAwICYmIHByaW9yaXR5IDwgdGhpcy5pdGVtc1tpXS5wcmlvcml0eSk7XG4gICAgdGhpcy5pdGVtcy5zcGxpY2UoaSArIDEsIDAsIHtpdGVtOiBpdGVtLCBwcmlvcml0eTogcHJpb3JpdHl9KTtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYW4gaXRlbSBmcm9tIHRoZSBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSB7RGF0YUNsYXNzfSBpdGVtICAgVGhlIGRhdGEgZm9yIHRoZSBpdGVtIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHB1YmxpYyByZW1vdmUoaXRlbTogRGF0YUNsYXNzKSB7XG4gICAgbGV0IGkgPSB0aGlzLml0ZW1zLmxlbmd0aDtcbiAgICBkbyB7XG4gICAgICBpLS07XG4gICAgfSB3aGlsZSAoaSA+PSAwICYmIHRoaXMuaXRlbXNbaV0uaXRlbSAhPT0gaXRlbSk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgdGhpcy5pdGVtcy5zcGxpY2UoaSwgMSk7XG4gICAgfVxuICB9XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudCBGdW5jdGlvbkxpc3Qgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1ByaW9yaXRpemVkTGlzdCwgUHJpb3JpdGl6ZWRMaXN0SXRlbX0gZnJvbSAnLi9Qcmlvcml0aXplZExpc3QuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgRnVuY3Rpb25MaXN0SXRlbSBpbnRlcmZhY2UgKGV4dGVuZHMgUHJpb3JpdGl6ZWRMaXN0SXRlbTxGdW5jdGlvbj4pXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBGdW5jdGlvbkxpc3RJdGVtIGV4dGVuZHMgUHJpb3JpdGl6ZWRMaXN0SXRlbTxGdW5jdGlvbj4ge31cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgRnVuY3Rpb25MaXN0IGNsYXNzIChleHRlbmRzIFByaW9yaXRpemVkTGlzdDxGdW5jdGlvbj4pXG4gKi9cblxuZXhwb3J0IGNsYXNzIEZ1bmN0aW9uTGlzdCBleHRlbmRzIFByaW9yaXRpemVkTGlzdDxGdW5jdGlvbj4ge1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgZnVuY3Rpb25zIGluIHRoZSBsaXN0IChpbiBwcmlvcml0aXplZCBvcmRlciksXG4gICAqICAgcGFzc2luZyB0aGUgZ2l2ZW4gZGF0YSB0byB0aGUgZnVuY3Rpb25zLiAgSWYgYW55IHJldHVyblxuICAgKiAgIGZhbHNlLCB0aGUgbGlzdCBpcyB0ZXJtaW5hdGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueVtdfSBkYXRhICBUaGUgYXJyYXkgb2YgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uc1xuICAgKiBAcmV0dXJuIHtib29sZWFufSAgICBGYWxzZSBpZiBhbnkgZnVuY3Rpb24gc3RvcHBlZCB0aGUgbGlzdCBieVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuaW5nIGZhbHNlLCB0cnVlIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGV4ZWN1dGUoLi4uZGF0YTogYW55W10pOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcykge1xuICAgICAgbGV0IHJlc3VsdCA9IGl0ZW0uaXRlbSguLi5kYXRhKTtcbiAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogRXhlY3V0ZXMgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgbGlzdCAoaW4gcHJpb3JpdGl6ZWQgb3JkZXIpIGFzeW5jaHJvbm91c2x5LFxuICAgKiAgIHBhc3NpbmcgdGhlIGdpdmVuIGRhdGEgdG8gdGhlIGZ1bmN0aW9ucywgYW5kIGRvaW5nIHRoZSBuZXh0IGZ1bmN0aW9uXG4gICAqICAgb25seSB3aGVuIHRoZSBwcmV2aW91cyBvbmUgY29tcGxldGVzLiAgSWYgdGhlIGZ1bmN0aW9uIHJldHVybnMgYVxuICAgKiAgIFByb21pc2UsIHRoZW4gdXNlIHRoYXQgdG8gY29udHJvbCB0aGUgZmxvdy4gIE90aGVyd2lzZSwgaWYgdGhlXG4gICAqICAgZnVuY3Rpb24gcmV0dXJucyBmYWxzZSwgdGhlIGxpc3QgaXMgdGVybWluYXRlZC5cbiAgICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGEgUHJvbWlzZS4gIElmIGFueSBmdW5jdGlvbiBpbiB0aGUgbGlzdCBmYWlscyxcbiAgICogICB0aGUgcHJvbWlzZSBmYWlscy4gIElmIGFueSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLCB0aGUgcHJvbWlzZVxuICAgKiAgIHN1Y2NlZWRzLCBidXQgcGFzc2VzIGZhbHNlIGFzIGl0cyBhcmd1bWVudC4gIE90aGVyd2lzZSBpdCBzdWNjZWVkc1xuICAgKiAgIGFuZCBwYXNzZXMgdHJ1ZS5cbiAgICpcbiAgICogQHBhcmFtIHthbnlbXX0gZGF0YSAgVGhlIGFycmF5IG9mIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBmdW5jdGlvbnNcbiAgICogQHJldHVybiB7UHJvbWlzZX0gICAgVGhlIHByb21pc2UgdGhhdCBpcyBzYXRpc2ZpZWQgd2hlbiB0aGUgZnVuY3Rpb25cbiAgICogICAgICAgICAgICAgICAgICAgICAgIGxpc3QgY29tcGxldGVzICh3aXRoIGFyZ3VtZW50IHRydWUgb3IgZmFsc2VcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIHNvbWUgZnVuY3Rpb24gcmV0dXJuZWRcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGZhbHNlIG9yIG5vdCkuXG4gICAqL1xuICBwdWJsaWMgYXN5bmNFeGVjdXRlKC4uLmRhdGE6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IGkgPSAtMTtcbiAgICBsZXQgaXRlbXMgPSB0aGlzLml0ZW1zO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgob2s6IEZ1bmN0aW9uLCBmYWlsOiBGdW5jdGlvbikgPT4ge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWN1dGUoKSB7XG4gICAgICAgIHdoaWxlICgrK2kgPCBpdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gaXRlbXNbaV0uaXRlbSguLi5kYXRhKTtcbiAgICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgcmVzdWx0LnRoZW4oZXhlY3V0ZSkuY2F0Y2goZXJyID0+IGZhaWwoZXJyKSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXN1bHQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBvayhmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIG9rKHRydWUpO1xuICAgICAgfSkoKTtcbiAgICB9KTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIGludGVyZmFjZSBhbmQgYWJzdHJhY3QgY2xhc3MgZm9yIHRoZSBJbnB1dEpheFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtNYXRoRG9jdW1lbnR9IGZyb20gJy4vTWF0aERvY3VtZW50LmpzJztcbmltcG9ydCB7TWF0aEl0ZW0sIFByb3RvSXRlbX0gZnJvbSAnLi9NYXRoSXRlbS5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4vTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7TW1sRmFjdG9yeX0gZnJvbSAnLi9NbWxUcmVlL01tbEZhY3RvcnkuanMnO1xuaW1wb3J0IHt1c2VyT3B0aW9ucywgZGVmYXVsdE9wdGlvbnMsIE9wdGlvbkxpc3R9IGZyb20gJy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5pbXBvcnQge0Z1bmN0aW9uTGlzdH0gZnJvbSAnLi4vdXRpbC9GdW5jdGlvbkxpc3QuanMnO1xuaW1wb3J0IHtET01BZGFwdG9yfSBmcm9tICcuLi9jb3JlL0RPTUFkYXB0b3IuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgSW5wdXRKYXggaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElucHV0SmF4PE4sIFQsIEQ+IHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbnB1dCBqYXggc3ViY2xhc3MgKGUuZywuICdUZVgnKVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaW5wdXQgamF4IHByb2Nlc3NlcyBzdHJpbmcgYXJyYXlzIG9yIERPTSBub2Rlc1xuICAgKiAoVGVYIGFuZCBBc2NpaU1hdGggcHJvY2VzcyBzdHJpbmdzLCBNYXRoTUwgcHJvY2Vzc2VzIERPTSBub2RlcylcbiAgICovXG4gIHByb2Nlc3NTdHJpbmdzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9ucyBmb3IgdGhpcyBpbnB1dCBqYXggaW5zdGFuY2VcbiAgICovXG4gIG9wdGlvbnM6IE9wdGlvbkxpc3Q7XG5cbiAgLyoqXG4gICAqIExpc3RzIG9mIHByZS0gYW5kIHBvc3QtZmlsdGVycyB0byBjYWxsIGJlZm9yZSBhbmQgYWZ0ZXIgcHJvY2Vzc2luZyB0aGUgaW5wdXRcbiAgICovXG4gIHByZUZpbHRlcnM6IEZ1bmN0aW9uTGlzdDtcbiAgcG9zdEZpbHRlcnM6IEZ1bmN0aW9uTGlzdDtcblxuICAvKipcbiAgICogVGhlIERPTSBhZGFwdG9yIGZvciBtYW5hZ2luZyBIVE1MIGVsZW1lbnRzXG4gICAqL1xuICBhZGFwdG9yOiBET01BZGFwdG9yPE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgTW1sRmFjdG9yeSBmb3IgdGhpcyBpbnB1dCBqYXhcbiAgICovXG4gIG1tbEZhY3Rvcnk6IE1tbEZhY3Rvcnk7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RE9NQWRhcHRvcn0gYWRhcHRvciBUaGUgYWRhcHRvciB0byB1c2UgaW4gdGhpcyBqYXhcbiAgICovXG4gIHNldEFkYXB0b3IoYWRhcHRvcjogRE9NQWRhcHRvcjxOLCBULCBEPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TW1sRmFjdG9yeX0gbW1sRmFjdG9yeSBUaGUgTW1sRmFjdG9yeSB0byB1c2UgaW4gdGhpcyBqYXhcbiAgICovXG4gIHNldE1tbEZhY3RvcnkobW1sRmFjdG9yeTogTW1sRmFjdG9yeSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIERvIGFueSBpbml0aWFsaXphdGlvbiB0aGF0IGRlcGVuZHMgb24gdGhlIGRvY3VtZW50IGJlaW5nIHNldCB1cFxuICAgKi9cbiAgaW5pdGlhbGl6ZSgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXNldCBhbnkgbmVlZGVkIGZlYXR1cmVzIG9mIHRoZSBpbnB1dCBqYXhcbiAgICpcbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyAgIFRoZSBhcmd1bWVudHMgbmVlZGVkIGJ5IHRoZSByZXNldCBvcGVyYXRpb25cbiAgICovXG4gIHJlc2V0KC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcblxuICAvKipcbiAgICogRmluZHMgdGhlIG1hdGggd2l0aGluIHRoZSBET00gb3IgdGhlIGxpc3Qgb2Ygc3RyaW5nc1xuICAgKlxuICAgKiBAcGFyYW0ge04gfCBzdHJpbmdbXX0gd2hpY2ggICBUaGUgZWxlbWVudCBvciBhcnJheSBvZiBzdHJpbmdzIHRvIGJlIHNlYXJjaGVkIGZvciBtYXRoXG4gICAqIEBwYXJhbSB7T3B0aW9uTGlzdH0gb3B0aW9ucyAgIFRoZSBvcHRpb25zIGZvciB0aGUgc2VhcmNoLCBpZiBhbnlcbiAgICogQHJldHVybiB7UHJvdG9JdGVtW119ICAgICAgICAgQXJyYXkgb2YgcHJvdG8gbWF0aCBpdGVtcyBmb3VuZCAoZnVydGhlciBwcm9jZXNzZWQgYnkgdGhlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyIHRvIHByb2R1Y2UgYWN0dWFsIE1hdGhJdGVtIG9iamVjdHMpXG4gICAqL1xuICBmaW5kTWF0aCh3aGljaDogTiB8IHN0cmluZ1tdLCBvcHRpb25zPzogT3B0aW9uTGlzdCk6IFByb3RvSXRlbTxOLCBUPltdO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBtYXRoIGluIGEgbWF0aCBpdGVtIGludG8gdGhlIGludGVybmFsIGZvcm1hdFxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhJdGVtfSBtYXRoICBUaGUgTWF0aEl0ZW0gd2hvc2UgbWF0aCBjb250ZW50IGlzIHRvIHByb2Nlc3NlZFxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgVGhlIE1hdGhEb2N1bWVudCBmb3IgdGhpcyBpbnB1dCBqYXguXG4gICAqIEByZXR1cm4ge01tbE5vZGV9ICAgICAgIFRoZSByZXN1bHRpbmcgaW50ZXJuYWwgbm9kZSB0cmVlIGZvciB0aGUgbWF0aFxuICAgKi9cbiAgY29tcGlsZShtYXRoOiBNYXRoSXRlbTxOLCBULCBEPiwgZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPik6IE1tbE5vZGU7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBhYnN0cmFjdCBJbnB1dEpheCBjbGFzc1xuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SW5wdXRKYXg8TiwgVCwgRD4gaW1wbGVtZW50cyBJbnB1dEpheDxOLCBULCBEPiB7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBpbnB1dCBqYXhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTkFNRTogc3RyaW5nID0gJ2dlbmVyaWMnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgaW5wdXQgamF4XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE9QVElPTlM6IE9wdGlvbkxpc3QgPSB7fTtcblxuICAvKipcbiAgICogVGhlIGFjdHVhbCBvcHRpb25zIHN1cHBsaWVkIHRvIHRoZSBpbnB1dCBqYXhcbiAgICovXG4gIHB1YmxpYyBvcHRpb25zOiBPcHRpb25MaXN0O1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRvIHJ1biBvbiB0aGUgVGVYIHN0cmluZyBiZWZvcmUgaXQgaXMgcHJvY2Vzc2VkXG4gICAqL1xuICBwdWJsaWMgcHJlRmlsdGVyczogRnVuY3Rpb25MaXN0O1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRvIHJ1biBvbiB0aGUgZ2VuZXJhdGVkIE1hdGhNTCBhZnRlciB0aGUgVGVYIHN0cmluZyBpcyBwcm9jZXNzZWRcbiAgICovXG4gIHB1YmxpYyBwb3N0RmlsdGVyczogRnVuY3Rpb25MaXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgRE9NQWRhcHRvciBmb3IgdGhlIE1hdGhEb2N1bWVudCBmb3IgdGhpcyBpbnB1dCBqYXhcbiAgICovXG4gIHB1YmxpYyBhZGFwdG9yOiBET01BZGFwdG9yPE4sIFQsIEQ+ID0gbnVsbDsgIC8vIHNldCBieSB0aGUgaGFuZGxlclxuICAvKipcbiAgICogVGhlIE1hdGhNTCBub2RlIGZhY3RvcnlcbiAgICovXG4gIHB1YmxpYyBtbWxGYWN0b3J5OiBNbWxGYWN0b3J5ID0gbnVsbDsgICAgICAgIC8vIHNldCBieSB0aGUgaGFuZGxlclxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgIFRoZSBvcHRpb25zIHRvIGFwcGx5IHRvIHRoaXMgaW5wdXQgamF4XG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9uTGlzdCA9IHt9KSB7XG4gICAgbGV0IENMQVNTID0gdGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgQWJzdHJhY3RJbnB1dEpheDtcbiAgICB0aGlzLm9wdGlvbnMgPSB1c2VyT3B0aW9ucyhkZWZhdWx0T3B0aW9ucyh7fSwgQ0xBU1MuT1BUSU9OUyksIG9wdGlvbnMpO1xuICAgIHRoaXMucHJlRmlsdGVycyA9IG5ldyBGdW5jdGlvbkxpc3QoKTtcbiAgICB0aGlzLnBvc3RGaWx0ZXJzID0gbmV3IEZ1bmN0aW9uTGlzdCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIFRoZSBuYW1lIG9mIHRoaXMgaW5wdXQgamF4IGNsYXNzXG4gICAqL1xuICBwdWJsaWMgZ2V0IG5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEFic3RyYWN0SW5wdXRKYXgpLk5BTUU7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0QWRhcHRvcihhZGFwdG9yOiBET01BZGFwdG9yPE4sIFQsIEQ+KSB7XG4gICAgdGhpcy5hZGFwdG9yID0gYWRhcHRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRNbWxGYWN0b3J5KG1tbEZhY3Rvcnk6IE1tbEZhY3RvcnkpIHtcbiAgICB0aGlzLm1tbEZhY3RvcnkgPSBtbWxGYWN0b3J5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcmVzZXQoLi4uX2FyZ3M6IGFueVtdKSB7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIFRydWUgbWVhbnMgZmluZCBtYXRoIGluIHN0cmluZyBhcnJheSwgZmFsc2UgbWVhbnMgaW4gRE9NIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvY2Vzc1N0cmluZ3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZmluZE1hdGgoX25vZGU6IE4gfCBzdHJpbmdbXSwgX29wdGlvbnM/OiBPcHRpb25MaXN0KSB7XG4gICAgcmV0dXJuIFtdIGFzIFByb3RvSXRlbTxOLCBUPltdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNvbXBpbGUobWF0aDogTWF0aEl0ZW08TiwgVCwgRD4sIGRvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pOiBNbWxOb2RlO1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlIGEgc2V0IG9mIGZpbHRlcnMsIHBhc3NpbmcgdGhlbSB0aGUgTWF0aEl0ZW0gYW5kIGFueSBuZWVkZWQgZGF0YSxcbiAgICogIGFuZCByZXR1cm4gdGhlIChwb3NzaWJseSBtb2RpZmllZCkgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9uTGlzdH0gZmlsdGVycyAgIFRoZSBsaXN0IG9mIGZ1bmN0aW9ucyB0byBiZSBwZXJmb3JtZWRcbiAgICogQHBhcmFtIHtNYXRoSXRlbX0gbWF0aCAgICAgICAgICBUaGUgbWF0aCBpdGVtIHRoYXQgaXMgYmVpbmcgcHJvY2Vzc2VkXG4gICAqIEBwYXJhbSB7TWF0aERvY3VtZW50fSBkb2N1bWVudCAgVGhlIG1hdGggZG9jdW1lbnQgY29udGFpbmcgdGhlIG1hdGggaXRlbVxuICAgKiBAcGFyYW0ge2FueX0gZGF0YSAgICAgICAgICAgICAgIFdoYXRldmVyIG90aGVyIGRhdGEgaXMgbmVlZGVkXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgICAgVGhlIChwb3NzaWJseSBtb2RpZmllZCkgZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGV4ZWN1dGVGaWx0ZXJzKFxuICAgIGZpbHRlcnM6IEZ1bmN0aW9uTGlzdCwgbWF0aDogTWF0aEl0ZW08TiwgVCwgRD4sXG4gICAgZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPiwgZGF0YTogYW55XG4gICk6IGFueSB7XG4gICAgbGV0IGFyZ3MgPSB7bWF0aDogbWF0aCwgZG9jdW1lbnQ6IGRvY3VtZW50LCBkYXRhOiBkYXRhfTtcbiAgICBmaWx0ZXJzLmV4ZWN1dGUoYXJncyk7XG4gICAgcmV0dXJuIGFyZ3MuZGF0YTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEludGVyZmFjZXMgYW5kIGFic3RyYWN0IGNsYXNzZXMgZm9yIEZpbmRNYXRoIG9iamVjdHNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7dXNlck9wdGlvbnMsIGRlZmF1bHRPcHRpb25zLCBPcHRpb25MaXN0fSBmcm9tICcuLi91dGlsL09wdGlvbnMuanMnO1xuaW1wb3J0IHtQcm90b0l0ZW19IGZyb20gJy4vTWF0aEl0ZW0uanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgRmluZE1hdGggaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIF9EICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaW5kTWF0aDxOLCBULCBfRD4ge1xuICAvKipcbiAgICogT25lIG9mIHR3byBwb3NzaWJpbGl0aWVzOiAgTG9vayB0aHJvdWdoIGEgRE9NIGVsZW1lbnQsXG4gICAqICAgb3IgbG9vayB0aHJvdWdoIGFuIGFycmF5IG9mIHN0cmluZ3MgZm9yIGRlbGltaXRlZCBtYXRoLlxuICAgKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICBUaGUgbm9kZSB0byBzZWFyY2ggZm9yIG1hdGhcbiAgICogQHJldHVybiB7UHJvdG9JdGVtPE4sIFQ+W119XG4gICAqL1xuICBmaW5kTWF0aChub2RlOiBOKTogUHJvdG9JdGVtPE4sIFQ+W107XG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzdHJpbmdzICAgIFRoZSBzdHJpbmdzIHRvIHNlYXJjaCBmb3IgbWF0aFxuICAgKiBAcmV0dXJuIHtQcm90b0l0ZW08TiwgVD5bXX1cbiAgICovXG4gIGZpbmRNYXRoKHN0cmluZ3M6IHN0cmluZ1tdKTogUHJvdG9JdGVtPE4sIFQ+W107XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBGaW5kTWF0aCBhYnN0cmFjdCBjbGFzc1xuICovXG5cbi8qKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGaW5kTWF0aDxOLCBULCBEPiBpbXBsZW1lbnRzIEZpbmRNYXRoPE4sIFQsIEQ+IHtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgb3B0aW9ucyBmb3IgRmluZE1hdGhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT1BUSU9OUzogT3B0aW9uTGlzdCA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIG9wdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCBvcHRpb25zOiBPcHRpb25MaXN0O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgIFRoZSB1c2VyIG9wdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2VcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbkxpc3QpIHtcbiAgICBsZXQgQ0xBU1MgPSB0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBBYnN0cmFjdEZpbmRNYXRoO1xuICAgIHRoaXMub3B0aW9ucyA9IHVzZXJPcHRpb25zKGRlZmF1bHRPcHRpb25zKHt9LCBDTEFTUy5PUFRJT05TKSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogTG9jYXRlIG1hdGggaW4gYW4gRWxlbWVudCBvciBhIHN0cmluZyBhcnJheTtcbiAgICpcbiAgICogQHBhcmFtIHtFbGVtZW50IHwgc3RyaW5nW119IHdoZXJlICBUaGUgbm9kZSBvciBzdHJpbmcgYXJyYXkgdG8gc2VhcmNoIGZvciBtYXRoXG4gICAqIEByZXR1cm4ge1Byb3RvSXRlbVtdfSAgICAgICAgICAgICAgVGhlIGFycmF5IG9mIHByb3RvIG1hdGggaXRlbXMgZm91bmRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBmaW5kTWF0aCh3aGVyZTogTiB8IHN0cmluZ1tdKTogUHJvdG9JdGVtPE4sIFQ+W107XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyBzb21lIHN0cmluZyB1dGlsaXR5IGZ1bmN0aW9uc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuXG4vKipcbiAqIFNvcnQgc3RyaW5ncyBieSBsZW5ndGhcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYSAgRmlyc3Qgc3RyaW5nIHRvIGJlIGNvbXBhcmVkXG4gKiBAcGFyYW0ge3N0cmluZ30gYiAgU2Vjb25kIHN0cmluZyB0byBiZSBjb21wYXJlZFxuICogQHJldHVybiB7bnVtYmVyfSAgLTEgaWQgYSA8IGIsIDAgb2YgYSA9PT0gYiwgMSBpZiBhID4gYlxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydExlbmd0aChhOiBzdHJpbmcsIGI6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBhLmxlbmd0aCAhPT0gYi5sZW5ndGggPyBiLmxlbmd0aCAtIGEubGVuZ3RoIDogYSA9PT0gYiA/IDAgOiBhIDwgYiA/IC0xIDogMTtcbn1cblxuLyoqXG4gKiBRdW90ZSBhIHN0cmluZyBmb3IgdXNlIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgVGhlIHRleHQgd2hvc2UgcmVnZXggY2hhcmFjdGVycyBhcmUgdG8gYmUgcXVvdGVkXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgcXVvdGVkIHN0cmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcXVvdGVQYXR0ZXJuKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoLyhbXFxeJCgpe30rKj9cXC18XFxbXFxdXFw6XFxcXF0pL2csICdcXFxcJDEnKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgVVRGLTggc3RyaW5nIHRvIGFuIGFycmF5IG9mIHVuaWNvZGUgY29kZSBwb2ludHNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgVGhlIHN0cmluZyB0byBiZSB0dXJuZWQgaW50byB1bmljb2RlIHBvc2l0aW9uc1xuICogQHJldHVybiB7bnVtYmVyW119ICBBcnJheSBvZiBudW1iZXJzIHJlcHJlc2VudGluZyB0aGUgc3RyaW5nJ3MgdW5pY29kZSBjaGFyYWN0ZXIgcG9zaXRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmljb2RlQ2hhcnModGV4dDogc3RyaW5nKTogbnVtYmVyW10ge1xuICByZXR1cm4gQXJyYXkuZnJvbSh0ZXh0KS5tYXAoKGMpID0+IGMuY29kZVBvaW50QXQoMCkpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gYXJyYXkgb2YgdW5pY29kZSBjb2RlIHBvaW50cyB0byBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7bnVtYmVyW119IGRhdGEgICBUaGUgYXJyYXkgb2YgdW5pY29kZSBjb2RlIHBvaW50c1xuICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgIFRoZSBzdHJpbmcgY29uc2lzdGluZyBvZiB0aGUgY2hhcmFjdGVycyBhdCB0aG9zZSBwb2ludHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaWNvZGVTdHJpbmcoZGF0YTogbnVtYmVyW10pOiBzdHJpbmcge1xuICByZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQoLi4uZGF0YSk7XG59XG5cbi8qKlxuICogVGVzdCBpZiBhIHZhbHVlIGlzIGEgcGVyY2VudGFnZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB4ICAgVGhlIHN0cmluZyB0byB0ZXN0XG4gKiBAcmV0dXJuIHtib29sZWFufSAgIFRydWUgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggYSBwZXJjZW50IHNpZ25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUGVyY2VudCh4OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuICEheC5tYXRjaCgvJVxccyokLyk7XG59XG5cbi8qKlxuICogU3BsaXQgYSBzcGFjZS1zZXBhcmF0ZWQgc3RyaW5nIG9mIHZhbHVlc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB4ICAgVGhlIHN0cmluZyB0byBiZSBzcGxpdFxuICogQHJldHVybiB7c3RyaW5nW119ICBUaGUgbGlzdCBvZiB3aGl0ZS1zcGFjZS1zZXBhcmF0ZWQgXCJ3b3Jkc1wiIGluIHRoZSBzdHJpbmdcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0KHg6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIHgudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIGludGVyZmFjZSBhbmQgYWJzdHJhY3QgY2xhc3MgZm9yIE1hdGhJdGVtIG9iamVjdHNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7TWF0aERvY3VtZW50fSBmcm9tICcuL01hdGhEb2N1bWVudC5qcyc7XG5pbXBvcnQge0lucHV0SmF4fSBmcm9tICcuL0lucHV0SmF4LmpzJztcbmltcG9ydCB7T3B0aW9uTGlzdH0gZnJvbSAnLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7TW1sTm9kZX0gZnJvbSAnLi9NbWxUcmVlL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgTG9jYXRpb24gZ2l2ZXMgYSBsb2NhdGlvbiBvZiBhIHBvc2l0aW9uIGluIGEgZG9jdW1lbnRcbiAqICAoZWl0aGVyIGEgbm9kZSBhbmQgY2hhcmFjdGVyIHBvc2l0aW9uIHdpdGhpbiBpdCwgb3JcbiAqICBhbiBpbmRleCBpbnRvIGEgc3RyaW5nIGFycmF5LCB0aGUgY2hhcmFjdGVyIHBvc2l0aW9uIHdpdGhpblxuICogIHRoZSBzdHJpbmcsIGFuZCB0aGUgZGVsaW1pdGVyIGF0IHRoYXQgbG9jYXRpb24pLlxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgTG9jYXRpb248TiwgVD4gPSB7XG4gIGk/OiBudW1iZXI7XG4gIG4/OiBudW1iZXI7XG4gIGRlbGltPzogc3RyaW5nO1xuICBub2RlPzogTiB8IFQ7XG59O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgTWV0cmljcyBvYmplY3QgaW5jbHVkZXMgdGhlIGRhdGEgbmVlZGVkIHRvIHR5cGVzZXRcbiAqICBhIE1hdGhJdGVtLlxuICovXG5leHBvcnQgdHlwZSBNZXRyaWNzID0ge1xuICBlbTogbnVtYmVyO1xuICBleDogbnVtYmVyO1xuICBjb250YWluZXJXaWR0aDogbnVtYmVyO1xuICBsaW5lV2lkdGg6IG51bWJlcjtcbiAgc2NhbGU6IG51bWJlcjtcbn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBNYXRoSXRlbSBpbnRlcmZhY2VcbiAqXG4gKiAgVGhlIE1hdGhJdGVtIGlzIHRoZSBvYmplY3QgdGhhdCBob2xkcyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgYVxuICogIHBhcnRpY3VsYXIgZXhwcmVzc2lvbiBvbiB0aGUgcGFnZSwgaW5jbHVkaW5nIHBvaW50ZXJzIHRvXG4gKiAgd2hlcmUgaXQgaXMgaW4gdGhlIGRvY3VtZW50LCBpdHMgY29tcGlsZWQgdmVyc2lvbiAoaW4gdGhlXG4gKiAgaW50ZXJuYWwgZm9ybWF0KSwgaXRzIHR5cGVzZXQgdmVyc2lvbiwgaXRzIGJvdW5kaW5nIGJveCxcbiAqICBhbmQgc28gb24uXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdGhJdGVtPE4sIFQsIEQ+IHtcbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBleHByZXNzaW9uIHRvIGJlIHByb2Nlc3NlZFxuICAgKi9cbiAgbWF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgamF4IHVzZWQgdG8gcHJvY2VzcyB0aGUgbWF0aFxuICAgKi9cbiAgaW5wdXRKYXg6IElucHV0SmF4PE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBtYXRoIGlzIGluIGRpc3BsYXkgbW9kZSBvciBpbmxpbmUgbW9kZVxuICAgKi9cbiAgZGlzcGxheTogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGl0ZW0gaXMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIgb3Igbm90XG4gICAqL1xuICBpc0VzY2FwZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFydCBhbmQgZW5kaW5nIGxvY2F0aW9ucyBpbiB0aGUgZG9jdW1lbnQgb2ZcbiAgICogICB0aGlzIGV4cHJlc3Npb25cbiAgICovXG4gIHN0YXJ0OiBMb2NhdGlvbjxOLCBUPjtcbiAgZW5kOiBMb2NhdGlvbjxOLCBUPjtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIGZvcm1hdCBmb3IgdGhpcyBleHByZXNzaW9uIChvbmNlIGNvbXBpbGVkKVxuICAgKi9cbiAgcm9vdDogTW1sTm9kZTtcblxuICAvKipcbiAgICogVGhlIHR5cGVzZXQgdmVyc2lvbiBvZiB0aGUgZXhwcmVzc2lvbiAob25jZSB0eXBlc2V0KVxuICAgKi9cbiAgdHlwZXNldFJvb3Q6IE47XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWMgaW5mb3JtYXRpb24gYXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBtYXRoXG4gICAqICh0aGUgZW0tc2l6ZSwgc2NhbGluZyBmYWN0b3IsIGV0Yy4pXG4gICAqL1xuICBtZXRyaWNzOiBNZXRyaWNzO1xuXG4gIC8qKlxuICAgKiBFeHRyYSBkYXRhIG5lZWRlZCBieSB0aGUgaW5wdXQgb3Igb3V0cHV0IGpheCwgYXMgbmVlZGVkXG4gICAqL1xuICBpbnB1dERhdGE6IE9wdGlvbkxpc3Q7XG4gIG91dHB1dERhdGE6IE9wdGlvbkxpc3Q7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gdGhlIHJlbmRlckFjdGlvbnMgb24gdGhlIGRvY3VtZW50XG4gICAqXG4gICAqIEBwYXJhbSB7TWF0aERvY3VtZW50fSBkb2N1bWVudCAgVGhlIE1hdGhEb2N1bWVudCBpbiB3aGljaCB0aGUgbWF0aCByZXNpZGVzXG4gICAqL1xuICByZW5kZXIoZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlcmVuZGVycyBhbiBhbHJlYWR5IHJlbmRlcmVkIGl0ZW0gYW5kIGluc2VydHMgaXQgaW50byB0aGUgZG9jdW1lbnRcbiAgICpcbiAgICogQHBhcmFtIHtNYXRoRG9jdW1lbnR9IGRvY3VtZW50ICBUaGUgTWF0aERvY3VtZW50IGluIHdoaWNoIHRoZSBtYXRoIHJlc2lkZXNcbiAgICogQHBhcmFtIHtudW1iZXI9fSBzdGFydCAgICAgICAgICBUaGUgc3RhdGUgdG8gc3RhcnQgcmVyZW5kZXJpbmcgYXQgKGRlZmF1bHQgPSBSRVJFTkRFUilcbiAgICovXG4gIHJlcmVuZGVyKGRvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4sIHN0YXJ0PzogbnVtYmVyKTogdm9pZDtcblxuICAvKipcbiAgICogQ29udmVydHMgdGhlIGV4cHJlc3Npb24gYnkgY2FsbGluZyB0aGUgcmVuZGVyIGFjdGlvbnMgdW50aWwgdGhlIHN0YXRlIG1hdGNoZXMgdGhlIGVuZCBzdGF0ZVxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgIFRoZSBNYXRoRG9jdW1lbnQgaW4gd2hpY2ggdGhlIG1hdGggcmVzaWRlc1xuICAgKiBAcGFyYW0ge251bWJlcj19IGVuZCAgICAgICAgICAgIFRoZSBzdGF0ZSB0byBlbmQgcmVyZW5kZXJpbmcgYXQgKGRlZmF1bHQgPSBMQVNUKVxuICAgKi9cbiAgY29udmVydChkb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+LCBlbmQ/OiBudW1iZXIpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgZXhwcmVzc2lvbiBpbnRvIHRoZSBpbnRlcm5hbCBmb3JtYXQgYnkgY2FsbGluZyB0aGUgaW5wdXQgamF4XG4gICAqXG4gICAqIEBwYXJhbSB7TWF0aERvY3VtZW50fSBkb2N1bWVudCAgVGhlIE1hdGhEb2N1bWVudCBpbiB3aGljaCB0aGUgbWF0aCByZXNpZGVzXG4gICAqL1xuICBjb21waWxlKGRvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0aGUgaW50ZXJuYWwgZm9ybWF0IHRvIHRoZSB0eXBlc2V0IHZlcnNpb24gYnkgY2FsbGluZyB0aGUgb3V0cHV0IGpheFxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgIFRoZSBNYXRoRG9jdW1lbnQgaW4gd2hpY2ggdGhlIG1hdGggcmVzaWRlc1xuICAgKi9cbiAgdHlwZXNldChkb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KTogdm9pZDtcblxuICAvKipcbiAgICogSW5zZXJ0cyB0aGUgdHlwZXNldCB2ZXJzaW9uIGluIHBsYWNlIG9mIHRoZSBvcmlnaW5hbCBmb3JtIGluIHRoZSBkb2N1bWVudFxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgIFRoZSBNYXRoRG9jdW1lbnQgaW4gd2hpY2ggdGhlIG1hdGggcmVzaWRlc1xuICAgKi9cbiAgdXBkYXRlRG9jdW1lbnQoZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgdGhlIHR5cGVzZXQgdmVyc2lvbiBmcm9tIHRoZSBkb2N1bWVudCwgb3B0aW9uYWxseSByZXBsYWNpbmcgdGhlIG9yaWdpbmFsXG4gICAqIGZvcm0gb2YgdGhlIGV4cHJlc3Npb24gYW5kIGl0cyBkZWxpbWl0ZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlc3RvcmUgIFRydWUgaWYgdGhlIG9yaWdpbmFsIHZlcnNpb24gaXMgdG8gYmUgcmVzdG9yZWRcbiAgICovXG4gIHJlbW92ZUZyb21Eb2N1bWVudChyZXN0b3JlOiBib29sZWFuKTogdm9pZDtcblxuICAvKipcbiAgICogU2V0cyB0aGUgbWV0cmljIGluZm9ybWF0aW9uIGZvciB0aGlzIGV4cHJlc3Npb25cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGVtICAgICAgVGhlIHNpemUgb2YgMSBlbSBpbiBwaXhlbHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGV4ICAgICAgVGhlIHNpemUgb2YgMSBleCBpbiBwaXhlbHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN3aWR0aCAgVGhlIGNvbnRhaW5lciB3aWR0aCBpbiBwaXhlbHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IGx3aWR0aCAgVGhlIGxpbmUgYnJlYWtpbmcgd2lkdGggaW4gcGl4ZWxzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZSAgIFRoZSBzY2FsaW5nIGZhY3RvciAodW5pdGxlc3MpXG4gICAqL1xuICBzZXRNZXRyaWNzKGVtOiBudW1iZXIsIGV4OiBudW1iZXIsIGN3aWR0aDogbnVtYmVyLCBsd2lkdGg6IG51bWJlciwgc2NhbGU6IG51bWJlcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldCBvciByZXR1cm4gdGhlIGN1cnJlbnQgcHJvY2Vzc2luZyBzdGF0ZSBvZiB0aGlzIGV4cHJlc3Npb24sXG4gICAqIG9wdGlvbmFsbHkgcmVzdG9yaW5nIHRoZSBkb2N1bWVudCBpZiByb2xsaW5nIGJhY2sgYW4gZXhwcmVzc2lvblxuICAgKiB0aGF0IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBkb2N1bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHN0YXRlICAgIFRoZSBzdGF0ZSB0byBzZXQgZm9yIHRoZSBleHByZXNzaW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZXN0b3JlICBUcnVlIGlmIHRoZSBvcmlnaW5hbCBmb3JtIHNob3VsZCBiZSByZXN0b3JlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkb2N1bWVudCB3aGVuIHJvbGxpbmcgYmFjayBhIHR5cGVzZXQgdmVyc2lvblxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSAgICAgICAgVGhlIGN1cnJlbnQgc3RhdGVcbiAgICovXG4gIHN0YXRlKHN0YXRlPzogbnVtYmVyLCByZXN0b3JlPzogYm9vbGVhbik6IG51bWJlcjtcblxuICAvKipcbiAgICogUmVzZXQgdGhlIGl0ZW0gdG8gaXRzIHVucHJvY2Vzc2VkIHN0YXRlXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSByZXN0b3JlICBUcnVlIGlmIHRoZSBvcmlnaW5hbCBmb3JtIHNob3VsZCBiZSByZXN0b3JlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkb2N1bWVudCB3aGVuIHJvbGxpbmcgYmFjayBhIHR5cGVzZXQgdmVyc2lvblxuICAgKi9cbiAgcmVzZXQocmVzdG9yZT86IGJvb2xlYW4pOiB2b2lkO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgUHJvdG9JdGVtIGludGVyZmFjZVxuICpcbiAqICBUaGlzIGlzIHdoYXQgaXMgcmV0dXJuZWQgYnkgdGhlIEZpbmRNYXRoIGNsYXNzLCBnaXZpbmcgdGhlIGxvY2F0aW9uXG4gKiAgb2YgbWF0aCB3aXRoaW4gdGhlIGRvY3VtZW50LCBhbmQgaXMgdXNlZCB0byBwcm9kdWNlIHRoZSBmdWxsXG4gKiAgTWF0aEl0ZW0gbGF0ZXIgKGUuZy4sIHdoZW4gdGhlIHBvc2l0aW9uIHdpdGhpbiBhIHN0cmluZyBhcnJheVxuICogIGlzIHRyYW5zbGF0ZWQgYmFjayBpbnRvIHRoZSBhY3R1YWwgbm9kZSBsb2NhdGlvbiBpbiB0aGUgRE9NKS5cbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIFByb3RvSXRlbTxOLCBUPiA9IHtcbiAgbWF0aDogc3RyaW5nOyAgICAgICAgICAgIC8vIFRoZSBtYXRoIGV4cHJlc3Npb24gaXRzZWxmXG4gIHN0YXJ0OiBMb2NhdGlvbjxOLCBUPjsgICAvLyBUaGUgc3RhcnRpbmcgbG9jYXRpb24gb2YgdGhlIG1hdGhcbiAgZW5kOiBMb2NhdGlvbjxOLCBUPjsgICAgIC8vIFRoZSBlbmRpbmcgbG9jYXRpb24gb2YgdGhlIG1hdGhcbiAgb3Blbj86IHN0cmluZzsgICAgICAgICAgIC8vIFRoZSBvcGVuaW5nIGRlbGltaXRlclxuICBjbG9zZT86IHN0cmluZzsgICAgICAgICAgLy8gVGhlIGNsb3NpbmcgZGVsaW1pdGVyXG4gIG4/OiBudW1iZXI7ICAgICAgICAgICAgICAvLyBUaGUgaW5kZXggb2YgdGhlIHN0cmluZyBpbiB3aGljaCB0aGlzIG1hdGggaXMgZm91bmRcbiAgZGlzcGxheTogYm9vbGVhbjsgICAgICAgIC8vIFRydWUgbWVhbnMgZGlzcGxheSBtb2RlLCBmYWxzZSBpcyBpbmxpbmUgbW9kZVxufTtcblxuLyoqXG4gKiAgUHJvZHVjZSBhIHByb3RvIG1hdGggaXRlbSB0aGF0IGNhbiBiZSB0dXJuZWQgaW50byBhIE1hdGhJdGVtXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvdG9JdGVtPE4sIFQ+KG9wZW46IHN0cmluZywgbWF0aDogc3RyaW5nLCBjbG9zZTogc3RyaW5nLCBuOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCBkaXNwbGF5OiBib29sZWFuID0gbnVsbCkge1xuICBsZXQgaXRlbTogUHJvdG9JdGVtPE4sIFQ+ID0ge29wZW46IG9wZW4sIG1hdGg6IG1hdGgsIGNsb3NlOiBjbG9zZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuOiBuLCBzdGFydDoge246IHN0YXJ0fSwgZW5kOiB7bjogZW5kfSwgZGlzcGxheTogZGlzcGxheX07XG4gIHJldHVybiBpdGVtO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNYXRoSXRlbSBjbGFzc1xuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TWF0aEl0ZW08TiwgVCwgRD4gaW1wbGVtZW50cyBNYXRoSXRlbTxOLCBULCBEPiB7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2UgdGV4dCBmb3IgdGhlIG1hdGggKGUuZy4sIFRlWCBzdHJpbmcpXG4gICAqL1xuICBwdWJsaWMgbWF0aDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW5wdXQgamF4IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGl0ZW1cbiAgICovXG5cbiAgcHVibGljIGlucHV0SmF4OiBJbnB1dEpheDxOLCBULCBEPjtcblxuICAvKipcbiAgICogVHJ1ZSB3aGVuIHRoaXMgbWF0aCBpcyBpbiBkaXNwbGF5IG1vZGVcbiAgICovXG4gIHB1YmxpYyBkaXNwbGF5OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbWF0aCBpbiB0aGUgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBzdGFydDogTG9jYXRpb248TiwgVD47XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgdG8gdGhlIGVuZCBvZiB0aGUgbWF0aCBpbiB0aGUgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBlbmQ6IExvY2F0aW9uPE4sIFQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29tcGlsZWQgaW50ZXJuYWwgTWF0aE1MIChyZXN1bHQgb2YgSW5wdXRKYXgpXG4gICAqL1xuICBwdWJsaWMgcm9vdDogTW1sTm9kZSA9IG51bGw7XG4gIC8qKlxuICAgKiBUaGUgdHlwZXNldCByZXN1bHQgKHJlc3VsdCBvZiBPdXRwdXRKYXgpXG4gICAqL1xuICBwdWJsaWMgdHlwZXNldFJvb3Q6IE4gPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbWV0cmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdXJyb3VuZGluZyBlbnZpcm9ubWVudFxuICAgKi9cbiAgcHVibGljIG1ldHJpY3M6IE1ldHJpY3MgPSB7fSBhcyBNZXRyaWNzO1xuXG4gIC8qKlxuICAgKiBEYXRhIHByaXZhdGUgdG8gdGhlIGlucHV0IGpheFxuICAgKi9cbiAgcHVibGljIGlucHV0RGF0YTogT3B0aW9uTGlzdCA9IHt9O1xuXG4gIC8qKlxuICAgKiBEYXRhIHByaXZhdGUgdG8gdGhlIG91dHB1dCBqYXhcbiAgICovXG4gIHB1YmxpYyBvdXRwdXREYXRhOiBPcHRpb25MaXN0ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBpdGVtIChob3cgZmFyIGluIHRoZSByZW5kZXIgYWN0aW9ucyBpdCBoYXMgYmVlbiBwcm9jZXNzZWQpXG4gICAqL1xuICBwcm90ZWN0ZWQgX3N0YXRlOiBudW1iZXIgPSBTVEFURS5VTlBST0NFU1NFRDtcblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICBUcnVlIHdoZW4gdGhpcyBpdGVtIGlzIGFuIGVzY2FwZWQgZGVsaW1pdGVyXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRXNjYXBlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNwbGF5ID09PSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRoICAgICAgVGhlIG1hdGggZXhwcmVzc2lvbiBmb3IgdGhpcyBpdGVtXG4gICAqIEBwYXJhbSB7SW5wdXRqYXh9IGpheCAgICAgVGhlIGlucHV0IGpheCB0byB1c2UgZm9yIHRoaXMgaXRlbVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgaWYgZGlzcGxheSBtb2RlLCBmYWxzZSBpZiBpbmxpbmVcbiAgICogQHBhcmFtIHtMb2NhdGlvbn0gc3RhcnQgICBUaGUgc3RhcnRpbmcgcG9zaXRpb24gb2YgdGhlIG1hdGggaW4gdGhlIGRvY3VtZW50XG4gICAqIEBwYXJhbSB7TG9jYXRpb259IGVuZCAgICAgVGhlIGVuZGluZyBwb3NpdGlvbiBvZiB0aGUgbWF0aCBpbiB0aGUgZG9jdW1lbnRcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvciAobWF0aDogc3RyaW5nLCBqYXg6IElucHV0SmF4PE4sIFQsIEQ+LCBkaXNwbGF5OiBib29sZWFuID0gdHJ1ZSxcbiAgICAgICAgICAgICAgIHN0YXJ0OiBMb2NhdGlvbjxOLCBUPiA9IHtpOiAwLCBuOiAwLCBkZWxpbTogJyd9LFxuICAgICAgICAgICAgICAgZW5kOiBMb2NhdGlvbjxOLCBUPiA9IHtpOiAwLCBuOiAwLCBkZWxpbTogJyd9KSB7XG4gICAgdGhpcy5tYXRoID0gbWF0aDtcbiAgICB0aGlzLmlucHV0SmF4ID0gamF4O1xuICAgIHRoaXMuZGlzcGxheSA9IGRpc3BsYXk7XG4gICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgIHRoaXMuZW5kID0gZW5kO1xuICAgIHRoaXMucm9vdCA9IG51bGw7XG4gICAgdGhpcy50eXBlc2V0Um9vdCA9IG51bGw7XG4gICAgdGhpcy5tZXRyaWNzID0ge30gYXMgTWV0cmljcztcbiAgICB0aGlzLmlucHV0RGF0YSA9IHt9O1xuICAgIHRoaXMub3V0cHV0RGF0YSA9IHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlbmRlcihkb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgZG9jdW1lbnQucmVuZGVyQWN0aW9ucy5yZW5kZXJNYXRoKHRoaXMsIGRvY3VtZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXJlbmRlcihkb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+LCBzdGFydDogbnVtYmVyID0gU1RBVEUuUkVSRU5ERVIpIHtcbiAgICBpZiAodGhpcy5zdGF0ZSgpID49IHN0YXJ0KSB7XG4gICAgICB0aGlzLnN0YXRlKHN0YXJ0IC0gMSk7XG4gICAgfVxuICAgIGRvY3VtZW50LnJlbmRlckFjdGlvbnMucmVuZGVyTWF0aCh0aGlzLCBkb2N1bWVudCwgc3RhcnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvbnZlcnQoZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPiwgZW5kOiBudW1iZXIgPSBTVEFURS5MQVNUKSB7XG4gICAgZG9jdW1lbnQucmVuZGVyQWN0aW9ucy5yZW5kZXJDb252ZXJ0KHRoaXMsIGRvY3VtZW50LCBlbmQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvbXBpbGUoZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPikge1xuICAgIGlmICh0aGlzLnN0YXRlKCkgPCBTVEFURS5DT01QSUxFRCkge1xuICAgICAgdGhpcy5yb290ID0gdGhpcy5pbnB1dEpheC5jb21waWxlKHRoaXMsIGRvY3VtZW50KTtcbiAgICAgIHRoaXMuc3RhdGUoU1RBVEUuQ09NUElMRUQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0eXBlc2V0KGRvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pIHtcbiAgICBpZiAodGhpcy5zdGF0ZSgpIDwgU1RBVEUuVFlQRVNFVCkge1xuICAgICAgdGhpcy50eXBlc2V0Um9vdCA9IGRvY3VtZW50Lm91dHB1dEpheFt0aGlzLmlzRXNjYXBlZCA/ICdlc2NhcGVkJyA6ICd0eXBlc2V0J10odGhpcywgZG9jdW1lbnQpO1xuICAgICAgdGhpcy5zdGF0ZShTVEFURS5UWVBFU0VUKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlRG9jdW1lbnQoX2RvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pIHt9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZyb21Eb2N1bWVudChfcmVzdG9yZTogYm9vbGVhbiA9IGZhbHNlKSB7fVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRNZXRyaWNzKGVtOiBudW1iZXIsIGV4OiBudW1iZXIsIGN3aWR0aDogbnVtYmVyLCBsd2lkdGg6IG51bWJlciwgc2NhbGU6IG51bWJlcikge1xuICAgIHRoaXMubWV0cmljcyA9IHtcbiAgICAgIGVtOiBlbSwgZXg6IGV4LFxuICAgICAgY29udGFpbmVyV2lkdGg6IGN3aWR0aCxcbiAgICAgIGxpbmVXaWR0aDogbHdpZHRoLFxuICAgICAgc2NhbGU6IHNjYWxlXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0ZShzdGF0ZTogbnVtYmVyID0gbnVsbCwgcmVzdG9yZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgaWYgKHN0YXRlICE9IG51bGwpIHtcbiAgICAgIGlmIChzdGF0ZSA8IFNUQVRFLklOU0VSVEVEICYmIHRoaXMuX3N0YXRlID49IFNUQVRFLklOU0VSVEVEKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlRnJvbURvY3VtZW50KHJlc3RvcmUpO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlIDwgU1RBVEUuVFlQRVNFVCAmJiB0aGlzLl9zdGF0ZSA+PSBTVEFURS5UWVBFU0VUKSB7XG4gICAgICAgIHRoaXMub3V0cHV0RGF0YSA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlIDwgU1RBVEUuQ09NUElMRUQgJiYgdGhpcy5fc3RhdGUgPj0gU1RBVEUuQ09NUElMRUQpIHtcbiAgICAgICAgdGhpcy5pbnB1dERhdGEgPSB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3N0YXRlID0gc3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXNldChyZXN0b3JlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICB0aGlzLnN0YXRlKFNUQVRFLlVOUFJPQ0VTU0VELCByZXN0b3JlKTtcbiAgfVxuXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIHZhcmlvdXMgc3RhdGVzIHRoYXQgYSBNYXRoSXRlbSAob3IgTWF0aERvY3VtZW50KSBjYW4gYmUgaW5cbiAqICAgKG9wZW4tZW5kZWQgc28gdGhhdCBleHRlbnNpb25zIGNhbiBhZGQgdG8gaXQpXG4gKi9cbmV4cG9ydCBjb25zdCBTVEFURToge1tzdGF0ZTogc3RyaW5nXTogbnVtYmVyfSA9IHtcbiAgVU5QUk9DRVNTRUQ6IDAsXG4gIEZJTkRNQVRIOiAxMCxcbiAgQ09NUElMRUQ6IDIwLFxuICBDT05WRVJUOiAxMDAsXG4gIE1FVFJJQ1M6IDExMCxcbiAgUkVSRU5ERVI6IDEyNSxcbiAgVFlQRVNFVDogMTUwLFxuICBJTlNFUlRFRDogMjAwLFxuICBMQVNUOiAxMDAwMFxufTtcblxuLyoqXG4gKiBBbGxvY2F0ZSBhIG5ldyBuYW1lZCBzdGF0ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgIFRoZSBuYW1lIG9mIHRoZSBuZXcgc3RhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0ZSAgIFRoZSB2YWx1ZSBmb3IgdGhlIG5ldyBzdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gbmV3U3RhdGUobmFtZTogc3RyaW5nLCBzdGF0ZTogbnVtYmVyKSB7XG4gIGlmIChuYW1lIGluIFNUQVRFKSB7XG4gICAgdGhyb3cgRXJyb3IoJ1N0YXRlICcgKyBuYW1lICsgJyBhbHJlYWR5IGV4aXN0cycpO1xuICB9XG4gIFNUQVRFW25hbWVdID0gc3RhdGU7XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFRlWCB2ZXJzaW9uIG9mIHRoZSBGaW5kTWF0aCBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QWJzdHJhY3RGaW5kTWF0aH0gZnJvbSAnLi4vLi4vY29yZS9GaW5kTWF0aC5qcyc7XG5pbXBvcnQge09wdGlvbkxpc3R9IGZyb20gJy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5pbXBvcnQge3NvcnRMZW5ndGgsIHF1b3RlUGF0dGVybn0gZnJvbSAnLi4vLi4vdXRpbC9zdHJpbmcuanMnO1xuaW1wb3J0IHtQcm90b0l0ZW0sIHByb3RvSXRlbX0gZnJvbSAnLi4vLi4vY29yZS9NYXRoSXRlbS5qcyc7XG5cbi8qKlxuICogU2hvcnRoYW5kIHR5cGVzIGZvciBkYXRhIGFib3V0IGVuZCBkZWxpbWl0ZXJzIGFuZCBkZWxpbWl0ZXIgcGFpcnNcbiAqL1xuZXhwb3J0IHR5cGUgRW5kSXRlbSA9IFtzdHJpbmcsIGJvb2xlYW4sIFJlZ0V4cF07XG5leHBvcnQgdHlwZSBEZWxpbXMgPSBbc3RyaW5nLCBzdHJpbmddO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuICogIEltcGxlbWVudHMgdGhlIEZpbmRUZVggY2xhc3MgKGV4dGVuZHMgQWJzdHJhY3RGaW5kTWF0aClcbiAqXG4gKiAgTG9jYXRlcyBUZVggZXhwcmVzc2lvbnMgd2l0aGluIHN0cmluZ3NcbiAqL1xuXG4vKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgRmluZFRlWDxOLCBULCBEPiBleHRlbmRzIEFic3RyYWN0RmluZE1hdGg8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBAdHlwZSB7T3B0aW9uTGlzdH1cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT1BUSU9OUzogT3B0aW9uTGlzdCA9IHtcbiAgICBpbmxpbmVNYXRoOiBbICAgICAgICAgICAgICAvLyBUaGUgc3RhcnQvZW5kIGRlbGltaXRlciBwYWlycyBmb3IgaW4tbGluZSBtYXRoXG4gICAgICAvLyAgWyckJywgJyQnXSwgICAgICAgICAgICAgIC8vICAoY29tbWVudCBvdXQgYW55IHlvdSBkb24ndCB3YW50LCBvciBhZGQgeW91ciBvd24sIGJ1dFxuICAgICAgWydcXFxcKCcsICdcXFxcKSddICAgICAgICAgICAvLyAgYmUgc3VyZSB0aGF0IHlvdSBkb24ndCBoYXZlIGFuIGV4dHJhIGNvbW1hIGF0IHRoZSBlbmQpXG4gICAgXSxcblxuICAgIGRpc3BsYXlNYXRoOiBbICAgICAgICAgICAgIC8vIFRoZSBzdGFydC9lbmQgZGVsaW1pdGVyIHBhaXJzIGZvciBkaXNwbGF5IG1hdGhcbiAgICAgIFsnJCQnLCAnJCQnXSwgICAgICAgICAgICAvLyAgKGNvbW1lbnQgb3V0IGFueSB5b3UgZG9uJ3Qgd2FudCwgb3IgYWRkIHlvdXIgb3duLCBidXRcbiAgICAgIFsnXFxcXFsnLCAnXFxcXF0nXSAgICAgICAgICAgLy8gIGJlIHN1cmUgdGhhdCB5b3UgZG9uJ3QgaGF2ZSBhbiBleHRyYSBjb21tYSBhdCB0aGUgZW5kKVxuICAgIF0sXG5cbiAgICBwcm9jZXNzRXNjYXBlczogdHJ1ZSwgICAgICAvLyBzZXQgdG8gdHJ1ZSB0byBhbGxvdyBcXCQgdG8gcHJvZHVjZSBhIGRvbGxhciB3aXRob3V0XG4gICAgLy8gICBzdGFydGluZyBpbi1saW5lIG1hdGggbW9kZVxuICAgIHByb2Nlc3NFbnZpcm9ubWVudHM6IHRydWUsIC8vIHNldCB0byB0cnVlIHRvIHByb2Nlc3MgXFxiZWdpbnt4eHh9Li4uXFxlbmR7eHh4fSBvdXRzaWRlXG4gICAgLy8gICBvZiBtYXRoIG1vZGUsIGZhbHNlIHRvIHByZXZlbnQgdGhhdFxuICAgIHByb2Nlc3NSZWZzOiB0cnVlLCAgICAgICAgIC8vIHNldCB0byB0cnVlIHRvIHByb2Nlc3MgXFxyZWZ7Li4ufSBvdXRzaWRlIG9mIG1hdGggbW9kZVxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgcmVndWxhciBleHByZXNzaW9uIGZvciBhbnkgc3RhcnRpbmcgZGVsaW1pdGVyXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhcnQ6IFJlZ0V4cDtcblxuICAvKipcbiAgICogVGhlIGVuZC1kZWxpbWl0ZXIgZGF0YSBrZXllZCB0byB0aGUgb3BlbmluZyBkZWxpbWl0ZXIgc3RyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZW5kOiB7W25hbWU6IHN0cmluZ106IEVuZEl0ZW19O1xuXG4gIC8qKlxuICAgKiBGYWxzZSBpZiB0aGUgY29uZmlndXJhdGlvbiBoYXMgbm8gZGVsaW1pdGVycyAoc28gc2VhcmNoIGNhbiBiZSBza2lwcGVkKSwgdHJ1ZSBvdGhlcndpc2VcbiAgICovXG4gIHByb3RlY3RlZCBoYXNQYXR0ZXJuczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBcXGJlZ2luLi4uXFxlbmQgcGF0dGVybiBpbiB0aGUgcmVnZXggbWF0Y2ggYXJyYXlcbiAgICovXG4gIHByb3RlY3RlZCBlbnY6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBcXHJlZiBhbmQgZXNjYXBlZCBjaGFyYWN0ZXIgcGF0dGVycyBpbiB0aGUgcmVnZXggbWF0Y2ggYXJyYXlcbiAgICovXG4gIHByb3RlY3RlZCBzdWI6IG51bWJlcjtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25MaXN0KSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5nZXRQYXR0ZXJucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgcGF0dGVybnMgbmVlZGVkIGZvciBzZWFyY2hpbmcgdGhlIHN0cmluZ3MgZm9yIFRlWFxuICAgKiAgIGJhc2VkIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICovXG4gIHByb3RlY3RlZCBnZXRQYXR0ZXJucygpIHtcbiAgICBsZXQgb3B0aW9ucyA9IHRoaXMub3B0aW9ucztcbiAgICBsZXQgc3RhcnRzOiBzdHJpbmdbXSA9IFtdLCBwYXJ0czogc3RyaW5nW10gPSBbXSwgc3VicGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgdGhpcy5lbmQgPSB7fTtcbiAgICB0aGlzLmVudiA9IHRoaXMuc3ViID0gMDtcbiAgICBsZXQgaSA9IDE7XG4gICAgb3B0aW9uc1snaW5saW5lTWF0aCddLmZvckVhY2goKGRlbGltczogRGVsaW1zKSA9PiB0aGlzLmFkZFBhdHRlcm4oc3RhcnRzLCBkZWxpbXMsIGZhbHNlKSk7XG4gICAgb3B0aW9uc1snZGlzcGxheU1hdGgnXS5mb3JFYWNoKChkZWxpbXM6IERlbGltcykgPT4gdGhpcy5hZGRQYXR0ZXJuKHN0YXJ0cywgZGVsaW1zLCB0cnVlKSk7XG4gICAgaWYgKHN0YXJ0cy5sZW5ndGgpIHtcbiAgICAgIHBhcnRzLnB1c2goc3RhcnRzLnNvcnQoc29ydExlbmd0aCkuam9pbignfCcpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnNbJ3Byb2Nlc3NFbnZpcm9ubWVudHMnXSkge1xuICAgICAgcGFydHMucHVzaCgnXFxcXFxcXFxiZWdpblxcXFxzKlxcXFx7KFtefV0qKVxcXFx9Jyk7XG4gICAgICB0aGlzLmVudiA9IGk7XG4gICAgICBpKys7XG4gICAgfVxuICAgIGlmIChvcHRpb25zWydwcm9jZXNzRXNjYXBlcyddKSB7XG4gICAgICBzdWJwYXJ0cy5wdXNoKCdcXFxcXFxcXChbXFxcXFxcXFwkXSknKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnNbJ3Byb2Nlc3NSZWZzJ10pIHtcbiAgICAgIHN1YnBhcnRzLnB1c2goJyhcXFxcXFxcXCg/OmVxKT9yZWZcXFxccypcXFxce1tefV0qXFxcXH0pJyk7XG4gICAgfVxuICAgIGlmIChzdWJwYXJ0cy5sZW5ndGgpIHtcbiAgICAgIHBhcnRzLnB1c2goJygnICsgc3VicGFydHMuam9pbignfCcpICsgJyknKTtcbiAgICAgIHRoaXMuc3ViID0gaTtcbiAgICB9XG4gICAgdGhpcy5zdGFydCA9IG5ldyBSZWdFeHAocGFydHMuam9pbignfCcpLCAnZycpO1xuICAgIHRoaXMuaGFzUGF0dGVybnMgPSAocGFydHMubGVuZ3RoID4gMCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBuZWVkZWQgcGF0dGVybnMgZm9yIGEgcGFpciBvZiBkZWxpbWl0ZXJzXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHN0YXJ0cyAgQXJyYXkgb2Ygc3RhcnRpbmcgZGVsaW1pdGVyIHN0cmluZ3NcbiAgICogQHBhcmFtIHtEZWxpbXN9IGRlbGltcyAgICBBcnJheSBvZiBkZWxpbWl0ZXIgc3RyaW5ncywgYXMgW3N0YXJ0LCBlbmRdXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzcGxheSAgVHJ1ZSBpZiB0aGUgZGVsaW1pdGVycyBhcmUgZm9yIGRpc3BsYXkgbW9kZVxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZFBhdHRlcm4oc3RhcnRzOiBzdHJpbmdbXSwgZGVsaW1zOiBEZWxpbXMsIGRpc3BsYXk6IGJvb2xlYW4pIHtcbiAgICBsZXQgW29wZW4sIGNsb3NlXSA9IGRlbGltcztcbiAgICBzdGFydHMucHVzaChxdW90ZVBhdHRlcm4ob3BlbikpO1xuICAgIHRoaXMuZW5kW29wZW5dID0gW2Nsb3NlLCBkaXNwbGF5LCB0aGlzLmVuZFBhdHRlcm4oY2xvc2UpXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIHBhdHRlcm4gZm9yIGEgY2xvc2UgZGVsaW1pdGVyXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbmQgICBUaGUgZW5kIGRlbGltaXRlciB0ZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbmRwICBUaGUgZW5kIGRlbGltaXRlciBwYXR0ZXJuIChvdmVycmlkZXMgdGhlIGxpdGVyYWwgZW5kIHBhdHRlcm4pXG4gICAqIEByZXR1cm4ge1JlZ0V4cH0gICAgICBUaGUgcmVndWxhciBleHByZXNzaW9uIGZvciB0aGUgZW5kIGRlbGltaXRlclxuICAgKi9cbiAgcHJvdGVjdGVkIGVuZFBhdHRlcm4oZW5kOiBzdHJpbmcsIGVuZHA/OiBzdHJpbmcpOiBSZWdFeHAge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKChlbmRwIHx8IHF1b3RlUGF0dGVybihlbmQpKSArICd8XFxcXFxcXFwoPzpbYS16QS1aXXwuKXxbe31dJywgJ2cnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggZm9yIHRoZSBlbmQgZGVsaW1pdGVyIGdpdmVuIHRoZSBzdGFydCBkZWxpbWl0ZXIsXG4gICAqICAgc2tpcHBpbmcgYnJhY2VkIGdyb3VwcywgYW5kIGNvbnRyb2wgc2VxdWVuY2VzIHRoYXQgYXJlbid0XG4gICAqICAgdGhlIGNsb3NlIGRlbGltaXRlci5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgICAgICBUaGUgc3RyaW5nIGJlaW5nIHNlYXJjaGVkIGZvciB0aGUgZW5kIGRlbGltaXRlclxuICAgKiBAcGFyYW0ge251bWJlcn0gbiAgICAgICAgICAgICAgIFRoZSBpbmRleCBvZiB0aGUgc3RyaW5nIGJlaW5nIHNlYXJjaGVkXG4gICAqIEBwYXJhbSB7UmVnRXhwRXhlY0FycmF5fSBzdGFydCAgVGhlIHJlc3VsdCBhcnJheSBmcm9tIHRoZSBzdGFydC1kZWxpbWl0ZXIgc2VhcmNoXG4gICAqIEBwYXJhbSB7RW5kSXRlbX0gZW5kICAgICAgICAgICAgVGhlIGVuZC1kZWxpbWl0ZXIgZGF0YSBjb3JyZXNwb25kaW5nIHRvIHRoZSBzdGFydCBkZWxpbWl0ZXJcbiAgICogQHJldHVybiB7UHJvdG9JdGVtPE4sVD59ICAgICAgICBUaGUgcHJvdG8gbWF0aCBpdGVtIGZvciB0aGUgbWF0aCwgaWYgZm91bmRcbiAgICovXG4gIHByb3RlY3RlZCBmaW5kRW5kKHRleHQ6IHN0cmluZywgbjogbnVtYmVyLCBzdGFydDogUmVnRXhwRXhlY0FycmF5LCBlbmQ6IEVuZEl0ZW0pOiBQcm90b0l0ZW08TiwgVD4ge1xuICAgIGxldCBbY2xvc2UsIGRpc3BsYXksIHBhdHRlcm5dID0gZW5kO1xuICAgIGxldCBpID0gcGF0dGVybi5sYXN0SW5kZXggPSBzdGFydC5pbmRleCArIHN0YXJ0WzBdLmxlbmd0aDtcbiAgICBsZXQgbWF0Y2g6IFJlZ0V4cEV4ZWNBcnJheSwgYnJhY2VzOiBudW1iZXIgPSAwO1xuICAgIHdoaWxlICgobWF0Y2ggPSBwYXR0ZXJuLmV4ZWModGV4dCkpKSB7XG4gICAgICBpZiAoKG1hdGNoWzFdIHx8IG1hdGNoWzBdKSA9PT0gY2xvc2UgJiYgYnJhY2VzID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwcm90b0l0ZW08TiwgVD4oc3RhcnRbMF0sIHRleHQuc3Vic3RyKGksIG1hdGNoLmluZGV4IC0gaSksIG1hdGNoWzBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4sIHN0YXJ0LmluZGV4LCBtYXRjaC5pbmRleCArIG1hdGNoWzBdLmxlbmd0aCwgZGlzcGxheSk7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoWzBdID09PSAneycpIHtcbiAgICAgICAgYnJhY2VzKys7XG4gICAgICB9IGVsc2UgaWYgKG1hdGNoWzBdID09PSAnfScgJiYgYnJhY2VzKSB7XG4gICAgICAgIGJyYWNlcy0tO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWFyY2ggYSBzdHJpbmcgZm9yIG1hdGggZGVsaW1pdGVkIGJ5IG9uZSBvZiB0aGUgZGVsaW1pdGVyIHBhaXJzLFxuICAgKiAgIG9yIGJ5IFxcYmVnaW57ZW52fS4uLlxcZW5ke2Vudn0sIG9yIFxcZXFyZWZ7Li4ufSwgXFxyZWZ7Li4ufSwgXFxcXCwgb3IgXFwkLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3RvSXRlbVtdfSBtYXRoICBUaGUgYXJyYXkgb2YgcHJvdG8gbWF0aCBpdGVtcyBsb2NhdGVkIHNvIGZhclxuICAgKiBAcGFyYW0ge251bWJlcn0gbiAgICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHN0cmluZyBiZWluZyBzZWFyY2hlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgICBUaGUgc3RyaW5nIGJlaW5nIHNlYXJjaGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZmluZE1hdGhJblN0cmluZyhtYXRoOiBQcm90b0l0ZW08TiwgVD5bXSwgbjogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpIHtcbiAgICBsZXQgc3RhcnQsIG1hdGNoO1xuICAgIHRoaXMuc3RhcnQubGFzdEluZGV4ID0gMDtcbiAgICB3aGlsZSAoKHN0YXJ0ID0gdGhpcy5zdGFydC5leGVjKHRleHQpKSkge1xuICAgICAgaWYgKHN0YXJ0W3RoaXMuZW52XSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZW52KSB7XG4gICAgICAgIGxldCBlbmQgPSAnXFxcXFxcXFxlbmRcXFxccyooXFxcXHsnICsgcXVvdGVQYXR0ZXJuKHN0YXJ0W3RoaXMuZW52XSkgKyAnXFxcXH0pJztcbiAgICAgICAgbWF0Y2ggPSB0aGlzLmZpbmRFbmQodGV4dCwgbiwgc3RhcnQsIFsneycgKyBzdGFydFt0aGlzLmVudl0gKyAnfScsIHRydWUsIHRoaXMuZW5kUGF0dGVybihudWxsLCBlbmQpXSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIG1hdGNoLm1hdGggPSBtYXRjaC5vcGVuICsgbWF0Y2gubWF0aCArIG1hdGNoLmNsb3NlO1xuICAgICAgICAgIG1hdGNoLm9wZW4gPSBtYXRjaC5jbG9zZSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHN0YXJ0W3RoaXMuc3ViXSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc3ViKSB7XG4gICAgICAgIGxldCBtYXRoID0gc3RhcnRbdGhpcy5zdWJdO1xuICAgICAgICBsZXQgZW5kID0gc3RhcnQuaW5kZXggKyBzdGFydFt0aGlzLnN1Yl0ubGVuZ3RoO1xuICAgICAgICBpZiAobWF0aC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICBtYXRjaCA9IHByb3RvSXRlbTxOLCBUPignJywgbWF0aC5zdWJzdHIoMSksICcnLCBuLCBzdGFydC5pbmRleCwgZW5kKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXRjaCA9IHByb3RvSXRlbTxOLCBUPignJywgbWF0aCwgJycsIG4sIHN0YXJ0LmluZGV4LCBlbmQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWF0Y2ggPSB0aGlzLmZpbmRFbmQodGV4dCwgbiwgc3RhcnQsIHRoaXMuZW5kW3N0YXJ0WzBdXSk7XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgbWF0aC5wdXNoKG1hdGNoKTtcbiAgICAgICAgdGhpcy5zdGFydC5sYXN0SW5kZXggPSBtYXRjaC5lbmQubjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2VhcmNoIGZvciBtYXRoIGluIGFuIGFycmF5IG9mIHN0cmluZ3MgYW5kIHJldHVybiBhbiBhcnJheSBvZiBtYXRjaGVzLlxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBmaW5kTWF0aChzdHJpbmdzOiBzdHJpbmdbXSkge1xuICAgIGxldCBtYXRoOiBQcm90b0l0ZW08TiwgVD5bXSA9IFtdO1xuICAgIGlmICh0aGlzLmhhc1BhdHRlcm5zKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbSA9IHN0cmluZ3MubGVuZ3RoOyBpIDwgbTsgaSsrKSB7XG4gICAgICAgIHRoaXMuZmluZE1hdGhJblN0cmluZyhtYXRoLCBpLCBzdHJpbmdzW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hdGg7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IEltcGxlbWVudHMgQXR0cmlidXRlIGNsYXNzIGZvciBNbWxOb2Rlc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3QsIFByb3BlcnR5fSBmcm9tICcuLi9UcmVlL05vZGUuanMnO1xuXG4vKipcbiAqIEEgY29uc3RhbnQgZm9yIHdoZW4gYSBwcm9wZXJ0eSBzaG91bGQgYmUgaW5oZXJpdGVkIGZyb20gdGhlIGdsb2JhbCBkZWZhdWx0cyBsaXN0c1xuICovXG5leHBvcnQgY29uc3QgSU5IRVJJVCA9ICdfaW5oZXJpdF8nO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBBdHRyaWJ1dGVzIGNsYXNzIGZvciBNbWxOb2Rlc1xuICogIChUaGVzZSBjYW4gYmUgc2V0IGV4cGxpY2l0bHksIGluaGVyaXRlZCBmcm9tIHBhcmVudCBub2RlcyxcbiAqICAgdGFrZW4gZnJvbSBhIGRlZmF1bHQgbGlzdCBvZiB2YWx1ZXMsIG9yIHRha2VuIGZyb20gZ2xvYmFsXG4gKiAgIGRlZmF1bHRzLilcbiAqL1xuXG5leHBvcnQgY2xhc3MgQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgYXR0cmlidXRlcyBleHBsaWNpdGx5IHNldCBvbiBhIG5vZGVcbiAgICovXG4gIHByb3RlY3RlZCBhdHRyaWJ1dGVzOiBQcm9wZXJ0eUxpc3Q7XG4gIC8qKlxuICAgKiBUaGUgYXR0cmlidXRlcyBpbmhlcml0ZWQgZnJvbSBwYXJlbnQgbm9kZXNcbiAgICovXG4gIHByb3RlY3RlZCBpbmhlcml0ZWQ6IFByb3BlcnR5TGlzdDtcbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBub2RlIHR5cGVcbiAgICovXG4gIHByb3RlY3RlZCBkZWZhdWx0czogUHJvcGVydHlMaXN0O1xuICAvKipcbiAgICogR2xvYmFsIGF0dHJpYnV0ZXMgZnJvbSB0aGUgbWF0aCBub2RlIGl0c2VsZlxuICAgKi9cbiAgcHJvdGVjdGVkIGdsb2JhbDogUHJvcGVydHlMaXN0O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5TGlzdH0gZGVmYXVsdHMgIFRoZSBkZWZhdWx0cyBmb3IgdGhpcyBub2RlIHR5cGVcbiAgICogQHBhcmFtIHtQcm9wZXJ0eUxpc3R9IGdsb2JhbCAgICBUaGUgZ2xvYmFsIHByb3BlcnRpZXMgKGZyb20gdGhlIG1hdGggbm9kZSlcbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihkZWZhdWx0czogUHJvcGVydHlMaXN0LCBnbG9iYWw6IFByb3BlcnR5TGlzdCkge1xuICAgIHRoaXMuZ2xvYmFsID0gZ2xvYmFsO1xuICAgIHRoaXMuZGVmYXVsdHMgPSBPYmplY3QuY3JlYXRlKGdsb2JhbCk7XG4gICAgdGhpcy5pbmhlcml0ZWQgPSBPYmplY3QuY3JlYXRlKHRoaXMuZGVmYXVsdHMpO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IE9iamVjdC5jcmVhdGUodGhpcy5pbmhlcml0ZWQpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5kZWZhdWx0cywgZGVmYXVsdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIHNldFxuICAgKiBAcGFyYW0ge1Byb3BlcnR5fSB2YWx1ZSAgVGhlIHZhbHVlIHRvIGdpdmUgdGhlIG5hbWVkIGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBQcm9wZXJ0eSkge1xuICAgIHRoaXMuYXR0cmlidXRlc1tuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBsaXN0ICBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcHJvcGVydGllcyB0byBzZXRcbiAgICovXG4gIHB1YmxpYyBzZXRMaXN0KGxpc3Q6IFByb3BlcnR5TGlzdCkge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5hdHRyaWJ1dGVzLCBsaXN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSBpcyB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eX0gICAgVGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBhdHRyaWJ1dGUgKGluY2x1ZGluZyBpbmhlcml0YW5jZSBhbmQgZGVmYXVsdHMpXG4gICAqL1xuICBwdWJsaWMgZ2V0KG5hbWU6IHN0cmluZyk6IFByb3BlcnR5IHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmF0dHJpYnV0ZXNbbmFtZV07XG4gICAgaWYgKHZhbHVlID09PSBJTkhFUklUKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZ2xvYmFsW25hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgIFRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlIHdob3NlIHZhbHVlIGlzIHRvIGJlIHJldHVybmVkXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5fSAgICBUaGUgYXR0cmlidXRlIHdob3NlIG5hbWUgd2FzIGdpdmVuIGlmIGl0IGlzIGV4cGxpY2l0IG9uIHRoZVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgbm9kZSAobm90IGluaGVyaXRlZCBvciBkZWZhdWx0ZWQpLCBudWxsIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGdldEV4cGxpY2l0KG5hbWU6IHN0cmluZyk6IFByb3BlcnR5IHtcbiAgICBpZiAoIXRoaXMuYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlc1tuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBuYW1lcyAgVGhlIG5hbWVzIG9mIGF0dHJpYnV0ZXMgd2hvc2UgdmFsdWVzIGFyZSB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eUxpc3R9ICAgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGF0dHJpYnV0ZXMgYW5kIHRoZWlyIHZhbHVlc1xuICAgKi9cbiAgcHVibGljIGdldExpc3QoLi4ubmFtZXM6IHN0cmluZ1tdKTogUHJvcGVydHlMaXN0IHtcbiAgICBsZXQgdmFsdWVzOiBQcm9wZXJ0eUxpc3QgPSB7fTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbmFtZXMpIHtcbiAgICAgIHZhbHVlc1tuYW1lXSA9IHRoaXMuZ2V0KG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICBUaGUgbmFtZSBvZiBhbiBpbmhlcml0ZWQgYXR0cmlidXRlIHRvIGJlIHNldFxuICAgKiBAcGFyYW0ge1Byb3BlcnR5fSB2YWx1ZSAgVGhlIHZhbHVlIHRvIGFzc2lnbiB0byB0aGUgbmFtZWQgYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgc2V0SW5oZXJpdGVkKG5hbWU6IHN0cmluZywgdmFsdWU6IFByb3BlcnR5KSB7XG4gICAgdGhpcy5pbmhlcml0ZWRbbmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgVGhlIG5hbWUgb2YgYW4gaW5oZXJpdGVkIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSBpcyB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eX0gICAgVGhlIHZhbHVlIG9mIHRoZSBuYW1lZCBhdHRyaWJ1dGUgaWYgaXQgaXMgaW5oZXJpdGVkLCBudWxsIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGdldEluaGVyaXRlZChuYW1lOiBzdHJpbmcpOiBQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHRoaXMuaW5oZXJpdGVkW25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICBUaGUgbmFtZSBvZiBhIGRlZmF1bHQgYXR0cmlidXRlIHdob3NlIHZhbHVlIGlzIHRvIGJlIHJldHVybmVkXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5fSAgICBUaGUgdmFsdWUgb2YgdGhlIG5hbWVkIGF0dHJpYnV0ZSBpZiBhIGRlZmF1bHQgZXhpc3RzIGZvciBpdCwgbnVsbCBvdGhlcndpc2VcbiAgICovXG4gIHB1YmxpYyBnZXREZWZhdWx0KG5hbWU6IHN0cmluZyk6IFByb3BlcnR5IHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0c1tuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgVGhlIG5hbWUgb2YgYSBhdHRyaWJ1dGUgdG8gY2hlY2tcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICAgIFRydWUgaWYgYXR0cmlidXRlIGlzIHNldCBleHBsaWNpdGx5IG9yIGluaGVyaXRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGFuIGV4cGxpY2l0IG1zdHlsZSBvciBtYXRoIGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIGlzU2V0KG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXMuaGFzT3duUHJvcGVydHkobmFtZSkgfHwgdGhpcy5pbmhlcml0ZWQuaGFzT3duUHJvcGVydHkobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgIFRoZSBuYW1lIG9mIGFuIGF0dHJpYnV0ZSB0byB0ZXN0IGZvciB0aGUgZXhpc3RlbmNlIG9mIGEgZGVmYXVsdFxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgICAgVHJ1ZSBvZiB0aGVyZSBpcyBhIGRlZmF1bHQgZm9yIHRoZSBuYW1lZCBhdHRyaWJ1dGUsIGZhbHNlIG90aGVyd2lzZVxuICAgKi9cbiAgcHVibGljIGhhc0RlZmF1bHQobmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChuYW1lIGluIHRoaXMuZGVmYXVsdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgVGhlIG5hbWVzIG9mIGFsbCB0aGUgYXR0cmlidXRlcyBleHBsaWNpdGx5IHNldCBvbiB0aGUgbm9kZVxuICAgKi9cbiAgcHVibGljIGdldEV4cGxpY2l0TmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgVGhlIG5hbWVzIG9mIGFsbCB0aGUgaW5oZXJpdGVkIGF0dHJpYnV0ZXMgZm9yIHRoZSBub2RlXG4gICAqL1xuICBwdWJsaWMgZ2V0SW5oZXJpdGVkTmFtZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmluaGVyaXRlZCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nW119ICBUaGUgbmFtZXMgb2YgYWxsIHRoZSBkZWZhdWx0IGF0dHJpYnV0ZXMgZm9yIHRoZSBub2RlXG4gICAqL1xuICBwdWJsaWMgZ2V0RGVmYXVsdE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5kZWZhdWx0cyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nW119ICBUaGUgbmFtZXMgb2YgYWxsIHRoZSBnbG9iYWwgYXR0cmlidXRlc1xuICAgKi9cbiAgcHVibGljIGdldEdsb2JhbE5hbWVzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5nbG9iYWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5TGlzdH0gIFRoZSBhdHRyaWJ1dGUgb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgZ2V0QWxsQXR0cmlidXRlcygpOiBQcm9wZXJ0eUxpc3Qge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXM7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7UHJvcGVydHlMaXN0fSAgVGhlIGluaGVyaXRlZCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBnZXRBbGxJbmhlcml0ZWQoKTogUHJvcGVydHlMaXN0IHtcbiAgICByZXR1cm4gdGhpcy5pbmhlcml0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7UHJvcGVydHlMaXN0fSAgVGhlIGRlZmF1bHRzIG9iamVjdFxuICAgKi9cbiAgcHVibGljIGdldEFsbERlZmF1bHRzKCk6IFByb3BlcnR5TGlzdCB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdHM7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7UHJvcGVydHlMaXN0fSAgVGhlIGdsb2JhbCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBnZXRBbGxHbG9iYWxzKCk6IFByb3BlcnR5TGlzdCB7XG4gICAgcmV0dXJuIHRoaXMuZ2xvYmFsO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBHZW5lcmljIE5vZGUgY2xhc3NlcyBmb3Igbm9kZSB0cmVlc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtOb2RlRmFjdG9yeX0gZnJvbSAnLi9Ob2RlRmFjdG9yeS5qcyc7XG5cbi8qKlxuICogIFByb3BlcnR5TGlzdCBhbmQgUHJvcGVydHkgYXJlIGZvciBzdHJpbmcgZGF0YSBsaWtlXG4gKiAgYXR0cmlidXRlcyBhbmQgb3RoZXIgcHJvcGVydGllc1xuICovXG5leHBvcnQgdHlwZSBQcm9wZXJ0eSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW47XG5leHBvcnQgdHlwZSBQcm9wZXJ0eUxpc3QgPSB7W2tleTogc3RyaW5nXTogUHJvcGVydHl9O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIGdlbmVyaWMgTm9kZSBpbnRlcmZhY2VcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vZGUge1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgTm9kZUZhY3RvcnkgdG8gdXNlIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIG5vZGVzLCBhcyBuZWVkZWRcbiAgICovXG4gIHJlYWRvbmx5IGZhY3Rvcnk6IE5vZGVGYWN0b3J5PE5vZGUsIE5vZGVDbGFzcz47XG4gIHBhcmVudDogTm9kZTtcbiAgY2hpbGROb2RlczogTm9kZVtdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIHNldFxuICAgKiBAcGFyYW0ge1Byb3BlcnR5fSB2YWx1ZSAgVGhlIHZhbHVlIHRvIHdoaWNoIHRoZSBwcm9wZXJ0eSB3aWxsIGJlIHNldFxuICAgKi9cbiAgc2V0UHJvcGVydHkobmFtZTogc3RyaW5nLCB2YWx1ZTogUHJvcGVydHkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHRvIGdldFxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eX0gICBUaGUgdmFsdWUgb2YgdGhlIG5hbWVkIHByb3BlcnR5XG4gICAqL1xuICBnZXRQcm9wZXJ0eShuYW1lOiBzdHJpbmcpOiBQcm9wZXJ0eTtcblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nW119ICBBbiBhcnJheSBvZiB0aGUgbmFtZXMgb2YgZXZlcnkgcHJvcGVydHkgY3VycmVudGx5IGRlZmluZWRcbiAgICovXG4gIGdldFByb3BlcnR5TmFtZXMoKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5TGlzdH0gIFRoZSBwcm9wZXJ5IGxpc3QgY29udGFpbmluZyBhbGwgdGhlIHByb3BlcnRpZXMgb2YgdGhlIG5vZGVcbiAgICovXG4gIGdldEFsbFByb3BlcnRpZXMoKTogUHJvcGVydHlMaXN0O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBuYW1lcyAgVGhlIG5hbWVzIG9mIHRoZSBwcm9wZXJ0aWVzIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZVByb3BlcnR5KC4uLm5hbWVzOiBzdHJpbmdbXSk6IHZvaWQ7XG5cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgIFRoZSB0eXBlIG9mIG5vZGUgdG8gdGVzdCBmb3JcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICAgIFRydWUgd2hlbiB0aGUgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4gdHlwZVxuICAgKi9cbiAgaXNLaW5kKGtpbmQ6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm9kZVtdfSBjaGlsZHJlbiAgVGhlIGNoaWxkIG5vZGVzIHRvIGFkZCB0byB0aGlzIG5vZGVcbiAgICovXG4gIHNldENoaWxkcmVuKGNoaWxkcmVuOiBOb2RlW10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkICBBIG5vZGUgdG8gYWRkIHRvIHRoaXMgbm9kZSdzIGNoaWxkcmVuXG4gICAqIEByZXR1cm4ge05vZGV9ICAgICAgIFRoZSBjaGlsZCBub2RlIHRoYXQgd2FzIGFkZGVkXG4gICAqL1xuICBhcHBlbmRDaGlsZChjaGlsZDogTm9kZSk6IE5vZGU7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm9kZX0gbmV3Q2hpbGQgIEEgY2hpbGQgbm9kZSB0byBiZSBpbnNlcnRlZFxuICAgKiBAcGFyYW0ge05vZGV9IG9sZENoaWxkICBBIGNoaWxkIG5vZGUgdG8gYmUgcmVwbGFjZWRcbiAgICogQHJldHVybiB7Tm9kZX0gICAgICAgICAgVGhlIG9sZCBjaGlsZCBub2RlIHRoYXQgd2FzIHJlbW92ZWRcbiAgICovXG4gIHJlcGxhY2VDaGlsZChuZXdDaGlsZDogTm9kZSwgb2xkQ2hpbGQ6IE5vZGUpOiBOb2RlO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkICAgQ2hpbGQgbm9kZSB0byBiZSByZW1vdmVkXG4gICAqIEByZXR1cm4ge05vZGV9ICAgICAgICBUaGUgb2xkIGNoaWxkIG5vZGUgdGhhdCB3YXMgcmVtb3ZlZFxuICAgKi9cbiAgcmVtb3ZlQ2hpbGQoY2hpbGQ6IE5vZGUpOiBOb2RlO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge05vZGV9IGNoaWxkICBBIGNoaWxkIG5vZGUgd2hvc2UgaW5kZXggaW4gY2hpbGROb2RlcyBpcyBkZXNpcmVkXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgIFRoZSBpbmRleCBvZiB0aGUgY2hpbGQgaW4gY2hpbGROb2Rlcywgb3IgbnVsbCBpZiBub3QgZm91bmRcbiAgICovXG4gIGNoaWxkSW5kZXgoY2hpbGQ6IE5vZGUpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1ha2UgYSBkZWVwIGNvcHkgb2YgdGhlIG5vZGUgKGJ1dCB3aXRoIG5vIHBhcmVudCkuXG4gICAqL1xuICBjb3B5KCk6IE5vZGU7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kICBUaGUga2luZCBvZiBub2RlcyB0byBiZSBsb2NhdGVkIGluIHRoZSB0cmVlXG4gICAqIEByZXR1cm4ge05vZGVbXX0gICAgICBBbiBhcnJheSBvZiBub2RlcyB0aGF0IGFyZSBjaGlsZHJlbiAoYXQgYW55IGRlcHRoKSBvZiB0aGUgZ2l2ZW4ga2luZFxuICAgKi9cbiAgZmluZE5vZGVzKGtpbmQ6IHN0cmluZyk6IE5vZGVbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyAgQSBmdW5jdGlvbiB0byBhcHBseSB0byBlYWNoIG5vZGUgaW4gdGhlIHRyZWUgcm9vdGVkIGF0IHRoaXMgbm9kZVxuICAgKiBAcGFyYW0ge2FueX0gZGF0YSAgICAgICBEYXRhIHRvIHBhc3MgdG8gdGhlIGZ1bmN0aW9uIChhcyBzdGF0ZSBpbmZvcm1hdGlvbilcbiAgICovXG4gIHdhbGtUcmVlKGZ1bmM6IChub2RlOiBOb2RlLCBkYXRhPzogYW55KSA9PiB2b2lkLCBkYXRhPzogYW55KTogdm9pZDtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBnZW5lcmljIE5vZGUgY2xhc3MgaW50ZXJmYWNlXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBOb2RlQ2xhc3Mge1xuICAvKipcbiAgICogQHBhcmFtIHtOb2RlRmFjdG9yeX0gZmFjdG9yeSAgVGhlIE5vZGVGYWN0b3J5IHRvIHVzZSB0byBjcmVhdGUgbmV3IG5vZGVzIHdoZW4gbmVlZGVkXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBwcm9wZXJ0aWVzICBBbnkgcHJvcGVydGllcyB0byBiZSBhZGRlZCB0byB0aGUgbm9kZSwgaWYgYW55XG4gICAqIEBwYXJhbSB7Tm9kZVtdfSBjaGlsZHJlbiAgVGhlIGluaXRpYWwgY2hpbGQgbm9kZXMsIGlmIGFueVxuICAgKiBAcmV0dXJuIHtOb2RlfSAgVGhlIG5ld2x5IGNyZWF0ZWQgbm9kZVxuICAgKi9cbiAgbmV3IChmYWN0b3J5OiBOb2RlRmFjdG9yeTxOb2RlLCBOb2RlQ2xhc3M+LCBwcm9wZXJ0aWVzPzogUHJvcGVydHlMaXN0LCBjaGlsZHJlbj86IE5vZGVbXSk6IE5vZGU7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgYWJzdHJhY3QgTm9kZSBjbGFzc1xuICovXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE5vZGUgaW1wbGVtZW50cyBOb2RlIHtcblxuICAvKipcbiAgICogVGhlIHBhcmVudCBub2RlIGZvciB0aGlzIG9uZVxuICAgKi9cbiAgcHVibGljIHBhcmVudDogTm9kZSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGlzIG5vZGVcbiAgICovXG4gIHByb3RlY3RlZCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUxpc3QgPSB7fTtcblxuICAvKipcbiAgICogVGhlIGNoaWxkcmVuIGZvciB0aGlzIG5vZGVcbiAgICovXG4gIHB1YmxpYyBjaGlsZE5vZGVzOiBOb2RlW10gPSBbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtOb2RlRmFjdG9yeX0gZmFjdG9yeSAgVGhlIE5vZGVGYWN0b3J5IHRvIHVzZSB0byBjcmVhdGUgbmV3IG5vZGVzIHdoZW4gbmVlZGVkXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBwcm9wZXJ0aWVzICBBbnkgcHJvcGVydGllcyB0byBiZSBhZGRlZCB0byB0aGUgbm9kZSwgaWYgYW55XG4gICAqIEBwYXJhbSB7Tm9kZVtdfSBjaGlsZHJlbiAgVGhlIGluaXRpYWwgY2hpbGQgbm9kZXMsIGlmIGFueVxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGltcGxlbWVudHMge05vZGV9XG4gICAqL1xuICBjb25zdHJ1Y3RvcihyZWFkb25seSBmYWN0b3J5OiBOb2RlRmFjdG9yeTxOb2RlLCBOb2RlQ2xhc3M+LCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUxpc3QgPSB7fSwgY2hpbGRyZW46IE5vZGVbXSA9IFtdKSB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKHByb3BlcnRpZXMpKSB7XG4gICAgICB0aGlzLnNldFByb3BlcnR5KG5hbWUsIHByb3BlcnRpZXNbbmFtZV0pO1xuICAgIH1cbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICB0aGlzLnNldENoaWxkcmVuKGNoaWxkcmVuKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICd1bmtub3duJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIHZhbHVlOiBQcm9wZXJ0eSkge1xuICAgIHRoaXMucHJvcGVydGllc1tuYW1lXSA9IHZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldFByb3BlcnR5KG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXNbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0UHJvcGVydHlOYW1lcygpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXRBbGxQcm9wZXJ0aWVzKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BlcnRpZXM7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlUHJvcGVydHkoLi4ubmFtZXM6IHN0cmluZ1tdKSB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICBkZWxldGUgdGhpcy5wcm9wZXJ0aWVzW25hbWVdO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGlzS2luZChraW5kOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5mYWN0b3J5Lm5vZGVJc0tpbmQodGhpcywga2luZCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRDaGlsZHJlbihjaGlsZHJlbjogTm9kZVtdKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzID0gW107XG4gICAgZm9yIChsZXQgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIHRoaXMuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhcHBlbmRDaGlsZChjaGlsZDogTm9kZSkge1xuICAgIHRoaXMuY2hpbGROb2Rlcy5wdXNoKGNoaWxkKTtcbiAgICBjaGlsZC5wYXJlbnQgPSB0aGlzO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlQ2hpbGQobmV3Q2hpbGQ6IE5vZGUsIG9sZENoaWxkOiBOb2RlKSB7XG4gICAgbGV0IGkgPSB0aGlzLmNoaWxkSW5kZXgob2xkQ2hpbGQpO1xuICAgIC8vIElmIGkgPT09IG51bGwgc2hvdWxkIHdlIGVycm9yPyAgcmV0dXJuIG51bGw/ICBzaWxlbnRseSBmYWlsP1xuICAgIGlmIChpICE9PSBudWxsKSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXNbaV0gPSBuZXdDaGlsZDtcbiAgICAgIG5ld0NoaWxkLnBhcmVudCA9IHRoaXM7XG4gICAgICBvbGRDaGlsZC5wYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gbmV3Q2hpbGQ7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlQ2hpbGQoY2hpbGQ6IE5vZGUpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZEluZGV4KGNoaWxkKTtcbiAgICBpZiAoaSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5jaGlsZE5vZGVzLnNwbGljZShpLCAxKTtcbiAgICAgIGNoaWxkLnBhcmVudCA9IG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoaWxkSW5kZXgobm9kZTogTm9kZSkge1xuICAgIGxldCBpID0gdGhpcy5jaGlsZE5vZGVzLmluZGV4T2Yobm9kZSk7XG4gICAgcmV0dXJuIChpID09PSAtMSA/IG51bGwgOiBpKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcHkoKSB7XG4gICAgY29uc3Qgbm9kZSA9ICh0aGlzIGFzIEFic3RyYWN0Tm9kZSkuZmFjdG9yeS5jcmVhdGUodGhpcy5raW5kKSBhcyBBYnN0cmFjdE5vZGU7XG4gICAgbm9kZS5wcm9wZXJ0aWVzID0gey4uLnRoaXMucHJvcGVydGllc307XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMgfHwgW10pIHtcbiAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICBub2RlLmFwcGVuZENoaWxkKGNoaWxkLmNvcHkoKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGZpbmROb2RlcyhraW5kOiBzdHJpbmcpIHtcbiAgICBsZXQgbm9kZXM6IE5vZGVbXSA9IFtdO1xuICAgIHRoaXMud2Fsa1RyZWUoKG5vZGU6IE5vZGUpID0+IHtcbiAgICAgIGlmIChub2RlLmlzS2luZChraW5kKSkge1xuICAgICAgICBub2Rlcy5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBub2RlcztcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHdhbGtUcmVlKGZ1bmM6IChub2RlOiBOb2RlLCBkYXRhPzogYW55KSA9PiB2b2lkLCBkYXRhPzogYW55KSB7XG4gICAgZnVuYyh0aGlzLCBkYXRhKTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgIGNoaWxkLndhbGtUcmVlKGZ1bmMsIGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaW1wbGUgc3RyaW5nIHZlcnNpb24gZm9yIGRlYnVnZ2luZywganVzdCB0byBnZXQgdGhlIHN0cnVjdHVyZS5cbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5raW5kICsgJygnICsgdGhpcy5jaGlsZE5vZGVzLmpvaW4oJywnKSArICcpJztcbiAgfVxuXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgYWJzdHJhY3QgRW1wdHlOb2RlIGNsYXNzXG4gKi9cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0RW1wdHlOb2RlIGV4dGVuZHMgQWJzdHJhY3ROb2RlIHtcbiAgLyoqXG4gICAqICBXZSBkb24ndCBoYXZlIGNoaWxkcmVuLCBzbyBpZ25vcmUgdGhlc2UgbWV0aG9kc1xuICAgKi9cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0Q2hpbGRyZW4oX2NoaWxkcmVuOiBOb2RlW10pIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhcHBlbmRDaGlsZChjaGlsZDogTm9kZSkge1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlQ2hpbGQoX25ld0NoaWxkOiBOb2RlLCBvbGRDaGlsZDogTm9kZSkge1xuICAgIHJldHVybiBvbGRDaGlsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGlsZEluZGV4KF9ub2RlOiBOb2RlKSB7XG4gICAgcmV0dXJuIG51bGwgYXMgbnVtYmVyO1xuICB9XG5cbiAgLyoqXG4gICAqIERvbid0IHN0ZXAgaW50byBjaGlsZHJlbiAodGhlcmUgYXJlbid0IGFueSlcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgd2Fsa1RyZWUoZnVuYzogKG5vZGU6IE5vZGUsIGRhdGE/OiBhbnkpID0+IHZvaWQsIGRhdGE/OiBhbnkpIHtcbiAgICBmdW5jKHRoaXMsIGRhdGEpO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXBsZSBzdHJpbmcgdmVyc2lvbiBmb3IgZGVidWdnaW5nLCBqdXN0IHRvIGdldCB0aGUgc3RydWN0dXJlLlxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmtpbmQ7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbnRlcmZhY2VzIGFuZCBhYnN0cmFjdCBjbGFzc2VzIGZvciBNbWxOb2RlIG9iamVjdHNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QXR0cmlidXRlcywgSU5IRVJJVH0gZnJvbSAnLi9BdHRyaWJ1dGVzLmpzJztcbmltcG9ydCB7UHJvcGVydHksIFByb3BlcnR5TGlzdCwgTm9kZSwgQWJzdHJhY3ROb2RlLCBBYnN0cmFjdEVtcHR5Tm9kZSwgTm9kZUNsYXNzfSBmcm9tICcuLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtNbWxGYWN0b3J5fSBmcm9tICcuL01tbEZhY3RvcnkuanMnO1xuaW1wb3J0IHtET01BZGFwdG9yfSBmcm9tICcuLi9ET01BZGFwdG9yLmpzJztcblxuLyoqXG4gKiAgVXNlZCBpbiBzZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKCkgdG8gcGFzcyBvcmlnaW5hdGluZyBub2RlIGtpbmQgYXMgd2VsbCBhcyBwcm9wZXJ0eSB2YWx1ZVxuICovXG5leHBvcnQgdHlwZSBBdHRyaWJ1dGVMaXN0ID0ge1thdHRyaWJ1dGU6IHN0cmluZ106IFtzdHJpbmcsIFByb3BlcnR5XX07XG5cbi8qKlxuICogIFRoZXNlIGFyZSB0aGUgVGVYIGNsYXNzZXMgZm9yIHNwYWNpbmcgY29tcHV0YXRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBURVhDTEFTUyA9IHtcbiAgT1JEOiAgIDAsXG4gIE9QOiAgICAxLFxuICBCSU46ICAgMixcbiAgUkVMOiAgIDMsXG4gIE9QRU46ICA0LFxuICBDTE9TRTogNSxcbiAgUFVOQ1Q6IDYsXG4gIElOTkVSOiA3LFxuICBWQ0VOVEVSOiA4LCAgLy8gVXNlZCBpbiBUZVhBdG9tLCBidXQgbm90IGZvciBzcGFjaW5nXG4gIE5PTkU6ICAgLTFcbn07XG5cbmV4cG9ydCBjb25zdCBURVhDTEFTU05BTUVTID0gWydPUkQnLCAnT1AnLCAnQklOJywgJ1JFTCcsICdPUEVOJywgJ0NMT1NFJywgJ1BVTkNUJywgJ0lOTkVSJywgJ1ZDRU5URVInXTtcblxuLyoqXG4gKiAgVGhlIHNwYWNpbmcgc2l6ZXMgdXNlZCBieSB0aGUgVGVYIHNwYWNpbmcgdGFibGUgYmVsb3cuXG4gKi9cbmNvbnN0IFRFWFNQQUNFTEVOR1RIID0gWycnLCAndGhpbm1hdGhzcGFjZScsICdtZWRpdW1tYXRoc3BhY2UnLCAndGhpY2ttYXRoc3BhY2UnXTtcblxuLyoqXG4gKiBTZWUgVGVYQm9vayBDaGFwdGVyIDE4IChwLiAxNzApXG4gKi9cbmNvbnN0IFRFWFNQQUNFID0gW1xuICBbIDAsIC0xLCAgMiwgIDMsICAwLCAgMCwgIDAsICAxXSwgLy8gT1JEXG4gIFstMSwgLTEsICAwLCAgMywgIDAsICAwLCAgMCwgIDFdLCAvLyBPUFxuICBbIDIsICAyLCAgMCwgIDAsICAyLCAgMCwgIDAsICAyXSwgLy8gQklOXG4gIFsgMywgIDMsICAwLCAgMCwgIDMsICAwLCAgMCwgIDNdLCAvLyBSRUxcbiAgWyAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMF0sIC8vIE9QRU5cbiAgWyAwLCAtMSwgIDIsICAzLCAgMCwgIDAsICAwLCAgMV0sIC8vIENMT1NFXG4gIFsgMSwgIDEsICAwLCAgMSwgIDEsICAxLCAgMSwgIDFdLCAvLyBQVU5DVFxuICBbIDEsIC0xLCAgMiwgIDMsICAxLCAgMCwgIDEsICAxXSAgLy8gSU5ORVJcbl07XG5cbi8qKlxuICogQXR0cmlidXRlcyB1c2VkIHRvIGRldGVybWluZSBpbmRlbnRhdGlvbiBhbmQgc2hpZnRpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGluZGVudEF0dHJpYnV0ZXMgPSBbXG4gICdpbmRlbnRhbGlnbicsICdpbmRlbnRhbGlnbmZpcnN0JyxcbiAgJ2luZGVudHNoaWZ0JywgJ2luZGVudHNoaWZ0Zmlyc3QnXG5dO1xuXG4vKipcbiAqIFRoZSBub2RlcyB0aGF0IGNhbiBiZSBpbiB0aGUgaW50ZXJuYWwgTWF0aE1MIHRyZWVcbiAqL1xuZXhwb3J0IHR5cGUgTU1MTk9ERSA9IE1tbE5vZGUgfCBUZXh0Tm9kZSB8IFhNTE5vZGU7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBNbWxOb2RlIGludGVyZmFjZSAoZXh0ZW5kcyBOb2RlIGludGVyZmFjZSlcbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIE1tbE5vZGUgZXh0ZW5kcyBOb2RlIHtcblxuICAvKipcbiAgICogVGVzdCB2YXJpb3VzIHByb3BlcnRpZXMgb2YgTWF0aE1MIG5vZGVzXG4gICAqL1xuICByZWFkb25seSBpc1Rva2VuOiBib29sZWFuO1xuICByZWFkb25seSBpc0VtYmVsbGlzaGVkOiBib29sZWFuO1xuICByZWFkb25seSBpc1NwYWNlbGlrZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgbGluZWJyZWFrQ29udGFpbmVyOiBib29sZWFuO1xuICByZWFkb25seSBoYXNOZXdMaW5lOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiAgVGhlIGV4cGVjdGVkIG51bWJlciBvZiBjaGlsZHJlbiAoLTEgbWVhbnMgdXNlIGluZmVycmVkIG1yb3cpXG4gICAqL1xuICByZWFkb25seSBhcml0eTogbnVtYmVyO1xuICByZWFkb25seSBpc0luZmVycmVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiAgR2V0IHRoZSBwYXJlbnQgbm9kZSAoc2tpcHBpbmcgaW5mZXJyZWQgbXJvd3MgYW5kXG4gICAqICAgIG90aGVyIG5vZGVzIG1hcmtlZCBhcyBub3RQYXJlbnQpXG4gICAqL1xuICByZWFkb25seSBQYXJlbnQ6IE1tbE5vZGU7XG4gIHJlYWRvbmx5IG5vdFBhcmVudDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGFjdHVhbCBwYXJlbnQgaW4gdGhlIHRyZWVcbiAgICovXG4gIHBhcmVudDogTW1sTm9kZTtcblxuICAvKipcbiAgICogIHZhbHVlcyBuZWVkZWQgZm9yIFRlWCBzcGFjaW5nIGNvbXB1dGF0aW9uc1xuICAgKi9cbiAgdGV4Q2xhc3M6IG51bWJlcjtcbiAgcHJldkNsYXNzOiBudW1iZXI7XG4gIHByZXZMZXZlbDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiAgVGhlIGF0dHJpYnV0ZXMgKGV4cGxpY2l0IGFuZCBpbmhlcml0ZWQpIGZvciB0aGlzIG5vZGVcbiAgICovXG4gIGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZXM7XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge01tbE5vZGV9ICBGb3IgZW1iZWxsaXNoZWQgb3BlcmF0b3JzLCB0aGUgY2hpbGQgbm9kZSB0aGF0IGNvbnRhaW5zIHRoZVxuICAgKiAgICAgICAgICAgICAgICAgICAgY29yZSA8bW8+IG5vZGUuICBGb3Igbm9uLWVtYmVsbGlzaGVkIG5vZGVzLCB0aGUgb3JpZ2luYWwgbm9kZS5cbiAgICovXG4gIGNvcmUoKTogTW1sTm9kZTtcblxuICAvKipcbiAgICogQHJldHVybiB7TW1sTm9kZX0gIEZvciBlbWJlbGxpc2hlZCBvcGVyYXRvcnMsIHRoZSBjb3JlIDxtbz4gZWxlbWVudCAoYXQgd2hhdGV2ZXJcbiAgICogICAgICAgICAgICAgICAgICAgIGRlcHRoKS4gIEZvciBub24tZW1iZWxsaXNoZWQgbm9kZXMsIHRoZSBvcmlnaW5hbCBub2RlIGl0c2VsZi5cbiAgICovXG4gIGNvcmVNTygpOiBNbWxOb2RlO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgRm9yIGVtYmVsbGlzaGVkIG9wZXJhdG9ycywgdGhlIGluZGV4IG9mIHRoZSBjaGlsZCBub2RlIGNvbnRhaW5pbmdcbiAgICogICAgICAgICAgICAgICAgICAgIHRoZSBjb3JlIDxtbz4uICBGb3Igbm9uLWVtYmVsbGlzaGVkIG5vZGVzLCAwLlxuICAgKi9cbiAgY29yZUluZGV4KCk6IG51bWJlcjtcblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSAgVGhlIGluZGV4IG9mIHRoaXMgbm9kZSBpbiBpdHMgcGFyZW50J3MgY2hpbGROb2RlcyBhcnJheS5cbiAgICovXG4gIGNoaWxkUG9zaXRpb24oKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IHByZXYgIFRoZSBub2RlIHRoYXQgaXMgYmVmb3JlIHRoaXMgb25lIGZvciBUZVggc3BhY2luZyBwdXJwb3Nlc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgIChub3QgYWxsIG5vZGVzIGNvdW50IGluIFRlWCBtZWFzdXJlbWVudHMpXG4gICAqIEByZXR1cm4ge01tbE5vZGV9ICBUaGUgbm9kZSB0aGF0IHNob3VsZCBiZSB0aGUgcHJldmlvdXMgbm9kZSBmb3IgdGhlIG5leHQgb25lXG4gICAqICAgICAgICAgICAgICAgICAgICBpbiB0aGUgdHJlZSAodXN1YWxseSwgZWl0aGVyIHRoZSBsYXN0IGNoaWxkLCBvciB0aGUgbm9kZSBpdHNlbGYpXG4gICAqL1xuICBzZXRUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKTogTW1sTm9kZTtcblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIHNwYWNpbmcgdG8gdXNlIGJlZm9yZSB0aGlzIGVsZW1lbnQgKG9uZSBvZiBURVhTUEFDRUxFTkdUSCBhcnJheSBhYm92ZSlcbiAgICovXG4gIHRleFNwYWNpbmcoKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgVGhlIGNvcmUgbW8gZWxlbWVudCBoYXMgYW4gZXhwbGljaXQgJ2Zvcm0nLCAnbHNwYWNlJywgb3IgJ3JzcGFjZScgYXR0cmlidXRlXG4gICAqL1xuICBoYXNTcGFjaW5nQXR0cmlidXRlcygpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBub2RlcyBpbmhlcml0ZWQgYXR0cmlidXRlcywgYW5kIHB1c2hlcyB0aGVtIHRvIHRoZSBub2RlcyBjaGlsZHJlbi5cbiAgICpcbiAgICogQHBhcmFtIHtBdHRyaWJ1dGVMaXN0fSBhdHRyaWJ1dGVzICBUaGUgbGlzdCBvZiBpbmhlcml0YWJsZSBhdHRyaWJ1dGVzICh3aXRoIHRoZSBub2RlIGtpbmRzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB3aGljaCB0aGV5IGNhbWUpXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzcGxheSAgICAgICAgICAgVGhlIGRpc3BsYXlzdHlsZSB0byBpbmhlcml0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbCAgICAgICAgICAgICAgVGhlIHNjcmlwdGxldmVsIHRvIGluaGVyaXRcbiAgICogQHBhcmFtIHtib29sZWFufSBwcmltZSAgICAgICAgICAgICBUaGUgVGVYIHByaW1lIHN0eWxlIHRvIGluaGVyaXQgKFQgdnMuIFQnLCBldGMpLlxuICAgKi9cbiAgc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVMaXN0LCBkaXNwbGF5OiBib29sZWFuLCBsZXZlbDogbnVtYmVyLCBwcmltZTogYm9vbGVhbik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbm9kZXMgaW5oZXJpdGVkIGF0dHJpYnV0ZXMgYmFzZWQgb24gdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGdpdmVuIG5vZGVcbiAgICogICAodXNlZCBmb3IgY3JlYXRpbmcgZXh0cmEgbm9kZXMgaW4gdGhlIHRyZWUgYWZ0ZXIgc2V0SW5oZXJpdGVkQXR0cmlidXRlcyBoYXMgYWxyZWFkeSBydW4pXG4gICAqXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSAgIFRoZSBub2RlIHdob3NlIGF0dHJpYnV0ZXMgYXJlIHRvIGJlIHVzZWQgYXMgYSB0ZW1wbGF0ZVxuICAgKi9cbiAgaW5oZXJpdEF0dHJpYnV0ZXNGcm9tKG5vZGU6IE1tbE5vZGUpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBjdXJyZW50IG5vZGUgd2l0aCBhbiBlcnJvciBtZXNzYWdlIChvciB0aGUgbmFtZSBvZiB0aGUgbm9kZSlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgICAgICAgICBUaGUgZXJyb3IgbWVzc2FnZSB0byB1c2VcbiAgICogQHBhcmFtIHtQcm9wZXJ0eUxpc3R9IG9wdGlvbnMgICBUaGUgb3B0aW9ucyB0ZWxsaW5nIGhvdyBtdWNoIHRvIHZlcmlmeVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3J0ICAgICAgICAgIFRydWUgbWVhbnMgdXNlIGp1c3QgdGhlIGtpbmQgaWYgbm90IHVzaW5nIGZ1bGwgZXJyb3JzXG4gICAqIEByZXR1cm4ge01tbE5vZGV9ICAgICAgICAgICAgICAgVGhlIGNvbnN0cnV0ZWQgbWVycm9yXG4gICAqL1xuICBtRXJyb3IobWVzc2FnZTogc3RyaW5nLCBvcHRpb25zOiBQcm9wZXJ0eUxpc3QsIHNob3J0PzogYm9vbGVhbik6IE1tbE5vZGU7XG5cbiAgLyoqXG4gICAqIENoZWNrIGludGVncml0eSBvZiBNYXRoTUwgc3RydWN0dXJlXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBvcHRpb25zICBUaGUgb3B0aW9ucyBjb250cm9sbGluZyB0aGUgY2hlY2tcbiAgICovXG4gIHZlcmlmeVRyZWUob3B0aW9ucz86IFByb3BlcnR5TGlzdCk6IHZvaWQ7XG59XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIE1tbE5vZGUgY2xhc3MgaW50ZXJmYWNlIChleHRlbmRzIHRoZSBOb2RlQ2xhc3MpXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBNbWxOb2RlQ2xhc3MgZXh0ZW5kcyBOb2RlQ2xhc3Mge1xuXG4gIC8qKlxuICAgKiAgVGhlIGxpc3Qgb2YgZGVmYXVsdCBhdHRyaWJ1dGUgdmFsdWVzIGZvciBub2RlcyBvZiB0aGlzIGNsYXNzXG4gICAqL1xuICBkZWZhdWx0cz86IFByb3BlcnR5TGlzdDtcblxuICAvKipcbiAgICogQW4gTW1sTm9kZSB0YWtlcyBhIE5vZGVGYWN0b3J5IChzbyBpdCBjYW4gY3JlYXRlIGFkZGl0aW9uYWwgbm9kZXMgYXMgbmVlZGVkKSwgYSBsaXN0XG4gICAqICAgb2YgYXR0cmlidXRlcywgYW5kIGFuIGFycmF5IG9mIGNoaWxkcmVuIGFuZCByZXR1cm5zIHRoZSBkZXNpcmVkIE1tbE5vZGUgd2l0aFxuICAgKiAgIHRob3NlIGF0dHJpYnV0ZXMgYW5kIGNoaWxkcmVuXG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge01tbEZhY3Rvcnl9IGZhY3RvcnkgICAgICAgVGhlIE1hdGhNTCBub2RlIGZhY3RvcnkgdG8gdXNlIHRvIGNyZWF0ZSBhZGRpdGlvbmFsIG5vZGVzXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBhdHRyaWJ1dGVzICBUaGUgbGlzdCBvZiBpbml0aWFsIGF0dHJpYnV0ZXMgZm9yIHRoZSBub2RlXG4gICAqIEBwYXJhbSB7TW1sTm9kZVtdfSBjaGlsZHJlbiAgICAgICBUaGUgaW5pdGlhbCBjaGlsZCBub2RlcyAobW9yZSBjYW4gYmUgYWRkZWQgbGF0ZXIpXG4gICAqL1xuICBuZXcgKGZhY3Rvcnk6IE1tbEZhY3RvcnksIGF0dHJpYnV0ZXM/OiBQcm9wZXJ0eUxpc3QsIGNoaWxkcmVuPzogTW1sTm9kZVtdKTogTW1sTm9kZTtcblxufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBhYnN0cmFjdCBNbWxOb2RlIGNsYXNzIChleHRlbmRzIHRoZSBBYnN0cmFjdE5vZGUgY2xhc3MgYW5kIGltcGxlbWVudHNcbiAqICB0aGUgSU1tbE5vZGUgaW50ZXJmYWNlKVxuICovXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE1tbE5vZGUgZXh0ZW5kcyBBYnN0cmFjdE5vZGUgaW1wbGVtZW50cyBNbWxOb2RlIHtcblxuICAvKipcbiAgICogVGhlIHByb3BlcnRpZXMgY29tbW9uIHRvIGFsbCBNYXRoTUwgbm9kZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICBtYXRoYmFja2dyb3VuZDogSU5IRVJJVCxcbiAgICBtYXRoY29sb3I6IElOSEVSSVQsXG4gICAgbWF0aHNpemU6IElOSEVSSVQsICAvLyB0ZWNobmljYWxseSBvbmx5IGZvciB0b2tlbiBlbGVtZW50cywgYnV0IDxtc3R5bGUgbWF0aHNpemU9XCIuLi5cIj4gc2hvdWxkXG4gICAgLy8gICAgc2NhbGUgYWxsIHNwYWNlcywgZnJhY3Rpb25zLCBldGMuXG4gICAgZGlyOiBJTkhFUklUXG4gIH07XG5cbiAgLyoqXG4gICAqICBUaGlzIGxpc3RzIHByb3BlcnRpZXMgdGhhdCBkbyBOT1QgZ2V0IGluaGVyaXRlZCBiZXR3ZWVuIHNwZWNpZmljIGtpbmRzXG4gICAqICBvZiBub2Rlcy4gIFRoZSBvdXRlciBrZXlzIGFyZSB0aGUgbm9kZSBraW5kcyB0aGF0IGFyZSBiZWluZyBpbmhlcml0ZWQgRlJPTSxcbiAgICogIHdoaWxlIHRoZSBzZWNvbmQgbGV2ZWwgb2Yga2V5cyBhcmUgdGhlIG5vZGVzIHRoYXQgSU5IRVJJVCB0aGUgdmFsdWVzLiAgQW55XG4gICAqICBwcm9wZXJ0eSBhcHBlYXJpbmcgaW4gdGhlIGlubmVybW9zdCBsaXN0IGlzIE5PVCBpbmhlcml0ZWQgYnkgdGhlIHBhaXIuXG4gICAqXG4gICAqICBGb3IgZXhhbXBsZSwgYW4gbXBhZGRlZCBlbGVtZW50IHdpbGwgbm90IGluaGVyaXQgYSB3aWR0aCBhdHRyaWJ1dGUgZnJvbSBhbiBtc3R5bGUgbm9kZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbm9Jbmhlcml0OiB7W25vZGUxOiBzdHJpbmddOiB7W25vZGUyOiBzdHJpbmddOiB7W2F0dHJpYnV0ZTogc3RyaW5nXTogYm9vbGVhbn19fSA9IHtcbiAgICBtc3R5bGU6IHtcbiAgICAgIG1wYWRkZWQ6IHt3aWR0aDogdHJ1ZSwgaGVpZ2h0OiB0cnVlLCBkZXB0aDogdHJ1ZSwgbHNwYWNlOiB0cnVlLCB2b2Zmc2V0OiB0cnVlfSxcbiAgICAgIG10YWJsZTogIHt3aWR0aDogdHJ1ZSwgaGVpZ2h0OiB0cnVlLCBkZXB0aDogdHJ1ZSwgYWxpZ246IHRydWV9XG4gICAgfSxcbiAgICBtYWxpZ25ncm91cDoge1xuICAgICAgbXJvdzoge2dyb3VwYWxpZ246IHRydWV9LFxuICAgICAgbXRhYmxlOiB7Z3JvdXBhbGlnbjogdHJ1ZX1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgbGlzdHMgdGhlIGF0dHJpYnV0ZXMgdGhhdCBzaG91bGQgYWx3YXlzIGJlIGluaGVyaXRlZCxcbiAgICogICBldmVuIHdoZW4gdGhlcmUgaXMgbm8gZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWx3YXlzSW5oZXJpdDoge1tuYW1lOiBzdHJpbmddOiBib29sZWFufSA9IHtcbiAgICBzY3JpcHRtaW5zaXplOiB0cnVlLFxuICAgIHNjcmlwdHNpemVtdWx0aXBsaWVyOiB0cnVlXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgdGhlIGxpc3Qgb2Ygb3B0aW9ucyBmb3IgdGhlIHZlcmlmeVRyZWUoKSBtZXRob2RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmVyaWZ5RGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICBjaGVja0FyaXR5OiB0cnVlLFxuICAgIGNoZWNrQXR0cmlidXRlczogZmFsc2UsXG4gICAgZnVsbEVycm9yczogZmFsc2UsXG4gICAgZml4TW11bHRpc2NyaXB0czogdHJ1ZSxcbiAgICBmaXhNdGFibGVzOiB0cnVlXG4gIH07XG5cbiAgLypcbiAgICogVGhlc2UgZGVmYXVsdCB0byBiZWluZyB1bnNldCAodGhlIG5vZGUgZG9lc24ndCBwYXJ0aWNpcGF0ZSBpbiBzcGFjaW5nIGNhbGN1bGF0aW9ucykuXG4gICAqIFRoZSBjb3JyZWN0IHZhbHVlcyBhcmUgcHJvZHVjZWQgd2hlbiB0aGUgc2V0VGVYY2xhc3MoKSBtZXRob2QgaXMgY2FsbGVkIG9uIHRoZSB0cmVlLlxuICAgKi9cblxuICAvKipcbiAgICogVGhlIFRlWCBjbGFzcyBmb3IgdGhlIHByZWNlZGluZyBub2RlXG4gICAqL1xuICBwdWJsaWMgcHJldkNsYXNzOiBudW1iZXIgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NyaXB0bGV2ZWwgb2YgdGhlIHByZWNlZGluZyBub2RlXG4gICAqL1xuICBwdWJsaWMgcHJldkxldmVsOiBudW1iZXIgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGlzIG5vZGUncyBhdHRyaWJ1dGVzXG4gICAqL1xuICBwdWJsaWMgYXR0cmlidXRlczogQXR0cmlidXRlcztcblxuICAvKipcbiAgICogIENoaWxkIG5vZGVzIGFyZSBNbWxOb2RlcyAoc3BlY2lhbCBjYXNlIG9mIE5vZGVzKS5cbiAgICovXG4gIHB1YmxpYyBjaGlsZE5vZGVzOiBNbWxOb2RlW107XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgaXMgYW4gTW1sTm9kZVxuICAgKi9cbiAgcHVibGljIHBhcmVudDogTW1sTm9kZTtcblxuICAvKipcbiAgICogVGhlIG5vZGUgZmFjdG9yeSBpcyBhbiBNbWxGYWN0b3J5XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZmFjdG9yeTogTW1sRmFjdG9yeTtcblxuICAvKipcbiAgICogVGhlIFRlWCBjbGFzcyBvZiB0aGlzIG5vZGUgKG9idGFpbmVkIHZpYSB0ZXhDbGFzcyBiZWxvdylcbiAgICovXG4gIHByb3RlY3RlZCB0ZXhjbGFzczogbnVtYmVyID0gbnVsbDtcblxuICAvKipcbiAgICogIENyZWF0ZSBhbiBNbWxOb2RlOlxuICAgKiAgICBJZiB0aGUgYXJpdHkgaXMgLTEsIGFkZCB0aGUgaW5mZXJyZWQgcm93IChjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5KVxuICAgKiAgICBBZGQgdGhlIGNoaWxkcmVuLCBpZiBhbnlcbiAgICogICAgQ3JlYXRlIHRoZSBBdHRyaWJ1dGUgb2JqZWN0IGZyb20gdGhlIGNsYXNzIGRlZmF1bHRzIGFuZCB0aGUgZ2xvYmFsIGRlZmF1bHRzICh0aGUgbWF0aCBub2RlIGRlZmF1bHRzKVxuICAgKlxuICAgKiAgQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBNbWxGYWN0b3J5LCBhdHRyaWJ1dGVzOiBQcm9wZXJ0eUxpc3QgPSB7fSwgY2hpbGRyZW46IE1tbE5vZGVbXSA9IFtdKSB7XG4gICAgc3VwZXIoZmFjdG9yeSk7XG4gICAgaWYgKHRoaXMuYXJpdHkgPCAwKSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXMgPSBbZmFjdG9yeS5jcmVhdGUoJ2luZmVycmVkTXJvdycpXTtcbiAgICAgIHRoaXMuY2hpbGROb2Rlc1swXS5wYXJlbnQgPSB0aGlzO1xuICAgIH1cbiAgICB0aGlzLnNldENoaWxkcmVuKGNoaWxkcmVuKTtcbiAgICB0aGlzLmF0dHJpYnV0ZXMgPSBuZXcgQXR0cmlidXRlcyhcbiAgICAgIGZhY3RvcnkuZ2V0Tm9kZUNsYXNzKHRoaXMua2luZCkuZGVmYXVsdHMsXG4gICAgICBmYWN0b3J5LmdldE5vZGVDbGFzcygnbWF0aCcpLmRlZmF1bHRzXG4gICAgKTtcbiAgICB0aGlzLmF0dHJpYnV0ZXMuc2V0TGlzdChhdHRyaWJ1dGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBrZWVwSWRzICAgVHJ1ZSB0byBjb3B5IGlkIGF0dHJpYnV0ZXMsIGZhbHNlIHRvIHNraXAgdGhlbS5cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWF5IGNhdXNlIGVycm9yIGluIHRoZSBmdXR1cmUsIHNpbmNlIG5vdCBwYXJ0IG9mIHRoZSBpbnRlcmZhY2UuKVxuICAgKiBAcmV0dXJuIHtBYnN0cmFjdE1tbE5vZGV9ICBUaGUgY29waWVkIG5vZGUgdHJlZS5cbiAgICovXG4gIHB1YmxpYyBjb3B5KGtlZXBJZHM6IGJvb2xlYW4gPSBmYWxzZSk6IEFic3RyYWN0TW1sTm9kZSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZmFjdG9yeS5jcmVhdGUodGhpcy5raW5kKSBhcyBBYnN0cmFjdE1tbE5vZGU7XG4gICAgbm9kZS5wcm9wZXJ0aWVzID0gey4uLnRoaXMucHJvcGVydGllc307XG4gICAgaWYgKHRoaXMuYXR0cmlidXRlcykge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlcy5nZXRBbGxBdHRyaWJ1dGVzKCk7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICAgICAgaWYgKG5hbWUgIT09ICdpZCcgfHwga2VlcElkcykge1xuICAgICAgICAgIG5vZGUuYXR0cmlidXRlcy5zZXQobmFtZSwgYXR0cmlidXRlc1tuYW1lXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuY2hpbGROb2RlcyAmJiB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBsZXQgY2hpbGRyZW4gPSB0aGlzLmNoaWxkTm9kZXMgYXMgTW1sTm9kZVtdO1xuICAgICAgaWYgKGNoaWxkcmVuLmxlbmd0aCA9PT0gMSAmJiBjaGlsZHJlblswXS5pc0luZmVycmVkKSB7XG4gICAgICAgIGNoaWxkcmVuID0gY2hpbGRyZW5bMF0uY2hpbGROb2RlcyBhcyBNbWxOb2RlW107XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoY2hpbGQuY29weSgpIGFzIE1tbE5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUuY2hpbGROb2Rlcy5wdXNoKG51bGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBUZVggY2xhc3MgZm9yIHRoaXMgbm9kZVxuICAgKi9cbiAgcHVibGljIGdldCB0ZXhDbGFzcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRleGNsYXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBUZVggY2xhc3MgZm9yIHRoaXMgbm9kZVxuICAgKi9cbiAgcHVibGljIHNldCB0ZXhDbGFzcyh0ZXhDbGFzczogbnVtYmVyKSB7XG4gICAgdGhpcy50ZXhjbGFzcyA9IHRleENsYXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICB0cnVlIGlmIHRoaXMgaXMgYSB0b2tlbiBub2RlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVG9rZW4oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICB0cnVlIGlmIHRoaXMgaXMgYW4gZW1iZWxsaXNoZWQgb3BlcmF0b3JcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNFbWJlbGxpc2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIHRydWUgaWYgdGhpcyBpcyBhIHNwYWNlLWxpa2Ugbm9kZVxuICAgKi9cbiAgcHVibGljIGdldCBpc1NwYWNlbGlrZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIHRydWUgaWYgdGhpcyBpcyBhIG5vZGUgdGhhdCBzdXBwb3J0cyBsaW5lYnJlYWtzIGluIGl0cyBjaGlsZHJlblxuICAgKi9cbiAgcHVibGljIGdldCBsaW5lYnJlYWtDb250YWluZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICB0cnVlIGlmIHRoaXMgbm9kZSBjb250YWlucyBhIGxpbmUgYnJlYWtcbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzTmV3TGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSAgVGhlIG51bWJlciBvZiBjaGlsZHJlbiBhbGxvd2VkLCBvciBJbmZpbml0eSBmb3IgYW55IG51bWJlcixcbiAgICogICAgICAgICAgICAgICAgICAgb3IgLTEgZm9yIHdoZW4gYW4gaW5mZXJyZWQgcm93IGlzIG5lZWRlZCBmb3IgdGhlIGNoaWxkcmVuLlxuICAgKiAgICAgICAgICAgICAgICAgICBTcGVjaWFsIGNhc2UgaXMgMSwgbWVhbmluZyBhdCBsZWFzdCBvbmUgKG90aGVyIG51bWJlcnNcbiAgICogICAgICAgICAgICAgICAgICAgbWVhbiBleGFjdGx5IHRoYXQgbWFueSkuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIEluZmluaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICB0cnVlIGlmIHRoaXMgaXMgYW4gaW5mZXJyZWQgbXJvd1xuICAgKi9cbiAgcHVibGljIGdldCBpc0luZmVycmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSAgVGhlIGxvZ2ljYWwgcGFyZW50IG9mIHRoaXMgbm9kZSAoc2tpcHBpbmcgb3ZlciBpbmZlcnJlZCByb3dzXG4gICAqICAgICAgICAgICAgICAgICAgICAgIHNvbWUgb3RoZXIgbm9kZSB0eXBlcylcbiAgICovXG4gIHB1YmxpYyBnZXQgUGFyZW50KCk6IE1tbE5vZGUge1xuICAgIGxldCBwYXJlbnQgPSB0aGlzLnBhcmVudDtcbiAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5ub3RQYXJlbnQpIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5QYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiBwYXJlbnQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIHRydWUgaWYgdGhpcyBpcyBhIG5vZGUgdGhhdCBkb2Vzbid0IGNvdW50IGFzIGEgcGFyZW50IG5vZGUgaW4gUGFyZW50KClcbiAgICovXG4gIHB1YmxpYyBnZXQgbm90UGFyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGVyZSBpcyBhbiBpbmZlcnJlZCByb3csIHRoZSB0aGUgY2hpbGRyZW4gb2YgdGhhdCBpbnN0ZWFkXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldENoaWxkcmVuKGNoaWxkcmVuOiBNbWxOb2RlW10pIHtcbiAgICBpZiAodGhpcy5hcml0eSA8IDApIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbMF0uc2V0Q2hpbGRyZW4oY2hpbGRyZW4pO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuc2V0Q2hpbGRyZW4oY2hpbGRyZW4pO1xuICB9XG4gIC8qKlxuICAgKiBJZiB0aGVyZSBpcyBhbiBpbmZlcnJlZCByb3csIGFwcGVuZCB0byB0aGF0IGluc3RlYWQuXG4gICAqIElmIGEgY2hpbGQgaXMgaW5mZXJyZWQsIGFwcGVuZCBpdHMgY2hpbGRyZW4gaW5zdGVhZC5cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYXBwZW5kQ2hpbGQoY2hpbGQ6IE1tbE5vZGUpIHtcbiAgICBpZiAodGhpcy5hcml0eSA8IDApIHtcbiAgICAgIHRoaXMuY2hpbGROb2Rlc1swXS5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgICByZXR1cm4gY2hpbGQ7XG4gICAgfVxuICAgIGlmIChjaGlsZC5pc0luZmVycmVkKSB7XG4gICAgICAvL1xuICAgICAgLy8gIElmIHdlIGNhbiBoYXZlIGFyYml0cmFyeSBjaGlsZHJlbiwgcmVtb3ZlIHRoZSBpbmZlcnJlZCBtcm93XG4gICAgICAvLyAgKGp1c3QgYWRkIGl0cyBjaGlsZHJlbikuXG4gICAgICAvL1xuICAgICAgaWYgKHRoaXMuYXJpdHkgPT09IEluZmluaXR5KSB7XG4gICAgICAgIGNoaWxkLmNoaWxkTm9kZXMuZm9yRWFjaCgobm9kZSkgPT4gc3VwZXIuYXBwZW5kQ2hpbGQobm9kZSkpO1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICB9XG4gICAgICAvL1xuICAgICAgLy8gIE90aGVyd2lzZSwgY29udmVydCB0aGUgaW5mZXJyZWQgbXJvdyB0byBhbiBleHBsaWNpdCBtcm93XG4gICAgICAvL1xuICAgICAgY29uc3Qgb3JpZ2luYWwgPSBjaGlsZDtcbiAgICAgIGNoaWxkID0gdGhpcy5mYWN0b3J5LmNyZWF0ZSgnbXJvdycpO1xuICAgICAgY2hpbGQuc2V0Q2hpbGRyZW4ob3JpZ2luYWwuY2hpbGROb2Rlcyk7XG4gICAgICBjaGlsZC5hdHRyaWJ1dGVzID0gb3JpZ2luYWwuYXR0cmlidXRlcztcbiAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBvcmlnaW5hbC5nZXRQcm9wZXJ0eU5hbWVzKCkpIHtcbiAgICAgICAgY2hpbGQuc2V0UHJvcGVydHkobmFtZSwgb3JpZ2luYWwuZ2V0UHJvcGVydHkobmFtZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICB9XG4gIC8qKlxuICAgKiBJZiB0aGVyZSBpcyBhbiBpbmZlcnJlZCByb3csIHJlbW92ZSB0aGUgY2hpbGQgZnJvbSB0aGVyZVxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlQ2hpbGQobmV3Q2hpbGQ6IE1tbE5vZGUsIG9sZENoaWxkOiBNbWxOb2RlKSB7XG4gICAgaWYgKHRoaXMuYXJpdHkgPCAwKSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXNbMF0ucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7XG4gICAgICByZXR1cm4gbmV3Q2hpbGQ7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjb3JlKCk6IE1tbE5vZGUge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcmVNTygpOiBNbWxOb2RlIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjb3JlSW5kZXgoKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY2hpbGRQb3NpdGlvbigpIHtcbiAgICBsZXQgY2hpbGQ6IE1tbE5vZGUgPSB0aGlzO1xuICAgIGxldCBwYXJlbnQgPSBjaGlsZC5wYXJlbnQ7XG4gICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQubm90UGFyZW50KSB7XG4gICAgICBjaGlsZCA9IHBhcmVudDtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5wYXJlbnQ7XG4gICAgfVxuICAgIGlmIChwYXJlbnQpIHtcbiAgICAgIGxldCBpID0gMDtcbiAgICAgIGZvciAoY29uc3Qgbm9kZSBvZiBwYXJlbnQuY2hpbGROb2Rlcykge1xuICAgICAgICBpZiAobm9kZSA9PT0gY2hpbGQpIHtcbiAgICAgICAgICByZXR1cm4gaTtcbiAgICAgICAgfVxuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldFRlWGNsYXNzKHByZXY6IE1tbE5vZGUpOiBNbWxOb2RlIHtcbiAgICB0aGlzLmdldFByZXZDbGFzcyhwcmV2KTtcbiAgICByZXR1cm4gKHRoaXMudGV4Q2xhc3MgIT0gbnVsbCA/IHRoaXMgOiBwcmV2KTtcbiAgfVxuICAvKipcbiAgICogRm9yIGVtYmVsbGlzaGVkIG9wZXJhdG9ycywgZ2V0IHRoZSBkYXRhIGZyb20gdGhlIGNvcmUgYW5kIGNsZWFyIHRoZSBjb3JlXG4gICAqXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gY29yZSAgVGhlIGNvcmUgPG1vPiBmb3IgdGhpcyBub2RlXG4gICAqL1xuICBwcm90ZWN0ZWQgdXBkYXRlVGVYY2xhc3MoY29yZTogTW1sTm9kZSkge1xuICAgIGlmIChjb3JlKSB7XG4gICAgICB0aGlzLnByZXZDbGFzcyA9IGNvcmUucHJldkNsYXNzO1xuICAgICAgdGhpcy5wcmV2TGV2ZWwgPSBjb3JlLnByZXZMZXZlbDtcbiAgICAgIGNvcmUucHJldkNsYXNzID0gY29yZS5wcmV2TGV2ZWwgPSBudWxsO1xuICAgICAgdGhpcy50ZXhDbGFzcyA9IGNvcmUudGV4Q2xhc3M7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIHByZXZpb3VzIGVsZW1lbnQncyB0ZXhDbGFzcyBhbmQgc2NyaXB0bGV2ZWxcbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBwcmV2ICBUaGUgcHJldmlvdXMgbm9kZSB0byB0aGlzIG9uZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFByZXZDbGFzcyhwcmV2OiBNbWxOb2RlKSB7XG4gICAgaWYgKHByZXYpIHtcbiAgICAgIHRoaXMucHJldkNsYXNzID0gcHJldi50ZXhDbGFzcztcbiAgICAgIHRoaXMucHJldkxldmVsID0gcHJldi5hdHRyaWJ1dGVzLmdldCgnc2NyaXB0bGV2ZWwnKSBhcyBudW1iZXI7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIHJldHVybnMgdGhlIHNwYWNpbmcgdG8gdXNlIGJlZm9yZSB0aGlzIG5vZGVcbiAgICovXG4gIHB1YmxpYyB0ZXhTcGFjaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IHByZXZDbGFzcyA9ICh0aGlzLnByZXZDbGFzcyAhPSBudWxsID8gdGhpcy5wcmV2Q2xhc3MgOiBURVhDTEFTUy5OT05FKTtcbiAgICBsZXQgdGV4Q2xhc3MgPSB0aGlzLnRleENsYXNzIHx8IFRFWENMQVNTLk9SRDtcbiAgICBpZiAocHJldkNsYXNzID09PSBURVhDTEFTUy5OT05FIHx8IHRleENsYXNzID09PSBURVhDTEFTUy5OT05FKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIGlmIChwcmV2Q2xhc3MgPT09IFRFWENMQVNTLlZDRU5URVIpIHtcbiAgICAgIHByZXZDbGFzcyA9IFRFWENMQVNTLk9SRDtcbiAgICB9XG4gICAgaWYgKHRleENsYXNzID09PSBURVhDTEFTUy5WQ0VOVEVSKSB7XG4gICAgICB0ZXhDbGFzcyA9IFRFWENMQVNTLk9SRDtcbiAgICB9XG4gICAgbGV0IHNwYWNlID0gVEVYU1BBQ0VbcHJldkNsYXNzXVt0ZXhDbGFzc107XG4gICAgaWYgKCh0aGlzLnByZXZMZXZlbCA+IDAgfHwgdGhpcy5hdHRyaWJ1dGVzLmdldCgnc2NyaXB0bGV2ZWwnKSA+IDApICYmIHNwYWNlID49IDApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIFRFWFNQQUNFTEVOR1RIW01hdGguYWJzKHNwYWNlKV07XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIFRoZSBjb3JlIG1vIGVsZW1lbnQgaGFzIGFuIGV4cGxpY2l0ICdmb3JtJyBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyBoYXNTcGFjaW5nQXR0cmlidXRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc0VtYmVsbGlzaGVkICYmIHRoaXMuY29yZU1PKCkuaGFzU3BhY2luZ0F0dHJpYnV0ZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbmhlcml0ZWQgcHJvcGVydGlzIGZvciB0aGlzIG5vZGUsIGFuZCBwdXNoZXMgaW5oZXJpdGVkIHByb3BlcnRpZXMgdG8gdGhlIGNoaWxkcmVuXG4gICAqXG4gICAqICAgRm9yIGVhY2ggaW5oZXJpdGFibGUgYXR0cmlidXRlOlxuICAgKiAgICAgSWYgdGhlIG5vZGUgaGFzIGEgZGVmYXVsdCBmb3IgdGhpcyBhdHRyaWJ1dGUsIHRyeSB0byBpbmhlcml0IGl0XG4gICAqICAgICAgIGJ1dCBjaGVjayBpZiB0aGUgbm9Jbmhlcml0IG9iamVjdCBwcmV2ZW50cyB0aGF0LlxuICAgKiAgIElmIHRoZSBub2RlIGRvZXNuJ3QgaGF2ZSBhbiBleHBsaWNpdCBkaXNwbGF5c3R5bGUsIGluaGVyaXQgaXRcbiAgICogICBJZiB0aGUgbm9kZSBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQgc2NyaXB0c3R5bGUsIGluaGVyaXQgaXRcbiAgICogICBJZiB0aGUgcHJpbWUgc3R5bGUgaXMgdHJ1ZSwgc2V0IGl0IGFzIGEgcHJvcGVydHkgKGl0IGlzIG5vdCBhIE1hdGhNTCBhdHRyaWJ1dGUpXG4gICAqICAgQ2hlY2sgdGhhdCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIGlzIGNvcnJlY3RcbiAgICogICBGaW5hbGx5LCBwdXNoIGFueSBpbmhlcml0ZWQgYXR0cmlidXRlcyB0byB0ZWggY2hpbGRyZW4uXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBib29sZWFuID0gZmFsc2UsIGxldmVsOiBudW1iZXIgPSAwLCBwcmltZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgbGV0IGRlZmF1bHRzID0gdGhpcy5hdHRyaWJ1dGVzLmdldEFsbERlZmF1bHRzKCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICAgIGlmIChkZWZhdWx0cy5oYXNPd25Qcm9wZXJ0eShrZXkpIHx8IEFic3RyYWN0TW1sTm9kZS5hbHdheXNJbmhlcml0Lmhhc093blByb3BlcnR5KGtleSkpIHtcbiAgICAgICAgbGV0IFtub2RlLCB2YWx1ZV0gPSBhdHRyaWJ1dGVzW2tleV07XG4gICAgICAgIGxldCBub2luaGVyaXQgPSAoQWJzdHJhY3RNbWxOb2RlLm5vSW5oZXJpdFtub2RlXSB8fCB7fSlbdGhpcy5raW5kXSB8fCB7fTtcbiAgICAgICAgaWYgKCFub2luaGVyaXRba2V5XSkge1xuICAgICAgICAgIHRoaXMuYXR0cmlidXRlcy5zZXRJbmhlcml0ZWQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGRpc3BsYXlzdHlsZSA9IHRoaXMuYXR0cmlidXRlcy5nZXRFeHBsaWNpdCgnZGlzcGxheXN0eWxlJyk7XG4gICAgaWYgKGRpc3BsYXlzdHlsZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXMuc2V0SW5oZXJpdGVkKCdkaXNwbGF5c3R5bGUnLCBkaXNwbGF5KTtcbiAgICB9XG4gICAgbGV0IHNjcmlwdGxldmVsID0gdGhpcy5hdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdzY3JpcHRsZXZlbCcpO1xuICAgIGlmIChzY3JpcHRsZXZlbCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXMuc2V0SW5oZXJpdGVkKCdzY3JpcHRsZXZlbCcsIGxldmVsKTtcbiAgICB9XG4gICAgaWYgKHByaW1lKSB7XG4gICAgICB0aGlzLnNldFByb3BlcnR5KCd0ZXhwcmltZXN0eWxlJywgcHJpbWUpO1xuICAgIH1cbiAgICBsZXQgYXJpdHkgPSB0aGlzLmFyaXR5O1xuICAgIGlmIChhcml0eSA+PSAwICYmIGFyaXR5ICE9PSBJbmZpbml0eSAmJiAoKGFyaXR5ID09PSAxICYmIHRoaXMuY2hpbGROb2Rlcy5sZW5ndGggPT09IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXJpdHkgIT09IDEgJiYgdGhpcy5jaGlsZE5vZGVzLmxlbmd0aCAhPT0gYXJpdHkpKSkge1xuICAgICAgLy9cbiAgICAgIC8vICBNYWtlIHN1cmUgdGhlcmUgYXJlIHRoZSByaWdodCBudW1iZXIgb2YgY2hpbGQgbm9kZXNcbiAgICAgIC8vICAodHJpbSB0aGVtIG9yIGFkZCBlbXB0eSBtcm93cylcbiAgICAgIC8vXG4gICAgICBpZiAoYXJpdHkgPCB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY2hpbGROb2RlcyA9IHRoaXMuY2hpbGROb2Rlcy5zbGljZSgwLCBhcml0eSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3aGlsZSAodGhpcy5jaGlsZE5vZGVzLmxlbmd0aCA8IGFyaXR5KSB7XG4gICAgICAgICAgdGhpcy5hcHBlbmRDaGlsZCh0aGlzLmZhY3RvcnkuY3JlYXRlKCdtcm93JykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2V0Q2hpbGRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGRpc3BsYXksIGxldmVsLCBwcmltZSk7XG4gIH1cbiAgLyoqXG4gICAqIEFwcGx5IGluaGVyaXRlZCBhdHRyaWJ1dGVzIHRvIGFsbCBjaGlsZHJlblxuICAgKiAoU29tZSBjbGFzc2VzIG92ZXJyaWRlIHRoaXMgdG8gaGFuZGxlIGNoYW5nZXMgaW4gZGlzcGxheXN0eWxlIGFuZCBzY3JpcHRsZXZlbClcbiAgICpcbiAgICogQHBhcmFtIHtBdHRyaWJ1dGVMaXN0fSBhdHRyaWJ1dGVzICBUaGUgbGlzdCBvZiBpbmhlcml0YWJsZSBhdHRyaWJ1dGVzICh3aXRoIHRoZSBub2RlIGtpbmRzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSB3aGljaCB0aGV5IGNhbWUpXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzcGxheSAgICAgICAgICAgVGhlIGRpc3BsYXlzdHlsZSB0byBpbmhlcml0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbCAgICAgICAgICAgICAgVGhlIHNjcmlwdGxldmVsIHRvIGluaGVyaXRcbiAgICogQHBhcmFtIHtib29sZWFufSBwcmltZSAgICAgICAgICAgICBUaGUgVGVYIHByaW1lIHN0eWxlIHRvIGluaGVyaXQgKFQgdnMuIFQnLCBldGMpLlxuICAgKi9cbiAgcHJvdGVjdGVkIHNldENoaWxkSW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVMaXN0LCBkaXNwbGF5OiBib29sZWFuLCBsZXZlbDogbnVtYmVyLCBwcmltZTogYm9vbGVhbikge1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBjaGlsZC5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGRpc3BsYXksIGxldmVsLCBwcmltZSk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBVc2VkIGJ5IHN1YmNsYXNzZXMgdG8gYWRkIHRoZWlyIG93biBhdHRyaWJ1dGVzIHRvIHRoZSBpbmhlcml0ZWQgbGlzdFxuICAgKiAoZS5nLiwgbXN0eWxlIHVzZXMgdGhpcyB0byBhdWdtZW50IHRoZSBpbmhlcml0ZWQgYXR0aWJ1dGVzKVxuICAgKlxuICAgKiBAcGFyYW0ge0F0dHJpYnV0ZUxpc3R9IGN1cnJlbnQgICAgVGhlIGN1cnJlbnQgbGlzdCBvZiBpbmhlcml0ZWQgYXR0cmlidXRlc1xuICAgKiBAcGFyYW0ge1Byb3BlcnR5TGlzdH0gYXR0cmlidXRlcyAgVGhlIG5ldyBhdHRyaWJ1dGVzIHRvIGFkZCBpbnRvIHRoZSBsaXN0XG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkSW5oZXJpdGVkQXR0cmlidXRlcyhjdXJyZW50OiBBdHRyaWJ1dGVMaXN0LCBhdHRyaWJ1dGVzOiBQcm9wZXJ0eUxpc3QpIHtcbiAgICBsZXQgdXBkYXRlZDogQXR0cmlidXRlTGlzdCA9IHsuLi5jdXJyZW50fTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICAgIGlmIChuYW1lICE9PSAnZGlzcGxheXN0eWxlJyAmJiBuYW1lICE9PSAnc2NyaXB0bGV2ZWwnICYmIG5hbWUgIT09ICdzdHlsZScpIHtcbiAgICAgICAgdXBkYXRlZFtuYW1lXSA9IFt0aGlzLmtpbmQsIGF0dHJpYnV0ZXNbbmFtZV1dO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdXBkYXRlZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIG5vZGVzIGluaGVyaXRlZCBhdHRyaWJ1dGVzIGJhc2VkIG9uIHRoZSBhdHRyaWJ1dGVzIG9mIHRoZSBnaXZlbiBub2RlXG4gICAqICAgKHVzZWQgZm9yIGNyZWF0aW5nIGV4dHJhIG5vZGVzIGluIHRoZSB0cmVlIGFmdGVyIHNldEluaGVyaXRlZEF0dHJpYnV0ZXMgaGFzIGFscmVhZHkgcnVuKVxuICAgKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgICBUaGUgbm9kZSB3aG9zZSBhdHRyaWJ1dGVzIGFyZSB0byBiZSB1c2VkIGFzIGEgdGVtcGxhdGVcbiAgICovXG4gIHB1YmxpYyBpbmhlcml0QXR0cmlidXRlc0Zyb20obm9kZTogTW1sTm9kZSkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBub2RlLmF0dHJpYnV0ZXM7XG4gICAgY29uc3QgZGlzcGxheSA9IGF0dHJpYnV0ZXMuZ2V0KCdkaXNwbGF5c3R5bGUnKSBhcyBib29sZWFuO1xuICAgIGNvbnN0IHNjcmlwdGxldmVsID0gYXR0cmlidXRlcy5nZXQoJ3NjcmlwdGxldmVsJykgYXMgbnVtYmVyO1xuICAgIGNvbnN0IGRlZmF1bHRzOiBBdHRyaWJ1dGVMaXN0ID0gKCFhdHRyaWJ1dGVzLmlzU2V0KCdtYXRoc2l6ZScpID8ge30gOiB7XG4gICAgICBtYXRoc2l6ZTogWydtYXRoJywgYXR0cmlidXRlcy5nZXQoJ21hdGhzaXplJyldXG4gICAgfSk7XG4gICAgY29uc3QgcHJpbWUgPSBub2RlLmdldFByb3BlcnR5KCd0ZXhwcmltZXN0eWxlJykgYXMgYm9vbGVhbiB8fCBmYWxzZTtcbiAgICB0aGlzLnNldEluaGVyaXRlZEF0dHJpYnV0ZXMoZGVmYXVsdHMsIGRpc3BsYXksIHNjcmlwdGxldmVsLCBwcmltZSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZ5IHRoZSBhdHRyaWJ1dGVzLCBhbmQgdGhhdCB0aGVyZSBhcmUgdGhlIHJpZ2h0IG51bWJlciBvZiBjaGlsZHJlbi5cbiAgICogVGhlbiB2ZXJpZnkgdGhlIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5TGlzdH0gb3B0aW9ucyAgIFRoZSBvcHRpb25zIHRlbGxpbmcgaG93IG11Y2ggdG8gdmVyaWZ5XG4gICAqL1xuICBwdWJsaWMgdmVyaWZ5VHJlZShvcHRpb25zOiBQcm9wZXJ0eUxpc3QgPSBudWxsKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy52ZXJpZnlBdHRyaWJ1dGVzKG9wdGlvbnMpO1xuICAgIGxldCBhcml0eSA9IHRoaXMuYXJpdHk7XG4gICAgaWYgKG9wdGlvbnNbJ2NoZWNrQXJpdHknXSkge1xuICAgICAgaWYgKGFyaXR5ID49IDAgJiYgYXJpdHkgIT09IEluZmluaXR5ICYmXG4gICAgICAgICAgKChhcml0eSA9PT0gMSAmJiB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoID09PSAwKSB8fFxuICAgICAgICAgICAoYXJpdHkgIT09IDEgJiYgdGhpcy5jaGlsZE5vZGVzLmxlbmd0aCAhPT0gYXJpdHkpKSkge1xuICAgICAgICB0aGlzLm1FcnJvcignV3JvbmcgbnVtYmVyIG9mIGNoaWxkcmVuIGZvciBcIicgKyB0aGlzLmtpbmQgKyAnXCIgbm9kZScsIG9wdGlvbnMsIHRydWUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZlcmlmeUNoaWxkcmVuKG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGF0IGFsbCB0aGUgYXR0cmlidXRlcyBhcmUgdmFsaWQgKGkuZS4sIGhhdmUgZGVmYXVsdHMpXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBvcHRpb25zICAgVGhlIG9wdGlvbnMgdGVsbGluZyBob3cgbXVjaCB0byB2ZXJpZnlcbiAgICovXG4gIHByb3RlY3RlZCB2ZXJpZnlBdHRyaWJ1dGVzKG9wdGlvbnM6IFByb3BlcnR5TGlzdCkge1xuICAgIGlmIChvcHRpb25zWydjaGVja0F0dHJpYnV0ZXMnXSkge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlcztcbiAgICAgIGNvbnN0IGJhZCA9IFtdO1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGF0dHJpYnV0ZXMuZ2V0RXhwbGljaXROYW1lcygpKSB7XG4gICAgICAgIGlmIChuYW1lLnN1YnN0cigwLCA1KSAhPT0gJ2RhdGEtJyAmJiBhdHRyaWJ1dGVzLmdldERlZmF1bHQobmFtZSkgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgIW5hbWUubWF0Y2goL14oPzpjbGFzc3xzdHlsZXxpZHwoPzp4bGluazopP2hyZWYpJC8pKSB7XG4gICAgICAgICAgLy8gRklYTUU6IHByb3ZpZGUgYSBjb25maWd1cmFibGUgY2hlY2tlciBmb3IgbmFtZXMgdGhhdCBhcmUgT0tcbiAgICAgICAgICBiYWQucHVzaChuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBGSVhNRTogYWRkIGFiaWxpdHkgdG8gY2hlY2sgYXR0cmlidXRlIHZhbHVlcz9cbiAgICAgIH1cbiAgICAgIGlmIChiYWQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMubUVycm9yKCdVbmtub3duIGF0dHJpYnV0ZXMgZm9yICcgKyB0aGlzLmtpbmQgKyAnIG5vZGU6ICcgKyBiYWQuam9pbignLCAnKSwgb3B0aW9ucyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmeSB0aGUgY2hpbGRyZW4uXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBvcHRpb25zICAgVGhlIG9wdGlvbnMgdGVsbGluZyBob3cgbXVjaCB0byB2ZXJpZnlcbiAgICovXG4gIHByb3RlY3RlZCB2ZXJpZnlDaGlsZHJlbihvcHRpb25zOiBQcm9wZXJ0eUxpc3QpIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgY2hpbGQudmVyaWZ5VHJlZShvcHRpb25zKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVwbGFjZSB0aGUgY3VycmVudCBub2RlIHdpdGggYW4gZXJyb3IgbWVzc2FnZSAob3IgdGhlIG5hbWUgb2YgdGhlIG5vZGUpXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlICAgICAgICAgVGhlIGVycm9yIG1lc3NhZ2UgdG8gdXNlXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBvcHRpb25zICAgVGhlIG9wdGlvbnMgdGVsbGluZyBob3cgbXVjaCB0byB2ZXJpZnlcbiAgICogQHBhcmFtIHtib29sZWFufSBzaG9ydCAgICAgICAgICBUcnVlIG1lYW5zIHVzZSBqdXN0IHRoZSBraW5kIGlmIG5vdCB1c2luZyBmdWxsIGVycm9yc1xuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSAgICAgICAgICAgICAgIFRoZSBjb25zdHJ1Y3RlZCBtZXJyb3JcbiAgICovXG4gIHB1YmxpYyBtRXJyb3IobWVzc2FnZTogc3RyaW5nLCBvcHRpb25zOiBQcm9wZXJ0eUxpc3QsIHNob3J0OiBib29sZWFuID0gZmFsc2UpOiBNbWxOb2RlIHtcbiAgICBpZiAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuaXNLaW5kKCdtZXJyb3InKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGxldCBtZXJyb3IgPSB0aGlzLmZhY3RvcnkuY3JlYXRlKCdtZXJyb3InKTtcbiAgICBtZXJyb3IuYXR0cmlidXRlcy5zZXQoJ2RhdGEtbWp4LW1lc3NhZ2UnLCBtZXNzYWdlKTtcbiAgICBpZiAob3B0aW9uc1snZnVsbEVycm9ycyddIHx8IHNob3J0KSB7XG4gICAgICBsZXQgbXRleHQgPSB0aGlzLmZhY3RvcnkuY3JlYXRlKCdtdGV4dCcpO1xuICAgICAgbGV0IHRleHQgPSB0aGlzLmZhY3RvcnkuY3JlYXRlKCd0ZXh0JykgYXMgVGV4dE5vZGU7XG4gICAgICB0ZXh0LnNldFRleHQob3B0aW9uc1snZnVsbEVycm9ycyddID8gbWVzc2FnZSA6IHRoaXMua2luZCk7XG4gICAgICBtdGV4dC5hcHBlbmRDaGlsZCh0ZXh0KTtcbiAgICAgIG1lcnJvci5hcHBlbmRDaGlsZChtdGV4dCk7XG4gICAgICB0aGlzLnBhcmVudC5yZXBsYWNlQ2hpbGQobWVycm9yLCB0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wYXJlbnQucmVwbGFjZUNoaWxkKG1lcnJvciwgdGhpcyk7XG4gICAgICBtZXJyb3IuYXBwZW5kQ2hpbGQodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiBtZXJyb3I7XG4gIH1cblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgYWJzdHJhY3QgTW1sTm9kZSBUb2tlbiBub2RlIGNsYXNzIChleHRlbmRzIHRoZSBBYnN0cmFjdE1tbE5vZGUpXG4gKi9cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0TW1sVG9rZW5Ob2RlIGV4dGVuZHMgQWJzdHJhY3RNbWxOb2RlIHtcblxuICAvKipcbiAgICogQWRkIHRoZSBhdHRyaWJ1dGVzIGNvbW1vbiB0byBhbGwgdG9rZW4gbm9kZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAgIC4uLkFic3RyYWN0TW1sTm9kZS5kZWZhdWx0cyxcbiAgICBtYXRodmFyaWFudDogJ25vcm1hbCcsXG4gICAgbWF0aHNpemU6IElOSEVSSVRcbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVG9rZW4oKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB0ZXh0IG9mIHRoZSB0b2tlbiBub2RlIChza2lwcGluZyBtZ2x5cGhzLCBhbmQgY29tYmluaW5nXG4gICAqICAgbXVsdGlwbGUgdGV4dCBub2RlcylcbiAgICovXG4gIHB1YmxpYyBnZXRUZXh0KCkge1xuICAgIGxldCB0ZXh0ID0gJyc7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIFRleHROb2RlKSB7XG4gICAgICAgIHRleHQgKz0gY2hpbGQuZ2V0VGV4dCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPbmx5IGluaGVyaXQgdG8gY2hpbGQgbm9kZXMgdGhhdCBhcmUgQWJzdHJhY3RNbWxOb2RlcyAobm90IFRleHROb2RlcylcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q2hpbGRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZUxpc3QsIGRpc3BsYXk6IGJvb2xlYW4sIGxldmVsOiBudW1iZXIsIHByaW1lOiBib29sZWFuKSB7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIEFic3RyYWN0TW1sTm9kZSkge1xuICAgICAgICBjaGlsZC5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGRpc3BsYXksIGxldmVsLCBwcmltZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9ubHkgc3RlcCBpbnRvIGNoaWxkcmVuIHRoYXQgYXJlIEFic3RyYWN0TW1sTm9kZXMgKG5vdCBUZXh0Tm9kZXMpXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHdhbGtUcmVlKGZ1bmM6IChub2RlOiBOb2RlLCBkYXRhPzogYW55KSA9PiB2b2lkLCBkYXRhPzogYW55KSB7XG4gICAgZnVuYyh0aGlzLCBkYXRhKTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgQWJzdHJhY3RNbWxOb2RlKSB7XG4gICAgICAgIGNoaWxkLndhbGtUcmVlKGZ1bmMsIGRhdGEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG59XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIGFic3RyYWN0IE1tbE5vZGUgTGF5b3V0IGNsYXNzIChleHRlbmRzIHRoZSBBYnN0cmFjdE1tbE5vZGUpXG4gKlxuICogIFRoZXNlIGhhdmUgaW5mZXJyZWQgbXJvd3MgKHNvIG9ubHkgb25lIGNoaWxkKSBhbmQgY2FuIGJlXG4gKiAgc3BhY2VsaWtlIG9yIGVtYmVsbGlzaGVkIGJhc2VkIG9uIHRoZWlyIGNvbnRlbnRzLlxuICovXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE1tbExheW91dE5vZGUgZXh0ZW5kcyBBYnN0cmFjdE1tbE5vZGUge1xuXG4gIC8qKlxuICAgKiBVc2UgdGhlIHNhbWUgZGVmYXVsdHMgYXMgQWJzdHJhY3RNbWxOb2Rlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0gQWJzdHJhY3RNbWxOb2RlLmRlZmF1bHRzO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNTcGFjZWxpa2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1swXS5pc1NwYWNlbGlrZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNFbWJlbGxpc2hlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzWzBdLmlzRW1iZWxsaXNoZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaXR5KCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjb3JlKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY29yZU1PKCkge1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbMF0uY29yZU1PKCk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0VGVYY2xhc3MocHJldjogTW1sTm9kZSkge1xuICAgIHByZXYgPSB0aGlzLmNoaWxkTm9kZXNbMF0uc2V0VGVYY2xhc3MocHJldik7XG4gICAgdGhpcy51cGRhdGVUZVhjbGFzcyh0aGlzLmNoaWxkTm9kZXNbMF0pO1xuICAgIHJldHVybiBwcmV2O1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBhYnN0cmFjdCBNbWxOb2RlLXdpdGgtYmFzZS1ub2RlIENsYXNzIChleHRlbmRzIHRoZSBBYnN0cmFjdE1tbE5vZGUpXG4gKlxuICogIFRoZXNlIGhhdmUgYSBiYXNlIGVsZW1lbnQgYW5kIG90aGVyIGVsZW1ldG5zLCAoZS5nLiwgc2NyaXB0IGVsZW1lbnRzIGZvciBtc3Vic3VwKS5cbiAqICBUaGV5IGNhbiBiZSBlbWJlbGxpc2hlZCAoaWYgdGhlaXIgYmFzZSBpcyksIGFuZCBnZXQgdGhlaXIgVGVYIGNsYXNzZXNcbiAqICAgIGZyb20gdGhlaXIgYmFzZSB3aXRoIHRoZWlyIHNjcmlwdHMgYmVpbmcgaGFuZGxlZCBhcyBzZXBhcmF0ZSBtYXRoIGxpc3RzLlxuICovXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE1tbEJhc2VOb2RlIGV4dGVuZHMgQWJzdHJhY3RNbWxOb2RlIHtcblxuICAvKipcbiAgICogVXNlIHRoZSBzYW1lIGRlZmF1bHRzIGFzIEFic3RyYWN0TW1sTm9kZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IEFic3RyYWN0TW1sTm9kZS5kZWZhdWx0cztcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRW1iZWxsaXNoZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1swXS5pc0VtYmVsbGlzaGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjb3JlTU8oKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1swXS5jb3JlTU8oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKSB7XG4gICAgdGhpcy5nZXRQcmV2Q2xhc3MocHJldik7XG4gICAgdGhpcy50ZXhDbGFzcyA9IFRFWENMQVNTLk9SRDtcbiAgICBsZXQgYmFzZSA9IHRoaXMuY2hpbGROb2Rlc1swXTtcbiAgICBpZiAoYmFzZSkge1xuICAgICAgaWYgKHRoaXMuaXNFbWJlbGxpc2hlZCB8fCBiYXNlLmlzS2luZCgnbWknKSkge1xuICAgICAgICBwcmV2ID0gYmFzZS5zZXRUZVhjbGFzcyhwcmV2KTtcbiAgICAgICAgdGhpcy51cGRhdGVUZVhjbGFzcyh0aGlzLmNvcmUoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYXNlLnNldFRlWGNsYXNzKG51bGwpO1xuICAgICAgICBwcmV2ID0gdGhpcztcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcHJldiA9IHRoaXM7XG4gICAgfVxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzLnNsaWNlKDEpKSB7XG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgY2hpbGQuc2V0VGVYY2xhc3MobnVsbCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmV2O1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBhYnN0cmFjdCBNbWxOb2RlIEVtcHR5IENsYXNzIChleHRlbmRzIEFic3RyYWN0RW1wdHlOb2RlLCBpbXBsZW1lbnRzIE1tbE5vZGUpXG4gKlxuICogIFRoZXNlIGhhdmUgbm8gY2hpbGRyZW4gYW5kIG5vIGF0dHJpYnV0ZXMgKFRleHROb2RlIGFuZCBYTUxOb2RlKSwgc28gd2VcbiAqICBvdmVycmlkZSBhbGwgdGhlIG1ldGhvZHMgZGVhbGluZyB3aXRoIHRoZW0sIGFuZCB3aXRoIHRoZSBkYXRhIHRoYXQgdXN1YWxseVxuICogIGdvZXMgd2l0aCBhbiBNbWxOb2RlLlxuICovXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE1tbEVtcHR5Tm9kZSBleHRlbmRzIEFic3RyYWN0RW1wdHlOb2RlIGltcGxlbWVudHMgTW1sTm9kZSB7XG5cbiAgLyoqXG4gICAqICBQYXJlbnQgaXMgYW4gTW1sTm9kZVxuICAgKi9cbiAgcHVibGljIHBhcmVudDogTW1sTm9kZTtcblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIE5vdCBhIHRva2VuIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNUb2tlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIE5vdCBlbWJlbGxpc2hlZFxuICAgKi9cbiAgcHVibGljIGdldCBpc0VtYmVsbGlzaGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgTm90IHNwYWNlLWxpa2VcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNTcGFjZWxpa2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICBOb3QgYSBjb250YWluZXIgb2YgYW55IGtpbmRcbiAgICovXG4gIHB1YmxpYyBnZXQgbGluZWJyZWFrQ29udGFpbmVyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgRG9lcyBub3QgY29udGFpbiBuZXcgbGluZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzTmV3TGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSAgTm8gY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyBnZXQgYXJpdHkoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgSXMgbm90IGFuIGluZmVycmVkIHJvd1xuICAgKi9cbiAgcHVibGljIGdldCBpc0luZmVycmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgSXMgbm90IGEgY29udGFpbmVyIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBnZXQgbm90UGFyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSAgUGFyZW50IGlzIHRoZSBhY3R1YWwgcGFyZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0IFBhcmVudCgpOiBNbWxOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSAgTm8gVGVYIGNsYXNzXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRleENsYXNzKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIFRFWENMQVNTLk5PTkU7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSAgTm8gcHJldmlvdXMgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGdldCBwcmV2Q2xhc3MoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gVEVYQ0xBU1MuTk9ORTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICBObyBwcmV2aW91cyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0IHByZXZMZXZlbCgpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICBUaGUgY29yZSBtbyBlbGVtZW50IGhhcyBhbiBleHBsaWNpdCAnZm9ybScgYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgaGFzU3BhY2luZ0F0dHJpYnV0ZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIHJldHVybiB7QXR0cmlidXRlc30gIE5vIGF0dHJpYnV0ZXMsIHNvIGRvbid0IHN0b3JlIG9uZVxuICAgKi9cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZXMge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcmUoKTogTW1sTm9kZSB7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY29yZU1PKCk6IE1tbE5vZGUge1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcmVJbmRleCgpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGlsZFBvc2l0aW9uKCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldFRlWGNsYXNzKHByZXY6IE1tbE5vZGUpIHtcbiAgICByZXR1cm4gcHJldjtcbiAgfVxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdGV4U3BhY2luZygpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICAvKipcbiAgICogTm8gY2hpbGRyZW4gb3IgYXR0cmlidXRlcywgc28gaWdub3JlIHRoaXMgY2FsbC5cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhfYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCwgX2Rpc3BsYXk6IGJvb2xlYW4sIF9sZXZlbDogbnVtYmVyLCBfcHJpbWU6IGJvb2xlYW4pIHt9XG5cbiAgLyoqXG4gICAqIE5vIGNoaWxkcmVuIG9yIGF0dHJpYnV0ZXMsIHNvIGlnbm9yZSB0aGlzIGNhbGwuXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGluaGVyaXRBdHRyaWJ1dGVzRnJvbShfbm9kZTogTW1sTm9kZSkge31cblxuICAvKipcbiAgICogTm8gY2hpbGRyZW4gb3IgYXR0cmlidXRlcywgc28gaWdub3JlIHRoaXMgY2FsbC5cbiAgICpcbiAgICogQHBhcmFtIHtQcm9wZXJ0eUxpc3R9IG9wdGlvbnMgIFRoZSBvcHRpb25zIGZvciB0aGUgY2hlY2tcbiAgICovXG4gIHB1YmxpYyB2ZXJpZnlUcmVlKF9vcHRpb25zOiBQcm9wZXJ0eUxpc3QpIHt9XG5cbiAgLyoqXG4gICAqICBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBtRXJyb3IoX21lc3NhZ2U6IHN0cmluZywgX29wdGlvbnM6IFByb3BlcnR5TGlzdCwgX3Nob3J0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gbnVsbCBhcyBNbWxOb2RlO1xuICB9XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIFRleHROb2RlIENsYXNzIChleHRlbmRzIEFic3RyYWN0TW1sRW1wdHlOb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBUZXh0Tm9kZSBleHRlbmRzIEFic3RyYWN0TW1sRW1wdHlOb2RlIHtcbiAgLyoqXG4gICAqIFRoZSB0ZXh0IGZvciB0aGlzIG5vZGVcbiAgICovXG4gIHByb3RlY3RlZCB0ZXh0OiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICd0ZXh0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBSZXR1cm4gdGhlIG5vZGUncyB0ZXh0XG4gICAqL1xuICBwdWJsaWMgZ2V0VGV4dCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRleHQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgIFRoZSB0ZXh0IHRvIHVzZSBmb3IgdGhlIG5vZGVcbiAgICogQHJldHVybiB7VGV4dE5vZGV9ICBUaGUgdGV4dCBub2RlIChmb3IgY2hhaW5pbmcgb2YgbWV0aG9kIGNhbGxzKVxuICAgKi9cbiAgcHVibGljIHNldFRleHQodGV4dDogc3RyaW5nKTogVGV4dE5vZGUge1xuICAgIHRoaXMudGV4dCA9IHRleHQ7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY29weSgpIHtcbiAgICByZXR1cm4gKHRoaXMuZmFjdG9yeS5jcmVhdGUodGhpcy5raW5kKSBhcyBUZXh0Tm9kZSkuc2V0VGV4dCh0aGlzLmdldFRleHQoKSk7XG4gIH1cblxuICAvKipcbiAgICogSnVzdCB1c2UgdGhlIHRleHRcbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0O1xuICB9XG5cbn1cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgWE1MTm9kZSBDbGFzcyAoZXh0ZW5kcyBBYnN0cmFjdE1tbEVtcHR5Tm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgWE1MTm9kZSBleHRlbmRzIEFic3RyYWN0TW1sRW1wdHlOb2RlIHtcbiAgLyoqXG4gICAqIFRoZSBYTUwgY29udGVudCBmb3IgdGhpcyBub2RlXG4gICAqL1xuICBwcm90ZWN0ZWQgeG1sOiBPYmplY3QgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBET00gYWRhcHRvciBmb3IgdGhlIGNvbnRlbnRcbiAgICovXG4gIHByb3RlY3RlZCBhZGFwdG9yOiBET01BZGFwdG9yPGFueSwgYW55LCBhbnk+ID0gbnVsbDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdYTUwnO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge09iamVjdH0gIFJldHVybiB0aGUgbm9kZSdzIFhNTCBjb250ZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0WE1MKCk6IE9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMueG1sO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB4bWwgIFRoZSBYTUwgY29udGVudCB0byBiZSBzYXZlZFxuICAgKiBAcGFyYW0ge0RPTUFkYXB0b3J9IGFkYXB0b3IgRE9NIGFkYXB0b3IgZm9yIHRoZSBjb250ZW50XG4gICAqIEByZXR1cm4ge1hNTE5vZGV9ICBUaGUgWE1MIG5vZGUgKGZvciBjaGFpbmluZyBvZiBtZXRob2QgY2FsbHMpXG4gICAqL1xuICBwdWJsaWMgc2V0WE1MKHhtbDogT2JqZWN0LCBhZGFwdG9yOiBET01BZGFwdG9yPGFueSwgYW55LCBhbnk+ID0gbnVsbCk6IFhNTE5vZGUge1xuICAgIHRoaXMueG1sID0geG1sO1xuICAgIHRoaXMuYWRhcHRvciA9IGFkYXB0b3I7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIHNlcmlhbGl6ZWQgWE1MIGNvbnRlbnRcbiAgICovXG4gIHB1YmxpYyBnZXRTZXJpYWxpemVkWE1MKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRvci5zZXJpYWxpemVYTUwodGhpcy54bWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcHkoKTogWE1MTm9kZSB7XG4gICAgcmV0dXJuICh0aGlzLmZhY3RvcnkuY3JlYXRlKHRoaXMua2luZCkgYXMgWE1MTm9kZSkuc2V0WE1MKHRoaXMuYWRhcHRvci5jbG9uZSh0aGlzLnhtbCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEp1c3QgaW5kaWNhdGUgdGhhdCB0aGlzIGlzIFhNTCBkYXRhXG4gICAqL1xuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdYTUwgZGF0YSc7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBEZWZpbmVzIHRoZSBvcGVyYXRvciBkaWN0aW9uYXJ5IHN0cnVjdHVyZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge1RFWENMQVNTfSBmcm9tICcuL01tbE5vZGUuanMnO1xuXG4vKipcbiAqIFR5cGVzIG5lZWRlZCBmb3IgdGhlIG9wZXJhdG9yIGRpY3Rpb25hcnlcbiAqL1xuZXhwb3J0IHR5cGUgT3BlcmF0b3JEZWYgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgUHJvcGVydHlMaXN0XTtcbmV4cG9ydCB0eXBlIE9wZXJhdG9yTGlzdCA9IHtbbmFtZTogc3RyaW5nXTogT3BlcmF0b3JEZWZ9O1xuZXhwb3J0IHR5cGUgUmFuZ2VEZWYgPSBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgc3RyaW5nLCBzdHJpbmc/XTtcblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gbHNwYWNlICAgICAgICAgICAgVGhlIG9wZXJhdG9yJ3MgTWF0aE1MIGxlZnQtaGFuZCBzcGFjaW5nXG4gKiBAcGFyYW0ge251bWJlcn0gcnNwYWNlICAgICAgICAgICAgVGhlIG9wZXJhdG9yJ3MgTWF0aE1MIHJpZ2h0LWhhbmQgc3BhY2luZ1xuICogQHBhcmFtIHtudW1iZXJ9IHRleENsYXNzICAgICAgICAgIFRoZSBkZWZhdWx0IFRlWCBjbGFzcyBmb3IgdGhlIG9wZXJhdG9yXG4gKiBAcGFyYW0ge1Byb3BlcnR5TGlzdH0gcHJvcGVydGllcyAgQW55IGRlZmF1bHQgcHJvcGVydGllcyBmcm9tIHRoZSBvcGVyYXRvciBkaWN0aW9uYXJ5XG4gKiBAcmV0dXJuIHtPcGVyYXRvckRlZn0gICAgICAgICAgICAgVGhlIG9wZXJhdG9yIGRlZmluaXRpb24gYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIE9QREVGKGxzcGFjZTogbnVtYmVyLCByc3BhY2U6IG51bWJlciwgdGV4Q2xhc3M6IG51bWJlciA9IFRFWENMQVNTLkJJTixcbiAgICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUxpc3QgPSBudWxsKTogT3BlcmF0b3JEZWYge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtsc3BhY2UsIHJzcGFjZSwgdGV4Q2xhc3MsIHByb3BlcnRpZXNdIGFzIE9wZXJhdG9yRGVmO1xuICAgICAgICAgICAgICAgICAgICAgIH1cblxuLyoqXG4gKiAgVGhlIHZhcmlvdXMga2luZHMgb2Ygb3BlcmF0b3JzIGluIHRoZSBkaWN0aW9uYXJ5XG4gKi9cbmV4cG9ydCBjb25zdCBNTyA9IHtcbiAgT1JEOiAgICAgICAgT1BERUYoMCwgMCwgVEVYQ0xBU1MuT1JEKSxcbiAgT1JEMTE6ICAgICAgT1BERUYoMSwgMSwgVEVYQ0xBU1MuT1JEKSxcbiAgT1JEMjE6ICAgICAgT1BERUYoMiwgMSwgVEVYQ0xBU1MuT1JEKSxcbiAgT1JEMDI6ICAgICAgT1BERUYoMCwgMiwgVEVYQ0xBU1MuT1JEKSxcbiAgT1JENTU6ICAgICAgT1BERUYoNSwgNSwgVEVYQ0xBU1MuT1JEKSxcbiAgTk9ORTogICAgICAgT1BERUYoMCwgMCwgVEVYQ0xBU1MuTk9ORSksXG4gIE9QOiAgICAgICAgIE9QREVGKDEsIDIsIFRFWENMQVNTLk9QLCB7bGFyZ2VvcDogdHJ1ZSwgbW92YWJsZWxpbWl0czogdHJ1ZSwgc3ltbWV0cmljOiB0cnVlfSksXG4gIE9QRklYRUQ6ICAgIE9QREVGKDEsIDIsIFRFWENMQVNTLk9QLCB7bGFyZ2VvcDogdHJ1ZSwgbW92YWJsZWxpbWl0czogdHJ1ZX0pLFxuICBJTlRFR1JBTDogICBPUERFRigwLCAxLCBURVhDTEFTUy5PUCwge2xhcmdlb3A6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZX0pLFxuICBJTlRFR1JBTDI6ICBPUERFRigxLCAyLCBURVhDTEFTUy5PUCwge2xhcmdlb3A6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZX0pLFxuICBCSU4zOiAgICAgICBPUERFRigzLCAzLCBURVhDTEFTUy5CSU4pLFxuICBCSU40OiAgICAgICBPUERFRig0LCA0LCBURVhDTEFTUy5CSU4pLFxuICBCSU4wMTogICAgICBPUERFRigwLCAxLCBURVhDTEFTUy5CSU4pLFxuICBCSU41OiAgICAgICBPUERFRig1LCA1LCBURVhDTEFTUy5CSU4pLFxuICBUQUxMQklOOiAgICBPUERFRig0LCA0LCBURVhDTEFTUy5CSU4sIHtzdHJldGNoeTogdHJ1ZX0pLFxuICBCSU5PUDogICAgICBPUERFRig0LCA0LCBURVhDTEFTUy5CSU4sIHtsYXJnZW9wOiB0cnVlLCBtb3ZhYmxlbGltaXRzOiB0cnVlfSksXG4gIFJFTDogICAgICAgIE9QREVGKDUsIDUsIFRFWENMQVNTLlJFTCksXG4gIFJFTDE6ICAgICAgIE9QREVGKDEsIDEsIFRFWENMQVNTLlJFTCwge3N0cmV0Y2h5OiB0cnVlfSksXG4gIFJFTDQ6ICAgICAgIE9QREVGKDQsIDQsIFRFWENMQVNTLlJFTCksXG4gIFJFTFNUUkVUQ0g6IE9QREVGKDUsIDUsIFRFWENMQVNTLlJFTCwge3N0cmV0Y2h5OiB0cnVlfSksXG4gIFJFTEFDQ0VOVDogIE9QREVGKDUsIDUsIFRFWENMQVNTLlJFTCwge2FjY2VudDogdHJ1ZX0pLFxuICBXSURFUkVMOiAgICBPUERFRig1LCA1LCBURVhDTEFTUy5SRUwsIHthY2NlbnQ6IHRydWUsIHN0cmV0Y2h5OiB0cnVlfSksXG4gIE9QRU46ICAgICAgIE9QREVGKDAsIDAsIFRFWENMQVNTLk9QRU4sIHtmZW5jZTogdHJ1ZSwgc3RyZXRjaHk6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZX0pLFxuICBDTE9TRTogICAgICBPUERFRigwLCAwLCBURVhDTEFTUy5DTE9TRSwge2ZlbmNlOiB0cnVlLCBzdHJldGNoeTogdHJ1ZSwgc3ltbWV0cmljOiB0cnVlfSksXG4gIElOTkVSOiAgICAgIE9QREVGKDAsIDAsIFRFWENMQVNTLklOTkVSKSxcbiAgUFVOQ1Q6ICAgICAgT1BERUYoMCwgMywgVEVYQ0xBU1MuUFVOQ1QpLFxuICBBQ0NFTlQ6ICAgICBPUERFRigwLCAwLCBURVhDTEFTUy5PUkQsIHthY2NlbnQ6IHRydWV9KSxcbiAgV0lERUFDQ0VOVDogT1BERUYoMCwgMCwgVEVYQ0xBU1MuT1JELCB7YWNjZW50OiB0cnVlLCBzdHJldGNoeTogdHJ1ZX0pXG59O1xuXG4vKipcbiAqICBUaGUgZGVmYXVsdCBUZVggY2xhc3NlcyBmb3IgdGhlIHZhcmlvdXMgdW5pY29kZSBibG9ja3MsIGFuZCB0aGVpciBuYW1lc1xuICovXG5leHBvcnQgY29uc3QgUkFOR0VTOiBSYW5nZURlZltdID0gW1xuICBbMHgwMDIwLCAweDAwN0YsIFRFWENMQVNTLlJFTCwgJ21vJ10sIC8vIEJhc2ljIExhdGluXG4gIFsweDAwQTAsIDB4MDBCRiwgVEVYQ0xBU1MuT1JELCAnbW8nXSwgLy8gTGF0aW4tMSBTdXBwbGVtZW50IHN5bWJvbHNcbiAgWzB4MDBDMCwgMHgwMjRGLCBURVhDTEFTUy5PUkQsICdtaSddLCAvLyBMYXRpbi0xIFN1cHBsZW1lbnQsIExhdGluIEV4dGVuZGVkLUEsIExhdGluIEV4dGVuZGVkLUJcbiAgWzB4MDJCMCwgMHgwMzZGLCBURVhDTEFTUy5PUkQsICdtbyddLCAvLyBTcGFjaW5nIG1vZGlmaWVyIGxldHRlcnMsIENvbWJpbmluZyBEaWFjcml0aWNhbCBNYXJrc1xuICBbMHgwMzcwLCAweDFBMjAsIFRFWENMQVNTLk9SRCwgJ21pJ10sIC8vIEdyZWVrIGFuZCBDb3B0aWMgKHRocm91Z2gpIFRhaSBUaGFtXG4gIFsweDFBQjAsIDB4MUFGRiwgVEVYQ0xBU1MuT1JELCAnbW8nXSwgLy8gQ29tYmluaW5nIERpYWNyaXRpY2FsIE1hcmtzIEV4dGVuZGVkXG4gIFsweDFCMDAsIDB4MURCRiwgVEVYQ0xBU1MuT1JELCAnbWknXSwgLy8gQmFsaW5lc2UgKHRocm91Z2gpIFBob25ldGljIEV4dGVuc2lvbnMgU3VwcGxlbWVudFxuICBbMHgxREMwLCAweDFERkYsIFRFWENMQVNTLk9SRCwgJ21vJ10sIC8vIENvbWJpbmluZyBEaWFjcml0aWNhbCBNYXJrcyBTdXBwbGVtZW50XG4gIFsweDFFMDAsIDB4MUZGRiwgVEVYQ0xBU1MuT1JELCAnbWknXSwgLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbCwgR3JlZWsgRXh0ZW5kZWRcbiAgWzB4MjAwMCwgMHgyMDZGLCBURVhDTEFTUy5PUkQsICdtbyddLCAvLyBHZW5lcmFsIFB1bmN0dWF0aW9uXG4gIFsweDIwNzAsIDB4MjA5RiwgVEVYQ0xBU1MuT1JELCAnbW8nXSwgLy8gU3VwZXJzY3JpcHQgYW5kIFN1YnNjcmlwdHMgKHRocm91Z2gpIENvbWJpbmluZyBEaWFjcml0aWNhbCBNYXJrcyBmb3IgU3ltYm9sc1xuICBbMHgyMTAwLCAweDIxNEYsIFRFWENMQVNTLk9SRCwgJ21pJ10sIC8vIExldHRlcmxpa2UgU3ltYm9sc1xuICBbMHgyMTUwLCAweDIxOEYsIFRFWENMQVNTLk9SRCwgJ21uJ10sIC8vIE51bWJlciBGb3Jtc1xuICBbMHgyMTkwLCAweDIxRkYsIFRFWENMQVNTLlJFTCwgJ21vJ10sIC8vIEFycm93c1xuICBbMHgyMjAwLCAweDIyRkYsIFRFWENMQVNTLkJJTiwgJ21vJ10sIC8vIE1hdGhlbWF0aWNhbCBPcGVyYXRvcnNcbiAgWzB4MjMwMCwgMHgyM0ZGLCBURVhDTEFTUy5PUkQsICdtbyddLCAvLyBNaXNjZWxsYW5lb3VzIFRlY2huaWNhbFxuICBbMHgyNDYwLCAweDI0RkYsIFRFWENMQVNTLk9SRCwgJ21uJ10sIC8vIEVuY2xvc2VkIEFscGhhbnVtZXJpY3NcbiAgWzB4MjUwMCwgMHgyN0VGLCBURVhDTEFTUy5PUkQsICdtbyddLCAvLyBCb3ggRHJhd2luZyAodGhvdWdoKSBNaXNjZWxsYW5lb3VzIE1hdGggU3ltYm9scy1BXG4gIFsweDI3RjAsIDB4MjdGRiwgVEVYQ0xBU1MuUkVMLCAnbW8nXSwgLy8gU3VwcGxlbWVudGFsIEFycm93cy1BXG4gIFsweDI4MDAsIDB4MjhGRiwgVEVYQ0xBU1MuT1JELCAnbXRleHQnXSwgLy8gQnJhaWxsZSBQYXR0ZXJuc1xuICBbMHgyOTAwLCAweDI5N0YsIFRFWENMQVNTLlJFTCwgJ21vJ10sIC8vIFN1cHBsZW1lbnRhbCBBcnJvd3MtQlxuICBbMHgyOTgwLCAweDI5RkYsIFRFWENMQVNTLk9SRCwgJ21vJ10sIC8vIE1pc2NlbGxhbmVvdXMgTWF0aCBTeW1ib2xzLUJcbiAgWzB4MkEwMCwgMHgyQUZGLCBURVhDTEFTUy5CSU4sICdtbyddLCAvLyBTdXBwbGVtZW50YWwgTWF0aCBPcGVyYXRvcnNcbiAgWzB4MkIwMCwgMHgyQjJGLCBURVhDTEFTUy5PUkQsICdtbyddLCAvLyBNaXNjZWxsYW5lb3VzIFN5bWJvbHMgYW5kIEFycm93c1xuICBbMHgyQjMwLCAweDJCNEYsIFRFWENMQVNTLlJFTCwgJ21vJ10sIC8vICAgQXJyb3dzIGZyb20gYWJvdmVcbiAgWzB4MkI1MCwgMHgyQkZGLCBURVhDTEFTUy5PUkQsICdtbyddLCAvLyAgIFJlc3Qgb2YgYWJvdmVcbiAgWzB4MkMwMCwgMHgyREUwLCBURVhDTEFTUy5PUkQsICdtaSddLCAvLyBHbGFnb2xpdGljICh0aHJvdWdoKSBFdGhpcG9jIEV4dGVuZGVkXG4gIFsweDJFMDAsIDB4MkU3RiwgVEVYQ0xBU1MuT1JELCAnbW8nXSwgLy8gU3VwcGxlbWVudGFsIFB1bmN0dWF0aW9uXG4gIFsweDJFODAsIDB4MkZERiwgVEVYQ0xBU1MuT1JELCAnbWknLCAnbm9ybWFsJ10sIC8vIENKSyBSYWRpY2FscyBTdXBwbGVtZW50ICh0aHJvdWdoKSBLYW5neGkgUmFkaWNhbHNcbiAgWzB4MkZGMCwgMHgzMDNGLCBURVhDTEFTUy5PUkQsICdtbyddLCAvLyBJZGVvZ3JhcGhpYyBEZXNjLiBDaGFyYWN0ZXJzLCBDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb25cbiAgWzB4MzA0MCwgMHhBNDlGLCBURVhDTEFTUy5PUkQsICdtaScsICdub3JtYWwnXSwgLy8gSGlyYWdhbmEgKHRocm91Z2gpIFlpIFJhZGljYWxzXG4gIFsweEE0RDAsIDB4QTgyRiwgVEVYQ0xBU1MuT1JELCAnbWknXSwgLy8gTGlzdSAodGhyb3VnaCkgU3lsb3RpIE5hZ3JpXG4gIFsweEE4MzAsIDB4QTgzRiwgVEVYQ0xBU1MuT1JELCAnbW4nXSwgLy8gQ29tbW9uIEluZGljIE51bWJlciBGb3Jtc0FyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQVxuICBbMHhBODQwLCAweEQ3RkYsIFRFWENMQVNTLk9SRCwgJ21pJ10sIC8vIFBoYWdzLXBhICh0aG91Z2gpIEhhbmd1bCBKYW1vIEV4dGVuZGVkLUJcbiAgWzB4RjkwMCwgMHhGQUZGLCBURVhDTEFTUy5PUkQsICdtaScsICdub3JtYWwnXSwgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBoc1xuICBbMHhGQjAwLCAweEZERkYsIFRFWENMQVNTLk9SRCwgJ21pJ10sIC8vIEFscGhhYmV0aWMgUHJlc2VudGF0aW9uIEZvcm1zICh0aG91Z2gpIEFyYWJpYyBQcmVzZW50YXRpb24gRm9ybXMtQVxuICBbMHhGRTAwLCAweEZFNkYsIFRFWENMQVNTLk9SRCwgJ21vJ10sIC8vIFZhcmlhdGlvbiBTZWxlY3RvciAodGhyb3VnaCkgU21hbGwgRm9ybSBWYXJpYW50c1xuICBbMHhGRTcwLCAweDEwMEZGLCBURVhDTEFTUy5PUkQsICdtaSddLCAvLyBBcmFiaWMgUHJlc2VudGF0aW9uIEZvcm1zLUIgKHRocm91Z2gpIExpbmVhciBCIElkZW9ncmFtc1xuICBbMHgxMDEwMCwgMHgxMDE4RiwgVEVYQ0xBU1MuT1JELCAnbW4nXSwgLy8gQWVnZWFuIE51bWJlcnMsIEFuY2llbnQgR3JlZWsgTnVtYmVyc1xuICBbMHgxMDE5MCwgMHgxMjNGRiwgVEVYQ0xBU1MuT1JELCAnbWknLCAnbm9ybWFsJ10sIC8vIEFuY2llbnQgU3ltYm9scyAodGhyb3VnaCkgQ3VuZWlmb3JtXG4gIFsweDEyNDAwLCAweDEyNDdGLCBURVhDTEFTUy5PUkQsICdtbiddLCAvLyBDdW5laWZvcm0gTnVtYmVycyBhbmQgUHVuY3R1YXRpb25cbiAgWzB4MTI0ODAsIDB4MUJDOUYsIFRFWENMQVNTLk9SRCwgJ21pJywgJ25vcm1hbCddLCAvLyBFYXJseSBEeW5hc3RpYyBDdW5laWZvcm0gKHRocm91Z2gpIER1cGxveWFuXG4gIFsweDFCQ0EwLCAweDFEMjVGLCBURVhDTEFTUy5PUkQsICdtbyddLCAvLyBTaG9ydGhhbmQgRm9ybWF0IENvbnRyb2xzICh0aHJvdWdoKSBUYWlYdWFuIEppbmcgU3ltYm9sc1xuICBbMHgxRDM2MCwgMHgxRDM3RiwgVEVYQ0xBU1MuT1JELCAnbW4nXSwgLy8gQ291bnRpbmcgUm9kIE51bWVyYWxzXG4gIFsweDFENDAwLCAweDFEN0NELCBURVhDTEFTUy5PUkQsICdtaSddLCAvLyBNYXRoIEFscGhhbnVtZXJpYyBTeW1ib2xzXG4gIFsweDFEN0NFLCAweDFEN0ZGLCBURVhDTEFTUy5PUkQsICdtbiddLCAvLyAgIE51bWVyYWxzIGZyb20gYWJvdmVcbiAgWzB4MURGMDAsIDB4MUY3RkYsIFRFWENMQVNTLk9SRCwgJ21vJ10sIC8vIE1haGpvbmcgVGlsZXMgKHRocm91Z2gpIEdlb21ldHJpYyBTaGFwZXMgRXh0ZW5kZWRcbiAgWzB4MUY4MDAsIDB4MUY4RkYsIFRFWENMQVNTLlJFTCwgJ21vJ10sIC8vIFN1cHBsZW1lbnRhbCBBcnJvd3MtQ1xuICBbMHgxRjkwMCwgMHgxRjlGRiwgVEVYQ0xBU1MuT1JELCAnbW8nXSwgLy8gU3VwcGxlbWVudGFsIFN5bWJvbHMgYW5kIFBpY3RvZ3JhcGhzXG4gIFsweDIwMDAwLCAweDJGQTFGLCBURVhDTEFTUy5PUkQsICdtaScsICdub3JtbmFsJ10sIC8vIENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0LiBCICh0aHJvdWdoKSBDSksgU29tcGF0aWJpbGl0eSBJZGVvZ3JhcGhzIFN1cHAuXG5dO1xuXG4vKipcbiAqIEdldCB0aGUgVW5pY29kZSByYW5nZSBmb3IgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiBhIHN0cmluZ1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgVGhlIGNoYXJhY3RlciB0byBjaGVja1xuICogQHJldHVybiB7UmFuZ2VEZWZ8bnVsbH0gICBUaGUgcmFuZ2UgY29udGFpbmluZyB0aGF0IGNoYXJhY3Rlciwgb3IgbnVsbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmFuZ2UodGV4dDogc3RyaW5nKTogUmFuZ2VEZWYgfCBudWxsIHtcbiAgY29uc3QgbiA9IHRleHQuY29kZVBvaW50QXQoMCk7XG4gIGZvciAoY29uc3QgcmFuZ2Ugb2YgUkFOR0VTKSB7XG4gICAgaWYgKG4gPD0gcmFuZ2VbMV0pIHtcbiAgICAgIGlmIChuID49IHJhbmdlWzBdKSB7XG4gICAgICAgIHJldHVybiByYW5nZTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBNYXRoTUwgc3BhY2luZyBmb3IgdGhlIHZhcmlvdXMgVGVYIGNsYXNzZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBNTUxTUEFDSU5HID0gW1xuICBbMCwgMF0sICAvLyBPUkRcbiAgWzEsIDJdLCAgLy8gT1BcbiAgWzMsIDNdLCAgLy8gQklOXG4gIFs0LCA0XSwgIC8vIFJFTFxuICBbMCwgMF0sICAvLyBPUEVOXG4gIFswLCAwXSwgIC8vIENMT1NFXG4gIFswLCAzXSAgIC8vIFBVTkNUXG5dO1xuXG4vKipcbiAqICBUaGUgb3BlcmF0b3IgZGljdGlvbmFyeSwgd2l0aCBzZWN0aW9ucyBmb3IgdGhlIHRocmVlIGZvcm1zOiAgcHJlZml4LCBwb3N0Zml4LCBhbmQgaW5maXhcbiAqL1xuZXhwb3J0IGNvbnN0IE9QVEFCTEU6IHtbZm9ybTogc3RyaW5nXTogT3BlcmF0b3JMaXN0fSA9IHtcbiAgcHJlZml4OiB7XG4gICAgJygnOiBNTy5PUEVOLCAgICAgICAgICAgIC8vIGxlZnQgcGFyZW50aGVzaXNcbiAgICAnKyc6IE1PLkJJTjAxLCAgICAgICAgICAgLy8gcGx1cyBzaWduXG4gICAgJy0nOiBNTy5CSU4wMSwgICAgICAgICAgIC8vIGh5cGhlbi1taW51c1xuICAgICdbJzogTU8uT1BFTiwgICAgICAgICAgICAvLyBsZWZ0IHNxdWFyZSBicmFja2V0XG4gICAgJ3snOiBNTy5PUEVOLCAgICAgICAgICAgIC8vIGxlZnQgY3VybHkgYnJhY2tldFxuICAgICd8JzogTU8uT1BFTiwgICAgICAgICAgICAvLyB2ZXJ0aWNhbCBsaW5lXG4gICAgJ3x8JzogWzAsIDAsIFRFWENMQVNTLkJJTiwge2ZlbmNlOiB0cnVlLCBzdHJldGNoeTogdHJ1ZSwgc3ltbWV0cmljOiB0cnVlfV0sIC8vIG11bHRpcGxlIGNoYXJhY3RlciBvcGVyYXRvcjogfHxcbiAgICAnfHx8JzogWzAsIDAsIFRFWENMQVNTLk9SRCwge2ZlbmNlOiB0cnVlLCBzdHJldGNoeTogdHJ1ZSwgc3ltbWV0cmljOiB0cnVlfV0sIC8vIG11bHRpcGxlIGNoYXJhY3RlciBvcGVyYXRvcjogfHx8XG4gICAgJ1xcdTAwQUMnOiBNTy5PUkQyMSwgICAgICAvLyBub3Qgc2lnblxuICAgICdcXHUwMEIxJzogTU8uQklOMDEsICAgICAgLy8gcGx1cy1taW51cyBzaWduXG4gICAgJ1xcdTIwMTYnOiBbMCwgMCwgVEVYQ0xBU1MuT1JELCB7ZmVuY2U6IHRydWUsIHN0cmV0Y2h5OiB0cnVlfV0sIC8vIGRvdWJsZSB2ZXJ0aWNhbCBsaW5lXG4gICAgJ1xcdTIwMTgnOiBbMCwgMCwgVEVYQ0xBU1MuT1BFTiwge2ZlbmNlOiB0cnVlfV0sIC8vIGxlZnQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrXG4gICAgJ1xcdTIwMUMnOiBbMCwgMCwgVEVYQ0xBU1MuT1BFTiwge2ZlbmNlOiB0cnVlfV0sIC8vIGxlZnQgZG91YmxlIHF1b3RhdGlvbiBtYXJrXG4gICAgJ1xcdTIxNDUnOiBNTy5PUkQyMSwgICAgICAvLyBkb3VibGUtc3RydWNrIGl0YWxpYyBjYXBpdGFsIGRcbiAgICAnXFx1MjE0Nic6IE9QREVGKDIsIDAsIFRFWENMQVNTLk9SRCksICAvLyBkb3VibGUtc3RydWNrIGl0YWxpYyBzbWFsbCBkXG4gICAgJ1xcdTIyMDAnOiBNTy5PUkQyMSwgICAgICAvLyBmb3IgYWxsXG4gICAgJ1xcdTIyMDInOiBNTy5PUkQyMSwgICAgICAvLyBwYXJ0aWFsIGRpZmZlcmVudGlhbFxuICAgICdcXHUyMjAzJzogTU8uT1JEMjEsICAgICAgLy8gdGhlcmUgZXhpc3RzXG4gICAgJ1xcdTIyMDQnOiBNTy5PUkQyMSwgICAgICAvLyB0aGVyZSBkb2VzIG5vdCBleGlzdFxuICAgICdcXHUyMjA3JzogTU8uT1JEMjEsICAgICAgLy8gbmFibGFcbiAgICAnXFx1MjIwRic6IE1PLk9QLCAgICAgICAgIC8vIG4tYXJ5IHByb2R1Y3RcbiAgICAnXFx1MjIxMCc6IE1PLk9QLCAgICAgICAgIC8vIG4tYXJ5IGNvcHJvZHVjdFxuICAgICdcXHUyMjExJzogTU8uT1AsICAgICAgICAgLy8gbi1hcnkgc3VtbWF0aW9uXG4gICAgJ1xcdTIyMTInOiBNTy5CSU4wMSwgICAgICAvLyBtaW51cyBzaWduXG4gICAgJ1xcdTIyMTMnOiBNTy5CSU4wMSwgICAgICAvLyBtaW51cy1vci1wbHVzIHNpZ25cbiAgICAnXFx1MjIxQSc6IFsxLCAxLCBURVhDTEFTUy5PUkQsIHtzdHJldGNoeTogdHJ1ZX1dLCAvLyBzcXVhcmUgcm9vdFxuICAgICdcXHUyMjFCJzogTU8uT1JEMTEsICAgICAgLy8gY3ViZSByb290XG4gICAgJ1xcdTIyMUMnOiBNTy5PUkQxMSwgICAgICAvLyBmb3VydGggcm9vdFxuICAgICdcXHUyMjIwJzogTU8uT1JELCAgICAgICAgLy8gYW5nbGVcbiAgICAnXFx1MjIyMSc6IE1PLk9SRCwgICAgICAgIC8vIG1lYXN1cmVkIGFuZ2xlXG4gICAgJ1xcdTIyMjInOiBNTy5PUkQsICAgICAgICAvLyBzcGhlcmljYWwgYW5nbGVcbiAgICAnXFx1MjIyQic6IE1PLklOVEVHUkFMLCAgIC8vIGludGVncmFsXG4gICAgJ1xcdTIyMkMnOiBNTy5JTlRFR1JBTCwgICAvLyBkb3VibGUgaW50ZWdyYWxcbiAgICAnXFx1MjIyRCc6IE1PLklOVEVHUkFMLCAgIC8vIHRyaXBsZSBpbnRlZ3JhbFxuICAgICdcXHUyMjJFJzogTU8uSU5URUdSQUwsICAgLy8gY29udG91ciBpbnRlZ3JhbFxuICAgICdcXHUyMjJGJzogTU8uSU5URUdSQUwsICAgLy8gc3VyZmFjZSBpbnRlZ3JhbFxuICAgICdcXHUyMjMwJzogTU8uSU5URUdSQUwsICAgLy8gdm9sdW1lIGludGVncmFsXG4gICAgJ1xcdTIyMzEnOiBNTy5JTlRFR1JBTCwgICAvLyBjbG9ja3dpc2UgaW50ZWdyYWxcbiAgICAnXFx1MjIzMic6IE1PLklOVEVHUkFMLCAgIC8vIGNsb2Nrd2lzZSBjb250b3VyIGludGVncmFsXG4gICAgJ1xcdTIyMzMnOiBNTy5JTlRFR1JBTCwgICAvLyBhbnRpY2xvY2t3aXNlIGNvbnRvdXIgaW50ZWdyYWxcbiAgICAnXFx1MjJDMCc6IE1PLk9QLCAgICAgICAgIC8vIG4tYXJ5IGxvZ2ljYWwgYW5kXG4gICAgJ1xcdTIyQzEnOiBNTy5PUCwgICAgICAgICAvLyBuLWFyeSBsb2dpY2FsIG9yXG4gICAgJ1xcdTIyQzInOiBNTy5PUCwgICAgICAgICAvLyBuLWFyeSBpbnRlcnNlY3Rpb25cbiAgICAnXFx1MjJDMyc6IE1PLk9QLCAgICAgICAgIC8vIG4tYXJ5IHVuaW9uXG4gICAgJ1xcdTIzMDgnOiBNTy5PUEVOLCAgICAgICAvLyBsZWZ0IGNlaWxpbmdcbiAgICAnXFx1MjMwQSc6IE1PLk9QRU4sICAgICAgIC8vIGxlZnQgZmxvb3JcbiAgICAnXFx1MjMyOSc6IE1PLk9QRU4sICAgICAgIC8vIGxlZnQtcG9pbnRpbmcgYW5nbGUgYnJhY2tldFxuICAgICdcXHUyNzcyJzogTU8uT1BFTiwgICAgICAgLy8gbGlnaHQgbGVmdCB0b3J0b2lzZSBzaGVsbCBicmFja2V0IG9ybmFtZW50XG4gICAgJ1xcdTI3RTYnOiBNTy5PUEVOLCAgICAgICAvLyBtYXRoZW1hdGljYWwgbGVmdCB3aGl0ZSBzcXVhcmUgYnJhY2tldFxuICAgICdcXHUyN0U4JzogTU8uT1BFTiwgICAgICAgLy8gbWF0aGVtYXRpY2FsIGxlZnQgYW5nbGUgYnJhY2tldFxuICAgICdcXHUyN0VBJzogTU8uT1BFTiwgICAgICAgLy8gbWF0aGVtYXRpY2FsIGxlZnQgZG91YmxlIGFuZ2xlIGJyYWNrZXRcbiAgICAnXFx1MjdFQyc6IE1PLk9QRU4sICAgICAgIC8vIG1hdGhlbWF0aWNhbCBsZWZ0IHdoaXRlIHRvcnRvaXNlIHNoZWxsIGJyYWNrZXRcbiAgICAnXFx1MjdFRSc6IE1PLk9QRU4sICAgICAgIC8vIG1hdGhlbWF0aWNhbCBsZWZ0IGZsYXR0ZW5lZCBwYXJlbnRoZXNpc1xuICAgICdcXHUyOTgwJzogWzAsIDAsIFRFWENMQVNTLk9SRCwge2ZlbmNlOiB0cnVlLCBzdHJldGNoeTogdHJ1ZX1dLCAvLyB0cmlwbGUgdmVydGljYWwgYmFyIGRlbGltaXRlclxuICAgICdcXHUyOTgzJzogTU8uT1BFTiwgICAgICAgLy8gbGVmdCB3aGl0ZSBjdXJseSBicmFja2V0XG4gICAgJ1xcdTI5ODUnOiBNTy5PUEVOLCAgICAgICAvLyBsZWZ0IHdoaXRlIHBhcmVudGhlc2lzXG4gICAgJ1xcdTI5ODcnOiBNTy5PUEVOLCAgICAgICAvLyB6IG5vdGF0aW9uIGxlZnQgaW1hZ2UgYnJhY2tldFxuICAgICdcXHUyOTg5JzogTU8uT1BFTiwgICAgICAgLy8geiBub3RhdGlvbiBsZWZ0IGJpbmRpbmcgYnJhY2tldFxuICAgICdcXHUyOThCJzogTU8uT1BFTiwgICAgICAgLy8gbGVmdCBzcXVhcmUgYnJhY2tldCB3aXRoIHVuZGVyYmFyXG4gICAgJ1xcdTI5OEQnOiBNTy5PUEVOLCAgICAgICAvLyBsZWZ0IHNxdWFyZSBicmFja2V0IHdpdGggdGljayBpbiB0b3AgY29ybmVyXG4gICAgJ1xcdTI5OEYnOiBNTy5PUEVOLCAgICAgICAvLyBsZWZ0IHNxdWFyZSBicmFja2V0IHdpdGggdGljayBpbiBib3R0b20gY29ybmVyXG4gICAgJ1xcdTI5OTEnOiBNTy5PUEVOLCAgICAgICAvLyBsZWZ0IGFuZ2xlIGJyYWNrZXQgd2l0aCBkb3RcbiAgICAnXFx1Mjk5Myc6IE1PLk9QRU4sICAgICAgIC8vIGxlZnQgYXJjIGxlc3MtdGhhbiBicmFja2V0XG4gICAgJ1xcdTI5OTUnOiBNTy5PUEVOLCAgICAgICAvLyBkb3VibGUgbGVmdCBhcmMgZ3JlYXRlci10aGFuIGJyYWNrZXRcbiAgICAnXFx1Mjk5Nyc6IE1PLk9QRU4sICAgICAgIC8vIGxlZnQgYmxhY2sgdG9ydG9pc2Ugc2hlbGwgYnJhY2tldFxuICAgICdcXHUyOUZDJzogTU8uT1BFTiwgICAgICAgLy8gbGVmdC1wb2ludGluZyBjdXJ2ZWQgYW5nbGUgYnJhY2tldFxuICAgICdcXHUyQTAwJzogTU8uT1AsICAgICAgICAgLy8gbi1hcnkgY2lyY2xlZCBkb3Qgb3BlcmF0b3JcbiAgICAnXFx1MkEwMSc6IE1PLk9QLCAgICAgICAgIC8vIG4tYXJ5IGNpcmNsZWQgcGx1cyBvcGVyYXRvclxuICAgICdcXHUyQTAyJzogTU8uT1AsICAgICAgICAgLy8gbi1hcnkgY2lyY2xlZCB0aW1lcyBvcGVyYXRvclxuICAgICdcXHUyQTAzJzogTU8uT1AsICAgICAgICAgLy8gbi1hcnkgdW5pb24gb3BlcmF0b3Igd2l0aCBkb3RcbiAgICAnXFx1MkEwNCc6IE1PLk9QLCAgICAgICAgIC8vIG4tYXJ5IHVuaW9uIG9wZXJhdG9yIHdpdGggcGx1c1xuICAgICdcXHUyQTA1JzogTU8uT1AsICAgICAgICAgLy8gbi1hcnkgc3F1YXJlIGludGVyc2VjdGlvbiBvcGVyYXRvclxuICAgICdcXHUyQTA2JzogTU8uT1AsICAgICAgICAgLy8gbi1hcnkgc3F1YXJlIHVuaW9uIG9wZXJhdG9yXG4gICAgJ1xcdTJBMDcnOiBNTy5PUCwgICAgICAgICAvLyB0d28gbG9naWNhbCBhbmQgb3BlcmF0b3JcbiAgICAnXFx1MkEwOCc6IE1PLk9QLCAgICAgICAgIC8vIHR3byBsb2dpY2FsIG9yIG9wZXJhdG9yXG4gICAgJ1xcdTJBMDknOiBNTy5PUCwgICAgICAgICAvLyBuLWFyeSB0aW1lcyBvcGVyYXRvclxuICAgICdcXHUyQTBBJzogTU8uT1AsICAgICAgICAgLy8gbW9kdWxvIHR3byBzdW1cbiAgICAnXFx1MkEwQic6IE1PLklOVEVHUkFMMiwgIC8vIHN1bW1hdGlvbiB3aXRoIGludGVncmFsXG4gICAgJ1xcdTJBMEMnOiBNTy5JTlRFR1JBTCwgICAvLyBxdWFkcnVwbGUgaW50ZWdyYWwgb3BlcmF0b3JcbiAgICAnXFx1MkEwRCc6IE1PLklOVEVHUkFMMiwgIC8vIGZpbml0ZSBwYXJ0IGludGVncmFsXG4gICAgJ1xcdTJBMEUnOiBNTy5JTlRFR1JBTDIsICAvLyBpbnRlZ3JhbCB3aXRoIGRvdWJsZSBzdHJva2VcbiAgICAnXFx1MkEwRic6IE1PLklOVEVHUkFMMiwgIC8vIGludGVncmFsIGF2ZXJhZ2Ugd2l0aCBzbGFzaFxuICAgICdcXHUyQTEwJzogTU8uT1AsICAgICAgICAgLy8gY2lyY3VsYXRpb24gZnVuY3Rpb25cbiAgICAnXFx1MkExMSc6IE1PLk9QLCAgICAgICAgIC8vIGFudGljbG9ja3dpc2UgaW50ZWdyYXRpb25cbiAgICAnXFx1MkExMic6IE1PLk9QLCAgICAgICAgIC8vIGxpbmUgaW50ZWdyYXRpb24gd2l0aCByZWN0YW5ndWxhciBwYXRoIGFyb3VuZCBwb2xlXG4gICAgJ1xcdTJBMTMnOiBNTy5PUCwgICAgICAgICAvLyBsaW5lIGludGVncmF0aW9uIHdpdGggc2VtaWNpcmN1bGFyIHBhdGggYXJvdW5kIHBvbGVcbiAgICAnXFx1MkExNCc6IE1PLk9QLCAgICAgICAgIC8vIGxpbmUgaW50ZWdyYXRpb24gbm90IGluY2x1ZGluZyB0aGUgcG9sZVxuICAgICdcXHUyQTE1JzogTU8uSU5URUdSQUwyLCAgLy8gaW50ZWdyYWwgYXJvdW5kIGEgcG9pbnQgb3BlcmF0b3JcbiAgICAnXFx1MkExNic6IE1PLklOVEVHUkFMMiwgIC8vIHF1YXRlcm5pb24gaW50ZWdyYWwgb3BlcmF0b3JcbiAgICAnXFx1MkExNyc6IE1PLklOVEVHUkFMMiwgIC8vIGludGVncmFsIHdpdGggbGVmdHdhcmRzIGFycm93IHdpdGggaG9va1xuICAgICdcXHUyQTE4JzogTU8uSU5URUdSQUwyLCAgLy8gaW50ZWdyYWwgd2l0aCB0aW1lcyBzaWduXG4gICAgJ1xcdTJBMTknOiBNTy5JTlRFR1JBTDIsICAvLyBpbnRlZ3JhbCB3aXRoIGludGVyc2VjdGlvblxuICAgICdcXHUyQTFBJzogTU8uSU5URUdSQUwyLCAgLy8gaW50ZWdyYWwgd2l0aCB1bmlvblxuICAgICdcXHUyQTFCJzogTU8uSU5URUdSQUwyLCAgLy8gaW50ZWdyYWwgd2l0aCBvdmVyYmFyXG4gICAgJ1xcdTJBMUMnOiBNTy5JTlRFR1JBTDIsICAvLyBpbnRlZ3JhbCB3aXRoIHVuZGVyYmFyXG4gICAgJ1xcdTJBRkMnOiBNTy5PUCwgICAgICAgICAvLyBsYXJnZSB0cmlwbGUgdmVydGljYWwgYmFyIG9wZXJhdG9yXG4gICAgJ1xcdTJBRkYnOiBNTy5PUCwgICAgICAgICAvLyBuLWFyeSB3aGl0ZSB2ZXJ0aWNhbCBiYXJcbiAgfSxcbiAgcG9zdGZpeDoge1xuICAgICchISc6IE9QREVGKDEsIDApLCAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6ICEhXG4gICAgJyEnOiBbMSwgMCwgVEVYQ0xBU1MuQ0xPU0UsIG51bGxdLCAvLyBleGNsYW1hdGlvbiBtYXJrXG4gICAgJ1wiJzogTU8uQUNDRU5ULCAgICAgICAgICAvLyBxdW90YXRpb24gbWFya1xuICAgICcmJzogTU8uT1JELCAgICAgICAgICAgICAvLyBhbXBlcnNhbmRcbiAgICAnKSc6IE1PLkNMT1NFLCAgICAgICAgICAgLy8gcmlnaHQgcGFyZW50aGVzaXNcbiAgICAnKysnOiBPUERFRigwLCAwKSwgICAgICAgLy8gbXVsdGlwbGUgY2hhcmFjdGVyIG9wZXJhdG9yOiArK1xuICAgICctLSc6IE9QREVGKDAsIDApLCAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6IC0tXG4gICAgJy4uJzogT1BERUYoMCwgMCksICAgICAgIC8vIG11bHRpcGxlIGNoYXJhY3RlciBvcGVyYXRvcjogLi5cbiAgICAnLi4uJzogTU8uT1JELCAgICAgICAgICAgLy8gbXVsdGlwbGUgY2hhcmFjdGVyIG9wZXJhdG9yOiAuLi5cbiAgICAnXFwnJzogTU8uQUNDRU5ULCAgICAgICAgIC8vIGFwb3N0cm9waGVcbiAgICAnXSc6IE1PLkNMT1NFLCAgICAgICAgICAgLy8gcmlnaHQgc3F1YXJlIGJyYWNrZXRcbiAgICAnXic6IE1PLldJREVBQ0NFTlQsICAgICAgLy8gY2lyY3VtZmxleCBhY2NlbnRcbiAgICAnXyc6IE1PLldJREVBQ0NFTlQsICAgICAgLy8gbG93IGxpbmVcbiAgICAnYCc6IE1PLkFDQ0VOVCwgICAgICAgICAgLy8gZ3JhdmUgYWNjZW50XG4gICAgJ3wnOiBNTy5DTE9TRSwgICAgICAgICAgIC8vIHZlcnRpY2FsIGxpbmVcbiAgICAnfSc6IE1PLkNMT1NFLCAgICAgICAgICAgLy8gcmlnaHQgY3VybHkgYnJhY2tldFxuICAgICd+JzogTU8uV0lERUFDQ0VOVCwgICAgICAvLyB0aWxkZVxuICAgICd8fCc6IFswLCAwLCBURVhDTEFTUy5CSU4sIHtmZW5jZTogdHJ1ZSwgc3RyZXRjaHk6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZX1dLCAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6IHx8XG4gICAgJ3x8fCc6IFswLCAwLCBURVhDTEFTUy5PUkQsIHtmZW5jZTogdHJ1ZSwgc3RyZXRjaHk6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZX1dLCAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6IHx8fFxuICAgICdcXHUwMEE4JzogTU8uQUNDRU5ULCAgICAgLy8gZGlhZXJlc2lzXG4gICAgJ1xcdTAwQUEnOiBNTy5BQ0NFTlQsICAgICAvLyBmZW1pbmllIG9yZGluYWwgaW5kaWNhdG9yXG4gICAgJ1xcdTAwQUYnOiBNTy5XSURFQUNDRU5ULCAvLyBtYWNyb25cbiAgICAnXFx1MDBCMCc6IE1PLk9SRCwgICAgICAgIC8vIGRlZ3JlZSBzaWduXG4gICAgJ1xcdTAwQjInOiBNTy5BQ0NFTlQsICAgICAvLyBzdXBlcnNjcmlwdCAyXG4gICAgJ1xcdTAwQjMnOiBNTy5BQ0NFTlQsICAgICAvLyBzdXBlcnNjcmlwdCAzXG4gICAgJ1xcdTAwQjQnOiBNTy5BQ0NFTlQsICAgICAvLyBhY3V0ZSBhY2NlbnRcbiAgICAnXFx1MDBCOCc6IE1PLkFDQ0VOVCwgICAgIC8vIGNlZGlsbGFcbiAgICAnXFx1MDBCOSc6IE1PLkFDQ0VOVCwgICAgIC8vIHN1cGVyc2NyaXB0IDFcbiAgICAnXFx1MDBCQSc6IE1PLkFDQ0VOVCwgICAgIC8vIG1hc2N1bGluZSBvcmRpbmFsIGluZGljYXRvclxuICAgICdcXHUwMkM2JzogTU8uV0lERUFDQ0VOVCwgLy8gbW9kaWZpZXIgbGV0dGVyIGNpcmN1bWZsZXggYWNjZW50XG4gICAgJ1xcdTAyQzcnOiBNTy5XSURFQUNDRU5ULCAvLyBjYXJvblxuICAgICdcXHUwMkM5JzogTU8uV0lERUFDQ0VOVCwgLy8gbW9kaWZpZXIgbGV0dGVyIG1hY3JvblxuICAgICdcXHUwMkNBJzogTU8uQUNDRU5ULCAgICAgLy8gbW9kaWZpZXIgbGV0dGVyIGFjdXRlIGFjY2VudFxuICAgICdcXHUwMkNCJzogTU8uQUNDRU5ULCAgICAgLy8gbW9kaWZpZXIgbGV0dGVyIGdyYXZlIGFjY2VudFxuICAgICdcXHUwMkNEJzogTU8uV0lERUFDQ0VOVCwgLy8gbW9kaWZpZXIgbGV0dGVyIGxvdyBtYWNyb25cbiAgICAnXFx1MDJEOCc6IE1PLkFDQ0VOVCwgICAgIC8vIGJyZXZlXG4gICAgJ1xcdTAyRDknOiBNTy5BQ0NFTlQsICAgICAvLyBkb3QgYWJvdmVcbiAgICAnXFx1MDJEQSc6IE1PLkFDQ0VOVCwgICAgIC8vIHJpbmcgYWJvdmVcbiAgICAnXFx1MDJEQyc6IE1PLldJREVBQ0NFTlQsIC8vIHNtYWxsIHRpbGRlXG4gICAgJ1xcdTAyREQnOiBNTy5BQ0NFTlQsICAgICAvLyBkb3VibGUgYWN1dGUgYWNjZW50XG4gICAgJ1xcdTAyRjcnOiBNTy5XSURFQUNDRU5ULCAvLyBtb2RpZmllciBsZXR0ZXIgbG93IHRpbGRlXG4gICAgJ1xcdTAzMDInOiBNTy5XSURFQUNDRU5ULCAvLyBjb21iaW5pbmcgY2lyY3VtZmxleCBhY2NlbnRcbiAgICAnXFx1MDMxMSc6IE1PLkFDQ0VOVCwgICAgIC8vIGNvbWJpbmluZyBpbnZlcnRlZCBicmV2ZVxuICAgICdcXHUwM0Y2JzogTU8uUkVMLCAgICAgICAgLy8gZ3JlZWsgcmV2ZXJzZWQgbHVuYXRlIGVwc2lsb24gc3ltYm9sXG4gICAgJ1xcdTIwMTYnOiBbMCwgMCwgVEVYQ0xBU1MuT1JELCB7ZmVuY2U6IHRydWUsIHN0cmV0Y2h5OiB0cnVlfV0sIC8vIGRvdWJsZSB2ZXJ0aWNhbCBsaW5lXG4gICAgJ1xcdTIwMTknOiBbMCwgMCwgVEVYQ0xBU1MuQ0xPU0UsIHtmZW5jZTogdHJ1ZX1dLCAvLyByaWdodCBzaW5nbGUgcXVvdGF0aW9uIG1hcmtcbiAgICAnXFx1MjAxQSc6IE1PLkFDQ0VOVCwgICAgIC8vIHNpbmdsZSBsb3ctOSBxdW90YXRpb24gbWFya1xuICAgICdcXHUyMDFCJzogTU8uQUNDRU5ULCAgICAgLy8gc2luZ2xlIGhpZ2gtcmV2ZXJzZWQtOSBxdW90YXRpb24gbWFya1xuICAgICdcXHUyMDFEJzogWzAsIDAsIFRFWENMQVNTLkNMT1NFLCB7ZmVuY2U6IHRydWV9XSwgIC8vIHJpZ2h0IGRvdWJsZSBxdW90YXRpb24gbWFya1xuICAgICdcXHUyMDFFJzogTU8uQUNDRU5ULCAgICAgLy8gZG91YmxlIGxvdy05IHF1b3RhdGlvbiBtYXJrXG4gICAgJ1xcdTIwMUYnOiBNTy5BQ0NFTlQsICAgICAvLyBkb3VibGUgaGlnaC1yZXZlcnNlZC05IHF1b3RhdGlvbiBtYXJrXG4gICAgJ1xcdTIwMzInOiBNTy5PUkQsICAgICAgICAvLyBwcmltZVxuICAgICdcXHUyMDMzJzogTU8uQUNDRU5ULCAgICAgLy8gZG91YmxlIHByaW1lXG4gICAgJ1xcdTIwMzQnOiBNTy5BQ0NFTlQsICAgICAvLyB0cmlwbGUgcHJpbWVcbiAgICAnXFx1MjAzNSc6IE1PLkFDQ0VOVCwgICAgIC8vIHJldmVyc2VkIHByaW1lXG4gICAgJ1xcdTIwMzYnOiBNTy5BQ0NFTlQsICAgICAvLyByZXZlcnNlZCBkb3VibGUgcHJpbWVcbiAgICAnXFx1MjAzNyc6IE1PLkFDQ0VOVCwgICAgIC8vIHJldmVyc2VkIHRyaXBsZSBwcmltZVxuICAgICdcXHUyMDNFJzogTU8uV0lERUFDQ0VOVCwgLy8gb3ZlcmxpbmVcbiAgICAnXFx1MjA1Nyc6IE1PLkFDQ0VOVCwgICAgIC8vIHF1YWRydXBsZSBwcmltZVxuICAgICdcXHUyMERCJzogTU8uQUNDRU5ULCAgICAgLy8gY29tYmluaW5nIHRocmVlIGRvdHMgYWJvdmVcbiAgICAnXFx1MjBEQyc6IE1PLkFDQ0VOVCwgICAgIC8vIGNvbWJpbmluZyBmb3VyIGRvdHMgYWJvdmVcbiAgICAnXFx1MjMwOSc6IE1PLkNMT1NFLCAgICAgIC8vIHJpZ2h0IGNlaWxpbmdcbiAgICAnXFx1MjMwQic6IE1PLkNMT1NFLCAgICAgIC8vIHJpZ2h0IGZsb29yXG4gICAgJ1xcdTIzMkEnOiBNTy5DTE9TRSwgICAgICAvLyByaWdodC1wb2ludGluZyBhbmdsZSBicmFja2V0XG4gICAgJ1xcdTIzQjQnOiBNTy5XSURFQUNDRU5ULCAvLyB0b3Agc3F1YXJlIGJyYWNrZXRcbiAgICAnXFx1MjNCNSc6IE1PLldJREVBQ0NFTlQsIC8vIGJvdHRvbSBzcXVhcmUgYnJhY2tldFxuICAgICdcXHUyM0RDJzogTU8uV0lERUFDQ0VOVCwgLy8gdG9wIHBhcmVudGhlc2lzXG4gICAgJ1xcdTIzREQnOiBNTy5XSURFQUNDRU5ULCAvLyBib3R0b20gcGFyZW50aGVzaXNcbiAgICAnXFx1MjNERSc6IE1PLldJREVBQ0NFTlQsIC8vIHRvcCBjdXJseSBicmFja2V0XG4gICAgJ1xcdTIzREYnOiBNTy5XSURFQUNDRU5ULCAvLyBib3R0b20gY3VybHkgYnJhY2tldFxuICAgICdcXHUyM0UwJzogTU8uV0lERUFDQ0VOVCwgLy8gdG9wIHRvcnRvaXNlIHNoZWxsIGJyYWNrZXRcbiAgICAnXFx1MjNFMSc6IE1PLldJREVBQ0NFTlQsIC8vIGJvdHRvbSB0b3J0b2lzZSBzaGVsbCBicmFja2V0XG4gICAgJ1xcdTI1QTAnOiBNTy5CSU4zLCAgICAgICAvLyBibGFjayBzcXVhcmVcbiAgICAnXFx1MjVBMSc6IE1PLkJJTjMsICAgICAgIC8vIHdoaXRlIHNxdWFyZVxuICAgICdcXHUyNUFBJzogTU8uQklOMywgICAgICAgLy8gYmxhY2sgc21hbGwgc3F1YXJlXG4gICAgJ1xcdTI1QUInOiBNTy5CSU4zLCAgICAgICAvLyB3aGl0ZSBzbWFsbCBzcXVhcmVcbiAgICAnXFx1MjVBRCc6IE1PLkJJTjMsICAgICAgIC8vIHdoaXRlIHJlY3RhbmdsZVxuICAgICdcXHUyNUFFJzogTU8uQklOMywgICAgICAgLy8gYmxhY2sgdmVydGljYWwgcmVjdGFuZ2xlXG4gICAgJ1xcdTI1QUYnOiBNTy5CSU4zLCAgICAgICAvLyB3aGl0ZSB2ZXJ0aWNhbCByZWN0YW5nbGVcbiAgICAnXFx1MjVCMCc6IE1PLkJJTjMsICAgICAgIC8vIGJsYWNrIHBhcmFsbGVsb2dyYW1cbiAgICAnXFx1MjVCMSc6IE1PLkJJTjMsICAgICAgIC8vIHdoaXRlIHBhcmFsbGVsb2dyYW1cbiAgICAnXFx1MjVCMic6IE1PLkJJTjQsICAgICAgIC8vIGJsYWNrIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4gICAgJ1xcdTI1QjQnOiBNTy5CSU40LCAgICAgICAvLyBibGFjayB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuICAgICdcXHUyNUI2JzogTU8uQklONCwgICAgICAgLy8gYmxhY2sgcmlnaHQtcG9pbnRpbmcgdHJpYW5nbGVcbiAgICAnXFx1MjVCNyc6IE1PLkJJTjQsICAgICAgIC8vIHdoaXRlIHJpZ2h0LXBvaW50aW5nIHRyaWFuZ2xlXG4gICAgJ1xcdTI1QjgnOiBNTy5CSU40LCAgICAgICAvLyBibGFjayByaWdodC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuICAgICdcXHUyNUJDJzogTU8uQklONCwgICAgICAgLy8gYmxhY2sgZG93bi1wb2ludGluZyB0cmlhbmdsZVxuICAgICdcXHUyNUJFJzogTU8uQklONCwgICAgICAgLy8gYmxhY2sgZG93bi1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuICAgICdcXHUyNUMwJzogTU8uQklONCwgICAgICAgLy8gYmxhY2sgbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuICAgICdcXHUyNUMxJzogTU8uQklONCwgICAgICAgLy8gd2hpdGUgbGVmdC1wb2ludGluZyB0cmlhbmdsZVxuICAgICdcXHUyNUMyJzogTU8uQklONCwgICAgICAgLy8gYmxhY2sgbGVmdC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuICAgICdcXHUyNUM0JzogTU8uQklONCwgICAgICAgLy8gYmxhY2sgbGVmdC1wb2ludGluZyBwb2ludGVyXG4gICAgJ1xcdTI1QzUnOiBNTy5CSU40LCAgICAgICAvLyB3aGl0ZSBsZWZ0LXBvaW50aW5nIHBvaW50ZXJcbiAgICAnXFx1MjVDNic6IE1PLkJJTjQsICAgICAgIC8vIGJsYWNrIGRpYW1vbmRcbiAgICAnXFx1MjVDNyc6IE1PLkJJTjQsICAgICAgIC8vIHdoaXRlIGRpYW1vbmRcbiAgICAnXFx1MjVDOCc6IE1PLkJJTjQsICAgICAgIC8vIHdoaXRlIGRpYW1vbmQgY29udGFpbmluZyBibGFjayBzbWFsbCBkaWFtb25kXG4gICAgJ1xcdTI1QzknOiBNTy5CSU40LCAgICAgICAvLyBmaXNoZXllXG4gICAgJ1xcdTI1Q0MnOiBNTy5CSU40LCAgICAgICAvLyBkb3R0ZWQgY2lyY2xlXG4gICAgJ1xcdTI1Q0QnOiBNTy5CSU40LCAgICAgICAvLyBjaXJjbGUgd2l0aCB2ZXJ0aWNhbCBmaWxsXG4gICAgJ1xcdTI1Q0UnOiBNTy5CSU40LCAgICAgICAvLyBidWxsc2V5ZVxuICAgICdcXHUyNUNGJzogTU8uQklONCwgICAgICAgLy8gYmxhY2sgY2lyY2xlXG4gICAgJ1xcdTI1RDYnOiBNTy5CSU40LCAgICAgICAvLyBsZWZ0IGhhbGYgYmxhY2sgY2lyY2xlXG4gICAgJ1xcdTI1RDcnOiBNTy5CSU40LCAgICAgICAvLyByaWdodCBoYWxmIGJsYWNrIGNpcmNsZVxuICAgICdcXHUyNUU2JzogTU8uQklONCwgICAgICAgLy8gd2hpdGUgYnVsbGV0XG4gICAgJ1xcdTI2NkQnOiBNTy5PUkQwMiwgICAgICAvLyBtdXNpYyBmbGF0IHNpZ25cbiAgICAnXFx1MjY2RSc6IE1PLk9SRDAyLCAgICAgIC8vIG11c2ljIG5hdHVyYWwgc2lnblxuICAgICdcXHUyNjZGJzogTU8uT1JEMDIsICAgICAgLy8gbXVzaWMgc2hhcnAgc2lnblxuICAgICdcXHUyNzczJzogTU8uQ0xPU0UsICAgICAgLy8gbGlnaHQgcmlnaHQgdG9ydG9pc2Ugc2hlbGwgYnJhY2tldCBvcm5hbWVudFxuICAgICdcXHUyN0U3JzogTU8uQ0xPU0UsICAgICAgLy8gbWF0aGVtYXRpY2FsIHJpZ2h0IHdoaXRlIHNxdWFyZSBicmFja2V0XG4gICAgJ1xcdTI3RTknOiBNTy5DTE9TRSwgICAgICAvLyBtYXRoZW1hdGljYWwgcmlnaHQgYW5nbGUgYnJhY2tldFxuICAgICdcXHUyN0VCJzogTU8uQ0xPU0UsICAgICAgLy8gbWF0aGVtYXRpY2FsIHJpZ2h0IGRvdWJsZSBhbmdsZSBicmFja2V0XG4gICAgJ1xcdTI3RUQnOiBNTy5DTE9TRSwgICAgICAvLyBtYXRoZW1hdGljYWwgcmlnaHQgd2hpdGUgdG9ydG9pc2Ugc2hlbGwgYnJhY2tldFxuICAgICdcXHUyN0VGJzogTU8uQ0xPU0UsICAgICAgLy8gbWF0aGVtYXRpY2FsIHJpZ2h0IGZsYXR0ZW5lZCBwYXJlbnRoZXNpc1xuICAgICdcXHUyOTgwJzogWzAsIDAsIFRFWENMQVNTLk9SRCwge2ZlbmNlOiB0cnVlLCBzdHJldGNoeTogdHJ1ZX1dLCAvLyB0cmlwbGUgdmVydGljYWwgYmFyIGRlbGltaXRlclxuICAgICdcXHUyOTg0JzogTU8uQ0xPU0UsICAgICAgLy8gcmlnaHQgd2hpdGUgY3VybHkgYnJhY2tldFxuICAgICdcXHUyOTg2JzogTU8uQ0xPU0UsICAgICAgLy8gcmlnaHQgd2hpdGUgcGFyZW50aGVzaXNcbiAgICAnXFx1Mjk4OCc6IE1PLkNMT1NFLCAgICAgIC8vIHogbm90YXRpb24gcmlnaHQgaW1hZ2UgYnJhY2tldFxuICAgICdcXHUyOThBJzogTU8uQ0xPU0UsICAgICAgLy8geiBub3RhdGlvbiByaWdodCBiaW5kaW5nIGJyYWNrZXRcbiAgICAnXFx1Mjk4Qyc6IE1PLkNMT1NFLCAgICAgIC8vIHJpZ2h0IHNxdWFyZSBicmFja2V0IHdpdGggdW5kZXJiYXJcbiAgICAnXFx1Mjk4RSc6IE1PLkNMT1NFLCAgICAgIC8vIHJpZ2h0IHNxdWFyZSBicmFja2V0IHdpdGggdGljayBpbiBib3R0b20gY29ybmVyXG4gICAgJ1xcdTI5OTAnOiBNTy5DTE9TRSwgICAgICAvLyByaWdodCBzcXVhcmUgYnJhY2tldCB3aXRoIHRpY2sgaW4gdG9wIGNvcm5lclxuICAgICdcXHUyOTkyJzogTU8uQ0xPU0UsICAgICAgLy8gcmlnaHQgYW5nbGUgYnJhY2tldCB3aXRoIGRvdFxuICAgICdcXHUyOTk0JzogTU8uQ0xPU0UsICAgICAgLy8gcmlnaHQgYXJjIGdyZWF0ZXItdGhhbiBicmFja2V0XG4gICAgJ1xcdTI5OTYnOiBNTy5DTE9TRSwgICAgICAvLyBkb3VibGUgcmlnaHQgYXJjIGxlc3MtdGhhbiBicmFja2V0XG4gICAgJ1xcdTI5OTgnOiBNTy5DTE9TRSwgICAgICAvLyByaWdodCBibGFjayB0b3J0b2lzZSBzaGVsbCBicmFja2V0XG4gICAgJ1xcdTI5RkQnOiBNTy5DTE9TRSwgICAgICAvLyByaWdodC1wb2ludGluZyBjdXJ2ZWQgYW5nbGUgYnJhY2tldFxuICB9LFxuICBpbmZpeDoge1xuICAgICchPSc6IE1PLkJJTjQsICAgICAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6ICE9XG4gICAgJyMnOiBNTy5PUkQsICAgICAgICAgICAgIC8vICNcbiAgICAnJCc6IE1PLk9SRCwgICAgICAgICAgICAgLy8gJFxuICAgICclJzogWzMsIDMsIFRFWENMQVNTLk9SRCwgbnVsbF0sIC8vIHBlcmNlbnQgc2lnblxuICAgICcmJic6IE1PLkJJTjQsICAgICAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6ICYmXG4gICAgJyc6IE1PLk9SRCwgICAgICAgICAgICAgIC8vIGVtcHR5IDxtbz5cbiAgICAnKic6IE1PLkJJTjMsICAgICAgICAgICAgLy8gYXN0ZXJpc2tcbiAgICAnKionOiBPUERFRigxLCAxKSwgICAgICAgLy8gbXVsdGlwbGUgY2hhcmFjdGVyIG9wZXJhdG9yOiAqKlxuICAgICcqPSc6IE1PLkJJTjQsICAgICAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6ICo9XG4gICAgJysnOiBNTy5CSU40LCAgICAgICAgICAgIC8vIHBsdXMgc2lnblxuICAgICcrPSc6IE1PLkJJTjQsICAgICAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6ICs9XG4gICAgJywnOiBbMCwgMywgVEVYQ0xBU1MuUFVOQ1QsIHtsaW5lYnJlYWtzdHlsZTogJ2FmdGVyJywgc2VwYXJhdG9yOiB0cnVlfV0sIC8vIGNvbW1hXG4gICAgJy0nOiBNTy5CSU40LCAgICAgICAgICAgIC8vIGh5cGhlbi1taW51c1xuICAgICctPSc6IE1PLkJJTjQsICAgICAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6IC09XG4gICAgJy0+JzogTU8uQklONSwgICAgICAgICAgIC8vIG11bHRpcGxlIGNoYXJhY3RlciBvcGVyYXRvcjogLT5cbiAgICAnLic6IFswLCAzLCBURVhDTEFTUy5QVU5DVCwge3NlcGFyYXRvcjogdHJ1ZX1dLCAvLyBcXGxkb3RwXG4gICAgJy8nOiBNTy5PUkQxMSwgICAgICAgICAgIC8vIHNvbGlkdXNcbiAgICAnLy8nOiBPUERFRigxLCAxKSwgICAgICAgLy8gbXVsdGlwbGUgY2hhcmFjdGVyIG9wZXJhdG9yOiAvL1xuICAgICcvPSc6IE1PLkJJTjQsICAgICAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6IC89XG4gICAgJzonOiBbMSwgMiwgVEVYQ0xBU1MuUkVMLCBudWxsXSwgLy8gY29sb25cbiAgICAnOj0nOiBNTy5CSU40LCAgICAgICAgICAgLy8gbXVsdGlwbGUgY2hhcmFjdGVyIG9wZXJhdG9yOiA6PVxuICAgICc7JzogWzAsIDMsIFRFWENMQVNTLlBVTkNULCB7bGluZWJyZWFrc3R5bGU6ICdhZnRlcicsIHNlcGFyYXRvcjogdHJ1ZX1dLCAvLyBzZW1pY29sb25cbiAgICAnPCc6IE1PLlJFTCwgICAgICAgICAgICAgLy8gbGVzcy10aGFuIHNpZ25cbiAgICAnPD0nOiBNTy5CSU41LCAgICAgICAgICAgLy8gbXVsdGlwbGUgY2hhcmFjdGVyIG9wZXJhdG9yOiA8PVxuICAgICc8Pic6IE9QREVGKDEsIDEpLCAgICAgICAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6IDw+XG4gICAgJz0nOiBNTy5SRUwsICAgICAgICAgICAgIC8vIGVxdWFscyBzaWduXG4gICAgJz09JzogTU8uQklONCwgICAgICAgICAgIC8vIG11bHRpcGxlIGNoYXJhY3RlciBvcGVyYXRvcjogPT1cbiAgICAnPic6IE1PLlJFTCwgICAgICAgICAgICAgLy8gZ3JlYXRlci10aGFuIHNpZ25cbiAgICAnPj0nOiBNTy5CSU41LCAgICAgICAgICAgLy8gbXVsdGlwbGUgY2hhcmFjdGVyIG9wZXJhdG9yOiA+PVxuICAgICc/JzogWzEsIDEsIFRFWENMQVNTLkNMT1NFLCBudWxsXSwgLy8gcXVlc3Rpb24gbWFya1xuICAgICdAJzogTU8uT1JEMTEsICAgICAgICAgICAvLyBjb21tZXJjaWFsIGF0XG4gICAgJ1xcXFwnOiBNTy5PUkQsICAgICAgICAgICAgLy8gcmV2ZXJzZSBzb2xpZHVzXG4gICAgJ14nOiBNTy5PUkQxMSwgICAgICAgICAgIC8vIGNpcmN1bWZsZXggYWNjZW50XG4gICAgJ18nOiBNTy5PUkQxMSwgICAgICAgICAgIC8vIGxvdyBsaW5lXG4gICAgJ3wnOiBbMiwgMiwgVEVYQ0xBU1MuT1JELCB7ZmVuY2U6IHRydWUsIHN0cmV0Y2h5OiB0cnVlLCBzeW1tZXRyaWM6IHRydWV9XSwgLy8gdmVydGljYWwgbGluZVxuICAgICd8fCc6IFsyLCAyLCBURVhDTEFTUy5CSU4sIHtmZW5jZTogdHJ1ZSwgc3RyZXRjaHk6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZX1dLCAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6IHx8XG4gICAgJ3x8fCc6IFsyLCAyLCBURVhDTEFTUy5PUkQsIHtmZW5jZTogdHJ1ZSwgc3RyZXRjaHk6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZX1dLCAvLyBtdWx0aXBsZSBjaGFyYWN0ZXIgb3BlcmF0b3I6IHx8fFxuICAgICdcXHUwMEIxJzogTU8uQklONCwgICAgICAgLy8gcGx1cy1taW51cyBzaWduXG4gICAgJ1xcdTAwQjcnOiBNTy5CSU40LCAgICAgICAvLyBtaWRkbGUgZG90XG4gICAgJ1xcdTAwRDcnOiBNTy5CSU40LCAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBzaWduXG4gICAgJ1xcdTAwRjcnOiBNTy5CSU40LCAgICAgICAvLyBkaXZpc2lvbiBzaWduXG4gICAgJ1xcdTAyQjknOiBNTy5PUkQsICAgICAgICAvLyBwcmltZVxuICAgICdcXHUwMzAwJzogTU8uQUNDRU5ULCAgICAgLy8gXFxncmF2ZVxuICAgICdcXHUwMzAxJzogTU8uQUNDRU5ULCAgICAgLy8gXFxhY3V0ZVxuICAgICdcXHUwMzAzJzogTU8uV0lERUFDQ0VOVCwgLy8gXFx0aWxkZVxuICAgICdcXHUwMzA0JzogTU8uQUNDRU5ULCAgICAgLy8gXFxiYXJcbiAgICAnXFx1MDMwNic6IE1PLkFDQ0VOVCwgICAgIC8vIFxcYnJldmVcbiAgICAnXFx1MDMwNyc6IE1PLkFDQ0VOVCwgICAgIC8vIFxcZG90XG4gICAgJ1xcdTAzMDgnOiBNTy5BQ0NFTlQsICAgICAvLyBcXGRkb3RcbiAgICAnXFx1MDMwQyc6IE1PLkFDQ0VOVCwgICAgIC8vIFxcY2hlY2tcbiAgICAnXFx1MDMzMic6IE1PLldJREVBQ0NFTlQsIC8vIGhvcml6b250YWwgbGluZVxuICAgICdcXHUwMzM4JzogTU8uUkVMNCwgICAgICAgLy8gXFxub3RcbiAgICAnXFx1MjAxNSc6IFswLCAwLCBURVhDTEFTUy5PUkQsIHtzdHJldGNoeTogdHJ1ZX1dLCAvLyBob3Jpem9udGFsIGxpbmVcbiAgICAnXFx1MjAxNyc6IFswLCAwLCBURVhDTEFTUy5PUkQsIHtzdHJldGNoeTogdHJ1ZX1dLCAvLyBob3Jpem9udGFsIGxpbmVcbiAgICAnXFx1MjAyMCc6IE1PLkJJTjMsICAgICAgIC8vIFxcZGFnZ2VyXG4gICAgJ1xcdTIwMjEnOiBNTy5CSU4zLCAgICAgICAvLyBcXGRkYWdnZXJcbiAgICAnXFx1MjAyMic6IE1PLkJJTjQsICAgICAgIC8vIGJ1bGxldFxuICAgICdcXHUyMDI2JzogTU8uSU5ORVIsICAgICAgLy8gaG9yaXpvbnRhbCBlbGxpcHNpc1xuICAgICdcXHUyMDQzJzogTU8uQklONCwgICAgICAgLy8gaHlwaGVuIGJ1bGxldFxuICAgICdcXHUyMDQ0JzogTU8uVEFMTEJJTiwgICAgLy8gZnJhY3Rpb24gc2xhc2hcbiAgICAnXFx1MjA2MSc6IE1PLk5PTkUsICAgICAgIC8vIGZ1bmN0aW9uIGFwcGxpY2F0aW9uXG4gICAgJ1xcdTIwNjInOiBNTy5OT05FLCAgICAgICAvLyBpbnZpc2libGUgdGltZXNcbiAgICAnXFx1MjA2Myc6IFswLCAwLCBURVhDTEFTUy5OT05FLCB7bGluZWJyZWFrc3R5bGU6ICdhZnRlcicsIHNlcGFyYXRvcjogdHJ1ZX1dLCAvLyBpbnZpc2libGUgc2VwYXJhdG9yXG4gICAgJ1xcdTIwNjQnOiBNTy5OT05FLCAgICAgICAvLyBpbnZpc2libGUgcGx1c1xuICAgICdcXHUyMEQ3JzogTU8uQUNDRU5ULCAgICAgLy8gXFx2ZWNcbiAgICAnXFx1MjExMSc6IE1PLk9SRCwgICAgICAgIC8vIFxcSW1cbiAgICAnXFx1MjExMyc6IE1PLk9SRCwgICAgICAgIC8vIFxcZWxsXG4gICAgJ1xcdTIxMTgnOiBNTy5PUkQsICAgICAgICAvLyBcXHdwXG4gICAgJ1xcdTIxMUMnOiBNTy5PUkQsICAgICAgICAvLyBcXFJlXG4gICAgJ1xcdTIxOTAnOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgYXJyb3dcbiAgICAnXFx1MjE5MSc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgYXJyb3dcbiAgICAnXFx1MjE5Mic6IE1PLldJREVSRUwsICAgIC8vIHJpZ2h0d2FyZHMgYXJyb3dcbiAgICAnXFx1MjE5Myc6IE1PLlJFTFNUUkVUQ0gsIC8vIGRvd253YXJkcyBhcnJvd1xuICAgICdcXHUyMTk0JzogTU8uV0lERVJFTCwgICAgLy8gbGVmdCByaWdodCBhcnJvd1xuICAgICdcXHUyMTk1JzogTU8uUkVMU1RSRVRDSCwgLy8gdXAgZG93biBhcnJvd1xuICAgICdcXHUyMTk2JzogTU8uUkVMU1RSRVRDSCwgLy8gbm9ydGggd2VzdCBhcnJvd1xuICAgICdcXHUyMTk3JzogTU8uUkVMU1RSRVRDSCwgLy8gbm9ydGggZWFzdCBhcnJvd1xuICAgICdcXHUyMTk4JzogTU8uUkVMU1RSRVRDSCwgLy8gc291dGggZWFzdCBhcnJvd1xuICAgICdcXHUyMTk5JzogTU8uUkVMU1RSRVRDSCwgLy8gc291dGggd2VzdCBhcnJvd1xuICAgICdcXHUyMTlBJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGFycm93IHdpdGggc3Ryb2tlXG4gICAgJ1xcdTIxOUInOiBNTy5SRUxBQ0NFTlQsICAvLyByaWdodHdhcmRzIGFycm93IHdpdGggc3Ryb2tlXG4gICAgJ1xcdTIxOUMnOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgd2F2ZSBhcnJvd1xuICAgICdcXHUyMTlEJzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyB3YXZlIGFycm93XG4gICAgJ1xcdTIxOUUnOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgdHdvIGhlYWRlZCBhcnJvd1xuICAgICdcXHUyMTlGJzogTU8uV0lERVJFTCwgICAgLy8gdXB3YXJkcyB0d28gaGVhZGVkIGFycm93XG4gICAgJ1xcdTIxQTAnOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIHR3byBoZWFkZWQgYXJyb3dcbiAgICAnXFx1MjFBMSc6IE1PLlJFTFNUUkVUQ0gsIC8vIGRvd253YXJkcyB0d28gaGVhZGVkIGFycm93XG4gICAgJ1xcdTIxQTInOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgYXJyb3cgd2l0aCB0YWlsXG4gICAgJ1xcdTIxQTMnOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIGFycm93IHdpdGggdGFpbFxuICAgICdcXHUyMUE0JzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIGFycm93IGZyb20gYmFyXG4gICAgJ1xcdTIxQTUnOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIGFycm93IGZyb20gYmFyXG4gICAgJ1xcdTIxQTYnOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIGFycm93IGZyb20gYmFyXG4gICAgJ1xcdTIxQTcnOiBNTy5SRUxTVFJFVENILCAvLyBkb3dud2FyZHMgYXJyb3cgZnJvbSBiYXJcbiAgICAnXFx1MjFBOCc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwIGRvd24gYXJyb3cgd2l0aCBiYXNlXG4gICAgJ1xcdTIxQTknOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgYXJyb3cgd2l0aCBob29rXG4gICAgJ1xcdTIxQUEnOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIGFycm93IHdpdGggaG9va1xuICAgICdcXHUyMUFCJzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIGFycm93IHdpdGggbG9vcFxuICAgICdcXHUyMUFDJzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyBhcnJvdyB3aXRoIGxvb3BcbiAgICAnXFx1MjFBRCc6IE1PLldJREVSRUwsICAgIC8vIGxlZnQgcmlnaHQgd2F2ZSBhcnJvd1xuICAgICdcXHUyMUFFJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdCByaWdodCBhcnJvdyB3aXRoIHN0cm9rZVxuICAgICdcXHUyMUFGJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIHppZ3phZyBhcnJvd1xuICAgICdcXHUyMUIwJzogTU8uUkVMU1RSRVRDSCwgLy8gdXB3YXJkcyBhcnJvdyB3aXRoIHRpcCBsZWZ0d2FyZHNcbiAgICAnXFx1MjFCMSc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgYXJyb3cgd2l0aCB0aXAgcmlnaHR3YXJkc1xuICAgICdcXHUyMUIyJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIGFycm93IHdpdGggdGlwIGxlZnR3YXJkc1xuICAgICdcXHUyMUIzJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIGFycm93IHdpdGggdGlwIHJpZ2h0d2FyZHNcbiAgICAnXFx1MjFCNCc6IE1PLlJFTFNUUkVUQ0gsIC8vIHJpZ2h0d2FyZHMgYXJyb3cgd2l0aCBjb3JuZXIgZG93bndhcmRzXG4gICAgJ1xcdTIxQjUnOiBNTy5SRUxTVFJFVENILCAvLyBkb3dud2FyZHMgYXJyb3cgd2l0aCBjb3JuZXIgbGVmdHdhcmRzXG4gICAgJ1xcdTIxQjYnOiBNTy5SRUxBQ0NFTlQsICAvLyBhbnRpY2xvY2t3aXNlIHRvcCBzZW1pY2lyY2xlIGFycm93XG4gICAgJ1xcdTIxQjcnOiBNTy5SRUxBQ0NFTlQsICAvLyBjbG9ja3dpc2UgdG9wIHNlbWljaXJjbGUgYXJyb3dcbiAgICAnXFx1MjFCOCc6IE1PLlJFTCwgICAgICAgIC8vIG5vcnRoIHdlc3QgYXJyb3cgdG8gbG9uZyBiYXJcbiAgICAnXFx1MjFCOSc6IE1PLldJREVSRUwsICAgIC8vIGxlZnR3YXJkcyBhcnJvdyB0byBiYXIgb3ZlciByaWdodHdhcmRzIGFycm93IHRvIGJhclxuICAgICdcXHUyMUJBJzogTU8uUkVMLCAgICAgICAgLy8gYW50aWNsb2Nrd2lzZSBvcGVuIGNpcmNsZSBhcnJvd1xuICAgICdcXHUyMUJCJzogTU8uUkVMLCAgICAgICAgLy8gY2xvY2t3aXNlIG9wZW4gY2lyY2xlIGFycm93XG4gICAgJ1xcdTIxQkMnOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgdXB3YXJkc1xuICAgICdcXHUyMUJEJzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGRvd253YXJkc1xuICAgICdcXHUyMUJFJzogTU8uUkVMU1RSRVRDSCwgLy8gdXB3YXJkcyBoYXJwb29uIHdpdGggYmFyYiByaWdodHdhcmRzXG4gICAgJ1xcdTIxQkYnOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGxlZnR3YXJkc1xuICAgICdcXHUyMUMwJzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiB1cHdhcmRzXG4gICAgJ1xcdTIxQzEnOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGRvd253YXJkc1xuICAgICdcXHUyMUMyJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIGhhcnBvb24gd2l0aCBiYXJiIHJpZ2h0d2FyZHNcbiAgICAnXFx1MjFDMyc6IE1PLlJFTFNUUkVUQ0gsIC8vIGRvd253YXJkcyBoYXJwb29uIHdpdGggYmFyYiBsZWZ0d2FyZHNcbiAgICAnXFx1MjFDNCc6IE1PLldJREVSRUwsICAgIC8vIHJpZ2h0d2FyZHMgYXJyb3cgb3ZlciBsZWZ0d2FyZHMgYXJyb3dcbiAgICAnXFx1MjFDNSc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgYXJyb3cgbGVmdHdhcmRzIG9mIGRvd253YXJkcyBhcnJvd1xuICAgICdcXHUyMUM2JzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIGFycm93IG92ZXIgcmlnaHR3YXJkcyBhcnJvd1xuICAgICdcXHUyMUM3JzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIHBhaXJlZCBhcnJvd3NcbiAgICAnXFx1MjFDOCc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgcGFpcmVkIGFycm93c1xuICAgICdcXHUyMUM5JzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyBwYWlyZWQgYXJyb3dzXG4gICAgJ1xcdTIxQ0EnOiBNTy5SRUxTVFJFVENILCAvLyBkb3dud2FyZHMgcGFpcmVkIGFycm93c1xuICAgICdcXHUyMUNCJzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIGhhcnBvb24gb3ZlciByaWdodHdhcmRzIGhhcnBvb25cbiAgICAnXFx1MjFDQyc6IE1PLldJREVSRUwsICAgIC8vIHJpZ2h0d2FyZHMgaGFycG9vbiBvdmVyIGxlZnR3YXJkcyBoYXJwb29uXG4gICAgJ1xcdTIxQ0QnOiBNTy5SRUxBQ0NFTlQsICAvLyBsZWZ0d2FyZHMgZG91YmxlIGFycm93IHdpdGggc3Ryb2tlXG4gICAgJ1xcdTIxQ0UnOiBNTy5SRUxBQ0NFTlQsICAvLyBsZWZ0IHJpZ2h0IGRvdWJsZSBhcnJvdyB3aXRoIHN0cm9rZVxuICAgICdcXHUyMUNGJzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBkb3VibGUgYXJyb3cgd2l0aCBzdHJva2VcbiAgICAnXFx1MjFEMCc6IE1PLldJREVSRUwsICAgIC8vIGxlZnR3YXJkcyBkb3VibGUgYXJyb3dcbiAgICAnXFx1MjFEMSc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgZG91YmxlIGFycm93XG4gICAgJ1xcdTIxRDInOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIGRvdWJsZSBhcnJvd1xuICAgICdcXHUyMUQzJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIGRvdWJsZSBhcnJvd1xuICAgICdcXHUyMUQ0JzogTU8uV0lERVJFTCwgICAgLy8gbGVmdCByaWdodCBkb3VibGUgYXJyb3dcbiAgICAnXFx1MjFENSc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwIGRvd24gZG91YmxlIGFycm93XG4gICAgJ1xcdTIxRDYnOiBNTy5SRUxTVFJFVENILCAvLyBub3J0aCB3ZXN0IGRvdWJsZSBhcnJvd1xuICAgICdcXHUyMUQ3JzogTU8uUkVMU1RSRVRDSCwgLy8gbm9ydGggZWFzdCBkb3VibGUgYXJyb3dcbiAgICAnXFx1MjFEOCc6IE1PLlJFTFNUUkVUQ0gsIC8vIHNvdXRoIGVhc3QgZG91YmxlIGFycm93XG4gICAgJ1xcdTIxRDknOiBNTy5SRUxTVFJFVENILCAvLyBzb3V0aCB3ZXN0IGRvdWJsZSBhcnJvd1xuICAgICdcXHUyMURBJzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIHRyaXBsZSBhcnJvd1xuICAgICdcXHUyMURCJzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyB0cmlwbGUgYXJyb3dcbiAgICAnXFx1MjFEQyc6IE1PLldJREVSRUwsICAgIC8vIGxlZnR3YXJkcyBzcXVpZ2dsZSBhcnJvd1xuICAgICdcXHUyMUREJzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyBzcXVpZ2dsZSBhcnJvd1xuICAgICdcXHUyMURFJzogTU8uUkVMLCAgICAgICAgLy8gdXB3YXJkcyBhcnJvdyB3aXRoIGRvdWJsZSBzdHJva2VcbiAgICAnXFx1MjFERic6IE1PLlJFTCwgICAgICAgIC8vIGRvd253YXJkcyBhcnJvdyB3aXRoIGRvdWJsZSBzdHJva2VcbiAgICAnXFx1MjFFMCc6IE1PLldJREVSRUwsICAgIC8vIGxlZnR3YXJkcyBkYXNoZWQgYXJyb3dcbiAgICAnXFx1MjFFMSc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgZGFzaGVkIGFycm93XG4gICAgJ1xcdTIxRTInOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIGRhc2hlZCBhcnJvd1xuICAgICdcXHUyMUUzJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIGRhc2hlZCBhcnJvd1xuICAgICdcXHUyMUU0JzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIGFycm93IHRvIGJhclxuICAgICdcXHUyMUU1JzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyBhcnJvdyB0byBiYXJcbiAgICAnXFx1MjFFNic6IE1PLldJREVSRUwsICAgIC8vIGxlZnR3YXJkcyB3aGl0ZSBhcnJvd1xuICAgICdcXHUyMUU3JzogTU8uUkVMU1RSRVRDSCwgLy8gdXB3YXJkcyB3aGl0ZSBhcnJvd1xuICAgICdcXHUyMUU4JzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyB3aGl0ZSBhcnJvd1xuICAgICdcXHUyMUU5JzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIHdoaXRlIGFycm93XG4gICAgJ1xcdTIxRUEnOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIHdoaXRlIGFycm93IGZyb20gYmFyXG4gICAgJ1xcdTIxRUInOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIHdoaXRlIGFycm93IG9uIHBlZGVzdGFsXG4gICAgJ1xcdTIxRUMnOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIHdoaXRlIGFycm93IG9uIHBlZGVzdGFsIHdpdGggaG9yaXpvbnRhbCBiYXJcbiAgICAnXFx1MjFFRCc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgd2hpdGUgYXJyb3cgb24gcGVkZXN0YWwgd2l0aCB2ZXJ0aWNhbCBiYXJcbiAgICAnXFx1MjFFRSc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgd2hpdGUgZG91YmxlIGFycm93XG4gICAgJ1xcdTIxRUYnOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIHdoaXRlIGRvdWJsZSBhcnJvdyBvbiBwZWRlc3RhbFxuICAgICdcXHUyMUYwJzogTU8uV0lERVJFTCwgICAgLy8gcmlnaHR3YXJkcyB3aGl0ZSBhcnJvdyBmcm9tIHdhbGxcbiAgICAnXFx1MjFGMSc6IE1PLlJFTCwgICAgICAgIC8vIG5vcnRoIHdlc3QgYXJyb3cgdG8gY29ybmVyXG4gICAgJ1xcdTIxRjInOiBNTy5SRUwsICAgICAgICAvLyBzb3V0aCBlYXN0IGFycm93IHRvIGNvcm5lclxuICAgICdcXHUyMUYzJzogTU8uUkVMU1RSRVRDSCwgLy8gdXAgZG93biB3aGl0ZSBhcnJvd1xuICAgICdcXHUyMUY0JzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHQgYXJyb3cgd2l0aCBzbWFsbCBjaXJjbGVcbiAgICAnXFx1MjFGNSc6IE1PLlJFTFNUUkVUQ0gsIC8vIGRvd253YXJkcyBhcnJvdyBsZWZ0d2FyZHMgb2YgdXB3YXJkcyBhcnJvd1xuICAgICdcXHUyMUY2JzogTU8uV0lERVJFTCwgICAgLy8gdGhyZWUgcmlnaHR3YXJkcyBhcnJvd3NcbiAgICAnXFx1MjFGNyc6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnR3YXJkcyBhcnJvdyB3aXRoIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyMUY4JzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBhcnJvdyB3aXRoIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyMUY5JzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdCByaWdodCBhcnJvdyB3aXRoIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyMUZBJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGFycm93IHdpdGggZG91YmxlIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyMUZCJzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBhcnJvdyB3aXRoIGRvdWJsZSB2ZXJ0aWNhbCBzdHJva2VcbiAgICAnXFx1MjFGQyc6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnQgcmlnaHQgYXJyb3cgd2l0aCBkb3VibGUgdmVydGljYWwgc3Ryb2tlXG4gICAgJ1xcdTIxRkQnOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgb3Blbi1oZWFkZWQgYXJyb3dcbiAgICAnXFx1MjFGRSc6IE1PLldJREVSRUwsICAgIC8vIHJpZ2h0d2FyZHMgb3Blbi1oZWFkZWQgYXJyb3dcbiAgICAnXFx1MjFGRic6IE1PLldJREVSRUwsICAgIC8vIGxlZnQgcmlnaHQgb3Blbi1oZWFkZWQgYXJyb3dcbiAgICAnXFx1MjIwMSc6IE9QREVGKDEsIDIsIFRFWENMQVNTLk9SRCksIC8vIGNvbXBsZW1lbnRcbiAgICAnXFx1MjIwNSc6IE1PLk9SRCwgICAgICAgIC8vIFxcZW1wdHlzZXRcbiAgICAnXFx1MjIwNic6IE1PLkJJTjMsICAgICAgIC8vIGluY3JlbWVudFxuICAgICdcXHUyMjA4JzogTU8uUkVMLCAgICAgICAgLy8gZWxlbWVudCBvZlxuICAgICdcXHUyMjA5JzogTU8uUkVMLCAgICAgICAgLy8gbm90IGFuIGVsZW1lbnQgb2ZcbiAgICAnXFx1MjIwQSc6IE1PLlJFTCwgICAgICAgIC8vIHNtYWxsIGVsZW1lbnQgb2ZcbiAgICAnXFx1MjIwQic6IE1PLlJFTCwgICAgICAgIC8vIGNvbnRhaW5zIGFzIG1lbWJlclxuICAgICdcXHUyMjBDJzogTU8uUkVMLCAgICAgICAgLy8gZG9lcyBub3QgY29udGFpbiBhcyBtZW1iZXJcbiAgICAnXFx1MjIwRCc6IE1PLlJFTCwgICAgICAgIC8vIHNtYWxsIGNvbnRhaW5zIGFzIG1lbWJlclxuICAgICdcXHUyMjBFJzogTU8uQklOMywgICAgICAgLy8gZW5kIG9mIHByb29mXG4gICAgJ1xcdTIyMTInOiBNTy5CSU40LCAgICAgICAvLyBtaW51cyBzaWduXG4gICAgJ1xcdTIyMTMnOiBNTy5CSU40LCAgICAgICAvLyBtaW51cy1vci1wbHVzIHNpZ25cbiAgICAnXFx1MjIxNCc6IE1PLkJJTjQsICAgICAgIC8vIGRvdCBwbHVzXG4gICAgJ1xcdTIyMTUnOiBNTy5UQUxMQklOLCAgICAvLyBkaXZpc2lvbiBzbGFzaFxuICAgICdcXHUyMjE2JzogTU8uQklONCwgICAgICAgLy8gc2V0IG1pbnVzXG4gICAgJ1xcdTIyMTcnOiBNTy5CSU40LCAgICAgICAvLyBhc3RlcmlzayBvcGVyYXRvclxuICAgICdcXHUyMjE4JzogTU8uQklONCwgICAgICAgLy8gcmluZyBvcGVyYXRvclxuICAgICdcXHUyMjE5JzogTU8uQklONCwgICAgICAgLy8gYnVsbGV0IG9wZXJhdG9yXG4gICAgJ1xcdTIyMUQnOiBNTy5SRUwsICAgICAgICAvLyBwcm9wb3J0aW9uYWwgdG9cbiAgICAnXFx1MjIxRSc6IE1PLk9SRCwgICAgICAgIC8vIFxcaW5mdHlcbiAgICAnXFx1MjIxRic6IE1PLlJFTCwgICAgICAgIC8vIHJpZ2h0IGFuZ2xlXG4gICAgJ1xcdTIyMjMnOiBNTy5SRUwsICAgICAgICAvLyBkaXZpZGVzXG4gICAgJ1xcdTIyMjQnOiBNTy5SRUwsICAgICAgICAvLyBkb2VzIG5vdCBkaXZpZGVcbiAgICAnXFx1MjIyNSc6IE1PLlJFTCwgICAgICAgIC8vIHBhcmFsbGVsIHRvXG4gICAgJ1xcdTIyMjYnOiBNTy5SRUwsICAgICAgICAvLyBub3QgcGFyYWxsZWwgdG9cbiAgICAnXFx1MjIyNyc6IE1PLkJJTjQsICAgICAgIC8vIGxvZ2ljYWwgYW5kXG4gICAgJ1xcdTIyMjgnOiBNTy5CSU40LCAgICAgICAvLyBsb2dpY2FsIG9yXG4gICAgJ1xcdTIyMjknOiBNTy5CSU40LCAgICAgICAvLyBpbnRlcnNlY3Rpb25cbiAgICAnXFx1MjIyQSc6IE1PLkJJTjQsICAgICAgIC8vIHVuaW9uXG4gICAgJ1xcdTIyMzQnOiBNTy5SRUwsICAgICAgICAvLyB0aGVyZWZvcmVcbiAgICAnXFx1MjIzNSc6IE1PLlJFTCwgICAgICAgIC8vIGJlY2F1c2VcbiAgICAnXFx1MjIzNic6IE1PLlJFTCwgICAgICAgIC8vIHJhdGlvXG4gICAgJ1xcdTIyMzcnOiBNTy5SRUwsICAgICAgICAvLyBwcm9wb3J0aW9uXG4gICAgJ1xcdTIyMzgnOiBNTy5CSU40LCAgICAgICAvLyBkb3QgbWludXNcbiAgICAnXFx1MjIzOSc6IE1PLlJFTCwgICAgICAgIC8vIGV4Y2Vzc1xuICAgICdcXHUyMjNBJzogTU8uQklONCwgICAgICAgLy8gZ2VvbWV0cmljIHByb3BvcnRpb25cbiAgICAnXFx1MjIzQic6IE1PLlJFTCwgICAgICAgIC8vIGhvbW90aGV0aWNcbiAgICAnXFx1MjIzQyc6IE1PLlJFTCwgICAgICAgIC8vIHRpbGRlIG9wZXJhdG9yXG4gICAgJ1xcdTIyM0QnOiBNTy5SRUwsICAgICAgICAvLyByZXZlcnNlZCB0aWxkZVxuICAgICdcXHUyMjNEXFx1MDMzMSc6IE1PLkJJTjMsIC8vIHJldmVyc2VkIHRpbGRlIHdpdGggdW5kZXJsaW5lXG4gICAgJ1xcdTIyM0UnOiBNTy5SRUwsICAgICAgICAvLyBpbnZlcnRlZCBsYXp5IHNcbiAgICAnXFx1MjIzRic6IE1PLkJJTjMsICAgICAgIC8vIHNpbmUgd2F2ZVxuICAgICdcXHUyMjQwJzogTU8uQklONCwgICAgICAgLy8gd3JlYXRoIHByb2R1Y3RcbiAgICAnXFx1MjI0MSc6IE1PLlJFTCwgICAgICAgIC8vIG5vdCB0aWxkZVxuICAgICdcXHUyMjQyJzogTU8uUkVMLCAgICAgICAgLy8gbWludXMgdGlsZGVcbiAgICAnXFx1MjI0MlxcdTAzMzgnOiBNTy5SRUwsICAvLyBtaW51cyB0aWxkZSB3aXRoIHNsYXNoXG4gICAgJ1xcdTIyNDMnOiBNTy5SRUwsICAgICAgICAvLyBhc3ltcHRvdGljYWxseSBlcXVhbCB0b1xuICAgICdcXHUyMjQ0JzogTU8uUkVMLCAgICAgICAgLy8gbm90IGFzeW1wdG90aWNhbGx5IGVxdWFsIHRvXG4gICAgJ1xcdTIyNDUnOiBNTy5SRUwsICAgICAgICAvLyBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvXG4gICAgJ1xcdTIyNDYnOiBNTy5SRUwsICAgICAgICAvLyBhcHByb3hpbWF0ZWx5IGJ1dCBub3QgYWN0dWFsbHkgZXF1YWwgdG9cbiAgICAnXFx1MjI0Nyc6IE1PLlJFTCwgICAgICAgIC8vIG5laXRoZXIgYXBwcm94aW1hdGVseSBub3IgYWN0dWFsbHkgZXF1YWwgdG9cbiAgICAnXFx1MjI0OCc6IE1PLlJFTCwgICAgICAgIC8vIGFsbW9zdCBlcXVhbCB0b1xuICAgICdcXHUyMjQ5JzogTU8uUkVMLCAgICAgICAgLy8gbm90IGFsbW9zdCBlcXVhbCB0b1xuICAgICdcXHUyMjRBJzogTU8uUkVMLCAgICAgICAgLy8gYWxtb3N0IGVxdWFsIG9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyNEInOiBNTy5SRUwsICAgICAgICAvLyB0cmlwbGUgdGlsZGVcbiAgICAnXFx1MjI0Qyc6IE1PLlJFTCwgICAgICAgIC8vIGFsbCBlcXVhbCB0b1xuICAgICdcXHUyMjREJzogTU8uUkVMLCAgICAgICAgLy8gZXF1aXZhbGVudCB0b1xuICAgICdcXHUyMjRFJzogTU8uUkVMLCAgICAgICAgLy8gZ2VvbWV0cmljYWxseSBlcXVpdmFsZW50IHRvXG4gICAgJ1xcdTIyNEVcXHUwMzM4JzogTU8uUkVMLCAgLy8gZ2VvbWV0cmljYWxseSBlcXVpdmFsZW50IHRvIHdpdGggc2xhc2hcbiAgICAnXFx1MjI0Ric6IE1PLlJFTCwgICAgICAgIC8vIGRpZmZlcmVuY2UgYmV0d2VlblxuICAgICdcXHUyMjRGXFx1MDMzOCc6IE1PLlJFTCwgIC8vIGRpZmZlcmVuY2UgYmV0d2VlbiB3aXRoIHNsYXNoXG4gICAgJ1xcdTIyNTAnOiBNTy5SRUwsICAgICAgICAvLyBhcHByb2FjaGVzIHRoZSBsaW1pdFxuICAgICdcXHUyMjUxJzogTU8uUkVMLCAgICAgICAgLy8gZ2VvbWV0cmljYWxseSBlcXVhbCB0b1xuICAgICdcXHUyMjUyJzogTU8uUkVMLCAgICAgICAgLy8gYXBwcm94aW1hdGVseSBlcXVhbCB0byBvciB0aGUgaW1hZ2Ugb2ZcbiAgICAnXFx1MjI1Myc6IE1PLlJFTCwgICAgICAgIC8vIGltYWdlIG9mIG9yIGFwcHJveGltYXRlbHkgZXF1YWwgdG9cbiAgICAnXFx1MjI1NCc6IE1PLlJFTCwgICAgICAgIC8vIGNvbG9uIGVxdWFsc1xuICAgICdcXHUyMjU1JzogTU8uUkVMLCAgICAgICAgLy8gZXF1YWxzIGNvbG9uXG4gICAgJ1xcdTIyNTYnOiBNTy5SRUwsICAgICAgICAvLyByaW5nIGluIGVxdWFsIHRvXG4gICAgJ1xcdTIyNTcnOiBNTy5SRUwsICAgICAgICAvLyByaW5nIGVxdWFsIHRvXG4gICAgJ1xcdTIyNTgnOiBNTy5SRUwsICAgICAgICAvLyBjb3JyZXNwb25kcyB0b1xuICAgICdcXHUyMjU5JzogTU8uUkVMLCAgICAgICAgLy8gZXN0aW1hdGVzXG4gICAgJ1xcdTIyNUEnOiBNTy5SRUwsICAgICAgICAvLyBlcXVpYW5ndWxhciB0b1xuICAgICdcXHUyMjVCJzogTU8uUkVMLCAgICAgICAgLy8gc3RhciBlcXVhbHNcbiAgICAnXFx1MjI1Qyc6IE1PLlJFTCwgICAgICAgIC8vIGRlbHRhIGVxdWFsIHRvXG4gICAgJ1xcdTIyNUQnOiBNTy5SRUwsICAgICAgICAvLyBlcXVhbCB0byBieSBkZWZpbml0aW9uXG4gICAgJ1xcdTIyNUUnOiBNTy5SRUwsICAgICAgICAvLyBtZWFzdXJlZCBieVxuICAgICdcXHUyMjVGJzogTU8uUkVMLCAgICAgICAgLy8gcXVlc3Rpb25lZCBlcXVhbCB0b1xuICAgICdcXHUyMjYwJzogTU8uUkVMLCAgICAgICAgLy8gbm90IGVxdWFsIHRvXG4gICAgJ1xcdTIyNjEnOiBNTy5SRUwsICAgICAgICAvLyBpZGVudGljYWwgdG9cbiAgICAnXFx1MjI2Mic6IE1PLlJFTCwgICAgICAgIC8vIG5vdCBpZGVudGljYWwgdG9cbiAgICAnXFx1MjI2Myc6IE1PLlJFTCwgICAgICAgIC8vIHN0cmljdGx5IGVxdWl2YWxlbnQgdG9cbiAgICAnXFx1MjI2NCc6IE1PLlJFTCwgICAgICAgIC8vIGxlc3MtdGhhbiBvciBlcXVhbCB0b1xuICAgICdcXHUyMjY1JzogTU8uUkVMLCAgICAgICAgLy8gZ3JlYXRlci10aGFuIG9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyNjYnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gb3ZlciBlcXVhbCB0b1xuICAgICdcXHUyMjY2XFx1MDMzOCc6IE1PLlJFTCwgIC8vIGxlc3MtdGhhbiBvdmVyIGVxdWFsIHRvIHdpdGggc2xhc2hcbiAgICAnXFx1MjI2Nyc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBvdmVyIGVxdWFsIHRvXG4gICAgJ1xcdTIyNjgnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gYnV0IG5vdCBlcXVhbCB0b1xuICAgICdcXHUyMjY5JzogTU8uUkVMLCAgICAgICAgLy8gZ3JlYXRlci10aGFuIGJ1dCBub3QgZXF1YWwgdG9cbiAgICAnXFx1MjI2QSc6IE1PLlJFTCwgICAgICAgIC8vIG11Y2ggbGVzcy10aGFuXG4gICAgJ1xcdTIyNkFcXHUwMzM4JzogTU8uUkVMLCAgLy8gbXVjaCBsZXNzIHRoYW4gd2l0aCBzbGFzaFxuICAgICdcXHUyMjZCJzogTU8uUkVMLCAgICAgICAgLy8gbXVjaCBncmVhdGVyLXRoYW5cbiAgICAnXFx1MjI2QlxcdTAzMzgnOiBNTy5SRUwsICAvLyBtdWNoIGdyZWF0ZXIgdGhhbiB3aXRoIHNsYXNoXG4gICAgJ1xcdTIyNkMnOiBNTy5SRUwsICAgICAgICAvLyBiZXR3ZWVuXG4gICAgJ1xcdTIyNkQnOiBNTy5SRUwsICAgICAgICAvLyBub3QgZXF1aXZhbGVudCB0b1xuICAgICdcXHUyMjZFJzogTU8uUkVMLCAgICAgICAgLy8gbm90IGxlc3MtdGhhblxuICAgICdcXHUyMjZGJzogTU8uUkVMLCAgICAgICAgLy8gbm90IGdyZWF0ZXItdGhhblxuICAgICdcXHUyMjcwJzogTU8uUkVMLCAgICAgICAgLy8gbmVpdGhlciBsZXNzLXRoYW4gbm9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyNzEnOiBNTy5SRUwsICAgICAgICAvLyBuZWl0aGVyIGdyZWF0ZXItdGhhbiBub3IgZXF1YWwgdG9cbiAgICAnXFx1MjI3Mic6IE1PLlJFTCwgICAgICAgIC8vIGxlc3MtdGhhbiBvciBlcXVpdmFsZW50IHRvXG4gICAgJ1xcdTIyNzMnOiBNTy5SRUwsICAgICAgICAvLyBncmVhdGVyLXRoYW4gb3IgZXF1aXZhbGVudCB0b1xuICAgICdcXHUyMjc0JzogTU8uUkVMLCAgICAgICAgLy8gbmVpdGhlciBsZXNzLXRoYW4gbm9yIGVxdWl2YWxlbnQgdG9cbiAgICAnXFx1MjI3NSc6IE1PLlJFTCwgICAgICAgIC8vIG5laXRoZXIgZ3JlYXRlci10aGFuIG5vciBlcXVpdmFsZW50IHRvXG4gICAgJ1xcdTIyNzYnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gb3IgZ3JlYXRlci10aGFuXG4gICAgJ1xcdTIyNzcnOiBNTy5SRUwsICAgICAgICAvLyBncmVhdGVyLXRoYW4gb3IgbGVzcy10aGFuXG4gICAgJ1xcdTIyNzgnOiBNTy5SRUwsICAgICAgICAvLyBuZWl0aGVyIGxlc3MtdGhhbiBub3IgZ3JlYXRlci10aGFuXG4gICAgJ1xcdTIyNzknOiBNTy5SRUwsICAgICAgICAvLyBuZWl0aGVyIGdyZWF0ZXItdGhhbiBub3IgbGVzcy10aGFuXG4gICAgJ1xcdTIyN0EnOiBNTy5SRUwsICAgICAgICAvLyBwcmVjZWRlc1xuICAgICdcXHUyMjdCJzogTU8uUkVMLCAgICAgICAgLy8gc3VjY2VlZHNcbiAgICAnXFx1MjI3Qyc6IE1PLlJFTCwgICAgICAgIC8vIHByZWNlZGVzIG9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyN0QnOiBNTy5SRUwsICAgICAgICAvLyBzdWNjZWVkcyBvciBlcXVhbCB0b1xuICAgICdcXHUyMjdFJzogTU8uUkVMLCAgICAgICAgLy8gcHJlY2VkZXMgb3IgZXF1aXZhbGVudCB0b1xuICAgICdcXHUyMjdGJzogTU8uUkVMLCAgICAgICAgLy8gc3VjY2VlZHMgb3IgZXF1aXZhbGVudCB0b1xuICAgICdcXHUyMjdGXFx1MDMzOCc6IE1PLlJFTCwgIC8vIHN1Y2NlZWRzIG9yIGVxdWl2YWxlbnQgdG8gd2l0aCBzbGFzaFxuICAgICdcXHUyMjgwJzogTU8uUkVMLCAgICAgICAgLy8gZG9lcyBub3QgcHJlY2VkZVxuICAgICdcXHUyMjgxJzogTU8uUkVMLCAgICAgICAgLy8gZG9lcyBub3Qgc3VjY2VlZFxuICAgICdcXHUyMjgyJzogTU8uUkVMLCAgICAgICAgLy8gc3Vic2V0IG9mXG4gICAgJ1xcdTIyODJcXHUyMEQyJzogTU8uUkVMLCAgLy8gc3Vic2V0IG9mIHdpdGggdmVydGljYWwgbGluZVxuICAgICdcXHUyMjgzJzogTU8uUkVMLCAgICAgICAgLy8gc3VwZXJzZXQgb2ZcbiAgICAnXFx1MjI4M1xcdTIwRDInOiBNTy5SRUwsICAvLyBzdXBlcnNldCBvZiB3aXRoIHZlcnRpY2FsIGxpbmVcbiAgICAnXFx1MjI4NCc6IE1PLlJFTCwgICAgICAgIC8vIG5vdCBhIHN1YnNldCBvZlxuICAgICdcXHUyMjg1JzogTU8uUkVMLCAgICAgICAgLy8gbm90IGEgc3VwZXJzZXQgb2ZcbiAgICAnXFx1MjI4Nic6IE1PLlJFTCwgICAgICAgIC8vIHN1YnNldCBvZiBvciBlcXVhbCB0b1xuICAgICdcXHUyMjg3JzogTU8uUkVMLCAgICAgICAgLy8gc3VwZXJzZXQgb2Ygb3IgZXF1YWwgdG9cbiAgICAnXFx1MjI4OCc6IE1PLlJFTCwgICAgICAgIC8vIG5laXRoZXIgYSBzdWJzZXQgb2Ygbm9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyODknOiBNTy5SRUwsICAgICAgICAvLyBuZWl0aGVyIGEgc3VwZXJzZXQgb2Ygbm9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyOEEnOiBNTy5SRUwsICAgICAgICAvLyBzdWJzZXQgb2Ygd2l0aCBub3QgZXF1YWwgdG9cbiAgICAnXFx1MjI4Qic6IE1PLlJFTCwgICAgICAgIC8vIHN1cGVyc2V0IG9mIHdpdGggbm90IGVxdWFsIHRvXG4gICAgJ1xcdTIyOEMnOiBNTy5CSU40LCAgICAgICAvLyBtdWx0aXNldFxuICAgICdcXHUyMjhEJzogTU8uQklONCwgICAgICAgLy8gbXVsdGlzZXQgbXVsdGlwbGljYXRpb25cbiAgICAnXFx1MjI4RSc6IE1PLkJJTjQsICAgICAgIC8vIG11bHRpc2V0IHVuaW9uXG4gICAgJ1xcdTIyOEYnOiBNTy5SRUwsICAgICAgICAvLyBzcXVhcmUgaW1hZ2Ugb2ZcbiAgICAnXFx1MjI4RlxcdTAzMzgnOiBNTy5SRUwsICAvLyBzcXVhcmUgaW1hZ2Ugb2Ygd2l0aCBzbGFzaFxuICAgICdcXHUyMjkwJzogTU8uUkVMLCAgICAgICAgLy8gc3F1YXJlIG9yaWdpbmFsIG9mXG4gICAgJ1xcdTIyOTBcXHUwMzM4JzogTU8uUkVMLCAgLy8gc3F1YXJlIG9yaWdpbmFsIG9mIHdpdGggc2xhc2hcbiAgICAnXFx1MjI5MSc6IE1PLlJFTCwgICAgICAgIC8vIHNxdWFyZSBpbWFnZSBvZiBvciBlcXVhbCB0b1xuICAgICdcXHUyMjkyJzogTU8uUkVMLCAgICAgICAgLy8gc3F1YXJlIG9yaWdpbmFsIG9mIG9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyOTMnOiBNTy5CSU40LCAgICAgICAvLyBzcXVhcmUgY2FwXG4gICAgJ1xcdTIyOTQnOiBNTy5CSU40LCAgICAgICAvLyBzcXVhcmUgY3VwXG4gICAgJ1xcdTIyOTUnOiBNTy5CSU40LCAgICAgICAvLyBjaXJjbGVkIHBsdXNcbiAgICAnXFx1MjI5Nic6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgbWludXNcbiAgICAnXFx1MjI5Nyc6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgdGltZXNcbiAgICAnXFx1MjI5OCc6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgZGl2aXNpb24gc2xhc2hcbiAgICAnXFx1MjI5OSc6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgZG90IG9wZXJhdG9yXG4gICAgJ1xcdTIyOUEnOiBNTy5CSU40LCAgICAgICAvLyBjaXJjbGVkIHJpbmcgb3BlcmF0b3JcbiAgICAnXFx1MjI5Qic6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgYXN0ZXJpc2sgb3BlcmF0b3JcbiAgICAnXFx1MjI5Qyc6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgZXF1YWxzXG4gICAgJ1xcdTIyOUQnOiBNTy5CSU40LCAgICAgICAvLyBjaXJjbGVkIGRhc2hcbiAgICAnXFx1MjI5RSc6IE1PLkJJTjQsICAgICAgIC8vIHNxdWFyZWQgcGx1c1xuICAgICdcXHUyMjlGJzogTU8uQklONCwgICAgICAgLy8gc3F1YXJlZCBtaW51c1xuICAgICdcXHUyMkEwJzogTU8uQklONCwgICAgICAgLy8gc3F1YXJlZCB0aW1lc1xuICAgICdcXHUyMkExJzogTU8uQklONCwgICAgICAgLy8gc3F1YXJlZCBkb3Qgb3BlcmF0b3JcbiAgICAnXFx1MjJBMic6IE1PLlJFTCwgICAgICAgIC8vIHJpZ2h0IHRhY2tcbiAgICAnXFx1MjJBMyc6IE1PLlJFTCwgICAgICAgIC8vIGxlZnQgdGFja1xuICAgICdcXHUyMkE0JzogTU8uT1JENTUsICAgICAgLy8gZG93biB0YWNrXG4gICAgJ1xcdTIyQTUnOiBNTy5SRUwsICAgICAgICAvLyB1cCB0YWNrXG4gICAgJ1xcdTIyQTYnOiBNTy5SRUwsICAgICAgICAvLyBhc3NlcnRpb25cbiAgICAnXFx1MjJBNyc6IE1PLlJFTCwgICAgICAgIC8vIG1vZGVsc1xuICAgICdcXHUyMkE4JzogTU8uUkVMLCAgICAgICAgLy8gdHJ1ZVxuICAgICdcXHUyMkE5JzogTU8uUkVMLCAgICAgICAgLy8gZm9yY2VzXG4gICAgJ1xcdTIyQUEnOiBNTy5SRUwsICAgICAgICAvLyB0cmlwbGUgdmVydGljYWwgYmFyIHJpZ2h0IHR1cm5zdGlsZVxuICAgICdcXHUyMkFCJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIHZlcnRpY2FsIGJhciBkb3VibGUgcmlnaHQgdHVybnN0aWxlXG4gICAgJ1xcdTIyQUMnOiBNTy5SRUwsICAgICAgICAvLyBkb2VzIG5vdCBwcm92ZVxuICAgICdcXHUyMkFEJzogTU8uUkVMLCAgICAgICAgLy8gbm90IHRydWVcbiAgICAnXFx1MjJBRSc6IE1PLlJFTCwgICAgICAgIC8vIGRvZXMgbm90IGZvcmNlXG4gICAgJ1xcdTIyQUYnOiBNTy5SRUwsICAgICAgICAvLyBuZWdhdGVkIGRvdWJsZSB2ZXJ0aWNhbCBiYXIgZG91YmxlIHJpZ2h0IHR1cm5zdGlsZVxuICAgICdcXHUyMkIwJzogTU8uUkVMLCAgICAgICAgLy8gcHJlY2VkZXMgdW5kZXIgcmVsYXRpb25cbiAgICAnXFx1MjJCMSc6IE1PLlJFTCwgICAgICAgIC8vIHN1Y2NlZWRzIHVuZGVyIHJlbGF0aW9uXG4gICAgJ1xcdTIyQjInOiBNTy5SRUwsICAgICAgICAvLyBub3JtYWwgc3ViZ3JvdXAgb2ZcbiAgICAnXFx1MjJCMyc6IE1PLlJFTCwgICAgICAgIC8vIGNvbnRhaW5zIGFzIG5vcm1hbCBzdWJncm91cFxuICAgICdcXHUyMkI0JzogTU8uUkVMLCAgICAgICAgLy8gbm9ybWFsIHN1Ymdyb3VwIG9mIG9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyQjUnOiBNTy5SRUwsICAgICAgICAvLyBjb250YWlucyBhcyBub3JtYWwgc3ViZ3JvdXAgb3IgZXF1YWwgdG9cbiAgICAnXFx1MjJCNic6IE1PLlJFTCwgICAgICAgIC8vIG9yaWdpbmFsIG9mXG4gICAgJ1xcdTIyQjcnOiBNTy5SRUwsICAgICAgICAvLyBpbWFnZSBvZlxuICAgICdcXHUyMkI4JzogTU8uUkVMLCAgICAgICAgLy8gbXVsdGltYXBcbiAgICAnXFx1MjJCOSc6IE1PLlJFTCwgICAgICAgIC8vIGhlcm1pdGlhbiBjb25qdWdhdGUgbWF0cml4XG4gICAgJ1xcdTIyQkEnOiBNTy5CSU40LCAgICAgICAvLyBpbnRlcmNhbGF0ZVxuICAgICdcXHUyMkJCJzogTU8uQklONCwgICAgICAgLy8geG9yXG4gICAgJ1xcdTIyQkMnOiBNTy5CSU40LCAgICAgICAvLyBuYW5kXG4gICAgJ1xcdTIyQkQnOiBNTy5CSU40LCAgICAgICAvLyBub3JcbiAgICAnXFx1MjJCRSc6IE1PLkJJTjMsICAgICAgIC8vIHJpZ2h0IGFuZ2xlIHdpdGggYXJjXG4gICAgJ1xcdTIyQkYnOiBNTy5CSU4zLCAgICAgICAvLyByaWdodCB0cmlhbmdsZVxuICAgICdcXHUyMkM0JzogTU8uQklONCwgICAgICAgLy8gZGlhbW9uZCBvcGVyYXRvclxuICAgICdcXHUyMkM1JzogTU8uQklONCwgICAgICAgLy8gZG90IG9wZXJhdG9yXG4gICAgJ1xcdTIyQzYnOiBNTy5CSU40LCAgICAgICAvLyBzdGFyIG9wZXJhdG9yXG4gICAgJ1xcdTIyQzcnOiBNTy5CSU40LCAgICAgICAvLyBkaXZpc2lvbiB0aW1lc1xuICAgICdcXHUyMkM4JzogTU8uUkVMLCAgICAgICAgLy8gYm93dGllXG4gICAgJ1xcdTIyQzknOiBNTy5CSU40LCAgICAgICAvLyBsZWZ0IG5vcm1hbCBmYWN0b3Igc2VtaWRpcmVjdCBwcm9kdWN0XG4gICAgJ1xcdTIyQ0EnOiBNTy5CSU40LCAgICAgICAvLyByaWdodCBub3JtYWwgZmFjdG9yIHNlbWlkaXJlY3QgcHJvZHVjdFxuICAgICdcXHUyMkNCJzogTU8uQklONCwgICAgICAgLy8gbGVmdCBzZW1pZGlyZWN0IHByb2R1Y3RcbiAgICAnXFx1MjJDQyc6IE1PLkJJTjQsICAgICAgIC8vIHJpZ2h0IHNlbWlkaXJlY3QgcHJvZHVjdFxuICAgICdcXHUyMkNEJzogTU8uUkVMLCAgICAgICAgLy8gcmV2ZXJzZWQgdGlsZGUgZXF1YWxzXG4gICAgJ1xcdTIyQ0UnOiBNTy5CSU40LCAgICAgICAvLyBjdXJseSBsb2dpY2FsIG9yXG4gICAgJ1xcdTIyQ0YnOiBNTy5CSU40LCAgICAgICAvLyBjdXJseSBsb2dpY2FsIGFuZFxuICAgICdcXHUyMkQwJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIHN1YnNldFxuICAgICdcXHUyMkQxJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIHN1cGVyc2V0XG4gICAgJ1xcdTIyRDInOiBNTy5CSU40LCAgICAgICAvLyBkb3VibGUgaW50ZXJzZWN0aW9uXG4gICAgJ1xcdTIyRDMnOiBNTy5CSU40LCAgICAgICAvLyBkb3VibGUgdW5pb25cbiAgICAnXFx1MjJENCc6IE1PLlJFTCwgICAgICAgIC8vIHBpdGNoZm9ya1xuICAgICdcXHUyMkQ1JzogTU8uUkVMLCAgICAgICAgLy8gZXF1YWwgYW5kIHBhcmFsbGVsIHRvXG4gICAgJ1xcdTIyRDYnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gd2l0aCBkb3RcbiAgICAnXFx1MjJENyc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiB3aXRoIGRvdFxuICAgICdcXHUyMkQ4JzogTU8uUkVMLCAgICAgICAgLy8gdmVyeSBtdWNoIGxlc3MtdGhhblxuICAgICdcXHUyMkQ5JzogTU8uUkVMLCAgICAgICAgLy8gdmVyeSBtdWNoIGdyZWF0ZXItdGhhblxuICAgICdcXHUyMkRBJzogTU8uUkVMLCAgICAgICAgLy8gbGVzcy10aGFuIGVxdWFsIHRvIG9yIGdyZWF0ZXItdGhhblxuICAgICdcXHUyMkRCJzogTU8uUkVMLCAgICAgICAgLy8gZ3JlYXRlci10aGFuIGVxdWFsIHRvIG9yIGxlc3MtdGhhblxuICAgICdcXHUyMkRDJzogTU8uUkVMLCAgICAgICAgLy8gZXF1YWwgdG8gb3IgbGVzcy10aGFuXG4gICAgJ1xcdTIyREQnOiBNTy5SRUwsICAgICAgICAvLyBlcXVhbCB0byBvciBncmVhdGVyLXRoYW5cbiAgICAnXFx1MjJERSc6IE1PLlJFTCwgICAgICAgIC8vIGVxdWFsIHRvIG9yIHByZWNlZGVzXG4gICAgJ1xcdTIyREYnOiBNTy5SRUwsICAgICAgICAvLyBlcXVhbCB0byBvciBzdWNjZWVkc1xuICAgICdcXHUyMkUwJzogTU8uUkVMLCAgICAgICAgLy8gZG9lcyBub3QgcHJlY2VkZSBvciBlcXVhbFxuICAgICdcXHUyMkUxJzogTU8uUkVMLCAgICAgICAgLy8gZG9lcyBub3Qgc3VjY2VlZCBvciBlcXVhbFxuICAgICdcXHUyMkUyJzogTU8uUkVMLCAgICAgICAgLy8gbm90IHNxdWFyZSBpbWFnZSBvZiBvciBlcXVhbCB0b1xuICAgICdcXHUyMkUzJzogTU8uUkVMLCAgICAgICAgLy8gbm90IHNxdWFyZSBvcmlnaW5hbCBvZiBvciBlcXVhbCB0b1xuICAgICdcXHUyMkU0JzogTU8uUkVMLCAgICAgICAgLy8gc3F1YXJlIGltYWdlIG9mIG9yIG5vdCBlcXVhbCB0b1xuICAgICdcXHUyMkU1JzogTU8uUkVMLCAgICAgICAgLy8gc3F1YXJlIG9yaWdpbmFsIG9mIG9yIG5vdCBlcXVhbCB0b1xuICAgICdcXHUyMkU2JzogTU8uUkVMLCAgICAgICAgLy8gbGVzcy10aGFuIGJ1dCBub3QgZXF1aXZhbGVudCB0b1xuICAgICdcXHUyMkU3JzogTU8uUkVMLCAgICAgICAgLy8gZ3JlYXRlci10aGFuIGJ1dCBub3QgZXF1aXZhbGVudCB0b1xuICAgICdcXHUyMkU4JzogTU8uUkVMLCAgICAgICAgLy8gcHJlY2VkZXMgYnV0IG5vdCBlcXVpdmFsZW50IHRvXG4gICAgJ1xcdTIyRTknOiBNTy5SRUwsICAgICAgICAvLyBzdWNjZWVkcyBidXQgbm90IGVxdWl2YWxlbnQgdG9cbiAgICAnXFx1MjJFQSc6IE1PLlJFTCwgICAgICAgIC8vIG5vdCBub3JtYWwgc3ViZ3JvdXAgb2ZcbiAgICAnXFx1MjJFQic6IE1PLlJFTCwgICAgICAgIC8vIGRvZXMgbm90IGNvbnRhaW4gYXMgbm9ybWFsIHN1Ymdyb3VwXG4gICAgJ1xcdTIyRUMnOiBNTy5SRUwsICAgICAgICAvLyBub3Qgbm9ybWFsIHN1Ymdyb3VwIG9mIG9yIGVxdWFsIHRvXG4gICAgJ1xcdTIyRUQnOiBNTy5SRUwsICAgICAgICAvLyBkb2VzIG5vdCBjb250YWluIGFzIG5vcm1hbCBzdWJncm91cCBvciBlcXVhbFxuICAgICdcXHUyMkVFJzogTU8uT1JENTUsICAgICAgLy8gdmVydGljYWwgZWxsaXBzaXNcbiAgICAnXFx1MjJFRic6IE1PLklOTkVSLCAgICAgIC8vIG1pZGxpbmUgaG9yaXpvbnRhbCBlbGxpcHNpc1xuICAgICdcXHUyMkYwJzogTU8uUkVMLCAgICAgICAgLy8gdXAgcmlnaHQgZGlhZ29uYWwgZWxsaXBzaXNcbiAgICAnXFx1MjJGMSc6IFs1LCA1LCBURVhDTEFTUy5JTk5FUiwgbnVsbF0sIC8vIGRvd24gcmlnaHQgZGlhZ29uYWwgZWxsaXBzaXNcbiAgICAnXFx1MjJGMic6IE1PLlJFTCwgICAgICAgIC8vIGVsZW1lbnQgb2Ygd2l0aCBsb25nIGhvcml6b250YWwgc3Ryb2tlXG4gICAgJ1xcdTIyRjMnOiBNTy5SRUwsICAgICAgICAvLyBlbGVtZW50IG9mIHdpdGggdmVydGljYWwgYmFyIGF0IGVuZCBvZiBob3Jpem9udGFsIHN0cm9rZVxuICAgICdcXHUyMkY0JzogTU8uUkVMLCAgICAgICAgLy8gc21hbGwgZWxlbWVudCBvZiB3aXRoIHZlcnRpY2FsIGJhciBhdCBlbmQgb2YgaG9yaXpvbnRhbCBzdHJva2VcbiAgICAnXFx1MjJGNSc6IE1PLlJFTCwgICAgICAgIC8vIGVsZW1lbnQgb2Ygd2l0aCBkb3QgYWJvdmVcbiAgICAnXFx1MjJGNic6IE1PLlJFTCwgICAgICAgIC8vIGVsZW1lbnQgb2Ygd2l0aCBvdmVyYmFyXG4gICAgJ1xcdTIyRjcnOiBNTy5SRUwsICAgICAgICAvLyBzbWFsbCBlbGVtZW50IG9mIHdpdGggb3ZlcmJhclxuICAgICdcXHUyMkY4JzogTU8uUkVMLCAgICAgICAgLy8gZWxlbWVudCBvZiB3aXRoIHVuZGVyYmFyXG4gICAgJ1xcdTIyRjknOiBNTy5SRUwsICAgICAgICAvLyBlbGVtZW50IG9mIHdpdGggdHdvIGhvcml6b250YWwgc3Ryb2tlc1xuICAgICdcXHUyMkZBJzogTU8uUkVMLCAgICAgICAgLy8gY29udGFpbnMgd2l0aCBsb25nIGhvcml6b250YWwgc3Ryb2tlXG4gICAgJ1xcdTIyRkInOiBNTy5SRUwsICAgICAgICAvLyBjb250YWlucyB3aXRoIHZlcnRpY2FsIGJhciBhdCBlbmQgb2YgaG9yaXpvbnRhbCBzdHJva2VcbiAgICAnXFx1MjJGQyc6IE1PLlJFTCwgICAgICAgIC8vIHNtYWxsIGNvbnRhaW5zIHdpdGggdmVydGljYWwgYmFyIGF0IGVuZCBvZiBob3Jpem9udGFsIHN0cm9rZVxuICAgICdcXHUyMkZEJzogTU8uUkVMLCAgICAgICAgLy8gY29udGFpbnMgd2l0aCBvdmVyYmFyXG4gICAgJ1xcdTIyRkUnOiBNTy5SRUwsICAgICAgICAvLyBzbWFsbCBjb250YWlucyB3aXRoIG92ZXJiYXJcbiAgICAnXFx1MjJGRic6IE1PLlJFTCwgICAgICAgIC8vIHogbm90YXRpb24gYmFnIG1lbWJlcnNoaXBcbiAgICAnXFx1MjMwNSc6IE1PLkJJTjMsICAgICAgIC8vIGJhcndlZGdlXG4gICAgJ1xcdTIzMDYnOiBNTy5CSU4zLCAgICAgICAvLyBkb3VibGViYXJ3ZWRnZVxuICAgICdcXHUyMzIyJzogTU8uUkVMNCwgICAgICAgLy8gXFxmcm93blxuICAgICdcXHUyMzIzJzogTU8uUkVMNCwgICAgICAgLy8gXFxzbWlsZVxuICAgICdcXHUyMzI5JzogTU8uT1BFTiwgICAgICAgLy8gbGFuZ2xlXG4gICAgJ1xcdTIzMkEnOiBNTy5DTE9TRSwgICAgICAvLyByYW5nbGVcbiAgICAnXFx1MjNBQSc6IE1PLk9SRCwgICAgICAgIC8vIFxcYnJhY2V2ZXJ0XG4gICAgJ1xcdTIzQUYnOiBbMCwgMCwgVEVYQ0xBU1MuT1JELCB7c3RyZXRjaHk6IHRydWV9XSwgLy8gXFx1bmRlcmxpbmVcbiAgICAnXFx1MjNCMCc6IE1PLk9QRU4sICAgICAgIC8vIFxcbG1vdXN0YWNoZVxuICAgICdcXHUyM0IxJzogTU8uQ0xPU0UsICAgICAgLy8gXFxybW91c3RhY2hlXG4gICAgJ1xcdTI1MDAnOiBNTy5PUkQsICAgICAgICAvLyBob3Jpem9udGFsIGxpbmVcbiAgICAnXFx1MjVCMyc6IE1PLkJJTjQsICAgICAgIC8vIHdoaXRlIHVwLXBvaW50aW5nIHRyaWFuZ2xlXG4gICAgJ1xcdTI1QjUnOiBNTy5CSU40LCAgICAgICAvLyB3aGl0ZSB1cC1wb2ludGluZyBzbWFsbCB0cmlhbmdsZVxuICAgICdcXHUyNUI5JzogTU8uQklONCwgICAgICAgLy8gd2hpdGUgcmlnaHQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiAgICAnXFx1MjVCRCc6IE1PLkJJTjQsICAgICAgIC8vIHdoaXRlIGRvd24tcG9pbnRpbmcgdHJpYW5nbGVcbiAgICAnXFx1MjVCRic6IE1PLkJJTjQsICAgICAgIC8vIHdoaXRlIGRvd24tcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiAgICAnXFx1MjVDMyc6IE1PLkJJTjQsICAgICAgIC8vIHdoaXRlIGxlZnQtcG9pbnRpbmcgc21hbGwgdHJpYW5nbGVcbiAgICAnXFx1MjVFRic6IE1PLkJJTjMsICAgICAgIC8vIFxcYmlnY2lyY1xuICAgICdcXHUyNjYwJzogTU8uT1JELCAgICAgICAgLy8gXFxzcGFkZXN1aXRcbiAgICAnXFx1MjY2MSc6IE1PLk9SRCwgICAgICAgIC8vIFxcaGVhcnRzdWl0XG4gICAgJ1xcdTI2NjInOiBNTy5PUkQsICAgICAgICAvLyBcXGRpYW1vbmRzdWl0XG4gICAgJ1xcdTI2NjMnOiBNTy5PUkQsICAgICAgICAvLyBcXGNsdWJzdWl0XG4gICAgJ1xcdTI3NTgnOiBNTy5SRUwsICAgICAgICAvLyBsaWdodCB2ZXJ0aWNhbCBiYXJcbiAgICAnXFx1MjdGMCc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgcXVhZHJ1cGxlIGFycm93XG4gICAgJ1xcdTI3RjEnOiBNTy5SRUxTVFJFVENILCAvLyBkb3dud2FyZHMgcXVhZHJ1cGxlIGFycm93XG4gICAgJ1xcdTI3RjUnOiBNTy5XSURFUkVMLCAgICAvLyBsb25nIGxlZnR3YXJkcyBhcnJvd1xuICAgICdcXHUyN0Y2JzogTU8uV0lERVJFTCwgICAgLy8gbG9uZyByaWdodHdhcmRzIGFycm93XG4gICAgJ1xcdTI3RjcnOiBNTy5XSURFUkVMLCAgICAvLyBsb25nIGxlZnQgcmlnaHQgYXJyb3dcbiAgICAnXFx1MjdGOCc6IE1PLldJREVSRUwsICAgIC8vIGxvbmcgbGVmdHdhcmRzIGRvdWJsZSBhcnJvd1xuICAgICdcXHUyN0Y5JzogTU8uV0lERVJFTCwgICAgLy8gbG9uZyByaWdodHdhcmRzIGRvdWJsZSBhcnJvd1xuICAgICdcXHUyN0ZBJzogTU8uV0lERVJFTCwgICAgLy8gbG9uZyBsZWZ0IHJpZ2h0IGRvdWJsZSBhcnJvd1xuICAgICdcXHUyN0ZCJzogTU8uV0lERVJFTCwgICAgLy8gbG9uZyBsZWZ0d2FyZHMgYXJyb3cgZnJvbSBiYXJcbiAgICAnXFx1MjdGQyc6IE1PLldJREVSRUwsICAgIC8vIGxvbmcgcmlnaHR3YXJkcyBhcnJvdyBmcm9tIGJhclxuICAgICdcXHUyN0ZEJzogTU8uV0lERVJFTCwgICAgLy8gbG9uZyBsZWZ0d2FyZHMgZG91YmxlIGFycm93IGZyb20gYmFyXG4gICAgJ1xcdTI3RkUnOiBNTy5XSURFUkVMLCAgICAvLyBsb25nIHJpZ2h0d2FyZHMgZG91YmxlIGFycm93IGZyb20gYmFyXG4gICAgJ1xcdTI3RkYnOiBNTy5XSURFUkVMLCAgICAvLyBsb25nIHJpZ2h0d2FyZHMgc3F1aWdnbGUgYXJyb3dcbiAgICAnXFx1MjkwMCc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0d2FyZHMgdHdvLWhlYWRlZCBhcnJvdyB3aXRoIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyOTAxJzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyB0d28taGVhZGVkIGFycm93IHdpdGggZG91YmxlIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyOTAyJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGRvdWJsZSBhcnJvdyB3aXRoIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyOTAzJzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBkb3VibGUgYXJyb3cgd2l0aCB2ZXJ0aWNhbCBzdHJva2VcbiAgICAnXFx1MjkwNCc6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnQgcmlnaHQgZG91YmxlIGFycm93IHdpdGggdmVydGljYWwgc3Ryb2tlXG4gICAgJ1xcdTI5MDUnOiBNTy5SRUxBQ0NFTlQsICAvLyByaWdodHdhcmRzIHR3by1oZWFkZWQgYXJyb3cgZnJvbSBiYXJcbiAgICAnXFx1MjkwNic6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnR3YXJkcyBkb3VibGUgYXJyb3cgZnJvbSBiYXJcbiAgICAnXFx1MjkwNyc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0d2FyZHMgZG91YmxlIGFycm93IGZyb20gYmFyXG4gICAgJ1xcdTI5MDgnOiBNTy5SRUwsICAgICAgICAvLyBkb3dud2FyZHMgYXJyb3cgd2l0aCBob3Jpem9udGFsIHN0cm9rZVxuICAgICdcXHUyOTA5JzogTU8uUkVMLCAgICAgICAgLy8gdXB3YXJkcyBhcnJvdyB3aXRoIGhvcml6b250YWwgc3Ryb2tlXG4gICAgJ1xcdTI5MEEnOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIHRyaXBsZSBhcnJvd1xuICAgICdcXHUyOTBCJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIHRyaXBsZSBhcnJvd1xuICAgICdcXHUyOTBDJzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIGRvdWJsZSBkYXNoIGFycm93XG4gICAgJ1xcdTI5MEQnOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIGRvdWJsZSBkYXNoIGFycm93XG4gICAgJ1xcdTI5MEUnOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgdHJpcGxlIGRhc2ggYXJyb3dcbiAgICAnXFx1MjkwRic6IE1PLldJREVSRUwsICAgIC8vIHJpZ2h0d2FyZHMgdHJpcGxlIGRhc2ggYXJyb3dcbiAgICAnXFx1MjkxMCc6IE1PLldJREVSRUwsICAgIC8vIHJpZ2h0d2FyZHMgdHdvLWhlYWRlZCB0cmlwbGUgZGFzaCBhcnJvd1xuICAgICdcXHUyOTExJzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBhcnJvdyB3aXRoIGRvdHRlZCBzdGVtXG4gICAgJ1xcdTI5MTInOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIGFycm93IHRvIGJhclxuICAgICdcXHUyOTEzJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIGFycm93IHRvIGJhclxuICAgICdcXHUyOTE0JzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBhcnJvdyB3aXRoIHRhaWwgd2l0aCB2ZXJ0aWNhbCBzdHJva2VcbiAgICAnXFx1MjkxNSc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0d2FyZHMgYXJyb3cgd2l0aCB0YWlsIHdpdGggZG91YmxlIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyOTE2JzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyB0d28taGVhZGVkIGFycm93IHdpdGggdGFpbFxuICAgICdcXHUyOTE3JzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyB0d28taGVhZGVkIGFycm93IHdpdGggdGFpbCB3aXRoIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyOTE4JzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyB0d28taGVhZGVkIGFycm93IHdpdGggdGFpbCB3aXRoIGRvdWJsZSB2ZXJ0aWNhbCBzdHJva2VcbiAgICAnXFx1MjkxOSc6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnR3YXJkcyBhcnJvdy10YWlsXG4gICAgJ1xcdTI5MUEnOiBNTy5SRUxBQ0NFTlQsICAvLyByaWdodHdhcmRzIGFycm93LXRhaWxcbiAgICAnXFx1MjkxQic6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnR3YXJkcyBkb3VibGUgYXJyb3ctdGFpbFxuICAgICdcXHUyOTFDJzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBkb3VibGUgYXJyb3ctdGFpbFxuICAgICdcXHUyOTFEJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGFycm93IHRvIGJsYWNrIGRpYW1vbmRcbiAgICAnXFx1MjkxRSc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0d2FyZHMgYXJyb3cgdG8gYmxhY2sgZGlhbW9uZFxuICAgICdcXHUyOTFGJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGFycm93IGZyb20gYmFyIHRvIGJsYWNrIGRpYW1vbmRcbiAgICAnXFx1MjkyMCc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0d2FyZHMgYXJyb3cgZnJvbSBiYXIgdG8gYmxhY2sgZGlhbW9uZFxuICAgICdcXHUyOTIxJzogTU8uUkVMU1RSRVRDSCwgLy8gbm9ydGggd2VzdCBhbmQgc291dGggZWFzdCBhcnJvd1xuICAgICdcXHUyOTIyJzogTU8uUkVMU1RSRVRDSCwgLy8gbm9ydGggZWFzdCBhbmQgc291dGggd2VzdCBhcnJvd1xuICAgICdcXHUyOTIzJzogTU8uUkVMLCAgICAgICAgLy8gbm9ydGggd2VzdCBhcnJvdyB3aXRoIGhvb2tcbiAgICAnXFx1MjkyNCc6IE1PLlJFTCwgICAgICAgIC8vIG5vcnRoIGVhc3QgYXJyb3cgd2l0aCBob29rXG4gICAgJ1xcdTI5MjUnOiBNTy5SRUwsICAgICAgICAvLyBzb3V0aCBlYXN0IGFycm93IHdpdGggaG9va1xuICAgICdcXHUyOTI2JzogTU8uUkVMLCAgICAgICAgLy8gc291dGggd2VzdCBhcnJvdyB3aXRoIGhvb2tcbiAgICAnXFx1MjkyNyc6IE1PLlJFTCwgICAgICAgIC8vIG5vcnRoIHdlc3QgYXJyb3cgYW5kIG5vcnRoIGVhc3QgYXJyb3dcbiAgICAnXFx1MjkyOCc6IE1PLlJFTCwgICAgICAgIC8vIG5vcnRoIGVhc3QgYXJyb3cgYW5kIHNvdXRoIGVhc3QgYXJyb3dcbiAgICAnXFx1MjkyOSc6IE1PLlJFTCwgICAgICAgIC8vIHNvdXRoIGVhc3QgYXJyb3cgYW5kIHNvdXRoIHdlc3QgYXJyb3dcbiAgICAnXFx1MjkyQSc6IE1PLlJFTCwgICAgICAgIC8vIHNvdXRoIHdlc3QgYXJyb3cgYW5kIG5vcnRoIHdlc3QgYXJyb3dcbiAgICAnXFx1MjkyQic6IE1PLlJFTCwgICAgICAgIC8vIHJpc2luZyBkaWFnb25hbCBjcm9zc2luZyBmYWxsaW5nIGRpYWdvbmFsXG4gICAgJ1xcdTI5MkMnOiBNTy5SRUwsICAgICAgICAvLyBmYWxsaW5nIGRpYWdvbmFsIGNyb3NzaW5nIHJpc2luZyBkaWFnb25hbFxuICAgICdcXHUyOTJEJzogTU8uUkVMLCAgICAgICAgLy8gc291dGggZWFzdCBhcnJvdyBjcm9zc2luZyBub3J0aCBlYXN0IGFycm93XG4gICAgJ1xcdTI5MkUnOiBNTy5SRUwsICAgICAgICAvLyBub3J0aCBlYXN0IGFycm93IGNyb3NzaW5nIHNvdXRoIGVhc3QgYXJyb3dcbiAgICAnXFx1MjkyRic6IE1PLlJFTCwgICAgICAgIC8vIGZhbGxpbmcgZGlhZ29uYWwgY3Jvc3Npbmcgbm9ydGggZWFzdCBhcnJvd1xuICAgICdcXHUyOTMwJzogTU8uUkVMLCAgICAgICAgLy8gcmlzaW5nIGRpYWdvbmFsIGNyb3NzaW5nIHNvdXRoIGVhc3QgYXJyb3dcbiAgICAnXFx1MjkzMSc6IE1PLlJFTCwgICAgICAgIC8vIG5vcnRoIGVhc3QgYXJyb3cgY3Jvc3Npbmcgbm9ydGggd2VzdCBhcnJvd1xuICAgICdcXHUyOTMyJzogTU8uUkVMLCAgICAgICAgLy8gbm9ydGggd2VzdCBhcnJvdyBjcm9zc2luZyBub3J0aCBlYXN0IGFycm93XG4gICAgJ1xcdTI5MzMnOiBNTy5SRUxBQ0NFTlQsICAvLyB3YXZlIGFycm93IHBvaW50aW5nIGRpcmVjdGx5IHJpZ2h0XG4gICAgJ1xcdTI5MzQnOiBNTy5SRUwsICAgICAgICAvLyBhcnJvdyBwb2ludGluZyByaWdodHdhcmRzIHRoZW4gY3VydmluZyB1cHdhcmRzXG4gICAgJ1xcdTI5MzUnOiBNTy5SRUwsICAgICAgICAvLyBhcnJvdyBwb2ludGluZyByaWdodHdhcmRzIHRoZW4gY3VydmluZyBkb3dud2FyZHNcbiAgICAnXFx1MjkzNic6IE1PLlJFTCwgICAgICAgIC8vIGFycm93IHBvaW50aW5nIGRvd253YXJkcyB0aGVuIGN1cnZpbmcgbGVmdHdhcmRzXG4gICAgJ1xcdTI5MzcnOiBNTy5SRUwsICAgICAgICAvLyBhcnJvdyBwb2ludGluZyBkb3dud2FyZHMgdGhlbiBjdXJ2aW5nIHJpZ2h0d2FyZHNcbiAgICAnXFx1MjkzOCc6IE1PLlJFTCwgICAgICAgIC8vIHJpZ2h0LXNpZGUgYXJjIGNsb2Nrd2lzZSBhcnJvd1xuICAgICdcXHUyOTM5JzogTU8uUkVMLCAgICAgICAgLy8gbGVmdC1zaWRlIGFyYyBhbnRpY2xvY2t3aXNlIGFycm93XG4gICAgJ1xcdTI5M0EnOiBNTy5SRUxBQ0NFTlQsICAvLyB0b3AgYXJjIGFudGljbG9ja3dpc2UgYXJyb3dcbiAgICAnXFx1MjkzQic6IE1PLlJFTEFDQ0VOVCwgIC8vIGJvdHRvbSBhcmMgYW50aWNsb2Nrd2lzZSBhcnJvd1xuICAgICdcXHUyOTNDJzogTU8uUkVMQUNDRU5ULCAgLy8gdG9wIGFyYyBjbG9ja3dpc2UgYXJyb3cgd2l0aCBtaW51c1xuICAgICdcXHUyOTNEJzogTU8uUkVMQUNDRU5ULCAgLy8gdG9wIGFyYyBhbnRpY2xvY2t3aXNlIGFycm93IHdpdGggcGx1c1xuICAgICdcXHUyOTNFJzogTU8uUkVMLCAgICAgICAgLy8gbG93ZXIgcmlnaHQgc2VtaWNpcmN1bGFyIGNsb2Nrd2lzZSBhcnJvd1xuICAgICdcXHUyOTNGJzogTU8uUkVMLCAgICAgICAgLy8gbG93ZXIgbGVmdCBzZW1pY2lyY3VsYXIgYW50aWNsb2Nrd2lzZSBhcnJvd1xuICAgICdcXHUyOTQwJzogTU8uUkVMLCAgICAgICAgLy8gYW50aWNsb2Nrd2lzZSBjbG9zZWQgY2lyY2xlIGFycm93XG4gICAgJ1xcdTI5NDEnOiBNTy5SRUwsICAgICAgICAvLyBjbG9ja3dpc2UgY2xvc2VkIGNpcmNsZSBhcnJvd1xuICAgICdcXHUyOTQyJzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBhcnJvdyBhYm92ZSBzaG9ydCBsZWZ0d2FyZHMgYXJyb3dcbiAgICAnXFx1Mjk0Myc6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnR3YXJkcyBhcnJvdyBhYm92ZSBzaG9ydCByaWdodHdhcmRzIGFycm93XG4gICAgJ1xcdTI5NDQnOiBNTy5SRUxBQ0NFTlQsICAvLyBzaG9ydCByaWdodHdhcmRzIGFycm93IGFib3ZlIGxlZnR3YXJkcyBhcnJvd1xuICAgICdcXHUyOTQ1JzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBhcnJvdyB3aXRoIHBsdXMgYmVsb3dcbiAgICAnXFx1Mjk0Nic6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnR3YXJkcyBhcnJvdyB3aXRoIHBsdXMgYmVsb3dcbiAgICAnXFx1Mjk0Nyc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0d2FyZHMgYXJyb3cgdGhyb3VnaCB4XG4gICAgJ1xcdTI5NDgnOiBNTy5SRUxBQ0NFTlQsICAvLyBsZWZ0IHJpZ2h0IGFycm93IHRocm91Z2ggc21hbGwgY2lyY2xlXG4gICAgJ1xcdTI5NDknOiBNTy5SRUwsICAgICAgICAvLyB1cHdhcmRzIHR3by1oZWFkZWQgYXJyb3cgZnJvbSBzbWFsbCBjaXJjbGVcbiAgICAnXFx1Mjk0QSc6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnQgYmFyYiB1cCByaWdodCBiYXJiIGRvd24gaGFycG9vblxuICAgICdcXHUyOTRCJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdCBiYXJiIGRvd24gcmlnaHQgYmFyYiB1cCBoYXJwb29uXG4gICAgJ1xcdTI5NEMnOiBNTy5SRUwsICAgICAgICAvLyB1cCBiYXJiIHJpZ2h0IGRvd24gYmFyYiBsZWZ0IGhhcnBvb25cbiAgICAnXFx1Mjk0RCc6IE1PLlJFTCwgICAgICAgIC8vIHVwIGJhcmIgbGVmdCBkb3duIGJhcmIgcmlnaHQgaGFycG9vblxuICAgICdcXHUyOTRFJzogTU8uV0lERVJFTCwgICAgLy8gbGVmdCBiYXJiIHVwIHJpZ2h0IGJhcmIgdXAgaGFycG9vblxuICAgICdcXHUyOTRGJzogTU8uUkVMU1RSRVRDSCwgLy8gdXAgYmFyYiByaWdodCBkb3duIGJhcmIgcmlnaHQgaGFycG9vblxuICAgICdcXHUyOTUwJzogTU8uV0lERVJFTCwgICAgLy8gbGVmdCBiYXJiIGRvd24gcmlnaHQgYmFyYiBkb3duIGhhcnBvb25cbiAgICAnXFx1Mjk1MSc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwIGJhcmIgbGVmdCBkb3duIGJhcmIgbGVmdCBoYXJwb29uXG4gICAgJ1xcdTI5NTInOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgdXAgdG8gYmFyXG4gICAgJ1xcdTI5NTMnOiBNTy5XSURFUkVMLCAgICAvLyByaWdodHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIHVwIHRvIGJhclxuICAgICdcXHUyOTU0JzogTU8uUkVMU1RSRVRDSCwgLy8gdXB3YXJkcyBoYXJwb29uIHdpdGggYmFyYiByaWdodCB0byBiYXJcbiAgICAnXFx1Mjk1NSc6IE1PLlJFTFNUUkVUQ0gsIC8vIGRvd253YXJkcyBoYXJwb29uIHdpdGggYmFyYiByaWdodCB0byBiYXJcbiAgICAnXFx1Mjk1Nic6IE1PLlJFTFNUUkVUQ0gsIC8vIGxlZnR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBkb3duIHRvIGJhclxuICAgICdcXHUyOTU3JzogTU8uUkVMU1RSRVRDSCwgLy8gcmlnaHR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBkb3duIHRvIGJhclxuICAgICdcXHUyOTU4JzogTU8uUkVMU1RSRVRDSCwgLy8gdXB3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBsZWZ0IHRvIGJhclxuICAgICdcXHUyOTU5JzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGxlZnQgdG8gYmFyXG4gICAgJ1xcdTI5NUEnOiBNTy5XSURFUkVMLCAgICAvLyBsZWZ0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgdXAgZnJvbSBiYXJcbiAgICAnXFx1Mjk1Qic6IE1PLldJREVSRUwsICAgIC8vIHJpZ2h0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgdXAgZnJvbSBiYXJcbiAgICAnXFx1Mjk1Qyc6IE1PLlJFTFNUUkVUQ0gsIC8vIHVwd2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgcmlnaHQgZnJvbSBiYXJcbiAgICAnXFx1Mjk1RCc6IE1PLlJFTFNUUkVUQ0gsIC8vIGRvd253YXJkcyBoYXJwb29uIHdpdGggYmFyYiByaWdodCBmcm9tIGJhclxuICAgICdcXHUyOTVFJzogTU8uV0lERVJFTCwgICAgLy8gbGVmdHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGRvd24gZnJvbSBiYXJcbiAgICAnXFx1Mjk1Ric6IE1PLldJREVSRUwsICAgIC8vIHJpZ2h0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgZG93biBmcm9tIGJhclxuICAgICdcXHUyOTYwJzogTU8uUkVMU1RSRVRDSCwgLy8gdXB3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBsZWZ0IGZyb20gYmFyXG4gICAgJ1xcdTI5NjEnOiBNTy5SRUxTVFJFVENILCAvLyBkb3dud2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgbGVmdCBmcm9tIGJhclxuICAgICdcXHUyOTYyJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIHVwIGFib3ZlIGxlZnR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBkb3duXG4gICAgJ1xcdTI5NjMnOiBNTy5SRUwsICAgICAgICAvLyB1cHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGxlZnQgYmVzaWRlIHVwd2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgcmlnaHRcbiAgICAnXFx1Mjk2NCc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgdXAgYWJvdmUgcmlnaHR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBkb3duXG4gICAgJ1xcdTI5NjUnOiBNTy5SRUwsICAgICAgICAvLyBkb3dud2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgbGVmdCBiZXNpZGUgZG93bndhcmRzIGhhcnBvb24gd2l0aCBiYXJiIHJpZ2h0XG4gICAgJ1xcdTI5NjYnOiBNTy5SRUxBQ0NFTlQsICAvLyBsZWZ0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgdXAgYWJvdmUgcmlnaHR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiB1cFxuICAgICdcXHUyOTY3JzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGRvd24gYWJvdmUgcmlnaHR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBkb3duXG4gICAgJ1xcdTI5NjgnOiBNTy5SRUxBQ0NFTlQsICAvLyByaWdodHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIHVwIGFib3ZlIGxlZnR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiB1cFxuICAgICdcXHUyOTY5JzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBkb3duIGFib3ZlIGxlZnR3YXJkcyBoYXJwb29uIHdpdGggYmFyYiBkb3duXG4gICAgJ1xcdTI5NkEnOiBNTy5SRUxBQ0NFTlQsICAvLyBsZWZ0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgdXAgYWJvdmUgbG9uZyBkYXNoXG4gICAgJ1xcdTI5NkInOiBNTy5SRUxBQ0NFTlQsICAvLyBsZWZ0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgZG93biBiZWxvdyBsb25nIGRhc2hcbiAgICAnXFx1Mjk2Qyc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0d2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgdXAgYWJvdmUgbG9uZyBkYXNoXG4gICAgJ1xcdTI5NkQnOiBNTy5SRUxBQ0NFTlQsICAvLyByaWdodHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGRvd24gYmVsb3cgbG9uZyBkYXNoXG4gICAgJ1xcdTI5NkUnOiBNTy5SRUxTVFJFVENILCAvLyB1cHdhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGxlZnQgYmVzaWRlIGRvd253YXJkcyBoYXJwb29uIHdpdGggYmFyYiByaWdodFxuICAgICdcXHUyOTZGJzogTU8uUkVMU1RSRVRDSCwgLy8gZG93bndhcmRzIGhhcnBvb24gd2l0aCBiYXJiIGxlZnQgYmVzaWRlIHVwd2FyZHMgaGFycG9vbiB3aXRoIGJhcmIgcmlnaHRcbiAgICAnXFx1Mjk3MCc6IE1PLlJFTEFDQ0VOVCwgIC8vIHJpZ2h0IGRvdWJsZSBhcnJvdyB3aXRoIHJvdW5kZWQgaGVhZFxuICAgICdcXHUyOTcxJzogTU8uUkVMQUNDRU5ULCAgLy8gZXF1YWxzIHNpZ24gYWJvdmUgcmlnaHR3YXJkcyBhcnJvd1xuICAgICdcXHUyOTcyJzogTU8uUkVMQUNDRU5ULCAgLy8gdGlsZGUgb3BlcmF0b3IgYWJvdmUgcmlnaHR3YXJkcyBhcnJvd1xuICAgICdcXHUyOTczJzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGFycm93IGFib3ZlIHRpbGRlIG9wZXJhdG9yXG4gICAgJ1xcdTI5NzQnOiBNTy5SRUxBQ0NFTlQsICAvLyByaWdodHdhcmRzIGFycm93IGFib3ZlIHRpbGRlIG9wZXJhdG9yXG4gICAgJ1xcdTI5NzUnOiBNTy5SRUxBQ0NFTlQsICAvLyByaWdodHdhcmRzIGFycm93IGFib3ZlIGFsbW9zdCBlcXVhbCB0b1xuICAgICdcXHUyOTc2JzogTU8uUkVMQUNDRU5ULCAgLy8gbGVzcy10aGFuIGFib3ZlIGxlZnR3YXJkcyBhcnJvd1xuICAgICdcXHUyOTc3JzogTU8uUkVMQUNDRU5ULCAgLy8gbGVmdHdhcmRzIGFycm93IHRocm91Z2ggbGVzcy10aGFuXG4gICAgJ1xcdTI5NzgnOiBNTy5SRUxBQ0NFTlQsICAvLyBncmVhdGVyLXRoYW4gYWJvdmUgcmlnaHR3YXJkcyBhcnJvd1xuICAgICdcXHUyOTc5JzogTU8uUkVMQUNDRU5ULCAgLy8gc3Vic2V0IGFib3ZlIHJpZ2h0d2FyZHMgYXJyb3dcbiAgICAnXFx1Mjk3QSc6IE1PLlJFTEFDQ0VOVCwgIC8vIGxlZnR3YXJkcyBhcnJvdyB0aHJvdWdoIHN1YnNldFxuICAgICdcXHUyOTdCJzogTU8uUkVMQUNDRU5ULCAgLy8gc3VwZXJzZXQgYWJvdmUgbGVmdHdhcmRzIGFycm93XG4gICAgJ1xcdTI5N0MnOiBNTy5SRUxBQ0NFTlQsICAvLyBsZWZ0IGZpc2ggdGFpbFxuICAgICdcXHUyOTdEJzogTU8uUkVMQUNDRU5ULCAgLy8gcmlnaHQgZmlzaCB0YWlsXG4gICAgJ1xcdTI5N0UnOiBNTy5SRUwsICAgICAgICAvLyB1cCBmaXNoIHRhaWxcbiAgICAnXFx1Mjk3Ric6IE1PLlJFTCwgICAgICAgIC8vIGRvd24gZmlzaCB0YWlsXG4gICAgJ1xcdTI5ODEnOiBNTy5CSU4zLCAgICAgICAvLyB6IG5vdGF0aW9uIHNwb3RcbiAgICAnXFx1Mjk4Mic6IE1PLkJJTjMsICAgICAgIC8vIHogbm90YXRpb24gdHlwZSBjb2xvblxuICAgICdcXHUyOTk5JzogTU8uQklOMywgICAgICAgLy8gZG90dGVkIGZlbmNlXG4gICAgJ1xcdTI5OUEnOiBNTy5CSU4zLCAgICAgICAvLyB2ZXJ0aWNhbCB6aWd6YWcgbGluZVxuICAgICdcXHUyOTlCJzogTU8uQklOMywgICAgICAgLy8gbWVhc3VyZWQgYW5nbGUgb3BlbmluZyBsZWZ0XG4gICAgJ1xcdTI5OUMnOiBNTy5CSU4zLCAgICAgICAvLyByaWdodCBhbmdsZSB2YXJpYW50IHdpdGggc3F1YXJlXG4gICAgJ1xcdTI5OUQnOiBNTy5CSU4zLCAgICAgICAvLyBtZWFzdXJlZCByaWdodCBhbmdsZSB3aXRoIGRvdFxuICAgICdcXHUyOTlFJzogTU8uQklOMywgICAgICAgLy8gYW5nbGUgd2l0aCBzIGluc2lkZVxuICAgICdcXHUyOTlGJzogTU8uQklOMywgICAgICAgLy8gYWN1dGUgYW5nbGVcbiAgICAnXFx1MjlBMCc6IE1PLkJJTjMsICAgICAgIC8vIHNwaGVyaWNhbCBhbmdsZSBvcGVuaW5nIGxlZnRcbiAgICAnXFx1MjlBMSc6IE1PLkJJTjMsICAgICAgIC8vIHNwaGVyaWNhbCBhbmdsZSBvcGVuaW5nIHVwXG4gICAgJ1xcdTI5QTInOiBNTy5CSU4zLCAgICAgICAvLyB0dXJuZWQgYW5nbGVcbiAgICAnXFx1MjlBMyc6IE1PLkJJTjMsICAgICAgIC8vIHJldmVyc2VkIGFuZ2xlXG4gICAgJ1xcdTI5QTQnOiBNTy5CSU4zLCAgICAgICAvLyBhbmdsZSB3aXRoIHVuZGVyYmFyXG4gICAgJ1xcdTI5QTUnOiBNTy5CSU4zLCAgICAgICAvLyByZXZlcnNlZCBhbmdsZSB3aXRoIHVuZGVyYmFyXG4gICAgJ1xcdTI5QTYnOiBNTy5CSU4zLCAgICAgICAvLyBvYmxpcXVlIGFuZ2xlIG9wZW5pbmcgdXBcbiAgICAnXFx1MjlBNyc6IE1PLkJJTjMsICAgICAgIC8vIG9ibGlxdWUgYW5nbGUgb3BlbmluZyBkb3duXG4gICAgJ1xcdTI5QTgnOiBNTy5CSU4zLCAgICAgICAvLyBtZWFzdXJlZCBhbmdsZSB3aXRoIG9wZW4gYXJtIGVuZGluZyBpbiBhcnJvdyBwb2ludGluZyB1cCBhbmQgcmlnaHRcbiAgICAnXFx1MjlBOSc6IE1PLkJJTjMsICAgICAgIC8vIG1lYXN1cmVkIGFuZ2xlIHdpdGggb3BlbiBhcm0gZW5kaW5nIGluIGFycm93IHBvaW50aW5nIHVwIGFuZCBsZWZ0XG4gICAgJ1xcdTI5QUEnOiBNTy5CSU4zLCAgICAgICAvLyBtZWFzdXJlZCBhbmdsZSB3aXRoIG9wZW4gYXJtIGVuZGluZyBpbiBhcnJvdyBwb2ludGluZyBkb3duIGFuZCByaWdodFxuICAgICdcXHUyOUFCJzogTU8uQklOMywgICAgICAgLy8gbWVhc3VyZWQgYW5nbGUgd2l0aCBvcGVuIGFybSBlbmRpbmcgaW4gYXJyb3cgcG9pbnRpbmcgZG93biBhbmQgbGVmdFxuICAgICdcXHUyOUFDJzogTU8uQklOMywgICAgICAgLy8gbWVhc3VyZWQgYW5nbGUgd2l0aCBvcGVuIGFybSBlbmRpbmcgaW4gYXJyb3cgcG9pbnRpbmcgcmlnaHQgYW5kIHVwXG4gICAgJ1xcdTI5QUQnOiBNTy5CSU4zLCAgICAgICAvLyBtZWFzdXJlZCBhbmdsZSB3aXRoIG9wZW4gYXJtIGVuZGluZyBpbiBhcnJvdyBwb2ludGluZyBsZWZ0IGFuZCB1cFxuICAgICdcXHUyOUFFJzogTU8uQklOMywgICAgICAgLy8gbWVhc3VyZWQgYW5nbGUgd2l0aCBvcGVuIGFybSBlbmRpbmcgaW4gYXJyb3cgcG9pbnRpbmcgcmlnaHQgYW5kIGRvd25cbiAgICAnXFx1MjlBRic6IE1PLkJJTjMsICAgICAgIC8vIG1lYXN1cmVkIGFuZ2xlIHdpdGggb3BlbiBhcm0gZW5kaW5nIGluIGFycm93IHBvaW50aW5nIGxlZnQgYW5kIGRvd25cbiAgICAnXFx1MjlCMCc6IE1PLkJJTjMsICAgICAgIC8vIHJldmVyc2VkIGVtcHR5IHNldFxuICAgICdcXHUyOUIxJzogTU8uQklOMywgICAgICAgLy8gZW1wdHkgc2V0IHdpdGggb3ZlcmJhclxuICAgICdcXHUyOUIyJzogTU8uQklOMywgICAgICAgLy8gZW1wdHkgc2V0IHdpdGggc21hbGwgY2lyY2xlIGFib3ZlXG4gICAgJ1xcdTI5QjMnOiBNTy5CSU4zLCAgICAgICAvLyBlbXB0eSBzZXQgd2l0aCByaWdodCBhcnJvdyBhYm92ZVxuICAgICdcXHUyOUI0JzogTU8uQklOMywgICAgICAgLy8gZW1wdHkgc2V0IHdpdGggbGVmdCBhcnJvdyBhYm92ZVxuICAgICdcXHUyOUI1JzogTU8uQklOMywgICAgICAgLy8gY2lyY2xlIHdpdGggaG9yaXpvbnRhbCBiYXJcbiAgICAnXFx1MjlCNic6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgdmVydGljYWwgYmFyXG4gICAgJ1xcdTI5QjcnOiBNTy5CSU40LCAgICAgICAvLyBjaXJjbGVkIHBhcmFsbGVsXG4gICAgJ1xcdTI5QjgnOiBNTy5CSU40LCAgICAgICAvLyBjaXJjbGVkIHJldmVyc2Ugc29saWR1c1xuICAgICdcXHUyOUI5JzogTU8uQklONCwgICAgICAgLy8gY2lyY2xlZCBwZXJwZW5kaWN1bGFyXG4gICAgJ1xcdTI5QkEnOiBNTy5CSU40LCAgICAgICAvLyBjaXJjbGUgZGl2aWRlZCBieSBob3Jpem9udGFsIGJhciBhbmQgdG9wIGhhbGYgZGl2aWRlZCBieSB2ZXJ0aWNhbCBiYXJcbiAgICAnXFx1MjlCQic6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZSB3aXRoIHN1cGVyaW1wb3NlZCB4XG4gICAgJ1xcdTI5QkMnOiBNTy5CSU40LCAgICAgICAvLyBjaXJjbGVkIGFudGljbG9ja3dpc2Utcm90YXRlZCBkaXZpc2lvbiBzaWduXG4gICAgJ1xcdTI5QkQnOiBNTy5CSU40LCAgICAgICAvLyB1cCBhcnJvdyB0aHJvdWdoIGNpcmNsZVxuICAgICdcXHUyOUJFJzogTU8uQklONCwgICAgICAgLy8gY2lyY2xlZCB3aGl0ZSBidWxsZXRcbiAgICAnXFx1MjlCRic6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgYnVsbGV0XG4gICAgJ1xcdTI5QzAnOiBNTy5SRUwsICAgICAgICAvLyBjaXJjbGVkIGxlc3MtdGhhblxuICAgICdcXHUyOUMxJzogTU8uUkVMLCAgICAgICAgLy8gY2lyY2xlZCBncmVhdGVyLXRoYW5cbiAgICAnXFx1MjlDMic6IE1PLkJJTjMsICAgICAgIC8vIGNpcmNsZSB3aXRoIHNtYWxsIGNpcmNsZSB0byB0aGUgcmlnaHRcbiAgICAnXFx1MjlDMyc6IE1PLkJJTjMsICAgICAgIC8vIGNpcmNsZSB3aXRoIHR3byBob3Jpem9udGFsIHN0cm9rZXMgdG8gdGhlIHJpZ2h0XG4gICAgJ1xcdTI5QzQnOiBNTy5CSU40LCAgICAgICAvLyBzcXVhcmVkIHJpc2luZyBkaWFnb25hbCBzbGFzaFxuICAgICdcXHUyOUM1JzogTU8uQklONCwgICAgICAgLy8gc3F1YXJlZCBmYWxsaW5nIGRpYWdvbmFsIHNsYXNoXG4gICAgJ1xcdTI5QzYnOiBNTy5CSU40LCAgICAgICAvLyBzcXVhcmVkIGFzdGVyaXNrXG4gICAgJ1xcdTI5QzcnOiBNTy5CSU40LCAgICAgICAvLyBzcXVhcmVkIHNtYWxsIGNpcmNsZVxuICAgICdcXHUyOUM4JzogTU8uQklONCwgICAgICAgLy8gc3F1YXJlZCBzcXVhcmVcbiAgICAnXFx1MjlDOSc6IE1PLkJJTjMsICAgICAgIC8vIHR3byBqb2luZWQgc3F1YXJlc1xuICAgICdcXHUyOUNBJzogTU8uQklOMywgICAgICAgLy8gdHJpYW5nbGUgd2l0aCBkb3QgYWJvdmVcbiAgICAnXFx1MjlDQic6IE1PLkJJTjMsICAgICAgIC8vIHRyaWFuZ2xlIHdpdGggdW5kZXJiYXJcbiAgICAnXFx1MjlDQyc6IE1PLkJJTjMsICAgICAgIC8vIHMgaW4gdHJpYW5nbGVcbiAgICAnXFx1MjlDRCc6IE1PLkJJTjMsICAgICAgIC8vIHRyaWFuZ2xlIHdpdGggc2VyaWZzIGF0IGJvdHRvbVxuICAgICdcXHUyOUNFJzogTU8uUkVMLCAgICAgICAgLy8gcmlnaHQgdHJpYW5nbGUgYWJvdmUgbGVmdCB0cmlhbmdsZVxuICAgICdcXHUyOUNGJzogTU8uUkVMLCAgICAgICAgLy8gbGVmdCB0cmlhbmdsZSBiZXNpZGUgdmVydGljYWwgYmFyXG4gICAgJ1xcdTI5Q0ZcXHUwMzM4JzogTU8uUkVMLCAgLy8gbGVmdCB0cmlhbmdsZSBiZXNpZGUgdmVydGljYWwgYmFyIHdpdGggc2xhc2hcbiAgICAnXFx1MjlEMCc6IE1PLlJFTCwgICAgICAgIC8vIHZlcnRpY2FsIGJhciBiZXNpZGUgcmlnaHQgdHJpYW5nbGVcbiAgICAnXFx1MjlEMFxcdTAzMzgnOiBNTy5SRUwsICAvLyB2ZXJ0aWNhbCBiYXIgYmVzaWRlIHJpZ2h0IHRyaWFuZ2xlIHdpdGggc2xhc2hcbiAgICAnXFx1MjlEMSc6IE1PLlJFTCwgICAgICAgIC8vIGJvd3RpZSB3aXRoIGxlZnQgaGFsZiBibGFja1xuICAgICdcXHUyOUQyJzogTU8uUkVMLCAgICAgICAgLy8gYm93dGllIHdpdGggcmlnaHQgaGFsZiBibGFja1xuICAgICdcXHUyOUQzJzogTU8uUkVMLCAgICAgICAgLy8gYmxhY2sgYm93dGllXG4gICAgJ1xcdTI5RDQnOiBNTy5SRUwsICAgICAgICAvLyB0aW1lcyB3aXRoIGxlZnQgaGFsZiBibGFja1xuICAgICdcXHUyOUQ1JzogTU8uUkVMLCAgICAgICAgLy8gdGltZXMgd2l0aCByaWdodCBoYWxmIGJsYWNrXG4gICAgJ1xcdTI5RDYnOiBNTy5CSU40LCAgICAgICAvLyB3aGl0ZSBob3VyZ2xhc3NcbiAgICAnXFx1MjlENyc6IE1PLkJJTjQsICAgICAgIC8vIGJsYWNrIGhvdXJnbGFzc1xuICAgICdcXHUyOUQ4JzogTU8uQklOMywgICAgICAgLy8gbGVmdCB3aWdnbHkgZmVuY2VcbiAgICAnXFx1MjlEOSc6IE1PLkJJTjMsICAgICAgIC8vIHJpZ2h0IHdpZ2dseSBmZW5jZVxuICAgICdcXHUyOURCJzogTU8uQklOMywgICAgICAgLy8gcmlnaHQgZG91YmxlIHdpZ2dseSBmZW5jZVxuICAgICdcXHUyOURDJzogTU8uQklOMywgICAgICAgLy8gaW5jb21wbGV0ZSBpbmZpbml0eVxuICAgICdcXHUyOUREJzogTU8uQklOMywgICAgICAgLy8gdGllIG92ZXIgaW5maW5pdHlcbiAgICAnXFx1MjlERSc6IE1PLlJFTCwgICAgICAgIC8vIGluZmluaXR5IG5lZ2F0ZWQgd2l0aCB2ZXJ0aWNhbCBiYXJcbiAgICAnXFx1MjlERic6IE1PLkJJTjMsICAgICAgIC8vIGRvdWJsZS1lbmRlZCBtdWx0aW1hcFxuICAgICdcXHUyOUUwJzogTU8uQklOMywgICAgICAgLy8gc3F1YXJlIHdpdGggY29udG91cmVkIG91dGxpbmVcbiAgICAnXFx1MjlFMSc6IE1PLlJFTCwgICAgICAgIC8vIGluY3JlYXNlcyBhc1xuICAgICdcXHUyOUUyJzogTU8uQklONCwgICAgICAgLy8gc2h1ZmZsZSBwcm9kdWN0XG4gICAgJ1xcdTI5RTMnOiBNTy5SRUwsICAgICAgICAvLyBlcXVhbHMgc2lnbiBhbmQgc2xhbnRlZCBwYXJhbGxlbFxuICAgICdcXHUyOUU0JzogTU8uUkVMLCAgICAgICAgLy8gZXF1YWxzIHNpZ24gYW5kIHNsYW50ZWQgcGFyYWxsZWwgd2l0aCB0aWxkZSBhYm92ZVxuICAgICdcXHUyOUU1JzogTU8uUkVMLCAgICAgICAgLy8gaWRlbnRpY2FsIHRvIGFuZCBzbGFudGVkIHBhcmFsbGVsXG4gICAgJ1xcdTI5RTYnOiBNTy5SRUwsICAgICAgICAvLyBnbGVpY2ggc3RhcmtcbiAgICAnXFx1MjlFNyc6IE1PLkJJTjMsICAgICAgIC8vIHRoZXJtb2R5bmFtaWNcbiAgICAnXFx1MjlFOCc6IE1PLkJJTjMsICAgICAgIC8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGUgd2l0aCBsZWZ0IGhhbGYgYmxhY2tcbiAgICAnXFx1MjlFOSc6IE1PLkJJTjMsICAgICAgIC8vIGRvd24tcG9pbnRpbmcgdHJpYW5nbGUgd2l0aCByaWdodCBoYWxmIGJsYWNrXG4gICAgJ1xcdTI5RUEnOiBNTy5CSU4zLCAgICAgICAvLyBibGFjayBkaWFtb25kIHdpdGggZG93biBhcnJvd1xuICAgICdcXHUyOUVCJzogTU8uQklOMywgICAgICAgLy8gYmxhY2sgbG96ZW5nZVxuICAgICdcXHUyOUVDJzogTU8uQklOMywgICAgICAgLy8gd2hpdGUgY2lyY2xlIHdpdGggZG93biBhcnJvd1xuICAgICdcXHUyOUVEJzogTU8uQklOMywgICAgICAgLy8gYmxhY2sgY2lyY2xlIHdpdGggZG93biBhcnJvd1xuICAgICdcXHUyOUVFJzogTU8uQklOMywgICAgICAgLy8gZXJyb3ItYmFycmVkIHdoaXRlIHNxdWFyZVxuICAgICdcXHUyOUVGJzogTU8uQklOMywgICAgICAgLy8gZXJyb3ItYmFycmVkIGJsYWNrIHNxdWFyZVxuICAgICdcXHUyOUYwJzogTU8uQklOMywgICAgICAgLy8gZXJyb3ItYmFycmVkIHdoaXRlIGRpYW1vbmRcbiAgICAnXFx1MjlGMSc6IE1PLkJJTjMsICAgICAgIC8vIGVycm9yLWJhcnJlZCBibGFjayBkaWFtb25kXG4gICAgJ1xcdTI5RjInOiBNTy5CSU4zLCAgICAgICAvLyBlcnJvci1iYXJyZWQgd2hpdGUgY2lyY2xlXG4gICAgJ1xcdTI5RjMnOiBNTy5CSU4zLCAgICAgICAvLyBlcnJvci1iYXJyZWQgYmxhY2sgY2lyY2xlXG4gICAgJ1xcdTI5RjQnOiBNTy5SRUwsICAgICAgICAvLyBydWxlLWRlbGF5ZWRcbiAgICAnXFx1MjlGNSc6IE1PLkJJTjQsICAgICAgIC8vIHJldmVyc2Ugc29saWR1cyBvcGVyYXRvclxuICAgICdcXHUyOUY2JzogTU8uQklONCwgICAgICAgLy8gc29saWR1cyB3aXRoIG92ZXJiYXJcbiAgICAnXFx1MjlGNyc6IE1PLkJJTjQsICAgICAgIC8vIHJldmVyc2Ugc29saWR1cyB3aXRoIGhvcml6b250YWwgc3Ryb2tlXG4gICAgJ1xcdTI5RjgnOiBNTy5CSU4zLCAgICAgICAvLyBiaWcgc29saWR1c1xuICAgICdcXHUyOUY5JzogTU8uQklOMywgICAgICAgLy8gYmlnIHJldmVyc2Ugc29saWR1c1xuICAgICdcXHUyOUZBJzogTU8uQklOMywgICAgICAgLy8gZG91YmxlIHBsdXNcbiAgICAnXFx1MjlGQic6IE1PLkJJTjMsICAgICAgIC8vIHRyaXBsZSBwbHVzXG4gICAgJ1xcdTI5RkUnOiBNTy5CSU40LCAgICAgICAvLyB0aW55XG4gICAgJ1xcdTI5RkYnOiBNTy5CSU40LCAgICAgICAvLyBtaW55XG4gICAgJ1xcdTJBMUQnOiBNTy5CSU4zLCAgICAgICAvLyBqb2luXG4gICAgJ1xcdTJBMUUnOiBNTy5CSU4zLCAgICAgICAvLyBsYXJnZSBsZWZ0IHRyaWFuZ2xlIG9wZXJhdG9yXG4gICAgJ1xcdTJBMUYnOiBNTy5CSU4zLCAgICAgICAvLyB6IG5vdGF0aW9uIHNjaGVtYSBjb21wb3NpdGlvblxuICAgICdcXHUyQTIwJzogTU8uQklOMywgICAgICAgLy8geiBub3RhdGlvbiBzY2hlbWEgcGlwaW5nXG4gICAgJ1xcdTJBMjEnOiBNTy5CSU4zLCAgICAgICAvLyB6IG5vdGF0aW9uIHNjaGVtYSBwcm9qZWN0aW9uXG4gICAgJ1xcdTJBMjInOiBNTy5CSU40LCAgICAgICAvLyBwbHVzIHNpZ24gd2l0aCBzbWFsbCBjaXJjbGUgYWJvdmVcbiAgICAnXFx1MkEyMyc6IE1PLkJJTjQsICAgICAgIC8vIHBsdXMgc2lnbiB3aXRoIGNpcmN1bWZsZXggYWNjZW50IGFib3ZlXG4gICAgJ1xcdTJBMjQnOiBNTy5CSU40LCAgICAgICAvLyBwbHVzIHNpZ24gd2l0aCB0aWxkZSBhYm92ZVxuICAgICdcXHUyQTI1JzogTU8uQklONCwgICAgICAgLy8gcGx1cyBzaWduIHdpdGggZG90IGJlbG93XG4gICAgJ1xcdTJBMjYnOiBNTy5CSU40LCAgICAgICAvLyBwbHVzIHNpZ24gd2l0aCB0aWxkZSBiZWxvd1xuICAgICdcXHUyQTI3JzogTU8uQklONCwgICAgICAgLy8gcGx1cyBzaWduIHdpdGggc3Vic2NyaXB0IHR3b1xuICAgICdcXHUyQTI4JzogTU8uQklONCwgICAgICAgLy8gcGx1cyBzaWduIHdpdGggYmxhY2sgdHJpYW5nbGVcbiAgICAnXFx1MkEyOSc6IE1PLkJJTjQsICAgICAgIC8vIG1pbnVzIHNpZ24gd2l0aCBjb21tYSBhYm92ZVxuICAgICdcXHUyQTJBJzogTU8uQklONCwgICAgICAgLy8gbWludXMgc2lnbiB3aXRoIGRvdCBiZWxvd1xuICAgICdcXHUyQTJCJzogTU8uQklONCwgICAgICAgLy8gbWludXMgc2lnbiB3aXRoIGZhbGxpbmcgZG90c1xuICAgICdcXHUyQTJDJzogTU8uQklONCwgICAgICAgLy8gbWludXMgc2lnbiB3aXRoIHJpc2luZyBkb3RzXG4gICAgJ1xcdTJBMkQnOiBNTy5CSU40LCAgICAgICAvLyBwbHVzIHNpZ24gaW4gbGVmdCBoYWxmIGNpcmNsZVxuICAgICdcXHUyQTJFJzogTU8uQklONCwgICAgICAgLy8gcGx1cyBzaWduIGluIHJpZ2h0IGhhbGYgY2lyY2xlXG4gICAgJ1xcdTJBMkYnOiBNTy5CSU40LCAgICAgICAvLyB2ZWN0b3Igb3IgY3Jvc3MgcHJvZHVjdFxuICAgICdcXHUyQTMwJzogTU8uQklONCwgICAgICAgLy8gbXVsdGlwbGljYXRpb24gc2lnbiB3aXRoIGRvdCBhYm92ZVxuICAgICdcXHUyQTMxJzogTU8uQklONCwgICAgICAgLy8gbXVsdGlwbGljYXRpb24gc2lnbiB3aXRoIHVuZGVyYmFyXG4gICAgJ1xcdTJBMzInOiBNTy5CSU40LCAgICAgICAvLyBzZW1pZGlyZWN0IHByb2R1Y3Qgd2l0aCBib3R0b20gY2xvc2VkXG4gICAgJ1xcdTJBMzMnOiBNTy5CSU40LCAgICAgICAvLyBzbWFzaCBwcm9kdWN0XG4gICAgJ1xcdTJBMzQnOiBNTy5CSU40LCAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBzaWduIGluIGxlZnQgaGFsZiBjaXJjbGVcbiAgICAnXFx1MkEzNSc6IE1PLkJJTjQsICAgICAgIC8vIG11bHRpcGxpY2F0aW9uIHNpZ24gaW4gcmlnaHQgaGFsZiBjaXJjbGVcbiAgICAnXFx1MkEzNic6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgbXVsdGlwbGljYXRpb24gc2lnbiB3aXRoIGNpcmN1bWZsZXggYWNjZW50XG4gICAgJ1xcdTJBMzcnOiBNTy5CSU40LCAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBzaWduIGluIGRvdWJsZSBjaXJjbGVcbiAgICAnXFx1MkEzOCc6IE1PLkJJTjQsICAgICAgIC8vIGNpcmNsZWQgZGl2aXNpb24gc2lnblxuICAgICdcXHUyQTM5JzogTU8uQklONCwgICAgICAgLy8gcGx1cyBzaWduIGluIHRyaWFuZ2xlXG4gICAgJ1xcdTJBM0EnOiBNTy5CSU40LCAgICAgICAvLyBtaW51cyBzaWduIGluIHRyaWFuZ2xlXG4gICAgJ1xcdTJBM0InOiBNTy5CSU40LCAgICAgICAvLyBtdWx0aXBsaWNhdGlvbiBzaWduIGluIHRyaWFuZ2xlXG4gICAgJ1xcdTJBM0MnOiBNTy5CSU40LCAgICAgICAvLyBpbnRlcmlvciBwcm9kdWN0XG4gICAgJ1xcdTJBM0QnOiBNTy5CSU40LCAgICAgICAvLyByaWdodGhhbmQgaW50ZXJpb3IgcHJvZHVjdFxuICAgICdcXHUyQTNFJzogTU8uQklONCwgICAgICAgLy8geiBub3RhdGlvbiByZWxhdGlvbmFsIGNvbXBvc2l0aW9uXG4gICAgJ1xcdTJBM0YnOiBNTy5CSU40LCAgICAgICAvLyBhbWFsZ2FtYXRpb24gb3IgY29wcm9kdWN0XG4gICAgJ1xcdTJBNDAnOiBNTy5CSU40LCAgICAgICAvLyBpbnRlcnNlY3Rpb24gd2l0aCBkb3RcbiAgICAnXFx1MkE0MSc6IE1PLkJJTjQsICAgICAgIC8vIHVuaW9uIHdpdGggbWludXMgc2lnblxuICAgICdcXHUyQTQyJzogTU8uQklONCwgICAgICAgLy8gdW5pb24gd2l0aCBvdmVyYmFyXG4gICAgJ1xcdTJBNDMnOiBNTy5CSU40LCAgICAgICAvLyBpbnRlcnNlY3Rpb24gd2l0aCBvdmVyYmFyXG4gICAgJ1xcdTJBNDQnOiBNTy5CSU40LCAgICAgICAvLyBpbnRlcnNlY3Rpb24gd2l0aCBsb2dpY2FsIGFuZFxuICAgICdcXHUyQTQ1JzogTU8uQklONCwgICAgICAgLy8gdW5pb24gd2l0aCBsb2dpY2FsIG9yXG4gICAgJ1xcdTJBNDYnOiBNTy5CSU40LCAgICAgICAvLyB1bmlvbiBhYm92ZSBpbnRlcnNlY3Rpb25cbiAgICAnXFx1MkE0Nyc6IE1PLkJJTjQsICAgICAgIC8vIGludGVyc2VjdGlvbiBhYm92ZSB1bmlvblxuICAgICdcXHUyQTQ4JzogTU8uQklONCwgICAgICAgLy8gdW5pb24gYWJvdmUgYmFyIGFib3ZlIGludGVyc2VjdGlvblxuICAgICdcXHUyQTQ5JzogTU8uQklONCwgICAgICAgLy8gaW50ZXJzZWN0aW9uIGFib3ZlIGJhciBhYm92ZSB1bmlvblxuICAgICdcXHUyQTRBJzogTU8uQklONCwgICAgICAgLy8gdW5pb24gYmVzaWRlIGFuZCBqb2luZWQgd2l0aCB1bmlvblxuICAgICdcXHUyQTRCJzogTU8uQklONCwgICAgICAgLy8gaW50ZXJzZWN0aW9uIGJlc2lkZSBhbmQgam9pbmVkIHdpdGggaW50ZXJzZWN0aW9uXG4gICAgJ1xcdTJBNEMnOiBNTy5CSU40LCAgICAgICAvLyBjbG9zZWQgdW5pb24gd2l0aCBzZXJpZnNcbiAgICAnXFx1MkE0RCc6IE1PLkJJTjQsICAgICAgIC8vIGNsb3NlZCBpbnRlcnNlY3Rpb24gd2l0aCBzZXJpZnNcbiAgICAnXFx1MkE0RSc6IE1PLkJJTjQsICAgICAgIC8vIGRvdWJsZSBzcXVhcmUgaW50ZXJzZWN0aW9uXG4gICAgJ1xcdTJBNEYnOiBNTy5CSU40LCAgICAgICAvLyBkb3VibGUgc3F1YXJlIHVuaW9uXG4gICAgJ1xcdTJBNTAnOiBNTy5CSU40LCAgICAgICAvLyBjbG9zZWQgdW5pb24gd2l0aCBzZXJpZnMgYW5kIHNtYXNoIHByb2R1Y3RcbiAgICAnXFx1MkE1MSc6IE1PLkJJTjQsICAgICAgIC8vIGxvZ2ljYWwgYW5kIHdpdGggZG90IGFib3ZlXG4gICAgJ1xcdTJBNTInOiBNTy5CSU40LCAgICAgICAvLyBsb2dpY2FsIG9yIHdpdGggZG90IGFib3ZlXG4gICAgJ1xcdTJBNTMnOiBNTy5CSU40LCAgICAgICAvLyBkb3VibGUgbG9naWNhbCBhbmRcbiAgICAnXFx1MkE1NCc6IE1PLkJJTjQsICAgICAgIC8vIGRvdWJsZSBsb2dpY2FsIG9yXG4gICAgJ1xcdTJBNTUnOiBNTy5CSU40LCAgICAgICAvLyB0d28gaW50ZXJzZWN0aW5nIGxvZ2ljYWwgYW5kXG4gICAgJ1xcdTJBNTYnOiBNTy5CSU40LCAgICAgICAvLyB0d28gaW50ZXJzZWN0aW5nIGxvZ2ljYWwgb3JcbiAgICAnXFx1MkE1Nyc6IE1PLkJJTjQsICAgICAgIC8vIHNsb3BpbmcgbGFyZ2Ugb3JcbiAgICAnXFx1MkE1OCc6IE1PLkJJTjQsICAgICAgIC8vIHNsb3BpbmcgbGFyZ2UgYW5kXG4gICAgJ1xcdTJBNTknOiBNTy5SRUwsICAgICAgICAvLyBsb2dpY2FsIG9yIG92ZXJsYXBwaW5nIGxvZ2ljYWwgYW5kXG4gICAgJ1xcdTJBNUEnOiBNTy5CSU40LCAgICAgICAvLyBsb2dpY2FsIGFuZCB3aXRoIG1pZGRsZSBzdGVtXG4gICAgJ1xcdTJBNUInOiBNTy5CSU40LCAgICAgICAvLyBsb2dpY2FsIG9yIHdpdGggbWlkZGxlIHN0ZW1cbiAgICAnXFx1MkE1Qyc6IE1PLkJJTjQsICAgICAgIC8vIGxvZ2ljYWwgYW5kIHdpdGggaG9yaXpvbnRhbCBkYXNoXG4gICAgJ1xcdTJBNUQnOiBNTy5CSU40LCAgICAgICAvLyBsb2dpY2FsIG9yIHdpdGggaG9yaXpvbnRhbCBkYXNoXG4gICAgJ1xcdTJBNUUnOiBNTy5CSU40LCAgICAgICAvLyBsb2dpY2FsIGFuZCB3aXRoIGRvdWJsZSBvdmVyYmFyXG4gICAgJ1xcdTJBNUYnOiBNTy5CSU40LCAgICAgICAvLyBsb2dpY2FsIGFuZCB3aXRoIHVuZGVyYmFyXG4gICAgJ1xcdTJBNjAnOiBNTy5CSU40LCAgICAgICAvLyBsb2dpY2FsIGFuZCB3aXRoIGRvdWJsZSB1bmRlcmJhclxuICAgICdcXHUyQTYxJzogTU8uQklONCwgICAgICAgLy8gc21hbGwgdmVlIHdpdGggdW5kZXJiYXJcbiAgICAnXFx1MkE2Mic6IE1PLkJJTjQsICAgICAgIC8vIGxvZ2ljYWwgb3Igd2l0aCBkb3VibGUgb3ZlcmJhclxuICAgICdcXHUyQTYzJzogTU8uQklONCwgICAgICAgLy8gbG9naWNhbCBvciB3aXRoIGRvdWJsZSB1bmRlcmJhclxuICAgICdcXHUyQTY0JzogTU8uQklONCwgICAgICAgLy8geiBub3RhdGlvbiBkb21haW4gYW50aXJlc3RyaWN0aW9uXG4gICAgJ1xcdTJBNjUnOiBNTy5CSU40LCAgICAgICAvLyB6IG5vdGF0aW9uIHJhbmdlIGFudGlyZXN0cmljdGlvblxuICAgICdcXHUyQTY2JzogTU8uUkVMLCAgICAgICAgLy8gZXF1YWxzIHNpZ24gd2l0aCBkb3QgYmVsb3dcbiAgICAnXFx1MkE2Nyc6IE1PLlJFTCwgICAgICAgIC8vIGlkZW50aWNhbCB3aXRoIGRvdCBhYm92ZVxuICAgICdcXHUyQTY4JzogTU8uUkVMLCAgICAgICAgLy8gdHJpcGxlIGhvcml6b250YWwgYmFyIHdpdGggZG91YmxlIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyQTY5JzogTU8uUkVMLCAgICAgICAgLy8gdHJpcGxlIGhvcml6b250YWwgYmFyIHdpdGggdHJpcGxlIHZlcnRpY2FsIHN0cm9rZVxuICAgICdcXHUyQTZBJzogTU8uUkVMLCAgICAgICAgLy8gdGlsZGUgb3BlcmF0b3Igd2l0aCBkb3QgYWJvdmVcbiAgICAnXFx1MkE2Qic6IE1PLlJFTCwgICAgICAgIC8vIHRpbGRlIG9wZXJhdG9yIHdpdGggcmlzaW5nIGRvdHNcbiAgICAnXFx1MkE2Qyc6IE1PLlJFTCwgICAgICAgIC8vIHNpbWlsYXIgbWludXMgc2ltaWxhclxuICAgICdcXHUyQTZEJzogTU8uUkVMLCAgICAgICAgLy8gY29uZ3J1ZW50IHdpdGggZG90IGFib3ZlXG4gICAgJ1xcdTJBNkUnOiBNTy5SRUwsICAgICAgICAvLyBlcXVhbHMgd2l0aCBhc3Rlcmlza1xuICAgICdcXHUyQTZGJzogTU8uUkVMLCAgICAgICAgLy8gYWxtb3N0IGVxdWFsIHRvIHdpdGggY2lyY3VtZmxleCBhY2NlbnRcbiAgICAnXFx1MkE3MCc6IE1PLlJFTCwgICAgICAgIC8vIGFwcHJveGltYXRlbHkgZXF1YWwgb3IgZXF1YWwgdG9cbiAgICAnXFx1MkE3MSc6IE1PLkJJTjQsICAgICAgIC8vIGVxdWFscyBzaWduIGFib3ZlIHBsdXMgc2lnblxuICAgICdcXHUyQTcyJzogTU8uQklONCwgICAgICAgLy8gcGx1cyBzaWduIGFib3ZlIGVxdWFscyBzaWduXG4gICAgJ1xcdTJBNzMnOiBNTy5SRUwsICAgICAgICAvLyBlcXVhbHMgc2lnbiBhYm92ZSB0aWxkZSBvcGVyYXRvclxuICAgICdcXHUyQTc0JzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIGNvbG9uIGVxdWFsXG4gICAgJ1xcdTJBNzUnOiBNTy5SRUwsICAgICAgICAvLyB0d28gY29uc2VjdXRpdmUgZXF1YWxzIHNpZ25zXG4gICAgJ1xcdTJBNzYnOiBNTy5SRUwsICAgICAgICAvLyB0aHJlZSBjb25zZWN1dGl2ZSBlcXVhbHMgc2lnbnNcbiAgICAnXFx1MkE3Nyc6IE1PLlJFTCwgICAgICAgIC8vIGVxdWFscyBzaWduIHdpdGggdHdvIGRvdHMgYWJvdmUgYW5kIHR3byBkb3RzIGJlbG93XG4gICAgJ1xcdTJBNzgnOiBNTy5SRUwsICAgICAgICAvLyBlcXVpdmFsZW50IHdpdGggZm91ciBkb3RzIGFib3ZlXG4gICAgJ1xcdTJBNzknOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gd2l0aCBjaXJjbGUgaW5zaWRlXG4gICAgJ1xcdTJBN0EnOiBNTy5SRUwsICAgICAgICAvLyBncmVhdGVyLXRoYW4gd2l0aCBjaXJjbGUgaW5zaWRlXG4gICAgJ1xcdTJBN0InOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gd2l0aCBxdWVzdGlvbiBtYXJrIGFib3ZlXG4gICAgJ1xcdTJBN0MnOiBNTy5SRUwsICAgICAgICAvLyBncmVhdGVyLXRoYW4gd2l0aCBxdWVzdGlvbiBtYXJrIGFib3ZlXG4gICAgJ1xcdTJBN0QnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gb3Igc2xhbnRlZCBlcXVhbCB0b1xuICAgICdcXHUyQTdEXFx1MDMzOCc6IE1PLlJFTCwgIC8vIGxlc3MtdGhhbiBvciBzbGFudGVkIGVxdWFsIHRvIHdpdGggc2xhc2hcbiAgICAnXFx1MkE3RSc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBvciBzbGFudGVkIGVxdWFsIHRvXG4gICAgJ1xcdTJBN0VcXHUwMzM4JzogTU8uUkVMLCAgLy8gZ3JlYXRlci10aGFuIG9yIHNsYW50ZWQgZXF1YWwgdG8gd2l0aCBzbGFzaFxuICAgICdcXHUyQTdGJzogTU8uUkVMLCAgICAgICAgLy8gbGVzcy10aGFuIG9yIHNsYW50ZWQgZXF1YWwgdG8gd2l0aCBkb3QgaW5zaWRlXG4gICAgJ1xcdTJBODAnOiBNTy5SRUwsICAgICAgICAvLyBncmVhdGVyLXRoYW4gb3Igc2xhbnRlZCBlcXVhbCB0byB3aXRoIGRvdCBpbnNpZGVcbiAgICAnXFx1MkE4MSc6IE1PLlJFTCwgICAgICAgIC8vIGxlc3MtdGhhbiBvciBzbGFudGVkIGVxdWFsIHRvIHdpdGggZG90IGFib3ZlXG4gICAgJ1xcdTJBODInOiBNTy5SRUwsICAgICAgICAvLyBncmVhdGVyLXRoYW4gb3Igc2xhbnRlZCBlcXVhbCB0byB3aXRoIGRvdCBhYm92ZVxuICAgICdcXHUyQTgzJzogTU8uUkVMLCAgICAgICAgLy8gbGVzcy10aGFuIG9yIHNsYW50ZWQgZXF1YWwgdG8gd2l0aCBkb3QgYWJvdmUgcmlnaHRcbiAgICAnXFx1MkE4NCc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBvciBzbGFudGVkIGVxdWFsIHRvIHdpdGggZG90IGFib3ZlIGxlZnRcbiAgICAnXFx1MkE4NSc6IE1PLlJFTCwgICAgICAgIC8vIGxlc3MtdGhhbiBvciBhcHByb3hpbWF0ZVxuICAgICdcXHUyQTg2JzogTU8uUkVMLCAgICAgICAgLy8gZ3JlYXRlci10aGFuIG9yIGFwcHJveGltYXRlXG4gICAgJ1xcdTJBODcnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gYW5kIHNpbmdsZS1saW5lIG5vdCBlcXVhbCB0b1xuICAgICdcXHUyQTg4JzogTU8uUkVMLCAgICAgICAgLy8gZ3JlYXRlci10aGFuIGFuZCBzaW5nbGUtbGluZSBub3QgZXF1YWwgdG9cbiAgICAnXFx1MkE4OSc6IE1PLlJFTCwgICAgICAgIC8vIGxlc3MtdGhhbiBhbmQgbm90IGFwcHJveGltYXRlXG4gICAgJ1xcdTJBOEEnOiBNTy5SRUwsICAgICAgICAvLyBncmVhdGVyLXRoYW4gYW5kIG5vdCBhcHByb3hpbWF0ZVxuICAgICdcXHUyQThCJzogTU8uUkVMLCAgICAgICAgLy8gbGVzcy10aGFuIGFib3ZlIGRvdWJsZS1saW5lIGVxdWFsIGFib3ZlIGdyZWF0ZXItdGhhblxuICAgICdcXHUyQThDJzogTU8uUkVMLCAgICAgICAgLy8gZ3JlYXRlci10aGFuIGFib3ZlIGRvdWJsZS1saW5lIGVxdWFsIGFib3ZlIGxlc3MtdGhhblxuICAgICdcXHUyQThEJzogTU8uUkVMLCAgICAgICAgLy8gbGVzcy10aGFuIGFib3ZlIHNpbWlsYXIgb3IgZXF1YWxcbiAgICAnXFx1MkE4RSc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBhYm92ZSBzaW1pbGFyIG9yIGVxdWFsXG4gICAgJ1xcdTJBOEYnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gYWJvdmUgc2ltaWxhciBhYm92ZSBncmVhdGVyLXRoYW5cbiAgICAnXFx1MkE5MCc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBhYm92ZSBzaW1pbGFyIGFib3ZlIGxlc3MtdGhhblxuICAgICdcXHUyQTkxJzogTU8uUkVMLCAgICAgICAgLy8gbGVzcy10aGFuIGFib3ZlIGdyZWF0ZXItdGhhbiBhYm92ZSBkb3VibGUtbGluZSBlcXVhbFxuICAgICdcXHUyQTkyJzogTU8uUkVMLCAgICAgICAgLy8gZ3JlYXRlci10aGFuIGFib3ZlIGxlc3MtdGhhbiBhYm92ZSBkb3VibGUtbGluZSBlcXVhbFxuICAgICdcXHUyQTkzJzogTU8uUkVMLCAgICAgICAgLy8gbGVzcy10aGFuIGFib3ZlIHNsYW50ZWQgZXF1YWwgYWJvdmUgZ3JlYXRlci10aGFuIGFib3ZlIHNsYW50ZWQgZXF1YWxcbiAgICAnXFx1MkE5NCc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBhYm92ZSBzbGFudGVkIGVxdWFsIGFib3ZlIGxlc3MtdGhhbiBhYm92ZSBzbGFudGVkIGVxdWFsXG4gICAgJ1xcdTJBOTUnOiBNTy5SRUwsICAgICAgICAvLyBzbGFudGVkIGVxdWFsIHRvIG9yIGxlc3MtdGhhblxuICAgICdcXHUyQTk2JzogTU8uUkVMLCAgICAgICAgLy8gc2xhbnRlZCBlcXVhbCB0byBvciBncmVhdGVyLXRoYW5cbiAgICAnXFx1MkE5Nyc6IE1PLlJFTCwgICAgICAgIC8vIHNsYW50ZWQgZXF1YWwgdG8gb3IgbGVzcy10aGFuIHdpdGggZG90IGluc2lkZVxuICAgICdcXHUyQTk4JzogTU8uUkVMLCAgICAgICAgLy8gc2xhbnRlZCBlcXVhbCB0byBvciBncmVhdGVyLXRoYW4gd2l0aCBkb3QgaW5zaWRlXG4gICAgJ1xcdTJBOTknOiBNTy5SRUwsICAgICAgICAvLyBkb3VibGUtbGluZSBlcXVhbCB0byBvciBsZXNzLXRoYW5cbiAgICAnXFx1MkE5QSc6IE1PLlJFTCwgICAgICAgIC8vIGRvdWJsZS1saW5lIGVxdWFsIHRvIG9yIGdyZWF0ZXItdGhhblxuICAgICdcXHUyQTlCJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlLWxpbmUgc2xhbnRlZCBlcXVhbCB0byBvciBsZXNzLXRoYW5cbiAgICAnXFx1MkE5Qyc6IE1PLlJFTCwgICAgICAgIC8vIGRvdWJsZS1saW5lIHNsYW50ZWQgZXF1YWwgdG8gb3IgZ3JlYXRlci10aGFuXG4gICAgJ1xcdTJBOUQnOiBNTy5SRUwsICAgICAgICAvLyBzaW1pbGFyIG9yIGxlc3MtdGhhblxuICAgICdcXHUyQTlFJzogTU8uUkVMLCAgICAgICAgLy8gc2ltaWxhciBvciBncmVhdGVyLXRoYW5cbiAgICAnXFx1MkE5Ric6IE1PLlJFTCwgICAgICAgIC8vIHNpbWlsYXIgYWJvdmUgbGVzcy10aGFuIGFib3ZlIGVxdWFscyBzaWduXG4gICAgJ1xcdTJBQTAnOiBNTy5SRUwsICAgICAgICAvLyBzaW1pbGFyIGFib3ZlIGdyZWF0ZXItdGhhbiBhYm92ZSBlcXVhbHMgc2lnblxuICAgICdcXHUyQUExJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIG5lc3RlZCBsZXNzLXRoYW5cbiAgICAnXFx1MkFBMVxcdTAzMzgnOiBNTy5SRUwsICAvLyBkb3VibGUgbmVzdGVkIGxlc3MtdGhhbiB3aXRoIHNsYXNoXG4gICAgJ1xcdTJBQTInOiBNTy5SRUwsICAgICAgICAvLyBkb3VibGUgbmVzdGVkIGdyZWF0ZXItdGhhblxuICAgICdcXHUyQUEyXFx1MDMzOCc6IE1PLlJFTCwgIC8vIGRvdWJsZSBuZXN0ZWQgZ3JlYXRlci10aGFuIHdpdGggc2xhc2hcbiAgICAnXFx1MkFBMyc6IE1PLlJFTCwgICAgICAgIC8vIGRvdWJsZSBuZXN0ZWQgbGVzcy10aGFuIHdpdGggdW5kZXJiYXJcbiAgICAnXFx1MkFBNCc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBvdmVybGFwcGluZyBsZXNzLXRoYW5cbiAgICAnXFx1MkFBNSc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBiZXNpZGUgbGVzcy10aGFuXG4gICAgJ1xcdTJBQTYnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gY2xvc2VkIGJ5IGN1cnZlXG4gICAgJ1xcdTJBQTcnOiBNTy5SRUwsICAgICAgICAvLyBncmVhdGVyLXRoYW4gY2xvc2VkIGJ5IGN1cnZlXG4gICAgJ1xcdTJBQTgnOiBNTy5SRUwsICAgICAgICAvLyBsZXNzLXRoYW4gY2xvc2VkIGJ5IGN1cnZlIGFib3ZlIHNsYW50ZWQgZXF1YWxcbiAgICAnXFx1MkFBOSc6IE1PLlJFTCwgICAgICAgIC8vIGdyZWF0ZXItdGhhbiBjbG9zZWQgYnkgY3VydmUgYWJvdmUgc2xhbnRlZCBlcXVhbFxuICAgICdcXHUyQUFBJzogTU8uUkVMLCAgICAgICAgLy8gc21hbGxlciB0aGFuXG4gICAgJ1xcdTJBQUInOiBNTy5SRUwsICAgICAgICAvLyBsYXJnZXIgdGhhblxuICAgICdcXHUyQUFDJzogTU8uUkVMLCAgICAgICAgLy8gc21hbGxlciB0aGFuIG9yIGVxdWFsIHRvXG4gICAgJ1xcdTJBQUQnOiBNTy5SRUwsICAgICAgICAvLyBsYXJnZXIgdGhhbiBvciBlcXVhbCB0b1xuICAgICdcXHUyQUFFJzogTU8uUkVMLCAgICAgICAgLy8gZXF1YWxzIHNpZ24gd2l0aCBidW1weSBhYm92ZVxuICAgICdcXHUyQUFGJzogTU8uUkVMLCAgICAgICAgLy8gcHJlY2VkZXMgYWJvdmUgc2luZ2xlLWxpbmUgZXF1YWxzIHNpZ25cbiAgICAnXFx1MkFBRlxcdTAzMzgnOiBNTy5SRUwsICAvLyBwcmVjZWRlcyBhYm92ZSBzaW5nbGUtbGluZSBlcXVhbHMgc2lnbiB3aXRoIHNsYXNoXG4gICAgJ1xcdTJBQjAnOiBNTy5SRUwsICAgICAgICAvLyBzdWNjZWVkcyBhYm92ZSBzaW5nbGUtbGluZSBlcXVhbHMgc2lnblxuICAgICdcXHUyQUIwXFx1MDMzOCc6IE1PLlJFTCwgIC8vIHN1Y2NlZWRzIGFib3ZlIHNpbmdsZS1saW5lIGVxdWFscyBzaWduIHdpdGggc2xhc2hcbiAgICAnXFx1MkFCMSc6IE1PLlJFTCwgICAgICAgIC8vIHByZWNlZGVzIGFib3ZlIHNpbmdsZS1saW5lIG5vdCBlcXVhbCB0b1xuICAgICdcXHUyQUIyJzogTU8uUkVMLCAgICAgICAgLy8gc3VjY2VlZHMgYWJvdmUgc2luZ2xlLWxpbmUgbm90IGVxdWFsIHRvXG4gICAgJ1xcdTJBQjMnOiBNTy5SRUwsICAgICAgICAvLyBwcmVjZWRlcyBhYm92ZSBlcXVhbHMgc2lnblxuICAgICdcXHUyQUI0JzogTU8uUkVMLCAgICAgICAgLy8gc3VjY2VlZHMgYWJvdmUgZXF1YWxzIHNpZ25cbiAgICAnXFx1MkFCNSc6IE1PLlJFTCwgICAgICAgIC8vIHByZWNlZGVzIGFib3ZlIG5vdCBlcXVhbCB0b1xuICAgICdcXHUyQUI2JzogTU8uUkVMLCAgICAgICAgLy8gc3VjY2VlZHMgYWJvdmUgbm90IGVxdWFsIHRvXG4gICAgJ1xcdTJBQjcnOiBNTy5SRUwsICAgICAgICAvLyBwcmVjZWRlcyBhYm92ZSBhbG1vc3QgZXF1YWwgdG9cbiAgICAnXFx1MkFCOCc6IE1PLlJFTCwgICAgICAgIC8vIHN1Y2NlZWRzIGFib3ZlIGFsbW9zdCBlcXVhbCB0b1xuICAgICdcXHUyQUI5JzogTU8uUkVMLCAgICAgICAgLy8gcHJlY2VkZXMgYWJvdmUgbm90IGFsbW9zdCBlcXVhbCB0b1xuICAgICdcXHUyQUJBJzogTU8uUkVMLCAgICAgICAgLy8gc3VjY2VlZHMgYWJvdmUgbm90IGFsbW9zdCBlcXVhbCB0b1xuICAgICdcXHUyQUJCJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIHByZWNlZGVzXG4gICAgJ1xcdTJBQkMnOiBNTy5SRUwsICAgICAgICAvLyBkb3VibGUgc3VjY2VlZHNcbiAgICAnXFx1MkFCRCc6IE1PLlJFTCwgICAgICAgIC8vIHN1YnNldCB3aXRoIGRvdFxuICAgICdcXHUyQUJFJzogTU8uUkVMLCAgICAgICAgLy8gc3VwZXJzZXQgd2l0aCBkb3RcbiAgICAnXFx1MkFCRic6IE1PLlJFTCwgICAgICAgIC8vIHN1YnNldCB3aXRoIHBsdXMgc2lnbiBiZWxvd1xuICAgICdcXHUyQUMwJzogTU8uUkVMLCAgICAgICAgLy8gc3VwZXJzZXQgd2l0aCBwbHVzIHNpZ24gYmVsb3dcbiAgICAnXFx1MkFDMSc6IE1PLlJFTCwgICAgICAgIC8vIHN1YnNldCB3aXRoIG11bHRpcGxpY2F0aW9uIHNpZ24gYmVsb3dcbiAgICAnXFx1MkFDMic6IE1PLlJFTCwgICAgICAgIC8vIHN1cGVyc2V0IHdpdGggbXVsdGlwbGljYXRpb24gc2lnbiBiZWxvd1xuICAgICdcXHUyQUMzJzogTU8uUkVMLCAgICAgICAgLy8gc3Vic2V0IG9mIG9yIGVxdWFsIHRvIHdpdGggZG90IGFib3ZlXG4gICAgJ1xcdTJBQzQnOiBNTy5SRUwsICAgICAgICAvLyBzdXBlcnNldCBvZiBvciBlcXVhbCB0byB3aXRoIGRvdCBhYm92ZVxuICAgICdcXHUyQUM1JzogTU8uUkVMLCAgICAgICAgLy8gc3Vic2V0IG9mIGFib3ZlIGVxdWFscyBzaWduXG4gICAgJ1xcdTJBQzYnOiBNTy5SRUwsICAgICAgICAvLyBzdXBlcnNldCBvZiBhYm92ZSBlcXVhbHMgc2lnblxuICAgICdcXHUyQUM3JzogTU8uUkVMLCAgICAgICAgLy8gc3Vic2V0IG9mIGFib3ZlIHRpbGRlIG9wZXJhdG9yXG4gICAgJ1xcdTJBQzgnOiBNTy5SRUwsICAgICAgICAvLyBzdXBlcnNldCBvZiBhYm92ZSB0aWxkZSBvcGVyYXRvclxuICAgICdcXHUyQUM5JzogTU8uUkVMLCAgICAgICAgLy8gc3Vic2V0IG9mIGFib3ZlIGFsbW9zdCBlcXVhbCB0b1xuICAgICdcXHUyQUNBJzogTU8uUkVMLCAgICAgICAgLy8gc3VwZXJzZXQgb2YgYWJvdmUgYWxtb3N0IGVxdWFsIHRvXG4gICAgJ1xcdTJBQ0InOiBNTy5SRUwsICAgICAgICAvLyBzdWJzZXQgb2YgYWJvdmUgbm90IGVxdWFsIHRvXG4gICAgJ1xcdTJBQ0MnOiBNTy5SRUwsICAgICAgICAvLyBzdXBlcnNldCBvZiBhYm92ZSBub3QgZXF1YWwgdG9cbiAgICAnXFx1MkFDRCc6IE1PLlJFTCwgICAgICAgIC8vIHNxdWFyZSBsZWZ0IG9wZW4gYm94IG9wZXJhdG9yXG4gICAgJ1xcdTJBQ0UnOiBNTy5SRUwsICAgICAgICAvLyBzcXVhcmUgcmlnaHQgb3BlbiBib3ggb3BlcmF0b3JcbiAgICAnXFx1MkFDRic6IE1PLlJFTCwgICAgICAgIC8vIGNsb3NlZCBzdWJzZXRcbiAgICAnXFx1MkFEMCc6IE1PLlJFTCwgICAgICAgIC8vIGNsb3NlZCBzdXBlcnNldFxuICAgICdcXHUyQUQxJzogTU8uUkVMLCAgICAgICAgLy8gY2xvc2VkIHN1YnNldCBvciBlcXVhbCB0b1xuICAgICdcXHUyQUQyJzogTU8uUkVMLCAgICAgICAgLy8gY2xvc2VkIHN1cGVyc2V0IG9yIGVxdWFsIHRvXG4gICAgJ1xcdTJBRDMnOiBNTy5SRUwsICAgICAgICAvLyBzdWJzZXQgYWJvdmUgc3VwZXJzZXRcbiAgICAnXFx1MkFENCc6IE1PLlJFTCwgICAgICAgIC8vIHN1cGVyc2V0IGFib3ZlIHN1YnNldFxuICAgICdcXHUyQUQ1JzogTU8uUkVMLCAgICAgICAgLy8gc3Vic2V0IGFib3ZlIHN1YnNldFxuICAgICdcXHUyQUQ2JzogTU8uUkVMLCAgICAgICAgLy8gc3VwZXJzZXQgYWJvdmUgc3VwZXJzZXRcbiAgICAnXFx1MkFENyc6IE1PLlJFTCwgICAgICAgIC8vIHN1cGVyc2V0IGJlc2lkZSBzdWJzZXRcbiAgICAnXFx1MkFEOCc6IE1PLlJFTCwgICAgICAgIC8vIHN1cGVyc2V0IGJlc2lkZSBhbmQgam9pbmVkIGJ5IGRhc2ggd2l0aCBzdWJzZXRcbiAgICAnXFx1MkFEOSc6IE1PLlJFTCwgICAgICAgIC8vIGVsZW1lbnQgb2Ygb3BlbmluZyBkb3dud2FyZHNcbiAgICAnXFx1MkFEQSc6IE1PLlJFTCwgICAgICAgIC8vIHBpdGNoZm9yayB3aXRoIHRlZSB0b3BcbiAgICAnXFx1MkFEQic6IE1PLlJFTCwgICAgICAgIC8vIHRyYW5zdmVyc2FsIGludGVyc2VjdGlvblxuICAgICdcXHUyQUREJzogTU8uUkVMLCAgICAgICAgLy8gbm9uZm9ya2luZ1xuICAgICdcXHUyQUREXFx1MDMzOCc6IE1PLlJFTCwgIC8vIG5vbmZvcmtpbmcgd2l0aCBzbGFzaFxuICAgICdcXHUyQURFJzogTU8uUkVMLCAgICAgICAgLy8gc2hvcnQgbGVmdCB0YWNrXG4gICAgJ1xcdTJBREYnOiBNTy5SRUwsICAgICAgICAvLyBzaG9ydCBkb3duIHRhY2tcbiAgICAnXFx1MkFFMCc6IE1PLlJFTCwgICAgICAgIC8vIHNob3J0IHVwIHRhY2tcbiAgICAnXFx1MkFFMSc6IE1PLlJFTCwgICAgICAgIC8vIHBlcnBlbmRpY3VsYXIgd2l0aCBzXG4gICAgJ1xcdTJBRTInOiBNTy5SRUwsICAgICAgICAvLyB2ZXJ0aWNhbCBiYXIgdHJpcGxlIHJpZ2h0IHR1cm5zdGlsZVxuICAgICdcXHUyQUUzJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIHZlcnRpY2FsIGJhciBsZWZ0IHR1cm5zdGlsZVxuICAgICdcXHUyQUU0JzogTU8uUkVMLCAgICAgICAgLy8gdmVydGljYWwgYmFyIGRvdWJsZSBsZWZ0IHR1cm5zdGlsZVxuICAgICdcXHUyQUU1JzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIHZlcnRpY2FsIGJhciBkb3VibGUgbGVmdCB0dXJuc3RpbGVcbiAgICAnXFx1MkFFNic6IE1PLlJFTCwgICAgICAgIC8vIGxvbmcgZGFzaCBmcm9tIGxlZnQgbWVtYmVyIG9mIGRvdWJsZSB2ZXJ0aWNhbFxuICAgICdcXHUyQUU3JzogTU8uUkVMLCAgICAgICAgLy8gc2hvcnQgZG93biB0YWNrIHdpdGggb3ZlcmJhclxuICAgICdcXHUyQUU4JzogTU8uUkVMLCAgICAgICAgLy8gc2hvcnQgdXAgdGFjayB3aXRoIHVuZGVyYmFyXG4gICAgJ1xcdTJBRTknOiBNTy5SRUwsICAgICAgICAvLyBzaG9ydCB1cCB0YWNrIGFib3ZlIHNob3J0IGRvd24gdGFja1xuICAgICdcXHUyQUVBJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIGRvd24gdGFja1xuICAgICdcXHUyQUVCJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlIHVwIHRhY2tcbiAgICAnXFx1MkFFQyc6IE1PLlJFTCwgICAgICAgIC8vIGRvdWJsZSBzdHJva2Ugbm90IHNpZ25cbiAgICAnXFx1MkFFRCc6IE1PLlJFTCwgICAgICAgIC8vIHJldmVyc2VkIGRvdWJsZSBzdHJva2Ugbm90IHNpZ25cbiAgICAnXFx1MkFFRSc6IE1PLlJFTCwgICAgICAgIC8vIGRvZXMgbm90IGRpdmlkZSB3aXRoIHJldmVyc2VkIG5lZ2F0aW9uIHNsYXNoXG4gICAgJ1xcdTJBRUYnOiBNTy5SRUwsICAgICAgICAvLyB2ZXJ0aWNhbCBsaW5lIHdpdGggY2lyY2xlIGFib3ZlXG4gICAgJ1xcdTJBRjAnOiBNTy5SRUwsICAgICAgICAvLyB2ZXJ0aWNhbCBsaW5lIHdpdGggY2lyY2xlIGJlbG93XG4gICAgJ1xcdTJBRjEnOiBNTy5SRUwsICAgICAgICAvLyBkb3duIHRhY2sgd2l0aCBjaXJjbGUgYmVsb3dcbiAgICAnXFx1MkFGMic6IE1PLlJFTCwgICAgICAgIC8vIHBhcmFsbGVsIHdpdGggaG9yaXpvbnRhbCBzdHJva2VcbiAgICAnXFx1MkFGMyc6IE1PLlJFTCwgICAgICAgIC8vIHBhcmFsbGVsIHdpdGggdGlsZGUgb3BlcmF0b3JcbiAgICAnXFx1MkFGNCc6IE1PLkJJTjQsICAgICAgIC8vIHRyaXBsZSB2ZXJ0aWNhbCBiYXIgYmluYXJ5IHJlbGF0aW9uXG4gICAgJ1xcdTJBRjUnOiBNTy5CSU40LCAgICAgICAvLyB0cmlwbGUgdmVydGljYWwgYmFyIHdpdGggaG9yaXpvbnRhbCBzdHJva2VcbiAgICAnXFx1MkFGNic6IE1PLkJJTjQsICAgICAgIC8vIHRyaXBsZSBjb2xvbiBvcGVyYXRvclxuICAgICdcXHUyQUY3JzogTU8uUkVMLCAgICAgICAgLy8gdHJpcGxlIG5lc3RlZCBsZXNzLXRoYW5cbiAgICAnXFx1MkFGOCc6IE1PLlJFTCwgICAgICAgIC8vIHRyaXBsZSBuZXN0ZWQgZ3JlYXRlci10aGFuXG4gICAgJ1xcdTJBRjknOiBNTy5SRUwsICAgICAgICAvLyBkb3VibGUtbGluZSBzbGFudGVkIGxlc3MtdGhhbiBvciBlcXVhbCB0b1xuICAgICdcXHUyQUZBJzogTU8uUkVMLCAgICAgICAgLy8gZG91YmxlLWxpbmUgc2xhbnRlZCBncmVhdGVyLXRoYW4gb3IgZXF1YWwgdG9cbiAgICAnXFx1MkFGQic6IE1PLkJJTjQsICAgICAgIC8vIHRyaXBsZSBzb2xpZHVzIGJpbmFyeSByZWxhdGlvblxuICAgICdcXHUyQUZEJzogTU8uQklONCwgICAgICAgLy8gZG91YmxlIHNvbGlkdXMgb3BlcmF0b3JcbiAgICAnXFx1MkFGRSc6IE1PLkJJTjMsICAgICAgIC8vIHdoaXRlIHZlcnRpY2FsIGJhclxuICAgICdcXHUyQjQ1JzogTU8uUkVMU1RSRVRDSCwgLy8gbGVmdHdhcmRzIHF1YWRydXBsZSBhcnJvd1xuICAgICdcXHUyQjQ2JzogTU8uUkVMU1RSRVRDSCwgLy8gcmlnaHR3YXJkcyBxdWFkcnVwbGUgYXJyb3dcbiAgICAnXFx1MzAwOCc6IE1PLk9QRU4sICAgICAgIC8vIGxhbmdsZVxuICAgICdcXHUzMDA5JzogTU8uQ0xPU0UsICAgICAgLy8gcmFuZ2xlXG4gICAgJ1xcdUZFMzcnOiBNTy5XSURFQUNDRU5ULCAvLyBob3Jpem9udGFsIGJyYWNlIGRvd25cbiAgICAnXFx1RkUzOCc6IE1PLldJREVBQ0NFTlQsIC8vIGhvcml6b250YWwgYnJhY2UgdXBcbiAgfVxufTtcblxuLy9cbi8vICBUaGVzZSBhcmUgbm90IGluIHRoZSBXM0MgdGFibGUsIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIFxcd2lkZWhhdCBhbmQgXFx1bmRlcmxpbmVcbi8vXG5PUFRBQkxFLmluZml4WydeJ10gPSBNTy5XSURFUkVMO1xuT1BUQUJMRS5pbmZpeFsnXyddID0gTU8uV0lERVJFTDtcblxuLy9cbi8vICBSZW1vdmUgZnJvbSBBcHBlbmRpeCBDLCBidXQgcGVyaGFwcyB0aGF0IHdhcyBhIG1pc3Rha2U/XG4vL1xuT1BUQUJMRS5pbmZpeFsnXFx1MkFEQyddID0gTU8uUkVMO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNbyBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QWJzdHJhY3RNbWxUb2tlbk5vZGUsIE1tbE5vZGUsIEF0dHJpYnV0ZUxpc3QsIFRFWENMQVNTfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcbmltcG9ydCB7TW1sTXJvd30gZnJvbSAnLi9tcm93LmpzJztcbmltcG9ydCB7TW1sTW92ZXIsIE1tbE11bmRlciwgTW1sTXVuZGVyb3Zlcn0gZnJvbSAnLi9tdW5kZXJvdmVyLmpzJztcbmltcG9ydCB7T3BlcmF0b3JMaXN0LCBPUFRBQkxFLCBnZXRSYW5nZSwgTU1MU1BBQ0lOR30gZnJvbSAnLi4vT3BlcmF0b3JEaWN0aW9uYXJ5LmpzJztcbmltcG9ydCB7dW5pY29kZUNoYXJzLCB1bmljb2RlU3RyaW5nfSBmcm9tICcuLi8uLi8uLi91dGlsL3N0cmluZy5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1vIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sVG9rZW5Ob2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNbyBleHRlbmRzIEFic3RyYWN0TW1sVG9rZW5Ob2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxUb2tlbk5vZGUuZGVmYXVsdHMsXG4gICAgZm9ybTogJ2luZml4JyxcbiAgICBmZW5jZTogZmFsc2UsXG4gICAgc2VwYXJhdG9yOiBmYWxzZSxcbiAgICBsc3BhY2U6ICd0aGlja21hdGhzcGFjZScsXG4gICAgcnNwYWNlOiAndGhpY2ttYXRoc3BhY2UnLFxuICAgIHN0cmV0Y2h5OiBmYWxzZSxcbiAgICBzeW1tZXRyaWM6IGZhbHNlLFxuICAgIG1heHNpemU6ICdpbmZpbml0eScsXG4gICAgbWluc2l6ZTogJzBlbScsIC8vIE1hdGhNTCBzYXlzICcxZW0nLCBidXQgdGhhdCBpcyBsYXJnZXIgdGhhbiBzb21lIG5hdHVyYWwgc2l6ZXNcbiAgICBsYXJnZW9wOiBmYWxzZSxcbiAgICBtb3ZhYmxlbGltaXRzOiBmYWxzZSxcbiAgICBhY2NlbnQ6IGZhbHNlLFxuICAgIGxpbmVicmVhazogJ2F1dG8nLFxuICAgIGxpbmVsZWFkaW5nOiAnMWV4JyxcbiAgICBsaW5lYnJlYWtzdHlsZTogJ2JlZm9yZScsXG4gICAgaW5kZW50YWxpZ246ICdhdXRvJyxcbiAgICBpbmRlbnRzaGlmdDogJzAnLFxuICAgIGluZGVudHRhcmdldDogJycsXG4gICAgaW5kZW50YWxpZ25maXJzdDogJ2luZGVudGFsaWduJyxcbiAgICBpbmRlbnRzaGlmdGZpcnN0OiAnaW5kZW50c2hpZnQnLFxuICAgIGluZGVudGFsaWdubGFzdDogJ2luZGVudGFsaWduJyxcbiAgICBpbmRlbnRzaGlmdGxhc3Q6ICdpbmRlbnRzaGlmdCdcbiAgfTtcblxuICAvKipcbiAgICogVGhlIE1hdGhNTCBzcGFjaW5nIHZhbHVlcyBmb3IgdGhlIFRlWCBjbGFzc2VzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE1NTFNQQUNJTkcgPSBNTUxTUEFDSU5HO1xuXG4gIC8qKlxuICAgKiBUaGUgT3BlcmF0b3IgRGljdGlvbmFyeVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBPUFRBQkxFOiB7W2Zvcm06IHN0cmluZ106IE9wZXJhdG9yTGlzdH0gPSBPUFRBQkxFO1xuXG4gIC8qKlxuICAgKiBQYXR0ZXJuIGZvciBtYXRjaGluZyB3aGVuIHRoZSBjb250ZW50cyBpcyBvbmUgb3JlIG1vcmUgcHNldWRvc2NyaXB0c1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwc2V1ZG9TY3JpcHRzID0gbmV3IFJlZ0V4cChbXG4gICAgJ15bXCJcXCcqYCcsXG4gICAgJ1xcdTAwQUEnLCAgICAgICAgICAgICAgIC8vIEZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SXG4gICAgJ1xcdTAwQjAnLCAgICAgICAgICAgICAgIC8vIERFR1JFRSBTSUdOXG4gICAgJ1xcdTAwQjItXFx1MDBCNCcsICAgICAgICAvLyBTVVBFUlNDUklQVCAyIGFuZCAzLCBBQ1VURSBBQ0NFTlRcbiAgICAnXFx1MDBCOScsICAgICAgICAgICAgICAgLy8gU1VQRVJTQ1JJUFQgT05FXG4gICAgJ1xcdTAwQkEnLCAgICAgICAgICAgICAgIC8vIE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUlxuICAgICdcXHUyMDE4LVxcdTIwMUYnLCAgICAgICAgLy8gVmFyaW91cyBkb3VibGUgYW5kIHNpbmdsZSBxdW90YXRpb24gbWFya3MgKHVwIGFuZCBkb3duKVxuICAgICdcXHUyMDMyLVxcdTIwMzdcXHUyMDU3JywgIC8vIFByaW1lcyBhbmQgcmV2ZXJzZWQgcHJpbWVzIChmb3J3YXJkIGFuZCByZXZlcnNlZClcbiAgICAnXFx1MjA3MFxcdTIwNzEnLCAgICAgICAgIC8vIFNVUEVSU0NSSVBUIDAgYW5kIGlcbiAgICAnXFx1MjA3NC1cXHUyMDdGJywgICAgICAgIC8vIFNVUEVSQ1JJUFQgNCB0aHJvdWdoIDksIC0sID0sICgsICksIGFuZCBuXG4gICAgJ1xcdTIwODAtXFx1MjA4RScsICAgICAgICAvLyBTVUJTQ1JJUFQgMCB0aHJvdWdoIDksIC0sID0sICgsICkuXG4gICAgJ10rJCdcbiAgXS5qb2luKCcnKSk7XG5cbiAgLyoqXG4gICAqIFBhdHRlcm4gZm9yIHdoZW4gY29udGVudHMgaXMgYSBjb2xsZWN0aW9uIG9mIHByaW1lc1xuICAgKi9cbiAgIHByb3RlY3RlZCBzdGF0aWMgcHJpbWVzID0gbmV3IFJlZ0V4cChbXG4gICAgICdeW1wiXFwnYCcsXG4gICAgICdcXHUyMDE4LVxcdTIwMUYnLCAgICAgICAgLy8gVmFyaW91cyBkb3VibGUgYW5kIHNpbmdsZSBxdW90YXRpb24gbWFya3MgKHVwIGFuZCBkb3duKVxuICAgICAnXSskJ1xuICAgXS5qb2luKCcnKSk7XG5cbiAgIC8qKlxuICAgICogRGVmYXVsdCBtYXAgZm9yIHJlbWFwcGluZyBwcmltZSBjaGFyYWN0ZXJzXG4gICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyByZW1hcFByaW1lczoge1tuOiBudW1iZXJdOiBudW1iZXJ9ID0ge1xuICAgICAweDAwMjI6IDB4MjAzMywgICAvLyBkb3VibGUgcXVvdGVzXG4gICAgIDB4MDAyNzogMHgyMDMyLCAgIC8vIHNpbmdsZSBxdW90ZVxuICAgICAweDAwNjA6IDB4MjAzNSwgICAvLyBiYWNrIHF1b3RlXG4gICAgIDB4MjAxODogMHgyMDM1LCAgIC8vIG9wZW4gc2luZ2xlIHF1b3RlXG4gICAgIDB4MjAxOTogMHgyMDMyLCAgIC8vIGNsb3NlIHNpbmdsZSBxdW90ZVxuICAgICAweDIwMUE6IDB4MjAzMiwgICAvLyBsb3cgb3BlbiBzaW5nbGUgcXVvdGVcbiAgICAgMHgyMDFCOiAweDIwMzUsICAgLy8gcmV2ZXJzZWQgb3BlbiBzaW5nbGUgcXVvdGVcbiAgICAgMHgyMDFDOiAweDIwMzYsICAgLy8gb3BlbiBkb3VibGUgcXVvdGVcbiAgICAgMHgyMDFEOiAweDIwMzMsICAgLy8gY2xvc2UgZG91YmxlIHF1b3RlXG4gICAgIDB4MjAxRTogMHgyMDMzLCAgIC8vIGxvdyBvcGVuIGRvdWJsZSBxdW90ZVxuICAgICAweDIwMUY6IDB4MjAzNiwgICAvLyByZXZlcnNlZCBvcGVuIGRvdWJsZSBxdW90ZVxuICB9O1xuXG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hpbmcgY2hhcmFjdGVycyB0aGF0IGFyZSBtYXJrZWQgYXMgbWF0aCBhY2NlbnRzXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIG1hdGhhY2NlbnRzID0gbmV3IFJlZ0V4cChbXG4gICAgJ15bJyxcbiAgICAnXFx1MDBCNFxcdTAzMDFcXHUwMkNBJywgIC8vIGFjdXRlXG4gICAgJ1xcdTAwNjBcXHUwMzAwXFx1MDJDQicsICAvLyBncmF2ZVxuICAgICdcXHUwMEE4XFx1MDMwOCcsICAgICAgICAvLyBkZG90XG4gICAgJ1xcdTAwN0VcXHUwMzAzXFx1MDJEQycsICAvLyB0aWxkZVxuICAgICdcXHUwMEFGXFx1MDMwNFxcdTAyQzknLCAgLy8gYmFyXG4gICAgJ1xcdTAyRDhcXHUwMzA2JywgICAgICAgIC8vIGJyZXZlXG4gICAgJ1xcdTAyQzdcXHUwMzBDJywgICAgICAgIC8vIGNoZWNrXG4gICAgJ1xcdTAwNUVcXHUwMzAyXFx1MDJDNicsICAvLyBoYXRcbiAgICAnXFx1MjE5MlxcdTIwRDcnLCAgICAgICAgLy8gdmVjXG4gICAgJ1xcdTAyRDlcXHUwMzA3JywgICAgICAgIC8vIGRvdFxuICAgICdcXHUwMkRBXFx1MDMwQScsICAgICAgICAvLyBtYXRocmluZ1xuICAgICdcXHUyMERCJywgICAgICAgICAgICAgIC8vIGRkZG90XG4gICAgJ1xcdTIwREMnLCAgICAgICAgICAgICAgLy8gZGRkZG90XG4gICAgJ10kJ1xuICBdLmpvaW4oJycpKTtcblxuICAvKipcbiAgICogVGhlIGludGVybmFsIFRlWCBjbGFzcyBvZiB0aGUgbm9kZSAoZm9yIHVzZSB3aXRoIGdldHRlci9zZXR0ZXIgYmVsb3cpXG4gICAqL1xuICBwdWJsaWMgX3RleENsYXNzOiBudW1iZXIgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBVc2UgYSBnZXR0ZXIgdG8gbG9vayB1cCB0aGUgVGVYIGNsYXNzIGZyb20gdGhlIG9wZXJhdG9yIHRhYmxlIGlmIGl0IGhhc24ndFxuICAgKiBiZWVuIHNldCB5ZXQgKGJ1dCBkb24ndCBzYXZlIGl0IGluIGNhc2UgdGhlIGZvcm0gY2hhbmdlcyB3aGVuIGl0IGlzIGluIGl0c1xuICAgKiBsb2NhdGlvbikuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRleENsYXNzKCkge1xuICAgIGlmICh0aGlzLl90ZXhDbGFzcyA9PT0gbnVsbCkge1xuICAgICAgbGV0IG1vID0gdGhpcy5nZXRUZXh0KCk7XG4gICAgICBsZXQgW2Zvcm0xLCBmb3JtMiwgZm9ybTNdID0gdGhpcy5oYW5kbGVFeHBsaWNpdEZvcm0odGhpcy5nZXRGb3JtcygpKTtcbiAgICAgIGxldCBPUFRBQkxFID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIE1tbE1vKS5PUFRBQkxFO1xuICAgICAgbGV0IGRlZiA9IE9QVEFCTEVbZm9ybTFdW21vXSB8fCBPUFRBQkxFW2Zvcm0yXVttb10gfHwgT1BUQUJMRVtmb3JtM11bbW9dO1xuICAgICAgcmV0dXJuIGRlZiA/IGRlZlsyXSA6IFRFWENMQVNTLlJFTDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3RleENsYXNzO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZSBhIHNldHRlciB0byBzdG9yZSB0aGUgYWN0dWFsIHZhbHVlIGluIF90ZXhDbGFzcztcbiAgICovXG4gIHB1YmxpYyBzZXQgdGV4Q2xhc3ModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3RleENsYXNzID0gdmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgTWF0aE1MIHNwYWNpbmcgb24gdGhlIGxlZnRcbiAgICovXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp3aGl0ZXNwYWNlICovXG4gIHB1YmxpYyBsc3BhY2UgPSA1LzE4O1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBNYXRoTUwgc3BhY2luZyBvbiB0aGUgcmlnaHRcbiAgICovXG4gIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTp3aGl0ZXNwYWNlICovXG4gIHB1YmxpYyByc3BhY2UgPSA1LzE4O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21vJztcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgPG1vPiBhcmUgY29uc2lkZXJlZCBlbWJlbGxpc2hlZFxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNFbWJlbGxpc2hlZCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgSXMgPG1vPiBtYXJrZWQgYXMgYW4gZXhwbGljaXQgbGluZWJyZWFrP1xuICAgKi9cbiAgcHVibGljIGdldCBoYXNOZXdMaW5lKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmF0dHJpYnV0ZXMuZ2V0KCdsaW5lYnJlYWsnKSA9PT0gJ25ld2xpbmUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge01tbE5vZGV9ICBUaGUgbm9kZSB0aGF0IGlzIHRoZSBvdXRlcm1vc3QgZW1iZWxsaXNoZWQgb3BlcmF0b3JcbiAgICogICAgICAgICAgICAgICAgICAgIHdpdGggdGhpcyBub2RlIGFzIGl0cyBjb3JlXG4gICAqL1xuICBwdWJsaWMgY29yZVBhcmVudCgpOiBNbWxOb2RlIHtcbiAgICBsZXQgZW1iZWxsaXNoZWQgPSB0aGlzIGFzIE1tbE5vZGU7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMgYXMgTW1sTm9kZTtcbiAgICBsZXQgbWF0aCA9IHRoaXMuZmFjdG9yeS5nZXROb2RlQ2xhc3MoJ21hdGgnKTtcbiAgICB3aGlsZSAocGFyZW50ICYmIHBhcmVudC5pc0VtYmVsbGlzaGVkICYmIHBhcmVudC5jb3JlTU8oKSA9PT0gdGhpcyAmJiAhKHBhcmVudCBpbnN0YW5jZW9mIG1hdGgpKSB7XG4gICAgICBlbWJlbGxpc2hlZCA9IHBhcmVudDtcbiAgICAgIHBhcmVudCA9IChwYXJlbnQgYXMgTW1sTm9kZSkucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gZW1iZWxsaXNoZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBwYXJlbnQgIFRoZSBub2RlIHdob3NlIGNvcmUgdGV4dCBpcyB0byBiZSBvYnRhaW5lZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgVGhlIHRleHQgb2YgdGhlIGNvcmUgTU8gb2YgdGhlIGdpdmVuIHBhcmVudCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgY29yZVRleHQocGFyZW50OiBNbWxOb2RlKTogc3RyaW5nIHtcbiAgICBpZiAoIXBhcmVudCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBpZiAocGFyZW50LmlzRW1iZWxsaXNoZWQpIHtcbiAgICAgIHJldHVybiAocGFyZW50LmNvcmVNTygpIGFzIE1tbE1vKS5nZXRUZXh0KCk7XG4gICAgfVxuICAgIHdoaWxlICgoKChwYXJlbnQuaXNLaW5kKCdtcm93JykgfHxcbiAgICAgICAgICAgICAgKHBhcmVudC5pc0tpbmQoJ1RlWEF0b20nKSAmJiBwYXJlbnQudGV4Q2xhc3MgIT09IFRFWENMQVNTLlZDRU5URVIpIHx8XG4gICAgICAgICAgICAgIHBhcmVudC5pc0tpbmQoJ21zdHlsZScpIHx8XG4gICAgICAgICAgICAgIHBhcmVudC5pc0tpbmQoJ21waGFudG9tJykpICYmIHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSkgfHxcbiAgICAgICAgICAgIHBhcmVudC5pc0tpbmQoJ211bmRlcm92ZXInKSkgJiYgcGFyZW50LmNoaWxkTm9kZXNbMF0pIHtcbiAgICAgIHBhcmVudCA9IHBhcmVudC5jaGlsZE5vZGVzWzBdIGFzIE1tbE5vZGU7XG4gICAgfVxuICAgIHJldHVybiAocGFyZW50LmlzVG9rZW4gPyAocGFyZW50IGFzIEFic3RyYWN0TW1sVG9rZW5Ob2RlKS5nZXRUZXh0KCkgOiAnJyk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaGFzU3BhY2luZ0F0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXR0cmlidXRlcy5pc1NldCgnbHNwYWNlJykgfHxcbiAgICAgIHRoaXMuYXR0cmlidXRlcy5pc1NldCgncnNwYWNlJyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIFRydWUgaXMgdGhpcyBtbyBpcyBhbiBhY2NlbnQgaW4gYW4gbXVuZGVyb3ZlciBjb25zdHJ1Y3Rpb25cbiAgICovXG4gIGdldCBpc0FjY2VudCgpOiBib29sZWFuIHtcbiAgICBsZXQgYWNjZW50ID0gZmFsc2U7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuY29yZVBhcmVudCgpLnBhcmVudDtcbiAgICBpZiAobm9kZSkge1xuICAgICAgY29uc3Qga2V5ID0gKG5vZGUuaXNLaW5kKCdtb3ZlcicpID9cbiAgICAgICAgICAgICAgICAgICAoKG5vZGUuY2hpbGROb2Rlc1sobm9kZSBhcyBNbWxNb3Zlcikub3Zlcl0gYXMgTW1sTm9kZSkuY29yZU1PKCkgP1xuICAgICAgICAgICAgICAgICAgICAnYWNjZW50JyA6ICcnKSA6XG4gICAgICAgICAgICAgICAgICAgbm9kZS5pc0tpbmQoJ211bmRlcicpID9cbiAgICAgICAgICAgICAgICAgICAoKG5vZGUuY2hpbGROb2Rlc1sobm9kZSBhcyBNbWxNdW5kZXIpLnVuZGVyXSBhcyBNbWxOb2RlKS5jb3JlTU8oKSA/XG4gICAgICAgICAgICAgICAgICAgICdhY2NlbnR1bmRlcicgOiAnJykgOlxuICAgICAgICAgICAgICAgICAgIG5vZGUuaXNLaW5kKCdtdW5kZXJvdmVyJykgP1xuICAgICAgICAgICAgICAgICAgICh0aGlzID09PSAobm9kZS5jaGlsZE5vZGVzWyhub2RlIGFzIE1tbE11bmRlcm92ZXIpLm92ZXJdIGFzIE1tbE5vZGUpLmNvcmVNTygpID9cbiAgICAgICAgICAgICAgICAgICAgJ2FjY2VudCcgOlxuICAgICAgICAgICAgICAgICAgICB0aGlzID09PSAobm9kZS5jaGlsZE5vZGVzWyhub2RlIGFzIE1tbE11bmRlcm92ZXIpLnVuZGVyXSBhcyBNbWxOb2RlKS5jb3JlTU8oKSA/XG4gICAgICAgICAgICAgICAgICAgICdhY2NlbnR1bmRlcicgOiAnJykgOlxuICAgICAgICAgICAgICAgICAgICcnKTtcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBub2RlLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoa2V5KTtcbiAgICAgICAgYWNjZW50ID0gKHZhbHVlICE9PSB1bmRlZmluZWQgPyBhY2NlbnQgOiB0aGlzLmF0dHJpYnV0ZXMuZ2V0KCdhY2NlbnQnKSkgYXMgYm9vbGVhbjtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFjY2VudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9kdWNlIHRoZSB0ZXhDbGFzcyBiYXNlZCBvbiB0aGUgb3BlcmF0b3IgZGljdGlvbmFyeSB2YWx1ZXNcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0VGVYY2xhc3MocHJldjogTW1sTm9kZSk6IE1tbE5vZGUge1xuICAgIGxldCB7Zm9ybSwgZmVuY2V9ID0gdGhpcy5hdHRyaWJ1dGVzLmdldExpc3QoJ2Zvcm0nLCAnZmVuY2UnKSBhcyB7Zm9ybTogc3RyaW5nLCBmZW5jZTogc3RyaW5nfTtcbiAgICBpZiAodGhpcy5nZXRQcm9wZXJ0eSgndGV4Q2xhc3MnKSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICh0aGlzLmF0dHJpYnV0ZXMuaXNTZXQoJ2xzcGFjZScpIHx8IHRoaXMuYXR0cmlidXRlcy5pc1NldCgncnNwYWNlJykpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKGZlbmNlICYmIHRoaXMudGV4Q2xhc3MgPT09IFRFWENMQVNTLlJFTCkge1xuICAgICAgaWYgKGZvcm0gPT09ICdwcmVmaXgnKSB7XG4gICAgICAgIHRoaXMudGV4Q2xhc3MgPSBURVhDTEFTUy5PUEVOO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm0gPT09ICdwb3N0Zml4Jykge1xuICAgICAgICB0aGlzLnRleENsYXNzID0gVEVYQ0xBU1MuQ0xPU0U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFkanVzdFRlWGNsYXNzKHByZXYpO1xuICB9XG4gIC8qKlxuICAgKiBGb2xsb3cgdGhlIFRlWEJvb2sgcnVsZXMgZm9yIGFkanVzdGluZyB0aGUgVGVYIGNsYXNzIG9uY2UgaXRzIG5laWdoYm9ycyBhcmUga25vd25cbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBwcmV2ICBUaGUgbm9kZSBhcHBlYXJpbmcgYmVmb3JlIHRoaXMgb25lIGluIHRoZSBvdXRwdXRcbiAgICogQHJldHVybiB7TW1sTm9kZX0gICAgICBUaGUgbGFzdCBub2RlIGRpc3BsYXllZCAodGhpcyBub2RlKVxuICAgKi9cbiAgcHVibGljIGFkanVzdFRlWGNsYXNzKHByZXY6IE1tbE5vZGUpOiBNbWxOb2RlIHtcbiAgICBsZXQgdGV4Q2xhc3MgPSB0aGlzLnRleENsYXNzO1xuICAgIGxldCBwcmV2Q2xhc3MgPSB0aGlzLnByZXZDbGFzcztcbiAgICBpZiAodGV4Q2xhc3MgPT09IFRFWENMQVNTLk5PTkUpIHtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH1cbiAgICBpZiAocHJldikge1xuICAgICAgaWYgKHByZXYuZ2V0UHJvcGVydHkoJ2F1dG9PUCcpICYmICh0ZXhDbGFzcyA9PT0gVEVYQ0xBU1MuQklOIHx8IHRleENsYXNzID09PSBURVhDTEFTUy5SRUwpKSB7XG4gICAgICAgIHByZXZDbGFzcyA9IHByZXYudGV4Q2xhc3MgPSBURVhDTEFTUy5PUkQ7XG4gICAgICB9XG4gICAgICBwcmV2Q2xhc3MgPSB0aGlzLnByZXZDbGFzcyA9IChwcmV2LnRleENsYXNzIHx8IFRFWENMQVNTLk9SRCk7XG4gICAgICB0aGlzLnByZXZMZXZlbCA9IHRoaXMuYXR0cmlidXRlcy5nZXRJbmhlcml0ZWQoJ3NjcmlwdGxldmVsJykgYXMgbnVtYmVyO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmV2Q2xhc3MgPSB0aGlzLnByZXZDbGFzcyA9IFRFWENMQVNTLk5PTkU7XG4gICAgfVxuICAgIGlmICh0ZXhDbGFzcyA9PT0gVEVYQ0xBU1MuQklOICYmXG4gICAgICAgIChwcmV2Q2xhc3MgPT09IFRFWENMQVNTLk5PTkUgfHwgcHJldkNsYXNzID09PSBURVhDTEFTUy5CSU4gfHwgcHJldkNsYXNzID09PSBURVhDTEFTUy5PUCB8fFxuICAgICAgICAgcHJldkNsYXNzID09PSBURVhDTEFTUy5SRUwgfHwgcHJldkNsYXNzID09PSBURVhDTEFTUy5PUEVOIHx8IHByZXZDbGFzcyA9PT0gVEVYQ0xBU1MuUFVOQ1QpKSB7XG4gICAgICB0aGlzLnRleENsYXNzID0gVEVYQ0xBU1MuT1JEO1xuICAgIH0gZWxzZSBpZiAocHJldkNsYXNzID09PSBURVhDTEFTUy5CSU4gJiZcbiAgICAgICAgICAgICAgICh0ZXhDbGFzcyA9PT0gVEVYQ0xBU1MuUkVMIHx8IHRleENsYXNzID09PSBURVhDTEFTUy5DTE9TRSB8fCB0ZXhDbGFzcyA9PT0gVEVYQ0xBU1MuUFVOQ1QpKSB7XG4gICAgICBwcmV2LnRleENsYXNzID0gdGhpcy5wcmV2Q2xhc3MgPSBURVhDTEFTUy5PUkQ7XG4gICAgfSBlbHNlIGlmICh0ZXhDbGFzcyA9PT0gVEVYQ0xBU1MuQklOKSB7XG4gICAgICAvL1xuICAgICAgLy8gQ2hlY2sgaWYgbm9kZSBpcyB0aGUgbGFzdCBvbmUgaW4gaXRzIGNvbnRhaW5lciBzaW5jZSB0aGUgcnVsZVxuICAgICAgLy8gYWJvdmUgb25seSB0YWtlcyBlZmZlY3QgaWYgdGhlcmUgaXMgYSBub2RlIHRoYXQgZm9sbG93cy5cbiAgICAgIC8vXG4gICAgICBsZXQgY2hpbGQ6IE1tbE5vZGUgPSB0aGlzO1xuICAgICAgbGV0IHBhcmVudCA9IHRoaXMucGFyZW50O1xuICAgICAgd2hpbGUgKHBhcmVudCAmJiBwYXJlbnQucGFyZW50ICYmIHBhcmVudC5pc0VtYmVsbGlzaGVkICYmXG4gICAgICAgICAgICAgKHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSB8fFxuICAgICAgICAgICAgICAoIXBhcmVudC5pc0tpbmQoJ21yb3cnKSAmJiBwYXJlbnQuY29yZSgpID09PSBjaGlsZCkpKSB7XG4gICAgICAgIGNoaWxkID0gcGFyZW50O1xuICAgICAgICBwYXJlbnQgPSBwYXJlbnQucGFyZW50O1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudC5jaGlsZE5vZGVzW3BhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCAtIDFdID09PSBjaGlsZCkge1xuICAgICAgICB0aGlzLnRleENsYXNzID0gVEVYQ0xBU1MuT1JEO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBEbyB0aGUgbm9ybWFsIGluaGVyaXRhbmNlLCB0aGVuIGxvb2sgdXAgdGhlIGF0dHJpYnV0ZXMgZnJvbSB0aGUgb3BlcmF0b3IgZGljdGlvbmFyeS5cbiAgICogSWYgdGhlcmUgaXMgbm8gZGljdGlvbmFyeSBlbnRyeSwgZ2V0IHRoZSBUZVggY2xhc3MgZnJvbSB0aGUgVW5pY29kZSByYW5nZSBsaXN0LlxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZUxpc3QgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYm9vbGVhbiA9IGZhbHNlLCBsZXZlbDogbnVtYmVyID0gMCwgcHJpbWU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIHN1cGVyLnNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgZGlzcGxheSwgbGV2ZWwsIHByaW1lKTtcbiAgICBsZXQgbW8gPSB0aGlzLmdldFRleHQoKTtcbiAgICB0aGlzLmNoZWNrT3BlcmF0b3JUYWJsZShtbyk7XG4gICAgdGhpcy5jaGVja1BzZXVkb1NjcmlwdHMobW8pO1xuICAgIHRoaXMuY2hlY2tQcmltZXMobW8pO1xuICAgIHRoaXMuY2hlY2tNYXRoQWNjZW50KG1vKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGF0dHJpYnV0ZXMgZnJvbSB0aGUgb3BlcmF0b3IgdGFibGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vICAgVGhlIHRlc3Qgb2YgdGhlIG1vIGVsZW1lbnRcbiAgICovXG4gIHByb3RlY3RlZCBjaGVja09wZXJhdG9yVGFibGUobW86IHN0cmluZykge1xuICAgIGxldCBbZm9ybTEsIGZvcm0yLCBmb3JtM10gPSB0aGlzLmhhbmRsZUV4cGxpY2l0Rm9ybSh0aGlzLmdldEZvcm1zKCkpO1xuICAgIHRoaXMuYXR0cmlidXRlcy5zZXRJbmhlcml0ZWQoJ2Zvcm0nLCBmb3JtMSk7XG4gICAgbGV0IE9QVEFCTEUgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgTW1sTW8pLk9QVEFCTEU7XG4gICAgbGV0IGRlZiA9IE9QVEFCTEVbZm9ybTFdW21vXSB8fCBPUFRBQkxFW2Zvcm0yXVttb10gfHwgT1BUQUJMRVtmb3JtM11bbW9dO1xuICAgIGlmIChkZWYpIHtcbiAgICAgIGlmICh0aGlzLmdldFByb3BlcnR5KCd0ZXhDbGFzcycpID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy50ZXhDbGFzcyA9IGRlZlsyXTtcbiAgICAgIH1cbiAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyhkZWZbM10gfHwge30pKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlcy5zZXRJbmhlcml0ZWQobmFtZSwgZGVmWzNdW25hbWVdKTtcbiAgICAgIH1cbiAgICAgIHRoaXMubHNwYWNlID0gKGRlZlswXSArIDEpIC8gMTg7XG4gICAgICB0aGlzLnJzcGFjZSA9IChkZWZbMV0gKyAxKSAvIDE4O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcmFuZ2UgPSBnZXRSYW5nZShtbyk7XG4gICAgICBpZiAocmFuZ2UpIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0UHJvcGVydHkoJ3RleENsYXNzJykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHRoaXMudGV4Q2xhc3MgPSByYW5nZVsyXTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzcGFjaW5nID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIE1tbE1vKS5NTUxTUEFDSU5HW3JhbmdlWzJdXTtcbiAgICAgICAgdGhpcy5sc3BhY2UgPSAoc3BhY2luZ1swXSArIDEpIC8gMTg7XG4gICAgICAgIHRoaXMucnNwYWNlID0gKHNwYWNpbmdbMV0gKyAxKSAvIDE4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ119ICBUaGUgbGlzdCBvZiBmb3JtIGF0dHJpYnV0ZSB2YWx1ZXMgaW4gdGhlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyIHRoZXkgc2hvdWxkIGJlIHRlc3RlZCwgYmFzZWQgb24gdGhlXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uIG9mIHRoZSBlbGVtZW50IGluIGl0cyBwYXJlbnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0Rm9ybXMoKTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddIHtcbiAgICBsZXQgY29yZTogTW1sTm9kZSA9IHRoaXM7XG4gICAgbGV0IHBhcmVudCA9IHRoaXMucGFyZW50O1xuICAgIGxldCBQYXJlbnQgPSB0aGlzLlBhcmVudDtcbiAgICB3aGlsZSAoUGFyZW50ICYmIFBhcmVudC5pc0VtYmVsbGlzaGVkKSB7XG4gICAgICBjb3JlID0gcGFyZW50O1xuICAgICAgcGFyZW50ID0gUGFyZW50LnBhcmVudDtcbiAgICAgIFBhcmVudCA9IFBhcmVudC5QYXJlbnQ7XG4gICAgfVxuICAgIGlmIChwYXJlbnQgJiYgcGFyZW50LmlzS2luZCgnbXJvdycpICYmIChwYXJlbnQgYXMgTW1sTXJvdykubm9uU3BhY2VMZW5ndGgoKSAhPT0gMSkge1xuICAgICAgaWYgKChwYXJlbnQgYXMgTW1sTXJvdykuZmlyc3ROb25TcGFjZSgpID09PSBjb3JlKSB7XG4gICAgICAgIHJldHVybiBbJ3ByZWZpeCcsICdpbmZpeCcsICdwb3N0Zml4J107XG4gICAgICB9XG4gICAgICBpZiAoKHBhcmVudCBhcyBNbWxNcm93KS5sYXN0Tm9uU3BhY2UoKSA9PT0gY29yZSkge1xuICAgICAgICByZXR1cm4gWydwb3N0Zml4JywgJ2luZml4JywgJ3ByZWZpeCddO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gWydpbmZpeCcsICdwcmVmaXgnLCAncG9zdGZpeCddO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGZvcm1zICAgICBUaGUgdGhyZWUgZm9ybXMgaW4gdGhlIGRlZmF1bHQgb3JkZXIgdGhleSBhcmUgdG8gYmUgdGVzdGVkXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgICAgICAgICBUaGUgZm9ybXMgaW4gdGhlIG5ldyBvcmRlciwgaWYgdGhlcmUgaXMgYW4gZXhwbGljaXQgZm9ybSBhdHRyaWJ1dGVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVFeHBsaWNpdEZvcm0oZm9ybXM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGlmICh0aGlzLmF0dHJpYnV0ZXMuaXNTZXQoJ2Zvcm0nKSkge1xuICAgICAgY29uc3QgZm9ybSA9IHRoaXMuYXR0cmlidXRlcy5nZXQoJ2Zvcm0nKSBhcyBzdHJpbmc7XG4gICAgICBmb3JtcyA9IFtmb3JtXS5jb25jYXQoZm9ybXMuZmlsdGVyKG5hbWUgPT4gKG5hbWUgIT09IGZvcm0pKSk7XG4gICAgfVxuICAgIHJldHVybiBmb3JtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXJrIHRoZSBtbyBhcyBhIHBzZXVkb3NjcmlwdCBpZiBpdCBpcyBvbmUuICBUcnVlIG1lYW5zIGl0IGlzLFxuICAgKiAgIGZhbHNlIG1lYW5zIGl0IGlzIGEgcHNldWRvLXNjcmlwdCBjaGFyYWN0ZXIsIGJ1dCBpbiBhbiBtc3VwIChzbyBuZWVkcyBhIHZhcmlhbnQgZm9ybSlcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vICAgVGhlIHRlc3Qgb2YgdGhlIG1vIGVsZW1lbnRcbiAgICovXG4gIHByb3RlY3RlZCBjaGVja1BzZXVkb1NjcmlwdHMobW86IHN0cmluZykge1xuICAgIGNvbnN0IFBTRVVET1NDUklQVFMgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgTW1sTW8pLnBzZXVkb1NjcmlwdHM7XG4gICAgaWYgKCFtby5tYXRjaChQU0VVRE9TQ1JJUFRTKSkgcmV0dXJuO1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMuY29yZVBhcmVudCgpLlBhcmVudDtcbiAgICBjb25zdCBpc1BzZXVkbyA9ICFwYXJlbnQgfHwgIShwYXJlbnQuaXNLaW5kKCdtc3Vic3VwJykgJiYgIXBhcmVudC5pc0tpbmQoJ21zdWInKSk7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eSgncHNldWRvc2NyaXB0JywgaXNQc2V1ZG8pO1xuICAgIGlmIChpc1BzZXVkbykge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzLnNldEluaGVyaXRlZCgnbHNwYWNlJywgMCk7XG4gICAgICB0aGlzLmF0dHJpYnV0ZXMuc2V0SW5oZXJpdGVkKCdyc3BhY2UnLCAwKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIG1vIGNvbnNpc3RzIG9mIHByaW1lcywgYW5kIHJlbWFwIHRoZW0gaWYgc28uXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtbyAgIFRoZSB0ZXN0IG9mIHRoZSBtbyBlbGVtZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2tQcmltZXMobW86IHN0cmluZykge1xuICAgIGNvbnN0IFBSSU1FUyA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBNbWxNbykucHJpbWVzO1xuICAgIGlmICghbW8ubWF0Y2goUFJJTUVTKSkgcmV0dXJuO1xuICAgIGNvbnN0IFJFTUFQID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIE1tbE1vKS5yZW1hcFByaW1lcztcbiAgICBjb25zdCBwcmltZXMgPSB1bmljb2RlU3RyaW5nKHVuaWNvZGVDaGFycyhtbykubWFwKGMgPT4gUkVNQVBbY10pKTtcbiAgICB0aGlzLnNldFByb3BlcnR5KCdwcmltZXMnLCBwcmltZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGV0aGVyIHRoZSBtbyBpcyBhIG1hdGhhY2NlbnQgY2hhcmFjdGVyXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtbyAgIFRoZSB0ZXN0IG9mIHRoZSBtbyBlbGVtZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2tNYXRoQWNjZW50KG1vOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwYXJlbnQgPSB0aGlzLlBhcmVudDtcbiAgICBpZiAodGhpcy5nZXRQcm9wZXJ0eSgnbWF0aGFjY2VudCcpICE9PSB1bmRlZmluZWQgfHwgIXBhcmVudCB8fCAhcGFyZW50LmlzS2luZCgnbXVuZGVyb3ZlcicpKSByZXR1cm47XG4gICAgY29uc3QgYmFzZSA9IHBhcmVudC5jaGlsZE5vZGVzWzBdIGFzIE1tbE5vZGU7XG4gICAgaWYgKGJhc2UuaXNFbWJlbGxpc2hlZCAmJiBiYXNlLmNvcmVNTygpID09PSB0aGlzKSByZXR1cm47XG4gICAgY29uc3QgTUFUSEFDQ0VOVCA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBNbWxNbykubWF0aGFjY2VudHM7XG4gICAgaWYgKG1vLm1hdGNoKE1BVEhBQ0NFTlQpKSB7XG4gICAgICB0aGlzLnNldFByb3BlcnR5KCdtYXRoYWNjZW50JywgdHJ1ZSk7XG4gICAgfVxuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMDktMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE5vZGUgdXRpbGl0eSBtZXRob2RzLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7VGV4dE5vZGUsIE1NTE5PREUsIE1tbE5vZGUsIEFic3RyYWN0TW1sTm9kZSwgQWJzdHJhY3RNbWxFbXB0eU5vZGV9IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7TW1sTW99IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tby5qcyc7XG5pbXBvcnQge1Byb3BlcnR5LCBQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL2NvcmUvVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QXJnc30gZnJvbSAnLi9UeXBlcy5qcyc7XG5pbXBvcnQge09wZXJhdG9yRGVmfSBmcm9tICcuLi8uLi9jb3JlL01tbFRyZWUvT3BlcmF0b3JEaWN0aW9uYXJ5LmpzJztcblxuXG5uYW1lc3BhY2UgTm9kZVV0aWwge1xuXG4gIGNvbnN0IGF0dHJzOiBNYXA8U3RyaW5nLCBib29sZWFuPiA9IG5ldyBNYXAoW1xuICAgIFsnYXV0b09QJywgdHJ1ZV0sXG4gICAgWydmbk9QJywgdHJ1ZV0sXG4gICAgWydtb3Zlc3Vwc3ViJywgdHJ1ZV0sXG4gICAgWydzdWJzdXBPSycsIHRydWVdLFxuICAgIFsndGV4cHJpbWVzdHlsZScsIHRydWVdLFxuICAgIFsndXNlSGVpZ2h0JywgdHJ1ZV0sXG4gICAgWyd2YXJpYW50Rm9ybScsIHRydWVdLFxuICAgIFsnd2l0aERlbGltcycsIHRydWVdLFxuICAgIFsnbWF0aGFjY2VudCcsIHRydWVdLFxuICAgIFsnb3BlbicsIHRydWVdLFxuICAgIFsnY2xvc2UnLCB0cnVlXVxuICBdKTtcblxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgc2luZ2xlIGNoYXJhY3RlciBmcm9tIGEgdW5pY29kZSBoZXggc3RyaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY29kZSBUaGUgY29kZS5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbmV3bHkgY3JlYXRlZCBlbnRpdHkuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gY3JlYXRlRW50aXR5KGNvZGU6IHN0cmluZyk6IHN0cmluZyAge1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludChjb2RlLCAxNikpO1xuICB9XG5cblxuICAvKipcbiAgICogR2V0IHRoZSBjaGlsZHJlbiBvZiB0aGUgYSBub2RlLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgVGhlIG5vZGUuXG4gICAqIEByZXR1cm4ge01NTE5PREVbXX0gSXRzIGNoaWxkcmVuLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENoaWxkcmVuKG5vZGU6IE1tbE5vZGUpOiBNTUxOT0RFW10ge1xuICAgIHJldHVybiAobm9kZS5jaGlsZE5vZGVzIGFzIE1NTE5PREVbXSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZXQgdGV4dCBjb250ZW50IG9mIGEgbm9kZS5cbiAgICogQHBhcmFtIHtUZXh0Tm9kZX0gbm9kZSBUaGUgbm9kZS5cbiAgICogQHJldHVybiB7c3RyaW5nfSBJdHMgdGV4dCBjb250ZW50LlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFRleHQobm9kZTogVGV4dE5vZGUpOiBzdHJpbmcge1xuICAgIHJldHVybiBub2RlLmdldFRleHQoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEFwcGVuZCBjaGlsZHJlbiB0byBhIG5vZGUuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSBUaGUgbm9kZS5cbiAgICogQHBhcmFtIHtNTUxOT0RFW119IGNoaWxkcmVuIEEgbGlzdCBvZiBuZXcgY2hpbGRyZW4uXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2hpbGRyZW4obm9kZTogTW1sTm9kZSwgY2hpbGRyZW46IE1NTE5PREVbXSkgIHtcbiAgICBmb3IgKGxldCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgbm9kZS5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogU2V0cyBhbiBhdHRyaWJ1dGUgb2YgYSBub2RlLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgVGhlIG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhdHRyaWJ1dGUgQW4gYXR0cmlidXRlLlxuICAgKiBAcGFyYW0ge0FyZ3N9IHZhbHVlIFRoZSBhdHRyaWJ1dGUgdmFsdWUuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gc2V0QXR0cmlidXRlKG5vZGU6IE1tbE5vZGUsIGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZTogQXJncykge1xuICAgIG5vZGUuYXR0cmlidXRlcy5zZXQoYXR0cmlidXRlLCB2YWx1ZSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTZXRzIGEgcHJvcGVydHkgb2YgYSBub2RlLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgVGhlIG5vZGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB7QXJnc30gdmFsdWUgVGhlIHByb3BlcnR5IHZhbHVlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnR5KG5vZGU6IE1tbE5vZGUsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBBcmdzKSB7XG4gICAgbm9kZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eSwgdmFsdWUpO1xuICB9XG5cblxuICAvKipcbiAgICogU2V0cyBwcm9wZXJ0aWVzIGFuZCBhdHRyaWJ1dGVzIG9mIGEgbm9kZS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlIFRoZSBub2RlLlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5TGlzdH0gcHJvcGVydGllcyBBIGxpc3Qgb2YgcHJvcGVydHkvYXR0cmlidXRlIHZhbHVlIHBhaXJzLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHNldFByb3BlcnRpZXMobm9kZTogTW1sTm9kZSwgcHJvcGVydGllczogUHJvcGVydHlMaXN0KSB7XG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKHByb3BlcnRpZXMpKSB7XG4gICAgICBsZXQgdmFsdWUgPSBwcm9wZXJ0aWVzW25hbWVdO1xuICAgICAgaWYgKG5hbWUgPT09ICd0ZXhDbGFzcycpIHtcbiAgICAgICAgbm9kZS50ZXhDbGFzcyA9ICh2YWx1ZSBhcyBudW1iZXIpO1xuICAgICAgICBub2RlLnNldFByb3BlcnR5KG5hbWUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAobmFtZSA9PT0gJ21vdmFibGVsaW1pdHMnKSB7XG4gICAgICAgIG5vZGUuc2V0UHJvcGVydHkoJ21vdmFibGVsaW1pdHMnLCB2YWx1ZSk7XG4gICAgICAgIGlmIChub2RlLmlzS2luZCgnbW8nKSB8fCBub2RlLmlzS2luZCgnbXN0eWxlJykpIHtcbiAgICAgICAgICBub2RlLmF0dHJpYnV0ZXMuc2V0KCdtb3ZhYmxlbGltaXRzJywgdmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5hbWUgPT09ICdpbmZlcnJlZCcpIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgICB9IGVsc2UgaWYgKGF0dHJzLmhhcyhuYW1lKSkge1xuICAgICAgICBub2RlLnNldFByb3BlcnR5KG5hbWUsIHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUuYXR0cmlidXRlcy5zZXQobmFtZSwgdmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHByb3BlcnR5IG9mIGEgbm9kZS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlIFRoZSBub2RlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgQSBwcm9wZXJ0eSBuYW1lLlxuICAgKiBAcmV0dXJuIHtQcm9wZXJ0eX0gVmFsdWUgb2YgdGhlIHByb3BlcnR5LlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldFByb3BlcnR5KG5vZGU6IE1tbE5vZGUsIHByb3BlcnR5OiBzdHJpbmcpOiBQcm9wZXJ0eSAge1xuICAgIHJldHVybiBub2RlLmdldFByb3BlcnR5KHByb3BlcnR5KTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGF0dHJpYnV0ZSBvZiBhIG5vZGUuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSBUaGUgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHIgQSBhdHRyaWJ1dGUgbmFtZS5cbiAgICogQHJldHVybiB7UHJvcGVydHl9IFZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZ2V0QXR0cmlidXRlKG5vZGU6IE1tbE5vZGUsIGF0dHI6IHN0cmluZyk6IFByb3BlcnR5ICB7XG4gICAgcmV0dXJuIG5vZGUuYXR0cmlidXRlcy5nZXQoYXR0cik7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgc2V0IG9mIHByb3BlcnRpZXMgZnJvbSBhIG5vZGUuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSBUaGUgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gLi4ucHJvcGVydGllcyAgQSBsaXN0IG9mIHByb3BlcnRpZXMuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gcmVtb3ZlUHJvcGVydGllcyhub2RlOiBNbWxOb2RlLCAuLi5wcm9wZXJ0aWVzOiBzdHJpbmdbXSkge1xuICAgIG5vZGUucmVtb3ZlUHJvcGVydHkoLi4ucHJvcGVydGllcyk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgY2hpbGQgbm9kZSBhdCBhIGdpdmVuIHBvc2l0aW9uLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgVGhlIG5vZGUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwb3NpdGlvbiBUaGUgcG9zaXRpb24gb2YgdGhlIGNoaWxkLlxuICAgKiBAcmV0dXJuIHtNTUxOT0RFfSBUaGUgY2hpbGQgbm9kZSBhdCBwb3NpdGlvbi5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRDaGlsZEF0KG5vZGU6IE1tbE5vZGUsIHBvc2l0aW9uOiBudW1iZXIpOiBNTUxOT0RFIHtcbiAgICByZXR1cm4gKG5vZGUuY2hpbGROb2Rlc1twb3NpdGlvbl0gYXMgTU1MTk9ERSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTZXQgbm9kZSBjaGlsZCBhdCBwb3NpdGlvbi5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlIFRoZSBub2RlLlxuICAgKiBAcGFyYW0ge251bWJlcn0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIG9mIHRoZSBuZXcgY2hpbGQuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gY2hpbGQgVGhlIG5ldyBjaGlsZC5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzZXRDaGlsZChub2RlOiBNbWxOb2RlLCBwb3NpdGlvbjogbnVtYmVyLCBjaGlsZDogTW1sTm9kZSkge1xuICAgIGxldCBjaGlsZHJlbiA9IG5vZGUuY2hpbGROb2RlcztcbiAgICBjaGlsZHJlbltwb3NpdGlvbl0gPSBjaGlsZDtcbiAgICBpZiAoY2hpbGQpIHtcbiAgICAgIGNoaWxkLnBhcmVudCA9IG5vZGU7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogQ29waWVzIGNoaWxkcmVuIGJldHdlZW4gbm9kZXMuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gb2xkTm9kZSBUaGUgc291cmNlIG5vZGUuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbmV3Tm9kZSBUaGUgdGFyZ2V0IG5vZGUuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gY29weUNoaWxkcmVuKG9sZE5vZGU6IE1tbE5vZGUsIG5ld05vZGU6IE1tbE5vZGUpIHtcbiAgICBsZXQgY2hpbGRyZW4gPSBvbGROb2RlLmNoaWxkTm9kZXMgYXMgKFRleHROb2RlIHwgTW1sTm9kZSlbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBzZXRDaGlsZChuZXdOb2RlLCBpLCBjaGlsZHJlbltpXSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogQ29waWVzIGF0dHJpYnV0ZXMgYmV0d2VlbiBub2Rlcy5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBvbGROb2RlIFRoZSBzb3VyY2Ugbm9kZS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBuZXdOb2RlIFRoZSB0YXJnZXQgbm9kZS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBjb3B5QXR0cmlidXRlcyhvbGROb2RlOiBNbWxOb2RlLCBuZXdOb2RlOiBNbWxOb2RlKSB7XG4gICAgbmV3Tm9kZS5hdHRyaWJ1dGVzID0gb2xkTm9kZS5hdHRyaWJ1dGVzO1xuICAgIHNldFByb3BlcnRpZXMobmV3Tm9kZSwgb2xkTm9kZS5nZXRBbGxQcm9wZXJ0aWVzKCkpO1xuICB9XG5cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG5vZGUgaXMgb2YgYSBwYXJ0aWN1bGFyIHR5cGUuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSBUaGUgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgVGhlIHR5cGUgdG8gY2hlY2suXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBpc1R5cGUobm9kZTogTW1sTm9kZSwga2luZDogc3RyaW5nKTogYm9vbGVhbiAge1xuICAgIHJldHVybiBub2RlLmlzS2luZChraW5kKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgbm9kZSBpcyBlbWJlbGxpc2hlZC5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlIFRoZSBub2RlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG5vZGUgaXMgZW1iZWxsaXNoZWQuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gaXNFbWJlbGxpc2hlZChub2RlOiBNbWxOb2RlKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5vZGUuaXNFbWJlbGxpc2hlZDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHRleGNsYXNzIG9mIGEgbm9kZS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlIFRoZSBub2RlLlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9IEl0cyB0ZXhjbGFzcy5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRUZXhDbGFzcyhub2RlOiBNbWxOb2RlKTogbnVtYmVyICB7XG4gICAgcmV0dXJuIG5vZGUudGV4Q2xhc3M7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtbyBlbGVtZW50IGF0IHRoZSBjb3JlIG9mIHRoZSBub2RlLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgVGhlIG5vZGUuXG4gICAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSBNTyBub2RlIGF0IHRoZSBjb3JlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldENvcmVNTyhub2RlOiBNbWxOb2RlKTogTW1sTm9kZSAge1xuICAgIHJldHVybiBub2RlLmNvcmVNTygpO1xuICB9XG5cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGFuIG9iamVjdCBpcyBhIG5vZGUuXG4gICAqIEBwYXJhbSB7YW55fSBpdGVtIFRoZSBvYmplY3QuXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgaXQgaXMgYSBub2RlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZShpdGVtOiBhbnkpOiBib29sZWFuICB7XG4gICAgcmV0dXJuIGl0ZW0gaW5zdGFuY2VvZiBBYnN0cmFjdE1tbE5vZGUgfHwgaXRlbSBpbnN0YW5jZW9mIEFic3RyYWN0TW1sRW1wdHlOb2RlO1xuICB9XG5cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBub2RlIGlzIGFuIGluZmVycmVkIG1yb3cuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSBUaGUgbm9kZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgbm9kZSBpcyBhbiBpbmZlcnJlZCBtcm93LlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzSW5mZXJyZWQobm9kZTogTW1sTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBub2RlLmlzSW5mZXJyZWQ7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBvcGVyYXRvciBkZWZpbml0aW9uIG9mIGEgbm9kZS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlIFRoZSBub2RlLlxuICAgKiBAcmV0dXJuIHtPcGVyYXRvckRlZn0gSWYgbm9kZSBpcyBhbiBNTyByZXR1cm5zIHRoZSBvcGVyYXRvciBkZWZpbml0aW9uLiBPL3dcbiAgICogICAgbnVsbC5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBnZXRGb3JtKG5vZGU6IE1tbE5vZGUpOiBPcGVyYXRvckRlZiB7XG4gICAgaWYgKCFpc1R5cGUobm9kZSwgJ21vJykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgbW8gPSBub2RlIGFzIE1tbE1vO1xuICAgIGxldCBmb3JtcyA9IG1vLmdldEZvcm1zKCk7XG4gICAgZm9yIChsZXQgZm9ybSBvZiBmb3Jtcykge1xuICAgICAgbGV0IHN5bWJvbCA9IE1tbE1vLk9QVEFCTEVbZm9ybV1bbW8uZ2V0VGV4dCgpXTtcbiAgICAgIGlmIChzeW1ib2wpIHtcbiAgICAgICAgcmV0dXJuIHN5bWJvbDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBOb2RlVXRpbDtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHN0YW5kYXJkIHByZSBhbmQgcG9zdCBmaWx0ZXJzLlxuICpcbiAqIEBhdXRob3Igc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5cbmltcG9ydCB7VEVYQ0xBU1MsIE1NTE5PREUsIE1tbE5vZGV9IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuL05vZGVVdGlsLmpzJztcbmltcG9ydCBQYXJzZU9wdGlvbnMgZnJvbSAnLi9QYXJzZU9wdGlvbnMuanMnO1xuaW1wb3J0IHtNbWxNb30gZnJvbSAnLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21vLmpzJztcbmltcG9ydCB7QXR0cmlidXRlc30gZnJvbSAnLi4vLi4vY29yZS9NbWxUcmVlL0F0dHJpYnV0ZXMuanMnO1xuXG5cbm5hbWVzcGFjZSBGaWx0ZXJVdGlsIHtcblxuICAvKipcbiAgICogVmlzaXRvciB0byBzZXQgc3RyZXRjaHkgYXR0cmlidXRlcyB0byBmYWxzZSBvbiA8bW8+IGVsZW1lbnRzLCBpZiB0aGV5IGFyZVxuICAgKiBub3QgdXNlZCBhcyBkZWxpbWl0ZXJzLiBBbHNvIHdyYXBzIG5vbi1zdHJldGNoeSBpbmZpeCBkZWxpbWl0ZXJzIGludG8gYVxuICAgKiBUZVhBdG9tLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG1hdGggVGhlIG5vZGUgdG8gcmV3cml0ZS5cbiAgICogQHBhcmFtIHtQYXJzZU9wdGlvbnN9IGRhdGEgVGhlIHBhcnNlIG9wdGlvbnMuXG4gICAqL1xuICBleHBvcnQgbGV0IGNsZWFuU3RyZXRjaHkgPSBmdW5jdGlvbihhcmc6IHttYXRoOiBhbnksIGRhdGE6IFBhcnNlT3B0aW9uc30pIHtcbiAgICBsZXQgb3B0aW9ucyA9IGFyZy5kYXRhO1xuICAgIGZvciAobGV0IG1vIG9mIG9wdGlvbnMuZ2V0TGlzdCgnZml4U3RyZXRjaHknKSkge1xuICAgICAgaWYgKE5vZGVVdGlsLmdldFByb3BlcnR5KG1vLCAnZml4U3RyZXRjaHknKSkge1xuICAgICAgICBsZXQgc3ltYm9sID0gTm9kZVV0aWwuZ2V0Rm9ybShtbyk7XG4gICAgICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sWzNdICYmIHN5bWJvbFszXVsnc3RyZXRjaHknXSkge1xuICAgICAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbywgJ3N0cmV0Y2h5JywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IG1vLnBhcmVudDtcbiAgICAgICAgaWYgKCFOb2RlVXRpbC5nZXRUZXhDbGFzcyhtbykgJiYgKCFzeW1ib2wgfHwgIXN5bWJvbFsyXSkpIHtcbiAgICAgICAgICBjb25zdCB0ZXhBdG9tID0gb3B0aW9ucy5ub2RlRmFjdG9yeS5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFttb10pO1xuICAgICAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQodGV4QXRvbSwgbW8pO1xuICAgICAgICAgIHRleEF0b20uaW5oZXJpdEF0dHJpYnV0ZXNGcm9tKG1vKTtcbiAgICAgICAgfVxuICAgICAgICBOb2RlVXRpbC5yZW1vdmVQcm9wZXJ0aWVzKG1vLCAnZml4U3RyZXRjaHknKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cblxuICAvKipcbiAgICogVmlzaXRvciB0aGF0IHJlbW92ZXMgc3VwZXJmbHVvdXMgYXR0cmlidXRlcyBmcm9tIG5vZGVzLiBJLmUuLCBpZiBhIG5vZGUgaGFzXG4gICAqIGFuIGF0dHJpYnV0ZSwgd2hpY2ggaXMgYWxzbyBhbiBpbmhlcml0ZWQgYXR0cmlidXRlIGl0IHdpbGwgYmUgcmVtb3ZlZC4gVGhpc1xuICAgKiBpcyBuZWNlc3NhcnkgYXMgYXR0cmlidXRlcyBhcmUgc2V0IGJvdHRvbSB1cCBpbiB0aGUgcGFyc2VyLlxuICAgKiBAcGFyYW0ge1BhcnNlT3B0aW9uc30gZGF0YSBUaGUgcGFyc2Ugb3B0aW9ucy5cbiAgICovXG4gIGV4cG9ydCBsZXQgY2xlYW5BdHRyaWJ1dGVzID0gZnVuY3Rpb24oYXJnOiB7ZGF0YTogUGFyc2VPcHRpb25zfSkge1xuICAgIGxldCBub2RlID0gYXJnLmRhdGEucm9vdCBhcyBNbWxOb2RlO1xuICAgIG5vZGUud2Fsa1RyZWUoKG1tbDogTW1sTm9kZSwgX2Q6IGFueSkgPT4ge1xuICAgICAgbGV0IGF0dHJpYnMgPSBtbWwuYXR0cmlidXRlcyBhcyBhbnk7XG4gICAgICBpZiAoIWF0dHJpYnMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3Qga2VlcCA9IG5ldyBTZXQoKGF0dHJpYnMuZ2V0KCdtangta2VlcC1hdHRycycpIHx8ICcnKS5zcGxpdCgvIC8pKTtcbiAgICAgIGRlbGV0ZSAoYXR0cmlicy5nZXRBbGxBdHRyaWJ1dGVzKCkpWydtangta2VlcC1hdHRycyddO1xuICAgICAgZm9yIChjb25zdCBrZXkgb2YgYXR0cmlicy5nZXRFeHBsaWNpdE5hbWVzKCkpIHtcbiAgICAgICAgaWYgKCFrZWVwLmhhcyhrZXkpICYmIGF0dHJpYnMuYXR0cmlidXRlc1trZXldID09PSBtbWwuYXR0cmlidXRlcy5nZXRJbmhlcml0ZWQoa2V5KSkge1xuICAgICAgICAgIGRlbGV0ZSBhdHRyaWJzLmF0dHJpYnV0ZXNba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHt9KTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiBDb21iaW5lIGFkamFjZW50IDxtbz4gZWxlbWVudHMgdGhhdCBhcmUgcmVsYXRpb25zIChzaW5jZSBNYXRoTUwgdHJlYXRzIHRoZVxuICAgKiBzcGFjaW5nIHZlcnkgZGlmZmVyZW50bHkpXG4gICAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBkYXRhIFRoZSBwYXJzZSBvcHRpb25zLlxuICAgKi9cbiAgZXhwb3J0IGxldCBjb21iaW5lUmVsYXRpb25zID0gZnVuY3Rpb24oYXJnOiB7ZGF0YTogUGFyc2VPcHRpb25zfSkge1xuICAgIGNvbnN0IHJlbW92ZTogTW1sTm9kZVtdID0gW107XG4gICAgZm9yIChsZXQgbW8gb2YgYXJnLmRhdGEuZ2V0TGlzdCgnbW8nKSkge1xuICAgICAgaWYgKG1vLmdldFByb3BlcnR5KCdyZWxhdGlvbnNDb21iaW5lZCcpIHx8ICFtby5wYXJlbnQgfHxcbiAgICAgICAgICAobW8ucGFyZW50ICYmICFOb2RlVXRpbC5pc1R5cGUobW8ucGFyZW50LCAnbXJvdycpKSB8fFxuICAgICAgICAgIE5vZGVVdGlsLmdldFRleENsYXNzKG1vKSAhPT0gVEVYQ0xBU1MuUkVMKSB7XG4gICAgICAgIC8vIEB0ZXN0IFByaW1lLCBQcmltZVN1cCwgTmFtZWQgRnVuY3Rpb25cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBsZXQgbW1sID0gbW8ucGFyZW50O1xuICAgICAgbGV0IG0yOiBNbWxOb2RlO1xuICAgICAgbGV0IGNoaWxkcmVuID0gbW1sLmNoaWxkTm9kZXMgYXMgTU1MTk9ERVtdO1xuICAgICAgbGV0IG5leHQgPSBjaGlsZHJlbi5pbmRleE9mKG1vKSArIDE7XG4gICAgICBsZXQgdmFyaWFudEZvcm0gPSBOb2RlVXRpbC5nZXRQcm9wZXJ0eShtbywgJ3ZhcmlhbnRGb3JtJyk7XG4gICAgICB3aGlsZSAobmV4dCA8IGNoaWxkcmVuLmxlbmd0aCAmJiAobTIgPSBjaGlsZHJlbltuZXh0XSkgJiZcbiAgICAgICAgICAgICBOb2RlVXRpbC5pc1R5cGUobTIsICdtbycpICYmXG4gICAgICAgICAgICAgTm9kZVV0aWwuZ2V0VGV4Q2xhc3MobTIpID09PSBURVhDTEFTUy5SRUwpIHtcbiAgICAgICAgaWYgKHZhcmlhbnRGb3JtID09PSBOb2RlVXRpbC5nZXRQcm9wZXJ0eShtMiwgJ3ZhcmlhbnRGb3JtJykgJiZcbiAgICAgICAgICAgIF9jb21wYXJlRXhwbGljaXQobW8sIG0yKSkge1xuICAgICAgICAgIC8vIEB0ZXN0IFNoaWZ0IExlZnQsIExlc3MgRXF1YWwsXG4gICAgICAgICAgLy8gICAgICAgTXVsdGlyZWwgRm9udCBYLCBNdWx0aXJlbCBNYXRodmFyaWFudCBYXG4gICAgICAgICAgTm9kZVV0aWwuYXBwZW5kQ2hpbGRyZW4obW8sIE5vZGVVdGlsLmdldENoaWxkcmVuKG0yKSk7XG4gICAgICAgICAgLy8gVGhpcyB0cmVhdG1lbnQgbWVhbnMgd2UgbWlnaHQgbG9vc2Ugc29tZSBpbmhlcml0YW5jZSBzdHJ1Y3R1cmUsIGJ1dFxuICAgICAgICAgIC8vIG5vIHByb3BlcnRpZXMuXG4gICAgICAgICAgX2NvcHlFeHBsaWNpdChbJ3N0cmV0Y2h5JywgJ3JzcGFjZSddLCBtbywgbTIpO1xuICAgICAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBtMi5nZXRQcm9wZXJ0eU5hbWVzKCkpIHtcbiAgICAgICAgICAgIG1vLnNldFByb3BlcnR5KG5hbWUsIG0yLmdldFByb3BlcnR5KG5hbWUpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2hpbGRyZW4uc3BsaWNlKG5leHQsIDEpO1xuICAgICAgICAgIHJlbW92ZS5wdXNoKG0yKTtcbiAgICAgICAgICBtMi5wYXJlbnQgPSBudWxsO1xuICAgICAgICAgIG0yLnNldFByb3BlcnR5KCdyZWxhdGlvbnNDb21iaW5lZCcsIHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEB0ZXN0IFByZXNldCBSc3BhY2UgTHNwYWNlXG4gICAgICAgICAgaWYgKG1vLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ3JzcGFjZScpID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEB0ZXN0IE11bGl0cmVsIE1hdGh2YXJpYW50IDMsIE11bGl0cmVsIE1hdGh2YXJpYW50IDRcbiAgICAgICAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbywgJ3JzcGFjZScsICcwcHQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKG0yLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ2xzcGFjZScpID09IG51bGwpIHtcbiAgICAgICAgICAgIC8vIEB0ZXN0IE11bGl0cmVsIE1hdGh2YXJpYW50IDMsIE11bGl0cmVsIE1hdGh2YXJpYW50IDRcbiAgICAgICAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtMiwgJ2xzcGFjZScsICcwcHQnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG1vLmF0dHJpYnV0ZXMuc2V0SW5oZXJpdGVkKCdmb3JtJywgKG1vIGFzIE1tbE1vKS5nZXRGb3JtcygpWzBdKTtcbiAgICB9XG4gICAgYXJnLmRhdGEucmVtb3ZlRnJvbUxpc3QoJ21vJywgcmVtb3ZlKTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiBDb3BpZXMgdGhlIHNwZWNpZmllZCBleHBsaWNpdCBhdHRyaWJ1dGVzIGZyb20gbm9kZTIgdG8gbm9kZTEuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGF0dHJzIExpc3Qgb2YgZXhwbGljaXQgYXR0cmlidXRlIG5hbWVzLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUxIFRoZSBnb2FsIG5vZGUuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZTIgVGhlIHNvdXJjZSBub2RlLlxuICAgKi9cbiAgbGV0IF9jb3B5RXhwbGljaXQgPSBmdW5jdGlvbihhdHRyczogc3RyaW5nW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZTE6IE1tbE5vZGUsIG5vZGUyOiBNbWxOb2RlKSB7XG4gICAgbGV0IGF0dHIxID0gbm9kZTEuYXR0cmlidXRlcztcbiAgICBsZXQgYXR0cjIgPSBub2RlMi5hdHRyaWJ1dGVzO1xuICAgIGF0dHJzLmZvckVhY2goeCA9PiB7XG4gICAgICBsZXQgYXR0ciA9IGF0dHIyLmdldEV4cGxpY2l0KHgpO1xuICAgICAgaWYgKGF0dHIgIT0gbnVsbCkge1xuICAgICAgICAvLyBAdGVzdCBJbmZpeCBTdHJldGNoeSBSaWdodCwgUHJlc2V0IExzcGFjZSBSc3BhY2VcbiAgICAgICAgYXR0cjEuc2V0KHgsIGF0dHIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIENvbXBhcmVzIHRoZSBleHBsaWNpdCBhdHRyaWJ1dGVzIG9mIHR3byBub2Rlcy4gUmV0dXJucyB0cnVlIGlmIHRoZXlcbiAgICogY29pbmNpZGUsIHdpdGggdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOlxuICAgKiAgIC0gbHNwYWNlIGF0dHJpYnV0ZSBvZiBub2RlMSBpcyBpZ25vcmVkLlxuICAgKiAgIC0gcnNwYWNlIGF0dHJpYnV0ZSBvZiBub2RlMiBpcyBpZ25vcmVkLlxuICAgKiAgIC0gc3RyZXRjaHk9ZmFsc2UgYXR0cmlidXRlcyBhcmUgaWdub3JlZC5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlMSBUaGUgZmlyc3Qgbm9kZS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlMiBJdHMgbmV4dCBzaWJsaW5nLlxuICAgKi9cbiAgbGV0IF9jb21wYXJlRXhwbGljaXQgPSBmdW5jdGlvbihub2RlMTogTW1sTm9kZSwgbm9kZTI6IE1tbE5vZGUpIHtcbiAgICBsZXQgZmlsdGVyID0gKGF0dHI6IEF0dHJpYnV0ZXMsIHNwYWNlOiBzdHJpbmcpOiBzdHJpbmdbXSA9PiB7XG4gICAgICBsZXQgZXhwID0gYXR0ci5nZXRFeHBsaWNpdE5hbWVzKCk7XG4gICAgICByZXR1cm4gZXhwLmZpbHRlcih4ID0+IHtcbiAgICAgICAgcmV0dXJuIHggIT09IHNwYWNlICYmXG4gICAgICAgICAgKHggIT09ICdzdHJldGNoeScgfHxcbiAgICAgICAgICAgYXR0ci5nZXRFeHBsaWNpdCgnc3RyZXRjaHknKSk7XG4gICAgICB9KTtcbiAgICB9O1xuICAgIGxldCBhdHRyMSA9IG5vZGUxLmF0dHJpYnV0ZXM7XG4gICAgbGV0IGF0dHIyID0gbm9kZTIuYXR0cmlidXRlcztcbiAgICBsZXQgZXhwMSA9IGZpbHRlcihhdHRyMSwgJ2xzcGFjZScpO1xuICAgIGxldCBleHAyID0gZmlsdGVyKGF0dHIyLCAncnNwYWNlJyk7XG4gICAgaWYgKGV4cDEubGVuZ3RoICE9PSBleHAyLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGxldCBuYW1lIG9mIGV4cDEpIHtcbiAgICAgIGlmIChhdHRyMS5nZXRFeHBsaWNpdChuYW1lKSAhPT0gYXR0cjIuZ2V0RXhwbGljaXQobmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfTtcblxuICAvKipcbiAgICogQ2xlYW5zIG1zdWJzdXAgYW5kIG11bmRlcm92ZXIgZWxlbWVudHMuXG4gICAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBvcHRpb25zIFRoZSBwYXJzZSBvcHRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG93IFN0cmluZyByZXByZXNlbnRpbmcgdGhlIGxvd2VyIHBhcnQgb2YgdGhlIGV4cHJlc3Npb24uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1cCBTdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB1cHBlciBwYXJ0LlxuICAgKi9cbiAgbGV0IF9jbGVhblN1YlN1cCA9IGZ1bmN0aW9uKG9wdGlvbnM6IFBhcnNlT3B0aW9ucywgbG93OiBzdHJpbmcsIHVwOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZW1vdmU6IE1tbE5vZGVbXSA9IFtdO1xuICAgIGZvciAobGV0IG1tbCBvZiBvcHRpb25zLmdldExpc3QoJ20nICsgbG93ICsgdXApIGFzIGFueVtdKSB7XG4gICAgICBjb25zdCBjaGlsZHJlbiA9IG1tbC5jaGlsZE5vZGVzO1xuICAgICAgaWYgKGNoaWxkcmVuW21tbFtsb3ddXSAmJiBjaGlsZHJlblttbWxbdXBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhcmVudCA9IG1tbC5wYXJlbnQ7XG4gICAgICBsZXQgbmV3Tm9kZSA9IChjaGlsZHJlblttbWxbbG93XV0gP1xuICAgICAgICAgICAgICAgICBvcHRpb25zLm5vZGVGYWN0b3J5LmNyZWF0ZSgnbm9kZScsICdtJyArIGxvdywgW2NoaWxkcmVuW21tbC5iYXNlXSwgY2hpbGRyZW5bbW1sW2xvd11dXSkgOlxuICAgICAgICAgICAgICAgICBvcHRpb25zLm5vZGVGYWN0b3J5LmNyZWF0ZSgnbm9kZScsICdtJyArIHVwLCBbY2hpbGRyZW5bbW1sLmJhc2VdLCBjaGlsZHJlblttbWxbdXBdXV0pKTtcbiAgICAgIE5vZGVVdGlsLmNvcHlBdHRyaWJ1dGVzKG1tbCwgbmV3Tm9kZSk7XG4gICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHBhcmVudC5yZXBsYWNlQ2hpbGQobmV3Tm9kZSwgbW1sKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMucm9vdCA9IG5ld05vZGU7XG4gICAgICB9XG4gICAgICByZW1vdmUucHVzaChtbWwpO1xuICAgIH1cbiAgICBvcHRpb25zLnJlbW92ZUZyb21MaXN0KCdtJyArIGxvdyArIHVwLCByZW1vdmUpO1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIFZpc2l0b3IgdGhhdCByZXdyaXRlcyBpbmNvbXBsZXRlIG1zdWJzdXAvbXVuZGVyb3ZlciBlbGVtZW50cyBpbiB0aGUgZ2l2ZW5cbiAgICogbm9kZSBpbnRvIGNvcnJlc3BvbmRpbmcgbXN1Yi9zdXAvdW5kZXIvb3ZlciBub2Rlcy5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBtYXRoIFRoZSBub2RlIHRvIHJld3JpdGUuXG4gICAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBkYXRhIFRoZSBwYXJzZSBvcHRpb25zLlxuICAgKi9cbiAgZXhwb3J0IGxldCBjbGVhblN1YlN1cCA9IGZ1bmN0aW9uKGFyZzoge21hdGg6IGFueSwgZGF0YTogUGFyc2VPcHRpb25zfSkge1xuICAgIGxldCBvcHRpb25zID0gYXJnLmRhdGE7XG4gICAgaWYgKG9wdGlvbnMuZXJyb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgX2NsZWFuU3ViU3VwKG9wdGlvbnMsICdzdWInLCAnc3VwJyk7XG4gICAgX2NsZWFuU3ViU3VwKG9wdGlvbnMsICd1bmRlcicsICdvdmVyJyk7XG4gIH07XG5cblxuICAvKipcbiAgICogTG9va3MgdGhyb3VnaCB0aGUgbGlzdCBvZiBtdW5kZXJvdmVyIGVsZW1lbnRzIGZvciBvbmVzIHRoYXQgaGF2ZVxuICAgKiBtb3ZhYmxlbGltaXRzIGFuZCBiYXNlcyB0aGF0IGFyZSBub3QgbW8ncywgYW5kIGNyZWF0ZXMgbmV3IG1zdWJzdXBcbiAgICogZWxlbWVudHMgdG8gcmVwbGFjZSB0aGVtIGlmIHRoZXkgYXJlbid0IGluIGRpc3BsYXlzdHlsZS5cbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBhdGggVGhlIG5vZGUgdG8gcmV3cml0ZS5cbiAgICogQHBhcmFtIHtQYXJzZU9wdGlvbnN9IGRhdGEgVGhlIHBhcnNlIG9wdGlvbnMuXG4gICAqL1xuICBsZXQgX21vdmVMaW1pdHMgPSBmdW5jdGlvbiAob3B0aW9uczogUGFyc2VPcHRpb25zLCB1bmRlcm92ZXI6IHN0cmluZywgc3Vic3VwOiBzdHJpbmcpIHtcbiAgICBjb25zdCByZW1vdmU6IE1tbE5vZGVbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgbW1sIG9mIG9wdGlvbnMuZ2V0TGlzdCh1bmRlcm92ZXIpKSB7XG4gICAgICBpZiAobW1sLmF0dHJpYnV0ZXMuZ2V0KCdkaXNwbGF5c3R5bGUnKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGJhc2UgPSBtbWwuY2hpbGROb2Rlc1sobW1sIGFzIGFueSkuYmFzZV0gYXMgTW1sTm9kZTtcbiAgICAgIGNvbnN0IG1vID0gYmFzZS5jb3JlTU8oKTtcbiAgICAgIGlmIChiYXNlLmdldFByb3BlcnR5KCdtb3ZhYmxlbGltaXRzJykgJiYgIW1vLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ21vdmFibGVsaW1pdHMnKSkge1xuICAgICAgICBsZXQgbm9kZSA9IG9wdGlvbnMubm9kZUZhY3RvcnkuY3JlYXRlKCdub2RlJywgc3Vic3VwLCBtbWwuY2hpbGROb2Rlcyk7XG4gICAgICAgIE5vZGVVdGlsLmNvcHlBdHRyaWJ1dGVzKG1tbCwgbm9kZSk7XG4gICAgICAgIGlmIChtbWwucGFyZW50KSB7XG4gICAgICAgICAgbW1sLnBhcmVudC5yZXBsYWNlQ2hpbGQobm9kZSwgbW1sKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLnJvb3QgPSBub2RlO1xuICAgICAgICB9XG4gICAgICAgIHJlbW92ZS5wdXNoKG1tbCk7XG4gICAgICB9XG4gICAgfVxuICAgIG9wdGlvbnMucmVtb3ZlRnJvbUxpc3QodW5kZXJvdmVyLCByZW1vdmUpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBWaXNpdG9yIHRoYXQgcmV3cml0ZXMgaW4tbGluZSBtdW5kZXJvdmVyIGVsZW1lbnRzIHdpdGggbW92YWJsZWxpbWl0cyBidXQgYmFzZXNcbiAgICogdGhhdCBhcmUgbm90IG1vJ3MgaW50byBleHBsaWNpdCBtc3Vic3VwIGVsZW1lbnRzLlxuICAgKlxuICAgKiBAcGFyYW0ge1BhcnNlT3B0aW9uc30gZGF0YSAgVGhlIHBhcnNlIG9wdGlvbnMgdG8gdXNlXG4gICAqL1xuICBleHBvcnQgbGV0IG1vdmVMaW1pdHMgPSBmdW5jdGlvbiAoYXJnOiB7ZGF0YTogUGFyc2VPcHRpb25zfSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBhcmcuZGF0YTtcbiAgICBfbW92ZUxpbWl0cyhvcHRpb25zLCAnbXVuZGVyb3ZlcicsICdtc3Vic3VwJyk7XG4gICAgX21vdmVMaW1pdHMob3B0aW9ucywgJ211bmRlcicsICdtc3ViJyk7XG4gICAgX21vdmVMaW1pdHMob3B0aW9ucywgJ21vdmVyJywgJ21zdXAnKTtcbiAgfTtcblxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSBzZXRzIHRoZSBpbmhlcml0ZWQgYXR0cmlidXRlcyBvbiB0aGUgbWF0aCB0cmVlLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG1hdGggVGhlIG5vZGUgdG8gcmV3cml0ZS5cbiAgICogQHBhcmFtIHtQYXJzZU9wdGlvbnN9IGRhdGEgVGhlIHBhcnNlIG9wdGlvbnMuXG4gICAqL1xuICBleHBvcnQgbGV0IHNldEluaGVyaXRlZCA9IGZ1bmN0aW9uKGFyZzoge21hdGg6IGFueSwgZGF0YTogUGFyc2VPcHRpb25zfSkge1xuICAgIGFyZy5kYXRhLnJvb3Quc2V0SW5oZXJpdGVkQXR0cmlidXRlcyh7fSwgYXJnLm1hdGhbJ2Rpc3BsYXknXSwgMCwgZmFsc2UpO1xuICB9O1xuXG59XG5cblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyVXRpbDtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMDktMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IEVycm9yIGNsYXNzIGZvciB0aGUgVGVYIHBhcnNlci5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRleEVycm9yIHtcblxuICBwcml2YXRlIHN0YXRpYyBwYXR0ZXJuID1cbiAgICAvJShcXGQrfFxce1xcZCtcXH18XFx7W2Etel0rOlxcJVxcZCsoPzpcXHwoPzolXFx7XFxkK1xcfXwlLnxbXlxcfV0pKikrXFx9fC4pL2c7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgZXJyb3IgbWVzc2FnZS5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHB1YmxpYyBtZXNzYWdlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgTWF0aEpheCBwcm9jZXNzaW5nIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyIFRoZSBiYXNpYyBlcnJvciBtZXNzYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gYmUgcmVwbGFjZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHByb2Nlc3NlZCBlcnJvciBzdHJpbmcuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwcm9jZXNzU3RyaW5nKHN0cjogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XG4gICAgbGV0IHBhcnRzID0gc3RyLnNwbGl0KFRleEVycm9yLnBhdHRlcm4pO1xuICAgIGZvciAobGV0IGkgPSAxLCBtID0gcGFydHMubGVuZ3RoOyBpIDwgbTsgaSArPSAyKSB7XG4gICAgICBsZXQgYyA9IHBhcnRzW2ldLmNoYXJBdCgwKTsgIC8vIGZpcnN0IGNoYXIgd2lsbCBiZSB7IG9yIFxcZCBvciBhIGNoYXIgdG8gYmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ga2VwdCBsaXRlcmFsbHlcbiAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeyAgICAvLyAlblxuICAgICAgICBwYXJ0c1tpXSA9IGFyZ3NbcGFyc2VJbnQocGFydHNbaV0sIDEwKSAtIDFdO1xuICAgICAgICBpZiAodHlwZW9mIHBhcnRzW2ldID09PSAnbnVtYmVyJykge1xuICAgICAgICAgIHBhcnRzW2ldID0gcGFydHNbaV0udG9TdHJpbmcoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjID09PSAneycpIHsgICAgICAgIC8vICV7bn0gb3IgJXtwbHVyYWw6JW58Li4ufVxuICAgICAgICBjID0gcGFydHNbaV0uc3Vic3RyKDEpO1xuICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsgIC8vICV7bn1cbiAgICAgICAgICBwYXJ0c1tpXSA9IGFyZ3NbcGFyc2VJbnQocGFydHNbaV0uc3Vic3RyKDEsIHBhcnRzW2ldLmxlbmd0aCAtIDIpLCAxMCkgLSAxXTtcbiAgICAgICAgICBpZiAodHlwZW9mIHBhcnRzW2ldID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgcGFydHNbaV0gPSBwYXJ0c1tpXS50b1N0cmluZygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAvLyAle3BsdXJhbDolbnwuLi59XG4gICAgICAgICAgbGV0IG1hdGNoID0gcGFydHNbaV0ubWF0Y2goL15cXHsoW2Etel0rKTolKFxcZCspXFx8KC4qKVxcfSQvKTtcbiAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgIC8vIFJlbW92ZWQgcGx1cmFsIGhlcmUuXG4gICAgICAgICAgICBwYXJ0c1tpXSA9ICclJyArIHBhcnRzW2ldO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBhcnRzW2ldID09IG51bGwpIHtcbiAgICAgICAgcGFydHNbaV0gPSAnPz8/JztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW17c3RyaW5nfSBpZCAgICAgICAgbWVzc2FnZSBpZCAoZm9yIGxvY2FsaXphdGlvbilcbiAgICogQHBhcmFte3N0cmluZ30gbWVzc2FnZSAgIHRleHQgb2YgRW5nbGlzaCBtZXNzYWdlXG4gICAqIEBwYXJhbXtzdHJpbmdbXT19IHJlc3QgICBhbnkgc3Vic3RpdHV0aW9uIGFyZ3VtZW50c1xuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIGlkOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgLi4ucmVzdDogc3RyaW5nW10pIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBUZXhFcnJvci5wcm9jZXNzU3RyaW5nKG1lc3NhZ2UsIHJlc3QpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyBtZXRob2RzIGZvciBoYW5kbGluZyBhc3luY2hyb25vdXMgYWN0aW9uc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKlxuICogIFRoZSBsZWdhY3kgTWF0aEpheCBvYmplY3QgIChGSVhNRTogcmVtb3ZlIHRoaXMgYWZ0ZXIgYWxsIHYyIGNvZGUgaXMgZ29uZSlcbiAqL1xuXG5kZWNsYXJlIHZhciBNYXRoSmF4OiB7Q2FsbGJhY2s6IHtBZnRlcjogRnVuY3Rpb259fTtcblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBBbGxvdyB1cyB0byBwYXNzIGEgcHJvbWlzZSBhcyBwYXJ0IG9mIGFuIEVycm9yIG9iamVjdFxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgUmV0cnlFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgcmV0cnk6IFByb21pc2U8YW55Pjtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBIHdyYXBwZXIgZm9yIGFjdGlvbnMgdGhhdCBtYXkgYmUgYXN5bmNocm9ub3VzLiAgVGhpcyB3aWxsXG4gKiAgIHJlcnVuIHRoZSBhY3Rpb24gYWZ0ZXIgdGhlIGFzeWNocm9ub3VzIGFjdGlvbiBjb21wbGV0ZXMuXG4gKiAgIFVzdWFsbHksIHRoaXMgaXMgZm9yIGR5bmFtaWMgbG9hZGluZyBvZiBmaWxlcy4gIExlZ2FjeVxuICogICBNYXRoSmF4IGRvZXMgdGhhdCBhIGxvdCwgc28gd2Ugc3RpbGwgbmVlZCBpdCBmb3Igbm93LCBidXRcbiAqICAgbWF5IGJlIGFibGUgdG8gZ28gd2l0aG91dCBpdCBpbiB0aGUgZnV0dXJlLlxuICpcbiAqICAgRXhhbXBsZTpcbiAqXG4gKiAgICAgSGFuZGxlUmV0cmllc0ZvcigoKSA9PiB7XG4gKlxuICogICAgICAgICBodG1sLmZpbmRNYXRoKClcbiAqICAgICAgICAgICAgIC5jb21waWxlKClcbiAqICAgICAgICAgICAgIC5nZXRNZXRyaWNzKClcbiAqICAgICAgICAgICAgIC50eXBlc2V0KClcbiAqICAgICAgICAgICAgIC51cGRhdGVEb2N1bWVudCgpO1xuICpcbiAqICAgICB9KS5jYXRjaChlcnIgPT4ge1xuICogICAgICAgY29uc29sZS5sb2coZXJyLm1lc3NhZ2UpO1xuICogICAgIH0pO1xuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNvZGUgIFRoZSBjb2RlIHRvIHJ1biB0aGF0IG1pZ2h0IGNhdXNlIHJldHJpZXNcbiAqIEByZXR1cm4ge1Byb21pc2V9ICAgICAgIEEgcHJvbWlzZSB0aGF0IGlzIHNhdGlzZmllZCB3aGVuIHRoZSBjb2RlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICBydW5zIGNvbXBsZXRlbHksIGFuZCBmYWlscyBpZiB0aGUgY29kZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGVzIGFuIGVycm9yICh0aGF0IGlzIG5vdCBhIHJldHJ5KS5cbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlUmV0cmllc0Zvcihjb2RlOiBGdW5jdGlvbik6IFByb21pc2U8YW55PiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiBydW4ob2s6IEZ1bmN0aW9uLCBmYWlsOiBGdW5jdGlvbikge1xuICAgIHRyeSB7XG4gICAgICBvayhjb2RlKCkpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5yZXRyeSAmJiBlcnIucmV0cnkgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIGVyci5yZXRyeS50aGVuKCgpID0+IHJ1bihvaywgZmFpbCkpXG4gICAgICAgICAgICAgICAgIC5jYXRjaCgocGVycjogRXJyb3IpID0+IGZhaWwocGVycikpO1xuICAgICAgfSBlbHNlIGlmIChlcnIucmVzdGFydCAmJiBlcnIucmVzdGFydC5pc0NhbGxiYWNrKSB7XG4gICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBicmFuY2ggd2hlbiBhbGwgbGVnYWN5IGNvZGUgaXMgZ29uZVxuICAgICAgICBNYXRoSmF4LkNhbGxiYWNrLkFmdGVyKCgpID0+IHJ1bihvaywgZmFpbCksIGVyci5yZXN0YXJ0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZhaWwoZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRlbGxzIEhhbmRsZVJldHJpZXNGb3IoKSB0byB3YWl0IGZvciB0aGlzIHByb21pc2UgdG8gYmUgZnVsZmlsbGVkXG4gKiAgIGJlZm9yZSByZXJ1bm5pbmcgdGhlIGNvZGUuICBDYXVzZXMgYW4gZXJyb3IgdG8gYmUgdGhyb3duLCBzb1xuICogICBjYWxsaW5nIHRoaXMgdGVybWluYXRlcyB0aGUgY29kZSBhdCB0aGF0IHBvaW50LlxuICpcbiAqIEBwYXJhbSB7UHJvbWlzZX0gcHJvbWlzZSAgVGhlIHByb21pc2UgdGhhdCBtdXN0IGJlIHNhdGlzZmllZCBiZWZvcmVcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbnMgd2lsbCBjb250aW51ZVxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiByZXRyeUFmdGVyKHByb21pc2U6IFByb21pc2U8YW55Pikge1xuICBsZXQgZXJyID0gbmV3IEVycm9yKCdNYXRoSmF4IHJldHJ5JykgYXMgUmV0cnlFcnJvcjtcbiAgZXJyLnJldHJ5ID0gcHJvbWlzZTtcbiAgdGhyb3cgZXJyO1xufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgVGhlIHZlcnNpb24gb2YgTWF0aEpheCAodXNlZCB0byB0ZWxsIHdoYXQgdmVyc2lvbiBhIGNvbXBvbmVudFxuICogICAgICAgICAgICAgICAgd2FzIGNvbXBpbGVkIGFnYWluc3QpLlxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSAnMy4yLjInO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgYW5kIGFic3RyYWN0IGNsYXNzIGZvciBIYW5kbGVyTGlzdCBvYmplY3RzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1ByaW9yaXRpemVkTGlzdH0gZnJvbSAnLi4vdXRpbC9Qcmlvcml0aXplZExpc3QuanMnO1xuaW1wb3J0IHtPcHRpb25MaXN0fSBmcm9tICcuLi91dGlsL09wdGlvbnMuanMnO1xuaW1wb3J0IHtIYW5kbGVyfSBmcm9tICcuL0hhbmRsZXIuanMnO1xuaW1wb3J0IHtNYXRoRG9jdW1lbnR9IGZyb20gJy4vTWF0aERvY3VtZW50LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIEhhbmRsZXJMaXN0IGNsYXNzIChleHRlbmRzIFByaW9yaXRpemVkTGlzdCBvZiBIYW5kbGVycylcbiAqXG4gKiAgVGhpcyBsaXN0IGlzIHVzZWQgdG8gZmluZCB0aGUgaGFuZGxlciBmb3IgYSBnaXZlbiBkb2N1bWVudFxuICogIGJ5IGFza2luZyBlYWNoIGhhbmRsZXIgdG8gdGVzdCBpZiBpdCBjYW4gaGFuZGxlIHRoZSBkb2N1bWVudCxcbiAqICBhbmQgd2hlbiBvbmUgY2FuLCBpdCBpcyBhc2tlZCB0byBjcmVhdGUgaXRzIGFzc29jaWF0ZWQgTWF0aERvY3VtZW50LlxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIEhhbmRsZXJMaXN0PE4sIFQsIEQ+IGV4dGVuZHMgUHJpb3JpdGl6ZWRMaXN0PEhhbmRsZXI8TiwgVCwgRD4+ICB7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SGFuZGxlcn0gaGFuZGxlciAgVGhlIGhhbmRsZXIgdG8gcmVnaXN0ZXJcbiAgICogQHJldHVybiB7SGFuZGxlcn0gIFRoZSBsaXN0IGl0ZW0gY3JlYXRlZCBmb3IgdGhlIGhhbmRsZXJcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlcihoYW5kbGVyOiBIYW5kbGVyPE4sIFQsIEQ+KTogSGFuZGxlcjxOLCBULCBEPiB7XG4gICAgcmV0dXJuIHRoaXMuYWRkKGhhbmRsZXIsIGhhbmRsZXIucHJpb3JpdHkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7SGFuZGxlcn0gSGFuZGxlciAgVGhlIGhhbmRsZXIgdG8gcmVtb3ZlIGZyb20gdGhlIGxpc3RcbiAgICovXG4gIHB1YmxpYyB1bnJlZ2lzdGVyKGhhbmRsZXI6IEhhbmRsZXI8TiwgVCwgRD4pIHtcbiAgICB0aGlzLnJlbW92ZShoYW5kbGVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueX0gZG9jdW1lbnQgIFRoZSBkb2N1bWVudCAoc3RyaW5nLCB3aW5kb3csIERPTSBlbGVtZW50LCBldGMpIHRvIGJlIGhhbmRsZWRcbiAgICogQHJldHVybiB7SGFuZGxlcn0gICAgICBUaGUgaGFuZGxlciBmcm9tIHRoZSBsaXN0IHRoYXQgY2FuIHByb2Nlc3MgdGhlIGdpdmVuIGRvY3VtZW50XG4gICAqL1xuICBwdWJsaWMgaGFuZGxlc0RvY3VtZW50KGRvY3VtZW50OiBhbnkpOiBIYW5kbGVyPE4sIFQsIEQ+IHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcykge1xuICAgICAgbGV0IGhhbmRsZXIgPSBpdGVtLml0ZW07XG4gICAgICBpZiAoaGFuZGxlci5oYW5kbGVzRG9jdW1lbnQoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBoYW5kbGVyO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbid0IGZpbmQgaGFuZGxlciBmb3IgZG9jdW1lbnRgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2FueX0gZG9jdW1lbnQgICAgICAgIFRoZSBkb2N1bWVudCB0byBiZSBwcm9jZXNzZWRcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICBUaGUgb3B0aW9ucyBmb3IgdGhlIGhhbmRsZXJcbiAgICogQHJldHVybiB7TWF0aERvY3VtZW50fSAgICAgICBUaGUgTWF0aERvY3VtZW50IGNyZWF0ZWQgYnkgdGhlIGhhbmRsZXIgZm9yIHRoaXMgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBkb2N1bWVudChkb2N1bWVudDogYW55LCBvcHRpb25zOiBPcHRpb25MaXN0ID0gbnVsbCk6IE1hdGhEb2N1bWVudDxOLCBULCBEPiB7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlc0RvY3VtZW50KGRvY3VtZW50KS5jcmVhdGUoZG9jdW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgVGhlIG1haW4gTWF0aEpheCBnbG9iYWwgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1ZFUlNJT059IGZyb20gJy4vY29tcG9uZW50cy92ZXJzaW9uLmpzJztcbmltcG9ydCB7SGFuZGxlckxpc3R9IGZyb20gJy4vY29yZS9IYW5kbGVyTGlzdC5qcyc7XG5pbXBvcnQge2hhbmRsZVJldHJpZXNGb3IsIHJldHJ5QWZ0ZXJ9IGZyb20gJy4vdXRpbC9SZXRyaWVzLmpzJztcbmltcG9ydCB7T3B0aW9uTGlzdH0gZnJvbSAnLi91dGlsL09wdGlvbnMuanMnO1xuaW1wb3J0IHtNYXRoRG9jdW1lbnR9IGZyb20gJy4vY29yZS9NYXRoRG9jdW1lbnQuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBtYWluIE1hdGhKYXggZ2xvYmFsIG9iamVjdFxuICovXG5leHBvcnQgY29uc3QgbWF0aGpheCA9IHtcbiAgLyoqXG4gICAqICBUaGUgTWF0aEpheCB2ZXJzaW9uIG51bWJlclxuICAgKi9cbiAgdmVyc2lvbjogVkVSU0lPTixcblxuICAvKipcbiAgICogIFRoZSBsaXN0IG9mIHJlZ2lzdGVycyBkb2N1bWVudCBoYW5kbGVyc1xuICAgKi9cbiAgaGFuZGxlcnM6IG5ldyBIYW5kbGVyTGlzdDxhbnksIGFueSwgYW55PigpLFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgTWF0aERvY3VtZW50IHVzaW5nIGEgcmVnaXN0ZXJlZCBoYW5kbGVyIHRoYXQga25vd3MgaG93IHRvIGhhbmRsIGl0XG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBkb2N1bWVudCAgICAgICAgVGhlIGRvY3VtZW50IHRvIGhhbmRsZVxuICAgKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgICBUaGUgb3B0aW9ucyB0byB1c2UgZm9yIHRoZSBkb2N1bWVudCAoZS5nLiwgaW5wdXQgYW5kIG91dHB1dCBqYXgpXG4gICAqIEByZXR1cm4ge01hdGhEb2N1bWVudH0gICAgICAgVGhlIE1hdGhEb2N1bWVudCB0byBoYW5kbGUgdGhlIGRvY3VtZW50XG4gICAqL1xuICBkb2N1bWVudDogZnVuY3Rpb24gKGRvY3VtZW50OiBhbnksIG9wdGlvbnM6IE9wdGlvbkxpc3QpOiBNYXRoRG9jdW1lbnQ8YW55LCBhbnksIGFueT4ge1xuICAgIHJldHVybiBtYXRoamF4LmhhbmRsZXJzLmRvY3VtZW50KGRvY3VtZW50LCBvcHRpb25zKTtcbiAgfSxcblxuICAvKipcbiAgICogVGhlIGZ1bmN0aW9ucyBmb3IgaGFuZGxpbmcgcmV0cmllcyBpZiBhIGZpbGUgbXVzdCBiZSBsb2FkZWQgZHluYW1pY2FsbHlcbiAgICovXG4gIGhhbmRsZVJldHJpZXNGb3I6IGhhbmRsZVJldHJpZXNGb3IsXG4gIHJldHJ5QWZ0ZXI6IHJldHJ5QWZ0ZXIsXG5cbiAgLyoqXG4gICAqIEEgZnVuY3Rpb24gZm9yIGxvYWRpbmcgZXh0ZXJuYWwgZmlsZXMgKGNhbiBiZSBjaGFuZ2VkIGZvciBub2RlL2Jyb3dzZXIgdXNlKVxuICAgKi9cbiAgYXN5bmNMb2FkOiBudWxsIGFzICgoZmlsZTogc3RyaW5nKSA9PiBhbnkpLFxuXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIGFzeW5jaHJvbm91cyBsb2FkaW5nIG9mIGZpbGVzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge21hdGhqYXh9IGZyb20gJy4uL21hdGhqYXguanMnO1xuXG4vKipcbiAqIExvYWQgYSBmaWxlIGFzeW5jaHJvbm91c2x5IHVzaW5nIHRoZSBtYXRoamF4LmFzeW5jaExvYWQgbWV0aG9kLCBpZiB0aGVyZSBpcyBvbmVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gbG9hZFxuICogQHJldHVybiB7UHJvbWlzZX0gICAgIFRoZSBwcm9taXNlIHRoYXQgaXMgc2F0aXNmaWVkIHdoZW4gdGhlIGZpbGUgaXMgbG9hZGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3luY0xvYWQobmFtZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gIGlmICghbWF0aGpheC5hc3luY0xvYWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoYENhbid0IGxvYWQgJyR7bmFtZX0nOiBObyBhc3luY0xvYWQgbWV0aG9kIHNwZWNpZmllZGApO1xuICB9XG4gIHJldHVybiBuZXcgUHJvbWlzZSgob2ssIGZhaWwpID0+IHtcbiAgICBjb25zdCByZXN1bHQgPSBtYXRoamF4LmFzeW5jTG9hZChuYW1lKTtcbiAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgcmVzdWx0LnRoZW4oKHZhbHVlOiBhbnkpID0+IG9rKHZhbHVlKSkuY2F0Y2goKGVycjogRXJyb3IpID0+IGZhaWwoZXJyKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG9rKHJlc3VsdCk7XG4gICAgfVxuICB9KTtcbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgQ29udmVydHMgbmFtZWQgZW50aXRpZXMgdG8gdW5pY29kZSBjaGFyYWN0ZXJzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge3JldHJ5QWZ0ZXJ9IGZyb20gJy4vUmV0cmllcy5qcyc7XG5pbXBvcnQge2FzeW5jTG9hZH0gZnJvbSAnLi9Bc3luY0xvYWQuanMnO1xuaW1wb3J0IHtPcHRpb25MaXN0fSBmcm9tICcuL09wdGlvbnMuanMnO1xuXG4vKipcbiAqIFRoZSB0eXBlIGZvciBsaXN0cyBvZiBlbnRpdGllc1xuICovXG5leHBvcnQgdHlwZSBFbnRpdHlMaXN0ID0ge1tuYW1lOiBzdHJpbmddOiBzdHJpbmd9O1xuXG5cbi8qKlxuICogIE9wdGlvbnMgY29udHJvbGxpbmcgdGhlIHByb2Nlc3Mgb2YgY29udmVyc2lvblxuICovXG5leHBvcnQgY29uc3Qgb3B0aW9uczogT3B0aW9uTGlzdCA9IHtcbiAgbG9hZE1pc3NpbmdFbnRpdGllczogdHJ1ZSAgICAgICAgICAgLy8gVHJ1ZSBtZWFucyBsb2FkIGVudGl0eSBmaWxlcyBkeW5hbWljYWxseSBpZiBuZWVkZWRcbn07XG5cbi8qKlxuICogIFRoZSBlbnRpdHkgbmFtZS10by12YWx1ZSB0cmFuc2xhdGlvbiB0YWJsZVxuICogIChiYXNpYyBtYXRoIGVudGl0aWVzIC0tIG90aGVycyBhcmUgbG9hZGVkIGZyb20gZXh0ZXJuYWwgZmlsZXMpXG4gKi9cbmV4cG9ydCBjb25zdCBlbnRpdGllczogRW50aXR5TGlzdCA9IHtcbiAgQXBwbHlGdW5jdGlvbjogJ1xcdTIwNjEnLFxuICBCYWNrc2xhc2g6ICdcXHUyMjE2JyxcbiAgQmVjYXVzZTogJ1xcdTIyMzUnLFxuICBCcmV2ZTogJ1xcdTAyRDgnLFxuICBDYXA6ICdcXHUyMkQyJyxcbiAgQ2VudGVyRG90OiAnXFx1MDBCNycsXG4gIENpcmNsZURvdDogJ1xcdTIyOTknLFxuICBDaXJjbGVNaW51czogJ1xcdTIyOTYnLFxuICBDaXJjbGVQbHVzOiAnXFx1MjI5NScsXG4gIENpcmNsZVRpbWVzOiAnXFx1MjI5NycsXG4gIENvbmdydWVudDogJ1xcdTIyNjEnLFxuICBDb250b3VySW50ZWdyYWw6ICdcXHUyMjJFJyxcbiAgQ29wcm9kdWN0OiAnXFx1MjIxMCcsXG4gIENyb3NzOiAnXFx1MkEyRicsXG4gIEN1cDogJ1xcdTIyRDMnLFxuICBDdXBDYXA6ICdcXHUyMjREJyxcbiAgRGFnZ2VyOiAnXFx1MjAyMScsXG4gIERlbDogJ1xcdTIyMDcnLFxuICBEZWx0YTogJ1xcdTAzOTQnLFxuICBEaWFtb25kOiAnXFx1MjJDNCcsXG4gIERpZmZlcmVudGlhbEQ6ICdcXHUyMTQ2JyxcbiAgRG90RXF1YWw6ICdcXHUyMjUwJyxcbiAgRG91YmxlRG90OiAnXFx1MDBBOCcsXG4gIERvdWJsZVJpZ2h0VGVlOiAnXFx1MjJBOCcsXG4gIERvdWJsZVZlcnRpY2FsQmFyOiAnXFx1MjIyNScsXG4gIERvd25BcnJvdzogJ1xcdTIxOTMnLFxuICBEb3duTGVmdFZlY3RvcjogJ1xcdTIxQkQnLFxuICBEb3duUmlnaHRWZWN0b3I6ICdcXHUyMUMxJyxcbiAgRG93blRlZTogJ1xcdTIyQTQnLFxuICBEb3duYXJyb3c6ICdcXHUyMUQzJyxcbiAgRWxlbWVudDogJ1xcdTIyMDgnLFxuICBFcXVhbFRpbGRlOiAnXFx1MjI0MicsXG4gIEVxdWlsaWJyaXVtOiAnXFx1MjFDQycsXG4gIEV4aXN0czogJ1xcdTIyMDMnLFxuICBFeHBvbmVudGlhbEU6ICdcXHUyMTQ3JyxcbiAgRmlsbGVkVmVyeVNtYWxsU3F1YXJlOiAnXFx1MjVBQScsXG4gIEZvckFsbDogJ1xcdTIyMDAnLFxuICBHYW1tYTogJ1xcdTAzOTMnLFxuICBHZzogJ1xcdTIyRDknLFxuICBHcmVhdGVyRXF1YWw6ICdcXHUyMjY1JyxcbiAgR3JlYXRlckVxdWFsTGVzczogJ1xcdTIyREInLFxuICBHcmVhdGVyRnVsbEVxdWFsOiAnXFx1MjI2NycsXG4gIEdyZWF0ZXJMZXNzOiAnXFx1MjI3NycsXG4gIEdyZWF0ZXJTbGFudEVxdWFsOiAnXFx1MkE3RScsXG4gIEdyZWF0ZXJUaWxkZTogJ1xcdTIyNzMnLFxuICBIYWNlazogJ1xcdTAyQzcnLFxuICBIYXQ6ICdcXHUwMDVFJyxcbiAgSHVtcERvd25IdW1wOiAnXFx1MjI0RScsXG4gIEh1bXBFcXVhbDogJ1xcdTIyNEYnLFxuICBJbTogJ1xcdTIxMTEnLFxuICBJbWFnaW5hcnlJOiAnXFx1MjE0OCcsXG4gIEludGVncmFsOiAnXFx1MjIyQicsXG4gIEludGVyc2VjdGlvbjogJ1xcdTIyQzInLFxuICBJbnZpc2libGVDb21tYTogJ1xcdTIwNjMnLFxuICBJbnZpc2libGVUaW1lczogJ1xcdTIwNjInLFxuICBMYW1iZGE6ICdcXHUwMzlCJyxcbiAgTGFycjogJ1xcdTIxOUUnLFxuICBMZWZ0QW5nbGVCcmFja2V0OiAnXFx1MjdFOCcsXG4gIExlZnRBcnJvdzogJ1xcdTIxOTAnLFxuICBMZWZ0QXJyb3dSaWdodEFycm93OiAnXFx1MjFDNicsXG4gIExlZnRDZWlsaW5nOiAnXFx1MjMwOCcsXG4gIExlZnREb3duVmVjdG9yOiAnXFx1MjFDMycsXG4gIExlZnRGbG9vcjogJ1xcdTIzMEEnLFxuICBMZWZ0UmlnaHRBcnJvdzogJ1xcdTIxOTQnLFxuICBMZWZ0VGVlOiAnXFx1MjJBMycsXG4gIExlZnRUcmlhbmdsZTogJ1xcdTIyQjInLFxuICBMZWZ0VHJpYW5nbGVFcXVhbDogJ1xcdTIyQjQnLFxuICBMZWZ0VXBWZWN0b3I6ICdcXHUyMUJGJyxcbiAgTGVmdFZlY3RvcjogJ1xcdTIxQkMnLFxuICBMZWZ0YXJyb3c6ICdcXHUyMUQwJyxcbiAgTGVmdHJpZ2h0YXJyb3c6ICdcXHUyMUQ0JyxcbiAgTGVzc0VxdWFsR3JlYXRlcjogJ1xcdTIyREEnLFxuICBMZXNzRnVsbEVxdWFsOiAnXFx1MjI2NicsXG4gIExlc3NHcmVhdGVyOiAnXFx1MjI3NicsXG4gIExlc3NTbGFudEVxdWFsOiAnXFx1MkE3RCcsXG4gIExlc3NUaWxkZTogJ1xcdTIyNzInLFxuICBMbDogJ1xcdTIyRDgnLFxuICBMbGVmdGFycm93OiAnXFx1MjFEQScsXG4gIExvbmdMZWZ0QXJyb3c6ICdcXHUyN0Y1JyxcbiAgTG9uZ0xlZnRSaWdodEFycm93OiAnXFx1MjdGNycsXG4gIExvbmdSaWdodEFycm93OiAnXFx1MjdGNicsXG4gIExvbmdsZWZ0YXJyb3c6ICdcXHUyN0Y4JyxcbiAgTG9uZ2xlZnRyaWdodGFycm93OiAnXFx1MjdGQScsXG4gIExvbmdyaWdodGFycm93OiAnXFx1MjdGOScsXG4gIExzaDogJ1xcdTIxQjAnLFxuICBNaW51c1BsdXM6ICdcXHUyMjEzJyxcbiAgTmVzdGVkR3JlYXRlckdyZWF0ZXI6ICdcXHUyMjZCJyxcbiAgTmVzdGVkTGVzc0xlc3M6ICdcXHUyMjZBJyxcbiAgTm90RG91YmxlVmVydGljYWxCYXI6ICdcXHUyMjI2JyxcbiAgTm90RWxlbWVudDogJ1xcdTIyMDknLFxuICBOb3RFcXVhbDogJ1xcdTIyNjAnLFxuICBOb3RFeGlzdHM6ICdcXHUyMjA0JyxcbiAgTm90R3JlYXRlcjogJ1xcdTIyNkYnLFxuICBOb3RHcmVhdGVyRXF1YWw6ICdcXHUyMjcxJyxcbiAgTm90TGVmdFRyaWFuZ2xlOiAnXFx1MjJFQScsXG4gIE5vdExlZnRUcmlhbmdsZUVxdWFsOiAnXFx1MjJFQycsXG4gIE5vdExlc3M6ICdcXHUyMjZFJyxcbiAgTm90TGVzc0VxdWFsOiAnXFx1MjI3MCcsXG4gIE5vdFByZWNlZGVzOiAnXFx1MjI4MCcsXG4gIE5vdFByZWNlZGVzU2xhbnRFcXVhbDogJ1xcdTIyRTAnLFxuICBOb3RSaWdodFRyaWFuZ2xlOiAnXFx1MjJFQicsXG4gIE5vdFJpZ2h0VHJpYW5nbGVFcXVhbDogJ1xcdTIyRUQnLFxuICBOb3RTdWJzZXRFcXVhbDogJ1xcdTIyODgnLFxuICBOb3RTdWNjZWVkczogJ1xcdTIyODEnLFxuICBOb3RTdWNjZWVkc1NsYW50RXF1YWw6ICdcXHUyMkUxJyxcbiAgTm90U3VwZXJzZXRFcXVhbDogJ1xcdTIyODknLFxuICBOb3RUaWxkZTogJ1xcdTIyNDEnLFxuICBOb3RWZXJ0aWNhbEJhcjogJ1xcdTIyMjQnLFxuICBPbWVnYTogJ1xcdTAzQTknLFxuICBPdmVyQmFyOiAnXFx1MjAzRScsXG4gIE92ZXJCcmFjZTogJ1xcdTIzREUnLFxuICBQYXJ0aWFsRDogJ1xcdTIyMDInLFxuICBQaGk6ICdcXHUwM0E2JyxcbiAgUGk6ICdcXHUwM0EwJyxcbiAgUGx1c01pbnVzOiAnXFx1MDBCMScsXG4gIFByZWNlZGVzOiAnXFx1MjI3QScsXG4gIFByZWNlZGVzRXF1YWw6ICdcXHUyQUFGJyxcbiAgUHJlY2VkZXNTbGFudEVxdWFsOiAnXFx1MjI3QycsXG4gIFByZWNlZGVzVGlsZGU6ICdcXHUyMjdFJyxcbiAgUHJvZHVjdDogJ1xcdTIyMEYnLFxuICBQcm9wb3J0aW9uYWw6ICdcXHUyMjFEJyxcbiAgUHNpOiAnXFx1MDNBOCcsXG4gIFJhcnI6ICdcXHUyMUEwJyxcbiAgUmU6ICdcXHUyMTFDJyxcbiAgUmV2ZXJzZUVxdWlsaWJyaXVtOiAnXFx1MjFDQicsXG4gIFJpZ2h0QW5nbGVCcmFja2V0OiAnXFx1MjdFOScsXG4gIFJpZ2h0QXJyb3c6ICdcXHUyMTkyJyxcbiAgUmlnaHRBcnJvd0xlZnRBcnJvdzogJ1xcdTIxQzQnLFxuICBSaWdodENlaWxpbmc6ICdcXHUyMzA5JyxcbiAgUmlnaHREb3duVmVjdG9yOiAnXFx1MjFDMicsXG4gIFJpZ2h0Rmxvb3I6ICdcXHUyMzBCJyxcbiAgUmlnaHRUZWU6ICdcXHUyMkEyJyxcbiAgUmlnaHRUZWVBcnJvdzogJ1xcdTIxQTYnLFxuICBSaWdodFRyaWFuZ2xlOiAnXFx1MjJCMycsXG4gIFJpZ2h0VHJpYW5nbGVFcXVhbDogJ1xcdTIyQjUnLFxuICBSaWdodFVwVmVjdG9yOiAnXFx1MjFCRScsXG4gIFJpZ2h0VmVjdG9yOiAnXFx1MjFDMCcsXG4gIFJpZ2h0YXJyb3c6ICdcXHUyMUQyJyxcbiAgUnJpZ2h0YXJyb3c6ICdcXHUyMURCJyxcbiAgUnNoOiAnXFx1MjFCMScsXG4gIFNpZ21hOiAnXFx1MDNBMycsXG4gIFNtYWxsQ2lyY2xlOiAnXFx1MjIxOCcsXG4gIFNxcnQ6ICdcXHUyMjFBJyxcbiAgU3F1YXJlOiAnXFx1MjVBMScsXG4gIFNxdWFyZUludGVyc2VjdGlvbjogJ1xcdTIyOTMnLFxuICBTcXVhcmVTdWJzZXQ6ICdcXHUyMjhGJyxcbiAgU3F1YXJlU3Vic2V0RXF1YWw6ICdcXHUyMjkxJyxcbiAgU3F1YXJlU3VwZXJzZXQ6ICdcXHUyMjkwJyxcbiAgU3F1YXJlU3VwZXJzZXRFcXVhbDogJ1xcdTIyOTInLFxuICBTcXVhcmVVbmlvbjogJ1xcdTIyOTQnLFxuICBTdGFyOiAnXFx1MjJDNicsXG4gIFN1YnNldDogJ1xcdTIyRDAnLFxuICBTdWJzZXRFcXVhbDogJ1xcdTIyODYnLFxuICBTdWNjZWVkczogJ1xcdTIyN0InLFxuICBTdWNjZWVkc0VxdWFsOiAnXFx1MkFCMCcsXG4gIFN1Y2NlZWRzU2xhbnRFcXVhbDogJ1xcdTIyN0QnLFxuICBTdWNjZWVkc1RpbGRlOiAnXFx1MjI3RicsXG4gIFN1Y2hUaGF0OiAnXFx1MjIwQicsXG4gIFN1bTogJ1xcdTIyMTEnLFxuICBTdXBlcnNldDogJ1xcdTIyODMnLFxuICBTdXBlcnNldEVxdWFsOiAnXFx1MjI4NycsXG4gIFN1cHNldDogJ1xcdTIyRDEnLFxuICBUaGVyZWZvcmU6ICdcXHUyMjM0JyxcbiAgVGhldGE6ICdcXHUwMzk4JyxcbiAgVGlsZGU6ICdcXHUyMjNDJyxcbiAgVGlsZGVFcXVhbDogJ1xcdTIyNDMnLFxuICBUaWxkZUZ1bGxFcXVhbDogJ1xcdTIyNDUnLFxuICBUaWxkZVRpbGRlOiAnXFx1MjI0OCcsXG4gIFVuZGVyQmFyOiAnXFx1MDA1RicsXG4gIFVuZGVyQnJhY2U6ICdcXHUyM0RGJyxcbiAgVW5pb246ICdcXHUyMkMzJyxcbiAgVW5pb25QbHVzOiAnXFx1MjI4RScsXG4gIFVwQXJyb3c6ICdcXHUyMTkxJyxcbiAgVXBEb3duQXJyb3c6ICdcXHUyMTk1JyxcbiAgVXBUZWU6ICdcXHUyMkE1JyxcbiAgVXBhcnJvdzogJ1xcdTIxRDEnLFxuICBVcGRvd25hcnJvdzogJ1xcdTIxRDUnLFxuICBVcHNpbG9uOiAnXFx1MDNBNScsXG4gIFZkYXNoOiAnXFx1MjJBOScsXG4gIFZlZTogJ1xcdTIyQzEnLFxuICBWZXJ0aWNhbEJhcjogJ1xcdTIyMjMnLFxuICBWZXJ0aWNhbFRpbGRlOiAnXFx1MjI0MCcsXG4gIFZ2ZGFzaDogJ1xcdTIyQUEnLFxuICBXZWRnZTogJ1xcdTIyQzAnLFxuICBYaTogJ1xcdTAzOUUnLFxuICBhbXA6ICdcXHUwMDI2JyxcbiAgYWN1dGU6ICdcXHUwMEI0JyxcbiAgYWxlcGg6ICdcXHUyMTM1JyxcbiAgYWxwaGE6ICdcXHUwM0IxJyxcbiAgYW1hbGc6ICdcXHUyQTNGJyxcbiAgYW5kOiAnXFx1MjIyNycsXG4gIGFuZzogJ1xcdTIyMjAnLFxuICBhbmdtc2Q6ICdcXHUyMjIxJyxcbiAgYW5nc3BoOiAnXFx1MjIyMicsXG4gIGFwZTogJ1xcdTIyNEEnLFxuICBiYWNrcHJpbWU6ICdcXHUyMDM1JyxcbiAgYmFja3NpbTogJ1xcdTIyM0QnLFxuICBiYWNrc2ltZXE6ICdcXHUyMkNEJyxcbiAgYmV0YTogJ1xcdTAzQjInLFxuICBiZXRoOiAnXFx1MjEzNicsXG4gIGJldHdlZW46ICdcXHUyMjZDJyxcbiAgYmlnY2lyYzogJ1xcdTI1RUYnLFxuICBiaWdvZG90OiAnXFx1MkEwMCcsXG4gIGJpZ29wbHVzOiAnXFx1MkEwMScsXG4gIGJpZ290aW1lczogJ1xcdTJBMDInLFxuICBiaWdzcWN1cDogJ1xcdTJBMDYnLFxuICBiaWdzdGFyOiAnXFx1MjYwNScsXG4gIGJpZ3RyaWFuZ2xlZG93bjogJ1xcdTI1QkQnLFxuICBiaWd0cmlhbmdsZXVwOiAnXFx1MjVCMycsXG4gIGJpZ3VwbHVzOiAnXFx1MkEwNCcsXG4gIGJsYWNrbG96ZW5nZTogJ1xcdTI5RUInLFxuICBibGFja3RyaWFuZ2xlOiAnXFx1MjVCNCcsXG4gIGJsYWNrdHJpYW5nbGVkb3duOiAnXFx1MjVCRScsXG4gIGJsYWNrdHJpYW5nbGVsZWZ0OiAnXFx1MjVDMicsXG4gIGJvd3RpZTogJ1xcdTIyQzgnLFxuICBib3hkbDogJ1xcdTI1MTAnLFxuICBib3hkcjogJ1xcdTI1MEMnLFxuICBib3htaW51czogJ1xcdTIyOUYnLFxuICBib3hwbHVzOiAnXFx1MjI5RScsXG4gIGJveHRpbWVzOiAnXFx1MjJBMCcsXG4gIGJveHVsOiAnXFx1MjUxOCcsXG4gIGJveHVyOiAnXFx1MjUxNCcsXG4gIGJzb2w6ICdcXHUwMDVDJyxcbiAgYnVsbDogJ1xcdTIwMjInLFxuICBjYXA6ICdcXHUyMjI5JyxcbiAgY2hlY2s6ICdcXHUyNzEzJyxcbiAgY2hpOiAnXFx1MDNDNycsXG4gIGNpcmM6ICdcXHUwMkM2JyxcbiAgY2lyY2VxOiAnXFx1MjI1NycsXG4gIGNpcmNsZWFycm93bGVmdDogJ1xcdTIxQkEnLFxuICBjaXJjbGVhcnJvd3JpZ2h0OiAnXFx1MjFCQicsXG4gIGNpcmNsZWRSOiAnXFx1MDBBRScsXG4gIGNpcmNsZWRTOiAnXFx1MjRDOCcsXG4gIGNpcmNsZWRhc3Q6ICdcXHUyMjlCJyxcbiAgY2lyY2xlZGNpcmM6ICdcXHUyMjlBJyxcbiAgY2lyY2xlZGRhc2g6ICdcXHUyMjlEJyxcbiAgY2x1YnM6ICdcXHUyNjYzJyxcbiAgY29sb246ICdcXHUwMDNBJyxcbiAgY29tcDogJ1xcdTIyMDEnLFxuICBjdGRvdDogJ1xcdTIyRUYnLFxuICBjdWVwcjogJ1xcdTIyREUnLFxuICBjdWVzYzogJ1xcdTIyREYnLFxuICBjdWxhcnI6ICdcXHUyMUI2JyxcbiAgY3VwOiAnXFx1MjIyQScsXG4gIGN1cmFycjogJ1xcdTIxQjcnLFxuICBjdXJseXZlZTogJ1xcdTIyQ0UnLFxuICBjdXJseXdlZGdlOiAnXFx1MjJDRicsXG4gIGRhZ2dlcjogJ1xcdTIwMjAnLFxuICBkYWxldGg6ICdcXHUyMTM4JyxcbiAgZGRhcnI6ICdcXHUyMUNBJyxcbiAgZGVnOiAnXFx1MDBCMCcsXG4gIGRlbHRhOiAnXFx1MDNCNCcsXG4gIGRpZ2FtbWE6ICdcXHUwM0REJyxcbiAgZGl2OiAnXFx1MDBGNycsXG4gIGRpdmlkZW9udGltZXM6ICdcXHUyMkM3JyxcbiAgZG90OiAnXFx1MDJEOScsXG4gIGRvdGVxZG90OiAnXFx1MjI1MScsXG4gIGRvdHBsdXM6ICdcXHUyMjE0JyxcbiAgZG90c3F1YXJlOiAnXFx1MjJBMScsXG4gIGR0ZG90OiAnXFx1MjJGMScsXG4gIGVjaXI6ICdcXHUyMjU2JyxcbiAgZWZEb3Q6ICdcXHUyMjUyJyxcbiAgZWdzOiAnXFx1MkE5NicsXG4gIGVsbDogJ1xcdTIxMTMnLFxuICBlbHM6ICdcXHUyQTk1JyxcbiAgZW1wdHk6ICdcXHUyMjA1JyxcbiAgZXBzaTogJ1xcdTAzQjUnLFxuICBlcHNpdjogJ1xcdTAzRjUnLFxuICBlckRvdDogJ1xcdTIyNTMnLFxuICBldGE6ICdcXHUwM0I3JyxcbiAgZXRoOiAnXFx1MDBGMCcsXG4gIGZsYXQ6ICdcXHUyNjZEJyxcbiAgZm9yazogJ1xcdTIyRDQnLFxuICBmcm93bjogJ1xcdTIzMjInLFxuICBnRWw6ICdcXHUyQThDJyxcbiAgZ2FtbWE6ICdcXHUwM0IzJyxcbiAgZ2FwOiAnXFx1MkE4NicsXG4gIGdpbWVsOiAnXFx1MjEzNycsXG4gIGduRTogJ1xcdTIyNjknLFxuICBnbmFwOiAnXFx1MkE4QScsXG4gIGduZTogJ1xcdTJBODgnLFxuICBnbnNpbTogJ1xcdTIyRTcnLFxuICBndDogJ1xcdTAwM0UnLFxuICBndGRvdDogJ1xcdTIyRDcnLFxuICBoYXJydzogJ1xcdTIxQUQnLFxuICBoYmFyOiAnXFx1MjEwRicsXG4gIGhlbGxpcDogJ1xcdTIwMjYnLFxuICBob29rbGVmdGFycm93OiAnXFx1MjFBOScsXG4gIGhvb2tyaWdodGFycm93OiAnXFx1MjFBQScsXG4gIGltYXRoOiAnXFx1MDEzMScsXG4gIGluZmluOiAnXFx1MjIxRScsXG4gIGludGNhbDogJ1xcdTIyQkEnLFxuICBpb3RhOiAnXFx1MDNCOScsXG4gIGptYXRoOiAnXFx1MDIzNycsXG4gIGthcHBhOiAnXFx1MDNCQScsXG4gIGthcHBhdjogJ1xcdTAzRjAnLFxuICBsRWc6ICdcXHUyQThCJyxcbiAgbGFtYmRhOiAnXFx1MDNCQicsXG4gIGxhcDogJ1xcdTJBODUnLFxuICBsYXJybHA6ICdcXHUyMUFCJyxcbiAgbGFycnRsOiAnXFx1MjFBMicsXG4gIGxicmFjZTogJ1xcdTAwN0InLFxuICBsYnJhY2s6ICdcXHUwMDVCJyxcbiAgbGU6ICdcXHUyMjY0JyxcbiAgbGVmdGxlZnRhcnJvd3M6ICdcXHUyMUM3JyxcbiAgbGVmdHRocmVldGltZXM6ICdcXHUyMkNCJyxcbiAgbGVzc2RvdDogJ1xcdTIyRDYnLFxuICBsbW91c3Q6ICdcXHUyM0IwJyxcbiAgbG5FOiAnXFx1MjI2OCcsXG4gIGxuYXA6ICdcXHUyQTg5JyxcbiAgbG5lOiAnXFx1MkE4NycsXG4gIGxuc2ltOiAnXFx1MjJFNicsXG4gIGxvbmdtYXBzdG86ICdcXHUyN0ZDJyxcbiAgbG9vcGFycm93cmlnaHQ6ICdcXHUyMUFDJyxcbiAgbG93YXN0OiAnXFx1MjIxNycsXG4gIGxvejogJ1xcdTI1Q0EnLFxuICBsdDogJ1xcdTAwM0MnLFxuICBsdGltZXM6ICdcXHUyMkM5JyxcbiAgbHRyaTogJ1xcdTI1QzMnLFxuICBtYWNyOiAnXFx1MDBBRicsXG4gIG1hbHQ6ICdcXHUyNzIwJyxcbiAgbWhvOiAnXFx1MjEyNycsXG4gIG11OiAnXFx1MDNCQycsXG4gIG11bHRpbWFwOiAnXFx1MjJCOCcsXG4gIG5MZWZ0YXJyb3c6ICdcXHUyMUNEJyxcbiAgbkxlZnRyaWdodGFycm93OiAnXFx1MjFDRScsXG4gIG5SaWdodGFycm93OiAnXFx1MjFDRicsXG4gIG5WRGFzaDogJ1xcdTIyQUYnLFxuICBuVmRhc2g6ICdcXHUyMkFFJyxcbiAgbmF0dXI6ICdcXHUyNjZFJyxcbiAgbmVhcnI6ICdcXHUyMTk3JyxcbiAgbmhhcnI6ICdcXHUyMUFFJyxcbiAgbmxhcnI6ICdcXHUyMTlBJyxcbiAgbm90OiAnXFx1MDBBQycsXG4gIG5yYXJyOiAnXFx1MjE5QicsXG4gIG51OiAnXFx1MDNCRCcsXG4gIG52RGFzaDogJ1xcdTIyQUQnLFxuICBudmRhc2g6ICdcXHUyMkFDJyxcbiAgbndhcnI6ICdcXHUyMTk2JyxcbiAgb21lZ2E6ICdcXHUwM0M5JyxcbiAgb21pY3JvbjogJ1xcdTAzQkYnLFxuICBvcjogJ1xcdTIyMjgnLFxuICBvc29sOiAnXFx1MjI5OCcsXG4gIHBlcmlvZDogJ1xcdTAwMkUnLFxuICBwaGk6ICdcXHUwM0M2JyxcbiAgcGhpdjogJ1xcdTAzRDUnLFxuICBwaTogJ1xcdTAzQzAnLFxuICBwaXY6ICdcXHUwM0Q2JyxcbiAgcHJhcDogJ1xcdTJBQjcnLFxuICBwcmVjbmFwcHJveDogJ1xcdTJBQjknLFxuICBwcmVjbmVxcTogJ1xcdTJBQjUnLFxuICBwcmVjbnNpbTogJ1xcdTIyRTgnLFxuICBwcmltZTogJ1xcdTIwMzInLFxuICBwc2k6ICdcXHUwM0M4JyxcbiAgcXVvdDogJ1xcdTAwMjInLFxuICByYXJydGw6ICdcXHUyMUEzJyxcbiAgcmJyYWNlOiAnXFx1MDA3RCcsXG4gIHJicmFjazogJ1xcdTAwNUQnLFxuICByaG86ICdcXHUwM0MxJyxcbiAgcmhvdjogJ1xcdTAzRjEnLFxuICByaWdodHJpZ2h0YXJyb3dzOiAnXFx1MjFDOScsXG4gIHJpZ2h0dGhyZWV0aW1lczogJ1xcdTIyQ0MnLFxuICByaW5nOiAnXFx1MDJEQScsXG4gIHJtb3VzdDogJ1xcdTIzQjEnLFxuICBydGltZXM6ICdcXHUyMkNBJyxcbiAgcnRyaTogJ1xcdTI1QjknLFxuICBzY2FwOiAnXFx1MkFCOCcsXG4gIHNjbkU6ICdcXHUyQUI2JyxcbiAgc2NuYXA6ICdcXHUyQUJBJyxcbiAgc2Nuc2ltOiAnXFx1MjJFOScsXG4gIHNkb3Q6ICdcXHUyMkM1JyxcbiAgc2VhcnI6ICdcXHUyMTk4JyxcbiAgc2VjdDogJ1xcdTAwQTcnLFxuICBzaGFycDogJ1xcdTI2NkYnLFxuICBzaWdtYTogJ1xcdTAzQzMnLFxuICBzaWdtYXY6ICdcXHUwM0MyJyxcbiAgc2ltbmU6ICdcXHUyMjQ2JyxcbiAgc21pbGU6ICdcXHUyMzIzJyxcbiAgc3BhZGVzOiAnXFx1MjY2MCcsXG4gIHN1YjogJ1xcdTIyODInLFxuICBzdWJFOiAnXFx1MkFDNScsXG4gIHN1Ym5FOiAnXFx1MkFDQicsXG4gIHN1Ym5lOiAnXFx1MjI4QScsXG4gIHN1cEU6ICdcXHUyQUM2JyxcbiAgc3VwbkU6ICdcXHUyQUNDJyxcbiAgc3VwbmU6ICdcXHUyMjhCJyxcbiAgc3dhcnI6ICdcXHUyMTk5JyxcbiAgdGF1OiAnXFx1MDNDNCcsXG4gIHRoZXRhOiAnXFx1MDNCOCcsXG4gIHRoZXRhdjogJ1xcdTAzRDEnLFxuICB0aWxkZTogJ1xcdTAyREMnLFxuICB0aW1lczogJ1xcdTAwRDcnLFxuICB0cmlhbmdsZTogJ1xcdTI1QjUnLFxuICB0cmlhbmdsZXE6ICdcXHUyMjVDJyxcbiAgdXBzaTogJ1xcdTAzQzUnLFxuICB1cHVwYXJyb3dzOiAnXFx1MjFDOCcsXG4gIHZlZWJhcjogJ1xcdTIyQkInLFxuICB2ZWxsaXA6ICdcXHUyMkVFJyxcbiAgd2VpZXJwOiAnXFx1MjExOCcsXG4gIHhpOiAnXFx1MDNCRScsXG4gIHllbjogJ1xcdTAwQTUnLFxuICB6ZXRhOiAnXFx1MDNCNicsXG4gIHppZ3JhcnI6ICdcXHUyMUREJyxcblxuICAvL1xuICAvLyAgTmVlZGVkIGJ5IFRlWCBpbnB1dCBqYXhcbiAgbmJzcDogJ1xcdTAwQTAnLFxuICByc3F1bzogJ1xcdTIwMTknLFxuICBsc3F1bzogJ1xcdTIwMTgnXG59O1xuXG4vKipcbiAqIFRoZSBmaWxlcyB0aGF0IGhhdmUgYmVlbiBsb2FkZWRcbiAqL1xuY29uc3QgbG9hZGVkOiB7W25hbWU6IHN0cmluZ106IGJvb2xlYW59ID0ge307XG5cbi8qKlxuICogVXNlZCBieSBlbnRpdHkgZmlsZXMgdG8gYWRkIG1vcmUgZW50aXRpZXMgdG8gdGhlIHRhYmxlXG4gKlxuICogQHBhcmFtIHtFbnRpdHlMaXN0fSBhZGRpdGlvbnMgVGhlIGVudGl0aWVzIHRvIGFkZFxuICogQHBhcmFtIHtzdHJpbmd9IGZpbGUgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGZpbGUgdGhhdCB0aGV5IGNhbWUgZnJvbVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkKGFkZGl0aW9uczogRW50aXR5TGlzdCwgZmlsZTogc3RyaW5nKSB7XG4gIE9iamVjdC5hc3NpZ24oZW50aXRpZXMsIGFkZGl0aW9ucyk7XG4gIGxvYWRlZFtmaWxlXSA9IHRydWU7XG59XG5cbi8qKlxuICogVXNlZCB0byByZW1vdmUgYW4gZW50aXR5IGZyb20gdGhlIGxpc3QsIGlmIG5lZWRlZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBlbnRpdHkgIFRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgdG8gcmVtb3ZlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmUoZW50aXR5OiBzdHJpbmcpIHtcbiAgZGVsZXRlIGVudGl0aWVzW2VudGl0eV07XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgIFRoZSB0ZXh0IHdob3NlIGVudGl0aWVzIGFyZSB0byBiZSByZXBsYWNlZFxuICogQHJldHVybiB7c3RyaW5nfSAgICAgIFRoZSB0ZXh0IHdpdGggZW50cmllcyByZXBsYWNlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNsYXRlKHRleHQ6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB0ZXh0LnJlcGxhY2UoLyYoW2Etel1bYS16MC05XSp8Iyg/OlswLTldK3x4WzAtOWEtZl0rKSk7L2lnLCByZXBsYWNlKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSB1bmljb2RlIGNoYXJhY3RlciBmb3IgYW4gZW50aXR5LCBpZiBmb3VuZFxuICogSWYgbm90LCBsb2FkcyBhbiBlbnRpdHkgZmlsZSB0byBzZWUgaWYgaXQgaXMgdGhlcmUgKGFuZCByZXRyaWVzIGFmdGVyIGxvYWRpbmcpXG4gKiBPdGhlcndpcmUsIHJldHVybnMgdGhlIG9yaWdpbmFsIGVudGl0eSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWF0Y2ggICBUaGUgY29tcGxldGUgZW50aXR5IGJlaW5nIHJlcGxhY2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gZW50aXR5ICBUaGUgbmFtZSBvZiB0aGUgZW50aXR5IHRvIGJlIHJlcGxhY2VkXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICBUaGUgdW5pY29kZSBjaGFyYWN0ZXIgZm9yIHRoZSBlbnRpdHksIG9yIHRoZSBlbnRpdHkgbmFtZSAoaWYgbm9uZSBmb3VuZClcbiAqL1xuZnVuY3Rpb24gcmVwbGFjZShtYXRjaDogc3RyaW5nLCBlbnRpdHk6IHN0cmluZyk6IHN0cmluZyB7XG4gIGlmIChlbnRpdHkuY2hhckF0KDApID09PSAnIycpIHtcbiAgICByZXR1cm4gbnVtZXJpYyhlbnRpdHkuc2xpY2UoMSkpO1xuICB9XG4gIGlmIChlbnRpdGllc1tlbnRpdHldKSB7XG4gICAgcmV0dXJuIGVudGl0aWVzW2VudGl0eV07XG4gIH1cbiAgaWYgKG9wdGlvbnNbJ2xvYWRNaXNzaW5nRW50aXRpZXMnXSkge1xuICAgIGxldCBmaWxlID0gKGVudGl0eS5tYXRjaCgvXlthLXpBLVpdKGZyfHNjcnxvcGYpJC8pID8gUmVnRXhwLiQxIDogZW50aXR5LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpKTtcbiAgICBpZiAoIWxvYWRlZFtmaWxlXSkge1xuICAgICAgbG9hZGVkW2ZpbGVdID0gdHJ1ZTtcbiAgICAgIHJldHJ5QWZ0ZXIoYXN5bmNMb2FkKCcuL3V0aWwvZW50aXRpZXMvJyArIGZpbGUgKyAnLmpzJykpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbWF0Y2g7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IGVudGl0eSAgVGhlIGNoYXJhY3RlciBjb2RlIHBvaW50IGFzIGEgc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICBUaGUgY2hhcmFjdGVyKHMpIHdpdGggdGhlIGdpdmVuIGNvZGUgcG9pbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG51bWVyaWMoZW50aXR5OiBzdHJpbmcpOiBzdHJpbmcge1xuICBsZXQgbiA9IChlbnRpdHkuY2hhckF0KDApID09PSAneCcgP1xuICAgICAgICAgICBwYXJzZUludChlbnRpdHkuc2xpY2UoMSksIDE2KSA6XG4gICAgICAgICAgIHBhcnNlSW50KGVudGl0eSkpO1xuICByZXR1cm4gU3RyaW5nLmZyb21Db2RlUG9pbnQobik7XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDA5LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBBIG5hbWVzcGFjZSBmb3IgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBUZVggUGFyc2VyLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7VEVYQ0xBU1MsIE1tbE5vZGV9IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7RW52TGlzdH0gZnJvbSAnLi9TdGFja0l0ZW0uanMnO1xuaW1wb3J0IHtBcnJheUl0ZW19IGZyb20gJy4vYmFzZS9CYXNlSXRlbXMuanMnO1xuaW1wb3J0IFBhcnNlT3B0aW9ucyBmcm9tICcuL1BhcnNlT3B0aW9ucy5qcyc7XG5pbXBvcnQgTm9kZVV0aWwgZnJvbSAnLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuL1RleEVycm9yLmpzJztcbmltcG9ydCB7ZW50aXRpZXN9IGZyb20gJy4uLy4uL3V0aWwvRW50aXRpZXMuanMnO1xuaW1wb3J0IHtNbWxNdW5kZXJvdmVyfSBmcm9tICcuLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXVuZGVyb3Zlci5qcyc7XG5cblxubmFtZXNwYWNlIFBhcnNlVXRpbCB7XG5cbiAgLy8gVE9ETyAoVlMpOiBDb21iaW5lIHNvbWUgb2YgdGhpcyB3aXRoIGxlbmd0aHMgaW4gdXRpbC5cbiAgY29uc3QgZW1QZXJJbmNoID0gNy4yO1xuICBjb25zdCBweFBlckluY2ggPSA3MjtcbiAgLy8gTm90ZSwgdGhlIGZvbGxvd2luZyBhcmUgVGVYIENNIGZvbnQgdmFsdWVzLlxuICBjb25zdCBVTklUX0NBU0VTOiB7W2tleTogc3RyaW5nXTogKChtOiBudW1iZXIpID0+IG51bWJlcil9ICA9IHtcbiAgICAnZW0nOiBtID0+IG0sXG4gICAgJ2V4JzogbSA9PiBtICogLjQzLFxuICAgICdwdCc6IG0gPT4gbSAvIDEwLCAgICAgICAgICAgICAgICAgICAgLy8gMTAgcHQgdG8gYW4gZW1cbiAgICAncGMnOiBtID0+IG0gKiAxLjIsICAgICAgICAgICAgICAgICAgIC8vIDEyIHB0IHRvIGEgcGNcbiAgICAncHgnOiBtID0+IG0gKiBlbVBlckluY2ggLyBweFBlckluY2gsXG4gICAgJ2luJzogbSA9PiBtICogZW1QZXJJbmNoLFxuICAgICdjbSc6IG0gPT4gbSAqIGVtUGVySW5jaCAvIDIuNTQsIC8vIDIuNTQgY20gdG8gYW4gaW5jaFxuICAgICdtbSc6IG0gPT4gbSAqIGVtUGVySW5jaCAvIDI1LjQsIC8vIDEwIG1tIHRvIGEgY21cbiAgICAnbXUnOiBtID0+IG0gLyAxOCxcbiAgfTtcbiAgY29uc3QgbnVtID0gJyhbLStdPyhbLixdXFxcXGQrfFxcXFxkKyhbLixdXFxcXGQqKT8pKSc7XG4gIGNvbnN0IHVuaXQgPSAnKHB0fGVtfGV4fG11fHB4fG1tfGNtfGlufHBjKSc7XG4gIGNvbnN0IGRpbWVuRW5kID0gUmVnRXhwKCdeXFxcXHMqJyArIG51bSArICdcXFxccyonICsgdW5pdCArICdcXFxccyokJyk7XG4gIGNvbnN0IGRpbWVuUmVzdCA9IFJlZ0V4cCgnXlxcXFxzKicgKyBudW0gKyAnXFxcXHMqJyArIHVuaXQgKyAnID8nKTtcblxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGZvciBhIGRpbWVuc2lvbiBhcmd1bWVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpbSBUaGUgYXJndW1lbnQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVzdCBBbGxvdyBmb3IgdHJhaWxpbmcgZ2FyYmFnZSBpbiB0aGUgZGltZW5zaW9uIHN0cmluZy5cbiAgICogQHJldHVybiB7W3N0cmluZywgc3RyaW5nLCBudW1iZXJdfSBUaGUgbWF0Y2ggcmVzdWx0IGFzIChBbmdsb3NheG9uKSB2YWx1ZSxcbiAgICogICAgIHVuaXQgbmFtZSwgbGVuZ3RoIG9mIG1hdGNoZWQgc3RyaW5nLiBUaGUgbGF0dGVyIGlzIGludGVyZXN0aW5nIGluIHRoZVxuICAgKiAgICAgY2FzZSBvZiB0cmFpbGluZyBnYXJiYWdlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIG1hdGNoRGltZW4oXG4gICAgZGltOiBzdHJpbmcsIHJlc3Q6IGJvb2xlYW4gPSBmYWxzZSk6IFtzdHJpbmcsIHN0cmluZywgbnVtYmVyXSB7XG4gICAgICBsZXQgbWF0Y2ggPSBkaW0ubWF0Y2gocmVzdCA/IGRpbWVuUmVzdCA6IGRpbWVuRW5kKTtcbiAgICAgIHJldHVybiBtYXRjaCA/XG4gICAgICAgIG11UmVwbGFjZShbbWF0Y2hbMV0ucmVwbGFjZSgvLC8sICcuJyksIG1hdGNoWzRdLCBtYXRjaFswXS5sZW5ndGhdKSA6XG4gICAgICAgIFtudWxsLCBudWxsLCAwXTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFRyYW5zZm9ybXMgbXUgZGltZW5zaW9uIHRvIGVtIGlmIG5lY2Vzc2FyeS5cbiAgICogQHBhcmFtIHtbc3RyaW5nLCBzdHJpbmcsIG51bWJlcl19IFt2YWx1ZSwgdW5pdCwgbGVuZ3RoXSBUaGUgZGltZW5zaW9uIHRyaXBsZS5cbiAgICogQHJldHVybiB7W3N0cmluZywgc3RyaW5nLCBudW1iZXJdfSBbdmFsdWUsIHVuaXQsIGxlbmd0aF0gVGhlIHRyYW5zZm9ybWVkIHRyaXBsZS5cbiAgICovXG4gIGZ1bmN0aW9uIG11UmVwbGFjZShbdmFsdWUsIHVuaXQsIGxlbmd0aF06IFtzdHJpbmcsIHN0cmluZywgbnVtYmVyXSk6IFtzdHJpbmcsIHN0cmluZywgbnVtYmVyXSB7XG4gICAgaWYgKHVuaXQgIT09ICdtdScpIHtcbiAgICAgIHJldHVybiBbdmFsdWUsIHVuaXQsIGxlbmd0aF07XG4gICAgfVxuICAgIGxldCBlbSA9IEVtKFVOSVRfQ0FTRVNbdW5pdF0ocGFyc2VGbG9hdCh2YWx1ZSB8fCAnMScpKSk7XG4gICAgcmV0dXJuIFtlbS5zbGljZSgwLCAtMiksICdlbScsIGxlbmd0aF07XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgZGltZW5zaW9uIHN0cmluZyBpbnRvIHN0YW5kYXJkIGVtIGRpbWVuc2lvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpbSBUaGUgYXR0cmlidXRlIHN0cmluZy5cbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgbnVtZXJpY2FsIHZhbHVlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGRpbWVuMmVtKGRpbTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgW3ZhbHVlLCB1bml0XSA9IG1hdGNoRGltZW4oZGltKTtcbiAgICBsZXQgbSA9IHBhcnNlRmxvYXQodmFsdWUgfHwgJzEnKTtcbiAgICBsZXQgZnVuYyA9IFVOSVRfQ0FTRVNbdW5pdF07XG4gICAgcmV0dXJuIGZ1bmMgPyBmdW5jKG0pIDogMDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFR1cm5zIGEgbnVtYmVyIGludG8gYW4gZW0gdmFsdWUuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtIFRoZSBudW1iZXIuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGVtIGRpbWVuc2lvbiBzdHJpbmcuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gRW0obTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoTWF0aC5hYnMobSkgPCAuMDAwNikge1xuICAgICAgcmV0dXJuICcwZW0nO1xuICAgIH1cbiAgICByZXR1cm4gbS50b0ZpeGVkKDMpLnJlcGxhY2UoL1xcLj8wKyQvLCAnJykgKyAnZW0nO1xuICB9XG5cblxuICAvKipcbiAgICogVGFrZXMgYW4gYXJyYXkgb2YgbnVtYmVycyBhbmQgcmV0dXJucyBhIHNwYWNlLXNlcGFyYXRlZCBzdHJpbmcgb2YgZW0gdmFsdWVzLlxuICAgKiBAcGFyYW0ge251bWJlcltdfSBXICBUaGUgd2lkdGhzIHRvIGJlIHR1cm5lZCBpbnRvIGVtIHZhbHVlc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICBUaGUgbnVtYmVycyB3aXRoIGVtIHVuaXRzLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGNvbHMoLi4uVzogbnVtYmVyW10pOiBzdHJpbmcge1xuICAgIHJldHVybiBXLm1hcChuID0+IEVtKG4pKS5qb2luKCcgJyk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gbXJvdyB0aGF0IGhhcyBzdHJldGNoeSBkZWxpbWl0ZXJzIGF0IGVpdGhlciBlbmQsIGFzIG5lZWRlZFxuICAgKiBAcGFyYW0ge1BhcnNlT3B0aW9uc30gY29uZmlndXJhdGlvbiBDdXJyZW50IHBhcnNlIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcGVuIFRoZSBvcGVuaW5nIGZlbmNlLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG1tbCBUaGUgZW5jbG9zZWQgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsb3NlIFRoZSBjbG9zaW5nIGZlbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZz19IGJpZyBCaWdnIGNvbW1hbmQuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZmVuY2VkKGNvbmZpZ3VyYXRpb246IFBhcnNlT3B0aW9ucywgb3Blbjogc3RyaW5nLCBtbWw6IE1tbE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2U6IHN0cmluZywgYmlnOiBzdHJpbmcgPSAnJywgY29sb3I6IHN0cmluZyA9ICcnKSB7XG4gICAgLy8gQHRlc3QgRmVuY2VkLCBGZW5jZWQzXG4gICAgbGV0IG5mID0gY29uZmlndXJhdGlvbi5ub2RlRmFjdG9yeTtcbiAgICBsZXQgbXJvdyA9IG5mLmNyZWF0ZSgnbm9kZScsICdtcm93JywgW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAge29wZW46IG9wZW4sIGNsb3NlOiBjbG9zZSwgdGV4Q2xhc3M6IFRFWENMQVNTLklOTkVSfSk7XG4gICAgbGV0IG1vO1xuICAgIGlmIChiaWcpIHtcbiAgICAgIG1vID0gbmV3IFRleFBhcnNlcignXFxcXCcgKyBiaWcgKyAnbCcgKyBvcGVuLCBjb25maWd1cmF0aW9uLnBhcnNlci5zdGFjay5lbnYsIGNvbmZpZ3VyYXRpb24pLm1tbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgb3Blbk5vZGUgPSBuZi5jcmVhdGUoJ3RleHQnLCBvcGVuKTtcbiAgICAgIG1vID0gbmYuY3JlYXRlKCdub2RlJywgJ21vJywgW10sXG4gICAgICAgICAgICAgICAgICAgICB7ZmVuY2U6IHRydWUsIHN0cmV0Y2h5OiB0cnVlLCBzeW1tZXRyaWM6IHRydWUsIHRleENsYXNzOiBURVhDTEFTUy5PUEVOfSxcbiAgICAgICAgICAgICAgICAgICAgIG9wZW5Ob2RlKTtcbiAgICB9XG4gICAgTm9kZVV0aWwuYXBwZW5kQ2hpbGRyZW4obXJvdywgW21vLCBtbWxdKTtcbiAgICBpZiAoYmlnKSB7XG4gICAgICBtbyA9IG5ldyBUZXhQYXJzZXIoJ1xcXFwnICsgYmlnICsgJ3InICsgY2xvc2UsIGNvbmZpZ3VyYXRpb24ucGFyc2VyLnN0YWNrLmVudiwgY29uZmlndXJhdGlvbikubW1sKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBjbG9zZU5vZGUgPSBuZi5jcmVhdGUoJ3RleHQnLCBjbG9zZSk7XG4gICAgICBtbyA9IG5mLmNyZWF0ZSgnbm9kZScsICdtbycsIFtdLFxuICAgICAgICAgICAgICAgICAgICAge2ZlbmNlOiB0cnVlLCBzdHJldGNoeTogdHJ1ZSwgc3ltbWV0cmljOiB0cnVlLCB0ZXhDbGFzczogVEVYQ0xBU1MuQ0xPU0V9LFxuICAgICAgICAgICAgICAgICAgICAgY2xvc2VOb2RlKTtcbiAgICB9XG4gICAgY29sb3IgJiYgbW8uYXR0cmlidXRlcy5zZXQoJ21hdGhjb2xvcicsIGNvbG9yKTtcbiAgICBOb2RlVXRpbC5hcHBlbmRDaGlsZHJlbihtcm93LCBbbW9dKTtcbiAgICByZXR1cm4gbXJvdztcbiAgfVxuXG5cbiAgLyoqXG4gICAqICBDcmVhdGUgYW4gbXJvdyB0aGF0IGhhcyBcXFxcbWF0aGNob2ljZSB1c2luZyBcXFxcYmlnZyBhbmQgXFxcXGJpZyBmb3IgdGhlIGRlbGltaXRlcnMuXG4gICAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBjb25maWd1cmF0aW9uIFRoZSBjdXJyZW50IHBhcnNlIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcGVuIFRoZSBvcGVuaW5nIGZlbmNlLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG1tbCBUaGUgZW5jbG9zZWQgbm9kZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNsb3NlIFRoZSBjbG9zaW5nIGZlbmNlLlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgbXJvdyBub2RlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpeGVkRmVuY2UoY29uZmlndXJhdGlvbjogUGFyc2VPcHRpb25zLCBvcGVuOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1tbDogTW1sTm9kZSwgY2xvc2U6IHN0cmluZyk6IE1tbE5vZGUge1xuICAgIC8vIEB0ZXN0IENob29zZSwgT3ZlciBXaXRoIERlbGltcywgQWJvdmUgd2l0aCBEZWxpbXNcbiAgICBsZXQgbXJvdyA9IGNvbmZpZ3VyYXRpb24ubm9kZUZhY3RvcnkuY3JlYXRlKCdub2RlJyxcbiAgICAgICdtcm93JywgW10sIHtvcGVuOiBvcGVuLCBjbG9zZTogY2xvc2UsIHRleENsYXNzOiBURVhDTEFTUy5PUkR9KTtcbiAgICBpZiAob3Blbikge1xuICAgICAgTm9kZVV0aWwuYXBwZW5kQ2hpbGRyZW4obXJvdywgW21hdGhQYWxldHRlKGNvbmZpZ3VyYXRpb24sIG9wZW4sICdsJyldKTtcbiAgICB9XG4gICAgaWYgKE5vZGVVdGlsLmlzVHlwZShtbWwsICdtcm93JykpIHtcbiAgICAgIE5vZGVVdGlsLmFwcGVuZENoaWxkcmVuKG1yb3csIE5vZGVVdGlsLmdldENoaWxkcmVuKG1tbCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBOb2RlVXRpbC5hcHBlbmRDaGlsZHJlbihtcm93LCBbbW1sXSk7XG4gICAgfVxuICAgIGlmIChjbG9zZSkge1xuICAgICAgTm9kZVV0aWwuYXBwZW5kQ2hpbGRyZW4obXJvdywgW21hdGhQYWxldHRlKGNvbmZpZ3VyYXRpb24sIGNsb3NlLCAncicpXSk7XG4gICAgfVxuICAgIHJldHVybiBtcm93O1xuICB9XG5cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgbWF0aGNob2ljZSBlbGVtZW50IGZvciBmZW5jZXMuIFRoZXNlIHdpbGwgYmUgcmVzb2x2ZWQgbGF0ZXIsXG4gICAqIG9uY2UgdGhlIHBvc2l0aW9uLCBhbmQgdGhlcmVmb3JlIHNpemUsIG9mIHRoZSBvZiB0aGUgZmVuY2VkIGV4cHJlc3Npb24gaXNcbiAgICoga25vd24uXG4gICAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBjb25maWd1cmF0aW9uIFRoZSBjdXJyZW50IHBhcnNlIG90cGlvbnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmZW5jZSBUaGUgZmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlIFRoZSBzaWRlIG9mIHRoZSBmZW5jZSAobCBvciByKS5cbiAgICogQHJldHVybiB7TW1sTm9kZX0gVGhlIG1hdGhjaG9pY2Ugbm9kZS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBtYXRoUGFsZXR0ZShjb25maWd1cmF0aW9uOiBQYXJzZU9wdGlvbnMsIGZlbmNlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlOiBzdHJpbmcpOiBNbWxOb2RlICB7XG4gICAgaWYgKGZlbmNlID09PSAneycgfHwgZmVuY2UgPT09ICd9Jykge1xuICAgICAgZmVuY2UgPSAnXFxcXCcgKyBmZW5jZTtcbiAgICB9XG4gICAgbGV0IEQgPSAne1xcXFxiaWdnJyArIHNpZGUgKyAnICcgKyBmZW5jZSArICd9JztcbiAgICBsZXQgVCA9ICd7XFxcXGJpZycgKyBzaWRlICsgJyAnICsgZmVuY2UgKyAnfSc7XG4gICAgcmV0dXJuIG5ldyBUZXhQYXJzZXIoJ1xcXFxtYXRoY2hvaWNlJyArIEQgKyBUICsgVCArIFQsIHt9LCBjb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIElmIHRoZSBpbml0aWFsIGNoaWxkLCBza2lwcGluZyBhbnkgaW5pdGlhbCBzcGFjZSBvclxuICAgKiBlbXB0eSBicmFjZXMgKFRlWEF0b20gd2l0aCBjaGlsZCBiZWluZyBhbiBlbXB0eSBpbmZlcnJlZCByb3cpLFxuICAgKiBpcyBhbiA8bW8+LCBwcmVjZWRlIGl0IGJ5IGFuIGVtcHR5IDxtaT4gdG8gZm9yY2UgdGhlIDxtbz4gdG9cbiAgICogYmUgaW5maXguXG4gICAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBjb25maWd1cmF0aW9uIFRoZSBjdXJyZW50IHBhcnNlIG9wdGlvbnMuXG4gICAqIEBwYXJhbSB7TW1sTm9kZVtdfSBub2RlcyBUaGUgcm93IG9mIG5vZGVzIHRvIHNjYW4gZm9yIGFuIGluaXRpYWwgPG1vPlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpeEluaXRpYWxNTyhjb25maWd1cmF0aW9uOiBQYXJzZU9wdGlvbnMsIG5vZGVzOiBNbWxOb2RlW10pIHtcbiAgICBmb3IgKGxldCBpID0gMCwgbSA9IG5vZGVzLmxlbmd0aDsgaSA8IG07IGkrKykge1xuICAgICAgbGV0IGNoaWxkID0gbm9kZXNbaV07XG4gICAgICBpZiAoY2hpbGQgJiYgKCFOb2RlVXRpbC5pc1R5cGUoY2hpbGQsICdtc3BhY2UnKSAmJlxuICAgICAgICAgICAgICAgICAgICAoIU5vZGVVdGlsLmlzVHlwZShjaGlsZCwgJ1RlWEF0b20nKSB8fFxuICAgICAgICAgICAgICAgICAgICAgKE5vZGVVdGlsLmdldENoaWxkcmVuKGNoaWxkKVswXSAmJlxuICAgICAgICAgICAgICAgICAgICAgIE5vZGVVdGlsLmdldENoaWxkcmVuKE5vZGVVdGlsLmdldENoaWxkcmVuKGNoaWxkKVswXSkubGVuZ3RoKSkpKSB7XG4gICAgICAgIGlmIChOb2RlVXRpbC5pc0VtYmVsbGlzaGVkKGNoaWxkKSB8fFxuICAgICAgICAgICAgKE5vZGVVdGlsLmlzVHlwZShjaGlsZCwgJ1RlWEF0b20nKSAmJiBOb2RlVXRpbC5nZXRUZXhDbGFzcyhjaGlsZCkgPT09IFRFWENMQVNTLlJFTCkpIHtcbiAgICAgICAgICBsZXQgbWkgPSBjb25maWd1cmF0aW9uLm5vZGVGYWN0b3J5LmNyZWF0ZSgnbm9kZScsICdtaScpO1xuICAgICAgICAgIG5vZGVzLnVuc2hpZnQobWkpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEJyZWFrIHVwIGEgc3RyaW5nIGludG8gdGV4dCBhbmQgbWF0aCBibG9ja3MuXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUaGUgdGV4dCBpbiB0aGUgbWF0aCBleHByZXNzaW9uIHRvIHBhcnNlLlxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmc9fSBsZXZlbCBUaGUgc2NyaXB0bGV2ZWwuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb250IFRoZSBtYXRodmFyaWFudCB0byB1c2VcbiAgICogQHJldHVybiB7TW1sTm9kZVtdfSBUaGUgbm9kZXMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJuYWwgbWF0aCBleHByZXNzaW9uLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsTWF0aChwYXJzZXI6IFRleFBhcnNlciwgdGV4dDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPzogbnVtYmVyIHwgc3RyaW5nLCBmb250Pzogc3RyaW5nKTogTW1sTm9kZVtdIHtcbiAgICBpZiAocGFyc2VyLmNvbmZpZ3VyYXRpb24ub3B0aW9ucy5pbnRlcm5hbE1hdGgpIHtcbiAgICAgIHJldHVybiBwYXJzZXIuY29uZmlndXJhdGlvbi5vcHRpb25zLmludGVybmFsTWF0aChwYXJzZXIsIHRleHQsIGxldmVsLCBmb250KTtcbiAgICB9XG4gICAgbGV0IG1hdGh2YXJpYW50ID0gZm9udCB8fCBwYXJzZXIuc3RhY2suZW52LmZvbnQ7XG4gICAgbGV0IGRlZiA9IChtYXRodmFyaWFudCA/IHttYXRodmFyaWFudH0gOiB7fSk7XG4gICAgbGV0IG1tbDogTW1sTm9kZVtdID0gW10sIGkgPSAwLCBrID0gMCwgYywgbm9kZSwgbWF0Y2ggPSAnJywgYnJhY2VzID0gMDtcbiAgICBpZiAodGV4dC5tYXRjaCgvXFxcXD9bJHt9XFxcXF18XFxcXFxcKHxcXFxcKGVxKT9yZWZcXHMqXFx7LykpIHtcbiAgICAgIHdoaWxlIChpIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgICAgYyA9IHRleHQuY2hhckF0KGkrKyk7XG4gICAgICAgIGlmIChjID09PSAnJCcpIHtcbiAgICAgICAgICBpZiAobWF0Y2ggPT09ICckJyAmJiBicmFjZXMgPT09IDApIHtcbiAgICAgICAgICAgIC8vIEB0ZXN0IEludGVyc3BlcnNlZCBUZXh0XG4gICAgICAgICAgICBub2RlID0gcGFyc2VyLmNyZWF0ZShcbiAgICAgICAgICAgICAgJ25vZGUnLCAnVGVYQXRvbScsXG4gICAgICAgICAgICAgIFsobmV3IFRleFBhcnNlcih0ZXh0LnNsaWNlKGssIGkgLSAxKSwge30sIHBhcnNlci5jb25maWd1cmF0aW9uKSkubW1sKCldKTtcbiAgICAgICAgICAgIG1tbC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgbWF0Y2ggPSAnJztcbiAgICAgICAgICAgIGsgPSBpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2ggPT09ICcnKSB7XG4gICAgICAgICAgICAvLyBAdGVzdCBJbnRlcnNwZXJzZWQgVGV4dFxuICAgICAgICAgICAgaWYgKGsgPCBpIC0gMSkge1xuICAgICAgICAgICAgICAvLyBAdGVzdCBJbnRlcnNwZXJzZWQgVGV4dFxuICAgICAgICAgICAgICBtbWwucHVzaChpbnRlcm5hbFRleHQocGFyc2VyLCB0ZXh0LnNsaWNlKGssIGkgLSAxKSwgZGVmKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXRjaCA9ICckJztcbiAgICAgICAgICAgIGsgPSBpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjID09PSAneycgJiYgbWF0Y2ggIT09ICcnKSB7XG4gICAgICAgICAgLy8gQHRlc3QgTWJveCBNYm94LCBNYm94IE1hdGhcbiAgICAgICAgICBicmFjZXMrKztcbiAgICAgICAgfSBlbHNlIGlmIChjID09PSAnfScpIHtcbiAgICAgICAgICAvLyBAdGVzdCBNYm94IE1ib3gsIE1ib3ggTWF0aFxuICAgICAgICAgIGlmIChtYXRjaCA9PT0gJ30nICYmIGJyYWNlcyA9PT0gMCkge1xuICAgICAgICAgICAgLy8gQHRlc3QgTWJveCBFcXJlZiwgTWJveCBNYXRoXG4gICAgICAgICAgICBsZXQgYXRvbSA9IChuZXcgVGV4UGFyc2VyKHRleHQuc2xpY2UoaywgaSksIHt9LCBwYXJzZXIuY29uZmlndXJhdGlvbikpLm1tbCgpO1xuICAgICAgICAgICAgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFthdG9tXSwgZGVmKTtcbiAgICAgICAgICAgIG1tbC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgbWF0Y2ggPSAnJztcbiAgICAgICAgICAgIGsgPSBpO1xuICAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2ggIT09ICcnKSB7XG4gICAgICAgICAgICAvLyBAdGVzdCBNYm94IE1hdGgsIE1ib3ggTWJveFxuICAgICAgICAgICAgaWYgKGJyYWNlcykge1xuICAgICAgICAgICAgICAvLyBAdGVzdCBNYm94IE1hdGgsIE1ib3ggTWJveFxuICAgICAgICAgICAgICBicmFjZXMtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgLy8gQHRlc3QgTWJveCBFcXJlZiwgTWJveCBDUlxuICAgICAgICAgIGlmIChtYXRjaCA9PT0gJycgJiYgdGV4dC5zdWJzdHIoaSkubWF0Y2goL14oZXEpP3JlZlxccypcXHsvKSkge1xuICAgICAgICAgICAgLy8gQHRlc3QgTWJveCBFcXJlZlxuICAgICAgICAgICAgbGV0IGxlbiA9ICgoUmVnRXhwIGFzIGFueSlbJyQmJ10gYXMgc3RyaW5nKS5sZW5ndGg7XG4gICAgICAgICAgICBpZiAoayA8IGkgLSAxKSB7XG4gICAgICAgICAgICAgIC8vIEB0ZXN0IE1ib3ggRXFyZWZcbiAgICAgICAgICAgICAgbW1sLnB1c2goaW50ZXJuYWxUZXh0KHBhcnNlciwgdGV4dC5zbGljZShrLCBpIC0gMSksIGRlZikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWF0Y2ggPSAnfSc7XG4gICAgICAgICAgICBrID0gaSAtIDE7XG4gICAgICAgICAgICBpICs9IGxlbjtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gQHRlc3QgTWJveCBDUiwgTWJveCBNYm94XG4gICAgICAgICAgICBjID0gdGV4dC5jaGFyQXQoaSsrKTtcbiAgICAgICAgICAgIGlmIChjID09PSAnKCcgJiYgbWF0Y2ggPT09ICcnKSB7XG4gICAgICAgICAgICAgIC8vIEB0ZXN0IE1ib3ggSW50ZXJuYWwgRGlzcGxheVxuICAgICAgICAgICAgICBpZiAoayA8IGkgLSAyKSB7XG4gICAgICAgICAgICAgICAgLy8gQHRlc3QgTWJveCBJbnRlcm5hbCBEaXNwbGF5XG4gICAgICAgICAgICAgICAgbW1sLnB1c2goaW50ZXJuYWxUZXh0KHBhcnNlciwgdGV4dC5zbGljZShrLCBpIC0gMiksIGRlZikpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG1hdGNoID0gJyknOyBrID0gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJyknICYmIG1hdGNoID09PSAnKScgJiYgYnJhY2VzID09PSAwKSB7XG4gICAgICAgICAgICAgIC8vIEB0ZXN0IE1ib3ggSW50ZXJuYWwgRGlzcGxheVxuICAgICAgICAgICAgICBub2RlID0gcGFyc2VyLmNyZWF0ZShcbiAgICAgICAgICAgICAgICAnbm9kZScsICdUZVhBdG9tJyxcbiAgICAgICAgICAgICAgICBbKG5ldyBUZXhQYXJzZXIodGV4dC5zbGljZShrLCBpIC0gMiksIHt9LCBwYXJzZXIuY29uZmlndXJhdGlvbikpLm1tbCgpXSk7XG4gICAgICAgICAgICAgIG1tbC5wdXNoKG5vZGUpO1xuICAgICAgICAgICAgICBtYXRjaCA9ICcnO1xuICAgICAgICAgICAgICBrID0gaTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoYy5tYXRjaCgvWyR7fVxcXFxdLykgJiYgbWF0Y2ggPT09ICcnKSAge1xuICAgICAgICAgICAgICAvLyBAdGVzdCBNYm94IENSXG4gICAgICAgICAgICAgIGktLTtcbiAgICAgICAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyKDAsIGkgLSAxKSArIHRleHQuc3Vic3RyKGkpOyAvLyByZW1vdmUgXFwgZnJvbSBcXCQsIFxceywgXFx9LCBvciBcXFxcXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWF0Y2ggIT09ICcnKSB7XG4gICAgICAgIC8vIEB0ZXN0IEludGVybmFsIE1hdGggRXJyb3JcbiAgICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdNYXRoTm90VGVybWluYXRlZCcsICdNYXRoIG5vdCB0ZXJtaW5hdGVkIGluIHRleHQgYm94Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChrIDwgdGV4dC5sZW5ndGgpIHtcbiAgICAgIC8vIEB0ZXN0IEludGVyc3BlcnNlZCBUZXh0LCBNYm94IE1ib3hcbiAgICAgIG1tbC5wdXNoKGludGVybmFsVGV4dChwYXJzZXIsIHRleHQuc2xpY2UoayksIGRlZikpO1xuICAgIH1cbiAgICBpZiAobGV2ZWwgIT0gbnVsbCkge1xuICAgICAgLy8gQHRlc3QgTGFiZWwsIEZib3gsIEhib3hcbiAgICAgIG1tbCA9IFtwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zdHlsZScsIG1tbCwge2Rpc3BsYXlzdHlsZTogZmFsc2UsIHNjcmlwdGxldmVsOiBsZXZlbH0pXTtcbiAgICB9IGVsc2UgaWYgKG1tbC5sZW5ndGggPiAxKSB7XG4gICAgICAvLyBAdGVzdCBJbnRlcnNwZXJzZWQgVGV4dFxuICAgICAgbW1sID0gW3BhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXJvdycsIG1tbCldO1xuICAgIH1cbiAgICByZXR1cm4gbW1sO1xuICB9XG5cblxuICAvKipcbiAgICogUGFyc2VzIHRleHQgaW50ZXJuYWwgdG8gYm94ZXMgb3IgbGFiZWxzLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSB0ZXh0IHRvIHBhcnNlLlxuICAgKiBAcGFyYW0ge0Vudkxpc3R9IGRlZiBUaGUgYXR0cmlidXRlcyBvZiB0aGUgdGV4dCBub2RlLlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgdGV4dCBub2RlLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGludGVybmFsVGV4dChwYXJzZXI6IFRleFBhcnNlciwgdGV4dDogc3RyaW5nLCBkZWY6IEVudkxpc3QpOiBNbWxOb2RlIHtcbiAgICAvLyBAdGVzdCBMYWJlbCwgRmJveCwgSGJveFxuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoL15cXHMrLywgZW50aXRpZXMubmJzcCkucmVwbGFjZSgvXFxzKyQvLCBlbnRpdGllcy5uYnNwKTtcbiAgICBsZXQgdGV4dE5vZGUgPSBwYXJzZXIuY3JlYXRlKCd0ZXh0JywgdGV4dCk7XG4gICAgcmV0dXJuIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRleHQnLCBbXSwgZGVmLCB0ZXh0Tm9kZSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG11bmRlcm92ZXIgbm9kZSB3aXRoIHRoZSBnaXZlbiBzY3JpcHQgcG9zaXRpb24uXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY3VycmVudCBUZVggcGFyc2VyLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IGJhc2UgICAgICAgVGhlIGJhc2Ugbm9kZS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBzY3JpcHQgICAgIFRoZSB1bmRlci0gb3Igb3Zlci1zY3JpcHQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwb3MgICAgICAgICBFaXRoZXIgJ292ZXInIG9yICd1bmRlcicuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhY2sgICAgICBUcnVlIGlmIHN1cGVyLSBvciBzdWItc2NyaXB0cyBzaG91bGQgc3RhY2suXG4gICAqIEByZXR1cm4ge01tbE5vZGV9ICAgICAgICAgICBUaGUgZ2VuZXJhdGVkIG5vZGUgKE1tbE11bmRlcm92ZXIgb3IgVGVYQXRvbSlcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiB1bmRlck92ZXIocGFyc2VyOiBUZXhQYXJzZXIsIGJhc2U6IE1tbE5vZGUsIHNjcmlwdDogTW1sTm9kZSwgcG9zOiBzdHJpbmcsIHN0YWNrOiBib29sZWFuKTogTW1sTm9kZSB7XG4gICAgLy8gQHRlc3QgT3ZlcmxpbmVcbiAgICBQYXJzZVV0aWwuY2hlY2tNb3ZhYmxlTGltaXRzKGJhc2UpO1xuICAgIGlmIChOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ211bmRlcm92ZXInKSAmJiBOb2RlVXRpbC5pc0VtYmVsbGlzaGVkKGJhc2UpKSB7XG4gICAgICAvLyBAdGVzdCBPdmVybGluZSBMaW1pdHNcbiAgICAgIE5vZGVVdGlsLnNldFByb3BlcnRpZXMoTm9kZVV0aWwuZ2V0Q29yZU1PKGJhc2UpLCB7bHNwYWNlOiAwLCByc3BhY2U6IDB9KTtcbiAgICAgIGNvbnN0IG1vID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtbycsIFtdLCB7cnNwYWNlOiAwfSk7XG4gICAgICBiYXNlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcm93JywgW21vLCBiYXNlXSk7XG4gICAgICAvLyBUT0RPPyBhZGQgYW4gZW1wdHkgPG1pPiBzbyBpdCdzIG5vdCBlbWJlbGxpc2hlZCBhbnkgbW9yZVxuICAgIH1cbiAgICBjb25zdCBtbWwgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ211bmRlcm92ZXInLCBbYmFzZV0pIGFzIE1tbE11bmRlcm92ZXI7XG4gICAgTm9kZVV0aWwuc2V0Q2hpbGQobW1sLCBwb3MgPT09ICdvdmVyJyA/ICBtbWwub3ZlciA6IG1tbC51bmRlciwgc2NyaXB0KTtcbiAgICBsZXQgbm9kZTogTW1sTm9kZSA9IG1tbDtcbiAgICBpZiAoc3RhY2spIHtcbiAgICAgIC8vIEB0ZXN0IE92ZXJicmFjZSAxIDIgMywgVW5kZXJicmFjZSwgT3ZlcmJyYWNlIE9wIDEgMlxuICAgICAgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFttbWxdLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLCBtb3Zlc3Vwc3ViOiB0cnVlfSk7XG4gICAgfVxuICAgIE5vZGVVdGlsLnNldFByb3BlcnR5KG5vZGUsICdzdWJzdXBPSycsIHRydWUpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCBtb3ZhYmxlbGltaXRzIHRvIGZhbHNlIGlmIG5lY2Vzc2FyeS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBiYXNlICAgVGhlIGJhc2Ugbm9kZSBiZWluZyB0ZXN0ZWQuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gY2hlY2tNb3ZhYmxlTGltaXRzKGJhc2U6IE1tbE5vZGUpIHtcbiAgICBjb25zdCBzeW1ib2wgPSAoTm9kZVV0aWwuaXNUeXBlKGJhc2UsICdtbycpID8gTm9kZVV0aWwuZ2V0Rm9ybShiYXNlKSA6IG51bGwpO1xuICAgIGlmIChOb2RlVXRpbC5nZXRQcm9wZXJ0eShiYXNlLCAnbW92YWJsZWxpbWl0cycpIHx8IChzeW1ib2wgJiYgc3ltYm9sWzNdICYmIHN5bWJvbFszXS5tb3ZhYmxlbGltaXRzKSkge1xuICAgICAgLy8gQHRlc3QgT3ZlcmxpbmUgU3VtXG4gICAgICBOb2RlVXRpbC5zZXRQcm9wZXJ0aWVzKGJhc2UsIHttb3ZhYmxlbGltaXRzOiBmYWxzZX0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUcmltIHNwYWNlcyBmcm9tIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUaGUgc3RyaW5nIHRvIGNsZWFuLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHJlbW92ZWQuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gdHJpbVNwYWNlcyh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YodGV4dCkgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGV4dDtcbiAgICB9XG4gICAgbGV0IFRFWFQgPSB0ZXh0LnRyaW0oKTtcbiAgICBpZiAoVEVYVC5tYXRjaCgvXFxcXCQvKSAmJiB0ZXh0Lm1hdGNoKC8gJC8pKSB7XG4gICAgICBURVhUICs9ICcgJztcbiAgICB9XG4gICAgcmV0dXJuIFRFWFQ7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTZXRzIGFsaWdubWVudCBpbiBhcnJheSBkZWZpbml0aW9ucy5cbiAgICogQHBhcmFtIHtBcnJheUl0ZW19IGFycmF5IFRoZSBhcnJheSBpdGVtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWxpZ24gVGhlIGFsaWdubWVudCBzdHJpbmcuXG4gICAqIEByZXR1cm4ge0FycmF5SXRlbX0gVGhlIGFsdGVyZWQgYXJyYXkgaXRlbS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBzZXRBcnJheUFsaWduKGFycmF5OiBBcnJheUl0ZW0sIGFsaWduOiBzdHJpbmcpOiBBcnJheUl0ZW0ge1xuICAgIC8vIEB0ZXN0IEFycmF5MSwgQXJyYXkyLCBBcnJheSBUZXN0XG4gICAgYWxpZ24gPSBQYXJzZVV0aWwudHJpbVNwYWNlcyhhbGlnbiB8fCAnJyk7XG4gICAgaWYgKGFsaWduID09PSAndCcpIHtcbiAgICAgIGFycmF5LmFycmF5ZGVmLmFsaWduID0gJ2Jhc2VsaW5lIDEnO1xuICAgIH0gZWxzZSBpZiAoYWxpZ24gPT09ICdiJykge1xuICAgICAgYXJyYXkuYXJyYXlkZWYuYWxpZ24gPSAnYmFzZWxpbmUgLTEnO1xuICAgIH0gZWxzZSBpZiAoYWxpZ24gPT09ICdjJykge1xuICAgICAgYXJyYXkuYXJyYXlkZWYuYWxpZ24gPSAnYXhpcyc7XG4gICAgfSBlbHNlIGlmIChhbGlnbikge1xuICAgICAgYXJyYXkuYXJyYXlkZWYuYWxpZ24gPSBhbGlnbjtcbiAgICB9IC8vIEZJWE1FOiBzaG91bGQgYmUgYW4gZXJyb3I/XG4gICAgcmV0dXJuIGFycmF5O1xuICB9XG5cblxuICAvKipcbiAgICogUmVwbGFjZSBtYWNybyBwYXJhbWV0ZXJzIHdpdGggdGhlaXIgdmFsdWVzLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IFRlWCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3MgQSBsaXN0IG9mIGFyZ3VtZW50cyBmb3IgbWFjcm8gcGFyYW1ldGVycy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0ciBUaGUgbWFjcm8gcGFyYW1ldGVyIHN0cmluZy5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RyaW5nIHdpdGggYWxsIHBhcmFtZXRlcnMgcmVwbGFjZWQgYnkgYXJndW1lbnRzLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIHN1YnN0aXR1dGVBcmdzKHBhcnNlcjogVGV4UGFyc2VyLCBhcmdzOiBzdHJpbmdbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgdGV4dCA9ICcnO1xuICAgIGxldCBuZXdzdHJpbmcgPSAnJztcbiAgICBsZXQgaSA9IDA7XG4gICAgd2hpbGUgKGkgPCBzdHIubGVuZ3RoKSB7XG4gICAgICBsZXQgYyA9IHN0ci5jaGFyQXQoaSsrKTtcbiAgICAgIGlmIChjID09PSAnXFxcXCcpIHtcbiAgICAgICAgdGV4dCArPSBjICsgc3RyLmNoYXJBdChpKyspO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAoYyA9PT0gJyMnKSB7XG4gICAgICAgIGMgPSBzdHIuY2hhckF0KGkrKyk7XG4gICAgICAgIGlmIChjID09PSAnIycpIHtcbiAgICAgICAgICB0ZXh0ICs9IGM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKCFjLm1hdGNoKC9bMS05XS8pIHx8IHBhcnNlSW50KGMsIDEwKSA+IGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0lsbGVnYWxNYWNyb1BhcmFtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsbGVnYWwgbWFjcm8gcGFyYW1ldGVyIHJlZmVyZW5jZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXdzdHJpbmcgPSBhZGRBcmdzKHBhcnNlciwgYWRkQXJncyhwYXJzZXIsIG5ld3N0cmluZywgdGV4dCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzW3BhcnNlSW50KGMsIDEwKSAtIDFdKTtcbiAgICAgICAgICB0ZXh0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRleHQgKz0gYztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFkZEFyZ3MocGFyc2VyLCBuZXdzdHJpbmcsIHRleHQpO1xuICB9XG5cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBleHBhbmRlZCBhcmd1bWVudCB0byBhbiBhbHJlYWR5IG1hY3JvIHBhcmFtZXRlciBzdHJpbmcuICBNYWtlc1xuICAgKiBzdXJlIHRoYXQgbWFjcm9zIGFyZSBmb2xsb3dlZCBieSBhIHNwYWNlIGlmIHRoZWlyIG5hbWVzIGNvdWxkIGFjY2lkZW50YWxseVxuICAgKiBiZSBjb250aW51ZWQgaW50byB0aGUgZm9sbG93aW5nIHRleHQuXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgVGVYIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHMxIFRoZSBhbHJlYWR5IGV4cGFuZGVkIHN0cmluZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHMyIFRoZSBzdHJpbmcgdG8gYWRkLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb21iaW5lZCBzdHJpbmcuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gYWRkQXJncyhwYXJzZXI6IFRleFBhcnNlciwgczE6IHN0cmluZywgczI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHMyLm1hdGNoKC9eW2Etel0vaSkgJiYgczEubWF0Y2goLyhefFteXFxcXF0pKFxcXFxcXFxcKSpcXFxcW2Etel0rJC9pKSkge1xuICAgICAgczEgKz0gJyAnO1xuICAgIH1cbiAgICBpZiAoczEubGVuZ3RoICsgczIubGVuZ3RoID4gcGFyc2VyLmNvbmZpZ3VyYXRpb24ub3B0aW9uc1snbWF4QnVmZmVyJ10pIHtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTWF4QnVmZmVyU2l6ZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdNYXRoSmF4IGludGVybmFsIGJ1ZmZlciBzaXplIGV4Y2VlZGVkOyBpcyB0aGVyZSBhJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICcgcmVjdXJzaXZlIG1hY3JvIGNhbGw/Jyk7XG4gICAgfVxuICAgIHJldHVybiBzMSArIHMyO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcG9ydCBhbiBlcnJvciBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgbWFjcm8gc3Vic3RpdHV0aW9ucy5cbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCBUZVggcGFyc2VyLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzTWFjcm8gIFRydWUgaWYgd2UgYXJlIHN1YnN0aXR1dGluZyBhIG1hY3JvLCBmYWxzZSBmb3IgZW52aXJvbm1lbnQuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gY2hlY2tNYXhNYWNyb3MocGFyc2VyOiBUZXhQYXJzZXIsIGlzTWFjcm86IGJvb2xlYW4gPSB0cnVlKSB7XG4gICAgaWYgKCsrcGFyc2VyLm1hY3JvQ291bnQgPD0gcGFyc2VyLmNvbmZpZ3VyYXRpb24ub3B0aW9uc1snbWF4TWFjcm9zJ10pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKGlzTWFjcm8pIHtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTWF4TWFjcm9TdWIxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAnTWF0aEpheCBtYXhpbXVtIG1hY3JvIHN1YnN0aXR1dGlvbiBjb3VudCBleGNlZWRlZDsgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIGhlcmUgYSByZWN1cnNpdmUgbWFjcm8gY2FsbD8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdNYXhNYWNyb1N1YjInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICdNYXRoSmF4IG1heGltdW0gc3Vic3RpdHV0aW9uIGNvdW50IGV4Y2VlZGVkOyAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgdGhlcmUgYSByZWN1cnNpdmUgbGF0ZXggZW52aXJvbm1lbnQ/Jyk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogIENoZWNrIGZvciBiYWQgbmVzdGluZyBvZiBlcXVhdGlvbiBlbnZpcm9ubWVudHNcbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBjaGVja0VxbkVudihwYXJzZXI6IFRleFBhcnNlcikge1xuICAgIGlmIChwYXJzZXIuc3RhY2suZ2xvYmFsLmVxbmVudikge1xuICAgICAgLy8gQHRlc3QgRXJyb25lb3VzTmVzdGluZ0VxXG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0Vycm9uZW91c05lc3RpbmdFcScsICdFcnJvbmVvdXMgbmVzdGluZyBvZiBlcXVhdGlvbiBzdHJ1Y3R1cmVzJyk7XG4gICAgfVxuICAgIHBhcnNlci5zdGFjay5nbG9iYWwuZXFuZW52ID0gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3B5IGFuIE1tbE5vZGUgYW5kIGFkZCBpdCAoYW5kIGl0cyBjaGlsZHJlbikgdG8gdGhlIHByb3BlciBsaXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlICAgICAgIFRoZSBNbWxOb2RlIHRvIGNvcHlcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBhY3RpdmUgdGV4IHBhcnNlclxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSAgICAgICAgICAgVGhlIGR1cGxpY2F0ZSB0cmVlXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gY29weU5vZGUobm9kZTogTW1sTm9kZSwgcGFyc2VyOiBUZXhQYXJzZXIpOiBNbWxOb2RlICB7XG4gICAgY29uc3QgdHJlZSA9IG5vZGUuY29weSgpIGFzIE1tbE5vZGU7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHBhcnNlci5jb25maWd1cmF0aW9uO1xuICAgIHRyZWUud2Fsa1RyZWUoKG46IE1tbE5vZGUpID0+IHtcbiAgICAgIG9wdGlvbnMuYWRkTm9kZShuLmtpbmQsIG4pO1xuICAgICAgY29uc3QgbGlzdHMgPSAobi5nZXRQcm9wZXJ0eSgnaW4tbGlzdHMnKSBhcyBzdHJpbmcgfHwgJycpLnNwbGl0KC8sLyk7XG4gICAgICBmb3IgKGNvbnN0IGxpc3Qgb2YgbGlzdHMpIHtcbiAgICAgICAgbGlzdCAmJiBvcHRpb25zLmFkZE5vZGUobGlzdCwgbik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHRyZWU7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHBsYWNlaG9sZGVyIGZvciBmdXR1cmUgc2VjdXJpdHkgZmlsdGVyaW5nIG9mIGF0dHJpYnV0ZXMuXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgYXR0cmlidXRlIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZSBUaGUgYXR0cmlidXRlIHZhbHVlIHRvIGZpbHRlci5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZmlsdGVyZWQgdmFsdWUuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gTW1sRmlsdGVyQXR0cmlidXRlKF9wYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IGluIHNlY3VyaXR5IHBhY2thZ2UuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cblxuICAvKipcbiAgICogSW5pdGlhbGlzZXMgYW4gc3RhY2sgZW52aXJvbm1lbnQgd2l0aCBjdXJyZW50IGZvbnQgZGVmaW5pdGlvbiBpbiB0aGUgcGFyc2VyLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gICAqIEByZXR1cm4ge0Vudkxpc3R9IFRoZSBpbml0aWFsaXNlZCBlbnZpcm9ubWVudCBsaXN0LlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGdldEZvbnREZWYocGFyc2VyOiBUZXhQYXJzZXIpOiBFbnZMaXN0IHtcbiAgICBjb25zdCBmb250ID0gcGFyc2VyLnN0YWNrLmVudlsnZm9udCddO1xuICAgIHJldHVybiAoZm9udCA/IHttYXRodmFyaWFudDogZm9udH0gOiB7fSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTcGxpdHMgYSBwYWNrYWdlIG9wdGlvbiBsaXN0IG9mIHRoZSBmb3JtIFt4PXksej0xXSBpbnRvIGFuIGF0dHJpYnV0ZSBsaXN0XG4gICAqIG9mIHRoZSBmb3JtIHt4OiB5LCB6OiAxfS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGF0dHJpYiBUaGUgYXR0cmlidXRlcyBvZiB0aGUgcGFja2FnZS5cbiAgICogQHBhcmFtIHt7W2tleTogc3RyaW5nXTogbnVtYmVyfT99IGFsbG93ZWQgQSBsaXN0IG9mIGFsbG93ZWQgb3B0aW9ucy4gSWZcbiAgICogICAgIGdpdmVuIG9ubHkgYWxsb3dlZCBhcmd1bWVudHMgYXJlIHJldHVybmVkLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW4/fSBlcnJvciBJZiB0cnVlLCByYWlzZXMgYW4gZXhjZXB0aW9uIGlmIG5vdCBhbGxvd2VkIG9wdGlvbnNcbiAgICogICAgIGFyZSBmb3VuZC5cbiAgICogQHJldHVybiB7RW52TGlzdH0gVGhlIGF0dHJpYnV0ZSBsaXN0LlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGtleXZhbE9wdGlvbnMoYXR0cmliOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93ZWQ6IHtba2V5OiBzdHJpbmddOiBudW1iZXJ9ID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGJvb2xlYW4gPSBmYWxzZSk6IEVudkxpc3Qge1xuICAgIGxldCBkZWY6IEVudkxpc3QgPSByZWFkS2V5dmFsKGF0dHJpYik7XG4gICAgaWYgKGFsbG93ZWQpIHtcbiAgICAgIGZvciAobGV0IGtleSBvZiBPYmplY3Qua2V5cyhkZWYpKSB7XG4gICAgICAgIGlmICghYWxsb3dlZC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0ludmFsaWRPcHRpb24nLCAnSW52YWxpZCBvcHRpb246ICUxJywga2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVsZXRlIGRlZltrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZWY7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUga2V5dmFsIGZ1bmN0aW9uIGZyb20gaHR0cHM6Ly93d3cuY3Rhbi5vcmcvcGtnL2tleXZhbFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUaGUgb3B0aW9uYWwgcGFyYW1ldGVyIHN0cmluZyBmb3IgYSBwYWNrYWdlIG9yXG4gICAqICAgICBjb21tYW5kLlxuICAgKiBAcmV0dXJuIHtFbnZMaXN0fSBTZXQgb2Ygb3B0aW9ucyBhcyBrZXkvdmFsdWUgcGFpcnMuXG4gICAqL1xuICBmdW5jdGlvbiByZWFkS2V5dmFsKHRleHQ6IHN0cmluZyk6IEVudkxpc3Qge1xuICAgIGxldCBvcHRpb25zOiBFbnZMaXN0ID0ge307XG4gICAgbGV0IHJlc3QgPSB0ZXh0O1xuICAgIGxldCBlbmQsIGtleSwgdmFsO1xuICAgIHdoaWxlIChyZXN0KSB7XG4gICAgICBba2V5LCBlbmQsIHJlc3RdID0gcmVhZFZhbHVlKHJlc3QsIFsnPScsICcsJ10pO1xuICAgICAgaWYgKGVuZCA9PT0gJz0nKSB7XG4gICAgICAgIFt2YWwsIGVuZCwgcmVzdF0gPSByZWFkVmFsdWUocmVzdCwgWycsJ10pO1xuICAgICAgICB2YWwgPSAodmFsID09PSAnZmFsc2UnIHx8IHZhbCA9PT0gJ3RydWUnKSA/XG4gICAgICAgICAgICBKU09OLnBhcnNlKHZhbCkgOiB2YWw7XG4gICAgICAgIG9wdGlvbnNba2V5XSA9IHZhbDtcbiAgICAgIH0gZWxzZSBpZiAoa2V5KSB7XG4gICAgICAgIG9wdGlvbnNba2V5XSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zO1xuICB9XG5cblxuICAvKipcbiAgICogUmVtb3ZlcyBwYWlycyBvZiBvdXRlciBicmFjZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSBzdHJpbmcgdG8gY2xlYW4uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjb3VudCBUaGUgbnVtYmVyIG9mIG91dGVyIGJyYWNlcyB0byBzbGljZSBvZmYuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNsZWFuZWQgc3RyaW5nLlxuICAgKi9cbiAgZnVuY3Rpb24gcmVtb3ZlQnJhY2VzKHRleHQ6IHN0cmluZywgY291bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgd2hpbGUgKGNvdW50ID4gMCkge1xuICAgICAgdGV4dCA9IHRleHQudHJpbSgpLnNsaWNlKDEsIC0xKTtcbiAgICAgIGNvdW50LS07XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnRyaW0oKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJlYWQgYSB2YWx1ZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcgdW50aWwgYW4gZW5kIHBhcmFtZXRlciBpcyByZWFjaGVkIG9yXG4gICAqIHN0cmluZyBpcyBleGhhdXN0ZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSBzdHJpbmcgdG8gcHJvY2Vzcy5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gZW5kIExpc3Qgb2YgcG9zc2libGUgZW5kIGNoYXJhY3RlcnMuXG4gICAqIEByZXR1cm4ge1tzdHJpbmcsIHN0cmluZywgc3RyaW5nXX0gVGhlIGNvbGxlY3RlZCB2YWx1ZSwgdGhlIGFjdHVhbCBlbmRcbiAgICogICAgIGNoYXJhY3RlciwgYW5kIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgc3RpbGwgdG8gcGFyc2UuXG4gICAqL1xuICBmdW5jdGlvbiByZWFkVmFsdWUodGV4dDogc3RyaW5nLCBlbmQ6IHN0cmluZ1tdKTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddIHtcbiAgICBsZXQgbGVuZ3RoID0gdGV4dC5sZW5ndGg7XG4gICAgbGV0IGJyYWNlcyA9IDA7XG4gICAgbGV0IHZhbHVlID0gJyc7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBsZXQgc3RhcnQgPSAwOyAgICAgICAgICAgICAvLyBDb3VudGVyIGZvciB0aGUgc3RhcnRpbmcgbGVmdCBicmFjZXMuXG4gICAgbGV0IHN0YXJ0Q291bnQgPSB0cnVlOyAgICAgLy8gRmxhZyBmb3IgY291bnRpbmcgc3RhcnRpbmcgbGVmdCBicmFjZXMuXG4gICAgbGV0IHN0b3BDb3VudCA9IGZhbHNlOyAgICAgLy8gSWYgdHJ1ZSByaWdodCBicmFjZXMgYXJlIGZvdW5kIGRpcmVjdGx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgc3RhcnRpbmcgYnJhY2VzLCBidXQgbm8gb3RoZXIgY2hhciB5ZXQuXG4gICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7XG4gICAgICBsZXQgYyA9IHRleHRbaW5kZXgrK107XG4gICAgICBzd2l0Y2ggKGMpIHtcbiAgICAgIGNhc2UgJyAnOiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgc3BhY2VzLlxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3snOlxuICAgICAgICBpZiAoc3RhcnRDb3VudCkgeyAgICAgIC8vIENvdW50IHN0YXJ0IGxlZnQgYnJhY2VzIGF0IHN0YXJ0LlxuICAgICAgICAgIHN0YXJ0Kys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc3RvcENvdW50ID0gZmFsc2U7XG4gICAgICAgICAgaWYgKHN0YXJ0ID4gYnJhY2VzKSB7ICAgLy8gU29tZSBzdGFydCBsZWZ0IGJyYWNlcyBoYXZlIGJlZW4gY2xvc2VkLlxuICAgICAgICAgICAgc3RhcnQgPSBicmFjZXM7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJyYWNlcysrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ30nOlxuICAgICAgICBpZiAoYnJhY2VzKSB7ICAgICAgICAgIC8vIENsb3NpbmcgYnJhY2VzLlxuICAgICAgICAgIGJyYWNlcy0tO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFydENvdW50IHx8IHN0b3BDb3VudCkgeyAgLy8gQ2xvc2luZyBicmFjZXMgYXQgdGhlIHN0YXJ0LlxuICAgICAgICAgIHN0YXJ0LS07XG4gICAgICAgICAgc3RvcENvdW50ID0gdHJ1ZTsgICAgLy8gQ29udGludWUgdG8gY2xvc2UgYnJhY2VzLlxuICAgICAgICB9XG4gICAgICAgIHN0YXJ0Q291bnQgPSBmYWxzZTsgICAgLy8gU3RvcCBjb3VudGluZyBzdGFydCBsZWZ0IGJyYWNlcy5cbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAoIWJyYWNlcyAmJiBlbmQuaW5kZXhPZihjKSAhPT0gLTEpIHsgICAvLyBFbmQgY2hhcmFjdGVyIHJlYWNoZWQuXG4gICAgICAgICAgcmV0dXJuIFtzdG9wQ291bnQgPyAndHJ1ZScgOiAgICAgICAgICAgIC8vIElmIFN0b3AgY291bnQgaXMgdHJ1ZSB3ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYXZlIGJhbGFuY2VkIGJyYWNlcywgb25seS5cbiAgICAgICAgICAgICAgICAgIHJlbW92ZUJyYWNlcyh2YWx1ZSwgc3RhcnQpLCBjLCB0ZXh0LnNsaWNlKGluZGV4KV07XG4gICAgICAgIH1cbiAgICAgICAgc3RhcnRDb3VudCA9IGZhbHNlO1xuICAgICAgICBzdG9wQ291bnQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHZhbHVlICs9IGM7XG4gICAgfVxuICAgIGlmIChicmFjZXMpIHtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRXh0cmFPcGVuTWlzc2luZ0Nsb3NlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAnRXh0cmEgb3BlbiBicmFjZSBvciBtaXNzaW5nIGNsb3NlIGJyYWNlJyk7XG4gICAgfVxuICAgIHJldHVybiBbc3RvcENvdW50ID8gJ3RydWUnIDogcmVtb3ZlQnJhY2VzKHZhbHVlLCBzdGFydCksICcnLCB0ZXh0LnNsaWNlKGluZGV4KV07XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBQYXJzZVV0aWw7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDA5LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBUaGUgU3RhY2sgZm9yIHRoZSBUZVggcGFyc2VyLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cblxuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4vTm9kZVV0aWwuanMnO1xuaW1wb3J0IHtNbWxOb2RlfSBmcm9tICcuLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQge1N0YWNrSXRlbSwgRW52TGlzdH0gZnJvbSAnLi9TdGFja0l0ZW0uanMnO1xuaW1wb3J0IFN0YWNrSXRlbUZhY3RvcnkgZnJvbSAnLi9TdGFja0l0ZW1GYWN0b3J5LmpzJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBTdGFjayB7XG5cbiAgLyoqXG4gICAqIEB0eXBlIHtFbnZMaXN0fVxuICAgKi9cbiAgcHVibGljIGdsb2JhbDogRW52TGlzdCA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIHN0YWNrLCBhIGxpc3Qgb2Ygc3RhY2sgaXRlbXMuXG4gICAqIEB0eXBlIHtBcnJheS48U3RhY2tJdGVtPn1cbiAgICovXG4gIHByaXZhdGUgc3RhY2s6IFN0YWNrSXRlbVtdID0gW107XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge1N0YWNrSXRlbUZhY3Rvcnl9IGZhY3RvcnkgVGhlIHN0YWNrIGl0ZW0gZmFjdG9yeS5cbiAgICogQHBhcmFtIHtFbnZMaXN0fSBlbnYgVGhlIGVudmlyb25tZW50LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlubmVyIFRydWUgaWYgcGFyc2VyIGhhcyBiZWVuIGNhbGxlZCByZWN1cnNpdmVseS5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2ZhY3Rvcnk6IFN0YWNrSXRlbUZhY3RvcnksXG4gICAgICAgICAgICAgIHByaXZhdGUgX2VudjogRW52TGlzdCwgaW5uZXI6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmdsb2JhbCA9IHtpc0lubmVyOiBpbm5lcn07XG4gICAgdGhpcy5zdGFjayA9IFsgdGhpcy5fZmFjdG9yeS5jcmVhdGUoJ3N0YXJ0JywgdGhpcy5nbG9iYWwpIF07XG4gICAgaWYgKF9lbnYpIHtcbiAgICAgIHRoaXMuc3RhY2tbMF0uZW52ID0gX2VudjtcbiAgICB9XG4gICAgdGhpcy5lbnYgPSB0aGlzLnN0YWNrWzBdLmVudjtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZW52aXJvbm1lbnQgb2YgdGhlIHN0YWNrLlxuICAgKiBAcGFyYW0ge0Vudkxpc3R9IGVudiBUaGUgbmV3IGVudmlyb25tZW50LlxuICAgKi9cbiAgcHVibGljIHNldCBlbnYoZW52OiBFbnZMaXN0KSB7XG4gICAgdGhpcy5fZW52ID0gZW52O1xuICB9XG5cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBlbnZpcm9ubWVudCBvZiB0aGF0IHN0YWNrLlxuICAgKiBAcmV0dXJuIHtFbnZMaXN0fSBUaGUgY3VycmVudCBlbnZpcm9ubWVudC5cbiAgICovXG4gIHB1YmxpYyBnZXQgZW52KCk6IEVudkxpc3Qge1xuICAgIHJldHVybiB0aGlzLl9lbnY7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBQdXNoZXMgaXRlbXMgb3Igbm9kZXMgb250byBzdGFjay5cbiAgICogQHBhcmFtIHsuLi5TdGFja0l0ZW18TW1sTm9kZX0gYXJncyBBIGxpc3Qgb2YgaXRlbXMgdG8gcHVzaC5cbiAgICovXG4gIHB1YmxpYyBQdXNoKC4uLmFyZ3M6IChTdGFja0l0ZW0gfCBNbWxOb2RlKVtdKSB7XG4gICAgZm9yIChjb25zdCBub2RlIG9mIGFyZ3MpIHtcbiAgICAgIGlmICghbm9kZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGl0ZW0gPSBOb2RlVXRpbC5pc05vZGUobm9kZSkgP1xuICAgICAgICB0aGlzLl9mYWN0b3J5LmNyZWF0ZSgnbW1sJywgbm9kZSkgOiBub2RlIGFzIFN0YWNrSXRlbTtcbiAgICAgIGl0ZW0uZ2xvYmFsID0gdGhpcy5nbG9iYWw7XG4gICAgICBjb25zdCBbdG9wLCBzdWNjZXNzXSA9XG4gICAgICAgIHRoaXMuc3RhY2subGVuZ3RoID8gdGhpcy5Ub3AoKS5jaGVja0l0ZW0oaXRlbSkgOiBbbnVsbCwgdHJ1ZV07XG4gICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodG9wKSB7XG4gICAgICAgIHRoaXMuUG9wKCk7XG4gICAgICAgIHRoaXMuUHVzaCguLi50b3ApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RhY2sucHVzaChpdGVtKTtcbiAgICAgIGlmIChpdGVtLmVudikge1xuICAgICAgICBpZiAoaXRlbS5jb3B5RW52KSB7XG4gICAgICAgICAgT2JqZWN0LmFzc2lnbihpdGVtLmVudiwgdGhpcy5lbnYpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW52ID0gaXRlbS5lbnY7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtLmVudiA9IHRoaXMuZW52O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFBvcCB0aGUgdG9wbW9zdCBlbGVtZW50cyBvZmYgdGhlIHN0YWNrLlxuICAgKiBAcmV0dXJuIHtTdGFja0l0ZW19IEEgc3RhY2sgaXRlbS5cbiAgICovXG4gIHB1YmxpYyBQb3AoKTogU3RhY2tJdGVtIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5zdGFjay5wb3AoKTtcbiAgICBpZiAoIWl0ZW0uaXNPcGVuKSB7XG4gICAgICBkZWxldGUgaXRlbS5lbnY7XG4gICAgfVxuICAgIHRoaXMuZW52ID0gKHRoaXMuc3RhY2subGVuZ3RoID8gdGhpcy5Ub3AoKS5lbnYgOiB7fSk7XG4gICAgcmV0dXJuIGl0ZW07XG4gIH1cblxuXG4gIC8qKlxuICAgKiBMb29rdXAgdGhlIG50aCBlbGVtZW50cyBvbiB0aGUgc3RhY2sgd2l0aG91dCByZW1vdmluZyB0aGVtLlxuICAgKiBAcGFyYW0ge251bWJlcj19IG4gUG9zaXRpb24gb2YgZWxlbWVudCB0aGF0IHNob3VsZCBiZSByZXR1cm5lZC4gRGVmYXVsdCAxLlxuICAgKiBAcmV0dXJuIHtTdGFja0l0ZW19IE50aCBpdGVtIG9uIHRoZSBzdGFjay5cbiAgICovXG4gIHB1YmxpYyBUb3AobjogbnVtYmVyID0gMSk6IFN0YWNrSXRlbSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhY2subGVuZ3RoIDwgbiA/IG51bGwgOiB0aGlzLnN0YWNrW3RoaXMuc3RhY2subGVuZ3RoIC0gbl07XG4gIH1cblxuXG4gIC8qKlxuICAgKiBMb29rdXAgdGhlIHRvcG1vc3QgZWxlbWVudCBvbiB0aGUgc3RhY2ssIHJldHVybmluZyB0aGUgTW1sIG5vZGUgaW4gdGhhdFxuICAgKiBpdGVtLiBPcHRpb25hbGx5IHBvcHMgdGhlIE1tbCBub2RlIGZyb20gdGhhdCBzdGFjayBpdGVtLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBub1BvcCBQb3AgdG9wIGl0ZW0gaWYgdHJ1ZS5cbiAgICogQHJldHVybiB7TW1sTm9kZX0gVGhlIE1tbCBub2RlIGluIHRoZSB0b3Btb3N0IHN0YWNrIGl0ZW0uXG4gICAqL1xuICBwdWJsaWMgUHJldihub1BvcD86IGJvb2xlYW4pOiBNbWxOb2RlIHwgdm9pZCB7XG4gICAgY29uc3QgdG9wID0gdGhpcy5Ub3AoKTtcbiAgICByZXR1cm4gbm9Qb3AgPyB0b3AuRmlyc3QgOiB0b3AuUG9wKCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gJ3N0YWNrW1xcbiAgJyArIHRoaXMuc3RhY2suam9pbignXFxuICAnKSArICdcXG5dJztcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBUaGUgVGV4UGFyc2VyLiBJbXBsZW1lbnRzIHRoZSBiYXNpYyBwYXJzaW5nIGZ1bmN0aW9uYWxpdHkgYW5kXG4gKiAgICAgYWRtaW5pc3RlcnMgdGhlIGdsb2JhbCBzdGFjayBhbmQgdHJlZSBvYmplY3RzLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi9QYXJzZVV0aWwuanMnO1xuaW1wb3J0IHtIYW5kbGVyVHlwZX0gZnJvbSAnLi9NYXBIYW5kbGVyLmpzJztcbmltcG9ydCBTdGFjayBmcm9tICcuL1N0YWNrLmpzJztcbmltcG9ydCBTdGFja0l0ZW1GYWN0b3J5IGZyb20gJy4vU3RhY2tJdGVtRmFjdG9yeS5qcyc7XG5pbXBvcnQge1RhZ3N9IGZyb20gJy4vVGFncy5qcyc7XG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi9UZXhFcnJvci5qcyc7XG5pbXBvcnQge01tbE5vZGUsIEFic3RyYWN0TW1sTm9kZX0gZnJvbSAnLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtQYXJzZUlucHV0LCBQYXJzZVJlc3VsdH0gZnJvbSAnLi9UeXBlcy5qcyc7XG5pbXBvcnQgUGFyc2VPcHRpb25zIGZyb20gJy4vUGFyc2VPcHRpb25zLmpzJztcbmltcG9ydCB7U3RhY2tJdGVtLCBFbnZMaXN0fSBmcm9tICcuL1N0YWNrSXRlbS5qcyc7XG5pbXBvcnQge1N5bWJvbH0gZnJvbSAnLi9TeW1ib2wuanMnO1xuaW1wb3J0IHtPcHRpb25MaXN0fSBmcm9tICcuLi8uLi91dGlsL09wdGlvbnMuanMnO1xuXG5cbi8qKlxuICogVGhlIG1haW4gVGV4IFBhcnNlciBjbGFzcy5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVGV4UGFyc2VyIHtcblxuICAvKipcbiAgICogQ291bnRlciBmb3IgcmVjdXJzaXZlIG1hY3Jvcy5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIHB1YmxpYyBtYWNyb0NvdW50OiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhY2sgZm9yIGl0ZW1zIGFuZCBjcmVhdGVkIG5vZGVzLlxuICAgKiBAdHlwZSB7U3RhY2t9XG4gICAqL1xuICBwdWJsaWMgc3RhY2s6IFN0YWNrO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHBvc2l0aW9uIGluIHRoZSBzdHJpbmcgdGhhdCBpcyBwYXJzZWQuXG4gICAqIEB0eXBlIHtudW1iZXJ9XG4gICAqL1xuICBwdWJsaWMgaTogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogVGhlIGxhc3QgY29tbWFuZCBzZXF1ZW5jZVxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgcHVibGljIGN1cnJlbnRDUzogc3RyaW5nID0gJyc7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gcGFyc2UuXG4gICAqIEBwYXJhbSB7RW52TGlzdH0gZW52IFRoZSBpbnRpYWwgZW52aXJvbm1lbnQgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHBhcnNlXG4gICAqICAgICBzdGF0ZSBvZiB0aGUgb3ZlcmFsbCBleHByZXNzaW9uIHRyYW5zbGF0aW9uLlxuICAgKiBAcGFyYW0ge1BhcnNlT3B0aW9uc30gY29uZmlndXJhdGlvbiBBIHBhcnNlciBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfc3RyaW5nOiBzdHJpbmcsIGVudjogRW52TGlzdCwgcHVibGljIGNvbmZpZ3VyYXRpb246IFBhcnNlT3B0aW9ucykge1xuICAgIGNvbnN0IGlubmVyID0gZW52Lmhhc093blByb3BlcnR5KCdpc0lubmVyJyk7XG4gICAgY29uc3QgaXNJbm5lciA9IGVudlsnaXNJbm5lciddIGFzIGJvb2xlYW47XG4gICAgZGVsZXRlIGVudlsnaXNJbm5lciddO1xuICAgIGxldCBFTlY6IEVudkxpc3Q7XG4gICAgaWYgKGVudikge1xuICAgICAgRU5WID0ge307XG4gICAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKGVudikpIHtcbiAgICAgICAgRU5WW2lkXSA9IGVudltpZF07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY29uZmlndXJhdGlvbi5wdXNoUGFyc2VyKHRoaXMpO1xuICAgIHRoaXMuc3RhY2sgPSBuZXcgU3RhY2sodGhpcy5pdGVtRmFjdG9yeSwgRU5WLCBpbm5lciA/IGlzSW5uZXIgOiB0cnVlKTtcbiAgICB0aGlzLlBhcnNlKCk7XG4gICAgdGhpcy5QdXNoKHRoaXMuaXRlbUZhY3RvcnkuY3JlYXRlKCdzdG9wJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge09wdGlvbkxpc3R9IFRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqL1xuICBnZXQgb3B0aW9ucygpOiBPcHRpb25MaXN0IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLm9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7U3RhY2tJdGVtRmFjdG9yeX0gVGhlIGZhY3RvcnkgZm9yIHN0YWNrIGl0ZW1zLlxuICAgKi9cbiAgZ2V0IGl0ZW1GYWN0b3J5KCk6IFN0YWNrSXRlbUZhY3Rvcnkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24uaXRlbUZhY3Rvcnk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7VGFnc30gVGhlIHRhZ3Mgc3R5bGUgb2YgdGhpcyBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgZ2V0IHRhZ3MoKTogVGFncyB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi50YWdzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHN0cmluZyB0aGF0IHNob3VsZCBiZSBwYXJzZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHIgVGhlIG5ldyBzdHJpbmcgdG8gcGFyc2UuXG4gICAqL1xuICBzZXQgc3RyaW5nKHN0cjogc3RyaW5nKSB7XG4gICAgdGhpcy5fc3RyaW5nID0gc3RyO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIHN0cmluZyB0aGF0IGlzIGN1cnJlbnRseSBwYXJzZWQuXG4gICAqL1xuICBnZXQgc3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N0cmluZztcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFBhcnNlcyB0aGUgaW5wdXQgd2l0aCB0aGUgc3BlY2lmaWVkIGtpbmQgb2YgbWFwLlxuICAgKiBAcGFyYW0ge0hhbmRsZXJUeXBlfSBraW5kIENvbmZpZ3VyYXRpb24gbmFtZS5cbiAgICogQHBhcmFtIHtQYXJzZUlucHV0fSBpbnB1dCBJbnB1dCB0byBiZSBwYXJzZWQuXG4gICAqIEByZXR1cm4ge1BhcnNlUmVzdWx0fSBUaGUgb3V0cHV0IG9mIHRoZSBwYXJzaW5nIGZ1bmN0aW9uLlxuICAgKi9cbiAgcHVibGljIHBhcnNlKGtpbmQ6IEhhbmRsZXJUeXBlLCBpbnB1dDogUGFyc2VJbnB1dCk6IFBhcnNlUmVzdWx0IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLmhhbmRsZXJzLmdldChraW5kKS5wYXJzZShpbnB1dCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBNYXBzIGEgc3ltYm9sIHRvIGl0cyBcInBhcnNlIHZhbHVlXCIgaWYgaXQgZXhpc3RzLlxuICAgKiBAcGFyYW0ge0hhbmRsZXJUeXBlfSBraW5kIENvbmZpZ3VyYXRpb24gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBUaGUgc3ltYm9sIHRvIHBhcnNlLlxuICAgKiBAcmV0dXJuIHthbnl9IEEgYm9vbGVhbiwgQ2hhcmFjdGVyLCBvciBNYWNyby5cbiAgICovXG4gIHB1YmxpYyBsb29rdXAoa2luZDogSGFuZGxlclR5cGUsIHN5bWJvbDogc3RyaW5nKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLmhhbmRsZXJzLmdldChraW5kKS5sb29rdXAoc3ltYm9sKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIHN5bWJvbCBpcyBjb250YWluZWQgaW4gb25lIG9mIHRoZSBzeW1ib2wgbWFwcGluZ3Mgb2YgdGhlXG4gICAqIHNwZWNpZmllZCBraW5kLlxuICAgKiBAcGFyYW0ge0hhbmRsZXJUeXBlfSBraW5kIENvbmZpZ3VyYXRpb24gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBUaGUgc3ltYm9sIHRvIHBhcnNlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBzeW1ib2wgaXMgY29udGFpbmVkIGluIHRoZSBnaXZlbiB0eXBlcyBvZlxuICAgKiAgICAgc3ltYm9sIG1hcHBpbmcuXG4gICAqL1xuICBwdWJsaWMgY29udGFpbnMoa2luZDogSGFuZGxlclR5cGUsIHN5bWJvbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi5oYW5kbGVycy5nZXQoa2luZCkuY29udGFpbnMoc3ltYm9sKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IHN0ciA9ICcnO1xuICAgIGZvciAoY29uc3QgY29uZmlnIG9mIEFycmF5LmZyb20odGhpcy5jb25maWd1cmF0aW9uLmhhbmRsZXJzLmtleXMoKSkpIHtcbiAgICAgIHN0ciArPSBjb25maWcgKyAnOiAnICtcbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uLmhhbmRsZXJzLmdldChjb25maWcgYXMgSGFuZGxlclR5cGUpICsgJ1xcbic7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGN1cnJlbnQgaW5wdXQgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIFBhcnNlKCkge1xuICAgIGxldCBjOiBzdHJpbmc7XG4gICAgd2hpbGUgKHRoaXMuaSA8IHRoaXMuc3RyaW5nLmxlbmd0aCkge1xuICAgICAgYyA9IHRoaXMuZ2V0Q29kZVBvaW50KCk7XG4gICAgICB0aGlzLmkgKz0gYy5sZW5ndGg7XG4gICAgICB0aGlzLnBhcnNlKCdjaGFyYWN0ZXInLCBbdGhpcywgY10pO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIFB1c2hlcyBhIG5ldyBpdGVtIG9udG8gdGhlIHN0YWNrLiBUaGUgaXRlbSBjYW4gYWxzbyBiZSBhIE1tbCBub2RlLFxuICAgKiAgIGJ1dCBpZiB0aGUgbW1sIGl0ZW0gaXMgYW4gaW5mZXJyZWQgcm93LCBwdXNoIGl0cyBjaGlsZHJlbiBpbnN0ZWFkLlxuICAgKiBAcGFyYW0ge1N0YWNrSXRlbXxNbWxOb2RlfSBhcmcgVGhlIG5ldyBpdGVtLlxuICAgKi9cbiAgcHVibGljIFB1c2goYXJnOiBTdGFja0l0ZW0gfCBNbWxOb2RlKSB7XG4gICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFic3RyYWN0TW1sTm9kZSAmJiBhcmcuaXNJbmZlcnJlZCkge1xuICAgICAgdGhpcy5QdXNoQWxsKGFyZy5jaGlsZE5vZGVzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFjay5QdXNoKGFyZyk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogUHVzaGVzIGEgbGlzdCBvZiBuZXcgaXRlbXMgb250byB0aGUgc3RhY2suXG4gICAqIEBwYXJhbSB7U3RhY2tJdGVtfE1tbE5vZGVbXX0gYXJncyBUaGUgbmV3IGl0ZW1zLlxuICAgKi9cbiAgcHVibGljIFB1c2hBbGwoYXJnczogKFN0YWNrSXRlbSB8IE1tbE5vZGUpW10pIHtcbiAgICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XG4gICAgICB0aGlzLnN0YWNrLlB1c2goYXJnKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgaW50ZXJuYWwgTWF0aG1sIHN0cnVjdHVyZS5cbiAgICovXG4gIHB1YmxpYyBtbWwoKTogTW1sTm9kZSB7XG4gICAgaWYgKCF0aGlzLnN0YWNrLlRvcCgpLmlzS2luZCgnbW1sJykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgbm9kZSA9IHRoaXMuc3RhY2suVG9wKCkuRmlyc3Q7XG4gICAgdGhpcy5jb25maWd1cmF0aW9uLnBvcFBhcnNlcigpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKlxuICAgKiAgIFN0cmluZyBoYW5kbGluZyByb3V0aW5lc1xuICAgKi9cblxuICAvKipcbiAgICogQ29udmVydCBkZWxpbWl0ZXIgdG8gY2hhcmFjdGVyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyBUaGUgZGVsaW1pdGVyIG5hbWUuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLlxuICAgKi9cbiAgcHVibGljIGNvbnZlcnREZWxpbWl0ZXIoYzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBzeW1ib2wgPSB0aGlzLmxvb2t1cCgnZGVsaW1pdGVyJywgYykgYXMgU3ltYm9sO1xuICAgIHJldHVybiBzeW1ib2wgPyBzeW1ib2wuY2hhciA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfSAgIEdldCB0aGUgbmV4dCB1bmljb2RlIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29kZVBvaW50KCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29kZSA9IHRoaXMuc3RyaW5nLmNvZGVQb2ludEF0KHRoaXMuaSk7XG4gICAgcmV0dXJuIGNvZGUgPT09IHVuZGVmaW5lZCA/ICcnIDogU3RyaW5nLmZyb21Db2RlUG9pbnQoY29kZSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gcGFyc2UgaXMgYSBzcGFjZS5cbiAgICovXG4gIHB1YmxpYyBuZXh0SXNTcGFjZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLnN0cmluZy5jaGFyQXQodGhpcy5pKS5tYXRjaCgvXFxzLyk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfSBHZXQgdGhlIG5leHQgbm9uLXNwYWNlIGNoYXJhY3Rlci5cbiAgICovXG4gIHB1YmxpYyBHZXROZXh0KCk6IHN0cmluZyB7XG4gICAgd2hpbGUgKHRoaXMubmV4dElzU3BhY2UoKSkge1xuICAgICAgdGhpcy5pKys7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmdldENvZGVQb2ludCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gR2V0IGFuZCByZXR1cm4gYSBjb250cm9sLXNlcXVlbmNlIG5hbWVcbiAgICovXG4gIHB1YmxpYyBHZXRDUygpOiBzdHJpbmcge1xuICAgIGxldCBDUyA9IHRoaXMuc3RyaW5nLnNsaWNlKHRoaXMuaSkubWF0Y2goL14oKFthLXpdKykgP3xbXFx1RDgwMC1cXHVEQkZGXS58LikvaSk7XG4gICAgaWYgKENTKSB7XG4gICAgICB0aGlzLmkgKz0gQ1NbMF0ubGVuZ3RoO1xuICAgICAgcmV0dXJuIENTWzJdIHx8IENTWzFdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmkrKztcbiAgICAgIHJldHVybiAnICc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbmQgcmV0dXJuIGEgVGVYIGFyZ3VtZW50IChlaXRoZXIgYSBzaW5nbGUgY2hhcmFjdGVyIG9yIGNvbnRyb2xcbiAgICogICAgIHNlcXVlbmNlLCBvciB0aGUgY29udGVudHMgb2YgdGhlIG5leHQgc2V0IG9mIGJyYWNlcykuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGN1cnJlbnQgY29udHJvbCBzZXF1ZW5jZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBub25lT0s/IFRydWUgaWYgbm8gYXJndW1lbnQgaXMgT0suXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5leHQgYXJndW1lbnQuXG4gICAqL1xuICBwdWJsaWMgR2V0QXJndW1lbnQoX25hbWU6IHN0cmluZywgbm9uZU9LPzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLkdldE5leHQoKSkge1xuICAgIGNhc2UgJyc6XG4gICAgICBpZiAoIW5vbmVPSykge1xuICAgICAgICAvLyBAdGVzdCBNaXNzaW5nQXJnRm9yXG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTWlzc2luZ0FyZ0ZvcicsICdNaXNzaW5nIGFyZ3VtZW50IGZvciAlMScsIHRoaXMuY3VycmVudENTKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgJ30nOlxuICAgICAgaWYgKCFub25lT0spIHtcbiAgICAgICAgLy8gQHRlc3QgRXh0cmFDbG9zZU1pc3NpbmdPcGVuXG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRXh0cmFDbG9zZU1pc3NpbmdPcGVuJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRXh0cmEgY2xvc2UgYnJhY2Ugb3IgbWlzc2luZyBvcGVuIGJyYWNlJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlICdcXFxcJzpcbiAgICAgIHRoaXMuaSsrO1xuICAgICAgcmV0dXJuICdcXFxcJyArIHRoaXMuR2V0Q1MoKTtcbiAgICBjYXNlICd7JzpcbiAgICAgIGxldCBqID0gKyt0aGlzLmksIHBhcmVucyA9IDE7XG4gICAgICB3aGlsZSAodGhpcy5pIDwgdGhpcy5zdHJpbmcubGVuZ3RoKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdHJpbmcuY2hhckF0KHRoaXMuaSsrKSkge1xuICAgICAgICBjYXNlICdcXFxcJzogIHRoaXMuaSsrOyBicmVhaztcbiAgICAgICAgY2FzZSAneyc6ICAgcGFyZW5zKys7IGJyZWFrO1xuICAgICAgICBjYXNlICd9JzpcbiAgICAgICAgICBpZiAoLS1wYXJlbnMgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnN0cmluZy5zbGljZShqLCB0aGlzLmkgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIEB0ZXN0IE1pc3NpbmdDbG9zZUJyYWNlXG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ01pc3NpbmdDbG9zZUJyYWNlJywgJ01pc3NpbmcgY2xvc2UgYnJhY2UnKTtcbiAgICB9XG4gICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29kZVBvaW50KCk7XG4gICAgdGhpcy5pICs9IGMubGVuZ3RoO1xuICAgIHJldHVybiBjO1xuICB9XG5cblxuICAvKipcbiAgICogR2V0IGFuIG9wdGlvbmFsIExhVGVYIGFyZ3VtZW50IGluIGJyYWNrZXRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBjdXJyZW50IGNvbnRyb2wgc2VxdWVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZWY/IFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgb3B0aW9uYWwgYXJndW1lbnQuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG9wdGlvbmFsIGFyZ3VtZW50LlxuICAgKi9cbiAgcHVibGljIEdldEJyYWNrZXRzKF9uYW1lOiBzdHJpbmcsIGRlZj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuR2V0TmV4dCgpICE9PSAnWycpIHtcbiAgICAgIHJldHVybiBkZWY7XG4gICAgfVxuICAgIGxldCBqID0gKyt0aGlzLmksIHBhcmVucyA9IDA7XG4gICAgd2hpbGUgKHRoaXMuaSA8IHRoaXMuc3RyaW5nLmxlbmd0aCkge1xuICAgICAgc3dpdGNoICh0aGlzLnN0cmluZy5jaGFyQXQodGhpcy5pKyspKSB7XG4gICAgICBjYXNlICd7JzogICBwYXJlbnMrKzsgYnJlYWs7XG4gICAgICBjYXNlICdcXFxcJzogIHRoaXMuaSsrOyBicmVhaztcbiAgICAgIGNhc2UgJ30nOlxuICAgICAgICBpZiAocGFyZW5zLS0gPD0gMCkge1xuICAgICAgICAgIC8vIEB0ZXN0IEV4dHJhQ2xvc2VMb29raW5nMVxuICAgICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRXh0cmFDbG9zZUxvb2tpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIGNsb3NlIGJyYWNlIHdoaWxlIGxvb2tpbmcgZm9yICUxJywgJ1xcJ11cXCcnKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ10nOlxuICAgICAgICBpZiAocGFyZW5zID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nLnNsaWNlKGosIHRoaXMuaSAtIDEpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBAdGVzdCBNaXNzaW5nQ2xvc2VCcmFja2V0XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nQ2xvc2VCcmFja2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdDb3VsZCBub3QgZmluZCBjbG9zaW5nIFxcJ11cXCcgZm9yIGFyZ3VtZW50IHRvICUxJywgdGhpcy5jdXJyZW50Q1MpO1xuICB9XG5cbiAgLyoqXG4gICAqICBHZXQgdGhlIG5hbWUgb2YgYSBkZWxpbWl0ZXIgKGNoZWNrIGl0IGluIHRoZSBkZWxpbWl0ZXIgbGlzdCkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGN1cnJlbnQgY29udHJvbCBzZXF1ZW5jZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBicmFjZU9LPyBBcmUgYnJhY2VzIGFyb3VuZCB0aGUgZGVsaW1pdGVyIE9LLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBkZWxpbWl0ZXIgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBHZXREZWxpbWl0ZXIobmFtZTogc3RyaW5nLCBicmFjZU9LPzogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgbGV0IGMgPSB0aGlzLkdldE5leHQoKTsgdGhpcy5pICs9IGMubGVuZ3RoO1xuICAgIGlmICh0aGlzLmkgPD0gdGhpcy5zdHJpbmcubGVuZ3RoKSB7XG4gICAgICBpZiAoYyA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGMgKz0gdGhpcy5HZXRDUygpO1xuICAgICAgfSBlbHNlIGlmIChjID09PSAneycgJiYgYnJhY2VPSykge1xuICAgICAgICB0aGlzLmktLTtcbiAgICAgICAgYyA9IHRoaXMuR2V0QXJndW1lbnQobmFtZSkudHJpbSgpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29udGFpbnMoJ2RlbGltaXRlcicsIGMpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnREZWxpbWl0ZXIoYyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEB0ZXN0IE1pc3NpbmdPclVucmVjb2duaXplZERlbGltMSwgTWlzc2luZ09yVW5yZWNvZ25pemVkRGVsaW0yXG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nT3JVbnJlY29nbml6ZWREZWxpbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnTWlzc2luZyBvciB1bnJlY29nbml6ZWQgZGVsaW1pdGVyIGZvciAlMScsIHRoaXMuY3VycmVudENTKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBkaW1lbnNpb24gKGluY2x1ZGluZyBpdHMgdW5pdHMpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBjdXJyZW50IGNvbnRyb2wgc2VxdWVuY2UuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGRpbWVuc2lvbiBzdHJpbmcuXG4gICAqL1xuICBwdWJsaWMgR2V0RGltZW4obmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5HZXROZXh0KCkgPT09ICd7Jykge1xuICAgICAgbGV0IGRpbWVuID0gdGhpcy5HZXRBcmd1bWVudChuYW1lKTtcbiAgICAgIGxldCBbdmFsdWUsIHVuaXRdID0gUGFyc2VVdGlsLm1hdGNoRGltZW4oZGltZW4pO1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIC8vIEB0ZXN0IFJhaXNlIEluIExpbmUsIExvd2VyIDIsIChSYWlzZXxMb3dlcikgTmVnYXRpdmVcbiAgICAgICAgcmV0dXJuIHZhbHVlICsgdW5pdDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQHRlc3QgQWJvdmUsIFJhaXNlLCBMb3dlciwgTW9kdWxvLCBBYm92ZSBXaXRoIERlbGltc1xuICAgICAgbGV0IGRpbWVuID0gdGhpcy5zdHJpbmcuc2xpY2UodGhpcy5pKTtcbiAgICAgIGxldCBbdmFsdWUsIHVuaXQsIGxlbmd0aF0gPSBQYXJzZVV0aWwubWF0Y2hEaW1lbihkaW1lbiwgdHJ1ZSk7XG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgdGhpcy5pICs9IGxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHZhbHVlICsgdW5pdDtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gQHRlc3QgTWlzc2luZ0RpbU9yVW5pdHNcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ01pc3NpbmdEaW1PclVuaXRzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICdNaXNzaW5nIGRpbWVuc2lvbiBvciBpdHMgdW5pdHMgZm9yICUxJywgdGhpcy5jdXJyZW50Q1MpO1xuICB9XG5cbiAgLyoqXG4gICAqICBHZXQgZXZlcnl0aGluZyB1cCB0byB0aGUgZ2l2ZW4gY29udHJvbCBzZXF1ZW5jZSAodG9rZW4pXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGN1cnJlbnQgY29udHJvbCBzZXF1ZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIFRoZSBlbGVtZW50IHVudGlsIHdoZXJlIHRvIHBhcnNlLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB0ZXh0IGJldHdlZW4gdGhlIGN1cnJlbnQgcG9zaXRpb24gYW5kIHRoZSBnaXZlbiB0b2tlbi5cbiAgICovXG4gIHB1YmxpYyBHZXRVcFRvKF9uYW1lOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHdoaWxlICh0aGlzLm5leHRJc1NwYWNlKCkpIHtcbiAgICAgIHRoaXMuaSsrO1xuICAgIH1cbiAgICBsZXQgaiA9IHRoaXMuaTtcbiAgICBsZXQgcGFyZW5zID0gMDtcbiAgICB3aGlsZSAodGhpcy5pIDwgdGhpcy5zdHJpbmcubGVuZ3RoKSB7XG4gICAgICBsZXQgayA9IHRoaXMuaTtcbiAgICAgIGxldCBjID0gdGhpcy5HZXROZXh0KCk7IHRoaXMuaSArPSBjLmxlbmd0aDtcbiAgICAgIHN3aXRjaCAoYykge1xuICAgICAgY2FzZSAnXFxcXCc6ICBjICs9IHRoaXMuR2V0Q1MoKTsgYnJlYWs7XG4gICAgICBjYXNlICd7JzogICBwYXJlbnMrKzsgYnJlYWs7XG4gICAgICBjYXNlICd9JzpcbiAgICAgICAgaWYgKHBhcmVucyA9PT0gMCkge1xuICAgICAgICAgIC8vIEB0ZXN0IEV4dHJhQ2xvc2VMb29raW5nMlxuICAgICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRXh0cmFDbG9zZUxvb2tpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0V4dHJhIGNsb3NlIGJyYWNlIHdoaWxlIGxvb2tpbmcgZm9yICUxJywgdG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIHBhcmVucy0tO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChwYXJlbnMgPT09IDAgJiYgYyA9PT0gdG9rZW4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RyaW5nLnNsaWNlKGosIGspO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBAdGVzdCBUb2tlbk5vdEZvdW5kRm9yQ29tbWFuZFxuICAgIHRocm93IG5ldyBUZXhFcnJvcignVG9rZW5Ob3RGb3VuZEZvckNvbW1hbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBmaW5kICUxIGZvciAlMicsIHRva2VuLCB0aGlzLmN1cnJlbnRDUyk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdGhlIGFyZ3VtZW50cyBvZiBhIGNvbnRyb2wgc2VxdWVuY2UgaW4gYSBuZXcgcGFyc2VyIGluc3RhbmNlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBjdXJyZW50IGNvbnRyb2wgc2VxdWVuY2UuXG4gICAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSBwYXJzZWQgbm9kZS5cbiAgICovXG4gIHB1YmxpYyBQYXJzZUFyZyhuYW1lOiBzdHJpbmcpOiBNbWxOb2RlICB7XG4gICAgcmV0dXJuIG5ldyBUZXhQYXJzZXIodGhpcy5HZXRBcmd1bWVudChuYW1lKSwgdGhpcy5zdGFjay5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgYSBnaXZlbiBzdHJpbmcgdXAgdG8gYSBnaXZlbiB0b2tlbiBpbiBhIG5ldyBwYXJzZXIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGN1cnJlbnQgY29udHJvbCBzZXF1ZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIEEgVG9rZW4gYXQgd2hpY2ggdG8gZW5kIHBhcnNpbmcuXG4gICAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSBwYXJzZWQgbm9kZS5cbiAgICovXG4gIHB1YmxpYyBQYXJzZVVwVG8obmFtZTogc3RyaW5nLCB0b2tlbjogc3RyaW5nKTogTW1sTm9kZSB7XG4gICAgcmV0dXJuIG5ldyBUZXhQYXJzZXIodGhpcy5HZXRVcFRvKG5hbWUsIHRva2VuKSwgdGhpcy5zdGFjay5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdldCBhIGRlbGltaXRlciBvciBlbXB0eSBhcmd1bWVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBjdXJyZW50IGNvbnRyb2wgc2VxdWVuY2UuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGRlbGltaXRlci5cbiAgICovXG4gIHB1YmxpYyBHZXREZWxpbWl0ZXJBcmcobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgYyA9IFBhcnNlVXRpbC50cmltU3BhY2VzKHRoaXMuR2V0QXJndW1lbnQobmFtZSkpO1xuICAgIGlmIChjID09PSAnJykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbnRhaW5zKCdkZWxpbWl0ZXInLCBjKSkge1xuICAgICAgcmV0dXJuIGM7XG4gICAgfVxuICAgIC8vIEB0ZXN0IE1pc3NpbmdPclVucmVjb2duaXplZERlbGltXG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nT3JVbnJlY29nbml6ZWREZWxpbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAnTWlzc2luZyBvciB1bnJlY29nbml6ZWQgZGVsaW1pdGVyIGZvciAlMScsIHRoaXMuY3VycmVudENTKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEgc3RhciBmb2xsb3dzIHRoZSBjb250cm9sIHNlcXVlbmNlIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgR2V0U3RhcigpOiBib29sZWFuIHtcbiAgICBsZXQgc3RhciA9ICh0aGlzLkdldE5leHQoKSA9PT0gJyonKTtcbiAgICBpZiAoc3Rhcikge1xuICAgICAgdGhpcy5pKys7XG4gICAgfVxuICAgIHJldHVybiBzdGFyO1xuICB9XG5cblxuICAvKipcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIHRvIGNyZWF0ZSBub2RlcyB3aXRoIHRoZSBub2RlIGZhY3Rvcnkgb2YgdGhlIGN1cnJlbnRcbiAgICogY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgVGhlIGtpbmQgb2Ygbm9kZSB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSB7YW55W119IC4uLnJlc3QgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgZm9yIHRoZSBjcmVhdGlvbiBtZXRob2QuXG4gICAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSBuZXdseSBjcmVhdGVkIG5vZGUuXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlKGtpbmQ6IHN0cmluZywgLi4ucmVzdDogYW55W10pOiBNbWxOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLm5vZGVGYWN0b3J5LmNyZWF0ZShraW5kLCAuLi5yZXN0KTtcbiAgfVxuXG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMDktMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IFN0YWNrIGl0ZW1zIGhvbGQgaW5mb3JtYXRpb24gb24gdGhlIFRleFBhcnNlciBzdGFjay5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7RmFjdG9yeU5vZGVDbGFzc30gZnJvbSAnLi4vLi4vY29yZS9UcmVlL0ZhY3RvcnkuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IFN0YWNrSXRlbUZhY3RvcnkgZnJvbSAnLi9TdGFja0l0ZW1GYWN0b3J5LmpzJztcblxuLy8gVW5pb24gdHlwZXMgZm9yIGFiYnJldmlhdGlvbi5cbmV4cG9ydCB0eXBlIEVudlByb3AgPSBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuO1xuXG5leHBvcnQgdHlwZSBFbnZMaXN0ID0ge1trZXk6IHN0cmluZ106IEVudlByb3B9O1xuXG4vLyBUaGlzIGlzIHRoZSB0eXBlIGZvciBhbGwgZmllbGRzIHRoYXQgdXNlZCB0byBiZSBzZXQgd2l0aCBXaXRoLlxuZXhwb3J0IHR5cGUgUHJvcCA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBNbWxOb2RlIHwgUHJvcExpc3Q7XG5cbmV4cG9ydCB0eXBlIFByb3BMaXN0ID0ge1trZXk6IHN0cmluZ106IFByb3B9O1xuXG5leHBvcnQgdHlwZSBDaGVja1R5cGUgPSBbKE1tbE5vZGUgfCBTdGFja0l0ZW0pW10sIGJvb2xlYW5dO1xuXG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZVN0YWNrIHtcblxuICAvKipcbiAgICogR2V0IG9yIHNldCB0aGUgdG9wbW9zdCBlbGVtZW50IG9uIHRoZSBub2RlIHN0YWNrIHdpdGhvdXQgcmVtb3ZpbmcgaXQuXG4gICAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSB0b3Btb3N0IG5vZGUgb24gdGhlIHN0YWNrLlxuICAgKi9cbiAgRmlyc3Q6IE1tbE5vZGU7XG5cbiAgLyoqXG4gICAqIEdldCBvciBzZXQgdGhlIGxhc3QgZWxlbWVudCBvbiB0aGUgbm9kZSBzdGFjayB3aXRob3V0IHJlbW92aW5nIGl0LlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgbGFzdCBub2RlIG9uIHRoZSBzdGFjay5cbiAgICovXG4gIExhc3Q6IE1tbE5vZGU7XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSB0b3Btb3N0IG5vZGUgb24gdGhlIGl0ZW0ncyBub2RlIHN0YWNrLlxuICAgKi9cbiAgUG9wKCk6IE1tbE5vZGUgfCB2b2lkO1xuXG4gIC8qKlxuICAgKiBQdXNoZXMgbmV3IG5vZGVzIG9udG8gdGhlIGl0ZW1zIG5vZGUgc3RhY2suXG4gICAqIEBwYXJhbSB7TW1sTm9kZVtdfSAuLi5ub2RlcyBBIGxpc3Qgb2Ygbm9kZXMuXG4gICAqL1xuICBQdXNoKC4uLm5vZGVzOiBNbWxOb2RlW10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHRvcCBuIGVsZW1lbnRzIG9uIHRoZSBub2RlIHN0YWNrIHdpdGhvdXQgcmVtb3ZpbmcgdGhlbS5cbiAgICogQHBhcmFtIHtudW1iZXI9fSBuIE51bWJlciBvZiBlbGVtZW50cyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZC5cbiAgICogQHJldHVybiB7TW1sTm9kZVtdfSBMaXN0IG9mIG5vZGVzIG9uIHRvcCBvZiBzdGFjay5cbiAgICovXG4gIFBlZWsobj86IG51bWJlcik6IE1tbE5vZGVbXTtcblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgc2l6ZSBvZiB0aGUgc3RhY2suXG4gICAqL1xuICBTaXplKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzdGFjay5cbiAgICovXG4gIENsZWFyKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbm9kZXMgb24gdGhlIHN0YWNrIGl0ZW0ncyBub2RlIHN0YWNrIGFzIGFuIE1tbCBub2RlLiBJLmUuLCBpbiBjYXNlXG4gICAqIHRoZSBpdGVtIGNvbnRhaW5zIG1vcmUgdGhhbiBvbmUgbm9kZSwgaXQgY3JlYXRlcyBhbiBtcm93LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpbmZlcnJlZCBJZiBzZXQgdGhlIG1yb3cgd2lsbCBiZSBhbiBpbmZlcnJlZCBtcm93LlxuICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBmb3JjZVJvdyBJZiBzZXQgYW4gbXJvdyB3aWxsIGJlIGNyZWF0ZWQsIHJlZ2FyZGxlc3Mgb2ZcbiAgICogICAgIGhvdyBtYW55IG5vZGVzIHRoZSBpdGVtIGNvbnRhaW5zLlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgdG9wbW9zdCBNbWwgbm9kZS5cbiAgICovXG4gIHRvTW1sKGluZmVycmVkPzogYm9vbGVhbiwgZm9yY2VSb3c/OiBib29sZWFuKTogTW1sTm9kZTtcblxufVxuXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNbWxTdGFjayBpbXBsZW1lbnRzIE5vZGVTdGFjayB7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAZXh0ZW5kcyB7Tm9kZVN0YWNrfVxuICAgKiBAcGFyYW0ge01tbE5vZGVbXX0gbm9kZXMgQW4gaW5pdGlhbCBsaXN0IG9mIG5vZGVzIHRvIHB1dCBvbiB0aGUgc3RhY2suXG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9ub2RlczogTW1sTm9kZVtdKSB7IH1cblxuICAvKipcbiAgICogQHJldHVybiB7TW1sTm9kZVtdfSBUaGUgbm9kZXMgb24gdGhlIHN0YWNrLlxuICAgKi9cbiAgcHJvdGVjdGVkIGdldCBub2RlcygpOiBNbWxOb2RlW10ge1xuICAgIHJldHVybiB0aGlzLl9ub2RlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBQdXNoKC4uLm5vZGVzOiBNbWxOb2RlW10pIHtcbiAgICB0aGlzLl9ub2Rlcy5wdXNoKC4uLm5vZGVzKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIFBvcCgpOiBNbWxOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fbm9kZXMucG9wKCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgRmlyc3QoKTogTW1sTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzW3RoaXMuU2l6ZSgpIC0gMV07XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXQgRmlyc3Qobm9kZTogTW1sTm9kZSkge1xuICAgIHRoaXMuX25vZGVzW3RoaXMuU2l6ZSgpIC0gMV0gPSBub2RlO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IExhc3QoKTogTW1sTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuX25vZGVzWzBdO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0IExhc3Qobm9kZTogTW1sTm9kZSkge1xuICAgIHRoaXMuX25vZGVzWzBdID0gbm9kZTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIFBlZWsobj86IG51bWJlcik6IE1tbE5vZGVbXSB7XG4gICAgaWYgKG4gPT0gbnVsbCkge1xuICAgICAgbiA9IDE7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ub2Rlcy5zbGljZSh0aGlzLlNpemUoKSAtIG4pO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgU2l6ZSgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9ub2Rlcy5sZW5ndGg7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBDbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLl9ub2RlcyA9IFtdO1xuICB9XG5cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IGZhY3RvcnkoKTogU3RhY2tJdGVtRmFjdG9yeTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9NbWwoaW5mZXJyZWQ6IGJvb2xlYW4gPSB0cnVlLCBmb3JjZVJvdz86IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5fbm9kZXMubGVuZ3RoID09PSAxICYmICFmb3JjZVJvdykge1xuICAgICAgcmV0dXJuIHRoaXMuRmlyc3Q7XG4gICAgfVxuICAgIC8vIEB0ZXN0IFR3byBJZGVudGlmaWVyc1xuICAgIHJldHVybiB0aGlzLmNyZWF0ZShcbiAgICAgICdub2RlJywgaW5mZXJyZWQgPyAnaW5mZXJyZWRNcm93JyA6ICdtcm93JywgdGhpcy5fbm9kZXMsIHt9KTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIENvbnZlbmllbmNlIG1ldGhvZCB0byBjcmVhdGUgbm9kZXMgd2l0aCB0aGUgbm9kZSBmYWN0b3J5IG9uIHRoaXMgc3RhY2suXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kIFRoZSBraW5kIG9mIG5vZGUgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0ge2FueVtdfSAuLi5yZXN0IFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGZvciB0aGUgY3JlYXRpb24gbWV0aG9kLlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgbmV3bHkgY3JlYXRlZCBub2RlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShraW5kOiBzdHJpbmcsIC4uLnJlc3Q6IGFueVtdKTogTW1sTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuZmFjdG9yeS5jb25maWd1cmF0aW9uLm5vZGVGYWN0b3J5LmNyZWF0ZShraW5kLCAuLi5yZXN0KTtcbiAgfVxuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tJdGVtIGV4dGVuZHMgTm9kZVN0YWNrIHtcblxuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHN0YWNrIGl0ZW0uXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBraW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElzIHRoaXMgYSBjbG9zaW5nIGl0ZW0sIGUuZy4sIGVuZC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBpc0Nsb3NlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJcyB0aGlzIGFuIG9wZW5pbmcgaXRlbSwgZS5nLiwgYmVnaW4uXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgaXNPcGVuOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJcyB0aGlzIGEgZmluYWxpc2luZyBpdGVtLCBpLmUuLCBvbmUgdGhhdCBvbmx5IGNvbGxlY3RzIG5vZGVzLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIGlzRmluYWw6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdsb2JhbCBwcm9wZXJ0aWVzIG9mIHRoZSBwYXJzZXIuXG4gICAqIEB0eXBlIHtFbnZMaXN0fVxuICAgKi9cbiAgIGdsb2JhbDogRW52TGlzdDtcblxuICAvKipcbiAgICogTG9jYWwgcHJvcGVydGllcyBvZiB0aGUgc3RhY2sgaXRlbS5cbiAgICogQHR5cGUge0Vudkxpc3R9XG4gICAqL1xuICAgZW52OiBFbnZMaXN0O1xuXG4gIC8qKlxuICAgKiBDb3B5IGxvY2FsIHByb3BlcnRpZXMgd2hlbiBwdXNoZWQgdG8gc3RhY2s/XG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgIGNvcHlFbnY6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRlc3RzIGlmIGl0ZW0gaXMgb2YgdGhlIGdpdmVuIHR5cGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kIFRoZSB0eXBlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGl0ZW0gaXMgb2YgdGhhdCB0eXBlLlxuICAgKi9cbiAgaXNLaW5kKGtpbmQ6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEdldCBhIHByb3BlcnR5IG9mIHRoZSBpdGVtLlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2V5IFByb3BlcnR5IG5hbWUuXG4gICAqIEByZXR1cm4ge1Byb3B9IFByb3BlcnR5IHZhbHVlIGlmIGl0IGV4aXN0cy5cbiAgICovXG4gIGdldFByb3BlcnR5KGtleTogc3RyaW5nKTogUHJvcDtcblxuICAvKipcbiAgICogU2V0IGEgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgUHJvcGVydHkgbmFtZS5cbiAgICogQHBhcmFtIHtQcm9wfSB2YWx1ZSBQcm9wZXJ0eSB2YWx1ZS5cbiAgICogQHJldHVybiB7U3RhY2tJdGVtfSBUaGUgaXRlbSBmb3IgcGlwZWxpbmluZy5cbiAgICovXG4gIHNldFByb3BlcnR5KGtleTogc3RyaW5nLCB2YWx1ZTogUHJvcCk6IFN0YWNrSXRlbTtcblxuICAvKipcbiAgICogU2V0cyBhIGxpc3Qgb2YgcHJvcGVydGllcy5cbiAgICogQHBhcmFtIHtQcm9wTGlzdH0gZGVmIFRoZSBwcm9wZXJ0aWVzIHRvIHNldC5cbiAgICogQHJldHVybiB7U3RhY2tJdGVtfSBSZXR1cm5zIHRoZSBzdGFjayBpdGVtIG9iamVjdCBmb3IgcGlwZWxpbmluZy5cbiAgICovXG4gIHNldFByb3BlcnRpZXMoZGVmOiBQcm9wTGlzdCk6IFN0YWNrSXRlbTtcblxuICAvKipcbiAgICogQ29udmVuaWVuY2UgbWV0aG9kIGZvciByZXR1cm5pbmcgdGhlIHN0cmluZyBwcm9wZXJ0eSBcIm5hbWVcIi5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgdmFsdWUgZm9yIHRoZSBuYW1lIHByb3BlcnR5LlxuICAgKi9cbiAgZ2V0TmFtZSgpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRlWCBwYXJzaW5nIGluIE1hdGhKYXggaXMgZXNzZW50aWFsbHkgaW1wbGVtZW50ZWQgdmlhIGEgbmVzdGVkIHN0YWNrXG4gICAqIGF1dG9tYXRvbi4gVGhhdCBpcyB0aGUgdGV4IHBhcnNlciB3b3JrcyBvbiBhIHN0YWNrLCBhbmQgZWFjaCBpdGVtIG9uIHRoZVxuICAgKiBzdGFjayBjYW4gaGF2ZSBhIGRhdGEgc3RhY2sgb2YgaXRzIG93bi4gRGF0YSBvbiB0aGUgc3RhY2sgaXMgZWl0aGVyIGEgc3RhY2tcbiAgICogaXRlbSBvciBhIG5vZGUuXG4gICAqXG4gICAqIFRoZSBjaGVja0l0ZW0gbWV0aG9kIGVmZmVjdGl2ZWx5IGltcGxlbWVudHMgdGhlIHJlY3Vyc2l2ZSBjaGVja2luZyBvZlxuICAgKiBpbnB1dCBkYXRhIGZyb20gdGhlIHBhcnNlciBhZ2FpbnN0IGRhdGEgcmVjdXJzaXZlbHkgZ2l2ZW4gb24gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBJLmUuLCBuZXcgaW5wdXQgaXMgcGFyc2VkIHJlc3VsdGluZyBpbiBhIG5ldyBpdGVtLiBXaGVuIHB1c2hlZCBvbiB0aGUgc3RhY2tcbiAgICogaXQgaXMgY2hlY2tlZCBhZ2FpbnN0IHRoZSB0b3AgbW9zdCBpdGVtIG9uIHRoZSBzdGFjay4gVGhpcyBlaXRoZXIgbGVhZHMgdG9cbiAgICogdGhlIGl0ZW0gYmVpbmcgcHVzaGVkIG9udG8gdGhlIHN0YWNrIG9yIGNvbWJpbmVkIHdpdGggdGhlIHRvcCBtb3N0XG4gICAqIGVsZW1lbnQocyksIHB1c2hpbmcgYSBuZXcgaXRlbSwgd2hpY2ggaXMgcmVjdXJzaXZlbHkgY2hlY2tlZCwgdW5sZXNzIGFuXG4gICAqIGVycm9yIGlzIHRocm93bi5cbiAgICpcbiAgICogQSBzaW1wbGUgZXhhbXBsZTogSWYgXFxcXGVuZHtmb299IGlzIHBhcnNlZCwgYW4gZW5kSXRlbSBpcyBjcmVhdGVkLCBwdXNoZWQgb25cbiAgICogdGhlIHN0YWNrLiBOb2RlcyBvbiB0aGUgc3RhY2sgYXJlIGNvbGxhcHNlZCBpbnRvIGNvbnRlbnQgb2YgdGhlICdmb28nXG4gICAqIGVudmlyb25tZW50LCB1bnRpbCBhIGJlZ2luSXRlbSBmb3IgJ2ZvbycgaXMgZm91bmQuICBJZiBhIGJlZ2luSXRlbSBpcyBub3RcbiAgICogZm9yICdmb28nIG9yIGRvZXMgbm90IGV4aXN0IGFuIGVycm9yIGlzIHRocm93bi5cbiAgICpcbiAgICogQHBhcmFtIHtTdGFja0l0ZW19IGl0ZW0gVGhlIHB1c2hlZCBpdGVtLlxuICAgKiBAcmV0dXJuIHtDaGVja1R5cGV9IFRydWUvZmFsc2Ugb3IgYW4gaXRlbSBvciBub2RlLlxuICAgKi9cbiAgY2hlY2tJdGVtKGl0ZW06IFN0YWNrSXRlbSk6IENoZWNrVHlwZTtcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFN0YWNrSXRlbUNsYXNzIGV4dGVuZHMgRmFjdG9yeU5vZGVDbGFzczxTdGFja0l0ZW0+IHtcbiAgLy8gbmV3IChmYWN0b3J5OiBTdGFja0l0ZW1GYWN0b3J5LCAuLi5hcmdzOiBhbnlbXSk6IFN0YWNrSXRlbTtcbn1cblxuXG4vKipcbiAqIEFic3RyYWN0IGJhc2ljIGl0ZW0gY2xhc3MgdGhhdCBpbXBsZW1lbnRzIG1vc3Qgb2YgdGhlIHN0YWNrIGl0ZW1cbiAqIGZ1bmN0aW9uYWxpdHkuIEluIHBhcnRpY3VsYXIsIGl0IGNvbnRhaW5zIHRoZSBiYXNlIG1ldGhvZCBmb3IgY2hlY2tJdGVtLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUl0ZW0gZXh0ZW5kcyBNbWxTdGFjayBpbXBsZW1lbnRzIFN0YWNrSXRlbSB7XG5cbiAgLyoqXG4gICAqIFRoZSBmYWlsIHZhbHVlLlxuICAgKiBAdHlwZSB7Q2hlY2tUeXBlfVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBmYWlsOiBDaGVja1R5cGUgPSBbbnVsbCwgZmFsc2VdO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VjY2VzcyB2YWx1ZS5cbiAgICogQHR5cGUge0NoZWNrVHlwZX1cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgc3VjY2VzczogQ2hlY2tUeXBlID0gW251bGwsIHRydWVdO1xuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgYmFzaWMgZXJyb3JzLlxuICAgKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IHN0cmluZ1tdfX1cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZXJyb3JzOiB7W2tleTogc3RyaW5nXTogc3RyaW5nW119ID0ge1xuICAgIC8vIEB0ZXN0IEV4dHJhT3Blbk1pc3NpbmdDbG9zZVxuICAgIGVuZDogWydNaXNzaW5nQmVnaW5FeHRyYUVuZCcsICdNaXNzaW5nIFxcXFxiZWdpbnslMX0gb3IgZXh0cmEgXFxcXGVuZHslMX0nXSxcbiAgICAvLyBAdGVzdCBFeHRyYUNsb3NlTWlzc2luZ09wZW5cbiAgICBjbG9zZTogWydFeHRyYUNsb3NlTWlzc2luZ09wZW4nLCAnRXh0cmEgY2xvc2UgYnJhY2Ugb3IgbWlzc2luZyBvcGVuIGJyYWNlJ10sXG4gICAgLy8gQHRlc3QgTWlzc2luZ0xlZnRFeHRyYVJpZ2h0XG4gICAgcmlnaHQ6IFsnTWlzc2luZ0xlZnRFeHRyYVJpZ2h0JywgJ01pc3NpbmcgXFxcXGxlZnQgb3IgZXh0cmEgXFxcXHJpZ2h0J10sXG4gICAgbWlkZGxlOiBbJ0V4dHJhTWlkZGxlJywgJ0V4dHJhIFxcXFxtaWRkbGUnXVxuICB9O1xuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdsb2JhbDogRW52TGlzdCA9IHt9O1xuXG4gIHByaXZhdGUgX2VudjogRW52TGlzdDtcblxuICBwcml2YXRlIF9wcm9wZXJ0aWVzOiBQcm9wTGlzdCA9IHt9O1xuXG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAZXh0ZW5kcyB7TW1sU3RhY2t9XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgZmFjdG9yeTogU3RhY2tJdGVtRmFjdG9yeSwgLi4ubm9kZXM6IE1tbE5vZGVbXSkge1xuICAgIHN1cGVyKG5vZGVzKTtcbiAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgIHRoaXMuX2VudiA9IHt9O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSB0eXBlIG9mIHRoZSBzdGFjayBpdGVtLlxuICAgKi9cbiAgICBwdWJsaWMgZ2V0IGtpbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2Jhc2UnO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge0Vudkxpc3R9IEdldCB0aGUgcHJpdmF0ZSBlbnZpcm9ubWVudFxuICAgKi9cbiAgcHVibGljIGdldCBlbnYoKTogRW52TGlzdCB7XG4gICAgcmV0dXJuIHRoaXMuX2VudjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHByaXZhdGUgZW52aXJvbm1lbnRcbiAgICogQHBhcmFtIHtFbnZMaXN0fSB2YWx1ZSBOZXcgcHJpdmF0ZSBlbnZpcm9uZW10LlxuICAgKi9cbiAgcHVibGljIHNldCBlbnYodmFsdWU6IEVudkxpc3QpIHtcbiAgICB0aGlzLl9lbnYgPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGlzIHRvIGNvcHkgbG9jYWwgZW52aXJvbm1lbnQgd2hlbiBwdXNoZWQgb24gc3RhY2tcbiAgICovXG4gIHB1YmxpYyBnZXQgY29weUVudigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXRQcm9wZXJ0eShrZXk6IHN0cmluZyk6IFByb3Age1xuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzW2tleV07XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0UHJvcGVydHkoa2V5OiBzdHJpbmcsIHZhbHVlOiBQcm9wKSB7XG4gICAgdGhpcy5fcHJvcGVydGllc1trZXldID0gdmFsdWU7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGl0ZW0gaXMgYW4gb3BlbmluZyBlbnRpdHksIGkuZS4sIGl0IGV4cGVjdHMgYVxuICAgKiAgICAgY2xvc2luZyBjb3VudGVycGFydCBvbiB0aGUgc3RhY2sgbGF0ZXIuXG4gICAqL1xuICBnZXQgaXNPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGl0ZW0gaXMgYW4gY2xvc2luZyBlbnRpdHksIGkuZS4sIGl0IG5lZWRzIGFuXG4gICAqICAgICBvcGVuaW5nIGNvdW50ZXJwYXJ0IGFscmVhZHkgb24gdGhlIHN0YWNrLlxuICAgKi9cbiAgZ2V0IGlzQ2xvc2UoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBpdGVtIGlzIGZpbmFsLCBpLmUuLCBpdCBjb250YWlucyBvbmUgb3IgbXVsdGlwbGVcbiAgICogICAgICBmaW5pc2hlZCBwYXJzZWQgbm9kZXMuXG4gICAqL1xuICBnZXQgaXNGaW5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBpc0tpbmQoa2luZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIGtpbmQgPT09IHRoaXMua2luZDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIGlmIChpdGVtLmlzS2luZCgnb3ZlcicpICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICBpdGVtLnNldFByb3BlcnR5KCdudW0nLCB0aGlzLnRvTW1sKGZhbHNlKSk7XG4gICAgICB0aGlzLkNsZWFyKCk7XG4gICAgfVxuICAgIGlmIChpdGVtLmlzS2luZCgnY2VsbCcpICYmIHRoaXMuaXNPcGVuKSB7XG4gICAgICBpZiAoaXRlbS5nZXRQcm9wZXJ0eSgnbGluZWJyZWFrJykpIHtcbiAgICAgICAgcmV0dXJuIEJhc2VJdGVtLmZhaWw7XG4gICAgICB9XG4gICAgICAvLyBAdGVzdCBBbXBlcnNhbmQtZXJyb3JcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTWlzcGxhY2VkJywgJ01pc3BsYWNlZCAlMScsIGl0ZW0uZ2V0TmFtZSgpKTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uaXNDbG9zZSAmJiB0aGlzLmdldEVycm9ycyhpdGVtLmtpbmQpKSB7XG4gICAgICAvLyBAdGVzdCBFeHRyYU9wZW5NaXNzaW5nQ2xvc2UsIEV4dHJhQ2xvc2VNaXNzaW5nT3BlbixcbiAgICAgIC8vICAgICAgIE1pc3NpbmdMZWZ0RXh0cmFSaWdodCwgTWlzc2luZ0JlZ2luRXh0cmFFbmRcbiAgICAgIGNvbnN0IFtpZCwgbWVzc2FnZV0gPSB0aGlzLmdldEVycm9ycyhpdGVtLmtpbmQpO1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKGlkLCBtZXNzYWdlLCBpdGVtLmdldE5hbWUoKSk7XG4gICAgfVxuICAgIGlmICghaXRlbS5pc0ZpbmFsKSB7XG4gICAgICByZXR1cm4gQmFzZUl0ZW0uc3VjY2VzcztcbiAgICB9XG4gICAgdGhpcy5QdXNoKGl0ZW0uRmlyc3QpO1xuICAgIHJldHVybiBCYXNlSXRlbS5mYWlsO1xuICB9XG5cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBpdGVtJ3MgZW52aXJvbm1lbnQuXG4gICAqL1xuICBwdWJsaWMgY2xlYXJFbnYoKSB7XG4gICAgZm9yIChjb25zdCBpZCBvZiBPYmplY3Qua2V5cyh0aGlzLmVudikpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLmVudltpZF07XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0UHJvcGVydGllcyhkZWY6IFByb3BMaXN0KSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLl9wcm9wZXJ0aWVzLCBkZWYpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRQcm9wZXJ0eSgnbmFtZScpIGFzIHN0cmluZztcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLmtpbmQgKyAnWycgKyB0aGlzLm5vZGVzLmpvaW4oJzsgJykgKyAnXSc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZXQgZXJyb3IgbWVzc2FnZXMgZm9yIGEgcGFydGljdWxhciB0eXBlcyBvZiBzdGFjayBpdGVtcy4gVGhpcyByZWFkcyBlcnJvclxuICAgKiBtZXNzYWdlcyBmcm9tIHRoZSBzdGF0aWMgZXJyb3JzIG9iamVjdCwgd2hpY2ggY2FuIGJlIGV4dGVuZGVkIGluXG4gICAqIHN1YmNsYXNzZXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kIFRoZSBzdGFjayBpdGVtIHR5cGUuXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBUaGUgbGlzdCBvZiBhcmd1bWVudHMgZm9yIHRoZSBUZVhFcnJvci5cbiAgICovXG4gIHB1YmxpYyBnZXRFcnJvcnMoa2luZDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IENMQVNTID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEJhc2VJdGVtKTtcbiAgICByZXR1cm4gKENMQVNTLmVycm9ycyB8fCB7fSlba2luZF0gfHwgQmFzZUl0ZW0uZXJyb3JzW2tpbmRdO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgVGhlIGdlbmVyaWMgRmFjdG9yeSBjbGFzcyBmb3IgY3JlYXRpbmcgYXJiaXRyYXJ5IG9iamVjdHNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIEZhY3Rvcnkgbm9kZSBpbnRlcmZhY2VzIChvbmUgZm9yIHRoZSBub2RlIGluc3RhbmNlLCBvbmUgZm9yIHRoZSBub2RlIGNsYXNzKVxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFjdG9yeU5vZGUge1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHRlbXBsYXRlIE4gIFRoZSBOb2RlIHR5cGUgYmVpbmcgY3JlYXRlZCBieSB0aGUgZmFjdG9yeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhY3RvcnlOb2RlQ2xhc3M8TiBleHRlbmRzIEZhY3RvcnlOb2RlPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge0ZhY3Rvcnk8TiwgRmFjdG9yeU5vZGVDbGFzczxOPj59IGZhY3RvcnkgIFRoZSBmYWN0b3J5IGZvciBjcmVhdGluZyBtb3JlIG5vZGVzXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBuZWVkZWQgYnkgdGhlIG5vZGVcbiAgICogQHJldHVybiB7Tn0gIFRoZSBuZXdseSBjcmVhdGVkIG5vZGVcbiAgICovXG4gIG5ldyhmYWN0b3J5OiBGYWN0b3J5PE4sIEZhY3RvcnlOb2RlQ2xhc3M8Tj4+LCAuLi5hcmdzOiBhbnlbXSk6IE47XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIEZhY3RvcnkgaW50ZXJmYWNlXG4gKlxuICogRmFjdG9yeTxOLCBDPiB0YWtlcyBhIG5vZGUgdHlwZSBOIGFuZCBhIG5vZGUgY2xhc3MgQywgd2hpY2ggZ2l2ZVxuICogdGhlIGludGVyZmFjZXMgZm9yIHRoZSBub2RlIGluc3RhbmNlIGFuZCB0aGUgbm9kZSBjb25zdHJ1Y3RvcnMuIFdlXG4gKiBuZWVkIGJvdGggZm9yIHR3byByZWFzb25zOiBmaXJzdCwgeW91IGNhbid0IHVzZSB0eXBlb2YgTiB0byBnZXQgQyxcbiAqIHNpbmNlIE4gaXMgYSB0eXBlIG5vdCBhbiBvYmplY3QsIGFuZCBpZiBOIGhhcyBzdGF0aWMgbWVtYmVycywgd2VcbiAqIG1heSB3YW50IHRvIGFjY2VzcyB0aGVtIGZyb20gdGhlIHJlc3VsdHMgb2YgZ2V0Tm9kZUNsYXNzKGtpbmQpXG4gKiAodGhpcyBpcyBkb25lIGluIE1tbE5vZGVzLCBmb3IgZXhhbXBsZSkuXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBub2RlIHR5cGUgY3JlYXRlZCBieSB0aGUgZmFjdG9yeVxuICogQHRlbXBsYXRlIEMgIFRoZSBjbGFzcyBvZiB0aGUgbm9kZSBiZWluZyBjb25zdHJ1Y3RlZCAoZm9yIGFjY2VzcyB0byBzdGF0aWMgcHJvcGVydGllcylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGYWN0b3J5PE4gZXh0ZW5kcyBGYWN0b3J5Tm9kZSwgQyBleHRlbmRzIEZhY3RvcnlOb2RlQ2xhc3M8Tj4+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kICBUaGUga2luZCBvZiBub2RlIHRvIGNyZWF0ZVxuICAgKiBAcmV0dXJuIHtOfSAgVGhlIG5ld2x5IGNyZWF0ZWQgbm9kZSBvZiB0aGUgZ2l2ZW4ga2luZFxuICAgKi9cbiAgY3JlYXRlKGtpbmQ6IHN0cmluZyk6IE47XG5cbiAgLyoqXG4gICAqIERlZmluZXMgYSBjbGFzcyBmb3IgYSBnaXZlbiBub2RlIGtpbmRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgIFRoZSBraW5kIHdob3NlIGNsYXNzIGlzIGJlaW5nIGRlZmluZWRcbiAgICogQHBhcmFtIHtDfSBub2RlQ2xhc3MgIFRoZSBjbGFzcyBmb3IgdGhlIGdpdmVuIGtpbmRcbiAgICovXG4gIHNldE5vZGVDbGFzcyhraW5kOiBzdHJpbmcsIG5vZGVDbGFzczogQyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kICBUaGUga2luZCBvZiBub2RlIHdob3NlIGNsYXNzIGlzIHRvIGJlIHJldHVybmVkXG4gICAqIEByZXR1cm4ge0N9ICBUaGUgY2xhc3Mgb2JqZWN0IGZvciB0aGUgZ2l2ZW4ga2luZFxuICAgKi9cbiAgZ2V0Tm9kZUNsYXNzKGtpbmQ6IHN0cmluZyk6IEM7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kICBUaGUga2luZCB3aG9zZSBkZWZpbml0aW9uIGlzIHRvIGJlIGRlbGV0ZWRcbiAgICovXG4gIGRlbGV0ZU5vZGVDbGFzcyhraW5kOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgIFRoZSBub2RlIHRvIHRlc3QgaWYgaXQgaXMgb2YgYSBnaXZlbiBraW5kXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kICBUaGUga2luZCB0byB0ZXN0IGZvclxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgVHJ1ZSBpZiB0aGUgbm9kZSBpcyBvZiB0aGUgZ2l2ZW4ga2luZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBub2RlSXNLaW5kKG5vZGU6IE4sIGtpbmQ6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgVGhlIG5hbWVzIG9mIGFsbCB0aGUgYXZhaWxhYmxlIGtpbmRzIG9mIG5vZGVzXG4gICAqL1xuICBnZXRLaW5kcygpOiBzdHJpbmdbXTtcbn1cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBnZW5lcmljIEFic3RyYWN0RmFjdG9yeUNsYXNzIGludGVyZmFjZVxuICogICAobmVlZGVkIGZvciBhY2Nlc3MgdG8gZGVmYXVsdE5vZGVzIHZpYSB0aGUgY29uc3RydWN0b3IpXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBub2RlIHR5cGUgY3JlYXRlZCBieSB0aGUgZmFjdG9yeVxuICogQHRlbXBsYXRlIEMgIFRoZSBjbGFzcyBvZiB0aGUgbm9kZSBiZWluZyBjb25zdHJ1Y3RlZCAoZm9yIGFjY2VzcyB0byBzdGF0aWMgcHJvcGVydGllcylcbiAqL1xuaW50ZXJmYWNlIEFic3RyYWN0RmFjdG9yeUNsYXNzPE4gZXh0ZW5kcyBGYWN0b3J5Tm9kZSwgQyBleHRlbmRzIEZhY3RvcnlOb2RlQ2xhc3M8Tj4+IGV4dGVuZHMgRnVuY3Rpb24ge1xuICBkZWZhdWx0Tm9kZXM6IHtba2luZDogc3RyaW5nXTogQ307XG59XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgZ2VuZXJpYyBBYnN0cmFjdEZhY3RvcnkgY2xhc3NcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIG5vZGUgdHlwZSBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5XG4gKiBAdGVtcGxhdGUgQyAgVGhlIGNsYXNzIG9mIHRoZSBub2RlIGJlaW5nIGNvbnN0cnVjdGVkIChmb3IgYWNjZXNzIHRvIHN0YXRpYyBwcm9wZXJ0aWVzKVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RGYWN0b3J5PE4gZXh0ZW5kcyBGYWN0b3J5Tm9kZSwgQyBleHRlbmRzIEZhY3RvcnlOb2RlQ2xhc3M8Tj4+IGltcGxlbWVudHMgRmFjdG9yeTxOLCBDPiB7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyB0byB1c2UgZm9yIHRoZSBub2RlIG1hcFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0Tm9kZXMgPSB7fTtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQga2luZFxuICAgKi9cbiAgcHVibGljIGRlZmF1bHRLaW5kID0gJ3Vua25vd24nO1xuXG4gIC8qKlxuICAgKiBUaGUgbWFwIG9mIG5vZGUga2luZHMgdG8gbm9kZSBjbGFzc2VzXG4gICAqL1xuICBwcm90ZWN0ZWQgbm9kZU1hcDogTWFwPHN0cmluZywgQz4gPSBuZXcgTWFwKCk7XG5cbiAgLyoqXG4gICAqIEFuIG9iamVjdCBjb250YWluaW5nIGZ1bmN0aW9ucyBmb3IgY3JlYXRpbmcgdGhlIHZhcmlvdXMgbm9kZSBraW5kc1xuICAgKi9cbiAgcHJvdGVjdGVkIG5vZGU6IHtba2luZDogc3RyaW5nXTogKC4uLmFyZ3M6IGFueVtdKSA9PiBOfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKG5vZGVzOiB7W2tpbmQ6IHN0cmluZ106IEN9ID0gbnVsbCkge1xuICAgIGlmIChub2RlcyA9PT0gbnVsbCkge1xuICAgICAgbm9kZXMgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyBBYnN0cmFjdEZhY3RvcnlDbGFzczxOLCBDPikuZGVmYXVsdE5vZGVzO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGtpbmQgb2YgT2JqZWN0LmtleXMobm9kZXMpKSB7XG4gICAgICB0aGlzLnNldE5vZGVDbGFzcyhraW5kLCBub2Rlc1traW5kXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShraW5kOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgcmV0dXJuICh0aGlzLm5vZGVba2luZF0gfHwgdGhpcy5ub2RlW3RoaXMuZGVmYXVsdEtpbmRdKSguLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXROb2RlQ2xhc3Moa2luZDogc3RyaW5nLCBub2RlQ2xhc3M6IEMpIHtcbiAgICB0aGlzLm5vZGVNYXAuc2V0KGtpbmQsIG5vZGVDbGFzcyk7XG4gICAgbGV0IFRISVMgPSB0aGlzO1xuICAgIGxldCBLSU5EID0gdGhpcy5ub2RlTWFwLmdldChraW5kKTtcbiAgICB0aGlzLm5vZGVba2luZF0gPSAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIHJldHVybiBuZXcgS0lORChUSElTLCAuLi5hcmdzKTtcbiAgICB9O1xuICB9XG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXROb2RlQ2xhc3Moa2luZDogc3RyaW5nKTogQyB7XG4gICAgcmV0dXJuIHRoaXMubm9kZU1hcC5nZXQoa2luZCk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZGVsZXRlTm9kZUNsYXNzKGtpbmQ6IHN0cmluZykge1xuICAgIHRoaXMubm9kZU1hcC5kZWxldGUoa2luZCk7XG4gICAgZGVsZXRlIHRoaXMubm9kZVtraW5kXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBub2RlSXNLaW5kKG5vZGU6IE4sIGtpbmQ6IHN0cmluZykge1xuICAgIHJldHVybiAobm9kZSBpbnN0YW5jZW9mIHRoaXMuZ2V0Tm9kZUNsYXNzKGtpbmQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXRLaW5kcygpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLm5vZGVNYXAua2V5cygpKTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDA5LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBBIGZhY3RvcnkgZm9yIHN0YWNrIGl0ZW1zLiBUaGlzIGFsbG93cyBwYXJ0aWN1bGFyIGl0ZW1zIHRvIGJlXG4gKiAgICAgb3ZlcndyaXR0ZW4gbGF0ZXIuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtTdGFja0l0ZW1DbGFzcywgU3RhY2tJdGVtLCBCYXNlSXRlbX0gZnJvbSAnLi9TdGFja0l0ZW0uanMnO1xuaW1wb3J0IFBhcnNlT3B0aW9ucyBmcm9tICcuL1BhcnNlT3B0aW9ucy5qcyc7XG5pbXBvcnQge0Fic3RyYWN0RmFjdG9yeX0gZnJvbSAnLi4vLi4vY29yZS9UcmVlL0ZhY3RvcnkuanMnO1xuXG5cbmNsYXNzIER1bW15SXRlbSBleHRlbmRzIEJhc2VJdGVtIHt9XG5cbi8qKlxuICogVGhlIFN0YWNrSXRlbUZhY3RvcnkgaXMgaW5pdGlhbGx5IHBvcHVsYXRlZCB3aXRoIHRoZSBkZWZhdWx0IHN0YWNrIGl0ZW1cbiAqIGNsYXNzZXMuIFRoZXkgY2FuIGJlIGNoYW5nZWQsIGRlbGV0ZWQgb3IgYWRkZWQgdG8sIGlmIGFuZCB3aGVuIG5lY2Vzc2FyeS5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBleHRlbmRzIHtBYnN0cmFjdEZhY3Rvcnl9XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YWNrSXRlbUZhY3RvcnkgZXh0ZW5kcyBBYnN0cmFjdEZhY3Rvcnk8U3RhY2tJdGVtLCBTdGFja0l0ZW1DbGFzcz4ge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgRGVmYXVsdFN0YWNrSXRlbXM6IHtba2luZDogc3RyaW5nXTogU3RhY2tJdGVtQ2xhc3N9ID0ge1xuICAgIFtEdW1teUl0ZW0ucHJvdG90eXBlLmtpbmRdOiBEdW1teUl0ZW1cbiAgfTtcblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBkZWZhdWx0S2luZCA9ICdkdW1teSc7XG5cblxuICAvKipcbiAgICogVGhlIHBhcnNlciBjb25maWd1cmF0aW9uLlxuICAgKiBAdHlwZSB7UGFyc2VPcHRpb25zfVxuICAgKi9cbiAgcHVibGljIGNvbmZpZ3VyYXRpb246IFBhcnNlT3B0aW9ucyA9IG51bGw7XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMDktMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE5vZGUgZmFjdG9yeSBmb3IgY3JlYXRpbmcgTW1sTm9kZXMuIFRoaXMgYWxsb3dzIGV4dGVuc2lvblxuICogICAgIHBhY2thZ2VzIHRvIGFkZCBub2RlIGNvbnN0cnVjdG9ycyBvciBvdmVyd3JpdGUgZXhpc3Rpbmcgb25lcy5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge1RleHROb2RlLCBNbWxOb2RlfSBmcm9tICcuLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQge01tbEZhY3Rvcnl9IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxGYWN0b3J5LmpzJztcbmltcG9ydCBQYXJzZU9wdGlvbnMgZnJvbSAnLi9QYXJzZU9wdGlvbnMuanMnO1xuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4vTm9kZVV0aWwuanMnO1xuXG5cbmV4cG9ydCB0eXBlIE5vZGVGYWN0b3J5TWV0aG9kID0gKGZhY3Rvcnk6IE5vZGVGYWN0b3J5LCBraW5kOiBzdHJpbmcsIC4uLnJlc3Q6IGFueVtdKSA9PiBNbWxOb2RlO1xuXG5leHBvcnQgY2xhc3MgTm9kZUZhY3Rvcnkge1xuXG4gIC8qKlxuICAgKiBQYXJzZXIgY29uZmlndXJhdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gYmV0d2VlbiBub2RlIG1ldGhvZHMuXG4gICAqIEB0eXBlIHtQYXJzZU9wdGlvbn1cbiAgICovXG4gIHB1YmxpYyBjb25maWd1cmF0aW9uOiBQYXJzZU9wdGlvbnM7XG5cblxuICAvKipcbiAgICogVGhlIGV4dGVybmFsIG5vZGUgZmFjdG9yeS5cbiAgICogQHR5cGUge01tbEZhY3Rvcnl9XG4gICAqL1xuICBwcm90ZWN0ZWQgbW1sRmFjdG9yeTogTW1sRmFjdG9yeSA9IG51bGw7XG5cblxuICAvKipcbiAgICogVGhlIGZhY3RvcnkgdGFibGUgcG9wdWxhdGVkIHdpdGggc29tZSBkZWZhdWx0IG1ldGhvZHMuXG4gICAqL1xuICBwcml2YXRlIGZhY3Rvcnk6IHtba2luZDogc3RyaW5nXTogTm9kZUZhY3RvcnlNZXRob2R9ID1cbiAgICB7J25vZGUnOiBOb2RlRmFjdG9yeS5jcmVhdGVOb2RlLFxuICAgICAndG9rZW4nOiBOb2RlRmFjdG9yeS5jcmVhdGVUb2tlbixcbiAgICAgJ3RleHQnOiBOb2RlRmFjdG9yeS5jcmVhdGVUZXh0LFxuICAgICAnZXJyb3InOiBOb2RlRmFjdG9yeS5jcmVhdGVFcnJvclxuICAgIH07XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgbm9kZSBnZW5lcmF0aW9uIGZ1bmN0aW9uLlxuICAgKiBAcGFyYW0ge05vZGVGYWN0b3J5fSBmYWN0b3J5IFRoZSBjdXJyZW50IG5vZGUgZmFjdG9yeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgVGhlIHR5cGUgb2Ygbm9kZSB0byBjcmVhdGUuXG4gICAqIEBwYXJhbSB7TW1sTm9kZVtdfSBjaGlsZHJlbiBJdHMgY2hpbGRyZW4uXG4gICAqIEBwYXJhbSB7YW55PX0gZGVmIEl0cyBwcm9wZXJ0aWVzLlxuICAgKiBAcGFyYW0ge1RleHROb2RlPX0gdGV4dCBBbiBvcHRpb25hbCB0ZXh0IG5vZGUgaWYgdGhpcyBpcyBhIHRva2VuLlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgbmV3bHkgY3JlYXRlZCBNbWwgbm9kZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlTm9kZShmYWN0b3J5OiBOb2RlRmFjdG9yeSwga2luZDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRyZW46IE1tbE5vZGVbXSA9IFtdLCBkZWY6IGFueSA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dD86IFRleHROb2RlKTogTW1sTm9kZSB7XG4gICAgY29uc3Qgbm9kZSA9IGZhY3RvcnkubW1sRmFjdG9yeS5jcmVhdGUoa2luZCk7XG4gICAgbm9kZS5zZXRDaGlsZHJlbihjaGlsZHJlbik7XG4gICAgaWYgKHRleHQpIHtcbiAgICAgIG5vZGUuYXBwZW5kQ2hpbGQodGV4dCk7XG4gICAgfVxuICAgIE5vZGVVdGlsLnNldFByb3BlcnRpZXMobm9kZSwgZGVmKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIERlZmF1bHQgdG9rZW4gZ2VuZXJhdGlvbiBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHtOb2RlRmFjdG9yeX0gZmFjdG9yeSBUaGUgY3VycmVudCBub2RlIGZhY3RvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kIFRoZSB0eXBlIG9mIG5vZGUgdG8gY3JlYXRlLlxuICAgKiBAcGFyYW0ge2FueX0gZGVmIEl0cyBwcm9wZXJ0aWVzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXh0IG9mIHRoZSB0b2tlbi5cbiAgICogQHJldHVybiB7TW1sTm9kZX0gVGhlIG5ld2x5IGNyZWF0ZWQgdG9rZW4gbm9kZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlVG9rZW4oZmFjdG9yeTogTm9kZUZhY3RvcnksIGtpbmQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWY6IGFueSA9IHt9LCB0ZXh0OiBzdHJpbmcgPSAnJyk6IE1tbE5vZGUgIHtcbiAgICBjb25zdCB0ZXh0Tm9kZSA9IGZhY3RvcnkuY3JlYXRlKCd0ZXh0JywgdGV4dCk7XG4gICAgcmV0dXJuIGZhY3RvcnkuY3JlYXRlKCdub2RlJywga2luZCwgW10sIGRlZiwgdGV4dE5vZGUpO1xuICB9XG5cblxuICAvKipcbiAgICogRGVmYXVsdCB0ZXh0IG5vZGUgZ2VuZXJhdGlvbiBmdW5jdGlvbi5cbiAgICogQHBhcmFtIHtOb2RlRmFjdG9yeX0gZmFjdG9yeSBUaGUgY3VycmVudCBub2RlIGZhY3RvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSB0ZXh0IGZvciB0aGUgbmV3IG5vZGUuXG4gICAqIEByZXR1cm4ge1RleHROb2RlfSBUaGUgbmV3bHkgY3JlYXRlZCB0ZXh0IG5vZGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZVRleHQoZmFjdG9yeTogTm9kZUZhY3RvcnksIHRleHQ6IHN0cmluZyk6IFRleHROb2RlICB7XG4gICAgaWYgKHRleHQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiAoZmFjdG9yeS5tbWxGYWN0b3J5LmNyZWF0ZSgndGV4dCcpIGFzIFRleHROb2RlKS5zZXRUZXh0KHRleHQpO1xuICB9XG5cblxuICAvKipcbiAgICogRGVmYXVsdCBlcnJvciBub2RlIGdlbmVyYXRpb24gZnVuY3Rpb24uXG4gICAqIEBwYXJhbSB7Tm9kZUZhY3Rvcnl9IGZhY3RvcnkgVGhlIGN1cnJlbnQgbm9kZSBmYWN0b3J5LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZS5cbiAgICogQHJldHVybiB7TW1sTm9kZX0gVGhlIG5ld2x5IGNyZWF0ZWQgZXJyb3Igbm9kZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlRXJyb3IoZmFjdG9yeTogTm9kZUZhY3RvcnksIG1lc3NhZ2U6IHN0cmluZyk6IE1tbE5vZGUgIHtcbiAgICBsZXQgdGV4dCA9IGZhY3RvcnkuY3JlYXRlKCd0ZXh0JywgbWVzc2FnZSk7XG4gICAgbGV0IG10ZXh0ID0gZmFjdG9yeS5jcmVhdGUoJ25vZGUnLCAnbXRleHQnLCBbXSwge30sIHRleHQpO1xuICAgIGxldCBlcnJvciA9IGZhY3RvcnkuY3JlYXRlKCdub2RlJywgJ21lcnJvcicsIFttdGV4dF0sIHsnZGF0YS1tangtZXJyb3InOiBtZXNzYWdlfSk7XG4gICAgcmV0dXJuIGVycm9yO1xuICB9XG5cblxuICAvKipcbiAgICogQHBhcmFtIHtNbWxGYWN0b3J5fSBtbWxGYWN0b3J5ICAgVGhlIE1tbEZhY3RvcnkgZm9yIHRoZSBUZVggamF4IHRvIHVzZVxuICAgKi9cbiAgcHVibGljIHNldE1tbEZhY3RvcnkobW1sRmFjdG9yeTogTW1sRmFjdG9yeSkge1xuICAgIHRoaXMubW1sRmFjdG9yeSA9IG1tbEZhY3Rvcnk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG1ldGhvZCB0byB0aGUgZmFjdG9yeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgVGhlIHR5cGUgb2Ygbm9kZSB0aGUgbWV0aG9kIGNyZWF0ZXMuXG4gICAqIEBwYXJhbSB7Tm9kZUZhY3RvcnlNZXRob2R9IGZ1bmMgVGhlIG5vZGUgY3JlYXRvci5cbiAgICovXG4gIHB1YmxpYyBzZXQoa2luZDogc3RyaW5nLCBmdW5jOiBOb2RlRmFjdG9yeU1ldGhvZCkge1xuICAgIHRoaXMuZmFjdG9yeVtraW5kXSA9IGZ1bmM7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBBZGRzIGEgc2V0IG9mIG5vZGUgY3JlYXRvcnMgdG8gdGhlIGZhY3RvcnkuXG4gICAqIEBwYXJhbSB7T2JqZWN0LjxOb2RlRmFjdG9yeU1ldGhvZD59IG1hcHMgVGhlIHNldCBvZiBmdW5jdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgc2V0Q3JlYXRvcnMobWFwczoge1traW5kOiBzdHJpbmddOiBOb2RlRmFjdG9yeU1ldGhvZH0pIHtcbiAgICBmb3IgKGxldCBraW5kIGluIG1hcHMpIHtcbiAgICAgIHRoaXMuc2V0KGtpbmQsIG1hcHNba2luZF0pO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBub2RlIGZvciB0aGUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmUgZnJvbSB0aGUgZmFjdG9yeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgVGhlIHR5cGUgb2Ygbm9kZSB0byBiZSBjcmVhdGVkLlxuICAgKiBAcGFyYW0ge2FueVtdfSAuLi5yZXN0IFRoZSBhcmd1bWVudHMgZm9yIHRoZSBub2RlLlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgY3JlYXRlZCBub2RlLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShraW5kOiBzdHJpbmcsIC4uLnJlc3Q6IGFueVtdKTogTW1sTm9kZSB7XG4gICAgY29uc3QgZnVuYyA9IHRoaXMuZmFjdG9yeVtraW5kXSB8fCB0aGlzLmZhY3RvcnlbJ25vZGUnXTtcbiAgICBjb25zdCBub2RlID0gZnVuYyh0aGlzLCByZXN0WzBdLCAuLi5yZXN0LnNsaWNlKDEpKTtcbiAgICBpZiAoa2luZCA9PT0gJ25vZGUnKSB7XG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uYWRkTm9kZShyZXN0WzBdLCBub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2luZCBUaGUgbWV0aG9kIGZvciBnZW5lcmF0aW5nIGEgbm9kZSBvZiBnaXZlbiBraW5kLlxuICAgKi9cbiAgcHVibGljIGdldChraW5kOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5mYWN0b3J5W2tpbmRdO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IEZhY3RvcnkgZ2VuZXJhdGluZyBtYXBzIHRvIGtlZXAgb3B0aW9ucyBmb3IgdGhlIFRlWCBwYXJzZXIuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IFN0YWNrSXRlbUZhY3RvcnkgZnJvbSAnLi9TdGFja0l0ZW1GYWN0b3J5LmpzJztcbmltcG9ydCB7VGFnc30gZnJvbSAnLi9UYWdzLmpzJztcbmltcG9ydCB7U3ViSGFuZGxlcnN9IGZyb20gJy4vTWFwSGFuZGxlci5qcyc7XG5pbXBvcnQge05vZGVGYWN0b3J5fSBmcm9tICcuL05vZGVGYWN0b3J5LmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuL05vZGVVdGlsLmpzJztcbmltcG9ydCB7TW1sTm9kZX0gZnJvbSAnLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuL1RleFBhcnNlci5qcyc7XG5pbXBvcnQge2RlZmF1bHRPcHRpb25zLCBPcHRpb25MaXN0fSBmcm9tICcuLi8uLi91dGlsL09wdGlvbnMuanMnO1xuaW1wb3J0IHtQYXJzZXJDb25maWd1cmF0aW9ufSBmcm9tICcuL0NvbmZpZ3VyYXRpb24uanMnO1xuXG5cbi8qKlxuICogQGNsYXNzXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFBhcnNlT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIHN1YiBoYW5kbGVyc1xuICAgKiBAdHlwZSB7U3ViSGFuZGxlcnN9XG4gICAqL1xuICBwdWJsaWMgaGFuZGxlcnM6IFN1YkhhbmRsZXJzO1xuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBvcHRpb25zLCBtYXBwaW5nIG5hbWVzIHRvIHN0cmluZyBvciBib29sZWFuIHZhbHVlcy5cbiAgICogQHR5cGUge09wdGlvbkxpc3R9XG4gICAqL1xuICBwdWJsaWMgb3B0aW9uczogT3B0aW9uTGlzdCA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBpdGVtIGZhY3RvcnkuXG4gICAqIEB0eXBlIHtTdGFja0l0ZW1GYWN0b3J5fVxuICAgKi9cbiAgcHVibGljIGl0ZW1GYWN0b3J5OiBTdGFja0l0ZW1GYWN0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBub2RlIGZhY3RvcnkuXG4gICAqIEB0eXBlIHtOb2RlRmFjdG9yeX1cbiAgICovXG4gIHB1YmxpYyBub2RlRmFjdG9yeTogTm9kZUZhY3Rvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHRhZ2dpbmcgb2JqZWN0LlxuICAgKiBAdHlwZSB7VGFnc31cbiAgICovXG4gIHB1YmxpYyB0YWdzOiBUYWdzO1xuXG4gIC8qKlxuICAgKiBTdG9yYWdlIGFyZWEgZm9yIHBhcnNlci1zcGVjaWZpYyBwYWNrYWdlIGRhdGEgKGluZGV4ZWQgYnkgcGFja2FnZSBuYW1lKVxuICAgKiBAdHlwZSB7TWFwPHN0cmluZywgYW55Pn1cbiAgICovXG4gIHB1YmxpYyBwYWNrYWdlRGF0YTogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcblxuICAvLyBGaWVsZHMgZm9yIGVwaGVtZXJhbCBvcHRpb25zLCBpLmUuLCBvcHRpb25zIHRoYXQgd2lsbCBiZSBjbGVhcmVkIGZvciBlYWNoXG4gIC8vIHJ1biBvZiB0aGUgcGFyc2VyLlxuICAvKipcbiAgICogU3RhY2sgb2YgcHJldmlvdXMgdGV4IHBhcnNlcnMuIFRoaXMgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHBhcnNlclxuICAgKiBzZXR0aW5ncyB3aGVuIGV4cHJlc3Npb25zIGFyZSByZWN1cnNpdmVseSBwYXJzZWQuXG4gICAqIEB0eXBlIHtUZXhQYXJzZXJbXX1cbiAgICovXG4gIHB1YmxpYyBwYXJzZXJzOiBUZXhQYXJzZXJbXSA9IFtdO1xuXG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHJvb3Qgbm9kZS5cbiAgICogQHR5cGUge01tbE5vZGV9XG4gICAqL1xuICBwdWJsaWMgcm9vdDogTW1sTm9kZSA9IG51bGw7XG5cbiAgLyoqXG4gICAqIExpc3Qgb2Ygbm9kZSBsaXN0cyBzYXZlZCB3aXRoIHJlc3BlY3QgdG8gc29tZSBwcm9wZXJ0eSBvciB0aGVpciBraW5kLlxuICAgKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IE1tbE5vZGVbXX19XG4gICAqL1xuICBwdWJsaWMgbm9kZUxpc3RzOiB7W2tleTogc3RyaW5nXTogTW1sTm9kZVtdfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBFcnJvciBzdGF0ZSBvZiB0aGUgcGFyc2VyLlxuICAgKiBAdHlwZSB7Ym9vbGVhbn1cbiAgICovXG4gIHB1YmxpYyBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG5cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7Q29uZmlndXJhdGlvbn0gY29uZmlndXJhdGlvbiBDb25maWd1cmF0aW9uIG9iamVjdCBvZiB0aGUgY3VycmVudFxuICAgKiAgICAgVGVYIHBhcnNlci5cbiAgICogQHBhcmFtIHtPcHRpb25MaXN0W119IG9wdGlvbnMgICBbVGVYIG9wdGlvbnMsIFRhZyBvcHRpb25zLCB7cGFja2FnZXN9XVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZ3VyYXRpb246IFBhcnNlckNvbmZpZ3VyYXRpb24sIG9wdGlvbnM6IE9wdGlvbkxpc3RbXSA9IFtdKSB7XG4gICAgdGhpcy5oYW5kbGVycyA9IGNvbmZpZ3VyYXRpb24uaGFuZGxlcnM7XG4gICAgLy8gQWRkIG5vZGUgZmFjdG9yeSBtZXRob2RzIGZyb20gcGFja2FnZXMuXG4gICAgdGhpcy5ub2RlRmFjdG9yeSA9IG5ldyBOb2RlRmFjdG9yeSgpO1xuICAgIHRoaXMubm9kZUZhY3RvcnkuY29uZmlndXJhdGlvbiA9IHRoaXM7XG4gICAgdGhpcy5ub2RlRmFjdG9yeS5zZXRDcmVhdG9ycyhjb25maWd1cmF0aW9uLm5vZGVzKTtcbiAgICAvLyBBZGQgc3RhY2tpdGVtcyBmcm9tIHBhY2thZ2VzLlxuICAgIHRoaXMuaXRlbUZhY3RvcnkgPSBuZXcgU3RhY2tJdGVtRmFjdG9yeShjb25maWd1cmF0aW9uLml0ZW1zKTtcbiAgICB0aGlzLml0ZW1GYWN0b3J5LmNvbmZpZ3VyYXRpb24gPSB0aGlzO1xuICAgIC8vIFNldCBkZWZhdWx0IG9wdGlvbnMgZm9yIHBhcnNlciBmcm9tIHBhY2thZ2VzIGFuZCBmb3IgdGFncy5cbiAgICBkZWZhdWx0T3B0aW9ucyh0aGlzLm9wdGlvbnMsIC4uLm9wdGlvbnMpO1xuICAgIGRlZmF1bHRPcHRpb25zKHRoaXMub3B0aW9ucywgY29uZmlndXJhdGlvbi5vcHRpb25zKTtcbiAgfVxuXG5cbiAgLy8gTWV0aG9kcyBmb3IgZGVhbGluZyB3aXRoIGVwaGVtZXJhbCBmaWVsZHMuXG4gIC8qKlxuICAgKiBQdXNoZXMgYSBuZXcgdGV4IHBhcnNlciBvbnRvIHRoZSBzdGFjay5cbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgbmV3IHBhcnNlci5cbiAgICovXG4gIHB1YmxpYyBwdXNoUGFyc2VyKHBhcnNlcjogVGV4UGFyc2VyKSB7XG4gICAgdGhpcy5wYXJzZXJzLnVuc2hpZnQocGFyc2VyKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFBvcHMgYSBwYXJzZXIgb2YgdGhlIHRleCBwYXJzZXIgc3RhY2suXG4gICAqL1xuICBwdWJsaWMgcG9wUGFyc2VyKCkge1xuICAgIHRoaXMucGFyc2Vycy5zaGlmdCgpO1xuICB9XG5cblxuICAvKipcbiAgICogQHJldHVybiB7VGV4UGFyc2VyfSBUaGUgY3VycmVudGx5IGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKi9cbiAgcHVibGljIGdldCBwYXJzZXIoKTogVGV4UGFyc2VyIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXJzWzBdO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFycyBhbGwgdGhlIGVwaGVtZXJhbCBvcHRpb25zLlxuICAgKi9cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMucGFyc2VycyA9IFtdO1xuICAgIHRoaXMucm9vdCA9IG51bGw7XG4gICAgdGhpcy5ub2RlTGlzdHMgPSB7fTtcbiAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgdGhpcy50YWdzLnJlc2V0VGFnKCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBTYXZlcyBhIHRyZWUgbm9kZSB0byBhIGxpc3Qgb2Ygbm9kZXMgZm9yIHBvc3QgcHJvY2Vzc2luZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFRoZSBwcm9wZXJ0eSBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZvclxuICAgKiAgICAgcG9zdHByb2Nlc3NpbmcuXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSBUaGUgbm9kZSB0byBzYXZlLlxuICAgKi9cbiAgcHVibGljIGFkZE5vZGUocHJvcGVydHk6IHN0cmluZywgbm9kZTogTW1sTm9kZSkge1xuICAgIGxldCBsaXN0ID0gdGhpcy5ub2RlTGlzdHNbcHJvcGVydHldO1xuICAgIGlmICghbGlzdCkge1xuICAgICAgbGlzdCA9IHRoaXMubm9kZUxpc3RzW3Byb3BlcnR5XSA9IFtdO1xuICAgIH1cbiAgICBsaXN0LnB1c2gobm9kZSk7XG4gICAgaWYgKG5vZGUua2luZCAhPT0gcHJvcGVydHkpIHtcbiAgICAgIC8vXG4gICAgICAvLyBJZiB0aGUgbGlzdCBpcyBub3QganVzdCBmb3IgaXRzIGtpbmQsIHJlY29yZCB0aGF0IGl0IGlzIGluIHRoaXMgbGlzdFxuICAgICAgLy8gICBzbyB0aGF0IGlmIGl0IGlzIGNvcGllZCwgdGhlIGNvcHkgY2FuIGFsc28gYmUgYWRkZWQgdG8gdGhlIGxpc3QuXG4gICAgICAvL1xuICAgICAgY29uc3QgaW5saXN0cyA9IChOb2RlVXRpbC5nZXRQcm9wZXJ0eShub2RlLCAnaW4tbGlzdHMnKSBhcyBzdHJpbmcgfHwgJycpO1xuICAgICAgY29uc3QgbGlzdHMgPSAoaW5saXN0cyA/IGlubGlzdHMuc3BsaXQoLywvKSA6IFtdKS5jb25jYXQocHJvcGVydHkpLmpvaW4oJywnKTtcbiAgICAgIE5vZGVVdGlsLnNldFByb3BlcnR5KG5vZGUsICdpbi1saXN0cycsIGxpc3RzKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZXRzIGEgc2F2ZWQgbm9kZSBsaXN0IHdpdGggcmVzcGVjdCB0byBhIGdpdmVuIHByb3BlcnR5LiBJdCBmaXJzdCBlbnN1cmVzXG4gICAqIHRoYXQgYWxsIHRoZSBub2RlcyBhcmUgXCJsaXZlXCIsIGkuZS4sIGFjdHVhbGx5IGxpdmUgaW4gdGhlIGN1cnJlbnRcbiAgICogdHJlZS4gU29tZXRpbWVzIG5vZGVzIGFyZSBjcmVhdGVkLCBzYXZlZCBpbiB0aGUgbm9kZSBsaXN0IGJ1dCBkaXNjYXJkZWRcbiAgICogbGF0ZXIgaW4gdGhlIHBhcnNpbmcuIFRoZXNlIHdpbGwgYmUgZmlsdGVyZWQgb3V0IGhlcmUuXG4gICAqXG4gICAqIE5COiBEbyBub3QgdXNlIHRoaXMgbWV0aG9kIGJlZm9yZSB0aGUgcm9vdCBmaWVsZCBvZiB0aGUgb3B0aW9ucyBpc1xuICAgKiBzZXQuIE90aGVyd2lzZSwgeW91ciBub2RlIGxpc3Qgd2lsbCBhbHdheXMgYmUgZW1wdHkhXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwcm9wZXJ0eSBUaGUgcHJvcGVydHkgZm9yIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBub2RlIGxpc3QuXG4gICAqL1xuICBwdWJsaWMgZ2V0TGlzdChwcm9wZXJ0eTogc3RyaW5nKSB7XG4gICAgbGV0IGxpc3QgPSB0aGlzLm5vZGVMaXN0c1twcm9wZXJ0eV0gfHwgW107XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGZvciAobGV0IG5vZGUgb2YgbGlzdCkge1xuICAgICAgaWYgKHRoaXMuaW5UcmVlKG5vZGUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKG5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLm5vZGVMaXN0c1twcm9wZXJ0eV0gPSByZXN1bHQ7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGxpc3Qgb2Ygbm9kZXMgZnJvbSBhIHNhdmVkIGxpc3QgKGUuZy4sIHdoZW4gYSBmaWx0ZXIgcmVtb3ZlcyB0aGVcbiAgICogbm9kZSBmcm9tIHRoZSBET00sIGxpa2UgZm9yIG11bmRlcm92ZXIgPT4gbXVuZGVyKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFRoZSBwcm9wZXJ0eSBmcm9tIHdoaWNoIHRvIHJlbW92ZSBub2Rlcy5cbiAgICogQHBhcmFtIHtNbWxOb2RlW119IG5vZGVzIFRoZSBub2RlcyB0byByZW1vdmUuXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRnJvbUxpc3QocHJvcGVydHk6IHN0cmluZywgbm9kZXM6IE1tbE5vZGVbXSkge1xuICAgIGNvbnN0IGxpc3QgPSB0aGlzLm5vZGVMaXN0c1twcm9wZXJ0eV0gfHwgW107XG4gICAgZm9yIChjb25zdCBub2RlIG9mIG5vZGVzKSB7XG4gICAgICBjb25zdCBpID0gbGlzdC5pbmRleE9mKG5vZGUpO1xuICAgICAgaWYgKGkgPj0gMCkge1xuICAgICAgICBsaXN0LnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBUZXN0cyBpZiB0aGUgbm9kZSBpcyBpbiB0aGUgdHJlZSBzcGFubmVkIGJ5IHRoZSBjdXJyZW50IHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlIFRoZSBub2RlIHRvIHRlc3QuXG4gICAqL1xuICBwcml2YXRlIGluVHJlZShub2RlOiBNbWxOb2RlKSB7XG4gICAgd2hpbGUgKG5vZGUgJiYgbm9kZSAhPT0gdGhpcy5yb290KSB7XG4gICAgICBub2RlID0gbm9kZS5wYXJlbnQ7XG4gICAgfVxuICAgIHJldHVybiAhIW5vZGU7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQ2xhc3MgZm9yIGdlbmVyYXRpbmcgdGFncywgcmVmZXJlbmNlcywgZXRjLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IHtNbWxOb2RlfSBmcm9tICcuLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQge01hdGhJdGVtfSBmcm9tICcuLi8uLi9jb3JlL01hdGhJdGVtLmpzJztcbmltcG9ydCB7RW52TGlzdH0gZnJvbSAnLi9TdGFja0l0ZW0uanMnO1xuaW1wb3J0IFBhcnNlT3B0aW9ucyBmcm9tICcuL1BhcnNlT3B0aW9ucy5qcyc7XG5pbXBvcnQge09wdGlvbkxpc3R9IGZyb20gJy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5cblxuLyoqXG4gKiAgU2ltcGxlIGNsYXNzIGZvciBsYWJlbCBvYmplY3RzLlxuICovXG5leHBvcnQgY2xhc3MgTGFiZWwge1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmc9fSB0YWcgVGhlIHRhZyB0aGF0J3MgZGlzcGxheWVkLlxuICAgKiBAcGFyYW0ge3N0cmluZz19IGlkIFRoZSBpZCB0aGF0IHNlcnZlcyBhcyByZWZlcmVuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGFnOiBzdHJpbmcgPSAnPz8/JywgcHVibGljIGlkOiBzdHJpbmcgPSAnJykge31cbn1cblxuXG4vKipcbiAqIEEgc2ltcGxlIGNsYXNzIGZvciBrZWVwaW5nIHRyYWNrIG9mIHRhZyBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhZ0luZm8ge1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudiBUaGUgZW52aXJvbm1lbnQgbmFtZSAoZS5nLiwgYWxpZ24pLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHRhZ2dhYmxlIEVudmlyb25tZW50IHN1cHBvcnRzIHRhZ3MgKGUuZy4sIGFsaWduKiBkb2VzLCBidXRcbiAgICogICAgIHNwbGl0IGRvZXMgbm90LilcbiAgICogQHBhcmFtIHtib29sZWFufSBkZWZhdWx0VGFncyBFbnZpcm9ubWVudCBpcyB0YWdnZWQgYnkgZGVmYXVsdCAoZS5nLiwgYWxpZ25cbiAgICogICAgIGlzLCBidXQgYWxpZ24qIGlzIG5vdCkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIHRhZyBuYW1lIChlLmcuLCAxKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZ0lkIFRoZSB1bmlxdWUgaWQgZm9yIHRoYXQgdGFnIChlLmcuLCBtangtZXFuOjEpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnRm9ybWF0IFRoZSBmb3JtYXR0ZWQgdGFnIChlLmcuLCBcIigxKVwiKS5cbiAgICogQHBhcmFtIHtib29sZWFufSBub1RhZyBBIG5vIHRhZ2dpbmcgY29tbWFuZCBoYXMgYmVlbiBzZXQgKGUuZy4sIFxcbm90YWcsXG4gICAqICAgICBcXG5vbnVtYmVyKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGxhYmVsSWQgVGhlIGxhYmVsIHJlZmVycmluZyB0byB0aGUgdGFnLlxuICAgKi9cbiAgY29uc3RydWN0b3IocmVhZG9ubHkgZW52OiBzdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgdGFnZ2FibGU6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgICAgICAgcmVhZG9ubHkgZGVmYXVsdFRhZ3M6IGJvb2xlYW4gPSBmYWxzZSxcbiAgICAgICAgICAgICAgcHVibGljIHRhZzogc3RyaW5nID0gbnVsbCxcbiAgICAgICAgICAgICAgcHVibGljIHRhZ0lkOiBzdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgcHVibGljIHRhZ0Zvcm1hdDogc3RyaW5nID0gJycsXG4gICAgICAgICAgICAgIHB1YmxpYyBub1RhZzogYm9vbGVhbiA9IGZhbHNlLFxuICAgICAgICAgICAgICBwdWJsaWMgbGFiZWxJZDogc3RyaW5nID0gJycpIHt9XG5cbn1cblxuXG5leHBvcnQgaW50ZXJmYWNlIFRhZ3Mge1xuXG4gIC8qKlxuICAgKiBUaGUgZ2xvYmFsIGNvbmZpZ3VyYXRpb25zIGluIHdoaWNoIHRoZSBwYXJzaW5nIHRha2VzIHBsYWNlLlxuICAgKiBAdHlwZSB7UGFyc2VPcHRpb25zfVxuICAgKi9cbiAgY29uZmlndXJhdGlvbjogUGFyc2VPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBJRHMgdXNlZCBpbiB0aGlzIGVxdWF0aW9uLlxuICAgKiBAdHlwZSB7T2JqZWN0Ljxib29sZWFuPn1cbiAgICovXG4gIGlkczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59O1xuXG4gIC8qKlxuICAgKiBJRHMgdXNlZCBpbiBwcmV2aW91cyBlcXVhdGlvbnMuXG4gICAqIEB0eXBlIHtPYmplY3QuPGJvb2xlYW4+fVxuICAgKi9cbiAgYWxsSWRzOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn07XG5cbiAgLyoqXG4gICAqIExhYmVscyBpbiB0aGUgY3VycmVudCBlcXVhdGlvbi5cbiAgICogQHR5cGUge09iamVjdC48TGFiZWw+fVxuICAgKi9cbiAgbGFiZWxzOiB7W2tleTogc3RyaW5nXTogTGFiZWx9O1xuXG4gIC8qKlxuICAgKiBMYWJlbHMgaW4gcHJldmlvdXMgZXF1YXRpb25zLlxuICAgKiBAdHlwZSB7T2JqZWN0LjxMYWJlbD59XG4gICAqL1xuICBhbGxMYWJlbHM6IHtba2V5OiBzdHJpbmddOiBMYWJlbH07XG5cbiAgLyoqXG4gICAqIFRoZSBsYWJlbCB0byB1c2UgZm9yIHRoZSBuZXh0IHRhZy5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIGxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIGVxdWF0aW9uIGNvbnRhaW5zIGFuIHVuZGVmaW5lZCBsYWJlbCBhbmQgbXVzdCBiZSByZXByb2Nlc3NlZCBsYXRlci5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICByZWRvOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIHdoZW4gcmVjb21waWxpbmcgdG8gdXBkYXRlIHVuZGVmaW5lZCByZWZlcmVuY2VzXG4gICAqIEB0eXBlIHtib29sZWFufVxuICAgKi9cbiAgcmVmVXBkYXRlOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnQgdGhhdCBpcyBjdXJyZW50bHkgdGFnZ2VkLlxuICAgKiBAdHlwZSB7c3RyaW5nfVxuICAgKi9cbiAgZW52OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50bHkgYWN0aXZlIHRhZy5cbiAgICogQHR5cGUge1RhZ0luZm99XG4gICAqL1xuICBjdXJyZW50VGFnOiBUYWdJbmZvO1xuXG4gIC8qKlxuICAgKiBIb3cgdG8gZm9ybWF0IHRhZ3MuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIHRhZyBzdHJpbmcuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCBudW1iZXJlZCB0YWcuXG4gICAqL1xuICBmb3JtYXRUYWcodGFnOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhvdyB0byBmb3JtYXQgVVJMcyBmb3IgcmVmZXJlbmNlcy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSByZWZlcmVuY2UgaWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlIFRoZSBiYXNlIFVSTCBpbiB0aGUgcmVmZXJlbmNlLlxuICAgKiBAcmV0dXJuIHt9XG4gICAqL1xuICBmb3JtYXRVcmwoaWQ6IHN0cmluZywgYmFzZTogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIHRhZyBhdXRvbWF0aWNhbGx5LCBieSBpbmNyZW1lbnRpbmcgZXF1YXRpb24gbnVtYmVyLlxuICAgKi9cbiAgYXV0b1RhZygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfHZvaWR9IEdlbmVyYXRlcyBhbmQgcmV0dXJucyB0aGUgdGFnIG5vZGUuXG4gICAqL1xuICBnZXRUYWcoKTogTW1sTm9kZSB8IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENsZWFycyB0YWdnaW5nIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgY2xlYXJUYWcoKTogdm9pZDtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSB0YWcgc3RydWN0dXJlIGFmdGVyIGFuIGV4cHJlc3Npb24gaGFzIGJlZW4gdHlwZXNldC5cbiAgICovXG4gIHJlc2V0VGFnKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEZ1bGx5IHJlc2V0cyB0aGUgdGFnIHN0cnVjdHVyZSwgaW4gcGFydGljdWxhciBhbGwgdGhlIHRhZ2dpbmcgYW5kIGxhYmVsXG4gICAqIGhpc3RvcnkuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXQgQSBuZXcgb2Zmc2V0IHZhbHVlIHRvIHN0YXJ0IGNvdW50aW5nIGlkcyBmcm9tLlxuICAgKi9cbiAgcmVzZXQob2Zmc2V0PzogbnVtYmVyKTogdm9pZDtcblxuICAvKipcbiAgICogSW5pdGlhbGlzZSB0YWdnaW5nIGZvciBhIE1hdGhJdGVtXG4gICAqIChjbGVhciBlcXVhdGlvbi1zcGVjaWZpYyBsYWJlbHMgYW5kIGlkcywgc2V0IGNvdW50ZXJcbiAgICogYW5kIGNoZWNrIGZvciByZWNvbXBpbGUpXG4gICAqIEBwYXJhbSB7TWF0aEl0ZW19IG1hdGggICBUaGUgTWF0aEl0ZW0gZm9yIHRoZSBjdXJyZW50IGVxdWF0aW9uXG4gICAqL1xuICAgIHN0YXJ0RXF1YXRpb24obWF0aDogTWF0aEl0ZW08YW55LCBhbnksIGFueT4pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBNb3ZlIGVxdWF0aW9uLXNwZWNpZmljIGxhYmVscyBhbmQgaWRzIHRvIGdsb2JhbCBvbmVzLFxuICAgKiBzYXZlIHRoZSBjb3VudGVyLCBhbmQgbWFyayB0aGUgTWF0aEl0ZW0gZm9yIHJlZG9zXG4gICAqL1xuICAgIGZpbmlzaEVxdWF0aW9uKG1hdGg6IE1hdGhJdGVtPGFueSwgYW55LCBhbnk+KTogdm9pZDtcblxuICAvKipcbiAgICogRmluYWxpemVzIHRhZyBjcmVhdGlvbi5cbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlXG4gICAqIEBwYXJhbSB7RW52TGlzdH0gZW52IExpc3Qgb2YgZW52aXJvbm1lbnQgcHJvcGVydGllcy5cbiAgICogQHJldHVybiB7TW1sTm9kZX0gVGhlIG5ld2x5IGNyZWF0ZWQgdGFnLlxuICAgKi9cbiAgZmluYWxpemUobm9kZTogTW1sTm9kZSwgZW52OiBFbnZMaXN0KTogTW1sTm9kZTtcblxuICAvKipcbiAgICogU3RhcnRzIHRhZ2dpbmcgb24gYSBnaXZlbiBlbnZpcm9ubWVudC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudiBUaGUgbmFtZSBvZiB0aGUgZW52aXJvbm1lbnQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdGFnZ2FibGUgVHJ1ZSBpZiB0YWdnYWJsZS5cbiAgICogQHBhcmFtIHtib29sZWFufSBkZWZhdWx0VGFncyBUcnVlIGlmIHRhZ2dlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgc3RhcnQoZW52OiBzdHJpbmcsIHRhZ2dhYmxlOiBib29sZWFuLCBkZWZhdWx0VGFnczogYm9vbGVhbik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEVuZCB0YWdnaW5nLlxuICAgKi9cbiAgZW5kKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIENvbXB1dGVzIHRoZSBuZXh0IHRhZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyBUaGUgdGFnIGNvbnRlbnQuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9Gb3JtYXQgVHJ1ZSBpZiB0YWcgc2hvdWxkIG5vdCBiZSBmb3JtYXR0ZWQuXG4gICAqL1xuICB0YWcodGFnOiBzdHJpbmcsIG5vRm9ybWF0OiBib29sZWFuKTogdm9pZDtcblxuICAvKipcbiAgICogQ2FsbCBhbiBleHBsaWNpdCBubyB0YWcuXG4gICAqL1xuICBub3RhZygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBFbnRhZyBhbiBlbGVtZW50IGJ5IGNyZWF0aW5nIGEgdGFibGUgYXJvdW5kIGl0LlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgVGhlIG5vZGUgdG8gYmUgdGFnZ2VkLlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IHRhZyBUaGUgdGFnIG5vZGUuXG4gICAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSB0YWJsZSBub2RlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIG5vZGUgYW5kIHRhZy5cbiAgICovXG4gIGVuVGFnKG5vZGU6IE1tbE5vZGUsIHRhZzogTW1sTm9kZSk6IE1tbE5vZGU7XG59XG5cblxuZXhwb3J0IGNsYXNzIEFic3RyYWN0VGFncyBpbXBsZW1lbnRzIFRhZ3Mge1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IGVxdWF0aW9uIG51bWJlci5cbiAgICogQHR5cGUge251bWJlcn1cbiAgICovXG4gIHByb3RlY3RlZCBjb3VudGVyOiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBFcXVhdGlvbiBudW1iZXIgYXMgZXF1YXRpb24gYmVnaW5zLlxuICAgKiBAdHlwZSB7bnVtYmVyfVxuICAgKi9cbiAgcHJvdGVjdGVkIGFsbENvdW50ZXI6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvbmZpZ3VyYXRpb246IFBhcnNlT3B0aW9ucyA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGlkczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge307XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFsbElkczoge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge307XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGxhYmVsczoge1trZXk6IHN0cmluZ106IExhYmVsfSA9IHt9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhbGxMYWJlbHM6IHtba2V5OiBzdHJpbmddOiBMYWJlbH0gPSB7fTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcmVkbzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZWZVcGRhdGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY3VycmVudFRhZzogVGFnSW5mbyA9IG5ldyBUYWdJbmZvKCk7XG5cblxuICAvKipcbiAgICogQ2hyb25vbG9neSBvZiBhbGwgcHJldmlvdXMgdGFncywgaW4gY2FzZSB3ZSBuZWVkIHRvIGxvb2sgc29tZXRoaW5nIHVwIGluXG4gICAqIHRoZSBmaW5hbGl6ZSBtZXRob2QuXG4gICAqIEB0eXBlIHtUYWdJbmZvW119XG4gICAqL1xuICBwcm90ZWN0ZWQgaGlzdG9yeTogVGFnSW5mb1tdID0gW107XG5cbiAgcHJpdmF0ZSBzdGFjazogVGFnSW5mb1tdID0gW107XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXJ0KGVudjogc3RyaW5nLCB0YWdnYWJsZTogYm9vbGVhbiwgZGVmYXVsdFRhZ3M6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5jdXJyZW50VGFnKSB7XG4gICAgICB0aGlzLnN0YWNrLnB1c2godGhpcy5jdXJyZW50VGFnKTtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50VGFnID0gbmV3IFRhZ0luZm8oZW52LCB0YWdnYWJsZSwgZGVmYXVsdFRhZ3MpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbnYoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRhZy5lbnY7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBlbmQoKSB7XG4gICAgdGhpcy5oaXN0b3J5LnB1c2godGhpcy5jdXJyZW50VGFnKTtcbiAgICB0aGlzLmN1cnJlbnRUYWcgPSB0aGlzLnN0YWNrLnBvcCgpO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdGFnKHRhZzogc3RyaW5nLCBub0Zvcm1hdDogYm9vbGVhbikge1xuICAgIHRoaXMuY3VycmVudFRhZy50YWcgPSB0YWc7XG4gICAgdGhpcy5jdXJyZW50VGFnLnRhZ0Zvcm1hdCA9IG5vRm9ybWF0ID8gdGFnIDogdGhpcy5mb3JtYXRUYWcodGFnKTtcbiAgICB0aGlzLmN1cnJlbnRUYWcubm9UYWcgPSBmYWxzZTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIG5vdGFnKCkge1xuICAgIHRoaXMudGFnKCcnLCB0cnVlKTtcbiAgICB0aGlzLmN1cnJlbnRUYWcubm9UYWcgPSB0cnVlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldCBub1RhZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VGFnLm5vVGFnO1xuICB9XG5cbiAgcHVibGljIHNldCBsYWJlbChsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5jdXJyZW50VGFnLmxhYmVsSWQgPSBsYWJlbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFRhZy5sYWJlbElkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGZvcm1hdFVybChpZDogc3RyaW5nLCBiYXNlOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYmFzZSArICcjJyArIGVuY29kZVVSSUNvbXBvbmVudChpZCk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0VGFnKHRhZzogc3RyaW5nKSB7XG4gICAgcmV0dXJuICcoJyArIHRhZyArICcpJztcbiAgfVxuXG4gIC8qKlxuICAgKiBIb3cgdG8gZm9ybWF0IGlkcyBmb3IgbGFiZWxsaW5nIGVxdWF0aW9ucy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSB1bmlxdWUgcGFydCBvZiB0aGUgaWQgKGUuZy4sIGxhYmVsIG9yIG51bWJlcikuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGZvcm1hdHRlZCBpZC5cbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXRJZChpZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ21qeC1lcW46JyArIGlkLnJlcGxhY2UoL1xccy9nLCAnXycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhvdyB0byBmb3JtYXQgbnVtYmVycyBpbiB0YWdzLlxuICAgKiBAcGFyYW0ge251bWJlcn0gbiBUaGUgdGFnIG51bWJlci5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgZm9ybWF0dGVkIG51bWJlci5cbiAgICovXG4gIHByb3RlY3RlZCBmb3JtYXROdW1iZXIobjogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbi50b1N0cmluZygpO1xuICB9XG5cbiAgLy8gVGFnIGhhbmRsaW5nIGZ1bmN0aW9ucy5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGF1dG9UYWcoKSB7XG4gICAgaWYgKHRoaXMuY3VycmVudFRhZy50YWcgPT0gbnVsbCkge1xuICAgICAgdGhpcy5jb3VudGVyKys7XG4gICAgICB0aGlzLnRhZyh0aGlzLmZvcm1hdE51bWJlcih0aGlzLmNvdW50ZXIpLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY2xlYXJUYWcoKSB7XG4gICAgdGhpcy5sYWJlbCA9ICcnO1xuICAgIHRoaXMudGFnKG51bGwsIHRydWUpO1xuICAgIHRoaXMuY3VycmVudFRhZy50YWdJZCA9ICcnO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0VGFnKGZvcmNlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAoZm9yY2UpIHtcbiAgICAgIHRoaXMuYXV0b1RhZygpO1xuICAgICAgcmV0dXJuIHRoaXMubWFrZVRhZygpO1xuICAgIH1cbiAgICBjb25zdCBjdCA9IHRoaXMuY3VycmVudFRhZztcbiAgICBpZiAoY3QudGFnZ2FibGUgJiYgIWN0Lm5vVGFnKSB7XG4gICAgICBpZiAoY3QuZGVmYXVsdFRhZ3MpIHtcbiAgICAgICAgdGhpcy5hdXRvVGFnKCk7XG4gICAgICB9XG4gICAgICBpZiAoY3QudGFnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1ha2VUYWcoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXNldFRhZygpIHtcbiAgICB0aGlzLmhpc3RvcnkgPSBbXTtcbiAgICB0aGlzLnJlZG8gPSBmYWxzZTtcbiAgICB0aGlzLnJlZlVwZGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuY2xlYXJUYWcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXNldChvZmZzZXQ6IG51bWJlciA9IDApIHtcbiAgICB0aGlzLnJlc2V0VGFnKCk7XG4gICAgdGhpcy5jb3VudGVyID0gdGhpcy5hbGxDb3VudGVyID0gb2Zmc2V0O1xuICAgIHRoaXMuYWxsTGFiZWxzID0ge307XG4gICAgdGhpcy5hbGxJZHMgPSB7fTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGFydEVxdWF0aW9uKG1hdGg6IE1hdGhJdGVtPGFueSwgYW55LCBhbnk+KSB7XG4gICAgdGhpcy5oaXN0b3J5ID0gW107XG4gICAgdGhpcy5zdGFjayA9IFtdO1xuICAgIHRoaXMuY2xlYXJUYWcoKTtcbiAgICB0aGlzLmN1cnJlbnRUYWcgPSBuZXcgVGFnSW5mbygnJywgdW5kZWZpbmVkLCB1bmRlZmluZWQpO1xuICAgIHRoaXMubGFiZWxzID0ge307XG4gICAgdGhpcy5pZHMgPSB7fTtcbiAgICB0aGlzLmNvdW50ZXIgPSB0aGlzLmFsbENvdW50ZXI7XG4gICAgdGhpcy5yZWRvID0gZmFsc2U7XG4gICAgY29uc3QgcmVjb21waWxlID0gbWF0aC5pbnB1dERhdGEucmVjb21waWxlO1xuICAgIGlmIChyZWNvbXBpbGUpIHtcbiAgICAgIHRoaXMucmVmVXBkYXRlID0gdHJ1ZTtcbiAgICAgIHRoaXMuY291bnRlciA9IHJlY29tcGlsZS5jb3VudGVyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBmaW5pc2hFcXVhdGlvbihtYXRoOiBNYXRoSXRlbTxhbnksIGFueSwgYW55Pikge1xuICAgIGlmICh0aGlzLnJlZG8pIHtcbiAgICAgIG1hdGguaW5wdXREYXRhLnJlY29tcGlsZSA9IHtcbiAgICAgICAgc3RhdGU6IG1hdGguc3RhdGUoKSxcbiAgICAgICAgY291bnRlcjogdGhpcy5hbGxDb3VudGVyXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAoIXRoaXMucmVmVXBkYXRlKSB7XG4gICAgICB0aGlzLmFsbENvdW50ZXIgPSB0aGlzLmNvdW50ZXI7XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5hbGxJZHMsIHRoaXMuaWRzKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuYWxsTGFiZWxzLCB0aGlzLmxhYmVscyk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZmluYWxpemUobm9kZTogTW1sTm9kZSwgZW52OiBFbnZMaXN0KTogTW1sTm9kZSB7XG4gICAgaWYgKCFlbnYuZGlzcGxheSB8fCB0aGlzLmN1cnJlbnRUYWcuZW52IHx8XG4gICAgICAgIHRoaXMuY3VycmVudFRhZy50YWcgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICAgIGxldCB0YWcgPSB0aGlzLm1ha2VUYWcoKTtcbiAgICBsZXQgdGFibGUgPSB0aGlzLmVuVGFnKG5vZGUsIHRhZyk7XG4gICAgcmV0dXJuIHRhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGVuVGFnID0gZnVuY3Rpb24obm9kZTogTW1sTm9kZSwgdGFnOiBNbWxOb2RlKTogTW1sTm9kZSB7XG4gICAgbGV0IG5mID0gdGhpcy5jb25maWd1cmF0aW9uLm5vZGVGYWN0b3J5O1xuICAgIGxldCBjZWxsID0gbmYuY3JlYXRlKCdub2RlJywgJ210ZCcsIFtub2RlXSk7XG4gICAgbGV0IHJvdyA9IG5mLmNyZWF0ZSgnbm9kZScsICdtbGFiZWxlZHRyJywgW3RhZywgY2VsbF0pO1xuICAgIGxldCB0YWJsZSA9IG5mLmNyZWF0ZSgnbm9kZScsICdtdGFibGUnLCBbcm93XSwge1xuICAgICAgc2lkZTogdGhpcy5jb25maWd1cmF0aW9uLm9wdGlvbnNbJ3RhZ1NpZGUnXSxcbiAgICAgIG1pbmxhYmVsc3BhY2luZzogdGhpcy5jb25maWd1cmF0aW9uLm9wdGlvbnNbJ3RhZ0luZGVudCddLFxuICAgICAgZGlzcGxheXN0eWxlOiB0cnVlXG4gICAgfSk7XG4gICAgcmV0dXJuIHRhYmxlO1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIFNldHMgdGhlIHRhZyBpZC5cbiAgICovXG4gIHByaXZhdGUgbWFrZUlkKCkge1xuICAgIHRoaXMuY3VycmVudFRhZy50YWdJZCA9IHRoaXMuZm9ybWF0SWQoXG4gICAgICB0aGlzLmNvbmZpZ3VyYXRpb24ub3B0aW9uc1sndXNlTGFiZWxJZHMnXSA/XG4gICAgICAgICh0aGlzLmxhYmVsIHx8IHRoaXMuY3VycmVudFRhZy50YWcpIDogdGhpcy5jdXJyZW50VGFnLnRhZyk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgYWN0dWFsIHRhZyBub2RlIGFzIGFuIG10ZC5cbiAgICovXG4gIHByaXZhdGUgbWFrZVRhZygpOiBNbWxOb2RlIHtcbiAgICB0aGlzLm1ha2VJZCgpO1xuICAgIGlmICh0aGlzLmxhYmVsKSB7XG4gICAgICB0aGlzLmxhYmVsc1t0aGlzLmxhYmVsXSA9IG5ldyBMYWJlbCh0aGlzLmN1cnJlbnRUYWcudGFnLCB0aGlzLmN1cnJlbnRUYWcudGFnSWQpO1xuICAgIH1cbiAgICBsZXQgbW1sID0gbmV3IFRleFBhcnNlcignXFxcXHRleHR7JyArIHRoaXMuY3VycmVudFRhZy50YWdGb3JtYXQgKyAnfScsIHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbikubW1sKCk7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi5ub2RlRmFjdG9yeS5jcmVhdGUoJ25vZGUnLCAnbXRkJywgW21tbF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2lkOiB0aGlzLmN1cnJlbnRUYWcudGFnSWR9KTtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBObyB0YWdzLCBleGNlcHQgd2hlcmUgZXhwbGljaXRseSBzZXQuXG4gKiBAY29uc3RydWN0b3JcbiAqIEBleHRlbmRzIHtBYnN0cmFjdFRhZ3N9XG4gKi9cbmV4cG9ydCBjbGFzcyBOb1RhZ3MgZXh0ZW5kcyBBYnN0cmFjdFRhZ3Mge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhdXRvVGFnKCkge31cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0VGFnKCkge1xuICAgIHJldHVybiAhdGhpcy5jdXJyZW50VGFnLnRhZyA/IG51bGwgOiBzdXBlci5nZXRUYWcoKTtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBUYWdzIGV2ZXJ5IGRpc3BsYXkgZm9ybXVsYS4gRXhjZXB0aW9ucyBhcmU6IEVudmlyb25tZW50cyB0aGF0IGV4cGxpY2l0bHlcbiAqIGRpc2FsbG93IHRhZ3MsIGUuZy4sIGVxdWF0aW9uKi5cbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMge0Fic3RyYWN0VGFnc31cbiAqL1xuZXhwb3J0IGNsYXNzIEFsbFRhZ3MgZXh0ZW5kcyBBYnN0cmFjdFRhZ3Mge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBmaW5hbGl6ZShub2RlOiBNbWxOb2RlLCBlbnY6IEVudkxpc3QpIHtcbiAgICBpZiAoIWVudi5kaXNwbGF5IHx8IHRoaXMuaGlzdG9yeS5maW5kKFxuICAgICAgZnVuY3Rpb24oeDogVGFnSW5mbykgeyByZXR1cm4geC50YWdnYWJsZTsgfSkpIHtcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgICBsZXQgdGFnID0gdGhpcy5nZXRUYWcodHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuZW5UYWcobm9kZSwgdGFnKTtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBDbGFzcyBpbnRlcmZhY2UgZm9yIGZhY3RvcnkuXG4gKiBAaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnc0NsYXNzIHtcbiAgbmV3ICgpOiBUYWdzO1xufVxuXG5cbmV4cG9ydCBuYW1lc3BhY2UgVGFnc0ZhY3Rvcnkge1xuXG4gIGxldCB0YWdzTWFwcGluZyA9IG5ldyBNYXA8c3RyaW5nLCBUYWdzQ2xhc3M+KFtcbiAgICBbJ25vbmUnLCBOb1RhZ3NdLFxuICAgIFsnYWxsJywgQWxsVGFnc11cbiAgXSk7XG5cbiAgbGV0IGRlZmF1bHRUYWdzID0gJ25vbmUnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBvcHRpb25zIGZvciB0YWdnaW5nXG4gICAqIEB0eXBlIHtPcHRpb25MaXN0fVxuICAgKi9cbiAgZXhwb3J0IGxldCBPUFRJT05TOiBPcHRpb25MaXN0ID0ge1xuICAgIC8vIFRhZ2dpbmcgc3R5bGUsIHVzZWQgdG8gYmUgYXV0b251bWJlciBpbiB2Mi5cbiAgICB0YWdzOiBkZWZhdWx0VGFncyxcbiAgICAvLyBUaGlzIHNwZWNpZmllcyB0aGUgc2lkZSBvbiB3aGljaCBcXHRhZ3t9IG1hY3JvcyB3aWxsIHBsYWNlIHRoZSB0YWdzLlxuICAgIC8vIFNldCB0byAnbGVmdCcgdG8gcGxhY2Ugb24gdGhlIGxlZnQtaGFuZCBzaWRlLlxuICAgIHRhZ1NpZGU6ICdyaWdodCcsXG4gICAgLy8gVGhpcyBpcyB0aGUgYW1vdW50IG9mIGluZGVudGF0aW9uIChmcm9tIHJpZ2h0IG9yIGxlZnQpIGZvciB0aGUgdGFncy5cbiAgICB0YWdJbmRlbnQ6ICcwLjhlbScsXG4gICAgLy8gbWFrZSBlbGVtZW50IElEJ3MgdXNlIFxcbGFiZWwgbmFtZSByYXRoZXIgdGhhbiBlcXVhdGlvbiBudW1iZXJcbiAgICAvLyBNSiBwdXRzIGluIGFuIGVxdWF0aW9uIHByZWZpeDogbWp4LWVxblxuICAgIC8vIFdoZW4gdHJ1ZSBpdCB1c2VzIHRoZSBsYWJlbCBuYW1lIFhYWCBhcyBtangtZXFuOlhYWFxuICAgIC8vIElmIGZhbHNlIGl0IHVzZXMgdGhlIGFjdHVhbCBudW1iZXIgTiB0aGF0IGlzIGRpc3BsYXllZDogbWp4LWVxbjpOXG4gICAgdXNlTGFiZWxJZHM6IHRydWUsXG4gICAgLy8gU2V0IHRvIHRydWUgaW4gb3JkZXIgdG8gcHJldmVudCBlcnJvciBtZXNzYWdlcyBmb3IgZHVwbGljYXRlIGxhYmVsIGlkc1xuICAgIGlnbm9yZUR1cGxpY2F0ZUxhYmVsczogZmFsc2VcbiAgfTtcblxuXG4gIC8qKlxuICAgKiBBZGQgYSB0YWdnaW5nIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgdGFnZ2luZyBvYmplY3QuXG4gICAqIEBwYXJhbSB7VGFnc0NsYXNzfSBjb25zdHIgVGhlIGNsYXNzIG9mIHRoZSBUYWdnaW5nIG9iamVjdC5cbiAgICovXG4gIGV4cG9ydCBsZXQgYWRkID0gZnVuY3Rpb24obmFtZTogc3RyaW5nLCBjb25zdHI6IFRhZ3NDbGFzcykge1xuICAgIHRhZ3NNYXBwaW5nLnNldChuYW1lLCBjb25zdHIpO1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIEFkZHMgYSBsaXN0IG9mIHRhZ2dpbmcgb2JqZWN0cyB0byB0aGUgZmFjdG9yeS5cbiAgICogQHBhcmFtIHt7W25hbWU6IHN0cmluZ106IFRhZ3NDbGFzc319IHRhZ3MgVGhlIGxpc3Qgb2YgdGFnZ2luZyBvYmplY3RzLlxuICAgKi9cbiAgZXhwb3J0IGxldCBhZGRUYWdzID0gZnVuY3Rpb24odGFnczoge1tuYW1lOiBzdHJpbmddOiBUYWdzQ2xhc3N9KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGFncykpIHtcbiAgICAgIFRhZ3NGYWN0b3J5LmFkZChrZXksIHRhZ3Nba2V5XSk7XG4gICAgfVxuICB9O1xuXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgdGFnZ2luZyBvYmplY3QuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWdnaW5nIG9iamVjdC5cbiAgICogQHJldHVybiB7VGFnc30gVGhlIG5ld2x5IGNyZWF0ZWQgb2JqZWN0LlxuICAgKi9cbiAgZXhwb3J0IGxldCBjcmVhdGUgPSBmdW5jdGlvbihuYW1lOiBzdHJpbmcpOiBUYWdzIHtcbiAgICBsZXQgY29uc3RyID0gdGFnc01hcHBpbmcuZ2V0KG5hbWUpIHx8IHRhZ3NNYXBwaW5nLmdldChkZWZhdWx0VGFncyk7XG4gICAgaWYgKCFjb25zdHIpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoJ1Vua25vd24gdGFncyBjbGFzcycpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IGNvbnN0cigpO1xuICB9O1xuXG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbmFtZSBvZiB0aGUgZGVmYXVsdCB0YWdnaW5nIG9iamVjdC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIGRlZmF1bHQuXG4gICAqL1xuICBleHBvcnQgbGV0IHNldERlZmF1bHQgPSBmdW5jdGlvbihuYW1lOiBzdHJpbmcpIHtcbiAgICBkZWZhdWx0VGFncyA9IG5hbWU7XG4gIH07XG5cblxuICAvKipcbiAgICogQHJldHVybiB7VGFnc30gVGhlIGRlZmF1bHQgdGFnZ2luZyBvYmplY3QuXG4gICAqL1xuICBleHBvcnQgbGV0IGdldERlZmF1bHQgPSBmdW5jdGlvbigpOiBUYWdzIHtcbiAgICByZXR1cm4gVGFnc0ZhY3RvcnkuY3JlYXRlKGRlZmF1bHRUYWdzKTtcbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgU2luZ2xldG9uIGNsYXNzIGZvciBoYW5kbGluZyBzeW1ib2wgbWFwcy5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0Fic3RyYWN0U3ltYm9sTWFwLCBTeW1ib2xNYXB9IGZyb20gJy4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7UGFyc2VJbnB1dCwgUGFyc2VSZXN1bHQsIFBhcnNlTWV0aG9kfSBmcm9tICcuL1R5cGVzLmpzJztcbi8vIGltcG9ydCB7UGFyc2VyQ29uZmlndXJhdGlvbn0gZnJvbSAnLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7UHJpb3JpdGl6ZWRMaXN0fSBmcm9tICcuLi8uLi91dGlsL1ByaW9yaXRpemVkTGlzdC5qcyc7XG5pbXBvcnQge0Z1bmN0aW9uTGlzdH0gZnJvbSAnLi4vLi4vdXRpbC9GdW5jdGlvbkxpc3QuanMnO1xuXG5cbmV4cG9ydCB0eXBlIEhhbmRsZXJUeXBlID0gJ2RlbGltaXRlcicgfCAnbWFjcm8nIHwgJ2NoYXJhY3RlcicgfCAnZW52aXJvbm1lbnQnO1xuXG5leHBvcnQgdHlwZSBIYW5kbGVyQ29uZmlnID0ge1tQIGluIEhhbmRsZXJUeXBlXT86IHN0cmluZ1tdfTtcbmV4cG9ydCB0eXBlIEZhbGxiYWNrQ29uZmlnID0ge1tQIGluIEhhbmRsZXJUeXBlXT86IFBhcnNlTWV0aG9kfTtcblxuXG5leHBvcnQgbmFtZXNwYWNlIE1hcEhhbmRsZXIge1xuXG4gIGxldCBtYXBzOiBNYXA8c3RyaW5nLCBTeW1ib2xNYXA+ID0gbmV3IE1hcCgpO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IHN5bWJvbCBtYXAgdG8gdGhlIG1hcCBoYW5kbGVyLiBNaWdodCBvdmVyd3JpdGUgYW4gZXhpc3RpbmdcbiAgICogc3ltYm9sIG1hcCBvZiB0aGUgc2FtZSBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge1N5bWJvbE1hcH0gbWFwIFJlZ2lzdGVycyBhIG5ldyBzeW1ib2wgbWFwLlxuICAgKi9cbiAgZXhwb3J0IGxldCByZWdpc3RlciA9IGZ1bmN0aW9uKG1hcDogU3ltYm9sTWFwKTogdm9pZCB7XG4gICAgbWFwcy5zZXQobWFwLm5hbWUsIG1hcCk7XG4gIH07XG5cblxuICAvKipcbiAgICogTG9va3MgdXAgYSBzeW1ib2wgbWFwIGlmIGl0IGV4aXN0cy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHN5bWJvbCBtYXAuXG4gICAqIEByZXR1cm4ge1N5bWJvbE1hcH0gVGhlIHN5bWJvbCBtYXAgd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvciBudWxsLlxuICAgKi9cbiAgZXhwb3J0IGxldCBnZXRNYXAgPSBmdW5jdGlvbihuYW1lOiBzdHJpbmcpOiBTeW1ib2xNYXAge1xuICAgIHJldHVybiBtYXBzLmdldChuYW1lKTtcbiAgfTtcblxufVxuXG5cbi8qKlxuICogQ2xhc3Mgb2Ygc3ltYm9sIG1hcHBpbmdzIHRoYXQgYXJlIGFjdGl2ZSBpbiBhIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJIYW5kbGVyIHtcblxuICBwcml2YXRlIF9jb25maWd1cmF0aW9uOiBQcmlvcml0aXplZExpc3Q8U3ltYm9sTWFwPiA9IG5ldyBQcmlvcml0aXplZExpc3Q8U3ltYm9sTWFwPigpO1xuICBwcml2YXRlIF9mYWxsYmFjazogRnVuY3Rpb25MaXN0ID0gbmV3IEZ1bmN0aW9uTGlzdCgpO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbGlzdCBvZiBzeW1ib2wgbWFwcyB0byB0aGUgaGFuZGxlci5cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gbWFwcyBUaGUgbmFtZXMgb2YgdGhlIHN5bWJvbCBtYXBzIHRvIGFkZC5cbiAgICogQHBhcmFtIHtQYXJzZU1ldGhvZH0gZmFsbGJhY2sgQSBmYWxsYmFjayBtZXRob2QuXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwcmlvcml0eSBPcHRpb25hbGx5IGEgcHJpb3JpdHkuXG4gICAqL1xuICBwdWJsaWMgYWRkKG1hcHM6IHN0cmluZ1tdLCBmYWxsYmFjazogUGFyc2VNZXRob2QsXG4gICAgICAgICAgICAgcHJpb3JpdHk6IG51bWJlciA9IFByaW9yaXRpemVkTGlzdC5ERUZBVUxUUFJJT1JJVFkpIHtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgbWFwcy5zbGljZSgpLnJldmVyc2UoKSkge1xuICAgICAgbGV0IG1hcCA9IE1hcEhhbmRsZXIuZ2V0TWFwKG5hbWUpO1xuICAgICAgaWYgKCFtYXApIHtcbiAgICAgICAgdGhpcy53YXJuKCdDb25maWd1cmF0aW9uICcgKyBuYW1lICsgJyBub3QgZm91bmQhIE9taXR0ZWQuJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2NvbmZpZ3VyYXRpb24uYWRkKG1hcCwgcHJpb3JpdHkpO1xuICAgIH1cbiAgICBpZiAoZmFsbGJhY2spIHtcbiAgICAgIHRoaXMuX2ZhbGxiYWNrLmFkZChmYWxsYmFjaywgcHJpb3JpdHkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgdGhlIGdpdmVuIGlucHV0IHdpdGggdGhlIGZpcnN0IGFwcGxpY2FibGUgc3ltYm9sIG1hcC5cbiAgICogQHBhcmFtIHtQYXJzZUlucHV0fSBpbnB1dCBUaGUgaW5wdXQgZm9yIHRoZSBwYXJzZXIuXG4gICAqIEByZXR1cm4ge1BhcnNlUmVzdWx0fSBUaGUgb3V0cHV0IG9mIHRoZSBwYXJzaW5nIGZ1bmN0aW9uLlxuICAgKi9cbiAgcHVibGljIHBhcnNlKGlucHV0OiBQYXJzZUlucHV0KTogUGFyc2VSZXN1bHQge1xuICAgIGZvciAobGV0IHtpdGVtOiBtYXB9IG9mIHRoaXMuX2NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IG1hcC5wYXJzZShpbnB1dCk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGxldCBbZW52LCBzeW1ib2xdID0gaW5wdXQ7XG4gICAgQXJyYXkuZnJvbSh0aGlzLl9mYWxsYmFjaylbMF0uaXRlbShlbnYsIHN5bWJvbCk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBNYXBzIGEgc3ltYm9sIHRvIGl0cyBcInBhcnNlIHZhbHVlXCIgaWYgaXQgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3ltYm9sIFRoZSBzeW1ib2wgdG8gcGFyc2UuXG4gICAqIEByZXR1cm4ge1R9IEEgYm9vbGVhbiwgQ2hhcmFjdGVyLCBvciBNYWNyby5cbiAgICovXG4gIHB1YmxpYyBsb29rdXA8VD4oc3ltYm9sOiBzdHJpbmcpOiBUIHtcbiAgICBsZXQgbWFwID0gdGhpcy5hcHBsaWNhYmxlKHN5bWJvbCkgYXMgQWJzdHJhY3RTeW1ib2xNYXA8VD47XG4gICAgcmV0dXJuIG1hcCA/IG1hcC5sb29rdXAoc3ltYm9sKSA6IG51bGw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBzeW1ib2wgaXMgY29udGFpbmVkIGluIG9uZSBvZiB0aGUgc3ltYm9sIG1hcHBpbmdzIG9mIHRoaXNcbiAgICogY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBUaGUgc3ltYm9sIHRvIHBhcnNlLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBzeW1ib2wgaXMgY29udGFpbmVkIGluIHRoZSBtYXBwaW5nLlxuICAgKi9cbiAgcHVibGljIGNvbnRhaW5zKHN5bWJvbDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXBwbGljYWJsZShzeW1ib2wpID8gdHJ1ZSA6IGZhbHNlO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICBsZXQgbmFtZXMgPSBbXTtcbiAgICBmb3IgKGxldCB7aXRlbTogbWFwfSBvZiB0aGlzLl9jb25maWd1cmF0aW9uKSB7XG4gICAgICBuYW1lcy5wdXNoKG1hcC5uYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWVzLmpvaW4oJywgJyk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IGFwcGxpY2FibGUgc3ltYm9sIG1hcCBpbiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBUaGUgc3ltYm9sIHRvIHBhcnNlLlxuICAgKiBAcmV0dXJuIHtTeW1ib2xNYXB9IEEgbWFwIHRoYXQgY2FuIHBhcnNlIHRoZSBzeW1ib2wuXG4gICAqL1xuICBwdWJsaWMgYXBwbGljYWJsZShzeW1ib2w6IHN0cmluZyk6IFN5bWJvbE1hcCB7XG4gICAgZm9yIChsZXQge2l0ZW06IG1hcH0gb2YgdGhpcy5fY29uZmlndXJhdGlvbikge1xuICAgICAgaWYgKG1hcC5jb250YWlucyhzeW1ib2wpKSB7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cblxuICAvKipcbiAgICogUmV0cmlldmVzIHRoZSBtYXAgb2YgdGhlIGdpdmVuIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIHN5bWJvbCBtYXAuXG4gICAqIEByZXR1cm4ge1N5bWJvbE1hcH0gVGhlIG1hcCBpZiBpdCBleGlzdHMuXG4gICAqL1xuICBwdWJsaWMgcmV0cmlldmUobmFtZTogc3RyaW5nKTogU3ltYm9sTWFwIHtcbiAgICBmb3IgKGxldCB7aXRlbTogbWFwfSBvZiB0aGlzLl9jb25maWd1cmF0aW9uKSB7XG4gICAgICBpZiAobWFwLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBQcmludHMgYSB3YXJuaW5nIG1lc3NhZ2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFRoZSB3YXJuaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSB3YXJuKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIGNvbnNvbGUubG9nKCdUZXhQYXJzZXIgV2FybmluZzogJyArIG1lc3NhZ2UpO1xuICB9XG5cbn1cblxuXG5leHBvcnQgY2xhc3MgU3ViSGFuZGxlcnMge1xuXG4gIHByaXZhdGUgbWFwID0gbmV3IE1hcDxIYW5kbGVyVHlwZSwgU3ViSGFuZGxlcj4oKTtcblxuICAvKipcbiAgICogQWRkcyBhIHN5bWJvbCBtYXAgdG8gdGhlIGNvbmZpZ3VyYXRpb24gaWYgaXQgZXhpc3RzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBvZiB0aGUgc3ltYm9sIG1hcC5cbiAgICovXG4gIHB1YmxpYyBhZGQoaGFuZGxlcnM6IEhhbmRsZXJDb25maWcsIGZhbGxiYWNrczogRmFsbGJhY2tDb25maWcsXG4gICAgICAgICAgICAgcHJpb3JpdHk6IG51bWJlciA9IFByaW9yaXRpemVkTGlzdC5ERUZBVUxUUFJJT1JJVFkpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhoYW5kbGVycykpIHtcbiAgICAgIGxldCBuYW1lID0ga2V5IGFzIEhhbmRsZXJUeXBlO1xuICAgICAgbGV0IHN1YkhhbmRsZXIgPSB0aGlzLmdldChuYW1lKTtcbiAgICAgIGlmICghc3ViSGFuZGxlcikge1xuICAgICAgICBzdWJIYW5kbGVyID0gbmV3IFN1YkhhbmRsZXIoKTtcbiAgICAgICAgdGhpcy5zZXQobmFtZSwgc3ViSGFuZGxlcik7XG4gICAgICB9XG4gICAgICBzdWJIYW5kbGVyLmFkZChoYW5kbGVyc1tuYW1lXSwgZmFsbGJhY2tzW25hbWVdLCBwcmlvcml0eSk7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogU2V0dGVyIGZvciBzdWJoYW5kbGVycy5cbiAgICogQHBhcmFtIHtIYW5kbGVyVHlwZX0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgc3ViaGFuZGxlci5cbiAgICogQHBhcmFtIHtTdWJIYW5kbGVyfSBzdWJIYW5kbGVyIFRoZSBzdWJoYW5kbGVyLlxuICAgKi9cbiAgcHVibGljIHNldChuYW1lOiBIYW5kbGVyVHlwZSwgc3ViSGFuZGxlcjogU3ViSGFuZGxlcikge1xuICAgIHRoaXMubWFwLnNldChuYW1lLCBzdWJIYW5kbGVyKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEdldHRlciBmb3Igc3ViaGFuZGxlci5cbiAgICogQHBhcmFtIHtIYW5kbGVyVHlwZX0gbmFtZSBOYW1lIG9mIHRoZSBzdWJoYW5kbGVyLlxuICAgKiBAcmV0dXJuIHtTdWJIYW5kbGVyfSBUaGUgc3ViaGFuZGxlciBieSB0aGF0IG5hbWUgaWYgaXQgZXhpc3RzLlxuICAgKi9cbiAgcHVibGljIGdldChuYW1lOiBIYW5kbGVyVHlwZSk6IFN1YkhhbmRsZXIge1xuICAgIHJldHVybiB0aGlzLm1hcC5nZXQobmFtZSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgYSBzeW1ib2wgbWFwIG9mIHRoZSBnaXZlbiBuYW1lLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBzeW1ib2wgbWFwLlxuICAgKiBAcmV0dXJuIHtTeW1ib2xNYXB9IFRoZSBtYXAgaWYgaXQgZXhpc3RzLiBPL3cgbnVsbC5cbiAgICovXG4gIHB1YmxpYyByZXRyaWV2ZShuYW1lOiBzdHJpbmcpOiBTeW1ib2xNYXAge1xuICAgIGZvciAoY29uc3QgaGFuZGxlciBvZiB0aGlzLm1hcC52YWx1ZXMoKSkge1xuICAgICAgbGV0IG1hcCA9IGhhbmRsZXIucmV0cmlldmUobmFtZSk7XG4gICAgICBpZiAobWFwKSB7XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cblxuICAvKipcbiAgICogQWxsIG5hbWVzIG9mIHJlZ2lzdGVyZWQgc3ViaGFuZGxlcnMuXG4gICAqIEByZXR1cm4ge0l0ZXJhYmxlSXRlcmF0b3I8c3RyaW5nPn0gSXRlcmFibGUgbGlzdCBvZiBrZXlzLlxuICAgKi9cbiAgcHVibGljIGtleXMoKTogSXRlcmFibGVJdGVyYXRvcjxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5tYXAua2V5cygpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIFRleFBhcnNlci5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0hhbmRsZXJDb25maWcsIEZhbGxiYWNrQ29uZmlnfSBmcm9tICcuL01hcEhhbmRsZXIuanMnO1xuaW1wb3J0IHtTdGFja0l0ZW1DbGFzc30gZnJvbSAnLi9TdGFja0l0ZW0uanMnO1xuaW1wb3J0IHtUYWdzQ2xhc3N9IGZyb20gJy4vVGFncy5qcyc7XG5pbXBvcnQge3VzZXJPcHRpb25zLCBkZWZhdWx0T3B0aW9ucywgT3B0aW9uTGlzdH0gZnJvbSAnLi4vLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7U3ViSGFuZGxlcnN9IGZyb20gJy4vTWFwSGFuZGxlci5qcyc7XG5pbXBvcnQge0Z1bmN0aW9uTGlzdH0gZnJvbSAnLi4vLi4vdXRpbC9GdW5jdGlvbkxpc3QuanMnO1xuaW1wb3J0IHtUZVh9IGZyb20gJy4uL3RleC5qcyc7XG5pbXBvcnQge1ByaW9yaXRpemVkTGlzdH0gZnJvbSAnLi4vLi4vdXRpbC9Qcmlvcml0aXplZExpc3QuanMnO1xuaW1wb3J0IHtUYWdzRmFjdG9yeX0gZnJvbSAnLi9UYWdzLmpzJztcblxuXG5leHBvcnQgdHlwZSBTdGFja0l0ZW1Db25maWcgPSB7W2tpbmQ6IHN0cmluZ106IFN0YWNrSXRlbUNsYXNzfTtcbmV4cG9ydCB0eXBlIFRhZ3NDb25maWcgPSB7W2tpbmQ6IHN0cmluZ106IFRhZ3NDbGFzc307XG5leHBvcnQgdHlwZSBQcm9jZXNzb3I8VD4gPSBbVCwgbnVtYmVyXTtcbmV4cG9ydCB0eXBlIFByb3RvUHJvY2Vzc29yPFQ+ID0gUHJvY2Vzc29yPFQ+IHwgVDtcbmV4cG9ydCB0eXBlIFByb2Nlc3Nvckxpc3QgPSBQcm9jZXNzb3I8RnVuY3Rpb24+W107XG5leHBvcnQgdHlwZSBDb25maWdNZXRob2QgPSAoYzogUGFyc2VyQ29uZmlndXJhdGlvbiwgajogVGVYPGFueSwgYW55LCBhbnk+KSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgSW5pdE1ldGhvZCA9IChjOiBQYXJzZXJDb25maWd1cmF0aW9uKSA9PiB2b2lkO1xuXG5cblxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYXRpb24ge1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gcHJpb3JpdHkgcGFpci5cbiAgICogQHBhcmFtIHtQcm90b1Byb2Nlc3NvcjxUPn0gZnVuYyBUaGUgZnVuY3Rpb24gb3IgcHJvY2Vzc29yLlxuICAgKiBAcGFyYW0ge251bWJlcn0gcHJpb3JpdHkgVGhlIGRlZmF1bHQgcHJpb3JpdHkuXG4gICAqIEByZXR1cm4ge1Byb2Nlc3Nvcn0gVGhlIHByb2Nlc3NvciBwYWlyLlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgbWFrZVByb2Nlc3NvcjxUPihmdW5jOiBQcm90b1Byb2Nlc3NvcjxUPiwgcHJpb3JpdHk6IG51bWJlcik6IFByb2Nlc3NvcjxUPiB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoZnVuYykgPyBmdW5jIDogW2Z1bmMsIHByaW9yaXR5XTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgY29uZmlndXJhdGlvbiBmb3IgYSBwYWNrYWdlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgcGFja2FnZSBuYW1lIG9yIGVtcHR5IHN0cmluZy5cbiAgICogQHBhcmFtIHtPYmplY3R9IGNvbmZpZyBTZWUgYGNyZWF0ZWAgbWV0aG9kLlxuICAgKiBAcmV0dXJuIHtDb25maWd1cmF0aW9ufSBUaGUgbmV3bHkgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBfY3JlYXRlKG5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc6IHtoYW5kbGVyPzogSGFuZGxlckNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz86IEZhbGxiYWNrQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zPzogU3RhY2tJdGVtQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZ3M/OiBUYWdzQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBPcHRpb25MaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzPzoge1trZXk6IHN0cmluZ106IGFueX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlcHJvY2Vzc29ycz86IFByb3RvUHJvY2Vzc29yPEZ1bmN0aW9uPltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rwcm9jZXNzb3JzPzogUHJvdG9Qcm9jZXNzb3I8RnVuY3Rpb24+W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdD86IFByb3RvUHJvY2Vzc29yPEluaXRNZXRob2Q+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZz86IFByb3RvUHJvY2Vzc29yPENvbmZpZ01ldGhvZD4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyPzogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9IHt9KTogQ29uZmlndXJhdGlvbiB7XG4gICAgbGV0IHByaW9yaXR5ID0gY29uZmlnLnByaW9yaXR5IHx8IFByaW9yaXRpemVkTGlzdC5ERUZBVUxUUFJJT1JJVFk7XG4gICAgbGV0IGluaXQgPSBjb25maWcuaW5pdCA/IHRoaXMubWFrZVByb2Nlc3Nvcihjb25maWcuaW5pdCwgcHJpb3JpdHkpIDogbnVsbDtcbiAgICBsZXQgY29uZiA9IGNvbmZpZy5jb25maWcgPyB0aGlzLm1ha2VQcm9jZXNzb3IoY29uZmlnLmNvbmZpZywgcHJpb3JpdHkpIDogbnVsbDtcbiAgICBsZXQgcHJlcHJvY2Vzc29ycyA9IChjb25maWcucHJlcHJvY2Vzc29ycyB8fCBbXSkubWFwKFxuICAgICAgcHJlID0+IHRoaXMubWFrZVByb2Nlc3NvcihwcmUsIHByaW9yaXR5KSk7XG4gICAgbGV0IHBvc3Rwcm9jZXNzb3JzID0gKGNvbmZpZy5wb3N0cHJvY2Vzc29ycyB8fCBbXSkubWFwKFxuICAgICAgcG9zdCA9PiB0aGlzLm1ha2VQcm9jZXNzb3IocG9zdCwgcHJpb3JpdHkpKTtcbiAgICBsZXQgcGFyc2VyID0gY29uZmlnLnBhcnNlciB8fCAndGV4JztcbiAgICByZXR1cm4gbmV3IENvbmZpZ3VyYXRpb24oXG4gICAgICBuYW1lLFxuICAgICAgY29uZmlnLmhhbmRsZXIgfHwge30sXG4gICAgICBjb25maWcuZmFsbGJhY2sgfHwge30sXG4gICAgICBjb25maWcuaXRlbXMgfHwge30sXG4gICAgICBjb25maWcudGFncyB8fCB7fSxcbiAgICAgIGNvbmZpZy5vcHRpb25zIHx8IHt9LFxuICAgICAgY29uZmlnLm5vZGVzIHx8IHt9LFxuICAgICAgcHJlcHJvY2Vzc29ycywgcG9zdHByb2Nlc3NvcnMsIGluaXQsIGNvbmYsIHByaW9yaXR5LFxuICAgICAgcGFyc2VyXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdG9yIHBhdHRlcm4gZm9yIGNyZWF0aW5nIGEgbmFtZWQgcGFja2FnZSBjb25maWd1cmF0aW9uLiBUaGlzIHdpbGwgYmVcbiAgICogYWRtaW5pc3RlcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGhhbmRsZXIgYW5kIGNhbiBiZSByZXRyaWV2ZWQgYWdhaW4uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBwYWNrYWdlIG5hbWUuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyczpcbiAgICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIFRleFBhcnNlciBjb25zaXN0IG9mIHRoZSBmb2xsb3dpbmc6XG4gICAqICAqIF9oYW5kbGVyXyAgY29uZmlndXJhdGlvbiBtYXBwaW5nIGhhbmRsZXIgdHlwZXMgdG8gbGlzdHMgb2Ygc3ltYm9sIG1hcHBpbmdzLlxuICAgKiAgKiBfZmFsbGJhY2tfIGNvbmZpZ3VyYXRpb24gbWFwcGluZyBoYW5kbGVyIHR5cGVzIHRvIGZhbGxiYWNrIG1ldGhvZHMuXG4gICAqICAqIF9pdGVtc18gZm9yIHRoZSBTdGFja0l0ZW0gZmFjdG9yeS5cbiAgICogICogX3RhZ3NfIG1hcHBpbmcgdGFnZ2luZyBjb25maWd1cmF0aW9ucyB0byB0YWdnaW5nIG9iamVjdHMuXG4gICAqICAqIF9vcHRpb25zXyBwYXJzZSBvcHRpb25zIGZvciB0aGUgcGFja2FnZXMuXG4gICAqICAqIF9ub2Rlc18gZm9yIHRoZSBOb2RlIGZhY3RvcnkuXG4gICAqICAqIF9wcmVwcm9jZXNzb3JzXyBsaXN0IG9mIGZ1bmN0aW9ucyBmb3IgcHJlcHJvY2Vzc2luZyB0aGUgTGFUZVhcbiAgICogICAgICBzdHJpbmcgd3J0LiB0byBnaXZlbiBwYXJzZSBvcHRpb25zLiBDYW4gY29udGFpbiBhIHByaW9yaXR5LlxuICAgKiAgKiBfcG9zdHByb2Nlc3NvcnNfIGxpc3Qgb2YgZnVuY3Rpb25zIGZvciBwb3N0cHJvY2Vzc2luZyB0aGUgTW1sTm9kZVxuICAgKiAgICAgIHdydC4gdG8gZ2l2ZW4gcGFyc2Ugb3B0aW9ucy4gQ2FuIGNvbnRhaW4gYSBwcmlvcml0eS5cbiAgICogICogX2luaXRfIGluaXQgbWV0aG9kIGFuZCBvcHRpb25hbGx5IGl0cyBwcmlvcml0eS5cbiAgICogICogX2NvbmZpZ18gY29uZmlnIG1ldGhvZCBhbmQgb3B0aW9uYWxseSBpdHMgcHJpb3JpdHkuXG4gICAqICAqIF9wcmlvcml0eV8gZGVmYXVsdCBwcmlvcml0eSBvZiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICogICogX3BhcnNlcl8gdGhlIG5hbWUgb2YgdGhlIHBhcnNlciB0aGF0IHRoaXMgY29uZmlndXJhdGlvbiB0YXJnZXRzLlxuICAgKiBAcmV0dXJuIHtDb25maWd1cmF0aW9ufSBUaGUgbmV3bHkgZ2VuZXJhdGVkIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNyZWF0ZShuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZzoge2hhbmRsZXI/OiBIYW5kbGVyQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFjaz86IEZhbGxiYWNrQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtcz86IFN0YWNrSXRlbUNvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncz86IFRhZ3NDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM/OiBPcHRpb25MaXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rlcz86IHtba2V5OiBzdHJpbmddOiBhbnl9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzb3JzPzogUHJvdG9Qcm9jZXNzb3I8RnVuY3Rpb24+W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3Rwcm9jZXNzb3JzPzogUHJvdG9Qcm9jZXNzb3I8RnVuY3Rpb24+W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXQ/OiBQcm90b1Byb2Nlc3NvcjxJbml0TWV0aG9kPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPzogUHJvdG9Qcm9jZXNzb3I8Q29uZmlnTWV0aG9kPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk/OiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlcj86IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0ge30pOiBDb25maWd1cmF0aW9uIHtcbiAgICBsZXQgY29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uX2NyZWF0ZShuYW1lLCBjb25maWcpO1xuICAgIENvbmZpZ3VyYXRpb25IYW5kbGVyLnNldChuYW1lLCBjb25maWd1cmF0aW9uKTtcbiAgICByZXR1cm4gY29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuIHVubmFtZWQsIGVwaGVtZXJhbCBwYWNrYWdlIGNvbmZpZ3VyYXRpb24uIEl0IHdpbGwgbm90IGFkZGVkIHRvXG4gICAqIHRoZSBjb25maWd1cmF0aW9uIGhhbmRsZXIuXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjb25maWcgU2VlIGBjcmVhdGVgIG1ldGhvZC5cbiAgICogQHJldHVybiB7Q29uZmlndXJhdGlvbn0gVGhlIGVwaGVtZXJhbCBwYWNrYWdlIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvY2FsKGNvbmZpZzoge2hhbmRsZXI/OiBIYW5kbGVyQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2s/OiBGYWxsYmFja0NvbmZpZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zPzogU3RhY2tJdGVtQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFncz86IFRhZ3NDb25maWcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPzogT3B0aW9uTGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzPzoge1trZXk6IHN0cmluZ106IGFueX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVwcm9jZXNzb3JzPzogUHJvdG9Qcm9jZXNzb3I8RnVuY3Rpb24+W10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3N0cHJvY2Vzc29ycz86IFByb3RvUHJvY2Vzc29yPEZ1bmN0aW9uPltdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdD86IFByb3RvUHJvY2Vzc29yPEluaXRNZXRob2Q+LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnPzogUHJvdG9Qcm9jZXNzb3I8Q29uZmlnTWV0aG9kPixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW9yaXR5PzogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyPzogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0ge30pOiBDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gQ29uZmlndXJhdGlvbi5fY3JlYXRlKCcnLCBjb25maWcpO1xuICB9XG5cblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHJlYWRvbmx5IG5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seSBoYW5kbGVyOiBIYW5kbGVyQ29uZmlnID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHkgZmFsbGJhY2s6IEZhbGxiYWNrQ29uZmlnID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHkgaXRlbXM6IFN0YWNrSXRlbUNvbmZpZyA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5IHRhZ3M6IFRhZ3NDb25maWcgPSB7fSxcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seSBvcHRpb25zOiBPcHRpb25MaXN0ID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHkgbm9kZXM6IHtba2V5OiBzdHJpbmddOiBhbnl9ID0ge30sXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHkgcHJlcHJvY2Vzc29yczogUHJvY2Vzc29yTGlzdCA9IFtdLFxuICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5IHBvc3Rwcm9jZXNzb3JzOiBQcm9jZXNzb3JMaXN0ID0gW10sXG4gICAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHkgaW5pdE1ldGhvZDogUHJvY2Vzc29yPEluaXRNZXRob2Q+ID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seSBjb25maWdNZXRob2Q6IFByb2Nlc3NvcjxDb25maWdNZXRob2Q+ID0gbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgcHJpb3JpdHk6IG51bWJlcixcbiAgICAgICAgICAgICAgICAgICAgICByZWFkb25seSBwYXJzZXI6IHN0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgdGhpcy5oYW5kbGVyID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtjaGFyYWN0ZXI6IFtdLCBkZWxpbWl0ZXI6IFtdLCBtYWNybzogW10sIGVudmlyb25tZW50OiBbXX0sIGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBpbml0IG1ldGhvZC5cbiAgICogQHR5cGUge0Z1bmN0aW9ufVxuICAgKi9cbiAgcHVibGljIGdldCBpbml0KCk6IEluaXRNZXRob2Qge1xuICAgIHJldHVybiB0aGlzLmluaXRNZXRob2QgPyB0aGlzLmluaXRNZXRob2RbMF0gOiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBjb25maWcgbWV0aG9kIHRvIGNhbGwgb25jZSBqYXggaXMgcmVhZHkuXG4gICAqIEB0eXBlIHtGdW5jdGlvbkxpc3R9XG4gICAqL1xuICBwdWJsaWMgZ2V0IGNvbmZpZygpOiBDb25maWdNZXRob2Qge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ01ldGhvZCA/IHRoaXMuY29uZmlnTWV0aG9kWzBdIDogbnVsbDtcbiAgfVxuXG59XG5cblxuZXhwb3J0IG5hbWVzcGFjZSBDb25maWd1cmF0aW9uSGFuZGxlciB7XG5cbiAgbGV0IG1hcHM6IE1hcDxzdHJpbmcsIENvbmZpZ3VyYXRpb24+ID0gbmV3IE1hcCgpO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGNvbmZpZ3VyYXRpb24gdG8gdGhlIGhhbmRsZXIgb3ZlcndyaXRpbmcgb2xkIG9uZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb25maWd1cmF0aW9uLlxuICAgKiBAcGFyYW0ge0NvbmZpZ3VyYXRpb259IG1hcCBUaGUgY29uZmlndXJhdGlvbiBtYXBwaW5nLlxuICAgKi9cbiAgZXhwb3J0IGxldCBzZXQgPSBmdW5jdGlvbihuYW1lOiBzdHJpbmcsIG1hcDogQ29uZmlndXJhdGlvbik6IHZvaWQge1xuICAgIG1hcHMuc2V0KG5hbWUsIG1hcCk7XG4gIH07XG5cblxuICAvKipcbiAgICogTG9va3MgdXAgYSBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29uZmlndXJhdGlvbi5cbiAgICogQHJldHVybiB7Q29uZmlndXJhdGlvbn0gVGhlIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgZ2l2ZW4gbmFtZSBvciBudWxsLlxuICAgKi9cbiAgZXhwb3J0IGxldCBnZXQgPSBmdW5jdGlvbihuYW1lOiBzdHJpbmcpOiBDb25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gbWFwcy5nZXQobmFtZSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSBBbGwgY29uZmlndXJhdGlvbnMgaW4gdGhlIGhhbmRsZXIuXG4gICAqL1xuICBleHBvcnQgbGV0IGtleXMgPSBmdW5jdGlvbigpOiBJdGVyYWJsZUl0ZXJhdG9yPHN0cmluZz4ge1xuICAgIHJldHVybiBtYXBzLmtleXMoKTtcbiAgfTtcblxufVxuXG5cbi8qKlxuICogUGFyc2VyIGNvbmZpZ3VyYXRpb24gY29tYmluZXMgdGhlIGNvbmZpZ3VyYXRpb25zIG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWRcbiAqIHBhY2thZ2VzLlxuICogQGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCBjbGFzcyBQYXJzZXJDb25maWd1cmF0aW9uIHtcblxuICAvKipcbiAgICogUHJpb3JpdHkgbGlzdCBvZiBpbml0IG1ldGhvZHMuXG4gICAqIEB0eXBlIHtGdW5jdGlvbkxpc3R9XG4gICAqL1xuICBwcm90ZWN0ZWQgaW5pdE1ldGhvZDogRnVuY3Rpb25MaXN0ID0gbmV3IEZ1bmN0aW9uTGlzdCgpO1xuXG4gIC8qKlxuICAgKiBQcmlvcml0eSBsaXN0IG9mIGluaXQgbWV0aG9kcyB0byBjYWxsIG9uY2UgamF4IGlzIHJlYWR5LlxuICAgKiBAdHlwZSB7RnVuY3Rpb25MaXN0fVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvbmZpZ01ldGhvZDogRnVuY3Rpb25MaXN0ID0gbmV3IEZ1bmN0aW9uTGlzdCgpO1xuXG4gIC8qKlxuICAgKiBBbiBvcmRlcmVkIGxpc3Qgb2YgY29maWd1cmF0aW9ucy5cbiAgICogQHR5cGUge1ByaW9yaXRpemVkTGlzdDxDb25maWd1cmF0aW9uPn1cbiAgICovXG4gIHByb3RlY3RlZCBjb25maWd1cmF0aW9uczogUHJpb3JpdGl6ZWRMaXN0PENvbmZpZ3VyYXRpb24+ID0gbmV3IFByaW9yaXRpemVkTGlzdCgpO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBwYXJzZXJzIHRoaXMgY29uZmlndXJhdGlvbiB0YXJnZXRzXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFyc2Vyczogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIHN1YmhhbmRsZXJzIGZvciB0aGlzIGNvbmZpZ3VyYXRpb24uXG4gICAqIEB0eXBlIHtTdWJIYW5kbGVyc31cbiAgICovXG4gIHB1YmxpYyBoYW5kbGVyczogU3ViSGFuZGxlcnMgPSBuZXcgU3ViSGFuZGxlcnMoKTtcblxuICAvKipcbiAgICogVGhlIGNvbGxhdGVkIHN0YWNrIGl0ZW1zLlxuICAgKiBAdHlwZSB7U3RhY2tJdGVtQ29uZmlnfVxuICAgKi9cbiAgcHVibGljIGl0ZW1zOiBTdGFja0l0ZW1Db25maWcgPSB7fTtcblxuICAvKipcbiAgICogVGhlIGNvbGxhdGVkIHRhZyBjb25maWd1cmF0aW9ucy5cbiAgICogQHR5cGUge1RhZ3NDb25maWd9XG4gICAqL1xuICBwdWJsaWMgdGFnczogVGFnc0NvbmZpZyA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgY29sbGF0ZWQgb3B0aW9ucy5cbiAgICogQHR5cGUge09wdGlvbkxpc3R9XG4gICAqL1xuICBwdWJsaWMgb3B0aW9uczogT3B0aW9uTGlzdCA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgY29sbGF0ZWQgbm9kZSBjcmVhdG9ycy5cbiAgICogQHR5cGUge3tba2V5OiBzdHJpbmddOiBhbnl9fVxuICAgKi9cbiAgcHVibGljIG5vZGVzOiB7W2tleTogc3RyaW5nXTogYW55fSAgPSB7fTtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7KHN0cmluZ3xbc3RyaW5nLG51bWJlcl0pW119IHBhY2thZ2VzIEEgbGlzdCBvZiBwYWNrYWdlcyB3aXRoXG4gICAqICAgICBvcHRpb25hbCBwcmlvcml0aWVzLlxuICAgKiBAcGFybSB7c3RyaW5nW119IHBhcnNlcnMgICBUaGUgbmFtZXMgb2YgdGhlIHBhcnNlcnMgdGhpcyBwYWNrYWdlIHRhcmdldHNcbiAgICovXG4gIGNvbnN0cnVjdG9yKHBhY2thZ2VzOiAoc3RyaW5nIHwgW3N0cmluZywgbnVtYmVyXSlbXSwgcGFyc2Vyczogc3RyaW5nW10gPSBbJ3RleCddKSB7XG4gICAgdGhpcy5wYXJzZXJzID0gcGFyc2VycztcbiAgICBmb3IgKGNvbnN0IHBrZyBvZiBwYWNrYWdlcy5zbGljZSgpLnJldmVyc2UoKSkge1xuICAgICAgdGhpcy5hZGRQYWNrYWdlKHBrZyk7XG4gICAgfVxuICAgIGZvciAobGV0IHtpdGVtOiBjb25maWcsIHByaW9yaXR5OiBwcmlvcml0eX0gb2YgdGhpcy5jb25maWd1cmF0aW9ucykge1xuICAgICAgdGhpcy5hcHBlbmQoY29uZmlnLCBwcmlvcml0eSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgbWV0aG9kIGZvciB0aGUgY29uZmlndXJhdGlvbjtcbiAgICovXG4gIHB1YmxpYyBpbml0KCkge1xuICAgIHRoaXMuaW5pdE1ldGhvZC5leGVjdXRlKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXQgbWV0aG9kIGZvciB3aGVuIHRoZSBqYXggaXMgcmVhZHlcbiAgICogQHBhcmFtIHtUZVh9IGpheCBUaGUgVGVYIGpheCBmb3IgdGhpcyBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgY29uZmlnKGpheDogVGVYPGFueSwgYW55LCBhbnk+KSB7XG4gICAgdGhpcy5jb25maWdNZXRob2QuZXhlY3V0ZSh0aGlzLCBqYXgpO1xuICAgIGZvciAoY29uc3QgY29uZmlnIG9mIHRoaXMuY29uZmlndXJhdGlvbnMpIHtcbiAgICAgIHRoaXMuYWRkRmlsdGVycyhqYXgsIGNvbmZpZy5pdGVtKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGFuZCBhZGRzIGNvbmZpZ3VyYXRpb24gZm9yIGEgcGFja2FnZSB3aXRoIHByaW9yaXR5LlxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBbc3RyaW5nLCBudW1iZXJdfSBwa2cgUGFja2FnZSB3aXRoIHByaW9yaXR5LlxuICAgKi9cbiAgcHVibGljIGFkZFBhY2thZ2UocGtnOiAoc3RyaW5nIHwgW3N0cmluZywgbnVtYmVyXSkpIHtcbiAgICBjb25zdCBuYW1lID0gdHlwZW9mIHBrZyA9PT0gJ3N0cmluZycgPyBwa2cgOiBwa2dbMF07XG4gICAgY29uc3QgY29uZiA9IHRoaXMuZ2V0UGFja2FnZShuYW1lKTtcbiAgICBjb25mICYmIHRoaXMuY29uZmlndXJhdGlvbnMuYWRkKGNvbmYsIHR5cGVvZiBwa2cgPT09ICdzdHJpbmcnID8gY29uZi5wcmlvcml0eSA6IHBrZ1sxXSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIGNvbmZpZ3VyYXRpb24gYWZ0ZXIgdGhlIGlucHV0IGpheCBpcyBjcmVhdGVkLiAgKFVzZWQgYnkgXFxyZXF1aXJlLilcbiAgICogU2V0cyBpdGVtcywgbm9kZXMgYW5kIHJ1bnMgY29uZmlndXJhdGlvbiBtZXRob2QgZXhwbGljaXRseS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgcGFja2FnZSB0byBhZGRcbiAgICogQHBhcmFtIHtUZVh9IGpheCAgICAgICAgICAgICAgICBUaGUgVGVYIGpheCB3aGVyZSBpdCBpcyBiZWluZyByZWdpc3RlcmVkXG4gICAqIEBwYXJhbSB7T3B0aW9uTGlzdD19IG9wdGlvbnMgICAgVGhlIG9wdGlvbnMgZm9yIHRoZSBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgcHVibGljIGFkZChuYW1lOiBzdHJpbmcsIGpheDogVGVYPGFueSwgYW55LCBhbnk+LCBvcHRpb25zOiBPcHRpb25MaXN0ID0ge30pIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmdldFBhY2thZ2UobmFtZSk7XG4gICAgdGhpcy5hcHBlbmQoY29uZmlnKTtcbiAgICB0aGlzLmNvbmZpZ3VyYXRpb25zLmFkZChjb25maWcsIGNvbmZpZy5wcmlvcml0eSk7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgY29uc3QgcGFyc2VyID0gamF4LnBhcnNlT3B0aW9ucztcbiAgICBwYXJzZXIubm9kZUZhY3Rvcnkuc2V0Q3JlYXRvcnMoY29uZmlnLm5vZGVzKTtcbiAgICBmb3IgKGNvbnN0IGtpbmQgb2YgT2JqZWN0LmtleXMoY29uZmlnLml0ZW1zKSkge1xuICAgICAgcGFyc2VyLml0ZW1GYWN0b3J5LnNldE5vZGVDbGFzcyhraW5kLCBjb25maWcuaXRlbXNba2luZF0pO1xuICAgIH1cbiAgICBUYWdzRmFjdG9yeS5hZGRUYWdzKGNvbmZpZy50YWdzKTtcbiAgICBkZWZhdWx0T3B0aW9ucyhwYXJzZXIub3B0aW9ucywgY29uZmlnLm9wdGlvbnMpO1xuICAgIHVzZXJPcHRpb25zKHBhcnNlci5vcHRpb25zLCBvcHRpb25zKTtcbiAgICB0aGlzLmFkZEZpbHRlcnMoamF4LCBjb25maWcpO1xuICAgIGlmIChjb25maWcuY29uZmlnKSB7XG4gICAgICBjb25maWcuY29uZmlnKHRoaXMsIGpheCk7XG4gICAgfVxuICB9XG5cbiAvKipcbiAgKiBGaW5kIGEgcGFja2FnZSBhbmQgY2hlY2sgdGhhdCBpdCBpcyBmb3IgdGhlIHRhcmdldGVkIHBhcnNlclxuICAqXG4gICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgdG8gY2hlY2tcbiAgKiBAcmV0dXJuIHtDb25maWd1cmF0aW9ufSAgICBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIHBhY2thZ2VcbiAgKi9cbiAgcHJvdGVjdGVkIGdldFBhY2thZ2UobmFtZTogc3RyaW5nKTogQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgY29uZmlnID0gQ29uZmlndXJhdGlvbkhhbmRsZXIuZ2V0KG5hbWUpO1xuICAgIGlmIChjb25maWcgJiYgdGhpcy5wYXJzZXJzLmluZGV4T2YoY29uZmlnLnBhcnNlcikgPCAwKSB7XG4gICAgICB0aHJvdyBFcnJvcihgUGFja2FnZSAke25hbWV9IGRvZXNuJ3QgdGFyZ2V0IHRoZSBwcm9wZXIgcGFyc2VyYCk7XG4gICAgfVxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICAvKipcbiAgICogQXBwZW5kcyBhIGNvbmZpZ3VyYXRpb24gdG8gdGhlIG92ZXJhbGwgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEBwYXJhbSB7Q29uZmlndXJhdGlvbn0gY29uZmlnIEEgY29uZmlndXJhdGlvbi5cbiAgICogQHBhcmFtIHtudW1iZXJ9IHByaW9yaXR5IFRoZSBjb25maWd1cmF0aW9ucyBvcHRpb25hbCBwcmlvcml0eS5cbiAgICovXG4gIHB1YmxpYyBhcHBlbmQoY29uZmlnOiBDb25maWd1cmF0aW9uLCBwcmlvcml0eT86IG51bWJlcikge1xuICAgIHByaW9yaXR5ID0gcHJpb3JpdHkgfHwgY29uZmlnLnByaW9yaXR5O1xuICAgIGlmIChjb25maWcuaW5pdE1ldGhvZCkge1xuICAgICAgdGhpcy5pbml0TWV0aG9kLmFkZChjb25maWcuaW5pdE1ldGhvZFswXSwgY29uZmlnLmluaXRNZXRob2RbMV0pO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLmNvbmZpZ01ldGhvZCkge1xuICAgICAgICB0aGlzLmNvbmZpZ01ldGhvZC5hZGQoY29uZmlnLmNvbmZpZ01ldGhvZFswXSwgY29uZmlnLmNvbmZpZ01ldGhvZFsxXSk7XG4gICAgICB9XG4gICAgdGhpcy5oYW5kbGVycy5hZGQoY29uZmlnLmhhbmRsZXIsIGNvbmZpZy5mYWxsYmFjaywgcHJpb3JpdHkpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5pdGVtcywgY29uZmlnLml0ZW1zKTtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMudGFncywgY29uZmlnLnRhZ3MpO1xuICAgIGRlZmF1bHRPcHRpb25zKHRoaXMub3B0aW9ucywgY29uZmlnLm9wdGlvbnMpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcy5ub2RlcywgY29uZmlnLm5vZGVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIHByZS0gYW5kIHBvc3Rwcm9jZXNzb3IgYXMgZmlsdGVycyB0byB0aGUgamF4LlxuICAgKiBAcGFyYW0ge1RlWDxhbnl9IGpheCBUaGUgVGVYIEpheC5cbiAgICogQHBhcmFtIHtDb25maWd1cmF0aW9ufSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24gd2hvc2UgcHJvY2Vzc29ycyBhcmUgYWRkZWQuXG4gICAqL1xuICBwcml2YXRlIGFkZEZpbHRlcnMoamF4OiBUZVg8YW55LCBhbnksIGFueT4sIGNvbmZpZzogQ29uZmlndXJhdGlvbikge1xuICAgIGZvciAoY29uc3QgW3ByZSwgcHJpb3JpdHldIG9mIGNvbmZpZy5wcmVwcm9jZXNzb3JzKSB7XG4gICAgICBqYXgucHJlRmlsdGVycy5hZGQocHJlLCBwcmlvcml0eSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgW3Bvc3QsIHByaW9yaXR5XSBvZiBjb25maWcucG9zdHByb2Nlc3NvcnMpIHtcbiAgICAgIGpheC5wb3N0RmlsdGVycy5hZGQocG9zdCwgcHJpb3JpdHkpO1xuICAgIH1cbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBTeW1ib2wgY2xhc3Nlcy5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0FyZ3MsIEF0dHJpYnV0ZXMsIFBhcnNlTWV0aG9kfSBmcm9tICcuL1R5cGVzLmpzJztcblxuXG4vKipcbiAqIFN5bWJvbCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU3ltYm9sIHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgVGhlIHN5bWJvbCBwYXJzZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFyIFRoZSBjb3JyZXNwb25kaW5nIHRyYW5zbGF0aW9uLlxuICAgKiBAcGFyYW0ge0F0dHJpYnV0ZXN9IGF0dHJpYnV0ZXMgVGhlIGF0dHJpYnV0ZXMgZm9yIHRoZSB0cmFuc2xhdGlvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N5bWJvbDogc3RyaW5nLCBwcml2YXRlIF9jaGFyOiBzdHJpbmcsXG4gICAgICAgICAgICAgIHByaXZhdGUgX2F0dHJpYnV0ZXM6IEF0dHJpYnV0ZXMpIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3ltYm9sKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N5bWJvbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2hhcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9jaGFyO1xuICB9XG5cbiAgcHVibGljIGdldCBhdHRyaWJ1dGVzKCk6IEF0dHJpYnV0ZXMge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzO1xuICB9XG5cbn1cblxuXG5leHBvcnQgY2xhc3MgTWFjcm8ge1xuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBUaGUgc3ltYm9sIHBhcnNlZFxuICAgKiBAcGFyYW0ge1BhcnNlTWV0aG9kfSBmdW5jIFRoZSBwYXJzaW5nIGZ1bmN0aW9uIGZvciB0aGF0IHN5bWJvbC5cbiAgICogQHBhcmFtIHtBcmdzW119IGFyZ3MgQWRkaXRpb25hbCBhcmd1bWVudHMgZm9yIHRoZSBmdW5jdGlvbi5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3N5bWJvbDogc3RyaW5nLCBwcml2YXRlIF9mdW5jOiBQYXJzZU1ldGhvZCxcbiAgICAgICAgICAgICAgcHJpdmF0ZSBfYXJnczogQXJnc1tdID0gW10pIHtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3ltYm9sKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N5bWJvbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZnVuYygpOiBQYXJzZU1ldGhvZCB7XG4gICAgcmV0dXJuIHRoaXMuX2Z1bmM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFyZ3MoKTogQXJnc1tdIHtcbiAgICByZXR1cm4gdGhpcy5fYXJncztcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBTeW1ib2wgbWFwIGNsYXNzZXMuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtBdHRyaWJ1dGVzLCBBcmdzLCBQYXJzZU1ldGhvZCwgUGFyc2VJbnB1dCwgUGFyc2VSZXN1bHR9IGZyb20gJy4vVHlwZXMuanMnO1xuaW1wb3J0IHtTeW1ib2wsIE1hY3JvfSBmcm9tICcuL1N5bWJvbC5qcyc7XG5pbXBvcnQge01hcEhhbmRsZXJ9IGZyb20gJy4vTWFwSGFuZGxlci5qcyc7XG5cblxuLyoqXG4gKiBTeW1ib2xNYXBzIGFyZSB0aGUgYmFzZSBjb21wb25lbnRzIGZvciB0aGUgaW5wdXQgcGFyc2Vycy5cbiAqXG4gKiBUaGV5IHByb3ZpZGUgYSBjb250YWlucyBtZXRob2QgdGhhdCBjaGVja3MgaWYgYSBtYXAgaXMgYXBwbGljYWJsZSAoY29udGFpbnMpXG4gKiBhIHBhcnRpY3VsYXIgc3RyaW5nLiBJbXBsZW1lbnRpbmcgY2xhc3NlcyB0aGVuIHBlcmZvcm0gdGhlIGFjdHVhbCBzeW1ib2xcbiAqIHBhcnNpbmcsIGZyb20gc2ltcGxlIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXN0LCBzdHJhaWdodCBmb3J3YXJkIHN5bWJvbCBtYXBwaW5nXG4gKiB0byB0cmFuc2Zvcm1hdGlvbmFsIGZ1bmN0aW9uYWxpdHkgb24gdGhlIHBhcnNlZCBzdHJpbmcuXG4gKlxuICogQGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN5bWJvbE1hcCB7XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5hbWUgb2YgdGhlIG1hcC5cbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQHJldHVybiB7UGFyc2VNZXRob2R9IFRoZSBkZWZhdWx0IHBhcnNpbmcgbWV0aG9kLlxuICAgKi9cbiAgcGFyc2VyOiBQYXJzZU1ldGhvZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBBIHN5bWJvbCB0byBwYXJzZS5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgc3ltYm9sIG1hcCBhcHBsaWVzIHRvIHRoZSBzeW1ib2wuXG4gICAqL1xuICBjb250YWlucyhzeW1ib2w6IHN0cmluZyk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgQSBzeW1ib2wgdG8gcGFyc2UuXG4gICAqIEByZXR1cm4ge1BhcnNlTWV0aG9kfSBBIHBhcnNlIG1ldGhvZCBmb3IgdGhlIHN5bWJvbC5cbiAgICovXG4gIHBhcnNlckZvcihzeW1ib2w6IHN0cmluZyk6IFBhcnNlTWV0aG9kO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gZW52IFRoZSBjdXJyZW50IHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbCBBIHN5bWJvbCB0byBwYXJzZS5cbiAgICogQHJldHVybiB7UGFyc2VSZXN1bHR9IFRoZSBwYXJzZWQgc3ltYm9sIGFuZCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nLlxuICAgKi9cbiAgcGFyc2UoW2Vudiwgc3ltYm9sXTogUGFyc2VJbnB1dCk6IFBhcnNlUmVzdWx0O1xuXG59XG5cbi8qKlxuICogQHBhcmFtIHtQYXJzZVJlc3VsdH0gcmVzdWx0ICAgIFRoZSByZXN1bHQgdG8gY2hlY2tcbiAqIEByZXR1cm4ge1BhcnNlUmVzdWx0fSAgICAgICAgICBUcnVlIGlmIHJlc3VsdCB3YXMgdm9pZCwgcmVzdWx0IG90aGVyd2lzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXN1bHQocmVzdWx0OiBQYXJzZVJlc3VsdCk6IFBhcnNlUmVzdWx0IHtcbiAgcmV0dXJuIHJlc3VsdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IHJlc3VsdDtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdCBpbXBsZW1lbnRhdGlvbiBvZiBzeW1ib2wgbWFwcy5cbiAqIEB0ZW1wbGF0ZSBUXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFN5bWJvbE1hcDxUPiBpbXBsZW1lbnRzIFN5bWJvbE1hcCB7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7U3ltYm9sTWFwfVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBtYXBwaW5nLlxuICAgKiBAcGFyYW0ge1BhcnNlTWV0aG9kfSBwYXJzZXIgVGhlIHBhcnNlciBmb3IgdGhlIG1hcHBpb25nLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfbmFtZTogc3RyaW5nLCBwcml2YXRlIF9wYXJzZXI6IFBhcnNlTWV0aG9kKSB7XG4gICAgTWFwSGFuZGxlci5yZWdpc3Rlcih0aGlzKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX25hbWU7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBjb250YWlucyhzeW1ib2w6IHN0cmluZyk6IGJvb2xlYW47XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcGFyc2VyRm9yKHN5bWJvbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuY29udGFpbnMoc3ltYm9sKSA/IHRoaXMucGFyc2VyIDogbnVsbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHBhcnNlKFtlbnYsIHN5bWJvbF06IFBhcnNlSW5wdXQpIHtcbiAgICBsZXQgcGFyc2VyID0gdGhpcy5wYXJzZXJGb3Ioc3ltYm9sKTtcbiAgICBsZXQgbWFwcGVkID0gdGhpcy5sb29rdXAoc3ltYm9sKTtcbiAgICByZXR1cm4gKHBhcnNlciAmJiBtYXBwZWQpID8gcGFyc2VSZXN1bHQocGFyc2VyKGVudiwgbWFwcGVkIGFzIGFueSkpIDogbnVsbDtcbiAgfVxuXG5cbiAgcHVibGljIHNldCBwYXJzZXIocGFyc2VyOiBQYXJzZU1ldGhvZCkge1xuICAgIHRoaXMuX3BhcnNlciA9IHBhcnNlcjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyc2VyKCk6IFBhcnNlTWV0aG9kIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VyO1xuICB9XG5cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5bWJvbFxuICAgKiBAcmV0dXJuIHtUfVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGxvb2t1cChzeW1ib2w6IHN0cmluZyk6IFQ7XG5cbn1cblxuXG5cbi8qKlxuICogUmVndWxhciBleHByZXNzaW9ucyB1c2VkIGZvciBwYXJzaW5nIHN0cmluZ3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWdFeHBNYXAgZXh0ZW5kcyBBYnN0cmFjdFN5bWJvbE1hcDxzdHJpbmc+IHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBleHRlbmRzIHtBYnN0cmFjdFN5bWJvbE1hcH1cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgbWFwcGluZy5cbiAgICogQHBhcmFtIHtQYXJzZU1ldGhvZH0gcGFyc2VyIFRoZSBwYXJzZXIgZm9yIHRoZSBtYXBwaW9uZy5cbiAgICogQHBhcmFtIHtSZWdFeHB9IHJlZ2V4cCBUaGUgcmVndWxhciBleHByZXNzaW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLCBwYXJzZXI6IFBhcnNlTWV0aG9kLCBwcml2YXRlIF9yZWdFeHA6IFJlZ0V4cCkge1xuICAgIHN1cGVyKG5hbWUsIHBhcnNlcik7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjb250YWlucyhzeW1ib2w6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9yZWdFeHAudGVzdChzeW1ib2wpO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgbG9va3VwKHN5bWJvbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb250YWlucyhzeW1ib2wpID8gc3ltYm9sIDogbnVsbDtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBQYXJzZSBtYXBzIGFzc29jaWF0ZSBzdHJpbmdzIHdpdGggcGFyc2luZyBmdW5jdGlvbmFsaXR5LlxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyB7QWJzdHJhY3RTeW1ib2xNYXB9XG4gKiBAdGVtcGxhdGUgS1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RQYXJzZU1hcDxLPiBleHRlbmRzIEFic3RyYWN0U3ltYm9sTWFwPEs+IHtcblxuICBwcml2YXRlIG1hcDogTWFwPHN0cmluZywgSz4gPSBuZXcgTWFwPHN0cmluZywgSz4oKTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgbG9va3VwKHN5bWJvbDogc3RyaW5nKTogSyB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmdldChzeW1ib2wpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvbnRhaW5zKHN5bWJvbDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwLmhhcyhzeW1ib2wpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldHMgbWFwcGluZyBmb3IgYSBzeW1ib2wuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgVGhlIHN5bWJvbCB0byBtYXAuXG4gICAqIEBwYXJhbSB7S30gb2JqZWN0IFRoZSBzeW1ib2xzIHZhbHVlIGluIHRoZSBtYXBwaW5nJ3MgY29kb21haW4uXG4gICAqL1xuICBwdWJsaWMgYWRkKHN5bWJvbDogc3RyaW5nLCBvYmplY3Q6IEspIHtcbiAgICB0aGlzLm1hcC5zZXQoc3ltYm9sLCBvYmplY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZXMgYSBzeW1ib2wgZnJvbSB0aGUgbWFwXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzeW1ib2wgVGhlIHN5bWJvbCB0byByZW1vdmVcbiAgICovXG4gIHB1YmxpYyByZW1vdmUoc3ltYm9sOiBzdHJpbmcpIHtcbiAgICB0aGlzLm1hcC5kZWxldGUoc3ltYm9sKTtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBNYXBzIHN5bWJvbHMgdGhhdCBjYW4gYWxsIGJlIHBhcnNlZCB3aXRoIHRoZSBzYW1lIG1ldGhvZC5cbiAqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBleHRlbmRzIHtBYnN0cmFjdFBhcnNlTWFwfVxuICovXG5leHBvcnQgY2xhc3MgQ2hhcmFjdGVyTWFwIGV4dGVuZHMgQWJzdHJhY3RQYXJzZU1hcDxTeW1ib2w+IHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIG1hcHBpbmcuXG4gICAqIEBwYXJhbSB7UGFyc2VNZXRob2R9IHBhcnNlciBUaGUgcGFyc2VyIGZvciB0aGUgbWFwcGluZy5cbiAgICogQHBhcmFtIHtKU09OfSBqc29uIFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgbWFwcGluZy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgcGFyc2VyOiBQYXJzZU1ldGhvZCxcbiAgICAgICAgICAgICAganNvbjoge1tpbmRleDogc3RyaW5nXTogc3RyaW5nIHwgW3N0cmluZywgQXR0cmlidXRlc119KSB7XG4gICAgc3VwZXIobmFtZSwgcGFyc2VyKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhqc29uKSkge1xuICAgICAgbGV0IHZhbHVlID0ganNvbltrZXldO1xuICAgICAgbGV0IFtjaGFyLCBhdHRyc10gPSAodHlwZW9mKHZhbHVlKSA9PT0gJ3N0cmluZycpID8gW3ZhbHVlLCBudWxsXSA6IHZhbHVlO1xuICAgICAgbGV0IGNoYXJhY3RlciA9IG5ldyBTeW1ib2woa2V5LCBjaGFyLCBhdHRycyk7XG4gICAgICB0aGlzLmFkZChrZXksIGNoYXJhY3Rlcik7XG4gICAgfVxuICB9XG5cbn1cblxuXG4vKipcbiAqIE1hcHMgc3ltYm9scyB0aGF0IGFyZSBkZWxpbWl0ZXJzLCB0aGF0IGFyZSBhbGwgcGFyc2VkIHdpdGggdGhlIHNhbWUgbWV0aG9kLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMge0NoYXJhY3Rlck1hcH1cbiAqL1xuZXhwb3J0IGNsYXNzIERlbGltaXRlck1hcCBleHRlbmRzIENoYXJhY3Rlck1hcCB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHBhcnNlKFtlbnYsIHN5bWJvbF06IFBhcnNlSW5wdXQpIHtcbiAgICByZXR1cm4gc3VwZXIucGFyc2UoW2VudiwgJ1xcXFwnICsgc3ltYm9sXSk7XG4gIH1cblxufVxuXG5cbi8qKlxuICogTWFwcyBtYWNyb3MgdGhhdCBhbGwgYnJpbmcgdGhlaXIgb3duIHBhcnNpbmcgbWV0aG9kLlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMge0Fic3RyYWN0UGFyc2VNYXB9XG4gKi9cbmV4cG9ydCBjbGFzcyBNYWNyb01hcCBleHRlbmRzIEFic3RyYWN0UGFyc2VNYXA8TWFjcm8+IHtcblxuICAvKipcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIG1hcHBpbmcuXG4gICAqIEBwYXJhbSB7SlNPTn0ganNvbiBUaGUgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWFjcm8gbWFwLlxuICAgKiBAcGFyYW0ge1JlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPn0gZnVuY3Rpb25NYXAgQ29sbGVjdGlvbiBvZiBwYXJzZVxuICAgKiAgICAgZnVuY3Rpb25zIGZvciB0aGUgc2luZ2xlIG1hY3Jvcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAganNvbjoge1tpbmRleDogc3RyaW5nXTogc3RyaW5nIHwgQXJnc1tdfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb25NYXA6IFJlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPikge1xuICAgIHN1cGVyKG5hbWUsIG51bGwpO1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGpzb24pKSB7XG4gICAgICBsZXQgdmFsdWUgPSBqc29uW2tleV07XG4gICAgICBsZXQgW2Z1bmMsIC4uLmF0dHJzXSA9ICh0eXBlb2YodmFsdWUpID09PSAnc3RyaW5nJykgPyBbdmFsdWVdIDogdmFsdWU7XG4gICAgICBsZXQgY2hhcmFjdGVyID0gbmV3IE1hY3JvKGtleSwgZnVuY3Rpb25NYXBbZnVuYyBhcyBzdHJpbmddLCBhdHRycyk7XG4gICAgICB0aGlzLmFkZChrZXksIGNoYXJhY3Rlcik7XG4gICAgfVxuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcGFyc2VyRm9yKHN5bWJvbDogc3RyaW5nKSB7XG4gICAgbGV0IG1hY3JvID0gdGhpcy5sb29rdXAoc3ltYm9sKTtcbiAgICByZXR1cm4gbWFjcm8gPyBtYWNyby5mdW5jIDogbnVsbDtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHBhcnNlKFtlbnYsIHN5bWJvbF06IFBhcnNlSW5wdXQpIHtcbiAgICBsZXQgbWFjcm8gPSB0aGlzLmxvb2t1cChzeW1ib2wpO1xuICAgIGxldCBwYXJzZXIgPSB0aGlzLnBhcnNlckZvcihzeW1ib2wpO1xuICAgIGlmICghbWFjcm8gfHwgIXBhcnNlcikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZVJlc3VsdChwYXJzZXIoZW52LCBtYWNyby5zeW1ib2wsIC4uLm1hY3JvLmFyZ3MpKTtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBNYXBzIG1hY3JvcyB0aGF0IGFsbCBicmluZyB0aGVpciBvd24gcGFyc2luZyBtZXRob2QuXG4gKlxuICogQGNvbnN0cnVjdG9yXG4gKiBAZXh0ZW5kcyB7TWFjcm9NYXB9XG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tYW5kTWFwIGV4dGVuZHMgTWFjcm9NYXAge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBwYXJzZShbZW52LCBzeW1ib2xdOiBQYXJzZUlucHV0KSB7XG4gICAgbGV0IG1hY3JvID0gdGhpcy5sb29rdXAoc3ltYm9sKTtcbiAgICBsZXQgcGFyc2VyID0gdGhpcy5wYXJzZXJGb3Ioc3ltYm9sKTtcbiAgICBpZiAoIW1hY3JvIHx8ICFwYXJzZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgc2F2ZUNvbW1hbmQgPSBlbnYuY3VycmVudENTO1xuICAgIGVudi5jdXJyZW50Q1MgPSAnXFxcXCcgKyBzeW1ib2w7XG4gICAgbGV0IHJlc3VsdCA9IHBhcnNlcihlbnYsICdcXFxcJyArIG1hY3JvLnN5bWJvbCwgLi4ubWFjcm8uYXJncyk7XG4gICAgZW52LmN1cnJlbnRDUyA9IHNhdmVDb21tYW5kO1xuICAgIHJldHVybiBwYXJzZVJlc3VsdChyZXN1bHQpO1xuICB9XG5cbn1cblxuXG4vKipcbiAqIE1hcHMgbWFjcm9zIGZvciBlbnZpcm9ubWVudHMuIEl0IGhhcyBhIGdlbmVyYWwgcGFyc2luZyBtZXRob2QgZm9yXG4gKiBlbnZpcm9ubWVudHMsIGkuZS4sIG9uZSB0aGF0IGRlYWxzIHdpdGggYmVnaW4vZW5kLCBhbmQgZWFjaCBlbnZpcm9ubWVudCBoYXNcbiAqIGl0cyBvd24gcGFyc2luZyBtZXRob2QgcmV0dXJuaW5nIHRoZSBjb250ZW50LlxuICpcbiAqIEBjb25zdHJ1Y3RvclxuICogQGV4dGVuZHMge01hY3JvTWFwfVxuICovXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRNYXAgZXh0ZW5kcyBNYWNyb01hcCB7XG5cbiAgLyoqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBtYXBwaW5nLlxuICAgKiBAcGFyYW0ge1BhcnNlTWV0aG9kfSBwYXJzZXIgVGhlIHBhcnNlciBmb3IgdGhlIGVudmlyb25tZW50cy5cbiAgICogQHBhcmFtIHtKU09OfSBqc29uIFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtYWNybyBtYXAuXG4gICAqIEBwYXJhbSB7UmVjb3JkPHN0cmluZywgUGFyc2VNZXRob2Q+fSBmdW5jdGlvbk1hcCBDb2xsZWN0aW9uIG9mIHBhcnNlXG4gICAqICAgICBmdW5jdGlvbnMgZm9yIHRoZSBzaW5nbGUgbWFjcm9zLlxuICAgKi9cbiAgY29uc3RydWN0b3IobmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICBwYXJzZXI6IFBhcnNlTWV0aG9kLFxuICAgICAgICAgICAgICBqc29uOiB7W2luZGV4OiBzdHJpbmddOiBzdHJpbmcgfCBBcmdzW119LFxuICAgICAgICAgICAgICBmdW5jdGlvbk1hcDogUmVjb3JkPHN0cmluZywgUGFyc2VNZXRob2Q+KSB7XG4gICAgc3VwZXIobmFtZSwganNvbiwgZnVuY3Rpb25NYXApO1xuICAgIHRoaXMucGFyc2VyID0gcGFyc2VyO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcGFyc2UoW2Vudiwgc3ltYm9sXTogUGFyc2VJbnB1dCkge1xuICAgIGxldCBtYWNybyA9IHRoaXMubG9va3VwKHN5bWJvbCk7XG4gICAgbGV0IGVudlBhcnNlciA9IHRoaXMucGFyc2VyRm9yKHN5bWJvbCk7XG4gICAgaWYgKCFtYWNybyB8fCAhZW52UGFyc2VyKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlUmVzdWx0KHRoaXMucGFyc2VyKGVudiwgbWFjcm8uc3ltYm9sLCBlbnZQYXJzZXIsIG1hY3JvLmFyZ3MpKTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDA5LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBTdGFjayBpdGVtcyBmb3IgYmFzaWMgVGV4IHBhcnNpbmcuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuXG5pbXBvcnQge01hcEhhbmRsZXJ9IGZyb20gJy4uL01hcEhhbmRsZXIuanMnO1xuaW1wb3J0IHtDaGFyYWN0ZXJNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQge2VudGl0aWVzfSBmcm9tICcuLi8uLi8uLi91dGlsL0VudGl0aWVzLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgVGV4dE5vZGUsIFRFWENMQVNTfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQge01tbE1zdWJzdXB9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tc3Vic3VwLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5pbXBvcnQgTm9kZVV0aWwgZnJvbSAnLi4vTm9kZVV0aWwuanMnO1xuaW1wb3J0IHtQcm9wZXJ0eX0gZnJvbSAnLi4vLi4vLi4vY29yZS9UcmVlL05vZGUuanMnO1xuaW1wb3J0IFN0YWNrSXRlbUZhY3RvcnkgZnJvbSAnLi4vU3RhY2tJdGVtRmFjdG9yeS5qcyc7XG5pbXBvcnQge0NoZWNrVHlwZSwgQmFzZUl0ZW0sIFN0YWNrSXRlbSwgRW52TGlzdH0gZnJvbSAnLi4vU3RhY2tJdGVtLmpzJztcblxuXG4vKipcbiAqIEluaXRpYWwgaXRlbSBvbiB0aGUgc3RhY2suIEl0J3MgcHVzaGVkIHdoZW4gcGFyc2luZyBiZWdpbnMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGFydEl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZmFjdG9yeTogU3RhY2tJdGVtRmFjdG9yeSwgcHVibGljIGdsb2JhbDogRW52TGlzdCkge1xuICAgIHN1cGVyKGZhY3RvcnkpO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdzdGFydCc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBpc09wZW4oKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY2hlY2tJdGVtKGl0ZW06IFN0YWNrSXRlbSk6IENoZWNrVHlwZSB7XG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdzdG9wJykpIHtcbiAgICAgIGxldCBub2RlID0gdGhpcy50b01tbCgpO1xuICAgICAgaWYgKCF0aGlzLmdsb2JhbC5pc0lubmVyKSB7XG4gICAgICAgIG5vZGUgPSB0aGlzLmZhY3RvcnkuY29uZmlndXJhdGlvbi50YWdzLmZpbmFsaXplKG5vZGUsIHRoaXMuZW52KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbW3RoaXMuZmFjdG9yeS5jcmVhdGUoJ21tbCcsIG5vZGUpXSwgdHJ1ZV07XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5jaGVja0l0ZW0oaXRlbSk7XG4gIH1cblxufVxuXG5cbi8qKlxuICogRmluYWwgaXRlbSBvbiB0aGUgc3RhY2suIEVycm9ycyB3aWxsIGJlIHRocm93biBpZiBvdGhlciBpdGVtcyB0aGFuIHRoZSBzdGFydFxuICogaXRlbSBhcmUgc3RpbGwgb24gdGhlIHN0YWNrLlxuICovXG5leHBvcnQgY2xhc3MgU3RvcEl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnc3RvcCc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBpc0Nsb3NlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbn1cblxuXG4vKipcbiAqIEl0ZW0gaW5kaWNhdGluZyBhbiBvcGVuIGJyYWNlLlxuICovXG5leHBvcnQgY2xhc3MgT3Blbkl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGVycm9ycyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCYXNlSXRlbS5lcnJvcnMpLCB7XG4gICAgLy8gQHRlc3QgRXh0cmFPcGVuTWlzc2luZ0Nsb3NlXG4gICAgJ3N0b3AnOiBbJ0V4dHJhT3Blbk1pc3NpbmdDbG9zZScsXG4gICAgICAgICAgICAgJ0V4dHJhIG9wZW4gYnJhY2Ugb3IgbWlzc2luZyBjbG9zZSBicmFjZSddXG4gIH0pO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ29wZW4nO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQgaXNPcGVuKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIGlmIChpdGVtLmlzS2luZCgnY2xvc2UnKSkge1xuICAgICAgLy8gQHRlc3QgUHJpbWVTdXBcbiAgICAgIGxldCBtbWwgPSB0aGlzLnRvTW1sKCk7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFttbWxdKTtcbiAgICAgIHJldHVybiBbW3RoaXMuZmFjdG9yeS5jcmVhdGUoJ21tbCcsIG5vZGUpXSwgdHJ1ZV07XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5jaGVja0l0ZW0oaXRlbSk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEl0ZW0gaW5kaWNhdGluZyBhIGNsb3NlIGJyYWNlLiBDb2xsYXBzZXMgc3RhY2sgdW50aWwgYW4gT3Blbkl0ZW0gaXMgZm91bmQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG9zZUl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnY2xvc2UnO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQgaXNDbG9zZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBJdGVtIGluZGljYXRpbmcgYW4gd2UgYXJlIGN1cnJlbnRseSBkZWFsaW5nIHdpdGggYSBwcmltZSBtYXJrLlxuICovXG5leHBvcnQgY2xhc3MgUHJpbWVJdGVtIGV4dGVuZHMgQmFzZUl0ZW0ge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ3ByaW1lJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGVja0l0ZW0oaXRlbTogU3RhY2tJdGVtKTogQ2hlY2tUeXBlIHtcbiAgICBsZXQgW3RvcDAsIHRvcDFdID0gdGhpcy5QZWVrKDIpO1xuICAgIGlmICghTm9kZVV0aWwuaXNUeXBlKHRvcDAsICdtc3Vic3VwJykgfHwgTm9kZVV0aWwuaXNUeXBlKHRvcDAsICdtc3VwJykpIHtcbiAgICAgIC8vIEB0ZXN0IFByaW1lLCBEb3VibGUgUHJpbWVcbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLmNyZWF0ZSgnbm9kZScsICdtc3VwJywgW3RvcDAsIHRvcDFdKTtcbiAgICAgIHJldHVybiBbW25vZGUsIGl0ZW1dLCB0cnVlXTtcbiAgICB9XG4gICAgTm9kZVV0aWwuc2V0Q2hpbGQodG9wMCwgKHRvcDAgYXMgTW1sTXN1YnN1cCkuc3VwLCB0b3AxKTtcbiAgICByZXR1cm4gW1t0b3AwLCBpdGVtXSwgdHJ1ZV07XG4gIH1cbn1cblxuXG4vKipcbiAqIEl0ZW0gaW5kaWNhdGluZyBhbiB3ZSBhcmUgY3VycmVudGx5IGRlYWxpbmcgd2l0aCBhIHN1Yi9zdXBlcnNjcmlwdFxuICogZXhwcmVzc2lvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFN1YnN1cEl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBlcnJvcnMgPSBPYmplY3QuYXNzaWduKE9iamVjdC5jcmVhdGUoQmFzZUl0ZW0uZXJyb3JzKSwge1xuICAgIC8vIEB0ZXN0IE1pc3NpbmdTY3JpcHQgU3ViLCBNaXNzaW5nU2NyaXB0IFN1cFxuICAgICdzdG9wJzogWydNaXNzaW5nU2NyaXB0JyxcbiAgICAgICAgICAgICAnTWlzc2luZyBzdXBlcnNjcmlwdCBvciBzdWJzY3JpcHQgYXJndW1lbnQnXSxcbiAgICAvLyBAdGVzdCBNaXNzaW5nT3BlbkZvclN1cFxuICAgICdzdXAnOiBbJ01pc3NpbmdPcGVuRm9yU3VwJyxcbiAgICAgICAgICAgICdNaXNzaW5nIG9wZW4gYnJhY2UgZm9yIHN1cGVyc2NyaXB0J10sXG4gICAgLy8gQHRlc3QgTWlzc2luZ09wZW5Gb3JTdWJcbiAgICAnc3ViJzogWydNaXNzaW5nT3BlbkZvclN1YicsXG4gICAgICAgICAgICAnTWlzc2luZyBvcGVuIGJyYWNlIGZvciBzdWJzY3JpcHQnXVxuICB9KTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdzdWJzdXAnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUgfCBudWxsIHtcbiAgICBpZiAoaXRlbS5pc0tpbmQoJ29wZW4nKSB8fCBpdGVtLmlzS2luZCgnbGVmdCcpKSB7XG4gICAgICByZXR1cm4gQmFzZUl0ZW0uc3VjY2VzcztcbiAgICB9XG4gICAgY29uc3QgdG9wID0gdGhpcy5GaXJzdDtcbiAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuZ2V0UHJvcGVydHkoJ3Bvc2l0aW9uJykgYXMgbnVtYmVyO1xuICAgIGlmIChpdGVtLmlzS2luZCgnbW1sJykpIHtcbiAgICAgIGlmICh0aGlzLmdldFByb3BlcnR5KCdwcmltZXMnKSkge1xuICAgICAgICBpZiAocG9zaXRpb24gIT09IDIpIHtcbiAgICAgICAgICAvLyBAdGVzdCBQcmltZSBvbiBTdWJcbiAgICAgICAgICBOb2RlVXRpbC5zZXRDaGlsZCh0b3AsIDIsIHRoaXMuZ2V0UHJvcGVydHkoJ3ByaW1lcycpIGFzIE1tbE5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEB0ZXN0IFByaW1lIG9uIFByaW1lXG4gICAgICAgICAgTm9kZVV0aWwuc2V0UHJvcGVydHkodGhpcy5nZXRQcm9wZXJ0eSgncHJpbWVzJykgYXMgTW1sTm9kZSwgJ3ZhcmlhbnRGb3JtJywgdHJ1ZSk7XG4gICAgICAgICAgY29uc3Qgbm9kZSA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ21yb3cnLCBbdGhpcy5nZXRQcm9wZXJ0eSgncHJpbWVzJykgYXMgTW1sTm9kZSwgaXRlbS5GaXJzdF0pO1xuICAgICAgICAgIGl0ZW0uRmlyc3QgPSBub2RlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBOb2RlVXRpbC5zZXRDaGlsZCh0b3AsIHBvc2l0aW9uLCBpdGVtLkZpcnN0KTtcbiAgICAgIGlmICh0aGlzLmdldFByb3BlcnR5KCdtb3Zlc3Vwc3ViJykgIT0gbnVsbCkge1xuICAgICAgICAvLyBAdGVzdCBMaW1pdHMgU3Vic3VwIChjdXJyZW50bHkgZG9lcyBub3Qgd29yayEgQ2hlY2sgYWdhaW4hKVxuICAgICAgICBOb2RlVXRpbC5zZXRQcm9wZXJ0eSh0b3AsICdtb3Zlc3Vwc3ViJywgdGhpcy5nZXRQcm9wZXJ0eSgnbW92ZXN1cHN1YicpIGFzIFByb3BlcnR5KTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZmFjdG9yeS5jcmVhdGUoJ21tbCcsIHRvcCk7XG4gICAgICByZXR1cm4gW1tyZXN1bHRdLCB0cnVlXTtcbiAgICB9XG4gICAgaWYgKHN1cGVyLmNoZWNrSXRlbShpdGVtKVsxXSkge1xuICAgICAgLy8gQHRlc3QgQnJhY2UgU3VwZXJzY3JpcHQgRXJyb3IsIE1pc3NpbmdPcGVuRm9yU3VwLCBNaXNzaW5nT3BlbkZvclN1YlxuICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLmdldEVycm9ycyhbJycsICdzdWInLCAnc3VwJ11bcG9zaXRpb25dKTtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcihlcnJvclswXSwgZXJyb3JbMV0sIC4uLmVycm9yLnNwbGljZSgyKSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbn1cblxuXG4vKipcbiAqIEl0ZW0gaW5kaWNhdGluZyBhbiB3ZSBhcmUgY3VycmVudGx5IGRlYWxpbmcgd2l0aCBhbiBcXFxcb3ZlciBjb21tYW5kLlxuICovXG5leHBvcnQgY2xhc3MgT3Zlckl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZmFjdG9yeTogU3RhY2tJdGVtRmFjdG9yeSkge1xuICAgIHN1cGVyKGZhY3RvcnkpO1xuICAgIHRoaXMuc2V0UHJvcGVydHkoJ25hbWUnLCAnXFxcXG92ZXInKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ292ZXInO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQgaXNDbG9zZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIGlmIChpdGVtLmlzS2luZCgnb3ZlcicpKSB7XG4gICAgICAvLyBAdGVzdCBEb3VibGUgT3ZlclxuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKFxuICAgICAgICAnQW1iaWd1b3VzVXNlT2YnLCAnQW1iaWd1b3VzIHVzZSBvZiAlMScsIGl0ZW0uZ2V0TmFtZSgpKTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uaXNDbG9zZSkge1xuICAgICAgLy8gQHRlc3QgT3ZlclxuICAgICAgbGV0IG1tbCA9IHRoaXMuY3JlYXRlKCdub2RlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWZyYWMnLCBbdGhpcy5nZXRQcm9wZXJ0eSgnbnVtJykgYXMgTW1sTm9kZSwgdGhpcy50b01tbChmYWxzZSldKTtcbiAgICAgIGlmICh0aGlzLmdldFByb3BlcnR5KCd0aGlja25lc3MnKSAhPSBudWxsKSB7XG4gICAgICAgIC8vIEB0ZXN0IENob29zZSwgQWJvdmUsIEFib3ZlIHdpdGggRGVsaW1zXG4gICAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbWwsICdsaW5ldGhpY2tuZXNzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UHJvcGVydHkoJ3RoaWNrbmVzcycpIGFzIHN0cmluZyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5nZXRQcm9wZXJ0eSgnb3BlbicpIHx8IHRoaXMuZ2V0UHJvcGVydHkoJ2Nsb3NlJykpIHtcbiAgICAgICAgLy8gQHRlc3QgQ2hvb3NlXG4gICAgICAgIE5vZGVVdGlsLnNldFByb3BlcnR5KG1tbCwgJ3dpdGhEZWxpbXMnLCB0cnVlKTtcbiAgICAgICAgbW1sID0gUGFyc2VVdGlsLmZpeGVkRmVuY2UodGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UHJvcGVydHkoJ29wZW4nKSBhcyBzdHJpbmcsIG1tbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQcm9wZXJ0eSgnY2xvc2UnKSBhcyBzdHJpbmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtbdGhpcy5mYWN0b3J5LmNyZWF0ZSgnbW1sJywgbW1sKSwgaXRlbV0sIHRydWVdO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuY2hlY2tJdGVtKGl0ZW0pO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuICdvdmVyWycgKyB0aGlzLmdldFByb3BlcnR5KCdudW0nKSArXG4gICAgICAnIC8gJyArIHRoaXMubm9kZXMuam9pbignOyAnKSArICddJztcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBJdGVtIHB1c2hlZCB3aGVuIGEgXFxcXGxlZnQgb3BlbmluZyBkZWxpbWl0ZXIgaGFzIGJlZW4gZm91bmQuXG4gKi9cbmV4cG9ydCBjbGFzcyBMZWZ0SXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGVycm9ycyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCYXNlSXRlbS5lcnJvcnMpLCB7XG4gICAgLy8gQHRlc3QgRXh0cmFMZWZ0TWlzc2luZ1JpZ2h0XG4gICAgJ3N0b3AnOiBbJ0V4dHJhTGVmdE1pc3NpbmdSaWdodCcsXG4gICAgICAgICAgICAgJ0V4dHJhIFxcXFxsZWZ0IG9yIG1pc3NpbmcgXFxcXHJpZ2h0J11cbiAgfSk7XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBTdGFja0l0ZW1GYWN0b3J5LCBkZWxpbTogc3RyaW5nKSB7XG4gICAgc3VwZXIoZmFjdG9yeSk7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eSgnZGVsaW0nLCBkZWxpbSk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdsZWZ0JztcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGlzT3BlbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIC8vIEB0ZXN0IE1pc3NpbmcgUmlnaHRcbiAgICBpZiAoaXRlbS5pc0tpbmQoJ3JpZ2h0JykpIHtcbiAgICAgIC8vXG4gICAgICAvLyAgQ3JlYXRlIHRoZSBmZW5jZWQgc3RydWN0dXJlIGFzIGFuIG1yb3dcbiAgICAgIC8vXG4gICAgICByZXR1cm4gW1t0aGlzLmZhY3RvcnkuY3JlYXRlKCdtbWwnLCBQYXJzZVV0aWwuZmVuY2VkKFxuICAgICAgICB0aGlzLmZhY3RvcnkuY29uZmlndXJhdGlvbixcbiAgICAgICAgdGhpcy5nZXRQcm9wZXJ0eSgnZGVsaW0nKSBhcyBzdHJpbmcsIHRoaXMudG9NbWwoKSxcbiAgICAgICAgaXRlbS5nZXRQcm9wZXJ0eSgnZGVsaW0nKSBhcyBzdHJpbmcsICcnLCBpdGVtLmdldFByb3BlcnR5KCdjb2xvcicpIGFzIHN0cmluZykpXSwgdHJ1ZV07XG4gICAgfVxuICAgIGlmIChpdGVtLmlzS2luZCgnbWlkZGxlJykpIHtcbiAgICAgIC8vXG4gICAgICAvLyAgQWRkIHRoZSBtaWRkbGUgZGVsaW1pdGVyLCB3aXRoIGVtcHR5IG9wZW4gYW5kIGNsb3NlIGVsZW1lbnRzIGFyb3VuZCBpdCBmb3Igc3BhY2luZ1xuICAgICAgLy9cbiAgICAgIGNvbnN0IGRlZiA9IHtzdHJldGNoeTogdHJ1ZX0gYXMgYW55O1xuICAgICAgaWYgKGl0ZW0uZ2V0UHJvcGVydHkoJ2NvbG9yJykpIHtcbiAgICAgICAgZGVmLm1hdGhjb2xvciA9IGl0ZW0uZ2V0UHJvcGVydHkoJ2NvbG9yJyk7XG4gICAgICB9XG4gICAgICB0aGlzLlB1c2goXG4gICAgICAgIHRoaXMuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbXSwge3RleENsYXNzOiBURVhDTEFTUy5DTE9TRX0pLFxuICAgICAgICB0aGlzLmNyZWF0ZSgndG9rZW4nLCAnbW8nLCBkZWYsIGl0ZW0uZ2V0UHJvcGVydHkoJ2RlbGltJykpLFxuICAgICAgICB0aGlzLmNyZWF0ZSgnbm9kZScsICdUZVhBdG9tJywgW10sIHt0ZXhDbGFzczogVEVYQ0xBU1MuT1BFTn0pXG4gICAgICApO1xuICAgICAgdGhpcy5lbnYgPSB7fTsgICAgICAgICAvLyBTaW5jZSBcXG1pZGRsZSBjbG9zZXMgdGhlIGdyb3VwLCBjbGVhciB0aGUgZW52aXJvbm1lbnRcbiAgICAgIHJldHVybiBbW3RoaXNdLCB0cnVlXTsgLy8gdGhpcyB3aWxsIHJlc2V0IHRoZSBlbnZpcm9ubWVudCB0byBpdHMgaW5pdGlhbCBzdGF0ZVxuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuY2hlY2tJdGVtKGl0ZW0pO1xuICB9XG5cbn1cblxuLyoqXG4gKiBJdGVtIHB1c2hlZCB3aGVuIGEgXFxcXG1pZGRsZSBkZWxpbWl0ZXIgaGFzIGJlZW4gZm91bmQuIFN0YWNrIGlzXG4gKiBjb2xsYXBzZWQgdW50aWwgYSBjb3JyZXNwb25kaW5nIExlZnRJdGVtIGlzIGVuY291bnRlcmVkLlxuICovXG5leHBvcnQgY2xhc3MgTWlkZGxlIGV4dGVuZHMgQmFzZUl0ZW0ge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGZhY3Rvcnk6IFN0YWNrSXRlbUZhY3RvcnksIGRlbGltOiBzdHJpbmcsIGNvbG9yOiBzdHJpbmcpIHtcbiAgICBzdXBlcihmYWN0b3J5KTtcbiAgICB0aGlzLnNldFByb3BlcnR5KCdkZWxpbScsIGRlbGltKTtcbiAgICBjb2xvciAmJiB0aGlzLnNldFByb3BlcnR5KCdjb2xvcicsIGNvbG9yKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21pZGRsZSc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBpc0Nsb3NlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbn1cblxuLyoqXG4gKiBJdGVtIHB1c2hlZCB3aGVuIGEgXFxcXHJpZ2h0IGNsb3NpbmcgZGVsaW1pdGVyIGhhcyBiZWVuIGZvdW5kLiBTdGFjayBpc1xuICogY29sbGFwc2VkIHVudGlsIGEgY29ycmVzcG9uZGluZyBMZWZ0SXRlbSBpcyBlbmNvdW50ZXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJpZ2h0SXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBTdGFja0l0ZW1GYWN0b3J5LCBkZWxpbTogc3RyaW5nLCBjb2xvcjogc3RyaW5nKSB7XG4gICAgc3VwZXIoZmFjdG9yeSk7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eSgnZGVsaW0nLCBkZWxpbSk7XG4gICAgY29sb3IgJiYgdGhpcy5zZXRQcm9wZXJ0eSgnY29sb3InLCBjb2xvcik7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdyaWdodCc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBpc0Nsb3NlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbn1cblxuXG4vKipcbiAqIEl0ZW0gcHVzaGVkIGZvciBvcGVuaW5nIGFuIGVudmlyb25tZW50IHdpdGggXFxcXGJlZ2lue2Vudn0uXG4gKi9cbmV4cG9ydCBjbGFzcyBCZWdpbkl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnYmVnaW4nO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQgaXNPcGVuKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIGlmIChpdGVtLmlzS2luZCgnZW5kJykpIHtcbiAgICAgIGlmIChpdGVtLmdldE5hbWUoKSAhPT0gdGhpcy5nZXROYW1lKCkpIHtcbiAgICAgICAgLy8gQHRlc3QgRW52QmFkRW5kXG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRW52QmFkRW5kJywgJ1xcXFxiZWdpbnslMX0gZW5kZWQgd2l0aCBcXFxcZW5keyUyfScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE5hbWUoKSwgaXRlbS5nZXROYW1lKCkpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmdldFByb3BlcnR5KCdlbmQnKSkge1xuICAgICAgICAvLyBAdGVzdCBIZmlsbFxuICAgICAgICByZXR1cm4gW1t0aGlzLmZhY3RvcnkuY3JlYXRlKCdtbWwnLCB0aGlzLnRvTW1sKCkpXSwgdHJ1ZV07XG4gICAgICB9XG4gICAgICByZXR1cm4gQmFzZUl0ZW0uZmFpbDsgIC8vIFRPRE86IFRoaXMgY2FzZSBjb3VsZCBwcm9iYWJseSBnbyFcbiAgICB9XG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdzdG9wJykpIHtcbiAgICAgIC8vIEB0ZXN0IEVudk1pc3NpbmdFbmQgQXJyYXlcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRW52TWlzc2luZ0VuZCcsICdNaXNzaW5nIFxcXFxlbmR7JTF9JywgdGhpcy5nZXROYW1lKCkpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuY2hlY2tJdGVtKGl0ZW0pO1xuICB9XG5cbn1cblxuXG4vKipcbiAqIEl0ZW0gcHVzaGVkIGZvciBjbG9zaW5nIGFuIGVudmlyb25tZW50IHdpdGggXFxcXGVuZHtlbnZ9LiBTdGFjayBpcyBjb2xsYXBzZWRcbiAqIHVudGlsIGEgY29ycmVzcG9uZGluZyBCZWdpbkl0ZW0gZm9yICdlbnYnIGlzIGZvdW5kLiBFcnJvciBpcyB0aHJvd24gaW4gY2FzZVxuICogb3RoZXIgb3BlbiBlbnZpcm9ubWVudHMgaW50ZXJmZXJlLlxuICovXG5leHBvcnQgY2xhc3MgRW5kSXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdlbmQnO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQgaXNDbG9zZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBJdGVtIHB1c2hlZCBmb3IgcmVtZW1iZXJpbmcgc3R5bGluZyBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0eWxlSXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdzdHlsZSc7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY2hlY2tJdGVtKGl0ZW06IFN0YWNrSXRlbSk6IENoZWNrVHlwZSB7XG4gICAgaWYgKCFpdGVtLmlzQ2xvc2UpIHtcbiAgICAgIHJldHVybiBzdXBlci5jaGVja0l0ZW0oaXRlbSk7XG4gICAgfVxuICAgIC8vIEB0ZXN0IFN0eWxlXG4gICAgY29uc3QgbW1sID0gdGhpcy5jcmVhdGUoJ25vZGUnLCAnbXN0eWxlJywgdGhpcy5ub2RlcywgdGhpcy5nZXRQcm9wZXJ0eSgnc3R5bGVzJykpO1xuICAgIHJldHVybiBbW3RoaXMuZmFjdG9yeS5jcmVhdGUoJ21tbCcsIG1tbCksIGl0ZW1dLCB0cnVlXTtcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBJdGVtIHB1c2hlZCBmb3IgcmVtZW1iZXJpbmcgcG9zaXRpb25pbmcgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBQb3NpdGlvbkl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAncG9zaXRpb24nO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY2hlY2tJdGVtKGl0ZW06IFN0YWNrSXRlbSk6IENoZWNrVHlwZSB7XG4gICAgaWYgKGl0ZW0uaXNDbG9zZSkge1xuICAgICAgLy8gQHRlc3QgTWlzc2luZ0JveEZvclxuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nQm94Rm9yJywgJ01pc3NpbmcgYm94IGZvciAlMScsIHRoaXMuZ2V0TmFtZSgpKTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uaXNGaW5hbCkge1xuICAgICAgbGV0IG1tbCA9IGl0ZW0udG9NbWwoKTtcbiAgICAgIHN3aXRjaCAodGhpcy5nZXRQcm9wZXJ0eSgnbW92ZScpKSB7XG4gICAgICBjYXNlICd2ZXJ0aWNhbCc6XG4gICAgICAgIC8vIEB0ZXN0IFJhaXNlLCBMb3dlciwgUmFpc2UgTmVnYXRpdmUsIExvd2VyIE5lZ2F0aXZlXG4gICAgICAgIG1tbCA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbbW1sXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAge2hlaWdodDogdGhpcy5nZXRQcm9wZXJ0eSgnZGgnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHRoOiB0aGlzLmdldFByb3BlcnR5KCdkZCcpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9mZnNldDogdGhpcy5nZXRQcm9wZXJ0eSgnZGgnKX0pO1xuICAgICAgICByZXR1cm4gW1t0aGlzLmZhY3RvcnkuY3JlYXRlKCdtbWwnLCBtbWwpXSwgdHJ1ZV07XG4gICAgICBjYXNlICdob3Jpem9udGFsJzpcbiAgICAgICAgLy8gQHRlc3QgTW92ZSBMZWZ0LCBNb3ZlIFJpZ2h0LCBNb3ZlIExlZnQgTmVnYXRpdmUsIE1vdmUgUmlnaHQgTmVnYXRpdmVcbiAgICAgICAgcmV0dXJuIFtbdGhpcy5mYWN0b3J5LmNyZWF0ZSgnbW1sJywgdGhpcy5nZXRQcm9wZXJ0eSgnbGVmdCcpIGFzIE1tbE5vZGUpLCBpdGVtLFxuICAgICAgICAgICAgICAgICB0aGlzLmZhY3RvcnkuY3JlYXRlKCdtbWwnLCB0aGlzLmdldFByb3BlcnR5KCdyaWdodCcpIGFzIE1tbE5vZGUpXSwgdHJ1ZV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5jaGVja0l0ZW0oaXRlbSk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEl0ZW0gaW5kaWNhdGluZyBhIHRhYmxlIGNlbGwuXG4gKi9cbmV4cG9ydCBjbGFzcyBDZWxsSXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdjZWxsJztcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGlzQ2xvc2UoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuXG4vKipcbiAqIEZpbmFsIGl0ZW0gZm9yIGNvbGxhdGluZyBOb2Rlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIE1tbEl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBpc0ZpbmFsKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbW1sJztcbiAgfVxuXG59XG5cblxuLyoqXG4gKiBJdGVtIGluZGljYXRpbmcgYSBuYW1lZCBmdW5jdGlvbiBvcGVyYXRvciAoZS5nLiwgXFxcXHNpbikgYXMgYmVlbiBlbmNvdW50ZXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIEZuSXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdmbic7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY2hlY2tJdGVtKGl0ZW06IFN0YWNrSXRlbSk6IENoZWNrVHlwZSB7XG4gICAgY29uc3QgdG9wID0gdGhpcy5GaXJzdDtcbiAgICBpZiAodG9wKSB7XG4gICAgICBpZiAoaXRlbS5pc09wZW4pIHtcbiAgICAgICAgLy8gQHRlc3QgRm4gU3RyZXRjaHlcbiAgICAgICAgcmV0dXJuIEJhc2VJdGVtLnN1Y2Nlc3M7XG4gICAgICB9XG4gICAgICBpZiAoIWl0ZW0uaXNLaW5kKCdmbicpKSB7XG4gICAgICAgIC8vIEB0ZXN0IE5hbWVkIEZ1bmN0aW9uXG4gICAgICAgIGxldCBtbWwgPSBpdGVtLkZpcnN0O1xuICAgICAgICBpZiAoIWl0ZW0uaXNLaW5kKCdtbWwnKSB8fCAhbW1sKSB7XG4gICAgICAgICAgLy8gQHRlc3QgTWF0aG9wIFN1cGVyXG4gICAgICAgICAgcmV0dXJuIFtbdG9wLCBpdGVtXSwgdHJ1ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChOb2RlVXRpbC5pc1R5cGUobW1sLCAnbXN0eWxlJykgJiYgbW1sLmNoaWxkTm9kZXMubGVuZ3RoICYmXG4gICAgICAgICAgICAgTm9kZVV0aWwuaXNUeXBlKG1tbC5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF0gYXMgTW1sTm9kZSwgJ21zcGFjZScpKSB8fFxuICAgICAgICAgICAgIE5vZGVVdGlsLmlzVHlwZShtbWwsICdtc3BhY2UnKSkge1xuICAgICAgICAgIC8vIEB0ZXN0IEZuIFBvcyBTcGFjZSwgRm4gTmVnIFNwYWNlXG4gICAgICAgICAgcmV0dXJuIFtbdG9wLCBpdGVtXSwgdHJ1ZV07XG4gICAgICAgIH1cbiAgICAgICAgaWYgKE5vZGVVdGlsLmlzRW1iZWxsaXNoZWQobW1sKSkge1xuICAgICAgICAgIC8vIEB0ZXN0IE11bHRpSW50IHdpdGggTGltaXRzXG4gICAgICAgICAgbW1sID0gTm9kZVV0aWwuZ2V0Q29yZU1PKG1tbCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybSA9IE5vZGVVdGlsLmdldEZvcm0obW1sKTtcbiAgICAgICAgaWYgKGZvcm0gIT0gbnVsbCAmJiBbMCwgMCwgMSwgMSwgMCwgMSwgMSwgMCwgMCwgMF1bZm9ybVsyXV0pIHtcbiAgICAgICAgICAvLyBAdGVzdCBGbiBPcGVyYXRvclxuICAgICAgICAgIHJldHVybiBbW3RvcCwgaXRlbV0sIHRydWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBAdGVzdCBOYW1lZCBGdW5jdGlvbiwgTmFtZWQgRnVuY3Rpb24gQXJnXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5jcmVhdGUoJ3Rva2VuJywgJ21vJywge3RleENsYXNzOiBURVhDTEFTUy5OT05FfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdGllcy5BcHBseUZ1bmN0aW9uKTtcbiAgICAgIHJldHVybiBbW3RvcCwgbm9kZSwgaXRlbV0sIHRydWVdO1xuICAgIH1cbiAgICAvLyBAdGVzdCBNYXRob3AgU3VwZXIsIE1hdGhvcCBTdWJcbiAgICByZXR1cm4gc3VwZXIuY2hlY2tJdGVtLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEl0ZW0gaW5kaWNhdGluZyBhIFxcXFxub3QgaGFzIGJlZW4gZW5jb3VudGVyZWQgYW5kIG5lZWRzIHRvIGJlIGFwcGxpZWQgdG8gdGhlXG4gKiBuZXh0IG9wZXJhdG9yLlxuICovXG5leHBvcnQgY2xhc3MgTm90SXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICBwcml2YXRlIHJlbWFwID0gTWFwSGFuZGxlci5nZXRNYXAoJ25vdF9yZW1hcCcpIGFzIENoYXJhY3Rlck1hcDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdub3QnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIGxldCBtbWw6IFRleHROb2RlIHwgTW1sTm9kZTtcbiAgICBsZXQgYzogc3RyaW5nO1xuICAgIGxldCB0ZXh0Tm9kZTogVGV4dE5vZGU7XG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdvcGVuJykgfHwgaXRlbS5pc0tpbmQoJ2xlZnQnKSkge1xuICAgICAgLy8gQHRlc3QgTmVnYXRpb24gTGVmdCBQYXJlblxuICAgICAgcmV0dXJuIEJhc2VJdGVtLnN1Y2Nlc3M7XG4gICAgfVxuICAgIGlmIChpdGVtLmlzS2luZCgnbW1sJykgJiZcbiAgICAgICAgKE5vZGVVdGlsLmlzVHlwZShpdGVtLkZpcnN0LCAnbW8nKSB8fCBOb2RlVXRpbC5pc1R5cGUoaXRlbS5GaXJzdCwgJ21pJykgfHxcbiAgICAgICAgIE5vZGVVdGlsLmlzVHlwZShpdGVtLkZpcnN0LCAnbXRleHQnKSkpIHtcbiAgICAgIG1tbCA9IGl0ZW0uRmlyc3Q7XG4gICAgICBjID0gTm9kZVV0aWwuZ2V0VGV4dChtbWwgYXMgVGV4dE5vZGUpO1xuICAgICAgaWYgKGMubGVuZ3RoID09PSAxICYmICFOb2RlVXRpbC5nZXRQcm9wZXJ0eShtbWwsICdtb3Zlc3Vwc3ViJykgJiZcbiAgICAgICAgICBOb2RlVXRpbC5nZXRDaGlsZHJlbihtbWwpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBpZiAodGhpcy5yZW1hcC5jb250YWlucyhjKSkge1xuICAgICAgICAgIC8vIEB0ZXN0IE5lZ2F0aW9uIFNpbXBsZSwgTmVnYXRpb24gQ29tcGxleFxuICAgICAgICAgIHRleHROb2RlID0gdGhpcy5jcmVhdGUoJ3RleHQnLCB0aGlzLnJlbWFwLmxvb2t1cChjKS5jaGFyKSBhcyBUZXh0Tm9kZTtcbiAgICAgICAgICBOb2RlVXRpbC5zZXRDaGlsZChtbWwsIDAsIHRleHROb2RlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdGVzdCBOZWdhdGlvbiBFeHBsaWNpdFxuICAgICAgICAgIHRleHROb2RlID0gdGhpcy5jcmVhdGUoJ3RleHQnLCAnXFx1MDMzOCcpIGFzIFRleHROb2RlO1xuICAgICAgICAgIE5vZGVVdGlsLmFwcGVuZENoaWxkcmVuKG1tbCwgW3RleHROb2RlXSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtbaXRlbV0sIHRydWVdO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBAdGVzdCBOZWdhdGlvbiBMYXJnZVxuICAgIHRleHROb2RlID0gdGhpcy5jcmVhdGUoJ3RleHQnLCAnXFx1MjlGOCcpIGFzIFRleHROb2RlO1xuICAgIGNvbnN0IG10ZXh0Tm9kZSA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ210ZXh0JywgW10sIHt9LCB0ZXh0Tm9kZSk7XG4gICAgY29uc3QgcGFkZGVkTm9kZSA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbbXRleHROb2RlXSwge3dpZHRoOiAwfSk7XG4gICAgbW1sID0gdGhpcy5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFtwYWRkZWROb2RlXSwge3RleENsYXNzOiBURVhDTEFTUy5SRUx9KTtcbiAgICByZXR1cm4gW1ttbWwsIGl0ZW1dLCB0cnVlXTtcbiAgfVxufVxuXG4vKipcbiAqIEEgU3RhY2tJdGVtIHRoYXQgcmVtb3ZlcyBhbiBtc3BhY2UgdGhhdCBmb2xsb3dzIGl0IChmb3IgXFxub25zY3JpcHQpLlxuICovXG5leHBvcnQgY2xhc3MgTm9uc2NyaXB0SXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdub25zY3JpcHQnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIC8vXG4gICAgLy8gIENoZWNrIGlmIHRoZSBuZXh0IGl0ZW0gaXMgYW4gbXNwYWNlIChvciBhbiBtc3BhY2UgaW4gYW4gbXN0eWxlKSBhbmQgcmVtb3ZlIGl0LlxuICAgIC8vXG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdtbWwnKSAmJiBpdGVtLlNpemUoKSA9PT0gMSkge1xuICAgICAgbGV0IG1tbCA9IGl0ZW0uRmlyc3Q7XG4gICAgICAvL1xuICAgICAgLy8gIFNwYWNlIG1hY3JvcyBsaWtlIFxcLCBhcmUgd3JhcHBlZCB3aXRoIGFuIG1zdHlsZSB0byBzZXQgc2NyaXB0bGV2ZWw9XCIwXCJcbiAgICAgIC8vICAgIChzbyBzaXplIGlzIGluZGVwZW5kZW50IG9mIGxldmVsKSwgd2UgbG9vayBhdCB0aGUgY29udGVudHMgb2YgdGhlIG1zdHlsZSBmb3IgdGhlIG1zcGFjZS5cbiAgICAgIC8vXG4gICAgICBpZiAobW1sLmlzS2luZCgnbXN0eWxlJykgJiYgbW1sLm5vdFBhcmVudCkge1xuICAgICAgICBtbWwgPSBOb2RlVXRpbC5nZXRDaGlsZHJlbihOb2RlVXRpbC5nZXRDaGlsZHJlbihtbWwpWzBdKVswXTtcbiAgICAgIH1cbiAgICAgIGlmIChtbWwuaXNLaW5kKCdtc3BhY2UnKSkge1xuICAgICAgICAvL1xuICAgICAgICAvLyAgSWYgdGhlIHNwYWNlIGlzIGluIGFuIG1zdHlsZSwgd3JhcCBpdCBpbiBhbiBtcm93IHNvIHdlIGNhbiB0ZXN0IGl0cyBzY3JpcHRsZXZlbFxuICAgICAgICAvLyAgICBpbiB0aGUgcG9zdC1maWx0ZXIgKHRoZSBtcm93IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZmlsdGVyKS4gIFdlIGNhbid0IHRlc3RcbiAgICAgICAgLy8gICAgdGhlIG1zdHlsZSdzIHNjcmlwdGxldmVsLCBzaW5jZSBpdCBpcyBlY3hwbGljaXRseSBzZXR0aW5nIGl0IHRvIDAuXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChtbWwgIT09IGl0ZW0uRmlyc3QpIHtcbiAgICAgICAgICBjb25zdCBtcm93ID0gdGhpcy5jcmVhdGUoJ25vZGUnLCAnbXJvdycsIFtpdGVtLlBvcCgpXSk7XG4gICAgICAgICAgaXRlbS5QdXNoKG1yb3cpO1xuICAgICAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vICBTYXZlIHRoZSBtc3BhY2UgZm9yIGxhdGVyIHBvc3QtcHJvY2Vzc2luZy5cbiAgICAgICAgLy9cbiAgICAgICAgdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24uYWRkTm9kZSgnbm9uc2NyaXB0JywgaXRlbS5GaXJzdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBbW2l0ZW1dLCB0cnVlXTtcbiAgfVxufVxuXG4vKipcbiAqIEl0ZW0gaW5kaWNhdGluZyBhIGRvdHMgY29tbWFuZCBoYXMgYmVlbiBlbmNvdW50ZXJlZC5cbiAqL1xuZXhwb3J0IGNsYXNzIERvdHNJdGVtIGV4dGVuZHMgQmFzZUl0ZW0ge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ2RvdHMnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIGlmIChpdGVtLmlzS2luZCgnb3BlbicpIHx8IGl0ZW0uaXNLaW5kKCdsZWZ0JykpIHtcbiAgICAgIHJldHVybiBCYXNlSXRlbS5zdWNjZXNzO1xuICAgIH1cbiAgICBsZXQgZG90cyA9IHRoaXMuZ2V0UHJvcGVydHkoJ2xkb3RzJykgYXMgTW1sTm9kZTtcbiAgICBsZXQgdG9wID0gaXRlbS5GaXJzdDtcbiAgICAvLyBAdGVzdCBPcGVyYXRvciBEb3RzXG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdtbWwnKSAmJiBOb2RlVXRpbC5pc0VtYmVsbGlzaGVkKHRvcCkpIHtcbiAgICAgIGNvbnN0IHRjbGFzcyA9IE5vZGVVdGlsLmdldFRleENsYXNzKE5vZGVVdGlsLmdldENvcmVNTyh0b3ApKTtcbiAgICAgIGlmICh0Y2xhc3MgPT09IFRFWENMQVNTLkJJTiB8fCB0Y2xhc3MgPT09IFRFWENMQVNTLlJFTCkge1xuICAgICAgICBkb3RzID0gdGhpcy5nZXRQcm9wZXJ0eSgnY2RvdHMnKSBhcyBNbWxOb2RlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gW1tkb3RzLCBpdGVtXSwgdHJ1ZV07XG4gIH1cbn1cblxuXG4vKipcbiAqIEl0ZW0gaW5kaWNhdGluZyBhbiBhcnJheSBpcyBhc3NlbWJsZWQuIEl0IGNvbGxhdGVzIGNlbGxzLCByb3dzIGFuZFxuICogaW5mb3JtYXRpb24gYWJvdXQgY29sdW1uL3JvdyBzZXBhcmF0b3IgYW5kIGZyYW1pbmcgbGluZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBBcnJheUl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWJsZSBhcyBhIGxpc3Qgb2Ygcm93cy5cbiAgICogQHR5cGUge01tbE5vZGVbXX1cbiAgICovXG4gIHB1YmxpYyB0YWJsZTogTW1sTm9kZVtdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBjdXJyZW50IHJvdyBhcyBhIGxpc3Qgb2YgY2VsbHMuXG4gICAqIEB0eXBlIHtNbWxOb2RlW119XG4gICAqL1xuICBwdWJsaWMgcm93OiBNbWxOb2RlW10gPSBbXTtcblxuICAvKipcbiAgICogRnJhbWUgc3BlY2lmaWNhdGlvbiBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy5cbiAgICogQHR5cGUge3N0cmluZ1tdfVxuICAgKi9cbiAgcHVibGljIGZyYW1lOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBIZmlsbCB2YWx1ZS5cbiAgICogQHR5cGUge251bWJlcltdfVxuICAgKi9cbiAgcHVibGljIGhmaWxsOiBudW1iZXJbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBQcm9wZXJ0aWVzIGZvciBzcGVjaWFsIGFycmF5IGRlZmluaXRpb25zLlxuICAgKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IHN0cmluZ3xudW1iZXJ8Ym9vbGVhbn19XG4gICAqL1xuICBwdWJsaWMgYXJyYXlkZWY6IHtba2V5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFufSA9IHt9O1xuXG4gIC8qKlxuICAgKiBUcnVlIGlmIHNlcGFyYXRvcnMgYXJlIGRhc2hlZC5cbiAgICogQHR5cGUge2Jvb2xlYW59XG4gICAqL1xuICBwdWJsaWMgZGFzaGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnYXJyYXknO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQgaXNPcGVuKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGNvcHlFbnYoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIC8vIEB0ZXN0IEFycmF5IFNpbmdsZVxuICAgIGlmIChpdGVtLmlzQ2xvc2UgJiYgIWl0ZW0uaXNLaW5kKCdvdmVyJykpIHtcbiAgICAgIC8vIEB0ZXN0IEFycmF5IFNpbmdsZVxuICAgICAgaWYgKGl0ZW0uZ2V0UHJvcGVydHkoJ2lzRW50cnknKSkge1xuICAgICAgICAvLyBAdGVzdCBBcnJheSBkYXNoZWQgY29sdW1uLCBBcnJheSBzb2xpZCBjb2x1bW5cbiAgICAgICAgdGhpcy5FbmRFbnRyeSgpO1xuICAgICAgICB0aGlzLmNsZWFyRW52KCk7XG4gICAgICAgIHJldHVybiBCYXNlSXRlbS5mYWlsO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW0uZ2V0UHJvcGVydHkoJ2lzQ1InKSkge1xuICAgICAgICAvLyBAdGVzdCBFbmNsb3NlZCBib3R0b21cbiAgICAgICAgdGhpcy5FbmRFbnRyeSgpO1xuICAgICAgICB0aGlzLkVuZFJvdygpO1xuICAgICAgICB0aGlzLmNsZWFyRW52KCk7XG4gICAgICAgIHJldHVybiBCYXNlSXRlbS5mYWlsO1xuICAgICAgfVxuICAgICAgdGhpcy5FbmRUYWJsZSgpO1xuICAgICAgdGhpcy5jbGVhckVudigpO1xuICAgICAgbGV0IG5ld0l0ZW0gPSB0aGlzLmZhY3RvcnkuY3JlYXRlKCdtbWwnLCB0aGlzLmNyZWF0ZU1tbCgpKTtcbiAgICAgIGlmICh0aGlzLmdldFByb3BlcnR5KCdyZXF1aXJlQ2xvc2UnKSkge1xuICAgICAgICAvLyBAdGVzdDogTGFiZWxcbiAgICAgICAgaWYgKGl0ZW0uaXNLaW5kKCdjbG9zZScpKSB7XG4gICAgICAgICAgLy8gQHRlc3Q6IExhYmVsXG4gICAgICAgICAgcmV0dXJuIFtbbmV3SXRlbV0sIHRydWVdO1xuICAgICAgICB9XG4gICAgICAgIC8vIEB0ZXN0IE1pc3NpbmdDbG9zZUJyYWNlMlxuICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ01pc3NpbmdDbG9zZUJyYWNlJywgJ01pc3NpbmcgY2xvc2UgYnJhY2UnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbW25ld0l0ZW0sIGl0ZW1dLCB0cnVlXTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmNoZWNrSXRlbShpdGVtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIE1hdGhNTCByZXByZXNlbnRhdGlvbiBvZiB0aGUgdGFibGUuXG4gICAqXG4gICAqIEByZXR1cm4ge01tbE5vZGV9XG4gICAqL1xuICBwdWJsaWMgY3JlYXRlTW1sKCk6IE1tbE5vZGUge1xuICAgIGNvbnN0IHNjcmlwdGxldmVsID0gdGhpcy5hcnJheWRlZlsnc2NyaXB0bGV2ZWwnXTtcbiAgICBkZWxldGUgdGhpcy5hcnJheWRlZlsnc2NyaXB0bGV2ZWwnXTtcbiAgICBsZXQgbW1sID0gdGhpcy5jcmVhdGUoJ25vZGUnLCAnbXRhYmxlJywgdGhpcy50YWJsZSwgdGhpcy5hcnJheWRlZik7XG4gICAgaWYgKHNjcmlwdGxldmVsKSB7XG4gICAgICBtbWwuc2V0UHJvcGVydHkoJ3NjcmlwdGxldmVsJywgc2NyaXB0bGV2ZWwpO1xuICAgIH1cbiAgICBpZiAodGhpcy5mcmFtZS5sZW5ndGggPT09IDQpIHtcbiAgICAgIC8vIEB0ZXN0IEVuY2xvc2VkIGZyYW1lIHNvbGlkLCBFbmNsb3NlZCBmcmFtZSBkYXNoZWRcbiAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbWwsICdmcmFtZScsIHRoaXMuZGFzaGVkID8gJ2Rhc2hlZCcgOiAnc29saWQnKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZnJhbWUubGVuZ3RoKSB7XG4gICAgICAvLyBAdGVzdCBFbmNsb3NlZCBsZWZ0IHJpZ2h0XG4gICAgICBpZiAodGhpcy5hcnJheWRlZlsncm93bGluZXMnXSkge1xuICAgICAgICAvLyBAdGVzdCBFbmNsb3NlZCBkYXNoZWQgcm93LCBFbmNsb3NlZCBzb2xpZCByb3csXG4gICAgICAgIHRoaXMuYXJyYXlkZWZbJ3Jvd2xpbmVzJ10gPVxuICAgICAgICAgICh0aGlzLmFycmF5ZGVmWydyb3dsaW5lcyddIGFzIHN0cmluZykucmVwbGFjZSgvbm9uZSggbm9uZSkrJC8sICdub25lJyk7XG4gICAgICB9XG4gICAgICAvLyBAdGVzdCBFbmNsb3NlZCBsZWZ0IHJpZ2h0XG4gICAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobW1sLCAnZnJhbWUnLCAnJyk7XG4gICAgICBtbWwgPSB0aGlzLmNyZWF0ZSgnbm9kZScsICdtZW5jbG9zZScsIFttbWxdLCB7bm90YXRpb246IHRoaXMuZnJhbWUuam9pbignICcpfSk7XG4gICAgICBpZiAoKHRoaXMuYXJyYXlkZWZbJ2NvbHVtbmxpbmVzJ10gfHwgJ25vbmUnKSAhPT0gJ25vbmUnIHx8XG4gICAgICAgICAgKHRoaXMuYXJyYXlkZWZbJ3Jvd2xpbmVzJ10gfHwgJ25vbmUnKSAhPT0gJ25vbmUnKSB7XG4gICAgICAgIC8vIEB0ZXN0IEVuY2xvc2VkIGRhc2hlZCByb3csIEVuY2xvc2VkIHNvbGlkIHJvd1xuICAgICAgICAvLyBAdGVzdCBFbmNsb3NlZCBkYXNoZWQgY29sdW1uLCBFbmNsb3NlZCBzb2xpZCBjb2x1bW5cbiAgICAgICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKG1tbCwgJ2RhdGEtcGFkZGluZycsIDApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5nZXRQcm9wZXJ0eSgnb3BlbicpIHx8IHRoaXMuZ2V0UHJvcGVydHkoJ2Nsb3NlJykpIHtcbiAgICAgIC8vIEB0ZXN0IENyb3NzIFByb2R1Y3QgRm9ybXVsYVxuICAgICAgbW1sID0gUGFyc2VVdGlsLmZlbmNlZCh0aGlzLmZhY3RvcnkuY29uZmlndXJhdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRQcm9wZXJ0eSgnb3BlbicpIGFzIHN0cmluZywgbW1sLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFByb3BlcnR5KCdjbG9zZScpIGFzIHN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiBtbWw7XG4gIH1cblxuICAvKipcbiAgICogRmluaXNoZXMgYSBzaW5nbGUgY2VsbCBvZiB0aGUgYXJyYXkuXG4gICAqL1xuICBwdWJsaWMgRW5kRW50cnkoKSB7XG4gICAgLy8gQHRlc3QgQXJyYXkxLCBBcnJheTJcbiAgICBjb25zdCBtdGQgPSB0aGlzLmNyZWF0ZSgnbm9kZScsICdtdGQnLCB0aGlzLm5vZGVzKTtcbiAgICBpZiAodGhpcy5oZmlsbC5sZW5ndGgpIHtcbiAgICAgIGlmICh0aGlzLmhmaWxsWzBdID09PSAwKSB7XG4gICAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtdGQsICdjb2x1bW5hbGlnbicsICdyaWdodCcpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaGZpbGxbdGhpcy5oZmlsbC5sZW5ndGggLSAxXSA9PT0gdGhpcy5TaXplKCkpIHtcbiAgICAgICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKFxuICAgICAgICAgIG10ZCwgJ2NvbHVtbmFsaWduJyxcbiAgICAgICAgICBOb2RlVXRpbC5nZXRBdHRyaWJ1dGUobXRkLCAnY29sdW1uYWxpZ24nKSA/ICdjZW50ZXInIDogJ2xlZnQnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yb3cucHVzaChtdGQpO1xuICAgIHRoaXMuQ2xlYXIoKTtcbiAgICB0aGlzLmhmaWxsID0gW107XG4gIH1cblxuXG4gIC8qKlxuICAgKiBGaW5pc2hlcyBhIHNpbmdsZSByb3cgb2YgdGhlIGFycmF5LlxuICAgKi9cbiAgcHVibGljIEVuZFJvdygpIHtcbiAgICBsZXQgbm9kZTogTW1sTm9kZTtcbiAgICBpZiAodGhpcy5nZXRQcm9wZXJ0eSgnaXNOdW1iZXJlZCcpICYmIHRoaXMucm93Lmxlbmd0aCA9PT0gMykge1xuICAgICAgLy8gQHRlc3QgTGFiZWwsIE1hdHJpeCBOdW1iZXJlZFxuICAgICAgdGhpcy5yb3cudW5zaGlmdCh0aGlzLnJvdy5wb3AoKSk7ICAvLyBtb3ZlIGVxdWF0aW9uIG51bWJlciB0byBmaXJzdFxuICAgICAgLy8gcG9zaXRpb25cbiAgICAgIG5vZGUgPSB0aGlzLmNyZWF0ZSgnbm9kZScsICdtbGFiZWxlZHRyJywgdGhpcy5yb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdGVzdCBBcnJheTEsIEFycmF5MlxuICAgICAgbm9kZSA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ210cicsIHRoaXMucm93KTtcbiAgICB9XG4gICAgdGhpcy50YWJsZS5wdXNoKG5vZGUpO1xuICAgIHRoaXMucm93ID0gW107XG4gIH1cblxuXG4gIC8qKlxuICAgKiBGaW5pc2hlcyB0aGUgdGFibGUgbGF5b3V0LlxuICAgKi9cbiAgcHVibGljIEVuZFRhYmxlKCkge1xuICAgIGlmICh0aGlzLlNpemUoKSB8fCB0aGlzLnJvdy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuRW5kRW50cnkoKTtcbiAgICAgIHRoaXMuRW5kUm93KCk7XG4gICAgfVxuICAgIHRoaXMuY2hlY2tMaW5lcygpO1xuICB9XG5cblxuICAvKipcbiAgICogRmluaXNoZXMgbGluZSBsYXlvdXQgaWYgbm90IGFscmVhZHkgZ2l2ZW4uXG4gICAqL1xuICBwdWJsaWMgY2hlY2tMaW5lcygpIHtcbiAgICBpZiAodGhpcy5hcnJheWRlZlsncm93bGluZXMnXSkge1xuICAgICAgY29uc3QgbGluZXMgPSAodGhpcy5hcnJheWRlZlsncm93bGluZXMnXSBhcyBzdHJpbmcpLnNwbGl0KC8gLyk7XG4gICAgICBpZiAobGluZXMubGVuZ3RoID09PSB0aGlzLnRhYmxlLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmZyYW1lLnB1c2goJ2JvdHRvbScpO1xuICAgICAgICBsaW5lcy5wb3AoKTtcbiAgICAgICAgdGhpcy5hcnJheWRlZlsncm93bGluZXMnXSA9IGxpbmVzLmpvaW4oJyAnKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZXMubGVuZ3RoIDwgdGhpcy50YWJsZS5sZW5ndGggLSAxKSB7XG4gICAgICAgIHRoaXMuYXJyYXlkZWZbJ3Jvd2xpbmVzJ10gKz0gJyBub25lJztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRoaXMuZ2V0UHJvcGVydHkoJ3Jvd3NwYWNpbmcnKSkge1xuICAgICAgY29uc3Qgcm93cyA9ICh0aGlzLmFycmF5ZGVmWydyb3dzcGFjaW5nJ10gYXMgc3RyaW5nKS5zcGxpdCgvIC8pO1xuICAgICAgd2hpbGUgKHJvd3MubGVuZ3RoIDwgdGhpcy50YWJsZS5sZW5ndGgpIHtcbiAgICAgICAgcm93cy5wdXNoKHRoaXMuZ2V0UHJvcGVydHkoJ3Jvd3NwYWNpbmcnKSArICdlbScpO1xuICAgICAgfVxuICAgICAgdGhpcy5hcnJheWRlZlsncm93c3BhY2luZyddID0gcm93cy5qb2luKCcgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSByb3ctc3BhY2luZyB0byB0aGUgY3VycmVudCByb3cgKHBhZGRpbmcgb3V0IHRoZSByb3dzcGFjaW5nIGlmIG5lZWRlZCB0byBnZXQgdGhlcmUpLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3BhY2luZyAgIFRoZSByb3dzcGFjaW5nIHRvIHVzZSBmb3IgdGhlIGN1cnJlbnQgcm93LlxuICAgKi9cbiAgcHVibGljIGFkZFJvd1NwYWNpbmcoc3BhY2luZzogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuYXJyYXlkZWZbJ3Jvd3NwYWNpbmcnXSkge1xuICAgICAgY29uc3Qgcm93cyA9ICh0aGlzLmFycmF5ZGVmWydyb3dzcGFjaW5nJ10gYXMgc3RyaW5nKS5zcGxpdCgvIC8pO1xuICAgICAgaWYgKCF0aGlzLmdldFByb3BlcnR5KCdyb3dzcGFjaW5nJykpIHtcbiAgICAgICAgLy8gQHRlc3QgQXJyYXkgQ3VzdG9tIExpbmVicmVha1xuICAgICAgICBsZXQgZGltZW0gPSBQYXJzZVV0aWwuZGltZW4yZW0ocm93c1swXSk7XG4gICAgICAgIHRoaXMuc2V0UHJvcGVydHkoJ3Jvd3NwYWNpbmcnLCBkaW1lbSk7XG4gICAgICB9XG4gICAgICBjb25zdCByb3dzcGFjaW5nID0gdGhpcy5nZXRQcm9wZXJ0eSgncm93c3BhY2luZycpIGFzIG51bWJlcjtcbiAgICAgIHdoaWxlIChyb3dzLmxlbmd0aCA8IHRoaXMudGFibGUubGVuZ3RoKSB7XG4gICAgICAgIHJvd3MucHVzaChQYXJzZVV0aWwuRW0ocm93c3BhY2luZykpO1xuICAgICAgfVxuICAgICAgcm93c1t0aGlzLnRhYmxlLmxlbmd0aCAtIDFdID0gUGFyc2VVdGlsLkVtKFxuICAgICAgICBNYXRoLm1heCgwLCByb3dzcGFjaW5nICsgUGFyc2VVdGlsLmRpbWVuMmVtKHNwYWNpbmcpKSk7XG4gICAgICB0aGlzLmFycmF5ZGVmWydyb3dzcGFjaW5nJ10gPSByb3dzLmpvaW4oJyAnKTtcbiAgICB9XG4gIH1cblxufVxuXG5cbi8qKlxuICogSXRlbSBkZWFsaW5nIHdpdGggZXF1YXRpb24gYXJyYXlzIGFzIGEgc3BlY2lhbCBjYXNlIG9mIGFycmF5cy4gSGFuZGxlc1xuICogdGFnZ2luZyBpbmZvcm1hdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIHRhZ2dpbmcgc3R5bGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBFcW5BcnJheUl0ZW0gZXh0ZW5kcyBBcnJheUl0ZW0ge1xuXG4gIC8qKlxuICAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IHJvdy5cbiAgICovXG4gIHB1YmxpYyBtYXhyb3c6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZmFjdG9yeTogYW55LCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHN1cGVyKGZhY3RvcnkpO1xuICAgIHRoaXMuZmFjdG9yeS5jb25maWd1cmF0aW9uLnRhZ3Muc3RhcnQoYXJnc1swXSwgYXJnc1syXSwgYXJnc1sxXSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnZXFuYXJyYXknO1xuICB9XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgRW5kRW50cnkoKSB7XG4gICAgLy8gQHRlc3QgQ3ViaWMgQmlub21pYWxcbiAgICBpZiAodGhpcy5yb3cubGVuZ3RoKSB7XG4gICAgICBQYXJzZVV0aWwuZml4SW5pdGlhbE1PKHRoaXMuZmFjdG9yeS5jb25maWd1cmF0aW9uLCB0aGlzLm5vZGVzKTtcbiAgICB9XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ210ZCcsIHRoaXMubm9kZXMpO1xuICAgIHRoaXMucm93LnB1c2gobm9kZSk7XG4gICAgdGhpcy5DbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIEVuZFJvdygpIHtcbiAgICBpZiAodGhpcy5yb3cubGVuZ3RoID4gdGhpcy5tYXhyb3cpIHtcbiAgICAgIHRoaXMubWF4cm93ID0gdGhpcy5yb3cubGVuZ3RoO1xuICAgIH1cbiAgICAvLyBAdGVzdCBDdWJpYyBCaW5vbWlhbFxuICAgIGxldCBtdHIgPSAnbXRyJztcbiAgICBsZXQgdGFnID0gdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24udGFncy5nZXRUYWcoKTtcbiAgICBpZiAodGFnKSB7XG4gICAgICB0aGlzLnJvdyA9IFt0YWddLmNvbmNhdCh0aGlzLnJvdyk7XG4gICAgICBtdHIgPSAnbWxhYmVsZWR0cic7XG4gICAgfVxuICAgIHRoaXMuZmFjdG9yeS5jb25maWd1cmF0aW9uLnRhZ3MuY2xlYXJUYWcoKTtcbiAgICBjb25zdCBub2RlID0gdGhpcy5jcmVhdGUoJ25vZGUnLCBtdHIsIHRoaXMucm93KTtcbiAgICB0aGlzLnRhYmxlLnB1c2gobm9kZSk7XG4gICAgdGhpcy5yb3cgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBFbmRUYWJsZSgpIHtcbiAgICAvLyBAdGVzdCBDdWJpYyBCaW5vbWlhbFxuICAgIHN1cGVyLkVuZFRhYmxlKCk7XG4gICAgdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24udGFncy5lbmQoKTtcbiAgICAvL1xuICAgIC8vIFJlcGVhdCB0aGUgY29sdW1uIGFsaWduIGFuZCB3aWR0aCBzcGVjaWZpY2F0aW9uc1xuICAgIC8vICAgdG8gbWF0Y2ggdGhlIG51bWJlciBvZiBjb2x1bW5zXG4gICAgLy9cbiAgICB0aGlzLmV4dGVuZEFycmF5KCdjb2x1bW5hbGlnbicsIHRoaXMubWF4cm93KTtcbiAgICB0aGlzLmV4dGVuZEFycmF5KCdjb2x1bW53aWR0aCcsIHRoaXMubWF4cm93KTtcbiAgICB0aGlzLmV4dGVuZEFycmF5KCdjb2x1bW5zcGFjaW5nJywgdGhpcy5tYXhyb3cgLSAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRlbmQgYSBjb2x1bW4gc3BlY2lmaWNhdGlvbiB0byBpbmNsdWRlIGEgcmVwZWF0aW5nIHNldCBvZiB2YWx1ZXNcbiAgICogICBzbyB0aGF0IGl0IGhhcyBlbm91Z2ggdG8gbWF0Y2ggdGhlIG1heGltdW0gcm93IGxlbmd0aC5cbiAgICovXG4gIHByb3RlY3RlZCBleHRlbmRBcnJheShuYW1lOiBzdHJpbmcsIG1heDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmFycmF5ZGVmW25hbWVdKSByZXR1cm47XG4gICAgY29uc3QgcmVwZWF0ID0gKHRoaXMuYXJyYXlkZWZbbmFtZV0gYXMgc3RyaW5nKS5zcGxpdCgvIC8pO1xuICAgIGNvbnN0IGNvbHVtbnMgPSBbLi4ucmVwZWF0XTtcbiAgICBpZiAoY29sdW1ucy5sZW5ndGggPiAxKSB7XG4gICAgICB3aGlsZSAoY29sdW1ucy5sZW5ndGggPCBtYXgpIHtcbiAgICAgICAgY29sdW1ucy5wdXNoKC4uLnJlcGVhdCk7XG4gICAgICB9XG4gICAgICB0aGlzLmFycmF5ZGVmW25hbWVdID0gY29sdW1ucy5zbGljZSgwLCBtYXgpLmpvaW4oJyAnKTtcbiAgICB9XG4gIH1cbn1cblxuXG4vKipcbiAqIEl0ZW0gZGVhbGluZyB3aXRoIHNpbXBsZSBlcXVhdGlvbiBlbnZpcm9ubWVudHMuICBIYW5kbGVzIHRhZ2dpbmcgaW5mb3JtYXRpb25cbiAqIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gdGFnZ2luZyBzdHlsZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVxdWF0aW9uSXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgc3VwZXIoZmFjdG9yeSk7XG4gICAgdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24udGFncy5zdGFydCgnZXF1YXRpb24nLCB0cnVlLCBhcmdzWzBdKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdlcXVhdGlvbic7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQgaXNPcGVuKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoZWNrSXRlbShpdGVtOiBTdGFja0l0ZW0pOiBDaGVja1R5cGUge1xuICAgIGlmIChpdGVtLmlzS2luZCgnZW5kJykpIHtcbiAgICAgIGxldCBtbWwgPSB0aGlzLnRvTW1sKCk7XG4gICAgICBsZXQgdGFnID0gdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24udGFncy5nZXRUYWcoKTtcbiAgICAgIHRoaXMuZmFjdG9yeS5jb25maWd1cmF0aW9uLnRhZ3MuZW5kKCk7XG4gICAgICByZXR1cm4gW1t0YWcgPyB0aGlzLmZhY3RvcnkuY29uZmlndXJhdGlvbi50YWdzLmVuVGFnKG1tbCwgdGFnKSA6IG1tbCwgaXRlbV0sIHRydWVdO1xuICAgIH1cbiAgICBpZiAoaXRlbS5pc0tpbmQoJ3N0b3AnKSkge1xuICAgICAgLy8gQHRlc3QgRW52TWlzc2luZ0VuZCBFcXVhdGlvblxuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdFbnZNaXNzaW5nRW5kJywgJ01pc3NpbmcgXFxcXGVuZHslMX0nLCB0aGlzLmdldE5hbWUoKSk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5jaGVja0l0ZW0oaXRlbSk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQ29uc3RhbnQgZGVmaW5pdGlvbnMgZm9yIHRoZSBUZVggUGFyc2VyLiBUaGVzZSBzaG91bGRcbiAqICAgICBldmVudHVhbGx5IGJlIGNvbWJpbmVkIHdpdGggdGhlIE1hdGhNTCBzdHJ1Y3R1cmUuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuZXhwb3J0IG5hbWVzcGFjZSBUZXhDb25zdGFudCB7XG5cbiAgZXhwb3J0IGNvbnN0IFZhcmlhbnQgPSB7XG4gICAgTk9STUFMOiAnbm9ybWFsJyxcbiAgICBCT0xEOiAnYm9sZCcsXG4gICAgSVRBTElDOiAnaXRhbGljJyxcbiAgICBCT0xESVRBTElDOiAnYm9sZC1pdGFsaWMnLFxuICAgIERPVUJMRVNUUlVDSzogJ2RvdWJsZS1zdHJ1Y2snLFxuICAgIEZSQUtUVVI6ICdmcmFrdHVyJyxcbiAgICBCT0xERlJBS1RVUjogJ2JvbGQtZnJha3R1cicsXG4gICAgU0NSSVBUOiAnc2NyaXB0JyxcbiAgICBCT0xEU0NSSVBUOiAnYm9sZC1zY3JpcHQnLFxuICAgIFNBTlNTRVJJRjogJ3NhbnMtc2VyaWYnLFxuICAgIEJPTERTQU5TU0VSSUY6ICdib2xkLXNhbnMtc2VyaWYnLFxuICAgIFNBTlNTRVJJRklUQUxJQzogJ3NhbnMtc2VyaWYtaXRhbGljJyxcbiAgICBTQU5TU0VSSUZCT0xESVRBTElDOiAnc2Fucy1zZXJpZi1ib2xkLWl0YWxpYycsXG4gICAgTU9OT1NQQUNFOiAnbW9ub3NwYWNlJyxcbiAgICBJTklUSUFMOiAnaW5pdGFsJyxcbiAgICBUQUlMRUQ6ICd0YWlsZWQnLFxuICAgIExPT1BFRDogJ2xvb3BlZCcsXG4gICAgU1RSRVRDSEVEOiAnc3RyZXRjaGVkJyxcbiAgICBDQUxMSUdSQVBISUM6ICctdGV4LWNhbGxpZ3JhcGhpYycsXG4gICAgQk9MRENBTExJR1JBUEhJQzogJy10ZXgtYm9sZC1jYWxsaWdyYXBoaWMnLFxuICAgIE9MRFNUWUxFOiAnLXRleC1vbGRzdHlsZScsXG4gICAgQk9MRE9MRFNUWUxFOiAnLXRleC1ib2xkLW9sZHN0eWxlJyxcbiAgICBNQVRISVRBTElDOiAnLXRleC1tYXRoaXQnXG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IEZvcm0gPSB7XG4gICAgUFJFRklYOiAncHJlZml4JyxcbiAgICBJTkZJWDogJ2luZml4JyxcbiAgICBQT1NURklYOiAncG9zdGZpeCdcbiAgfTtcblxuICBleHBvcnQgY29uc3QgTGluZUJyZWFrID0ge1xuICAgIEFVVE86ICdhdXRvJyxcbiAgICBORVdMSU5FOiAnbmV3bGluZScsXG4gICAgTk9CUkVBSzogJ25vYnJlYWsnLFxuICAgIEdPT0RCUkVBSzogJ2dvb2RicmVhaycsXG4gICAgQkFEQlJFQUs6ICdiYWRicmVhaydcbiAgfTtcblxuICBleHBvcnQgY29uc3QgTGluZUJyZWFrU3R5bGUgPSB7XG4gICAgQkVGT1JFOiAnYmVmb3JlJyxcbiAgICBBRlRFUjogJ2FmdGVyJyxcbiAgICBEVVBMSUNBVEU6ICdkdXBsaWNhdGUnLFxuICAgIElORklYTElOQlJFQUtTVFlMRTogJ2luZml4bGluZWJyZWFrc3R5bGUnXG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IEluZGVudEFsaWduID0ge1xuICAgIExFRlQ6ICdsZWZ0JyxcbiAgICBDRU5URVI6ICdjZW50ZXInLFxuICAgIFJJR0hUOiAncmlnaHQnLFxuICAgIEFVVE86ICdhdXRvJyxcbiAgICBJRDogJ2lkJyxcbiAgICBJTkRFTlRBTElHTjogJ2luZGVudGFsaWduJ1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBJbmRlbnRTaGlmdCA9IHtcbiAgICBJTkRFTlRTSElGVDogJ2luZGVudHNoaWZ0J1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBMaW5lVGhpY2tuZXNzID0ge1xuICAgIFRISU46ICd0aGluJyxcbiAgICBNRURJVU06ICdtZWRpdW0nLFxuICAgIFRISUNLOiAndGhpY2snXG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IE5vdGF0aW9uID0ge1xuICAgIExPTkdESVY6ICdsb25nZGl2JyxcbiAgICBBQ1RVQVJJQUw6ICdhY3R1YXJpYWwnLFxuICAgIFBIQVNPUkFOR0xFOiAncGhhc29yYW5nbGUnLFxuICAgIFJBRElDQUw6ICdyYWRpY2FsJyxcbiAgICBCT1g6ICdib3gnLFxuICAgIFJPVU5ERURCT1g6ICdyb3VuZGVkYm94JyxcbiAgICBDSVJDTEU6ICdjaXJjbGUnLFxuICAgIExFRlQ6ICdsZWZ0JyxcbiAgICBSSUdIVDogJ3JpZ2h0JyxcbiAgICBUT1A6ICd0b3AnLFxuICAgIEJPVFRPTTogJ2JvdHRvbScsXG4gICAgVVBESUFHT05BTFNUUklLRTogJ3VwZGlhZ29uYWxzdHJpa2UnLFxuICAgIERPV05ESUFHT05BTFNUUklLRTogJ2Rvd25kaWFnb25hbHN0cmlrZScsXG4gICAgVkVSVElDQUxTVFJJS0U6ICd2ZXJ0aWNhbHN0cmlrZScsXG4gICAgSE9SSVpPTlRBTFNUUklLRTogJ2hvcml6b250YWxzdHJpa2UnLFxuICAgIE5PUlRIRUFTVEFSUk9XOiAnbm9ydGhlYXN0YXJyb3cnLFxuICAgIE1BRFJVV0I6ICdtYWRydXdiJyxcbiAgICBVUERJQUdPTkFMQVJST1c6ICd1cGRpYWdvbmFsYXJyb3cnXG4gIH07XG5cbiAgZXhwb3J0IGNvbnN0IEFsaWduID0ge1xuICAgIFRPUDogJ3RvcCcsXG4gICAgQk9UVE9NOiAnYm90dG9tJyxcbiAgICBDRU5URVI6ICdjZW50ZXInLFxuICAgIEJBU0VMSU5FOiAnYmFzZWxpbmUnLFxuICAgIEFYSVM6ICdheGlzJyxcbiAgICBMRUZUOiAnbGVmdCcsXG4gICAgUklHSFQ6ICdyaWdodCdcbiAgfTtcblxuICBleHBvcnQgY29uc3QgTGluZXMgPSB7XG4gICAgTk9ORTogJ25vbmUnLFxuICAgIFNPTElEOiAnc29saWQnLFxuICAgIERBU0hFRDogJ2Rhc2hlZCdcbiAgfTtcblxuICBleHBvcnQgY29uc3QgU2lkZSA9IHtcbiAgICBMRUZUOiAnbGVmdCcsXG4gICAgUklHSFQ6ICdyaWdodCcsXG4gICAgTEVGVE9WRVJMQVA6ICdsZWZ0b3ZlcmxhcCcsXG4gICAgUklHSFRPVkVSTEFQOiAncmlnaHRvdmVybGFwJ1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBXaWR0aCA9IHtcbiAgICBBVVRPOiAnYXV0bycsXG4gICAgRklUOiAnZml0J1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBBY3Rpb250eXBlID0ge1xuICAgIFRPR0dMRTogJ3RvZ2dsZScsXG4gICAgU1RBVFVTTElORTogJ3N0YXR1c2xpbmUnLFxuICAgIFRPT0xUSVA6ICd0b29sdGlwJyxcbiAgICBJTlBVVDogJ2lucHV0J1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBPdmVyZmxvdyA9IHtcbiAgICBMSU5CUkVBSzogJ2xpbmVicmVhaycsXG4gICAgU0NST0xMOiAnc2Nyb2xsJyxcbiAgICBFTElERTogJ2VsaWRlJyxcbiAgICBUUlVOQ0FURTogJ3RydW5jYXRlJyxcbiAgICBTQ0FMRTogJ3NjYWxlJ1xuICB9O1xuXG4gIGV4cG9ydCBjb25zdCBVbml0ID0ge1xuICAgIEVNOiAnZW0nLFxuICAgIEVYOiAnZXgnLFxuICAgIFBYOiAncHgnLFxuICAgIElOOiAnaW4nLFxuICAgIENNOiAnY20nLFxuICAgIE1NOiAnbW0nLFxuICAgIFBUOiAncHQnLFxuICAgIFBDOiAncGMnXG4gIH07XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgVXRpbGl0eSBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIGRpbWVuc2lvbnMgKGxlbmd0aHMpXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG4vKipcbiAqICBBIHZlcnkgbGFyZ2UgbnVtYmVyXG4gKi9cbmV4cG9ydCBjb25zdCBCSUdESU1FTiA9IDEwMDAwMDA7XG5cbi8qKlxuICogIFNpemVzIG9mIHZhcmlvdXMgdW5pdHMgaW4gcGl4ZWxzXG4gKi9cbmV4cG9ydCBjb25zdCBVTklUUzoge1t1bml0OiBzdHJpbmddOiBudW1iZXJ9ID0ge1xuICBweDogMSxcbiAgJ2luJzogOTYsICAgICAgICAgICAgLy8gOTYgcHggdG8gYW4gaW5jaFxuICBjbTogOTYgLyAyLjU0LCAgICAgICAvLyAyLjU0IGNtIHRvIGFuIGluY2hcbiAgbW06IDk2IC8gMjUuNCAgICAgICAgLy8gMTAgbW0gdG8gYSBjbVxufTtcblxuLyoqXG4gKiAgU2l6ZXMgb2YgdmFyaW91cyByZWxhdGl2ZSB1bml0cyBpbiBlbSdzXG4gKi9cbmV4cG9ydCBjb25zdCBSRUxVTklUUzoge1t1bml0OiBzdHJpbmddOiBudW1iZXJ9ID0ge1xuICBlbTogMSxcbiAgZXg6IC40MzEsICAgICAgICAvLyB0aGlzLlRFWC54X2hlaWdodDtcbiAgcHQ6IDEgLyAxMCwgICAgICAvLyAxMCBwdCB0byBhbiBlbVxuICBwYzogMTIgLyAxMCwgICAgIC8vIDEyIHBjIHRvIGEgcHRcbiAgbXU6IDEgLyAxOCAgICAgICAvLyAxOG11IHRvIGFuIGVtIGZvciB0aGUgc2NyaXB0bGV2ZWxcbn07XG5cbi8qKlxuICogIFRoZSB2YXJpb3VzIG5hbWVkIHNwYWNlc1xuICovXG5leHBvcnQgY29uc3QgTUFUSFNQQUNFOiB7W25hbWU6IHN0cmluZ106IG51bWJlcn0gPSB7XG4gIC8qIHRzbGludDpkaXNhYmxlOndoaXRlc3BhY2UgKi9cbiAgdmVyeXZlcnl0aGlubWF0aHNwYWNlOiAgICAgICAgICAgMS8xOCxcbiAgdmVyeXRoaW5tYXRoc3BhY2U6ICAgICAgICAgICAgICAgMi8xOCxcbiAgdGhpbm1hdGhzcGFjZTogICAgICAgICAgICAgICAgICAgMy8xOCxcbiAgbWVkaXVtbWF0aHNwYWNlOiAgICAgICAgICAgICAgICAgNC8xOCxcbiAgdGhpY2ttYXRoc3BhY2U6ICAgICAgICAgICAgICAgICAgNS8xOCxcbiAgdmVyeXRoaWNrbWF0aHNwYWNlOiAgICAgICAgICAgICAgNi8xOCxcbiAgdmVyeXZlcnl0aGlja21hdGhzcGFjZTogICAgICAgICAgNy8xOCxcbiAgbmVnYXRpdmV2ZXJ5dmVyeXRoaW5tYXRoc3BhY2U6ICAtMS8xOCxcbiAgbmVnYXRpdmV2ZXJ5dGhpbm1hdGhzcGFjZTogICAgICAtMi8xOCxcbiAgbmVnYXRpdmV0aGlubWF0aHNwYWNlOiAgICAgICAgICAtMy8xOCxcbiAgbmVnYXRpdmVtZWRpdW1tYXRoc3BhY2U6ICAgICAgICAtNC8xOCxcbiAgbmVnYXRpdmV0aGlja21hdGhzcGFjZTogICAgICAgICAtNS8xOCxcbiAgbmVnYXRpdmV2ZXJ5dGhpY2ttYXRoc3BhY2U6ICAgICAtNi8xOCxcbiAgbmVnYXRpdmV2ZXJ5dmVyeXRoaWNrbWF0aHNwYWNlOiAtNy8xOCxcbiAgLyogdHNsaW50OmVuYWJsZSAqL1xuXG4gIHRoaW46ICAgLjA0LFxuICBtZWRpdW06IC4wNixcbiAgdGhpY2s6ICAuMSxcblxuICBub3JtYWw6ICAxLFxuICBiaWc6ICAgICAyLFxuICBzbWFsbDogICAxIC8gTWF0aC5zcXJ0KDIpLFxuXG4gIGluZmluaXR5OiAgQklHRElNRU5cbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IGxlbmd0aCAgQSBkaW1lbnNpb24gKGdpdmluZyBudW1iZXIgYW5kIHVuaXRzKSB0byBiZSBjb252ZXJ0ZWQgdG8gZW1zXG4gKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAgICAgICAgICAgVGhlIGRlZmF1bHQgc2l6ZSBvZiB0aGUgZGltZW5zaW9uIChmb3IgcGVyY2VudGFnZSB2YWx1ZXMpXG4gKiBAcGFyYW0ge251bWJlcn0gc2NhbGUgICAgICAgICAgVGhlIGN1cnJlbnQgc2NhbGluZyBmYWN0b3IgKHRvIGhhbmRsZSBhYnNvbHV0ZSB1bml0cylcbiAqIEBwYXJhbSB7bnVtYmVyfSBlbSAgICAgICAgICAgICBUaGUgc2l6ZSBvZiBhbiBlbSBpbiBwaXhlbHNcbiAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgICBUaGUgZGltZW5zaW9uIGNvbnZlcnRlZCB0byBlbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxlbmd0aDJlbShsZW5ndGg6IHN0cmluZyB8IG51bWJlciwgc2l6ZTogbnVtYmVyID0gMCwgc2NhbGU6IG51bWJlciA9IDEsIGVtOiBudW1iZXIgPSAxNik6IG51bWJlciB7XG4gIGlmICh0eXBlb2YgbGVuZ3RoICE9PSAnc3RyaW5nJykge1xuICAgIGxlbmd0aCA9IFN0cmluZyhsZW5ndGgpO1xuICB9XG4gIGlmIChsZW5ndGggPT09ICcnIHx8IGxlbmd0aCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHNpemU7XG4gIH1cbiAgaWYgKE1BVEhTUEFDRVtsZW5ndGhdKSB7XG4gICAgcmV0dXJuIE1BVEhTUEFDRVtsZW5ndGhdO1xuICB9XG4gIGxldCBtYXRjaCA9IGxlbmd0aC5tYXRjaCgvXlxccyooWy0rXT8oPzpcXC5cXGQrfFxcZCsoPzpcXC5cXGQqKT8pKT8ocHR8ZW18ZXh8bXV8cHh8cGN8aW58bW18Y218JSk/Lyk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gc2l6ZTtcbiAgfVxuICBsZXQgbSA9IHBhcnNlRmxvYXQobWF0Y2hbMV0gfHwgJzEnKSwgdW5pdCA9IG1hdGNoWzJdO1xuICBpZiAoVU5JVFMuaGFzT3duUHJvcGVydHkodW5pdCkpIHtcbiAgICByZXR1cm4gbSAqIFVOSVRTW3VuaXRdIC8gZW0gLyBzY2FsZTtcbiAgfVxuICBpZiAoUkVMVU5JVFMuaGFzT3duUHJvcGVydHkodW5pdCkpIHtcbiAgICByZXR1cm4gbSAqIFJFTFVOSVRTW3VuaXRdO1xuICB9XG4gIGlmICh1bml0ID09PSAnJScpIHtcbiAgICByZXR1cm4gbSAvIDEwMCAqIHNpemU7ICAvLyBwZXJjZW50YWdlIG9mIHRoZSBzaXplXG4gIH1cbiAgcmV0dXJuIG0gKiBzaXplOyAgICAgICAgICAgIC8vIHJlbGF0aXZlIHRvIHNpemVcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gbSAgQSBudW1iZXIgdG8gYmUgc2hvd24gYXMgYSBwZXJjZW50XG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgVGhlIG51bWJlciBtIGFzIGEgcGVyY2VudFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGVyY2VudChtOiBudW1iZXIpOiBzdHJpbmcge1xuICByZXR1cm4gKDEwMCAqIG0pLnRvRml4ZWQoMSkucmVwbGFjZSgvXFwuPzArJC8sICcnKSArICclJztcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcn0gbSAgQSBudW1iZXIgdG8gYmUgc2hvd24gaW4gZW1zXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgVGhlIG51bWJlciB3aXRoIHVuaXRzIG9mIGVtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZW0obTogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKE1hdGguYWJzKG0pIDwgLjAwMSkgcmV0dXJuICcwJztcbiAgcmV0dXJuIChtLnRvRml4ZWQoMykucmVwbGFjZSgvXFwuPzArJC8sICcnKSkgKyAnZW0nO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBtICAgQSBudW1iZXIgdG8gYmUgc2hvd24gaW4gZW1zLCBidXQgcm91bmRlZCB0byBwaXhlbCBib3VuZGFyaWVzXG4gKiBAcGFyYW0ge251bWJlcn0gZW0gIFRoZSBudW1iZXIgb2YgcGl4ZWxzIGluIGFuIGVtXG4gKiBAcmV0dXJuIHtzdHJpbmd9ICAgIFRoZSBudW1iZXIgd2l0aCB1bml0cyBvZiBlbVxuICovXG5leHBvcnQgZnVuY3Rpb24gZW1Sb3VuZGVkKG06IG51bWJlciwgZW06IG51bWJlciA9IDE2KTogc3RyaW5nIHtcbiAgbSA9IChNYXRoLnJvdW5kKG0gKiBlbSkgKyAuMDUpIC8gZW07XG4gIGlmIChNYXRoLmFicyhtKSA8IC4wMDEpIHJldHVybiAnMGVtJztcbiAgcmV0dXJuIG0udG9GaXhlZCgzKS5yZXBsYWNlKC9cXC4/MCskLywgJycpICsgJ2VtJztcbn1cblxuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyfSBtICAgQSBudW1iZXIgb2YgZW0ncyB0byBiZSBzaG93biBhcyBwaXhlbHNcbiAqIEBwYXJhbSB7bnVtYmVyfSBNICAgVGhlIG1pbmltdW0gbnVtYmVyIG9mIHBpeGVscyB0byBhbGxvd1xuICogQHBhcmFtIHtudW1iZXJ9IGVtICBUaGUgbnVtYmVyIG9mIHBpeGVscyBpbiBhbiBlbVxuICogQHJldHVybiB7c3RyaW5nfSAgICBUaGUgbnVtYmVyIHdpdGggdW5pdHMgb2YgcHhcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHB4KG06IG51bWJlciwgTTogbnVtYmVyID0gLUJJR0RJTUVOLCBlbTogbnVtYmVyID0gMTYpOiBzdHJpbmcge1xuICBtICo9IGVtO1xuICBpZiAoTSAmJiBtIDwgTSkgbSA9IE07XG4gIGlmIChNYXRoLmFicyhtKSA8IC4xKSByZXR1cm4gJzAnO1xuICByZXR1cm4gbS50b0ZpeGVkKDEpLnJlcGxhY2UoL1xcLjAkLywgJycpICsgJ3B4Jztcbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IFRoZSBCYXNpYyBQYXJzZSBtZXRob2RzLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCAqIGFzIHNpdGVtIGZyb20gJy4vQmFzZUl0ZW1zLmpzJztcbmltcG9ydCB7U3RhY2tJdGVtLCBFbnZMaXN0fSBmcm9tICcuLi9TdGFja0l0ZW0uanMnO1xuaW1wb3J0IHtNYWNyb30gZnJvbSAnLi4vU3ltYm9sLmpzJztcbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IHtUZXhDb25zdGFudH0gZnJvbSAnLi4vVGV4Q29uc3RhbnRzLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgVEVYQ0xBU1N9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7TW1sTXN1YnN1cH0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21zdWJzdXAuanMnO1xuaW1wb3J0IHtNbWxNdW5kZXJvdmVyfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXVuZGVyb3Zlci5qcyc7XG5pbXBvcnQge0xhYmVsfSBmcm9tICcuLi9UYWdzLmpzJztcbmltcG9ydCB7ZW19IGZyb20gJy4uLy4uLy4uL3V0aWwvbGVuZ3Rocy5qcyc7XG5pbXBvcnQge2VudGl0aWVzfSBmcm9tICcuLi8uLi8uLi91dGlsL0VudGl0aWVzLmpzJztcbmltcG9ydCB7bG9va3VwfSBmcm9tICcuLi8uLi8uLi91dGlsL09wdGlvbnMuanMnO1xuXG5cbi8vIE5hbWVzcGFjZVxubGV0IEJhc2VNZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBQYXJzZU1ldGhvZD4gPSB7fTtcblxuY29uc3QgUF9IRUlHSFQgPSAxLjIgLyAuODU7ICAgLy8gY21leDEwIGhlaWdodCBwbHVzIGRlcHRoIG92ZXIgLjg1XG5jb25zdCBNbWxUb2tlbkFsbG93OiB7W2tleTogc3RyaW5nXTogbnVtYmVyfSA9IHtcbiAgZm9udGZhbWlseTogMSwgZm9udHNpemU6IDEsIGZvbnR3ZWlnaHQ6IDEsIGZvbnRzdHlsZTogMSxcbiAgY29sb3I6IDEsIGJhY2tncm91bmQ6IDEsXG4gIGlkOiAxLCAnY2xhc3MnOiAxLCBocmVmOiAxLCBzdHlsZTogMVxufTtcblxuXG5cbi8qKlxuICogSGFuZGxlIExhVGVYIHRva2Vucy5cbiAqL1xuXG4vKipcbiAqIEhhbmRsZSB7XG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjIFRoZSBwYXJzZWQgY2hhcmFjdGVyLlxuICovXG5CYXNlTWV0aG9kcy5PcGVuID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9jOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgSWRlbnRpZmllciBGb250LCBQcmltZSwgUHJpbWUgd2l0aCBzdWJzY3JpcHRcbiAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnb3BlbicpKTtcbn07XG5cbi8qKlxuICogSGFuZGxlIH1cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IGMgVGhlIHBhcnNlZCBjaGFyYWN0ZXIuXG4gKi9cbkJhc2VNZXRob2RzLkNsb3NlID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9jOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgSWRlbnRpZmllciBGb250LCBQcmltZSwgUHJpbWUgd2l0aCBzdWJzY3JpcHRcbiAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnY2xvc2UnKSk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIHRpbGRlIGFuZCBzcGFjZXMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjIFRoZSBwYXJzZWQgY2hhcmFjdGVyLlxuICovXG5CYXNlTWV0aG9kcy5UaWxkZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfYzogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IFRpbGRlLCBUaWxkZTJcbiAgcGFyc2VyLlB1c2gocGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbXRleHQnLCB7fSwgZW50aXRpZXMubmJzcCkpO1xufTtcblxuLyoqXG4gKiBIYW5kbGluZyBzcGFjZSwgYnkgZG9pbmcgbm90aGluZy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IGMgVGhlIHBhcnNlZCBjaGFyYWN0ZXIuXG4gKi9cbkJhc2VNZXRob2RzLlNwYWNlID0gZnVuY3Rpb24oX3BhcnNlcjogVGV4UGFyc2VyLCBfYzogc3RyaW5nKSB7fTtcblxuLyoqXG4gKiBIYW5kbGUgXlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gYyBUaGUgcGFyc2VkIGNoYXJhY3Rlci5cbiAqL1xuQmFzZU1ldGhvZHMuU3VwZXJzY3JpcHQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgX2M6IHN0cmluZykge1xuICBpZiAocGFyc2VyLkdldE5leHQoKS5tYXRjaCgvXFxkLykpIHtcbiAgICAvLyBkb24ndCB0cmVhdCBudW1iZXJzIGFzIGEgdW5pdFxuICAgIHBhcnNlci5zdHJpbmcgPSBwYXJzZXIuc3RyaW5nLnN1YnN0cigwLCBwYXJzZXIuaSArIDEpICtcbiAgICAgICcgJyArIHBhcnNlci5zdHJpbmcuc3Vic3RyKHBhcnNlci5pICsgMSk7XG4gIH1cbiAgbGV0IHByaW1lczogTW1sTm9kZTtcbiAgbGV0IGJhc2U6IE1tbE5vZGUgfCB2b2lkO1xuICBjb25zdCB0b3AgPSBwYXJzZXIuc3RhY2suVG9wKCk7XG4gIGlmICh0b3AuaXNLaW5kKCdwcmltZScpKSB7XG4gICAgLy8gQHRlc3QgUHJpbWUgb24gUHJpbWVcbiAgICBbYmFzZSwgcHJpbWVzXSA9IHRvcC5QZWVrKDIpO1xuICAgIHBhcnNlci5zdGFjay5Qb3AoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBAdGVzdCBFbXB0eSBiYXNlMiwgU3F1YXJlLCBDdWJlXG4gICAgYmFzZSA9IHBhcnNlci5zdGFjay5QcmV2KCk7XG4gICAgaWYgKCFiYXNlKSB7XG4gICAgICAvLyBAdGVzdCBFbXB0eSBiYXNlXG4gICAgICBiYXNlID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbWknLCB7fSwgJycpO1xuICAgIH1cbiAgfVxuICBjb25zdCBtb3Zlc3Vwc3ViID0gTm9kZVV0aWwuZ2V0UHJvcGVydHkoYmFzZSwgJ21vdmVzdXBzdWInKTtcbiAgbGV0IHBvc2l0aW9uID0gTm9kZVV0aWwuaXNUeXBlKGJhc2UsICdtc3Vic3VwJykgPyAoYmFzZSBhcyBNbWxNc3Vic3VwKS5zdXAgOlxuICAgIChiYXNlIGFzIE1tbE11bmRlcm92ZXIpLm92ZXI7XG4gIGlmICgoTm9kZVV0aWwuaXNUeXBlKGJhc2UsICdtc3Vic3VwJykgJiYgIU5vZGVVdGlsLmlzVHlwZShiYXNlLCAnbXN1cCcpICYmXG4gICAgICAgTm9kZVV0aWwuZ2V0Q2hpbGRBdChiYXNlLCAoYmFzZSBhcyBNbWxNc3Vic3VwKS5zdXApKSB8fFxuICAgICAgKE5vZGVVdGlsLmlzVHlwZShiYXNlLCAnbXVuZGVyb3ZlcicpICYmICFOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ21vdmVyJykgJiZcbiAgICAgICBOb2RlVXRpbC5nZXRDaGlsZEF0KGJhc2UsIChiYXNlIGFzIE1tbE11bmRlcm92ZXIpLm92ZXIpICYmXG4gICAgICAgIU5vZGVVdGlsLmdldFByb3BlcnR5KGJhc2UsICdzdWJzdXBPSycpKSkge1xuICAgIC8vIEB0ZXN0IERvdWJsZS1zdXBlci1lcnJvciwgRG91YmxlLW92ZXItZXJyb3JcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0RvdWJsZUV4cG9uZW50JywgJ0RvdWJsZSBleHBvbmVudDogdXNlIGJyYWNlcyB0byBjbGFyaWZ5Jyk7XG4gIH1cbiAgaWYgKCFOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ21zdWJzdXAnKSB8fCBOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ21zdXAnKSkge1xuICAgIGlmIChtb3Zlc3Vwc3ViKSB7XG4gICAgICAvLyBAdGVzdCBNb3ZlIFN1cGVyc2NyaXB0LCBMYXJnZSBPcGVyYXRvclxuICAgICAgaWYgKCFOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ211bmRlcm92ZXInKSB8fCBOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ21vdmVyJykgfHxcbiAgICAgICAgICBOb2RlVXRpbC5nZXRDaGlsZEF0KGJhc2UsIChiYXNlIGFzIE1tbE11bmRlcm92ZXIpLm92ZXIpKSB7XG4gICAgICAgIC8vIEB0ZXN0IExhcmdlIE9wZXJhdG9yXG4gICAgICAgIGJhc2UgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ211bmRlcm92ZXInLCBbYmFzZV0sIHttb3Zlc3Vwc3ViOiB0cnVlfSk7XG4gICAgICB9XG4gICAgICBwb3NpdGlvbiA9IChiYXNlIGFzIE1tbE11bmRlcm92ZXIpLm92ZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEB0ZXN0IEVtcHR5IGJhc2UsIEVtcHR5IGJhc2UyLCBTcXVhcmUsIEN1YmVcbiAgICAgIGJhc2UgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zdWJzdXAnLCBbYmFzZV0pO1xuICAgICAgcG9zaXRpb24gPSAoYmFzZSBhcyBNbWxNc3Vic3VwKS5zdXA7XG4gICAgfVxuICB9XG4gIHBhcnNlci5QdXNoKFxuICAgIHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ3N1YnN1cCcsIGJhc2UpLnNldFByb3BlcnRpZXMoe1xuICAgICAgcG9zaXRpb246IHBvc2l0aW9uLCBwcmltZXM6IHByaW1lcywgbW92ZXN1cHN1YjogbW92ZXN1cHN1YlxuICAgIH0pICk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIF9cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IGMgVGhlIHBhcnNlZCBjaGFyYWN0ZXIuXG4gKi9cbkJhc2VNZXRob2RzLlN1YnNjcmlwdCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfYzogc3RyaW5nKSB7XG4gIGlmIChwYXJzZXIuR2V0TmV4dCgpLm1hdGNoKC9cXGQvKSkge1xuICAgIC8vIGRvbid0IHRyZWF0IG51bWJlcnMgYXMgYSB1bml0XG4gICAgcGFyc2VyLnN0cmluZyA9XG4gICAgICBwYXJzZXIuc3RyaW5nLnN1YnN0cigwLCBwYXJzZXIuaSArIDEpICsgJyAnICtcbiAgICAgIHBhcnNlci5zdHJpbmcuc3Vic3RyKHBhcnNlci5pICsgMSk7XG4gIH1cbiAgbGV0IHByaW1lcywgYmFzZTtcbiAgY29uc3QgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICBpZiAodG9wLmlzS2luZCgncHJpbWUnKSkge1xuICAgIC8vIEB0ZXN0IFByaW1lIG9uIFN1YlxuICAgIFtiYXNlLCBwcmltZXNdID0gdG9wLlBlZWsoMik7XG4gICAgcGFyc2VyLnN0YWNrLlBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGJhc2UgPSBwYXJzZXIuc3RhY2suUHJldigpO1xuICAgIGlmICghYmFzZSkge1xuICAgICAgLy8gQHRlc3QgRW1wdHkgQmFzZSBJbmRleFxuICAgICAgYmFzZSA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21pJywge30sICcnKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgbW92ZXN1cHN1YiA9IE5vZGVVdGlsLmdldFByb3BlcnR5KGJhc2UsICdtb3Zlc3Vwc3ViJyk7XG4gIGxldCBwb3NpdGlvbiA9IE5vZGVVdGlsLmlzVHlwZShiYXNlLCAnbXN1YnN1cCcpID9cbiAgICAoYmFzZSBhcyBNbWxNc3Vic3VwKS5zdWIgOiAoYmFzZSBhcyBNbWxNdW5kZXJvdmVyKS51bmRlcjtcbiAgaWYgKChOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ21zdWJzdXAnKSAmJiAhTm9kZVV0aWwuaXNUeXBlKGJhc2UsICdtc3VwJykgJiZcbiAgICAgICBOb2RlVXRpbC5nZXRDaGlsZEF0KGJhc2UsIChiYXNlIGFzIE1tbE1zdWJzdXApLnN1YikpIHx8XG4gICAgICAoTm9kZVV0aWwuaXNUeXBlKGJhc2UsICdtdW5kZXJvdmVyJykgJiYgIU5vZGVVdGlsLmlzVHlwZShiYXNlLCAnbW92ZXInKSAmJlxuICAgICAgIE5vZGVVdGlsLmdldENoaWxkQXQoYmFzZSwgKGJhc2UgYXMgTW1sTXVuZGVyb3ZlcikudW5kZXIpICYmXG4gICAgICAgIU5vZGVVdGlsLmdldFByb3BlcnR5KGJhc2UsICdzdWJzdXBPSycpKSkge1xuICAgIC8vIEB0ZXN0IERvdWJsZS1zdWItZXJyb3IsIERvdWJsZS11bmRlci1lcnJvclxuICAgIHRocm93IG5ldyBUZXhFcnJvcignRG91YmxlU3Vic2NyaXB0cycsICdEb3VibGUgc3Vic2NyaXB0czogdXNlIGJyYWNlcyB0byBjbGFyaWZ5Jyk7XG4gIH1cbiAgaWYgKCFOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ21zdWJzdXAnKSB8fCBOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ21zdXAnKSkge1xuICAgIGlmIChtb3Zlc3Vwc3ViKSB7XG4gICAgICAvLyBAdGVzdCBMYXJnZSBPcGVyYXRvciwgTW92ZSBTdXBlcnNjcmlwdFxuICAgICAgaWYgKCFOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ211bmRlcm92ZXInKSB8fCBOb2RlVXRpbC5pc1R5cGUoYmFzZSwgJ21vdmVyJykgfHxcbiAgICAgICAgICBOb2RlVXRpbC5nZXRDaGlsZEF0KGJhc2UsIChiYXNlIGFzIE1tbE11bmRlcm92ZXIpLnVuZGVyKSkge1xuICAgICAgICAvLyBAdGVzdCBNb3ZlIFN1cGVyc2NyaXB0XG4gICAgICAgIGJhc2UgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ211bmRlcm92ZXInLCBbYmFzZV0sIHttb3Zlc3Vwc3ViOiB0cnVlfSk7XG4gICAgICB9XG4gICAgICBwb3NpdGlvbiA9IChiYXNlIGFzIE1tbE11bmRlcm92ZXIpLnVuZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdGVzdCBFbXB0eSBCYXNlIEluZGV4LCBFbXB0eSBCYXNlIEluZGV4MiwgSW5kZXhcbiAgICAgIGJhc2UgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zdWJzdXAnLCBbYmFzZV0pO1xuICAgICAgcG9zaXRpb24gPSAoYmFzZSBhcyBNbWxNc3Vic3VwKS5zdWI7XG4gICAgfVxuICB9XG4gIHBhcnNlci5QdXNoKFxuICAgIHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ3N1YnN1cCcsIGJhc2UpLnNldFByb3BlcnRpZXMoe1xuICAgICAgcG9zaXRpb246IHBvc2l0aW9uLCBwcmltZXM6IHByaW1lcywgbW92ZXN1cHN1YjogbW92ZXN1cHN1YlxuICAgIH0pICk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlICdcbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IGMgVGhlIHBhcnNlZCBjaGFyYWN0ZXIuXG4gKi9cbkJhc2VNZXRob2RzLlByaW1lID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIGM6IHN0cmluZykge1xuICAvLyBAdGVzdCBQcmltZVxuICBsZXQgYmFzZSA9IHBhcnNlci5zdGFjay5QcmV2KCk7XG4gIGlmICghYmFzZSkge1xuICAgIC8vIEB0ZXN0IFByaW1lU3VwLCBQcmVQcmltZSwgUHJpbWUgb24gU3VwXG4gICAgYmFzZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbWknKTtcbiAgfVxuICBpZiAoTm9kZVV0aWwuaXNUeXBlKGJhc2UsICdtc3Vic3VwJykgJiYgIU5vZGVVdGlsLmlzVHlwZShiYXNlLCAnbXN1cCcpICYmXG4gICAgICBOb2RlVXRpbC5nZXRDaGlsZEF0KGJhc2UsIChiYXNlIGFzIE1tbE1zdWJzdXApLnN1cCkpIHtcbiAgICAvLyBAdGVzdCBEb3VibGUgUHJpbWUgRXJyb3JcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0RvdWJsZUV4cG9uZW50UHJpbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1ByaW1lIGNhdXNlcyBkb3VibGUgZXhwb25lbnQ6IHVzZSBicmFjZXMgdG8gY2xhcmlmeScpO1xuICB9XG4gIGxldCBzdXAgPSAnJztcbiAgcGFyc2VyLmktLTtcbiAgZG8ge1xuICAgIC8vIEB0ZXN0IFByaW1lLCBQcmltZVN1cCwgRG91YmxlIFByaW1lLCBQcmVQcmltZVxuICAgIHN1cCArPSBlbnRpdGllcy5wcmltZTsgcGFyc2VyLmkrKywgYyA9IHBhcnNlci5HZXROZXh0KCk7XG4gIH0gd2hpbGUgKGMgPT09ICdcXCcnIHx8IGMgPT09IGVudGl0aWVzLnJzcXVvKTtcbiAgc3VwID0gWycnLCAnXFx1MjAzMicsICdcXHUyMDMzJywgJ1xcdTIwMzQnLCAnXFx1MjA1NyddW3N1cC5sZW5ndGhdIHx8IHN1cDtcbiAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywge3ZhcmlhbnRGb3JtOiB0cnVlfSwgc3VwKTtcbiAgcGFyc2VyLlB1c2goXG4gICAgcGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgncHJpbWUnLCBiYXNlLCBub2RlKSApO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBjb21tZW50c1xuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gYyBUaGUgcGFyc2VkIGNoYXJhY3Rlci5cbiAqL1xuQmFzZU1ldGhvZHMuQ29tbWVudCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfYzogc3RyaW5nKSB7XG4gIHdoaWxlIChwYXJzZXIuaSA8IHBhcnNlci5zdHJpbmcubGVuZ3RoICYmIHBhcnNlci5zdHJpbmcuY2hhckF0KHBhcnNlci5pKSAhPT0gJ1xcbicpIHtcbiAgICBwYXJzZXIuaSsrO1xuICB9XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIGhhc2ggbWFya3Mgb3V0c2lkZSBvZiBkZWZpbml0aW9uc1xuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gYyBUaGUgcGFyc2VkIGNoYXJhY3Rlci5cbiAqL1xuQmFzZU1ldGhvZHMuSGFzaCA9IGZ1bmN0aW9uKF9wYXJzZXI6IFRleFBhcnNlciwgX2M6IHN0cmluZykge1xuICAvLyBAdGVzdCBIYXNoIEVycm9yXG4gIHRocm93IG5ldyBUZXhFcnJvcignQ2FudFVzZUhhc2gxJyxcbiAgICAgICAgICAgICAgICAgICAgICAnWW91IGNhblxcJ3QgdXNlIFxcJ21hY3JvIHBhcmFtZXRlciBjaGFyYWN0ZXIgI1xcJyBpbiBtYXRoIG1vZGUnKTtcbn07XG5cblxuXG4vKipcbiAqXG4gKiBIYW5kbGUgTGFUZVggTWFjcm9zXG4gKlxuICovXG5cblxuLyoqXG4gKiBIYW5kbGUgXFxtYXRocm0sIFxcbWF0aGJmLCBldGMsIGFsbG93aW5nIGZvciBtdWx0aS1sZXR0ZXIgcnVucyB0byBiZSBvbmUgPG1pPi5cbiAqL1xuQmFzZU1ldGhvZHMuTWF0aEZvbnQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCB2YXJpYW50OiBzdHJpbmcpIHtcbiAgY29uc3QgdGV4dCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgbGV0IG1tbCA9IG5ldyBUZXhQYXJzZXIodGV4dCwge1xuICAgIC4uLnBhcnNlci5zdGFjay5lbnYsXG4gICAgZm9udDogdmFyaWFudCxcbiAgICBtdWx0aUxldHRlcklkZW50aWZpZXJzOiAvXlthLXpBLVpdKy8gYXMgYW55LFxuICAgIG5vQXV0b09QOiB0cnVlXG4gIH0sIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgcGFyc2VyLlB1c2gocGFyc2VyLmNyZWF0ZSgnbm9kZScsICdUZVhBdG9tJywgW21tbF0pKTtcbn07XG5cbi8qKlxuICogU2V0dGluZyBmb250LCBlLmcuLCB2aWEgXFxcXHJtLCBcXFxcYmYgZXRjLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmb250IFRoZSBmb250IG5hbWUuXG4gKi9cbkJhc2VNZXRob2RzLlNldEZvbnQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZywgZm9udDogc3RyaW5nKSB7XG4gIHBhcnNlci5zdGFjay5lbnZbJ2ZvbnQnXSA9IGZvbnQ7XG59O1xuXG4vKipcbiAqIFNldHRpbmcgc3R5bGUsIGUuZy4sIHZpYSBcXFxcZGlzcGxheXN0eWxlLCBcXFxcdGV4dHN0eWxlLCBldGMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IHRleFN0eWxlIFRoZSB0ZXggc3R5bGUgbmFtZTogRCwgVCwgUywgU1NcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc3R5bGUgVHJ1ZSBpZiB3ZSBhcmUgaW4gZGlzcGxheXN0eWxlLlxuICogQHBhcmFtIHtzdHJpbmd9IGxldmVsIFRoZSBuZXN0aW5nIGxldmVsIGZvciBzY3JpcHRzLlxuICovXG5CYXNlTWV0aG9kcy5TZXRTdHlsZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXhTdHlsZTogc3RyaW5nLCBzdHlsZTogYm9vbGVhbixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw6IHN0cmluZykge1xuICBwYXJzZXIuc3RhY2suZW52WydzdHlsZSddID0gdGV4U3R5bGU7XG4gIHBhcnNlci5zdGFjay5lbnZbJ2xldmVsJ10gPSBsZXZlbDtcbiAgcGFyc2VyLlB1c2goXG4gICAgcGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnc3R5bGUnKS5zZXRQcm9wZXJ0eShcbiAgICAgICdzdHlsZXMnLCB7ZGlzcGxheXN0eWxlOiBzdHlsZSwgc2NyaXB0bGV2ZWw6IGxldmVsfSkpO1xufTtcblxuXG4vKipcbiAqIFNldHRpbmcgc2l6ZSBvZiBhbiBleHByZXNzaW9uLCBlLmcuLCBcXFxcc21hbGwsIFxcXFxodWdlLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzaXplIFRoZSBzaXplIHZhbHVlLlxuICovXG5CYXNlTWV0aG9kcy5TZXRTaXplID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcsIHNpemU6IG51bWJlcikge1xuICBwYXJzZXIuc3RhY2suZW52WydzaXplJ10gPSBzaXplO1xuICBwYXJzZXIuUHVzaChcbiAgICBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdzdHlsZScpLnNldFByb3BlcnR5KCdzdHlsZXMnLCB7bWF0aHNpemU6IGVtKHNpemUpfSkpO1xufTtcblxuLyoqXG4gKiBTZXR0aW5nIGV4cGxpY2l0IHNwYWNlcywgZS5nLiwgdmlhIGNvbW1hdGEgb3IgY29sb25zLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzcGFjZSBUaGUgc3BhY2UgdmFsdWUuXG4gKi9cbkJhc2VNZXRob2RzLlNwYWNlciA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfbmFtZTogc3RyaW5nLCBzcGFjZTogbnVtYmVyKSB7XG4gIC8vIEB0ZXN0IFBvc2l0aXZlIFNwYWNpbmcsIE5lZ2F0aXZlIFNwYWNpbmdcbiAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXNwYWNlJywgW10sIHt3aWR0aDogZW0oc3BhY2UpfSk7XG4gIGNvbnN0IHN0eWxlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3R5bGUnLCBbbm9kZV0sIHtzY3JpcHRsZXZlbDogMH0pO1xuICBwYXJzZXIuUHVzaChzdHlsZSk7XG59O1xuXG5cbi8qKlxuICogUGFyc2VzIGxlZnQvcmlnaHQgZmVuY2VkIGV4cHJlc3Npb25zLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuTGVmdFJpZ2h0ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvLyBAdGVzdCBGZW5jZWQsIEZlbmNlZDNcbiAgY29uc3QgZmlyc3QgPSBuYW1lLnN1YnN0cigxKTtcbiAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZShmaXJzdCwgcGFyc2VyLkdldERlbGltaXRlcihuYW1lKSwgcGFyc2VyLnN0YWNrLmVudi5jb2xvcikpO1xufTtcblxuLyoqXG4gKiBIYW5kbGUgYSBuYW1lZCBtYXRoIGZ1bmN0aW9uLCBlLmcuLCBcXFxcc2luLCBcXFxcY29zXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIEFsdGVybmF0aXZlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgZnVuY3Rpb24uXG4gKi9cbkJhc2VNZXRob2RzLk5hbWVkRm4gPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IE5hbWVkIEZ1bmN0aW9uXG4gIGlmICghaWQpIHtcbiAgICBpZCA9IG5hbWUuc3Vic3RyKDEpO1xuICB9XG4gIGNvbnN0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21pJywge3RleENsYXNzOiBURVhDTEFTUy5PUH0sIGlkKTtcbiAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnZm4nLCBtbWwpKTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGUgYSBuYW1lZCBtYXRoIG9wZXJhdG9yLCBlLmcuLCBcXFxcbWluLCBcXFxcbGltXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGlkIEFsdGVybmF0aXZlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgb3BlcmF0b3IuXG4gKi9cbkJhc2VNZXRob2RzLk5hbWVkT3AgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IExpbWl0XG4gIGlmICghaWQpIHtcbiAgICBpZCA9IG5hbWUuc3Vic3RyKDEpO1xuICB9XG4gIGlkID0gaWQucmVwbGFjZSgvJnRoaW5zcDsvLCAnXFx1MjAwNicpO1xuICBjb25zdCBtbWwgPSBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtbycsIHtcbiAgICBtb3ZhYmxlbGltaXRzOiB0cnVlLFxuICAgIG1vdmVzdXBzdWI6IHRydWUsXG4gICAgZm9ybTogVGV4Q29uc3RhbnQuRm9ybS5QUkVGSVgsXG4gICAgdGV4Q2xhc3M6IFRFWENMQVNTLk9QXG4gIH0sIGlkKTtcbiAgcGFyc2VyLlB1c2gobW1sKTtcbn07XG5cbi8qKlxuICogSGFuZGxlIGEgbGltaXRzIGNvbW1hbmQgZm9yIG1hdGggb3BlcmF0b3JzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBsaW1pdHMgVGhlIGxpbWl0cyBhcmd1bWVudHMuXG4gKi9cbkJhc2VNZXRob2RzLkxpbWl0cyA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfbmFtZTogc3RyaW5nLCBsaW1pdHM6IHN0cmluZykge1xuICAvLyBAdGVzdCBMaW1pdHNcbiAgbGV0IG9wID0gcGFyc2VyLnN0YWNrLlByZXYodHJ1ZSk7XG4gIC8vIEdldCB0aGUgdGV4Y2xhc3MgZm9yIHRoZSBjb3JlIG9wZXJhdG9yLlxuICBpZiAoIW9wIHx8IChOb2RlVXRpbC5nZXRUZXhDbGFzcyhOb2RlVXRpbC5nZXRDb3JlTU8ob3ApKSAhPT0gVEVYQ0xBU1MuT1AgJiZcbiAgICAgICAgICAgICAgTm9kZVV0aWwuZ2V0UHJvcGVydHkob3AsICdtb3Zlc3Vwc3ViJykgPT0gbnVsbCkpIHtcbiAgICAvLyBAdGVzdCBMaW1pdHMgRXJyb3JcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ01pc3BsYWNlZExpbWl0cycsICclMSBpcyBhbGxvd2VkIG9ubHkgb24gb3BlcmF0b3JzJywgcGFyc2VyLmN1cnJlbnRDUyk7XG4gIH1cbiAgY29uc3QgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICBsZXQgbm9kZTtcbiAgaWYgKE5vZGVVdGlsLmlzVHlwZShvcCwgJ211bmRlcm92ZXInKSAmJiAhbGltaXRzKSB7XG4gICAgLy8gQHRlc3QgTGltaXRzIFVuZGVyT3ZlclxuICAgIG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zdWJzdXAnKTtcbiAgICBOb2RlVXRpbC5jb3B5Q2hpbGRyZW4ob3AsIG5vZGUpO1xuICAgIG9wID0gdG9wLkxhc3QgPSBub2RlO1xuICB9IGVsc2UgaWYgKE5vZGVVdGlsLmlzVHlwZShvcCwgJ21zdWJzdXAnKSAmJiBsaW1pdHMpIHtcbiAgICAvLyBAdGVzdCBMaW1pdHMgU3ViU3VwXG4gICAgLy8gbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXVuZGVyb3ZlcicsIE5vZGVVdGlsLmdldENoaWxkcmVuKG9wKSwge30pO1xuICAgIC8vIE5lZWRzIHRvIGJlIGNvcGllZCwgb3RoZXJ3aXNlIHdlIGdldCBhbiBlcnJvciBpbiBNbWxOb2RlLmFwcGVuZENoaWxkIVxuICAgIG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ211bmRlcm92ZXInKTtcbiAgICBOb2RlVXRpbC5jb3B5Q2hpbGRyZW4ob3AsIG5vZGUpO1xuICAgIG9wID0gdG9wLkxhc3QgPSBub2RlO1xuICB9XG4gIE5vZGVVdGlsLnNldFByb3BlcnR5KG9wLCAnbW92ZXN1cHN1YicsIGxpbWl0cyA/IHRydWUgOiBmYWxzZSk7XG4gIE5vZGVVdGlsLnNldFByb3BlcnRpZXMoTm9kZVV0aWwuZ2V0Q29yZU1PKG9wKSwgeydtb3ZhYmxlbGltaXRzJzogZmFsc2V9KTtcbiAgaWYgKE5vZGVVdGlsLmdldEF0dHJpYnV0ZShvcCwgJ21vdmFibGVsaW1pdHMnKSB8fFxuICAgICAgTm9kZVV0aWwuZ2V0UHJvcGVydHkob3AsICdtb3ZhYmxlbGltaXRzJykpIHtcbiAgICBOb2RlVXRpbC5zZXRQcm9wZXJ0aWVzKG9wLCB7J21vdmFibGVsaW1pdHMnOiBmYWxzZX0pO1xuICB9XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIG92ZXIgY29tbWFuZHMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wZW4gVGhlIG9wZW4gZGVsaW1pdGVyIGluIGNhc2Ugb2YgYSBcIndpdGhkZWxpbVwiIHZlcnNpb24uXG4gKiBAcGFyYW0ge3N0cmluZ30gY2xvc2UgVGhlIGNsb3NlIGRlbGltaXRlci5cbiAqL1xuQmFzZU1ldGhvZHMuT3ZlciA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIG9wZW46IHN0cmluZywgY2xvc2U6IHN0cmluZykge1xuICAvLyBAdGVzdCBPdmVyXG4gIGNvbnN0IG1tbCA9IHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ292ZXInKS5zZXRQcm9wZXJ0eSgnbmFtZScsIHBhcnNlci5jdXJyZW50Q1MpIDtcbiAgaWYgKG9wZW4gfHwgY2xvc2UpIHtcbiAgICAvLyBAdGVzdCBDaG9vc2VcbiAgICBtbWwuc2V0UHJvcGVydHkoJ29wZW4nLCBvcGVuKTtcbiAgICBtbWwuc2V0UHJvcGVydHkoJ2Nsb3NlJywgY2xvc2UpO1xuICB9IGVsc2UgaWYgKG5hbWUubWF0Y2goL3dpdGhkZWxpbXMkLykpIHtcbiAgICAvLyBAdGVzdCBPdmVyIFdpdGggRGVsaW1zLCBBYm92ZSBXaXRoIERlbGltc1xuICAgIG1tbC5zZXRQcm9wZXJ0eSgnb3BlbicsIHBhcnNlci5HZXREZWxpbWl0ZXIobmFtZSkpO1xuICAgIG1tbC5zZXRQcm9wZXJ0eSgnY2xvc2UnLCBwYXJzZXIuR2V0RGVsaW1pdGVyKG5hbWUpKTtcbiAgfVxuICBpZiAobmFtZS5tYXRjaCgvXlxcXFxhYm92ZS8pKSB7XG4gICAgLy8gQHRlc3QgQWJvdmUsIEFib3ZlIFdpdGggRGVsaW1zXG4gICAgbW1sLnNldFByb3BlcnR5KCd0aGlja25lc3MnLCBwYXJzZXIuR2V0RGltZW4obmFtZSkpO1xuICB9XG4gIGVsc2UgaWYgKG5hbWUubWF0Y2goL15cXFxcYXRvcC8pIHx8IG9wZW4gfHwgY2xvc2UpIHtcbiAgICAvLyBAdGVzdCBDaG9vc2VcbiAgICBtbWwuc2V0UHJvcGVydHkoJ3RoaWNrbmVzcycsIDApO1xuICB9XG4gIHBhcnNlci5QdXNoKG1tbCk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyBhIGZyYWN0aW9uLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuRnJhYyA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgRnJhY1xuICBjb25zdCBudW0gPSBwYXJzZXIuUGFyc2VBcmcobmFtZSk7XG4gIGNvbnN0IGRlbiA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbWZyYWMnLCBbbnVtLCBkZW5dKTtcbiAgcGFyc2VyLlB1c2gobm9kZSk7XG59O1xuXG4vKipcbiAqIFBhcnNlcyBhIHNxdWFyZSByb290IGVsZW1lbnQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5TcXJ0ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCBuID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpO1xuICBsZXQgYXJnID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBpZiAoYXJnID09PSAnXFxcXGZyYWMnKSB7XG4gICAgYXJnICArPSAneycgKyBwYXJzZXIuR2V0QXJndW1lbnQoYXJnKSArICd9eycgKyBwYXJzZXIuR2V0QXJndW1lbnQoYXJnKSArICd9JztcbiAgfVxuICBsZXQgbW1sID0gbmV3IFRleFBhcnNlcihhcmcsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgaWYgKCFuKSB7XG4gICAgLy8gQHRlc3QgU3F1YXJlIFJvb3RcbiAgICBtbWwgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zcXJ0JywgW21tbF0pO1xuICB9IGVsc2Uge1xuICAgIC8vIEB0ZXN0IEdlbmVyYWwgUm9vdFxuICAgIG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXJvb3QnLCBbbW1sLCBwYXJzZVJvb3QocGFyc2VyLCBuKV0pO1xuICB9XG4gIHBhcnNlci5QdXNoKG1tbCk7XG59O1xuXG5cbi8vIFV0aWxpdHlcbi8qKlxuICogUGFyc2UgYSBnZW5lcmFsIHJvb3QuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuIFRoZSBpbmRleCBvZiB0aGUgcm9vdC5cbiAqL1xuZnVuY3Rpb24gcGFyc2VSb290KHBhcnNlcjogVGV4UGFyc2VyLCBuOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgR2VuZXJhbCBSb290LCBFeHBsaWNpdCBSb290XG4gIGNvbnN0IGVudiA9IHBhcnNlci5zdGFjay5lbnY7XG4gIGNvbnN0IGluUm9vdCA9IGVudlsnaW5Sb290J107XG4gIGVudlsnaW5Sb290J10gPSB0cnVlO1xuICBjb25zdCBuZXdQYXJzZXIgPSBuZXcgVGV4UGFyc2VyKG4sIGVudiwgcGFyc2VyLmNvbmZpZ3VyYXRpb24pO1xuICBsZXQgbm9kZSA9IG5ld1BhcnNlci5tbWwoKTtcbiAgY29uc3QgZ2xvYmFsID0gbmV3UGFyc2VyLnN0YWNrLmdsb2JhbDtcbiAgaWYgKGdsb2JhbFsnbGVmdFJvb3QnXSB8fCBnbG9iYWxbJ3VwUm9vdCddKSB7XG4gICAgLy8gQHRlc3QgVHdlYWtlZCBSb290XG4gICAgY29uc3QgZGVmOiBFbnZMaXN0ID0ge307XG4gICAgaWYgKGdsb2JhbFsnbGVmdFJvb3QnXSkge1xuICAgICAgZGVmWyd3aWR0aCddID0gZ2xvYmFsWydsZWZ0Um9vdCddO1xuICAgIH1cbiAgICBpZiAoZ2xvYmFsWyd1cFJvb3QnXSkge1xuICAgICAgZGVmWyd2b2Zmc2V0J10gPSBnbG9iYWxbJ3VwUm9vdCddO1xuICAgICAgZGVmWydoZWlnaHQnXSA9IGdsb2JhbFsndXBSb290J107XG4gICAgfVxuICAgIG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbbm9kZV0sIGRlZik7XG4gIH1cbiAgZW52WydpblJvb3QnXSA9IGluUm9vdDtcbiAgcmV0dXJuIG5vZGU7XG59XG5cblxuLyoqXG4gKiBQYXJzZSBhIGdlbmVyYWwgcm9vdC5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkJhc2VNZXRob2RzLlJvb3QgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IG4gPSBwYXJzZXIuR2V0VXBUbyhuYW1lLCAnXFxcXG9mJyk7XG4gIGNvbnN0IGFyZyA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXJvb3QnLCBbYXJnLCBwYXJzZVJvb3QocGFyc2VyLCBuKV0pO1xuICBwYXJzZXIuUHVzaChub2RlKTtcbn07XG5cblxuLyoqXG4gKiBQYXJzZXMgYSBtb3ZhYmxlIGluZGV4IGVsZW1lbnQgaW4gYSByb290LCBlLmcuIFxcXFx1cHJvb3QsIFxcXFxsZWZ0cm9vdFxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpZCBBcmd1bWVudCB3aGljaCBzaG91bGQgYmUgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gaW50ZWdlci5cbiAqL1xuQmFzZU1ldGhvZHMuTW92ZVJvb3QgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBpZDogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IFR3ZWFrZWQgUm9vdFxuICBpZiAoIXBhcnNlci5zdGFjay5lbnZbJ2luUm9vdCddKSB7XG4gICAgLy8gQHRlc3QgTWlzcGxhY2VkIE1vdmUgUm9vdFxuICAgIHRocm93IG5ldyBUZXhFcnJvcignTWlzcGxhY2VkTW92ZVJvb3QnLCAnJTEgY2FuIGFwcGVhciBvbmx5IHdpdGhpbiBhIHJvb3QnLCBwYXJzZXIuY3VycmVudENTKTtcbiAgfVxuICBpZiAocGFyc2VyLnN0YWNrLmdsb2JhbFtpZF0pIHtcbiAgICAvLyBAdGVzdCBNdWx0aXBsZSBNb3ZlIFJvb3RcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ011bHRpcGxlTW92ZVJvb3QnLCAnTXVsdGlwbGUgdXNlIG9mICUxJywgcGFyc2VyLmN1cnJlbnRDUyk7XG4gIH1cbiAgbGV0IG4gPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGlmICghbi5tYXRjaCgvLT9bMC05XSsvKSkge1xuICAgIC8vIEB0ZXN0IEluY29ycmVjdCBNb3ZlIFJvb3RcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0ludGVnZXJBcmcnLCAnVGhlIGFyZ3VtZW50IHRvICUxIG11c3QgYmUgYW4gaW50ZWdlcicsIHBhcnNlci5jdXJyZW50Q1MpO1xuICB9XG4gIG4gPSAocGFyc2VJbnQobiwgMTApIC8gMTUpICsgJ2VtJztcbiAgaWYgKG4uc3Vic3RyKDAsIDEpICE9PSAnLScpIHtcbiAgICBuID0gJysnICsgbjtcbiAgfVxuICBwYXJzZXIuc3RhY2suZ2xvYmFsW2lkXSA9IG47XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIGFjY2VudHMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGFjY2VudCBUaGUgYWNjZW50LlxuICogQHBhcmFtIHtib29sZWFufSBzdHJldGNoeSBUcnVlIGlmIGFjY2VudCBpcyBzdHJldGNoeS5cbiAqL1xuQmFzZU1ldGhvZHMuQWNjZW50ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZywgYWNjZW50OiBzdHJpbmcsIHN0cmV0Y2h5OiBib29sZWFuKSB7XG4gIC8vIEB0ZXN0IFZlY3RvclxuICBjb25zdCBjID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICAvLyBAdGVzdCBWZWN0b3IgRm9udFxuICBjb25zdCBkZWYgPSB7Li4uUGFyc2VVdGlsLmdldEZvbnREZWYocGFyc2VyKSwgYWNjZW50OiB0cnVlLCBtYXRoYWNjZW50OiB0cnVlfTtcbiAgY29uc3QgZW50aXR5ID0gTm9kZVV0aWwuY3JlYXRlRW50aXR5KGFjY2VudCk7XG4gIGNvbnN0IG1vTm9kZSA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywgZGVmLCBlbnRpdHkpO1xuICBjb25zdCBtbWwgPSBtb05vZGU7XG4gIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbWwsICdzdHJldGNoeScsIHN0cmV0Y2h5ID8gdHJ1ZSA6IGZhbHNlKTtcbiAgLy8gQHRlc3QgVmVjdG9yIE9wLCBWZWN0b3JcbiAgY29uc3QgbW8gPSAoTm9kZVV0aWwuaXNFbWJlbGxpc2hlZChjKSA/IE5vZGVVdGlsLmdldENvcmVNTyhjKSA6IGMpO1xuICBpZiAoTm9kZVV0aWwuaXNUeXBlKG1vLCAnbW8nKSB8fCBOb2RlVXRpbC5nZXRQcm9wZXJ0eShtbywgJ21vdmFibGVsaW1pdHMnKSkge1xuICAgIC8vIEB0ZXN0IFZlY3RvciBPcFxuICAgIE5vZGVVdGlsLnNldFByb3BlcnRpZXMobW8sIHsnbW92YWJsZWxpbWl0cyc6IGZhbHNlfSk7XG4gIH1cbiAgY29uc3QgbXVvTm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXVuZGVyb3ZlcicpO1xuICAvLyBUaGlzIGlzIG5lY2Vzc2FyeSB0byBnZXQgdGhlIGVtcHR5IGVsZW1lbnQgaW50byB0aGUgY2hpbGRyZW4uXG4gIE5vZGVVdGlsLnNldENoaWxkKG11b05vZGUsIDAsIGMpO1xuICBOb2RlVXRpbC5zZXRDaGlsZChtdW9Ob2RlLCAxLCBudWxsKTtcbiAgTm9kZVV0aWwuc2V0Q2hpbGQobXVvTm9kZSwgMiwgbW1sKTtcbiAgbGV0IHRleEF0b20gPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbbXVvTm9kZV0pO1xuICBwYXJzZXIuUHVzaCh0ZXhBdG9tKTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGVzIHN0YWNrZWQgZWxlbWVudHMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IGMgQ2hhcmFjdGVyIHRvIHN0YWNrLlxuICogQHBhcmFtIHtib29sZWFufSBzdGFjayBUcnVlIGlmIHN0YWNrZWQgb3BlcmF0b3IuXG4gKi9cbkJhc2VNZXRob2RzLlVuZGVyT3ZlciA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIGM6IHN0cmluZywgc3RhY2s6IGJvb2xlYW4pIHtcbiAgY29uc3QgZW50aXR5ID0gTm9kZVV0aWwuY3JlYXRlRW50aXR5KGMpO1xuICBjb25zdCBtbyA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywge3N0cmV0Y2h5OiB0cnVlLCBhY2NlbnQ6IHRydWV9LCBlbnRpdHkpO1xuICBjb25zdCBwb3MgPSAobmFtZS5jaGFyQXQoMSkgPT09ICdvJyA/ICdvdmVyJyA6ICd1bmRlcicpO1xuICBjb25zdCBiYXNlID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBwYXJzZXIuUHVzaChQYXJzZVV0aWwudW5kZXJPdmVyKHBhcnNlciwgYmFzZSwgbW8sIHBvcywgc3RhY2spKTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGVzIG92ZXJzZXQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5PdmVyc2V0ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvLyBAdGVzdCBPdmVyc2V0XG4gIGNvbnN0IHRvcCA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgY29uc3QgYmFzZSA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgUGFyc2VVdGlsLmNoZWNrTW92YWJsZUxpbWl0cyhiYXNlKTtcbiAgaWYgKHRvcC5pc0tpbmQoJ21vJykpIHtcbiAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUodG9wLCAnYWNjZW50JywgZmFsc2UpO1xuICB9XG4gIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21vdmVyJywgW2Jhc2UsIHRvcF0pO1xuICBwYXJzZXIuUHVzaChub2RlKTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGVzIHVuZGVyc2V0LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuVW5kZXJzZXQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IFVuZGVyc2V0XG4gIGNvbnN0IGJvdCA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgY29uc3QgYmFzZSA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgUGFyc2VVdGlsLmNoZWNrTW92YWJsZUxpbWl0cyhiYXNlKTtcbiAgaWYgKGJvdC5pc0tpbmQoJ21vJykpIHtcbiAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUoYm90LCAnYWNjZW50JywgZmFsc2UpO1xuICB9XG4gIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ211bmRlcicsIFtiYXNlLCBib3RdLCB7YWNjZW50dW5kZXI6IGZhbHNlfSk7XG4gIHBhcnNlci5QdXNoKG5vZGUpO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZXMgb3ZlcnVuZGVyc2V0LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuT3ZlcnVuZGVyc2V0ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCB0b3AgPSBwYXJzZXIuUGFyc2VBcmcobmFtZSk7XG4gIGNvbnN0IGJvdCA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgY29uc3QgYmFzZSA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgUGFyc2VVdGlsLmNoZWNrTW92YWJsZUxpbWl0cyhiYXNlKTtcbiAgaWYgKHRvcC5pc0tpbmQoJ21vJykpIHtcbiAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUodG9wLCAnYWNjZW50JywgZmFsc2UpO1xuICB9XG4gIGlmIChib3QuaXNLaW5kKCdtbycpKSB7XG4gICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKGJvdCwgJ2FjY2VudCcsIGZhbHNlKTtcbiAgfVxuICBjb25zdCBub2RlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdW5kZXJvdmVyJywgW2Jhc2UsIGJvdCwgdG9wXSwge2FjY2VudDogZmFsc2UsIGFjY2VudHVuZGVyOiBmYWxzZX0pO1xuICBwYXJzZXIuUHVzaChub2RlKTtcbn07XG5cblxuLyoqXG4gKiBDcmVhdGVzIFRlWEF0b20sIHdoZW4gY2xhc3Mgb2YgZWxlbWVudCBpcyBjaGFuZ2VkIGV4cGxpY2l0bHkuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtudW1iZXJ9IG1jbGFzcyBUaGUgbmV3IFRlWCBjbGFzcy5cbiAqL1xuQmFzZU1ldGhvZHMuVGVYQXRvbSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIG1jbGFzczogbnVtYmVyKSB7XG4gIGxldCBkZWY6IEVudkxpc3QgPSB7dGV4Q2xhc3M6IG1jbGFzc307XG4gIGxldCBtbWw6IFN0YWNrSXRlbSB8IE1tbE5vZGU7XG4gIGxldCBub2RlOiBNbWxOb2RlO1xuICBsZXQgcGFyc2VkOiBNbWxOb2RlO1xuICBpZiAobWNsYXNzID09PSBURVhDTEFTUy5PUCkge1xuICAgIGRlZlsnbW92ZXN1cHN1YiddID0gZGVmWydtb3ZhYmxlbGltaXRzJ10gPSB0cnVlO1xuICAgIGNvbnN0IGFyZyA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBjb25zdCBtYXRjaCA9IGFyZy5tYXRjaCgvXlxccypcXFxccm1cXHMrKFthLXpBLVowLTkgXSspJC8pO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgLy8gQHRlc3QgTWF0aG9wXG4gICAgICBkZWZbJ21hdGh2YXJpYW50J10gPSBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTDtcbiAgICAgIG5vZGUgPSBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtaScsIGRlZiwgbWF0Y2hbMV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdGVzdCBNYXRob3AgQ2FsXG4gICAgICBwYXJzZWQgPSBuZXcgVGV4UGFyc2VyKGFyZywgcGFyc2VyLnN0YWNrLmVudiwgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpO1xuICAgICAgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFtwYXJzZWRdLCBkZWYpO1xuICAgIH1cbiAgICBtbWwgPSBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdmbicsIG5vZGUpO1xuICB9IGVsc2Uge1xuICAgIC8vIEB0ZXN0IE1hdGhyZWxcbiAgICBwYXJzZWQgPSBwYXJzZXIuUGFyc2VBcmcobmFtZSk7XG4gICAgbW1sID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdUZVhBdG9tJywgW3BhcnNlZF0sIGRlZik7XG4gIH1cbiAgcGFyc2VyLlB1c2gobW1sKTtcbn07XG5cblxuLyoqXG4gKiBDcmVhdGVzIG1tbHRva2VuIGVsZW1lbnRzLiBVc2VkIGluIE1hY3JvIHN1YnN0aXR1dGlvbnMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5NbWxUb2tlbiA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgTW9kdWxvXG4gIGNvbnN0IGtpbmQgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGxldCBhdHRyID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcnKS5yZXBsYWNlKC9eXFxzKy8sICcnKTtcbiAgY29uc3QgdGV4dCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgY29uc3QgZGVmOiBFbnZMaXN0ID0ge307XG4gIGNvbnN0IGtlZXA6IHN0cmluZ1tdID0gW107XG4gIGxldCBub2RlOiBNbWxOb2RlO1xuICB0cnkge1xuICAgIG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywga2luZCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBub2RlID0gbnVsbDtcbiAgfVxuICBpZiAoIW5vZGUgfHwgIW5vZGUuaXNUb2tlbikge1xuICAgIC8vIEB0ZXN0IFRva2VuIElsbGVnYWwgVHlwZSwgVG9rZW4gV3JvbmcgVHlwZVxuICAgIHRocm93IG5ldyBUZXhFcnJvcignTm90TWF0aE1MVG9rZW4nLCAnJTEgaXMgbm90IGEgdG9rZW4gZWxlbWVudCcsIGtpbmQpO1xuICB9XG4gIHdoaWxlIChhdHRyICE9PSAnJykge1xuICAgIGNvbnN0IG1hdGNoID0gYXR0ci5tYXRjaCgvXihbYS16XSspXFxzKj1cXHMqKCdbXiddKid8XCJbXlwiXSpcInxbXiAsXSopXFxzKiw/XFxzKi9pKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICAvLyBAdGVzdCBUb2tlbiBJbnZhbGlkIEF0dHJpYnV0ZVxuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdJbnZhbGlkTWF0aE1MQXR0cicsICdJbnZhbGlkIE1hdGhNTCBhdHRyaWJ1dGU6ICUxJywgYXR0cik7XG4gICAgfVxuICAgIGlmICghbm9kZS5hdHRyaWJ1dGVzLmhhc0RlZmF1bHQobWF0Y2hbMV0pICYmICFNbWxUb2tlbkFsbG93W21hdGNoWzFdXSkge1xuICAgICAgLy8gQHRlc3QgVG9rZW4gVW5rbm93biBBdHRyaWJ1dGUsIFRva2VuIFdyb25nIEF0dHJpYnV0ZVxuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdVbmtub3duQXR0ckZvckVsZW1lbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnJTEgaXMgbm90IGEgcmVjb2duaXplZCBhdHRyaWJ1dGUgZm9yICUyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hbMV0sIGtpbmQpO1xuICAgIH1cbiAgICBsZXQgdmFsdWU6IHN0cmluZyB8IGJvb2xlYW4gPSBQYXJzZVV0aWwuTW1sRmlsdGVyQXR0cmlidXRlKFxuICAgICAgcGFyc2VyLCBtYXRjaFsxXSwgbWF0Y2hbMl0ucmVwbGFjZSgvXihbJ1wiXSkoLiopXFwxJC8sICckMicpKTtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScpIHtcbiAgICAgICAgdmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAodmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykge1xuICAgICAgICB2YWx1ZSA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgZGVmW21hdGNoWzFdXSA9IHZhbHVlO1xuICAgICAga2VlcC5wdXNoKG1hdGNoWzFdKTtcbiAgICB9XG4gICAgYXR0ciA9IGF0dHIuc3Vic3RyKG1hdGNoWzBdLmxlbmd0aCk7XG4gIH1cbiAgaWYgKGtlZXAubGVuZ3RoKSB7XG4gICAgZGVmWydtangta2VlcC1hdHRycyddID0ga2VlcC5qb2luKCcgJyk7XG4gIH1cbiAgY29uc3QgdGV4dE5vZGUgPSBwYXJzZXIuY3JlYXRlKCd0ZXh0JywgdGV4dCk7XG4gIG5vZGUuYXBwZW5kQ2hpbGQodGV4dE5vZGUpO1xuICBOb2RlVXRpbC5zZXRQcm9wZXJ0aWVzKG5vZGUsIGRlZik7XG4gIHBhcnNlci5QdXNoKG5vZGUpO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBzdHJ1dC5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkJhc2VNZXRob2RzLlN0cnV0ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgU3RydXRcbiAgY29uc3Qgcm93ID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcm93Jyk7XG4gIGNvbnN0IHBhZGRlZCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtyb3ddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2hlaWdodDogJzguNnB0JywgZGVwdGg6ICczcHQnLCB3aWR0aDogMH0pO1xuICBwYXJzZXIuUHVzaChwYWRkZWQpO1xufTtcblxuLyoqXG4gKiBIYW5kbGUgcGhhbnRvbSBjb21tYW5kcy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdiBWZXJ0aWNhbCBzaXplLlxuICogQHBhcmFtIHtzdHJpbmd9IGggSG9yaXpvbnRhbCBzaXplLlxuICovXG5CYXNlTWV0aG9kcy5QaGFudG9tID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZywgdjogc3RyaW5nLCBoOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgUGhhbnRvbVxuICBsZXQgYm94ID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGhhbnRvbScsIFtwYXJzZXIuUGFyc2VBcmcobmFtZSldKTtcbiAgaWYgKHYgfHwgaCkge1xuICAgIC8vIFRFTVA6IENoYW5nZXMgaGVyZVxuICAgIGJveCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtib3hdKTtcbiAgICBpZiAoaCkge1xuICAgICAgLy8gQHRlc3QgSG9yaXpvbnRhbCBQaGFudG9tXG4gICAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUoYm94LCAnaGVpZ2h0JywgMCk7XG4gICAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUoYm94LCAnZGVwdGgnLCAwKTtcbiAgICB9XG4gICAgaWYgKHYpIHtcbiAgICAgIC8vIEB0ZXN0IFZlcnRpY2FsIFBoYW50b21cbiAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShib3gsICd3aWR0aCcsIDApO1xuICAgIH1cbiAgfVxuICBjb25zdCBhdG9tID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdUZVhBdG9tJywgW2JveF0pO1xuICBwYXJzZXIuUHVzaChhdG9tKTtcbn07XG5cbi8qKlxuICogSGFuZGxlIHNtYXNoLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuU21hc2ggPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IFNtYXNoLCBTbWFzaCBUb3AsIFNtYXNoIEJvdHRvbVxuICBjb25zdCBidCA9IFBhcnNlVXRpbC50cmltU3BhY2VzKHBhcnNlci5HZXRCcmFja2V0cyhuYW1lLCAnJykpO1xuICBjb25zdCBzbWFzaCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtwYXJzZXIuUGFyc2VBcmcobmFtZSldKTtcbiAgLy8gVEVNUDogQ2hhbmdlcyBoZXJlOlxuICBzd2l0Y2ggKGJ0KSB7XG4gIGNhc2UgJ2InOiBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUoc21hc2gsICdkZXB0aCcsIDApOyBicmVhaztcbiAgY2FzZSAndCc6IE5vZGVVdGlsLnNldEF0dHJpYnV0ZShzbWFzaCwgJ2hlaWdodCcsIDApOyBicmVhaztcbiAgZGVmYXVsdDpcbiAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUoc21hc2gsICdoZWlnaHQnLCAwKTtcbiAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUoc21hc2gsICdkZXB0aCcsIDApO1xuICB9XG4gIGNvbnN0IGF0b20gPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbc21hc2hdKTtcbiAgcGFyc2VyLlB1c2goYXRvbSk7XG59O1xuXG4vKipcbiAqIEhhbmRsZSBybGFwIGFuZCBsbGFwIGNvbW1hbmRzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuTGFwID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvLyBAdGVzdCBMbGFwLCBSbGFwXG4gIGNvbnN0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtwYXJzZXIuUGFyc2VBcmcobmFtZSldLCB7d2lkdGg6IDB9KTtcbiAgaWYgKG5hbWUgPT09ICdcXFxcbGxhcCcpIHtcbiAgICAvLyBAdGVzdCBMbGFwXG4gICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKG1tbCwgJ2xzcGFjZScsICctMXdpZHRoJyk7XG4gIH1cbiAgY29uc3QgYXRvbSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFttbWxdKTtcbiAgcGFyc2VyLlB1c2goYXRvbSk7XG59O1xuXG4vKipcbiAqIEhhbmRsZSByYWlzZSBhbmQgbG93ZXIgY29tbWFuZHMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5SYWlzZUxvd2VyID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvLyBAdGVzdCBSYWlzZSwgTG93ZXIsIFJhaXNlIE5lZ2F0aXZlLCBMb3dlciBOZWdhdGl2ZVxuICBsZXQgaCA9IHBhcnNlci5HZXREaW1lbihuYW1lKTtcbiAgbGV0IGl0ZW0gPVxuICAgIHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ3Bvc2l0aW9uJykuc2V0UHJvcGVydGllcyh7bmFtZTogcGFyc2VyLmN1cnJlbnRDUywgbW92ZTogJ3ZlcnRpY2FsJ30pIDtcbiAgLy8gVEVNUDogQ2hhbmdlcyBoZXJlOlxuICBpZiAoaC5jaGFyQXQoMCkgPT09ICctJykge1xuICAgIC8vIEB0ZXN0IFJhaXNlIE5lZ2F0aXZlLCBMb3dlciBOZWdhdGl2ZVxuICAgIGggPSBoLnNsaWNlKDEpO1xuICAgIG5hbWUgPSBuYW1lLnN1YnN0cigxKSA9PT0gJ3JhaXNlJyA/ICdcXFxcbG93ZXInIDogJ1xcXFxyYWlzZSc7XG4gIH1cbiAgaWYgKG5hbWUgPT09ICdcXFxcbG93ZXInKSB7XG4gICAgLy8gQHRlc3QgUmFpc2UsIFJhaXNlIE5lZ2F0aXZlXG4gICAgaXRlbS5zZXRQcm9wZXJ0eSgnZGgnLCAnLScgKyBoKTtcbiAgICBpdGVtLnNldFByb3BlcnR5KCdkZCcsICcrJyArIGgpO1xuICB9IGVsc2Uge1xuICAgIC8vIEB0ZXN0IExvd2VyLCBMb3dlciBOZWdhdGl2ZVxuICAgIGl0ZW0uc2V0UHJvcGVydHkoJ2RoJywgJysnICsgaCk7XG4gICAgaXRlbS5zZXRQcm9wZXJ0eSgnZGQnLCAnLScgKyBoKTtcbiAgfVxuICBwYXJzZXIuUHVzaChpdGVtKTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGUgbW92ZWxlZnQsIG1vdmVyaWdodCBjb21tYW5kc1xuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuTW92ZUxlZnRSaWdodCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgTW92ZSBMZWZ0LCBNb3ZlIFJpZ2h0LCBNb3ZlIExlZnQgTmVnYXRpdmUsIE1vdmUgUmlnaHQgTmVnYXRpdmVcbiAgbGV0IGggPSBwYXJzZXIuR2V0RGltZW4obmFtZSk7XG4gIGxldCBuaCA9IChoLmNoYXJBdCgwKSA9PT0gJy0nID8gaC5zbGljZSgxKSA6ICctJyArIGgpO1xuICBpZiAobmFtZSA9PT0gJ1xcXFxtb3ZlbGVmdCcpIHtcbiAgICBsZXQgdG1wID0gaDtcbiAgICBoID0gbmg7XG4gICAgbmggPSB0bXA7XG4gIH1cbiAgcGFyc2VyLlB1c2goXG4gICAgcGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgncG9zaXRpb24nKS5zZXRQcm9wZXJ0aWVzKHtcbiAgICAgIG5hbWU6IHBhcnNlci5jdXJyZW50Q1MsIG1vdmU6ICdob3Jpem9udGFsJyxcbiAgICAgIGxlZnQ6ICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zcGFjZScsIFtdLCB7d2lkdGg6IGh9KSxcbiAgICAgIHJpZ2h0OiBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zcGFjZScsIFtdLCB7d2lkdGg6IG5ofSl9KSApO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBob3Jpem9udGFsIHNwYWNpbmcgY29tbWFuZHMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5Ic2tpcCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgTW9kdWxvXG4gIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zcGFjZScsIFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7d2lkdGg6IHBhcnNlci5HZXREaW1lbihuYW1lKX0pO1xuICBwYXJzZXIuUHVzaChub2RlKTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGUgcmVtb3ZhbCBvZiBzcGFjZXMgaW4gc2NyaXB0IG1vZGVzXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5Ob25zY3JpcHQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZykge1xuICBwYXJzZXIuUHVzaChwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdub25zY3JpcHQnKSk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIFJ1bGUgYW5kIFNwYWNlIGNvbW1hbmRcbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGUgVGhlIHN0eWxlIG9mIHRoZSBydWxlIHNwYWNlci5cbiAqL1xuQmFzZU1ldGhvZHMuUnVsZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgUnVsZSAzRCwgU3BhY2UgM0RcbiAgY29uc3QgdyA9IHBhcnNlci5HZXREaW1lbihuYW1lKSxcbiAgaCA9IHBhcnNlci5HZXREaW1lbihuYW1lKSxcbiAgZCA9IHBhcnNlci5HZXREaW1lbihuYW1lKTtcbiAgbGV0IGRlZjogRW52TGlzdCA9IHt3aWR0aDogdywgaGVpZ2h0OiBoLCBkZXB0aDogZH07XG4gIGlmIChzdHlsZSAhPT0gJ2JsYW5rJykge1xuICAgIGRlZlsnbWF0aGJhY2tncm91bmQnXSA9IChwYXJzZXIuc3RhY2suZW52Wydjb2xvciddIHx8ICdibGFjaycpO1xuICB9XG4gIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zcGFjZScsIFtdLCBkZWYpO1xuICBwYXJzZXIuUHVzaChub2RlKTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGUgcnVsZSBjb21tYW5kLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMucnVsZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgUnVsZSAyRFxuICBjb25zdCB2ID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpLFxuICB3ID0gcGFyc2VyLkdldERpbWVuKG5hbWUpLFxuICBoID0gcGFyc2VyLkdldERpbWVuKG5hbWUpO1xuICBsZXQgbW1sID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3BhY2UnLCBbXSwge1xuICAgIHdpZHRoOiB3LCBoZWlnaHQ6IGgsXG4gICAgbWF0aGJhY2tncm91bmQ6IChwYXJzZXIuc3RhY2suZW52Wydjb2xvciddIHx8ICdibGFjaycpIH0pO1xuICBpZiAodikge1xuICAgIG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFttbWxdLCB7dm9mZnNldDogdn0pO1xuICAgIGlmICh2Lm1hdGNoKC9eXFwtLykpIHtcbiAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbWwsICdoZWlnaHQnLCB2KTtcbiAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbWwsICdkZXB0aCcsICcrJyArIHYuc3Vic3RyKDEpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKG1tbCwgJ2hlaWdodCcsICcrJyArIHYpO1xuICAgIH1cbiAgfVxuICBwYXJzZXIuUHVzaChtbWwpO1xufTtcblxuLyoqXG4gKiBIYW5kbGUgYmlnIGNvbW1hbmQgc2VxdWVuY2VzLCBlLmcuLCBcXFxcYmlnLCBcXFxcQmlnZy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge251bWJlcn0gbWNsYXNzIFRoZSBUZVggY2xhc3Mgb2YgdGhlIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJlcn0gc2l6ZSBUaGUgZW0gc2l6ZS5cbiAqL1xuQmFzZU1ldGhvZHMuTWFrZUJpZyA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIG1jbGFzczogbnVtYmVyLCBzaXplOiBudW1iZXIpIHtcbiAgLy8gQHRlc3QgQ2hvb3NlLCBPdmVyIFdpdGggRGVsaW1zLCBBYm92ZSBXaXRoIERlbGltc1xuICBzaXplICo9IFBfSEVJR0hUO1xuICBsZXQgc2l6ZVN0ciA9IFN0cmluZyhzaXplKS5yZXBsYWNlKC8oXFwuXFxkXFxkXFxkKS4rLywgJyQxJykgKyAnZW0nO1xuICBjb25zdCBkZWxpbSA9IHBhcnNlci5HZXREZWxpbWl0ZXIobmFtZSwgdHJ1ZSk7XG4gIGNvbnN0IG1vID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbW8nLCB7XG4gICAgbWluc2l6ZTogc2l6ZVN0ciwgbWF4c2l6ZTogc2l6ZVN0cixcbiAgICBmZW5jZTogdHJ1ZSwgc3RyZXRjaHk6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZVxuICB9LCBkZWxpbSk7XG4gIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbbW9dLCB7dGV4Q2xhc3M6IG1jbGFzc30pO1xuICBwYXJzZXIuUHVzaChub2RlKTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGUgYnVpbGRyZWwgY29tbWFuZC5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkJhc2VNZXRob2RzLkJ1aWxkUmVsID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvLyBAdGVzdCBCdWlsZFJlbCwgQnVpbGRSZWwgRXhwcmVzc2lvblxuICBjb25zdCB0b3AgPSBwYXJzZXIuUGFyc2VVcFRvKG5hbWUsICdcXFxcb3ZlcicpO1xuICBjb25zdCBib3QgPSBwYXJzZXIuUGFyc2VBcmcobmFtZSk7XG4gIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ211bmRlcm92ZXInKTtcbiAgLy8gVGhpcyBpcyBuZWNlc3NhcnkgdG8gZ2V0IHRoZSBlbXB0eSBlbGVtZW50IGludG8gdGhlIGNoaWxkcmVuLlxuICBOb2RlVXRpbC5zZXRDaGlsZChub2RlLCAwLCBib3QpO1xuICBOb2RlVXRpbC5zZXRDaGlsZChub2RlLCAxLCBudWxsKTtcbiAgTm9kZVV0aWwuc2V0Q2hpbGQobm9kZSwgMiwgdG9wKTtcbiAgY29uc3QgYXRvbSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFtub2RlXSwge3RleENsYXNzOiBURVhDTEFTUy5SRUx9KTtcbiAgcGFyc2VyLlB1c2goYXRvbSk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIGhvcml6b250YWwgYm94ZXMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlIEJveCBzdHlsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBmb250IFRoZSBtYXRodmFyaWFudCB0byB1c2VcbiAqL1xuQmFzZU1ldGhvZHMuSEJveCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcsIGZvbnQ/OiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgSGJveFxuICBwYXJzZXIuUHVzaEFsbChQYXJzZVV0aWwuaW50ZXJuYWxNYXRoKHBhcnNlciwgcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpLCBzdHlsZSwgZm9udCkpO1xufTtcblxuLyoqXG4gKiBIYW5kbGUgZnJhbWVkIGJveGVzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuRkJveCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgRmJveFxuICBjb25zdCBpbnRlcm5hbCA9IFBhcnNlVXRpbC5pbnRlcm5hbE1hdGgocGFyc2VyLCBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICBjb25zdCBub2RlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtZW5jbG9zZScsIGludGVybmFsLCB7bm90YXRpb246ICdib3gnfSk7XG4gIHBhcnNlci5QdXNoKG5vZGUpO1xufTtcblxuLyoqXG4gKiBIYW5kbGUgZnJhbWVkIGJveGVzIHdpdGggb3B0aW9ucy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkJhc2VNZXRob2RzLkZyYW1lQm94ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCB3aWR0aCA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lKTtcbiAgY29uc3QgcG9zID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpIHx8ICdjJztcbiAgbGV0IG1tbCA9IFBhcnNlVXRpbC5pbnRlcm5hbE1hdGgocGFyc2VyLCBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICBpZiAod2lkdGgpIHtcbiAgICBtbWwgPSBbcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgbW1sLCB7XG4gICAgICB3aWR0aCxcbiAgICAgICdkYXRhLWFsaWduJzogbG9va3VwKHBvcywge2w6ICdsZWZ0JywgcjogJ3JpZ2h0J30sICdjZW50ZXInKVxuICAgIH0pXTtcbiAgfVxuICBjb25zdCBub2RlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdUZVhBdG9tJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlci5jcmVhdGUoJ25vZGUnLCAnbWVuY2xvc2UnLCBtbWwsIHtub3RhdGlvbjogJ2JveCd9KV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt0ZXhDbGFzczogVEVYQ0xBU1MuT1JEfSk7XG4gIHBhcnNlci5QdXNoKG5vZGUpO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBcXFxcbm90LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuTm90ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgTmVnYXRpb24gU2ltcGxlLCBOZWdhdGlvbiBDb21wbGV4LCBOZWdhdGlvbiBFeHBsaWNpdCxcbiAgLy8gICAgICAgTmVnYXRpb24gTGFyZ2VcbiAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnbm90JykpO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBkb3RzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuRG90cyA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfbmFtZTogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IE9wZXJhdG9yIERvdHNcbiAgY29uc3QgbGRvdHNFbnRpdHkgPSBOb2RlVXRpbC5jcmVhdGVFbnRpdHkoJzIwMjYnKTtcbiAgY29uc3QgY2RvdHNFbnRpdHkgPSBOb2RlVXRpbC5jcmVhdGVFbnRpdHkoJzIyRUYnKTtcbiAgY29uc3QgbGRvdHMgPSBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtbycsIHtzdHJldGNoeTogZmFsc2V9LCBsZG90c0VudGl0eSk7XG4gIGNvbnN0IGNkb3RzID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbW8nLCB7c3RyZXRjaHk6IGZhbHNlfSwgY2RvdHNFbnRpdHkpO1xuICBwYXJzZXIuUHVzaChcbiAgICBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdkb3RzJykuc2V0UHJvcGVydGllcyh7XG4gICAgICBsZG90czogbGRvdHMsXG4gICAgICBjZG90czogY2RvdHNcbiAgICB9KSApO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBzbWFsbCBtYXRyaXggZW52aXJvbm1lbnRzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVuIE9wZW5pbmcgZmVuY2UuXG4gKiBAcGFyYW0ge3N0cmluZ30gY2xvc2UgQ2xvc2luZyBmZW5jZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhbGlnbiBDb2x1bW4gYWxpZ25tZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IHNwYWNpbmcgQ29sdW1uIHNwYWNpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gdnNwYWNpbmcgUm93IHNwYWNpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGUgRGlzcGxheSBvciB0ZXh0IHN0eWxlLlxuICogQHBhcmFtIHtib29sZWFufSBjYXNlcyBJcyBpdCBhIGNhc2VzIGVudmlyb25tZW50LlxuICogQHBhcmFtIHtib29sZWFufSBudW1iZXJlZCBJcyBpdCBhIG51bWJlcmVkIGVudmlyb25tZW50LlxuICovXG5CYXNlTWV0aG9kcy5NYXRyaXggPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IHN0cmluZywgY2xvc2U6IHN0cmluZywgYWxpZ246IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmc6IHN0cmluZywgdnNwYWNpbmc6IHN0cmluZywgc3R5bGU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2VzOiBib29sZWFuLCBudW1iZXJlZDogYm9vbGVhbikge1xuICBjb25zdCBjID0gcGFyc2VyLkdldE5leHQoKTtcbiAgaWYgKGMgPT09ICcnKSB7XG4gICAgLy8gQHRlc3QgTWF0cml4IEVycm9yXG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nQXJnRm9yJywgJ01pc3NpbmcgYXJndW1lbnQgZm9yICUxJywgcGFyc2VyLmN1cnJlbnRDUyk7XG4gIH1cbiAgaWYgKGMgPT09ICd7Jykge1xuICAgIC8vIEB0ZXN0IE1hdHJpeCBCcmFjZXMsIE1hdHJpeCBDb2x1bW5zLCBNYXRyaXggUm93cy5cbiAgICBwYXJzZXIuaSsrO1xuICB9IGVsc2Uge1xuICAgIC8vIEB0ZXN0IE1hdHJpeCBBcmdcbiAgICBwYXJzZXIuc3RyaW5nID0gYyArICd9JyArIHBhcnNlci5zdHJpbmcuc2xpY2UocGFyc2VyLmkgKyAxKTtcbiAgICBwYXJzZXIuaSA9IDA7XG4gIH1cbiAgLy8gQHRlc3QgTWF0cml4IEJyYWNlcywgTWF0cml4IENvbHVtbnMsIE1hdHJpeCBSb3dzLlxuICBjb25zdCBhcnJheSA9IHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2FycmF5Jykuc2V0UHJvcGVydHkoJ3JlcXVpcmVDbG9zZScsIHRydWUpIGFzIHNpdGVtLkFycmF5SXRlbTtcbiAgYXJyYXkuYXJyYXlkZWYgPSB7XG4gICAgcm93c3BhY2luZzogKHZzcGFjaW5nIHx8ICc0cHQnKSxcbiAgICBjb2x1bW5zcGFjaW5nOiAoc3BhY2luZyB8fCAnMWVtJylcbiAgfTtcbiAgaWYgKGNhc2VzKSB7XG4gICAgLy8gQHRlc3QgTWF0cml4IENhc2VzXG4gICAgYXJyYXkuc2V0UHJvcGVydHkoJ2lzQ2FzZXMnLCB0cnVlKTtcbiAgfVxuICBpZiAobnVtYmVyZWQpIHtcbiAgICAvLyBAdGVzdCBNYXRyaXggTnVtYmVyZWRcbiAgICBhcnJheS5zZXRQcm9wZXJ0eSgnaXNOdW1iZXJlZCcsIHRydWUpO1xuICAgIGFycmF5LmFycmF5ZGVmLnNpZGUgPSBudW1iZXJlZDtcbiAgfVxuICBpZiAob3BlbiB8fCBjbG9zZSkge1xuICAgIC8vIEB0ZXN0IE1hdHJpeCBQYXJlbnMsIE1hdHJpeCBQYXJlbnMgU3Vic2NyaXB0LCBNYXRyaXggQ2FzZXNcbiAgICBhcnJheS5zZXRQcm9wZXJ0eSgnb3BlbicsIG9wZW4pO1xuICAgIGFycmF5LnNldFByb3BlcnR5KCdjbG9zZScsIGNsb3NlKTtcbiAgfVxuICBpZiAoc3R5bGUgPT09ICdEJykge1xuICAgIC8vIEB0ZXN0IE1hdHJpeCBOdW1iZXJlZFxuICAgIGFycmF5LmFycmF5ZGVmLmRpc3BsYXlzdHlsZSA9IHRydWU7XG4gIH1cbiAgaWYgKGFsaWduICE9IG51bGwpIHtcbiAgICAvLyBAdGVzdCBNYXRyaXggQ2FzZXMsIE1hdHJpeCBOdW1iZXJlZFxuICAgIGFycmF5LmFycmF5ZGVmLmNvbHVtbmFsaWduID0gYWxpZ247XG4gIH1cbiAgcGFyc2VyLlB1c2goYXJyYXkpO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBhcnJheSBlbnRyeS5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkJhc2VNZXRob2RzLkVudHJ5ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvLyBAdGVzdCBMYWJlbCwgQXJyYXksIENyb3NzIFByb2R1Y3QgRm9ybXVsYVxuICBwYXJzZXIuUHVzaChwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdjZWxsJykuc2V0UHJvcGVydGllcyh7aXNFbnRyeTogdHJ1ZSwgbmFtZTogbmFtZX0pKTtcbiAgY29uc3QgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICBjb25zdCBlbnYgPSB0b3AuZ2V0UHJvcGVydHkoJ2Nhc2VzRW52JykgYXMgc3RyaW5nO1xuICBjb25zdCBjYXNlcyA9IHRvcC5nZXRQcm9wZXJ0eSgnaXNDYXNlcycpO1xuICBpZiAoIWNhc2VzICYmICFlbnYpIHJldHVybjtcbiAgLy9cbiAgLy8gIE1ha2Ugc2Vjb25kIGNvbHVtbiBiZSBpbiBcXHRleHR7Li4ufSAodW5sZXNzIGl0IGlzIGFscmVhZHlcbiAgLy8gIGluIGEgXFx0ZXh0ey4uLn0sIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KS5cbiAgLy9cbiAgY29uc3Qgc3RyID0gcGFyc2VyLnN0cmluZztcbiAgbGV0IGJyYWNlcyA9IDAsIGNsb3NlID0gLTEsIGkgPSBwYXJzZXIuaSwgbSA9IHN0ci5sZW5ndGg7XG4gIGNvbnN0IGVuZCA9IChlbnYgPyBuZXcgUmVnRXhwKGBeXFxcXFxcXFxlbmRcXFxccypcXFxceyR7ZW52LnJlcGxhY2UoL1xcKi8sICdcXFxcKicpfVxcXFx9YCkgOiBudWxsKTtcbiAgLy9cbiAgLy8gIExvb2sgdGhyb3VnaCB0aGUgc3RyaW5nIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuLi5cbiAgLy9cbiAgd2hpbGUgKGkgPCBtKSB7XG4gICAgY29uc3QgYyA9IHN0ci5jaGFyQXQoaSk7XG4gICAgaWYgKGMgPT09ICd7Jykge1xuICAgICAgLy9cbiAgICAgIC8vICBJbmNyZWFzZSB0aGUgbmVzdGVkIGJyYWNlIGNvdW50IGFuZCBnbyBvblxuICAgICAgLy9cbiAgICAgIGJyYWNlcysrO1xuICAgICAgaSsrO1xuICAgIH0gZWxzZSBpZiAoYyA9PT0gJ30nKSB7XG4gICAgICAvL1xuICAgICAgLy8gIElmIHRoZXJlIGFyZSB0b28gbWFueSBjbG9zZSBicmFjZXMsIGp1c3QgZW5kICh3ZSB3aWxsIGdldCBhblxuICAgICAgLy8gICAgZXJyb3IgbWVzc2FnZSBsYXRlciB3aGVuIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgaXMgcGFyc2VkKVxuICAgICAgLy8gIE90aGVyd2lzZVxuICAgICAgLy8gICAgZGVjcmVhc2UgdGhlIG5lc3RlZCBicmFjZSBjb3VudCxcbiAgICAgIC8vICAgIGlmIGl0IGlzIG5vdyB6ZXJvIGFuZCB3ZSBoYXZlbid0IGFscmVhZHkgbWFya2VkIHRoZSBlbmQgb2YgdGhlXG4gICAgICAvLyAgICAgIGZpcnN0IGJyYWNlIGdyb3VwLCByZWNvcmQgdGhlIHBvc2l0aW9uICh1c2UgdG8gY2hlY2sgZm9yIFxcdGV4dHt9IGxhdGVyKVxuICAgICAgLy8gICAgZ28gb24gdG8gdGhlIG5leHQgY2hhcmFjdGVyLlxuICAgICAgLy9cbiAgICAgIGlmIChicmFjZXMgPT09IDApIHtcbiAgICAgICAgbSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmFjZXMtLTtcbiAgICAgICAgaWYgKGJyYWNlcyA9PT0gMCAmJiBjbG9zZSA8IDApIHtcbiAgICAgICAgICBjbG9zZSA9IGkgLSBwYXJzZXIuaTtcbiAgICAgICAgfVxuICAgICAgICBpKys7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjID09PSAnJicgJiYgYnJhY2VzID09PSAwKSB7XG4gICAgICAvL1xuICAgICAgLy8gIEV4dHJhIGFsaWdubWVudCB0YWJzIGFyZSBub3QgYWxsb3dlZCBpbiBjYXNlc1xuICAgICAgLy9cbiAgICAgIC8vIEB0ZXN0IEV4dHJhQWxpZ25UYWJcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRXh0cmFBbGlnblRhYicsICdFeHRyYSBhbGlnbm1lbnQgdGFiIGluIFxcXFxjYXNlcyB0ZXh0Jyk7XG4gICAgfSBlbHNlIGlmIChjID09PSAnXFxcXCcpIHtcbiAgICAgIC8vXG4gICAgICAvLyAgSWYgdGhlIG1hY3JvIGlzIFxcY3Igb3IgXFxcXCwgZW5kIHRoZSBzZWFyY2gsIG90aGVyd2lzZSBza2lwIHRoZSBtYWNyb1xuICAgICAgLy8gIChtdWx0aS1sZXR0ZXIgbmFtZXMgZG9uJ3QgbWF0dGVyLCBhcyB3ZSB3aWxsIHNraXAgdGhlIHJlc3Qgb2YgdGhlXG4gICAgICAvLyAgIGNoYXJhY3RlcnMgaW4gdGhlIG1haW4gbG9vcClcbiAgICAgIC8vXG4gICAgICBjb25zdCByZXN0ID0gc3RyLnN1YnN0cihpKTtcbiAgICAgIGlmIChyZXN0Lm1hdGNoKC9eKChcXFxcY3IpW15hLXpBLVpdfFxcXFxcXFxcKS8pIHx8IChlbmQgJiYgcmVzdC5tYXRjaChlbmQpKSkge1xuICAgICAgICBtID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkgKz0gMjtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy9cbiAgICAgIC8vICBHbyBvbiB0byB0aGUgbmV4dCBjaGFyYWN0ZXJcbiAgICAgIC8vXG4gICAgICBpKys7XG4gICAgfVxuICB9XG4gIC8vXG4gIC8vICBDaGVjayBpZiB0aGUgc2Vjb25kIGNvbHVtbiB0ZXh0IGlzIGFscmVhZHkgaW4gXFx0ZXh0e307XG4gIC8vICBJZiBub3QsIHByb2Nlc3MgdGhlIHNlY29uZCBjb2x1bW4gYXMgdGV4dCBhbmQgY29udGludWUgcGFyc2luZyBmcm9tIHRoZXJlLFxuICAvLyAgICAob3RoZXJ3aXNlIHByb2Nlc3MgdGhlIHNlY29uZCBjb2x1bW4gYXMgbm9ybWFsLCBzaW5jZSBpdCBpcyBpbiBcXHRleHR7fVxuICAvL1xuICBjb25zdCB0ZXh0ID0gc3RyLnN1YnN0cihwYXJzZXIuaSwgaSAtIHBhcnNlci5pKTtcbiAgaWYgKCF0ZXh0Lm1hdGNoKC9eXFxzKlxcXFx0ZXh0W15hLXpBLVpdLykgfHwgY2xvc2UgIT09IHRleHQucmVwbGFjZSgvXFxzKyQvLCAnJykubGVuZ3RoIC0gMSkge1xuICAgIGNvbnN0IGludGVybmFsID0gUGFyc2VVdGlsLmludGVybmFsTWF0aChwYXJzZXIsIFBhcnNlVXRpbC50cmltU3BhY2VzKHRleHQpLCAwKTtcbiAgICBwYXJzZXIuUHVzaEFsbChpbnRlcm5hbCk7XG4gICAgcGFyc2VyLmkgPSBpO1xuICB9XG59O1xuXG4vKipcbiAqIEhhbmRsZSBuZXdsaW5lIGluIGFycmF5LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuQ3IgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IENyIExpbmVicmVhaywgTWlzcGxhY2VkIENyXG4gIHBhcnNlci5QdXNoKFxuICAgIHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2NlbGwnKS5zZXRQcm9wZXJ0aWVzKHtpc0NSOiB0cnVlLCBuYW1lOiBuYW1lfSkpO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBuZXdsaW5lIG91dHNpZGUgYXJyYXkuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtib29sZWFufSBub2JyYWNrZXRzIEZsYWcgaW5kaWNhdGluZyBpZiBuZXdsaW5lIGlzIGZvbGxvd2VkIGJ5XG4gKiAgICAgYnJhY2tldHMuXG4gKi9cbkJhc2VNZXRob2RzLkNyTGFUZVggPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBub2JyYWNrZXRzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgbGV0IG46IHN0cmluZztcbiAgaWYgKCFub2JyYWNrZXRzKSB7XG4gICAgLy8gVE9ETzogc3BhY2VzIGJlZm9yZSAqIGFuZCBbIGFyZSBub3QgYWxsb3dlZCBpbiBBTVMgZW52aXJvbm1lbnRzIGxpa2UgYWxpZ24sIGJ1dFxuICAgIC8vICAgICAgIHNob3VsZCBiZSBhbGxvd2VkIGluIGFycmF5IGFuZCBlcW5hcnJheS4gIFRoaXMgZGlzdGluY3Rpb24gc2hvdWxkIGJlIGhvbm9yZWQgaGVyZS5cbiAgICBpZiAocGFyc2VyLnN0cmluZy5jaGFyQXQocGFyc2VyLmkpID09PSAnKicpIHsgIC8vIFRoZSAqIGNvbnRyb2xzIHBhZ2UgYnJlYWtpbmcsIHNvIGlnbm9yZSBpdFxuICAgICAgcGFyc2VyLmkrKztcbiAgICB9XG4gICAgaWYgKHBhcnNlci5zdHJpbmcuY2hhckF0KHBhcnNlci5pKSA9PT0gJ1snKSB7XG4gICAgICBsZXQgZGltID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcnKTtcbiAgICAgIGxldCBbdmFsdWUsIHVuaXQsIF0gPSBQYXJzZVV0aWwubWF0Y2hEaW1lbihkaW0pO1xuICAgICAgLy8gQHRlc3QgQ3VzdG9tIExpbmVicmVha1xuICAgICAgaWYgKGRpbSAmJiAhdmFsdWUpIHtcbiAgICAgICAgLy8gQHRlc3QgRGltZW5zaW9uIEVycm9yXG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignQnJhY2tldE11c3RCZURpbWVuc2lvbicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAnQnJhY2tldCBhcmd1bWVudCB0byAlMSBtdXN0IGJlIGEgZGltZW5zaW9uJywgcGFyc2VyLmN1cnJlbnRDUyk7XG4gICAgICB9XG4gICAgICBuID0gdmFsdWUgKyB1bml0O1xuICAgIH1cbiAgfVxuICBwYXJzZXIuUHVzaChcbiAgICBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdjZWxsJykuc2V0UHJvcGVydGllcyh7aXNDUjogdHJ1ZSwgbmFtZTogbmFtZSwgbGluZWJyZWFrOiB0cnVlfSlcbiAgKTtcbiAgY29uc3QgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICBsZXQgbm9kZTogTW1sTm9kZTtcbiAgaWYgKHRvcCBpbnN0YW5jZW9mIHNpdGVtLkFycmF5SXRlbSkge1xuICAgIC8vIEB0ZXN0IEFycmF5XG4gICAgaWYgKG4pIHtcbiAgICAgIHRvcC5hZGRSb3dTcGFjaW5nKG4pO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAobikge1xuICAgICAgLy8gQHRlc3QgQ3VzdG9tIExpbmVicmVha1xuICAgICAgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXNwYWNlJywgW10sIHtkZXB0aDogbn0pO1xuICAgICAgcGFyc2VyLlB1c2gobm9kZSk7XG4gICAgfVxuICAgIC8vIEB0ZXN0IExpbmVicmVha1xuICAgIG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zcGFjZScsIFtdLCB7bGluZWJyZWFrOiBUZXhDb25zdGFudC5MaW5lQnJlYWsuTkVXTElORX0pO1xuICAgIHBhcnNlci5QdXNoKG5vZGUpO1xuICB9XG59O1xuXG4vKipcbiAqIEhhbmRsZSBob3Jpem9udGFsIGxpbmVzIGluIGFycmF5cy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGUgU3R5bGUgb2YgdGhlIGxpbmUuIEUuZy4sIGRhc2hlZC5cbiAqL1xuQmFzZU1ldGhvZHMuSExpbmUgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZywgc3R5bGU6IHN0cmluZykge1xuICBpZiAoc3R5bGUgPT0gbnVsbCkge1xuICAgIHN0eWxlID0gJ3NvbGlkJztcbiAgfVxuICBjb25zdCB0b3AgPSBwYXJzZXIuc3RhY2suVG9wKCk7XG4gIGlmICghKHRvcCBpbnN0YW5jZW9mIHNpdGVtLkFycmF5SXRlbSkgfHwgdG9wLlNpemUoKSkge1xuICAgIC8vIEB0ZXN0IE1pc3BsYWNlZCBobGluZVxuICAgIHRocm93IG5ldyBUZXhFcnJvcignTWlzcGxhY2VkJywgJ01pc3BsYWNlZCAlMScsIHBhcnNlci5jdXJyZW50Q1MpO1xuICB9XG4gIGlmICghdG9wLnRhYmxlLmxlbmd0aCkge1xuICAgIC8vIEB0ZXN0IEVuY2xvc2VkIHRvcCwgRW5jbG9zZWQgdG9wIGJvdHRvbVxuICAgIHRvcC5mcmFtZS5wdXNoKCd0b3AnKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBAdGVzdCBFbmNsb3NlZCBib3R0b20sIEVuY2xvc2VkIHRvcCBib3R0b21cbiAgICBjb25zdCBsaW5lcyA9ICh0b3AuYXJyYXlkZWZbJ3Jvd2xpbmVzJ10gPyAodG9wLmFycmF5ZGVmWydyb3dsaW5lcyddIGFzIHN0cmluZykuc3BsaXQoLyAvKSA6IFtdKTtcbiAgICB3aGlsZSAobGluZXMubGVuZ3RoIDwgdG9wLnRhYmxlLmxlbmd0aCkge1xuICAgICAgbGluZXMucHVzaCgnbm9uZScpO1xuICAgIH1cbiAgICBsaW5lc1t0b3AudGFibGUubGVuZ3RoIC0gMV0gPSBzdHlsZTtcbiAgICB0b3AuYXJyYXlkZWZbJ3Jvd2xpbmVzJ10gPSBsaW5lcy5qb2luKCcgJyk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBIYW5kbGUgaGZpbGwgY29tbWFuZHMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5IRmlsbCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHRvcCA9IHBhcnNlci5zdGFjay5Ub3AoKTtcbiAgaWYgKHRvcCBpbnN0YW5jZW9mIHNpdGVtLkFycmF5SXRlbSkge1xuICAgIC8vIEB0ZXN0IEhmaWxsXG4gICAgdG9wLmhmaWxsLnB1c2godG9wLlNpemUoKSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gQHRlc3QgVW5zdXBwb3J0ZWRIRmlsbFxuICAgIHRocm93IG5ldyBUZXhFcnJvcignVW5zdXBwb3J0ZWRIRmlsbCcsICdVbnN1cHBvcnRlZCB1c2Ugb2YgJTEnLCBwYXJzZXIuY3VycmVudENTKTtcbiAgfVxufTtcblxuXG4vKipcbiAqICAgTGFUZVggZW52aXJvbm1lbnRzXG4gKi9cblxuLyoqXG4gKiBIYW5kbGUgYmVnaW4gYW5kIGVuZCBlbnZpcm9ubWVudHMuIFRoaXMgaXMgYSBtYWNybyBtZXRob2QuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5CZWdpbkVuZCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgQXJyYXkxLCBBcnJheTIsIEFycmF5IFRlc3RcbiAgbGV0IGVudiA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgaWYgKGVudi5tYXRjaCgvXFxcXC9pKSkge1xuICAgIC8vIEB0ZXN0IEludmFsaWRFbnZcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0ludmFsaWRFbnYnLCAnSW52YWxpZCBlbnZpcm9ubWVudCBuYW1lIFxcJyUxXFwnJywgZW52KTtcbiAgfVxuICBsZXQgbWFjcm8gPSBwYXJzZXIuY29uZmlndXJhdGlvbi5oYW5kbGVycy5nZXQoJ2Vudmlyb25tZW50JykubG9va3VwKGVudikgYXMgTWFjcm87XG4gIGlmIChtYWNybyAmJiBuYW1lID09PSAnXFxcXGVuZCcpIHtcbiAgICAvLyBJZiB0aGUgZmlyc3QgYXJndW1lbnQgaXMgdHJ1ZSwgd2UgaGF2ZSBzb21lIHNvcnQgb2YgdXNlciBkZWZpbmVkXG4gICAgLy8gZW52aXJvbm1lbnQuIE90aGVyd2lzZSB3ZSBoYXZlIGEgc3RhbmRhcmQgTGFUZVggZW52aXJvbm1lbnQgdGhhdCBpc1xuICAgIC8vIGhhbmRsZWQgd2l0aCBiZWdpbiBhbmQgZW5kIGl0ZW1zLlxuICAgIGlmICghbWFjcm8uYXJnc1swXSkge1xuICAgICAgY29uc3QgbW1sID0gcGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnZW5kJykuc2V0UHJvcGVydHkoJ25hbWUnLCBlbnYpO1xuICAgICAgcGFyc2VyLlB1c2gobW1sKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gUmVtZW1iZXIgdGhlIHVzZXIgZGVmaW5lZCBlbnZpcm9ubWVudCB3ZSBhcmUgY2xvc2luZy5cbiAgICBwYXJzZXIuc3RhY2suZW52WydjbG9zaW5nJ10gPSBlbnY7XG4gIH1cbiAgUGFyc2VVdGlsLmNoZWNrTWF4TWFjcm9zKHBhcnNlciwgZmFsc2UpO1xuICBwYXJzZXIucGFyc2UoJ2Vudmlyb25tZW50JywgW3BhcnNlciwgZW52XSk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIGFycmF5IGVudmlyb25tZW50LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge1N0YWNrSXRlbX0gYmVnaW4gVGhlIG9wZW5pbmcgc3RhY2tpdGVtLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wZW4gT3BlbmluZyBmZW5jZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjbG9zZSBDbG9zaW5nIGZlbmNlLlxuICogQHBhcmFtIHtzdHJpbmd9IGFsaWduIENvbHVtbiBhbGlnbm1lbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3BhY2luZyBDb2x1bW4gc3BhY2luZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSB2c3BhY2luZyBSb3cgc3BhY2luZy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZSBEaXNwbGF5IG9yIHRleHQgc3R5bGUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJhZ2dlZEhlaWdodCBEb2VzIHRoZSBoZWlnaHQgbmVlZCB0byBiZSBhZGp1c3RlZD9cbiAqL1xuQmFzZU1ldGhvZHMuQXJyYXkgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IFN0YWNrSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbjogc3RyaW5nLCBjbG9zZTogc3RyaW5nLCBhbGlnbjogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nOiBzdHJpbmcsIHZzcGFjaW5nOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhZ2dlZEhlaWdodDogYm9vbGVhbikge1xuICBpZiAoIWFsaWduKSB7XG4gICAgLy8gQHRlc3QgQXJyYXkgU2luZ2xlXG4gICAgYWxpZ24gPSBwYXJzZXIuR2V0QXJndW1lbnQoJ1xcXFxiZWdpbnsnICsgYmVnaW4uZ2V0TmFtZSgpICsgJ30nKTtcbiAgfVxuICBsZXQgbGluZXMgPSAoJ2MnICsgYWxpZ24pLnJlcGxhY2UoL1teY2xyfDpdL2csICcnKS5yZXBsYWNlKC9bXnw6XShbfDpdKSsvZywgJyQxJyk7XG4gIGFsaWduID0gYWxpZ24ucmVwbGFjZSgvW15jbHJdL2csICcnKS5zcGxpdCgnJykuam9pbignICcpO1xuICBhbGlnbiA9IGFsaWduLnJlcGxhY2UoL2wvZywgJ2xlZnQnKS5yZXBsYWNlKC9yL2csICdyaWdodCcpLnJlcGxhY2UoL2MvZywgJ2NlbnRlcicpO1xuICBjb25zdCBhcnJheSA9IHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2FycmF5JykgYXMgc2l0ZW0uQXJyYXlJdGVtO1xuICBhcnJheS5hcnJheWRlZiA9IHtcbiAgICBjb2x1bW5hbGlnbjogYWxpZ24sXG4gICAgY29sdW1uc3BhY2luZzogKHNwYWNpbmcgfHwgJzFlbScpLFxuICAgIHJvd3NwYWNpbmc6ICh2c3BhY2luZyB8fCAnNHB0JylcbiAgfTtcbiAgaWYgKGxpbmVzLm1hdGNoKC9bfDpdLykpIHtcbiAgICAvLyBAdGVzdCBFbmNsb3NlZCBsZWZ0IHJpZ2h0XG4gICAgaWYgKGxpbmVzLmNoYXJBdCgwKS5tYXRjaCgvW3w6XS8pKSB7XG4gICAgICAvLyBAdGVzdCBFbmNsb3NlZCBsZWZ0IHJpZ2h0LCBFbmNsb3NlZCBsZWZ0XG4gICAgICBhcnJheS5mcmFtZS5wdXNoKCdsZWZ0Jyk7XG4gICAgICBhcnJheS5kYXNoZWQgPSBsaW5lcy5jaGFyQXQoMCkgPT09ICc6JztcbiAgICB9XG4gICAgaWYgKGxpbmVzLmNoYXJBdChsaW5lcy5sZW5ndGggLSAxKS5tYXRjaCgvW3w6XS8pKSB7XG4gICAgICAvLyBAdGVzdCBFbmNsb3NlZCBsZWZ0IHJpZ2h0LCBFbmNsb3NlZCByaWdodFxuICAgICAgYXJyYXkuZnJhbWUucHVzaCgncmlnaHQnKTtcbiAgICB9XG4gICAgLy8gQHRlc3QgRW5jbG9zZWQgbGVmdCByaWdodFxuICAgIGxpbmVzID0gbGluZXMuc3Vic3RyKDEsIGxpbmVzLmxlbmd0aCAtIDIpO1xuICAgIGFycmF5LmFycmF5ZGVmLmNvbHVtbmxpbmVzID1cbiAgICAgIGxpbmVzLnNwbGl0KCcnKS5qb2luKCcgJykucmVwbGFjZSgvW158OiBdL2csICdub25lJykucmVwbGFjZSgvXFx8L2csICdzb2xpZCcpLnJlcGxhY2UoLzovZywgJ2Rhc2hlZCcpO1xuICB9XG4gIGlmIChvcGVuKSAge1xuICAgIC8vIEB0ZXN0IENyb3NzIFByb2R1Y3RcbiAgICBhcnJheS5zZXRQcm9wZXJ0eSgnb3BlbicsIHBhcnNlci5jb252ZXJ0RGVsaW1pdGVyKG9wZW4pKTtcbiAgfVxuICBpZiAoY2xvc2UpIHtcbiAgICAvLyBAdGVzdCBDcm9zcyBQcm9kdWN0XG4gICAgYXJyYXkuc2V0UHJvcGVydHkoJ2Nsb3NlJywgcGFyc2VyLmNvbnZlcnREZWxpbWl0ZXIoY2xvc2UpKTtcbiAgfVxuICBpZiAoKHN0eWxlIHx8ICcnKS5jaGFyQXQoMSkgPT09ICdcXCcnKSB7XG4gICAgYXJyYXkuYXJyYXlkZWZbJ2RhdGEtY3JhbXBlZCddID0gdHJ1ZTtcbiAgICBzdHlsZSA9IHN0eWxlLmNoYXJBdCgwKTtcbiAgfVxuICBpZiAoc3R5bGUgPT09ICdEJykge1xuICAgIC8vIFRPRE86IFRoaXMgY2FzZSBuZXZlciBzZWVtcyB0byBvY2N1ciEgTm8gdGVzdC5cbiAgICBhcnJheS5hcnJheWRlZlsnZGlzcGxheXN0eWxlJ10gPSB0cnVlO1xuICB9XG4gIGVsc2UgaWYgKHN0eWxlKSB7XG4gICAgLy8gQHRlc3QgU3ViYXJyYXksIFNtYWxsIE1hdHJpeFxuICAgIGFycmF5LmFycmF5ZGVmWydkaXNwbGF5c3R5bGUnXSA9IGZhbHNlO1xuICB9XG4gIGlmIChzdHlsZSA9PT0gJ1MnKSB7XG4gICAgLy8gQHRlc3QgU3ViYXJyYXksIFNtYWxsIE1hdHJpeFxuICAgIGFycmF5LmFycmF5ZGVmWydzY3JpcHRsZXZlbCddID0gMTtcbiAgfVxuICBpZiAocmFnZ2VkSGVpZ2h0KSAge1xuICAgIC8vIEB0ZXN0IFN1YmFycmF5LCBTbWFsbCBNYXRyaXhcbiAgICBhcnJheS5hcnJheWRlZlsndXNlSGVpZ2h0J10gPSBmYWxzZTtcbiAgfVxuICBwYXJzZXIuUHVzaChiZWdpbik7XG4gIHJldHVybiBhcnJheTtcbn07XG5cblxuLyoqXG4gKiBIYW5kbGUgYWxpZ25lZCBhcnJheXMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiBUaGUgb3BlbmluZyBzdGFja2l0ZW0uXG4gKi9cbkJhc2VNZXRob2RzLkFsaWduZWRBcnJheSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBiZWdpbjogU3RhY2tJdGVtKSB7XG4gIC8vIEB0ZXN0IEFycmF5MSwgQXJyYXkyLCBBcnJheSBUZXN0XG4gIGNvbnN0IGFsaWduID0gcGFyc2VyLkdldEJyYWNrZXRzKCdcXFxcYmVnaW57JyArIGJlZ2luLmdldE5hbWUoKSArICd9Jyk7XG4gIGxldCBpdGVtID0gQmFzZU1ldGhvZHMuQXJyYXkocGFyc2VyLCBiZWdpbik7XG4gIHJldHVybiBQYXJzZVV0aWwuc2V0QXJyYXlBbGlnbihpdGVtIGFzIHNpdGVtLkFycmF5SXRlbSwgYWxpZ24pO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBlcXVhdGlvbiBlbnZpcm9ubWVudC5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtTdGFja0l0ZW19IGJlZ2luIFRoZSBvcGVuaW5nIHN0YWNraXRlbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbnVtYmVyZWQgVHJ1ZSBpZiBlbnZpcm9ubWVudCBpcyBudW1iZXJlZC5cbiAqL1xuQmFzZU1ldGhvZHMuRXF1YXRpb24gPSBmdW5jdGlvbiAocGFyc2VyOiBUZXhQYXJzZXIsIGJlZ2luOiBTdGFja0l0ZW0sIG51bWJlcmVkOiBib29sZWFuKSB7XG4gIHBhcnNlci5QdXNoKGJlZ2luKTtcbiAgUGFyc2VVdGlsLmNoZWNrRXFuRW52KHBhcnNlcik7XG4gIHJldHVybiBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdlcXVhdGlvbicsIG51bWJlcmVkKS5cbiAgICBzZXRQcm9wZXJ0eSgnbmFtZScsIGJlZ2luLmdldE5hbWUoKSk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIGVxbmFycmF5LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge1N0YWNrSXRlbX0gYmVnaW4gVGhlIG9wZW5pbmcgc3RhY2tpdGVtLlxuICogQHBhcmFtIHtib29sZWFufSBudW1iZXJlZCBUcnVlIGlmIGVudmlyb25tZW50IGlzIG51bWJlcmVkLlxuICogQHBhcmFtIHtib29sZWFufSB0YWdnYWJsZSBUcnVlIGlmIHRhZ2dhYmxlLlxuICogQHBhcmFtIHtzdHJpbmd9IGFsaWduIEFsaWdubWVudCBzdHJpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3BhY2luZyBTcGFjaW5nIGJldHdlZW4gY29sdW1ucy5cbiAqL1xuQmFzZU1ldGhvZHMuRXFuQXJyYXkgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IFN0YWNrSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyZWQ6IGJvb2xlYW4sIHRhZ2dhYmxlOiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbjogc3RyaW5nLCBzcGFjaW5nOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgVGhlIExvcmVueiBFcXVhdGlvbnMsIE1heHdlbGwncyBFcXVhdGlvbnMsIEN1YmljIEJpbm9taWFsXG4gIHBhcnNlci5QdXNoKGJlZ2luKTtcbiAgaWYgKHRhZ2dhYmxlKSB7XG4gICAgUGFyc2VVdGlsLmNoZWNrRXFuRW52KHBhcnNlcik7XG4gIH1cbiAgYWxpZ24gPSBhbGlnbi5yZXBsYWNlKC9bXmNscl0vZywgJycpLnNwbGl0KCcnKS5qb2luKCcgJyk7XG4gIGFsaWduID0gYWxpZ24ucmVwbGFjZSgvbC9nLCAnbGVmdCcpLnJlcGxhY2UoL3IvZywgJ3JpZ2h0JykucmVwbGFjZSgvYy9nLCAnY2VudGVyJyk7XG4gIGxldCBuZXdJdGVtID0gcGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnZXFuYXJyYXknLCBiZWdpbi5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJlZCwgdGFnZ2FibGUsIHBhcnNlci5zdGFjay5nbG9iYWwpIGFzIHNpdGVtLkFycmF5SXRlbTtcbiAgbmV3SXRlbS5hcnJheWRlZiA9IHtcbiAgICBkaXNwbGF5c3R5bGU6IHRydWUsXG4gICAgY29sdW1uYWxpZ246IGFsaWduLFxuICAgIGNvbHVtbnNwYWNpbmc6IChzcGFjaW5nIHx8ICcxZW0nKSxcbiAgICByb3dzcGFjaW5nOiAnM3B0JyxcbiAgICBzaWRlOiBwYXJzZXIub3B0aW9uc1sndGFnU2lkZSddLFxuICAgIG1pbmxhYmVsc3BhY2luZzogcGFyc2VyLm9wdGlvbnNbJ3RhZ0luZGVudCddXG4gIH07XG4gIHJldHVybiBuZXdJdGVtO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZXMgbm8gdGFnIGNvbW1hbmRzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuSGFuZGxlTm9UYWcgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZykge1xuICBwYXJzZXIudGFncy5ub3RhZygpO1xufTtcblxuXG4vKipcbiAqIFJlY29yZCBhIGxhYmVsIG5hbWUgZm9yIGEgdGFnXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5CYXNlTWV0aG9kcy5IYW5kbGVMYWJlbCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgTGFiZWwsIExhYmVsIEVtcHR5XG4gIGxldCBsYWJlbCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgaWYgKGxhYmVsID09PSAnJykge1xuICAgIC8vIEB0ZXN0IExhYmVsIEVtcHR5XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghcGFyc2VyLnRhZ3MucmVmVXBkYXRlKSB7XG4gICAgLy8gQHRlc3QgTGFiZWwsIFJlZiwgUmVmIFVua25vd25cbiAgICBpZiAocGFyc2VyLnRhZ3MubGFiZWwpIHtcbiAgICAgIC8vIEB0ZXN0IERvdWJsZSBMYWJlbCBFcnJvclxuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdNdWx0aXBsZUNvbW1hbmQnLCAnTXVsdGlwbGUgJTEnLCBwYXJzZXIuY3VycmVudENTKTtcbiAgICB9XG4gICAgcGFyc2VyLnRhZ3MubGFiZWwgPSBsYWJlbDtcbiAgICBpZiAoKHBhcnNlci50YWdzLmFsbExhYmVsc1tsYWJlbF0gfHwgcGFyc2VyLnRhZ3MubGFiZWxzW2xhYmVsXSkgJiYgIXBhcnNlci5vcHRpb25zWydpZ25vcmVEdXBsaWNhdGVMYWJlbHMnXSkge1xuICAgICAgLy8gQCBEdXBsaWNhdGUgTGFiZWwgRXJyb3JcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTXVsdGlwbGVMYWJlbCcsICdMYWJlbCBcXCclMVxcJyBtdWx0aXBseSBkZWZpbmVkJywgbGFiZWwpO1xuICAgIH1cbiAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBiZSBzZXQgaW4gdGhlIHRhZ3Mgc3RydWN0dXJlIVxuICAgIHBhcnNlci50YWdzLmxhYmVsc1tsYWJlbF0gPSBuZXcgTGFiZWwoKTsgLy8gd2lsbCBiZSByZXBsYWNlZCBieSB0YWcgdmFsdWUgbGF0ZXJcbiAgfVxufTtcblxuXG4vKipcbiAqIEhhbmRsZSBhIGxhYmVsIHJlZmVyZW5jZS5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGVxcmVmIFRydWUgaWYgZm9ybWF0dGVkIGFzIGVxcmVmLlxuICovXG5CYXNlTWV0aG9kcy5IYW5kbGVSZWYgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBlcXJlZjogYm9vbGVhbikge1xuICAvLyBAdGVzdCBSZWYsIFJlZiBVbmtub3duLCBFcXJlZiwgUmVmIERlZmF1bHQsIFJlZiBOYW1lZFxuICBsZXQgbGFiZWwgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGxldCByZWYgPSBwYXJzZXIudGFncy5hbGxMYWJlbHNbbGFiZWxdIHx8IHBhcnNlci50YWdzLmxhYmVsc1tsYWJlbF07XG4gIGlmICghcmVmKSB7XG4gICAgLy8gQHRlc3QgUmVmIFVua25vd25cbiAgICBpZiAoIXBhcnNlci50YWdzLnJlZlVwZGF0ZSkge1xuICAgICAgcGFyc2VyLnRhZ3MucmVkbyA9IHRydWU7XG4gICAgfVxuICAgIHJlZiA9IG5ldyBMYWJlbCgpO1xuICB9XG4gIGxldCB0YWcgPSByZWYudGFnO1xuICBpZiAoZXFyZWYpIHtcbiAgICAvLyBAdGVzdCBFcXJlZlxuICAgIHRhZyA9IHBhcnNlci50YWdzLmZvcm1hdFRhZyh0YWcpO1xuICB9XG4gIGxldCBub2RlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcm93JywgUGFyc2VVdGlsLmludGVybmFsTWF0aChwYXJzZXIsIHRhZyksIHtcbiAgICBocmVmOiBwYXJzZXIudGFncy5mb3JtYXRVcmwocmVmLmlkLCBwYXJzZXIub3B0aW9ucy5iYXNlVVJMKSwgJ2NsYXNzJzogJ01hdGhKYXhfcmVmJ1xuICB9KTtcbiAgcGFyc2VyLlB1c2gobm9kZSk7XG59O1xuXG5cblxuLyoqXG4gKiBNYWNyb3NcbiAqL1xuQmFzZU1ldGhvZHMuTWFjcm8gPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWNybzogc3RyaW5nLCBhcmdjb3VudDogbnVtYmVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWY/OiBzdHJpbmcpIHtcbiAgaWYgKGFyZ2NvdW50KSB7XG4gICAgY29uc3QgYXJnczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoZGVmICE9IG51bGwpIHtcbiAgICAgIGNvbnN0IG9wdGlvbmFsID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpO1xuICAgICAgYXJncy5wdXNoKG9wdGlvbmFsID09IG51bGwgPyBkZWYgOiBvcHRpb25hbCk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSBhcmdzLmxlbmd0aDsgaSA8IGFyZ2NvdW50OyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICAgIH1cbiAgICBtYWNybyA9IFBhcnNlVXRpbC5zdWJzdGl0dXRlQXJncyhwYXJzZXIsIGFyZ3MsIG1hY3JvKTtcbiAgfVxuICBwYXJzZXIuc3RyaW5nID0gUGFyc2VVdGlsLmFkZEFyZ3MocGFyc2VyLCBtYWNybywgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSkpO1xuICBwYXJzZXIuaSA9IDA7XG4gIFBhcnNlVXRpbC5jaGVja01heE1hY3JvcyhwYXJzZXIpO1xufTtcblxuXG4vKipcbiAqIEhhbmRsZSBNYXRoQ2hvaWNlIGZvciBlbGVtZW50cyB3aG9zZSBleGFjdCBzaXplL3N0eWxlIHByb3BlcnRpZXMgY2FuIG9ubHkgYmVcbiAqIGRldGVybWluZWQgYWZ0ZXIgdGhlIGV4cHJlc3Npb24gaGFzIGJlZW4gcGFyc2VkLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQmFzZU1ldGhvZHMuTWF0aENob2ljZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgRCAgPSBwYXJzZXIuUGFyc2VBcmcobmFtZSk7XG4gIGNvbnN0IFQgID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBjb25zdCBTICA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgY29uc3QgU1MgPSBwYXJzZXIuUGFyc2VBcmcobmFtZSk7XG4gIHBhcnNlci5QdXNoKHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnTWF0aENob2ljZScsIFtELCBULCBTLCBTU10pKTtcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgQmFzZU1ldGhvZHM7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBCYXNlIG1ldGhvZHMgZm9yIFRlWCBQYXJzaW5nLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7U3ltYm9sfSBmcm9tICcuL1N5bWJvbC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuL05vZGVVdGlsLmpzJztcbmltcG9ydCB7VGV4Q29uc3RhbnR9IGZyb20gJy4vVGV4Q29uc3RhbnRzLmpzJztcbmltcG9ydCB7TW1sTm9kZX0gZnJvbSAnLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IFBhcnNlVXRpbCBmcm9tICcuL1BhcnNlVXRpbC5qcyc7XG5cblxubmFtZXNwYWNlIFBhcnNlTWV0aG9kcyB7XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhIHZhcmlhYmxlIChhIHNpbmdsZSBsZXR0ZXIgb3IgbXVsdGktbGV0dGVyIGlmIGFsbG93ZWQpLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjIFRoZSBsZXR0ZXIgdG8gdHJhbnNmb3JtIGludG8gYW4gbWkuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gdmFyaWFibGUocGFyc2VyOiBUZXhQYXJzZXIsIGM6IHN0cmluZykge1xuICAgIC8vIEB0ZXN0IElkZW50aWZpZXIgRm9udFxuICAgIGNvbnN0IGRlZiA9IFBhcnNlVXRpbC5nZXRGb250RGVmKHBhcnNlcik7XG4gICAgY29uc3QgZW52ID0gcGFyc2VyLnN0YWNrLmVudjtcbiAgICBpZiAoZW52Lm11bHRpTGV0dGVySWRlbnRpZmllcnMgJiYgZW52LmZvbnQgIT09ICcnKSB7XG4gICAgICBjID0gcGFyc2VyLnN0cmluZy5zdWJzdHIocGFyc2VyLmkgLSAxKS5tYXRjaChlbnYubXVsdGlMZXR0ZXJJZGVudGlmaWVycyBhcyBhbnkgYXMgUmVnRXhwKVswXTtcbiAgICAgIHBhcnNlci5pICs9IGMubGVuZ3RoIC0gMTtcbiAgICAgIGlmIChkZWYubWF0aHZhcmlhbnQgPT09IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMICYmIGVudi5ub0F1dG9PUCAmJiBjLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZGVmLmF1dG9PUCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBAdGVzdCBJZGVudGlmaWVyXG4gICAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21pJywgZGVmLCBjKTtcbiAgICBwYXJzZXIuUHVzaChub2RlKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhIG51bWJlciAoYSBzZXF1ZW5jZSBvZiBkaWdpdHMsIHdpdGggZGVjaW1hbCBzZXBhcmF0b3IsIGV0Yy4pLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjIFRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgYSBudW1iZXIgdGhhbiBjYW4gYmUgcGFyc2VkIHdpdGhcbiAgICogICAgIHRoZSBkaWdpdHMgcGF0dGVybi5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBkaWdpdChwYXJzZXI6IFRleFBhcnNlciwgYzogc3RyaW5nKSB7XG4gICAgbGV0IG1tbDogTW1sTm9kZTtcbiAgICBjb25zdCBwYXR0ZXJuID0gcGFyc2VyLmNvbmZpZ3VyYXRpb24ub3B0aW9uc1snZGlnaXRzJ107XG4gICAgY29uc3QgbiA9IHBhcnNlci5zdHJpbmcuc2xpY2UocGFyc2VyLmkgLSAxKS5tYXRjaChwYXR0ZXJuKTtcbiAgICAvLyBAdGVzdCBJbnRlZ2VyIEZvbnRcbiAgICBjb25zdCBkZWYgPSBQYXJzZVV0aWwuZ2V0Rm9udERlZihwYXJzZXIpO1xuICAgIGlmIChuKSB7XG4gICAgICAvLyBAdGVzdCBJbnRlZ2VyLCBOdW1iZXIsIERlY2ltYWwgKEV1cm9wZWFuKVxuICAgICAgbW1sID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbW4nLCBkZWYsIG5bMF0ucmVwbGFjZSgvW3t9XS9nLCAnJykpO1xuICAgICAgcGFyc2VyLmkgKz0gblswXS5sZW5ndGggLSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBAdGVzdCBEZWNpbWFsIFBvaW50LCBEZWNpbWFsIFBvaW50IEV1cm9wZWFuXG4gICAgICBtbWwgPSBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtbycsIGRlZiwgYyk7XG4gICAgfVxuICAgIHBhcnNlci5QdXNoKG1tbCk7XG4gIH1cblxuICAvKipcbiAgICogTG9va3VwIGEgY29udHJvbC1zZXF1ZW5jZSBhbmQgcHJvY2VzcyBpdC5cbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyBUaGUgc3RyaW5nICdcXCcuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gY29udHJvbFNlcXVlbmNlKHBhcnNlcjogVGV4UGFyc2VyLCBfYzogc3RyaW5nKSB7XG4gICAgY29uc3QgbmFtZSA9IHBhcnNlci5HZXRDUygpO1xuICAgIHBhcnNlci5wYXJzZSgnbWFjcm8nLCBbcGFyc2VyLCBuYW1lXSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBIYW5kbGUgbm9ybWFsIG1hdGhjaGFyIChhcyBhbiBtaSkuXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgdGV4IHBhcnNlci5cbiAgICogQHBhcmFtIHtTeW1ib2x9IG1jaGFyIFRoZSBwYXJzZWQgc3ltYm9sLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIG1hdGhjaGFyMG1pKHBhcnNlcjogVGV4UGFyc2VyLCBtY2hhcjogU3ltYm9sKSB7XG4gICAgY29uc3QgZGVmID0gbWNoYXIuYXR0cmlidXRlcyB8fCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuSVRBTElDfTtcbiAgICAvLyBAdGVzdCBHcmVla1xuICAgIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtaScsIGRlZiwgbWNoYXIuY2hhcik7XG4gICAgcGFyc2VyLlB1c2gobm9kZSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIG5vcm1hbCBtYXRoY2hhciAoYXMgYW4gbW8pLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7U3ltYm9sfSBtY2hhciBUaGUgcGFyc2VkIHN5bWJvbC5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBtYXRoY2hhcjBtbyhwYXJzZXI6IFRleFBhcnNlciwgbWNoYXI6IFN5bWJvbCkge1xuICAgIGNvbnN0IGRlZiA9IG1jaGFyLmF0dHJpYnV0ZXMgfHwge307XG4gICAgZGVmWydzdHJldGNoeSddID0gZmFsc2U7XG4gICAgLy8gQHRlc3QgTGFyZ2UgU2V0XG4gICAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywgZGVmLCBtY2hhci5jaGFyKTtcbiAgICBOb2RlVXRpbC5zZXRQcm9wZXJ0eShub2RlLCAnZml4U3RyZXRjaHknLCB0cnVlKTtcbiAgICBwYXJzZXIuY29uZmlndXJhdGlvbi5hZGROb2RlKCdmaXhTdHJldGNoeScsIG5vZGUpO1xuICAgIC8vIFBST0JMRU06IEF0dHJpYnV0ZXMgc3RvcCB3b3JraW5nIHdoZW4gQ2hhcjcgYXJlIGV4cGxpY2l0bHkgc2V0LlxuICAgIHBhcnNlci5QdXNoKG5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBtYXRoY2hhciBpbiBjdXJyZW50IGZhbWlseS5cbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge1N5bWJvbH0gbWNoYXIgVGhlIHBhcnNlZCBzeW1ib2wuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gbWF0aGNoYXI3KHBhcnNlcjogVGV4UGFyc2VyLCBtY2hhcjogU3ltYm9sKSB7XG4gICAgY29uc3QgZGVmID0gbWNoYXIuYXR0cmlidXRlcyB8fCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfTtcbiAgICBpZiAocGFyc2VyLnN0YWNrLmVudlsnZm9udCddKSB7XG4gICAgICAvLyBAdGVzdCBNYXRoQ2hhcjcgU2luZ2xlIEZvbnRcbiAgICAgIGRlZlsnbWF0aHZhcmlhbnQnXSA9IHBhcnNlci5zdGFjay5lbnZbJ2ZvbnQnXTtcbiAgICB9XG4gICAgLy8gQHRlc3QgTWF0aENoYXI3IFNpbmdsZSwgTWF0aENoYXI3IE9wZXJhdG9yLCBNYXRoQ2hhcjcgTXVsdGlcbiAgICBjb25zdCBub2RlID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbWknLCBkZWYsIG1jaGFyLmNoYXIpO1xuICAgIHBhcnNlci5QdXNoKG5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBkZWxpbWl0ZXIuXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgdGV4IHBhcnNlci5cbiAgICogQHBhcmFtIHtTeW1ib2x9IGRlbGltIFRoZSBwYXJzZWQgZGVsaW1pdGVyIHN5bWJvbC5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBkZWxpbWl0ZXIocGFyc2VyOiBUZXhQYXJzZXIsIGRlbGltOiBTeW1ib2wpIHtcbiAgICBsZXQgZGVmID0gZGVsaW0uYXR0cmlidXRlcyB8fCB7fTtcbiAgICAvLyBAdGVzdCBGZW5jZWQyLCBEZWxpbWl0ZXIgKEFNUylcbiAgICBkZWYgPSBPYmplY3QuYXNzaWduKHtmZW5jZTogZmFsc2UsIHN0cmV0Y2h5OiBmYWxzZX0sIGRlZik7XG4gICAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywgZGVmLCBkZWxpbS5jaGFyKTtcbiAgICBwYXJzZXIuUHVzaChub2RlKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIFBhcnNlIGFuIGVudmlyb25tZW50LlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnYgVGhlIG5hbWUgb2YgdGhlIGVudmlyb25tZW50LlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBwYXJzZSBtZXRob2QgZm9yIHRoZSBlbnZpcm9ubWVudC5cbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyBBIGxpc3Qgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gZW52aXJvbm1lbnQocGFyc2VyOiBUZXhQYXJzZXIsIGVudjogc3RyaW5nLCBmdW5jOiBGdW5jdGlvbiwgYXJnczogYW55W10pIHtcbiAgICBjb25zdCBlbmQgPSBhcmdzWzBdO1xuICAgIGxldCBtbWwgPSBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdiZWdpbicpLnNldFByb3BlcnRpZXMoe25hbWU6IGVudiwgZW5kOiBlbmR9KTtcbiAgICBtbWwgPSBmdW5jKHBhcnNlciwgbW1sLCAuLi5hcmdzLnNsaWNlKDEpKTtcbiAgICBwYXJzZXIuUHVzaChtbWwpO1xuICB9XG5cbn1cblxuZXhwb3J0IGRlZmF1bHQgUGFyc2VNZXRob2RzO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQmFzZSBtYXBwaW5ncyBmb3IgVGVYIFBhcnNpbmcuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0ICogIGFzIHNtIGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQge1RleENvbnN0YW50fSBmcm9tICcuLi9UZXhDb25zdGFudHMuanMnO1xuaW1wb3J0IEJhc2VNZXRob2RzIGZyb20gJy4vQmFzZU1ldGhvZHMuanMnO1xuaW1wb3J0IFBhcnNlTWV0aG9kcyBmcm9tICcuLi9QYXJzZU1ldGhvZHMuanMnO1xuaW1wb3J0IFBhcnNlVXRpbCBmcm9tICcuLi9QYXJzZVV0aWwuanMnO1xuaW1wb3J0IHtURVhDTEFTU30gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtNQVRIU1BBQ0UsIGVtfSBmcm9tICcuLi8uLi8uLi91dGlsL2xlbmd0aHMuanMnO1xuXG5cbi8qKlxuICogTGV0dGVyIHBhdHRlcm4gZm9yIHBhcnNpbmcgaWRlbnRpZmllcnMgYW5kIG9wZXJhdG9ycy5cbiAqL1xubmV3IHNtLlJlZ0V4cE1hcCgnbGV0dGVyJywgUGFyc2VNZXRob2RzLnZhcmlhYmxlLCAvW2Etel0vaSk7XG5cblxuLyoqXG4gKiBEaWdpdCBwYXR0ZXJuIGZvciBwYXJzaW5nIG51bWJlcnMuXG4gKi9cbm5ldyBzbS5SZWdFeHBNYXAoJ2RpZ2l0JywgUGFyc2VNZXRob2RzLmRpZ2l0LCAvWzAtOS4sXS8pO1xuXG5cbi8qKlxuICogUGF0dGVybiBmb3Igc3BvdHRpbmcgc3RhcnQgb2YgY29tbWFuZHMuXG4gKi9cbm5ldyBzbS5SZWdFeHBNYXAoJ2NvbW1hbmQnLCBQYXJzZU1ldGhvZHMuY29udHJvbFNlcXVlbmNlLCAvXlxcXFwvICk7XG5cblxuLyoqXG4gKiBUcmVhdG1lbnQgb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIGluIExhVGVYLlxuICovXG5uZXcgc20uTWFjcm9NYXAoJ3NwZWNpYWwnLCB7XG5cbiAgLy8gVGhpcyBpcyBub3cgaGFuZGxlZCB3aXRoIGEgUmVnRXhwIVxuICAvLyAnXFxcXCc6ICAnQ29udHJvbFNlcXVlbmNlJyxcblxuICAneyc6ICAgJ09wZW4nLFxuICAnfSc6ICAgJ0Nsb3NlJyxcbiAgJ34nOiAgICdUaWxkZScsXG4gICdeJzogICAnU3VwZXJzY3JpcHQnLFxuICAnXyc6ICAgJ1N1YnNjcmlwdCcsXG4gICcgJzogICAnU3BhY2UnLFxuICAnXFx0JzogICdTcGFjZScsXG4gICdcXHInOiAgJ1NwYWNlJyxcbiAgJ1xcbic6ICAnU3BhY2UnLFxuICAnXFwnJzogICdQcmltZScsXG4gICclJzogICAnQ29tbWVudCcsXG4gICcmJzogICAnRW50cnknLFxuICAnIyc6ICAgJ0hhc2gnLFxuICAnXFx1MDBBMCc6ICdTcGFjZScsXG4gICdcXHUyMDE5JzogJ1ByaW1lJ1xufSwgQmFzZU1ldGhvZHMpO1xuXG5cbi8qKlxuICogTWFjcm9zIGZvciBpZGVudGlmaWVycy5cbiAqL1xubmV3IHNtLkNoYXJhY3Rlck1hcCgnbWF0aGNoYXIwbWknLCBQYXJzZU1ldGhvZHMubWF0aGNoYXIwbWksIHtcbiAgLy8gTG93ZXItY2FzZSBncmVla1xuICBhbHBoYTogICAgICAgICdcXHUwM0IxJyxcbiAgYmV0YTogICAgICAgICAnXFx1MDNCMicsXG4gIGdhbW1hOiAgICAgICAgJ1xcdTAzQjMnLFxuICBkZWx0YTogICAgICAgICdcXHUwM0I0JyxcbiAgZXBzaWxvbjogICAgICAnXFx1MDNGNScsXG4gIHpldGE6ICAgICAgICAgJ1xcdTAzQjYnLFxuICBldGE6ICAgICAgICAgICdcXHUwM0I3JyxcbiAgdGhldGE6ICAgICAgICAnXFx1MDNCOCcsXG4gIGlvdGE6ICAgICAgICAgJ1xcdTAzQjknLFxuICBrYXBwYTogICAgICAgICdcXHUwM0JBJyxcbiAgbGFtYmRhOiAgICAgICAnXFx1MDNCQicsXG4gIG11OiAgICAgICAgICAgJ1xcdTAzQkMnLFxuICBudTogICAgICAgICAgICdcXHUwM0JEJyxcbiAgeGk6ICAgICAgICAgICAnXFx1MDNCRScsXG4gIG9taWNyb246ICAgICAgJ1xcdTAzQkYnLCAvLyBhZGRlZCBmb3IgY29tcGxldGVuZXNzXG4gIHBpOiAgICAgICAgICAgJ1xcdTAzQzAnLFxuICByaG86ICAgICAgICAgICdcXHUwM0MxJyxcbiAgc2lnbWE6ICAgICAgICAnXFx1MDNDMycsXG4gIHRhdTogICAgICAgICAgJ1xcdTAzQzQnLFxuICB1cHNpbG9uOiAgICAgICdcXHUwM0M1JyxcbiAgcGhpOiAgICAgICAgICAnXFx1MDNENScsXG4gIGNoaTogICAgICAgICAgJ1xcdTAzQzcnLFxuICBwc2k6ICAgICAgICAgICdcXHUwM0M4JyxcbiAgb21lZ2E6ICAgICAgICAnXFx1MDNDOScsXG4gIHZhcmVwc2lsb246ICAgJ1xcdTAzQjUnLFxuICB2YXJ0aGV0YTogICAgICdcXHUwM0QxJyxcbiAgdmFycGk6ICAgICAgICAnXFx1MDNENicsXG4gIHZhcnJobzogICAgICAgJ1xcdTAzRjEnLFxuICB2YXJzaWdtYTogICAgICdcXHUwM0MyJyxcbiAgdmFycGhpOiAgICAgICAnXFx1MDNDNicsXG5cbiAgLy8gT3JkIHN5bWJvbHNcbiAgUzogICAgICAgICAgICBbJ1xcdTAwQTcnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV0sXG4gIGFsZXBoOiAgICAgICAgWydcXHUyMTM1Jywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBoYmFyOiAgICAgICAgIFsnXFx1MjEwRicsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBpbWF0aDogICAgICAgICdcXHUwMTMxJyxcbiAgam1hdGg6ICAgICAgICAnXFx1MDIzNycsXG4gIGVsbDogICAgICAgICAgJ1xcdTIxMTMnLFxuICB3cDogICAgICAgICAgIFsnXFx1MjExOCcsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUx9XSxcbiAgUmU6ICAgICAgICAgICBbJ1xcdTIxMUMnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV0sXG4gIEltOiAgICAgICAgICAgWydcXHUyMTExJywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBwYXJ0aWFsOiAgICAgIFsnXFx1MjIwMicsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5JVEFMSUN9XSxcbiAgaW5mdHk6ICAgICAgICBbJ1xcdTIyMUUnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV0sXG4gIHByaW1lOiAgICAgICAgWydcXHUyMDMyJywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIGVtcHR5c2V0OiAgICAgWydcXHUyMjA1Jywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBuYWJsYTogICAgICAgIFsnXFx1MjIwNycsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUx9XSxcbiAgdG9wOiAgICAgICAgICBbJ1xcdTIyQTQnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV0sXG4gIGJvdDogICAgICAgICAgWydcXHUyMkE1Jywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBhbmdsZTogICAgICAgIFsnXFx1MjIyMCcsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUx9XSxcbiAgdHJpYW5nbGU6ICAgICBbJ1xcdTI1QjMnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV0sXG4gIGJhY2tzbGFzaDogICAgWydcXHUyMjE2Jywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBmb3JhbGw6ICAgICAgIFsnXFx1MjIwMCcsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUx9XSxcbiAgZXhpc3RzOiAgICAgICBbJ1xcdTIyMDMnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV0sXG4gIG5lZzogICAgICAgICAgWydcXHUwMEFDJywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBsbm90OiAgICAgICAgIFsnXFx1MDBBQycsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUx9XSxcbiAgZmxhdDogICAgICAgICBbJ1xcdTI2NkQnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV0sXG4gIG5hdHVyYWw6ICAgICAgWydcXHUyNjZFJywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBzaGFycDogICAgICAgIFsnXFx1MjY2RicsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUx9XSxcbiAgY2x1YnN1aXQ6ICAgICBbJ1xcdTI2NjMnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV0sXG4gIGRpYW1vbmRzdWl0OiAgWydcXHUyNjYyJywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBoZWFydHN1aXQ6ICAgIFsnXFx1MjY2MScsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUx9XSxcbiAgc3BhZGVzdWl0OiAgICBbJ1xcdTI2NjAnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV1cbn0pO1xuXG5cbi8qKlxuICogTWFjcm9zIGZvciBvcGVyYXRvcnMuXG4gKi9cbm5ldyBzbS5DaGFyYWN0ZXJNYXAoJ21hdGhjaGFyMG1vJywgUGFyc2VNZXRob2RzLm1hdGhjaGFyMG1vLCB7XG4gIHN1cmQ6ICAgICAgICAgJ1xcdTIyMUEnLFxuXG4gIC8vIGJpZyBvcHNcbiAgY29wcm9kOiAgICAgICBbJ1xcdTIyMTAnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgYmlndmVlOiAgICAgICBbJ1xcdTIyQzEnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgYmlnd2VkZ2U6ICAgICBbJ1xcdTIyQzAnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgYmlndXBsdXM6ICAgICBbJ1xcdTJBMDQnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgYmlnY2FwOiAgICAgICBbJ1xcdTIyQzInLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgYmlnY3VwOiAgICAgICBbJ1xcdTIyQzMnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgJ2ludCc6ICAgICAgICBbJ1xcdTIyMkInLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QfV0sXG4gIGludG9wOiAgICAgICAgWydcXHUyMjJCJywge3RleENsYXNzOiBURVhDTEFTUy5PUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Zlc3Vwc3ViOiB0cnVlLCBtb3ZhYmxlbGltaXRzOiB0cnVlfV0sXG4gIGlpbnQ6ICAgICAgICAgWydcXHUyMjJDJywge3RleENsYXNzOiBURVhDTEFTUy5PUH1dLFxuICBpaWludDogICAgICAgIFsnXFx1MjIyRCcsIHt0ZXhDbGFzczogVEVYQ0xBU1MuT1B9XSxcbiAgcHJvZDogICAgICAgICBbJ1xcdTIyMEYnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgc3VtOiAgICAgICAgICBbJ1xcdTIyMTEnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgYmlnb3RpbWVzOiAgICBbJ1xcdTJBMDInLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgYmlnb3BsdXM6ICAgICBbJ1xcdTJBMDEnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgYmlnb2RvdDogICAgICBbJ1xcdTJBMDAnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVzdXBzdWI6IHRydWV9XSxcbiAgb2ludDogICAgICAgICBbJ1xcdTIyMkUnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9QfV0sXG4gIGJpZ3NxY3VwOiAgICAgWydcXHUyQTA2Jywge3RleENsYXNzOiBURVhDTEFTUy5PUCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb3Zlc3Vwc3ViOiB0cnVlfV0sXG4gIHNtYWxsaW50OiAgICAgWydcXHUyMjJCJywge2xhcmdlb3A6IGZhbHNlfV0sXG5cbiAgLy8gYmluYXJ5IG9wZXJhdGlvbnNcbiAgdHJpYW5nbGVsZWZ0OiAgICAgICdcXHUyNUMzJyxcbiAgdHJpYW5nbGVyaWdodDogICAgICdcXHUyNUI5JyxcbiAgYmlndHJpYW5nbGV1cDogICAgICdcXHUyNUIzJyxcbiAgYmlndHJpYW5nbGVkb3duOiAgICdcXHUyNUJEJyxcbiAgd2VkZ2U6ICAgICAgICAnXFx1MjIyNycsXG4gIGxhbmQ6ICAgICAgICAgJ1xcdTIyMjcnLFxuICB2ZWU6ICAgICAgICAgICdcXHUyMjI4JyxcbiAgbG9yOiAgICAgICAgICAnXFx1MjIyOCcsXG4gIGNhcDogICAgICAgICAgJ1xcdTIyMjknLFxuICBjdXA6ICAgICAgICAgICdcXHUyMjJBJyxcbiAgZGRhZ2dlcjogICAgICAnXFx1MjAyMScsXG4gIGRhZ2dlcjogICAgICAgJ1xcdTIwMjAnLFxuICBzcWNhcDogICAgICAgICdcXHUyMjkzJyxcbiAgc3FjdXA6ICAgICAgICAnXFx1MjI5NCcsXG4gIHVwbHVzOiAgICAgICAgJ1xcdTIyOEUnLFxuICBhbWFsZzogICAgICAgICdcXHUyQTNGJyxcbiAgZGlhbW9uZDogICAgICAnXFx1MjJDNCcsXG4gIGJ1bGxldDogICAgICAgJ1xcdTIyMTknLFxuICB3cjogICAgICAgICAgICdcXHUyMjQwJyxcbiAgZGl2OiAgICAgICAgICAnXFx1MDBGNycsXG4gIGRpdnN5bWJvbDogICAgJ1xcdTAwRjcnLFxuICBvZG90OiAgICAgICAgIFsnXFx1MjI5OScsIHtsYXJnZW9wOiBmYWxzZX1dLFxuICBvc2xhc2g6ICAgICAgIFsnXFx1MjI5OCcsIHtsYXJnZW9wOiBmYWxzZX1dLFxuICBvdGltZXM6ICAgICAgIFsnXFx1MjI5NycsIHtsYXJnZW9wOiBmYWxzZX1dLFxuICBvbWludXM6ICAgICAgIFsnXFx1MjI5NicsIHtsYXJnZW9wOiBmYWxzZX1dLFxuICBvcGx1czogICAgICAgIFsnXFx1MjI5NScsIHtsYXJnZW9wOiBmYWxzZX1dLFxuICBtcDogICAgICAgICAgICdcXHUyMjEzJyxcbiAgcG06ICAgICAgICAgICAnXFx1MDBCMScsXG4gIGNpcmM6ICAgICAgICAgJ1xcdTIyMTgnLFxuICBiaWdjaXJjOiAgICAgICdcXHUyNUVGJyxcbiAgc2V0bWludXM6ICAgICAnXFx1MjIxNicsXG4gIGNkb3Q6ICAgICAgICAgJ1xcdTIyQzUnLFxuICBhc3Q6ICAgICAgICAgICdcXHUyMjE3JyxcbiAgdGltZXM6ICAgICAgICAnXFx1MDBENycsXG4gIHN0YXI6ICAgICAgICAgJ1xcdTIyQzYnLFxuXG5cbiAgLy8gUmVsYXRpb25zXG4gIHByb3B0bzogICAgICAgJ1xcdTIyMUQnLFxuICBzcXN1YnNldGVxOiAgICdcXHUyMjkxJyxcbiAgc3FzdXBzZXRlcTogICAnXFx1MjI5MicsXG4gIHBhcmFsbGVsOiAgICAgJ1xcdTIyMjUnLFxuICBtaWQ6ICAgICAgICAgICdcXHUyMjIzJyxcbiAgZGFzaHY6ICAgICAgICAnXFx1MjJBMycsXG4gIHZkYXNoOiAgICAgICAgJ1xcdTIyQTInLFxuICBsZXE6ICAgICAgICAgICdcXHUyMjY0JyxcbiAgbGU6ICAgICAgICAgICAnXFx1MjI2NCcsXG4gIGdlcTogICAgICAgICAgJ1xcdTIyNjUnLFxuICBnZTogICAgICAgICAgICdcXHUyMjY1JyxcbiAgbHQ6ICAgICAgICAgICAnXFx1MDAzQycsXG4gIGd0OiAgICAgICAgICAgJ1xcdTAwM0UnLFxuICBzdWNjOiAgICAgICAgICdcXHUyMjdCJyxcbiAgcHJlYzogICAgICAgICAnXFx1MjI3QScsXG4gIGFwcHJveDogICAgICAgJ1xcdTIyNDgnLFxuICBzdWNjZXE6ICAgICAgICdcXHUyQUIwJywgIC8vIG9yICcyMjdDJyxcbiAgcHJlY2VxOiAgICAgICAnXFx1MkFBRicsICAvLyBvciAnMjI3RCcsXG4gIHN1cHNldDogICAgICAgJ1xcdTIyODMnLFxuICBzdWJzZXQ6ICAgICAgICdcXHUyMjgyJyxcbiAgc3Vwc2V0ZXE6ICAgICAnXFx1MjI4NycsXG4gIHN1YnNldGVxOiAgICAgJ1xcdTIyODYnLFxuICAnaW4nOiAgICAgICAgICdcXHUyMjA4JyxcbiAgbmk6ICAgICAgICAgICAnXFx1MjIwQicsXG4gIG5vdGluOiAgICAgICAgJ1xcdTIyMDknLFxuICBvd25zOiAgICAgICAgICdcXHUyMjBCJyxcbiAgZ2c6ICAgICAgICAgICAnXFx1MjI2QicsXG4gIGxsOiAgICAgICAgICAgJ1xcdTIyNkEnLFxuICBzaW06ICAgICAgICAgICdcXHUyMjNDJyxcbiAgc2ltZXE6ICAgICAgICAnXFx1MjI0MycsXG4gIHBlcnA6ICAgICAgICAgJ1xcdTIyQTUnLFxuICBlcXVpdjogICAgICAgICdcXHUyMjYxJyxcbiAgYXN5bXA6ICAgICAgICAnXFx1MjI0RCcsXG4gIHNtaWxlOiAgICAgICAgJ1xcdTIzMjMnLFxuICBmcm93bjogICAgICAgICdcXHUyMzIyJyxcbiAgbmU6ICAgICAgICAgICAnXFx1MjI2MCcsXG4gIG5lcTogICAgICAgICAgJ1xcdTIyNjAnLFxuICBjb25nOiAgICAgICAgICdcXHUyMjQ1JyxcbiAgZG90ZXE6ICAgICAgICAnXFx1MjI1MCcsXG4gIGJvd3RpZTogICAgICAgJ1xcdTIyQzgnLFxuICBtb2RlbHM6ICAgICAgICdcXHUyMkE4JyxcblxuICBub3RDaGFyOiAgICAgICdcXHUyOUY4JyxcblxuXG4gIC8vIEFycm93c1xuICBMZWZ0cmlnaHRhcnJvdzogICAgICdcXHUyMUQ0JyxcbiAgTGVmdGFycm93OiAgICAgICAgICAnXFx1MjFEMCcsXG4gIFJpZ2h0YXJyb3c6ICAgICAgICAgJ1xcdTIxRDInLFxuICBsZWZ0cmlnaHRhcnJvdzogICAgICdcXHUyMTk0JyxcbiAgbGVmdGFycm93OiAgICAgICAgICAnXFx1MjE5MCcsXG4gIGdldHM6ICAgICAgICAgICAgICAgJ1xcdTIxOTAnLFxuICByaWdodGFycm93OiAgICAgICAgICdcXHUyMTkyJyxcbiAgdG86ICAgICAgICAgICAgICAgIFsnXFx1MjE5MicsIHthY2NlbnQ6IGZhbHNlfV0sXG4gIG1hcHN0bzogICAgICAgICAgICAgJ1xcdTIxQTYnLFxuICBsZWZ0aGFycG9vbnVwOiAgICAgICdcXHUyMUJDJyxcbiAgbGVmdGhhcnBvb25kb3duOiAgICAnXFx1MjFCRCcsXG4gIHJpZ2h0aGFycG9vbnVwOiAgICAgJ1xcdTIxQzAnLFxuICByaWdodGhhcnBvb25kb3duOiAgICdcXHUyMUMxJyxcbiAgbmVhcnJvdzogICAgICAgICAgICAnXFx1MjE5NycsXG4gIHNlYXJyb3c6ICAgICAgICAgICAgJ1xcdTIxOTgnLFxuICBud2Fycm93OiAgICAgICAgICAgICdcXHUyMTk2JyxcbiAgc3dhcnJvdzogICAgICAgICAgICAnXFx1MjE5OScsXG4gIHJpZ2h0bGVmdGhhcnBvb25zOiAgJ1xcdTIxQ0MnLFxuICBob29rcmlnaHRhcnJvdzogICAgICdcXHUyMUFBJyxcbiAgaG9va2xlZnRhcnJvdzogICAgICAnXFx1MjFBOScsXG4gIGxvbmdsZWZ0YXJyb3c6ICAgICAgJ1xcdTI3RjUnLFxuICBMb25nbGVmdGFycm93OiAgICAgICdcXHUyN0Y4JyxcbiAgbG9uZ3JpZ2h0YXJyb3c6ICAgICAnXFx1MjdGNicsXG4gIExvbmdyaWdodGFycm93OiAgICAgJ1xcdTI3RjknLFxuICBMb25nbGVmdHJpZ2h0YXJyb3c6ICdcXHUyN0ZBJyxcbiAgbG9uZ2xlZnRyaWdodGFycm93OiAnXFx1MjdGNycsXG4gIGxvbmdtYXBzdG86ICAgICAgICAgJ1xcdTI3RkMnLFxuXG5cbiAgLy8gTWlzYy5cbiAgbGRvdHM6ICAgICAgICAgICAgJ1xcdTIwMjYnLFxuICBjZG90czogICAgICAgICAgICAnXFx1MjJFRicsXG4gIHZkb3RzOiAgICAgICAgICAgICdcXHUyMkVFJyxcbiAgZGRvdHM6ICAgICAgICAgICAgJ1xcdTIyRjEnLFxuICBkb3RzYzogICAgICAgICAgICAnXFx1MjAyNicsICAvLyBkb3RzIHdpdGggY29tbWFzXG4gIGRvdHNiOiAgICAgICAgICAgICdcXHUyMkVGJywgIC8vIGRvdHMgd2l0aCBiaW5hcnkgb3BzIGFuZCByZWxhdGlvbnNcbiAgZG90c206ICAgICAgICAgICAgJ1xcdTIyRUYnLCAgLy8gZG90cyB3aXRoIG11bHRpcGxpY2F0aW9uXG4gIGRvdHNpOiAgICAgICAgICAgICdcXHUyMkVGJywgIC8vIGRvdHMgd2l0aCBpbnRlZ3JhbHNcbiAgZG90c286ICAgICAgICAgICAgJ1xcdTIwMjYnLCAgLy8gb3RoZXIgZG90c1xuXG4gIGxkb3RwOiAgICAgICAgICAgIFsnXFx1MDAyRScsIHt0ZXhDbGFzczogVEVYQ0xBU1MuUFVOQ1R9XSxcbiAgY2RvdHA6ICAgICAgICAgICAgWydcXHUyMkM1Jywge3RleENsYXNzOiBURVhDTEFTUy5QVU5DVH1dLFxuICBjb2xvbjogICAgICAgICAgICBbJ1xcdTAwM0EnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLlBVTkNUfV1cbn0pO1xuXG5cbi8qKlxuICogTWFjcm9zIGZvciBzcGVjaWFsIGNoYXJhY3RlcnMgYW5kIGlkZW50aWZpZXJzLlxuICovXG5uZXcgc20uQ2hhcmFjdGVyTWFwKCdtYXRoY2hhcjcnLCBQYXJzZU1ldGhvZHMubWF0aGNoYXI3LCB7XG4gIEdhbW1hOiAgICAgICAgJ1xcdTAzOTMnLFxuICBEZWx0YTogICAgICAgICdcXHUwMzk0JyxcbiAgVGhldGE6ICAgICAgICAnXFx1MDM5OCcsXG4gIExhbWJkYTogICAgICAgJ1xcdTAzOUInLFxuICBYaTogICAgICAgICAgICdcXHUwMzlFJyxcbiAgUGk6ICAgICAgICAgICAnXFx1MDNBMCcsXG4gIFNpZ21hOiAgICAgICAgJ1xcdTAzQTMnLFxuICBVcHNpbG9uOiAgICAgICdcXHUwM0E1JyxcbiAgUGhpOiAgICAgICAgICAnXFx1MDNBNicsXG4gIFBzaTogICAgICAgICAgJ1xcdTAzQTgnLFxuICBPbWVnYTogICAgICAgICdcXHUwM0E5JyxcblxuICAnXyc6ICAgICAgICAgICdcXHUwMDVGJyxcbiAgJyMnOiAgICAgICAgICAnXFx1MDAyMycsXG4gICckJzogICAgICAgICAgJ1xcdTAwMjQnLFxuICAnJSc6ICAgICAgICAgICdcXHUwMDI1JyxcbiAgJyYnOiAgICAgICAgICAnXFx1MDAyNicsXG4gIEFuZDogICAgICAgICAgJ1xcdTAwMjYnXG59KTtcblxuXG4vKipcbiAqIE1hY3JvcyBmb3IgZGVsaW1pdGVycy5cbiAqL1xubmV3IHNtLkRlbGltaXRlck1hcCgnZGVsaW1pdGVyJywgUGFyc2VNZXRob2RzLmRlbGltaXRlciwge1xuICAnKCc6ICAgICAgICAgICAgICAgICcoJyxcbiAgJyknOiAgICAgICAgICAgICAgICAnKScsXG4gICdbJzogICAgICAgICAgICAgICAgJ1snLFxuICAnXSc6ICAgICAgICAgICAgICAgICddJyxcbiAgJzwnOiAgICAgICAgICAgICAgICAnXFx1MjdFOCcsXG4gICc+JzogICAgICAgICAgICAgICAgJ1xcdTI3RTknLFxuICAnXFxcXGx0JzogICAgICAgICAgICAgJ1xcdTI3RTgnLFxuICAnXFxcXGd0JzogICAgICAgICAgICAgJ1xcdTI3RTknLFxuICAnLyc6ICAgICAgICAgICAgICAgICcvJyxcbiAgJ3wnOiAgICAgICAgICAgICAgICBbJ3wnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9SRH1dLFxuICAnLic6ICAgICAgICAgICAgICAgICcnLFxuICAnXFxcXFxcXFwnOiAgICAgICAgICAgICAnXFxcXCcsXG4gICdcXFxcbG1vdXN0YWNoZSc6ICAgICAnXFx1MjNCMCcsICAvLyBub24tc3RhbmRhcmRcbiAgJ1xcXFxybW91c3RhY2hlJzogICAgICdcXHUyM0IxJywgIC8vIG5vbi1zdGFuZGFyZFxuICAnXFxcXGxncm91cCc6ICAgICAgICAgJ1xcdTI3RUUnLCAgLy8gbm9uLXN0YW5kYXJkXG4gICdcXFxccmdyb3VwJzogICAgICAgICAnXFx1MjdFRicsICAvLyBub24tc3RhbmRhcmRcbiAgJ1xcXFxhcnJvd3ZlcnQnOiAgICAgICdcXHUyM0QwJyxcbiAgJ1xcXFxBcnJvd3ZlcnQnOiAgICAgICdcXHUyMDE2JyxcbiAgJ1xcXFxicmFjZXZlcnQnOiAgICAgICdcXHUyM0FBJywgIC8vIG5vbi1zdGFuZGFyZFxuICAnXFxcXFZlcnQnOiAgICAgICAgICAgWydcXHUyMDE2Jywge3RleENsYXNzOiBURVhDTEFTUy5PUkR9XSxcbiAgJ1xcXFx8JzogICAgICAgICAgICAgIFsnXFx1MjAxNicsIHt0ZXhDbGFzczogVEVYQ0xBU1MuT1JEfV0sXG4gICdcXFxcdmVydCc6ICAgICAgICAgICBbJ3wnLCB7dGV4Q2xhc3M6IFRFWENMQVNTLk9SRH1dLFxuICAnXFxcXHVwYXJyb3cnOiAgICAgICAgJ1xcdTIxOTEnLFxuICAnXFxcXGRvd25hcnJvdyc6ICAgICAgJ1xcdTIxOTMnLFxuICAnXFxcXHVwZG93bmFycm93JzogICAgJ1xcdTIxOTUnLFxuICAnXFxcXFVwYXJyb3cnOiAgICAgICAgJ1xcdTIxRDEnLFxuICAnXFxcXERvd25hcnJvdyc6ICAgICAgJ1xcdTIxRDMnLFxuICAnXFxcXFVwZG93bmFycm93JzogICAgJ1xcdTIxRDUnLFxuICAnXFxcXGJhY2tzbGFzaCc6ICAgICAgJ1xcXFwnLFxuICAnXFxcXHJhbmdsZSc6ICAgICAgICAgJ1xcdTI3RTknLFxuICAnXFxcXGxhbmdsZSc6ICAgICAgICAgJ1xcdTI3RTgnLFxuICAnXFxcXHJicmFjZSc6ICAgICAgICAgJ30nLFxuICAnXFxcXGxicmFjZSc6ICAgICAgICAgJ3snLFxuICAnXFxcXH0nOiAgICAgICAgICAgICAgJ30nLFxuICAnXFxcXHsnOiAgICAgICAgICAgICAgJ3snLFxuICAnXFxcXHJjZWlsJzogICAgICAgICAgJ1xcdTIzMDknLFxuICAnXFxcXGxjZWlsJzogICAgICAgICAgJ1xcdTIzMDgnLFxuICAnXFxcXHJmbG9vcic6ICAgICAgICAgJ1xcdTIzMEInLFxuICAnXFxcXGxmbG9vcic6ICAgICAgICAgJ1xcdTIzMEEnLFxuICAnXFxcXGxicmFjayc6ICAgICAgICAgJ1snLFxuICAnXFxcXHJicmFjayc6ICAgICAgICAgJ10nXG59KTtcblxuXG4vKipcbiAqIE1hY3JvcyBmb3IgTGFUZVggY29tbWFuZHMuXG4gKi9cbm5ldyBzbS5Db21tYW5kTWFwKCdtYWNyb3MnLCB7XG4gIGRpc3BsYXlzdHlsZTogICAgICBbJ1NldFN0eWxlJywgJ0QnLCB0cnVlLCAwXSxcbiAgdGV4dHN0eWxlOiAgICAgICAgIFsnU2V0U3R5bGUnLCAnVCcsIGZhbHNlLCAwXSxcbiAgc2NyaXB0c3R5bGU6ICAgICAgIFsnU2V0U3R5bGUnLCAnUycsIGZhbHNlLCAxXSxcbiAgc2NyaXB0c2NyaXB0c3R5bGU6IFsnU2V0U3R5bGUnLCAnU1MnLCBmYWxzZSwgMl0sXG5cbiAgcm06ICAgICAgICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMXSxcbiAgbWl0OiAgICAgICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuSVRBTElDXSxcbiAgb2xkc3R5bGU6ICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuT0xEU1RZTEVdLFxuICBjYWw6ICAgICAgICAgICAgICAgWydTZXRGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5DQUxMSUdSQVBISUNdLFxuICBpdDogICAgICAgICAgICAgICAgWydTZXRGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5NQVRISVRBTElDXSwgLy8gbmVlZHMgc3BlY2lhbCBoYW5kbGluZ1xuICBiZjogICAgICAgICAgICAgICAgWydTZXRGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5CT0xEXSxcbiAgYmJGb250OiAgICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuRE9VQkxFU1RSVUNLXSxcbiAgc2NyOiAgICAgICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuU0NSSVBUXSxcbiAgZnJhazogICAgICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuRlJBS1RVUl0sXG4gIHNmOiAgICAgICAgICAgICAgICBbJ1NldEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LlNBTlNTRVJJRl0sXG4gIHR0OiAgICAgICAgICAgICAgICBbJ1NldEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50Lk1PTk9TUEFDRV0sXG5cbiAgbWF0aHJtOiAgICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTF0sXG4gIG1hdGh1cDogICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUxdLFxuICBtYXRobm9ybWFsOiAgICAgICAgWydNYXRoRm9udCcsICcnXSxcbiAgbWF0aGJmOiAgICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkJPTERdLFxuICBtYXRoYmZ1cDogICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRF0sXG4gIG1hdGhpdDogICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5NQVRISVRBTElDXSxcbiAgbWF0aGJmaXQ6ICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkJPTERJVEFMSUNdLFxuICBtYXRoYmI6ICAgICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuRE9VQkxFU1RSVUNLXSxcbiAgQmJiOiAgICAgICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkRPVUJMRVNUUlVDS10sXG4gIG1hdGhmcmFrOiAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5GUkFLVFVSXSxcbiAgbWF0aGJmZnJhazogICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkJPTERGUkFLVFVSXSxcbiAgbWF0aHNjcjogICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LlNDUklQVF0sXG4gIG1hdGhiZnNjcjogICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5CT0xEU0NSSVBUXSxcbiAgbWF0aHNmOiAgICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LlNBTlNTRVJJRl0sXG4gIG1hdGhzZnVwOiAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5TQU5TU0VSSUZdLFxuICBtYXRoYmZzZjogICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRFNBTlNTRVJJRl0sXG4gIG1hdGhiZnNmdXA6ICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5CT0xEU0FOU1NFUklGXSxcbiAgbWF0aHNmaXQ6ICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LlNBTlNTRVJJRklUQUxJQ10sXG4gIG1hdGhiZnNmaXQ6ICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5TQU5TU0VSSUZCT0xESVRBTElDXSxcbiAgbWF0aHR0OiAgICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50Lk1PTk9TUEFDRV0sXG4gIG1hdGhjYWw6ICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5DQUxMSUdSQVBISUNdLFxuICBtYXRoYmZjYWw6ICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRENBTExJR1JBUEhJQ10sXG5cbiAgc3ltcm06ICAgICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTF0sXG4gIHN5bXVwOiAgICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUxdLFxuICBzeW1ub3JtYWw6ICAgICAgICAgWydNYXRoRm9udCcsICcnXSxcbiAgc3ltYmY6ICAgICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkJPTERdLFxuICBzeW1iZnVwOiAgICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRF0sXG4gIHN5bWl0OiAgICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5JVEFMSUNdLFxuICBzeW1iZml0OiAgICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRElUQUxJQ10sXG4gIHN5bWJiOiAgICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5ET1VCTEVTVFJVQ0tdLFxuICBzeW1mcmFrOiAgICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuRlJBS1RVUl0sXG4gIHN5bWJmZnJhazogICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5CT0xERlJBS1RVUl0sXG4gIHN5bXNjcjogICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5TQ1JJUFRdLFxuICBzeW1iZnNjcjogICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRFNDUklQVF0sXG4gIHN5bXNmOiAgICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5TQU5TU0VSSUZdLFxuICBzeW1zZnVwOiAgICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuU0FOU1NFUklGXSxcbiAgc3ltYmZzZjogICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkJPTERTQU5TU0VSSUZdLFxuICBzeW1iZnNmdXA6ICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRFNBTlNTRVJJRl0sXG4gIHN5bXNmaXQ6ICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5TQU5TU0VSSUZJVEFMSUNdLFxuICBzeW1iZnNmaXQ6ICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuU0FOU1NFUklGQk9MRElUQUxJQ10sXG4gIHN5bXR0OiAgICAgICAgICAgICBbJ01hdGhGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5NT05PU1BBQ0VdLFxuICBzeW1jYWw6ICAgICAgICAgICAgWydNYXRoRm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQ0FMTElHUkFQSElDXSxcbiAgc3ltYmZjYWw6ICAgICAgICAgIFsnTWF0aEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkJPTERDQUxMSUdSQVBISUNdLFxuXG4gIHRleHRybTogICAgICAgICAgICBbJ0hCb3gnLCBudWxsLCBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTF0sXG4gIHRleHR1cDogICAgICAgICAgICBbJ0hCb3gnLCBudWxsLCBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTF0sXG4gIHRleHRub3JtYWw6ICAgICAgICBbJ0hCb3gnXSxcbiAgdGV4dGl0OiAgICAgICAgICAgIFsnSEJveCcsIG51bGwsIFRleENvbnN0YW50LlZhcmlhbnQuSVRBTElDXSxcbiAgdGV4dGJmOiAgICAgICAgICAgIFsnSEJveCcsIG51bGwsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRF0sXG4gIHRleHRzZjogICAgICAgICAgICBbJ0hCb3gnLCBudWxsLCBUZXhDb25zdGFudC5WYXJpYW50LlNBTlNTRVJJRl0sXG4gIHRleHR0dDogICAgICAgICAgICBbJ0hCb3gnLCBudWxsLCBUZXhDb25zdGFudC5WYXJpYW50Lk1PTk9TUEFDRV0sXG5cbiAgdGlueTogICAgICAgICAgICAgIFsnU2V0U2l6ZScsIDAuNV0sXG4gIFRpbnk6ICAgICAgICAgICAgICBbJ1NldFNpemUnLCAwLjZdLCAgLy8gbm9uLXN0YW5kYXJkXG4gIHNjcmlwdHNpemU6ICAgICAgICBbJ1NldFNpemUnLCAwLjddLFxuICBzbWFsbDogICAgICAgICAgICAgWydTZXRTaXplJywgMC44NV0sXG4gIG5vcm1hbHNpemU6ICAgICAgICBbJ1NldFNpemUnLCAxLjBdLFxuICBsYXJnZTogICAgICAgICAgICAgWydTZXRTaXplJywgMS4yXSxcbiAgTGFyZ2U6ICAgICAgICAgICAgIFsnU2V0U2l6ZScsIDEuNDRdLFxuICBMQVJHRTogICAgICAgICAgICAgWydTZXRTaXplJywgMS43M10sXG4gIGh1Z2U6ICAgICAgICAgICAgICBbJ1NldFNpemUnLCAyLjA3XSxcbiAgSHVnZTogICAgICAgICAgICAgIFsnU2V0U2l6ZScsIDIuNDldLFxuXG4gIGFyY3NpbjogICAgICAgICAgICAgJ05hbWVkRm4nLFxuICBhcmNjb3M6ICAgICAgICAgICAgICdOYW1lZEZuJyxcbiAgYXJjdGFuOiAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIGFyZzogICAgICAgICAgICAgICAgJ05hbWVkRm4nLFxuICBjb3M6ICAgICAgICAgICAgICAgICdOYW1lZEZuJyxcbiAgY29zaDogICAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIGNvdDogICAgICAgICAgICAgICAgJ05hbWVkRm4nLFxuICBjb3RoOiAgICAgICAgICAgICAgICdOYW1lZEZuJyxcbiAgY3NjOiAgICAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIGRlZzogICAgICAgICAgICAgICAgJ05hbWVkRm4nLFxuICBkZXQ6ICAgICAgICAgICAgICAgICdOYW1lZE9wJyxcbiAgZGltOiAgICAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIGV4cDogICAgICAgICAgICAgICAgJ05hbWVkRm4nLFxuICBnY2Q6ICAgICAgICAgICAgICAgICdOYW1lZE9wJyxcbiAgaG9tOiAgICAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIGluZjogICAgICAgICAgICAgICAgJ05hbWVkT3AnLFxuICBrZXI6ICAgICAgICAgICAgICAgICdOYW1lZEZuJyxcbiAgbGc6ICAgICAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIGxpbTogICAgICAgICAgICAgICAgJ05hbWVkT3AnLFxuICBsaW1pbmY6ICAgICAgICAgICAgWydOYW1lZE9wJywgJ2xpbSZ0aGluc3A7aW5mJ10sXG4gIGxpbXN1cDogICAgICAgICAgICBbJ05hbWVkT3AnLCAnbGltJnRoaW5zcDtzdXAnXSxcbiAgbG46ICAgICAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIGxvZzogICAgICAgICAgICAgICAgJ05hbWVkRm4nLFxuICBtYXg6ICAgICAgICAgICAgICAgICdOYW1lZE9wJyxcbiAgbWluOiAgICAgICAgICAgICAgICAnTmFtZWRPcCcsXG4gIFByOiAgICAgICAgICAgICAgICAgJ05hbWVkT3AnLFxuICBzZWM6ICAgICAgICAgICAgICAgICdOYW1lZEZuJyxcbiAgc2luOiAgICAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIHNpbmg6ICAgICAgICAgICAgICAgJ05hbWVkRm4nLFxuICBzdXA6ICAgICAgICAgICAgICAgICdOYW1lZE9wJyxcbiAgdGFuOiAgICAgICAgICAgICAgICAnTmFtZWRGbicsXG4gIHRhbmg6ICAgICAgICAgICAgICAgJ05hbWVkRm4nLFxuXG4gIGxpbWl0czogICAgICAgICAgICBbJ0xpbWl0cycsIDFdLFxuICBub2xpbWl0czogICAgICAgICAgWydMaW1pdHMnLCAwXSxcblxuICBvdmVybGluZTogICAgICAgICAgICBbJ1VuZGVyT3ZlcicsICcyMDE1J10sXG4gIHVuZGVybGluZTogICAgICAgICAgIFsnVW5kZXJPdmVyJywgJzIwMTUnXSxcbiAgb3ZlcmJyYWNlOiAgICAgICAgICAgWydVbmRlck92ZXInLCAnMjNERScsIDFdLFxuICB1bmRlcmJyYWNlOiAgICAgICAgICBbJ1VuZGVyT3ZlcicsICcyM0RGJywgMV0sXG4gIG92ZXJwYXJlbjogICAgICAgICAgIFsnVW5kZXJPdmVyJywgJzIzREMnXSxcbiAgdW5kZXJwYXJlbjogICAgICAgICAgWydVbmRlck92ZXInLCAnMjNERCddLFxuICBvdmVycmlnaHRhcnJvdzogICAgICBbJ1VuZGVyT3ZlcicsICcyMTkyJ10sXG4gIHVuZGVycmlnaHRhcnJvdzogICAgIFsnVW5kZXJPdmVyJywgJzIxOTInXSxcbiAgb3ZlcmxlZnRhcnJvdzogICAgICAgWydVbmRlck92ZXInLCAnMjE5MCddLFxuICB1bmRlcmxlZnRhcnJvdzogICAgICBbJ1VuZGVyT3ZlcicsICcyMTkwJ10sXG4gIG92ZXJsZWZ0cmlnaHRhcnJvdzogIFsnVW5kZXJPdmVyJywgJzIxOTQnXSxcbiAgdW5kZXJsZWZ0cmlnaHRhcnJvdzogWydVbmRlck92ZXInLCAnMjE5NCddLFxuXG4gIG92ZXJzZXQ6ICAgICAgICAgICAgJ092ZXJzZXQnLFxuICB1bmRlcnNldDogICAgICAgICAgICdVbmRlcnNldCcsXG4gIG92ZXJ1bmRlcnNldDogICAgICAgJ092ZXJ1bmRlcnNldCcsXG4gIHN0YWNrcmVsOiAgICAgICAgICAgWydNYWNybycsICdcXFxcbWF0aHJlbHtcXFxcbWF0aG9weyMyfVxcXFxsaW1pdHNeeyMxfX0nLCAyXSxcbiAgc3RhY2tiaW46ICAgICAgICAgICBbJ01hY3JvJywgJ1xcXFxtYXRoYmlue1xcXFxtYXRob3B7IzJ9XFxcXGxpbWl0c157IzF9fScsIDJdLFxuXG4gIG92ZXI6ICAgICAgICAgICAgICAgJ092ZXInLFxuICBvdmVyd2l0aGRlbGltczogICAgICdPdmVyJyxcbiAgYXRvcDogICAgICAgICAgICAgICAnT3ZlcicsXG4gIGF0b3B3aXRoZGVsaW1zOiAgICAgJ092ZXInLFxuICBhYm92ZTogICAgICAgICAgICAgICdPdmVyJyxcbiAgYWJvdmV3aXRoZGVsaW1zOiAgICAnT3ZlcicsXG4gIGJyYWNlOiAgICAgICAgICAgICBbJ092ZXInLCAneycsICd9J10sXG4gIGJyYWNrOiAgICAgICAgICAgICBbJ092ZXInLCAnWycsICddJ10sXG4gIGNob29zZTogICAgICAgICAgICBbJ092ZXInLCAnKCcsICcpJ10sXG5cbiAgZnJhYzogICAgICAgICAgICAgICAnRnJhYycsXG4gIHNxcnQ6ICAgICAgICAgICAgICAgJ1NxcnQnLFxuICByb290OiAgICAgICAgICAgICAgICdSb290JyxcbiAgdXByb290OiAgICAgICAgICAgIFsnTW92ZVJvb3QnLCAndXBSb290J10sXG4gIGxlZnRyb290OiAgICAgICAgICBbJ01vdmVSb290JywgJ2xlZnRSb290J10sXG5cbiAgbGVmdDogICAgICAgICAgICAgICAnTGVmdFJpZ2h0JyxcbiAgcmlnaHQ6ICAgICAgICAgICAgICAnTGVmdFJpZ2h0JyxcbiAgbWlkZGxlOiAgICAgICAgICAgICAnTGVmdFJpZ2h0JyxcblxuICBsbGFwOiAgICAgICAgICAgICAgICdMYXAnLFxuICBybGFwOiAgICAgICAgICAgICAgICdMYXAnLFxuICByYWlzZTogICAgICAgICAgICAgICdSYWlzZUxvd2VyJyxcbiAgbG93ZXI6ICAgICAgICAgICAgICAnUmFpc2VMb3dlcicsXG4gIG1vdmVsZWZ0OiAgICAgICAgICAgJ01vdmVMZWZ0UmlnaHQnLFxuICBtb3ZlcmlnaHQ6ICAgICAgICAgICdNb3ZlTGVmdFJpZ2h0JyxcblxuICAnLCc6ICAgICAgICAgICAgICAgWydTcGFjZXInLCBNQVRIU1BBQ0UudGhpbm1hdGhzcGFjZV0sXG4gICc6JzogICAgICAgICAgICAgICBbJ1NwYWNlcicsIE1BVEhTUEFDRS5tZWRpdW1tYXRoc3BhY2VdLFxuICAnPic6ICAgICAgICAgICAgICAgWydTcGFjZXInLCBNQVRIU1BBQ0UubWVkaXVtbWF0aHNwYWNlXSxcbiAgJzsnOiAgICAgICAgICAgICAgIFsnU3BhY2VyJywgTUFUSFNQQUNFLnRoaWNrbWF0aHNwYWNlXSxcbiAgJyEnOiAgICAgICAgICAgICAgIFsnU3BhY2VyJywgTUFUSFNQQUNFLm5lZ2F0aXZldGhpbm1hdGhzcGFjZV0sXG4gIGVuc3BhY2U6ICAgICAgICAgICBbJ1NwYWNlcicsIC41XSxcbiAgcXVhZDogICAgICAgICAgICAgIFsnU3BhY2VyJywgMV0sXG4gIHFxdWFkOiAgICAgICAgICAgICBbJ1NwYWNlcicsIDJdLFxuICB0aGluc3BhY2U6ICAgICAgICAgWydTcGFjZXInLCBNQVRIU1BBQ0UudGhpbm1hdGhzcGFjZV0sXG4gIG5lZ3RoaW5zcGFjZTogICAgICBbJ1NwYWNlcicsIE1BVEhTUEFDRS5uZWdhdGl2ZXRoaW5tYXRoc3BhY2VdLFxuXG4gIGhza2lwOiAgICAgICAgICAgICAgJ0hza2lwJyxcbiAgaHNwYWNlOiAgICAgICAgICAgICAnSHNraXAnLFxuICBrZXJuOiAgICAgICAgICAgICAgICdIc2tpcCcsXG4gIG1za2lwOiAgICAgICAgICAgICAgJ0hza2lwJyxcbiAgbXNwYWNlOiAgICAgICAgICAgICAnSHNraXAnLFxuICBta2VybjogICAgICAgICAgICAgICdIc2tpcCcsXG4gIHJ1bGU6ICAgICAgICAgICAgICAgJ3J1bGUnLFxuICBSdWxlOiAgICAgICAgICAgICAgWydSdWxlJ10sXG4gIFNwYWNlOiAgICAgICAgICAgICBbJ1J1bGUnLCAnYmxhbmsnXSxcbiAgbm9uc2NyaXB0OiAgICAgICAgICAnTm9uc2NyaXB0JyxcblxuICBiaWc6ICAgICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuT1JELCAwLjg1XSxcbiAgQmlnOiAgICAgICAgICAgICAgIFsnTWFrZUJpZycsIFRFWENMQVNTLk9SRCwgMS4xNV0sXG4gIGJpZ2c6ICAgICAgICAgICAgICBbJ01ha2VCaWcnLCBURVhDTEFTUy5PUkQsIDEuNDVdLFxuICBCaWdnOiAgICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuT1JELCAxLjc1XSxcbiAgYmlnbDogICAgICAgICAgICAgIFsnTWFrZUJpZycsIFRFWENMQVNTLk9QRU4sIDAuODVdLFxuICBCaWdsOiAgICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuT1BFTiwgMS4xNV0sXG4gIGJpZ2dsOiAgICAgICAgICAgICBbJ01ha2VCaWcnLCBURVhDTEFTUy5PUEVOLCAxLjQ1XSxcbiAgQmlnZ2w6ICAgICAgICAgICAgIFsnTWFrZUJpZycsIFRFWENMQVNTLk9QRU4sIDEuNzVdLFxuICBiaWdyOiAgICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuQ0xPU0UsIDAuODVdLFxuICBCaWdyOiAgICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuQ0xPU0UsIDEuMTVdLFxuICBiaWdncjogICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuQ0xPU0UsIDEuNDVdLFxuICBCaWdncjogICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuQ0xPU0UsIDEuNzVdLFxuICBiaWdtOiAgICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuUkVMLCAwLjg1XSxcbiAgQmlnbTogICAgICAgICAgICAgIFsnTWFrZUJpZycsIFRFWENMQVNTLlJFTCwgMS4xNV0sXG4gIGJpZ2dtOiAgICAgICAgICAgICBbJ01ha2VCaWcnLCBURVhDTEFTUy5SRUwsIDEuNDVdLFxuICBCaWdnbTogICAgICAgICAgICAgWydNYWtlQmlnJywgVEVYQ0xBU1MuUkVMLCAxLjc1XSxcblxuICBtYXRob3JkOiAgICAgICAgICAgWydUZVhBdG9tJywgVEVYQ0xBU1MuT1JEXSxcbiAgbWF0aG9wOiAgICAgICAgICAgIFsnVGVYQXRvbScsIFRFWENMQVNTLk9QXSxcbiAgbWF0aG9wZW46ICAgICAgICAgIFsnVGVYQXRvbScsIFRFWENMQVNTLk9QRU5dLFxuICBtYXRoY2xvc2U6ICAgICAgICAgWydUZVhBdG9tJywgVEVYQ0xBU1MuQ0xPU0VdLFxuICBtYXRoYmluOiAgICAgICAgICAgWydUZVhBdG9tJywgVEVYQ0xBU1MuQklOXSxcbiAgbWF0aHJlbDogICAgICAgICAgIFsnVGVYQXRvbScsIFRFWENMQVNTLlJFTF0sXG4gIG1hdGhwdW5jdDogICAgICAgICBbJ1RlWEF0b20nLCBURVhDTEFTUy5QVU5DVF0sXG4gIG1hdGhpbm5lcjogICAgICAgICBbJ1RlWEF0b20nLCBURVhDTEFTUy5JTk5FUl0sXG5cbiAgdmNlbnRlcjogICAgICAgICAgIFsnVGVYQXRvbScsIFRFWENMQVNTLlZDRU5URVJdLFxuXG4gIGJ1aWxkcmVsOiAgICAgICAgICAgJ0J1aWxkUmVsJyxcblxuICBoYm94OiAgICAgICAgICAgICAgIFsnSEJveCcsIDBdLFxuICB0ZXh0OiAgICAgICAgICAgICAgICdIQm94JyxcbiAgbWJveDogICAgICAgICAgICAgICBbJ0hCb3gnLCAwXSxcbiAgZmJveDogICAgICAgICAgICAgICAnRkJveCcsXG4gIGJveGVkOiAgICAgICAgICAgICAgWydNYWNybycsICdcXFxcZmJveHskXFxcXGRpc3BsYXlzdHlsZXsjMX0kfScsIDFdLFxuICBmcmFtZWJveDogICAgICAgICAgICdGcmFtZUJveCcsXG5cbiAgc3RydXQ6ICAgICAgICAgICAgICAnU3RydXQnLFxuICBtYXRoc3RydXQ6ICAgICAgICAgWydNYWNybycsICdcXFxcdnBoYW50b217KH0nXSxcbiAgcGhhbnRvbTogICAgICAgICAgICAnUGhhbnRvbScsXG4gIHZwaGFudG9tOiAgICAgICAgICBbJ1BoYW50b20nLCAxLCAwXSxcbiAgaHBoYW50b206ICAgICAgICAgIFsnUGhhbnRvbScsIDAsIDFdLFxuICBzbWFzaDogICAgICAgICAgICAgICdTbWFzaCcsXG5cbiAgYWN1dGU6ICAgICAgICAgICAgIFsnQWNjZW50JywgJzAwQjQnXSwgIC8vIG9yIDAzMDEgb3IgMDJDQVxuICBncmF2ZTogICAgICAgICAgICAgWydBY2NlbnQnLCAnMDA2MCddLCAgLy8gb3IgMDMwMCBvciAwMkNCXG4gIGRkb3Q6ICAgICAgICAgICAgICBbJ0FjY2VudCcsICcwMEE4J10sICAvLyBvciAwMzA4XG4gIHRpbGRlOiAgICAgICAgICAgICBbJ0FjY2VudCcsICcwMDdFJ10sICAvLyBvciAwMzAzIG9yIDAyRENcbiAgYmFyOiAgICAgICAgICAgICAgIFsnQWNjZW50JywgJzAwQUYnXSwgIC8vIG9yIDAzMDQgb3IgMDJDOVxuICBicmV2ZTogICAgICAgICAgICAgWydBY2NlbnQnLCAnMDJEOCddLCAgLy8gb3IgMDMwNlxuICBjaGVjazogICAgICAgICAgICAgWydBY2NlbnQnLCAnMDJDNyddLCAgLy8gb3IgMDMwQ1xuICBoYXQ6ICAgICAgICAgICAgICAgWydBY2NlbnQnLCAnMDA1RSddLCAgLy8gb3IgMDMwMiBvciAwMkM2XG4gIHZlYzogICAgICAgICAgICAgICBbJ0FjY2VudCcsICcyMTkyJ10sICAvLyBvciAyMEQ3XG4gIGRvdDogICAgICAgICAgICAgICBbJ0FjY2VudCcsICcwMkQ5J10sICAvLyBvciAwMzA3XG4gIHdpZGV0aWxkZTogICAgICAgICBbJ0FjY2VudCcsICcwMDdFJywgMV0sIC8vIG9yIDAzMDMgb3IgMDJEQ1xuICB3aWRlaGF0OiAgICAgICAgICAgWydBY2NlbnQnLCAnMDA1RScsIDFdLCAvLyBvciAwMzAyIG9yIDAyQzZcblxuICBtYXRyaXg6ICAgICAgICAgICAgICdNYXRyaXgnLFxuICBhcnJheTogICAgICAgICAgICAgICdNYXRyaXgnLFxuICBwbWF0cml4OiAgICAgICAgICAgWydNYXRyaXgnLCAnKCcsICcpJ10sXG4gIGNhc2VzOiAgICAgICAgICAgICBbJ01hdHJpeCcsICd7JywgJycsICdsZWZ0IGxlZnQnLCBudWxsLCAnLjFlbScsIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgdHJ1ZV0sXG4gIGVxYWxpZ246ICAgICAgICAgICBbJ01hdHJpeCcsIG51bGwsIG51bGwsICdyaWdodCBsZWZ0JyxcbiAgICAgICAgICAgICAgICAgICAgICBlbShNQVRIU1BBQ0UudGhpY2ttYXRoc3BhY2UpLCAnLjVlbScsICdEJ10sXG4gIGRpc3BsYXlsaW5lczogICAgICBbJ01hdHJpeCcsIG51bGwsIG51bGwsICdjZW50ZXInLCBudWxsLCAnLjVlbScsICdEJ10sXG4gIGNyOiAgICAgICAgICAgICAgICAgJ0NyJyxcbiAgJ1xcXFwnOiAgICAgICAgICAgICAgICdDckxhVGVYJyxcbiAgbmV3bGluZTogICAgICAgICAgIFsnQ3JMYVRlWCcsIHRydWVdLFxuICBobGluZTogICAgICAgICAgICAgWydITGluZScsICdzb2xpZCddLFxuICBoZGFzaGxpbmU6ICAgICAgICAgWydITGluZScsICdkYXNoZWQnXSxcbiAgLy8gICAgICBub2FsaWduOiAgICAgICAgICAgICdIYW5kbGVOb0FsaWduJyxcbiAgZXFhbGlnbm5vOiAgICAgICAgIFsnTWF0cml4JywgbnVsbCwgbnVsbCwgJ3JpZ2h0IGxlZnQnLFxuICAgICAgICAgICAgICAgICAgICAgIGVtKE1BVEhTUEFDRS50aGlja21hdGhzcGFjZSksICcuNWVtJywgJ0QnLCBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICdyaWdodCddLFxuICBsZXFhbGlnbm5vOiAgICAgICAgWydNYXRyaXgnLCBudWxsLCBudWxsLCAncmlnaHQgbGVmdCcsXG4gICAgICAgICAgICAgICAgICAgICAgZW0oTUFUSFNQQUNFLnRoaWNrbWF0aHNwYWNlKSwgJy41ZW0nLCAnRCcsIG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgJ2xlZnQnXSxcbiAgaGZpbGw6ICAgICAgICAgICAgICAnSEZpbGwnLFxuICBoZmlsOiAgICAgICAgICAgICAgICdIRmlsbCcsICAgLy8gXFxoZmlsIHRyZWF0ZWQgYXMgXFxoZmlsbCBmb3Igbm93XG4gIGhmaWxsbDogICAgICAgICAgICAgJ0hGaWxsJywgICAvLyBcXGhmaWxsbCB0cmVhdGVkIGFzIFxcaGZpbGwgZm9yIG5vd1xuXG4gIC8vICBUZVggc3Vic3RpdHV0aW9uIG1hY3Jvc1xuICBibW9kOiAgICAgICAgICAgICAgWydNYWNybycsICdcXFxcbW1sVG9rZW57bW99W2xzcGFjZT1cInRoaWNrbWF0aHNwYWNlXCInICtcbiAgICAgICAgICAgICAgICAgICAgICAnIHJzcGFjZT1cInRoaWNrbWF0aHNwYWNlXCJde21vZH0nXSxcbiAgcG1vZDogICAgICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXHBvZHtcXFxcbW1sVG9rZW57bWl9e21vZH1cXFxca2VybiA2bXUgIzF9JywgMV0sXG4gIG1vZDogICAgICAgICAgICAgICBbJ01hY3JvJywgJ1xcXFxtYXRoY2hvaWNle1xcXFxrZXJuMThtdX17XFxcXGtlcm4xMm11fScgK1xuICAgICAgICAgICAgICAgICAgICAgICd7XFxcXGtlcm4xMm11fXtcXFxca2VybjEybXV9XFxcXG1tbFRva2Vue21pfXttb2R9XFxcXCxcXFxcLCMxJyxcbiAgICAgICAgICAgICAgICAgICAgICAxXSxcbiAgcG9kOiAgICAgICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXG1hdGhjaG9pY2V7XFxcXGtlcm4xOG11fXtcXFxca2VybjhtdX0nICtcbiAgICAgICAgICAgICAgICAgICAgICAne1xcXFxrZXJuOG11fXtcXFxca2VybjhtdX0oIzEpJywgMV0sXG4gIGlmZjogICAgICAgICAgICAgICBbJ01hY3JvJywgJ1xcXFw7XFxcXExvbmdsZWZ0cmlnaHRhcnJvd1xcXFw7J10sXG4gIHNrZXc6ICAgICAgICAgICAgICBbJ01hY3JvJywgJ3t7IzJ7IzNcXFxcbWtlcm4jMW11fVxcXFxta2Vybi0jMW11fXt9fScsIDNdLFxuXG4gIHBtYjogICAgICAgICAgICAgICBbJ01hY3JvJywgJ1xcXFxybGFweyMxfVxcXFxrZXJuMXB4eyMxfScsIDFdLFxuICBUZVg6ICAgICAgICAgICAgICAgWydNYWNybycsICdUXFxcXGtlcm4tLjE0ZW1cXFxcbG93ZXIuNWV4e0V9XFxcXGtlcm4tLjExNWVtIFgnXSxcbiAgTGFUZVg6ICAgICAgICAgICAgIFsnTWFjcm8nLCAnTFxcXFxrZXJuLS4zMjVlbVxcXFxyYWlzZS4yMWVtJyArXG4gICAgICAgICAgICAgICAgICAgICAgJ3tcXFxcc2NyaXB0c3R5bGV7QX19XFxcXGtlcm4tLjE3ZW1cXFxcVGVYJ10sXG4gICcgJzogICAgICAgICAgICAgICBbJ01hY3JvJywgJ1xcXFx0ZXh0eyB9J10sXG5cbiAgLy8gIFNwZWNpYWxseSBoYW5kbGVkXG4gIG5vdDogICAgICAgICAgICAgICAgJ05vdCcsXG4gIGRvdHM6ICAgICAgICAgICAgICAgJ0RvdHMnLFxuICBzcGFjZTogICAgICAgICAgICAgICdUaWxkZScsXG4gICdcXHUwMEEwJzogICAgICAgICAgICdUaWxkZScsXG5cblxuICAvLyAgTGFUZVhcbiAgYmVnaW46ICAgICAgICAgICAgICAnQmVnaW5FbmQnLFxuICBlbmQ6ICAgICAgICAgICAgICAgICdCZWdpbkVuZCcsXG5cbiAgbGFiZWw6ICAgICAgICAgICAgICAnSGFuZGxlTGFiZWwnLFxuICByZWY6ICAgICAgICAgICAgICAgICdIYW5kbGVSZWYnLFxuICBub251bWJlcjogICAgICAgICAgICdIYW5kbGVOb1RhZycsXG5cbiAgLy8gSW50ZXJuYWwgdXNlOlxuICBtYXRoY2hvaWNlOiAgICAgICAgICdNYXRoQ2hvaWNlJyxcbiAgbW1sVG9rZW46ICAgICAgICAgICAnTW1sVG9rZW4nXG59LCBCYXNlTWV0aG9kcyk7XG5cblxuLyoqXG4gKiBNYWNyb3MgZm9yIExhVGVYIGVudmlyb25tZW50cy5cbiAqL1xubmV3IHNtLkVudmlyb25tZW50TWFwKCdlbnZpcm9ubWVudCcsIFBhcnNlTWV0aG9kcy5lbnZpcm9ubWVudCwge1xuICBhcnJheTogICAgICAgICBbJ0FsaWduZWRBcnJheSddLFxuICBlcXVhdGlvbjogICAgICBbJ0VxdWF0aW9uJywgbnVsbCwgdHJ1ZV0sXG4gIGVxbmFycmF5OiAgICAgIFsnRXFuQXJyYXknLCBudWxsLCB0cnVlLCB0cnVlLCAncmNsJyxcbiAgICAgICAgICAgICAgICAgIFBhcnNlVXRpbC5jb2xzKDAsIE1BVEhTUEFDRS50aGlja21hdGhzcGFjZSksICcuNWVtJ11cbn0sIEJhc2VNZXRob2RzKTtcblxuXG4vKipcbiAqIE1hcHBpbmcgZm9yIG5lZ2F0ZWQgb3BlcmF0b3JzLlxuICovXG5uZXcgc20uQ2hhcmFjdGVyTWFwKCdub3RfcmVtYXAnLCBudWxsLCB7XG4gICdcXHUyMTkwJzogJ1xcdTIxOUEnLFxuICAnXFx1MjE5Mic6ICdcXHUyMTlCJyxcbiAgJ1xcdTIxOTQnOiAnXFx1MjFBRScsXG4gICdcXHUyMUQwJzogJ1xcdTIxQ0QnLFxuICAnXFx1MjFEMic6ICdcXHUyMUNGJyxcbiAgJ1xcdTIxRDQnOiAnXFx1MjFDRScsXG4gICdcXHUyMjA4JzogJ1xcdTIyMDknLFxuICAnXFx1MjIwQic6ICdcXHUyMjBDJyxcbiAgJ1xcdTIyMjMnOiAnXFx1MjIyNCcsXG4gICdcXHUyMjI1JzogJ1xcdTIyMjYnLFxuICAnXFx1MjIzQyc6ICdcXHUyMjQxJyxcbiAgJ1xcdTAwN0UnOiAnXFx1MjI0MScsXG4gICdcXHUyMjQzJzogJ1xcdTIyNDQnLFxuICAnXFx1MjI0NSc6ICdcXHUyMjQ3JyxcbiAgJ1xcdTIyNDgnOiAnXFx1MjI0OScsXG4gICdcXHUyMjREJzogJ1xcdTIyNkQnLFxuICAnXFx1MDAzRCc6ICdcXHUyMjYwJyxcbiAgJ1xcdTIyNjEnOiAnXFx1MjI2MicsXG4gICdcXHUwMDNDJzogJ1xcdTIyNkUnLFxuICAnXFx1MDAzRSc6ICdcXHUyMjZGJyxcbiAgJ1xcdTIyNjQnOiAnXFx1MjI3MCcsXG4gICdcXHUyMjY1JzogJ1xcdTIyNzEnLFxuICAnXFx1MjI3Mic6ICdcXHUyMjc0JyxcbiAgJ1xcdTIyNzMnOiAnXFx1MjI3NScsXG4gICdcXHUyMjc2JzogJ1xcdTIyNzgnLFxuICAnXFx1MjI3Nyc6ICdcXHUyMjc5JyxcbiAgJ1xcdTIyN0EnOiAnXFx1MjI4MCcsXG4gICdcXHUyMjdCJzogJ1xcdTIyODEnLFxuICAnXFx1MjI4Mic6ICdcXHUyMjg0JyxcbiAgJ1xcdTIyODMnOiAnXFx1MjI4NScsXG4gICdcXHUyMjg2JzogJ1xcdTIyODgnLFxuICAnXFx1MjI4Nyc6ICdcXHUyMjg5JyxcbiAgJ1xcdTIyQTInOiAnXFx1MjJBQycsXG4gICdcXHUyMkE4JzogJ1xcdTIyQUQnLFxuICAnXFx1MjJBOSc6ICdcXHUyMkFFJyxcbiAgJ1xcdTIyQUInOiAnXFx1MjJBRicsXG4gICdcXHUyMjdDJzogJ1xcdTIyRTAnLFxuICAnXFx1MjI3RCc6ICdcXHUyMkUxJyxcbiAgJ1xcdTIyOTEnOiAnXFx1MjJFMicsXG4gICdcXHUyMjkyJzogJ1xcdTIyRTMnLFxuICAnXFx1MjJCMic6ICdcXHUyMkVBJyxcbiAgJ1xcdTIyQjMnOiAnXFx1MjJFQicsXG4gICdcXHUyMkI0JzogJ1xcdTIyRUMnLFxuICAnXFx1MjJCNSc6ICdcXHUyMkVEJyxcbiAgJ1xcdTIyMDMnOiAnXFx1MjIwNCdcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQ29uZmlndXJhdGlvbiBmb3IgdGhlIEJhc2UgTGFUZVggcGFyc2VyLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi4vQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQge01hcEhhbmRsZXJ9IGZyb20gJy4uL01hcEhhbmRsZXIuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4uL1RleEVycm9yLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQge0NoYXJhY3Rlck1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCAqIGFzIGJpdGVtIGZyb20gJy4vQmFzZUl0ZW1zLmpzJztcbmltcG9ydCB7QWJzdHJhY3RUYWdzfSBmcm9tICcuLi9UYWdzLmpzJztcbmltcG9ydCAnLi9CYXNlTWFwcGluZ3MuanMnO1xuaW1wb3J0IHtnZXRSYW5nZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL09wZXJhdG9yRGljdGlvbmFyeS5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCBQYXJzZU9wdGlvbnMgZnJvbSAnLi4vUGFyc2VPcHRpb25zLmpzJztcblxuLyoqXG4gKiBSZW1hcHBpbmcgc29tZSBBU0NJSSBjaGFyYWN0ZXJzIHRvIHRoZWlyIFVuaWNvZGUgb3BlcmF0b3IgZXF1aXZhbGVudC5cbiAqL1xubmV3IENoYXJhY3Rlck1hcCgncmVtYXAnLCBudWxsLCB7XG4gICctJzogICAnXFx1MjIxMicsXG4gICcqJzogICAnXFx1MjIxNycsXG4gICdgJzogICAnXFx1MjAxOCcgICAvLyBtYXAgYCB0byBiYWNrIHF1b3RlXG59KTtcblxuXG4vKipcbiAqIERlZmF1bHQgaGFuZGxpbmcgb2YgY2hhcmFjdGVycyAoYXMgPG1vPiBlbGVtZW50cykuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjaGFyIFRoZSBjaGFyYWN0ZXIgdG8gcGFyc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBPdGhlcihwYXJzZXI6IFRleFBhcnNlciwgY2hhcjogc3RyaW5nKSB7XG4gIGNvbnN0IGZvbnQgPSBwYXJzZXIuc3RhY2suZW52Wydmb250J107XG4gIGxldCBkZWYgPSBmb250ID9cbiAgICAvLyBAdGVzdCBPdGhlciBGb250XG4gICAge21hdGh2YXJpYW50OiBwYXJzZXIuc3RhY2suZW52Wydmb250J119IDoge307XG4gIGNvbnN0IHJlbWFwID0gKE1hcEhhbmRsZXIuZ2V0TWFwKCdyZW1hcCcpIGFzIENoYXJhY3Rlck1hcCkubG9va3VwKGNoYXIpO1xuICBjb25zdCByYW5nZSA9IGdldFJhbmdlKGNoYXIpO1xuICBjb25zdCB0eXBlID0gKHJhbmdlID8gcmFuZ2VbM10gOiAnbW8nKTtcbiAgLy8gQHRlc3QgT3RoZXJcbiAgLy8gQHRlc3QgT3RoZXIgUmVtYXBcbiAgbGV0IG1vID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCB0eXBlLCBkZWYsIChyZW1hcCA/IHJlbWFwLmNoYXIgOiBjaGFyKSk7XG4gIHJhbmdlWzRdICYmIG1vLmF0dHJpYnV0ZXMuc2V0KCdtYXRodmFyaWFudCcsIHJhbmdlWzRdKTtcbiAgaWYgKHR5cGUgPT09ICdtbycpIHtcbiAgICBOb2RlVXRpbC5zZXRQcm9wZXJ0eShtbywgJ2ZpeFN0cmV0Y2h5JywgdHJ1ZSk7XG4gICAgcGFyc2VyLmNvbmZpZ3VyYXRpb24uYWRkTm9kZSgnZml4U3RyZXRjaHknLCBtbyk7XG4gIH1cbiAgcGFyc2VyLlB1c2gobW8pO1xufVxuXG5cbi8qKlxuICogSGFuZGxlIHVuZGVmaW5lZCBjb250cm9sIHNlcXVlbmNlLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29udHJvbCBzZXF1ZW5jZS5cbiAqL1xuZnVuY3Rpb24gY3NVbmRlZmluZWQoX3BhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgVW5kZWZpbmVkLUNTXG4gIHRocm93IG5ldyBUZXhFcnJvcignVW5kZWZpbmVkQ29udHJvbFNlcXVlbmNlJyxcbiAgICAgICAgICAgICAgICAgICAgICAnVW5kZWZpbmVkIGNvbnRyb2wgc2VxdWVuY2UgJTEnLCAnXFxcXCcgKyBuYW1lKTtcbn1cblxuXG4vKipcbiAqIEhhbmRsZSB1bmRlZmluZWQgZW52aXJvbm1lbnRzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29udHJvbCBzZXF1ZW5jZS5cbiAqL1xuZnVuY3Rpb24gZW52VW5kZWZpbmVkKF9wYXJzZXI6IFRleFBhcnNlciwgZW52OiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgVW5kZWZpbmVkLUVudlxuICB0aHJvdyBuZXcgVGV4RXJyb3IoJ1Vua25vd25FbnYnLCAnVW5rbm93biBlbnZpcm9ubWVudCBcXCclMVxcJycsIGVudik7XG59XG5cbi8qKlxuICogRmlsdGVyIGZvciByZW1vdmluZyBzcGFjaW5nIGZvbGxvd2luZyBcXG5vbnNjcmlwdFxuICogQHBhcmFte1BhcnNlT3B0aW9uc30gZGF0YSBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gKi9cbmZ1bmN0aW9uIGZpbHRlck5vbnNjcmlwdCh7ZGF0YX06IHtkYXRhOiBQYXJzZU9wdGlvbnN9KSB7XG4gIGZvciAoY29uc3QgbW1sIG9mIGRhdGEuZ2V0TGlzdCgnbm9uc2NyaXB0JykpIHtcbiAgICAvL1xuICAgIC8vICBUaGlzIGlzIHRoZSBsaXN0IG9mIG1zcGFjZSBlbGVtZW50cyBvciBtcm93ID4gbXN0eWxlID4gbXNwYWNlXG4gICAgLy8gICAgdGhhdCBmb2xsb3dlZCBcXG5vbnNjcmlwdCBtYWNyb3MgdG8gYmUgdGVzdGVkIGZvciByZW1vdmFsLlxuICAgIC8vXG4gICAgaWYgKG1tbC5hdHRyaWJ1dGVzLmdldCgnc2NyaXB0bGV2ZWwnKSA+IDApIHtcbiAgICAgIC8vXG4gICAgICAvLyAgVGhlIG1zcGFjZSBuZWVkcyB0byBiZSByZW1vdmVkLCBzaW5jZSB3ZSBhcmUgaW4gYSBzY3JpcHQgc3R5bGUuXG4gICAgICAvLyAgUmVtb3ZlIGl0IGZyb20gdGhlIERPTSBhbmQgZnJvbSB0aGUgbGlzdCBvZiBtc3BhY2UgZWxlbWVudHMuXG4gICAgICAvL1xuICAgICAgY29uc3QgcGFyZW50ID0gbW1sLnBhcmVudDtcbiAgICAgIHBhcmVudC5jaGlsZE5vZGVzLnNwbGljZShwYXJlbnQuY2hpbGRJbmRleChtbWwpLCAxKTtcbiAgICAgIGRhdGEucmVtb3ZlRnJvbUxpc3QobW1sLmtpbmQsIFttbWxdKTtcbiAgICAgIC8vXG4gICAgICAvLyAgSWYgaXQgaXMgYW4gbXJvdyA+IG1zdHlsZSA+IG1zcGFjZSwgdGhlbiB3ZSBoYXZlIGp1c3RcbiAgICAgIC8vICAgIHJlbW92ZWQgdGhlIG1yb3cgZnJvbSBpdHMgbGlzdCwgYW5kIG11c3QgcmVtb3ZlXG4gICAgICAvLyAgICB0aGUgbXN0eWxlIGFuZCBtc3BhY2UgZnJvbSB0aGVpciBsaXN0cyBhcyB3ZWxsLlxuICAgICAgLy9cbiAgICAgIGlmIChtbWwuaXNLaW5kKCdtcm93JykpIHtcbiAgICAgICAgY29uc3QgbXN0eWxlID0gbW1sLmNoaWxkTm9kZXNbMF0gYXMgTW1sTm9kZTtcbiAgICAgICAgZGF0YS5yZW1vdmVGcm9tTGlzdCgnbXN0eWxlJywgW21zdHlsZV0pO1xuICAgICAgICBkYXRhLnJlbW92ZUZyb21MaXN0KCdtc3BhY2UnLCBtc3R5bGUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzIGFzIE1tbE5vZGVbXSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtbWwuaXNLaW5kKCdtcm93JykpIHtcbiAgICAgIC8vXG4gICAgICAvLyBUaGlzIGlzIGFuIG1yb3cgPiBtc3R5bGUgPiBtc3BhY2UgIGJ1dCB3ZSdyZSBub3QgaW4gYSBzY3JpcHRcbiAgICAgIC8vICAgc3R5bGUsIHNvIHJlbW92ZSB0aGUgbXJvdyB0aGF0IHdlIGhhZCBhZGRlZCBpbiB0aGUgTm9uc2NyaXB0SXRlbS5cbiAgICAgIC8vXG4gICAgICBtbWwucGFyZW50LnJlcGxhY2VDaGlsZChtbWwuY2hpbGROb2Rlc1swXSwgbW1sKTtcbiAgICAgIGRhdGEucmVtb3ZlRnJvbUxpc3QoJ21yb3cnLCBbbW1sXSk7XG4gICAgfVxuICB9XG59XG5cblxuLyoqXG4gKiBAY29uc3RydWN0b3JcbiAqIEBleHRlbmRzIHtBYnN0cmFjdFRhZ3N9XG4gKi9cbmV4cG9ydCBjbGFzcyBCYXNlVGFncyBleHRlbmRzIEFic3RyYWN0VGFncyB7IH1cblxuXG4vKipcbiAqIFRoZSBiYXNlIGNvbmZpZ3VyYXRpb24uXG4gKiBAdHlwZSB7Q29uZmlndXJhdGlvbn1cbiAqL1xuZXhwb3J0IGNvbnN0IEJhc2VDb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICdiYXNlJywgIHtcbiAgICBoYW5kbGVyOiB7XG4gICAgICBjaGFyYWN0ZXI6IFsnY29tbWFuZCcsICdzcGVjaWFsJywgJ2xldHRlcicsICdkaWdpdCddLFxuICAgICAgZGVsaW1pdGVyOiBbJ2RlbGltaXRlciddLFxuICAgICAgLy8gTm90ZSwgdGhhdCB0aGUgcG9zaXRpb24gb2YgdGhlIGRlbGltaXRlcnMgaGVyZSBpcyBpbXBvcnRhbnQhXG4gICAgICBtYWNybzogWydkZWxpbWl0ZXInLCAnbWFjcm9zJywgJ21hdGhjaGFyMG1pJywgJ21hdGhjaGFyMG1vJywgJ21hdGhjaGFyNyddLFxuICAgICAgZW52aXJvbm1lbnQ6IFsnZW52aXJvbm1lbnQnXVxuICAgIH0sXG4gICAgZmFsbGJhY2s6IHtcbiAgICAgIGNoYXJhY3RlcjogT3RoZXIsXG4gICAgICBtYWNybzogY3NVbmRlZmluZWQsXG4gICAgICBlbnZpcm9ubWVudDogZW52VW5kZWZpbmVkXG4gICAgfSxcbiAgICBpdGVtczoge1xuICAgICAgLy8gQmFzZUl0ZW1zXG4gICAgICBbYml0ZW0uU3RhcnRJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uU3RhcnRJdGVtLFxuICAgICAgW2JpdGVtLlN0b3BJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uU3RvcEl0ZW0sXG4gICAgICBbYml0ZW0uT3Blbkl0ZW0ucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5PcGVuSXRlbSxcbiAgICAgIFtiaXRlbS5DbG9zZUl0ZW0ucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5DbG9zZUl0ZW0sXG4gICAgICBbYml0ZW0uUHJpbWVJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uUHJpbWVJdGVtLFxuICAgICAgW2JpdGVtLlN1YnN1cEl0ZW0ucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5TdWJzdXBJdGVtLFxuICAgICAgW2JpdGVtLk92ZXJJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uT3Zlckl0ZW0sXG4gICAgICBbYml0ZW0uTGVmdEl0ZW0ucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5MZWZ0SXRlbSxcbiAgICAgIFtiaXRlbS5NaWRkbGUucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5NaWRkbGUsXG4gICAgICBbYml0ZW0uUmlnaHRJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uUmlnaHRJdGVtLFxuICAgICAgW2JpdGVtLkJlZ2luSXRlbS5wcm90b3R5cGUua2luZF06IGJpdGVtLkJlZ2luSXRlbSxcbiAgICAgIFtiaXRlbS5FbmRJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uRW5kSXRlbSxcbiAgICAgIFtiaXRlbS5TdHlsZUl0ZW0ucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5TdHlsZUl0ZW0sXG4gICAgICBbYml0ZW0uUG9zaXRpb25JdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uUG9zaXRpb25JdGVtLFxuICAgICAgW2JpdGVtLkNlbGxJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uQ2VsbEl0ZW0sXG4gICAgICBbYml0ZW0uTW1sSXRlbS5wcm90b3R5cGUua2luZF06IGJpdGVtLk1tbEl0ZW0sXG4gICAgICBbYml0ZW0uRm5JdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uRm5JdGVtLFxuICAgICAgW2JpdGVtLk5vdEl0ZW0ucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5Ob3RJdGVtLFxuICAgICAgW2JpdGVtLk5vbnNjcmlwdEl0ZW0ucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5Ob25zY3JpcHRJdGVtLFxuICAgICAgW2JpdGVtLkRvdHNJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uRG90c0l0ZW0sXG4gICAgICBbYml0ZW0uQXJyYXlJdGVtLnByb3RvdHlwZS5raW5kXTogYml0ZW0uQXJyYXlJdGVtLFxuICAgICAgW2JpdGVtLkVxbkFycmF5SXRlbS5wcm90b3R5cGUua2luZF06IGJpdGVtLkVxbkFycmF5SXRlbSxcbiAgICAgIFtiaXRlbS5FcXVhdGlvbkl0ZW0ucHJvdG90eXBlLmtpbmRdOiBiaXRlbS5FcXVhdGlvbkl0ZW1cbiAgICB9LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIG1heE1hY3JvczogMTAwMCxcbiAgICAgIGJhc2VVUkw6ICh0eXBlb2YoZG9jdW1lbnQpID09PSAndW5kZWZpbmVkJyB8fFxuICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdiYXNlJykubGVuZ3RoID09PSAwKSA/XG4gICAgICAgICAgICAgICAgJycgOiBTdHJpbmcoZG9jdW1lbnQubG9jYXRpb24pLnJlcGxhY2UoLyMuKiQvLCAnJylcbiAgICB9LFxuICAgIHRhZ3M6IHtcbiAgICAgIGJhc2U6IEJhc2VUYWdzXG4gICAgfSxcbiAgICBwb3N0cHJvY2Vzc29yczogW1tmaWx0ZXJOb25zY3JpcHQsIC00XV1cbiAgfVxuKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgVGVYIElucHV0SmF4IG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBYnN0cmFjdElucHV0SmF4fSBmcm9tICcuLi9jb3JlL0lucHV0SmF4LmpzJztcbmltcG9ydCB7dXNlck9wdGlvbnMsIHNlcGFyYXRlT3B0aW9ucywgT3B0aW9uTGlzdH0gZnJvbSAnLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7TWF0aERvY3VtZW50fSBmcm9tICcuLi9jb3JlL01hdGhEb2N1bWVudC5qcyc7XG5pbXBvcnQge01hdGhJdGVtfSBmcm9tICcuLi9jb3JlL01hdGhJdGVtLmpzJztcbmltcG9ydCB7TW1sTm9kZX0gZnJvbSAnLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtNbWxGYWN0b3J5fSBmcm9tICcuLi9jb3JlL01tbFRyZWUvTW1sRmFjdG9yeS5qcyc7XG5cbmltcG9ydCB7RmluZFRlWH0gZnJvbSAnLi90ZXgvRmluZFRlWC5qcyc7XG5cbmltcG9ydCBGaWx0ZXJVdGlsIGZyb20gJy4vdGV4L0ZpbHRlclV0aWwuanMnO1xuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4vdGV4L05vZGVVdGlsLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi90ZXgvVGV4UGFyc2VyLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuL3RleC9UZXhFcnJvci5qcyc7XG5pbXBvcnQgUGFyc2VPcHRpb25zIGZyb20gJy4vdGV4L1BhcnNlT3B0aW9ucy5qcyc7XG5pbXBvcnQge1RhZ3NGYWN0b3J5fSBmcm9tICcuL3RleC9UYWdzLmpzJztcbmltcG9ydCB7UGFyc2VyQ29uZmlndXJhdGlvbn0gZnJvbSAnLi90ZXgvQ29uZmlndXJhdGlvbi5qcyc7XG4vLyBJbXBvcnQgYmFzZSBhcyBpdCBpcyB0aGUgZGVmYXVsdCBwYWNrYWdlIGxvYWRlZC5cbmltcG9ydCAnLi90ZXgvYmFzZS9CYXNlQ29uZmlndXJhdGlvbi5qcyc7XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLypcbiAqICBJbXBsZW1lbnRzIHRoZSBUZVggY2xhc3MgKGV4dGVuZHMgQWJzdHJhY3RJbnB1dEpheClcbiAqL1xuXG4vKipcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFRlWDxOLCBULCBEPiBleHRlbmRzIEFic3RyYWN0SW5wdXRKYXg8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIGlucHV0IGpheC5cbiAgICogQHR5cGUge3N0cmluZ31cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTkFNRTogc3RyaW5nID0gJ1RlWCc7XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgb3B0aW9ucyBmb3IgdGhlIGpheC5cbiAgICogQHR5cGUge09wdGlvbkxpc3R9XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE9QVElPTlM6IE9wdGlvbkxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RJbnB1dEpheC5PUFRJT05TLFxuICAgIEZpbmRUZVg6IG51bGwsXG4gICAgcGFja2FnZXM6IFsnYmFzZSddLFxuICAgIC8vIERpZ2l0IHBhdHRlcm4gdG8gbWF0Y2ggbnVtYmVycy5cbiAgICBkaWdpdHM6IC9eKD86WzAtOV0rKD86XFx7LFxcfVswLTldezN9KSooPzpcXC5bMC05XSopP3xcXC5bMC05XSspLyxcbiAgICAvLyBNYXhpbXVtIHNpemUgb2YgVGVYIHN0cmluZyB0byBwcm9jZXNzLlxuICAgIG1heEJ1ZmZlcjogNSAqIDEwMjQsXG4gICAgZm9ybWF0RXJyb3I6IChqYXg6IFRlWDxhbnksIGFueSwgYW55PiwgZXJyOiBUZXhFcnJvcikgPT4gamF4LmZvcm1hdEVycm9yKGVycilcbiAgfTtcblxuICAvKipcbiAgICogVGhlIEZpbmRUZVggaW5zdGFuY2UgdXNlZCBmb3IgbG9jYXRpbmcgVGVYIGluIHN0cmluZ3NcbiAgICovXG4gIHByb3RlY3RlZCBmaW5kVGVYOiBGaW5kVGVYPE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgY29uZmlndXJhdGlvbiBvZiB0aGUgVGVYIGpheC5cbiAgICogQHR5cGUge1BhcnNlckNvbmZpZ3VyYXRpb259XG4gICAqL1xuICBwcm90ZWN0ZWQgY29uZmlndXJhdGlvbjogUGFyc2VyQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIExhVGVYIGNvZGUgdGhhdCBpcyBwYXJzZWQuXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICBwcm90ZWN0ZWQgbGF0ZXg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIE1hdGggbm9kZSB0aGF0IHJlc3VsdHMgZnJvbSBwYXJzaW5nLlxuICAgKiBAdHlwZSB7TW1sTm9kZX1cbiAgICovXG4gIHByb3RlY3RlZCBtYXRoTm9kZTogTW1sTm9kZTtcblxuICBwcml2YXRlIF9wYXJzZU9wdGlvbnM6IFBhcnNlT3B0aW9ucztcblxuICAvKipcbiAgICogSW5pdGlhbGlzZXMgdGhlIGNvbmZpZ3VyYXRpb25zLlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBwYWNrYWdlcyBOYW1lcyBvZiBwYWNrYWdlcy5cbiAgICogQHJldHVybiB7Q29uZmlndXJhdGlvbn0gVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBjb25maWd1cmUocGFja2FnZXM6IChzdHJpbmcgfCBbc3RyaW5nLCBudW1iZXJdKVtdKTogUGFyc2VyQ29uZmlndXJhdGlvbiB7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSBuZXcgUGFyc2VyQ29uZmlndXJhdGlvbihwYWNrYWdlcywgWyd0ZXgnXSk7XG4gICAgY29uZmlndXJhdGlvbi5pbml0KCk7XG4gICAgcmV0dXJuIGNvbmZpZ3VyYXRpb247XG4gIH1cblxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXNlcyB0aGUgVGFncyBmYWN0b3J5LiBBZGQgdGFnZ2luZyBzdHJ1Y3R1cmVzIGZyb20gcGFja2FnZXMgYW5kIHNldFxuICAgKiB0YWdnaW5nIHRvIGdpdmVuIGRlZmF1bHQuXG4gICAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBvcHRpb25zIFRoZSBwYXJzZSBvcHRpb25zLlxuICAgKiBAcGFyYW0ge0NvbmZpZ3VyYXRpb259IGNvbmZpZ3VyYXRpb24gVGhlIGNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIHRhZ3Mob3B0aW9uczogUGFyc2VPcHRpb25zLCBjb25maWd1cmF0aW9uOiBQYXJzZXJDb25maWd1cmF0aW9uKSB7XG4gICAgVGFnc0ZhY3RvcnkuYWRkVGFncyhjb25maWd1cmF0aW9uLnRhZ3MpO1xuICAgIFRhZ3NGYWN0b3J5LnNldERlZmF1bHQob3B0aW9ucy5vcHRpb25zLnRhZ3MpO1xuICAgIG9wdGlvbnMudGFncyA9IFRhZ3NGYWN0b3J5LmdldERlZmF1bHQoKTtcbiAgICBvcHRpb25zLnRhZ3MuY29uZmlndXJhdGlvbiA9IG9wdGlvbnM7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbkxpc3QgPSB7fSkge1xuICAgIGNvbnN0IFtyZXN0LCB0ZXgsIGZpbmRdID0gc2VwYXJhdGVPcHRpb25zKG9wdGlvbnMsIFRlWC5PUFRJT05TLCBGaW5kVGVYLk9QVElPTlMpO1xuICAgIHN1cGVyKHRleCk7XG4gICAgdGhpcy5maW5kVGVYID0gdGhpcy5vcHRpb25zWydGaW5kVGVYJ10gfHwgbmV3IEZpbmRUZVgoZmluZCk7XG4gICAgY29uc3QgcGFja2FnZXMgPSB0aGlzLm9wdGlvbnMucGFja2FnZXM7XG4gICAgY29uc3QgY29uZmlndXJhdGlvbiA9IHRoaXMuY29uZmlndXJhdGlvbiA9IFRlWC5jb25maWd1cmUocGFja2FnZXMpO1xuICAgIGNvbnN0IHBhcnNlT3B0aW9ucyA9IHRoaXMuX3BhcnNlT3B0aW9ucyA9XG4gICAgICBuZXcgUGFyc2VPcHRpb25zKGNvbmZpZ3VyYXRpb24sIFt0aGlzLm9wdGlvbnMsIFRhZ3NGYWN0b3J5Lk9QVElPTlNdKTtcbiAgICB1c2VyT3B0aW9ucyhwYXJzZU9wdGlvbnMub3B0aW9ucywgcmVzdCk7XG4gICAgY29uZmlndXJhdGlvbi5jb25maWcodGhpcyk7XG4gICAgVGVYLnRhZ3MocGFyc2VPcHRpb25zLCBjb25maWd1cmF0aW9uKTtcbiAgICB0aGlzLnBvc3RGaWx0ZXJzLmFkZChGaWx0ZXJVdGlsLmNsZWFuU3ViU3VwLCAtNik7XG4gICAgdGhpcy5wb3N0RmlsdGVycy5hZGQoRmlsdGVyVXRpbC5zZXRJbmhlcml0ZWQsIC01KTtcbiAgICB0aGlzLnBvc3RGaWx0ZXJzLmFkZChGaWx0ZXJVdGlsLm1vdmVMaW1pdHMsIC00KTtcbiAgICB0aGlzLnBvc3RGaWx0ZXJzLmFkZChGaWx0ZXJVdGlsLmNsZWFuU3RyZXRjaHksIC0zKTtcbiAgICB0aGlzLnBvc3RGaWx0ZXJzLmFkZChGaWx0ZXJVdGlsLmNsZWFuQXR0cmlidXRlcywgLTIpO1xuICAgIHRoaXMucG9zdEZpbHRlcnMuYWRkKEZpbHRlclV0aWwuY29tYmluZVJlbGF0aW9ucywgLTEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldE1tbEZhY3RvcnkobW1sRmFjdG9yeTogTW1sRmFjdG9yeSkge1xuICAgIHN1cGVyLnNldE1tbEZhY3RvcnkobW1sRmFjdG9yeSk7XG4gICAgdGhpcy5fcGFyc2VPcHRpb25zLm5vZGVGYWN0b3J5LnNldE1tbEZhY3RvcnkobW1sRmFjdG9yeSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtQYXJzZU9wdGlvbnN9IFRoZSBwYXJzZSBvcHRpb25zIHRoYXQgY29uZmlndXJlIHRoaXMgSmFYIGluc3RhbmNlLlxuICAgKi9cbiAgcHVibGljIGdldCBwYXJzZU9wdGlvbnMoKTogUGFyc2VPcHRpb25zIHtcbiAgICByZXR1cm4gdGhpcy5fcGFyc2VPcHRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlc2V0KHRhZzogbnVtYmVyID0gMCkge1xuICAgIHRoaXMucGFyc2VPcHRpb25zLnRhZ3MucmVzZXQodGFnKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvbXBpbGUobWF0aDogTWF0aEl0ZW08TiwgVCwgRD4sIGRvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pOiBNbWxOb2RlIHtcbiAgICB0aGlzLnBhcnNlT3B0aW9ucy5jbGVhcigpO1xuICAgIHRoaXMuZXhlY3V0ZUZpbHRlcnModGhpcy5wcmVGaWx0ZXJzLCBtYXRoLCBkb2N1bWVudCwgdGhpcy5wYXJzZU9wdGlvbnMpO1xuICAgIGxldCBkaXNwbGF5ID0gbWF0aC5kaXNwbGF5O1xuICAgIHRoaXMubGF0ZXggPSBtYXRoLm1hdGg7XG4gICAgbGV0IG5vZGU6IE1tbE5vZGU7XG4gICAgdGhpcy5wYXJzZU9wdGlvbnMudGFncy5zdGFydEVxdWF0aW9uKG1hdGgpO1xuICAgIGxldCBnbG9iYWxFbnY7XG4gICAgdHJ5IHtcbiAgICAgIGxldCBwYXJzZXIgPSBuZXcgVGV4UGFyc2VyKHRoaXMubGF0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ZGlzcGxheTogZGlzcGxheSwgaXNJbm5lcjogZmFsc2V9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJzZU9wdGlvbnMpO1xuICAgICAgbm9kZSA9IHBhcnNlci5tbWwoKTtcbiAgICAgIGdsb2JhbEVudiA9IHBhcnNlci5zdGFjay5nbG9iYWw7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBUZXhFcnJvcikpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgICAgdGhpcy5wYXJzZU9wdGlvbnMuZXJyb3IgPSB0cnVlO1xuICAgICAgbm9kZSA9IHRoaXMub3B0aW9ucy5mb3JtYXRFcnJvcih0aGlzLCBlcnIpO1xuICAgIH1cbiAgICBub2RlID0gdGhpcy5wYXJzZU9wdGlvbnMubm9kZUZhY3RvcnkuY3JlYXRlKCdub2RlJywgJ21hdGgnLCBbbm9kZV0pO1xuICAgIGlmIChnbG9iYWxFbnY/LmluZGVudGFsaWduKSB7XG4gICAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobm9kZSwgJ2luZGVudGFsaWduJywgZ2xvYmFsRW52LmluZGVudGFsaWduKTtcbiAgICB9XG4gICAgaWYgKGRpc3BsYXkpIHtcbiAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShub2RlLCAnZGlzcGxheScsICdibG9jaycpO1xuICAgIH1cbiAgICB0aGlzLnBhcnNlT3B0aW9ucy50YWdzLmZpbmlzaEVxdWF0aW9uKG1hdGgpO1xuICAgIHRoaXMucGFyc2VPcHRpb25zLnJvb3QgPSBub2RlO1xuICAgIHRoaXMuZXhlY3V0ZUZpbHRlcnModGhpcy5wb3N0RmlsdGVycywgbWF0aCwgZG9jdW1lbnQsIHRoaXMucGFyc2VPcHRpb25zKTtcbiAgICB0aGlzLm1hdGhOb2RlID0gdGhpcy5wYXJzZU9wdGlvbnMucm9vdDtcbiAgICByZXR1cm4gdGhpcy5tYXRoTm9kZTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGZpbmRNYXRoKHN0cmluZ3M6IHN0cmluZ1tdKSB7XG4gICAgcmV0dXJuIHRoaXMuZmluZFRlWC5maW5kTWF0aChzdHJpbmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZhdWx0IGZvcm1hdHRlciBmb3IgZXJyb3IgbWVzc2FnZXM6XG4gICAqICAgd3JhcCBhbiBlcnJvciBpbnRvIGEgbm9kZSBmb3Igb3V0cHV0LlxuICAgKiBAcGFyYW0ge1RlWEVycm9yfSBlcnIgVGhlIFRleEVycm9yLlxuICAgKiBAcmV0dXJuIHtOb2RlfSBUaGUgbWVycm9yIG5vZGUuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0RXJyb3IoZXJyOiBUZXhFcnJvcik6IE1tbE5vZGUge1xuICAgIGxldCBtZXNzYWdlID0gZXJyLm1lc3NhZ2UucmVwbGFjZSgvXFxuLiovLCAnJyk7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VPcHRpb25zLm5vZGVGYWN0b3J5LmNyZWF0ZShcbiAgICAgICdlcnJvcicsIG1lc3NhZ2UsIGVyci5pZCwgdGhpcy5sYXRleCk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgYWN0aW9uIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBCYXNlTWV0aG9kcyBmcm9tICcuLi9iYXNlL0Jhc2VNZXRob2RzLmpzJztcblxuXG4vLyBOYW1lc3BhY2VcbmV4cG9ydCBsZXQgQWN0aW9uTWV0aG9kczogUmVjb3JkPHN0cmluZywgUGFyc2VNZXRob2Q+ID0ge307XG5cbkFjdGlvbk1ldGhvZHMuTWFjcm8gPSBCYXNlTWV0aG9kcy5NYWNybztcblxuLyoqXG4gKiBJbXBsZW1lbnQgXFx0b2dnbGUge21hdGgxfSB7bWF0aDJ9IC4uLiBcXGVuZHRvZ2dsZVxuICogICAgKGFzIGFuIDxtYWN0aW9uIGFjdGlvbnR5cGU9XCJ0b2dnbGVcIj4pXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2FsbGluZyBtYWNyby5cbiAqL1xuQWN0aW9uTWV0aG9kcy5Ub2dnbGUgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGNoaWxkcmVuID0gW107XG4gIGxldCBhcmc7XG4gIHdoaWxlICgoYXJnID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpKSAhPT0gJ1xcXFxlbmR0b2dnbGUnKSB7XG4gICAgY2hpbGRyZW4ucHVzaChcbiAgICAgIG5ldyBUZXhQYXJzZXIoYXJnLCBwYXJzZXIuc3RhY2suZW52LCBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCkpO1xuICB9XG4gIHBhcnNlci5QdXNoKFxuICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbWFjdGlvbicsIGNoaWxkcmVuLCB7YWN0aW9udHlwZTogJ3RvZ2dsZSd9KSk7XG59O1xuXG5cbi8qKlxuICogSW1wbGVtZW50IFxcbWF0aHRpcHttYXRofXt0aXB9XG4gKiAgIChhbiBhbiA8bWFjdGlvbiBhY3Rpb250eXBlPVwidG9vbHRpcFwiPilcbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgdGV4IHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIG1hY3JvLlxuICovXG5BY3Rpb25NZXRob2RzLk1hdGh0aXAgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGFyZyA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgY29uc3QgdGlwID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBwYXJzZXIuUHVzaChcbiAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21hY3Rpb24nLCBbYXJnLCB0aXBdLCB7YWN0aW9udHlwZTogJ3Rvb2x0aXAnfSkpO1xufTtcblxuXG5uZXcgQ29tbWFuZE1hcCgnYWN0aW9uLW1hY3JvcycsIHtcbiAgdG9nZ2xlOiAgJ1RvZ2dsZScsXG4gIG1hdGh0aXA6ICdNYXRodGlwJyxcbiAgdGV4dHRpcDogWydNYWNybycsICdcXFxcbWF0aHRpcHsjMX17XFxcXHRleHR7IzJ9fScsIDJdXG59LCBBY3Rpb25NZXRob2RzKTtcblxuXG5leHBvcnQgY29uc3QgQWN0aW9uQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAnYWN0aW9uJywge2hhbmRsZXI6IHttYWNybzogWydhY3Rpb24tbWFjcm9zJ119fVxuKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMDktMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IFN0YWNrSXRlbXMgbmVlZGVkIGZvciBwYXJzaW5nIEFNUyBtYXRoIGNvbW1hbmRzLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cblxuaW1wb3J0IHtBcnJheUl0ZW0sIEVxbkFycmF5SXRlbX0gZnJvbSAnLi4vYmFzZS9CYXNlSXRlbXMuanMnO1xuaW1wb3J0IFBhcnNlVXRpbCBmcm9tICcuLi9QYXJzZVV0aWwuanMnO1xuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4uL05vZGVVdGlsLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5pbXBvcnQge1RleENvbnN0YW50fSBmcm9tICcuLi9UZXhDb25zdGFudHMuanMnO1xuaW1wb3J0IHtNbWxOb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5cblxuLyoqXG4gKiBJdGVtIGRlYWxpbmcgd2l0aCBtdWx0aWxpbmUgZW52aXJvbm1lbnRzIGFzIGEgc3BlY2lhbCBjYXNlIG9mIGFycmF5cy4gTm90ZSxcbiAqIHRoYXQgYWxsIG90aGVyIEFNUyBlcXVhdGlvbiBlbnZpcm9ubWVudHMgKGUuZy4sIGFsaWduLCBzcGxpdCkgY2FuIGJlIGhhbmRsZWRcbiAqIGJ5IHRoZSByZWd1bGFyIEVxbkFycmF5SXRlbSBjbGFzcy5cbiAqXG4gKiBIYW5kbGVzIHRhZ2dpbmcgaW5mb3JtYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiB0YWdnaW5nIHN0eWxlLlxuICovXG5leHBvcnQgY2xhc3MgTXVsdGxpbmVJdGVtIGV4dGVuZHMgQXJyYXlJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBhbnksIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgc3VwZXIoZmFjdG9yeSk7XG4gICAgdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24udGFncy5zdGFydCgnbXVsdGxpbmUnLCB0cnVlLCBhcmdzWzBdKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtdWx0bGluZSc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBFbmRFbnRyeSgpIHtcbiAgICBpZiAodGhpcy50YWJsZS5sZW5ndGgpIHtcbiAgICAgIFBhcnNlVXRpbC5maXhJbml0aWFsTU8odGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24sIHRoaXMubm9kZXMpO1xuICAgIH1cbiAgICBjb25zdCBzaG92ZSA9IHRoaXMuZ2V0UHJvcGVydHkoJ3Nob3ZlJyk7XG4gICAgY29uc3QgbXRkID0gdGhpcy5jcmVhdGUoJ25vZGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtdGQnLCB0aGlzLm5vZGVzLCBzaG92ZSA/IHtjb2x1bW5hbGlnbjogc2hvdmV9IDoge30pO1xuICAgIHRoaXMuc2V0UHJvcGVydHkoJ3Nob3ZlJywgbnVsbCk7XG4gICAgdGhpcy5yb3cucHVzaChtdGQpO1xuICAgIHRoaXMuQ2xlYXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBFbmRSb3coKSB7XG4gICAgaWYgKHRoaXMucm93Lmxlbmd0aCAhPT0gMSkge1xuICAgICAgLy8gQHRlc3QgTXVsdGxpbmVSb3dzT25lQ29sXG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoXG4gICAgICAgICdNdWx0bGluZVJvd3NPbmVDb2wnLFxuICAgICAgICAnVGhlIHJvd3Mgd2l0aGluIHRoZSAlMSBlbnZpcm9ubWVudCBtdXN0IGhhdmUgZXhhY3RseSBvbmUgY29sdW1uJyxcbiAgICAgICAgJ211bHRsaW5lJyk7XG4gICAgfVxuICAgIGxldCByb3cgPSB0aGlzLmNyZWF0ZSgnbm9kZScsICdtdHInLCB0aGlzLnJvdyk7XG4gICAgdGhpcy50YWJsZS5wdXNoKHJvdyk7XG4gICAgdGhpcy5yb3cgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBFbmRUYWJsZSgpIHtcbiAgICBzdXBlci5FbmRUYWJsZSgpO1xuICAgIGlmICh0aGlzLnRhYmxlLmxlbmd0aCkge1xuICAgICAgbGV0IG0gPSB0aGlzLnRhYmxlLmxlbmd0aCAtIDEsIGxhYmVsID0gLTE7XG4gICAgICBpZiAoIU5vZGVVdGlsLmdldEF0dHJpYnV0ZShcbiAgICAgICAgTm9kZVV0aWwuZ2V0Q2hpbGRyZW4odGhpcy50YWJsZVswXSlbMF0sICdjb2x1bW5hbGlnbicpKSB7XG4gICAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShOb2RlVXRpbC5nZXRDaGlsZHJlbih0aGlzLnRhYmxlWzBdKVswXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2x1bW5hbGlnbicsIFRleENvbnN0YW50LkFsaWduLkxFRlQpO1xuICAgICAgfVxuICAgICAgaWYgKCFOb2RlVXRpbC5nZXRBdHRyaWJ1dGUoXG4gICAgICAgIE5vZGVVdGlsLmdldENoaWxkcmVuKHRoaXMudGFibGVbbV0pWzBdLCAnY29sdW1uYWxpZ24nKSkge1xuICAgICAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUoTm9kZVV0aWwuZ2V0Q2hpbGRyZW4odGhpcy50YWJsZVttXSlbMF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sdW1uYWxpZ24nLCBUZXhDb25zdGFudC5BbGlnbi5SSUdIVCk7XG4gICAgICB9XG4gICAgICBsZXQgdGFnID0gdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24udGFncy5nZXRUYWcoKTtcbiAgICAgIGlmICh0YWcpIHtcbiAgICAgICAgbGFiZWwgPSAodGhpcy5hcnJheWRlZi5zaWRlID09PSBUZXhDb25zdGFudC5BbGlnbi5MRUZUID8gMCA6IHRoaXMudGFibGUubGVuZ3RoIC0gMSk7XG4gICAgICAgIGNvbnN0IG10ciA9IHRoaXMudGFibGVbbGFiZWxdO1xuICAgICAgICBjb25zdCBtbGFiZWwgPSB0aGlzLmNyZWF0ZSgnbm9kZScsICdtbGFiZWxlZHRyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RhZ10uY29uY2F0KE5vZGVVdGlsLmdldENoaWxkcmVuKG10cikpKTtcbiAgICAgICAgTm9kZVV0aWwuY29weUF0dHJpYnV0ZXMobXRyLCBtbGFiZWwpO1xuICAgICAgICB0aGlzLnRhYmxlW2xhYmVsXSA9IG1sYWJlbDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24udGFncy5lbmQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFN0YWNrSXRlbSBmb3IgaGFuZGxpbmcgZmxhbGlnbiwgeGFsaWduYXQsIGFuZCB4eGFsaWduYXQgZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRmxhbGlnbkl0ZW0gZXh0ZW5kcyBFcW5BcnJheUl0ZW0ge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnZmxhbGlnbic7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKGZhY3Rvcnk6IGFueSwgcHVibGljIG5hbWU6IHN0cmluZywgcHVibGljIG51bWJlcmVkOiBib29sZWFuLFxuICAgICAgICAgICAgICBwdWJsaWMgcGFkZGVkOiBib29sZWFuLCBwdWJsaWMgY2VudGVyOiBib29sZWFuKSB7XG4gICAgc3VwZXIoZmFjdG9yeSk7XG4gICAgdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24udGFncy5zdGFydChuYW1lLCBudW1iZXJlZCwgbnVtYmVyZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIEVuZEVudHJ5KCkge1xuICAgIHN1cGVyLkVuZEVudHJ5KCk7XG4gICAgY29uc3QgbiA9IHRoaXMuZ2V0UHJvcGVydHkoJ3hhbGlnbmF0JykgYXMgbnVtYmVyO1xuICAgIGlmICghbikgcmV0dXJuO1xuICAgIGlmICh0aGlzLnJvdy5sZW5ndGggPiBuKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ1hhbGlnbk92ZXJmbG93JywgJ0V4dHJhICUxIGluIHJvdyBvZiAlMicsICcmJywgdGhpcy5uYW1lKTtcbiAgICB9XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBFbmRSb3coKSB7XG4gICAgbGV0IGNlbGw6IE1tbE5vZGU7XG4gICAgbGV0IHJvdyA9IHRoaXMucm93O1xuICAgIC8vXG4gICAgLy8gIEZvciB4YWxpZ25hdCBhbmQgeHhhbGlnbmF0LCBwYWQgdGhlIHJvdyB0byB0aGUgZXhwZWN0ZWQgbnVtYmVyIGlmIGl0IGlzIHRvbyBzaG9ydC5cbiAgICAvL1xuICAgIGNvbnN0IG4gPSB0aGlzLmdldFByb3BlcnR5KCd4YWxpZ25hdCcpIGFzIG51bWJlcjtcbiAgICB3aGlsZSAocm93Lmxlbmd0aCA8IG4pIHtcbiAgICAgIHJvdy5wdXNoKHRoaXMuY3JlYXRlKCdub2RlJywgJ210ZCcpKTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyAgSW5zZXJ0IHBhZGRpbmcgY2VsbHMgYmV0d2VlbiBwYWlycyBvZiBlbnRyaWVzLCBhcyBuZWVkZWQgZm9yIFwiZml0XCIgY29sdW1ucyxcbiAgICAvLyAgICBhbmQgaW5jbHVkZSBpbml0aWFsIGFuZCBlbmQgY2VsbHMgaWYgdGhhdCBpcyBuZWVkZWQuXG4gICAgLy9cbiAgICB0aGlzLnJvdyA9IFtdO1xuICAgIGlmICh0aGlzLnBhZGRlZCkge1xuICAgICAgdGhpcy5yb3cucHVzaCh0aGlzLmNyZWF0ZSgnbm9kZScsICdtdGQnKSk7XG4gICAgfVxuICAgIHdoaWxlICgoY2VsbCA9IHJvdy5zaGlmdCgpKSkge1xuICAgICAgdGhpcy5yb3cucHVzaChjZWxsKTtcbiAgICAgIGNlbGwgPSByb3cuc2hpZnQoKTtcbiAgICAgIGlmIChjZWxsKSB0aGlzLnJvdy5wdXNoKGNlbGwpO1xuICAgICAgaWYgKHJvdy5sZW5ndGggfHwgdGhpcy5wYWRkZWQpIHtcbiAgICAgICAgdGhpcy5yb3cucHVzaCh0aGlzLmNyZWF0ZSgnbm9kZScsICdtdGQnKSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgaWYgKHRoaXMucm93Lmxlbmd0aCA+IHRoaXMubWF4cm93KSB7XG4gICAgICB0aGlzLm1heHJvdyA9IHRoaXMucm93Lmxlbmd0aDtcbiAgICB9XG4gICAgc3VwZXIuRW5kUm93KCk7XG4gICAgLy9cbiAgICAvLyBGb3IgZnVsbC13aWR0aCBlbnZpcm9ubWVudHMgd2l0aCBsYWJlbHMgdGhhdCBhcmVuJ3Qgc3VwcG9zZWQgdG8gdGFrZSB1cCBzcGFjZSxcbiAgICAvLyAgIG1vdmUgdGhlIGxhYmVsIGludG8gYSB6ZXJvLXdpZHRoIG1wYWRkZWQgZWxlbWVudCB0aGF0IGxhcHMgaW4gdGhlIHByb3BlciBkaXJlY3Rpb24uXG4gICAgLy9cbiAgICBjb25zdCBtdHIgPSB0aGlzLnRhYmxlW3RoaXMudGFibGUubGVuZ3RoIC0gMV07XG4gICAgaWYgKHRoaXMuZ2V0UHJvcGVydHkoJ3plcm9XaWR0aExhYmVsJykgJiYgbXRyLmlzS2luZCgnbWxhYmVsZWR0cicpKSB7XG4gICAgICBjb25zdCBtdGQgPSBOb2RlVXRpbC5nZXRDaGlsZHJlbihtdHIpWzBdO1xuICAgICAgY29uc3Qgc2lkZSA9IHRoaXMuZmFjdG9yeS5jb25maWd1cmF0aW9uLm9wdGlvbnNbJ3RhZ1NpZGUnXTtcbiAgICAgIGNvbnN0IGRlZiA9IHt3aWR0aDogMCwgLi4uKHNpZGUgPT09ICdyaWdodCcgPyB7bHNwYWNlOiAnLTF3aWR0aCd9IDoge30pfTtcbiAgICAgIGNvbnN0IG1wYWRkZWQgPSB0aGlzLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgTm9kZVV0aWwuZ2V0Q2hpbGRyZW4obXRkKSwgZGVmKTtcbiAgICAgIG10ZC5zZXRDaGlsZHJlbihbbXBhZGRlZF0pO1xuICAgIH1cbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIEVuZFRhYmxlKCkge1xuICAgIHN1cGVyLkVuZFRhYmxlKCk7XG4gICAgaWYgKHRoaXMuY2VudGVyKSB7XG4gICAgICAvL1xuICAgICAgLy8gIElmIHRoZXJlIGlzIG9ubHkgb25lIGVxdWF0aW9uIChvbmUgcGFpcik6XG4gICAgICAvLyAgICBEb24ndCBtYWtlIGl0IDEwMCUsIGFuZCBkb24ndCBjaGFuZ2UgdGhlIGluZGVudGFsaWduLlxuICAgICAgLy9cbiAgICAgIGlmICh0aGlzLm1heHJvdyA8PSAyKSB7XG4gICAgICAgIGNvbnN0IGRlZiA9IHRoaXMuYXJyYXlkZWY7XG4gICAgICAgIGRlbGV0ZSBkZWYud2lkdGg7XG4gICAgICAgIGRlbGV0ZSB0aGlzLmdsb2JhbC5pbmRlbnRhbGlnbjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgVGhlIEFNUyBQYXJzZSBtZXRob2RzLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cblxuaW1wb3J0IHtTdGFja0l0ZW19IGZyb20gJy4uL1N0YWNrSXRlbS5qcyc7XG5pbXBvcnQge1BhcnNlTWV0aG9kfSBmcm9tICcuLi9UeXBlcy5qcyc7XG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5pbXBvcnQgUGFyc2VNZXRob2RzIGZyb20gJy4uL1BhcnNlTWV0aG9kcy5qcyc7XG5pbXBvcnQgTm9kZVV0aWwgZnJvbSAnLi4vTm9kZVV0aWwuanMnO1xuaW1wb3J0IHtUZXhDb25zdGFudH0gZnJvbSAnLi4vVGV4Q29uc3RhbnRzLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5pbXBvcnQge01hY3JvfSBmcm9tICcuLi9TeW1ib2wuanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IHtBcnJheUl0ZW19IGZyb20gJy4uL2Jhc2UvQmFzZUl0ZW1zLmpzJztcbmltcG9ydCB7RmxhbGlnbkl0ZW19IGZyb20gJy4vQW1zSXRlbXMuanMnO1xuaW1wb3J0IEJhc2VNZXRob2RzIGZyb20gJy4uL2Jhc2UvQmFzZU1ldGhvZHMuanMnO1xuaW1wb3J0IHtURVhDTEFTU30gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtNbWxNdW5kZXJvdmVyfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXVuZGVyb3Zlci5qcyc7XG5pbXBvcnQge01tbE5vZGUsIEFic3RyYWN0TW1sVG9rZW5Ob2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5cblxuLy8gTmFtZXNwYWNlXG5leHBvcnQgY29uc3QgQW1zTWV0aG9kczogUmVjb3JkPHN0cmluZywgUGFyc2VNZXRob2Q+ID0ge307XG5cblxuLyoqXG4gKiBIYW5kbGUgQU1TIGFycmF5IGVudmlyb25tZW50cy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtTdGFja0l0ZW19IGJlZ2luIFRoZSBvcGVuaW5nIHN0YWNraXRlbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbnVtYmVyZWQgRW52aXJvbm1lbnQgbnVtYmVyZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHRhZ2dhYmxlIEVudmlyb25tZW50IHRhZ2dhYmxlIChlLmcuLCBhbGlnbiogaXMgdGFnZ2FibGUsXG4gKiAgICAgc3BsaXQgaXMgbm90KS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBhbGlnbiBDb2x1bW4gYWxpZ25tZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IHNwYWNpbmcgQ29sdW1uIHNwYWNpbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGUgRGlzcGxheSBzdHlsZSBpbmRpY2F0b3IuXG4gKi9cbkFtc01ldGhvZHMuQW1zRXFuQXJyYXkgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IFN0YWNrSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyZWQ6IGJvb2xlYW4sIHRhZ2dhYmxlOiBib29sZWFuLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbjogc3RyaW5nLCBzcGFjaW5nOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgQWxpZ25lZCwgR2F0aGVyZWRcbiAgY29uc3QgYXJncyA9IHBhcnNlci5HZXRCcmFja2V0cygnXFxcXGJlZ2lueycgKyBiZWdpbi5nZXROYW1lKCkgKyAnfScpO1xuICBjb25zdCBhcnJheSA9IEJhc2VNZXRob2RzLkVxbkFycmF5KHBhcnNlciwgYmVnaW4sIG51bWJlcmVkLCB0YWdnYWJsZSwgYWxpZ24sIHNwYWNpbmcsIHN0eWxlKTtcbiAgcmV0dXJuIFBhcnNlVXRpbC5zZXRBcnJheUFsaWduKGFycmF5IGFzIEFycmF5SXRlbSwgYXJncyk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIEFNUyAgYWxpZ25hdCBlbnZpcm9ubWVudHMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiBUaGUgb3BlbmluZyBzdGFja2l0ZW0uXG4gKiBAcGFyYW0ge2Jvb2xlYW59IG51bWJlcmVkIEVudmlyb25tZW50IG51bWJlcmVkLlxuICogQHBhcmFtIHtib29sZWFufSB0YWdnYWJsZSBFbnZpcm9ubWVudCB0YWdnYWJsZSAoZS5nLiwgYWxpZ24qIGlzIHRhZ2dhYmxlLFxuICogICAgIHNwbGl0IGlzIG5vdCkuXG4gKi9cbkFtc01ldGhvZHMuQWxpZ25BdCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBiZWdpbjogU3RhY2tJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyZWQ6IGJvb2xlYW4sIHRhZ2dhYmxlOiBib29sZWFuKSB7XG4gIGNvbnN0IG5hbWUgPSBiZWdpbi5nZXROYW1lKCk7XG4gIGxldCBuLCB2YWxpZ24sIGFsaWduID0gJycsIHNwYWNpbmcgPSBbXTtcbiAgaWYgKCF0YWdnYWJsZSkge1xuICAgIC8vIEB0ZXN0IEFsaWduZWRhdFxuICAgIHZhbGlnbiA9IHBhcnNlci5HZXRCcmFja2V0cygnXFxcXGJlZ2lueycgKyBuYW1lICsgJ30nKTtcbiAgfVxuICBuID0gcGFyc2VyLkdldEFyZ3VtZW50KCdcXFxcYmVnaW57JyArIG5hbWUgKyAnfScpO1xuICBpZiAobi5tYXRjaCgvW14wLTldLykpIHtcbiAgICAvLyBAdGVzdCBQb3NpdGl2ZUludGVnZXJBcmdcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ1Bvc2l0aXZlSW50ZWdlckFyZycsXG4gICAgICAgICAgICAgICAgICAgICAgICAnQXJndW1lbnQgdG8gJTEgbXVzdCBtZSBhIHBvc2l0aXZlIGludGVnZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ1xcXFxiZWdpbnsnICsgbmFtZSArICd9Jyk7XG4gIH1cbiAgbGV0IGNvdW50ID0gcGFyc2VJbnQobiwgMTApO1xuICB3aGlsZSAoY291bnQgPiAwKSB7XG4gICAgYWxpZ24gICs9ICdybCc7XG4gICAgc3BhY2luZy5wdXNoKCcwZW0gMGVtJyk7XG4gICAgY291bnQtLTtcbiAgfVxuICBsZXQgc3BhY2VTdHIgPSBzcGFjaW5nLmpvaW4oJyAnKTtcbiAgaWYgKHRhZ2dhYmxlKSB7XG4gICAgLy8gQHRlc3QgQWxpZ25hdCwgQWxpZ25hdCBTdGFyXG4gICAgcmV0dXJuIEFtc01ldGhvZHMuRXFuQXJyYXkocGFyc2VyLCBiZWdpbiwgbnVtYmVyZWQsIHRhZ2dhYmxlLCBhbGlnbiwgc3BhY2VTdHIpO1xuICB9XG4gIC8vIEB0ZXN0IEFsaWduZWRhdFxuICBsZXQgYXJyYXkgPSBBbXNNZXRob2RzLkVxbkFycmF5KHBhcnNlciwgYmVnaW4sIG51bWJlcmVkLCB0YWdnYWJsZSwgYWxpZ24sIHNwYWNlU3RyKTtcbiAgcmV0dXJuIFBhcnNlVXRpbC5zZXRBcnJheUFsaWduKGFycmF5IGFzIEFycmF5SXRlbSwgdmFsaWduKTtcbn07XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIG11bHRsaW5lIGVudmlyb25tZW50IChtb3N0bHkgaGFuZGxlZCB0aHJvdWdoIFNUQUNLSVRFTSBiZWxvdylcbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtTdGFja0l0ZW19IGJlZ2luIFRoZSBvcGVuaW5nIHN0YWNraXRlbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbnVtYmVyZWQgRW52aXJvbm1lbnQgbnVtYmVyZWQuXG4gKi9cbkFtc01ldGhvZHMuTXVsdGxpbmUgPSBmdW5jdGlvbiAocGFyc2VyOiBUZXhQYXJzZXIsIGJlZ2luOiBTdGFja0l0ZW0sIG51bWJlcmVkOiBib29sZWFuKSB7XG4gIC8vIEB0ZXN0IFNob3ZlKiwgTXVsdGxpbmVcbiAgcGFyc2VyLlB1c2goYmVnaW4pO1xuICBQYXJzZVV0aWwuY2hlY2tFcW5FbnYocGFyc2VyKTtcbiAgY29uc3QgaXRlbSA9IHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ211bHRsaW5lJywgbnVtYmVyZWQsIHBhcnNlci5zdGFjaykgYXMgQXJyYXlJdGVtO1xuICBpdGVtLmFycmF5ZGVmID0ge1xuICAgIGRpc3BsYXlzdHlsZTogdHJ1ZSxcbiAgICByb3dzcGFjaW5nOiAnLjVlbScsXG4gICAgY29sdW1uc3BhY2luZzogJzEwMCUnLFxuICAgIHdpZHRoOiBwYXJzZXIub3B0aW9ucy5hbXNbJ211bHRsaW5lV2lkdGgnXSxcbiAgICBzaWRlOiBwYXJzZXIub3B0aW9uc1sndGFnU2lkZSddLFxuICAgIG1pbmxhYmVsc3BhY2luZzogcGFyc2VyLm9wdGlvbnNbJ3RhZ0luZGVudCddLFxuICAgIGZyYW1lc3BhY2luZzogcGFyc2VyLm9wdGlvbnMuYW1zWydtdWx0bGluZUluZGVudCddICsgJyAwJyxcbiAgICBmcmFtZTogJycsICAgLy8gVXNlIGZyYW1lIHNwYWNpbmcgd2l0aCBubyBhY3R1YWwgZnJhbWVcbiAgICAnZGF0YS13aWR0aC1pbmNsdWRlcy1sYWJlbCc6IHRydWUgLy8gdGFrZSBsYWJlbCBzcGFjZSBvdXQgb2YgMTAwJSB3aWR0aFxuICB9O1xuICByZXR1cm4gaXRlbTtcbn07XG5cblxuLyoqXG4gKiBHZW5lcmF0ZSBhbiBhbGlnbiBhdCBlbnZpcm9ubWVudC5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgVGVYIHBhcnNlci5cbiAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiBUaGUgYmVnaW4gc3RhY2tpdGVtLlxuICogQHBhcmFtIHtib29sZWFufSBudW1iZXJlZCBJcyB0aGlzIGEgbnVtYmVyZWQgYXJyYXkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHBhZGRlZCBJcyBpdCBwYWRkZWQuXG4gKi9cbkFtc01ldGhvZHMuWGFsaWduQXQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IFN0YWNrSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJlZDogYm9vbGVhbiwgcGFkZGVkOiBib29sZWFuKSB7XG4gIGxldCBuID0gcGFyc2VyLkdldEFyZ3VtZW50KCdcXFxcYmVnaW57JyArIGJlZ2luLmdldE5hbWUoKSArICd9Jyk7XG4gIGlmIChuLm1hdGNoKC9bXjAtOV0vKSkge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignUG9zaXRpdmVJbnRlZ2VyQXJnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ0FyZ3VtZW50IHRvICUxIG11c3QgbWUgYSBwb3NpdGl2ZSBpbnRlZ2VyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ1xcXFxiZWdpbnsnICsgYmVnaW4uZ2V0TmFtZSgpICsgJ30nKTtcbiAgfVxuICBjb25zdCBhbGlnbiA9IChwYWRkZWQgPyAnY3JsJyA6ICdybGMnKTtcbiAgY29uc3Qgd2lkdGggPSAocGFkZGVkID8gJ2ZpdCBhdXRvIGF1dG8nIDogJ2F1dG8gYXV0byBmaXQnKTtcbiAgY29uc3QgaXRlbSA9IEFtc01ldGhvZHMuRmxhbGlnbkFycmF5KHBhcnNlciwgYmVnaW4sIG51bWJlcmVkLCBwYWRkZWQsIGZhbHNlLCBhbGlnbiwgd2lkdGgsIHRydWUpIGFzIEZsYWxpZ25JdGVtO1xuICBpdGVtLnNldFByb3BlcnR5KCd4YWxpZ25hdCcsIDIgKiBwYXJzZUludChuKSk7XG4gIHJldHVybiBpdGVtO1xufTtcblxuXG4vKipcbiAqIEdlbmVyYXRlIGFuIGZsYWxpZ24gZW52aXJvbm1lbnQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IFRlWCBwYXJzZXIuXG4gKiBAcGFyYW0ge1N0YWNrSXRlbX0gYmVnaW4gVGhlIGJlZ2luIHN0YWNraXRlbS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbnVtYmVyZWQgSXMgdGhpcyBhIG51bWJlcmVkIGFycmF5LlxuICogQHBhcmFtIHtib29sZWFufSBwYWRkZWQgSXMgaXQgcGFkZGVkLlxuICogQHBhcmFtIHtib29sZWFufSBjZW50ZXIgSXMgaXQgY2VudGVyZWQuXG4gKiBAcGFyYW0ge3N0cmluZ30gYWxpZ24gVGhlIGhvcml6b250YWwgYWxpZ25tZW50IGZvciBjb2x1bW5zXG4gKiBAcGFyYW0ge3N0cmluZ30gd2lkdGggVGhlIGNvbHVtbiB3aWR0aHMgb2YgdGhlIHRhYmxlXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHplcm9XaWR0aExhYmVsIFRydWUgaWYgdGhlIGxhYmVsIHNob3VsZCBiZSBpbiBsbGFwL3JsYXBcbiAqL1xuQW1zTWV0aG9kcy5GbGFsaWduQXJyYXkgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IFN0YWNrSXRlbSwgbnVtYmVyZWQ6IGJvb2xlYW4sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGVkOiBib29sZWFuLCBjZW50ZXI6IGJvb2xlYW4sIGFsaWduOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHN0cmluZywgemVyb1dpZHRoTGFiZWw6IGJvb2xlYW4gPSBmYWxzZSkge1xuICBwYXJzZXIuUHVzaChiZWdpbik7XG4gIFBhcnNlVXRpbC5jaGVja0VxbkVudihwYXJzZXIpO1xuICBhbGlnbiA9IGFsaWduXG4gICAgLnNwbGl0KCcnKVxuICAgIC5qb2luKCcgJylcbiAgICAucmVwbGFjZSgvci9nLCAncmlnaHQnKVxuICAgIC5yZXBsYWNlKC9sL2csICdsZWZ0JylcbiAgICAucmVwbGFjZSgvYy9nLCAnY2VudGVyJyk7XG4gIGNvbnN0IGl0ZW0gPSBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKFxuICAgICdmbGFsaWduJywgYmVnaW4uZ2V0TmFtZSgpLCBudW1iZXJlZCwgcGFkZGVkLCBjZW50ZXIsIHBhcnNlci5zdGFjaykgYXMgRmxhbGlnbkl0ZW07XG4gIGl0ZW0uYXJyYXlkZWYgPSB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBkaXNwbGF5c3R5bGU6IHRydWUsXG4gICAgY29sdW1uYWxpZ246IGFsaWduLFxuICAgIGNvbHVtbnNwYWNpbmc6ICcwZW0nLFxuICAgIGNvbHVtbndpZHRoOiB3aWR0aCxcbiAgICByb3dzcGFjaW5nOiAnM3B0JyxcbiAgICBzaWRlOiBwYXJzZXIub3B0aW9uc1sndGFnU2lkZSddLFxuICAgIG1pbmxhYmVsc3BhY2luZzogKHplcm9XaWR0aExhYmVsID8gJzAnIDogcGFyc2VyLm9wdGlvbnNbJ3RhZ0luZGVudCddKSxcbiAgICAnZGF0YS13aWR0aC1pbmNsdWRlcy1sYWJlbCc6IHRydWUsXG4gIH07XG4gIGl0ZW0uc2V0UHJvcGVydHkoJ3plcm9XaWR0aExhYmVsJywgemVyb1dpZHRoTGFiZWwpO1xuICByZXR1cm4gaXRlbTtcbn07XG5cblxuZXhwb3J0IGNvbnN0IE5FV19PUFMgPSAnYW1zLWRlY2xhcmUtb3BzJztcblxuLyoqXG4gKiBIYW5kbGUgRGVjbGFyZU1hdGhPcGVyYXRvci5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkFtc01ldGhvZHMuSGFuZGxlRGVjbGFyZU9wID0gIGZ1bmN0aW9uIChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBzdGFyID0gKHBhcnNlci5HZXRTdGFyKCkgPyAnKicgOiAnJyk7XG4gIGxldCBjcyA9IFBhcnNlVXRpbC50cmltU3BhY2VzKHBhcnNlci5HZXRBcmd1bWVudChuYW1lKSk7XG4gIGlmIChjcy5jaGFyQXQoMCkgPT09ICdcXFxcJykge1xuICAgIGNzID0gY3Muc3Vic3RyKDEpO1xuICB9XG4gIGxldCBvcCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgKHBhcnNlci5jb25maWd1cmF0aW9uLmhhbmRsZXJzLnJldHJpZXZlKE5FV19PUFMpIGFzIENvbW1hbmRNYXApLlxuICAgIGFkZChjcywgbmV3IE1hY3JvKGNzLCBBbXNNZXRob2RzLk1hY3JvLCBbYFxcXFxvcGVyYXRvcm5hbWUke3N0YXJ9eyR7b3B9fWBdKSk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIG9wZXJhdG9ybmFtZS5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkFtc01ldGhvZHMuSGFuZGxlT3BlcmF0b3JOYW1lID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvLyBAdGVzdCBPcGVyYXRvcm5hbWVcbiAgY29uc3Qgc3RhciA9IHBhcnNlci5HZXRTdGFyKCk7XG4gIC8vXG4gIC8vICBQYXJzZSB0aGUgYXJndW1lbnQgdXNpbmcgb3BlcmF0b3IgbGV0dGVycyBhbmQgZ3JvdXBpbmcgbXVsdGlwbGUgbGV0dGVycy5cbiAgLy9cbiAgbGV0IG9wID0gUGFyc2VVdGlsLnRyaW1TcGFjZXMocGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpKTtcbiAgbGV0IG1tbCA9IG5ldyBUZXhQYXJzZXIob3AsIHtcbiAgICAuLi5wYXJzZXIuc3RhY2suZW52LFxuICAgIGZvbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMLFxuICAgIG11bHRpTGV0dGVySWRlbnRpZmllcnM6IC9eWy0qYS16XSsvaSBhcyBhbnksXG4gICAgb3BlcmF0b3JMZXR0ZXJzOiB0cnVlXG4gIH0sIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgLy9cbiAgLy8gIElmIHdlIGdldCBzb21ldGhpbmcgb3RoZXIgdGhhbiBhIHNpbmdsZSBtaSwgd3JhcCBpbiBhIFRlWEF0b20uXG4gIC8vXG4gIGlmICghbW1sLmlzS2luZCgnbWknKSkge1xuICAgIG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFttbWxdKTtcbiAgfVxuICAvL1xuICAvLyAgTWFyayB0aGUgbGltaXQgcHJvcGVydGllcyBhbmQgdGhlIFRlWCBjbGFzcy5cbiAgLy9cbiAgTm9kZVV0aWwuc2V0UHJvcGVydGllcyhtbWwsIHttb3Zlc3Vwc3ViOiBzdGFyLCBtb3ZhYmxlbGltaXRzOiB0cnVlLCB0ZXhDbGFzczogVEVYQ0xBU1MuT1B9KTtcbiAgLy9cbiAgLy8gIFNraXAgYSBmb2xsb3dpbmcgXFxsaW1pdHMgbWFjcm8gaWYgbm90IGEgc3RhcnJlZCBvcGVyYXRvclxuICAvL1xuICBpZiAoIXN0YXIpIHtcbiAgICBjb25zdCBjID0gcGFyc2VyLkdldE5leHQoKSwgaSA9IHBhcnNlci5pO1xuICAgIGlmIChjID09PSAnXFxcXCcgJiYgKytwYXJzZXIuaSAmJiBwYXJzZXIuR2V0Q1MoKSAhPT0gJ2xpbWl0cycpIHtcbiAgICAgIHBhcnNlci5pID0gaTtcbiAgICB9XG4gIH1cbiAgLy9cbiAgcGFyc2VyLlB1c2gobW1sKTtcbn07XG5cbi8qKlxuICogSGFuZGxlIHNpZGVzZXQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5BbXNNZXRob2RzLlNpZGVTZXQgPSBmdW5jdGlvbiAocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvL1xuICAvLyAgR2V0IHRoZSBwcmUtIGFuZCBwb3N0LXNjcmlwdHMsIGFuZCBhbnkgZXh0cmEgbWF0ZXJpYWwgZnJvbSB0aGUgYXJndW1lbnRzXG4gIC8vXG4gIGNvbnN0IFtwcmVTY3JpcHRzLCBwcmVSZXN0XSA9IHNwbGl0U2lkZVNldChwYXJzZXIuUGFyc2VBcmcobmFtZSkpO1xuICBjb25zdCBbcG9zdFNjcmlwdHMsIHBvc3RSZXN0XSA9IHNwbGl0U2lkZVNldChwYXJzZXIuUGFyc2VBcmcobmFtZSkpO1xuICBjb25zdCBiYXNlID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBsZXQgbW1sID0gYmFzZTtcbiAgLy9cbiAgLy8gIElmIHRoZXJlIGFyZSBwcmUtc2NyaXB0cy4uLlxuICAvL1xuICBpZiAocHJlU2NyaXB0cykge1xuICAgIC8vXG4gICAgLy8gIElmIHRoZXJlIGlzIG90aGVyIG1hdGVyaWFsLi4uXG4gICAgLy9cbiAgICBpZiAocHJlUmVzdCkge1xuICAgICAgLy9cbiAgICAgIC8vICBSZXBsYWNlIHRoZSBlbXB0eSBiYXNlIG9mIHRoZSBwcmVzY3JpcHRzIHdpdGggYSBwaGFudG9tIGVsZW1lbnQgb2YgdGhlXG4gICAgICAvLyAgICBvcmlnaW5hbCBiYXNlLCB3aXRoIHdpZHRoIDAgKGJ1dCBzdGlsbCBvZiB0aGUgY29ycmVjdCBoZWlnaHQgYW5kIGRlcHRoKS5cbiAgICAgIC8vICAgIHNvIHRoZSBzY3JpcHRzIHdpbGwgYmUgYXQgdGhlIHJpZ2h0IGhlaWdodHMuXG4gICAgICAvL1xuICAgICAgcHJlU2NyaXB0cy5yZXBsYWNlQ2hpbGQoXG4gICAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBoYW50b20nLCBbXG4gICAgICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW1BhcnNlVXRpbC5jb3B5Tm9kZShiYXNlLCBwYXJzZXIpXSwge3dpZHRoOiAwfSlcbiAgICAgICAgXSksXG4gICAgICAgIE5vZGVVdGlsLmdldENoaWxkQXQocHJlU2NyaXB0cywgMClcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vXG4gICAgICAvLyAgSWYgdGhlcmUgaXMgbm8gZXh0cmEgbWV0ZXJpYWwsIG1ha2UgYSBtbXVsdGlzY3JpcHRzIGVsZW1lbnRcbiAgICAgIC8vXG4gICAgICBtbWwgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21tdWx0aXNjcmlwdHMnLCBbYmFzZV0pO1xuICAgICAgLy9cbiAgICAgIC8vICBBZGQgYW55IHBvc3RzY3JpcHRzXG4gICAgICAvL1xuICAgICAgaWYgKHBvc3RTY3JpcHRzKSB7XG4gICAgICAgIE5vZGVVdGlsLmFwcGVuZENoaWxkcmVuKG1tbCwgW1xuICAgICAgICAgIE5vZGVVdGlsLmdldENoaWxkQXQocG9zdFNjcmlwdHMsIDEpIHx8IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbm9uZScpLFxuICAgICAgICAgIE5vZGVVdGlsLmdldENoaWxkQXQocG9zdFNjcmlwdHMsIDIpIHx8IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbm9uZScpXG4gICAgICAgIF0pO1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIC8vICBBZGQgdGhlIHByZXNjcmlwdHMgKGxlZnQgYWxpZ25lZClcbiAgICAgIC8vXG4gICAgICBOb2RlVXRpbC5zZXRQcm9wZXJ0eShtbWwsICdzY3JpcHRhbGlnbicsICdsZWZ0Jyk7XG4gICAgICBOb2RlVXRpbC5hcHBlbmRDaGlsZHJlbihtbWwsIFtcbiAgICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcHJlc2NyaXB0cycpLFxuICAgICAgICBOb2RlVXRpbC5nZXRDaGlsZEF0KHByZVNjcmlwdHMsIDEpIHx8IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbm9uZScpLFxuICAgICAgICBOb2RlVXRpbC5nZXRDaGlsZEF0KHByZVNjcmlwdHMsIDIpIHx8IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbm9uZScpXG4gICAgICBdKTtcbiAgICB9XG4gIH1cbiAgLy9cbiAgLy8gIElmIHRoZXJlIGFyZSBwb3N0c2NyaXB0cyBhbmQgd2UgZGlkbid0IG1ha2UgYSBtbXVsdGlzY3JpcHQgZWxlbWVudCBhYm92ZS4uLlxuICAvL1xuICBpZiAocG9zdFNjcmlwdHMgJiYgbW1sID09PSBiYXNlKSB7XG4gICAgLy9cbiAgICAvLyAgUmVwbGFjZSB0aGUgZW10cHkgYmFzZSB3aXRoIGFjdHVhbCBiYXNlLCBhbmQgdXNlIHRoYXQgYXMgdGhlIG1tbFxuICAgIC8vXG4gICAgcG9zdFNjcmlwdHMucmVwbGFjZUNoaWxkKGJhc2UsIE5vZGVVdGlsLmdldENoaWxkQXQocG9zdFNjcmlwdHMsIDApKTtcbiAgICBtbWwgPSBwb3N0U2NyaXB0cztcbiAgfVxuICAvL1xuICAvLyAgUHV0IHRoZSBuZWVkZWQgcGllY2VzIGludG8gYSBUZVhBdG9tIG9mIGNsYXNzIE9QLlxuICAvLyAgTm90ZSB0aGF0IHRoZSBwb3N0U2NyaXB0cyBhcmUgaW4gdGhlIG1tbCBlbGVtZW50LFxuICAvLyAgICBlaXRoZXIgYXMgcGFydCBvZiB0aGUgbW11bHRpc2NyaXB0cyBub2RlLCBvciB0aGVcbiAgLy8gICAgbXN1YnN1cCB3aXRoIHRoZSBiYXNlIGluc2VydGVkIGludG8gaXQuXG4gIC8vXG4gIGNvbnN0IG1yb3cgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbXSwge3RleENsYXNzOiBURVhDTEFTUy5PUCwgbW92ZXN1cHN1YjogdHJ1ZSwgbW92YWJsZWxpbWl0czogdHJ1ZX0pO1xuICBpZiAocHJlUmVzdCkge1xuICAgIHByZVNjcmlwdHMgJiYgbXJvdy5hcHBlbmRDaGlsZChwcmVTY3JpcHRzKTtcbiAgICBtcm93LmFwcGVuZENoaWxkKHByZVJlc3QpO1xuICB9XG4gIG1yb3cuYXBwZW5kQ2hpbGQobW1sKTtcbiAgcG9zdFJlc3QgJiYgbXJvdy5hcHBlbmRDaGlsZChwb3N0UmVzdCk7XG4gIHBhcnNlci5QdXNoKG1yb3cpO1xufTtcblxuLyoqXG4gKiBVdGlsaXR5IGZvciBicmVha2luZyB0aGUgXFxzaWRlc2V0IHNjcmlwdHMgZnJvbSBhbnkgb3RoZXIgbWF0ZXJpYWwuXG4gKiBAcGFyYW0ge01tbE5vZGV9IG1tbCBUaGUgbm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm4ge1tNbWxOb2RlLCBNbWxOb2RlXX0gVGhlIG1zdWJzdXAgd2l0aCB0aGUgc2NyaXB0cyB0b2dldGhlciB3aXRoIGFueSBleHRyYSBub2Rlcy5cbiAqL1xuZnVuY3Rpb24gc3BsaXRTaWRlU2V0KG1tbDogTW1sTm9kZSk6IFtNbWxOb2RlLCBNbWxOb2RlXSB7XG4gICAgaWYgKCFtbWwgfHwgKG1tbC5pc0luZmVycmVkICYmIG1tbC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCkpIHJldHVybiBbbnVsbCwgbnVsbF07XG4gICAgaWYgKG1tbC5pc0tpbmQoJ21zdWJzdXAnKSAmJiBjaGVja1NpZGVTZXRCYXNlKG1tbCkpIHJldHVybiBbbW1sLCBudWxsXTtcbiAgICBjb25zdCBjaGlsZCA9IE5vZGVVdGlsLmdldENoaWxkQXQobW1sLCAwKTtcbiAgICBpZiAoIShtbWwuaXNJbmZlcnJlZCAmJiBjaGlsZCAmJiBjaGVja1NpZGVTZXRCYXNlKGNoaWxkKSkpIHJldHVybiBbbnVsbCwgbW1sXTtcbiAgICBtbWwuY2hpbGROb2Rlcy5zcGxpY2UoMCwgMSk7IC8vIHJlbW92ZSBmaXJzdCBjaGlsZFxuICAgIHJldHVybiBbY2hpbGQsIG1tbF07XG59XG5cbi8qKlxuICogVXRpbGl0eSBmb3IgY2hlY2tpbmcgaWYgYSBcXHNpZGVzZXQgYXJndW1lbnQgaGFzIHNjcmlwdHMgd2l0aCBhbiBlbXB0eSBiYXNlLlxuICogQHBhcmFtIHtNbWxOb2RlfSBtbWwgVGhlIG5vZGUgdG8gY2hlY2suXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBiYXNlIGlzIG5vdCBhbmQgZW1wdHkgbWkgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gY2hlY2tTaWRlU2V0QmFzZShtbWw6IE1tbE5vZGUpOiBib29sZWFuIHtcbiAgY29uc3QgYmFzZSA9IG1tbC5jaGlsZE5vZGVzWzBdO1xuICByZXR1cm4gYmFzZSAmJiBiYXNlLmlzS2luZCgnbWknKSAmJiAoYmFzZSBhcyBBYnN0cmFjdE1tbFRva2VuTm9kZSkuZ2V0VGV4dCgpID09PSAnJztcbn1cblxuXG4vKipcbiAqIEhhbmRsZSBleHRyYSBsZXR0ZXJzIGluIFxcb3BlcmF0b3JuYW1lICgtIGFuZCAqKSwgZGVmYXVsdCB0byBub3JtYWwgb3RoZXJ3aXNlLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gYyBUaGUgbGV0dGVyIGJlaW5nIGNoZWNrZWRcbiAqL1xuQW1zTWV0aG9kcy5vcGVyYXRvckxldHRlciA9IGZ1bmN0aW9uIChwYXJzZXI6IFRleFBhcnNlciwgYzogc3RyaW5nKSB7XG4gIHJldHVybiBwYXJzZXIuc3RhY2suZW52Lm9wZXJhdG9yTGV0dGVycyA/IFBhcnNlTWV0aG9kcy52YXJpYWJsZShwYXJzZXIsIGMpIDogZmFsc2U7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIG11bHRpIGludGVncmFsIHNpZ25zLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBpbnRlZ3JhbCBUaGUgYWN0dWFsIGludGVncmFsIHNpZ24uXG4gKi9cbkFtc01ldGhvZHMuTXVsdGlJbnRlZ3JhbCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ3JhbDogc3RyaW5nKSB7XG4gIGxldCBuZXh0ID0gcGFyc2VyLkdldE5leHQoKTtcbiAgaWYgKG5leHQgPT09ICdcXFxcJykge1xuICAgIC8vIEB0ZXN0IE11bHRpSW50IHdpdGggQ29tbWFuZFxuICAgIGxldCBpID0gcGFyc2VyLmk7XG4gICAgbmV4dCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBwYXJzZXIuaSA9IGk7XG4gICAgaWYgKG5leHQgPT09ICdcXFxcbGltaXRzJykge1xuICAgICAgaWYgKG5hbWUgPT09ICdcXFxcaWRvdHNpbnQnKSB7XG4gICAgICAgLy8gQHRlc3QgTXVsdGlJbnQgd2l0aCBMaW1pdHNcbiAgICAgICAgaW50ZWdyYWwgPSAnXFxcXCFcXFxcIVxcXFxtYXRob3B7XFxcXCxcXFxcLCcgKyBpbnRlZ3JhbCArICd9JztcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICAvLyBRdWVzdGlvbjogVGhpcyBpcyBub3QgdXNlZCBhbnltb3JlP1xuICAgICAgICBpbnRlZ3JhbCA9ICdcXFxcIVxcXFwhXFxcXCFcXFxcbWF0aG9we1xcXFwsXFxcXCxcXFxcLCcgKyBpbnRlZ3JhbCArICd9JztcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLy8gQHRlc3QgTXVsdGlJbnQsIE11bHRpSW50IGluIENvbnRleHRcbiAgcGFyc2VyLnN0cmluZyA9IGludGVncmFsICsgJyAnICsgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSk7XG4gIHBhcnNlci5pID0gMDtcbn07XG5cblxuLyoqXG4gKiAgSGFuZGxlIHN0cmV0Y2hhYmxlIGFycm93cy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge251bWJlcn0gY2hyIFRoZSBhcnJvdyBjaGFyYWN0ZXIgaW4gaGV4IGNvZGUuXG4gKiBAcGFyYW0ge251bWJlcn0gbCBMZWZ0IHdpZHRoLlxuICogQHBhcmFtIHtudW1iZXJ9IHIgUmlnaHQgd2lkdGguXG4gKi9cbkFtc01ldGhvZHMueEFycm93ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hyOiBudW1iZXIsIGw6IG51bWJlciwgcjogbnVtYmVyKSB7XG4gIGxldCBkZWYgPSB7d2lkdGg6ICcrJyArIFBhcnNlVXRpbC5FbSgobCArIHIpIC8gMTgpLCBsc3BhY2U6IFBhcnNlVXRpbC5FbShsIC8gMTgpfTtcbiAgbGV0IGJvdCA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lKTtcbiAgbGV0IGZpcnN0ID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBsZXQgZHN0cnV0ID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3BhY2UnLCBbXSwge2RlcHRoOiAnLjI1ZW0nfSk7XG4gIGxldCBhcnJvdyA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJyxcbiAgICAnbW8nLCB7c3RyZXRjaHk6IHRydWUsIHRleENsYXNzOiBURVhDTEFTUy5SRUx9LCBTdHJpbmcuZnJvbUNvZGVQb2ludChjaHIpKTtcbiAgYXJyb3cgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zdHlsZScsIFthcnJvd10sIHtzY3JpcHRsZXZlbDogMH0pO1xuICBsZXQgbW1sID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdW5kZXJvdmVyJywgW2Fycm93XSkgYXMgTW1sTXVuZGVyb3ZlcjtcbiAgbGV0IG1wYWRkZWQgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbZmlyc3QsIGRzdHJ1dF0sIGRlZik7XG4gIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtcGFkZGVkLCAndm9mZnNldCcsICctLjJlbScpO1xuICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobXBhZGRlZCwgJ2hlaWdodCcsICctLjJlbScpO1xuICBOb2RlVXRpbC5zZXRDaGlsZChtbWwsIG1tbC5vdmVyLCBtcGFkZGVkKTtcbiAgaWYgKGJvdCkge1xuICAgIC8vIEB0ZXN0IEFib3ZlIEJlbG93IExlZnQgQXJyb3csIEFib3ZlIEJlbG93IFJpZ2h0IEFycm93XG4gICAgbGV0IGJvdHRvbSA9IG5ldyBUZXhQYXJzZXIoYm90LCBwYXJzZXIuc3RhY2suZW52LCBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCk7XG4gICAgbGV0IGJzdHJ1dCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXNwYWNlJywgW10sIHtoZWlnaHQ6ICcuNzVlbSd9KTtcbiAgICBtcGFkZGVkID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW2JvdHRvbSwgYnN0cnV0XSwgZGVmKTtcbiAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobXBhZGRlZCwgJ3ZvZmZzZXQnLCAnLjE1ZW0nKTtcbiAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobXBhZGRlZCwgJ2RlcHRoJywgJy0uMTVlbScpO1xuICAgIE5vZGVVdGlsLnNldENoaWxkKG1tbCwgbW1sLnVuZGVyLCBtcGFkZGVkKTtcbiAgfVxuICAvLyBAdGVzdCBBYm92ZSBMZWZ0IEFycm93LCBBYm92ZSBSaWdodCBBcnJvdywgQWJvdmUgTGVmdCBBcnJvdyBpbiBDb250ZXh0LFxuICAvLyAgICAgICBBYm92ZSBSaWdodCBBcnJvdyBpbiBDb250ZXh0XG4gIE5vZGVVdGlsLnNldFByb3BlcnR5KG1tbCwgJ3N1YnN1cE9LJywgdHJ1ZSk7XG4gIHBhcnNlci5QdXNoKG1tbCk7XG59O1xuXG5cbi8qKlxuICogUmVjb3JkIHByZXNlbmNlIG9mIFxcc2hvdmVsZWZ0IGFuZCBcXHNob3ZlcmlnaHRcbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gc2hvdmUgVGhlIHNob3ZlIHZhbHVlLlxuICovXG5BbXNNZXRob2RzLkhhbmRsZVNob3ZlID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdmU6IHN0cmluZykge1xuICBsZXQgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICAvLyBAdGVzdCBTaG92ZSAoTGVmdHxSaWdodCkgKFRvcHxNaWRkbGV8Qm90dG9tKVxuICBpZiAodG9wLmtpbmQgIT09ICdtdWx0bGluZScpIHtcbiAgICAvLyBAdGVzdCBTaG92ZSBFcnJvciBFbnZpcm9ubWVudFxuICAgIHRocm93IG5ldyBUZXhFcnJvcignQ29tbWFuZE9ubHlBbGxvd2VkSW5FbnYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJyUxIG9ubHkgYWxsb3dlZCBpbiAlMiBlbnZpcm9ubWVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY3VycmVudENTLCAnbXVsdGxpbmUnKTtcbiAgfVxuICBpZiAodG9wLlNpemUoKSkge1xuICAgIC8vIEB0ZXN0IFNob3ZlIEVycm9yIChUb3B8TWlkZGxlfEJvdHRvbSlcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0NvbW1hbmRBdFRoZUJlZ2luaW5nT2ZMaW5lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICclMSBtdXN0IGNvbWUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZScsIHBhcnNlci5jdXJyZW50Q1MpO1xuICB9XG4gIHRvcC5zZXRQcm9wZXJ0eSgnc2hvdmUnLCBzaG92ZSk7XG59O1xuXG5cbi8qKlxuICogSGFuZGxlIFxcY2ZyYWNcbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkFtc01ldGhvZHMuQ0ZyYWMgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBsciAgPSBQYXJzZVV0aWwudHJpbVNwYWNlcyhwYXJzZXIuR2V0QnJhY2tldHMobmFtZSwgJycpKTtcbiAgbGV0IG51bSA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgbGV0IGRlbiA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgbGV0IGxyTWFwOiB7W2tleTogc3RyaW5nXTogc3RyaW5nfSA9IHtcbiAgICBsOiBUZXhDb25zdGFudC5BbGlnbi5MRUZULCByOiBUZXhDb25zdGFudC5BbGlnbi5SSUdIVCwgJyc6ICcnfTtcbiAgbGV0IG51bU5vZGUgPSBuZXcgVGV4UGFyc2VyKCdcXFxcc3RydXRcXFxcdGV4dHN0eWxleycgKyBudW0gKyAnfScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuc3RhY2suZW52LCBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCk7XG4gIGxldCBkZW5Ob2RlID0gbmV3IFRleFBhcnNlcignXFxcXHN0cnV0XFxcXHRleHRzdHlsZXsnICsgZGVuICsgJ30nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLnN0YWNrLmVudiwgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpO1xuICBsZXQgZnJhYyA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbWZyYWMnLCBbbnVtTm9kZSwgZGVuTm9kZV0pO1xuICBsciA9IGxyTWFwW2xyXTtcbiAgaWYgKGxyID09IG51bGwpIHtcbiAgICAvLyBAdGVzdCBDZW50ZXIgRnJhY3Rpb24gRXJyb3JcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0lsbGVnYWxBbGlnbicsICdJbGxlZ2FsIGFsaWdubWVudCBzcGVjaWZpZWQgaW4gJTEnLCBwYXJzZXIuY3VycmVudENTKTtcbiAgfVxuICBpZiAobHIpIHtcbiAgICAvLyBAdGVzdCBSaWdodCBGcmFjdGlvbiwgTGVmdCBGcmFjdGlvblxuICAgIE5vZGVVdGlsLnNldFByb3BlcnRpZXMoZnJhYywge251bWFsaWduOiBsciwgZGVub21hbGlnbjogbHJ9KTtcbiAgfVxuICAvLyBAdGVzdCBDZW50ZXIgRnJhY3Rpb25cbiAgcGFyc2VyLlB1c2goZnJhYyk7XG59O1xuXG5cbi8qKlxuICogSW1wbGVtZW50IEFNUyBnZW5lcmFsaXplZCBmcmFjdGlvbi5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gbGVmdCBMZWZ0IGRlbGltaXRlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSByaWdodCBSaWdodCBkZWxpbWl0ZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGhpY2sgTGluZSB0aGlja25lc3MuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGUgTWF0aCBzdHlsZS5cbiAqL1xuQW1zTWV0aG9kcy5HZW5mcmFjID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZywgbGVmdDogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IHN0cmluZywgdGhpY2s6IHN0cmluZywgc3R5bGU6IHN0cmluZykge1xuICBpZiAobGVmdCAgPT0gbnVsbCkgeyAvLyBAdGVzdCBHZW5mcmFjXG4gICAgbGVmdCA9IHBhcnNlci5HZXREZWxpbWl0ZXJBcmcobmFtZSk7XG4gIH1cbiAgaWYgKHJpZ2h0ID09IG51bGwpIHsgLy8gQHRlc3QgR2VuZnJhY1xuICAgIHJpZ2h0ID0gcGFyc2VyLkdldERlbGltaXRlckFyZyhuYW1lKTtcbiAgfVxuICBpZiAodGhpY2sgPT0gbnVsbCkgeyAvLyBAdGVzdCBHZW5mcmFjXG4gICAgdGhpY2sgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIH1cbiAgaWYgKHN0eWxlID09IG51bGwpIHsgLy8gQHRlc3QgR2VuZnJhY1xuICAgIHN0eWxlID0gUGFyc2VVdGlsLnRyaW1TcGFjZXMocGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpKTtcbiAgfVxuICBsZXQgbnVtID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBsZXQgZGVuID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBsZXQgZnJhYyA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbWZyYWMnLCBbbnVtLCBkZW5dKTtcbiAgaWYgKHRoaWNrICE9PSAnJykge1xuICAgIC8vIEB0ZXN0IE5vcm1hbCBCaW5vbWlhbCwgVGV4dCBCaW5vbWlhbCwgRGlzcGxheSBCaW5vbWlhbFxuICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShmcmFjLCAnbGluZXRoaWNrbmVzcycsIHRoaWNrKTtcbiAgfVxuICBpZiAobGVmdCB8fCByaWdodCkge1xuICAgIC8vIEB0ZXN0IE5vcm1hbCBCaW5vbWlhbCwgVGV4dCBCaW5vbWlhbCwgRGlzcGxheSBCaW5vbWlhbFxuICAgIE5vZGVVdGlsLnNldFByb3BlcnR5KGZyYWMsICd3aXRoRGVsaW1zJywgdHJ1ZSk7XG4gICAgZnJhYyA9IFBhcnNlVXRpbC5maXhlZEZlbmNlKHBhcnNlci5jb25maWd1cmF0aW9uLCBsZWZ0LCBmcmFjLCByaWdodCk7XG4gIH1cbiAgaWYgKHN0eWxlICE9PSAnJykge1xuICAgIGxldCBzdHlsZURpZ2l0ID0gcGFyc2VJbnQoc3R5bGUsIDEwKTtcbiAgICBsZXQgc3R5bGVBbHBoYSA9IFsnRCcsICdUJywgJ1MnLCAnU1MnXVtzdHlsZURpZ2l0XTtcbiAgICBpZiAoc3R5bGVBbHBoYSA9PSBudWxsKSB7XG4gICAgICAvLyBAdGVzdCBHZW5mcmFjIEVycm9yXG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0JhZE1hdGhTdHlsZUZvcicsICdCYWQgbWF0aCBzdHlsZSBmb3IgJTEnLCBwYXJzZXIuY3VycmVudENTKTtcbiAgICB9XG4gICAgZnJhYyA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXN0eWxlJywgW2ZyYWNdKTtcbiAgICBpZiAoc3R5bGVBbHBoYSA9PT0gJ0QnKSB7XG4gICAgICAvLyBAdGVzdCBEaXNwbGF5IEZyYWN0aW9uLCBEaXNwbGF5IFN1YiBGcmFjdGlvbiwgRGlzcGxheSBCaW5vbWlhbCxcbiAgICAgIC8vICAgICAgIERpc3BsYXkgU3ViIEJpbm9taWFsXG4gICAgICBOb2RlVXRpbC5zZXRQcm9wZXJ0aWVzKGZyYWMsIHtkaXNwbGF5c3R5bGU6IHRydWUsIHNjcmlwdGxldmVsOiAwfSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gQHRlc3QgVGV4dCBGcmFjdGlvbiwgVGV4dCBTdWIgRnJhY3Rpb24sIFRleHQgQmlub21pYWwsXG4gICAgICAvLyAgICAgICBUZXh0IFN1YiBCaW5vbWlhbFxuICAgICAgTm9kZVV0aWwuc2V0UHJvcGVydGllcyhmcmFjLCB7ZGlzcGxheXN0eWxlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0bGV2ZWw6IHN0eWxlRGlnaXQgLSAxfSk7XG4gICAgfVxuICB9XG4gIC8vIEB0ZXN0IFRleHQgRnJhY3Rpb24sIE5vcm1hbCBTdWIgQmlub21pYWwsIE5vcm1hbCBCaW5vbWlhbFxuICBwYXJzZXIuUHVzaChmcmFjKTtcbn07XG5cblxuXG4vKipcbiAqIEFkZCB0aGUgdGFnIHRvIHRoZSBlbnZpcm9ubWVudCAodG8gYmUgYWRkZWQgdG8gdGhlIHRhYmxlIHJvdyBsYXRlcikuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5BbXNNZXRob2RzLkhhbmRsZVRhZyA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgaWYgKCFwYXJzZXIudGFncy5jdXJyZW50VGFnLnRhZ2dhYmxlICYmIHBhcnNlci50YWdzLmVudikge1xuICAgIC8vIEB0ZXN0IElsbGVnYWwgVGFnIEVycm9yXG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdDb21tYW5kTm90QWxsb3dlZEluRW52JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICclMSBub3QgYWxsb3dlZCBpbiAlMiBlbnZpcm9ubWVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY3VycmVudENTLCBwYXJzZXIudGFncy5lbnYpO1xuICB9XG4gIGlmIChwYXJzZXIudGFncy5jdXJyZW50VGFnLnRhZykge1xuICAgIC8vIEB0ZXN0IERvdWJsZSBUYWcgRXJyb3JcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ011bHRpcGxlQ29tbWFuZCcsICdNdWx0aXBsZSAlMScsIHBhcnNlci5jdXJyZW50Q1MpO1xuICB9XG4gIGxldCBzdGFyID0gcGFyc2VyLkdldFN0YXIoKTtcbiAgbGV0IHRhZ0lkID0gUGFyc2VVdGlsLnRyaW1TcGFjZXMocGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpKTtcbiAgcGFyc2VyLnRhZ3MudGFnKHRhZ0lkLCBzdGFyKTtcbn07XG5cblxuQW1zTWV0aG9kcy5IYW5kbGVOb1RhZyA9IEJhc2VNZXRob2RzLkhhbmRsZU5vVGFnO1xuXG5BbXNNZXRob2RzLkhhbmRsZVJlZiA9IEJhc2VNZXRob2RzLkhhbmRsZVJlZjtcblxuQW1zTWV0aG9kcy5NYWNybyA9IEJhc2VNZXRob2RzLk1hY3JvO1xuXG5BbXNNZXRob2RzLkFjY2VudCA9IEJhc2VNZXRob2RzLkFjY2VudDtcblxuQW1zTWV0aG9kcy5UaWxkZSA9IEJhc2VNZXRob2RzLlRpbGRlO1xuXG5BbXNNZXRob2RzLkFycmF5ID0gQmFzZU1ldGhvZHMuQXJyYXk7XG5cbkFtc01ldGhvZHMuU3BhY2VyID0gQmFzZU1ldGhvZHMuU3BhY2VyO1xuXG5BbXNNZXRob2RzLk5hbWVkT3AgPSBCYXNlTWV0aG9kcy5OYW1lZE9wO1xuXG5BbXNNZXRob2RzLkVxbkFycmF5ID0gQmFzZU1ldGhvZHMuRXFuQXJyYXk7XG5cbkFtc01ldGhvZHMuRXF1YXRpb24gPSBCYXNlTWV0aG9kcy5FcXVhdGlvbjtcbiIsICJcbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgTWFwcGluZ3MgZm9yIFRlWCBwYXJzaW5nIG9mIHRoZSBBTVMgbWF0aCBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7QW1zTWV0aG9kc30gZnJvbSAnLi9BbXNNZXRob2RzLmpzJztcbmltcG9ydCAqICBhcyBzbSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IHtUZXhDb25zdGFudH0gZnJvbSAnLi4vVGV4Q29uc3RhbnRzLmpzJztcbmltcG9ydCBQYXJzZU1ldGhvZHMgZnJvbSAnLi4vUGFyc2VNZXRob2RzLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcbmltcG9ydCB7VEVYQ0xBU1N9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7TUFUSFNQQUNFfSBmcm9tICcuLi8uLi8uLi91dGlsL2xlbmd0aHMuanMnO1xuXG5cbi8qKlxuICogT3BlcmF0b3JzIGZyb20gdGhlIEFNUyBNYXRoIHBhY2thZ2UuXG4gKi9cbm5ldyBzbS5DaGFyYWN0ZXJNYXAoJ0FNU21hdGgtbWF0aGNoYXIwbW8nLCBQYXJzZU1ldGhvZHMubWF0aGNoYXIwbW8sIHtcbiAgaWlpaW50OiAgICAgWydcXHUyQTBDJywge3RleENsYXNzOiBURVhDTEFTUy5PUH1dXG59KTtcblxuLyoqXG4gKiBFeHRyYSBjaGFyYWN0ZXJzIHRoYXQgYXJlIGxldHRlcnMgaW4gXFxvcGVyYXRvcm5hbWVcbiAqL1xubmV3IHNtLlJlZ0V4cE1hcCgnQU1TbWF0aC1vcGVyYXRvckxldHRlcicsIEFtc01ldGhvZHMub3BlcmF0b3JMZXR0ZXIsIC9bLSpdL2kpO1xuXG4vKipcbiAqIE1hY3JvcyBmcm9tIHRoZSBBTVMgTWF0aCBwYWNrYWdlLlxuICovXG5uZXcgc20uQ29tbWFuZE1hcCgnQU1TbWF0aC1tYWNyb3MnLCB7XG4gIG1hdGhyaW5nOiAgIFsnQWNjZW50JywgJzAyREEnXSwgIC8vIG9yIDB4MzBBXG4gIG5vYnJlYWtzcGFjZTogJ1RpbGRlJyxcbiAgbmVnbWVkc3BhY2U6ICAgIFsnU3BhY2VyJywgTUFUSFNQQUNFLm5lZ2F0aXZlbWVkaXVtbWF0aHNwYWNlXSxcbiAgbmVndGhpY2tzcGFjZTogIFsnU3BhY2VyJywgTUFUSFNQQUNFLm5lZ2F0aXZldGhpY2ttYXRoc3BhY2VdLFxuXG4gIGlkb3RzaW50OiAgIFsnTXVsdGlJbnRlZ3JhbCcsICdcXFxcaW50XFxcXGNkb3RzXFxcXGludCddLFxuXG4gIGRkZG90OiAgICAgIFsnQWNjZW50JywgJzIwREInXSxcbiAgZGRkZG90OiAgICAgWydBY2NlbnQnLCAnMjBEQyddLFxuXG4gIHNpZGVzZXQ6ICAgICAnU2lkZVNldCcsXG5cbiAgYm94ZWQ6ICAgICAgWydNYWNybycsICdcXFxcZmJveHskXFxcXGRpc3BsYXlzdHlsZXsjMX0kfScsIDFdLFxuXG4gIHRhZzogICAgICAgICAnSGFuZGxlVGFnJyxcbiAgbm90YWc6ICAgICAgICdIYW5kbGVOb1RhZycsXG4gIGVxcmVmOiAgICAgICBbJ0hhbmRsZVJlZicsIHRydWVdLFxuXG4gIHN1YnN0YWNrOiAgIFsnTWFjcm8nLCAnXFxcXGJlZ2lue3N1YmFycmF5fXtjfSMxXFxcXGVuZHtzdWJhcnJheX0nLCAxXSxcblxuICBpbmpsaW06ICAgICBbJ05hbWVkT3AnLCAnaW5qJnRoaW5zcDtsaW0nXSxcbiAgcHJvamxpbTogICAgWydOYW1lZE9wJywgJ3Byb2omdGhpbnNwO2xpbSddLFxuICB2YXJsaW1pbmY6ICBbJ01hY3JvJywgJ1xcXFxtYXRob3B7XFxcXHVuZGVybGluZXtcXFxcbW1sVG9rZW57bWl9e2xpbX19fSddLFxuICB2YXJsaW1zdXA6ICBbJ01hY3JvJywgJ1xcXFxtYXRob3B7XFxcXG92ZXJsaW5le1xcXFxtbWxUb2tlbnttaX17bGltfX19J10sXG4gIHZhcmluamxpbTogIFsnTWFjcm8nLCAnXFxcXG1hdGhvcHtcXFxcdW5kZXJyaWdodGFycm93e1xcXFxtbWxUb2tlbnttaX17bGltfX19J10sXG4gIHZhcnByb2psaW06IFsnTWFjcm8nLCAnXFxcXG1hdGhvcHtcXFxcdW5kZXJsZWZ0YXJyb3d7XFxcXG1tbFRva2Vue21pfXtsaW19fX0nXSxcblxuICBEZWNsYXJlTWF0aE9wZXJhdG9yOiAnSGFuZGxlRGVjbGFyZU9wJyxcbiAgb3BlcmF0b3JuYW1lOiAgICAgICAgJ0hhbmRsZU9wZXJhdG9yTmFtZScsXG5cbiAgZ2VuZnJhYzogICAgICdHZW5mcmFjJyxcbiAgZnJhYzogICAgICAgWydHZW5mcmFjJywgJycsICcnLCAnJywgJyddLFxuICB0ZnJhYzogICAgICBbJ0dlbmZyYWMnLCAnJywgJycsICcnLCAnMSddLFxuICBkZnJhYzogICAgICBbJ0dlbmZyYWMnLCAnJywgJycsICcnLCAnMCddLFxuICBiaW5vbTogICAgICBbJ0dlbmZyYWMnLCAnKCcsICcpJywgJzAnLCAnJ10sXG4gIHRiaW5vbTogICAgIFsnR2VuZnJhYycsICcoJywgJyknLCAnMCcsICcxJ10sXG4gIGRiaW5vbTogICAgIFsnR2VuZnJhYycsICcoJywgJyknLCAnMCcsICcwJ10sXG5cbiAgY2ZyYWM6ICAgICAgICdDRnJhYycsXG5cbiAgc2hvdmVsZWZ0OiAgWydIYW5kbGVTaG92ZScsIFRleENvbnN0YW50LkFsaWduLkxFRlRdLFxuICBzaG92ZXJpZ2h0OiBbJ0hhbmRsZVNob3ZlJywgVGV4Q29uc3RhbnQuQWxpZ24uUklHSFRdLFxuXG4gIHhyaWdodGFycm93OiBbJ3hBcnJvdycsIDB4MjE5MiwgNSwgMTBdLFxuICB4bGVmdGFycm93OiAgWyd4QXJyb3cnLCAweDIxOTAsIDEwLCA1XVxufSwgQW1zTWV0aG9kcyk7XG5cblxuLyoqXG4gKiBFbnZpcm9ubWVudHMgZnJvbSB0aGUgQU1TIE1hdGggcGFja2FnZS5cbiAqL1xubmV3IHNtLkVudmlyb25tZW50TWFwKCdBTVNtYXRoLWVudmlyb25tZW50JywgUGFyc2VNZXRob2RzLmVudmlyb25tZW50LCB7XG4gICdlcXVhdGlvbionOiAgIFsnRXF1YXRpb24nLCBudWxsLCBmYWxzZV0sXG4gICdlcW5hcnJheSonOiAgIFsnRXFuQXJyYXknLCBudWxsLCBmYWxzZSwgdHJ1ZSwgJ3JjbCcsXG4gICAgICAgICAgICAgICAgICBQYXJzZVV0aWwuY29scygwLCBNQVRIU1BBQ0UudGhpY2ttYXRoc3BhY2UpLCAnLjVlbSddLFxuICBhbGlnbjogICAgICAgICBbJ0VxbkFycmF5JywgbnVsbCwgdHJ1ZSwgdHJ1ZSwgICdybCcsICBQYXJzZVV0aWwuY29scygwLCAyKV0sXG4gICdhbGlnbionOiAgICAgIFsnRXFuQXJyYXknLCBudWxsLCBmYWxzZSwgdHJ1ZSwgJ3JsJywgIFBhcnNlVXRpbC5jb2xzKDAsIDIpXSxcbiAgbXVsdGxpbmU6ICAgICAgWydNdWx0bGluZScsIG51bGwsIHRydWVdLFxuICAnbXVsdGxpbmUqJzogICBbJ011bHRsaW5lJywgbnVsbCwgZmFsc2VdLFxuICBzcGxpdDogICAgICAgICBbJ0VxbkFycmF5JywgbnVsbCwgZmFsc2UsIGZhbHNlLCAncmwnLCBQYXJzZVV0aWwuY29scygwKV0sXG4gIGdhdGhlcjogICAgICAgIFsnRXFuQXJyYXknLCBudWxsLCB0cnVlLCB0cnVlLCAgJ2MnXSxcbiAgJ2dhdGhlcionOiAgICAgWydFcW5BcnJheScsIG51bGwsIGZhbHNlLCB0cnVlLCAnYyddLFxuXG4gIGFsaWduYXQ6ICAgICAgIFsnQWxpZ25BdCcsIG51bGwsIHRydWUsIHRydWVdLFxuICAnYWxpZ25hdConOiAgICBbJ0FsaWduQXQnLCBudWxsLCBmYWxzZSwgdHJ1ZV0sXG4gIGFsaWduZWRhdDogICAgIFsnQWxpZ25BdCcsIG51bGwsIGZhbHNlLCBmYWxzZV0sXG5cbiAgYWxpZ25lZDogICAgICAgWydBbXNFcW5BcnJheScsIG51bGwsIG51bGwsIG51bGwsICdybCcsIFBhcnNlVXRpbC5jb2xzKDAsIDIpLCAnLjVlbScsICdEJ10sXG4gIGdhdGhlcmVkOiAgICAgIFsnQW1zRXFuQXJyYXknLCBudWxsLCBudWxsLCBudWxsLCAnYycsIG51bGwsICcuNWVtJywgJ0QnXSxcblxuICB4YWxpZ25hdDogICAgICBbJ1hhbGlnbkF0JywgbnVsbCwgdHJ1ZSwgdHJ1ZV0sXG4gICd4YWxpZ25hdConOiAgIFsnWGFsaWduQXQnLCBudWxsLCBmYWxzZSwgdHJ1ZV0sXG4gIHh4YWxpZ25hdDogICAgIFsnWGFsaWduQXQnLCBudWxsLCBmYWxzZSwgZmFsc2VdLFxuICBmbGFsaWduOiAgICAgICBbJ0ZsYWxpZ25BcnJheScsIG51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCAncmxjJywgJ2F1dG8gYXV0byBmaXQnXSxcbiAgJ2ZsYWxpZ24qJzogICAgWydGbGFsaWduQXJyYXknLCBudWxsLCBmYWxzZSwgZmFsc2UsIHRydWUsICdybGMnLCAnYXV0byBhdXRvIGZpdCddLFxuXG4gIHN1YmFycmF5OiAgICAgIFsnQXJyYXknLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBQYXJzZVV0aWwuY29scygwKSwgJzAuMWVtJywgJ1MnLCAxXSxcbiAgc21hbGxtYXRyaXg6ICAgWydBcnJheScsIG51bGwsIG51bGwsIG51bGwsICdjJywgUGFyc2VVdGlsLmNvbHMoMSAvIDMpLFxuICAgICAgICAgICAgICAgICAgJy4yZW0nLCAnUycsIDFdLFxuICBtYXRyaXg6ICAgICAgIFsnQXJyYXknLCBudWxsLCBudWxsLCBudWxsLCAnYyddLFxuICBwbWF0cml4OiAgICAgIFsnQXJyYXknLCBudWxsLCAnKCcsICcpJywgJ2MnXSxcbiAgYm1hdHJpeDogICAgICBbJ0FycmF5JywgbnVsbCwgJ1snLCAnXScsICdjJ10sXG4gIEJtYXRyaXg6ICAgICAgWydBcnJheScsIG51bGwsICdcXFxceycsICdcXFxcfScsICdjJ10sXG4gIHZtYXRyaXg6ICAgICAgWydBcnJheScsIG51bGwsICdcXFxcdmVydCcsICdcXFxcdmVydCcsICdjJ10sXG4gIFZtYXRyaXg6ICAgICAgWydBcnJheScsIG51bGwsICdcXFxcVmVydCcsICdcXFxcVmVydCcsICdjJ10sXG4gIGNhc2VzOiAgICAgICAgWydBcnJheScsIG51bGwsICdcXFxceycsICcuJywgJ2xsJywgbnVsbCwgJy4yZW0nLCAnVCddXG59LCBBbXNNZXRob2RzKTtcblxuXG4vKipcbiAqIERlbGltaXRlcnMgZnJvbSB0aGUgQU1TIE1hdGggcGFja2FnZS5cbiAqL1xubmV3IHNtLkRlbGltaXRlck1hcCgnQU1TbWF0aC1kZWxpbWl0ZXInLCBQYXJzZU1ldGhvZHMuZGVsaW1pdGVyLCB7XG4gICdcXFxcbHZlcnQnOiAgICAgWydcXHUwMDdDJywge3RleENsYXNzOiBURVhDTEFTUy5PUEVOfV0sXG4gICdcXFxccnZlcnQnOiAgICAgWydcXHUwMDdDJywge3RleENsYXNzOiBURVhDTEFTUy5DTE9TRX1dLFxuICAnXFxcXGxWZXJ0JzogICAgIFsnXFx1MjAxNicsIHt0ZXhDbGFzczogVEVYQ0xBU1MuT1BFTn1dLFxuICAnXFxcXHJWZXJ0JzogICAgIFsnXFx1MjAxNicsIHt0ZXhDbGFzczogVEVYQ0xBU1MuQ0xPU0V9XVxufSk7XG5cblxuLyoqXG4gKiBJZGVudGlmaWVycyBmcm9tIHRoZSBBTVMgU3ltYm9scyBwYWNrYWdlLlxuICovXG5uZXcgc20uQ2hhcmFjdGVyTWFwKCdBTVNzeW1ib2xzLW1hdGhjaGFyMG1pJywgUGFyc2VNZXRob2RzLm1hdGhjaGFyMG1pLCB7XG4gIC8vIExvd2VyY2FzZSBHcmVlayBsZXR0ZXJzXG4gIGRpZ2FtbWE6ICAgICAgICAgICAgICAgICdcXHUwM0REJyxcbiAgdmFya2FwcGE6ICAgICAgICAgICAgICAgJ1xcdTAzRjAnLFxuXG4gIC8vIFVwcGVyY2FzZSBHcmVlayBsZXR0ZXJzXG4gIHZhckdhbW1hOiAgICAgICAgICAgICAgIFsnXFx1MDM5MycsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5JVEFMSUN9XSxcbiAgdmFyRGVsdGE6ICAgICAgICAgICAgICAgWydcXHUwMzk0Jywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50LklUQUxJQ31dLFxuICB2YXJUaGV0YTogICAgICAgICAgICAgICBbJ1xcdTAzOTgnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuSVRBTElDfV0sXG4gIHZhckxhbWJkYTogICAgICAgICAgICAgIFsnXFx1MDM5QicsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5JVEFMSUN9XSxcbiAgdmFyWGk6ICAgICAgICAgICAgICAgICAgWydcXHUwMzlFJywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50LklUQUxJQ31dLFxuICB2YXJQaTogICAgICAgICAgICAgICAgICBbJ1xcdTAzQTAnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuSVRBTElDfV0sXG4gIHZhclNpZ21hOiAgICAgICAgICAgICAgIFsnXFx1MDNBMycsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5JVEFMSUN9XSxcbiAgdmFyVXBzaWxvbjogICAgICAgICAgICAgWydcXHUwM0E1Jywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50LklUQUxJQ31dLFxuICB2YXJQaGk6ICAgICAgICAgICAgICAgICBbJ1xcdTAzQTYnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuSVRBTElDfV0sXG4gIHZhclBzaTogICAgICAgICAgICAgICAgIFsnXFx1MDNBOCcsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5JVEFMSUN9XSxcbiAgdmFyT21lZ2E6ICAgICAgICAgICAgICAgWydcXHUwM0E5Jywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50LklUQUxJQ31dLFxuXG4gIC8vIEhlYnJldyBsZXR0ZXJzXG4gIGJldGg6ICAgICAgICAgICAgICAgICAgICdcXHUyMTM2JyxcbiAgZ2ltZWw6ICAgICAgICAgICAgICAgICAgJ1xcdTIxMzcnLFxuICBkYWxldGg6ICAgICAgICAgICAgICAgICAnXFx1MjEzOCcsXG5cbiAgLy8gTWlzY2VsbGFuZW91cyBzeW1ib2xzXG4gIC8vICAgIGhiYXI6ICAgICAgICAgICAgICAgICAgICdcXHUwMTI3JywgIC8vIGluIFRlWC9qYXguanNcbiAgYmFja3ByaW1lOiAgICAgICAgICAgICAgWydcXHUyMDM1Jywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIGhzbGFzaDogICAgICAgICAgICAgICAgICdcXHUyMTBGJyxcbiAgdmFybm90aGluZzogICAgICAgICAgICAgWydcXHUyMjA1Jywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIGJsYWNrdHJpYW5nbGU6ICAgICAgICAgICdcXHUyNUI0JyxcbiAgdHJpYW5nbGVkb3duOiAgICAgICAgICAgWydcXHUyNUJEJywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIGJsYWNrdHJpYW5nbGVkb3duOiAgICAgICdcXHUyNUJFJyxcbiAgc3F1YXJlOiAgICAgICAgICAgICAgICAgJ1xcdTI1RkInLFxuICBCb3g6ICAgICAgICAgICAgICAgICAgICAnXFx1MjVGQicsXG4gIGJsYWNrc3F1YXJlOiAgICAgICAgICAgICdcXHUyNUZDJyxcbiAgbG96ZW5nZTogICAgICAgICAgICAgICAgJ1xcdTI1Q0EnLFxuICBEaWFtb25kOiAgICAgICAgICAgICAgICAnXFx1MjVDQScsXG4gIGJsYWNrbG96ZW5nZTogICAgICAgICAgICdcXHUyOUVCJyxcbiAgY2lyY2xlZFM6ICAgICAgICAgICAgICAgWydcXHUyNEM4Jywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBiaWdzdGFyOiAgICAgICAgICAgICAgICAnXFx1MjYwNScsXG4gIC8vICAgIGFuZ2xlOiAgICAgICAgICAgICAgICAgICdcXHUyMjIwJywgIC8vIGluIFRlWC9qYXguanNcbiAgc3BoZXJpY2FsYW5nbGU6ICAgICAgICAgJ1xcdTIyMjInLFxuICBtZWFzdXJlZGFuZ2xlOiAgICAgICAgICAnXFx1MjIyMScsXG4gIG5leGlzdHM6ICAgICAgICAgICAgICAgICdcXHUyMjA0JyxcbiAgY29tcGxlbWVudDogICAgICAgICAgICAgJ1xcdTIyMDEnLFxuICBtaG86ICAgICAgICAgICAgICAgICAgICAnXFx1MjEyNycsXG4gIGV0aDogICAgICAgICAgICAgICAgICAgIFsnXFx1MDBGMCcsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5OT1JNQUx9XSxcbiAgRmludjogICAgICAgICAgICAgICAgICAgJ1xcdTIxMzInLFxuICBkaWFndXA6ICAgICAgICAgICAgICAgICAnXFx1MjU3MScsXG4gIEdhbWU6ICAgICAgICAgICAgICAgICAgICdcXHUyMTQxJyxcbiAgZGlhZ2Rvd246ICAgICAgICAgICAgICAgJ1xcdTI1NzInLFxuICBCYmJrOiAgICAgICAgICAgICAgICAgICBbJ1xcdTAwNkInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50LkRPVUJMRVNUUlVDS31dLFxuXG4gIHllbjogICAgICAgICAgICAgICAgICAgICdcXHUwMEE1JyxcbiAgY2lyY2xlZFI6ICAgICAgICAgICAgICAgJ1xcdTAwQUUnLFxuICBjaGVja21hcms6ICAgICAgICAgICAgICAnXFx1MjcxMycsXG4gIG1hbHRlc2U6ICAgICAgICAgICAgICAgICdcXHUyNzIwJ1xufSk7XG5cblxuLyoqXG4gKiBPcGVyYXRvcnMgZnJvbSB0aGUgQU1TIFN5bWJvbHMgcGFja2FnZS5cbiAqL1xubmV3IHNtLkNoYXJhY3Rlck1hcCgnQU1Tc3ltYm9scy1tYXRoY2hhcjBtbycsIFBhcnNlTWV0aG9kcy5tYXRoY2hhcjBtbywge1xuICAvLyBCaW5hcnkgb3BlcmF0b3JzXG4gIGRvdHBsdXM6ICAgICAgICAgICAgICAgICdcXHUyMjE0JyxcbiAgbHRpbWVzOiAgICAgICAgICAgICAgICAgJ1xcdTIyQzknLFxuICBzbWFsbHNldG1pbnVzOiAgICAgICAgICBbJ1xcdTIyMTYnLCB7dmFyaWFudEZvcm06IHRydWV9XSxcbiAgcnRpbWVzOiAgICAgICAgICAgICAgICAgJ1xcdTIyQ0EnLFxuICBDYXA6ICAgICAgICAgICAgICAgICAgICAnXFx1MjJEMicsXG4gIGRvdWJsZWNhcDogICAgICAgICAgICAgICdcXHUyMkQyJyxcbiAgbGVmdHRocmVldGltZXM6ICAgICAgICAgJ1xcdTIyQ0InLFxuICBDdXA6ICAgICAgICAgICAgICAgICAgICAnXFx1MjJEMycsXG4gIGRvdWJsZWN1cDogICAgICAgICAgICAgICdcXHUyMkQzJyxcbiAgcmlnaHR0aHJlZXRpbWVzOiAgICAgICAgJ1xcdTIyQ0MnLFxuICBiYXJ3ZWRnZTogICAgICAgICAgICAgICAnXFx1MjJCQycsXG4gIGN1cmx5d2VkZ2U6ICAgICAgICAgICAgICdcXHUyMkNGJyxcbiAgdmVlYmFyOiAgICAgICAgICAgICAgICAgJ1xcdTIyQkInLFxuICBjdXJseXZlZTogICAgICAgICAgICAgICAnXFx1MjJDRScsXG4gIGRvdWJsZWJhcndlZGdlOiAgICAgICAgICdcXHUyQTVFJyxcbiAgYm94bWludXM6ICAgICAgICAgICAgICAgJ1xcdTIyOUYnLFxuICBjaXJjbGVkZGFzaDogICAgICAgICAgICAnXFx1MjI5RCcsXG4gIGJveHRpbWVzOiAgICAgICAgICAgICAgICdcXHUyMkEwJyxcbiAgY2lyY2xlZGFzdDogICAgICAgICAgICAgJ1xcdTIyOUInLFxuICBib3hkb3Q6ICAgICAgICAgICAgICAgICAnXFx1MjJBMScsXG4gIGNpcmNsZWRjaXJjOiAgICAgICAgICAgICdcXHUyMjlBJyxcbiAgYm94cGx1czogICAgICAgICAgICAgICAgJ1xcdTIyOUUnLFxuICBjZW50ZXJkb3Q6ICAgICAgICAgICAgICBbJ1xcdTIyQzUnLCB7dmFyaWFudEZvcm06IHRydWV9XSxcbiAgZGl2aWRlb250aW1lczogICAgICAgICAgJ1xcdTIyQzcnLFxuICBpbnRlcmNhbDogICAgICAgICAgICAgICAnXFx1MjJCQScsXG5cbiAgLy8gQmluYXJ5IHJlbGF0aW9uc1xuICBsZXFxOiAgICAgICAgICAgICAgICAgICAnXFx1MjI2NicsXG4gIGdlcXE6ICAgICAgICAgICAgICAgICAgICdcXHUyMjY3JyxcbiAgbGVxc2xhbnQ6ICAgICAgICAgICAgICAgJ1xcdTJBN0QnLFxuICBnZXFzbGFudDogICAgICAgICAgICAgICAnXFx1MkE3RScsXG4gIGVxc2xhbnRsZXNzOiAgICAgICAgICAgICdcXHUyQTk1JyxcbiAgZXFzbGFudGd0cjogICAgICAgICAgICAgJ1xcdTJBOTYnLFxuICBsZXNzc2ltOiAgICAgICAgICAgICAgICAnXFx1MjI3MicsXG4gIGd0cnNpbTogICAgICAgICAgICAgICAgICdcXHUyMjczJyxcbiAgbGVzc2FwcHJveDogICAgICAgICAgICAgJ1xcdTJBODUnLFxuICBndHJhcHByb3g6ICAgICAgICAgICAgICAnXFx1MkE4NicsXG4gIGFwcHJveGVxOiAgICAgICAgICAgICAgICdcXHUyMjRBJyxcbiAgbGVzc2RvdDogICAgICAgICAgICAgICAgJ1xcdTIyRDYnLFxuICBndHJkb3Q6ICAgICAgICAgICAgICAgICAnXFx1MjJENycsXG4gIGxsbDogICAgICAgICAgICAgICAgICAgICdcXHUyMkQ4JyxcbiAgbGxsZXNzOiAgICAgICAgICAgICAgICAgJ1xcdTIyRDgnLFxuICBnZ2c6ICAgICAgICAgICAgICAgICAgICAnXFx1MjJEOScsXG4gIGdnZ3RyOiAgICAgICAgICAgICAgICAgICdcXHUyMkQ5JyxcbiAgbGVzc2d0cjogICAgICAgICAgICAgICAgJ1xcdTIyNzYnLFxuICBndHJsZXNzOiAgICAgICAgICAgICAgICAnXFx1MjI3NycsXG4gIGxlc3NlcWd0cjogICAgICAgICAgICAgICdcXHUyMkRBJyxcbiAgZ3RyZXFsZXNzOiAgICAgICAgICAgICAgJ1xcdTIyREInLFxuICBsZXNzZXFxZ3RyOiAgICAgICAgICAgICAnXFx1MkE4QicsXG4gIGd0cmVxcWxlc3M6ICAgICAgICAgICAgICdcXHUyQThDJyxcbiAgZG90ZXFkb3Q6ICAgICAgICAgICAgICAgJ1xcdTIyNTEnLFxuICBEb3RlcTogICAgICAgICAgICAgICAgICAnXFx1MjI1MScsXG4gIGVxY2lyYzogICAgICAgICAgICAgICAgICdcXHUyMjU2JyxcbiAgcmlzaW5nZG90c2VxOiAgICAgICAgICAgJ1xcdTIyNTMnLFxuICBjaXJjZXE6ICAgICAgICAgICAgICAgICAnXFx1MjI1NycsXG4gIGZhbGxpbmdkb3RzZXE6ICAgICAgICAgICdcXHUyMjUyJyxcbiAgdHJpYW5nbGVxOiAgICAgICAgICAgICAgJ1xcdTIyNUMnLFxuICBiYWNrc2ltOiAgICAgICAgICAgICAgICAnXFx1MjIzRCcsXG4gIHRoaWNrc2ltOiAgICAgICAgICAgICAgIFsnXFx1MjIzQycsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBiYWNrc2ltZXE6ICAgICAgICAgICAgICAnXFx1MjJDRCcsXG4gIHRoaWNrYXBwcm94OiAgICAgICAgICAgIFsnXFx1MjI0OCcsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBzdWJzZXRlcXE6ICAgICAgICAgICAgICAnXFx1MkFDNScsXG4gIHN1cHNldGVxcTogICAgICAgICAgICAgICdcXHUyQUM2JyxcbiAgU3Vic2V0OiAgICAgICAgICAgICAgICAgJ1xcdTIyRDAnLFxuICBTdXBzZXQ6ICAgICAgICAgICAgICAgICAnXFx1MjJEMScsXG4gIHNxc3Vic2V0OiAgICAgICAgICAgICAgICdcXHUyMjhGJyxcbiAgc3FzdXBzZXQ6ICAgICAgICAgICAgICAgJ1xcdTIyOTAnLFxuICBwcmVjY3VybHllcTogICAgICAgICAgICAnXFx1MjI3QycsXG4gIHN1Y2NjdXJseWVxOiAgICAgICAgICAgICdcXHUyMjdEJyxcbiAgY3VybHllcXByZWM6ICAgICAgICAgICAgJ1xcdTIyREUnLFxuICBjdXJseWVxc3VjYzogICAgICAgICAgICAnXFx1MjJERicsXG4gIHByZWNzaW06ICAgICAgICAgICAgICAgICdcXHUyMjdFJyxcbiAgc3VjY3NpbTogICAgICAgICAgICAgICAgJ1xcdTIyN0YnLFxuICBwcmVjYXBwcm94OiAgICAgICAgICAgICAnXFx1MkFCNycsXG4gIHN1Y2NhcHByb3g6ICAgICAgICAgICAgICdcXHUyQUI4JyxcbiAgdmFydHJpYW5nbGVsZWZ0OiAgICAgICAgJ1xcdTIyQjInLFxuICBsaGQ6ICAgICAgICAgICAgICAgICAgICAnXFx1MjJCMicsXG4gIHZhcnRyaWFuZ2xlcmlnaHQ6ICAgICAgICdcXHUyMkIzJyxcbiAgcmhkOiAgICAgICAgICAgICAgICAgICAgJ1xcdTIyQjMnLFxuICB0cmlhbmdsZWxlZnRlcTogICAgICAgICAnXFx1MjJCNCcsXG4gIHVubGhkOiAgICAgICAgICAgICAgICAgICdcXHUyMkI0JyxcbiAgdHJpYW5nbGVyaWdodGVxOiAgICAgICAgJ1xcdTIyQjUnLFxuICB1bnJoZDogICAgICAgICAgICAgICAgICAnXFx1MjJCNScsXG4gIHZEYXNoOiAgICAgICAgICAgICAgICAgIFsnXFx1MjJBOCcsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBWZGFzaDogICAgICAgICAgICAgICAgICAnXFx1MjJBOScsXG4gIFZ2ZGFzaDogICAgICAgICAgICAgICAgICdcXHUyMkFBJyxcbiAgc21hbGxzbWlsZTogICAgICAgICAgICAgWydcXHUyMzIzJywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIHNob3J0bWlkOiAgICAgICAgICAgICAgIFsnXFx1MjIyMycsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBzbWFsbGZyb3duOiAgICAgICAgICAgICBbJ1xcdTIzMjInLCB7dmFyaWFudEZvcm06IHRydWV9XSxcbiAgc2hvcnRwYXJhbGxlbDogICAgICAgICAgWydcXHUyMjI1Jywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIGJ1bXBlcTogICAgICAgICAgICAgICAgICdcXHUyMjRGJyxcbiAgYmV0d2VlbjogICAgICAgICAgICAgICAgJ1xcdTIyNkMnLFxuICBCdW1wZXE6ICAgICAgICAgICAgICAgICAnXFx1MjI0RScsXG4gIHBpdGNoZm9yazogICAgICAgICAgICAgICdcXHUyMkQ0JyxcbiAgdmFycHJvcHRvOiAgICAgICAgICAgICAgWydcXHUyMjFEJywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIGJhY2tlcHNpbG9uOiAgICAgICAgICAgICdcXHUyMjBEJyxcbiAgYmxhY2t0cmlhbmdsZWxlZnQ6ICAgICAgJ1xcdTI1QzInLFxuICBibGFja3RyaWFuZ2xlcmlnaHQ6ICAgICAnXFx1MjVCOCcsXG4gIHRoZXJlZm9yZTogICAgICAgICAgICAgICdcXHUyMjM0JyxcbiAgYmVjYXVzZTogICAgICAgICAgICAgICAgJ1xcdTIyMzUnLFxuICBlcXNpbTogICAgICAgICAgICAgICAgICAnXFx1MjI0MicsXG4gIHZhcnRyaWFuZ2xlOiAgICAgICAgICAgIFsnXFx1MjVCMycsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBKb2luOiAgICAgICAgICAgICAgICAgICAnXFx1MjJDOCcsXG5cbiAgLy8gTmVnYXRlZCByZWxhdGlvbnNcbiAgbmxlc3M6ICAgICAgICAgICAgICAgICAgJ1xcdTIyNkUnLFxuICBuZ3RyOiAgICAgICAgICAgICAgICAgICAnXFx1MjI2RicsXG4gIG5sZXE6ICAgICAgICAgICAgICAgICAgICdcXHUyMjcwJyxcbiAgbmdlcTogICAgICAgICAgICAgICAgICAgJ1xcdTIyNzEnLFxuICBubGVxc2xhbnQ6ICAgICAgICAgICAgICBbJ1xcdTJBODcnLCB7dmFyaWFudEZvcm06IHRydWV9XSxcbiAgbmdlcXNsYW50OiAgICAgICAgICAgICAgWydcXHUyQTg4Jywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIG5sZXFxOiAgICAgICAgICAgICAgICAgIFsnXFx1MjI3MCcsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBuZ2VxcTogICAgICAgICAgICAgICAgICBbJ1xcdTIyNzEnLCB7dmFyaWFudEZvcm06IHRydWV9XSxcbiAgbG5lcTogICAgICAgICAgICAgICAgICAgJ1xcdTJBODcnLFxuICBnbmVxOiAgICAgICAgICAgICAgICAgICAnXFx1MkE4OCcsXG4gIGxuZXFxOiAgICAgICAgICAgICAgICAgICdcXHUyMjY4JyxcbiAgZ25lcXE6ICAgICAgICAgICAgICAgICAgJ1xcdTIyNjknLFxuICBsdmVydG5lcXE6ICAgICAgICAgICAgICBbJ1xcdTIyNjgnLCB7dmFyaWFudEZvcm06IHRydWV9XSxcbiAgZ3ZlcnRuZXFxOiAgICAgICAgICAgICAgWydcXHUyMjY5Jywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIGxuc2ltOiAgICAgICAgICAgICAgICAgICdcXHUyMkU2JyxcbiAgZ25zaW06ICAgICAgICAgICAgICAgICAgJ1xcdTIyRTcnLFxuICBsbmFwcHJveDogICAgICAgICAgICAgICAnXFx1MkE4OScsXG4gIGduYXBwcm94OiAgICAgICAgICAgICAgICdcXHUyQThBJyxcbiAgbnByZWM6ICAgICAgICAgICAgICAgICAgJ1xcdTIyODAnLFxuICBuc3VjYzogICAgICAgICAgICAgICAgICAnXFx1MjI4MScsXG4gIG5wcmVjZXE6ICAgICAgICAgICAgICAgIFsnXFx1MjJFMCcsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBuc3VjY2VxOiAgICAgICAgICAgICAgICBbJ1xcdTIyRTEnLCB7dmFyaWFudEZvcm06IHRydWV9XSxcbiAgcHJlY25lcXE6ICAgICAgICAgICAgICAgJ1xcdTJBQjUnLFxuICBzdWNjbmVxcTogICAgICAgICAgICAgICAnXFx1MkFCNicsXG4gIHByZWNuc2ltOiAgICAgICAgICAgICAgICdcXHUyMkU4JyxcbiAgc3VjY25zaW06ICAgICAgICAgICAgICAgJ1xcdTIyRTknLFxuICBwcmVjbmFwcHJveDogICAgICAgICAgICAnXFx1MkFCOScsXG4gIHN1Y2NuYXBwcm94OiAgICAgICAgICAgICdcXHUyQUJBJyxcbiAgbnNpbTogICAgICAgICAgICAgICAgICAgJ1xcdTIyNDEnLFxuICBuY29uZzogICAgICAgICAgICAgICAgICAnXFx1MjI0NycsXG4gIG5zaG9ydG1pZDogICAgICAgICAgICAgIFsnXFx1MjIyNCcsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBuc2hvcnRwYXJhbGxlbDogICAgICAgICBbJ1xcdTIyMjYnLCB7dmFyaWFudEZvcm06IHRydWV9XSxcbiAgbm1pZDogICAgICAgICAgICAgICAgICAgJ1xcdTIyMjQnLFxuICBucGFyYWxsZWw6ICAgICAgICAgICAgICAnXFx1MjIyNicsXG4gIG52ZGFzaDogICAgICAgICAgICAgICAgICdcXHUyMkFDJyxcbiAgbnZEYXNoOiAgICAgICAgICAgICAgICAgJ1xcdTIyQUQnLFxuICBuVmRhc2g6ICAgICAgICAgICAgICAgICAnXFx1MjJBRScsXG4gIG5WRGFzaDogICAgICAgICAgICAgICAgICdcXHUyMkFGJyxcbiAgbnRyaWFuZ2xlbGVmdDogICAgICAgICAgJ1xcdTIyRUEnLFxuICBudHJpYW5nbGVyaWdodDogICAgICAgICAnXFx1MjJFQicsXG4gIG50cmlhbmdsZWxlZnRlcTogICAgICAgICdcXHUyMkVDJyxcbiAgbnRyaWFuZ2xlcmlnaHRlcTogICAgICAgJ1xcdTIyRUQnLFxuICBuc3Vic2V0ZXE6ICAgICAgICAgICAgICAnXFx1MjI4OCcsXG4gIG5zdXBzZXRlcTogICAgICAgICAgICAgICdcXHUyMjg5JyxcbiAgbnN1YnNldGVxcTogICAgICAgICAgICAgWydcXHUyMjg4Jywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIG5zdXBzZXRlcXE6ICAgICAgICAgICAgIFsnXFx1MjI4OScsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBzdWJzZXRuZXE6ICAgICAgICAgICAgICAnXFx1MjI4QScsXG4gIHN1cHNldG5lcTogICAgICAgICAgICAgICdcXHUyMjhCJyxcbiAgdmFyc3Vic2V0bmVxOiAgICAgICAgICAgWydcXHUyMjhBJywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIHZhcnN1cHNldG5lcTogICAgICAgICAgIFsnXFx1MjI4QicsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuICBzdWJzZXRuZXFxOiAgICAgICAgICAgICAnXFx1MkFDQicsXG4gIHN1cHNldG5lcXE6ICAgICAgICAgICAgICdcXHUyQUNDJyxcbiAgdmFyc3Vic2V0bmVxcTogICAgICAgICAgWydcXHUyQUNCJywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIHZhcnN1cHNldG5lcXE6ICAgICAgICAgIFsnXFx1MkFDQycsIHt2YXJpYW50Rm9ybTogdHJ1ZX1dLFxuXG5cbiAgLy8gQXJyb3dzXG4gIGxlZnRsZWZ0YXJyb3dzOiAgICAgICAgICdcXHUyMUM3JyxcbiAgcmlnaHRyaWdodGFycm93czogICAgICAgJ1xcdTIxQzknLFxuICBsZWZ0cmlnaHRhcnJvd3M6ICAgICAgICAnXFx1MjFDNicsXG4gIHJpZ2h0bGVmdGFycm93czogICAgICAgICdcXHUyMUM0JyxcbiAgTGxlZnRhcnJvdzogICAgICAgICAgICAgJ1xcdTIxREEnLFxuICBScmlnaHRhcnJvdzogICAgICAgICAgICAnXFx1MjFEQicsXG4gIHR3b2hlYWRsZWZ0YXJyb3c6ICAgICAgICdcXHUyMTlFJyxcbiAgdHdvaGVhZHJpZ2h0YXJyb3c6ICAgICAgJ1xcdTIxQTAnLFxuICBsZWZ0YXJyb3d0YWlsOiAgICAgICAgICAnXFx1MjFBMicsXG4gIHJpZ2h0YXJyb3d0YWlsOiAgICAgICAgICdcXHUyMUEzJyxcbiAgbG9vcGFycm93bGVmdDogICAgICAgICAgJ1xcdTIxQUInLFxuICBsb29wYXJyb3dyaWdodDogICAgICAgICAnXFx1MjFBQycsXG4gIGxlZnRyaWdodGhhcnBvb25zOiAgICAgICdcXHUyMUNCJyxcbiAgcmlnaHRsZWZ0aGFycG9vbnM6ICAgICAgWydcXHUyMUNDJywge3ZhcmlhbnRGb3JtOiB0cnVlfV0sXG4gIGN1cnZlYXJyb3dsZWZ0OiAgICAgICAgICdcXHUyMUI2JyxcbiAgY3VydmVhcnJvd3JpZ2h0OiAgICAgICAgJ1xcdTIxQjcnLFxuICBjaXJjbGVhcnJvd2xlZnQ6ICAgICAgICAnXFx1MjFCQScsXG4gIGNpcmNsZWFycm93cmlnaHQ6ICAgICAgICdcXHUyMUJCJyxcbiAgTHNoOiAgICAgICAgICAgICAgICAgICAgJ1xcdTIxQjAnLFxuICBSc2g6ICAgICAgICAgICAgICAgICAgICAnXFx1MjFCMScsXG4gIHVwdXBhcnJvd3M6ICAgICAgICAgICAgICdcXHUyMUM4JyxcbiAgZG93bmRvd25hcnJvd3M6ICAgICAgICAgJ1xcdTIxQ0EnLFxuICB1cGhhcnBvb25sZWZ0OiAgICAgICAgICAnXFx1MjFCRicsXG4gIHVwaGFycG9vbnJpZ2h0OiAgICAgICAgICdcXHUyMUJFJyxcbiAgZG93bmhhcnBvb25sZWZ0OiAgICAgICAgJ1xcdTIxQzMnLFxuICByZXN0cmljdGlvbjogICAgICAgICAgICAnXFx1MjFCRScsXG4gIG11bHRpbWFwOiAgICAgICAgICAgICAgICdcXHUyMkI4JyxcbiAgZG93bmhhcnBvb25yaWdodDogICAgICAgJ1xcdTIxQzInLFxuICBsZWZ0cmlnaHRzcXVpZ2Fycm93OiAgICAnXFx1MjFBRCcsXG4gIHJpZ2h0c3F1aWdhcnJvdzogICAgICAgICdcXHUyMUREJyxcbiAgbGVhZHN0bzogICAgICAgICAgICAgICAgJ1xcdTIxREQnLFxuICBkYXNocmlnaHRhcnJvdzogICAgICAgICAnXFx1MjFFMicsXG4gIGRhc2hsZWZ0YXJyb3c6ICAgICAgICAgICdcXHUyMUUwJyxcblxuICAvLyBOZWdhdGVkIGFycm93c1xuICBubGVmdGFycm93OiAgICAgICAgICAgICAnXFx1MjE5QScsXG4gIG5yaWdodGFycm93OiAgICAgICAgICAgICdcXHUyMTlCJyxcbiAgbkxlZnRhcnJvdzogICAgICAgICAgICAgJ1xcdTIxQ0QnLFxuICBuUmlnaHRhcnJvdzogICAgICAgICAgICAnXFx1MjFDRicsXG4gIG5sZWZ0cmlnaHRhcnJvdzogICAgICAgICdcXHUyMUFFJyxcbiAgbkxlZnRyaWdodGFycm93OiAgICAgICAgJ1xcdTIxQ0UnXG59KTtcblxuXG4vKipcbiAqIERlbGltaXRlcnMgZnJvbSB0aGUgQU1TIFN5bWJvbHMgcGFja2FnZS5cbiAqL1xubmV3IHNtLkRlbGltaXRlck1hcCgnQU1Tc3ltYm9scy1kZWxpbWl0ZXInLCBQYXJzZU1ldGhvZHMuZGVsaW1pdGVyLCB7XG4gIC8vIGNvcm5lcnNcbiAgJ1xcXFx1bGNvcm5lcic6ICAgICAgICAgICAnXFx1MjMxQycsXG4gICdcXFxcdXJjb3JuZXInOiAgICAgICAgICAgJ1xcdTIzMUQnLFxuICAnXFxcXGxsY29ybmVyJzogICAgICAgICAgICdcXHUyMzFFJyxcbiAgJ1xcXFxscmNvcm5lcic6ICAgICAgICAgICAnXFx1MjMxRidcbn0pO1xuXG5cbi8qKlxuICogTWFjcm9zIGZyb20gdGhlIEFNUyBTeW1ib2xzIHBhY2thZ2UuXG4gKi9cbm5ldyBzbS5Db21tYW5kTWFwKCdBTVNzeW1ib2xzLW1hY3JvcycsIHtcbiAgaW1wbGllczogICAgWydNYWNybycsICdcXFxcO1xcXFxMb25ncmlnaHRhcnJvd1xcXFw7J10sXG4gIGltcGxpZWRieTogIFsnTWFjcm8nLCAnXFxcXDtcXFxcTG9uZ2xlZnRhcnJvd1xcXFw7J11cbn0sIEFtc01ldGhvZHMpO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgQU1TIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7TXVsdGxpbmVJdGVtLCBGbGFsaWduSXRlbX0gZnJvbSAnLi9BbXNJdGVtcy5qcyc7XG5pbXBvcnQge0Fic3RyYWN0VGFnc30gZnJvbSAnLi4vVGFncy5qcyc7XG5pbXBvcnQge05FV19PUFN9IGZyb20gJy4vQW1zTWV0aG9kcy5qcyc7XG5pbXBvcnQgJy4vQW1zTWFwcGluZ3MuanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuXG5cbi8qKlxuICogU3RhbmRhcmQgQU1TIHN0eWxlIHRhZ2dpbmcuXG4gKiBAY29uc3RydWN0b3JcbiAqIEBleHRlbmRzIHtBYnN0cmFjdFRhZ3N9XG4gKi9cbmV4cG9ydCBjbGFzcyBBbXNUYWdzIGV4dGVuZHMgQWJzdHJhY3RUYWdzIHsgfVxuXG5cbi8qKlxuICogSW5pdCBtZXRob2QgZm9yIEFNUyBwYWNrYWdlLlxuICogQHBhcmFtIHtQYXJzZXJDb25maWd1cmF0aW9ufSBjb25maWcgVGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAqL1xubGV0IGluaXQgPSBmdW5jdGlvbihjb25maWc6IFBhcnNlckNvbmZpZ3VyYXRpb24pIHtcbiAgbmV3IENvbW1hbmRNYXAoTkVXX09QUywge30sIHt9KTtcbiAgY29uZmlnLmFwcGVuZChDb25maWd1cmF0aW9uLmxvY2FsKHtoYW5kbGVyOiB7bWFjcm86IFtORVdfT1BTXX0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTogLTF9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgQW1zQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAnYW1zJywge1xuICAgIGhhbmRsZXI6IHtcbiAgICAgIGNoYXJhY3RlcjogWydBTVNtYXRoLW9wZXJhdG9yTGV0dGVyJ10sXG4gICAgICBkZWxpbWl0ZXI6IFsnQU1Tc3ltYm9scy1kZWxpbWl0ZXInLCAnQU1TbWF0aC1kZWxpbWl0ZXInXSxcbiAgICAgIG1hY3JvOiBbJ0FNU3N5bWJvbHMtbWF0aGNoYXIwbWknLCAnQU1Tc3ltYm9scy1tYXRoY2hhcjBtbycsXG4gICAgICAgICAgICAgICdBTVNzeW1ib2xzLWRlbGltaXRlcicsICdBTVNzeW1ib2xzLW1hY3JvcycsXG4gICAgICAgICAgICAgICdBTVNtYXRoLW1hdGhjaGFyMG1vJywgJ0FNU21hdGgtbWFjcm9zJywgJ0FNU21hdGgtZGVsaW1pdGVyJ10sXG4gICAgICBlbnZpcm9ubWVudDogWydBTVNtYXRoLWVudmlyb25tZW50J11cbiAgICB9LFxuICAgIGl0ZW1zOiB7XG4gICAgICBbTXVsdGxpbmVJdGVtLnByb3RvdHlwZS5raW5kXTogTXVsdGxpbmVJdGVtLFxuICAgICAgW0ZsYWxpZ25JdGVtLnByb3RvdHlwZS5raW5kXTogRmxhbGlnbkl0ZW0sXG4gICAgfSxcbiAgICB0YWdzOiB7J2Ftcyc6IEFtc1RhZ3N9LFxuICAgIGluaXQ6IGluaXQsXG4gICAgY29uZmlnOiAoX2NvbmZpZzogUGFyc2VyQ29uZmlndXJhdGlvbiwgamF4OiBhbnkpICA9PiB7XG4gICAgICAvL1xuICAgICAgLy8gIE1vdmUgbXVsdGxpbmVXaWR0aCBmcm9tIG9sZCBsb2NhdGlvbiB0byBhbXMgYmxvY2sgKHJlbW92ZSBpbiBuZXh0IHZlcnNpb24pXG4gICAgICAvL1xuICAgICAgaWYgKGpheC5wYXJzZU9wdGlvbnMub3B0aW9ucy5tdWx0bGluZVdpZHRoKSB7XG4gICAgICAgIGpheC5wYXJzZU9wdGlvbnMub3B0aW9ucy5hbXMubXVsdGxpbmVXaWR0aCA9IGpheC5wYXJzZU9wdGlvbnMub3B0aW9ucy5tdWx0bGluZVdpZHRoO1xuICAgICAgfVxuICAgICAgZGVsZXRlIGpheC5wYXJzZU9wdGlvbnMub3B0aW9ucy5tdWx0bGluZVdpZHRoO1xuICAgIH0sXG4gICAgb3B0aW9uczoge1xuICAgICAgbXVsdGxpbmVXaWR0aDogJycsXG4gICAgICBhbXM6IHtcbiAgICAgICAgbXVsdGxpbmVXaWR0aDogJzEwMCUnLCAgLy8gVGhlIHdpZHRoIHRvIHVzZSBmb3IgbXVsdGxpbmUgZW52aXJvbm1lbnRzLlxuICAgICAgICBtdWx0bGluZUluZGVudDogJzFlbScsICAvLyBUaGUgbWFyZ2luIHRvIHVzZSBvbiBib3RoIHNpZGVzIG9mIG11bHRsaW5lIGVudmlyb25tZW50cy5cbiAgICAgIH1cbiAgICB9XG4gIH1cbik7XG5cblxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgTWV0aG9kcyBmb3IgdGhlIEFNU2NkIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuXG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQge1BhcnNlTWV0aG9kfSBmcm9tICcuLi9UeXBlcy5qcyc7XG5pbXBvcnQge1N0YWNrSXRlbSwgRW52TGlzdH0gZnJvbSAnLi4vU3RhY2tJdGVtLmpzJztcbmltcG9ydCB7QXJyYXlJdGVtfSBmcm9tICcuLi9iYXNlL0Jhc2VJdGVtcy5qcyc7XG5pbXBvcnQge090aGVyfSBmcm9tICcuLi9iYXNlL0Jhc2VDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7TW1sTXVuZGVyb3Zlcn0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL211bmRlcm92ZXIuanMnO1xuaW1wb3J0IHtURVhDTEFTU30gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4uL05vZGVVdGlsLmpzJztcblxuXG4vLyBOYW1lc3BhY2VcbmxldCBBbXNDZE1ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPiA9IHt9O1xuXG5cbi8qKlxuICogSGFuZGxlcyBDRCBlbnZpcm9ubWVudCBmb3IgY29tbXV0YXRpdmUgZGlhZ3JhbXMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiBUaGUgb3BlbmluZyBzdGFja2l0ZW0uXG4gKi9cbkFtc0NkTWV0aG9kcy5DRCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBiZWdpbjogU3RhY2tJdGVtKSB7XG4gIHBhcnNlci5QdXNoKGJlZ2luKTtcbiAgbGV0IGl0ZW0gPSBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdhcnJheScpIGFzIEFycmF5SXRlbTtcbiAgbGV0IG9wdGlvbnMgPSBwYXJzZXIuY29uZmlndXJhdGlvbi5vcHRpb25zLmFtc2NkO1xuICBpdGVtLnNldFByb3BlcnRpZXMoe1xuICAgIG1pbnc6IHBhcnNlci5zdGFjay5lbnYuQ0RfbWludyB8fCBvcHRpb25zLmhhcnJvd3NpemUsXG4gICAgbWluaDogcGFyc2VyLnN0YWNrLmVudi5DRF9taW5oIHx8IG9wdGlvbnMudmFycm93c2l6ZVxuICB9KTtcbiAgaXRlbS5hcnJheWRlZiA9IHtcbiAgICAgIGNvbHVtbmFsaWduOiAnY2VudGVyJyxcbiAgICAgIGNvbHVtbnNwYWNpbmc6IG9wdGlvbnMuY29sc3BhY2UsXG4gICAgICByb3dzcGFjaW5nOiBvcHRpb25zLnJvd3NwYWNlLFxuICAgICAgZGlzcGxheXN0eWxlOiB0cnVlXG4gIH07XG4gIHJldHVybiBpdGVtO1xufTtcblxuXG4vKipcbiAqIENvbnZlcnRzIGFycm93cy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkFtc0NkTWV0aG9kcy5hcnJvdyA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IGMgPSBwYXJzZXIuc3RyaW5nLmNoYXJBdChwYXJzZXIuaSk7XG4gIGlmICghYy5tYXRjaCgvWz48VkEufD1dLykpIHtcbiAgICByZXR1cm4gT3RoZXIocGFyc2VyLCBuYW1lKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJzZXIuaSsrO1xuICB9XG4gIGxldCBmaXJzdCA9IHBhcnNlci5zdGFjay5Ub3AoKTtcbiAgaWYgKCFmaXJzdC5pc0tpbmQoJ2FycmF5JykgfHwgZmlyc3QuU2l6ZSgpKSB7XG4gICAgQW1zQ2RNZXRob2RzLmNlbGwocGFyc2VyLCBuYW1lKTtcbiAgICBmaXJzdCA9IHBhcnNlci5zdGFjay5Ub3AoKTtcbiAgfVxuICBsZXQgdG9wID0gZmlyc3QgYXMgQXJyYXlJdGVtO1xuICAvL1xuICAvLyAgQWRkIGVub3VnaCBjZWxscyB0byBwbGFjZSB0aGUgYXJyb3cgY29ycmVjdGx5XG4gIC8vXG4gIGxldCBhcnJvd1JvdyA9ICgodG9wLnRhYmxlLmxlbmd0aCAlIDIpID09PSAxKTtcbiAgbGV0IG4gPSAodG9wLnJvdy5sZW5ndGggKyAoYXJyb3dSb3cgPyAwIDogMSkpICUgMjtcbiAgd2hpbGUgKG4pIHtcbiAgICBBbXNDZE1ldGhvZHMuY2VsbChwYXJzZXIsIG5hbWUpO1xuICAgIG4tLTtcbiAgfVxuXG4gIGxldCBtbWw7XG4gIGxldCBoZGVmID0ge21pbnNpemU6IHRvcC5nZXRQcm9wZXJ0eSgnbWludycpLCBzdHJldGNoeTogdHJ1ZX0sXG4gIHZkZWYgPSB7bWluc2l6ZTogdG9wLmdldFByb3BlcnR5KCdtaW5oJyksXG4gICAgICAgICAgc3RyZXRjaHk6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZSwgbHNwYWNlOiAwLCByc3BhY2U6IDB9O1xuXG4gIGlmIChjID09PSAnLicpIHtcbiAgfSBlbHNlIGlmIChjID09PSAnfCcpIHtcbiAgICBtbWwgPSBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtbycsICB2ZGVmLCAnXFx1MjIyNScpO1xuICB9IGVsc2UgaWYgKGMgPT09ICc9Jykge1xuICAgIG1tbCA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywgaGRlZiwgJz0nKTtcbiAgfSBlbHNlIHtcbiAgICAvL1xuICAgIC8vICBmb3IgQD4+PiBAPDw8IEBWVlYgYW5kIEBBQUEsIGdldCB0aGUgYXJyb3cgYW5kIGxhYmVsc1xuICAgIC8vXG4gICAgLy8gVE9ETzogY2xlYW51cCFcbiAgICBsZXQgYXJyb3c6IHN0cmluZyA9ICh7XG4gICAgICAnPic6ICdcXHUyMTkyJywgJzwnOiAnXFx1MjE5MCcsICdWJzogJ1xcdTIxOTMnLCAnQSc6ICdcXHUyMTkxJ30gYXMge1trZXk6IHN0cmluZ106IHN0cmluZ30pIFtjXTtcbiAgICBsZXQgYSA9IHBhcnNlci5HZXRVcFRvKG5hbWUgKyBjLCBjKTtcbiAgICBsZXQgYiA9IHBhcnNlci5HZXRVcFRvKG5hbWUgKyBjLCBjKTtcbiAgICBpZiAoYyA9PT0gJz4nIHx8IGMgPT09ICc8Jykge1xuICAgICAgLy9cbiAgICAgIC8vICBMYXkgb3V0IGhvcml6b250YWwgYXJyb3dzIHdpdGggbXVuZGVyb3ZlciBpZiBpdCBoYXMgbGFiZWxzXG4gICAgICAvL1xuICAgICAgbW1sID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbW8nLCBoZGVmLCBhcnJvdyk7XG4gICAgICBpZiAoIWEpIHtcbiAgICAgICAgYSA9ICdcXFxca2VybiAnICsgdG9wLmdldFByb3BlcnR5KCdtaW53Jyk7XG4gICAgICB9IC8vIG1pbnNpemUgbmVlZHMgd29ya1xuICAgICAgaWYgKGEgfHwgYikge1xuICAgICAgICBsZXQgcGFkOiBFbnZMaXN0ID0ge3dpZHRoOiAnKy42N2VtJywgbHNwYWNlOiAnLjMzZW0nfTtcbiAgICAgICAgbW1sID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdW5kZXJvdmVyJywgW21tbF0pIGFzIE1tbE11bmRlcm92ZXI7XG4gICAgICAgIGlmIChhKSB7XG4gICAgICAgICAgbGV0IG5vZGVBID0gbmV3IFRleFBhcnNlcihhLCBwYXJzZXIuc3RhY2suZW52LCBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCk7XG4gICAgICAgICAgbGV0IG1wYWRkZWQgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbbm9kZUFdLCBwYWQpO1xuICAgICAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtcGFkZGVkLCAndm9mZnNldCcsICcuMWVtJyk7XG4gICAgICAgICAgTm9kZVV0aWwuc2V0Q2hpbGQobW1sLCBtbWwub3ZlciwgbXBhZGRlZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGIpIHtcbiAgICAgICAgICBsZXQgbm9kZUIgPSBuZXcgVGV4UGFyc2VyKGIsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgICAgICAgICBOb2RlVXRpbC5zZXRDaGlsZChtbWwsIG1tbC51bmRlciwgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW25vZGVCXSwgcGFkKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhcnNlci5jb25maWd1cmF0aW9uLm9wdGlvbnMuYW1zY2QuaGlkZUhvcml6b250YWxMYWJlbHMpIHtcbiAgICAgICAgICBtbWwgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBtbWwsIHtkZXB0aDogMCwgaGVpZ2h0OiAnLjY3ZW0nfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy9cbiAgICAgIC8vICBMYXkgb3V0IHZlcnRpY2FsIGFycm93cyB3aXRoIG1yb3cgaWYgdGhlcmUgYXJlIGxhYmVsc1xuICAgICAgLy9cbiAgICAgIGxldCBhcnJvd05vZGUgPSBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtbycsIHZkZWYsIGFycm93KTtcbiAgICAgIG1tbCA9IGFycm93Tm9kZTtcbiAgICAgIGlmIChhIHx8IGIpIHtcbiAgICAgICAgbW1sID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcm93Jyk7XG4gICAgICAgIGlmIChhKSB7XG4gICAgICAgICAgTm9kZVV0aWwuYXBwZW5kQ2hpbGRyZW4oXG4gICAgICAgICAgICBtbWwsIFtuZXcgVGV4UGFyc2VyKCdcXFxcc2NyaXB0c3R5bGVcXFxcbGxhcHsnICsgYSArICd9JywgcGFyc2VyLnN0YWNrLmVudiwgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpXSk7XG4gICAgICAgIH1cbiAgICAgICAgYXJyb3dOb2RlLnRleENsYXNzID0gVEVYQ0xBU1MuT1JEO1xuICAgICAgICBOb2RlVXRpbC5hcHBlbmRDaGlsZHJlbihtbWwsIFthcnJvd05vZGVdKTtcbiAgICAgICAgaWYgKGIpIHtcbiAgICAgICAgICBOb2RlVXRpbC5hcHBlbmRDaGlsZHJlbihtbWwsIFtuZXcgVGV4UGFyc2VyKCdcXFxcc2NyaXB0c3R5bGVcXFxccmxhcHsnICsgYiArICd9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChtbWwpIHtcbiAgICBwYXJzZXIuUHVzaChtbWwpO1xuICB9XG4gIEFtc0NkTWV0aG9kcy5jZWxsKHBhcnNlciwgbmFtZSk7XG59O1xuXG5cbi8qKlxuICogQ29udmVydHMgYSBjZWxsIGluIHRoZSBkaWFncmFtLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQW1zQ2RNZXRob2RzLmNlbGwgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCB0b3AgPSBwYXJzZXIuc3RhY2suVG9wKCkgYXMgQXJyYXlJdGVtO1xuICBpZiAoKHRvcC50YWJsZSB8fCBbXSkubGVuZ3RoICUgMiA9PT0gMCAmJiAodG9wLnJvdyB8fCBbXSkubGVuZ3RoID09PSAwKSB7XG4gICAgLy9cbiAgICAvLyBBZGQgYSBzdHJ1dCB0byB0aGUgZmlyc3QgY2VsbCBpbiBldmVuIHJvd3MgdG8gZ2V0XG4gICAgLy8gYmV0dGVyIHNwYWNpbmcgb2YgYXJyb3cgcm93cy5cbiAgICAvL1xuICAgIHBhcnNlci5QdXNoKHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtdLCB7aGVpZ2h0OiAnOC41cHQnLCBkZXB0aDogJzJwdCd9KSk7XG4gIH1cbiAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnY2VsbCcpLnNldFByb3BlcnRpZXMoe2lzRW50cnk6IHRydWUsIG5hbWU6IG5hbWV9KSk7XG59O1xuXG5cbi8qKlxuICogU2V0cyBtaW5pbWFsIHdpZHRoIGZvciBhcnJvd3MuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5BbXNDZE1ldGhvZHMubWluQ0RhcnJvd3dpZHRoID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBwYXJzZXIuc3RhY2suZW52LkNEX21pbncgPSBwYXJzZXIuR2V0RGltZW4obmFtZSk7XG59O1xuXG5cbi8qKlxuICogU2V0cyBtaW5pbWFsIGhlaWdodCBmb3IgYXJyb3dzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuQW1zQ2RNZXRob2RzLm1pbkNEYXJyb3doZWlnaHQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIHBhcnNlci5zdGFjay5lbnYuQ0RfbWluaCA9IHBhcnNlci5HZXREaW1lbihuYW1lKTtcbn07XG5cblxuZXhwb3J0IGRlZmF1bHQgQW1zQ2RNZXRob2RzO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgU3ltYm9sIG1hcHBpbmdzIGZvciB0aGUgQU1TY2QgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQgKiBhcyBzbSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IFBhcnNlTWV0aG9kcyBmcm9tICcuLi9QYXJzZU1ldGhvZHMuanMnO1xuaW1wb3J0IEFtc0NkTWV0aG9kcyBmcm9tICcuL0Ftc0NkTWV0aG9kcy5qcyc7XG5cblxubmV3IHNtLkVudmlyb25tZW50TWFwKCdhbXNjZF9lbnZpcm9ubWVudCcsIFBhcnNlTWV0aG9kcy5lbnZpcm9ubWVudCxcbiAgICAgICAgICAgICAgICAgICAgICB7Q0Q6ICdDRCd9LCBBbXNDZE1ldGhvZHMpO1xuXG5uZXcgc20uQ29tbWFuZE1hcCgnYW1zY2RfbWFjcm9zJywge1xuICBtaW5DRGFycm93d2lkdGg6ICdtaW5DRGFycm93d2lkdGgnLFxuICBtaW5DRGFycm93aGVpZ2h0OiAnbWluQ0RhcnJvd2hlaWdodCcsXG59LCBBbXNDZE1ldGhvZHMpO1xuXG5uZXcgc20uTWFjcm9NYXAoJ2Ftc2NkX3NwZWNpYWwnLCB7J0AnOiAnYXJyb3cnfSwgQW1zQ2RNZXRob2RzKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIEFNU2NkIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9BbXNDZE1hcHBpbmdzLmpzJztcblxuXG5leHBvcnQgY29uc3QgQW1zQ2RDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICdhbXNjZCcsIHtcbiAgICBoYW5kbGVyOiB7XG4gICAgICBjaGFyYWN0ZXI6IFsnYW1zY2Rfc3BlY2lhbCddLFxuICAgICAgbWFjcm86IFsnYW1zY2RfbWFjcm9zJ10sXG4gICAgICBlbnZpcm9ubWVudDogWydhbXNjZF9lbnZpcm9ubWVudCddXG4gICAgfSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBhbXNjZDoge1xuICAgICAgICBjb2xzcGFjZTogJzVwdCcsXG4gICAgICAgIHJvd3NwYWNlOiAnNXB0JyxcbiAgICAgICAgaGFycm93c2l6ZTogJzIuNzVlbScsXG4gICAgICAgIHZhcnJvd3NpemU6ICcxLjc1ZW0nLFxuICAgICAgICBoaWRlSG9yaXpvbnRhbExhYmVsczogZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cbik7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBiYm94IHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5cblxuLy8gTmFtZXNwYWNlXG5leHBvcnQgbGV0IEJib3hNZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBQYXJzZU1ldGhvZD4gPSB7fTtcblxuLyoqXG4gKiBJbXBsZW1lbnRzIE1hdGhKYXggQmJveCBtYWNybyB0byBwYWQgYW5kIGNvbG9yaXplIGJhY2tncm91bmQgYm94ZXMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2FsbGluZyBtYWNyby5cbiAqL1xuQmJveE1ldGhvZHMuQkJveCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgYmJveCA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lLCAnJyk7XG4gIGxldCBtYXRoID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBjb25zdCBwYXJ0cyA9IGJib3guc3BsaXQoLywvKTtcbiAgbGV0IGRlZiwgYmFja2dyb3VuZCwgc3R5bGU7XG4gIGZvciAobGV0IGkgPSAwLCBtID0gcGFydHMubGVuZ3RoOyBpIDwgbTsgaSsrKSB7XG4gICAgY29uc3QgcGFydCA9IHBhcnRzW2ldLnRyaW0oKTtcbiAgICBjb25zdCBtYXRjaCA9IHBhcnQubWF0Y2goL14oXFwuXFxkK3xcXGQrKFxcLlxcZCopPykocHR8ZW18ZXh8bXV8cHh8aW58Y218bW0pJC8pO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgLy8gQHRlc3QgQmJveC1QYWRkaW5nXG4gICAgICBpZiAoZGVmKSB7XG4gICAgICAgIC8vIEB0ZXN0IEJib3gtUGFkZGluZy1FcnJvclxuICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ011bHRpcGxlQkJveFByb3BlcnR5JywgJyUxIHNwZWNpZmllZCB0d2ljZSBpbiAlMicsICdQYWRkaW5nJywgbmFtZSk7XG4gICAgICB9XG4gICAgICBjb25zdCBwYWQgPSBCQm94UGFkZGluZyhtYXRjaFsxXSArIG1hdGNoWzNdKTtcbiAgICAgIGlmIChwYWQpIHtcbiAgICAgICAgLy8gQHRlc3QgQmJveC1QYWRkaW5nXG4gICAgICAgIGRlZiA9IHtcbiAgICAgICAgICBoZWlnaHQ6ICcrJyArIHBhZCxcbiAgICAgICAgICBkZXB0aDogJysnICsgcGFkLFxuICAgICAgICAgIGxzcGFjZTogcGFkLFxuICAgICAgICAgIHdpZHRoOiAnKycgKyAoMiAqIHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpICsgbWF0Y2hbM11cbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHBhcnQubWF0Y2goL14oW2EtejAtOV0rfFxcI1swLTlhLWZdezZ9fFxcI1swLTlhLWZdezN9KSQvaSkpIHtcbiAgICAgIC8vIEB0ZXN0IEJib3gtQmFja2dyb3VuZFxuICAgICAgaWYgKGJhY2tncm91bmQpIHtcbiAgICAgICAgLy8gQHRlc3QgQmJveC1CYWNrZ3JvdW5kLUVycm9yXG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTXVsdGlwbGVCQm94UHJvcGVydHknLCAnJTEgc3BlY2lmaWVkIHR3aWNlIGluICUyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICdCYWNrZ3JvdW5kJywgbmFtZSk7XG4gICAgICB9XG4gICAgICBiYWNrZ3JvdW5kID0gcGFydDtcbiAgICB9IGVsc2UgaWYgKHBhcnQubWF0Y2goL15bLWEtel0rOi9pKSkge1xuICAgICAgLy8gQHRlc3QgQmJveC1GcmFtZVxuICAgICAgaWYgKHN0eWxlKSB7XG4gICAgICAgIC8vIEB0ZXN0IEJib3gtRnJhbWUtRXJyb3JcbiAgICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdNdWx0aXBsZUJCb3hQcm9wZXJ0eScsICclMSBzcGVjaWZpZWQgdHdpY2UgaW4gJTInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1N0eWxlJywgbmFtZSk7XG4gICAgICB9XG4gICAgICBzdHlsZSA9IEJCb3hTdHlsZShwYXJ0KTtcbiAgICB9IGVsc2UgaWYgKHBhcnQgIT09ICcnKSB7XG4gICAgICAvLyBAdGVzdCBCYm94LUdlbmVyYWwtRXJyb3JcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcihcbiAgICAgICAgJ0ludmFsaWRCQm94UHJvcGVydHknLFxuICAgICAgICAnXCIlMVwiIGRvZXNuXFwndCBsb29rIGxpa2UgYSBjb2xvciwgYSBwYWRkaW5nIGRpbWVuc2lvbiwgb3IgYSBzdHlsZScsXG4gICAgICAgIHBhcnQpO1xuICAgIH1cbiAgfVxuICBpZiAoZGVmKSB7XG4gICAgLy8gQHRlc3QgQmJveC1QYWRkaW5nXG4gICAgbWF0aCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFttYXRoXSwgZGVmKTtcbiAgfVxuICBpZiAoYmFja2dyb3VuZCB8fCBzdHlsZSkge1xuICAgIGRlZiA9IHt9O1xuICAgIGlmIChiYWNrZ3JvdW5kKSB7XG4gICAgICAvLyBAdGVzdCBCYm94LUJhY2tncm91bmRcbiAgICAgIE9iamVjdC5hc3NpZ24oZGVmLCB7bWF0aGJhY2tncm91bmQ6IGJhY2tncm91bmR9KTtcbiAgICB9XG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICAvLyBAdGVzdCBCYm94LUZyYW1lXG4gICAgICBPYmplY3QuYXNzaWduKGRlZiwge3N0eWxlOiBzdHlsZX0pO1xuICAgIH1cbiAgICBtYXRoID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3R5bGUnLCBbbWF0aF0sIGRlZik7XG4gIH1cbiAgcGFyc2VyLlB1c2gobWF0aCk7XG59O1xuXG5cbi8vIER1bW15IG1ldGhvZHMuIE5lZWQgdG8gYmUgbWFkZSBTYWZlIHdpdGggc2VjdXJpdHkgY2hlY2suXG5sZXQgQkJveFN0eWxlID0gZnVuY3Rpb24oc3R5bGVzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHN0eWxlcztcbn07XG5cbmxldCBCQm94UGFkZGluZyA9IGZ1bmN0aW9uKHBhZDogc3RyaW5nKSB7XG4gIHJldHVybiBwYWQ7XG59O1xuXG5cbm5ldyBDb21tYW5kTWFwKCdiYm94Jywge2Jib3g6ICdCQm94J30sIEJib3hNZXRob2RzKTtcblxuXG5leHBvcnQgY29uc3QgQmJveENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ2Jib3gnLCB7aGFuZGxlcjoge21hY3JvOiBbJ2Jib3gnXX19XG4pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgYm9sZHN5bWJvbCBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7TW1sTm9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQge1RleENvbnN0YW50fSBmcm9tICcuLi9UZXhDb25zdGFudHMuanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IHtQYXJzZU1ldGhvZH0gZnJvbSAnLi4vVHlwZXMuanMnO1xuaW1wb3J0IHtOb2RlRmFjdG9yeX0gZnJvbSAnLi4vTm9kZUZhY3RvcnkuanMnO1xuaW1wb3J0IFBhcnNlT3B0aW9ucyBmcm9tICcuLi9QYXJzZU9wdGlvbnMuanMnO1xuXG5sZXQgQk9MRFZBUklBTlQ6IHtba2V5OiBzdHJpbmddOiBzdHJpbmd9ID0ge307XG5CT0xEVkFSSUFOVFtUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTF0gPSBUZXhDb25zdGFudC5WYXJpYW50LkJPTEQ7XG5CT0xEVkFSSUFOVFtUZXhDb25zdGFudC5WYXJpYW50LklUQUxJQ10gICAgPSBUZXhDb25zdGFudC5WYXJpYW50LkJPTERJVEFMSUM7XG5CT0xEVkFSSUFOVFtUZXhDb25zdGFudC5WYXJpYW50LkZSQUtUVVJdICAgPSBUZXhDb25zdGFudC5WYXJpYW50LkJPTERGUkFLVFVSO1xuQk9MRFZBUklBTlRbVGV4Q29uc3RhbnQuVmFyaWFudC5TQ1JJUFRdICAgID0gVGV4Q29uc3RhbnQuVmFyaWFudC5CT0xEU0NSSVBUO1xuQk9MRFZBUklBTlRbVGV4Q29uc3RhbnQuVmFyaWFudC5TQU5TU0VSSUZdID0gVGV4Q29uc3RhbnQuVmFyaWFudC5CT0xEU0FOU1NFUklGO1xuQk9MRFZBUklBTlRbJy10ZXgtY2FsbGlncmFwaGljJ10gICA9ICctdGV4LWJvbGQtY2FsbGlncmFwaGljJztcbkJPTERWQVJJQU5UWyctdGV4LW9sZHN0eWxlJ10gICAgICAgPSAnLXRleC1ib2xkLW9sZHN0eWxlJztcbkJPTERWQVJJQU5UWyctdGV4LW1hdGhpdCddICAgICAgICAgPSBUZXhDb25zdGFudC5WYXJpYW50LkJPTERJVEFMSUM7XG5cblxuLy8gTmFtZXNwYWNlXG5leHBvcnQgbGV0IEJvbGRzeW1ib2xNZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBQYXJzZU1ldGhvZD4gPSB7fTtcblxuXG4vKipcbiAqIFBhcnNlIGZ1bmN0aW9uIGZvciBib2xkc3ltYm9sIG1hY3JvLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCB0ZXggcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIG1hY3JvLlxuICovXG5Cb2xkc3ltYm9sTWV0aG9kcy5Cb2xkc3ltYm9sID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBsZXQgYm9sZHN5bWJvbCA9IHBhcnNlci5zdGFjay5lbnZbJ2JvbGRzeW1ib2wnXTtcbiAgcGFyc2VyLnN0YWNrLmVudlsnYm9sZHN5bWJvbCddID0gdHJ1ZTtcbiAgbGV0IG1tbCA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgcGFyc2VyLnN0YWNrLmVudlsnYm9sZHN5bWJvbCddID0gYm9sZHN5bWJvbDtcbiAgcGFyc2VyLlB1c2gobW1sKTtcbn07XG5cblxubmV3IENvbW1hbmRNYXAoJ2JvbGRzeW1ib2wnLCB7Ym9sZHN5bWJvbDogJ0JvbGRzeW1ib2wnfSwgQm9sZHN5bWJvbE1ldGhvZHMpO1xuXG5cbi8qKlxuICogQ3JlYXRlcyB0b2tlbiBub2RlcyBpbiBib2xkIGZvbnQgaWYgcG9zc2libGUuXG4gKiBAcGFyYW0ge05vZGVGYWN0b3J5fSBmYWN0b3J5IFRoZSBjdXJyZW50IG5vZGUgZmFjdG9yeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBraW5kIFRoZSB0eXBlIG9mIHRva2VuIG5vZGUgdG8gY3JlYXRlLlxuICogQHBhcmFtIHthbnl9IGRlZiBQcm9wZXJ0aWVzIGZvciB0aGUgbm9kZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSB0ZXh0IGNvbnRlbnQuXG4gKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgZ2VuZXJhdGVkIHRva2VuIG5vZGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVCb2xkVG9rZW4oZmFjdG9yeTogTm9kZUZhY3RvcnksIGtpbmQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmOiBhbnksIHRleHQ6IHN0cmluZyk6IE1tbE5vZGUgIHtcbiAgbGV0IHRva2VuID0gTm9kZUZhY3RvcnkuY3JlYXRlVG9rZW4oZmFjdG9yeSwga2luZCwgZGVmLCB0ZXh0KTtcbiAgaWYgKGtpbmQgIT09ICdtdGV4dCcgJiZcbiAgICAgIGZhY3RvcnkuY29uZmlndXJhdGlvbi5wYXJzZXIuc3RhY2suZW52Wydib2xkc3ltYm9sJ10pIHtcbiAgICBOb2RlVXRpbC5zZXRQcm9wZXJ0eSh0b2tlbiwgJ2ZpeEJvbGQnLCB0cnVlKTtcbiAgICBmYWN0b3J5LmNvbmZpZ3VyYXRpb24uYWRkTm9kZSgnZml4Qm9sZCcsIHRva2VuKTtcbiAgfVxuICByZXR1cm4gdG9rZW47XG59XG5cblxuLyoqXG4gKiBQb3N0cHJvY2Vzc29yIHRvIHJld3JpdGUgdG9rZW4gbm9kZXMgdG8gYm9sZCBmb250LCBpZiBwb3NzaWJsZS5cbiAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBkYXRhIFRoZSBwYXJzZSBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmV3cml0ZUJvbGRUb2tlbnMoYXJnOiB7ZGF0YTogUGFyc2VPcHRpb25zfSkge1xuICBmb3IgKGxldCBub2RlIG9mIGFyZy5kYXRhLmdldExpc3QoJ2ZpeEJvbGQnKSkge1xuICAgIGlmIChOb2RlVXRpbC5nZXRQcm9wZXJ0eShub2RlLCAnZml4Qm9sZCcpKSB7XG4gICAgICBsZXQgdmFyaWFudCA9IE5vZGVVdGlsLmdldEF0dHJpYnV0ZShub2RlLCAnbWF0aHZhcmlhbnQnKSBhcyBzdHJpbmc7XG4gICAgICBpZiAodmFyaWFudCA9PSBudWxsKSB7XG4gICAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShub2RlLCAnbWF0aHZhcmlhbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkJPTEQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKG5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWF0aHZhcmlhbnQnLCBCT0xEVkFSSUFOVFt2YXJpYW50XSB8fCB2YXJpYW50KTtcbiAgICAgIH1cbiAgICAgIE5vZGVVdGlsLnJlbW92ZVByb3BlcnRpZXMobm9kZSwgJ2ZpeEJvbGQnKTtcbiAgICB9XG4gIH1cbn1cblxuXG5leHBvcnQgY29uc3QgQm9sZHN5bWJvbENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgICAnYm9sZHN5bWJvbCcsIHtcbiAgICAgICAgaGFuZGxlcjoge21hY3JvOiBbJ2JvbGRzeW1ib2wnXX0sXG4gICAgICAgIG5vZGVzOiB7J3Rva2VuJzogY3JlYXRlQm9sZFRva2VufSxcbiAgICAgICAgcG9zdHByb2Nlc3NvcnM6IFtyZXdyaXRlQm9sZFRva2Vuc11cbiAgICB9XG4pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAwOS0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgU3RhY2sgaXRlbXMgZm9yIHBhcnNpbmcgdGhlIGJyYWtldCBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cblxuaW1wb3J0IHtDaGVja1R5cGUsIEJhc2VJdGVtLCBTdGFja0l0ZW19IGZyb20gJy4uL1N0YWNrSXRlbS5qcyc7XG5pbXBvcnQge1RFWENMQVNTfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5cblxuLyoqXG4gKiBBIGJyYS1rZXQgY29tbWFuZC4gQ29sbGF0ZXMgZWxlbWVudHMgZnJvbSB0aGUgb3BlbmluZyBicmFjZSB0byB0aGUgY2xvc2luZ1xuICogYnJhY2UsIGFkZGluZyBiYXJzIHRvIGEgZ2l2ZW4gbWF4aW1hbCBudW1iZXIgKGUuZy4sIG9ubHkgb25lIGluIGNhc2Ugb2ZcbiAqIHNldCkuIFRvIGZpbmFsaXNlIGl0IGFkZHMgdGhlIHN1cnJvdW5kaW5nIGFuZ2xlIGJyYWNrZXRzIG9yIGJyYWNlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJyYWtldEl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdicmFrZXQnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGlzT3BlbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGVja0l0ZW0oaXRlbTogU3RhY2tJdGVtKTogQ2hlY2tUeXBlIHtcbiAgICBpZiAoaXRlbS5pc0tpbmQoJ2Nsb3NlJykpIHtcbiAgICAgIHJldHVybiBbW3RoaXMuZmFjdG9yeS5jcmVhdGUoJ21tbCcsIHRoaXMudG9NbWwoKSldLCB0cnVlXTtcbiAgICB9XG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdtbWwnKSkge1xuICAgICAgdGhpcy5QdXNoKGl0ZW0udG9NbWwoKSk7XG4gICAgICBpZiAodGhpcy5nZXRQcm9wZXJ0eSgnc2luZ2xlJykpIHtcbiAgICAgICAgcmV0dXJuIFtbdGhpcy50b01tbCgpXSwgdHJ1ZV07XG4gICAgICB9XG4gICAgICByZXR1cm4gQmFzZUl0ZW0uZmFpbDtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmNoZWNrSXRlbShpdGVtKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvTW1sKCkge1xuICAgIGxldCBpbm5lciA9IHN1cGVyLnRvTW1sKCk7XG4gICAgbGV0IG9wZW4gPSB0aGlzLmdldFByb3BlcnR5KCdvcGVuJykgYXMgc3RyaW5nO1xuICAgIGxldCBjbG9zZSA9IHRoaXMuZ2V0UHJvcGVydHkoJ2Nsb3NlJykgYXMgc3RyaW5nO1xuICAgIGlmICh0aGlzLmdldFByb3BlcnR5KCdzdHJldGNoeScpKSB7XG4gICAgICByZXR1cm4gUGFyc2VVdGlsLmZlbmNlZCh0aGlzLmZhY3RvcnkuY29uZmlndXJhdGlvbiwgb3BlbiwgaW5uZXIsIGNsb3NlKTtcbiAgICB9XG4gICAgbGV0IGF0dHJzID0ge2ZlbmNlOiB0cnVlLCBzdHJldGNoeTogZmFsc2UsIHN5bW1ldHJpYzogdHJ1ZSwgdGV4Q2xhc3M6IFRFWENMQVNTLk9QRU59O1xuICAgIGxldCBvcGVuTm9kZSA9IHRoaXMuY3JlYXRlKCd0b2tlbicsICdtbycsIGF0dHJzLCBvcGVuKTtcbiAgICBhdHRycy50ZXhDbGFzcyA9IFRFWENMQVNTLkNMT1NFO1xuICAgIGxldCBjbG9zZU5vZGUgPSB0aGlzLmNyZWF0ZSgndG9rZW4nLCAnbW8nLCBhdHRycywgY2xvc2UpO1xuICAgIGxldCBtcm93ID0gdGhpcy5jcmVhdGUoJ25vZGUnLCAnbXJvdycsIFtvcGVuTm9kZSwgaW5uZXIsIGNsb3NlTm9kZV0sXG4gICAgICAgICAgICAgICAgICAgICAgICAge29wZW46IG9wZW4sIGNsb3NlOiBjbG9zZSwgdGV4Q2xhc3M6IFRFWENMQVNTLklOTkVSfSk7XG4gICAgcmV0dXJuIG1yb3c7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgTWV0aG9kcyBmb3IgVGVYIHBhcnNpbmcgb2YgdGhlIGJyYWtldCBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBCYXNlTWV0aG9kcyBmcm9tICcuLi9iYXNlL0Jhc2VNZXRob2RzLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCB7VEVYQ0xBU1N9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5cblxubGV0IEJyYWtldE1ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPiA9IHt9O1xuXG5CcmFrZXRNZXRob2RzLk1hY3JvID0gQmFzZU1ldGhvZHMuTWFjcm87XG5cblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGJyYS1rZXQgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgVGVYIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGN1cnJlbnQgY29udHJvbCBzZXF1ZW5jZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVuIE9wZW5pbmcgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGNsb3NlIENsb3NpbmcgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtib29sZWFufSBzdHJldGNoeSBJcyBpdCBzdHJldGNoeS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBiYXJtYXggTWF4aW11bSBudW1iZXIgb2YgYmFycyBhbGxvd2VkLlxuICovXG5CcmFrZXRNZXRob2RzLkJyYWtldCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBfbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOiBzdHJpbmcsIGNsb3NlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmV0Y2h5OiBib29sZWFuLCBiYXJtYXg6IG51bWJlcikge1xuICBsZXQgbmV4dCA9IHBhcnNlci5HZXROZXh0KCk7XG4gIGlmIChuZXh0ID09PSAnJykge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignTWlzc2luZ0FyZ0ZvcicsICdNaXNzaW5nIGFyZ3VtZW50IGZvciAlMScsIHBhcnNlci5jdXJyZW50Q1MpO1xuICB9XG4gIGxldCBzaW5nbGUgPSB0cnVlO1xuICBpZiAobmV4dCA9PT0gJ3snKSB7XG4gICAgcGFyc2VyLmkrKztcbiAgICBzaW5nbGUgPSBmYWxzZTtcbiAgfVxuICBwYXJzZXIuUHVzaChcbiAgICBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdicmFrZXQnKVxuICAgICAgLnNldFByb3BlcnRpZXMoe2Jhcm1heDogYmFybWF4LCBiYXJjb3VudDogMCwgb3Blbjogb3BlbixcbiAgICAgICAgICAgICAgICAgICAgICBjbG9zZTogY2xvc2UsIHN0cmV0Y2h5OiBzdHJldGNoeSwgc2luZ2xlOiBzaW5nbGV9KSk7XG59O1xuXG5cbi8qKlxuICogR2VuZXJhdGUgYSBiYXIuIElmIGluc2lkZSBhIGJyYS1rZXQgZXhwcmVzc2lvbnMgaXQncyBoYW5kbGVkIGFjY29yZGluZ2x5LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCBUZVggcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgY3VycmVudCBjb250cm9sIHNlcXVlbmNlLlxuICovXG5CcmFrZXRNZXRob2RzLkJhciA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IGMgPSBuYW1lID09PSAnfCcgPyAnfCcgOiAnXFx1MjIyNSc7XG4gIGxldCB0b3AgPSBwYXJzZXIuc3RhY2suVG9wKCk7XG4gIGlmICh0b3Aua2luZCAhPT0gJ2JyYWtldCcgfHxcbiAgICAgIHRvcC5nZXRQcm9wZXJ0eSgnYmFyY291bnQnKSA+PSB0b3AuZ2V0UHJvcGVydHkoJ2Jhcm1heCcpKSB7XG4gICAgbGV0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywge3RleENsYXNzOiBURVhDTEFTUy5PUkQsIHN0cmV0Y2h5OiBmYWxzZX0sIGMpO1xuICAgIHBhcnNlci5QdXNoKG1tbCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChjID09PSAnfCcgJiYgcGFyc2VyLkdldE5leHQoKSA9PT0gJ3wnKSB7XG4gICAgcGFyc2VyLmkrKztcbiAgICBjID0gJ1xcdTIyMjUnO1xuICB9XG4gIGxldCBzdHJldGNoeSA9IHRvcC5nZXRQcm9wZXJ0eSgnc3RyZXRjaHknKTtcbiAgaWYgKCFzdHJldGNoeSkge1xuICAgIGxldCBub2RlID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbW8nLCB7c3RyZXRjaHk6IGZhbHNlLCBicmFrZXRiYXI6IHRydWV9LCBjKTtcbiAgICBwYXJzZXIuUHVzaChub2RlKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbXSwge3RleENsYXNzOiBURVhDTEFTUy5DTE9TRX0pO1xuICBwYXJzZXIuUHVzaChub2RlKTtcbiAgdG9wLnNldFByb3BlcnR5KCdiYXJjb3VudCcsIHRvcC5nZXRQcm9wZXJ0eSgnYmFyY291bnQnKSBhcyBudW1iZXIgKyAxKTtcbiAgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywge3N0cmV0Y2h5OiB0cnVlLCBicmFrZXRiYXI6IHRydWV9LCBjKTtcbiAgcGFyc2VyLlB1c2gobm9kZSk7XG4gIG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbXSwge3RleENsYXNzOiBURVhDTEFTUy5PUEVOfSk7XG4gIHBhcnNlci5QdXNoKG5vZGUpO1xufTtcblxuXG5leHBvcnQgZGVmYXVsdCBCcmFrZXRNZXRob2RzO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgTWFwcGluZ3MgZm9yIFRlWCBwYXJzaW5nIG9mIHRoZSBicmFrZXQgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbW1hbmRNYXAsIE1hY3JvTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IEJyYWtldE1ldGhvZHMgZnJvbSAnLi9CcmFrZXRNZXRob2RzLmpzJztcblxuXG4vKipcbiAqIE1hY3JvcyBmb3IgYnJha2V0IHBhY2thZ2UuXG4gKi9cbm5ldyBDb21tYW5kTWFwKCdCcmFrZXQtbWFjcm9zJywge1xuICBicmE6IFsnTWFjcm8nLCAne1xcXFxsYW5nbGUgeyMxfSBcXFxcdmVydH0nLCAxXSxcbiAga2V0OiBbJ01hY3JvJywgJ3tcXFxcdmVydCB7IzF9IFxcXFxyYW5nbGV9JywgMV0sXG4gIGJyYWtldDogWydCcmFrZXQnLCAnXFx1MjdFOCcsICdcXHUyN0U5JywgZmFsc2UsIEluZmluaXR5XSxcbiAgJ3NldCc6IFsnQnJha2V0JywgJ3snLCAnfScsIGZhbHNlLCAxXSxcbiAgQnJhOiBbJ01hY3JvJywgJ3tcXFxcbGVmdFxcXFxsYW5nbGUgeyMxfSBcXFxccmlnaHRcXFxcdmVydH0nLCAxXSxcbiAgS2V0OiBbJ01hY3JvJywgJ3tcXFxcbGVmdFxcXFx2ZXJ0IHsjMX0gXFxcXHJpZ2h0XFxcXHJhbmdsZX0nLCAxXSxcbiAgQnJha2V0OiBbJ0JyYWtldCcsICdcXHUyN0U4JywgJ1xcdTI3RTknLCB0cnVlLCBJbmZpbml0eV0sXG4gIFNldDogWydCcmFrZXQnLCAneycsICd9JywgdHJ1ZSwgMV0sXG4gIC8vIE5vdCBwYXJ0IG9mIHRoZSBMYVRlWCBwYWNrYWdlOlxuICBrZXRicmE6IFsnTWFjcm8nLCAne1xcXFx2ZXJ0IHsjMX0gXFxcXHJhbmdsZVxcXFxsYW5nbGUgeyMyfSBcXFxcdmVydH0nLCAyXSxcbiAgS2V0YnJhOiBbJ01hY3JvJywgJ3tcXFxcbGVmdFxcXFx2ZXJ0IHsjMX0gXFxcXHJpZ2h0XFxcXHJhbmdsZVxcXFxsZWZ0XFxcXGxhbmdsZSB7IzJ9IFxcXFxyaWdodFxcXFx2ZXJ0fScsIDJdLFxuICAvLyBUcmVhdG1lbnQgb2YgYmFyLlxuICAnfCc6ICdCYXInXG59LCBCcmFrZXRNZXRob2RzKTtcblxuXG4vKipcbiAqIENoYXJhY3RlciBtYXAgZm9yIGJyYWtldCBwYWNrYWdlLlxuICovXG5uZXcgTWFjcm9NYXAoJ0JyYWtldC1jaGFyYWN0ZXJzJywge1xuICAnfCc6ICdCYXInXG59LCBCcmFrZXRNZXRob2RzKTtcblxuXG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBCcmFrZXQgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtCcmFrZXRJdGVtfSBmcm9tICcuL0JyYWtldEl0ZW1zLmpzJztcbmltcG9ydCAnLi9CcmFrZXRNYXBwaW5ncy5qcyc7XG5cblxuZXhwb3J0IGNvbnN0IEJyYWtldENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ2JyYWtldCcsIHtcbiAgICBoYW5kbGVyOiB7XG4gICAgICBjaGFyYWN0ZXI6IFsnQnJha2V0LWNoYXJhY3RlcnMnXSxcbiAgICAgIG1hY3JvOiBbJ0JyYWtldC1tYWNyb3MnXVxuICAgIH0sXG4gICAgaXRlbXM6IHtcbiAgICAgIFtCcmFrZXRJdGVtLnByb3RvdHlwZS5raW5kXTogQnJha2V0SXRlbSxcbiAgICB9XG4gIH1cbik7XG5cblxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgUG9zdGZpbHRlciB1dGlsaXR5IGZvciB0aGUgQnVzc3Byb29mcyBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cblxuaW1wb3J0IFBhcnNlT3B0aW9ucyBmcm9tICcuLi9QYXJzZU9wdGlvbnMuanMnO1xuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4uL05vZGVVdGlsLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcblxuaW1wb3J0IHtNbWxOb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQge1Byb3BlcnR5fSBmcm9tICcuLi8uLi8uLi9jb3JlL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge01hdGhJdGVtfSBmcm9tICcuLi8uLi8uLi9jb3JlL01hdGhJdGVtLmpzJztcbmltcG9ydCB7TWF0aERvY3VtZW50fSBmcm9tICcuLi8uLi8uLi9jb3JlL01hdGhEb2N1bWVudC5qcyc7XG5cblxudHlwZSBNQVRISVRFTSA9IE1hdGhJdGVtPGFueSwgYW55LCBhbnk+O1xudHlwZSBNQVRIRE9DVU1FTlQgPSBNYXRoRG9jdW1lbnQ8YW55LCBhbnksIGFueT47XG5cbnR5cGUgRmlsdGVyRGF0YSA9IHttYXRoOiBNQVRISVRFTSwgZG9jdW1lbnQ6IE1BVEhET0NVTUVOVCwgZGF0YTogUGFyc2VPcHRpb25zfTtcblxuLyoqXG4gKiAgR2xvYmFsIGNvbnN0YW50cyBsb2NhbCB0byB0aGUgbW9kdWxlLiBUaGV5IGluc3RhbnRpYXRlIGFuIG91dHB1dCBqYXggZm9yXG4gKiAgYm91bmRpbmcgYm94IGNvbXB1dGF0aW9uLlxuICovXG5sZXQgZG9jOiBNQVRIRE9DVU1FTlQgPSBudWxsO1xubGV0IGl0ZW06IE1BVEhJVEVNID0gbnVsbDtcblxuXG4vKipcbiAqIEdldCB0aGUgYm91bmRpbmcgYm94IG9mIGEgbm9kZS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSBUaGUgdGFyZ2V0IG5vZGUuXG4gKi9cbmxldCBnZXRCQm94ID0gZnVuY3Rpb24obm9kZTogTW1sTm9kZSkge1xuICBpdGVtLnJvb3QgPSBub2RlO1xuICAgIGxldCB7dzogd2lkdGh9ID0gKGRvYy5vdXRwdXRKYXggYXMgYW55KS5nZXRCQm94KGl0ZW0sIGRvYyk7XG4gIHJldHVybiB3aWR0aDtcbn07XG5cblxuLyoqXG4gKiBHZXQgdGhlIGFjdHVhbCB0YWJsZSB0aGF0IHJlcHJlc2VudHMgdGhlIGluZmVyZW5jZSBydWxlLCBpLmUuLCB0aGUgcnVsZVxuICogd2l0aG91dCB0aGUgbGFiZWwuIFdlIGlnbm9yZSBwcmVjZWRpbmcgZWxlbWVudHMgb3Igc3BhY2VzLlxuICpcbiAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSBUaGUgb3V0IG5vZGUgcmVwcmVzZW50aW5nIHRoZSBpbmZlcmVuY2UuXG4gKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgYWN0dWFsIHRhYmxlIHJlcHJlc2VudGluZyB0aGUgaW5mZXJlbmNlIHJ1bGUuXG4gKi9cbmxldCBnZXRSdWxlID0gZnVuY3Rpb24obm9kZTogTW1sTm9kZSk6IE1tbE5vZGUge1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlIChub2RlICYmICFOb2RlVXRpbC5pc1R5cGUobm9kZSwgJ210YWJsZScpKSB7XG4gICAgaWYgKE5vZGVVdGlsLmlzVHlwZShub2RlLCAndGV4dCcpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKE5vZGVVdGlsLmlzVHlwZShub2RlLCAnbXJvdycpKSB7XG4gICAgICBub2RlID0gbm9kZS5jaGlsZE5vZGVzWzBdIGFzIE1tbE5vZGU7XG4gICAgICBpID0gMDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBub2RlID0gbm9kZS5wYXJlbnQuY2hpbGROb2Rlc1tpXSBhcyBNbWxOb2RlO1xuICAgIGkrKztcbiAgfVxuICByZXR1cm4gbm9kZTtcbn07XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvbnZlbmllbmNlIG1ldGhvZHMgZm9yIHJldHJpZXZpbmcgYml0cyBvZiB0aGUgcHJvb2YgdHJlZS5cbiAqL1xuXG4vKipcbiAqIEdldHMgcHJlbWlzZXMgb2YgYW4gaW5mZXJlbmNlIHJ1bGUuXG4gKiBAcGFyYW0ge01tbE5vZGV9IHJ1bGUgVGhlIHJ1bGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIFVwIG9yIGRvd24uXG4gKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgcHJlbWlzc2VzLlxuICovXG5sZXQgZ2V0UHJlbWlzZXMgPSBmdW5jdGlvbihydWxlOiBNbWxOb2RlLCBkaXJlY3Rpb246IHN0cmluZyk6IE1tbE5vZGUge1xuICByZXR1cm4gcnVsZS5jaGlsZE5vZGVzW2RpcmVjdGlvbiA9PT0gJ3VwJyA/IDEgOiAwXS5jaGlsZE5vZGVzWzBdLlxuICAgIGNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdIGFzIE1tbE5vZGU7XG59O1xuXG5cbi8qKlxuICogR2V0cyBudGggcHJlbWlzZS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gcHJlbWlzZXMgVGhlIHByZW1pc2VzLlxuICogQHBhcmFtIHtudW1iZXJ9IG4gTnVtYmVyIG9mIHByZW1pc2UgdG8gZ2V0LlxuICogQHJldHVybiB7TW1sTm9kZX0gVGhlIG50aCBwcmVtaXNlLlxuICovXG5sZXQgZ2V0UHJlbWlzZSA9IGZ1bmN0aW9uKHByZW1pc2VzOiBNbWxOb2RlLCBuOiBudW1iZXIpOiBNbWxOb2RlIHtcbiAgcmV0dXJuIHByZW1pc2VzLmNoaWxkTm9kZXNbbl0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdIGFzIE1tbE5vZGU7XG59O1xuXG5cbi8qKlxuICogR2V0cyBmaXJzdCBwcmVtaXNlLlxuICogQHBhcmFtIHtNbWxOb2RlfSBwcmVtaXNlcyBUaGUgcHJlbWlzZXMuXG4gKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgZmlyc3QgcHJlbWlzZS5cbiAqL1xubGV0IGZpcnN0UHJlbWlzZSA9IGZ1bmN0aW9uKHByZW1pc2VzOiBNbWxOb2RlKTogTW1sTm9kZSB7XG4gIHJldHVybiBnZXRQcmVtaXNlKHByZW1pc2VzLCAwKSBhcyBNbWxOb2RlO1xufTtcblxuXG4vKipcbiAqIEdldHMgbGFzdCBwcmVtaXNlLlxuICogQHBhcmFtIHtNbWxOb2RlfSBwcmVtaXNlcyBUaGUgcHJlbWlzZXMuXG4gKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgbGFzdCBwcmVtaXNlLlxuICovXG5sZXQgbGFzdFByZW1pc2UgPSBmdW5jdGlvbihwcmVtaXNlczogTW1sTm9kZSk6IE1tbE5vZGUge1xuICByZXR1cm4gZ2V0UHJlbWlzZShwcmVtaXNlcywgcHJlbWlzZXMuY2hpbGROb2Rlcy5sZW5ndGggLSAxKTtcbn07XG5cblxuLyoqXG4gKiBHZXQgY29uY2x1c2lvbiBpbiBhbiBpbmZlcmVuY2UgcnVsZS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gcnVsZSBUaGUgcnVsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXJlY3Rpb24gVXAgb3IgZG93bi5cbiAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSBjb25jbHVzaW9uLlxuICovXG5sZXQgZ2V0Q29uY2x1c2lvbiA9IGZ1bmN0aW9uKHJ1bGU6IE1tbE5vZGUsIGRpcmVjdGlvbjogc3RyaW5nKTogTW1sTm9kZSB7XG4gIHJldHVybiBydWxlLmNoaWxkTm9kZXNbZGlyZWN0aW9uID09PSAndXAnID8gMCA6IDFdLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdIGFzIE1tbE5vZGU7XG59O1xuXG5cbi8qKlxuICogR2V0cyB0aGUgYWN0dWFsIGNvbHVtbiBlbGVtZW50IGluIGFuIGluZmVyZW5jZSBydWxlLiBJLmUuLCBkaWdzIGRvd24gdGhyb3VnaFxuICogcm93LCBwYWRkaW5nIGFuZCBzcGFjZSBlbGVtZW50cy5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gaW5mIFRoZSBydWxlLlxuICogQHJldHVybiB7TW1sTm9kZX0gVGhlIG10ZCBlbGVtZW50LlxuICovXG5sZXQgZ2V0Q29sdW1uID0gZnVuY3Rpb24oaW5mOiBNbWxOb2RlKTogTW1sTm9kZSB7XG4gIHdoaWxlIChpbmYgJiYgIU5vZGVVdGlsLmlzVHlwZShpbmYsICdtdGQnKSkge1xuICAgIGluZiA9IGluZi5wYXJlbnQgYXMgTW1sTm9kZTtcbiAgfVxuICByZXR1cm4gaW5mO1xufTtcblxuXG4vKipcbiAqIEdldHMgdGhlIG5leHQgc2libGluZyBvZiBhbiBpbmZlcmVuY2UgcnVsZS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gaW5mIFRoZSBpbmZlcmVuY2UgcnVsZS5cbiAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSBuZXh0IHNpYmxpbmcuXG4gKi9cbmxldCBuZXh0U2libGluZyA9IGZ1bmN0aW9uKGluZjogTW1sTm9kZSk6IE1tbE5vZGUge1xuICByZXR1cm4gaW5mLnBhcmVudC5jaGlsZE5vZGVzW2luZi5wYXJlbnQuY2hpbGROb2Rlcy5pbmRleE9mKGluZikgKyAxXSBhcyBNbWxOb2RlO1xufTtcblxuXG4vKipcbiAqIEdldHMgdGhlIHByZXZpb3VzIHNpYmxpbmcgb2YgYW4gaW5mZXJlbmNlIHJ1bGUuXG4gKiBAcGFyYW0ge01tbE5vZGV9IGluZiBUaGUgaW5mZXJlbmNlIHJ1bGUuXG4gKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgcHJldmlvdXMgc2libGluZy5cbiAqL1xuLy8gQHRzLWlnbm9yZVxubGV0IHByZXZpb3VzU2libGluZyA9IGZ1bmN0aW9uKGluZjogTW1sTm9kZSk6IE1tbE5vZGUge1xuICByZXR1cm4gaW5mLnBhcmVudC5jaGlsZE5vZGVzW2luZi5wYXJlbnQuY2hpbGROb2Rlcy5pbmRleE9mKGluZikgLSAxXSBhcyBNbWxOb2RlO1xufTtcblxuXG4vKipcbiAqIEdldCB0aGUgcGFyZW50IGluZmVyZW5jZSBydWxlLlxuICogQHBhcmFtIHtNbWxOb2RlfSBpbmYgVGhlIGluZmVyZW5jZSBydWxlLlxuICogQHJldHVybiB7TW1sTm9kZX0gSXRzIHBhcmVudC5cbiAqL1xubGV0IGdldFBhcmVudEluZiA9IGZ1bmN0aW9uKGluZjogTW1sTm9kZSk6IE1tbE5vZGUge1xuICB3aGlsZSAoaW5mICYmIGdldFByb3BlcnR5KGluZiwgJ2luZmVyZW5jZScpID09IG51bGwpIHtcbiAgICBpbmYgPSBpbmYucGFyZW50IGFzIE1tbE5vZGU7XG4gIH1cbiAgcmV0dXJuIGluZjtcbn07XG5cblxuLy8gQ29tcHV0ZXMgYmJveCBzcGFjZXNcbi8vXG4vL1xuXG4vKipcbiAqIENvbXB1dGVzIHNwYWNpbmcgbGVmdCBvciByaWdodCBvZiBhbiBpbmZlcmVuY2UgcnVsZS4gSW4gdGhlIGNhc2Ugb2ZcbiAqIHJpZ2h0OiByaWdodCBzcGFjZSArIHJpZ2h0IGxhYmVsXG4gKiBsZWZ0OiBsZWZ0IHNwYWNlICsgbGVmdCBsYWJlbFxuICogQHBhcmFtIHtNbWxOb2RlfSBpbmYgVGhlIG92ZXJhbGwgcHJvb2YgdHJlZS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gcnVsZSBUaGUgcGFydGljdWxhciBpbmZlcmVuY2UgcnVsZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbiA9IGZhbHNlfSByaWdodCBUcnVlIGZvciByaWdodCwgby93IGxlZnQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBzcGFjaW5nIG5leHQgdG8gdGhlIHJ1bGUuXG4gKi9cbmxldCBnZXRTcGFjZXMgPSBmdW5jdGlvbihpbmY6IE1tbE5vZGUsIHJ1bGU6IE1tbE5vZGUsIHJpZ2h0OiBib29sZWFuID0gZmFsc2UpOiBudW1iZXIge1xuICBsZXQgcmVzdWx0ID0gMDtcbiAgaWYgKGluZiA9PT0gcnVsZSkge1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbiAgaWYgKGluZiAhPT0gcnVsZS5wYXJlbnQpIHtcbiAgICBsZXQgY2hpbGRyZW4gPSBpbmYuY2hpbGROb2RlcyBhcyBNbWxOb2RlW107XG4gICAgbGV0IGluZGV4ID0gcmlnaHQgPyBjaGlsZHJlbi5sZW5ndGggLSAxIDogMDtcbiAgICBpZiAoTm9kZVV0aWwuaXNUeXBlKGNoaWxkcmVuW2luZGV4XSwgJ21zcGFjZScpKSB7XG4gICAgICByZXN1bHQgKz0gZ2V0QkJveChjaGlsZHJlbltpbmRleF0pO1xuICAgIH1cbiAgICBpbmYgPSBydWxlLnBhcmVudDtcbiAgfVxuICBpZiAoaW5mID09PSBydWxlKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBsZXQgY2hpbGRyZW4gPSBpbmYuY2hpbGROb2RlcyBhcyBNbWxOb2RlW107XG4gIGxldCBpbmRleCA9IHJpZ2h0ID8gY2hpbGRyZW4ubGVuZ3RoIC0gMSA6IDA7XG4gIGlmIChjaGlsZHJlbltpbmRleF0gIT09IHJ1bGUpIHtcbiAgICByZXN1bHQgKz0gZ2V0QkJveChjaGlsZHJlbltpbmRleF0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8vIC0gR2V0IHJ1bGUgVCBmcm9tIFdyYXBwZXIgVy5cbi8vIC0gR2V0IGNvbmNsdXNpb24gQyBpbiBULlxuLy8gLSB3OiBQcmVjZWRpbmcvZm9sbG93aW5nIHNwYWNlL2xhYmVsLlxuLy8gLSAoeCAtIHkpLzI6IERpc3RhbmNlIGZyb20gbGVmdCBib3VuZGFyeSB0byBtaWRkbGUgb2YgQy5cbi8qKlxuICogQ29tcHV0ZXMgYW4gc3BhY2UgYWRqdXN0bWVudCB2YWx1ZSB0byBtb3ZlIHRoZSBpbmZlcmVuY2UgcnVsZS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gaW5mIFRoZSBpbmZlcmVuY2UgcnVsZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbiA9IGZhbHNlfSByaWdodCBUcnVlIGlmIGFkanVzdG1lbnRzIGFyZSBvbiB0aGUgcmlnaHQuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBhZGp1c3RtZW50IHZhbHVlLlxuICovXG5sZXQgYWRqdXN0VmFsdWUgPSBmdW5jdGlvbihpbmY6IE1tbE5vZGUsIHJpZ2h0OiBib29sZWFuID0gZmFsc2UpOiBudW1iZXIge1xuICBsZXQgcnVsZSA9IGdldFJ1bGUoaW5mKTtcbiAgbGV0IGNvbmMgPSBnZXRDb25jbHVzaW9uKHJ1bGUsIGdldFByb3BlcnR5KHJ1bGUsICdpbmZlcmVuY2VSdWxlJykgYXMgc3RyaW5nKTtcbiAgLy8gVE9ETzogIEhlcmUgd2UgaGF2ZSB0byBpbXByb3ZlIHNlcXVlbnQgYWRqdXN0bWVudCFcbiAgbGV0IHcgPSBnZXRTcGFjZXMoaW5mLCBydWxlLCByaWdodCk7XG4gIGxldCB4ID0gZ2V0QkJveChydWxlKTtcbiAgbGV0IHkgPSBnZXRCQm94KGNvbmMpO1xuICByZXR1cm4gdyArICgoeCAtIHkpIC8gMik7XG59O1xuXG5cbi8qKlxuICogQWRkcyAocG9zaXRpdmUgb3IgbmVnYXRpdmUpIHNwYWNlIGluIHRoZSBjb2x1bW4gY29udGFpbmluZyB0aGUgaW5mZXJlbmNlIHJ1bGUuXG4gKiBAcGFyYW0ge1BhcnNlT3B0aW9uc30gY29uZmlnIFRoZSBwYXJzZXIgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gaW5mIFRoZSBpbmZlcmVuY2UgcnVsZSB0byBwbGFjZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBzcGFjZSBUaGUgc3BhY2UgdG8gYmUgYWRkZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW4gPSBmYWxzZX0gcmlnaHQgVHJ1ZSBpZiBhZGp1c3RtZW50IGlzIG9uIHRoZSByaWdodC5cbiAqL1xubGV0IGFkZFNwYWNlID0gZnVuY3Rpb24oY29uZmlnOiBQYXJzZU9wdGlvbnMsIGluZjogTW1sTm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlOiBudW1iZXIsIHJpZ2h0OiBib29sZWFuID0gZmFsc2UpIHtcbiAgaWYgKGdldFByb3BlcnR5KGluZiwgJ2luZmVyZW5jZVJ1bGUnKSB8fFxuICAgICAgZ2V0UHJvcGVydHkoaW5mLCAnbGFiZWxsZWRSdWxlJykpIHtcbiAgICBjb25zdCBtcm93ID0gY29uZmlnLm5vZGVGYWN0b3J5LmNyZWF0ZSgnbm9kZScsICdtcm93Jyk7XG4gICAgaW5mLnBhcmVudC5yZXBsYWNlQ2hpbGQobXJvdywgaW5mKTtcbiAgICBtcm93LnNldENoaWxkcmVuKFtpbmZdKTtcbiAgICBtb3ZlUHJvcGVydGllcyhpbmYsIG1yb3cpO1xuICAgIGluZiA9IG1yb3c7XG4gIH1cbiAgLy8gVE9ETzogU2ltcGxpZnkgYmVsb3cgYXMgd2Ugbm93IGhhdmUgYSBkZWZpbml0ZSBtcm93LlxuICBjb25zdCBpbmRleCA9IHJpZ2h0ID8gaW5mLmNoaWxkTm9kZXMubGVuZ3RoIC0gMSA6IDA7XG4gIGxldCBtc3BhY2UgPSBpbmYuY2hpbGROb2Rlc1tpbmRleF0gYXMgTW1sTm9kZTtcbiAgaWYgKE5vZGVVdGlsLmlzVHlwZShtc3BhY2UsICdtc3BhY2UnKSkge1xuICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShcbiAgICAgIG1zcGFjZSwgJ3dpZHRoJyxcbiAgICAgIFBhcnNlVXRpbC5FbShQYXJzZVV0aWwuZGltZW4yZW0oXG4gICAgICAgIE5vZGVVdGlsLmdldEF0dHJpYnV0ZShtc3BhY2UsICd3aWR0aCcpIGFzIHN0cmluZykgKyBzcGFjZSkpO1xuICAgIHJldHVybjtcbiAgfVxuICBtc3BhY2UgPSBjb25maWcubm9kZUZhY3RvcnkuY3JlYXRlKCdub2RlJywgJ21zcGFjZScsIFtdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt3aWR0aDogUGFyc2VVdGlsLkVtKHNwYWNlKX0pO1xuICBpZiAocmlnaHQpIHtcbiAgICBpbmYuYXBwZW5kQ2hpbGQobXNwYWNlKTtcbiAgICByZXR1cm47XG4gIH1cbiAgbXNwYWNlLnBhcmVudCA9IGluZjtcbiAgaW5mLmNoaWxkTm9kZXMudW5zaGlmdChtc3BhY2UpO1xufTtcblxuXG4vKipcbiAqIFByb3BhZ2F0ZXMgcHJvcGVydGllcyB1cCB0aGUgdHJlZS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gc3JjIFRoZSBzb3VyY2Ugbm9kZS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gZGVzdCBUaGUgZGVzdGluYXRpb24gbm9kZS5cbiAqL1xubGV0IG1vdmVQcm9wZXJ0aWVzID0gZnVuY3Rpb24oc3JjOiBNbWxOb2RlLCBkZXN0OiBNbWxOb2RlKSB7XG4gIGxldCBwcm9wcyA9IFsnaW5mZXJlbmNlJywgJ3Byb29mJywgJ21heEFkanVzdCcsICdsYWJlbGxlZFJ1bGUnXTtcbiAgcHJvcHMuZm9yRWFjaCh4ID0+IHtcbiAgICBsZXQgdmFsdWUgPSBnZXRQcm9wZXJ0eShzcmMsIHgpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICBzZXRQcm9wZXJ0eShkZXN0LCB4LCB2YWx1ZSk7XG4gICAgICByZW1vdmVQcm9wZXJ0eShzcmMsIHgpO1xuICAgIH1cbiAgfSk7XG59O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgZGVhbCB3aXRoIHNlcXVlbnRzLiBUaGVyZSBhcmUgc3RpbGwgaXNzdWVzIHdpdGggdGhlXG4gKiBzcGF0aWFsIGxheW91dCwgdGhvdWdoLlxuICovXG4vLyBTZXF1ZW50cyBsb29rIGxpa2UgdGhpczogdGFibGUgcm93IDMgY2VsbHNcbi8vIFRoZSB0YWJsZSBoYXMgdGhlICdzZXF1ZW50JyBwcm9wZXJ0eS5cbi8vIFRoZSByb3cgaXMgdGhlIG5vZGUgdGhhdCBpcyBhY3R1YWxseSBzYXZlZCBpbiB0aGUgY29uZmlnIG9iamVjdC5cbi8qKlxuICogTWV0aG9kIHRvIGFkanVzdCBzZXF1ZW50IHBvc2l0aW9uaW5nIGFmdGVyIHRoZSB0cmVlIGlzIGNvbXB1dGVkLlxuICogQHBhcmFtIHtQYXJzZU9wdGlvbnN9IGNvbmZpZyBQYXJzZXIgY29uZmlndXJhdGlvbiBvcHRpb25zLlxuICovXG5sZXQgYWRqdXN0U2VxdWVudHMgPSBmdW5jdGlvbihjb25maWc6IFBhcnNlT3B0aW9ucykge1xuICBsZXQgc2VxdWVudHMgPSBjb25maWcubm9kZUxpc3RzWydzZXF1ZW50J107XG4gIGlmICghc2VxdWVudHMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgZm9yIChsZXQgaSA9IHNlcXVlbnRzLmxlbmd0aCAtIDEsIHNlcTsgc2VxID0gc2VxdWVudHNbaV07IGktLSkge1xuICAgIGlmIChnZXRQcm9wZXJ0eShzZXEsICdzZXF1ZW50UHJvY2Vzc2VkJykpIHtcbiAgICAgIHJlbW92ZVByb3BlcnR5KHNlcSwgJ3NlcXVlbnRQcm9jZXNzZWQnKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBsZXQgY29sbGVjdCA9IFtdO1xuICAgIGxldCBpbmYgPSBnZXRQYXJlbnRJbmYoc2VxKTtcbiAgICBpZiAoZ2V0UHJvcGVydHkoaW5mLCAnaW5mZXJlbmNlJykgIT09IDEpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb2xsZWN0LnB1c2goc2VxKTtcbiAgICB3aGlsZSAoZ2V0UHJvcGVydHkoaW5mLCAnaW5mZXJlbmNlJykgPT09IDEpIHtcbiAgICAgIC8vIEluIGNhc2Ugd2UgaGF2ZSBhIHRhYmxlIHdpdGggYSBsYWJlbC5cbiAgICAgIGluZiA9IGdldFJ1bGUoaW5mKTtcbiAgICAgIGxldCBwcmVtaXNlID0gZmlyc3RQcmVtaXNlKGdldFByZW1pc2VzKGluZiwgZ2V0UHJvcGVydHkoaW5mLCAnaW5mZXJlbmNlUnVsZScpIGFzIHN0cmluZykpO1xuICAgICAgbGV0IHNlcXVlbnQgPSAoZ2V0UHJvcGVydHkocHJlbWlzZSwgJ2luZmVyZW5jZVJ1bGUnKSkgP1xuICAgICAgICAvLyBJZiB0aGUgZmlyc3QgcHJlbWlzZSBpcyBhbiBpbmZlcmVuY2UgcnVsZSwgY2hlY2sgdGhlIGNvbmNsdXNpb25zIGZvciBhIHNlcXVlbnQuXG4gICAgICAgIGdldENvbmNsdXNpb24ocHJlbWlzZSwgZ2V0UHJvcGVydHkocHJlbWlzZSwgJ2luZmVyZW5jZVJ1bGUnKSBhcyBzdHJpbmcpIDpcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGl0IGlzIGEgaHlwIGFuZCB3ZSBoYXZlIHRvIGNoZWNrIHRoZSBmb3JtdWxhIGl0c2VsZi5cbiAgICAgICAgcHJlbWlzZTtcbiAgICAgIGlmIChnZXRQcm9wZXJ0eShzZXF1ZW50LCAnc2VxdWVudCcpKSB7XG4gICAgICAgIHNlcSA9IHNlcXVlbnQuY2hpbGROb2Rlc1swXSBhcyBNbWxOb2RlO1xuICAgICAgICBjb2xsZWN0LnB1c2goc2VxKTtcbiAgICAgICAgc2V0UHJvcGVydHkoc2VxLCAnc2VxdWVudFByb2Nlc3NlZCcsIHRydWUpO1xuICAgICAgfVxuICAgICAgaW5mID0gcHJlbWlzZTtcbiAgICB9XG4gICAgYWRqdXN0U2VxdWVudFBhaXJ3aXNlKGNvbmZpZywgY29sbGVjdCk7XG4gIH1cbn07XG5cblxuLyoqXG4gKiBBZGQgc3BhY2VzIHRvIHRoZSBzZXF1ZW50cyB3aGVyZSBuZWNlc3NhcnkuXG4gKiBAcGFyYW0ge1BhcnNlT3B0aW9uc30gY29uZmlnIFBhcnNlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gKiBAcGFyYW0ge01tbE5vZGV9IHNlcXVlbnQgVGhlIHNlcXVlbnQgaW5mZXJlbmNlIHJ1bGUuXG4gKiBAcGFyYW0ge251bWJlcn0gcG9zaXRpb24gUG9zaXRpb24gb2YgZm9ybXVsYSB0byBhZGp1c3QgKDAgb3IgMikuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIExlZnQgb3IgcmlnaHQgb2YgdGhlIHR1cm5zdHlsZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSB3aWR0aCBUaGUgc3BhY2UgdG8gYWRkIHRvIHRoZSBmb3JtdWxhcy5cbiAqL1xuY29uc3QgYWRkU2VxdWVudFNwYWNlID0gZnVuY3Rpb24oY29uZmlnOiBQYXJzZU9wdGlvbnMsIHNlcXVlbnQ6IE1tbE5vZGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogbnVtYmVyLCBkaXJlY3Rpb246IHN0cmluZywgd2lkdGg6IG51bWJlcikge1xuICBsZXQgbXNwYWNlID0gY29uZmlnLm5vZGVGYWN0b3J5LmNyZWF0ZSgnbm9kZScsICdtc3BhY2UnLCBbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3dpZHRoOiBQYXJzZVV0aWwuRW0od2lkdGgpfSk7XG4gIGlmIChkaXJlY3Rpb24gPT09ICdsZWZ0Jykge1xuICAgIGxldCByb3cgPSBzZXF1ZW50LmNoaWxkTm9kZXNbcG9zaXRpb25dLmNoaWxkTm9kZXNbMF0gYXMgTW1sTm9kZTtcbiAgICBtc3BhY2UucGFyZW50ID0gcm93O1xuICAgIHJvdy5jaGlsZE5vZGVzLnVuc2hpZnQobXNwYWNlKTtcbiAgfSBlbHNlIHtcbiAgICBzZXF1ZW50LmNoaWxkTm9kZXNbcG9zaXRpb25dLmFwcGVuZENoaWxkKG1zcGFjZSk7XG4gIH1cbiAgc2V0UHJvcGVydHkoc2VxdWVudC5wYXJlbnQsICdzZXF1ZW50QWRqdXN0XycgKyBkaXJlY3Rpb24sIHdpZHRoKTtcbn07XG5cblxuLyoqXG4gKiBBZGp1c3RzIHRoZSBzZXF1ZW50IHBvc2l0aW9uaW5nIGZvciBhIGxpc3Qgb2YgaW5mZXJlbmNlIHJ1bGVzIGJ5IHBhaXJ3aXNlXG4gKiBhZGp1c3RpbmcgdGhlIHdpZHRoIG9mIGZvcm11bGFzIGluIHNlcXVlbnRzLiBJLmUuLFxuICogICAgQSxCIHwtIENcbiAqIC0tLS0tLS0tLS0tLVxuICogICAgQSB8LSBCLENcbiAqXG4gKiB3aWxsIGJlIGFkanVzdGVkIHRvXG4gKlxuICogICAgQSwgQiB8LSBDXG4gKiAtLS0tLS0tLS0tLS0tLS0tXG4gKiAgICAgICBBIHwtIEIsQ1xuICpcbiAqIEBwYXJhbSB7UGFyc2VPcHRpb25zfSBjb25maWcgUGFyc2VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy5cbiAqIEBwYXJhbSB7TW1sTm9kZVtdfSBzZXF1ZW50cyBUaGUgbGlzdCBvZiBzZXF1ZW50cy5cbiAqL1xuY29uc3QgYWRqdXN0U2VxdWVudFBhaXJ3aXNlID0gZnVuY3Rpb24oY29uZmlnOiBQYXJzZU9wdGlvbnMsIHNlcXVlbnRzOiBNbWxOb2RlW10pIHtcbiAgbGV0IHRvcCA9IHNlcXVlbnRzLnBvcCgpO1xuICB3aGlsZSAoc2VxdWVudHMubGVuZ3RoKSB7XG4gICAgbGV0IGJvdHRvbSA9IHNlcXVlbnRzLnBvcCgpO1xuICAgIGxldCBbbGVmdCwgcmlnaHRdID0gY29tcGFyZVNlcXVlbnRzKHRvcCwgYm90dG9tKTtcbiAgICBpZiAoZ2V0UHJvcGVydHkodG9wLnBhcmVudCwgJ2F4aW9tJykpIHtcbiAgICAgIGFkZFNlcXVlbnRTcGFjZShjb25maWcsIGxlZnQgPCAwID8gdG9wIDogYm90dG9tLCAwLCAnbGVmdCcsIE1hdGguYWJzKGxlZnQpKTtcbiAgICAgIGFkZFNlcXVlbnRTcGFjZShjb25maWcsIHJpZ2h0IDwgMCA/IHRvcCA6IGJvdHRvbSwgMiwgJ3JpZ2h0JywgTWF0aC5hYnMocmlnaHQpKTtcbiAgICB9XG4gICAgdG9wID0gYm90dG9tO1xuICB9XG59O1xuXG5cbi8qKlxuICogQ29tcGFyZXMgdGhlIHRvcCBhbmQgYm90dG9tIHNlcXVlbnQgb2YgYSBpbmZlcmVuY2UgcnVsZVxuICogVG9wOiAgICAgQSB8LSBCXG4gKiAgICAgICAgLS0tLS0tLS0tLVxuICogQm90dG9tOiAgQyB8LSBEXG4gKlxuICogQHBhcmFtIHtNbWxOb2RlfSB0b3AgVG9wIHNlcXVlbnQuXG4gKiBAcGFyYW0ge01tbE5vZGV9IGJvdHRvbSBCb3R0b20gc2VxdWVudC5cbiAqIEByZXR1cm4ge1tudW1iZXIsIG51bWJlcl19IFRoZSBkZWx0YSBmb3IgbGVmdCBhbmQgcmlnaHQgc2lkZSBvZiB0aGUgc2VxdWVudHMuXG4gKi9cbmNvbnN0IGNvbXBhcmVTZXF1ZW50cyA9IGZ1bmN0aW9uKHRvcDogTW1sTm9kZSwgYm90dG9tOiBNbWxOb2RlKTogW251bWJlciwgbnVtYmVyXSB7XG4gIGNvbnN0IHRyID0gZ2V0QkJveCh0b3AuY2hpbGROb2Rlc1syXSBhcyBNbWxOb2RlKTtcbiAgY29uc3QgYnIgPSBnZXRCQm94KGJvdHRvbS5jaGlsZE5vZGVzWzJdIGFzIE1tbE5vZGUpO1xuICBjb25zdCB0bCA9IGdldEJCb3godG9wLmNoaWxkTm9kZXNbMF0gYXMgTW1sTm9kZSk7XG4gIGNvbnN0IGJsID0gZ2V0QkJveChib3R0b20uY2hpbGROb2Rlc1swXSBhcyBNbWxOb2RlKTtcbiAgLy8gRGVsdGFzXG4gIGNvbnN0IGRsID0gdGwgLSBibDtcbiAgY29uc3QgZHIgPSB0ciAtIGJyO1xuICByZXR1cm4gW2RsLCBkcl07XG59O1xuXG4vLyBGb3IgZXZlcnkgaW5mZXJlbmNlIHJ1bGUgd2UgYWRqdXN0IHRoZSB3aWR0aCBvZiBydWxlciBieSBzdWJ0cmFjdGluZyBhbmRcbi8vIGFkZGluZyBzdWl0YWJsZSBzcGFjZXMgYXJvdW5kIHRoZSBydWxlLiBUaGUgYWxnb3JpdGhtIGluIGRldGFpbC5cbi8vXG4vLyBOb3Rpb25zIHRoYXQgd2UgbmVlZDpcbi8vXG4vL1xuLy8gKiBJbmZlcmVuY2U6IFRoZSBpbmZlcmVuY2UgY29uc2lzdGluZyBlaXRoZXIgb2YgYW4gaW5mZXJlbmNlIHJ1bGUgb3IgYVxuLy8gICAgICAgICAgICAgIHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBydWxlIHBsdXMgMCAtIDIgbGFiZWxzIGFuZCBzcGFjaW5nXG4vLyAgICAgICAgICAgICAgZWxlbWVudHMuICBzIGx7MCwxfSB0IHJ7MCwxfSBzJywgbSxuIFxcaW4gSU5fMFxuLy9cbi8vICAgICAgICAgICAgICBUZWNobmljYWxseSB0aGlzIGlzIHJlYWxpc2VkIGFzIG5lc3RlZCByb3dzLCBpZiB0aGUgc3BhY2VzXG4vLyAgICAgICAgICAgICAgYW5kL29yIGxhYmVscyBleGlzdDpcbi8vICAgICAgICAgICAgICBtciBzIG1yIGwgdCByIC9tciBzJyAvbXJcbi8vXG4vLyAqIEluZmVyZW5jZVJ1bGU6IFRoZSBydWxlIHdpdGhvdXQgdGhlIGxhYmVscyBhbmQgc3BhY2luZy5cbi8vXG4vLyAqIENvbmNsdXNpb246IFRoZSBlbGVtZW50IGZvcm1pbmcgdGhlIGNvbmNsdXNpb24gb2YgdGhlIHJ1bGUuIEluXG4vLyAgICAgICAgICAgICAgIGRvd253YXJkcyBpbmZlcmVuY2VzIHRoaXMgaXMgdGhlIGZpbmFsIHJvdyBvZiB0aGUgdGFibGUuXG4vL1xuLy8gKiBQcmVtaXNlczogVGhlIHByZW1pc2VzIG9mIHRoZSBydWxlLiBJbiBkb3dud2FyZHMgaW5mZXJlbmNlcyB0aGlzIGlzIHRoZVxuLy8gICAgICAgICAgICAgZmlyc3Qgcm93IG9mIHRoZSBydWxlLiBOb3RlIHRoYXQgdGhpcyBpcyBhIHJ1bGUgaXRzZWxmLFxuLy8gICAgICAgICAgICAgd2l0aCBvbmUgY29sdW1uIGZvciBlYWNoIHByZW1pc2UgYW5kIGFuIGVtcHR5IGNvbHVtblxuLy8gICAgICAgICAgICAgaW5iZXR3ZWVuLlxuLy9cbi8vICogfHh8OiBXaWR0aCBvZiBib3VuZGluZyBib3ggb2YgZWxlbWVudCB4LlxuLy9cbi8vIExlZnQgYWRqdXN0bWVudDpcbi8vXG4vLyAqIEZvciB0aGUgZ2l2ZW4gaW5mZXJlbmNlIEk6XG4vLyAgICArIGNvbXB1dGUgcnVsZSBSIG9mIElcbi8vICAgICsgY29tcHV0ZSBwcmVtaXNlcyBQIG9mIElcbi8vICAgICsgY29tcHV0ZSBwcmVtaXNlIFBfZiwgUF9sIGFzIGZpcnN0IGFuZCBsYXN0IHByZW1pc2Ugb2YgSVxuLy9cbi8vICogSWYgUF9mIGlzIGFuIGluZmVyZW5jZSBydWxlOlxuLy8gICAgKyBjb21wdXRlIGFkanVzdCB2YWx1ZSBhX2YgZm9yIHdyYXBwZXIgV19mIG9mIFBfZlxuLy8gICAgKyBhZGQgLWFfZiBzcGFjZSB0byB3cmFwcGVyIFdfZlxuLy8gICAgKyBhZGQgIGFfZiBzcGFjZSB0byB3cmFwcGVyIFdcbi8vXG4vLyAqIElmIFBfbCBpcyBhbiBpbmZlcmVuY2UgcnVsZTpcbi8vICAgKyBjb21wdXRlIGFkanVzdCB2YWx1ZSBhX2wgZm9yIHdyYXBwZXIgV19sIG9mIFBfbFxuLy8gICArIGlmIEkgaGFzIChyaWdodCkgbGFiZWwgTDogYV9sID0gYV9sICsgfEx8XG4vLyAgICsgYWRkIC1hX2wgc3BhY2UgdG8gUF9sXG4vLyAgICsgYV9sID0gbWF4KGFfbCwgQV9JKSwgd2hlcmUgQV9JIGlzIHNhdmVkIGFqdXN0IHZhbHVlIGluIHRoZVxuLy8gICAgIFwibWF4QWRqdXN0XCIgYXR0cmlidXRlIG9mIEkuXG4vL1xuLy8gICArIENhc2UgSSBpcyBwcm9vZjogQWRkIGFfbCBzcGFjZSB0byBpbmYuIChDb3JyZWN0IGFmdGVyIHByb29mLilcbi8vICAgKyBDYXNlIEkgaGFzIHNpYmxpbmc6IEFkZCBhX2wgc3BhY2UgdG8gc2libGluZy4gIChDb3JyZWN0IGFmdGVyIGNvbHVtbi4pXG4vLyAgICsgT3RoZXJ3aXNlOiBQcm9wYWdhdGUgYV9sIGJ5XG4vLyAgICAgICAgICAgICAgICArKyBmaW5kIGRpcmVjdCBwYXJlbnQgaW5mZXJlcmVuY2UgcnVsZSBJJ1xuLy8gICAgICAgICAgICAgICAgKysgU2V0IEFfe0knfSA9IGFfbC5cbi8vXG4vKipcbiAqIEltcGxlbWVudHMgdGhlIGFib3ZlIGFsZ29yaXRobS5cbiAqIEBwYXJhbSB7RmlsdGVyRGF0YX0gYXJnIFRoZSBwYXJzZXIgY29uZmlndXJhdGlvbiBhbmQgbWF0aGl0ZW0gdG8gZmlsdGVyLlxuICovXG5leHBvcnQgbGV0IGJhbGFuY2VSdWxlcyA9IGZ1bmN0aW9uKGFyZzogRmlsdGVyRGF0YSkge1xuICBpdGVtID0gbmV3IGFyZy5kb2N1bWVudC5vcHRpb25zLk1hdGhJdGVtKCcnLCBudWxsLCBhcmcubWF0aC5kaXNwbGF5KTtcbiAgbGV0IGNvbmZpZyA9IGFyZy5kYXRhO1xuICBhZGp1c3RTZXF1ZW50cyhjb25maWcpO1xuICBsZXQgaW5mZXJlbmNlcyA9IGNvbmZpZy5ub2RlTGlzdHNbJ2luZmVyZW5jZSddIHx8IFtdO1xuICBmb3IgKGxldCBpbmYgb2YgaW5mZXJlbmNlcykge1xuICAgIGxldCBpc1Byb29mID0gZ2V0UHJvcGVydHkoaW5mLCAncHJvb2YnKTtcbiAgICAvLyBUaGlzIGN1cnJlbnRseSBvbmx5IHdvcmtzIHdpdGggZG93bndhcmRzIHJ1bGVzLlxuICAgIGxldCBydWxlID0gZ2V0UnVsZShpbmYpO1xuICAgIGxldCBwcmVtaXNlcyA9IGdldFByZW1pc2VzKHJ1bGUsIGdldFByb3BlcnR5KHJ1bGUsICdpbmZlcmVuY2VSdWxlJykgYXMgc3RyaW5nKTtcbiAgICBsZXQgcHJlbWlzZUYgPSBmaXJzdFByZW1pc2UocHJlbWlzZXMpO1xuICAgIGlmIChnZXRQcm9wZXJ0eShwcmVtaXNlRiwgJ2luZmVyZW5jZScpKSB7XG4gICAgICBsZXQgYWRqdXN0ID0gYWRqdXN0VmFsdWUocHJlbWlzZUYpO1xuICAgICAgaWYgKGFkanVzdCkge1xuICAgICAgICBhZGRTcGFjZShjb25maWcsIHByZW1pc2VGLCAtYWRqdXN0KTtcbiAgICAgICAgbGV0IHcgPSBnZXRTcGFjZXMoaW5mLCBydWxlLCBmYWxzZSk7XG4gICAgICAgIGFkZFNwYWNlKGNvbmZpZywgaW5mLCBhZGp1c3QgLSB3KTtcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gUmlnaHQgYWRqdXN0OlxuICAgIGxldCBwcmVtaXNlTCA9IGxhc3RQcmVtaXNlKHByZW1pc2VzKTtcbiAgICBpZiAoZ2V0UHJvcGVydHkocHJlbWlzZUwsICdpbmZlcmVuY2UnKSA9PSBudWxsKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IGFkanVzdCA9IGFkanVzdFZhbHVlKHByZW1pc2VMLCB0cnVlKTtcbiAgICBhZGRTcGFjZShjb25maWcsIHByZW1pc2VMLCAtYWRqdXN0LCB0cnVlKTtcbiAgICBsZXQgdyA9IGdldFNwYWNlcyhpbmYsIHJ1bGUsIHRydWUpO1xuICAgIGxldCBtYXhBZGp1c3QgPSBnZXRQcm9wZXJ0eShpbmYsICdtYXhBZGp1c3QnKSBhcyBudW1iZXI7XG4gICAgaWYgKG1heEFkanVzdCAhPSBudWxsKSB7XG4gICAgICBhZGp1c3QgPSBNYXRoLm1heChhZGp1c3QsIG1heEFkanVzdCk7XG4gICAgfVxuICAgIGxldCBjb2x1bW46IE1tbE5vZGU7XG4gICAgaWYgKGlzUHJvb2YgfHwgIShjb2x1bW4gPSBnZXRDb2x1bW4oaW5mKSkpIHtcbiAgICAgIC8vIEFmdGVyIHRoZSB0cmVlIHdlIGFkZCBhIHNwYWNlIHdpdGggdGhlIGFjY3VtdWxhdGVkIG1heCB2YWx1ZS5cbiAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIG5vdCBpbiBhIGNvbHVtbiwgd2Uga25vdyB3ZSBoYXZlIHNvbWUgbm9pc2UgYW5kIHRoZVxuICAgICAgLy8gcHJvb2YgaXMgYW4gbXJvdyBhcm91bmQgdGhlIGZpbmFsIGluZmVyZW5jZS5cbiAgICAgIGFkZFNwYWNlKGNvbmZpZyxcbiAgICAgICAgICAgICAgIC8vIGluIGNhc2UgdGhlIHJ1bGUgaGFzIGJlZW4gbW92ZWQgaW50byBhbiBtcm93IGluIExlZnQgQWRqdXN0LlxuICAgICAgICAgICAgICAgZ2V0UHJvcGVydHkoaW5mLCAncHJvb2YnKSA/IGluZiA6IGluZi5wYXJlbnQsIGFkanVzdCAtIHcsIHRydWUpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGxldCBzaWJsaW5nID0gbmV4dFNpYmxpbmcoY29sdW1uKTtcbiAgICBpZiAoc2libGluZykge1xuICAgICAgLy8gSWYgdGhlcmUgaXMgYSBuZXh0IGNvbHVtbiwgaXQgaXMgdGhlIGVtcHR5IG9uZSBhbmQgd2UgbWFrZSBpdCB3aWRlciBieVxuICAgICAgLy8gdGhlIGFjY3VtdWxhdGVkIG1heCB2YWx1ZS5cbiAgICAgIGNvbnN0IHBvcyA9IGNvbmZpZy5ub2RlRmFjdG9yeS5jcmVhdGUoJ25vZGUnLCAnbXNwYWNlJywgW10sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt3aWR0aDogYWRqdXN0IC0gdyArICdlbSd9KTtcbiAgICAgIHNpYmxpbmcuYXBwZW5kQ2hpbGQocG9zKTtcbiAgICAgIGluZi5yZW1vdmVQcm9wZXJ0eSgnbWF4QWRqdXN0Jyk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgbGV0IHBhcmVudFJ1bGUgPSBnZXRQYXJlbnRJbmYoY29sdW1uKTtcbiAgICBpZiAoIXBhcmVudFJ1bGUpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICAvLyBXZSBhcmUgY3VycmVudGx5IGluIHJpZ2h0bW9zdCBpbmZlcmVuY2UsIHNvIHdlIHByb3BhZ2F0ZSB0aGUgbWF4XG4gICAgLy8gY29ycmVjdGlvbiB2YWx1ZSB1cCBpbiB0aGUgdHJlZS5cbiAgICBhZGp1c3QgPSBnZXRQcm9wZXJ0eShwYXJlbnRSdWxlLCAnbWF4QWRqdXN0JykgP1xuICAgICAgTWF0aC5tYXgoZ2V0UHJvcGVydHkocGFyZW50UnVsZSwgJ21heEFkanVzdCcpIGFzIG51bWJlciwgYWRqdXN0KSA6IGFkanVzdDtcbiAgICBzZXRQcm9wZXJ0eShwYXJlbnRSdWxlLCAnbWF4QWRqdXN0JywgYWRqdXN0KTtcbiAgfVxufTtcblxuXG4vKipcbiAqIEZhY2lsaXRpZXMgZm9yIHNlbWFudGljYWxseSByZWxldmFudCBwcm9wZXJ0aWVzLiBUaGVzZSBhcmUgdXNlZCBieSBTUkUgYW5kXG4gKiBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggYnNwcl8uXG4gKi9cbmxldCBwcm9wZXJ0eV9wcmVmaXggPSAnYnNwcl8nO1xubGV0IGJsYWNrbGlzdGVkUHJvcGVydGllcyA9IHtcbiAgW3Byb3BlcnR5X3ByZWZpeCArICdtYXhBZGp1c3QnXTogdHJ1ZVxufTtcblxuXG4vKipcbiAqIFNldHMgYSBidXNzcHJvb2ZzIHByb3BlcnR5IHVzZWQgZm9yIHBvc3Rwcm9jZXNzaW5nIGFuZCB0byBjb252ZXlcbiAqIHNlbWFudGljcy4gVXNlcyB0aGUgYnNwciBwcmVmaXguXG4gKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgVGhlIG5vZGUuXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJvcGVydHkgVGhlIHByb3BlcnR5IHRvIHNldC5cbiAqIEBwYXJhbSB7UHJvcGVydHl9IHZhbHVlIEl0cyB2YWx1ZS5cbiAqL1xuZXhwb3J0IGxldCBzZXRQcm9wZXJ0eSA9IGZ1bmN0aW9uKG5vZGU6IE1tbE5vZGUsIHByb3BlcnR5OiBzdHJpbmcsIHZhbHVlOiBQcm9wZXJ0eSkge1xuICBOb2RlVXRpbC5zZXRQcm9wZXJ0eShub2RlLCBwcm9wZXJ0eV9wcmVmaXggKyBwcm9wZXJ0eSwgdmFsdWUpO1xufTtcblxuXG4vKipcbiAqIEdldHMgYSBidXNzcHJvb2ZzIHByb3BlcnR5LlxuICogQHBhcmFtIHtNbWxOb2RlfSBub2RlIFRoZSBub2RlLlxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5IFRoZSBwcm9wZXJ0eSB0byByZXRyaWV2ZS5cbiAqIEByZXR1cm4ge1Byb3BlcnR5fSBUaGUgcHJvcGVydHkgb2JqZWN0LlxuICovXG5leHBvcnQgbGV0IGdldFByb3BlcnR5ID0gZnVuY3Rpb24obm9kZTogTW1sTm9kZSwgcHJvcGVydHk6IHN0cmluZyk6IFByb3BlcnR5IHtcbiAgcmV0dXJuIE5vZGVVdGlsLmdldFByb3BlcnR5KG5vZGUsIHByb3BlcnR5X3ByZWZpeCArIHByb3BlcnR5KTtcbn07XG5cblxuLyoqXG4gKiBSZW1vdmVzIGEgYnVzc3Byb29mcyBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZVxuICogQHBhcmFtIHtzdHJpbmd9IHByb3BlcnR5XG4gKi9cbmV4cG9ydCBsZXQgcmVtb3ZlUHJvcGVydHkgPSBmdW5jdGlvbihub2RlOiBNbWxOb2RlLCBwcm9wZXJ0eTogc3RyaW5nKSB7XG4gIG5vZGUucmVtb3ZlUHJvcGVydHkocHJvcGVydHlfcHJlZml4ICsgcHJvcGVydHkpO1xufTtcblxuXG4vKipcbiAqIFBvc3Rwcm9jZXNzb3IgdGhhdCBhZGRzIHByb3BlcnRpZXMgYXMgYXR0cmlidXRlcyB0byB0aGUgbm9kZXMsIHVubGVzcyB0aGV5XG4gKiBhcmUgYmxhY2tsaXN0ZWQuXG4gKiBAcGFyYW0ge0ZpbHRlckRhdGF9IGFyZyBUaGUgb2JqZWN0IHRvIHBvc3QtcHJvY2Vzcy5cbiAqL1xuZXhwb3J0IGxldCBtYWtlQnNwckF0dHJpYnV0ZXMgPSBmdW5jdGlvbihhcmc6IEZpbHRlckRhdGEpIHtcbiAgYXJnLmRhdGEucm9vdC53YWxrVHJlZSgobW1sOiBNbWxOb2RlLCBfZGF0YT86IGFueSkgPT4ge1xuICAgIGxldCBhdHRyOiBzdHJpbmdbXSA9IFtdO1xuICAgIG1tbC5nZXRQcm9wZXJ0eU5hbWVzKCkuZm9yRWFjaCh4ID0+IHtcbiAgICAgIGlmICghYmxhY2tsaXN0ZWRQcm9wZXJ0aWVzW3hdICYmIHgubWF0Y2goUmVnRXhwKCdeJyArIHByb3BlcnR5X3ByZWZpeCkpKSB7XG4gICAgICAgIGF0dHIucHVzaCh4ICsgJzonICsgbW1sLmdldFByb3BlcnR5KHgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpZiAoYXR0ci5sZW5ndGgpIHtcbiAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbWwsICdzZW1hbnRpY3MnLCBhdHRyLmpvaW4oJzsnKSk7XG4gICAgfVxuICB9KTtcbn07XG5cbi8qKlxuICogUHJlcHJvY2Vzc29yIHRoYXQgc2V0cyB0aGUgZG9jdW1lbnQgYW5kIGpheCBmb3IgYm91bmRpbmcgYm94IGNvbXB1dGF0aW9uc1xuICogQHBhcmFtIHtGaWx0ZXJEYXRhfSBhcmcgVGhlIG9iamVjdCB0byBwcmUtcHJvY2Vzcy5cbiAqL1xuZXhwb3J0IGxldCBzYXZlRG9jdW1lbnQgPSBmdW5jdGlvbiAoYXJnOiBGaWx0ZXJEYXRhKSB7XG4gIGRvYyA9IGFyZy5kb2N1bWVudDtcbiAgaWYgKCEoJ2dldEJCb3gnIGluIGRvYy5vdXRwdXRKYXgpKSB7XG4gICAgdGhyb3cgRXJyb3IoJ1RoZSBidXNzcHJvb2ZzIGV4dGVuc2lvbiByZXF1aXJlcyBhbiBvdXRwdXQgamF4IHdpdGggYSBnZXRCQm94KCkgbWV0aG9kJyk7XG4gIH1cbn07XG5cbi8qKlxuICogQ2xlYXIgdGhlIGRvY3VtZW50IHdoZW4gd2UgYXJlIGRvbmVcbiAqIEBwYXJhbSB7RmlsdGVyRGF0YX0gYXJnIFRoZSBvYmplY3QgdG8gcHJlLXByb2Nlc3MuXG4gKi9cbmV4cG9ydCBsZXQgY2xlYXJEb2N1bWVudCA9IGZ1bmN0aW9uIChfYXJnOiBGaWx0ZXJEYXRhKSB7XG4gIGRvYyA9IG51bGw7XG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgSXRlbXMgZm9yIFRlWCBwYXJzaW5nIG9mIGJ1c3Nwcm9vZnMuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuXG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IHtCYXNlSXRlbSwgQ2hlY2tUeXBlLCBTdGFja0l0ZW19IGZyb20gJy4uL1N0YWNrSXRlbS5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCBTdGFjayBmcm9tICcuLi9TdGFjay5qcyc7XG5pbXBvcnQgKiBhcyBCdXNzcHJvb2ZzVXRpbCBmcm9tICcuL0J1c3Nwcm9vZnNVdGlsLmpzJztcblxuXG5leHBvcnQgY2xhc3MgUHJvb2ZUcmVlSXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBsZWZ0IGxhYmVsLlxuICAgKiBAdHlwZSB7TW1sTm9kZVtdfVxuICAgKi9cbiAgcHVibGljIGxlZnRMYWJlbDogTW1sTm9kZVtdID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGN1cnJlbnQgcmlnaHQgbGFiZWwuXG4gICAqIEB0eXBlIHtNbWxOb2RlW119XG4gICAqL1xuICBwdWJsaWMgcmlndGhMYWJlbDogTW1sTm9kZVtdID0gbnVsbDtcblxuICBwcml2YXRlIGlubmVyU3RhY2s6IFN0YWNrID0gbmV3IFN0YWNrKHRoaXMuZmFjdG9yeSwge30sIHRydWUpO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ3Byb29mVHJlZSc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGVja0l0ZW0oaXRlbTogU3RhY2tJdGVtKTogQ2hlY2tUeXBlIHtcbiAgICBpZiAoaXRlbS5pc0tpbmQoJ2VuZCcpICYmIGl0ZW0uZ2V0TmFtZSgpID09PSAncHJvb2Z0cmVlJykge1xuICAgICAgbGV0IG5vZGUgPSB0aGlzLnRvTW1sKCk7XG4gICAgICBCdXNzcHJvb2ZzVXRpbC5zZXRQcm9wZXJ0eShub2RlLCAncHJvb2YnLCB0cnVlKTtcbiAgICAgIHJldHVybiBbW3RoaXMuZmFjdG9yeS5jcmVhdGUoJ21tbCcsIG5vZGUpLCBpdGVtXSwgdHJ1ZV07XG4gICAgfVxuICAgIGlmIChpdGVtLmlzS2luZCgnc3RvcCcpKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0Vudk1pc3NpbmdFbmQnLCAnTWlzc2luZyBcXFxcZW5keyUxfScsIHRoaXMuZ2V0TmFtZSgpKTtcbiAgICB9XG4gICAgdGhpcy5pbm5lclN0YWNrLlB1c2goaXRlbSk7XG4gICAgcmV0dXJuIEJhc2VJdGVtLmZhaWw7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b01tbCgpIHtcbiAgICBjb25zdCB0cmVlID0gc3VwZXIudG9NbWwoKTtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMuaW5uZXJTdGFjay5Ub3AoKTtcbiAgICBpZiAoc3RhcnQuaXNLaW5kKCdzdGFydCcpICYmICFzdGFydC5TaXplKCkpIHtcbiAgICAgIHJldHVybiB0cmVlO1xuICAgIH1cbiAgICB0aGlzLmlubmVyU3RhY2suUHVzaCh0aGlzLmZhY3RvcnkuY3JlYXRlKCdzdG9wJykpO1xuICAgIGxldCBwcmVmaXggPSB0aGlzLmlubmVyU3RhY2suVG9wKCkudG9NbWwoKTtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoJ25vZGUnLCAnbXJvdycsIFtwcmVmaXgsIHRyZWVdLCB7fSk7XG4gIH1cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE1hcHBpbmdzIGZvciBUZVggcGFyc2luZyBmb3IgdGhlIGJ1c3Nwcm9vZnMgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5cbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5pbXBvcnQge1N0YWNrSXRlbX0gZnJvbSAnLi4vU3RhY2tJdGVtLmpzJztcbmltcG9ydCB7TW1sTm9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0ICogYXMgQnVzc3Byb29mc1V0aWwgZnJvbSAnLi9CdXNzcHJvb2ZzVXRpbC5qcyc7XG5cblxuLy8gTmFtZXNwYWNlXG5sZXQgQnVzc3Byb29mc01ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPiA9IHt9O1xuXG4vKipcbiAqIEltcGxlbWVudHMgdGhlIHByb29mIHRyZWUgZW52aXJvbm1lbnQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHBhcnNlci5cbiAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiBUaGUgb3BlbmluZyBlbGVtZW50IG9mIHRoZSBlbnZpcm9ubWVudC5cbiAqIEByZXR1cm4ge1N0YWNrSXRlbX0gVGhlIHByb29mIHRyZWUgc3RhY2tpdGVtLlxuICovXG4vLyBUT0RPOiBFcnJvciBoYW5kbGluZyBpZiB3ZSBoYXZlIGxlZnRvdmVyIGVsZW1lbnRzIG9yIGVsZW1lbnRzIGFyZSBub3QgaW4gdGhlXG4vLyByZXF1aXJlZCBvcmRlci5cbkJ1c3Nwcm9vZnNNZXRob2RzLlByb29mdHJlZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBiZWdpbjogU3RhY2tJdGVtKTogU3RhY2tJdGVtIHtcbiAgcGFyc2VyLlB1c2goYmVnaW4pO1xuICAvLyBUT0RPOiBDaGVjayBpZiBvcGVuaW5nIGEgcHJvb2YgdHJlZSBpcyBsZWdhbC5cbiAgbGV0IG5ld0l0ZW0gPSBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdwcm9vZlRyZWUnKS5cbiAgICBzZXRQcm9wZXJ0aWVzKHtuYW1lOiBiZWdpbi5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgICAgbGluZTogJ3NvbGlkJywgY3VycmVudExpbmU6ICdzb2xpZCcsIHJvb3RBdFRvcDogZmFsc2V9KTtcbiAgLy8gcGFyc2VyLlB1c2goaXRlbSk7XG4gIHJldHVybiBuZXdJdGVtO1xufTtcblxuXG4vKipcbiAqIEltcGxlbWVudHMgdGhlIEF4aW9tIGNvbW1hbmQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb21tYW5kLlxuICovXG5CdXNzcHJvb2ZzTWV0aG9kcy5BeGlvbSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHRvcCA9IHBhcnNlci5zdGFjay5Ub3AoKTtcbiAgLy8gVE9ETzogTGFiZWwgZXJyb3JcbiAgaWYgKHRvcC5raW5kICE9PSAncHJvb2ZUcmVlJykge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignSWxsZWdhbFByb29mQ29tbWFuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICdQcm9vZiBjb21tYW5kcyBvbmx5IGFsbG93ZWQgaW4gcHJvb2Z0cmVlIGVudmlyb25tZW50LicpO1xuICB9XG4gIGxldCBjb250ZW50ID0gcGFkZGVkQ29udGVudChwYXJzZXIsIHBhcnNlci5HZXRBcmd1bWVudChuYW1lKSk7XG4gIEJ1c3Nwcm9vZnNVdGlsLnNldFByb3BlcnR5KGNvbnRlbnQsICdheGlvbScsIHRydWUpO1xuICB0b3AuUHVzaChjb250ZW50KTtcbn07XG5cblxuLyoqXG4gKiBQYWRzIGNvbnRlbnQgb2YgYW4gaW5mZXJlbmNlIHJ1bGUuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBjb250ZW50IFRoZSBjb250ZW50IHRvIGJlIHBhZGRlZC5cbiAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSBtcm93IGVsZW1lbnQgd2l0aCBwYWRkZWQgY29udGVudC5cbiAqL1xuY29uc3QgcGFkZGVkQ29udGVudCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBjb250ZW50OiBzdHJpbmcpOiBNbWxOb2RlIHtcbiAgLy8gQWRkIHBhZGRpbmcgb24gZWl0aGVyIHNpdGUuXG4gIGxldCBub2RlcyA9IFBhcnNlVXRpbC5pbnRlcm5hbE1hdGgocGFyc2VyLCBQYXJzZVV0aWwudHJpbVNwYWNlcyhjb250ZW50KSwgMCk7XG4gIGlmICghbm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzLmxlbmd0aCkge1xuICAgIHJldHVybiBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21yb3cnLCBbXSk7XG4gIH1cbiAgbGV0IGxwYWQgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zcGFjZScsIFtdLCB7d2lkdGg6ICcuNWV4J30pO1xuICBsZXQgcnBhZCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXNwYWNlJywgW10sIHt3aWR0aDogJy41ZXgnfSk7XG4gIHJldHVybiBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21yb3cnLCBbbHBhZCwgLi4ubm9kZXMsIHJwYWRdKTtcbn07XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBJbmZlcmVuY2UgcnVsZSBjb21tYW5kcy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQuXG4gKiBAcGFyYW0ge251bWJlcn0gbiBOdW1iZXIgb2YgcHJlbWlzZXMgZm9yIHRoaXMgaW5mZXJlbmNlIHJ1bGUuXG4gKi9cbkJ1c3Nwcm9vZnNNZXRob2RzLkluZmVyZW5jZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIG46IG51bWJlcikge1xuICBsZXQgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICBpZiAodG9wLmtpbmQgIT09ICdwcm9vZlRyZWUnKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdJbGxlZ2FsUHJvb2ZDb21tYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ1Byb29mIGNvbW1hbmRzIG9ubHkgYWxsb3dlZCBpbiBwcm9vZnRyZWUgZW52aXJvbm1lbnQuJyk7XG4gIH1cbiAgaWYgKHRvcC5TaXplKCkgPCBuKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdCYWRQcm9vZlRyZWUnLCAnUHJvb2YgdHJlZSBiYWRseSBzcGVjaWZpZWQuJyk7XG4gIH1cbiAgY29uc3Qgcm9vdEF0VG9wID0gdG9wLmdldFByb3BlcnR5KCdyb290QXRUb3AnKSBhcyBib29sZWFuO1xuICBjb25zdCBjaGlsZENvdW50ID0gKG4gPT09IDEgJiYgIXRvcC5QZWVrKClbMF0uY2hpbGROb2Rlcy5sZW5ndGgpID8gMCA6IG47XG4gIGxldCBjaGlsZHJlbjogTW1sTm9kZVtdID0gW107XG4gIGRvIHtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjaGlsZHJlbi51bnNoaWZ0KHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRkJywgW10sIHt9KSk7XG4gICAgfVxuICAgIGNoaWxkcmVuLnVuc2hpZnQoXG4gICAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ210ZCcsIFt0b3AuUG9wKCldLFxuICAgICAgICAgICAgICAgICAgICB7J3Jvd2FsaWduJzogKHJvb3RBdFRvcCA/ICd0b3AnIDogJ2JvdHRvbScpfSkpO1xuICAgIG4tLTtcbiAgfSB3aGlsZSAobiA+IDApO1xuICBsZXQgcm93ID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdHInLCBjaGlsZHJlbiwge30pO1xuICBsZXQgdGFibGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ210YWJsZScsIFtyb3ddLCB7ZnJhbWVzcGFjaW5nOiAnMCAwJ30pO1xuICBsZXQgY29uY2x1c2lvbiA9IHBhZGRlZENvbnRlbnQocGFyc2VyLCBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICBsZXQgc3R5bGUgPSB0b3AuZ2V0UHJvcGVydHkoJ2N1cnJlbnRMaW5lJykgYXMgc3RyaW5nO1xuICBpZiAoc3R5bGUgIT09IHRvcC5nZXRQcm9wZXJ0eSgnbGluZScpKSB7XG4gICAgdG9wLnNldFByb3BlcnR5KCdjdXJyZW50TGluZScsIHRvcC5nZXRQcm9wZXJ0eSgnbGluZScpKTtcbiAgfVxuICBsZXQgcnVsZSA9IGNyZWF0ZVJ1bGUoXG4gICAgcGFyc2VyLCB0YWJsZSwgW2NvbmNsdXNpb25dLCB0b3AuZ2V0UHJvcGVydHkoJ2xlZnQnKSBhcyBNbWxOb2RlLFxuICAgIHRvcC5nZXRQcm9wZXJ0eSgncmlnaHQnKSBhcyBNbWxOb2RlLCBzdHlsZSwgcm9vdEF0VG9wKTtcbiAgdG9wLnNldFByb3BlcnR5KCdsZWZ0JywgbnVsbCk7XG4gIHRvcC5zZXRQcm9wZXJ0eSgncmlnaHQnLCBudWxsKTtcbiAgQnVzc3Byb29mc1V0aWwuc2V0UHJvcGVydHkocnVsZSwgJ2luZmVyZW5jZScsIGNoaWxkQ291bnQpO1xuICBwYXJzZXIuY29uZmlndXJhdGlvbi5hZGROb2RlKCdpbmZlcmVuY2UnLCBydWxlKTtcbiAgdG9wLlB1c2gocnVsZSk7XG59O1xuXG5cbi8qKlxuICogQ3JlYXRlcyBhIE5EIHN0eWxlIGluZmVyZW5jZSBydWxlLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge01tbE5vZGV9IHByZW1pc2UgVGhlIHByZW1pc2UgKGEgc2luZ2xlIHRhYmxlKS5cbiAqIEBwYXJhbSB7TW1sTm9kZVtdfSBjb25jbHVzaW9ucyBFbGVtZW50cyB0aGF0IGFyZSBjb21iaW5lZCBpbnRvIHRoZSBjb25jbHVzaW9uLlxuICogQHBhcmFtIHtNbWxOb2RlfG51bGx9IGxlZnQgVGhlIGxlZnQgbGFiZWwgaWYgaXQgZXhpc3RzLlxuICogQHBhcmFtIHtNbWxOb2RlfG51bGx9IHJpZ2h0IFRoZSByaWdodCBsYWJlbCBpZiBpdCBleGlzdHMuXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGUgU3R5bGUgb2YgaW5mZXJlbmNlIHJ1bGUgbGluZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcm9vdEF0VG9wIERpcmVjdGlvbiBvZiBpbmZlcmVuY2UgcnVsZTogdHJ1ZSBmb3Igcm9vdCBhdCB0b3AuXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVJ1bGUocGFyc2VyOiBUZXhQYXJzZXIsIHByZW1pc2U6IE1tbE5vZGUsXG4gICAgICAgICAgICAgICAgICAgIGNvbmNsdXNpb25zOiBNbWxOb2RlW10sIGxlZnQ6IE1tbE5vZGUgfCBudWxsLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogTW1sTm9kZSB8IG51bGwsIHN0eWxlOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgIHJvb3RBdFRvcDogYm9vbGVhbikge1xuICBjb25zdCB1cHBlciA9IHBhcnNlci5jcmVhdGUoXG4gICAgJ25vZGUnLCAnbXRyJywgW3BhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRkJywgW3ByZW1pc2VdLCB7fSldLCB7fSk7XG4gIGNvbnN0IGxvd2VyID0gcGFyc2VyLmNyZWF0ZShcbiAgICAnbm9kZScsICdtdHInLCBbcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdGQnLCBjb25jbHVzaW9ucywge30pXSwge30pO1xuICBsZXQgcnVsZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRhYmxlJywgcm9vdEF0VG9wID8gW2xvd2VyLCB1cHBlcl0gOiBbdXBwZXIsIGxvd2VyXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHthbGlnbjogJ3RvcCAyJywgcm93bGluZXM6IHN0eWxlLCBmcmFtZXNwYWNpbmc6ICcwIDAnfSk7XG4gIEJ1c3Nwcm9vZnNVdGlsLnNldFByb3BlcnR5KHJ1bGUsICdpbmZlcmVuY2VSdWxlJywgcm9vdEF0VG9wID8gJ3VwJyA6ICdkb3duJyk7XG4gIGxldCBsZWZ0TGFiZWwsIHJpZ2h0TGFiZWw7XG4gIGlmIChsZWZ0KSB7XG4gICAgbGVmdExhYmVsID0gcGFyc2VyLmNyZWF0ZShcbiAgICAgICdub2RlJywgJ21wYWRkZWQnLCBbbGVmdF0sXG4gICAgICB7aGVpZ2h0OiAnKy41ZW0nLCB3aWR0aDogJysuNWVtJywgdm9mZnNldDogJy0uMTVlbSd9KTtcbiAgICBCdXNzcHJvb2ZzVXRpbC5zZXRQcm9wZXJ0eShsZWZ0TGFiZWwsICdwcm9vZmxhYmVsJywgJ2xlZnQnKTtcbiAgfVxuICBpZiAocmlnaHQpIHtcbiAgICByaWdodExhYmVsID0gcGFyc2VyLmNyZWF0ZShcbiAgICAgICdub2RlJywgJ21wYWRkZWQnLCBbcmlnaHRdLFxuICAgICAge2hlaWdodDogJysuNWVtJywgd2lkdGg6ICcrLjVlbScsIHZvZmZzZXQ6ICctLjE1ZW0nfSk7XG4gICAgQnVzc3Byb29mc1V0aWwuc2V0UHJvcGVydHkocmlnaHRMYWJlbCwgJ3Byb29mbGFiZWwnLCAncmlnaHQnKTtcbiAgfVxuICBsZXQgY2hpbGRyZW4sIGxhYmVsO1xuICBpZiAobGVmdCAmJiByaWdodCkge1xuICAgIGNoaWxkcmVuID0gW2xlZnRMYWJlbCwgcnVsZSwgcmlnaHRMYWJlbF07XG4gICAgbGFiZWwgPSAnYm90aCc7XG4gIH0gZWxzZSBpZiAobGVmdCkge1xuICAgIGNoaWxkcmVuID0gW2xlZnRMYWJlbCwgcnVsZV07XG4gICAgbGFiZWwgPSAnbGVmdCc7XG4gIH0gZWxzZSBpZiAocmlnaHQpIHtcbiAgICBjaGlsZHJlbiA9IFtydWxlLCByaWdodExhYmVsXTtcbiAgICBsYWJlbCA9ICdyaWdodCc7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHJ1bGU7XG4gIH1cbiAgcnVsZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXJvdycsIGNoaWxkcmVuKTtcbiAgQnVzc3Byb29mc1V0aWwuc2V0UHJvcGVydHkocnVsZSwgJ2xhYmVsbGVkUnVsZScsIGxhYmVsKTtcbiAgcmV0dXJuIHJ1bGU7XG59XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIHRoZSBsYWJlbCBjb21tYW5kLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlIFRoZSBzaWRlIG9mIHRoZSBsYWJlbC5cbiAqL1xuQnVzc3Byb29mc01ldGhvZHMuTGFiZWwgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBzaWRlOiBzdHJpbmcpIHtcbiAgbGV0IHRvcCA9IHBhcnNlci5zdGFjay5Ub3AoKTtcbiAgLy8gTGFiZWwgZXJyb3JcbiAgaWYgKHRvcC5raW5kICE9PSAncHJvb2ZUcmVlJykge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignSWxsZWdhbFByb29mQ29tbWFuZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICdQcm9vZiBjb21tYW5kcyBvbmx5IGFsbG93ZWQgaW4gcHJvb2Z0cmVlIGVudmlyb25tZW50LicpO1xuICB9XG4gIGxldCBjb250ZW50ID0gUGFyc2VVdGlsLmludGVybmFsTWF0aChwYXJzZXIsIHBhcnNlci5HZXRBcmd1bWVudChuYW1lKSwgMCk7XG4gIGxldCBsYWJlbCA9IChjb250ZW50Lmxlbmd0aCA+IDEpID9cbiAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21yb3cnLCBjb250ZW50LCB7fSkgOiBjb250ZW50WzBdO1xuICB0b3Auc2V0UHJvcGVydHkoc2lkZSwgbGFiZWwpO1xufTtcblxuXG4vKipcbiAqIFNldHMgbGluZSBzdHlsZSBmb3IgaW5mZXJlbmNlIHJ1bGVzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZSBUaGUgbGluZSBzdHlsZSB0byBzZXQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGFsd2F5cyBTZXQgYXMgcGVybWFuZW50IHN0eWxlLlxuICovXG5CdXNzcHJvb2ZzTWV0aG9kcy5TZXRMaW5lID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcsIHN0eWxlOiBzdHJpbmcsIGFsd2F5czogYm9vbGVhbikge1xuICBsZXQgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICAvLyBMYWJlbCBlcnJvclxuICBpZiAodG9wLmtpbmQgIT09ICdwcm9vZlRyZWUnKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdJbGxlZ2FsUHJvb2ZDb21tYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ1Byb29mIGNvbW1hbmRzIG9ubHkgYWxsb3dlZCBpbiBwcm9vZnRyZWUgZW52aXJvbm1lbnQuJyk7XG4gIH1cbiAgdG9wLnNldFByb3BlcnR5KCdjdXJyZW50TGluZScsIHN0eWxlKTtcbiAgaWYgKGFsd2F5cykge1xuICAgIHRvcC5zZXRQcm9wZXJ0eSgnbGluZScsIHN0eWxlKTtcbiAgfVxufTtcblxuXG4vKipcbiAqIEltcGxlbWVudHMgY29tbWFuZHMgaW5kaWNhdGluZyB3aGVyZSB0aGUgcm9vdCBvZiB0aGUgcHJvb2YgdHJlZSBpcy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNvbW1hbmQuXG4gKiBAcGFyYW0ge3N0cmluZ30gd2hlcmUgSWYgdHJ1ZSByb290IGlzIGF0IHRvcCwgb3RoZXJ3aXNlIGF0IGJvdHRvbS5cbiAqL1xuQnVzc3Byb29mc01ldGhvZHMuUm9vdEF0VG9wID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcsIHdoZXJlOiBib29sZWFuKSB7XG4gIGxldCB0b3AgPSBwYXJzZXIuc3RhY2suVG9wKCk7XG4gIGlmICh0b3Aua2luZCAhPT0gJ3Byb29mVHJlZScpIHtcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0lsbGVnYWxQcm9vZkNvbW1hbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAnUHJvb2YgY29tbWFuZHMgb25seSBhbGxvd2VkIGluIHByb29mdHJlZSBlbnZpcm9ubWVudC4nKTtcbiAgfVxuICB0b3Auc2V0UHJvcGVydHkoJ3Jvb3RBdFRvcCcsIHdoZXJlKTtcbn07XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIEF4aW9tIGNvbW1hbmQgZm9yIHNlcXVlbnRzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAqL1xuQnVzc3Byb29mc01ldGhvZHMuQXhpb21GID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBsZXQgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICBpZiAodG9wLmtpbmQgIT09ICdwcm9vZlRyZWUnKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdJbGxlZ2FsUHJvb2ZDb21tYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ1Byb29mIGNvbW1hbmRzIG9ubHkgYWxsb3dlZCBpbiBwcm9vZnRyZWUgZW52aXJvbm1lbnQuJyk7XG4gIH1cbiAgbGV0IGxpbmUgPSBwYXJzZUZDZW50ZXJMaW5lKHBhcnNlciwgbmFtZSk7XG4gIEJ1c3Nwcm9vZnNVdGlsLnNldFByb3BlcnR5KGxpbmUsICdheGlvbScsIHRydWUpO1xuICB0b3AuUHVzaChsaW5lKTtcbn07XG5cblxuLyoqXG4gKiBQYXJzZXMgYSBsaW5lIHdpdGggYSBzZXF1ZW50IChpLmUuLCBvbmUgY29udGFpbmluZyBcXFxcZmNlbnRlcikuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGNvbW1hbmQuXG4gKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgcGFyc2VkIGxpbmUuXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRkNlbnRlckxpbmUocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZyk6IE1tbE5vZGUge1xuICBsZXQgZG9sbGFyID0gcGFyc2VyLkdldE5leHQoKTtcbiAgaWYgKGRvbGxhciAhPT0gJyQnKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdJbGxlZ2FsVXNlT2ZDb21tYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ1VzZSBvZiAlMSBkb2VzIG5vdCBtYXRjaCBpdFxcJ3MgZGVmaW5pdGlvbi4nLCBuYW1lKTtcbiAgfVxuICBwYXJzZXIuaSsrO1xuICBsZXQgYXhpb20gPSBwYXJzZXIuR2V0VXBUbyhuYW1lLCAnJCcpO1xuICBpZiAoYXhpb20uaW5kZXhPZignXFxcXGZDZW50ZXInKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0lsbGVnYWxVc2VPZkNvbW1hbmQnLFxuICAgICAgICAgICAgICAgICAgICAgICAnTWlzc2luZyBcXFxcZkNlbnRlciBpbiAlMS4nLCBuYW1lKTtcbiAgfVxuICAvLyBDaGVjayBmb3IgZkNlbnRlciBhbmQgdGhyb3cgZXJyb3I/XG4gIGxldCBbcHJlbSwgY29uY10gPSBheGlvbS5zcGxpdCgnXFxcXGZDZW50ZXInKTtcbiAgbGV0IHByZW1pc2UgPSAobmV3IFRleFBhcnNlcihwcmVtLCBwYXJzZXIuc3RhY2suZW52LCBwYXJzZXIuY29uZmlndXJhdGlvbikpLm1tbCgpO1xuICBsZXQgY29uY2x1c2lvbiA9IChuZXcgVGV4UGFyc2VyKGNvbmMsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKSkubW1sKCk7XG4gIGxldCBmY2VudGVyID0gKG5ldyBUZXhQYXJzZXIoJ1xcXFxmQ2VudGVyJywgcGFyc2VyLnN0YWNrLmVudiwgcGFyc2VyLmNvbmZpZ3VyYXRpb24pKS5tbWwoKTtcbiAgY29uc3QgbGVmdCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRkJywgW3ByZW1pc2VdLCB7fSk7XG4gIGNvbnN0IG1pZGRsZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRkJywgW2ZjZW50ZXJdLCB7fSk7XG4gIGNvbnN0IHJpZ2h0ID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdGQnLCBbY29uY2x1c2lvbl0sIHt9KTtcbiAgY29uc3Qgcm93ID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdHInLCBbbGVmdCwgbWlkZGxlLCByaWdodF0sIHt9KTtcbiAgY29uc3QgdGFibGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ210YWJsZScsIFtyb3ddLCB7Y29sdW1uc3BhY2luZzogJy41ZXgnLCBjb2x1bW5hbGlnbjogJ2NlbnRlciAyJ30pO1xuICBCdXNzcHJvb2ZzVXRpbC5zZXRQcm9wZXJ0eSh0YWJsZSwgJ3NlcXVlbnQnLCB0cnVlKTtcbiAgcGFyc2VyLmNvbmZpZ3VyYXRpb24uYWRkTm9kZSgnc2VxdWVudCcsIHJvdyk7XG4gIHJldHVybiB0YWJsZTtcbn1cblxuXG4vKipcbiAqIFBsYWNlaG9sZGVyIGZvciBGY2VudGVyIG1hY3JvIHRoYXQgY2FuIGJlIG92ZXJ3cml0dGVuIHdpdGggcmVuZXdjb21tYW5kLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAqL1xuQnVzc3Byb29mc01ldGhvZHMuRkNlbnRlciA9IGZ1bmN0aW9uKF9wYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZykgeyB9O1xuXG5cbi8qKlxuICogSW1wbGVtZW50cyBpbmZlcmVuY2UgcnVsZXMgZm9yIHNlcXVlbnRzLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29tbWFuZC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBuIE51bWJlciBvZiBwcmVtaXNlcyBmb3IgdGhpcyBpbmZlcmVuY2UgcnVsZS5cbiAqL1xuQnVzc3Byb29mc01ldGhvZHMuSW5mZXJlbmNlRiA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIG46IG51bWJlcikge1xuICBsZXQgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICBpZiAodG9wLmtpbmQgIT09ICdwcm9vZlRyZWUnKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdJbGxlZ2FsUHJvb2ZDb21tYW5kJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ1Byb29mIGNvbW1hbmRzIG9ubHkgYWxsb3dlZCBpbiBwcm9vZnRyZWUgZW52aXJvbm1lbnQuJyk7XG4gIH1cbiAgaWYgKHRvcC5TaXplKCkgPCBuKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdCYWRQcm9vZlRyZWUnLCAnUHJvb2YgdHJlZSBiYWRseSBzcGVjaWZpZWQuJyk7XG4gIH1cbiAgY29uc3Qgcm9vdEF0VG9wID0gdG9wLmdldFByb3BlcnR5KCdyb290QXRUb3AnKSBhcyBib29sZWFuO1xuICBjb25zdCBjaGlsZENvdW50ID0gKG4gPT09IDEgJiYgIXRvcC5QZWVrKClbMF0uY2hpbGROb2Rlcy5sZW5ndGgpID8gMCA6IG47XG4gIGxldCBjaGlsZHJlbjogTW1sTm9kZVtdID0gW107XG4gIGRvIHtcbiAgICBpZiAoY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICBjaGlsZHJlbi51bnNoaWZ0KHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRkJywgW10sIHt9KSk7XG4gICAgfVxuICAgIGNoaWxkcmVuLnVuc2hpZnQoXG4gICAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ210ZCcsIFt0b3AuUG9wKCldLFxuICAgICAgICAgICAgICAgICAgICB7J3Jvd2FsaWduJzogKHJvb3RBdFRvcCA/ICd0b3AnIDogJ2JvdHRvbScpfSkpO1xuICAgIG4tLTtcbiAgfSB3aGlsZSAobiA+IDApO1xuICBsZXQgcm93ID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdHInLCBjaGlsZHJlbiwge30pO1xuICBsZXQgdGFibGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ210YWJsZScsIFtyb3ddLCB7ZnJhbWVzcGFjaW5nOiAnMCAwJ30pO1xuXG4gIGxldCBjb25jbHVzaW9uID0gcGFyc2VGQ2VudGVyTGluZShwYXJzZXIsIG5hbWUpOyAvLyBUT0RPOiBQYWRkaW5nXG4gIGxldCBzdHlsZSA9IHRvcC5nZXRQcm9wZXJ0eSgnY3VycmVudExpbmUnKSBhcyBzdHJpbmc7XG4gIGlmIChzdHlsZSAhPT0gdG9wLmdldFByb3BlcnR5KCdsaW5lJykpIHtcbiAgICB0b3Auc2V0UHJvcGVydHkoJ2N1cnJlbnRMaW5lJywgdG9wLmdldFByb3BlcnR5KCdsaW5lJykpO1xuICB9XG4gIGxldCBydWxlID0gY3JlYXRlUnVsZShcbiAgICBwYXJzZXIsIHRhYmxlLCBbY29uY2x1c2lvbl0sIHRvcC5nZXRQcm9wZXJ0eSgnbGVmdCcpIGFzIE1tbE5vZGUsXG4gICAgdG9wLmdldFByb3BlcnR5KCdyaWdodCcpIGFzIE1tbE5vZGUsIHN0eWxlLCByb290QXRUb3ApO1xuICB0b3Auc2V0UHJvcGVydHkoJ2xlZnQnLCBudWxsKTtcbiAgdG9wLnNldFByb3BlcnR5KCdyaWdodCcsIG51bGwpO1xuICBCdXNzcHJvb2ZzVXRpbC5zZXRQcm9wZXJ0eShydWxlLCAnaW5mZXJlbmNlJywgY2hpbGRDb3VudCk7XG4gIHBhcnNlci5jb25maWd1cmF0aW9uLmFkZE5vZGUoJ2luZmVyZW5jZScsIHJ1bGUpO1xuICB0b3AuUHVzaChydWxlKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJ1c3Nwcm9vZnNNZXRob2RzO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgTWFwcGluZ3MgZm9yIFRlWCBwYXJzaW5nIGZvciBCdXNzcHJvb2ZzIHBhY2thZ2UgY29tbWFuZHMuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IEJ1c3Nwcm9vZnNNZXRob2RzIGZyb20gJy4vQnVzc3Byb29mc01ldGhvZHMuanMnO1xuaW1wb3J0IFBhcnNlTWV0aG9kcyBmcm9tICcuLi9QYXJzZU1ldGhvZHMuanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwLCBFbnZpcm9ubWVudE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcblxuXG4vKipcbiAqIE1hY3JvcyBmb3IgYnVzc3Byb29mcyBldGMuXG4gKi9cbm5ldyBDb21tYW5kTWFwKCdCdXNzcHJvb2ZzLW1hY3JvcycsIHtcbiAgQXhpb21DOiAgICAgICAgICAgJ0F4aW9tJyxcbiAgVW5hcnlJbmZDOiAgICAgICAgWydJbmZlcmVuY2UnLCAxXSxcbiAgQmluYXJ5SW5mQzogICAgICAgWydJbmZlcmVuY2UnLCAyXSxcbiAgVHJpbmFyeUluZkM6ICAgICAgWydJbmZlcmVuY2UnLCAzXSxcbiAgUXVhdGVybmFyeUluZkM6ICAgWydJbmZlcmVuY2UnLCA0XSxcbiAgUXVpbmFyeUluZkM6ICAgICAgWydJbmZlcmVuY2UnLCA1XSxcbiAgUmlnaHRMYWJlbDogICAgICAgWydMYWJlbCcsICdyaWdodCddLFxuICBMZWZ0TGFiZWw6ICAgICAgICBbJ0xhYmVsJywgJ2xlZnQnXSxcbiAgLy8gQWJicmV2aWF0aW9ucyBhcmUgYXV0b21hdGljYWxseSBlbmFibGVkXG4gIEFYQzogICAgICAgICAgICAgICdBeGlvbScsXG4gIFVJQzogICAgICAgICAgICAgIFsnSW5mZXJlbmNlJywgMV0sXG4gIEJJQzogICAgICAgICAgICAgIFsnSW5mZXJlbmNlJywgMl0sXG4gIFRJQzogICAgICAgICAgICAgIFsnSW5mZXJlbmNlJywgM10sXG4gIFJMOiAgICAgICAgICAgICAgIFsnTGFiZWwnLCAncmlnaHQnXSxcbiAgTEw6ICAgICAgICAgICAgICAgWydMYWJlbCcsICdsZWZ0J10sXG5cbiAgbm9MaW5lOiAgICAgICAgICAgWydTZXRMaW5lJywgJ25vbmUnLCBmYWxzZV0sXG4gIHNpbmdsZUxpbmU6ICAgICAgIFsnU2V0TGluZScsICdzb2xpZCcsIGZhbHNlXSxcbiAgc29saWRMaW5lOiAgICAgICAgWydTZXRMaW5lJywgJ3NvbGlkJywgZmFsc2VdLFxuICBkYXNoZWRMaW5lOiAgICAgICBbJ1NldExpbmUnLCAnZGFzaGVkJywgZmFsc2VdLFxuICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIGluIENTUyFcbiAgLy8gZG91YmxlTGluZTogICAgICAgWydTZXRMaW5lJywgJ2RvdWJsZScsIGZhbHNlXSxcbiAgLy8gZG90dGVkTGluZTogICAgICAgWydTZXRMaW5lJywgJ2RvdHRlZCcsIGZhbHNlXSxcblxuICBhbHdheXNOb0xpbmU6ICAgICAgICAgICBbJ1NldExpbmUnLCAnbm9uZScsIHRydWVdLFxuICBhbHdheXNTaW5nbGVMaW5lOiAgICAgICBbJ1NldExpbmUnLCAnc29saWQnLCB0cnVlXSxcbiAgYWx3YXlzU29saWRMaW5lOiAgICAgICAgWydTZXRMaW5lJywgJ3NvbGlkJywgdHJ1ZV0sXG4gIGFsd2F5c0Rhc2hlZExpbmU6ICAgICAgIFsnU2V0TGluZScsICdkYXNoZWQnLCB0cnVlXSxcbiAgLy8gTm90IHlldCBpbXBsZW1lbnRlZCBpbiBDU1MhXG4gIC8vIGFsd2F5c0RvdWJsZUxpbmU6ICAgICAgIFsnU2V0TGluZScsICdkb3VibGUnLCB0cnVlXSxcbiAgLy8gYWx3YXlzRG90dGVkTGluZTogICAgICAgWydTZXRMaW5lJywgJ2RvdHRlZCcsIHRydWVdLFxuXG4gIHJvb3RBdFRvcDogWydSb290QXRUb3AnLCB0cnVlXSxcbiAgYWx3YXlzUm9vdEF0VG9wOiBbJ1Jvb3RBdFRvcCcsIHRydWVdLFxuXG4gIHJvb3RBdEJvdHRvbTogWydSb290QXRUb3AnLCBmYWxzZV0sXG4gIGFsd2F5c1Jvb3RBdEJvdHRvbTogWydSb290QXRUb3AnLCBmYWxzZV0sXG4gIC8vIFRPRE86IGFsd2F5cyBjb21tYW5kcyBzaG91bGQgYmUgcGVyc2lzdGVudC5cblxuICBmQ2VudGVyOiAgICAgICAgICdGQ2VudGVyJyxcbiAgQXhpb206ICAgICAgICAgICAnQXhpb21GJyxcbiAgVW5hcnlJbmY6ICAgICAgICBbJ0luZmVyZW5jZUYnLCAxXSxcbiAgQmluYXJ5SW5mOiAgICAgICAgWydJbmZlcmVuY2VGJywgMl0sXG4gIFRyaW5hcnlJbmY6ICAgICAgICBbJ0luZmVyZW5jZUYnLCAzXSxcbiAgUXVhdGVybmFyeUluZjogICAgICAgIFsnSW5mZXJlbmNlRicsIDRdLFxuICBRdWluYXJ5SW5mOiAgICAgICAgWydJbmZlcmVuY2VGJywgNV1cbn0sIEJ1c3Nwcm9vZnNNZXRob2RzKTtcblxuXG5uZXcgRW52aXJvbm1lbnRNYXAoJ0J1c3Nwcm9vZnMtZW52aXJvbm1lbnRzJywgUGFyc2VNZXRob2RzLmVudmlyb25tZW50LCB7XG4gIHByb29mdHJlZTogICAgICAgIFsnUHJvb2Z0cmVlJywgbnVsbCwgZmFsc2VdXG59LCBCdXNzcHJvb2ZzTWV0aG9kcyk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBCdXNzcHJvb2ZzIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7UHJvb2ZUcmVlSXRlbX0gZnJvbSAnLi9CdXNzcHJvb2ZzSXRlbXMuanMnO1xuaW1wb3J0IHtzYXZlRG9jdW1lbnQsIGNsZWFyRG9jdW1lbnQsIGJhbGFuY2VSdWxlcywgbWFrZUJzcHJBdHRyaWJ1dGVzfSBmcm9tICcuL0J1c3Nwcm9vZnNVdGlsLmpzJztcbmltcG9ydCAnLi9CdXNzcHJvb2ZzTWFwcGluZ3MuanMnO1xuXG5cbmV4cG9ydCBjb25zdCBCdXNzcHJvb2ZzQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAnYnVzc3Byb29mcycsIHtcbiAgICBoYW5kbGVyOiB7XG4gICAgICBtYWNybzogWydCdXNzcHJvb2ZzLW1hY3JvcyddLFxuICAgICAgZW52aXJvbm1lbnQ6IFsnQnVzc3Byb29mcy1lbnZpcm9ubWVudHMnXVxuICAgIH0sXG4gICAgaXRlbXM6IHtcbiAgICAgIFtQcm9vZlRyZWVJdGVtLnByb3RvdHlwZS5raW5kXTogUHJvb2ZUcmVlSXRlbSxcbiAgICB9LFxuICAgIHByZXByb2Nlc3NvcnM6IFtcbiAgICAgIFtzYXZlRG9jdW1lbnQsIDFdXG4gICAgXSxcbiAgICBwb3N0cHJvY2Vzc29yczogW1xuICAgICAgW2NsZWFyRG9jdW1lbnQsIDNdLFxuICAgICAgW21ha2VCc3ByQXR0cmlidXRlcywgMl0sXG4gICAgICBbYmFsYW5jZVJ1bGVzLCAxXVxuICAgIF1cbiAgfVxuKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIGVuY2xvc2UgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IHtQYXJzZU1ldGhvZH0gZnJvbSAnLi4vVHlwZXMuanMnO1xuaW1wb3J0IFBhcnNlVXRpbCBmcm9tICcuLi9QYXJzZVV0aWwuanMnO1xuXG5cbi8qKlxuICogVGhlIGF0dHJpYnV0ZXMgYWxsb3dlZCBpbiBcXGVuY2xvc2V7bm90YXRpb259W2F0dHJpYnV0ZXNde21hdGh9XG4gKiBAdHlwZSB7e1trZXk6IHN0cmluZ106IG51bWJlcn19XG4gKi9cbmV4cG9ydCBjb25zdCBFTkNMT1NFX09QVElPTlM6IHtba2V5OiBzdHJpbmddOiBudW1iZXJ9ID0ge1xuICAnZGF0YS1hcnJvd2hlYWQnOiAxLFxuICBjb2xvcjogMSxcbiAgbWF0aGNvbG9yOiAxLFxuICBiYWNrZ3JvdW5kOiAxLFxuICBtYXRoYmFja2dyb3VuZDogMSxcbiAgJ2RhdGEtcGFkZGluZyc6IDEsXG4gICdkYXRhLXRoaWNrbmVzcyc6IDFcbn07XG5cblxuLy8gTmFtZXNwYWNlXG5leHBvcnQgbGV0IEVuY2xvc2VNZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBQYXJzZU1ldGhvZD4gPSB7fTtcblxuXG4vKipcbiAqIEltcGxlbWVudHMgXFxlbmNsb3Nle25vdGF0aW9ufVthdHRyXXttYXRofVxuICogKGNyZWF0ZSA8bWVuY2xvc2Ugbm90YXRpb249XCJub3RhdGlvblwiPm1hdGg8L21lbmNsb3NlPilcbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgdGV4IHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIG1hY3JvLlxuICovXG5FbmNsb3NlTWV0aG9kcy5FbmNsb3NlID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBsZXQgbm90YXRpb24gPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkucmVwbGFjZSgvLC9nLCAnICcpO1xuICBjb25zdCBhdHRyID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcnKTtcbiAgY29uc3QgbWF0aCA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgY29uc3QgZGVmID0gUGFyc2VVdGlsLmtleXZhbE9wdGlvbnMoYXR0ciwgRU5DTE9TRV9PUFRJT05TKTtcbiAgZGVmLm5vdGF0aW9uID0gbm90YXRpb247XG4gIHBhcnNlci5QdXNoKHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbWVuY2xvc2UnLCBbbWF0aF0sIGRlZikpO1xufTtcblxuXG5uZXcgQ29tbWFuZE1hcCgnZW5jbG9zZScsIHtlbmNsb3NlOiAnRW5jbG9zZSd9LCBFbmNsb3NlTWV0aG9kcyk7XG5cblxuZXhwb3J0IGNvbnN0IEVuY2xvc2VDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICdlbmNsb3NlJywge2hhbmRsZXI6IHttYWNybzogWydlbmNsb3NlJ119fVxuKTtcblxuXG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBjYW5jZWwgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IHtUZXhDb25zdGFudH0gZnJvbSAnLi4vVGV4Q29uc3RhbnRzLmpzJztcbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcbmltcG9ydCB7RU5DTE9TRV9PUFRJT05TfSBmcm9tICcuLi9lbmNsb3NlL0VuY2xvc2VDb25maWd1cmF0aW9uLmpzJztcblxuXG4vLyBOYW1lc3BhY2VcbmV4cG9ydCBsZXQgQ2FuY2VsTWV0aG9kczogUmVjb3JkPHN0cmluZywgUGFyc2VNZXRob2Q+ID0ge307XG5cblxuLyoqXG4gKiBQYXJzZSBmdW5jdGlvbiBmb3IgY2FuY2VsIG1hY3JvcyBvZiB0aGUgZm9ybSBcXChifHgpP2NhbmNlbFthdHRyaWJ1dGVzXXttYXRofVxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCB0ZXggcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgbWFjcm8uXG4gKiBAcGFyYW0ge3N0cmluZ30gbm90YXRpb24gVGhlIHR5cGUgb2YgY2FuY2VsIG5vdGF0aW9uIHRvIHVzZS5cbiAqL1xuQ2FuY2VsTWV0aG9kcy5DYW5jZWwgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBub3RhdGlvbjogc3RyaW5nKSB7XG4gIGNvbnN0IGF0dHIgPSBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSwgJycpO1xuICBjb25zdCBtYXRoID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBjb25zdCBkZWYgPSBQYXJzZVV0aWwua2V5dmFsT3B0aW9ucyhhdHRyLCBFTkNMT1NFX09QVElPTlMpO1xuICBkZWZbJ25vdGF0aW9uJ10gPSBub3RhdGlvbjtcbiAgcGFyc2VyLlB1c2gocGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtZW5jbG9zZScsIFttYXRoXSwgZGVmKSk7XG59O1xuXG5cbi8qKlxuICogUGFyc2UgZnVuY3Rpb24gaW1wbGVtZW50aW5nIFxcY2FuY2VsdG97dmFsdWV9W2F0dHJpYnV0ZXNde21hdGh9XG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2FsbGluZyBtYWNyby5cbiAqL1xuXG5DYW5jZWxNZXRob2RzLkNhbmNlbFRvID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCBhdHRyID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcnKTtcbiAgbGV0IHZhbHVlID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBjb25zdCBtYXRoID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICBjb25zdCBkZWYgPSBQYXJzZVV0aWwua2V5dmFsT3B0aW9ucyhhdHRyLCBFTkNMT1NFX09QVElPTlMpO1xuICBkZWYgWydub3RhdGlvbiddID0gW1RleENvbnN0YW50Lk5vdGF0aW9uLlVQRElBR09OQUxTVFJJS0UsXG4gICAgICAgICAgICAgICAgICAgICAgVGV4Q29uc3RhbnQuTm90YXRpb24uVVBESUFHT05BTEFSUk9XLFxuICAgICAgICAgICAgICAgICAgICAgIFRleENvbnN0YW50Lk5vdGF0aW9uLk5PUlRIRUFTVEFSUk9XXS5qb2luKCcgJyk7XG4gIHZhbHVlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW3ZhbHVlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtkZXB0aDogJy0uMWVtJywgaGVpZ2h0OiAnKy4xZW0nLCB2b2Zmc2V0OiAnLjFlbSd9KTtcbiAgcGFyc2VyLlB1c2gocGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3VwJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtZW5jbG9zZScsIFttYXRoXSwgZGVmKSwgdmFsdWVdKSk7XG59O1xuXG5cbm5ldyBDb21tYW5kTWFwKCdjYW5jZWwnLCB7XG4gIGNhbmNlbDogICBbJ0NhbmNlbCcsIFRleENvbnN0YW50Lk5vdGF0aW9uLlVQRElBR09OQUxTVFJJS0VdLFxuICBiY2FuY2VsOiAgWydDYW5jZWwnLCBUZXhDb25zdGFudC5Ob3RhdGlvbi5ET1dORElBR09OQUxTVFJJS0VdLFxuICB4Y2FuY2VsOiAgWydDYW5jZWwnLCBUZXhDb25zdGFudC5Ob3RhdGlvbi5VUERJQUdPTkFMU1RSSUtFICsgJyAnICtcbiAgICAgICAgICAgICBUZXhDb25zdGFudC5Ob3RhdGlvbi5ET1dORElBR09OQUxTVFJJS0VdLFxuICBjYW5jZWx0bzogJ0NhbmNlbFRvJ1xufSwgQ2FuY2VsTWV0aG9kcyk7XG5cblxuZXhwb3J0IGNvbnN0IENhbmNlbENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ2NhbmNlbCcsIHtoYW5kbGVyOiB7bWFjcm86IFsnY2FuY2VsJ119fVxuKTtcblxuXG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBVdGlsaXRpZXMgZmlsZSBmb3IgdGhlIGVtcGhlcSBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIFAuIENlcnZvbmUpXG4gKi9cblxuXG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQge0Vudkxpc3R9IGZyb20gJy4uL1N0YWNrSXRlbS5qcyc7XG5pbXBvcnQge0Fic3RyYWN0VGFnc30gZnJvbSAnLi4vVGFncy5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7TW1sTXRhYmxlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXRhYmxlLmpzJztcbmltcG9ydCB7TW1sTXRkfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXRkLmpzJztcbmltcG9ydCB7RW1waGVxQmVnaW5JdGVtfSBmcm9tICcuL0VtcGhlcUNvbmZpZ3VyYXRpb24uanMnO1xuXG5leHBvcnQgY29uc3QgRW1waGVxVXRpbCA9IHtcblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBuZWVkZWQgZW52aW5yb25tZW50IGFuZCBwcm9jZXNzIGl0IGJ5IHRoZSBnaXZlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW52ICAgICAgICAgVGhlIGVudmlyb25tZW50IHRvIGNyZWF0ZS5cbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyAgICAgIEEgZnVuY3Rpb24gdG8gcHJvY2VzcyB0aGUgZW52aXJvbm1lbnQuXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgICAgICAgICBUaGUgYXJndW1lbnRzIGZvciBmdW5jLlxuICAgKi9cbiAgZW52aXJvbm1lbnQocGFyc2VyOiBUZXhQYXJzZXIsIGVudjogc3RyaW5nLCBmdW5jOiBGdW5jdGlvbiwgYXJnczogYW55W10pIHtcbiAgICBjb25zdCBuYW1lID0gYXJnc1swXTtcbiAgICBjb25zdCBpdGVtID0gcGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZShuYW1lICsgJy1iZWdpbicpLnNldFByb3BlcnRpZXMoe25hbWU6IGVudiwgZW5kOiBuYW1lfSk7XG4gICAgcGFyc2VyLlB1c2goZnVuYyhwYXJzZXIsIGl0ZW0sIC4uLmFyZ3Muc2xpY2UoMSkpKTtcbiAgfSxcblxuICAvKipcbiAgICogUGFyc2UgYW4gb3B0aW9ucyBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICAgICAgICAgICAgIFRoZSBzdHJpbmcgdG8gcGFyc2UuXG4gICAqIEBwYXJhbSB7e1trZXk6c3RyaW5nXTpudW1iZXJ9IGFsbG93ZWQgIE9iamVjdCBjb250YWluaW5nIG9wdGlvbnMgdG8gYWxsb3dcbiAgICogQHJldHVybiB7RW52TGlzdH0gICAgICAgICAgICAgICAgICAgICAgVGhlIHBhcnNlZCBrZXlzXG4gICAqL1xuICBzcGxpdE9wdGlvbnModGV4dDogc3RyaW5nLCBhbGxvd2VkOiB7W2tleTogc3RyaW5nXTogbnVtYmVyfSA9IG51bGwpOiBFbnZMaXN0IHtcbiAgICByZXR1cm4gUGFyc2VVdGlsLmtleXZhbE9wdGlvbnModGV4dCwgYWxsb3dlZCwgdHJ1ZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHtNbWxNdGFibGV9IHRhYmxlICAgVGhlIHRhYmxlIHdob3NlIGNvbHVtbnMgdG8gY291bnQuXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgIFRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgdGFibGUuXG4gICAqL1xuICBjb2x1bW5Db3VudCh0YWJsZTogTW1sTXRhYmxlKTogbnVtYmVyIHtcbiAgICBsZXQgbSA9IDA7XG4gICAgZm9yIChjb25zdCByb3cgb2YgdGFibGUuY2hpbGROb2Rlcykge1xuICAgICAgY29uc3QgbiA9IHJvdy5jaGlsZE5vZGVzLmxlbmd0aCAtIChyb3cuaXNLaW5kKCdtbGFiZWxlZHRyJykgPyAxIDogMCk7XG4gICAgICBpZiAobiA+IG0pIG0gPSBuO1xuICAgIH1cbiAgICByZXR1cm4gbTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG1wYWRkZWQgZWxlbWVudCB3aXRoIG5vIGhlaWdodCBhbmQgZGVwdGgsIGJ1dCB3aG9zZVxuICAgKiAgIGNvbnRlbnQgaXMgdGhlIGdpdmVuIFRlWCBjb2RlIHdpdGggYSBwaGFudG9tIHRoYXQgaXMgdGhlIGhlaWdodCBhbmRcbiAgICogICBkZXB0aCBvZiB0aGUgZ2l2ZW4gdGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXggICAgICAgIFRoZSBUZVggY29kZSB0byBwdXQgaW4gdGhlIGJveC5cbiAgICogQHBhcmFtIHtNbWxUYWJsZX0gdGFibGUgICAgVGhlIHRhYmxlIHVzZWQgdG8gc2l6ZSB0aGUgYm94LlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnYgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGVudmlyb25tZW50LlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSAgICAgICAgICBUaGUgbXBhZGRlZCBlbGVtZW50LlxuICAgKi9cbiAgY2VsbEJsb2NrKHRleDogc3RyaW5nLCB0YWJsZTogTW1sTXRhYmxlLCBwYXJzZXI6IFRleFBhcnNlciwgZW52OiBzdHJpbmcpOiBNbWxOb2RlIHtcbiAgICBjb25zdCBtcGFkZGVkID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW10sIHtoZWlnaHQ6IDAsIGRlcHRoOiAwLCB2b2Zmc2V0OiAnLTFoZWlnaHQnfSk7XG4gICAgY29uc3QgcmVzdWx0ID0gbmV3IFRleFBhcnNlcih0ZXgsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKTtcbiAgICBjb25zdCBtbWwgPSByZXN1bHQubW1sKCk7XG4gICAgaWYgKGVudiAmJiByZXN1bHQuY29uZmlndXJhdGlvbi50YWdzLmxhYmVsKSB7XG4gICAgICAocmVzdWx0LmNvbmZpZ3VyYXRpb24udGFncy5jdXJyZW50VGFnIGFzIGFueSkuZW52ID0gZW52O1xuICAgICAgKHJlc3VsdC5jb25maWd1cmF0aW9uLnRhZ3MgYXMgQWJzdHJhY3RUYWdzKS5nZXRUYWcodHJ1ZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgKG1tbC5pc0luZmVycmVkID8gbW1sLmNoaWxkTm9kZXMgOiBbbW1sXSkpIHtcbiAgICAgIG1wYWRkZWQuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICAgIH1cbiAgICBtcGFkZGVkLmFwcGVuZENoaWxkKHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBoYW50b20nLCBbXG4gICAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbdGFibGVdLCB7d2lkdGg6IDB9KVxuICAgIF0pKTtcbiAgICByZXR1cm4gbXBhZGRlZDtcbiAgfSxcblxuICAvKipcbiAgICogTWFrZSBhIGNvcHkgb2YgdGhlIHRhYmxlIHdpdGggb25seSB0aGUgZmlyc3Qgcm93IGFuZCBjcmVhdGUgYSBwaGFudG9tIGVsZW1lbnRcbiAgICogICB0aGF0IGhhcyBpdHMgaGVpZ2h0IGFuZCBkZXB0aC5cbiAgICpcbiAgICogQHBhcmFtIHtNbWxNdGFibGV9IG9yaWdpbmFsICAgVGhlIG9yaWdpbmFsIHRhYmxlLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgICBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gICAqIEByZXR1cm4ge01tbE5vZGV9ICAgICAgICAgICAgIFRoZSByZXN1bHRpbmcgbXBoYW50b20gZWxlbWVudC5cbiAgICovXG4gIHRvcFJvd1RhYmxlKG9yaWdpbmFsOiBNbWxNdGFibGUsIHBhcnNlcjogVGV4UGFyc2VyKTogTW1sTm9kZSB7XG4gICAgY29uc3QgdGFibGUgPSBQYXJzZVV0aWwuY29weU5vZGUob3JpZ2luYWwsIHBhcnNlcik7XG4gICAgdGFibGUuc2V0Q2hpbGRyZW4odGFibGUuY2hpbGROb2Rlcy5zbGljZSgwLCAxKSk7XG4gICAgdGFibGUuYXR0cmlidXRlcy5zZXQoJ2FsaWduJywgJ2Jhc2VsaW5lIDEnKTtcbiAgICByZXR1cm4gb3JpZ2luYWwuZmFjdG9yeS5jcmVhdGUoJ21waGFudG9tJywge30sIFtwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbdGFibGVdLCAge3dpZHRoOiAwfSldKTtcbiAgfSxcblxuICAvKipcbiAgICogQWRkIGFuIG1wYWRkZWQgZWxlbWVudCB0aGF0IGhhcyB6ZXJvIGhlaWdodCBhbmQgZGVwdGggYnV0IHdob3NlIGNvbnRlbnQgaXNcbiAgICogICB0aGUgY2VsbCBibG9jayBmb3IgdGhlIGdpdmVuIFRlWCBjb2RlIGZvbGxvd2VkIGJ5IGEgc3RydWN0IHRoZSBzaXplIG9mIHRoZSB0b3Agcm93LlxuICAgKlxuICAgKiBAcGFyYW0ge01tbE10ZH0gbXRkICAgICAgICAgVGhlIG10ZCB0byBhZGQgY29udGVudCB0by5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleCAgICAgICAgIFRoZSBUZVggc3RyaW5nIHRvIHB1dCBpbnRvIHRoZSBjZWxsLlxuICAgKiBAcGFyYW0ge01tbE10YWJsZX0gdGFibGUgICAgVGhlIHJlZmVyZW5jZSB0YWJsZSB1c2VkIGZvciBpdHMgdmFyaW91cyBoZWlnaHRzLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge3NydGluZ30gZW52ICAgICAgICAgVGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuXG4gICAqL1xuICByb3dzcGFuQ2VsbChtdGQ6IE1tbE10ZCwgdGV4OiBzdHJpbmcsIHRhYmxlOiBNbWxNdGFibGUsIHBhcnNlcjogVGV4UGFyc2VyLCBlbnY6IHN0cmluZykge1xuICAgIG10ZC5hcHBlbmRDaGlsZChcbiAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtcbiAgICAgICAgdGhpcy5jZWxsQmxvY2sodGV4LCBQYXJzZVV0aWwuY29weU5vZGUodGFibGUsIHBhcnNlciksIHBhcnNlciwgZW52KSxcbiAgICAgICAgdGhpcy50b3BSb3dUYWJsZSh0YWJsZSwgcGFyc2VyKVxuICAgICAgXSwge2hlaWdodDogMCwgZGVwdGg6IDAsIHZvZmZzZXQ6ICdoZWlnaHQnfSlcbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBZGQgc29tZXRoaW5nIG9uIHRoZSBsZWZ0IG9mIHRoZSBvcmlnaW5hbCB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHtNbWxNdGFibGV9IHRhYmxlICAgICBUaGUgdGFibGUgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge01tbE10YWJsZX0gb3JpZ2luYWwgIFRoZSBvcmlnaW5hbCB0YWJsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgICAgICAgICBUaGUgVGVYIGNvZGUgdG8gYWRkIHRvIHRoZSBsZWZ0LlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgIFRoZSBhY3RpdmUgdGV4IHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudiAgICAgICAgICBUaGUgY3VycmVudCBlbnZpcm9ubWVudC5cbiAgICovXG4gIGxlZnQodGFibGU6IE1tbE10YWJsZSwgb3JpZ2luYWw6IE1tbE10YWJsZSwgbGVmdDogc3RyaW5nLCBwYXJzZXI6IFRleFBhcnNlciwgZW52OiBzdHJpbmcgPSAnJykge1xuICAgIHRhYmxlLmF0dHJpYnV0ZXMuc2V0KCdjb2x1bW5hbGlnbicsICdyaWdodCAnICsgKHRhYmxlLmF0dHJpYnV0ZXMuZ2V0KCdjb2x1bW5hbGlnbicpIHx8ICcnKSk7XG4gICAgdGFibGUuYXR0cmlidXRlcy5zZXQoJ2NvbHVtbnNwYWNpbmcnLCAnMGVtICcgKyAodGFibGUuYXR0cmlidXRlcy5nZXQoJ2NvbHVtbnNwYWNpbmcnKSB8fCAnJykpO1xuICAgIGxldCBtdGQ7XG4gICAgZm9yIChjb25zdCByb3cgb2YgdGFibGUuY2hpbGROb2Rlcy5zbGljZSgwKS5yZXZlcnNlKCkpIHtcbiAgICAgIG10ZCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRkJyk7XG4gICAgICByb3cuY2hpbGROb2Rlcy51bnNoaWZ0KG10ZCk7XG4gICAgICBtdGQucGFyZW50ID0gcm93O1xuICAgICAgaWYgKHJvdy5pc0tpbmQoJ21sYWJlbGVkdHInKSkge1xuICAgICAgICByb3cuY2hpbGROb2Rlc1swXSA9IHJvdy5jaGlsZE5vZGVzWzFdO1xuICAgICAgICByb3cuY2hpbGROb2Rlc1sxXSA9IG10ZDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5yb3dzcGFuQ2VsbChtdGQsIGxlZnQsIG9yaWdpbmFsLCBwYXJzZXIsIGVudik7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZCBzb21ldGhpbmcgb24gdGhlIHJpZ2h0IG9mIHRoZSBvcmlnaW5hbCB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIHtNbWxNdGFibGV9IHRhYmxlICAgICBUaGUgdGFibGUgdG8gbW9kaWZ5LlxuICAgKiBAcGFyYW0ge01tbE10YWJsZX0gb3JpZ2luYWwgIFRoZSBvcmlnaW5hbCB0YWJsZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJpZ2h0ICAgICAgICBUaGUgVGVYIGNvZGUgdG8gYWRkIHRvIHRoZSByaWdodC5cbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgICBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBlbnYgICAgICAgICAgVGhlIGN1cnJlbnQgZW52aXJvbm1lbnQuXG4gICAqL1xuICByaWdodCh0YWJsZTogTW1sTXRhYmxlLCBvcmlnaW5hbDogTW1sTXRhYmxlLCByaWdodDogc3RyaW5nLCBwYXJzZXI6IFRleFBhcnNlciwgZW52OiBzdHJpbmcgPSAnJykge1xuICAgIGlmICh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGFibGUuYXBwZW5kQ2hpbGQocGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdHInKSk7XG4gICAgfVxuICAgIGNvbnN0IG0gPSBFbXBoZXFVdGlsLmNvbHVtbkNvdW50KHRhYmxlKTtcbiAgICBjb25zdCByb3cgPSB0YWJsZS5jaGlsZE5vZGVzWzBdO1xuICAgIHdoaWxlIChyb3cuY2hpbGROb2Rlcy5sZW5ndGggPCBtKSByb3cuYXBwZW5kQ2hpbGQocGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtdGQnKSk7XG4gICAgY29uc3QgbXRkID0gcm93LmFwcGVuZENoaWxkKHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRkJykpIGFzIE1tbE10ZDtcbiAgICBFbXBoZXFVdGlsLnJvd3NwYW5DZWxsKG10ZCwgcmlnaHQsIG9yaWdpbmFsLCBwYXJzZXIsIGVudik7XG4gICAgdGFibGUuYXR0cmlidXRlcy5zZXQoXG4gICAgICAnY29sdW1uYWxpZ24nLFxuICAgICAgKHRhYmxlLmF0dHJpYnV0ZXMuZ2V0KCdjb2x1bW5hbGlnbicpIGFzIHN0cmluZyB8fCAnJykuc3BsaXQoLyAvKS5zbGljZSgwLCBtKS5qb2luKCcgJykgKyAnIGxlZnQnXG4gICAgKTtcbiAgICB0YWJsZS5hdHRyaWJ1dGVzLnNldChcbiAgICAgICdjb2x1bW5zcGFjaW5nJyxcbiAgICAgICh0YWJsZS5hdHRyaWJ1dGVzLmdldCgnY29sdW1uc3BhY2luZycpIGFzIHN0cmluZyB8fCAnJykuc3BsaXQoLyAvKS5zbGljZSgwLCBtIC0gMSkuam9pbignICcpICsgJyAwZW0nXG4gICAgKTtcbiAgfSxcblxuICAvKipcbiAgICogQWRkIHRoZSBsZWZ0LSBhbmQgcmlnaHQtaGFuZCBtYXRlcmlhbCB0byB0aGUgdGFibGUuXG4gICAqL1xuICBhZGp1c3RUYWJsZShlbXBoZXE6IEVtcGhlcUJlZ2luSXRlbSwgcGFyc2VyOiBUZXhQYXJzZXIpIHtcbiAgICBjb25zdCBsZWZ0ID0gZW1waGVxLmdldFByb3BlcnR5KCdsZWZ0Jyk7XG4gICAgY29uc3QgcmlnaHQgPSBlbXBoZXEuZ2V0UHJvcGVydHkoJ3JpZ2h0Jyk7XG4gICAgaWYgKGxlZnQgfHwgcmlnaHQpIHtcbiAgICAgIGNvbnN0IHRhYmxlID0gZW1waGVxLkxhc3Q7XG4gICAgICBjb25zdCBvcmlnaW5hbCA9IFBhcnNlVXRpbC5jb3B5Tm9kZSh0YWJsZSwgcGFyc2VyKTtcbiAgICAgIGlmIChsZWZ0KSB0aGlzLmxlZnQodGFibGUsIG9yaWdpbmFsLCBsZWZ0LCBwYXJzZXIpO1xuICAgICAgaWYgKHJpZ2h0KSB0aGlzLnJpZ2h0KHRhYmxlLCBvcmlnaW5hbCwgcmlnaHQsIHBhcnNlcik7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBUaGUgZW52aXJvbm1lbnRzIGFsbG93ZWQgdG8gYmUgdXNlZCBpbiB0aGUgZW1waGVxIGVudmlyb25tZW50LlxuICAgKi9cbiAgYWxsb3dFbnY6IHtcbiAgICBlcXVhdGlvbjogdHJ1ZSxcbiAgICBhbGlnbjogdHJ1ZSxcbiAgICBnYXRoZXI6IHRydWUsXG4gICAgZmxhbGlnbjogdHJ1ZSxcbiAgICBhbGlnbmF0OiB0cnVlLFxuICAgIG11bHRsaW5lOiB0cnVlXG4gIH0sXG5cbiAgLyoqXG4gICAqIENoZWNrcyB0byBzZWUgaWYgdGhlIGdpdmVuIGVudmlyb25tZW50IGlzIG9uZSBvZiB0aGUgYWxsb3dlZCBvbmVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZW52ICAgVGhlIGVudmlyb25tZW50IHRvIGNoZWNrLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgICAgVHJ1ZSBpZiB0aGUgZW52aXJvbm1lbnQgaXMgYWxsb3dlZC5cbiAgICovXG4gIGNoZWNrRW52KGVudjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dFbnYuaGFzT3duUHJvcGVydHkoZW52LnJlcGxhY2UoL1xcKiQvLCAnJykpIHx8IGZhbHNlO1xuICB9XG5cbn07XG4iLCAiaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7RW52aXJvbm1lbnRNYXAsIE1hY3JvTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IFBhcnNlVXRpbCBmcm9tICcuLi9QYXJzZVV0aWwuanMnO1xuaW1wb3J0IEJhc2VNZXRob2RzIGZyb20gJy4uL2Jhc2UvQmFzZU1ldGhvZHMuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4uL1RleEVycm9yLmpzJztcbmltcG9ydCB7QmVnaW5JdGVtLCBFcW5BcnJheUl0ZW19IGZyb20gJy4uL2Jhc2UvQmFzZUl0ZW1zLmpzJztcbmltcG9ydCB7QW1zVGFnc30gZnJvbSAnLi4vYW1zL0Ftc0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtTdGFja0l0ZW0sIENoZWNrVHlwZX0gZnJvbSAnLi4vU3RhY2tJdGVtLmpzJztcbmltcG9ydCB7TW1sTXRhYmxlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXRhYmxlLmpzJztcbmltcG9ydCB7RW1waGVxVXRpbH0gZnJvbSAnLi4vZW1waGVxL0VtcGhlcVV0aWwuanMnO1xuXG4vKipcbiAqIFRoZSBTdGFja0l0ZW0gZm9yIHRoZSBudW1jYXNlcyBlbnZpcm9ubWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIENhc2VzQmVnaW5JdGVtIGV4dGVuZHMgQmVnaW5JdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ2Nhc2VzLWJlZ2luJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGVja0l0ZW0oaXRlbTogU3RhY2tJdGVtKSB7XG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdlbmQnKSAmJiBpdGVtLmdldE5hbWUoKSA9PT0gdGhpcy5nZXROYW1lKCkpIHtcbiAgICAgIGlmICh0aGlzLmdldFByb3BlcnR5KCdlbmQnKSkge1xuICAgICAgICB0aGlzLnNldFByb3BlcnR5KCdlbmQnLCBmYWxzZSk7XG4gICAgICAgIHJldHVybiBbW10sIHRydWVdIGFzIENoZWNrVHlwZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmNoZWNrSXRlbShpdGVtKTtcbiAgfVxuXG59XG5cbi8qKlxuICogQSB0YWdnaW5nIGNsYXNzIGZvciB0aGUgc3VibnVtY2FzZXMgZW52aXJvbm1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBDYXNlc1RhZ3MgZXh0ZW5kcyBBbXNUYWdzIHtcblxuICAvKipcbiAgICogVGhlIGNvdW50ZXIgZm9yIHRoZSBzdWJudW1iZXIuXG4gICAqL1xuICBwcm90ZWN0ZWQgc3ViY291bnRlciA9IDA7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXJ0KGVudjogc3RyaW5nLCB0YWdnYWJsZTogYm9vbGVhbiwgZGVmYXVsdFRhZ3M6IGJvb2xlYW4pIHtcbiAgICB0aGlzLnN1YmNvdW50ZXIgPSAwO1xuICAgIHN1cGVyLnN0YXJ0KGVudiwgdGFnZ2FibGUsIGRlZmF1bHRUYWdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhdXRvVGFnKCkge1xuICAgIGlmICh0aGlzLmN1cnJlbnRUYWcudGFnICE9IG51bGwpIHJldHVybjtcbiAgICBpZiAodGhpcy5jdXJyZW50VGFnLmVudiA9PT0gJ3N1Ym51bWNhc2VzJykge1xuICAgICAgaWYgKHRoaXMuc3ViY291bnRlciA9PT0gMCkgdGhpcy5jb3VudGVyKys7XG4gICAgICB0aGlzLnN1YmNvdW50ZXIrKztcbiAgICAgIHRoaXMudGFnKHRoaXMuZm9ybWF0TnVtYmVyKHRoaXMuY291bnRlciwgdGhpcy5zdWJjb3VudGVyKSwgZmFsc2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5zdWJjb3VudGVyID09PSAwIHx8IHRoaXMuY3VycmVudFRhZy5lbnYgIT09ICdudW1jYXNlcy1sZWZ0JykgdGhpcy5jb3VudGVyKys7XG4gICAgICB0aGlzLnRhZyh0aGlzLmZvcm1hdE51bWJlcih0aGlzLmNvdW50ZXIpLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGZvcm1hdE51bWJlcihuOiBudW1iZXIsIG06IG51bWJlciA9IG51bGwpIHtcbiAgICByZXR1cm4gbi50b1N0cmluZygpICsgKG0gPT09IG51bGwgPyAnJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoMHg2MCArIG0pKTtcbiAgfVxuXG59XG5cbmV4cG9ydCBjb25zdCBDYXNlc01ldGhvZHMgPSB7XG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgdGhlIG51bWNhc2VzIGVudmlyb25tZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gdGV4cGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge0Nhc2VzQmVnaW5JdGVtfSBiZWdpbiAgVGhlIGVudmlyb25tZW50IGJlZ2luIGl0ZW0uXG4gICAqL1xuICBOdW1DYXNlcyhwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IENhc2VzQmVnaW5JdGVtKSB7XG4gICAgaWYgKHBhcnNlci5zdGFjay5lbnYuY2xvc2luZyA9PT0gYmVnaW4uZ2V0TmFtZSgpKSB7XG4gICAgICBkZWxldGUgcGFyc2VyLnN0YWNrLmVudi5jbG9zaW5nO1xuICAgICAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnZW5kJykuc2V0UHJvcGVydHkoJ25hbWUnLCBiZWdpbi5nZXROYW1lKCkpKTsgLy8gZmluaXNoIGVxbmFycmF5XG4gICAgICBjb25zdCBjYXNlcyA9IHBhcnNlci5zdGFjay5Ub3AoKTtcbiAgICAgIGNvbnN0IHRhYmxlID0gY2FzZXMuTGFzdCBhcyBNbWxNdGFibGU7XG4gICAgICBjb25zdCBvcmlnaW5hbCA9IFBhcnNlVXRpbC5jb3B5Tm9kZSh0YWJsZSwgcGFyc2VyKSBhcyBNbWxNdGFibGU7XG4gICAgICBjb25zdCBsZWZ0ID0gY2FzZXMuZ2V0UHJvcGVydHkoJ2xlZnQnKTtcbiAgICAgIEVtcGhlcVV0aWwubGVmdCh0YWJsZSwgb3JpZ2luYWwsIGxlZnQgKyAnXFxcXGVtcGhlcWxicmFjZVxcXFwsJywgcGFyc2VyLCAnbnVtY2FzZXMtbGVmdCcpO1xuICAgICAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnZW5kJykuc2V0UHJvcGVydHkoJ25hbWUnLCBiZWdpbi5nZXROYW1lKCkpKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsZWZ0ID0gcGFyc2VyLkdldEFyZ3VtZW50KCdcXFxcYmVnaW57JyArIGJlZ2luLmdldE5hbWUoKSArICd9Jyk7XG4gICAgICBiZWdpbi5zZXRQcm9wZXJ0eSgnbGVmdCcsIGxlZnQpO1xuICAgICAgY29uc3QgYXJyYXkgPSBCYXNlTWV0aG9kcy5FcW5BcnJheShwYXJzZXIsIGJlZ2luLCB0cnVlLCB0cnVlLCAnbGwnLCApIGFzIEVxbkFycmF5SXRlbTtcbiAgICAgIGFycmF5LmFycmF5ZGVmLmRpc3BsYXlzdHlsZSA9IGZhbHNlO1xuICAgICAgYXJyYXkuYXJyYXlkZWYucm93c3BhY2luZyA9ICcuMmVtJztcbiAgICAgIGFycmF5LnNldFByb3BlcnR5KCdudW1DYXNlcycsIHRydWUpO1xuICAgICAgcGFyc2VyLlB1c2goYmVnaW4pO1xuICAgICAgcmV0dXJuIGFycmF5O1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZW1lbnQgZm9yICYgaW4gY2FzZXMgZW52aXJvbm1lbnQuXG4gICAqL1xuICBFbnRyeShwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgaWYgKCFwYXJzZXIuc3RhY2suVG9wKCkuZ2V0UHJvcGVydHkoJ251bUNhc2VzJykpIHtcbiAgICAgIHJldHVybiBCYXNlTWV0aG9kcy5FbnRyeShwYXJzZXIsIG5hbWUpO1xuICAgIH1cbiAgICBwYXJzZXIuUHVzaChwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdjZWxsJykuc2V0UHJvcGVydGllcyh7aXNFbnRyeTogdHJ1ZSwgbmFtZTogbmFtZX0pKTtcbiAgICAvL1xuICAgIC8vICBNYWtlIHNlY29uZCBjb2x1bW4gYmUgaW4gXFx0ZXh0ey4uLn1cbiAgICAvL1xuICAgIGNvbnN0IHRleCA9IHBhcnNlci5zdHJpbmc7XG4gICAgbGV0IGJyYWNlcyA9IDAsIGkgPSBwYXJzZXIuaSwgbSA9IHRleC5sZW5ndGg7XG4gICAgLy9cbiAgICAvLyAgTG9vayB0aHJvdWdoIHRoZSBzdHJpbmcgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4uLlxuICAgIC8vXG4gICAgd2hpbGUgKGkgPCBtKSB7XG4gICAgICBjb25zdCBjID0gdGV4LmNoYXJBdChpKTtcbiAgICAgIGlmIChjID09PSAneycpIHtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gIEluY3JlYXNlIHRoZSBuZXN0ZWQgYnJhY2UgY291bnQgYW5kIGdvIG9uXG4gICAgICAgIC8vXG4gICAgICAgIGJyYWNlcysrO1xuICAgICAgICBpKys7XG4gICAgICB9IGVsc2UgaWYgKGMgPT09ICd9Jykge1xuICAgICAgICAvL1xuICAgICAgICAvLyAgSWYgdGhlcmUgYXJlIHRvbyBtYW55IGNsb3NlIGJyYWNlcywganVzdCBlbmQgKHdlIHdpbGwgZ2V0IGFuXG4gICAgICAgIC8vICAgIGVycm9yIG1lc3NhZ2UgbGF0ZXIgd2hlbiB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIGlzIHBhcnNlZClcbiAgICAgICAgLy8gIE90aGVyd2lzZVxuICAgICAgICAvLyAgICBkZWNyZWFzZSB0aGUgbmVzdGVkIGJyYWNlIGNvdW50LFxuICAgICAgICAvLyAgICBnbyBvbiB0byB0aGUgbmV4dCBjaGFyYWN0ZXIuXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChicmFjZXMgPT09IDApIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBicmFjZXMtLTtcbiAgICAgICAgICBpKys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJyYnICYmIGJyYWNlcyA9PT0gMCkge1xuICAgICAgICAvL1xuICAgICAgICAvLyAgRXh0cmEgYWxpZ25tZW50IHRhYnMgYXJlIG5vdCBhbGxvd2VkIGluIGNhc2VzXG4gICAgICAgIC8vXG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRXh0cmFDYXNlc0FsaWduVGFiJywgJ0V4dHJhIGFsaWdubWVudCB0YWIgaW4gdGV4dCBmb3IgbnVtY2FzZSBlbnZpcm9ubWVudCcpO1xuICAgICAgfSBlbHNlIGlmIChjID09PSAnXFxcXCcgJiYgYnJhY2VzID09PSAwKSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICBJZiB0aGUgbWFjcm8gaXMgXFxjciBvciBcXFxcLCBlbmQgdGhlIHNlYXJjaCwgb3RoZXJ3aXNlIHNraXAgdGhlIG1hY3JvXG4gICAgICAgIC8vICAobXVsdGktbGV0dGVyIG5hbWVzIGRvbid0IG1hdHRlciwgYXMgd2Ugd2lsbCBza2lwIHRoZSByZXN0IG9mIHRoZVxuICAgICAgICAvLyAgIGNoYXJhY3RlcnMgaW4gdGhlIG1haW4gbG9vcClcbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgY3MgPSAodGV4LnNsaWNlKGkgKyAxKS5tYXRjaCgvXlthLXpdK3wuL2kpIHx8IFtdKVswXTtcbiAgICAgICAgaWYgKGNzID09PSAnXFxcXCcgfHwgY3MgPT09ICdjcicgfHwgY3MgPT09ICdlbmQnIHx8IGNzID09PSAnbGFiZWwnKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaSArPSBjcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICBHbyBvbiB0byB0aGUgbmV4dCBjaGFyYWN0ZXJcbiAgICAgICAgLy9cbiAgICAgICAgaSsrO1xuICAgICAgfVxuICAgIH1cbiAgICAvL1xuICAgIC8vICBQcm9jZXNzIHRoZSBzZWNvbmQgY29sdW1uIGFzIHRleHQgYW5kIGNvbnRpbnVlIHBhcnNpbmcgZnJvbSB0aGVyZSxcbiAgICAvL1xuICAgIGNvbnN0IHRleHQgPSB0ZXguc3Vic3RyKHBhcnNlci5pLCBpIC0gcGFyc2VyLmkpLnJlcGxhY2UoL15cXHMqLywgJycpO1xuICAgIHBhcnNlci5QdXNoQWxsKFBhcnNlVXRpbC5pbnRlcm5hbE1hdGgocGFyc2VyLCB0ZXh0LCAwKSk7XG4gICAgcGFyc2VyLmkgPSBpO1xuICB9XG5cbn07XG5cbi8qKlxuICogVGhlIGVudmlyb25tZW50cyBmb3IgdGhpcyBwYWNrYWdlXG4gKi9cbm5ldyBFbnZpcm9ubWVudE1hcCgnY2FzZXMtZW52JywgRW1waGVxVXRpbC5lbnZpcm9ubWVudCwge1xuICBudW1jYXNlczogWydOdW1DYXNlcycsICdjYXNlcyddLFxuICBzdWJudW1jYXNlczogWydOdW1DYXNlcycsICdjYXNlcyddXG59LCBDYXNlc01ldGhvZHMpO1xuXG4vKipcbiAqIFRoZSBtYWNyb3MgZm9yIHRoaXMgcGFja2FnZVxuICovXG5uZXcgTWFjcm9NYXAoJ2Nhc2VzLW1hY3JvcycsIHtcbiAgJyYnOiAnRW50cnknXG59LCBDYXNlc01ldGhvZHMpO1xuXG4vL1xuLy8gIERlZmluZSB0aGUgcGFja2FnZSBmb3Igb3VyIG5ldyBlbnZpcm9ubWVudFxuLy9cbmV4cG9ydCBjb25zdCBDYXNlc0NvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZSgnY2FzZXMnLCB7XG4gIGhhbmRsZXI6IHtcbiAgICBlbnZpcm9ubWVudDogWydjYXNlcy1lbnYnXSxcbiAgICBjaGFyYWN0ZXI6IFsnY2FzZXMtbWFjcm9zJ11cbiAgfSxcbiAgaXRlbXM6IHtcbiAgICBbQ2FzZXNCZWdpbkl0ZW0ucHJvdG90eXBlLmtpbmRdOiBDYXNlc0JlZ2luSXRlbVxuICB9LFxuICB0YWdzOiB7J2Nhc2VzJzogQ2FzZXNUYWdzfVxufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBjZW50ZXJub3QgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBQLiBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi4vQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgUGFyc2VPcHRpb25zIGZyb20gJy4uL1BhcnNlT3B0aW9ucy5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQgTm9kZVV0aWwgZnJvbSAnLi4vTm9kZVV0aWwuanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IHtNbWxOb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQgQmFzZU1ldGhvZHMgZnJvbSAnLi4vYmFzZS9CYXNlTWV0aG9kcy5qcyc7XG5cbm5ldyBDb21tYW5kTWFwKCdjZW50ZXJub3QnLCB7XG4gIGNlbnRlck92ZXI6ICdDZW50ZXJPdmVyJyxcbiAgY2VudGVybm90OiBbJ01hY3JvJywgJ1xcXFxjZW50ZXJPdmVyeyMxfXt7XFx1MjlGOH19JywgMV1cbn0sIHtcbiAgLyoqXG4gICAqIEltcGxlbWVudHMgXFxjZW50ZXJPdmVye2Jhc2V9e3N5bWJvbH1cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBhY3RpdmUgdGV4IHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtYWNybyBiZWluZyBwcm9jZXNzZWQuXG4gICAqL1xuICBDZW50ZXJPdmVyKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhcmcgPSAneycgKyBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkgKyAnfSc7XG4gICAgY29uc3Qgb3ZlciA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgICBjb25zdCBiYXNlID0gbmV3IFRleFBhcnNlcihhcmcsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgICBsZXQgbW1sID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdUZVhBdG9tJywgW1xuICAgICAgbmV3IFRleFBhcnNlcihhcmcsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKSxcbiAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtcbiAgICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW292ZXJdLCB7d2lkdGg6IDAsIGxzcGFjZTogJy0uNXdpZHRoJ30pLFxuICAgICAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21waGFudG9tJywgW2Jhc2VdKVxuICAgICAgXSwge3dpZHRoOiAwLCBsc3BhY2U6ICctLjV3aWR0aCd9KVxuICAgIF0pO1xuICAgIHBhcnNlci5jb25maWd1cmF0aW9uLmFkZE5vZGUoJ2NlbnRlck92ZXInLCBiYXNlKTtcbiAgICBwYXJzZXIuUHVzaChtbWwpO1xuICB9LFxuICBNYWNybzogQmFzZU1ldGhvZHMuTWFjcm9cbn0pO1xuXG4vKipcbiAqIEZpbHRlciB0byBjb3B5IHRleENsYXNzIHRvIHRoZSBzdXJyb3VuZGluZyBUZVhBdG9tIHNvIHRoYXQgdGhlIG5lZ2F0ZWRcbiAqICAgaXRlbSBoYXMgdGhlIHNhbWUgY2xhc3Mgb2YgdGhlIGJhc2UuXG4gKlxuICogQHBhcmFtIHtQYXJzZU9wdGlvbnN9IGRhdGEgICBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJDZW50ZXJPdmVyKHtkYXRhfToge2RhdGE6IFBhcnNlT3B0aW9uc30pIHtcbiAgZm9yIChjb25zdCBiYXNlIG9mIGRhdGEuZ2V0TGlzdCgnY2VudGVyT3ZlcicpKSB7XG4gICAgY29uc3QgdGV4Q2xhc3MgPSBOb2RlVXRpbC5nZXRUZXhDbGFzcyhiYXNlLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXSBhcyBNbWxOb2RlKTtcbiAgICBpZiAodGV4Q2xhc3MgIT09IG51bGwpIHtcbiAgICAgIE5vZGVVdGlsLnNldFByb3BlcnRpZXMoYmFzZS5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudCwge3RleENsYXNzfSk7XG4gICAgfVxuICB9XG59XG5cblxuZXhwb3J0IGNvbnN0IENlbnRlcm5vdENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ2NlbnRlcm5vdCcsIHtcbiAgICBoYW5kbGVyOiB7bWFjcm86IFsnY2VudGVybm90J119LFxuICAgIHBvc3Rwcm9jZXNzb3JzOiBbZmlsdGVyQ2VudGVyT3Zlcl1cbiAgfVxuKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBPbWFyIEFsLUl0aGF3aSBhbmQgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgUGFyc2UgbWV0aG9kcyBhbmQgaGVscGVyIGZ1bmN0dGlvbnMgZm9yIHRoZSBjb2xvciBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3IgaUBvbWFyZG8uY29tIChPbWFyIEFsLUl0aGF3aSlcbiAqL1xuXG5cbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQge1BhcnNlTWV0aG9kfSBmcm9tICcuLi9UeXBlcy5qcyc7XG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vLi4vY29yZS9UcmVlL05vZGUuanMnO1xuaW1wb3J0IFBhcnNlVXRpbCBmcm9tICcuLi9QYXJzZVV0aWwuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuXG5pbXBvcnQge0NvbG9yTW9kZWx9IGZyb20gJy4vQ29sb3JVdGlsLmpzJztcblxuXG4vKipcbiAqIEJ1aWxkIFByb3BlcnR5TGlzdCBmcm9tIHBhZGRpbmcgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yUGFkZGluZzogUGFkZGluZyBmb3IgXFxjb2xvcmJveCBhbmQgXFxmY29sb3Jib3guXG4gKiBAcmV0dXJuIHtQcm9wZXJ0eUxpc3R9IFRoZSBwYWRkaW5nIHByb3BlcnRpZXMuXG4gKi9cbmZ1bmN0aW9uIHBhZGRpbmcoY29sb3JQYWRkaW5nOiBzdHJpbmcpOiBQcm9wZXJ0eUxpc3Qge1xuICBjb25zdCBwYWQgPSBgKyR7Y29sb3JQYWRkaW5nfWA7XG4gIGNvbnN0IHVuaXQgPSBjb2xvclBhZGRpbmcucmVwbGFjZSgvXi4qPyhbYS16XSopJC8sICckMScpO1xuICBjb25zdCBwYWQyID0gMiAqIHBhcnNlRmxvYXQocGFkKTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogYCske3BhZDJ9JHt1bml0fWAsXG4gICAgaGVpZ2h0OiBwYWQsXG4gICAgZGVwdGg6IHBhZCxcbiAgICBsc3BhY2U6IGNvbG9yUGFkZGluZyxcbiAgfTtcbn1cblxuXG5leHBvcnQgY29uc3QgQ29sb3JNZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBQYXJzZU1ldGhvZD4gPSB7fTtcblxuXG4vKipcbiAqIE92ZXJyaWRlIFxcY29sb3IgbWFjcm8gZGVmaW5pdGlvbi5cbiAqXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb250cm9sIHNlcXVlbmNlLlxuICovXG5Db2xvck1ldGhvZHMuQ29sb3IgPSBmdW5jdGlvbiAocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCBtb2RlbCA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lLCAnJyk7XG4gIGNvbnN0IGNvbG9yRGVmID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBjb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsID0gcGFyc2VyLmNvbmZpZ3VyYXRpb24ucGFja2FnZURhdGEuZ2V0KCdjb2xvcicpLm1vZGVsO1xuICBjb25zdCBjb2xvciA9IGNvbG9yTW9kZWwuZ2V0Q29sb3IobW9kZWwsIGNvbG9yRGVmKTtcblxuICBjb25zdCBzdHlsZSA9IHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ3N0eWxlJylcbiAgICAuc2V0UHJvcGVydGllcyh7c3R5bGVzOiB7IG1hdGhjb2xvcjogY29sb3IgfX0pO1xuICBwYXJzZXIuc3RhY2suZW52Wydjb2xvciddID0gY29sb3I7XG5cbiAgcGFyc2VyLlB1c2goc3R5bGUpO1xufTtcblxuXG4vKipcbiAqIERlZmluZSB0aGUgXFx0ZXh0Y29sb3IgbWFjcm8uXG4gKlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29udHJvbCBzZXF1ZW5jZS5cbiAqL1xuQ29sb3JNZXRob2RzLlRleHRDb2xvciA9IGZ1bmN0aW9uIChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IG1vZGVsID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcnKTtcbiAgY29uc3QgY29sb3JEZWYgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWwgPSBwYXJzZXIuY29uZmlndXJhdGlvbi5wYWNrYWdlRGF0YS5nZXQoJ2NvbG9yJykubW9kZWw7XG4gIGNvbnN0IGNvbG9yID0gY29sb3JNb2RlbC5nZXRDb2xvcihtb2RlbCwgY29sb3JEZWYpO1xuICBjb25zdCBvbGQgPSBwYXJzZXIuc3RhY2suZW52Wydjb2xvciddO1xuXG4gIHBhcnNlci5zdGFjay5lbnZbJ2NvbG9yJ10gPSBjb2xvcjtcbiAgY29uc3QgbWF0aCA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcblxuICBpZiAob2xkKSB7XG4gICAgcGFyc2VyLnN0YWNrLmVudlsnY29sb3InXSA9IG9sZDtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgcGFyc2VyLnN0YWNrLmVudlsnY29sb3InXTtcbiAgfVxuXG4gIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21zdHlsZScsIFttYXRoXSwge21hdGhjb2xvcjogY29sb3J9KTtcbiAgcGFyc2VyLlB1c2gobm9kZSk7XG59O1xuXG4vKipcbiAqIERlZmluZSB0aGUgXFxkZWZpbmVjb2xvciBtYWNyby5cbiAqXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb250cm9sIHNlcXVlbmNlLlxuICovXG5Db2xvck1ldGhvZHMuRGVmaW5lQ29sb3IgPSBmdW5jdGlvbiAocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCBjbmFtZSA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgY29uc3QgbW9kZWwgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGNvbnN0IGRlZiA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcblxuICBjb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsID0gcGFyc2VyLmNvbmZpZ3VyYXRpb24ucGFja2FnZURhdGEuZ2V0KCdjb2xvcicpLm1vZGVsO1xuICBjb2xvck1vZGVsLmRlZmluZUNvbG9yKG1vZGVsLCBjbmFtZSwgZGVmKTtcbn07XG5cbi8qKlxuICogUHJvZHVjZSBhIHRleHQgYm94IHdpdGggYSBjb2xvcmVkIGJhY2tncm91bmQ6IGBcXGNvbG9yYm94YC5cbiAqXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjb250cm9sIHNlcXVlbmNlLlxuICovXG5Db2xvck1ldGhvZHMuQ29sb3JCb3ggPSBmdW5jdGlvbiAocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCBjbmFtZSA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgY29uc3QgbWF0aCA9IFBhcnNlVXRpbC5pbnRlcm5hbE1hdGgocGFyc2VyLCBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICBjb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsID0gcGFyc2VyLmNvbmZpZ3VyYXRpb24ucGFja2FnZURhdGEuZ2V0KCdjb2xvcicpLm1vZGVsO1xuXG4gIGNvbnN0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBtYXRoLCB7XG4gICAgbWF0aGJhY2tncm91bmQ6IGNvbG9yTW9kZWwuZ2V0Q29sb3IoJ25hbWVkJywgY25hbWUpXG4gIH0pO1xuXG4gIE5vZGVVdGlsLnNldFByb3BlcnRpZXMobm9kZSwgcGFkZGluZyhwYXJzZXIub3B0aW9ucy5jb2xvci5wYWRkaW5nKSk7XG4gIHBhcnNlci5QdXNoKG5vZGUpO1xufTtcblxuLyoqXG4gKiBQcm9kdWNlIGEgZnJhbWVkIHRleHQgYm94IHdpdGggYSBjb2xvcmVkIGJhY2tncm91bmQ6IGBcXGZjb2xvcmJveGAuXG4gKlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY29udHJvbCBzZXF1ZW5jZS5cbiAqL1xuQ29sb3JNZXRob2RzLkZDb2xvckJveCA9IGZ1bmN0aW9uIChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGZuYW1lID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBjb25zdCBjbmFtZSA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgY29uc3QgbWF0aCA9IFBhcnNlVXRpbC5pbnRlcm5hbE1hdGgocGFyc2VyLCBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VyLm9wdGlvbnMuY29sb3I7XG4gIGNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWwgPSBwYXJzZXIuY29uZmlndXJhdGlvbi5wYWNrYWdlRGF0YS5nZXQoJ2NvbG9yJykubW9kZWw7XG5cbiAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIG1hdGgsIHtcbiAgICBtYXRoYmFja2dyb3VuZDogY29sb3JNb2RlbC5nZXRDb2xvcignbmFtZWQnLCBjbmFtZSksXG4gICAgc3R5bGU6IGBib3JkZXI6ICR7b3B0aW9ucy5ib3JkZXJXaWR0aH0gc29saWQgJHtjb2xvck1vZGVsLmdldENvbG9yKCduYW1lZCcsIGZuYW1lKX1gXG4gIH0pO1xuXG4gIE5vZGVVdGlsLnNldFByb3BlcnRpZXMobm9kZSwgcGFkZGluZyhvcHRpb25zLnBhZGRpbmcpKTtcbiAgcGFyc2VyLlB1c2gobm9kZSk7XG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIE9tYXIgQWwtSXRoYXdpIGFuZCBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25zdGFudHMgZmlsZSBmb3IgdGhlIGNvbG9yIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciBpQG9tYXJkby5jb20gKE9tYXIgQWwtSXRoYXdpKVxuICovXG5cbmV4cG9ydCBjb25zdCBDT0xPUlM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPihbXG4gIFsnQXByaWNvdCcsICcjRkJCOTgyJ10sXG4gIFsnQXF1YW1hcmluZScsICcjMDBCNUJFJ10sXG4gIFsnQml0dGVyc3dlZXQnLCAnI0MwNEYxNyddLFxuICBbJ0JsYWNrJywgJyMyMjFFMUYnXSxcbiAgWydCbHVlJywgJyMyRDJGOTInXSxcbiAgWydCbHVlR3JlZW4nLCAnIzAwQjNCOCddLFxuICBbJ0JsdWVWaW9sZXQnLCAnIzQ3Mzk5MiddLFxuICBbJ0JyaWNrUmVkJywgJyNCNjMyMUMnXSxcbiAgWydCcm93bicsICcjNzkyNTAwJ10sXG4gIFsnQnVybnRPcmFuZ2UnLCAnI0Y3OTIxRCddLFxuICBbJ0NhZGV0Qmx1ZScsICcjNzQ3MjlBJ10sXG4gIFsnQ2FybmF0aW9uUGluaycsICcjRjI4MkI0J10sXG4gIFsnQ2VydWxlYW4nLCAnIzAwQTJFMyddLFxuICBbJ0Nvcm5mbG93ZXJCbHVlJywgJyM0MUIwRTQnXSxcbiAgWydDeWFuJywgJyMwMEFFRUYnXSxcbiAgWydEYW5kZWxpb24nLCAnI0ZEQkM0MiddLFxuICBbJ0RhcmtPcmNoaWQnLCAnI0E0NTM4QSddLFxuICBbJ0VtZXJhbGQnLCAnIzAwQTk5RCddLFxuICBbJ0ZvcmVzdEdyZWVuJywgJyMwMDlCNTUnXSxcbiAgWydGdWNoc2lhJywgJyM4QzM2OEMnXSxcbiAgWydHb2xkZW5yb2QnLCAnI0ZGREY0MiddLFxuICBbJ0dyYXknLCAnIzk0OTY5OCddLFxuICBbJ0dyZWVuJywgJyMwMEE2NEYnXSxcbiAgWydHcmVlblllbGxvdycsICcjREZFNjc0J10sXG4gIFsnSnVuZ2xlR3JlZW4nLCAnIzAwQTk5QSddLFxuICBbJ0xhdmVuZGVyJywgJyNGNDlFQzQnXSxcbiAgWydMaW1lR3JlZW4nLCAnIzhEQzczRSddLFxuICBbJ01hZ2VudGEnLCAnI0VDMDA4QyddLFxuICBbJ01haG9nYW55JywgJyNBOTM0MUYnXSxcbiAgWydNYXJvb24nLCAnI0FGMzIzNSddLFxuICBbJ01lbG9uJywgJyNGODlFN0InXSxcbiAgWydNaWRuaWdodEJsdWUnLCAnIzAwNjc5NSddLFxuICBbJ011bGJlcnJ5JywgJyNBOTNDOTMnXSxcbiAgWydOYXZ5Qmx1ZScsICcjMDA2RUI4J10sXG4gIFsnT2xpdmVHcmVlbicsICcjM0M4MDMxJ10sXG4gIFsnT3JhbmdlJywgJyNGNTgxMzcnXSxcbiAgWydPcmFuZ2VSZWQnLCAnI0VEMTM1QSddLFxuICBbJ09yY2hpZCcsICcjQUY3MkIwJ10sXG4gIFsnUGVhY2gnLCAnI0Y3OTY1QSddLFxuICBbJ1Blcml3aW5rbGUnLCAnIzc5NzdCOCddLFxuICBbJ1BpbmVHcmVlbicsICcjMDA4QjcyJ10sXG4gIFsnUGx1bScsICcjOTIyNjhGJ10sXG4gIFsnUHJvY2Vzc0JsdWUnLCAnIzAwQjBGMCddLFxuICBbJ1B1cnBsZScsICcjOTk0NzlCJ10sXG4gIFsnUmF3U2llbm5hJywgJyM5NzQwMDYnXSxcbiAgWydSZWQnLCAnI0VEMUIyMyddLFxuICBbJ1JlZE9yYW5nZScsICcjRjI2MDM1J10sXG4gIFsnUmVkVmlvbGV0JywgJyNBMTI0NkInXSxcbiAgWydSaG9kYW1pbmUnLCAnI0VGNTU5RiddLFxuICBbJ1JveWFsQmx1ZScsICcjMDA3MUJDJ10sXG4gIFsnUm95YWxQdXJwbGUnLCAnIzYxM0Y5OSddLFxuICBbJ1J1YmluZVJlZCcsICcjRUQwMTdEJ10sXG4gIFsnU2FsbW9uJywgJyNGNjkyODknXSxcbiAgWydTZWFHcmVlbicsICcjM0ZCQzlEJ10sXG4gIFsnU2VwaWEnLCAnIzY3MTgwMCddLFxuICBbJ1NreUJsdWUnLCAnIzQ2QzVERCddLFxuICBbJ1NwcmluZ0dyZWVuJywgJyNDNkRDNjcnXSxcbiAgWydUYW4nLCAnI0RBOUQ3NiddLFxuICBbJ1RlYWxCbHVlJywgJyMwMEFFQjMnXSxcbiAgWydUaGlzdGxlJywgJyNEODgzQjcnXSxcbiAgWydUdXJxdW9pc2UnLCAnIzAwQjRDRSddLFxuICBbJ1Zpb2xldCcsICcjNTg0MjlCJ10sXG4gIFsnVmlvbGV0UmVkJywgJyNFRjU4QTAnXSxcbiAgWydXaGl0ZScsICcjRkZGRkZGJ10sXG4gIFsnV2lsZFN0cmF3YmVycnknLCAnI0VFMjk2NyddLFxuICBbJ1llbGxvdycsICcjRkZGMjAwJ10sXG4gIFsnWWVsbG93R3JlZW4nLCAnIzk4Q0M3MCddLFxuICBbJ1llbGxvd09yYW5nZScsICcjRkFBMjFBJ10sXG5dKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBPbWFyIEFsLUl0aGF3aSBhbmQgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgVXRpbGl0eSBmdW5jdGlvbnMgYW5kIGNsYXNzZXMgZm9yIHRoZSBjb2xvciBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3IgaUBvbWFyZG8uY29tIChPbWFyIEFsLUl0aGF3aSlcbiAqL1xuXG5cbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5pbXBvcnQge0NPTE9SU30gZnJvbSAnLi9Db2xvckNvbnN0YW50cy5qcyc7XG5cbnR5cGUgQ29sb3JNb2RlbFByb2Nlc3NvciA9IChkZWY6IHN0cmluZykgPT4gc3RyaW5nO1xuY29uc3QgQ29sb3JNb2RlbFByb2Nlc3NvcnM6IE1hcDxzdHJpbmcsIENvbG9yTW9kZWxQcm9jZXNzb3I+ID0gbmV3IE1hcDxzdHJpbmcsIENvbG9yTW9kZWxQcm9jZXNzb3I+KCk7XG5cblxuZXhwb3J0IGNsYXNzIENvbG9yTW9kZWwge1xuXG4gIC8qKlxuICAgKiBVc2VyIGRlZmluZWQgY29sb3JzLlxuICAgKlxuICAgKiBUaGlzIHZhcmlhYmxlIGlzIGxvY2FsIHRvIHRoZSBwYXJzZXIsIHNvIHR3byBwYXJzZXJzIGluIHRoZSBzYW1lXG4gICAqIEphdmFTY3JpcHQgdGhyZWFkIGNhbiBoYXZlIHR3byBkaWZmZXJlbnQgc2V0cyBvZiB1c2VyLWRlZmluZWQgY29sb3JzLlxuICAgKi9cbiAgcHJpdmF0ZSB1c2VyQ29sb3JzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICAvKipcbiAgICogQ29udmVydHMgYSBjb2xvciBtb2RlbCBmcm9tIHN0cmluZyByZXByZXNlbnRhdGlvbiB0byBpdHMgQ1NTIGZvcm1hdCBgIzQ0ZmYwMGBcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsIFRoZSBjb2xvcmluZyBtb2RlbCB0eXBlOiBgcmdiYCBgUkdCYCBvciBgZ3JheWAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZWYgVGhlIGNvbG9yIGRlZmluaXRpb246IGAwLjUsMCwxYCwgYDEyOCwwLDI1NWAsIGAwLjVgLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb2xvciBkZWZpbml0aW9uIGluIENTUyBmb3JtYXQgZS5nLiBgIzQ0ZmYwMGAuXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZUNvbG9yKG1vZGVsOiBzdHJpbmcsIGRlZjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIW1vZGVsIHx8IG1vZGVsID09PSAnbmFtZWQnKSB7XG4gICAgICAvLyBBbGxvdyB0byBkZWZpbmUgY29sb3JzIGRpcmVjdGx5IGJ5IHVzaW5nIHRoZSBDU1MgZm9ybWF0IGUuZy4gYCM4ODhgXG4gICAgICByZXR1cm4gZGVmO1xuICAgIH1cblxuICAgIGlmIChDb2xvck1vZGVsUHJvY2Vzc29ycy5oYXMobW9kZWwpKSB7XG4gICAgICBjb25zdCBtb2RlbFByb2Nlc3NvciA9IENvbG9yTW9kZWxQcm9jZXNzb3JzLmdldChtb2RlbCk7XG4gICAgICByZXR1cm4gbW9kZWxQcm9jZXNzb3IoZGVmKTtcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ1VuZGVmaW5lZENvbG9yTW9kZWwnLCAnQ29sb3IgbW9kZWwgXFwnJTFcXCcgbm90IGRlZmluZWQnLCBtb2RlbCk7XG4gIH1cblxuICAvKipcbiAgICogTG9vayB1cCBhIGNvbG9yIGJhc2VkIG9uIGl0cyBtb2RlbCBhbmQgZGVmaW5pdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1vZGVsIFRoZSBjb2xvcmluZyBtb2RlbCB0eXBlOiBgbmFtZWRgLCBgcmdiYCBgUkdCYCBvciBgZ3JheWAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZWYgVGhlIGNvbG9yIGRlZmluaXRpb246IGByZWQsIGAwLjUsMCwxYCwgYDEyOCwwLDI1NWAsIGAwLjVgLlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb2xvciBkZWZpbml0aW9uIGluIENTUyBmb3JtYXQgZS5nLiBgIzQ0ZmYwMGAuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q29sb3IobW9kZWw6IHN0cmluZywgZGVmOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbW9kZWwgfHwgbW9kZWwgPT09ICduYW1lZCcpIHtcbiAgICAgIHJldHVybiB0aGlzLmdldENvbG9yQnlOYW1lKGRlZik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMubm9ybWFsaXplQ29sb3IobW9kZWwsIGRlZik7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgbmFtZWQgY29sb3IuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBjb2xvciBuYW1lIGUuZy4gYGRhcmtibHVlYC5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29sb3IgZGVmaW5pdGlvbiBpbiBDU1MgZm9ybWF0IGUuZy4gYCM0NGZmMDBgLlxuICAgKlxuICAgKiBUbyByZXRhaW4gYmFja3dhcmQgY29tcGF0aWxiaXR5IHdpdGggTWF0aEpheCB2MiB0aGlzIG1ldGhvZCByZXR1cm5zXG4gICAqIHVua25vd24gYXMtaXMsIHRoaXMgaXMgdXNlZnVsIGZvciBib3RoIHBhc3NpbmcgdGhyb3VnaCBDU1MgZm9ybWF0IGNvbG9ycyBsaWtlIGAjZmYwYCxcbiAgICogb3IgZXZlbiBzdGFuZGFyZCBDU1MgY29sb3IgbmFtZXMgdGhhdCB0aGlzIHBsdWdpbiBpcyB1bmF3YXJlIG9mLlxuICAgKlxuICAgKiBJbiBUZVggZm9ybWF0LCB0aGlzIHdvdWxkIGhlbHAgdG8gbGV0IGBcXHRleHRjb2xvcnsjZjgwfXtcXHRleHR7T3JhbmdlfX1gIHNob3cgYW5cbiAgICogb3JhbmdlIHdvcmQuXG4gICAqL1xuICBwcml2YXRlIGdldENvbG9yQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMudXNlckNvbG9ycy5oYXMobmFtZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnVzZXJDb2xvcnMuZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChDT0xPUlMuaGFzKG5hbWUpKSB7XG4gICAgICByZXR1cm4gQ09MT1JTLmdldChuYW1lKTtcbiAgICB9XG5cbiAgICAvLyBQYXNzIHRoZSBjb2xvciBuYW1lIGFzLWlzIHRvIENTU1xuICAgIHJldHVybiBuYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyB1c2VyLWRlZmluZWQgY29sb3IuXG4gICAqXG4gICAqIFRoaXMgY29sb3IgaXMgbG9jYWwgdG8gdGhlIHBhcnNlciwgc28gYW5vdGhlciBNYXRoSmF4IHBhcnNlciB3b24ndCBiZSBwb2x1dGVkLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbW9kZWwgVGhlIGNvbG9yaW5nIG1vZGVsIHR5cGU6IGUuZy4gYHJnYmAsIGBSR0JgIG9yIGBncmF5YC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIGNvbG9yIG5hbWU6IGBkYXJrYmx1ZWAuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZWYgVGhlIGNvbG9yIGRlZmluaXRpb24gaW4gdGhlIGNvbG9yIG1vZGVsIGZvcm1hdDogYDEyOCwwLDI1NWAuXG4gICAqL1xuICBwdWJsaWMgZGVmaW5lQ29sb3IobW9kZWw6IHN0cmluZywgbmFtZTogc3RyaW5nLCBkZWY6IHN0cmluZykge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZUNvbG9yKG1vZGVsLCBkZWYpO1xuICAgIHRoaXMudXNlckNvbG9ycy5zZXQobmFtZSwgbm9ybWFsaXplZCk7XG4gIH1cbn1cblxuXG4vKipcbiAqIEdldCBhbiByZ2IgY29sb3IuXG4gKlxuICogQHBhcmFtIHtPcHRpb25MaXN0fSBwYXJzZXJPcHRpb25zIFRoZSBwYXJzZXIgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gcmdiIFRoZSBjb2xvciBkZWZpbml0aW9uIGluIHJnYjogYDAuNSwwLDFgLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29sb3IgZGVmaW5pdGlvbiBpbiBDU1MgZm9ybWF0IGUuZy4gYCM0NGZmMDBgLlxuICovXG5Db2xvck1vZGVsUHJvY2Vzc29ycy5zZXQoJ3JnYicsIGZ1bmN0aW9uIChyZ2I6IHN0cmluZyk6IHN0cmluZyB7XG4gIGNvbnN0IHJnYlBhcnRzOiBzdHJpbmdbXSA9IHJnYi50cmltKCkuc3BsaXQoL1xccyosXFxzKi8pO1xuICBsZXQgUkdCOiBzdHJpbmcgPSAnIyc7XG5cbiAgaWYgKHJnYlBhcnRzLmxlbmd0aCAhPT0gMykge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignTW9kZWxBcmcxJywgJ0NvbG9yIHZhbHVlcyBmb3IgdGhlICUxIG1vZGVsIHJlcXVpcmUgMyBudW1iZXJzJywgJ3JnYicpO1xuICB9XG5cbiAgZm9yIChjb25zdCByZ2JQYXJ0IG9mIHJnYlBhcnRzKSB7XG4gICAgaWYgKCFyZ2JQYXJ0Lm1hdGNoKC9eKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspJC8pKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0ludmFsaWREZWNpbWFsTnVtYmVyJywgJ0ludmFsaWQgZGVjaW1hbCBudW1iZXInKTtcbiAgICB9XG5cbiAgICBjb25zdCBuID0gcGFyc2VGbG9hdChyZ2JQYXJ0KTtcbiAgICBpZiAobiA8IDAgfHwgbiA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTW9kZWxBcmcyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAnQ29sb3IgdmFsdWVzIGZvciB0aGUgJTEgbW9kZWwgbXVzdCBiZSBiZXR3ZWVuICUyIGFuZCAlMycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ3JnYicsICcwJywgJzEnKTtcbiAgICB9XG5cbiAgICBsZXQgcG4gPSBNYXRoLmZsb29yKG4gKiAyNTUpLnRvU3RyaW5nKDE2KTtcbiAgICBpZiAocG4ubGVuZ3RoIDwgMikge1xuICAgICAgcG4gPSAnMCcgKyBwbjtcbiAgICB9XG5cbiAgICBSR0IgKz0gcG47XG4gIH1cblxuICByZXR1cm4gUkdCO1xufSk7XG5cbi8qKlxuICogR2V0IGFuIFJHQiBjb2xvci5cbiAqXG4gKiBAcGFyYW0ge09wdGlvbkxpc3R9IHBhcnNlck9wdGlvbnMgVGhlIHBhcnNlciBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSB7c3RyaW5nfSByZ2IgVGhlIGNvbG9yIGRlZmluaXRpb24gaW4gUkdCOiBgMTI4LDAsMjU1YC5cbiAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNvbG9yIGRlZmluaXRpb24gaW4gQ1NTIGZvcm1hdCBlLmcuIGAjNDRmZjAwYC5cbiAqL1xuQ29sb3JNb2RlbFByb2Nlc3NvcnMuc2V0KCdSR0InLCBmdW5jdGlvbiAocmdiOiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCByZ2JQYXJ0czogc3RyaW5nW10gPSByZ2IudHJpbSgpLnNwbGl0KC9cXHMqLFxccyovKTtcbiAgbGV0IFJHQiA9ICcjJztcblxuICBpZiAocmdiUGFydHMubGVuZ3RoICE9PSAzKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdNb2RlbEFyZzEnLCAnQ29sb3IgdmFsdWVzIGZvciB0aGUgJTEgbW9kZWwgcmVxdWlyZSAzIG51bWJlcnMnLCAnUkdCJyk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHJnYlBhcnQgb2YgcmdiUGFydHMpIHtcbiAgICBpZiAoIXJnYlBhcnQubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0ludmFsaWROdW1iZXInLCAnSW52YWxpZCBudW1iZXInKTtcbiAgICB9XG5cbiAgICBjb25zdCBuID0gcGFyc2VJbnQocmdiUGFydCk7XG4gICAgaWYgKG4gPiAyNTUpIHtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTW9kZWxBcmcyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAnQ29sb3IgdmFsdWVzIGZvciB0aGUgJTEgbW9kZWwgbXVzdCBiZSBiZXR3ZWVuICUyIGFuZCAlMycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgJ1JHQicsICcwJywgJzI1NScpO1xuICAgIH1cblxuICAgIGxldCBwbiA9IG4udG9TdHJpbmcoMTYpO1xuICAgIGlmIChwbi5sZW5ndGggPCAyKSB7XG4gICAgICBwbiA9ICcwJyArIHBuO1xuICAgIH1cbiAgICBSR0IgKz0gcG47XG4gIH1cbiAgcmV0dXJuIFJHQjtcbn0pO1xuXG4vKipcbiAqIEdldCBhIGdyYXktc2NhbGUgdmFsdWUuXG4gKlxuICogQHBhcmFtIHtPcHRpb25MaXN0fSBwYXJzZXJPcHRpb25zIFRoZSBwYXJzZXIgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge3N0cmluZ30gZ3JheSBUaGUgY29sb3IgZGVmaW5pdGlvbiBpbiBSR0I6IGAwLjVgLlxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29sb3IgZGVmaW5pdGlvbiBpbiBDU1MgZm9ybWF0IGUuZy4gYCM4MDgwODBgLlxuICovXG5Db2xvck1vZGVsUHJvY2Vzc29ycy5zZXQoJ2dyYXknLCBmdW5jdGlvbiAoZ3JheTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFncmF5Lm1hdGNoKC9eXFxzKihcXGQrKFxcLlxcZCopP3xcXC5cXGQrKVxccyokLykpIHtcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0ludmFsaWREZWNpbWFsTnVtYmVyJywgJ0ludmFsaWQgZGVjaW1hbCBudW1iZXInKTtcbiAgfVxuXG4gIGNvbnN0IG46IG51bWJlciA9IHBhcnNlRmxvYXQoZ3JheSk7XG4gIGlmIChuIDwgMCB8fCBuID4gMSkge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignTW9kZWxBcmcyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ0NvbG9yIHZhbHVlcyBmb3IgdGhlICUxIG1vZGVsIG11c3QgYmUgYmV0d2VlbiAlMiBhbmQgJTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAnZ3JheScsICcwJywgJzEnKTtcbiAgfVxuICBsZXQgcG4gPSBNYXRoLmZsb29yKG4gKiAyNTUpLnRvU3RyaW5nKDE2KTtcbiAgaWYgKHBuLmxlbmd0aCA8IDIpIHtcbiAgICBwbiA9ICcwJyArIHBuO1xuICB9XG5cbiAgcmV0dXJuIGAjJHtwbn0ke3BufSR7cG59YDtcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIE9tYXIgQWwtSXRoYXdpIGFuZCBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBjb2xvciBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3IgaUBvbWFyZG8uY29tIChPbWFyIEFsLUl0aGF3aSlcbiAqL1xuXG5cbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7Q29uZmlndXJhdGlvbiwgUGFyc2VyQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQge0NvbG9yTWV0aG9kc30gZnJvbSAnLi9Db2xvck1ldGhvZHMuanMnO1xuaW1wb3J0IHtDb2xvck1vZGVsfSBmcm9tICcuL0NvbG9yVXRpbC5qcyc7XG5pbXBvcnQge1RlWH0gZnJvbSAnLi4vLi4vdGV4LmpzJztcblxuLyoqXG4gKiBUaGUgY29sb3IgbWFjcm9zXG4gKi9cbm5ldyBDb21tYW5kTWFwKCdjb2xvcicsIHtcbiAgY29sb3I6ICdDb2xvcicsXG4gIHRleHRjb2xvcjogJ1RleHRDb2xvcicsXG4gIGRlZmluZWNvbG9yOiAnRGVmaW5lQ29sb3InLFxuICBjb2xvcmJveDogJ0NvbG9yQm94JyxcbiAgZmNvbG9yYm94OiAnRkNvbG9yQm94J1xufSwgQ29sb3JNZXRob2RzKTtcblxuLyoqXG4gKiBDb25maWcgbWV0aG9kIGZvciBDb2xvciBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7Q29uZmlndXJhdGlvbn0gY29uZmlnIFRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge1RlWH0gamF4ICAgICAgICAgICAgICBUaGUgVGVYIGpheCBoYXZpbmcgdGhhdCBjb25maWd1cmF0aW9uXG4gKi9cbmNvbnN0IGNvbmZpZyA9IGZ1bmN0aW9uKF9jb25maWc6IFBhcnNlckNvbmZpZ3VyYXRpb24sIGpheDogVGVYPGFueSwgYW55LCBhbnk+KSB7XG4gIGpheC5wYXJzZU9wdGlvbnMucGFja2FnZURhdGEuc2V0KCdjb2xvcicsIHttb2RlbDogbmV3IENvbG9yTW9kZWwoKX0pO1xufTtcblxuLyoqXG4gKiBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGNvbG9yIG1hY3Jvc1xuICovXG5leHBvcnQgY29uc3QgQ29sb3JDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICdjb2xvcicsIHtcbiAgICBoYW5kbGVyOiB7XG4gICAgICBtYWNybzogWydjb2xvciddLFxuICAgIH0sXG4gICAgb3B0aW9uczoge1xuICAgICAgY29sb3I6IHtcbiAgICAgICAgcGFkZGluZzogJzVweCcsXG4gICAgICAgIGJvcmRlcldpZHRoOiAnMnB4J1xuICAgICAgfVxuICAgIH0sXG4gICAgY29uZmlnOiBjb25maWdcbiAgfVxuKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTktMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSB2Mi1jb21wYXRpYmxlIGNvbG9yIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgUC4gQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0NvbW1hbmRNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtQYXJzZU1ldGhvZH0gZnJvbSAnLi4vVHlwZXMuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuXG5leHBvcnQgY29uc3QgQ29sb3JWMk1ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPiA9IHtcblxuICAvKipcbiAgICogSW1wbGVtZW50cyB0aGUgdjIgY29sb3IgbWFjcm9cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICAgKi9cbiAgQ29sb3IocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAgIC8vIEB0ZXN0IENvbG9yIEZyYWNcbiAgICBjb25zdCBjb2xvciA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBjb25zdCBvbGQgPSBwYXJzZXIuc3RhY2suZW52Wydjb2xvciddO1xuICAgIHBhcnNlci5zdGFjay5lbnZbJ2NvbG9yJ10gPSBjb2xvcjtcbiAgICBjb25zdCBtYXRoID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICAgIGlmIChvbGQpIHtcbiAgICAgIHBhcnNlci5zdGFjay5lbnZbJ2NvbG9yJ10gPSBvbGQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlbGV0ZSBwYXJzZXIuc3RhY2suZW52Wydjb2xvciddO1xuICAgIH1cbiAgICBjb25zdCBub2RlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3R5bGUnLCBbbWF0aF0sIHttYXRoY29sb3I6IGNvbG9yfSk7XG4gICAgcGFyc2VyLlB1c2gobm9kZSk7XG4gIH1cblxufTtcblxuLyoqXG4gKiBUaGUgY29sb3IgbWFjcm9zXG4gKi9cbm5ldyBDb21tYW5kTWFwKCdjb2xvcnYyJywge2NvbG9yOiAnQ29sb3InfSwgQ29sb3JWMk1ldGhvZHMpO1xuXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY29sb3IgbWFjcm9zXG4gKi9cbmV4cG9ydCBjb25zdCBDb2xvckNvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ2NvbG9ydjInLCB7aGFuZGxlcjoge21hY3JvOiBbJ2NvbG9ydjInXX19XG4pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAyMS0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgICAgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgY29sb3J0YmwgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBQLiBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QXJyYXlJdGVtfSBmcm9tICcuLi9iYXNlL0Jhc2VJdGVtcy5qcyc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb24sIFBhcnNlckNvbmZpZ3VyYXRpb24sIENvbmZpZ3VyYXRpb25IYW5kbGVyfSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcblxuaW1wb3J0IHtUZVh9IGZyb20gJy4uLy4uL3RleC5qcyc7XG5cbi8qKlxuICogSW5mb3JtYXRpb24gYWJvdXQgdGFibGUgY29sb3JzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbG9yRGF0YSB7XG4gIGNlbGw6IHN0cmluZztcbiAgcm93OiBzdHJpbmc7XG4gIGNvbDogc3RyaW5nW107XG59XG5cbi8vXG4vLyAgU3VibGNhc3MgdGhlIEFycmF5SXRlbSB0byBoYW5kbGUgY29sb3JlZCBlbnRyaWVzXG4vL1xuZXhwb3J0IGNsYXNzIENvbG9yQXJyYXlJdGVtIGV4dGVuZHMgQXJyYXlJdGVtIHtcbiAgLyoqXG4gICAqICBTdG9yZSBjdXJyZW50IGNvbG9yIGZvciBjZWxsLCByb3csIGFuZCBjb2x1bW5zLlxuICAgKi9cbiAgcHVibGljIGNvbG9yOiBDb2xvckRhdGEgPSB7XG4gICAgY2VsbDogJycsXG4gICAgcm93OiAnJyxcbiAgICBjb2w6IFtdXG4gIH07XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgYW55IGNlbGwgaXMgY29sb3JlZCAod2Ugd2lsbCBtYWtlIHN1cmUgdGhlIGVkZ2UgY2VsbHMgYXJlIGZ1bGwgc2l6ZWQpLlxuICAgKi9cbiAgcHVibGljIGhhc0NvbG9yOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIEVuZEVudHJ5KCkge1xuICAgIHN1cGVyLkVuZEVudHJ5KCk7XG4gICAgY29uc3QgY2VsbCA9IHRoaXMucm93W3RoaXMucm93Lmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb2xvci5jZWxsIHx8IHRoaXMuY29sb3Iucm93IHx8IHRoaXMuY29sb3IuY29sW3RoaXMucm93Lmxlbmd0aCAtIDFdO1xuICAgIGlmIChjb2xvcikge1xuICAgICAgY2VsbC5hdHRyaWJ1dGVzLnNldCgnbWF0aGJhY2tncm91bmQnLCBjb2xvcik7XG4gICAgICB0aGlzLmNvbG9yLmNlbGwgPSAnJztcbiAgICAgIHRoaXMuaGFzQ29sb3IgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBFbmRSb3coKSB7XG4gICAgc3VwZXIuRW5kUm93KCk7XG4gICAgdGhpcy5jb2xvci5yb3cgPSAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjcmVhdGVNbWwoKSB7XG4gICAgLy9cbiAgICAvLyBJZiB0aGVyZSBpcyBhbnkgY29sb3IgaW4gdGhlIGFycmF5LCBnaXZlIGl0IGFuIGVtcHR5IGZyYW1lLFxuICAgIC8vICAgaWYgdGhlcmUgaXNuJ3Qgb25lIGFscmVhZHkuICBUaGlzIHdpbGwgbWFrZSBzdXJlIHRoZSBjb2xvclxuICAgIC8vICAgaW4gZWRnZSBjZWxscyBleHRlbmRzIHBhc3QgdGhlaXIgY29udGVudHMuXG4gICAgLy9cbiAgICBjb25zdCBtbWwgPSBzdXBlci5jcmVhdGVNbWwoKTtcbiAgICBsZXQgdGFibGUgPSAobW1sLmlzS2luZCgnbXJvdycpID8gbW1sLmNoaWxkTm9kZXNbMV0gOiBtbWwpIGFzIE1tbE5vZGU7XG4gICAgaWYgKHRhYmxlLmlzS2luZCgnbWVuY2xvc2UnKSkge1xuICAgICAgdGFibGUgPSB0YWJsZS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF0gYXMgTW1sTm9kZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuaGFzQ29sb3IgJiYgdGFibGUuYXR0cmlidXRlcy5nZXQoJ2ZyYW1lJykgPT09ICdub25lJykge1xuICAgICAgdGFibGUuYXR0cmlidXRlcy5zZXQoJ2ZyYW1lJywgJycpO1xuICAgIH1cbiAgICByZXR1cm4gbW1sO1xuICB9XG5cbn1cblxuLy9cbi8vICBEZWZpbmUgbWFjcm9zIGZvciB0YWJsZSBjb2xvcmluZy5cbi8vXG5uZXcgQ29tbWFuZE1hcCgnY29sb3J0YmwnLCB7XG4gIGNlbGxjb2xvcjogWydUYWJsZUNvbG9yJywgJ2NlbGwnXSxcbiAgcm93Y29sb3I6ICBbJ1RhYmxlQ29sb3InLCAncm93J10sXG4gIGNvbHVtbmNvbG9yOiBbJ1RhYmxlQ29sb3InLCAnY29sJ11cbn0sIHtcbiAgLyoqXG4gICAqIEFkZCBjb2xvciB0byBhIGNvbHVtbiwgcm93LCBvciBjZWxsLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgICAgIFRoZSBhY3RpdmUgVGVYIHBhcnNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtYWNybyB0aGF0IGlzIGJlaW5nIHByb2Nlc3NlZFxuICAgKiBAcGFyYW0ge2tleW9mIENvbG9yRGF0YX0gdHlwZSAgIFRoZSB0eXBlIChjb2wsIHJvdywgY2VsbCkgb2YgY29sb3IgYmVpbmcgYWRkZWRcbiAgICovXG4gIFRhYmxlQ29sb3IocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZywgdHlwZToga2V5b2YgQ29sb3JEYXRhKSB7XG4gICAgY29uc3QgbG9va3VwID0gcGFyc2VyLmNvbmZpZ3VyYXRpb24ucGFja2FnZURhdGEuZ2V0KCdjb2xvcicpLm1vZGVsOyAgLy8gdXNlIHRoZSBjb2xvciBleHRlbnNpb24ncyBjb2xvciBtb2RlbFxuICAgIGNvbnN0IG1vZGVsID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcnKTtcbiAgICBjb25zdCBjb2xvciA9IGxvb2t1cC5nZXRDb2xvcihtb2RlbCwgcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpKTtcbiAgICAvL1xuICAgIC8vIENoZWNrIHRoYXQgd2UgYXJlIGluIGEgY29sb3JhYmxlIGFycmF5LlxuICAgIC8vXG4gICAgY29uc3QgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpIGFzIENvbG9yQXJyYXlJdGVtO1xuICAgIGlmICghKHRvcCBpbnN0YW5jZW9mIENvbG9yQXJyYXlJdGVtKSkge1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdVbnN1cHBvcnRlZFRhYmxlQ29sb3InLCAnVW5zdXBwb3J0ZWQgdXNlIG9mICUxJywgcGFyc2VyLmN1cnJlbnRDUyk7XG4gICAgfVxuICAgIC8vXG4gICAgLy8gIENoZWNrIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWFjcm8gYW5kIHNhdmUgdGhlIGNvbG9yLlxuICAgIC8vXG4gICAgaWYgKHR5cGUgPT09ICdjb2wnKSB7XG4gICAgICBpZiAodG9wLnRhYmxlLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0NvbHVtbkNvbG9yTm90VG9wJywgJyUxIG11c3QgYmUgaW4gdGhlIHRvcCByb3cnLCBuYW1lKTtcbiAgICAgIH1cbiAgICAgIHRvcC5jb2xvci5jb2xbdG9wLnJvdy5sZW5ndGhdID0gY29sb3I7XG4gICAgICAvL1xuICAgICAgLy8gSWdub3JlIHRoZSBsZWZ0IGFuZCByaWdodCBvdmVybGFwIG9wdGlvbnMuXG4gICAgICAvL1xuICAgICAgaWYgKHBhcnNlci5HZXRCcmFja2V0cyhuYW1lLCAnJykpIHtcbiAgICAgICAgcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdG9wLmNvbG9yW3R5cGVdID0gY29sb3I7XG4gICAgICBpZiAodHlwZSA9PT0gJ3JvdycgJiYgKHRvcC5TaXplKCkgfHwgdG9wLnJvdy5sZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignUm93Q29sb3JOb3RGaXJzdCcsICclMSBtdXN0IGJlIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSByb3cnLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIGZ1bmN0aW9uIGZvciBjb2xvcnRibC5cbiAqXG4gKiBAcGFyYW0ge1BhcnNlckNvbmZpZ3VyYXRpb259IGNvbmZpZyAgIFRoZSBjb25maWd1cmF0aW9uIGJlaW5nIHVzZWQuXG4gKiBAcGFyYW0ge1RleH0gamF4ICAgICAgICAgICAgICAgICAgICAgIFRoZSBUZVggamF4IHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbi5cbiAqL1xuY29uc3QgY29uZmlnID0gZnVuY3Rpb24gKGNvbmZpZzogUGFyc2VyQ29uZmlndXJhdGlvbiwgamF4OiBUZVg8YW55LCBhbnksIGFueT4pIHtcbiAgLy9cbiAgLy8gIE1ha2Ugc3VyZSBjb2xvciBpcyBjb25maWd1cmVkLiAgKEl0IGRvZXNuJ3QgaGF2ZSB0byBiZSBpbmNsdWRlZCBpbiB0ZXgucGFja2FnZXMuKVxuICAvL1xuICBpZiAoIWpheC5wYXJzZU9wdGlvbnMucGFja2FnZURhdGEuaGFzKCdjb2xvcicpKSB7XG4gICAgQ29uZmlndXJhdGlvbkhhbmRsZXIuZ2V0KCdjb2xvcicpLmNvbmZpZyhjb25maWcsIGpheCk7XG4gIH1cbn07XG5cbi8vXG4vLyAgQ3JlYXRlIHRoZSBjb2xvci10YWJsZSBjb25maWd1cmF0aW9uLlxuLy9cbmV4cG9ydCBjb25zdCBDb2xvcnRibENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZSgnY29sb3J0YmwnLCB7XG4gIGhhbmRsZXI6IHttYWNybzogWydjb2xvcnRibCddfSxcbiAgaXRlbXM6IHsnYXJyYXknOiBDb2xvckFycmF5SXRlbX0sICAvLyBvdmVycmlkZXMgb3JpZ2luYWwgYXJyYXkgY2xhc3NcbiAgcHJpb3JpdHk6IDEwLCAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgYXJlIHByb2Nlc3NlZCBhZnRlciB0aGUgYmFzZSBwYWNrYWdlICh0byBvdmVycmlkZSBpdHMgYXJyYXkpXG4gIGNvbmZpZzogW2NvbmZpZywgMTBdICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHdlIGNvbmZpZ3VyZSBhZnRlciB0aGUgY29sb3IgcGFja2FnZSwgaWYgaXQgaXMgdXNlZC5cbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAwOS0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBuZXdjb21tYW5kIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuXG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IHtNYWNybywgU3ltYm9sfSBmcm9tICcuLi9TeW1ib2wuanMnO1xuaW1wb3J0IHtBcmdzLCBBdHRyaWJ1dGVzLCBQYXJzZU1ldGhvZH0gZnJvbSAnLi4vVHlwZXMuanMnO1xuaW1wb3J0ICogYXMgc20gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcblxuXG5uYW1lc3BhY2UgTmV3Y29tbWFuZFV0aWwge1xuXG4gIC8qKlxuICAgKiBUcmFuc2Zvcm1zIHRoZSBhdHRyaWJ1dGVzIG9mIGEgc3ltYm9sIGludG8gdGhlIGFyZ3VtZW50cyBvZiBhIG1hY3JvLiBFLmcuLFxuICAgKiBTeW1ib2woJ2VsbCcsICdsJywge21hdGh2YXJpYW50OiBcIml0YWxpY1wifSkgaXMgdHVybmVkIGludG8gTWFjcm8gYXJndW1lbnRzOlxuICAgKiBbJ2VsbCcsICdsJywgJ21hdGh2YXJpYW50JywgJ2l0YWxpYyddLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgY29tbWFuZCBuYW1lIGZvciB0aGUgc3ltYm9sLlxuICAgKiBAcGFyYW0ge1N5bWJvbH0gc3ltYm9sIFRoZSBzeW1ib2wgYXNzb2NpYXRlZCB3aXRoIG5hbWUuXG4gICAqIEByZXR1cm4ge0FyZ3NbXX0gQXJndW1lbnRzIGZvciBhIG1hY3JvLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGRpc2Fzc2VtYmxlU3ltYm9sKG5hbWU6IHN0cmluZywgc3ltYm9sOiBTeW1ib2wpOiBBcmdzW10ge1xuICAgIGxldCBuZXdBcmdzID0gW25hbWUsIHN5bWJvbC5jaGFyXSBhcyBBcmdzW107XG4gICAgLy8gQHRlc3QgTGV0IFJlbGV0LCBMZXQgTGV0LCBMZXQgQ2lyY3VsYXIgTWFjcm9cbiAgICBpZiAoc3ltYm9sLmF0dHJpYnV0ZXMpIHtcbiAgICAgIC8vIEB0ZXN0IExldCBSZWxldFxuICAgICAgZm9yIChsZXQga2V5IGluIHN5bWJvbC5hdHRyaWJ1dGVzKSB7XG4gICAgICAgIG5ld0FyZ3MucHVzaChrZXkpO1xuICAgICAgICBuZXdBcmdzLnB1c2goc3ltYm9sLmF0dHJpYnV0ZXNba2V5XSBhcyBBcmdzKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld0FyZ3M7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBBc3NlbWJsZXMgYSBzeW1ib2wgZnJvbSBhIGxpc3Qgb2YgbWFjcm8gYXJndW1lbnRzLiBUaGlzIGlzIHRoZSBpbnZlcnNlXG4gICAqIG1ldGhvZCBvZiB0aGUgb25lIGFib3ZlLlxuICAgKlxuICAgKiBAcGFyYW0ge0FyZ3NbXX0gYXJncyBUaGUgYXJndW1lbnRzIG9mIHRoZSBtYWNyby5cbiAgICogQHJldHVybiB7U3ltYm9sfSBUaGUgU3ltYm9sIGdlbmVyYXRlZCBmcm9tIHRoZSBhcmd1bWVudHMuLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGFzc2VtYmxlU3ltYm9sKGFyZ3M6IEFyZ3NbXSk6IFN5bWJvbCB7XG4gICAgLy8gQHRlc3QgTGV0IFJlbGV0LCBMZXQgTGV0LCBMZXQgQ2lyY3VsYXIgTWFjcm9cbiAgICBsZXQgbmFtZSA9IGFyZ3NbMF0gYXMgc3RyaW5nO1xuICAgIGxldCBjaGFyID0gYXJnc1sxXSBhcyBzdHJpbmc7XG4gICAgbGV0IGF0dHJzOiBBdHRyaWJ1dGVzID0ge307XG4gICAgZm9yIChsZXQgaSA9IDI7IGkgPCBhcmdzLmxlbmd0aDsgaSA9IGkgKyAyKSB7XG4gICAgICAvLyBAdGVzdCBMZXQgUmVsZXRcbiAgICAgIGF0dHJzW2FyZ3NbaV0gYXMgc3RyaW5nXSA9IGFyZ3NbaSArIDFdO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFN5bWJvbChuYW1lLCBjaGFyLCBhdHRycyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBuZXh0IENTIG5hbWUgb3IgZ2l2ZSBhbiBlcnJvci5cbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbWQgVGhlIHN0cmluZyBzdGFydGluZyB3aXRoIGEgY29udHJvbCBzZXF1ZW5jZS5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29udHJvbCBzZXF1ZW5jZS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBHZXRDU25hbWUocGFyc2VyOiBUZXhQYXJzZXIsIGNtZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBAdGVzdCBEZWYgUmVEZWYsIExldCBCYXIsIExldCBCcmFjZSBFcXVhbFxuICAgIGxldCBjID0gcGFyc2VyLkdldE5leHQoKTtcbiAgICBpZiAoYyAhPT0gJ1xcXFwnKSB7XG4gICAgICAvLyBAdGVzdCBObyBDU1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nQ1MnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnJTEgbXVzdCBiZSBmb2xsb3dlZCBieSBhIGNvbnRyb2wgc2VxdWVuY2UnLCBjbWQpO1xuICAgIH1cbiAgICBsZXQgY3MgPSBQYXJzZVV0aWwudHJpbVNwYWNlcyhwYXJzZXIuR2V0QXJndW1lbnQoY21kKSk7XG4gICAgcmV0dXJuIGNzLnN1YnN0cigxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYSBjb250cm9sIHNlcXVlbmNlIG5hbWUgYXMgYW4gYXJndW1lbnQgKGRvZXNuJ3QgcmVxdWlyZSB0aGUgYmFja3NsYXNoKVxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIHRoYXQgaXMgZ2V0dGluZyB0aGUgbmFtZS5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29udHJvbCBzZXF1ZW5jZS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBHZXRDc05hbWVBcmd1bWVudChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQgY3MgPSBQYXJzZVV0aWwudHJpbVNwYWNlcyhwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICAgIGlmIChjcy5jaGFyQXQoMCkgPT09ICdcXFxcJykge1xuICAgICAgLy8gQHRlc3QgTmV3Y29tbWFuZCBTaW1wbGVcbiAgICAgIGNzID0gY3Muc3Vic3RyKDEpO1xuICAgIH1cbiAgICBpZiAoIWNzLm1hdGNoKC9eKC58W2Etel0rKSQvaSkpIHtcbiAgICAgIC8vIEB0ZXN0IElsbGVnYWwgQ1NcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignSWxsZWdhbENvbnRyb2xTZXF1ZW5jZU5hbWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICdJbGxlZ2FsIGNvbnRyb2wgc2VxdWVuY2UgbmFtZSBmb3IgJTEnLCBuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIGNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgYSBtYWNybyBkZWZpbml0aW9uXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gdGhhdCBpcyBnZXR0aW5nIHRoZSBhcmd1bWVudCBjb3VudC5cbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyAob3IgYmxhbmspLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIEdldEFyZ0NvdW50KHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBuID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpO1xuICAgIGlmIChuKSB7XG4gICAgICAvLyBAdGVzdCBOZXdjb21tYW5kIE9wdGlvbmFsLCBOZXdjb21tYW5kIEFyZywgTmV3Y29tbWFuZCBBcmcgT3B0aW9uYWxcbiAgICAgIC8vIEB0ZXN0IE5ld2Vudmlyb25tZW50IE9wdGlvbmFsLCBOZXdlbnZpcm9ubWVudCBBcmcgT3B0aW9uYWxcbiAgICAgIG4gPSBQYXJzZVV0aWwudHJpbVNwYWNlcyhuKTtcbiAgICAgIGlmICghbi5tYXRjaCgvXlswLTldKyQvKSkge1xuICAgICAgICAvLyBAdGVzdCBJbGxlZ2FsIEFyZ3VtZW50IE51bWJlclxuICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0lsbGVnYWxQYXJhbU51bWJlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAnSWxsZWdhbCBudW1iZXIgb2YgcGFyYW1ldGVycyBzcGVjaWZpZWQgaW4gJTEnLCBuYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cblxuICAvKipcbiAgICogR2V0IGEgXFxkZWYgcGFyYW1ldGVyIHRlbXBsYXRlLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNtZCBUaGUgc3RyaW5nIHN0YXJ0aW5nIHdpdGggdGhlIHRlbXBsYXRlLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3MgVGhlIGNvbnRyb2wgc2VxdWVuY2Ugb2YgdGhlIFxcZGVmLlxuICAgKiBAcmV0dXJuIHtudW1iZXIgfCBzdHJpbmdbXX0gVGhlIG51bWJlciBvZiBwYXJhbWV0ZXJzIG9yIGEgc3RyaW5nIGFycmF5IGlmXG4gICAqICAgICB0aGVyZSBpcyBhbiBvcHRpb25hbCBhcmd1bWVudC5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBHZXRUZW1wbGF0ZShwYXJzZXI6IFRleFBhcnNlciwgY21kOiBzdHJpbmcsIGNzOiBzdHJpbmcpOiBudW1iZXIgfCBzdHJpbmdbXSB7XG4gICAgLy8gQHRlc3QgRGVmIERvdWJsZSBMZXQsIERlZiBSZURlZiwgRGVmIExldFxuICAgIGxldCBjID0gcGFyc2VyLkdldE5leHQoKTtcbiAgICBsZXQgcGFyYW1zOiBzdHJpbmdbXSA9IFtdO1xuICAgIGxldCBuID0gMDtcbiAgICBsZXQgaSA9IHBhcnNlci5pO1xuICAgIHdoaWxlIChwYXJzZXIuaSA8IHBhcnNlci5zdHJpbmcubGVuZ3RoKSB7XG4gICAgICBjID0gcGFyc2VyLkdldE5leHQoKTtcbiAgICAgIGlmIChjID09PSAnIycpIHtcbiAgICAgICAgLy8gQHRlc3QgRGVmIFJlRGVmLCBEZWYgTGV0LCBEZWYgT3B0aW9uYWwgQnJhY2VcbiAgICAgICAgaWYgKGkgIT09IHBhcnNlci5pKSB7XG4gICAgICAgICAgLy8gQHRlc3QgRGVmIExldCwgRGVmIE9wdGlvbmFsIEJyYWNlXG4gICAgICAgICAgcGFyYW1zW25dID0gcGFyc2VyLnN0cmluZy5zdWJzdHIoaSwgcGFyc2VyLmkgLSBpKTtcbiAgICAgICAgfVxuICAgICAgICBjID0gcGFyc2VyLnN0cmluZy5jaGFyQXQoKytwYXJzZXIuaSk7XG4gICAgICAgIGlmICghYy5tYXRjaCgvXlsxLTldJC8pKSB7XG4gICAgICAgICAgLy8gQHRlc3QgSWxsZWdhbCBIYXNoXG4gICAgICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdDYW50VXNlSGFzaDInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lsbGVnYWwgdXNlIG9mICMgaW4gdGVtcGxhdGUgZm9yICUxJywgY3MpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJzZUludChjKSAhPT0gKytuKSB7XG4gICAgICAgICAgLy8gQHRlc3QgTm8gU2VxdWVuY2VcbiAgICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ1NlcXVlbnRpYWxQYXJhbScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUGFyYW1ldGVycyBmb3IgJTEgbXVzdCBiZSBudW1iZXJlZCBzZXF1ZW50aWFsbHknLCBjcyk7XG4gICAgICAgIH1cbiAgICAgICAgaSA9IHBhcnNlci5pICsgMTtcbiAgICAgIH0gZWxzZSBpZiAoYyA9PT0gJ3snKSB7XG4gICAgICAgIC8vIEB0ZXN0IERlZiBEb3VibGUgTGV0LCBEZWYgUmVEZWYsIERlZiBMZXRcbiAgICAgICAgaWYgKGkgIT09IHBhcnNlci5pKSB7XG4gICAgICAgICAgLy8gQHRlc3QgT3B0aW9uYWwgQnJhY2UgRXJyb3JcbiAgICAgICAgICBwYXJhbXNbbl0gPSBwYXJzZXIuc3RyaW5nLnN1YnN0cihpLCBwYXJzZXIuaSAtIGkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXJhbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIC8vIEB0ZXN0IERlZiBMZXQsIERlZiBPcHRpb25hbCBCcmFjZVxuICAgICAgICAgIHJldHVybiBbbi50b1N0cmluZygpXS5jb25jYXQocGFyYW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBAdGVzdCBEZWYgRG91YmxlIExldCwgRGVmIFJlRGVmXG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHBhcnNlci5pKys7XG4gICAgfVxuICAgIC8vIEB0ZXN0IE5vIFJlcGxhY2VtZW50XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nUmVwbGFjZW1lbnRTdHJpbmcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ01pc3NpbmcgcmVwbGFjZW1lbnQgc3RyaW5nIGZvciBkZWZpbml0aW9uIG9mICUxJywgY21kKTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEZpbmQgYSBzaW5nbGUgcGFyYW1ldGVyIGRlbGltaXRlZCBieSBhIHRyYWlsaW5nIHRlbXBsYXRlLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgY29tbWFuZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtIFRoZSBwYXJhbWV0ZXIgZm9yIHRoZSBtYWNyby5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBHZXRQYXJhbWV0ZXIocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZywgcGFyYW06IHN0cmluZykge1xuICAgIGlmIChwYXJhbSA9PSBudWxsKSB7XG4gICAgICAvLyBAdGVzdCBEZWYgTGV0LCBEZWYgT3B0aW9uYWwgQnJhY2UsIERlZiBPcHRpb25zIENTXG4gICAgICByZXR1cm4gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICAgIH1cbiAgICBsZXQgaSA9IHBhcnNlci5pO1xuICAgIGxldCBqID0gMDtcbiAgICBsZXQgaGFzQnJhY2VzID0gMDtcbiAgICB3aGlsZSAocGFyc2VyLmkgPCBwYXJzZXIuc3RyaW5nLmxlbmd0aCkge1xuICAgICAgbGV0IGMgPSBwYXJzZXIuc3RyaW5nLmNoYXJBdChwYXJzZXIuaSk7XG4gICAgICAvLyBAdGVzdCBEZWYgTGV0LCBEZWYgT3B0aW9uYWwgQnJhY2UsIERlZiBPcHRpb25zIENTXG4gICAgICBpZiAoYyA9PT0gJ3snKSB7XG4gICAgICAgIC8vIEB0ZXN0IERlZiBPcHRpb25hbCBCcmFjZSwgRGVmIE9wdGlvbnMgQ1NcbiAgICAgICAgaWYgKHBhcnNlci5pID09PSBpKSB7XG4gICAgICAgICAgLy8gQHRlc3QgRGVmIE9wdGlvbmFsIEJyYWNlXG4gICAgICAgICAgaGFzQnJhY2VzID0gMTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgICAgIGogPSBwYXJzZXIuaSAtIGk7XG4gICAgICB9IGVsc2UgaWYgKE1hdGNoUGFyYW0ocGFyc2VyLCBwYXJhbSkpIHtcbiAgICAgICAgLy8gQHRlc3QgRGVmIExldCwgRGVmIE9wdGlvbmFsIEJyYWNlLCBEZWYgT3B0aW9ucyBDU1xuICAgICAgICBpZiAoaGFzQnJhY2VzKSB7XG4gICAgICAgICAgLy8gQHRlc3QgRGVmIE9wdGlvbmFsIEJyYWNlXG4gICAgICAgICAgaSsrO1xuICAgICAgICAgIGogLT0gMjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGFyc2VyLnN0cmluZy5zdWJzdHIoaSwgaik7XG4gICAgICB9IGVsc2UgaWYgKGMgPT09ICdcXFxcJykge1xuICAgICAgICAvLyBAdGVzdCBEZWYgT3B0aW9ucyBDU1xuICAgICAgICBwYXJzZXIuaSsrO1xuICAgICAgICBqKys7XG4gICAgICAgIGhhc0JyYWNlcyA9IDA7XG4gICAgICAgIGxldCBtYXRjaCA9IHBhcnNlci5zdHJpbmcuc3Vic3RyKHBhcnNlci5pKS5tYXRjaCgvW2Etel0rfC4vaSk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIC8vIEB0ZXN0IERlZiBPcHRpb25zIENTXG4gICAgICAgICAgcGFyc2VyLmkgKz0gbWF0Y2hbMF0ubGVuZ3RoO1xuICAgICAgICAgIGogPSBwYXJzZXIuaSAtIGk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIEB0ZXN0IERlZiBMZXRcbiAgICAgICAgcGFyc2VyLmkrKztcbiAgICAgICAgaisrO1xuICAgICAgICBoYXNCcmFjZXMgPSAwO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBAdGVzdCBSdW5hd2F5IEFyZ3VtZW50XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdSdW5hd2F5QXJndW1lbnQnLCAnUnVuYXdheSBhcmd1bWVudCBmb3IgJTE/JywgbmFtZSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHRlbXBsYXRlIGlzIGF0IHRoZSBjdXJyZW50IGxvY2F0aW9uLlxuICAgKiAoVGhlIG1hdGNoIG11c3QgYmUgZXhhY3QsIHdpdGggbm8gc3BhY2luZyBkaWZmZXJlbmNlcy4gVGVYIGlzXG4gICAqICBhIGxpdHRsZSBtb3JlIGZvcmdpdmluZyB0aGFuIHRoaXMgYWJvdXQgc3BhY2VzIGFmdGVyIG1hY3JvIG5hbWVzKVxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhcmFtIFRyaWVzIHRvIG1hdGNoIGFuIG9wdGlvbmFsIHBhcmFtZXRlci5cbiAgICogQHJldHVybiB7bnVtYmVyfSBUaGUgbnVtYmVyIG9mIG9wdGlvbmFsIHBhcmFtZXRlcnMsIGVpdGhlciAwIG9yIDEuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gTWF0Y2hQYXJhbShwYXJzZXI6IFRleFBhcnNlciwgcGFyYW06IHN0cmluZyk6IG51bWJlciB7XG4gICAgLy8gQHRlc3QgRGVmIExldCwgRGVmIE9wdGlvbmFsIEJyYWNlLCBEZWYgT3B0aW9ucyBDU1xuICAgIGlmIChwYXJzZXIuc3RyaW5nLnN1YnN0cihwYXJzZXIuaSwgcGFyYW0ubGVuZ3RoKSAhPT0gcGFyYW0pIHtcbiAgICAgIC8vIEB0ZXN0IERlZiBMZXQsIERlZiBPcHRpb25zIENTXG4gICAgICByZXR1cm4gMDtcbiAgICB9XG4gICAgaWYgKHBhcmFtLm1hdGNoKC9cXFxcW2Etel0rJC9pKSAmJlxuICAgICAgICBwYXJzZXIuc3RyaW5nLmNoYXJBdChwYXJzZXIuaSArIHBhcmFtLmxlbmd0aCkubWF0Y2goL1thLXpdL2kpKSB7XG4gICAgICAvLyBAdGVzdCAobWlzc2luZylcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICAvLyBAdGVzdCBEZWYgTGV0LCBEZWYgT3B0aW9uYWwgQnJhY2UsIERlZiBPcHRpb25zIENTXG4gICAgcGFyc2VyLmkgKz0gcGFyYW0ubGVuZ3RoO1xuICAgIHJldHVybiAxO1xuICB9XG5cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBkZWxpbWl0ZXIgYXMgZXh0ZW5zaW9uIHRvIHRoZSBwYXJzZXIuXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3MgVGhlIGNvbnRyb2wgc2VxdWVuY2Ugb2YgdGhlIGRlbGltaXRlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXIgVGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyLlxuICAgKiBAcGFyYW0ge0F0dHJpYnV0ZXN9IGF0dHIgVGhlIGF0dHJpYnV0ZXMgbmVlZGVkIGZvciBwYXJzaW5nLlxuICAgKi9cbiAgZXhwb3J0IGZ1bmN0aW9uIGFkZERlbGltaXRlcihwYXJzZXI6IFRleFBhcnNlciwgY3M6IHN0cmluZywgY2hhcjogc3RyaW5nLCBhdHRyOiBBdHRyaWJ1dGVzKSB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSBwYXJzZXIuY29uZmlndXJhdGlvbi5oYW5kbGVycztcbiAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlcnMucmV0cmlldmUoTkVXX0RFTElNSVRFUikgYXMgc20uRGVsaW1pdGVyTWFwO1xuICAgIGhhbmRsZXIuYWRkKGNzLCBuZXcgU3ltYm9sKGNzLCBjaGFyLCBhdHRyKSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBtYWNybyBhcyBleHRlbnNpb24gdG8gdGhlIHBhcnNlci5cbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjcyBUaGUgY29udHJvbCBzZXF1ZW5jZSBvZiB0aGUgZGVsaW1pdGVyLlxuICAgKiBAcGFyYW0ge1BhcnNlTWV0aG9kfSBmdW5jIFRoZSBwYXJzZSBtZXRob2QgZm9yIHRoaXMgbWFjcm8uXG4gICAqIEBwYXJhbSB7QXJnc1tdfSBhdHRyIFRoZSBhdHRyaWJ1dGVzIG5lZWRlZCBmb3IgcGFyc2luZy5cbiAgICogQHBhcmFtIHtzdHJpbmc9fSBzeW1ib2wgT3B0aW9uYWxseSBvcmlnaW5hbCBzeW1ib2wgZm9yIG1hY3JvLCBpbiBjYXNlIGl0IGlzXG4gICAqICAgICBkaWZmZXJlbnQgZnJvbSB0aGUgY29udHJvbCBzZXF1ZW5jZS5cbiAgICovXG4gIGV4cG9ydCBmdW5jdGlvbiBhZGRNYWNybyhwYXJzZXI6IFRleFBhcnNlciwgY3M6IHN0cmluZywgZnVuYzogUGFyc2VNZXRob2QsIGF0dHI6IEFyZ3NbXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWJvbDogc3RyaW5nID0gJycpIHtcbiAgICBjb25zdCBoYW5kbGVycyA9IHBhcnNlci5jb25maWd1cmF0aW9uLmhhbmRsZXJzO1xuICAgIGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVycy5yZXRyaWV2ZShORVdfQ09NTUFORCkgYXMgc20uQ29tbWFuZE1hcDtcbiAgICBoYW5kbGVyLmFkZChjcywgbmV3IE1hY3JvKHN5bWJvbCA/IHN5bWJvbCA6IGNzLCBmdW5jLCBhdHRyKSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGVudmlyb25tZW50IGFzIGV4dGVuc2lvbiB0byB0aGUgcGFyc2VyLlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGVudiBUaGUgZW52aXJvbm1lbnQgbmFtZS5cbiAgICogQHBhcmFtIHtQYXJzZU1ldGhvZH0gZnVuYyBUaGUgcGFyc2UgbWV0aG9kIGZvciB0aGlzIG1hY3JvLlxuICAgKiBAcGFyYW0ge0FyZ3NbXX0gYXR0ciBUaGUgYXR0cmlidXRlcyBuZWVkZWQgZm9yIHBhcnNpbmcuXG4gICAqL1xuICBleHBvcnQgZnVuY3Rpb24gYWRkRW52aXJvbm1lbnQocGFyc2VyOiBUZXhQYXJzZXIsIGVudjogc3RyaW5nLCBmdW5jOiBQYXJzZU1ldGhvZCwgYXR0cjogQXJnc1tdKSB7XG4gICAgY29uc3QgaGFuZGxlcnMgPSBwYXJzZXIuY29uZmlndXJhdGlvbi5oYW5kbGVycztcbiAgICBjb25zdCBoYW5kbGVyID0gaGFuZGxlcnMucmV0cmlldmUoTkVXX0VOVklST05NRU5UKSBhcyBzbS5FbnZpcm9ubWVudE1hcDtcbiAgICBoYW5kbGVyLmFkZChlbnYsIG5ldyBNYWNybyhlbnYsIGZ1bmMsIGF0dHIpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOYW1pbmcgY29uc3RhbnRzIGZvciB0aGUgZXh0ZW5zaW9uIG1hcHBpbmdzLlxuICAgKi9cbiAgZXhwb3J0IGNvbnN0IE5FV19ERUxJTUlURVIgPSAnbmV3LURlbGltaXRlcic7XG4gIGV4cG9ydCBjb25zdCBORVdfQ09NTUFORCA9ICduZXctQ29tbWFuZCc7XG4gIGV4cG9ydCBjb25zdCBORVdfRU5WSVJPTk1FTlQgPSAnbmV3LUVudmlyb25tZW50JztcblxufVxuXG5leHBvcnQgZGVmYXVsdCBOZXdjb21tYW5kVXRpbDtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE1hcHBpbmdzIGZvciBUZVggcGFyc2luZyBmb3IgZGVmaW5pdG9yaWFsIGNvbW1hbmRzLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cblxuaW1wb3J0IHtQYXJzZU1ldGhvZH0gZnJvbSAnLi4vVHlwZXMuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4uL1RleEVycm9yLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCAqIGFzIHNtIGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQge1N5bWJvbCwgTWFjcm99IGZyb20gJy4uL1N5bWJvbC5qcyc7XG5pbXBvcnQgQmFzZU1ldGhvZHMgZnJvbSAnLi4vYmFzZS9CYXNlTWV0aG9kcy5qcyc7XG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5pbXBvcnQge1N0YWNrSXRlbX0gZnJvbSAnLi4vU3RhY2tJdGVtLmpzJztcbmltcG9ydCBOZXdjb21tYW5kVXRpbCBmcm9tICcuL05ld2NvbW1hbmRVdGlsLmpzJztcblxuXG4vLyBOYW1lc3BhY2VcbmxldCBOZXdjb21tYW5kTWV0aG9kczogUmVjb3JkPHN0cmluZywgUGFyc2VNZXRob2Q+ID0ge307XG5cbi8qKlxuICogSW1wbGVtZW50cyBcXG5ld2NvbW1hbmR7XFxuYW1lfVtuXVtkZWZhdWx0XXsuLi59XG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGNvbW1hbmQuXG4gKi9cbk5ld2NvbW1hbmRNZXRob2RzLk5ld0NvbW1hbmQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIC8vIEB0ZXN0IE5ld2NvbW1hbmQgU2ltcGxlXG4gIGxldCBjcyA9IE5ld2NvbW1hbmRVdGlsLkdldENzTmFtZUFyZ3VtZW50KHBhcnNlciwgbmFtZSk7XG4gIGxldCBuID0gTmV3Y29tbWFuZFV0aWwuR2V0QXJnQ291bnQocGFyc2VyLCBuYW1lKTtcbiAgbGV0IG9wdCA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lKTtcbiAgbGV0IGRlZiA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgTmV3Y29tbWFuZFV0aWwuYWRkTWFjcm8ocGFyc2VyLCBjcywgTmV3Y29tbWFuZE1ldGhvZHMuTWFjcm8sIFtkZWYsIG4sIG9wdF0pO1xufTtcblxuXG4vKipcbiAqIEltcGxlbWVudHMgXFxuZXdlbnZpcm9ubWVudHtuYW1lfVtuXVtkZWZhdWx0XXtiZWdpbmNtZH17ZW5kY21kfVxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgY2FsbGluZyBjb21tYW5kLlxuICovXG5OZXdjb21tYW5kTWV0aG9kcy5OZXdFbnZpcm9ubWVudCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgLy8gQHRlc3QgTmV3ZW52aXJvbm1lbnQgRW1wdHksIE5ld2Vudmlyb25tZW50IENvbnRlbnRcbiAgbGV0IGVudiA9IFBhcnNlVXRpbC50cmltU3BhY2VzKHBhcnNlci5HZXRBcmd1bWVudChuYW1lKSk7XG4gIGxldCBuID0gTmV3Y29tbWFuZFV0aWwuR2V0QXJnQ291bnQocGFyc2VyLCBuYW1lKTtcbiAgbGV0IG9wdCA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lKTtcbiAgbGV0IGJkZWYgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGxldCBlZGVmID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBOZXdjb21tYW5kVXRpbC5hZGRFbnZpcm9ubWVudChwYXJzZXIsIGVudiwgTmV3Y29tbWFuZE1ldGhvZHMuQmVnaW5FbnYsIFt0cnVlLCBiZGVmLCBlZGVmLCBuLCBvcHRdKTtcbn07XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIFxcZGVmIGNvbW1hbmQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGNvbW1hbmQuXG4gKi9cbk5ld2NvbW1hbmRNZXRob2RzLk1hY3JvRGVmID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAvLyBAdGVzdCBEZWYgRG91YmxlTGV0LCBEZWZSZURlZlxuICBsZXQgY3MgPSBOZXdjb21tYW5kVXRpbC5HZXRDU25hbWUocGFyc2VyLCBuYW1lKTtcbiAgbGV0IHBhcmFtcyA9IE5ld2NvbW1hbmRVdGlsLkdldFRlbXBsYXRlKHBhcnNlciwgbmFtZSwgJ1xcXFwnICsgY3MpO1xuICBsZXQgZGVmID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICAhKHBhcmFtcyBpbnN0YW5jZW9mIEFycmF5KSA/XG4gICAgLy8gQHRlc3QgRGVmIERvdWJsZUxldCwgRGVmUmVEZWZcbiAgICBOZXdjb21tYW5kVXRpbC5hZGRNYWNybyhwYXJzZXIsIGNzLCBOZXdjb21tYW5kTWV0aG9kcy5NYWNybywgW2RlZiwgcGFyYW1zXSkgOlxuICAgIC8vIEB0ZXN0IERlZiBMZXRcbiAgICBOZXdjb21tYW5kVXRpbC5hZGRNYWNybyhwYXJzZXIsIGNzLCBOZXdjb21tYW5kTWV0aG9kcy5NYWNyb1dpdGhUZW1wbGF0ZSwgW2RlZl0uY29uY2F0KHBhcmFtcykpO1xufTtcblxuXG4vKipcbiAqIEltcGxlbWVudHMgdGhlIFxcbGV0IGNvbW1hbmQuXG4gKlxuICogQWxsIFxcbGV0IGNvbW1hbmRzIGNyZWF0ZSBlaXRoZXIgbmV3IGRlbGltaXRlcnMgb3IgbWFjcm9zIGluIHRoZSBleHRlbnNpb25cbiAqIG1hcHMuIEluIHRoZSBsYXR0ZXIgY2FzZSBpZiB0aGUgbGV0IGJpbmRzIGEgc3ltYm9sIHdlIGhhdmUgdG8gZ2VuZXJhdGUgYVxuICogbWFjcm8gd2l0aCB0aGUgYXBwcm9wcmlhdGUgcGFyc2UgbWV0aG9kcyBmcm9tIHRoZSBTeW1ib2xNYXAuIE90aGVyd2lzZSB3ZVxuICogc2ltcGx5IGNvcHkgdGhlIG1hY3JvIHVuZGVyIGEgbmV3IG5hbWUuXG4gKlxuICogTGV0IGRvZXMgbm90IGFsd2F5cyB3b3JrIG9uIHNwZWNpYWwgY2hhcmFjdGVycyBhcyBUZVggZG9lcy4gIEZvciBleGFtcGxlXG4gKiBcIlxcbGV0XFxjYXJeIGFcXGNhciBiXCIgd2lsbCB5aWVsZCBhIHN1cGVyc2NyaXB0LCBvbiB0aGUgb3RoZXJoYW5kXG4gKiBcXGxldFxcYmdyb3VwPXsgaXMgcG9zc2libGUgYW5kIHdpbGwgd29yayBmaW5lIGluIFxcYmdyb3VwIGEgfSBidXQgd2lsbCBmYWlsXG4gKiBpbiBcXHNxcnRcXGJncm91cCBhfS5cbiAqXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGNvbW1hbmQuXG4gKi9cbk5ld2NvbW1hbmRNZXRob2RzLkxldCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgY3MgPSBOZXdjb21tYW5kVXRpbC5HZXRDU25hbWUocGFyc2VyLCBuYW1lKTtcbiAgbGV0IGMgPSBwYXJzZXIuR2V0TmV4dCgpO1xuICAvLyBAdGVzdCBMZXQgQmFyLCBMZXQgQ2FyZXRcbiAgaWYgKGMgPT09ICc9Jykge1xuICAgIC8vIEB0ZXN0IExldCBCcmFjZSBFcXVhbCwgTGV0IEJyYWNlIEVxdWFsIFN0cmV0Y2h5XG4gICAgcGFyc2VyLmkrKztcbiAgICBjID0gcGFyc2VyLkdldE5leHQoKTtcbiAgfVxuICBjb25zdCBoYW5kbGVycyA9IHBhcnNlci5jb25maWd1cmF0aW9uLmhhbmRsZXJzO1xuICBpZiAoYyA9PT0gJ1xcXFwnKSB7XG4gICAgLy8gQHRlc3QgTGV0IEJhciwgTGV0IEJyYWNlIEVxdWFsIFN0cmV0Y2h5XG4gICAgbmFtZSA9IE5ld2NvbW1hbmRVdGlsLkdldENTbmFtZShwYXJzZXIsIG5hbWUpO1xuICAgIGxldCBtYWNybyA9IGhhbmRsZXJzLmdldCgnZGVsaW1pdGVyJykubG9va3VwKCdcXFxcJyArIG5hbWUpIGFzIFN5bWJvbDtcbiAgICBpZiAobWFjcm8pIHtcbiAgICAgIC8vIEB0ZXN0IExldCBCYXIsIExldCBCcmFjZSBFcXVhbCBTdHJldGNoeVxuICAgICAgTmV3Y29tbWFuZFV0aWwuYWRkRGVsaW1pdGVyKHBhcnNlciwgJ1xcXFwnICsgY3MsIG1hY3JvLmNoYXIsIG1hY3JvLmF0dHJpYnV0ZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtYXAgPSBoYW5kbGVycy5nZXQoJ21hY3JvJykuYXBwbGljYWJsZShuYW1lKTtcbiAgICBpZiAoIW1hcCkge1xuICAgICAgLy8gQHRlc3QgTGV0IFVuZGVmaW5lZCBDU1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobWFwIGluc3RhbmNlb2Ygc20uTWFjcm9NYXApIHtcbiAgICAgIC8vIEB0ZXN0IERlZiBMZXQsIE5ld2NvbW1hbmQgTGV0XG4gICAgICBjb25zdCBtYWNybyA9IChtYXAgYXMgc20uQ29tbWFuZE1hcCkubG9va3VwKG5hbWUpIGFzIE1hY3JvO1xuICAgICAgTmV3Y29tbWFuZFV0aWwuYWRkTWFjcm8ocGFyc2VyLCBjcywgbWFjcm8uZnVuYywgbWFjcm8uYXJncywgbWFjcm8uc3ltYm9sKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbWFjcm8gPSAobWFwIGFzIHNtLkNoYXJhY3Rlck1hcCkubG9va3VwKG5hbWUpIGFzIFN5bWJvbDtcbiAgICBjb25zdCBuZXdBcmdzID0gTmV3Y29tbWFuZFV0aWwuZGlzYXNzZW1ibGVTeW1ib2woY3MsIG1hY3JvKTtcbiAgICBjb25zdCBtZXRob2QgPSAocDogVGV4UGFyc2VyLCBfY3M6IHN0cmluZywgLi4ucmVzdDogYW55W10pID0+IHtcbiAgICAgIC8vIEB0ZXN0IExldCBSZWxldCwgTGV0IExldCwgTGV0IENpcmN1bGFyIE1hY3JvXG4gICAgICBjb25zdCBzeW1iID0gTmV3Y29tbWFuZFV0aWwuYXNzZW1ibGVTeW1ib2wocmVzdCk7XG4gICAgICByZXR1cm4gbWFwLnBhcnNlcihwLCBzeW1iKTtcbiAgICB9O1xuICAgIE5ld2NvbW1hbmRVdGlsLmFkZE1hY3JvKHBhcnNlciwgY3MsIG1ldGhvZCwgbmV3QXJncyk7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEB0ZXN0IExldCBCcmFjZSBFcXVhbCwgTGV0IENhcmV0XG4gIHBhcnNlci5pKys7XG4gIGNvbnN0IG1hY3JvID0gaGFuZGxlcnMuZ2V0KCdkZWxpbWl0ZXInKS5sb29rdXAoYykgYXMgU3ltYm9sO1xuICBpZiAobWFjcm8pIHtcbiAgICAvLyBAdGVzdCBMZXQgUGFyZW4gRGVsaW0sIExldCBQYXJlbiBTdHJldGNoeVxuICAgIE5ld2NvbW1hbmRVdGlsLmFkZERlbGltaXRlcihwYXJzZXIsICdcXFxcJyArIGNzLCBtYWNyby5jaGFyLCBtYWNyby5hdHRyaWJ1dGVzKTtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gQHRlc3QgTGV0IEJyYWNlIEVxdWFsLCBMZXQgQ2FyZXRcbiAgTmV3Y29tbWFuZFV0aWwuYWRkTWFjcm8ocGFyc2VyLCBjcywgTmV3Y29tbWFuZE1ldGhvZHMuTWFjcm8sIFtjXSk7XG59O1xuXG5cbi8qKlxuICogUHJvY2VzcyBhIG1hY3JvIHdpdGggYSBwYXJhbWV0ZXIgdGVtcGxhdGUgYnkgcmVwbGFjaW5nIHBhcmFtZXRlcnMgaW4gdGhlXG4gKiBwYXJzZXIncyBzdHJpbmcuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIGNvbW1hbmQuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUaGUgdGV4dCB0ZW1wbGF0ZSBvZiB0aGUgbWFjcm8uXG4gKiBAcGFyYW0ge3N0cmluZ30gbiBUaGUgbnVtYmVyIG9mIHBhcmFtZXRlcnMuXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSAuLi5wYXJhbXMgVGhlIHBhcmFtZXRlciB2YWx1ZXMuXG4gKi9cbk5ld2NvbW1hbmRNZXRob2RzLk1hY3JvV2l0aFRlbXBsYXRlID0gZnVuY3Rpb24gKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBzdHJpbmcsIG46IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBhcmFtczogc3RyaW5nW10pIHtcbiAgY29uc3QgYXJnQ291bnQgPSBwYXJzZUludChuLCAxMCk7XG4gIC8vIEB0ZXN0IERlZiBMZXRcbiAgaWYgKGFyZ0NvdW50KSB7XG4gICAgLy8gQHRlc3QgRGVmIExldFxuICAgIGxldCBhcmdzID0gW107XG4gICAgcGFyc2VyLkdldE5leHQoKTtcbiAgICBpZiAocGFyYW1zWzBdICYmICFOZXdjb21tYW5kVXRpbC5NYXRjaFBhcmFtKHBhcnNlciwgcGFyYW1zWzBdKSkge1xuICAgICAgLy8gQHRlc3QgTWlzc2luZyBBcmd1bWVudHNcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignTWlzbWF0Y2hVc2VEZWYnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlIG9mICUxIGRvZXNuXFwndCBtYXRjaCBpdHMgZGVmaW5pdGlvbicsIG5hbWUpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFyZ0NvdW50OyBpKyspIHtcbiAgICAgIC8vIEB0ZXN0IERlZiBMZXRcbiAgICAgIGFyZ3MucHVzaChOZXdjb21tYW5kVXRpbC5HZXRQYXJhbWV0ZXIocGFyc2VyLCBuYW1lLCBwYXJhbXNbaSArIDFdKSk7XG4gICAgfVxuICAgIHRleHQgPSBQYXJzZVV0aWwuc3Vic3RpdHV0ZUFyZ3MocGFyc2VyLCBhcmdzLCB0ZXh0KTtcbiAgfVxuICBwYXJzZXIuc3RyaW5nID0gUGFyc2VVdGlsLmFkZEFyZ3MocGFyc2VyLCB0ZXh0LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSkpO1xuICBwYXJzZXIuaSA9IDA7XG4gIFBhcnNlVXRpbC5jaGVja01heE1hY3JvcyhwYXJzZXIpO1xufTtcblxuXG4vKipcbiAqIFByb2Nlc3MgYSB1c2VyLWRlZmluZWQgZW52aXJvbm1lbnQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiBUaGUgYmVnaW4gc3RhY2tpdGVtLlxuICogQHBhcmFtIHtzdHJpbmd9IGJkZWYgVGhlIGJlZ2luIGRlZmluaXRpb24gaW4gdGhlIG5ld2Vudmlyb25tZW50IG1hY3JvLlxuICogQHBhcmFtIHtzdHJpbmd9IGVkZWYgVGhlIGVuZCBkZWZpbml0aW9uIGluIHRoZSBuZXdlbnZpcm9ubWVudCBtYWNyby5cbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgcGFyYW1ldGVycy5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkZWYgRGVmYXVsdCBmb3IgYW4gb3B0aW9uYWwgcGFyYW1ldGVyLlxuICovXG5OZXdjb21tYW5kTWV0aG9kcy5CZWdpbkVudiA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBiZWdpbjogU3RhY2tJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZGVmOiBzdHJpbmcsIGVkZWY6IHN0cmluZywgbjogbnVtYmVyLCBkZWY6IHN0cmluZykge1xuICAvLyBAdGVzdCBOZXdlbnZpcm9ubWVudCBFbXB0eSwgTmV3ZW52aXJvbm1lbnQgQ29udGVudFxuICAvLyBXZSBoYXZlIGFuIGVuZCBpdGVtLCBhbmQgd2UgYXJlIHN1cHBvc2VkIHRvIGNsb3NlIHRoaXMgZW52aXJvbm1lbnQuXG4gIGlmIChiZWdpbi5nZXRQcm9wZXJ0eSgnZW5kJykgJiYgcGFyc2VyLnN0YWNrLmVudlsnY2xvc2luZyddID09PSBiZWdpbi5nZXROYW1lKCkpIHtcbiAgICAvLyBAdGVzdCBOZXdlbnZpcm9ubWVudCBFbXB0eSwgTmV3ZW52aXJvbm1lbnQgQ29udGVudFxuICAgIGRlbGV0ZSBwYXJzZXIuc3RhY2suZW52WydjbG9zaW5nJ107XG4gICAgLy8gUGFyc2UgdGhlIGNvbW1hbmRzIGluIHRoZSBlbmQgZW52aXJvbm1lbnQgZGVmaW5pdGlvbi5cbiAgICBsZXQgcmVzdCA9IHBhcnNlci5zdHJpbmcuc2xpY2UocGFyc2VyLmkpO1xuICAgIHBhcnNlci5zdHJpbmcgPSBlZGVmO1xuICAgIHBhcnNlci5pID0gMDtcbiAgICBwYXJzZXIuUGFyc2UoKTtcbiAgICAvLyBSZXNldCB0byBwYXJzaW5nIHRoZSByZW1haW5kZXIgb2YgdGhlIGV4cHJlc3Npb24uXG4gICAgcGFyc2VyLnN0cmluZyA9IHJlc3Q7XG4gICAgcGFyc2VyLmkgPSAwO1xuICAgIC8vIENsb3NlIHRoaXMgZW52aXJvbm1lbnQuXG4gICAgcmV0dXJuIHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2VuZCcpLnNldFByb3BlcnR5KCduYW1lJywgYmVnaW4uZ2V0TmFtZSgpKTtcbiAgfVxuICBpZiAobikge1xuICAgIC8vIEB0ZXN0IE5ld2Vudmlyb25tZW50IE9wdGlvbmFsLCBOZXdlbnZpcm9ubWVudCBBcmcgT3B0aW9uYWxcbiAgICBsZXQgYXJnczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAoZGVmICE9IG51bGwpIHtcbiAgICAgIC8vIEB0ZXN0IE5ld2Vudmlyb25tZW50IE9wdGlvbmFsLCBOZXdlbnZpcm9ubWVudCBBcmcgT3B0aW9uYWxcbiAgICAgIGxldCBvcHRpb25hbCA9IHBhcnNlci5HZXRCcmFja2V0cygnXFxcXGJlZ2lueycgKyBiZWdpbi5nZXROYW1lKCkgKyAnfScpO1xuICAgICAgYXJncy5wdXNoKG9wdGlvbmFsID09IG51bGwgPyBkZWYgOiBvcHRpb25hbCk7XG4gICAgfVxuICAgIGZvciAobGV0IGkgPSBhcmdzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgLy8gQHRlc3QgTmV3ZW52aXJvbm1lbnQgQXJnIE9wdGlvbmFsXG4gICAgICBhcmdzLnB1c2gocGFyc2VyLkdldEFyZ3VtZW50KCdcXFxcYmVnaW57JyArIGJlZ2luLmdldE5hbWUoKSArICd9JykpO1xuICAgIH1cbiAgICBiZGVmID0gUGFyc2VVdGlsLnN1YnN0aXR1dGVBcmdzKHBhcnNlciwgYXJncywgYmRlZik7XG4gICAgZWRlZiA9IFBhcnNlVXRpbC5zdWJzdGl0dXRlQXJncyhwYXJzZXIsIFtdLCBlZGVmKTsgLy8gbm8gYXJncywgYnV0IGdldCBlcnJvcnMgZm9yICNuIGluIGVkZWZcbiAgfVxuICBwYXJzZXIuc3RyaW5nID0gUGFyc2VVdGlsLmFkZEFyZ3MocGFyc2VyLCBiZGVmLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSkpO1xuICBwYXJzZXIuaSA9IDA7XG4gIHJldHVybiBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdiZWdpbkVudicpLnNldFByb3BlcnR5KCduYW1lJywgYmVnaW4uZ2V0TmFtZSgpKTtcbn07XG5cbk5ld2NvbW1hbmRNZXRob2RzLk1hY3JvID0gQmFzZU1ldGhvZHMuTWFjcm87XG5cbmV4cG9ydCBkZWZhdWx0IE5ld2NvbW1hbmRNZXRob2RzO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgSXRlbXMgZm9yIFRlWCBwYXJzaW5nIG9mIG5ldyBlbnZpcm9ubWVudHMuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuXG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IHtDaGVja1R5cGUsIEJhc2VJdGVtLCBTdGFja0l0ZW19IGZyb20gJy4uL1N0YWNrSXRlbS5qcyc7XG5cblxuLyoqXG4gKiBPcGVuaW5nIEl0ZW0gZGVhbGluZyB3aXRoIGRlZmluaXRpb25zIG9mIG5ldyBlbnZpcm9ubWVudHMuIEl0J3MgcHVzaGVkIG9udG9cbiAqIHRoZSBzdGFjayB3aGVuZXZlciBhIHVzZXIgZGVmaW5lZCBlbnZpcm9ubWVudCBpcyBlbmNvdW50ZXJlZCBhbmQgcmVtYWluc1xuICogdW50aWwgYSBjb3JyZXNwb25kaW5nIFxcXFxlbmQgY29sbGFwc2VzIHRoZSBzdGFjay5cbiAqL1xuZXhwb3J0IGNsYXNzIEJlZ2luRW52SXRlbSBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdiZWdpbkVudic7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBpc09wZW4oKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGVja0l0ZW0oaXRlbTogU3RhY2tJdGVtKTogQ2hlY2tUeXBlIHtcbiAgICBpZiAoaXRlbS5pc0tpbmQoJ2VuZCcpKSB7XG4gICAgICAvLyBAdGVzdCBOZXdlbnZpcm9ubWVudCBFbXB0eSwgTmV3ZW52aXJvbm1lbnQgQWxpZ25cbiAgICAgIGlmIChpdGVtLmdldE5hbWUoKSAhPT0gdGhpcy5nZXROYW1lKCkpIHtcbiAgICAgICAgLy8gQHRlc3QgKG1pc3NpbmcpIFxcbmV3ZW52aXJvbm1lbnR7ZW52fXthYX17YmJ9XFxiZWdpbntlbnZ9Y2NcXGVuZHtlcXVhdGlvbn1cbiAgICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdFbnZCYWRFbmQnLCAnXFxcXGJlZ2lueyUxfSBlbmRlZCB3aXRoIFxcXFxlbmR7JTJ9JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldE5hbWUoKSwgaXRlbS5nZXROYW1lKCkpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtbdGhpcy5mYWN0b3J5LmNyZWF0ZSgnbW1sJywgdGhpcy50b01tbCgpKV0sIHRydWVdO1xuICAgIH1cbiAgICBpZiAoaXRlbS5pc0tpbmQoJ3N0b3AnKSkge1xuICAgICAgLy8gQHRlc3QgKG1pc3NpbmcpIFxcbmV3ZW52aXJvbm1lbnR7ZW52fXthYX17YmJ9XFxiZWdpbntlbnZ9Y2NcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRW52TWlzc2luZ0VuZCcsICdNaXNzaW5nIFxcXFxlbmR7JTF9JywgdGhpcy5nZXROYW1lKCkpO1xuICAgIH1cbiAgICAvLyBAdGVzdCBOZXdlbnZpcm9ubWVudCBFbXB0eSwgTmV3ZW52aXJvbm1lbnQgQWxpZ25cbiAgICByZXR1cm4gc3VwZXIuY2hlY2tJdGVtKGl0ZW0pO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTktMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICAgIENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIGNvbmZpZ21hY3JvcyBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIFAuIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7ZXhwYW5kYWJsZX0gZnJvbSAnLi4vLi4vLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7Q29tbWFuZE1hcCwgRW52aXJvbm1lbnRNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQgUGFyc2VNZXRob2RzIGZyb20gJy4uL1BhcnNlTWV0aG9kcy5qcyc7XG5pbXBvcnQge01hY3JvfSBmcm9tICcuLi9TeW1ib2wuanMnO1xuaW1wb3J0IE5ld2NvbW1hbmRNZXRob2RzIGZyb20gJy4uL25ld2NvbW1hbmQvTmV3Y29tbWFuZE1ldGhvZHMuanMnO1xuaW1wb3J0IHtCZWdpbkVudkl0ZW19IGZyb20gJy4uL25ld2NvbW1hbmQvTmV3Y29tbWFuZEl0ZW1zLmpzJztcbmltcG9ydCB7VGVYfSBmcm9tICcuLi8uLi90ZXguanMnO1xuXG50eXBlIFRFWCA9IFRlWDxhbnksIGFueSwgYW55PjtcblxuLyoqXG4gKiBUaGUgbmFtZSB0byB1c2UgZm9yIHRoZSBtYWNyb3MgbWFwXG4gKi9cbmNvbnN0IE1BQ1JPU01BUCA9ICdjb25maWdtYWNyb3MtbWFwJztcblxuLyoqXG4gKiBUaGUgbmFtZSB0byB1c2UgZm9yIHRoZSBlbnZpcm9ubWVudCBtYXBcbiAqL1xuY29uc3QgRU5WSVJPTk1FTlRNQVAgPSAnY29uZmlnbWFjcm9zLWVudi1tYXAnO1xuXG4vKipcbiAqIENyZWF0ZSB0aGUgY29tbWFuZCBtYXAgZm9yIHRoZSBtYWNyb3NcbiAqXG4gKiBAcGFyYW0ge0NvbmZpZ3VyYXRpb259IGNvbmZpZyAgIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgdGhlIGlucHV0IGpheFxuICovXG5mdW5jdGlvbiBjb25maWdtYWNyb3NJbml0KGNvbmZpZzogUGFyc2VyQ29uZmlndXJhdGlvbikge1xuICBuZXcgQ29tbWFuZE1hcChNQUNST1NNQVAsIHt9LCB7fSk7XG4gIG5ldyBFbnZpcm9ubWVudE1hcChFTlZJUk9OTUVOVE1BUCwgUGFyc2VNZXRob2RzLmVudmlyb25tZW50LCB7fSwge30pO1xuICBjb25maWcuYXBwZW5kKENvbmZpZ3VyYXRpb24ubG9jYWwoe1xuICAgIGhhbmRsZXI6IHtcbiAgICAgIG1hY3JvOiBbTUFDUk9TTUFQXSxcbiAgICAgIGVudmlyb25tZW50OiBbRU5WSVJPTk1FTlRNQVBdXG4gICAgfSxcbiAgICBwcmlvcml0eTogM1xuICB9KSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIHRoZSB1c2VyLWRlZmluZWQgbWFjcm9zIGFuZCBlbnZpcm9ubWVudHMgZnJvbSB0aGVpciBvcHRpb25zXG4gKlxuICogQHBhcmFtIHtDb25maWd1cmF0aW9ufSBjb25maWcgICBUaGUgY29uZmlndXJhdGlvbiBvYmplY3QgZm9yIHRoZSBpbnB1dCBqYXhcbiAqIEBwYXJhbSB7VGVYfSBqYXggICAgICAgICAgICAgICAgVGhlIFRlWCBpbnB1dCBqYXhcbiAqL1xuZnVuY3Rpb24gY29uZmlnbWFjcm9zQ29uZmlnKF9jb25maWc6IFBhcnNlckNvbmZpZ3VyYXRpb24sIGpheDogVEVYKSB7XG4gIGNvbmZpZ01hY3JvcyhqYXgpO1xuICBjb25maWdFbnZpcm9ubWVudHMoamF4KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgdXNlci1kZWZpbmVkIG1hY3JvcyBmcm9tIHRoZSBtYWNyb3Mgb3B0aW9uXG4gKlxuICogQHBhcmFtIHtUZVh9IGpheCAgICAgICAgICAgICAgICBUaGUgVGVYIGlucHV0IGpheFxuICovXG5mdW5jdGlvbiBjb25maWdNYWNyb3MoamF4OiBURVgpIHtcbiAgY29uc3QgaGFuZGxlciA9IGpheC5wYXJzZU9wdGlvbnMuaGFuZGxlcnMucmV0cmlldmUoTUFDUk9TTUFQKSBhcyBDb21tYW5kTWFwO1xuICBjb25zdCBtYWNyb3MgPSBqYXgucGFyc2VPcHRpb25zLm9wdGlvbnMubWFjcm9zO1xuICBmb3IgKGNvbnN0IGNzIG9mIE9iamVjdC5rZXlzKG1hY3JvcykpIHtcbiAgICBjb25zdCBkZWYgPSAodHlwZW9mIG1hY3Jvc1tjc10gPT09ICdzdHJpbmcnID8gW21hY3Jvc1tjc11dIDogbWFjcm9zW2NzXSk7XG4gICAgY29uc3QgbWFjcm8gPSBBcnJheS5pc0FycmF5KGRlZlsyXSkgP1xuICAgICAgbmV3IE1hY3JvKGNzLCBOZXdjb21tYW5kTWV0aG9kcy5NYWNyb1dpdGhUZW1wbGF0ZSwgZGVmLnNsaWNlKDAsIDIpLmNvbmNhdChkZWZbMl0pKSA6XG4gICAgICBuZXcgTWFjcm8oY3MsIE5ld2NvbW1hbmRNZXRob2RzLk1hY3JvLCBkZWYpO1xuICAgIGhhbmRsZXIuYWRkKGNzLCBtYWNybyk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGUgdXNlci1kZWZpbmVkIGVudmlyb25tZW50cyBmcm9tIHRoZSBlbnZpcm9ubWVudHMgb3B0aW9uXG4gKlxuICogQHBhcmFtIHtUZVh9IGpheCAgICAgICAgICAgICAgICBUaGUgVGVYIGlucHV0IGpheFxuICovXG5mdW5jdGlvbiBjb25maWdFbnZpcm9ubWVudHMoamF4OiBURVgpIHtcbiAgY29uc3QgaGFuZGxlciA9IGpheC5wYXJzZU9wdGlvbnMuaGFuZGxlcnMucmV0cmlldmUoRU5WSVJPTk1FTlRNQVApIGFzIEVudmlyb25tZW50TWFwO1xuICBjb25zdCBlbnZpcm9ubWVudHMgPSBqYXgucGFyc2VPcHRpb25zLm9wdGlvbnMuZW52aXJvbm1lbnRzO1xuICBmb3IgKGNvbnN0IGVudiBvZiBPYmplY3Qua2V5cyhlbnZpcm9ubWVudHMpKSB7XG4gICAgaGFuZGxlci5hZGQoZW52LCBuZXcgTWFjcm8oZW52LCBOZXdjb21tYW5kTWV0aG9kcy5CZWdpbkVudiwgW3RydWVdLmNvbmNhdChlbnZpcm9ubWVudHNbZW52XSkpKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdCBmb3IgY29uZmlnbWFjcm9zXG4gKi9cbmV4cG9ydCBjb25zdCBDb25maWdNYWNyb3NDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICdjb25maWdtYWNyb3MnLCB7XG4gICAgaW5pdDogY29uZmlnbWFjcm9zSW5pdCxcbiAgICBjb25maWc6IGNvbmZpZ21hY3Jvc0NvbmZpZyxcbiAgICBpdGVtczoge1xuICAgICAgW0JlZ2luRW52SXRlbS5wcm90b3R5cGUua2luZF06IEJlZ2luRW52SXRlbSxcbiAgICB9LFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIG1hY3JvczogZXhwYW5kYWJsZSh7fSksXG4gICAgICBlbnZpcm9ubWVudHM6IGV4cGFuZGFibGUoe30pXG4gICAgfVxuICB9XG4pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAyMS0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgZW1waGVxIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgUC4gQ2Vydm9uZSlcbiAqL1xuXG5cbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi4vQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQge0NvbW1hbmRNYXAsIEVudmlyb25tZW50TWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IFBhcnNlVXRpbCBmcm9tICcuLi9QYXJzZVV0aWwuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4uL1RleEVycm9yLmpzJztcbmltcG9ydCB7QmVnaW5JdGVtfSBmcm9tICcuLi9iYXNlL0Jhc2VJdGVtcy5qcyc7XG5pbXBvcnQge1N0YWNrSXRlbX0gZnJvbSAnLi4vU3RhY2tJdGVtLmpzJztcbmltcG9ydCB7RW1waGVxVXRpbH0gZnJvbSAnLi9FbXBoZXFVdGlsLmpzJztcblxuLyoqXG4gKiBBIFN0YWNrSXRlbSBmb3IgZW1waGVxIGVudmlyb25tZW50cy5cbiAqL1xuZXhwb3J0IGNsYXNzIEVtcGhlcUJlZ2luSXRlbSBleHRlbmRzIEJlZ2luSXRlbSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnZW1waGVxLWJlZ2luJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGVja0l0ZW0oaXRlbTogU3RhY2tJdGVtKSB7XG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdlbmQnKSAmJiBpdGVtLmdldE5hbWUoKSA9PT0gdGhpcy5nZXROYW1lKCkpIHtcbiAgICAgIHRoaXMuc2V0UHJvcGVydHkoJ2VuZCcsIGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLmNoZWNrSXRlbShpdGVtKTtcbiAgfVxuXG59XG5cbi8qKlxuICogVGhlIG1ldGhvZHMgdGhhdCBpbXBsZW1lbnQgdGhlIGVtcGhlcSBwYWNrYWdlLlxuICovXG5leHBvcnQgY29uc3QgRW1waGVxTWV0aG9kcyA9IHtcblxuICAvKipcbiAgICogSGFuZGxlIGFuIGVtcGhlcSBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgICAgICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge0VtcGhlcUJlZ2luSXRlbX0gYmVnaW4gICBUaGUgYmVnaW4gaXRlbSBmb3IgdGhpcyBlbnZpcm9ubWVudC5cbiAgICovXG4gIEVtcGhlcShwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IEVtcGhlcUJlZ2luSXRlbSkge1xuICAgIGlmIChwYXJzZXIuc3RhY2suZW52LmNsb3NpbmcgPT09IGJlZ2luLmdldE5hbWUoKSkge1xuICAgICAgZGVsZXRlIHBhcnNlci5zdGFjay5lbnYuY2xvc2luZztcbiAgICAgIHBhcnNlci5QdXNoKHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2VuZCcpLnNldFByb3BlcnR5KCduYW1lJywgcGFyc2VyLnN0YWNrLmdsb2JhbC5lbXBoZXEpKTtcbiAgICAgIHBhcnNlci5zdGFjay5nbG9iYWwuZW1waGVxID0gJyc7XG4gICAgICBjb25zdCBlbXBoZXEgPSBwYXJzZXIuc3RhY2suVG9wKCkgYXMgRW1waGVxQmVnaW5JdGVtO1xuICAgICAgRW1waGVxVXRpbC5hZGp1c3RUYWJsZShlbXBoZXEsIHBhcnNlcik7XG4gICAgICBwYXJzZXIuUHVzaChwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdlbmQnKS5zZXRQcm9wZXJ0eSgnbmFtZScsICdlbXBoZXEnKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFBhcnNlVXRpbC5jaGVja0VxbkVudihwYXJzZXIpO1xuICAgICAgZGVsZXRlIHBhcnNlci5zdGFjay5nbG9iYWwuZXFuZW52O1xuICAgICAgY29uc3Qgb3B0cyA9IHBhcnNlci5HZXRCcmFja2V0cygnXFxcXGJlZ2lueycgKyBiZWdpbi5nZXROYW1lKCkgKyAnfScpIHx8ICcnO1xuICAgICAgY29uc3QgW2Vudiwgbl0gPSAocGFyc2VyLkdldEFyZ3VtZW50KCdcXFxcYmVnaW57JyArIGJlZ2luLmdldE5hbWUoKSArICd9JykgfHwgJycpLnNwbGl0KC89Lyk7XG4gICAgICBpZiAoIUVtcGhlcVV0aWwuY2hlY2tFbnYoZW52KSkge1xuICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ1Vua25vd25FbnYnLCAnVW5rbm93biBlbnZpcm9ubWVudCBcIiUxXCInLCBlbnYpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdHMpIHtcbiAgICAgICAgYmVnaW4uc2V0UHJvcGVydGllcyhFbXBoZXFVdGlsLnNwbGl0T3B0aW9ucyhvcHRzLCB7bGVmdDogMSwgcmlnaHQ6IDF9KSk7XG4gICAgICB9XG4gICAgICBwYXJzZXIuc3RhY2suZ2xvYmFsLmVtcGhlcSA9IGVudjtcbiAgICAgIHBhcnNlci5zdHJpbmcgPSAnXFxcXGJlZ2lueycgKyBlbnYgKyAnfScgKyAobiA/ICd7JyArIG4gKyAnfScgOiAnJykgKyBwYXJzZXIuc3RyaW5nLnNsaWNlKHBhcnNlci5pKTtcbiAgICAgIHBhcnNlci5pID0gMDtcbiAgICAgIHBhcnNlci5QdXNoKGJlZ2luKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiA8bW8+IHdpdGggYSBnaXZlbiBjb250ZW50XG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbmFtZSBvZiB0aGUgbWFjcm8gYmVpbmcgcHJvY2Vzc2VkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyAgICAgICAgICAgVGhlIGNoYXJhY3RlciBmb3IgdGhlIDxtbz5cbiAgICovXG4gIEVtcGhlcU1PKHBhcnNlcjogVGV4UGFyc2VyLCBfbmFtZTogc3RyaW5nLCBjOiBzdHJpbmcpIHtcbiAgICBwYXJzZXIuUHVzaChwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtbycsIHt9LCBjKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGRlbGltaXRlciA8bW8+IHdpdGggYSBnaXZlbiBjaGFyYWN0ZXJcbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBhY3RpdmUgdGV4IHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtYWNybyBiZWluZyBwcm9jZXNzZWQuXG4gICAqL1xuICBFbXBoZXFEZWxpbShwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYyA9IHBhcnNlci5HZXREZWxpbWl0ZXIobmFtZSk7XG4gICAgcGFyc2VyLlB1c2gocGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbW8nLCB7c3RyZXRjaHk6IHRydWUsIHN5bW1ldHJpYzogdHJ1ZX0sIGMpKTtcbiAgfVxuXG59O1xuXG4vL1xuLy8gIERlZmluZSBhbiBlbnZpcm9ubWVudCBtYXAgdG8gYWRkIHRoZSBuZXcgZW1waGVxIGVudmlyb25tZW50XG4vL1xubmV3IEVudmlyb25tZW50TWFwKCdlbXBoZXEtZW52JywgRW1waGVxVXRpbC5lbnZpcm9ubWVudCwge1xuICBlbXBoZXE6IFsnRW1waGVxJywgJ2VtcGhlcSddLFxufSwgRW1waGVxTWV0aG9kcyk7XG5cbi8vXG4vLyAgRGVmaW5lIHRoZSBlbXBoZXEgY2hhcmFjdGVyc1xuLy9cbm5ldyBDb21tYW5kTWFwKCdlbXBoZXEtbWFjcm9zJywge1xuICBlbXBoZXFsYnJhY2U6ICAgIFsnRW1waGVxTU8nLCAneyddLFxuICBlbXBoZXFyYnJhY2U6ICAgIFsnRW1waGVxTU8nLCAnfSddLFxuICBlbXBoZXFsYnJhY2s6ICAgIFsnRW1waGVxTU8nLCAnWyddLFxuICBlbXBoZXFyYnJhY2s6ICAgIFsnRW1waGVxTU8nLCAnXSddLFxuICBlbXBoZXFsYW5nbGU6ICAgIFsnRW1waGVxTU8nLCAnXFx1MjdFOCddLFxuICBlbXBoZXFyYW5nbGU6ICAgIFsnRW1waGVxTU8nLCAnXFx1MjdFOSddLFxuICBlbXBoZXFscGFyZW46ICAgIFsnRW1waGVxTU8nLCAnKCddLFxuICBlbXBoZXFycGFyZW46ICAgIFsnRW1waGVxTU8nLCAnKSddLFxuICBlbXBoZXFsdmVydDogICAgIFsnRW1waGVxTU8nLCAnfCddLFxuICBlbXBoZXFydmVydDogICAgIFsnRW1waGVxTU8nLCAnfCddLFxuICBlbXBoZXFsVmVydDogICAgIFsnRW1waGVxTU8nLCAnXFx1MjAxNiddLFxuICBlbXBoZXFyVmVydDogICAgIFsnRW1waGVxTU8nLCAnXFx1MjAxNiddLFxuICBlbXBoZXFsZmxvb3I6ICAgIFsnRW1waGVxTU8nLCAnXFx1MjMwQSddLFxuICBlbXBoZXFyZmxvb3I6ICAgIFsnRW1waGVxTU8nLCAnXFx1MjMwQiddLFxuICBlbXBoZXFsY2VpbDogICAgIFsnRW1waGVxTU8nLCAnXFx1MjMwOCddLFxuICBlbXBoZXFyY2VpbDogICAgIFsnRW1waGVxTU8nLCAnXFx1MjMwOSddLFxuICBlbXBoZXFiaWdsYnJhY2U6IFsnRW1waGVxTU8nLCAneyddLFxuICBlbXBoZXFiaWdyYnJhY2U6IFsnRW1waGVxTU8nLCAnfSddLFxuICBlbXBoZXFiaWdsYnJhY2s6IFsnRW1waGVxTU8nLCAnWyddLFxuICBlbXBoZXFiaWdyYnJhY2s6IFsnRW1waGVxTU8nLCAnXSddLFxuICBlbXBoZXFiaWdsYW5nbGU6IFsnRW1waGVxTU8nLCAnXFx1MjdFOCddLFxuICBlbXBoZXFiaWdyYW5nbGU6IFsnRW1waGVxTU8nLCAnXFx1MjdFOSddLFxuICBlbXBoZXFiaWdscGFyZW46IFsnRW1waGVxTU8nLCAnKCddLFxuICBlbXBoZXFiaWdycGFyZW46IFsnRW1waGVxTU8nLCAnKSddLFxuICBlbXBoZXFiaWdsdmVydDogIFsnRW1waGVxTU8nLCAnfCddLFxuICBlbXBoZXFiaWdydmVydDogIFsnRW1waGVxTU8nLCAnfCddLFxuICBlbXBoZXFiaWdsVmVydDogIFsnRW1waGVxTU8nLCAnXFx1MjAxNiddLFxuICBlbXBoZXFiaWdyVmVydDogIFsnRW1waGVxTU8nLCAnXFx1MjAxNiddLFxuICBlbXBoZXFiaWdsZmxvb3I6IFsnRW1waGVxTU8nLCAnXFx1MjMwQSddLFxuICBlbXBoZXFiaWdyZmxvb3I6IFsnRW1waGVxTU8nLCAnXFx1MjMwQiddLFxuICBlbXBoZXFiaWdsY2VpbDogIFsnRW1waGVxTU8nLCAnXFx1MjMwOCddLFxuICBlbXBoZXFiaWdyY2VpbDogIFsnRW1waGVxTU8nLCAnXFx1MjMwOSddLFxuICBlbXBoZXFsOiAgICAgICAgICAnRW1waGVxRGVsaW0nLFxuICBlbXBoZXFyOiAgICAgICAgICAnRW1waGVxRGVsaW0nLFxuICBlbXBoZXFiaWdsOiAgICAgICAnRW1waGVxRGVsaW0nLFxuICBlbXBoZXFiaWdyOiAgICAgICAnRW1waGVxRGVsaW0nXG59LCBFbXBoZXFNZXRob2RzKTtcblxuLy9cbi8vICBEZWZpbmUgdGhlIHBhY2thZ2UgZm9yIG91ciBuZXcgZW52aXJvbm1lbnRcbi8vXG5leHBvcnQgY29uc3QgRW1waGVxQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY3JlYXRlKCdlbXBoZXEnLCB7XG4gIGhhbmRsZXI6IHtcbiAgICBtYWNybzogWydlbXBoZXEtbWFjcm9zJ10sXG4gICAgZW52aXJvbm1lbnQ6IFsnZW1waGVxLWVudiddLFxuICB9LFxuICBpdGVtczoge1xuICAgIFtFbXBoZXFCZWdpbkl0ZW0ucHJvdG90eXBlLmtpbmRdOiBFbXBoZXFCZWdpbkl0ZW1cbiAgfVxufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBNYXBwaW5ncyBmb3IgVGVYIHBhcnNpbmcgZm9yIGRlZmluaXRvcmlhbCBjb21tYW5kcy5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQgTmV3Y29tbWFuZE1ldGhvZHMgZnJvbSAnLi9OZXdjb21tYW5kTWV0aG9kcy5qcyc7XG5pbXBvcnQge0NvbW1hbmRNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5cblxuLyoqXG4gKiBNYWNyb3MgZm9yIG5ld2NvbW1hbmQgZXRjLlxuICovXG5uZXcgQ29tbWFuZE1hcCgnTmV3Y29tbWFuZC1tYWNyb3MnLCB7XG4gIG5ld2NvbW1hbmQ6ICAgICAgICdOZXdDb21tYW5kJyxcbiAgcmVuZXdjb21tYW5kOiAgICAgJ05ld0NvbW1hbmQnLFxuICBuZXdlbnZpcm9ubWVudDogICAnTmV3RW52aXJvbm1lbnQnLFxuICByZW5ld2Vudmlyb25tZW50OiAnTmV3RW52aXJvbm1lbnQnLFxuICBkZWY6ICAgICAgICAgICAgICAnTWFjcm9EZWYnLFxuICAnbGV0JzogICAgICAgICAgICAnTGV0J1xufSwgTmV3Y29tbWFuZE1ldGhvZHMpO1xuXG5cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIE5ld2NvbW1hbmQgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb24sIFBhcnNlckNvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtCZWdpbkVudkl0ZW19IGZyb20gJy4vTmV3Y29tbWFuZEl0ZW1zLmpzJztcbmltcG9ydCBOZXdjb21tYW5kVXRpbCBmcm9tICcuL05ld2NvbW1hbmRVdGlsLmpzJztcbmltcG9ydCAnLi9OZXdjb21tYW5kTWFwcGluZ3MuanMnO1xuaW1wb3J0IFBhcnNlTWV0aG9kcyBmcm9tICcuLi9QYXJzZU1ldGhvZHMuanMnO1xuaW1wb3J0ICogYXMgc20gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcblxuXG4vKipcbiAqIEluaXQgbWV0aG9kIGZvciBOZXdjb21tYW5kIHBhY2thZ2UuXG4gKiBAcGFyYW0ge0NvbmZpZ3VyYXRpb259IGNvbmZpZyBUaGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxuICovXG5sZXQgaW5pdCA9IGZ1bmN0aW9uKGNvbmZpZzogUGFyc2VyQ29uZmlndXJhdGlvbikge1xuICBuZXcgc20uRGVsaW1pdGVyTWFwKE5ld2NvbW1hbmRVdGlsLk5FV19ERUxJTUlURVIsXG4gICAgICAgICAgICAgICAgICAgICAgUGFyc2VNZXRob2RzLmRlbGltaXRlciwge30pO1xuICBuZXcgc20uQ29tbWFuZE1hcChOZXdjb21tYW5kVXRpbC5ORVdfQ09NTUFORCwge30sIHt9KTtcbiAgbmV3IHNtLkVudmlyb25tZW50TWFwKE5ld2NvbW1hbmRVdGlsLk5FV19FTlZJUk9OTUVOVCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFBhcnNlTWV0aG9kcy5lbnZpcm9ubWVudCwge30sIHt9KTtcbiAgY29uZmlnLmFwcGVuZChDb25maWd1cmF0aW9uLmxvY2FsKFxuICAgIHtoYW5kbGVyOiB7Y2hhcmFjdGVyOiBbXSxcbiAgICAgICAgICAgICAgIGRlbGltaXRlcjogW05ld2NvbW1hbmRVdGlsLk5FV19ERUxJTUlURVJdLFxuICAgICAgICAgICAgICAgbWFjcm86IFtOZXdjb21tYW5kVXRpbC5ORVdfREVMSU1JVEVSLFxuICAgICAgICAgICAgICAgICAgICAgICBOZXdjb21tYW5kVXRpbC5ORVdfQ09NTUFORF0sXG4gICAgICAgICAgICAgICBlbnZpcm9ubWVudDogW05ld2NvbW1hbmRVdGlsLk5FV19FTlZJUk9OTUVOVF1cbiAgICAgICAgICAgICAgfSxcbiAgICAgcHJpb3JpdHk6IC0xfSkpO1xufTtcblxuXG5leHBvcnQgY29uc3QgTmV3Y29tbWFuZENvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ25ld2NvbW1hbmQnLCB7XG4gICAgaGFuZGxlcjoge1xuICAgICAgbWFjcm86IFsnTmV3Y29tbWFuZC1tYWNyb3MnXVxuICAgIH0sXG4gICAgaXRlbXM6IHtcbiAgICAgIFtCZWdpbkVudkl0ZW0ucHJvdG90eXBlLmtpbmRdOiBCZWdpbkVudkl0ZW0sXG4gICAgfSxcbiAgICBvcHRpb25zOiB7bWF4TWFjcm9zOiAxMDAwfSxcbiAgICBpbml0OiBpbml0XG4gIH1cbik7XG5cblxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgZXh0cGZlaWwgcGFja2FnZS4gTm90ZSB0aGF0IHRoaXMgaXNcbiAqICAgICBiYXNlZCBvbiBBTVMgcGFja2FnZSBhbmQgTmV3Y29tbWFuZCB1dGlsaXRpZXMuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9uLCBQYXJzZXJDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCB7QW1zTWV0aG9kc30gZnJvbSAnLi4vYW1zL0Ftc01ldGhvZHMuanMnO1xuaW1wb3J0IE5ld2NvbW1hbmRVdGlsIGZyb20gJy4uL25ld2NvbW1hbmQvTmV3Y29tbWFuZFV0aWwuanMnO1xuaW1wb3J0IHtOZXdjb21tYW5kQ29uZmlndXJhdGlvbn0gZnJvbSAnLi4vbmV3Y29tbWFuZC9OZXdjb21tYW5kQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuXG5cbi8vIE5hbWVzcGFjZVxuZXhwb3J0IGxldCBFeHRwZmVpbE1ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPiA9IHt9O1xuXG5FeHRwZmVpbE1ldGhvZHMueEFycm93ID0gQW1zTWV0aG9kcy54QXJyb3c7XG5cbi8qKlxuICogSW1wbGVtZW50cyBcXE5ld2V4dGFycm93IHRvIGRlZmluZSBhIG5ldyBhcnJvdy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgdGV4IHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBjYWxsaW5nIG1hY3JvLlxuICovXG5FeHRwZmVpbE1ldGhvZHMuTmV3RXh0QXJyb3cgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBjcyA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgY29uc3Qgc3BhY2UgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGNvbnN0IGNociA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgaWYgKCFjcy5tYXRjaCgvXlxcXFwoW2Etel0rfC4pJC9pKSkge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignTmV3ZXh0YXJyb3dBcmcxJyxcbiAgICAgICAgICAgICAgICdGaXJzdCBhcmd1bWVudCB0byAlMSBtdXN0IGJlIGEgY29udHJvbCBzZXF1ZW5jZSBuYW1lJywgbmFtZSk7XG4gIH1cbiAgaWYgKCFzcGFjZS5tYXRjaCgvXihcXGQrKSwoXFxkKykkLykpIHtcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoXG4gICAgICAnTmV3ZXh0YXJyb3dBcmcyJyxcbiAgICAgICdTZWNvbmQgYXJndW1lbnQgdG8gJTEgbXVzdCBiZSB0d28gaW50ZWdlcnMgc2VwYXJhdGVkIGJ5IGEgY29tbWEnLFxuICAgICAgbmFtZSk7XG4gIH1cbiAgaWYgKCFjaHIubWF0Y2goL14oXFxkK3wweFswLTlBLUZdKykkL2kpKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKFxuICAgICAgJ05ld2V4dGFycm93QXJnMycsXG4gICAgICAnVGhpcmQgYXJndW1lbnQgdG8gJTEgbXVzdCBiZSBhIHVuaWNvZGUgY2hhcmFjdGVyIG51bWJlcicsXG4gICAgICBuYW1lKTtcbiAgfVxuICBjcyA9IGNzLnN1YnN0cigxKTtcbiAgbGV0IHNwYWNlcyA9IHNwYWNlLnNwbGl0KCcsJyk7XG4gIE5ld2NvbW1hbmRVdGlsLmFkZE1hY3JvKHBhcnNlciwgY3MsIEV4dHBmZWlsTWV0aG9kcy54QXJyb3csXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtwYXJzZUludChjaHIpLCBwYXJzZUludChzcGFjZXNbMF0pLCBwYXJzZUludChzcGFjZXNbMV0pXSk7XG59O1xuXG5cbm5ldyBDb21tYW5kTWFwKCdleHRwZmVpbCcsIHtcbiAgeHR3b2hlYWRyaWdodGFycm93OiBbJ3hBcnJvdycsIDB4MjFBMCwgMTIsIDE2XSxcbiAgeHR3b2hlYWRsZWZ0YXJyb3c6ICBbJ3hBcnJvdycsIDB4MjE5RSwgMTcsIDEzXSxcbiAgeG1hcHN0bzogICAgICAgICAgICBbJ3hBcnJvdycsIDB4MjFBNiwgNiwgN10sXG4gIHhsb25nZXF1YWw6ICAgICAgICAgWyd4QXJyb3cnLCAweDAwM0QsIDcsIDddLFxuICB4dG9mcm9tOiAgICAgICAgICAgIFsneEFycm93JywgMHgyMUM0LCAxMiwgMTJdLFxuICBOZXdleHRhcnJvdzogICAgICAgICdOZXdFeHRBcnJvdydcbn0sIEV4dHBmZWlsTWV0aG9kcyk7XG5cblxubGV0IGluaXQgPSBmdW5jdGlvbihjb25maWc6IFBhcnNlckNvbmZpZ3VyYXRpb24pIHtcbiAgTmV3Y29tbWFuZENvbmZpZ3VyYXRpb24uaW5pdChjb25maWcpO1xufTtcblxuZXhwb3J0IGNvbnN0IEV4dHBmZWlsQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAnZXh0cGZlaWwnLCB7XG4gICAgaGFuZGxlcjoge21hY3JvOiBbJ2V4dHBmZWlsJ119LFxuICAgIGluaXQ6IGluaXRcbiAgfVxuKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIGdlbnN5bWIgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtTeW1ib2x9IGZyb20gJy4uL1N5bWJvbC5qcyc7XG5pbXBvcnQge1RleENvbnN0YW50fSBmcm9tICcuLi9UZXhDb25zdGFudHMuanMnO1xuaW1wb3J0IHtDaGFyYWN0ZXJNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5cblxuLyoqXG4gKiBIYW5kbGUgY2hhcmFjdGVycyB0aGF0IGFyZSBrbm93biB1bml0cy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGN1cnJlbnQgdGV4IHBhcnNlci5cbiAqIEBwYXJhbSB7U3ltYm9sfSBtY2hhciBUaGUgcGFyc2VkIHN5bWJvbC5cbiAqL1xuZnVuY3Rpb24gbWF0aGNoYXJVbml0KHBhcnNlcjogVGV4UGFyc2VyLCBtY2hhcjogU3ltYm9sKSB7XG4gIGNvbnN0IGRlZiA9IG1jaGFyLmF0dHJpYnV0ZXMgfHwge307XG4gIGRlZi5tYXRodmFyaWFudCA9IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMO1xuICBkZWYuY2xhc3MgPSAnTWF0aE1MLVVuaXQnO1xuICBjb25zdCBub2RlID0gcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbWknLCBkZWYsIG1jaGFyLmNoYXIpO1xuICBwYXJzZXIuUHVzaChub2RlKTtcbn1cblxuXG4vKipcbiAqIGdlbnN5bWIgdW5pdHMuXG4gKi9cbm5ldyBDaGFyYWN0ZXJNYXAoJ2dlbnN5bWItc3ltYm9scycsIG1hdGhjaGFyVW5pdCwge1xuICBvaG06ICAgICAgICAgICAgJ1xcdTIxMjYnLFxuICBkZWdyZWU6ICAgICAgICAgJ1xcdTAwQjAnLFxuICBjZWxzaXVzOiAgICAgICAgJ1xcdTIxMDMnLFxuICBwZXJ0aG91c2FuZDogICAgJ1xcdTIwMzAnLFxuICBtaWNybzogICAgICAgICAgJ1xcdTAwQjUnXG59KTtcblxuXG5leHBvcnQgY29uc3QgR2Vuc3ltYkNvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ2dlbnN5bWInLCB7XG4gICAgaGFuZGxlcjoge21hY3JvOiBbJ2dlbnN5bWItc3ltYm9scyddfSxcbiAgfVxuKTtcblxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgTWV0aG9kcyBmb3IgdGhlIEh0bWwgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5cbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcblxuXG4vLyBOYW1lc3BhY2VcbmxldCBIdG1sTWV0aG9kczogUmVjb3JkPHN0cmluZywgUGFyc2VNZXRob2Q+ID0ge307XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIFxcaHJlZnt1cmx9e21hdGh9XG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5IdG1sTWV0aG9kcy5IcmVmID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCB1cmwgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGNvbnN0IGFyZyA9IEdldEFyZ3VtZW50TU1MKHBhcnNlciwgbmFtZSk7XG4gIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShhcmcsICdocmVmJywgdXJsKTtcbiAgcGFyc2VyLlB1c2goYXJnKTtcbn07XG5cblxuLyoqXG4gKiBJbXBsZW1lbnRzIFxcY2xhc3N7bmFtZX17bWF0aH1cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkh0bWxNZXRob2RzLkNsYXNzID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBsZXQgQ0xBU1MgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGNvbnN0IGFyZyA9IEdldEFyZ3VtZW50TU1MKHBhcnNlciwgbmFtZSk7XG4gIGxldCBvbGRDbGFzcyA9IE5vZGVVdGlsLmdldEF0dHJpYnV0ZShhcmcsICdjbGFzcycpO1xuICBpZiAob2xkQ2xhc3MpIHtcbiAgICBDTEFTUyA9IG9sZENsYXNzICsgJyAnICsgQ0xBU1M7XG4gIH1cbiAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKGFyZywgJ2NsYXNzJywgQ0xBU1MpO1xuICBwYXJzZXIuUHVzaChhcmcpO1xufTtcblxuXG4vKipcbiAqIEltcGxlbWVudHMgXFxzdHlsZXtzdHlsZS1zdHJpbmd9e21hdGh9XG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5IdG1sTWV0aG9kcy5TdHlsZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHN0eWxlID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBjb25zdCBhcmcgPSBHZXRBcmd1bWVudE1NTChwYXJzZXIsIG5hbWUpO1xuICAvLyBjaGVjayB0aGF0IGl0IGxvb2tzIGxpa2UgYSBzdHlsZSBzdHJpbmdcbiAgbGV0IG9sZFN0eWxlID0gTm9kZVV0aWwuZ2V0QXR0cmlidXRlKGFyZywgJ3N0eWxlJyk7XG4gIGlmIChvbGRTdHlsZSkge1xuICAgIGlmIChzdHlsZS5jaGFyQXQoc3R5bGUubGVuZ3RoIC0gMSkgIT09ICc7Jykge1xuICAgICAgc3R5bGUgKz0gJzsnO1xuICAgIH1cbiAgICBzdHlsZSA9IG9sZFN0eWxlICsgJyAnICsgc3R5bGU7XG4gIH1cbiAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKGFyZywgJ3N0eWxlJywgc3R5bGUpO1xuICBwYXJzZXIuUHVzaChhcmcpO1xufTtcblxuXG4vKipcbiAqIEltcGxlbWVudHMgXFxjc3NJZHtpZH17bWF0aH1cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cbkh0bWxNZXRob2RzLklkID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCBJRCAgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGNvbnN0IGFyZyA9IEdldEFyZ3VtZW50TU1MKHBhcnNlciwgbmFtZSk7XG4gIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShhcmcsICdpZCcsIElEKTtcbiAgcGFyc2VyLlB1c2goYXJnKTtcbn07XG5cblxuLyoqXG4gKiBQYXJzZXMgdGhlIG1hdGggYXJndW1lbnQgb2YgdGhlIGFib3ZlIGNvbW1hbmRzIGFuZCByZXR1cm5zIGl0IGFzIHNpbmdsZVxuICogbm9kZSAoaW4gYW4gbXJvdyBpZiBuZWNlc3NhcnkpLiBUaGUgSFRNTCBhdHRyaWJ1dGVzIGFyZSB0aGVuXG4gKiBhdHRhY2hlZCB0byB0aGlzIGVsZW1lbnQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBjYWxsaW5nIG1hY3JvIG5hbWUuXG4gKiBAcmV0dXJuIHtNbWxOb2RlfSBUaGUgbWF0aCBub2RlLlxuICovXG5sZXQgR2V0QXJndW1lbnRNTUwgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKTogTW1sTm9kZSB7XG4gIGxldCBhcmcgPSBwYXJzZXIuUGFyc2VBcmcobmFtZSk7XG4gIGlmICghTm9kZVV0aWwuaXNJbmZlcnJlZChhcmcpKSB7XG4gICAgcmV0dXJuIGFyZztcbiAgfVxuICBsZXQgY2hpbGRyZW4gPSBOb2RlVXRpbC5nZXRDaGlsZHJlbihhcmcpO1xuICBpZiAoY2hpbGRyZW4ubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuWzBdO1xuICB9XG4gIGNvbnN0IG1yb3cgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21yb3cnKTtcbiAgTm9kZVV0aWwuY29weUNoaWxkcmVuKGFyZywgbXJvdyk7XG4gIE5vZGVVdGlsLmNvcHlBdHRyaWJ1dGVzKGFyZywgbXJvdyk7XG4gIHJldHVybiBtcm93O1xufTtcblxuXG5leHBvcnQgZGVmYXVsdCBIdG1sTWV0aG9kcztcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIEh0bWwgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IEh0bWxNZXRob2RzIGZyb20gJy4vSHRtbE1ldGhvZHMuanMnO1xuXG5cbm5ldyBDb21tYW5kTWFwKCdodG1sX21hY3JvcycsIHtcbiAgaHJlZjogICAgJ0hyZWYnLFxuICAnY2xhc3MnOiAnQ2xhc3MnLFxuICBzdHlsZTogICAnU3R5bGUnLFxuICBjc3NJZDogICAnSWQnXG59LCBIdG1sTWV0aG9kcyk7XG5cbmV4cG9ydCBjb25zdCBIdG1sQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY3JlYXRlKFxuICAnaHRtbCcsIHtoYW5kbGVyOiB7IG1hY3JvOiBbJ2h0bWxfbWFjcm9zJ119fVxuKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogIENvcHlyaWdodCAoYykgMjAyMS0yMDIyIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgICAgVXRpbGl0eSBmdW5jdGlvbnMgZm9yIHRoZSBtYXRodG9vbHMgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBQLiBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7RXFuQXJyYXlJdGVtfSBmcm9tICcuLi9iYXNlL0Jhc2VJdGVtcy5qcyc7XG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IHtNYWNyb30gZnJvbSAnLi4vU3ltYm9sLmpzJztcbmltcG9ydCBQYXJzZU9wdGlvbnMgZnJvbSAnLi4vUGFyc2VPcHRpb25zLmpzJztcbmltcG9ydCB7bG9va3VwfSBmcm9tICcuLi8uLi8uLi91dGlsL09wdGlvbnMuanMnO1xuaW1wb3J0IHtNbWxOb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5cbmltcG9ydCB7TWF0aHRvb2xzTWV0aG9kc30gZnJvbSAnLi9NYXRodG9vbHNNZXRob2RzLmpzJztcbmltcG9ydCB7UEFJUkVEREVMSU1TfSBmcm9tICcuL01hdGh0b29sc0NvbmZpZ3VyYXRpb24uanMnO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb25zIGZvciB0aGUgTWF0aHRvb2xzIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBNYXRodG9vbHNVdGlsID0ge1xuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGRpc3BsYXlzdHlsZSBhbmQgc2NyaXB0bGV2ZWwgYXR0cmlidXRlcyBvZiBhbiBtc3R5bGUgZWxlbWVudFxuICAgKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG1tbCAgICAgVGhlIG1zdHlsZSBub2RlIHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlICAgIFRoZSBUZVggc3R5bGUgbWFjcm8gdG8gYXBwbHkuXG4gICAqL1xuICBzZXREaXNwbGF5TGV2ZWwobW1sOiBNbWxOb2RlLCBzdHlsZTogc3RyaW5nKSB7XG4gICAgaWYgKCFzdHlsZSkgcmV0dXJuO1xuICAgIGNvbnN0IFtkaXNwbGF5LCBzY3JpcHRdID0gbG9va3VwKHN0eWxlLCB7XG4gICAgICAnXFxcXGRpc3BsYXlzdHlsZSc6ICAgICAgW3RydWUsIDBdLFxuICAgICAgJ1xcXFx0ZXh0c3R5bGUnOiAgICAgICAgIFtmYWxzZSwgMF0sXG4gICAgICAnXFxcXHNjcmlwdHN0eWxlJzogICAgICAgW2ZhbHNlLCAxXSxcbiAgICAgICdcXFxcc2NyaXB0c2NyaXB0c3R5bGUnOiBbZmFsc2UsIDJdXG4gICAgfSwgW251bGwsIG51bGxdKTtcbiAgICBpZiAoZGlzcGxheSAhPT0gbnVsbCkge1xuICAgICAgbW1sLmF0dHJpYnV0ZXMuc2V0KCdkaXNwbGF5c3R5bGUnLCBkaXNwbGF5KTtcbiAgICAgIG1tbC5hdHRyaWJ1dGVzLnNldCgnc2NyaXB0bGV2ZWwnLCBzY3JpcHQpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2sgdGhhdCB0aGUgdG9wIHN0YWNrIGl0ZW0gaXMgYW4gYWxpZ25tZW50IHRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGN1cnJlbnQgVGVYIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBtYWNybyBkb2luZyB0aGUgY2hlY2tpbmcuXG4gICAqIEByZXR1cm4ge0VxbkFycmF5SXRlbX0gICAgICBUaGUgdG9wIGl0ZW0gKGFuIEVxbkFycmF5SXRlbSkuXG4gICAqL1xuICBjaGVja0FsaWdubWVudChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKTogRXFuQXJyYXlJdGVtIHtcbiAgICBjb25zdCB0b3AgPSBwYXJzZXIuc3RhY2suVG9wKCkgYXMgRXFuQXJyYXlJdGVtO1xuICAgIGlmICh0b3Aua2luZCAhPT0gRXFuQXJyYXlJdGVtLnByb3RvdHlwZS5raW5kKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ05vdEluQWxpZ25tZW50JywgJyUxIGNhbiBvbmx5IGJlIHVzZWQgaW4gYWxpZ21lbnQgZW52aXJvbm1lbnRzJywgbmFtZSk7XG4gICAgfVxuICAgIHJldHVybiB0b3A7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkZCBhIHBhaXJlZCBkZWxpbWl0ZXIgdG8gdGhlIGxpc3Qgb2YgdGhlbS5cbiAgICpcbiAgICogQHBhcmFtIHtQYXJzZU9wdGlvbnN9IGNvbmZpZyAgIFRoZSBwYXJzZSBvcHRpb25zIHRvIG1vZGlmeS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNzICAgICAgICAgICAgIFRoZSBjb250cm9sIHNlcXVlbmNlIGZvciB0aGUgcGFpcmVkIGRlbGltaXRlcnMuXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3MgICAgICAgICBUaGUgZGVmaW5pdGlvbiBmb3IgdGhlIHBhaXJlZCBkZWxpbWl0ZXJzLiAgT25lIG9mOlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xlZnQsIHJpZ2h0XVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xlZnQsIHJpZ2h0LCBib2R5LCBhcmdjb3VudF1cbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsZWZ0LCByaWdodCwgYm9keSwgYXJnY291bnQsIHByZSwgcG9zdF1cbiAgICovXG4gIGFkZFBhaXJlZERlbGltcyhjb25maWc6IFBhcnNlT3B0aW9ucywgY3M6IHN0cmluZywgYXJnczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBkZWxpbXMgPSBjb25maWcuaGFuZGxlcnMucmV0cmlldmUoUEFJUkVEREVMSU1TKSBhcyBDb21tYW5kTWFwO1xuICAgIGRlbGltcy5hZGQoY3MsIG5ldyBNYWNybyhjcywgTWF0aHRvb2xzTWV0aG9kcy5QYWlyZWREZWxpbWl0ZXJzLCBhcmdzKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFkanVzdCB0aGUgbGluZSBzcGFjaW5nIGZvciBhIHRhYmxlLlxuICAgKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG10YWJsZSAgIFRoZSBtdGFibGUgbm9kZSB0byBhZGp1c3QgKGlmIGl0IGlzIGEgdGFibGUpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3ByZWFkICAgIFRoZSBkaW1lbnNpb24gdG8gY2hhbmdlIGJ5IChudW1iZXItd2l0aC11bml0cykuXG4gICAqL1xuICBzcHJlYWRMaW5lcyhtdGFibGU6IE1tbE5vZGUsIHNwcmVhZDogc3RyaW5nKSB7XG4gICAgaWYgKCFtdGFibGUuaXNLaW5kKCdtdGFibGUnKSkgcmV0dXJuO1xuICAgIGxldCByb3dzcGFjaW5nID0gbXRhYmxlLmF0dHJpYnV0ZXMuZ2V0KCdyb3dzcGFjaW5nJykgYXMgc3RyaW5nO1xuICAgIGlmIChyb3dzcGFjaW5nKSB7XG4gICAgICBjb25zdCBhZGQgPSBQYXJzZVV0aWwuZGltZW4yZW0oc3ByZWFkKTtcbiAgICAgIHJvd3NwYWNpbmcgPSByb3dzcGFjaW5nXG4gICAgICAgIC5zcGxpdCgvIC8pXG4gICAgICAgIC5tYXAocyA9PiBQYXJzZVV0aWwuRW0oTWF0aC5tYXgoMCwgUGFyc2VVdGlsLmRpbWVuMmVtKHMpICsgYWRkKSkpXG4gICAgICAgIC5qb2luKCcgJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJvd3NwYWNpbmcgPSBzcHJlYWQ7XG4gICAgfVxuICAgIG10YWJsZS5hdHRyaWJ1dGVzLnNldCgncm93c3BhY2luZycsIHJvd3NwYWNpbmcpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhIHN0cmluZyBpcyBhIG51bWJlciBhbmQgcmV0dXJuIGl0IHdpdGggYW4gZXhwbGljaXQgcGx1cyBpZiB0aGVyZSBpc24ndCBvbmUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIG5hbWUgb2YgdGhlIG1hY3JvIGRvaW5nIHRoZSBjaGVja2luZy5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG4gICAgICBUaGUgc3RyaW5nIHRvIHRlc3QgYXMgYSBudW1iZXIuXG4gICAqIEByZXR1cm4ge3NydHJpbmd9ICAgICAgVGhlIG51bWJlciB3aXRoIGFuIGV4cGxpY2l0IHNpZ24uXG4gICAqL1xuICBwbHVzT3JNaW51cyhuYW1lOiBzdHJpbmcsIG46IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbiA9IG4udHJpbSgpO1xuICAgIGlmICghbi5tYXRjaCgvXlstK10/KD86XFxkKyg/OlxcLlxcZCopP3xcXC5cXGQrKSQvKSkge1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdOb3RBTnVtYmVyJywgJ0FyZ3VtZW50IHRvICUxIGlzIG5vdCBhIG51bWJlcicsIG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gKG4ubWF0Y2goL15bLStdLykgPyBuIDogJysnICsgbik7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFBhcnNlIGEgXFxwcmVzY3JpcHQgYXJndW1lbnQsIHdpdGggaXRzIGFzc29jaWF0ZWQgZm9ybWF0LCBpZiBhbnkuXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbmFtZSBvZiB0aGUgY2FsbGluZyBtYWNybyAoXFxwcmVzY3JpcHQpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcG9zICAgICAgICAgVGhlIHBvc2l0aW9uIGZvciB0aGUgYXJndW1lbnQgKHN1Yiwgc3VwLCBhcmcpLlxuICAgKiBAcmV0dXJuIHtNbWxOb2RlfSAgICAgICAgICAgVGhlIHBhcnNlZCBNTUwgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQuXG4gICAqL1xuICBnZXRTY3JpcHQocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZywgcG9zOiBzdHJpbmcpOiBNbWxOb2RlIHtcbiAgICBsZXQgYXJnID0gUGFyc2VVdGlsLnRyaW1TcGFjZXMocGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpKTtcbiAgICBpZiAoYXJnID09PSAnJykge1xuICAgICAgcmV0dXJuIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbm9uZScpO1xuICAgIH1cbiAgICBjb25zdCBmb3JtYXQgPSBwYXJzZXIub3B0aW9ucy5tYXRodG9vbHNbYHByZXNjcmlwdC0ke3Bvc30tZm9ybWF0YF07XG4gICAgZm9ybWF0ICYmIChhcmcgPSBgJHtmb3JtYXR9eyR7YXJnfX1gKTtcbiAgICByZXR1cm4gbmV3IFRleFBhcnNlcihhcmcsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgfVxuXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIwLTIwMjIgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgICBNYWNybyBhbmQgZW52aXJvbm1lbnQgaW1wbGVtZW50YXRpb25zIGZvciB0aGUgbWF0aHRvb2xzIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBQLiBDZXJ2b25lKVxuICovXG5cblxuaW1wb3J0IHtBcnJheUl0ZW0sIEVxbkFycmF5SXRlbX0gZnJvbSAnLi4vYmFzZS9CYXNlSXRlbXMuanMnO1xuaW1wb3J0IHtTdGFja0l0ZW19IGZyb20gJy4uL1N0YWNrSXRlbS5qcyc7XG5pbXBvcnQgUGFyc2VVdGlsIGZyb20gJy4uL1BhcnNlVXRpbC5qcyc7XG5pbXBvcnQge1BhcnNlTWV0aG9kLCBQYXJzZVJlc3VsdH0gZnJvbSAnLi4vVHlwZXMuanMnO1xuaW1wb3J0IHtBbXNNZXRob2RzfSBmcm9tICcuLi9hbXMvQW1zTWV0aG9kcy5qcyc7XG5pbXBvcnQgQmFzZU1ldGhvZHMgZnJvbSAnLi4vYmFzZS9CYXNlTWV0aG9kcy5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4uL05vZGVVdGlsLmpzJztcbmltcG9ydCB7VEVYQ0xBU1N9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7bGVuZ3RoMmVtLCBlbX0gZnJvbSAnLi4vLi4vLi4vdXRpbC9sZW5ndGhzLmpzJztcbmltcG9ydCB7bG9va3VwfSBmcm9tICcuLi8uLi8uLi91dGlsL09wdGlvbnMuanMnO1xuaW1wb3J0IE5ld2NvbW1hbmRVdGlsIGZyb20gJy4uL25ld2NvbW1hbmQvTmV3Y29tbWFuZFV0aWwuanMnO1xuaW1wb3J0IE5ld2NvbW1hbmRNZXRob2RzIGZyb20gJy4uL25ld2NvbW1hbmQvTmV3Y29tbWFuZE1ldGhvZHMuanMnO1xuXG5pbXBvcnQge01hdGh0b29sc1RhZ3N9IGZyb20gJy4vTWF0aHRvb2xzVGFncy5qcyc7XG5pbXBvcnQge01hdGh0b29sc1V0aWx9IGZyb20gJy4vTWF0aHRvb2xzVXRpbC5qcyc7XG5cbi8qKlxuICogVGhlIGltcGxlbWVudGF0aW9ucyBmb3IgdGhlIG1hY3JvcyBhbmQgZW52aXJvbm1lbnRzIGZvciB0aGUgbWF0aHRvb2xzIHBhY2thZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBNYXRodG9vbHNNZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBQYXJzZU1ldGhvZD4gPSB7XG5cbiAgLyoqXG4gICAqIEhhbmRsZSBhIG1hdGh0b29scyBtYXRyaXggZW52aXJvbm1lbnQsIHdpdGggb3B0aW9uYWwgYWxpZ25tZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge1N0YWNrSXRlbX0gYmVnaW4gICAgVGhlIEJlZ2luSXRlbSBmb3IgdGhlIGVudmlyb25tZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3BlbiAgICAgICAgVGhlIG9wZW4gZGVsaW1pdGVyIGZvciB0aGUgbWF0cml4LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xvc2UgICAgICAgVGhlIGNsb3NlIGRlbGltaXRlciBmb3IgdGhlIG1hdHJpeC5cbiAgICogQHJldHVybiB7UGFyc2VyUmVzdWx0fSAgICAgIFRoZSBBcnJheUl0ZW0gZm9yIHRoZSBtYXRyaXguXG4gICAqL1xuICBNdE1hdHJpeChwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IFN0YWNrSXRlbSwgb3Blbjogc3RyaW5nLCBjbG9zZTogc3RyaW5nKTogUGFyc2VSZXN1bHQge1xuICAgIGNvbnN0IGFsaWduID0gcGFyc2VyLkdldEJyYWNrZXRzKGBcXFxcYmVnaW57JHtiZWdpbi5nZXROYW1lKCl9fWAsICdjJyk7XG4gICAgcmV0dXJuIE1hdGh0b29sc01ldGhvZHMuQXJyYXkocGFyc2VyLCBiZWdpbiwgb3BlbiwgY2xvc2UsIGFsaWduKTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlIGEgc21hbGxtYXRyaXggd2l0aCBnaXZlbiBkZWxpbWl0ZXJzLCBhbmQgd2l0aCBvcHRpb25hbCBhbGlnbm1lbnQgKGFuZCBzZXR0YWJsZSBkZWZhdWx0KVxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge1N0YWNrSXRlbX0gYmVnaW4gICAgVGhlIEJlZ2luSXRlbSBmb3IgdGhlIGVudmlyb25tZW50LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gb3BlbiAgICAgICAgVGhlIG9wZW4gZGVsaW1pdGVyIGZvciB0aGUgbWF0cml4LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2xvc2UgICAgICAgVGhlIGNsb3NlIGRlbGltaXRlciBmb3IgdGhlIG1hdHJpeC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGFsaWduICAgICAgIFRoZSAob3B0aW9uYWwpIGFsaWdubWVudC4gIElmIG5vdCBnaXZlbiwgdXNlIGEgYnJhY2tldCBhcmd1bWVudCBmb3IgaXQuXG4gICAqIEByZXR1cm4ge1BhcnNlUmVzdWx0fSAgICAgICBUaGUgQXJyYXlJdGVtIGZvciB0aGUgbWF0cml4LlxuICAgKi9cbiAgTXRTbWFsbE1hdHJpeChwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IFN0YWNrSXRlbSwgb3Blbjogc3RyaW5nLCBjbG9zZTogc3RyaW5nLCBhbGlnbj86IHN0cmluZyk6IFBhcnNlUmVzdWx0IHtcbiAgICBpZiAoIWFsaWduKSB7XG4gICAgICBhbGlnbiA9IHBhcnNlci5HZXRCcmFja2V0cyhgXFxcXGJlZ2lueyR7YmVnaW4uZ2V0TmFtZSgpfX1gLCBwYXJzZXIub3B0aW9ucy5tYXRodG9vbHNbJ3NtYWxsbWF0cml4LWFsaWduJ10pO1xuICAgIH1cbiAgICByZXR1cm4gTWF0aHRvb2xzTWV0aG9kcy5BcnJheShcbiAgICAgIHBhcnNlciwgYmVnaW4sIG9wZW4sIGNsb3NlLCBhbGlnbiwgUGFyc2VVdGlsLkVtKDEgLyAzKSwgJy4yZW0nLCAnUycsIDFcbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIG11bHRsaW5lZCBTdGFja0l0ZW0uXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiAgICBUaGUgQmVnaW5JdGVtIGZvciB0aGUgZW52aXJvbm1lbnQuXG4gICAqIEByZXR1cm4ge1BhcnNlUmVzdWx0fSAgICAgICBUaGUgTXVsdGxpbmVkSXRlbS5cbiAgICovXG4gIE10TXVsdGxpbmVkKHBhcnNlcjogVGV4UGFyc2VyLCBiZWdpbjogU3RhY2tJdGVtKTogUGFyc2VSZXN1bHQge1xuICAgIGNvbnN0IG5hbWUgPSBgXFxcXGJlZ2lueyR7YmVnaW4uZ2V0TmFtZSgpfX1gO1xuICAgIGxldCBwb3MgPSBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSwgcGFyc2VyLm9wdGlvbnMubWF0aHRvb2xzWydtdWx0bGluZWQtcG9zJ10gfHwgJ2MnKTtcbiAgICBsZXQgd2lkdGggPSBwb3MgPyBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSwgJycpIDogJyc7XG4gICAgaWYgKHBvcyAmJiAhcG9zLm1hdGNoKC9eW2NidF0kLykpIHtcbiAgICAgIFt3aWR0aCwgcG9zXSA9IFtwb3MsIHdpZHRoXTtcbiAgICB9XG4gICAgcGFyc2VyLlB1c2goYmVnaW4pO1xuICAgIGNvbnN0IGl0ZW0gPSBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdtdWx0bGluZWQnLCBwYXJzZXIsIGJlZ2luKSBhcyBBcnJheUl0ZW07XG4gICAgaXRlbS5hcnJheWRlZiA9IHtcbiAgICAgIGRpc3BsYXlzdHlsZTogdHJ1ZSxcbiAgICAgIHJvd3NwYWNpbmc6ICcuNWVtJyxcbiAgICAgIHdpZHRoOiB3aWR0aCB8fCAnYXV0bycsXG4gICAgICBjb2x1bW53aWR0aDogJzEwMCUnLFxuICAgIH07XG4gICAgcmV0dXJuIFBhcnNlVXRpbC5zZXRBcnJheUFsaWduKGl0ZW0gYXMgQXJyYXlJdGVtLCBwb3MgfHwgJ2MnKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZW1lbnQgZm9yIHRoZSBBTVMgSGFuZGxlU2hvdmUgdGhhdCBpbmNsdWRlcyBvcHRpb25hbCBzcGFjaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgbWFjcm8uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaG92ZSAgICAgICBXaGljaCB3YXkgdG8gc2hvdmUgdGhlIHJlc3VsdC5cbiAgICovXG4gIEhhbmRsZVNob3ZlKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIHNob3ZlOiBzdHJpbmcpIHtcbiAgICBsZXQgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpO1xuICAgIGlmICh0b3Aua2luZCAhPT0gJ211bHRsaW5lJyAmJiB0b3Aua2luZCAhPT0gJ211bHRsaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcihcbiAgICAgICAgJ0NvbW1hbmRJbk11bHRsaW5lZCcsXG4gICAgICAgICclMSBjYW4gb25seSBhcHBlYXIgd2l0aGluIHRoZSBtdWx0bGluZSBvciBtdWx0bGluZWQgZW52aXJvbm1lbnRzJyxcbiAgICAgICAgbmFtZSk7XG4gICAgfVxuICAgIGlmICh0b3AuU2l6ZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoXG4gICAgICAgICdDb21tYW5kQXRUaGVCZWdpbmluZ09mTGluZScsXG4gICAgICAgICclMSBtdXN0IGNvbWUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZScsXG4gICAgICAgIG5hbWUpO1xuICAgIH1cbiAgICB0b3Auc2V0UHJvcGVydHkoJ3Nob3ZlJywgc2hvdmUpO1xuICAgIGxldCBzaGlmdCA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lKTtcbiAgICBsZXQgbW1sID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICAgIGlmIChzaGlmdCkge1xuICAgICAgbGV0IG1yb3cgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21yb3cnLCBbXSk7XG4gICAgICBsZXQgbXNwYWNlID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3BhY2UnLCBbXSwge3dpZHRoOiBzaGlmdH0pO1xuICAgICAgaWYgKHNob3ZlID09PSAnbGVmdCcpIHtcbiAgICAgICAgbXJvdy5hcHBlbmRDaGlsZChtc3BhY2UpO1xuICAgICAgICBtcm93LmFwcGVuZENoaWxkKG1tbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtcm93LmFwcGVuZENoaWxkKG1tbCk7XG4gICAgICAgIG1yb3cuYXBwZW5kQ2hpbGQobXNwYWNlKTtcbiAgICAgIH1cbiAgICAgIG1tbCA9IG1yb3c7XG4gICAgfVxuICAgIHBhcnNlci5QdXNoKG1tbCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEhhbmRsZSB0aGUgc3ByZWFkbGluZXMgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgYWN0aXZlIHRleCBwYXJzZXIuXG4gICAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiAgICBUaGUgQmVnaW5JdGVtIGZvciB0aGUgZW52aXJvbm1lbnQuXG4gICAqL1xuICBTcHJlYWRMaW5lcyhwYXJzZXI6IFRleFBhcnNlciwgYmVnaW46IFN0YWNrSXRlbSkge1xuICAgIGlmIChwYXJzZXIuc3RhY2suZW52LmNsb3NpbmcgPT09IGJlZ2luLmdldE5hbWUoKSkge1xuICAgICAgLy9cbiAgICAgIC8vICBXaGVuIHRoZSBlbnZpcm9ubWVudCBlbmRzLCBsb29rIHRocm91Z2ggdGhlIGNvbnRlbnRzIGFuZFxuICAgICAgLy8gIGFkanVzdCB0aGUgc3BhY2luZyBpbiBhbnkgdGFibGVzLCB0aGVuIHB1c2ggdGhlIHJlc3VsdHMuXG4gICAgICAvL1xuICAgICAgZGVsZXRlIHBhcnNlci5zdGFjay5lbnYuY2xvc2luZztcbiAgICAgIGNvbnN0IHRvcCA9IHBhcnNlci5zdGFjay5Qb3AoKTtcbiAgICAgIGNvbnN0IG1tbCA9IHRvcC50b01tbCgpO1xuICAgICAgY29uc3Qgc3ByZWFkID0gdG9wLmdldFByb3BlcnR5KCdzcHJlYWQnKSBhcyBzdHJpbmc7XG4gICAgICBpZiAobW1sLmlzSW5mZXJyZWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBOb2RlVXRpbC5nZXRDaGlsZHJlbihtbWwpKSB7XG4gICAgICAgICAgTWF0aHRvb2xzVXRpbC5zcHJlYWRMaW5lcyhjaGlsZCwgc3ByZWFkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgTWF0aHRvb2xzVXRpbC5zcHJlYWRMaW5lcyhtbWwsIHNwcmVhZCk7XG4gICAgICB9XG4gICAgICBwYXJzZXIuUHVzaChtbWwpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvL1xuICAgICAgLy8gIFJlYWQgdGhlIHNwcmVhZCBkaW1lbnNpb24gYW5kIHNhdmUgaXQsIHRoZW4gYmVnaW4gdGhlIGVudmlyb25tZW50LlxuICAgICAgLy9cbiAgICAgIGNvbnN0IHNwcmVhZCA9IHBhcnNlci5HZXREaW1lbihgXFxcXGJlZ2lueyR7YmVnaW4uZ2V0TmFtZSgpfX1gKTtcbiAgICAgIGJlZ2luLnNldFByb3BlcnR5KCdzcHJlYWQnLCBzcHJlYWQpO1xuICAgICAgcGFyc2VyLlB1c2goYmVnaW4pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyB0aGUgdmFyaW91cyBjYXNlcyBlbnZpcm9ubWVudHMuXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7U3RhY2tJdGVtfSBiZWdpbiAgICBUaGUgQmVnaW5JdGVtIGZvciB0aGUgZW52aXJvbm1lbnQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcGVuICAgICAgICBUaGUgb3BlbiBkZWxpbWl0ZXIgZm9yIHRoZSBtYXRyaXguXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbG9zZSAgICAgICBUaGUgY2xvc2UgZGVsaW1pdGVyIGZvciB0aGUgbWF0cml4LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3R5bGUgICAgICAgVGhlIHN0eWxlIChELCBULCBTLCBTUykgZm9yIHRoZSBjb250ZW50cyBvZiB0aGUgYXJyYXlcbiAgICogQHJldHVybiB7QXJyYXlJdGVtfSAgICAgICAgIFRoZSBBcnJheUl0ZW0gZm9yIHRoZSBlbnZpcm9ubWVudFxuICAgKi9cbiAgQ2FzZXMocGFyc2VyOiBUZXhQYXJzZXIsIGJlZ2luOiBTdGFja0l0ZW0sIG9wZW46IHN0cmluZywgY2xvc2U6IHN0cmluZywgc3R5bGU6IHN0cmluZyk6IEFycmF5SXRlbSB7XG4gICAgY29uc3QgYXJyYXkgPSBwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdhcnJheScpLnNldFByb3BlcnR5KCdjYXNlc0VudicsIGJlZ2luLmdldE5hbWUoKSkgYXMgQXJyYXlJdGVtO1xuICAgIGFycmF5LmFycmF5ZGVmID0ge1xuICAgICAgcm93c3BhY2luZzogJy4yZW0nLFxuICAgICAgY29sdW1uc3BhY2luZzogJzFlbScsXG4gICAgICBjb2x1bW5hbGlnbjogJ2xlZnQnXG4gICAgfTtcbiAgICBpZiAoc3R5bGUgPT09ICdEJykge1xuICAgICAgYXJyYXkuYXJyYXlkZWYuZGlzcGxheXN0eWxlID0gdHJ1ZTtcbiAgICB9XG4gICAgYXJyYXkuc2V0UHJvcGVydGllcyh7b3BlbiwgY2xvc2V9KTtcbiAgICBwYXJzZXIuUHVzaChiZWdpbik7XG4gICAgcmV0dXJuIGFycmF5O1xuICB9LFxuXG4gIC8qKlxuICAgKiBIYW5kbGUgXFxtYXRocmxhcCwgXFxtYXRobGxhcCwgXFxtYXRoY2xhcCwgYW5kIHRoZWlyIGNyYW1wZWQgdmVyc2lvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbWFjcm8gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHBvcyAgICAgICAgIFRoZSBwb3NpdGlvbiAobCwgYywgcikgb2YgdGhlIGxhcHBlZCBjb250ZW50XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY3JhbXBlZCAgICBUcnVlIGlmIHRoZSBzdHlsZSBzaG91bGQgYmUgY3JhbXBlZFxuICAgKi9cbiAgTWF0aExhcChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBwb3M6IHN0cmluZywgY3JhbXBlZDogYm9vbGVhbikge1xuICAgIGNvbnN0IHN0eWxlID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcnKS50cmltKCk7XG4gICAgbGV0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXN0eWxlJywgW1xuICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW3BhcnNlci5QYXJzZUFyZyhuYW1lKV0sIHtcbiAgICAgICAgd2lkdGg6IDAsIC4uLihwb3MgPT09ICdyJyA/IHt9IDoge2xzcGFjZTogKHBvcyA9PT0gJ2wnID8gJy0xd2lkdGgnIDogJy0uNXdpZHRoJyl9KVxuICAgICAgfSlcbiAgICBdLCB7J2RhdGEtY3JhbXBlZCc6IGNyYW1wZWR9KTtcbiAgICBNYXRodG9vbHNVdGlsLnNldERpc3BsYXlMZXZlbChtbWwsIHN0eWxlKTtcbiAgICBwYXJzZXIuUHVzaChwYXJzZXIuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbbW1sXSkpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcY3JhbXBlZC5cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBtYWNybyBuYW1lLlxuICAgKi9cbiAgQ3JhbXBlZChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3R5bGUgPSBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSwgJycpLnRyaW0oKTtcbiAgICBjb25zdCBhcmcgPSBwYXJzZXIuUGFyc2VBcmcobmFtZSk7XG4gICAgY29uc3QgbW1sID0gcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3R5bGUnLCBbYXJnXSwgeydkYXRhLWNyYW1wZWQnOiB0cnVlfSk7XG4gICAgTWF0aHRvb2xzVXRpbC5zZXREaXNwbGF5TGV2ZWwobW1sLCBzdHlsZSk7XG4gICAgcGFyc2VyLlB1c2gobW1sKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXGNsYXAgKGFuZCBjb3VsZCBkbyBcXGxsYXAgYW5kIFxccmxhcCwgd2hlcmUgdGhlIGNvbnRlbnRzIGFyZSB0ZXh0IG1vZGUpLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwb3MgICAgICAgICBUaGUgcG9zaXRpb24gKGwsIGMsIHIpIG9mIHRoZSBsYXBwZWQgY29udGVudFxuICAgKi9cbiAgTXRMYXAocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZywgcG9zOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb250ZW50ID0gUGFyc2VVdGlsLmludGVybmFsTWF0aChwYXJzZXIsIHBhcnNlci5HZXRBcmd1bWVudChuYW1lKSwgMCk7XG4gICAgbGV0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIGNvbnRlbnQsIHt3aWR0aDogMH0pO1xuICAgIGlmIChwb3MgIT09ICdyJykge1xuICAgICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKG1tbCwgJ2xzcGFjZScsIHBvcyA9PT0gJ2wnID8gJy0xd2lkdGgnIDogJy0uNXdpZHRoJyk7XG4gICAgfVxuICAgIHBhcnNlci5QdXNoKG1tbCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgXFxtYXRobWFrZWJveC5cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBtYWNybyBuYW1lLlxuICAgKi9cbiAgTWF0aE1ha2VCb3gocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHdpZHRoID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpO1xuICAgIGNvbnN0IHBvcyA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lLCAnYycpO1xuICAgIGNvbnN0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtwYXJzZXIuUGFyc2VBcmcobmFtZSldKTtcbiAgICBpZiAod2lkdGgpIHtcbiAgICAgIE5vZGVVdGlsLnNldEF0dHJpYnV0ZShtbWwsICd3aWR0aCcsIHdpZHRoKTtcbiAgICB9XG4gICAgY29uc3QgYWxpZ24gPSBsb29rdXAocG9zLCB7YzogJ2NlbnRlcicsIHI6ICdyaWdodCd9LCAnJyk7XG4gICAgaWYgKGFsaWduKSB7XG4gICAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobW1sLCAnZGF0YS1hbGlnbicsIGFsaWduKTtcbiAgICB9XG4gICAgcGFyc2VyLlB1c2gobW1sKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXG1hdGhtYm94LlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqL1xuICBNYXRoTUJveChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgcGFyc2VyLlB1c2gocGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcm93JywgW3BhcnNlci5QYXJzZUFyZyhuYW1lKV0pKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXHVuZGVyYmFja2V0IGFuZCBcXG92ZXJicmFja2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqL1xuICBVbmRlck92ZXJCcmFja2V0KHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0aGlja25lc3MgPSBsZW5ndGgyZW0ocGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICcuMWVtJyksIC4xKTtcbiAgICBjb25zdCBoZWlnaHQgPSBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSwgJy4yZW0nKTtcbiAgICBjb25zdCBhcmcgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgY29uc3QgW3BvcywgYWNjZW50LCBib3JkZXJdID0gKFxuICAgICAgbmFtZS5jaGFyQXQoMSkgPT09ICdvJyA/XG4gICAgICAgIFsnb3ZlcicsICdhY2NlbnQnLCAnYm90dG9tJ10gOlxuICAgICAgICBbJ3VuZGVyJywgJ2FjY2VudHVuZGVyJywgJ3RvcCddXG4gICAgKTtcbiAgICBjb25zdCB0ID0gZW0odGhpY2tuZXNzKTtcbiAgICBjb25zdCBiYXNlID0gbmV3IFRleFBhcnNlcihhcmcsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgICBjb25zdCBjb3B5ID0gbmV3IFRleFBhcnNlcihhcmcsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgICBjb25zdCBzY3JpcHQgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbXG4gICAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21waGFudG9tJywgW2NvcHldKVxuICAgIF0sIHtcbiAgICAgIHN0eWxlOiBgYm9yZGVyOiAke3R9IHNvbGlkOyBib3JkZXItJHtib3JkZXJ9OiBub25lYCxcbiAgICAgIGhlaWdodDogaGVpZ2h0LFxuICAgICAgZGVwdGg6IDBcbiAgICB9KTtcbiAgICBjb25zdCBub2RlID0gUGFyc2VVdGlsLnVuZGVyT3ZlcihwYXJzZXIsIGJhc2UsIHNjcmlwdCwgcG9zLCB0cnVlKTtcbiAgICBjb25zdCBtdW5kZXJvdmVyID0gTm9kZVV0aWwuZ2V0Q2hpbGRBdChOb2RlVXRpbC5nZXRDaGlsZEF0KG5vZGUsIDApLCAwKTsgIC8vIFRlWEF0b20uaW5mZXJyZWRNcm93IGNoaWxkIDBcbiAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobXVuZGVyb3ZlciwgYWNjZW50LCB0cnVlKTtcbiAgICBwYXJzZXIuUHVzaChub2RlKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXEFib3hlZC5cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBtYWNybyBuYW1lLlxuICAgKi9cbiAgQWJveGVkKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICAvL1xuICAgIC8vICBDaGVjayB0aGF0IHRoZSB0b3AgaXRlbSBpcyBhbiBhbGlnbm1lbnQsIGFuZCB0aGF0IHdlIGFyZSBvbiBhbiBldmVuIG51bWJlciBvZiBjZWxsc1xuICAgIC8vICAob3RoZXdpc2UgYWRkIG9uZSB0byBtYWtlIGl0IGV2ZW4pLlxuICAgIC8vXG4gICAgY29uc3QgdG9wID0gTWF0aHRvb2xzVXRpbC5jaGVja0FsaWdubWVudChwYXJzZXIsIG5hbWUpO1xuICAgIGlmICh0b3Aucm93Lmxlbmd0aCAlIDIgPT09IDEpIHtcbiAgICAgIHRvcC5yb3cucHVzaChwYXJzZXIuY3JlYXRlKCdub2RlJywgJ210ZCcsIFtdKSk7XG4gICAgfVxuICAgIC8vXG4gICAgLy8gIEdldCB0aGUgYXJndW1lbnQgYW5kIHRoZSByZXN0IG9mIHRoZSBUZVggc3RyaW5nLlxuICAgIC8vXG4gICAgY29uc3QgYXJnID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICAgIGNvbnN0IHJlc3QgPSBwYXJzZXIuc3RyaW5nLnN1YnN0cihwYXJzZXIuaSk7XG4gICAgLy9cbiAgICAvLyAgUHV0IHRoZSBhcmd1bWVudCBiYWNrLCBmb2xsb3dlZCBieSBcIiYmXCIsIGFuZCBhIG1hcmtlciB0aGF0IHdlIGxvb2sgZm9yIGJlbG93LlxuICAgIC8vXG4gICAgcGFyc2VyLnN0cmluZyA9IGFyZyArICcmJlxcXFxlbmRBYm94ZWQnO1xuICAgIHBhcnNlci5pID0gMDtcbiAgICAvL1xuICAgIC8vICBHZXQgdGhlIHR3byBwYXJ0cyBzZXBhcmF0ZWQgYnkgYW1wZXJzYW5kcywgYW5kIGlnbm9yZSB0aGUgcmVzdC5cbiAgICAvL1xuICAgIGNvbnN0IGxlZnQgPSBwYXJzZXIuR2V0VXBUbyhuYW1lLCAnJicpO1xuICAgIGNvbnN0IHJpZ2h0ID0gcGFyc2VyLkdldFVwVG8obmFtZSwgJyYnKTtcbiAgICBwYXJzZXIuR2V0VXBUbyhuYW1lLCAnXFxcXGVuZEFib3hlZCcpO1xuICAgIC8vXG4gICAgLy8gIEluc2VydCB0aGUgVGVYIG5lZWRlZCBmb3IgdGhlIGJveGVkIGNvbnRlbnRcbiAgICAvL1xuICAgIGNvbnN0IHRleCA9IFBhcnNlVXRpbC5zdWJzdGl0dXRlQXJncyhcbiAgICAgIHBhcnNlciwgW2xlZnQsIHJpZ2h0XSwgJ1xcXFxybGFwe1xcXFxib3hlZHsjMXt9IzJ9fVxcXFxrZXJuLjI2N2VtXFxcXHBoYW50b217IzF9JlxcXFxwaGFudG9te3t9IzJ9XFxcXGtlcm4uMjY3ZW0nXG4gICAgKTtcbiAgICBwYXJzZXIuc3RyaW5nID0gdGV4ICsgcmVzdDtcbiAgICBwYXJzZXIuaSA9IDA7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgXFxBcnJvd0JldHdlZW5MaW5lcy5cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBtYWNybyBuYW1lLlxuICAgKi9cbiAgQXJyb3dCZXR3ZWVuTGluZXMocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRvcCA9IE1hdGh0b29sc1V0aWwuY2hlY2tBbGlnbm1lbnQocGFyc2VyLCBuYW1lKTtcbiAgICBpZiAodG9wLlNpemUoKSB8fCB0b3Aucm93Lmxlbmd0aCkge1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdCZXR3ZWVuTGluZXMnLCAnJTEgbXVzdCBiZSBvbiBhIHJvdyBieSBpdHNlbGYnLCBuYW1lKTtcbiAgICB9XG4gICAgY29uc3Qgc3RhciA9IHBhcnNlci5HZXRTdGFyKCk7XG4gICAgY29uc3Qgc3ltYm9sID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUsICdcXFxcVXBkb3duYXJyb3cnKTtcbiAgICBpZiAoc3Rhcikge1xuICAgICAgdG9wLkVuZEVudHJ5KCk7XG4gICAgICB0b3AuRW5kRW50cnkoKTtcbiAgICB9XG4gICAgY29uc3QgdGV4ID0gKHN0YXIgPyAnXFxcXHF1YWQnICsgc3ltYm9sIDogc3ltYm9sICsgJ1xcXFxxdWFkJyk7XG4gICAgY29uc3QgbW1sID0gbmV3IFRleFBhcnNlcih0ZXgsIHBhcnNlci5zdGFjay5lbnYsIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgICBwYXJzZXIuUHVzaChtbWwpO1xuICAgIHRvcC5FbmRFbnRyeSgpO1xuICAgIHRvcC5FbmRSb3coKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXHZkb3Rzd2l0aGluLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqL1xuICBWRG90c1dpdGhpbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdG9wID0gcGFyc2VyLnN0YWNrLlRvcCgpIGFzIEVxbkFycmF5SXRlbTtcbiAgICBjb25zdCBpc0ZsdXNoID0gKHRvcC5nZXRQcm9wZXJ0eSgnZmx1c2hzcGFjZWFib3ZlJykgPT09IHRvcC50YWJsZS5sZW5ndGgpO1xuICAgIGNvbnN0IGFyZyA9ICdcXFxcbW1sVG9rZW57bWl9e30nICsgcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpICsgJ1xcXFxtbWxUb2tlbnttaX17fSc7XG4gICAgY29uc3QgYmFzZSA9IG5ldyBUZXhQYXJzZXIoYXJnLCBwYXJzZXIuc3RhY2suZW52LCBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCk7XG4gICAgbGV0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtcbiAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtcbiAgICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtbycsIFtcbiAgICAgICAgICBwYXJzZXIuY3JlYXRlKCd0ZXh0JywgJ1xcdTIyRUUnKVxuICAgICAgICBdKVxuICAgICAgXSwge1xuICAgICAgICB3aWR0aDogMCxcbiAgICAgICAgbHNwYWNlOiAnLS41d2lkdGgnLCAuLi4oaXNGbHVzaCA/IHtoZWlnaHQ6ICctLjZlbScsIHZvZmZzZXQ6ICctLjE4ZW0nfSA6IHt9KVxuICAgICAgfSksXG4gICAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21waGFudG9tJywgW2Jhc2VdKVxuICAgIF0sIHtcbiAgICAgIGxzcGFjZTogJy41d2lkdGgnXG4gICAgfSk7XG4gICAgcGFyc2VyLlB1c2gobW1sKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXHNob3J0dmRvdHN3aXRoaW4uXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbWFjcm8gbmFtZS5cbiAgICovXG4gIFNob3J0VkRvdHNXaXRoaW4ocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCB0b3AgPSBwYXJzZXIuc3RhY2suVG9wKCkgYXMgRXFuQXJyYXlJdGVtO1xuICAgIGNvbnN0IHN0YXIgPSBwYXJzZXIuR2V0U3RhcigpO1xuICAgIE1hdGh0b29sc01ldGhvZHMuRmx1c2hTcGFjZUFib3ZlKHBhcnNlciwgJ1xcXFxNVEZsdXNoU3BhY2VBYm92ZScpO1xuICAgICFzdGFyICYmIHRvcC5FbmRFbnRyeSgpO1xuICAgIE1hdGh0b29sc01ldGhvZHMuVkRvdHNXaXRoaW4ocGFyc2VyLCAnXFxcXHZkb3Rzd2l0aGluJyk7XG4gICAgc3RhciAmJiB0b3AuRW5kRW50cnkoKTtcbiAgICBNYXRodG9vbHNNZXRob2RzLkZsdXNoU3BhY2VCZWxvdyhwYXJzZXIsICdcXFxcTVRGbHVzaFNwYWNlQmVsb3cnKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXE1URmx1c2hTcGFjZUFib3ZlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqL1xuICBGbHVzaFNwYWNlQWJvdmUocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHRvcCA9IE1hdGh0b29sc1V0aWwuY2hlY2tBbGlnbm1lbnQocGFyc2VyLCBuYW1lKTtcbiAgICB0b3Auc2V0UHJvcGVydHkoJ2ZsdXNoc3BhY2VhYm92ZScsIHRvcC50YWJsZS5sZW5ndGgpOyAgLy8gbWFya2VyIHNvIFxcdmRvdHN3aXRoaW4gY2FuIHNob3J0ZW4gaXRzIGhlaWdodFxuICAgIHRvcC5hZGRSb3dTcGFjaW5nKCctJyArIHBhcnNlci5vcHRpb25zLm1hdGh0b29sc1snc2hvcnR2ZG90c2FkanVzdGFib3ZlJ10pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcTVRGbHVzaFNwYWNlQmVsb3cuXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbWFjcm8gbmFtZS5cbiAgICovXG4gIEZsdXNoU3BhY2VCZWxvdyhwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdG9wID0gTWF0aHRvb2xzVXRpbC5jaGVja0FsaWdubWVudChwYXJzZXIsIG5hbWUpO1xuICAgIHRvcC5TaXplKCkgJiYgdG9wLkVuZEVudHJ5KCk7XG4gICAgdG9wLkVuZFJvdygpO1xuICAgIHRvcC5hZGRSb3dTcGFjaW5nKCctJyArIHBhcnNlci5vcHRpb25zLm1hdGh0b29sc1snc2hvcnR2ZG90c2FkanVzdGJlbG93J10pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIGEgcGFpcmVkIGRlbGltaXRlciAoZS5nLiwgZnJvbSBcXERlY2xhcmVQYWlyZWREZWxpbWl0ZXIpLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcGVuICAgICAgICBUaGUgb3BlbiBkZWxpbWl0ZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjbG9zZSAgICAgICBUaGUgY2xvc2UgZGVsaW1pdGVyLlxuICAgKiBAcGFyYW0ge3N0cmluZz99IGJvZHkgICAgICAgVGhlIGJvZHkgYmV0d2VlZW4gdGhlIGRlbGltaXRlcnMuXG4gICAqIEBwYXJhbSB7bnVtYmVyP30gbiAgICAgICAgICBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byB1c2UgZm9yIHRoZSBib2R5LlxuICAgKiBAcGFyYW0ge3N0cmluZz99IHByZSAgICAgICAgVGhlIFRlWCB0byBnbyBiZWZvcmUgdGhlIG9wZW4gZGVsaW1pdGVyLlxuICAgKiBAcGFyYW0ge3N0cmluZz99IHBvc3QgICAgICAgVGhlIFRlWCB0byBnbyBhZnRlciB0aGUgY2xvc2UgZGVsaW1pdGVyLlxuICAgKi9cbiAgUGFpcmVkRGVsaW1pdGVycyhwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgIG9wZW46IHN0cmluZywgY2xvc2U6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICBib2R5OiBzdHJpbmcgPSAnIzEnLCBuOiBudW1iZXIgPSAxLFxuICAgICAgICAgICAgICAgICAgIHByZTogc3RyaW5nID0gJycsICBwb3N0OiBzdHJpbmcgPSAnJykge1xuICAgIGNvbnN0IHN0YXIgPSBwYXJzZXIuR2V0U3RhcigpO1xuICAgIGNvbnN0IHNpemUgPSAoc3RhciA/ICcnIDogcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpKTtcbiAgICBjb25zdCBbbGVmdCwgcmlnaHRdID0gKHN0YXIgPyBbJ1xcXFxsZWZ0JywgJ1xcXFxyaWdodCddIDogc2l6ZSA/IFtzaXplICsgJ2wnICwgc2l6ZSArICdyJ10gOiBbJycsICcnXSk7XG4gICAgY29uc3QgZGVsaW0gPSAoc3RhciA/ICdcXFxcbWlkZGxlJyA6IHNpemUgfHwgJycpO1xuICAgIGlmIChuKSB7XG4gICAgICBjb25zdCBhcmdzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChsZXQgaSA9IGFyZ3MubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgIGFyZ3MucHVzaChwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICAgICAgfVxuICAgICAgcHJlICA9IFBhcnNlVXRpbC5zdWJzdGl0dXRlQXJncyhwYXJzZXIsIGFyZ3MsIHByZSk7XG4gICAgICBib2R5ID0gUGFyc2VVdGlsLnN1YnN0aXR1dGVBcmdzKHBhcnNlciwgYXJncywgYm9keSk7XG4gICAgICBwb3N0ID0gUGFyc2VVdGlsLnN1YnN0aXR1dGVBcmdzKHBhcnNlciwgYXJncywgcG9zdCk7XG4gICAgfVxuICAgIGJvZHkgPSBib2R5LnJlcGxhY2UoL1xcXFxkZWxpbXNpemUvZywgZGVsaW0pO1xuICAgIHBhcnNlci5zdHJpbmcgPSBbcHJlLCBsZWZ0LCBvcGVuLCBib2R5LCByaWdodCwgY2xvc2UsIHBvc3QsIHBhcnNlci5zdHJpbmcuc3Vic3RyKHBhcnNlci5pKV1cbiAgICAgIC5yZWR1Y2UoKHMsIHBhcnQpID0+IFBhcnNlVXRpbC5hZGRBcmdzKHBhcnNlciwgcywgcGFydCksICcnKTtcbiAgICBwYXJzZXIuaSA9IDA7XG4gICAgUGFyc2VVdGlsLmNoZWNrTWF4TWFjcm9zKHBhcnNlcik7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgXFxEZWNsYXJlUGFpcmVkRGVsaW1pdGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqL1xuICBEZWNsYXJlUGFpcmVkRGVsaW1pdGVyKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjcyA9IE5ld2NvbW1hbmRVdGlsLkdldENzTmFtZUFyZ3VtZW50KHBhcnNlciwgbmFtZSk7XG4gICAgY29uc3Qgb3BlbiA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBjb25zdCBjbG9zZSA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBNYXRodG9vbHNVdGlsLmFkZFBhaXJlZERlbGltcyhwYXJzZXIuY29uZmlndXJhdGlvbiwgY3MsIFtvcGVuLCBjbG9zZV0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcRGVjbGFyZVBhaXJlZERlbGltaXRlclguXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbWFjcm8gbmFtZS5cbiAgICovXG4gIERlY2xhcmVQYWlyZWREZWxpbWl0ZXJYKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjcyA9IE5ld2NvbW1hbmRVdGlsLkdldENzTmFtZUFyZ3VtZW50KHBhcnNlciwgbmFtZSk7XG4gICAgY29uc3QgbiA9IE5ld2NvbW1hbmRVdGlsLkdldEFyZ0NvdW50KHBhcnNlciwgbmFtZSk7XG4gICAgY29uc3Qgb3BlbiA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBjb25zdCBjbG9zZSA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBjb25zdCBib2R5ID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICAgIE1hdGh0b29sc1V0aWwuYWRkUGFpcmVkRGVsaW1zKHBhcnNlci5jb25maWd1cmF0aW9uLCBjcywgW29wZW4sIGNsb3NlLCBib2R5LCBuXSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgXFxEZWNsYXJlUGFpcmVkRGVsaW1pdGVyWFBQLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqL1xuICBEZWNsYXJlUGFpcmVkRGVsaW1pdGVyWFBQKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjcyA9IE5ld2NvbW1hbmRVdGlsLkdldENzTmFtZUFyZ3VtZW50KHBhcnNlciwgbmFtZSk7XG4gICAgY29uc3QgbiA9IE5ld2NvbW1hbmRVdGlsLkdldEFyZ0NvdW50KHBhcnNlciwgbmFtZSk7XG4gICAgY29uc3QgcHJlID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICAgIGNvbnN0IG9wZW4gPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgY29uc3QgY2xvc2UgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgY29uc3QgcG9zdCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBjb25zdCBib2R5ID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICAgIE1hdGh0b29sc1V0aWwuYWRkUGFpcmVkRGVsaW1zKHBhcnNlci5jb25maWd1cmF0aW9uLCBjcywgW29wZW4sIGNsb3NlLCBib2R5LCBuLCBwcmUsIHBvc3RdKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXGNlbnRlcmVkY29sb24sIFxcb3JkaW5hcnljb2xvbiwgXFxNVFRoaW5Db2xvbi5cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBtYWNybyBuYW1lLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGNlbnRlciAgICAgVHJ1ZSBpZiBjb2xvbiBzaG91bGQgYmUgY2VudGVyZWRcbiAgICogQHBhcmFtIHtib29sZWFufSBmb3JjZSAgICAgIFRydWUgbWVuYXMgYWx3YXlzIGNlbnRlciAoZG9uJ3QgdXNlIGNlbnRlcmNvbG9uIG9wdGlvbikuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdGhpbiAgICAgICBUcnVlIGlmIHRoaXMgaXMgYSB0aGluIGNvbG9yIChmb3IgXFxjb2xvbmVxcSwgZXRjKS5cbiAgICovXG4gIENlbnRlckNvbG9uKHBhcnNlcjogVGV4UGFyc2VyLCBfbmFtZTogc3RyaW5nLCBjZW50ZXI6IGJvb2xlYW4sIGZvcmNlOiBib29sZWFuID0gZmFsc2UsIHRoaW46IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBwYXJzZXIub3B0aW9ucy5tYXRodG9vbHM7XG4gICAgbGV0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywge30sICc6Jyk7XG4gICAgaWYgKGNlbnRlciAmJiAob3B0aW9uc1snY2VudGVyY29sb24nXSB8fCBmb3JjZSkpIHtcbiAgICAgIGNvbnN0IGR5ID0gb3B0aW9uc1snY2VudGVyY29sb24tb2Zmc2V0J107XG4gICAgICBtbWwgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wYWRkZWQnLCBbbW1sXSwge1xuICAgICAgICB2b2Zmc2V0OiBkeSwgaGVpZ2h0OiBgKyR7ZHl9YCwgZGVwdGg6IGAtJHtkeX1gLFxuICAgICAgICAgIC4uLih0aGluID8ge3dpZHRoOiBvcHRpb25zWyd0aGluY29sb24tZHcnXSwgbHNwYWNlOiBvcHRpb25zWyd0aGluY29sb24tZHgnXX0gOiB7fSlcbiAgICAgIH0pO1xuICAgIH1cbiAgICBwYXJzZXIuUHVzaChtbWwpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcY29sb25lcXEgYW5kIHJlbGF0ZWQgbWFjcm9zLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXggICAgICAgICBUaGUgdGV4IHN0cmluZyB0byB1c2UgKGlmIG5vdCB1c2luZyB1bmljb2RlIHZlcnNpb25zIG9yIGlmIHRoZXJlIGlzbid0IG9uZSkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1bmljb2RlICAgICBUaGUgdW5pY29kZSBjaGFyYWN0ZXIgKGlmIHRoZXJlIGlzIG9uZSkuXG4gICAqL1xuICBSZWxhdGlvbihwYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZywgdGV4OiBzdHJpbmcsIHVuaWNvZGU/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcHRpb25zID0gcGFyc2VyLm9wdGlvbnMubWF0aHRvb2xzO1xuICAgIGlmIChvcHRpb25zWyd1c2UtdW5pY29kZSddICYmIHVuaWNvZGUpIHtcbiAgICAgIHBhcnNlci5QdXNoKHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywge3RleENsYXNzOiBURVhDTEFTUy5SRUx9LCB1bmljb2RlKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRleCA9ICdcXFxcbWF0aHJlbHsnICsgdGV4LnJlcGxhY2UoLzovZywgJ1xcXFxNVFRoaW5Db2xvbicpLnJlcGxhY2UoLy0vZywgJ1xcXFxtYXRocmVsey19JykgKyAnfSc7XG4gICAgICBwYXJzZXIuc3RyaW5nID0gUGFyc2VVdGlsLmFkZEFyZ3MocGFyc2VyLCB0ZXgsIHBhcnNlci5zdHJpbmcuc3Vic3RyKHBhcnNlci5pKSk7XG4gICAgICBwYXJzZXIuaSA9IDA7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcbmRvd25hcnJvdyBhbmQgXFxudXBhcnJvdyB2aWEgYSB0ZXJyaWJsZSBoYWNrICh2aXN1YWwgb25seSwgbm8gY2hhbmNlIG9mIHRoaXMgd29ya2luZyB3aXRoIFNSRSkuXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbWFjcm8gbmFtZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGMgICAgICAgICAgIFRoZSBiYXNlIGFycm93IGZvciB0aGUgc2xhc2hlZCB2ZXJzaW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkeSAgICAgICAgICBBIHZlcnRpY2FsIG9mZnNldCBmb3IgdGhlIHNsYXNoXG4gICAqL1xuICBOQXJyb3cocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcsIGM6IHN0cmluZywgZHk6IHN0cmluZykge1xuICAgIHBhcnNlci5QdXNoKFxuICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdUZVhBdG9tJywgW1xuICAgICAgICBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtdGV4dCcsIHt9LCBjKSxcbiAgICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW1xuICAgICAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFtcbiAgICAgICAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbWVuY2xvc2UnLCBbXG4gICAgICAgICAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXNwYWNlJywgW10sIHtoZWlnaHQ6ICcuMmVtJywgZGVwdGg6IDAsIHdpZHRoOiAnLjRlbSd9KVxuICAgICAgICAgICAgXSwge25vdGF0aW9uOiAndXBkaWFnb25hbHN0cmlrZScsICdkYXRhLXRoaWNrbmVzcyc6ICcuMDVlbScsICdkYXRhLXBhZGRpbmcnOiAwfSlcbiAgICAgICAgICBdLCB7d2lkdGg6IDAsIGxzcGFjZTogJy0uNXdpZHRoJywgdm9mZnNldDogZHl9KSxcbiAgICAgICAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21waGFudG9tJywgW1xuICAgICAgICAgICAgcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbXRleHQnLCB7fSwgYylcbiAgICAgICAgICBdKVxuICAgICAgICBdLCB7d2lkdGg6IDAsIGxzcGFjZTogJy0uNXdpZHRoJ30pXG4gICAgICBdLCB7dGV4Q2xhc3M6IFRFWENMQVNTLlJFTH0pXG4gICAgKTtcbiAgfSxcblxuICAvKipcbiAgICogSW1wbGVtZW50cyBcXHNwbGl0ZnJhYyBhbmQgXFxzcGxpdGRmcmFjLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzcGxheSAgICBUcnVlIGlmIFxcc3BsaXRkZnJhYy5cbiAgICovXG4gIFNwbGl0RnJhYyhwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBkaXNwbGF5OiBib29sZWFuKSB7XG4gICAgY29uc3QgbnVtID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICAgIGNvbnN0IGRlbiA9IHBhcnNlci5QYXJzZUFyZyhuYW1lKTtcbiAgICBwYXJzZXIuUHVzaChcbiAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXN0eWxlJywgW1xuICAgICAgICBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21mcmFjJywgW1xuICAgICAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXN0eWxlJywgW1xuICAgICAgICAgICAgbnVtLFxuICAgICAgICAgICAgcGFyc2VyLmNyZWF0ZSgndG9rZW4nLCAnbWknKSxcbiAgICAgICAgICAgIHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21zcGFjZScsIHt3aWR0aDogJzFlbSd9KSAvLyBubyBwYXJhbWV0ZXIgZm9yIHRoaXMgaW4gbWF0aHRvb2xzLiAgU2hvdWxkIHdlIGFkZCBvbmU/XG4gICAgICAgICAgXSwge3NjcmlwdGxldmVsOiAwfSksXG4gICAgICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtc3R5bGUnLCBbXG4gICAgICAgICAgICBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtc3BhY2UnLCB7d2lkdGg6ICcxZW0nfSksXG4gICAgICAgICAgICBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtaScpLFxuICAgICAgICAgICAgZGVuXG4gICAgICAgICAgXSwge3NjcmlwdGxldmVsOiAwfSlcbiAgICAgICAgXSwge2xpbmV0aGlja25lc3M6IDAsIG51bWFsaWduOiAnbGVmdCcsIGRlbm9tYWxpZ246ICdyaWdodCd9KVxuICAgICAgXSwge2Rpc3BsYXlzdHlsZTogZGlzcGxheSwgc2NyaXB0bGV2ZWw6IDB9KVxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgXFx4bWF0aHN0cnV0LlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqL1xuICBYTWF0aFN0cnV0KHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBsZXQgZGQgPSBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSk7XG4gICAgbGV0IGRoID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICAgIGRoID0gTWF0aHRvb2xzVXRpbC5wbHVzT3JNaW51cyhuYW1lLCBkaCk7XG4gICAgZGQgPSBNYXRodG9vbHNVdGlsLnBsdXNPck1pbnVzKG5hbWUsIGRkIHx8IGRoKTtcbiAgICBwYXJzZXIuUHVzaChcbiAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnVGVYQXRvbScsIFtcbiAgICAgICAgcGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtcGFkZGVkJywgW1xuICAgICAgICAgIHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBoYW50b20nLCBbXG4gICAgICAgICAgICBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtbycsIHtzdHJldGNoeTogZmFsc2V9LCAnKCcpXG4gICAgICAgICAgXSlcbiAgICAgICAgXSwge3dpZHRoOiAwLCBoZWlnaHQ6IGRoICsgJ2hlaWdodCcsIGRlcHRoOiBkZCArICdkZXB0aCd9KVxuICAgICAgXSwge3RleENsYXNzOiBURVhDTEFTUy5PUkR9KVxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEltcGxlbWVudHMgXFxwcmVzY3JpcHQuXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbWFjcm8gbmFtZS5cbiAgICovXG4gIFByZXNjcmlwdChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3Qgc3VwID0gTWF0aHRvb2xzVXRpbC5nZXRTY3JpcHQocGFyc2VyLCBuYW1lLCAnc3VwJyk7XG4gICAgY29uc3Qgc3ViID0gTWF0aHRvb2xzVXRpbC5nZXRTY3JpcHQocGFyc2VyLCBuYW1lLCAnc3ViJyk7XG4gICAgY29uc3QgYmFzZSA9IE1hdGh0b29sc1V0aWwuZ2V0U2NyaXB0KHBhcnNlciwgbmFtZSwgJ2FyZycpO1xuICAgIGlmIChOb2RlVXRpbC5pc1R5cGUoc3VwLCAnbm9uZScpICYmIE5vZGVVdGlsLmlzVHlwZShzdWIsICdub25lJykpIHtcbiAgICAgIHBhcnNlci5QdXNoKGJhc2UpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBtbWwgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21tdWx0aXNjcmlwdHMnLCBbYmFzZV0pO1xuICAgIE5vZGVVdGlsLmdldENoaWxkcmVuKG1tbCkucHVzaChudWxsLCBudWxsKTtcbiAgICBOb2RlVXRpbC5hcHBlbmRDaGlsZHJlbihtbWwsIFtwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21wcmVzY3JpcHRzJyksIHN1Yiwgc3VwXSk7XG4gICAgbW1sLnNldFByb3BlcnR5KCdmaXhQcmVzY3JpcHQnLCB0cnVlKTtcbiAgICBwYXJzZXIuUHVzaChtbWwpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcbmV3dGFnZm9ybSBhbmQgXFxyZW5ld3RhZ2Zvcm0uXG4gICAqXG4gICAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgICBUaGUgY2FsbGluZyBwYXJzZXIuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICBUaGUgbWFjcm8gbmFtZS5cbiAgICogQHBhcmFtIHtib29sZWFuPX0gcmVuZXcgICAgIFRydWUgaWYgXFxyZW5ld3RhZ2Zvcm0uXG4gICAqL1xuICBOZXdUYWdGb3JtKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsIHJlbmV3OiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCB0YWdzID0gcGFyc2VyLnRhZ3MgYXMgTWF0aHRvb2xzVGFncztcbiAgICBpZiAoISgnbXRGb3JtYXRzJyBpbiB0YWdzKSkge1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdUYWdzTm90TVQnLCAnJTEgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGFtcyBvciBtYXRodG9vbHMgdGFncycsIG5hbWUpO1xuICAgIH1cbiAgICBjb25zdCBpZCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKS50cmltKCk7XG4gICAgaWYgKCFpZCkge1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdJbnZhbGlkVGFnRm9ybUlEJywgJ1RhZyBmb3JtIG5hbWUgY2FuXFwndCBiZSBlbXB0eScpO1xuICAgIH1cbiAgICBjb25zdCBmb3JtYXQgPSBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSwgJycpO1xuICAgIGNvbnN0IGxlZnQgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgY29uc3QgcmlnaHQgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgaWYgKCFyZW5ldyAmJiB0YWdzLm10Rm9ybWF0cy5oYXMoaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0R1cGxpY2F0ZVRhZ0Zvcm0nLCAnRHVwbGljYXRlIHRhZyBmb3JtOiAlMScsIGlkKTtcbiAgICB9XG4gICAgdGFncy5tdEZvcm1hdHMuc2V0KGlkLCBbbGVmdCwgcmlnaHQsIGZvcm1hdF0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcdXNldGFnZm9ybS5cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBtYWNybyBuYW1lLlxuICAgKi9cbiAgVXNlVGFnRm9ybShwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgdGFncyA9IHBhcnNlci50YWdzIGFzIE1hdGh0b29sc1RhZ3M7XG4gICAgaWYgKCEoJ210Rm9ybWF0cycgaW4gdGFncykpIHtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignVGFnc05vdE1UJywgJyUxIGNhbiBvbmx5IGJlIHVzZWQgd2l0aCBhbXMgb3IgbWF0aHRvb2xzIHRhZ3MnLCBuYW1lKTtcbiAgICB9XG4gICAgY29uc3QgaWQgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkudHJpbSgpO1xuICAgIGlmICghaWQpIHtcbiAgICAgIHRhZ3MubXRDdXJyZW50ID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCF0YWdzLm10Rm9ybWF0cy5oYXMoaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ1VuZGVmaW5lZFRhZ0Zvcm0nLCAnVW5kZWZpbmVkIHRhZyBmb3JtOiAlMScsIGlkKTtcbiAgICB9XG4gICAgdGFncy5tdEN1cnJlbnQgPSB0YWdzLm10Rm9ybWF0cy5nZXQoaWQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcbWF0aHRvb2xzc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUuXG4gICAqL1xuICBTZXRPcHRpb25zKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBvcHRpb25zID0gcGFyc2VyLm9wdGlvbnMubWF0aHRvb2xzO1xuICAgIGlmICghb3B0aW9uc1snYWxsb3ctbWF0aHRvb2xzc2V0J10pIHtcbiAgICAgIHRocm93IG5ldyBUZXhFcnJvcignRm9yYmlkZGVuTWF0aHRvb2xzU2V0JywgJyUxIGlzIGRpc2FibGVkJywgbmFtZSk7XG4gICAgfVxuICAgIGNvbnN0IGFsbG93ZWQgPSB7fSBhcyB7W2lkOiBzdHJpbmddOiBudW1iZXJ9O1xuICAgIE9iamVjdC5rZXlzKG9wdGlvbnMpLmZvckVhY2goaWQgPT4ge1xuICAgICAgaWYgKGlkICE9PSAncGFyaWVkRGVsaW1pdGVycycgJiYgaWQgIT09ICd0YWdmb3JtcycgJiYgaWQgIT09ICdhbGxvdy1tYXRodG9vbHNzZXQnKSB7XG4gICAgICAgIGFsbG93ZWRbaWRdID0gMTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBhcmdzID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICAgIGNvbnN0IGtleXMgPSBQYXJzZVV0aWwua2V5dmFsT3B0aW9ucyhhcmdzLCBhbGxvd2VkLCB0cnVlKTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKGtleXMpKSB7XG4gICAgICBvcHRpb25zW2lkXSA9IGtleXNbaWRdO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVXNlIHRoZSBCYXNlIG9yIEFNUyBtZXRob2RzIGZvciB0aGVzZVxuICAgKi9cbiAgQXJyYXk6ICBCYXNlTWV0aG9kcy5BcnJheSxcbiAgTWFjcm86ICBCYXNlTWV0aG9kcy5NYWNybyxcbiAgeEFycm93OiAgICAgIEFtc01ldGhvZHMueEFycm93LFxuICBIYW5kbGVSZWY6ICAgQW1zTWV0aG9kcy5IYW5kbGVSZWYsXG4gIEFtc0VxbkFycmF5OiBBbXNNZXRob2RzLkFtc0VxbkFycmF5LFxuICBNYWNyb1dpdGhUZW1wbGF0ZTogTmV3Y29tbWFuZE1ldGhvZHMuTWFjcm9XaXRoVGVtcGxhdGUsXG5cbn07XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMiBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICAgIE1hY3JvIGFuZCBlbnZpcm9ubWVudCBtYXBwaW5ncyBmb3IgdGhlIG1hdGh0b29scyBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgUC4gQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQgUGFyc2VNZXRob2RzIGZyb20gJy4uL1BhcnNlTWV0aG9kcy5qcyc7XG5pbXBvcnQge0NvbW1hbmRNYXAsIEVudmlyb25tZW50TWFwLCBEZWxpbWl0ZXJNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQge1RleENvbnN0YW50fSBmcm9tICcuLi9UZXhDb25zdGFudHMuanMnO1xuXG5pbXBvcnQge01hdGh0b29sc01ldGhvZHN9IGZyb20gJy4vTWF0aHRvb2xzTWV0aG9kcy5qcyc7XG5cbi8vXG4vLyAgTWF0aHRvb2xzIG1hY3JvcyB0aGF0IGFyZSBub3QgaW1wbGVtZW50ZWQ6XG4vL1xuLy8gICAgXFxzbWFzaG9wZXJhdG9yW1x1MzAwOHBvc1x1MzAwOV17XHUzMDA4b3BlcmF0b3Igd2l0aCBsaW1pdHNcdTMwMDl9XG4vLyAgICBcXFN3YXBBYm92ZURpc3BsYXlTa2lwXG4vLyAgICBcXG5vZXFyZWZ7XHUzMDA4bGFiZWwsbGFiZWwsLiAuIC4gXHUzMDA5fVxuLy8gICAgXFxpbnRlcnRleHR7XHUzMDA4dGV4dCBcdTMwMDl9XG4vLyAgICBcXHNob3J0aW50ZXJ0ZXh0e1x1MzAwOHRleHQgXHUzMDA5fVxuLy8gICAgXFxyZURlY2xhcmVQYWlyZWREZWxpbWl0ZXJJbm5lcldyYXBwZXJ7XHUzMDA4bWFjcm8gbmFtZVx1MzAwOX17XHUzMDA4c3RhciBvciBub3N0YXJub25zY2FsZWQgb3Igbm9zdGFyc2NhbGVkXHUzMDA5fXtcdTMwMDhjb2RlXHUzMDA5fVxuLy8gICAgXFxEZWNsYXJlTWF0aFNpemVze1x1MzAwOGRpbWVuXHUzMDA5fXtcdTMwMDhkaW1lblx1MzAwOX17XHUzMDA4ZGltZW5cdTMwMDl9e1x1MzAwOGRpbWVuXHUzMDA5fVxuLy8gICAgXFxuZXdnYXRoZXJlZHtcdTMwMDhuYW1lXHUzMDA5fXtcdTMwMDhwcmVfbGluZVx1MzAwOX17XHUzMDA4cG9zdF9saW5lXHUzMDA5fXtcdTMwMDhhZnRlclx1MzAwOX1cbi8vICAgIFxccmVuZXdnYXRoZXJlZHtcdTMwMDhuYW1lXHUzMDA5fXtcdTMwMDhwcmVfbGluZVx1MzAwOX17XHUzMDA4cG9zdF9saW5lXHUzMDA5fXtcdTMwMDhhZnRlclx1MzAwOX1cbi8vXG5cbi8qKlxuICogVGhlIG1hY3JvcyBmb3IgdGhpcyBwYWNrYWdlLlxuICovXG5uZXcgQ29tbWFuZE1hcCgnbWF0aHRvb2xzLW1hY3JvcycsIHtcblxuICBzaG92ZWxlZnQ6ICBbJ0hhbmRsZVNob3ZlJywgVGV4Q29uc3RhbnQuQWxpZ24uTEVGVF0sICAgIC8vIG92ZXJyaWRlIEFNUyB2ZXJzaW9uXG4gIHNob3ZlcmlnaHQ6IFsnSGFuZGxlU2hvdmUnLCBUZXhDb25zdGFudC5BbGlnbi5SSUdIVF0sICAgLy8gb3ZlcnJpZGUgQU1TIHZlcnNpb25cblxuICB4bGVmdHJpZ2h0YXJyb3c6ICAgIFsneEFycm93JywgMHgyMTk0LCAxMCwgMTBdLFxuICB4TGVmdGFycm93OiAgICAgICAgIFsneEFycm93JywgMHgyMUQwLCAxMiwgN10sXG4gIHhSaWdodGFycm93OiAgICAgICAgWyd4QXJyb3cnLCAweDIxRDIsIDcsIDEyXSxcbiAgeExlZnRyaWdodGFycm93OiAgICBbJ3hBcnJvdycsIDB4MjFENCwgMTIsIDEyXSxcbiAgeGhvb2tsZWZ0YXJyb3c6ICAgICBbJ3hBcnJvdycsIDB4MjFBOSwgMTAsIDVdLFxuICB4aG9va3JpZ2h0YXJyb3c6ICAgIFsneEFycm93JywgMHgyMUFBLCA1LCAxMF0sXG4gIHhtYXBzdG86ICAgICAgICAgICAgWyd4QXJyb3cnLCAweDIxQTYsIDEwLCAxMF0sXG4gIHhyaWdodGhhcnBvb25kb3duOiAgWyd4QXJyb3cnLCAweDIxQzEsIDUsIDEwXSxcbiAgeGxlZnRoYXJwb29uZG93bjogICBbJ3hBcnJvdycsIDB4MjFCRCwgMTAsIDVdLFxuICB4cmlnaHRsZWZ0aGFycG9vbnM6IFsneEFycm93JywgMHgyMUNDLCAxMCwgMTBdLFxuICB4cmlnaHRoYXJwb29udXA6ICAgIFsneEFycm93JywgMHgyMUMwLCA1LCAxMF0sXG4gIHhsZWZ0aGFycG9vbnVwOiAgICAgWyd4QXJyb3cnLCAweDIxQkMsIDEwLCA1XSxcbiAgeGxlZnRyaWdodGhhcnBvb25zOiBbJ3hBcnJvdycsIDB4MjFDQiwgMTAsIDEwXSxcblxuICBtYXRobGxhcDogWydNYXRoTGFwJywgJ2wnLCBmYWxzZV0sXG4gIG1hdGhybGFwOiBbJ01hdGhMYXAnLCAncicsIGZhbHNlXSxcbiAgbWF0aGNsYXA6IFsnTWF0aExhcCcsICdjJywgZmFsc2VdLFxuICBjbGFwOiAgICAgWydNdExhcCcsICdjJ10sXG4gIHRleHRsbGFwOiBbJ010TGFwJywgJ2wnXSxcbiAgdGV4dHJsYXA6IFsnTXRMYXAnLCAnciddLFxuICB0ZXh0Y2xhcDogWydNdExhcCcsICdjJ10sXG5cbiAgY3JhbXBlZDogJ0NyYW1wZWQnLFxuICBjcmFtcGVkbGxhcDogWydNYXRoTGFwJywgJ2wnLCB0cnVlXSxcbiAgY3JhbXBlZHJsYXA6IFsnTWF0aExhcCcsICdyJywgdHJ1ZV0sXG4gIGNyYW1wZWRjbGFwOiBbJ01hdGhMYXAnLCAnYycsIHRydWVdLFxuICBjcmFtcGVkc3Vic3RhY2s6IFsnTWFjcm8nLCAnXFxcXGJlZ2lue2NyYW1wZWRzdWJhcnJheX17Y30jMVxcXFxlbmR7Y3JhbXBlZHN1YmFycmF5fScsIDFdLFxuXG4gIG1hdGhtYm94OiAgICAnTWF0aE1Cb3gnLFxuICBtYXRobWFrZWJveDogJ01hdGhNYWtlQm94JyxcblxuICBvdmVyYnJhY2tldDogICdVbmRlck92ZXJCcmFja2V0JyxcbiAgdW5kZXJicmFja2V0OiAnVW5kZXJPdmVyQnJhY2tldCcsXG5cbiAgcmVmZXE6ICdIYW5kbGVSZWYnLFxuXG4gIE1vdmVFcUxlZnQ6IFsnTWFjcm8nLCAnXFxcXGhzcGFjZXsjMWVtfSZcXFxcaHNwYWNley0jMWVtfScsIDEsICcyJ10sXG4gIEFib3hlZDogJ0Fib3hlZCcsXG5cbiAgQXJyb3dCZXR3ZWVuTGluZXM6ICdBcnJvd0JldHdlZW5MaW5lcycsXG4gIHZkb3Rzd2l0aGluOiAnVkRvdHNXaXRoaW4nLFxuICBzaG9ydHZkb3Rzd2l0aGluOiAnU2hvcnRWRG90c1dpdGhpbicsXG4gIE1URmx1c2hTcGFjZUFib3ZlOiAnRmx1c2hTcGFjZUFib3ZlJyxcbiAgTVRGbHVzaFNwYWNlQmVsb3c6ICdGbHVzaFNwYWNlQmVsb3cnLFxuXG4gIERlY2xhcmVQYWlyZWREZWxpbWl0ZXI6ICAgICAnRGVjbGFyZVBhaXJlZERlbGltaXRlcicsXG4gIERlY2xhcmVQYWlyZWREZWxpbWl0ZXJYOiAgICAnRGVjbGFyZVBhaXJlZERlbGltaXRlclgnLFxuICBEZWNsYXJlUGFpcmVkRGVsaW1pdGVyWFBQOiAgJ0RlY2xhcmVQYWlyZWREZWxpbWl0ZXJYUFAnLFxuXG4gIC8vXG4gIC8vICBUeXBvcyBmcm9tIGluaXRpYWwgcmVsZWFzZSAtLSBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvciBub3dcbiAgLy9cbiAgRGVjbGFyZVBhaXJlZERlbGltaXRlcnM6ICAgICdEZWNsYXJlUGFpcmVkRGVsaW1pdGVyJyxcbiAgRGVjbGFyZVBhaXJlZERlbGltaXRlcnNYOiAgICdEZWNsYXJlUGFpcmVkRGVsaW1pdGVyWCcsXG4gIERlY2xhcmVQYWlyZWREZWxpbWl0ZXJzWFBQOiAnRGVjbGFyZVBhaXJlZERlbGltaXRlclhQUCcsXG5cbiAgY2VudGVyY29sb246IFsnQ2VudGVyQ29sb24nLCB0cnVlLCB0cnVlXSxcbiAgb3JkaW5hcnljb2xvbjogWydDZW50ZXJDb2xvbicsIGZhbHNlXSxcbiAgTVRUaGluQ29sb246IFsnQ2VudGVyQ29sb24nLCB0cnVlLCB0cnVlLCB0cnVlXSxcblxuICBjb2xvbmVxcTogICAgWydSZWxhdGlvbicsICc6PScsICdcXHUyMjU0J10sXG4gIENvbG9uZXFxOiAgICBbJ1JlbGF0aW9uJywgJzo6PScsICdcXHUyQTc0J10sXG4gIGNvbG9uZXE6ICAgICBbJ1JlbGF0aW9uJywgJzotJ10sXG4gIENvbG9uZXE6ICAgICBbJ1JlbGF0aW9uJywgJzo6LSddLFxuICBlcXFjb2xvbjogICAgWydSZWxhdGlvbicsICc9OicsICdcXHUyMjU1J10sXG4gIEVxcWNvbG9uOiAgICBbJ1JlbGF0aW9uJywgJz06OiddLFxuICBlcWNvbG9uOiAgICAgWydSZWxhdGlvbicsICctOicsICdcXHUyMjM5J10sXG4gIEVxY29sb246ICAgICBbJ1JlbGF0aW9uJywgJy06OiddLFxuICBjb2xvbmFwcHJveDogWydSZWxhdGlvbicsICc6XFxcXGFwcHJveCddLFxuICBDb2xvbmFwcHJveDogWydSZWxhdGlvbicsICc6OlxcXFxhcHByb3gnXSxcbiAgY29sb25zaW06ICAgIFsnUmVsYXRpb24nLCAnOlxcXFxzaW0nXSxcbiAgQ29sb25zaW06ICAgIFsnUmVsYXRpb24nLCAnOjpcXFxcc2ltJ10sXG4gIGRibGNvbG9uOiAgICBbJ1JlbGF0aW9uJywgJzo6JywgJ1xcdTIyMzcnXSxcblxuICBudXBhcnJvdzogICBbJ05BcnJvdycsICdcXHUyMTkxJywgJy4wNmVtJ10sXG4gIG5kb3duYXJyb3c6IFsnTkFycm93JywgJ1xcdTIxOTMnLCAnLjI1ZW0nXSxcbiAgYmlndGltZXM6ICAgWydNYWNybycsICdcXFxcbWF0aG9we1xcXFxMYXJnZVxcXFxrZXJuLS4xZW1cXFxcYm9sZHN5bWJvbHtcXFxcdGltZXN9XFxcXGtlcm4tLjFlbX0nXSxcblxuICBzcGxpdGZyYWM6ICBbJ1NwbGl0RnJhYycsIGZhbHNlXSxcbiAgc3BsaXRkZnJhYzogWydTcGxpdEZyYWMnLCB0cnVlXSxcblxuICB4bWF0aHN0cnV0OiAnWE1hdGhTdHJ1dCcsXG5cbiAgcHJlc2NyaXB0OiAnUHJlc2NyaXB0JyxcblxuICBuZXd0YWdmb3JtOiBbJ05ld1RhZ0Zvcm0nLCBmYWxzZV0sXG4gIHJlbmV3dGFnZm9ybTogWydOZXdUYWdGb3JtJywgdHJ1ZV0sXG4gIHVzZXRhZ2Zvcm06ICdVc2VUYWdGb3JtJyxcblxuICBhZGp1c3RsaW1pdHM6IFtcbiAgICAnTWFjcm9XaXRoVGVtcGxhdGUnLFxuICAgICdcXFxcbWF0aG9we3sjMX1cXFxcdnBoYW50b217eyMzfX19X3t7IzJ9XFxcXHZwaGFudG9te3sjNH19fVxcXFxtYXRob3B7eyMzfVxcXFx2cGhhbnRvbXt7IzF9fX1fe3sjNH1cXFxcdnBoYW50b217eyMyfX19JyxcbiAgICA0LCAsICdfJywgLCAnXydcbiAgXSxcblxuICBtYXRodG9vbHNzZXQ6ICdTZXRPcHRpb25zJ1xuXG59LCBNYXRodG9vbHNNZXRob2RzKTtcblxuLyoqXG4gKiAgVGhlIGVudmlyb25tZW50cyBmb3IgdGhpcyBwYWNrYWdlLlxuICovXG5uZXcgRW52aXJvbm1lbnRNYXAoJ21hdGh0b29scy1lbnZpcm9ubWVudHMnLCBQYXJzZU1ldGhvZHMuZW52aXJvbm1lbnQsIHtcbiAgZGNhc2VzOiAgWydBcnJheScsIG51bGwsICdcXFxceycsICcnLCAnbGwnLCBudWxsLCAnLjJlbScsICdEJ10sXG4gIHJjYXNlczogIFsnQXJyYXknLCBudWxsLCAnJywgJ1xcXFx9JywgJ2xsJywgbnVsbCwgJy4yZW0nXSxcbiAgZHJjYXNlczogWydBcnJheScsIG51bGwsICcnLCAnXFxcXH0nLCAnbGwnLCBudWxsLCAnLjJlbScsICdEJ10sXG4gICdkY2FzZXMqJzogIFsnQ2FzZXMnLCBudWxsLCAneycsICcnLCAnRCddLFxuICAncmNhc2VzKic6ICBbJ0Nhc2VzJywgbnVsbCwgJycsICd9J10sXG4gICdkcmNhc2VzKic6IFsnQ2FzZXMnLCBudWxsLCAnJywgJ30nLCAnRCddLFxuICAnY2FzZXMqJzogICBbJ0Nhc2VzJywgbnVsbCwgJ3snLCAnJ10sXG5cbiAgJ21hdHJpeConOiAgWydNdE1hdHJpeCcsIG51bGwsIG51bGwsIG51bGxdLFxuICAncG1hdHJpeConOiBbJ010TWF0cml4JywgbnVsbCwgJygnLCAnKSddLFxuICAnYm1hdHJpeConOiBbJ010TWF0cml4JywgbnVsbCwgJ1snLCAnXSddLFxuICAnQm1hdHJpeConOiBbJ010TWF0cml4JywgbnVsbCwgJ1xcXFx7JywgJ1xcXFx9J10sXG4gICd2bWF0cml4Kic6IFsnTXRNYXRyaXgnLCBudWxsLCAnXFxcXHZlcnQnLCAnXFxcXHZlcnQnXSxcbiAgJ1ZtYXRyaXgqJzogWydNdE1hdHJpeCcsIG51bGwsICdcXFxcVmVydCcsICdcXFxcVmVydCddLFxuXG4gICdzbWFsbG1hdHJpeConOiAgWydNdFNtYWxsTWF0cml4JywgbnVsbCwgbnVsbCwgbnVsbF0sXG4gIHBzbWFsbG1hdHJpeDogICAgWydNdFNtYWxsTWF0cml4JywgbnVsbCwgJygnLCAnKScsICdjJ10sXG4gICdwc21hbGxtYXRyaXgqJzogWydNdFNtYWxsTWF0cml4JywgbnVsbCwgJygnLCAnKSddLFxuICBic21hbGxtYXRyaXg6ICAgIFsnTXRTbWFsbE1hdHJpeCcsIG51bGwsICdbJywgJ10nLCAnYyddLFxuICAnYnNtYWxsbWF0cml4Kic6IFsnTXRTbWFsbE1hdHJpeCcsIG51bGwsICdbJywgJ10nXSxcbiAgQnNtYWxsbWF0cml4OiAgICBbJ010U21hbGxNYXRyaXgnLCBudWxsLCAnXFxcXHsnLCAnXFxcXH0nLCAnYyddLFxuICAnQnNtYWxsbWF0cml4Kic6IFsnTXRTbWFsbE1hdHJpeCcsIG51bGwsICdcXFxceycsICdcXFxcfSddLFxuICB2c21hbGxtYXRyaXg6ICAgIFsnTXRTbWFsbE1hdHJpeCcsIG51bGwsICdcXFxcdmVydCcsICdcXFxcdmVydCcsICdjJ10sXG4gICd2c21hbGxtYXRyaXgqJzogWydNdFNtYWxsTWF0cml4JywgbnVsbCwgJ1xcXFx2ZXJ0JywgJ1xcXFx2ZXJ0J10sXG4gIFZzbWFsbG1hdHJpeDogICAgWydNdFNtYWxsTWF0cml4JywgbnVsbCwgJ1xcXFxWZXJ0JywgJ1xcXFxWZXJ0JywgJ2MnXSxcbiAgJ1ZzbWFsbG1hdHJpeConOiBbJ010U21hbGxNYXRyaXgnLCBudWxsLCAnXFxcXFZlcnQnLCAnXFxcXFZlcnQnXSxcblxuICBjcmFtcGVkc3ViYXJyYXk6IFsnQXJyYXknLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAnMGVtJywgJzAuMWVtJywgJ1NcXCcnLCAxXSxcblxuICBtdWx0bGluZWQ6ICdNdE11bHRsaW5lZCcsXG5cbiAgc3ByZWFkbGluZXM6IFsnU3ByZWFkTGluZXMnLCB0cnVlXSxcblxuICBsZ2F0aGVyZWQ6IFsnQW1zRXFuQXJyYXknLCBudWxsLCBudWxsLCBudWxsLCAnbCcsIG51bGwsICcuNWVtJywgJ0QnXSxcbiAgcmdhdGhlcmVkOiBbJ0Ftc0VxbkFycmF5JywgbnVsbCwgbnVsbCwgbnVsbCwgJ3InLCBudWxsLCAnLjVlbScsICdEJ10sXG5cbn0sIE1hdGh0b29sc01ldGhvZHMpO1xuXG4vKipcbiAqIFRoZSBkZWxpbWl0ZXJzIGZvciB0aGlzIHBhY2thZ2UuXG4gKi9cbm5ldyBEZWxpbWl0ZXJNYXAoJ21hdGh0b29scy1kZWxpbWl0ZXJzJywgUGFyc2VNZXRob2RzLmRlbGltaXRlciwge1xuICAnXFxcXGxwYXJlbic6ICcoJyxcbiAgJ1xcXFxycGFyZW4nOiAnKSdcbn0pO1xuXG4vKipcbiAqIFRoZSBzcGVjaWFsIGNoYXJhY3RlcnMgZm9yIHRoaXMgcGFja2FnZS5cbiAqL1xubmV3IENvbW1hbmRNYXAoJ21hdGh0b29scy1jaGFyYWN0ZXJzJywge1xuICAnOicgOiBbJ0NlbnRlckNvbG9uJywgdHJ1ZV1cbn0sIE1hdGh0b29sc01ldGhvZHMpO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgICBUYWdzIGltcGxlbWVudGF0aW9uIGZvciB0aGUgbWF0aHRvb2xzIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgUC4gQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IHtQYXJzZXJDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7VGVYfSBmcm9tICcuLi8uLi90ZXguanMnO1xuaW1wb3J0IHtBYnN0cmFjdFRhZ3MsIFRhZ3NGYWN0b3J5fSBmcm9tICcuLi9UYWdzLmpzJztcblxuXG4vKipcbiAqIFRoZSB0eXBlIGZvciB0aGUgTWF0aHRvb2xzIHRhZ3MgKGluY2x1ZGluZyB0aGVpciBkYXRhKS5cbiAqL1xuZXhwb3J0IHR5cGUgTWF0aHRvb2xzVGFncyA9IEFic3RyYWN0VGFncyAmIHtcbiAgbXRGb3JtYXRzOiBNYXA8c3RyaW5nLCBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ10+OyAgLy8gbmFtZSAtPiBbbGVmdCwgcmlnaHQsIGZvcm1hdF1cbiAgbXRDdXJyZW50OiBbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ107ICAgICAgICAgICAgICAgLy8gW2xlZnQsIHJpZ2h0LCBmb3JtYXRdXG59O1xuXG4vKipcbiAqIFRoZSBJRCBudW1iZXIgZm9yIHRoZSBjdXJyZW50IHRhZyBjbGFzc1xuICovXG5sZXQgdGFnSUQgPSAwO1xuXG4vKipcbiAqIENyZWF0ZXMgYW5kIHJlZ2lzdGVycyBhIHN1YmNsYXNzIG9mIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCB0YWcgY2xhc3NcbiAqIHRoYXQgaGFuZGxlcyB0aGUgZm9ybWF0cyBjcmVhdGVkIGJ5IHRoZSBcXG5ld3RhZ2Zvcm0gbWFjcm8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBNYXRodG9vbHNUYWdGb3JtYXQoY29uZmlnOiBQYXJzZXJDb25maWd1cmF0aW9uLCBqYXg6IFRlWDxhbnksIGFueSwgYW55Pikge1xuICAvKipcbiAgICogSWYgdGhlIHRhZyBmb3JtYXQgaXMgYmVpbmcgYWRkZWQgYnkgb25lIG9mIHRoZSBvdGhlciBleHRlbnNpb25zLFxuICAgKiAgIGFzIGlzIGRvbmUgZm9yIHRoZSAnYW1zJyB0YWdzLCBtYWtlIHN1cmUgaXQgaXMgZGVmaW5lZCBzbyB3ZSBjYW4gY3JlYXRlIGl0LlxuICAgKi9cbiAgY29uc3QgdGFncyA9IGpheC5wYXJzZU9wdGlvbnMub3B0aW9ucy50YWdzO1xuICBpZiAodGFncyAhPT0gJ2Jhc2UnICYmIGNvbmZpZy50YWdzLmhhc093blByb3BlcnR5KHRhZ3MpKSB7XG4gICAgVGFnc0ZhY3RvcnkuYWRkKHRhZ3MsIGNvbmZpZy50YWdzW3RhZ3NdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgb3JpZ2luYWwgdGFnIGNsYXNzIHRvIGJlIGV4dGVuZGVkIChub25lLCBhbXMsIG9yIGFsbClcbiAgICovXG4gIGNvbnN0IFRhZ0NsYXNzID0gVGFnc0ZhY3RvcnkuY3JlYXRlKGpheC5wYXJzZU9wdGlvbnMub3B0aW9ucy50YWdzKS5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgQWJzdHJhY3RUYWdzO1xuXG4gIC8qKlxuICAgKiBBIFRhZ3Mgb2JqZWN0IHRoYXQgdXNlcyBcXG5ld3RhZ2Zvcm0gdG8gZGVmaW5lIHRoZSBmb3JtYXR0aW5nXG4gICAqL1xuICBjbGFzcyBUYWdGb3JtYXQgZXh0ZW5kcyBUYWdDbGFzcyB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGVmaW5lZCB0YWcgZm9ybWF0c1xuICAgICAqL1xuICAgIHB1YmxpYyBtdEZvcm1hdHM6IE1hcDxzdHJpbmcsIFtzdHJpbmcsIHN0cmluZywgc3RyaW5nXT4gPSBuZXcgTWFwKCk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZm9ybWF0IGN1cnJlbnRseSBpbiB1c2UgKFtsZWZ0LCByaWdodCwgZm9ybWF0XSksIG9yIG51bGwgZm9yIHVzaW5nIHRoZSBkZWZhdWx0XG4gICAgICovXG4gICAgcHVibGljIG10Q3VycmVudDogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgc3VwZXIoKTtcbiAgICAgIGNvbnN0IGZvcm1zID0gamF4LnBhcnNlT3B0aW9ucy5vcHRpb25zLm1hdGh0b29scy50YWdmb3JtcztcbiAgICAgIGZvciAoY29uc3QgZm9ybSBvZiBPYmplY3Qua2V5cyhmb3JtcykpIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGZvcm1zW2Zvcm1dKSB8fCBmb3Jtc1tmb3JtXS5sZW5ndGggIT09IDMpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0ludmFsaWRUYWdGb3JtRGVmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSB0YWcgZm9ybSBkZWZpbml0aW9uIGZvciBcIiUxXCIgc2hvdWxkIGJlIGFuIGFycmF5IGZvIHRocmVlIHN0cmluZ3MnLCBmb3JtKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm10Rm9ybWF0cy5zZXQoZm9ybSwgZm9ybXNbZm9ybV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXRUYWcodGFnOiBzdHJpbmcpIHtcbiAgICAgIGlmICh0aGlzLm10Q3VycmVudCkge1xuICAgICAgICBjb25zdCBbbGVmdCwgcmlnaHQsIGZvcm1hdF0gPSB0aGlzLm10Q3VycmVudDtcbiAgICAgICAgcmV0dXJuIChmb3JtYXQgPyBgJHtsZWZ0fSR7Zm9ybWF0fXske3RhZ319JHtyaWdodH1gIDogYCR7bGVmdH0ke3RhZ30ke3JpZ2h0fWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN1cGVyLmZvcm1hdFRhZyh0YWcpO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vICBHZXQgYSB1bmlxdWUgbmFtZSBmb3IgdGhlIHRhZyBjbGFzcyAoc2luY2UgaXQgaXMgdGllZCB0byB0aGUgaW5wdXQgamF4KVxuICAvLyAgTm90ZTogIFRoZXNlIG5ldmVyIGdldCBmcmVlZCwgc28gdGhleSB3aWxsIGFjY3VtdWxhdGUgaWYgeW91IGNyZWF0ZSBtYW55XG4gIC8vICBUZVggaW5wdXQgamF4IGluc3RhbmNlcyB3aXRoIHRoaXMgZXh0ZW5zaW9uLlxuICAvL1xuICB0YWdJRCsrO1xuICBjb25zdCB0YWdOYW1lID0gJ01hdGh0b29sc1RhZ3MtJyArIHRhZ0lEO1xuICAvL1xuICAvLyBSZWdpc3RlciB0aGUgdGFnIGNsYXNzXG4gIC8vXG4gIFRhZ3NGYWN0b3J5LmFkZCh0YWdOYW1lLCBUYWdGb3JtYXQpO1xuICBqYXgucGFyc2VPcHRpb25zLm9wdGlvbnMudGFncyA9IHRhZ05hbWU7XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMiBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICAgIEltcGxlbWVudGF0aW9uIG9mIGl0ZW1zIGZvciB0aGUgbWF0aHRvb2xzIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBQLiBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7TXVsdGxpbmVJdGVtfSBmcm9tICcuLi9hbXMvQW1zSXRlbXMuanMnO1xuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4uL05vZGVVdGlsLmpzJztcbmltcG9ydCB7VGV4Q29uc3RhbnR9IGZyb20gJy4uL1RleENvbnN0YW50cy5qcyc7XG5cblxuLyoqXG4gKiBUaGUgU3RhY2tJdGVtIGZvciB0aGUgbXVsdGxpbmVkIGVudmlyb25tZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBNdWx0bGluZWRJdGVtIGV4dGVuZHMgTXVsdGxpbmVJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ211bHRsaW5lZCc7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBFbmRUYWJsZSgpIHtcbiAgICBpZiAodGhpcy5TaXplKCkgfHwgdGhpcy5yb3cubGVuZ3RoKSB7XG4gICAgICB0aGlzLkVuZEVudHJ5KCk7XG4gICAgICB0aGlzLkVuZFJvdygpO1xuICAgIH1cbiAgICBpZiAodGhpcy50YWJsZS5sZW5ndGggPiAxKSB7XG4gICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5mYWN0b3J5LmNvbmZpZ3VyYXRpb24ub3B0aW9ucy5tYXRodG9vbHM7XG4gICAgICBjb25zdCBnYXAgPSBvcHRpb25zLm11bHRsaW5lZ2FwO1xuICAgICAgY29uc3QgZmlyc3Rza2lwID0gb3B0aW9uc1snZmlyc3RsaW5lLWFmdGVyc2tpcCddIHx8IGdhcDtcbiAgICAgIGNvbnN0IGxhc3Rza2lwID0gb3B0aW9uc1snbGFzdGxpbmUtcHJlc2tpcCddIHx8IGdhcDtcbiAgICAgIGNvbnN0IGZpcnN0ID0gTm9kZVV0aWwuZ2V0Q2hpbGRyZW4odGhpcy50YWJsZVswXSlbMF07XG4gICAgICBpZiAoTm9kZVV0aWwuZ2V0QXR0cmlidXRlKGZpcnN0LCAnY29sdW1uYWxpZ24nKSAhPT0gVGV4Q29uc3RhbnQuQWxpZ24uUklHSFQpIHtcbiAgICAgICAgZmlyc3QuYXBwZW5kQ2hpbGQodGhpcy5jcmVhdGUoJ25vZGUnLCAnbXNwYWNlJywgW10sIHt3aWR0aDogZmlyc3Rza2lwfSkpO1xuICAgICAgfVxuICAgICAgY29uc3QgbGFzdCA9IE5vZGVVdGlsLmdldENoaWxkcmVuKHRoaXMudGFibGVbdGhpcy50YWJsZS5sZW5ndGggLSAxXSlbMF07XG4gICAgICBpZiAoTm9kZVV0aWwuZ2V0QXR0cmlidXRlKGxhc3QsICdjb2x1bW5hbGlnbicpICE9PSBUZXhDb25zdGFudC5BbGlnbi5MRUZUKSB7XG4gICAgICAgIGNvbnN0IHRvcCA9IE5vZGVVdGlsLmdldENoaWxkcmVuKGxhc3QpWzBdO1xuICAgICAgICB0b3AuY2hpbGROb2Rlcy51bnNoaWZ0KG51bGwpO1xuICAgICAgICBjb25zdCBzcGFjZSA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ21zcGFjZScsIFtdLCB7d2lkdGg6IGxhc3Rza2lwfSk7XG4gICAgICAgIE5vZGVVdGlsLnNldENoaWxkKHRvcCwgMCwgc3BhY2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBzdXBlci5FbmRUYWJsZS5jYWxsKHRoaXMpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogIENvcHlyaWdodCAoYykgMjAyMC0yMDIyIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgICAgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgbWF0aHRvb2xzIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBQLiBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi4vQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQge0NvbW1hbmRNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQgTm9kZVV0aWwgZnJvbSAnLi4vTm9kZVV0aWwuanMnO1xuaW1wb3J0IHtleHBhbmRhYmxlfSBmcm9tICcuLi8uLi8uLi91dGlsL09wdGlvbnMuanMnO1xuaW1wb3J0IHtQYXJzZXJDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7VGVYfSBmcm9tICcuLi8uLi90ZXguanMnO1xuaW1wb3J0IFBhcnNlT3B0aW9ucyBmcm9tICcuLi9QYXJzZU9wdGlvbnMuanMnO1xuXG5pbXBvcnQgJy4vTWF0aHRvb2xzTWFwcGluZ3MuanMnO1xuaW1wb3J0IHtNYXRodG9vbHNVdGlsfSBmcm9tICcuL01hdGh0b29sc1V0aWwuanMnO1xuaW1wb3J0IHtNYXRodG9vbHNUYWdGb3JtYXR9IGZyb20gJy4vTWF0aHRvb2xzVGFncy5qcyc7XG5pbXBvcnQge011bHRsaW5lZEl0ZW19IGZyb20gJy4vTWF0aHRvb2xzSXRlbXMuanMnO1xuXG4vKipcbiAqIFRoZSBuYW1lIG9mIHRoZSBwYXJpZWQtZGVsaW1pdGVycyBjb21tYW5kIG1hcC5cbiAqL1xuZXhwb3J0IGNvbnN0IFBBSVJFRERFTElNUyA9ICdtYXRodG9vbHMtcGFpcmVkLWRlbGltcyc7XG5cbi8qKlxuICogQ3JlYXRlIHRoZSBwYWlyZWQtZGVsaW1pdGVycyBjb21tYW5kIG1hcCwgYW5kIGxpbmsgaXQgaW50byB0aGUgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSB7UGFyc2VyQ29uZmlndXJhdGlvbn0gY29uZmlnICAgVGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi5cbiAqL1xuZnVuY3Rpb24gaW5pdE1hdGh0b29scyhjb25maWc6IFBhcnNlckNvbmZpZ3VyYXRpb24pIHtcbiAgbmV3IENvbW1hbmRNYXAoUEFJUkVEREVMSU1TLCB7fSwge30pO1xuICBjb25maWcuYXBwZW5kKENvbmZpZ3VyYXRpb24ubG9jYWwoe2hhbmRsZXI6IHttYWNybzogW1BBSVJFRERFTElNU119LCBwcmlvcml0eTogLTV9KSk7XG59XG5cbi8qKlxuICogQWRkIGFueSBwcmUtZGVmaW5lZCBwYWlyZWQgZGVsaW1pdGVycywgYW5kIHN1YmNsYXNzIHRoZSBjb25maWd1cmVkIHRhZyBmb3JtYXQuXG4gKiBAcGFyYW0ge1BhcnNlckNvbmZpZ3VyYXRpb259IGNvbmZpZyAgIFRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge1RlWH0gamFjICAgICAgICAgICAgICAgICAgICAgIFRoZSBUZVggaW5wdXQgamF4XG4gKi9cbmZ1bmN0aW9uIGNvbmZpZ01hdGh0b29scyhjb25maWc6IFBhcnNlckNvbmZpZ3VyYXRpb24sIGpheDogVGVYPGFueSwgYW55LCBhbnk+KSB7XG4gIGNvbnN0IHBhcnNlciA9IGpheC5wYXJzZU9wdGlvbnM7XG4gIGNvbnN0IHBhaXJlZERlbGltcyA9IHBhcnNlci5vcHRpb25zLm1hdGh0b29scy5wYWlyZWREZWxpbWl0ZXJzO1xuICBmb3IgKGNvbnN0IGNzIG9mIE9iamVjdC5rZXlzKHBhaXJlZERlbGltcykpIHtcbiAgICBNYXRodG9vbHNVdGlsLmFkZFBhaXJlZERlbGltcyhwYXJzZXIsIGNzLCBwYWlyZWREZWxpbXNbY3NdKTtcbiAgfVxuICBNYXRodG9vbHNUYWdGb3JtYXQoY29uZmlnLCBqYXgpO1xufVxuXG4vKipcbiAqIEEgZmlsdGVyIHRvIGZpeCB1cCBtbXVsdGlzY3JpcHRzIGVsZW1lbnRzLlxuICogQHBhcmFtIHtQYXJzZU9wdGlvbnN9IGRhdGEgICBUaGUgcGFyc2Ugb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpeFByZXNjcmlwdHMoe2RhdGF9OiB7ZGF0YTogUGFyc2VPcHRpb25zfSkge1xuICBmb3IgKGNvbnN0IG5vZGUgb2YgZGF0YS5nZXRMaXN0KCdtbXVsdGlzY3JpcHRzJykpIHtcbiAgICBpZiAoIW5vZGUuZ2V0UHJvcGVydHkoJ2ZpeFByZXNjcmlwdCcpKSBjb250aW51ZTtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gTm9kZVV0aWwuZ2V0Q2hpbGRyZW4obm9kZSk7XG4gICAgbGV0IG4gPSAwO1xuICAgIGZvciAoY29uc3QgaSBvZiBbMSwgMl0pIHtcbiAgICAgIGlmICghY2hpbGROb2Rlc1tpXSkge1xuICAgICAgICBOb2RlVXRpbC5zZXRDaGlsZChub2RlLCBpLCBkYXRhLm5vZGVGYWN0b3J5LmNyZWF0ZSgnbm9kZScsICdub25lJykpO1xuICAgICAgICBuKys7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoY29uc3QgaSBvZiBbNCwgNV0pIHtcbiAgICAgIGlmIChOb2RlVXRpbC5pc1R5cGUoY2hpbGROb2Rlc1tpXSwgJ21yb3cnKSAmJiBOb2RlVXRpbC5nZXRDaGlsZHJlbihjaGlsZE5vZGVzW2ldKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgTm9kZVV0aWwuc2V0Q2hpbGQobm9kZSwgaSwgZGF0YS5ub2RlRmFjdG9yeS5jcmVhdGUoJ25vZGUnLCAnbm9uZScpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG4gPT09IDIpIHtcbiAgICAgIGNoaWxkTm9kZXMuc3BsaWNlKDEsIDIpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgbWF0aHRvb2xzIHBhY2thZ2VcbiAqL1xuZXhwb3J0IGNvbnN0IE1hdGh0b29sc0NvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ21hdGh0b29scycsIHtcbiAgICBoYW5kbGVyOiB7XG4gICAgICBtYWNybzogWydtYXRodG9vbHMtbWFjcm9zJywgJ21hdGh0b29scy1kZWxpbWl0ZXJzJ10sXG4gICAgICBlbnZpcm9ubWVudDogWydtYXRodG9vbHMtZW52aXJvbm1lbnRzJ10sXG4gICAgICBkZWxpbWl0ZXI6IFsnbWF0aHRvb2xzLWRlbGltaXRlcnMnXSxcbiAgICAgIGNoYXJhY3RlcjogWydtYXRodG9vbHMtY2hhcmFjdGVycyddXG4gICAgfSxcbiAgICBpdGVtczoge1xuICAgICAgW011bHRsaW5lZEl0ZW0ucHJvdG90eXBlLmtpbmRdOiBNdWx0bGluZWRJdGVtXG4gICAgfSxcbiAgICBpbml0OiBpbml0TWF0aHRvb2xzLFxuICAgIGNvbmZpZzogY29uZmlnTWF0aHRvb2xzLFxuICAgIHBvc3Rwcm9jZXNzb3JzOiBbW2ZpeFByZXNjcmlwdHMsIC02XV0sXG4gICAgb3B0aW9uczoge1xuICAgICAgbWF0aHRvb2xzOiB7XG4gICAgICAgICdtdWx0bGluZWdhcCc6ICcxZW0nLCAgICAgICAgICAgICAgICAgICAvLyBob3Jpem9udGFsIHNwYWNlIGZvciBtdWx0bGluZWQgZW52aXJvbm1lbnRzXG4gICAgICAgICdtdWx0bGluZWQtcG9zJzogJ2MnLCAgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IGFsaWdubWVudCBmb3IgbXVsdGxpbmVkIGVudmlyb25tZW50c1xuICAgICAgICAnZmlyc3RsaW5lLWFmdGVyc2tpcCc6ICcnLCAgICAgICAgICAgICAgLy8gc3BhY2UgZm9yIGZpcnN0IGxpbmUgb2YgbXVsdGxpbmVkIChvdmVycmlkZXMgbXVsdGxpbmVnYXApXG4gICAgICAgICdsYXN0bGluZS1wcmVza2lwJzogJycsICAgICAgICAgICAgICAgICAvLyBzcGFjZSBmb3IgbGFzdCBsaW5lIG9mIG11bHRsaW5lZCAob3ZlcnJpZGVzIG11bHRsaW5lZ2FwKVxuICAgICAgICAnc21hbGxtYXRyaXgtYWxpZ24nOiAnYycsICAgICAgICAgICAgICAgLy8gZGVmYXVsdCBhbGlnbm1lbnQgZm9yIHNtYWxsbWF0cml4IGVudmlyb25tZW50c1xuICAgICAgICAnc2hvcnR2ZG90c2FkanVzdGFib3ZlJzogJy4yZW0nLCAgICAgICAgLy8gc3BhY2UgdG8gcmVtb3ZlIGFib3ZlIFxcc2hvcnR2ZG90c1xuICAgICAgICAnc2hvcnR2ZG90c2FkanVzdGJlbG93JzogJy4yZW0nLCAgICAgICAgLy8gc3BhY2UgdG8gcmVtb3ZlIGJlbG93IFxcc2hvcnR2ZG90c1xuICAgICAgICAnY2VudGVyY29sb24nOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgLy8gdHJ1ZSB0byBoYXZlIGNvbG9uIGF1dG9tYXRpY2FsbHkgY2VudGVyZWRcbiAgICAgICAgJ2NlbnRlcmNvbG9uLW9mZnNldCc6ICcuMDRlbScsICAgICAgICAgIC8vIHZlcnRpY2FsIGFkanVzdG1lbnQgZm9yIGNlbnRlcmVkIGNvbG9uc1xuICAgICAgICAndGhpbmNvbG9uLWR4JzogJy0uMDRlbScsICAgICAgICAgICAgICAgLy8gaG9yaXpvbnRhbCBhZGp1c3RtZW50IGZvciB0aGluIGNvbG9ucyAoZS5nLiwgXFxjb2xvbmVxcSlcbiAgICAgICAgJ3RoaW5jb2xvbi1kdyc6ICctLjA4ZW0nLCAgICAgICAgICAgICAgIC8vIHdpZHRoIGFkanVzdG1lbnQgZm9yIHRoaW4gY29sb25zXG4gICAgICAgICd1c2UtdW5pY29kZSc6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAvLyB0cnVlIHRvIHVzZSB1bmljb2RlIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gbXVsdGktY2hhcmFjdGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHZlcnNpb24gZm9yIFxcY29sb25lcXEsIGV0Yy4sIHdoZW4gcG9zc2libGVcbiAgICAgICAgJ3ByZXNjcmlwdC1zdWItZm9ybWF0JzogJycsICAgICAgICAgICAgIC8vIGZvcm1hdCBmb3IgXFxwcmVzY3JpcHQgc3Vic2NyaXB0XG4gICAgICAgICdwcmVzY3JpcHQtc3VwLWZvcm1hdCc6ICcnLCAgICAgICAgICAgICAvLyBmb3JtYXQgZm9yIFxccHJlc2NyaXB0IHN1cGVyc2NyaXB0XG4gICAgICAgICdwcmVzY3JpcHQtYXJnLWZvcm1hdCc6ICcnLCAgICAgICAgICAgICAvLyBmb3JtYXQgZm9yIFxccHJlc2NyaXB0IGJhc2VcbiAgICAgICAgJ2FsbG93LW1hdGh0b29sc3NldCc6IHRydWUsICAgICAgICAgICAgIC8vIHRydWUgdG8gYWxsb3cgXFxtYXRodG9vbHNzZXQgdG8gY2hhbmdlIHNldHRpbmdzXG4gICAgICAgIHBhaXJlZERlbGltaXRlcnM6IGV4cGFuZGFibGUoe30pLCAgICAgICAvLyBwcmVkZWZpbmVkIHBhaXJlZCBkZWxpbWl0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgbmFtZTogW2xlZnQsIHJpZ2h0LCBib2R5LCBhcmdjb3VudCwgcHJlLCBwb3N0XVxuICAgICAgICB0YWdmb3JtczogZXhwYW5kYWJsZSh7fSksICAgICAgICAgICAgICAgLy8gdGFnIGZvcm0gZGVmaW5pdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBuYW1lOiBbbGVmdCwgcmlnaHQsIGZvcm1hdF1cbiAgICAgICB9XG4gICAgfVxuICB9XG4pO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuLyohXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBtaGNoZW1QYXJzZXIudHNcbiAqICA0LjIuMVxuICpcbiAqICBQYXJzZXIgZm9yIHRoZSBcXGNlIGNvbW1hbmQgYW5kIFxccHUgY29tbWFuZCBmb3IgTWF0aEpheCBhbmQgQ28uXG4gKlxuICogIG1oY2hlbSdzIFxcY2UgaXMgYSB0b29sIGZvciB3cml0aW5nIGJlYXV0aWZ1bCBjaGVtaWNhbCBlcXVhdGlvbnMgZWFzaWx5LlxuICogIG1oY2hlbSdzIFxccHUgaXMgYSB0b29sIGZvciB3cml0aW5nIHBoeXNpY2FsIHVuaXRzIGVhc2lseS5cbiAqXG4gKiAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTUtMjAyMyBNYXJ0aW4gSGVuc2VsXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICpcbiAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKlxuICogIGh0dHBzOi8vZ2l0aHViLmNvbS9taGNoZW0vbWhjaGVtUGFyc2VyXG4gKlxuICovXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLm1oY2hlbVBhcnNlciA9IHZvaWQgMDtcbnZhciBtaGNoZW1QYXJzZXIgPSAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIG1oY2hlbVBhcnNlcigpIHtcbiAgICB9XG4gICAgbWhjaGVtUGFyc2VyLnRvVGV4ID0gZnVuY3Rpb24gKGlucHV0LCB0eXBlKSB7XG4gICAgICAgIHJldHVybiBfbWhjaGVtVGV4aWZ5LmdvKF9taGNoZW1QYXJzZXIuZ28oaW5wdXQsIHR5cGUpLCB0eXBlICE9PSBcInRleFwiKTtcbiAgICB9O1xuICAgIHJldHVybiBtaGNoZW1QYXJzZXI7XG59KCkpO1xuZXhwb3J0cy5taGNoZW1QYXJzZXIgPSBtaGNoZW1QYXJzZXI7XG5mdW5jdGlvbiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMobykge1xuICAgIHZhciBwYXR0ZXJuLCBzdGF0ZTtcbiAgICB2YXIgdHJhbnNpdGlvbnMgPSB7fTtcbiAgICBmb3IgKHBhdHRlcm4gaW4gbykge1xuICAgICAgICBmb3IgKHN0YXRlIGluIG9bcGF0dGVybl0pIHtcbiAgICAgICAgICAgIHZhciBzdGF0ZUFycmF5ID0gc3RhdGUuc3BsaXQoXCJ8XCIpO1xuICAgICAgICAgICAgb1twYXR0ZXJuXVtzdGF0ZV0uc3RhdGVBcnJheSA9IHN0YXRlQXJyYXk7XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0YXRlQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uc1tzdGF0ZUFycmF5W2ldXSA9IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIGZvciAocGF0dGVybiBpbiBvKSB7XG4gICAgICAgIGZvciAoc3RhdGUgaW4gb1twYXR0ZXJuXSkge1xuICAgICAgICAgICAgdmFyIHN0YXRlQXJyYXkgPSBvW3BhdHRlcm5dW3N0YXRlXS5zdGF0ZUFycmF5IHx8IFtdO1xuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGF0ZUFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIHAgPSBvW3BhdHRlcm5dW3N0YXRlXTtcbiAgICAgICAgICAgICAgICBwLmFjdGlvbl8gPSBbXS5jb25jYXQocC5hY3Rpb25fKTtcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHAuYWN0aW9uXy5sZW5ndGg7IGsrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHAuYWN0aW9uX1trXSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5hY3Rpb25fW2tdID0geyB0eXBlXzogcC5hY3Rpb25fW2tdIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIHBhdHRlcm5BcnJheSA9IHBhdHRlcm4uc3BsaXQoXCJ8XCIpO1xuICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgcGF0dGVybkFycmF5Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZUFycmF5W2ldID09PSAnKicpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh0IGluIHRyYW5zaXRpb25zKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnNbdF0ucHVzaCh7IHBhdHRlcm46IHBhdHRlcm5BcnJheVtqXSwgdGFzazogcCB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25zW3N0YXRlQXJyYXlbaV1dLnB1c2goeyBwYXR0ZXJuOiBwYXR0ZXJuQXJyYXlbal0sIHRhc2s6IHAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRyYW5zaXRpb25zO1xufVxuO1xudmFyIF9taGNoZW1QYXJzZXIgPSB7XG4gICAgZ286IGZ1bmN0aW9uIChpbnB1dCwgc3RhdGVNYWNoaW5lKSB7XG4gICAgICAgIGlmICghaW5wdXQpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdGVNYWNoaW5lID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHN0YXRlTWFjaGluZSA9ICdjZSc7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHN0YXRlID0gJzAnO1xuICAgICAgICB2YXIgYnVmZmVyID0ge307XG4gICAgICAgIGJ1ZmZlclsncGFyZW50aGVzaXNMZXZlbCddID0gMDtcbiAgICAgICAgaW5wdXQgPSBpbnB1dC5yZXBsYWNlKC9cXG4vZywgXCIgXCIpO1xuICAgICAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1tcXHUyMjEyXFx1MjAxM1xcdTIwMTRcXHUyMDEwXS9nLCBcIi1cIik7XG4gICAgICAgIGlucHV0ID0gaW5wdXQucmVwbGFjZSgvW1xcdTIwMjZdL2csIFwiLi4uXCIpO1xuICAgICAgICB2YXIgbGFzdElucHV0O1xuICAgICAgICB2YXIgd2F0Y2hkb2cgPSAxMDtcbiAgICAgICAgdmFyIG91dHB1dCA9IFtdO1xuICAgICAgICB3aGlsZSAodHJ1ZSkge1xuICAgICAgICAgICAgaWYgKGxhc3RJbnB1dCAhPT0gaW5wdXQpIHtcbiAgICAgICAgICAgICAgICB3YXRjaGRvZyA9IDEwO1xuICAgICAgICAgICAgICAgIGxhc3RJbnB1dCA9IGlucHV0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgd2F0Y2hkb2ctLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBtYWNoaW5lID0gX21oY2hlbVBhcnNlci5zdGF0ZU1hY2hpbmVzW3N0YXRlTWFjaGluZV07XG4gICAgICAgICAgICB2YXIgdCA9IG1hY2hpbmUudHJhbnNpdGlvbnNbc3RhdGVdIHx8IG1hY2hpbmUudHJhbnNpdGlvbnNbJyonXTtcbiAgICAgICAgICAgIGl0ZXJhdGVUcmFuc2l0aW9uczogZm9yICh2YXIgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1hdGNoZXMgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXyh0W2ldLnBhdHRlcm4sIGlucHV0KTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgICAgICAgICB2YXIgdGFzayA9IHRbaV0udGFzaztcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaUEgPSAwOyBpQSA8IHRhc2suYWN0aW9uXy5sZW5ndGg7IGlBKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hY2hpbmUuYWN0aW9uc1t0YXNrLmFjdGlvbl9baUFdLnR5cGVfXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBtYWNoaW5lLmFjdGlvbnNbdGFzay5hY3Rpb25fW2lBXS50eXBlX10oYnVmZmVyLCBtYXRjaGVzLm1hdGNoXywgdGFzay5hY3Rpb25fW2lBXS5vcHRpb24pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoX21oY2hlbVBhcnNlci5hY3Rpb25zW3Rhc2suYWN0aW9uX1tpQV0udHlwZV9dKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IF9taGNoZW1QYXJzZXIuYWN0aW9uc1t0YXNrLmFjdGlvbl9baUFdLnR5cGVfXShidWZmZXIsIG1hdGNoZXMubWF0Y2hfLCB0YXNrLmFjdGlvbl9baUFdLm9wdGlvbik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBbXCJNaGNoZW1CdWdBXCIsIFwibWhjaGVtIGJ1ZyBBLiBQbGVhc2UgcmVwb3J0LiAoXCIgKyB0YXNrLmFjdGlvbl9baUFdLnR5cGVfICsgXCIpXCJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShvdXRwdXQsIG8pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0YXRlID0gdGFzay5uZXh0U3RhdGUgfHwgc3RhdGU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRhc2sucmV2aXNpdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0ID0gbWF0Y2hlcy5yZW1haW5kZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRhc2sudG9Db250aW51ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGl0ZXJhdGVUcmFuc2l0aW9ucztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAod2F0Y2hkb2cgPD0gMCkge1xuICAgICAgICAgICAgICAgIHRocm93IFtcIk1oY2hlbUJ1Z1VcIiwgXCJtaGNoZW0gYnVnIFUuIFBsZWFzZSByZXBvcnQuXCJdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBjb25jYXRBcnJheTogZnVuY3Rpb24gKGEsIGIpIHtcbiAgICAgICAgaWYgKGIpIHtcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaUIgPSAwOyBpQiA8IGIubGVuZ3RoOyBpQisrKSB7XG4gICAgICAgICAgICAgICAgICAgIGEucHVzaChiW2lCXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgYS5wdXNoKGIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICBwYXR0ZXJuczoge1xuICAgICAgICBwYXR0ZXJuczoge1xuICAgICAgICAgICAgJ2VtcHR5JzogL14kLyxcbiAgICAgICAgICAgICdlbHNlJzogL14uLyxcbiAgICAgICAgICAgICdlbHNlMic6IC9eLi8sXG4gICAgICAgICAgICAnc3BhY2UnOiAvXlxccy8sXG4gICAgICAgICAgICAnc3BhY2UgQSc6IC9eXFxzKD89W0EtWlxcXFwkXSkvLFxuICAgICAgICAgICAgJ3NwYWNlJCc6IC9eXFxzJC8sXG4gICAgICAgICAgICAnYS16JzogL15bYS16XS8sXG4gICAgICAgICAgICAneCc6IC9eeC8sXG4gICAgICAgICAgICAneCQnOiAvXngkLyxcbiAgICAgICAgICAgICdpJCc6IC9eaSQvLFxuICAgICAgICAgICAgJ2xldHRlcnMnOiAvXig/OlthLXpBLVpcXHUwM0IxLVxcdTAzQzlcXHUwMzkxLVxcdTAzQTk/QF18KD86XFxcXCg/OmFscGhhfGJldGF8Z2FtbWF8ZGVsdGF8ZXBzaWxvbnx6ZXRhfGV0YXx0aGV0YXxpb3RhfGthcHBhfGxhbWJkYXxtdXxudXx4aXxvbWljcm9ufHBpfHJob3xzaWdtYXx0YXV8dXBzaWxvbnxwaGl8Y2hpfHBzaXxvbWVnYXxHYW1tYXxEZWx0YXxUaGV0YXxMYW1iZGF8WGl8UGl8U2lnbWF8VXBzaWxvbnxQaGl8UHNpfE9tZWdhKSg/Olxccyt8XFx7XFx9fCg/IVthLXpBLVpdKSkpKSsvLFxuICAgICAgICAgICAgJ1xcXFxncmVlayc6IC9eXFxcXCg/OmFscGhhfGJldGF8Z2FtbWF8ZGVsdGF8ZXBzaWxvbnx6ZXRhfGV0YXx0aGV0YXxpb3RhfGthcHBhfGxhbWJkYXxtdXxudXx4aXxvbWljcm9ufHBpfHJob3xzaWdtYXx0YXV8dXBzaWxvbnxwaGl8Y2hpfHBzaXxvbWVnYXxHYW1tYXxEZWx0YXxUaGV0YXxMYW1iZGF8WGl8UGl8U2lnbWF8VXBzaWxvbnxQaGl8UHNpfE9tZWdhKSg/Olxccyt8XFx7XFx9fCg/IVthLXpBLVpdKSkvLFxuICAgICAgICAgICAgJ29uZSBsb3dlcmNhc2UgbGF0aW4gbGV0dGVyICQnOiAvXig/OihbYS16XSkoPzokfFteYS16QS1aXSkpJC8sXG4gICAgICAgICAgICAnJG9uZSBsb3dlcmNhc2UgbGF0aW4gbGV0dGVyJCAkJzogL15cXCQoPzooW2Etel0pKD86JHxbXmEtekEtWl0pKVxcJCQvLFxuICAgICAgICAgICAgJ29uZSBsb3dlcmNhc2UgZ3JlZWsgbGV0dGVyICQnOiAvXig/OlxcJD9bXFx1MDNCMS1cXHUwM0M5XVxcJD98XFwkP1xcXFwoPzphbHBoYXxiZXRhfGdhbW1hfGRlbHRhfGVwc2lsb258emV0YXxldGF8dGhldGF8aW90YXxrYXBwYXxsYW1iZGF8bXV8bnV8eGl8b21pY3JvbnxwaXxyaG98c2lnbWF8dGF1fHVwc2lsb258cGhpfGNoaXxwc2l8b21lZ2EpXFxzKlxcJD8pKD86XFxzK3xcXHtcXH18KD8hW2EtekEtWl0pKSQvLFxuICAgICAgICAgICAgJ2RpZ2l0cyc6IC9eWzAtOV0rLyxcbiAgICAgICAgICAgICctOS4sOSc6IC9eWytcXC1dPyg/OlswLTldKyg/OlssLl1bMC05XSspP3xbMC05XSooPzpcXC5bMC05XSspKS8sXG4gICAgICAgICAgICAnLTkuLDkgbm8gbWlzc2luZyAwJzogL15bK1xcLV0/WzAtOV0rKD86Wy4sXVswLTldKyk/LyxcbiAgICAgICAgICAgICcoLSkoOS4sOSkoZSkoOTkpJzogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gaW5wdXQubWF0Y2goL14oXFwrXFwtfFxcK1xcL1xcLXxcXCt8XFwtfFxcXFxwbVxccz8pPyhbMC05XSsoPzpbLC5dWzAtOV0rKT98WzAtOV0qKD86XFwuWzAtOV0rKSk/KFxcKCg/OlswLTldKyg/OlssLl1bMC05XSspP3xbMC05XSooPzpcXC5bMC05XSspKVxcKSk/KD86KD86KFtlRV0pfFxccyooXFwqfHh8XFxcXHRpbWVzfFxcdTAwRDcpXFxzKjEwXFxeKShbK1xcLV0/WzAtOV0rfFxce1srXFwtXT9bMC05XStcXH0pKT8vKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2ggJiYgbWF0Y2hbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hfOiBtYXRjaC5zbGljZSgxKSwgcmVtYWluZGVyOiBpbnB1dC5zdWJzdHIobWF0Y2hbMF0ubGVuZ3RoKSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnKC0pKDkpXigtOSknOiAvXihcXCtcXC18XFwrXFwvXFwtfFxcK3xcXC18XFxcXHBtXFxzPyk/KFswLTldKyg/OlssLl1bMC05XSspP3xbMC05XSooPzpcXC5bMC05XSspPylcXF4oWytcXC1dP1swLTldK3xcXHtbK1xcLV0/WzAtOV0rXFx9KS8sXG4gICAgICAgICAgICAnc3RhdGUgb2YgYWdncmVnYXRpb24gJCc6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgICAgIHZhciBhID0gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcIiwgL15cXChbYS16XXsxLDN9KD89W1xcKSxdKS8sIFwiKVwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBpZiAoYSAmJiBhLnJlbWFpbmRlci5tYXRjaCgvXigkfFtcXHMsO1xcKVxcXVxcfV0pLykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IGlucHV0Lm1hdGNoKC9eKD86XFwoKD86XFxcXGNhXFxzPyk/XFwkW2Ftb3RoY11cXCRcXCkpLyk7XG4gICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoXzogbWF0Y2hbMF0sIHJlbWFpbmRlcjogaW5wdXQuc3Vic3RyKG1hdGNoWzBdLmxlbmd0aCkgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ197KHN0YXRlIG9mIGFnZ3JlZ2F0aW9uKX0kJzogL15fXFx7KFxcKFthLXpdezEsM31cXCkpXFx9LyxcbiAgICAgICAgICAgICd7WygnOiAvXig/OlxcXFxcXHt8XFxbfFxcKCkvLFxuICAgICAgICAgICAgJyldfSc6IC9eKD86XFwpfFxcXXxcXFxcXFx9KS8sXG4gICAgICAgICAgICAnLCAnOiAvXlssO11cXHMqLyxcbiAgICAgICAgICAgICcsJzogL15bLDtdLyxcbiAgICAgICAgICAgICcuJzogL15bLl0vLFxuICAgICAgICAgICAgJy4gX18qICc6IC9eKFsuXFx1MjJDNVxcdTAwQjdcXHUyMDIyXXxbKl0pXFxzKi8sXG4gICAgICAgICAgICAnLi4uJzogL15cXC5cXC5cXC4oPz0kfFteLl0pLyxcbiAgICAgICAgICAgICdeeyguLi4pfSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJee1wiLCBcIlwiLCBcIlwiLCBcIn1cIik7IH0sXG4gICAgICAgICAgICAnXigkLi4uJCknOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXlwiLCBcIiRcIiwgXCIkXCIsIFwiXCIpOyB9LFxuICAgICAgICAgICAgJ15hJzogL15cXF4oWzAtOV0rfFteXFxcXF9dKS8sXG4gICAgICAgICAgICAnXlxcXFx4e317fSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJeXCIsIC9eXFxcXFthLXpBLVpdK1xcey8sIFwifVwiLCBcIlwiLCBcIlwiLCBcIntcIiwgXCJ9XCIsIFwiXCIsIHRydWUpOyB9LFxuICAgICAgICAgICAgJ15cXFxceHt9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIl5cIiwgL15cXFxcW2EtekEtWl0rXFx7LywgXCJ9XCIsIFwiXCIpOyB9LFxuICAgICAgICAgICAgJ15cXFxceCc6IC9eXFxeKFxcXFxbYS16QS1aXSspXFxzKi8sXG4gICAgICAgICAgICAnXigtMSknOiAvXlxcXigtP1xcZCspLyxcbiAgICAgICAgICAgICdcXCcnOiAvXicvLFxuICAgICAgICAgICAgJ197KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIl97XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdfKCQuLi4kKSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJfXCIsIFwiJFwiLCBcIiRcIiwgXCJcIik7IH0sXG4gICAgICAgICAgICAnXzknOiAvXl8oWytcXC1dP1swLTldK3xbXlxcXFxdKS8sXG4gICAgICAgICAgICAnX1xcXFx4e317fSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJfXCIsIC9eXFxcXFthLXpBLVpdK1xcey8sIFwifVwiLCBcIlwiLCBcIlwiLCBcIntcIiwgXCJ9XCIsIFwiXCIsIHRydWUpOyB9LFxuICAgICAgICAgICAgJ19cXFxceHt9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIl9cIiwgL15cXFxcW2EtekEtWl0rXFx7LywgXCJ9XCIsIFwiXCIpOyB9LFxuICAgICAgICAgICAgJ19cXFxceCc6IC9eXyhcXFxcW2EtekEtWl0rKVxccyovLFxuICAgICAgICAgICAgJ15fJzogL14oPzpcXF4oPz1fKXxcXF8oPz1cXF4pfFtcXF5fXSQpLyxcbiAgICAgICAgICAgICd7fV4nOiAvXlxce1xcfSg/PVxcXikvLFxuICAgICAgICAgICAgJ3t9JzogL15cXHtcXH0vLFxuICAgICAgICAgICAgJ3suLi59JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlwiLCBcIntcIiwgXCJ9XCIsIFwiXCIpOyB9LFxuICAgICAgICAgICAgJ3soLi4uKX0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwie1wiLCBcIlwiLCBcIlwiLCBcIn1cIik7IH0sXG4gICAgICAgICAgICAnJC4uLiQnOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXCIsIFwiJFwiLCBcIiRcIiwgXCJcIik7IH0sXG4gICAgICAgICAgICAnJHsoLi4uKX0kX18kKC4uLikkJzogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiJHtcIiwgXCJcIiwgXCJcIiwgXCJ9JFwiKSB8fCBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIiRcIiwgXCJcIiwgXCJcIiwgXCIkXCIpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICc9PD4nOiAvXls9PD5dLyxcbiAgICAgICAgICAgICcjJzogL15bI1xcdTIyNjFdLyxcbiAgICAgICAgICAgICcrJzogL15cXCsvLFxuICAgICAgICAgICAgJy0kJzogL14tKD89W1xcc199LDtcXF0vXXwkfFxcKFthLXpdK1xcKSkvLFxuICAgICAgICAgICAgJy05JzogL14tKD89WzAtOV0pLyxcbiAgICAgICAgICAgICctIG9yYml0YWwgb3ZlcmxhcCc6IC9eLSg/PSg/OltzcGRdfHNwKSg/OiR8W1xccyw7XFwpXFxdXFx9XSkpLyxcbiAgICAgICAgICAgICctJzogL14tLyxcbiAgICAgICAgICAgICdwbS1vcGVyYXRvcic6IC9eKD86XFxcXHBtfFxcJFxcXFxwbVxcJHxcXCstfFxcK1xcLy0pLyxcbiAgICAgICAgICAgICdvcGVyYXRvcic6IC9eKD86XFwrfCg/OltcXC09PD5dfDw8fD4+fFxcXFxhcHByb3h8XFwkXFxcXGFwcHJveFxcJCkoPz1cXHN8JHwtP1swLTldKSkvLFxuICAgICAgICAgICAgJ2Fycm93VXBEb3duJzogL14oPzp2fFxcKHZcXCl8XFxefFxcKFxcXlxcKSkoPz0kfFtcXHMsO1xcKVxcXVxcfV0pLyxcbiAgICAgICAgICAgICdcXFxcYm9uZHsoLi4uKX0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXFxcXGJvbmR7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICctPic6IC9eKD86PC0+fDwtLT58LT58PC18PD0+Pnw8PD0+fDw9PnxbXFx1MjE5MlxcdTI3RjZcXHUyMUNDXSkvLFxuICAgICAgICAgICAgJ0NNVCc6IC9eW0NNVF0oPz1cXFspLyxcbiAgICAgICAgICAgICdbKC4uLildJzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIltcIiwgXCJcIiwgXCJcIiwgXCJdXCIpOyB9LFxuICAgICAgICAgICAgJzFzdC1sZXZlbCBlc2NhcGUnOiAvXigmfFxcXFxcXFxcfFxcXFxobGluZSlcXHMqLyxcbiAgICAgICAgICAgICdcXFxcLCc6IC9eKD86XFxcXFssXFwgOzpdKS8sXG4gICAgICAgICAgICAnXFxcXHh7fXt9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlwiLCAvXlxcXFxbYS16QS1aXStcXHsvLCBcIn1cIiwgXCJcIiwgXCJcIiwgXCJ7XCIsIFwifVwiLCBcIlwiLCB0cnVlKTsgfSxcbiAgICAgICAgICAgICdcXFxceHt9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlwiLCAvXlxcXFxbYS16QS1aXStcXHsvLCBcIn1cIiwgXCJcIik7IH0sXG4gICAgICAgICAgICAnXFxcXGNhJzogL15cXFxcY2EoPzpcXHMrfCg/IVthLXpBLVpdKSkvLFxuICAgICAgICAgICAgJ1xcXFx4JzogL14oPzpcXFxcW2EtekEtWl0rXFxzKnxcXFxcW18me30lXSkvLFxuICAgICAgICAgICAgJ29yYml0YWwnOiAvXig/OlswLTldezEsMn1bc3BkZmdoXXxbMC05XXswLDJ9c3ApKD89JHxbXmEtekEtWl0pLyxcbiAgICAgICAgICAgICdvdGhlcnMnOiAvXltcXC9+fF0vLFxuICAgICAgICAgICAgJ1xcXFxmcmFjeyguLi4pfSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcXFxcZnJhY3tcIiwgXCJcIiwgXCJcIiwgXCJ9XCIsIFwie1wiLCBcIlwiLCBcIlwiLCBcIn1cIik7IH0sXG4gICAgICAgICAgICAnXFxcXG92ZXJzZXR7KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlxcXFxvdmVyc2V0e1wiLCBcIlwiLCBcIlwiLCBcIn1cIiwgXCJ7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdcXFxcdW5kZXJzZXR7KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlxcXFx1bmRlcnNldHtcIiwgXCJcIiwgXCJcIiwgXCJ9XCIsIFwie1wiLCBcIlwiLCBcIlwiLCBcIn1cIik7IH0sXG4gICAgICAgICAgICAnXFxcXHVuZGVyYnJhY2V7KC4uLil9JzogZnVuY3Rpb24gKGlucHV0KSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlxcXFx1bmRlcmJyYWNle1wiLCBcIlwiLCBcIlwiLCBcIn1fXCIsIFwie1wiLCBcIlwiLCBcIlwiLCBcIn1cIik7IH0sXG4gICAgICAgICAgICAnXFxcXGNvbG9yeyguLi4pfSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcXFxcY29sb3J7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdcXFxcY29sb3J7KC4uLil9eyguLi4pfSc6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLmZpbmRPYnNlcnZlR3JvdXBzKGlucHV0LCBcIlxcXFxjb2xvcntcIiwgXCJcIiwgXCJcIiwgXCJ9XCIsIFwie1wiLCBcIlwiLCBcIlwiLCBcIn1cIikgfHxcbiAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcXFxcY29sb3JcIiwgXCJcXFxcXCIsIFwiXCIsIC9eKD89XFx7KS8sIFwie1wiLCBcIlwiLCBcIlwiLCBcIn1cIik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIucGF0dGVybnMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQsIFwiXFxcXGNle1wiLCBcIlwiLCBcIlwiLCBcIn1cIik7IH0sXG4gICAgICAgICAgICAnXFxcXHB1eyguLi4pfSc6IGZ1bmN0aW9uIChpbnB1dCkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcXFxccHV7XCIsIFwiXCIsIFwiXCIsIFwifVwiKTsgfSxcbiAgICAgICAgICAgICdveGlkYXRpb24kJzogL14oPzpbKy1dW0lWWF0rfCg/OlxcXFxwbXxcXCRcXFxccG1cXCR8XFwrLXxcXCtcXC8tKVxccyowKSQvLFxuICAgICAgICAgICAgJ2Qtb3hpZGF0aW9uJCc6IC9eKD86WystXT9bSVZYXSt8KD86XFxcXHBtfFxcJFxcXFxwbVxcJHxcXCstfFxcK1xcLy0pXFxzKjApJC8sXG4gICAgICAgICAgICAnMS8yJCc6IC9eWytcXC1dPyg/OlswLTldK3xcXCRbYS16XVxcJHxbYS16XSlcXC9bMC05XSsoPzpcXCRbYS16XVxcJHxbYS16XSk/JC8sXG4gICAgICAgICAgICAnYW1vdW50JzogZnVuY3Rpb24gKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgdmFyIG1hdGNoO1xuICAgICAgICAgICAgICAgIG1hdGNoID0gaW5wdXQubWF0Y2goL14oPzooPzooPzpcXChbK1xcLV0/WzAtOV0rXFwvWzAtOV0rXFwpfFsrXFwtXT8oPzpbMC05XSt8XFwkW2Etel1cXCR8W2Etel0pXFwvWzAtOV0rfFsrXFwtXT9bMC05XStbLixdWzAtOV0rfFsrXFwtXT9cXC5bMC05XSt8WytcXC1dP1swLTldKykoPzpbYS16XSg/PVxccypbQS1aXSkpPyl8WytcXC1dP1thLXpdKD89XFxzKltBLVpdKXxcXCsoPyFcXHMpKS8pO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaF86IG1hdGNoWzBdLCByZW1haW5kZXI6IGlucHV0LnN1YnN0cihtYXRjaFswXS5sZW5ndGgpIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBhID0gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgXCJcIiwgXCIkXCIsIFwiJFwiLCBcIlwiKTtcbiAgICAgICAgICAgICAgICBpZiAoYSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IGEubWF0Y2hfLm1hdGNoKC9eXFwkKD86XFwoP1srXFwtXT8oPzpbMC05XSpbYS16XT9bK1xcLV0pP1swLTldKlthLXpdKD86WytcXC1dWzAtOV0qW2Etel0/KT9cXCk/fFxcK3wtKVxcJCQvKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBtYXRjaF86IG1hdGNoWzBdLCByZW1haW5kZXI6IGlucHV0LnN1YnN0cihtYXRjaFswXS5sZW5ndGgpIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgJ2Ftb3VudDInOiBmdW5jdGlvbiAoaW5wdXQpIHsgcmV0dXJuIHRoaXNbJ2Ftb3VudCddKGlucHV0KTsgfSxcbiAgICAgICAgICAgICcoS1YgbGV0dGVycyksJzogL14oPzpbQS1aXVthLXpdezAsMn18aSkoPz0sKS8sXG4gICAgICAgICAgICAnZm9ybXVsYSQnOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQubWF0Y2goL15cXChbYS16XStcXCkkLykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IGlucHV0Lm1hdGNoKC9eKD86W2Etel18KD86WzAtOVxcIFxcK1xcLVxcLFxcLlxcKFxcKV0rW2Etel0pK1swLTlcXCBcXCtcXC1cXCxcXC5cXChcXCldKnwoPzpbYS16XVswLTlcXCBcXCtcXC1cXCxcXC5cXChcXCldKykrW2Etel0/KSQvKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgbWF0Y2hfOiBtYXRjaFswXSwgcmVtYWluZGVyOiBpbnB1dC5zdWJzdHIobWF0Y2hbMF0ubGVuZ3RoKSB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAndXByaWdodEVudGl0aWVzJzogL14oPzpwSHxwT0h8cEN8cEt8aVByfGlCdSkoPz0kfFteYS16QS1aXSkvLFxuICAgICAgICAgICAgJy8nOiAvXlxccyooXFwvKVxccyovLFxuICAgICAgICAgICAgJy8vJzogL15cXHMqKFxcL1xcLylcXHMqLyxcbiAgICAgICAgICAgICcqJzogL15cXHMqWyouXVxccyovXG4gICAgICAgIH0sXG4gICAgICAgIGZpbmRPYnNlcnZlR3JvdXBzOiBmdW5jdGlvbiAoaW5wdXQsIGJlZ0V4Y2wsIGJlZ0luY2wsIGVuZEluY2wsIGVuZEV4Y2wsIGJlZzJFeGNsLCBiZWcySW5jbCwgZW5kMkluY2wsIGVuZDJFeGNsLCBjb21iaW5lKSB7XG4gICAgICAgICAgICB2YXIgX21hdGNoID0gZnVuY3Rpb24gKGlucHV0LCBwYXR0ZXJuKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5pbmRleE9mKHBhdHRlcm4pICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGF0dGVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaF8xID0gaW5wdXQubWF0Y2gocGF0dGVybik7XG4gICAgICAgICAgICAgICAgICAgIGlmICghbWF0Y2hfMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoXzFbMF07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHZhciBfZmluZE9ic2VydmVHcm91cHMgPSBmdW5jdGlvbiAoaW5wdXQsIGksIGVuZENoYXJzKSB7XG4gICAgICAgICAgICAgICAgdmFyIGJyYWNlcyA9IDA7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBpbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBpbnB1dC5jaGFyQXQoaSk7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaF8yID0gX21hdGNoKGlucHV0LnN1YnN0cihpKSwgZW5kQ2hhcnMpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2hfMiAhPT0gbnVsbCAmJiBicmFjZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IGVuZE1hdGNoQmVnaW46IGksIGVuZE1hdGNoRW5kOiBpICsgbWF0Y2hfMi5sZW5ndGggfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChhID09PSBcIntcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJhY2VzKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYSA9PT0gXCJ9XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChicmFjZXMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBbXCJFeHRyYUNsb3NlTWlzc2luZ09wZW5cIiwgXCJFeHRyYSBjbG9zZSBicmFjZSBvciBtaXNzaW5nIG9wZW4gYnJhY2VcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmFjZXMtLTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChicmFjZXMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB2YXIgbWF0Y2ggPSBfbWF0Y2goaW5wdXQsIGJlZ0V4Y2wpO1xuICAgICAgICAgICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnB1dCA9IGlucHV0LnN1YnN0cihtYXRjaC5sZW5ndGgpO1xuICAgICAgICAgICAgbWF0Y2ggPSBfbWF0Y2goaW5wdXQsIGJlZ0luY2wpO1xuICAgICAgICAgICAgaWYgKG1hdGNoID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgZSA9IF9maW5kT2JzZXJ2ZUdyb3VwcyhpbnB1dCwgbWF0Y2gubGVuZ3RoLCBlbmRJbmNsIHx8IGVuZEV4Y2wpO1xuICAgICAgICAgICAgaWYgKGUgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBtYXRjaDEgPSBpbnB1dC5zdWJzdHJpbmcoMCwgKGVuZEluY2wgPyBlLmVuZE1hdGNoRW5kIDogZS5lbmRNYXRjaEJlZ2luKSk7XG4gICAgICAgICAgICBpZiAoIShiZWcyRXhjbCB8fCBiZWcySW5jbCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaF86IG1hdGNoMSxcbiAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyOiBpbnB1dC5zdWJzdHIoZS5lbmRNYXRjaEVuZClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGdyb3VwMiA9IHRoaXMuZmluZE9ic2VydmVHcm91cHMoaW5wdXQuc3Vic3RyKGUuZW5kTWF0Y2hFbmQpLCBiZWcyRXhjbCwgYmVnMkluY2wsIGVuZDJJbmNsLCBlbmQyRXhjbCk7XG4gICAgICAgICAgICAgICAgaWYgKGdyb3VwMiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdmFyIG1hdGNoUmV0ID0gW21hdGNoMSwgZ3JvdXAyLm1hdGNoX107XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hfOiAoY29tYmluZSA/IG1hdGNoUmV0LmpvaW4oXCJcIikgOiBtYXRjaFJldCksXG4gICAgICAgICAgICAgICAgICAgIHJlbWFpbmRlcjogZ3JvdXAyLnJlbWFpbmRlclxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG1hdGNoXzogZnVuY3Rpb24gKG0sIGlucHV0KSB7XG4gICAgICAgICAgICB2YXIgcGF0dGVybiA9IF9taGNoZW1QYXJzZXIucGF0dGVybnMucGF0dGVybnNbbV07XG4gICAgICAgICAgICBpZiAocGF0dGVybiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgW1wiTWhjaGVtQnVnUFwiLCBcIm1oY2hlbSBidWcgUC4gUGxlYXNlIHJlcG9ydC4gKFwiICsgbSArIFwiKVwiXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVvZiBwYXR0ZXJuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX21oY2hlbVBhcnNlci5wYXR0ZXJucy5wYXR0ZXJuc1ttXShpbnB1dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgbWF0Y2ggPSBpbnB1dC5tYXRjaChwYXR0ZXJuKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoLmxlbmd0aCA+IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoXzogbWF0Y2guc2xpY2UoMSksIHJlbWFpbmRlcjogaW5wdXQuc3Vic3RyKG1hdGNoWzBdLmxlbmd0aCkgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IG1hdGNoXzogbWF0Y2hbMV0gfHwgbWF0Y2hbMF0sIHJlbWFpbmRlcjogaW5wdXQuc3Vic3RyKG1hdGNoWzBdLmxlbmd0aCkgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgICAnYT0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci5hID0gKGJ1ZmZlci5hIHx8IFwiXCIpICsgbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgJ2I9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIuYiA9IChidWZmZXIuYiB8fCBcIlwiKSArIG07IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICdwPSc6IGZ1bmN0aW9uIChidWZmZXIsIG0pIHsgYnVmZmVyLnAgPSAoYnVmZmVyLnAgfHwgXCJcIikgKyBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAnbz0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci5vID0gKGJ1ZmZlci5vIHx8IFwiXCIpICsgbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgJ289K3AxJzogZnVuY3Rpb24gKGJ1ZmZlciwgX20sIGEpIHsgYnVmZmVyLm8gPSAoYnVmZmVyLm8gfHwgXCJcIikgKyBhOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAncT0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci5xID0gKGJ1ZmZlci5xIHx8IFwiXCIpICsgbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgJ2Q9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIuZCA9IChidWZmZXIuZCB8fCBcIlwiKSArIG07IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICdybT0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci5ybSA9IChidWZmZXIucm0gfHwgXCJcIikgKyBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAndGV4dD0nOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7IGJ1ZmZlci50ZXh0XyA9IChidWZmZXIudGV4dF8gfHwgXCJcIikgKyBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAnaW5zZXJ0JzogZnVuY3Rpb24gKF9idWZmZXIsIF9tLCBhKSB7IHJldHVybiB7IHR5cGVfOiBhIH07IH0sXG4gICAgICAgICdpbnNlcnQrcDEnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSwgYSkgeyByZXR1cm4geyB0eXBlXzogYSwgcDE6IG0gfTsgfSxcbiAgICAgICAgJ2luc2VydCtwMStwMic6IGZ1bmN0aW9uIChfYnVmZmVyLCBtLCBhKSB7IHJldHVybiB7IHR5cGVfOiBhLCBwMTogbVswXSwgcDI6IG1bMV0gfTsgfSxcbiAgICAgICAgJ2NvcHknOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4gbTsgfSxcbiAgICAgICAgJ3dyaXRlJzogZnVuY3Rpb24gKF9idWZmZXIsIF9tLCBhKSB7IHJldHVybiBhOyB9LFxuICAgICAgICAncm0nOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4geyB0eXBlXzogJ3JtJywgcDE6IG0gfTsgfSxcbiAgICAgICAgJ3RleHQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5nbyhtLCAndGV4dCcpOyB9LFxuICAgICAgICAndGV4LW1hdGgnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5nbyhtLCAndGV4LW1hdGgnKTsgfSxcbiAgICAgICAgJ3RleC1tYXRoIHRpZ2h0JzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIuZ28obSwgJ3RleC1tYXRoIHRpZ2h0Jyk7IH0sXG4gICAgICAgICdib25kJzogZnVuY3Rpb24gKF9idWZmZXIsIG0sIGspIHsgcmV0dXJuIHsgdHlwZV86ICdib25kJywga2luZF86IGsgfHwgbSB9OyB9LFxuICAgICAgICAnY29sb3IwLW91dHB1dCc6IGZ1bmN0aW9uIChfYnVmZmVyLCBtKSB7IHJldHVybiB7IHR5cGVfOiAnY29sb3IwJywgY29sb3I6IG0gfTsgfSxcbiAgICAgICAgJ2NlJzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHsgcmV0dXJuIF9taGNoZW1QYXJzZXIuZ28obSwgJ2NlJyk7IH0sXG4gICAgICAgICdwdSc6IGZ1bmN0aW9uIChfYnVmZmVyLCBtKSB7IHJldHVybiBfbWhjaGVtUGFyc2VyLmdvKG0sICdwdScpOyB9LFxuICAgICAgICAnMS8yJzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHtcbiAgICAgICAgICAgIHZhciByZXQgPSBbXTtcbiAgICAgICAgICAgIGlmIChtLm1hdGNoKC9eWytcXC1dLykpIHtcbiAgICAgICAgICAgICAgICByZXQucHVzaChtLnN1YnN0cigwLCAxKSk7XG4gICAgICAgICAgICAgICAgbSA9IG0uc3Vic3RyKDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIG4gPSBtLm1hdGNoKC9eKFswLTldK3xcXCRbYS16XVxcJHxbYS16XSlcXC8oWzAtOV0rKShcXCRbYS16XVxcJHxbYS16XSk/JC8pO1xuICAgICAgICAgICAgblsxXSA9IG5bMV0ucmVwbGFjZSgvXFwkL2csIFwiXCIpO1xuICAgICAgICAgICAgcmV0LnB1c2goeyB0eXBlXzogJ2ZyYWMnLCBwMTogblsxXSwgcDI6IG5bMl0gfSk7XG4gICAgICAgICAgICBpZiAoblszXSkge1xuICAgICAgICAgICAgICAgIG5bM10gPSBuWzNdLnJlcGxhY2UoL1xcJC9nLCBcIlwiKTtcbiAgICAgICAgICAgICAgICByZXQucHVzaCh7IHR5cGVfOiAndGV4LW1hdGgnLCBwMTogblszXSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH0sXG4gICAgICAgICc5LDknOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkgeyByZXR1cm4gX21oY2hlbVBhcnNlci5nbyhtLCAnOSw5Jyk7IH1cbiAgICB9LFxuICAgIHN0YXRlTWFjaGluZXM6IHtcbiAgICAgICAgJ3RleCc6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86ICdjb3B5JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGNleyguLi4pfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFt7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwie1wiIH0sICdjZScsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ9XCIgfV0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxwdXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIntcIiB9LCAncHUnLCB7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwifVwiIH1dIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJ2NvcHknIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7fVxuICAgICAgICB9LFxuICAgICAgICAnY2UnOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnb3V0cHV0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyJzogeyBhY3Rpb25fOiAnYmVnaW5zV2l0aEJvbmQ9ZmFsc2UnLCByZXZpc2l0OiB0cnVlLCB0b0NvbnRpbnVlOiB0cnVlIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdveGlkYXRpb24kJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJ294aWRhdGlvbi1vdXRwdXQnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdDTVQnOiB7XG4gICAgICAgICAgICAgICAgICAgICdyJzogeyBhY3Rpb25fOiAncmR0PScsIG5leHRTdGF0ZTogJ3J0JyB9LFxuICAgICAgICAgICAgICAgICAgICAncmQnOiB7IGFjdGlvbl86ICdycXQ9JywgbmV4dFN0YXRlOiAncmR0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnYXJyb3dVcERvd24nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8Mnxhcyc6IHsgYWN0aW9uXzogWydzYj1mYWxzZScsICdvdXRwdXQnLCAnb3BlcmF0b3InXSwgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3VwcmlnaHRFbnRpdGllcyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyJzogeyBhY3Rpb25fOiBbJ289JywgJ291dHB1dCddLCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnb3JiaXRhbCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfDMnOiB7IGFjdGlvbl86ICdvPScsIG5leHRTdGF0ZTogJ28nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICctPic6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfDMnOiB7IGFjdGlvbl86ICdyPScsIG5leHRTdGF0ZTogJ3InIH0sXG4gICAgICAgICAgICAgICAgICAgICdhfGFzJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdyPSddLCBuZXh0U3RhdGU6ICdyJyB9LFxuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAncj0nXSwgbmV4dFN0YXRlOiAncicgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJysnOiB7XG4gICAgICAgICAgICAgICAgICAgICdvJzogeyBhY3Rpb25fOiAnZD0ga3YnLCBuZXh0U3RhdGU6ICdkJyB9LFxuICAgICAgICAgICAgICAgICAgICAnZHxEJzogeyBhY3Rpb25fOiAnZD0nLCBuZXh0U3RhdGU6ICdkJyB9LFxuICAgICAgICAgICAgICAgICAgICAncSc6IHsgYWN0aW9uXzogJ2Q9JywgbmV4dFN0YXRlOiAncWQnIH0sXG4gICAgICAgICAgICAgICAgICAgICdxZHxxRCc6IHsgYWN0aW9uXzogJ2Q9JywgbmV4dFN0YXRlOiAncWQnIH0sXG4gICAgICAgICAgICAgICAgICAgICdkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnZD0nXSwgbmV4dFN0YXRlOiAnZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJzMnOiB7IGFjdGlvbl86IFsnc2I9ZmFsc2UnLCAnb3V0cHV0JywgJ29wZXJhdG9yJ10sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdhbW91bnQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDInOiB7IGFjdGlvbl86ICdhPScsIG5leHRTdGF0ZTogJ2EnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdwbS1vcGVyYXRvcic6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfGF8YXMnOiB7IGFjdGlvbl86IFsnc2I9ZmFsc2UnLCAnb3V0cHV0JywgeyB0eXBlXzogJ29wZXJhdG9yJywgb3B0aW9uOiAnXFxcXHBtJyB9XSwgbmV4dFN0YXRlOiAnMCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ29wZXJhdG9yJzoge1xuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8YXxhcyc6IHsgYWN0aW9uXzogWydzYj1mYWxzZScsICdvdXRwdXQnLCAnb3BlcmF0b3InXSwgbmV4dFN0YXRlOiAnMCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJy0kJzoge1xuICAgICAgICAgICAgICAgICAgICAnb3xxJzogeyBhY3Rpb25fOiBbJ2NoYXJnZSBvciBib25kJywgJ291dHB1dCddLCBuZXh0U3RhdGU6ICdxZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2QnOiB7IGFjdGlvbl86ICdkPScsIG5leHRTdGF0ZTogJ2QnIH0sXG4gICAgICAgICAgICAgICAgICAgICdEJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3EnOiB7IGFjdGlvbl86ICdkPScsIG5leHRTdGF0ZTogJ3FkJyB9LFxuICAgICAgICAgICAgICAgICAgICAncWQnOiB7IGFjdGlvbl86ICdkPScsIG5leHRTdGF0ZTogJ3FkJyB9LFxuICAgICAgICAgICAgICAgICAgICAncUR8ZHEnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgeyB0eXBlXzogJ2JvbmQnLCBvcHRpb246IFwiLVwiIH1dLCBuZXh0U3RhdGU6ICczJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLTknOiB7XG4gICAgICAgICAgICAgICAgICAgICczfG8nOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgeyB0eXBlXzogJ2luc2VydCcsIG9wdGlvbjogJ2h5cGhlbicgfV0sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICctIG9yYml0YWwgb3ZlcmxhcCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ28nOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgeyB0eXBlXzogJ2luc2VydCcsIG9wdGlvbjogJ2h5cGhlbicgfV0sIG5leHRTdGF0ZTogJzInIH0sXG4gICAgICAgICAgICAgICAgICAgICdkJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdpbnNlcnQnLCBvcHRpb246ICdoeXBoZW4nIH1dLCBuZXh0U3RhdGU6ICcyJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMSB9LCAnYmVnaW5zV2l0aEJvbmQ9dHJ1ZScsIHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfSxcbiAgICAgICAgICAgICAgICAgICAgJzMnOiB7IGFjdGlvbl86IHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9IH0sXG4gICAgICAgICAgICAgICAgICAgICdhJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdpbnNlcnQnLCBvcHRpb246ICdoeXBoZW4nIH1dLCBuZXh0U3RhdGU6ICcyJyB9LFxuICAgICAgICAgICAgICAgICAgICAnYXMnOiB7IGFjdGlvbl86IFt7IHR5cGVfOiAnb3V0cHV0Jywgb3B0aW9uOiAyIH0sIHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2InOiB7IGFjdGlvbl86ICdiPScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ28nOiB7IGFjdGlvbl86IHsgdHlwZV86ICctIGFmdGVyIG8vZCcsIG9wdGlvbjogZmFsc2UgfSwgbmV4dFN0YXRlOiAnMicgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3EnOiB7IGFjdGlvbl86IHsgdHlwZV86ICctIGFmdGVyIG8vZCcsIG9wdGlvbjogZmFsc2UgfSwgbmV4dFN0YXRlOiAnMicgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2R8cWR8ZHEnOiB7IGFjdGlvbl86IHsgdHlwZV86ICctIGFmdGVyIG8vZCcsIG9wdGlvbjogdHJ1ZSB9LCBuZXh0U3RhdGU6ICcyJyB9LFxuICAgICAgICAgICAgICAgICAgICAnRHxxRHxwJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdib25kJywgb3B0aW9uOiBcIi1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Ftb3VudDInOiB7XG4gICAgICAgICAgICAgICAgICAgICcxfDMnOiB7IGFjdGlvbl86ICdhPScsIG5leHRTdGF0ZTogJ2EnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdsZXR0ZXJzJzoge1xuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8M3xhfGFzfGJ8cHxicHxvJzogeyBhY3Rpb25fOiAnbz0nLCBuZXh0U3RhdGU6ICdvJyB9LFxuICAgICAgICAgICAgICAgICAgICAncXxkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnbz0nXSwgbmV4dFN0YXRlOiAnbycgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2R8RHxxZHxxRCc6IHsgYWN0aW9uXzogJ28gYWZ0ZXIgZCcsIG5leHRTdGF0ZTogJ28nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdkaWdpdHMnOiB7XG4gICAgICAgICAgICAgICAgICAgICdvJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdxJyB9LFxuICAgICAgICAgICAgICAgICAgICAnZHxEJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdkcScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3EnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ289J10sIG5leHRTdGF0ZTogJ28nIH0sXG4gICAgICAgICAgICAgICAgICAgICdhJzogeyBhY3Rpb25fOiAnbz0nLCBuZXh0U3RhdGU6ICdvJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnc3BhY2UgQSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2J8cHxicCc6IHsgYWN0aW9uXzogW10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3NwYWNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnYSc6IHsgYWN0aW9uXzogW10sIG5leHRTdGF0ZTogJ2FzJyB9LFxuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJ3NiPWZhbHNlJyB9LFxuICAgICAgICAgICAgICAgICAgICAnMXwyJzogeyBhY3Rpb25fOiAnc2I9dHJ1ZScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3J8cnR8cmR8cmR0fHJkcSc6IHsgYWN0aW9uXzogJ291dHB1dCcsIG5leHRTdGF0ZTogJzAnIH0sXG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdzYj10cnVlJ10sIG5leHRTdGF0ZTogJzEnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcxc3QtbGV2ZWwgZXNjYXBlJzoge1xuICAgICAgICAgICAgICAgICAgICAnMXwyJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICdpbnNlcnQrcDEnLCBvcHRpb246ICcxc3QtbGV2ZWwgZXNjYXBlJyB9XSB9LFxuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCB7IHR5cGVfOiAnaW5zZXJ0K3AxJywgb3B0aW9uOiAnMXN0LWxldmVsIGVzY2FwZScgfV0sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdbKC4uLildJzoge1xuICAgICAgICAgICAgICAgICAgICAncnxydCc6IHsgYWN0aW9uXzogJ3JkPScsIG5leHRTdGF0ZTogJ3JkJyB9LFxuICAgICAgICAgICAgICAgICAgICAncmR8cmR0JzogeyBhY3Rpb25fOiAncnE9JywgbmV4dFN0YXRlOiAncmRxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLi4uJzoge1xuICAgICAgICAgICAgICAgICAgICAnb3xkfER8ZHF8cWR8cUQnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgeyB0eXBlXzogJ2JvbmQnLCBvcHRpb246IFwiLi4uXCIgfV0sIG5leHRTdGF0ZTogJzMnIH0sXG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMSB9LCB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnZWxsaXBzaXMnIH1dLCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLiBfXyogJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnYWRkaXRpb24gY29tcG91bmQnIH1dLCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnc3RhdGUgb2YgYWdncmVnYXRpb24gJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ3N0YXRlIG9mIGFnZ3JlZ2F0aW9uJ10sIG5leHRTdGF0ZTogJzEnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd7WygnOiB7XG4gICAgICAgICAgICAgICAgICAgICdhfGFzfG8nOiB7IGFjdGlvbl86IFsnbz0nLCAnb3V0cHV0JywgJ3BhcmVudGhlc2lzTGV2ZWwrKyddLCBuZXh0U3RhdGU6ICcyJyB9LFxuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8Myc6IHsgYWN0aW9uXzogWydvPScsICdvdXRwdXQnLCAncGFyZW50aGVzaXNMZXZlbCsrJ10sIG5leHRTdGF0ZTogJzInIH0sXG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdvPScsICdvdXRwdXQnLCAncGFyZW50aGVzaXNMZXZlbCsrJ10sIG5leHRTdGF0ZTogJzInIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcpXX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8MnwzfGJ8cHxicHxvJzogeyBhY3Rpb25fOiBbJ289JywgJ3BhcmVudGhlc2lzTGV2ZWwtLSddLCBuZXh0U3RhdGU6ICdvJyB9LFxuICAgICAgICAgICAgICAgICAgICAnYXxhc3xkfER8cXxxZHxxRHxkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnbz0nLCAncGFyZW50aGVzaXNMZXZlbC0tJ10sIG5leHRTdGF0ZTogJ28nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcsICc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ2NvbW1hJ10sIG5leHRTdGF0ZTogJzAnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdeXyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFtdIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdeeyguLi4pfXxeKCQuLi4kKSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfGFzJzogeyBhY3Rpb25fOiAnYj0nLCBuZXh0U3RhdGU6ICdiJyB9LFxuICAgICAgICAgICAgICAgICAgICAncCc6IHsgYWN0aW9uXzogJ2I9JywgbmV4dFN0YXRlOiAnYnAnIH0sXG4gICAgICAgICAgICAgICAgICAgICczfG8nOiB7IGFjdGlvbl86ICdkPSBrdicsIG5leHRTdGF0ZTogJ0QnIH0sXG4gICAgICAgICAgICAgICAgICAgICdxJzogeyBhY3Rpb25fOiAnZD0nLCBuZXh0U3RhdGU6ICdxRCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2R8RHxxZHxxRHxkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnZD0nXSwgbmV4dFN0YXRlOiAnRCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ15hfF5cXFxceHt9e318XlxcXFx4e318XlxcXFx4fFxcJyc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8MXwyfGFzJzogeyBhY3Rpb25fOiAnYj0nLCBuZXh0U3RhdGU6ICdiJyB9LFxuICAgICAgICAgICAgICAgICAgICAncCc6IHsgYWN0aW9uXzogJ2I9JywgbmV4dFN0YXRlOiAnYnAnIH0sXG4gICAgICAgICAgICAgICAgICAgICczfG8nOiB7IGFjdGlvbl86ICdkPSBrdicsIG5leHRTdGF0ZTogJ2QnIH0sXG4gICAgICAgICAgICAgICAgICAgICdxJzogeyBhY3Rpb25fOiAnZD0nLCBuZXh0U3RhdGU6ICdxZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2R8cWR8RHxxRCc6IHsgYWN0aW9uXzogJ2Q9JyB9LFxuICAgICAgICAgICAgICAgICAgICAnZHEnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ2Q9J10sIG5leHRTdGF0ZTogJ2QnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdfeyhzdGF0ZSBvZiBhZ2dyZWdhdGlvbil9JCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2R8RHxxfHFkfHFEfGRxJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdxPSddLCBuZXh0U3RhdGU6ICdxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnX3soLi4uKX18XygkLi4uJCl8Xzl8X1xcXFx4e317fXxfXFxcXHh7fXxfXFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8Mnxhcyc6IHsgYWN0aW9uXzogJ3A9JywgbmV4dFN0YXRlOiAncCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2InOiB7IGFjdGlvbl86ICdwPScsIG5leHRTdGF0ZTogJ2JwJyB9LFxuICAgICAgICAgICAgICAgICAgICAnM3xvJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdxJyB9LFxuICAgICAgICAgICAgICAgICAgICAnZHxEJzogeyBhY3Rpb25fOiAncT0nLCBuZXh0U3RhdGU6ICdkcScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3F8cWR8cUR8ZHEnOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ3E9J10sIG5leHRTdGF0ZTogJ3EnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICc9PD4nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8MnwzfGF8YXN8b3xxfGR8RHxxZHxxRHxkcSc6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDIgfSwgJ2JvbmQnXSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8MnwzfGF8YXN8byc6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDIgfSwgeyB0eXBlXzogJ2JvbmQnLCBvcHRpb246IFwiI1wiIH1dLCBuZXh0U3RhdGU6ICczJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAne31eJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDEgfSwgeyB0eXBlXzogJ2luc2VydCcsIG9wdGlvbjogJ3RpbnlTa2lwJyB9XSwgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3t9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMSB9LCBuZXh0U3RhdGU6ICcxJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAney4uLn0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfDF8MnwzfGF8YXN8YnxwfGJwJzogeyBhY3Rpb25fOiAnbz0nLCBuZXh0U3RhdGU6ICdvJyB9LFxuICAgICAgICAgICAgICAgICAgICAnb3xkfER8cXxxZHxxRHxkcSc6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnbz0nXSwgbmV4dFN0YXRlOiAnbycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyQuLi4kJzoge1xuICAgICAgICAgICAgICAgICAgICAnYSc6IHsgYWN0aW9uXzogJ2E9JyB9LFxuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8M3xhc3xifHB8YnB8byc6IHsgYWN0aW9uXzogJ289JywgbmV4dFN0YXRlOiAnbycgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2FzfG8nOiB7IGFjdGlvbl86ICdvPScgfSxcbiAgICAgICAgICAgICAgICAgICAgJ3F8ZHxEfHFkfHFEfGRxJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdvPSddLCBuZXh0U3RhdGU6ICdvJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGJvbmR7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDIgfSwgJ2JvbmQnXSwgbmV4dFN0YXRlOiBcIjNcIiB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGZyYWN7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDEgfSwgJ2ZyYWMtb3V0cHV0J10sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxcb3ZlcnNldHsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMiB9LCAnb3ZlcnNldC1vdXRwdXQnXSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFx1bmRlcnNldHsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMiB9LCAndW5kZXJzZXQtb3V0cHV0J10sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxcdW5kZXJicmFjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMiB9LCAndW5kZXJicmFjZS1vdXRwdXQnXSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX17KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDIgfSwgJ2NvbG9yLW91dHB1dCddLCBuZXh0U3RhdGU6ICczJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXGNvbG9yeyguLi4pfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFt7IHR5cGVfOiAnb3V0cHV0Jywgb3B0aW9uOiAyIH0sICdjb2xvcjAtb3V0cHV0J10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMiB9LCAnY2UnXSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFwsJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICdvdXRwdXQnLCBvcHRpb246IDEgfSwgJ2NvcHknXSwgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxwdXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ7XCIgfSwgJ3B1JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSwgbmV4dFN0YXRlOiAnMycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFx4e317fXxcXFxceHt9fFxcXFx4Jzoge1xuICAgICAgICAgICAgICAgICAgICAnMHwxfDJ8M3xhfGFzfGJ8cHxicHxvfGMwJzogeyBhY3Rpb25fOiBbJ289JywgJ291dHB1dCddLCBuZXh0U3RhdGU6ICczJyB9LFxuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnbz0nLCAnb3V0cHV0J10sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdvdGhlcnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ291dHB1dCcsIG9wdGlvbjogMSB9LCAnY29weSddLCBuZXh0U3RhdGU6ICczJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZTInOiB7XG4gICAgICAgICAgICAgICAgICAgICdhJzogeyBhY3Rpb25fOiAnYSB0byBvJywgbmV4dFN0YXRlOiAnbycsIHJldmlzaXQ6IHRydWUgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2FzJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdzYj10cnVlJ10sIG5leHRTdGF0ZTogJzEnLCByZXZpc2l0OiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICdyfHJ0fHJkfHJkdHxyZHEnOiB7IGFjdGlvbl86IFsnb3V0cHV0J10sIG5leHRTdGF0ZTogJzAnLCByZXZpc2l0OiB0cnVlIH0sXG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdjb3B5J10sIG5leHRTdGF0ZTogJzMnIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAnbyBhZnRlciBkJzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmV0O1xuICAgICAgICAgICAgICAgICAgICBpZiAoKGJ1ZmZlci5kIHx8IFwiXCIpLm1hdGNoKC9eWzEtOV1bMC05XSokLykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0bXAgPSBidWZmZXIuZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gdGhpc1snb3V0cHV0J10oYnVmZmVyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdHlwZV86ICd0aW55U2tpcCcgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYiA9IHRtcDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHRoaXNbJ291dHB1dCddKGJ1ZmZlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5hY3Rpb25zWydvPSddKGJ1ZmZlciwgbSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZD0ga3YnOiBmdW5jdGlvbiAoYnVmZmVyLCBtKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gbTtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmRUeXBlID0gJ2t2JztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdjaGFyZ2Ugb3IgYm9uZCc6IGZ1bmN0aW9uIChidWZmZXIsIG0pIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlclsnYmVnaW5zV2l0aEJvbmQnXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIHRoaXNbJ291dHB1dCddKGJ1ZmZlcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIF9taGNoZW1QYXJzZXIuYWN0aW9uc1snYm9uZCddKGJ1ZmZlciwgbSwgXCItXCIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuZCA9IG07XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLSBhZnRlciBvL2QnOiBmdW5jdGlvbiAoYnVmZmVyLCBtLCBpc0FmdGVyRCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzEgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnb3JiaXRhbCcsIGJ1ZmZlci5vIHx8IFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzIgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnb25lIGxvd2VyY2FzZSBncmVlayBsZXR0ZXIgJCcsIGJ1ZmZlci5vIHx8IFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzMgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnb25lIGxvd2VyY2FzZSBsYXRpbiBsZXR0ZXIgJCcsIGJ1ZmZlci5vIHx8IFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgYzQgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnJG9uZSBsb3dlcmNhc2UgbGF0aW4gbGV0dGVyJCAkJywgYnVmZmVyLm8gfHwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIHZhciBoeXBoZW5Gb2xsb3dzID0gbSA9PT0gXCItXCIgJiYgKGMxICYmIGMxLnJlbWFpbmRlciA9PT0gXCJcIiB8fCBjMiB8fCBjMyB8fCBjNCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChoeXBoZW5Gb2xsb3dzICYmICFidWZmZXIuYSAmJiAhYnVmZmVyLmIgJiYgIWJ1ZmZlci5wICYmICFidWZmZXIuZCAmJiAhYnVmZmVyLnEgJiYgIWMxICYmIGMzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIubyA9ICckJyArIGJ1ZmZlci5vICsgJyQnO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGh5cGhlbkZvbGxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9taGNoZW1QYXJzZXIuY29uY2F0QXJyYXkocmV0LCB0aGlzWydvdXRwdXQnXShidWZmZXIpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdHlwZV86ICdoeXBoZW4nIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYzEgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygnZGlnaXRzJywgYnVmZmVyLmQgfHwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBZnRlckQgJiYgYzEgJiYgYzEucmVtYWluZGVyID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9taGNoZW1QYXJzZXIuY29uY2F0QXJyYXkocmV0LCBfbWhjaGVtUGFyc2VyLmFjdGlvbnNbJ2Q9J10oYnVmZmVyLCBtKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIHRoaXNbJ291dHB1dCddKGJ1ZmZlcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIHRoaXNbJ291dHB1dCddKGJ1ZmZlcikpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9taGNoZW1QYXJzZXIuY29uY2F0QXJyYXkocmV0LCBfbWhjaGVtUGFyc2VyLmFjdGlvbnNbJ2JvbmQnXShidWZmZXIsIG0sIFwiLVwiKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdhIHRvIG8nOiBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5vID0gYnVmZmVyLmE7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3NiPXRydWUnOiBmdW5jdGlvbiAoYnVmZmVyKSB7IGJ1ZmZlci5zYiA9IHRydWU7IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICAgICAgICAgJ3NiPWZhbHNlJzogZnVuY3Rpb24gKGJ1ZmZlcikgeyBidWZmZXIuc2IgPSBmYWxzZTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAnYmVnaW5zV2l0aEJvbmQ9dHJ1ZSc6IGZ1bmN0aW9uIChidWZmZXIpIHsgYnVmZmVyWydiZWdpbnNXaXRoQm9uZCddID0gdHJ1ZTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAnYmVnaW5zV2l0aEJvbmQ9ZmFsc2UnOiBmdW5jdGlvbiAoYnVmZmVyKSB7IGJ1ZmZlclsnYmVnaW5zV2l0aEJvbmQnXSA9IGZhbHNlOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdwYXJlbnRoZXNpc0xldmVsKysnOiBmdW5jdGlvbiAoYnVmZmVyKSB7IGJ1ZmZlclsncGFyZW50aGVzaXNMZXZlbCddKys7IHJldHVybiB1bmRlZmluZWQ7IH0sXG4gICAgICAgICAgICAgICAgJ3BhcmVudGhlc2lzTGV2ZWwtLSc6IGZ1bmN0aW9uIChidWZmZXIpIHsgYnVmZmVyWydwYXJlbnRoZXNpc0xldmVsJ10tLTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAnc3RhdGUgb2YgYWdncmVnYXRpb24nOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ3N0YXRlIG9mIGFnZ3JlZ2F0aW9uJywgcDE6IF9taGNoZW1QYXJzZXIuZ28obSwgJ28nKSB9O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2NvbW1hJzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG0ucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG4gICAgICAgICAgICAgICAgICAgIHZhciB3aXRoU3BhY2UgPSAoYSAhPT0gbSk7XG4gICAgICAgICAgICAgICAgICAgIGlmICh3aXRoU3BhY2UgJiYgYnVmZmVyWydwYXJlbnRoZXNpc0xldmVsJ10gPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHR5cGVfOiAnY29tbWEgZW51bWVyYXRpb24gTCcsIHAxOiBhIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ2NvbW1hIGVudW1lcmF0aW9uIE0nLCBwMTogYSB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnb3V0cHV0JzogZnVuY3Rpb24gKGJ1ZmZlciwgX20sIGVudGl0eUZvbGxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFidWZmZXIucikge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci5hICYmICFidWZmZXIuYiAmJiAhYnVmZmVyLnAgJiYgIWJ1ZmZlci5vICYmICFidWZmZXIucSAmJiAhYnVmZmVyLmQgJiYgIWVudGl0eUZvbGxvd3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIuc2IpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goeyB0eXBlXzogJ2VudGl0eVNraXAnIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJ1ZmZlci5vICYmICFidWZmZXIucSAmJiAhYnVmZmVyLmQgJiYgIWJ1ZmZlci5iICYmICFidWZmZXIucCAmJiBlbnRpdHlGb2xsb3dzICE9PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5vID0gYnVmZmVyLmE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghYnVmZmVyLm8gJiYgIWJ1ZmZlci5xICYmICFidWZmZXIuZCAmJiAoYnVmZmVyLmIgfHwgYnVmZmVyLnApKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5vID0gYnVmZmVyLmE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gYnVmZmVyLmI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5xID0gYnVmZmVyLnA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hID0gYnVmZmVyLmIgPSBidWZmZXIucCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIubyAmJiBidWZmZXIuZFR5cGUgPT09ICdrdicgJiYgX21oY2hlbVBhcnNlci5wYXR0ZXJucy5tYXRjaF8oJ2Qtb3hpZGF0aW9uJCcsIGJ1ZmZlci5kIHx8IFwiXCIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuZFR5cGUgPSAnb3hpZGF0aW9uJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChidWZmZXIubyAmJiBidWZmZXIuZFR5cGUgPT09ICdrdicgJiYgIWJ1ZmZlci5xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuZFR5cGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlXzogJ2NoZW1maXZlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYTogX21oY2hlbVBhcnNlci5nbyhidWZmZXIuYSwgJ2EnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYjogX21oY2hlbVBhcnNlci5nbyhidWZmZXIuYiwgJ2JkJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHA6IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLnAsICdwcScpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvOiBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5vLCAnbycpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxOiBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5xLCAncHEnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZDogX21oY2hlbVBhcnNlci5nbyhidWZmZXIuZCwgKGJ1ZmZlci5kVHlwZSA9PT0gJ294aWRhdGlvbicgPyAnb3hpZGF0aW9uJyA6ICdiZCcpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFR5cGU6IGJ1ZmZlci5kVHlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJkID0gdm9pZCAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5yZHQgPT09ICdNJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkID0gX21oY2hlbVBhcnNlci5nbyhidWZmZXIucmQsICd0ZXgtbWF0aCcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYnVmZmVyLnJkdCA9PT0gJ1QnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmQgPSBbeyB0eXBlXzogJ3RleHQnLCBwMTogYnVmZmVyLnJkIHx8IFwiXCIgfV07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZCA9IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLnJkLCAnY2UnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBycSA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIucnF0ID09PSAnTScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycSA9IF9taGNoZW1QYXJzZXIuZ28oYnVmZmVyLnJxLCAndGV4LW1hdGgnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJ1ZmZlci5ycXQgPT09ICdUJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJxID0gW3sgdHlwZV86ICd0ZXh0JywgcDE6IGJ1ZmZlci5ycSB8fCBcIlwiIH1dO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnEgPSBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5ycSwgJ2NlJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZV86ICdhcnJvdycsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcjogYnVmZmVyLnIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmQ6IHJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJxOiBycVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAgIT09ICdwYXJlbnRoZXNpc0xldmVsJyAmJiBwICE9PSAnYmVnaW5zV2l0aEJvbmQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcltwXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ294aWRhdGlvbi1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gW1wie1wiXTtcbiAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIF9taGNoZW1QYXJzZXIuZ28obSwgJ294aWRhdGlvbicpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goXCJ9XCIpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2ZyYWMtb3V0cHV0JzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZV86ICdmcmFjLWNlJywgcDE6IF9taGNoZW1QYXJzZXIuZ28obVswXSwgJ2NlJyksIHAyOiBfbWhjaGVtUGFyc2VyLmdvKG1bMV0sICdjZScpIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnb3ZlcnNldC1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ292ZXJzZXQnLCBwMTogX21oY2hlbVBhcnNlci5nbyhtWzBdLCAnY2UnKSwgcDI6IF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ2NlJykgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd1bmRlcnNldC1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ3VuZGVyc2V0JywgcDE6IF9taGNoZW1QYXJzZXIuZ28obVswXSwgJ2NlJyksIHAyOiBfbWhjaGVtUGFyc2VyLmdvKG1bMV0sICdjZScpIH07XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAndW5kZXJicmFjZS1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ3VuZGVyYnJhY2UnLCBwMTogX21oY2hlbVBhcnNlci5nbyhtWzBdLCAnY2UnKSwgcDI6IF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ2NlJykgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdjb2xvci1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ2NvbG9yJywgY29sb3IxOiBtWzBdLCBjb2xvcjI6IF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ2NlJykgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdyPSc6IGZ1bmN0aW9uIChidWZmZXIsIG0pIHsgYnVmZmVyLnIgPSBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdyZHQ9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucmR0ID0gbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAncmQ9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucmQgPSBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdycXQ9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucnF0ID0gbTsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAncnE9JzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucnEgPSBtOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdvcGVyYXRvcic6IGZ1bmN0aW9uIChfYnVmZmVyLCBtLCBwMSkgeyByZXR1cm4geyB0eXBlXzogJ29wZXJhdG9yJywga2luZF86IChwMSB8fCBtKSB9OyB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdhJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJzEvMiQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAnMS8yJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFtdLCBuZXh0U3RhdGU6ICcxJywgcmV2aXNpdDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnJHsoLi4uKX0kX18kKC4uLikkJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3RleC1tYXRoIHRpZ2h0JywgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJywnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnY29tbWFEZWNpbWFsJyB9IH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlMic6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdjb3B5JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7fVxuICAgICAgICB9LFxuICAgICAgICAnbyc6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFtdIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcxLzIkJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJzEvMicgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Vsc2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiBbXSwgbmV4dFN0YXRlOiAnMScsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2xldHRlcnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxcY2EnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnY2lyY2EnIH0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxwdXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIntcIiB9LCAncHUnLCB7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwifVwiIH1dIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxceHt9e318XFxcXHh7fXxcXFxceCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdjb3B5JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnJHsoLi4uKX0kX18kKC4uLikkJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3RleC1tYXRoJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAneyguLi4pfSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFt7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwie1wiIH0sICd0ZXh0JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZTInOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29weScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge31cbiAgICAgICAgfSxcbiAgICAgICAgJ3RleHQnOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnb3V0cHV0JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAney4uLn0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGV4dD0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICckeyguLi4pfSRfXyQoLi4uKSQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGV4LW1hdGgnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxcZ3JlZWsnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdybSddIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxccHV7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCB7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwie1wiIH0sICdwdScsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ9XCIgfV0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFwsfFxcXFx4e317fXxcXFxceHt9fFxcXFx4Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnY29weSddIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3RleHQ9JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ291dHB1dCc6IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci50ZXh0Xykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IHsgdHlwZV86ICd0ZXh0JywgcDE6IGJ1ZmZlci50ZXh0XyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYnVmZmVyW3BdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ3BxJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3N0YXRlIG9mIGFnZ3JlZ2F0aW9uICQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnc3RhdGUgb2YgYWdncmVnYXRpb24nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdpJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFtdLCBuZXh0U3RhdGU6ICchZicsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyhLViBsZXR0ZXJzKSwnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAncm0nLCBuZXh0U3RhdGU6ICcwJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZm9ybXVsYSQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiBbXSwgbmV4dFN0YXRlOiAnZicsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJzEvMiQnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAnMS8yJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFtdLCBuZXh0U3RhdGU6ICchZicsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyR7KC4uLil9JF9fJCguLi4pJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICd0ZXgtbWF0aCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3soLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGV4dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Eteic6IHtcbiAgICAgICAgICAgICAgICAgICAgJ2YnOiB7IGFjdGlvbl86ICd0ZXgtbWF0aCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2xldHRlcnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICctOS4sOSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICc5LDknIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcsJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogeyB0eXBlXzogJ2luc2VydCtwMScsIG9wdGlvbjogJ2NvbW1hIGVudW1lcmF0aW9uIFMnIH0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX17KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvbG9yLW91dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29sb3IwLW91dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY2UnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxccHV7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ7XCIgfSwgJ3B1JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXCx8XFxcXHh7fXt9fFxcXFx4e318XFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29weScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Vsc2UyJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvcHknIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAnc3RhdGUgb2YgYWdncmVnYXRpb24nOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ3N0YXRlIG9mIGFnZ3JlZ2F0aW9uIHN1YnNjcmlwdCcsIHAxOiBfbWhjaGVtUGFyc2VyLmdvKG0sICdvJykgfTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdjb2xvci1vdXRwdXQnOiBmdW5jdGlvbiAoX2J1ZmZlciwgbSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB0eXBlXzogJ2NvbG9yJywgY29sb3IxOiBtWzBdLCBjb2xvcjI6IF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ3BxJykgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdiZCc6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFtdIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd4JCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFtdLCBuZXh0U3RhdGU6ICchZicsIHJldmlzaXQ6IHRydWUgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Zvcm11bGEkJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogW10sIG5leHRTdGF0ZTogJ2YnLCByZXZpc2l0OiB0cnVlIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogW10sIG5leHRTdGF0ZTogJyFmJywgcmV2aXNpdDogdHJ1ZSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLTkuLDkgbm8gbWlzc2luZyAwJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJzksOScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJy4nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAnZWxlY3Ryb24gZG90JyB9IH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdhLXonOiB7XG4gICAgICAgICAgICAgICAgICAgICdmJzogeyBhY3Rpb25fOiAndGV4LW1hdGgnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICd4Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogeyB0eXBlXzogJ2luc2VydCcsIG9wdGlvbjogJ0tWIHgnIH0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2xldHRlcnMnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm0nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXCcnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiB7IHR5cGVfOiAnaW5zZXJ0Jywgb3B0aW9uOiAncHJpbWUnIH0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJyR7KC4uLil9JF9fJCguLi4pJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICd0ZXgtbWF0aCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3soLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAndGV4dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX17KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvbG9yLW91dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjb2xvcnsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29sb3IwLW91dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY2UnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxccHV7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogW3sgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ7XCIgfSwgJ3B1JywgeyB0eXBlXzogJ3dyaXRlJywgb3B0aW9uOiBcIn1cIiB9XSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXCx8XFxcXHh7fXt9fFxcXFx4e318XFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29weScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Vsc2UyJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ2NvcHknIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGFjdGlvbnM6IHtcbiAgICAgICAgICAgICAgICAnY29sb3Itb3V0cHV0JzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgdHlwZV86ICdjb2xvcicsIGNvbG9yMTogbVswXSwgY29sb3IyOiBfbWhjaGVtUGFyc2VyLmdvKG1bMV0sICdiZCcpIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAnb3hpZGF0aW9uJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3JvbWFuLW51bWVyYWwnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdwbS1vcGVyYXRvcic6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IHsgdHlwZV86ICdvPStwMScsIG9wdGlvbjogXCJcXFxccG1cIiB9IH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdlbHNlJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ289JyB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhY3Rpb25zOiB7XG4gICAgICAgICAgICAgICAgJ3JvbWFuLW51bWVyYWwnOiBmdW5jdGlvbiAoYnVmZmVyKSB7IHJldHVybiB7IHR5cGVfOiAncm9tYW4gbnVtZXJhbCcsIHAxOiBidWZmZXIubyB8fCBcIlwiIH07IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ3RleC1tYXRoJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ291dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdjZSddIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxccHV7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCB7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwie1wiIH0sICdwdScsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ9XCIgfV0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3suLi59fFxcXFwsfFxcXFx4e317fXxcXFxceHt9fFxcXFx4Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ289JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdvPScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAgICdvdXRwdXQnOiBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIubykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IHsgdHlwZV86ICd0ZXgtbWF0aCcsIHAxOiBidWZmZXIubyB9O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYnVmZmVyW3BdO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ3RleC1tYXRoIHRpZ2h0Jzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ291dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ1xcXFxjZXsoLi4uKX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdjZSddIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdcXFxccHV7KC4uLil9Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCB7IHR5cGVfOiAnd3JpdGUnLCBvcHRpb246IFwie1wiIH0sICdwdScsIHsgdHlwZV86ICd3cml0ZScsIG9wdGlvbjogXCJ9XCIgfV0gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3suLi59fFxcXFwsfFxcXFx4e317fXxcXFxceHt9fFxcXFx4Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ289JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLXwrJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ3RpZ2h0IG9wZXJhdG9yJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdvPScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAgICd0aWdodCBvcGVyYXRvcic6IGZ1bmN0aW9uIChidWZmZXIsIG0pIHsgYnVmZmVyLm8gPSAoYnVmZmVyLm8gfHwgXCJcIikgKyBcIntcIiArIG0gKyBcIn1cIjsgcmV0dXJuIHVuZGVmaW5lZDsgfSxcbiAgICAgICAgICAgICAgICAnb3V0cHV0JzogZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLm8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSB7IHR5cGVfOiAndGV4LW1hdGgnLCBwMTogYnVmZmVyLm8gfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcltwXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICc5LDknOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbXSB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdjb21tYScgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ2Vsc2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAnY29weScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAgICdjb21tYSc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgdHlwZV86ICdjb21tYURlY2ltYWwnIH07IH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgJ3B1Jzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbnM6IF9taGNoZW1DcmVhdGVUcmFuc2l0aW9ucyh7XG4gICAgICAgICAgICAgICAgJ2VtcHR5Jzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogJ291dHB1dCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3NwYWNlJCc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86IFsnb3V0cHV0JywgJ3NwYWNlJ10gfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3tbKHwpXX0nOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfGEnOiB7IGFjdGlvbl86ICdjb3B5JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnKC0pKDkpXigtOSknOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAnbnVtYmVyXicsIG5leHRTdGF0ZTogJ2EnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcoLSkoOS4sOSkoZSkoOTkpJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogJ2VudW1iZXInLCBuZXh0U3RhdGU6ICdhJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnc3BhY2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfGEnOiB7IGFjdGlvbl86IFtdIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdwbS1vcGVyYXRvcic6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8YSc6IHsgYWN0aW9uXzogeyB0eXBlXzogJ29wZXJhdG9yJywgb3B0aW9uOiAnXFxcXHBtJyB9LCBuZXh0U3RhdGU6ICcwJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnb3BlcmF0b3InOiB7XG4gICAgICAgICAgICAgICAgICAgICcwfGEnOiB7IGFjdGlvbl86ICdjb3B5JywgbmV4dFN0YXRlOiAnMCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJy8vJzoge1xuICAgICAgICAgICAgICAgICAgICAnZCc6IHsgYWN0aW9uXzogJ289JywgbmV4dFN0YXRlOiAnLycgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJy8nOiB7XG4gICAgICAgICAgICAgICAgICAgICdkJzogeyBhY3Rpb25fOiAnbz0nLCBuZXh0U3RhdGU6ICcvJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAney4uLn18ZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzB8ZCc6IHsgYWN0aW9uXzogJ2Q9JywgbmV4dFN0YXRlOiAnZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJ2EnOiB7IGFjdGlvbl86IFsnc3BhY2UnLCAnZD0nXSwgbmV4dFN0YXRlOiAnZCcgfSxcbiAgICAgICAgICAgICAgICAgICAgJy98cSc6IHsgYWN0aW9uXzogJ3E9JywgbmV4dFN0YXRlOiAncScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAgICdlbnVtYmVyJzogZnVuY3Rpb24gKF9idWZmZXIsIG0pIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBpZiAobVswXSA9PT0gXCIrLVwiIHx8IG1bMF0gPT09IFwiKy8tXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKFwiXFxcXHBtIFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChtWzBdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChtWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobVsxXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ3B1LTksOScpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtWzJdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1bMl0ubWF0Y2goL1ssLl0vKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWhjaGVtUGFyc2VyLmNvbmNhdEFycmF5KHJldCwgX21oY2hlbVBhcnNlci5nbyhtWzJdLCAncHUtOSw5JykpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2gobVsyXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1bM10gfHwgbVs0XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtWzNdID09PSBcImVcIiB8fCBtWzRdID09PSBcIipcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh7IHR5cGVfOiAnY2RvdCcgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaCh7IHR5cGVfOiAndGltZXMnIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAobVs1XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goXCIxMF57XCIgKyBtWzVdICsgXCJ9XCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnbnVtYmVyXic6IGZ1bmN0aW9uIChfYnVmZmVyLCBtKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1bMF0gPT09IFwiKy1cIiB8fCBtWzBdID09PSBcIisvLVwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQucHVzaChcIlxcXFxwbSBcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAobVswXSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2gobVswXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgX21oY2hlbVBhcnNlci5jb25jYXRBcnJheShyZXQsIF9taGNoZW1QYXJzZXIuZ28obVsxXSwgJ3B1LTksOScpKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goXCJee1wiICsgbVsyXSArIFwifVwiKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdvcGVyYXRvcic6IGZ1bmN0aW9uIChfYnVmZmVyLCBtLCBwMSkgeyByZXR1cm4geyB0eXBlXzogJ29wZXJhdG9yJywga2luZF86IChwMSB8fCBtKSB9OyB9LFxuICAgICAgICAgICAgICAgICdzcGFjZSc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgdHlwZV86ICdwdS1zcGFjZS0xJyB9OyB9LFxuICAgICAgICAgICAgICAgICdvdXRwdXQnOiBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXQ7XG4gICAgICAgICAgICAgICAgICAgIHZhciBtZCA9IF9taGNoZW1QYXJzZXIucGF0dGVybnMubWF0Y2hfKCd7KC4uLil9JywgYnVmZmVyLmQgfHwgXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtZCAmJiBtZC5yZW1haW5kZXIgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuZCA9IG1kLm1hdGNoXztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgbXEgPSBfbWhjaGVtUGFyc2VyLnBhdHRlcm5zLm1hdGNoXygneyguLi4pfScsIGJ1ZmZlci5xIHx8IFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobXEgJiYgbXEucmVtYWluZGVyID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnEgPSBtcS5tYXRjaF87XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5kKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuZCA9IGJ1ZmZlci5kLnJlcGxhY2UoL1xcdTAwQjBDfFxcXm9DfFxcXntvfUMvZywgXCJ7fV57XFxcXGNpcmN9Q1wiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5kID0gYnVmZmVyLmQucmVwbGFjZSgvXFx1MDBCMEZ8XFxeb0Z8XFxee299Ri9nLCBcInt9XntcXFxcY2lyY31GXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIucSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnEgPSBidWZmZXIucS5yZXBsYWNlKC9cXHUwMEIwQ3xcXF5vQ3xcXF57b31DL2csIFwie31ee1xcXFxjaXJjfUNcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIucSA9IGJ1ZmZlci5xLnJlcGxhY2UoL1xcdTAwQjBGfFxcXm9GfFxcXntvfUYvZywgXCJ7fV57XFxcXGNpcmN9RlwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiNSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkOiBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5kLCAncHUnKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxOiBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5xLCAncHUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWZmZXIubyA9PT0gJy8vJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IHsgdHlwZV86ICdwdS1mcmFjJywgcDE6IGI1LmQsIHAyOiBiNS5xIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBiNS5kO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiNS5kLmxlbmd0aCA+IDEgfHwgYjUucS5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKHsgdHlwZV86ICcgLyAnIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goeyB0eXBlXzogJy8nIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWhjaGVtUGFyc2VyLmNvbmNhdEFycmF5KHJldCwgYjUucSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBfbWhjaGVtUGFyc2VyLmdvKGJ1ZmZlci5kLCAncHUtMicpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHAgaW4gYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgYnVmZmVyW3BdO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAncHUtMic6IHtcbiAgICAgICAgICAgIHRyYW5zaXRpb25zOiBfbWhjaGVtQ3JlYXRlVHJhbnNpdGlvbnMoe1xuICAgICAgICAgICAgICAgICdlbXB0eSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICdvdXRwdXQnIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcqJzoge1xuICAgICAgICAgICAgICAgICAgICAnKic6IHsgYWN0aW9uXzogWydvdXRwdXQnLCAnY2RvdCddLCBuZXh0U3RhdGU6ICcwJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXFxcXHgnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm09JyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnc3BhY2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiBbJ291dHB1dCcsICdzcGFjZSddLCBuZXh0U3RhdGU6ICcwJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnXnsoLi4uKX18XigtMSknOiB7XG4gICAgICAgICAgICAgICAgICAgICcxJzogeyBhY3Rpb25fOiAnXigtMSknIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICctOS4sOSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86ICdybT0nLCBuZXh0U3RhdGU6ICcwJyB9LFxuICAgICAgICAgICAgICAgICAgICAnMSc6IHsgYWN0aW9uXzogJ14oLTEpJywgbmV4dFN0YXRlOiAnMCcgfVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ3suLi59fGVsc2UnOiB7XG4gICAgICAgICAgICAgICAgICAgICcqJzogeyBhY3Rpb25fOiAncm09JywgbmV4dFN0YXRlOiAnMScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAgICdjZG90JzogZnVuY3Rpb24gKCkgeyByZXR1cm4geyB0eXBlXzogJ3RpZ2h0IGNkb3QnIH07IH0sXG4gICAgICAgICAgICAgICAgJ14oLTEpJzogZnVuY3Rpb24gKGJ1ZmZlciwgbSkgeyBidWZmZXIucm0gKz0gXCJee1wiICsgbSArIFwifVwiOyByZXR1cm4gdW5kZWZpbmVkOyB9LFxuICAgICAgICAgICAgICAgICdzcGFjZSc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgdHlwZV86ICdwdS1zcGFjZS0yJyB9OyB9LFxuICAgICAgICAgICAgICAgICdvdXRwdXQnOiBmdW5jdGlvbiAoYnVmZmVyKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciByZXQgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci5ybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1ybSA9IF9taGNoZW1QYXJzZXIucGF0dGVybnMubWF0Y2hfKCd7KC4uLil9JywgYnVmZmVyLnJtIHx8IFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1ybSAmJiBtcm0ucmVtYWluZGVyID09PSAnJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IF9taGNoZW1QYXJzZXIuZ28obXJtLm1hdGNoXywgJ3B1Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSB7IHR5cGVfOiAncm0nLCBwMTogYnVmZmVyLnJtIH07XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJbcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgICdwdS05LDknOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uczogX21oY2hlbUNyZWF0ZVRyYW5zaXRpb25zKHtcbiAgICAgICAgICAgICAgICAnZW1wdHknOiB7XG4gICAgICAgICAgICAgICAgICAgICcwJzogeyBhY3Rpb25fOiAnb3V0cHV0LTAnIH0sXG4gICAgICAgICAgICAgICAgICAgICdvJzogeyBhY3Rpb25fOiAnb3V0cHV0LW8nIH1cbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICcsJzoge1xuICAgICAgICAgICAgICAgICAgICAnMCc6IHsgYWN0aW9uXzogWydvdXRwdXQtMCcsICdjb21tYSddLCBuZXh0U3RhdGU6ICdvJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnLic6IHtcbiAgICAgICAgICAgICAgICAgICAgJzAnOiB7IGFjdGlvbl86IFsnb3V0cHV0LTAnLCAnY29weSddLCBuZXh0U3RhdGU6ICdvJyB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZWxzZSc6IHtcbiAgICAgICAgICAgICAgICAgICAgJyonOiB7IGFjdGlvbl86ICd0ZXh0PScgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgYWN0aW9uczoge1xuICAgICAgICAgICAgICAgICdjb21tYSc6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHsgdHlwZV86ICdjb21tYURlY2ltYWwnIH07IH0sXG4gICAgICAgICAgICAgICAgJ291dHB1dC0wJzogZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICB2YXIgcmV0ID0gW107XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci50ZXh0XyA9IGJ1ZmZlci50ZXh0XyB8fCBcIlwiO1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLnRleHRfLmxlbmd0aCA+IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gYnVmZmVyLnRleHRfLmxlbmd0aCAlIDM7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IGJ1ZmZlci50ZXh0Xy5sZW5ndGggLSAzOyBpID4gMDsgaSAtPSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goYnVmZmVyLnRleHRfLnN1YnN0cihpLCAzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goeyB0eXBlXzogJzEwMDAgc2VwYXJhdG9yJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKGJ1ZmZlci50ZXh0Xy5zdWJzdHIoMCwgYSkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKGJ1ZmZlci50ZXh0Xyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBidWZmZXJbcF07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICdvdXRwdXQtbyc6IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldCA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBidWZmZXIudGV4dF8gPSBidWZmZXIudGV4dF8gfHwgXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJ1ZmZlci50ZXh0Xy5sZW5ndGggPiA0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGJ1ZmZlci50ZXh0Xy5sZW5ndGggLSAzO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSB2b2lkIDA7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYTsgaSArPSAzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goYnVmZmVyLnRleHRfLnN1YnN0cihpLCAzKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goeyB0eXBlXzogJzEwMDAgc2VwYXJhdG9yJyB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldC5wdXNoKGJ1ZmZlci50ZXh0Xy5zdWJzdHIoaSkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0LnB1c2goYnVmZmVyLnRleHRfKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBwIGluIGJ1ZmZlcikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGJ1ZmZlcltwXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn07XG52YXIgX21oY2hlbVRleGlmeSA9IHtcbiAgICBnbzogZnVuY3Rpb24gKGlucHV0LCBhZGRPdXRlckJyYWNlcykge1xuICAgICAgICBpZiAoIWlucHV0KSB7XG4gICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcmVzID0gXCJcIjtcbiAgICAgICAgdmFyIGNlZSA9IGZhbHNlO1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0Lmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgaW5wdXRpID0gaW5wdXRbaV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGlucHV0aSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJlcyArPSBpbnB1dGk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXMgKz0gX21oY2hlbVRleGlmeS5fZ28yKGlucHV0aSk7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0aS50eXBlXyA9PT0gJzFzdC1sZXZlbCBlc2NhcGUnKSB7XG4gICAgICAgICAgICAgICAgICAgIGNlZSA9IHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChhZGRPdXRlckJyYWNlcyAmJiAhY2VlICYmIHJlcykge1xuICAgICAgICAgICAgcmVzID0gXCJ7XCIgKyByZXMgKyBcIn1cIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0sXG4gICAgX2dvSW5uZXI6IGZ1bmN0aW9uIChpbnB1dCkge1xuICAgICAgICByZXR1cm4gX21oY2hlbVRleGlmeS5nbyhpbnB1dCwgZmFsc2UpO1xuICAgIH0sXG4gICAgX2dvMjogZnVuY3Rpb24gKGJ1Zikge1xuICAgICAgICB2YXIgcmVzO1xuICAgICAgICBzd2l0Y2ggKGJ1Zi50eXBlXykge1xuICAgICAgICAgICAgY2FzZSAnY2hlbWZpdmUnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXCI7XG4gICAgICAgICAgICAgICAgdmFyIGI1ID0ge1xuICAgICAgICAgICAgICAgICAgICBhOiBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5hKSxcbiAgICAgICAgICAgICAgICAgICAgYjogX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYuYiksXG4gICAgICAgICAgICAgICAgICAgIHA6IF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnApLFxuICAgICAgICAgICAgICAgICAgICBvOiBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5vKSxcbiAgICAgICAgICAgICAgICAgICAgcTogX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucSksXG4gICAgICAgICAgICAgICAgICAgIGQ6IF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLmQpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBpZiAoYjUuYSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYjUuYS5tYXRjaCgvXlsrXFwtXS8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiNS5hID0gXCJ7XCIgKyBiNS5hICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IGI1LmEgKyBcIlxcXFwsXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChiNS5iIHx8IGI1LnApIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwie1xcXFx2cGhhbnRvbXtBfX1cIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiXntcXFxcaHBoYW50b217XCIgKyAoYjUuYiB8fCBcIlwiKSArIFwifX1fe1xcXFxocGhhbnRvbXtcIiArIChiNS5wIHx8IFwiXCIpICsgXCJ9fVwiO1xuICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJcXFxcbWtlcm4tMS41bXVcIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwie1xcXFx2cGhhbnRvbXtBfX1cIjtcbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiXntcXFxcc21hc2hbdF17XFxcXHZwaGFudG9tezJ9fVxcXFxsbGFwe1wiICsgKGI1LmIgfHwgXCJcIikgKyBcIn19XCI7XG4gICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIl97XFxcXHZwaGFudG9tezJ9XFxcXGxsYXB7XFxcXHNtYXNoW3Rde1wiICsgKGI1LnAgfHwgXCJcIikgKyBcIn19fVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYjUubykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYjUuby5tYXRjaCgvXlsrXFwtXS8pKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBiNS5vID0gXCJ7XCIgKyBiNS5vICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmVzICs9IGI1Lm87XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChidWYuZFR5cGUgPT09ICdrdicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGI1LmQgfHwgYjUucSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwie1xcXFx2cGhhbnRvbXtBfX1cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYjUuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiXntcIiArIGI1LmQgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYjUucSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiX3tcXFxcc21hc2hbdF17XCIgKyBiNS5xICsgXCJ9fVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGJ1Zi5kVHlwZSA9PT0gJ294aWRhdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGI1LmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIntcXFxcdnBoYW50b217QX19XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJee1wiICsgYjUuZCArIFwifVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChiNS5xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgKz0gXCJ7XFxcXHZwaGFudG9te0F9fVwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwiX3tcXFxcc21hc2hbdF17XCIgKyBiNS5xICsgXCJ9fVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYjUucSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwie1xcXFx2cGhhbnRvbXtBfX1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIl97XFxcXHNtYXNoW3Rde1wiICsgYjUucSArIFwifX1cIjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoYjUuZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzICs9IFwie1xcXFx2cGhhbnRvbXtBfX1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcyArPSBcIl57XCIgKyBiNS5kICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdybSc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcbWF0aHJte1wiICsgYnVmLnAxICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd0ZXh0JzpcbiAgICAgICAgICAgICAgICBpZiAoYnVmLnAxLm1hdGNoKC9bXFxeX10vKSkge1xuICAgICAgICAgICAgICAgICAgICBidWYucDEgPSBidWYucDEucmVwbGFjZShcIiBcIiwgXCJ+XCIpLnJlcGxhY2UoXCItXCIsIFwiXFxcXHRleHR7LX1cIik7XG4gICAgICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1hdGhybXtcIiArIGJ1Zi5wMSArIFwifVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcdGV4dHtcIiArIGJ1Zi5wMSArIFwifVwiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3JvbWFuIG51bWVyYWwnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1hdGhybXtcIiArIGJ1Zi5wMSArIFwifVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RhdGUgb2YgYWdncmVnYXRpb24nOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1za2lwMm11IFwiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RhdGUgb2YgYWdncmVnYXRpb24gc3Vic2NyaXB0JzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFxtc2tpcDFtdSBcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnAxKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2JvbmQnOlxuICAgICAgICAgICAgICAgIHJlcyA9IF9taGNoZW1UZXhpZnkuX2dldEJvbmQoYnVmLmtpbmRfKTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlcykge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBbXCJNaGNoZW1FcnJvckJvbmRcIiwgXCJtaGNoZW0gRXJyb3IuIFVua25vd24gYm9uZCB0eXBlIChcIiArIGJ1Zi5raW5kXyArIFwiKVwiXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdmcmFjJzpcbiAgICAgICAgICAgICAgICB2YXIgYyA9IFwiXFxcXGZyYWN7XCIgKyBidWYucDEgKyBcIn17XCIgKyBidWYucDIgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFxtYXRoY2hvaWNle1xcXFx0ZXh0c3R5bGVcIiArIGMgKyBcIn17XCIgKyBjICsgXCJ9e1wiICsgYyArIFwifXtcIiArIGMgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3B1LWZyYWMnOlxuICAgICAgICAgICAgICAgIHZhciBkID0gXCJcXFxcZnJhY3tcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnAxKSArIFwifXtcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnAyKSArIFwifVwiO1xuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1hdGhjaG9pY2V7XFxcXHRleHRzdHlsZVwiICsgZCArIFwifXtcIiArIGQgKyBcIn17XCIgKyBkICsgXCJ9e1wiICsgZCArIFwifVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGV4LW1hdGgnOlxuICAgICAgICAgICAgICAgIHJlcyA9IGJ1Zi5wMSArIFwiIFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZnJhYy1jZSc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcZnJhY3tcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnAxKSArIFwifXtcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnAyKSArIFwifVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb3ZlcnNldCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcb3ZlcnNldHtcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnAxKSArIFwifXtcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnAyKSArIFwifVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndW5kZXJzZXQnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXHVuZGVyc2V0e1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDEpICsgXCJ9e1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDIpICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlcmJyYWNlJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFx1bmRlcmJyYWNle1wiICsgX21oY2hlbVRleGlmeS5fZ29Jbm5lcihidWYucDEpICsgXCJ9X3tcIiArIF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnAyKSArIFwifVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY29sb3InOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwie1xcXFxjb2xvcntcIiArIGJ1Zi5jb2xvcjEgKyBcIn17XCIgKyBfbWhjaGVtVGV4aWZ5Ll9nb0lubmVyKGJ1Zi5jb2xvcjIpICsgXCJ9fVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY29sb3IwJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFxjb2xvcntcIiArIGJ1Zi5jb2xvciArIFwifVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnYXJyb3cnOlxuICAgICAgICAgICAgICAgIHZhciBiNiA9IHtcbiAgICAgICAgICAgICAgICAgICAgcmQ6IF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnJkKSxcbiAgICAgICAgICAgICAgICAgICAgcnE6IF9taGNoZW1UZXhpZnkuX2dvSW5uZXIoYnVmLnJxKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdmFyIGFycm93ID0gX21oY2hlbVRleGlmeS5fZ2V0QXJyb3coYnVmLnIpO1xuICAgICAgICAgICAgICAgIGlmIChiNi5yZCB8fCBiNi5ycSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLnIgPT09IFwiPD0+XCIgfHwgYnVmLnIgPT09IFwiPD0+PlwiIHx8IGJ1Zi5yID09PSBcIjw8PT5cIiB8fCBidWYuciA9PT0gXCI8LS0+XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFycm93ID0gXCJcXFxcbG9uZ1wiICsgYXJyb3c7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYjYucmQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJvdyA9IFwiXFxcXG92ZXJzZXR7XCIgKyBiNi5yZCArIFwifXtcIiArIGFycm93ICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYjYucnEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLnIgPT09IFwiPC0tPlwiKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93ID0gXCJcXFxcdW5kZXJzZXR7XFxcXGxvd2VyMm11e1wiICsgYjYucnEgKyBcIn19e1wiICsgYXJyb3cgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycm93ID0gXCJcXFxcdW5kZXJzZXR7XFxcXGxvd2VyNm11e1wiICsgYjYucnEgKyBcIn19e1wiICsgYXJyb3cgKyBcIn1cIjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvdyA9IFwiIHt9XFxcXG1hdGhyZWx7XCIgKyBhcnJvdyArIFwifXt9IFwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGI2LnJxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3cgKz0gXCJbe1wiICsgYjYucnEgKyBcIn1dXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvdyArPSBcIntcIiArIGI2LnJkICsgXCJ9XCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBhcnJvdyA9IFwiIHt9XFxcXG1hdGhyZWx7XFxcXHhcIiArIGFycm93ICsgXCJ9e30gXCI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFycm93ID0gXCIge31cXFxcbWF0aHJlbHtcXFxcbG9uZ1wiICsgYXJyb3cgKyBcIn17fSBcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzID0gYXJyb3c7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdvcGVyYXRvcic6XG4gICAgICAgICAgICAgICAgcmVzID0gX21oY2hlbVRleGlmeS5fZ2V0T3BlcmF0b3IoYnVmLmtpbmRfKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzFzdC1sZXZlbCBlc2NhcGUnOlxuICAgICAgICAgICAgICAgIHJlcyA9IGJ1Zi5wMSArIFwiIFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3BhY2UnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiIFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndGlueVNraXAnOlxuICAgICAgICAgICAgICAgIHJlcyA9ICdcXFxcbWtlcm4ybXUnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZW50aXR5U2tpcCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJ+XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdwdS1zcGFjZS0xJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIn5cIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3B1LXNwYWNlLTInOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1rZXJuM211IFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMTAwMCBzZXBhcmF0b3InOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1rZXJuMm11IFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY29tbWFEZWNpbWFsJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcInssfVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY29tbWEgZW51bWVyYXRpb24gTCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJ7XCIgKyBidWYucDEgKyBcIn1cXFxcbWtlcm42bXUgXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdjb21tYSBlbnVtZXJhdGlvbiBNJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIntcIiArIGJ1Zi5wMSArIFwifVxcXFxta2VybjNtdSBcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NvbW1hIGVudW1lcmF0aW9uIFMnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwie1wiICsgYnVmLnAxICsgXCJ9XFxcXG1rZXJuMW11IFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnaHlwaGVuJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFx0ZXh0ey19XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdhZGRpdGlvbiBjb21wb3VuZCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcLHtcXFxcY2RvdH1cXFxcLFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZWxlY3Ryb24gZG90JzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFxta2VybjFtdSBcXFxcYnVsbGV0XFxcXG1rZXJuMW11IFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnS1YgeCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJ7XFxcXHRpbWVzfVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAncHJpbWUnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXHByaW1lIFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnY2RvdCc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJcXFxcY2RvdCBcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RpZ2h0IGNkb3QnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXG1rZXJuMW11e1xcXFxjZG90fVxcXFxta2VybjFtdSBcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3RpbWVzJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIlxcXFx0aW1lcyBcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NpcmNhJzpcbiAgICAgICAgICAgICAgICByZXMgPSBcIntcXFxcc2ltfVwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnXic6XG4gICAgICAgICAgICAgICAgcmVzID0gXCJ1cGFycm93XCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd2JzpcbiAgICAgICAgICAgICAgICByZXMgPSBcImRvd25hcnJvd1wiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZWxsaXBzaXMnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXGxkb3RzIFwiO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnLyc6XG4gICAgICAgICAgICAgICAgcmVzID0gXCIvXCI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcgLyAnOlxuICAgICAgICAgICAgICAgIHJlcyA9IFwiXFxcXCwvXFxcXCxcIjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIoYnVmKTtcbiAgICAgICAgICAgICAgICB0aHJvdyBbXCJNaGNoZW1CdWdUXCIsIFwibWhjaGVtIGJ1ZyBULiBQbGVhc2UgcmVwb3J0LlwiXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzO1xuICAgIH0sXG4gICAgX2dldEFycm93OiBmdW5jdGlvbiAoYSkge1xuICAgICAgICBzd2l0Y2ggKGEpIHtcbiAgICAgICAgICAgIGNhc2UgXCItPlwiOiByZXR1cm4gXCJyaWdodGFycm93XCI7XG4gICAgICAgICAgICBjYXNlIFwiXFx1MjE5MlwiOiByZXR1cm4gXCJyaWdodGFycm93XCI7XG4gICAgICAgICAgICBjYXNlIFwiXFx1MjdGNlwiOiByZXR1cm4gXCJyaWdodGFycm93XCI7XG4gICAgICAgICAgICBjYXNlIFwiPC1cIjogcmV0dXJuIFwibGVmdGFycm93XCI7XG4gICAgICAgICAgICBjYXNlIFwiPC0+XCI6IHJldHVybiBcImxlZnRyaWdodGFycm93XCI7XG4gICAgICAgICAgICBjYXNlIFwiPC0tPlwiOiByZXR1cm4gXCJsZWZ0cmlnaHRhcnJvd3NcIjtcbiAgICAgICAgICAgIGNhc2UgXCI8PT5cIjogcmV0dXJuIFwicmlnaHRsZWZ0aGFycG9vbnNcIjtcbiAgICAgICAgICAgIGNhc2UgXCJcXHUyMUNDXCI6IHJldHVybiBcInJpZ2h0bGVmdGhhcnBvb25zXCI7XG4gICAgICAgICAgICBjYXNlIFwiPD0+PlwiOiByZXR1cm4gXCJSaWdodGxlZnRoYXJwb29uc1wiO1xuICAgICAgICAgICAgY2FzZSBcIjw8PT5cIjogcmV0dXJuIFwiTGVmdHJpZ2h0aGFycG9vbnNcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIoYSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgW1wiTWhjaGVtQnVnVFwiLCBcIm1oY2hlbSBidWcgVC4gUGxlYXNlIHJlcG9ydC5cIl07XG4gICAgICAgIH1cbiAgICB9LFxuICAgIF9nZXRCb25kOiBmdW5jdGlvbiAoYSkge1xuICAgICAgICBzd2l0Y2ggKGEpIHtcbiAgICAgICAgICAgIGNhc2UgXCItXCI6IHJldHVybiBcInstfVwiO1xuICAgICAgICAgICAgY2FzZSBcIjFcIjogcmV0dXJuIFwiey19XCI7XG4gICAgICAgICAgICBjYXNlIFwiPVwiOiByZXR1cm4gXCJ7PX1cIjtcbiAgICAgICAgICAgIGNhc2UgXCIyXCI6IHJldHVybiBcIns9fVwiO1xuICAgICAgICAgICAgY2FzZSBcIiNcIjogcmV0dXJuIFwie1xcXFxlcXVpdn1cIjtcbiAgICAgICAgICAgIGNhc2UgXCIzXCI6IHJldHVybiBcIntcXFxcZXF1aXZ9XCI7XG4gICAgICAgICAgICBjYXNlIFwiflwiOiByZXR1cm4gXCJ7XFxcXHRyaXBsZWRhc2h9XCI7XG4gICAgICAgICAgICBjYXNlIFwifi1cIjogcmV0dXJuIFwie1xcXFxybGFwe1xcXFxsb3dlci4xZW17LX19XFxcXHJhaXNlLjFlbXtcXFxcdHJpcGxlZGFzaH19XCI7XG4gICAgICAgICAgICBjYXNlIFwifj1cIjogcmV0dXJuIFwie1xcXFxybGFwe1xcXFxsb3dlci4yZW17LX19XFxcXHJsYXB7XFxcXHJhaXNlLjJlbXtcXFxcdHJpcGxlZGFzaH19LX1cIjtcbiAgICAgICAgICAgIGNhc2UgXCJ+LS1cIjogcmV0dXJuIFwie1xcXFxybGFwe1xcXFxsb3dlci4yZW17LX19XFxcXHJsYXB7XFxcXHJhaXNlLjJlbXtcXFxcdHJpcGxlZGFzaH19LX1cIjtcbiAgICAgICAgICAgIGNhc2UgXCItfi1cIjogcmV0dXJuIFwie1xcXFxybGFwe1xcXFxsb3dlci4yZW17LX19XFxcXHJsYXB7XFxcXHJhaXNlLjJlbXstfX1cXFxcdHJpcGxlZGFzaH1cIjtcbiAgICAgICAgICAgIGNhc2UgXCIuLi5cIjogcmV0dXJuIFwie3tcXFxcY2RvdH17XFxcXGNkb3R9e1xcXFxjZG90fX1cIjtcbiAgICAgICAgICAgIGNhc2UgXCIuLi4uXCI6IHJldHVybiBcInt7XFxcXGNkb3R9e1xcXFxjZG90fXtcXFxcY2RvdH17XFxcXGNkb3R9fVwiO1xuICAgICAgICAgICAgY2FzZSBcIi0+XCI6IHJldHVybiBcIntcXFxccmlnaHRhcnJvd31cIjtcbiAgICAgICAgICAgIGNhc2UgXCI8LVwiOiByZXR1cm4gXCJ7XFxcXGxlZnRhcnJvd31cIjtcbiAgICAgICAgICAgIGNhc2UgXCI8XCI6IHJldHVybiBcIns8fVwiO1xuICAgICAgICAgICAgY2FzZSBcIj5cIjogcmV0dXJuIFwiez59XCI7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGFzc2VydE5ldmVyKGEpO1xuICAgICAgICAgICAgICAgIHRocm93IFtcIk1oY2hlbUJ1Z1RcIiwgXCJtaGNoZW0gYnVnIFQuIFBsZWFzZSByZXBvcnQuXCJdO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBfZ2V0T3BlcmF0b3I6IGZ1bmN0aW9uIChhKSB7XG4gICAgICAgIHN3aXRjaCAoYSkge1xuICAgICAgICAgICAgY2FzZSBcIitcIjogcmV0dXJuIFwiIHt9K3t9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIi1cIjogcmV0dXJuIFwiIHt9LXt9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIj1cIjogcmV0dXJuIFwiIHt9PXt9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIjxcIjogcmV0dXJuIFwiIHt9PHt9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIj5cIjogcmV0dXJuIFwiIHt9Pnt9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIjw8XCI6IHJldHVybiBcIiB7fVxcXFxsbHt9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIj4+XCI6IHJldHVybiBcIiB7fVxcXFxnZ3t9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIlxcXFxwbVwiOiByZXR1cm4gXCIge31cXFxccG17fSBcIjtcbiAgICAgICAgICAgIGNhc2UgXCJcXFxcYXBwcm94XCI6IHJldHVybiBcIiB7fVxcXFxhcHByb3h7fSBcIjtcbiAgICAgICAgICAgIGNhc2UgXCIkXFxcXGFwcHJveCRcIjogcmV0dXJuIFwiIHt9XFxcXGFwcHJveHt9IFwiO1xuICAgICAgICAgICAgY2FzZSBcInZcIjogcmV0dXJuIFwiIFxcXFxkb3duYXJyb3d7fSBcIjtcbiAgICAgICAgICAgIGNhc2UgXCIodilcIjogcmV0dXJuIFwiIFxcXFxkb3duYXJyb3d7fSBcIjtcbiAgICAgICAgICAgIGNhc2UgXCJeXCI6IHJldHVybiBcIiBcXFxcdXBhcnJvd3t9IFwiO1xuICAgICAgICAgICAgY2FzZSBcIiheKVwiOiByZXR1cm4gXCIgXFxcXHVwYXJyb3d7fSBcIjtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYXNzZXJ0TmV2ZXIoYSk7XG4gICAgICAgICAgICAgICAgdGhyb3cgW1wiTWhjaGVtQnVnVFwiLCBcIm1oY2hlbSBidWcgVC4gUGxlYXNlIHJlcG9ydC5cIl07XG4gICAgICAgIH1cbiAgICB9XG59O1xuZnVuY3Rpb24gYXNzZXJ0TmV2ZXIoYSkgeyB9XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBtaGNoZW0gcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IHtQYXJzZU1ldGhvZH0gZnJvbSAnLi4vVHlwZXMuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4uL1RleEVycm9yLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCBCYXNlTWV0aG9kcyBmcm9tICcuLi9iYXNlL0Jhc2VNZXRob2RzLmpzJztcbmltcG9ydCB7QW1zTWV0aG9kc30gZnJvbSAnLi4vYW1zL0Ftc01ldGhvZHMuanMnO1xuaW1wb3J0IHttaGNoZW1QYXJzZXJ9IGZyb20gJ21oY2hlbXBhcnNlci9kaXN0L21oY2hlbVBhcnNlci5qcyc7XG5cbi8vIE5hbWVzcGFjZVxubGV0IE1oY2hlbU1ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPiA9IHt9O1xuXG5NaGNoZW1NZXRob2RzLk1hY3JvID0gQmFzZU1ldGhvZHMuTWFjcm87XG5NaGNoZW1NZXRob2RzLnhBcnJvdyA9IEFtc01ldGhvZHMueEFycm93O1xuXG4vKipcbiAqIEBwYXJhbXtUZVhQYXJzZXJ9IHBhcnNlciAgIFRoZSBwYXJzZXIgZm9yIHRoaXMgZXhwcmVzc2lvblxuICogQHBhcmFte3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG1hY3JvIG5hbWUgYmVpbmcgY2FsbGVkXG4gKiBAcGFyYW17c3RyaW5nfSBtYWNoaW5lICAgICBUaGUgbmFtZSBvZiB0aGUgZmluaW50ZS1zdGF0ZSBtYWNoaW5lIHRvIHVzZVxuICovXG5NaGNoZW1NZXRob2RzLk1hY2hpbmUgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBtYWNoaW5lOiAndGV4JyB8ICdjZScgfCAncHUnKSB7XG4gIGxldCBhcmcgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGxldCB0ZXg7XG4gIHRyeSB7XG4gICAgdGV4ID0gbWhjaGVtUGFyc2VyLnRvVGV4KGFyZywgbWFjaGluZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcihlcnJbMF0sIGVyclsxXSk7XG4gIH1cbiAgcGFyc2VyLnN0cmluZyA9IHRleCArIHBhcnNlci5zdHJpbmcuc3Vic3RyKHBhcnNlci5pKTtcbiAgcGFyc2VyLmkgPSAwO1xufTtcblxubmV3IENvbW1hbmRNYXAoXG4gICdtaGNoZW0nLCB7XG4gICAgY2U6IFsnTWFjaGluZScsICdjZSddLFxuICAgIHB1OiBbJ01hY2hpbmUnLCAncHUnXSxcbiAgICBsb25ncmlnaHRsZWZ0aGFycG9vbnM6IFtcbiAgICAgICdNYWNybycsXG4gICAgICAnXFxcXHN0YWNrcmVse1xcXFx0ZXh0c3R5bGV7LX1cXFxcIVxcXFwhe1xcXFxyaWdodGhhcnBvb251cH19e1xcXFxzbWFzaHt7XFxcXGxlZnRoYXJwb29uZG93bn1cXFxcIVxcXFwhey19fX0nXG4gICAgXSxcbiAgICBsb25nUmlnaHRsZWZ0aGFycG9vbnM6IFtcbiAgICAgICdNYWNybycsXG4gICAgICAnXFxcXHN0YWNrcmVse1xcXFx0ZXh0c3R5bGV7LX1cXFxcIVxcXFwhe1xcXFxyaWdodGhhcnBvb251cH19e1xcXFxzbWFzaHtcXFxcbGVmdGhhcnBvb25kb3dufX0nXG4gICAgXSxcbiAgICBsb25nTGVmdHJpZ2h0aGFycG9vbnM6IFtcbiAgICAgICdNYWNybycsXG4gICAgICAnXFxcXHN0YWNrcmVse1xcXFx0ZXh0c3R5bGVcXFxcdnBoYW50b217ey19fXtcXFxccmlnaHRoYXJwb29udXB9fXtcXFxcc21hc2h7e1xcXFxsZWZ0aGFycG9vbmRvd259XFxcXCFcXFxcIXstfX19J1xuICAgIF0sXG4gICAgbG9uZ2xlZnRyaWdodGFycm93czogW1xuICAgICAgJ01hY3JvJyxcbiAgICAgICdcXFxcc3RhY2tyZWx7XFxcXGxvbmdyaWdodGFycm93fXtcXFxcc21hc2h7XFxcXGxvbmdsZWZ0YXJyb3d9XFxcXFJ1bGV7MHB4fXsuMjVlbX17MHB4fX0nXG4gICAgXSxcbiAgICAvL1xuICAgIC8vICBOZWVkZWQgZm9yIFxcYm9uZCBmb3IgdGhlIH4gZm9ybXNcbiAgICAvL1xuICAgIHRyaXBsZWRhc2g6IFtcbiAgICAgICdNYWNybycsXG4gICAgICAnXFxcXHZwaGFudG9tey19XFxcXHJhaXNlMm11e1xcXFxrZXJuMm11XFxcXHRpbnlcXFxcdGV4dHstfVxcXFxrZXJuMW11XFxcXHRleHR7LX1cXFxca2VybjFtdVxcXFx0ZXh0ey19XFxcXGtlcm4ybXV9J1xuICAgIF0sXG4gICAgeGxlZnRyaWdodGFycm93OiAgICBbJ3hBcnJvdycsIDB4MjE5NCwgNiwgNl0sXG4gICAgeHJpZ2h0bGVmdGhhcnBvb25zOiBbJ3hBcnJvdycsIDB4MjFDQywgNSwgN10sICAgLy8gRklYTUU6ICBkb2Vzbid0IHN0cmV0Y2ggaW4gSFRNTC1DU1Mgb3V0cHV0XG4gICAgeFJpZ2h0bGVmdGhhcnBvb25zOiBbJ3hBcnJvdycsIDB4MjFDQywgNSwgN10sICAgLy8gRklYTUU6ICBob3cgc2hvdWxkIHRoaXMgYmUgaGFuZGxlZD9cbiAgICB4TGVmdHJpZ2h0aGFycG9vbnM6IFsneEFycm93JywgMHgyMUNDLCA1LCA3XVxuICB9LFxuICBNaGNoZW1NZXRob2RzXG4pO1xuXG5cbmV4cG9ydCBjb25zdCBNaGNoZW1Db25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICdtaGNoZW0nLCB7aGFuZGxlcjoge21hY3JvOiBbJ21oY2hlbSddfX1cbik7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBOb0Vycm9ycyBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7Q29uZmlndXJhdGlvbn0gZnJvbSAnLi4vQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQge05vZGVGYWN0b3J5fSBmcm9tICcuLi9Ob2RlRmFjdG9yeS5qcyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIGFuIGVycm9yIG5vZGUgY29udGFpbmluZyB0aGUgZXJyb25lb3VzIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBub2RlIGZhY3RvcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSBUaGUgZXJyb3IgbWVzc2FnZSAod2hpY2ggaXMgaWdub3JlZCkuXG4gKiBAcGFyYW0ge3N0cmluZ30gaWQgVGhlIGVycm9yIGlkICh3aGljaCBpcyBpZ25vcmVkKS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBleHByIFRoZSBvcmlnaW5hbCBMYVRlWCBleHByZXNzaW9uLlxuICovXG5mdW5jdGlvbiBub0Vycm9ycyhmYWN0b3J5OiBOb2RlRmFjdG9yeSxcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHN0cmluZywgX2lkOiBzdHJpbmcsIGV4cHI6IHN0cmluZykge1xuICBsZXQgbXRleHQgPSBmYWN0b3J5LmNyZWF0ZSgndG9rZW4nLCAnbXRleHQnLCB7fSwgZXhwci5yZXBsYWNlKC9cXG4vZywgJyAnKSk7XG4gIGxldCBlcnJvciA9IGZhY3RvcnkuY3JlYXRlKCdub2RlJywgJ21lcnJvcicsIFttdGV4dF0sIHsnZGF0YS1tangtZXJyb3InOiBtZXNzYWdlLCB0aXRsZTogbWVzc2FnZX0pO1xuICByZXR1cm4gZXJyb3I7XG59XG5cbmV4cG9ydCBjb25zdCBOb0Vycm9yc0NvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ25vZXJyb3JzJywge25vZGVzOiB7J2Vycm9yJzogbm9FcnJvcnN9fVxuKTtcblxuXG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBBTVMgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHJlZCB2ZXJzaW9uIG9mIHRoZSB1bmRlZmluZWQgY29udHJvbCBzZXF1ZW5jZSwgaW5zdGVhZCBvZlxuICogdGhyb3dpbmcgYW4gZXJyb3IuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5mdW5jdGlvbiBub1VuZGVmaW5lZChwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHRleHROb2RlID0gcGFyc2VyLmNyZWF0ZSgndGV4dCcsICdcXFxcJyArIG5hbWUpO1xuICBjb25zdCBvcHRpb25zID0gcGFyc2VyLm9wdGlvbnMubm91bmRlZmluZWQgfHwge307XG4gIGNvbnN0IGRlZiA9IHt9IGFzIHtbbmFtZTogc3RyaW5nXTogc3RyaW5nfTtcbiAgZm9yIChjb25zdCBpZCBvZiBbJ2NvbG9yJywgJ2JhY2tncm91bmQnLCAnc2l6ZSddKSB7XG4gICAgaWYgKG9wdGlvbnNbaWRdKSB7XG4gICAgICBkZWZbJ21hdGgnICsgaWRdID0gb3B0aW9uc1tpZF07XG4gICAgfVxuICB9XG4gIHBhcnNlci5QdXNoKHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXRleHQnLCBbXSwgZGVmLCB0ZXh0Tm9kZSkpO1xufVxuXG5leHBvcnQgY29uc3QgTm9VbmRlZmluZWRDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICdub3VuZGVmaW5lZCcsIHtcbiAgICBmYWxsYmFjazoge21hY3JvOiBub1VuZGVmaW5lZH0sXG4gICAgb3B0aW9uczoge1xuICAgICAgbm91bmRlZmluZWQ6IHtcbiAgICAgICAgY29sb3I6ICdyZWQnLFxuICAgICAgICBiYWNrZ3JvdW5kOiAnJyxcbiAgICAgICAgc2l6ZTogJydcbiAgICAgIH1cbiAgICB9LFxuICAgIHByaW9yaXR5OiAzXG4gIH1cbik7XG5cblxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAwOS0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgU3RhY2sgaXRlbXMgZm9yIHRoZSBwaHlzaWNzIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuXG5pbXBvcnQge0NoZWNrVHlwZSwgQmFzZUl0ZW0sIFN0YWNrSXRlbX0gZnJvbSAnLi4vU3RhY2tJdGVtLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQge0Fic3RyYWN0TW1sVG9rZW5Ob2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5cbmV4cG9ydCBjbGFzcyBBdXRvT3BlbiBleHRlbmRzIEJhc2VJdGVtIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGVycm9ycyA9IE9iamVjdC5hc3NpZ24oT2JqZWN0LmNyZWF0ZShCYXNlSXRlbS5lcnJvcnMpLCB7XG4gICAgJ3N0b3AnOiBbJ0V4dHJhT3JNaXNzaW5nRGVsaW1zJywgJ0V4dHJhIG9wZW4gb3IgbWlzc2luZyBjbG9zZSBkZWxpbWl0ZXInXVxuICB9KTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiB1bnBhaXJlZCBvcGVuIGRlbGltaXRlcnMgdGhhdCBuZWVkIHRvIGJlIG1hdGNoZWQgYmVmb3JlXG4gICAqICAgYSBjbG9zZSBkZWxpbWl0ZXIgd2lsbCBjbG9zZSB0aGlzIGl0ZW0uICgjMjgzMSlcbiAgICovXG4gIHByb3RlY3RlZCBvcGVuQ291bnQ6IG51bWJlciA9IDA7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnYXV0byBvcGVuJztcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGlzT3BlbigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvTW1sKCkge1xuICAgIC8vIFNtYXNoIGFuZCByaWdodC9sZWZ0XG4gICAgbGV0IHBhcnNlciA9IHRoaXMuZmFjdG9yeS5jb25maWd1cmF0aW9uLnBhcnNlcjtcbiAgICBsZXQgcmlnaHQgPSB0aGlzLmdldFByb3BlcnR5KCdyaWdodCcpIGFzIHN0cmluZztcbiAgICBpZiAodGhpcy5nZXRQcm9wZXJ0eSgnc21hc2gnKSkge1xuICAgICAgbGV0IG1tbCA9IHN1cGVyLnRvTW1sKCk7XG4gICAgICBjb25zdCBzbWFzaCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXBhZGRlZCcsIFttbWxdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtoZWlnaHQ6IDAsIGRlcHRoOiAwfSk7XG4gICAgICB0aGlzLkNsZWFyKCk7XG4gICAgICB0aGlzLlB1c2gocGFyc2VyLmNyZWF0ZSgnbm9kZScsICdUZVhBdG9tJywgW3NtYXNoXSkpO1xuICAgIH1cbiAgICBpZiAocmlnaHQpIHtcbiAgICAgIHRoaXMuUHVzaChuZXcgVGV4UGFyc2VyKHJpZ2h0LCBwYXJzZXIuc3RhY2suZW52LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpKTtcbiAgICB9XG4gICAgbGV0IG1tbCA9IFBhcnNlVXRpbC5mZW5jZWQoXG4gICAgICB0aGlzLmZhY3RvcnkuY29uZmlndXJhdGlvbixcbiAgICAgIHRoaXMuZ2V0UHJvcGVydHkoJ29wZW4nKSBhcyBzdHJpbmcsXG4gICAgICBzdXBlci50b01tbCgpLFxuICAgICAgdGhpcy5nZXRQcm9wZXJ0eSgnY2xvc2UnKSBhcyBzdHJpbmcsXG4gICAgICB0aGlzLmdldFByb3BlcnR5KCdiaWcnKSBhcyBzdHJpbmdcbiAgICApO1xuICAgIC8vXG4gICAgLy8gIFJlbW92ZSBmZW5jZSBtYXJrZXJzIHRoYXQgd291bGQgY2F1c2UgaXQgdG8gYmUgVGVYIGNsYXNzIElOTkVSLFxuICAgIC8vICBzbyBpdCBpcyB0cmVhdGVkIGFzIGEgcmVndWxhciBtcm93IHdoZW4gc2V0dGluZyB0aGUgdGV4IGNsYXNzICgjMjc2MClcbiAgICAvL1xuICAgIE5vZGVVdGlsLnJlbW92ZVByb3BlcnRpZXMobW1sLCAnb3BlbicsICdjbG9zZScsICd0ZXhDbGFzcycpO1xuICAgIHJldHVybiBtbWw7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY2hlY2tJdGVtKGl0ZW06IFN0YWNrSXRlbSk6IENoZWNrVHlwZSB7XG4gICAgLy9cbiAgICAvLyAgQ2hlY2sgZm9yIG5lc3RlZCBvcGVuIGRlbGltaXRlcnMgKCMyODMxKVxuICAgIC8vXG4gICAgaWYgKGl0ZW0uaXNLaW5kKCdtbWwnKSAmJiBpdGVtLlNpemUoKSA9PT0gMSkge1xuICAgICAgY29uc3QgbW1sID0gaXRlbS50b01tbCgpO1xuICAgICAgaWYgKG1tbC5pc0tpbmQoJ21vJykgJiYgKG1tbCBhcyBBYnN0cmFjdE1tbFRva2VuTm9kZSkuZ2V0VGV4dCgpID09PSB0aGlzLmdldFByb3BlcnR5KCdvcGVuJykpIHtcbiAgICAgICAgdGhpcy5vcGVuQ291bnQrKztcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IGNsb3NlID0gaXRlbS5nZXRQcm9wZXJ0eSgnYXV0b2Nsb3NlJyk7XG4gICAgaWYgKGNsb3NlICYmIGNsb3NlID09PSB0aGlzLmdldFByb3BlcnR5KCdjbG9zZScpICYmICF0aGlzLm9wZW5Db3VudC0tKSB7XG4gICAgICBpZiAodGhpcy5nZXRQcm9wZXJ0eSgnaWdub3JlJykpIHtcbiAgICAgICAgdGhpcy5DbGVhcigpO1xuICAgICAgICByZXR1cm4gW1tdLCB0cnVlXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbW3RoaXMudG9NbWwoKV0sIHRydWVdO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuY2hlY2tJdGVtKGl0ZW0pO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE1ldGhvZHMgZm9yIFRlWCBwYXJzaW5nIG9mIHRoZSBwaHlzaWNzIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtQYXJzZU1ldGhvZH0gZnJvbSAnLi4vVHlwZXMuanMnO1xuaW1wb3J0IEJhc2VNZXRob2RzIGZyb20gJy4uL2Jhc2UvQmFzZU1ldGhvZHMuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4uL1RleEVycm9yLmpzJztcbmltcG9ydCB7VEVYQ0xBU1MsIE1tbE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQge05vZGVGYWN0b3J5fSBmcm9tICcuLi9Ob2RlRmFjdG9yeS5qcyc7XG5pbXBvcnQge01hY3JvfSBmcm9tICcuLi9TeW1ib2wuanMnO1xuXG5cbmxldCBQaHlzaWNzTWV0aG9kczogUmVjb3JkPHN0cmluZywgUGFyc2VNZXRob2Q+ID0ge307XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqXG4gKiBQaHlzaWNzIHBhY2thZ2Ugc2VjdGlvbiAyLjFcbiAqIEF1dG9tYXRpYyBicmFjaW5nXG4gKi9cblxuLyoqXG4gKiBQYWlycyBvcGVuIGFuZCBjbG9zZWQgZmVuY2VzLlxuICogQHR5cGUge3tbZmVuY2U6IHN0cmluZ106IHN0cmluZ319XG4gKi9cbmNvbnN0IHBhaXJzOiB7W2ZlbmNlOiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICAnKCc6ICcpJyxcbiAgJ1snOiAnXScsXG4gICd7JzogJ30nLFxuICAnfCc6ICd8Jyxcbn07XG5cblxuLyoqXG4gKiBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIG1hdGNoaW5nIGJpZyBmZW5jZSBhcmd1bWVudHMuXG4gKiBAdHlwZSB7UmVnRXhwfVxuICovXG5jb25zdCBiaWdnczogUmVnRXhwID0gL14oYnxCKWkoZ3sxLDJ9KSQvO1xuXG5cbi8qKlxuICogQXV0b21hdGljIHNpemluZyBvZiBmZW5jZXMsIGUuZy4sIFxcXFxxdHkoeCkuIFNvbWUgd2l0aCBjb250ZW50LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nPX0gb3BlbiBPcGVuaW5nIGZlbmNlLlxuICogQHBhcmFtIHtzdHJpbmc9fSBjbG9zZSBDbG9zaW5nIGZlbmNlLlxuICogQHBhcmFtIHtib29sZWFuPX0gYXJnIEZlbmNlcyBjb250YWluIGFuIGFyZ3VtZW50LlxuICogQHBhcmFtIHtzdHJpbmc9fSBuYW1lZCBOYW1lIG9wZXJhdG9yLlxuICogQHBhcmFtIHtzdHJpbmc9fSB2YXJpYW50IEEgZm9udCBmb3IgdGhlIG1hdGh2YXJpYW50LlxuICovXG5QaHlzaWNzTWV0aG9kcy5RdWFudGl0eSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IHN0cmluZyA9ICcoJywgY2xvc2U6IHN0cmluZyA9ICcpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnOiBib29sZWFuID0gZmFsc2UsIG5hbWVkOiBzdHJpbmcgPSAnJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudDogc3RyaW5nID0gJycpIHtcbiAgbGV0IHN0YXIgPSBhcmcgPyBwYXJzZXIuR2V0U3RhcigpIDogZmFsc2U7XG4gIGxldCBuZXh0ID0gcGFyc2VyLkdldE5leHQoKTtcbiAgbGV0IHBvc2l0aW9uID0gcGFyc2VyLmk7XG4gIGxldCBiaWcgPSBudWxsO1xuICBpZiAobmV4dCA9PT0gJ1xcXFwnKSB7XG4gICAgcGFyc2VyLmkrKztcbiAgICBiaWcgPSBwYXJzZXIuR2V0Q1MoKTtcbiAgICBpZiAoIWJpZy5tYXRjaChiaWdncykpIHtcbiAgICAgIC8vIGVtcHR5XG4gICAgICBsZXQgZW1wdHkgPSBwYXJzZXIuY3JlYXRlKCdub2RlJywgJ21yb3cnKTtcbiAgICAgIHBhcnNlci5QdXNoKFBhcnNlVXRpbC5mZW5jZWQocGFyc2VyLmNvbmZpZ3VyYXRpb24sIG9wZW4sIGVtcHR5LCBjbG9zZSkpO1xuICAgICAgcGFyc2VyLmkgPSBwb3NpdGlvbjtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbmV4dCA9IHBhcnNlci5HZXROZXh0KCk7XG4gIH1cbiAgbGV0IHJpZ2h0ID0gcGFpcnNbbmV4dF07XG4gIGlmIChhcmcgJiYgbmV4dCAhPT0gJ3snKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nQXJnRm9yJywgJ01pc3NpbmcgYXJndW1lbnQgZm9yICUxJywgcGFyc2VyLmN1cnJlbnRDUyk7XG4gIH1cbiAgaWYgKCFyaWdodCkge1xuICAgIGxldCBlbXB0eSA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXJvdycpO1xuICAgIHBhcnNlci5QdXNoKFBhcnNlVXRpbC5mZW5jZWQocGFyc2VyLmNvbmZpZ3VyYXRpb24sIG9wZW4sIGVtcHR5LCBjbG9zZSkpO1xuICAgIHBhcnNlci5pID0gcG9zaXRpb247XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIEdldCB0aGUgZmVuY2VzXG4gIGlmIChuYW1lZCkge1xuICAgIGNvbnN0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21pJywge3RleENsYXNzOiBURVhDTEFTUy5PUH0sIG5hbWVkKTtcbiAgICBpZiAodmFyaWFudCkge1xuICAgICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKG1tbCwgJ21hdGh2YXJpYW50JywgdmFyaWFudCk7XG4gICAgfVxuICAgIHBhcnNlci5QdXNoKHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2ZuJywgbW1sKSk7XG4gIH1cbiAgaWYgKG5leHQgPT09ICd7Jykge1xuICAgIGxldCBhcmd1bWVudCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBuZXh0ID0gYXJnID8gb3BlbiA6ICdcXFxceyc7XG4gICAgcmlnaHQgPSBhcmcgPyBjbG9zZSA6ICdcXFxcfSc7XG4gICAgLy8gVE9ETzogTWFrZSBhbGwgdGhlc2UgZmVuY2VkIGV4cHJlc3Npb25zLlxuICAgIGFyZ3VtZW50ID0gc3RhciA/IG5leHQgKyAnICcgKyBhcmd1bWVudCArICcgJyArIHJpZ2h0IDpcbiAgICAgIChiaWcgP1xuICAgICAgICdcXFxcJyArIGJpZyArICdsJyArIG5leHQgKyAnICcgKyBhcmd1bWVudCArICcgJyArICdcXFxcJyArIGJpZyArICdyJyArIHJpZ2h0IDpcbiAgICAgICAnXFxcXGxlZnQnICsgbmV4dCArICcgJyArIGFyZ3VtZW50ICsgJyAnICsgJ1xcXFxyaWdodCcgKyByaWdodCk7XG4gICAgcGFyc2VyLlB1c2gobmV3IFRleFBhcnNlcihhcmd1bWVudCwgcGFyc2VyLnN0YWNrLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChhcmcpIHtcbiAgICBuZXh0ID0gb3BlbjtcbiAgICByaWdodCA9IGNsb3NlO1xuICB9XG4gIHBhcnNlci5pKys7XG4gIHBhcnNlci5QdXNoKHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2F1dG8gb3BlbicpXG4gICAgICAgICAgICAgIC5zZXRQcm9wZXJ0aWVzKHtvcGVuOiBuZXh0LCBjbG9zZTogcmlnaHQsIGJpZzogYmlnfSkpO1xufTtcblxuXG4vKipcbiAqIFRoZSBldmFsdWF0ZSBtYWNyby5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cblBoeXNpY3NNZXRob2RzLkV2YWwgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBzdGFyID0gcGFyc2VyLkdldFN0YXIoKTtcbiAgbGV0IG5leHQgPSBwYXJzZXIuR2V0TmV4dCgpO1xuICBpZiAobmV4dCA9PT0gJ3snKSB7XG4gICAgbGV0IGFyZyA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgICBsZXQgcmVwbGFjZSA9ICdcXFxcbGVmdC4gJyArXG4gICAgICAoc3RhciA/ICdcXFxcc21hc2h7JyArIGFyZyArICd9JyA6IGFyZykgK1xuICAgICAgJyAnICsgJ1xcXFx2cGhhbnRvbXtcXFxcaW50fVxcXFxyaWdodHwnO1xuICAgIHBhcnNlci5zdHJpbmcgPSBwYXJzZXIuc3RyaW5nLnNsaWNlKDAsIHBhcnNlci5pKSArIHJlcGxhY2UgK1xuICAgICAgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChuZXh0ID09PSAnKCcgfHwgbmV4dCA9PT0gJ1snKSB7XG4gICAgcGFyc2VyLmkrKztcbiAgICBwYXJzZXIuUHVzaChwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdhdXRvIG9wZW4nKVxuICAgICAgICAgICAgICAgIC5zZXRQcm9wZXJ0aWVzKFxuICAgICAgICAgICAgICAgICAge29wZW46IG5leHQsIGNsb3NlOiAnfCcsXG4gICAgICAgICAgICAgICAgICAgc21hc2g6IHN0YXIsIHJpZ2h0OiAnXFxcXHZwaGFudG9te1xcXFxpbnR9J30pKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdGhyb3cgbmV3IFRleEVycm9yKCdNaXNzaW5nQXJnRm9yJywgJ01pc3NpbmcgYXJndW1lbnQgZm9yICUxJywgcGFyc2VyLmN1cnJlbnRDUyk7XG59O1xuXG5cbi8qKlxuICogVGhlIGFudGkvY29tbXV0YXRvciBhbmQgcG9pc3NvbiBtYWNyb3MuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmc9fSBvcGVuIE9wZW5pbmcgZmVuY2UuXG4gKiBAcGFyYW0ge3N0cmluZz19IGNsb3NlIENsb3NpbmcgZmVuY2UuXG4gKi9cblBoeXNpY3NNZXRob2RzLkNvbW11dGF0b3IgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46IHN0cmluZyA9ICdbJywgY2xvc2U6IHN0cmluZyA9ICddJykge1xuICBsZXQgc3RhciA9IHBhcnNlci5HZXRTdGFyKCk7XG4gIGxldCBuZXh0ID0gcGFyc2VyLkdldE5leHQoKTtcbiAgbGV0IGJpZyA9IG51bGw7XG4gIGlmIChuZXh0ID09PSAnXFxcXCcpIHtcbiAgICBwYXJzZXIuaSsrO1xuICAgIGJpZyA9IHBhcnNlci5HZXRDUygpO1xuICAgIGlmICghYmlnLm1hdGNoKGJpZ2dzKSkge1xuICAgICAgLy8gQWN0dWFsbHkgYSBjb21tdXRhdG9yIGVycm9yIGFyZzEgZXJyb3IuXG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ01pc3NpbmdBcmdGb3InLCAnTWlzc2luZyBhcmd1bWVudCBmb3IgJTEnLCBwYXJzZXIuY3VycmVudENTKTtcbiAgICB9XG4gICAgbmV4dCA9IHBhcnNlci5HZXROZXh0KCk7XG4gIH1cbiAgaWYgKG5leHQgIT09ICd7Jykge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignTWlzc2luZ0FyZ0ZvcicsICdNaXNzaW5nIGFyZ3VtZW50IGZvciAlMScsIHBhcnNlci5jdXJyZW50Q1MpO1xuICB9XG4gIGxldCBhcmcxID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBsZXQgYXJnMiA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgbGV0IGFyZ3VtZW50ID0gYXJnMSArICcsJyArIGFyZzI7XG4gIGFyZ3VtZW50ID0gc3RhciA/IG9wZW4gKyAnICcgKyBhcmd1bWVudCArICcgJyArIGNsb3NlIDpcbiAgICAoYmlnID9cbiAgICAgJ1xcXFwnICsgYmlnICsgJ2wnICsgb3BlbiArICcgJyArIGFyZ3VtZW50ICsgJyAnICsgJ1xcXFwnICsgYmlnICsgJ3InICsgY2xvc2UgOlxuICAgICAnXFxcXGxlZnQnICsgb3BlbiArICcgJyArIGFyZ3VtZW50ICsgJyAnICsgJ1xcXFxyaWdodCcgKyBjbG9zZSk7XG4gIHBhcnNlci5QdXNoKG5ldyBUZXhQYXJzZXIoYXJndW1lbnQsIHBhcnNlci5zdGFjay5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpKTtcbn07XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqXG4gKiBQaHlzaWNzIHBhY2thZ2Ugc2VjdGlvbiAyLjJcbiAqIFZlY3RvciBub3RhdGlvblxuICovXG5cbmxldCBsYXRpbkNhcDogW251bWJlciwgbnVtYmVyXSA9IFsweDQxLCAweDVBXTtcbmxldCBsYXRpblNtYWxsOiBbbnVtYmVyLCBudW1iZXJdID0gWzB4NjEsIDB4N0FdO1xubGV0IGdyZWVrQ2FwOiBbbnVtYmVyLCBudW1iZXJdID0gWzB4MzkxLCAweDNBOV07XG5sZXQgZ3JlZWtTbWFsbDogW251bWJlciwgbnVtYmVyXSA9IFsweDNCMSwgMHgzQzldO1xubGV0IGRpZ2l0czogW251bWJlciwgbnVtYmVyXSA9IFsweDMwLCAweDM5XTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYSB2YWx1ZSBpcyBpbiBhIGdpdmVuIG51bWVyaWNhbCBpbnRlcnZhbC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSBUaGUgdmFsdWUuXG4gKiBAcGFyYW0ge1tudW1iZXIsIG51bWJlcl19IHJhbmdlIFRoZSBjbG9zZWQgaW50ZXJ2YWwuXG4gKi9cbmZ1bmN0aW9uIGluUmFuZ2UodmFsdWU6IG51bWJlciwgcmFuZ2U6IFtudW1iZXIsIG51bWJlcl0pIHtcbiAgcmV0dXJuICh2YWx1ZSA+PSByYW5nZVswXSAmJiB2YWx1ZSA8PSByYW5nZVsxXSk7XG59XG5cblxuLyoqXG4gKiBNZXRob2QgdG8gY3JlYXRlIGEgdG9rZW4gZm9yIHRoZSB2ZWN0b3IgY29tbWFuZHMuIEl0IGNyZWF0ZXMgYSB2ZWN0b3IgdG9rZW5cbiAqIHdpdGggdGhlIHNwZWNpZmljIHZlY3RvciBmb250IChlLmcuLCBib2xkKSBpbiBjYXNlIGl0IGlzIGEgTGF0aW4gb3IgY2FwaXRhbFxuICogR3JlZWsgY2hhcmFjdGVyLCBhY2NlbnQgb3Igc21hbGwgR3JlZWsgY2hhcmFjdGVyIGlmIGNvbW1hbmQgaXMgc3RhcnJlZC4gVGhpc1xuICogaXMgYSByZXBsYWNlbWVudCBmb3IgdGhlIG9yaWdpbmFsIHRva2VuIG1ldGhvZCBpbiB0aGUgbm9kZSBmYWN0b3J5LlxuICogQHBhcmFtIHtOb2RlRmFjdG9yeX0gZmFjdG9yeSBUaGUgY3VycmVudCBub2RlIGZhY3RvcnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2luZCBUaGUgdHlwZSBvZiB0b2tlbiB0byBjcmVhdGUuXG4gKiBAcGFyYW0ge2FueX0gZGVmIFRoZSBhdHRyaWJ1dGVzIGZvciB0aGUgbm9kZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IFRoZSB0ZXh0IGNvbnRhaW5lZCBpbiB0aGUgdG9rZW4gbm9kZS5cbiAqIEByZXR1cm4ge01tbE5vZGV9IFRoZSBuZXdseSBjcmVhdGUgdG9rZW4gbm9kZS5cbiAqL1xuZnVuY3Rpb24gY3JlYXRlVmVjdG9yVG9rZW4oZmFjdG9yeTogTm9kZUZhY3RvcnksIGtpbmQ6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZjogYW55LCB0ZXh0OiBzdHJpbmcpOiBNbWxOb2RlICB7XG4gIGxldCBwYXJzZXIgPSBmYWN0b3J5LmNvbmZpZ3VyYXRpb24ucGFyc2VyO1xuICBsZXQgdG9rZW4gPSBOb2RlRmFjdG9yeS5jcmVhdGVUb2tlbihmYWN0b3J5LCBraW5kLCBkZWYsIHRleHQpO1xuICBsZXQgY29kZTogbnVtYmVyID0gdGV4dC5jb2RlUG9pbnRBdCgwKTtcbiAgaWYgKHRleHQubGVuZ3RoID09PSAxICYmICFwYXJzZXIuc3RhY2suZW52LmZvbnQgJiZcbiAgICAgIHBhcnNlci5zdGFjay5lbnYudmVjdG9yRm9udCAmJlxuICAgICAgKGluUmFuZ2UoY29kZSwgbGF0aW5DYXApIHx8IGluUmFuZ2UoY29kZSwgbGF0aW5TbWFsbCkgfHxcbiAgICAgICBpblJhbmdlKGNvZGUsIGdyZWVrQ2FwKSB8fCBpblJhbmdlKGNvZGUsIGRpZ2l0cykgfHxcbiAgICAgICAoaW5SYW5nZShjb2RlLCBncmVla1NtYWxsKSAmJiBwYXJzZXIuc3RhY2suZW52LnZlY3RvclN0YXIpIHx8XG4gICAgICAgTm9kZVV0aWwuZ2V0QXR0cmlidXRlKHRva2VuLCAnYWNjZW50JykpKSB7XG4gICAgTm9kZVV0aWwuc2V0QXR0cmlidXRlKHRva2VuLCAnbWF0aHZhcmlhbnQnLCBwYXJzZXIuc3RhY2suZW52LnZlY3RvckZvbnQpO1xuICB9XG4gIHJldHVybiB0b2tlbjtcbn1cblxuXG4vKipcbiAqIEJvbGQgdmVjdG9yIG5vdGF0aW9uLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuUGh5c2ljc01ldGhvZHMuVmVjdG9yQm9sZCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHN0YXIgPSBwYXJzZXIuR2V0U3RhcigpO1xuICBsZXQgYXJnID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBsZXQgb2xkVG9rZW4gPSBwYXJzZXIuY29uZmlndXJhdGlvbi5ub2RlRmFjdG9yeS5nZXQoJ3Rva2VuJyk7XG4gIGxldCBvbGRGb250ID0gcGFyc2VyLnN0YWNrLmVudi5mb250O1xuICBkZWxldGUgcGFyc2VyLnN0YWNrLmVudi5mb250O1xuICBwYXJzZXIuY29uZmlndXJhdGlvbi5ub2RlRmFjdG9yeS5zZXQoJ3Rva2VuJywgY3JlYXRlVmVjdG9yVG9rZW4pO1xuICBwYXJzZXIuc3RhY2suZW52LnZlY3RvckZvbnQgPSBzdGFyID8gJ2JvbGQtaXRhbGljJyA6ICdib2xkJztcbiAgcGFyc2VyLnN0YWNrLmVudi52ZWN0b3JTdGFyID0gc3RhcjtcbiAgbGV0IG5vZGUgPSBuZXcgVGV4UGFyc2VyKGFyZywgcGFyc2VyLnN0YWNrLmVudiwgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpO1xuICBpZiAob2xkRm9udCkge1xuICAgIHBhcnNlci5zdGFjay5lbnYuZm9udCA9IG9sZEZvbnQ7XG4gIH1cbiAgZGVsZXRlIHBhcnNlci5zdGFjay5lbnYudmVjdG9yRm9udDtcbiAgZGVsZXRlIHBhcnNlci5zdGFjay5lbnYudmVjdG9yU3RhcjtcbiAgcGFyc2VyLmNvbmZpZ3VyYXRpb24ubm9kZUZhY3Rvcnkuc2V0KCd0b2tlbicsIG9sZFRva2VuKTtcbiAgcGFyc2VyLlB1c2gobm9kZSk7XG59O1xuXG5cbi8qKlxuICogTWFjcm9zIHRoYXQgY2FuIGhhdmUgYW4gb3B0aW9uYWwgc3RhciB3aGljaCBpcyBwcm9wYWdhdGVkLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBhcmdjb3VudCBOdW1iZXIgb2YgYXJndW1lbnRzLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gLi4ucGFydHMgTGlzdCBvZiBwYXJ0cyBmcm9tIHdoaWNoIHRvIGFzc2VtYmxlIHRoZSBtYWNyby5cbiAqICAgICBJZiB0aGUgb3JpZ2luYWwgY29tbWFuZCBpcyBzdGFycmVkLCBhIHN0YXIgd2lsbCBiZSBpbmplY3RlZCBhdCBlYWNoIHBhcnQuXG4gKi9cblBoeXNpY3NNZXRob2RzLlN0YXJNYWNybyA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ2NvdW50OiBudW1iZXIsIC4uLnBhcnRzOiBzdHJpbmdbXSkge1xuICBsZXQgc3RhciA9IHBhcnNlci5HZXRTdGFyKCk7XG4gIGNvbnN0IGFyZ3M6IHN0cmluZ1tdID0gW107XG4gIGlmIChhcmdjb3VudCkge1xuICAgIGZvciAobGV0IGkgPSBhcmdzLmxlbmd0aDsgaSA8IGFyZ2NvdW50OyBpKyspIHtcbiAgICAgIGFyZ3MucHVzaChwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICAgIH1cbiAgfVxuICBsZXQgbWFjcm8gPSBwYXJ0cy5qb2luKHN0YXIgPyAnKicgOiAnJyk7XG4gIG1hY3JvID0gUGFyc2VVdGlsLnN1YnN0aXR1dGVBcmdzKHBhcnNlciwgYXJncywgbWFjcm8pO1xuICBwYXJzZXIuc3RyaW5nID0gUGFyc2VVdGlsLmFkZEFyZ3MocGFyc2VyLCBtYWNybywgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSkpO1xuICBwYXJzZXIuaSA9IDA7XG4gIFBhcnNlVXRpbC5jaGVja01heE1hY3JvcyhwYXJzZXIpO1xufTtcblxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBhcHBsaWNhdGlvbiBvZiBhIHZlY3RvciBvcGVyYXRpb24uXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBraW5kIFRoZSB0eXBlIG9mIHN0YWNrIGl0ZW0gdG8gcGFyc2UgdGhlIG9wZXJhdG9yIGludG8uXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgZXhwcmVzc2lvbi5cbiAqIEBwYXJhbSB7c3RyaW5nW119IC4uLmZlbmNlcyBMaXN0IG9mIG9wZW5pbmcgZmVuY2VzIHRoYXQgc2hvdWxkIGJlXG4gKiAgICAgYXV0b21hdGljYWxseSBzaXplZCBhbmQgcGFpcmVkIHRvIGl0cyBjb3JyZXNwb25kaW5nIGNsb3NpbmcgZmVuY2UuXG4gKi9cbmxldCB2ZWN0b3JBcHBsaWNhdGlvbiA9IGZ1bmN0aW9uKFxuICBwYXJzZXI6IFRleFBhcnNlciwga2luZDogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIG9wZXJhdG9yOiBzdHJpbmcsXG4gIGZlbmNlczogc3RyaW5nW10pIHtcbiAgbGV0IG9wID0gbmV3IFRleFBhcnNlcihvcGVyYXRvciwgcGFyc2VyLnN0YWNrLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCk7XG4gIHBhcnNlci5QdXNoKHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoa2luZCwgb3ApKTtcbiAgbGV0IGxlZnQgPSBwYXJzZXIuR2V0TmV4dCgpO1xuICBsZXQgcmlnaHQgPSBwYWlyc1tsZWZ0XTtcbiAgaWYgKCFyaWdodCkge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgbGZlbmNlID0gJycsIHJmZW5jZSA9ICcnLCBhcmcgPSAnJztcbiAgbGV0IGVubGFyZ2UgPSBmZW5jZXMuaW5kZXhPZihsZWZ0KSAhPT0gLTE7XG4gIGlmIChsZWZ0ID09PSAneycpIHtcbiAgICBhcmcgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgbGZlbmNlID0gZW5sYXJnZSA/ICdcXFxcbGVmdFxcXFx7JyA6ICcnO1xuICAgIHJmZW5jZSA9IGVubGFyZ2UgPyAnXFxcXHJpZ2h0XFxcXH0nIDogJyc7XG4gICAgbGV0IG1hY3JvID0gbGZlbmNlICsgJyAnICsgYXJnICsgJyAnICsgcmZlbmNlO1xuICAgIHBhcnNlci5zdHJpbmcgPSBtYWNybyArIHBhcnNlci5zdHJpbmcuc2xpY2UocGFyc2VyLmkpO1xuICAgIHBhcnNlci5pID0gMDtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFlbmxhcmdlKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHBhcnNlci5pKys7XG4gIHBhcnNlci5QdXNoKHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2F1dG8gb3BlbicpXG4gICAgICAgICAgICAgIC5zZXRQcm9wZXJ0aWVzKHtvcGVuOiBsZWZ0LCBjbG9zZTogcmlnaHR9KSk7XG59O1xuXG5cbi8qKlxuICogQW4gb3BlcmF0b3IgdGhhdCBuZWVkcyB0byBiZSBwYXJzZWQgKGUuZy4sIGEgR3JlZWsgbGV0dGVyIG9yIG5hYmxhKSBhbmRcbiAqIGFwcGxpZWQgdG8gYSBwb3NzaWJseSBmZW5jZWQgZXhwcmVzc2lvbi4gQnkgZGVmYXVsdCBhdXRvbWF0aWMgZmVuY2VzIGFyZVxuICogcGFyZW50aGVzZXMgYW5kIGJyYWtldHMsIHdpdGggYnJhY2VzIGJlaW5nIGlnbm9yZWQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wZXJhdG9yIFRoZSBvcGVyYXRvciBleHByZXNzaW9uLlxuICogQHBhcmFtIHtzdHJpbmdbXX0gLi4uZmVuY2VzIExpc3Qgb2Ygb3BlbmluZyBmZW5jZXMgdGhhdCBzaG91bGQgYmVcbiAqICAgICBhdXRvbWF0aWNhbGx5IHNpemVkIGFuZCBwYWlyZWQgdG8gaXRzIGNvcnJlc3BvbmRpbmcgY2xvc2luZyBmZW5jZS5cbiAqL1xuUGh5c2ljc01ldGhvZHMuT3BlcmF0b3JBcHBsaWNhdGlvbiA9IGZ1bmN0aW9uKFxuICBwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nLFxuICAuLi5mZW5jZXM6IHN0cmluZ1tdKSB7XG4gIHZlY3RvckFwcGxpY2F0aW9uKHBhcnNlciwgJ2ZuJywgbmFtZSwgb3BlcmF0b3IsIGZlbmNlcyk7XG59O1xuXG4vKipcbiAqIEEgdmVjdG9yIG9wZXJhdG9yIHRoYXQgbmVlZHMgdG8gYmUgcGFyc2VkIChlLmcuLCBhIEdyZWVrIGxldHRlciBvciBuYWJsYSB3aXRoXG4gKiBhIGNyb3NzcHJvZHVjdCkgYW5kIGNvbm5lY3RlZCB0byBhIHBvc3NpYmx5IGZlbmNlZCBleHByZXNzaW9uLiBCeSBkZWZhdWx0XG4gKiBhdXRvbWF0aWMgZmVuY2VzIGFyZSBwYXJlbnRoZXNlcyBhbmQgYnJha2V0cy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIGV4cHJlc3Npb24uXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSAuLi5mZW5jZXMgTGlzdCBvZiBvcGVuaW5nIGZlbmNlcyB0aGF0IHNob3VsZCBiZVxuICogICAgIGF1dG9tYXRpY2FsbHkgc2l6ZWQgYW5kIHBhaXJlZCB0byBpdHMgY29ycmVzcG9uZGluZyBjbG9zaW5nIGZlbmNlLlxuICovXG5QaHlzaWNzTWV0aG9kcy5WZWN0b3JPcGVyYXRvciA9IGZ1bmN0aW9uKFxuICBwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nLFxuICAuLi5mZW5jZXM6IHN0cmluZ1tdKSB7XG4gIHZlY3RvckFwcGxpY2F0aW9uKHBhcnNlciwgJ21tbCcsIG5hbWUsIG9wZXJhdG9yLCBmZW5jZXMpO1xufTtcblxuXG4vKioqKioqKioqKioqKioqKioqKioqKipcbiAqIFBoeXNpY3MgcGFja2FnZSBzZWN0aW9uIDIuM1xuICogT3BlcmF0b3JzXG4gKi9cblxuLyoqXG4gKiBPcGVyYXRvciBleHByZXNzaW9uIHdpdGggYXV0b21hdGljIGZlbmNlcyBhbmQgb3B0aW9uYWwgZXhwb25lbnQuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtib29sZWFuPX0gb3B0IFNldCB0byBmYWxzZSBpZiBubyBvcHRpb25hbCBleHBvbmVudCBpcyBhbGxvd2VkLlxuICogQHBhcmFtIHtzdHJpbmc9fSBpZCBUaGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gaWYgZGlmZmVyZW50IGZyb20gbmFtZS5cbiAqL1xuUGh5c2ljc01ldGhvZHMuRXhwcmVzc2lvbiA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0OiBib29sZWFuID0gdHJ1ZSwgaWQ6IHN0cmluZyA9ICcnKSB7XG4gIGlkID0gaWQgfHwgbmFtZS5zbGljZSgxKTtcbiAgY29uc3QgZXhwID0gb3B0ID8gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpIDogbnVsbDtcbiAgbGV0IG1tbCA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21pJywge3RleENsYXNzOiBURVhDTEFTUy5PUH0sIGlkKTtcbiAgaWYgKGV4cCkge1xuICAgIGNvbnN0IHN1cCA9IG5ldyBUZXhQYXJzZXIoZXhwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLnN0YWNrLmVudiwgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpO1xuICAgIG1tbCA9IHBhcnNlci5jcmVhdGUoJ25vZGUnLCAnbXN1cCcsIFttbWwsIHN1cF0pO1xuICB9XG4gIHBhcnNlci5QdXNoKHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ2ZuJywgbW1sKSk7XG4gIGlmIChwYXJzZXIuR2V0TmV4dCgpICE9PSAnKCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgcGFyc2VyLmkrKztcbiAgcGFyc2VyLlB1c2gocGFyc2VyLml0ZW1GYWN0b3J5LmNyZWF0ZSgnYXV0byBvcGVuJylcbiAgICAgICAgICAgICAgLnNldFByb3BlcnRpZXMoe29wZW46ICcoJywgY2xvc2U6ICcpJ30pKTtcbn07XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqXG4gKiBQaHlzaWNzIHBhY2thZ2Ugc2VjdGlvbiAyLjRcbiAqIFF1aWNrIHF1YWQgdGV4dFxuICovXG5cbi8qKlxuICogUXVhZCB0ZXh0IG1hY3Jvcy5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUaGUgdGV4dCB0aGF0IGlzIHRvIGJlIHBhZGRlZCB3aXRoIHF1YWQgc3BhY2VzLlxuICovXG5QaHlzaWNzTWV0aG9kcy5RcXRleHQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dDogc3RyaW5nKSB7XG4gIGxldCBzdGFyID0gcGFyc2VyLkdldFN0YXIoKTtcbiAgbGV0IGFyZyA9IHRleHQgPyB0ZXh0IDogcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBsZXQgcmVwbGFjZSA9IChzdGFyID8gJycgOiAnXFxcXHF1YWQnKSArICdcXFxcdGV4dHsnICsgYXJnICsgJ31cXFxccXVhZCAnO1xuICBwYXJzZXIuc3RyaW5nID0gcGFyc2VyLnN0cmluZy5zbGljZSgwLCBwYXJzZXIuaSkgKyByZXBsYWNlICtcbiAgICBwYXJzZXIuc3RyaW5nLnNsaWNlKHBhcnNlci5pKTtcbn07XG5cblxuLyoqKioqKioqKioqKioqKioqKioqKioqXG4gKiBQaHlzaWNzIHBhY2thZ2Ugc2VjdGlvbiAyLjVcbiAqIERlcml2YXRpdmVzXG4gKi9cblxuLyoqXG4gKiBUaGUgZGlmZmVyZW50aWFsIGFuZCB2YXJpYXRpb24gbWFjcm9zLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBvcCBUaGUgb3BlcmF0b3IuIEl0IHdpbGwgYmUgcGFyc2VkLlxuICovXG5QaHlzaWNzTWV0aG9kcy5EaWZmZXJlbnRpYWwgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A6IHN0cmluZykge1xuICBjb25zdCBvcHRBcmcgPSBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSk7XG4gIGNvbnN0IHBvd2VyID0gb3B0QXJnICE9IG51bGwgPyAnXnsnICsgb3B0QXJnICsgJ30nIDogJyAnO1xuICBjb25zdCBwYXJlbnMgPSBwYXJzZXIuR2V0TmV4dCgpID09PSAnKCc7XG4gIGNvbnN0IGJyYWNlcyA9IHBhcnNlci5HZXROZXh0KCkgPT09ICd7JztcbiAgbGV0IG1hY3JvID0gb3AgKyBwb3dlcjtcbiAgaWYgKCEocGFyZW5zIHx8IGJyYWNlcykpIHtcbiAgICBtYWNybyArPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSwgdHJ1ZSkgfHwgJyc7XG4gICAgbGV0IG1tbCA9IG5ldyBUZXhQYXJzZXIobWFjcm8sIHBhcnNlci5zdGFjay5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpO1xuICAgIHBhcnNlci5QdXNoKG1tbCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChicmFjZXMpIHtcbiAgICBtYWNybyArPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgY29uc3QgbW1sID0gbmV3IFRleFBhcnNlcihtYWNybywgcGFyc2VyLnN0YWNrLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKTtcbiAgICBwYXJzZXIuUHVzaChwYXJzZXIuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbbW1sXSwge3RleENsYXNzOiBURVhDTEFTUy5PUH0pKTtcbiAgICByZXR1cm47XG4gIH1cbiAgcGFyc2VyLlB1c2gobmV3IFRleFBhcnNlcihtYWNybywgcGFyc2VyLnN0YWNrLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCkpO1xuICBwYXJzZXIuaSsrO1xuICBwYXJzZXIuUHVzaChwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdhdXRvIG9wZW4nKVxuICAgICAgICAgICAgICAuc2V0UHJvcGVydGllcyh7b3BlbjogJygnLCBjbG9zZTogJyknfSkpO1xufTtcblxuXG4vKipcbiAqIFRoZSBkZXJpdmF0aXZlIG1hY3JvLiBJdHMgYmVoYXZpb3VyIGRlcGVuZHMgb24gdGhlIG51bWJlciBvZiBhcmd1bWVudHNcbiAqIHByb3ZpZGVkLiBJbiBjYXNlIG9mXG4gKiAxIGFyZ3VtZW50OiB3aWxsIGJlIHBhcnQgb2YgdGhlIGRlbm9taW5hdG9yLlxuICogMiBhcmd1bWVudHM6IGFyZ3VtZW50IG9uZSBpcyBudW1lcmF0b3IsIGFyZ3VtZW50IHR3byBpcyBkZW5vbWluYXRvci5cbiAqIDMrIGFyZ3VtZW50czogYXJndW1lbnRzIGFib3ZlIDIgd2lsbCBiZSBwYXJ0IG9mIHRoZSBkZW5vbWluYXRvciBhbmQgdGhlXG4gKiAgIGV4cG9uZW50IG9mIHRoZSBlbnVtZXJhdG9yIHdpbGwgZGVwZW5kIG9uIHRoZSBudW1iZXIgb2YgZGVub21pbmF0b3JcbiAqICAgYXJndW1lbnRzLiBJbiBwYXJ0aWN1bGFyLCB0aGUgb3B0aW9uYWwgZXhwb25lbnQgYXJndW1lbnQgd2lsbCBiZSBpZ25vcmVkIVxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBhcmdNYXggVGhlIG1heGltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgdGhlIG1hY3JvLlxuICogQHBhcmFtIHtzdHJpbmd9IG9wIFRoZSBkZXJpdmF0aXZlIG9wZXJhdG9yLlxuICovXG5QaHlzaWNzTWV0aG9kcy5EZXJpdmF0aXZlID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdNYXg6IG51bWJlciwgb3A6IHN0cmluZykge1xuICBjb25zdCBzdGFyID0gcGFyc2VyLkdldFN0YXIoKTtcbiAgY29uc3Qgb3B0QXJnID0gcGFyc2VyLkdldEJyYWNrZXRzKG5hbWUpO1xuICBsZXQgYXJnQ291bnRlciA9IDE7XG4gIGNvbnN0IGFyZ3MgPSBbXTtcbiAgYXJncy5wdXNoKHBhcnNlci5HZXRBcmd1bWVudChuYW1lKSk7XG4gIHdoaWxlIChwYXJzZXIuR2V0TmV4dCgpID09PSAneycgJiYgYXJnQ291bnRlciA8IGFyZ01heCkge1xuICAgIGFyZ3MucHVzaChwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpO1xuICAgIGFyZ0NvdW50ZXIrKztcbiAgfVxuICBsZXQgaWdub3JlID0gZmFsc2U7XG4gIGxldCBwb3dlcjEgPSAnICc7XG4gIGxldCBwb3dlcjIgPSAnICc7XG4gIGlmIChhcmdNYXggPiAyICYmIGFyZ3MubGVuZ3RoID4gMikge1xuICAgIHBvd2VyMSA9ICdeeycgKyAoYXJncy5sZW5ndGggLSAxKSArICd9JztcbiAgICBpZ25vcmUgPSB0cnVlO1xuICB9IGVsc2UgaWYgKG9wdEFyZyAhPSBudWxsKSB7XG4gICAgaWYgKGFyZ01heCA+IDIgJiYgYXJncy5sZW5ndGggPiAxKSB7XG4gICAgICBpZ25vcmUgPSB0cnVlO1xuICAgIH1cbiAgICBwb3dlcjEgPSAnXnsnICsgb3B0QXJnICsgJ30nO1xuICAgIHBvd2VyMiA9IHBvd2VyMTtcbiAgfVxuICBjb25zdCBmcmFjID0gc3RhciA/ICdcXFxcZmxhdGZyYWMnIDogJ1xcXFxmcmFjJztcbiAgY29uc3QgZmlyc3QgPSBhcmdzLmxlbmd0aCA+IDEgPyBhcmdzWzBdIDogJyc7XG4gIGNvbnN0IHNlY29uZCA9IGFyZ3MubGVuZ3RoID4gMSA/IGFyZ3NbMV0gOiBhcmdzWzBdO1xuICBsZXQgcmVzdCA9ICcnO1xuICBmb3IgKGxldCBpID0gMiwgYXJnOyBhcmcgPSBhcmdzW2ldOyBpKyspIHtcbiAgICByZXN0ICs9IG9wICsgJyAnICsgYXJnO1xuICB9XG4gIGNvbnN0IG1hY3JvID0gZnJhYyArICd7JyArIG9wICsgcG93ZXIxICsgZmlyc3QgKyAnfScgK1xuICAgICd7JyArIG9wICsgJyAnICsgc2Vjb25kICsgcG93ZXIyICsgJyAnICsgcmVzdCArICd9JztcbiAgcGFyc2VyLlB1c2gobmV3IFRleFBhcnNlcihtYWNybywgcGFyc2VyLnN0YWNrLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCkpO1xuICBpZiAocGFyc2VyLkdldE5leHQoKSA9PT0gJygnKSB7XG4gICAgcGFyc2VyLmkrKztcbiAgICBwYXJzZXIuUHVzaChwYXJzZXIuaXRlbUZhY3RvcnkuY3JlYXRlKCdhdXRvIG9wZW4nKVxuICAgICAgICAgICAgICAgIC5zZXRQcm9wZXJ0aWVzKHtvcGVuOiAnKCcsIGNsb3NlOiAnKScsIGlnbm9yZTogaWdub3JlfSkpO1xuICB9XG59O1xuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKlxuICogUGh5c2ljcyBwYWNrYWdlIHNlY3Rpb24gMi42XG4gKiBEaXJhYyBicmEta2V0IG5vdGF0aW9uXG4gKi9cblxuLyoqXG4gKiBUaGUgYnJhIG1hY3JvLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuUGh5c2ljc01ldGhvZHMuQnJhID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBsZXQgc3RhckJyYSA9IHBhcnNlci5HZXRTdGFyKCk7XG4gIGxldCBicmEgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGxldCBrZXQgPSAnJztcbiAgbGV0IGhhc0tldCA9IGZhbHNlO1xuICBsZXQgc3RhcktldCA9IGZhbHNlO1xuICBpZiAocGFyc2VyLkdldE5leHQoKSA9PT0gJ1xcXFwnKSB7XG4gICAgbGV0IHNhdmVJID0gcGFyc2VyLmk7XG4gICAgcGFyc2VyLmkrKztcbiAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCBicmEta2V0IGFsc28gd29ya3MgaWYgXFxsZXQgYm91bmQgdmVyc2lvbnMgb2YgXFxrZXQuXG4gICAgbGV0IGNzID0gcGFyc2VyLkdldENTKCk7XG4gICAgbGV0IHN5bWJvbCA9IHBhcnNlci5sb29rdXAoJ21hY3JvJywgY3MpIGFzIE1hY3JvO1xuICAgIGlmIChzeW1ib2wgJiYgc3ltYm9sLnN5bWJvbCA9PT0gJ2tldCcpIHtcbiAgICAgIGhhc0tldCA9IHRydWU7XG4gICAgICBzYXZlSSA9IHBhcnNlci5pO1xuICAgICAgc3RhcktldCA9IHBhcnNlci5HZXRTdGFyKCk7XG4gICAgICBpZiAocGFyc2VyLkdldE5leHQoKSA9PT0gJ3snKSB7XG4gICAgICAgIGtldCA9IHBhcnNlci5HZXRBcmd1bWVudChjcywgdHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZXIuaSA9IHNhdmVJO1xuICAgICAgICBzdGFyS2V0ID0gZmFsc2U7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlci5pID0gc2F2ZUk7XG4gICAgfVxuICB9XG4gIGxldCBtYWNybyA9ICcnO1xuICBpZiAoaGFzS2V0KSB7XG4gICAgbWFjcm8gPSAoc3RhckJyYSB8fCBzdGFyS2V0KSA/XG4gICAgYFxcXFxsYW5nbGV7JHticmF9fVxcXFx2ZXJ0eyR7a2V0fX1cXFxccmFuZ2xlYCA6XG4gICAgICBgXFxcXGxlZnRcXFxcbGFuZ2xleyR7YnJhfX1cXFxcbWlkZGxlXFxcXHZlcnR7JHtrZXR9fVxcXFxyaWdodFxcXFxyYW5nbGVgO1xuICB9IGVsc2Uge1xuICAgIG1hY3JvID0gKHN0YXJCcmEgfHwgc3RhcktldCkgP1xuICAgIGBcXFxcbGFuZ2xleyR7YnJhfX1cXFxcdmVydGAgOiBgXFxcXGxlZnRcXFxcbGFuZ2xleyR7YnJhfX1cXFxccmlnaHRcXFxcdmVydHske2tldH19YDtcbiAgfVxuICBwYXJzZXIuUHVzaChuZXcgVGV4UGFyc2VyKG1hY3JvLCBwYXJzZXIuc3RhY2suZW52LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKSk7XG59O1xuXG5cbi8qKlxuICogVGhlIGtldCBtYWNyby5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cblBoeXNpY3NNZXRob2RzLktldCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHN0YXIgPSBwYXJzZXIuR2V0U3RhcigpO1xuICBsZXQga2V0ID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBsZXQgbWFjcm8gPSBzdGFyID8gYFxcXFx2ZXJ0eyR7a2V0fX1cXFxccmFuZ2xlYCA6XG4gICAgYFxcXFxsZWZ0XFxcXHZlcnR7JHtrZXR9fVxcXFxyaWdodFxcXFxyYW5nbGVgO1xuICBwYXJzZXIuUHVzaChuZXcgVGV4UGFyc2VyKG1hY3JvLCBwYXJzZXIuc3RhY2suZW52LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKSk7XG59O1xuXG5cbi8qKlxuICogVGhlIGJyYWtldCBtYWNyby5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cblBoeXNpY3NNZXRob2RzLkJyYUtldCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHN0YXIgPSBwYXJzZXIuR2V0U3RhcigpO1xuICBsZXQgYnJhID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBsZXQga2V0ID0gbnVsbDtcbiAgaWYgKHBhcnNlci5HZXROZXh0KCkgPT09ICd7Jykge1xuICAgIGtldCA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lLCB0cnVlKTtcbiAgfVxuICBsZXQgbWFjcm8gPSAnJztcbiAgaWYgKGtldCA9PSBudWxsKSB7XG4gICAgbWFjcm8gPSBzdGFyID9cbiAgICAgIGBcXFxcbGFuZ2xleyR7YnJhfX1cXFxcdmVydHske2JyYX19XFxcXHJhbmdsZWAgOlxuICAgICAgYFxcXFxsZWZ0XFxcXGxhbmdsZXske2JyYX19XFxcXG1pZGRsZVxcXFx2ZXJ0eyR7YnJhfX1cXFxccmlnaHRcXFxccmFuZ2xlYDtcbiAgfSBlbHNlIHtcbiAgICBtYWNybyA9IHN0YXIgP1xuICAgICAgYFxcXFxsYW5nbGV7JHticmF9fVxcXFx2ZXJ0eyR7a2V0fX1cXFxccmFuZ2xlYCA6XG4gICAgICBgXFxcXGxlZnRcXFxcbGFuZ2xleyR7YnJhfX1cXFxcbWlkZGxlXFxcXHZlcnR7JHtrZXR9fVxcXFxyaWdodFxcXFxyYW5nbGVgO1xuICB9XG4gIHBhcnNlci5QdXNoKG5ldyBUZXhQYXJzZXIobWFjcm8sIHBhcnNlci5zdGFjay5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpKTtcbn07XG5cblxuLyoqXG4gKiBUaGUga2V0YnJhIG1hY3JvLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuUGh5c2ljc01ldGhvZHMuS2V0QnJhID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBsZXQgc3RhciA9IHBhcnNlci5HZXRTdGFyKCk7XG4gIGxldCBrZXQgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGxldCBicmEgPSBudWxsO1xuICBpZiAocGFyc2VyLkdldE5leHQoKSA9PT0gJ3snKSB7XG4gICAgYnJhID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUsIHRydWUpO1xuICB9XG4gIGxldCBtYWNybyA9ICcnO1xuICBpZiAoYnJhID09IG51bGwpIHtcbiAgICBtYWNybyA9IHN0YXIgP1xuICAgICAgYFxcXFx2ZXJ0eyR7a2V0fX1cXFxccmFuZ2xlXFxcXCFcXFxcbGFuZ2xleyR7a2V0fX1cXFxcdmVydGAgOlxuICAgICAgYFxcXFxsZWZ0XFxcXHZlcnR7JHtrZXR9fVxcXFxtaWRkbGVcXFxccmFuZ2xlXFxcXCFcXFxcbWlkZGxlXFxcXGxhbmdsZXske2tldH19XFxcXHJpZ2h0XFxcXHZlcnRgO1xuICB9IGVsc2Uge1xuICAgIG1hY3JvID0gc3RhciA/XG4gICAgICBgXFxcXHZlcnR7JHtrZXR9fVxcXFxyYW5nbGVcXFxcIVxcXFxsYW5nbGV7JHticmF9fVxcXFx2ZXJ0YCA6XG4gICAgICBgXFxcXGxlZnRcXFxcdmVydHske2tldH19XFxcXG1pZGRsZVxcXFxyYW5nbGVcXFxcIVxcXFxtaWRkbGVcXFxcbGFuZ2xleyR7YnJhfX1cXFxccmlnaHRcXFxcdmVydGA7XG4gIH1cbiAgcGFyc2VyLlB1c2gobmV3IFRleFBhcnNlcihtYWNybywgcGFyc2VyLnN0YWNrLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCkpO1xufTtcblxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgZXhwYW5kZWQgYnJha2V0IExhVGVYIGNvZGUgZm9yIG1hdHJpeCBvcGVyYXRpb25zLlxuICogQHBhcmFtIHtbc3RyaW5nLCBzdHJpbmcsIHN0cmluZ119IFthcmcxLCBhcmcyLCBhcmczXSBUaGUgdGhyZWUgYXJndW1lbnRzXG4gKiAgICAgPGFyZzF8YXJnMnxhcmczPi5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc3RhcjEgTm8gYXV0b21hdGljIHNpemluZyBvZiBmZW5jZXMuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXIyIEF1dG9tYXRpYyBzaXppbmcgb2YgZmVuY2VzIHdydC4gdG8gYXJnMSAmIGFyZzMgb25seS5cbiAqL1xuZnVuY3Rpb24gb3V0cHV0QnJha2V0KFthcmcxLCBhcmcyLCBhcmczXTogW3N0cmluZywgc3RyaW5nLCBzdHJpbmddLFxuICAgICAgICAgICAgICAgICAgICAgIHN0YXIxOiBib29sZWFuLCBzdGFyMjogYm9vbGVhbikge1xuICByZXR1cm4gKHN0YXIxICYmIHN0YXIyKSA/XG4gICAgYFxcXFxsZWZ0XFxcXGxhbmdsZXske2FyZzF9fVxcXFxtaWRkbGVcXFxcdmVydHske2FyZzJ9fVxcXFxtaWRkbGVcXFxcdmVydHske2FyZzN9fVxcXFxyaWdodFxcXFxyYW5nbGVgIDpcbiAgICAoc3RhcjEgPyBgXFxcXGxhbmdsZXske2FyZzF9fVxcXFx2ZXJ0eyR7YXJnMn19XFxcXHZlcnR7JHthcmczfX1cXFxccmFuZ2xlYCA6XG4gICAgIGBcXFxcbGVmdFxcXFxsYW5nbGV7JHthcmcxfX1cXFxccmlnaHRcXFxcdmVydHske2FyZzJ9fVxcXFxsZWZ0XFxcXHZlcnR7JHthcmczfX1cXFxccmlnaHRcXFxccmFuZ2xlYCk7XG59XG5cblxuLyoqXG4gKiBUaGUgZXhwZWN0YXRpb24gdmFsdWUgbWFjcm8uXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5QaHlzaWNzTWV0aG9kcy5FeHBlY3RhdGlvbiA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgbGV0IHN0YXIxID0gcGFyc2VyLkdldFN0YXIoKTtcbiAgbGV0IHN0YXIyID0gc3RhcjEgJiYgcGFyc2VyLkdldFN0YXIoKTtcbiAgbGV0IGFyZzEgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gIGxldCBhcmcyID0gbnVsbDtcbiAgaWYgKHBhcnNlci5HZXROZXh0KCkgPT09ICd7Jykge1xuICAgIGFyZzIgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSwgdHJ1ZSk7XG4gIH1cbiAgbGV0IG1hY3JvID0gKGFyZzEgJiYgYXJnMikgP1xuICAgIG91dHB1dEJyYWtldChbYXJnMiwgYXJnMSwgYXJnMl0sIHN0YXIxLCBzdGFyMikgOlxuICAgIC8vIEJyYWNlcyBmb3Igc2VtYW50aWNzLCBzaW1pbGFyIHRvIGJyYWtldCBwYWNrYWdlLlxuICAgIChzdGFyMSA/IGBcXFxcbGFuZ2xlIHske2FyZzF9fSBcXFxccmFuZ2xlYCA6XG4gICAgIGBcXFxcbGVmdFxcXFxsYW5nbGUgeyR7YXJnMX19IFxcXFxyaWdodFxcXFxyYW5nbGVgKTtcbiAgcGFyc2VyLlB1c2gobmV3IFRleFBhcnNlcihtYWNybywgcGFyc2VyLnN0YWNrLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCkpO1xufTtcblxuXG4vKipcbiAqIFRoZSBtYXRyaXggZWxlbWVudCBtYWNyby5cbiAqIEBwYXJhbSB7VGV4UGFyc2VyfSBwYXJzZXIgVGhlIGNhbGxpbmcgcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG1hY3JvIG5hbWUuXG4gKi9cblBoeXNpY3NNZXRob2RzLk1hdHJpeEVsZW1lbnQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHN0YXIxID0gcGFyc2VyLkdldFN0YXIoKTtcbiAgY29uc3Qgc3RhcjIgPSBzdGFyMSAmJiBwYXJzZXIuR2V0U3RhcigpO1xuICBjb25zdCBhcmcxID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBjb25zdCBhcmcyID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBjb25zdCBhcmczID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBjb25zdCBtYWNybyA9IG91dHB1dEJyYWtldChbYXJnMSwgYXJnMiwgYXJnM10sIHN0YXIxLCBzdGFyMik7XG4gIHBhcnNlci5QdXNoKG5ldyBUZXhQYXJzZXIobWFjcm8sIHBhcnNlci5zdGFjay5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmNvbmZpZ3VyYXRpb24pLm1tbCgpKTtcbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKioqKipcbiAqIFBoeXNpY3MgcGFja2FnZSBTZWN0aW9uIDIuN1xuICogTWF0cml4IG1hY3Jvc1xuICovXG4vKipcbiAqIFRoZSBtYXRyaXggcXVhbnRpdHkgbWFjcm8uXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtib29sZWFuPX0gc21hbGwgVXNlIHNtYWxsIG1hdHJpeC5cbiAqL1xuUGh5c2ljc01ldGhvZHMuTWF0cml4UXVhbnRpdHkgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLCBzbWFsbD86IGJvb2xlYW4pIHtcbiAgY29uc3Qgc3RhciA9IHBhcnNlci5HZXRTdGFyKCk7XG4gIGNvbnN0IG5leHQgPSBwYXJzZXIuR2V0TmV4dCgpO1xuICBjb25zdCBhcnJheSA9IHNtYWxsID8gJ3NtYWxsbWF0cml4JyA6ICdhcnJheSc7XG4gIGxldCBhcmcgPSAnJztcbiAgbGV0IG9wZW4gPSAnJztcbiAgbGV0IGNsb3NlID0gJyc7XG4gIHN3aXRjaCAobmV4dCkge1xuICBjYXNlICd7JzpcbiAgICBhcmcgPSBwYXJzZXIuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgJygnOlxuICAgIHBhcnNlci5pKys7XG4gICAgb3BlbiA9IHN0YXIgPyAnXFxcXGxncm91cCcgOiAnKCc7XG4gICAgY2xvc2UgPSBzdGFyID8gJ1xcXFxyZ3JvdXAnIDogJyknO1xuICAgIGFyZyA9IHBhcnNlci5HZXRVcFRvKG5hbWUsICcpJyk7XG4gICAgYnJlYWs7XG4gIGNhc2UgJ1snOlxuICAgIHBhcnNlci5pKys7XG4gICAgb3BlbiA9ICdbJztcbiAgICBjbG9zZSA9ICddJztcbiAgICBhcmcgPSBwYXJzZXIuR2V0VXBUbyhuYW1lLCAnXScpO1xuICAgIGJyZWFrO1xuICBjYXNlICd8JzpcbiAgICBwYXJzZXIuaSsrO1xuICAgIG9wZW4gPSAnfCc7XG4gICAgY2xvc2UgPSAnfCc7XG4gICAgYXJnID0gcGFyc2VyLkdldFVwVG8obmFtZSwgJ3wnKTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICBvcGVuID0gJygnO1xuICAgIGNsb3NlID0gJyknO1xuICAgIGJyZWFrO1xuICB9XG4gIGNvbnN0IG1hY3JvID0gKG9wZW4gPyAnXFxcXGxlZnQnIDogJycpICsgb3BlbiArXG4gICAgJ1xcXFxiZWdpbnsnICsgYXJyYXkgKyAnfXt9ICcgKyBhcmcgKyAnXFxcXGVuZHsnICsgYXJyYXkgKyAnfScgK1xuICAgIChvcGVuID8gJ1xcXFxyaWdodCcgOiAnJykgKyBjbG9zZTtcbiAgcGFyc2VyLlB1c2gobmV3IFRleFBhcnNlcihtYWNybywgcGFyc2VyLnN0YWNrLmVudixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCkpO1xufTtcblxuXG4vKipcbiAqIEdlbmVyYXRpb24gb2YgaWRlbnRpdHkgbWF0cmljZXMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5QaHlzaWNzTWV0aG9kcy5JZGVudGl0eU1hdHJpeCA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgYXJnID0gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBjb25zdCBzaXplID0gcGFyc2VJbnQoYXJnLCAxMCk7XG4gIGlmIChpc05hTihzaXplKSkge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignSW52YWxpZE51bWJlcicsICdJbnZhbGlkIG51bWJlcicpO1xuICB9XG4gIGlmIChzaXplIDw9IDEpIHtcbiAgICBwYXJzZXIuc3RyaW5nID0gJzEnICsgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSk7XG4gICAgcGFyc2VyLmkgPSAwO1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgemVyb3MgPSBBcnJheShzaXplKS5maWxsKCcwJyk7XG4gIGxldCBjb2x1bW5zID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7XG4gICAgbGV0IHJvdyA9IHplcm9zLnNsaWNlKCk7XG4gICAgcm93W2ldID0gJzEnO1xuICAgIGNvbHVtbnMucHVzaChyb3cuam9pbignICYgJykpO1xuICB9XG4gIHBhcnNlci5zdHJpbmcgPSBjb2x1bW5zLmpvaW4oJ1xcXFxcXFxcICcpICsgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSk7XG4gIHBhcnNlci5pID0gMDtcbn07XG5cblxuLyoqXG4gKiBHZW5lcmF0aW9uIG9mIG1hdHJpY2VzIHdpdGggZml4ZWQgdmFsdWUuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICovXG5QaHlzaWNzTWV0aG9kcy5YTWF0cml4ID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICBjb25zdCBzdGFyID0gcGFyc2VyLkdldFN0YXIoKTtcbiAgY29uc3QgYXJnMSA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgY29uc3QgYXJnMiA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgY29uc3QgYXJnMyA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgbGV0IG4gPSBwYXJzZUludChhcmcyLCAxMCk7XG4gIGxldCBtID0gcGFyc2VJbnQoYXJnMywgMTApO1xuICBpZiAoaXNOYU4obikgfHwgaXNOYU4obSkgfHwgbS50b1N0cmluZygpICE9PSBhcmczIHx8IG4udG9TdHJpbmcoKSAhPT0gYXJnMikge1xuICAgIHRocm93IG5ldyBUZXhFcnJvcignSW52YWxpZE51bWJlcicsICdJbnZhbGlkIG51bWJlcicpO1xuICB9XG4gIG4gPSBuIDwgMSA/IDEgOiBuO1xuICBtID0gbSA8IDEgPyAxIDogbTtcbiAgLy8gRWxlbWVudHNcbiAgaWYgKCFzdGFyKSB7XG4gICAgY29uc3Qgcm93ID0gQXJyYXkobSkuZmlsbChhcmcxKS5qb2luKCcgJiAnKTtcbiAgICBjb25zdCBtYXRyaXggPSBBcnJheShuKS5maWxsKHJvdykuam9pbignXFxcXFxcXFwgJyk7XG4gICAgcGFyc2VyLnN0cmluZyA9IG1hdHJpeCArIHBhcnNlci5zdHJpbmcuc2xpY2UocGFyc2VyLmkpO1xuICAgIHBhcnNlci5pID0gMDtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IG1hdHJpeCA9ICcnO1xuICBpZiAobiA9PT0gMSAmJiBtID09PSAxKSB7XG4gICAgLy8gQ2FzZSAxOiBuPW09MSwgbm8gaW5kZXguXG4gICAgbWF0cml4ID0gYXJnMTtcbiAgfSBlbHNlIGlmIChuID09PSAxKSB7XG4gICAgLy8gQ2FzZSAyOiBuPTEsIHJvdyB2ZWN0b3IsIHNpbmdsZSBpbmRleC5cbiAgICBsZXQgcm93ID0gW107XG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbTsgaSsrKSB7XG4gICAgICByb3cucHVzaChgJHthcmcxfV97JHtpfX1gKTtcbiAgICB9XG4gICAgbWF0cml4ID0gcm93LmpvaW4oJyAmICcpO1xuICB9IGVsc2UgaWYgKG0gPT09IDEpIHtcbiAgICAvLyBDYXNlIDM6IG09MSwgY29sdW1uIHZlY3Rvciwgc2luZ2xlIGluZGV4LlxuICAgIGxldCByb3cgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBuOyBpKyspIHtcbiAgICAgIHJvdy5wdXNoKGAke2FyZzF9X3ske2l9fWApO1xuICAgIH1cbiAgICBtYXRyaXggPSByb3cuam9pbignXFxcXFxcXFwgJyk7XG4gIH0gZWxzZSB7XG4gICAgLy8gQ2FzZSA0OiBtYXRyaXgsIGRvdWJsZSBpbmRleC4gTm90ZSB0aGUgZXh0cmEgbXJvd3MgZm9yIGluZGljZXMuXG4gICAgbGV0IHJvd3MgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBuOyBpKyspIHtcbiAgICAgIGxldCByb3cgPSBbXTtcbiAgICAgIGZvciAobGV0IGogPSAxOyBqIDw9IG07IGorKykge1xuICAgICAgICByb3cucHVzaChgJHthcmcxfV97eyR7aX19eyR7an19fWApO1xuICAgICAgfVxuICAgICAgcm93cy5wdXNoKHJvdy5qb2luKCcgJiAnKSk7XG4gICAgfVxuICAgIG1hdHJpeCA9IHJvd3Muam9pbignXFxcXFxcXFwgJyk7XG4gIH1cbiAgcGFyc2VyLnN0cmluZyA9IG1hdHJpeCArIHBhcnNlci5zdHJpbmcuc2xpY2UocGFyc2VyLmkpO1xuICBwYXJzZXIuaSA9IDA7XG4gIHJldHVybjtcbn07XG5cblxuLyoqXG4gKiBHZW5lcmF0aW9uIG9mIFBhdWxpIG1hdHJpY2VzLiBNYXRyaXggMCBpcyB0aGUgMngyIGlkZW50aXR5LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuUGh5c2ljc01ldGhvZHMuUGF1bGlNYXRyaXggPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGFyZyA9IHBhcnNlci5HZXRBcmd1bWVudChuYW1lKTtcbiAgbGV0IG1hdHJpeCA9IGFyZy5zbGljZSgxKTtcbiAgc3dpdGNoIChhcmdbMF0pIHtcbiAgY2FzZSAnMCc6XG4gICAgbWF0cml4ICs9ICcgMSAmIDBcXFxcXFxcXCAwICYgMSc7XG4gICAgYnJlYWs7XG4gIGNhc2UgJzEnOlxuICBjYXNlICd4JzpcbiAgICBtYXRyaXggKz0gJyAwICYgMVxcXFxcXFxcIDEgJiAwJztcbiAgICBicmVhaztcbiAgY2FzZSAnMic6XG4gIGNhc2UgJ3knOlxuICAgIG1hdHJpeCArPSAnIDAgJiAtaVxcXFxcXFxcIGkgJiAwJztcbiAgICBicmVhaztcbiAgY2FzZSAnMyc6XG4gIGNhc2UgJ3onOlxuICAgIG1hdHJpeCArPSAnIDEgJiAwXFxcXFxcXFwgMCAmIC0xJztcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgfVxuICBwYXJzZXIuc3RyaW5nID0gbWF0cml4ICsgcGFyc2VyLnN0cmluZy5zbGljZShwYXJzZXIuaSk7XG4gIHBhcnNlci5pID0gMDtcbn07XG5cblxuLyoqXG4gKiBHZW5lcmF0aW9uIG9mIGFudGkvZGlhZ29uYWwgbWF0cmljZXMuXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjYWxsaW5nIHBhcnNlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIFRoZSBtYWNybyBuYW1lLlxuICogQHBhcmFtIHtib29sZWFuPX0gYW50aSBUcnVlIGlmIGNvbnN0cnVjdGluZyBhbnRpLWRpYWdvbmFsIG1hdHJpeC5cbiAqL1xuUGh5c2ljc01ldGhvZHMuRGlhZ29uYWxNYXRyaXggPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRpPzogYm9vbGVhbikge1xuICBpZiAocGFyc2VyLkdldE5leHQoKSAhPT0gJ3snKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBzdGFydEkgPSBwYXJzZXIuaTtcbiAgLyogbGV0IGFyZyA9Ki8gcGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpO1xuICBsZXQgZW5kSSA9IHBhcnNlci5pO1xuICBwYXJzZXIuaSA9IHN0YXJ0SSArIDE7XG4gIGxldCBlbGVtZW50cyA9IFtdO1xuICBsZXQgZWxlbWVudCA9ICcnO1xuICBsZXQgY3VycmVudEkgPSBwYXJzZXIuaTtcbiAgd2hpbGUgKGN1cnJlbnRJIDwgZW5kSSkge1xuICAgIHRyeSB7XG4gICAgICBlbGVtZW50ID0gcGFyc2VyLkdldFVwVG8obmFtZSwgJywnKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBwYXJzZXIuaSA9IGVuZEk7XG4gICAgICBlbGVtZW50cy5wdXNoKHBhcnNlci5zdHJpbmcuc2xpY2UoY3VycmVudEksIGVuZEkgLSAxKSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKHBhcnNlci5pID49IGVuZEkpIHtcbiAgICAgIGVsZW1lbnRzLnB1c2gocGFyc2VyLnN0cmluZy5zbGljZShjdXJyZW50SSwgZW5kSSkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGN1cnJlbnRJID0gcGFyc2VyLmk7XG4gICAgZWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgfVxuICBwYXJzZXIuc3RyaW5nID0gbWFrZURpYWdNYXRyaXgoZWxlbWVudHMsIGFudGkpICsgcGFyc2VyLnN0cmluZy5zbGljZShlbmRJKTtcbiAgcGFyc2VyLmkgPSAwO1xufTtcblxuXG4vKipcbiAqIENyZWF0ZXMgdGhlIGEgKGFudGkpZGlhZ29uYWwgbWF0cml4IHN0cmluZy5cbiAqIEBwYXJhbSB7c3RyaW5nW119IGVsZW1lbnRzIFRoZSBlbGVtZW50cyBvbiB0aGUgZGlhZ29uYWwuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGFudGkgVHJ1ZSBpZiBjb25zdHJ1Y3RpbmcgYW50aS1kaWFnb25hbCBtYXRyaXguXG4gKi9cbmZ1bmN0aW9uIG1ha2VEaWFnTWF0cml4KGVsZW1lbnRzOiBzdHJpbmdbXSwgYW50aTogYm9vbGVhbikge1xuICBsZXQgbGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuICBsZXQgbWF0cml4ID0gW107XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICBtYXRyaXgucHVzaChBcnJheShhbnRpID8gbGVuZ3RoIC0gaSA6IGkgKyAxKS5qb2luKCcmJykgK1xuICAgICAgICAgICAgICAgICdcXFxcbXF0eXsnICsgZWxlbWVudHNbaV0gKyAnfScpO1xuICB9XG4gIHJldHVybiBtYXRyaXguam9pbignXFxcXFxcXFwgJyk7XG59XG5cblxuLyoqXG4gKiBDbG9zZXMgYW4gYXV0b21hdGljIGZlbmNlIGlmIG9uZSB3YXMgb3BlbmVkLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gZmVuY2UgVGhlIGZlbmNlLlxuICogQHBhcmFtIHtudW1iZXJ9IHRleGNsYXNzIFRoZSBUZVggY2xhc3MuXG4gKi9cblBoeXNpY3NNZXRob2RzLkF1dG9DbG9zZSA9IGZ1bmN0aW9uKHBhcnNlcjogVGV4UGFyc2VyLCBmZW5jZTogc3RyaW5nLCBfdGV4Y2xhc3M6IG51bWJlcikge1xuICBjb25zdCBtbyA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywge3N0cmV0Y2h5OiBmYWxzZX0sIGZlbmNlKTtcbiAgY29uc3QgaXRlbSA9IHBhcnNlci5pdGVtRmFjdG9yeS5jcmVhdGUoJ21tbCcsIG1vKS5cbiAgICBzZXRQcm9wZXJ0aWVzKHthdXRvY2xvc2U6IGZlbmNlfSk7XG4gIHBhcnNlci5QdXNoKGl0ZW0pO1xufTtcblxuXG4vKipcbiAqIEdlbmVyYXRlcyB0aGUgdmVjdG9yIG5hYmxhIGRlcGVuZGluZyBvbiB0aGUgYXJyb3dkZWwgb3B0aW9uLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuUGh5c2ljc01ldGhvZHMuVm5hYmxhID0gZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIF9uYW1lOiBzdHJpbmcpIHtcbiAgbGV0IGFyZ3VtZW50ID0gcGFyc2VyLm9wdGlvbnMucGh5c2ljcy5hcnJvd2RlbCA/XG4gICAgJ1xcXFx2ZWN7XFxcXGdyYWRpZW50bmFibGF9JyA6ICd7XFxcXGdyYWRpZW50bmFibGF9JztcbiAgcmV0dXJuIHBhcnNlci5QdXNoKG5ldyBUZXhQYXJzZXIoYXJndW1lbnQsIHBhcnNlci5zdGFjay5lbnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5jb25maWd1cmF0aW9uKS5tbWwoKSk7XG59O1xuXG5cbi8qKlxuICogR2VuZXJhdGVzIHRoZSBkaWZmZXJlbnRpYWwgZCBkZXBlbmRpbmcgb24gdGhlIGl0YWxpY2RpZmYgb3B0aW9uLlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY2FsbGluZyBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbWFjcm8gbmFtZS5cbiAqL1xuUGh5c2ljc01ldGhvZHMuRGlmZkQgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgX25hbWU6IHN0cmluZykge1xuICBsZXQgYXJndW1lbnQgPSBwYXJzZXIub3B0aW9ucy5waHlzaWNzLml0YWxpY2RpZmYgPyAnZCcgOiAne1xcXFxybSBkfSc7XG4gIHJldHVybiBwYXJzZXIuUHVzaChuZXcgVGV4UGFyc2VyKGFyZ3VtZW50LCBwYXJzZXIuc3RhY2suZW52LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXIuY29uZmlndXJhdGlvbikubW1sKCkpO1xufTtcblxuXG4vKipcbiAqICBNZXRob2RzIHRha2VuIGZyb20gQmFzZSBwYWNrYWdlLlxuICovXG5QaHlzaWNzTWV0aG9kcy5NYWNybyA9IEJhc2VNZXRob2RzLk1hY3JvO1xuXG5QaHlzaWNzTWV0aG9kcy5OYW1lZEZuID0gQmFzZU1ldGhvZHMuTmFtZWRGbjtcblxuUGh5c2ljc01ldGhvZHMuQXJyYXkgPSBCYXNlTWV0aG9kcy5BcnJheTtcblxuXG5leHBvcnQgZGVmYXVsdCBQaHlzaWNzTWV0aG9kcztcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE1hcHBpbmdzIGZvciBUZVggcGFyc2luZyBvZiB0aGUgcGh5c2ljcyBwYWNrYWdlLlxuICpcbiAqIEBhdXRob3Igdi5zb3JnZUBtYXRoamF4Lm9yZyAoVm9sa2VyIFNvcmdlKVxuICovXG5cbmltcG9ydCB7RW52aXJvbm1lbnRNYXAsIENvbW1hbmRNYXAsIE1hY3JvTWFwLCBDaGFyYWN0ZXJNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQgUGh5c2ljc01ldGhvZHMgZnJvbSAnLi9QaHlzaWNzTWV0aG9kcy5qcyc7XG5pbXBvcnQge1RleENvbnN0YW50fSBmcm9tICcuLi9UZXhDb25zdGFudHMuanMnO1xuaW1wb3J0IFBhcnNlTWV0aG9kcyBmcm9tICcuLi9QYXJzZU1ldGhvZHMuanMnO1xuaW1wb3J0IHtURVhDTEFTU30gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuXG5cbi8qKlxuICogTWFjcm9zIGZvciBwaHlzaWNzIHBhY2thZ2UgKHNlY3Rpb24gMi4xKS5cbiAqL1xubmV3IENvbW1hbmRNYXAoJ1BoeXNpY3MtYXV0b21hdGljLWJyYWNpbmctbWFjcm9zJywge1xuICAncXVhbnRpdHknOiAgICAgICAnUXVhbnRpdHknLFxuICAncXR5JzogICAgICAgICAgICAnUXVhbnRpdHknLFxuICAncHF0eSc6ICAgICAgICAgICBbJ1F1YW50aXR5JywgJygnLCAnKScsIHRydWVdLFxuICAnYnF0eSc6ICAgICAgICAgICBbJ1F1YW50aXR5JywgJ1snLCAnXScsIHRydWVdLFxuICAndnF0eSc6ICAgICAgICAgICBbJ1F1YW50aXR5JywgJ3wnLCAnfCcsIHRydWVdLFxuICAnQnF0eSc6ICAgICAgICAgICBbJ1F1YW50aXR5JywgJ1xcXFx7JywgJ1xcXFx9JywgdHJ1ZV0sXG4gICdhYnNvbHV0ZXZhbHVlJzogIFsnUXVhbnRpdHknLCAnfCcsICd8JywgdHJ1ZV0sXG4gICdhYnMnOiAgICAgICAgICAgIFsnUXVhbnRpdHknLCAnfCcsICd8JywgdHJ1ZV0sXG4gICdub3JtJzogICAgICAgICAgIFsnUXVhbnRpdHknLCAnXFxcXHwnLCAnXFxcXHwnLCB0cnVlXSxcbiAgJ2V2YWx1YXRlZCc6ICAgICAgJ0V2YWwnLFxuICAnZXZhbCc6ICAgICAgICAgICAnRXZhbCcsXG4gICdvcmRlcic6ICAgICAgICAgIFsnUXVhbnRpdHknLCAnKCcsICcpJywgdHJ1ZSwgJ08nLFxuICAgICAgICAgICAgICAgICAgICAgVGV4Q29uc3RhbnQuVmFyaWFudC5DQUxMSUdSQVBISUNdLFxuICAnY29tbXV0YXRvcic6ICAgICAnQ29tbXV0YXRvcicsXG4gICdjb21tJzogICAgICAgICAgICdDb21tdXRhdG9yJyxcbiAgJ2FudGljb21tdXRhdG9yJzogWydDb21tdXRhdG9yJywgJ1xcXFx7JywgJ1xcXFx9J10sXG4gICdhY29tbSc6ICAgICAgICAgIFsnQ29tbXV0YXRvcicsICdcXFxceycsICdcXFxcfSddLFxuICAncG9pc3NvbmJyYWNrZXQnOiBbJ0NvbW11dGF0b3InLCAnXFxcXHsnLCAnXFxcXH0nXSxcbiAgJ3BiJzogICAgICAgICAgICAgWydDb21tdXRhdG9yJywgJ1xcXFx7JywgJ1xcXFx9J11cbn0sIFBoeXNpY3NNZXRob2RzKTtcblxuXG4vKipcbiAqIE1hY3JvcyBmb3IgcGh5c2ljcyBwYWNrYWdlIChzZWN0aW9uIDIuMikuXG4gKi9cbm5ldyBDaGFyYWN0ZXJNYXAoJ1BoeXNpY3MtdmVjdG9yLW1vJywgUGFyc2VNZXRob2RzLm1hdGhjaGFyMG1vLCB7XG4gIGRvdHByb2R1Y3Q6ICAgIFsnXFx1MjJDNScsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5CT0xEfV0sXG4gIHZkb3Q6ICAgICAgICAgIFsnXFx1MjJDNScsIHttYXRodmFyaWFudDogVGV4Q29uc3RhbnQuVmFyaWFudC5CT0xEfV0sXG4gIGNyb3NzcHJvZHVjdDogICdcXHUwMEQ3JyxcbiAgY3Jvc3M6ICAgICAgICAgJ1xcdTAwRDcnLFxuICBjcDogICAgICAgICAgICAnXFx1MDBENycsXG4gIC8vIFRoaXMgaXMgYXV4aWxpYXJ5IVxuICBncmFkaWVudG5hYmxhOiBbJ1xcdTIyMDcnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuQk9MRH1dXG59KTtcblxubmV3IENoYXJhY3Rlck1hcCgnUGh5c2ljcy12ZWN0b3ItbWknLCBQYXJzZU1ldGhvZHMubWF0aGNoYXIwbWksIHtcbiAgcmVhbDogICAgICAgICAgWydcXHUyMTFDJywge21hdGh2YXJpYW50OiBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTH1dLFxuICBpbWFnaW5hcnk6ICAgICBbJ1xcdTIxMTEnLCB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTk9STUFMfV1cbn0pO1xuXG5uZXcgQ29tbWFuZE1hcCgnUGh5c2ljcy12ZWN0b3ItbWFjcm9zJywge1xuICAndm5hYmxhJzogICAgICAnVm5hYmxhJyxcbiAgJ3ZlY3RvcmJvbGQnOiAgJ1ZlY3RvckJvbGQnLFxuICAndmInOiAgICAgICAgICAnVmVjdG9yQm9sZCcsXG4gICd2ZWN0b3JhcnJvdyc6IFsnU3Rhck1hY3JvJywgMSwgJ1xcXFx2ZWN7XFxcXHZiJywgJ3sjMX19J10sXG4gICd2YSc6ICAgICAgICAgIFsnU3Rhck1hY3JvJywgMSwgJ1xcXFx2ZWN7XFxcXHZiJywgJ3sjMX19J10sXG4gICd2ZWN0b3J1bml0JzogIFsnU3Rhck1hY3JvJywgMSwgJ1xcXFxoYXR7XFxcXHZiJywgJ3sjMX19J10sXG4gICd2dSc6ICAgICAgICAgIFsnU3Rhck1hY3JvJywgMSwgJ1xcXFxoYXR7XFxcXHZiJywgJ3sjMX19J10sXG4gICdncmFkaWVudCc6ICAgIFsnT3BlcmF0b3JBcHBsaWNhdGlvbicsICdcXFxcdm5hYmxhJywgJygnLCAnWyddLFxuICAnZ3JhZCc6ICAgICAgICBbJ09wZXJhdG9yQXBwbGljYXRpb24nLCAnXFxcXHZuYWJsYScsICcoJywgJ1snXSxcbiAgJ2RpdmVyZ2VuY2UnOiAgWydWZWN0b3JPcGVyYXRvcicsICdcXFxcdm5hYmxhXFxcXHZkb3QnLCAnKCcsICdbJ10sXG4gICdkaXYnOiAgICAgICAgIFsnVmVjdG9yT3BlcmF0b3InLCAnXFxcXHZuYWJsYVxcXFx2ZG90JywgJygnLCAnWyddLFxuICAnY3VybCc6ICAgICAgICBbJ1ZlY3Rvck9wZXJhdG9yJywgJ1xcXFx2bmFibGFcXFxcY3Jvc3Nwcm9kdWN0JywgJygnLCAnWyddLFxuICAnbGFwbGFjaWFuJzogICBbJ09wZXJhdG9yQXBwbGljYXRpb24nLCAnXFxcXG5hYmxhXjInLCAnKCcsICdbJ10sXG59LCBQaHlzaWNzTWV0aG9kcyk7XG5cblxuLyoqXG4gKiBNYWNyb3MgZm9yIHBoeXNpY3MgcGFja2FnZSAoc2VjdGlvbiAyLjMpLlxuICovXG5uZXcgQ29tbWFuZE1hcCgnUGh5c2ljcy1leHByZXNzaW9ucy1tYWNyb3MnLCB7XG4gICdzaW4nOiAgICAgICAgICAgICAgJ0V4cHJlc3Npb24nLFxuICAnc2luaCc6ICAgICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ2FyY3Npbic6ICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICdhc2luJzogICAgICAgICAgICAgJ0V4cHJlc3Npb24nLFxuICAnY29zJzogICAgICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ2Nvc2gnOiAgICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICdhcmNjb3MnOiAgICAgICAgICAgJ0V4cHJlc3Npb24nLFxuICAnYWNvcyc6ICAgICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ3Rhbic6ICAgICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICd0YW5oJzogICAgICAgICAgICAgJ0V4cHJlc3Npb24nLFxuICAnYXJjdGFuJzogICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ2F0YW4nOiAgICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICdjc2MnOiAgICAgICAgICAgICAgJ0V4cHJlc3Npb24nLFxuICAnY3NjaCc6ICAgICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ2FyY2NzYyc6ICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICdhY3NjJzogICAgICAgICAgICAgJ0V4cHJlc3Npb24nLFxuICAnc2VjJzogICAgICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ3NlY2gnOiAgICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICdhcmNzZWMnOiAgICAgICAgICAgJ0V4cHJlc3Npb24nLFxuICAnYXNlYyc6ICAgICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ2NvdCc6ICAgICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICdjb3RoJzogICAgICAgICAgICAgJ0V4cHJlc3Npb24nLFxuICAnYXJjY290JzogICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ2Fjb3QnOiAgICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICdleHAnOiAgICAgICAgICAgICAgWydFeHByZXNzaW9uJywgZmFsc2VdLFxuICAnbG9nJzogICAgICAgICAgICAgICdFeHByZXNzaW9uJyxcbiAgJ2xuJzogICAgICAgICAgICAgICAnRXhwcmVzc2lvbicsXG4gICdkZXQnOiAgICAgICAgICAgICAgWydFeHByZXNzaW9uJywgZmFsc2VdLFxuICAnUHInOiAgICAgICAgICAgICAgIFsnRXhwcmVzc2lvbicsIGZhbHNlXSxcbiAgLy8gTmV3IGV4cHJlc3Npb25zLlxuICAndHInOiAgICAgICAgICAgICAgIFsnRXhwcmVzc2lvbicsIGZhbHNlXSxcbiAgJ3RyYWNlJzogICAgICAgICAgICBbJ0V4cHJlc3Npb24nLCBmYWxzZSwgJ3RyJ10sXG4gICdUcic6ICAgICAgICAgICAgICAgWydFeHByZXNzaW9uJywgZmFsc2VdLFxuICAnVHJhY2UnOiAgICAgICAgICAgIFsnRXhwcmVzc2lvbicsIGZhbHNlLCAnVHInXSxcbiAgJ3JhbmsnOiAgICAgICAgICAgICAnTmFtZWRGbicsXG4gICdlcmYnOiAgICAgICAgICAgICAgWydFeHByZXNzaW9uJywgZmFsc2VdLFxuICAnUmVzaWR1ZSc6ICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXG1hdGhybXtSZXN9J10sXG4gICdSZXMnOiAgICAgICAgICAgICAgWydPcGVyYXRvckFwcGxpY2F0aW9uJywgJ1xcXFxSZXNpZHVlJywgJygnLCAnWycsICd7J10sXG4gICdwcmluY2lwYWx2YWx1ZSc6ICAgWydPcGVyYXRvckFwcGxpY2F0aW9uJywgJ3tcXFxcY2FsIFB9J10sXG4gICdwdic6ICAgICAgICAgICAgICAgWydPcGVyYXRvckFwcGxpY2F0aW9uJywgJ3tcXFxcY2FsIFB9J10sXG4gICdQVic6ICAgICAgICAgICAgICAgWydPcGVyYXRvckFwcGxpY2F0aW9uJywgJ3tcXFxccm0gUC5WLn0nXSxcbiAgJ1JlJzogICAgICAgICAgICAgICBbJ09wZXJhdG9yQXBwbGljYXRpb24nLCAnXFxcXG1hdGhybXtSZX0nLCAneyddLFxuICAnSW0nOiAgICAgICAgICAgICAgIFsnT3BlcmF0b3JBcHBsaWNhdGlvbicsICdcXFxcbWF0aHJte0ltfScsICd7J10sXG4gIC8vIE9sZCBuYW1lZCBmdW5jdGlvbnMuXG4gICdzaW5lJzogICAgICAgICAgICAgWydOYW1lZEZuJywgJ3NpbiddLFxuICAnaHlwc2luZSc6ICAgICAgICAgIFsnTmFtZWRGbicsICdzaW5oJ10sXG4gICdhcmNzaW5lJzogICAgICAgICAgWydOYW1lZEZuJywgJ2FyY3NpbiddLFxuICAnYXNpbmUnOiAgICAgICAgICAgIFsnTmFtZWRGbicsICdhc2luJ10sXG4gICdjb3NpbmUnOiAgICAgICAgICAgWydOYW1lZEZuJywgJ2NvcyddLFxuICAnaHlwY29zaW5lJzogICAgICAgIFsnTmFtZWRGbicsICdjb3NoJ10sXG4gICdhcmNjb3NpbmUnOiAgICAgICAgWydOYW1lZEZuJywgJ2FyY2NvcyddLFxuICAnYWNvc2luZSc6ICAgICAgICAgIFsnTmFtZWRGbicsICdhY29zJ10sXG4gICd0YW5nZW50JzogICAgICAgICAgWydOYW1lZEZuJywgJ3RhbiddLFxuICAnaHlwdGFuZ2VudCc6ICAgICAgIFsnTmFtZWRGbicsICd0YW5oJ10sXG4gICdhcmN0YW5nZW50JzogICAgICAgWydOYW1lZEZuJywgJ2FyY3RhbiddLFxuICAnYXRhbmdlbnQnOiAgICAgICAgIFsnTmFtZWRGbicsICdhdGFuJ10sXG4gICdjb3NlY2FudCc6ICAgICAgICAgWydOYW1lZEZuJywgJ2NzYyddLFxuICAnaHlwY29zZWNhbnQnOiAgICAgIFsnTmFtZWRGbicsICdjc2NoJ10sXG4gICdhcmNjb3NlY2FudCc6ICAgICAgWydOYW1lZEZuJywgJ2FyY2NzYyddLFxuICAnYWNvc2VjYW50JzogICAgICAgIFsnTmFtZWRGbicsICdhY3NjJ10sXG4gICdzZWNhbnQnOiAgICAgICAgICAgWydOYW1lZEZuJywgJ3NlYyddLFxuICAnaHlwc2VjYW50JzogICAgICAgIFsnTmFtZWRGbicsICdzZWNoJ10sXG4gICdhcmNzZWNhbnQnOiAgICAgICAgWydOYW1lZEZuJywgJ2FyY3NlYyddLFxuICAnYXNlY2FudCc6ICAgICAgICAgIFsnTmFtZWRGbicsICdhc2VjJ10sXG4gICdjb3RhbmdlbnQnOiAgICAgICAgWydOYW1lZEZuJywgJ2NvdCddLFxuICAnaHlwY290YW5nZW50JzogICAgIFsnTmFtZWRGbicsICdjb3RoJ10sXG4gICdhcmNjb3RhbmdlbnQnOiAgICAgWydOYW1lZEZuJywgJ2FyY2NvdCddLFxuICAnYWNvdGFuZ2VudCc6ICAgICAgIFsnTmFtZWRGbicsICdhY290J10sXG4gICdleHBvbmVudGlhbCc6ICAgICAgWydOYW1lZEZuJywgJ2V4cCddLFxuICAnbG9nYXJpdGhtJzogICAgICAgIFsnTmFtZWRGbicsICdsb2cnXSxcbiAgJ25hdHVyYWxsb2dhcml0aG0nOiBbJ05hbWVkRm4nLCAnbG4nXSxcbiAgJ2RldGVybWluYW50JzogICAgICBbJ05hbWVkRm4nLCAnZGV0J10sXG4gICdQcm9iYWJpbGl0eSc6ICAgICAgWydOYW1lZEZuJywgJ1ByJ10sXG59LCBQaHlzaWNzTWV0aG9kcyk7XG5cblxuLyoqXG4gKiBNYWNyb3MgZm9yIHBoeXNpY3MgcGFja2FnZSAoc2VjdGlvbiAyLjQpLlxuICovXG5uZXcgQ29tbWFuZE1hcCgnUGh5c2ljcy1xdWljay1xdWFkLW1hY3JvcycsIHtcbiAgJ3FxdGV4dCc6ICAgICAnUXF0ZXh0JyxcbiAgJ3FxJzogICAgICAgICAnUXF0ZXh0JyxcbiAgJ3Fjb21tYSc6ICAgICBbJ01hY3JvJywgJ1xcXFxxcXRleHQqeyx9J10sXG4gICdxYyc6ICAgICAgICAgWydNYWNybycsICdcXFxccXF0ZXh0KnssfSddLFxuICAncWNjJzogICAgICAgIFsnUXF0ZXh0JywgJ2MuYy4nXSxcbiAgJ3FpZic6ICAgICAgICBbJ1FxdGV4dCcsICdpZiddLFxuICAncXRoZW4nOiAgICAgIFsnUXF0ZXh0JywgJ3RoZW4nXSxcbiAgJ3FlbHNlJzogICAgICBbJ1FxdGV4dCcsICdlbHNlJ10sXG4gICdxb3RoZXJ3aXNlJzogWydRcXRleHQnLCAnb3RoZXJ3aXNlJ10sXG4gICdxdW5sZXNzJzogICAgWydRcXRleHQnLCAndW5sZXNzJ10sXG4gICdxZ2l2ZW4nOiAgICAgWydRcXRleHQnLCAnZ2l2ZW4nXSxcbiAgJ3F1c2luZyc6ICAgICBbJ1FxdGV4dCcsICd1c2luZyddLFxuICAncWFzc3VtZSc6ICAgIFsnUXF0ZXh0JywgJ2Fzc3VtZSddLFxuICAncXNpbmNlJzogICAgIFsnUXF0ZXh0JywgJ3NpbmNlJ10sXG4gICdxbGV0JzogICAgICAgWydRcXRleHQnLCAnbGV0J10sXG4gICdxZm9yJzogICAgICAgWydRcXRleHQnLCAnZm9yJ10sXG4gICdxYWxsJzogICAgICAgWydRcXRleHQnLCAnYWxsJ10sXG4gICdxZXZlbic6ICAgICAgWydRcXRleHQnLCAnZXZlbiddLFxuICAncW9kZCc6ICAgICAgIFsnUXF0ZXh0JywgJ29kZCddLFxuICAncWludGVnZXInOiAgIFsnUXF0ZXh0JywgJ2ludGVnZXInXSxcbiAgJ3FhbmQnOiAgICAgICBbJ1FxdGV4dCcsICdhbmQnXSxcbiAgJ3Fvcic6ICAgICAgICBbJ1FxdGV4dCcsICdvciddLFxuICAncWFzJzogICAgICAgIFsnUXF0ZXh0JywgJ2FzJ10sXG4gICdxaW4nOiAgICAgICAgWydRcXRleHQnLCAnaW4nXSxcbn0sIFBoeXNpY3NNZXRob2RzKTtcblxuXG4vKipcbiAqIE1hY3JvcyBmb3IgcGh5c2ljcyBwYWNrYWdlIChzZWN0aW9uIDIuNSkuXG4gKi9cbm5ldyBDb21tYW5kTWFwKCdQaHlzaWNzLWRlcml2YXRpdmUtbWFjcm9zJywge1xuICAnZGlmZmQnOiAgICAgICAgICAgICAgICAnRGlmZkQnLFxuICAnZmxhdGZyYWMnOiAgICAgICAgICAgICBbJ01hY3JvJywgJ1xcXFxsZWZ0LiMxXFxcXG1pZGRsZS8jMlxcXFxyaWdodC4nLCAyXSxcbiAgJ2RpZmZlcmVudGlhbCc6ICAgICAgICAgWydEaWZmZXJlbnRpYWwnLCAnXFxcXGRpZmZkJ10sXG4gICdkZCc6ICAgICAgICAgICAgICAgICAgIFsnRGlmZmVyZW50aWFsJywgJ1xcXFxkaWZmZCddLFxuICAndmFyaWF0aW9uJzogICAgICAgICAgICBbJ0RpZmZlcmVudGlhbCcsICdcXFxcZGVsdGEnXSxcbiAgJ3Zhcic6ICAgICAgICAgICAgICAgICAgWydEaWZmZXJlbnRpYWwnLCAnXFxcXGRlbHRhJ10sXG4gICdkZXJpdmF0aXZlJzogICAgICAgICAgIFsnRGVyaXZhdGl2ZScsIDIsICdcXFxcZGlmZmQnXSxcbiAgJ2R2JzogICAgICAgICAgICAgICAgICAgWydEZXJpdmF0aXZlJywgMiwgJ1xcXFxkaWZmZCddLFxuICAncGFydGlhbGRlcml2YXRpdmUnOiAgICBbJ0Rlcml2YXRpdmUnLCAzLCAnXFxcXHBhcnRpYWwnXSxcbiAgJ3BkZXJpdmF0aXZlJzogICAgICAgICAgWydEZXJpdmF0aXZlJywgMywgJ1xcXFxwYXJ0aWFsJ10sXG4gICdwZHYnOiAgICAgICAgICAgICAgICAgIFsnRGVyaXZhdGl2ZScsIDMsICdcXFxccGFydGlhbCddLFxuICAnZnVuY3Rpb25hbGRlcml2YXRpdmUnOiBbJ0Rlcml2YXRpdmUnLCAyLCAnXFxcXGRlbHRhJ10sXG4gICdmZGVyaXZhdGl2ZSc6ICAgICAgICAgIFsnRGVyaXZhdGl2ZScsIDIsICdcXFxcZGVsdGEnXSxcbiAgJ2Zkdic6ICAgICAgICAgICAgICAgICAgWydEZXJpdmF0aXZlJywgMiwgJ1xcXFxkZWx0YSddLFxufSwgUGh5c2ljc01ldGhvZHMpO1xuXG5cbi8qKlxuICogTWFjcm9zIGZvciBwaHlzaWNzIHBhY2thZ2UgKHNlY3Rpb24gMi42KS5cbiAqL1xubmV3IENvbW1hbmRNYXAoJ1BoeXNpY3MtYnJhLWtldC1tYWNyb3MnLCB7XG4gICdicmEnOiAgICAgICAgICAgICAgJ0JyYScsXG4gICdrZXQnOiAgICAgICAgICAgICAgJ0tldCcsXG4gICdpbm5lcnByb2R1Y3QnOiAgICAgJ0JyYUtldCcsXG4gICdpcCc6ICAgICAgICAgICAgICAgJ0JyYUtldCcsXG4gICdicmFrZXQnOiAgICAgICAgICAgJ0JyYUtldCcsXG4gICdvdXRlcnByb2R1Y3QnOiAgICAgJ0tldEJyYScsXG4gICdkeWFkJzogICAgICAgICAgICAgJ0tldEJyYScsXG4gICdrZXRicmEnOiAgICAgICAgICAgJ0tldEJyYScsXG4gICdvcCc6ICAgICAgICAgICAgICAgJ0tldEJyYScsXG4gICdleHBlY3RhdGlvbnZhbHVlJzogJ0V4cGVjdGF0aW9uJyxcbiAgJ2V4cHZhbCc6ICAgICAgICAgICAnRXhwZWN0YXRpb24nLFxuICAnZXYnOiAgICAgICAgICAgICAgICdFeHBlY3RhdGlvbicsXG4gICdtYXRyaXhlbGVtZW50JzogICAgJ01hdHJpeEVsZW1lbnQnLFxuICAnbWF0cml4ZWwnOiAgICAgICAgICdNYXRyaXhFbGVtZW50JyxcbiAgJ21lbCc6ICAgICAgICAgICAgICAnTWF0cml4RWxlbWVudCcsXG59LCBQaHlzaWNzTWV0aG9kcyk7XG5cblxuLyoqXG4gKiBNYWNyb3MgZm9yIHBoeXNpY3MgcGFja2FnZSAoc2VjdGlvbiAyLjcpLlxuICovXG5uZXcgQ29tbWFuZE1hcCgnUGh5c2ljcy1tYXRyaXgtbWFjcm9zJywge1xuICAnbWF0cml4cXVhbnRpdHknOiAgICAgICdNYXRyaXhRdWFudGl0eScsXG4gICdtcXR5JyAgICAgICAgICA6ICAgICAgJ01hdHJpeFF1YW50aXR5JyxcbiAgJ3BtcXR5JzogICAgICAgICAgICAgICBbJ01hY3JvJywgJ1xcXFxtcXR5KCMxKScsIDFdLFxuICAnUG1xdHknOiAgICAgICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXG1xdHkqKCMxKScsIDFdLFxuICAnYm1xdHknOiAgICAgICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXG1xdHlbIzFdJywgMV0sXG4gICd2bXF0eSc6ICAgICAgICAgICAgICAgWydNYWNybycsICdcXFxcbXF0eXwjMXwnLCAxXSxcbiAgLy8gU21hbGxtYXRyaWNlc1xuICAnc21hbGxtYXRyaXhxdWFudGl0eSc6IFsnTWF0cml4UXVhbnRpdHknLCB0cnVlXSxcbiAgJ3NtcXR5JzogICAgICAgICAgICAgICBbJ01hdHJpeFF1YW50aXR5JywgdHJ1ZV0sXG4gICdzcG1xdHknOiAgICAgICAgICAgICAgWydNYWNybycsICdcXFxcc21xdHkoIzEpJywgMV0sXG4gICdzUG1xdHknOiAgICAgICAgICAgICAgWydNYWNybycsICdcXFxcc21xdHkqKCMxKScsIDFdLFxuICAnc2JtcXR5JzogICAgICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXHNtcXR5WyMxXScsIDFdLFxuICAnc3ZtcXR5JzogICAgICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXHNtcXR5fCMxfCcsIDFdLFxuICAnbWF0cml4ZGV0ZXJtaW5hbnQnOiAgIFsnTWFjcm8nLCAnXFxcXHZtcXR5eyMxfScsIDFdLFxuICAnbWRldCc6ICAgICAgICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXHZtcXR5eyMxfScsIDFdLFxuICAnc21kZXQnOiAgICAgICAgICAgICAgIFsnTWFjcm8nLCAnXFxcXHN2bXF0eXsjMX0nLCAxXSxcbiAgJ2lkZW50aXR5bWF0cml4JzogICAgICAnSWRlbnRpdHlNYXRyaXgnLFxuICAnaW1hdCc6ICAgICAgICAgICAgICAgICdJZGVudGl0eU1hdHJpeCcsXG4gICd4bWF0cml4JzogICAgICAgICAgICAgJ1hNYXRyaXgnLFxuICAneG1hdCc6ICAgICAgICAgICAgICAgICdYTWF0cml4JyxcbiAgJ3plcm9tYXRyaXgnOiAgICAgICAgICBbJ01hY3JvJywgJ1xcXFx4bWF0ezB9eyMxfXsjMn0nLCAyXSxcbiAgJ3ptYXQnOiAgICAgICAgICAgICAgICBbJ01hY3JvJywgJ1xcXFx4bWF0ezB9eyMxfXsjMn0nLCAyXSxcbiAgJ3BhdWxpbWF0cml4JzogICAgICAgICAnUGF1bGlNYXRyaXgnLFxuICAncG1hdCc6ICAgICAgICAgICAgICAgICdQYXVsaU1hdHJpeCcsXG4gICdkaWFnb25hbG1hdHJpeCc6ICdEaWFnb25hbE1hdHJpeCcsXG4gICdkbWF0JzogJ0RpYWdvbmFsTWF0cml4JyxcbiAgJ2FudGlkaWFnb25hbG1hdHJpeCc6IFsnRGlhZ29uYWxNYXRyaXgnLCB0cnVlXSxcbiAgJ2FkbWF0JzogWydEaWFnb25hbE1hdHJpeCcsIHRydWVdXG59LCBQaHlzaWNzTWV0aG9kcyk7XG5cblxuXG4vKipcbiAqIEF1eGlsaWFyeSBlbnZpcm9ubWVudCBtYXAgdG8gZGVmaW5lIHNtYWxsbWF0cml4LiBUaGlzIG1ha2VzIFBoeXNpY3NcbiAqIGluZGVwZW5kZW50IG9mIEFtc01hdGguXG4gKi9cbm5ldyBFbnZpcm9ubWVudE1hcCgnUGh5c2ljcy1hdXgtZW52cycsIFBhcnNlTWV0aG9kcy5lbnZpcm9ubWVudCwge1xuICBzbWFsbG1hdHJpeDogICBbJ0FycmF5JywgbnVsbCwgbnVsbCwgbnVsbCwgJ2MnLCAnMC4zMzNlbScsICcuMmVtJywgJ1MnLCAxXVxufSwgUGh5c2ljc01ldGhvZHMpO1xuXG5cbi8qKlxuICogQ2hhcmFjdGVyIG1hcCBmb3IgYnJha2V0IHBhY2thZ2UuXG4gKi9cbm5ldyBNYWNyb01hcCgnUGh5c2ljcy1jaGFyYWN0ZXJzJywge1xuICAnfCc6IFsnQXV0b0Nsb3NlJywgVEVYQ0xBU1MuT1JEXSwgICAvLyB0ZXhDbGFzczogVEVYQ0xBU1MuT1JELCAvLyBIYXZlIHRvIHB1c2ggdGhlIGNsb3NlciBhcyBtbWwgd2l0aCBzcGVjaWFsIHByb3BlcnR5XG4gICcpJzogJ0F1dG9DbG9zZScsXG4gICddJzogJ0F1dG9DbG9zZSdcbn0sIFBoeXNpY3NNZXRob2RzKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFBoeXNpY3MgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtBdXRvT3Blbn0gZnJvbSAnLi9QaHlzaWNzSXRlbXMuanMnO1xuaW1wb3J0ICcuL1BoeXNpY3NNYXBwaW5ncy5qcyc7XG5cblxuZXhwb3J0IGNvbnN0IFBoeXNpY3NDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICdwaHlzaWNzJywge1xuICAgIGhhbmRsZXI6IHtcbiAgICAgIG1hY3JvOiBbXG4gICAgICAgICdQaHlzaWNzLWF1dG9tYXRpYy1icmFjaW5nLW1hY3JvcycsXG4gICAgICAgICdQaHlzaWNzLXZlY3Rvci1tYWNyb3MnLFxuICAgICAgICAnUGh5c2ljcy12ZWN0b3ItbW8nLFxuICAgICAgICAnUGh5c2ljcy12ZWN0b3ItbWknLFxuICAgICAgICAnUGh5c2ljcy1kZXJpdmF0aXZlLW1hY3JvcycsXG4gICAgICAgICdQaHlzaWNzLWV4cHJlc3Npb25zLW1hY3JvcycsXG4gICAgICAgICdQaHlzaWNzLXF1aWNrLXF1YWQtbWFjcm9zJyxcbiAgICAgICAgJ1BoeXNpY3MtYnJhLWtldC1tYWNyb3MnLFxuICAgICAgICAnUGh5c2ljcy1tYXRyaXgtbWFjcm9zJ1xuICAgICAgXSxcbiAgICAgIGNoYXJhY3RlcjogWydQaHlzaWNzLWNoYXJhY3RlcnMnXSxcbiAgICAgIGVudmlyb25tZW50OiBbJ1BoeXNpY3MtYXV4LWVudnMnXVxuICAgIH0sXG4gICAgaXRlbXM6IHtcbiAgICAgIFtBdXRvT3Blbi5wcm90b3R5cGUua2luZF06IEF1dG9PcGVuXG4gICAgfSxcbiAgICBvcHRpb25zOiB7XG4gICAgICBwaHlzaWNzOiB7XG4gICAgICAgIGl0YWxpY2RpZmY6IGZhbHNlLFxuICAgICAgICBhcnJvd2RlbDogZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cbik7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSBzZXRvcHRpb25zIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgUC4gQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb24sIENvbmZpZ3VyYXRpb25IYW5kbGVyLCBQYXJzZXJDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7VGVYfSBmcm9tICcuLi8uLi90ZXguanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IHtDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4uL1RleEVycm9yLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcbmltcG9ydCB7TWFjcm99IGZyb20gJy4uL1N5bWJvbC5qcyc7XG5pbXBvcnQgQmFzZU1ldGhvZHMgZnJvbSAnLi4vYmFzZS9CYXNlTWV0aG9kcy5qcyc7XG5pbXBvcnQge2V4cGFuZGFibGUsIGlzT2JqZWN0fSBmcm9tICcuLi8uLi8uLi91dGlsL09wdGlvbnMuanMnO1xuXG5leHBvcnQgY29uc3QgU2V0T3B0aW9uc1V0aWwgPSB7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIG9wdGlvbnMgY2FuIGJlIHNldCBmb3IgYSBnaXZlbiBwYWNha2dlLCBhbmQgZXJyb3Igb3RoZXJ3aXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0ZW5zaW9uICAgVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2Ugd2hvc2Ugb3B0aW9uIGlzIGJlaW5nIHNldC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICAgICAgICAgIFRydWUgd2hlbiBvcHRpb25zIGNhbiBiZSBzZXQgZm9yIHRoaXMgcGFja2FnZS5cbiAgICovXG4gIGZpbHRlclBhY2thZ2UocGFyc2VyOiBUZXhQYXJzZXIsIGV4dGVuc2lvbjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgaWYgKGV4dGVuc2lvbiAhPT0gJ3RleCcgJiYgIUNvbmZpZ3VyYXRpb25IYW5kbGVyLmdldChleHRlbnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ05vdEFQYWNrYWdlJywgJ05vdCBhIGRlZmluZWQgcGFja2FnZTogJTEnLCBleHRlbnNpb24pO1xuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSBwYXJzZXIub3B0aW9ucy5zZXRvcHRpb25zO1xuICAgIGNvbnN0IG9wdGlvbnMgPSBjb25maWcuYWxsb3dPcHRpb25zW2V4dGVuc2lvbl07XG4gICAgaWYgKChvcHRpb25zID09PSB1bmRlZmluZWQgJiYgIWNvbmZpZy5hbGxvd1BhY2thZ2VEZWZhdWx0KSB8fCBvcHRpb25zID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IFRleEVycm9yKCdQYWNrYWdlTm90U2V0dGFibGUnLCAnT3B0aW9ucyBjYW5cXCd0IGJlIHNldCBmb3IgcGFja2FnZSBcIiUxXCInLCBleHRlbnNpb24pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQ2hlY2sgaWYgYW4gb3B0aW9uIGNhbiBiZSBzZXQgYW5kIGVycm9yIG90aGVyd2lzZS5cbiAgICpcbiAgICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciAgIFRoZSBhY3RpdmUgdGV4IHBhcnNlci5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGV4dGVuc2lvbiAgIFRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIHdob3NlIG9wdGlvbiBpcyBiZWluZyBzZXQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb24gICAgICBUaGUgbmFtZSBvZiB0aGUgb3B0aW9uIGJlaW5nIHNldC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICAgICAgICAgIFRydWUgd2hlbiB0aGUgb3B0aW9uIGNhbiBiZSBzZXQuXG4gICAqL1xuICBmaWx0ZXJPcHRpb24ocGFyc2VyOiBUZXhQYXJzZXIsIGV4dGVuc2lvbjogc3RyaW5nLCBvcHRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IHBhcnNlci5vcHRpb25zLnNldG9wdGlvbnM7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGNvbmZpZy5hbGxvd09wdGlvbnNbZXh0ZW5zaW9uXSB8fCB7fTtcbiAgICBjb25zdCBhbGxvdyA9IChvcHRpb25zLmhhc093blByb3BlcnR5KG9wdGlvbikgJiYgIWlzT2JqZWN0KG9wdGlvbnNbb3B0aW9uXSkgPyBvcHRpb25zW29wdGlvbl0gOiBudWxsKTtcbiAgICBpZiAoYWxsb3cgPT09IGZhbHNlIHx8IChhbGxvdyA9PT0gbnVsbCAmJiAhY29uZmlnLmFsbG93T3B0aW9uc0RlZmF1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ09wdGlvbk5vdFNldHRhYmxlJywgJ09wdGlvbiBcIiUxXCIgaXMgbm90IGFsbG93ZWQgdG8gYmUgc2V0Jywgb3B0aW9uKTtcbiAgICB9XG4gICAgaWYgKCEoZXh0ZW5zaW9uID09PSAndGV4JyA/IHBhcnNlci5vcHRpb25zIDogcGFyc2VyLm9wdGlvbnNbZXh0ZW5zaW9uXSk/Lmhhc093blByb3BlcnR5KG9wdGlvbikpIHtcbiAgICAgIGlmIChleHRlbnNpb24gPT09ICd0ZXgnKSB7XG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignSW52YWxpZFRleE9wdGlvbicsICdJbnZhbGlkIFRlWCBvcHRpb24gXCIlMVwiJywgb3B0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBUZXhFcnJvcignSW52YWxpZE9wdGlvbktleScsICdJbnZhbGlkIG9wdGlvbiBcIiUxXCIgZm9yIHBhY2thZ2UgXCIlMlwiJywgb3B0aW9uLCBleHRlbnNpb24pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICogVmVyaWZ5IGFuIG9wdGlvbidzIHZhbHVlIGJlZm9yZSBzZXR0aW5nIGl0LlxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXh0ZW5zaW9uICAgVGhlIG5hbWUgb2YgdGhlIHBhY2thZ2Ugd2hvc2Ugb3B0aW9uIHRoaXMgaXMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb24gICAgICBUaGUgbmFtZSBvZiB0aGUgb3B0aW9uIGJlaW5nIHNldC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlICAgICAgIFRoZSB2YWx1ZSB0byBnaXZlIHRvIHRoZSBvcHRpb24uXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICBUaGUgKHBvc3NpYmx5IG1vZGlmaWVkKSB2YWx1ZSBmb3IgdGhlIG9wdGlvblxuICAgKi9cbiAgZmlsdGVyVmFsdWUoX3BhcnNlcjogVGV4UGFyc2VyLCBfZXh0ZW5zaW9uOiBzdHJpbmcsIF9vcHRpb246IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbn07XG5cbmNvbnN0IHNldE9wdGlvbnNNYXAgPSBuZXcgQ29tbWFuZE1hcCgnc2V0b3B0aW9ucycsIHtcbiAgc2V0T3B0aW9uczogJ1NldE9wdGlvbnMnXG59LCB7XG4gIC8qKlxuICAgKiBJbXBsZW1lbnRzIFxcc2V0T3B0aW9uc1twYWNrYWdlXXtvcHRpb24tdmFsdWVzfVxuICAgKlxuICAgKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgVGhlIGFjdGl2ZSB0ZXggcGFyc2VyLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgVGhlIG5hbWUgb2YgdGhlIG1hY3JvIGJlaW5nIHByb2Nlc3NlZC5cbiAgICovXG4gIFNldE9wdGlvbnMocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGV4dGVuc2lvbiA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lKSB8fCAndGV4JztcbiAgICBjb25zdCBvcHRpb25zID0gUGFyc2VVdGlsLmtleXZhbE9wdGlvbnMocGFyc2VyLkdldEFyZ3VtZW50KG5hbWUpKTtcbiAgICBjb25zdCBjb25maWcgPSBwYXJzZXIub3B0aW9ucy5zZXRvcHRpb25zO1xuICAgIGlmICghY29uZmlnLmZpbHRlclBhY2thZ2UocGFyc2VyLCBleHRlbnNpb24pKSByZXR1cm47XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMob3B0aW9ucykpIHtcbiAgICAgIGlmIChjb25maWcuZmlsdGVyT3B0aW9uKHBhcnNlciwgZXh0ZW5zaW9uLCBrZXkpKSB7XG4gICAgICAgIChleHRlbnNpb24gPT09ICd0ZXgnID8gcGFyc2VyLm9wdGlvbnMgOiBwYXJzZXIub3B0aW9uc1tleHRlbnNpb25dKVtrZXldID1cbiAgICAgICAgICBjb25maWcuZmlsdGVyVmFsdWUocGFyc2VyLCBleHRlbnNpb24sIGtleSwgb3B0aW9uc1trZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG4vKipcbiAqIElmIHRoZSByZXF1aXJlIHBhY2thZ2UgaXMgYXZhaWxhYmxlLCBzYXZlIHRoZSBvcmlnaW5hbCByZXF1aXJlLFxuICogICBhbmQgZGVmaW5lIGEgbWFjcm8gdGhhdCBsb2FkcyB0aGUgZXh0ZW5zaW9uIGFuZCBzZXRzXG4gKiAgIGl0cyBvcHRpb25zLCBpZiBhbnkuXG4gKlxuICogQHBhcmFtIHtQYXJzZXJDb25maWd1cmF0aW9ufSBjb25maWcgIFRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0ge1RlWH0gamF4ICAgICAgICAgICAgICAgICAgICAgVGhlIGFjdGl2ZSB0ZXggaW5wdXQgamF4LlxuICovXG5mdW5jdGlvbiBzZXRvcHRpb25zQ29uZmlnKF9jb25maWc6IFBhcnNlckNvbmZpZ3VyYXRpb24sIGpheDogVGVYPGFueSwgYW55LCBhbnk+KSB7XG4gIGNvbnN0IHJlcXVpcmUgPSBqYXgucGFyc2VPcHRpb25zLmhhbmRsZXJzLmdldCgnbWFjcm8nKS5sb29rdXAoJ3JlcXVpcmUnKSBhcyBhbnk7XG4gIGlmIChyZXF1aXJlKSB7XG4gICAgc2V0T3B0aW9uc01hcC5hZGQoJ1JlcXVpcmUnLCBuZXcgTWFjcm8oJ1JlcXVpcmUnLCByZXF1aXJlLl9mdW5jKSk7XG4gICAgc2V0T3B0aW9uc01hcC5hZGQoJ3JlcXVpcmUnLCBuZXcgTWFjcm8oJ3JlcXVpcmUnLCBCYXNlTWV0aG9kcy5NYWNybyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ1xcXFxSZXF1aXJleyMyfVxcXFxzZXRPcHRpb25zWyMyXXsjMX0nLCAyLCAnJ10pKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgU2V0T3B0aW9uc0NvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ3NldG9wdGlvbnMnLCB7XG4gICAgaGFuZGxlcjoge21hY3JvOiBbJ3NldG9wdGlvbnMnXX0sXG4gICAgY29uZmlnOiBzZXRvcHRpb25zQ29uZmlnLFxuICAgIHByaW9yaXR5OiAzLCAgLy8gbXVzdCBiZSBsZXNzIHRoYW4gdGhlIHByaW9yaXR5IG9mIHRoZSByZXF1aXJlIHBhY2thZ2UgKHdoaWNoIGlzIDUpLlxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHNldG9wdGlvbnM6IHtcbiAgICAgICAgZmlsdGVyUGFja2FnZTogU2V0T3B0aW9uc1V0aWwuZmlsdGVyUGFja2FnZSwgIC8vIGZpbHRlciBmb3Igd2hldGhlciBhIHBhY2thZ2UgY2FuIGJlIGNvbmZpZ3VyZWRcbiAgICAgICAgZmlsdGVyT3B0aW9uOiBTZXRPcHRpb25zVXRpbC5maWx0ZXJPcHRpb24sICAgIC8vIGZpbHRlciBmb3Igd2hldGhlciBhbiBvcHRpb24gY2FuIGJlIHNldFxuICAgICAgICBmaWx0ZXJWYWx1ZTogU2V0T3B0aW9uc1V0aWwuZmlsdGVyVmFsdWUsICAgICAgLy8gZmlsdGVyIGZvciB0aGUgdmFsdWUgdG8gYXNzaWduIHRvIGFuIG9wdGlvblxuICAgICAgICBhbGxvd1BhY2thZ2VEZWZhdWx0OiB0cnVlLCAgICAgICAvLyBkZWZhdWx0IGZvciBhbGxvd2luZyBwYWNrYWdlcyB3aGVuIG5vdCBleHBsaWNpdGx5IHNldCBpbiBhbGxvd09wdGlvbnNcbiAgICAgICAgYWxsb3dPcHRpb25zRGVmYXVsdDogdHJ1ZSwgICAgICAgLy8gZGVmYXVsdCBmb3IgYWxsb3dpbmcgb3B0aW9uIHRoYXQgaXNuJ3QgZXhwbGljaXRseSBzZXQgaW4gYWxsb3dPcHRpb25zXG4gICAgICAgIGFsbG93T3B0aW9uczogZXhwYW5kYWJsZSh7ICAgICAgIC8vIGxpc3Qgb2YgcGFja2FnZXMgdG8gYWxsb3cvZGlzYWxsb3csIGFuZCB0aGVpciBvcHRpb25zIHRvIGFsbG93L2Rpc2FsbG93XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAgdG9wLWxldmVsIHRleCBpdGVtcyBjYW4gYmUgc2V0LCBidXQgbm90IHRoZXNlXG4gICAgICAgICAgLy8gICAgKHRoYXQgbGVhdmVzIGRpZ2l0cyBhbmQgdGhlIHRhZ2dpbmcgb3B0aW9ucylcbiAgICAgICAgICAvL1xuICAgICAgICAgIHRleDoge1xuICAgICAgICAgICAgRmluZFRlWDogZmFsc2UsXG4gICAgICAgICAgICBmb3JtYXRFcnJvcjogZmFsc2UsXG4gICAgICAgICAgICBwYWNrYWdlOiBmYWxzZSxcbiAgICAgICAgICAgIGJhc2VVUkw6IGZhbHNlLFxuICAgICAgICAgICAgdGFnczogZmFsc2UsXG4gICAgICAgICAgICBtYXhCdWZmZXI6IGZhbHNlLFxuICAgICAgICAgICAgbWF4TWF4cm9zOiBmYWxzZSxcbiAgICAgICAgICAgIG1hY3JvczogZmFsc2UsXG4gICAgICAgICAgICBlbnZpcm9ubWVudHM6IGZhbHNlXG4gICAgICAgICAgfSxcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFRoZXNlIHBhY2thZ2VzIGNhbid0IGJlIGNvbmZpZ3VyZWQgYXQgYWxsXG4gICAgICAgICAgLy9cbiAgICAgICAgICBzZXRvcHRpb25zOiBmYWxzZSxcbiAgICAgICAgICBhdXRvbG9hZDogZmFsc2UsXG4gICAgICAgICAgcmVxdWlyZTogZmFsc2UsXG4gICAgICAgICAgY29uZmlnbWFjcm9zOiBmYWxzZSxcbiAgICAgICAgICB0YWdmb3JtYXQ6IGZhbHNlXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG4pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOS0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgICAgQ29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgdGFnZm9ybWF0IHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgUC4gQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb24sIFBhcnNlckNvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtUZVh9IGZyb20gJy4uLy4uL3RleC5qcyc7XG5pbXBvcnQge0Fic3RyYWN0VGFncywgVGFnc0ZhY3Rvcnl9IGZyb20gJy4uL1RhZ3MuanMnO1xuXG4vKipcbiAqIE51bWJlciB1c2VkIHRvIG1ha2UgdGFnIGNsYXNzIHVuaXF1ZSAoZWFjaCBUZVggaW5wdXQgaGFzIHRvIGhhdmUgaXRzIG93biBiZWNhdXNlXG4gKiAgaXQgbmVlZHMgYWNjZXNzIHRvIHRoZSBwYXJzZSBvcHRpb25zKVxuICovXG5sZXQgdGFnSUQgPSAwO1xuXG4vKipcbiAqIENvbmZpZ3VyZSBhIGNsYXNzIHRvIHVzZSBmb3IgdGhlIHRhZyBoYW5kbGVyIHRoYXQgdXNlcyB0aGUgaW5wdXQgamF4J3Mgb3B0aW9uc1xuICogICB0byBjb250cm9sIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSB0YWdzXG4gKiBAcGFyYW0ge0NvbmZpZ3VyYXRpb259IGNvbmZpZyAgIFRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgaW5wdXQgamF4XG4gKiBAcGFyYW0ge1RlWH0gamF4ICAgICAgICAgICAgICAgIFRoZSBUZVggaW5wdXQgamF4XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0YWdmb3JtYXRDb25maWcoY29uZmlnOiBQYXJzZXJDb25maWd1cmF0aW9uLCBqYXg6IFRlWDxhbnksIGFueSwgYW55Pikge1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgdGFnIGZvcm1hdCBpcyBiZWluZyBhZGRlZCBieSBvbmUgb2YgdGhlIG90aGVyIGV4dGVuc2lvbnMsXG4gICAqICAgYXMgaXMgZG9uZSBmb3IgdGhlICdhbXMnIHRhZ3MsIG1ha2Ugc3VyZSBpdCBpcyBkZWZpbmVkIHNvIHdlIGNhbiBjcmVhdGUgaXQuXG4gICAqL1xuICBjb25zdCB0YWdzID0gamF4LnBhcnNlT3B0aW9ucy5vcHRpb25zLnRhZ3M7XG4gIGlmICh0YWdzICE9PSAnYmFzZScgJiYgY29uZmlnLnRhZ3MuaGFzT3duUHJvcGVydHkodGFncykpIHtcbiAgICBUYWdzRmFjdG9yeS5hZGQodGFncywgY29uZmlnLnRhZ3NbdGFnc10pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW5hbCB0YWcgY2xhc3MgdG8gYmUgZXh0ZW5kZWQgKG5vbmUsIGFtcywgb3IgYWxsKVxuICAgKi9cbiAgY29uc3QgVGFnQ2xhc3MgPSBUYWdzRmFjdG9yeS5jcmVhdGUoamF4LnBhcnNlT3B0aW9ucy5vcHRpb25zLnRhZ3MpLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBBYnN0cmFjdFRhZ3M7XG5cbiAgLyoqXG4gICAqIEEgVGFncyBvYmplY3QgdGhhdCB1c2VzIHRoZSBpbnB1dCBqYXggb3B0aW9ucyB0byBwZXJmb3JtIHRoZSBmb3JtYXR0aW5nXG4gICAqXG4gICAqIE5vdGU6ICBXZSBoYXZlIHRvIG1ha2UgYSBuZXcgY2xhc3MgZm9yIGVhY2ggaW5wdXQgamF4IHNpbmNlIHRoZSBmb3JtYXRcbiAgICogbWV0aG9kcyBkb24ndCBoYXZlIGFjY2VzcyB0byB0aGUgaW5wdXQgamF4LCBhbmQgaGVuY2UgdG8gaXRzIG9wdGlvbnMuXG4gICAqIElmIHRoZXkgZGlkLCB3ZSB3b3VsZCB1c2UgYSBjb21tb24gY29uZmlnVGFncyBjbGFzcyBpbnN0ZWFkLlxuICAgKi9cbiAgY2xhc3MgVGFnRm9ybWF0IGV4dGVuZHMgVGFnQ2xhc3Mge1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGZvcm1hdE51bWJlcihuOiBudW1iZXIpIHtcbiAgICAgIHJldHVybiBqYXgucGFyc2VPcHRpb25zLm9wdGlvbnMudGFnZm9ybWF0Lm51bWJlcihuKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybWF0VGFnKHRhZzogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gamF4LnBhcnNlT3B0aW9ucy5vcHRpb25zLnRhZ2Zvcm1hdC50YWcodGFnKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZm9ybWF0SWQoaWQ6IHN0cmluZykge1xuICAgICAgcmV0dXJuIGpheC5wYXJzZU9wdGlvbnMub3B0aW9ucy50YWdmb3JtYXQuaWQoaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBmb3JtYXRVcmwoaWQ6IHN0cmluZywgYmFzZTogc3RyaW5nKSB7XG4gICAgICByZXR1cm4gamF4LnBhcnNlT3B0aW9ucy5vcHRpb25zLnRhZ2Zvcm1hdC51cmwoaWQsIGJhc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8vXG4gIC8vICBHZXQgYSB1bmlxdWUgbmFtZSBmb3IgdGhlIHRhZyBjbGFzcyAoc2luY2UgaXQgaXMgdGllZCB0byB0aGUgaW5wdXQgamF4KVxuICAvLyAgTm90ZTogIFRoZXNlIG5ldmVyIGdldCBmcmVlZCwgc28gdGhleSB3aWxsIGFjY3VtdWxhdGUgaWYgeW91IGNyZWF0ZSBtYW55XG4gIC8vICBUZVggaW5wdXQgamF4IGluc3RhbmNlcyB3aXRoIHRoaXMgZXh0ZW5zaW9uLlxuICAvL1xuICB0YWdJRCsrO1xuICBjb25zdCB0YWdOYW1lID0gJ2NvbmZpZ1RhZ3MtJyArIHRhZ0lEO1xuICAvL1xuICAvLyBSZWdpc3RlciB0aGUgdGFnIGNsYXNzXG4gIC8vXG4gIFRhZ3NGYWN0b3J5LmFkZCh0YWdOYW1lLCBUYWdGb3JtYXQpO1xuICBqYXgucGFyc2VPcHRpb25zLm9wdGlvbnMudGFncyA9IHRhZ05hbWU7XG59XG5cbi8qKlxuICogVGhlIGNvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBjb25maWdUYWdzXG4gKi9cbmV4cG9ydCBjb25zdCBUYWdGb3JtYXRDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICd0YWdmb3JtYXQnLCB7XG4gICAgY29uZmlnOiBbdGFnZm9ybWF0Q29uZmlnLCAxMF0sXG4gICAgb3B0aW9uczoge1xuICAgICAgdGFnZm9ybWF0OiB7XG4gICAgICAgIG51bWJlcjogKG46IG51bWJlcikgPT4gbi50b1N0cmluZygpLFxuICAgICAgICB0YWc6ICAgICh0YWc6IHN0cmluZykgPT4gJygnICsgdGFnICsgJyknLFxuICAgICAgICBpZDogICAgIChpZDogc3RyaW5nKSA9PiAnbWp4LWVxbjonICsgaWQucmVwbGFjZSgvXFxzL2csICdfJyksXG4gICAgICAgIHVybDogICAgKGlkOiBzdHJpbmcsIGJhc2U6IHN0cmluZykgPT4gYmFzZSArICcjJyArIGVuY29kZVVSSUNvbXBvbmVudChpZCksXG4gICAgICB9XG4gICAgfVxuICB9XG4pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAyMC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIE1ldGhvZCBkZWZpbml0aW9ucyBmb3IgdGhlIHRleHRtYWNyb3MgcGFja2FnZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIFAuIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IHtyZXRyeUFmdGVyfSBmcm9tICcuLi8uLi8uLi91dGlsL1JldHJpZXMuanMnO1xuaW1wb3J0IHtUZXh0UGFyc2VyfSBmcm9tICcuL1RleHRQYXJzZXIuanMnO1xuaW1wb3J0IEJhc2VNZXRob2RzIGZyb20gJy4uL2Jhc2UvQmFzZU1ldGhvZHMuanMnO1xuXG4vKipcbiAqIFRoZSBtZXRob2RzIHVzZWQgdG8gaW1wbGVtZW50IHRoZSB0ZXh0LW1vZGUgbWFjcm9zXG4gKi9cbmV4cG9ydCBjb25zdCBUZXh0TWFjcm9zTWV0aG9kcyA9IHtcblxuICAvKipcbiAgICogQHBhcmFtIHtUZXh0UGFyc2VyfSBwYXJzZXIgICBUaGUgdGV4dC1tb2RlIHBhcnNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgdGhhdCBjYWxsZWQgdGhpcyBmdW5jdGlvblxuICAgKi9cbiAgQ29tbWVudChwYXJzZXI6IFRleHRQYXJzZXIsIF9jOiBzdHJpbmcpIHtcbiAgICB3aGlsZSAocGFyc2VyLmkgPCBwYXJzZXIuc3RyaW5nLmxlbmd0aCAmJiBwYXJzZXIuc3RyaW5nLmNoYXJBdChwYXJzZXIuaSkgIT09ICdcXG4nKSB7XG4gICAgICBwYXJzZXIuaSsrO1xuICAgIH1cbiAgICBwYXJzZXIuaSsrO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RleHRQYXJzZXJ9IHBhcnNlciAgIFRoZSB0ZXh0LW1vZGUgcGFyc2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvcGVuICAgICAgICAgVGhlIGRlbGltaXRlciB1c2VkIHRvIG9wZW4gbWF0aC1tb2RlIGluIHRleHQtbW9kZVxuICAgKi9cbiAgTWF0aChwYXJzZXI6IFRleHRQYXJzZXIsIG9wZW46IHN0cmluZykge1xuICAgIHBhcnNlci5zYXZlVGV4dCgpO1xuICAgIGxldCBpID0gcGFyc2VyLmk7XG4gICAgbGV0IGosIGM7XG4gICAgbGV0IGJyYWNlcyA9IDA7XG4gICAgLy9cbiAgICAvLyBMb29wIHRocm91Z2ggdGhlIHN0cmluZyBsb29raW5nIGZvciB0aGUgY2xvc2luZyBkZWxpbWl0ZXIsIHdoaWxlIG1hdGNoaW5nIGJyYWNlc1xuICAgIC8vXG4gICAgd2hpbGUgKChjID0gcGFyc2VyLkdldE5leHQoKSkpIHtcbiAgICAgIGogPSBwYXJzZXIuaSsrO1xuICAgICAgc3dpdGNoIChjKSB7XG5cbiAgICAgIGNhc2UgJ1xcXFwnOlxuICAgICAgICBjb25zdCBjcyA9IHBhcnNlci5HZXRDUygpO1xuICAgICAgICBpZiAoY3MgPT09ICcpJykgYyA9ICdcXFxcKCc7ICAvLyBcXCggaXMgdGhlIG9wZW5pbmcgZGVsaW1pdGVyIGZvciBcXClcbiAgICAgIGNhc2UgJyQnOlxuICAgICAgICAvL1xuICAgICAgICAvLyAgSWYgdGhlcmUgYXJlIG5vIHVuYmFsYW5jZWQgYnJhY2VzIGFuZCB3ZSBoYXZlIGZvdW5kIHRoZSBjbG9zZSBkZWxpbWl0ZXIsXG4gICAgICAgIC8vICAgIHByb2Nlc3MgdGhlIGNvbnRlbnRzIG9mIHRoZSBkZWxpbWl0ZXJzIGluIG1hdGggbW9kZSAodXNpbmcgdGhlIG9yaWdpbmFsIFRlWCBwYXJzZXIpXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChicmFjZXMgPT09IDAgJiYgb3BlbiA9PT0gYykge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IHBhcnNlci50ZXhQYXJzZXIuY29uZmlndXJhdGlvbjtcbiAgICAgICAgICBjb25zdCBtbWwgPSAobmV3IFRleFBhcnNlcihwYXJzZXIuc3RyaW5nLnN1YnN0cihpLCBqIC0gaSksIHBhcnNlci5zdGFjay5lbnYsIGNvbmZpZykpLm1tbCgpO1xuICAgICAgICAgIHBhcnNlci5QdXNoTWF0aChtbWwpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAneyc6XG4gICAgICAgIGJyYWNlcysrO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnfSc6XG4gICAgICAgIGlmIChicmFjZXMgPT09IDApIHtcbiAgICAgICAgICBwYXJzZXIuRXJyb3IoJ0V4dHJhQ2xvc2VNaXNzaW5nT3BlbicsICdFeHRyYSBjbG9zZSBicmFjZSBvciBtaXNzaW5nIG9wZW4gYnJhY2UnKTtcbiAgICAgICAgfVxuICAgICAgICBicmFjZXMtLTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHBhcnNlci5FcnJvcignTWF0aE5vdFRlcm1pbmF0ZWQnLCAnTWF0aC1tb2RlIGlzIG5vdCBwcm9wZXJseSB0ZXJtaW5hdGVkJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGV4dFBhcnNlcn0gcGFyc2VyICAgVGhlIHRleHQtbW9kZSBwYXJzZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGMgICAgICAgICAgICBUaGUgY2hhcmFjdGVyIHRoYXQgY2FsbGVkIHRoaXMgZnVuY3Rpb25cbiAgICovXG4gIE1hdGhNb2RlT25seShwYXJzZXI6IFRleHRQYXJzZXIsIGM6IHN0cmluZykge1xuICAgIHBhcnNlci5FcnJvcignTWF0aE1vZGVPbmx5JywgJ1xcJyUxXFwnIGFsbG93ZWQgb25seSBpbiBtYXRoIG1vZGUnLCBjKTtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtUZXh0UGFyc2VyfSBwYXJzZXIgICBUaGUgdGV4dC1tb2RlIHBhcnNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgdGhhdCBjYWxsZWQgdGhpcyBmdW5jdGlvblxuICAgKi9cbiAgTWlzcGxhY2VkKHBhcnNlcjogVGV4dFBhcnNlciwgYzogc3RyaW5nKSB7XG4gICAgcGFyc2VyLkVycm9yKCdNaXNwbGFjZWQnLCAnXFwnJTFcXCcgY2FuIG5vdCBiZSB1c2VkIGhlcmUnLCBjKTtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtUZXh0UGFyc2VyfSBwYXJzZXIgICBUaGUgdGV4dC1tb2RlIHBhcnNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgdGhhdCBjYWxsZWQgdGhpcyBmdW5jdGlvblxuICAgKi9cbiAgT3BlbkJyYWNlKHBhcnNlcjogVGV4dFBhcnNlciwgX2M6IHN0cmluZykge1xuICAgIC8vXG4gICAgLy8gIFNhdmUgdGhlIGN1cnJlbnQgc3RhY2sgZW52aXJvbm1lbnQgYW5kIG1ha2UgYSBjb3B5IG9mIGl0IGZvclxuICAgIC8vICAgIHVzZSB3aXRoaW4gdGhlIGJyYWNlZCBncm91cC5cbiAgICAvL1xuICAgIGNvbnN0IGVudiA9IHBhcnNlci5zdGFjay5lbnY7XG4gICAgcGFyc2VyLmVudlN0YWNrLnB1c2goZW52KTtcbiAgICBwYXJzZXIuc3RhY2suZW52ID0gT2JqZWN0LmFzc2lnbih7fSwgZW52KTtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtUZXh0UGFyc2VyfSBwYXJzZXIgICBUaGUgdGV4dC1tb2RlIHBhcnNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgdGhhdCBjYWxsZWQgdGhpcyBmdW5jdGlvblxuICAgKi9cbiAgQ2xvc2VCcmFjZShwYXJzZXI6IFRleHRQYXJzZXIsIF9jOiBzdHJpbmcpIHtcbiAgICAvL1xuICAgIC8vICBSZXN0b3JlIHRoZSBzYXZlZCBzdGFjayBlbnZpcm9ubWVudCwgaWYgdGhlcmUgd2FzIG9uZVxuICAgIC8vXG4gICAgaWYgKHBhcnNlci5lbnZTdGFjay5sZW5ndGgpIHtcbiAgICAgIHBhcnNlci5zYXZlVGV4dCgpO1xuICAgICAgcGFyc2VyLnN0YWNrLmVudiA9IHBhcnNlci5lbnZTdGFjay5wb3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFyc2VyLkVycm9yKCdFeHRyYUNsb3NlTWlzc2luZ09wZW4nLCAnRXh0cmEgY2xvc2UgYnJhY2Ugb3IgbWlzc2luZyBvcGVuIGJyYWNlJyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RleHRQYXJzZXJ9IHBhcnNlciAgIFRoZSB0ZXh0LW1vZGUgcGFyc2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjICAgICAgICAgICAgVGhlIGNoYXJhY3RlciB0aGF0IGNhbGxlZCB0aGlzIGZ1bmN0aW9uXG4gICAqL1xuICBPcGVuUXVvdGUocGFyc2VyOiBUZXh0UGFyc2VyLCBjOiBzdHJpbmcpIHtcbiAgICAvL1xuICAgIC8vICBIYW5kbGUgc21hcnQgb3BlbiBxdW90ZXNcbiAgICAvL1xuICAgIGlmIChwYXJzZXIuc3RyaW5nLmNoYXJBdChwYXJzZXIuaSkgPT09IGMpIHtcbiAgICAgIHBhcnNlci50ZXh0ICs9ICdcXHUyMDFDJztcbiAgICAgIHBhcnNlci5pKys7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcnNlci50ZXh0ICs9ICdcXHUyMDE4JztcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGV4dFBhcnNlcn0gcGFyc2VyICAgVGhlIHRleHQtbW9kZSBwYXJzZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGMgICAgICAgICAgICBUaGUgY2hhcmFjdGVyIHRoYXQgY2FsbGVkIHRoaXMgZnVuY3Rpb25cbiAgICovXG4gIENsb3NlUXVvdGUocGFyc2VyOiBUZXh0UGFyc2VyLCBjOiBzdHJpbmcpIHtcbiAgICAvL1xuICAgIC8vICBIYW5kbGUgc21hcnQgY2xvc2UgcXVvdGVzXG4gICAgLy9cbiAgICBpZiAocGFyc2VyLnN0cmluZy5jaGFyQXQocGFyc2VyLmkpID09PSBjKSB7XG4gICAgICBwYXJzZXIudGV4dCArPSAnXFx1MjAxRCc7XG4gICAgICBwYXJzZXIuaSsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJzZXIudGV4dCArPSAnXFx1MjAxOSc7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RleHRQYXJzZXJ9IHBhcnNlciAgIFRoZSB0ZXh0LW1vZGUgcGFyc2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjICAgICAgICAgICAgVGhlIGNoYXJhY3RlciB0aGF0IGNhbGxlZCB0aGlzIGZ1bmN0aW9uXG4gICAqL1xuICBUaWxkZShwYXJzZXI6IFRleHRQYXJzZXIsIF9jOiBzdHJpbmcpIHtcbiAgICBwYXJzZXIudGV4dCArPSAnXFx1MDBBMCc7ICAvLyBub24tYnJlYWtpbmcgc3BhY2VcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtUZXh0UGFyc2VyfSBwYXJzZXIgICBUaGUgdGV4dC1tb2RlIHBhcnNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgdGhhdCBjYWxsZWQgdGhpcyBmdW5jdGlvblxuICAgKi9cbiAgU3BhY2UocGFyc2VyOiBUZXh0UGFyc2VyLCBfYzogc3RyaW5nKSB7XG4gICAgcGFyc2VyLnRleHQgKz0gJyAnOyAgLy8gcmVndWxhciBzcGFjZSwgYnV0IHNraXBwaW5nIG11bHRpcGxlIHNwYWNlc1xuICAgIHdoaWxlIChwYXJzZXIuR2V0TmV4dCgpLm1hdGNoKC9cXHMvKSkgcGFyc2VyLmkrKztcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtUZXh0UGFyc2VyfSBwYXJzZXIgICBUaGUgdGV4dC1tb2RlIHBhcnNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgIFRoZSBjb250cm9sIHNlcXVlbmNlIHRoYXQgY2FsbGVkIHRoaXMgZnVuY3Rpb25cbiAgICovXG4gIFNlbGZRdW90ZShwYXJzZXI6IFRleHRQYXJzZXIsIG5hbWU6IHN0cmluZykge1xuICAgIHBhcnNlci50ZXh0ICs9IG5hbWUuc3Vic3RyKDEpOyAgLy8gYWRkIGluIHRoZSBxdW90ZWQgY2hhcmFjdGVyXG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGV4dFBhcnNlcn0gcGFyc2VyICAgVGhlIHRleHQtbW9kZSBwYXJzZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICBUaGUgY29udHJvbCBzZXF1ZW5jZSB0aGF0IGNhbGxlZCB0aGlzIGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjICAgICAgICAgICAgVGhlIGNoYXJhY3RlciB0byBpbnNlcnQgaW50byB0aGUgc3RyaW5nXG4gICAqL1xuICBJbnNlcnQocGFyc2VyOiBUZXh0UGFyc2VyLCBfbmFtZTogc3RyaW5nLCBjOiBzdHJpbmcpIHtcbiAgICBwYXJzZXIudGV4dCArPSBjO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RleHRQYXJzZXJ9IHBhcnNlciAgIFRoZSB0ZXh0LW1vZGUgcGFyc2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICAgVGhlIGNvbnRyb2wgc2VxdWVuY2UgdGhhdCBjYWxsZWQgdGhpcyBmdW5jdGlvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gYyAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgdG8gaW5zZXJ0IGludG8gdGhlIHN0cmluZ1xuICAgKi9cbiAgQWNjZW50KHBhcnNlcjogVGV4dFBhcnNlciwgbmFtZTogc3RyaW5nLCBjOiBzdHJpbmcpIHtcbiAgICAvL1xuICAgIC8vICBDcmVhdGUgYW4gYWNjZW50ZWQgY2hhcmFjdGVyIHVzaW5nIG1vdmVyXG4gICAgLy9cbiAgICBjb25zdCBiYXNlID0gcGFyc2VyLlBhcnNlQXJnKG5hbWUpO1xuICAgIGNvbnN0IGFjY2VudCA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21vJywge30sIGMpO1xuICAgIHBhcnNlci5hZGRBdHRyaWJ1dGVzKGFjY2VudCk7XG4gICAgcGFyc2VyLlB1c2gocGFyc2VyLmNyZWF0ZSgnbm9kZScsICdtb3ZlcicsIFtiYXNlLCBhY2NlbnRdKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGV4dFBhcnNlcn0gcGFyc2VyICAgVGhlIHRleHQtbW9kZSBwYXJzZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICBUaGUgY29udHJvbCBzZXF1ZW5jZSB0aGF0IGNhbGxlZCB0aGlzIGZ1bmN0aW9uXG4gICAqL1xuICBFbXBoKHBhcnNlcjogVGV4dFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgLy9cbiAgICAvLyAgU3dpdGNoIHRvL2Zyb20gaXRhbGljc1xuICAgIC8vXG4gICAgY29uc3QgdmFyaWFudCA9IChwYXJzZXIuc3RhY2suZW52Lm1hdGh2YXJpYW50ID09PSAnLXRleC1tYXRoaXQnID8gJ25vcm1hbCcgOiAnLXRleC1tYXRoaXQnKTtcbiAgICBwYXJzZXIuUHVzaChwYXJzZXIuUGFyc2VUZXh0QXJnKG5hbWUsIHttYXRodmFyaWFudDogdmFyaWFudH0pKTtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtUZXh0UGFyc2VyfSBwYXJzZXIgICBUaGUgdGV4dC1tb2RlIHBhcnNlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgIFRoZSBjb250cm9sIHNlcXVlbmNlIHRoYXQgY2FsbGVkIHRoaXMgZnVuY3Rpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhcmlhbnQgICAgICBUaGUgZm9udCB2YXJpYW50IHRvIHVzZSBmcm9tIG5vdyBvblxuICAgKi9cbiAgU2V0Rm9udChwYXJzZXI6IFRleHRQYXJzZXIsIF9uYW1lOiBzdHJpbmcsIHZhcmlhbnQ6IHN0cmluZykge1xuICAgIHBhcnNlci5zYXZlVGV4dCgpO1xuICAgIHBhcnNlci5zdGFjay5lbnYubWF0aHZhcmlhbnQgPSB2YXJpYW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RleHRQYXJzZXJ9IHBhcnNlciAgIFRoZSB0ZXh0LW1vZGUgcGFyc2VyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICAgVGhlIGNvbnRyb2wgc2VxdWVuY2UgdGhhdCBjYWxsZWQgdGhpcyBmdW5jdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAgICAgICAgIFRoZSBmb250IHNpemUgdG8gdXNlIGZyb20gbm93IG9uXG4gICAqL1xuICBTZXRTaXplKHBhcnNlcjogVGV4dFBhcnNlciwgX25hbWU6IHN0cmluZywgc2l6ZTogbnVtYmVyKSB7XG4gICAgcGFyc2VyLnNhdmVUZXh0KCk7XG4gICAgcGFyc2VyLnN0YWNrLmVudi5tYXRoc2l6ZSA9IHNpemU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VGV4dFBhcnNlcn0gcGFyc2VyICAgVGhlIHRleHQtbW9kZSBwYXJzZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICBUaGUgY29udHJvbCBzZXF1ZW5jZSB0aGF0IGNhbGxlZCB0aGlzIGZ1bmN0aW9uXG4gICAqL1xuICBDaGVja0F1dG9sb2FkKHBhcnNlcjogVGV4dFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gICAgY29uc3QgYXV0b2xvYWQgPSBwYXJzZXIuY29uZmlndXJhdGlvbi5wYWNrYWdlRGF0YS5nZXQoJ2F1dG9sb2FkJyk7XG4gICAgY29uc3QgdGV4UGFyc2VyID0gcGFyc2VyLnRleFBhcnNlcjtcbiAgICBuYW1lID0gbmFtZS5zbGljZSgxKTtcbiAgICAvL1xuICAgIC8vIENoZWNrIGlmIGEgbWFjcm8gaXMgdW5kZWZpbmVkLCBvciBjdXJyZW50bHkgc2V0IHRvIGF1dG9sb2FkIGFuIGV4dGVuc2lvbi5cbiAgICAvLyBJZiBzbywgcHJvY2VzcyB0aGUgbWFjcm8gaW4gdGhlIG9yaWdpbmFsIFRleFBhcnNlcjpcbiAgICAvLyAgICBUaGlzIHdpbGwgaGFuZGxlIHRoZSB1bmRlZmluZWQgbWFjcm8gdXNpbmcgdGhlIFRlWCBwYXJzZXIncyBjb25maWd1cmF0aW9uLCB0aGVuIHJldHVybixcbiAgICAvLyAgICBvciB3aWxsIGNhdXNlIHRoZSBhdXRvbG9hZGVkIGV4dGVuc2lvbiB0byBsb2FkIG9yIGJlIHByb2Nlc3NlZCBhbmQgcmVzdGFydCB0aGUgZXhwcmVzc2lvbi5cbiAgICAvLyBPdGhlcndpc2UsIHByb2Nlc3MgdGhlIG1hY3JvIGluIHRleHQgbW9kZS5cbiAgICAvL1xuICAgIGNvbnN0IG1hY3JvID0gdGV4UGFyc2VyLmxvb2t1cCgnbWFjcm8nLCBuYW1lKTtcbiAgICBpZiAoIW1hY3JvIHx8IChhdXRvbG9hZCAmJiBtYWNyby5fZnVuYyA9PT0gYXV0b2xvYWQuQXV0b2xvYWQpKSB7XG4gICAgICB0ZXhQYXJzZXIucGFyc2UoJ21hY3JvJywgW3RleFBhcnNlciwgbmFtZV0pO1xuICAgICAgaWYgKCFtYWNybykgcmV0dXJuO1xuICAgICAgcmV0cnlBZnRlcihQcm9taXNlLnJlc29sdmUoKSk7XG4gICAgfVxuICAgIHRleFBhcnNlci5wYXJzZSgnbWFjcm8nLCBbcGFyc2VyLCBuYW1lXSk7XG4gIH0sXG5cbiAgLy9cbiAgLy8gQ29weSBzb21lIG1ldGhvZHMgZnJvbSB0aGUgYmFzZSBwYWNrYWdlXG4gIC8vXG4gIE1hY3JvOiBCYXNlTWV0aG9kcy5NYWNybyxcbiAgU3BhY2VyOiBCYXNlTWV0aG9kcy5TcGFjZXIsXG4gIEhza2lwOiBCYXNlTWV0aG9kcy5Ic2tpcCxcbiAgcnVsZTogQmFzZU1ldGhvZHMucnVsZSxcbiAgUnVsZTogQmFzZU1ldGhvZHMuUnVsZSxcbiAgSGFuZGxlUmVmOiBCYXNlTWV0aG9kcy5IYW5kbGVSZWZcblxufTtcblxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAyMC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIFRoZSBUZXh0UGFyc2VyIGNsYXNzIGZvciB0aGUgdGV4dG1hY3JvcyBwYWNrYWdlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgUC4gQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQgVGV4RXJyb3IgZnJvbSAnLi4vVGV4RXJyb3IuanMnO1xuaW1wb3J0IFBhcnNlT3B0aW9ucyBmcm9tICcuLi9QYXJzZU9wdGlvbnMuanMnO1xuaW1wb3J0IFBhcnNlVXRpbCBmcm9tICcuLi9QYXJzZVV0aWwuanMnO1xuaW1wb3J0IHtTdGFja0l0ZW19IGZyb20gJy4uL1N0YWNrSXRlbS5qcyc7XG5pbXBvcnQge01tbE5vZGUsIEFic3RyYWN0TW1sTm9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtFbnZMaXN0fSBmcm9tICcuLi9TdGFja0l0ZW0uanMnO1xuaW1wb3J0IE5vZGVVdGlsIGZyb20gJy4uL05vZGVVdGlsLmpzJztcbmltcG9ydCB7U3RvcEl0ZW0sIFN0eWxlSXRlbX0gZnJvbSAnLi4vYmFzZS9CYXNlSXRlbXMuanMnO1xuXG4vKipcbiAqIFN1YmNsYXNzIG9mIHRoZSBUZXhQYXJzZXIgYnV0IGZvciBoYW5kbGluZyB0ZXh0LW1vZGUgbWF0ZXJpYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFRleHRQYXJzZXIgZXh0ZW5kcyBUZXhQYXJzZXIge1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjdW11bGF0ZWQgdGV4dCBtYXRlcmlhbCB0byBnbyBpbnRvIGFuIG10ZXh0IGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyB0ZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNhdmVkIHN0YWNrIGVudmlyb25tZW50cyBmb3IgcHJvY2Vzc2luZyBicmFjZXNcbiAgICovXG4gIHB1YmxpYyBlbnZTdGFjazogRW52TGlzdFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NyaXB0bGV2ZWwgb2YgdGhpcyB0ZXh0LW1vZGUgbWF0ZXJpYWxcbiAgICovXG4gIHB1YmxpYyBsZXZlbDogbnVtYmVyIHwgc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjdW11bGF0ZWQgTW1sTm9kZXMgZ2VuZXJhdGVkIGJ5IHBhcnNpbmcgdGhlIHRleHQtbW9kZSBtYXRlcmlhbFxuICAgKi9cbiAgcHJvdGVjdGVkIG5vZGVzOiBNbWxOb2RlW107XG5cbiAgLyoqXG4gICAqIFNob3J0LWhhbmQgZm9yIG9idGFpbmluZyB0aGUgc2F2ZWQgVGV4UGFyc2VyXG4gICAqL1xuICBwdWJsaWMgZ2V0IHRleFBhcnNlcigpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLnBhY2thZ2VEYXRhLmdldCgndGV4dG1hY3JvcycpLnRleFBhcnNlcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgdGFncygpIHtcbiAgICByZXR1cm4gdGhpcy50ZXhQYXJzZXIudGFncztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3Rvcih0ZXh0OiBzdHJpbmcsIGVudjogRW52TGlzdCwgY29uZmlndXJhdGlvbjogUGFyc2VPcHRpb25zLCBsZXZlbD86IG51bWJlciB8IHN0cmluZykge1xuICAgIHN1cGVyKHRleHQsIGVudiwgY29uZmlndXJhdGlvbik7XG4gICAgdGhpcy5sZXZlbCA9IGxldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2Ugc3VyZSB3ZSBvbmx5IHJldHVybiBvbmUgZWxlbWVudCAod3JhcCBtdWx0aXBsZSBvbmVzIGluIGFuIG1yb3cgb3IgbXN0eWxlLCBhcyBuZWVkZWQpLlxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBtbWwoKSB7XG4gICAgcmV0dXJuICh0aGlzLmxldmVsICE9IG51bGwgP1xuICAgICAgICAgICAgdGhpcy5jcmVhdGUoJ25vZGUnLCAnbXN0eWxlJywgdGhpcy5ub2Rlcywge2Rpc3BsYXlzdHlsZTogZmFsc2UsIHNjcmlwdGxldmVsOiB0aGlzLmxldmVsfSkgOlxuICAgICAgICAgICAgdGhpcy5ub2Rlcy5sZW5ndGggPT09IDEgPyB0aGlzLm5vZGVzWzBdIDogdGhpcy5jcmVhdGUoJ25vZGUnLCAnbXJvdycsIHRoaXMubm9kZXMpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBQYXJzZSgpIHtcbiAgICB0aGlzLnRleHQgPSAnJztcbiAgICB0aGlzLm5vZGVzID0gW107XG4gICAgdGhpcy5lbnZTdGFjayA9IFtdO1xuICAgIHN1cGVyLlBhcnNlKCk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhbiBtdGV4dCBlbGVtZW50IGZvciB0aGUgc2F2ZWQgdGV4dCBhbmQgcHVzaGVzIHRoYXQgb250byB0aGUgbm9kZSBsaXN0XG4gICAqL1xuICBwdWJsaWMgc2F2ZVRleHQoKSB7XG4gICAgaWYgKHRoaXMudGV4dCkge1xuICAgICAgY29uc3QgbWF0aHZhcmlhbnQgPSB0aGlzLnN0YWNrLmVudi5tYXRodmFyaWFudDtcbiAgICAgIGNvbnN0IHRleHQgPSBQYXJzZVV0aWwuaW50ZXJuYWxUZXh0KHRoaXMsIHRoaXMudGV4dCwgbWF0aHZhcmlhbnQgPyB7bWF0aHZhcmlhbnR9IDoge30pO1xuICAgICAgdGhpcy50ZXh0ID0gJyc7XG4gICAgICB0aGlzLlB1c2godGV4dCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIFB1c2gobW1sOiBNbWxOb2RlIHwgU3RhY2tJdGVtKSB7XG4gICAgaWYgKHRoaXMudGV4dCkge1xuICAgICAgdGhpcy5zYXZlVGV4dCgpO1xuICAgIH1cbiAgICBpZiAobW1sIGluc3RhbmNlb2YgU3RvcEl0ZW0pIHtcbiAgICAgIHJldHVybiBzdXBlci5QdXNoKG1tbCk7XG4gICAgfVxuICAgIGlmIChtbWwgaW5zdGFuY2VvZiBTdHlsZUl0ZW0pIHtcbiAgICAgIHRoaXMuc3RhY2suZW52Lm1hdGhjb2xvciA9IHRoaXMuc3RhY2suZW52LmNvbG9yO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAobW1sIGluc3RhbmNlb2YgQWJzdHJhY3RNbWxOb2RlKSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZXMobW1sKTtcbiAgICAgIHRoaXMubm9kZXMucHVzaChtbWwpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQdXNoIHNvbWUgbWF0aCBpbnRvIHRoZSBub2RlIGxpc3QsIGFkZGluZyBtYXRoc2l6ZSBhbmQgbWF0aGNvbG9yXG4gICAqICAgaWYgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBtbWwgICBUaGUgbWF0aCBub2RlcyB0byBwdXNoXG4gICAqL1xuICBwdWJsaWMgUHVzaE1hdGgobW1sOiBNbWxOb2RlKSB7XG4gICAgY29uc3QgZW52ID0gdGhpcy5zdGFjay5lbnY7XG4gICAgaWYgKCFtbWwuaXNLaW5kKCdUZVhBdG9tJykpIHtcbiAgICAgIG1tbCA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ1RlWEF0b20nLCBbbW1sXSk7ICAvLyBtYWtlIHN1cmUgdGhlIG1hdGggaXMgYW4gT1JEXG4gICAgfVxuICAgIGZvciAoY29uc3QgbmFtZSBvZiBbJ21hdGhzaXplJywgJ21hdGhjb2xvciddKSB7XG4gICAgICBpZiAoZW52W25hbWVdICYmICFtbWwuYXR0cmlidXRlcy5nZXRFeHBsaWNpdChuYW1lKSkge1xuICAgICAgICBpZiAoIW1tbC5pc1Rva2VuICYmICFtbWwuaXNLaW5kKCdtc3R5bGUnKSkge1xuICAgICAgICAgIG1tbCA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ21zdHlsZScsIFttbWxdKTtcbiAgICAgICAgfVxuICAgICAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobW1sLCBuYW1lLCBlbnZbbmFtZV0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAobW1sLmlzSW5mZXJyZWQpIHtcbiAgICAgIG1tbCA9IHRoaXMuY3JlYXRlKCdub2RlJywgJ21yb3cnLCBtbWwuY2hpbGROb2Rlcyk7XG4gICAgfVxuICAgIHRoaXMubm9kZXMucHVzaChtbWwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBtYXRoc2l6ZSwgbWF0aGNvbG9yLCBhbmQgbWF0aHZhcmlhbnQgdG8gdG9rZW4gbm9kZXMsXG4gICAqICAgaWYgdGhleSBhcmUgc3BlY2lmaWVkIGluIHRoZSBlbnZpcm9ubWVudFxuICAgKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG1tbCAgIFRoZSBub2RlIHRvIGFkanVzdFxuICAgKi9cbiAgcHVibGljIGFkZEF0dHJpYnV0ZXMobW1sOiBNbWxOb2RlKSB7XG4gICAgY29uc3QgZW52ID0gdGhpcy5zdGFjay5lbnY7XG4gICAgaWYgKCFtbWwuaXNUb2tlbikgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBbJ21hdGhzaXplJywgJ21hdGhjb2xvcicsICdtYXRodmFyaWFudCddKSB7XG4gICAgICBpZiAoZW52W25hbWVdICYmICFtbWwuYXR0cmlidXRlcy5nZXRFeHBsaWNpdChuYW1lKSkge1xuICAgICAgICBOb2RlVXRpbC5zZXRBdHRyaWJ1dGUobW1sLCBuYW1lLCBlbnZbbmFtZV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQcm9jZXNzIHRoZSBhcmd1bWVudCBhcyB0ZXh0IHdpdGggdGhlIGdpdmVuIGVudmlyb25tZW50IHNldHRpbmdzXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIG1hY3JvIHRoYXQgaXMgY2FsbGluZyBmb3IgYSBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIHtFbnZMaXN0fSBlbnYgICBUaGUgZW52aXJvbm1lbnQgdG8gdXNlXG4gICAqL1xuICBwdWJsaWMgUGFyc2VUZXh0QXJnKG5hbWU6IHN0cmluZywgZW52OiBFbnZMaXN0KSB7XG4gICAgY29uc3QgdGV4dCA9IHRoaXMuR2V0QXJndW1lbnQobmFtZSk7XG4gICAgZW52ID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCB0aGlzLnN0YWNrLmVudiksIGVudik7XG4gICAgcmV0dXJuIChuZXcgVGV4dFBhcnNlcih0ZXh0LCBlbnYsIHRoaXMuY29uZmlndXJhdGlvbikpLm1tbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2Nlc3MgYW4gYXJndW1lbnQgYXMgdGV4dCByYXRoZXIgdGhhbiBtYXRoXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIFBhcnNlQXJnKG5hbWU6IHN0cmluZykge1xuICAgIHJldHVybiAobmV3IFRleHRQYXJzZXIodGhpcy5HZXRBcmd1bWVudChuYW1lKSwgdGhpcy5zdGFjay5lbnYsIHRoaXMuY29uZmlndXJhdGlvbikpLm1tbCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRocm93IGFuIGVycm9yXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAgICAgICAgVGhlIGlkIGZvciB0aGUgbWVzc2FnZSBzdHJpbmdcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgICBUaGUgRW5nbGlzaCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGFyZ3MgICAgQW55IHN1YnN0aXR1dGlvbiBhcmdzIGZvciB0aGUgbWVzc2FnZVxuICAgKi9cbiAgcHVibGljIEVycm9yKGlkOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogc3RyaW5nW10pIHtcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoaWQsIG1lc3NhZ2UsIC4uLmFyZ3MpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IE1hcHBpbmdzIGZvciB0aGUgdGV4dGNvbXAgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5cbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7VGV4Q29uc3RhbnR9IGZyb20gJy4uL1RleENvbnN0YW50cy5qcyc7XG5pbXBvcnQge1RleHRNYWNyb3NNZXRob2RzfSBmcm9tICcuLi90ZXh0bWFjcm9zL1RleHRNYWNyb3NNZXRob2RzLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcbmltcG9ydCB7VGV4dFBhcnNlcn0gZnJvbSAnLi4vdGV4dG1hY3Jvcy9UZXh0UGFyc2VyLmpzJztcblxuXG4vKipcbiAqIElkZW50aWZpZXJzIGZyb20gdGhlIFRleHRjb21wIHBhY2thZ2UuXG4gKi9cbm5ldyBDb21tYW5kTWFwKCd0ZXh0Y29tcC1tYWNyb3MnLCB7XG5cbiAgLy8gVGFibGUgMzogUHJlZGVmaW5lZCBMQVRFWCAyXHUwM0I1IFRleHQtTW9kZSBDb21tYW5kc1xuICAndGV4dGFzY2lpY2lyY3VtJzogICAgIFsnSW5zZXJ0JywgJ1xcdTAwNUUnXSxcbiAgJ3RleHRhc2NpaXRpbGRlJzogICAgICBbJ0luc2VydCcsICdcXHUwMDdFJ10sXG4gICd0ZXh0YXN0ZXJpc2tjZW50ZXJlZCc6IFsnSW5zZXJ0JywgJ1xcdTAwMkEnXSxcbiAgJ3RleHRiYWNrc2xhc2gnOiAgICAgICBbJ0luc2VydCcsICdcXHUwMDVDJ10sXG4gICd0ZXh0YmFyJzogICAgICAgICAgICAgWydJbnNlcnQnLCAnXFx1MDA3QyddLFxuICAndGV4dGJyYWNlbGVmdCc6ICAgICAgIFsnSW5zZXJ0JywgJ1xcdTAwN0InXSxcbiAgJ3RleHRicmFjZXJpZ2h0JzogICAgICBbJ0luc2VydCcsICdcXHUwMDdEJ10sXG4gICd0ZXh0YnVsbGV0JzogICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjAyMiddLFxuICAndGV4dGRhZ2dlcic6ICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwMjAnXSxcbiAgJ3RleHRkYWdnZXJkYmwnOiAgICAgICBbJ0luc2VydCcsICdcXHUyMDIxJ10sXG4gICd0ZXh0ZWxsaXBzaXMnOiAgICAgICAgWydJbnNlcnQnLCAnXFx1MjAyNiddLFxuICAndGV4dGVtZGFzaCc6ICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwMTQnXSxcbiAgJ3RleHRlbmRhc2gnOiAgICAgICAgICBbJ0luc2VydCcsICdcXHUyMDEzJ10sXG4gICd0ZXh0ZXhjbGFtZG93bic6ICAgICAgWydJbnNlcnQnLCAnXFx1MDBBMSddLFxuICAndGV4dGdyZWF0ZXInOiAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTAwM0UnXSxcbiAgJ3RleHRsZXNzJzogICAgICAgICAgICBbJ0luc2VydCcsICdcXHUwMDNDJ10sXG4gICd0ZXh0b3JkZmVtaW5pbmUnOiAgICAgWydJbnNlcnQnLCAnXFx1MDBBQSddLFxuICAndGV4dG9yZG1hc2N1bGluZSc6ICAgIFsnSW5zZXJ0JywgJ1xcdTAwQkEnXSxcbiAgJ3RleHRwYXJhZ3JhcGgnOiAgICAgICBbJ0luc2VydCcsICdcXHUwMEI2J10sXG4gICd0ZXh0cGVyaW9kY2VudGVyZWQnOiAgWydJbnNlcnQnLCAnXFx1MDBCNyddLFxuICAndGV4dHF1ZXN0aW9uZG93bic6ICAgIFsnSW5zZXJ0JywgJ1xcdTAwQkYnXSxcbiAgJ3RleHRxdW90ZWRibGxlZnQnOiAgICBbJ0luc2VydCcsICdcXHUyMDFDJ10sXG4gICd0ZXh0cXVvdGVkYmxyaWdodCc6ICAgWydJbnNlcnQnLCAnXFx1MjAxRCddLFxuICAndGV4dHF1b3RlbGVmdCc6ICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwMTgnXSxcbiAgJ3RleHRxdW90ZXJpZ2h0JzogICAgICBbJ0luc2VydCcsICdcXHUyMDE5J10sXG4gICd0ZXh0c2VjdGlvbic6ICAgICAgICAgWydJbnNlcnQnLCAnXFx1MDBBNyddLFxuICAndGV4dHVuZGVyc2NvcmUnOiAgICAgIFsnSW5zZXJ0JywgJ1xcdTAwNUYnXSxcbiAgJ3RleHR2aXNpYmxlc3BhY2UnOiAgICBbJ0luc2VydCcsICdcXHUyNDIzJ10sXG5cbiAgLy8gVGFibGUgMTI6IHRleHRjb21wIERpYWNyaXRpY3NcbiAgJ3RleHRhY3V0ZWRibCc6ICAgICAgICBbJ0luc2VydCcsICdcXHUwMkREJ10sXG4gICd0ZXh0YXNjaWlhY3V0ZSc6ICAgICAgWydJbnNlcnQnLCAnXFx1MDBCNCddLFxuICAndGV4dGFzY2lpYnJldmUnOiAgICAgIFsnSW5zZXJ0JywgJ1xcdTAyRDgnXSxcbiAgJ3RleHRhc2NpaWNhcm9uJzogICAgICBbJ0luc2VydCcsICdcXHUwMkM3J10sXG4gICd0ZXh0YXNjaWlkaWVyZXNpcyc6ICAgWydJbnNlcnQnLCAnXFx1MDBBOCddLFxuICAndGV4dGFzY2lpbWFjcm9uJzogICAgIFsnSW5zZXJ0JywgJ1xcdTAwQUYnXSxcbiAgJ3RleHRncmF2ZWRibCc6ICAgICAgICBbJ0luc2VydCcsICdcXHUwMkY1J10sXG4gICd0ZXh0dGlsZGVsb3cnOiAgICAgICAgWydJbnNlcnQnLCAnXFx1MDJGNyddLFxuXG4gIC8vIFRhYmxlIDEzOiB0ZXh0Y29tcCBDdXJyZW5jeSBTeW1ib2xzXG4gICd0ZXh0YmFodCc6ICAgICAgICAgICAgWydJbnNlcnQnLCAnXFx1MEUzRiddLFxuICAndGV4dGNlbnQnOiAgICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTAwQTInXSxcbiAgJ3RleHRjb2xvbm1vbmV0YXJ5JzogICBbJ0luc2VydCcsICdcXHUyMEExJ10sXG4gICd0ZXh0Y3VycmVuY3knOiAgICAgICAgWydJbnNlcnQnLCAnXFx1MDBBNCddLFxuICAndGV4dGRvbGxhcic6ICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTAwMjQnXSxcbiAgJ3RleHRkb25nJzogICAgICAgICAgICBbJ0luc2VydCcsICdcXHUyMEFCJ10sXG4gICd0ZXh0ZXVybyc6ICAgICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjBBQyddLFxuICAndGV4dGZsb3Jpbic6ICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTAxOTInXSxcbiAgJ3RleHRndWFyYW5pJzogICAgICAgICBbJ0luc2VydCcsICdcXHUyMEIyJ10sXG4gICd0ZXh0bGlyYSc6ICAgICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjBBNCddLFxuICAndGV4dG5haXJhJzogICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwQTYnXSxcbiAgJ3RleHRwZXNvJzogICAgICAgICAgICBbJ0luc2VydCcsICdcXHUyMEIxJ10sXG4gICd0ZXh0c3RlcmxpbmcnOiAgICAgICAgWydJbnNlcnQnLCAnXFx1MDBBMyddLFxuICAndGV4dHdvbic6ICAgICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwQTknXSxcbiAgJ3RleHR5ZW4nOiAgICAgICAgICAgICBbJ0luc2VydCcsICdcXHUwMEE1J10sXG5cbiAgLy8gVGFibGUgMTU6IHRleHRjb21wIExlZ2FsIFN5bWJvbHNcbiAgJ3RleHRjaXJjbGVkUCc6ICAgICAgICBbJ0luc2VydCcsICdcXHUyMTE3J10sXG4gICd0ZXh0Y29tcHdvcmRtYXJrJzogICAgWydJbnNlcnQnLCAnXFx1MjAwQyddLFxuICAndGV4dGNvcHlsZWZ0JzogICAgICAgIFsnSW5zZXJ0JywgJ1xcdXsxRjEyRn0nXSxcbiAgJ3RleHRjb3B5cmlnaHQnOiAgICAgICBbJ0luc2VydCcsICdcXHUwMEE5J10sXG4gICd0ZXh0cmVnaXN0ZXJlZCc6ICAgICAgWydJbnNlcnQnLCAnXFx1MDBBRSddLFxuICAndGV4dHNlcnZpY2VtYXJrJzogICAgIFsnSW5zZXJ0JywgJ1xcdTIxMjAnXSxcbiAgJ3RleHR0cmFkZW1hcmsnOiAgICAgICBbJ0luc2VydCcsICdcXHUyMTIyJ10sXG5cbiAgLy8gVGFibGUgMjA6IE1pc2NlbGxhbmVvdXMgdGV4dGNvbXAgU3ltYm9sXG4gICd0ZXh0YmFyZGJsJzogICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjAxNiddLFxuICAndGV4dGJpZ2NpcmNsZSc6ICAgICAgIFsnSW5zZXJ0JywgJ1xcdTI1RUYnXSxcbiAgJ3RleHRibGFuayc6ICAgICAgICAgICBbJ0luc2VydCcsICdcXHUyNDIyJ10sXG4gICd0ZXh0YnJva2VuYmFyJzogICAgICAgWydJbnNlcnQnLCAnXFx1MDBBNiddLFxuICAndGV4dGRpc2NvdW50JzogICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwNTInXSxcbiAgJ3RleHRlc3RpbWF0ZWQnOiAgICAgICBbJ0luc2VydCcsICdcXHUyMTJFJ10sXG4gICd0ZXh0aW50ZXJyb2JhbmcnOiAgICAgWydJbnNlcnQnLCAnXFx1MjAzRCddLFxuICAndGV4dGludGVycm9iYW5nZG93bic6IFsnSW5zZXJ0JywgJ1xcdTJFMTgnXSxcbiAgJ3RleHRtdXNpY2Fsbm90ZSc6ICAgICBbJ0luc2VydCcsICdcXHUyNjZBJ10sXG4gICd0ZXh0bnVtZXJvJzogICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjExNiddLFxuICAndGV4dG9wZW5idWxsZXQnOiAgICAgIFsnSW5zZXJ0JywgJ1xcdTI1RTYnXSxcbiAgJ3RleHRwZXJ0ZW50aG91c2FuZCc6ICBbJ0luc2VydCcsICdcXHUyMDMxJ10sXG4gICd0ZXh0cGVydGhvdXNhbmQnOiAgICAgWydJbnNlcnQnLCAnXFx1MjAzMCddLFxuICAndGV4dHJlY2lwZSc6ICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIxMUUnXSxcbiAgJ3RleHRyZWZlcmVuY2VtYXJrJzogICBbJ0luc2VydCcsICdcXHUyMDNCJ10sXG4gIC8vICd0ZXh0dGhyZWVxdWFydGVyc2VtZGFzaCdcbiAgLy8gJ3RleHR0d2VsdmV1ZGFzaCdcblxuICAvLyBUYWJsZSA1MTogdGV4dGNvbXAgVGV4dC1Nb2RlIERlbGltaXRlcnNcbiAgJ3RleHRsYW5nbGUnOiAgICAgICAgICBbJ0luc2VydCcsICdcXHUyMzI5J10sXG4gICd0ZXh0cmFuZ2xlJzogICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjMyQSddLFxuICAndGV4dGxicmFja2RibCc6ICAgICAgIFsnSW5zZXJ0JywgJ1xcdTI3RTYnXSxcbiAgJ3RleHRyYnJhY2tkYmwnOiAgICAgICBbJ0luc2VydCcsICdcXHUyN0U3J10sXG4gICd0ZXh0bHF1aWxsJzogICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjA0NSddLFxuICAndGV4dHJxdWlsbCc6ICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwNDYnXSxcblxuICAvLyBUYWJsZSA2MjogdGV4dGNvbXAgVGV4dC1Nb2RlIE1hdGggYW5kIFNjaWVuY2UgU3ltYm9sc1xuICAndGV4dGNlbHNpdXMnOiAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIxMDMnXSxcbiAgJ3RleHRkZWdyZWUnOiAgICAgICAgICBbJ0luc2VydCcsICdcXHUwMEIwJ10sXG4gICd0ZXh0ZGl2JzogICAgICAgICAgICAgWydJbnNlcnQnLCAnXFx1MDBGNyddLFxuICAndGV4dGRvd25hcnJvdyc6ICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIxOTMnXSxcbiAgJ3RleHRmcmFjdGlvbnNvbGlkdXMnOiBbJ0luc2VydCcsICdcXHUyMDQ0J10sXG4gICd0ZXh0bGVmdGFycm93JzogICAgICAgWydJbnNlcnQnLCAnXFx1MjE5MCddLFxuICAndGV4dGxub3QnOiAgICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTAwQUMnXSxcbiAgJ3RleHRtaG8nOiAgICAgICAgICAgICBbJ0luc2VydCcsICdcXHUyMTI3J10sXG4gICd0ZXh0bWludXMnOiAgICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjIxMiddLFxuICAndGV4dG11JzogICAgICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTAwQjUnXSxcbiAgJ3RleHRvaG0nOiAgICAgICAgICAgICBbJ0luc2VydCcsICdcXHUyMTI2J10sXG4gICd0ZXh0b25laGFsZic6ICAgICAgICAgWydJbnNlcnQnLCAnXFx1MDBCRCddLFxuICAndGV4dG9uZXF1YXJ0ZXInOiAgICAgIFsnSW5zZXJ0JywgJ1xcdTAwQkMnXSxcbiAgJ3RleHRvbmVzdXBlcmlvcic6ICAgICBbJ0luc2VydCcsICdcXHUwMEI5J10sXG4gICd0ZXh0cG0nOiAgICAgICAgICAgICAgWydJbnNlcnQnLCAnXFx1MDBCMSddLFxuICAndGV4dHJpZ2h0YXJyb3cnOiAgICAgIFsnSW5zZXJ0JywgJ1xcdTIxOTInXSxcbiAgJ3RleHRzdXJkJzogICAgICAgICAgICBbJ0luc2VydCcsICdcXHUyMjFBJ10sXG4gICd0ZXh0dGhyZWVxdWFydGVycyc6ICAgWydJbnNlcnQnLCAnXFx1MDBCRSddLFxuICAndGV4dHRocmVlc3VwZXJpb3InOiAgIFsnSW5zZXJ0JywgJ1xcdTAwQjMnXSxcbiAgJ3RleHR0aW1lcyc6ICAgICAgICAgICBbJ0luc2VydCcsICdcXHUwMEQ3J10sXG4gICd0ZXh0dHdvc3VwZXJpb3InOiAgICAgWydJbnNlcnQnLCAnXFx1MDBCMiddLFxuICAndGV4dHVwYXJyb3cnOiAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIxOTEnXSxcblxuICAvLyBUYWJsZSAxMTA6IHRleHRjb21wIEdlbmVhbG9naWNhbCBTeW1ib2xzXG4gICd0ZXh0Ym9ybic6ICAgICAgICAgICAgWydJbnNlcnQnLCAnXFx1MDAyQSddLFxuICAndGV4dGRpZWQnOiAgICAgICAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwMjAnXSxcbiAgJ3RleHRkaXZvcmNlZCc6ICAgICAgICBbJ0luc2VydCcsICdcXHUyNkFFJ10sXG4gIC8vICAndGV4dGxlYWYnXG4gICd0ZXh0bWFycmllZCc6ICAgICAgICAgWydJbnNlcnQnLCAnXFx1MjZBRCddLFxuXG4gIC8vIFRoaXMgaXMgbm90IHRoZSBjb3JyZWN0IGdseXBoXG4gICd0ZXh0Y2VudG9sZHN0eWxlJzogICAgWydJbnNlcnQnLCAnXFx1MDBBMicsIFRleENvbnN0YW50LlZhcmlhbnQuT0xEU1RZTEVdLFxuICAvLyBUaGlzIGlzIG5vdCB0aGUgY29ycmVjdCBnbHlwaFxuICAndGV4dGRvbGxhcm9sZHN0eWxlJzogIFsnSW5zZXJ0JywgJ1xcdTAwMjQnLCBUZXhDb25zdGFudC5WYXJpYW50Lk9MRFNUWUxFXSxcblxuICAvLyBUYWJsZSAxNjogdGV4dGNvbXAgT2xkLVN0eWxlIE51bWVyYWxzXG4gICd0ZXh0emVyb29sZHN0eWxlJzogICAgWydJbnNlcnQnLCAnMCcsIFRleENvbnN0YW50LlZhcmlhbnQuT0xEU1RZTEVdLFxuICAndGV4dG9uZW9sZHN0eWxlJzogICAgIFsnSW5zZXJ0JywgJzEnLCBUZXhDb25zdGFudC5WYXJpYW50Lk9MRFNUWUxFXSxcbiAgJ3RleHR0d29vbGRzdHlsZSc6ICAgICBbJ0luc2VydCcsICcyJywgVGV4Q29uc3RhbnQuVmFyaWFudC5PTERTVFlMRV0sXG4gICd0ZXh0dGhyZWVvbGRzdHlsZSc6ICAgWydJbnNlcnQnLCAnMycsIFRleENvbnN0YW50LlZhcmlhbnQuT0xEU1RZTEVdLFxuICAndGV4dGZvdXJvbGRzdHlsZSc6ICAgIFsnSW5zZXJ0JywgJzQnLCBUZXhDb25zdGFudC5WYXJpYW50Lk9MRFNUWUxFXSxcbiAgJ3RleHRmaXZlb2xkc3R5bGUnOiAgICBbJ0luc2VydCcsICc1JywgVGV4Q29uc3RhbnQuVmFyaWFudC5PTERTVFlMRV0sXG4gICd0ZXh0c2l4b2xkc3R5bGUnOiAgICAgWydJbnNlcnQnLCAnNicsIFRleENvbnN0YW50LlZhcmlhbnQuT0xEU1RZTEVdLFxuICAndGV4dHNldmVub2xkc3R5bGUnOiAgIFsnSW5zZXJ0JywgJzcnLCBUZXhDb25zdGFudC5WYXJpYW50Lk9MRFNUWUxFXSxcbiAgJ3RleHRlaWdodG9sZHN0eWxlJzogICBbJ0luc2VydCcsICc4JywgVGV4Q29uc3RhbnQuVmFyaWFudC5PTERTVFlMRV0sXG4gICd0ZXh0bmluZW9sZHN0eWxlJzogICAgWydJbnNlcnQnLCAnOScsIFRleENvbnN0YW50LlZhcmlhbnQuT0xEU1RZTEVdXG59LCB7XG4gIEluc2VydDogZnVuY3Rpb24ocGFyc2VyOiBUZXhQYXJzZXIsIG5hbWU6IHN0cmluZywgYzogc3RyaW5nLCBmb250OiBzdHJpbmcpIHtcbiAgICBpZiAocGFyc2VyIGluc3RhbmNlb2YgVGV4dFBhcnNlcikge1xuICAgICAgaWYgKCFmb250KSB7XG4gICAgICAgIFRleHRNYWNyb3NNZXRob2RzLkluc2VydChwYXJzZXIsIG5hbWUsIGMpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBwYXJzZXIuc2F2ZVRleHQoKTtcbiAgICB9XG4gICAgcGFyc2VyLlB1c2goUGFyc2VVdGlsLmludGVybmFsVGV4dChcbiAgICAgIHBhcnNlciwgYywgZm9udCA/IHttYXRodmFyaWFudDogZm9udH0gOiB7fSkpO1xuICB9XG59KTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjEtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIHRleHRjb21wIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9UZXh0Y29tcE1hcHBpbmdzLmpzJztcblxuXG5leHBvcnQgY29uc3QgVGV4dGNvbXBDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICd0ZXh0Y29tcCcsIHtcbiAgICBoYW5kbGVyOiB7bWFjcm86IFsndGV4dGNvbXAtbWFjcm9zJ119XG4gIH1cbik7XG5cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBDaGFyYWN0ZXIgYW5kIE1hY3JvIG1hcHBpbmdzIGZvciB0aGUgdGV4dG1hY3JvcyBwYWNrYWdlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgUC4gQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge01hY3JvTWFwLCBDb21tYW5kTWFwfSBmcm9tICcuLi9TeW1ib2xNYXAuanMnO1xuaW1wb3J0IHtUZXhDb25zdGFudH0gZnJvbSAnLi4vVGV4Q29uc3RhbnRzLmpzJztcbmltcG9ydCB7VGV4dE1hY3Jvc01ldGhvZHN9IGZyb20gJy4vVGV4dE1hY3Jvc01ldGhvZHMuanMnO1xuaW1wb3J0IHtNQVRIU1BBQ0V9IGZyb20gJy4uLy4uLy4uL3V0aWwvbGVuZ3Rocy5qcyc7XG5cbi8vXG4vLyAgVGhlIHNwZWNpYWwgY2hhcmFjdGVycyBpbiB0ZXh0LW1vZGVcbi8vXG5uZXcgTWFjcm9NYXAoJ3RleHQtc3BlY2lhbCcsIHtcbiAgJyQnOiAgICAgICAgICAnTWF0aCcsXG4gICclJzogICAgICAgICAgJ0NvbW1lbnQnLFxuICAnXic6ICAgICAgICAgICdNYXRoTW9kZU9ubHknLFxuICAnXyc6ICAgICAgICAgICdNYXRoTW9kZU9ubHknLFxuICAnJic6ICAgICAgICAgICdNaXNwbGFjZWQnLFxuICAnIyc6ICAgICAgICAgICdNaXNwbGFjZWQnLFxuICAnfic6ICAgICAgICAgICdUaWxkZScsXG4gICcgJzogICAgICAgICAgJ1NwYWNlJyxcbiAgJ1xcdCc6ICAgICAgICAgJ1NwYWNlJyxcbiAgJ1xccic6ICAgICAgICAgJ1NwYWNlJyxcbiAgJ1xcbic6ICAgICAgICAgJ1NwYWNlJyxcbiAgJ1xcdTAwQTAnOiAgICAgJ1RpbGRlJyxcbiAgJ3snOiAgICAgICAgICAnT3BlbkJyYWNlJyxcbiAgJ30nOiAgICAgICAgICAnQ2xvc2VCcmFjZScsXG4gICdgJzogICAgICAgICAgJ09wZW5RdW90ZScsXG4gICdcXCcnOiAgICAgICAgICdDbG9zZVF1b3RlJ1xufSwgVGV4dE1hY3Jvc01ldGhvZHMpO1xuXG4vL1xuLy8gIFRoZSB0ZXh0LW1vZGUgbWFjcm8gbWFwcGluZ3Ncbi8vXG5uZXcgQ29tbWFuZE1hcCgndGV4dC1tYWNyb3MnLCB7XG4gICcoJzogICAgICAgICAgJ01hdGgnLFxuXG4gICckJzogICAgICAgICAgJ1NlbGZRdW90ZScsXG4gICdfJzogICAgICAgICAgJ1NlbGZRdW90ZScsXG4gICclJzogICAgICAgICAgJ1NlbGZRdW90ZScsXG4gICd7JzogICAgICAgICAgJ1NlbGZRdW90ZScsXG4gICd9JzogICAgICAgICAgJ1NlbGZRdW90ZScsXG4gICcgJzogICAgICAgICAgJ1NlbGZRdW90ZScsXG4gICcmJzogICAgICAgICAgJ1NlbGZRdW90ZScsXG4gICcjJzogICAgICAgICAgJ1NlbGZRdW90ZScsXG4gICdcXFxcJzogICAgICAgICAnU2VsZlF1b3RlJyxcblxuICAnXFwnJzogICAgICAgICBbJ0FjY2VudCcsICdcXHUwMEI0J10sXG4gICdcXHUyMDE5JzogICAgIFsnQWNjZW50JywgJ1xcdTAwQjQnXSxcbiAgJ2AnOiAgICAgICAgICBbJ0FjY2VudCcsICdcXHUwMDYwJ10sXG4gICdcXHUyMDE4JzogICAgIFsnQWNjZW50JywgJ1xcdTAwNjAnXSxcbiAgJ14nOiAgICAgICAgICBbJ0FjY2VudCcsICdeJ10sXG4gICdcXFwiJzogICAgICAgICBbJ0FjY2VudCcsICdcXHUwMEE4J10sXG4gICd+JzogICAgICAgICAgWydBY2NlbnQnLCAnfiddLFxuICAnPSc6ICAgICAgICAgIFsnQWNjZW50JywgJ1xcdTAwQUYnXSxcbiAgJy4nOiAgICAgICAgICBbJ0FjY2VudCcsICdcXHUwMkQ5J10sXG4gICd1JzogICAgICAgICAgWydBY2NlbnQnLCAnXFx1MDJEOCddLFxuICAndic6ICAgICAgICAgIFsnQWNjZW50JywgJ1xcdTAyQzcnXSxcblxuICBlbXBoOiAgICAgICAgICdFbXBoJyxcbiAgcm06ICAgICAgICAgICBbJ1NldEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTF0sXG4gIG1pdDogICAgICAgICAgWydTZXRGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5JVEFMSUNdLFxuICBvbGRzdHlsZTogICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuT0xEU1RZTEVdLFxuICBjYWw6ICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQ0FMTElHUkFQSElDXSxcbiAgaXQ6ICAgICAgICAgICBbJ1NldEZvbnQnLCAnLXRleC1tYXRoaXQnXSwgLy8gbmVlZHMgc3BlY2lhbCBoYW5kbGluZ1xuICBiZjogICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuQk9MRF0sXG4gIGJiRm9udDogICAgICAgWydTZXRGb250JywgVGV4Q29uc3RhbnQuVmFyaWFudC5ET1VCTEVTVFJVQ0tdLFxuICBzY3I6ICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuU0NSSVBUXSxcbiAgZnJhazogICAgICAgICBbJ1NldEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50LkZSQUtUVVJdLFxuICBzZjogICAgICAgICAgIFsnU2V0Rm9udCcsIFRleENvbnN0YW50LlZhcmlhbnQuU0FOU1NFUklGXSxcbiAgdHQ6ICAgICAgICAgICBbJ1NldEZvbnQnLCBUZXhDb25zdGFudC5WYXJpYW50Lk1PTk9TUEFDRV0sXG5cbiAgdGlueTogICAgICAgICBbJ1NldFNpemUnLCAwLjVdLFxuICBUaW55OiAgICAgICAgIFsnU2V0U2l6ZScsIDAuNl0sICAvLyBub24tc3RhbmRhcmRcbiAgc2NyaXB0c2l6ZTogICBbJ1NldFNpemUnLCAwLjddLFxuICBzbWFsbDogICAgICAgIFsnU2V0U2l6ZScsIDAuODVdLFxuICBub3JtYWxzaXplOiAgIFsnU2V0U2l6ZScsIDEuMF0sXG4gIGxhcmdlOiAgICAgICAgWydTZXRTaXplJywgMS4yXSxcbiAgTGFyZ2U6ICAgICAgICBbJ1NldFNpemUnLCAxLjQ0XSxcbiAgTEFSR0U6ICAgICAgICBbJ1NldFNpemUnLCAxLjczXSxcbiAgaHVnZTogICAgICAgICBbJ1NldFNpemUnLCAyLjA3XSxcbiAgSHVnZTogICAgICAgICBbJ1NldFNpemUnLCAyLjQ5XSxcblxuICBCYmI6ICAgICAgICAgIFsnTWFjcm8nLCAne1xcXFxiYkZvbnQgIzF9JywgMV0sXG4gIHRleHRub3JtYWw6ICAgWydNYWNybycsICd7XFxcXHJtICMxfScsIDFdLFxuICB0ZXh0dXA6ICAgICAgIFsnTWFjcm8nLCAne1xcXFxybSAjMX0nLCAxXSxcbiAgdGV4dHJtOiAgICAgICBbJ01hY3JvJywgJ3tcXFxccm0gIzF9JywgMV0sXG4gIHRleHRpdDogICAgICAgWydNYWNybycsICd7XFxcXGl0ICMxfScsIDFdLFxuICB0ZXh0YmY6ICAgICAgIFsnTWFjcm8nLCAne1xcXFxiZiAjMX0nLCAxXSxcbiAgdGV4dHNmOiAgICAgICBbJ01hY3JvJywgJ3tcXFxcc2YgIzF9JywgMV0sXG4gIHRleHR0dDogICAgICAgWydNYWNybycsICd7XFxcXHR0ICMxfScsIDFdLFxuXG4gIGRhZ2dlcjogICAgICAgWydJbnNlcnQnLCAnXFx1MjAyMCddLFxuICBkZGFnZ2VyOiAgICAgIFsnSW5zZXJ0JywgJ1xcdTIwMjEnXSxcbiAgUzogICAgICAgICAgICBbJ0luc2VydCcsICdcXHUwMEE3J10sXG5cbiAgJywnOiAgICAgICAgICBbJ1NwYWNlcicsIE1BVEhTUEFDRS50aGlubWF0aHNwYWNlXSxcbiAgJzonOiAgICAgICAgICBbJ1NwYWNlcicsIE1BVEhTUEFDRS5tZWRpdW1tYXRoc3BhY2VdLFxuICAnPic6ICAgICAgICAgIFsnU3BhY2VyJywgTUFUSFNQQUNFLm1lZGl1bW1hdGhzcGFjZV0sXG4gICc7JzogICAgICAgICAgWydTcGFjZXInLCBNQVRIU1BBQ0UudGhpY2ttYXRoc3BhY2VdLFxuICAnISc6ICAgICAgICAgIFsnU3BhY2VyJywgTUFUSFNQQUNFLm5lZ2F0aXZldGhpbm1hdGhzcGFjZV0sXG4gIGVuc3BhY2U6ICAgICAgWydTcGFjZXInLCAuNV0sXG4gIHF1YWQ6ICAgICAgICAgWydTcGFjZXInLCAxXSxcbiAgcXF1YWQ6ICAgICAgICBbJ1NwYWNlcicsIDJdLFxuICB0aGluc3BhY2U6ICAgIFsnU3BhY2VyJywgTUFUSFNQQUNFLnRoaW5tYXRoc3BhY2VdLFxuICBuZWd0aGluc3BhY2U6IFsnU3BhY2VyJywgTUFUSFNQQUNFLm5lZ2F0aXZldGhpbm1hdGhzcGFjZV0sXG5cbiAgaHNraXA6ICAgICAgICAnSHNraXAnLFxuICBoc3BhY2U6ICAgICAgICdIc2tpcCcsXG4gIGtlcm46ICAgICAgICAgJ0hza2lwJyxcbiAgbXNraXA6ICAgICAgICAnSHNraXAnLFxuICBtc3BhY2U6ICAgICAgICdIc2tpcCcsXG4gIG1rZXJuOiAgICAgICAgJ0hza2lwJyxcbiAgcnVsZTogICAgICAgICAncnVsZScsXG4gIFJ1bGU6ICAgICAgICAgWydSdWxlJ10sXG4gIFNwYWNlOiAgICAgICAgWydSdWxlJywgJ2JsYW5rJ10sXG5cbiAgY29sb3I6ICAgICAgICAnQ2hlY2tBdXRvbG9hZCcsXG4gIHRleHRjb2xvcjogICAgJ0NoZWNrQXV0b2xvYWQnLFxuICBjb2xvcmJveDogICAgICdDaGVja0F1dG9sb2FkJyxcbiAgZmNvbG9yYm94OiAgICAnQ2hlY2tBdXRvbG9hZCcsXG4gIGhyZWY6ICAgICAgICAgJ0NoZWNrQXV0b2xvYWQnLFxuICBzdHlsZTogICAgICAgICdDaGVja0F1dG9sb2FkJyxcbiAgY2xhc3M6ICAgICAgICAnQ2hlY2tBdXRvbG9hZCcsXG4gIGNzc0lkOiAgICAgICAgJ0NoZWNrQXV0b2xvYWQnLFxuICB1bmljb2RlOiAgICAgICdDaGVja0F1dG9sb2FkJyxcblxuICByZWY6ICAgICAgICAgIFsnSGFuZGxlUmVmJywgZmFsc2VdLFxuICBlcXJlZjogICAgICAgIFsnSGFuZGxlUmVmJywgdHJ1ZV0sXG5cbn0sIFRleHRNYWNyb3NNZXRob2RzKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMjAtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIHRleHRtYWNyb3MgcGFja2FnZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIFAuIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtUZVh9IGZyb20gJy4uLy4uL3RleC5qcyc7XG5pbXBvcnQgVGV4UGFyc2VyIGZyb20gJy4uL1RleFBhcnNlci5qcyc7XG5pbXBvcnQge0NvbmZpZ3VyYXRpb24sIFBhcnNlckNvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IFBhcnNlT3B0aW9ucyBmcm9tICcuLi9QYXJzZU9wdGlvbnMuanMnO1xuaW1wb3J0IHtUYWdzRmFjdG9yeX0gZnJvbSAnLi4vVGFncy5qcyc7XG5pbXBvcnQge1N0YXJ0SXRlbSwgU3RvcEl0ZW0sIE1tbEl0ZW0sIFN0eWxlSXRlbX0gZnJvbSAnLi4vYmFzZS9CYXNlSXRlbXMuanMnO1xuaW1wb3J0IHtUZXh0UGFyc2VyfSBmcm9tICcuL1RleHRQYXJzZXIuanMnO1xuaW1wb3J0IHtUZXh0TWFjcm9zTWV0aG9kc30gZnJvbSAnLi9UZXh0TWFjcm9zTWV0aG9kcy5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcblxuaW1wb3J0ICcuL1RleHRNYWNyb3NNYXBwaW5ncy5qcyc7XG5cbi8qKlxuICogIFRoZSBiYXNlIHRleHQgbWFjcm8gY29uZmlndXJhdGlvbiAodXNlZCBpbiB0aGUgVGV4dFBhcnNlcilcbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRCYXNlQ29uZmlndXJhdGlvbiA9IENvbmZpZ3VyYXRpb24uY3JlYXRlKCd0ZXh0LWJhc2UnLCB7XG4gIHBhcnNlcjogJ3RleHQnLFxuICBoYW5kbGVyOiB7XG4gICAgY2hhcmFjdGVyOiBbJ2NvbW1hbmQnLCAndGV4dC1zcGVjaWFsJ10sXG4gICAgbWFjcm86IFsndGV4dC1tYWNyb3MnXVxuICB9LFxuICBmYWxsYmFjazoge1xuICAgIC8vXG4gICAgLy8gVW5rbm93biBjaGFyYWN0ZXJzIGFyZSBhZGRlZCB0byB0aGUgdGV4dCB2ZXJiYXRpbVxuICAgIC8vXG4gICAgY2hhcmFjdGVyOiAocGFyc2VyOiBUZXh0UGFyc2VyLCBjOiBzdHJpbmcpID0+IHtcbiAgICAgIHBhcnNlci50ZXh0ICs9IGM7XG4gICAgfSxcbiAgICAvL1xuICAgIC8vIEZvciB1bmtub3duIG1hY3JvcywgaWYgdGhleSBhcmUgZGVmaW5lZCBpbiB0aGUgbWFpbiBUZVggcGFyc2VyXG4gICAgLy8gICBhbmQgbm90IHN0cmluZy1yZXBsYWNlbWVudCBtYWNyb3MsIGdpdmUgYW4gZXJyb3IsIG90aGVyd2lzZVxuICAgIC8vICAgcnVuIHRoZSBtYWNybyAodGhpcyBlaXRoZXIgZG9lcyB0aGUgc3RyaW5nIHJlcGxhY2VtZW50IG9yXG4gICAgLy8gICBwcm9kdWNlcyB0aGUgZXJyb3IgYXMgY29uZmlndXJlZCBpbiB0aGUgbWFpbiBUZVggcGFyc2VyLCBzb1xuICAgIC8vICAgdGhpcyB3aWxsIHJlc3BlY3QgdGhlIG5vdW5kZWZpbmVkIHBhY2thZ2UsIGlmIGxvYWRlZCkuXG4gICAgLy9cbiAgICBtYWNybzogKHBhcnNlcjogVGV4dFBhcnNlciwgbmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZXhQYXJzZXIgPSBwYXJzZXIudGV4UGFyc2VyO1xuICAgICAgY29uc3QgbWFjcm8gPSB0ZXhQYXJzZXIubG9va3VwKCdtYWNybycsIG5hbWUpO1xuICAgICAgaWYgKG1hY3JvICYmIG1hY3JvLl9mdW5jICE9PSBUZXh0TWFjcm9zTWV0aG9kcy5NYWNybykge1xuICAgICAgICBwYXJzZXIuRXJyb3IoJ01hdGhNYWNybycsICclMSBpcyBvbmx5IHN1cHBvcnRlZCBpbiBtYXRoIG1vZGUnLCAnXFxcXCcgKyBuYW1lKTtcbiAgICAgIH1cbiAgICAgIHRleFBhcnNlci5wYXJzZSgnbWFjcm8nLCBbcGFyc2VyLCBuYW1lXSk7XG4gICAgfVxuICB9LFxuICBpdGVtczoge1xuICAgIFtTdGFydEl0ZW0ucHJvdG90eXBlLmtpbmRdOiBTdGFydEl0ZW0sXG4gICAgW1N0b3BJdGVtLnByb3RvdHlwZS5raW5kXTogU3RvcEl0ZW0sXG4gICAgW01tbEl0ZW0ucHJvdG90eXBlLmtpbmRdOiBNbWxJdGVtLFxuICAgIFtTdHlsZUl0ZW0ucHJvdG90eXBlLmtpbmRdOiBTdHlsZUl0ZW0gICAgIC8vIG5lZWRlZCBmb3IgXFxjb2xvclxuICB9XG59KTtcblxuLyoqXG4gKiBSZXBsYWNlbWVudCBmb3IgUGFyc2VVdGlsLmludGVybmFsTWF0aCB0aGF0IGhhbmRsZXMgdGV4dC1tb2RlIG1hY3Jvcy5cbiAqXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyICAgICAgVGhlIFRleFBhcnNlciBjYWxsaW5nIHRoaXMgZnVuY3Rpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICAgICBUaGUgdGV4dC1tb2RlIHN0cmluZyB0byBiZSBwcm9jZXNzZWRcbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gbGV2ZWwgICBUaGUgc2NyaXB0bGV2ZWwgb2YgdGhlIHRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXRodmFyaWFudCAgICBUaGUgbWF0aHZhcmlhbnQgZm9yIHRoZSB0ZXh0XG4gKiBAcmV0dXJuIHtNbWxOb2RlW119ICAgICAgICAgICAgVGhlIGZpbmFsIE1tbE5vZGUgZ2VuZXJhdGVkIGZvciB0aGUgdGV4dFxuICovXG5mdW5jdGlvbiBpbnRlcm5hbE1hdGgocGFyc2VyOiBUZXhQYXJzZXIsIHRleHQ6IHN0cmluZywgbGV2ZWw/OiBudW1iZXIgfCBzdHJpbmcsIG1hdGh2YXJpYW50Pzogc3RyaW5nKTogTW1sTm9kZVtdIHtcbiAgY29uc3QgY29uZmlnID0gcGFyc2VyLmNvbmZpZ3VyYXRpb24ucGFja2FnZURhdGEuZ2V0KCd0ZXh0bWFjcm9zJyk7XG4gIGlmICghKHBhcnNlciBpbnN0YW5jZW9mIFRleHRQYXJzZXIpKSB7XG4gICAgY29uZmlnLnRleFBhcnNlciA9IHBhcnNlcjtcbiAgfVxuICByZXR1cm4gWyhuZXcgVGV4dFBhcnNlcih0ZXh0LCBtYXRodmFyaWFudCA/IHttYXRodmFyaWFudH0gOiB7fSwgY29uZmlnLnBhcnNlT3B0aW9ucywgbGV2ZWwpKS5tbWwoKV07XG59XG5cbi8vXG4vLyAgVGhlIHRleHRtYWNyb3MgcGFja2FnZSBjb25maWd1cmF0aW9uXG4vL1xuZXhwb3J0IGNvbnN0IFRleHRNYWNyb3NDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoJ3RleHRtYWNyb3MnLCB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge1BhcnNlckNvbmZpZ3VyYXRpb259IGNvbmZpZyAgIFRoZSBjb25maWd1cmF0aW9uIG9iamVjdCB3ZSBhcmUgYmVpbmcgY29uZmlndXJlZCB3aXRoaW5cbiAgICogQHBhcmFtIHtUZVg8YW55LGFueSxhbnk+fSBqYXggICAgICAgICBUaGUgVGVYIGlucHV0IGpheCBpbiB3aGljaCB3ZSBhcmUgcnVubmluZ1xuICAgKi9cbiAgY29uZmlnKF9jb25maWc6IFBhcnNlckNvbmZpZ3VyYXRpb24sIGpheDogVGVYPGFueSwgYW55LCBhbnk+KSB7XG4gICAgLy9cbiAgICAvLyAgQ3JlYXRlIHRoZSBjb25maWd1cmF0aW9uIGFuZCBwYXJzZU9wdGlvbnMgb2JqZWN0cyBmb3IgdGhlXG4gICAgLy8gICAgaW50ZXJuYWwgVGV4dFBhcnNlciBhbmQgYWRkIHRoZSB0ZXh0QmFzZSBjb25maWd1cmF0aW9uLlxuICAgIC8vXG4gICAgY29uc3QgdGV4dENvbmYgPSBuZXcgUGFyc2VyQ29uZmlndXJhdGlvbihqYXgucGFyc2VPcHRpb25zLm9wdGlvbnMudGV4dG1hY3Jvcy5wYWNrYWdlcywgWyd0ZXgnLCAndGV4dCddKTtcbiAgICB0ZXh0Q29uZi5pbml0KCk7XG4gICAgY29uc3QgcGFyc2VPcHRpb25zID0gbmV3IFBhcnNlT3B0aW9ucyh0ZXh0Q29uZiwgW10pO1xuICAgIHBhcnNlT3B0aW9ucy5vcHRpb25zID0gamF4LnBhcnNlT3B0aW9ucy5vcHRpb25zOyAgICAgIC8vIHNoYXJlIHRoZSBUZVggb3B0aW9uc1xuICAgIHRleHRDb25mLmNvbmZpZyhqYXgpO1xuICAgIFRhZ3NGYWN0b3J5LmFkZFRhZ3ModGV4dENvbmYudGFncyk7XG4gICAgcGFyc2VPcHRpb25zLnRhZ3MgPSBUYWdzRmFjdG9yeS5nZXREZWZhdWx0KCk7XG4gICAgcGFyc2VPcHRpb25zLnRhZ3MuY29uZmlndXJhdGlvbiA9IHBhcnNlT3B0aW9ucztcbiAgICAvL1xuICAgIC8vIFNoYXJlIHRoZSBUZVggaW5wdXQgamF4J3MgcGFyc2VPcHRpb25zIHBhY2thZ2VEYXRhIG9iamVjdFxuICAgIC8vICAgc28gdGhhdCByZXF1aXJlIGFuZCBvdGhlciBwYWNrYWdlcyB3aWxsIHdvcmsgaW4gYm90aCBwYXJzZXJzLFxuICAgIC8vICAgc2V0IHRoZSB0ZXh0bWFjcm9zIGRhdGEgKHRleFBhcnNlciB3aWxsIGJlIGZpbGxlZCBpbiBsYXRlciksXG4gICAgLy8gICBhbmQgcmVwbGFjZSB0aGUgaW50ZXJuYWxNYXRoIGZ1bmN0aW9uIHdpdGggb3VyIG93bi5cbiAgICAvL1xuICAgIHBhcnNlT3B0aW9ucy5wYWNrYWdlRGF0YSA9IGpheC5wYXJzZU9wdGlvbnMucGFja2FnZURhdGE7XG4gICAgcGFyc2VPcHRpb25zLnBhY2thZ2VEYXRhLnNldCgndGV4dG1hY3JvcycsIHtwYXJzZU9wdGlvbnMsIGpheCwgdGV4UGFyc2VyOiBudWxsfSk7XG4gICAgcGFyc2VPcHRpb25zLm9wdGlvbnMuaW50ZXJuYWxNYXRoID0gaW50ZXJuYWxNYXRoO1xuICB9LFxuICBwcmVwcm9jZXNzb3JzOiBbKGRhdGE6IHtkYXRhOiBQYXJzZU9wdGlvbnN9KSA9PiB7XG4gICAgLy9cbiAgICAvLyAgU2V0IHRoZSBNbWxGYWN0b3J5IGZvciB0aGUgbm9kZUZhY3RvcnksIHNpbmNlIGl0IHdhcyBub3QgYXZhaWxhYmxlXG4gICAgLy8gIGR1cnJpbmcgY29uZmlndXJhdGlvbiBhYm92ZS5cbiAgICAvL1xuICAgIGNvbnN0IGNvbmZpZyA9IGRhdGEuZGF0YS5wYWNrYWdlRGF0YS5nZXQoJ3RleHRtYWNyb3MnKTtcbiAgICBjb25maWcucGFyc2VPcHRpb25zLm5vZGVGYWN0b3J5LnNldE1tbEZhY3RvcnkoY29uZmlnLmpheC5tbWxGYWN0b3J5KTtcbiAgfV0sXG4gIG9wdGlvbnM6IHtcbiAgICB0ZXh0bWFjcm9zOiB7XG4gICAgICBwYWNrYWdlczogWyd0ZXh0LWJhc2UnXSAgICAvLyB0ZXh0bWFjcm8gcGFja2FnZXMgdG8gbG9hZFxuICAgIH1cbiAgfVxufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIxLTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBDb25maWd1cmF0aW9uIGZpbGUgZm9yIHRoZSB1cGdyZWVrIHBhY2thZ2UuXG4gKlxuICogQGF1dGhvciB2LnNvcmdlQG1hdGhqYXgub3JnIChWb2xrZXIgU29yZ2UpXG4gKi9cblxuaW1wb3J0IHtDb25maWd1cmF0aW9ufSBmcm9tICcuLi9Db25maWd1cmF0aW9uLmpzJztcbmltcG9ydCB7U3ltYm9sfSBmcm9tICcuLi9TeW1ib2wuanMnO1xuaW1wb3J0IHtDaGFyYWN0ZXJNYXB9IGZyb20gJy4uL1N5bWJvbE1hcC5qcyc7XG5pbXBvcnQge1RleENvbnN0YW50fSBmcm9tICcuLi9UZXhDb25zdGFudHMuanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuXG5cbi8qKlxuICogSGFuZGxlIGdyZWVrIG1hdGhjaGFyIGFzIG1pIGluIG5vcm1hbCB2YXJpYW50LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCB0ZXggcGFyc2VyLlxuICogQHBhcmFtIHtTeW1ib2x9IG1jaGFyIFRoZSBwYXJzZWQgc3ltYm9sLlxuICovXG5mdW5jdGlvbiBtYXRoY2hhcjBtaU5vcm1hbChwYXJzZXI6IFRleFBhcnNlciwgbWNoYXI6IFN5bWJvbCkge1xuICBjb25zdCBkZWYgPSBtY2hhci5hdHRyaWJ1dGVzIHx8IHt9O1xuICBkZWYubWF0aHZhcmlhbnQgPSBUZXhDb25zdGFudC5WYXJpYW50Lk5PUk1BTDtcbiAgY29uc3Qgbm9kZSA9IHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ21pJywgZGVmLCBtY2hhci5jaGFyKTtcbiAgcGFyc2VyLlB1c2gobm9kZSk7XG59XG5cbi8qKlxuICogVXByaWdodCBHcmVlayBjaGFyYWN0ZXJzLlxuICovXG5uZXcgQ2hhcmFjdGVyTWFwKCd1cGdyZWVrJywgbWF0aGNoYXIwbWlOb3JtYWwsIHtcbiAgdXBhbHBoYTogICAgICAgICdcXHUwM0IxJyxcbiAgdXBiZXRhOiAgICAgICAgICdcXHUwM0IyJyxcbiAgdXBnYW1tYTogICAgICAgICdcXHUwM0IzJyxcbiAgdXBkZWx0YTogICAgICAgICdcXHUwM0I0JyxcbiAgdXBlcHNpbG9uOiAgICAgICdcXHUwM0Y1JyxcbiAgdXB6ZXRhOiAgICAgICAgICdcXHUwM0I2JyxcbiAgdXBldGE6ICAgICAgICAgICdcXHUwM0I3JyxcbiAgdXB0aGV0YTogICAgICAgICdcXHUwM0I4JyxcbiAgdXBpb3RhOiAgICAgICAgICdcXHUwM0I5JyxcbiAgdXBrYXBwYTogICAgICAgICdcXHUwM0JBJyxcbiAgdXBsYW1iZGE6ICAgICAgICdcXHUwM0JCJyxcbiAgdXBtdTogICAgICAgICAgICdcXHUwM0JDJyxcbiAgdXBudTogICAgICAgICAgICdcXHUwM0JEJyxcbiAgdXB4aTogICAgICAgICAgICdcXHUwM0JFJyxcbiAgdXBvbWljcm9uOiAgICAgICdcXHUwM0JGJyxcbiAgdXBwaTogICAgICAgICAgICdcXHUwM0MwJyxcbiAgdXByaG86ICAgICAgICAgICdcXHUwM0MxJyxcbiAgdXBzaWdtYTogICAgICAgICdcXHUwM0MzJyxcbiAgdXB0YXU6ICAgICAgICAgICdcXHUwM0M0JyxcbiAgdXB1cHNpbG9uOiAgICAgICdcXHUwM0M1JyxcbiAgdXBwaGk6ICAgICAgICAgICdcXHUwM0Q1JyxcbiAgdXBjaGk6ICAgICAgICAgICdcXHUwM0M3JyxcbiAgdXBwc2k6ICAgICAgICAgICdcXHUwM0M4JyxcbiAgdXBvbWVnYTogICAgICAgICdcXHUwM0M5JyxcbiAgdXB2YXJlcHNpbG9uOiAgICdcXHUwM0I1JyxcbiAgdXB2YXJ0aGV0YTogICAgICdcXHUwM0QxJyxcbiAgdXB2YXJwaTogICAgICAgICdcXHUwM0Q2JyxcbiAgdXB2YXJyaG86ICAgICAgICdcXHUwM0YxJyxcbiAgdXB2YXJzaWdtYTogICAgICdcXHUwM0MyJyxcbiAgdXB2YXJwaGk6ICAgICAgICdcXHUwM0M2JyxcblxuICBVcGdhbW1hOiAgICAgICAgJ1xcdTAzOTMnLFxuICBVcGRlbHRhOiAgICAgICAgJ1xcdTAzOTQnLFxuICBVcHRoZXRhOiAgICAgICAgJ1xcdTAzOTgnLFxuICBVcGxhbWJkYTogICAgICAgJ1xcdTAzOUInLFxuICBVcHhpOiAgICAgICAgICAgJ1xcdTAzOUUnLFxuICBVcHBpOiAgICAgICAgICAgJ1xcdTAzQTAnLFxuICBVcHNpZ21hOiAgICAgICAgJ1xcdTAzQTMnLFxuICBVcHVwc2lsb246ICAgICAgJ1xcdTAzQTUnLFxuICBVcHBoaTogICAgICAgICAgJ1xcdTAzQTYnLFxuICBVcHBzaTogICAgICAgICAgJ1xcdTAzQTgnLFxuICBVcG9tZWdhOiAgICAgICAgJ1xcdTAzQTknXG59KTtcblxuXG5leHBvcnQgY29uc3QgVXBncmVla0NvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ3VwZ3JlZWsnLCB7XG4gICAgaGFuZGxlcjoge21hY3JvOiBbJ3VwZ3JlZWsnXX0sXG4gIH1cbik7XG5cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIHVuaWNvZGUgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtFbnZMaXN0fSBmcm9tICcuLi9TdGFja0l0ZW0uanMnO1xuaW1wb3J0IFRleFBhcnNlciBmcm9tICcuLi9UZXhQYXJzZXIuanMnO1xuaW1wb3J0IFRleEVycm9yIGZyb20gJy4uL1RleEVycm9yLmpzJztcbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBQYXJzZVV0aWwgZnJvbSAnLi4vUGFyc2VVdGlsLmpzJztcbmltcG9ydCBOb2RlVXRpbCBmcm9tICcuLi9Ob2RlVXRpbC5qcyc7XG5pbXBvcnQge251bWVyaWN9IGZyb20gJy4uLy4uLy4uL3V0aWwvRW50aXRpZXMuanMnO1xuXG4vLyBOYW1lc3BhY2VcbmV4cG9ydCBsZXQgVW5pY29kZU1ldGhvZHM6IFJlY29yZDxzdHJpbmcsIFBhcnNlTWV0aG9kPiA9IHt9O1xuXG5sZXQgVW5pY29kZUNhY2hlOiB7W2tleTogbnVtYmVyXTogW251bWJlciwgbnVtYmVyLCBzdHJpbmcsIG51bWJlcl19ID0ge307XG5cbi8qKlxuICogUGFyc2UgZnVuY3Rpb24gZm9yIHVuaWNvZGUgbWFjcm8uXG4gKiBAcGFyYW0ge1RleFBhcnNlcn0gcGFyc2VyIFRoZSBjdXJyZW50IHRleCBwYXJzZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBUaGUgbmFtZSBvZiB0aGUgbWFjcm8uXG4gKi9cblVuaWNvZGVNZXRob2RzLlVuaWNvZGUgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGxldCBIRCA9IHBhcnNlci5HZXRCcmFja2V0cyhuYW1lKTtcbiAgbGV0IEhEc3BsaXQgPSBudWxsO1xuICBsZXQgZm9udCA9IG51bGw7XG4gIGlmIChIRCkge1xuICAgIGlmIChIRC5yZXBsYWNlKC8gL2csICcnKS5cbiAgICAgICAgbWF0Y2goL14oXFxkKyhcXC5cXGQqKT98XFwuXFxkKyksKFxcZCsoXFwuXFxkKik/fFxcLlxcZCspJC8pKSB7XG4gICAgICBIRHNwbGl0ID0gSEQucmVwbGFjZSgvIC9nLCAnJykuc3BsaXQoLywvKTtcbiAgICAgIGZvbnQgPSBwYXJzZXIuR2V0QnJhY2tldHMobmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvbnQgPSBIRDtcbiAgICB9XG4gIH1cbiAgbGV0IG4gPSBQYXJzZVV0aWwudHJpbVNwYWNlcyhwYXJzZXIuR2V0QXJndW1lbnQobmFtZSkpLnJlcGxhY2UoL14weC8sICd4Jyk7XG4gIGlmICghbi5tYXRjaCgvXih4WzAtOUEtRmEtZl0rfFswLTldKykkLykpIHtcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ0JhZFVuaWNvZGUnLCAnQXJndW1lbnQgdG8gXFxcXHVuaWNvZGUgbXVzdCBiZSBhIG51bWJlcicpO1xuICB9XG4gIGxldCBOID0gcGFyc2VJbnQobi5tYXRjaCgvXngvKSA/ICcwJyArIG4gOiBuKTtcbiAgaWYgKCFVbmljb2RlQ2FjaGVbTl0pIHtcbiAgICBVbmljb2RlQ2FjaGVbTl0gPSBbODAwLCAyMDAsIGZvbnQsIE5dO1xuICB9IGVsc2UgaWYgKCFmb250KSB7XG4gICAgZm9udCA9IFVuaWNvZGVDYWNoZVtOXVsyXTtcbiAgfVxuICBpZiAoSERzcGxpdCkge1xuICAgIFVuaWNvZGVDYWNoZVtOXVswXSA9IE1hdGguZmxvb3IocGFyc2VGbG9hdChIRHNwbGl0WzBdKSAqIDEwMDApO1xuICAgIFVuaWNvZGVDYWNoZVtOXVsxXSA9IE1hdGguZmxvb3IocGFyc2VGbG9hdChIRHNwbGl0WzFdKSAqIDEwMDApO1xuICB9XG4gIGxldCB2YXJpYW50ID0gcGFyc2VyLnN0YWNrLmVudi5mb250IGFzIHN0cmluZztcbiAgbGV0IGRlZjogRW52TGlzdCA9IHt9O1xuICBpZiAoZm9udCkge1xuICAgIFVuaWNvZGVDYWNoZVtOXVsyXSA9IGRlZi5mb250ZmFtaWx5ID0gZm9udC5yZXBsYWNlKC8nL2csICdcXCcnKTtcbiAgICBpZiAodmFyaWFudCkge1xuICAgICAgaWYgKHZhcmlhbnQubWF0Y2goL2JvbGQvKSkge1xuICAgICAgICBkZWYuZm9udHdlaWdodCA9ICdib2xkJztcbiAgICAgIH1cbiAgICAgIGlmICh2YXJpYW50Lm1hdGNoKC9pdGFsaWN8LW1hdGhpdC8pKSB7XG4gICAgICAgIGRlZi5mb250c3R5bGUgPSAnaXRhbGljJztcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAodmFyaWFudCkge1xuICAgIGRlZi5tYXRodmFyaWFudCA9IHZhcmlhbnQ7XG4gIH1cbiAgbGV0IG5vZGUgPSBwYXJzZXIuY3JlYXRlKCd0b2tlbicsICdtdGV4dCcsIGRlZiwgbnVtZXJpYyhuKSk7XG4gIE5vZGVVdGlsLnNldFByb3BlcnR5KG5vZGUsICd1bmljb2RlJywgdHJ1ZSk7XG4gIHBhcnNlci5QdXNoKG5vZGUpO1xufTtcblxuXG5uZXcgQ29tbWFuZE1hcCgndW5pY29kZScsIHt1bmljb2RlOiAnVW5pY29kZSd9LCBVbmljb2RlTWV0aG9kcyk7XG5cblxuZXhwb3J0IGNvbnN0IFVuaWNvZGVDb25maWd1cmF0aW9uID0gQ29uZmlndXJhdGlvbi5jcmVhdGUoXG4gICd1bmljb2RlJywge2hhbmRsZXI6IHttYWNybzogWyd1bmljb2RlJ119fVxuKTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3IENvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIHZlcmIgcGFja2FnZS5cbiAqXG4gKiBAYXV0aG9yIHYuc29yZ2VAbWF0aGpheC5vcmcgKFZvbGtlciBTb3JnZSlcbiAqL1xuXG5pbXBvcnQge0NvbmZpZ3VyYXRpb259IGZyb20gJy4uL0NvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0IHtUZXhDb25zdGFudH0gZnJvbSAnLi4vVGV4Q29uc3RhbnRzLmpzJztcbmltcG9ydCBUZXhQYXJzZXIgZnJvbSAnLi4vVGV4UGFyc2VyLmpzJztcbmltcG9ydCB7Q29tbWFuZE1hcH0gZnJvbSAnLi4vU3ltYm9sTWFwLmpzJztcbmltcG9ydCB7UGFyc2VNZXRob2R9IGZyb20gJy4uL1R5cGVzLmpzJztcbmltcG9ydCBUZXhFcnJvciBmcm9tICcuLi9UZXhFcnJvci5qcyc7XG5cblxuLy8gTmFtZXNwYWNlXG5leHBvcnQgbGV0IFZlcmJNZXRob2RzOiBSZWNvcmQ8c3RyaW5nLCBQYXJzZU1ldGhvZD4gPSB7fTtcblxuXG4vKipcbiAqIEltcGxlbWVudHMgdGhlIHZlcmJhdGltIG5vdGF0aW9uIFxcdmVyYnwuLi58LlxuICogQHBhcmFtIHtUZXhQYXJzZXJ9IHBhcnNlciBUaGUgY3VycmVudCB0ZXggcGFyc2VyLlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIGNhbGxpbmcgbWFjcm8uXG4gKi9cblZlcmJNZXRob2RzLlZlcmIgPSBmdW5jdGlvbihwYXJzZXI6IFRleFBhcnNlciwgbmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGMgPSBwYXJzZXIuR2V0TmV4dCgpO1xuICBjb25zdCBzdGFydCA9ICsrcGFyc2VyLmk7XG4gIGlmIChjID09PSAnJyApIHtcbiAgICB0aHJvdyBuZXcgVGV4RXJyb3IoJ01pc3NpbmdBcmdGb3InLCAnTWlzc2luZyBhcmd1bWVudCBmb3IgJTEnLCBuYW1lKTtcbiAgfVxuICB3aGlsZSAocGFyc2VyLmkgPCBwYXJzZXIuc3RyaW5nLmxlbmd0aCAmJlxuICAgICAgICAgcGFyc2VyLnN0cmluZy5jaGFyQXQocGFyc2VyLmkpICE9PSBjKSB7XG4gICAgcGFyc2VyLmkrKztcbiAgfVxuICBpZiAocGFyc2VyLmkgPT09IHBhcnNlci5zdHJpbmcubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFRleEVycm9yKCdOb0Nsb3NpbmdEZWxpbScsXG4gICAgICAgICAgICAgICAgICAgICAgICdDYW5cXCd0IGZpbmQgY2xvc2luZyBkZWxpbWl0ZXIgZm9yICUxJyxcbiAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmN1cnJlbnRDUyk7XG4gIH1cbiAgY29uc3QgdGV4dCA9IHBhcnNlci5zdHJpbmcuc2xpY2Uoc3RhcnQsIHBhcnNlci5pKS5yZXBsYWNlKC8gL2csICdcXHUwMEEwJyk7XG4gIHBhcnNlci5pKys7XG4gIHBhcnNlci5QdXNoKHBhcnNlci5jcmVhdGUoJ3Rva2VuJywgJ210ZXh0JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWF0aHZhcmlhbnQ6IFRleENvbnN0YW50LlZhcmlhbnQuTU9OT1NQQUNFfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0KSk7XG59O1xuXG5cbm5ldyBDb21tYW5kTWFwKCd2ZXJiJywge3ZlcmI6ICdWZXJiJ30sIFZlcmJNZXRob2RzKTtcblxuXG5leHBvcnQgY29uc3QgVmVyYkNvbmZpZ3VyYXRpb24gPSBDb25maWd1cmF0aW9uLmNyZWF0ZShcbiAgJ3ZlcmInLCB7aGFuZGxlcjoge21hY3JvOiBbJ3ZlcmInXX19XG4pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBMb2FkcyBhbGwgdGhlIFRlWCBleHRlbnNpb25zXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQgJy4vYmFzZS9CYXNlQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgJy4vYWN0aW9uL0FjdGlvbkNvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0ICcuL2Ftcy9BbXNDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9hbXNjZC9BbXNDZENvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0ICcuL2Jib3gvQmJveENvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0ICcuL2JvbGRzeW1ib2wvQm9sZHN5bWJvbENvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0ICcuL2JyYWtldC9CcmFrZXRDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9idXNzcHJvb2ZzL0J1c3Nwcm9vZnNDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9jYW5jZWwvQ2FuY2VsQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgJy4vY2FzZXMvQ2FzZXNDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9jZW50ZXJub3QvQ2VudGVybm90Q29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgJy4vY29sb3IvQ29sb3JDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9jb2xvcnYyL0NvbG9yVjJDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9jb2xvcnRibC9Db2xvcnRibENvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0ICcuL2NvbmZpZ21hY3Jvcy9Db25maWdNYWNyb3NDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9lbXBoZXEvRW1waGVxQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgJy4vZW5jbG9zZS9FbmNsb3NlQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgJy4vZXh0cGZlaWwvRXh0cGZlaWxDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9nZW5zeW1iL0dlbnN5bWJDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9odG1sL0h0bWxDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9tYXRodG9vbHMvTWF0aHRvb2xzQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgJy4vbWhjaGVtL01oY2hlbUNvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0ICcuL25ld2NvbW1hbmQvTmV3Y29tbWFuZENvbmZpZ3VyYXRpb24uanMnO1xuaW1wb3J0ICcuL25vZXJyb3JzL05vRXJyb3JzQ29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgJy4vbm91bmRlZmluZWQvTm9VbmRlZmluZWRDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9waHlzaWNzL1BoeXNpY3NDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi9zZXRvcHRpb25zL1NldE9wdGlvbnNDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi90YWdmb3JtYXQvVGFnRm9ybWF0Q29uZmlndXJhdGlvbi5qcyc7XG5pbXBvcnQgJy4vdGV4dGNvbXAvVGV4dGNvbXBDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi90ZXh0bWFjcm9zL1RleHRNYWNyb3NDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi91cGdyZWVrL1VwZ3JlZWtDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi91bmljb2RlL1VuaWNvZGVDb25maWd1cmF0aW9uLmpzJztcbmltcG9ydCAnLi92ZXJiL1ZlcmJDb25maWd1cmF0aW9uLmpzJztcblxuZGVjbGFyZSBjb25zdCBNYXRoSmF4OiBhbnk7XG5pZiAodHlwZW9mIE1hdGhKYXggIT09ICd1bmRlZmluZWQnICYmIE1hdGhKYXgubG9hZGVyKSB7XG4gIE1hdGhKYXgubG9hZGVyLnByZUxvYWQoXG4gICAgJ1t0ZXhdL2FjdGlvbicsXG4gICAgJ1t0ZXhdL2FtcycsXG4gICAgJ1t0ZXhdL2Ftc2NkJyxcbiAgICAnW3RleF0vYmJveCcsXG4gICAgJ1t0ZXhdL2JvbGRzeW1ib2wnLFxuICAgICdbdGV4XS9icmFrZXQnLFxuICAgICdbdGV4XS9idXNzcHJvb2ZzJyxcbiAgICAnW3RleF0vY2FuY2VsJyxcbiAgICAnW3RleF0vY2FzZXMnLFxuICAgICdbdGV4XS9jZW50ZXJub3QnLFxuICAgICdbdGV4XS9jb2xvcicsXG4gICAgJ1t0ZXhdL2NvbG9ydjInLFxuICAgICdbdGV4XS9jb2xvcnRibCcsXG4gICAgJ1t0ZXhdL2VtcGhlcScsXG4gICAgJ1t0ZXhdL2VuY2xvc2UnLFxuICAgICdbdGV4XS9leHRwZmVpbCcsXG4gICAgJ1t0ZXhdL2dlbnN5bWInLFxuICAgICdbdGV4XS9odG1sJyxcbiAgICAnW3RleF0vbWF0aHRvb2xzJyxcbiAgICAnW3RleF0vbWhjaGVtJyxcbiAgICAnW3RleF0vbmV3Y29tbWFuZCcsXG4gICAgJ1t0ZXhdL25vZXJyb3JzJyxcbiAgICAnW3RleF0vbm91bmRlZmluZWQnLFxuICAgICdbdGV4XS9waHlzaWNzJyxcbiAgICAnW3RleF0vdXBncmVlaycsXG4gICAgJ1t0ZXhdL3VuaWNvZGUnLFxuICAgICdbdGV4XS92ZXJiJyxcbiAgICAnW3RleF0vY29uZmlnbWFjcm9zJyxcbiAgICAnW3RleF0vdGFnZm9ybWF0JyxcbiAgICAnW3RleF0vdGV4dGNvbXAnLFxuICAgICdbdGV4XS90ZXh0bWFjcm9zJyxcbiAgICAnW3RleF0vc2V0b3B0aW9ucycsXG4gICk7XG59XG5cbmV4cG9ydCBjb25zdCBBbGxQYWNrYWdlczogc3RyaW5nW10gPSBbXG4gICdiYXNlJyxcbiAgJ2FjdGlvbicsXG4gICdhbXMnLFxuICAnYW1zY2QnLFxuICAnYmJveCcsXG4gICdib2xkc3ltYm9sJyxcbiAgJ2JyYWtldCcsXG4gICdidXNzcHJvb2ZzJyxcbiAgJ2NhbmNlbCcsXG4gICdjYXNlcycsXG4gICdjZW50ZXJub3QnLFxuICAnY29sb3InLFxuICAnY29sb3J0YmwnLFxuICAnZW1waGVxJyxcbiAgJ2VuY2xvc2UnLFxuICAnZXh0cGZlaWwnLFxuICAnZ2Vuc3ltYicsXG4gICdodG1sJyxcbiAgJ21hdGh0b29scycsXG4gICdtaGNoZW0nLFxuICAnbmV3Y29tbWFuZCcsXG4gICdub2Vycm9ycycsXG4gICdub3VuZGVmaW5lZCcsXG4gICd1cGdyZWVrJyxcbiAgJ3VuaWNvZGUnLFxuICAndmVyYicsXG4gICdjb25maWdtYWNyb3MnLFxuICAndGFnZm9ybWF0JyxcbiAgJ3RleHRjb21wJyxcbiAgJ3RleHRtYWNyb3MnXG5dO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgYW5kIGFic3RyYWN0IGNsYXNzIGZvciB0aGUgT3V0cHV0SmF4XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge3VzZXJPcHRpb25zLCBkZWZhdWx0T3B0aW9ucywgT3B0aW9uTGlzdH0gZnJvbSAnLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7TWF0aERvY3VtZW50fSBmcm9tICcuL01hdGhEb2N1bWVudC5qcyc7XG5pbXBvcnQge01hdGhJdGVtfSBmcm9tICcuL01hdGhJdGVtLmpzJztcbmltcG9ydCB7RE9NQWRhcHRvcn0gZnJvbSAnLi4vY29yZS9ET01BZGFwdG9yLmpzJztcbmltcG9ydCB7RnVuY3Rpb25MaXN0fSBmcm9tICcuLi91dGlsL0Z1bmN0aW9uTGlzdC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBPdXRwdXRKYXggaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dEpheDxOLCBULCBEPiB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIG91dHB1dCBqYXggY2xhc3NcbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wdGlvbnMgZm9yIHRoZSBpbnN0YW5jZVxuICAgKi9cbiAgb3B0aW9uczogT3B0aW9uTGlzdDtcblxuICAvKipcbiAgICogTGlzdHMgb2YgcG9zdC1maWx0ZXJzIHRvIGNhbGwgYWZ0ZXIgdHlwZXNldHRpbmcgdGhlIG1hdGhcbiAgICovXG4gIHBvc3RGaWx0ZXJzOiBGdW5jdGlvbkxpc3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBET00gYWRhcHRvciBmb3IgbWFuYWdpbmcgSFRNTCBlbGVtZW50c1xuICAgKi9cbiAgYWRhcHRvcjogRE9NQWRhcHRvcjxOLCBULCBEPjtcblxuICAvKipcbiAgICogQHBhcmFtIHtET01BZGFwdG9yfSBhZGFwdG9yIFRoZSBhZGFwdG9yIHRvIHVzZSBpbiB0aGlzIGpheFxuICAgKi9cbiAgc2V0QWRhcHRvcihhZGFwdG9yOiBET01BZGFwdG9yPE4sIFQsIEQ+KTogdm9pZDtcblxuICAvKipcbiAgICogRG8gYW55IGluaXRpYWxpemF0aW9uIHRoYXQgZGVwZW5kcyBvbiB0aGUgZG9jdW1lbnQgYmVpbmcgc2V0IHVwXG4gICAqL1xuICBpbml0aWFsaXplKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFJlc2V0IGFueSBuZWVkZWQgZmVhdHVyZXMgb2YgdGhlIG91dHB1dCBqYXhcbiAgICpcbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyAgIFRoZSBhcmd1bWVudHMgbmVlZGVkIGJ5IHRoZSByZXNldCBvcGVyYXRpb25cbiAgICovXG4gIHJlc2V0KC4uLmFyZ3M6IGFueVtdKTogdm9pZDtcblxuICAvKipcbiAgICogVHlwc2V0IGEgZ2l2ZW4gTWF0aEl0ZW1cbiAgICpcbiAgICogQHBhcmFtIHtNYXRoSXRlbX0gbWF0aCAgICAgICAgICBUaGUgTWF0aEl0ZW0gdG8gYmUgdHlwZXNldFxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgIFRoZSBNYXRoRG9jdW1lbnQgaW4gd2hpY2ggdGhlIHR5cGVzZXR0aW5nIHNob3VsZCBvY2N1clxuICAgKiBAcmV0dXJuIHtOfSAgICAgICAgICAgICAgICAgICAgIFRoZSBET00gdHJlZSBmb3IgdGhlIHR5cGVzZXQgbWF0aFxuICAgKi9cbiAgdHlwZXNldChtYXRoOiBNYXRoSXRlbTxOLCBULCBEPiwgZG9jdW1lbnQ/OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pOiBOO1xuXG4gIC8qKlxuICAgKiBIYW5kbGUgYW4gZXNjYXBlZCBjaGFyYWN0ZXIgKGUuZy4sIFxcJCBmcm9tIHRoZSBUZVggaW5wdXQgamF4IHByZXZlbnRpbmcgaXQgZnJvbSBiZWluZyBhIGRlbGltaXRlcilcbiAgICpcbiAgICogQHBhcmFtIHtNYXRoSXRlbX0gbWF0aCAgICAgICAgICBUaGUgTWF0aEl0ZW0gdG8gYmUgZXNjYXBlZFxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgIFRoZSBNYXRoRG9jdW1lbnQgaW4gd2hpY2ggdGhlIG1hdGggb2NjdXJzXG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICAgICAgICAgICAgVGhlIERPTSB0cmVlIGZvciB0aGUgZXNjYXBlZCBpdGVtXG4gICAqL1xuICBlc2NhcGVkKG1hdGg6IE1hdGhJdGVtPE4sIFQsIEQ+LCBkb2N1bWVudD86IE1hdGhEb2N1bWVudDxOLCBULCBEPik6IE47XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbWV0cmljIGluZm9ybWF0aW9uIGZvciBhbGwgbWF0aCBpbiB0aGUgZ2l2ZW4gZG9jdW1lbnRcbiAgICpcbiAgICogQHBhcmFtIHtNYXRoRG9jdW1lbnR9IGRvY3VtZW50ICBUaGUgTWF0aERvY3VtZW50IGJlaW5nIHByb2Nlc3NlZFxuICAgKi9cbiAgZ2V0TWV0cmljcyhkb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KTogdm9pZDtcblxuICAvKipcbiAgICogUHJvZHVjZSB0aGUgc3R5bGVzaGVldCBuZWVkZWQgZm9yIHRoaXMgb3V0cHV0IGpheFxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgIFRoZSBNYXRoRG9jdW1lbnQgYmVpbmcgcHJvY2Vzc2VkXG4gICAqL1xuICBzdHlsZVNoZWV0KGRvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pOiBOO1xuXG4gIC8qKlxuICAgKiBQcm9kdWNlIGFueSBwYWdlLXNwZWNpZmljIGVsZW1lbnRzIG5lZWRlZCBmb3IgdGhpcyBvdXRwdXQgamF4XG4gICAqXG4gICAqIEBwYXJhbSB7TWF0aERvY3VtZW50fSBkb2N1bWVudCAgVGhlIE1hdGhEb2N1bWVudCBiZWluZyBwcm9jZXNzZWRcbiAgICovXG4gIHBhZ2VFbGVtZW50cyhkb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KTogTjtcbn1cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgT3V0cHV0SmF4IGFic3RyYWN0IGNsYXNzXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RPdXRwdXRKYXg8TiwgVCwgRD4gaW1wbGVtZW50cyBPdXRwdXRKYXg8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3IgdGhlIG91dHB1dCBqYXhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgTkFNRTogc3RyaW5nID0gJ2dlbmVyaWMnO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgb3V0cHV0IGpheFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBPUFRJT05TOiBPcHRpb25MaXN0ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgb3B0aW9ucyBzdXBwbGllZCB0byB0aGUgb3V0cHV0IGpheFxuICAgKi9cbiAgcHVibGljIG9wdGlvbnM6IE9wdGlvbkxpc3Q7XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdG8gcnVuIGFmdGVyIHRoZSBvdXRwdXQgaXMgcHJvY2Vzc2VkXG4gICAqL1xuICBwdWJsaWMgcG9zdEZpbHRlcnM6IEZ1bmN0aW9uTGlzdDtcblxuICAvKipcbiAgICogVGhlIE1hdGhEb2N1bWVudCdzIERPTUFkYXB0b3JcbiAgICovXG4gIHB1YmxpYyBhZGFwdG9yOiBET01BZGFwdG9yPE4sIFQsIEQ+ID0gbnVsbDsgIC8vIHNldCBieSB0aGUgaGFuZGxlclxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgIFRoZSBvcHRpb25zIGZvciB0aGlzIGluc3RhbmNlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25MaXN0ID0ge30pIHtcbiAgICBsZXQgQ0xBU1MgPSB0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBBYnN0cmFjdE91dHB1dEpheDtcbiAgICB0aGlzLm9wdGlvbnMgPSB1c2VyT3B0aW9ucyhkZWZhdWx0T3B0aW9ucyh7fSwgQ0xBU1MuT1BUSU9OUyksIG9wdGlvbnMpO1xuICAgIHRoaXMucG9zdEZpbHRlcnMgPSBuZXcgRnVuY3Rpb25MaXN0KCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIG5hbWUgZm9yIHRoaXMgb3V0cHV0IGpheCBjbGFzc1xuICAgKi9cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBBYnN0cmFjdE91dHB1dEpheCkuTkFNRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRBZGFwdG9yKGFkYXB0b3I6IERPTUFkYXB0b3I8TiwgVCwgRD4pIHtcbiAgICB0aGlzLmFkYXB0b3IgPSBhZGFwdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGluaXRpYWxpemUoKSB7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcmVzZXQoLi4uX2FyZ3M6IGFueVtdKSB7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdHlwZXNldChtYXRoOiBNYXRoSXRlbTxOLCBULCBEPiwgZG9jdW1lbnQ/OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pOiBOO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBlc2NhcGVkKG1hdGg6IE1hdGhJdGVtPE4sIFQsIEQ+LCBkb2N1bWVudD86IE1hdGhEb2N1bWVudDxOLCBULCBEPik6IE47XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldE1ldHJpY3MoX2RvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pIHtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdHlsZVNoZWV0KF9kb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgcmV0dXJuIG51bGwgYXMgTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBwYWdlRWxlbWVudHMoX2RvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pIHtcbiAgICByZXR1cm4gbnVsbCBhcyBOO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGUgYSBzZXQgb2YgZmlsdGVycywgcGFzc2luZyB0aGVtIHRoZSBNYXRoSXRlbSBhbmQgYW55IG5lZWRlZCBkYXRhLFxuICAgKiAgYW5kIHJldHVybiB0aGUgKHBvc3NpYmx5IG1vZGlmaWVkKSBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb25MaXN0fSBmaWx0ZXJzICAgVGhlIGxpc3Qgb2YgZnVuY3Rpb25zIHRvIGJlIHBlcmZvcm1lZFxuICAgKiBAcGFyYW0ge01hdGhJdGVtfSBtYXRoICAgICAgICAgIFRoZSBtYXRoIGl0ZW0gdGhhdCBpcyBiZWluZyBwcm9jZXNzZWRcbiAgICogQHBhcmFtIHtNYXRoRG9jdW1lbnR9IGRvY3VtZW50ICBUaGUgbWF0aCBkb2N1bWVudCBjb250YWlpbmcgdGhlIG1hdGggaXRlbVxuICAgKiBAcGFyYW0ge2FueX0gZGF0YSAgICAgICAgICAgICAgIFdoYXRldmVyIG90aGVyIGRhdGEgaXMgbmVlZGVkXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgICAgICAgICAgICAgVGhlIChwb3NzaWJseSBtb2RpZmllZCkgZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGV4ZWN1dGVGaWx0ZXJzKFxuICAgIGZpbHRlcnM6IEZ1bmN0aW9uTGlzdCwgbWF0aDogTWF0aEl0ZW08TiwgVCwgRD4sXG4gICAgZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPiwgZGF0YTogYW55XG4gICk6IGFueSB7XG4gICAgbGV0IGFyZ3MgPSB7bWF0aCwgZG9jdW1lbnQsIGRhdGF9O1xuICAgIGZpbHRlcnMuZXhlY3V0ZShhcmdzKTtcbiAgICByZXR1cm4gYXJncy5kYXRhO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyBhIGxpdGUgQ3NzU3R5bGVEZWNsYXJhdGlvbiByZXBsYWNlbWVudFxuICogICAgICAgICAgICAgICAgKHZlcnkgbGltaXRlZCBpbiBzY29wZSlcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbi8qKlxuICogQW4gb2JqZWN0IGNvbnRpbmluZyBuYW1lOiB2YWx1ZSBwYWlyc1xuICovXG5leHBvcnQgdHlwZSBTdHlsZUxpc3QgPSB7W25hbWU6IHN0cmluZ106IHN0cmluZ307XG5cbi8qKlxuICogRGF0YSBmb3IgaG93IHRvIG1hcCBhIGNvbWJpbmVkIHN0eWxlIChsaWtlIGJvcmRlcikgdG8gaXRzIGNoaWxkcmVuXG4gKi9cbmV4cG9ydCB0eXBlIGNvbm5lY3Rpb24gPSB7XG4gIGNoaWxkcmVuOiBzdHJpbmdbXSwgICAgICAgICAgICAgICAvLyBzdWZmaXggbmFtZXMgdG8gYWRkIHRvIHRoZSBiYXNlIG5hbWVcbiAgc3BsaXQ6IChuYW1lOiBzdHJpbmcpID0+IHZvaWQsICAgIC8vIGZ1bmN0aW9uIHRvIHNwbGl0IHRoZSB2YWx1ZSBmb3IgdGhlIGNoaWxkcmVuXG4gIGNvbWJpbmU6IChuYW1lOiBzdHJpbmcpID0+IHZvaWQgICAvLyBmdW5jdGlvbiB0byBjb21iaW5lIHRoZSBjaGlsZCB2YWx1ZXMgd2hlbiBvbmUgY2hhbmdlc1xufTtcblxuLyoqXG4gKiBBIGNvbGxlY3Rpb24gb2YgY29ubmVjdGlvbnNcbiAqL1xuZXhwb3J0IHR5cGUgY29ubmVjdGlvbnMgPSB7W25hbWU6IHN0cmluZ106IGNvbm5lY3Rpb259O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBTb21lIGNvbW1vbiBjaGlsZHJlbiBhcnJheXNcbiAqL1xuY29uc3QgVFJCTCA9IFsndG9wJywgJ3JpZ2h0JywgJ2JvdHRvbScsICdsZWZ0J107XG5jb25zdCBXU0MgPSBbJ3dpZHRoJywgJ3N0eWxlJywgJ2NvbG9yJ107XG5cbi8qKlxuICogU3BsaXQgYSBzdHlsZSBhdCBzcGFjZXMgKHRha2luZyBxdW90YXRpb24gbWFya3MgYW5kIGNvbW1hcyBpbnRvIGFjY291bnQpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRleHQgIFRoZSBjb21iaW5lZCBzdHlsZXMgdG8gYmUgc3BsaXQgYXQgc3BhY2VzXG4gKiBAcmV0dXJuIHtzdHJpbmdbXX0gICAgQXJyYXkgb2YgcGFydHMgb2YgdGhlIHN0eWxlIChzZXBhcmF0ZWQgYnkgc3BhY2VzKVxuICovXG5mdW5jdGlvbiBzcGxpdFNwYWNlcyh0ZXh0OiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHBhcnRzID0gdGV4dC5zcGxpdCgvKCg/OidbXiddKid8XCJbXlwiXSpcInwsW1xcc1xcbl18W15cXHNcXG5dKSopL2cpO1xuICBjb25zdCBzcGxpdCA9IFtdIGFzIHN0cmluZ1tdO1xuICB3aGlsZSAocGFydHMubGVuZ3RoID4gMSkge1xuICAgIHBhcnRzLnNoaWZ0KCk7XG4gICAgc3BsaXQucHVzaChwYXJ0cy5zaGlmdCgpKTtcbiAgfVxuICByZXR1cm4gc3BsaXQ7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFNwbGl0IGEgdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0IGdyb3VwIGludG8gaXRzIHBhcnRzXG4gKiBGb3JtYXQ6XG4gKiAgICB4ICAgICAgICAgICBhbGwgYXJlIHRoZSBzYW1lIHZhbHVlXG4gKiAgICB4IHkgICAgICAgICBzYW1lIGFzIHggeSB4IHlcbiAqICAgIHggeSB6ICAgICAgIHNhbWUgYXMgeCB5IHogeVxuICogICAgeCB5IHogdyAgICAgZWFjaCBzcGVjaWZpZWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBzdHlsZSB0byBiZSBwcm9jZXNzZWRcbiAqL1xuXG5mdW5jdGlvbiBzcGxpdFRSQkwobmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHBhcnRzID0gc3BsaXRTcGFjZXModGhpcy5zdHlsZXNbbmFtZV0pO1xuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgnJyk7XG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMSkge1xuICAgIHBhcnRzLnB1c2gocGFydHNbMF0pO1xuICB9XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDIpIHtcbiAgICBwYXJ0cy5wdXNoKHBhcnRzWzBdKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAzKSB7XG4gICAgcGFydHMucHVzaChwYXJ0c1sxXSk7XG4gIH1cbiAgZm9yIChjb25zdCBjaGlsZCBvZiBTdHlsZXMuY29ubmVjdFtuYW1lXS5jaGlsZHJlbikge1xuICAgIHRoaXMuc2V0U3R5bGUodGhpcy5jaGlsZE5hbWUobmFtZSwgY2hpbGQpLCBwYXJ0cy5zaGlmdCgpKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbWJpbmUgdG9wLXJpZ2h0LWJvdHRvbS1sZWZ0IGludG8gb25lIGVudHJ5XG4gKiAocmVtb3ZpbmcgdW5uZWVkZWQgdmFsdWVzKVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIHN0eWxlIHRvIGJlIHByb2Nlc3NlZFxuICovXG5mdW5jdGlvbiBjb21iaW5lVFJCTChuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgY2hpbGRyZW4gPSBTdHlsZXMuY29ubmVjdFtuYW1lXS5jaGlsZHJlbjtcbiAgY29uc3QgcGFydHMgPSBbXSBhcyBzdHJpbmdbXTtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgIGNvbnN0IHBhcnQgPSB0aGlzLnN0eWxlc1tuYW1lICsgJy0nICsgY2hpbGRdO1xuICAgIGlmICghcGFydCkge1xuICAgICAgZGVsZXRlIHRoaXMuc3R5bGVzW25hbWVdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBwYXJ0cy5wdXNoKHBhcnQpO1xuICB9XG4gIGlmIChwYXJ0c1szXSA9PT0gcGFydHNbMV0pIHtcbiAgICBwYXJ0cy5wb3AoKTtcbiAgICBpZiAocGFydHNbMl0gPT09IHBhcnRzWzBdKSB7XG4gICAgICBwYXJ0cy5wb3AoKTtcbiAgICAgIGlmIChwYXJ0c1sxXSA9PT0gcGFydHNbMF0pIHtcbiAgICAgICAgcGFydHMucG9wKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHRoaXMuc3R5bGVzW25hbWVdID0gcGFydHMuam9pbignICcpO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBVc2UgdGhlIHNhbWUgdmFsdWUgZm9yIGFsbCBjaGlsZHJlblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIHN0eWxlIHRvIGJlIHByb2Nlc3NlZFxuICovXG5mdW5jdGlvbiBzcGxpdFNhbWUobmFtZTogc3RyaW5nKSB7XG4gIGZvciAoY29uc3QgY2hpbGQgb2YgU3R5bGVzLmNvbm5lY3RbbmFtZV0uY2hpbGRyZW4pIHtcbiAgICB0aGlzLnNldFN0eWxlKHRoaXMuY2hpbGROYW1lKG5hbWUsIGNoaWxkKSwgdGhpcy5zdHlsZXNbbmFtZV0pO1xuICB9XG59XG5cbi8qKlxuICogQ2hlY2sgdGhhdCBhbGwgY2hpbGRyZW4gaGF2ZSB0aGUgc2FtZSB2YWx1ZXMgYW5kXG4gKiBpZiBzbywgc2V0IHRoZSBwYXJlbnQgdG8gdGhhdCB2YWx1ZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIHN0eWxlIHRvIGJlIHByb2Nlc3NlZFxuICovXG5mdW5jdGlvbiBjb21iaW5lU2FtZShuYW1lOiBzdHJpbmcpIHtcbiAgY29uc3QgY2hpbGRyZW4gPSBbLi4uU3R5bGVzLmNvbm5lY3RbbmFtZV0uY2hpbGRyZW5dO1xuICBjb25zdCB2YWx1ZSA9IHRoaXMuc3R5bGVzW3RoaXMuY2hpbGROYW1lKG5hbWUsIGNoaWxkcmVuLnNoaWZ0KCkpXTtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgIGlmICh0aGlzLnN0eWxlc1t0aGlzLmNoaWxkTmFtZShuYW1lLCBjaGlsZCldICE9PSB2YWx1ZSkge1xuICAgICAgZGVsZXRlIHRoaXMuc3R5bGVzW25hbWVdO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICB0aGlzLnN0eWxlc1tuYW1lXSA9IHZhbHVlO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBQYXR0ZXJucyBmb3IgdGhlIHBhcnRzIG9mIGEgYm9hcmRlclxuICovXG5jb25zdCBCT1JERVI6IHtbbmFtZTogc3RyaW5nXTogUmVnRXhwfSA9IHtcbiAgd2lkdGg6IC9eKD86W1xcZC5dKyg/OlthLXpdKyl8dGhpbnxtZWRpdW18dGhpY2t8aW5oZXJpdHxpbml0aWFsfHVuc2V0KSQvLFxuICBzdHlsZTogL14oPzpub25lfGhpZGRlbnxkb3R0ZWR8ZGFzaGVkfHNvbGlkfGRvdWJsZXxncm9vdmV8cmlkZ2V8aW5zZXR8b3V0c2V0fGluaGVyaXR8aW5pdGlhbHx1bnNldCkkL1xufTtcblxuLyoqXG4gKiBTcGxpdCBhIHdpZHRoLXN0eWxlLWNvbG9yIGJvcmRlciBkZWZpbml0aW9uXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgc3R5bGUgdG8gYmUgcHJvY2Vzc2VkXG4gKi9cbmZ1bmN0aW9uIHNwbGl0V1NDKG5hbWU6IHN0cmluZykge1xuICBsZXQgcGFydHMgPSB7d2lkdGg6ICcnLCBzdHlsZTogJycsIGNvbG9yOiAnJ30gYXMgU3R5bGVMaXN0O1xuICBmb3IgKGNvbnN0IHBhcnQgb2Ygc3BsaXRTcGFjZXModGhpcy5zdHlsZXNbbmFtZV0pKSB7XG4gICAgaWYgKHBhcnQubWF0Y2goQk9SREVSLndpZHRoKSAmJiBwYXJ0cy53aWR0aCA9PT0gJycpIHtcbiAgICAgIHBhcnRzLndpZHRoID0gcGFydDtcbiAgICB9IGVsc2UgaWYgKHBhcnQubWF0Y2goQk9SREVSLnN0eWxlKSAmJiBwYXJ0cy5zdHlsZSA9PT0gJycpIHtcbiAgICAgIHBhcnRzLnN0eWxlID0gcGFydDtcbiAgICB9IGVsc2Uge1xuICAgICAgcGFydHMuY29sb3IgPSBwYXJ0O1xuICAgIH1cbiAgfVxuICBmb3IgKGNvbnN0IGNoaWxkIG9mIFN0eWxlcy5jb25uZWN0W25hbWVdLmNoaWxkcmVuKSB7XG4gICAgdGhpcy5zZXRTdHlsZSh0aGlzLmNoaWxkTmFtZShuYW1lLCBjaGlsZCksIHBhcnRzW2NoaWxkXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb21iaW5lIHdpdGgtc3R5bGUtY29sb3IgYm9yZGVyIGRlZmluaXRpb24gZnJvbSBjaGlsZHJlblxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIHN0eWxlIHRvIGJlIHByb2Nlc3NlZFxuICovXG5mdW5jdGlvbiBjb21iaW5lV1NDKG5hbWU6IHN0cmluZykge1xuICBjb25zdCBwYXJ0cyA9IFtdIGFzIHN0cmluZ1tdO1xuICBmb3IgKGNvbnN0IGNoaWxkIG9mIFN0eWxlcy5jb25uZWN0W25hbWVdLmNoaWxkcmVuKSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnN0eWxlc1t0aGlzLmNoaWxkTmFtZShuYW1lLCBjaGlsZCldO1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgcGFydHMucHVzaCh2YWx1ZSk7XG4gICAgfVxuICB9XG4gIGlmIChwYXJ0cy5sZW5ndGgpIHtcbiAgICB0aGlzLnN0eWxlc1tuYW1lXSA9IHBhcnRzLmpvaW4oJyAnKTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgdGhpcy5zdHlsZXNbbmFtZV07XG4gIH1cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogUGF0dGVybnMgZm9yIHRoZSBwYXJ0cyBvZiBhIGZvbnQgZGVjbGFyYXRpb25cbiAqL1xuY29uc3QgRk9OVDoge1tuYW1lOiBzdHJpbmddOiBSZWdFeHB9ID0ge1xuICBzdHlsZTogL14oPzpub3JtYWx8aXRhbGljfG9ibGlxdWV8aW5oZXJpdHxpbml0aWFsfHVuc2V0KSQvLFxuICB2YXJpYW50OiBuZXcgUmVnRXhwKCdeKD86JyArXG4gICAgICAgICAgICAgICAgICAgICAgWydub3JtYWx8bm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICdpbmhlcml0fGluaXRpYWx8dW5zZXQnLFxuICAgICAgICAgICAgICAgICAgICAgICAnY29tbW9uLWxpZ2F0dXJlc3xuby1jb21tb24tbGlnYXR1cmVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2NyZXRpb25hcnktbGlnYXR1cmVzfG5vLWRpc2NyZXRpb25hcnktbGlnYXR1cmVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2hpc3RvcmljYWwtbGlnYXR1cmVzfG5vLWhpc3RvcmljYWwtbGlnYXR1cmVzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHR1YWx8bm8tY29udGV4dHVhbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICcoPzpzdHlsaXN0aWN8Y2hhcmFjdGVyLXZhcmlhbnR8c3dhc2h8b3JuYW1lbnRzfGFubm90YXRpb24pXFxcXChbXildKlxcXFwpJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ3NtYWxsLWNhcHN8YWxsLXNtYWxsLWNhcHN8cGV0aXRlLWNhcHN8YWxsLXBldGl0ZS1jYXBzfHVuaWNhc2V8dGl0bGluZy1jYXBzJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2xpbmluZy1udW1zfG9sZHN0eWxlLW51bXN8cHJvcG9ydGlvbmFsLW51bXN8dGFidWxhci1udW1zJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2RpYWdvbmFsLWZyYWN0aW9uc3xzdGFja2VkLWZyYWN0aW9ucycsXG4gICAgICAgICAgICAgICAgICAgICAgICdvcmRpbmFsfHNsYXNoZWQtemVybycsXG4gICAgICAgICAgICAgICAgICAgICAgICdqaXM3OHxqaXM4M3xqaXM5MHxqaXMwNHxzaW1wbGlmaWVkfHRyYWRpdGlvbmFsJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bGwtd2lkdGh8cHJvcG9ydGlvbmFsLXdpZHRoJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ3J1YnknXS5qb2luKCd8JykgKyAnKSQnKSxcbiAgd2VpZ2h0OiAvXig/Om5vcm1hbHxib2xkfGJvbGRlcnxsaWdodGVyfFsxLTldMDB8aW5oZXJpdHxpbml0aWFsfHVuc2V0KSQvLFxuICBzdHJldGNoOiBuZXcgUmVnRXhwKCdeKD86JyArXG4gICAgICAgICAgICAgICAgICAgICAgWydub3JtYWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAnKD86KD86dWx0cmF8ZXh0cmF8c2VtaSktKT9jb25kZW5zZWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAnKD86KD86c2VtaXxleHRyYXx1bHRhKS0pP2V4cGFuZGVkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgJ2luaGVyaXR8aW5pdGlhbHx1bnNldCddLiBqb2luKCd8JykgKyAnKSQnKSxcbiAgc2l6ZTogbmV3IFJlZ0V4cCgnXig/OicgK1xuICAgICAgICAgICAgICAgICAgIFsneHgtc21hbGx8eC1zbWFsbHxzbWFsbHxtZWRpdW18bGFyZ2V8eC1sYXJnZXx4eC1sYXJnZXxsYXJnZXJ8c21hbGxlcicsXG4gICAgICAgICAgICAgICAgICAgICdbXFxkLl0rJXxbXFxkLl0rW2Etel0rJyxcbiAgICAgICAgICAgICAgICAgICAgJ2luaGVyaXR8aW5pdGlhbHx1bnNldCddLmpvaW4oJ3wnKSArICcpJyArXG4gICAgICAgICAgICAgICAgICAgJyg/OlxcLyg/Om5vcm1hbHxbXFxkLlxcK10oPzolfFthLXpdKyk/KSk/JCcpXG59O1xuXG4vKipcbiAqIFNwbGl0IGEgZm9udCBkZWNsYXJhdGlvbiBpbnRvIGlzIHBhcnRzIChub3QgcGVyZmVjdCBidXQgZ29vZCBlbm91Z2ggZm9yIG5vdylcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBzdHlsZSB0byBiZSBwcm9jZXNzZWRcbiAqL1xuZnVuY3Rpb24gc3BsaXRGb250KG5hbWU6IHN0cmluZykge1xuICBjb25zdCBwYXJ0cyA9IHNwbGl0U3BhY2VzKHRoaXMuc3R5bGVzW25hbWVdKTtcbiAgLy9cbiAgLy8gIFRoZSBwYXJ0cyBmb3VuZCAoYXJyYXkgbWVhbnMgY2FuIGJlIG1vcmUgdGhhbiBvbmUgd29yZClcbiAgLy9cbiAgY29uc3QgdmFsdWUgPSB7XG4gICAgc3R5bGU6ICcnLCB2YXJpYW50OiBbXSwgd2VpZ2h0OiAnJywgc3RyZXRjaDogJycsXG4gICAgc2l6ZTogJycsIGZhbWlseTogJycsICdsaW5lLWhlaWdodCc6ICcnXG4gIH0gYXMge1tuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX07XG4gIGZvciAoY29uc3QgcGFydCBvZiBwYXJ0cykge1xuICAgIHZhbHVlLmZhbWlseSA9IHBhcnQ7IC8vIGFzc3VtZSBpdCBpcyBmYW1pbHkgdW5sZXNzIG90aGVyd2lzZSAoZmFtaWx5IG11c3QgYmUgcHJlc2VudClcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoRk9OVCkpIHtcbiAgICAgIGlmICgoQXJyYXkuaXNBcnJheSh2YWx1ZVtuYW1lXSkgfHwgdmFsdWVbbmFtZV0gPT09ICcnKSAmJiBwYXJ0Lm1hdGNoKEZPTlRbbmFtZV0pKSB7XG4gICAgICAgIGlmIChuYW1lID09PSAnc2l6ZScpIHtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIEhhbmRsZSBzaXplL2xpbmUtaGVpZ2h0XG4gICAgICAgICAgLy9cbiAgICAgICAgICBjb25zdCBbc2l6ZSwgaGVpZ2h0XSA9IHBhcnQuc3BsaXQoL1xcLy8pO1xuICAgICAgICAgIHZhbHVlW25hbWVdID0gc2l6ZTtcbiAgICAgICAgICBpZiAoaGVpZ2h0KSB7XG4gICAgICAgICAgICB2YWx1ZVsnbGluZS1oZWlnaHQnXSA9IGhlaWdodDtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUuc2l6ZSA9PT0gJycpIHtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIHN0eWxlLCB3ZWlnaHQsIHZhcmlhbnQsIHN0cmV0Y2ggbXVzdCBhcHBlYXIgYmVmb3JlIHNpemVcbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlW25hbWVdKSkge1xuICAgICAgICAgICAgKHZhbHVlW25hbWVdIGFzIHN0cmluZ1tdKS5wdXNoKHBhcnQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2YWx1ZVtuYW1lXSA9IHBhcnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHNhdmVGb250UGFydHMobmFtZSwgdmFsdWUpO1xuICBkZWxldGUgdGhpcy5zdHlsZXNbbmFtZV07IC8vIG9ubHkgdXNlIHRoZSBwYXJ0cywgbm90IHRoZSBmb250IGRlY2xhcmF0aW9uIGl0c2VsZlxufVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIHN0eWxlIHRvIGJlIHByb2Nlc3NlZFxuICogQHBhcmFtIHt7W25hbWU6IHN0cmluZ106IHN0cmluZyB8IHN0cmluZ1tdfX0gdmFsdWUgIFRoZSBsaXN0IG9mIHBhcnRzIGRldGVjdGVkIGFib3ZlXG4gKi9cbmZ1bmN0aW9uIHNhdmVGb250UGFydHMobmFtZTogc3RyaW5nLCB2YWx1ZToge1tuYW1lOiBzdHJpbmddOiBzdHJpbmcgfCBzdHJpbmdbXX0pIHtcbiAgZm9yIChjb25zdCBjaGlsZCBvZiBTdHlsZXMuY29ubmVjdFtuYW1lXS5jaGlsZHJlbikge1xuICAgIGNvbnN0IGNuYW1lID0gdGhpcy5jaGlsZE5hbWUobmFtZSwgY2hpbGQpO1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlW2NoaWxkXSkpIHtcbiAgICAgIGNvbnN0IHZhbHVlcyA9IHZhbHVlW2NoaWxkXSBhcyBzdHJpbmdbXTtcbiAgICAgIGlmICh2YWx1ZXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3R5bGVzW2NuYW1lXSA9IHZhbHVlcy5qb2luKCcgJyk7XG4gICAgICB9XG4gICAgfSBlbHNlICBpZiAodmFsdWVbY2hpbGRdICE9PSAnJykge1xuICAgICAgdGhpcy5zdHlsZXNbY25hbWVdID0gdmFsdWVbY2hpbGRdO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIENvbWJpbmUgZm9udCBwYXJ0cyBpbnRvIG9uZSAod2UgZG9uJ3QgYWN0dWFsbHkgZG8gdGhhdClcbiAqL1xuZnVuY3Rpb24gY29tYmluZUZvbnQoX25hbWU6IHN0cmluZykge31cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogSW1wbGVtZW50cyB0aGUgU3R5bGVzIG9iamVjdCAobGl0ZSB2ZXJzaW9uIG9mIENzc1N0eWxlRGVjbGFyYXRpb24pXG4gKi9cbmV4cG9ydCBjbGFzcyBTdHlsZXMge1xuXG4gIC8qKlxuICAgKiBQYXR0ZXJucyBmb3Igc3R5bGUgdmFsdWVzIGFuZCBjb21tZW50c1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwYXR0ZXJuOiB7W25hbWU6IHN0cmluZ106IFJlZ0V4cH0gPSB7XG4gICAgc3R5bGU6IC8oWy1hLXpdKylbXFxzXFxuXSo6W1xcc1xcbl0qKCg/OidbXiddKid8XCJbXlwiXSpcInxcXG58LikqPylbXFxzXFxuXSooPzo7fCQpL2csXG4gICAgY29tbWVudDogL1xcL1xcKlteXSo/XFwqXFwvL2dcbiAgfTtcblxuICAvKipcbiAgICogVGhlIG1hcHBpbmcgb2YgcGFyZW50cyB0byBjaGlsZHJlbiwgYW5kIGhvdyB0byBzcGxpdCBhbmQgY29tYmluZSB0aGVtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNvbm5lY3Q6IGNvbm5lY3Rpb25zID0ge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGNoaWxkcmVuOiBUUkJMLFxuICAgICAgc3BsaXQ6IHNwbGl0VFJCTCxcbiAgICAgIGNvbWJpbmU6IGNvbWJpbmVUUkJMXG4gICAgfSxcblxuICAgIGJvcmRlcjoge1xuICAgICAgY2hpbGRyZW46IFRSQkwsXG4gICAgICBzcGxpdDogc3BsaXRTYW1lLFxuICAgICAgY29tYmluZTogY29tYmluZVNhbWVcbiAgICB9LFxuICAgICdib3JkZXItdG9wJzoge1xuICAgICAgY2hpbGRyZW46IFdTQyxcbiAgICAgIHNwbGl0OiBzcGxpdFdTQyxcbiAgICAgIGNvbWJpbmU6IGNvbWJpbmVXU0NcbiAgICB9LFxuICAgICdib3JkZXItcmlnaHQnOiB7XG4gICAgICBjaGlsZHJlbjogV1NDLFxuICAgICAgc3BsaXQ6IHNwbGl0V1NDLFxuICAgICAgY29tYmluZTogY29tYmluZVdTQ1xuICAgIH0sXG4gICAgJ2JvcmRlci1ib3R0b20nOiB7XG4gICAgICBjaGlsZHJlbjogV1NDLFxuICAgICAgc3BsaXQ6IHNwbGl0V1NDLFxuICAgICAgY29tYmluZTogY29tYmluZVdTQ1xuICAgIH0sXG4gICAgJ2JvcmRlci1sZWZ0Jzoge1xuICAgICAgY2hpbGRyZW46IFdTQyxcbiAgICAgIHNwbGl0OiBzcGxpdFdTQyxcbiAgICAgIGNvbWJpbmU6IGNvbWJpbmVXU0NcbiAgICB9LFxuICAgICdib3JkZXItd2lkdGgnOiB7XG4gICAgICBjaGlsZHJlbjogVFJCTCxcbiAgICAgIHNwbGl0OiBzcGxpdFRSQkwsXG4gICAgICBjb21iaW5lOiBudWxsICAgICAgLy8gbWVhbnMgaXRzIGNoaWxkcmVuIGNvbWJpbmUgdG8gYSBkaWZmZXJlbnQgcGFyZW50XG4gICAgfSxcbiAgICAnYm9yZGVyLXN0eWxlJzoge1xuICAgICAgY2hpbGRyZW46IFRSQkwsXG4gICAgICBzcGxpdDogc3BsaXRUUkJMLFxuICAgICAgY29tYmluZTogbnVsbCAgICAgIC8vIG1lYW5zIGl0cyBjaGlsZHJlbiBjb21iaW5lIHRvIGEgZGlmZmVyZW50IHBhcmVudFxuICAgIH0sXG4gICAgJ2JvcmRlci1jb2xvcic6IHtcbiAgICAgIGNoaWxkcmVuOiBUUkJMLFxuICAgICAgc3BsaXQ6IHNwbGl0VFJCTCxcbiAgICAgIGNvbWJpbmU6IG51bGwgICAgICAvLyBtZWFucyBpdHMgY2hpbGRyZW4gY29tYmluZSB0byBhIGRpZmZlcmVudCBwYXJlbnRcbiAgICB9LFxuXG4gICAgZm9udDoge1xuICAgICAgY2hpbGRyZW46IFsnc3R5bGUnLCAndmFyaWFudCcsICd3ZWlnaHQnLCAnc3RyZXRjaCcsICdsaW5lLWhlaWdodCcsICdzaXplJywgJ2ZhbWlseSddLFxuICAgICAgc3BsaXQ6IHNwbGl0Rm9udCxcbiAgICAgIGNvbWJpbmU6IGNvbWJpbmVGb250XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBzdHlsZXMgZGVmaW5lZCBmb3IgdGhpcyBkZWNsYXJhdGlvblxuICAgKi9cbiAgcHJvdGVjdGVkIHN0eWxlczogU3R5bGVMaXN0O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gY3NzVGV4dCAgVGhlIGluaXRpYWwgZGVmaW5pdGlvbiBmb3IgdGhlIHN0eWxlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IoY3NzVGV4dDogc3RyaW5nID0gJycpIHtcbiAgICB0aGlzLnBhcnNlKGNzc1RleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIFRoZSBDU1Mgc3RyaW5nIGZvciB0aGUgc3R5bGVzIGN1cnJlbnRseSBkZWZpbmVkXG4gICAqL1xuICBwdWJsaWMgZ2V0IGNzc1RleHQoKTogc3RyaW5nIHtcbiAgICBjb25zdCBzdHlsZXMgPSBbXSBhcyBzdHJpbmdbXTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXModGhpcy5zdHlsZXMpKSB7XG4gICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnBhcmVudE5hbWUobmFtZSk7XG4gICAgICBpZiAoIXRoaXMuc3R5bGVzW3BhcmVudF0pIHtcbiAgICAgICAgc3R5bGVzLnB1c2gobmFtZSArICc6ICcgKyB0aGlzLnN0eWxlc1tuYW1lXSArICc7Jyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzdHlsZXMuam9pbignICcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIG5hbWUgb2YgdGhlIHN0eWxlIHRvIHNldFxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ8Ym9vbGVhbn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldCBpdCB0b1xuICAgKi9cbiAgcHVibGljIHNldChuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKSB7XG4gICAgbmFtZSA9IHRoaXMubm9ybWFsaXplTmFtZShuYW1lKTtcbiAgICB0aGlzLnNldFN0eWxlKG5hbWUsIHZhbHVlIGFzIHN0cmluZyk7XG4gICAgLy9cbiAgICAvLyBJZiB0aGVyZSBpcyBubyBjb21iaW5lIGZ1bmN0aW9uICx0aGUgY2hpbGRyZW4gY29tYmluZSB0b1xuICAgIC8vIGEgc2VwYXJhdGUgcGFyZW50IChlLmcuLCBib3JkZXItd2lkdGggc2V0cyBib3JkZXItdG9wLXdpZHRoLCBldGMuXG4gICAgLy8gYW5kIGNvbWJpbmVzIHRvIGJvcmRlci10b3ApXG4gICAgLy9cbiAgICBpZiAoU3R5bGVzLmNvbm5lY3RbbmFtZV0gJiYgIVN0eWxlcy5jb25uZWN0W25hbWVdLmNvbWJpbmUpIHtcbiAgICAgIHRoaXMuY29tYmluZUNoaWxkcmVuKG5hbWUpO1xuICAgICAgZGVsZXRlIHRoaXMuc3R5bGVzW25hbWVdO1xuICAgIH1cbiAgICAvL1xuICAgIC8vIElmIHdlIGp1c3QgY2hhbmdlZCBhIGNoaWxkLCB3ZSBuZWVkIHRvIHRyeSB0byBjb21iaW5lXG4gICAgLy8gaXQgd2l0aCBpdHMgcGFyZW50J3Mgb3RoZXIgY2hpbGRyZW5cbiAgICAvL1xuICAgIHdoaWxlIChuYW1lLm1hdGNoKC8tLykpIHtcbiAgICAgIG5hbWUgPSB0aGlzLnBhcmVudE5hbWUobmFtZSk7XG4gICAgICBpZiAoIVN0eWxlcy5jb25uZWN0W25hbWVdKSBicmVhaztcbiAgICAgIFN0eWxlcy5jb25uZWN0W25hbWVdLmNvbWJpbmUuY2FsbCh0aGlzLCBuYW1lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgIFRoZSBuYW1lIG9mIHRoZSBzdHlsZSB0byBnZXRcbiAgICogQHJldHVybiB7c3RyaW5nfSAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgc3R5bGUgKG9yIGVtcHR5IHN0cmluZyBpZiBub3QgZGVmaW5lZClcbiAgICovXG4gIHB1YmxpYyBnZXQobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBuYW1lID0gdGhpcy5ub3JtYWxpemVOYW1lKG5hbWUpO1xuICAgIHJldHVybiAodGhpcy5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyB0aGlzLnN0eWxlc1tuYW1lXSA6ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIG9mIHRoZSBzdHlsZSB0byBzZXQgKHdpdGhvdXQgY2F1c2luZyBwYXJlbnQgdXBkYXRlcylcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlICBUaGUgdmFsdWUgdG8gc2V0IGl0IHRvXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0U3R5bGUobmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5zdHlsZXNbbmFtZV0gPSB2YWx1ZTtcbiAgICBpZiAoU3R5bGVzLmNvbm5lY3RbbmFtZV0gJiYgU3R5bGVzLmNvbm5lY3RbbmFtZV0uY2hpbGRyZW4pIHtcbiAgICAgIFN0eWxlcy5jb25uZWN0W25hbWVdLnNwbGl0LmNhbGwodGhpcywgbmFtZSk7XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgIGRlbGV0ZSB0aGlzLnN0eWxlc1tuYW1lXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgbmFtZSBvZiB0aGUgc3R5bGUgd2hvc2UgcGFyZW50IGlzIHRvIGJlIGNvbWJpbmVkXG4gICAqL1xuICBwcm90ZWN0ZWQgY29tYmluZUNoaWxkcmVuKG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcmVudCA9IHRoaXMucGFyZW50TmFtZShuYW1lKTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIFN0eWxlcy5jb25uZWN0W25hbWVdLmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBjbmFtZSA9IHRoaXMuY2hpbGROYW1lKHBhcmVudCwgY2hpbGQpO1xuICAgICAgU3R5bGVzLmNvbm5lY3RbY25hbWVdLmNvbWJpbmUuY2FsbCh0aGlzLCBjbmFtZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIG5hbWUgb2YgdGhlIHN0eWxlIHdob3NlIHBhcmVudCBzdHlsZSBpcyB0byBiZSBmb3VuZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQsIG9yICcnIGlmIG5vbmVcbiAgICovXG4gIHByb3RlY3RlZCBwYXJlbnROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFyZW50ID0gbmFtZS5yZXBsYWNlKC8tW14tXSokLywgJycpO1xuICAgIHJldHVybiAobmFtZSA9PT0gcGFyZW50ID8gJycgOiBwYXJlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIG5hbWUgb2YgdGhlIHBhcmVudCBzdHlsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hpbGQgIFRoZSBzdWZmaXggdG8gYmUgYWRkZWQgdG8gdGhlIHBhcmVudFxuICAgKiBAcHJldHVybiB7c3RyaW5nfSAgICAgIFRoZSBjb21iaW5lZCBuYW1lXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hpbGROYW1lKG5hbWU6IHN0cmluZywgY2hpbGQ6IHN0cmluZykge1xuICAgIC8vXG4gICAgLy8gSWYgdGhlIGNoaWxkIGNvbnRhaW5zIGEgZGFzaCwgaXQgaXMgYWxyZWFkeSB0aGUgZmlsbCBuYW1lXG4gICAgLy9cbiAgICBpZiAoY2hpbGQubWF0Y2goLy0vKSkge1xuICAgICAgcmV0dXJuIGNoaWxkO1xuICAgIH1cbiAgICAvL1xuICAgIC8vIEZvciBub24tY29tYmluaW5nIHN0eWxlcywgbGlrZSBib3JkZXItd2lkdGgsIGluc2VydFxuICAgIC8vICAgdGhlIGNoaWxkIG5hbWUgYmVmb3JlIHRoZSBmaW5kIHdvcmQsIGUuZy4sIGJvcmRlci10b3Atd2lkdGhcbiAgICAvL1xuICAgIGlmIChTdHlsZXMuY29ubmVjdFtuYW1lXSAmJiAhU3R5bGVzLmNvbm5lY3RbbmFtZV0uY29tYmluZSkge1xuICAgICAgY2hpbGQgKz0gbmFtZS5yZXBsYWNlKC8uKi0vLCAnLScpO1xuICAgICAgbmFtZSA9IHRoaXMucGFyZW50TmFtZShuYW1lKTtcbiAgICB9XG4gICAgcmV0dXJuIG5hbWUgKyAnLScgKyBjaGlsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgVGhlIG5hbWUgb2YgYSBzdHlsZSB0byBub3JtYWxpemVcbiAgICogQHJldHVybiB7c3RyaW5nfSAgICAgIFRoZSBuYW1lIGNvbnZlcnRlZCBmcm9tIENhbWVsQ2FzZSB0byBsb3dlcmNhc2Ugd2l0aCBkYXNoZXNcbiAgICovXG4gIHByb3RlY3RlZCBub3JtYWxpemVOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvW0EtWl0vZywgYyA9PiAnLScgKyBjLnRvTG93ZXJDYXNlKCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjc3NUZXh0ICBBIHN0eWxlIHRleHQgc3RyaW5nIHRvIGJlIHBhcnNlZCBpbnRvIHNlcGFyYXRlIHN0eWxlc1xuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5IHVzaW5nIHRoaXMuc2V0KCksIHdlIGdldCBhbGwgdGhlIHN1Yi1zdHlsZXMgY3JlYXRlZFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgdGhlIG1lcmdlZCBzdHlsZSBzaG9ydGhhbmRzKVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlKGNzc1RleHQ6IHN0cmluZyA9ICcnKSB7XG4gICAgbGV0IFBBVFRFUk4gPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgU3R5bGVzKS5wYXR0ZXJuO1xuICAgIHRoaXMuc3R5bGVzID0ge307XG4gICAgY29uc3QgcGFydHMgPSBjc3NUZXh0LnJlcGxhY2UoUEFUVEVSTi5jb21tZW50LCAnJykuc3BsaXQoUEFUVEVSTi5zdHlsZSk7XG4gICAgd2hpbGUgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGxldCBbc3BhY2UsIG5hbWUsIHZhbHVlXSA9IHBhcnRzLnNwbGljZSgwLCAzKTtcbiAgICAgIGlmIChzcGFjZS5tYXRjaCgvW15cXHNcXG5dLykpIHJldHVybjtcbiAgICAgIHRoaXMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDc3NTdHlsZXMgY2xhc3MgZm9yIGhhbmRsaW5nIHN0eWxlc2hlZXRzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG4vKipcbiAqIFRoZSBkYXRhIGZvciBhIHNlbGVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIFN0eWxlRGF0YSA9IHtcbiAgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfCBudW1iZXI7XG59O1xuXG4vKipcbiAqIEEgbGlzdCBvZiBzZWxlY3RvcnMgYW5kIHRoZWlyIGRhdGEgKGJhc2ljYWxseSBhIHN0eWxlc2hlZXQpXG4gKi9cbmV4cG9ydCB0eXBlIFN0eWxlTGlzdCA9IHtcbiAgW3NlbGVjdG9yOiBzdHJpbmddOiBTdHlsZURhdGE7XG59O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ3NzU3R5bGVzIGNsYXNzIChmb3IgbWFuYWdpbmcgYSBjb2xsZWN0aW9uIG9mIENTUyBzdHlsZSBkZWZpbml0aW9ucylcbiAqL1xuXG5leHBvcnQgY2xhc3MgQ3NzU3R5bGVzIHtcbiAgLyoqXG4gICAqIFRoZSBzdHlsZXMgYXMgdGhleSBjdXJyZW50bHkgc3RhbmRcbiAgICovXG4gIHByb3RlY3RlZCBzdHlsZXM6IFN0eWxlTGlzdCA9IHt9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgc3R5bGVzIGFzIGEgQ1NTIHN0cmluZ1xuICAgKi9cbiAgZ2V0IGNzc1RleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHlsZVN0cmluZygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7U3R5bGVMaXN0fSBzdHlsZXMgIFRoZSBpbml0aWFsIHN0eWxlcyB0byB1c2UsIGlmIGFueVxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKHN0eWxlczogU3R5bGVMaXN0ID0gbnVsbCkge1xuICAgIHRoaXMuYWRkU3R5bGVzKHN0eWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtTdHlsZUxpc3R9IHN0eWxlcyAgVGhlIHN0eWxlcyB0byBjb21iaW5lIHdpdGggdGhlIGV4aXN0aW5nIG9uZXNcbiAgICovXG4gIHB1YmxpYyBhZGRTdHlsZXMoc3R5bGVzOiBTdHlsZUxpc3QpIHtcbiAgICBpZiAoIXN0eWxlcykgcmV0dXJuO1xuICAgIGZvciAoY29uc3Qgc3R5bGUgb2YgT2JqZWN0LmtleXMoc3R5bGVzKSkge1xuICAgICAgaWYgKCF0aGlzLnN0eWxlc1tzdHlsZV0pIHtcbiAgICAgICAgdGhpcy5zdHlsZXNbc3R5bGVdID0ge307XG4gICAgICB9XG4gICAgICBPYmplY3QuYXNzaWduKHRoaXMuc3R5bGVzW3N0eWxlXSwgc3R5bGVzW3N0eWxlXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHNlbGVjdG9ycyAgVGhlIHNlbGVjdG9ycyBmb3IgdGhlIHN0eWxlcyB0byByZW1vdmVcbiAgICovXG4gIHB1YmxpYyByZW1vdmVTdHlsZXMoLi4uc2VsZWN0b3JzOiBzdHJpbmdbXSkge1xuICAgIGZvciAoY29uc3Qgc2VsZWN0b3Igb2Ygc2VsZWN0b3JzKSB7XG4gICAgICBkZWxldGUgdGhpcy5zdHlsZXNbc2VsZWN0b3JdO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciBhbGwgdGhlIHN0eWxlc1xuICAgKi9cbiAgcHVibGljIGNsZWFyKCkge1xuICAgIHRoaXMuc3R5bGVzID0ge307XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgQ1NTIHN0cmluZyBmb3IgdGhlIHN0eWxlIGxpc3RcbiAgICovXG4gIHB1YmxpYyBnZXRTdHlsZVN0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFN0eWxlUnVsZXMoKS5qb2luKCdcXG5cXG4nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gIEFuIGFycmF5IG9mIHJ1bGUgc3RyaW5ncyBmb3IgdGhlIHN0eWxlIGxpc3RcbiAgICovXG4gIHB1YmxpYyBnZXRTdHlsZVJ1bGVzKCk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBzZWxlY3RvcnMgPSBPYmplY3Qua2V5cyh0aGlzLnN0eWxlcyk7XG4gICAgY29uc3QgZGVmczogc3RyaW5nW10gPSBuZXcgQXJyYXkoc2VsZWN0b3JzLmxlbmd0aCk7XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoY29uc3Qgc2VsZWN0b3Igb2Ygc2VsZWN0b3JzKSB7XG4gICAgICBkZWZzW2krK10gPSBzZWxlY3RvciArICcge1xcbicgKyB0aGlzLmdldFN0eWxlRGVmU3RyaW5nKHRoaXMuc3R5bGVzW3NlbGVjdG9yXSkgKyAnXFxufSc7XG4gICAgfVxuICAgIHJldHVybiBkZWZzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7U3R5bGVEYXRhfSBzdHlsZXMgIFRoZSBzdHlsZSBkYXRhIHRvIGJlIHN0cmluZ2lmaWVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgIFRoZSBDU1Mgc3RyaW5nIGZvciB0aGUgZ2l2ZW4gZGF0YVxuICAgKi9cbiAgcHVibGljIGdldFN0eWxlRGVmU3RyaW5nKHN0eWxlczogU3R5bGVEYXRhKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzID0gT2JqZWN0LmtleXMoc3R5bGVzKTtcbiAgICBjb25zdCB2YWx1ZXM6IHN0cmluZ1tdID0gbmV3IEFycmF5KHByb3BlcnRpZXMubGVuZ3RoKTtcbiAgICBsZXQgaSA9IDA7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgICB2YWx1ZXNbaSsrXSA9ICcgICcgKyBwcm9wZXJ0eSArICc6ICcgKyBzdHlsZXNbcHJvcGVydHldICsgJzsnO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgYWJzdHJhY3QgY2xhc3MgZm9yIHRoZSBDb21tb25PdXRwdXRKYXhcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QWJzdHJhY3RPdXRwdXRKYXh9IGZyb20gJy4uLy4uL2NvcmUvT3V0cHV0SmF4LmpzJztcbmltcG9ydCB7TWF0aERvY3VtZW50fSBmcm9tICcuLi8uLi9jb3JlL01hdGhEb2N1bWVudC5qcyc7XG5pbXBvcnQge01hdGhJdGVtLCBNZXRyaWNzLCBTVEFURX0gZnJvbSAnLi4vLi4vY29yZS9NYXRoSXRlbS5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7Rm9udERhdGEsIEZvbnREYXRhQ2xhc3MsIENoYXJPcHRpb25zLCBEZWxpbWl0ZXJEYXRhLCBDc3NGb250RGF0YX0gZnJvbSAnLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge09wdGlvbkxpc3QsIHNlcGFyYXRlT3B0aW9uc30gZnJvbSAnLi4vLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7Q29tbW9uV3JhcHBlciwgQW55V3JhcHBlciwgQW55V3JhcHBlckNsYXNzfSBmcm9tICcuL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25XcmFwcGVyRmFjdG9yeSwgQW55V3JhcHBlckZhY3Rvcnl9IGZyb20gJy4vV3JhcHBlckZhY3RvcnkuanMnO1xuaW1wb3J0IHtwZXJjZW50fSBmcm9tICcuLi8uLi91dGlsL2xlbmd0aHMuanMnO1xuaW1wb3J0IHtTdHlsZUxpc3QsIFN0eWxlc30gZnJvbSAnLi4vLi4vdXRpbC9TdHlsZXMuanMnO1xuaW1wb3J0IHtTdHlsZUxpc3QgYXMgQ3NzU3R5bGVMaXN0LCBDc3NTdHlsZXN9IGZyb20gJy4uLy4uL3V0aWwvU3R5bGVMaXN0LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkTWV0cmljcyBleHRlbmRzIE1ldHJpY3Mge1xuICBmYW1pbHk6IHN0cmluZzsgICAgIC8vIHRoZSBmb250IGZhbWlseSBmb3IgdGhlIHN1cnJvdW5kaW5nIHRleHRcbn1cblxuLyoqXG4gKiBNYXBzIGxpbmtpbmcgYSBub2RlIHRvIHRoZSB0ZXN0IG5vZGUgaXQgY29udGFpbnMsXG4gKiAgYW5kIGEgbWFwIGxpbmtpbmcgYSBub2RlIHRvIHRoZSBtZXRyaWNzIHdpdGhpbiB0aGF0IG5vZGUuXG4gKi9cbmV4cG9ydCB0eXBlIE1ldHJpY01hcDxOPiA9IE1hcDxOLCBFeHRlbmRlZE1ldHJpY3M+O1xudHlwZSBNZXRyaWNEb21NYXA8Tj4gPSBNYXA8TiwgTj47XG5cbi8qKlxuICogTWFwcyBmb3IgdW5rbm93biBjaGFyYWN0ZXJzXG4gKi9cbmV4cG9ydCB0eXBlIFVua25vd25CQm94ID0ge3c6IG51bWJlciwgaDogbnVtYmVyLCBkOiBudW1iZXJ9O1xuZXhwb3J0IHR5cGUgVW5rbm93bk1hcCA9IE1hcDxzdHJpbmcsIFVua25vd25CQm94PjtcbmV4cG9ydCB0eXBlIFVua25vd25WYXJpYW50TWFwID0gTWFwPHN0cmluZywgVW5rbm93bk1hcD47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiAgVGhlIENvbW1vbk91dHB1dEpheCBjbGFzcyBvbiB3aGljaCB0aGUgQ0hUTUwgYW5kIFNWRyBqYXggYXJlIGJ1aWx0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICogQHRlbXBsYXRlIFcgIFRoZSBXcmFwcGVyIGNsYXNzXG4gKiBAdGVtcGxhdGUgRiAgVGhlIFdyYXBwZXJGYWN0b3J5IGNsYXNzXG4gKiBAdGVtcGxhdGUgRkQgVGhlIEZvbnREYXRhIGNsYXNzXG4gKiBAdGVtcGxhdGUgRkMgVGhlIEZvbnREYXRhQ2xhc3Mgb2JqZWN0XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb21tb25PdXRwdXRKYXg8XG4gIE4sIFQsIEQsXG4gIFcgZXh0ZW5kcyBBbnlXcmFwcGVyLFxuICBGIGV4dGVuZHMgQW55V3JhcHBlckZhY3RvcnksXG4gIEZEIGV4dGVuZHMgRm9udERhdGE8YW55LCBhbnksIGFueT4sXG4gIEZDIGV4dGVuZHMgRm9udERhdGFDbGFzczxhbnksIGFueSwgYW55PlxuPiBleHRlbmRzIEFic3RyYWN0T3V0cHV0SmF4PE4sIFQsIEQ+IHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhpcyBvdXRwdXQgamF4XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE5BTUU6IHN0cmluZyA9ICdDb21tb24nO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT1BUSU9OUzogT3B0aW9uTGlzdCA9IHtcbiAgICAgIC4uLkFic3RyYWN0T3V0cHV0SmF4Lk9QVElPTlMsXG4gICAgc2NhbGU6IDEsICAgICAgICAgICAgICAgICAgICAgIC8vIGdsb2JhbCBzY2FsaW5nIGZhY3RvciBmb3IgYWxsIGV4cHJlc3Npb25zXG4gICAgbWluU2NhbGU6IC41LCAgICAgICAgICAgICAgICAgIC8vIHNtYWxsZXN0IHNjYWxpbmcgZmFjdG9yIHRvIHVzZVxuICAgIG10ZXh0SW5oZXJpdEZvbnQ6IGZhbHNlLCAgICAgICAvLyB0cnVlIHRvIG1ha2UgbXRleHQgZWxlbWVudHMgdXNlIHN1cnJvdW5kaW5nIGZvbnRcbiAgICBtZXJyb3JJbmhlcml0Rm9udDogZmFsc2UsICAgICAgLy8gdHJ1ZSB0byBtYWtlIG1lcnJvciB0ZXh0IHVzZSBzdXJyb3VuZGluZyBmb250XG4gICAgbXRleHRGb250OiAnJywgICAgICAgICAgICAgICAgIC8vIGZvbnQgdG8gdXNlIGZvciBtdGV4dCwgaWYgbm90IGluaGVyaXRpbmcgKGVtcHR5IG1lYW5zIHVzZSBNYXRoSmF4IGZvbnRzKVxuICAgIG1lcnJvckZvbnQ6ICdzZXJpZicsICAgICAgICAgICAvLyBmb250IHRvIHVzZSBmb3IgbWVycm9yLCBpZiBub3QgaW5oZXJpdGluZyAoZW1wdHkgbWVhbnMgdXNlIE1hdGhKYXggZm9udHMpXG4gICAgbWF0aG1sU3BhY2luZzogZmFsc2UsICAgICAgICAgIC8vIHRydWUgZm9yIE1hdGhNTCBzcGFjaW5nIHJ1bGVzLCBmYWxzZSBmb3IgVGVYIHJ1bGVzXG4gICAgc2tpcEF0dHJpYnV0ZXM6IHt9LCAgICAgICAgICAgIC8vIFJGRGEgYW5kIG90aGVyIGF0dHJpYnV0ZXMgTk9UIHRvIGNvcHkgdG8gdGhlIG91dHB1dFxuICAgIGV4RmFjdG9yOiAuNSwgICAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHNpemUgb2YgZXggaW4gZW0gdW5pdHNcbiAgICBkaXNwbGF5QWxpZ246ICdjZW50ZXInLCAgICAgICAgLy8gZGVmYXVsdCBmb3IgaW5kZW50YWxpZ24gd2hlbiBzZXQgdG8gJ2F1dG8nXG4gICAgZGlzcGxheUluZGVudDogJzAnLCAgICAgICAgICAgIC8vIGRlZmF1bHQgZm9yIGluZGVudHNoaWZ0IHdoZW4gc2V0IHRvICdhdXRvJ1xuICAgIHdyYXBwZXJGYWN0b3J5OiBudWxsLCAgICAgICAgICAvLyBUaGUgd3JhcHBlciBmYWN0b3J5IHRvIHVzZVxuICAgIGZvbnQ6IG51bGwsICAgICAgICAgICAgICAgICAgICAvLyBUaGUgRm9udERhdGEgb2JqZWN0IHRvIHVzZVxuICAgIGNzc1N0eWxlczogbnVsbCAgICAgICAgICAgICAgICAvLyBUaGUgQ3NzU3R5bGVzIG9iamVjdCB0byB1c2VcbiAgfTtcblxuICAvKipcbiAgICogIFRoZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlIG91dHB1dCBqYXhcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29tbW9uU3R5bGVzOiBDc3NTdHlsZUxpc3QgPSB7fTtcblxuICAvKipcbiAgICogVXNlZCBmb3IgY29sbGVjdGluZyBzdHlsZXMgbmVlZGVkIGZvciB0aGUgb3V0cHV0IGpheFxuICAgKi9cbiAgcHVibGljIGNzc1N0eWxlczogQ3NzU3R5bGVzO1xuXG4gIC8qKlxuICAgKiBUaGUgTWF0aERvY3VtZW50IGZvciB0aGUgbWF0aCB3ZSBmaW5kXG4gICAqL1xuICBwdWJsaWMgZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPjtcblxuICAvKipcbiAgICogdGhlIE1hdGhJdGVtIGN1cnJlbnRseSBiZWluZyBwcm9jZXNzZWRcbiAgICovXG4gIHB1YmxpYyBtYXRoOiBNYXRoSXRlbTxOLCBULCBEPjtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciBlbGVtZW50IGZvciB0aGUgbWF0aFxuICAgKi9cbiAgcHVibGljIGNvbnRhaW5lcjogTjtcblxuICAvKipcbiAgICogVGhlIHRvcC1sZXZlbCB0YWJsZSwgaWYgYW55XG4gICAqL1xuICBwdWJsaWMgdGFibGU6IEFueVdyYXBwZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBwaXhlbHMgcGVyIGVtIGZvciB0aGUgbWF0aCBpdGVtIGJlaW5nIHByb2Nlc3NlZFxuICAgKi9cbiAgcHVibGljIHB4UGVyRW06IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGRhdGEgZm9yIHRoZSBmb250IGluIHVzZVxuICAgKi9cbiAgcHVibGljIGZvbnQ6IEZEO1xuXG4gIC8qKlxuICAgKiBUaGUgd3JhcHBlciBmYWN0b3J5IGZvciB0aGUgTWF0aE1MIG5vZGVzXG4gICAqL1xuICBwdWJsaWMgZmFjdG9yeTogRjtcblxuICAvKipcbiAgICogQSBtYXAgZnJvbSB0aGUgbm9kZXMgaW4gdGhlIGV4cHJlc3Npb24gY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCB0byB0aGVcbiAgICogd3JhcHBlciBub2RlcyBmb3IgdGhlbSAodXNlZCBieSBmdW5jdGlvbnMgbGlrZSBjb3JlKCkgdG8gbG9jYXRlIHRoZSB3cmFwcGVyc1xuICAgKiBmcm9tIHRoZSBjb3JlIG5vZGVzKVxuICAgKi9cbiAgcHVibGljIG5vZGVNYXA6IE1hcDxNbWxOb2RlLCBXPjtcblxuICAvKipcbiAgICogTm9kZSB1c2VkIHRvIHRlc3QgZm9yIGluLWxpbmUgbWV0cmljIGRhdGFcbiAgICovXG4gIHB1YmxpYyB0ZXN0SW5saW5lOiBOO1xuXG4gIC8qKlxuICAgKiBOb2RlIHVzZWQgdG8gdGVzdCBmb3IgZGlzcGxheSBtZXRyaWMgZGF0YVxuICAgKi9cbiAgcHVibGljIHRlc3REaXNwbGF5OiBOO1xuXG4gIC8qKlxuICAgKiBDYWNoZSBvZiB1bmtub253IGNoYXJhY3RlciBib3VuZGluZyBib3hlcyBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgdW5rbm93bkNhY2hlOiBVbmtub3duVmFyaWFudE1hcDtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgV3JhcHBlckZhY3RvcnkgYW5kIGNvbm5lY3QgaXQgdG8gdGhpcyBvdXRwdXQgamF4XG4gICAqIEdldCB0aGUgY3NzU3R5bGUgYW5kIGZvbnQgb2JqZWN0c1xuICAgKlxuICAgKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgICAgICAgICBUaGUgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqIEBwYXJhbSB7Q29tbW9uV3JhcHBlckZhY3Rvcnl9IGRlZmF1bHRGYWN0b3J5ICBUaGUgZGVmYXVsdCB3cmFwcGVyIGZhY3RvcnkgY2xhc3NcbiAgICogQHBhcmFtIHtGQ30gZGVmYXVsdEZvbnQgIFRoZSBkZWZhdWx0IEZvbnREYXRhIGNvbnN0cnVjdG9yXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3Iob3B0aW9uczogT3B0aW9uTGlzdCA9IG51bGwsXG4gICAgICAgICAgICAgIGRlZmF1bHRGYWN0b3J5OiB0eXBlb2YgQ29tbW9uV3JhcHBlckZhY3RvcnkgPSBudWxsLFxuICAgICAgICAgICAgICBkZWZhdWx0Rm9udDogRkMgPSBudWxsKSB7XG4gICAgY29uc3QgW2pheE9wdGlvbnMsIGZvbnRPcHRpb25zXSA9IHNlcGFyYXRlT3B0aW9ucyhvcHRpb25zLCBkZWZhdWx0Rm9udC5PUFRJT05TKTtcbiAgICBzdXBlcihqYXhPcHRpb25zKTtcbiAgICB0aGlzLmZhY3RvcnkgPSB0aGlzLm9wdGlvbnMud3JhcHBlckZhY3RvcnkgfHxcbiAgICAgIG5ldyBkZWZhdWx0RmFjdG9yeTxDb21tb25PdXRwdXRKYXg8TiwgVCwgRCwgVywgRiwgRkQsIEZDPiwgVyxcbiAgICBBbnlXcmFwcGVyQ2xhc3MsIENoYXJPcHRpb25zLCBEZWxpbWl0ZXJEYXRhLCBGRD4oKTtcbiAgICB0aGlzLmZhY3RvcnkuamF4ID0gdGhpcztcbiAgICB0aGlzLmNzc1N0eWxlcyA9IHRoaXMub3B0aW9ucy5jc3NTdHlsZXMgfHwgbmV3IENzc1N0eWxlcygpO1xuICAgIHRoaXMuZm9udCA9IHRoaXMub3B0aW9ucy5mb250IHx8IG5ldyBkZWZhdWx0Rm9udChmb250T3B0aW9ucyk7XG4gICAgdGhpcy51bmtub3duQ2FjaGUgPSBuZXcgTWFwKCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIFNhdmUgdGhlIG1hdGggZG9jdW1lbnRcbiAgICogQ3JlYXRlIHRoZSBtangtY29udGFpbmVyIG5vZGVcbiAgICogQ3JlYXRlIHRoZSBET00gb3V0cHV0IGZvciB0aGUgcm9vdCBNYXRoTUwgbWF0aCBub2RlIGluIHRoZSBjb250YWluZXJcbiAgICogUmV0dXJuIHRoZSBjb250YWluZXIgbm9kZVxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0eXBlc2V0KG1hdGg6IE1hdGhJdGVtPE4sIFQsIEQ+LCBodG1sOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pIHtcbiAgICB0aGlzLnNldERvY3VtZW50KGh0bWwpO1xuICAgIGxldCBub2RlID0gdGhpcy5jcmVhdGVOb2RlKCk7XG4gICAgdGhpcy50b0RPTShtYXRoLCBub2RlLCBodG1sKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtOfSAgVGhlIGNvbnRhaW5lciBET00gbm9kZSBmb3IgdGhlIHR5cGVzZXQgbWF0aFxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZU5vZGUoKTogTiB7XG4gICAgY29uc3QgamF4ID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIENvbW1vbk91dHB1dEpheCkuTkFNRTtcbiAgICByZXR1cm4gdGhpcy5odG1sKCdtangtY29udGFpbmVyJywgeydjbGFzcyc6ICdNYXRoSmF4JywgamF4OiBqYXh9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICBUaGUgY29udGFpbmVyIHdob3NlIHNjYWxlIGlzIHRvIGJlIHNldFxuICAgKi9cbiAgcHJvdGVjdGVkIHNldFNjYWxlKG5vZGU6IE4pIHtcbiAgICBjb25zdCBzY2FsZSA9IHRoaXMubWF0aC5tZXRyaWNzLnNjYWxlICogdGhpcy5vcHRpb25zLnNjYWxlO1xuICAgIGlmIChzY2FsZSAhPT0gMSkge1xuICAgICAgdGhpcy5hZGFwdG9yLnNldFN0eWxlKG5vZGUsICdmb250U2l6ZScsIHBlcmNlbnQoc2NhbGUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2F2ZSB0aGUgbWF0aCBkb2N1bWVudCwgaWYgYW55LCBhbmQgdGhlIG1hdGggaXRlbVxuICAgKiBTZXQgdGhlIGRvY3VtZW50IHdoZXJlIEhUTUwgbm9kZXMgd2lsbCBiZSBjcmVhdGVkIHZpYSB0aGUgYWRhcHRvclxuICAgKiBSZWN1cnNpdmVseSBzZXQgdGhlIFRlWCBjbGFzc2VzIGZvciB0aGUgbm9kZXNcbiAgICogU2V0IHRoZSBzY2FsaW5nIGZvciB0aGUgRE9NIG5vZGVcbiAgICogQ3JlYXRlIHRoZSBub2RlTWFwIChtYXBzIE1hdGhNTCBub2RlcyB0byBjb3JyZXNwb25kaW5nIHdyYXBwZXJzKVxuICAgKiBDcmVhdGUgdGhlIEhUTUwgb3V0cHV0IGZvciB0aGUgcm9vdCBNYXRoTUwgbm9kZSBpbiB0aGUgY29udGFpbmVyXG4gICAqIENsZWFyIHRoZSBub2RlTWFwZVxuICAgKiBFeGVjdXRlIHRoZSBwb3N0LWZpbHRlcnNcbiAgICpcbiAgICogQHBhcmFtIHtNYXRoSXRlbX0gbWF0aCAgICAgIFRoZSBtYXRoIGl0ZW0gdG8gY29udmVydFxuICAgKiBAcGFyYW0ge059IG5vZGUgICAgICAgICAgICAgVGhlIGNvbnRhaWVyIHRvIHBsYWNlIHRoZSByZXN1bHQgaW50b1xuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gaHRtbCAgVGhlIGRvY3VtZW50IGNvbnRhaW5pbmcgdGhlIG1hdGhcbiAgICovXG4gIHB1YmxpYyB0b0RPTShtYXRoOiBNYXRoSXRlbTxOLCBULCBEPiwgbm9kZTogTiwgaHRtbDogTWF0aERvY3VtZW50PE4sIFQsIEQ+ID0gbnVsbCkge1xuICAgIHRoaXMuc2V0RG9jdW1lbnQoaHRtbCk7XG4gICAgdGhpcy5tYXRoID0gbWF0aDtcbiAgICB0aGlzLnB4UGVyRW0gPSBtYXRoLm1ldHJpY3MuZXggLyB0aGlzLmZvbnQucGFyYW1zLnhfaGVpZ2h0O1xuICAgIG1hdGgucm9vdC5zZXRUZVhjbGFzcyhudWxsKTtcbiAgICB0aGlzLnNldFNjYWxlKG5vZGUpO1xuICAgIHRoaXMubm9kZU1hcCA9IG5ldyBNYXA8TW1sTm9kZSwgVz4oKTtcbiAgICB0aGlzLmNvbnRhaW5lciA9IG5vZGU7XG4gICAgdGhpcy5wcm9jZXNzTWF0aChtYXRoLnJvb3QsIG5vZGUpO1xuICAgIHRoaXMubm9kZU1hcCA9IG51bGw7XG4gICAgdGhpcy5leGVjdXRlRmlsdGVycyh0aGlzLnBvc3RGaWx0ZXJzLCBtYXRoLCBodG1sLCBub2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIHRoZSBhY3R1YWwgdHlwZXNldHRpbmcgZnVuY3Rpb24gc3VwcGxpZWQgYnkgdGhlIHN1YmNsYXNzXG4gICAqXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbWF0aCAgIFRoZSBpbnRlbnJhbCBNYXRoTUwgbm9kZSBvZiB0aGUgcm9vdCBtYXRoIGVsZW1lbnQgdG8gcHJvY2Vzc1xuICAgKiBAcGFyYW0ge059IG5vZGUgICAgICAgICBUaGUgY29udGFpbmVyIG5vZGUgd2hlcmUgdGhlIG1hdGggaXMgdG8gYmUgdHlwZXNldFxuICAgKi9cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHByb2Nlc3NNYXRoKG1hdGg6IE1tbE5vZGUsIG5vZGU6IE4pOiB2b2lkO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQHBhcmFtIHtNYXRoSXRlbX0gbWF0aCAgICAgIFRoZSBNYXRoSXRlbSB0byBnZXQgdGhlIGJvdW5kaW5nIGJveCBmb3JcbiAgICogQHBhcmFtIHtNYXRoRG9jdW1lbnR9IGh0bWwgIFRoZSBNYXRoRG9jdW1lbnQgZm9yIHRoZSBtYXRoXG4gICAqL1xuICBwdWJsaWMgZ2V0QkJveChtYXRoOiBNYXRoSXRlbTxOLCBULCBEPiwgaHRtbDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgdGhpcy5zZXREb2N1bWVudChodG1sKTtcbiAgICB0aGlzLm1hdGggPSBtYXRoO1xuICAgIG1hdGgucm9vdC5zZXRUZVhjbGFzcyhudWxsKTtcbiAgICB0aGlzLm5vZGVNYXAgPSBuZXcgTWFwPE1tbE5vZGUsIFc+KCk7XG4gICAgbGV0IGJib3ggPSB0aGlzLmZhY3Rvcnkud3JhcChtYXRoLnJvb3QpLmdldE91dGVyQkJveCgpO1xuICAgIHRoaXMubm9kZU1hcCA9IG51bGw7XG4gICAgcmV0dXJuIGJib3g7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldE1ldHJpY3MoaHRtbDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgdGhpcy5zZXREb2N1bWVudChodG1sKTtcbiAgICBjb25zdCBhZGFwdG9yID0gdGhpcy5hZGFwdG9yO1xuICAgIGNvbnN0IG1hcHMgPSB0aGlzLmdldE1ldHJpY01hcHMoaHRtbCk7XG4gICAgZm9yIChjb25zdCBtYXRoIG9mIGh0bWwubWF0aCkge1xuICAgICAgY29uc3QgcGFyZW50ID0gYWRhcHRvci5wYXJlbnQobWF0aC5zdGFydC5ub2RlKTtcbiAgICAgIGlmIChtYXRoLnN0YXRlKCkgPCBTVEFURS5NRVRSSUNTICYmIHBhcmVudCkge1xuICAgICAgICBjb25zdCBtYXAgPSBtYXBzW21hdGguZGlzcGxheSA/IDEgOiAwXTtcbiAgICAgICAgY29uc3Qge2VtLCBleCwgY29udGFpbmVyV2lkdGgsIGxpbmVXaWR0aCwgc2NhbGUsIGZhbWlseX0gPSBtYXAuZ2V0KHBhcmVudCk7XG4gICAgICAgIG1hdGguc2V0TWV0cmljcyhlbSwgZXgsIGNvbnRhaW5lcldpZHRoLCBsaW5lV2lkdGgsIHNjYWxlKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tdGV4dEluaGVyaXRGb250KSB7XG4gICAgICAgICAgbWF0aC5vdXRwdXREYXRhLm10ZXh0RmFtaWx5ID0gZmFtaWx5O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMubWVycm9ySW5oZXJpdEZvbnQpIHtcbiAgICAgICAgICBtYXRoLm91dHB1dERhdGEubWVycm9yRmFtaWx5ID0gZmFtaWx5O1xuICAgICAgICB9XG4gICAgICAgIG1hdGguc3RhdGUoU1RBVEUuTUVUUklDUyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgICAgIFRoZSBjb250YWluZXIgbm9kZSB3aG9zZSBtZXRyaWNzIGFyZSB0byBiZSBtZWFzdXJlZFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgICBUcnVlIGlmIHRoZSBtZXRyaWNzIGFyZSBmb3IgZGlzcGxheWVkIG1hdGhcbiAgICogQHJldHVybiB7TWV0cmljc30gICAgICAgICAgT2JqZWN0IGNvbnRhaW5pbmcgZW0sIGV4LCBjb250YWluZXJXaWR0aCwgZXRjLlxuICAgKi9cbiAgcHVibGljIGdldE1ldHJpY3NGb3Iobm9kZTogTiwgZGlzcGxheTogYm9vbGVhbik6IEV4dGVuZGVkTWV0cmljcyB7XG4gICAgY29uc3QgZ2V0RmFtaWx5ID0gKHRoaXMub3B0aW9ucy5tdGV4dEluaGVyaXRGb250IHx8IHRoaXMub3B0aW9ucy5tZXJyb3JJbmhlcml0Rm9udCk7XG4gICAgY29uc3QgdGVzdCA9IHRoaXMuZ2V0VGVzdEVsZW1lbnQobm9kZSwgZGlzcGxheSk7XG4gICAgY29uc3QgbWV0cmljcyA9IHRoaXMubWVhc3VyZU1ldHJpY3ModGVzdCwgZ2V0RmFtaWx5KTtcbiAgICB0aGlzLmFkYXB0b3IucmVtb3ZlKHRlc3QpO1xuICAgIHJldHVybiBtZXRyaWNzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIE1ldHJpY01hcCBmb3IgdGhlIG1hdGggbGlzdFxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gaHRtbCAgVGhlIG1hdGggZG9jdW1lbnQgd2hvc2UgbWF0aCBsaXN0IGlzIHRvIGJlIHByb2Nlc3NlZC5cbiAgICogQHJldHVybiB7TWV0cmljTWFwW119ICAgICAgIFRoZSBub2RlLXRvLW1ldHJpY3MgbWFwcyBmb3IgYWxsIHRoZSBjb250YWluZXJzIHRoYXQgaGF2ZSBtYXRoXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0TWV0cmljTWFwcyhodG1sOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pOiBNZXRyaWNNYXA8Tj5bXSB7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBjb25zdCBkb21NYXBzID0gW25ldyBNYXAoKSBhcyBNZXRyaWNEb21NYXA8Tj4sIG5ldyBNYXAoKSBhcyBNZXRyaWNEb21NYXA8Tj5dO1xuICAgIC8vXG4gICAgLy8gQWRkIHRoZSB0ZXN0IGVsZW1lbnRzIGFsbCBhdCBvbmNlIChzbyBvbmx5IG9uZSByZWZsb3cpXG4gICAgLy8gQ3VycmVudGx5LCB3ZSBkbyBvbmUgdGVzdCBmb3IgZWFjaCBjb250YWluZXIgZWxlbWVudCBmb3IgaW4tbGluZSBhbmQgb25lIGZvciBkaXNwbGF5IG1hdGhcbiAgICAvLyAgIChzaW5jZSB3ZSBuZWVkIGRpZmZlcmVudCB0ZWNobmlxdWVzIGZvciB0aGUgdHdvIGZvcm1zIHRvIGF2b2lkIGEgV2ViS2l0IGJ1ZykuXG4gICAgLy8gICBUaGlzIG1heSBuZWVkIHRvIGJlIGNoYW5nZWQgdG8gaGFuZGxlIGZsb2F0aW5nIGVsZW1lbnRzIGJldHRlciwgc2luY2UgdGhhdCBoYXMgdG8gYmVcbiAgICAvLyAgIGRvbmUgYXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBtYXRoIGl0c2VsZiwgbm90IG5lY2Vzc2FyaWx5IHRoZSBlbmQgb2YgdGhlIGNvbnRhaW5lci5cbiAgICAvL1xuICAgIGZvciAoY29uc3QgbWF0aCBvZiBodG1sLm1hdGgpIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBhZGFwdG9yLnBhcmVudChtYXRoLnN0YXJ0Lm5vZGUpO1xuICAgICAgaWYgKG5vZGUgJiYgbWF0aC5zdGF0ZSgpIDwgU1RBVEUuTUVUUklDUykge1xuICAgICAgICBjb25zdCBtYXAgPSBkb21NYXBzW21hdGguZGlzcGxheSA/IDEgOiAwXTtcbiAgICAgICAgaWYgKCFtYXAuaGFzKG5vZGUpKSB7XG4gICAgICAgICAgbWFwLnNldChub2RlLCB0aGlzLmdldFRlc3RFbGVtZW50KG5vZGUsIG1hdGguZGlzcGxheSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgLy8gTWVhc3VyZSB0aGUgbWV0cmljcyBmb3IgYWxsIHRoZSBtYXBwZWQgZWxlbWVudHNcbiAgICAvL1xuICAgIGNvbnN0IGdldEZhbWlseSA9IHRoaXMub3B0aW9ucy5tdGV4dEluaGVyaXRGb250IHx8IHRoaXMub3B0aW9ucy5tZXJyb3JJbmhlcml0Rm9udDtcbiAgICBjb25zdCBtYXBzID0gW25ldyBNYXAoKSBhcyBNZXRyaWNNYXA8Tj4sIG5ldyBNYXAoKSBhcyBNZXRyaWNNYXA8Tj5dO1xuICAgIGZvciAoY29uc3QgaSBvZiBtYXBzLmtleXMoKSkge1xuICAgICAgZm9yIChjb25zdCBub2RlIG9mIGRvbU1hcHNbaV0ua2V5cygpKSB7XG4gICAgICAgIG1hcHNbaV0uc2V0KG5vZGUsIHRoaXMubWVhc3VyZU1ldHJpY3MoZG9tTWFwc1tpXS5nZXQobm9kZSksIGdldEZhbWlseSkpO1xuICAgICAgfVxuICAgIH1cbiAgICAvL1xuICAgIC8vIFJlbW92ZSB0aGUgdGVzdCBlbGVtZW50c1xuICAgIC8vXG4gICAgZm9yIChjb25zdCBpIG9mIG1hcHMua2V5cygpKSB7XG4gICAgICBmb3IgKGNvbnN0IG5vZGUgb2YgZG9tTWFwc1tpXS52YWx1ZXMoKSkge1xuICAgICAgICBhZGFwdG9yLnJlbW92ZShub2RlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hcHM7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgIFRoZSBtYXRoIGVsZW1lbnQgdG8gYmUgbWVhc3VyZWRcbiAgICogQHJldHVybiB7Tn0gICAgICAgIFRoZSB0ZXN0IGVsZW1lbnRzIHRoYXQgd2VyZSBhZGRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFRlc3RFbGVtZW50KG5vZGU6IE4sIGRpc3BsYXk6IGJvb2xlYW4pOiBOIHtcbiAgICBjb25zdCBhZGFwdG9yID0gdGhpcy5hZGFwdG9yO1xuICAgIGlmICghdGhpcy50ZXN0SW5saW5lKSB7XG4gICAgICB0aGlzLnRlc3RJbmxpbmUgPSB0aGlzLmh0bWwoJ21qeC10ZXN0Jywge3N0eWxlOiB7XG4gICAgICAgIGRpc3BsYXk6ICAgICAgICAgICAgJ2lubGluZS1ibG9jaycsXG4gICAgICAgIHdpZHRoOiAgICAgICAgICAgICAgJzEwMCUnLFxuICAgICAgICAnZm9udC1zdHlsZSc6ICAgICAgICdub3JtYWwnLFxuICAgICAgICAnZm9udC13ZWlnaHQnOiAgICAgICdub3JtYWwnLFxuICAgICAgICAnZm9udC1zaXplJzogICAgICAgICcxMDAlJyxcbiAgICAgICAgJ2ZvbnQtc2l6ZS1hZGp1c3QnOiAnbm9uZScsXG4gICAgICAgICd0ZXh0LWluZGVudCc6ICAgICAgMCxcbiAgICAgICAgJ3RleHQtdHJhbnNmb3JtJzogICAnbm9uZScsXG4gICAgICAgICdsZXR0ZXItc3BhY2luZyc6ICAgJ25vcm1hbCcsXG4gICAgICAgICd3b3JkLXNwYWNpbmcnOiAgICAgJ25vcm1hbCcsXG4gICAgICAgIG92ZXJmbG93OiAgICAgICAgICAgJ2hpZGRlbicsXG4gICAgICAgIGhlaWdodDogICAgICAgICAgICAgJzFweCcsXG4gICAgICAgICdtYXJnaW4tcmlnaHQnOiAgICAgJy0xcHgnXG4gICAgICB9fSwgW1xuICAgICAgICB0aGlzLmh0bWwoJ21qeC1sZWZ0LWJveCcsIHtzdHlsZToge1xuICAgICAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgICAgIHdpZHRoOiAwLFxuICAgICAgICAgICdmbG9hdCc6ICdsZWZ0J1xuICAgICAgICB9fSksXG4gICAgICAgIHRoaXMuaHRtbCgnbWp4LWV4LWJveCcsIHtzdHlsZToge1xuICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgICAgICB3aWR0aDogJzFweCcsIGhlaWdodDogJzYwZXgnXG4gICAgICAgIH19KSxcbiAgICAgICAgdGhpcy5odG1sKCdtangtcmlnaHQtYm94Jywge3N0eWxlOiB7XG4gICAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgd2lkdGg6IDAsXG4gICAgICAgICAgJ2Zsb2F0JzogJ3JpZ2h0J1xuICAgICAgICB9fSlcbiAgICAgIF0pO1xuICAgICAgdGhpcy50ZXN0RGlzcGxheSA9IGFkYXB0b3IuY2xvbmUodGhpcy50ZXN0SW5saW5lKTtcbiAgICAgIGFkYXB0b3Iuc2V0U3R5bGUodGhpcy50ZXN0RGlzcGxheSwgJ2Rpc3BsYXknLCAndGFibGUnKTtcbiAgICAgIGFkYXB0b3Iuc2V0U3R5bGUodGhpcy50ZXN0RGlzcGxheSwgJ21hcmdpbi1yaWdodCcsICcnKTtcbiAgICAgIGFkYXB0b3Iuc2V0U3R5bGUoYWRhcHRvci5maXJzdENoaWxkKHRoaXMudGVzdERpc3BsYXkpIGFzIE4sICdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gYWRhcHRvci5sYXN0Q2hpbGQodGhpcy50ZXN0RGlzcGxheSkgYXMgTjtcbiAgICAgIGFkYXB0b3Iuc2V0U3R5bGUocmlnaHQsICdkaXNwbGF5JywgJ3RhYmxlLWNlbGwnKTtcbiAgICAgIGFkYXB0b3Iuc2V0U3R5bGUocmlnaHQsICd3aWR0aCcsICcxMDAwMGVtJyk7XG4gICAgICBhZGFwdG9yLnNldFN0eWxlKHJpZ2h0LCAnZmxvYXQnLCAnJyk7XG4gICAgfVxuICAgIHJldHVybiBhZGFwdG9yLmFwcGVuZChub2RlLCBhZGFwdG9yLmNsb25lKGRpc3BsYXkgPyB0aGlzLnRlc3REaXNwbGF5IDogdGhpcy50ZXN0SW5saW5lKSBhcyBOKSBhcyBOO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgICAgICAgVGhlIHRlc3Qgbm9kZSB0byBtZWFzdXJlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZ2V0RmFtaWx5ICAgVHJ1ZSBpZiBmb250IGZhbWlseSBvZiBzdXJyb3VuZGluZ3MgaXMgdG8gYmUgZGV0ZXJtaW5lZFxuICAgKiBAcmV0dXJuIHtFeHRlbmRlZE1ldHJpY3N9ICAgIFRoZSBtZXRyaWMgZGF0YSBmb3IgdGhlIGdpdmVuIG5vZGVcbiAgICovXG4gIHByb3RlY3RlZCBtZWFzdXJlTWV0cmljcyhub2RlOiBOLCBnZXRGYW1pbHk6IGJvb2xlYW4pOiBFeHRlbmRlZE1ldHJpY3Mge1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3QgZmFtaWx5ID0gKGdldEZhbWlseSA/IGFkYXB0b3IuZm9udEZhbWlseShub2RlKSA6ICcnKTtcbiAgICBjb25zdCBlbSA9IGFkYXB0b3IuZm9udFNpemUobm9kZSk7XG4gICAgY29uc3QgW3csIGhdID0gYWRhcHRvci5ub2RlU2l6ZShhZGFwdG9yLmNoaWxkTm9kZShub2RlLCAxKSBhcyBOKTtcbiAgICBjb25zdCBleCA9ICh3ID8gaCAvIDYwIDogZW0gKiB0aGlzLm9wdGlvbnMuZXhGYWN0b3IpO1xuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gKCF3ID8gMTAwMDAwMCA6IGFkYXB0b3IuZ2V0U3R5bGUobm9kZSwgJ2Rpc3BsYXknKSA9PT0gJ3RhYmxlJyA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRvci5ub2RlU2l6ZShhZGFwdG9yLmxhc3RDaGlsZChub2RlKSBhcyBOKVswXSAtIDEgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkYXB0b3Iubm9kZUJCb3goYWRhcHRvci5sYXN0Q2hpbGQobm9kZSkgYXMgTikubGVmdCAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRhcHRvci5ub2RlQkJveChhZGFwdG9yLmZpcnN0Q2hpbGQobm9kZSkgYXMgTikubGVmdCAtIDIpO1xuICAgIGNvbnN0IHNjYWxlID0gTWF0aC5tYXgodGhpcy5vcHRpb25zLm1pblNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLm1hdGNoRm9udEhlaWdodCA/IGV4IC8gdGhpcy5mb250LnBhcmFtcy54X2hlaWdodCAvIGVtIDogMSk7XG4gICAgY29uc3QgbGluZVdpZHRoID0gMTAwMDAwMDsgICAgICAvLyBubyBsaW5lYnJlYWtpbmcgKG90aGVyd2lzZSB3b3VsZCBiZSBhIHBlcmNlbnRhZ2Ugb2YgY3dpZHRoKVxuICAgIHJldHVybiB7ZW0sIGV4LCBjb250YWluZXJXaWR0aCwgbGluZVdpZHRoLCBzY2FsZSwgZmFtaWx5fTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3R5bGVTaGVldChodG1sOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pIHtcbiAgICB0aGlzLnNldERvY3VtZW50KGh0bWwpO1xuICAgIC8vXG4gICAgLy8gU3RhcnQgd2l0aCB0aGUgY29tbW9uIHN0eWxlc1xuICAgIC8vXG4gICAgdGhpcy5jc3NTdHlsZXMuY2xlYXIoKTtcbiAgICB0aGlzLmNzc1N0eWxlcy5hZGRTdHlsZXMoKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIENvbW1vbk91dHB1dEpheCkuY29tbW9uU3R5bGVzKTtcbiAgICAvL1xuICAgIC8vIEFkZCBkb2N1bWVudC1zcGVjaWZpYyBzdHlsZXNcbiAgICAvL1xuICAgIGlmICgnZ2V0U3R5bGVzJyBpbiBodG1sKSB7XG4gICAgICBmb3IgKGNvbnN0IHN0eWxlcyBvZiAoKGh0bWwgYXMgYW55KS5nZXRTdHlsZXMoKSBhcyBDc3NTdHlsZUxpc3RbXSkpIHtcbiAgICAgICAgdGhpcy5jc3NTdHlsZXMuYWRkU3R5bGVzKHN0eWxlcyk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgLy8gR2F0aGVyIHRoZSBDU1MgZnJvbSB0aGUgY2xhc3NlcyBhbmQgZm9udFxuICAgIC8vXG4gICAgdGhpcy5hZGRXcmFwcGVyU3R5bGVzKHRoaXMuY3NzU3R5bGVzKTtcbiAgICB0aGlzLmFkZEZvbnRTdHlsZXModGhpcy5jc3NTdHlsZXMpO1xuICAgIC8vXG4gICAgLy8gQ3JlYXRlIHRoZSBzdHlsZXNoZWV0IGZvciB0aGUgQ1NTXG4gICAgLy9cbiAgICBjb25zdCBzaGVldCA9IHRoaXMuaHRtbCgnc3R5bGUnLCB7aWQ6ICdNSlgtc3R5bGVzJ30sIFt0aGlzLnRleHQoJ1xcbicgKyB0aGlzLmNzc1N0eWxlcy5jc3NUZXh0ICsgJ1xcbicpXSk7XG4gICAgcmV0dXJuIHNoZWV0IGFzIE47XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtDc3NTdHlsZXN9IHN0eWxlcyAgIFRoZSBzdHlsZSBvYmplY3QgdG8gYWRkIHRvXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkRm9udFN0eWxlcyhzdHlsZXM6IENzc1N0eWxlcykge1xuICAgIHN0eWxlcy5hZGRTdHlsZXModGhpcy5mb250LnN0eWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtDc3NTdHlsZXN9IHN0eWxlcyAgIFRoZSBzdHlsZSBvYmplY3QgdG8gYWRkIHRvXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkV3JhcHBlclN0eWxlcyhzdHlsZXM6IENzc1N0eWxlcykge1xuICAgIGZvciAoY29uc3Qga2luZCBvZiB0aGlzLmZhY3RvcnkuZ2V0S2luZHMoKSkge1xuICAgICAgdGhpcy5hZGRDbGFzc1N0eWxlcyh0aGlzLmZhY3RvcnkuZ2V0Tm9kZUNsYXNzKGtpbmQpLCBzdHlsZXMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3R5cGVvZiBDb21tb25XcmFwcGVyfSBDTEFTUyAgVGhlIFdyYXBwZXIgY2xhc3Mgd2hvc2Ugc3R5bGVzIGFyZSB0byBiZSBhZGRlZFxuICAgKiBAcGFyYW0ge0Nzc1N0eWxlc30gc3R5bGVzICAgICAgICAgICAgVGhlIHN0eWxlIG9iamVjdCB0byBhZGQgdG8uXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkQ2xhc3NTdHlsZXMoQ0xBU1M6IHR5cGVvZiBDb21tb25XcmFwcGVyLCBzdHlsZXM6IENzc1N0eWxlcykge1xuICAgIHN0eWxlcy5hZGRTdHlsZXMoQ0xBU1Muc3R5bGVzKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQHBhcmFtIHtNYXRoRG9jdW1lbnR9IGh0bWwgIFRoZSBkb2N1bWVudCB0byBiZSB1c2VkXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0RG9jdW1lbnQoaHRtbDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgaWYgKGh0bWwpIHtcbiAgICAgIHRoaXMuZG9jdW1lbnQgPSBodG1sO1xuICAgICAgdGhpcy5hZGFwdG9yLmRvY3VtZW50ID0gaHRtbC5kb2N1bWVudDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgICAgICBUaGUgdHlwZSBvZiBIVE1MIG5vZGUgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7T3B0aW9uTGlzdH0gZGVmICAgVGhlIHByb3BlcnRpZXMgdG8gc2V0IG9uIHRoZSBIVE1MIG5vZGVcbiAgICogQHBhcmFtIHsoTnxUKVtdfSBjb250ZW50ICBBcnJheSBvZiBjaGlsZCBub2RlcyB0byBzZXQgZm9yIHRoZSBIVE1MIG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5zICAgICAgICBUaGUgbmFtZXNwYWNlIGZvciB0aGUgZWxlbWVudFxuICAgKiBAcmV0dXJuIHtOfSAgICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIERPTSB0cmVlXG4gICAqL1xuICBwdWJsaWMgaHRtbCh0eXBlOiBzdHJpbmcsIGRlZjogT3B0aW9uTGlzdCA9IHt9LCBjb250ZW50OiAoTiB8IFQpW10gPSBbXSwgbnM/OiBzdHJpbmcpOiBOIHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdG9yLm5vZGUodHlwZSwgZGVmLCBjb250ZW50LCBucyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgIFRoZSB0ZXh0IHN0cmluZyBmb3Igd2hpY2ggdG8gbWFrZSBhIHRleHQgbm9kZVxuICAgKlxuICAgKiBAcmV0dXJuIHtUfSAgQSB0ZXh0IG5vZGUgd2l0aCB0aGUgZ2l2ZW4gdGV4dFxuICAgKi9cbiAgcHVibGljIHRleHQodGV4dDogc3RyaW5nKTogVCB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRvci50ZXh0KHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtICAgIEEgbnVtYmVyIHRvIGJlIHNob3duIHdpdGggYSBmaXhlZCBudW1iZXIgb2YgZGlnaXRzXG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gbiAgIFRoZSBudW1iZXIgb2YgZGlnaXRzIHRvIHVzZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICBUaGUgZm9ybWF0dGVkIG51bWJlclxuICAgKi9cbiAgcHVibGljIGZpeGVkKG06IG51bWJlciwgbjogbnVtYmVyID0gMyk6IHN0cmluZyB7XG4gICAgaWYgKE1hdGguYWJzKG0pIDwgLjAwMDYpIHtcbiAgICAgIHJldHVybiAnMCc7XG4gICAgfVxuICAgIHJldHVybiBtLnRvRml4ZWQobikucmVwbGFjZSgvXFwuPzArJC8sICcnKTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgLypcbiAgICogIE1ldGhvZHMgZm9yIGhhbmRsaW5nIHRleHQgdGhhdCBpcyBub3QgaW4gdGhlIGN1cnJlbnQgTWF0aEpheCBmb250XG4gICAqL1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBET00gbm9kZSBmb3IgdGV4dCBmcm9tIGEgc3BlY2lmaWMgQ1NTIGZvbnQsIG9yIHRoYXQgaXNcbiAgICogIG5vdCBpbiB0aGUgY3VycmVudCBNYXRoSmF4IGZvbnRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgICAgIFRoZSB0ZXh0IHRvIGJlIGRpc3BsYXllZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFyaWFudCAgICAgVGhlIG5hbWUgb2YgdGhlIHZhcmlhbnQgZm9yIHRoZSB0ZXh0XG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICAgICAgICBUaGUgdGV4dCBlbGVtZW50IGNvbnRhaW5pbmcgdGhlIHRleHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB1bmtub3duVGV4dCh0ZXh0OiBzdHJpbmcsIHZhcmlhbnQ6IHN0cmluZyk6IE47XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdGV4dCBmcm9tIGEgc3BlY2lmaWMgZm9udCwgb3IgdGhhdCBpc24ndCBpbiB0aGUgTWF0aEpheCBmb250XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICBUaGUgdGV4dCB0byBtZWFzdXJlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYW50ICAgICBUaGUgdmFyaWFudCBmb3IgdGhlIHRleHRcbiAgICogQHBhcmFtIHtDc3NGb250RGF0YX0gZm9udCAgIFRoZSBmYW1pbHksIGl0YWxpYywgYW5kIGJvbGQgZGF0YSBmb3IgZXhwbGljaXQgZm9udHNcbiAgICogQHJldHVybiB7VW5rbm93bkJCb3h9ICAgICAgIFRoZSB3aWR0aCwgaGVpZ2h0LCBhbmQgZGVwdGggb2YgdGhlIHRleHQgKGluIGVtcylcbiAgICovXG4gIHB1YmxpYyBtZWFzdXJlVGV4dCh0ZXh0OiBzdHJpbmcsIHZhcmlhbnQ6IHN0cmluZywgZm9udDogQ3NzRm9udERhdGEgPSBbJycsIGZhbHNlLCBmYWxzZV0pOiBVbmtub3duQkJveCB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMudW5rbm93blRleHQodGV4dCwgdmFyaWFudCk7XG4gICAgaWYgKHZhcmlhbnQgPT09ICctZXhwbGljaXRGb250Jykge1xuICAgICAgY29uc3Qgc3R5bGVzID0gdGhpcy5jc3NGb250U3R5bGVzKGZvbnQpO1xuICAgICAgdGhpcy5hZGFwdG9yLnNldEF0dHJpYnV0ZXMobm9kZSwge3N0eWxlOiBzdHlsZXN9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMubWVhc3VyZVRleHROb2RlV2l0aENhY2hlKG5vZGUsIHRleHQsIHZhcmlhbnQsIGZvbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2l6ZSBvZiBhIHRleHQgbm9kZSwgY2FjaGluZyB0aGUgcmVzdWx0LCBhbmQgdXNpbmdcbiAgICogICBhIGNhY2hlZCByZXN1bHQsIGlmIHRoZXJlIGlzIG9uZS5cbiAgICpcbiAgICogQHBhcmFtIHtOfSB0ZXh0ICAgICAgICAgVGhlIHRleHQgZWxlbWVudCB0byBtZWFzdXJlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjaGFycyAgIFRoZSBzdHJpbmcgY29udGFpbmVkIGluIHRoZSB0ZXh0IG5vZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhcmlhbnQgICAgIFRoZSB2YXJpYW50IGZvciB0aGUgdGV4dFxuICAgKiBAcGFyYW0ge0Nzc0ZvbnREYXRhfSBmb250ICAgVGhlIGZhbWlseSwgaXRhbGljLCBhbmQgYm9sZCBkYXRhIGZvciBleHBsaWNpdCBmb250c1xuICAgKiBAcmV0dXJuIHtVbmtub3duQkJveH0gICBUaGUgd2lkdGgsIGhlaWdodCBhbmQgZGVwdGggZm9yIHRoZSB0ZXh0XG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZVRleHROb2RlV2l0aENhY2hlKFxuICAgIHRleHQ6IE4sIGNoYXJzOiBzdHJpbmcsIHZhcmlhbnQ6IHN0cmluZyxcbiAgICBmb250OiBDc3NGb250RGF0YSA9IFsnJywgZmFsc2UsIGZhbHNlXVxuICApOiBVbmtub3duQkJveCB7XG4gICAgaWYgKHZhcmlhbnQgPT09ICctZXhwbGljaXRGb250Jykge1xuICAgICAgdmFyaWFudCA9IFtmb250WzBdLCBmb250WzFdID8gJ1QnIDogJ0YnLCBmb250WzJdID8gJ1QnIDogJ0YnLCAnJ10uam9pbignLScpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMudW5rbm93bkNhY2hlLmhhcyh2YXJpYW50KSkge1xuICAgICAgdGhpcy51bmtub3duQ2FjaGUuc2V0KHZhcmlhbnQsIG5ldyBNYXAoKSk7XG4gICAgfVxuICAgIGNvbnN0IG1hcCA9IHRoaXMudW5rbm93bkNhY2hlLmdldCh2YXJpYW50KTtcbiAgICBjb25zdCBjYWNoZWQgPSBtYXAuZ2V0KGNoYXJzKTtcbiAgICBpZiAoY2FjaGVkKSByZXR1cm4gY2FjaGVkO1xuICAgIGNvbnN0IGJib3ggPSB0aGlzLm1lYXN1cmVUZXh0Tm9kZSh0ZXh0KTtcbiAgICBtYXAuc2V0KGNoYXJzLCBiYm94KTtcbiAgICByZXR1cm4gYmJveDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNZWFzdXJlIHRoZSB3aWR0aCBvZiBhIHRleHQgZWxlbWVudCBieSBwbGFjaW5nIGl0IGluIHRoZSBwYWdlXG4gICAqICBhbmQgbG9va2luZyB1cCBpdHMgc2l6ZSAoZmFrZSB0aGUgaGVpZ2h0IGFuZCBkZXB0aCwgc2luY2Ugd2UgY2FuJ3QgbWVhc3VyZSB0aGF0KVxuICAgKlxuICAgKiBAcGFyYW0ge059IHRleHQgICAgICAgICAgICBUaGUgdGV4dCBlbGVtZW50IHRvIG1lYXN1cmVcbiAgICogQHJldHVybiB7VW5rbm93bkJCb3h9ICAgICAgVGhlIHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoIGZvciB0aGUgdGV4dCAoaW4gZW1zKVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IG1lYXN1cmVUZXh0Tm9kZSh0ZXh0OiBOKTogVW5rbm93bkJCb3g7XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdGhlIHdpZHRoLCBoZWlnaHQgYW5kIGRlcHRoIG9mIGFuIGFubm90YXRpb24teG1sIG5vZGUncyBjb250ZW50XG4gICAqXG4gICAqIEBwYXJhbXtOfSB4bWwgICAgICAgICAgVGhlIHhtbCBjb250ZW50IG5vZGUgdG8gYmUgbWVhc3VyZWRcbiAgICogQHJldHVybiB7VW5rbm93bkJCb3h9ICBUaGUgd2lkdGgsIGhlaWdodCwgYW5kIGRlcHRoIG9mIHRoZSBjb250ZW50XG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZVhNTG5vZGUoeG1sOiBOKTogVW5rbm93bkJCb3gge1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3QgY29udGVudCA9ICB0aGlzLmh0bWwoJ21qeC14bWwtYmxvY2snLCB7c3R5bGU6IHtkaXNwbGF5OiAnaW5saW5lLWJsb2NrJ319LCBbYWRhcHRvci5jbG9uZSh4bWwpXSk7XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuaHRtbCgnbWp4LWJhc2VsaW5lJywge3N0eWxlOiB7ZGlzcGxheTogJ2lubGluZS1ibG9jaycsIHdpZHRoOiAwLCBoZWlnaHQ6IDB9fSk7XG4gICAgY29uc3Qgc3R5bGUgPSB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snLFxuICAgICAgJ2ZvbnQtZmFtaWx5JzogJ2luaXRpYWwnLFxuICAgICAgJ2xpbmUtaGVpZ2h0JzogJ25vcm1hbCdcbiAgICB9O1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmh0bWwoJ21qeC1tZWFzdXJlLXhtbCcsIHtzdHlsZX0sIFtiYXNlLCBjb250ZW50XSk7XG4gICAgYWRhcHRvci5hcHBlbmQoYWRhcHRvci5wYXJlbnQodGhpcy5tYXRoLnN0YXJ0Lm5vZGUpLCB0aGlzLmNvbnRhaW5lcik7XG4gICAgYWRhcHRvci5hcHBlbmQodGhpcy5jb250YWluZXIsIG5vZGUpO1xuICAgIGNvbnN0IGVtID0gdGhpcy5tYXRoLm1ldHJpY3MuZW0gKiB0aGlzLm1hdGgubWV0cmljcy5zY2FsZTtcbiAgICBjb25zdCB7bGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wfSA9IGFkYXB0b3Iubm9kZUJCb3goY29udGVudCk7XG4gICAgY29uc3QgdyA9IChyaWdodCAtIGxlZnQpIC8gZW07XG4gICAgY29uc3QgaCA9IChhZGFwdG9yLm5vZGVCQm94KGJhc2UpLnRvcCAtIHRvcCkgLyBlbTtcbiAgICBjb25zdCBkID0gKGJvdHRvbSAtIHRvcCkgLyBlbSAtIGg7XG4gICAgYWRhcHRvci5yZW1vdmUodGhpcy5jb250YWluZXIpO1xuICAgIGFkYXB0b3IucmVtb3ZlKG5vZGUpO1xuICAgIHJldHVybiB7dywgaCwgZH07XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtDc3NGb250RGF0YX0gZm9udCAgIFRoZSBmYW1pbHksIHN0eWxlLCBhbmQgd2VpZ2h0IGZvciB0aGUgZ2l2ZW4gZm9udFxuICAgKiBAcGFyYW0ge1N0eWxlTGlzdH0gc3R5bGVzICAgVGhlIHN0eWxlIG9iamVjdCB0byBhZGQgdGhlIGZvbnQgZGF0YSB0b1xuICAgKiBAcmV0dXJuIHtTdHlsZUxpc3R9ICAgICAgICAgVGhlIG1vZGlmaWVkIChvciBpbml0aWFsaXplZCkgc3R5bGUgb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgY3NzRm9udFN0eWxlcyhmb250OiBDc3NGb250RGF0YSwgc3R5bGVzOiBTdHlsZUxpc3QgPSB7fSk6IFN0eWxlTGlzdCB7XG4gICAgY29uc3QgW2ZhbWlseSwgaXRhbGljLCBib2xkXSA9IGZvbnQ7XG4gICAgc3R5bGVzWydmb250LWZhbWlseSddID0gdGhpcy5mb250LmdldEZhbWlseShmYW1pbHkpO1xuICAgIGlmIChpdGFsaWMpIHN0eWxlc1snZm9udC1zdHlsZSddID0gJ2l0YWxpYyc7XG4gICAgaWYgKGJvbGQpIHN0eWxlc1snZm9udC13ZWlnaHQnXSA9ICdib2xkJztcbiAgICByZXR1cm4gc3R5bGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7U3R5bGVzfSBzdHlsZXMgICBUaGUgc3R5bGUgb2JqZWN0IHRvIHF1ZXJ5XG4gICAqIEByZXR1cm4ge0Nzc0ZvbnREYXRhfSAgICBUaGUgZmFtaWx5LCBpdGFsaWMsIGFuZCBib29sZWFuIHZhbHVlc1xuICAgKi9cbiAgcHVibGljIGdldEZvbnREYXRhKHN0eWxlczogU3R5bGVzKTogQ3NzRm9udERhdGEge1xuICAgIGlmICghc3R5bGVzKSB7XG4gICAgICBzdHlsZXMgPSBuZXcgU3R5bGVzKCk7XG4gICAgfVxuICAgIHJldHVybiBbdGhpcy5mb250LmdldEZhbWlseShzdHlsZXMuZ2V0KCdmb250LWZhbWlseScpKSxcbiAgICAgICAgICAgIHN0eWxlcy5nZXQoJ2ZvbnQtc3R5bGUnKSA9PT0gJ2l0YWxpYycsXG4gICAgICAgICAgICBzdHlsZXMuZ2V0KCdmb250LXdlaWdodCcpID09PSAnYm9sZCddIGFzIENzc0ZvbnREYXRhO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyBHZW5lcmljIFdyYXBwZXJGYWN0b3J5IGNsYXNzIGZvciBjcmVhdGluZyBXcmFwcGVyIG9iamVjdHNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7Tm9kZX0gZnJvbSAnLi9Ob2RlLmpzJztcbmltcG9ydCB7V3JhcHBlciwgV3JhcHBlckNsYXNzfSBmcm9tICcuL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtGYWN0b3J5LCBBYnN0cmFjdEZhY3Rvcnl9IGZyb20gJy4vRmFjdG9yeS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIGdlbmVyaWMgV3JhcHBlckZhY3RvcnkgY2xhc3NcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIE5vZGUgdHlwZSBiZWluZyBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5XG4gKiBAdGVtcGxhdGUgVyAgVGhlIFdyYXBwZXIgdHlwZSBiZWluZyBwcm9kdWNlZCAoaW5zdGFuY2UgdHlwZSlcbiAqIEB0ZW1wbGF0ZSBDICBUaGUgV3JhcHBlciBjbGFzcyAoZm9yIHN0YXRpYyB2YWx1ZXMpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV3JhcHBlckZhY3Rvcnk8TiBleHRlbmRzIE5vZGUsIFcgZXh0ZW5kcyBXcmFwcGVyPE4sIFc+LCBDIGV4dGVuZHMgV3JhcHBlckNsYXNzPE4sIFc+PlxuZXh0ZW5kcyBGYWN0b3J5PFcsIEM+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgVGhlIG5vZGUgdG8gYmUgd3JhcHBlZFxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzICBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgbmVlZGVkIHdoZW4gd3JhcHBpbmcgdGhlIG5vZGVcbiAgICogQHJldHVybiB7V30gIFRoZSBuZXdseSB3cmFwcGVkIG5vZGVcbiAgICovXG4gIHdyYXAobm9kZTogTiwgLi4uYXJnczogYW55W10pOiBXO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBnZW5lcmljIFdyYXBwZXJGYWN0b3J5IGNsYXNzXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBOb2RlIHR5cGUgYmVpbmcgY3JlYXRlZCBieSB0aGUgZmFjdG9yeVxuICogQHRlbXBsYXRlIFcgIFRoZSBXcmFwcGVyIHR5cGUgYmVpbmcgcHJvZHVjZWQgKGluc3RhbmNlIHR5cGUpXG4gKiBAdGVtcGxhdGUgQyAgVGhlIFdyYXBwZXIgY2xhc3MgKGZvciBzdGF0aWMgdmFsdWVzKVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RXcmFwcGVyRmFjdG9yeTxOIGV4dGVuZHMgTm9kZSwgVyBleHRlbmRzIFdyYXBwZXI8TiwgVz4sIEMgZXh0ZW5kcyBXcmFwcGVyQ2xhc3M8TiwgVz4+XG5leHRlbmRzIEFic3RyYWN0RmFjdG9yeTxXLCBDPiBpbXBsZW1lbnRzIFdyYXBwZXJGYWN0b3J5PE4sIFcsIEM+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgVGhlIG5vZGUgdG8gYmUgd3JhcHBlZFxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzICBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgbmVlZGVkIHdoZW4gd3JhcHBpbmcgdGhlIG5vZGVcbiAgICogQHJldHVybiB7V30gIFRoZSBuZXdseSB3cmFwcGVkIG5vZGVcbiAgICovXG4gIHB1YmxpYyB3cmFwKG5vZGU6IE4sIC4uLmFyZ3M6IGFueVtdKTogVyB7XG4gICAgcmV0dXJuIHRoaXMuY3JlYXRlKG5vZGUua2luZCwgbm9kZSwgLi4uYXJncyk7XG4gIH1cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgT3V0cHV0V3JhcHBlckZhY3RvcnkgY2xhc3NcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7Q29tbW9uT3V0cHV0SmF4fSBmcm9tICcuL091dHB1dEpheC5qcyc7XG5pbXBvcnQge0Fic3RyYWN0V3JhcHBlckZhY3Rvcnl9IGZyb20gJy4uLy4uL2NvcmUvVHJlZS9XcmFwcGVyRmFjdG9yeS5qcyc7XG5pbXBvcnQge0NvbW1vbldyYXBwZXIsIENvbW1vbldyYXBwZXJDbGFzc30gZnJvbSAnLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q2hhck9wdGlvbnMsIERlbGltaXRlckRhdGEsIEZvbnREYXRhfSBmcm9tICcuL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7TW1sTm9kZX0gZnJvbSAnLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgT3V0cHV0V3JhcHBlckZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIE91dHB1dFdyYXBwZXIgbm9kZXNcbiAqXG4gKiBAdGVtcGxhdGUgSiAgVGhlIE91dHB1dEpheCB0eXBlXG4gKiBAdGVtcGxhdGUgVyAgVGhlIFdyYXBwZXIgdHlwZVxuICogQHRlbXBsYXRlIEMgIFRoZSBXcmFwcGVyQ2xhc3MgdHlwZVxuICogQHRlbXBsYXRlIENDIFRoZSBDaGFyT3B0aW9ucyB0eXBlXG4gKiBAdGVtcGxhdGUgRkQgVGhlIEZvbnREYXRhIHR5cGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1vbldyYXBwZXJGYWN0b3J5PFxuICBKIGV4dGVuZHMgQ29tbW9uT3V0cHV0SmF4PGFueSwgYW55LCBhbnksIFcsIENvbW1vbldyYXBwZXJGYWN0b3J5PEosIFcsIEMsIENDLCBERCwgRkQ+LCBGRCwgYW55PixcbiAgVyBleHRlbmRzIENvbW1vbldyYXBwZXI8SiwgVywgQywgQ0MsIERELCBGRD4sXG4gIEMgZXh0ZW5kcyBDb21tb25XcmFwcGVyQ2xhc3M8SiwgVywgQywgQ0MsIERELCBGRD4sXG4gIENDIGV4dGVuZHMgQ2hhck9wdGlvbnMsXG4gIEREIGV4dGVuZHMgRGVsaW1pdGVyRGF0YSxcbiAgRkQgZXh0ZW5kcyBGb250RGF0YTxDQywgYW55LCBERD5cbj4gZXh0ZW5kcyBBYnN0cmFjdFdyYXBwZXJGYWN0b3J5PE1tbE5vZGUsIFcsIEM+IHtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgbGlzdCBvZiB3cmFwcGVyIG5vZGVzIHRoaXMgZmFjdG9yeSBjYW4gY3JlYXRlXG4gICAqICAgKGZpbGxlZCBpbiBieSBzdWJjbGFzc2VzKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0Tm9kZXM6IHtba2luZDogc3RyaW5nXTogQ29tbW9uV3JhcHBlckNsYXNzPGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+fSA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IGpheCBhc3NvY2lhdGVkIHdpdGggdGhpcyBmYWN0b3J5XG4gICAqL1xuICBwdWJsaWMgamF4OiBKID0gbnVsbDtcblxuICAvKipcbiAgICogQHJldHVybiB7T2JqZWN0fSAgVGhlIGxpc3Qgb2Ygbm9kZS1jcmVhdGlvbiBmdW5jdGlvbnNcbiAgICovXG4gIGdldCBXcmFwcGVycygpOiBPYmplY3Qge1xuICAgIHJldHVybiB0aGlzLm5vZGU7XG4gIH1cblxufVxuXG5leHBvcnQgdHlwZSBBbnlXcmFwcGVyRmFjdG9yeSA9IENvbW1vbldyYXBwZXJGYWN0b3J5PGFueSwgYW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIGEgYm91bmRpbmctYm94IG9iamVjdCBhbmQgb3BlcmF0aW9ucyBvbiBpdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtCSUdESU1FTn0gZnJvbSAnLi9sZW5ndGhzLmpzJztcblxuLyoqXG4gKiAgVGhlIGRhdGEgdXNlZCB0byBpbml0aWFsaXplIGEgQkJveFxuICovXG5leHBvcnQgdHlwZSBCQm94RGF0YSA9IHtcbiAgdz86IG51bWJlcixcbiAgaD86IG51bWJlcixcbiAgZD86IG51bWJlclxufTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIEJCb3ggY2xhc3NcbiAqL1xuXG5leHBvcnQgY2xhc3MgQkJveCB7XG4gIC8qKlxuICAgKiBDb25zdGFudCBmb3IgcHdpZHRoIG9mIGZ1bGwgd2lkdGggYm94XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZ1bGxXaWR0aCA9ICcxMDAlJztcblxuICAvKipcbiAgICogIENTUyBzdHlsZXMgdGhhdCBhZmZlY3QgQkJveGVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIFN0eWxlQWRqdXN0OiBbc3RyaW5nLCBzdHJpbmcsIG51bWJlcj9dW10gPSBbXG4gICAgWydib3JkZXJUb3BXaWR0aCcsICdoJ10sXG4gICAgWydib3JkZXJSaWdodFdpZHRoJywgJ3cnXSxcbiAgICBbJ2JvcmRlckJvdHRvbVdpZHRoJywgJ2QnXSxcbiAgICBbJ2JvcmRlckxlZnRXaWR0aCcsICd3JywgMF0sXG4gICAgWydwYWRkaW5nVG9wJywgJ2gnXSxcbiAgICBbJ3BhZGRpbmdSaWdodCcsICd3J10sXG4gICAgWydwYWRkaW5nQm90dG9tJywgJ2QnXSxcbiAgICBbJ3BhZGRpbmdMZWZ0JywgJ3cnLCAwXVxuICBdO1xuXG4gIC8qKlxuICAgKiAgVGhlc2UgYXJlIHRoZSBkYXRhIHN0b3JlZCBmb3IgYSBib3VuZGluZyBib3hcbiAgICovXG4gIC8qIHRzbGludDpkaXNhYmxlOmpzZG9jLXJlcXVpcmUgKi9cbiAgcHVibGljIHc6IG51bWJlcjtcbiAgcHVibGljIGg6IG51bWJlcjtcbiAgcHVibGljIGQ6IG51bWJlcjtcbiAgcHVibGljIHNjYWxlOiBudW1iZXI7XG4gIHB1YmxpYyByc2NhbGU6IG51bWJlcjsgLy8gc2NhbGUgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCdzIHNjYWxlXG4gIHB1YmxpYyBMOiBudW1iZXI7ICAgICAgLy8gZXh0cmEgc3BhY2Ugb24gdGhlIGxlZnRcbiAgcHVibGljIFI6IG51bWJlcjsgICAgICAvLyBleHRyYSBzcGFjZSBvbiB0aGUgcmlnaHRcbiAgcHVibGljIHB3aWR0aDogc3RyaW5nOyAvLyBwZXJjZW50YWdlIHdpZHRoIChmb3IgdGFibGVzKVxuICBwdWJsaWMgaWM6IG51bWJlcjsgICAgIC8vIGl0YWxpYyBjb3JyZWN0aW9uXG4gIHB1YmxpYyBzazogbnVtYmVyOyAgICAgLy8gc2tld1xuICBwdWJsaWMgZHg6IG51bWJlcjsgICAgIC8vIG9mZnNldCBmb3IgY29tYmluaW5nIGNoYXJhY3RlcnMgYXMgYWNjZW50c1xuICAvKiB0c2xpbnQ6ZW5hYmxlICovXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge0JCb3h9ICBBIEJCb3ggaW5pdGlhbGl6ZWQgdG8gemVyb3NcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgemVybygpOiBCQm94IHtcbiAgICByZXR1cm4gbmV3IEJCb3goe2g6IDAsIGQ6IDAsIHc6IDB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtCQm94fSAgQSBCQm94IHdpdGggaGVpZ2h0IGFuZCBkZXB0aCBub3Qgc2V0XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGVtcHR5KCk6IEJCb3gge1xuICAgIHJldHVybiBuZXcgQkJveCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QkJveERhdGF9IGRlZiAgVGhlIGRhdGEgd2l0aCB3aGljaCB0byBpbml0aWFsaXplIHRoZSBCQm94XG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IoZGVmOiBCQm94RGF0YSA9IHt3OiAwLCBoOiAtQklHRElNRU4sIGQ6IC1CSUdESU1FTn0pIHtcbiAgICB0aGlzLncgPSBkZWYudyB8fCAwO1xuICAgIHRoaXMuaCA9ICgnaCcgaW4gZGVmID8gZGVmLmggOiAtQklHRElNRU4pO1xuICAgIHRoaXMuZCA9ICgnZCcgaW4gZGVmID8gZGVmLmQgOiAtQklHRElNRU4pO1xuICAgIHRoaXMuTCA9IHRoaXMuUiA9IHRoaXMuaWMgPSB0aGlzLnNrID0gdGhpcy5keCA9IDA7XG4gICAgdGhpcy5zY2FsZSA9IHRoaXMucnNjYWxlID0gMTtcbiAgICB0aGlzLnB3aWR0aCA9ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB1cCBhIGJib3ggZm9yIGFwcGVuZCgpIGFuZCBjb21iaW5lKCkgb3BlcmF0aW9uc1xuICAgKiBAcmV0dXJuIHtCQm94fSAgdGhlIGJvb3ggaXRzZWxmIChmb3IgY2hhaW5pbmcgY2FsbHMpXG4gICAqL1xuICBwdWJsaWMgZW1wdHkoKTogQkJveCB7XG4gICAgdGhpcy53ID0gMDtcbiAgICB0aGlzLmggPSB0aGlzLmQgPSAtQklHRElNRU47XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhbnkgdW5zcGVjaWZpZWQgdmFsdWVzIGludG8gemVyb3NcbiAgICovXG4gIHB1YmxpYyBjbGVhbiAoKSB7XG4gICAgaWYgKHRoaXMudyA9PT0gLUJJR0RJTUVOKSB0aGlzLncgPSAwO1xuICAgIGlmICh0aGlzLmggPT09IC1CSUdESU1FTikgdGhpcy5oID0gMDtcbiAgICBpZiAodGhpcy5kID09PSAtQklHRElNRU4pIHRoaXMuZCA9IDA7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNjYWxlICBUaGUgc2NhbGUgdG8gdXNlIHRvIG1vZGlmeSB0aGUgYm91bmRpbmcgYm94IHNpemVcbiAgICovXG4gIHB1YmxpYyByZXNjYWxlKHNjYWxlOiBudW1iZXIpIHtcbiAgICB0aGlzLncgKj0gc2NhbGU7XG4gICAgdGhpcy5oICo9IHNjYWxlO1xuICAgIHRoaXMuZCAqPSBzY2FsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0JCb3h9IGNib3ggIEEgYm91bmRpbmcgdG8gY29tYmluZSB3aXRoIHRoaXMgb25lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4ICAgQW4geC1vZmZlc3QgZm9yIHRoZSBjaGlsZCBib3VuZGluZyBib3hcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgICBBIHktb2Zmc2V0IGZvciB0aGUgY2hpbGQgYm91bmRpbmcgYm94XG4gICAqL1xuICBwdWJsaWMgY29tYmluZShjYm94OiBCQm94LCB4OiBudW1iZXIgPSAwLCB5OiBudW1iZXIgPSAwKSB7XG4gICAgbGV0IHJzY2FsZSA9IGNib3gucnNjYWxlO1xuICAgIGxldCB3ID0geCArIHJzY2FsZSAqIChjYm94LncgKyBjYm94LkwgKyBjYm94LlIpO1xuICAgIGxldCBoID0geSArIHJzY2FsZSAqIGNib3guaDtcbiAgICBsZXQgZCA9IHJzY2FsZSAqIGNib3guZCAtIHk7XG4gICAgaWYgKHcgPiB0aGlzLncpIHRoaXMudyA9IHc7XG4gICAgaWYgKGggPiB0aGlzLmgpIHRoaXMuaCA9IGg7XG4gICAgaWYgKGQgPiB0aGlzLmQpIHRoaXMuZCA9IGQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtCQm94fSBjYm94ICBBIGJvdW5kaW5nIGJveCB0byBiZSBhZGRlZCB0byB0aGUgcmlnaHQgb2YgdGhpcyBvbmVcbiAgICovXG4gIHB1YmxpYyBhcHBlbmQoY2JveDogQkJveCkge1xuICAgIGxldCBzY2FsZSA9IGNib3gucnNjYWxlO1xuICAgIHRoaXMudyArPSBzY2FsZSAqIChjYm94LncgKyBjYm94LkwgKyBjYm94LlIpO1xuICAgIGlmIChzY2FsZSAqIGNib3guaCA+IHRoaXMuaCkge1xuICAgICAgdGhpcy5oID0gc2NhbGUgKiBjYm94Lmg7XG4gICAgfVxuICAgIGlmIChzY2FsZSAqIGNib3guZCA+IHRoaXMuZCkge1xuICAgICAgdGhpcy5kID0gc2NhbGUgKiBjYm94LmQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QkJveH0gY2JveCAgVGhlIGJvdW5kaW5nIGJveCB0byB1c2UgdG8gb3ZlcndyaXRlIHRoaXMgb25lXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlRnJvbShjYm94OiBCQm94KSB7XG4gICAgdGhpcy5oID0gY2JveC5oO1xuICAgIHRoaXMuZCA9IGNib3guZDtcbiAgICB0aGlzLncgPSBjYm94Lnc7XG4gICAgaWYgKGNib3gucHdpZHRoKSB7XG4gICAgICB0aGlzLnB3aWR0aCA9IGNib3gucHdpZHRoO1xuICAgIH1cbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgR2VuZXJpYyBXcmFwcGVyIGNsYXNzIGZvciBhZGRpbmcgbWV0aG9kcyB0byBhIE5vZGUgY2xhc3MgZm9yIHZpc2l0b3JzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge05vZGV9IGZyb20gJy4vTm9kZS5qcyc7XG5pbXBvcnQge1dyYXBwZXJGYWN0b3J5fSBmcm9tICcuL1dyYXBwZXJGYWN0b3J5LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBXcmFwcGVyIGludGVyZmFjZVxuICpcbiAqICBJdCBwb2ludHMgdG8gYSBOb2RlIG9iamVjdC4gIFN1YmNsYXNzZXMgYWRkIG1ldGhvZHMgZm9yIHRoZSB2aXNpdG9yIHRvIGNhbGwuXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBOb2RlIHR5cGUgYmVpbmcgd3JhcHBlZFxuICogQHRlbXBsYXRlIFcgIFRoZSBXcmFwcGVyIHR5cGUgYmVpbmcgcHJvZHVjZWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXcmFwcGVyPE4gZXh0ZW5kcyBOb2RlLCBXIGV4dGVuZHMgV3JhcHBlcjxOLCBXPj4ge1xuICBub2RlOiBOO1xuICByZWFkb25seSBraW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgQSBub2RlIHRvIGJlIHdyYXBwZWRcbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyAgQW55IGFkZGl0aW9uYWwgYXJndW1lbnRzIG5lZWRlZCB3aGVuIGNyZWF0aW5nIHRoZSB3cmFwcGVyXG4gICAqIEByZXR1cm4ge1dyYXBwZXJ9ICAgVGhlIHdyYXBwZWQgbm9kZVxuICAgKi9cbiAgd3JhcChub2RlOiBOLCAuLi5hcmdzOiBhbnlbXSk6IFc7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgV3JhcHBlciBjbGFzcyBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIE5vZGUgdHlwZSBiZWluZyB3cmFwcGVkXG4gKiBAdGVtcGxhdGUgVyAgVGhlIFdyYXBwZXIgdHlwZSBiZWluZyBwcm9kdWNlZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFdyYXBwZXJDbGFzczxOIGV4dGVuZHMgTm9kZSwgVyBleHRlbmRzIFdyYXBwZXI8TiwgVz4+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7V3JhcHBlckZhY3Rvcnl9IGZhY3RvcnkgIFRoZSBmYWN0b3J5IHVzZWQgdG8gY3JlYXRlIG1vcmUgd3JhcHBlcnNcbiAgICogQHBhcmFtIHtOfSBub2RlICBUaGUgbm9kZSB0byBiZSB3cmFwcGVkXG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgIEFueSBhZGRpdGlvbmFsIGFyZ3VtZW50cyBuZWVkZWQgd2hlbiBjcmVhdGluZyB0aGUgd3JhcHBlclxuICAgKiBAcmV0dXJuIHtXfSAgVGhlIHdyYXBwZWQgbm9kZVxuICAgKi9cbiAgbmV3KGZhY3Rvcnk6IFdyYXBwZXJGYWN0b3J5PE4sIFcsIFdyYXBwZXJDbGFzczxOLCBXPj4sIG5vZGU6IE4sIC4uLmFyZ3M6IGFueVtdKTogVztcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBhYnN0cmFjdCBXcmFwcGVyIGNsYXNzXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBOb2RlIHR5cGUgYmVpbmcgY3JlYXRlZCBieSB0aGUgZmFjdG9yeVxuICogQHRlbXBsYXRlIFcgIFRoZSBXcmFwcGVyIHR5cGUgYmVpbmcgcHJvZHVjZWRcbiAqL1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0V3JhcHBlcjxOIGV4dGVuZHMgTm9kZSwgVyBleHRlbmRzIFdyYXBwZXI8TiwgVz4+IGltcGxlbWVudHMgV3JhcHBlcjxOLCBXPiB7XG4gIC8qKlxuICAgKiBUaGUgTm9kZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2VcbiAgICovXG4gIHB1YmxpYyBub2RlOiBOO1xuXG4gIC8qKlxuICAgKiBUaGUgV3JhcHBlckZhY3RvcnkgdG8gdXNlIHRvIHdyYXAgY2hpbGQgbm9kZXMsIGFzIG5lZWRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGZhY3Rvcnk6IFdyYXBwZXJGYWN0b3J5PE4sIFcsIFdyYXBwZXJDbGFzczxOLCBXPj47XG5cbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIHRoaXMgd3JhcHBlclxuICAgKi9cbiAgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZS5raW5kO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7V3JhcHBlckZhY3Rvcnl9IGZhY3RvcnkgIFRoZSBXcmFwcGVyRmFjdG9yeSB0byB1c2UgdG8gd3JhcCBjaGlsZCBub2RlcyB3aGVuIG5lZWRlZFxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUgICAgICAgICAgICAgICBUaGUgbm9kZSB0byB3cmFwXG4gICAqXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKiBAaW1wbGVtZW50cyB7V3JhcHBlcn1cbiAgICovXG4gIGNvbnN0cnVjdG9yKGZhY3Rvcnk6IFdyYXBwZXJGYWN0b3J5PE4sIFcsIFdyYXBwZXJDbGFzczxOLCBXPj4sIG5vZGU6IE4pIHtcbiAgICB0aGlzLmZhY3RvcnkgPSBmYWN0b3J5O1xuICAgIHRoaXMubm9kZSA9IG5vZGU7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgd3JhcChub2RlOiBOKSB7XG4gICAgcmV0dXJuIHRoaXMuZmFjdG9yeS53cmFwKG5vZGUpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgRm9udERhdGEgY2xhc3MgZm9yIGNoYXJhY3RlciBiYm94IGRhdGFcbiAqICAgICAgICAgICAgICAgIGFuZCBzdHJldGNoeSBkZWxpbWl0ZXJzLlxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtPcHRpb25MaXN0LCBkZWZhdWx0T3B0aW9ucywgdXNlck9wdGlvbnN9IGZyb20gJy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5pbXBvcnQge1N0eWxlTGlzdH0gZnJvbSAnLi4vLi4vdXRpbC9TdHlsZUxpc3QuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBUaGUgZXh0cmEgb3B0aW9ucyBhbGxvd2VkIGluIGEgQ2hhckRhdGEgYXJyYXlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFyT3B0aW9ucyB7XG4gIGljPzogbnVtYmVyOyAgICAgICAgICAgICAgICAgIC8vIGl0YWxpYyBjb3JyZWN0aW9uIHZhbHVlXG4gIHNrPzogbnVtYmVyOyAgICAgICAgICAgICAgICAgIC8vIHNrZXcgdmFsdWVcbiAgZHg/OiBudW1iZXI7ICAgICAgICAgICAgICAgICAgLy8gb2Zmc2V0IGZvciBjb21iaW5pbmcgY2hhcmFjdGVyc1xuICB1bmtub3duPzogYm9vbGVhbjsgICAgICAgICAgICAvLyB0cnVlIGlmIG5vdCBmb3VuZCBpbiB0aGUgZ2l2ZW4gdmFyaWFudFxuICBzbXA/OiBudW1iZXI7ICAgICAgICAgICAgICAgICAvLyBNYXRoIEFscGhhbnVtZXJpYyBjb2RlcG9pbnQgdGhpcyBjaGFyIGlzIG1hcHBlZCB0b1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBEYXRhIGFib3V0IGEgY2hhcmFjdGVyXG4gKiAgIFtoZWlnaHQsIGRlcHRoLCB3aWR0aCwge2l0YWxpYy1jb3JyZWN0aW9uLCBza2V3LCBvcHRpb25zfV1cbiAqXG4gKiBAdGVtcGxhdGUgQyAgVGhlIENoYXJPcHRpb25zIHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgQ2hhckRhdGE8QyBleHRlbmRzIENoYXJPcHRpb25zPiA9XG4gIFtudW1iZXIsIG51bWJlciwgbnVtYmVyXSB8XG4gIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBDXTtcblxuLyoqXG4gKiBBbiBvYmplY3QgbWFraW5nIGNoYXJhY3RlciBwb3NpdGlvbnMgdG8gY2hhcmFjdGVyIGRhdGFcbiAqXG4gKiBAdGVtcGxhdGUgQyAgVGhlIENoYXJPcHRpb25zIHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgQ2hhck1hcDxDIGV4dGVuZHMgQ2hhck9wdGlvbnM+ID0ge1xuICBbbjogbnVtYmVyXTogQ2hhckRhdGE8Qz47XG59O1xuXG4vKipcbiAqIEFuIG9iamVjdCBtYWtpbmcgdmFyaWFudHMgdG8gY2hhcmFjdGVyIG1hcHNcbiAqXG4gKiBAdGVtcGxhdGUgQyAgVGhlIENoYXJPcHRpb25zIHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgQ2hhck1hcE1hcDxDIGV4dGVuZHMgQ2hhck9wdGlvbnM+ID0ge1xuICBbbmFtZTogc3RyaW5nXTogQ2hhck1hcDxDPjtcbn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIERhdGEgZm9yIGEgdmFyaWFudFxuICpcbiAqIEB0ZW1wbGF0ZSBDICBUaGUgQ2hhck9wdGlvbnMgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhcmlhbnREYXRhPEMgZXh0ZW5kcyBDaGFyT3B0aW9ucz4ge1xuICAvKipcbiAgICogQSBsaXN0IG9mIENoYXJNYXBzIHRoYXQgbXVzdCBiZSB1cGRhdGVkIHdoZW4gY2hhcmFjdGVycyBhcmVcbiAgICogYWRkZWQgdG8gdGhpcyB2YXJpYW50XG4gICAqL1xuICBsaW5rZWQ6IENoYXJNYXA8Qz5bXTtcbiAgLyoqXG4gICAqIFRoZSBjaGFyYWN0ZXIgZGF0YSBmb3IgdGhpcyB2YXJpYW50XG4gICAqL1xuICBjaGFyczogQ2hhck1hcDxDPjtcbn1cblxuLyoqXG4gKiBBbiBvYmplY3QgbWFraW5nIHZhcmlhbnRzIG5hbWVzIHRvIHZhcmlhbnQgZGF0YVxuICpcbiAqIEB0ZW1wbGF0ZSBDICBUaGUgQ2hhck9wdGlvbnMgdHlwZVxuICogQHRlbXBsYXRlIFYgIFRoZSBWYXJpYW50RGF0YSB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIFZhcmlhbnRNYXA8QyBleHRlbmRzIENoYXJPcHRpb25zLCBWIGV4dGVuZHMgVmFyaWFudERhdGE8Qz4+ID0ge1xuICBbbmFtZTogc3RyaW5nXTogVjtcbn07XG5cblxuLyoqXG4gKiBEYXRhIHRvIHVzZSB0byBtYXAgdW5rbm93biBjaGFyYWN0ZXJzIGluIGEgdmFyaWFudCB0byBhXG4gKiBnZW5lcmljIENTUyBmb250OlxuICpcbiAqICAgIFtmb250bmFtZSwgaXRhbGljLCBib2xkXVxuICovXG5leHBvcnQgdHlwZSBDc3NGb250RGF0YSA9IFtzdHJpbmcsIGJvb2xlYW4sIGJvb2xlYW5dO1xuXG4vKipcbiAqIEFuIG9iamVjdCBtYXBwaW5nIGEgdmFyaWFudCBuYW1lIHRvIHRoZSBDU1MgZGF0YSBuZWVkZWQgZm9yIGl0XG4gKi9cbmV4cG9ydCB0eXBlIENzc0ZvbnRNYXAgPSB7XG4gIFtuYW1lOiBzdHJpbmddOiBDc3NGb250RGF0YTtcbn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIFN0cmV0Y2h5IGRlbGltaXRlciBkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCBlbnVtIERJUkVDVElPTiB7Tm9uZSwgVmVydGljYWwsIEhvcml6b250YWx9XG5leHBvcnQgY29uc3QgViA9IERJUkVDVElPTi5WZXJ0aWNhbDtcbmV4cG9ydCBjb25zdCBIID0gRElSRUNUSU9OLkhvcml6b250YWw7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIERhdGEgbmVlZGVkIGZvciBzdHJldGNoeSB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBjaGFyYWN0ZXJzXG4gKi9cbmV4cG9ydCB0eXBlIERlbGltaXRlckRhdGEgPSB7XG4gIGRpcjogRElSRUNUSU9OOyAgICAgICAvLyB2ZXJ0aWNhbCBvciBob3Jpem9udGFsIGRpcmVjdGlvblxuICBzaXplcz86IG51bWJlcltdOyAgICAgLy8gQXJyYXkgb2YgZml4ZWQgc2l6ZXMgZm9yIHRoaXMgY2hhcmFjdGVyXG4gIHZhcmlhbnRzPzogbnVtYmVyW107ICAvLyBUaGUgdmFyaWFudHMgaW4gd2hpY2ggdGhlIGRpZmZlcmVudCBzaXplcyBjYW4gYmUgZm91bmQgKGlmIG5vdCB0aGUgZGVmYXVsdClcbiAgc2NoYXI/OiBudW1iZXJbXTsgICAgIC8vIFRoZSBjaGFyYWN0ZXIgbnVtYmVyIHRvIHVzZSBmb3IgZWFjaCBzaXplIChpZiBkaWZmZXJlbnQgZnJvbSB0aGUgZGVmYXVsdClcbiAgc3RyZXRjaD86IG51bWJlcltdOyAgIC8vIFRoZSB1bmljb2RlIGNvZGUgcG9pbnRzIGZvciB0aGUgcGFydHMgb2YgbXVsdGktY2hhcmFjdGVyIHZlcnNpb25zIFtiZWcsIGV4dCwgZW5kLCBtaWQ/XVxuICBzdHJldGNodj86IG51bWJlcltdOyAgLy8gdGhlIHZhcmlhbnRzIHRvIHVzZSBmb3IgdGhlIHN0cmV0Y2h5IGNoYXJhY3RlcnMgKGluZGV4IGludG8gdmFyaWFudCBuYW1lIGFycmF5KVxuICBIRFc/OiBudW1iZXJbXTsgICAgICAgLy8gW2gsIGQsIHddIChmb3IgdmVydGljYWwsIGggYW5kIGQgYXJlIHRoZSBub3JtYWwgc2l6ZSwgdyBpcyB0aGUgbXVsdGktY2hhcmFjdGVyIHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICBmb3IgaG9yaXpvbnRhbCwgaCBhbmQgZCBhcmUgdGhlIG11bHRpLWNoYXJhY3RlciBvbmVzLCB3IGlzIGZvciB0aGUgbm9ybWFsIHNpemUpLlxuICBtaW4/OiBudW1iZXI7ICAgICAgICAgLy8gVGhlIG1pbmltdW0gc2l6ZSBhIG11bHRpLWNoYXJhY3RlciB2ZXJzaW9uIGNhbiBiZVxuICBjPzogbnVtYmVyOyAgICAgICAgICAgLy8gVGhlIGNoYXJhY3RlciBudW1iZXIgKGZvciBhbGlhc2VkIGRlbGltaXRlcnMpXG4gIGZ1bGxFeHQ/OiBbbnVtYmVyLCBudW1iZXJdICAvLyBXaGVuIHByZXNlbnQsIGV4dGVuZGVycyBtdXN0IGJlIGZ1bGwgc2l6ZWQsIGFuZCB0aGUgZmlyc3QgbnVtYmVyIGlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgIHRoZSBzaXplIG9mIHRoZSBleHRlbmRlciwgd2hpbGUgdGhlIHNlY29uZCBpcyB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZW5kc1xufTtcblxuLyoqXG4gKiBBbiBvYmplY3QgbWFwcGluZyBjaGFyYWN0ZXIgbnVtYmVycyB0byBkZWxpbWl0ZXIgZGF0YVxuICpcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRGVsaW1pdGVyRGF0YSB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIERlbGltaXRlck1hcDxEIGV4dGVuZHMgRGVsaW1pdGVyRGF0YT4gPSB7XG4gIFtuOiBudW1iZXJdOiBEO1xufTtcblxuLyoqXG4gKiBEZWxpbWl0ZXIgZGF0YSBmb3IgYSBub24tc3RyZXRjaHkgY2hhcmFjdGVyXG4gKi9cbmV4cG9ydCBjb25zdCBOT1NUUkVUQ0g6IERlbGltaXRlckRhdGEgPSB7ZGlyOiBESVJFQ1RJT04uTm9uZX07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIERhdGEgZm9yIHJlbWFwcGluZyBjaGFyYWN0ZXJzXG4gKi9cbmV4cG9ydCB0eXBlIFJlbWFwRGF0YSA9IHN0cmluZztcbmV4cG9ydCB0eXBlIFJlbWFwTWFwID0ge1xuICBba2V5OiBudW1iZXJdOiBSZW1hcERhdGE7XG59O1xuZXhwb3J0IHR5cGUgUmVtYXBNYXBNYXAgPSB7XG4gIFtrZXk6IHN0cmluZ106IFJlbWFwTWFwO1xufTtcblxuLyoqXG4gKiBDaGFyYWN0ZXIgcmVtYXBwaW5nIGRhdGEgZm9yIE1hdGggQWxwaGFudW1lcmljc1xuICovXG5leHBvcnQgdHlwZSBTbXBNYXAgPSB7XG4gIFtjOiBudW1iZXJdOiBudW1iZXI7XG59O1xuXG4vKipcbiAqIERhdGEgZm9yIE1hdGggQWxwaGFudW1lcmljIGNvbnZlcnNpb246ICBzdGFydGluZyBwb3NpdGlvbnMgZm9yXG4gKiAgW0FscGhhLCBhbHBoYSwgR3JlZWssIGdyZWVrLCBOdW1iZXJzXVxuICovXG5leHBvcnQgdHlwZSBTbXBEYXRhID0gW251bWJlciwgbnVtYmVyLCBudW1iZXI/LCBudW1iZXI/LCBudW1iZXI/XTtcblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBGb250IHBhcmFtZXRlcnMgKGZvciBUZVggdHlwZXNldHRpbmcgcnVsZXMpXG4gKi9cbmV4cG9ydCB0eXBlIEZvbnRQYXJhbWV0ZXJzID0ge1xuICB4X2hlaWdodDogbnVtYmVyLFxuICBxdWFkOiBudW1iZXIsXG4gIG51bTE6IG51bWJlcixcbiAgbnVtMjogbnVtYmVyLFxuICBudW0zOiBudW1iZXIsXG4gIGRlbm9tMTogbnVtYmVyLFxuICBkZW5vbTI6IG51bWJlcixcbiAgc3VwMTogbnVtYmVyLFxuICBzdXAyOiBudW1iZXIsXG4gIHN1cDM6IG51bWJlcixcbiAgc3ViMTogbnVtYmVyLFxuICBzdWIyOiBudW1iZXIsXG4gIHN1cF9kcm9wOiBudW1iZXIsXG4gIHN1Yl9kcm9wOiBudW1iZXIsXG4gIGRlbGltMTogbnVtYmVyLFxuICBkZWxpbTI6IG51bWJlcixcbiAgYXhpc19oZWlnaHQ6IG51bWJlcixcbiAgcnVsZV90aGlja25lc3M6IG51bWJlcixcbiAgYmlnX29wX3NwYWNpbmcxOiBudW1iZXIsXG4gIGJpZ19vcF9zcGFjaW5nMjogbnVtYmVyLFxuICBiaWdfb3Bfc3BhY2luZzM6IG51bWJlcixcbiAgYmlnX29wX3NwYWNpbmc0OiBudW1iZXIsXG4gIGJpZ19vcF9zcGFjaW5nNTogbnVtYmVyLFxuXG4gIHN1cmRfaGVpZ2h0OiBudW1iZXIsXG5cbiAgc2NyaXB0c3BhY2U6IG51bWJlcixcbiAgbnVsbGRlbGltaXRlcnNwYWNlOiBudW1iZXIsXG4gIGRlbGltaXRlcmZhY3RvcjogbnVtYmVyLFxuICBkZWxpbWl0ZXJzaG9ydGZhbGw6IG51bWJlcixcblxuICBtaW5fcnVsZV90aGlja25lc3M6IG51bWJlcixcbiAgc2VwYXJhdGlvbl9mYWN0b3I6IG51bWJlcixcbiAgZXh0cmFfaWM6IG51bWJlclxufTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgRm9udERhdGEgY2xhc3MgKGZvciBzdG9yaW5nIGNoYXJhY3RlciBib3VuZGluZyBib3ggZGF0YSBieSB2YXJpYW50LFxuICogICAgICAgICAgICAgICAgICAgICAgYW5kIHRoZSBzdHJldGNoeSBkZWxpbWl0ZXIgZGF0YSkuXG4gKlxuICogQHRlbXBsYXRlIEMgIFRoZSBDaGFyT3B0aW9ucyB0eXBlXG4gKiBAdGVtcGxhdGUgViAgVGhlIFZhcmlhbnREYXRhIHR5cGVcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRGVsaW1pdGVyRGF0YSB0eXBlXG4gKi9cbmV4cG9ydCBjbGFzcyBGb250RGF0YTxDIGV4dGVuZHMgQ2hhck9wdGlvbnMsIFYgZXh0ZW5kcyBWYXJpYW50RGF0YTxDPiwgRCBleHRlbmRzIERlbGltaXRlckRhdGE+IHtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgdGhlIGZvbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgT1BUSU9OUzogT3B0aW9uTGlzdCA9IHtcbiAgICB1bmtub3duRmFtaWx5OiAnc2VyaWYnICAgICAvLyBTaG91bGQgdXNlICdtb25vc3BhY2UnIHdpdGggTGl0ZUFkYXB0b3JcbiAgfTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIG91dHB1dCBqYXggdGhpcyBmb250IGRhdGEgaXMgZm9yICh1c2VkIGJ5IGV4dGVuc2lvbnMpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEpBWDogc3RyaW5nID0gJ2NvbW1vbic7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmb250IHRoYXQgaXMgYmVpbmcgZGVmaW5lZCAodXNlZCBieSBleHRlbnNpb25zKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBOQU1FOiBzdHJpbmcgPSAnJztcblxuICAvKipcbiAgICogIFRoZSBzdGFuZGFyZCB2YXJpYW50cyB0byBkZWZpbmVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFZhcmlhbnRzID0gW1xuICAgIFsnbm9ybWFsJ10sXG4gICAgWydib2xkJywgJ25vcm1hbCddLFxuICAgIFsnaXRhbGljJywgJ25vcm1hbCddLFxuICAgIFsnYm9sZC1pdGFsaWMnLCAnaXRhbGljJywgJ2JvbGQnXSxcbiAgICBbJ2RvdWJsZS1zdHJ1Y2snLCAnYm9sZCddLFxuICAgIFsnZnJha3R1cicsICdub3JtYWwnXSxcbiAgICBbJ2JvbGQtZnJha3R1cicsICdib2xkJywgJ2ZyYWt0dXInXSxcbiAgICBbJ3NjcmlwdCcsICdpdGFsaWMnXSxcbiAgICBbJ2JvbGQtc2NyaXB0JywgJ2JvbGQtaXRhbGljJywgJ3NjcmlwdCddLFxuICAgIFsnc2Fucy1zZXJpZicsICdub3JtYWwnXSxcbiAgICBbJ2JvbGQtc2Fucy1zZXJpZicsICdib2xkJywgJ3NhbnMtc2VyaWYnXSxcbiAgICBbJ3NhbnMtc2VyaWYtaXRhbGljJywgJ2l0YWxpYycsICdzYW5zLXNlcmlmJ10sXG4gICAgWydzYW5zLXNlcmlmLWJvbGQtaXRhbGljJywgJ2JvbGQtaXRhbGljJywgJ2JvbGQtc2Fucy1zZXJpZiddLFxuICAgIFsnbW9ub3NwYWNlJywgJ25vcm1hbCddXG4gIF07XG5cbiAgLyoqXG4gICAqIFRoZSBmYW1pbHksIHN0eWxlLCBhbmQgd2VpZ2h0IHRvIHVzZSBmb3IgZWFjaCB2YXJpYW50IChmb3IgdW5rbm93biBjaGFyYWN0ZXJzKVxuICAgKiBUaGUgJ3Vua25vd24nIGZhbWlseSBpcyByZXBsYWNlZCBieSBvcHRpb25zLnVua25vd25GYW1pbHlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdENzc0ZvbnRzOiBDc3NGb250TWFwID0ge1xuICAgIG5vcm1hbDogWyd1bmtub3duJywgZmFsc2UsIGZhbHNlXSxcbiAgICBib2xkOiBbJ3Vua25vd24nLCBmYWxzZSwgdHJ1ZV0sXG4gICAgaXRhbGljOiBbJ3Vua25vd24nLCB0cnVlLCBmYWxzZV0sXG4gICAgJ2JvbGQtaXRhbGljJzogWyd1bmtub3duJywgdHJ1ZSwgdHJ1ZV0sXG4gICAgJ2RvdWJsZS1zdHJ1Y2snOiBbJ3Vua25vd24nLCBmYWxzZSwgdHJ1ZV0sXG4gICAgZnJha3R1cjogWyd1bmtub3duJywgZmFsc2UsIGZhbHNlXSxcbiAgICAnYm9sZC1mcmFrdHVyJzogWyd1bmtub3duJywgZmFsc2UsIHRydWVdLFxuICAgIHNjcmlwdDogWydjdXJzaXZlJywgZmFsc2UsIGZhbHNlXSxcbiAgICAnYm9sZC1zY3JpcHQnOiBbJ2N1cnNpdmUnLCBmYWxzZSwgdHJ1ZV0sXG4gICAgJ3NhbnMtc2VyaWYnOiBbJ3NhbnMtc2VyaWYnLCBmYWxzZSwgZmFsc2VdLFxuICAgICdib2xkLXNhbnMtc2VyaWYnOiBbJ3NhbnMtc2VyaWYnLCBmYWxzZSwgdHJ1ZV0sXG4gICAgJ3NhbnMtc2VyaWYtaXRhbGljJzogWydzYW5zLXNlcmlmJywgdHJ1ZSwgZmFsc2VdLFxuICAgICdzYW5zLXNlcmlmLWJvbGQtaXRhbGljJzogWydzYW5zLXNlcmlmJywgdHJ1ZSwgdHJ1ZV0sXG4gICAgbW9ub3NwYWNlOiBbJ21vbm9zcGFjZScsIGZhbHNlLCBmYWxzZV1cbiAgfTtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgcHJlZml4IGZvciBleHBsaWNpdCBmb250LWZhbWlseSBzZXR0aW5nc1xuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBkZWZhdWx0Q3NzRmFtaWx5UHJlZml4ID0gJyc7XG5cbiAgLyoqXG4gICAqIFZhcmlhbnQgbG9jYXRpb25zIGluIHRoZSBNYXRoIEFscGhhYm51bWVyaWNzIGJsb2NrOlxuICAgKiAgW3VwcGVyLWFscGhhLCBsb3dlci1hbHBoYSwgdXBwZXItR3JlZWssIGxvd2VyLUdyZWVrLCBudW1iZXJzXVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBWYXJpYW50U21wOiB7W25hbWU6IHN0cmluZ106IFNtcERhdGF9ID0ge1xuICAgIGJvbGQ6IFsweDFENDAwLCAweDFENDFBLCAweDFENkE4LCAweDFENkMyLCAweDFEN0NFXSxcbiAgICBpdGFsaWM6IFsweDFENDM0LCAweDFENDRFLCAweDFENkUyLCAweDFENkZDXSxcbiAgICAnYm9sZC1pdGFsaWMnOiBbMHgxRDQ2OCwgMHgxRDQ4MiwgMHgxRDcxQywgMHgxRDczNl0sXG4gICAgc2NyaXB0OiBbMHgxRDQ5QywgMHgxRDRCNl0sXG4gICAgJ2JvbGQtc2NyaXB0JzogWzB4MUQ0RDAsIDB4MUQ0RUFdLFxuICAgIGZyYWt0dXI6IFsweDFENTA0LCAweDFENTFFXSxcbiAgICAnZG91YmxlLXN0cnVjayc6IFsweDFENTM4LCAweDFENTUyLCAsICwgMHgxRDdEOF0sXG4gICAgJ2JvbGQtZnJha3R1cic6IFsweDFENTZDLCAweDFENTg2XSxcbiAgICAnc2Fucy1zZXJpZic6IFsweDFENUEwLCAweDFENUJBLCAsICwgMHgxRDdFMl0sXG4gICAgJ2JvbGQtc2Fucy1zZXJpZic6IFsweDFENUQ0LCAweDFENUVFLCAweDFENzU2LCAweDFENzcwLCAweDFEN0VDXSxcbiAgICAnc2Fucy1zZXJpZi1pdGFsaWMnOiBbMHgxRDYwOCwgMHgxRDYyMl0sXG4gICAgJ3NhbnMtc2VyaWYtYm9sZC1pdGFsaWMnOiBbMHgxRDYzQywgMHgxRDY1NiwgMHgxRDc5MCwgMHgxRDdBQV0sXG4gICAgJ21vbm9zcGFjZSc6IFsweDFENjcwLCAweDFENjhBLCAsICwgMHgxRDdGNl1cbiAgfTtcblxuICAvKipcbiAgICogQ2hhcmFjdGVyIHJhbmdlcyB0byByZW1hcCBpbnRvIE1hdGggQWxwaGFudW1lcmljc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBTbXBSYW5nZXMgPSBbXG4gICAgWzAsIDB4NDEsIDB4NUFdLCAgIC8vIFVwcGVyLWNhc2UgYWxwaGFcbiAgICBbMSwgMHg2MSwgMHg3QV0sICAgLy8gTG93ZXItY2FzZSBhbHBoYVxuICAgIFsyLCAweDM5MSwgMHgzQTldLCAvLyBVcHBlci1jYXNlIEdyZWVrXG4gICAgWzMsIDB4M0IxLCAweDNDOV0sIC8vIExvd2VyLWNhc2UgR3JlZWtcbiAgICBbNCwgMHgzMCwgMHgzOV0gICAgLy8gTnVtYmVyc1xuICBdO1xuXG4gIC8qKlxuICAgKiBDaGFyYWN0ZXJzIHRvIG1hcCBiYWNrIHRvcCBvdGhlciBVbmljb2RlIHBvc2l0aW9uc1xuICAgKiAoaG9sZXMgaW4gdGhlIE1hdGggQWxwaGFudW1lcmljIHJhbmdlcylcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgU21wUmVtYXA6IFNtcE1hcCA9IHtcbiAgICAweDFENDU1OiAweDIxMEUsICAgLy8gUExBTkNLIENPTlNUQU5UXG4gICAgMHgxRDQ5RDogMHgyMTJDLCAgIC8vIFNDUklQVCBDQVBJVEFMIEJcbiAgICAweDFENEEwOiAweDIxMzAsICAgLy8gU0NSSVBUIENBUElUQUwgRVxuICAgIDB4MUQ0QTE6IDB4MjEzMSwgICAvLyBTQ1JJUFQgQ0FQSVRBTCBGXG4gICAgMHgxRDRBMzogMHgyMTBCLCAgIC8vIFNDUklQVCBDQVBJVEFMIEhcbiAgICAweDFENEE0OiAweDIxMTAsICAgLy8gU0NSSVBUIENBUElUQUwgSVxuICAgIDB4MUQ0QTc6IDB4MjExMiwgICAvLyBTQ1JJUFQgQ0FQSVRBTCBMXG4gICAgMHgxRDRBODogMHgyMTMzLCAgIC8vIFNDUklQVCBDQVBJVEFMIE1cbiAgICAweDFENEFEOiAweDIxMUIsICAgLy8gU0NSSVBUIENBUElUQUwgUlxuICAgIDB4MUQ0QkE6IDB4MjEyRiwgICAvLyBTQ1JJUFQgU01BTEwgRVxuICAgIDB4MUQ0QkM6IDB4MjEwQSwgICAvLyBTQ1JJUFQgU01BTEwgR1xuICAgIDB4MUQ0QzQ6IDB4MjEzNCwgICAvLyBTQ1JJUFQgU01BTEwgT1xuICAgIDB4MUQ1MDY6IDB4MjEyRCwgICAvLyBCTEFDSy1MRVRURVIgQ0FQSVRBTCBDXG4gICAgMHgxRDUwQjogMHgyMTBDLCAgIC8vIEJMQUNLLUxFVFRFUiBDQVBJVEFMIEhcbiAgICAweDFENTBDOiAweDIxMTEsICAgLy8gQkxBQ0stTEVUVEVSIENBUElUQUwgSVxuICAgIDB4MUQ1MTU6IDB4MjExQywgICAvLyBCTEFDSy1MRVRURVIgQ0FQSVRBTCBSXG4gICAgMHgxRDUxRDogMHgyMTI4LCAgIC8vIEJMQUNLLUxFVFRFUiBDQVBJVEFMIFpcbiAgICAweDFENTNBOiAweDIxMDIsICAgLy8gRE9VQkxFLVNUUlVDSyBDQVBJVEFMIENcbiAgICAweDFENTNGOiAweDIxMEQsICAgLy8gRE9VQkxFLVNUUlVDSyBDQVBJVEFMIEhcbiAgICAweDFENTQ1OiAweDIxMTUsICAgLy8gRE9VQkxFLVNUUlVDSyBDQVBJVEFMIE5cbiAgICAweDFENTQ3OiAweDIxMTksICAgLy8gRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFBcbiAgICAweDFENTQ4OiAweDIxMUEsICAgLy8gRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFFcbiAgICAweDFENTQ5OiAweDIxMUQsICAgLy8gRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFJcbiAgICAweDFENTUxOiAweDIxMjQsICAgLy8gRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFpcbiAgfTtcblxuICAvKipcbiAgICogR3JlZWsgdXBwZXItY2FzZSB2YXJpYW50c1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBTbXBSZW1hcEdyZWVrVTogU21wTWFwID0ge1xuICAgIDB4MjIwNzogMHgxOSwgIC8vIG5hYmxhXG4gICAgMHgwM0Y0OiAweDExICAgLy8gdGhldGEgc3ltYm9sXG4gIH07XG5cbiAgLyoqXG4gICAqIEdyZWVrIGxvd2VyLWNhc2UgdmFyaWFudHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgU21wUmVtYXBHcmVla0w6IFNtcE1hcCA9IHtcbiAgICAweDNEMTogMHgxQiwgIC8vIHRoZXRhIHN5bWJvbFxuICAgIDB4M0Q1OiAweDFELCAgLy8gcGhpIHN5bWJvbFxuICAgIDB4M0Q2OiAweDFGLCAgLy8gb21lZ2Egc3ltYm9sXG4gICAgMHgzRjA6IDB4MUMsICAvLyBrYXBwYSBzeW1ib2xcbiAgICAweDNGMTogMHgxRSwgIC8vIHJobyBzeW1ib2xcbiAgICAweDNGNTogMHgxQSwgIC8vIGx1bmF0ZSBlcHNpbG9uIHN5bWJvbFxuICAgIDB4MjIwMjogMHgxOSAgLy8gcGFydGlhbCBkaWZmZXJlbnRpYWxcbiAgfTtcblxuICAvKipcbiAgICogIFRoZSBkZWZhdWx0IHJlbWFwcGluZ3NcbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZGVmYXVsdEFjY2VudE1hcDogUmVtYXBNYXAgPSB7XG4gICAgMHgwMzAwOiAnXFx1MDJDQicsICAvLyBncmF2ZSBhY2NlbnRcbiAgICAweDAzMDE6ICdcXHUwMkNBJywgIC8vIGFjdXRlIGFjY2VudFxuICAgIDB4MDMwMjogJ1xcdTAyQzYnLCAgLy8gY3VyY3VtZmxleFxuICAgIDB4MDMwMzogJ1xcdTAyREMnLCAgLy8gdGlsZGUgYWNjZW50XG4gICAgMHgwMzA0OiAnXFx1MDJDOScsICAvLyBtYWNyb25cbiAgICAweDAzMDY6ICdcXHUwMkQ4JywgIC8vIGJyZXZlXG4gICAgMHgwMzA3OiAnXFx1MDJEOScsICAvLyBkb3RcbiAgICAweDAzMDg6ICdcXHUwMEE4JywgIC8vIGRpYXJlc2lzXG4gICAgMHgwMzBBOiAnXFx1MDJEQScsICAvLyByaW5nIGFib3ZlXG4gICAgMHgwMzBDOiAnXFx1MDJDNycsICAvLyBjYXJvblxuICAgIDB4MjE5MjogJ1xcdTIwRDcnLFxuICAgIDB4MjAzMjogJ1xcJycsXG4gICAgMHgyMDMzOiAnXFwnXFwnJyxcbiAgICAweDIwMzQ6ICdcXCdcXCdcXCcnLFxuICAgIDB4MjAzNTogJ2AnLFxuICAgIDB4MjAzNjogJ2BgJyxcbiAgICAweDIwMzc6ICdgYGAnLFxuICAgIDB4MjA1NzogJ1xcJ1xcJ1xcJ1xcJycsXG4gICAgMHgyMEQwOiAnXFx1MjFCQycsIC8vIGNvbWJpbmluZyBsZWZ0IGhhcnBvb25cbiAgICAweDIwRDE6ICdcXHUyMUMwJywgLy8gY29tYmluaW5nIHJpZ2h0IGhhcnBvb25cbiAgICAweDIwRDY6ICdcXHUyMTkwJywgLy8gY29tYmluaW5nIGxlZnQgYXJyb3dcbiAgICAweDIwRTE6ICdcXHUyMTk0JywgLy8gY29tYmluaW5nIGxlZnQtcmlnaHQgYXJyb3dcbiAgICAweDIwRjA6ICcqJywgICAgICAvLyBjb21iaW5pbmcgYXN0ZXJpc2tcbiAgICAweDIwREI6ICcuLi4nLCAgICAvLyBjb21iaW5pbmcgdGhyZWUgZG90cyBhYm92ZVxuICAgIDB4MjBEQzogJy4uLi4nLCAgIC8vIGNvbWJpbmluZyBmb3VyIGRvdHMgYWJvdmVcbiAgICAweDIwRUM6ICdcXHUyMUMxJywgLy8gY29tYmluaW5nIGxvdyBsZWZ0IGhhcnBvb25cbiAgICAweDIwRUQ6ICdcXHUyMUJEJywgLy8gY29tYmluaW5nIGxvdyByaWdodCBoYXJwb29uXG4gICAgMHgyMEVFOiAnXFx1MjE5MCcsIC8vIGNvbWJpbmluZyBsb3cgbGVmdCBhcnJvd3NcbiAgICAweDIwRUY6ICdcXHUyMTkyJyAgLy8gY29tYmluaW5nIGxvdyByaWdodCBhcnJvd3NcbiAgfTtcblxuICAvKipcbiAgICogRGVmYXVsdCBtYXAgZm9yIGNoYXJhY3RlcnMgaW5zaWRlIDxtbz5cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZGVmYXVsdE1vTWFwOiBSZW1hcE1hcCA9IHtcbiAgICAweDAwMkQ6ICdcXHUyMjEyJyAvLyBoeXBoZW5cbiAgfTtcblxuICAvKipcbiAgICogRGVmYXVsdCBtYXAgZm9yIGNoYXJhY3RlcnMgaW5zaWRlIDxtbj5cbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZGVmYXVsdE1uTWFwOiBSZW1hcE1hcCA9IHtcbiAgICAweDAwMkQ6ICdcXHUyMjEyJyAvLyBoeXBoZW5cbiAgfTtcblxuICAvKipcbiAgICogIFRoZSBkZWZhdWx0IGZvbnQgcGFyYW1ldGVycyBmb3IgdGhlIGZvbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdFBhcmFtczogRm9udFBhcmFtZXRlcnMgPSB7XG4gICAgeF9oZWlnaHQ6ICAgICAgICAgLjQ0MixcbiAgICBxdWFkOiAgICAgICAgICAgICAxLFxuICAgIG51bTE6ICAgICAgICAgICAgIC42NzYsXG4gICAgbnVtMjogICAgICAgICAgICAgLjM5NCxcbiAgICBudW0zOiAgICAgICAgICAgICAuNDQ0LFxuICAgIGRlbm9tMTogICAgICAgICAgIC42ODYsXG4gICAgZGVub20yOiAgICAgICAgICAgLjM0NSxcbiAgICBzdXAxOiAgICAgICAgICAgICAuNDEzLFxuICAgIHN1cDI6ICAgICAgICAgICAgIC4zNjMsXG4gICAgc3VwMzogICAgICAgICAgICAgLjI4OSxcbiAgICBzdWIxOiAgICAgICAgICAgICAuMTUsXG4gICAgc3ViMjogICAgICAgICAgICAgLjI0NyxcbiAgICBzdXBfZHJvcDogICAgICAgICAuMzg2LFxuICAgIHN1Yl9kcm9wOiAgICAgICAgIC4wNSxcbiAgICBkZWxpbTE6ICAgICAgICAgIDIuMzksXG4gICAgZGVsaW0yOiAgICAgICAgICAxLjAsXG4gICAgYXhpc19oZWlnaHQ6ICAgICAgLjI1LFxuICAgIHJ1bGVfdGhpY2tuZXNzOiAgIC4wNixcbiAgICBiaWdfb3Bfc3BhY2luZzE6ICAuMTExLFxuICAgIGJpZ19vcF9zcGFjaW5nMjogIC4xNjcsXG4gICAgYmlnX29wX3NwYWNpbmczOiAgLjIsXG4gICAgYmlnX29wX3NwYWNpbmc0OiAgLjYsXG4gICAgYmlnX29wX3NwYWNpbmc1OiAgLjEsXG5cbiAgICBzdXJkX2hlaWdodDogICAgICAuMDc1LFxuXG4gICAgc2NyaXB0c3BhY2U6ICAgICAgICAgLjA1LFxuICAgIG51bGxkZWxpbWl0ZXJzcGFjZTogIC4xMixcbiAgICBkZWxpbWl0ZXJmYWN0b3I6ICAgICA5MDEsXG4gICAgZGVsaW1pdGVyc2hvcnRmYWxsOiAgIC4zLFxuXG4gICAgbWluX3J1bGVfdGhpY2tuZXNzOiAgMS4yNSwgICAgIC8vIGluIHBpeGVsc1xuICAgIHNlcGFyYXRpb25fZmFjdG9yOiAgIDEuNzUsICAgICAvLyBleHBhbnNpb24gZmFjdG9yIGZvciBzcGFjaW5nIGUuZy4gYmV0d2VlbiBhY2NlbnRzIGFuZCBiYXNlXG4gICAgZXh0cmFfaWM6ICAgICAgICAgICAgLjAzMyAgICAgIC8vIGV4dHJhIHNwYWNpbmcgZm9yIHNjcmlwdHMgKGNvbXBlbnNhdGUgZm9yIG5vdCBoYXZpbmcgYWN0dWFsIGljIHZhbHVlcylcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgZGVsaW1pdGVyIGRhdGFcbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZGVmYXVsdERlbGltaXRlcnM6IERlbGltaXRlck1hcDxhbnk+ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGNoYXJhY3RlciBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGRlZmF1bHRDaGFyczogQ2hhck1hcE1hcDxhbnk+ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHZhcmlhbnRzIGZvciB0aGUgZml4ZWQgc2l6ZSBzdHJldGNoeSBkZWxpbWl0ZXJzXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGRlZmF1bHRTaXplVmFyaWFudHM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IHZhcmlhbnRzIGZvciB0aGUgYXNzZW1ibHkgcGFydHMgZm9yIHN0cmV0Y2h5IGRlbGltaXRlcnNcbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZGVmYXVsdFN0cmV0Y2hWYXJpYW50czogc3RyaW5nW10gPSBbXTtcblxuICAvKipcbiAgICogVGhlIGZvbnQgb3B0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIG9wdGlvbnM6IE9wdGlvbkxpc3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgdmFyaWFudCBpbmZvcm1hdGlvbiBmb3IgdGhpcyBmb250XG4gICAqL1xuICBwcm90ZWN0ZWQgdmFyaWFudDogVmFyaWFudE1hcDxDLCBWPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIGRlbGltaXRlciBpbmZvcm1hdGlvbiBmb3IgdGhpcyBmb250XG4gICAqL1xuICBwcm90ZWN0ZWQgZGVsaW1pdGVyczogRGVsaW1pdGVyTWFwPEQ+ID0ge307XG5cbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgc2l6ZSB2YXJpYW50cyB0byB1c2UgZm9yIHRoaXMgZm9udFxuICAgKi9cbiAgcHJvdGVjdGVkIHNpemVWYXJpYW50czogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBhY3R1YWwgc3RyZXRjaHkgdmFyaWFudHMgdG8gdXNlIGZvciB0aGlzIGZvbnRcbiAgICovXG4gIHByb3RlY3RlZCBzdHJldGNoVmFyaWFudHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YSB0byB1c2UgdG8gbWFrZSB2YXJpYW50cyB0byBkZWZhdWx0IGZvbnRzIGFuZCBjc3MgZm9yIHVua25vd24gY2hhcmFjdGVyc1xuICAgKi9cbiAgcHJvdGVjdGVkIGNzc0ZvbnRNYXA6IENzc0ZvbnRNYXAgPSB7fTtcblxuICAvKipcbiAgICogQSBwcmVmaXggdG8gdXNlIGZvciBleHBsaWNpdCBmb250LWZhbWlseSBDU1Mgc2V0dGluZ3NcbiAgICovXG4gIHB1YmxpYyBjc3NGYW1pbHlQcmVmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNoYXJhY3RlciBtYXBzXG4gICAqL1xuICBwcm90ZWN0ZWQgcmVtYXBDaGFyczogUmVtYXBNYXBNYXAgPSB7fTtcblxuICAvKipcbiAgICogVGhlIGFjdHVhbCBmb250IHBhcmFtZXRlcnMgZm9yIHRoaXMgZm9udFxuICAgKi9cbiAgcHVibGljIHBhcmFtczogRm9udFBhcmFtZXRlcnM7XG5cbiAgLyoqXG4gICAqIEZhY3RvciBieSB3aGljaCB0byBtdWx0aXBseSBpdGFsaWMgY29ycmVjdGlvbiBmb3IgY29tcHV0YXRpb24gb2YgZGVsdGEgaW4gbXVuZGVyb3ZlclxuICAgKi9cbiAgcHVibGljIHNrZXdJY0ZhY3RvcjogbnVtYmVyID0gLjc1O1xuXG4gIC8qKlxuICAgKiBBbnkgc3R5bGVzIG5lZWRlZCBmb3IgdGhlIGZvbnRcbiAgICovXG4gIHByb3RlY3RlZCBfc3R5bGVzOiBTdHlsZUxpc3Q7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Q2hhck1hcH0gZm9udCAgIFRoZSBmb250IHRvIGNoZWNrXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuICAgICAgIFRoZSBjaGFyYWN0ZXIgdG8gZ2V0IG9wdGlvbnMgZm9yXG4gICAqIEByZXR1cm4ge0NoYXJPcHRpb25zfSAgIFRoZSBvcHRpb25zIGZvciB0aGUgY2hhcmFjdGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGNoYXJPcHRpb25zKGZvbnQ6IENoYXJNYXA8Q2hhck9wdGlvbnM+LCBuOiBudW1iZXIpOiBDaGFyT3B0aW9ucyB7XG4gICAgY29uc3QgY2hhciA9IGZvbnRbbl07XG4gICAgaWYgKGNoYXIubGVuZ3RoID09PSAzKSB7XG4gICAgICAoY2hhciBhcyBhbnkpWzNdID0ge307XG4gICAgfVxuICAgIHJldHVybiBjaGFyWzNdO1xuICB9XG5cbiAgLyoqXG4gICAqIENvcGllcyB0aGUgZGF0YSBmcm9tIHRoZSBkZWZhdWx0cyB0byB0aGUgaW5zdGFuY2VcbiAgICpcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICAgVGhlIG9wdGlvbnMgZm9yIHRoaXMgZm9udFxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbkxpc3QgPSBudWxsKSB7XG4gICAgbGV0IENMQVNTID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEZvbnREYXRhKTtcbiAgICB0aGlzLm9wdGlvbnMgPSB1c2VyT3B0aW9ucyhkZWZhdWx0T3B0aW9ucyh7fSwgQ0xBU1MuT1BUSU9OUyksIG9wdGlvbnMpO1xuICAgIHRoaXMucGFyYW1zID0gey4uLkNMQVNTLmRlZmF1bHRQYXJhbXN9O1xuICAgIHRoaXMuc2l6ZVZhcmlhbnRzID0gWy4uLkNMQVNTLmRlZmF1bHRTaXplVmFyaWFudHNdO1xuICAgIHRoaXMuc3RyZXRjaFZhcmlhbnRzID0gWy4uLkNMQVNTLmRlZmF1bHRTdHJldGNoVmFyaWFudHNdO1xuICAgIHRoaXMuY3NzRm9udE1hcCA9IHsuLi5DTEFTUy5kZWZhdWx0Q3NzRm9udHN9O1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyh0aGlzLmNzc0ZvbnRNYXApKSB7XG4gICAgICBpZiAodGhpcy5jc3NGb250TWFwW25hbWVdWzBdID09PSAndW5rbm93bicpIHtcbiAgICAgICAgdGhpcy5jc3NGb250TWFwW25hbWVdWzBdID0gdGhpcy5vcHRpb25zLnVua25vd25GYW1pbHk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY3NzRmFtaWx5UHJlZml4ID0gQ0xBU1MuZGVmYXVsdENzc0ZhbWlseVByZWZpeDtcbiAgICB0aGlzLmNyZWF0ZVZhcmlhbnRzKENMQVNTLmRlZmF1bHRWYXJpYW50cyk7XG4gICAgdGhpcy5kZWZpbmVEZWxpbWl0ZXJzKENMQVNTLmRlZmF1bHREZWxpbWl0ZXJzKTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoQ0xBU1MuZGVmYXVsdENoYXJzKSkge1xuICAgICAgdGhpcy5kZWZpbmVDaGFycyhuYW1lLCBDTEFTUy5kZWZhdWx0Q2hhcnNbbmFtZV0pO1xuICAgIH1cbiAgICB0aGlzLmRlZmluZVJlbWFwKCdhY2NlbnQnLCBDTEFTUy5kZWZhdWx0QWNjZW50TWFwKTtcbiAgICB0aGlzLmRlZmluZVJlbWFwKCdtbycsIENMQVNTLmRlZmF1bHRNb01hcCk7XG4gICAgdGhpcy5kZWZpbmVSZW1hcCgnbW4nLCBDTEFTUy5kZWZhdWx0TW5NYXApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbGlzdCBvZiBzdHlsZXMgbmVlZGVkIGZvciB0aGUgZm9udFxuICAgKi9cbiAgZ2V0IHN0eWxlcygpOiBTdHlsZUxpc3Qge1xuICAgIHJldHVybiB0aGlzLl9zdHlsZXM7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyBzdHlsZXMgbmVlZGVkIGZvciB0aGF0IGZvbnQuXG4gICAqL1xuICBzZXQgc3R5bGVzKHN0eWxlOiBTdHlsZUxpc3QpIHtcbiAgICB0aGlzLl9zdHlsZXMgPSBzdHlsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBkYXRhIHN0cnVjdHVyZSBmb3IgYSB2YXJpYW50IC0tIGFuIG9iamVjdCB3aXRoXG4gICAqICAgcHJvdG90eXBlIGNoYWluIHRoYXQgaW5jbHVkZXMgYSBjb3B5IG9mIHRoZSBsaW5rZWQgdmFyaWFudCxcbiAgICogICBhbmQgdGhlbiB0aGUgaW5oZXJpdGVkIHZhcmlhbnQgY2hhaW4uXG4gICAqXG4gICAqICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBleHRyYSBsaW5rIGlzIHRoYXQgZm9yIGEgbWF0aHZhcmlhbnQgbGlrZVxuICAgKiAgIGJvbGQtaXRhbGljLCB5b3Ugd2FudCB0byBpbmhlcml0IGZyb20gYm90aCB0aGUgYm9sZCBhbmRcbiAgICogICBpdGFsaWMgdmFyaWFudHMsIGJ1dCB0aGUgcHJvdG90eXBlIGNoYWluIGNhbiBvbmx5IGluaGVyaXRcbiAgICogICBmcm9tIG9uZS4gU28gZm9yIGJvbGQtaXRhbGljLCB3ZSBtYWtlIGFuIG9iamVjdCB0aGF0IGhhcyBhXG4gICAqICAgcHJvdG90eXBlIGNvbnNpc3Rpbmcgb2YgYSBjb3B5IG9mIHRoZSBib2xkIGRhdGEsIGFuZCBhZGQgdGhlXG4gICAqICAgaXRhbGljIGRhdGEgYXMgdGhlIHByb3RvdHlwZSBjaGFpbi4gKFNpbmNlIHRoaXMgaXMgYSBjb3B5LCB3ZVxuICAgKiAgIGtlZXAgYSByZWNvcmQgb2YgdGhpcyBsaW5rIHNvIHRoYXQgaWYgYm9sZCBpcyBjaGFuZ2VkIGxhdGVyLFxuICAgKiAgIHdlIGNhbiB1cGRhdGUgdGhpcyBjb3B5LiBUaGF0IGlzIG5vdCBuZWVkZWQgZm9yIHRoZSBwcm90b3R5cGVcbiAgICogICBjaGFpbiwgc2luY2UgdGhlIHByb3RvdHlwZXMgYXJlIHRoZSBhY3R1YWwgb2JqZWN0cywgbm90XG4gICAqICAgY29waWVzLikgV2UgdGhlbiB1c2UgdGhpcyBib2xkLXBsdXMtaXRhbGljIG9iamVjdCBhcyB0aGVcbiAgICogICBwcm90b3R5cGUgY2hhaW4gZm9yIHRoZSBib2xkLWl0YWxpYyBvYmplY3RcbiAgICpcbiAgICogICBUaGF0IG1lYW5zIHRoYXQgYm9sZC1pdGFsaWMgd2lsbCBmaXJzdCBsb29rIGluIGl0cyBvd24gb2JqZWN0XG4gICAqICAgZm9yIHNwZWNpZmljYWxseSBib2xkLWl0YWxpYyBnbHlwaHMgdGhhdCBhcmUgZGVmaW5lZCB0aGVyZSxcbiAgICogICB0aGVuIGluIHRoZSBjb3B5IG9mIHRoZSBib2xkIGdseXBocyAob25seSBpdHMgdG9wIGxldmVsIGlzXG4gICAqICAgY29waWVkLCBub3QgaXRzIHByb3RvdHlwZSBjaGFpbiksIGFuZCB0aGVuIHRoZSBzcGVjaWZpY2FsbHlcbiAgICogICBpdGFsaWMgZ2x5cGhzLCBhbmQgdGhlbiB0aGUgcHJvdG90eXBlIGNoYWluIGZvciBpdGFsaWNzLFxuICAgKiAgIHdoaWNoIGlzIHRoZSBub3JtYWwgZ2x5cGhzLiBFZmZlY3RpdmVseSwgdGhpcyBtZWFuc1xuICAgKiAgIGJvbGQtaXRhbGljIGxvb2tzIGZvciBib2xkLWl0YWxpYywgdGhlbiBib2xkLCB0aGVuIGl0YWxpYyxcbiAgICogICB0aGVuIG5vcm1hbCBnbHlwaHMgaW4gb3JkZXIgdG8gZmluZCB0aGUgZ2l2ZW4gY2hhcmFjdGVyLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgVGhlIG5ldyB2YXJpYW50IHRvIGNyZWF0ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gaW5oZXJpdCAgVGhlIHZhcmlhbnQgdG8gdXNlIGlmIGEgY2hhcmFjdGVyIGlzIG5vdCBpbiB0aGlzIG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbGluayAgICAgQSB2YXJpYW50IHRvIHNlYXJjaCBiZWZvcmUgdGhlIGluaGVyaXQgb25lIChidXQgb25seVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0cyB0b3AtbGV2ZWwgb2JqZWN0KS5cbiAgICovXG4gIHB1YmxpYyBjcmVhdGVWYXJpYW50KG5hbWU6IHN0cmluZywgaW5oZXJpdDogc3RyaW5nID0gbnVsbCwgbGluazogc3RyaW5nID0gbnVsbCkge1xuICAgIGxldCB2YXJpYW50ID0ge1xuICAgICAgbGlua2VkOiBbXSBhcyBDaGFyTWFwPEM+W10sXG4gICAgICBjaGFyczogKGluaGVyaXQgPyBPYmplY3QuY3JlYXRlKHRoaXMudmFyaWFudFtpbmhlcml0XS5jaGFycykgOiB7fSkgYXMgQ2hhck1hcDxDPlxuICAgIH0gYXMgVjtcbiAgICBpZiAobGluayAmJiB0aGlzLnZhcmlhbnRbbGlua10pIHtcbiAgICAgIE9iamVjdC5hc3NpZ24odmFyaWFudC5jaGFycywgdGhpcy52YXJpYW50W2xpbmtdLmNoYXJzKTtcbiAgICAgIHRoaXMudmFyaWFudFtsaW5rXS5saW5rZWQucHVzaCh2YXJpYW50LmNoYXJzKTtcbiAgICAgIHZhcmlhbnQuY2hhcnMgPSBPYmplY3QuY3JlYXRlKHZhcmlhbnQuY2hhcnMpO1xuICAgIH1cbiAgICB0aGlzLnJlbWFwU21wQ2hhcnModmFyaWFudC5jaGFycywgbmFtZSk7XG4gICAgdGhpcy52YXJpYW50W25hbWVdID0gdmFyaWFudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIG1hcHBpbmcgZnJvbSBCYXNpYyBMYXRpbiBhbmQgR3JlZWsgYmxvY2tzIHRvXG4gICAqIHRoZSBNYXRoIEFscGhhbnVtZXJpYyBibG9jayBmb3IgYSBnaXZlbiB2YXJpYW50LlxuICAgKi9cbiAgcHJvdGVjdGVkIHJlbWFwU21wQ2hhcnMoY2hhcnM6IENoYXJNYXA8Qz4sIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IENMQVNTID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEZvbnREYXRhKTtcbiAgICBpZiAoQ0xBU1MuVmFyaWFudFNtcFtuYW1lXSkge1xuICAgICAgY29uc3QgU21wUmVtYXAgPSBDTEFTUy5TbXBSZW1hcDtcbiAgICAgIGNvbnN0IFNtcEdyZWVrID0gW251bGwsIG51bGwsIENMQVNTLlNtcFJlbWFwR3JlZWtVLCBDTEFTUy5TbXBSZW1hcEdyZWVrTF07XG4gICAgICBmb3IgKGNvbnN0IFtpLCBsbywgaGldIG9mIENMQVNTLlNtcFJhbmdlcykge1xuICAgICAgICBjb25zdCBiYXNlID0gQ0xBU1MuVmFyaWFudFNtcFtuYW1lXVtpXTtcbiAgICAgICAgaWYgKCFiYXNlKSBjb250aW51ZTtcbiAgICAgICAgZm9yIChsZXQgbiA9IGxvOyBuIDw9IGhpOyBuKyspIHtcbiAgICAgICAgICBpZiAobiA9PT0gMHgzQTIpIGNvbnRpbnVlO1xuICAgICAgICAgIGNvbnN0IHNtcCA9IGJhc2UgKyBuIC0gbG87XG4gICAgICAgICAgY2hhcnNbbl0gPSB0aGlzLnNtcENoYXIoU21wUmVtYXBbc21wXSB8fCBzbXApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChTbXBHcmVla1tpXSkge1xuICAgICAgICAgIGZvciAoY29uc3QgbiBvZiBPYmplY3Qua2V5cyhTbXBHcmVla1tpXSkubWFwKCh4KSA9PiBwYXJzZUludCh4KSkpIHtcbiAgICAgICAgICAgIGNoYXJzW25dID0gdGhpcy5zbXBDaGFyKGJhc2UgKyBTbXBHcmVla1tpXVtuXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuYW1lID09PSAnYm9sZCcpIHtcbiAgICAgIGNoYXJzWzB4M0RDXSA9IHRoaXMuc21wQ2hhcigweDFEN0NBKTtcbiAgICAgIGNoYXJzWzB4M0REXSA9IHRoaXMuc21wQ2hhcigweDFEN0NCKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gICAgICBNYXRoIEFscGhhbnVtZXJpY3MgcG9zaXRpb24gZm9yIHRoaXMgcmVtYXBwaW5nXG4gICAqIEByZXR1cm4ge0NoYXJEYXRhPEM+fSAgVGhlIGNoYXJhY3RlciBkYXRhIGZvciB0aGUgcmVtYXBwaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgc21wQ2hhcihuOiBudW1iZXIpOiBDaGFyRGF0YTxDPiB7XG4gICAgcmV0dXJuIFsgLCAsICwge3NtcDogbn0gYXMgQ107XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgY29sbGVjdGlvbiBvZiB2YXJpYW50c1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdW119IHZhcmlhbnRzICBBcnJheSBvZiBbbmFtZSwgaW5oZXJpdD8sIGxpbms/XSB2YWx1ZXMgZm9yXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHZhcmlhbnRzIHRvIGRlZmluZVxuICAgKi9cbiAgcHVibGljIGNyZWF0ZVZhcmlhbnRzKHZhcmlhbnRzOiBzdHJpbmdbXVtdKSB7XG4gICAgZm9yIChjb25zdCB2YXJpYW50IG9mIHZhcmlhbnRzKSB7XG4gICAgICB0aGlzLmNyZWF0ZVZhcmlhbnQodmFyaWFudFswXSwgdmFyaWFudFsxXSwgdmFyaWFudFsyXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERlZmluZXMgbmV3IGNoYXJhY3RlciBkYXRhIGluIGEgZ2l2ZW4gdmFyaWFudFxuICAgKiAgKFdlIHVzZSBPYmplY3QuYXNzaWduKCkgaGVyZSByYXRoZXIgdGhhbiB0aGUgc3ByZWFkIG9wZXJhdG9yIHNpbmNlXG4gICAqICB0aGUgY2hhcmFjdGVyIG1hcHMgYXJlIG9iamVjY3RzIHdpdGggcHJvdG90eXBlcywgYW5kIHdlIGRvbid0XG4gICAqICB3YW50IHRvIGxvb3NlIHRob3NlIGJ5IGRvaW5nIHsuLi5jaGFyc30gb3Igc29tZXRoaW5nIHNpbWlsYXIuKVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICBUaGUgdmFyaWFudCBmb3IgdGhlc2UgY2hhcmFjdGVyc1xuICAgKiBAcGFyYW0ge0NoYXJNYXB9IGNoYXJzICBUaGUgY2hhcmFjdGVycyB0byBkZWZpbmVcbiAgICovXG4gIHB1YmxpYyBkZWZpbmVDaGFycyhuYW1lOiBzdHJpbmcsIGNoYXJzOiBDaGFyTWFwPEM+KSB7XG4gICAgbGV0IHZhcmlhbnQgPSB0aGlzLnZhcmlhbnRbbmFtZV07XG4gICAgT2JqZWN0LmFzc2lnbih2YXJpYW50LmNoYXJzLCBjaGFycyk7XG4gICAgZm9yIChjb25zdCBsaW5rIG9mIHZhcmlhbnQubGlua2VkKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGxpbmssIGNoYXJzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRGVmaW5lcyBzdHJldGNoeSBkZWxpbWl0ZXJzXG4gICAqXG4gICAqIEBwYXJhbSB7RGVsaW1pdGVyTWFwfSBkZWxpbXMgIFRoZSBkZWxpbWl0ZXJzIHRvIGRlZmluZVxuICAgKi9cbiAgcHVibGljIGRlZmluZURlbGltaXRlcnMoZGVsaW1zOiBEZWxpbWl0ZXJNYXA8RD4pIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMuZGVsaW1pdGVycywgZGVsaW1zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGEgY2hhcmFjdGVyIHJlbWFwcGluZyBtYXBcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgIFRoZSBuYW1lIG9mIHRoZSBtYXAgdG8gZGVmaW5lIG9yIGF1Z21lbnRcbiAgICogQHBhcmFtIHtSZW1hcE1hcH0gcmVtYXAgIFRoZSBjaGFyYWN0ZXJzIHRvIHJlbWFwXG4gICAqL1xuICBwdWJsaWMgZGVmaW5lUmVtYXAobmFtZTogc3RyaW5nLCByZW1hcDogUmVtYXBNYXApIHtcbiAgICBpZiAoIXRoaXMucmVtYXBDaGFycy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgdGhpcy5yZW1hcENoYXJzW25hbWVdID0ge307XG4gICAgfVxuICAgIE9iamVjdC5hc3NpZ24odGhpcy5yZW1hcENoYXJzW25hbWVdLCByZW1hcCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gIFRoZSBkZWxpbWl0ZXIgY2hhcmFjdGVyIG51bWJlciB3aG9zZSBkYXRhIGlzIGRlc2lyZWRcbiAgICogQHJldHVybiB7RGVsaW1pdGVyRGF0YX0gIFRoZSBkYXRhIGZvciB0aGF0IGRlbGltaXRlciAob3IgdW5kZWZpbmVkKVxuICAgKi9cbiAgcHVibGljIGdldERlbGltaXRlcihuOiBudW1iZXIpOiBEZWxpbWl0ZXJEYXRhIHtcbiAgICByZXR1cm4gdGhpcy5kZWxpbWl0ZXJzW25dO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuICBUaGUgZGVsaW1pdGVyIGNoYXJhY3RlciBudW1iZXIgd2hvc2UgdmFyaWFudCBpcyBuZWVkZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGkgIFRoZSBpbmRleCBpbiB0aGUgc2l6ZSBhcnJheSBvZiB0aGUgc2l6ZSB3aG9zZSB2YXJpYW50IGlzIG5lZWRlZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgVGhlIHZhcmlhbnQgb2YgdGhlIGktdGggc2l6ZSBmb3IgZGVsaW1pdGVyIG5cbiAgICovXG4gIHB1YmxpYyBnZXRTaXplVmFyaWFudChuOiBudW1iZXIsIGk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuZGVsaW1pdGVyc1tuXS52YXJpYW50cykge1xuICAgICAgaSA9IHRoaXMuZGVsaW1pdGVyc1tuXS52YXJpYW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc2l6ZVZhcmlhbnRzW2ldO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuICBUaGUgZGVsaW1pdGVyIGNoYXJhY3RlciBudW1iZXIgd2hvc2UgdmFyaWFudCBpcyBuZWVkZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IGkgIFRoZSBpbmRleCBpbiB0aGUgc3RyZXRjaCBhcnJheSBvZiB0aGUgcGFydCB3aG9zZSB2YXJpYW50IGlzIG5lZWRlZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgVGhlIHZhcmlhbnQgb2YgdGhlIGktdGggcGFydCBmb3IgZGVsaW1pdGVyIG5cbiAgICovXG4gIHB1YmxpYyBnZXRTdHJldGNoVmFyaWFudChuOiBudW1iZXIsIGk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3RyZXRjaFZhcmlhbnRzW3RoaXMuZGVsaW1pdGVyc1tuXS5zdHJldGNodiA/IHRoaXMuZGVsaW1pdGVyc1tuXS5zdHJldGNodltpXSA6IDBdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICBUaGUgdmFyaWFudCB3aG9zZSBjaGFyYWN0ZXIgZGF0YSBpcyBiZWluZyBxdWVycmllZFxuICAgKiBAcGFyYW0ge251bWJlcn0gbiAgICAgVGhlIHVuaWNvZGUgbnVtYmVyIGZvciB0aGUgY2hhcmFjdGVyIHRvIGJlIGZvdW5kXG4gICAqIEByZXR1cm4ge0NoYXJEYXRhfSAgICBUaGUgZGF0YSBmb3IgdGhlIGdpdmVuIGNoYXJhY3RlciAob3IgdW5kZWZpbmVkKVxuICAgKi9cbiAgcHVibGljIGdldENoYXIobmFtZTogc3RyaW5nLCBuOiBudW1iZXIpOiBDaGFyRGF0YTxDPiB7XG4gICAgcmV0dXJuIHRoaXMudmFyaWFudFtuYW1lXS5jaGFyc1tuXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIG9mIHRoZSB2YXJpYW50IHdob3NlIGRhdGEgaXMgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybiB7Vn0gICAgICAgICAgICBUaGUgZGF0YSBmb3IgdGhlIHJlcXVlc3RlZCB2YXJpYW50IChvciB1bmRlZmluZWQpXG4gICAqL1xuICBwdWJsaWMgZ2V0VmFyaWFudChuYW1lOiBzdHJpbmcpOiBWIHtcbiAgICByZXR1cm4gdGhpcy52YXJpYW50W25hbWVdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYW50ICAgVGhlIG5hbWUgb2YgdGhlIHZhcmlhbnQgd2hvc2UgZGF0YSBpcyB0byBiZSBvYnRhaW5lZFxuICAgKiBAcmV0dXJuIHtDc3NGb250RGF0YX0gICAgIFRoZSBDU1MgZGF0YSBmb3IgdGhlIHJlcXVlc3RlZCB2YXJpYW50XG4gICAqL1xuICBwdWJsaWMgZ2V0Q3NzRm9udCh2YXJpYW50OiBzdHJpbmcpOiBDc3NGb250RGF0YSB7XG4gICAgcmV0dXJuIHRoaXMuY3NzRm9udE1hcFt2YXJpYW50XSB8fCBbJ3NlcmlmJywgZmFsc2UsIGZhbHNlXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmFtaWx5ICAgVGhlIGZvbnQgY2FtaWx5IHRvIHVzZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgVGhlIGZhbWlseSB3aXRoIHRoZSBjc3MgcHJlZml4XG4gICAqL1xuICBwdWJsaWMgZ2V0RmFtaWx5KGZhbWlseTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHRoaXMuY3NzRmFtaWx5UHJlZml4ID8gdGhpcy5jc3NGYW1pbHlQcmVmaXggKyAnLCAnICsgZmFtaWx5IDogZmFtaWx5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIG9mIHRoZSBtYXAgdG8gcXVlcnlcbiAgICogQHBhcmFtIHtudW1iZXJ9IGMgICAgICBUaGUgY2hhcmFjdGVyIHRvIHJlbWFwXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgVGhlIHJlbWFwcGVkIGNoYXJhY3RlciAob3IgdGhlIG9yaWdpbmFsKVxuICAgKi9cbiAgcHVibGljIGdldFJlbWFwcGVkQ2hhcihuYW1lOiBzdHJpbmcsIGM6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3QgbWFwID0gdGhpcy5yZW1hcENoYXJzW25hbWVdIHx8IHt9IGFzIFJlbWFwTWFwO1xuICAgIHJldHVybiBtYXBbY107XG4gIH1cblxufVxuXG4vKipcbiAqIFRoZSBjbGFzcyBpbnRlcmZhY2UgZm9yIHRoZSBGb250RGF0YSBjbGFzc1xuICpcbiAqIEB0ZW1wbGF0ZSBDICBUaGUgQ2hhck9wdGlvbnMgdHlwZVxuICogQHRlbXBsYXRlIFYgIFRoZSBWYXJpYW50RGF0YSB0eXBlXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERlbGltaXRlckRhdGEgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZvbnREYXRhQ2xhc3M8QyBleHRlbmRzIENoYXJPcHRpb25zLCBWIGV4dGVuZHMgVmFyaWFudERhdGE8Qz4sIEQgZXh0ZW5kcyBEZWxpbWl0ZXJEYXRhPiB7XG4gIE9QVElPTlM6IE9wdGlvbkxpc3Q7XG4gIGRlZmF1bHRDc3NGb250czogQ3NzRm9udE1hcDtcbiAgZGVmYXVsdFZhcmlhbnRzOiBzdHJpbmdbXVtdO1xuICBkZWZhdWx0UGFyYW1zOiBGb250UGFyYW1ldGVycztcbiAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOmpzZG9jLXJlcXVpcmUgKi9cbiAgY2hhck9wdGlvbnMoZm9udDogQ2hhck1hcDxDPiwgbjogbnVtYmVyKTogQztcbiAgbmV3KC4uLmFyZ3M6IGFueVtdKTogRm9udERhdGE8QywgViwgRD47XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIENvbW1vbldyYXBwZXIgY2xhc3NcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QWJzdHJhY3RXcmFwcGVyLCBXcmFwcGVyQ2xhc3N9IGZyb20gJy4uLy4uL2NvcmUvVHJlZS9XcmFwcGVyLmpzJztcbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9jb3JlL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge01tbE5vZGUsIFRleHROb2RlLCBBYnN0cmFjdE1tbE5vZGUsIGluZGVudEF0dHJpYnV0ZXN9IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7TW1sTW99IGZyb20gJy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tby5qcyc7XG5pbXBvcnQge1Byb3BlcnR5fSBmcm9tICcuLi8uLi9jb3JlL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge3VuaWNvZGVDaGFyc30gZnJvbSAnLi4vLi4vdXRpbC9zdHJpbmcuanMnO1xuaW1wb3J0ICogYXMgTEVOR1RIUyBmcm9tICcuLi8uLi91dGlsL2xlbmd0aHMuanMnO1xuaW1wb3J0IHtTdHlsZXN9IGZyb20gJy4uLy4uL3V0aWwvU3R5bGVzLmpzJztcbmltcG9ydCB7U3R5bGVMaXN0fSBmcm9tICcuLi8uLi91dGlsL1N0eWxlTGlzdC5qcyc7XG5pbXBvcnQge0NvbW1vbk91dHB1dEpheH0gZnJvbSAnLi9PdXRwdXRKYXguanMnO1xuaW1wb3J0IHtDb21tb25XcmFwcGVyRmFjdG9yeX0gZnJvbSAnLi9XcmFwcGVyRmFjdG9yeS5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uL3V0aWwvQkJveC5qcyc7XG5pbXBvcnQge0ZvbnREYXRhLCBEZWxpbWl0ZXJEYXRhLCBDaGFyRGF0YSwgQ2hhck9wdGlvbnMsIERJUkVDVElPTiwgTk9TVFJFVENIfSBmcm9tICcuL0ZvbnREYXRhLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgYSBkaWN0aW9uYXJ5IG9iamVjdCAoYW4gb2JqZWN0IG9mIGtleTp2YWx1ZSBwYWlycylcbiAqL1xuZXhwb3J0IHR5cGUgU3RyaW5nTWFwID0ge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cbi8qKlxuICogTWF0aE1MIHNwYWNpbmcgcnVsZXNcbiAqL1xuLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOndoaXRlc3BhY2UgKi9cbmNvbnN0IFNNQUxMU0laRSA9IDIvMTg7XG5cbi8qKlxuICogQHBhcmFtIHtib29sZWFufSBzY3JpcHQgICBUaGUgc2NyaXB0bGV2ZWxcbiAqIEBwYXJhbSB7bnVtYmVyfSBzaXplICAgICAgVGhlIHNwYWNlIHNpemVcbiAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgVGhlIHNpemUgY2xhbXBlZCB0byBTTUFMTFNJWkUgd2hlbiBzY3JpcHRsZXZlbCA+IDBcbiAqL1xuZnVuY3Rpb24gTWF0aE1MU3BhY2Uoc2NyaXB0OiBib29sZWFuLCBzaXplOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gKHNjcmlwdCA/IHNpemUgPCBTTUFMTFNJWkUgPyAwIDogU01BTExTSVpFIDogc2l6ZSk7XG59XG5cbmV4cG9ydCB0eXBlIENvbnN0cnVjdG9yPFQ+ID0gbmV3KC4uLmFyZ3M6IGFueVtdKSA9PiBUO1xuXG4vKipcbiAqIFNob3J0aGFuZHMgZm9yIHdyYXBwZXJzIGFuZCB0aGVpciBjb25zdHJ1Y3RvcnNcbiAqL1xuZXhwb3J0IHR5cGUgQW55V3JhcHBlciA9IENvbW1vbldyYXBwZXI8YW55LCBhbnksIGFueSwgYW55LCBhbnksIGFueT47XG5leHBvcnQgdHlwZSBBbnlXcmFwcGVyQ2xhc3MgPSBDb21tb25XcmFwcGVyQ2xhc3M8YW55LCBhbnksIGFueSwgYW55LCBhbnksIGFueT47XG5leHBvcnQgdHlwZSBXcmFwcGVyQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxBbnlXcmFwcGVyPjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBDb21tb25XcmFwcGVyIGNsYXNzIGludGVyZmFjZVxuICpcbiAqIEB0ZW1wbGF0ZSBKICBUaGUgT3V0cHV0SmF4IHR5cGVcbiAqIEB0ZW1wbGF0ZSBXICBUaGUgV3JhcHBlciB0eXBlXG4gKiBAdGVtcGxhdGUgQyAgVGhlIFdyYXBwZXJDbGFzcyB0eXBlXG4gKiBAdGVtcGxhdGUgQ0MgVGhlIENoYXJPcHRpb25zIHR5cGVcbiAqIEB0ZW1wbGF0ZSBGRCBUaGUgRm9udERhdGEgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbldyYXBwZXJDbGFzczxcbiAgSiBleHRlbmRzIENvbW1vbk91dHB1dEpheDxhbnksIGFueSwgYW55LCBXLCBDb21tb25XcmFwcGVyRmFjdG9yeTxKLCBXLCBDLCBDQywgREQsIEZEPiwgRkQsIGFueT4sXG4gIFcgZXh0ZW5kcyBDb21tb25XcmFwcGVyPEosIFcsIEMsIENDLCBERCwgRkQ+LFxuICBDIGV4dGVuZHMgQ29tbW9uV3JhcHBlckNsYXNzPEosIFcsIEMsIENDLCBERCwgRkQ+LFxuICBDQyBleHRlbmRzIENoYXJPcHRpb25zLFxuICBERCBleHRlbmRzIERlbGltaXRlckRhdGEsXG4gIEZEIGV4dGVuZHMgRm9udERhdGE8Q0MsIGFueSwgREQ+XG4+IGV4dGVuZHMgV3JhcHBlckNsYXNzPE1tbE5vZGUsIENvbW1vbldyYXBwZXI8SiwgVywgQywgQ0MsIERELCBGRD4+IHtcbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgbmV3KGZhY3Rvcnk6IENvbW1vbldyYXBwZXJGYWN0b3J5PEosIFcsIEMsIENDLCBERCwgRkQ+LCBub2RlOiBNbWxOb2RlLCAuLi5hcmdzOiBhbnlbXSk6IFc7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBiYXNlIENvbW1vbldyYXBwZXIgY2xhc3NcbiAqXG4gKiBAdGVtcGxhdGUgSiAgVGhlIE91dHB1dEpheCB0eXBlXG4gKiBAdGVtcGxhdGUgVyAgVGhlIFdyYXBwZXIgdHlwZVxuICogQHRlbXBsYXRlIEMgIFRoZSBXcmFwcGVyQ2xhc3MgdHlwZVxuICogQHRlbXBsYXRlIENDIFRoZSBDaGFyT3B0aW9ucyB0eXBlXG4gKiBAdGVtcGxhdGUgRkQgVGhlIEZvbnREYXRhIHR5cGVcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1vbldyYXBwZXI8XG4gIEogZXh0ZW5kcyBDb21tb25PdXRwdXRKYXg8YW55LCBhbnksIGFueSwgVywgQ29tbW9uV3JhcHBlckZhY3Rvcnk8SiwgVywgQywgQ0MsIERELCBGRD4sIEZELCBhbnk+LFxuICBXIGV4dGVuZHMgQ29tbW9uV3JhcHBlcjxKLCBXLCBDLCBDQywgREQsIEZEPixcbiAgQyBleHRlbmRzIENvbW1vbldyYXBwZXJDbGFzczxKLCBXLCBDLCBDQywgREQsIEZEPixcbiAgQ0MgZXh0ZW5kcyBDaGFyT3B0aW9ucyxcbiAgREQgZXh0ZW5kcyBEZWxpbWl0ZXJEYXRhLFxuICBGRCBleHRlbmRzIEZvbnREYXRhPENDLCBhbnksIEREPlxuPiBleHRlbmRzIEFic3RyYWN0V3JhcHBlcjxNbWxOb2RlLCBDb21tb25XcmFwcGVyPEosIFcsIEMsIENDLCBERCwgRkQ+PiB7XG5cbiAgLyoqXG4gICAqIFRoZSB3cmFwcGVyIGtpbmRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZDogc3RyaW5nID0gJ3Vua25vd24nO1xuXG4gIC8qKlxuICAgKiBBbnkgc3R5bGVzIG5lZWRlZCBmb3IgdGhlIGNsYXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0eWxlczogU3R5bGVMaXN0ID0ge307XG5cbiAgLyoqXG4gICAqIFN0eWxlcyB0aGF0IHNob3VsZCBub3QgYmUgcGFzc2VkIG9uIGZyb20gc3R5bGUgYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHJlbW92ZVN0eWxlczogc3RyaW5nW10gPSBbXG4gICAgJ2ZvbnRTaXplJywgJ2ZvbnRGYW1pbHknLCAnZm9udFdlaWdodCcsXG4gICAgJ2ZvbnRTdHlsZScsICdmb250VmFyaWFudCcsICdmb250J1xuICBdO1xuXG4gIC8qKlxuICAgKiBOb24tTWF0aE1MIGF0dHJpYnV0ZXMgb24gTWF0aE1MIGVsZW1lbnRzIE5PVCB0byBiZSBjb3BpZWQgdG8gdGhlXG4gICAqIGNvcnJlc3BvbmRpbmcgRE9NIGVsZW1lbnRzLiAgSWYgc2V0IHRvIGZhbHNlLCB0aGVuIHRoZSBhdHRyaWJ1dGVcbiAgICogV0lMTCBiZSBjb3BpZWQuICBNb3N0IG9mIHRoZXNlIChsaWtlIHRoZSBmb250IGF0dHJpYnV0ZXMpIGFyZSBoYW5kbGVkXG4gICAqIGluIG90aGVyIHdheXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNraXBBdHRyaWJ1dGVzOiB7W25hbWU6IHN0cmluZ106IGJvb2xlYW59ID0ge1xuICAgIGZvbnRmYW1pbHk6IHRydWUsIGZvbnRzaXplOiB0cnVlLCBmb250d2VpZ2h0OiB0cnVlLCBmb250c3R5bGU6IHRydWUsXG4gICAgY29sb3I6IHRydWUsIGJhY2tncm91bmQ6IHRydWUsXG4gICAgJ2NsYXNzJzogdHJ1ZSwgaHJlZjogdHJ1ZSwgc3R5bGU6IHRydWUsXG4gICAgeG1sbnM6IHRydWVcbiAgfTtcblxuICAvKipcbiAgICogVGhlIHRyYW5zbGF0aW9uIG9mIG1hdGh2YXJpYW50IHRvIGJvbGQgc3R5bGVzLCBvciB0byByZW1vdmVcbiAgICogYm9sZCBmcm9tIGEgbWF0aHZhcmlhbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEJPTERWQVJJQU5UUzoge1tuYW1lOiBzdHJpbmddOiBTdHJpbmdNYXB9ID0gIHtcbiAgICBib2xkOiB7XG4gICAgICBub3JtYWw6ICdib2xkJyxcbiAgICAgIGl0YWxpYzogJ2JvbGQtaXRhbGljJyxcbiAgICAgIGZyYWt0dXI6ICdib2xkLWZyYWt0dXInLFxuICAgICAgc2NyaXB0OiAnYm9sZC1zY3JpcHQnLFxuICAgICAgJ3NhbnMtc2VyaWYnOiAnYm9sZC1zYW5zLXNlcmlmJyxcbiAgICAgICdzYW5zLXNlcmlmLWl0YWxpYyc6ICdzYW5zLXNlcmlmLWJvbGQtaXRhbGljJ1xuICAgIH0sXG4gICAgbm9ybWFsOiB7XG4gICAgICBib2xkOiAnbm9ybWFsJyxcbiAgICAgICdib2xkLWl0YWxpYyc6ICdpdGFsaWMnLFxuICAgICAgJ2JvbGQtZnJha3R1cic6ICdmcmFrdHVyJyxcbiAgICAgICdib2xkLXNjcmlwdCc6ICdzY3JpcHQnLFxuICAgICAgJ2JvbGQtc2Fucy1zZXJpZic6ICdzYW5zLXNlcmlmJyxcbiAgICAgICdzYW5zLXNlcmlmLWJvbGQtaXRhbGljJzogJ3NhbnMtc2VyaWYtaXRhbGljJ1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogVGhlIHRyYW5zbGF0aW9uIG9mIG1hdGh2YXJpYW50IHRvIGl0YWxpYyBzdHlsZXMsIG9yIHRvIHJlbW92ZVxuICAgKiBpdGFsaWMgZnJvbSBhIG1hdGh2YXJpYW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBJVEFMSUNWQVJJQU5UUzoge1tuYW1lOiBzdHJpbmddOiBTdHJpbmdNYXB9ID0ge1xuICAgIGl0YWxpYzoge1xuICAgICAgbm9ybWFsOiAnaXRhbGljJyxcbiAgICAgIGJvbGQ6ICdib2xkLWl0YWxpYycsXG4gICAgICAnc2Fucy1zZXJpZic6ICdzYW5zLXNlcmlmLWl0YWxpYycsXG4gICAgICAnYm9sZC1zYW5zLXNlcmlmJzogJ3NhbnMtc2VyaWYtYm9sZC1pdGFsaWMnXG4gICAgfSxcbiAgICBub3JtYWw6IHtcbiAgICAgIGl0YWxpYzogJ25vcm1hbCcsXG4gICAgICAnYm9sZC1pdGFsaWMnOiAnYm9sZCcsXG4gICAgICAnc2Fucy1zZXJpZi1pdGFsaWMnOiAnc2Fucy1zZXJpZicsXG4gICAgICAnc2Fucy1zZXJpZi1ib2xkLWl0YWxpYyc6ICdib2xkLXNhbnMtc2VyaWYnXG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgZmFjdG9yeSB1c2VkIHRvIGNyZWF0ZSBtb3JlIHdyYXBwZXJzXG4gICAqL1xuICBwcm90ZWN0ZWQgZmFjdG9yeTogQ29tbW9uV3JhcHBlckZhY3Rvcnk8SiwgVywgQywgQ0MsIERELCBGRD47XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJlbnQgb2YgdGhpcyBub2RlXG4gICAqL1xuICBwdWJsaWMgcGFyZW50OiBXID0gbnVsbDtcblxuICAvKipcbiAgICogVGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZVxuICAgKi9cbiAgcHVibGljIGNoaWxkTm9kZXM6IFdbXTtcblxuICAvKipcbiAgICogU3R5bGVzIHRoYXQgbXVzdCBiZSBoYW5kbGVkIGRpcmVjdGx5IGJ5IHRoZSB3cmFwcGVycyAobW9zdGx5IGhhdmluZyB0byBkbyB3aXRoIGZvbnRzKVxuICAgKi9cbiAgcHJvdGVjdGVkIHJlbW92ZWRTdHlsZXM6IFN0cmluZ01hcCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBleHBsaWNpdCBzdHlsZXMgc2V0IGJ5IHRoZSBub2RlXG4gICAqL1xuICBwcm90ZWN0ZWQgc3R5bGVzOiBTdHlsZXMgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF0aHZhcmlhbnQgZm9yIHRoaXMgbm9kZVxuICAgKi9cbiAgcHVibGljIHZhcmlhbnQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBUaGUgYm91bmRpbmcgYm94IGZvciB0aGlzIG5vZGVcbiAgICovXG4gIHB1YmxpYyBiYm94OiBCQm94O1xuICAvKipcbiAgICogV2hldGhlciB0aGUgYm91bmRpbmcgYm94IGhhcyBiZWVuIGNvbXB1dGVkIHlldFxuICAgKi9cbiAgcHJvdGVjdGVkIGJib3hDb21wdXRlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBEZWxpbWl0ZXIgZGF0YSBmb3Igc3RyZXRjaGluZyB0aGlzIG5vZGUgKE5PU1RSRVRDSCBtZWFucyBub3QgeWV0IGRldGVybWluZWQpXG4gICAqL1xuICBwdWJsaWMgc3RyZXRjaDogREQgPSBOT1NUUkVUQ0ggYXMgREQ7XG5cbiAgLyoqXG4gICAqIEVhc3kgYWNjZXNzIHRvIHRoZSBmb250IHBhcmFtZXRlcnNcbiAgICovXG4gIHB1YmxpYyBmb250OiBGRCA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEVhc3kgYWNjZXNzIHRvIHRoZSBvdXRwdXQgamF4IGZvciB0aGlzIG5vZGVcbiAgICovXG4gIGdldCBqYXgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZmFjdG9yeS5qYXg7XG4gIH1cblxuICAvKipcbiAgICogRWFzeSBhY2Nlc3MgdG8gdGhlIERPTUFkYXB0b3Igb2JqZWN0XG4gICAqL1xuICBnZXQgYWRhcHRvcigpIHtcbiAgICByZXR1cm4gdGhpcy5mYWN0b3J5LmpheC5hZGFwdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIEVhc3kgYWNjZXNzIHRvIHRoZSBtZXRyaWMgZGF0YSBmb3IgdGhpcyBub2RlXG4gICAqL1xuICBnZXQgbWV0cmljcygpIHtcbiAgICByZXR1cm4gdGhpcy5mYWN0b3J5LmpheC5tYXRoLm1ldHJpY3M7XG4gIH1cblxuICAvKipcbiAgICogVHJ1ZSBpZiBjaGlsZHJlbiB3aXRoIHBlcmNlbnRhZ2Ugd2lkdGhzIHNob3VsZCBiZSByZXNvbHZlZCBieSB0aGlzIGNvbnRhaW5lclxuICAgKi9cbiAgZ2V0IGZpeGVzUFdpZHRoKCkge1xuICAgIHJldHVybiAhdGhpcy5ub2RlLm5vdFBhcmVudCAmJiAhdGhpcy5ub2RlLmlzVG9rZW47XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBDb21tb25XcmFwcGVyRmFjdG9yeTxKLCBXLCBDLCBDQywgREQsIEZEPiwgbm9kZTogTW1sTm9kZSwgcGFyZW50OiBXID0gbnVsbCkge1xuICAgIHN1cGVyKGZhY3RvcnksIG5vZGUpO1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICAgIHRoaXMuZm9udCA9IGZhY3RvcnkuamF4LmZvbnQ7XG4gICAgdGhpcy5iYm94ID0gQkJveC56ZXJvKCk7XG4gICAgdGhpcy5nZXRTdHlsZXMoKTtcbiAgICB0aGlzLmdldFZhcmlhbnQoKTtcbiAgICB0aGlzLmdldFNjYWxlKCk7XG4gICAgdGhpcy5nZXRTcGFjZSgpO1xuICAgIHRoaXMuY2hpbGROb2RlcyA9IG5vZGUuY2hpbGROb2Rlcy5tYXAoKGNoaWxkOiBNbWxOb2RlKSA9PiB7XG4gICAgICBjb25zdCB3cmFwcGVkID0gdGhpcy53cmFwKGNoaWxkKTtcbiAgICAgIGlmICh3cmFwcGVkLmJib3gucHdpZHRoICYmIChub2RlLm5vdFBhcmVudCB8fCBub2RlLmlzS2luZCgnbWF0aCcpKSkge1xuICAgICAgICB0aGlzLmJib3gucHdpZHRoID0gQkJveC5mdWxsV2lkdGg7XG4gICAgICB9XG4gICAgICByZXR1cm4gd3JhcHBlZDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgIFRoZSBub2RlIHRvIHRoZSB3cmFwcGVkXG4gICAqIEBwYXJhbSB7V30gcGFyZW50ICBUaGUgd3JhcHBlZCBwYXJlbnQgbm9kZVxuICAgKiBAcmV0dXJuIHtXfSAgVGhlIG5ld2x5IHdyYXBwZWQgbm9kZVxuICAgKi9cbiAgcHVibGljIHdyYXAobm9kZTogTW1sTm9kZSwgcGFyZW50OiBXID0gbnVsbCk6IFcge1xuICAgIGNvbnN0IHdyYXBwZWQgPSB0aGlzLmZhY3Rvcnkud3JhcChub2RlLCBwYXJlbnQgfHwgdGhpcyk7XG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgcGFyZW50LmNoaWxkTm9kZXMucHVzaCh3cmFwcGVkKTtcbiAgICB9XG4gICAgdGhpcy5qYXgubm9kZU1hcC5zZXQobm9kZSwgd3JhcHBlZCk7XG4gICAgcmV0dXJuIHdyYXBwZWQ7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgd3JhcHBlZCBub2RlJ3MgYm91bmRpbmcgYm94LCBlaXRoZXIgdGhlIGNhY2hlZCBvbmUsIGlmIGl0IGV4aXN0cyxcbiAgICogICBvciBjb21wdXRlZCBkaXJlY3RseSBpZiBub3QuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZSAgV2hldGhlciB0byBjYWNoZSB0aGUgYmJveCBvciBub3QgKHVzZWQgZm9yIHN0cmV0Y2h5IGVsZW1lbnRzKVxuICAgKiBAcmV0dXJuIHtCQm94fSAgVGhlIGNvbXB1dGVkIGJvdW5kaW5nIGJveFxuICAgKi9cbiAgcHVibGljIGdldEJCb3goc2F2ZTogYm9vbGVhbiA9IHRydWUpOiBCQm94IHtcbiAgICBpZiAodGhpcy5iYm94Q29tcHV0ZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLmJib3g7XG4gICAgfVxuICAgIGNvbnN0IGJib3ggPSAoc2F2ZSA/IHRoaXMuYmJveCA6IEJCb3guemVybygpKTtcbiAgICB0aGlzLmNvbXB1dGVCQm94KGJib3gpO1xuICAgIHRoaXMuYmJveENvbXB1dGVkID0gc2F2ZTtcbiAgICByZXR1cm4gYmJveDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIHdyYXBwZWQgbm9kZSdzIGJvdW5kaW5nIGJveCB0aGF0IGluY2x1ZGVzIGJvcmRlcnMgYW5kIHBhZGRpbmdcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlICBXaGV0aGVyIHRvIGNhY2hlIHRoZSBiYm94IG9yIG5vdCAodXNlZCBmb3Igc3RyZXRjaHkgZWxlbWVudHMpXG4gICAqIEByZXR1cm4ge0JCb3h9ICBUaGUgY29tcHV0ZWQgYm91bmRpbmcgYm94XG4gICAqL1xuICBwdWJsaWMgZ2V0T3V0ZXJCQm94KHNhdmU6IGJvb2xlYW4gPSB0cnVlKTogQkJveCB7XG4gICAgY29uc3QgYmJveCA9IHRoaXMuZ2V0QkJveChzYXZlKTtcbiAgICBpZiAoIXRoaXMuc3R5bGVzKSByZXR1cm4gYmJveDtcbiAgICBjb25zdCBvYm94ID0gbmV3IEJCb3goKTtcbiAgICBPYmplY3QuYXNzaWduKG9ib3gsIGJib3gpO1xuICAgIGZvciAoY29uc3QgW25hbWUsIHNpZGVdIG9mIEJCb3guU3R5bGVBZGp1c3QpIHtcbiAgICAgIGNvbnN0IHggPSB0aGlzLnN0eWxlcy5nZXQobmFtZSk7XG4gICAgICBpZiAoeCkge1xuICAgICAgICAob2JveCBhcyBhbnkpW3NpZGVdICs9IHRoaXMubGVuZ3RoMmVtKHgsIDEsIG9ib3gucnNjYWxlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG9ib3g7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtCQm94fSBiYm94ICAgICAgICAgICBUaGUgYm91bmRpbmcgYm94IHRvIG1vZGlmeSAoZWl0aGVyIHRoaXMuYmJveCwgb3IgYW4gZW1wdHkgb25lKVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlY29tcHV0ZSAgIFRydWUgaWYgd2UgYXJlIHJlY29tcHV0aW5nIGR1ZSB0byBjaGFuZ2VzIGluIGNoaWxkcmVuIHRoYXQgaGF2ZSBwZXJjZW50YWdlIHdpZHRoc1xuICAgKi9cbiAgcHJvdGVjdGVkIGNvbXB1dGVCQm94KGJib3g6IEJCb3gsIHJlY29tcHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgYmJveC5lbXB0eSgpO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBiYm94LmFwcGVuZChjaGlsZC5nZXRPdXRlckJCb3goKSk7XG4gICAgfVxuICAgIGJib3guY2xlYW4oKTtcbiAgICBpZiAodGhpcy5maXhlc1BXaWR0aCAmJiB0aGlzLnNldENoaWxkUFdpZHRocyhyZWNvbXB1dGUpKSB7XG4gICAgICB0aGlzLmNvbXB1dGVCQm94KGJib3gsIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSByZXNvbHZlIGFueSBwZXJjZW50YWdlIHdpZHRocyBpbiB0aGUgY2hpbGQgbm9kZXMgdXNpbmcgdGhlIGdpdmVuXG4gICAqICAgY29udGFpbmVyIHdpZHRoIChvciB0aGUgY2hpbGQgd2lkdGgsIGlmIG5vbmUgd2FzIHBhc3NlZCkuXG4gICAqICAgT3ZlcnJpZGVuIGZvciBtdGFibGVzIGluIG9yZGVyIHRvIGNvbXB1dGUgdGhlIHdpZHRoLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlY29tcHV0ZSAgVHJ1ZSBpZiB3ZSBhcmUgcmVjb21wdXRpbmcgZHVlIHRvIGNoYW5nZXMgaW4gY2hpbGRyZW5cbiAgICogQHBhcmFtIHsobnVtYmVyfG51bGwpPX0gdyAgIFRoZSB3aWR0aCBvZiB0aGUgY29udGFpbmVyIChmcm9tIHdoaWNoIHBlcmNlbnRhZ2VzIGFyZSBjb21wdXRlZClcbiAgICogQHBhcmFtIHtib29sZWFuPX0gY2xlYXIgICAgIFRydWUgaWYgcHdpZHRoIG1hcmtlciBpcyB0byBiZSBjbGVhcmVkXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICAgICAgICAgICBUcnVlIGlmIGEgcGVyY2VudGFnZSB3aWR0aCB3YXMgZm91bmRcbiAgICovXG4gIHB1YmxpYyBzZXRDaGlsZFBXaWR0aHMocmVjb21wdXRlOiBib29sZWFuLCB3OiAobnVtYmVyIHwgbnVsbCkgPSBudWxsLCBjbGVhcjogYm9vbGVhbiA9IHRydWUpOiBib29sZWFuIHtcbiAgICBpZiAocmVjb21wdXRlKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmIChjbGVhcikge1xuICAgICAgdGhpcy5iYm94LnB3aWR0aCA9ICcnO1xuICAgIH1cbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBjb25zdCBjYm94ID0gY2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBpZiAoY2JveC5wd2lkdGggJiYgY2hpbGQuc2V0Q2hpbGRQV2lkdGhzKHJlY29tcHV0ZSwgdyA9PT0gbnVsbCA/IGNib3gudyA6IHcsIGNsZWFyKSkge1xuICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNoYW5nZWQ7XG4gIH1cblxuICAvKipcbiAgICogTWFyayBCQm94IHRvIGJlIGNvbXB1dGVkIGFnYWluIChlLmcuLCB3aGVuIGFuIG1vIGhhcyBzdHJldGNoZWQpXG4gICAqL1xuICBwdWJsaWMgaW52YWxpZGF0ZUJCb3goKSB7XG4gICAgaWYgKHRoaXMuYmJveENvbXB1dGVkKSB7XG4gICAgICB0aGlzLmJib3hDb21wdXRlZCA9IGZhbHNlO1xuICAgICAgaWYgKHRoaXMucGFyZW50KSB7XG4gICAgICAgIHRoaXMucGFyZW50LmludmFsaWRhdGVCQm94KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvcHkgY2hpbGQgc2tldyBhbmQgaXRhbGljIGNvcnJlY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtCQm94fSBiYm94ICBUaGUgYm91bmRpbmcgYm94IHRvIG1vZGlmeVxuICAgKi9cbiAgcHJvdGVjdGVkIGNvcHlTa2V3SUMoYmJveDogQkJveCkge1xuICAgIGNvbnN0IGZpcnN0ID0gdGhpcy5jaGlsZE5vZGVzWzBdO1xuICAgIGlmIChmaXJzdD8uYmJveC5zaykge1xuICAgICAgYmJveC5zayA9IGZpcnN0LmJib3guc2s7XG4gICAgfVxuICAgIGlmIChmaXJzdD8uYmJveC5keCkge1xuICAgICAgYmJveC5keCA9IGZpcnN0LmJib3guZHg7XG4gICAgfVxuICAgIGNvbnN0IGxhc3QgPSB0aGlzLmNoaWxkTm9kZXNbdGhpcy5jaGlsZE5vZGVzLmxlbmd0aCAtIDFdO1xuICAgIGlmIChsYXN0Py5iYm94LmljKSB7XG4gICAgICBiYm94LmljID0gbGFzdC5iYm94LmljO1xuICAgICAgYmJveC53ICs9IGJib3guaWM7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgc3R5bGUgYXR0cmlidXRlLCBidXQgcmVtb3ZlIGFueSBmb250LXJlbGF0ZWQgc3R5bGVzXG4gICAqICAgKHNpbmNlIHRoZXNlIGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkgYnkgdGhlIHZhcmlhbnQpXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U3R5bGVzKCkge1xuICAgIGNvbnN0IHN0eWxlU3RyaW5nID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ3N0eWxlJykgYXMgc3RyaW5nO1xuICAgIGlmICghc3R5bGVTdHJpbmcpIHJldHVybjtcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMuc3R5bGVzID0gbmV3IFN0eWxlcyhzdHlsZVN0cmluZyk7XG4gICAgZm9yIChsZXQgaSA9IDAsIG0gPSBDb21tb25XcmFwcGVyLnJlbW92ZVN0eWxlcy5sZW5ndGg7IGkgPCBtOyBpKyspIHtcbiAgICAgIGNvbnN0IGlkID0gQ29tbW9uV3JhcHBlci5yZW1vdmVTdHlsZXNbaV07XG4gICAgICBpZiAoc3R5bGUuZ2V0KGlkKSkge1xuICAgICAgICBpZiAoIXRoaXMucmVtb3ZlZFN0eWxlcykgdGhpcy5yZW1vdmVkU3R5bGVzID0ge307XG4gICAgICAgIHRoaXMucmVtb3ZlZFN0eWxlc1tpZF0gPSBzdHlsZS5nZXQoaWQpO1xuICAgICAgICBzdHlsZS5zZXQoaWQsICcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBtYXRodmFyaWFudCAob3IgY29uc3RydWN0IG9uZSwgaWYgbmVlZGVkKS5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRWYXJpYW50KCkge1xuICAgIGlmICghdGhpcy5ub2RlLmlzVG9rZW4pIHJldHVybjtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXM7XG4gICAgbGV0IHZhcmlhbnQgPSBhdHRyaWJ1dGVzLmdldCgnbWF0aHZhcmlhbnQnKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFhdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdtYXRodmFyaWFudCcpKSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBhdHRyaWJ1dGVzLmdldExpc3QoJ2ZvbnRmYW1pbHknLCAnZm9udHdlaWdodCcsICdmb250c3R5bGUnKSBhcyBTdHJpbmdNYXA7XG4gICAgICBpZiAodGhpcy5yZW1vdmVkU3R5bGVzKSB7XG4gICAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5yZW1vdmVkU3R5bGVzO1xuICAgICAgICBpZiAoc3R5bGUuZm9udEZhbWlseSkgdmFsdWVzLmZhbWlseSA9IHN0eWxlLmZvbnRGYW1pbHk7XG4gICAgICAgIGlmIChzdHlsZS5mb250V2VpZ2h0KSB2YWx1ZXMud2VpZ2h0ID0gc3R5bGUuZm9udFdlaWdodDtcbiAgICAgICAgaWYgKHN0eWxlLmZvbnRTdHlsZSkgIHZhbHVlcy5zdHlsZSAgPSBzdHlsZS5mb250U3R5bGU7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWVzLmZvbnRmYW1pbHkpIHZhbHVlcy5mYW1pbHkgPSB2YWx1ZXMuZm9udGZhbWlseTtcbiAgICAgIGlmICh2YWx1ZXMuZm9udHdlaWdodCkgdmFsdWVzLndlaWdodCA9IHZhbHVlcy5mb250d2VpZ2h0O1xuICAgICAgaWYgKHZhbHVlcy5mb250c3R5bGUpICB2YWx1ZXMuc3R5bGUgID0gdmFsdWVzLmZvbnRzdHlsZTtcbiAgICAgIGlmICh2YWx1ZXMud2VpZ2h0ICYmIHZhbHVlcy53ZWlnaHQubWF0Y2goL15cXGQrJC8pKSB7XG4gICAgICAgIHZhbHVlcy53ZWlnaHQgPSAocGFyc2VJbnQodmFsdWVzLndlaWdodCkgPiA2MDAgPyAnYm9sZCcgOiAnbm9ybWFsJyk7XG4gICAgICB9XG4gICAgICBpZiAodmFsdWVzLmZhbWlseSkge1xuICAgICAgICB2YXJpYW50ID0gdGhpcy5leHBsaWNpdFZhcmlhbnQodmFsdWVzLmZhbWlseSwgdmFsdWVzLndlaWdodCwgdmFsdWVzLnN0eWxlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh0aGlzLm5vZGUuZ2V0UHJvcGVydHkoJ3ZhcmlhbnRGb3JtJykpIHZhcmlhbnQgPSAnLXRleC12YXJpYW50JztcbiAgICAgICAgdmFyaWFudCA9IChDb21tb25XcmFwcGVyLkJPTERWQVJJQU5UU1t2YWx1ZXMud2VpZ2h0XSB8fCB7fSlbdmFyaWFudF0gfHwgdmFyaWFudDtcbiAgICAgICAgdmFyaWFudCA9IChDb21tb25XcmFwcGVyLklUQUxJQ1ZBUklBTlRTW3ZhbHVlcy5zdHlsZV0gfHwge30pW3ZhcmlhbnRdIHx8IHZhcmlhbnQ7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMudmFyaWFudCA9IHZhcmlhbnQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBDU1MgZm9yIGEgdG9rZW4gZWxlbWVudCBoYXZpbmcgYW4gZXhwbGljaXQgZm9udCAocmF0aGVyIHRoYW4gcmVndWxhciBtYXRodmFyaWFudCkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb250RmFtaWx5ICBUaGUgZm9udCBmYW1pbHkgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb250V2VpZ2h0ICBUaGUgZm9udCB3ZWlnaHQgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb250U3R5bGUgICBUaGUgZm9udCBzdHlsZSB0byB1c2VcbiAgICovXG4gIHByb3RlY3RlZCBleHBsaWNpdFZhcmlhbnQoZm9udEZhbWlseTogc3RyaW5nLCBmb250V2VpZ2h0OiBzdHJpbmcsIGZvbnRTdHlsZTogc3RyaW5nKSB7XG4gICAgbGV0IHN0eWxlID0gdGhpcy5zdHlsZXM7XG4gICAgaWYgKCFzdHlsZSkgc3R5bGUgPSB0aGlzLnN0eWxlcyA9IG5ldyBTdHlsZXMoKTtcbiAgICBzdHlsZS5zZXQoJ2ZvbnRGYW1pbHknLCBmb250RmFtaWx5KTtcbiAgICBpZiAoZm9udFdlaWdodCkgc3R5bGUuc2V0KCdmb250V2VpZ2h0JywgZm9udFdlaWdodCk7XG4gICAgaWYgKGZvbnRTdHlsZSkgIHN0eWxlLnNldCgnZm9udFN0eWxlJywgZm9udFN0eWxlKTtcbiAgICByZXR1cm4gJy1leHBsaWNpdEZvbnQnO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgc2NhbGluZyBmYWN0b3IgdG8gdXNlIGZvciB0aGlzIHdyYXBwZWQgbm9kZSwgYW5kIHNldCB0aGUgc3R5bGVzIGZvciBpdC5cbiAgICovXG4gIHByb3RlY3RlZCBnZXRTY2FsZSgpIHtcbiAgICBsZXQgc2NhbGUgPSAxLCBwYXJlbnQgPSB0aGlzLnBhcmVudDtcbiAgICBsZXQgcHNjYWxlID0gKHBhcmVudCA/IHBhcmVudC5iYm94LnNjYWxlIDogMSk7XG4gICAgbGV0IGF0dHJpYnV0ZXMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcztcbiAgICBsZXQgc2NyaXB0bGV2ZWwgPSBNYXRoLm1pbihhdHRyaWJ1dGVzLmdldCgnc2NyaXB0bGV2ZWwnKSBhcyBudW1iZXIsIDIpO1xuICAgIGxldCBmb250c2l6ZSA9IGF0dHJpYnV0ZXMuZ2V0KCdmb250c2l6ZScpO1xuICAgIGxldCBtYXRoc2l6ZSA9ICh0aGlzLm5vZGUuaXNUb2tlbiB8fCB0aGlzLm5vZGUuaXNLaW5kKCdtc3R5bGUnKSA/XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMuZ2V0KCdtYXRoc2l6ZScpIDogYXR0cmlidXRlcy5nZXRJbmhlcml0ZWQoJ21hdGhzaXplJykpO1xuICAgIC8vXG4gICAgLy8gSWYgc2NyaXB0c2l6ZSBpcyBub24temVybywgc2V0IHNjYWxlIGJhc2VkIG9uIHNjcmlwdHNpemVtdWx0aXBsaWVyXG4gICAgLy9cbiAgICBpZiAoc2NyaXB0bGV2ZWwgIT09IDApIHtcbiAgICAgIHNjYWxlID0gTWF0aC5wb3coYXR0cmlidXRlcy5nZXQoJ3NjcmlwdHNpemVtdWx0aXBsaWVyJykgYXMgbnVtYmVyLCBzY3JpcHRsZXZlbCk7XG4gICAgICBsZXQgc2NyaXB0bWluc2l6ZSA9IHRoaXMubGVuZ3RoMmVtKGF0dHJpYnV0ZXMuZ2V0KCdzY3JpcHRtaW5zaXplJyksIC44LCAxKTtcbiAgICAgIGlmIChzY2FsZSA8IHNjcmlwdG1pbnNpemUpIHNjYWxlID0gc2NyaXB0bWluc2l6ZTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyBJZiB0aGVyZSBpcyBzdHlsZT1cImZvbnQtc2l6ZTouLi5cIiwgYW5kIG5vdCBmb250c2l6ZSBhdHRyaWJ1dGUsIHVzZSB0aGF0IGFzIGZvbnRzaXplXG4gICAgLy9cbiAgICBpZiAodGhpcy5yZW1vdmVkU3R5bGVzICYmIHRoaXMucmVtb3ZlZFN0eWxlcy5mb250U2l6ZSAmJiAhZm9udHNpemUpIHtcbiAgICAgIGZvbnRzaXplID0gdGhpcy5yZW1vdmVkU3R5bGVzLmZvbnRTaXplO1xuICAgIH1cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGEgZm9udHNpemUgYW5kIG5vIG1hdGhzaXplIGF0dHJpYnV0ZSwgaXMgdGhhdFxuICAgIC8vXG4gICAgaWYgKGZvbnRzaXplICYmICFhdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdtYXRoc2l6ZScpKSB7XG4gICAgICBtYXRoc2l6ZSA9IGZvbnRzaXplO1xuICAgIH1cbiAgICAvL1xuICAgIC8vICBJbmNvcnBvcmF0ZSB0aGUgbWF0aHNpemUsIGlmIGFueVxuICAgIC8vXG4gICAgaWYgKG1hdGhzaXplICE9PSAnMScpIHtcbiAgICAgIHNjYWxlICo9IHRoaXMubGVuZ3RoMmVtKG1hdGhzaXplLCAxLCAxKTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyBSZWNvcmQgdGhlIHNjYWxpbmcgZmFjdG9ycyBhbmQgc2V0IHRoZSBlbGVtZW50J3MgQ1NTXG4gICAgLy9cbiAgICB0aGlzLmJib3guc2NhbGUgPSBzY2FsZTtcbiAgICB0aGlzLmJib3gucnNjYWxlID0gc2NhbGUgLyBwc2NhbGU7XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgc3BhY2luZyBiYXNlZCBvbiBUZVggb3IgTWF0aE1MIGFsZ29yaXRobVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFNwYWNlKCkge1xuICAgIGNvbnN0IGlzVG9wID0gdGhpcy5pc1RvcEVtYmVsbGlzaGVkKCk7XG4gICAgY29uc3QgaGFzU3BhY2luZyA9IHRoaXMubm9kZS5oYXNTcGFjaW5nQXR0cmlidXRlcygpO1xuICAgIGlmICh0aGlzLmpheC5vcHRpb25zLm1hdGhtbFNwYWNpbmcgfHwgaGFzU3BhY2luZykge1xuICAgICAgaXNUb3AgJiYgdGhpcy5nZXRNYXRoTUxTcGFjaW5nKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZ2V0VGVYU3BhY2luZyhpc1RvcCwgaGFzU3BhY2luZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3BhY2luZyB1c2luZyBNYXRoTUwgcnVsZXMgYmFzZWQgb24gdGhlIGNvcmUgTU9cbiAgICovXG4gIHByb3RlY3RlZCBnZXRNYXRoTUxTcGFjaW5nKCkge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLm5vZGUuY29yZU1PKCkgYXMgTW1sTW87XG4gICAgLy9cbiAgICAvLyBJZiB0aGUgbW8gaXMgbm90IHdpdGhpbiBhIG11bHRpLW5vZGUgbXJvdywgZG9uJ3QgYWRkIHNwYWNlXG4gICAgLy9cbiAgICBjb25zdCBjaGlsZCA9IG5vZGUuY29yZVBhcmVudCgpO1xuICAgIGNvbnN0IHBhcmVudCA9IGNoaWxkLnBhcmVudDtcbiAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LmlzS2luZCgnbXJvdycpIHx8IHBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSkgcmV0dXJuO1xuICAgIC8vXG4gICAgLy8gR2V0IHRoZSBsc3BhY2UgYW5kIHJzcGFjZVxuICAgIC8vXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IG5vZGUuYXR0cmlidXRlcztcbiAgICBjb25zdCBpc1NjcmlwdCA9IChhdHRyaWJ1dGVzLmdldCgnc2NyaXB0bGV2ZWwnKSA+IDApO1xuICAgIHRoaXMuYmJveC5MID0gKGF0dHJpYnV0ZXMuaXNTZXQoJ2xzcGFjZScpID9cbiAgICAgICAgICAgICAgICAgICBNYXRoLm1heCgwLCB0aGlzLmxlbmd0aDJlbShhdHRyaWJ1dGVzLmdldCgnbHNwYWNlJykpKSA6XG4gICAgICAgICAgICAgICAgICAgTWF0aE1MU3BhY2UoaXNTY3JpcHQsIG5vZGUubHNwYWNlKSk7XG4gICAgdGhpcy5iYm94LlIgPSAoYXR0cmlidXRlcy5pc1NldCgncnNwYWNlJykgP1xuICAgICAgICAgICAgICAgICAgIE1hdGgubWF4KDAsIHRoaXMubGVuZ3RoMmVtKGF0dHJpYnV0ZXMuZ2V0KCdyc3BhY2UnKSkpIDpcbiAgICAgICAgICAgICAgICAgICBNYXRoTUxTcGFjZShpc1NjcmlwdCwgbm9kZS5yc3BhY2UpKTtcbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGFyZSB0d28gYWRqYWNlbnQgPG1vPiwgdXNlIGVub3VnaCBsZWZ0IHNwYWNlIHRvIG1ha2UgaXRcbiAgICAvLyAgIHRoZSBtYXhpbXVtIG9mIHRoZSByc3BhY2Ugb2YgdGhlIGZpcnN0IGFuZCBsc3BhY2Ugb2YgdGhlIHNlY29uZFxuICAgIC8vXG4gICAgY29uc3QgbiA9IHBhcmVudC5jaGlsZEluZGV4KGNoaWxkKTtcbiAgICBpZiAobiA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IHByZXYgPSBwYXJlbnQuY2hpbGROb2Rlc1tuIC0gMV0gYXMgQWJzdHJhY3RNbWxOb2RlO1xuICAgIGlmICghcHJldi5pc0VtYmVsbGlzaGVkKSByZXR1cm47XG4gICAgY29uc3QgYmJveCA9IHRoaXMuamF4Lm5vZGVNYXAuZ2V0KHByZXYpLmdldEJCb3goKTtcbiAgICBpZiAoYmJveC5SKSB7XG4gICAgICB0aGlzLmJib3guTCA9IE1hdGgubWF4KDAsIHRoaXMuYmJveC5MIC0gYmJveC5SKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzcGFjaW5nIHVzaW5nIHRoZSBUZVggcnVsZXNcbiAgICpcbiAgICogQHBhcm0ge2Jvb2xlYW59IGlzVG9wICAgICAgIFRydWUgd2hlbiB0aGlzIGlzIGEgdG9wLWxldmVsIGVtYmVsbGlzaGVkIG9wZXJhdG9yXG4gICAqIEBwYXJtIHtib29sZWFufSBoYXNTcGFjaW5nICBUcnVlIHdoZW4gdGhlcmUgaXMgYW4gZXhwbGljaXQgb3IgaW5oZXJpdGVkICdmb3JtJyBhdHRyaWJ1dGVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUZVhTcGFjaW5nKGlzVG9wOiBib29sZWFuLCBoYXNTcGFjaW5nOiBib29sZWFuKSB7XG4gICAgaWYgKCFoYXNTcGFjaW5nKSB7XG4gICAgICBjb25zdCBzcGFjZSA9IHRoaXMubm9kZS50ZXhTcGFjaW5nKCk7XG4gICAgICBpZiAoc3BhY2UpIHtcbiAgICAgICAgdGhpcy5iYm94LkwgPSB0aGlzLmxlbmd0aDJlbShzcGFjZSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChpc1RvcCB8fCBoYXNTcGFjaW5nKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5ub2RlLmNvcmVNTygpLmF0dHJpYnV0ZXM7XG4gICAgICBpZiAoYXR0cmlidXRlcy5pc1NldCgnbHNwYWNlJykpIHtcbiAgICAgICAgdGhpcy5iYm94LkwgPSBNYXRoLm1heCgwLCB0aGlzLmxlbmd0aDJlbShhdHRyaWJ1dGVzLmdldCgnbHNwYWNlJykpKTtcbiAgICAgIH1cbiAgICAgIGlmIChhdHRyaWJ1dGVzLmlzU2V0KCdyc3BhY2UnKSkge1xuICAgICAgICB0aGlzLmJib3guUiA9IE1hdGgubWF4KDAsIHRoaXMubGVuZ3RoMmVtKGF0dHJpYnV0ZXMuZ2V0KCdyc3BhY2UnKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgIFRydWUgaWYgdGhpcyBpcyB0aGUgdG9wLW1vc3QgY29udGFpbmVyIG9mIGFuIGVtYmVsbGlzaGVkIG9wZXJhdG9yIHRoYXQgaXNcbiAgICogICAgICAgICAgICAgICAgICAgICAgIGl0c2VsZiBhbiBlbWJlbGxpc2hlZCBvcGVyYXRvciAodGhlIG1heGltYWwgZW1iZWxsaXNoZWQgb3BlcmF0b3IgZm9yIGl0cyBjb3JlKVxuICAgKi9cbiAgcHJvdGVjdGVkIGlzVG9wRW1iZWxsaXNoZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLm5vZGUuaXNFbWJlbGxpc2hlZCAmJlxuICAgICAgICAgICAgISh0aGlzLm5vZGUucGFyZW50ICYmIHRoaXMubm9kZS5wYXJlbnQuaXNFbWJlbGxpc2hlZCkpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge0NvbW1vbldyYXBwZXJ9ICBUaGUgd3JhcHBlciBmb3IgdGhpcyBub2RlJ3MgY29yZSBub2RlXG4gICAqL1xuICBwdWJsaWMgY29yZSgpOiBDb21tb25XcmFwcGVyPEosIFcsIEMsIENDLCBERCwgRkQ+IHtcbiAgICByZXR1cm4gdGhpcy5qYXgubm9kZU1hcC5nZXQodGhpcy5ub2RlLmNvcmUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7Q29tbW9uV3JhcHBlcn0gIFRoZSB3cmFwcGVyIGZvciB0aGlzIG5vZGUncyBjb3JlIDxtbz4gbm9kZVxuICAgKi9cbiAgcHVibGljIGNvcmVNTygpOiBDb21tb25XcmFwcGVyPEosIFcsIEMsIENDLCBERCwgRkQ+IHtcbiAgICByZXR1cm4gdGhpcy5qYXgubm9kZU1hcC5nZXQodGhpcy5ub2RlLmNvcmVNTygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBGb3IgYSB0b2tlbiBub2RlLCB0aGUgY29tYmluZWQgdGV4dCBjb250ZW50IG9mIHRoZSBub2RlJ3MgY2hpbGRyZW5cbiAgICovXG4gIHB1YmxpYyBnZXRUZXh0KCk6IHN0cmluZyB7XG4gICAgbGV0IHRleHQgPSAnJztcbiAgICBpZiAodGhpcy5ub2RlLmlzVG9rZW4pIHtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5ub2RlLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgVGV4dE5vZGUpIHtcbiAgICAgICAgICB0ZXh0ICs9IGNoaWxkLmdldFRleHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0RJUkVDVElPTn0gZGlyZWN0aW9uICBUaGUgZGlyZWN0aW9uIHRvIHN0cmV0Y2ggdGhpcyBub2RlXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICAgICAgICAgICAgIFdoZXRoZXIgdGhlIG5vZGUgY2FuIHN0cmV0Y2ggaW4gdGhhdCBkaXJlY3Rpb25cbiAgICovXG4gIHB1YmxpYyBjYW5TdHJldGNoKGRpcmVjdGlvbjogRElSRUNUSU9OKTogYm9vbGVhbiB7XG4gICAgdGhpcy5zdHJldGNoID0gTk9TVFJFVENIIGFzIEREO1xuICAgIGlmICh0aGlzLm5vZGUuaXNFbWJlbGxpc2hlZCkge1xuICAgICAgbGV0IGNvcmUgPSB0aGlzLmNvcmUoKTtcbiAgICAgIGlmIChjb3JlICYmIGNvcmUubm9kZSAhPT0gdGhpcy5ub2RlKSB7XG4gICAgICAgIGlmIChjb3JlLmNhblN0cmV0Y2goZGlyZWN0aW9uKSkge1xuICAgICAgICAgIHRoaXMuc3RyZXRjaCA9IGNvcmUuc3RyZXRjaDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGhpcy5zdHJldGNoLmRpciAhPT0gRElSRUNUSU9OLk5vbmU7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7W3N0cmluZywgbnVtYmVyXX0gIFRoZSBhbGlnbm1lbnQgYW5kIGluZGVudGF0aW9uIHNoaWZ0IGZvciB0aGUgZXhwcmVzc2lvblxuICAgKi9cbiAgcHJvdGVjdGVkIGdldEFsaWduU2hpZnQoKTogW3N0cmluZywgbnVtYmVyXSB7XG4gICAgbGV0IHtpbmRlbnRhbGlnbiwgaW5kZW50c2hpZnQsIGluZGVudGFsaWduZmlyc3QsIGluZGVudHNoaWZ0Zmlyc3R9ID1cbiAgICAgIHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldExpc3QoLi4uaW5kZW50QXR0cmlidXRlcykgYXMgU3RyaW5nTWFwO1xuICAgIGlmIChpbmRlbnRhbGlnbmZpcnN0ICE9PSAnaW5kZW50YWxpZ24nKSB7XG4gICAgICBpbmRlbnRhbGlnbiA9IGluZGVudGFsaWduZmlyc3Q7XG4gICAgfVxuICAgIGlmIChpbmRlbnRhbGlnbiA9PT0gJ2F1dG8nKSB7XG4gICAgICBpbmRlbnRhbGlnbiA9IHRoaXMuamF4Lm9wdGlvbnMuZGlzcGxheUFsaWduO1xuICAgIH1cbiAgICBpZiAoaW5kZW50c2hpZnRmaXJzdCAhPT0gJ2luZGVudHNoaWZ0Jykge1xuICAgICAgaW5kZW50c2hpZnQgPSBpbmRlbnRzaGlmdGZpcnN0O1xuICAgIH1cbiAgICBpZiAoaW5kZW50c2hpZnQgPT09ICdhdXRvJykge1xuICAgICAgaW5kZW50c2hpZnQgPSB0aGlzLmpheC5vcHRpb25zLmRpc3BsYXlJbmRlbnQ7XG4gICAgICBpZiAoaW5kZW50YWxpZ24gPT09ICdyaWdodCcgJiYgIWluZGVudHNoaWZ0Lm1hdGNoKC9eXFxzKjBbYS16XSpcXHMqJC8pKSB7XG4gICAgICAgIGluZGVudHNoaWZ0ID0gKCctJyArIGluZGVudHNoaWZ0LnRyaW0oKSkucmVwbGFjZSgvXi0tLywgJycpO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBzaGlmdCA9IHRoaXMubGVuZ3RoMmVtKGluZGVudHNoaWZ0LCB0aGlzLm1ldHJpY3MuY29udGFpbmVyV2lkdGgpO1xuICAgIHJldHVybiBbaW5kZW50YWxpZ24sIHNoaWZ0XSBhcyBbc3RyaW5nLCBudW1iZXJdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBXICAgICAgIFRoZSB0b3RhbCB3aWR0aFxuICAgKiBAcGFyYW0ge0JCb3h9IGJib3ggICAgICBUaGUgYmJveCB0byBiZSBhbGlnbmVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbGlnbiAgIEhvdyB0byBhbGlnbiAobGVmdCwgY2VudGVyLCByaWdodClcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgVGhlIHggcG9zaXRpb24gb2YgdGhlIGFsaWduZWQgd2lkdGhcbiAgICovXG4gIHByb3RlY3RlZCBnZXRBbGlnblgoVzogbnVtYmVyLCBiYm94OiBCQm94LCBhbGlnbjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKGFsaWduID09PSAncmlnaHQnID8gVyAtIChiYm94LncgKyBiYm94LlIpICogYmJveC5yc2NhbGUgOlxuICAgICAgICAgICAgYWxpZ24gPT09ICdsZWZ0JyA/IGJib3guTCAqIGJib3gucnNjYWxlIDpcbiAgICAgICAgICAgIChXIC0gYmJveC53ICogYmJveC5yc2NhbGUpIC8gMik7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IEggICAgICAgIFRoZSB0b3RhbCBoZWlnaHRcbiAgICogQHBhcmFtIHtudW1iZXJ9IEQgICAgICAgIFRoZSB0b3RhbCBkZXB0aFxuICAgKiBAcGFyYW0ge251bWJlcn0gaCAgICAgICAgVGhlIGhlaWdodCB0byBiZSBhbGlnbmVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkICAgICAgICBUaGUgZGVwdGggdG8gYmUgYWxpZ25lZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gYWxpZ24gICAgSG93IHRvIGFsaWduICh0b3AsIGJvdHRvbSwgY2VudGVyLCBheGlzLCBiYXNlbGluZSlcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgIFRoZSB5IHBvc2l0aW9uIG9mIHRoZSBhbGlnbmVkIGJhc2VsaW5lXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0QWxpZ25ZKEg6IG51bWJlciwgRDogbnVtYmVyLCBoOiBudW1iZXIsIGQ6IG51bWJlciwgYWxpZ246IHN0cmluZyk6IG51bWJlciB7XG4gICAgcmV0dXJuIChhbGlnbiA9PT0gJ3RvcCcgPyBIIC0gaCA6XG4gICAgICAgICAgICBhbGlnbiA9PT0gJ2JvdHRvbScgPyBkIC0gRCA6XG4gICAgICAgICAgICBhbGlnbiA9PT0gJ2NlbnRlcicgPyAoKEggLSBoKSAtIChEIC0gZCkpIC8gMiA6XG4gICAgICAgICAgICAwKTsgLy8gYmFzZWxpbmUgYW5kIGF4aXNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaSAgIFRoZSBpbmRleCBvZiB0aGUgY2hpbGQgZWxlbWVudCB3aG9zZSBjb250YWluZXIgaXMgbmVlZGVkXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgVGhlIGlubmVyIHdpZHRoIGFzIGEgY29udGFpbmVyIChmb3IgcGVyY2VudGFnZSB3aWR0aHMpXG4gICAqL1xuICBwdWJsaWMgZ2V0V3JhcFdpZHRoKGk6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1tpXS5nZXRCQm94KCkudztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gaSAgIFRoZSBpbmRleCBvZiB0aGUgY2hpbGQgZWxlbWVudCB3aG9zZSBjb250YWluZXIgaXMgbmVlZGVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgVGhlIGFsaWdubWVudCBjaGlsZCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0Q2hpbGRBbGlnbihfaTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2xlZnQnO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gIC8qXG4gICAqIEVhc3kgYWNjZXNzIHRvIHNvbWUgdXRpbGl0eSByb3V0aW5lc1xuICAgKi9cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG0gIEEgbnVtYmVyIHRvIGJlIHNob3duIGFzIGEgcGVyY2VudFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgbnVtYmVyIG0gYXMgYSBwZXJjZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgcGVyY2VudChtOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBMRU5HVEhTLnBlcmNlbnQobSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG0gIEEgbnVtYmVyIHRvIGJlIHNob3duIGluIGVtc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgbnVtYmVyIHdpdGggdW5pdHMgb2YgZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgZW0obTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTEVOR1RIUy5lbShtKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbSAgIEEgbnVtYmVyIG9mIGVtJ3MgdG8gYmUgc2hvd24gYXMgcGl4ZWxzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBNICAgVGhlIG1pbmltdW0gbnVtYmVyIG9mIHBpeGVscyB0byBhbGxvd1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgbnVtYmVyIHdpdGggdW5pdHMgb2YgcHhcbiAgICovXG4gIHByb3RlY3RlZCBweChtOiBudW1iZXIsIE06IG51bWJlciA9IC1MRU5HVEhTLkJJR0RJTUVOKTogc3RyaW5nIHtcbiAgICByZXR1cm4gTEVOR1RIUy5weChtLCBNLCB0aGlzLm1ldHJpY3MuZW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7UHJvcGVydHl9IGxlbmd0aCAgQSBkaW1lbnNpb24gKGdpdmluZyBudW1iZXIgYW5kIHVuaXRzKSBvciBudW1iZXIgdG8gYmUgY29udmVydGVkIHRvIGVtc1xuICAgKiBAcGFyYW0ge251bWJlcn0gc2l6ZSAgVGhlIGRlZmF1bHQgc2l6ZSBvZiB0aGUgZGltZW5zaW9uIChmb3IgcGVyY2VudGFnZSB2YWx1ZXMpXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZSAgVGhlIGN1cnJlbnQgc2NhbGluZyBmYWN0b3IgKHRvIGhhbmRsZSBhYnNvbHV0ZSB1bml0cylcbiAgICogQHJldHVybiB7bnVtYmVyfSAgVGhlIGRpbWVuc2lvbiBjb252ZXJ0ZWQgdG8gZW1zXG4gICAqL1xuICBwcm90ZWN0ZWQgbGVuZ3RoMmVtKGxlbmd0aDogUHJvcGVydHksIHNpemU6IG51bWJlciA9IDEsIHNjYWxlOiBudW1iZXIgPSBudWxsKTogbnVtYmVyIHtcbiAgICBpZiAoc2NhbGUgPT09IG51bGwpIHtcbiAgICAgIHNjYWxlID0gdGhpcy5iYm94LnNjYWxlO1xuICAgIH1cbiAgICByZXR1cm4gTEVOR1RIUy5sZW5ndGgyZW0obGVuZ3RoIGFzIHN0cmluZywgc2l6ZSwgc2NhbGUsIHRoaXMuamF4LnB4UGVyRW0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgVGhlIHRleHQgdG8gdHVybiBpbnRvIHVuaWNvZGUgbG9jYXRpb25zXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIG5hbWUgb2YgdGhlIHZhcmlhbnQgZm9yIHRoZSBjaGFyYWN0ZXJzXG4gICAqIEByZXR1cm4ge251bWJlcltdfSAgICAgQXJyYXkgb2YgbnVtYmVycyByZXByZXNldGluZyB0aGUgc3RyaW5nJ3MgdW5pY29kZSBjaGFyYWN0ZXIgcG9zaXRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgdW5pY29kZUNoYXJzKHRleHQ6IHN0cmluZywgbmFtZTogc3RyaW5nID0gdGhpcy52YXJpYW50KTogbnVtYmVyW10ge1xuICAgIGxldCBjaGFycyA9IHVuaWNvZGVDaGFycyh0ZXh0KTtcbiAgICAvL1xuICAgIC8vICBSZW1hcCB0byBNYXRoIEFscGhhbnVtZXJpY3MgYmxvY2tcbiAgICAvL1xuICAgIGNvbnN0IHZhcmlhbnQgPSB0aGlzLmZvbnQuZ2V0VmFyaWFudChuYW1lKTtcbiAgICBpZiAodmFyaWFudCAmJiB2YXJpYW50LmNoYXJzKSB7XG4gICAgICBjb25zdCBtYXAgPSB2YXJpYW50LmNoYXJzO1xuICAgICAgLy9cbiAgICAgIC8vICBJcyBtYXBbbl0gZG9lc24ndCBleGlzdCwgKG1hcFtuXSB8fCBbXSkgc3RpbGwgZ2l2ZXMgYW4gQ2hhckRhdGEgYXJyYXkuXG4gICAgICAvLyAgSWYgdGhlIGFycmF5IGRvZXNuJ3QgaGF2ZSBhIENoYXJPcHRpb25zIGVsZW1lbnQgdXNlIHt9IGluc3RlYWQuXG4gICAgICAvLyAgVGhlbiBjaGVjayBpZiB0aGUgb3B0aW9ucyBoYXMgYW4gc21wIHByb3BlcnR5LCB3aGljaCBnaXZlc1xuICAgICAgLy8gICAgdGhlIE1hdGggQWxwaGFiZXQgbWFwcGluZyBmb3IgdGhpcyBjaGFyYWN0ZXIuXG4gICAgICAvLyAgT3RoZXJ3aXNlIHVzZSB0aGUgb3JpZ2luYWwgY29kZSBwb2ludCwgbi5cbiAgICAgIC8vXG4gICAgICBjaGFycyA9IGNoYXJzLm1hcCgobikgPT4gKChtYXBbbl0gfHwgW10pWzNdIHx8IHt9KS5zbXAgfHwgbik7XG4gICAgfVxuICAgIHJldHVybiBjaGFycztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcltdfSBjaGFycyAgICBUaGUgYXJyYXkgb2YgdW5pY29kZSBjaGFyYWN0ZXIgbnVtYmVycyB0byByZW1hcFxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICAgICAgICBUaGUgY29udmVydGVkIGFycmF5XG4gICAqL1xuICBwdWJsaWMgcmVtYXBDaGFycyhjaGFyczogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgcmV0dXJuIGNoYXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgVGhlIHRleHQgZnJvbSB3aGljaCB0byBjcmVhdGUgYSBUZXh0Tm9kZSBvYmplY3RcbiAgICogQHJldHVybiB7VGV4dE5vZGV9ICAgICBUaGUgVGV4dE5vZGUgd2l0aCB0aGUgZ2l2ZW4gdGV4dFxuICAgKi9cbiAgcHVibGljIG1tbFRleHQodGV4dDogc3RyaW5nKTogVGV4dE5vZGUge1xuICAgIHJldHVybiAoKHRoaXMubm9kZSBhcyBBYnN0cmFjdE1tbE5vZGUpLmZhY3RvcnkuY3JlYXRlKCd0ZXh0JykgYXMgVGV4dE5vZGUpLnNldFRleHQodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgICAgICAgICAgICAgVGhlIGtpbmQgb2YgTW1sTm9kZSB0byBjcmVhdGVcbiAgICogQHBhcmFtIHtQcm9wZXJ5TGlzdH0gcHJvcGVydGllcyAgVGhlIHByb3BlcnRpZXMgdG8gc2V0IGluaXRpYWxseVxuICAgKiBAcGFyYW0ge01tbE5vZGVbXX0gY2hpbGRyZW4gICAgICBUaGUgY2hpbGQgbm9kZXMgdG8gYWRkIHRvIHRoZSBjcmVhdGVkIG5vZGVcbiAgICogQHJldHVybiB7TW1sTm9kZX0gICAgICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgTW1sTm9kZVxuICAgKi9cbiAgcHVibGljIG1tbE5vZGUoa2luZDogc3RyaW5nLCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUxpc3QgPSB7fSwgY2hpbGRyZW46IE1tbE5vZGVbXSA9IFtdKTogTW1sTm9kZSB7XG4gICAgcmV0dXJuICh0aGlzLm5vZGUgYXMgQWJzdHJhY3RNbWxOb2RlKS5mYWN0b3J5LmNyZWF0ZShraW5kLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbik7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIG1vIHdyYXBwZXIgd2l0aCB0aGUgZ2l2ZW4gdGV4dCxcbiAgICogICBsaW5rIGl0IGluLCBhbmQgZ2l2ZSBpdCB0aGUgcmlnaHQgZGVmYXVsdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICBUaGUgdGV4dCBmb3IgdGhlIHdyYXBwZWQgZWxlbWVudFxuICAgKiBAcmV0dXJuIHtDb21tb25XcmFwcGVyfSAgVGhlIHdyYXBwZWQgTW1sTW8gbm9kZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNyZWF0ZU1vKHRleHQ6IHN0cmluZyk6IENvbW1vbldyYXBwZXI8SiwgVywgQywgQ0MsIERELCBGRD4ge1xuICAgIGNvbnN0IG1tbEZhY3RvcnkgPSAodGhpcy5ub2RlIGFzIEFic3RyYWN0TW1sTm9kZSkuZmFjdG9yeTtcbiAgICBjb25zdCB0ZXh0Tm9kZSA9IChtbWxGYWN0b3J5LmNyZWF0ZSgndGV4dCcpIGFzIFRleHROb2RlKS5zZXRUZXh0KHRleHQpO1xuICAgIGNvbnN0IG1tbCA9IG1tbEZhY3RvcnkuY3JlYXRlKCdtbycsIHtzdHJldGNoeTogdHJ1ZX0sIFt0ZXh0Tm9kZV0pO1xuICAgIG1tbC5pbmhlcml0QXR0cmlidXRlc0Zyb20odGhpcy5ub2RlKTtcbiAgICBjb25zdCBub2RlID0gdGhpcy53cmFwKG1tbCk7XG4gICAgbm9kZS5wYXJlbnQgPSB0aGlzIGFzIGFueSBhcyBXO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYW50ICAgVGhlIHZhcmlhbnQgaW4gd2hpY2ggdG8gbG9vayBmb3IgdGhlIGNoYXJhY3RlclxuICAgKiBAcGFyYW0ge251bWJlcn0gbiAgICAgICAgIFRoZSBudW1iZXIgb2YgdGhlIGNoYXJhY3RlciB0byBsb29rIHVwXG4gICAqIEByZXR1cm4ge0NoYXJEYXRhfSAgICAgICAgVGhlIGZ1bGwgQ2hhckRhdGEgb2JqZWN0LCB3aXRoIENoYXJPcHRpb25zIGd1YXJhbnRlZWQgdG8gYmUgZGVmaW5lZFxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFZhcmlhbnRDaGFyKHZhcmlhbnQ6IHN0cmluZywgbjogbnVtYmVyKTogQ2hhckRhdGE8Q0M+IHtcbiAgICBjb25zdCBjaGFyID0gdGhpcy5mb250LmdldENoYXIodmFyaWFudCwgbikgfHwgWzAsIDAsIDAsIHt1bmtub3duOiB0cnVlfSBhcyBDQ107XG4gICAgaWYgKGNoYXIubGVuZ3RoID09PSAzKSB7XG4gICAgICAoY2hhciBhcyBhbnkpWzNdID0ge307XG4gICAgfVxuICAgIHJldHVybiBjaGFyIGFzIFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBDQ107XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdXcmFwcGVyIGNsYXNzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge09wdGlvbkxpc3R9IGZyb20gJy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uL3V0aWwvQkJveC5qcyc7XG5pbXBvcnQge0NvbW1vbldyYXBwZXIsIEFueVdyYXBwZXJDbGFzcywgQ29uc3RydWN0b3J9IGZyb20gJy4uL2NvbW1vbi9XcmFwcGVyLmpzJztcbmltcG9ydCB7U1ZHLCBYTElOS05TfSBmcm9tICcuLi9zdmcuanMnO1xuaW1wb3J0IHtTVkdXcmFwcGVyRmFjdG9yeX0gZnJvbSAnLi9XcmFwcGVyRmFjdG9yeS5qcyc7XG5pbXBvcnQge1NWR0ZvbnREYXRhLCBTVkdEZWxpbWl0ZXJEYXRhLCBTVkdDaGFyT3B0aW9uc30gZnJvbSAnLi9Gb250RGF0YS5qcyc7XG5cbmV4cG9ydCB7Q29uc3RydWN0b3IsIFN0cmluZ01hcH0gZnJvbSAnLi4vY29tbW9uL1dyYXBwZXIuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogU2hvcnRoYW5kIGZvciBtYWtlaW5nIGEgU1ZHV3JhcHBlciBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBTVkdDb25zdHJ1Y3RvcjxOLCBULCBEPiA9IENvbnN0cnVjdG9yPFNWR1dyYXBwZXI8TiwgVCwgRD4+O1xuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSB0eXBlIG9mIHRoZSBTVkdXcmFwcGVyIGNsYXNzICh1c2VkIHdoZW4gY3JlYXRpbmcgdGhlIHdyYXBwZXIgZmFjdG9yeSBmb3IgdGhpcyBjbGFzcylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTVkdXcmFwcGVyQ2xhc3MgZXh0ZW5kcyBBbnlXcmFwcGVyQ2xhc3Mge1xuXG4gIGtpbmQ6IHN0cmluZztcblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgYmFzZSBTVkdXcmFwcGVyIGNsYXNzXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU1ZHV3JhcHBlcjxOLCBULCBEPiBleHRlbmRzXG5Db21tb25XcmFwcGVyPFxuICBTVkc8TiwgVCwgRD4sXG4gIFNWR1dyYXBwZXI8TiwgVCwgRD4sXG4gIFNWR1dyYXBwZXJDbGFzcyxcbiAgU1ZHQ2hhck9wdGlvbnMsXG4gIFNWR0RlbGltaXRlckRhdGEsXG4gIFNWR0ZvbnREYXRhXG4+IHtcblxuICAvKipcbiAgICogVGhlIGtpbmQgb2Ygd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kOiBzdHJpbmcgPSAndW5rbm93bic7XG5cbiAgLyoqXG4gICAqIEEgZnV6eiBmYWN0b3IgZm9yIGJvcmRlcnMgdG8gYXZvaWQgYW50aS1hbGlhcyBwcm9ibGVtcyBhdCB0aGUgZWRnZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYm9yZGVyRnV6eiA9IDAuMDA1O1xuXG4gIC8qKlxuICAgKiBUaGUgZmFjdG9yeSB1c2VkIHRvIGNyZWF0ZSBtb3JlIFNWR1dyYXBwZXJzXG4gICAqL1xuICBwcm90ZWN0ZWQgZmFjdG9yeTogU1ZHV3JhcHBlckZhY3Rvcnk8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHBhcmVudDogU1ZHV3JhcHBlcjxOLCBULCBEPjtcbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoaWxkTm9kZXM6IFNWR1dyYXBwZXI8TiwgVCwgRD5bXTtcblxuICAvKipcbiAgICogVGhlIFNWRyBlbGVtZW50IGdlbmVyYXRlZCBmb3IgdGhpcyB3cmFwcGVkIG5vZGVcbiAgICovXG4gIHB1YmxpYyBlbGVtZW50OiBOID0gbnVsbDtcblxuICAvKipcbiAgICogT2Zmc2V0IGR1ZSB0byBib3JkZXIvcGFkZGluZ1xuICAgKi9cbiAgcHVibGljIGR4OiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBmb250OiBTVkdGb250RGF0YTtcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBIVE1MIGZvciB0aGUgd3JhcHBlZCBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge059IHBhcmVudCAgVGhlIEhUTUwgbm9kZSB3aGVyZSB0aGUgb3V0cHV0IGlzIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgdGhpcy5hZGRDaGlsZHJlbih0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IHBhcmVudCAgVGhlIGVsZW1lbnQgaW4gd2hpY2ggdG8gYWRkIHRoZSBjaGlsZHJlblxuICAgKi9cbiAgcHVibGljIGFkZENoaWxkcmVuKHBhcmVudDogTikge1xuICAgIGxldCB4ID0gMDtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgY2hpbGQudG9TVkcocGFyZW50KTtcbiAgICAgIGNvbnN0IGJib3ggPSBjaGlsZC5nZXRPdXRlckJCb3goKTtcbiAgICAgIGlmIChjaGlsZC5lbGVtZW50KSB7XG4gICAgICAgIGNoaWxkLnBsYWNlKHggKyBiYm94LkwgKiBiYm94LnJzY2FsZSwgMCk7XG4gICAgICB9XG4gICAgICB4ICs9IChiYm94LkwgKyBiYm94LncgKyBiYm94LlIpICogYmJveC5yc2NhbGU7XG4gICAgfVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgc3RhbmRhcmQgU1ZHIGVsZW1lbnQgZm9yIHRoZSBnaXZlbiB3cmFwcGVkIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7Tn0gcGFyZW50ICBUaGUgSFRNTCBlbGVtZW50IGluIHdoaWNoIHRoZSBub2RlIGlzIHRvIGJlIGNyZWF0ZWRcbiAgICogQHJldHVybnMge059ICBUaGUgcm9vdCBvZiB0aGUgSFRNTCB0cmVlIGZvciB0aGUgd3JhcHBlZCBub2RlJ3Mgb3V0cHV0XG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhbmRhcmRTVkdub2RlKHBhcmVudDogTik6IE4ge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuY3JlYXRlU1ZHbm9kZShwYXJlbnQpO1xuICAgIHRoaXMuaGFuZGxlU3R5bGVzKCk7XG4gICAgdGhpcy5oYW5kbGVTY2FsZSgpO1xuICAgIHRoaXMuaGFuZGxlQm9yZGVyKCk7XG4gICAgdGhpcy5oYW5kbGVDb2xvcigpO1xuICAgIHRoaXMuaGFuZGxlQXR0cmlidXRlcygpO1xuICAgIHJldHVybiBzdmc7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBwYXJlbnQgIFRoZSBIVE1MIGVsZW1lbnQgaW4gd2hpY2ggdGhlIG5vZGUgaXMgdG8gYmUgY3JlYXRlZFxuICAgKiBAcmV0dXJucyB7Tn0gIFRoZSByb290IG9mIHRoZSBIVE1MIHRyZWUgZm9yIHRoZSB3cmFwcGVkIG5vZGUncyBvdXRwdXRcbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVTVkdub2RlKHBhcmVudDogTik6IE4ge1xuICAgIHRoaXMuZWxlbWVudCA9IHRoaXMuc3ZnKCdnJywgeydkYXRhLW1tbC1ub2RlJzogdGhpcy5ub2RlLmtpbmR9KTtcbiAgICBjb25zdCBocmVmID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdocmVmJyk7XG4gICAgaWYgKGhyZWYpIHtcbiAgICAgIHBhcmVudCA9IHRoaXMuYWRhcHRvci5hcHBlbmQocGFyZW50LCB0aGlzLnN2ZygnYScsIHtocmVmOiBocmVmfSkpIGFzIE47XG4gICAgICBjb25zdCB7aCwgZCwgd30gPSB0aGlzLmdldE91dGVyQkJveCgpO1xuICAgICAgdGhpcy5hZGFwdG9yLmFwcGVuZCh0aGlzLmVsZW1lbnQsIHRoaXMuc3ZnKCdyZWN0Jywge1xuICAgICAgICAnZGF0YS1oaXRib3gnOiB0cnVlLCBmaWxsOiAnbm9uZScsIHN0cm9rZTogJ25vbmUnLCAncG9pbnRlci1ldmVudHMnOiAnYWxsJyxcbiAgICAgICAgd2lkdGg6IHRoaXMuZml4ZWQodyksIGhlaWdodDogdGhpcy5maXhlZChoICsgZCksIHk6IHRoaXMuZml4ZWQoLWQpXG4gICAgICB9KSk7XG4gICAgfVxuICAgIHRoaXMuYWRhcHRvci5hcHBlbmQocGFyZW50LCB0aGlzLmVsZW1lbnQpIGFzIE47XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIENTUyBzdHlsZXMgZm9yIHRoZSBzdmcgZWxlbWVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVN0eWxlcygpIHtcbiAgICBpZiAoIXRoaXMuc3R5bGVzKSByZXR1cm47XG4gICAgY29uc3Qgc3R5bGVzID0gdGhpcy5zdHlsZXMuY3NzVGV4dDtcbiAgICBpZiAoc3R5bGVzKSB7XG4gICAgICB0aGlzLmFkYXB0b3Iuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgJ3N0eWxlJywgc3R5bGVzKTtcbiAgICB9XG4gICAgQkJveC5TdHlsZUFkanVzdC5mb3JFYWNoKChbbmFtZSwgLCBscl0pID0+IHtcbiAgICAgIGlmIChsciAhPT0gMCkgcmV0dXJuO1xuICAgICAgY29uc3QgeCA9IHRoaXMuc3R5bGVzLmdldChuYW1lKTtcbiAgICAgIGlmICh4KSB7XG4gICAgICAgIHRoaXMuZHggKz0gdGhpcy5sZW5ndGgyZW0oeCwgMSwgdGhpcy5iYm94LnJzY2FsZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSAocmVsYXRpdmUpIHNjYWxpbmcgZmFjdG9yIGZvciB0aGUgbm9kZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVNjYWxlKCkge1xuICAgIGlmICh0aGlzLmJib3gucnNjYWxlICE9PSAxKSB7XG4gICAgICBjb25zdCBzY2FsZSA9ICdzY2FsZSgnICsgdGhpcy5maXhlZCh0aGlzLmJib3gucnNjYWxlIC8gMTAwMCwgMykgKyAnKSc7XG4gICAgICB0aGlzLmFkYXB0b3Iuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgJ3RyYW5zZm9ybScsIHNjYWxlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIGNvbG9yc1xuICAgKiAoT25seSBsb29rIGF0IGV4cGxpY2l0IGF0dHJpYnV0ZXMsIHNpbmNlIGluaGVyaXRlZCBvbmVzIHdpbGxcbiAgICogIGJlIGFwcGxpZWQgdG8gYSBwYXJlbnQgZWxlbWVudCwgYW5kIHdlIHdpbGwgaW5oZXJpdCBmcm9tIHRoYXQpXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ29sb3IoKSB7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXM7XG4gICAgY29uc3QgbWF0aGNvbG9yID0gYXR0cmlidXRlcy5nZXRFeHBsaWNpdCgnbWF0aGNvbG9yJykgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGNvbG9yID0gYXR0cmlidXRlcy5nZXRFeHBsaWNpdCgnY29sb3InKSBhcyBzdHJpbmc7XG4gICAgY29uc3QgbWF0aGJhY2tncm91bmQgPSBhdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdtYXRoYmFja2dyb3VuZCcpIGFzIHN0cmluZztcbiAgICBjb25zdCBiYWNrZ3JvdW5kID0gYXR0cmlidXRlcy5nZXRFeHBsaWNpdCgnYmFja2dyb3VuZCcpIGFzIHN0cmluZztcbiAgICBjb25zdCBiZ2NvbG9yID0gKHRoaXMuc3R5bGVzPy5nZXQoJ2JhY2tncm91bmQtY29sb3InKSB8fCAnJyk7XG4gICAgaWYgKG1hdGhjb2xvciB8fCBjb2xvcikge1xuICAgICAgYWRhcHRvci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCAnZmlsbCcsIG1hdGhjb2xvciB8fCBjb2xvcik7XG4gICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsICdzdHJva2UnLCBtYXRoY29sb3IgfHwgY29sb3IpO1xuICAgIH1cbiAgICBpZiAobWF0aGJhY2tncm91bmQgfHwgYmFja2dyb3VuZCB8fCBiZ2NvbG9yKSB7XG4gICAgICBsZXQge2gsIGQsIHd9ID0gdGhpcy5nZXRPdXRlckJCb3goKTtcbiAgICAgIGxldCByZWN0ID0gdGhpcy5zdmcoJ3JlY3QnLCB7XG4gICAgICAgIGZpbGw6IG1hdGhiYWNrZ3JvdW5kIHx8IGJhY2tncm91bmQgfHwgYmdjb2xvcixcbiAgICAgICAgeDogdGhpcy5maXhlZCgtdGhpcy5keCksIHk6IHRoaXMuZml4ZWQoLWQpLFxuICAgICAgICB3aWR0aDogdGhpcy5maXhlZCh3KSxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmZpeGVkKGggKyBkKSxcbiAgICAgICAgJ2RhdGEtYmdjb2xvcic6IHRydWVcbiAgICAgIH0pO1xuICAgICAgbGV0IGNoaWxkID0gYWRhcHRvci5maXJzdENoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgYWRhcHRvci5pbnNlcnQocmVjdCwgY2hpbGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRhcHRvci5hcHBlbmQodGhpcy5lbGVtZW50LCByZWN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBib3JkZXJzLCBpZiBhbnkgYXJlIHJlcXVlc3RlZC5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVCb3JkZXIoKSB7XG4gICAgaWYgKCF0aGlzLnN0eWxlcykgcmV0dXJuO1xuICAgIGNvbnN0IHdpZHRoID0gQXJyYXkoNCkuZmlsbCgwKTtcbiAgICBjb25zdCBzdHlsZSA9IEFycmF5KDQpO1xuICAgIGNvbnN0IGNvbG9yID0gQXJyYXkoNCk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgaV0gb2YgW1snVG9wJywgMF0sIFsnUmlnaHQnLCAxXSwgWydCb3R0b20nLCAyXSwgWydMZWZ0JywgM11dIGFzIFtzdHJpbmcsIG51bWJlcl1bXSkge1xuICAgICAgY29uc3Qga2V5ID0gJ2JvcmRlcicgKyBuYW1lO1xuICAgICAgY29uc3QgdyA9IHRoaXMuc3R5bGVzLmdldChrZXkgKyAnV2lkdGgnKTtcbiAgICAgIGlmICghdykgY29udGludWU7XG4gICAgICB3aWR0aFtpXSA9IE1hdGgubWF4KDAsIHRoaXMubGVuZ3RoMmVtKHcsIDEsIHRoaXMuYmJveC5yc2NhbGUpKTtcbiAgICAgIHN0eWxlW2ldID0gdGhpcy5zdHlsZXMuZ2V0KGtleSArICdTdHlsZScpIHx8ICdzb2xpZCc7XG4gICAgICBjb2xvcltpXSA9IHRoaXMuc3R5bGVzLmdldChrZXkgKyAnQ29sb3InKSB8fCAnY3VycmVudENvbG9yJztcbiAgICB9XG4gICAgY29uc3QgZiA9IFNWR1dyYXBwZXIuYm9yZGVyRnV6ejtcbiAgICBjb25zdCBiYm94ID0gdGhpcy5nZXRPdXRlckJCb3goKTtcbiAgICBjb25zdCBbaCwgZCwgd10gPSBbYmJveC5oICsgZiwgYmJveC5kICsgZiwgYmJveC53ICsgZl07XG4gICAgY29uc3Qgb3V0ZXJSVCA9IFt3LCBoXTtcbiAgICBjb25zdCBvdXRlckxUID0gWy1mLCBoXTtcbiAgICBjb25zdCBvdXRlclJCID0gW3csIC1kXTtcbiAgICBjb25zdCBvdXRlckxCID0gWy1mLCAtZF07XG4gICAgY29uc3QgaW5uZXJSVCA9IFt3IC0gd2lkdGhbMV0sIGggLSB3aWR0aFswXV07XG4gICAgY29uc3QgaW5uZXJMVCA9IFstZiArIHdpZHRoWzNdLCBoIC0gd2lkdGhbMF1dO1xuICAgIGNvbnN0IGlubmVyUkIgPSBbdyAtIHdpZHRoWzFdLCAtZCArIHdpZHRoWzJdXTtcbiAgICBjb25zdCBpbm5lckxCID0gWy1mICsgd2lkdGhbM10sIC1kICsgd2lkdGhbMl1dO1xuICAgIGNvbnN0IHBhdGhzOiBudW1iZXJbXVtdW10gPSBbXG4gICAgICBbb3V0ZXJMVCwgb3V0ZXJSVCwgaW5uZXJSVCwgaW5uZXJMVF0sXG4gICAgICBbb3V0ZXJSQiwgb3V0ZXJSVCwgaW5uZXJSVCwgaW5uZXJSQl0sXG4gICAgICBbb3V0ZXJMQiwgb3V0ZXJSQiwgaW5uZXJSQiwgaW5uZXJMQl0sXG4gICAgICBbb3V0ZXJMQiwgb3V0ZXJMVCwgaW5uZXJMVCwgaW5uZXJMQl1cbiAgICBdO1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3QgY2hpbGQgPSBhZGFwdG9yLmZpcnN0Q2hpbGQodGhpcy5lbGVtZW50KSBhcyBOO1xuICAgIGZvciAoY29uc3QgaSBvZiBbMCwgMSwgMiwgM10pIHtcbiAgICAgIGlmICghd2lkdGhbaV0pIGNvbnRpbnVlO1xuICAgICAgY29uc3QgcGF0aCA9IHBhdGhzW2ldO1xuICAgICAgaWYgKHN0eWxlW2ldID09PSAnZGFzaGVkJyB8fCBzdHlsZVtpXSA9PT0gJ2RvdHRlZCcpIHtcbiAgICAgICAgdGhpcy5hZGRCb3JkZXJCcm9rZW4ocGF0aCwgY29sb3JbaV0sIHN0eWxlW2ldLCB3aWR0aFtpXSwgaSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmFkZEJvcmRlclNvbGlkKHBhdGgsIGNvbG9yW2ldLCBjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIHNvbGlkIGJvcmRlciBwaWVjZSB3aXRoIHRoZSBnaXZlbiBjb2xvclxuICAgKlxuICAgKiBAcGFyYW0ge1tudW1iZXIsIG51bWJlcl1bXX0gcGF0aCAgICBUaGUgcG9pbnRzIGZvciB0aGUgYm9yZGVyIHNlZ21lbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yICAgICAgICAgICAgICAgVGhlIGNvbG9yIHRvIHVzZVxuICAgKiBAcGFyYW0ge059IGNoaWxkICAgICAgICAgICAgICAgICAgICBJbnNlcnQgdGhlIGJvcmRlciBiZWZvcmUgdGhpcyBjaGlsZCwgaWYgYW55XG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkQm9yZGVyU29saWQocGF0aDogbnVtYmVyW11bXSwgY29sb3I6IHN0cmluZywgY2hpbGQ6IE4pIHtcbiAgICBjb25zdCBib3JkZXIgPSB0aGlzLnN2ZygncG9seWdvbicsIHtcbiAgICAgIHBvaW50czogcGF0aC5tYXAoKFt4LCB5XSkgPT4gYCR7dGhpcy5maXhlZCh4IC0gdGhpcy5keCl9LCR7dGhpcy5maXhlZCh5KX1gKS5qb2luKCcgJyksXG4gICAgICBzdHJva2U6ICdub25lJyxcbiAgICAgIGZpbGw6IGNvbG9yXG4gICAgfSk7XG4gICAgaWYgKGNoaWxkKSB7XG4gICAgICB0aGlzLmFkYXB0b3IuaW5zZXJ0KGJvcmRlciwgY2hpbGQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkYXB0b3IuYXBwZW5kKHRoaXMuZWxlbWVudCwgYm9yZGVyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZGFzaGVkIG9yIGRvdHRlZCBib3JkZXIgbGluZSB3aXRoIHRoZSBnaXZlbiB3aWR0aCBhbmQgY29sb3JcbiAgICpcbiAgICogQHBhcmFtIHtbbnVtYmVyLCBudW1iZXJdW119IHBhdGggICBUaGUgcG9pbnRzIGZvciB0aGUgYm9yZGVyIHNlZ21lbnRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yICAgICAgICAgICAgICBUaGUgY29sb3IgdG8gdXNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZSAgICAgICAgICAgICAgRWl0aGVyICdkb3R0ZWQnIG9yICdkYXNoZWQnXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0ICAgICAgICAgICAgICAgICAgVGhlIHRoaWNrbmVzcyBmb3IgdGhlIGJvcmRlciBsaW5lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpICAgICAgICAgICAgICAgICAgVGhlIHNpZGUgYmVpbmcgZHJhd25cbiAgICovXG4gIHByb3RlY3RlZCBhZGRCb3JkZXJCcm9rZW4ocGF0aDogbnVtYmVyW11bXSwgY29sb3I6IHN0cmluZywgc3R5bGU6IHN0cmluZywgdDogbnVtYmVyLCBpOiBudW1iZXIpIHtcbiAgICBjb25zdCBkb3QgPSAoc3R5bGUgPT09ICdkb3R0ZWQnKTtcbiAgICBjb25zdCB0MiA9IHQgLyAyO1xuICAgIGNvbnN0IFt0eDEsIHR5MSwgdHgyLCB0eTJdID0gW1t0MiwgLXQyLCAtdDIsIC10Ml0sIFstdDIsIHQyLCAtdDIsIC10Ml0sIFt0MiwgdDIsIC10MiwgdDJdLCBbdDIsIHQyLCB0MiwgLXQyXV1baV07XG4gICAgY29uc3QgW0EsIEJdID0gcGF0aDtcbiAgICBjb25zdCB4MSA9IEFbMF0gKyB0eDEgLSB0aGlzLmR4LCB5MSA9IEFbMV0gKyB0eTE7XG4gICAgY29uc3QgeDIgPSBCWzBdICsgdHgyIC0gdGhpcy5keCwgeTIgPSBCWzFdICsgdHkyO1xuICAgIGNvbnN0IFcgPSBNYXRoLmFicyhpICUgMiA/IHkyIC0geTEgOiB4MiAtIHgxKTtcbiAgICBjb25zdCBuID0gKGRvdCA/IE1hdGguY2VpbChXIC8gKDIgKiB0KSkgOiBNYXRoLmNlaWwoKFcgLSB0KSAvICg0ICogdCkpKTtcbiAgICBjb25zdCBtID0gVyAvICg0ICogbiArIDEpO1xuICAgIGNvbnN0IGxpbmUgPSB0aGlzLnN2ZygnbGluZScsIHtcbiAgICAgIHgxOiB0aGlzLmZpeGVkKHgxKSwgeTE6IHRoaXMuZml4ZWQoeTEpLFxuICAgICAgeDI6IHRoaXMuZml4ZWQoeDIpLCB5MjogdGhpcy5maXhlZCh5MiksXG4gICAgICAnc3Ryb2tlLXdpZHRoJzogdGhpcy5maXhlZCh0KSwgc3Ryb2tlOiBjb2xvciwgJ3N0cm9rZS1saW5lY2FwJzogZG90ID8gJ3JvdW5kJyA6ICdzcXVhcmUnLFxuICAgICAgJ3N0cm9rZS1kYXNoYXJyYXknOiBkb3QgPyBbMSwgdGhpcy5maXhlZChXIC8gbiAtIC4wMDIpXS5qb2luKCcgJykgOiBbdGhpcy5maXhlZChtKSwgdGhpcy5maXhlZCgzICogbSldLmpvaW4oJyAnKVxuICAgIH0pO1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3QgY2hpbGQgPSBhZGFwdG9yLmZpcnN0Q2hpbGQodGhpcy5lbGVtZW50KTtcbiAgICBpZiAoY2hpbGQpIHtcbiAgICAgIGFkYXB0b3IuaW5zZXJ0KGxpbmUsIGNoaWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYWRhcHRvci5hcHBlbmQodGhpcy5lbGVtZW50LCBsaW5lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29weSBSREZhLCBhcmlhLCBhbmQgb3RoZXIgdGFncyBmcm9tIHRoZSBNYXRoTUwgdG8gdGhlIFNWRyBvdXRwdXQgbm9kZXMuXG4gICAqIERvbid0IGNvcHkgdGhvc2UgaW4gdGhlIHNraXBBdHRyaWJ1dGVzIGxpc3QsIG9yIGFueXRoaW5nIHRoYXQgYWxyZWFkeSBleGlzdHNcbiAgICogYXMgYSBwcm9wZXJ0eSBvZiB0aGUgbm9kZSAoZS5nLiwgbm8gXCJvbmxpY2tcIiwgZXRjLikuICBJZiBhIG5hbWUgaW4gdGhlXG4gICAqIHNraXBBdHRyaWJ1dGVzIG9iamVjdCBpcyBzZXQgdG8gZmFsc2UsIHRoZW4gdGhlIGF0dHJpYnV0ZSBXSUxMIGJlIGNvcGllZC5cbiAgICogQWRkIHRoZSBjbGFzcyB0byBhbnkgb3RoZXIgY2xhc3NlcyBhbHJlYWR5IGluIHVzZS5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVBdHRyaWJ1dGVzKCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcztcbiAgICBjb25zdCBkZWZhdWx0cyA9IGF0dHJpYnV0ZXMuZ2V0QWxsRGVmYXVsdHMoKTtcbiAgICBjb25zdCBza2lwID0gU1ZHV3JhcHBlci5za2lwQXR0cmlidXRlcztcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgYXR0cmlidXRlcy5nZXRFeHBsaWNpdE5hbWVzKCkpIHtcbiAgICAgIGlmIChza2lwW25hbWVdID09PSBmYWxzZSB8fCAoIShuYW1lIGluIGRlZmF1bHRzKSAmJiAhc2tpcFtuYW1lXSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5hZGFwdG9yLmhhc0F0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsIG5hbWUpKSkge1xuICAgICAgICB0aGlzLmFkYXB0b3Iuc2V0QXR0cmlidXRlKHRoaXMuZWxlbWVudCwgbmFtZSwgYXR0cmlidXRlcy5nZXRFeHBsaWNpdChuYW1lKSBhcyBzdHJpbmcpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoYXR0cmlidXRlcy5nZXQoJ2NsYXNzJykpIHtcbiAgICAgIGNvbnN0IG5hbWVzID0gKGF0dHJpYnV0ZXMuZ2V0KCdjbGFzcycpIGFzIHN0cmluZykudHJpbSgpLnNwbGl0KC8gKy8pO1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIG5hbWVzKSB7XG4gICAgICAgIHRoaXMuYWRhcHRvci5hZGRDbGFzcyh0aGlzLmVsZW1lbnQsIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAgIFRoZSB4LW9mZnNldCBmb3IgdGhlIGVsZW1lbnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgICBUaGUgeS1vZmZzZXQgZm9yIHRoZSBlbGVtZW50XG4gICAqIEBwYXJhbSB7Tn0gZWxlbWVudCAgVGhlIGVsZW1lbnQgdG8gYmUgcGxhY2VkXG4gICAqL1xuICBwdWJsaWMgcGxhY2UoeDogbnVtYmVyLCB5OiBudW1iZXIsIGVsZW1lbnQ6IE4gPSBudWxsKSB7XG4gICAgeCArPSB0aGlzLmR4O1xuICAgIGlmICghKHggfHwgeSkpIHJldHVybjtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICB5ID0gdGhpcy5oYW5kbGVJZCh5KTtcbiAgICB9XG4gICAgY29uc3QgdHJhbnNsYXRlID0gYHRyYW5zbGF0ZSgke3RoaXMuZml4ZWQoeCl9LCR7dGhpcy5maXhlZCh5KX0pYDtcbiAgICBjb25zdCB0cmFuc2Zvcm0gPSB0aGlzLmFkYXB0b3IuZ2V0QXR0cmlidXRlKGVsZW1lbnQsICd0cmFuc2Zvcm0nKSB8fCAnJztcbiAgICB0aGlzLmFkYXB0b3Iuc2V0QXR0cmlidXRlKGVsZW1lbnQsICd0cmFuc2Zvcm0nLCB0cmFuc2xhdGUgKyAodHJhbnNmb3JtID8gJyAnICsgdHJhbnNmb3JtIDogJycpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaXJlZm94IGFuZCBTYWZhcmkgZG9uJ3Qgc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIGVsZW1lbnQgd2l0aCBhbiBJZCwgc29cbiAgICogICB3ZSBzaGlmdCB0aGUgZWxlbWVudCB1cCBhbmQgdGhlbiB0cmFuc2xhdGUgaXRzIGNvbnRlbnRzIGRvd24gaW4gb3JkZXIgdG9cbiAgICogICBjb3JyZWN0IGZvciB0aGVpciBwb3NpdGlvbmluZy4gIEFsc28sIFNhZmFyaSB3aWxsIGdvIHRvIHRoZSBiYXNlbGluZSBvZlxuICAgKiAgIGEgPHRleHQ+IGVsZW1lbnQgKGUuZy4sIHdoZW4gbXRleHRJbmhlcml0Rm9udCBpcyB0cnVlKSwgc28gYWRkIGEgdGV4dFxuICAgKiAgIGVsZW1lbnQgdG8gaGVscCBTYWZhcmkgZ2V0IHRoZSByaWdodCBsb2NhdGlvbi5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgICAgIFRoZSBjdXJyZW50IG9mZnNldCBvZiB0aGUgZWxlbWVudFxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgVGhlIG5ldyBvZmZzZXQgZm9yIHRoZSBlbGVtZW50IGlmIGl0IGhhcyBhbiBpZFxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUlkKHk6IG51bWJlcik6IG51bWJlciB7XG4gICAgaWYgKCF0aGlzLm5vZGUuYXR0cmlidXRlcyB8fCAhdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdpZCcpKSB7XG4gICAgICByZXR1cm4geTtcbiAgICB9XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBjb25zdCBoID0gdGhpcy5nZXRCQm94KCkuaDtcbiAgICAvL1xuICAgIC8vICBSZW1vdmUgdGhlIGVsZW1lbnQncyBjaGlsZHJlbiBhbmQgcHV0IHRoZW0gaW50byBhIDxnPiB3aXRoIHRyYW5zZm9ybVxuICAgIC8vXG4gICAgY29uc3QgY2hpbGRyZW4gPSAgYWRhcHRvci5jaGlsZE5vZGVzKHRoaXMuZWxlbWVudCk7XG4gICAgY2hpbGRyZW4uZm9yRWFjaChjaGlsZCA9PiBhZGFwdG9yLnJlbW92ZShjaGlsZCkpO1xuICAgIGNvbnN0IGcgPSB0aGlzLnN2ZygnZycsIHsnZGF0YS1pZGJveCc6IHRydWUsIHRyYW5zZm9ybTogYHRyYW5zbGF0ZSgwLCR7dGhpcy5maXhlZCgtaCl9KWB9LCBjaGlsZHJlbik7XG4gICAgLy9cbiAgICAvLyAgQWRkIHRoZSB0ZXh0IGVsZW1lbnQgKG5vdCB0cmFuc2Zvcm1lZCkgYW5kIHRoZSB0cmFuc2Zvcm1lZCA8Zz5cbiAgICAvL1xuICAgIGFkYXB0b3IuYXBwZW5kKHRoaXMuZWxlbWVudCwgdGhpcy5zdmcoJ3RleHQnLCB7J2RhdGEtaWQtYWxpZ24nOiB0cnVlfSAsIFt0aGlzLnRleHQoJycpXSkpO1xuICAgIGFkYXB0b3IuYXBwZW5kKHRoaXMuZWxlbWVudCwgZyk7XG4gICAgcmV0dXJuIHkgKyBoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZmlyc3QgY2hpbGQgZWxlbWVudCwgc2tpcHBpbmcgaWQgYWxpZ24gYm94ZXMgYW5kIGhyZWYgaGl0IGJveGVzXG4gICAqXG4gICAqIEByZXR1cm4ge059ICAgVGhlIGZpcnN0IFwicmVhbFwiIGNoaWxkIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBmaXJzdENoaWxkKCk6IE4ge1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgbGV0IGNoaWxkID0gYWRhcHRvci5maXJzdENoaWxkKHRoaXMuZWxlbWVudCk7XG4gICAgaWYgKGNoaWxkICYmIGFkYXB0b3Iua2luZChjaGlsZCkgPT09ICd0ZXh0JyAmJiBhZGFwdG9yLmdldEF0dHJpYnV0ZShjaGlsZCwgJ2RhdGEtaWQtYWxpZ24nKSkge1xuICAgICAgY2hpbGQgPSBhZGFwdG9yLmZpcnN0Q2hpbGQoYWRhcHRvci5uZXh0KGNoaWxkKSk7XG4gICAgfVxuICAgIGlmIChjaGlsZCAmJiBhZGFwdG9yLmtpbmQoY2hpbGQpID09PSAncmVjdCcgJiYgYWRhcHRvci5nZXRBdHRyaWJ1dGUoY2hpbGQsICdkYXRhLWhpdGJveCcpKSB7XG4gICAgICBjaGlsZCA9IGFkYXB0b3IubmV4dChjaGlsZCk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbiAgICAgICAgVGhlIGNoYXJhY3RlciBudW1iZXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggICAgICAgIFRoZSB4LXBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgICAgICAgIFRoZSB5LXBvc2l0aW9uIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHtOfSBwYXJlbnQgICAgICAgIFRoZSBjb250YWluZXIgZm9yIHRoZSBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhcmlhbnQgIFRoZSB2YXJpYW50IHRvIHVzZSBmb3IgdGhlIGNoYXJhY3RlclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgICAgVGhlIHdpZHRoIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICovXG4gIHB1YmxpYyBwbGFjZUNoYXIobjogbnVtYmVyLCB4OiBudW1iZXIsIHk6IG51bWJlciwgcGFyZW50OiBOLCB2YXJpYW50OiBzdHJpbmcgPSBudWxsKTogbnVtYmVyIHtcbiAgICBpZiAodmFyaWFudCA9PT0gbnVsbCkge1xuICAgICAgdmFyaWFudCA9IHRoaXMudmFyaWFudDtcbiAgICB9XG4gICAgY29uc3QgQyA9IG4udG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG4gICAgY29uc3QgWyAsICwgdywgZGF0YV0gPSB0aGlzLmdldFZhcmlhbnRDaGFyKHZhcmlhbnQsIG4pO1xuICAgIGlmICgncCcgaW4gZGF0YSkge1xuICAgICAgY29uc3QgcGF0aCA9IChkYXRhLnAgPyAnTScgKyBkYXRhLnAgKyAnWicgOiAnJyk7XG4gICAgICB0aGlzLnBsYWNlKHgsIHksIHRoaXMuYWRhcHRvci5hcHBlbmQocGFyZW50LCB0aGlzLmNoYXJOb2RlKHZhcmlhbnQsIEMsIHBhdGgpKSk7XG4gICAgfSBlbHNlIGlmICgnYycgaW4gZGF0YSkge1xuICAgICAgY29uc3QgZyA9IHRoaXMuYWRhcHRvci5hcHBlbmQocGFyZW50LCB0aGlzLnN2ZygnZycsIHsnZGF0YS1jJzogQ30pKTtcbiAgICAgIHRoaXMucGxhY2UoeCwgeSwgZyk7XG4gICAgICB4ID0gMDtcbiAgICAgIGZvciAoY29uc3QgbiBvZiB0aGlzLnVuaWNvZGVDaGFycyhkYXRhLmMsIHZhcmlhbnQpKSB7XG4gICAgICAgIHggKz0gdGhpcy5wbGFjZUNoYXIobiwgeCwgeSwgZywgdmFyaWFudCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChkYXRhLnVua25vd24pIHtcbiAgICAgIGNvbnN0IGNoYXIgPSBTdHJpbmcuZnJvbUNvZGVQb2ludChuKTtcbiAgICAgIGNvbnN0IHRleHQgPSB0aGlzLmFkYXB0b3IuYXBwZW5kKHBhcmVudCwgdGhpcy5qYXgudW5rbm93blRleHQoY2hhciwgdmFyaWFudCkpO1xuICAgICAgdGhpcy5wbGFjZSh4LCB5LCB0ZXh0KTtcbiAgICAgIHJldHVybiB0aGlzLmpheC5tZWFzdXJlVGV4dE5vZGVXaXRoQ2FjaGUodGV4dCwgY2hhciwgdmFyaWFudCkudztcbiAgICB9XG4gICAgcmV0dXJuIHc7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhcmlhbnQgICAgVGhlIG5hbWUgb2YgdGhlIHZhcmlhbnQgYmVpbmcgdXNlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gQyAgICAgICAgICBUaGUgaGV4IHN0cmluZyBmb3IgdGhlIGNoYXJhY3RlciBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoICAgICAgIFRoZSBkYXRhIGZyb20gdGhlIGNoYXJhY3RlclxuICAgKiBAcmV0dXJuIHtOfSAgICAgICAgICAgICAgICBUaGUgPHBhdGg+IG9yIDx1c2U+IG5vZGUgZm9yIHRoZSBnbHlwaFxuICAgKi9cbiAgcHJvdGVjdGVkIGNoYXJOb2RlKHZhcmlhbnQ6IHN0cmluZywgQzogc3RyaW5nLCBwYXRoOiBzdHJpbmcpOiBOIHtcbiAgICBjb25zdCBjYWNoZSA9IHRoaXMuamF4Lm9wdGlvbnMuZm9udENhY2hlO1xuICAgIHJldHVybiAoY2FjaGUgIT09ICdub25lJyA/IHRoaXMudXNlTm9kZSh2YXJpYW50LCBDLCBwYXRoKSA6IHRoaXMucGF0aE5vZGUoQywgcGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBDICAgICAgICAgIFRoZSBoZXggc3RyaW5nIGZvciB0aGUgY2hhcmFjdGVyIGNvZGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggICAgICAgVGhlIGRhdGEgZnJvbSB0aGUgY2hhcmFjdGVyXG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICAgICAgIFRoZSA8cGF0aD4gZm9yIHRoZSBnbHlwaFxuICAgKi9cbiAgcHJvdGVjdGVkIHBhdGhOb2RlKEM6IHN0cmluZywgcGF0aDogc3RyaW5nKTogTiB7XG4gICAgcmV0dXJuIHRoaXMuc3ZnKCdwYXRoJywgeydkYXRhLWMnOiBDLCBkOiBwYXRofSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhcmlhbnQgICAgVGhlIG5hbWUgb2YgdGhlIHZhcmlhbnQgYmVpbmcgdXNlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gQyAgICAgICAgICBUaGUgaGV4IHN0cmluZyBmb3IgdGhlIGNoYXJhY3RlciBjb2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoICAgICAgIFRoZSBkYXRhIGZyb20gdGhlIGNoYXJhY3RlclxuICAgKiBAcmV0dXJuIHtOfSAgICAgICAgICAgICAgICBUaGUgPHVzZT4gbm9kZSBmb3IgdGhlIGdseXBoXG4gICAqL1xuICBwcm90ZWN0ZWQgdXNlTm9kZSh2YXJpYW50OiBzdHJpbmcsIEM6IHN0cmluZywgcGF0aDogc3RyaW5nKTogTiB7XG4gICAgY29uc3QgdXNlID0gdGhpcy5zdmcoJ3VzZScsIHsnZGF0YS1jJzogQ30pO1xuICAgIGNvbnN0IGlkID0gJyMnICsgdGhpcy5qYXguZm9udENhY2hlLmNhY2hlUGF0aCh2YXJpYW50LCBDLCBwYXRoKTtcbiAgICB0aGlzLmFkYXB0b3Iuc2V0QXR0cmlidXRlKHVzZSwgJ2hyZWYnLCBpZCwgWExJTktOUyk7XG4gICAgcmV0dXJuIHVzZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAvKipcbiAgICogRm9yIGRlYnVnZ2luZ1xuICAgKi9cblxuICBwdWJsaWMgZHJhd0JCb3goKSB7XG4gICAgbGV0IHt3LCBoLCBkfSAgPSB0aGlzLmdldEJCb3goKTtcbiAgICBjb25zdCBib3ggPSB0aGlzLnN2ZygnZycsIHtzdHlsZToge1xuICAgICAgb3BhY2l0eTogLjI1XG4gICAgfX0sIFtcbiAgICAgIHRoaXMuc3ZnKCdyZWN0Jywge1xuICAgICAgICBmaWxsOiAncmVkJyxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmZpeGVkKGgpLFxuICAgICAgICB3aWR0aDogdGhpcy5maXhlZCh3KVxuICAgICAgfSksXG4gICAgICB0aGlzLnN2ZygncmVjdCcsIHtcbiAgICAgICAgZmlsbDogJ2dyZWVuJyxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLmZpeGVkKGQpLFxuICAgICAgICB3aWR0aDogdGhpcy5maXhlZCh3KSxcbiAgICAgICAgeTogdGhpcy5maXhlZCgtZClcbiAgICAgIH0pXG4gICAgXSBhcyBOW10pO1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmVsZW1lbnQgfHwgdGhpcy5wYXJlbnQuZWxlbWVudDtcbiAgICB0aGlzLmFkYXB0b3IuYXBwZW5kKG5vZGUsIGJveCk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgLypcbiAgICogRWFzeSBhY2Nlc3MgdG8gc29tZSB1dGlsaXR5IHJvdXRpbmVzXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSAgICAgIFRoZSB0YWcgbmFtZSBvZiB0aGUgSFRNTCBub2RlIHRvIGJlIGNyZWF0ZWRcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBkZWYgICBUaGUgcHJvcGVydGllcyB0byBzZXQgZm9yIHRoZSBjcmVhdGVkIG5vZGVcbiAgICogQHBhcmFtIHsoTnxUKVtdfSBjb250ZW50ICBUaGUgY2hpbGQgbm9kZXMgZm9yIHRoZSBjcmVhdGVkIEhUTUwgbm9kZVxuICAgKiBAcmV0dXJuIHtOfSAgICAgICAgICAgICAgIFRoZSBnZW5lcmF0ZWQgSFRNTCB0cmVlXG4gICAqL1xuICBwdWJsaWMgaHRtbCh0eXBlOiBzdHJpbmcsIGRlZjogT3B0aW9uTGlzdCA9IHt9LCBjb250ZW50OiAoTiB8IFQpW10gPSBbXSk6IE4ge1xuICAgIHJldHVybiB0aGlzLmpheC5odG1sKHR5cGUsIGRlZiwgY29udGVudCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUgICAgICBUaGUgdGFnIG5hbWUgb2YgdGhlIHN2ZyBub2RlIHRvIGJlIGNyZWF0ZWRcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBkZWYgICBUaGUgcHJvcGVydGllcyB0byBzZXQgZm9yIHRoZSBjcmVhdGVkIG5vZGVcbiAgICogQHBhcmFtIHsoTnxUKVtdfSBjb250ZW50ICBUaGUgY2hpbGQgbm9kZXMgZm9yIHRoZSBjcmVhdGVkIFNWRyBub2RlXG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCBTVkcgdHJlZVxuICAgKi9cbiAgcHVibGljIHN2Zyh0eXBlOiBzdHJpbmcsIGRlZjogT3B0aW9uTGlzdCA9IHt9LCBjb250ZW50OiAoTiB8IFQpW10gPSBbXSk6IE4ge1xuICAgIHJldHVybiB0aGlzLmpheC5zdmcodHlwZSwgZGVmLCBjb250ZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgVGhlIHRleHQgZnJvbSB3aGljaCB0byBjcmVhdGUgYW4gSFRNTCB0ZXh0IG5vZGVcbiAgICogQHJldHVybiB7VH0gIFRoZSBnZW5lcmF0ZWQgdGV4dCBub2RlIHdpdGggdGhlIGdpdmVuIHRleHRcbiAgICovXG4gIHB1YmxpYyB0ZXh0KHRleHQ6IHN0cmluZyk6IFQge1xuICAgIHJldHVybiB0aGlzLmpheC50ZXh0KHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4ICAgVGhlIGRpbWVuc2lvbiB0byBkaXNwbGF5XG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gbiAgVGhlIG51bWJlciBvZiBkaWdpdHMgdG8gZGlzcGxheVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgIFRoZSBkaW1lbnNpb24gd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGRpZ2l0cyAobWludXMgdHJhaWxpbmcgemVyb3MpXG4gICAqL1xuICBwdWJsaWMgZml4ZWQoeDogbnVtYmVyLCBuOiBudW1iZXIgPSAxKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5qYXguZml4ZWQoeCAqIDEwMDAsIG4pO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ29tbW9uTWF0aCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWF0aCBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QW55V3JhcHBlciwgV3JhcHBlckNvbnN0cnVjdG9yLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1hdGggaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uTWF0aCBleHRlbmRzIEFueVdyYXBwZXIge1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk1hdGggY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTWF0aENvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8Q29tbW9uTWF0aD47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBDb21tb25NYXRoIHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNYXRoIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25NYXRoTWl4aW48VCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IE1hdGhDb25zdHJ1Y3RvciAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldFdyYXBXaWR0aChfaTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gKHRoaXMucGFyZW50ID8gdGhpcy5nZXRCQm94KCkudyA6IHRoaXMubWV0cmljcy5jb250YWluZXJXaWR0aCAvIHRoaXMuamF4LnB4UGVyRW0pO1xuICAgIH1cblxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE1hdGggbm9kZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge0Fic3RyYWN0TW1sTGF5b3V0Tm9kZSwgQXR0cmlidXRlTGlzdH0gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1hdGggbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxMYXlvdXROb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNYXRoIGV4dGVuZHMgQWJzdHJhY3RNbWxMYXlvdXROb2RlIHtcblxuICAvKipcbiAgICogIFRoZXNlIGFyZSB1c2VkIGFzIHRoZSBkZWZhdWx0cyBmb3IgYW55IGF0dHJpYnV0ZXMgbWFya2VkIElOSEVSSVQgaW4gb3RoZXIgY2xhc3Nlc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sTGF5b3V0Tm9kZS5kZWZhdWx0cyxcbiAgICBtYXRodmFyaWFudDogJ25vcm1hbCcsXG4gICAgbWF0aHNpemU6ICdub3JtYWwnLFxuICAgIG1hdGhjb2xvcjogJycsIC8vIFNob3VsZCBiZSAnYmxhY2snLCBidXQgYWxsb3cgaXQgdG8gaW5oZXJpdCBmcm9tIHN1cnJvdW5kaW5nIHRleHRcbiAgICBtYXRoYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICBkaXI6ICdsdHInLFxuICAgIHNjcmlwdGxldmVsOiAwLFxuICAgIGRpc3BsYXlzdHlsZTogZmFsc2UsXG4gICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgbWF4d2lkdGg6ICcnLFxuICAgIG92ZXJmbG93OiAnbGluZWJyZWFrJyxcbiAgICBhbHRpbWc6ICcnLFxuICAgICdhbHRpbWctd2lkdGgnOiAnJyxcbiAgICAnYWx0aW1nLWhlaWdodCc6ICcnLFxuICAgICdhbHRpbWctdmFsaWduJzogJycsXG4gICAgYWx0dGV4dDogJycsXG4gICAgY2Rncm91cDogJycsXG4gICAgc2NyaXB0c2l6ZW11bHRpcGxpZXI6IDEgLyBNYXRoLnNxcnQoMiksXG4gICAgc2NyaXB0bWluc2l6ZTogJzhweCcsICAgICAgICAvLyBTaG91bGQgYmUgOHB0LCBidXQgdGhhdCdzIHRvbyBiaWdcbiAgICBpbmZpeGxpbmVicmVha3N0eWxlOiAnYmVmb3JlJyxcbiAgICBsaW5lbGVhZGluZzogJzFleCcsXG4gICAgbGluZWJyZWFrbXVsdGNoYXI6ICdcXHUyMDYyJywgLy8gSW52aXNpYmxlIHRpbWVzXG4gICAgaW5kZW50c2hpZnQ6ICdhdXRvJywgICAgICAgICAvLyBVc2UgdXNlciBjb25maWd1cmF0aW9uXG4gICAgaW5kZW50YWxpZ246ICdhdXRvJyxcbiAgICBpbmRlbnR0YXJnZXQ6ICcnLFxuICAgIGluZGVudGFsaWduZmlyc3Q6ICdpbmRlbnRhbGlnbicsXG4gICAgaW5kZW50c2hpZnRmaXJzdDogJ2luZGVudHNoaWZ0JyxcbiAgICBpbmRlbnRhbGlnbmxhc3Q6ICAnaW5kZW50YWxpZ24nLFxuICAgIGluZGVudHNoaWZ0bGFzdDogICdpbmRlbnRzaGlmdCdcbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtYXRoJztcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW5lYnJlYWtpbmcgY2FuIG9jY3VyIGluIG1hdGggbm9kZXNcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpbmVicmVha0NvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgYXR0cmlidXRlcyBvZiBtYXRoIG5vZGVzIGFyZSBpbmhlcml0ZWQsIHNvIGFkZCB0aGVtIGludG8gdGhlIGxpc3QuXG4gICAqIFRoZSBkaXNwbGF5c3R5bGUgYXR0cmlidXRlIGNvbWVzIGZyb20gdGhlIGRpc3BsYXkgYXR0cmlidXRlIGlmIG5vdCBnaXZlbiBleHBsaWNpdGx5XG4gICAqIFRoZSBzY3JpcHRsZXZlbCBjb21lcyBmcm9tIHRoZSBzY3JpcHRsZXZlbCBhdHRyaWJ1dGUgb3IgZGVmYXVsdFxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RlY3RlZCBzZXRDaGlsZEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCwgZGlzcGxheTogYm9vbGVhbiwgbGV2ZWw6IG51bWJlciwgcHJpbWU6IGJvb2xlYW4pIHtcbiAgICBpZiAodGhpcy5hdHRyaWJ1dGVzLmdldCgnbW9kZScpID09PSAnZGlzcGxheScpIHtcbiAgICAgIHRoaXMuYXR0cmlidXRlcy5zZXRJbmhlcml0ZWQoJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICB9XG4gICAgYXR0cmlidXRlcyA9IHRoaXMuYWRkSW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCB0aGlzLmF0dHJpYnV0ZXMuZ2V0QWxsQXR0cmlidXRlcygpKTtcbiAgICBkaXNwbGF5ID0gKCEhdGhpcy5hdHRyaWJ1dGVzLmdldCgnZGlzcGxheXN0eWxlJykgfHxcbiAgICAgICAgICAgICAgICghdGhpcy5hdHRyaWJ1dGVzLmdldCgnZGlzcGxheXN0eWxlJykgJiYgdGhpcy5hdHRyaWJ1dGVzLmdldCgnZGlzcGxheScpID09PSAnYmxvY2snKSk7XG4gICAgdGhpcy5hdHRyaWJ1dGVzLnNldEluaGVyaXRlZCgnZGlzcGxheXN0eWxlJywgZGlzcGxheSk7XG4gICAgbGV2ZWwgPSAodGhpcy5hdHRyaWJ1dGVzLmdldCgnc2NyaXB0bGV2ZWwnKSB8fFxuICAgICAgICAgICAgICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBNbWxNYXRoKS5kZWZhdWx0c1snc2NyaXB0bGV2ZWwnXSkgYXMgbnVtYmVyO1xuICAgIHN1cGVyLnNldENoaWxkSW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBkaXNwbGF5LCBsZXZlbCwgcHJpbWUpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgU1ZHbWF0aCB3cmFwcGVyIGZvciB0aGUgTW1sTWF0aCBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7U1ZHV3JhcHBlciwgU1ZHQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25NYXRoTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tYXRoLmpzJztcbmltcG9ydCB7TW1sTWF0aH0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21hdGguanMnO1xuaW1wb3J0IHtTdHlsZUxpc3R9IGZyb20gJy4uLy4uLy4uL3V0aWwvU3R5bGVMaXN0LmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbWF0aCB3cmFwcGVyIGZvciB0aGUgTW1sTWF0aCBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdtYXRoPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk1hdGhNaXhpbjxTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgbWF0aCB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxNYXRoLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJlaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0eWxlczogU3R5bGVMaXN0ID0ge1xuICAgICdtangtY29udGFpbmVyW2pheD1cIlNWR1wiXVtkaXNwbGF5PVwidHJ1ZVwiXSc6IHtcbiAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICAndGV4dC1hbGlnbic6ICdjZW50ZXInLFxuICAgICAgbWFyZ2luOiAnMWVtIDAnXG4gICAgfSxcbiAgICAnbWp4LWNvbnRhaW5lcltqYXg9XCJTVkdcIl1bZGlzcGxheT1cInRydWVcIl1bd2lkdGg9XCJmdWxsXCJdJzoge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnXG4gICAgfSxcbiAgICAnbWp4LWNvbnRhaW5lcltqYXg9XCJTVkdcIl1banVzdGlmeT1cImxlZnRcIl0nOiB7XG4gICAgICAndGV4dC1hbGlnbic6ICdsZWZ0J1xuICAgIH0sXG4gICAgJ21qeC1jb250YWluZXJbamF4PVwiU1ZHXCJdW2p1c3RpZnk9XCJyaWdodFwiXSc6IHtcbiAgICAgICd0ZXh0LWFsaWduJzogJ3JpZ2h0J1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgc3VwZXIudG9TVkcocGFyZW50KTtcbiAgICBjb25zdCBhZGFwdG9yID0gdGhpcy5hZGFwdG9yO1xuICAgIGNvbnN0IGRpc3BsYXkgPSAodGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdkaXNwbGF5JykgPT09ICdibG9jaycpO1xuICAgIGlmIChkaXNwbGF5KSB7XG4gICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZSh0aGlzLmpheC5jb250YWluZXIsICdkaXNwbGF5JywgJ3RydWUnKTtcbiAgICAgIHRoaXMuaGFuZGxlRGlzcGxheSgpO1xuICAgIH1cbiAgICBpZiAodGhpcy5qYXguZG9jdW1lbnQub3B0aW9ucy5pbnRlcm5hbFNwZWVjaFRpdGxlcykge1xuICAgICAgdGhpcy5oYW5kbGVTcGVlY2goKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBqdXN0aWZpY2F0aW9uLCBhbmQgZ2V0IHRoZSBtaW53aWR0aCBhbmQgc2hpZnQgbmVlZGVkXG4gICAqIGZvciB0aGUgZGlzcGxheWVkIGVxdWF0aW9uLlxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZURpc3BsYXkoKSB7XG4gICAgY29uc3QgW2FsaWduLCBzaGlmdF0gPSB0aGlzLmdldEFsaWduU2hpZnQoKTtcbiAgICBpZiAoYWxpZ24gIT09ICdjZW50ZXInKSB7XG4gICAgICB0aGlzLmFkYXB0b3Iuc2V0QXR0cmlidXRlKHRoaXMuamF4LmNvbnRhaW5lciwgJ2p1c3RpZnknLCBhbGlnbik7XG4gICAgfVxuICAgIGlmICh0aGlzLmJib3gucHdpZHRoID09PSBCQm94LmZ1bGxXaWR0aCkge1xuICAgICAgdGhpcy5hZGFwdG9yLnNldEF0dHJpYnV0ZSh0aGlzLmpheC5jb250YWluZXIsICd3aWR0aCcsICdmdWxsJyk7XG4gICAgICBpZiAodGhpcy5qYXgudGFibGUpIHtcbiAgICAgICAgbGV0IHtMLCB3LCBSfSA9IHRoaXMuamF4LnRhYmxlLmdldE91dGVyQkJveCgpO1xuICAgICAgICBpZiAoYWxpZ24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICBSID0gTWF0aC5tYXgoUiB8fCAtc2hpZnQsIC1zaGlmdCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWxpZ24gPT09ICdsZWZ0Jykge1xuICAgICAgICAgIEwgPSBNYXRoLm1heChMIHx8IHNoaWZ0LCBzaGlmdCk7XG4gICAgICAgIH0gZWxzZSBpZiAoYWxpZ24gPT09ICdjZW50ZXInKSB7XG4gICAgICAgICAgdyArPSAyICogTWF0aC5hYnMoc2hpZnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuamF4Lm1pbndpZHRoID0gTWF0aC5tYXgoMCwgTCArIHcgKyBSKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qYXguc2hpZnQgPSBzaGlmdDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGFkZGluZyBzcGVlY2ggdG8gdGhlIHRvcC1sZXZlbCBub2RlLCBpZiBhbnkuXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlU3BlZWNoKCkge1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IHNwZWVjaCA9IChhdHRyaWJ1dGVzLmdldCgnYXJpYS1sYWJlbCcpIHx8IGF0dHJpYnV0ZXMuZ2V0KCdkYXRhLXNlbWFudGljLXNwZWVjaCcpKSBhcyBzdHJpbmc7XG4gICAgaWYgKHNwZWVjaCkge1xuICAgICAgY29uc3QgaWQgPSB0aGlzLmdldFRpdGxlSUQoKTtcbiAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5zdmcoJ3RpdGxlJywge2lkfSwgW3RoaXMudGV4dChzcGVlY2gpXSk7XG4gICAgICBhZGFwdG9yLmluc2VydChsYWJlbCwgYWRhcHRvci5maXJzdENoaWxkKHRoaXMuZWxlbWVudCkpO1xuICAgICAgYWRhcHRvci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCAnYXJpYS1sYWJlbGVkYnknLCBpZCk7XG4gICAgICBhZGFwdG9yLnJlbW92ZUF0dHJpYnV0ZSh0aGlzLmVsZW1lbnQsICdhcmlhLWxhYmVsJyk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzKSB7XG4gICAgICAgIGFkYXB0b3Iuc2V0QXR0cmlidXRlKGNoaWxkLmVsZW1lbnQsICdhcmlhLWhpZGRlbicsICd0cnVlJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIEEgdW5pcXVlIElEIHRvIHVzZSBmb3IgYXJpYS1sYWJlbGVkYnkgdGl0bGUgZWxlbWVudHNcbiAgICovXG4gIHByb3RlY3RlZCBnZXRUaXRsZUlEKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdtangtc3ZnLXRpdGxlLScgKyBTdHJpbmcodGhpcy5qYXgub3B0aW9ucy50aXRsZUlEKyspO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldENoaWxkUFdpZHRocyhyZWNvbXB1dGU6IGJvb2xlYW4sIHc6IG51bWJlciA9IG51bGwsIF9jbGVhcjogYm9vbGVhbiA9IHRydWUpIHtcbiAgICByZXR1cm4gc3VwZXIuc2V0Q2hpbGRQV2lkdGhzKHJlY29tcHV0ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50ID8gdyA6IHRoaXMubWV0cmljcy5jb250YWluZXJXaWR0aCAvIHRoaXMuamF4LnB4UGVyRW0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25Ncm93IHdyYXBwZXIgbWluaW4gZm9yIHRoZSBNbWxNcm93IG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTW99IGZyb20gJy4vbW8uanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuaW1wb3J0IHtESVJFQ1RJT059IGZyb20gJy4uL0ZvbnREYXRhLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTXJvdyBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25Ncm93IGV4dGVuZHMgQW55V3JhcHBlciB7XG4gIC8qKlxuICAgKiBIYW5kbGUgdmVydGljYWwgc3RyZXRjaGluZyBvZiBjaGlsZHJlbiB0byBtYXRjaCBoZWlnaHQgb2ZcbiAgICogIG90aGVyIG5vZGVzIGluIHRoZSByb3cuXG4gICAqL1xuICBzdHJldGNoQ2hpbGRyZW4oKTogdm9pZDtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25Ncm93IGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIE1yb3dDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yPENvbW1vbk1yb3c+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Ncm93IHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNcm93IG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25Ncm93TWl4aW48VCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IE1yb3dDb25zdHJ1Y3RvciAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgZ2V0IGZpeGVzUFdpZHRoKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIHRoaXMuc3RyZXRjaENoaWxkcmVuKCk7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgICBpZiAoY2hpbGQuYmJveC5wd2lkdGgpIHtcbiAgICAgICAgICB0aGlzLmJib3gucHdpZHRoID0gQkJveC5mdWxsV2lkdGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgdmVydGljYWwgc3RyZXRjaGluZyBvZiBjaGlsZHJlbiB0byBtYXRjaCBoZWlnaHQgb2ZcbiAgICAgKiAgb3RoZXIgbm9kZXMgaW4gdGhlIHJvdy5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RyZXRjaENoaWxkcmVuKCkge1xuICAgICAgbGV0IHN0cmV0Y2h5OiBBbnlXcmFwcGVyW10gPSBbXTtcbiAgICAgIC8vXG4gICAgICAvLyAgTG9jYXRlIGFuZCBjb3VudCB0aGUgc3RyZXRjaHkgY2hpbGRyZW5cbiAgICAgIC8vXG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgICBpZiAoY2hpbGQuY2FuU3RyZXRjaChESVJFQ1RJT04uVmVydGljYWwpKSB7XG4gICAgICAgICAgc3RyZXRjaHkucHVzaChjaGlsZCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxldCBjb3VudCA9IHN0cmV0Y2h5Lmxlbmd0aDtcbiAgICAgIGxldCBub2RlQ291bnQgPSB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoO1xuICAgICAgaWYgKGNvdW50ICYmIG5vZGVDb3VudCA+IDEpIHtcbiAgICAgICAgbGV0IEggPSAwLCBEID0gMDtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gIElmIGFsbCB0aGUgY2hpbGRyZW4gYXJlIHN0cmV0Y2h5LCBmaW5kIHRoZSBsYXJnZXN0IG9uZSxcbiAgICAgICAgLy8gIG90aGVyd2lzZSwgZmluZCB0aGUgaGVpZ2h0IGFuZCBkZXB0aCBvZiB0aGUgbm9uLXN0cmV0Y2h5XG4gICAgICAgIC8vICBjaGlsZHJlbi5cbiAgICAgICAgLy9cbiAgICAgICAgbGV0IGFsbCA9IChjb3VudCA+IDEgJiYgY291bnQgPT09IG5vZGVDb3VudCk7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICAgICAgY29uc3Qgbm9TdHJldGNoID0gKGNoaWxkLnN0cmV0Y2guZGlyID09PSBESVJFQ1RJT04uTm9uZSk7XG4gICAgICAgICAgaWYgKGFsbCB8fCBub1N0cmV0Y2gpIHtcbiAgICAgICAgICAgIGxldCB7aCwgZCwgcnNjYWxlfSA9IGNoaWxkLmdldE91dGVyQkJveChub1N0cmV0Y2gpO1xuICAgICAgICAgICAgaCAqPSByc2NhbGU7XG4gICAgICAgICAgICBkICo9IHJzY2FsZTtcbiAgICAgICAgICAgIGlmIChoID4gSCkgSCA9IGg7XG4gICAgICAgICAgICBpZiAoZCA+IEQpIEQgPSBkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL1xuICAgICAgICAvLyAgU3RyZXRjaCB0aGUgc3RyZXRjaGFibGUgY2hpbGRyZW5cbiAgICAgICAgLy9cbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBzdHJldGNoeSkge1xuICAgICAgICAgIChjaGlsZC5jb3JlTU8oKSBhcyBDb21tb25NbykuZ2V0U3RyZXRjaGVkVmFyaWFudChbSCwgRF0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gIH07XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbkluZmVycmVkTXJvdyBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25JbmZlcnJlZE1yb3cgZXh0ZW5kcyBDb21tb25Ncm93IHtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25JbmZlcnJlZE1yb3cgY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgSW5mZXJyZWRNcm93Q29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxDb21tb25JbmZlcnJlZE1yb3c+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25JbmZlcnJlZE1yb3cgd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbEluZmVycmVkTXJvdyBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFdyYXBwZXIgY2xhc3MgY29uc3RydWN0b3IgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbW9uSW5mZXJyZWRNcm93TWl4aW48VCBleHRlbmRzIE1yb3dDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IEluZmVycmVkTXJvd0NvbnN0cnVjdG9yICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBTaW5jZSBpbmZlcnJlZCByb3dzIGRvbid0IHByb2R1Y2UgYSBjb250YWluZXIgc3Bhbiwgd2UgY2FuJ3RcbiAgICAgKiBzZXQgYSBmb250LXNpemUgZm9yIGl0LCBzbyB3ZSBpbmhlcml0IHRoZSBwYXJlbnQgc2NhbGVcbiAgICAgKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTY2FsZSgpIHtcbiAgICAgIHRoaXMuYmJveC5zY2FsZSA9IHRoaXMucGFyZW50LmJib3guc2NhbGU7XG4gICAgICB0aGlzLmJib3gucnNjYWxlID0gMTtcbiAgICB9XG4gIH07XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgTW1sTXJvdyBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgQWJzdHJhY3RNbWxOb2RlLCBURVhDTEFTU30gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1yb3cgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxOb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNcm93IGV4dGVuZHMgQWJzdHJhY3RNbWxOb2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxOb2RlLmRlZmF1bHRzXG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBvZiB0aGUgY29yZSBjaGlsZCwgd2hlbiBhY3RpbmcgYXMgYW4gZW1iZWxsaXNoIG1yb3dcbiAgICovXG4gIHByb3RlY3RlZCBfY29yZTogbnVtYmVyID0gbnVsbDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtcm93JztcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBtcm93IGlzIHNwYWNlLWxpa2UgaWYgYWxsIGl0cyBjaGlsZHJlbiBhcmUuXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBpc1NwYWNlbGlrZSgpIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKCFjaGlsZC5pc1NwYWNlbGlrZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIG1yb3cgaXMgZW1iZWxsaXNoZWQgaWYgaXQgY29udGFpbnMgb25lIGVtYmVsbGlzaGVkIG9wZXJhdG9yXG4gICAqIGFuZCBhbnkgbnVtYmVyIG9mIHNwYWNlLWxpa2Ugbm9kZXNcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRW1iZWxsaXNoZWQoKSB7XG4gICAgbGV0IGVtYmVsbGlzaGVkID0gZmFsc2U7XG4gICAgbGV0IGkgPSAwO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgaWYgKGNoaWxkLmlzRW1iZWxsaXNoZWQpIHtcbiAgICAgICAgICBpZiAoZW1iZWxsaXNoZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZW1iZWxsaXNoZWQgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuX2NvcmUgPSBpO1xuICAgICAgICB9IGVsc2UgaWYgKCFjaGlsZC5pc1NwYWNlbGlrZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaSsrO1xuICAgIH1cbiAgICByZXR1cm4gZW1iZWxsaXNoZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY29yZSgpOiBNbWxOb2RlIHtcbiAgICBpZiAoIXRoaXMuaXNFbWJlbGxpc2hlZCB8fCB0aGlzLl9jb3JlID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzW3RoaXMuX2NvcmVdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcmVNTygpOiBNbWxOb2RlIHtcbiAgICBpZiAoIXRoaXMuaXNFbWJlbGxpc2hlZCB8fCB0aGlzLl9jb3JlID09IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzW3RoaXMuX2NvcmVdLmNvcmVNTygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge251bWJlcn0gIFRoZSBudW1iZXIgb2Ygbm9uLXNwYWNlbGlrZSBjaGlsZCBub2Rlc1xuICAgKi9cbiAgcHVibGljIG5vblNwYWNlTGVuZ3RoKCk6IG51bWJlciB7XG4gICAgbGV0IG4gPSAwO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBpZiAoY2hpbGQgJiYgIWNoaWxkLmlzU3BhY2VsaWtlKSB7XG4gICAgICAgIG4rKztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG47XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TW1sTm9kZXxudWxsfSAgVGhlIGZpcnN0IG5vbi1zcGFjZS1saWtlIGNoaWxkIG5vZGVcbiAgICovXG4gIHB1YmxpYyBmaXJzdE5vblNwYWNlKCk6IE1tbE5vZGUgfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKGNoaWxkICYmICFjaGlsZC5pc1NwYWNlbGlrZSkge1xuICAgICAgICByZXR1cm4gY2hpbGQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge01tbE5vZGV8bnVsbH0gIFRoZSBsYXN0IG5vbi1zcGFjZS1saWtlIGNoaWxkIG5vZGVcbiAgICovXG4gIHB1YmxpYyBsYXN0Tm9uU3BhY2UoKTogTW1sTm9kZSB8IG51bGwge1xuICAgIGxldCBpID0gdGhpcy5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICB3aGlsZSAoLS1pID49IDApIHtcbiAgICAgIGxldCBjaGlsZCA9IHRoaXMuY2hpbGROb2Rlc1tpXTtcbiAgICAgIGlmIChjaGlsZCAmJiAhY2hpbGQuaXNTcGFjZWxpa2UpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKSB7XG4gICAgaWYgKHRoaXMuZ2V0UHJvcGVydHkoJ29wZW4nKSAhPSBudWxsIHx8IHRoaXMuZ2V0UHJvcGVydHkoJ2Nsb3NlJykgIT0gbnVsbCkge1xuICAgICAgLy9cbiAgICAgIC8vIDxtcm93PiBsb29rcyBsaWtlIGl0IGNhbWUgZnJvbSBcXGxlZnQuLi5cXHJpZ2h0XG4gICAgICAvLyAgIHNvIHRyZWF0IGFzIHN1YmV4cHJlc3Npb24gKFRlWCBjbGFzcyBJTk5FUikuXG4gICAgICAvLyBVc2UgcHJldiA9IG51bGwgZm9yIHRoZSBpbml0aWFsIGVsZW1lbnQgaW4gdGhlXG4gICAgICAvLyAgIGRlbGltaXRlcnMsIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcHJldmlvdXMgdG9cbiAgICAgIC8vICAgaXQgaW4gd2hhdCB3b3VsZCBiZSB0aGUgVGVYIG1hdGggbGlzdC5cbiAgICAgIC8vXG4gICAgICB0aGlzLmdldFByZXZDbGFzcyhwcmV2KTtcbiAgICAgIHByZXYgPSBudWxsO1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgcHJldiA9IGNoaWxkLnNldFRlWGNsYXNzKHByZXYpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMudGV4Q2xhc3MgPT0gbnVsbCkge1xuICAgICAgICB0aGlzLnRleENsYXNzID0gVEVYQ0xBU1MuSU5ORVI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vXG4gICAgICAvLyAgTm9ybWFsIDxtcm93Piwgc28gdHJlYXQgYXMgdGhvdWdoIG1yb3cgaXMgbm90IHRoZXJlXG4gICAgICAvL1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgcHJldiA9IGNoaWxkLnNldFRlWGNsYXNzKHByZXYpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2hpbGROb2Rlc1swXSkge1xuICAgICAgICB0aGlzLnVwZGF0ZVRlWGNsYXNzKHRoaXMuY2hpbGROb2Rlc1swXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcmV2O1xuICB9XG5cbn1cblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxJbmZlcnJlZE1yb3cgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgTW1sTXJvdylcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sSW5mZXJyZWRNcm93IGV4dGVuZHMgTW1sTXJvdyB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0gTW1sTXJvdy5kZWZhdWx0cztcblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIGluZmVycmVkLW1yb3cga2luZFxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdpbmZlcnJlZE1yb3cnO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICBUaGlzIGlzIGluZmVycmVkXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzSW5mZXJyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IG5vdFBhcmVudCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTaG93IHRoZSBjaGlsZCBub2RlcyBpbiBicmFja2V0c1xuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiAnWycgKyB0aGlzLmNoaWxkTm9kZXMuam9pbignLCcpICsgJ10nO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgU1ZHbXJvdyB3cmFwcGVyIGZvciB0aGUgTW1sTXJvdyBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7U1ZHV3JhcHBlciwgU1ZHQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTXJvd01peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbXJvdy5qcyc7XG5pbXBvcnQge0NvbW1vbkluZmVycmVkTXJvd01peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbXJvdy5qcyc7XG5pbXBvcnQge01tbE1yb3csIE1tbEluZmVycmVkTXJvd30gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21yb3cuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBTVkdtcm93IHdyYXBwZXIgZm9yIHRoZSBNbWxNcm93IG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNsYXNzIFNWR21yb3c8TiwgVCwgRD4gZXh0ZW5kc1xuQ29tbW9uTXJvd01peGluPFNWR0NvbnN0cnVjdG9yPGFueSwgYW55LCBhbnk+PihTVkdXcmFwcGVyKSB7XG5cbiAgLyoqXG4gICAqIFRoZSBtcm93IHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE1yb3cucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU1ZHKHBhcmVudDogTikge1xuICAgIGNvbnN0IHN2ZyA9ICh0aGlzLm5vZGUuaXNJbmZlcnJlZCA/ICh0aGlzLmVsZW1lbnQgPSBwYXJlbnQpIDogdGhpcy5zdGFuZGFyZFNWR25vZGUocGFyZW50KSk7XG4gICAgdGhpcy5hZGRDaGlsZHJlbihzdmcpO1xuICAgIC8vIEZJWE1FOiAgaGFuZGxlIGxpbmUgYnJlYWtzXG4gIH1cblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgU1ZHaW5mZXJyZWRNcm93IHdyYXBwZXIgZm9yIHRoZSBNbWxJbmZlcnJlZE1yb3cgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHaW5mZXJyZWRNcm93PE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbkluZmVycmVkTXJvd01peGluPENvbnN0cnVjdG9yPFNWR21yb3c8YW55LCBhbnksIGFueT4+PihTVkdtcm93KSB7XG5cbiAgLyoqXG4gICAqIFRoZSBpbmZlcnJlZC1tcm93IHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbEluZmVycmVkTXJvdy5wcm90b3R5cGUua2luZDtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25NaSB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWkgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0FueVdyYXBwZXIsIFdyYXBwZXJDb25zdHJ1Y3RvciwgQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NaSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25NaSBleHRlbmRzIEFueVdyYXBwZXIge1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk1pIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIE1pQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxDb21tb25NaT47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBDb21tb25NaSB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWkgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk1pTWl4aW48VCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IE1pQ29uc3RydWN0b3IgJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wdXRlQkJveChiYm94OiBCQm94LCBfcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIHN1cGVyLmNvbXB1dGVCQm94KGJib3gpO1xuICAgICAgdGhpcy5jb3B5U2tld0lDKGJib3gpO1xuICAgIH1cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNaSBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QWJzdHJhY3RNbWxUb2tlbk5vZGUsIEFic3RyYWN0TW1sTm9kZSwgQXR0cmlidXRlTGlzdCwgVEVYQ0xBU1N9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNaSBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbFRva2VuTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTWkgZXh0ZW5kcyBBYnN0cmFjdE1tbFRva2VuTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sVG9rZW5Ob2RlLmRlZmF1bHRzXG4gIH07XG5cbiAgLyoqXG4gICAqIFBhdHRlcm4gZm9yIG9wZXJhdG9yIG5hbWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG9wZXJhdG9yTmFtZTogUmVnRXhwID0gL15bYS16XVthLXowLTldKiQvaTtcbiAgLyoqXG4gICAqIFBhdHRlcm4gZm9yIHNpbmdsZS1jaGFyYWN0ZXIgdGV4dHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2luZ2xlQ2hhcmFjdGVyOiBSZWdFeHAgPVxuICAgIC9eW1xcdUQ4MDAtXFx1REJGRl0/LltcXHUwMzAwLVxcdTAzNkZcXHUxQUIwLVxcdTFBQkVcXHUxREMwLVxcdTFERkZcXHUyMEQwLVxcdTIwRUZdKiQvO1xuXG4gIC8qKlxuICAgKiBUZVggY2xhc3MgaXMgT1JEXG4gICAqL1xuICBwcm90ZWN0ZWQgdGV4Y2xhc3MgPSBURVhDTEFTUy5PUkQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbWknO1xuICB9XG5cbiAgLyoqXG4gICAqIERvIHRoZSB1c3VhbCBpbmhlcml0YW5jZSwgdGhlbiBjaGVjayB0aGUgdGV4dCBsZW5ndGggdG8gc2VlXG4gICAqICAgaWYgbWF0aHZhcmlhbnQgc2hvdWxkIGJlIG5vcm1hbCBvciBpdGFsaWMuXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCA9IHt9LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBib29sZWFuID0gZmFsc2UsIGxldmVsOiBudW1iZXIgPSAwLCBwcmltZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgc3VwZXIuc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBkaXNwbGF5LCBsZXZlbCwgcHJpbWUpO1xuICAgIGxldCB0ZXh0ID0gdGhpcy5nZXRUZXh0KCk7XG4gICAgaWYgKHRleHQubWF0Y2goTW1sTWkuc2luZ2xlQ2hhcmFjdGVyKSAmJiAhYXR0cmlidXRlcy5tYXRodmFyaWFudCkge1xuICAgICAgdGhpcy5hdHRyaWJ1dGVzLnNldEluaGVyaXRlZCgnbWF0aHZhcmlhbnQnLCAnaXRhbGljJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcmsgbXVsdGktY2hhcmFjdGVyIHRleHRzIGFzIE9QIHJhdGhlciB0aGFuIE9SRCBmb3Igc3BhY2luZyBwdXJwb3Nlc1xuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRUZVhjbGFzcyhwcmV2OiBBYnN0cmFjdE1tbE5vZGUpIHtcbiAgICB0aGlzLmdldFByZXZDbGFzcyhwcmV2KTtcbiAgICBsZXQgbmFtZSA9IHRoaXMuZ2V0VGV4dCgpO1xuICAgIGlmIChuYW1lLmxlbmd0aCA+IDEgJiYgbmFtZS5tYXRjaChNbWxNaS5vcGVyYXRvck5hbWUpICYmXG4gICAgICAgIHRoaXMuYXR0cmlidXRlcy5nZXQoJ21hdGh2YXJpYW50JykgPT09ICdub3JtYWwnICYmXG4gICAgICAgIHRoaXMuZ2V0UHJvcGVydHkoJ2F1dG9PUCcpID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgdGhpcy5nZXRQcm9wZXJ0eSgndGV4Q2xhc3MnKSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRleENsYXNzID0gVEVYQ0xBU1MuT1A7XG4gICAgICB0aGlzLnNldFByb3BlcnR5KCdhdXRvT1AnLCB0cnVlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdtaSB3cmFwcGVyIGZvciB0aGUgTW1sTWkgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXIsIFNWR0NvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTWlNaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21pLmpzJztcbmltcG9ydCB7TW1sTWl9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9taS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBTVkdtaSB3cmFwcGVyIGZvciB0aGUgTW1sTWkgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHbWk8TiwgVCwgRD4gZXh0ZW5kc1xuQ29tbW9uTWlNaXhpbjxTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgbWkgd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTWkucHJvdG90eXBlLmtpbmQ7XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ29tbW9uTW8gd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE1vIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7TW1sTW99IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tby5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uLy4uL3V0aWwvQkJveC5qcyc7XG5pbXBvcnQge3VuaWNvZGVDaGFyc30gZnJvbSAnLi4vLi4vLi4vdXRpbC9zdHJpbmcuanMnO1xuaW1wb3J0IHtEZWxpbWl0ZXJEYXRhfSBmcm9tICcuLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge0RJUkVDVElPTiwgTk9TVFJFVENIfSBmcm9tICcuLi9Gb250RGF0YS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogQ29udmVydCBkaXJlY3Rpb24gdG8gbGV0dGVyXG4gKi9cbmV4cG9ydCBjb25zdCBEaXJlY3Rpb25WSDoge1tuOiBudW1iZXJdOiBzdHJpbmd9ID0ge1xuICBbRElSRUNUSU9OLlZlcnRpY2FsXTogJ3YnLFxuICBbRElSRUNUSU9OLkhvcml6b250YWxdOiAnaCdcbn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1vIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbk1vIGV4dGVuZHMgQW55V3JhcHBlciB7XG5cbiAgLyoqXG4gICAqIFRoZSBmb250IHNpemUgdGhhdCBhIHN0cmV0Y2hlZCBvcGVyYXRvciB1c2VzLlxuICAgKiBJZiAtMSwgdGhlbiBzdHJldGNoIGFyYml0cmFyaWx5LCBhbmQgYmJveCBnaXZlcyB0aGUgYWN0dWFsIGhlaWdodCwgZGVwdGgsIHdpZHRoXG4gICAqL1xuICBzaXplOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdXNlZCBhcyBhbiBhY2NlbnQgaW4gYW4gbXVuZGVyb3ZlciBjb25zdHJ1Y3RcbiAgICovXG4gIGlzQWNjZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlICh1bm1vZGlmaWVkKSBiYm94IG9mIHRoZSBjb250ZW50cyAoYmVmb3JlIGNlbnRlcmluZyBvciBzZXR0aW5nIGFjY2VudHMgdG8gd2lkdGggMClcbiAgICpcbiAgICogQHBhcmFtIHtCQm94fSBiYm94ICAgVGhlIGJib3ggdG8gZmlsbFxuICAgKi9cbiAgcHJvdG9CQm94KGJib3g6IEJCb3gpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgIE9mZnNldCB0byB0aGUgbGVmdCBieSBoYWxmIHRoZSBhY3R1YWwgd2lkdGggb2YgdGhlIGFjY2VudFxuICAgKi9cbiAgZ2V0QWNjZW50T2Zmc2V0KCk6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIHtCQm94fSBiYm94ICAgVGhlIGJib3ggdG8gY2VudGVyLCBvciBudWxsIHRvIGNvbXB1dGUgdGhlIGJib3hcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgVGhlIG9mZnNldCB0byBtb3ZlIHRoZSBnbHlwaCB0byBjZW50ZXIgaXRcbiAgICovXG4gIGdldENlbnRlck9mZnNldChiYm94PzogQkJveCk6IG51bWJlcjtcblxuICAvKipcbiAgICogRGV0ZXJtaW50IHZhcmlhbnQgZm9yIHZlcnRpY2FsbHkvaG9yaXpvbnRhbGx5IHN0cmV0Y2hlZCBjaGFyYWN0ZXJcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJbXX0gV0ggIHNpemUgdG8gc3RyZXRjaCB0bywgZWl0aGVyIFtXXSBvciBbSCwgRF1cbiAgICogQHBhcmFtIHtib29sZWFufSBleGFjdCAgVHJ1ZSBpZiBub3QgYWxsb3dlZCB0byB1c2UgZGVsaW1pdGVyIGZhY3RvciBhbmQgc2hvcnRmYWxsXG4gICAqL1xuICBnZXRTdHJldGNoZWRWYXJpYW50KFdIOiBudW1iZXJbXSwgZXhhY3Q/OiBib29sZWFuKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIGdldFxuICAgKiBAcGFyYW0ge251bWJlcn0gdmFsdWUgIFRoZSBkZWZhdWx0IHZhbHVlIHRvIHVzZVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgIFRoZSBzaXplIGluIGVtJ3Mgb2YgdGhlIGF0dHJpYnV0ZSAob3IgdGhlIGRlZmF1bHQgdmFsdWUpXG4gICAqL1xuICBnZXRTaXplKG5hbWU6IHN0cmluZywgdmFsdWU6IG51bWJlcik6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJbXX0gV0ggIEVpdGhlciBbV10gZm9yIHdpZHRoLCBbSCwgRF0gZm9yIGhlaWdodCBhbmQgZGVwdGgsIG9yIFtdIGZvciBtaW4vbWF4IHNpemVcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgIEVpdGhlciB0aGUgd2lkdGggb3IgdGhlIHRvdGFsIGhlaWdodCBvZiB0aGUgY2hhcmFjdGVyXG4gICAqL1xuICBnZXRXSChXSDogbnVtYmVyW10pOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IFdIRCAgICAgVGhlIFtXXSBvciBbSCwgRF0gYmVpbmcgcmVxdWVzdGVkIGZyb20gdGhlIHBhcmVudCBtcm93XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBEICAgICAgICAgVGhlIGZ1bGwgZGltZW5zaW9uIChpbmNsdWRpbmcgc3ltbWV0cnksIGV0YylcbiAgICogQHBhcmFtIHtEZWxpbWl0ZXJEYXRhfSBDICBUaGUgZGVsaW1pdGVyIGRhdGEgZm9yIHRoZSBzdHJldGNoeSBjaGFyYWN0ZXJcbiAgICovXG4gIGdldFN0cmV0Y2hCQm94KFdIRDogbnVtYmVyW10sIEQ6IG51bWJlciwgQzogRGVsaW1pdGVyRGF0YSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IFdIRCAgICAgVGhlIFtILCBEXSBiZWluZyByZXF1ZXN0ZWQgZnJvbSB0aGUgcGFyZW50IG1yb3dcbiAgICogQHBhcmFtIHtudW1iZXJ9IEhEICAgICAgICBUaGUgZnVsbCBoZWlnaHQgKGluY2x1ZGluZyBzeW1tZXRyeSwgZXRjKVxuICAgKiBAcGFyYW0ge0RlbGltaXRlckRhdGF9IEMgIFRoZSBkZWxpbWl0ZXIgZGF0YSBmb3IgdGhlIHN0cmV0Y2h5IGNoYXJhY3RlclxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICAgICAgIFRoZSBoZWlnaHQgYW5kIGRlcHRoIGZvciB0aGUgdmVydGljYWxseSBzdHJldGNoZWQgZGVsaW1pdGVyXG4gICAqL1xuICBnZXRCYXNlbGluZShXSEQ6IG51bWJlcltdLCBIRDogbnVtYmVyLCBDOiBEZWxpbWl0ZXJEYXRhKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgc2l6ZSBvZiB0aGUgZGVsaW1pdGVyIGJhc2VkIG9uIHdoZXRoZXIgZnVsbCBleHRlbmRlcnMgc2hvdWxkIGJlIHVzZWQgb3Igbm90LlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gRCAgICAgICAgICBUaGUgcmVxdWVzdGVkIHNpemUgb2YgdGhlIGRlbGltaXRlclxuICAgKiBAcGFyYW0ge0RlbGltaXRlckRhdGF9IEMgICBUaGUgZGF0YSBmb3IgdGhlIGRlbGltaXRlclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgICAgICBUaGUgZmluYWwgc2l6ZSBvZiB0aGUgYXNzZW1ibHlcbiAgICovXG4gIGNoZWNrRXh0ZW5kZWRIZWlnaHQoRDogbnVtYmVyLCBDOiBEZWxpbWl0ZXJEYXRhKTogbnVtYmVyO1xuXG59XG5cbi8qKlxuICogU2hvcnRoYW5kIGZvciB0aGUgQ29tbW9uTW8gY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTW9Db25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yPENvbW1vbk1vPjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9tTW8gd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE1vIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25Nb01peGluPFQgZXh0ZW5kcyBXcmFwcGVyQ29uc3RydWN0b3I+KEJhc2U6IFQpOiBNb0NvbnN0cnVjdG9yICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZm9udCBzaXplIHRoYXQgYSBzdHJldGNoZWQgb3BlcmF0b3IgdXNlcy5cbiAgICAgKiBJZiAtMSwgdGhlbiBzdHJldGNoIGFyYml0cmFyaWx5LCBhbmQgYmJveCBnaXZlcyB0aGUgYWN0dWFsIGhlaWdodCwgZGVwdGgsIHdpZHRoXG4gICAgICovXG4gICAgcHVibGljIHNpemU6IG51bWJlciA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHVzZWQgYXMgYW4gYWNjZW50IGluIGFuIG11bmRlcm92ZXIgY29uc3RydWN0XG4gICAgICovXG4gICAgcHVibGljIGlzQWNjZW50OiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgdGhpcy5pc0FjY2VudCA9ICh0aGlzLm5vZGUgYXMgTW1sTW8pLmlzQWNjZW50O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wdXRlQkJveChiYm94OiBCQm94LCBfcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIHRoaXMucHJvdG9CQm94KGJib3gpO1xuICAgICAgaWYgKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnc3ltbWV0cmljJykgJiZcbiAgICAgICAgICB0aGlzLnN0cmV0Y2guZGlyICE9PSBESVJFQ1RJT04uSG9yaXpvbnRhbCkge1xuICAgICAgICBjb25zdCBkID0gdGhpcy5nZXRDZW50ZXJPZmZzZXQoYmJveCk7XG4gICAgICAgIGJib3guaCArPSBkO1xuICAgICAgICBiYm94LmQgLT0gZDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm5vZGUuZ2V0UHJvcGVydHkoJ21hdGhhY2NlbnQnKSAmJlxuICAgICAgICAgICh0aGlzLnN0cmV0Y2guZGlyID09PSBESVJFQ1RJT04uTm9uZSB8fCB0aGlzLnNpemUgPj0gMCkpIHtcbiAgICAgICAgYmJveC53ID0gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlICh1bm1vZGlmaWVkKSBiYm94IG9mIHRoZSBjb250ZW50cyAoYmVmb3JlIGNlbnRlcmluZyBvciBzZXR0aW5nIGFjY2VudHMgdG8gd2lkdGggMClcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QkJveH0gYmJveCAgIFRoZSBiYm94IHRvIGZpbGxcbiAgICAgKi9cbiAgICBwdWJsaWMgcHJvdG9CQm94KGJib3g6IEJCb3gpIHtcbiAgICAgIGNvbnN0IHN0cmV0Y2h5ID0gKHRoaXMuc3RyZXRjaC5kaXIgIT09IERJUkVDVElPTi5Ob25lKTtcbiAgICAgIGlmIChzdHJldGNoeSAmJiB0aGlzLnNpemUgPT09IG51bGwpIHtcbiAgICAgICAgdGhpcy5nZXRTdHJldGNoZWRWYXJpYW50KFswXSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RyZXRjaHkgJiYgdGhpcy5zaXplIDwgMCkgcmV0dXJuO1xuICAgICAgc3VwZXIuY29tcHV0ZUJCb3goYmJveCk7XG4gICAgICB0aGlzLmNvcHlTa2V3SUMoYmJveCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAgICBPZmZzZXQgdG8gdGhlIGxlZnQgYnkgaGFsZiB0aGUgYWN0dWFsIHdpZHRoIG9mIHRoZSBhY2NlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWNjZW50T2Zmc2V0KCk6IG51bWJlciB7XG4gICAgICBjb25zdCBiYm94ID0gQkJveC5lbXB0eSgpO1xuICAgICAgdGhpcy5wcm90b0JCb3goYmJveCk7XG4gICAgICByZXR1cm4gLWJib3gudyAvIDI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtCQm94fSBiYm94ICAgVGhlIGJib3ggdG8gY2VudGVyLCBvciBudWxsIHRvIGNvbXB1dGUgdGhlIGJib3hcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICBUaGUgb2Zmc2V0IHRvIG1vdmUgdGhlIGdseXBoIHRvIGNlbnRlciBpdFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDZW50ZXJPZmZzZXQoYmJveDogQkJveCA9IG51bGwpOiBudW1iZXIge1xuICAgICAgaWYgKCFiYm94KSB7XG4gICAgICAgIGJib3ggPSBCQm94LmVtcHR5KCk7XG4gICAgICAgIHN1cGVyLmNvbXB1dGVCQm94KGJib3gpO1xuICAgICAgfVxuICAgICAgcmV0dXJuICgoYmJveC5oICsgYmJveC5kKSAvIDIgKyB0aGlzLmZvbnQucGFyYW1zLmF4aXNfaGVpZ2h0KSAtIGJib3guaDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VmFyaWFudCgpIHtcbiAgICAgIGlmICh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2xhcmdlb3AnKSkge1xuICAgICAgICB0aGlzLnZhcmlhbnQgPSAodGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdkaXNwbGF5c3R5bGUnKSA/ICctbGFyZ2VvcCcgOiAnLXNtYWxsb3AnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXRFeHBsaWNpdCgnbWF0aHZhcmlhbnQnKSAmJlxuICAgICAgICAgIHRoaXMubm9kZS5nZXRQcm9wZXJ0eSgncHNldWRvc2NyaXB0JykgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMudmFyaWFudCA9ICctdGV4LXZhcmlhbnQnO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBzdXBlci5nZXRWYXJpYW50KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNhblN0cmV0Y2goZGlyZWN0aW9uOiBESVJFQ1RJT04pIHtcbiAgICAgIGlmICh0aGlzLnN0cmV0Y2guZGlyICE9PSBESVJFQ1RJT04uTm9uZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdHJldGNoLmRpciA9PT0gZGlyZWN0aW9uO1xuICAgICAgfVxuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzO1xuICAgICAgaWYgKCFhdHRyaWJ1dGVzLmdldCgnc3RyZXRjaHknKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0VGV4dCgpO1xuICAgICAgaWYgKEFycmF5LmZyb20oYykubGVuZ3RoICE9PSAxKSByZXR1cm4gZmFsc2U7XG4gICAgICBjb25zdCBkZWxpbSA9IHRoaXMuZm9udC5nZXREZWxpbWl0ZXIoYy5jb2RlUG9pbnRBdCgwKSk7XG4gICAgICB0aGlzLnN0cmV0Y2ggPSAoZGVsaW0gJiYgZGVsaW0uZGlyID09PSBkaXJlY3Rpb24gPyBkZWxpbSA6IE5PU1RSRVRDSCk7XG4gICAgICByZXR1cm4gdGhpcy5zdHJldGNoLmRpciAhPT0gRElSRUNUSU9OLk5vbmU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW50IHZhcmlhbnQgZm9yIHZlcnRpY2FsbHkvaG9yaXpvbnRhbGx5IHN0cmV0Y2hlZCBjaGFyYWN0ZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IFdIICBzaXplIHRvIHN0cmV0Y2ggdG8sIGVpdGhlciBbV10gb3IgW0gsIERdXG4gICAgICogQHBhcmFtIHtib29sZWFufSBleGFjdCAgVHJ1ZSBpZiBub3QgYWxsb3dlZCB0byB1c2UgZGVsaW1pdGVyIGZhY3RvciBhbmQgc2hvcnRmYWxsXG4gICAgICovXG4gICAgcHVibGljIGdldFN0cmV0Y2hlZFZhcmlhbnQoV0g6IG51bWJlcltdLCBleGFjdDogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBpZiAodGhpcy5zdHJldGNoLmRpciAhPT0gRElSRUNUSU9OLk5vbmUpIHtcbiAgICAgICAgbGV0IEQgPSB0aGlzLmdldFdIKFdIKTtcbiAgICAgICAgY29uc3QgbWluID0gdGhpcy5nZXRTaXplKCdtaW5zaXplJywgMCk7XG4gICAgICAgIGNvbnN0IG1heCA9IHRoaXMuZ2V0U2l6ZSgnbWF4c2l6ZScsIEluZmluaXR5KTtcbiAgICAgICAgY29uc3QgbWF0aGFjY2VudCA9IHRoaXMubm9kZS5nZXRQcm9wZXJ0eSgnbWF0aGFjY2VudCcpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgQ2xhbXAgdGhlIGRpbWVuc2lvbiB0byB0aGUgbWF4IGFuZCBtaW5cbiAgICAgICAgLy8gIHRoZW4gZ2V0IHRoZSB0YXJnZXQgc2l6ZSB2aWEgVGVYIHJ1bGVzXG4gICAgICAgIC8vXG4gICAgICAgIEQgPSBNYXRoLm1heChtaW4sIE1hdGgubWluKG1heCwgRCkpO1xuICAgICAgICBjb25zdCBkZiA9IHRoaXMuZm9udC5wYXJhbXMuZGVsaW1pdGVyZmFjdG9yIC8gMTAwMDtcbiAgICAgICAgY29uc3QgZHMgPSB0aGlzLmZvbnQucGFyYW1zLmRlbGltaXRlcnNob3J0ZmFsbDtcbiAgICAgICAgY29uc3QgbSA9IChtaW4gfHwgZXhhY3QgPyBEIDogbWF0aGFjY2VudCA/IE1hdGgubWluKEQgLyBkZiwgRCArIGRzKSA6ICBNYXRoLm1heChEICogZGYsIEQgLSBkcykpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgTG9vayB0aHJvdWdoIHRoZSBkZWxpbWl0ZXIgc2l6ZXMgZm9yIG9uZSB0aGF0IG1hdGNoZXNcbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgZGVsaW0gPSB0aGlzLnN0cmV0Y2g7XG4gICAgICAgIGNvbnN0IGMgPSBkZWxpbS5jIHx8IHRoaXMuZ2V0VGV4dCgpLmNvZGVQb2ludEF0KDApO1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGlmIChkZWxpbS5zaXplcykge1xuICAgICAgICAgIGZvciAoY29uc3QgZCBvZiBkZWxpbS5zaXplcykge1xuICAgICAgICAgICAgaWYgKGQgPj0gbSkge1xuICAgICAgICAgICAgICBpZiAobWF0aGFjY2VudCAmJiBpKSB7XG4gICAgICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHRoaXMudmFyaWFudCA9IHRoaXMuZm9udC5nZXRTaXplVmFyaWFudChjLCBpKTtcbiAgICAgICAgICAgICAgdGhpcy5zaXplID0gaTtcbiAgICAgICAgICAgICAgaWYgKGRlbGltLnNjaGFyICYmIGRlbGltLnNjaGFyW2ldKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdHJldGNoID0gey4uLnRoaXMuc3RyZXRjaCwgYzogZGVsaW0uc2NoYXJbaV19O1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gIE5vIHNpemUgbWF0Y2hlcywgc28gaWYgd2UgY2FuIG1ha2UgbXVsdGktY2hhcmFjdGVyIGRlbGltaXRlcnMsXG4gICAgICAgIC8vICByZWNvcmQgdGhlIGRhdGEgZm9yIHRoYXQsIG90aGVyd2lzZSwgdXNlIHRoZSBsYXJnZXN0IGZpeGVkIHNpemUuXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChkZWxpbS5zdHJldGNoKSB7XG4gICAgICAgICAgdGhpcy5zaXplID0gLTE7XG4gICAgICAgICAgdGhpcy5pbnZhbGlkYXRlQkJveCgpO1xuICAgICAgICAgIHRoaXMuZ2V0U3RyZXRjaEJCb3goV0gsIHRoaXMuY2hlY2tFeHRlbmRlZEhlaWdodChELCBkZWxpbSksIGRlbGltKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnZhcmlhbnQgPSB0aGlzLmZvbnQuZ2V0U2l6ZVZhcmlhbnQoYywgaSAtIDEpO1xuICAgICAgICAgIHRoaXMuc2l6ZSA9IGkgLSAxO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIGdldFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB2YWx1ZSAgVGhlIGRlZmF1bHQgdmFsdWUgdG8gdXNlXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICBUaGUgc2l6ZSBpbiBlbSdzIG9mIHRoZSBhdHRyaWJ1dGUgKG9yIHRoZSBkZWZhdWx0IHZhbHVlKVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTaXplKG5hbWU6IHN0cmluZywgdmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgICBsZXQgYXR0cmlidXRlcyA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzO1xuICAgICAgaWYgKGF0dHJpYnV0ZXMuaXNTZXQobmFtZSkpIHtcbiAgICAgICAgdmFsdWUgPSB0aGlzLmxlbmd0aDJlbShhdHRyaWJ1dGVzLmdldChuYW1lKSwgMSwgMSk7IC8vIEZJWE1FOiBzaG91bGQgdXNlIGhlaWdodCBvZiBhY3R1YWwgY2hhcmFjdGVyXG4gICAgICB9XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJbXX0gV0ggIEVpdGhlciBbV10gZm9yIHdpZHRoLCBbSCwgRF0gZm9yIGhlaWdodCBhbmQgZGVwdGgsIG9yIFtdIGZvciBtaW4vbWF4IHNpemVcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgRWl0aGVyIHRoZSB3aWR0aCBvciB0aGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V0goV0g6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgICAgIGlmIChXSC5sZW5ndGggPT09IDApIHJldHVybiAwO1xuICAgICAgaWYgKFdILmxlbmd0aCA9PT0gMSkgcmV0dXJuIFdIWzBdO1xuICAgICAgbGV0IFtILCBEXSA9IFdIO1xuICAgICAgY29uc3QgYSA9IHRoaXMuZm9udC5wYXJhbXMuYXhpc19oZWlnaHQ7XG4gICAgICByZXR1cm4gKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnc3ltbWV0cmljJykgPyAyICogTWF0aC5tYXgoSCAtIGEsIEQgKyBhKSA6IEggKyBEKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBXSEQgICAgIFRoZSBbV10gb3IgW0gsIERdIGJlaW5nIHJlcXVlc3RlZCBmcm9tIHRoZSBwYXJlbnQgbXJvd1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBEICAgICAgICAgVGhlIGZ1bGwgZGltZW5zaW9uIChpbmNsdWRpbmcgc3ltbWV0cnksIGV0YylcbiAgICAgKiBAcGFyYW0ge0RlbGltaXRlckRhdGF9IEMgIFRoZSBkZWxpbWl0ZXIgZGF0YSBmb3IgdGhlIHN0cmV0Y2h5IGNoYXJhY3RlclxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTdHJldGNoQkJveChXSEQ6IG51bWJlcltdLCBEOiBudW1iZXIsIEM6IERlbGltaXRlckRhdGEpIHtcbiAgICAgIGlmIChDLmhhc093blByb3BlcnR5KCdtaW4nKSAmJiBDLm1pbiA+IEQpIHtcbiAgICAgICAgRCA9IEMubWluO1xuICAgICAgfVxuICAgICAgbGV0IFtoLCBkLCB3XSA9IEMuSERXO1xuICAgICAgaWYgKHRoaXMuc3RyZXRjaC5kaXIgPT09IERJUkVDVElPTi5WZXJ0aWNhbCkge1xuICAgICAgICBbaCwgZF0gPSB0aGlzLmdldEJhc2VsaW5lKFdIRCwgRCwgQyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB3ID0gRDtcbiAgICAgIH1cbiAgICAgIHRoaXMuYmJveC5oID0gaDtcbiAgICAgIHRoaXMuYmJveC5kID0gZDtcbiAgICAgIHRoaXMuYmJveC53ID0gdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBXSEQgICAgIFRoZSBbSCwgRF0gYmVpbmcgcmVxdWVzdGVkIGZyb20gdGhlIHBhcmVudCBtcm93XG4gICAgICogQHBhcmFtIHtudW1iZXJ9IEhEICAgICAgICBUaGUgZnVsbCBoZWlnaHQgKGluY2x1ZGluZyBzeW1tZXRyeSwgZXRjKVxuICAgICAqIEBwYXJhbSB7RGVsaW1pdGVyRGF0YX0gQyAgVGhlIGRlbGltaXRlciBkYXRhIGZvciB0aGUgc3RyZXRjaHkgY2hhcmFjdGVyXG4gICAgICogQHJldHVybiB7W251bWJlciwgbnVtYmVyXX0gICAgICAgIFRoZSBoZWlnaHQgYW5kIGRlcHRoIGZvciB0aGUgdmVydGljYWxseSBzdHJldGNoZWQgZGVsaW1pdGVyXG4gICAgICovXG4gICAgcHVibGljIGdldEJhc2VsaW5lKFdIRDogbnVtYmVyW10sIEhEOiBudW1iZXIsIEM6IERlbGltaXRlckRhdGEpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgIGNvbnN0IGhhc1dIRCA9IChXSEQubGVuZ3RoID09PSAyICYmIFdIRFswXSArIFdIRFsxXSA9PT0gSEQpO1xuICAgICAgY29uc3Qgc3ltbWV0cmljID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdzeW1tZXRyaWMnKTtcbiAgICAgIGNvbnN0IFtILCBEXSA9IChoYXNXSEQgPyBXSEQgOiBbSEQsIDBdKTtcbiAgICAgIGxldCBbaCwgZF0gPSBbSCArIEQsIDBdO1xuICAgICAgaWYgKHN5bW1ldHJpYykge1xuICAgICAgICAvL1xuICAgICAgICAvLyAgQ2VudGVyIG9uIHRoZSBtYXRoIGF4aXNcbiAgICAgICAgLy9cbiAgICAgICAgY29uc3QgYSA9IHRoaXMuZm9udC5wYXJhbXMuYXhpc19oZWlnaHQ7XG4gICAgICAgIGlmIChoYXNXSEQpIHtcbiAgICAgICAgICBoID0gMiAqIE1hdGgubWF4KEggLSBhLCBEICsgYSk7XG4gICAgICAgIH1cbiAgICAgICAgZCA9IGggLyAyIC0gYTtcbiAgICAgIH0gZWxzZSBpZiAoaGFzV0hEKSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vICBVc2UgdGhlIGdpdmVuIGRlcHRoIChmcm9tIG1yb3cpXG4gICAgICAgIC8vXG4gICAgICAgIGQgPSBEO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gIFVzZSBkZXB0aCBwcm9wb3J0aW9uYWwgdG8gdGhlIG5vcm1hbC1zaXplIGNoYXJhY3RlclxuICAgICAgICAvLyAgKHdoZW4gc3RyZXRjaGluZyBmb3IgbWluc2l6ZSBvciBtYXhzaXplIGJ5IGl0c2VsZilcbiAgICAgICAgLy9cbiAgICAgICAgbGV0IFtjaCwgY2RdID0gKEMuSERXIHx8IFsuNzUsIC4yNV0pO1xuICAgICAgICBkID0gY2QgKiAoaCAvIChjaCArIGNkKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW2ggLSBkLCBkXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY2hlY2tFeHRlbmRlZEhlaWdodChEOiBudW1iZXIsIEM6IERlbGltaXRlckRhdGEpOiBudW1iZXIge1xuICAgICAgaWYgKEMuZnVsbEV4dCkge1xuICAgICAgICBjb25zdCBbZXh0U2l6ZSwgZW5kU2l6ZV0gPSBDLmZ1bGxFeHQ7XG4gICAgICAgIGNvbnN0IG4gPSBNYXRoLmNlaWwoTWF0aC5tYXgoMCwgRCAtIGVuZFNpemUpIC8gZXh0U2l6ZSk7XG4gICAgICAgIEQgPSBlbmRTaXplICsgbiAqIGV4dFNpemU7XG4gICAgICB9XG4gICAgICByZXR1cm4gRDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtYXBDaGFycyhjaGFyczogbnVtYmVyW10pIHtcbiAgICAgIGNvbnN0IHByaW1lcyA9IHRoaXMubm9kZS5nZXRQcm9wZXJ0eSgncHJpbWVzJykgYXMgc3RyaW5nO1xuICAgICAgaWYgKHByaW1lcykge1xuICAgICAgICByZXR1cm4gdW5pY29kZUNoYXJzKHByaW1lcyk7XG4gICAgICB9XG4gICAgICBpZiAoY2hhcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9ICh0aGlzLm5vZGUgYXMgTW1sTW8pLmNvcmVQYXJlbnQoKS5wYXJlbnQ7XG4gICAgICAgIGNvbnN0IGlzQWNjZW50ID0gdGhpcy5pc0FjY2VudCAmJiAhcGFyZW50LmlzS2luZCgnbXJvdycpO1xuICAgICAgICBjb25zdCBtYXAgPSAoaXNBY2NlbnQgPyAnYWNjZW50JyA6ICdtbycpO1xuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5mb250LmdldFJlbWFwcGVkQ2hhcihtYXAsIGNoYXJzWzBdKTtcbiAgICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgICBjaGFycyA9IHRoaXMudW5pY29kZUNoYXJzKHRleHQsIHRoaXMudmFyaWFudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjaGFycztcbiAgICB9XG5cbiAgfTtcblxufVxuIiwgIlxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR21vIHdyYXBwZXIgZm9yIHRoZSBNbWxNbyBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7U1ZHV3JhcHBlciwgU1ZHQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25Nb01peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbW8uanMnO1xuaW1wb3J0IHtNbWxNb30gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21vLmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcbmltcG9ydCB7RElSRUNUSU9OLCBTVkdDaGFyRGF0YSwgU1ZHQ2hhck9wdGlvbnN9IGZyb20gJy4uL0ZvbnREYXRhLmpzJztcblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbmNvbnN0IFZGVVpaID0gMC4xOyAgICAgICAvLyBvdmVybGFwIGZvciB2ZXJ0aWNhbCBzdHJldGNoeSBnbHlwaHNcbmNvbnN0IEhGVVpaID0gMC4xOyAgICAgICAvLyBvdmVybGFwIGZvciBob3Jpem9udGFsIHN0cmV0Y2h5IGdseXBoc1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBTVkdtbyB3cmFwcGVyIGZvciB0aGUgTW1sTW8gb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHbW88TiwgVCwgRD4gZXh0ZW5kc1xuQ29tbW9uTW9NaXhpbjxTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgbW8gd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTW8ucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU1ZHKHBhcmVudDogTikge1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcztcbiAgICBjb25zdCBzeW1tZXRyaWMgPSAoYXR0cmlidXRlcy5nZXQoJ3N5bW1ldHJpYycpIGFzIGJvb2xlYW4pICYmIHRoaXMuc3RyZXRjaC5kaXIgIT09IERJUkVDVElPTi5Ib3Jpem9udGFsO1xuICAgIGNvbnN0IHN0cmV0Y2h5ID0gdGhpcy5zdHJldGNoLmRpciAhPT0gRElSRUNUSU9OLk5vbmU7XG4gICAgaWYgKHN0cmV0Y2h5ICYmIHRoaXMuc2l6ZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5nZXRTdHJldGNoZWRWYXJpYW50KFtdKTtcbiAgICB9XG4gICAgbGV0IHN2ZyA9IHRoaXMuc3RhbmRhcmRTVkdub2RlKHBhcmVudCk7XG4gICAgaWYgKHN0cmV0Y2h5ICYmIHRoaXMuc2l6ZSA8IDApIHtcbiAgICAgIHRoaXMuc3RyZXRjaFNWRygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB1ID0gKHN5bW1ldHJpYyB8fCBhdHRyaWJ1dGVzLmdldCgnbGFyZ2VvcCcpID8gdGhpcy5maXhlZCh0aGlzLmdldENlbnRlck9mZnNldCgpKSA6ICcwJyk7XG4gICAgICBjb25zdCB2ID0gKHRoaXMubm9kZS5nZXRQcm9wZXJ0eSgnbWF0aGFjY2VudCcpID8gdGhpcy5maXhlZCh0aGlzLmdldEFjY2VudE9mZnNldCgpKSA6ICcwJyk7XG4gICAgICBpZiAodSAhPT0gJzAnIHx8IHYgIT09ICcwJykge1xuICAgICAgICB0aGlzLmFkYXB0b3Iuc2V0QXR0cmlidXRlKHN2ZywgJ3RyYW5zZm9ybScsIGB0cmFuc2xhdGUoJHt2fSAke3V9KWApO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRDaGlsZHJlbihzdmcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIFNWRyBmb3IgYSBtdWx0aS1jaGFyYWN0ZXIgc3RyZXRjaHkgZGVsaW1pdGVyXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RyZXRjaFNWRygpIHtcbiAgICBjb25zdCBzdHJldGNoID0gdGhpcy5zdHJldGNoLnN0cmV0Y2g7XG4gICAgY29uc3QgdmFyaWFudHMgPSB0aGlzLmdldFN0cmV0Y2hWYXJpYW50cygpO1xuICAgIGNvbnN0IGJib3ggPSB0aGlzLmdldEJCb3goKTtcbiAgICBpZiAodGhpcy5zdHJldGNoLmRpciA9PT0gRElSRUNUSU9OLlZlcnRpY2FsKSB7XG4gICAgICB0aGlzLnN0cmV0Y2hWZXJ0aWNhbChzdHJldGNoLCB2YXJpYW50cywgYmJveCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc3RyZXRjaEhvcml6b250YWwoc3RyZXRjaCwgdmFyaWFudHMsIGJib3gpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZhcmlhbnQgYXJyYXkgZm9yIHRoZSBhc3NlbWJseSBwaWVjZXNcbiAgICovXG4gIHByb3RlY3RlZCBnZXRTdHJldGNoVmFyaWFudHMoKSB7XG4gICAgY29uc3QgYyA9IHRoaXMuc3RyZXRjaC5jIHx8IHRoaXMuZ2V0VGV4dCgpLmNvZGVQb2ludEF0KDApO1xuICAgIGNvbnN0IHZhcmlhbnRzID0gW10gYXMgc3RyaW5nW107XG4gICAgZm9yIChjb25zdCBpIG9mIHRoaXMuc3RyZXRjaC5zdHJldGNoLmtleXMoKSkge1xuICAgICAgdmFyaWFudHNbaV0gPSB0aGlzLmZvbnQuZ2V0U3RyZXRjaFZhcmlhbnQoYywgaSk7XG4gICAgfVxuICAgIHJldHVybiB2YXJpYW50cztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcltdfSBzdHJldGNoICAgIFRoZSBjaGFyYWN0ZXJzIHRvIHVzZSBmb3Igc3RyZXRjaGluZ1xuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSB2YXJpYW50ICAgIFRoZSB2YXJpYW50cyBmb3IgdGhlIHBhcnRzIHRvIHVzZSBmb3Igc3RyZXRjaGluZ1xuICAgKiBAcGFyYW0ge0JCb3h9IGJib3ggICAgICAgICAgIFRoZSBmdWxsIHNpemUgb2YgdGhlIHN0cmV0Y2hlZCBjaGFyYWN0ZXJcbiAgICovXG4gIHByb3RlY3RlZCBzdHJldGNoVmVydGljYWwoc3RyZXRjaDogbnVtYmVyW10sIHZhcmlhbnQ6IHN0cmluZ1tdLCBiYm94OiBCQm94KSB7XG4gICAgY29uc3Qge2gsIGQsIHd9ID0gYmJveDtcbiAgICBjb25zdCBUID0gdGhpcy5hZGRUb3Aoc3RyZXRjaFswXSwgdmFyaWFudFswXSwgaCwgdyk7XG4gICAgY29uc3QgQiA9IHRoaXMuYWRkQm90KHN0cmV0Y2hbMl0sIHZhcmlhbnRbMl0sIGQsIHcpO1xuICAgIGlmIChzdHJldGNoLmxlbmd0aCA9PT0gNCkge1xuICAgICAgY29uc3QgW0gsIERdID0gdGhpcy5hZGRNaWRWKHN0cmV0Y2hbM10sIHZhcmlhbnRbM10sIHcpO1xuICAgICAgdGhpcy5hZGRFeHRWKHN0cmV0Y2hbMV0sIHZhcmlhbnRbMV0sIGgsIDAsIFQsIEgsIHcpO1xuICAgICAgdGhpcy5hZGRFeHRWKHN0cmV0Y2hbMV0sIHZhcmlhbnRbMV0sIDAsIGQsIEQsIEIsIHcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmFkZEV4dFYoc3RyZXRjaFsxXSwgdmFyaWFudFsxXSwgaCwgZCwgVCwgQiwgdyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IHN0cmV0Y2ggICAgVGhlIGNoYXJhY3RlcnMgdG8gdXNlIGZvciBzdHJldGNoaW5nXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHZhcmlhbnQgICAgVGhlIHZhcmlhbnRzIGZvciB0aGUgcGFydHMgdG8gdXNlIGZvciBzdHJldGNoaW5nXG4gICAqIEBwYXJhbSB7QkJveH0gYmJveCAgICAgICAgICAgVGhlIGZ1bGwgc2l6ZSBvZiB0aGUgc3RyZXRjaGVkIGNoYXJhY3RlclxuICAgKi9cbiAgcHJvdGVjdGVkIHN0cmV0Y2hIb3Jpem9udGFsKHN0cmV0Y2g6IG51bWJlcltdLCB2YXJpYW50OiBzdHJpbmdbXSwgYmJveDogQkJveCkge1xuICAgIGNvbnN0IHcgPSBiYm94Lnc7XG4gICAgY29uc3QgTCA9IHRoaXMuYWRkTGVmdChzdHJldGNoWzBdLCB2YXJpYW50WzBdKTtcbiAgICBjb25zdCBSID0gdGhpcy5hZGRSaWdodChzdHJldGNoWzJdLCB2YXJpYW50WzJdLCB3KTtcbiAgICBpZiAoc3RyZXRjaC5sZW5ndGggPT09IDQpIHtcbiAgICAgIGNvbnN0IFt4MSwgeDJdID0gdGhpcy5hZGRNaWRIKHN0cmV0Y2hbM10sIHZhcmlhbnRbM10sIHcpO1xuICAgICAgY29uc3QgdzIgPSB3IC8gMjtcbiAgICAgIHRoaXMuYWRkRXh0SChzdHJldGNoWzFdLCB2YXJpYW50WzFdLCB3MiwgTCwgdzIgLSB4MSk7XG4gICAgICB0aGlzLmFkZEV4dEgoc3RyZXRjaFsxXSwgdmFyaWFudFsxXSwgdzIsIHgyIC0gdzIsIFIsIHcyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5hZGRFeHRIKHN0cmV0Y2hbMV0sIHZhcmlhbnRbMV0sIHcsIEwsIFIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gICAgICAgICBUaGUgbnVtYmVyIG9mIHRoZSBjaGFyYWN0ZXIgdG8gbG9vayB1cFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFyaWFudCAgIFRoZSB2YXJpYW50IGZvciB0aGUgY2hhcmFjdGVyIHRvIGxvb2sgdXBcbiAgICogQHJldHVybiB7U1ZHQ2hhckRhdGF9ICAgICBUaGUgZnVsbCBDaGFyRGF0YSBvYmplY3QsIHdpdGggQ2hhck9wdGlvbnMgZ3VhcmFudGVlZCB0byBiZSBkZWZpbmVkXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Q2hhcihuOiBudW1iZXIsIHZhcmlhbnQ6IHN0cmluZyk6IFNWR0NoYXJEYXRhIHtcbiAgICBjb25zdCBjaGFyID0gdGhpcy5mb250LmdldENoYXIodmFyaWFudCwgbikgfHwgWzAsIDAsIDAsIG51bGxdO1xuICAgIHJldHVybiBbY2hhclswXSwgY2hhclsxXSwgY2hhclsyXSwgY2hhclszXSB8fCB7fV0gYXMgW251bWJlciwgbnVtYmVyLCBudW1iZXIsIFNWR0NoYXJPcHRpb25zXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbiAgICAgICAgIFRoZSBjaGFyYWN0ZXIgY29kZSBmb3IgdGhlIGdseXBoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYW50ICAgVGhlIHZhcmlhbnQgZm9yIHRoZSBnbHlwaFxuICAgKiBAcGFyYW0ge251bWJlcn0geCAgICAgICAgIFRoZSB4IHBvc2l0aW9uIG9mIHRoZSBnbHlwaFxuICAgKiBAcGFyYW0ge251bWJlcn0geSAgICAgICAgIFRoZSB5IHBvc2l0aW9uIG9mIHRoZSBnbHlwaFxuICAgKiBAcGFyYW0ge059IHBhcmVudCAgICAgICAgIFRoZSBjb250YWluZXIgZm9yIHRoZSBnbHlwaFxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgY2hhcmFjdGVyIHBsYWNlZFxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZEdseXBoKG46IG51bWJlciwgdmFyaWFudDogc3RyaW5nLCB4OiBudW1iZXIsIHk6IG51bWJlciwgcGFyZW50OiBOID0gbnVsbCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucGxhY2VDaGFyKG4sIHgsIHksIHBhcmVudCB8fCB0aGlzLmVsZW1lbnQsIHZhcmlhbnQpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbiAgICBUaGUgY2hhcmFjdGVyIG51bWJlciBmb3IgdGhlIHRvcCBnbHlwaFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdiAgICBUaGUgdmFyaWFudCBmb3IgdGhlIHRvcCBnbHlwaFxuICAgKiBAcGFyYW0ge251bWJlcn0gSCAgICBUaGUgaGVpZ2h0IG9mIHRoZSBzdHJldGNoZWQgZGVsaW1pdGVyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBXICAgIFRoZSB3aWR0aCBvZiB0aGUgc3RyZXRjaGVkIGRlbGltaXRlclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICBUaGUgdG90YWwgaGVpZ2h0IG9mIHRoZSB0b3AgZ2x5cGhcbiAgICovXG4gIHByb3RlY3RlZCBhZGRUb3AobjogbnVtYmVyLCB2OiBzdHJpbmcsIEg6IG51bWJlciwgVzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIW4pICByZXR1cm4gMDtcbiAgICBjb25zdCBbaCwgZCwgd10gPSB0aGlzLmdldENoYXIobiwgdik7XG4gICAgdGhpcy5hZGRHbHlwaChuLCB2LCAoVyAtIHcpIC8gMiwgSCAtIGgpO1xuICAgIHJldHVybiBoICsgZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbiAgICBUaGUgY2hhcmFjdGVyIG51bWJlciBmb3IgdGhlIGV4dGVuZGVyIGdseXBoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ICAgIFRoZSB2YXJpYW50IGZvciB0aGUgZXh0ZW5kZXIgZ2x5cGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IEggICAgVGhlIGhlaWdodCBvZiB0aGUgc3RyZXRjaGVkIGRlbGltaXRlclxuICAgKiBAcGFyYW0ge251bWJlcn0gRCAgICBUaGUgZGVwdGggb2YgdGhlIHN0cmV0Y2hlZCBkZWxpbWl0ZXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IFQgICAgVGhlIGhlaWdodCBvZiB0aGUgdG9wIGdseXBoIGluIHRoZSBkZWxpbWl0ZXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IEIgICAgVGhlIGhlaWdodCBvZiB0aGUgYm90dG9tIGdseXBoIGluIHRoZSBkZWxpbWl0ZXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IFcgICAgVGhlIHdpZHRoIG9mIHRoZSBzdHJldGNoZWQgZGVsaW1pdGVyXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkRXh0VihuOiBudW1iZXIsIHY6IHN0cmluZywgSDogbnVtYmVyLCBEOiBudW1iZXIsIFQ6IG51bWJlciwgQjogbnVtYmVyLCBXOiBudW1iZXIpIHtcbiAgICBpZiAoIW4pIHJldHVybjtcbiAgICBUID0gTWF0aC5tYXgoMCwgVCAtIFZGVVpaKTsgICAgICAgICAgICAgIC8vIEEgbGl0dGxlIG92ZXJsYXAgb24gdG9wXG4gICAgQiA9IE1hdGgubWF4KDAsIEIgLSBWRlVaWik7ICAgICAgICAgICAgICAvLyBBIGxpdHRsZSBvdmVybGFwIG9uIGJvdHRvbVxuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3QgW2gsIGQsIHddID0gdGhpcy5nZXRDaGFyKG4sIHYpO1xuICAgIGNvbnN0IFkgPSBIICsgRCAtIFQgLSBCOyAgICAgICAgICAgICAgICAgLy8gVGhlIGhlaWdodCBvZiB0aGUgZXh0ZW5kZXJcbiAgICBjb25zdCBzID0gMS41ICogWSAvIChoICsgZCk7ICAgICAgICAgICAgIC8vIFNjYWxlIGhlaWdodCBieSAxLjUgdG8gYXZvaWQgYmFkIGVuZHNcbiAgICAvLyAgIChnbHlwaHMgd2l0aCByb3VuZGVkIG9yIGFudGktYWxpYXNlZCBlbmRzIGRvbid0IHN0cmV0Y2ggd2VsbCxcbiAgICAvLyAgICBzbyB0aGlzIG1ha2VzIGZvciBzaGFycGVyIGVuZHMpXG4gICAgY29uc3QgeSA9IChzICogKGggLSBkKSAtIFkpIC8gMjsgICAgICAgICAvLyBUaGUgYm90dG9tIHBvaW50IHRvIGNsaXAgdGhlIGV4dGVuZGVyXG4gICAgaWYgKFkgPD0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnKCdzdmcnLCB7XG4gICAgICB3aWR0aDogdGhpcy5maXhlZCh3KSwgaGVpZ2h0OiB0aGlzLmZpeGVkKFkpLFxuICAgICAgeTogdGhpcy5maXhlZChCIC0gRCksIHg6IHRoaXMuZml4ZWQoKFcgLSB3KSAvIDIpLFxuICAgICAgdmlld0JveDogWzAsIHksIHcsIFldLm1hcCh4ID0+IHRoaXMuZml4ZWQoeCkpLmpvaW4oJyAnKVxuICAgIH0pO1xuICAgIHRoaXMuYWRkR2x5cGgobiwgdiwgMCwgMCwgc3ZnKTtcbiAgICBjb25zdCBnbHlwaCA9IGFkYXB0b3IubGFzdENoaWxkKHN2Zyk7XG4gICAgYWRhcHRvci5zZXRBdHRyaWJ1dGUoZ2x5cGgsICd0cmFuc2Zvcm0nLCBgc2NhbGUoMSwke3RoaXMuamF4LmZpeGVkKHMpfSlgKTtcbiAgICBhZGFwdG9yLmFwcGVuZCh0aGlzLmVsZW1lbnQsIHN2Zyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gICAgVGhlIGNoYXJhY3RlciBudW1iZXIgZm9yIHRoZSBib3R0b20gZ2x5cGhcbiAgICogQHBhcmFtIHtzdHJpbmd9IHYgICAgVGhlIHZhcmlhbnQgZm9yIHRoZSBib3R0b20gZ2x5cGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IEQgICAgVGhlIGRlcHRoIG9mIHRoZSBzdHJldGNoZWQgZGVsaW1pdGVyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBXICAgIFRoZSB3aWR0aCBvZiB0aGUgc3RyZXRjaGVkIGRlbGltaXRlclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICBUaGUgdG90YWwgaGVpZ2h0IG9mIHRoZSBib3R0b20gZ2x5cGhcbiAgICovXG4gIHByb3RlY3RlZCBhZGRCb3QobjogbnVtYmVyLCB2OiBzdHJpbmcsIEQ6IG51bWJlciwgVzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoIW4pIHJldHVybiAwO1xuICAgIGNvbnN0IFtoLCBkLCB3XSA9IHRoaXMuZ2V0Q2hhcihuLCB2KTtcbiAgICB0aGlzLmFkZEdseXBoKG4sIHYsIChXIC0gdykgLyAyLCBkIC0gRCk7XG4gICAgcmV0dXJuIGggKyBkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuICAgIFRoZSBjaGFyYWN0ZXIgbnVtYmVyIGZvciB0aGUgbWlkZGxlIGdseXBoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ICAgIFRoZSB2YXJpYW50IGZvciB0aGUgbWlkZGxlIGdseXBoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBXICAgIFRoZSB3aWR0aCBvZiB0aGUgc3RyZXRjaGVkIGRlbGltaXRlclxuICAgKiBAcmV0dXJuIHtbbnVtYmVyLCBudW1iZXJdfSAgIFRoZSB0b3AgYW5kIGJvdHRvbSBwb3NpdGlvbnMgb2YgdGhlIG1pZGRsZSBnbHlwaFxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZE1pZFYobjogbnVtYmVyLCB2OiBzdHJpbmcsIFc6IG51bWJlcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGlmICghbikgcmV0dXJuIFswLCAwXTtcbiAgICBjb25zdCBbaCwgZCwgd10gPSB0aGlzLmdldENoYXIobiwgdik7XG4gICAgY29uc3QgeSA9IChkIC0gaCkgLyAyICsgdGhpcy5mb250LnBhcmFtcy5heGlzX2hlaWdodDtcbiAgICB0aGlzLmFkZEdseXBoKG4sIHYsIChXIC0gdykgLyAyLCB5KTtcbiAgICByZXR1cm4gW2ggKyB5LCBkIC0geV07XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuICAgVGhlIGNoYXJhY3RlciBudW1iZXIgZm9yIHRoZSBsZWZ0IGdseXBoIG9mIHRoZSBzdHJldGNoeSBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHYgICBUaGUgdmFyaWFudCBmb3IgdGhlIGxlZnQgZ2x5cGhcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICBUaGUgd2lkdGggb2YgdGhlIGxlZnQgZ2x5cGhcbiAgICovXG4gIHByb3RlY3RlZCBhZGRMZWZ0KG46IG51bWJlciwgdjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKG4gPyB0aGlzLmFkZEdseXBoKG4sIHYsIDAsIDApIDogMCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gICBUaGUgY2hhcmFjdGVyIG51bWJlciBmb3IgdGhlIGV4dGVuZGVyIGdseXBoIG9mIHRoZSBzdHJldGNoeSBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHYgICBUaGUgdmFyaWFudCBmb3IgdGhlIGV4dGVuZGVyIGdseXBoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBXICAgVGhlIHdpZHRoIG9mIHRoZSBzdHJldGNoZWQgY2hhcmFjdGVyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBMICAgVGhlIHdpZHRoIG9mIHRoZSBsZWZ0IGdseXBoIG9mIHRoZSBzdHJldGNoeSBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IFIgICBUaGUgd2lkdGggb2YgdGhlIHJpZ2h0IGdseXBoIG9mIHRoZSBzdHJldGNoeSBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggICBUaGUgeC1wb3NpdGlvbiBvZiB0aGUgZXh0ZW5kZXIgKG5lZWRlZCBmb3Igb25lcyB3aXRoIHR3byBleHRlbmRlcnMpXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkRXh0SChuOiBudW1iZXIsIHY6IHN0cmluZywgVzogbnVtYmVyLCBMOiBudW1iZXIsIFI6IG51bWJlciwgeDogbnVtYmVyID0gMCkge1xuICAgIGlmICghbikgcmV0dXJuO1xuICAgIFIgPSBNYXRoLm1heCgwLCBSIC0gSEZVWlopOyAgICAgLy8gQSBsaXR0bGUgbGVzcyB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgcmlnaHQgZ2x5cGhcbiAgICBMID0gTWF0aC5tYXgoMCwgTCAtIEhGVVpaKTsgICAgIC8vIEEgbGl0dGxlIGxlc3MgdGhhbiB0aGUgd2lkdGggb2YgdGhlIGxlZnQgZ2x5cGhcbiAgICBjb25zdCBhZGFwdG9yID0gdGhpcy5hZGFwdG9yO1xuICAgIGNvbnN0IFtoLCBkLCB3XSA9IHRoaXMuZ2V0Q2hhcihuLCB2KTtcbiAgICBjb25zdCBYID0gVyAtIEwgLSBSOyAgICAgICAgICAgIC8vIFRoZSB3aWR0aCBvZiB0aGUgZXh0ZW5kZXJcbiAgICBjb25zdCBZID0gaCArIGQgKyAyICogVkZVWlo7ICAgIC8vIFRoZSBoZWlnaHQgKHBsdXMgc29tZSBmdXp6KSBvZiB0aGUgZXh0ZW5kZXJcbiAgICBjb25zdCBzID0gMS41ICogKFggLyB3KTsgICAgICAgIC8vIFNjYWxlIHRoZSB3aWR0aCBzbyB0aGF0IGxlZnQtIGFuZCByaWdodC1iZWFyaW5nIHdvbid0IGh1cnQgdXNcbiAgICBjb25zdCBEID0gLShkICsgVkZVWlopOyAgICAgICAgIC8vIFRoZSBib3R0b20gcG9zaXRpb24gb2YgdGhlIGdseXBoXG4gICAgaWYgKFggPD0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnKCdzdmcnLCB7XG4gICAgICB3aWR0aDogdGhpcy5maXhlZChYKSwgaGVpZ2h0OiB0aGlzLmZpeGVkKFkpLFxuICAgICAgeDogdGhpcy5maXhlZCh4ICsgTCksIHk6IHRoaXMuZml4ZWQoRCksXG4gICAgICB2aWV3Qm94OiBbKHMgKiB3IC0gWCkgLyAyLCBELCBYLCBZXS5tYXAoeCA9PiB0aGlzLmZpeGVkKHgpKS5qb2luKCcgJylcbiAgICB9KTtcbiAgICB0aGlzLmFkZEdseXBoKG4sIHYsIDAsIDAsIHN2Zyk7XG4gICAgY29uc3QgZ2x5cGggPSBhZGFwdG9yLmxhc3RDaGlsZChzdmcpO1xuICAgIGFkYXB0b3Iuc2V0QXR0cmlidXRlKGdseXBoLCAndHJhbnNmb3JtJywgJ3NjYWxlKCcgKyB0aGlzLmpheC5maXhlZChzKSArICcsMSknKTtcbiAgICBhZGFwdG9yLmFwcGVuZCh0aGlzLmVsZW1lbnQsIHN2Zyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gICBUaGUgY2hhcmFjdGVyIG51bWJlciBmb3IgdGhlIHJpZ2h0IGdseXBoIG9mIHRoZSBzdHJldGNoeSBjaGFyYWN0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHYgICBUaGUgdmFyaWFudCBmb3IgdGhlIHJpZ2h0IGdseXBoXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBXICAgVGhlIHdpZHRoIG9mIHRoZSBzdHJldGNoZWQgY2hhcmFjdGVyXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgVGhlIHdpZHRoIG9mIHRoZSByaWdodCBnbHlwaFxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZFJpZ2h0KG46IG51bWJlciwgdjogc3RyaW5nLCBXOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmICghbikgcmV0dXJuIDA7XG4gICAgY29uc3QgdyA9IHRoaXMuZ2V0Q2hhcihuLCB2KVsyXTtcbiAgICByZXR1cm4gdGhpcy5hZGRHbHlwaChuLCB2LCBXIC0gdywgMCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gICBUaGUgY2hhcmFjdGVyIG51bWJlciBmb3IgdGhlIG1pZGRsZSBnbHlwaCBvZiB0aGUgc3RyZXRjaHkgY2hhcmFjdGVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2ICAgVGhlIHZhcmlhbnQgZm9yIHRoZSBtaWRkbGUgZ2x5cGhcbiAgICogQHBhcmFtIHtudW1iZXJ9IFcgICBUaGUgd2lkdGggb2YgdGhlIHN0cmV0Y2hlZCBjaGFyYWN0ZXJcbiAgICogQHJldHVybiB7W251bWJlciwgbnVtYmVyXX0gIFRoZSBwb3NpdGlvbnMgb2YgdGhlIGxlZnQgYW5kIHJpZ2h0IGVkZ2VzIG9mIHRoZSBtaWRkbGUgZ2x5cGhcbiAgICovXG4gIHByb3RlY3RlZCBhZGRNaWRIKG46IG51bWJlciwgdjogc3RyaW5nLCBXOiBudW1iZXIpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICBpZiAoIW4pIHJldHVybiBbMCwgMF07XG4gICAgY29uc3QgdyA9IHRoaXMuZ2V0Q2hhcihuLCB2KVsyXTtcbiAgICB0aGlzLmFkZEdseXBoKG4sIHYsIChXIC0gdykgLyAyLCAwKTtcbiAgICByZXR1cm4gWyhXIC0gdykgLyAyLCAoVyArIHcpIC8gMl07XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25NbiB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTW4gb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0FueVdyYXBwZXIsIFdyYXBwZXJDb25zdHJ1Y3RvciwgQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NbiBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25NbiBleHRlbmRzIEFueVdyYXBwZXIge1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk1uIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIE1uQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxDb21tb25Nbj47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1uIHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNbiBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFdyYXBwZXIgY2xhc3MgY29uc3RydWN0b3IgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbW9uTW5NaXhpbjxUIGV4dGVuZHMgV3JhcHBlckNvbnN0cnVjdG9yPihCYXNlOiBUKTogTW5Db25zdHJ1Y3RvciAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIHJlbWFwQ2hhcnMoY2hhcnM6IG51bWJlcltdKSB7XG4gICAgICAvL1xuICAgICAgLy8gIENvbnZlcnQgYSBsZWFkaW5nIGh5cGhlbiB0byBhIG1pbnVzXG4gICAgICAvL1xuICAgICAgaWYgKGNoYXJzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCB0ZXh0ID0gdGhpcy5mb250LmdldFJlbWFwcGVkQ2hhcignbW4nLCBjaGFyc1swXSk7XG4gICAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgICAgY29uc3QgYyA9IHRoaXMudW5pY29kZUNoYXJzKHRleHQsIHRoaXMudmFyaWFudCk7XG4gICAgICAgICAgaWYgKGMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICBjaGFyc1swXSA9IGNbMF07XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNoYXJzID0gYy5jb25jYXQoY2hhcnMuc2xpY2UoMSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGNoYXJzO1xuICAgIH1cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNbiBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QWJzdHJhY3RNbWxUb2tlbk5vZGUsIFRFWENMQVNTfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTW4gbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxUb2tlbk5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1uIGV4dGVuZHMgQWJzdHJhY3RNbWxUb2tlbk5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbFRva2VuTm9kZS5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBUZVggY2xhc3MgaXMgT1JEXG4gICAqL1xuICBwcm90ZWN0ZWQgdGV4Y2xhc3MgPSBURVhDTEFTUy5PUkQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbW4nO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgU1ZHbW4gd3JhcHBlciBmb3IgdGhlIE1tbE1uIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk1uTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tbi5qcyc7XG5pbXBvcnQge01tbE1ufSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbW4uanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBTVkdtbiB3cmFwcGVyIGZvciB0aGUgTW1sTW4gb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHbW48TiwgVCwgRD4gZXh0ZW5kc1xuQ29tbW9uTW5NaXhpbjxTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgbW4gd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTW4ucHJvdG90eXBlLmtpbmQ7XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ29tbW9uTXMgd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE1zIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTXMgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uTXMgZXh0ZW5kcyBBbnlXcmFwcGVyIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIHRleHQgd3JhcHBlciB3aXRoIHRoZSBnaXZlbiB0ZXh0O1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgVGhlIHRleHQgZm9yIHRoZSB3cmFwcGVkIGVsZW1lbnRcbiAgICogQHJldHVybiB7Q29tbW9uV3JhcHBlcn0gICBUaGUgd3JhcHBlZCB0ZXh0IG5vZGVcbiAgICovXG4gIGNyZWF0ZVRleHQodGV4dDogc3RyaW5nKTogQW55V3JhcHBlcjtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25NcyBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBNc0NvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8Q29tbW9uTXM+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NcyB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXMgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk1zTWl4aW48VCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IE1zQ29uc3RydWN0b3IgJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgcXVvdGUgY2hhcmFjdGVycyB0byB0aGUgd3JhcHBlciBjaGlsZHJlbiBzbyB0aGV5IHdpbGwgYmUgb3V0cHV0XG4gICAgICpcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXM7XG4gICAgICBsZXQgcXVvdGVzID0gYXR0cmlidXRlcy5nZXRMaXN0KCdscXVvdGUnLCAncnF1b3RlJyk7XG4gICAgICBpZiAodGhpcy52YXJpYW50ICE9PSAnbW9ub3NwYWNlJykge1xuICAgICAgICBpZiAoIWF0dHJpYnV0ZXMuaXNTZXQoJ2xxdW90ZScpICYmIHF1b3Rlcy5scXVvdGUgPT09ICdcIicpIHF1b3Rlcy5scXVvdGUgPSAnXFx1MjAxQyc7XG4gICAgICAgIGlmICghYXR0cmlidXRlcy5pc1NldCgncnF1b3RlJykgJiYgcXVvdGVzLnJxdW90ZSA9PT0gJ1wiJykgcXVvdGVzLnJxdW90ZSA9ICdcXHUyMDFEJztcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hpbGROb2Rlcy51bnNoaWZ0KHRoaXMuY3JlYXRlVGV4dChxdW90ZXMubHF1b3RlIGFzIHN0cmluZykpO1xuICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2godGhpcy5jcmVhdGVUZXh0KHF1b3Rlcy5ycXVvdGUgYXMgc3RyaW5nKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGEgdGV4dCB3cmFwcGVyIHdpdGggdGhlIGdpdmVuIHRleHQ7XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgIFRoZSB0ZXh0IGZvciB0aGUgd3JhcHBlZCBlbGVtZW50XG4gICAgICogQHJldHVybiB7QW55V3JhcHBlcn0gICBUaGUgd3JhcHBlZCB0ZXh0IG5vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY3JlYXRlVGV4dCh0ZXh0OiBzdHJpbmcpOiBBbnlXcmFwcGVyIHtcbiAgICAgIGNvbnN0IG5vZGUgPSB0aGlzLndyYXAodGhpcy5tbWxUZXh0KHRleHQpKTtcbiAgICAgIG5vZGUucGFyZW50ID0gdGhpcztcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNcyBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QWJzdHJhY3RNbWxUb2tlbk5vZGUsIFRFWENMQVNTfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTXMgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxUb2tlbk5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1zIGV4dGVuZHMgQWJzdHJhY3RNbWxUb2tlbk5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbFRva2VuTm9kZS5kZWZhdWx0cyxcbiAgICBscXVvdGU6ICdcIicsXG4gICAgcnF1b3RlOiAnXCInXG4gIH07XG5cbiAgLyoqXG4gICAqIFRlWCBjbGFzcyBpcyBPUkRcbiAgICovXG4gIHByb3RlY3RlZCB0ZXhjbGFzcyA9IFRFWENMQVNTLk9SRDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtcyc7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdtcyB3cmFwcGVyIGZvciB0aGUgTW1sTXMgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXIsIFNWR0NvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTXNNaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21zLmpzJztcbmltcG9ydCB7TW1sTXN9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tcy5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIFNWR21zIHdyYXBwZXIgZm9yIHRoZSBNbWxNcyBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdtczxOLCBULCBEPiBleHRlbmRzXG5Db21tb25Nc01peGluPFNWR0NvbnN0cnVjdG9yPGFueSwgYW55LCBhbnk+PihTVkdXcmFwcGVyKSB7XG5cbiAgLyoqXG4gICAqIFRoZSBtcyB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxNcy5wcm90b3R5cGUua2luZDtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOS0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25NdGV4dCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXRleHQgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0FueVdyYXBwZXIsIFdyYXBwZXJDb25zdHJ1Y3RvciwgQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NdGV4dCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25NdGV4dCBleHRlbmRzIEFueVdyYXBwZXIge1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk10ZXh0IGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIE10ZXh0Q29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxDb21tb25NdGV4dD47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBDb21tb25NdGV4dCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXRleHQgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk10ZXh0TWl4aW48VCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IE10ZXh0Q29uc3RydWN0b3IgJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSBmb250LWZhbWlseSwgd2VpZ2h0LCBhbmQgc3R5bGUgdG8gdXNlIGZvciB0aGUgdmFyaWFudHMgd2hlbiBtdGV4dEluaGVyaXRGb250XG4gICAgICogaXMgdHJ1ZSBvciBtdGV4dEZvbnQgaXMgc3BlY2lmaWVkLiAgSWYgbm90IGluIHRoaXMgbGlzdCwgdGhlbiB0aGUgZm9udCdzXG4gICAgICogZ2V0Q3NzRm9udCgpIGlzIGNhbGxlZC4gIFdoZW4gdGhlIGZvbnQgZmFtaWx5IGlzIG5vdCBzcGVjaWZpZWQgKGFzIGluIHRoZXNlIGZvdXIpLFxuICAgICAqIHRoZSBpbmhlcml0ZWQgb3Igc3BlY2lmaWVkIGZvbnQgaXMgdXNlZC5cbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIElOSEVSSVRGT05UUyA9IHtcbiAgICAgIG5vcm1hbDogWycnLCBmYWxzZSwgZmFsc2VdLFxuICAgICAgYm9sZDogWycnLCBmYWxzZSwgdHJ1ZV0sXG4gICAgICBpdGFsaWM6IFsnJywgdHJ1ZSwgZmFsc2VdLFxuICAgICAgJ2JvbGQtaXRhbGljJzogWycnLCB0cnVlLCB0cnVlXVxuICAgIH07XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0VmFyaWFudCgpIHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmpheC5vcHRpb25zO1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuamF4Lm1hdGgub3V0cHV0RGF0YTtcbiAgICAgIC8vXG4gICAgICAvLyAgSWYgdGhlIGZvbnQgaXMgdG8gYmUgaW5oZXJpdGVkIGZyb20gdGhlIHN1cnJvdW5kaW5nIHRleHQsIGNoZWNrIHRoZSBtYXRodmFyaWFudFxuICAgICAgLy8gIGFuZCBzZWUgaWYgaXQgYWxsb3dzIGZvciBpbmhlcml0YW5jZS4gSWYgc28sIHNldCB0aGUgdmFyaWFudCBhcHByb3ByaWF0ZWx5LFxuICAgICAgLy8gIG90aGVyd2lzZSBnZXQgdGhlIHVzdWFsIHZhcmlhbnQuXG4gICAgICAvL1xuICAgICAgY29uc3QgbWVycm9yID0gKCghIWRhdGEubWVycm9yRmFtaWx5IHx8ICEhb3B0aW9ucy5tZXJyb3JGb250KSAmJiB0aGlzLm5vZGUuUGFyZW50LmlzS2luZCgnbWVycm9yJykpO1xuICAgICAgaWYgKCEhZGF0YS5tdGV4dEZhbWlseSB8fCAhIW9wdGlvbnMubXRleHRGb250IHx8IG1lcnJvcikge1xuICAgICAgICBjb25zdCB2YXJpYW50ID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdtYXRodmFyaWFudCcpIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgZm9udCA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIGFueSkuSU5IRVJJVEZPTlRTW3ZhcmlhbnRdIHx8IHRoaXMuamF4LmZvbnQuZ2V0Q3NzRm9udCh2YXJpYW50KTtcbiAgICAgICAgY29uc3QgZmFtaWx5ID0gZm9udFswXSB8fCAobWVycm9yID8gZGF0YS5tZXJyb3JGYW1pbHkgfHwgb3B0aW9ucy5tZXJyb3JGb250IDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS5tdGV4dEZhbWlseSB8fCBvcHRpb25zLm10ZXh0Rm9udCk7XG4gICAgICAgIHRoaXMudmFyaWFudCA9IHRoaXMuZXhwbGljaXRWYXJpYW50KGZhbWlseSwgZm9udFsyXSA/ICdib2xkJyA6ICcnLCBmb250WzFdID8gJ2l0YWxpYycgOiAnJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHN1cGVyLmdldFZhcmlhbnQoKTtcbiAgICB9XG5cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNdGV4dCBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QWJzdHJhY3RNbWxUb2tlbk5vZGUsIFRFWENMQVNTfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTXRleHQgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxUb2tlbk5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE10ZXh0IGV4dGVuZHMgQWJzdHJhY3RNbWxUb2tlbk5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbFRva2VuTm9kZS5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBUZVggY2xhc3MgaXMgT1JEXG4gICAqL1xuICBwcm90ZWN0ZWQgdGV4Y2xhc3MgPSBURVhDTEFTUy5PUkQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbXRleHQnO1xuICB9XG5cbiAgLyoqXG4gICAqIDxtdGV4dD4gaXMgYWx3YXlzIHNwYWNlLWxpa2UgYWNjb3JkaW5nIHRvIHRoZSBzcGVjXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBpc1NwYWNlbGlrZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE5LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR210ZXh0IHdyYXBwZXIgZm9yIHRoZSBNbWxNdGV4dCBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7U1ZHV3JhcHBlciwgU1ZHQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25NdGV4dE1peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbXRleHQuanMnO1xuaW1wb3J0IHtNbWxNdGV4dH0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL210ZXh0LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbXRleHQgd3JhcHBlciBmb3IgdGhlIE1tbE10ZXh0IG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNsYXNzIFNWR210ZXh0PE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk10ZXh0TWl4aW48U1ZHQ29uc3RydWN0b3I8YW55LCBhbnksIGFueT4+KFNWR1dyYXBwZXIpIHtcblxuICAvKipcbiAgICogVGhlIG10ZXh0IHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE10ZXh0LnByb3RvdHlwZS5raW5kO1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE1lcnJvciBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QWJzdHJhY3RNbWxOb2RlLCBURVhDTEFTU30gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1lcnJvciBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbE5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1lcnJvciBleHRlbmRzIEFic3RyYWN0TW1sTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sTm9kZS5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBUZVggY2xhc3MgaXMgT1JEXG4gICAqL1xuICBwcm90ZWN0ZWQgdGV4Y2xhc3MgPSBURVhDTEFTUy5PUkQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbWVycm9yJztcbiAgfVxuXG4gIC8qKlxuICAgKiA8bWVycm9yPiBnZXRzIGFuIGluZmVycmVkIG1yb3dcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaXR5KCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiA8bWVycm9yPiBjYW4gY29udGFpbiBsaW5lIGJyZWFrc1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgbGluZWJyZWFrQ29udGFpbmVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgU1ZHbWVycm9yIHdyYXBwZXIgZm9yIHRoZSBNbWxNZXJyb3Igb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXJ9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtNbWxNZXJyb3J9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tZXJyb3IuanMnO1xuaW1wb3J0IHtTdHlsZUxpc3R9IGZyb20gJy4uLy4uLy4uL3V0aWwvU3R5bGVMaXN0LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIFNWR21lcnJvciB3cmFwcGVyIGZvciB0aGUgTW1sTWVycm9yIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNWR21lcnJvcjxOLCBULCBEPiBleHRlbmRzIFNWR1dyYXBwZXI8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBUaGUgbWVycm9yIHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE1lcnJvci5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0eWxlczogU3R5bGVMaXN0ID0ge1xuICAgICdnW2RhdGEtbW1sLW5vZGU9XCJtZXJyb3JcIl0gPiBnJzoge1xuICAgICAgZmlsbDogJ3JlZCcsXG4gICAgICBzdHJva2U6ICdyZWQnXG4gICAgfSxcbiAgICAnZ1tkYXRhLW1tbC1ub2RlPVwibWVycm9yXCJdID4gcmVjdFtkYXRhLWJhY2tncm91bmRdJzoge1xuICAgICAgZmlsbDogJ3llbGxvdycsXG4gICAgICBzdHJva2U6ICdub25lJ1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5zdGFuZGFyZFNWR25vZGUocGFyZW50KTtcbiAgICBjb25zdCB7aCwgZCwgd30gPSB0aGlzLmdldEJCb3goKTtcbiAgICB0aGlzLmFkYXB0b3IuYXBwZW5kKHRoaXMuZWxlbWVudCwgdGhpcy5zdmcoJ3JlY3QnLCB7XG4gICAgICAnZGF0YS1iYWNrZ3JvdW5kJzogdHJ1ZSxcbiAgICAgIHdpZHRoOiB0aGlzLmZpeGVkKHcpLCBoZWlnaHQ6IHRoaXMuZml4ZWQoaCArIGQpLCB5OiB0aGlzLmZpeGVkKC1kKVxuICAgIH0pKTtcbiAgICBjb25zdCB0aXRsZSA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgndGl0bGUnKSBhcyBzdHJpbmc7XG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICB0aGlzLmFkYXB0b3IuYXBwZW5kKHRoaXMuZWxlbWVudCwgdGhpcy5zdmcoJ3RpdGxlJywge30sIFt0aGlzLmFkYXB0b3IudGV4dCh0aXRsZSldKSk7XG4gICAgfVxuICAgIHRoaXMuYWRkQ2hpbGRyZW4oc3ZnKTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIENvbW1vbk1zcGFjZSB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXNwYWNlIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTXNwYW5jZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25Nc3BhY2UgZXh0ZW5kcyBBbnlXcmFwcGVyIHtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25Nc3BhY2UgY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTXNwYWNlQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxDb21tb25Nc3BhY2U+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Nc3BhY2Ugd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE1zcGFjZSBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFdyYXBwZXIgY2xhc3MgY29uc3RydWN0b3IgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbW9uTXNwYWNlTWl4aW48VCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IE1zcGFjZUNvbnN0cnVjdG9yICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCwgX3JlY29tcHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXM7XG4gICAgICBiYm94LncgPSB0aGlzLmxlbmd0aDJlbShhdHRyaWJ1dGVzLmdldCgnd2lkdGgnKSwgMCk7XG4gICAgICBiYm94LmggPSB0aGlzLmxlbmd0aDJlbShhdHRyaWJ1dGVzLmdldCgnaGVpZ2h0JyksIDApO1xuICAgICAgYmJveC5kID0gdGhpcy5sZW5ndGgyZW0oYXR0cmlidXRlcy5nZXQoJ2RlcHRoJyksIDApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5vIGNvbnRlbnRzLCBzbyBubyBuZWVkIGZvciB2YXJpYW50IGNsYXNzXG4gICAgICpcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlVmFyaWFudCgpIHtcbiAgICB9XG5cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNc3BhY2Ugbm9kZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge01tbE5vZGUsIEFic3RyYWN0TW1sVG9rZW5Ob2RlLCBURVhDTEFTU30gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1zcGFjZSBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbFRva2VuTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTXNwYWNlIGV4dGVuZHMgQWJzdHJhY3RNbWxUb2tlbk5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbFRva2VuTm9kZS5kZWZhdWx0cyxcbiAgICB3aWR0aDogICcwZW0nLFxuICAgIGhlaWdodDogJzBleCcsXG4gICAgZGVwdGg6ICAnMGV4JyxcbiAgICBsaW5lYnJlYWs6ICdhdXRvJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBUZVggY2xhc3MgaXMgT1JEXG4gICAqL1xuICBwcm90ZWN0ZWQgdGV4Y2xhc3MgPSBURVhDTEFTUy5OT05FO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKTogTW1sTm9kZSB7XG4gICAgcmV0dXJuIHByZXY7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtc3BhY2UnO1xuICB9XG5cbiAgLyoqXG4gICAqIG1zcGFjZSBjYW4ndCBoYXZlIGNoaWxkcmVuXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNTcGFjZWxpa2UoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogT25seSBwcm9jZXNzIGxpbmVicmVhayBpZiB0aGUgc3BhY2UgaGFzIG5vIGV4cGxpY2l0IGRpbWVuc2lvbnMgKGFjY29yZGluZyB0byBzcGVjKVxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaGFzTmV3bGluZSgpIHtcbiAgICBsZXQgYXR0cmlidXRlcyA9IHRoaXMuYXR0cmlidXRlcztcbiAgICByZXR1cm4gKGF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ3dpZHRoJykgPT0gbnVsbCAmJiBhdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdoZWlnaHQnKSA9PSBudWxsICYmXG4gICAgICAgICAgICBhdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdkZXB0aCcpID09IG51bGwgJiYgYXR0cmlidXRlcy5nZXQoJ2xpbmVicmVhaycpID09PSAnbmV3bGluZScpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgU1ZHbXNwYWNlIHdyYXBwZXIgZm9yIHRoZSBNbWxNc3BhY2Ugb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXIsIFNWR0NvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTXNwYWNlTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tc3BhY2UuanMnO1xuaW1wb3J0IHtNbWxNc3BhY2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tc3BhY2UuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBTVkdtc3BhY2Ugd3JhcHBlciBmb3IgdGhlIE1tbE1zcGFjZSBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdtc3BhY2U8TiwgVCwgRD4gZXh0ZW5kc1xuQ29tbW9uTXNwYWNlTWl4aW48U1ZHQ29uc3RydWN0b3I8YW55LCBhbnksIGFueT4+KFNWR1dyYXBwZXIpIHtcblxuICAvKipcbiAgICogVGhlIG1zcGFjZSB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxNc3BhY2UucHJvdG90eXBlLmtpbmQ7XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ29tbW9uTXBhZGRlZCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXBhZGRlZCBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QW55V3JhcHBlciwgV3JhcHBlckNvbnN0cnVjdG9yLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uLy4uL3V0aWwvQkJveC5qcyc7XG5pbXBvcnQge1Byb3BlcnR5fSBmcm9tICcuLi8uLi8uLi9jb3JlL1RyZWUvTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1wYWRkZWQgaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uTXBhZGRlZCBleHRlbmRzIEFueVdyYXBwZXIge1xuICAvKipcbiAgICogR2V0IHRoZSBjb250ZW50IGJvdW5kaW5nIGJveCwgYW5kIHRoZSBjaGFuZ2UgaW4gc2l6ZSBhbmQgb2Zmc2V0c1xuICAgKiAgIGFzIHNwZWNpZmllZCBieSB0aGUgcGFyYW1ldGVyc1xuICAgKlxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gIFRoZSBvcmlnaW5hbCBoZWlnaHQsIGRlcHRoLCB3aWR0aCwgdGhlIGNoYW5nZXMgaW4gaGVpZ2h0LCBkZXB0aCxcbiAgICogICAgICAgICAgICAgICAgICAgIGFuZCB3aWR0aCwgYW5kIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBvZmZzZXRzIG9mIHRoZSBjb250ZW50XG4gICAqL1xuICBnZXREaW1lbnMoKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEdldCBhIHBhcnRpY3VsYXIgZGltZW5zaW9uLCB3aGljaCBjYW4gYmUgcmVsYXRpdmUgdG8gYW55IG9mIHRoZSBCQm94IGRpbWVuc2lvbnMsXG4gICAqICAgYW5kIGNhbiBiZSBhbiBvZmZzZXQgZnJvbSB0aGUgZGVmYXVsdCBzaXplIG9mIHRoZSBnaXZlbiBkaW1lbnNpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7UHJvcGVydHl9IGxlbmd0aCAgIFRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgdG8gYSBsZW5ndGggaW4gZW1zXG4gICAqIEBwYXJhbSB7QkJveH0gYmJveCAgICAgICAgIFRoZSBiYm94IG9mIHRoZSBtcGFkZGVkIGNvbnRlbnRcbiAgICogQHBhcmFtIHtzdHJpbmc9fSBkICAgICAgICAgVGhlIGRlZmF1bHQgZGltZW5zaW9uIHRvIHVzZSBmb3IgcmVsYXRpdmUgc2l6ZXMgKCd3JywgJ2gnLCBvciAnZCcpXG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gbSAgICAgICAgIFRoZSBtaW5pbXVtIHZhbHVlIGFsbG93ZWQgZm9yIHRoZSBkaW1lbnNpb25cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgICAgVGhlIGZpbmFsIGRpbWVuc2lvbiBpbiBlbXNcbiAgICovXG4gIGRpbWVuKGxlbmd0aDogUHJvcGVydHksIGJib3g6IEJCb3gsIGQ/OiBzdHJpbmcsIG0/OiBudW1iZXIpOiBudW1iZXI7XG59XG5cbi8qKlxuICogU2hvcnRoYW5kIGZvciB0aGUgQ29tbW9uTXBhZGRlZCBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBNcGFkZGVkQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxDb21tb25NcGFkZGVkPjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9tTXBhZGRlZCB3cmFwcGVyIGZvciB0aGUgTW1sTXBhZGRlZCBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFdyYXBwZXIgY2xhc3MgY29uc3RydWN0b3IgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbW9uTXBhZGRlZE1peGluPFQgZXh0ZW5kcyBXcmFwcGVyQ29uc3RydWN0b3I+KEJhc2U6IFQpOiBNcGFkZGVkQ29uc3RydWN0b3IgJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgY29udGVudCBib3VuZGluZyBib3gsIGFuZCB0aGUgY2hhbmdlIGluIHNpemUgYW5kIG9mZnNldHNcbiAgICAgKiAgIGFzIHNwZWNpZmllZCBieSB0aGUgcGFyYW1ldGVyc1xuICAgICAqXG4gICAgICogQHJldHVybiB7bnVtYmVyW119ICBUaGUgb3JpZ2luYWwgaGVpZ2h0LCBkZXB0aCwgd2lkdGgsIHRoZSBjaGFuZ2VzIGluIGhlaWdodCwgZGVwdGgsXG4gICAgICogICAgICAgICAgICAgICAgICAgIGFuZCB3aWR0aCwgYW5kIHRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBvZmZzZXRzIG9mIHRoZSBjb250ZW50XG4gICAgICovXG4gICAgcHVibGljIGdldERpbWVucygpOiBudW1iZXJbXSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXRMaXN0KCd3aWR0aCcsICdoZWlnaHQnLCAnZGVwdGgnLCAnbHNwYWNlJywgJ3ZvZmZzZXQnKTtcbiAgICAgIGNvbnN0IGJib3ggPSB0aGlzLmNoaWxkTm9kZXNbMF0uZ2V0QkJveCgpOyAgLy8gZ2V0IHVubW9kaWZpZWQgYmJveCBvZiBjaGlsZHJlblxuICAgICAgbGV0IHt3LCBoLCBkfSA9IGJib3g7XG4gICAgICBsZXQgVyA9IHcsIEggPSBoLCBEID0gZCwgeCA9IDAsIHkgPSAwLCBkeCA9IDA7XG4gICAgICBpZiAodmFsdWVzLndpZHRoICE9PSAnJykgICB3ID0gdGhpcy5kaW1lbih2YWx1ZXMud2lkdGgsIGJib3gsICd3JywgMCk7XG4gICAgICBpZiAodmFsdWVzLmhlaWdodCAhPT0gJycpICBoID0gdGhpcy5kaW1lbih2YWx1ZXMuaGVpZ2h0LCBiYm94LCAnaCcsIDApO1xuICAgICAgaWYgKHZhbHVlcy5kZXB0aCAhPT0gJycpICAgZCA9IHRoaXMuZGltZW4odmFsdWVzLmRlcHRoLCBiYm94LCAnZCcsIDApO1xuICAgICAgaWYgKHZhbHVlcy52b2Zmc2V0ICE9PSAnJykgeSA9IHRoaXMuZGltZW4odmFsdWVzLnZvZmZzZXQsIGJib3gpO1xuICAgICAgaWYgKHZhbHVlcy5sc3BhY2UgIT09ICcnKSAgeCA9IHRoaXMuZGltZW4odmFsdWVzLmxzcGFjZSwgYmJveCk7XG4gICAgICBjb25zdCBhbGlnbiA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnZGF0YS1hbGlnbicpIGFzIHN0cmluZztcbiAgICAgIGlmIChhbGlnbikge1xuICAgICAgICBkeCA9IHRoaXMuZ2V0QWxpZ25YKHcsIGJib3gsIGFsaWduKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbSCwgRCwgVywgaCAtIEgsIGQgLSBELCB3IC0gVywgeCwgeSwgZHhdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBhIHBhcnRpY3VsYXIgZGltZW5zaW9uLCB3aGljaCBjYW4gYmUgcmVsYXRpdmUgdG8gYW55IG9mIHRoZSBCQm94IGRpbWVuc2lvbnMsXG4gICAgICogICBhbmQgY2FuIGJlIGFuIG9mZnNldCBmcm9tIHRoZSBkZWZhdWx0IHNpemUgb2YgdGhlIGdpdmVuIGRpbWVuc2lvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UHJvcGVydHl9IGxlbmd0aCAgIFRoZSB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgdG8gYSBsZW5ndGggaW4gZW1zXG4gICAgICogQHBhcmFtIHtCQm94fSBiYm94ICAgICAgICAgVGhlIGJib3ggb2YgdGhlIG1wYWRkZWQgY29udGVudFxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkICAgICAgICAgIFRoZSBkZWZhdWx0IGRpbWVuc2lvbiB0byB1c2UgZm9yIHJlbGF0aXZlIHNpemVzICgndycsICdoJywgb3IgJ2QnKVxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBtICAgICAgICAgIFRoZSBtaW5pbXVtIHZhbHVlIGFsbG93ZWQgZm9yIHRoZSBkaW1lbnNpb25cbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgICAgICBUaGUgZmluYWwgZGltZW5zaW9uIGluIGVtc1xuICAgICAqL1xuICAgIHB1YmxpYyBkaW1lbihsZW5ndGg6IFByb3BlcnR5LCBiYm94OiBCQm94LCBkOiBzdHJpbmcgPSAnJywgbTogbnVtYmVyID0gbnVsbCk6IG51bWJlciB7XG4gICAgICBsZW5ndGggPSBTdHJpbmcobGVuZ3RoKTtcbiAgICAgIGNvbnN0IG1hdGNoID0gbGVuZ3RoLm1hdGNoKC93aWR0aHxoZWlnaHR8ZGVwdGgvKTtcbiAgICAgIGNvbnN0IHNpemUgPSAobWF0Y2ggPyBiYm94W21hdGNoWzBdLmNoYXJBdCgwKSBhcyAoa2V5b2YgQkJveCldIDpcbiAgICAgICAgICAgICAgICAgICAgKGQgPyBiYm94W2QgYXMgKGtleW9mIEJCb3gpXSA6IDApKSBhcyBudW1iZXI7XG4gICAgICBsZXQgZGltZW4gPSAodGhpcy5sZW5ndGgyZW0obGVuZ3RoLCBzaXplKSB8fCAwKTtcbiAgICAgIGlmIChsZW5ndGgubWF0Y2goL15bLStdLykgJiYgZCkge1xuICAgICAgICBkaW1lbiArPSBzaXplO1xuICAgICAgfVxuICAgICAgaWYgKG0gIT0gbnVsbCkge1xuICAgICAgICBkaW1lbiA9IE1hdGgubWF4KG0sIGRpbWVuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkaW1lbjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCwgcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IFtILCBELCBXLCBkaCwgZGQsIGR3XSA9IHRoaXMuZ2V0RGltZW5zKCk7XG4gICAgICBiYm94LncgPSBXICsgZHc7XG4gICAgICBiYm94LmggPSBIICsgZGg7XG4gICAgICBiYm94LmQgPSBEICsgZGQ7XG4gICAgICB0aGlzLnNldENoaWxkUFdpZHRocyhyZWNvbXB1dGUsIGJib3gudyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldFdyYXBXaWR0aChfaTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRCQm94KCkudztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2hpbGRBbGlnbihfaTogbnVtYmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdkYXRhLWFsaWduJykgYXMgc3RyaW5nIHx8ICdsZWZ0JztcbiAgICB9XG4gIH07XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgTW1sTXBhZGRlZCBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QWJzdHJhY3RNbWxMYXlvdXROb2RlfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTXBhZGRlZCBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbExheW91dE5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1wYWRkZWQgZXh0ZW5kcyBBYnN0cmFjdE1tbExheW91dE5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbExheW91dE5vZGUuZGVmYXVsdHMsXG4gICAgd2lkdGg6ICcnLFxuICAgIGhlaWdodDogJycsXG4gICAgZGVwdGg6ICcnLFxuICAgIGxzcGFjZTogMCxcbiAgICB2b2Zmc2V0OiAwXG4gIH07XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbXBhZGRlZCc7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdtcGFkZGVkIHdyYXBwZXIgZm9yIHRoZSBNbWxNcGFkZGVkIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk1wYWRkZWRNaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21wYWRkZWQuanMnO1xuaW1wb3J0IHtNbWxNcGFkZGVkfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXBhZGRlZC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIFNWR21wYWRkZWQgd3JhcHBlciBmb3IgdGhlIE1tbE1wYWRkZWQgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHbXBhZGRlZDxOLCBULCBEPiBleHRlbmRzXG5Db21tb25NcGFkZGVkTWl4aW48U1ZHQ29uc3RydWN0b3I8YW55LCBhbnksIGFueT4+KFNWR1dyYXBwZXIpIHtcblxuICAvKipcbiAgICogVGhlIG1wYWRkZWQgd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTXBhZGRlZC5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgbGV0IHN2ZyA9IHRoaXMuc3RhbmRhcmRTVkdub2RlKHBhcmVudCk7XG4gICAgY29uc3QgWyAsICwgLCAsICwgZHcsIHgsIHksIGR4XSA9IHRoaXMuZ2V0RGltZW5zKCk7XG4gICAgY29uc3QgYWxpZ24gPSAodGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdkYXRhLWFsaWduJykgYXMgc3RyaW5nKSB8fCAnbGVmdCc7XG4gICAgY29uc3QgWCA9IHggKyBkeCAtIChkdyA8IDAgJiYgYWxpZ24gIT09ICdsZWZ0JyA/IGFsaWduID09PSAnY2VudGVyJyA/IGR3IC8gMiA6IGR3IDogMCk7XG4gICAgLy9cbiAgICAvLyBJZiB0aGVyZSBpcyBhIGhvcml6b250YWwgb3IgdmVydGljYWwgc2hpZnQsXG4gICAgLy8gICB1c2UgcmVsYXRpdmUgcG9zaXRpb25pbmcgdG8gbW92ZSB0aGUgY29udGVudHNcbiAgICAvL1xuICAgIGlmIChYIHx8IHkpIHtcbiAgICAgIHN2ZyA9IHRoaXMuYWRhcHRvci5hcHBlbmQoc3ZnLCB0aGlzLnN2ZygnZycpKTtcbiAgICAgIHRoaXMucGxhY2UoWCwgeSwgc3ZnKTtcbiAgICB9XG4gICAgdGhpcy5hZGRDaGlsZHJlbihzdmcpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgTW1sTXBoYW50b20gbm9kZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge0Fic3RyYWN0TW1sTGF5b3V0Tm9kZSwgVEVYQ0xBU1N9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNcGhhbnRvbSBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbExheW91dE5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1waGFudG9tIGV4dGVuZHMgQWJzdHJhY3RNbWxMYXlvdXROb2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxMYXlvdXROb2RlLmRlZmF1bHRzXG4gIH07XG5cbiAgLyoqXG4gICAqIFRlWCBjbGFzcyBpcyBPUkRcbiAgICovXG4gIHByb3RlY3RlZCB0ZXhjbGFzcyA9IFRFWENMQVNTLk9SRDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtcGhhbnRvbSc7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdtcGhhbnRvbSB3cmFwcGVyIGZvciB0aGUgTW1sTXBoYW50b20gb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXJ9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtNbWxNcGhhbnRvbX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21waGFudG9tLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIFNWR21pIHdyYXBwZXIgZm9yIHRoZSBNbWxNaSBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBTVkdtcGhhbnRvbTxOLCBULCBEPiBleHRlbmRzIFNWR1dyYXBwZXI8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBUaGUgbXBoYW50b20gd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTXBoYW50b20ucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU1ZHKHBhcmVudDogTikge1xuICAgIHRoaXMuc3RhbmRhcmRTVkdub2RlKHBhcmVudCk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25NZnJhYyB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWZyYWMgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0FueVdyYXBwZXIsIFdyYXBwZXJDb25zdHJ1Y3RvciwgQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25Nb30gZnJvbSAnLi9tby5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uLy4uL3V0aWwvQkJveC5qcyc7XG5pbXBvcnQge0RJUkVDVElPTn0gZnJvbSAnLi4vRm9udERhdGEuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NZnJhYyBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25NZnJhYyBleHRlbmRzIEFueVdyYXBwZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtCQm94fSBiYm94ICAgICAgICBUaGUgYnVvbmRpbmcgYm94IHRvIG1vZGlmeVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgZm9yIGRpc3BsYXktbW9kZSBmcmFjdGlvbnNcbiAgICogQHBhcmFtIHtudW1iZXJ9IHQgICAgICAgICBUaGUgdGhpY2tuZXNzIG9mIHRoZSBsaW5lXG4gICAqL1xuICBnZXRGcmFjdGlvbkJCb3goYmJveDogQkJveCwgZGlzcGxheTogYm9vbGVhbiwgdDogbnVtYmVyKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBkaXNwbGF5ICBUcnVlIGZvciBkaXNwbGF5LW1vZGUgZnJhY3Rpb25zXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0ICAgICAgICAgVGhlIHRoaWNrbmVzcyBvZiB0aGUgbGluZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgIFRoZSBleHBhbmRlZCBydWxlIHRoaWNrbmVzcyAoVCksIGFuZCBiYXNlbGluZSBvZmZzZXRzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbnVtZXJhdG9yIGFuZCBkZW5vbXVuYXRvciAodSBhbmQgdilcbiAgICovXG4gIGdldFRVVihkaXNwbGF5OiBib29sZWFuLCB0OiBudW1iZXIpOiB7VDogbnVtYmVyLCB1OiBudW1iZXIsIHY6IG51bWJlcn07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QkJveH0gYmJveCAgICAgICAgVGhlIGJvdW5kaW5nIGJveCB0byBtb2RpZnlcbiAgICogQHBhcmFtIHtib29sZWFufSBkaXNwbGF5ICBUcnVlIGZvciBkaXNwbGF5LW1vZGUgZnJhY3Rpb25zXG4gICAqL1xuICBnZXRBdG9wQkJveChiYm94OiBCQm94LCBkaXNwbGF5OiBib29sZWFuKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBkaXNwbGF5ICBUcnVlIGZvciBkaXBsYXktbW9kZSBmcmFjdGlvbnNcbiAgICogQHJldHVybiB7T2JqZWN0fVxuICAgKiAgICBUaGUgdmVydGljYWwgb2Zmc2V0cyBvZiB0aGUgbnVtZXJhdG9yICh1KSwgdGhlIGRlbm9taW5hdG9yICh2KSxcbiAgICogICAgdGhlIHNlcGFyYXRpb24gYmV0d2VlbiB0aGUgdHdvLCBhbmQgdGhlIGJib3hlcyB0aGVtc2VsdmVzLlxuICAgKi9cbiAgZ2V0VVZRKGRpc3BsYXk6IGJvb2xlYW4pOiB7dTogbnVtYmVyLCB2OiBudW1iZXIsIHE6IG51bWJlciwgbmJveDogQkJveCwgZGJveDogQkJveH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QkJveH0gYmJveCAgICAgICAgVGhlIGJvdW5kbmcgYm94IHRvIG1vZGlmeVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgZm9yIGRpc3BsYXktbW9kZSBmcmFjdGlvbnNcbiAgICovXG4gIGdldEJldmVsbGVkQkJveChiYm94OiBCQm94LCBkaXNwbGF5OiBib29sZWFuKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBkaXNwbGF5ICBUcnVlIGZvciBkaXNwbGF5LXN0eWxlIGZyYWN0aW9uc1xuICAgKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgIFRoZSBoZWlnaHQgKEgpIG9mIHRoZSBiZXZlbCwgaG9yaXpvbnRhbCBvZmZlc3QgKGRlbHRhKVxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwgb2Zmc2V0cyAodSBhbmQgdikgb2YgdGhlIHBhcnRzLCBhbmRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nIGJveGVzIG9mIHRoZSBwYXJ0cy5cbiAgICovXG4gIGdldEJldmVsRGF0YShkaXNwbGF5OiBib29sZWFuKToge0g6IG51bWJlciwgZGVsdGE6IG51bWJlciwgdTogbnVtYmVyLCB2OiBudW1iZXIsIG5ib3g6IEJCb3gsIGRib3g6IEJCb3h9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgIFRydWUgaWYgaW4gZGlzcGxheSBtb2RlLCBmYWxzZSBvdGhlcndpc2VcbiAgICovXG4gIGlzRGlzcGxheSgpOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk1mcmFjIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIE1mcmFjQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxDb21tb25NZnJhYz47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1mcmFjIHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNZnJhYyBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFdyYXBwZXIgY2xhc3MgY29uc3RydWN0b3IgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbW9uTWZyYWNNaXhpbjxUIGV4dGVuZHMgV3JhcHBlckNvbnN0cnVjdG9yPihCYXNlOiBUKTogTWZyYWNDb25zdHJ1Y3RvciAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogV3JhcHBlciBmb3IgPG1vPiB0byB1c2UgZm9yIGJldmVsbGVkIGZyYWN0aW9uXG4gICAgICovXG4gICAgcHVibGljIGJldmVsOiBDb21tb25NbyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBQYWRkaW5nIGFyb3VuZCBmcmFjdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgcGFkOiBudW1iZXI7XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgdGhpcy5wYWQgPSAodGhpcy5ub2RlLmdldFByb3BlcnR5KCd3aXRoRGVsaW1zJykgYXMgYm9vbGVhbiA/IDAgOiB0aGlzLmZvbnQucGFyYW1zLm51bGxkZWxpbWl0ZXJzcGFjZSk7XG4gICAgICAvL1xuICAgICAgLy8gIGNyZWF0ZSBpbnRlcm5hbCBiZXZlbCBtbyBlbGVtZW50XG4gICAgICAvL1xuICAgICAgaWYgKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnYmV2ZWxsZWQnKSkge1xuICAgICAgICBjb25zdCB7SH0gPSB0aGlzLmdldEJldmVsRGF0YSh0aGlzLmlzRGlzcGxheSgpKTtcbiAgICAgICAgY29uc3QgYmV2ZWwgPSB0aGlzLmJldmVsID0gdGhpcy5jcmVhdGVNbygnLycpIGFzIENvbW1vbk1vO1xuICAgICAgICBiZXZlbC5ub2RlLmF0dHJpYnV0ZXMuc2V0KCdzeW1tZXRyaWMnLCB0cnVlKTtcbiAgICAgICAgYmV2ZWwuY2FuU3RyZXRjaChESVJFQ1RJT04uVmVydGljYWwpO1xuICAgICAgICBiZXZlbC5nZXRTdHJldGNoZWRWYXJpYW50KFtIXSwgdHJ1ZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNvbXB1dGVCQm94KGJib3g6IEJCb3gsIHJlY29tcHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBiYm94LmVtcHR5KCk7XG4gICAgICBjb25zdCB7bGluZXRoaWNrbmVzcywgYmV2ZWxsZWR9ID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0TGlzdCgnbGluZXRoaWNrbmVzcycsICdiZXZlbGxlZCcpO1xuICAgICAgY29uc3QgZGlzcGxheSA9IHRoaXMuaXNEaXNwbGF5KCk7XG4gICAgICBsZXQgdyA9IG51bGwgYXMgKG51bWJlciB8IG51bGwpO1xuICAgICAgaWYgKGJldmVsbGVkKSB7XG4gICAgICAgIHRoaXMuZ2V0QmV2ZWxsZWRCQm94KGJib3gsIGRpc3BsYXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdGhpY2tuZXNzID0gdGhpcy5sZW5ndGgyZW0oU3RyaW5nKGxpbmV0aGlja25lc3MpLCAuMDYpO1xuICAgICAgICB3ID0gLTIgKiB0aGlzLnBhZDtcbiAgICAgICAgaWYgKHRoaWNrbmVzcyA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuZ2V0QXRvcEJCb3goYmJveCwgZGlzcGxheSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5nZXRGcmFjdGlvbkJCb3goYmJveCwgZGlzcGxheSwgdGhpY2tuZXNzKTtcbiAgICAgICAgICB3IC09IC4yO1xuICAgICAgICB9XG4gICAgICAgIHcgKz0gYmJveC53O1xuICAgICAgfVxuICAgICAgYmJveC5jbGVhbigpO1xuICAgICAgdGhpcy5zZXRDaGlsZFBXaWR0aHMocmVjb21wdXRlLCB3KTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtCQm94fSBiYm94ICAgICAgICBUaGUgYnVvbmRpbmcgYm94IHRvIG1vZGlmeVxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzcGxheSAgVHJ1ZSBmb3IgZGlzcGxheS1tb2RlIGZyYWN0aW9uc1xuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0ICAgICAgICAgVGhlIHRoaWNrbmVzcyBvZiB0aGUgbGluZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRGcmFjdGlvbkJCb3goYmJveDogQkJveCwgZGlzcGxheTogYm9vbGVhbiwgdDogbnVtYmVyKSB7XG4gICAgICBjb25zdCBuYm94ID0gdGhpcy5jaGlsZE5vZGVzWzBdLmdldE91dGVyQkJveCgpO1xuICAgICAgY29uc3QgZGJveCA9IHRoaXMuY2hpbGROb2Rlc1sxXS5nZXRPdXRlckJCb3goKTtcbiAgICAgIGNvbnN0IHRleCA9IHRoaXMuZm9udC5wYXJhbXM7XG4gICAgICBjb25zdCBhID0gdGV4LmF4aXNfaGVpZ2h0O1xuICAgICAgY29uc3Qge1QsIHUsIHZ9ID0gdGhpcy5nZXRUVVYoZGlzcGxheSwgdCk7XG4gICAgICBiYm94LmNvbWJpbmUobmJveCwgMCwgYSArIFQgKyBNYXRoLm1heChuYm94LmQgKiBuYm94LnJzY2FsZSwgdSkpO1xuICAgICAgYmJveC5jb21iaW5lKGRib3gsIDAsIGEgLSBUIC0gTWF0aC5tYXgoZGJveC5oICogZGJveC5yc2NhbGUsIHYpKTtcbiAgICAgIGJib3gudyArPSAyICogdGhpcy5wYWQgKyAuMjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgZm9yIGRpc3BsYXktbW9kZSBmcmFjdGlvbnNcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdCAgICAgICAgIFRoZSB0aGlja25lc3Mgb2YgdGhlIGxpbmVcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICAgIFRoZSBleHBhbmRlZCBydWxlIHRoaWNrbmVzcyAoVCksIGFuZCBiYXNlbGluZSBvZmZzZXRzXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBudW1lcmF0b3IgYW5kIGRlbm9tdW5hdG9yICh1IGFuZCB2KVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRUVVYoZGlzcGxheTogYm9vbGVhbiwgdDogbnVtYmVyKToge1Q6IG51bWJlciwgdTogbnVtYmVyLCB2OiBudW1iZXJ9IHtcbiAgICAgIGNvbnN0IHRleCA9IHRoaXMuZm9udC5wYXJhbXM7XG4gICAgICBjb25zdCBhID0gdGV4LmF4aXNfaGVpZ2h0O1xuICAgICAgY29uc3QgVCA9IChkaXNwbGF5ID8gMy41IDogMS41KSAqIHQ7XG4gICAgICByZXR1cm4ge1Q6IChkaXNwbGF5ID8gMy41IDogMS41KSAqIHQsXG4gICAgICAgICAgICAgIHU6IChkaXNwbGF5ID8gdGV4Lm51bTEgOiB0ZXgubnVtMikgLSBhIC0gVCxcbiAgICAgICAgICAgICAgdjogKGRpc3BsYXkgPyB0ZXguZGVub20xIDogdGV4LmRlbm9tMikgKyBhIC0gVH07XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7QkJveH0gYmJveCAgICAgICAgVGhlIGJvdW5kaW5nIGJveCB0byBtb2RpZnlcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgZm9yIGRpc3BsYXktbW9kZSBmcmFjdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXRvcEJCb3goYmJveDogQkJveCwgZGlzcGxheTogYm9vbGVhbikge1xuICAgICAgY29uc3Qge3UsIHYsIG5ib3gsIGRib3h9ID0gdGhpcy5nZXRVVlEoZGlzcGxheSk7XG4gICAgICBiYm94LmNvbWJpbmUobmJveCwgMCwgdSk7XG4gICAgICBiYm94LmNvbWJpbmUoZGJveCwgMCwgLXYpO1xuICAgICAgYmJveC53ICs9IDIgKiB0aGlzLnBhZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgZm9yIGRpcGxheS1tb2RlIGZyYWN0aW9uc1xuICAgICAqIEByZXR1cm4ge09iamVjdH1cbiAgICAgKiAgICBUaGUgdmVydGljYWwgb2Zmc2V0cyBvZiB0aGUgbnVtZXJhdG9yICh1KSwgdGhlIGRlbm9taW5hdG9yICh2KSxcbiAgICAgKiAgICB0aGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHRoZSB0d28sIGFuZCB0aGUgYmJveGVzIHRoZW1zZWx2ZXMuXG4gICAgICovXG4gICAgcHVibGljIGdldFVWUShkaXNwbGF5OiBib29sZWFuKToge3U6IG51bWJlciwgdjogbnVtYmVyLCBxOiBudW1iZXIsIG5ib3g6IEJCb3gsIGRib3g6IEJCb3h9IHtcbiAgICAgIGNvbnN0IG5ib3ggPSB0aGlzLmNoaWxkTm9kZXNbMF0uZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCBkYm94ID0gdGhpcy5jaGlsZE5vZGVzWzFdLmdldE91dGVyQkJveCgpO1xuICAgICAgY29uc3QgdGV4ID0gdGhpcy5mb250LnBhcmFtcztcbiAgICAgIC8vXG4gICAgICAvLyAgSW5pdGlhbCBvZmZzZXRzICh1LCB2KVxuICAgICAgLy8gIE1pbmltdW0gc2VwYXJhdGlvbiAocClcbiAgICAgIC8vICBBY3R1YWwgc2VwYXJhdGlvbiB3aXRoIGluaXRpYWwgcG9zaXRpb25zIChxKVxuICAgICAgLy9cbiAgICAgIGxldCBbdSwgdl0gPSAoZGlzcGxheSA/IFt0ZXgubnVtMSwgdGV4LmRlbm9tMV0gOiBbdGV4Lm51bTMsIHRleC5kZW5vbTJdKTtcbiAgICAgIGxldCBwID0gKGRpc3BsYXkgPyA3IDogMykgKiB0ZXgucnVsZV90aGlja25lc3M7XG4gICAgICBsZXQgcSA9ICh1IC0gbmJveC5kICogbmJveC5zY2FsZSkgLSAoZGJveC5oICogZGJveC5zY2FsZSAtIHYpO1xuICAgICAgLy9cbiAgICAgIC8vICBJZiBhY3R1YWwgc2VwYXJhdGlvbiBpcyBsZXNzIHRoYW4gbWluaW11bSwgbW92ZSB0aGVtIGZhcnRoZXIgYXBhcnRcbiAgICAgIC8vXG4gICAgICBpZiAocSA8IHApIHtcbiAgICAgICAgdSArPSAocCAtIHEpIC8gMjtcbiAgICAgICAgdiArPSAocCAtIHEpIC8gMjtcbiAgICAgICAgcSA9IHA7XG4gICAgICB9XG4gICAgICByZXR1cm4ge3UsIHYsIHEsIG5ib3gsIGRib3h9O1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge0JCb3h9IGJib3ggICAgICAgIFRoZSBib3VuZG5nIGJveCB0byBtb2RpZnlcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgZm9yIGRpc3BsYXktbW9kZSBmcmFjdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QmV2ZWxsZWRCQm94KGJib3g6IEJCb3gsIGRpc3BsYXk6IGJvb2xlYW4pIHtcbiAgICAgIGNvbnN0IHt1LCB2LCBkZWx0YSwgbmJveCwgZGJveH0gPSB0aGlzLmdldEJldmVsRGF0YShkaXNwbGF5KTtcbiAgICAgIGNvbnN0IGxib3ggPSB0aGlzLmJldmVsLmdldE91dGVyQkJveCgpO1xuICAgICAgYmJveC5jb21iaW5lKG5ib3gsIDAsIHUpO1xuICAgICAgYmJveC5jb21iaW5lKGxib3gsIGJib3gudyAtIGRlbHRhIC8gMiwgMCk7XG4gICAgICBiYm94LmNvbWJpbmUoZGJveCwgYmJveC53IC0gZGVsdGEgLyAyLCB2KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgZm9yIGRpc3BsYXktc3R5bGUgZnJhY3Rpb25zXG4gICAgICogQHJldHVybiB7T2JqZWN0fSAgICAgICAgICBUaGUgaGVpZ2h0IChIKSBvZiB0aGUgYmV2ZWwsIGhvcml6b250YWwgb2ZmZXN0IChkZWx0YSlcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWwgb2Zmc2V0cyAodSBhbmQgdikgb2YgdGhlIHBhcnRzLCBhbmRcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmcgYm94ZXMgb2YgdGhlIHBhcnRzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCZXZlbERhdGEoZGlzcGxheTogYm9vbGVhbik6IHtcbiAgICAgIEg6IG51bWJlciwgZGVsdGE6IG51bWJlciwgdTogbnVtYmVyLCB2OiBudW1iZXIsIG5ib3g6IEJCb3gsIGRib3g6IEJCb3hcbiAgICB9IHtcbiAgICAgIGNvbnN0IG5ib3ggPSB0aGlzLmNoaWxkTm9kZXNbMF0uZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCBkYm94ID0gdGhpcy5jaGlsZE5vZGVzWzFdLmdldE91dGVyQkJveCgpO1xuICAgICAgY29uc3QgZGVsdGEgPSAoZGlzcGxheSA/IC40IDogLjE1KTtcbiAgICAgIGNvbnN0IEggPSBNYXRoLm1heChuYm94LnNjYWxlICogKG5ib3guaCArIG5ib3guZCksIGRib3guc2NhbGUgKiAoZGJveC5oICsgZGJveC5kKSkgKyAyICogZGVsdGE7XG4gICAgICBjb25zdCBhID0gdGhpcy5mb250LnBhcmFtcy5heGlzX2hlaWdodDtcbiAgICAgIGNvbnN0IHUgPSBuYm94LnNjYWxlICogKG5ib3guZCAtIG5ib3guaCkgLyAyICsgYSArIGRlbHRhO1xuICAgICAgY29uc3QgdiA9IGRib3guc2NhbGUgKiAoZGJveC5kIC0gZGJveC5oKSAvIDIgKyBhIC0gZGVsdGE7XG4gICAgICByZXR1cm4ge0gsIGRlbHRhLCB1LCB2LCBuYm94LCBkYm94fTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNhblN0cmV0Y2goX2RpcmVjdGlvbjogRElSRUNUSU9OKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gICBUcnVlIGlmIGluIGRpc3BsYXkgbW9kZSwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgICovXG4gICAgcHVibGljIGlzRGlzcGxheSgpOiBib29sZWFuIHtcbiAgICAgIGNvbnN0IHtkaXNwbGF5c3R5bGUsIHNjcmlwdGxldmVsfSA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldExpc3QoJ2Rpc3BsYXlzdHlsZScsICdzY3JpcHRsZXZlbCcpO1xuICAgICAgcmV0dXJuIGRpc3BsYXlzdHlsZSAmJiBzY3JpcHRsZXZlbCA9PT0gMDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0V3JhcFdpZHRoKGk6IG51bWJlcikge1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzO1xuICAgICAgaWYgKGF0dHJpYnV0ZXMuZ2V0KCdiZXZlbGxlZCcpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbaV0uZ2V0T3V0ZXJCQm94KCkudztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHcgPSB0aGlzLmdldEJCb3goKS53O1xuICAgICAgY29uc3QgdGhpY2tuZXNzID0gdGhpcy5sZW5ndGgyZW0oYXR0cmlidXRlcy5nZXQoJ2xpbmV0aGlja25lc3MnKSk7XG4gICAgICByZXR1cm4gdyAtICh0aGlja25lc3MgPyAuMiA6IDApIC0gIDIgKiB0aGlzLnBhZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q2hpbGRBbGlnbihpOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcztcbiAgICAgIHJldHVybiAoYXR0cmlidXRlcy5nZXQoJ2JldmVsbGVkJykgPyAnbGVmdCcgOiBhdHRyaWJ1dGVzLmdldChbJ251bWFsaWduJywgJ2Rlbm9tYWxpZ24nXVtpXSkgYXMgc3RyaW5nKTtcbiAgICB9XG5cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNZnJhYyBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgQWJzdHJhY3RNbWxCYXNlTm9kZSwgQXR0cmlidXRlTGlzdH0gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1mcmFjIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sQmFzZU5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1mcmFjIGV4dGVuZHMgQWJzdHJhY3RNbWxCYXNlTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sQmFzZU5vZGUuZGVmYXVsdHMsXG4gICAgbGluZXRoaWNrbmVzczogJ21lZGl1bScsXG4gICAgbnVtYWxpZ246ICdjZW50ZXInLFxuICAgIGRlbm9tYWxpZ246ICdjZW50ZXInLFxuICAgIGJldmVsbGVkOiBmYWxzZVxuICB9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21mcmFjJztcbiAgfVxuXG4gIC8qKlxuICAgKiA8bWZyYWM+IHJlcXVpcmVzIHR3byBjaGlsZHJlblxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgYXJpdHkoKSB7XG4gICAgcmV0dXJuIDI7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNoaWxkcmVuIG9mIDxtZnJhYz4gY2FuIGluY2x1ZGUgbGluZSBicmVha3NcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpbmVicmVha0NvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGNoaWxkcmVuIHNlcGFyYXRlbHlcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0VGVYY2xhc3MocHJldjogTW1sTm9kZSkge1xuICAgIHRoaXMuZ2V0UHJldkNsYXNzKHByZXYpO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBjaGlsZC5zZXRUZVhjbGFzcyhudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRqdXN0IHRoZSBkaXNwbGF5IGxldmVsLCBhbmQgdXNlIHByaW1lIHN0eWxlIGluIGRlbm9taW5hdG9yXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHNldENoaWxkSW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVMaXN0LCBkaXNwbGF5OiBib29sZWFuLCBsZXZlbDogbnVtYmVyLCBwcmltZTogYm9vbGVhbikge1xuICAgIGlmICghZGlzcGxheSB8fCBsZXZlbCA+IDApIHtcbiAgICAgIGxldmVsKys7XG4gICAgfVxuICAgIHRoaXMuY2hpbGROb2Rlc1swXS5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGZhbHNlLCBsZXZlbCwgcHJpbWUpO1xuICAgIHRoaXMuY2hpbGROb2Rlc1sxXS5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGZhbHNlLCBsZXZlbCwgdHJ1ZSk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdtZnJhYyB3cmFwcGVyIGZvciB0aGUgTW1sTWZyYWMgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXIsIFNWR0NvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTWZyYWNNaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21mcmFjLmpzJztcbmltcG9ydCB7TW1sTWZyYWN9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tZnJhYy5qcyc7XG5pbXBvcnQge1NWR21vfSBmcm9tICcuL21vLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbWZyYWMgd3JhcHBlciBmb3IgdGhlIE1tbE1mcmFjIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNWR21mcmFjPE4sIFQsIEQ+IGV4dGVuZHMgQ29tbW9uTWZyYWNNaXhpbjxTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgbWZyYWMgd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTWZyYWMucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIEFuIG1vIGVsZW1lbnQgdXNlZCB0byByZW5kZXIgYmV2ZWxsZWQgZnJhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgYmV2ZWw6IFNWR21vPE4sIFQsIEQ+O1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU1ZHKHBhcmVudDogTikge1xuICAgIHRoaXMuc3RhbmRhcmRTVkdub2RlKHBhcmVudCk7XG4gICAgY29uc3Qge2xpbmV0aGlja25lc3MsIGJldmVsbGVkfSA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldExpc3QoJ2xpbmV0aGlja25lc3MnLCAnYmV2ZWxsZWQnKTtcbiAgICBjb25zdCBkaXNwbGF5ID0gdGhpcy5pc0Rpc3BsYXkoKTtcbiAgICBpZiAoYmV2ZWxsZWQpIHtcbiAgICAgIHRoaXMubWFrZUJldmVsbGVkKGRpc3BsYXkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCB0aGlja25lc3MgPSB0aGlzLmxlbmd0aDJlbShTdHJpbmcobGluZXRoaWNrbmVzcyksIC4wNik7XG4gICAgICBpZiAodGhpY2tuZXNzID09PSAwKSB7XG4gICAgICAgIHRoaXMubWFrZUF0b3AoZGlzcGxheSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm1ha2VGcmFjdGlvbihkaXNwbGF5LCB0aGlja25lc3MpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzcGxheSAgVHJ1ZSB3aGVuIGZyYWN0aW9uIGlzIGluIGRpc3BsYXkgbW9kZVxuICAgKiBAcGFyYW0ge251bWJlcn0gdCAgICAgICAgIFRoZSBydWxlIGxpbmUgdGhpY2tuZXNzXG4gICAqL1xuICBwcm90ZWN0ZWQgbWFrZUZyYWN0aW9uKGRpc3BsYXk6IGJvb2xlYW4sIHQ6IG51bWJlcikge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuZWxlbWVudDtcbiAgICBjb25zdCB7bnVtYWxpZ24sIGRlbm9tYWxpZ259ID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0TGlzdCgnbnVtYWxpZ24nLCAnZGVub21hbGlnbicpO1xuICAgIGNvbnN0IFtudW0sIGRlbl0gPSB0aGlzLmNoaWxkTm9kZXM7XG4gICAgY29uc3QgbmJveCA9IG51bS5nZXRPdXRlckJCb3goKTtcbiAgICBjb25zdCBkYm94ID0gZGVuLmdldE91dGVyQkJveCgpO1xuXG4gICAgY29uc3QgdGV4ID0gdGhpcy5mb250LnBhcmFtcztcbiAgICBjb25zdCBhID0gdGV4LmF4aXNfaGVpZ2h0O1xuICAgIGNvbnN0IGQgPSAuMTsgLy8gbGluZSdzIGV4dHJhIGxlZnQtIGFuZCByaWdodC1wYWRkaW5nXG4gICAgY29uc3QgcGFkID0gKHRoaXMubm9kZS5nZXRQcm9wZXJ0eSgnd2l0aERlbGltcycpID8gMCA6IHRleC5udWxsZGVsaW1pdGVyc3BhY2UpO1xuICAgIGNvbnN0IFcgPSBNYXRoLm1heCgobmJveC5MICsgbmJveC53ICsgbmJveC5SKSAqIG5ib3gucnNjYWxlLFxuICAgICAgICAgICAgICAgICAgICAgICAoZGJveC5MICsgZGJveC53ICsgZGJveC5SKSAqIGRib3gucnNjYWxlKTtcbiAgICBjb25zdCBueCA9IHRoaXMuZ2V0QWxpZ25YKFcsIG5ib3gsIG51bWFsaWduIGFzIHN0cmluZykgKyBkICsgcGFkO1xuICAgIGNvbnN0IGR4ID0gdGhpcy5nZXRBbGlnblgoVywgZGJveCwgZGVub21hbGlnbiBhcyBzdHJpbmcpICsgZCArIHBhZDtcbiAgICBjb25zdCB7VCwgdSwgdn0gPSB0aGlzLmdldFRVVihkaXNwbGF5LCB0KTtcblxuICAgIG51bS50b1NWRyhzdmcpO1xuICAgIG51bS5wbGFjZShueCwgYSArIFQgKyBNYXRoLm1heChuYm94LmQgKiBuYm94LnJzY2FsZSwgdSkpO1xuICAgIGRlbi50b1NWRyhzdmcpO1xuICAgIGRlbi5wbGFjZShkeCwgYSAtIFQgLSBNYXRoLm1heChkYm94LmggKiBkYm94LnJzY2FsZSwgdikpO1xuXG4gICAgdGhpcy5hZGFwdG9yLmFwcGVuZChzdmcsIHRoaXMuc3ZnKCdyZWN0Jywge1xuICAgICAgd2lkdGg6IHRoaXMuZml4ZWQoVyArIDIgKiBkKSwgaGVpZ2h0OiB0aGlzLmZpeGVkKHQpLFxuICAgICAgeDogdGhpcy5maXhlZChwYWQpLCB5OiB0aGlzLmZpeGVkKGEgLSB0IC8gMilcbiAgICB9KSk7XG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRydWUgd2hlbiBmcmFjdGlvbiBpcyBpbiBkaXNwbGF5IG1vZGVcbiAgICovXG4gIHByb3RlY3RlZCBtYWtlQXRvcChkaXNwbGF5OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50O1xuICAgIGNvbnN0IHtudW1hbGlnbiwgZGVub21hbGlnbn0gPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXRMaXN0KCdudW1hbGlnbicsICdkZW5vbWFsaWduJyk7XG4gICAgY29uc3QgW251bSwgZGVuXSA9IHRoaXMuY2hpbGROb2RlcztcbiAgICBjb25zdCBuYm94ID0gbnVtLmdldE91dGVyQkJveCgpO1xuICAgIGNvbnN0IGRib3ggPSBkZW4uZ2V0T3V0ZXJCQm94KCk7XG5cbiAgICBjb25zdCB0ZXggPSB0aGlzLmZvbnQucGFyYW1zO1xuICAgIGNvbnN0IHBhZCA9ICh0aGlzLm5vZGUuZ2V0UHJvcGVydHkoJ3dpdGhEZWxpbXMnKSA/IDAgOiB0ZXgubnVsbGRlbGltaXRlcnNwYWNlKTtcbiAgICBjb25zdCBXID0gTWF0aC5tYXgoKG5ib3guTCArIG5ib3gudyArIG5ib3guUikgKiBuYm94LnJzY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgKGRib3guTCArIGRib3gudyArIGRib3guUikgKiBkYm94LnJzY2FsZSk7XG4gICAgY29uc3QgbnggPSB0aGlzLmdldEFsaWduWChXLCBuYm94LCBudW1hbGlnbiBhcyBzdHJpbmcpICsgcGFkO1xuICAgIGNvbnN0IGR4ID0gdGhpcy5nZXRBbGlnblgoVywgZGJveCwgZGVub21hbGlnbiBhcyBzdHJpbmcpICsgcGFkO1xuICAgIGNvbnN0IHt1LCB2fSA9IHRoaXMuZ2V0VVZRKGRpc3BsYXkpO1xuXG4gICAgbnVtLnRvU1ZHKHN2Zyk7XG4gICAgbnVtLnBsYWNlKG54LCB1KTtcbiAgICBkZW4udG9TVkcoc3ZnKTtcbiAgICBkZW4ucGxhY2UoZHgsIC12KTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZGlzcGxheSAgVHJ1ZSB3aGVuIGZyYWN0aW9uIGlzIGluIGRpc3BsYXkgbW9kZVxuICAgKi9cbiAgcHJvdGVjdGVkIG1ha2VCZXZlbGxlZChkaXNwbGF5OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5lbGVtZW50O1xuICAgIGNvbnN0IFtudW0sIGRlbl0gPSB0aGlzLmNoaWxkTm9kZXM7XG4gICAgY29uc3Qge3UsIHYsIGRlbHRhLCBuYm94LCBkYm94fSA9IHRoaXMuZ2V0QmV2ZWxEYXRhKGRpc3BsYXkpO1xuICAgIGNvbnN0IHcgPSAobmJveC5MICsgbmJveC53ICsgbmJveC5SKSAqIG5ib3gucnNjYWxlO1xuXG4gICAgbnVtLnRvU1ZHKHN2Zyk7XG4gICAgdGhpcy5iZXZlbC50b1NWRyhzdmcpO1xuICAgIGRlbi50b1NWRyhzdmcpO1xuXG4gICAgbnVtLnBsYWNlKG5ib3guTCAqIG5ib3gucnNjYWxlLCB1KTtcbiAgICB0aGlzLmJldmVsLnBsYWNlKHcgLSBkZWx0YSAvIDIsIDApO1xuICAgIGRlbi5wbGFjZSh3ICsgdGhpcy5iZXZlbC5nZXRPdXRlckJCb3goKS53ICsgZGJveC5MICogZGJveC5yc2NhbGUgLSBkZWx0YSwgdik7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25Nc3FydCB3cmFwcGVyIGZvciB0aGUgTW1sTXNxcnQgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0FueVdyYXBwZXIsIFdyYXBwZXJDb25zdHJ1Y3RvciwgQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25Nb30gZnJvbSAnLi9tby5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uLy4uL3V0aWwvQkJveC5qcyc7XG5pbXBvcnQge0RJUkVDVElPTn0gZnJvbSAnLi4vRm9udERhdGEuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Nc3FydCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25Nc3FydCBleHRlbmRzIEFueVdyYXBwZXIge1xuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBiYXNlIG9mIHRoZSByb290IGluIGNoaWxkTm9kZXNcbiAgICovXG4gIHJlYWRvbmx5IGJhc2U6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSBzdXJkIGluIGNoaWxkTm9kZXNcbiAgICovXG4gIHJlYWRvbmx5IHN1cmQ6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGluZGV4IG9mIHRoZSByb290IGluIGNoaWxkTm9kZXMgKG9yIG51bGwgaWYgbm9uZSlcbiAgICovXG4gIHJlYWRvbmx5IHJvb3Q6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIHJlcXVlc3RlZCBoZWlnaHQgb2YgdGhlIHN0cmV0Y2hlZCBzdXJkIGNoYXJhY3RlclxuICAgKi9cbiAgc3VyZEg6IG51bWJlcjtcblxuICAvKipcbiAgICogQ29tYmluZSB0aGUgYm91bmRpbmcgYm94IG9mIHRoZSByb290IChvdmVycmlkZGVuIGluIG1yb290KVxuICAgKlxuICAgKiBAcGFyYW0ge0JCb3h9IGJib3ggIFRoZSBib3VuZGluZyBib3ggc28gZmFyXG4gICAqIEBwYXJhbSB7QkJveH0gc2JveCAgVGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgc3VyZFxuICAgKiBAcGFyYW0ge251bWJlcn0gSCAgIFRoZSBoZWlnaHQgb2YgdGhlIHJvb3QgYXMgYSB3aG9sZVxuICAgKi9cbiAgY29tYmluZVJvb3RCQm94KGJib3g6IEJCb3gsIHNib3g6IEJCb3gsIEg6IG51bWJlcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QkJveH0gc2JveCAgVGhlIGJvdW5kaW5nIGJveCBmb3IgdGhlIHN1cmQgY2hhcmFjdGVyXG4gICAqIEByZXR1cm4ge251bWJlcltdfSAgVGhlIHAsIHEsIGFuZCB4IHZhbHVlcyBmb3IgdGhlIFRlWCBsYXlvdXQgY29tcHV0YXRpb25zXG4gICAqL1xuICBnZXRQUShzYm94OiBCQm94KTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QkJveH0gc2JveCAgVGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgc3VyZFxuICAgKiBAcGFyYW0ge251bWJlcn0gSCAgIFRoZSBoZWlnaHQgb2YgdGhlIHJvb3QgYXMgYSB3aG9sZVxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gIFRoZSB4IG9mZnNldCBvZiB0aGUgc3VyZCwgYW5kIHRoZSBoZWlnaHQsIHggb2Zmc2V0LCBhbmQgc2NhbGUgb2YgdGhlIHJvb3RcbiAgICovXG4gIGdldFJvb3REaW1lbnMoc2JveDogQkJveCwgSDogTnVtYmVyKTogbnVtYmVyW107XG5cbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25Nc3FydCBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBNc3FydENvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8Q29tbW9uTXNxcnQ+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Nc3FydCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXNxcnQgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk1zcXJ0TWl4aW48VCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IE1zcXJ0Q29uc3RydWN0b3IgJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gIFRoZSBpbmRleCBvZiB0aGUgYmFzZSBvZiB0aGUgcm9vdCBpbiBjaGlsZE5vZGVzXG4gICAgICovXG4gICAgZ2V0IGJhc2UoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gIFRoZSBpbmRleCBvZiB0aGUgc3VyZCBpbiBjaGlsZE5vZGVzXG4gICAgICovXG4gICAgZ2V0IHN1cmQoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gIFRoZSBpbmRleCBvZiB0aGUgcm9vdCBpbiBjaGlsZE5vZGVzIChvciBudWxsIGlmIG5vbmUpXG4gICAgICovXG4gICAgZ2V0IHJvb3QoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSByZXF1ZXN0ZWQgaGVpZ2h0IG9mIHRoZSBzdHJldGNoZWQgc3VyZCBjaGFyYWN0ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgc3VyZEg6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIEFkZCB0aGUgc3VyZCBjaGFyYWN0ZXIgc28gd2UgY2FuIGRpc3BsYXkgaXQgbGF0ZXJcbiAgICAgKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIGNvbnN0IHN1cmQgPSB0aGlzLmNyZWF0ZU1vKCdcXHUyMjFBJyk7XG4gICAgICBzdXJkLmNhblN0cmV0Y2goRElSRUNUSU9OLlZlcnRpY2FsKTtcbiAgICAgIGNvbnN0IHtoLCBkfSA9IHRoaXMuY2hpbGROb2Rlc1t0aGlzLmJhc2VdLmdldE91dGVyQkJveCgpO1xuICAgICAgY29uc3QgdCA9IHRoaXMuZm9udC5wYXJhbXMucnVsZV90aGlja25lc3M7XG4gICAgICBjb25zdCBwID0gKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnZGlzcGxheXN0eWxlJykgPyB0aGlzLmZvbnQucGFyYW1zLnhfaGVpZ2h0IDogdCk7XG4gICAgICB0aGlzLnN1cmRIID0gaCArIGQgKyAyICogdCArIHAgLyA0O1xuICAgICAgKHN1cmQgYXMgQ29tbW9uTW8pLmdldFN0cmV0Y2hlZFZhcmlhbnQoW3RoaXMuc3VyZEggLSBkLCBkXSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZU1vKHRleHQ6IHN0cmluZykge1xuICAgICAgY29uc3Qgbm9kZSA9IHN1cGVyLmNyZWF0ZU1vKHRleHQpO1xuICAgICAgdGhpcy5jaGlsZE5vZGVzLnB1c2gobm9kZSk7XG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCwgcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHN1cmRib3ggPSB0aGlzLmNoaWxkTm9kZXNbdGhpcy5zdXJkXS5nZXRCQm94KCk7XG4gICAgICBjb25zdCBiYXNlYm94ID0gbmV3IEJCb3godGhpcy5jaGlsZE5vZGVzW3RoaXMuYmFzZV0uZ2V0T3V0ZXJCQm94KCkpO1xuICAgICAgY29uc3QgcSA9IHRoaXMuZ2V0UFEoc3VyZGJveClbMV07XG4gICAgICBjb25zdCB0ID0gdGhpcy5mb250LnBhcmFtcy5ydWxlX3RoaWNrbmVzcztcbiAgICAgIGNvbnN0IEggPSBiYXNlYm94LmggKyBxICsgdDtcbiAgICAgIGNvbnN0IFt4XSA9IHRoaXMuZ2V0Um9vdERpbWVucyhzdXJkYm94LCBIKTtcbiAgICAgIGJib3guaCA9IEggKyB0O1xuICAgICAgdGhpcy5jb21iaW5lUm9vdEJCb3goYmJveCwgc3VyZGJveCwgSCk7XG4gICAgICBiYm94LmNvbWJpbmUoc3VyZGJveCwgeCwgSCAtIHN1cmRib3guaCk7XG4gICAgICBiYm94LmNvbWJpbmUoYmFzZWJveCwgeCArIHN1cmRib3gudywgMCk7XG4gICAgICBiYm94LmNsZWFuKCk7XG4gICAgICB0aGlzLnNldENoaWxkUFdpZHRocyhyZWNvbXB1dGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbWJpbmUgdGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgcm9vdCAob3ZlcnJpZGRlbiBpbiBtcm9vdClcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QkJveH0gYmJveCAgVGhlIGJvdW5kaW5nIGJveCBzbyBmYXJcbiAgICAgKiBAcGFyYW0ge0JCb3h9IHNib3ggIFRoZSBib3VuZGluZyBib3ggb2YgdGhlIHN1cmRcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gSCAgIFRoZSBoZWlnaHQgb2YgdGhlIHJvb3QgYXMgYSB3aG9sZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb21iaW5lUm9vdEJCb3goX2Jib3g6IEJCb3gsIF9zYm94OiBCQm94LCBfSDogbnVtYmVyKSB7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtCQm94fSBzYm94ICBUaGUgYm91bmRpbmcgYm94IGZvciB0aGUgc3VyZCBjaGFyYWN0ZXJcbiAgICAgKiBAcmV0dXJuIHtbbnVtYmVyLCBudW1iZXJdfSAgVGhlIHAsIHEsIGFuZCB4IHZhbHVlcyBmb3IgdGhlIFRlWCBsYXlvdXQgY29tcHV0YXRpb25zXG4gICAgICovXG4gICAgcHVibGljIGdldFBRKHNib3g6IEJCb3gpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgIGNvbnN0IHQgPSB0aGlzLmZvbnQucGFyYW1zLnJ1bGVfdGhpY2tuZXNzO1xuICAgICAgY29uc3QgcCA9ICh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2Rpc3BsYXlzdHlsZScpID8gdGhpcy5mb250LnBhcmFtcy54X2hlaWdodCA6IHQpO1xuICAgICAgY29uc3QgcSA9IChzYm94LmggKyBzYm94LmQgPiB0aGlzLnN1cmRIID9cbiAgICAgICAgICAgICAgICAgKChzYm94LmggKyBzYm94LmQpIC0gKHRoaXMuc3VyZEggLSAyICogdCAtIHAgLyAyKSkgLyAyIDpcbiAgICAgICAgICAgICAgICAgdCArIHAgLyA0KTtcbiAgICAgIHJldHVybiBbcCwgcV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtCQm94fSBzYm94ICBUaGUgYm91bmRpbmcgYm94IG9mIHRoZSBzdXJkXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IEggICBUaGUgaGVpZ2h0IG9mIHRoZSByb290IGFzIGEgd2hvbGVcbiAgICAgKiBAcmV0dXJuIHtbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXX0gVGhlIHggb2Zmc2V0IG9mIHRoZSBzdXJkLCBhbmRcbiAgICAgKiAgICAgdGhlIGhlaWdodCwgeCBvZmZzZXQsIGFuZCBzY2FsZSBvZiB0aGUgcm9vdFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRSb290RGltZW5zKF9zYm94OiBCQm94LCBfSDogbnVtYmVyKTogW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl0ge1xuICAgICAgcmV0dXJuIFswLCAwLCAwLCAwXTtcbiAgICB9XG5cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNc3FydCBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgQWJzdHJhY3RNbWxOb2RlLCBBdHRyaWJ1dGVMaXN0LCBURVhDTEFTU30gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1zcXJ0IG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTXNxcnQgZXh0ZW5kcyBBYnN0cmFjdE1tbE5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbE5vZGUuZGVmYXVsdHNcbiAgfTtcblxuICAvKipcbiAgICogVGVYIGNsYXNzIGlzIE9SRFxuICAgKi9cbiAgcHJvdGVjdGVkIHRleGNsYXNzID0gVEVYQ0xBU1MuT1JEO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21zcXJ0JztcbiAgfVxuXG4gIC8qKlxuICAgKiA8bXNxcnQ+IGhhcyBhbiBpbmZlcnJlZCBtcm93XG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogPG1zcXJ0PiBjYW4gY29udGFpbiBsaW5lIGJyZWFrc1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgbGluZWJyZWFrQ29udGFpbmVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldFRlWGNsYXNzKHByZXY6IE1tbE5vZGUpIHtcbiAgICB0aGlzLmdldFByZXZDbGFzcyhwcmV2KTtcbiAgICB0aGlzLmNoaWxkTm9kZXNbMF0uc2V0VGVYY2xhc3MobnVsbCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRlbnRzIG9mIHNxcnQgYXJlIGluIFRlWCBwcmltZSBzdHlsZS5cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q2hpbGRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZUxpc3QsIGRpc3BsYXk6IGJvb2xlYW4sIGxldmVsOiBudW1iZXIsIF9wcmltZTogYm9vbGVhbikge1xuICAgIHRoaXMuY2hpbGROb2Rlc1swXS5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGRpc3BsYXksIGxldmVsLCB0cnVlKTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR21zcXJ0IHdyYXBwZXIgZm9yIHRoZSBNbWxNc3FydCBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7U1ZHV3JhcHBlciwgU1ZHQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25Nc3FydE1peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbXNxcnQuanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuaW1wb3J0IHtNbWxNc3FydH0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21zcXJ0LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbXNxcnQgd3JhcHBlciBmb3IgdGhlIE1tbE1zcXJ0IG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNWR21zcXJ0PE4sIFQsIEQ+IGV4dGVuZHMgQ29tbW9uTXNxcnRNaXhpbjxTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgbXNxcnQgd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTXNxcnQucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIEluZGVudCBkdWUgdG8gcm9vdFxuICAgKi9cbiAgcHVibGljIGR4OiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBjb25zdCBzdXJkID0gdGhpcy5jaGlsZE5vZGVzW3RoaXMuc3VyZF07XG4gICAgY29uc3QgYmFzZSA9IHRoaXMuY2hpbGROb2Rlc1t0aGlzLmJhc2VdO1xuICAgIGNvbnN0IHJvb3QgPSAodGhpcy5yb290ID8gdGhpcy5jaGlsZE5vZGVzW3RoaXMucm9vdF0gOiBudWxsKTtcbiAgICAvL1xuICAgIC8vICBHZXQgdGhlIHBhcmFtZXRlcnMgZm9yIHRoZSBzcGFjaW5nIG9mIHRoZSBwYXJ0c1xuICAgIC8vXG4gICAgY29uc3Qgc2JveCA9IHN1cmQuZ2V0QkJveCgpO1xuICAgIGNvbnN0IGJib3ggPSBiYXNlLmdldE91dGVyQkJveCgpO1xuICAgIGNvbnN0IHEgPSB0aGlzLmdldFBRKHNib3gpWzFdO1xuICAgIGNvbnN0IHQgPSB0aGlzLmZvbnQucGFyYW1zLnJ1bGVfdGhpY2tuZXNzICogdGhpcy5iYm94LnNjYWxlO1xuICAgIGNvbnN0IEggPSBiYm94LmggKyBxICsgdDtcbiAgICAvL1xuICAgIC8vICBDcmVhdGUgdGhlIFNWRyBzdHJ1Y3R1cmUgZm9yIHRoZSByb290XG4gICAgLy9cbiAgICBjb25zdCBTVkcgPSB0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpO1xuICAgIGNvbnN0IEJBU0UgPSB0aGlzLmFkYXB0b3IuYXBwZW5kKFNWRywgdGhpcy5zdmcoJ2cnKSk7XG4gICAgLy9cbiAgICAvLyAgUGxhY2UgdGhlIGNoaWxkcmVuXG4gICAgLy9cbiAgICB0aGlzLmFkZFJvb3QoU1ZHLCByb290LCBzYm94LCBIKTtcbiAgICBzdXJkLnRvU1ZHKFNWRyk7XG4gICAgc3VyZC5wbGFjZSh0aGlzLmR4LCBIIC0gc2JveC5oKTtcbiAgICBiYXNlLnRvU1ZHKEJBU0UpO1xuICAgIGJhc2UucGxhY2UodGhpcy5keCArIHNib3gudywgMCk7XG4gICAgdGhpcy5hZGFwdG9yLmFwcGVuZChTVkcsIHRoaXMuc3ZnKCdyZWN0Jywge1xuICAgICAgd2lkdGg6IHRoaXMuZml4ZWQoYmJveC53KSwgaGVpZ2h0OiB0aGlzLmZpeGVkKHQpLFxuICAgICAgeDogdGhpcy5maXhlZCh0aGlzLmR4ICsgc2JveC53KSwgeTogdGhpcy5maXhlZChIIC0gdClcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHJvb3QgSFRNTCAob3ZlcnJpZGRlbiBpbiBtcm9vdClcbiAgICpcbiAgICogQHBhcmFtIHtOfSBST09UICAgICAgICAgICBUaGUgY29udGFpbmVyIGZvciB0aGUgcm9vdFxuICAgKiBAcGFyYW0ge1NWR1dyYXBwZXJ9IHJvb3QgIFRoZSB3cmFwcGVkIE1NTCByb290IGNvbnRlbnRcbiAgICogQHBhcmFtIHtCQm94fSBzYm94ICAgICAgICBUaGUgYm91bmRpbmcgYm94IG9mIHRoZSBzdXJkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBIICAgICAgICAgVGhlIGhlaWdodCBvZiB0aGUgcm9vdCBhcyBhIHdob2xlXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkUm9vdChfUk9PVDogTiwgX3Jvb3Q6IFNWR1dyYXBwZXI8TiwgVCwgRD4sIF9zYm94OiBCQm94LCBfSDogbnVtYmVyKSB7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25Ncm9vdCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXJvb3Qgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0NvbnN0cnVjdG9yfSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk1zcXJ0LCBNc3FydENvbnN0cnVjdG9yfSBmcm9tICcuL21zcXJ0LmpzJztcbmltcG9ydCB7Q29tbW9uTW99IGZyb20gJy4vbW8uanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Ncm9vdCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25Ncm9vdCBleHRlbmRzIENvbW1vbk1zcXJ0IHtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25Ncm9vdCBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBNcm9vdENvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8Q29tbW9uTXJvb3Q+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Ncm9vdCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXJvb3Qgb2JqZWN0IChleHRlbmRzIENvbW1vbk1zcXJ0KVxuICpcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25Ncm9vdE1peGluPFQgZXh0ZW5kcyBNc3FydENvbnN0cnVjdG9yPihCYXNlOiBUKTogTXJvb3RDb25zdHJ1Y3RvciAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgZ2V0IHN1cmQoKSB7XG4gICAgICByZXR1cm4gMjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBnZXQgcm9vdCgpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNvbWJpbmVSb290QkJveChCQk9YOiBCQm94LCBzYm94OiBCQm94LCBIOiBudW1iZXIpIHtcbiAgICAgIGNvbnN0IGJib3ggPSB0aGlzLmNoaWxkTm9kZXNbdGhpcy5yb290XS5nZXRPdXRlckJCb3goKTtcbiAgICAgIGNvbnN0IGggPSB0aGlzLmdldFJvb3REaW1lbnMoc2JveCwgSClbMV07XG4gICAgICBCQk9YLmNvbWJpbmUoYmJveCwgMCwgaCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldFJvb3REaW1lbnMoc2JveDogQkJveCwgSDogbnVtYmVyKSB7XG4gICAgICBjb25zdCBzdXJkID0gdGhpcy5jaGlsZE5vZGVzW3RoaXMuc3VyZF0gYXMgQ29tbW9uTW87XG4gICAgICBjb25zdCBiYm94ID0gdGhpcy5jaGlsZE5vZGVzW3RoaXMucm9vdF0uZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCBvZmZzZXQgPSAoc3VyZC5zaXplIDwgMCA/IC41IDogLjYpICogc2JveC53O1xuICAgICAgY29uc3Qge3csIHJzY2FsZX0gPSBiYm94O1xuICAgICAgY29uc3QgVyA9IE1hdGgubWF4KHcsIG9mZnNldCAvIHJzY2FsZSk7XG4gICAgICBjb25zdCBkeCA9IE1hdGgubWF4KDAsIFcgLSB3KTtcbiAgICAgIGNvbnN0IGggPSB0aGlzLnJvb3RIZWlnaHQoYmJveCwgc2JveCwgc3VyZC5zaXplLCBIKTtcbiAgICAgIGNvbnN0IHggPSBXICogcnNjYWxlIC0gb2Zmc2V0O1xuICAgICAgcmV0dXJuIFt4LCBoLCBkeF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtCQm94fSByYm94ICAgICAgVGhlIGJib3ggb2YgdGhlIHJvb3RcbiAgICAgKiBAcGFyYW0ge0JCb3h9IHNib3ggICAgICBUaGUgYmJveCBvZiB0aGUgc3VyZFxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBzaXplICAgIFRoZSBzaXplIG9mIHRoZSBzdXJkXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IEggICAgICAgVGhlIGhlaWdodCBvZiB0aGUgcm9vdCBhcyBhIHdob2xlXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgVGhlIGhlaWdodCBvZiB0aGUgcm9vdCB3aXRoaW4gdGhlIHN1cmRcbiAgICAgKi9cbiAgICBwdWJsaWMgcm9vdEhlaWdodChyYm94OiBCQm94LCBzYm94OiBCQm94LCBzaXplOiBudW1iZXIsIEg6IG51bWJlcik6IG51bWJlciB7XG4gICAgICBjb25zdCBoID0gc2JveC5oICsgc2JveC5kO1xuICAgICAgY29uc3QgYiA9IChzaXplIDwgMCA/IDEuOSA6IC41NSAqIGgpIC0gKGggLSBIKTtcbiAgICAgIHJldHVybiBiICsgTWF0aC5tYXgoMCwgcmJveC5kICogcmJveC5yc2NhbGUpO1xuICAgIH1cblxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE1yb290IG5vZGVcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtNbWxOb2RlLCBBYnN0cmFjdE1tbE5vZGUsIEF0dHJpYnV0ZUxpc3QsIFRFWENMQVNTfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTXJvb3Qgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxOb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNcm9vdCBleHRlbmRzIEFic3RyYWN0TW1sTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sTm9kZS5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBUZVggY2xhc3MgaXMgT1JEXG4gICAqL1xuICBwcm90ZWN0ZWQgdGV4Y2xhc3MgPSBURVhDTEFTUy5PUkQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbXJvb3QnO1xuICB9XG5cbiAgLyoqXG4gICAqIDxtcm9vdD4gcmVxdWlyZXMgdHdvIGNoaWxkcmVuXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIFRlWCBjbGFzcyBmb3IgdGhlIGNvbnRlbnQgb2YgdGhlIHJvb3QgYW5kIHRoZSByb290IHNlcGFyYXRlbHkuXG4gICAqIFJldHVybiBvdXJzZWxmIGFzIHRoZSBwcmV2aW91cyBpdGVtLlxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKSB7XG4gICAgdGhpcy5nZXRQcmV2Q2xhc3MocHJldik7XG4gICAgdGhpcy5jaGlsZE5vZGVzWzBdLnNldFRlWGNsYXNzKG51bGwpO1xuICAgIHRoaXMuY2hpbGROb2Rlc1sxXS5zZXRUZVhjbGFzcyhudWxsKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgdGhlIGNoaWxkcmVuIGRpc3BsYXkvbGV2ZWwvcHJpbWUgZm9yIHRoZSBiYXNlIGFuZCByb290LlxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RlY3RlZCBzZXRDaGlsZEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCwgZGlzcGxheTogYm9vbGVhbiwgbGV2ZWw6IG51bWJlciwgcHJpbWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNoaWxkTm9kZXNbMF0uc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBkaXNwbGF5LCBsZXZlbCwgdHJ1ZSk7XG4gICAgdGhpcy5jaGlsZE5vZGVzWzFdLnNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgZmFsc2UsIGxldmVsICsgMiwgcHJpbWUpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgU1ZHTXJvb3Qgd3JhcHBlciBmb3IgdGhlIE1tbE1yb290IG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge1NWR21zcXJ0fSBmcm9tICcuL21zcXJ0LmpzJztcbmltcG9ydCB7Q29tbW9uTXJvb3RNaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21yb290LmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcbmltcG9ydCB7TW1sTXJvb3R9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tcm9vdC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIFNWR21yb290IHdyYXBwZXIgZm9yIHRoZSBNbWxNcm9vdCBvYmplY3QgKGV4dGVuZHMgU1ZHbXNxcnQpXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU1ZHbXJvb3Q8TiwgVCwgRD4gZXh0ZW5kcyBDb21tb25Ncm9vdE1peGluPENvbnN0cnVjdG9yPFNWR21zcXJ0PGFueSwgYW55LCBhbnk+Pj4oU1ZHbXNxcnQpIHtcblxuICAvKipcbiAgICogVGhlIG1yb290IHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE1yb290LnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RlY3RlZCBhZGRSb290KFJPT1Q6IE4sIHJvb3Q6IFNWR1dyYXBwZXI8TiwgVCwgRD4sIHNib3g6IEJCb3gsIEg6IG51bWJlcikge1xuICAgIHJvb3QudG9TVkcoUk9PVCk7XG4gICAgY29uc3QgW3gsIGgsIGR4XSA9IHRoaXMuZ2V0Um9vdERpbWVucyhzYm94LCBIKTtcbiAgICBjb25zdCBiYm94ID0gcm9vdC5nZXRPdXRlckJCb3goKTtcbiAgICByb290LnBsYWNlKGR4ICogYmJveC5yc2NhbGUsIGgpO1xuICAgIHRoaXMuZHggPSB4O1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ29tbW9uTWZlbmNlZCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWZlbmNlZCBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QW55V3JhcHBlciwgV3JhcHBlckNvbnN0cnVjdG9yLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbkluZmVycmVkTXJvd30gZnJvbSAnLi9tcm93LmpzJztcbmltcG9ydCB7TW1sTm9kZSwgQWJzdHJhY3RNbWxOb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQge01tbE1mZW5jZWR9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tZmVuY2VkLmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTWZlbmNlZCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25NZmVuY2VkIGV4dGVuZHMgQW55V3JhcHBlciB7XG4gIC8qKlxuICAgKiBBbiBtcm93IHRvIHVzZSBmb3IgdGhlIGxheW91dCBvZiB0aGUgbWZlbmNlZFxuICAgKi9cbiAgbXJvdzogQ29tbW9uSW5mZXJyZWRNcm93O1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBtcm93IHdyYXBwZXIgdG8gdXNlIGZvciB0aGUgbGF5b3V0XG4gICAqL1xuICBjcmVhdGVNcm93KCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFBvcHVsYXRlIHRoZSBtcm93IHdpdGggd3JhcHBlZCBtbyBlbGVtZW50cyBpbnRlcmxlYXZlZFxuICAgKiAgIHdpdGggdGhlIG1mZW5jZWQgY2hpbGRyZW4gKHRoZSBtbydzIGFyZSBhbHJlYWR5IGNyZWF0ZWRcbiAgICogICBpbiB0aGUgbWZlbmNlZCBvYmplY3QpXG4gICAqL1xuICBhZGRNcm93Q2hpbGRyZW4oKTogdm9pZDtcblxuICAvKipcbiAgICogV3JhcCBhbiBtbyBlbGVtZW50IGFuZCBwdXNoIGl0IG9udG8gdGhlIG1yb3dcbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlICBUaGUgbW8gZWxlbWVudCB0byBwdXNoIG9uIHRoZSBtcm93XG4gICAqL1xuICBhZGRNbyhub2RlOiBNbWxOb2RlKTogdm9pZDtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25NZmVuY2VkIGNvbnN0cnVjdG9yXG4gKi9cbmV4cG9ydCB0eXBlIE1mZW5jZWRDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yPENvbW1vbk1mZW5jZWQ+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NZmVuY2VkIHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNZmVuY2VkIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25NZmVuY2VkTWl4aW48VCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3Rvcj4oQmFzZTogVCk6IE1mZW5jZWRDb25zdHJ1Y3RvciAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogQW4gbXJvdyB0byB1c2UgZm9yIHRoZSBsYXlvdXQgb2YgdGhlIG1mZW5jZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgbXJvdzogQ29tbW9uSW5mZXJyZWRNcm93ID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIHRoaXMuY3JlYXRlTXJvdygpO1xuICAgICAgdGhpcy5hZGRNcm93Q2hpbGRyZW4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIHRoZSBtcm93IHdyYXBwZXIgdG8gdXNlIGZvciB0aGUgbGF5b3V0XG4gICAgICovXG4gICAgcHVibGljIGNyZWF0ZU1yb3coKSB7XG4gICAgICBjb25zdCBtbWxGYWN0b3J5ID0gKHRoaXMubm9kZSBhcyBBYnN0cmFjdE1tbE5vZGUpLmZhY3Rvcnk7XG4gICAgICBjb25zdCBtcm93ID0gbW1sRmFjdG9yeS5jcmVhdGUoJ2luZmVycmVkTXJvdycpO1xuICAgICAgbXJvdy5pbmhlcml0QXR0cmlidXRlc0Zyb20odGhpcy5ub2RlKTtcbiAgICAgIHRoaXMubXJvdyA9IHRoaXMud3JhcChtcm93KSBhcyBDb21tb25JbmZlcnJlZE1yb3c7XG4gICAgICB0aGlzLm1yb3cucGFyZW50ID0gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQb3B1bGF0ZSB0aGUgbXJvdyB3aXRoIHdyYXBwZWQgbW8gZWxlbWVudHMgaW50ZXJsZWF2ZWRcbiAgICAgKiAgIHdpdGggdGhlIG1mZW5jZWQgY2hpbGRyZW4gKHRoZSBtbydzIGFyZSBhbHJlYWR5IGNyZWF0ZWRcbiAgICAgKiAgIGluIHRoZSBtZmVuY2VkIG9iamVjdClcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkTXJvd0NoaWxkcmVuKCkge1xuICAgICAgY29uc3QgbWZlbmNlZCA9IHRoaXMubm9kZSBhcyBNbWxNZmVuY2VkO1xuICAgICAgY29uc3QgbXJvdyA9IHRoaXMubXJvdztcbiAgICAgIHRoaXMuYWRkTW8obWZlbmNlZC5vcGVuKTtcbiAgICAgIGlmICh0aGlzLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIG1yb3cuY2hpbGROb2Rlcy5wdXNoKHRoaXMuY2hpbGROb2Rlc1swXSk7XG4gICAgICB9XG4gICAgICBsZXQgaSA9IDA7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcy5zbGljZSgxKSkge1xuICAgICAgICB0aGlzLmFkZE1vKG1mZW5jZWQuc2VwYXJhdG9yc1tpKytdKTtcbiAgICAgICAgbXJvdy5jaGlsZE5vZGVzLnB1c2goY2hpbGQpO1xuICAgICAgfVxuICAgICAgdGhpcy5hZGRNbyhtZmVuY2VkLmNsb3NlKTtcbiAgICAgIG1yb3cuc3RyZXRjaENoaWxkcmVuKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogV3JhcCBhbiBtbyBlbGVtZW50IGFuZCBwdXNoIGl0IG9udG8gdGhlIG1yb3dcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSAgVGhlIG1vIGVsZW1lbnQgdG8gcHVzaCBvbiB0aGUgbXJvd1xuICAgICAqL1xuICAgIHB1YmxpYyBhZGRNbyhub2RlOiBNbWxOb2RlKSB7XG4gICAgICBpZiAoIW5vZGUpIHJldHVybjtcbiAgICAgIGNvbnN0IG1vID0gdGhpcy53cmFwKG5vZGUpO1xuICAgICAgdGhpcy5tcm93LmNoaWxkTm9kZXMucHVzaChtbyk7XG4gICAgICBtby5wYXJlbnQgPSB0aGlzLm1yb3c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNvbXB1dGVCQm94KGJib3g6IEJCb3gsIHJlY29tcHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBiYm94LnVwZGF0ZUZyb20odGhpcy5tcm93LmdldE91dGVyQkJveCgpKTtcbiAgICAgIHRoaXMuc2V0Q2hpbGRQV2lkdGhzKHJlY29tcHV0ZSk7XG4gICAgfVxuXG4gIH07XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgTW1sTWZlbmNlZCBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgVGV4dE5vZGUsIEFic3RyYWN0TW1sTm9kZSwgQXR0cmlidXRlTGlzdCwgVEVYQ0xBU1N9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNZmVuY2VkIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTWZlbmNlZCBleHRlbmRzIEFic3RyYWN0TW1sTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVyZXJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbE5vZGUuZGVmYXVsdHMsXG4gICAgb3BlbjogJygnLFxuICAgIGNsb3NlOiAnKScsXG4gICAgc2VwYXJhdG9yczogJywnXG4gIH07XG5cbiAgLyoqXG4gICAqIFRlWCBjbGFzcyBpcyBJTk5FUlxuICAgKi9cbiAgcHJvdGVjdGVkIHRleGNsYXNzID0gVEVYQ0xBU1MuSU5ORVI7XG5cbiAgLyoqXG4gICAqIFN0b3JhZ2UgZm9yIFwiZmFrZVwiIG5vZGVzIGZvciB0aGUgc2VwYXJhdG9yc1xuICAgKi9cbiAgcHVibGljIHNlcGFyYXRvcnM6IE1tbE5vZGVbXSA9IFtdO1xuICAvKipcbiAgICogU3RvcmFnZSBmb3IgXCJmYWtlXCIgb3BlbiBub2RlXG4gICAqL1xuICBwdWJsaWMgb3BlbjogTW1sTm9kZSA9IG51bGw7XG4gIC8qKlxuICAgKiBTdG9yYWdlIGZvciBcImZha2VcIiBjbG9zZSBub2RlXG4gICAqL1xuICBwdWJsaWMgY2xvc2U6IE1tbE5vZGUgPSBudWxsO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21mZW5jZWQnO1xuICB9XG5cbiAgLyoqXG4gICAqIEluY2x1ZGUgdGhlIGZha2Ugbm9kZXMgaW4gdGhlIHByb2Nlc3MsIHNpbmNlIHRoZXkgd2lsbCBiZSB1c2VkXG4gICAqICB0byBwcm9kdWNlIHRoZSBvdXRwdXQuXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldFRlWGNsYXNzKHByZXY6IE1tbE5vZGUpIHtcbiAgICB0aGlzLmdldFByZXZDbGFzcyhwcmV2KTtcbiAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICBwcmV2ID0gdGhpcy5vcGVuLnNldFRlWGNsYXNzKHByZXYpO1xuICAgIH1cbiAgICBpZiAodGhpcy5jaGlsZE5vZGVzWzBdKSB7XG4gICAgICBwcmV2ID0gdGhpcy5jaGlsZE5vZGVzWzBdLnNldFRlWGNsYXNzKHByZXYpO1xuICAgIH1cbiAgICBmb3IgKGxldCBpID0gMSwgbSA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGg7IGkgPCBtOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLnNlcGFyYXRvcnNbaSAtIDFdKSB7XG4gICAgICAgIHByZXYgPSB0aGlzLnNlcGFyYXRvcnNbaSAtIDFdLnNldFRlWGNsYXNzKHByZXYpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2hpbGROb2Rlc1tpXSkge1xuICAgICAgICBwcmV2ID0gdGhpcy5jaGlsZE5vZGVzW2ldLnNldFRlWGNsYXNzKHByZXYpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5jbG9zZSkge1xuICAgICAgcHJldiA9IHRoaXMuY2xvc2Uuc2V0VGVYY2xhc3MocHJldik7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlVGVYY2xhc3ModGhpcy5vcGVuKTtcbiAgICByZXR1cm4gcHJldjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIGZha2Ugbm9kZXMgYW5kIGRvIHRoZWlyIGluaGVyaXRhbmNlXG4gICAqIFRoZW4gZG8gaW5oZXJpZGVuY2Ugb2YgdXN1YWwgY2hpbGRyZW5cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q2hpbGRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZUxpc3QsIGRpc3BsYXk6IGJvb2xlYW4sIGxldmVsOiBudW1iZXIsIHByaW1lOiBib29sZWFuKSB7XG4gICAgdGhpcy5hZGRGYWtlTm9kZXMoKTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIFt0aGlzLm9wZW4sIHRoaXMuY2xvc2VdLmNvbmNhdCh0aGlzLnNlcGFyYXRvcnMpKSB7XG4gICAgICBpZiAoY2hpbGQpIHtcbiAgICAgICAgY2hpbGQuc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBkaXNwbGF5LCBsZXZlbCwgcHJpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgICBzdXBlci5zZXRDaGlsZEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgZGlzcGxheSwgbGV2ZWwsIHByaW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgPG1vPiBlbGVtZW50cyBmb3IgdGhlIG9wZW4gYW5kIGNsb3NlIGRlbGltaXRlcnMsIGFuZCBmb3IgdGhlIHNlcGFyYXRvcnMgKGlmIGFueSlcbiAgICovXG4gIHByb3RlY3RlZCBhZGRGYWtlTm9kZXMoKSB7XG4gICAgbGV0IHtvcGVuLCBjbG9zZSwgc2VwYXJhdG9yc30gPSB0aGlzLmF0dHJpYnV0ZXMuZ2V0TGlzdCgnb3BlbicsICdjbG9zZScsICdzZXBhcmF0b3JzJykgYXNcbiAgICB7b3Blbjogc3RyaW5nLCBjbG9zZTogc3RyaW5nLCBzZXBhcmF0b3JzOiBzdHJpbmd9O1xuICAgIG9wZW4gPSBvcGVuLnJlcGxhY2UoL1sgXFx0XFxuXFxyXS9nLCAnJyk7XG4gICAgY2xvc2UgPSBjbG9zZS5yZXBsYWNlKC9bIFxcdFxcblxccl0vZywgJycpO1xuICAgIHNlcGFyYXRvcnMgPSBzZXBhcmF0b3JzLnJlcGxhY2UoL1sgXFx0XFxuXFxyXS9nLCAnJyk7XG4gICAgLy9cbiAgICAvLyBDcmVhdGUgb3BlbiBub2RlXG4gICAgLy9cbiAgICBpZiAob3Blbikge1xuICAgICAgdGhpcy5vcGVuID0gdGhpcy5mYWtlTm9kZShvcGVuLCB7ZmVuY2U6IHRydWUsIGZvcm06ICdwcmVmaXgnfSwgVEVYQ0xBU1MuT1BFTik7XG4gICAgfVxuICAgIC8vXG4gICAgLy8gQ3JlYXRlIG5vZGVzIGZvciB0aGUgc2VwYXJhdG9yc1xuICAgIC8vXG4gICAgaWYgKHNlcGFyYXRvcnMpIHtcbiAgICAgIHdoaWxlIChzZXBhcmF0b3JzLmxlbmd0aCA8IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGggLSAxKSB7XG4gICAgICAgIHNlcGFyYXRvcnMgKz0gc2VwYXJhdG9ycy5jaGFyQXQoc2VwYXJhdG9ycy5sZW5ndGggLSAxKTtcbiAgICAgIH1cbiAgICAgIGxldCBpID0gMDtcbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzLnNsaWNlKDEpKSB7XG4gICAgICAgIGlmIChjaGlsZCkge1xuICAgICAgICAgIHRoaXMuc2VwYXJhdG9ycy5wdXNoKHRoaXMuZmFrZU5vZGUoc2VwYXJhdG9ycy5jaGFyQXQoaSsrKSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgLy8gIENyZWF0ZSBjbG9zZSBub2RlXG4gICAgLy9cbiAgICBpZiAoY2xvc2UpIHtcbiAgICAgIHRoaXMuY2xvc2UgPSB0aGlzLmZha2VOb2RlKGNsb3NlLCB7ZmVuY2U6IHRydWUsIGZvcm06ICdwb3N0Zml4J30sIFRFWENMQVNTLkNMT1NFKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGMgICAgICAgICAgICAgICAgIFRoZSBjaGFyYWN0ZXIgZm9yIHRoZSB0ZXh0IG9mIHRoZSBub2RlXG4gICAqIEBwYXJhbSB7UHJvcGVydHlMaXN0fSBwcm9wZXJ0aWVzICBUaGUgYXR0cmlidXRlcyBmb3IgdGhlIG5vZGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRleENsYXNzICAgICAgICAgIFRoZSBUZVggY2xhc3MgZm9yIHRoZSBub2RlXG4gICAqIEByZXR1cm4ge01tbE5vZGV9ICAgICAgICAgICAgICAgICBUaGUgZ2VuZXJhdGVkIDxtbz4gbm9kZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZha2VOb2RlKGM6IHN0cmluZywgcHJvcGVydGllczogUHJvcGVydHlMaXN0ID0ge30sIHRleENsYXNzOiBudW1iZXIgPSBudWxsKTogTW1sTm9kZSB7XG4gICAgbGV0IHRleHQgPSAodGhpcy5mYWN0b3J5LmNyZWF0ZSgndGV4dCcpIGFzIFRleHROb2RlKS5zZXRUZXh0KGMpO1xuICAgIGxldCBub2RlID0gdGhpcy5mYWN0b3J5LmNyZWF0ZSgnbW8nLCBwcm9wZXJ0aWVzLCBbdGV4dF0pO1xuICAgIG5vZGUudGV4Q2xhc3MgPSB0ZXhDbGFzcztcbiAgICBub2RlLnBhcmVudCA9IHRoaXM7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdtZmVuY2VkIHdyYXBwZXIgZm9yIHRoZSBNbWxNZmVuY2VkIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk1mZW5jZWRNaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21mZW5jZWQuanMnO1xuaW1wb3J0IHtNbWxNZmVuY2VkfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWZlbmNlZC5qcyc7XG5pbXBvcnQge1NWR2luZmVycmVkTXJvd30gZnJvbSAnLi9tcm93LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbWZlbmNlZCB3cmFwcGVyIGZvciB0aGUgTW1sTWZlbmNlZCBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBTVkdtZmVuY2VkPE4sIFQsIEQ+IGV4dGVuZHMgQ29tbW9uTWZlbmNlZE1peGluPFNWR0NvbnN0cnVjdG9yPGFueSwgYW55LCBhbnk+PihTVkdXcmFwcGVyKSB7XG5cbiAgLyoqXG4gICAqIFRoZSBtZmVuY2VkIHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE1mZW5jZWQucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIEFuIG1yb3cgdXNlZCB0byByZW5kZXIgdGhlIHJlc3VsdFxuICAgKi9cbiAgcHVibGljIG1yb3c6IFNWR2luZmVycmVkTXJvdzxOLCBULCBEPjtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5zdGFuZGFyZFNWR25vZGUocGFyZW50KTtcbiAgICB0aGlzLnNldENoaWxkcmVuUGFyZW50KHRoaXMubXJvdyk7ICAvLyB0ZW1wb3JhcmlseSBjaGFuZ2UgcGFyZW50cyB0byB0aGUgbXJvd1xuICAgIHRoaXMubXJvdy50b1NWRyhzdmcpO1xuICAgIHRoaXMuc2V0Q2hpbGRyZW5QYXJlbnQodGhpcyk7ICAgICAgIC8vIHB1dCBiYWNrIHRoZSBjb3JyZWN0IHBhcmVudHNcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1NWR1dyYXBwZXJ9IHBhcmVudCAgIFRoZSBwYXJlbnQgdG8gdXNlIGZvciB0aGUgZmVuY2VkIGNoaWxkcmVuXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q2hpbGRyZW5QYXJlbnQocGFyZW50OiBTVkdXcmFwcGVyPE4sIFQsIEQ+KSB7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGNoaWxkLnBhcmVudCA9IHBhcmVudDtcbiAgICB9XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBhIGJhc2UgbWl4aW4gZm9yIENvbW1vbk1zdWJzdXAsIENvbW1vbk11bmRlcm92ZXJcbiAqICAgICAgICAgICAgICAgIGFuZCB0aGVpciByZWxhdGl2ZXMuICAoU2luY2UgbXVuZGVyb3ZlciBjYW4gYmVjb21lIG1zdWJzdXBcbiAqICAgICAgICAgICAgICAgIHdoZW4gbW92YWJsZWxpbWl0cyBpcyBzZXQsIG11bmRlcm92ZXIgbmVlZHMgdG8gYmUgYWJsZSB0b1xuICogICAgICAgICAgICAgICAgZG8gdGhlIHNhbWUgdGhpbmcgYXMgbXN1YnN1cCBpbiBzb21lIGNhc2VzLilcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QW55V3JhcHBlciwgV3JhcHBlckNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RvciwgQW55V3JhcHBlckNsYXNzfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTW99IGZyb20gJy4vbW8uanMnO1xuaW1wb3J0IHtDb21tb25NdW5kZXJvdmVyfSBmcm9tICcuL211bmRlcm92ZXIuanMnO1xuaW1wb3J0IHtURVhDTEFTU30gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtNbWxNc3Vic3VwfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXN1YnN1cC5qcyc7XG5pbXBvcnQge01tbE1vfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbW8uanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuaW1wb3J0IHtESVJFQ1RJT059IGZyb20gJy4uL0ZvbnREYXRhLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uU2NyaXB0YmFzZSBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vblNjcmlwdGJhc2U8VyBleHRlbmRzIEFueVdyYXBwZXI+IGV4dGVuZHMgQW55V3JhcHBlciB7XG5cbiAgLyoqXG4gICAqIFRoZSBjb3JlIG1pIG9yIG1vIG9mIHRoZSBiYXNlIChvciB0aGUgYmFzZSBpdHNlbGYgaWYgdGhlcmUgaXNuJ3Qgb25lKVxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUNvcmU6IFc7XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlIGVsZW1lbnQncyB3cmFwcGVyXG4gICAqL1xuICByZWFkb25seSBiYXNlQ2hpbGQ6IFc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWxhdGl2ZSBzY2FsaW5nIG9mIHRoZSBiYXNlIGNvbXBhcmVkIHRvIHRoZSBtdW5kZXJvdmVyL21zdWJzdXBcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VTY2FsZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgaXRhbGljIGNvcnJlY3Rpb24gb2YgdGhlIGJhc2UgKGlmIGFueSlcbiAgICovXG4gIHJlYWRvbmx5IGJhc2VJYzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUcnVlIGlmIGJhc2UgaXRhbGljIGNvcnJlY3Rpb24gc2hvdWxkIGJlIHJlbW92ZWQgKG1zdWIgYW5kIG1zdWJzdXAgb3IgbWF0aGFjY2VudHMpXG4gICAqL1xuICByZWFkb25seSBiYXNlUmVtb3ZlSWM6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIGJhc2UgaXMgYSBzaW5nbGUgY2hhcmFjdGVyXG4gICAqL1xuICByZWFkb25seSBiYXNlSXNDaGFyOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIGlmIHRoZSBiYXNlIGhhcyBhbiBhY2NlbnQgdW5kZXIgb3Igb3ZlclxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUhhc0FjY2VudE92ZXI6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGJhc2VIYXNBY2NlbnRVbmRlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogVHJ1ZSBpZiB0aGlzIGlzIGFuIG92ZXJsaW5lIG9yIHVuZGVybGluZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNMaW5lQWJvdmU6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzTGluZUJlbG93OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIGlmIHRoaXMgaXMgYW4gbXN1cCB3aXRoIHNjcmlwdCB0aGF0IGlzIGEgbWF0aCBhY2NlbnRcbiAgICovXG4gIHJlYWRvbmx5IGlzTWF0aEFjY2VudDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHNjcmlwdCBlbGVtZW50J3Mgd3JhcHBlciAob3ZlcnJpZGRlbiBpbiBzdWJjbGFzc2VzKVxuICAgKi9cbiAgcmVhZG9ubHkgc2NyaXB0Q2hpbGQ6IFc7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgLypcbiAgICogIE1ldGhvZHMgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb3JlIGVsZW1lbnQgZm9yIHRoZSBiYXNlXG4gICAqL1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtXfSAgICBUaGUgd3JhcHBlciBmb3IgdGhlIGJhc2UgY29yZSBtaSBvciBtbyAob3Igd2hhdGV2ZXIpXG4gICAqL1xuICBnZXRCYXNlQ29yZSgpOiBXO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtXfSAgICBUaGUgYmFzZSBmZW5jZSBpdGVtIG9yIG51bGxcbiAgICovXG4gIGdldFNlbWFudGljQmFzZSgpOiBXO1xuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSByZXRyaWV2ZXMgYW4gZWxlbWVudCBmb3IgYSBnaXZlbiBmZW5jZXBvaW50ZXIuXG4gICAqXG4gICAqIEBwYXJhbSB7V30gZmVuY2UgVGhlIHBvdGVudGlhbCBmZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFRoZSBmZW5jZXBvaW50ZXIgaWQuXG4gICAqIEByZXR1cm4ge1d9IFRoZSBvcmlnaW5hbCBmZW5jZSB0aGUgc2NyaXB0cyBiZWxvbmcgdG8uXG4gICAqL1xuICBnZXRCYXNlRmVuY2UoZmVuY2U6IFcsIGlkOiBzdHJpbmcpOiBXO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgVGhlIHNjYWxpbmcgZmFjdG9yIGZvciB0aGUgYmFzZSBjb3JlIHJlbGF0aXZlIHRvIHRoZSBtdW5kZXJvdmVyL21zdWJzdXBcbiAgICovXG4gIGdldEJhc2VTY2FsZSgpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBiYXNlJ3MgaXRhbGljIGNvcnJlY3Rpb24gKHByb3Blcmx5IHNjYWxlZClcbiAgICovXG4gIGdldEJhc2VJYygpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFuIGFkanVzdGVkIGl0YWxpYyBjb3JyZWN0aW9uIChmb3Igc2xpZ2h0bHkgYmV0dGVyIHJlc3VsdHMpXG4gICAqL1xuICBnZXRBZGp1c3RlZEljKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gIFRydWUgaWYgdGhlIGJhc2UgaXMgYW4gbWksIG1uLCBvciBtbyAobm90IGEgbGFyZ2VvcCkgY29uc2lzdGluZyBvZlxuICAgKiAgICAgICAgICAgICAgICAgICAgYSBzaW5nbGUgdW5zdHJldGNoZWQgY2hhcmFjdGVyXG4gICAqL1xuICBpc0NoYXJCYXNlKCk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBpZiB0aGUgdW5kZXItIGFuZCBvdmVyc2NyaXB0cyBhcmUgdW5kZXItIG9yIG92ZXJsaW5lcy5cbiAgICovXG4gIGNoZWNrTGluZUFjY2VudHMoKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtXfSBzY3JpcHQgICBUaGUgc2NyaXB0IG5vZGUgdG8gY2hlY2sgZm9yIGJlaW5nIGEgbGluZVxuICAgKi9cbiAgaXNMaW5lQWNjZW50KHNjcmlwdDogVyk6IGJvb2xlYW47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgLypcbiAgICogIE1ldGhvZHMgZm9yIHN1Yi1zdXAgbm9kZXNcbiAgICovXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgVGhlIGJhc2UgY2hpbGQncyB3aWR0aCB3aXRob3V0IHRoZSBiYXNlIGl0YWxpYyBjb3JyZWN0aW9uIChpZiBub3QgbmVlZGVkKVxuICAgKi9cbiAgZ2V0QmFzZVdpZHRoKCk6IG51bWJlcjtcblxuICAvKipcbiAgICogR2V0IHRoZSBzaGlmdCBmb3IgdGhlIHNjcmlwdCAoaW1wbGVtZW50ZWQgaW4gc3ViY2xhc3NlcylcbiAgICpcbiAgICogQHJldHVybiB7bnVtYmVyW119ICAgVGhlIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIG9mZnNldHMgZm9yIHRoZSBzY3JpcHRcbiAgICovXG4gIGdldE9mZnNldCgpOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG4gICAgVGhlIHZhbHVlIHRvIHVzZSBpZiB0aGUgYmFzZSBpc24ndCBhIChub24tbGFyZ2Utb3AsIHVuc3RyZXRjaGVkKSBjaGFyXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgIEVpdGhlciBuIG9yIDBcbiAgICovXG4gIGJhc2VDaGFyWmVybyhuOiBudW1iZXIpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2hpZnQgZm9yIGEgc3Vic2NyaXB0IChUZVhCb29rIEFwcGVuZGl4IEcgMThhYilcbiAgICpcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgVGhlIHZlcnRpY2FsIG9mZnNldCBmb3IgdGhlIHNjcmlwdFxuICAgKi9cbiAgZ2V0VigpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc2hpZnQgZm9yIGEgc3VwZXJzY3JpcHQgKFRlWEJvb2sgQXBwZW5kaXggRyAxOGFjZClcbiAgICpcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgVGhlIHZlcnRpY2FsIG9mZnNldCBmb3IgdGhlIHNjcmlwdFxuICAgKi9cbiAgZ2V0VSgpOiBudW1iZXI7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgLypcbiAgICogIE1ldGhvZHMgZm9yIHVuZGVyLW92ZXIgbm9kZXNcbiAgICovXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICBUcnVlIGlmIHRoZSBiYXNlIGhhcyBtb3ZhYmxlbGltaXRzIChuZWVkZWQgYnkgbXVuZGVyb3ZlcilcbiAgICovXG4gIGhhc01vdmFibGVMaW1pdHMoKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogR2V0IHRoZSBzZXBhcmF0aW9uIGFuZCBvZmZzZXQgZm9yIG92ZXJzY3JpcHRzIChUZVhCb294IEFwcGVuZGl4IEcgMTMsIDEzYSlcbiAgICpcbiAgICogQHBhcmFtIHtCQm94fSBiYXNlYm94ICBUaGUgYm91bmRpbmcgYm94IG9mIHRoZSBiYXNlXG4gICAqIEBwYXJhbSB7QkJveH0gb3ZlcmJveCAgVGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgb3ZlcnNjcmlwdFxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICAgIFRoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGhlaXIgYm94ZXMsIGFuZCB0aGUgb2Zmc2V0IG9mIHRoZSBvdmVyc2NyaXB0XG4gICAqL1xuICBnZXRPdmVyS1UoYmFzZWJveDogQkJveCwgb3ZlcmJveDogQkJveCk6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHNlcGFyYXRpb24gYW5kIG9mZnNldCBmb3IgdW5kZXJzY3JpcHRzIChUZVhCb294IEFwcGVuZGl4IEcgMTMsIDEzYSlcbiAgICpcbiAgICogQHBhcmFtIHtCQm94fSBiYXNlYm94ICAgVGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgYmFzZVxuICAgKiBAcGFyYW0ge0JCb3h9IHVuZGVyYm94ICBUaGUgYm91bmRpbmcgYm94IG9mIHRoZSB1bmRlcnNjcmlwdFxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICAgICBUaGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHRoZWlyIGJveGVzLCBhbmQgdGhlIG9mZnNldCBvZiB0aGUgdW5kZXJzY3JpcHRcbiAgICovXG4gIGdldFVuZGVyS1YoYmFzZWJveDogQkJveCwgdW5kZXJib3g6IEJCb3gpOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtCQm94W119IGJveGVzICAgICBUaGUgYm91bmRpbmcgYm94ZXMgd2hvc2Ugb2Zmc2V0cyBhcmUgdG8gYmUgY29tcHV0ZWRcbiAgICogQHBhcmFtIHtudW1iZXJbXT19IGRlbHRhICBUaGUgaW5pdGlhbCB4IG9mZnNldHMgb2YgdGhlIGJveGVzXG4gICAqIEByZXR1cm4ge251bWJlcltdfSAgICAgICAgVGhlIGFjdHVhbCBvZmZzZXRzIG5lZWRlZCB0byBjZW50ZXIgdGhlIGJveGVzIGluIHRoZSBzdGFja1xuICAgKi9cbiAgZ2V0RGVsdGFXKGJveGVzOiBCQm94W10sIGRlbHRhPzogbnVtYmVyW10pOiBudW1iZXJbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFuPX0gbm9za2V3ICAgV2hldGhlciB0byBpZ25vcmUgdGhlIHNrZXcgYW1vdW50XG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgIFRoZSBvZmZzZXQgZm9yIHVuZGVyIGFuZCBvdmVyXG4gICAqL1xuICBnZXREZWx0YShub3NrZXc/OiBib29sZWFuKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBIYW5kbGUgaG9yaXpvbnRhbCBzdHJldGNoaW5nIG9mIGNoaWxkcmVuIHRvIG1hdGNoIGdyZWF0ZXN0IHdpZHRoXG4gICAqICBvZiBhbGwgY2hpbGRyZW5cbiAgICovXG4gIHN0cmV0Y2hDaGlsZHJlbigpOiB2b2lkO1xuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uU2NyaXB0YmFzZUNsYXNzIGV4dGVuZHMgQW55V3JhcHBlckNsYXNzIHtcbiAgLyoqXG4gICAqIFNldCB0byB0cnVlIGZvciBtdW5kZXJvdmVyL211bmRlci9tb3Zlci9tc3VwIChBcHBlbmRpeCBHIDEzKVxuICAgKi9cbiAgdXNlSUM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogU2hvcnRoYW5kIGZvciB0aGUgQ29tbW9uU2NyaXB0YmFzZSBjb25zdHJ1Y3RvclxuICpcbiAqIEB0ZW1wbGF0ZSBXICBUaGUgY2hpbGQtbm9kZSBXcmFwcGVyIGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIFNjcmlwdGJhc2VDb25zdHJ1Y3RvcjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gPSBDb25zdHJ1Y3RvcjxDb21tb25TY3JpcHRiYXNlPFc+PjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIG1zdXAvbXN1Yi9tc3Vic3VwIGFuZCBtdW5kZXIvbW92ZXIvbXVuZGVyb3ZlclxuICogd3JhcHBlciBtaXhpbiBpbXBsZW1lbnRhdGlvbnNcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vblNjcmlwdGJhc2VNaXhpbjxcbiAgVyBleHRlbmRzIEFueVdyYXBwZXIsXG4gIFQgZXh0ZW5kcyBXcmFwcGVyQ29uc3RydWN0b3Jcbj4oQmFzZTogVCk6IFNjcmlwdGJhc2VDb25zdHJ1Y3RvcjxXPiAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogU2V0IHRvIGZhbHNlIGZvciBtc3Vic3VwL21zdWIgKEFwcGVuZGl4IEcgMTMpXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB1c2VJQzogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY29yZSBtaSBvciBtbyBvZiB0aGUgYmFzZSAob3IgdGhlIGJhc2UgaXRzZWxmIGlmIHRoZXJlIGlzbid0IG9uZSlcbiAgICAgKi9cbiAgICBwdWJsaWMgYmFzZUNvcmU6IFc7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgYmFzZSBlbGVtZW50J3Mgd3JhcHBlclxuICAgICAqL1xuICAgIHB1YmxpYyBiYXNlU2NhbGU6IG51bWJlciA9IDE7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgcmVsYXRpdmUgc2NhbGluZyBvZiB0aGUgYmFzZSBjb21wYXJlZCB0byB0aGUgbXVuZGVyb3Zlci9tc3Vic3VwXG4gICAgICovXG4gICAgcHVibGljIGJhc2VJYzogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIFRydWUgaWYgYmFzZSBpdGFsaWMgY29ycmVjdGlvbiBzaG91bGQgYmUgcmVtb3ZlZCAobXN1YiBhbmQgbXN1YnN1cCBvciBtYXRoYWNjZW50cylcbiAgICAgKi9cbiAgICBwdWJsaWMgYmFzZVJlbW92ZUljOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHRoZSBiYXNlIGlzIGEgc2luZ2xlIGNoYXJhY3RlclxuICAgICAqL1xuICAgIHB1YmxpYyBiYXNlSXNDaGFyOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHRoZSBiYXNlIGhhcyBhbiBhY2NlbnQgdW5kZXIgb3Igb3ZlclxuICAgICAqL1xuICAgIHB1YmxpYyBiYXNlSGFzQWNjZW50T3ZlcjogYm9vbGVhbiA9IG51bGw7XG4gICAgcHVibGljIGJhc2VIYXNBY2NlbnRVbmRlcjogYm9vbGVhbiA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHRoaXMgaXMgYW4gb3ZlcmxpbmUgb3IgdW5kZXJsaW5lXG4gICAgICovXG4gICAgcHVibGljIGlzTGluZUFib3ZlOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGlzTGluZUJlbG93OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHRoaXMgaXMgYW4gbXN1cCB3aXRoIHNjcmlwdCB0aGF0IGlzIGEgbWF0aCBhY2NlbnRcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNNYXRoQWNjZW50OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtXfSAgVGhlIGJhc2UgZWxlbWVudCdzIHdyYXBwZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGJhc2VDaGlsZCgpOiBXIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbKHRoaXMubm9kZSBhcyBNbWxNc3Vic3VwKS5iYXNlXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtXfSAgVGhlIHNjcmlwdCBlbGVtZW50J3Mgd3JhcHBlciAob3ZlcnJpZGRlbiBpbiBzdWJjbGFzc2VzKVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2NyaXB0Q2hpbGQoKTogVyB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzWzFdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIC8vXG4gICAgICAvLyAgRmluZCB0aGUgYmFzZSBjb3JlXG4gICAgICAvL1xuICAgICAgY29uc3QgY29yZSA9IHRoaXMuYmFzZUNvcmUgPSB0aGlzLmdldEJhc2VDb3JlKCk7XG4gICAgICBpZiAoIWNvcmUpIHJldHVybjtcbiAgICAgIC8vXG4gICAgICAvLyBHZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJhc2UgZWxlbWVudFxuICAgICAgLy9cbiAgICAgIHRoaXMuc2V0QmFzZUFjY2VudHNGb3IoY29yZSk7XG4gICAgICB0aGlzLmJhc2VTY2FsZSA9IHRoaXMuZ2V0QmFzZVNjYWxlKCk7XG4gICAgICB0aGlzLmJhc2VJYyA9IHRoaXMuZ2V0QmFzZUljKCk7XG4gICAgICB0aGlzLmJhc2VJc0NoYXIgPSB0aGlzLmlzQ2hhckJhc2UoKTtcbiAgICAgIC8vXG4gICAgICAvLyAgRGV0ZXJtaW5lIGlmIHdlIGFyZSBzZXR0aW5nIGEgbWF0aGFjY2VudFxuICAgICAgLy9cbiAgICAgIHRoaXMuaXNNYXRoQWNjZW50ID0gdGhpcy5iYXNlSXNDaGFyICYmXG4gICAgICAgICh0aGlzLnNjcmlwdENoaWxkICYmICEhdGhpcy5zY3JpcHRDaGlsZC5jb3JlTU8oKS5ub2RlLmdldFByb3BlcnR5KCdtYXRoYWNjZW50JykpIGFzIGJvb2xlYW47XG4gICAgICAvL1xuICAgICAgLy8gQ2hlY2sgZm9yIG92ZXJsaW5lL3VuZGVybGluZSBhY2NlbnRzXG4gICAgICAvL1xuICAgICAgdGhpcy5jaGVja0xpbmVBY2NlbnRzKCk7XG4gICAgICAvL1xuICAgICAgLy8gIENoZWNrIGlmIHRoZSBiYXNlIGlzIGEgbWkgb3IgbW8gdGhhdCBuZWVkcyBpdGFsaWMgY29ycmVjdGlvbiByZW1vdmVkXG4gICAgICAvL1xuICAgICAgdGhpcy5iYXNlUmVtb3ZlSWMgPSAhdGhpcy5pc0xpbmVBYm92ZSAmJiAhdGhpcy5pc0xpbmVCZWxvdyAmJlxuICAgICAgICAoISh0aGlzLmNvbnN0cnVjdG9yIGFzIENvbW1vblNjcmlwdGJhc2VDbGFzcykudXNlSUMgfHwgdGhpcy5pc01hdGhBY2NlbnQpO1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gICAgLypcbiAgICAgKiAgTWV0aG9kcyBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvcmUgZWxlbWVudCBmb3IgdGhlIGJhc2VcbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge1d9ICAgIFRoZSB3cmFwcGVyIGZvciB0aGUgYmFzZSBjb3JlIG1pIG9yIG1vIChvciB3aGF0ZXZlcilcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QmFzZUNvcmUoKTogVyB7XG4gICAgICBsZXQgY29yZSA9IHRoaXMuZ2V0U2VtYW50aWNCYXNlKCkgfHwgdGhpcy5jaGlsZE5vZGVzWzBdO1xuICAgICAgd2hpbGUgKGNvcmUgJiZcbiAgICAgICAgICAgICAoKGNvcmUuY2hpbGROb2Rlcy5sZW5ndGggPT09IDEgJiZcbiAgICAgICAgICAgICAgIChjb3JlLm5vZGUuaXNLaW5kKCdtcm93JykgfHxcbiAgICAgICAgICAgICAgICAoY29yZS5ub2RlLmlzS2luZCgnVGVYQXRvbScpICYmIGNvcmUubm9kZS50ZXhDbGFzcyAhPT0gVEVYQ0xBU1MuVkNFTlRFUikgfHxcbiAgICAgICAgICAgICAgICBjb3JlLm5vZGUuaXNLaW5kKCdtc3R5bGUnKSB8fCBjb3JlLm5vZGUuaXNLaW5kKCdtcGFkZGVkJykgfHxcbiAgICAgICAgICAgICAgICBjb3JlLm5vZGUuaXNLaW5kKCdtcGhhbnRvbScpIHx8IGNvcmUubm9kZS5pc0tpbmQoJ3NlbWFudGljcycpKSkgfHxcbiAgICAgICAgICAgICAgKGNvcmUubm9kZS5pc0tpbmQoJ211bmRlcm92ZXInKSAmJiBjb3JlLmlzTWF0aEFjY2VudCkpKSAge1xuICAgICAgICB0aGlzLnNldEJhc2VBY2NlbnRzRm9yKGNvcmUpO1xuICAgICAgICBjb3JlID0gY29yZS5jaGlsZE5vZGVzWzBdO1xuICAgICAgfVxuICAgICAgaWYgKCFjb3JlKSB7XG4gICAgICAgIHRoaXMuYmFzZUhhc0FjY2VudE92ZXIgPSB0aGlzLmJhc2VIYXNBY2NlbnRVbmRlciA9IGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvcmUgfHwgdGhpcy5jaGlsZE5vZGVzWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7V30gY29yZSAgIFRoZSBlbGVtZW50IHRvIGNoZWNrIGZvciBhY2NlbnRzXG4gICAgICovXG4gICAgcHVibGljIHNldEJhc2VBY2NlbnRzRm9yKGNvcmU6IFcpIHtcbiAgICAgIGlmIChjb3JlLm5vZGUuaXNLaW5kKCdtdW5kZXJvdmVyJykpIHtcbiAgICAgICAgaWYgKHRoaXMuYmFzZUhhc0FjY2VudE92ZXIgPT09IG51bGwpIHtcbiAgICAgICAgICB0aGlzLmJhc2VIYXNBY2NlbnRPdmVyID0gISFjb3JlLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2FjY2VudCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmJhc2VIYXNBY2NlbnRVbmRlciA9PT0gbnVsbCkge1xuICAgICAgICAgIHRoaXMuYmFzZUhhc0FjY2VudFVuZGVyID0gISFjb3JlLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2FjY2VudHVuZGVyJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtXfSAgICBUaGUgYmFzZSBmZW5jZSBpdGVtIG9yIG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2VtYW50aWNCYXNlKCk6IFcge1xuICAgICAgbGV0IGZlbmNlID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ2RhdGEtc2VtYW50aWMtZmVuY2Vwb2ludGVyJykgYXMgc3RyaW5nO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QmFzZUZlbmNlKHRoaXMuYmFzZUNoaWxkLCBmZW5jZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjdXJzaXZlbHkgcmV0cmlldmVzIGFuIGVsZW1lbnQgZm9yIGEgZ2l2ZW4gZmVuY2Vwb2ludGVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtXfSBmZW5jZSBUaGUgcG90ZW50aWFsIGZlbmNlLlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBUaGUgZmVuY2Vwb2ludGVyIGlkLlxuICAgICAqIEByZXR1cm4ge1d9IFRoZSBvcmlnaW5hbCBmZW5jZSB0aGUgc2NyaXB0cyBiZWxvbmcgdG8uXG4gICAgICovXG4gICAgcHVibGljIGdldEJhc2VGZW5jZShmZW5jZTogVywgaWQ6IHN0cmluZyk6IFcge1xuICAgICAgaWYgKCFmZW5jZSB8fCAhZmVuY2Uubm9kZS5hdHRyaWJ1dGVzIHx8ICFpZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChmZW5jZS5ub2RlLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ2RhdGEtc2VtYW50aWMtaWQnKSA9PT0gaWQpIHtcbiAgICAgICAgcmV0dXJuIGZlbmNlO1xuICAgICAgfVxuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBmZW5jZS5jaGlsZE5vZGVzKSB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuZ2V0QmFzZUZlbmNlKGNoaWxkLCBpZCk7XG4gICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgVGhlIHNjYWxpbmcgZmFjdG9yIGZvciB0aGUgYmFzZSBjb3JlIHJlbGF0aXZlIHRvIHRoZSBtdW5kZXJvdmVyL21zdWJzdXBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QmFzZVNjYWxlKCk6IG51bWJlciB7XG4gICAgICBsZXQgY2hpbGQgPSB0aGlzLmJhc2VDb3JlIGFzIGFueTtcbiAgICAgIGxldCBzY2FsZSA9IDE7XG4gICAgICB3aGlsZSAoY2hpbGQgJiYgY2hpbGQgIT09IHRoaXMpIHtcbiAgICAgICAgY29uc3QgYmJveCA9IGNoaWxkLmdldE91dGVyQkJveCgpO1xuICAgICAgICBzY2FsZSAqPSBiYm94LnJzY2FsZTtcbiAgICAgICAgY2hpbGQgPSBjaGlsZC5wYXJlbnQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gc2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGJhc2UncyBpdGFsaWMgY29ycmVjdGlvbiAocHJvcGVybHkgc2NhbGVkKVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCYXNlSWMoKTogbnVtYmVyIHtcbiAgICAgIHJldHVybiB0aGlzLmJhc2VDb3JlLmdldE91dGVyQkJveCgpLmljICogdGhpcy5iYXNlU2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQW4gYWRqdXN0ZWQgaXRhbGljIGNvcnJlY3Rpb24gKGZvciBzbGlnaHRseSBiZXR0ZXIgcmVzdWx0cylcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWRqdXN0ZWRJYygpOiBudW1iZXIge1xuICAgICAgY29uc3QgYmJveCA9IHRoaXMuYmFzZUNvcmUuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICByZXR1cm4gKGJib3guaWMgPyAxLjA1ICogYmJveC5pYyArIC4wNSA6IDApICogdGhpcy5iYXNlU2NhbGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gIFRydWUgaWYgdGhlIGJhc2UgaXMgYW4gbWksIG1uLCBvciBtbyBjb25zaXN0aW5nIG9mIGEgc2luZ2xlIGNoYXJhY3RlclxuICAgICAqL1xuICAgIHB1YmxpYyBpc0NoYXJCYXNlKCk6IGJvb2xlYW4ge1xuICAgICAgbGV0IGJhc2UgPSB0aGlzLmJhc2VDb3JlO1xuICAgICAgcmV0dXJuICgoKGJhc2Uubm9kZS5pc0tpbmQoJ21vJykgJiYgKGJhc2UgYXMgYW55KS5zaXplID09PSBudWxsKSB8fFxuICAgICAgICAgICAgICAgYmFzZS5ub2RlLmlzS2luZCgnbWknKSB8fCBiYXNlLm5vZGUuaXNLaW5kKCdtbicpKSAmJlxuICAgICAgICAgICAgICBiYXNlLmJib3gucnNjYWxlID09PSAxICYmIEFycmF5LmZyb20oYmFzZS5nZXRUZXh0KCkpLmxlbmd0aCA9PT0gMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIGlmIHRoZSB1bmRlci0gYW5kIG92ZXJzY3JpcHRzIGFyZSB1bmRlci0gb3Igb3ZlcmxpbmVzLlxuICAgICAqL1xuICAgIHB1YmxpYyBjaGVja0xpbmVBY2NlbnRzKCkge1xuICAgICAgaWYgKCF0aGlzLm5vZGUuaXNLaW5kKCdtdW5kZXJvdmVyJykpIHJldHVybjtcbiAgICAgIGlmICh0aGlzLm5vZGUuaXNLaW5kKCdtb3ZlcicpKSB7XG4gICAgICAgIHRoaXMuaXNMaW5lQWJvdmUgPSB0aGlzLmlzTGluZUFjY2VudCh0aGlzLnNjcmlwdENoaWxkKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5ub2RlLmlzS2luZCgnbXVuZGVyJykpIHtcbiAgICAgICAgdGhpcy5pc0xpbmVCZWxvdyA9IHRoaXMuaXNMaW5lQWNjZW50KHRoaXMuc2NyaXB0Q2hpbGQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbW1sID0gdGhpcyBhcyB1bmtub3duIGFzIENvbW1vbk11bmRlcm92ZXI8Vz47XG4gICAgICAgIHRoaXMuaXNMaW5lQWJvdmUgPSB0aGlzLmlzTGluZUFjY2VudChtbWwub3ZlckNoaWxkKTtcbiAgICAgICAgdGhpcy5pc0xpbmVCZWxvdyA9IHRoaXMuaXNMaW5lQWNjZW50KG1tbC51bmRlckNoaWxkKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge1d9IHNjcmlwdCAgIFRoZSBzY3JpcHQgbm9kZSB0byBjaGVjayBmb3IgYmVpbmcgYSBsaW5lXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gICBUcnVlIGlmIHRoZSBzY3JpcHQgaXMgVSsyMDE1XG4gICAgICovXG4gICAgcHVibGljIGlzTGluZUFjY2VudChzY3JpcHQ6IFcpOiBib29sZWFuIHtcbiAgICAgIGNvbnN0IG5vZGUgPSBzY3JpcHQuY29yZU1PKCkubm9kZTtcbiAgICAgIHJldHVybiAobm9kZS5pc1Rva2VuICYmIChub2RlIGFzIE1tbE1vKS5nZXRUZXh0KCkgPT09ICdcXHUyMDE1Jyk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAvKlxuICAgICAqICBNZXRob2RzIGZvciBzdWItc3VwIG5vZGVzXG4gICAgICovXG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgIFRoZSBiYXNlIGNoaWxkJ3Mgd2lkdGggd2l0aG91dCB0aGUgYmFzZSBpdGFsaWMgY29ycmVjdGlvbiAoaWYgbm90IG5lZWRlZClcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QmFzZVdpZHRoKCk6IG51bWJlciB7XG4gICAgICBjb25zdCBiYm94ID0gdGhpcy5iYXNlQ2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICByZXR1cm4gYmJveC53ICogYmJveC5yc2NhbGUgLSAodGhpcy5iYXNlUmVtb3ZlSWMgPyB0aGlzLmJhc2VJYyA6IDApICsgdGhpcy5mb250LnBhcmFtcy5leHRyYV9pYztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGlzIGdpdmVzIHRoZSBjb21tb24gYmJveCBmb3IgbXN1YiBhbmQgbXN1cC4gIEl0IGlzIG92ZXJyaWRkZW5cbiAgICAgKiBmb3IgYWxsIHRoZSBvdGhlcnMgKG1zdWJzdXAsIG11bmRlciwgbW92ZXIsIG11bmRlcm92ZXIpLlxuICAgICAqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNvbXB1dGVCQm94KGJib3g6IEJCb3gsIHJlY29tcHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBjb25zdCB3ID0gdGhpcy5nZXRCYXNlV2lkdGgoKTtcbiAgICAgIGNvbnN0IFt4LCB5XSA9IHRoaXMuZ2V0T2Zmc2V0KCk7XG4gICAgICBiYm94LmFwcGVuZCh0aGlzLmJhc2VDaGlsZC5nZXRPdXRlckJCb3goKSk7XG4gICAgICBiYm94LmNvbWJpbmUodGhpcy5zY3JpcHRDaGlsZC5nZXRPdXRlckJCb3goKSwgdyArIHgsIHkpO1xuICAgICAgYmJveC53ICs9IHRoaXMuZm9udC5wYXJhbXMuc2NyaXB0c3BhY2U7XG4gICAgICBiYm94LmNsZWFuKCk7XG4gICAgICB0aGlzLnNldENoaWxkUFdpZHRocyhyZWNvbXB1dGUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc2hpZnQgZm9yIHRoZSBzY3JpcHQgKGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXMpXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtbbnVtYmVyLCBudW1iZXJdfSAgIFRoZSBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBvZmZzZXRzIGZvciB0aGUgc2NyaXB0XG4gICAgICovXG4gICAgcHVibGljIGdldE9mZnNldCgpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgIHJldHVybiBbMCwgMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IG4gICAgVGhlIHZhbHVlIHRvIHVzZSBpZiB0aGUgYmFzZSBpc24ndCBhIChub24tbGFyZ2Utb3AsIHVuc3RyZXRjaGVkKSBjaGFyXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAgICAgRWl0aGVyIG4gb3IgMFxuICAgICAqL1xuICAgIHB1YmxpYyBiYXNlQ2hhclplcm8objogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAgIGNvbnN0IGxhcmdlb3AgPSAhIXRoaXMuYmFzZUNvcmUubm9kZS5hdHRyaWJ1dGVzLmdldCgnbGFyZ2VvcCcpO1xuICAgICAgY29uc3Qgc2NhbGUgPSB0aGlzLmJhc2VTY2FsZTtcbiAgICAgIHJldHVybiAodGhpcy5iYXNlSXNDaGFyICYmICFsYXJnZW9wICYmIHNjYWxlID09PSAxID8gMCA6IG4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgc2hpZnQgZm9yIGEgc3Vic2NyaXB0IChUZVhCb29rIEFwcGVuZGl4IEcgMThhYilcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge251bWJlcn0gICAgIFRoZSB2ZXJ0aWNhbCBvZmZzZXQgZm9yIHRoZSBzY3JpcHRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VigpOiBudW1iZXIge1xuICAgICAgY29uc3QgYmJveCA9IHRoaXMuYmFzZUNvcmUuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCBzYm94ID0gdGhpcy5zY3JpcHRDaGlsZC5nZXRPdXRlckJCb3goKTtcbiAgICAgIGNvbnN0IHRleCA9IHRoaXMuZm9udC5wYXJhbXM7XG4gICAgICBjb25zdCBzdWJzY3JpcHRzaGlmdCA9IHRoaXMubGVuZ3RoMmVtKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnc3Vic2NyaXB0c2hpZnQnKSwgdGV4LnN1YjEpO1xuICAgICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICB0aGlzLmJhc2VDaGFyWmVybyhiYm94LmQgKiB0aGlzLmJhc2VTY2FsZSArIHRleC5zdWJfZHJvcCAqIHNib3gucnNjYWxlKSxcbiAgICAgICAgc3Vic2NyaXB0c2hpZnQsXG4gICAgICAgIHNib3guaCAqIHNib3gucnNjYWxlIC0gKDQgLyA1KSAqIHRleC54X2hlaWdodFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHNoaWZ0IGZvciBhIHN1cGVyc2NyaXB0IChUZVhCb29rIEFwcGVuZGl4IEcgMThhY2QpXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICBUaGUgdmVydGljYWwgb2Zmc2V0IGZvciB0aGUgc2NyaXB0XG4gICAgICovXG4gICAgcHVibGljIGdldFUoKTogbnVtYmVyIHtcbiAgICAgIGNvbnN0IGJib3ggPSB0aGlzLmJhc2VDb3JlLmdldE91dGVyQkJveCgpO1xuICAgICAgY29uc3Qgc2JveCA9IHRoaXMuc2NyaXB0Q2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCB0ZXggPSB0aGlzLmZvbnQucGFyYW1zO1xuICAgICAgY29uc3QgYXR0ciA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldExpc3QoJ2Rpc3BsYXlzdHlsZScsICdzdXBlcnNjcmlwdHNoaWZ0Jyk7XG4gICAgICBjb25zdCBwcmltZSA9IHRoaXMubm9kZS5nZXRQcm9wZXJ0eSgndGV4cHJpbWVzdHlsZScpO1xuICAgICAgY29uc3QgcCA9IHByaW1lID8gdGV4LnN1cDMgOiAoYXR0ci5kaXNwbGF5c3R5bGUgPyB0ZXguc3VwMSA6IHRleC5zdXAyKTtcbiAgICAgIGNvbnN0IHN1cGVyc2NyaXB0c2hpZnQgPSB0aGlzLmxlbmd0aDJlbShhdHRyLnN1cGVyc2NyaXB0c2hpZnQsIHApO1xuICAgICAgcmV0dXJuIE1hdGgubWF4KFxuICAgICAgICB0aGlzLmJhc2VDaGFyWmVybyhiYm94LmggKiB0aGlzLmJhc2VTY2FsZSAtIHRleC5zdXBfZHJvcCAqIHNib3gucnNjYWxlKSxcbiAgICAgICAgc3VwZXJzY3JpcHRzaGlmdCxcbiAgICAgICAgc2JveC5kICogc2JveC5yc2NhbGUgKyAoMSAvIDQpICogdGV4LnhfaGVpZ2h0XG4gICAgICApO1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4gICAgLypcbiAgICAgKiAgTWV0aG9kcyBmb3IgdW5kZXItb3ZlciBub2Rlc1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gIFRydWUgaWYgdGhlIGJhc2UgaGFzIG1vdmFibGVsaW1pdHMgKG5lZWRlZCBieSBtdW5kZXJvdmVyKVxuICAgICAqL1xuICAgIHB1YmxpYyBoYXNNb3ZhYmxlTGltaXRzKCk6IGJvb2xlYW4ge1xuICAgICAgY29uc3QgZGlzcGxheSA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnZGlzcGxheXN0eWxlJyk7XG4gICAgICBjb25zdCBtbyA9IHRoaXMuYmFzZUNoaWxkLmNvcmVNTygpLm5vZGU7XG4gICAgICByZXR1cm4gKCFkaXNwbGF5ICYmICEhbW8uYXR0cmlidXRlcy5nZXQoJ21vdmFibGVsaW1pdHMnKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBzZXBhcmF0aW9uIGFuZCBvZmZzZXQgZm9yIG92ZXJzY3JpcHRzIChUZVhCb294IEFwcGVuZGl4IEcgMTMsIDEzYSlcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QkJveH0gYmFzZWJveCAgVGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgYmFzZVxuICAgICAqIEBwYXJhbSB7QkJveH0gb3ZlcmJveCAgVGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgb3ZlcnNjcmlwdFxuICAgICAqIEByZXR1cm4ge1tudW1iZXIsIG51bWJlcl19ICAgICBUaGUgc2VwYXJhdGlvbiBiZXR3ZWVuIHRoZWlyIGJveGVzLCBhbmQgdGhlIG9mZnNldCBvZiB0aGUgb3ZlcnNjcmlwdFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPdmVyS1UoYmFzZWJveDogQkJveCwgb3ZlcmJveDogQkJveCk6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgICAgY29uc3QgYWNjZW50ID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdhY2NlbnQnKSBhcyBib29sZWFuO1xuICAgICAgY29uc3QgdGV4ID0gdGhpcy5mb250LnBhcmFtcztcbiAgICAgIGNvbnN0IGQgPSBvdmVyYm94LmQgKiBvdmVyYm94LnJzY2FsZTtcbiAgICAgIGNvbnN0IHQgPSB0ZXgucnVsZV90aGlja25lc3MgKiB0ZXguc2VwYXJhdGlvbl9mYWN0b3I7XG4gICAgICBjb25zdCBkZWx0YSA9ICh0aGlzLmJhc2VIYXNBY2NlbnRPdmVyID8gdCA6IDApO1xuICAgICAgY29uc3QgVCA9ICh0aGlzLmlzTGluZUFib3ZlID8gMyAqIHRleC5ydWxlX3RoaWNrbmVzcyA6IHQpO1xuICAgICAgY29uc3QgayA9IChhY2NlbnQgPyBUIDogTWF0aC5tYXgodGV4LmJpZ19vcF9zcGFjaW5nMSwgdGV4LmJpZ19vcF9zcGFjaW5nMyAtIE1hdGgubWF4KDAsIGQpKSkgLSBkZWx0YTtcbiAgICAgIHJldHVybiBbaywgYmFzZWJveC5oICogYmFzZWJveC5yc2NhbGUgKyBrICsgZF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IHRoZSBzZXBhcmF0aW9uIGFuZCBvZmZzZXQgZm9yIHVuZGVyc2NyaXB0cyAoVGVYQm9veCBBcHBlbmRpeCBHIDEzLCAxM2EpXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0JCb3h9IGJhc2Vib3ggICBUaGUgYm91bmRpbmcgYm94IG9mIHRoZSBiYXNlXG4gICAgICogQHBhcmFtIHtCQm94fSB1bmRlcmJveCAgVGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgdW5kZXJzY3JpcHRcbiAgICAgKiBAcmV0dXJuIHtbbnVtYmVyLCBudW1iZXJdfSAgICAgIFRoZSBzZXBhcmF0aW9uIGJldHdlZW4gdGhlaXIgYm94ZXMsIGFuZCB0aGUgb2Zmc2V0IG9mIHRoZSB1bmRlcnNjcmlwdFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRVbmRlcktWKGJhc2Vib3g6IEJCb3gsIHVuZGVyYm94OiBCQm94KTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgICBjb25zdCBhY2NlbnQgPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2FjY2VudHVuZGVyJykgYXMgYm9vbGVhbjtcbiAgICAgIGNvbnN0IHRleCA9IHRoaXMuZm9udC5wYXJhbXM7XG4gICAgICBjb25zdCBoID0gdW5kZXJib3guaCAqIHVuZGVyYm94LnJzY2FsZTtcbiAgICAgIGNvbnN0IHQgPSB0ZXgucnVsZV90aGlja25lc3MgKiB0ZXguc2VwYXJhdGlvbl9mYWN0b3I7XG4gICAgICBjb25zdCBkZWx0YSA9ICh0aGlzLmJhc2VIYXNBY2NlbnRVbmRlciA/IHQgOiAwKTtcbiAgICAgIGNvbnN0IFQgPSAodGhpcy5pc0xpbmVCZWxvdyA/IDMgKiB0ZXgucnVsZV90aGlja25lc3MgOiB0KTtcbiAgICAgIGNvbnN0IGsgPSAoYWNjZW50ID8gVCA6IE1hdGgubWF4KHRleC5iaWdfb3Bfc3BhY2luZzIsIHRleC5iaWdfb3Bfc3BhY2luZzQgLSBoKSkgLSBkZWx0YTtcbiAgICAgIHJldHVybiBbaywgLShiYXNlYm94LmQgKiBiYXNlYm94LnJzY2FsZSArIGsgKyBoKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtCQm94W119IGJveGVzICAgICBUaGUgYm91bmRpbmcgYm94ZXMgd2hvc2Ugb2Zmc2V0cyBhcmUgdG8gYmUgY29tcHV0ZWRcbiAgICAgKiBAcGFyYW0ge251bWJlcltdPX0gZGVsdGEgIFRoZSBpbml0aWFsIHggb2Zmc2V0cyBvZiB0aGUgYm94ZXNcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICAgICAgIFRoZSBhY3R1YWwgb2Zmc2V0cyBuZWVkZWQgdG8gY2VudGVyIHRoZSBib3hlcyBpbiB0aGUgc3RhY2tcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGVsdGFXKGJveGVzOiBCQm94W10sIGRlbHRhOiBudW1iZXJbXSA9IFswLCAwLCAwXSk6IG51bWJlcltdIHtcbiAgICAgIGNvbnN0IGFsaWduID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdhbGlnbicpO1xuICAgICAgY29uc3Qgd2lkdGhzID0gYm94ZXMubWFwKGJveCA9PiBib3gudyAqIGJveC5yc2NhbGUpO1xuICAgICAgd2lkdGhzWzBdIC09ICh0aGlzLmJhc2VSZW1vdmVJYyAmJiAhdGhpcy5iYXNlQ29yZS5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdsYXJnZW9wJykgPyB0aGlzLmJhc2VJYyA6IDApO1xuICAgICAgY29uc3QgdyA9IE1hdGgubWF4KC4uLndpZHRocyk7XG4gICAgICBjb25zdCBkdyA9IFtdIGFzIG51bWJlcltdO1xuICAgICAgbGV0IG0gPSAwO1xuICAgICAgZm9yIChjb25zdCBpIG9mIHdpZHRocy5rZXlzKCkpIHtcbiAgICAgICAgZHdbaV0gPSAoYWxpZ24gPT09ICdjZW50ZXInID8gKHcgLSB3aWR0aHNbaV0pIC8gMiA6XG4gICAgICAgICAgICAgICAgIGFsaWduID09PSAncmlnaHQnID8gdyAtIHdpZHRoc1tpXSA6IDApICsgZGVsdGFbaV07XG4gICAgICAgIGlmIChkd1tpXSA8IG0pIHtcbiAgICAgICAgICBtID0gLWR3W2ldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobSkge1xuICAgICAgICBmb3IgKGNvbnN0IGkgb2YgZHcua2V5cygpKSB7XG4gICAgICAgICAgZHdbaV0gKz0gbTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgWzEsIDJdLm1hcChpID0+IGR3W2ldICs9IChib3hlc1tpXSA/IGJveGVzW2ldLmR4ICogYm94ZXNbMF0uc2NhbGUgOiAwKSk7XG4gICAgICByZXR1cm4gZHc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtib29sZWFuPX0gbm9za2V3ICAgV2hldGhlciB0byBpZ25vcmUgdGhlIHNrZXcgYW1vdW50XG4gICAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgICAgVGhlIG9mZnNldCBmb3IgdW5kZXIgYW5kIG92ZXJcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RGVsdGEobm9za2V3OiBib29sZWFuID0gZmFsc2UpOiBudW1iZXIge1xuICAgICAgY29uc3QgYWNjZW50ID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdhY2NlbnQnKTtcbiAgICAgIGNvbnN0IHtzaywgaWN9ID0gdGhpcy5iYXNlQ29yZS5nZXRPdXRlckJCb3goKTtcbiAgICAgIHJldHVybiAoKGFjY2VudCAmJiAhbm9za2V3ID8gc2sgOiAwKSArIHRoaXMuZm9udC5za2V3SWNGYWN0b3IgKiBpYykgKiB0aGlzLmJhc2VTY2FsZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgaG9yaXpvbnRhbCBzdHJldGNoaW5nIG9mIGNoaWxkcmVuIHRvIG1hdGNoIGdyZWF0ZXN0IHdpZHRoXG4gICAgICogIG9mIGFsbCBjaGlsZHJlblxuICAgICAqL1xuICAgIHB1YmxpYyBzdHJldGNoQ2hpbGRyZW4oKSB7XG4gICAgICBsZXQgc3RyZXRjaHk6IEFueVdyYXBwZXJbXSA9IFtdO1xuICAgICAgLy9cbiAgICAgIC8vICBMb2NhdGUgYW5kIGNvdW50IHRoZSBzdHJldGNoeSBjaGlsZHJlblxuICAgICAgLy9cbiAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICAgIGlmIChjaGlsZC5jYW5TdHJldGNoKERJUkVDVElPTi5Ib3Jpem9udGFsKSkge1xuICAgICAgICAgIHN0cmV0Y2h5LnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY291bnQgPSBzdHJldGNoeS5sZW5ndGg7XG4gICAgICBsZXQgbm9kZUNvdW50ID0gdGhpcy5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgIGlmIChjb3VudCAmJiBub2RlQ291bnQgPiAxKSB7XG4gICAgICAgIGxldCBXID0gMDtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gIElmIGFsbCB0aGUgY2hpbGRyZW4gYXJlIHN0cmV0Y2h5LCBmaW5kIHRoZSBsYXJnZXN0IG9uZSxcbiAgICAgICAgLy8gIG90aGVyd2lzZSwgZmluZCB0aGUgd2lkdGggb2YgdGhlIG5vbi1zdHJldGNoeSBjaGlsZHJlbi5cbiAgICAgICAgLy9cbiAgICAgICAgbGV0IGFsbCA9IChjb3VudCA+IDEgJiYgY291bnQgPT09IG5vZGVDb3VudCk7XG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICAgICAgY29uc3Qgbm9TdHJldGNoID0gKGNoaWxkLnN0cmV0Y2guZGlyID09PSBESVJFQ1RJT04uTm9uZSk7XG4gICAgICAgICAgaWYgKGFsbCB8fCBub1N0cmV0Y2gpIHtcbiAgICAgICAgICAgIGNvbnN0IHt3LCByc2NhbGV9ID0gY2hpbGQuZ2V0T3V0ZXJCQm94KG5vU3RyZXRjaCk7XG4gICAgICAgICAgICBpZiAodyAqIHJzY2FsZSA+IFcpIFcgPSB3ICogcnNjYWxlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL1xuICAgICAgICAvLyAgU3RyZXRjaCB0aGUgc3RyZXRjaGFibGUgY2hpbGRyZW5cbiAgICAgICAgLy9cbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBzdHJldGNoeSkge1xuICAgICAgICAgIChjaGlsZC5jb3JlTU8oKSBhcyBDb21tb25NbykuZ2V0U3RyZXRjaGVkVmFyaWFudChbVyAvIGNoaWxkLmJib3gucnNjYWxlXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBhIGJhc2UgY2xhc3MgZm9yIFNWR21zdWJzdXAsIFNWR211bmRlcm92ZXJcbiAqICAgICAgICAgICAgICAgIGFuZCB0aGVpciByZWxhdGl2ZXMuICAoU2luY2UgbXVuZGVyb3ZlciBjYW4gYmVjb21lIG1zdWJzdXBcbiAqICAgICAgICAgICAgICAgIHdoZW4gbW92YWJsZWxpbWl0cyBpcyBzZXQsIG11bmRlcm92ZXIgbmVlZHMgdG8gYmUgYWJsZSB0b1xuICogICAgICAgICAgICAgICAgZG8gdGhlIHNhbWUgdGhpbmcgYXMgbXN1YnN1cCBpbiBzb21lIGNhc2VzLilcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7U1ZHV3JhcHBlciwgU1ZHQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25TY3JpcHRiYXNlTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9zY3JpcHRiYXNlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBBIGJhc2UgY2xhc3MgZm9yIG1zdXAvbXN1Yi9tc3Vic3VwIGFuZCBtdW5kZXIvbW92ZXIvbXVuZGVyb3ZlclxuICogd3JhcHBlciBpbXBsZW1lbnRhdGlvbnNcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdzY3JpcHRiYXNlPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vblNjcmlwdGJhc2VNaXhpbjxTVkdXcmFwcGVyPGFueSwgYW55LCBhbnk+LCBTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgc2NyaXB0YmFzZSB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSAnc2NyaXB0YmFzZSc7XG5cbiAgLyoqXG4gICAqIFRoaXMgZ2l2ZXMgdGhlIGNvbW1vbiBvdXRwdXQgZm9yIG1zdWIgYW5kIG1zdXAuICBJdCBpcyBvdmVycmlkZGVuXG4gICAqIGZvciBhbGwgdGhlIG90aGVycyAobXN1YnN1cCwgbXVuZGVyLCBtb3ZlciwgbXVuZGVyb3ZlcikuXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU1ZHKHBhcmVudDogTikge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3RhbmRhcmRTVkdub2RlKHBhcmVudCk7XG4gICAgY29uc3QgdyA9IHRoaXMuZ2V0QmFzZVdpZHRoKCk7XG4gICAgY29uc3QgW3gsIHZdID0gdGhpcy5nZXRPZmZzZXQoKTtcbiAgICB0aGlzLmJhc2VDaGlsZC50b1NWRyhzdmcpO1xuICAgIHRoaXMuc2NyaXB0Q2hpbGQudG9TVkcoc3ZnKTtcbiAgICB0aGlzLnNjcmlwdENoaWxkLnBsYWNlKHcgKyB4LCB2KTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIENvbW1vbk1zdWJzdXAgd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE1zdWJzdXAgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICBhbmQgdGhlIHNwZWNpYWwgY2FzZXMgQ29tbW9uTXN1YiBhbmQgQ29tbW9uTXN1cFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vblNjcmlwdGJhc2UsIFNjcmlwdGJhc2VDb25zdHJ1Y3Rvcn0gZnJvbSAnLi9zY3JpcHRiYXNlLmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcbmltcG9ydCB7TW1sTXN1YnN1cCwgTW1sTXN1YiwgTW1sTXN1cH0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21zdWJzdXAuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Nc3ViIGludGVyZmFjZVxuICpcbiAqIEB0ZW1wbGF0ZSBXICBUaGUgY2hpbGQtbm9kZSBXcmFwcGVyIGNsYXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uTXN1YjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gZXh0ZW5kcyBDb21tb25TY3JpcHRiYXNlPFc+IHtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25Nc3ViIGNvbnN0cnVjdG9yXG4gKlxuICogQHRlbXBsYXRlIFcgIFRoZSBjaGlsZC1ub2RlIFdyYXBwZXIgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgTXN1YkNvbnN0cnVjdG9yPFcgZXh0ZW5kcyBBbnlXcmFwcGVyPiA9IENvbnN0cnVjdG9yPENvbW1vbk1zdWI8Vz4+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Nc3ViIHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNc3ViIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBXICBUaGUgY2hpbGQtbm9kZSBXcmFwcGVyIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFdyYXBwZXIgY2xhc3MgY29uc3RydWN0b3IgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbW9uTXN1Yk1peGluPFxuICBXIGV4dGVuZHMgQW55V3JhcHBlcixcbiAgVCBleHRlbmRzIFNjcmlwdGJhc2VDb25zdHJ1Y3RvcjxXPlxuPihCYXNlOiBUKTogTXN1YkNvbnN0cnVjdG9yPFc+ICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBEbyBub3QgaW5jbHVkZSBpdGFsaWMgY29ycmVjdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgdXNlSUM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2NyaXB0Q2hpbGQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzWyh0aGlzLm5vZGUgYXMgTW1sTXN1Yikuc3ViXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHNoaWZ0IGZvciB0aGUgc3Vic2NyaXB0XG4gICAgICpcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T2Zmc2V0KCkge1xuICAgICAgcmV0dXJuIFswLCAtdGhpcy5nZXRWKCldO1xuICAgIH1cblxuICB9O1xuXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1zdXAgaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIFcgIFRoZSBjaGlsZC1ub2RlIFdyYXBwZXIgY2xhc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25Nc3VwPFcgZXh0ZW5kcyBBbnlXcmFwcGVyPiBleHRlbmRzIENvbW1vblNjcmlwdGJhc2U8Vz4ge1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk1zdXAgY29uc3RydWN0b3JcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICovXG5leHBvcnQgdHlwZSBNc3VwQ29uc3RydWN0b3I8VyBleHRlbmRzIEFueVdyYXBwZXI+ID0gQ29uc3RydWN0b3I8Q29tbW9uTXN1cDxXPj47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1zdXAgd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE1zdXAgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFcgIFRoZSBjaGlsZC1ub2RlIFdyYXBwZXIgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25Nc3VwTWl4aW48XG4gIFcgZXh0ZW5kcyBBbnlXcmFwcGVyLFxuICBUIGV4dGVuZHMgU2NyaXB0YmFzZUNvbnN0cnVjdG9yPFc+XG4+KEJhc2U6IFQpOiBNc3VwQ29uc3RydWN0b3I8Vz4gJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2NyaXB0Q2hpbGQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzWyh0aGlzLm5vZGUgYXMgTW1sTXN1cCkuc3VwXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHNoaWZ0IGZvciB0aGUgc3VwZXJzY3JpcHRcbiAgICAgKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPZmZzZXQoKSB7XG4gICAgICBjb25zdCB4ID0gdGhpcy5nZXRBZGp1c3RlZEljKCkgLSAodGhpcy5iYXNlUmVtb3ZlSWMgPyAwIDogdGhpcy5iYXNlSWMpO1xuICAgICAgcmV0dXJuIFt4LCB0aGlzLmdldFUoKV07XG4gICAgfVxuXG4gIH07XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTXN1YnN1cCBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbk1zdWJzdXA8VyBleHRlbmRzIEFueVdyYXBwZXI+IGV4dGVuZHMgQ29tbW9uU2NyaXB0YmFzZTxXPiB7XG5cbiAgLyoqXG4gICAqICBDYWNoZWQgdmFsdWVzIGZvciB0aGUgc2NyaXB0IG9mZnNldHMgYW5kIHNlcGFyYXRpb24gKHNvIGlmIHRoZXkgYXJlXG4gICAqICBjb21wdXRlZCBpbiBjb21wdXRlQkJveCgpLCB0aGV5IGRvbid0IGhhdmUgdG8gYmUgcmVjb21wdXRlZCBkdXJpbmcgb3V0cHV0KVxuICAgKi9cbiAgVVZROiBudW1iZXJbXTtcblxuICAvKipcbiAgICogVGhlIHdyYXBwZXIgZm9yIHRoZSBzdWJzY3JpcHRcbiAgICovXG4gIHJlYWRvbmx5IHN1YkNoaWxkOiBXO1xuXG4gIC8qKlxuICAgKiBUaGUgd3JhcHBlciBmb3IgdGhlIHN1cGVyc2NyaXB0XG4gICAqL1xuICByZWFkb25seSBzdXBDaGlsZDogVztcblxuICAvKipcbiAgICogR2V0IHRoZSBzaGlmdCBmb3IgdGhlIHNjcmlwdHMgYW5kIHRoZWlyIHNlcGFyYXRpb24gKFRlWEJvb2sgQXBwZW5kaXggRyAxOGFkZWYpXG4gICAqXG4gICAqIEBwYXJhbSB7QkJveH0gc3ViYm94ICAgICBUaGUgYm91bmRpbmcgYm94IG9mIHRoZSBzdXBlcnNjcmlwdFxuICAgKiBAcGFyYW0ge0JCb3h9IHN1cGJveCAgICAgVGhlIGJvdW5kaW5nIGJveCBvZiB0aGUgc3Vic2NyaXB0XG4gICAqIEByZXR1cm4ge251bWJlcltdfSAgICAgICBUaGUgdmVydGljYWwgb2Zmc2V0cyBmb3Igc3VwZXIgYW5kIHN1YnNjcmlwdHMsIGFuZCB0aGUgc3BhY2UgYmV0d2VlbiB0aGVtXG4gICAqL1xuICBnZXRVVlEoc3ViYm94PzogQkJveCwgc3VwYm94PzogQkJveCk6IG51bWJlcltdO1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk1zdWJzdXAgY29uc3RydWN0b3JcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICovXG5leHBvcnQgdHlwZSBNc3Vic3VwQ29uc3RydWN0b3I8VyBleHRlbmRzIEFueVdyYXBwZXI+ID0gQ29uc3RydWN0b3I8Q29tbW9uTXN1YnN1cDxXPj47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbU1zdWJzdXAgd3JhcHBlciBmb3IgdGhlIE1tbE1zdWJzdXAgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFcgIFRoZSBjaGlsZC1ub2RlIFdyYXBwZXIgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25Nc3Vic3VwTWl4aW48XG4gIFcgZXh0ZW5kcyBBbnlXcmFwcGVyLFxuICBUIGV4dGVuZHMgU2NyaXB0YmFzZUNvbnN0cnVjdG9yPFc+XG4+KEJhc2U6IFQpOiBNc3Vic3VwQ29uc3RydWN0b3I8Vz4gJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIERvIG5vdCBpbmNsdWRlIGl0YWxpYyBjb3JyZWN0aW9uXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyB1c2VJQzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogIENhY2hlZCB2YWx1ZXMgZm9yIHRoZSBzY3JpcHQgb2Zmc2V0cyBhbmQgc2VwYXJhdGlvbiAoc28gaWYgdGhleSBhcmVcbiAgICAgKiAgY29tcHV0ZWQgaW4gY29tcHV0ZUJCb3goKSwgdGhleSBkb24ndCBoYXZlIHRvIGJlIHJlY29tcHV0ZWQgZHVyaW5nIG91dHB1dClcbiAgICAgKi9cbiAgICBwdWJsaWMgVVZROiBudW1iZXJbXSA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtXfSAgVGhlIHdyYXBwZXIgZm9yIHRoZSBzdWJzY3JpcHRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN1YkNoaWxkKCk6IFcge1xuICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1sodGhpcy5ub2RlIGFzIE1tbE1zdWJzdXApLnN1Yl07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7V30gIFRoZSB3cmFwcGVyIGZvciB0aGUgc3VwZXJzY3JpcHRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHN1cENoaWxkKCk6IFcge1xuICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1sodGhpcy5ub2RlIGFzIE1tbE1zdWJzdXApLnN1cF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNvbXB1dGVCQm94KGJib3g6IEJCb3gsIHJlY29tcHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBjb25zdCBiYXNlYm94ID0gdGhpcy5iYXNlQ2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCBbc3ViYm94LCBzdXBib3hdID0gW3RoaXMuc3ViQ2hpbGQuZ2V0T3V0ZXJCQm94KCksIHRoaXMuc3VwQ2hpbGQuZ2V0T3V0ZXJCQm94KCldO1xuICAgICAgYmJveC5lbXB0eSgpO1xuICAgICAgYmJveC5hcHBlbmQoYmFzZWJveCk7XG4gICAgICBjb25zdCB3ID0gdGhpcy5nZXRCYXNlV2lkdGgoKTtcbiAgICAgIGNvbnN0IHggPSB0aGlzLmdldEFkanVzdGVkSWMoKTtcbiAgICAgIGNvbnN0IFt1LCB2XSA9IHRoaXMuZ2V0VVZRKCk7XG4gICAgICBiYm94LmNvbWJpbmUoc3ViYm94LCB3LCB2KTtcbiAgICAgIGJib3guY29tYmluZShzdXBib3gsIHcgKyB4LCB1KTtcbiAgICAgIGJib3gudyArPSB0aGlzLmZvbnQucGFyYW1zLnNjcmlwdHNwYWNlO1xuICAgICAgYmJveC5jbGVhbigpO1xuICAgICAgdGhpcy5zZXRDaGlsZFBXaWR0aHMocmVjb21wdXRlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIHNoaWZ0IGZvciB0aGUgc2NyaXB0cyBhbmQgdGhlaXIgc2VwYXJhdGlvbiAoVGVYQm9vayBBcHBlbmRpeCBHIDE4YWRlZilcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QkJveH0gc3ViYm94ICAgICBUaGUgYm91bmRpbmcgYm94IG9mIHRoZSBzdXBlcnNjcmlwdFxuICAgICAqIEBwYXJhbSB7QkJveH0gc3VwYm94ICAgICBUaGUgYm91bmRpbmcgYm94IG9mIHRoZSBzdWJzY3JpcHRcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICAgICAgVGhlIHZlcnRpY2FsIG9mZnNldHMgZm9yIHN1cGVyIGFuZCBzdWJzY3JpcHRzLCBhbmQgdGhlIHNwYWNlIGJldHdlZW4gdGhlbVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRVVlEoXG4gICAgICBzdWJib3g6IEJCb3ggPSB0aGlzLnN1YkNoaWxkLmdldE91dGVyQkJveCgpLFxuICAgICAgc3VwYm94OiBCQm94ID0gdGhpcy5zdXBDaGlsZC5nZXRPdXRlckJCb3goKVxuICAgICk6IG51bWJlcltdIHtcbiAgICAgIGNvbnN0IGJhc2Vib3ggPSB0aGlzLmJhc2VDb3JlLmdldE91dGVyQkJveCgpO1xuICAgICAgaWYgKHRoaXMuVVZRKSByZXR1cm4gdGhpcy5VVlE7XG4gICAgICBjb25zdCB0ZXggPSB0aGlzLmZvbnQucGFyYW1zO1xuICAgICAgY29uc3QgdCA9IDMgKiB0ZXgucnVsZV90aGlja25lc3M7XG4gICAgICBjb25zdCBzdWJzY3JpcHRzaGlmdCA9IHRoaXMubGVuZ3RoMmVtKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnc3Vic2NyaXB0c2hpZnQnKSwgdGV4LnN1YjIpO1xuICAgICAgY29uc3QgZHJvcCA9IHRoaXMuYmFzZUNoYXJaZXJvKGJhc2Vib3guZCAqIHRoaXMuYmFzZVNjYWxlICsgdGV4LnN1Yl9kcm9wICogc3ViYm94LnJzY2FsZSk7XG4gICAgICAvL1xuICAgICAgLy8gdSBhbmQgdiBhcmUgdGhlIHZlcml0Y2FsIHNoaWZ0cyBvZiB0aGUgc2NyaXB0cywgaW5pdGlhbGx5IHNldCB0byBtaW5pbXVtIHZhbHVlcyBhbmQgdGhlbiBhZGp1c3RlZFxuICAgICAgLy9cbiAgICAgIGxldCBbdSwgdl0gPSBbdGhpcy5nZXRVKCksIE1hdGgubWF4KGRyb3AsIHN1YnNjcmlwdHNoaWZ0KV07XG4gICAgICAvL1xuICAgICAgLy8gcSBpcyB0aGUgc3BhY2UgY3VycmVudGx5IGJldHdlZW4gdGhlIHN1cGVyLSBhbmQgc3Vic2NyaXB0cy5cbiAgICAgIC8vIElmIGl0IGlzIGxlc3MgdGhhbiAzIHJ1bGUgdGhpY2tuZXNzZXMsXG4gICAgICAvLyAgIGluY3JlYXNlIHRoZSBzdWJzY3JpcHQgb2Zmc2V0IHRvIG1ha2UgdGhlIHNwYWNlIDMgcnVsZSB0aGlja25lc3Nlc1xuICAgICAgLy8gICBJZiB0aGUgYm90dG9tIG9mIHRoZSBzdXBlcnNjcmlwdCBpcyBiZWxvdyA0LzUgb2YgdGhlIHgtaGVpZ2h0XG4gICAgICAvLyAgICAgcmFpc2UgYm90aCB0aGUgc3VwZXItIGFuZCBzdWJzY3JpcHRzIGJ5IHRoZSBkaWZmZXJlbmNlXG4gICAgICAvLyAgICAgKG1ha2UgdGhlIGJvdHRvbSBvZiB0aGUgc3VwZXJzY3JpcHQgYmUgYXQgNC81IHRoZSB4LWhlaWdodCwgYW5kIHRoZVxuICAgICAgLy8gICAgICBzdWJzY3JpcHQgMyBydWxlIHRoaWNrbmVzcyBiZWxvdyB0aGF0KS5cbiAgICAgIC8vXG4gICAgICBsZXQgcSA9ICh1IC0gc3VwYm94LmQgKiBzdXBib3gucnNjYWxlKSAtIChzdWJib3guaCAqIHN1YmJveC5yc2NhbGUgLSB2KTtcbiAgICAgIGlmIChxIDwgdCkge1xuICAgICAgICB2ICs9IHQgLSBxO1xuICAgICAgICBjb25zdCBwID0gKDQgLyA1KSAqIHRleC54X2hlaWdodCAtICh1IC0gc3VwYm94LmQgKiBzdXBib3gucnNjYWxlKTtcbiAgICAgICAgaWYgKHAgPiAwKSB7XG4gICAgICAgICAgdSArPSBwO1xuICAgICAgICAgIHYgLT0gcDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy9cbiAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgc2hpZnRzIGFyZSBhdCBsZWFzdCB0aGUgbWluaW11bSBhbW91bnRzIGFuZFxuICAgICAgLy8gcmV0dXJuIHRoZSBzaGlmdHMgYW5kIHRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBzY3JpcHRzXG4gICAgICAvL1xuICAgICAgdSA9IE1hdGgubWF4KHRoaXMubGVuZ3RoMmVtKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnc3VwZXJzY3JpcHRzaGlmdCcpLCB1KSwgdSk7XG4gICAgICB2ID0gTWF0aC5tYXgodGhpcy5sZW5ndGgyZW0odGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdzdWJzY3JpcHRzaGlmdCcpLCB2KSwgdik7XG4gICAgICBxID0gKHUgLSBzdXBib3guZCAqIHN1cGJveC5yc2NhbGUpIC0gKHN1YmJveC5oICogc3ViYm94LnJzY2FsZSAtIHYpO1xuICAgICAgdGhpcy5VVlEgPSBbdSwgLXYsIHFdO1xuICAgICAgcmV0dXJuIHRoaXMuVVZRO1xuICAgIH1cblxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE1zdWJzdXAsIE1tbE1zdWIsIGFuZCBNbWxNc3VwIG5vZGVzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7QWJzdHJhY3RNbWxCYXNlTm9kZSwgQXR0cmlidXRlTGlzdH0gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1zdWJzdXAgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxCYXNlTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTXN1YnN1cCBleHRlbmRzIEFic3RyYWN0TW1sQmFzZU5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbEJhc2VOb2RlLmRlZmF1bHRzLFxuICAgIHN1YnNjcmlwdHNoaWZ0OiAnJyxcbiAgICBzdXBlcnNjcmlwdHNoaWZ0OiAnJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21zdWJzdXAnO1xuICB9XG5cbiAgLyoqXG4gICAqIDxtc3Vic3VwPiByZXF1aXJlcyB0aHJlZSBjaGlsZHJlblxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgYXJpdHkoKSB7XG4gICAgcmV0dXJuIDM7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSAgVGhlIHBvc2l0aW9uIG9mIHRoZSBiYXNlIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBnZXQgYmFzZSgpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge251bWJlcn0gIFRoZSBwb3NpdGlvbiBvZiB0aGUgc3Vic2NyaXB0IChvdmVycmlkZGVuIGluIG1zdXAgYmVsb3cpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN1YigpOiBudW1iZXIge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge251bWJlcn0gIFRoZSBwb3NpdGlvbiBvZiB0aGUgc3VwZXJzY3JpcHQgKG92ZXJyaWRkZW4gaW4gbXN1cCBiZWxvdylcbiAgICovXG4gIHB1YmxpYyBnZXQgc3VwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDI7XG4gIH1cblxuICAvKipcbiAgICogU3VwZXItIGFuZCBzdWJzY3JpcHRzIGFyZSBub3QgaW4gZGlzcGxheW1vZGUsIGhhdmUgc2NyaXB0bGV2ZWwgaW5jcmVhc2VkLCBhbmQgcHJpbWUgc3R5bGUgaW4gc3Vic2NyaXB0cy5cbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q2hpbGRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZUxpc3QsIGRpc3BsYXk6IGJvb2xlYW4sIGxldmVsOiBudW1iZXIsIHByaW1lOiBib29sZWFuKSB7XG4gICAgbGV0IG5vZGVzID0gdGhpcy5jaGlsZE5vZGVzO1xuICAgIG5vZGVzWzBdLnNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgZGlzcGxheSwgbGV2ZWwsIHByaW1lKTtcbiAgICBub2Rlc1sxXS5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGZhbHNlLCBsZXZlbCArIDEsIHByaW1lIHx8IHRoaXMuc3ViID09PSAxKTtcbiAgICBpZiAoIW5vZGVzWzJdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG5vZGVzWzJdLnNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgZmFsc2UsIGxldmVsICsgMSwgcHJpbWUgfHwgdGhpcy5zdWIgPT09IDIpO1xuICB9XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTXN1YiBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBNbWxNc3Vic3VwKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNc3ViIGV4dGVuZHMgTW1sTXN1YnN1cCB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLk1tbE1zdWJzdXAuZGVmYXVsdHNcbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtc3ViJztcbiAgfVxuXG4gIC8qKlxuICAgKiA8bXN1Yj4gb25seSBnZXRzIHR3byBjaGlsZHJlblxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgYXJpdHkoKSB7XG4gICAgcmV0dXJuIDI7XG4gIH1cblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNc3VwIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIE1tbE1zdWJzdXApXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1zdXAgZXh0ZW5kcyBNbWxNc3Vic3VwIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uTW1sTXN1YnN1cC5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21zdXAnO1xuICB9XG5cbiAgLyoqXG4gICAqIDxtc3VwPiBvbmx5IGdldHMgdHdvIGNoaWxkcmVuXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgZ2V0IGFyaXR5KCkge1xuICAgIHJldHVybiAyO1xuICB9XG5cbiAgLyoqXG4gICAqIGNoaWxkIDEgaXMgc3VwZXJzY3JpcHRcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBnZXQgc3VwKCkge1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgLyoqXG4gICAqIGNoaWxkIDIgaXMgbnVsbCAobm8gc3Vic2NyaXB0KVxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBzdWIoKSB7XG4gICAgcmV0dXJuIDI7XG4gIH1cblxufVxuXG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR21zdWJzdXAgd3JhcHBlciBmb3IgdGhlIE1tbE1zdWJzdXAgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICBhbmQgdGhlIHNwZWNpYWwgY2FzZXMgU1ZHbXN1YiBhbmQgU1ZHbXN1cFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge1NWR3NjcmlwdGJhc2V9IGZyb20gJy4vc2NyaXB0YmFzZS5qcyc7XG5pbXBvcnQge0NvbW1vbk1zdWJNaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21zdWJzdXAuanMnO1xuaW1wb3J0IHtDb21tb25Nc3VwTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tc3Vic3VwLmpzJztcbmltcG9ydCB7Q29tbW9uTXN1YnN1cE1peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbXN1YnN1cC5qcyc7XG5pbXBvcnQge01tbE1zdWJzdXAsIE1tbE1zdWIsIE1tbE1zdXB9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tc3Vic3VwLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbXN1YiB3cmFwcGVyIGZvciB0aGUgTW1sTXN1YiBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdtc3ViPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk1zdWJNaXhpbjxTVkdXcmFwcGVyPGFueSwgYW55LCBhbnk+LCBDb25zdHJ1Y3RvcjxTVkdzY3JpcHRiYXNlPGFueSwgYW55LCBhbnk+Pj4oU1ZHc2NyaXB0YmFzZSkgIHtcblxuICAvKipcbiAgICogVGhlIG1zdWIgd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTXN1Yi5wcm90b3R5cGUua2luZDtcblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBTVkdtc3VwIHdyYXBwZXIgZm9yIHRoZSBNbWxNc3VwIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNsYXNzIFNWR21zdXA8TiwgVCwgRD4gZXh0ZW5kc1xuQ29tbW9uTXN1cE1peGluPFNWR1dyYXBwZXI8YW55LCBhbnksIGFueT4sIENvbnN0cnVjdG9yPFNWR3NjcmlwdGJhc2U8YW55LCBhbnksIGFueT4+PihTVkdzY3JpcHRiYXNlKSAge1xuXG4gIC8qKlxuICAgKiBUaGUgbXN1cCB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxNc3VwLnByb3RvdHlwZS5raW5kO1xuXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIFNWR21zdWJzdXAgd3JhcHBlciBmb3IgdGhlIE1tbE1zdWJzdXAgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHbXN1YnN1cDxOLCBULCBEPiBleHRlbmRzXG5Db21tb25Nc3Vic3VwTWl4aW48U1ZHV3JhcHBlcjxhbnksIGFueSwgYW55PiwgQ29uc3RydWN0b3I8U1ZHc2NyaXB0YmFzZTxhbnksIGFueSwgYW55Pj4+KFNWR3NjcmlwdGJhc2UpICB7XG5cbiAgLyoqXG4gICAqIFRoZSBtc3Vic3VwIHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE1zdWJzdXAucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU1ZHKHBhcmVudDogTikge1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3RhbmRhcmRTVkdub2RlKHBhcmVudCk7XG4gICAgY29uc3QgW2Jhc2UsIHN1cCwgc3ViXSA9IFt0aGlzLmJhc2VDaGlsZCwgdGhpcy5zdXBDaGlsZCwgdGhpcy5zdWJDaGlsZF07XG4gICAgY29uc3QgdyA9IHRoaXMuZ2V0QmFzZVdpZHRoKCk7XG4gICAgY29uc3QgeCA9IHRoaXMuZ2V0QWRqdXN0ZWRJYygpO1xuICAgIGNvbnN0IFt1LCB2XSA9IHRoaXMuZ2V0VVZRKCk7XG5cbiAgICBiYXNlLnRvU1ZHKHN2Zyk7XG4gICAgc3VwLnRvU1ZHKHN2Zyk7XG4gICAgc3ViLnRvU1ZHKHN2Zyk7XG5cbiAgICBzdWIucGxhY2Uodywgdik7XG4gICAgc3VwLnBsYWNlKHcgKyB4LCB1KTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIENvbW1vbk11bmRlcm92ZXIgd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE11bmRlcm92ZXIgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICBhbmQgdGhlIHNwZWNpYWwgY2FzZXMgQ29tbW9uTXVuZGVyIGFuZCBDb21tb25Nc3VwXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0FueVdyYXBwZXIsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uU2NyaXB0YmFzZSwgU2NyaXB0YmFzZUNvbnN0cnVjdG9yfSBmcm9tICcuL3NjcmlwdGJhc2UuanMnO1xuaW1wb3J0IHtNbWxNdW5kZXJvdmVyLCBNbWxNdW5kZXIsIE1tbE1vdmVyfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXVuZGVyb3Zlci5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uLy4uL3V0aWwvQkJveC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk11bmRlciBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbk11bmRlcjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gZXh0ZW5kcyBDb21tb25TY3JpcHRiYXNlPFc+IHtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25NdW5kZXIgY29uc3RydWN0b3JcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICovXG5leHBvcnQgdHlwZSBNdW5kZXJDb25zdHJ1Y3RvcjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gPSBDb25zdHJ1Y3RvcjxDb21tb25NdW5kZXI8Vz4+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NdW5kZXIgd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE11bmRlciBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk11bmRlck1peGluPFxuICBXIGV4dGVuZHMgQW55V3JhcHBlcixcbiAgVCBleHRlbmRzIFNjcmlwdGJhc2VDb25zdHJ1Y3RvcjxXPlxuPihCYXNlOiBUKTogTXVuZGVyQ29uc3RydWN0b3I8Vz4gJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2NyaXB0Q2hpbGQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzWyh0aGlzLm5vZGUgYXMgTW1sTXVuZGVyKS51bmRlcl07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgdGhpcy5zdHJldGNoQ2hpbGRyZW4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCwgcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIGlmICh0aGlzLmhhc01vdmFibGVMaW1pdHMoKSkge1xuICAgICAgICBzdXBlci5jb21wdXRlQkJveChiYm94LCByZWNvbXB1dGUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBiYm94LmVtcHR5KCk7XG4gICAgICBjb25zdCBiYXNlYm94ID0gdGhpcy5iYXNlQ2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCB1bmRlcmJveCA9IHRoaXMuc2NyaXB0Q2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCB2ID0gdGhpcy5nZXRVbmRlcktWKGJhc2Vib3gsIHVuZGVyYm94KVsxXTtcbiAgICAgIGNvbnN0IGRlbHRhID0gKHRoaXMuaXNMaW5lQmVsb3cgPyAwIDogdGhpcy5nZXREZWx0YSh0cnVlKSk7XG4gICAgICBjb25zdCBbYncsIHV3XSA9IHRoaXMuZ2V0RGVsdGFXKFtiYXNlYm94LCB1bmRlcmJveF0sIFswLCAtZGVsdGFdKTtcbiAgICAgIGJib3guY29tYmluZShiYXNlYm94LCBidywgMCk7XG4gICAgICBiYm94LmNvbWJpbmUodW5kZXJib3gsIHV3LCB2KTtcbiAgICAgIGJib3guZCArPSB0aGlzLmZvbnQucGFyYW1zLmJpZ19vcF9zcGFjaW5nNTtcbiAgICAgIGJib3guY2xlYW4oKTtcbiAgICAgIHRoaXMuc2V0Q2hpbGRQV2lkdGhzKHJlY29tcHV0ZSk7XG4gICAgfVxuXG4gIH07XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTW92ZXIgaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIFcgIFRoZSBjaGlsZC1ub2RlIFdyYXBwZXIgY2xhc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25Nb3ZlcjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gZXh0ZW5kcyBDb21tb25TY3JpcHRiYXNlPFc+IHtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25Nb3ZlciBjb25zdHJ1Y3RvclxuICpcbiAqIEB0ZW1wbGF0ZSBXICBUaGUgY2hpbGQtbm9kZSBXcmFwcGVyIGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIE1vdmVyQ29uc3RydWN0b3I8VyBleHRlbmRzIEFueVdyYXBwZXI+ID0gQ29uc3RydWN0b3I8Q29tbW9uTW92ZXI8Vz4+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25Nb3ZlciB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTW92ZXIgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFcgIFRoZSBjaGlsZC1ub2RlIFdyYXBwZXIgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25Nb3Zlck1peGluPFxuICBXIGV4dGVuZHMgQW55V3JhcHBlcixcbiAgVCBleHRlbmRzIFNjcmlwdGJhc2VDb25zdHJ1Y3RvcjxXPlxuPihCYXNlOiBUKTogTW92ZXJDb25zdHJ1Y3RvcjxXPiAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldCBzY3JpcHRDaGlsZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbKHRoaXMubm9kZSBhcyBNbWxNb3Zlcikub3Zlcl07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgdGhpcy5zdHJldGNoQ2hpbGRyZW4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCkge1xuICAgICAgaWYgKHRoaXMuaGFzTW92YWJsZUxpbWl0cygpKSB7XG4gICAgICAgIHN1cGVyLmNvbXB1dGVCQm94KGJib3gpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBiYm94LmVtcHR5KCk7XG4gICAgICBjb25zdCBiYXNlYm94ID0gdGhpcy5iYXNlQ2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCBvdmVyYm94ID0gdGhpcy5zY3JpcHRDaGlsZC5nZXRPdXRlckJCb3goKTtcbiAgICAgIGlmICh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2FjY2VudCcpKSB7XG4gICAgICAgIGJhc2Vib3guaCA9IE1hdGgubWF4KGJhc2Vib3guaCwgdGhpcy5mb250LnBhcmFtcy54X2hlaWdodCAqIGJhc2Vib3guc2NhbGUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdSA9IHRoaXMuZ2V0T3ZlcktVKGJhc2Vib3gsIG92ZXJib3gpWzFdO1xuICAgICAgY29uc3QgZGVsdGEgPSAodGhpcy5pc0xpbmVBYm92ZSA/IDAgOiB0aGlzLmdldERlbHRhKCkpO1xuICAgICAgY29uc3QgW2J3LCBvd10gPSB0aGlzLmdldERlbHRhVyhbYmFzZWJveCwgb3ZlcmJveF0sIFswLCBkZWx0YV0pO1xuICAgICAgYmJveC5jb21iaW5lKGJhc2Vib3gsIGJ3LCAwKTtcbiAgICAgIGJib3guY29tYmluZShvdmVyYm94LCBvdywgdSk7XG4gICAgICBiYm94LmggKz0gdGhpcy5mb250LnBhcmFtcy5iaWdfb3Bfc3BhY2luZzU7XG4gICAgICBiYm94LmNsZWFuKCk7XG4gICAgfVxuXG4gIH07XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTXVuZGVyb3ZlciBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbk11bmRlcm92ZXI8VyBleHRlbmRzIEFueVdyYXBwZXI+IGV4dGVuZHMgQ29tbW9uU2NyaXB0YmFzZTxXPiB7XG5cbiAgLypcbiAgICogVGhlIHdyYXBwZWQgdW5kZXIgbm9kZVxuICAgKi9cbiAgcmVhZG9ubHkgdW5kZXJDaGlsZDogVztcblxuICAvKlxuICAgKiBUaGUgd3JhcHBlZCBvdmVyZGVyIG5vZGVcbiAgICovXG4gIHJlYWRvbmx5IG92ZXJDaGlsZDogVztcblxufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk11bmRlcm92ZXIgY29uc3RydWN0b3JcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICovXG5leHBvcnQgdHlwZSBNdW5kZXJvdmVyQ29uc3RydWN0b3I8VyBleHRlbmRzIEFueVdyYXBwZXI+ID0gQ29uc3RydWN0b3I8Q29tbW9uTXVuZGVyb3ZlcjxXPj47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4gKiBUaGUgQ29tbW9uTXVuZGVyb3ZlciB3cmFwcGVyIGZvciB0aGUgTW1sTXVuZGVyb3ZlciBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk11bmRlcm92ZXJNaXhpbjxcbiAgVyBleHRlbmRzIEFueVdyYXBwZXIsXG4gIFQgZXh0ZW5kcyBTY3JpcHRiYXNlQ29uc3RydWN0b3I8Vz5cbj4oQmFzZTogVCk6IE11bmRlcm92ZXJDb25zdHJ1Y3RvcjxXPiAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLypcbiAgICAgKiBAcmV0dXJuIHtXfSAgIFRoZSB3cmFwcGVkIHVuZGVyIG5vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHVuZGVyQ2hpbGQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzWyh0aGlzLm5vZGUgYXMgTW1sTXVuZGVyb3ZlcikudW5kZXJdO1xuICAgIH1cblxuICAgIC8qXG4gICAgICogQHJldHVybiB7V30gICBUaGUgd3JhcHBlZCBvdmVyZGVyIG5vZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IG92ZXJDaGlsZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbKHRoaXMubm9kZSBhcyBNbWxNdW5kZXJvdmVyKS5vdmVyXTtcbiAgICB9XG5cbiAgICAvKlxuICAgICAqIE5lZWRlZCBmb3IgbW92YWJsZWxpbWl0c1xuICAgICAqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldCBzdWJDaGlsZCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnVuZGVyQ2hpbGQ7XG4gICAgfVxuXG4gICAgLypcbiAgICAgKiBOZWVkZWQgZm9yIG1vdmFibGVsaW1pdHNcbiAgICAgKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc3VwQ2hpbGQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5vdmVyQ2hpbGQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgdGhpcy5zdHJldGNoQ2hpbGRyZW4oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCkge1xuICAgICAgaWYgKHRoaXMuaGFzTW92YWJsZUxpbWl0cygpKSB7XG4gICAgICAgIHN1cGVyLmNvbXB1dGVCQm94KGJib3gpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBiYm94LmVtcHR5KCk7XG4gICAgICBjb25zdCBvdmVyYm94ID0gdGhpcy5vdmVyQ2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCBiYXNlYm94ID0gdGhpcy5iYXNlQ2hpbGQuZ2V0T3V0ZXJCQm94KCk7XG4gICAgICBjb25zdCB1bmRlcmJveCA9IHRoaXMudW5kZXJDaGlsZC5nZXRPdXRlckJCb3goKTtcbiAgICAgIGlmICh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2FjY2VudCcpKSB7XG4gICAgICAgIGJhc2Vib3guaCA9IE1hdGgubWF4KGJhc2Vib3guaCwgdGhpcy5mb250LnBhcmFtcy54X2hlaWdodCAqIGJhc2Vib3guc2NhbGUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdSA9IHRoaXMuZ2V0T3ZlcktVKGJhc2Vib3gsIG92ZXJib3gpWzFdO1xuICAgICAgY29uc3QgdiA9IHRoaXMuZ2V0VW5kZXJLVihiYXNlYm94LCB1bmRlcmJveClbMV07XG4gICAgICBjb25zdCBkZWx0YSA9IHRoaXMuZ2V0RGVsdGEoKTtcbiAgICAgIGNvbnN0IFtidywgdXcsIG93XSA9IHRoaXMuZ2V0RGVsdGFXKFtiYXNlYm94LCB1bmRlcmJveCwgb3ZlcmJveF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMCwgdGhpcy5pc0xpbmVCZWxvdyA/IDAgOiAtZGVsdGEsIHRoaXMuaXNMaW5lQWJvdmUgPyAwIDogZGVsdGFdKTtcbiAgICAgIGJib3guY29tYmluZShiYXNlYm94LCBidywgMCk7XG4gICAgICBiYm94LmNvbWJpbmUob3ZlcmJveCwgb3csIHUpO1xuICAgICAgYmJveC5jb21iaW5lKHVuZGVyYm94LCB1dywgdik7XG4gICAgICBjb25zdCB6ID0gdGhpcy5mb250LnBhcmFtcy5iaWdfb3Bfc3BhY2luZzU7XG4gICAgICBiYm94LmggKz0gejtcbiAgICAgIGJib3guZCArPSB6O1xuICAgICAgYmJveC5jbGVhbigpO1xuICAgIH1cblxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE11bmRlcm92ZXIgbm9kZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge0Fic3RyYWN0TW1sQmFzZU5vZGUsIEF0dHJpYnV0ZUxpc3R9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNdW5kZXJvdmVyIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTXVuZGVyb3ZlciBleHRlbmRzIEFic3RyYWN0TW1sQmFzZU5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbEJhc2VOb2RlLmRlZmF1bHRzLFxuICAgIGFjY2VudDogZmFsc2UsXG4gICAgYWNjZW50dW5kZXI6IGZhbHNlLFxuICAgIGFsaWduOiAnY2VudGVyJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZXMgb2YgYXR0cmlidXRlcyBjb250cm9saW5nIGFjY2VudHMgZm9yIGVhY2ggY2hpbGQgbm9kZSAocmV2ZXJzZWQgZm9yIG1vdmVyIGJlbG93KVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBBQ0NFTlRTID0gWycnLCAnYWNjZW50dW5kZXInLCAnYWNjZW50J107XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbXVuZGVyb3Zlcic7XG4gIH1cblxuICAvKipcbiAgICogPG11bmRlcm92ZXI+IHJlcXVpcmVzIHRocmVlIGNoaWxkcmVuXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gMztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICBUaGUgYmFzZSBpcyBjaGlsZCAwXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJhc2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICBDaGlsZCAxIGdvZXMgdW5kZXIgKG92ZXJyaWRkZW4gYnkgbW92ZXIgYmVsb3cpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHVuZGVyKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSAgQ2hpbGQgMiBnb2VzIG92ZXIgKG92ZXJyaWRkZW4gYnkgbW92ZXIgYmVsb3cpXG4gICAqL1xuICBwdWJsaWMgZ2V0IG92ZXIoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuXG4gIC8qKlxuICAgKiA8bXVuZGVyb3Zlcj4gY2FuIGNvbnRhaW4gbGluZSBicmVha3NcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpbmVicmVha0NvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCYXNlIGlzIGluIHByaW1lIHN0eWxlIGlmIHRoZXJlIGlzIGFuIG92ZXIgbm9kZVxuICAgKiBGb3JjZSBzY3JpcHRsZXZlbCBjaGFuZ2UgaWYgY29udmVydGVkIHRvIHN1Yi1zdXAgYnkgbW92YWJsZWxpbWl0cyBvbiB0aGUgYmFzZSBpbiBub24tZGlzcGxheSBtb2RlXG4gICAqIEFkanVzdCBkaXNwbGF5c3R5bGUsIHNjcmlwdGxldmVsLCBhbmQgcHJpbWVzdHlsZSBmb3IgdGhlIHVuZGVyL292ZXIgbm9kZXMgYW5kIGNoZWNrIGlmIGFjY2VudFxuICAgKiAgIHZhbHVlcyBoYXZlIGNoYW5nZWQgZHVlIHRvIHRoZSBpbmhlcml0YW5jZSAoZS5nLiwgc2V0dGluZ3MgaW4gb3BlcmF0b3IgZGljdGlvbmFyeSlcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0Q2hpbGRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXM6IEF0dHJpYnV0ZUxpc3QsIGRpc3BsYXk6IGJvb2xlYW4sIGxldmVsOiBudW1iZXIsIHByaW1lOiBib29sZWFuKSB7XG4gICAgbGV0IG5vZGVzID0gdGhpcy5jaGlsZE5vZGVzO1xuICAgIG5vZGVzWzBdLnNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgZGlzcGxheSwgbGV2ZWwsIHByaW1lIHx8ICEhbm9kZXNbdGhpcy5vdmVyXSk7XG4gICAgbGV0IGZvcmNlID0gISEoIWRpc3BsYXkgJiYgbm9kZXNbMF0uY29yZU1PKCkuYXR0cmlidXRlcy5nZXQoJ21vdmFibGVsaW1pdHMnKSk7XG4gICAgbGV0IEFDQ0VOVFMgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgTW1sTXVuZGVyb3ZlcikuQUNDRU5UUztcbiAgICBub2Rlc1sxXS5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTY3JpcHRsZXZlbChBQ0NFTlRTWzFdLCBmb3JjZSwgbGV2ZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWUgfHwgdGhpcy51bmRlciA9PT0gMSk7XG4gICAgdGhpcy5zZXRJbmhlcml0ZWRBY2NlbnQoMSwgQUNDRU5UU1sxXSwgZGlzcGxheSwgbGV2ZWwsIHByaW1lLCBmb3JjZSk7XG4gICAgaWYgKCFub2Rlc1syXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBub2Rlc1syXS5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRTY3JpcHRsZXZlbChBQ0NFTlRTWzJdLCBmb3JjZSwgbGV2ZWwpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWUgfHwgdGhpcy51bmRlciA9PT0gMik7XG4gICAgdGhpcy5zZXRJbmhlcml0ZWRBY2NlbnQoMiwgQUNDRU5UU1syXSwgZGlzcGxheSwgbGV2ZWwsIHByaW1lLCBmb3JjZSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFjY2VudCAgVGhlIG5hbWUgb2YgdGhlIGFjY2VudCBhdHRyaWJ1dGUgdG8gY2hlY2sgKFwiYWNjZW50XCIgb3IgXCJhY2NlbnR1bmRlclwiKVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcmNlICBUcnVlIGlmIHRoZSBzY3JpcHRsZXZlbCBjaGFuZ2UgaXMgdG8gYmUgZm9yY2VkIHRvIG9jY3VyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZXZlbCAgIFRoZSBjdXJyZW50IHNjcmlwdGxldmVsXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgIFRoZSBuZXcgc2NyaXB0IGxldmVsIGJhc2VkIG9uIHRoZSBhY2NlbnQgYXR0cmlidXRlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0U2NyaXB0bGV2ZWwoYWNjZW50OiBzdHJpbmcsIGZvcmNlOiBib29sZWFuLCBsZXZlbDogbnVtYmVyKTogbnVtYmVyIHtcbiAgICBpZiAoZm9yY2UgfHwgIXRoaXMuYXR0cmlidXRlcy5nZXQoYWNjZW50KSkge1xuICAgICAgbGV2ZWwrKztcbiAgICB9XG4gICAgcmV0dXJuIGxldmVsO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGFuIHVuZGVyIG9yIG92ZXIgYWNjZW50IHNob3VsZCBjYXVzZSB0aGUgYXBwcm9wcmlhdGUgYWNjZW50IGF0dHJpYnV0ZSB0byBiZSBpbmhlcml0ZWRcbiAgICogICBvbiB0aGUgbXVuZGVyb3ZlciBub2RlLCBhbmQgaWYgaXQgaXMgbm90IHRoZSBkZWZhdWx0LCByZS1pbmhlcml0IHRoZSBzY3JpcHRsZXZlbCwgc2luY2UgdGhhdFxuICAgKiAgIGlzIGFmZmVjdGVkIGJ5IHRoZSBhY2NlbnQgYXR0cmlidXRlXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuICAgICAgICAgVGhlIGluZGV4IG9mIHRoZSBub2RlIHRvIGNoZWNrXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhY2NlbnQgICAgVGhlIG5hbWUgb2YgdGhlIGFjY2VudCBhdHRyaWJ1dGUgdG8gY2hlY2sgKFwiYWNjZW50XCIgb3IgXCJhY2NlbnR1bmRlclwiKVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRpc3BsYXkgIFRoZSBkaXNwbGF5c3R5bGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGxldmVsICAgICBUaGUgc2NyaXB0bGV2ZWxcbiAgICogQHBhcmFtIHtudW1iZXJ9IHByaW1lICAgICBUaGUgVGVYIHByaW1lIHN0eWxlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZm9yY2UgICAgV2hldGhlciB0byBmb3JjZSB0aGUgc2NyaXB0bGV2ZWwgY2hhbmdlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0SW5oZXJpdGVkQWNjZW50KG46IG51bWJlciwgYWNjZW50OiBzdHJpbmcsIGRpc3BsYXk6IGJvb2xlYW4sIGxldmVsOiBudW1iZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbWU6IGJvb2xlYW4sIGZvcmNlOiBib29sZWFuKSB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLmNoaWxkTm9kZXNbbl07XG4gICAgaWYgKHRoaXMuYXR0cmlidXRlcy5nZXRFeHBsaWNpdChhY2NlbnQpID09IG51bGwgJiYgbm9kZS5pc0VtYmVsbGlzaGVkKSB7XG4gICAgICBsZXQgdmFsdWUgPSBub2RlLmNvcmVNTygpLmF0dHJpYnV0ZXMuZ2V0KCdhY2NlbnQnKTtcbiAgICAgIHRoaXMuYXR0cmlidXRlcy5zZXRJbmhlcml0ZWQoYWNjZW50LCB2YWx1ZSk7XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuYXR0cmlidXRlcy5nZXREZWZhdWx0KGFjY2VudCkpIHtcbiAgICAgICAgbm9kZS5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKHt9LCBkaXNwbGF5LCB0aGlzLmdldFNjcmlwdGxldmVsKGFjY2VudCwgZm9yY2UsIGxldmVsKSwgcHJpbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE11bmRlciBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBNbWxNdW5kZXJvdmVyKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNdW5kZXIgZXh0ZW5kcyBNbWxNdW5kZXJvdmVyIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgICAuLi5NbWxNdW5kZXJvdmVyLmRlZmF1bHRzXG4gIH07XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbXVuZGVyJztcbiAgfVxuXG4gIC8qKlxuICAgKiA8bXVuZGVyPiBoYXMgb25seSB0d28gY2hpbGRyZW5cbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaXR5KCkge1xuICAgIHJldHVybiAyO1xuICB9XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTW92ZXIgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgTW1sTXVuZGVyb3ZlcilcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTW92ZXIgZXh0ZW5kcyBNbWxNdW5kZXJvdmVyIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgICAuLi5NbWxNdW5kZXJvdmVyLmRlZmF1bHRzXG4gIH07XG4gIC8qKlxuICAgKiAgVGhlIGZpcnN0IGNoaWxkIGlzIHRoZSBvdmVyIGFjY2VudCAoc2Vjb25kIG5ldmVyIG9jY3VycylcbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgQUNDRU5UUyA9IFsnJywgJ2FjY2VudCcsICdhY2NlbnR1bmRlciddO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21vdmVyJztcbiAgfVxuXG4gIC8qKlxuICAgKiA8bW92ZXI+IGhhcyBvbmx5IHR3byBjaGlsZHJlblxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGlsZCAxIGlzIHRoZSBvdmVyIG5vZGVcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IG92ZXIoKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKipcbiAgICogQ2hpbGQgMiBpcyB0aGUgbnVsbCAodGhlIHVuZGVyIG5vZGUpXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCB1bmRlcigpIHtcbiAgICByZXR1cm4gMjtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR211bmRlcm92ZXIgd3JhcHBlciBmb3IgdGhlIE1tbE11bmRlcm92ZXIgb2JqZWN0XG4gKiAgICAgICAgICAgICAgICBhbmQgdGhlIHNwZWNpYWwgY2FzZXMgU1ZHbXVuZGVyIGFuZCBTVkdtc3VwXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXIsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7U1ZHbXN1YnN1cCwgU1ZHbXN1YiwgU1ZHbXN1cH0gZnJvbSAnLi9tc3Vic3VwLmpzJztcbmltcG9ydCB7Q29tbW9uTXVuZGVyTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tdW5kZXJvdmVyLmpzJztcbmltcG9ydCB7IENvbW1vbk1vdmVyTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tdW5kZXJvdmVyLmpzJztcbmltcG9ydCB7Q29tbW9uTXVuZGVyb3Zlck1peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbXVuZGVyb3Zlci5qcyc7XG5pbXBvcnQge01tbE11bmRlcm92ZXIsIE1tbE11bmRlciwgTW1sTW92ZXJ9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tdW5kZXJvdmVyLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbXVuZGVyIHdyYXBwZXIgZm9yIHRoZSBNbWxNdW5kZXIgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHbXVuZGVyPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk11bmRlck1peGluPFNWR1dyYXBwZXI8YW55LCBhbnksIGFueT4sIENvbnN0cnVjdG9yPFNWR21zdWI8YW55LCBhbnksIGFueT4+PihTVkdtc3ViKSAge1xuXG4gIC8qKlxuICAgKiBUaGUgbXVuZGVyIHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE11bmRlci5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgaWYgKHRoaXMuaGFzTW92YWJsZUxpbWl0cygpKSB7XG4gICAgICBzdXBlci50b1NWRyhwYXJlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3RhbmRhcmRTVkdub2RlKHBhcmVudCk7XG4gICAgY29uc3QgW2Jhc2UsIHNjcmlwdF0gPSBbdGhpcy5iYXNlQ2hpbGQsIHRoaXMuc2NyaXB0Q2hpbGRdO1xuICAgIGNvbnN0IFtiYm94LCBzYm94XSA9IFtiYXNlLmdldE91dGVyQkJveCgpLCBzY3JpcHQuZ2V0T3V0ZXJCQm94KCldO1xuXG4gICAgYmFzZS50b1NWRyhzdmcpO1xuICAgIHNjcmlwdC50b1NWRyhzdmcpO1xuXG4gICAgY29uc3QgZGVsdGEgPSAodGhpcy5pc0xpbmVCZWxvdyA/IDAgOiB0aGlzLmdldERlbHRhKHRydWUpKTtcbiAgICBjb25zdCB2ID0gdGhpcy5nZXRVbmRlcktWKGJib3gsIHNib3gpWzFdO1xuICAgIGNvbnN0IFtieCwgc3hdID0gdGhpcy5nZXREZWx0YVcoW2Jib3gsIHNib3hdLCBbMCwgLWRlbHRhXSk7XG5cbiAgICBiYXNlLnBsYWNlKGJ4LCAwKTtcbiAgICBzY3JpcHQucGxhY2Uoc3gsIHYpO1xuICB9XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbW92ZXIgd3JhcHBlciBmb3IgdGhlIE1tbE1vdmVyIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNsYXNzIFNWR21vdmVyPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk1vdmVyTWl4aW48U1ZHV3JhcHBlcjxhbnksIGFueSwgYW55PiwgQ29uc3RydWN0b3I8U1ZHbXN1cDxhbnksIGFueSwgYW55Pj4+KFNWR21zdXApICB7XG5cbiAgLyoqXG4gICAqIFRoZSBtb3ZlciB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxNb3Zlci5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgaWYgKHRoaXMuaGFzTW92YWJsZUxpbWl0cygpKSB7XG4gICAgICBzdXBlci50b1NWRyhwYXJlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdmcgPSB0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpO1xuICAgIGNvbnN0IFtiYXNlLCBzY3JpcHRdID0gW3RoaXMuYmFzZUNoaWxkLCB0aGlzLnNjcmlwdENoaWxkXTtcbiAgICBjb25zdCBbYmJveCwgc2JveF0gPSBbYmFzZS5nZXRPdXRlckJCb3goKSwgc2NyaXB0LmdldE91dGVyQkJveCgpXTtcblxuICAgIGJhc2UudG9TVkcoc3ZnKTtcbiAgICBzY3JpcHQudG9TVkcoc3ZnKTtcblxuICAgIGNvbnN0IGRlbHRhID0gKHRoaXMuaXNMaW5lQWJvdmUgPyAwIDogdGhpcy5nZXREZWx0YSgpKTtcbiAgICBjb25zdCB1ID0gdGhpcy5nZXRPdmVyS1UoYmJveCwgc2JveClbMV07XG4gICAgY29uc3QgW2J4LCBzeF0gPSB0aGlzLmdldERlbHRhVyhbYmJveCwgc2JveF0sIFswLCBkZWx0YV0pO1xuXG4gICAgYmFzZS5wbGFjZShieCwgMCk7XG4gICAgc2NyaXB0LnBsYWNlKHN4LCB1KTtcbiAgfVxuXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qXG4gKiBUaGUgU1ZHbXVuZGVyb3ZlciB3cmFwcGVyIGZvciB0aGUgTW1sTXVuZGVyb3ZlciBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdtdW5kZXJvdmVyPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk11bmRlcm92ZXJNaXhpbjxTVkdXcmFwcGVyPGFueSwgYW55LCBhbnk+LCBDb25zdHJ1Y3RvcjxTVkdtc3Vic3VwPGFueSwgYW55LCBhbnk+Pj4oU1ZHbXN1YnN1cCkgIHtcblxuICAvKipcbiAgICogVGhlIG11bmRlcm92ZXIgd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTXVuZGVyb3Zlci5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgaWYgKHRoaXMuaGFzTW92YWJsZUxpbWl0cygpKSB7XG4gICAgICBzdXBlci50b1NWRyhwYXJlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBzdmcgPSB0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpO1xuICAgIGNvbnN0IFtiYXNlLCBvdmVyLCB1bmRlcl0gPSBbdGhpcy5iYXNlQ2hpbGQsIHRoaXMub3ZlckNoaWxkLCB0aGlzLnVuZGVyQ2hpbGRdO1xuICAgIGNvbnN0IFtiYm94LCBvYm94LCB1Ym94XSA9IFtiYXNlLmdldE91dGVyQkJveCgpLCBvdmVyLmdldE91dGVyQkJveCgpLCB1bmRlci5nZXRPdXRlckJCb3goKV07XG5cbiAgICBiYXNlLnRvU1ZHKHN2Zyk7XG4gICAgdW5kZXIudG9TVkcoc3ZnKTtcbiAgICBvdmVyLnRvU1ZHKHN2Zyk7XG5cbiAgICBjb25zdCBkZWx0YSA9IHRoaXMuZ2V0RGVsdGEoKTtcbiAgICBjb25zdCB1ID0gdGhpcy5nZXRPdmVyS1UoYmJveCwgb2JveClbMV07XG4gICAgY29uc3QgdiA9IHRoaXMuZ2V0VW5kZXJLVihiYm94LCB1Ym94KVsxXTtcbiAgICBjb25zdCBbYngsIHV4LCBveF0gPSB0aGlzLmdldERlbHRhVyhbYmJveCwgdWJveCwgb2JveF0sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzAsIHRoaXMuaXNMaW5lQmVsb3cgPyAwIDogLWRlbHRhLCB0aGlzLmlzTGluZUFib3ZlID8gMCA6IGRlbHRhXSk7XG5cbiAgICBiYXNlLnBsYWNlKGJ4LCAwKTtcbiAgICB1bmRlci5wbGFjZSh1eCwgdik7XG4gICAgb3Zlci5wbGFjZShveCwgdSk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25NbXVsdGlzY3JpcHRzIHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNbXVsdGlzY3JpcHRzIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk1zdWJzdXAsIE1zdWJzdXBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi9tc3Vic3VwLmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIFRoZSBkYXRhIGFib3V0IHRoZSBzY3JpcHRzIGFuZCBiYXNlXG4gKi9cbmV4cG9ydCB0eXBlIFNjcmlwdERhdGEgPSB7XG4gIGJhc2U6IEJCb3g7XG4gIHN1YjogQkJveDsgICAvLyBjb21iaW5lZCBiYm94IGZvciBhbGwgc3Vic2NyaXB0c1xuICBzdXA6IEJCb3g7ICAgLy8gY29tYmluZWQgYmJveCBmb3IgYWxsIHN1cGVyc2NyaXB0c1xuICBwc3ViOiBCQm94OyAgLy8gY29tYmluZWQgYmJveCBmb3IgYWxsIHByZXN1YnNjcmlwdHNcbiAgcHN1cDogQkJveDsgIC8vIGNvbWJpbmVkIGJib3ggZm9yIGFsbCBwcmVzdXBlcnNjcmlwdHNcbiAgbnVtUHJlc2NyaXB0czogbnVtYmVyO1xuICBudW1TY3JpcHRzOiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgU2NyaXB0RGF0YU5hbWUgPSBrZXlvZiBTY3JpcHREYXRhO1xuXG4vKipcbiAqIFRoZSBsaXN0cyBvZiBhbGwgdGhlIGluZGl2aWR1YWwgc2NyaXB0IGJib3hlc1xuICovXG5leHBvcnQgdHlwZSBTY3JpcHRMaXN0cyA9IHtcbiAgYmFzZTogQkJveFtdO1xuICBzdWJMaXN0OiBCQm94W107XG4gIHN1cExpc3Q6IEJCb3hbXTtcbiAgcHN1Ykxpc3Q6IEJCb3hbXTtcbiAgcHN1cExpc3Q6IEJCb3hbXTtcbn07XG5leHBvcnQgdHlwZSBTY3JpcHRMaXN0TmFtZSA9IGtleW9mIFNjcmlwdExpc3RzO1xuXG4vKipcbiAqIFRoZSB0eXBlIG9mIHNjcmlwdCB0aGF0IGZvbGxvd3MgdGhlIGdpdmVuIHR5cGVcbiAqL1xuZXhwb3J0IGNvbnN0IE5leHRTY3JpcHQ6IHtba2V5OiBzdHJpbmddOiBTY3JpcHRMaXN0TmFtZX0gPSB7XG4gIGJhc2U6ICdzdWJMaXN0JyxcbiAgc3ViTGlzdDogJ3N1cExpc3QnLFxuICBzdXBMaXN0OiAnc3ViTGlzdCcsXG4gIHBzdWJMaXN0OiAncHN1cExpc3QnLFxuICBwc3VwTGlzdDogJ3BzdWJMaXN0Jyxcbn07XG5cbi8qKlxuICogVGhlIG5hbWVzIG9mIHRoZSBzY3JpcHRzIChmb3IgbG9vcGluZylcbiAqL1xuZXhwb3J0IGNvbnN0IFNjcmlwdE5hbWVzID0gWydzdXAnLCAnc3VwJywgJ3BzdXAnLCAncHN1YiddIGFzIFNjcmlwdERhdGFOYW1lW107XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1tdWx0aXNjcmlwdHMgaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIFcgIFRoZSBjaGlsZC1ub2RlIFdyYXBwZXIgY2xhc3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25NbXVsdGlzY3JpcHRzPFcgZXh0ZW5kcyBBbnlXcmFwcGVyPiBleHRlbmRzIENvbW1vbk1zdWJzdXA8Vz4ge1xuXG4gIC8qKlxuICAgKiAgVGhlIGNhY2hlZCBkYXRhIGZvciB0aGUgdmFyaW91cyBib3VuZGluZyBib3hlc1xuICAgKi9cbiAgc2NyaXB0RGF0YTogU2NyaXB0RGF0YTtcblxuICAvKipcbiAgICogIFRoZSBpbmRleCBvZiB0aGUgY2hpbGQgZm9sbG93aW5nIHRoZSA8bXByZXNjcmlwdHMvPiB0YWdcbiAgICovXG4gIGZpcnN0UHJlc2NyaXB0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QkJveH0gcHJlICAgVGhlIHByZXNjcmlwdCBib3VuZGluZyBib3hcbiAgICogQHBhcmFtIHtCQm94fSBwb3N0ICBUaGUgcG9zdGNyaXB0IGJvdW5kaW5nIGJveFxuICAgKiBAcmV0dXJuIHtCQm94fSAgICAgIFRoZSBjb21iaW5lZCBib3VuZGluZyBib3hcbiAgICovXG4gIGNvbWJpbmVQcmVQb3N0KHByZTogQkJveCwgcG9zdDogQkJveCk6IEJCb3g7XG5cbiAgLyoqXG4gICAqIENvbXB1dGUgdGhlIGJvdW5kaW5nIGJveCBpbmZvcm1hdGlvbiBhYm91dCBhbGwgdGhlIHNjcmlwdHNcbiAgICovXG4gIGdldFNjcmlwdERhdGEoKTogdm9pZDtcblxuICAvKipcbiAgICogQHJldHVybiB7U2NyaXB0TGlzdHN9ICBUaGUgYm91bmRpbmcgYm94ZXMgZm9yIGFsbCB0aGUgc2NyaXB0cyBkaXZpZGVkIGludG8gbGlzdHMgYnkgcG9zaXRpb25cbiAgICovXG4gIGdldFNjcmlwdEJCb3hMaXN0cygpOiBTY3JpcHRMaXN0cztcblxuICAvKipcbiAgICogUGFkIHRoZSBzZWNvbmQgbGlzdCwgaWYgaXQgaXMgb25lIHNob3J0XG4gICAqXG4gICAqIEBwYXJhbSB7QkJveFtdfSBsaXN0MSAgIFRoZSBmaXJzdCBsaXN0XG4gICAqIEBwYXJhbSB7QkJveFtdfSBsaXN0MiAgIFRoZSBzZWNvbmQgbGlzdFxuICAgKi9cbiAgcGFkTGlzdHMobGlzdDE6IEJCb3hbXSwgbGlzdDI6IEJCb3hbXSk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7QkJveH0gYmJveDEgICAgVGhlIGJib3ggZm9yIHRoZSBjb21iaW5lZCBzdWJzY3JpcHRzXG4gICAqIEBwYXJhbSB7QkJveH0gYmJveDIgICAgVGhlIGJib3ggZm9yIHRoZSBjb21iaW5lZCBzdXBlcnNjcmlwdHNcbiAgICogQHBhcmFtIHtCQm94W119IGxpc3QxICBUaGUgbGlzdCBvZiBzdWJzY3JpcHRzIHRvIGNvbWJpbmVcbiAgICogQHBhcmFtIHtCQm94W119IGxpc3QyICBUaGUgbGlzdCBvZiBzdXBlcnNjcmlwdHMgdG8gY29tYmluZVxuICAgKi9cbiAgY29tYmluZUJCb3hMaXN0cyhiYm94MTogQkJveCwgYmJveDI6IEJCb3gsIGxpc3QxOiBCQm94W10sIGxpc3QyOiBCQm94W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0JCb3h9IGJib3ggIFRoZSBib3VuZGluZyBib3ggZnJvbSB3aGljaCB0byBnZXQgdGhlIChzY2FsZWQpIHdpZHRoLCBoZWlnaHQsIGFuZCBkZXB0aFxuICAgKi9cbiAgZ2V0U2NhbGVkV0hEKGJib3g6IEJCb3gpOiB2b2lkO1xuXG59XG5cbi8qKlxuICogU2hvcnRoYW5kIGZvciB0aGUgQ29tbW9uTW11bHRpc2NyaXB0cyBjb25zdHJ1Y3RvclxuICpcbiAqIEB0ZW1wbGF0ZSBXICBUaGUgY2hpbGQtbm9kZSBXcmFwcGVyIGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIE1tdWx0aXNjcmlwdHNDb25zdHJ1Y3RvcjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gPSBDb25zdHJ1Y3RvcjxDb21tb25NbXVsdGlzY3JpcHRzPFc+PjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTW11bHRpc2NyaXB0cyB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTW11bHRpc2NyaXB0cyBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIGNoaWxkLW5vZGUgV3JhcHBlciBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk1tdWx0aXNjcmlwdHNNaXhpbjxcbiAgVyBleHRlbmRzIEFueVdyYXBwZXIsXG4gIFQgZXh0ZW5kcyBNc3Vic3VwQ29uc3RydWN0b3I8Vz5cbj4oQmFzZTogVCk6IE1tdWx0aXNjcmlwdHNDb25zdHJ1Y3RvcjxXPiAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogIFRoZSBjYWNoZWQgZGF0YSBmb3IgdGhlIHZhcmlvdXMgYm91bmRpbmcgYm94ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgc2NyaXB0RGF0YTogU2NyaXB0RGF0YSA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiAgVGhlIGluZGV4IG9mIHRoZSBjaGlsZCBmb2xsb3dpbmcgdGhlIDxtcHJlc2NyaXB0cy8+IHRhZ1xuICAgICAqL1xuICAgIHB1YmxpYyBmaXJzdFByZXNjcmlwdCA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgc3VwZXIoLi4uYXJncyk7XG4gICAgICB0aGlzLmdldFNjcmlwdERhdGEoKTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7QkJveH0gcHJlICAgVGhlIHByZXNjcmlwdCBib3VuZGluZyBib3hcbiAgICAgKiBAcGFyYW0ge0JCb3h9IHBvc3QgIFRoZSBwb3N0Y3JpcHQgYm91bmRpbmcgYm94XG4gICAgICogQHJldHVybiB7QkJveH0gICAgICBUaGUgY29tYmluZWQgYm91bmRpbmcgYm94XG4gICAgICovXG4gICAgcHVibGljIGNvbWJpbmVQcmVQb3N0KHByZTogQkJveCwgcG9zdDogQkJveCk6IEJCb3gge1xuICAgICAgY29uc3QgYmJveCA9IG5ldyBCQm94KHByZSk7XG4gICAgICBiYm94LmNvbWJpbmUocG9zdCwgMCwgMCk7XG4gICAgICByZXR1cm4gYmJveDtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wdXRlQkJveChiYm94OiBCQm94LCByZWNvbXB1dGU6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgLy9cbiAgICAgIC8vIEdldCB0aGUgYm91bmRpbmcgYm94ZXMsIGFuZCBjb21iaW5lIHRoZSBwcmUtIGFuZCBwb3N0LXNjcmlwdHNcbiAgICAgIC8vICB0byBnZXQgYSBjb21tb24gb2Zmc2V0IGZvciBib3RoXG4gICAgICAvL1xuICAgICAgY29uc3Qgc2NyaXB0c3BhY2UgPSB0aGlzLmZvbnQucGFyYW1zLnNjcmlwdHNwYWNlO1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuc2NyaXB0RGF0YTtcbiAgICAgIGNvbnN0IHN1YiA9IHRoaXMuY29tYmluZVByZVBvc3QoZGF0YS5zdWIsIGRhdGEucHN1Yik7XG4gICAgICBjb25zdCBzdXAgPSB0aGlzLmNvbWJpbmVQcmVQb3N0KGRhdGEuc3VwLCBkYXRhLnBzdXApO1xuICAgICAgY29uc3QgW3UsIHZdID0gdGhpcy5nZXRVVlEoc3ViLCBzdXApO1xuICAgICAgLy9cbiAgICAgIC8vICBMYXkgb3V0IHRoZSBwcmUtc2NyaXB0cywgdGhlbiB0aGUgYmFzZSwgdGhlbiB0aGUgcG9zdC1zY3JpcHRzXG4gICAgICAvL1xuICAgICAgYmJveC5lbXB0eSgpO1xuICAgICAgaWYgKGRhdGEubnVtUHJlc2NyaXB0cykge1xuICAgICAgICBiYm94LmNvbWJpbmUoZGF0YS5wc3VwLCBzY3JpcHRzcGFjZSwgdSk7XG4gICAgICAgIGJib3guY29tYmluZShkYXRhLnBzdWIsIHNjcmlwdHNwYWNlLCB2KTtcbiAgICAgIH1cbiAgICAgIGJib3guYXBwZW5kKGRhdGEuYmFzZSk7XG4gICAgICBpZiAoZGF0YS5udW1TY3JpcHRzKSB7XG4gICAgICAgIGNvbnN0IHcgPSBiYm94Lnc7XG4gICAgICAgIGJib3guY29tYmluZShkYXRhLnN1cCwgdywgdSk7XG4gICAgICAgIGJib3guY29tYmluZShkYXRhLnN1Yiwgdywgdik7XG4gICAgICAgIGJib3gudyArPSBzY3JpcHRzcGFjZTtcbiAgICAgIH1cbiAgICAgIGJib3guY2xlYW4oKTtcbiAgICAgIHRoaXMuc2V0Q2hpbGRQV2lkdGhzKHJlY29tcHV0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tcHV0ZSB0aGUgYm91bmRpbmcgYm94IGluZm9ybWF0aW9uIGFib3V0IGFsbCB0aGUgc2NyaXB0c1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTY3JpcHREYXRhKCkge1xuICAgICAgLy9cbiAgICAgIC8vICBJbml0aWFsaXplIHRoZSBib3VuZGluZyBib3ggZGF0YVxuICAgICAgLy9cbiAgICAgIGNvbnN0IGRhdGE6IFNjcmlwdERhdGEgPSB0aGlzLnNjcmlwdERhdGEgPSB7XG4gICAgICAgIGJhc2U6IG51bGwsIHN1YjogQkJveC5lbXB0eSgpLCBzdXA6IEJCb3guZW1wdHkoKSwgcHN1YjogQkJveC5lbXB0eSgpLCBwc3VwOiBCQm94LmVtcHR5KCksXG4gICAgICAgIG51bVByZXNjcmlwdHM6IDAsIG51bVNjcmlwdHM6IDBcbiAgICAgIH07XG4gICAgICAvL1xuICAgICAgLy8gIEdldCB0aGUgYmJveGVzIGZvciBhbGwgdGhlIHNjcmlwdHMgYW5kIGNvbWJpbmUgdGhlbSBpbnRvIHRoZSBzY3JpcHREYXRhXG4gICAgICAvL1xuICAgICAgY29uc3QgbGlzdHMgPSB0aGlzLmdldFNjcmlwdEJCb3hMaXN0cygpO1xuICAgICAgdGhpcy5jb21iaW5lQkJveExpc3RzKGRhdGEuc3ViLCBkYXRhLnN1cCwgbGlzdHMuc3ViTGlzdCwgbGlzdHMuc3VwTGlzdCk7XG4gICAgICB0aGlzLmNvbWJpbmVCQm94TGlzdHMoZGF0YS5wc3ViLCBkYXRhLnBzdXAsIGxpc3RzLnBzdWJMaXN0LCBsaXN0cy5wc3VwTGlzdCk7XG4gICAgICBkYXRhLmJhc2UgPSBsaXN0cy5iYXNlWzBdO1xuICAgICAgLy9cbiAgICAgIC8vICBTYXZlIHRoZSBsZW5ndGhzIGFuZCByZXR1cm4gdGhlIGRhdGFcbiAgICAgIC8vXG4gICAgICBkYXRhLm51bVByZXNjcmlwdHMgPSBsaXN0cy5wc3ViTGlzdC5sZW5ndGg7XG4gICAgICBkYXRhLm51bVNjcmlwdHMgPSBsaXN0cy5zdWJMaXN0Lmxlbmd0aDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtTY3JpcHRMaXN0c30gIFRoZSBib3VuZGluZyBib3hlcyBmb3IgYWxsIHRoZSBzY3JpcHRzIGRpdmlkZWQgaW50byBsaXN0cyBieSBwb3NpdGlvblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRTY3JpcHRCQm94TGlzdHMoKTogU2NyaXB0TGlzdHMge1xuICAgICAgY29uc3QgbGlzdHM6IFNjcmlwdExpc3RzID0ge1xuICAgICAgICBiYXNlOiBbXSwgc3ViTGlzdDogW10sIHN1cExpc3Q6IFtdLCBwc3ViTGlzdDogW10sIHBzdXBMaXN0OiBbXVxuICAgICAgfTtcbiAgICAgIC8vXG4gICAgICAvLyBUaGUgZmlyc3QgZW50cnkgaXMgdGhlIGJhc2UsIGFuZCB0aGVuIHRoZXkgYWx0ZXJuYW1lIHN1Yi0gYW5kIHN1cGVyc2NyaXB0cy5cbiAgICAgIC8vIE9uY2Ugd2UgZmluZCB0aGUgPG1wcmVzY3JpcHRzLz4gZWxlbWVudCwgc3dpdGNoIHRvIHByZXN1Yi0gYW5kIHByZXN1cGVyc2NyaXB0IGxpc3RzLlxuICAgICAgLy9cbiAgICAgIGxldCBzY3JpcHQ6IFNjcmlwdExpc3ROYW1lID0gJ2Jhc2UnO1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgICAgaWYgKGNoaWxkLm5vZGUuaXNLaW5kKCdtcHJlc2NyaXB0cycpKSB7XG4gICAgICAgICAgc2NyaXB0ID0gJ3BzdWJMaXN0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaXN0c1tzY3JpcHRdLnB1c2goY2hpbGQuZ2V0T3V0ZXJCQm94KCkpO1xuICAgICAgICAgIHNjcmlwdCA9IE5leHRTY3JpcHRbc2NyaXB0XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy9cbiAgICAgIC8vICBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IHByZXNjcmlwdCAoc2tpcCBvdmVyIGJhc2UsIHN1Yi0gYW5kIHN1cGVyc2NyaXB0cywgYW5kIG1wcmVzY3JpcHRzKVxuICAgICAgLy9cbiAgICAgIHRoaXMuZmlyc3RQcmVzY3JpcHQgPSBsaXN0cy5zdWJMaXN0Lmxlbmd0aCArIGxpc3RzLnN1cExpc3QubGVuZ3RoICsgMjtcbiAgICAgIC8vXG4gICAgICAvLyAgTWFrZSBzdXJlIHRoZSBsaXN0cyBhcmUgdGhlIHNhbWUgbGVuZ3RoXG4gICAgICAvL1xuICAgICAgdGhpcy5wYWRMaXN0cyhsaXN0cy5zdWJMaXN0LCBsaXN0cy5zdXBMaXN0KTtcbiAgICAgIHRoaXMucGFkTGlzdHMobGlzdHMucHN1Ykxpc3QsIGxpc3RzLnBzdXBMaXN0KTtcbiAgICAgIHJldHVybiBsaXN0cztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQYWQgdGhlIHNlY29uZCBsaXN0LCBpZiBpdCBpcyBvbmUgc2hvcnRcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7QkJveFtdfSBsaXN0MSAgIFRoZSBmaXJzdCBsaXN0XG4gICAgICogQHBhcmFtIHtCQm94W119IGxpc3QyICAgVGhlIHNlY29uZCBsaXN0XG4gICAgICovXG4gICAgcHVibGljIHBhZExpc3RzKGxpc3QxOiBCQm94W10sIGxpc3QyOiBCQm94W10pIHtcbiAgICAgIGlmIChsaXN0MS5sZW5ndGggPiBsaXN0Mi5sZW5ndGgpIHtcbiAgICAgICAgbGlzdDIucHVzaChCQm94LmVtcHR5KCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7QkJveH0gYmJveDEgICAgVGhlIGJib3ggZm9yIHRoZSBjb21iaW5lZCBzdWJzY3JpcHRzXG4gICAgICogQHBhcmFtIHtCQm94fSBiYm94MiAgICBUaGUgYmJveCBmb3IgdGhlIGNvbWJpbmVkIHN1cGVyc2NyaXB0c1xuICAgICAqIEBwYXJhbSB7QkJveFtdfSBsaXN0MSAgVGhlIGxpc3Qgb2Ygc3Vic2NyaXB0cyB0byBjb21iaW5lXG4gICAgICogQHBhcmFtIHtCQm94W119IGxpc3QyICBUaGUgbGlzdCBvZiBzdXBlcnNjcmlwdHMgdG8gY29tYmluZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb21iaW5lQkJveExpc3RzKGJib3gxOiBCQm94LCBiYm94MjogQkJveCwgbGlzdDE6IEJCb3hbXSwgbGlzdDI6IEJCb3hbXSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0MS5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBbdzEsIGgxLCBkMV0gPSB0aGlzLmdldFNjYWxlZFdIRChsaXN0MVtpXSk7XG4gICAgICAgIGNvbnN0IFt3MiwgaDIsIGQyXSA9IHRoaXMuZ2V0U2NhbGVkV0hEKGxpc3QyW2ldKTtcbiAgICAgICAgY29uc3QgdyA9IE1hdGgubWF4KHcxLCB3Mik7XG4gICAgICAgIGJib3gxLncgKz0gdztcbiAgICAgICAgYmJveDIudyArPSB3O1xuICAgICAgICBpZiAoaDEgPiBiYm94MS5oKSBiYm94MS5oID0gaDE7XG4gICAgICAgIGlmIChkMSA+IGJib3gxLmQpIGJib3gxLmQgPSBkMTtcbiAgICAgICAgaWYgKGgyID4gYmJveDIuaCkgYmJveDIuaCA9IGgyO1xuICAgICAgICBpZiAoZDIgPiBiYm94Mi5kKSBiYm94Mi5kID0gZDI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtCQm94fSBiYm94ICBUaGUgYm91bmRpbmcgYm94IGZyb20gd2hpY2ggdG8gZ2V0IHRoZSAoc2NhbGVkKSB3aWR0aCwgaGVpZ2h0LCBhbmQgZGVwdGhcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2NhbGVkV0hEKGJib3g6IEJCb3gpIHtcbiAgICAgIGNvbnN0IHt3LCBoLCBkLCByc2NhbGV9ID0gYmJveDtcbiAgICAgIHJldHVybiBbdyAqIHJzY2FsZSwgaCAqIHJzY2FsZSwgZCAqIHJzY2FsZV07XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VVZRKHN1YmJveDogQkJveCwgc3VwYm94OiBCQm94KSB7XG4gICAgICBpZiAoIXRoaXMuVVZRKSB7XG4gICAgICAgIGxldCBbdSwgdiwgcV0gPSBbMCwgMCwgMF07XG4gICAgICAgIGlmIChzdWJib3guaCA9PT0gMCAmJiBzdWJib3guZCA9PT0gMCkge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gIFVzZSBwbGFjZW1lbnQgZm9yIHN1cGVyc2NyaXB0IG9ubHlcbiAgICAgICAgICAvL1xuICAgICAgICAgIHUgPSB0aGlzLmdldFUoKTtcbiAgICAgICAgfSBlbHNlIGlmIChzdXBib3guaCA9PT0gMCAmJiBzdXBib3guZCA9PT0gMCkge1xuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gIFVzZSBwbGFjZW1lbnQgZm9yIHN1YnNjY3JpcHQgb25seVxuICAgICAgICAgIC8vXG4gICAgICAgICAgdSA9IC10aGlzLmdldFYoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vICBVc2UgcGxhY2VtZW50IGZvciBib3RoXG4gICAgICAgICAgLy9cbiAgICAgICAgICBbdSwgdiwgcV0gPSBzdXBlci5nZXRVVlEoc3ViYm94LCBzdXBib3gpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuVVZRID0gW3UsIHYsIHFdO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuVVZRO1xuICAgIH1cblxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE1tdWx0aXNjcmlwdHMgbm9kZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge0Fic3RyYWN0TW1sTm9kZSwgQXR0cmlidXRlTGlzdH0gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5pbXBvcnQge01tbE1zdWJzdXB9IGZyb20gJy4vbXN1YnN1cC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1tdWx0aXNjcmlwdHMgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgTW1sTXN1YnN1cClcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTW11bHRpc2NyaXB0cyBleHRlbmRzIE1tbE1zdWJzdXAge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5NbWxNc3Vic3VwLmRlZmF1bHRzXG4gIH07XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbW11bHRpc2NyaXB0cyc7XG4gIH1cblxuICAvKipcbiAgICogPG1tdWx0aXNjcmlwdHM+IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBjaGlsZCAodGhlIGJhc2UpXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQdXNoIHRoZSBpbmhlcml0ZWQgdmFsdWVzIHRvIHRoZSBiYXNlXG4gICAqIE1ha2Ugc3VyZSB0aGUgbnVtYmVyIG9mIHByZS0gYW5kIHBvc3Qtc2NyaXB0cyBhcmUgZXZlbiBieSBhZGRpbmcgbXJvd3MsIGlmIG5lZWRlZC5cbiAgICogRm9yIHRoZSBzY3JpcHRzLCB1c2UgZGlzcGxheXN0eWxlID0gZmFsc2UsIHNjcmlwdGxldmVsICsgMSwgYW5kXG4gICAqICAgc2V0IHRoZSBwcmltZXN0eWxlIGluIHRoZSBzdWJzY3JpcHRzLlxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RlY3RlZCBzZXRDaGlsZEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCwgZGlzcGxheTogYm9vbGVhbiwgbGV2ZWw6IG51bWJlciwgcHJpbWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLmNoaWxkTm9kZXNbMF0uc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBkaXNwbGF5LCBsZXZlbCwgcHJpbWUpO1xuICAgIGxldCBwcmVzY3JpcHRzID0gZmFsc2U7XG4gICAgZm9yIChsZXQgaSA9IDEsIG4gPSAwOyBpIDwgdGhpcy5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBsZXQgY2hpbGQgPSB0aGlzLmNoaWxkTm9kZXNbaV07XG4gICAgICBpZiAoY2hpbGQuaXNLaW5kKCdtcHJlc2NyaXB0cycpKSB7XG4gICAgICAgIGlmICghcHJlc2NyaXB0cykge1xuICAgICAgICAgIHByZXNjcmlwdHMgPSB0cnVlO1xuICAgICAgICAgIGlmIChpICUgMiA9PT0gMCkge1xuICAgICAgICAgICAgbGV0IG1yb3cgPSB0aGlzLmZhY3RvcnkuY3JlYXRlKCdtcm93Jyk7XG4gICAgICAgICAgICB0aGlzLmNoaWxkTm9kZXMuc3BsaWNlKGksIDAsIG1yb3cpO1xuICAgICAgICAgICAgbXJvdy5wYXJlbnQgPSB0aGlzO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHByaW1lc3R5bGUgPSBwcmltZSB8fCAobiAlIDIgPT09IDApO1xuICAgICAgICBjaGlsZC5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGZhbHNlLCBsZXZlbCArIDEsIHByaW1lc3R5bGUpO1xuICAgICAgICBuKys7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNoaWxkTm9kZXMubGVuZ3RoICUgMiA9PT0gKHByZXNjcmlwdHMgPyAxIDogMCkpIHtcbiAgICAgIHRoaXMuYXBwZW5kQ2hpbGQodGhpcy5mYWN0b3J5LmNyZWF0ZSgnbXJvdycpKTtcbiAgICAgIHRoaXMuY2hpbGROb2Rlc1t0aGlzLmNoaWxkTm9kZXMubGVuZ3RoIC0gMV0uc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBmYWxzZSwgbGV2ZWwgKyAxLCBwcmltZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoYXQgbXByZXNjcmlwdHMgb25seSBvY2N1cnMgb25jZSwgYW5kIHRoYXQgdGhlIG51bWJlciBvZiBwcmUtIGFuZCBwb3N0LXNjcmlwdHMgYXJlIGV2ZW4uXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHZlcmlmeUNoaWxkcmVuKG9wdGlvbnM6IFByb3BlcnR5TGlzdCkge1xuICAgIGxldCBwcmVzY3JpcHRzID0gZmFsc2U7XG4gICAgbGV0IGZpeCA9IG9wdGlvbnNbJ2ZpeE1tdWx0aXNjcmlwdHMnXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgbGV0IGNoaWxkID0gdGhpcy5jaGlsZE5vZGVzW2ldO1xuICAgICAgaWYgKGNoaWxkLmlzS2luZCgnbXByZXNjcmlwdHMnKSkge1xuICAgICAgICBpZiAocHJlc2NyaXB0cykge1xuICAgICAgICAgIGNoaWxkLm1FcnJvcihjaGlsZC5raW5kICsgJyBjYW4gb25seSBhcHBlYXIgb25jZSBpbiAnICsgdGhpcy5raW5kLCBvcHRpb25zLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVzY3JpcHRzID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoaSAlIDIgPT09IDAgJiYgIWZpeCkge1xuICAgICAgICAgICAgdGhpcy5tRXJyb3IoJ1RoZXJlIG11c3QgYmUgYW4gZXF1YWwgbnVtYmVyIG9mIHByZXNjcmlwdHMgb2YgZWFjaCB0eXBlJywgb3B0aW9ucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLmNoaWxkTm9kZXMubGVuZ3RoICUgMiA9PT0gKHByZXNjcmlwdHMgPyAxIDogMCkgJiYgIWZpeCkge1xuICAgICAgdGhpcy5tRXJyb3IoJ1RoZXJlIG11c3QgYmUgYW4gZXF1YWwgbnVtYmVyIG9mIHNjcmlwdHMgb2YgZWFjaCB0eXBlJywgb3B0aW9ucyk7XG4gICAgfVxuICAgIHN1cGVyLnZlcmlmeUNoaWxkcmVuKG9wdGlvbnMpO1xuICB9XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTXByZXNjcmlwdHMgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxOb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNcHJlc2NyaXB0cyBleHRlbmRzIEFic3RyYWN0TW1sTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sTm9kZS5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgbXByZXNjcmlwdHMga2luZFxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdtcHJlc2NyaXB0cyc7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyfSAgPG1wcmVzY3JpcHRzPiBjYW4gaGF2ZSBubyBjaGlsZHJlblxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoYXQgcGFyZW50IGlzIG1tdWx0aXNjcmlwdHNcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdmVyaWZ5VHJlZShvcHRpb25zOiBQcm9wZXJ0eUxpc3QpIHtcbiAgICBzdXBlci52ZXJpZnlUcmVlKG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLnBhcmVudCAmJiAhdGhpcy5wYXJlbnQuaXNLaW5kKCdtbXVsdGlzY3JpcHRzJykpIHtcbiAgICAgIHRoaXMubUVycm9yKHRoaXMua2luZCArICcgbXVzdCBiZSBhIGNoaWxkIG9mIG1tdWx0aXNjcmlwdHMnLCBvcHRpb25zLCB0cnVlKTtcbiAgICB9XG4gIH1cblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxOb25lIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTm9uZSBleHRlbmRzIEFic3RyYWN0TW1sTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sTm9kZS5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgbm9uZSBraW5kXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ25vbmUnO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge251bWJlcn0gIDxub25lPiBjYW4gaGF2ZSBubyBjaGlsZHJlblxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpOiBudW1iZXIge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoYXQgcGFyZW50IGlzIG1tdWx0aXNjcmlwdHNcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdmVyaWZ5VHJlZShvcHRpb25zOiBQcm9wZXJ0eUxpc3QpIHtcbiAgICBzdXBlci52ZXJpZnlUcmVlKG9wdGlvbnMpO1xuICAgIGlmICh0aGlzLnBhcmVudCAmJiAhdGhpcy5wYXJlbnQuaXNLaW5kKCdtbXVsdGlzY3JpcHRzJykpIHtcbiAgICAgIHRoaXMubUVycm9yKHRoaXMua2luZCArICcgbXVzdCBiZSBhIGNoaWxkIG9mIG1tdWx0aXNjcmlwdHMnLCBvcHRpb25zLCB0cnVlKTtcbiAgICB9XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdtbXVsdGlzY3JpcHRzIHdyYXBwZXIgZm9yIHRoZSBNbWxNbXVsdGlzY3JpcHRzIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge1NWR21zdWJzdXB9IGZyb20gJy4vbXN1YnN1cC5qcyc7XG5pbXBvcnQge0NvbW1vbk1tdWx0aXNjcmlwdHNNaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21tdWx0aXNjcmlwdHMuanMnO1xuaW1wb3J0IHtNbWxNbXVsdGlzY3JpcHRzfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbW11bHRpc2NyaXB0cy5qcyc7XG5pbXBvcnQge3NwbGl0fSBmcm9tICcuLi8uLi8uLi91dGlsL3N0cmluZy5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRha2luZyB0d28gd2lkdGhzIGFuZCByZXR1cm5pbmcgYW4gb2Zmc2V0IG9mIHRoZSBmaXJzdCBpbiB0aGUgc2Vjb25kXG4gKi9cbmV4cG9ydCB0eXBlIEFsaWduRnVuY3Rpb24gPSAodzogbnVtYmVyLCBXOiBudW1iZXIpID0+IG51bWJlcjtcblxuLyoqXG4gKiBHZXQgdGhlIGZ1bmN0aW9uIGZvciBhbGlnbmluZyBzY3JpcHRzIGhvcml6b250YWxseSAobGVmdCwgY2VudGVyLCByaWdodClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFsaWduWChhbGlnbjogc3RyaW5nKSB7XG4gIHJldHVybiAoe1xuICAgIGxlZnQ6IChfdywgX1cpID0+IDAsXG4gICAgY2VudGVyOiAodywgVykgPT4gKFcgLSB3KSAvIDIsXG4gICAgcmlnaHQ6ICh3LCBXKSA9PiBXIC0gd1xuICB9IGFzIHtbbmFtZTogc3RyaW5nXTogQWxpZ25GdW5jdGlvbn0pW2FsaWduXSB8fCAoKF93LCBfVykgPT4gMCkgYXMgQWxpZ25GdW5jdGlvbjtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbW11bHRpc2NyaXB0cyB3cmFwcGVyIGZvciB0aGUgTW1sTW11bHRpc2NyaXB0cyBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdtbXVsdGlzY3JpcHRzPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk1tdWx0aXNjcmlwdHNNaXhpbjxTVkdXcmFwcGVyPGFueSwgYW55LCBhbnk+LCBDb25zdHJ1Y3RvcjxTVkdtc3Vic3VwPGFueSwgYW55LCBhbnk+Pj4oU1ZHbXN1YnN1cCkge1xuXG4gIC8qKlxuICAgKiBUaGUgbW11bHRpc2NyaXB0cyB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxNbXVsdGlzY3JpcHRzLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBjb25zdCBzdmcgPSB0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpO1xuICAgIGNvbnN0IGRhdGEgPSB0aGlzLnNjcmlwdERhdGE7XG4gICAgLy9cbiAgICAvLyAgR2V0IHRoZSBhbGlnbm1lbnQgZm9yIHRoZSBzY3JpcHRzXG4gICAgLy9cbiAgICBjb25zdCBzY3JpcHRhbGlnbiA9IHRoaXMubm9kZS5nZXRQcm9wZXJ0eSgnc2NyaXB0YWxpZ24nKSB8fCAncmlnaHQgbGVmdCc7XG4gICAgY29uc3QgW3ByZUFsaWduLCBwb3N0QWxpZ25dID0gc3BsaXQoc2NyaXB0YWxpZ24gKyAnICcgKyBzY3JpcHRhbGlnbik7XG4gICAgLy9cbiAgICAvLyAgQ29tYmluZSB0aGUgYm91bmRpbmcgYm94ZXMgb2YgdGhlIHByZS0gYW5kIHBvc3Qtc2NyaXB0cyxcbiAgICAvLyAgYW5kIGdldCB0aGUgcmVzdWx0aW5nIGJhc2VsaW5lIG9mZnNldHNcbiAgICAvL1xuICAgIGNvbnN0IHN1YiA9IHRoaXMuY29tYmluZVByZVBvc3QoZGF0YS5zdWIsIGRhdGEucHN1Yik7XG4gICAgY29uc3Qgc3VwID0gdGhpcy5jb21iaW5lUHJlUG9zdChkYXRhLnN1cCwgZGF0YS5wc3VwKTtcbiAgICBjb25zdCBbdSwgdl0gPSB0aGlzLmdldFVWUShzdWIsIHN1cCk7XG4gICAgLy9cbiAgICAvLyAgUGxhY2UgdGhlIHByZS1zY3JpcHRzLCB0aGVuIHRoZSBiYXNlLCB0aGVuIHRoZSBwb3N0LXNjcmlwdHNcbiAgICAvL1xuICAgIGxldCB4ID0gMDsgIC8vIHNjcmlwdHNwYWNlXG4gICAgaWYgKGRhdGEubnVtUHJlc2NyaXB0cykge1xuICAgICAgeCA9IHRoaXMuYWRkU2NyaXB0cyguMDUsIHUsIHYsIHRoaXMuZmlyc3RQcmVzY3JpcHQsIGRhdGEubnVtUHJlc2NyaXB0cywgcHJlQWxpZ24pO1xuICAgIH1cbiAgICBjb25zdCBiYXNlID0gdGhpcy5iYXNlQ2hpbGQ7XG4gICAgYmFzZS50b1NWRyhzdmcpO1xuICAgIGJhc2UucGxhY2UoeCwgMCk7XG4gICAgeCArPSBiYXNlLmdldE91dGVyQkJveCgpLnc7XG4gICAgaWYgKGRhdGEubnVtU2NyaXB0cykge1xuICAgICAgdGhpcy5hZGRTY3JpcHRzKHgsIHUsIHYsIDEsIGRhdGEubnVtU2NyaXB0cywgcG9zdEFsaWduKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgdGFibGUgd2l0aCB0aGUgc3VwZXIgYW5kIHN1YnNjcmlwdHMgcHJvcGVybHkgc2VwYXJhdGVkIGFuZCBhbGlnbmVkLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAgICAgICBUaGUgeCBvZmZzZXQgb2YgdGhlIHNjcmlwdHNcbiAgICogQHBhcmFtIHtudW1iZXJ9IHUgICAgICAgVGhlIGJhc2VsaW5lIG9mZnNldCBmb3IgdGhlIHN1cGVyc2NyaXB0c1xuICAgKiBAcGFyYW0ge251bWJlcn0gdiAgICAgICBUaGUgYmFzZWxpbmUgb2Zmc2V0IGZvciB0aGUgc3Vic2NyaXB0c1xuICAgKiBAcGFyYW0ge251bWJlcn0gaSAgICAgICBUaGUgc3RhcnRpbmcgaW5kZXggZm9yIHRoZSBzY3JpcHRzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuICAgICAgIFRoZSBudW1iZXIgb2Ygc3ViL3N1cGVyLXNjcmlwdHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFsaWduICAgVGhlIGFsaWdubWVudCBmb3IgdGhlIHNjcmlwdHNcbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgVGhlIHJpZ2h0LWhhbmQgb2Zmc2V0IG9mIHRoZSBzY3JpcHRzXG4gICAqL1xuICBwcm90ZWN0ZWQgYWRkU2NyaXB0cyh4OiBudW1iZXIsIHU6IG51bWJlciwgdjogbnVtYmVyLCBpOiBudW1iZXIsIG46IG51bWJlciwgYWxpZ246IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBjb25zdCBhbGlnblggPSBBbGlnblgoYWxpZ24pO1xuICAgIGNvbnN0IHN1cFJvdyA9IGFkYXB0b3IuYXBwZW5kKHRoaXMuZWxlbWVudCwgdGhpcy5zdmcoJ2cnKSk7XG4gICAgY29uc3Qgc3ViUm93ID0gYWRhcHRvci5hcHBlbmQodGhpcy5lbGVtZW50LCB0aGlzLnN2ZygnZycpKTtcbiAgICB0aGlzLnBsYWNlKHgsIHUsIHN1cFJvdyk7XG4gICAgdGhpcy5wbGFjZSh4LCB2LCBzdWJSb3cpO1xuICAgIGxldCBtID0gaSArIDIgKiBuO1xuICAgIGxldCBkeCA9IDA7XG4gICAgd2hpbGUgKGkgPCBtKSB7XG4gICAgICBjb25zdCBbc3ViLCBzdXBdID0gW3RoaXMuY2hpbGROb2Rlc1tpKytdLCB0aGlzLmNoaWxkTm9kZXNbaSsrXV07XG4gICAgICBjb25zdCBbc3ViYm94LCBzdXBib3hdID0gW3N1Yi5nZXRPdXRlckJCb3goKSwgc3VwLmdldE91dGVyQkJveCgpXTtcbiAgICAgIGNvbnN0IFtzdWJyLCBzdXByXSA9IFtzdWJib3gucnNjYWxlLCBzdXBib3gucnNjYWxlXTtcbiAgICAgIGNvbnN0IHcgPSBNYXRoLm1heChzdWJib3gudyAqIHN1YnIsIHN1cGJveC53ICogc3Vwcik7XG4gICAgICBzdWIudG9TVkcoc3ViUm93KTtcbiAgICAgIHN1cC50b1NWRyhzdXBSb3cpO1xuICAgICAgc3ViLnBsYWNlKGR4ICsgYWxpZ25YKHN1YmJveC53ICogc3ViciwgdyksIDApO1xuICAgICAgc3VwLnBsYWNlKGR4ICsgYWxpZ25YKHN1cGJveC53ICogc3VwciwgdyksIDApO1xuICAgICAgZHggKz0gdztcbiAgICB9XG4gICAgcmV0dXJuIHggKyBkeDtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgc29tZSBudW1lcmljIHV0aWxpdHkgZnVuY3Rpb25zXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG4vKipcbiAqIEBwYXJhbSB7bnVtYmVyW119IEEgIFRoZSBhcnJheSB0byBzdW1cbiAqIEByZXR1cm4ge251bWJlcn0gICAgIFRoZSBzdW1tIG9mIHRoZSBlbGVtZW50cyBpbiBBXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdW0oQTogbnVtYmVyW10pOiBudW1iZXIge1xuICByZXR1cm4gQS5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge251bWJlcltdfSBBICBUaGUgYXJyYXkgd2hvc2UgbWF4aW11bSBlbnRyeSBpcyBzb3VnaHRcbiAqIEByZXR1cm4ge251bWJlcn0gICAgIFRoZSBsYXJnZXN0IGVudHJ5IGluIHRoZSBhcnJheVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWF4KEE6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgcmV0dXJuIEEucmVkdWNlKChhLCBiKSA9PiBNYXRoLm1heChhLCBiKSwgMCk7XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIENvbW1vbk10YWJsZSB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXRhYmxlIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTXRyfSBmcm9tICcuL210ci5qcyc7XG5pbXBvcnQge0NvbW1vbk1vfSBmcm9tICcuL21vLmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcbmltcG9ydCB7RElSRUNUSU9OfSBmcm9tICcuLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge3NwbGl0LCBpc1BlcmNlbnR9IGZyb20gJy4uLy4uLy4uL3V0aWwvc3RyaW5nLmpzJztcbmltcG9ydCB7c3VtLCBtYXh9IGZyb20gJy4uLy4uLy4uL3V0aWwvbnVtZXJpYy5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIGhlaWdodHMsIGRlcHRocywgYW5kIHdpZHRocyBvZiB0aGUgcm93cyBhbmQgY29sdW1uc1xuICogUGx1cyB0aGUgbmF0dXJhbCBoZWlnaHQgYW5kIGRlcHRoIChpLmUuLCB3aXRob3V0IHRoZSBsYWJlbHMpXG4gKiBQbHVzIHRoZSBsYWJlbCBjb2x1bW4gd2lkdGhcbiAqL1xuZXhwb3J0IHR5cGUgVGFibGVEYXRhID0ge1xuICBIOiBudW1iZXJbXTtcbiAgRDogbnVtYmVyW107XG4gIFc6IG51bWJlcltdO1xuICBOSDogbnVtYmVyW107XG4gIE5EOiBudW1iZXJbXTtcbiAgTDogbnVtYmVyO1xufTtcblxuLyoqXG4gKiBBbiBhcnJheSBvZiB0YWJsZSBkaW1lbnNpb25zXG4gKi9cbmV4cG9ydCB0eXBlIENvbHVtbldpZHRocyA9IChzdHJpbmcgfCBudW1iZXIgfCBudWxsKVtdO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NdGFibGUgaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIEMgICBUaGUgY2xhc3MgZm9yIHRhYmxlIGNlbGxzXG4gKiBAdGVtcGxhdGUgUiAgIFRoZSBjbGFzcyBmb3IgdGFibGUgcm93c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbk10YWJsZTxDIGV4dGVuZHMgQW55V3JhcHBlciwgUiBleHRlbmRzIENvbW1vbk10cjxDPj4gZXh0ZW5kcyBBbnlXcmFwcGVyIHtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBjb2x1bW5zIGFuZCByb3dzIGluIHRoZSB0YWJsZVxuICAgKi9cbiAgbnVtQ29sczogbnVtYmVyO1xuICBudW1Sb3dzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlcmUgYXJlIGxhYmVsZWQgcm93c1xuICAgKi9cbiAgaGFzTGFiZWxzOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUcnVlIGlmIHRoaXMgbXRhYmxlIGlzIHRoZSB0b3AgZWxlbWVudCwgb3IgaW4gYSB0b3AtbW9zdCBtcm93XG4gICAqL1xuICBpc1RvcDogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHBhcmVudCBub2RlIG9mIHRoaXMgdGFibGUgKHNraXBwaW5nIG5vbi1wYXJlbnRzIGFuZCBtcm93cylcbiAgICogICBhbmQgdGhlIHBvc2l0aW9uIG9mIHRoZSB0YWJsZSBhcyBhIGNoaWxkIG5vZGVcbiAgICovXG4gIGNvbnRhaW5lcjogQW55V3JhcHBlcjtcbiAgY29udGFpbmVySTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc3BhY2luZyBhbmQgbGluZSBkYXRhXG4gICAqL1xuICBmcmFtZTogYm9vbGVhbjtcbiAgZkxpbmU6IG51bWJlcjtcbiAgZlNwYWNlOiBudW1iZXJbXTtcbiAgY1NwYWNlOiBudW1iZXJbXTtcbiAgclNwYWNlOiBudW1iZXJbXTtcbiAgY0xpbmVzOiBudW1iZXJbXTtcbiAgckxpbmVzOiBudW1iZXJbXTtcbiAgY1dpZHRoczogKG51bWJlciB8IHN0cmluZylbXTtcblxuICAvKipcbiAgICogVGhlIGJvdW5kaW5nIGJveCBpbmZvcm1hdGlvbiBmb3IgdGhlIHRhYmxlIHJvd3MgYW5kIGNvbHVtbnNcbiAgICovXG4gIGRhdGE6IFRhYmxlRGF0YTtcblxuICAvKipcbiAgICogVGhlIHRhYmxlIGNlbGxzIHRoYXQgaGF2ZSBwZXJjZW50YWdlLXdpZHRoIGNvbnRlbnRcbiAgICovXG4gIHB3aWR0aENlbGxzOiBbQywgbnVtYmVyXVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgZnVsbCB3aWR0aCBvZiBhIHBlcmNlbnRhZ2Utd2lkdGggdGFibGVcbiAgICovXG4gIHBXaWR0aDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcm93cyBvZiB0aGUgdGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHRhYmxlUm93czogUltdO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGNoaWxkTm9kZXM6IFJbXTtcblxuICAvKipcbiAgICogRmluZCB0aGUgY29udGFpbmVyIGFuZCB0aGUgY2hpbGQgcG9zaXRpb24gb2YgdGhlIHRhYmxlXG4gICAqL1xuICBmaW5kQ29udGFpbmVyKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIElmIHRoZSB0YWJsZSBoYXMgYSBwcmVjZW50YWdlIHdpZHRoIG9yIGhhcyBsYWJlbHMsIHNldCB0aGUgcHdpZHRoIG9mIHRoZSBib3VuZGluZyBib3hcbiAgICovXG4gIGdldFBlcmNlbnRhZ2VXaWR0aCgpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBTdHJldGNoIHRoZSByb3dzIHRvIHRoZSBlcXVhbCBoZWlnaHQgb3IgbmF0dXJhbCBoZWlnaHRcbiAgICovXG4gIHN0cmV0Y2hSb3dzKCk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFN0cmV0Y2ggdGhlIGNvbHVtbnMgdG8gdGhlaXIgcHJvcGVyIHdpZHRoc1xuICAgKi9cbiAgc3RyZXRjaENvbHVtbnMoKTogdm9pZDtcblxuICAvKipcbiAgICogSGFuZGxlIGhvcml6b250YWwgc3RyZXRjaGluZyB3aXRoaW4gdGhlIGl0aCBjb2x1bW5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGkgICBUaGUgY29sdW1uIG51bWJlclxuICAgKiBAcGFyYW0ge251bWJlcn0gVyAgIFRoZSBjb21wdXRlZCB3aWR0aCBvZiB0aGUgY29sdW1uIChvciBudWxsIG9mIG5vdCBjb21wdXRlZClcbiAgICovXG4gIHN0cmV0Y2hDb2x1bW4oaTogbnVtYmVyLCBXOiBudW1iZXIpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIHJvdyBoZWlnaHRzIGFuZCBkZXB0aHMsIHRoZSBjb2x1bW4gd2lkdGhzLFxuICAgKiBhbmQgdGhlIG5hdHVyYWwgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgdGFibGUuXG4gICAqXG4gICAqIEByZXR1cm4ge1RhYmxlRGF0YX0gIFRoZSBkaW1lbnNpb25zIG9mIHRoZSByb3dzIGFuZCBjb2x1bW5zXG4gICAqL1xuICBnZXRUYWJsZURhdGEoKTogVGFibGVEYXRhO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0N9IGNlbGwgICAgICAgICBUaGUgY2VsbCB3aG9zZSBoZWlnaHQsIGRlcHRoLCBhbmQgd2lkdGggYXJlIHRvIGJlIGFkZGVkIGludG8gdGhlIEgsIEQsIFcgYXJyYXlzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpICAgICAgIFRoZSBjb2x1bW4gbnVtYmVyIGZvciB0aGUgY2VsbFxuICAgKiBAcGFyYW0ge251bWJlcn0gaiAgICAgICBUaGUgcm93IG51bWJlciBmb3IgdGhlIGNlbGxcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFsaWduICAgVGhlIHJvdyBhbGlnbm1lbnRcbiAgICogQHBhcmFtIHtudW1iZXJbXX0gSCAgICAgVGhlIG1heGltdW0gaGVpZ2h0IGZvciBlYWNoIG9mIHRoZSByb3dzXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IEQgICAgIFRoZSBtYXhpbXVtIGRlcHRoIGZvciBlYWNoIG9mIHRoZSByb3dzXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IFcgICAgIFRoZSBtYXhpbXVtIHdpZHRoIGZvciBlYWNoIGNvbHVtblxuICAgKiBAcGFyYW0ge251bWJlcn0gTSAgICAgICBUaGUgY3VycmVudCBoZWlnaHQgZm9yIGl0ZW1zIGFsaWduZWQgdG9wIGFuZCBib3R0b21cbiAgICogQHJldHVybiB7bnVtYmVyfSAgICAgICAgVGhlIHVwZGF0ZWQgdmFsdWUgZm9yIE1cbiAgICovXG4gIHVwZGF0ZUhEVyhjZWxsOiBDLCBpOiBudW1iZXIsIGo6IG51bWJlciwgYWxpZ246IHN0cmluZywgSDogbnVtYmVyW10sIEQ6IG51bWJlcltdLCBXOiBudW1iZXJbXSwgTTogbnVtYmVyKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBFeHRlbmQgdGhlIEggYW5kIEQgb2YgYSByb3cgdG8gY292ZXIgdGhlIG1heGltdW0gaGVpZ2h0IG5lZWRlZCBieSB0b3AvYm90dG9tIGFsaWduZWQgaXRlbXNcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IGkgICAgIFRoZSByb3cgd2hvc2UgaGlnaHQgYW5kIGRlcHRoIHNob3VsZCBiZSBhZGp1c3RlZFxuICAgKiBAcGFyYW0ge251bWJlcltdfSBIICAgVGhlIHJvdyBoZWlnaHRzXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IEQgICBUaGUgcm93IGRlcHRoc1xuICAgKiBAcGFyYW0ge251bWJlcn0gTSAgICAgVGhlIG1heGltdW0gaGVpZ2h0IG9mIHRvcC9ib3R0b20gYWxpZ25lZCBpdGVtc1xuICAgKi9cbiAgZXh0ZW5kSEQoaTogbnVtYmVyLCBIOiBudW1iZXJbXSwgRDogbnVtYmVyW10sIE06IG51bWJlcik6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFNldCBjZWxsIHdpZHRocyBmb3IgY29sdW1ucyB3aXRoIHBlcmNlbnRhZ2Ugd2lkdGggY2hpbGRyZW5cbiAgICovXG4gIHNldENvbHVtblBXaWR0aHMoKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGhlaWdodCAgIFRoZSB0b3RhbCBoZWlnaHQgb2YgdGhlIHRhYmxlXG4gICAqIEByZXR1cm4ge251bWJlcltdfSAgICAgICBUaGUgW2hlaWdodCwgZGVwdGhdIGZvciB0aGUgYWxpZ25lZCB0YWJsZVxuICAgKi9cbiAgZ2V0QkJveEhEKGhlaWdodDogbnVtYmVyKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEdldCBiYm94IGxlZnQgYW5kIHJpZ2h0IGFtb3VudHMgdG8gY292ZXIgbGFiZWxzXG4gICAqL1xuICBnZXRCQm94TFIoKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlICAgICAgICAgICAgICAgICBUaGUgc2lkZSBmb3IgdGhlIGxhYmVsc1xuICAgKiBAcmV0dXJuIHtbbnVtYmVyLCBzdHJpbmcsIG51bWJlcl19ICAgVGhlIHBhZGRpbmcsIGFsaWdubWVudCwgYW5kIHNoaWZ0IGFtb3VudHNcbiAgICovXG4gIGdldFBhZEFsaWduU2hpZnQoc2lkZTogc3RyaW5nKTogW251bWJlciwgc3RyaW5nLCBudW1iZXJdO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgIFRoZSB0cnVlIHdpZHRoIG9mIHRoZSB0YWJsZSAod2l0aG91dCBsYWJlbHMpXG4gICAqL1xuICBnZXRXaWR0aCgpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge251bWJlcn0gICBUaGUgbWF4aW11bSBoZWlnaHQgb2YgYSByb3dcbiAgICovXG4gIGdldEVxdWFsUm93SGVpZ2h0KCk6IG51bWJlcjtcblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyW119ICAgVGhlIGFycmF5IG9mIGNvbXB1dGVkIHdpZHRoc1xuICAgKi9cbiAgZ2V0Q29tcHV0ZWRXaWR0aHMoKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgY29sdW1uIHdpZHRocyB0aGF0IGNhbiBiZSBjb21wdXRlZCAoYW5kIG5lZWQgdG8gYmUgc2V0KS5cbiAgICogVGhlIHJlc3VsdGluZyBhcnJheXMgd2lsbCBoYXZlIG51bWJlcnMgZm9yIGZpeGVkLXNpemUgYXJyYXlzLFxuICAgKiAgIHN0cmluZ3MgZm9yIHBlcmNlbnRhZ2Ugc2l6ZXMgdGhhdCBjYW4ndCBiZSBkZXRlcm1pbmVkIG5vdyxcbiAgICogICBhbmQgbnVsbCBmb3Igc3RyZXRjaHkgY29sdW1ucyB0aHQgd2lsbCBleHBhbmQgdG8gZmlsbCB0aGUgZXh0cmEgc3BhY2UuXG4gICAqIERlcGVuZGluZyBvbiB0aGUgd2lkdGggc3BlY2lmaWVkIGZvciB0aGUgdGFibGUsIGRpZmZlcmVudCBjb2x1bW5cbiAgICogIHZhbHVlcyBjYW4gYmUgZGV0ZXJtaW5lZC5cbiAgICpcbiAgICogQHJldHVybiB7Q29sdW1uV2lkdGhzfSAgVGhlIGFycmF5IG9mIHdpZHRoc1xuICAgKi9cbiAgZ2V0Q29sdW1uV2lkdGhzKCk6IENvbHVtbldpZHRocztcblxuICAvKipcbiAgICogRm9yIHRhYmxlcyB3aXRoIGVxdWFsIGNvbHVtbnMsIGdldCB0aGUgcHJvcGVyIGFtb3VudCBwZXIgcm93LlxuICAgKlxuICAgKiBAcmV0dXJuIHtDb2x1bW5XaWR0aHN9ICBUaGUgYXJyYXkgb2Ygd2lkdGhzXG4gICAqL1xuICBnZXRFcXVhbENvbHVtbnMod2lkdGg6IHN0cmluZyk6IENvbHVtbldpZHRocztcblxuICAvKipcbiAgICogRm9yIHRhYmxlcyB3aXRoIHdpZHRoPVwiYXV0b1wiLCBhdXRvIGFuZCBmaXQgY29sdW1uc1xuICAgKiB3aWxsIGVuZCB1cCBiZWluZyBuYXR1cmFsIHdpZHRoLCBzbyBkb24ndCBuZWVkIHRvXG4gICAqIHNldCB0aG9zZSBleHBsaWNpdGx5LlxuICAgKlxuICAgKiBAcmV0dXJuIHtDb2x1bW5XaWR0aHN9ICBUaGUgYXJyYXkgb2Ygd2lkdGhzXG4gICAqL1xuICBnZXRDb2x1bW5XaWR0aHNBdXRvKHN3aWR0aHM6IHN0cmluZ1tdKTogQ29sdW1uV2lkdGhzO1xuXG4gIC8qKlxuICAgKiBGb3IgdGFibGVzIHdpdGggcGVyY2VudGFnZSB3aWR0aHMsIGxldCAnZml0JyBjb2x1bW5zIChvciAnYXV0bydcbiAgICogY29sdW1ucyBpZiB0aGVyZSBhcmUgbm90ICdmaXQnIG9uZXMpIHdpbGwgc3RyZXRjaCBhdXRvbWF0aWNhbGx5LFxuICAgKiBidXQgZm9yICdhdXRvJyBjb2x1bW5zICh3aGVuIHRoZXJlIGFyZSAnZml0JyBvbmVzKSwgc2V0IHRoZSBzaXplXG4gICAqIHRvIHRoZSBuYXR1cmFsIHNpemUgb2YgdGhlIGNvbHVtbi5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gd2lkdGhzICBTdHJpbmdzIGdpdmluZyB0aGUgd2lkdGhzXG4gICAqIEByZXR1cm4ge0NvbHVtbldpZHRoc30gICAgVGhlIGFycmF5IG9mIHdpZHRoc1xuICAgKi9cbiAgZ2V0Q29sdW1uV2lkdGhzUGVyY2VudCh3aWR0aHM6IHN0cmluZ1tdKTogQ29sdW1uV2lkdGhzO1xuXG4gIC8qKlxuICAgKiBGb3IgZml4ZWQtd2lkdGggdGFibGVzLCBjb21wdXRlIHRoZSBjb2x1bW4gd2lkdGhzIG9mIGFsbCBjb2x1bW5zLlxuICAgKlxuICAgKiBAcmV0dXJuIHtDb2x1bW5XaWR0aHN9ICBUaGUgYXJyYXkgb2Ygd2lkdGhzXG4gICAqL1xuICBnZXRDb2x1bW5XaWR0aHNGaXhlZChzd2lkdGhzOiBzdHJpbmdbXSwgd2lkdGg6IG51bWJlcik6IENvbHVtbldpZHRocztcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGkgICAgICBUaGUgcm93IG51bWJlciAoc3RhcnRpbmcgYXQgMClcbiAgICogQHBhcmFtIHtzdHJpbmd9IGFsaWduICBUaGUgYWxpZ25tZW50IG9uIHRoYXQgcm93XG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgVGhlIG9mZmVzdCBvZiB0aGUgYWxpZ25tZW50IHBvc2l0aW9uIGZyb20gdGhlIHRvcCBvZiB0aGUgdGFibGVcbiAgICovXG4gIGdldFZlcnRpY2FsUG9zaXRpb24oaTogbnVtYmVyLCBhbGlnbjogc3RyaW5nKTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gZnNwYWNlICAgVGhlIGZyYW1lIHNwYWNpbmcgdG8gdXNlXG4gICAqIEBwYXJhbSB7bnVtYmVyW119IHNwYWNlICBUaGUgYXJyYXkgb2Ygc3BhY2luZyB2YWx1ZXMgdG8gY29udmVydCB0byBzdHJpbmdzXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzY2FsZSAgICBBIHNjYWxpbmcgZmFjdG9yIHRvIHVzZSBmb3IgdGhlIHNpemVzXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgICAgICBUaGUgaGFsZi1zcGFjaW5nIGFzIHN0aW5ncyB3aXRoIHVuaXRzIG9mIFwiZW1cIlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggZnJhbWUgc3BhY2luZyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmRcbiAgICovXG4gIGdldEVtSGFsZlNwYWNpbmcoZnNwYWNlOiBudW1iZXIsIHNwYWNlOiBudW1iZXJbXSwgc2NhbGU/OiBudW1iZXIpOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyW119ICAgVGhlIGhhbGYtc3BhY2luZyBmb3Igcm93cyB3aXRoIGZyYW1lIHNwYWNpbmcgYXQgdGhlIGVuZHNcbiAgICovXG4gIGdldFJvd0hhbGZTcGFjaW5nKCk6IG51bWJlcltdO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICBUaGUgaGFsZi1zcGFjaW5nIGZvciBjb2x1bW5zIHdpdGggZnJhbWUgc3BhY2luZyBhdCB0aGUgZW5kc1xuICAgKi9cbiAgZ2V0Q29sdW1uSGFsZlNwYWNpbmcoKTogbnVtYmVyW107XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge1tzdHJpbmcsbnVtYmVyfG51bGxdfSAgVGhlIGFsaWdubWVudCBhbmQgcm93IG51bWJlciAoYmFzZWQgYXQgMCkgb3IgbnVsbFxuICAgKi9cbiAgZ2V0QWxpZ25tZW50Um93KCk6IFtzdHJpbmcsIG51bWJlciB8IG51bGxdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB0byBnZXQgYXMgYW4gYXJyYXlcbiAgICogQHBhcmFtIHtudW1iZXI9fSBpICAgICAgICAgICAgIFJldHVybiB0aGlzIG1hbnkgZmV3ZXIgdGhhbiBudW1Db2xzIGVudHJpZXNcbiAgICogQHJldHVybiB7c3RyaW5nW119ICAgICAgICAgICAgIFRoZSBhcnJheSBvZiB2YWx1ZXMgaW4gdGhlIGdpdmVuIGF0dHJpYnV0ZSwgc3BsaXQgYXQgc3BhY2VzLFxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRlZCB0byB0aGUgbnVtYmVyIG9mIHRhYmxlIGNvbHVtbnMgKG1pbnVzIDEpIGJ5IHJlcGVhdGluZyB0aGUgbGFzdCBlbnRyeVxuICAgKi9cbiAgZ2V0Q29sdW1uQXR0cmlidXRlcyhuYW1lOiBzdHJpbmcsIGk/OiBudW1iZXIpOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gZ2V0IGFzIGFuIGFycmF5XG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gaSAgICAgICAgICAgICBSZXR1cm4gdGhpcyBtYW55IGZld2VyIHRoYW4gbnVtUm93cyBlbnRyaWVzXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgICAgICAgICAgICBUaGUgYXJyYXkgb2YgdmFsdWVzIGluIHRoZSBnaXZlbiBhdHRyaWJ1dGUsIHNwbGl0IGF0IHNwYWNlcyxcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkZWQgdG8gdGhlIG51bWJlciBvZiB0YWJsZSByb3dzIChtaW51cyAxKSBieSByZXBlYXRpbmcgdGhlIGxhc3QgZW50cnlcbiAgICovXG4gIGdldFJvd0F0dHJpYnV0ZXMobmFtZTogc3RyaW5nLCBpPzogbnVtYmVyKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIGdldCBhcyBhbiBhcnJheVxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gICAgICAgICAgICAgVGhlIGFycmF5IG9mIHZhbHVlcyBpbiB0aGUgZ2l2ZW4gYXR0cmlidXRlLCBzcGxpdCBhdCBzcGFjZXNcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWZ0ZXIgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIGFyZSByZW1vdmVkLCBhbmQgbXVsdGlwbGVcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VzIGhhdmUgYmVlbiBjb2xsYXBzZWQgdG8gb25lKS5cbiAgICovXG4gIGdldEF0dHJpYnV0ZUFycmF5KG5hbWU6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBBZGRzIFwiZW1cIiB0byBhIGxpc3Qgb2YgZGltZW5zaW9ucywgYWZ0ZXIgZGl2aWRpbmcgYnkgbiAoZGVmYXVsdHMgdG8gMSkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGxpc3QgICBUaGUgYXJyYXkgb2YgZGltZW5zaW9ucyAoaW4gZW0ncylcbiAgICogQHBhcmFtIHtudW5iZXI9fSBuICAgICAgIFRoZSBudW1iZXIgdG8gZGl2aWRlIGVhY2ggZGltZW5zaW9uIGJ5IGFmdGVyIGNvbnZlcnRlZFxuICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gICAgICAgVGhlIGFycmF5IG9mIHZhbHVlcyB3aXRoIFwiZW1cIiBhZGRlZFxuICAgKi9cbiAgYWRkRW0obGlzdDogbnVtYmVyW10sIG4/OiBudW1iZXIpOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQ29udmVydHMgYW4gYXJyYXkgb2YgZGltZW5zaW9ucyAod2l0aCBhcmJpdHJhcnkgdW5pdHMpIHRvIGFuIGFycmF5IG9mIG51bWJlcnNcbiAgICogICByZXByZXNlbnRpbmcgdGhlIGRpbWVuc2lvbnMgaW4gdW5pdHMgb2YgZW0ncy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gbGlzdCAgIFRoZSBhcnJheSBvZiBkaW1lbnNpb25zIHRvIGJlIHR1cm5lZCBpbnRvIGVtJ3NcbiAgICogQHJldHVybiB7bnVtYmVyW119ICAgICAgIFRoZSBhcnJheSBvZiB2YWx1ZXMgY29udmVydGVkIHRvIGVtJ3NcbiAgICovXG4gIGNvbnZlcnRMZW5ndGhzKGxpc3Q6IHN0cmluZ1tdKTogbnVtYmVyW107XG5cbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25NdGFibGUgY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTXRhYmxlQ29uc3RydWN0b3I8QyBleHRlbmRzIEFueVdyYXBwZXIsIFIgZXh0ZW5kcyBDb21tb25NdHI8Qz4+ID0gQ29uc3RydWN0b3I8Q29tbW9uTXRhYmxlPEMsIFI+PjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTXRhYmxlIHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNdGFibGUgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIEMgIFRoZSB0YWJsZSBjZWxsIGNsYXNzXG4gKiBAdGVtbHBhdGUgUiAgdGhlIHRhYmxlIHJvdyBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk10YWJsZU1peGluPFxuICBDIGV4dGVuZHMgQW55V3JhcHBlcixcbiAgUiBleHRlbmRzIENvbW1vbk10cjxDPixcbiAgVCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3RvclxuPihCYXNlOiBUKTogTXRhYmxlQ29uc3RydWN0b3I8QywgUj4gJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIFRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgdGFibGVcbiAgICAgKi9cbiAgICBwdWJsaWMgbnVtQ29sczogbnVtYmVyID0gMDtcbiAgICAvKipcbiAgICAgKiBUaGUgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlXG4gICAgICovXG4gICAgcHVibGljIG51bVJvd3M6IG51bWJlciA9IDA7XG5cbiAgICAvKipcbiAgICAgKiBUcnVlIGlmIHRoZXJlIGFyZSBsYWJlbGVkIHJvd3NcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFzTGFiZWxzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogVHJ1ZSBpZiB0aGlzIG10YWJsZSBpcyB0aGUgdG9wIGVsZW1lbnQsIG9yIGluIGEgdG9wLW1vc3QgbXJvd1xuICAgICAqL1xuICAgIHB1YmxpYyBpc1RvcDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIFRoZSBwYXJlbnQgbm9kZSBvZiB0aGlzIHRhYmxlIChza2lwcGluZyBub24tcGFyZW50cyBhbmQgbXJvd3MpXG4gICAgICovXG4gICAgcHVibGljIGNvbnRhaW5lcjogQW55V3JhcHBlcjtcbiAgICAvKipcbiAgICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIHRhYmxlIGFzIGEgY2hpbGQgbm9kZSBvZiBpdHMgY29udGFpbmVyXG4gICAgICovXG4gICAgcHVibGljIGNvbnRhaW5lckk6IG51bWJlcjtcblxuICAgIC8qKlxuICAgICAqIFRydWUgaWYgdGhlcmUgaXMgYSBmcmFtZVxuICAgICAqL1xuICAgIHB1YmxpYyBmcmFtZTogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBUaGUgc2l6ZSBvZiB0aGUgZnJhbWUgbGluZSAob3IgMCBpZiBub25lKVxuICAgICAqL1xuICAgIHB1YmxpYyBmTGluZTogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIGZyYW1lIHNwYWNpbmcgb24gdGhlIGxlZnQgYW5kIHJpZ2h0XG4gICAgICovXG4gICAgcHVibGljIGZTcGFjZTogbnVtYmVyW107XG4gICAgLyoqXG4gICAgICogVGhlIHNwYWNpbmcgYmV0d2VlbiBjb2x1bW5zXG4gICAgICovXG4gICAgcHVibGljIGNTcGFjZTogbnVtYmVyW107XG4gICAgLyoqXG4gICAgICogVGhlIHNwYWNpbmcgYmV0d2VlbiByb3dzXG4gICAgICovXG4gICAgcHVibGljIHJTcGFjZTogbnVtYmVyW107XG4gICAgLyoqXG4gICAgICogVGhlIHdpZHRoIG9mIGNvbHVtbnMgbGluZXMgKG9yIDAgaWYgbm8gbGluZSBmb3IgdGhlIGNvbHVtbilcbiAgICAgKi9cbiAgICBwdWJsaWMgY0xpbmVzOiBudW1iZXJbXTtcbiAgICAvKipcbiAgICAgKiBUaGUgd2lkdGggb2Ygcm93IGxpbmVzIChvciAwIGlmIG5vIGxvbmUgZm9yIHRoYXQgcm93KVxuICAgICAqL1xuICAgIHB1YmxpYyByTGluZXM6IG51bWJlcltdO1xuICAgIC8qKlxuICAgICAqIFRoZSBjb2x1bW4gd2lkdGhzIChvciBwZXJjZW50YWdlcywgZXRjLilcbiAgICAgKi9cbiAgICBwdWJsaWMgY1dpZHRoczogKG51bWJlciB8IHN0cmluZylbXTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBib3VuZGluZyBib3ggaW5mb3JtYXRpb24gZm9yIHRoZSB0YWJsZSByb3dzIGFuZCBjb2x1bW5zXG4gICAgICovXG4gICAgcHVibGljIGRhdGE6IFRhYmxlRGF0YSA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdGFibGUgY2VsbHMgdGhhdCBoYXZlIHBlcmNlbnRhZ2Utd2lkdGggY29udGVudFxuICAgICAqL1xuICAgIHB1YmxpYyBwd2lkdGhDZWxsczogW0MsIG51bWJlcl1bXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGZ1bGwgd2lkdGggb2YgYSBwZXJjZW50YWdlLXdpZHRoIHRhYmxlXG4gICAgICovXG4gICAgcHVibGljIHBXaWR0aDogbnVtYmVyID0gMDtcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge1JbXX0gIFRoZSByb3dzIG9mIHRoZSB0YWJsZVxuICAgICAqL1xuICAgIGdldCB0YWJsZVJvd3MoKTogUltdIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXM7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIC8vXG4gICAgICAvLyBEZXRlcm1pbmUgdGhlIG51bWJlciBvZiBjb2x1bW5zIGFuZCByb3dzLCBhbmQgd2hldGhlciB0aGUgdGFibGUgaXMgc3RyZXRjaHlcbiAgICAgIC8vXG4gICAgICB0aGlzLm51bUNvbHMgPSBtYXgodGhpcy50YWJsZVJvd3MubWFwKHJvdyA9PiByb3cubnVtQ2VsbHMpKTtcbiAgICAgIHRoaXMubnVtUm93cyA9IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGg7XG4gICAgICB0aGlzLmhhc0xhYmVscyA9IHRoaXMuY2hpbGROb2Rlcy5yZWR1Y2UoKHZhbHVlLCByb3cpID0+IHZhbHVlIHx8IHJvdy5ub2RlLmlzS2luZCgnbWxhYmVsZWR0cicpLCBmYWxzZSk7XG4gICAgICB0aGlzLmZpbmRDb250YWluZXIoKTtcbiAgICAgIHRoaXMuaXNUb3AgPSAhdGhpcy5jb250YWluZXIgfHwgKHRoaXMuY29udGFpbmVyLm5vZGUuaXNLaW5kKCdtYXRoJykgJiYgIXRoaXMuY29udGFpbmVyLnBhcmVudCk7XG4gICAgICBpZiAodGhpcy5pc1RvcCkge1xuICAgICAgICB0aGlzLmpheC50YWJsZSA9IHRoaXM7XG4gICAgICB9XG4gICAgICB0aGlzLmdldFBlcmNlbnRhZ2VXaWR0aCgpO1xuICAgICAgLy9cbiAgICAgIC8vIEdldCB0aGUgZnJhbWUsIHJvdywgYW5kIGNvbHVtbiBwYXJhbWV0ZXJzXG4gICAgICAvL1xuICAgICAgY29uc3QgYXR0cmlidXRlcyA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzO1xuICAgICAgdGhpcy5mcmFtZSA9IGF0dHJpYnV0ZXMuZ2V0KCdmcmFtZScpICE9PSAnbm9uZSc7XG4gICAgICB0aGlzLmZMaW5lID0gKHRoaXMuZnJhbWUgJiYgYXR0cmlidXRlcy5nZXQoJ2ZyYW1lJykgPyAuMDcgOiAwKTtcbiAgICAgIHRoaXMuZlNwYWNlID0gKHRoaXMuZnJhbWUgPyB0aGlzLmNvbnZlcnRMZW5ndGhzKHRoaXMuZ2V0QXR0cmlidXRlQXJyYXkoJ2ZyYW1lc3BhY2luZycpKSA6IFswLCAwXSk7XG4gICAgICB0aGlzLmNTcGFjZSA9IHRoaXMuY29udmVydExlbmd0aHModGhpcy5nZXRDb2x1bW5BdHRyaWJ1dGVzKCdjb2x1bW5zcGFjaW5nJykpO1xuICAgICAgdGhpcy5yU3BhY2UgPSB0aGlzLmNvbnZlcnRMZW5ndGhzKHRoaXMuZ2V0Um93QXR0cmlidXRlcygncm93c3BhY2luZycpKTtcbiAgICAgIHRoaXMuY0xpbmVzID0gdGhpcy5nZXRDb2x1bW5BdHRyaWJ1dGVzKCdjb2x1bW5saW5lcycpLm1hcCh4ID0+ICh4ID09PSAnbm9uZScgPyAwIDogLjA3KSk7XG4gICAgICB0aGlzLnJMaW5lcyA9IHRoaXMuZ2V0Um93QXR0cmlidXRlcygncm93bGluZXMnKS5tYXAoeCA9PiAoeCA9PT0gJ25vbmUnID8gMCA6IC4wNykpO1xuICAgICAgdGhpcy5jV2lkdGhzID0gdGhpcy5nZXRDb2x1bW5XaWR0aHMoKTtcbiAgICAgIC8vXG4gICAgICAvLyBTdHJldGNoIHRoZSByb3dzIGFuZCBjb2x1bW5zXG4gICAgICAvL1xuICAgICAgdGhpcy5zdHJldGNoUm93cygpO1xuICAgICAgdGhpcy5zdHJldGNoQ29sdW1ucygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZpbmQgdGhlIGNvbnRhaW5lciBhbmQgdGhlIGNoaWxkIHBvc2l0aW9uIG9mIHRoZSB0YWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyBmaW5kQ29udGFpbmVyKCkge1xuICAgICAgbGV0IG5vZGUgPSB0aGlzIGFzIEFueVdyYXBwZXI7XG4gICAgICBsZXQgcGFyZW50ID0gbm9kZS5wYXJlbnQgYXMgQW55V3JhcHBlcjtcbiAgICAgIHdoaWxlIChwYXJlbnQgJiYgKHBhcmVudC5ub2RlLm5vdFBhcmVudCB8fCBwYXJlbnQubm9kZS5pc0tpbmQoJ21yb3cnKSkpIHtcbiAgICAgICAgbm9kZSA9IHBhcmVudDtcbiAgICAgICAgcGFyZW50ID0gcGFyZW50LnBhcmVudDtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGFpbmVyID0gcGFyZW50O1xuICAgICAgdGhpcy5jb250YWluZXJJID0gbm9kZS5ub2RlLmNoaWxkUG9zaXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJZiB0aGUgdGFibGUgaGFzIGEgcHJlY2VudGFnZSB3aWR0aCBvciBoYXMgbGFiZWxzLCBzZXQgdGhlIHB3aWR0aCBvZiB0aGUgYm91bmRpbmcgYm94XG4gICAgICovXG4gICAgcHVibGljIGdldFBlcmNlbnRhZ2VXaWR0aCgpIHtcbiAgICAgIGlmICh0aGlzLmhhc0xhYmVscykge1xuICAgICAgICB0aGlzLmJib3gucHdpZHRoID0gQkJveC5mdWxsV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB3aWR0aCA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnd2lkdGgnKSBhcyBzdHJpbmc7XG4gICAgICAgIGlmIChpc1BlcmNlbnQod2lkdGgpKSB7XG4gICAgICAgICAgdGhpcy5iYm94LnB3aWR0aCA9IHdpZHRoO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RyZXRjaCB0aGUgcm93cyB0byB0aGUgZXF1YWwgaGVpZ2h0IG9yIG5hdHVyYWwgaGVpZ2h0XG4gICAgICovXG4gICAgcHVibGljIHN0cmV0Y2hSb3dzKCkge1xuICAgICAgY29uc3QgZXF1YWwgPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2VxdWFscm93cycpIGFzIGJvb2xlYW47XG4gICAgICBjb25zdCBIRCA9IChlcXVhbCA/IHRoaXMuZ2V0RXF1YWxSb3dIZWlnaHQoKSA6IDApO1xuICAgICAgY29uc3Qge0gsIER9ID0gKGVxdWFsID8gdGhpcy5nZXRUYWJsZURhdGEoKSA6IHtIOiBbMF0sIEQ6IFswXX0pO1xuICAgICAgY29uc3Qgcm93cyA9IHRoaXMudGFibGVSb3dzO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bVJvd3M7IGkrKykge1xuICAgICAgICBjb25zdCBoZCA9IChlcXVhbCA/IFsoSEQgKyBIW2ldIC0gRFtpXSkgLyAyLCAoSEQgLSBIW2ldICsgRFtpXSkgLyAyXSA6IG51bGwpO1xuICAgICAgICByb3dzW2ldLnN0cmV0Y2hDaGlsZHJlbihoZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RyZXRjaCB0aGUgY29sdW1ucyB0byB0aGVpciBwcm9wZXIgd2lkdGhzXG4gICAgICovXG4gICAgcHVibGljIHN0cmV0Y2hDb2x1bW5zKCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bUNvbHM7IGkrKykge1xuICAgICAgICBjb25zdCB3aWR0aCA9ICh0eXBlb2YgdGhpcy5jV2lkdGhzW2ldID09PSAnbnVtYmVyJyA/IHRoaXMuY1dpZHRoc1tpXSBhcyBudW1iZXIgOiBudWxsKTtcbiAgICAgICAgdGhpcy5zdHJldGNoQ29sdW1uKGksIHdpZHRoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGUgaG9yaXpvbnRhbCBzdHJldGNoaW5nIHdpdGhpbiB0aGUgaXRoIGNvbHVtblxuICAgICAqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGkgICBUaGUgY29sdW1uIG51bWJlclxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBXICAgVGhlIGNvbXB1dGVkIHdpZHRoIG9mIHRoZSBjb2x1bW4gKG9yIG51bGwgb2Ygbm90IGNvbXB1dGVkKVxuICAgICAqL1xuICAgIHB1YmxpYyBzdHJldGNoQ29sdW1uKGk6IG51bWJlciwgVzogbnVtYmVyKSB7XG4gICAgICBsZXQgc3RyZXRjaHk6IEFueVdyYXBwZXJbXSA9IFtdO1xuICAgICAgLy9cbiAgICAgIC8vICBMb2NhdGUgYW5kIGNvdW50IHRoZSBzdHJldGNoeSBjaGlsZHJlblxuICAgICAgLy9cbiAgICAgIGZvciAoY29uc3Qgcm93IG9mIHRoaXMudGFibGVSb3dzKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSByb3cuZ2V0Q2hpbGQoaSk7XG4gICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgY29uc3QgY2hpbGQgPSBjZWxsLmNoaWxkTm9kZXNbMF07XG4gICAgICAgICAgaWYgKGNoaWxkLnN0cmV0Y2guZGlyID09PSBESVJFQ1RJT04uTm9uZSAmJlxuICAgICAgICAgICAgICBjaGlsZC5jYW5TdHJldGNoKERJUkVDVElPTi5Ib3Jpem9udGFsKSkge1xuICAgICAgICAgICAgc3RyZXRjaHkucHVzaChjaGlsZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY291bnQgPSBzdHJldGNoeS5sZW5ndGg7XG4gICAgICBsZXQgbm9kZUNvdW50ID0gdGhpcy5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgIGlmIChjb3VudCAmJiBub2RlQ291bnQgPiAxKSB7XG4gICAgICAgIGlmIChXID09PSBudWxsKSB7XG4gICAgICAgICAgVyA9IDA7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAgSWYgYWxsIHRoZSBjaGlsZHJlbiBhcmUgc3RyZXRjaHksIGZpbmQgdGhlIGxhcmdlc3Qgb25lLFxuICAgICAgICAgIC8vICBvdGhlcndpc2UsIGZpbmQgdGhlIHdpZHRoIG9mIHRoZSBub24tc3RyZXRjaHkgY2hpbGRyZW4uXG4gICAgICAgICAgLy9cbiAgICAgICAgICBsZXQgYWxsID0gKGNvdW50ID4gMSAmJiBjb3VudCA9PT0gbm9kZUNvdW50KTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHJvdyBvZiB0aGlzLnRhYmxlUm93cykge1xuICAgICAgICAgICAgY29uc3QgY2VsbCA9IHJvdy5nZXRDaGlsZChpKTtcbiAgICAgICAgICAgIGlmIChjZWxsKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNoaWxkID0gY2VsbC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgICBjb25zdCBub1N0cmV0Y2ggPSAoY2hpbGQuc3RyZXRjaC5kaXIgPT09IERJUkVDVElPTi5Ob25lKTtcbiAgICAgICAgICAgICAgaWYgKGFsbCB8fCBub1N0cmV0Y2gpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB7d30gPSBjaGlsZC5nZXRCQm94KG5vU3RyZXRjaCk7XG4gICAgICAgICAgICAgICAgaWYgKHcgPiBXKSB7XG4gICAgICAgICAgICAgICAgICBXID0gdztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLy9cbiAgICAgICAgLy8gIFN0cmV0Y2ggdGhlIHN0cmV0Y2hhYmxlIGNoaWxkcmVuXG4gICAgICAgIC8vXG4gICAgICAgIGZvciAoY29uc3QgY2hpbGQgb2Ygc3RyZXRjaHkpIHtcbiAgICAgICAgICAoY2hpbGQuY29yZU1PKCkgYXMgQ29tbW9uTW8pLmdldFN0cmV0Y2hlZFZhcmlhbnQoW1ddKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgdGhlIHJvdyBoZWlnaHRzIGFuZCBkZXB0aHMsIHRoZSBjb2x1bW4gd2lkdGhzLFxuICAgICAqIGFuZCB0aGUgbmF0dXJhbCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB0YWJsZS5cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1RhYmxlRGF0YX0gIFRoZSBkaW1lbnNpb25zIG9mIHRoZSByb3dzIGFuZCBjb2x1bW5zXG4gICAgICovXG4gICAgcHVibGljIGdldFRhYmxlRGF0YSgpOiBUYWJsZURhdGEge1xuICAgICAgaWYgKHRoaXMuZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhO1xuICAgICAgfVxuICAgICAgY29uc3QgSCA9IG5ldyBBcnJheSh0aGlzLm51bVJvd3MpLmZpbGwoMCk7XG4gICAgICBjb25zdCBEID0gbmV3IEFycmF5KHRoaXMubnVtUm93cykuZmlsbCgwKTtcbiAgICAgIGNvbnN0IFcgPSBuZXcgQXJyYXkodGhpcy5udW1Db2xzKS5maWxsKDApO1xuICAgICAgY29uc3QgTkggPSBuZXcgQXJyYXkodGhpcy5udW1Sb3dzKTtcbiAgICAgIGNvbnN0IE5EID0gbmV3IEFycmF5KHRoaXMubnVtUm93cyk7XG4gICAgICBjb25zdCBMVyA9IFswXTtcbiAgICAgIGNvbnN0IHJvd3MgPSB0aGlzLnRhYmxlUm93cztcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcm93cy5sZW5ndGg7IGorKykge1xuICAgICAgICBsZXQgTSA9IDA7XG4gICAgICAgIGNvbnN0IHJvdyA9IHJvd3Nbal07XG4gICAgICAgIGNvbnN0IGFsaWduID0gcm93Lm5vZGUuYXR0cmlidXRlcy5nZXQoJ3Jvd2FsaWduJykgYXMgc3RyaW5nO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJvdy5udW1DZWxsczsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgY2VsbCA9IHJvdy5nZXRDaGlsZChpKTtcbiAgICAgICAgICBNID0gdGhpcy51cGRhdGVIRFcoY2VsbCwgaSwgaiwgYWxpZ24sIEgsIEQsIFcsIE0pO1xuICAgICAgICAgIHRoaXMucmVjb3JkUFdpZHRoQ2VsbChjZWxsLCBpKTtcbiAgICAgICAgfVxuICAgICAgICBOSFtqXSA9IEhbal07XG4gICAgICAgIE5EW2pdID0gRFtqXTtcbiAgICAgICAgaWYgKHJvdy5sYWJlbGVkKSB7XG4gICAgICAgICAgTSA9IHRoaXMudXBkYXRlSERXKHJvdy5jaGlsZE5vZGVzWzBdLCAwLCBqLCBhbGlnbiwgSCwgRCwgTFcsIE0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXh0ZW5kSEQoaiwgSCwgRCwgTSk7XG4gICAgICAgIHRoaXMuZXh0ZW5kSEQoaiwgTkgsIE5ELCBNKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IEwgPSBMV1swXTtcbiAgICAgIHRoaXMuZGF0YSA9IHtILCBELCBXLCBOSCwgTkQsIEx9O1xuICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdXBkYXRlSERXKFxuICAgICAgY2VsbDogQywgaTogbnVtYmVyLCBqOiBudW1iZXIsIGFsaWduOiBzdHJpbmcsIEg6IG51bWJlcltdLCBEOiBudW1iZXJbXSwgVzogbnVtYmVyW10sIE06IG51bWJlclxuICAgICk6IG51bWJlciB7XG4gICAgICBsZXQge2gsIGQsIHd9ID0gY2VsbC5nZXRCQm94KCk7XG4gICAgICBjb25zdCBzY2FsZSA9IGNlbGwucGFyZW50LmJib3gucnNjYWxlO1xuICAgICAgaWYgKGNlbGwucGFyZW50LmJib3gucnNjYWxlICE9PSAxKSB7XG4gICAgICAgIGggKj0gc2NhbGU7XG4gICAgICAgIGQgKj0gc2NhbGU7XG4gICAgICAgIHcgKj0gc2NhbGU7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5ub2RlLmdldFByb3BlcnR5KCd1c2VIZWlnaHQnKSkge1xuICAgICAgICBpZiAoaCA8IC43NSkgaCA9IC43NTtcbiAgICAgICAgaWYgKGQgPCAuMjUpIGQgPSAuMjU7XG4gICAgICB9XG4gICAgICBsZXQgbSA9IDA7XG4gICAgICBhbGlnbiA9IGNlbGwubm9kZS5hdHRyaWJ1dGVzLmdldCgncm93YWxpZ24nKSBhcyBzdHJpbmcgfHwgYWxpZ247XG4gICAgICBpZiAoYWxpZ24gIT09ICdiYXNlbGluZScgJiYgYWxpZ24gIT09ICdheGlzJykge1xuICAgICAgICBtID0gaCArIGQ7XG4gICAgICAgIGggPSBkID0gMDtcbiAgICAgIH1cbiAgICAgIGlmIChoID4gSFtqXSkgSFtqXSA9IGg7XG4gICAgICBpZiAoZCA+IERbal0pIERbal0gPSBkO1xuICAgICAgaWYgKG0gPiBNKSBNID0gbTtcbiAgICAgIGlmIChXICYmIHcgPiBXW2ldKSBXW2ldID0gdztcbiAgICAgIHJldHVybiBNO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBleHRlbmRIRChpOiBudW1iZXIsIEg6IG51bWJlcltdLCBEOiBudW1iZXJbXSwgTTogbnVtYmVyKSB7XG4gICAgICBjb25zdCBkID0gKE0gLSAoSFtpXSArIERbaV0pKSAvIDI7XG4gICAgICBpZiAoZCA8IC4wMDAwMSkgcmV0dXJuO1xuICAgICAgSFtpXSArPSBkO1xuICAgICAgRFtpXSArPSBkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7Q30gY2VsbCAgICAgVGhlIGNlbGwgdG8gY2hlY2sgZm9yIHBlcmNlbnRhZ2Ugd2lkdGhzXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGkgICBUaGUgY29sdW1uIGluZGV4IG9mIHRoZSBjZWxsXG4gICAgICovXG4gICAgcHVibGljIHJlY29yZFBXaWR0aENlbGwoY2VsbDogQywgaTogbnVtYmVyKSB7XG4gICAgICBpZiAoY2VsbC5jaGlsZE5vZGVzWzBdICYmIGNlbGwuY2hpbGROb2Rlc1swXS5nZXRCQm94KCkucHdpZHRoKSB7XG4gICAgICAgIHRoaXMucHdpZHRoQ2VsbHMucHVzaChbY2VsbCwgaV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wdXRlQkJveChiYm94OiBCQm94LCBfcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHtILCBEfSA9IHRoaXMuZ2V0VGFibGVEYXRhKCk7XG4gICAgICBsZXQgaGVpZ2h0LCB3aWR0aDtcbiAgICAgIC8vXG4gICAgICAvLyBGb3IgZXF1YWwgcm93cywgdXNlIHRoZSBjb21tb24gaGVpZ2h0IGFuZCBkZXB0aCBmb3IgYWxsIHJvd3NcbiAgICAgIC8vIE90aGVyd2lzZSwgdXNlIHRoZSBoZWlnaHQgYW5kIGRlcHRocyBmb3IgZWFjaCByb3cgc2VwYXJhdGVseS5cbiAgICAgIC8vIEFkZCBpbiB0aGUgc3BhY2luZywgbGluZSB3aWR0aHMsIGFuZCBmcmFtZSBzaXplLlxuICAgICAgLy9cbiAgICAgIGlmICh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2VxdWFscm93cycpIGFzIGJvb2xlYW4pIHtcbiAgICAgICAgY29uc3QgSEQgPSB0aGlzLmdldEVxdWFsUm93SGVpZ2h0KCk7XG4gICAgICAgIGhlaWdodCA9IHN1bShbXS5jb25jYXQodGhpcy5yTGluZXMsIHRoaXMuclNwYWNlKSkgKyBIRCAqIHRoaXMubnVtUm93cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhlaWdodCA9IHN1bShILmNvbmNhdChELCB0aGlzLnJMaW5lcywgdGhpcy5yU3BhY2UpKTtcbiAgICAgIH1cbiAgICAgIGhlaWdodCArPSAyICogKHRoaXMuZkxpbmUgKyB0aGlzLmZTcGFjZVsxXSk7XG4gICAgICAvL1xuICAgICAgLy8gIEdldCB0aGUgd2lkdGhzIG9mIGFsbCBjb2x1bW5zXG4gICAgICAvL1xuICAgICAgY29uc3QgQ1cgPSB0aGlzLmdldENvbXB1dGVkV2lkdGhzKCk7XG4gICAgICAvL1xuICAgICAgLy8gIEdldCB0aGUgZXhwZWN0ZWQgd2lkdGggb2YgdGhlIHRhYmxlXG4gICAgICAvL1xuICAgICAgd2lkdGggPSBzdW0oQ1cuY29uY2F0KHRoaXMuY0xpbmVzLCB0aGlzLmNTcGFjZSkpICsgMiAqICh0aGlzLmZMaW5lICsgdGhpcy5mU3BhY2VbMF0pO1xuICAgICAgLy9cbiAgICAgIC8vICBJZiB0aGUgdGFibGUgd2lkdGggaXMgbm90ICdhdXRvJywgZGV0ZXJtaW5lIHRoZSBzcGVjaWZpZWQgd2lkdGhcbiAgICAgIC8vICAgIGFuZCBwaWNrIHRoZSBsYXJnZXIgb2YgdGhlIHNwZWNpZmllZCBhbmQgY29tcHV0ZWQgd2lkdGhzLlxuICAgICAgLy9cbiAgICAgIGNvbnN0IHcgPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ3dpZHRoJykgYXMgc3RyaW5nO1xuICAgICAgaWYgKHcgIT09ICdhdXRvJykge1xuICAgICAgICB3aWR0aCA9IE1hdGgubWF4KHRoaXMubGVuZ3RoMmVtKHcsIDApICsgMiAqIHRoaXMuZkxpbmUsIHdpZHRoKTtcbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICAvLyAgUmV0dXJuIHRoZSBib3VuZGluZyBib3ggaW5mb3JtYXRpb25cbiAgICAgIC8vXG4gICAgICBsZXQgW2gsIGRdID0gdGhpcy5nZXRCQm94SEQoaGVpZ2h0KTtcbiAgICAgIGJib3guaCA9IGg7XG4gICAgICBiYm94LmQgPSBkO1xuICAgICAgYmJveC53ID0gd2lkdGg7XG4gICAgICBsZXQgW0wsIFJdID0gdGhpcy5nZXRCQm94TFIoKTtcbiAgICAgIGJib3guTCA9IEw7XG4gICAgICBiYm94LlIgPSBSO1xuICAgICAgLy9cbiAgICAgIC8vICBIYW5kbGUgY2VsbCB3aWR0aHMgaWYgd2lkdGggaXMgbm90IGEgcGVyY2VudGFnZVxuICAgICAgLy9cbiAgICAgIGlmICghaXNQZXJjZW50KHcpKSB7XG4gICAgICAgIHRoaXMuc2V0Q29sdW1uUFdpZHRocygpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDaGlsZFBXaWR0aHMoX3JlY29tcHV0ZTogYm9vbGVhbiwgY3dpZHRoOiBudW1iZXIsIF9jbGVhcjogYm9vbGVhbikge1xuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ3dpZHRoJykgYXMgc3RyaW5nO1xuICAgICAgaWYgKCFpc1BlcmNlbnQod2lkdGgpKSByZXR1cm4gZmFsc2U7XG4gICAgICBpZiAoIXRoaXMuaGFzTGFiZWxzKSB7XG4gICAgICAgIHRoaXMuYmJveC5wd2lkdGggPSAnJztcbiAgICAgICAgdGhpcy5jb250YWluZXIuYmJveC5wd2lkdGggPSAnJztcbiAgICAgIH1cbiAgICAgIGNvbnN0IHt3LCBMLCBSfSA9IHRoaXMuYmJveDtcbiAgICAgIGNvbnN0IGxhYmVsSW5XaWR0aCA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnZGF0YS13aWR0aC1pbmNsdWRlcy1sYWJlbCcpIGFzIGJvb2xlYW47XG4gICAgICBjb25zdCBXID0gTWF0aC5tYXgodywgdGhpcy5sZW5ndGgyZW0od2lkdGgsIE1hdGgubWF4KGN3aWR0aCwgTCArIHcgKyBSKSkpIC0gKGxhYmVsSW5XaWR0aCA/IEwgKyBSIDogMCk7XG4gICAgICBjb25zdCBjb2xzID0gKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnZXF1YWxjb2x1bW5zJykgYXMgYm9vbGVhbiA/XG4gICAgICAgICAgICAgICAgICAgIEFycmF5KHRoaXMubnVtQ29scykuZmlsbCh0aGlzLnBlcmNlbnQoMSAvIE1hdGgubWF4KDEsIHRoaXMubnVtQ29scykpKSA6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0Q29sdW1uQXR0cmlidXRlcygnY29sdW1ud2lkdGgnLCAwKSk7XG4gICAgICB0aGlzLmNXaWR0aHMgPSB0aGlzLmdldENvbHVtbldpZHRoc0ZpeGVkKGNvbHMsIFcpO1xuICAgICAgY29uc3QgQ1cgPSB0aGlzLmdldENvbXB1dGVkV2lkdGhzKCk7XG4gICAgICB0aGlzLnBXaWR0aCA9IHN1bShDVy5jb25jYXQodGhpcy5jTGluZXMsIHRoaXMuY1NwYWNlKSkgKyAyICogKHRoaXMuZkxpbmUgKyB0aGlzLmZTcGFjZVswXSk7XG4gICAgICBpZiAodGhpcy5pc1RvcCkge1xuICAgICAgICB0aGlzLmJib3gudyA9IHRoaXMucFdpZHRoO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRDb2x1bW5QV2lkdGhzKCk7XG4gICAgICBpZiAodGhpcy5wV2lkdGggIT09IHcpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQuaW52YWxpZGF0ZUJCb3goKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnBXaWR0aCAhPT0gdztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGaW5hbGl6ZSBhbnkgY2VsbHMgdGhhdCBoYXZlIHBlcmNlbnRhZ2Utd2lkdGggY29udGVudFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRDb2x1bW5QV2lkdGhzKCkge1xuICAgICAgY29uc3QgVyA9IHRoaXMuY1dpZHRocyBhcyBudW1iZXJbXTtcbiAgICAgIGZvciAoY29uc3QgW2NlbGwsIGldIG9mIHRoaXMucHdpZHRoQ2VsbHMpIHtcbiAgICAgICAgaWYgKGNlbGwuc2V0Q2hpbGRQV2lkdGhzKGZhbHNlLCBXW2ldKSkge1xuICAgICAgICAgIGNlbGwuaW52YWxpZGF0ZUJCb3goKTtcbiAgICAgICAgICBjZWxsLmdldEJCb3goKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSBoZWlnaHQgICBUaGUgdG90YWwgaGVpZ2h0IG9mIHRoZSB0YWJsZVxuICAgICAqIEByZXR1cm4ge1tudW1iZXIsIG51bWJlcl19ICBUaGUgW2hlaWdodCwgZGVwdGhdIGZvciB0aGUgYWxpZ25lZCB0YWJsZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRCQm94SEQoaGVpZ2h0OiBudW1iZXIpOiBbbnVtYmVyLCBudW1iZXJdIHtcbiAgICAgIGNvbnN0IFthbGlnbiwgcm93XSA9IHRoaXMuZ2V0QWxpZ25tZW50Um93KCk7XG4gICAgICBpZiAocm93ID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGEgPSB0aGlzLmZvbnQucGFyYW1zLmF4aXNfaGVpZ2h0O1xuICAgICAgICBjb25zdCBoMiA9IGhlaWdodCAvIDI7XG4gICAgICAgIGNvbnN0IEhEOiB7W2tleTogc3RyaW5nXTogW251bWJlciwgbnVtYmVyXX0gPSB7XG4gICAgICAgICAgdG9wOiBbMCwgaGVpZ2h0XSxcbiAgICAgICAgICBjZW50ZXI6IFtoMiwgaDJdLFxuICAgICAgICAgIGJvdHRvbTogW2hlaWdodCwgMF0sXG4gICAgICAgICAgYmFzZWxpbmU6IFtoMiwgaDJdLFxuICAgICAgICAgIGF4aXM6IFtoMiArIGEsIGgyIC0gYV1cbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIEhEW2FsaWduXSB8fCBbaDIsIGgyXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHkgPSB0aGlzLmdldFZlcnRpY2FsUG9zaXRpb24ocm93LCBhbGlnbik7XG4gICAgICAgIHJldHVybiBbeSwgaGVpZ2h0IC0geV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGJib3ggbGVmdCBhbmQgcmlnaHQgYW1vdW50cyB0byBjb3ZlciBsYWJlbHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QkJveExSKCkge1xuICAgICAgaWYgKHRoaXMuaGFzTGFiZWxzKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcztcbiAgICAgICAgY29uc3Qgc2lkZSA9IGF0dHJpYnV0ZXMuZ2V0KCdzaWRlJykgYXMgc3RyaW5nO1xuICAgICAgICBsZXQgW3BhZCwgYWxpZ25dID0gdGhpcy5nZXRQYWRBbGlnblNoaWZ0KHNpZGUpO1xuICAgICAgICAvL1xuICAgICAgICAvLyBJZiBsYWJlbHMgYXJlIGluY2x1ZGVkIGluIHRoZSB3aWR0aCxcbiAgICAgICAgLy8gICByZW1vdmUgdGhlIGZyYW1lIHNwYWNpbmcgaWYgdGhlcmUgaXMgbm8gZnJhbWUgbGluZSAoYWRkZWQgYnkgbXVsdGxpbmUpXG4gICAgICAgIC8vICAgYW5kIHVzZSBsZWZ0IG9yIHJpZ2h0IGp1c3RpZmljYXRpb24gcmF0aGVyIHRoYW4gY2VudGVyaW5nIHNvIHRoYXRcbiAgICAgICAgLy8gICB0aGVyZSBpcyBubyBleHRyYSBzcGFjZSByZXNlcnZlZCBmb3IgdGhlIGxhYmVsIG9uIHRoZSBvcHBvc2l0ZSBzaWRlLFxuICAgICAgICAvLyAgIChhcyB0aGVyZSB1c3VhbGx5IGlzIHRvIGNlbnRlciB0aGUgZXF1YXRpb24pLlxuICAgICAgICAvL1xuICAgICAgICBjb25zdCBsYWJlbHMgPSB0aGlzLmhhc0xhYmVscyAmJiAhIWF0dHJpYnV0ZXMuZ2V0KCdkYXRhLXdpZHRoLWluY2x1ZGVzLWxhYmVsJyk7XG4gICAgICAgIGlmIChsYWJlbHMgJiYgdGhpcy5mcmFtZSAmJiB0aGlzLmZTcGFjZVswXSkge1xuICAgICAgICAgIHBhZCAtPSB0aGlzLmZTcGFjZVswXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gKGFsaWduID09PSAnY2VudGVyJyAmJiAhbGFiZWxzID8gW3BhZCwgcGFkXSA6XG4gICAgICAgICAgICAgICAgc2lkZSA9PT0gJ2xlZnQnID8gW3BhZCwgMF0gOiBbMCwgcGFkXSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gWzAsIDBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlICAgICAgICAgICAgICAgICBUaGUgc2lkZSBmb3IgdGhlIGxhYmVsc1xuICAgICAqIEByZXR1cm4ge1tudW1iZXIsIHN0cmluZywgbnVtYmVyXX0gICBUaGUgcGFkZGluZywgYWxpZ25tZW50LCBhbmQgc2hpZnQgYW1vdW50c1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYWRBbGlnblNoaWZ0KHNpZGU6IHN0cmluZyk6IFtudW1iZXIsIHN0cmluZywgbnVtYmVyXSB7XG4gICAgICAvL1xuICAgICAgLy8gIE1ha2Ugc3VyZSBsYWJlbHMgZG9uJ3Qgb3ZlcmxhcCB0YWJsZVxuICAgICAgLy9cbiAgICAgIGNvbnN0IHtMfSA9IHRoaXMuZ2V0VGFibGVEYXRhKCk7XG4gICAgICBjb25zdCBzZXAgPSB0aGlzLmxlbmd0aDJlbSh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ21pbmxhYmVsc3BhY2luZycpKTtcbiAgICAgIGxldCBwYWQgPSBMICsgc2VwO1xuICAgICAgY29uc3QgW2xwYWQsIHJwYWRdID0gKHRoaXMuc3R5bGVzID09IG51bGwgPyBbJycsICcnXSA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RoaXMuc3R5bGVzLmdldCgncGFkZGluZy1sZWZ0JyksIHRoaXMuc3R5bGVzLmdldCgncGFkZGluZy1yaWdodCcpXSk7XG4gICAgICBpZiAobHBhZCB8fCBycGFkKSB7XG4gICAgICAgIHBhZCA9IE1hdGgubWF4KHBhZCwgdGhpcy5sZW5ndGgyZW0obHBhZCB8fCAnMCcpLCB0aGlzLmxlbmd0aDJlbShycGFkIHx8ICcwJykpO1xuICAgICAgfVxuICAgICAgLy9cbiAgICAgIC8vICBIYW5kbGUgaW5kZW50YXRpb25cbiAgICAgIC8vXG4gICAgICBsZXQgW2FsaWduLCBzaGlmdF0gPSB0aGlzLmdldEFsaWduU2hpZnQoKTtcbiAgICAgIGlmIChhbGlnbiA9PT0gc2lkZSkge1xuICAgICAgICBzaGlmdCA9IChzaWRlID09PSAnbGVmdCcgPyBNYXRoLm1heChwYWQsIHNoaWZ0KSAtIHBhZCA6IE1hdGgubWluKC1wYWQsIHNoaWZ0KSArIHBhZCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gW3BhZCwgYWxpZ24sIHNoaWZ0XSBhcyBbbnVtYmVyLCBzdHJpbmcsIG51bWJlcl07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldEFsaWduU2hpZnQoKSB7XG4gICAgICByZXR1cm4gKHRoaXMuaXNUb3AgPyBzdXBlci5nZXRBbGlnblNoaWZ0KCkgOlxuICAgICAgICAgICAgICBbdGhpcy5jb250YWluZXIuZ2V0Q2hpbGRBbGlnbih0aGlzLmNvbnRhaW5lckkpLCAwXSBhcyBbc3RyaW5nLCBudW1iZXJdKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgIFRoZSB0cnVlIHdpZHRoIG9mIHRoZSB0YWJsZSAod2l0aG91dCBsYWJlbHMpXG4gICAgICovXG4gICAgcHVibGljIGdldFdpZHRoKCk6IG51bWJlciB7XG4gICAgICByZXR1cm4gdGhpcy5wV2lkdGggfHwgdGhpcy5nZXRCQm94KCkudztcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAgIFRoZSBtYXhpbXVtIGhlaWdodCBvZiBhIHJvd1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRFcXVhbFJvd0hlaWdodCgpOiBudW1iZXIge1xuICAgICAgY29uc3Qge0gsIER9ID0gdGhpcy5nZXRUYWJsZURhdGEoKTtcbiAgICAgIGNvbnN0IEhEID0gQXJyYXkuZnJvbShILmtleXMoKSkubWFwKGkgPT4gSFtpXSArIERbaV0pO1xuICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsIEhEKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICBUaGUgYXJyYXkgb2YgY29tcHV0ZWQgd2lkdGhzXG4gICAgICovXG4gICAgcHVibGljIGdldENvbXB1dGVkV2lkdGhzKCk6IG51bWJlcltdIHtcbiAgICAgIGNvbnN0IFcgPSB0aGlzLmdldFRhYmxlRGF0YSgpLlc7XG4gICAgICBsZXQgQ1cgPSBBcnJheS5mcm9tKFcua2V5cygpKS5tYXAoaSA9PiB7XG4gICAgICAgIHJldHVybiAodHlwZW9mIHRoaXMuY1dpZHRoc1tpXSA9PT0gJ251bWJlcicgPyB0aGlzLmNXaWR0aHNbaV0gYXMgbnVtYmVyIDogV1tpXSk7XG4gICAgICB9KTtcbiAgICAgIGlmICh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2VxdWFsY29sdW1ucycpIGFzIGJvb2xlYW4pIHtcbiAgICAgICAgQ1cgPSBBcnJheShDVy5sZW5ndGgpLmZpbGwobWF4KENXKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gQ1c7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lIHRoZSBjb2x1bW4gd2lkdGhzIHRoYXQgY2FuIGJlIGNvbXB1dGVkIChhbmQgbmVlZCB0byBiZSBzZXQpLlxuICAgICAqIFRoZSByZXN1bHRpbmcgYXJyYXlzIHdpbGwgaGF2ZSBudW1iZXJzIGZvciBmaXhlZC1zaXplIGFycmF5cyxcbiAgICAgKiAgIHN0cmluZ3MgZm9yIHBlcmNlbnRhZ2Ugc2l6ZXMgdGhhdCBjYW4ndCBiZSBkZXRlcm1pbmVkIG5vdyxcbiAgICAgKiAgIGFuZCBudWxsIGZvciBzdHJldGNoeSBjb2x1bW5zIHRoYXQgd2lsbCBleHBhbmQgdG8gZmlsbCB0aGUgZXh0cmEgc3BhY2UuXG4gICAgICogRGVwZW5kaW5nIG9uIHRoZSB3aWR0aCBzcGVjaWZpZWQgZm9yIHRoZSB0YWJsZSwgZGlmZmVyZW50IGNvbHVtblxuICAgICAqICB2YWx1ZXMgY2FuIGJlIGRldGVybWluZWQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHsoc3RyaW5nfG51bWJlcnxudWxsKVtdfSAgVGhlIGFycmF5IG9mIHdpZHRoc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5XaWR0aHMoKTogKHN0cmluZyB8IG51bWJlciB8IG51bGwpW10ge1xuICAgICAgY29uc3Qgd2lkdGggPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ3dpZHRoJykgYXMgc3RyaW5nO1xuICAgICAgaWYgKHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnZXF1YWxjb2x1bW5zJykgYXMgYm9vbGVhbikge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRFcXVhbENvbHVtbnMod2lkdGgpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc3dpZHRocyA9IHRoaXMuZ2V0Q29sdW1uQXR0cmlidXRlcygnY29sdW1ud2lkdGgnLCAwKTtcbiAgICAgIGlmICh3aWR0aCA9PT0gJ2F1dG8nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldENvbHVtbldpZHRoc0F1dG8oc3dpZHRocyk7XG4gICAgICB9XG4gICAgICBpZiAoaXNQZXJjZW50KHdpZHRoKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRDb2x1bW5XaWR0aHNQZXJjZW50KHN3aWR0aHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q29sdW1uV2lkdGhzRml4ZWQoc3dpZHRocywgdGhpcy5sZW5ndGgyZW0od2lkdGgpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3IgdGFibGVzIHdpdGggZXF1YWwgY29sdW1ucywgZ2V0IHRoZSBwcm9wZXIgYW1vdW50IHBlciBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gd2lkdGggICBUaGUgd2lkdGggYXR0cmlidXRlIG9mIHRoZSB0YWJsZVxuICAgICAqIEByZXR1cm4geyhzdHJpbmd8bnVtYmVyfG51bGwpW119ICBUaGUgYXJyYXkgb2Ygd2lkdGhzXG4gICAgICovXG4gICAgcHVibGljIGdldEVxdWFsQ29sdW1ucyh3aWR0aDogc3RyaW5nKTogKHN0cmluZyB8IG51bWJlciB8IG51bGwpW10ge1xuICAgICAgY29uc3QgbiA9IE1hdGgubWF4KDEsIHRoaXMubnVtQ29scyk7XG4gICAgICBsZXQgY3dpZHRoO1xuICAgICAgaWYgKHdpZHRoID09PSAnYXV0bycpIHtcbiAgICAgICAgY29uc3Qge1d9ID0gdGhpcy5nZXRUYWJsZURhdGEoKTtcbiAgICAgICAgY3dpZHRoID0gbWF4KFcpO1xuICAgICAgfSBlbHNlIGlmIChpc1BlcmNlbnQod2lkdGgpKSB7XG4gICAgICAgIGN3aWR0aCA9IHRoaXMucGVyY2VudCgxIC8gbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB3ID0gc3VtKFtdLmNvbmNhdCh0aGlzLmNMaW5lcywgdGhpcy5jU3BhY2UpKSArIDIgKiB0aGlzLmZTcGFjZVswXTtcbiAgICAgICAgY3dpZHRoID0gTWF0aC5tYXgoMCwgdGhpcy5sZW5ndGgyZW0od2lkdGgpIC0gdykgLyBuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEFycmF5KHRoaXMubnVtQ29scykuZmlsbChjd2lkdGgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvciB0YWJsZXMgd2l0aCB3aWR0aD1cImF1dG9cIiwgYXV0byBhbmQgZml0IGNvbHVtbnNcbiAgICAgKiB3aWxsIGVuZCB1cCBiZWluZyBuYXR1cmFsIHdpZHRoLCBzbyBkb24ndCBuZWVkIHRvXG4gICAgICogc2V0IHRob3NlIGV4cGxpY2l0bHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzd2lkdGhzICAgVGhlIHNwbGl0IGFuZCBwYWRkZWQgY29sdW1ud2lkdGhzIGF0dHJpYnV0ZVxuICAgICAqIEByZXR1cm4ge0NvbHVtbldpZHRoc30gIFRoZSBhcnJheSBvZiB3aWR0aHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Q29sdW1uV2lkdGhzQXV0byhzd2lkdGhzOiBzdHJpbmdbXSk6IENvbHVtbldpZHRocyB7XG4gICAgICByZXR1cm4gc3dpZHRocy5tYXAoeCA9PiB7XG4gICAgICAgIGlmICh4ID09PSAnYXV0bycgfHwgeCA9PT0gJ2ZpdCcpIHJldHVybiBudWxsO1xuICAgICAgICBpZiAoaXNQZXJjZW50KHgpKSByZXR1cm4geDtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoMmVtKHgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yIHRhYmxlcyB3aXRoIHBlcmNlbnRhZ2Ugd2lkdGhzLCB0aGUgJ2ZpdCcgY29sdW1ucyAob3IgJ2F1dG8nXG4gICAgICogY29sdW1ucyBpZiB0aGVyZSBhcmUgbm90ICdmaXQnIG9uZXMpIHdpbGwgc3RyZXRjaCBhdXRvbWF0aWNhbGx5LFxuICAgICAqIGJ1dCBmb3IgJ2F1dG8nIGNvbHVtbnMgKHdoZW4gdGhlcmUgYXJlICdmaXQnIG9uZXMpLCBzZXQgdGhlIHNpemVcbiAgICAgKiB0byB0aGUgbmF0dXJhbCBzaXplIG9mIHRoZSBjb2x1bW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBzd2lkdGhzICAgVGhlIHNwbGl0IGFuZCBwYWRkZWQgY29sdW1ud2lkdGhzIGF0dHJpYnV0ZVxuICAgICAqIEByZXR1cm4ge0NvbHVtbldpZHRoc30gICAgICBUaGUgYXJyYXkgb2Ygd2lkdGhzXG4gICAgICovXG4gICAgcHVibGljIGdldENvbHVtbldpZHRoc1BlcmNlbnQoc3dpZHRoczogc3RyaW5nW10pOiBDb2x1bW5XaWR0aHMge1xuICAgICAgY29uc3QgaGFzRml0ID0gc3dpZHRocy5pbmRleE9mKCdmaXQnKSA+PSAwO1xuICAgICAgY29uc3Qge1d9ID0gKGhhc0ZpdCA/IHRoaXMuZ2V0VGFibGVEYXRhKCkgOiB7VzogbnVsbH0pO1xuICAgICAgcmV0dXJuIEFycmF5LmZyb20oc3dpZHRocy5rZXlzKCkpLm1hcChpID0+IHtcbiAgICAgICAgY29uc3QgeCA9IHN3aWR0aHNbaV07XG4gICAgICAgIGlmICh4ID09PSAnZml0JykgcmV0dXJuIG51bGw7XG4gICAgICAgIGlmICh4ID09PSAnYXV0bycpIHJldHVybiAoaGFzRml0ID8gV1tpXSA6IG51bGwpO1xuICAgICAgICBpZiAoaXNQZXJjZW50KHgpKSByZXR1cm4geDtcbiAgICAgICAgcmV0dXJuIHRoaXMubGVuZ3RoMmVtKHgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yIGZpeGVkLXdpZHRoIHRhYmxlcywgY29tcHV0ZSB0aGUgY29sdW1uIHdpZHRocyBvZiBhbGwgY29sdW1ucy5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IHN3aWR0aHMgICBUaGUgc3BsaXQgYW5kIHBhZGRlZCBjb2x1bW53aWR0aHMgYXR0cmlidXRlXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHdpZHRoICAgICAgIFRoZSB3aWR0aCBvZiB0aGUgdGFibGVcbiAgICAgKiBAcmV0dXJuIHtDb2x1bW5XaWR0aHN9ICAgICAgVGhlIGFycmF5IG9mIHdpZHRoc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5XaWR0aHNGaXhlZChzd2lkdGhzOiBzdHJpbmdbXSwgd2lkdGg6IG51bWJlcik6IENvbHVtbldpZHRocyB7XG4gICAgICAvL1xuICAgICAgLy8gR2V0IHRoZSBpbmRpY2VzIG9mIHRoZSBmaXQgYW5kIGF1dG8gY29sdW1ucywgYW5kIHRoZSBudW1iZXIgb2YgZml0IG9yIGF1dG8gZW50cmllcy5cbiAgICAgIC8vIElmIHRoZXJlIGFyZSBmaXQgb3IgYXV0byBjb2x1bW5zLCBnZXQgdGhlIGNvbHVtbiB3aWR0aHMuXG4gICAgICAvL1xuICAgICAgY29uc3QgaW5kaWNlcyA9IEFycmF5LmZyb20oc3dpZHRocy5rZXlzKCkpO1xuICAgICAgY29uc3QgZml0ID0gaW5kaWNlcy5maWx0ZXIoaSA9PiBzd2lkdGhzW2ldID09PSAnZml0Jyk7XG4gICAgICBjb25zdCBhdXRvID0gaW5kaWNlcy5maWx0ZXIoaSA9PiBzd2lkdGhzW2ldID09PSAnYXV0bycpO1xuICAgICAgY29uc3QgbiA9IGZpdC5sZW5ndGggfHwgYXV0by5sZW5ndGg7XG4gICAgICBjb25zdCB7V30gPSAobiA/IHRoaXMuZ2V0VGFibGVEYXRhKCkgOiB7VzogbnVsbH0pO1xuICAgICAgLy9cbiAgICAgIC8vIERldGVybWluZSB0aGUgc3BhY2UgcmVtYWluaW5nIGZyb20gdGhlIGZpeGVkIHdpZHRoIGFmdGVyIHRoZVxuICAgICAgLy8gICBzZXBhcmF0aW9uIGFuZCBsaW5lcyBoYXZlIGJlZW4gcmVtb3ZlZCAoY3dpZHRoKSwgYW5kXG4gICAgICAvLyAgIGFmdGVyIHRoZSB3aWR0aCBvZiB0aGUgY29sdW1ucyBoYXZlIGJlZW4gcmVtb3ZlZCAoZHcpLlxuICAgICAgLy9cbiAgICAgIGNvbnN0IGN3aWR0aCA9IHdpZHRoIC0gc3VtKFtdLmNvbmNhdCh0aGlzLmNMaW5lcywgdGhpcy5jU3BhY2UpKSAtIDIgKiB0aGlzLmZTcGFjZVswXTtcbiAgICAgIGxldCBkdyA9IGN3aWR0aDtcbiAgICAgIGluZGljZXMuZm9yRWFjaChpID0+IHtcbiAgICAgICAgY29uc3QgeCA9IHN3aWR0aHNbaV07XG4gICAgICAgIGR3IC09ICh4ID09PSAnZml0JyB8fCB4ID09PSAnYXV0bycgPyBXW2ldIDogdGhpcy5sZW5ndGgyZW0oeCwgY3dpZHRoKSk7XG4gICAgICB9KTtcbiAgICAgIC8vXG4gICAgICAvLyBHZXQgdGhlIGFtb3VudCBvZiBleHRyYSBzcGFjZSBwZXIgY29sdW1uLCBvciAwIChmdylcbiAgICAgIC8vXG4gICAgICBjb25zdCBmdyA9IChuICYmIGR3ID4gMCA/IGR3IC8gbiA6IDApO1xuICAgICAgLy9cbiAgICAgIC8vIFJldHVybiB0aGUgY29sdW1uIHdpZHRocyAocGx1cyBleHRyYSBzcGFjZSBmb3IgdGhvc2UgdGhhdCBhcmUgc3RyZXRjaGluZ1xuICAgICAgLy9cbiAgICAgIHJldHVybiBpbmRpY2VzLm1hcChpID0+IHtcbiAgICAgICAgY29uc3QgeCA9IHN3aWR0aHNbaV07XG4gICAgICAgIGlmICh4ID09PSAnZml0JykgcmV0dXJuIFdbaV0gKyBmdztcbiAgICAgICAgaWYgKHggPT09ICdhdXRvJykgcmV0dXJuIFdbaV0gKyAoZml0Lmxlbmd0aCA9PT0gMCA/IGZ3IDogMCk7XG4gICAgICAgIHJldHVybiB0aGlzLmxlbmd0aDJlbSh4LCBjd2lkdGgpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGkgICAgICBUaGUgcm93IG51bWJlciAoc3RhcnRpbmcgYXQgMClcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYWxpZ24gIFRoZSBhbGlnbm1lbnQgb24gdGhhdCByb3dcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgIFRoZSBvZmZlc3Qgb2YgdGhlIGFsaWdubWVudCBwb3NpdGlvbiBmcm9tIHRoZSB0b3Agb2YgdGhlIHRhYmxlXG4gICAgICovXG4gICAgcHVibGljIGdldFZlcnRpY2FsUG9zaXRpb24oaTogbnVtYmVyLCBhbGlnbjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgIGNvbnN0IGVxdWFsID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdlcXVhbHJvd3MnKSBhcyBib29sZWFuO1xuICAgICAgY29uc3Qge0gsIER9ID0gdGhpcy5nZXRUYWJsZURhdGEoKTtcbiAgICAgIGNvbnN0IEhEID0gKGVxdWFsID8gdGhpcy5nZXRFcXVhbFJvd0hlaWdodCgpIDogMCk7XG4gICAgICBjb25zdCBzcGFjZSA9IHRoaXMuZ2V0Um93SGFsZlNwYWNpbmcoKTtcbiAgICAgIC8vXG4gICAgICAvLyAgU3RhcnQgd2l0aCBmcmFtZSBzaXplIGFuZCBhZGQgaW4gc3BhY2luZywgaGVpZ2h0IGFuZCBkZXB0aCxcbiAgICAgIC8vICAgIGFuZCBsaW5lIHRoaWNrbmVzcyBmb3IgZWFjaCByb3cuXG4gICAgICAvL1xuICAgICAgbGV0IHkgPSB0aGlzLmZMaW5lO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpOyBqKyspIHtcbiAgICAgICAgeSArPSBzcGFjZVtqXSArIChlcXVhbCA/IEhEIDogSFtqXSArIERbal0pICsgc3BhY2VbaiArIDFdICsgdGhpcy5yTGluZXNbal07XG4gICAgICB9XG4gICAgICAvL1xuICAgICAgLy8gIEZvciBlcXVhbCByb3dzLCBnZXQgdXBkYXRlZCBoZWlnaHQgYW5kIGRlcHRoXG4gICAgICAvL1xuICAgICAgY29uc3QgW2gsIGRdID0gKGVxdWFsID8gWyhIRCArIEhbaV0gLSBEW2ldKSAvIDIsIChIRCAtIEhbaV0gKyBEW2ldKSAvIDJdIDogW0hbaV0sIERbaV1dKTtcbiAgICAgIC8vXG4gICAgICAvLyAgQWRkIHRoZSBvZmZzZXQgaW50byB0aGUgc3BlY2lmaWVkIHJvd1xuICAgICAgLy9cbiAgICAgIGNvbnN0IG9mZnNldDoge1tuYW1lOiBzdHJpbmddOiBudW1iZXJ9ID0ge1xuICAgICAgICB0b3A6IDAsXG4gICAgICAgIGNlbnRlcjogc3BhY2VbaV0gKyAoaCArIGQpIC8gMixcbiAgICAgICAgYm90dG9tOiBzcGFjZVtpXSArIGggKyBkICsgc3BhY2VbaSArIDFdLFxuICAgICAgICBiYXNlbGluZTogc3BhY2VbaV0gKyBoLFxuICAgICAgICBheGlzOiBzcGFjZVtpXSArIGggLSAuMjVcbiAgICAgIH07XG4gICAgICB5ICs9IG9mZnNldFthbGlnbl0gfHwgMDtcbiAgICAgIC8vXG4gICAgICAvLyAgUmV0dXJuIHRoZSBmaW5hbCByZXN1bHRcbiAgICAgIC8vXG4gICAgICByZXR1cm4geTtcbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGZzcGFjZSAgIFRoZSBmcmFtZSBzcGFjaW5nIHRvIHVzZVxuICAgICAqIEBwYXJhbSB7bnVtYmVyW119IHNwYWNlICBUaGUgYXJyYXkgb2Ygc3BhY2luZyB2YWx1ZXMgdG8gY29udmVydCB0byBzdHJpbmdzXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHNjYWxlICAgIEEgc2NhbGluZyBmYWN0b3IgdG8gdXNlIGZvciB0aGUgc2l6ZXNcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gICAgICAgVGhlIGhhbGYtc3BhY2luZyBhcyBzdGluZ3Mgd2l0aCB1bml0cyBvZiBcImVtXCJcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggZnJhbWUgc3BhY2luZyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmRcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RW1IYWxmU3BhY2luZyhmc3BhY2U6IG51bWJlciwgc3BhY2U6IG51bWJlcltdLCBzY2FsZTogbnVtYmVyID0gMSk6IHN0cmluZ1tdIHtcbiAgICAgIC8vXG4gICAgICAvLyAgR2V0IHRoZSBjb2x1bW4gc3BhY2luZyB2YWx1ZXMsIGFuZCBhZGQgdGhlIGZyYW1lIHNwYWNpbmcgdmFsdWVzIGF0IHRoZSBsZWZ0IGFuZCByaWdodFxuICAgICAgLy9cbiAgICAgIGNvbnN0IGZzcGFjZUVtID0gdGhpcy5lbShmc3BhY2UgKiBzY2FsZSk7XG4gICAgICBjb25zdCBzcGFjZUVtID0gdGhpcy5hZGRFbShzcGFjZSwgMiAvIHNjYWxlKTtcbiAgICAgIHNwYWNlRW0udW5zaGlmdChmc3BhY2VFbSk7XG4gICAgICBzcGFjZUVtLnB1c2goZnNwYWNlRW0pO1xuICAgICAgcmV0dXJuIHNwYWNlRW07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7bnVtYmVyW119ICAgVGhlIGhhbGYtc3BhY2luZyBmb3Igcm93cyB3aXRoIGZyYW1lIHNwYWNpbmcgYXQgdGhlIGVuZHNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Um93SGFsZlNwYWNpbmcoKTogbnVtYmVyW10ge1xuICAgICAgY29uc3Qgc3BhY2UgPSB0aGlzLnJTcGFjZS5tYXAoeCA9PiB4IC8gMik7XG4gICAgICBzcGFjZS51bnNoaWZ0KHRoaXMuZlNwYWNlWzFdKTtcbiAgICAgIHNwYWNlLnB1c2godGhpcy5mU3BhY2VbMV0pO1xuICAgICAgcmV0dXJuIHNwYWNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge251bWJlcltdfSAgIFRoZSBoYWxmLXNwYWNpbmcgZm9yIGNvbHVtbnMgd2l0aCBmcmFtZSBzcGFjaW5nIGF0IHRoZSBlbmRzXG4gICAgICovXG4gICAgcHVibGljIGdldENvbHVtbkhhbGZTcGFjaW5nKCk6IG51bWJlcltdIHtcbiAgICAgIGNvbnN0IHNwYWNlID0gdGhpcy5jU3BhY2UubWFwKHggPT4geCAvIDIpO1xuICAgICAgc3BhY2UudW5zaGlmdCh0aGlzLmZTcGFjZVswXSk7XG4gICAgICBzcGFjZS5wdXNoKHRoaXMuZlNwYWNlWzBdKTtcbiAgICAgIHJldHVybiBzcGFjZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJuIHtbc3RyaW5nLG51bWJlcnxudWxsXX0gIFRoZSBhbGlnbm1lbnQgYW5kIHJvdyBudW1iZXIgKGJhc2VkIGF0IDApIG9yIG51bGxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QWxpZ25tZW50Um93KCk6IFtzdHJpbmcsIG51bWJlcl0ge1xuICAgICAgY29uc3QgW2FsaWduLCByb3ddID0gc3BsaXQodGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdhbGlnbicpIGFzIHN0cmluZyk7XG4gICAgICBpZiAocm93ID09IG51bGwpIHJldHVybiBbYWxpZ24sIG51bGxdO1xuICAgICAgbGV0IGkgPSBwYXJzZUludChyb3cpO1xuICAgICAgaWYgKGkgPCAwKSBpICs9IHRoaXMubnVtUm93cyArIDE7XG4gICAgICByZXR1cm4gW2FsaWduLCBpIDwgMSB8fCBpID4gdGhpcy5udW1Sb3dzID8gbnVsbCA6IGkgLSAxXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZSB0byBnZXQgYXMgYW4gYXJyYXlcbiAgICAgKiBAcGFyYW0ge251bWJlcj19IGkgICAgICAgICAgICAgUmV0dXJuIHRoaXMgbWFueSBmZXdlciB0aGFuIG51bUNvbHMgZW50cmllc1xuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgICAgICAgICAgICBUaGUgYXJyYXkgb2YgdmFsdWVzIGluIHRoZSBnaXZlbiBhdHRyaWJ1dGUsIHNwbGl0IGF0IHNwYWNlcyxcbiAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRlZCB0byB0aGUgbnVtYmVyIG9mIHRhYmxlIGNvbHVtbnMgKG1pbnVzIDEpIGJ5IHJlcGVhdGluZyB0aGUgbGFzdCBlbnRyeVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDb2x1bW5BdHRyaWJ1dGVzKG5hbWU6IHN0cmluZywgaTogbnVtYmVyID0gMSk6IHN0cmluZ1tdIHwgbnVsbCB7XG4gICAgICBjb25zdCBuID0gdGhpcy5udW1Db2xzIC0gaTtcbiAgICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmdldEF0dHJpYnV0ZUFycmF5KG5hbWUpO1xuICAgICAgaWYgKGNvbHVtbnMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICAgIHdoaWxlIChjb2x1bW5zLmxlbmd0aCA8IG4pIHtcbiAgICAgICAgY29sdW1ucy5wdXNoKGNvbHVtbnNbY29sdW1ucy5sZW5ndGggLSAxXSk7XG4gICAgICB9XG4gICAgICBpZiAoY29sdW1ucy5sZW5ndGggPiBuKSB7XG4gICAgICAgIGNvbHVtbnMuc3BsaWNlKG4pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbHVtbnM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gZ2V0IGFzIGFuIGFycmF5XG4gICAgICogQHBhcmFtIHtudW1iZXI9fSBpICAgICAgICAgICAgIFJldHVybiB0aGlzIG1hbnkgZmV3ZXIgdGhhbiBudW1Sb3dzIGVudHJpZXNcbiAgICAgKiBAcmV0dXJuIHtzdHJpbmdbXX0gICAgICAgICAgICAgVGhlIGFycmF5IG9mIHZhbHVlcyBpbiB0aGUgZ2l2ZW4gYXR0cmlidXRlLCBzcGxpdCBhdCBzcGFjZXMsXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkZWQgdG8gdGhlIG51bWJlciBvZiB0YWJsZSByb3dzIChtaW51cyAxKSBieSByZXBlYXRpbmcgdGhlIGxhc3QgZW50cnlcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0Um93QXR0cmlidXRlcyhuYW1lOiBzdHJpbmcsIGk6IG51bWJlciA9IDEpOiBzdHJpbmdbXSB8IG51bGwge1xuICAgICAgY29uc3QgbiA9IHRoaXMubnVtUm93cyAtIGk7XG4gICAgICBjb25zdCByb3dzID0gdGhpcy5nZXRBdHRyaWJ1dGVBcnJheShuYW1lKTtcbiAgICAgIGlmIChyb3dzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG4gICAgICB3aGlsZSAocm93cy5sZW5ndGggPCBuKSB7XG4gICAgICAgIHJvd3MucHVzaChyb3dzW3Jvd3MubGVuZ3RoIC0gMV0pO1xuICAgICAgfVxuICAgICAgaWYgKHJvd3MubGVuZ3RoID4gbikge1xuICAgICAgICByb3dzLnNwbGljZShuKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByb3dzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgICAgICAgICBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIGdldCBhcyBhbiBhcnJheVxuICAgICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgICAgICAgICAgICBUaGUgYXJyYXkgb2YgdmFsdWVzIGluIHRoZSBnaXZlbiBhdHRyaWJ1dGUsIHNwbGl0IGF0IHNwYWNlc1xuICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFmdGVyIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcyBhcmUgcmVtb3ZlZCwgYW5kIG11bHRpcGxlXG4gICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VzIGhhdmUgYmVlbiBjb2xsYXBzZWQgdG8gb25lKS5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXR0cmlidXRlQXJyYXkobmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQobmFtZSkgYXMgc3RyaW5nO1xuICAgICAgaWYgKCF2YWx1ZSkgcmV0dXJuIFt0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXREZWZhdWx0KG5hbWUpIGFzIHN0cmluZ107XG4gICAgICByZXR1cm4gc3BsaXQodmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFkZHMgXCJlbVwiIHRvIGEgbGlzdCBvZiBkaW1lbnNpb25zLCBhZnRlciBkaXZpZGluZyBieSBuIChkZWZhdWx0cyB0byAxKS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7c3RyaW5nW119IGxpc3QgICBUaGUgYXJyYXkgb2YgZGltZW5zaW9ucyAoaW4gZW0ncylcbiAgICAgKiBAcGFyYW0ge251bmJlcj19IG4gICAgICAgVGhlIG51bWJlciB0byBkaXZpZGUgZWFjaCBkaW1lbnNpb24gYnkgYWZ0ZXIgY29udmVydGVkXG4gICAgICogQHJldHVybiB7c3RyaW5nW119ICAgICAgIFRoZSBhcnJheSBvZiB2YWx1ZXMgd2l0aCBcImVtXCIgYWRkZWRcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkRW0obGlzdDogbnVtYmVyW10sIG46IG51bWJlciA9IDEpOiBzdHJpbmdbXSB8IG51bGwge1xuICAgICAgaWYgKCFsaXN0KSByZXR1cm4gbnVsbDtcbiAgICAgIHJldHVybiBsaXN0Lm1hcCh4ID0+IHRoaXMuZW0oeCAvIG4pKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiBkaW1lbnNpb25zICh3aXRoIGFyYml0cmFyeSB1bml0cykgdG8gYW4gYXJyYXkgb2YgbnVtYmVyc1xuICAgICAqICAgcmVwcmVzZW50aW5nIHRoZSBkaW1lbnNpb25zIGluIHVuaXRzIG9mIGVtJ3MuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBsaXN0ICAgVGhlIGFycmF5IG9mIGRpbWVuc2lvbnMgdG8gYmUgdHVybmVkIGludG8gZW0nc1xuICAgICAqIEByZXR1cm4ge251bWJlcltdfSAgICAgICBUaGUgYXJyYXkgb2YgdmFsdWVzIGNvbnZlcnRlZCB0byBlbSdzXG4gICAgICovXG4gICAgcHVibGljIGNvbnZlcnRMZW5ndGhzKGxpc3Q6IHN0cmluZ1tdKTogbnVtYmVyW10gfCBudWxsIHtcbiAgICAgIGlmICghbGlzdCkgcmV0dXJuIG51bGw7XG4gICAgICByZXR1cm4gbGlzdC5tYXAoeCA9PiB0aGlzLmxlbmd0aDJlbSh4KSk7XG4gICAgfVxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE10YWJsZSBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1Byb3BlcnR5TGlzdH0gZnJvbSAnLi4vLi4vVHJlZS9Ob2RlLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgQWJzdHJhY3RNbWxOb2RlLCBBdHRyaWJ1dGVMaXN0LCBURVhDTEFTUywgaW5kZW50QXR0cmlidXRlc30gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5pbXBvcnQge3NwbGl0fSBmcm9tICcuLi8uLi8uLi91dGlsL3N0cmluZy5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE10YWJsZSBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbE5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE10YWJsZSBleHRlbmRzIEFic3RyYWN0TW1sTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sTm9kZS5kZWZhdWx0cyxcbiAgICBhbGlnbjogJ2F4aXMnLFxuICAgIHJvd2FsaWduOiAnYmFzZWxpbmUnLFxuICAgIGNvbHVtbmFsaWduOiAnY2VudGVyJyxcbiAgICBncm91cGFsaWduOiAne2xlZnR9JyxcbiAgICBhbGlnbm1lbnRzY29wZTogdHJ1ZSxcbiAgICBjb2x1bW53aWR0aDogJ2F1dG8nLFxuICAgIHdpZHRoOiAnYXV0bycsXG4gICAgcm93c3BhY2luZzogJzFleCcsXG4gICAgY29sdW1uc3BhY2luZzogJy44ZW0nLFxuICAgIHJvd2xpbmVzOiAnbm9uZScsXG4gICAgY29sdW1ubGluZXM6ICdub25lJyxcbiAgICBmcmFtZTogJ25vbmUnLFxuICAgIGZyYW1lc3BhY2luZzogJzAuNGVtIDAuNWV4JyxcbiAgICBlcXVhbHJvd3M6IGZhbHNlLFxuICAgIGVxdWFsY29sdW1uczogZmFsc2UsXG4gICAgZGlzcGxheXN0eWxlOiBmYWxzZSxcbiAgICBzaWRlOiAncmlnaHQnLFxuICAgIG1pbmxhYmVsc3BhY2luZzogJzAuOGVtJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYSBwcm9wZXJ0aWVzIGZvciB0aGlzIG5vZGVcbiAgICovXG4gIHB1YmxpYyBwcm9wZXJ0aWVzID0ge1xuICAgIHVzZUhlaWdodDogdHJ1ZVxuICB9O1xuXG4gIC8qKlxuICAgKiBUZVggY2xhc3MgaXMgT1JEXG4gICAqL1xuICBwcm90ZWN0ZWQgdGV4Y2xhc3MgPSBURVhDTEFTUy5PUkQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbXRhYmxlJztcbiAgfVxuXG4gIC8qKlxuICAgKiBMaW5lYnJlYWtzIGFyZSBhbGxvd2VkIGluIHRhYmxlc1xuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgbGluZWJyZWFrQ29udGFpbmVyKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCwgZGlzcGxheTogYm9vbGVhbiwgbGV2ZWw6IG51bWJlciwgcHJpbWU6IGJvb2xlYW4pIHtcbiAgICAvL1xuICAgIC8vIEZvcmNlIGluaGVyaXRhbmNlIG9mIHNoaWZ0IGFuZCBhbGlnbiB2YWx1ZXMgKHNpbmNlIHRoZXkgYXJlIG5lZWRlZCB0byBvdXRwdXQgdGFibGVzIHdpdGggbGFiZWxzKVxuICAgIC8vICAgYnV0IG1ha2Ugc3VyZSB0aGV5IGFyZSBub3QgZ2l2ZW4gZXhwbGljaXRseSBvbiB0aGUgPG10YWJsZT4gdGFnLlxuICAgIC8vXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIGluZGVudEF0dHJpYnV0ZXMpIHtcbiAgICAgIGlmIChhdHRyaWJ1dGVzW25hbWVdKSB7XG4gICAgICAgIHRoaXMuYXR0cmlidXRlcy5zZXRJbmhlcml0ZWQobmFtZSwgYXR0cmlidXRlc1tuYW1lXVsxXSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5hdHRyaWJ1dGVzLmdldEV4cGxpY2l0KG5hbWUpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgZGVsZXRlICh0aGlzLmF0dHJpYnV0ZXMuZ2V0QWxsQXR0cmlidXRlcygpKVtuYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gICAgc3VwZXIuc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBkaXNwbGF5LCBsZXZlbCwgcHJpbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1ha2Ugc3VyZSBhbGwgY2hpbGRyZW4gYXJlIG10ciBvciBtbGFiZWxlZHRyIG5vZGVzXG4gICAqIEluaGVyaXQgdGhlIHRhYmxlIGF0dHJpYnV0ZXMsIGFuZCBzZXQgdGhlIGRpc3BsYXkgYXR0cmlidXRlIGJhc2VkIG9uIHRoZSB0YWJsZSdzIGRpc3BsYXlzdHlsZSBhdHRyaWJ1dGVcbiAgICogUmVzZXQgdGhlIHByaW1lIHZhbHVlIHRvIGZhbHNlXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHNldENoaWxkSW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVMaXN0LCBkaXNwbGF5OiBib29sZWFuLCBsZXZlbDogbnVtYmVyLCBfcHJpbWU6IGJvb2xlYW4pIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKCFjaGlsZC5pc0tpbmQoJ210cicpKSB7XG4gICAgICAgIHRoaXMucmVwbGFjZUNoaWxkKHRoaXMuZmFjdG9yeS5jcmVhdGUoJ210cicpLCBjaGlsZClcbiAgICAgICAgICAuYXBwZW5kQ2hpbGQoY2hpbGQpO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXZlbCA9IHRoaXMuZ2V0UHJvcGVydHkoJ3NjcmlwdGxldmVsJykgYXMgbnVtYmVyIHx8IGxldmVsO1xuICAgIGRpc3BsYXkgPSAhISh0aGlzLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ2Rpc3BsYXlzdHlsZScpIHx8IHRoaXMuYXR0cmlidXRlcy5nZXREZWZhdWx0KCdkaXNwbGF5c3R5bGUnKSk7XG4gICAgYXR0cmlidXRlcyA9IHRoaXMuYWRkSW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCB7XG4gICAgICBjb2x1bW5hbGlnbjogdGhpcy5hdHRyaWJ1dGVzLmdldCgnY29sdW1uYWxpZ24nKSxcbiAgICAgIHJvd2FsaWduOiAnY2VudGVyJ1xuICAgIH0pO1xuICAgIGNvbnN0IGNyYW1wZWQgPSB0aGlzLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ2RhdGEtY3JhbXBlZCcpIGFzIGJvb2xlYW47XG4gICAgY29uc3QgcmFsaWduID0gc3BsaXQodGhpcy5hdHRyaWJ1dGVzLmdldCgncm93YWxpZ24nKSBhcyBzdHJpbmcpO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBhdHRyaWJ1dGVzLnJvd2FsaWduWzFdID0gcmFsaWduLnNoaWZ0KCkgfHwgYXR0cmlidXRlcy5yb3dhbGlnblsxXTtcbiAgICAgIGNoaWxkLnNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgZGlzcGxheSwgbGV2ZWwsICEhY3JhbXBlZCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoYXQgY2hpbGRyZW4gYXJlIG10ciBvciBtbGFiZWxlZHRyXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHZlcmlmeUNoaWxkcmVuKG9wdGlvbnM6IFByb3BlcnR5TGlzdCkge1xuICAgIGxldCBtdHI6IE1tbE5vZGUgPSBudWxsOyAgICAgIC8vIGFsbCBjb25zZWN1dGl2ZSBub24tbXRyIGVsZW1lbnRzIGFyZSBjb2xsZWN0ZWQgaW50byBvbmUgbXRyXG4gICAgY29uc3QgZmFjdG9yeSA9IHRoaXMuZmFjdG9yeTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLmNoaWxkTm9kZXNbaV07XG4gICAgICBpZiAoY2hpbGQuaXNLaW5kKCdtdHInKSkge1xuICAgICAgICBtdHIgPSBudWxsOyAgICAgICAgICAgICAgIC8vIHN0YXJ0IGEgbmV3IHJvdyBpZiB0aGVyZSBhcmUgbm9uLW10ciBjaGlsZHJlblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgaXNNdGQgPSBjaGlsZC5pc0tpbmQoJ210ZCcpO1xuICAgICAgICAvL1xuICAgICAgICAvLyAgSWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBtdHIgZm9yIHByZXZpb3VzIGNoaWxkcmVuLCBqdXN0IHJlbW92ZSB0aGUgY2hpbGRcbiAgICAgICAgLy8gICAgb3RoZXJ3aXNlIHJlcGxhY2UgdGhlIGNoaWxkIHdpdGggYSBuZXcgbXRyXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChtdHIpIHtcbiAgICAgICAgICB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkKTtcbiAgICAgICAgICBpLS07ICAgLy8gdGhlcmUgaXMgb25lIGZld2VyIGNoaWxkIG5vd1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG10ciA9IHRoaXMucmVwbGFjZUNoaWxkKGZhY3RvcnkuY3JlYXRlKCdtdHInKSwgY2hpbGQpIGFzIE1tbE5vZGU7XG4gICAgICAgIH1cbiAgICAgICAgbXRyLmFwcGVuZENoaWxkKGlzTXRkID8gY2hpbGQgOiBmYWN0b3J5LmNyZWF0ZSgnbXRkJywge30sIFtjaGlsZF0pKTsgIC8vIE1vdmUgdGhlIGNoaWxkIGludG8gdGhlIG10clxuICAgICAgICBpZiAoIW9wdGlvbnNbJ2ZpeE10YWJsZXMnXSkge1xuICAgICAgICAgIGNoaWxkLnBhcmVudC5yZW1vdmVDaGlsZChjaGlsZCk7ICAvLyByZW1vdmUgdGhlIGNoaWxkIGZyb20gaXRzIG10ZCBvciBtdHJcbiAgICAgICAgICBjaGlsZC5wYXJlbnQgPSB0aGlzOyAgICAgICAgICAgICAgLy8gLi4uIGFuZCBtYWtlIGl0IHRoaW5rIGl0IGlzIGEgY2hpbGQgb2YgdGhlIHRhYmxlIGFnYWluXG4gICAgICAgICAgaXNNdGQgJiYgbXRyLmFwcGVuZENoaWxkKGZhY3RvcnkuY3JlYXRlKCdtdGQnKSk7ICAvLyBjaGlsZCB3aWxsIGJlIHJlcGxhY2VkLCBzbyBtYWtlIHN1cmUgdGhlcmUgaXMgYW4gbXRkXG4gICAgICAgICAgY29uc3QgbWVycm9yID0gY2hpbGQubUVycm9yKCdDaGlsZHJlbiBvZiAnICsgdGhpcy5raW5kICsgJyBtdXN0IGJlIG10ciBvciBtbGFiZWxlZHRyJywgb3B0aW9ucywgaXNNdGQpO1xuICAgICAgICAgIG10ci5jaGlsZE5vZGVzW210ci5jaGlsZE5vZGVzLmxlbmd0aCAtIDFdLmFwcGVuZENoaWxkKG1lcnJvcik7ICAgLy8gYXBwZW5kIHRoZSBlcnJvciB0byB0aGUgbXRkIGluIHRoZSBtdHJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBzdXBlci52ZXJpZnlDaGlsZHJlbihvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKSB7XG4gICAgdGhpcy5nZXRQcmV2Q2xhc3MocHJldik7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGNoaWxkLnNldFRlWGNsYXNzKG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR210YWJsZSB3cmFwcGVyIGZvciB0aGUgTW1sTXRhYmxlIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge1NWR1dyYXBwZXJGYWN0b3J5fSBmcm9tICcuLi9XcmFwcGVyRmFjdG9yeS5qcyc7XG5pbXBvcnQge0NvbW1vbk10YWJsZU1peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbXRhYmxlLmpzJztcbmltcG9ydCB7U1ZHbXRyfSBmcm9tICcuL210ci5qcyc7XG5pbXBvcnQge1NWR210ZH0gZnJvbSAnLi9tdGQuanMnO1xuaW1wb3J0IHtNbWxNdGFibGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tdGFibGUuanMnO1xuaW1wb3J0IHtNbWxOb2RlfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQge09wdGlvbkxpc3R9IGZyb20gJy4uLy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5pbXBvcnQge1N0eWxlTGlzdH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9TdHlsZUxpc3QuanMnO1xuXG5jb25zdCBDTEFTU1BSRUZJWCA9ICdtangtJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbXRhYmxlIHdyYXBwZXIgZm9yIHRoZSBNbWxNdGFibGUgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU1ZHbXRhYmxlPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk10YWJsZU1peGluPFNWR210ZDxhbnksIGFueSwgYW55PiwgU1ZHbXRyPGFueSwgYW55LCBhbnk+LCBTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgbXRhYmxlIHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE10YWJsZS5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0eWxlczogU3R5bGVMaXN0ID0ge1xuICAgICdnW2RhdGEtbW1sLW5vZGU9XCJtdGFibGVcIl0gPiBsaW5lW2RhdGEtbGluZV0sIHN2Z1tkYXRhLXRhYmxlXSA+IGcgPiBsaW5lW2RhdGEtbGluZV0nOiB7XG4gICAgICAnc3Ryb2tlLXdpZHRoJzogJzcwcHgnLFxuICAgICAgZmlsbDogJ25vbmUnXG4gICAgfSxcbiAgICAnZ1tkYXRhLW1tbC1ub2RlPVwibXRhYmxlXCJdID4gcmVjdFtkYXRhLWZyYW1lXSwgc3ZnW2RhdGEtdGFibGVdID4gZyA+IHJlY3RbZGF0YS1mcmFtZV0nOiB7XG4gICAgICAnc3Ryb2tlLXdpZHRoJzogJzcwcHgnLFxuICAgICAgZmlsbDogJ25vbmUnXG4gICAgfSxcbiAgICAnZ1tkYXRhLW1tbC1ub2RlPVwibXRhYmxlXCJdID4gLm1qeC1kYXNoZWQsIHN2Z1tkYXRhLXRhYmxlXSA+IGcgPiAubWp4LWRhc2hlZCc6IHtcbiAgICAgICdzdHJva2UtZGFzaGFycmF5JzogJzE0MCdcbiAgICB9LFxuICAgICdnW2RhdGEtbW1sLW5vZGU9XCJtdGFibGVcIl0gPiAubWp4LWRvdHRlZCwgc3ZnW2RhdGEtdGFibGVdID4gZyA+IC5tangtZG90dGVkJzoge1xuICAgICAgJ3N0cm9rZS1saW5lY2FwJzogJ3JvdW5kJyxcbiAgICAgICdzdHJva2UtZGFzaGFycmF5JzogJzAsMTQwJ1xuICAgIH0sXG4gICAgJ2dbZGF0YS1tbWwtbm9kZT1cIm10YWJsZVwiXSA+IGcgPiBzdmcnOiB7XG4gICAgICBvdmVyZmxvdzogJ3Zpc2libGUnXG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgY29sdW1uIGZvciBsYWJlbHNcbiAgICovXG4gIHB1YmxpYyBsYWJlbHM6IE47XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBTVkdXcmFwcGVyRmFjdG9yeTxOLCBULCBEPiwgbm9kZTogTW1sTm9kZSwgcGFyZW50OiBTVkdXcmFwcGVyPE4sIFQsIEQ+ID0gbnVsbCkge1xuICAgIHN1cGVyKGZhY3RvcnksIG5vZGUsIHBhcmVudCk7XG4gICAgY29uc3QgZGVmOiBPcHRpb25MaXN0ID0geydkYXRhLWxhYmVscyc6IHRydWV9O1xuICAgIGlmICh0aGlzLmlzVG9wKSB7XG4gICAgICBkZWYudHJhbnNmb3JtID0gJ21hdHJpeCgxIDAgMCAtMSAwIDApJztcbiAgICB9XG4gICAgdGhpcy5sYWJlbHMgPSB0aGlzLnN2ZygnZycsIGRlZik7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5zdGFuZGFyZFNWR25vZGUocGFyZW50KTtcbiAgICB0aGlzLnBsYWNlUm93cyhzdmcpO1xuICAgIHRoaXMuaGFuZGxlQ29sdW1uTGluZXMoc3ZnKTtcbiAgICB0aGlzLmhhbmRsZVJvd0xpbmVzKHN2Zyk7XG4gICAgdGhpcy5oYW5kbGVGcmFtZShzdmcpO1xuICAgIGNvbnN0IGR4ID0gdGhpcy5oYW5kbGVQV2lkdGgoc3ZnKTtcbiAgICB0aGlzLmhhbmRsZUxhYmVscyhzdmcsIHBhcmVudCwgZHgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gc3ZnICBUaGUgY29udGFpbmVyIGluIHdoaWNoIHRvIHBsYWNlIHRoZSByb3dzXG4gICAqL1xuICBwcm90ZWN0ZWQgcGxhY2VSb3dzKHN2ZzogTikge1xuICAgIGNvbnN0IGVxdWFsID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdlcXVhbHJvd3MnKSBhcyBib29sZWFuO1xuICAgIGNvbnN0IHtILCBEfSA9IHRoaXMuZ2V0VGFibGVEYXRhKCk7XG4gICAgY29uc3QgSEQgPSB0aGlzLmdldEVxdWFsUm93SGVpZ2h0KCk7XG4gICAgY29uc3QgclNwYWNlID0gdGhpcy5nZXRSb3dIYWxmU3BhY2luZygpO1xuICAgIGNvbnN0IHJMaW5lcyA9IFt0aGlzLmZMaW5lLCAuLi50aGlzLnJMaW5lcywgdGhpcy5mTGluZV07XG4gICAgbGV0IHkgPSB0aGlzLmdldEJCb3goKS5oIC0gckxpbmVzWzBdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5udW1Sb3dzOyBpKyspIHtcbiAgICAgIGNvbnN0IHJvdyA9IHRoaXMuY2hpbGROb2Rlc1tpXTtcbiAgICAgIFtyb3cuSCwgcm93LkRdID0gdGhpcy5nZXRSb3dIRChlcXVhbCwgSEQsIEhbaV0sIERbaV0pO1xuICAgICAgW3Jvdy50U3BhY2UsIHJvdy5iU3BhY2VdID0gW3JTcGFjZVtpXSwgclNwYWNlW2kgKyAxXV07XG4gICAgICBbcm93LnRMaW5lLCByb3cuYkxpbmVdID0gW3JMaW5lc1tpXSwgckxpbmVzW2kgKyAxXV07XG4gICAgICByb3cudG9TVkcoc3ZnKTtcbiAgICAgIHJvdy5wbGFjZSgwLCB5IC0gclNwYWNlW2ldIC0gcm93LkgpO1xuICAgICAgeSAtPSByU3BhY2VbaV0gKyByb3cuSCArIHJvdy5EICsgclNwYWNlW2kgKyAxXSArIHJMaW5lc1tpICsgMV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZXF1YWwgICBUcnVlIGZvciBlcXVhbC1oZWlnaHQgcm93c1xuICAgKiBAcGFyYW0ge251bWJlcn0gSEQgICAgICAgVGhlIGhlaWdodCBvZiBlcXVhbC1oZWlnaHQgcm93c1xuICAgKiBAcGFyYW0ge251bWJlcn0gSCAgICAgICAgVGhlIG5hdHVyYWwgaGVpZ2h0IG9mIHRoZSByb3dcbiAgICogQHBhcmFtIHtudW1iZXJ9IEQgICAgICAgIFRoZSBuYXR1cmFsIGRlcHRoIG9mIHRoZSByb3dcbiAgICogQHJldHVybnMge251bWJlcltdfSAgICAgIFRoZSAocG9zc2libHkgc2NhbGVkKSBoZWlnaHQgYW5kIGRlcHRoIHRvIHVzZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFJvd0hEKGVxdWFsOiBib29sZWFuLCBIRDogbnVtYmVyLCBIOiBudW1iZXIsIEQ6IG51bWJlcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIHJldHVybiAoZXF1YWwgPyBbKEhEICsgSCAtIEQpIC8gMiwgKEhEIC0gSCArIEQpIC8gMl0gOiBbSCwgRF0pO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlQ29sb3IoKSB7XG4gICAgc3VwZXIuaGFuZGxlQ29sb3IoKTtcbiAgICBjb25zdCByZWN0ID0gdGhpcy5maXJzdENoaWxkKCk7XG4gICAgaWYgKHJlY3QpIHtcbiAgICAgIHRoaXMuYWRhcHRvci5zZXRBdHRyaWJ1dGUocmVjdCwgJ3dpZHRoJywgdGhpcy5maXhlZCh0aGlzLmdldFdpZHRoKCkpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIHZlcnRpY2FsIGxpbmVzIGJldHdlZW4gY29sdW1uc1xuICAgKlxuICAgKiBAcGFyYW0ge059IHN2ZyAgIFRoZSBjb250YWluZXIgZm9yIHRoZSB0YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZUNvbHVtbkxpbmVzKHN2ZzogTikge1xuICAgIGlmICh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2NvbHVtbmxpbmVzJykgPT09ICdub25lJykgcmV0dXJuO1xuICAgIGNvbnN0IGxpbmVzID0gdGhpcy5nZXRDb2x1bW5BdHRyaWJ1dGVzKCdjb2x1bW5saW5lcycpO1xuICAgIGlmICghbGluZXMpIHJldHVybjtcbiAgICBjb25zdCBjU3BhY2UgPSB0aGlzLmdldENvbHVtbkhhbGZTcGFjaW5nKCk7XG4gICAgY29uc3QgY0xpbmVzID0gdGhpcy5jTGluZXM7XG4gICAgY29uc3QgY1dpZHRoID0gdGhpcy5nZXRDb21wdXRlZFdpZHRocygpO1xuICAgIGxldCB4ID0gdGhpcy5mTGluZTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB4ICs9IGNTcGFjZVtpXSArIGNXaWR0aFtpXSArIGNTcGFjZVtpICsgMV07XG4gICAgICBpZiAobGluZXNbaV0gIT09ICdub25lJykge1xuICAgICAgICB0aGlzLmFkYXB0b3IuYXBwZW5kKHN2ZywgdGhpcy5tYWtlVkxpbmUoeCwgbGluZXNbaV0sIGNMaW5lc1tpXSkpO1xuICAgICAgfVxuICAgICAgeCArPSBjTGluZXNbaV07XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBob3Jpem9udGFsIGxpbmVzIGJldHdlZW4gcm93c1xuICAgKlxuICAgKiBAcGFyYW0ge059IHN2ZyAgIFRoZSBjb250YWluZXIgZm9yIHRoZSB0YWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVJvd0xpbmVzKHN2ZzogTikge1xuICAgIGlmICh0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ3Jvd2xpbmVzJykgPT09ICdub25lJykgcmV0dXJuO1xuICAgIGNvbnN0IGxpbmVzID0gdGhpcy5nZXRSb3dBdHRyaWJ1dGVzKCdyb3dsaW5lcycpO1xuICAgIGlmICghbGluZXMpIHJldHVybjtcbiAgICBjb25zdCBlcXVhbCA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnZXF1YWxyb3dzJykgYXMgYm9vbGVhbjtcbiAgICBjb25zdCB7SCwgRH0gPSB0aGlzLmdldFRhYmxlRGF0YSgpO1xuICAgIGNvbnN0IEhEID0gdGhpcy5nZXRFcXVhbFJvd0hlaWdodCgpO1xuICAgIGNvbnN0IHJTcGFjZSA9IHRoaXMuZ2V0Um93SGFsZlNwYWNpbmcoKTtcbiAgICBjb25zdCByTGluZXMgPSB0aGlzLnJMaW5lcztcbiAgICBsZXQgeSA9IHRoaXMuZ2V0QkJveCgpLmggLSB0aGlzLmZMaW5lO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IFtySCwgckRdID0gdGhpcy5nZXRSb3dIRChlcXVhbCwgSEQsIEhbaV0sIERbaV0pO1xuICAgICAgeSAtPSByU3BhY2VbaV0gKyBySCArIHJEICsgclNwYWNlW2kgKyAxXTtcbiAgICAgIGlmIChsaW5lc1tpXSAhPT0gJ25vbmUnKSB7XG4gICAgICAgIHRoaXMuYWRhcHRvci5hcHBlbmQoc3ZnLCB0aGlzLm1ha2VITGluZSh5LCBsaW5lc1tpXSwgckxpbmVzW2ldKSk7XG4gICAgICB9XG4gICAgICB5IC09IHJMaW5lc1tpXTtcbiAgICB9XG5cbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBmcmFtZSB0byB0aGUgbXRhYmxlLCBpZiBuZWVkZWRcbiAgICpcbiAgICogQHBhcmFtIHtOfSBzdmcgICBUaGUgY29udGFpbmVyIGZvciB0aGUgdGFibGVcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVGcmFtZShzdmc6IE4pIHtcbiAgICBpZiAodGhpcy5mcmFtZSAmJiB0aGlzLmZMaW5lKSB7XG4gICAgICBjb25zdCB7aCwgZCwgd30gPSB0aGlzLmdldEJCb3goKTtcbiAgICAgIGNvbnN0IHN0eWxlID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdmcmFtZScpIGFzIHN0cmluZztcbiAgICAgIHRoaXMuYWRhcHRvci5hcHBlbmQoc3ZnLCB0aGlzLm1ha2VGcmFtZSh3LCBoLCBkLCBzdHlsZSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyB7bnVtYmVyfSAgIFRoZSB4LWFkanVzdGVtZW50IG5lZWRlZCB0byBoYW5kbGUgdGhlIHRydWUgc2l6ZSBvZiBwZXJjZW50YWdlLXdpZHRoIHRhYmxlc1xuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVBXaWR0aChzdmc6IE4pOiBudW1iZXIge1xuICAgIGlmICghdGhpcy5wV2lkdGgpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgICBjb25zdCB7dywgTCwgUn0gPSB0aGlzLmdldEJCb3goKTtcbiAgICBjb25zdCBXID0gTCArIHRoaXMucFdpZHRoICsgUjtcbiAgICBjb25zdCBhbGlnbiA9IHRoaXMuZ2V0QWxpZ25TaGlmdCgpWzBdO1xuICAgIGNvbnN0IENXID0gTWF0aC5tYXgodGhpcy5pc1RvcCA/IFcgOiAwLCB0aGlzLmNvbnRhaW5lci5nZXRXcmFwV2lkdGgodGhpcy5jb250YWluZXJJKSkgLSBMIC0gUjtcbiAgICBjb25zdCBkdyA9IHcgLSAodGhpcy5wV2lkdGggPiBDVyA/IENXIDogdGhpcy5wV2lkdGgpO1xuICAgIGNvbnN0IGR4ID0gKGFsaWduID09PSAnbGVmdCcgPyAwIDogYWxpZ24gPT09ICdyaWdodCcgPyBkdyA6IGR3IC8gMik7XG4gICAgaWYgKGR4KSB7XG4gICAgICBjb25zdCB0YWJsZSA9IHRoaXMuc3ZnKCdnJywge30sIHRoaXMuYWRhcHRvci5jaGlsZE5vZGVzKHN2ZykpO1xuICAgICAgdGhpcy5wbGFjZShkeCwgMCwgdGFibGUpO1xuICAgICAgdGhpcy5hZGFwdG9yLmFwcGVuZChzdmcsIHRhYmxlKTtcbiAgICB9XG4gICAgcmV0dXJuIGR4O1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlICAgVGhlIGxpbmUgc3R5bGUgd2hvc2UgY2xhc3MgaXMgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybnMge3N0cmluZ30gICAgICAgVGhlIGNsYXNzIG5hbWUgZm9yIHRoZSBzdHlsZVxuICAgKi9cbiAgcHJvdGVjdGVkIGxpbmVDbGFzcyhzdHlsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gQ0xBU1NQUkVGSVggKyBzdHlsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdyAgICAgICBUaGUgd2lkdGggb2YgdGhlIGZyYW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBoICAgICAgIFRoZSBoZWlnaHQgb2YgdGhlIGZyYW1lXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkICAgICAgIFRoZSBkZXB0aCBvZiB0aGUgZnJhbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlICAgVGhlIGJvcmRlciBzdHlsZSBmb3IgdGhlIGZyYW1lXG4gICAqIEByZXR1cm5zIHtOfSAgICAgICAgICAgIFRoZSBTVkcgZWxlbWVudCBmb3IgdGhlIGZyYW1lXG4gICAqL1xuICBwcm90ZWN0ZWQgbWFrZUZyYW1lKHc6IG51bWJlciwgaDogbnVtYmVyLCBkOiBudW1iZXIsIHN0eWxlOiBzdHJpbmcpOiBOIHtcbiAgICBjb25zdCB0ID0gdGhpcy5mTGluZTtcbiAgICByZXR1cm4gdGhpcy5zdmcoJ3JlY3QnLCB0aGlzLnNldExpbmVUaGlja25lc3ModCwgc3R5bGUsIHtcbiAgICAgICdkYXRhLWZyYW1lJzogdHJ1ZSwgJ2NsYXNzJzogdGhpcy5saW5lQ2xhc3Moc3R5bGUpLFxuICAgICAgd2lkdGg6IHRoaXMuZml4ZWQodyAtIHQpLCBoZWlnaHQ6IHRoaXMuZml4ZWQoaCArIGQgLSB0KSxcbiAgICAgIHg6IHRoaXMuZml4ZWQodCAvIDIpLCB5OiB0aGlzLmZpeGVkKHQgLyAyIC0gZClcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHggICAgICAgVGhlIHggbG9jYXRpb24gb2YgdGhlIGxpbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlICAgVGhlIGJvcmRlciBzdHlsZSBmb3IgdGhlIGxpbmVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHQgICAgICAgVGhlIGxpbmUgdGhpY2tuZXNzXG4gICAqIEByZXR1cm5zIHtOfSAgICAgICAgICAgIFRoZSBTVkcgZWxlbWVudCBmb3IgdGhlIGxpbmVcbiAgICovXG4gIHByb3RlY3RlZCBtYWtlVkxpbmUoeDogbnVtYmVyLCBzdHlsZTogc3RyaW5nLCB0OiBudW1iZXIpOiBOIHtcbiAgICBjb25zdCB7aCwgZH0gPSB0aGlzLmdldEJCb3goKTtcbiAgICBjb25zdCBkdCA9IChzdHlsZSA9PT0gJ2RvdHRlZCcgPyB0IC8gMiA6IDApO1xuICAgIGNvbnN0IFggPSB0aGlzLmZpeGVkKHggKyB0IC8gMik7XG4gICAgcmV0dXJuIHRoaXMuc3ZnKCdsaW5lJywgdGhpcy5zZXRMaW5lVGhpY2tuZXNzKHQsIHN0eWxlLCB7XG4gICAgICAnZGF0YS1saW5lJzogJ3YnLCAnY2xhc3MnOiB0aGlzLmxpbmVDbGFzcyhzdHlsZSksXG4gICAgICB4MTogWCwgeTE6IHRoaXMuZml4ZWQoZHQgLSBkKSwgeDI6IFgsIHkyOiB0aGlzLmZpeGVkKGggLSBkdClcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHkgICAgICAgVGhlIHkgbG9jYXRpb24gb2YgdGhlIGxpbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN0eWxlICAgVGhlIGJvcmRlciBzdHlsZSBmb3IgdGhlIGxpbmVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHQgICAgICAgVGhlIGxpbmUgdGhpY2tuZXNzXG4gICAqIEByZXR1cm5zIHtOfSAgICAgICAgICAgIFRoZSBTVkcgZWxlbWVudCBmb3IgdGhlIGxpbmVcbiAgICovXG4gIHByb3RlY3RlZCBtYWtlSExpbmUoeTogbnVtYmVyLCBzdHlsZTogc3RyaW5nLCB0OiBudW1iZXIpOiBOIHtcbiAgICBjb25zdCB3ID0gdGhpcy5nZXRCQm94KCkudztcbiAgICBjb25zdCBkdCA9IChzdHlsZSA9PT0gJ2RvdHRlZCcgPyB0IC8gMiA6IDApO1xuICAgIGNvbnN0IFkgPSB0aGlzLmZpeGVkKHkgLSB0IC8gMik7XG4gICAgcmV0dXJuIHRoaXMuc3ZnKCdsaW5lJywgdGhpcy5zZXRMaW5lVGhpY2tuZXNzKHQsIHN0eWxlLCB7XG4gICAgICAnZGF0YS1saW5lJzogJ2gnLCAnY2xhc3MnOiB0aGlzLmxpbmVDbGFzcyhzdHlsZSksXG4gICAgICB4MTogdGhpcy5maXhlZChkdCksIHkxOiBZLCB4MjogdGhpcy5maXhlZCh3IC0gZHQpLCB5MjogWVxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdCAgICAgICAgICAgICAgICBUaGUgdGhpY2tuZXNzIG9mIHRoZSBsaW5lXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzdHlsZSAgICAgICAgICAgIFRoZSBib3JkZXIgc3R5bGUgZm9yIHRoZSBsaW5lXG4gICAqIEBwYXJhbSB7T3B0aW9uTGlzdH0gcHJvcGVydGllcyAgIFRoZSBsaXN0IG9mIHByb3BlcnRpZXMgdG8gbW9kaWZ5XG4gICAqIEBwYXJhbSB7T3B0aW9uTGlzdH0gICAgICAgICAgICAgIFRoZSBtb2RpZmllZCBwcm9wZXJ0aWVzXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0TGluZVRoaWNrbmVzcyh0OiBudW1iZXIsIHN0eWxlOiBzdHJpbmcsIHByb3BlcnRpZXM6IE9wdGlvbkxpc3QpIHtcbiAgICBpZiAodCAhPT0gLjA3KSB7XG4gICAgICBwcm9wZXJ0aWVzWydzdHJva2UtdGhpY2tuZXNzJ10gPSB0aGlzLmZpeGVkKHQpO1xuICAgICAgaWYgKHN0eWxlICE9PSAnc29saWQnKSB7XG4gICAgICAgIHByb3BlcnRpZXNbJ3N0cm9rZS1kYXNoYXJyYXknXSA9IChzdHlsZSA9PT0gJ2RvdHRlZCcgPyAnMCwnIDogJycpICsgdGhpcy5maXhlZCgyICogdCk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogSGFuZGxlIGFkZGl0aW9uIG9mIGxhYmVscyB0byB0aGUgdGFibGVcbiAgICpcbiAgICogQHBhcmFtIHtOfSBzdmcgICAgICAgVGhlIGNvbnRhaW5lciBmb3IgdGhlIHRhYmxlIGNvbnRlbnRzXG4gICAqIEBwYXJhbSB7Tn0gcGFyZW50ICAgIFRoZSBwYXJlbnQgY29udGFpbmluZyB0aGUgdGhlIHRhYmxlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBkeCAgIFRoZSBhZGp1c3RlbWVudCBmb3IgcGVyY2VudGFnZSB3aWR0aCB0YWJsZXNcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVMYWJlbHMoc3ZnOiBOLCBfcGFyZW50OiBOLCBkeDogbnVtYmVyKSB7XG4gICAgaWYgKCF0aGlzLmhhc0xhYmVscykgcmV0dXJuO1xuICAgIGNvbnN0IGxhYmVscyA9IHRoaXMubGFiZWxzO1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcztcbiAgICAvL1xuICAgIC8vICBTZXQgdGhlIHNpZGUgZm9yIHRoZSBsYWJlbHNcbiAgICAvL1xuICAgIGNvbnN0IHNpZGUgPSBhdHRyaWJ1dGVzLmdldCgnc2lkZScpIGFzIHN0cmluZztcbiAgICAvL1xuICAgIC8vIEFkZCB0aGUgbGFiZWxzIHRvIHRoZSB0YWJsZVxuICAgIC8vXG4gICAgdGhpcy5zcGFjZUxhYmVscygpO1xuICAgIC8vXG4gICAgLy8gSGFuZGxlIHRvcC1sZXZlbCB0YWJsZSB0byBtYWtlIGl0IGFkYXB0IHRvIGNvbnRhaW5lciBzaXplXG4gICAgLy8gICBidXQgcGxhY2Ugc3VidGFibGVzIGV4cGxpY2l0bHlcbiAgICAvL1xuICAgIHRoaXMuaXNUb3AgPyB0aGlzLnRvcFRhYmxlKHN2ZywgbGFiZWxzLCBzaWRlKSA6IHRoaXMuc3ViVGFibGUoc3ZnLCBsYWJlbHMsIHNpZGUsIGR4KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgc3BhY2luZyBlbGVtZW50cyBiZXR3ZWVuIHRoZSBsYWJlbCByb3dzIHRvIGFsaWduIHRoZW0gd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGFibGVcbiAgICovXG4gIHByb3RlY3RlZCBzcGFjZUxhYmVscygpIHtcbiAgICBjb25zdCBhZGFwdG9yID0gdGhpcy5hZGFwdG9yO1xuICAgIGNvbnN0IGggPSB0aGlzLmdldEJCb3goKS5oO1xuICAgIGNvbnN0IEwgPSB0aGlzLmdldFRhYmxlRGF0YSgpLkw7XG4gICAgY29uc3Qgc3BhY2UgPSB0aGlzLmdldFJvd0hhbGZTcGFjaW5nKCk7XG4gICAgLy9cbiAgICAvLyAgU3RhcnQgd2l0aCBmcmFtZSBzaXplIGFuZCBhZGQgaW4gc3BhY2luZywgaGVpZ2h0IGFuZCBkZXB0aCxcbiAgICAvLyAgICBhbmQgbGluZSB0aGlja25lc3MgZm9yIGVhY2ggbm9uLWxhYmVsZWQgcm93LlxuICAgIC8vXG4gICAgbGV0IHkgPSBoIC0gdGhpcy5mTGluZTtcbiAgICBsZXQgY3VycmVudCA9IGFkYXB0b3IuZmlyc3RDaGlsZCh0aGlzLmxhYmVscykgYXMgTjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubnVtUm93czsgaSsrKSB7XG4gICAgICBjb25zdCByb3cgPSB0aGlzLmNoaWxkTm9kZXNbaV0gYXMgU1ZHbXRyPE4sIFQsIEQ+O1xuICAgICAgaWYgKHJvdy5ub2RlLmlzS2luZCgnbWxhYmVsZWR0cicpKSB7XG4gICAgICAgIGNvbnN0IGNlbGwgPSByb3cuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgeSAtPSBzcGFjZVtpXSArIHJvdy5IO1xuICAgICAgICByb3cucGxhY2VDZWxsKGNlbGwsIHt4OiAwLCB5OiB5LCB3OiBMLCBsU3BhY2U6IDAsIHJTcGFjZTogMCwgbExpbmU6IDAsIHJMaW5lOiAwfSk7XG4gICAgICAgIHkgLT0gcm93LkQgKyBzcGFjZVtpICsgMV0gKyB0aGlzLnJMaW5lc1tpXTtcbiAgICAgICAgY3VycmVudCA9IGFkYXB0b3IubmV4dChjdXJyZW50KSBhcyBOO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgeSAtPSBzcGFjZVtpXSArIHJvdy5IICsgcm93LkQgKyBzcGFjZVtpICsgMV0gKyB0aGlzLnJMaW5lc1tpXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0YWJsZXMgd2l0aCBsYWJlbHMgc28gdGhhdCB0aGUgbGFiZWwgd2lsbCBtb3ZlIHdpdGggdGhlIHNpemUgb2YgdGhlIGNvbnRhaW5lclxuICAgKlxuICAgKiBAcGFyYW0ge059IHN2ZyAgICAgICAgIFRoZSBTVkcgY29udGFpbmVyIGZvciB0aGUgdGFibGVcbiAgICogQHBhcmFtIHtOfSBsYWJlbHMgICAgICBUaGUgZ3JvdXAgb2YgbGFiZWxzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlICAgVGhlIHNpZGUgYWxpZ25tZW50IChsZWZ0IG9yIHJpZ2h0KVxuICAgKi9cbiAgcHJvdGVjdGVkIHRvcFRhYmxlKHN2ZzogTiwgbGFiZWxzOiBOLCBzaWRlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhZGFwdG9yID0gdGhpcy5hZGFwdG9yO1xuICAgIGNvbnN0IHtoLCBkLCB3LCBMLCBSfSA9IHRoaXMuZ2V0QkJveCgpO1xuICAgIGNvbnN0IFcgPSBMICsgKHRoaXMucFdpZHRoIHx8IHcpICsgUjtcbiAgICBjb25zdCBMVyA9IHRoaXMuZ2V0VGFibGVEYXRhKCkuTDtcbiAgICBjb25zdCBbICwgYWxpZ24sIHNoaWZ0XSA9IHRoaXMuZ2V0UGFkQWxpZ25TaGlmdChzaWRlKTtcbiAgICBjb25zdCBkeCA9IHNoaWZ0ICsgKGFsaWduID09PSAncmlnaHQnID8gLVcgOiBhbGlnbiA9PT0gJ2NlbnRlcicgPyAtVyAvIDIgOiAwKSArIEw7XG4gICAgY29uc3QgbWF0cml4ID0gJ21hdHJpeCgxIDAgMCAtMSAwIDApJztcbiAgICBjb25zdCBzY2FsZSA9IGBzY2FsZSgke3RoaXMuamF4LmZpeGVkKCh0aGlzLmZvbnQucGFyYW1zLnhfaGVpZ2h0ICogMTAwMCkgLyB0aGlzLm1ldHJpY3MuZXgsIDIpfSlgO1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoMCAke3RoaXMuZml4ZWQoaCl9KSAke21hdHJpeH0gJHtzY2FsZX1gO1xuICAgIGxldCB0YWJsZSA9IHRoaXMuc3ZnKCdzdmcnLCB7XG4gICAgICAnZGF0YS10YWJsZSc6IHRydWUsXG4gICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvOiAoYWxpZ24gPT09ICdsZWZ0JyA/ICd4TWluWU1pZCcgOiBhbGlnbiA9PT0gJ3JpZ2h0JyA/ICd4TWF4WU1pZCcgOiAneE1pZFlNaWQnKSxcbiAgICAgIHZpZXdCb3g6IFt0aGlzLmZpeGVkKC1keCksIHRoaXMuZml4ZWQoLWgpLCAxLCB0aGlzLmZpeGVkKGggKyBkKV0uam9pbignICcpXG4gICAgfSwgW1xuICAgICAgdGhpcy5zdmcoJ2cnLCB7dHJhbnNmb3JtOiBtYXRyaXh9LCBhZGFwdG9yLmNoaWxkTm9kZXMoc3ZnKSlcbiAgICBdKTtcbiAgICBsYWJlbHMgPSB0aGlzLnN2Zygnc3ZnJywge1xuICAgICAgJ2RhdGEtbGFiZWxzJzogdHJ1ZSxcbiAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86IChzaWRlID09PSAnbGVmdCcgPyAneE1pbllNaWQnIDogJ3hNYXhZTWlkJyksXG4gICAgICB2aWV3Qm94OiBbc2lkZSA9PT0gJ2xlZnQnID8gMCA6IHRoaXMuZml4ZWQoTFcpLCB0aGlzLmZpeGVkKC1oKSwgMSwgdGhpcy5maXhlZChoICsgZCldLmpvaW4oJyAnKVxuICAgIH0sIFtsYWJlbHNdKTtcbiAgICBhZGFwdG9yLmFwcGVuZChzdmcsIHRoaXMuc3ZnKCdnJywge3RyYW5zZm9ybTogdHJhbnNmb3JtfSwgW3RhYmxlLCBsYWJlbHNdKSk7XG4gICAgdGhpcy5wbGFjZSgtTCwgMCwgc3ZnKTsgIC8vIHJlbW92ZSBzcGFjaW5nIGZvciBMLCB3aGljaCBpcyBhZGRlZCBieSB0aGUgcGFyZW50IGR1cmluZyBhcHBlbmRpbmdcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IHN2ZyAgICAgICAgIFRoZSBTVkcgY29udGFpbmVyIGZvciB0aGUgdGFibGVcbiAgICogQHBhcmFtIHtOfSBsYWJlbHMgICAgICBUaGUgZ3JvdXAgb2YgbGFiZWxzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlICAgVGhlIHNpZGUgYWxpZ25tZW50IChsZWZ0IG9yIHJpZ2h0KVxuICAgKiBAcGFyYW0ge251bWJlcn0gZHggICAgIFRoZSBhZGp1c3RlbWVudCBmb3IgcGVyY2VudGFnZSB3aWR0aCB0YWJsZXNcbiAgICovXG4gIHByb3RlY3RlZCBzdWJUYWJsZShzdmc6IE4sIGxhYmVsczogTiwgc2lkZTogc3RyaW5nLCBkeDogbnVtYmVyKSB7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBjb25zdCB7dywgTCwgUn0gPSB0aGlzLmdldEJCb3goKTtcbiAgICBjb25zdCBXID0gTCArICh0aGlzLnBXaWR0aCB8fCB3KSArIFI7XG4gICAgY29uc3QgbGFiZWxXID0gdGhpcy5nZXRUYWJsZURhdGEoKS5MO1xuICAgIGNvbnN0IGFsaWduID0gdGhpcy5nZXRBbGlnblNoaWZ0KClbMF07XG4gICAgY29uc3QgQ1cgPSBNYXRoLm1heChXLCB0aGlzLmNvbnRhaW5lci5nZXRXcmFwV2lkdGgodGhpcy5jb250YWluZXJJKSk7XG4gICAgdGhpcy5wbGFjZShzaWRlID09PSAnbGVmdCcgP1xuICAgICAgICAgICAgICAgKGFsaWduID09PSAnbGVmdCcgPyAwIDogYWxpZ24gPT09ICdyaWdodCcgPyBXIC0gQ1cgKyBkeCA6IChXIC0gQ1cpIC8gMiArIGR4KSAtIEwgOlxuICAgICAgICAgICAgICAgKGFsaWduID09PSAnbGVmdCcgPyBDVyA6IGFsaWduID09PSAncmlnaHQnID8gVyArIGR4IDogKENXICsgVykgLyAyICsgZHgpIC0gTCAtIGxhYmVsVyxcbiAgICAgICAgICAgICAgIDAsIGxhYmVscyk7XG4gICAgYWRhcHRvci5hcHBlbmQoc3ZnLCBsYWJlbHMpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ2NvbW1vbk10ciB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTXRyIG9iamVjdFxuICogICAgICAgICAgICAgICAgYW5kIENvbW1vbk1sYWJlbGVkdHIgd3JhcHBlciBtaXhpbiBmb3IgTW1sTWxhYmVsZWR0clxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTW99IGZyb20gJy4vbW8uanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuaW1wb3J0IHtESVJFQ1RJT059IGZyb20gJy4uL0ZvbnREYXRhLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTXRyIGludGVyZmFjZVxuICpcbiAqIEB0ZW1wbGF0ZSBDICBUaGUgY2xhc3MgZm9yIHRhYmxlIGNlbGxzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uTXRyPEMgZXh0ZW5kcyBBbnlXcmFwcGVyPiBleHRlbmRzIEFueVdyYXBwZXIge1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIG10ZCdzIGluIHRoZSBtdHJcbiAgICovXG4gIHJlYWRvbmx5IG51bUNlbGxzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhpcyBpcyBhIGxhYmVsZWQgcm93XG4gICAqL1xuICByZWFkb25seSBsYWJlbGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMgdGhhdCBhcmUgcGFydCBvZiB0aGUgdGFibGUgKG5vIGxhYmVsIG5vZGUpXG4gICAqL1xuICByZWFkb25seSB0YWJsZUNlbGxzOiBDW107XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZTtcbiAgICovXG4gIGNoaWxkTm9kZXM6IENbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IGkgICBUaGUgaW5kZXggb2YgdGhlIGNoaWxkIHRvIGdldCAoc2tpcHBpbmcgbGFiZWxzKVxuICAgKiBAcmV0dXJuIHtDfSAgICAgICAgIFRoZSBpdGggY2hpbGQgbm9kZSB3cmFwcGVyXG4gICAqL1xuICBnZXRDaGlsZChpOiBudW1iZXIpOiBDO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtCQm94W119ICBBbiBhcnJheSBvZiB0aGUgYm91bmRpbmcgYm94ZXMgZm9yIHRoZSBtdGQncyBpbiB0aGUgcm93XG4gICAqL1xuICBnZXRDaGlsZEJCb3hlcygpOiBCQm94W107XG5cbiAgLyoqXG4gICAqIEhhbmRsZSB2ZXJ0aWNhbCBzdHJldGNoaW5nIG9mIGNlbGxzIHRvIG1hdGNoIGhlaWdodCBvZlxuICAgKiAgb3RoZXIgY2VsbHMgaW4gdGhlIHJvdy5cbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJbXT19IEhEICAgVGhlIHRvdGFsIGhlaWdodCBhbmQgZGVwdGggZm9yIHRoZSByb3cgW0gsIERdXG4gICAqXG4gICAqIElmIHRoaXMgaXNuJ3Qgc3BlY2lmaWVkLCB0aGUgbWF4aW11bSBoZWlnaHQgYW5kIGRlcHRoIGlzIGNvbXB1dGVkLlxuICAgKi9cbiAgc3RyZXRjaENoaWxkcmVuKEhEPzogbnVtYmVyW10pOiB2b2lkO1xuXG59XG5cbi8qKlxuICogU2hvcnRoYW5kIGZvciB0aGUgQ29tbW9uTXRyIGNvbnN0cnVjdG9yXG4gKlxuICogQHRlbXBsYXRlIEMgIFRoZSBjbGFzcyBmb3IgdGFibGUgY2VsbHNcbiAqL1xuZXhwb3J0IHR5cGUgTXRyQ29uc3RydWN0b3I8QyBleHRlbmRzIEFueVdyYXBwZXI+ID0gQ29uc3RydWN0b3I8Q29tbW9uTXRyPEM+PjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTXRyIHdyYXBwZXIgZm9yIHRoZSBNbWxNdHIgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIEMgIFRoZSBjbGFzcyBmb3IgdGFibGUgY2VsbHNcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25NdHJNaXhpbjxcbiAgQyBleHRlbmRzIEFueVdyYXBwZXIsXG4gIFQgZXh0ZW5kcyBXcmFwcGVyQ29uc3RydWN0b3Jcbj4oQmFzZTogVCk6IE10ckNvbnN0cnVjdG9yPEM+ICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBnZXQgZml4ZXNQV2lkdGgoKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7bnVtYmVyfSAgIFRoZSBudW1iZXIgb2YgbXRkJ3MgaW4gdGhlIG10clxuICAgICAqL1xuICAgIGdldCBudW1DZWxscygpOiBudW1iZXIge1xuICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5sZW5ndGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gICBUcnVlIGlmIHRoaXMgaXMgYSBsYWJlbGVkIHJvd1xuICAgICAqL1xuICAgIGdldCBsYWJlbGVkKCk6IGJvb2xlYW4ge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge0NbXX0gIFRoZSBjaGlsZCBub2RlcyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSB0YWJsZSAobm8gbGFiZWwgbm9kZSlcbiAgICAgKi9cbiAgICBnZXQgdGFibGVDZWxscygpOiBDW10ge1xuICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2RlcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gaSAgIFRoZSBpbmRleCBvZiB0aGUgY2hpbGQgdG8gZ2V0IChza2lwcGluZyBsYWJlbHMpXG4gICAgICogQHJldHVybiB7Q30gICAgICAgICBUaGUgaXRoIGNoaWxkIG5vZGUgd3JhcHBlclxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDaGlsZChpOiBudW1iZXIpOiBDIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbaV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7QkJveFtdfSAgQW4gYXJyYXkgb2YgdGhlIGJvdW5kaW5nIGJveGVzIGZvciB0aGUgbXRkJ3MgaW4gdGhlIHJvd1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDaGlsZEJCb3hlcygpOiBCQm94W10ge1xuICAgICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcy5tYXAoY2VsbCA9PiBjZWxsLmdldEJCb3goKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlIHZlcnRpY2FsIHN0cmV0Y2hpbmcgb2YgY2VsbHMgdG8gbWF0Y2ggaGVpZ2h0IG9mXG4gICAgICogIG90aGVyIGNlbGxzIGluIHRoZSByb3cuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcltdfSBIRCAgIFRoZSB0b3RhbCBoZWlnaHQgYW5kIGRlcHRoIGZvciB0aGUgcm93IFtILCBEXVxuICAgICAqXG4gICAgICogSWYgdGhpcyBpc24ndCBzcGVjaWZpZWQsIHRoZSBtYXhpbXVtIGhlaWdodCBhbmQgZGVwdGggaXMgY29tcHV0ZWQuXG4gICAgICovXG4gICAgcHVibGljIHN0cmV0Y2hDaGlsZHJlbihIRDogbnVtYmVyW10gPSBudWxsKSB7XG4gICAgICBsZXQgc3RyZXRjaHk6IEFueVdyYXBwZXJbXSA9IFtdO1xuICAgICAgbGV0IGNoaWxkcmVuID0gKHRoaXMubGFiZWxlZCA/IHRoaXMuY2hpbGROb2Rlcy5zbGljZSgxKSA6IHRoaXMuY2hpbGROb2Rlcyk7XG4gICAgICAvL1xuICAgICAgLy8gIExvY2F0ZSBhbmQgY291bnQgdGhlIHN0cmV0Y2h5IGNoaWxkcmVuXG4gICAgICAvL1xuICAgICAgZm9yIChjb25zdCBtdGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgICAgY29uc3QgY2hpbGQgPSBtdGQuY2hpbGROb2Rlc1swXTtcbiAgICAgICAgaWYgKGNoaWxkLmNhblN0cmV0Y2goRElSRUNUSU9OLlZlcnRpY2FsKSkge1xuICAgICAgICAgIHN0cmV0Y2h5LnB1c2goY2hpbGQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY291bnQgPSBzdHJldGNoeS5sZW5ndGg7XG4gICAgICBsZXQgbm9kZUNvdW50ID0gdGhpcy5jaGlsZE5vZGVzLmxlbmd0aDtcbiAgICAgIGlmIChjb3VudCAmJiBub2RlQ291bnQgPiAxKSB7XG4gICAgICAgIGlmIChIRCA9PT0gbnVsbCkge1xuICAgICAgICAgIGxldCBIID0gMCwgRCA9IDA7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyAgSWYgYWxsIHRoZSBjaGlsZHJlbiBhcmUgc3RyZXRjaHksIGZpbmQgdGhlIGxhcmdlc3Qgb25lLFxuICAgICAgICAgIC8vICBvdGhlcndpc2UsIGZpbmQgdGhlIGhlaWdodCBhbmQgZGVwdGggb2YgdGhlIG5vbi1zdHJldGNoeVxuICAgICAgICAgIC8vICBjaGlsZHJlbi5cbiAgICAgICAgICAvL1xuICAgICAgICAgIGxldCBhbGwgPSAoY291bnQgPiAxICYmIGNvdW50ID09PSBub2RlQ291bnQpO1xuICAgICAgICAgIGZvciAoY29uc3QgbXRkIG9mIGNoaWxkcmVuKSB7XG4gICAgICAgICAgICBjb25zdCBjaGlsZCA9IG10ZC5jaGlsZE5vZGVzWzBdO1xuICAgICAgICAgICAgY29uc3Qgbm9TdHJldGNoID0gKGNoaWxkLnN0cmV0Y2guZGlyID09PSBESVJFQ1RJT04uTm9uZSk7XG4gICAgICAgICAgICBpZiAoYWxsIHx8IG5vU3RyZXRjaCkge1xuICAgICAgICAgICAgICBjb25zdCB7aCwgZH0gPSBjaGlsZC5nZXRCQm94KG5vU3RyZXRjaCk7XG4gICAgICAgICAgICAgIGlmIChoID4gSCkge1xuICAgICAgICAgICAgICAgIEggPSBoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChkID4gRCkge1xuICAgICAgICAgICAgICAgIEQgPSBkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIEhEID0gW0gsIERdO1xuICAgICAgICB9XG4gICAgICAgIC8vXG4gICAgICAgIC8vICBTdHJldGNoIHRoZSBzdHJldGNoYWJsZSBjaGlsZHJlblxuICAgICAgICAvL1xuICAgICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHN0cmV0Y2h5KSB7XG4gICAgICAgICAgKGNoaWxkLmNvcmVNTygpIGFzIENvbW1vbk1vKS5nZXRTdHJldGNoZWRWYXJpYW50KEhEKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICB9O1xuXG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1sYWJlbGVkdHIgaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIEMgIFRoZSBjbGFzcyBmb3IgdGFibGUgY2VsbHNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25NbGFiZWxlZHRyPEMgZXh0ZW5kcyBBbnlXcmFwcGVyPiBleHRlbmRzIENvbW1vbk10cjxDPiB7XG59XG5cbi8qKlxuICogU2hvcnRoYW5kIGZvciB0aGUgQ29tbW9uTWxhYmVsZWR0ciBjb25zdHJ1Y3RvclxuICpcbiAqIEB0ZW1wbGF0ZSBDICBUaGUgY2xhc3MgZm9yIHRhYmxlIGNlbGxzXG4gKi9cbmV4cG9ydCB0eXBlIE1sYWJlbGVkdHJDb25zdHJ1Y3RvcjxDIGV4dGVuZHMgQW55V3JhcHBlcj4gPSBDb25zdHJ1Y3RvcjxDb21tb25NbGFiZWxlZHRyPEM+PjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTWxhYmVsZWR0ciB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWxhYmVsZWR0ciBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgQyAgVGhlIGNsYXNzIGZvciB0YWJsZSBjZWxsc1xuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk1sYWJlbGVkdHJNaXhpbjxcbiAgQyBleHRlbmRzIEFueVdyYXBwZXIsXG4gIFQgZXh0ZW5kcyBNdHJDb25zdHJ1Y3RvcjxDPlxuPihCYXNlOiBUKTogTWxhYmVsZWR0ckNvbnN0cnVjdG9yPEM+ICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBnZXQgbnVtQ2VsbHMoKSB7XG4gICAgICAvL1xuICAgICAgLy8gIERvbid0IGluY2x1ZGUgdGhlIGxhYmVsIG10ZFxuICAgICAgLy9cbiAgICAgIHJldHVybiBNYXRoLm1heCgwLCB0aGlzLmNoaWxkTm9kZXMubGVuZ3RoIC0gMSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgZ2V0IGxhYmVsZWQoKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBnZXQgdGFibGVDZWxscygpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXMuc2xpY2UoMSkgYXMgQ1tdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRDaGlsZChpOiBudW1iZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbaSArIDFdIGFzIEM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldENoaWxkQkJveGVzKCkge1xuICAgICAgLy9cbiAgICAgIC8vICBEb24ndCBpbmNsdWRlIHRoZSBsYWJlbCBtdGRcbiAgICAgIC8vXG4gICAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzLnNsaWNlKDEpLm1hcChjZWxsID0+IGNlbGwuZ2V0QkJveCgpKTtcbiAgICB9XG5cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNdHIgYW5kIE1tbE1sYWJlbGVkdHIgbm9kZXNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtNbWxOb2RlLCBBYnN0cmFjdE1tbE5vZGUsIEF0dHJpYnV0ZUxpc3R9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuaW1wb3J0IHtJTkhFUklUfSBmcm9tICcuLi9BdHRyaWJ1dGVzLmpzJztcbmltcG9ydCB7c3BsaXR9IGZyb20gJy4uLy4uLy4uL3V0aWwvc3RyaW5nLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTXRyIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTXRyIGV4dGVuZHMgQWJzdHJhY3RNbWxOb2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxOb2RlLmRlZmF1bHRzLFxuICAgIHJvd2FsaWduOiBJTkhFUklULFxuICAgIGNvbHVtbmFsaWduOiBJTkhFUklULFxuICAgIGdyb3VwYWxpZ246IElOSEVSSVRcbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtdHInO1xuICB9XG5cbiAgLyoqXG4gICAqIDxtdHI+IGNhbiBjb250YWluIGxpbmVicmVha3NcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpbmVicmVha0NvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmhlcml0IHRoZSBtdHIgYXR0cmlidXRlc1xuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RlY3RlZCBzZXRDaGlsZEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCwgZGlzcGxheTogYm9vbGVhbiwgbGV2ZWw6IG51bWJlciwgcHJpbWU6IGJvb2xlYW4pIHtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGROb2Rlcykge1xuICAgICAgaWYgKCFjaGlsZC5pc0tpbmQoJ210ZCcpKSB7XG4gICAgICAgIHRoaXMucmVwbGFjZUNoaWxkKHRoaXMuZmFjdG9yeS5jcmVhdGUoJ210ZCcpLCBjaGlsZClcbiAgICAgICAgICAgIC5hcHBlbmRDaGlsZChjaGlsZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IGNhbGlnbiA9IHNwbGl0KHRoaXMuYXR0cmlidXRlcy5nZXQoJ2NvbHVtbmFsaWduJykgYXMgc3RyaW5nKTtcbiAgICBpZiAodGhpcy5hcml0eSA9PT0gMSkge1xuICAgICAgY2FsaWduLnVuc2hpZnQodGhpcy5wYXJlbnQuYXR0cmlidXRlcy5nZXQoJ3NpZGUnKSBhcyBzdHJpbmcpO1xuICAgIH1cbiAgICBhdHRyaWJ1dGVzID0gdGhpcy5hZGRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIHtcbiAgICAgIHJvd2FsaWduOiB0aGlzLmF0dHJpYnV0ZXMuZ2V0KCdyb3dhbGlnbicpLFxuICAgICAgY29sdW1uYWxpZ246ICdjZW50ZXInXG4gICAgfSk7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiB0aGlzLmNoaWxkTm9kZXMpIHtcbiAgICAgIGF0dHJpYnV0ZXMuY29sdW1uYWxpZ25bMV0gPSBjYWxpZ24uc2hpZnQoKSB8fCBhdHRyaWJ1dGVzLmNvbHVtbmFsaWduWzFdO1xuICAgICAgY2hpbGQuc2V0SW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzLCBkaXNwbGF5LCBsZXZlbCwgcHJpbWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGF0IHBhcmVudCBpcyBtdGFibGUgYW5kIGNoaWxkcmVuIGFyZSBtdGRcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgdmVyaWZ5Q2hpbGRyZW4ob3B0aW9uczogUHJvcGVydHlMaXN0KSB7XG4gICAgaWYgKHRoaXMucGFyZW50ICYmICF0aGlzLnBhcmVudC5pc0tpbmQoJ210YWJsZScpKSB7XG4gICAgICB0aGlzLm1FcnJvcih0aGlzLmtpbmQgKyAnIGNhbiBvbmx5IGJlIGEgY2hpbGQgb2YgYW4gbXRhYmxlJywgb3B0aW9ucywgdHJ1ZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBpZiAoIWNoaWxkLmlzS2luZCgnbXRkJykpIHtcbiAgICAgICAgbGV0IG10ZCA9IHRoaXMucmVwbGFjZUNoaWxkKHRoaXMuZmFjdG9yeS5jcmVhdGUoJ210ZCcpLCBjaGlsZCkgYXMgTW1sTm9kZTtcbiAgICAgICAgbXRkLmFwcGVuZENoaWxkKGNoaWxkKTtcbiAgICAgICAgaWYgKCFvcHRpb25zWydmaXhNdGFibGVzJ10pIHtcbiAgICAgICAgICBjaGlsZC5tRXJyb3IoJ0NoaWxkcmVuIG9mICcgKyB0aGlzLmtpbmQgKyAnIG11c3QgYmUgbXRkJywgb3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgc3VwZXIudmVyaWZ5Q2hpbGRyZW4ob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0VGVYY2xhc3MocHJldjogTW1sTm9kZSkge1xuICAgIHRoaXMuZ2V0UHJldkNsYXNzKHByZXYpO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgdGhpcy5jaGlsZE5vZGVzKSB7XG4gICAgICBjaGlsZC5zZXRUZVhjbGFzcyhudWxsKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNbGFiZWxlZHRyIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIE1tbE10cilcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTWxhYmVsZWR0ciBleHRlbmRzIE1tbE10ciB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbWxhYmVsZWR0cic7XG4gIH1cblxuICAvKipcbiAgICogPG1sYWJlbGVkdHI+IHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBjaGlsZCAodGhlIGxhYmVsKVxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR210ciB3cmFwcGVyIGZvciB0aGUgTW1sTXRyIG9iamVjdFxuICogICAgICAgICAgICAgICAgYW5kIFNWR21sYWJlbGVkdHIgZm9yIE1tbE1sYWJlbGVkdHJcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7U1ZHV3JhcHBlciwgU1ZHQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTXRyTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tdHIuanMnO1xuaW1wb3J0IHtDb21tb25NbGFiZWxlZHRyTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tdHIuanMnO1xuaW1wb3J0IHtTVkdtdGR9IGZyb20gJy4vbXRkLmpzJztcbmltcG9ydCB7TW1sTXRyLCBNbWxNbGFiZWxlZHRyfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXRyLmpzJztcblxuXG4vKipcbiAqIFRoZSBkYXRhIG5lZWRlZCBmb3IgcGxhY2VDZWxsKClcbiAqL1xuZXhwb3J0IHR5cGUgU2l6ZURhdGEgPSB7XG4gIHg6IG51bWJlcixcbiAgeTogbnVtYmVyLFxuICB3OiBudW1iZXIsXG4gIGxTcGFjZTogbnVtYmVyLFxuICByU3BhY2U6IG51bWJlcixcbiAgbExpbmU6IG51bWJlcixcbiAgckxpbmU6IG51bWJlclxufTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbXRyIHdyYXBwZXIgZm9yIHRoZSBNbWxNdHIgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU1ZHbXRyPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk10ck1peGluPFNWR210ZDxhbnksIGFueSwgYW55PiwgU1ZHQ29uc3RydWN0b3I8YW55LCBhbnksIGFueT4+KFNWR1dyYXBwZXIpIHtcblxuICAvKipcbiAgICogVGhlIG10ciB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxNdHIucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWlnaHQgb2YgdGhlIHJvd1xuICAgKi9cbiAgcHVibGljIEg6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBkZXB0aCBvZiB0aGUgcm93XG4gICAqL1xuICBwdWJsaWMgRDogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHNwYWNlIGFib3ZlIHRoZSByb3dcbiAgICovXG4gIHB1YmxpYyB0U3BhY2U6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBzcGFjZSBiZWxvdyB0aGUgcm93XG4gICAqL1xuICBwdWJsaWMgYlNwYWNlOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgbGluZSBzcGFjZSBhYm92ZSB0aGUgcm93XG4gICAqL1xuICBwdWJsaWMgdExpbmU6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBsaW5lIHNwYWNlIGJlbG93IHRoZSByb3dcbiAgICovXG4gIHB1YmxpYyBiTGluZTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBjb25zdCBzdmcgPSB0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpO1xuICAgIHRoaXMucGxhY2VDZWxscyhzdmcpO1xuICAgIHRoaXMucGxhY2VDb2xvcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgbG9jYXRpb24gb2YgdGhlIGNlbGwgY29udGVudHMgaW4gdGhlIHJvdyBhbmQgZXhwYW5kIHRoZSBjZWxsIGJhY2tncm91bmQgY29sb3JzXG4gICAqXG4gICAqIEBwYXJhbSB7Tn0gc3ZnICAgVGhlIGNvbnRhaW5lciBmb3IgdGhlIHRhYmxlXG4gICAqL1xuICBwcm90ZWN0ZWQgcGxhY2VDZWxscyhzdmc6IE4pIHtcbiAgICBjb25zdCBjU3BhY2UgPSB0aGlzLnBhcmVudC5nZXRDb2x1bW5IYWxmU3BhY2luZygpO1xuICAgIGNvbnN0IGNMaW5lcyA9IFt0aGlzLnBhcmVudC5mTGluZSwgLi4udGhpcy5wYXJlbnQuY0xpbmVzLCB0aGlzLnBhcmVudC5mTGluZV07XG4gICAgY29uc3QgY1dpZHRoID0gdGhpcy5wYXJlbnQuZ2V0Q29tcHV0ZWRXaWR0aHMoKTtcbiAgICBjb25zdCBzY2FsZSA9IDEgLyB0aGlzLmdldEJCb3goKS5yc2NhbGU7XG4gICAgbGV0IHggPSBjTGluZXNbMF07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm51bUNlbGxzOyBpKyspIHtcbiAgICAgIGNvbnN0IGNoaWxkID0gdGhpcy5nZXRDaGlsZChpKTtcbiAgICAgIGNoaWxkLnRvU1ZHKHN2Zyk7XG4gICAgICB4ICs9IHRoaXMucGxhY2VDZWxsKGNoaWxkLCB7XG4gICAgICAgIHg6IHgsIHk6IDAsIGxTcGFjZTogY1NwYWNlW2ldICogc2NhbGUsIHJTcGFjZTogY1NwYWNlW2kgKyAxXSAqIHNjYWxlLCB3OiBjV2lkdGhbaV0gKiBzY2FsZSxcbiAgICAgICAgbExpbmU6IGNMaW5lc1tpXSAqIHNjYWxlLCByTGluZTogY0xpbmVzW2kgKyAxXSAqIHNjYWxlXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtTVkdtdGR9IGNlbGwgICAgICBUaGUgY2VsbCB0byBwbGFjZVxuICAgKiBAcGFyYW0ge1NpemVEYXRhfSBzaXplcyAgIFRoZSBwb3NpdGlvbmluZyBpbmZvcm1hdGlvblxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgICAgIFRoZSBuZXcgeCBwb3NpdGlvblxuICAgKi9cbiAgcHVibGljIHBsYWNlQ2VsbChjZWxsOiBTVkdtdGQ8TiwgVCwgRD4sIHNpemVzOiBTaXplRGF0YSk6IG51bWJlciB7XG4gICAgY29uc3Qge3gsIHksIGxTcGFjZSwgdywgclNwYWNlLCBsTGluZSwgckxpbmV9ID0gc2l6ZXM7XG4gICAgY29uc3Qgc2NhbGUgPSAxIC8gdGhpcy5nZXRCQm94KCkucnNjYWxlO1xuICAgIGNvbnN0IFtoLCBkXSA9IFt0aGlzLkggKiBzY2FsZSwgdGhpcy5EICogc2NhbGVdO1xuICAgIGNvbnN0IFt0LCBiXSA9IFt0aGlzLnRTcGFjZSAqIHNjYWxlLCB0aGlzLmJTcGFjZSAqIHNjYWxlXTtcbiAgICBjb25zdCBbZHgsIGR5XSA9IGNlbGwucGxhY2VDZWxsKHggKyBsU3BhY2UsIHksIHcsIGgsIGQpO1xuICAgIGNvbnN0IFcgPSBsU3BhY2UgKyB3ICsgclNwYWNlO1xuICAgIGNlbGwucGxhY2VDb2xvcigtKGR4ICsgbFNwYWNlICsgbExpbmUgLyAyKSwgLShkICsgYiArIGR5KSwgVyArIChsTGluZSArIHJMaW5lKSAvIDIsIGggKyBkICsgdCArIGIpO1xuICAgIHJldHVybiBXICsgckxpbmU7XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kIHRoZSBiYWNrZ291bmQgY29sb3IgdG8gZmlsbCB0aGUgZW50aXJlIHJvd1xuICAgKi9cbiAgcHJvdGVjdGVkIHBsYWNlQ29sb3IoKSB7XG4gICAgY29uc3Qgc2NhbGUgPSAxIC8gdGhpcy5nZXRCQm94KCkucnNjYWxlO1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3QgY2hpbGQgPSB0aGlzLmZpcnN0Q2hpbGQoKTtcbiAgICBpZiAoY2hpbGQgJiYgYWRhcHRvci5raW5kKGNoaWxkKSA9PT0gJ3JlY3QnICYmIGFkYXB0b3IuZ2V0QXR0cmlidXRlKGNoaWxkLCAnZGF0YS1iZ2NvbG9yJykpIHtcbiAgICAgIGNvbnN0IFtUTCwgQkxdID0gWyh0aGlzLnRMaW5lIC8gMikgKiBzY2FsZSwgKHRoaXMuYkxpbmUgLyAyKSAqIHNjYWxlXTtcbiAgICAgIGNvbnN0IFtUUywgQlNdID0gW3RoaXMudFNwYWNlICogc2NhbGUsIHRoaXMuYlNwYWNlICogc2NhbGVdO1xuICAgICAgY29uc3QgW0gsIERdID0gW3RoaXMuSCAqIHNjYWxlLCB0aGlzLkQgKiBzY2FsZV07XG4gICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZShjaGlsZCwgJ3knLCB0aGlzLmZpeGVkKC0oRCArIEJTICsgQkwpKSk7XG4gICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZShjaGlsZCwgJ3dpZHRoJywgdGhpcy5maXhlZCh0aGlzLnBhcmVudC5nZXRXaWR0aCgpICogc2NhbGUpKTtcbiAgICAgIGFkYXB0b3Iuc2V0QXR0cmlidXRlKGNoaWxkLCAnaGVpZ2h0JywgdGhpcy5maXhlZChUTCArIFRTICsgSCArIEQgKyBCUyArIEJMKSk7XG4gICAgfVxuICB9XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbGFiZWxlZG10ciB3cmFwcGVyIGZvciB0aGUgTW1sTWxhYmVsZWR0ciBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdtbGFiZWxlZHRyPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk1sYWJlbGVkdHJNaXhpbjxTVkdtdGQ8YW55LCBhbnksIGFueT4sIENvbnN0cnVjdG9yPFNWR210cjxhbnksIGFueSwgYW55Pj4+KFNWR210cikge1xuXG4gIC8qKlxuICAgKiBUaGUgbWxhYmVsZWR0ciB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxNbGFiZWxlZHRyLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBzdXBlci50b1NWRyhwYXJlbnQpO1xuICAgIGNvbnN0IGNoaWxkID0gdGhpcy5jaGlsZE5vZGVzWzBdO1xuICAgIGlmIChjaGlsZCkge1xuICAgICAgY2hpbGQudG9TVkcodGhpcy5wYXJlbnQubGFiZWxzKTtcbiAgICB9XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25NdGQgd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE10ZCBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QW55V3JhcHBlciwgV3JhcHBlckNvbnN0cnVjdG9yLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk10YWJsZX0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL210YWJsZS5qcyc7XG5pbXBvcnQge0NvbW1vbk10cn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL210ci5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk10ZCBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25NdGQgZXh0ZW5kcyBBbnlXcmFwcGVyIHtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25NdGQgY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTXRkQ29uc3RydWN0b3IgPSBDb25zdHJ1Y3RvcjxDb21tb25NdGQ+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgQ29tbW9uTXRkIHdyYXBwZXIgbWl4aW4gZm9yIHRoZSBNbWxNdGQgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk10ZE1peGluPFQgZXh0ZW5kcyBXcmFwcGVyQ29uc3RydWN0b3I+KEJhc2U6IFQpOiBNdGRDb25zdHJ1Y3RvciAmIFQge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgZ2V0IGZpeGVzUFdpZHRoKCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBpbnZhbGlkYXRlQkJveCgpIHtcbiAgICAgIHRoaXMuYmJveENvbXB1dGVkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldFdyYXBXaWR0aChfajogbnVtYmVyKSB7XG4gICAgICBjb25zdCB0YWJsZSA9IHRoaXMucGFyZW50LnBhcmVudCBhcyBhbnkgYXMgQ29tbW9uTXRhYmxlPEFueVdyYXBwZXIsIENvbW1vbk10cjxBbnlXcmFwcGVyPj47XG4gICAgICBjb25zdCByb3cgPSB0aGlzLnBhcmVudCBhcyBDb21tb25NdHI8QW55V3JhcHBlcj47XG4gICAgICBjb25zdCBpID0gdGhpcy5ub2RlLmNoaWxkUG9zaXRpb24oKSAtIChyb3cubGFiZWxlZCA/IDEgOiAwKTtcbiAgICAgIHJldHVybiAodHlwZW9mKHRhYmxlLmNXaWR0aHNbaV0pID09PSAnbnVtYmVyJyA/IHRhYmxlLmNXaWR0aHNbaV0gOiB0YWJsZS5nZXRUYWJsZURhdGEoKS5XW2ldKSBhcyBudW1iZXI7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldENoaWxkQWxpZ24oX2k6IG51bWJlcikge1xuICAgICAgcmV0dXJuIHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnY29sdW1uYWxpZ24nKSBhcyBzdHJpbmc7XG4gICAgfVxuXG4gIH07XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgTW1sTXRkIG5vZGVcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtBYnN0cmFjdE1tbEJhc2VOb2RlLCBNbWxOb2RlfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcbmltcG9ydCB7SU5IRVJJVH0gZnJvbSAnLi4vQXR0cmlidXRlcy5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE10ZCBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbEJhc2VOb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNdGQgZXh0ZW5kcyBBYnN0cmFjdE1tbEJhc2VOb2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxCYXNlTm9kZS5kZWZhdWx0cyxcbiAgICByb3dzcGFuOiAxLFxuICAgIGNvbHVtbnNwYW46IDEsXG4gICAgcm93YWxpZ246IElOSEVSSVQsXG4gICAgY29sdW1uYWxpZ246IElOSEVSSVQsXG4gICAgZ3JvdXBhbGlnbjogSU5IRVJJVFxuICB9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ210ZCc7XG4gIH1cblxuICAvKipcbiAgICogPG10ZD4gaGFzIGFuIGluZmVycmVkIG1yb3dcbiAgICogQG92ZXJycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogPG10ZD4gY2FuIGNvbnRhaW4gbGluZSBicmVha3NcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpbmVicmVha0NvbnRhaW5lcigpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayB0aGF0IHBhcmVudCBpcyBtdHJcbiAgICpcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgdmVyaWZ5Q2hpbGRyZW4ob3B0aW9uczogUHJvcGVydHlMaXN0KSB7XG4gICAgaWYgKHRoaXMucGFyZW50ICYmICF0aGlzLnBhcmVudC5pc0tpbmQoJ210cicpKSB7XG4gICAgICB0aGlzLm1FcnJvcih0aGlzLmtpbmQgKyAnIGNhbiBvbmx5IGJlIGEgY2hpbGQgb2YgYW4gbXRyIG9yIG1sYWJlbGVkdHInLCBvcHRpb25zLCB0cnVlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3VwZXIudmVyaWZ5Q2hpbGRyZW4ob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0VGVYY2xhc3MocHJldjogTW1sTm9kZSkge1xuICAgIHRoaXMuZ2V0UHJldkNsYXNzKHByZXYpO1xuICAgIHRoaXMuY2hpbGROb2Rlc1swXS5zZXRUZVhjbGFzcyhudWxsKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR210ZCB3cmFwcGVyIGZvciB0aGUgTW1sTXRkIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk10ZE1peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvbXRkLmpzJztcbmltcG9ydCB7TW1sTXRkfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbXRkLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHbXRkIHdyYXBwZXIgZm9yIHRoZSBNbWxNdGQgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHbXRkPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk10ZE1peGluPFNWR0NvbnN0cnVjdG9yPGFueSwgYW55LCBhbnk+PihTVkdXcmFwcGVyKSB7XG5cbiAgLyoqXG4gICAqIFRoZSBtdGQgd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTXRkLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge251bWJlcn0geCAgICBUaGUgeCBvZmZzZXQgb2YgdGhlIGxlZnQgc2lkZSBvZiB0aGUgY2VsbFxuICAgKiBAcGFyYW0ge251bWJlcn0geSAgICBUaGUgeSBvZmZzZXQgb2YgdGhlIGJhc2VsaW5lIG9mIHRoZSBjZWxsXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBXICAgIFRoZSB3aWR0aCBvZiB0aGUgY2VsbFxuICAgKiBAcGFyYW0ge251bWJlcn0gSCAgICBUaGUgaGVpZ2h0IG9mIHRoZSBjZWxsXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBEICAgIFRoZSBkZXB0aCBvZiB0aGUgY2VsbFxuICAgKiBAcmV0dXJuIHtbbnVtYmVyLCBudW1iZXJdfSAgIFRoZSB4IGFuZCB5IG9mZnNldHMgdXNlZFxuICAgKi9cbiAgcHVibGljIHBsYWNlQ2VsbCh4OiBudW1iZXIsIHk6IG51bWJlciwgVzogbnVtYmVyLCBIOiBudW1iZXIsIEQ6IG51bWJlcik6IFtudW1iZXIsIG51bWJlcl0ge1xuICAgIGNvbnN0IGJib3ggPSB0aGlzLmdldEJCb3goKTtcbiAgICBjb25zdCBoID0gTWF0aC5tYXgoYmJveC5oLCAuNzUpO1xuICAgIGNvbnN0IGQgPSBNYXRoLm1heChiYm94LmQsIC4yNSk7XG4gICAgY29uc3QgY2FsaWduID0gdGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdjb2x1bW5hbGlnbicpIGFzIHN0cmluZztcbiAgICBjb25zdCByYWxpZ24gPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ3Jvd2FsaWduJykgYXMgc3RyaW5nO1xuICAgIGNvbnN0IGFsaWduWCA9IHRoaXMuZ2V0QWxpZ25YKFcsIGJib3gsIGNhbGlnbik7XG4gICAgY29uc3QgYWxpZ25ZID0gdGhpcy5nZXRBbGlnblkoSCwgRCwgaCwgZCwgcmFsaWduKTtcbiAgICB0aGlzLnBsYWNlKHggKyBhbGlnblgsIHkgKyBhbGlnblkpO1xuICAgIHJldHVybiBbYWxpZ25YLCBhbGlnblldO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB4ICAgIFRoZSB4IG9mZnNldCBvZiB0aGUgbGVmdCBzaWRlIG9mIHRoZSBjZWxsXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB5ICAgIFRoZSB5IHBvc2l0aW9uIG9mIHRoZSBib3R0b20gb2YgdGhlIGNlbGxcbiAgICogQHBhcmFtIHtudW1iZXJ9IFcgICAgVGhlIHdpZHRoIG9mIHRoZSBjZWxsXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBIICAgIFRoZSBoZWlnaHQgKyBkZXB0aCBvZiB0aGUgY2VsbFxuICAgKi9cbiAgcHVibGljIHBsYWNlQ29sb3IoeDogbnVtYmVyLCB5OiBudW1iZXIsIFc6IG51bWJlciwgSDogbnVtYmVyKSB7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBjb25zdCBjaGlsZCA9IHRoaXMuZmlyc3RDaGlsZCgpO1xuICAgIGlmIChjaGlsZCAmJiBhZGFwdG9yLmtpbmQoY2hpbGQpID09PSAncmVjdCcgJiYgYWRhcHRvci5nZXRBdHRyaWJ1dGUoY2hpbGQsICdkYXRhLWJnY29sb3InKSkge1xuICAgICAgYWRhcHRvci5zZXRBdHRyaWJ1dGUoY2hpbGQsICd4JywgdGhpcy5maXhlZCh4KSk7XG4gICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZShjaGlsZCwgJ3knLCB0aGlzLmZpeGVkKHkpKTtcbiAgICAgIGFkYXB0b3Iuc2V0QXR0cmlidXRlKGNoaWxkLCAnd2lkdGgnLCB0aGlzLmZpeGVkKFcpKTtcbiAgICAgIGFkYXB0b3Iuc2V0QXR0cmlidXRlKGNoaWxkLCAnaGVpZ2h0JywgdGhpcy5maXhlZChIKSk7XG4gICAgfVxuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ29tbW9uTWFjdGlvbiB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWFjdGlvbiBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QW55V3JhcHBlciwgV3JhcHBlckNvbnN0cnVjdG9yLCBDb25zdHJ1Y3RvciwgQW55V3JhcHBlckNsYXNzfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7TW1sTWFjdGlvbn0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGVzL21hY3Rpb24uanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuaW1wb3J0IHtzcGxpdH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zdHJpbmcuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSB0eXBlcyBuZWVkZWQgdG8gZGVmaW5lIHRoZSBhY3Rpb250eXBlc1xuICpcbiAqIEB0ZW1wbGF0ZSBXICBUaGUgbWFjdGlvbiB3cmFwcGVyIHR5cGVcbiAqL1xuZXhwb3J0IHR5cGUgQWN0aW9uRGF0YSA9IHtbbmFtZTogc3RyaW5nXTogYW55fTtcbmV4cG9ydCB0eXBlIEFjdGlvbkhhbmRsZXI8VyBleHRlbmRzIEFueVdyYXBwZXI+ID0gKG5vZGU6IFcsIGRhdGE/OiBBY3Rpb25EYXRhKSA9PiB2b2lkO1xuZXhwb3J0IHR5cGUgQWN0aW9uUGFpcjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gPSBbQWN0aW9uSGFuZGxlcjxXPiwgQWN0aW9uRGF0YV07XG5leHBvcnQgdHlwZSBBY3Rpb25NYXA8VyBleHRlbmRzIEFueVdyYXBwZXI+ID0gTWFwPHN0cmluZywgQWN0aW9uUGFpcjxXPj47XG5leHBvcnQgdHlwZSBBY3Rpb25EZWY8VyBleHRlbmRzIEFueVdyYXBwZXI+ID0gW3N0cmluZywgW0FjdGlvbkhhbmRsZXI8Vz4sIEFjdGlvbkRhdGFdXTtcblxuZXhwb3J0IHR5cGUgRXZlbnRIYW5kbGVyID0gKGV2ZW50OiBFdmVudCkgPT4gdm9pZDtcblxuLyoqXG4gKiBEYXRhIHVzZWQgZm9yIHRvb2x0aXAgYWN0aW9uc1xuICovXG5leHBvcnQgY29uc3QgVG9vbHRpcERhdGEgPSB7XG4gIGR4OiAnLjJlbScsICAgICAgICAgIC8vIHgtb2Zmc2V0IG9mIHRvb2x0aXAgZnJvbSByaWdodCBzaWRlIG9mIG1hY3Rpb24gYmJveFxuICBkeTogJy4xZW0nLCAgICAgICAgICAvLyB5LW9mZnNldCBvZiB0b29sdGlwIGZyb20gYm90dG9tIG9mIG1hY3Rpb24gYmJveFxuXG4gIHBvc3REZWxheTogNjAwLCAgICAgIC8vIG1pbGxpc2Vjb25kcyBiZWZvcmUgdG9vbHRpcCBwb3N0c1xuICBjbGVhckRlbGF5OiAxMDAsICAgICAvLyBtaWxsaXNlY29uZHMgYmVmb3JlIHRvb2x0aXAgaXMgcmVtb3ZlZFxuXG4gIGhvdmVyVGltZXI6IG5ldyBNYXA8YW55LCBudW1iZXI+KCksICAgIC8vIHRpbWVycyBmb3IgcG9zdGluZyB0b29sdGlwc1xuICBjbGVhclRpbWVyOiBuZXcgTWFwPGFueSwgbnVtYmVyPigpLCAgICAvLyB0aW1lcnMgZm9yIHJlbW92aW5nIHRvb2x0aXBzXG5cbiAgLypcbiAgICogY2xlYXIgdGhlIHRpbWVycyBpZiBhbnkgYXJlIGFjdGl2ZVxuICAgKi9cbiAgc3RvcFRpbWVyczogKG5vZGU6IGFueSwgZGF0YTogQWN0aW9uRGF0YSkgPT4ge1xuICAgIGlmIChkYXRhLmNsZWFyVGltZXIuaGFzKG5vZGUpKSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGF0YS5jbGVhclRpbWVyLmdldChub2RlKSk7XG4gICAgICBkYXRhLmNsZWFyVGltZXIuZGVsZXRlKG5vZGUpO1xuICAgIH1cbiAgICBpZiAoZGF0YS5ob3ZlclRpbWVyLmhhcyhub2RlKSkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRhdGEuaG92ZXJUaW1lci5nZXQobm9kZSkpO1xuICAgICAgZGF0YS5ob3ZlclRpbWVyLmRlbGV0ZShub2RlKTtcbiAgICB9XG4gIH1cblxufTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTWFjdGlvbiBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1hY3Rpb24gd3JhcHBlciB0eXBlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uTWFjdGlvbjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gZXh0ZW5kcyBBbnlXcmFwcGVyIHtcbiAgLyoqXG4gICAqIFRoZSBoYW5kbGVyIGZvciB0aGUgc3BlY2lmaWVkIGFjdGlvbnR5cGVcbiAgICovXG4gIGFjdGlvbjogQWN0aW9uSGFuZGxlcjxXPjtcbiAgZGF0YTogQWN0aW9uRGF0YTtcblxuICAvKipcbiAgICogVG9vbHRpcCBvZmZzZXRzXG4gICAqL1xuICBkeDogbnVtYmVyO1xuICBkeTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VsZWN0ZWQgY2hpbGQgd3JhcHBlclxuICAgKi9cbiAgcmVhZG9ubHkgc2VsZWN0ZWQ6IFc7XG5cbn1cblxuLyoqXG4gKiBUaGUgQ29tbW9uTWFjdGlvbiBjbGFzcyBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1hY3Rpb24gd3JhcHBlciB0eXBlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uTWFjdGlvbkNsYXNzPFcgZXh0ZW5kcyBBbnlXcmFwcGVyPiBleHRlbmRzIEFueVdyYXBwZXJDbGFzcyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsaWQgYWN0aW9uIHR5cGVzIGFuZCB0aGVpciBoYW5kbGVyc1xuICAgKi9cbiAgYWN0aW9uczogQWN0aW9uTWFwPFc+O1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk1hY3Rpb24gY29uc3RydWN0b3JcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1hY3Rpb24gd3JhcHBlciB0eXBlXG4gKi9cbmV4cG9ydCB0eXBlIE1hY3Rpb25Db25zdHJ1Y3RvcjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gPSBDb25zdHJ1Y3RvcjxDb21tb25NYWN0aW9uPFc+PjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uTWFjdGlvbiB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWFjdGlvbiBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1hY3Rpb24gd3JhcHBlciB0eXBlXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFdyYXBwZXIgY2xhc3MgY29uc3RydWN0b3IgdHlwZVxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbW9uTWFjdGlvbk1peGluPFxuICBXIGV4dGVuZHMgQW55V3JhcHBlcixcbiAgVCBleHRlbmRzIFdyYXBwZXJDb25zdHJ1Y3RvclxuPihCYXNlOiBUKTogTWFjdGlvbkNvbnN0cnVjdG9yPFc+ICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZCBhY3Rpb250eXBlXG4gICAgICovXG4gICAgcHVibGljIGFjdGlvbjogQWN0aW9uSGFuZGxlcjxXPjtcbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSBmb3IgdGhlIHNwZWNpZmllZCBhY3Rpb250eXBlXG4gICAgICovXG4gICAgcHVibGljIGRhdGE6IEFjdGlvbkRhdGE7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgeC1vZmZzZXQgZm9yIHRvb2x0aXBzXG4gICAgICovXG4gICAgcHVibGljIGR4OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogVGhlIHktb2Zmc2V0IGZvciB0b29sdGlwc1xuICAgICAqL1xuICAgIHB1YmxpYyBkeTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7V30gIFRoZSBzZWxlY3RlZCBjaGlsZCB3cmFwcGVyXG4gICAgICovXG4gICAgcHVibGljIGdldCBzZWxlY3RlZCgpOiBXIHtcbiAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnc2VsZWN0aW9uJykgYXMgbnVtYmVyO1xuICAgICAgY29uc3QgaSA9IE1hdGgubWF4KDEsIE1hdGgubWluKHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgsIHNlbGVjdGlvbikpIC0gMTtcbiAgICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbaV0gfHwgdGhpcy53cmFwKCh0aGlzLm5vZGUgYXMgTW1sTWFjdGlvbikuc2VsZWN0ZWQpO1xuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgY29uc3QgYWN0aW9ucyA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIENvbW1vbk1hY3Rpb25DbGFzczxXPikuYWN0aW9ucztcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldCgnYWN0aW9udHlwZScpIGFzIHN0cmluZztcbiAgICAgIGNvbnN0IFtoYW5kbGVyLCBkYXRhXSA9IGFjdGlvbnMuZ2V0KGFjdGlvbikgfHwgWygoX25vZGUsIF9kYXRhKSA9PiB7fSkgYXMgQWN0aW9uSGFuZGxlcjxXPiwge31dO1xuICAgICAgdGhpcy5hY3Rpb24gPSBoYW5kbGVyO1xuICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICAgIHRoaXMuZ2V0UGFyYW1ldGVycygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvb2sgdXAgYXR0cmlidXRlIHBhcmFtZXRlcnNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFyYW1ldGVycygpIHtcbiAgICAgIGNvbnN0IG9mZnNldHMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXQoJ2RhdGEtb2Zmc2V0cycpIGFzIHN0cmluZztcbiAgICAgIGxldCBbZHgsIGR5XSA9IHNwbGl0KG9mZnNldHMgfHwgJycpO1xuICAgICAgdGhpcy5keCA9IHRoaXMubGVuZ3RoMmVtKGR4IHx8IFRvb2x0aXBEYXRhLmR4KTtcbiAgICAgIHRoaXMuZHkgPSB0aGlzLmxlbmd0aDJlbShkeSB8fCBUb29sdGlwRGF0YS5keSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGNvbXB1dGVCQm94KGJib3g6IEJCb3gsIHJlY29tcHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBiYm94LnVwZGF0ZUZyb20odGhpcy5zZWxlY3RlZC5nZXRPdXRlckJCb3goKSk7XG4gICAgICB0aGlzLnNlbGVjdGVkLnNldENoaWxkUFdpZHRocyhyZWNvbXB1dGUpO1xuICAgIH1cblxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE1hY3Rpb24gbm9kZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge01tbE5vZGUsIEFic3RyYWN0TW1sTm9kZX0gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbE1hY3Rpb24gbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxOb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNYWN0aW9uIGV4dGVuZHMgQWJzdHJhY3RNbWxOb2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxOb2RlLmRlZmF1bHRzLFxuICAgIGFjdGlvbnR5cGU6ICd0b2dnbGUnLFxuICAgIHNlbGVjdGlvbjogMVxuICB9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21hY3Rpb24nO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0IGxlYXN0IG9uZSBjaGlsZFxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgYXJpdHkoKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7TW1sTm9kZX0gIFRoZSBzZWxlY3RlZCBjaGlsZCBub2RlIChvciBhbiBtcm93IGlmIG5vbmUgc2VsZWN0ZWQpXG4gICAqL1xuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IE1tbE5vZGUge1xuICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuYXR0cmlidXRlcy5nZXQoJ3NlbGVjdGlvbicpIGFzIG51bWJlcjtcbiAgICBjb25zdCBpID0gTWF0aC5tYXgoMSwgTWF0aC5taW4odGhpcy5jaGlsZE5vZGVzLmxlbmd0aCwgc2VsZWN0aW9uKSkgLSAxO1xuICAgIHJldHVybiB0aGlzLmNoaWxkTm9kZXNbaV0gfHwgdGhpcy5mYWN0b3J5LmNyZWF0ZSgnbXJvdycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBpc0VtYmVsbGlzaGVkKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLmlzRW1iZWxsaXNoZWQ7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzU3BhY2VsaWtlKCkge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkLmlzU3BhY2VsaWtlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcmUoKTogTW1sTm9kZSB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQuY29yZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvcmVNTygpOiBNbWxOb2RlIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZC5jb3JlTU8oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RlY3RlZCB2ZXJpZnlBdHRyaWJ1dGVzKG9wdGlvbnM6IFByb3BlcnR5TGlzdCkge1xuICAgIHN1cGVyLnZlcmlmeUF0dHJpYnV0ZXMob3B0aW9ucyk7XG4gICAgaWYgKHRoaXMuYXR0cmlidXRlcy5nZXQoJ2FjdGlvbnR5cGUnKSAhPT0gJ3RvZ2dsZScgJiZcbiAgICAgICAgdGhpcy5hdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdzZWxlY3Rpb24nKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBhdHRyaWJ1dGVzID0gdGhpcy5hdHRyaWJ1dGVzLmdldEFsbEF0dHJpYnV0ZXMoKTtcbiAgICAgIGRlbGV0ZSBhdHRyaWJ1dGVzLnNlbGVjdGlvbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBUZVggY2xhc3MgZnJvbSB0aGUgc2VsY2V0ZWQgbm9kZVxuICAgKiBGb3IgdG9vbHRpcHMsIHNldCBUZVggY2xhc3NlcyB3aXRoaW4gdGhlIHRpcCBhcyBhIHNlcGFyYXRlIG1hdGggbGlzdFxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKSB7XG4gICAgaWYgKHRoaXMuYXR0cmlidXRlcy5nZXQoJ2FjdGlvbnR5cGUnKSA9PT0gJ3Rvb2x0aXAnICYmIHRoaXMuY2hpbGROb2Rlc1sxXSkge1xuICAgICAgdGhpcy5jaGlsZE5vZGVzWzFdLnNldFRlWGNsYXNzKG51bGwpO1xuICAgIH1cbiAgICBsZXQgc2VsZWN0ZWQgPSB0aGlzLnNlbGVjdGVkO1xuICAgIHByZXYgPSBzZWxlY3RlZC5zZXRUZVhjbGFzcyhwcmV2KTtcbiAgICB0aGlzLnVwZGF0ZVRlWGNsYXNzKHNlbGVjdGVkKTtcbiAgICByZXR1cm4gcHJldjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWxlY3QgdGhlIG5leHQgY2hpbGQgZm9yIGEgdG9nZ2xlIGFjdGlvblxuICAgKi9cbiAgcHVibGljIG5leHRUb2dnbGVTZWxlY3Rpb24oKSB7XG4gICAgbGV0IHNlbGVjdGlvbiA9IE1hdGgubWF4KDEsICh0aGlzLmF0dHJpYnV0ZXMuZ2V0KCdzZWxlY3Rpb24nKSBhcyBudW1iZXIpICsgMSk7XG4gICAgaWYgKHNlbGVjdGlvbiA+IHRoaXMuY2hpbGROb2Rlcy5sZW5ndGgpIHtcbiAgICAgIHNlbGVjdGlvbiA9IDE7XG4gICAgfVxuICAgIHRoaXMuYXR0cmlidXRlcy5zZXQoJ3NlbGVjdGlvbicsIHNlbGVjdGlvbik7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdtYWN0aW9uIHdyYXBwZXIgZm9yIHRoZSBNbWxNYWN0aW9uIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk1hY3Rpb25NaXhpbn0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21hY3Rpb24uanMnO1xuaW1wb3J0IHtBY3Rpb25EZWZ9IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tYWN0aW9uLmpzJztcbmltcG9ydCB7RXZlbnRIYW5kbGVyLCBUb29sdGlwRGF0YX0gZnJvbSAnLi4vLi4vY29tbW9uL1dyYXBwZXJzL21hY3Rpb24uanMnO1xuaW1wb3J0IHtNbWxNYWN0aW9ufSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvbWFjdGlvbi5qcyc7XG5pbXBvcnQge1RleHROb2RlLCBBYnN0cmFjdE1tbE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7U3R5bGVMaXN0fSBmcm9tICcuLi8uLi8uLi91dGlsL1N0eWxlTGlzdC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIFNWR21hY3Rpb24gd3JhcHBlciBmb3IgdGhlIE1tbE1hY3Rpb24gb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHbWFjdGlvbjxOLCBULCBEPiBleHRlbmRzXG5Db21tb25NYWN0aW9uTWl4aW48U1ZHV3JhcHBlcjxhbnksIGFueSwgYW55PiwgU1ZHQ29uc3RydWN0b3I8YW55LCBhbnksIGFueT4+KFNWR1dyYXBwZXIpIHtcblxuICAvKipcbiAgICogVGhlIG1hY3Rpb24gd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sTWFjdGlvbi5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0eWxlczogU3R5bGVMaXN0ID0ge1xuICAgICdbamF4PVwiU1ZHXCJdIG1qeC10b29sJzoge1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIHdpZHRoOiAwLCBoZWlnaHQ6IDBcbiAgICB9LFxuICAgICdbamF4PVwiU1ZHXCJdIG1qeC10b29sID4gbWp4LXRpcCc6IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAwLCBsZWZ0OiAwXG4gICAgfSxcbiAgICAnbWp4LXRvb2wgPiBtangtdGlwJzoge1xuICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICBwYWRkaW5nOiAnLjJlbScsXG4gICAgICBib3JkZXI6ICcxcHggc29saWQgIzg4OCcsXG4gICAgICAnZm9udC1zaXplJzogJzcwJScsXG4gICAgICAnYmFja2dyb3VuZC1jb2xvcic6ICcjRjhGOEY4JyxcbiAgICAgIGNvbG9yOiAnYmxhY2snLFxuICAgICAgJ2JveC1zaGFkb3cnOiAnMnB4IDJweCA1cHggI0FBQUFBQSdcbiAgICB9LFxuICAgICdnW2RhdGEtbW1sLW5vZGU9XCJtYWN0aW9uXCJdW2RhdGEtdG9nZ2xlXSc6IHtcbiAgICAgIGN1cnNvcjogJ3BvaW50ZXInXG4gICAgfSxcbiAgICAnbWp4LXN0YXR1cyc6IHtcbiAgICAgIGRpc3BsYXk6ICdibG9jaycsXG4gICAgICBwb3NpdGlvbjogJ2ZpeGVkJyxcbiAgICAgIGxlZnQ6ICcxZW0nLFxuICAgICAgYm90dG9tOiAnMWVtJyxcbiAgICAgICdtaW4td2lkdGgnOiAnMjUlJyxcbiAgICAgIHBhZGRpbmc6ICcuMmVtIC40ZW0nLFxuICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICM4ODgnLFxuICAgICAgJ2ZvbnQtc2l6ZSc6ICc5MCUnLFxuICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAnI0Y4RjhGOCcsXG4gICAgICBjb2xvcjogJ2JsYWNrJ1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogVGhlIHZhbGlkIGFjdGlvbiB0eXBlcyBhbmQgdGhlaXIgaGFuZGxlcnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYWN0aW9ucyA9IG5ldyBNYXAoW1xuICAgIFsndG9nZ2xlJywgWyhub2RlLCBfZGF0YSkgPT4ge1xuICAgICAgLy9cbiAgICAgIC8vIE1hcmsgd2hpY2ggY2hpbGQgaXMgc2VsZWN0ZWRcbiAgICAgIC8vXG4gICAgICBub2RlLmFkYXB0b3Iuc2V0QXR0cmlidXRlKG5vZGUuZWxlbWVudCwgJ2RhdGEtdG9nZ2xlJywgbm9kZS5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdzZWxlY3Rpb24nKSBhcyBzdHJpbmcpO1xuICAgICAgLy9cbiAgICAgIC8vIENhY2hlIHRoZSBkYXRhIG5lZWRlZCB0byBzZWxlY3QgYW5vdGhlciBub2RlXG4gICAgICAvL1xuICAgICAgY29uc3QgbWF0aCA9IG5vZGUuZmFjdG9yeS5qYXgubWF0aDtcbiAgICAgIGNvbnN0IGRvY3VtZW50ID0gbm9kZS5mYWN0b3J5LmpheC5kb2N1bWVudDtcbiAgICAgIGNvbnN0IG1tbCA9IG5vZGUubm9kZSBhcyBNbWxNYWN0aW9uO1xuICAgICAgLy9cbiAgICAgIC8vIEFkZCBhIGNsaWNrIGhhbmRsZXIgdGhhdCBjaGFuZ2VzIHRoZSBzZWxlY3Rpb24gYW5kIHJlcmVuZGVycyB0aGUgZXhwcmVzc2lvblxuICAgICAgLy9cbiAgICAgIG5vZGUuc2V0RXZlbnRIYW5kbGVyKCdjbGljaycsIChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgaWYgKCFtYXRoLmVuZC5ub2RlKSB7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiB0aGUgTWF0aEl0ZW0gd2FzIGNyZWF0ZWQgYnkgaGFuZCwgaXQgbWlnaHQgbm90IGhhdmUgYSBub2RlXG4gICAgICAgICAgLy8gdGVsbGluZyBpdCB3aGVyZSB0byByZXBsYWNlIHRoZSBleGlzdGluZyBtYXRoLCBzbyBzZXQgaXQuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBtYXRoLnN0YXJ0Lm5vZGUgPSBtYXRoLmVuZC5ub2RlID0gbWF0aC50eXBlc2V0Um9vdDtcbiAgICAgICAgICBtYXRoLnN0YXJ0Lm4gPSBtYXRoLmVuZC5uID0gMDtcbiAgICAgICAgfVxuICAgICAgICBtbWwubmV4dFRvZ2dsZVNlbGVjdGlvbigpO1xuICAgICAgICBtYXRoLnJlcmVuZGVyKGRvY3VtZW50KTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICB9KTtcbiAgICB9LCB7fV1dLFxuXG4gICAgWyd0b29sdGlwJywgWyhub2RlLCBkYXRhKSA9PiB7XG4gICAgICBjb25zdCB0aXAgPSBub2RlLmNoaWxkTm9kZXNbMV07XG4gICAgICBpZiAoIXRpcCkgcmV0dXJuO1xuICAgICAgY29uc3QgcmVjdCA9IG5vZGUuZmlyc3RDaGlsZCgpO1xuICAgICAgaWYgKHRpcC5ub2RlLmlzS2luZCgnbXRleHQnKSkge1xuICAgICAgICAvL1xuICAgICAgICAvLyBUZXh0IHRvb2x0aXBzIGFyZSBoYW5kbGVkIHRocm91Z2ggdGl0bGUgYXR0cmlidXRlc1xuICAgICAgICAvL1xuICAgICAgICBjb25zdCB0ZXh0ID0gKHRpcC5ub2RlIGFzIFRleHROb2RlKS5nZXRUZXh0KCk7XG4gICAgICAgIG5vZGUuYWRhcHRvci5pbnNlcnQobm9kZS5zdmcoJ3RpdGxlJywge30sIFtub2RlLnRleHQodGV4dCldKSwgcmVjdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvL1xuICAgICAgICAvLyBNYXRoIHRvb2x0aXBzIGFyZSBoYW5kbGVkIHRocm91Z2ggaGlkZGVuIG5vZGVzIGFuZCBldmVudCBoYW5kbGVyc1xuICAgICAgICAvL1xuICAgICAgICBjb25zdCBhZGFwdG9yID0gbm9kZS5hZGFwdG9yO1xuICAgICAgICBjb25zdCBjb250YWluZXIgPSBub2RlLmpheC5jb250YWluZXI7XG4gICAgICAgIGNvbnN0IG1hdGggPSAobm9kZS5ub2RlIGFzIEFic3RyYWN0TW1sTm9kZSkuZmFjdG9yeS5jcmVhdGUoJ21hdGgnLCB7fSwgW25vZGUuY2hpbGROb2Rlc1sxXS5ub2RlXSk7XG4gICAgICAgIGNvbnN0IHRvb2wgPSBub2RlLmh0bWwoJ21qeC10b29sJywge30sIFtub2RlLmh0bWwoJ21qeC10aXAnKV0pO1xuICAgICAgICBjb25zdCBoaWRkZW4gPSBhZGFwdG9yLmFwcGVuZChyZWN0LCBub2RlLnN2ZygnZm9yZWlnbk9iamVjdCcsIHtzdHlsZToge2Rpc3BsYXk6ICdub25lJ319LCBbdG9vbF0pKTtcbiAgICAgICAgbm9kZS5qYXgucHJvY2Vzc01hdGgobWF0aCwgYWRhcHRvci5maXJzdENoaWxkKHRvb2wpKTtcbiAgICAgICAgbm9kZS5jaGlsZE5vZGVzWzFdLm5vZGUucGFyZW50ID0gbm9kZS5ub2RlO1xuICAgICAgICAvL1xuICAgICAgICAvLyBTZXQgdXAgdGhlIGV2ZW50IGhhbmRsZXJzIHRvIGRpc3BsYXkgYW5kIHJlbW92ZSB0aGUgdG9vbHRpcFxuICAgICAgICAvL1xuICAgICAgICBub2RlLnNldEV2ZW50SGFuZGxlcignbW91c2VvdmVyJywgKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICAgIGRhdGEuc3RvcFRpbWVycyhub2RlLCBkYXRhKTtcbiAgICAgICAgICBkYXRhLmhvdmVyVGltZXIuc2V0KG5vZGUsIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgYWRhcHRvci5zZXRTdHlsZSh0b29sLCAnbGVmdCcsICcwJyk7XG4gICAgICAgICAgICBhZGFwdG9yLnNldFN0eWxlKHRvb2wsICd0b3AnLCAnMCcpO1xuICAgICAgICAgICAgYWRhcHRvci5hcHBlbmQoY29udGFpbmVyLCB0b29sKTtcbiAgICAgICAgICAgIGNvbnN0IHRib3ggPSBhZGFwdG9yLm5vZGVCQm94KHRvb2wpO1xuICAgICAgICAgICAgY29uc3QgbmJveCA9IGFkYXB0b3Iubm9kZUJCb3gobm9kZS5lbGVtZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGR4ID0gKG5ib3gucmlnaHQgLSB0Ym94LmxlZnQpIC8gbm9kZS5tZXRyaWNzLmVtICsgbm9kZS5keDtcbiAgICAgICAgICAgIGNvbnN0IGR5ID0gKG5ib3guYm90dG9tIC0gdGJveC5ib3R0b20pIC8gbm9kZS5tZXRyaWNzLmVtICsgbm9kZS5keTtcbiAgICAgICAgICAgIGFkYXB0b3Iuc2V0U3R5bGUodG9vbCwgJ2xlZnQnLCBub2RlLnB4KGR4KSk7XG4gICAgICAgICAgICBhZGFwdG9yLnNldFN0eWxlKHRvb2wsICd0b3AnLCBub2RlLnB4KGR5KSk7XG4gICAgICAgICAgfSwgZGF0YS5wb3N0RGVsYXkpKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5vZGUuc2V0RXZlbnRIYW5kbGVyKCdtb3VzZW91dCcsICAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgZGF0YS5zdG9wVGltZXJzKG5vZGUsIGRhdGEpO1xuICAgICAgICAgIGNvbnN0IHRpbWVyID0gc2V0VGltZW91dCgoKSA9PiBhZGFwdG9yLmFwcGVuZChoaWRkZW4sIHRvb2wpLCBkYXRhLmNsZWFyRGVsYXkpO1xuICAgICAgICAgIGRhdGEuY2xlYXJUaW1lci5zZXQobm9kZSwgdGltZXIpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBUb29sdGlwRGF0YV1dLFxuXG4gICAgWydzdGF0dXNsaW5lJywgWyhub2RlLCBkYXRhKSA9PiB7XG4gICAgICBjb25zdCB0aXAgPSBub2RlLmNoaWxkTm9kZXNbMV07XG4gICAgICBpZiAoIXRpcCkgcmV0dXJuO1xuICAgICAgaWYgKHRpcC5ub2RlLmlzS2luZCgnbXRleHQnKSkge1xuICAgICAgICBjb25zdCBhZGFwdG9yID0gbm9kZS5hZGFwdG9yO1xuICAgICAgICBjb25zdCB0ZXh0ID0gKHRpcC5ub2RlIGFzIFRleHROb2RlKS5nZXRUZXh0KCk7XG4gICAgICAgIGFkYXB0b3Iuc2V0QXR0cmlidXRlKG5vZGUuZWxlbWVudCwgJ2RhdGEtc3RhdHVzbGluZScsIHRleHQpO1xuICAgICAgICAvL1xuICAgICAgICAvLyBTZXQgdXAgZXZlbnQgaGFuZGxlcnMgdG8gY2hhbmdlIHRoZSBzdGF0dXMgd2luZG93XG4gICAgICAgIC8vXG4gICAgICAgIG5vZGUuc2V0RXZlbnRIYW5kbGVyKCdtb3VzZW92ZXInLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEuc3RhdHVzID09PSBudWxsKSB7XG4gICAgICAgICAgICBjb25zdCBib2R5ID0gYWRhcHRvci5ib2R5KGFkYXB0b3IuZG9jdW1lbnQpO1xuICAgICAgICAgICAgZGF0YS5zdGF0dXMgPSBhZGFwdG9yLmFwcGVuZChib2R5LCBub2RlLmh0bWwoJ21qeC1zdGF0dXMnLCB7fSwgW25vZGUudGV4dCh0ZXh0KV0pKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBub2RlLnNldEV2ZW50SGFuZGxlcignbW91c2VvdXQnLCAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgICAgaWYgKGRhdGEuc3RhdHVzKSB7XG4gICAgICAgICAgICBhZGFwdG9yLnJlbW92ZShkYXRhLnN0YXR1cyk7XG4gICAgICAgICAgICBkYXRhLnN0YXR1cyA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCB7XG4gICAgICBzdGF0dXM6IG51bGwgIC8vIGNhY2hlZCBzdGF0dXMgbGluZVxuICAgIH1dXVxuXG4gIF0gYXMgQWN0aW9uRGVmPFNWR21hY3Rpb248YW55LCBhbnksIGFueT4+W10pO1xuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBjb25zdCBzdmcgPSB0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpO1xuICAgIGNvbnN0IGNoaWxkID0gdGhpcy5zZWxlY3RlZDtcbiAgICBjb25zdCB7aCwgZCwgd30gPSBjaGlsZC5nZXRPdXRlckJCb3goKTtcbiAgICB0aGlzLmFkYXB0b3IuYXBwZW5kKHRoaXMuZWxlbWVudCwgdGhpcy5zdmcoJ3JlY3QnLCB7XG4gICAgICB3aWR0aDogdGhpcy5maXhlZCh3KSwgaGVpZ2h0OiB0aGlzLmZpeGVkKGggKyBkKSwgeTogdGhpcy5maXhlZCgtZCksXG4gICAgICBmaWxsOiAnbm9uZScsICdwb2ludGVyLWV2ZW50cyc6ICdhbGwnXG4gICAgfSkpO1xuICAgIGNoaWxkLnRvU1ZHKHN2Zyk7XG4gICAgY29uc3QgYmJveCA9IGNoaWxkLmdldE91dGVyQkJveCgpO1xuICAgIGlmIChjaGlsZC5lbGVtZW50KSB7XG4gICAgICBjaGlsZC5wbGFjZShiYm94LkwgKiBiYm94LnJzY2FsZSwgMCk7XG4gICAgfVxuICAgIHRoaXMuYWN0aW9uKHRoaXMsIHRoaXMuZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFuIGV2ZW50IGhhbmRsZXIgdG8gdGhlIG91dHB1dCBmb3IgdGhpcyBtYWN0aW9uXG4gICAqL1xuICBwdWJsaWMgc2V0RXZlbnRIYW5kbGVyKHR5cGU6IHN0cmluZywgaGFuZGxlcjogRXZlbnRIYW5kbGVyKSB7XG4gICAgKHRoaXMuZWxlbWVudCBhcyBhbnkpLmFkZEV2ZW50TGlzdGVuZXIodHlwZSwgaGFuZGxlcik7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHV0aWxpdGllcyBmb3Igbm90YXRpb25zIGZvciBtZW5jbG9zZSBlbGVtZW50c1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyfSBmcm9tICcuL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25NZW5jbG9zZX0gZnJvbSAnLi9XcmFwcGVycy9tZW5jbG9zZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuZXhwb3J0IGNvbnN0IEFSUk9XWCA9IDQsIEFSUk9XRFggPSAxLCBBUlJPV1kgPSAyOyAgLy8gZGVmYXVsdCByZWxhdGl2ZSBhcnJvd2hlYWQgdmFsdWVzXG5cbmV4cG9ydCBjb25zdCBUSElDS05FU1MgPSAuMDY3OyAgLy8gZGVmYXVsdCBydWxlIHRoaWNrbmVzc1xuZXhwb3J0IGNvbnN0IFBBRERJTkcgPSAuMjsgICAgICAvLyBkZWZhdWx0IHBhZGRpbmdcblxuZXhwb3J0IGNvbnN0IFNPTElEID0gVEhJQ0tORVNTICsgJ2VtIHNvbGlkJzsgIC8vIGEgc29saWQgYm9yZGVyXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIENvbW1vbk1lbmNsb3NlXG4gKi9cbmV4cG9ydCB0eXBlIE1lbmNsb3NlID0gQ29tbW9uTWVuY2xvc2U8YW55LCBhbnksIGFueT47XG5cbi8qKlxuICogVG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IHBhZGRpbmcgZGF0YVxuICovXG5leHBvcnQgdHlwZSBQYWRkaW5nRGF0YSA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG4vKipcbiAqIFRoZSBmdW5jdGlvbnMgdXNlZCBmb3Igbm90YXRpb24gZGVmaW5pdGlvbnNcbiAqXG4gKiBAdGVtcGxhcmUgTiAgVGhlIERPTSBub2RlIGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIFJlbmRlcmVyPFcgZXh0ZW5kcyBBbnlXcmFwcGVyLCBOPiA9IChub2RlOiBXLCBjaGlsZDogTikgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIEJCb3hFeHRlbmRlcjxXIGV4dGVuZHMgQW55V3JhcHBlcj4gPSAobm9kZTogVykgPT4gUGFkZGluZ0RhdGE7XG5leHBvcnQgdHlwZSBCQm94Qm9yZGVyPFcgZXh0ZW5kcyBBbnlXcmFwcGVyPiA9IChub2RlOiBXKSA9PiBQYWRkaW5nRGF0YTtcbmV4cG9ydCB0eXBlIEluaXRpYWxpemVyPFcgZXh0ZW5kcyBBbnlXcmFwcGVyPiA9IChub2RlOiBXKSA9PiB2b2lkO1xuXG4vKipcbiAqIFRoZSBkZWZpbml0aW9uIG9mIGEgbm90YXRpb25cbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1lbmNsb3NlIHdyYXBwZXIgY2xhc3NcbiAqIEB0ZW1wbGFyZSBOICBUaGUgRE9NIG5vZGUgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgTm90YXRpb25EZWY8VyBleHRlbmRzIEFueVdyYXBwZXIsIE4+ID0ge1xuICByZW5kZXJlcjogUmVuZGVyZXI8VywgTj47ICAvLyByZW5kZXJzIHRoZSBET00gbm9kZXMgZm9yIHRoZSBub3RhdGlvblxuICBiYm94OiBCQm94RXh0ZW5kZXI8Vz47ICAgICAvLyBnaXZlcyB0aGUgb2Zmc2V0cyB0byB0aGUgY2hpbGQgYm91bmRpbmcgYm94OiBbdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0XVxuICBib3JkZXI/OiBCQm94Qm9yZGVyPFc+OyAgICAvLyBnaXZlcyB0aGUgYW1vdW50IG9mIHRoZSBiYm94IG9mZnNldCB0aGF0IGlzIGR1ZSB0byBib3JkZXJzIG9uIHRoZSBjaGlsZFxuICByZW5kZXJDaGlsZD86IGJvb2xlYW47ICAgICAvLyB0cnVlIGlmIHRoZSBub3RhdGlvbiBpcyB1c2VkIHRvIHJlbmRlciB0aGUgY2hpbGQgZGlyZWN0bHkgKGUuZy4sIHJhZGljYWwpXG4gIGluaXQ/OiBJbml0aWFsaXplcjxXPjsgICAgIC8vIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBkdXJpbmcgd3JhcHBlciBjb25zdHJ1Y3Rpb25cbiAgcmVtb3ZlPzogc3RyaW5nOyAgICAgICAgICAgLy8gbGlzdCBvZiBub3RhdGlvbnMgdGhhdCBhcmUgc3VwcHJlc3NlZCBieSB0aGlzIG9uZVxufTtcblxuLyoqXG4gKiBGb3IgZGVmaW5pbmcgbm90YXRpb24gbWFwc1xuICpcbiAqIEB0ZW1wbGF0ZSBXICBUaGUgbWVuY2xvc2Ugd3JhcHBlciBjbGFzc1xuICogQHRlbXBsYXJlIE4gIFRoZSBET00gbm9kZSBjbGFzc1xuICovXG5leHBvcnQgdHlwZSBEZWZQYWlyPFcgZXh0ZW5kcyBBbnlXcmFwcGVyLCBOPiA9IFtzdHJpbmcsIE5vdGF0aW9uRGVmPFcsIE4+XTtcbmV4cG9ydCB0eXBlIERlZkxpc3Q8VyBleHRlbmRzIEFueVdyYXBwZXIsIE4+ID0gTWFwPHN0cmluZywgTm90YXRpb25EZWY8VywgTj4+O1xuXG5leHBvcnQgdHlwZSBEZWZQYWlyRjxULCBXIGV4dGVuZHMgQW55V3JhcHBlciwgTj4gPSAobmFtZTogVCkgPT4gRGVmUGFpcjxXLCBOPjtcblxuLyoqXG4gKiBUaGUgbGlzdCBvZiBub3RhdGlvbnMgZm9yIGFuIG1lbmNsb3NlIGVsZW1lbnRcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1lbmNsb3NlIHdyYXBwZXIgY2xhc3NcbiAqIEB0ZW1wbGFyZSBOICBUaGUgRE9NIG5vZGUgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgTGlzdDxXIGV4dGVuZHMgQW55V3JhcHBlciwgTj4gPSB7W25vdGF0aW9uOiBzdHJpbmddOiBOb3RhdGlvbkRlZjxXLCBOPn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBUaGUgbmFtZXMgYW5kIGluZGljZXMgb2Ygc2lkZXMgZm9yIGJvcmRlcnMsIHBhZGRpbmcsIGV0Yy5cbiAqL1xuZXhwb3J0IGNvbnN0IHNpZGVJbmRleCA9IHt0b3A6IDAsIHJpZ2h0OiAxLCBib3R0b206IDIsIGxlZnQ6IDN9O1xuZXhwb3J0IHR5cGUgU2lkZSA9IGtleW9mIHR5cGVvZiBzaWRlSW5kZXg7XG5leHBvcnQgY29uc3Qgc2lkZU5hbWVzID0gT2JqZWN0LmtleXMoc2lkZUluZGV4KSBhcyBTaWRlW107XG5cbi8qKlxuICogQ29tbW9uIEJCb3ggYW5kIEJvcmRlciBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IGZ1bGxCQm94ID0gKChub2RlKSA9PiBuZXcgQXJyYXkoNCkuZmlsbChub2RlLnRoaWNrbmVzcyArIG5vZGUucGFkZGluZykpIGFzIEJCb3hFeHRlbmRlcjxNZW5jbG9zZT47XG5leHBvcnQgY29uc3QgZnVsbFBhZGRpbmcgPSAoKG5vZGUpID0+IG5ldyBBcnJheSg0KS5maWxsKG5vZGUucGFkZGluZykpIGFzIEJCb3hFeHRlbmRlcjxNZW5jbG9zZT47XG5leHBvcnQgY29uc3QgZnVsbEJvcmRlciA9ICgobm9kZSkgPT4gbmV3IEFycmF5KDQpLmZpbGwobm9kZS50aGlja25lc3MpKSBhcyBCQm94Qm9yZGVyPE1lbmNsb3NlPjtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIFRoZSBsZW5ndGggb2YgYW4gYXJyb3doZWFkXG4gKi9cbmV4cG9ydCBjb25zdCBhcnJvd0hlYWQgPSAobm9kZTogTWVuY2xvc2UpID0+IHtcbiAgcmV0dXJuIE1hdGgubWF4KG5vZGUucGFkZGluZywgbm9kZS50aGlja25lc3MgKiAobm9kZS5hcnJvd2hlYWQueCArIG5vZGUuYXJyb3doZWFkLmR4ICsgMSkpO1xufTtcblxuLyoqXG4gKiBBZGp1c3Qgc2hvcnQgYmJveCBmb3IgdGFsbCBhcnJvdyBoZWFkc1xuICovXG5leHBvcnQgY29uc3QgYXJyb3dCQm94SEQgPSAobm9kZTogTWVuY2xvc2UsIFRSQkw6IFBhZGRpbmdEYXRhKSA9PiB7XG4gIGlmIChub2RlLmNoaWxkTm9kZXNbMF0pIHtcbiAgICBjb25zdCB7aCwgZH0gPSBub2RlLmNoaWxkTm9kZXNbMF0uZ2V0QkJveCgpO1xuICAgIFRSQkxbMF0gPSBUUkJMWzJdID0gTWF0aC5tYXgoMCwgbm9kZS50aGlja25lc3MgKiBub2RlLmFycm93aGVhZC55IC0gKGggKyBkKSAvIDIpO1xuICB9XG4gIHJldHVybiBUUkJMO1xufTtcblxuLyoqXG4gKiBBZGp1c3QgdGhpbiBiYm94IGZvciB3aWRlIGFycm93IGhlYWRzXG4gKi9cbmV4cG9ydCBjb25zdCBhcnJvd0JCb3hXID0gKG5vZGU6IE1lbmNsb3NlLCBUUkJMOiBQYWRkaW5nRGF0YSkgPT4ge1xuICBpZiAobm9kZS5jaGlsZE5vZGVzWzBdKSB7XG4gICAgY29uc3Qge3d9ID0gbm9kZS5jaGlsZE5vZGVzWzBdLmdldEJCb3goKTtcbiAgICBUUkJMWzFdID0gVFJCTFszXSA9IE1hdGgubWF4KDAsIG5vZGUudGhpY2tuZXNzICogbm9kZS5hcnJvd2hlYWQueSAtIHcgLyAyKTtcbiAgfVxuICByZXR1cm4gVFJCTDtcbn07XG5cbi8qKlxuICogVGhlIGRhdGEgZm9yIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGFycm93IG5vdGF0aW9uc1xuICogICBbYW5nbGUsIGRvdWJsZSwgaXNWZXJ0aWNhbCwgcmVtb3ZlXVxuICovXG5leHBvcnQgY29uc3QgYXJyb3dEZWYgPSB7XG4gIHVwOiAgICAgICAgWy1NYXRoLlBJIC8gMiwgZmFsc2UsIHRydWUsICAndmVydGljYWxzdHJpa2UnXSxcbiAgZG93bjogICAgICBbIE1hdGguUEkgLyAyLCBmYWxzZSwgdHJ1ZSwgICd2ZXJ0aWNha3N0cmlrZSddLFxuICByaWdodDogICAgIFsgMCwgICAgICAgICAgIGZhbHNlLCBmYWxzZSwgJ2hvcml6b250YWxzdHJpa2UnXSxcbiAgbGVmdDogICAgICBbIE1hdGguUEksICAgICBmYWxzZSwgZmFsc2UsICdob3Jpem9udGFsc3RyaWtlJ10sXG4gIHVwZG93bjogICAgWyBNYXRoLlBJIC8gMiwgdHJ1ZSwgIHRydWUsICAndmVydGljYWxzdHJpa2UgdXBhcnJvdyBkb3duYXJyb3cnXSxcbiAgbGVmdHJpZ2h0OiBbIDAsICAgICAgICAgICB0cnVlLCAgZmFsc2UsICdob3Jpem9udGFsc3RyaWtlIGxlZnRhcnJvdyByaWdodGFycm93J11cbn0gYXMge1tuYW1lOiBzdHJpbmddOiBbbnVtYmVyLCBib29sZWFuLCBib29sZWFuLCBzdHJpbmddfTtcblxuLyoqXG4gKiBUaGUgZGF0YSBmb3IgZGlhZ29uYWwgYXJyb3cgbm90YXRpb25zXG4gKiAgIFtjLCBwaSwgZG91YmxlLCByZW1vdmVdXG4gKi9cbmV4cG9ydCBjb25zdCBkaWFnb25hbEFycm93RGVmID0ge1xuICB1cGRpYWdvbmFsOiAgICAgICAgIFstMSwgMCwgICAgICAgZmFsc2UsICd1cGRpYWdvbmFsc3RyaWtlIG5vcnRoZWFzdGFycm93J10sXG4gIG5vcnRoZWFzdDogICAgICAgICAgWy0xLCAwLCAgICAgICBmYWxzZSwgJ3VwZGlhZ29uYWxzdHJpa2UgdXBkaWFnb25hbGFycm93J10sXG4gIHNvdXRoZWFzdDogICAgICAgICAgWyAxLCAwLCAgICAgICBmYWxzZSwgJ2Rvd25kaWFnb25hbHN0cmlrZSddLFxuICBub3J0aHdlc3Q6ICAgICAgICAgIFsgMSwgTWF0aC5QSSwgZmFsc2UsICdkb3duZGlhZ29uYWxzdHJpa2UnXSxcbiAgc291dGh3ZXN0OiAgICAgICAgICBbLTEsIE1hdGguUEksIGZhbHNlLCAndXBkaWFnb25hbHN0cmlrZSddLFxuICBub3J0aGVhc3Rzb3V0aHdlc3Q6IFstMSwgMCwgICAgICAgdHJ1ZSwgICd1cGRpYWdvbmFsc3RyaWtlIG5vcnRoZWFzdGFycm93IHVwZGlhZ29uYWxhcnJvdyBzb3V0aHdlc3RhcnJvdyddLFxuICBub3J0aHdlc3Rzb3V0aGVhc3Q6IFsgMSwgMCwgICAgICAgdHJ1ZSwgICdkb3duZGlhZ29uYWxzdHJpa2Ugbm9ydGh3ZXN0YXJyb3cgc291dGhlYXN0YXJyb3cnXVxufSBhcyB7W25hbWU6IHN0cmluZ106IFtudW1iZXIsIG51bWJlciwgYm9vbGVhbiwgc3RyaW5nXX07XG5cbi8qKlxuICogVGhlIEJCb3ggZnVuY3Rpb25zIGZvciBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBhcnJvd3NcbiAqL1xuZXhwb3J0IGNvbnN0IGFycm93QkJveCA9IHtcbiAgdXA6ICAgIChub2RlKSA9PiBhcnJvd0JCb3hXKG5vZGUsIFthcnJvd0hlYWQobm9kZSksIDAsIG5vZGUucGFkZGluZywgMF0pLFxuICBkb3duOiAgKG5vZGUpID0+IGFycm93QkJveFcobm9kZSwgW25vZGUucGFkZGluZywgMCwgYXJyb3dIZWFkKG5vZGUpLCAwXSksXG4gIHJpZ2h0OiAobm9kZSkgPT4gYXJyb3dCQm94SEQobm9kZSwgWzAsIGFycm93SGVhZChub2RlKSwgMCwgbm9kZS5wYWRkaW5nXSksXG4gIGxlZnQ6ICAobm9kZSkgPT4gYXJyb3dCQm94SEQobm9kZSwgWzAsIG5vZGUucGFkZGluZywgMCwgYXJyb3dIZWFkKG5vZGUpXSksXG4gIHVwZG93bjogICAgKG5vZGUpID0+IGFycm93QkJveFcobm9kZSwgW2Fycm93SGVhZChub2RlKSwgMCwgYXJyb3dIZWFkKG5vZGUpLCAwXSksXG4gIGxlZnRyaWdodDogKG5vZGUpID0+IGFycm93QkJveEhEKG5vZGUsIFswLCBhcnJvd0hlYWQobm9kZSksIDAsIGFycm93SGVhZChub2RlKV0pXG59IGFzIHtbbmFtZTogc3RyaW5nXTogQkJveEV4dGVuZGVyPE1lbmNsb3NlPn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBAcGFyYW0ge1JlbmRlcmVyfSByZW5kZXIgICAgIFRoZSBmdW5jdGlvbiBmb3IgYWRkaW5nIHRoZSBib3JkZXIgdG8gdGhlIG5vZGVcbiAqIEByZXR1cm4ge3N0cmluZyA9PiBEZWZQYWlyfSAgVGhlIGZ1bmN0aW9uIHJldHVyaW5nbiB0aGUgbm90YXRpb24gZGVmaW5pdGlvblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG5vdGF0aW9uIGhhdmluZyBhIGxpbmUgb24gdGhlIGdpdmVuIHNpZGVcbiAqL1xuZXhwb3J0IGNvbnN0IENvbW1vbkJvcmRlciA9IGZ1bmN0aW9uPFcgZXh0ZW5kcyBNZW5jbG9zZSwgTj4ocmVuZGVyOiBSZW5kZXJlcjxXLCBOPik6IERlZlBhaXJGPFNpZGUsIFcsIE4+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzaWRlICAgVGhlIHNpZGUgb24gd2hpY2ggYSBib3JkZXIgc2hvdWxkIGFwcGVhclxuICAgKiBAcmV0dXJuIHtEZWZQYWlyfSAgICAgIFRoZSBub3RhdGlvbiBkZWZpbml0aW9uIGZvciB0aGUgbm90YXRpb24gaGF2aW5nIGEgbGluZSBvbiB0aGUgZ2l2ZW4gc2lkZVxuICAgKi9cbiAgcmV0dXJuIChzaWRlOiBTaWRlKSA9PiB7XG4gICAgY29uc3QgaSA9IHNpZGVJbmRleFtzaWRlXTtcbiAgICByZXR1cm4gW3NpZGUsIHtcbiAgICAgIC8vXG4gICAgICAvLyBBZGQgdGhlIGJvcmRlciB0byB0aGUgbWFpbiBjaGlsZCBvYmplY3RcbiAgICAgIC8vXG4gICAgICByZW5kZXJlcjogcmVuZGVyLFxuICAgICAgLy9cbiAgICAgIC8vIEluZGljYXRlIHRoZSBleHRyYSBzcGFjZSBvbiB0aGUgZ2l2ZW4gc2lkZVxuICAgICAgLy9cbiAgICAgIGJib3g6IChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGJib3ggPSBbMCwgMCwgMCwgMF0gYXMgUGFkZGluZ0RhdGE7XG4gICAgICAgIGJib3hbaV0gPSBub2RlLnRoaWNrbmVzcyArIG5vZGUucGFkZGluZztcbiAgICAgICAgcmV0dXJuIGJib3g7XG4gICAgICB9LFxuICAgICAgLy9cbiAgICAgIC8vIEluZGljYXRlIHRoZSBib3JkZXIgb24gdGhlIGdpdmVuIHNpZGVcbiAgICAgIC8vXG4gICAgICBib3JkZXI6IChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGJib3ggPSBbMCwgMCwgMCwgMF0gYXMgUGFkZGluZ0RhdGE7XG4gICAgICAgIGJib3hbaV0gPSBub2RlLnRoaWNrbmVzcztcbiAgICAgICAgcmV0dXJuIGJib3g7XG4gICAgICB9XG4gICAgfV07XG4gIH07XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7UmVuZGVyZXJ9IHJlbmRlciAgICAgICAgICAgICAgICAgICAgVGhlIGZ1bmN0aW9uIGZvciBhZGRpbmcgdGhlIGJvcmRlcnMgdG8gdGhlIG5vZGVcbiAqIEByZXR1cm4geyhzcmluZywgU2lkZSwgU2lkZSkgPT4gRGVmUGFpcn0gICAgVGhlIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbm90YXRpb24gZGVmaW5pdGlvblxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIG5vdGF0aW9uIGhhdmluZyBsaW5lcyBvbiB0d28gc2lkZXNcbiAqL1xuZXhwb3J0IGNvbnN0IENvbW1vbkJvcmRlcjIgPSBmdW5jdGlvbjxXIGV4dGVuZHMgTWVuY2xvc2UsIE4+KHJlbmRlcjogUmVuZGVyZXI8VywgTj4pOlxuKG5hbWU6IHN0cmluZywgc2lkZTE6IFNpZGUsIHNpZGUyOiBTaWRlKSA9PiBEZWZQYWlyPFcsIE4+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgIFRoZSBuYW1lIG9mIHRoZSBub3RhdGlvbiB0byBkZWZpbmVcbiAgICogQHBhcmFtIHtTaWRlfSBzaWRlMSAgIFRoZSBmaXJzdCBzaWRlIHRvIGdldCBhIGJvcmRlclxuICAgKiBAcGFyYW0ge1NpZGV9IHNpZGUyICAgVGhlIHNlY29uZCBzaWRlIHRvIGdldCBhIGJvcmRlclxuICAgKiBAcmV0dXJuIHtEZWZQYWlyfSAgICAgICBUaGUgbm90YXRpb24gZGVmaW5pdGlvbiBmb3IgdGhlIG5vdGF0aW9uIGhhdmluZyBsaW5lcyBvbiB0d28gc2lkZXNcbiAgICovXG4gIHJldHVybiAobmFtZTogc3RyaW5nLCBzaWRlMTogU2lkZSwgc2lkZTI6IFNpZGUpID0+IHtcbiAgICBjb25zdCBpMSA9IHNpZGVJbmRleFtzaWRlMV07XG4gICAgY29uc3QgaTIgPSBzaWRlSW5kZXhbc2lkZTJdO1xuICAgIHJldHVybiBbbmFtZSwge1xuICAgICAgLy9cbiAgICAgIC8vIEFkZCB0aGUgYm9yZGVyIGFsb25nIHRoZSBnaXZlbiBzaWRlc1xuICAgICAgLy9cbiAgICAgIHJlbmRlcmVyOiByZW5kZXIsXG4gICAgICAvL1xuICAgICAgLy8gTWFyayB0aGUgZXh0cmEgc3BhY2UgYWxvbmcgdGhlIHR3byBzaWRlc1xuICAgICAgLy9cbiAgICAgIGJib3g6IChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHQgPSBub2RlLnRoaWNrbmVzcyArIG5vZGUucGFkZGluZztcbiAgICAgICAgY29uc3QgYmJveCA9IFswLCAwLCAwLCAwXSBhcyBQYWRkaW5nRGF0YTtcbiAgICAgICAgYmJveFtpMV0gPSBiYm94W2kyXSA9IHQ7XG4gICAgICAgIHJldHVybiBiYm94O1xuICAgICAgfSxcbiAgICAgIC8vXG4gICAgICAvLyBJbmRpY2F0ZSB0aGUgYm9yZGVyIG9uIHRoZSB0d28gc2lkZXNcbiAgICAgIC8vXG4gICAgICBib3JkZXI6IChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IGJib3ggPSBbMCwgMCwgMCwgMF0gYXMgUGFkZGluZ0RhdGE7XG4gICAgICAgIGJib3hbaTFdID0gYmJveFtpMl0gPSBub2RlLnRoaWNrbmVzcztcbiAgICAgICAgcmV0dXJuIGJib3g7XG4gICAgICB9LFxuICAgICAgLy9cbiAgICAgIC8vIFJlbW92ZSB0aGUgc2luZ2xlIHNpZGUgbm90YXRpb25zLCBpZiBwcmVzZW50XG4gICAgICAvL1xuICAgICAgcmVtb3ZlOiBzaWRlMSArICcgJyArIHNpZGUyXG4gICAgfV07XG4gIH07XG59O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmcgPT4gUmVuZGVyZXJ9IHJlbmRlciAgICAgIFRoZSBmdW5jdGlvbiBmb3IgYWRkaW5nIHRoZSBzdHJpa2UgdG8gdGhlIG5vZGVcbiAqIEByZXR1cm4ge3N0cmluZyA9PiBEZWZQYWlyfSAgIFRoZSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIG5vdGF0aW9uIGRlZmluaXRpb24gZm9yIHRoZSBkaWFnb25hbCBzdHJpa2VcbiAqL1xuZXhwb3J0IGNvbnN0IENvbW1vbkRpYWdvbmFsU3RyaWtlID0gZnVuY3Rpb248VyBleHRlbmRzIE1lbmNsb3NlLCBOPihyZW5kZXI6IChzbmFtZTogc3RyaW5nKSA9PiBSZW5kZXJlcjxXLCBOPik6XG5EZWZQYWlyRjxzdHJpbmcsIFcsIE4+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICBUaGUgbmFtZSBvZiB0aGUgZGlhZ29uYWwgc3RyaWtlIHRvIGRlZmluZVxuICAgKiBAcmV0dXJuIHtEZWZQYWlyfSAgICAgVGhlIG5vdGF0aW9uIGRlZmluaXRpb24gZm9yIHRoZSBkaWFnb25hbCBzdHJpa2VcbiAgICovXG4gIHJldHVybiAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgY25hbWUgPSAnbWp4LScgKyBuYW1lLmNoYXJBdCgwKSArICdzdHJpa2UnO1xuICAgIHJldHVybiBbbmFtZSArICdkaWFnb25hbHN0cmlrZScsIHtcbiAgICAgIC8vXG4gICAgICAvLyBGaW5kIHRoZSBhbmdsZSBhbmQgd2lkdGggZnJvbSB0aGUgYm91bmRpbmcgYm94IHNpemUgYW5kIGNyZWF0ZSB0aGUgZGlhZ29uYWwgbGluZVxuICAgICAgLy9cbiAgICAgIHJlbmRlcmVyOiByZW5kZXIoY25hbWUpLFxuICAgICAgLy9cbiAgICAgIC8vICBBZGQgcGFkZGluZyBhbGwgYXJvdW5kXG4gICAgICAvL1xuICAgICAgYmJveDogZnVsbEJCb3hcbiAgICB9XTtcbiAgfTtcbn07XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBAcGFyYW0ge1JlbmRlcmVyfSByZW5kZXIgICAgIFRoZSBmdW5jdGlvbiB0byBhZGQgdGhlIGFycm93IHRvIHRoZSBub2RlXG4gKiBAcmV0dXJuIHtzdHJpbmcgPT4gRGVmUGFpcn0gIFRoZSBmdW5jaXRvbiByZXR1cm5pbmcgdGhlIG5vdGF0aW9uIGRlZmluaXRpb24gZm9yIHRoZSBkaWFnb25hbCBhcnJvd1xuICovXG5leHBvcnQgY29uc3QgQ29tbW9uRGlhZ29uYWxBcnJvdyA9IGZ1bmN0aW9uPFcgZXh0ZW5kcyBNZW5jbG9zZSwgTj4ocmVuZGVyOiBSZW5kZXJlcjxXLCBOPik6IERlZlBhaXJGPHN0cmluZywgVywgTj4ge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgbmFtZSBvZiB0aGUgZGlhZ29uYWwgYXJyb3cgdG8gZGVmaW5lXG4gICAqIEByZXR1cm4ge0RlZlBhaXJ9ICAgICAgVGhlIG5vdGF0aW9uIGRlZmluaXRpb24gZm9yIHRoZSBkaWFnb25hbCBhcnJvd1xuICAgKi9cbiAgcmV0dXJuIChuYW1lOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBbYywgcGksIGRvdWJsZSwgcmVtb3ZlXSA9IGRpYWdvbmFsQXJyb3dEZWZbbmFtZV07XG4gICAgcmV0dXJuIFtuYW1lICsgJ2Fycm93Jywge1xuICAgICAgLy9cbiAgICAgIC8vIEZpbmQgdGhlIGFuZ2xlIGFuZCB3aWR0aCBmcm9tIHRoZSBib3VuZGluZyBib3ggc2l6ZSBhbmQgY3JlYXRlXG4gICAgICAvLyAgIHRoZSBhcnJvdyBmcm9tIHRoZW0gYW5kIHRoZSBvdGhlciBhcnJvdyBkYXRhXG4gICAgICAvL1xuICAgICAgcmVuZGVyZXI6IChub2RlLCBfY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3QgW2EsIFddID0gbm9kZS5hcnJvd0FXKCk7XG4gICAgICAgY29uc3QgYXJyb3cgPSBub2RlLmFycm93KFcsIGMgKiAoYSAtIHBpKSwgZG91YmxlKTtcbiAgICAgICAgcmVuZGVyKG5vZGUsIGFycm93KTtcbiAgICAgIH0sXG4gICAgICAvL1xuICAgICAgLy8gQWRkIHNwYWNlIGZvciB0aGUgYXJyb3doZWFkIGFsbCBhcm91bmRcbiAgICAgIC8vXG4gICAgICBiYm94OiAobm9kZSkgPT4ge1xuICAgICAgICBjb25zdCB7YSwgeCwgeX0gPSBub2RlLmFycm93RGF0YSgpO1xuICAgICAgICBjb25zdCBbYXgsIGF5LCBhZHhdID0gW25vZGUuYXJyb3doZWFkLngsIG5vZGUuYXJyb3doZWFkLnksIG5vZGUuYXJyb3doZWFkLmR4XTtcbiAgICAgICAgY29uc3QgW2IsIGFyXSA9IG5vZGUuZ2V0QXJnTW9kKGF4ICsgYWR4LCBheSk7XG4gICAgICAgIGNvbnN0IGR5ID0geSArIChiID4gYSA/IG5vZGUudGhpY2tuZXNzICogYXIgKiBNYXRoLnNpbihiIC0gYSkgOiAwKTtcbiAgICAgICAgY29uc3QgZHggPSB4ICsgKGIgPiBNYXRoLlBJIC8gMiAtIGEgPyBub2RlLnRoaWNrbmVzcyAqIGFyICogTWF0aC5zaW4oYiArIGEgLSBNYXRoLlBJIC8gMikgOiAwKTtcbiAgICAgICAgcmV0dXJuIFtkeSwgZHgsIGR5LCBkeF07XG4gICAgICB9LFxuICAgICAgLy9cbiAgICAgIC8vIFJlbW92ZSByZWR1bmRhbnQgbm90YXRpb25zXG4gICAgICAvL1xuICAgICAgcmVtb3ZlOiByZW1vdmVcbiAgICB9XTtcbiAgfTtcbn07XG5cbi8qKlxuICogQHBhcmFtIHtSZW5kZXJlcn0gcmVuZGVyICAgICBUaGUgZnVuY3Rpb24gdG8gYWRkIHRoZSBhcnJvdyB0byB0aGUgbm9kZVxuICogQHJldHVybiB7c3RyaW5nID0+IERlZlBhaXJ9ICBUaGUgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBub3RhdGlvbiBkZWZpbml0aW9uIGZvciB0aGUgYXJyb3dcbiAqL1xuZXhwb3J0IGNvbnN0IENvbW1vbkFycm93ID0gZnVuY3Rpb248VyBleHRlbmRzIE1lbmNsb3NlLCBOPihyZW5kZXI6IFJlbmRlcmVyPFcsIE4+KTogRGVmUGFpckY8c3RyaW5nLCBXLCBOPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIG9mIHRoZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGFycm93IHRvIGRlZmluZVxuICAgKiBAcmV0dXJuIHtEZWZQYWlyfSAgICAgIFRoZSBub3RhdGlvbiBkZWZpbml0aW9uIGZvciB0aGUgYXJyb3dcbiAgICovXG4gIHJldHVybiAobmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgW2FuZ2xlLCBkb3VibGUsIGlzVmVydGljYWwsIHJlbW92ZV0gPSBhcnJvd0RlZltuYW1lXTtcbiAgICByZXR1cm4gW25hbWUgKyAnYXJyb3cnLCB7XG4gICAgICAvL1xuICAgICAgLy8gR2V0IHRoZSBhcnJvdyBoZWlnaHQgYW5kIGRlcHRoIGZyb20gdGhlIGJvdW5kaW5nIGJveCBhbmQgdGhlIGFycm93IGRpcmVjdGlvblxuICAgICAgLy8gICB0aGVuIGNyZWF0ZSB0aGUgYXJyb3cgZnJvbSB0aGF0IGFuZCB0aGUgb3RoZXIgZGF0YVxuICAgICAgLy9cbiAgICAgIHJlbmRlcmVyOiAobm9kZSwgX2NoaWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHt3LCBoLCBkfSA9IG5vZGUuZ2V0QkJveCgpO1xuICAgICAgICBjb25zdCBbVywgb2Zmc2V0XSA9IChpc1ZlcnRpY2FsID8gW2ggKyBkLCAnWCddIDogW3csICdZJ10pO1xuICAgICAgICBjb25zdCBkZCA9IG5vZGUuZ2V0T2Zmc2V0KG9mZnNldCk7XG4gICAgICAgIGNvbnN0IGFycm93ID0gbm9kZS5hcnJvdyhXLCBhbmdsZSwgZG91YmxlLCBvZmZzZXQsIGRkKTtcbiAgICAgICAgcmVuZGVyKG5vZGUsIGFycm93KTtcbiAgICAgIH0sXG4gICAgICAvL1xuICAgICAgLy8gQWRkIHRoZSBwYWRkaW5nIHRvIHRoZSBwcm9wZXIgc2lkZXNcbiAgICAgIC8vXG4gICAgICBiYm94OiBhcnJvd0JCb3hbbmFtZV0sXG4gICAgICAvL1xuICAgICAgLy8gUmVtb3ZlIHJlZHVuZGFudCBub3RhdGlvbnNcbiAgICAgIC8vXG4gICAgICByZW1vdmU6IHJlbW92ZVxuICAgIH1dO1xuICB9O1xufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ29tbW9uTWVuY2xvc2Ugd3JhcHBlciBtaXhpbiBmb3IgdGhlIE1tbE1lbmNsb3NlIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yLCBBbnlXcmFwcGVyQ2xhc3N9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0ICogYXMgTm90YXRpb24gZnJvbSAnLi4vTm90YXRpb24uanMnO1xuaW1wb3J0IHtDb21tb25Nc3FydH0gZnJvbSAnLi9tc3FydC5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uLy4uL3V0aWwvQkJveC5qcyc7XG5pbXBvcnQge0Fic3RyYWN0TW1sTm9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtzcGxpdH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zdHJpbmcuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NZW5jbG9zZSBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1lbmNsb3NlIHdyYXBwZXIgdHlwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbk1lbmNsb3NlPFcgZXh0ZW5kcyBBbnlXcmFwcGVyLCBTIGV4dGVuZHMgQ29tbW9uTXNxcnQsIE4+IGV4dGVuZHMgQW55V3JhcHBlciB7XG4gIC8qKlxuICAgKiAgVGhlIG5vdGF0aW9ucyBhY3RpdmUgb24gdGhpcyBtZW5jbG9zZSwgYW5kIHRoZSBvbmUgdG8gdXNlIGZvciB0aGUgY2hpbGQsIGlmIGFueVxuICAgKi9cbiAgbm90YXRpb25zOiBOb3RhdGlvbi5MaXN0PFcsIE4+O1xuICByZW5kZXJDaGlsZDogTm90YXRpb24uUmVuZGVyZXI8VywgTj47XG5cbiAgLyoqXG4gICAqIGZha2UgbXNxcnQgZm9yIHJhZGlhbCBub3RhdGlvbiAoaWYgdXNlZClcbiAgICovXG4gIG1zcXJ0OiBTO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFkZGluZywgdGhpY2tuZXNzLCBhbmQgc2hhcGUgb2YgdGhlIGFycm93IGhlYWRcbiAgICogICAobWF5IGJlIG92ZXJyaWRkZW4gdXNpbmcgZGF0YS1wYWRkaW5nLCBkYXRhLXRoaWNrbmVzcywgYW5kIGRhdGEtYXJyb3doZWFkIGF0dGlidXRlcylcbiAgICovXG4gIHBhZGRpbmc6IG51bWJlcjtcbiAgdGhpY2tuZXNzOiBudW1iZXI7XG4gIGFycm93aGVhZDoge3g6IG51bWJlciwgeTogbnVtYmVyLCBkeDogbnVtYmVyfTtcblxuICAvKipcbiAgICogVGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQgcGFkZGluZywgYWRkZWQgYnkgbm90YXRpb25zXG4gICAqL1xuICBUUkJMOiBOb3RhdGlvbi5QYWRkaW5nRGF0YTtcblxuICAvKipcbiAgICogTG9vayB1cCB0aGUgZGF0YS0qIGF0dHJpYnV0ZXMgYW5kIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHZhbHVlc1xuICAgKi9cbiAgZ2V0UGFyYW1ldGVycygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiAgR2V0IHRoZSBub3RhdGlvbnMgZ2l2ZW4gaW4gdGhlIG5vdGF0aW9uIGF0dHJpYnV0ZVxuICAgKiAgICBhbmQgY2hlY2sgaWYgYW55IGFyZSB1c2VkIHRvIHJlbmRlciB0aGUgY2hpbGQgbm9kZXNcbiAgICovXG4gIGdldE5vdGF0aW9ucygpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiAgUmVtb3ZlIGFueSByZWR1bmRhbnQgbm90YXRpb25zXG4gICAqL1xuICByZW1vdmVSZWR1bmRhbnROb3RhdGlvbnMoKTogdm9pZDtcblxuICAvKipcbiAgICogIFJ1biBhbnkgaW5pdGlhbGl6YXRpb24gbmVlZGVkIGJ5IG5vdGF0aW9ucyBpbiB1c2VcbiAgICovXG4gIGluaXRpYWxpemVOb3RhdGlvbnMoKTogdm9pZDtcblxuICAvKipcbiAgICogQHJldHVybiB7Tm90YXRpb24uUGFkZGluZ0RhdGF9ICBBcnJheSBvZiB0aGUgbWF4aW11bSBleHRyYSBzcGFjZSBmcm9tIHRoZSBub3RhdGlvbnMgYWxvbmcgZWFjaCBzaWRlXG4gICAqL1xuICBnZXRCQm94RXh0ZW5kZXJzKCk6IE5vdGF0aW9uLlBhZGRpbmdEYXRhO1xuXG4gIC8qKlxuICAgKiBAcmV0dXJuIHtOb3RhdGlvbi5QYWRkaW5nRGF0YX0gIEFycmF5IG9mIHBhZGRpbmcgKGkuZS4sIEJCb3ggbWludXMgYm9yZGVyKSBhbG9uZyBlYWNoIHNpZGVcbiAgICovXG4gIGdldFBhZGRpbmcoKTogTm90YXRpb24uUGFkZGluZ0RhdGE7XG5cbiAgLyoqXG4gICAqIEVhY2ggZW50cnkgaW4gWCBnZXRzIHJlcGxhY2VkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIG9uZSBpbiBZIGlmIGl0IGlzIGxhcmdlclxuICAgKlxuICAgKiBAcGFyYW0ge05vdGF0aW9uLlBhZGRpbmdEYXRhfSBYICAgQW4gYXJyYXkgb2YgbnVtYmVyc1xuICAgKiBAcGFyYW0ge05vdGF0aW9uLlBhZGRpbmdEYXRhfSBZICAgQW4gYXJyYXkgb2YgbnVtYmVycyB0aGF0IHJlcGxhY2Ugc21hbGxlciBvbmVzIGluIFhcbiAgICovXG4gIG1heGltaXplRW50cmllcyhYOiBOb3RhdGlvbi5QYWRkaW5nRGF0YSwgWTogTm90YXRpb24uUGFkZGluZ0RhdGEpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG9mZnNldCBhbW91bnQgZm9yIHRoZSBnaXZlbiBkaXJlY3Rpb24gZm9yIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGNlbnRlcmluZ1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uICAgIFRoZSBkaXJlY3Rpb24gJ1gnIG9yICdZJyBmb3IgdGhlIG9mZnNldFxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgICAgICAgIFRoZSBhbW91bnQgb2Ygb2Zmc2V0IGluIHRoYXQgZGlyZWN0aW9uXG4gICAqL1xuICBnZXRPZmZzZXQoZGlyZWN0aW9uOiBzdHJpbmcpOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3ICAgIFRoZSB3aWR0aCBvZiB0aGUgYm94IHdob3NlIGRpYWdvbmFsIGlzIG5lZWRlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gaCAgICBUaGUgaGVpZ2h0IG9mIHRoZSBib3ggd2hvc2UgZGlhZ29uYWwgaXMgbmVlZGVkXG4gICAqIEByZXR1cm4ge251bWJlcltdfSAgIFRoZSBhbmdsZSBhbmQgd2lkdGggb2YgdGhlIGRpYWdvbmFsIG9mIHRoZSBib3hcbiAgICovXG4gIGdldEFyZ01vZCh3OiBudW1iZXIsIGg6IG51bWJlcik6IFtudW1iZXIsIG51bWJlcl07XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBhcnJvdyBmb3Igb3V0cHV0XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3ICAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgYXJyb3dcbiAgICogQHBhcmFtIHtudW1iZXJ9IGEgICAgICAgICBUaGUgYW5nbGUgZm9yIHRoZSBhcnJvd1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvdWJsZSAgIFRydWUgaWYgdGhpcyBpcyBhIGRvdWJsZS1oZWFkZWQgYXJyb3dcbiAgICogQHBhcmFtIHtzdHJpbmd9IG9mZnNldCAgICAnWCcgZm9yIHZlcnRpY2FsIGFycm93LCAnWScgZm9yIGhvcml6b250YWxcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRyYW5zICAgICBEaXN0YW5jZSB0byB0cmFuc2xhdGUgaW4gdGhlIG9mZnNldCBkaXJlY3Rpb25cbiAgICogQHJldHVybiB7Tn0gICAgICAgICAgICAgICBUaGUgbmV3bHkgY3JlYXRlZCBhcnJvd1xuICAgKi9cbiAgYXJyb3codzogbnVtYmVyLCBhOiBudW1iZXIsIGRvdWJsZTogYm9vbGVhbiwgb2Zmc2V0Pzogc3RyaW5nLCB0cmFucz86IG51bWJlcik6IE47XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgYW5nbGUgYW5kIHdpZHRoIG9mIGEgZGlhZ29uYWwgYXJyb3csIHBsdXMgdGhlIHggYW5kIHkgZXh0ZW5zaW9uXG4gICAqICAgcGFzdCB0aGUgY29udGVudCBib3VuZGluZyBib3hcbiAgICovXG4gIGFycm93RGF0YSgpOiB7YTogbnVtYmVyLCBXOiBudW1iZXIsIHg6IG51bWJlciwgeTogbnVtYmVyfTtcblxuICAvKipcbiAgICogR2V0IHRoZSBhbmdsZSBhbmQgd2lkdGggZm9yIGEgZGlhZ29uYWwgYXJyb3dcbiAgICpcbiAgICogQHJldHVybiB7W251bWJlciwgbnVtYmVyXX0gICBUaGUgYW5nbGUgYW5kIHdpZHRoXG4gICAqL1xuICBhcnJvd0FXKCk6IFtudW1iZXIsIG51bWJlcl07XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiB1bmF0dGFjaGVkIG1zcXJ0IHdyYXBwZXIgdG8gcmVuZGVyIHRoZSAncmFkaWNhbCcgbm90YXRpb24uXG4gICAqICAgV2UgcmVwbGFjZSB0aGUgaW5mZXJyZWQgbXJvdyBvZiB0aGUgbXNxcnQgd2l0aCB0aGUgb25lIGZyb20gdGhlIG1lbmNsb3NlXG4gICAqICAgYnV0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHBhcmVudCBwb2ludGVyLCBzbyBhcyBub3QgdG8gZGV0YWNoIGl0IGZyb21cbiAgICogICB0aGUgbWVuY2xvc2UgKHdoaWNoIHdvdWxkIGRlc3J0b3kgdGhlIG9yaWdpbmFsIE1hdGhNTCB0cmVlKS5cbiAgICpcbiAgICogQHBhcmFtIHtXfSBjaGlsZCAgIFRoZSBpbmZlcnJlZCBtcm93IHRoYXQgaXMgdGhlIGNoaWxkIG9mIHRoaXMgbWVuY2xvc2VcbiAgICogQHJldHVybiB7U30gICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIChidXQgZGV0YWNoZWQpIG1zcXJ0IHdyYXBwZXJcbiAgICovXG4gIGNyZWF0ZU1zcXJ0KGNoaWxkOiBXKTogUztcblxuICAvKipcbiAgICogQHJldHVybiB7bnVtYmVyW119ICBUaGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgbXNxcnQgYm91bmRpbmcgYm94XG4gICAqICAgICAgICAgICAgICAgICAgICAgYW5kIGl0cyBjaGlsZCBib3VuZGluZyBib3ggKGkuZS4sIHRoZSBleHRyYSBzcGFjZVxuICAgKiAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgdGhlIHJhZGljYWwgc3ltYm9sKS5cbiAgICovXG4gIHNxcnRUUkJMKCk6IG51bWJlcltdO1xufVxuXG4vKipcbiAqIFRoZSBDb21tb25NZW5jbG9zZSBjbGFzcyBpbnRlcmZhY2VcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1lbmNsb3NlIHdyYXBwZXIgdHlwZVxuICogQHRlbXBsYXJlIE4gIFRoZSBET00gbm9kZSBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbk1lbmNsb3NlQ2xhc3M8VyBleHRlbmRzIEFueVdyYXBwZXIsIE4+IGV4dGVuZHMgQW55V3JhcHBlckNsYXNzIHtcbiAgLyoqXG4gICAqICBUaGUgZGVmaW5pdGlvbnMgb2YgdGhlIHZhcmlvdXMgbm90YXRpb25zXG4gICAqL1xuICBub3RhdGlvbnM6IE5vdGF0aW9uLkRlZkxpc3Q8VywgTj47XG59XG5cbi8qKlxuICogU2hvcnRoYW5kIGZvciB0aGUgQ29tbW9uTWVuY2xvc2UgY29uc3RydWN0b3JcbiAqXG4gKiBAdGVtcGxhdGUgVyAgVGhlIG1lbmNsb3NlIHdyYXBwZXIgdHlwZVxuICovXG5leHBvcnQgdHlwZSBNZW5jbG9zZUNvbnN0cnVjdG9yPFcgZXh0ZW5kcyBBbnlXcmFwcGVyLCBTIGV4dGVuZHMgQ29tbW9uTXNxcnQsIE4+ID0gQ29uc3RydWN0b3I8Q29tbW9uTWVuY2xvc2U8VywgUywgTj4+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NZW5jbG9zZSB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWVuY2xvc2Ugb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFcgIFRoZSBtZW5jbG9zZSB3cmFwcGVyIHR5cGVcbiAqIEB0ZW1wbGFyZSBOICBUaGUgRE9NIG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGFyZSBTICBUaGUgbXNxcnQgd3JhcHBlciBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vbk1lbmNsb3NlTWl4aW48XG4gIFcgZXh0ZW5kcyBBbnlXcmFwcGVyLFxuICBTIGV4dGVuZHMgQ29tbW9uTXNxcnQsXG4gIE4sXG4gIFQgZXh0ZW5kcyBXcmFwcGVyQ29uc3RydWN0b3Jcbj4oQmFzZTogVCk6IE1lbmNsb3NlQ29uc3RydWN0b3I8VywgUywgTj4gJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqICBUaGUgbm90YXRpb25zIGFjdGl2ZSBvbiB0aGlzIG1lbmNsb3NlLCBpZiBhbnlcbiAgICAgKi9cbiAgICBwdWJsaWMgbm90YXRpb25zOiBOb3RhdGlvbi5MaXN0PFcsIE4+ID0ge307XG5cbiAgICAvKipcbiAgICAgKiAgVGhlIG5vdGF0aW9uIHRvIHVzZSBmb3IgdGhlIGNoaWxkLCBpZiBhbnlcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVuZGVyQ2hpbGQ6IE5vdGF0aW9uLlJlbmRlcmVyPFcsIE4+ID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIGZha2UgbXNxcnQgZm9yIHJhZGlhbCBub3RhdGlvbiAoaWYgdXNlZClcbiAgICAgKi9cbiAgICBwdWJsaWMgbXNxcnQ6IFMgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVGhlIHBhZGRpbmcgb2YgdGhlIGFycm93IGhlYWQgKG1heSBiZSBvdmVycmlkZGVuIHVzaW5nIGRhdGEtcGFkZGluZyBhdHRpYnV0ZSlcbiAgICAgKi9cbiAgICBwdWJsaWMgcGFkZGluZzogbnVtYmVyID0gTm90YXRpb24uUEFERElORztcbiAgICAvKipcbiAgICAgKiBUaGUgdGhpY2tuZXNzIG9mIHRoZSBhcnJvdyBoZWFkIChtYXkgYmUgb3ZlcnJpZGRlbiB1c2luZyBkYXRhLXRoaWNrbmVzcyBhdHRpYnV0ZSlcbiAgICAgKi9cbiAgICBwdWJsaWMgdGhpY2tuZXNzOiBudW1iZXIgPSBOb3RhdGlvbi5USElDS05FU1M7XG4gICAgLyoqXG4gICAgICogVGhlIHNoYXBlIG9mIHRoZSBhcnJvdyBoZWFkIChtYXkgYmUgb3ZlcnJpZGRlbiB1c2luZyBkYXRhLWFycm93aGVhZCBhdHRpYnV0ZXMpXG4gICAgICovXG4gICAgcHVibGljIGFycm93aGVhZCA9IHt4OiBOb3RhdGlvbi5BUlJPV1gsIHk6IE5vdGF0aW9uLkFSUk9XWSwgZHg6IE5vdGF0aW9uLkFSUk9XRFh9O1xuXG4gICAgLyoqXG4gICAgICogVGhlIHRvcCwgcmlnaHQsIGJvdHRvbSwgYW5kIGxlZnQgcGFkZGluZyAoYWRkZWQgYnkgbm90YXRpb25zKVxuICAgICAqL1xuICAgIHB1YmxpYyBUUkJMOiBOb3RhdGlvbi5QYWRkaW5nRGF0YSA9IFswLCAwLCAwLCAwXTtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIHRoaXMuZ2V0UGFyYW1ldGVycygpO1xuICAgICAgdGhpcy5nZXROb3RhdGlvbnMoKTtcbiAgICAgIHRoaXMucmVtb3ZlUmVkdW5kYW50Tm90YXRpb25zKCk7XG4gICAgICB0aGlzLmluaXRpYWxpemVOb3RhdGlvbnMoKTtcbiAgICAgIHRoaXMuVFJCTCA9IHRoaXMuZ2V0QkJveEV4dGVuZGVycygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIExvb2sgdXAgdGhlIGRhdGEtKiBhdHRyaWJ1dGVzIGFuZCBvdmVycmlkZSB0aGUgZGVmYXVsdCB2YWx1ZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0UGFyYW1ldGVycygpIHtcbiAgICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB0aGlzLm5vZGUuYXR0cmlidXRlcztcbiAgICAgIGNvbnN0IHBhZGRpbmcgPSBhdHRyaWJ1dGVzLmdldCgnZGF0YS1wYWRkaW5nJyk7XG4gICAgICBpZiAocGFkZGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMucGFkZGluZyA9IHRoaXMubGVuZ3RoMmVtKHBhZGRpbmcsIE5vdGF0aW9uLlBBRERJTkcpO1xuICAgICAgfVxuICAgICAgY29uc3QgdGhpY2tuZXNzID0gYXR0cmlidXRlcy5nZXQoJ2RhdGEtdGhpY2tuZXNzJyk7XG4gICAgICBpZiAodGhpY2tuZXNzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy50aGlja25lc3MgPSB0aGlzLmxlbmd0aDJlbSh0aGlja25lc3MsIE5vdGF0aW9uLlRISUNLTkVTUyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhcnJvd2hlYWQgPSBhdHRyaWJ1dGVzLmdldCgnZGF0YS1hcnJvd2hlYWQnKSBhcyBzdHJpbmc7XG4gICAgICBpZiAoYXJyb3doZWFkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgbGV0IFt4LCB5LCBkeF0gPSBzcGxpdChhcnJvd2hlYWQpO1xuICAgICAgICB0aGlzLmFycm93aGVhZCA9IHtcbiAgICAgICAgICB4OiAoeCA/IHBhcnNlRmxvYXQoeCkgOiBOb3RhdGlvbi5BUlJPV1gpLFxuICAgICAgICAgIHk6ICh5ID8gcGFyc2VGbG9hdCh5KSA6IE5vdGF0aW9uLkFSUk9XWSksXG4gICAgICAgICAgZHg6IChkeCA/IHBhcnNlRmxvYXQoZHgpIDogTm90YXRpb24uQVJST1dEWClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgR2V0IHRoZSBub3RhdGlvbnMgZ2l2ZW4gaW4gdGhlIG5vdGF0aW9uIGF0dHJpYnV0ZVxuICAgICAqICAgIGFuZCBjaGVjayBpZiBhbnkgYXJlIHVzZWQgdG8gcmVuZGVyIHRoZSBjaGlsZCBub2Rlc1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXROb3RhdGlvbnMoKSB7XG4gICAgICBjb25zdCBOb3RhdGlvbnMgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyBDb21tb25NZW5jbG9zZUNsYXNzPFcsIE4+KS5ub3RhdGlvbnM7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2Ygc3BsaXQodGhpcy5ub2RlLmF0dHJpYnV0ZXMuZ2V0KCdub3RhdGlvbicpIGFzIHN0cmluZykpIHtcbiAgICAgICAgY29uc3Qgbm90YXRpb24gPSBOb3RhdGlvbnMuZ2V0KG5hbWUpO1xuICAgICAgICBpZiAobm90YXRpb24pIHtcbiAgICAgICAgICB0aGlzLm5vdGF0aW9uc1tuYW1lXSA9IG5vdGF0aW9uO1xuICAgICAgICAgIGlmIChub3RhdGlvbi5yZW5kZXJDaGlsZCkge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJDaGlsZCA9IG5vdGF0aW9uLnJlbmRlcmVyO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZW1vdmUgYW55IHJlZHVuZGFudCBub3RhdGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgcmVtb3ZlUmVkdW5kYW50Tm90YXRpb25zKCkge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKHRoaXMubm90YXRpb25zKSkge1xuICAgICAgICBpZiAodGhpcy5ub3RhdGlvbnNbbmFtZV0pIHtcbiAgICAgICAgICBjb25zdCByZW1vdmUgPSB0aGlzLm5vdGF0aW9uc1tuYW1lXS5yZW1vdmUgfHwgJyc7XG4gICAgICAgICAgZm9yIChjb25zdCBub3RhdGlvbiBvZiByZW1vdmUuc3BsaXQoLyAvKSkge1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMubm90YXRpb25zW25vdGF0aW9uXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUnVuIGFueSBpbml0aWFsaXphdGlvbiBuZWVkZWQgYnkgbm90YXRpb25zIGluIHVzZVxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplTm90YXRpb25zKCkge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKHRoaXMubm90YXRpb25zKSkge1xuICAgICAgICBjb25zdCBpbml0ID0gdGhpcy5ub3RhdGlvbnNbbmFtZV0uaW5pdDtcbiAgICAgICAgaW5pdCAmJiBpbml0KHRoaXMgYXMgYW55KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCwgcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIC8vXG4gICAgICAvLyAgQ29tYmluZSB0aGUgQkJveCBmcm9tIHRoZSBjaGlsZCBhbmQgYWRkIHRoZSBleHRlbmRlcnNcbiAgICAgIC8vXG4gICAgICBsZXQgW1QsIFIsIEIsIExdID0gdGhpcy5UUkJMO1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLmNoaWxkTm9kZXNbMF0uZ2V0QkJveCgpO1xuICAgICAgYmJveC5jb21iaW5lKGNoaWxkLCBMLCAwKTtcbiAgICAgIGJib3guaCArPSBUO1xuICAgICAgYmJveC5kICs9IEI7XG4gICAgICBiYm94LncgKz0gUjtcbiAgICAgIHRoaXMuc2V0Q2hpbGRQV2lkdGhzKHJlY29tcHV0ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHJldHVybiB7Tm90YXRpb24uUGFkZGluZ0RhdGF9ICBBcnJheSBvZiB0aGUgbWF4aW11bSBleHRyYSBzcGFjZSBmcm9tIHRoZSBub3RhdGlvbnMgYWxvbmcgZWFjaCBzaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldEJCb3hFeHRlbmRlcnMoKTogTm90YXRpb24uUGFkZGluZ0RhdGEge1xuICAgICAgbGV0IFRSQkwgPSBbMCwgMCwgMCwgMF0gYXMgTm90YXRpb24uUGFkZGluZ0RhdGE7XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXModGhpcy5ub3RhdGlvbnMpKSB7XG4gICAgICAgIHRoaXMubWF4aW1pemVFbnRyaWVzKFRSQkwsIHRoaXMubm90YXRpb25zW25hbWVdLmJib3godGhpcyBhcyBhbnkpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBUUkJMO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge05vdGF0aW9uLlBhZGRpbmdEYXRhfSAgQXJyYXkgb2YgcGFkZGluZyAoaS5lLiwgQkJveCBtaW51cyBib3JkZXIpIGFsb25nIGVhY2ggc2lkZVxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRQYWRkaW5nKCk6IE5vdGF0aW9uLlBhZGRpbmdEYXRhIHtcbiAgICAgIGxldCBCVFJCTCA9IFswLCAwLCAwLCAwXSBhcyBOb3RhdGlvbi5QYWRkaW5nRGF0YTtcbiAgICAgIGZvciAoY29uc3QgbmFtZSBvZiBPYmplY3Qua2V5cyh0aGlzLm5vdGF0aW9ucykpIHtcbiAgICAgICAgY29uc3QgYm9yZGVyID0gdGhpcy5ub3RhdGlvbnNbbmFtZV0uYm9yZGVyO1xuICAgICAgICBpZiAoYm9yZGVyKSB7XG4gICAgICAgICAgdGhpcy5tYXhpbWl6ZUVudHJpZXMoQlRSQkwsIGJvcmRlcih0aGlzIGFzIGFueSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gWzAsIDEsIDIsIDNdLm1hcChpID0+IHRoaXMuVFJCTFtpXSAtIEJUUkJMW2ldKSBhcyBOb3RhdGlvbi5QYWRkaW5nRGF0YTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFYWNoIGVudHJ5IGluIFggZ2V0cyByZXBsYWNlZCBieSB0aGUgY29ycmVzcG9uZGluZyBvbmUgaW4gWSBpZiBpdCBpcyBsYXJnZXJcbiAgICAgKlxuICAgICAqIEBwYXJhbSB7Tm90YXRpb24uUGFkZGluZ0RhdGF9IFggICBBbiBhcnJheSBvZiBudW1iZXJzXG4gICAgICogQHBhcmFtIHtOb3RhdGlvbi5QYWRkaW5nRGF0YX0gWSAgIEFuIGFycmF5IG9mIG51bWJlcnMgdGhhdCByZXBsYWNlIHNtYWxsZXIgb25lcyBpbiBYXG4gICAgICovXG4gICAgcHVibGljIG1heGltaXplRW50cmllcyhYOiBOb3RhdGlvbi5QYWRkaW5nRGF0YSwgWTogTm90YXRpb24uUGFkZGluZ0RhdGEpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgWC5sZW5ndGg7IGkrKykge1xuICAgICAgICBpZiAoWFtpXSA8IFlbaV0pIHtcbiAgICAgICAgICBYW2ldID0gWVtpXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAgIC8qKlxuICAgICAqIEdldCB0aGUgb2Zmc2V0IGFtb3VudCBmb3IgdGhlIGdpdmVuIGRpcmVjdGlvbiBmb3IgdmVydGljYWwgYW5kIGhvcml6b250YWwgY2VudGVyaW5nXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uICAgIFRoZSBkaXJlY3Rpb24gJ1gnIG9yICdZJyBmb3IgdGhlIG9mZnNldFxuICAgICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgICAgICAgVGhlIGFtb3VudCBvZiBvZmZzZXQgaW4gdGhhdCBkaXJlY3Rpb25cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0T2Zmc2V0KGRpcmVjdGlvbjogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgIGxldCBbVCwgUiwgQiwgTF0gPSB0aGlzLlRSQkw7XG4gICAgICBjb25zdCBkID0gKGRpcmVjdGlvbiA9PT0gJ1gnID8gUiAtIEwgOiBCIC0gVCkgLyAyO1xuICAgICAgcmV0dXJuIChNYXRoLmFicyhkKSA+IC4wMDEgPyBkIDogMCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IHcgICAgVGhlIHdpZHRoIG9mIHRoZSBib3ggd2hvc2UgZGlhZ29uYWwgaXMgbmVlZGVkXG4gICAgICogQHBhcmFtIHtudW1iZXJ9IGggICAgVGhlIGhlaWdodCBvZiB0aGUgYm94IHdob3NlIGRpYWdvbmFsIGlzIG5lZWRlZFxuICAgICAqIEByZXR1cm4ge251bWJlcltdfSAgIFRoZSBhbmdsZSBhbmQgd2lkdGggb2YgdGhlIGRpYWdvbmFsIG9mIHRoZSBib3hcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0QXJnTW9kKHc6IG51bWJlciwgaDogbnVtYmVyKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgICByZXR1cm4gW01hdGguYXRhbjIoaCwgdyksIE1hdGguc3FydCh3ICogdyArIGggKiBoKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIGFycm93IHVzaW5nIGFuIHN2ZyBlbGVtZW50XG4gICAgICpcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gdyAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgYXJyb3dcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gYSAgICAgICAgVGhlIGFuZ2xlIGZvciB0aGUgYXJyb3dcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGRvdWJsZSAgVHJ1ZSBpZiB0aGlzIGlzIGEgZG91YmxlLWhlYWRlZCBhcnJvd1xuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBvZmZzZXQgICAnWCcgZm9yIHZlcnRpY2FsIGFycm93LCAnWScgZm9yIGhvcml6b250YWxcbiAgICAgKiBAcGFyYW0ge251bWJlcn0gZGlzdCAgICAgRGlzdGFuY2UgdG8gdHJhbnNsYXRlIGluIHRoZSBvZmZzZXQgZGlyZWN0aW9uXG4gICAgICogQHJldHVybiB7Tn0gICAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGFycm93XG4gICAgICovXG4gICAgcHVibGljIGFycm93KF93OiBudW1iZXIsIF9hOiBudW1iZXIsIF9kb3VibGU6IGJvb2xlYW4sIF9vZmZzZXQ6IHN0cmluZyA9ICcnLCBfZGlzdDogbnVtYmVyID0gMCk6IE4ge1xuICAgICAgcmV0dXJuIG51bGwgYXMgTjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGFuZ2xlIGFuZCB3aWR0aCBvZiBhIGRpYWdvbmFsIGFycm93LCBwbHVzIHRoZSB4IGFuZCB5IGV4dGVuc2lvblxuICAgICAqICAgcGFzdCB0aGUgY29udGVudCBib3VuZGluZyBib3hcbiAgICAgKlxuICAgICAqIEByZXR1cm4ge09iamVjdH0gIFRoZSBhbmdsZSwgd2lkdGgsIGFuZCB4IGFuZCB5IGV4dGVudGlvbnNcbiAgICAgKi9cbiAgICBwdWJsaWMgYXJyb3dEYXRhKCk6IHthOiBudW1iZXIsIFc6IG51bWJlciwgeDogbnVtYmVyLCB5OiBudW1iZXJ9IHtcbiAgICAgIGNvbnN0IFtwLCB0XSA9IFt0aGlzLnBhZGRpbmcsIHRoaXMudGhpY2tuZXNzXTtcbiAgICAgIGNvbnN0IHIgPSB0ICogKHRoaXMuYXJyb3doZWFkLnggKyBNYXRoLm1heCgxLCB0aGlzLmFycm93aGVhZC5keCkpO1xuICAgICAgY29uc3Qge2gsIGQsIHd9ID0gdGhpcy5jaGlsZE5vZGVzWzBdLmdldEJCb3goKTtcbiAgICAgIGNvbnN0IEggPSBoICsgZDtcbiAgICAgIGNvbnN0IFIgPSBNYXRoLnNxcnQoSCAqIEggKyB3ICogdyk7XG4gICAgICBjb25zdCB4ID0gTWF0aC5tYXgocCwgciAqIHcgLyBSKTtcbiAgICAgIGNvbnN0IHkgPSBNYXRoLm1heChwLCByICogSCAvIFIpO1xuICAgICAgY29uc3QgW2EsIFddID0gdGhpcy5nZXRBcmdNb2QodyArIDIgKiB4LCBIICsgMiAqIHkpO1xuICAgICAgcmV0dXJuIHthLCBXLCB4LCB5fTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgdGhlIGFuZ2xlIGFuZCB3aWR0aCBmb3IgYSBkaWFnb25hbCBhcnJvd1xuICAgICAqXG4gICAgICogQHJldHVybiB7W251bWJlciwgbnVtYmVyXX0gICBUaGUgYW5nbGUgYW5kIHdpZHRoXG4gICAgICovXG4gICAgcHVibGljIGFycm93QVcoKTogW251bWJlciwgbnVtYmVyXSB7XG4gICAgICBjb25zdCB7aCwgZCwgd30gPSB0aGlzLmNoaWxkTm9kZXNbMF0uZ2V0QkJveCgpO1xuICAgICAgY29uc3QgW1QsIFIsIEIsIExdID0gdGhpcy5UUkJMO1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0QXJnTW9kKEwgKyB3ICsgUiwgVCArIGggKyBkICsgQik7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gICAgLyoqXG4gICAgICogQ3JlYXRlIGFuIHVuYXR0YWNoZWQgbXNxcnQgd3JhcHBlciB0byByZW5kZXIgdGhlICdyYWRpY2FsJyBub3RhdGlvbi5cbiAgICAgKiAgIFdlIHJlcGxhY2UgdGhlIGluZmVycmVkIG1yb3cgb2YgdGhlIG1zcXJ0IHdpdGggdGhlIG9uZSBmcm9tIHRoZSBtZW5jbG9zZVxuICAgICAqICAgYnV0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIHBhcmVudCBwb2ludGVyLCBzbyBhcyBub3QgdG8gZGV0YWNoIGl0IGZyb21cbiAgICAgKiAgIHRoZSBtZW5jbG9zZSAod2hpY2ggd291bGQgZGVzcnRveSB0aGUgb3JpZ2luYWwgTWF0aE1MIHRyZWUpLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtXfSBjaGlsZCAgIFRoZSBpbmZlcnJlZCBtcm93IHRoYXQgaXMgdGhlIGNoaWxkIG9mIHRoaXMgbWVuY2xvc2VcbiAgICAgKiBAcmV0dXJuIHtTfSAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgKGJ1dCBkZXRhY2hlZCkgbXNxcnQgd3JhcHBlclxuICAgICAqL1xuICAgIHB1YmxpYyBjcmVhdGVNc3FydChjaGlsZDogVyk6IFMge1xuICAgICAgY29uc3QgbW1sRmFjdG9yeSA9ICh0aGlzLm5vZGUgYXMgQWJzdHJhY3RNbWxOb2RlKS5mYWN0b3J5O1xuICAgICAgY29uc3QgbW1sID0gbW1sRmFjdG9yeS5jcmVhdGUoJ21zcXJ0Jyk7XG4gICAgICBtbWwuaW5oZXJpdEF0dHJpYnV0ZXNGcm9tKHRoaXMubm9kZSk7XG4gICAgICBtbWwuY2hpbGROb2Rlc1swXSA9IGNoaWxkLm5vZGU7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy53cmFwKG1tbCkgYXMgUztcbiAgICAgIG5vZGUucGFyZW50ID0gdGhpcztcbiAgICAgIHJldHVybiBub2RlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge251bWJlcltdfSAgVGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIG1zcXJ0IGJvdW5kaW5nIGJveFxuICAgICAqICAgICAgICAgICAgICAgICAgICAgYW5kIGl0cyBjaGlsZCBib3VuZGluZyBib3ggKGkuZS4sIHRoZSBleHRyYSBzcGFjZVxuICAgICAqICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBieSB0aGUgcmFkaWNhbCBzeW1ib2wpLlxuICAgICAqL1xuICAgIHB1YmxpYyBzcXJ0VFJCTCgpOiBbbnVtYmVyLCBudW1iZXIsIG51bWJlciwgbnVtYmVyXSB7XG4gICAgICBjb25zdCBiYm94ID0gdGhpcy5tc3FydC5nZXRCQm94KCk7XG4gICAgICBjb25zdCBjYm94ID0gdGhpcy5tc3FydC5jaGlsZE5vZGVzWzBdLmdldEJCb3goKTtcbiAgICAgIHJldHVybiBbYmJveC5oIC0gY2JveC5oLCAwLCBiYm94LmQgLSBjYm94LmQsIGJib3gudyAtIGNib3gud107XG4gICAgfVxuXG4gIH07XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdXRpbGl0aWVzIGZvciBub3RhdGlvbnMgZm9yIG1lbmNsb3NlIGVsZW1lbnRzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR21lbmNsb3NlfSBmcm9tICcuL1dyYXBwZXJzL21lbmNsb3NlLmpzJztcbmltcG9ydCAqIGFzIE5vdGF0aW9uIGZyb20gJy4uL2NvbW1vbi9Ob3RhdGlvbi5qcyc7XG5leHBvcnQgKiBmcm9tICcuLi9jb21tb24vTm90YXRpb24uanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIFNWR21lbmNsb3NlXG4gKi9cbmV4cG9ydCB0eXBlIE1lbmNsb3NlID0gU1ZHbWVuY2xvc2U8YW55LCBhbnksIGFueT47XG5cblxuLypcbiAqIFNob3J0aGFuZHMgZm9yIGNvbW1vbiB0eXBlc1xuICovXG5leHBvcnQgdHlwZSBSRU5ERVJFUjxOLCBULCBEPiA9IE5vdGF0aW9uLlJlbmRlcmVyPFNWR21lbmNsb3NlPE4sIFQsIEQ+LCBOPjtcbmV4cG9ydCB0eXBlIERFRlBBSVI8TiwgVCwgRD4gPSBOb3RhdGlvbi5EZWZQYWlyPFNWR21lbmNsb3NlPE4sIFQsIEQ+LCBOPjtcblxuLyoqXG4gKiBUaGUga2luZHMgb2YgbGluZXMgdGhhdCBjYW4gYmUgZHJhd25cbiAqL1xuZXhwb3J0IHR5cGUgTGluZU5hbWUgPSBOb3RhdGlvbi5TaWRlIHwgKCd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCcgfCAndXAnIHwgJ2Rvd24nKTtcblxuLyoqXG4gKiBbeDEseTEsIHgyLHkyXSBlbmRwb2ludHMgZm9yIGEgbGluZVxuICovXG5leHBvcnQgdHlwZSBMaW5lRGF0YSA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG4vKipcbiAqIEZ1bmN0aW9ucyBmb3IgY29tcHV0aW5nIHRoZSBsaW5lIGRhdGEgZm9yIGVhY2ggdHlwZSBvZiBsaW5lXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wdXRlTGluZURhdGEgPSB7XG4gIHRvcDogKGgsIF9kLCB3LCB0KSA9PiBbMCwgaCAtIHQsIHcsIGggLSB0XSxcbiAgcmlnaHQ6IChoLCBkLCB3LCB0KSA9PiBbdyAtIHQsIC1kLCB3IC0gdCwgaF0sXG4gIGJvdHRvbTogKF9oLCBkLCB3LCB0KSA9PiBbMCwgdCAtIGQsIHcsIHQgLSBkXSxcbiAgbGVmdDogKGgsIGQsIF93LCB0KSA9PiBbdCwgLWQsIHQsIGhdLFxuICB2ZXJ0aWNhbDogKGgsIGQsIHcsIF90KSA9PiBbdyAvIDIsIGgsIHcgLyAyLCAtZF0sXG4gIGhvcml6b250YWw6IChoLCBkLCB3LCBfdCkgPT4gWzAsIChoIC0gZCkgLyAyLCB3LCAoaCAtIGQpIC8gMl0sXG4gIHVwOiAoaCwgZCwgdywgdCkgPT4gW3QsIHQgLSBkLCB3IC0gdCwgaCAtIHRdLFxuICBkb3duOiAoaCwgZCwgdywgdCkgPT4gW3QsIGggLSB0LCB3IC0gdCwgdCAtIGRdXG59IGFzIHtba2luZDogc3RyaW5nXTogKGg6IG51bWJlciwgZDogbnVtYmVyLCB3OiBudW1iZXIsIHQ6IG51bWJlcikgPT4gTGluZURhdGF9O1xuXG4vKipcbiAqIFRoZSBkYXRhIGZvciBhIGdpdmVuIGxpbmUgYXMgdHdvIGVuZHBvaW50czogW3gxLCB5MSwgeDIsIHkxXVxuICpcbiAqIEBwYXJhbSB7TWVuY2xvc2V9IG5vZGUgICBUaGUgbm9kZSB3aG9zZSBsaW5lIGlzIHRvIGJlIGRyYXduXG4gKiBAcGFyYW0ge0xpbmVOYW1lfSBraW5kICAgVGhlIHR5cGUgb2YgbGluZSB0byBkcmF3IGZvciB0aGUgbm9kZVxuICogQHBhcmFtIHtzdHJpbmd9IG9mZnNldCAgIFRoZSBvZmZzZXQgZGlyZWN0aW9uLCBpZiBhbnlcbiAqIEByZXR1cm4ge0xpbmVEYXRhfSAgICAgICBUaGUgY29vcmRpbmF0ZXMgb2YgdGhlIHR3byBlbmRwb2ludHNcbiAqL1xuZXhwb3J0IGNvbnN0IGxpbmVEYXRhID0gZnVuY3Rpb24obm9kZTogTWVuY2xvc2UsIGtpbmQ6IExpbmVOYW1lLCBvZmZzZXQ6IHN0cmluZyA9ICcnKTogTGluZURhdGEge1xuICBjb25zdCB7aCwgZCwgd30gPSBub2RlLmdldEJCb3goKTtcbiAgY29uc3QgdCA9IG5vZGUudGhpY2tuZXNzIC8gMjtcbiAgcmV0dXJuIGxpbmVPZmZzZXQoY29tcHV0ZUxpbmVEYXRhW2tpbmRdKGgsIGQsIHcsIHQpLCBub2RlLCBvZmZzZXQpO1xufTtcblxuLyoqXG4gKiBSZWNlbnRlciB0aGUgbGluZSBkYXRhIGZvciB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBsaW5lc1xuICpcbiAqIEBwYXJhbSB7TGluZURhdGF9IGRhdGEgICBUaGUgbGluZSBlbmRwb2ludHMgdG8gYWRqdXN0XG4gKiBAcGFyYW0ge01lbmNsb3NlfSBub2RlICAgVGhlIG1lbmNsb3NlIG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBvZmZzZXQgICBUaGUgZGlyZWN0aW9uIHRvIG9mZnNldFxuICovXG5leHBvcnQgY29uc3QgbGluZU9mZnNldCA9IGZ1bmN0aW9uKGRhdGE6IExpbmVEYXRhLCBub2RlOiBNZW5jbG9zZSwgb2Zmc2V0OiBzdHJpbmcpOiBMaW5lRGF0YSB7XG4gIGlmIChvZmZzZXQpIHtcbiAgICBjb25zdCBkID0gbm9kZS5nZXRPZmZzZXQob2Zmc2V0KTtcbiAgICBpZiAoZCkge1xuICAgICAgaWYgKG9mZnNldCA9PT0gJ1gnKSB7XG4gICAgICAgIGRhdGFbMF0gLT0gZDtcbiAgICAgICAgZGF0YVsyXSAtPSBkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YVsxXSAtPSBkO1xuICAgICAgICBkYXRhWzNdIC09IGQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBkYXRhO1xufTtcblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBAcGFyYW0ge0xpbmVOYW1lfSBsaW5lICBUaGUgbmFtZSBvZiB0aGUgbGluZSB0byBjcmVhdGVcbiAqIEByZXR1cm4ge1JFTkRFUkVSfSAgICAgIFRoZSByZW5kZXJlciBmdW5jdGlvbiBmb3IgdGhlIGdpdmVuIGxpbmVcbiAqL1xuZXhwb3J0IGNvbnN0IFJlbmRlckxpbmUgPSBmdW5jdGlvbjxOLCBULCBEPihsaW5lOiBMaW5lTmFtZSwgb2Zmc2V0OiBzdHJpbmcgPSAnJyk6IFJFTkRFUkVSPE4sIFQsIEQ+IHtcbiAgcmV0dXJuICgobm9kZSwgX2NoaWxkKSA9PiB7XG4gICAgY29uc3QgTCA9IG5vZGUubGluZShsaW5lRGF0YShub2RlLCBsaW5lLCBvZmZzZXQpKTtcbiAgICBub2RlLmFkYXB0b3IuYXBwZW5kKG5vZGUuZWxlbWVudCwgTCk7XG4gIH0pO1xufTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQHBhcmFtIHtOb3RhdGlvbi5TaWRlfSBzaWRlICAgVGhlIGtpbmQgb2YgbGluZSAoc2lkZSwgZGlhZ29uYWwsIGV0Yy4pXG4gKiBAcmV0dXJuIHtERUZQQUlSfSAgICAgIFRoZSBub3RhdGlvbiBkZWZpbml0aW9uIGZvciB0aGUgbm90YXRpb24gaGF2aW5nIGEgbGluZSBvbiB0aGUgZ2l2ZW4gc2lkZVxuICovXG5leHBvcnQgY29uc3QgQm9yZGVyID0gZnVuY3Rpb248TiwgVCwgRD4oc2lkZTogTm90YXRpb24uU2lkZSk6IERFRlBBSVI8TiwgVCwgRD4ge1xuICByZXR1cm4gTm90YXRpb24uQ29tbW9uQm9yZGVyPFNWR21lbmNsb3NlPE4sIFQsIEQ+LCBOPigobm9kZSwgX2NoaWxkKSA9PiB7XG4gICAgbm9kZS5hZGFwdG9yLmFwcGVuZChub2RlLmVsZW1lbnQsIG5vZGUubGluZShsaW5lRGF0YShub2RlLCBzaWRlKSkpO1xuICB9KShzaWRlKTtcbn07XG5cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICBUaGUgbmFtZSBvZiB0aGUgbm90YXRpb24gdG8gZGVmaW5lXG4gKiBAcGFyYW0ge05vdGF0aW9uLlNpZGV9IHNpZGUxICAgVGhlIGZpcnN0IHNpZGUgdG8gZ2V0IGEgYm9yZGVyXG4gKiBAcGFyYW0ge05vdGF0aW9uLlNpZGV9IHNpZGUyICAgVGhlIHNlY29uZCBzaWRlIHRvIGdldCBhIGJvcmRlclxuICogQHJldHVybiB7REVGUEFJUn0gICAgICAgVGhlIG5vdGF0aW9uIGRlZmluaXRpb24gZm9yIHRoZSBub3RhdGlvbiBoYXZpbmcgbGluZXMgb24gdHdvIHNpZGVzXG4gKi9cbmV4cG9ydCBjb25zdCBCb3JkZXIyID0gZnVuY3Rpb248TiwgVCwgRD4obmFtZTogc3RyaW5nLCBzaWRlMTogTm90YXRpb24uU2lkZSwgc2lkZTI6IE5vdGF0aW9uLlNpZGUpOiBERUZQQUlSPE4sIFQsIEQ+IHtcbiAgcmV0dXJuIE5vdGF0aW9uLkNvbW1vbkJvcmRlcjI8U1ZHbWVuY2xvc2U8TiwgVCwgRD4sIE4+KChub2RlLCBfY2hpbGQpID0+IHtcbiAgICBub2RlLmFkYXB0b3IuYXBwZW5kKG5vZGUuZWxlbWVudCwgbm9kZS5saW5lKGxpbmVEYXRhKG5vZGUsIHNpZGUxKSkpO1xuICAgIG5vZGUuYWRhcHRvci5hcHBlbmQobm9kZS5lbGVtZW50LCBub2RlLmxpbmUobGluZURhdGEobm9kZSwgc2lkZTIpKSk7XG4gIH0pKG5hbWUsIHNpZGUxLCBzaWRlMik7XG59O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBAcGFyYW0ge0xpbmVOYW1lfSBuYW1lICBUaGUgbmFtZSBvZiB0aGUgZGlhZ29uYWwgc3RyaWtlIHRvIGRlZmluZVxuICogQHJldHVybiB7REVGUEFJUn0gICAgICAgVGhlIG5vdGF0aW9uIGRlZmluaXRpb24gZm9yIHRoZSBkaWFnb25hbCBzdHJpa2VcbiAqL1xuZXhwb3J0IGNvbnN0IERpYWdvbmFsU3RyaWtlID0gZnVuY3Rpb248TiwgVCwgRD4obmFtZTogTGluZU5hbWUpOiBERUZQQUlSPE4sIFQsIEQ+IHtcbiAgcmV0dXJuIE5vdGF0aW9uLkNvbW1vbkRpYWdvbmFsU3RyaWtlPFNWR21lbmNsb3NlPE4sIFQsIEQ+LCBOPigoX2NuYW1lOiBzdHJpbmcpID0+IChub2RlLCBfY2hpbGQpID0+IHtcbiAgICBub2RlLmFkYXB0b3IuYXBwZW5kKG5vZGUuZWxlbWVudCwgbm9kZS5saW5lKGxpbmVEYXRhKG5vZGUsIG5hbWUpKSk7XG4gIH0pKG5hbWUpO1xufTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgbmFtZSBvZiB0aGUgZGlhZ29uYWwgYXJyb3cgdG8gZGVmaW5lXG4gKiBAcmV0dXJuIHtERUZQQUlSfSAgICAgIFRoZSBub3RhdGlvbiBkZWZpbml0aW9uIGZvciB0aGUgZGlhZ29uYWwgYXJyb3dcbiAqL1xuZXhwb3J0IGNvbnN0IERpYWdvbmFsQXJyb3cgPSBmdW5jdGlvbjxOLCBULCBEPihuYW1lOiBzdHJpbmcpOiBERUZQQUlSPE4sIFQsIEQ+IHtcbiAgcmV0dXJuIE5vdGF0aW9uLkNvbW1vbkRpYWdvbmFsQXJyb3c8U1ZHbWVuY2xvc2U8TiwgVCwgRD4sIE4+KChub2RlLCBhcnJvdykgPT4ge1xuICAgIG5vZGUuYWRhcHRvci5hcHBlbmQobm9kZS5lbGVtZW50LCBhcnJvdyk7XG4gIH0pKG5hbWUpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIG9mIHRoZSBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGFycm93IHRvIGRlZmluZVxuICogQHJldHVybiB7REVGUEFJUn0gICAgICBUaGUgbm90YXRpb24gZGVmaW5pdGlvbiBmb3IgdGhlIGFycm93XG4gKi9cbmV4cG9ydCBjb25zdCBBcnJvdyA9IGZ1bmN0aW9uPE4sIFQsIEQ+KG5hbWU6IHN0cmluZyk6IERFRlBBSVI8TiwgVCwgRD4ge1xuICByZXR1cm4gTm90YXRpb24uQ29tbW9uQXJyb3c8U1ZHbWVuY2xvc2U8TiwgVCwgRD4sIE4+KChub2RlLCBhcnJvdykgPT4ge1xuICAgIG5vZGUuYWRhcHRvci5hcHBlbmQobm9kZS5lbGVtZW50LCBhcnJvdyk7XG4gIH0pKG5hbWUpO1xufTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE1lbmNsb3NlIG5vZGVcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtNbWxOb2RlLCBBYnN0cmFjdE1tbE5vZGUsIFRFWENMQVNTfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sRW5jbG9zZSBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbE5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1lbmNsb3NlIGV4dGVuZHMgQWJzdHJhY3RNbWxOb2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxOb2RlLmRlZmF1bHRzLFxuICAgIG5vdGF0aW9uOiAnbG9uZ2RpdidcbiAgfTtcblxuICAvKipcbiAgICogVGVYIGNsYXNzIGlzIE9SRFxuICAgKi9cbiAgcHJvdGVjdGVkIHRleGNsYXNzID0gVEVYQ0xBU1MuT1JEO1xuXG4gIC8qKlxuICAgKiBUaGUgbWVuY2xvc2Uga2luZFxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21lbmNsb3NlJztcbiAgfVxuXG4gIC8qKlxuICAgKiA8bWVuY2xvc2U+IGhhcyBhbiBpbmZlcnJlZCBtcm93XG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cblxuICAvKipcbiAgICogPG1lbmNsb3NlPiBpcyBhIGxpbmVicmVhayBjb250YWluZXJcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGxpbmVicmVha0NvbnRpbmluZXIoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0VGVYY2xhc3MocHJldjogTW1sTm9kZSkge1xuICAgIHByZXYgPSB0aGlzLmNoaWxkTm9kZXNbMF0uc2V0VGVYY2xhc3MocHJldik7XG4gICAgdGhpcy51cGRhdGVUZVhjbGFzcyh0aGlzLmNoaWxkTm9kZXNbMF0pO1xuICAgIHJldHVybiBwcmV2O1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgU1ZHbWVuY2xvc2Ugd3JhcHBlciBmb3IgdGhlIE1tbE1lbmNsb3NlIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vbk1lbmNsb3NlTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tZW5jbG9zZS5qcyc7XG5pbXBvcnQge1NWR21zcXJ0fSBmcm9tICcuL21zcXJ0LmpzJztcbmltcG9ydCAqIGFzIE5vdGF0aW9uIGZyb20gJy4uL05vdGF0aW9uLmpzJztcbmltcG9ydCB7TW1sTWVuY2xvc2V9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tZW5jbG9zZS5qcyc7XG5pbXBvcnQge09wdGlvbkxpc3R9IGZyb20gJy4uLy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIFNWR21lbmNsb3NlIHdyYXBwZXIgZm9yIHRoZSBNbWxNZW5jbG9zZSBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdtZW5jbG9zZTxOLCBULCBEPiBleHRlbmRzIENvbW1vbk1lbmNsb3NlTWl4aW48XG4gIFNWR1dyYXBwZXI8YW55LCBhbnksIGFueT4sXG4gIFNWR21zcXJ0PGFueSwgYW55LCBhbnk+LFxuICBhbnksXG4gIFNWR0NvbnN0cnVjdG9yPGFueSwgYW55LCBhbnk+XG4+KFNWR1dyYXBwZXIpIHtcblxuICAvKipcbiAgICogVGhlIG1lbmNsb3NlIHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE1lbmNsb3NlLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiAgVGhlIGRlZmluaXRpb25zIG9mIHRoZSB2YXJpb3VzIG5vdGF0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBub3RhdGlvbnM6IE5vdGF0aW9uLkRlZkxpc3Q8U1ZHbWVuY2xvc2U8YW55LCBhbnksIGFueT4sIGFueT4gPSBuZXcgTWFwKFtcblxuICAgIE5vdGF0aW9uLkJvcmRlcigndG9wJyksXG4gICAgTm90YXRpb24uQm9yZGVyKCdyaWdodCcpLFxuICAgIE5vdGF0aW9uLkJvcmRlcignYm90dG9tJyksXG4gICAgTm90YXRpb24uQm9yZGVyKCdsZWZ0JyksXG5cbiAgICBOb3RhdGlvbi5Cb3JkZXIyKCdhY3R1YXJpYWwnLCAndG9wJywgJ3JpZ2h0JyksXG4gICAgTm90YXRpb24uQm9yZGVyMignbWFkcnV3YicsICdib3R0b20nLCAncmlnaHQnKSxcblxuICAgIE5vdGF0aW9uLkRpYWdvbmFsU3RyaWtlKCd1cCcpLFxuICAgIE5vdGF0aW9uLkRpYWdvbmFsU3RyaWtlKCdkb3duJyksXG5cbiAgICBbJ2hvcml6b250YWxzdHJpa2UnLCB7XG4gICAgICByZW5kZXJlcjogTm90YXRpb24uUmVuZGVyTGluZSgnaG9yaXpvbnRhbCcsICdZJyksXG4gICAgICBiYm94OiAobm9kZSkgPT4gWzAsIG5vZGUucGFkZGluZywgMCwgbm9kZS5wYWRkaW5nXVxuICAgIH1dLFxuXG4gICAgWyd2ZXJ0aWNhbHN0cmlrZScsIHtcbiAgICAgIHJlbmRlcmVyOiBOb3RhdGlvbi5SZW5kZXJMaW5lKCd2ZXJ0aWNhbCcsICdYJyksXG4gICAgICBiYm94OiAobm9kZSkgPT4gW25vZGUucGFkZGluZywgMCwgbm9kZS5wYWRkaW5nLCAwXVxuICAgIH1dLFxuXG4gICAgWydib3gnLCB7XG4gICAgICByZW5kZXJlcjogKG5vZGUsIF9jaGlsZCkgPT4ge1xuICAgICAgICBjb25zdCB7dywgaCwgZH0gPSBub2RlLmdldEJCb3goKTtcbiAgICAgICAgbm9kZS5hZGFwdG9yLmFwcGVuZChub2RlLmVsZW1lbnQsIG5vZGUuYm94KHcsIGgsIGQpKTtcbiAgICAgIH0sXG4gICAgICBiYm94OiBOb3RhdGlvbi5mdWxsQkJveCxcbiAgICAgIGJvcmRlcjogTm90YXRpb24uZnVsbEJvcmRlcixcbiAgICAgIHJlbW92ZTogJ2xlZnQgcmlnaHQgdG9wIGJvdHRvbSdcbiAgICB9XSxcblxuICAgIFsncm91bmRlZGJveCcsIHtcbiAgICAgIHJlbmRlcmVyOiAobm9kZSwgX2NoaWxkKSA9PiB7XG4gICAgICAgIGNvbnN0IHt3LCBoLCBkfSA9IG5vZGUuZ2V0QkJveCgpO1xuICAgICAgICBjb25zdCByID0gbm9kZS50aGlja25lc3MgKyBub2RlLnBhZGRpbmc7XG4gICAgICAgIG5vZGUuYWRhcHRvci5hcHBlbmQobm9kZS5lbGVtZW50LCBub2RlLmJveCh3LCBoLCBkLCByKSk7XG4gICAgICB9LFxuICAgICAgYmJveDogTm90YXRpb24uZnVsbEJCb3hcbiAgICB9XSxcblxuICAgIFsnY2lyY2xlJywge1xuICAgICAgcmVuZGVyZXI6IChub2RlLCBfY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3Qge3csIGgsIGR9ID0gbm9kZS5nZXRCQm94KCk7XG4gICAgICAgIG5vZGUuYWRhcHRvci5hcHBlbmQobm9kZS5lbGVtZW50LCBub2RlLmVsbGlwc2UodywgaCwgZCkpO1xuICAgICAgfSxcbiAgICAgIGJib3g6IE5vdGF0aW9uLmZ1bGxCQm94XG4gICAgfV0sXG5cbiAgICBbJ3BoYXNvcmFuZ2xlJywge1xuICAgICAgLy9cbiAgICAgIC8vIFVzZSBhIGJvdHRvbSBib3JkZXIgYW5kIGFuIHVwd2FyZCBzdHJpa2UgcHJvcGVybHkgYW5nbGVkXG4gICAgICAvL1xuICAgICAgcmVuZGVyZXI6IChub2RlLCBfY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3Qge3csIGgsIGR9ID0gbm9kZS5nZXRCQm94KCk7XG4gICAgICAgIGNvbnN0IGEgPSBub2RlLmdldEFyZ01vZCgxLjc1ICogbm9kZS5wYWRkaW5nLCBoICsgZClbMF07XG4gICAgICAgIGNvbnN0IHQgPSBub2RlLnRoaWNrbmVzcyAvIDI7XG4gICAgICAgIGNvbnN0IEhEID0gaCArIGQ7XG4gICAgICAgIGNvbnN0IGNvcyA9IE1hdGguY29zKGEpO1xuICAgICAgICBub2RlLmFkYXB0b3IuYXBwZW5kKFxuICAgICAgICAgIG5vZGUuZWxlbWVudCxcbiAgICAgICAgICBub2RlLnBhdGgoJ21pdHJlJywgJ00nLCB3LCB0IC0gZCwgICdMJywgdCArIGNvcyAqIHQsIHQgLSBkLCAgJ0wnICwgY29zICogSEQgKyB0LCBIRCAtIGQgLSB0KVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGJib3g6IChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnBhZGRpbmcgLyAyO1xuICAgICAgICBjb25zdCB0ID0gbm9kZS50aGlja25lc3M7XG4gICAgICAgIHJldHVybiBbMiAqIHAsIHAsIHAgKyB0LCAzICogcCArIHRdO1xuICAgICAgfSxcbiAgICAgIGJvcmRlcjogKG5vZGUpID0+IFswLCAwLCBub2RlLnRoaWNrbmVzcywgMF0sXG4gICAgICByZW1vdmU6ICdib3R0b20nXG4gICAgfV0sXG5cbiAgICBOb3RhdGlvbi5BcnJvdygndXAnKSxcbiAgICBOb3RhdGlvbi5BcnJvdygnZG93bicpLFxuICAgIE5vdGF0aW9uLkFycm93KCdsZWZ0JyksXG4gICAgTm90YXRpb24uQXJyb3coJ3JpZ2h0JyksXG5cbiAgICBOb3RhdGlvbi5BcnJvdygndXBkb3duJyksXG4gICAgTm90YXRpb24uQXJyb3coJ2xlZnRyaWdodCcpLFxuXG4gICAgTm90YXRpb24uRGlhZ29uYWxBcnJvdygndXBkaWFnb25hbCcpLCAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgIE5vdGF0aW9uLkRpYWdvbmFsQXJyb3coJ25vcnRoZWFzdCcpLFxuICAgIE5vdGF0aW9uLkRpYWdvbmFsQXJyb3coJ3NvdXRoZWFzdCcpLFxuICAgIE5vdGF0aW9uLkRpYWdvbmFsQXJyb3coJ25vcnRod2VzdCcpLFxuICAgIE5vdGF0aW9uLkRpYWdvbmFsQXJyb3coJ3NvdXRod2VzdCcpLFxuXG4gICAgTm90YXRpb24uRGlhZ29uYWxBcnJvdygnbm9ydGhlYXN0c291dGh3ZXN0JyksXG4gICAgTm90YXRpb24uRGlhZ29uYWxBcnJvdygnbm9ydGh3ZXN0c291dGhlYXN0JyksXG5cbiAgICBbJ2xvbmdkaXYnLCB7XG4gICAgICAvL1xuICAgICAgLy8gVXNlIGEgbGluZSBhbG9uZyB0aGUgdG9wIGZvbGxvd2VkIGJ5IGEgaGFsZiBlbGxpcHNlIGF0IHRoZSBsZWZ0XG4gICAgICAvL1xuICAgICAgcmVuZGVyZXI6IChub2RlLCBfY2hpbGQpID0+IHtcbiAgICAgICAgY29uc3Qge3csIGgsIGR9ID0gbm9kZS5nZXRCQm94KCk7XG4gICAgICAgIGNvbnN0IHQgPSBub2RlLnRoaWNrbmVzcyAvIDI7XG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnBhZGRpbmc7XG4gICAgICAgIG5vZGUuYWRhcHRvci5hcHBlbmQoXG4gICAgICAgICAgbm9kZS5lbGVtZW50LFxuICAgICAgICAgIG5vZGUucGF0aCgncm91bmQnLFxuICAgICAgICAgICAgICAgICAgICAnTScsIHQsIHQgLSBkLFxuICAgICAgICAgICAgICAgICAgICAnYScsIHAgLSB0IC8gMiwgKGggKyBkKSAvIDIgLSA0ICogdCwgIDAsICAnMCwxJywgIDAsIGggKyBkIC0gMiAqIHQsXG4gICAgICAgICAgICAgICAgICAgICdMJywgdyAtIHQsIGggLSB0XG4gICAgICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgfSxcbiAgICAgIGJib3g6IChub2RlKSA9PiB7XG4gICAgICAgIGNvbnN0IHAgPSBub2RlLnBhZGRpbmc7XG4gICAgICAgIGNvbnN0IHQgPSBub2RlLnRoaWNrbmVzcztcbiAgICAgICAgcmV0dXJuIFtwICsgdCwgcCwgcCwgMiAqIHAgKyB0IC8gMl07XG4gICAgICB9XG4gICAgfV0sXG5cbiAgICBbJ3JhZGljYWwnLCB7XG4gICAgICAvL1xuICAgICAgLy8gIFVzZSB0aGUgbXNxcnQgcmVuZGVyaW5nLCBidXQgcmVtb3ZlIHRoZSBleHRyYSBzcGFjZSBkdWUgdG8gdGhlIHJhZGljYWxcbiAgICAgIC8vICAgIChpdCBpcyBhZGRlZCBpbiBhdCB0aGUgZW5kLCBzbyBvdGhlciBub3RhdGlvbnMgb3ZlcmxhcCB0aGUgcm9vdClcbiAgICAgIC8vXG4gICAgICByZW5kZXJlcjogKG5vZGUsIGNoaWxkKSA9PiB7XG4gICAgICAgIG5vZGUubXNxcnQudG9TVkcoY2hpbGQpO1xuICAgICAgICBjb25zdCBsZWZ0ID0gbm9kZS5zcXJ0VFJCTCgpWzNdO1xuICAgICAgICBub2RlLnBsYWNlKC1sZWZ0LCAwLCBjaGlsZCk7XG4gICAgICB9LFxuICAgICAgLy9cbiAgICAgIC8vICBDcmVhdGUgdGhlIG5lZWRlZCBtc3FydCB3cmFwcGVyXG4gICAgICAvL1xuICAgICAgaW5pdDogKG5vZGUpID0+IHtcbiAgICAgICAgbm9kZS5tc3FydCA9IG5vZGUuY3JlYXRlTXNxcnQobm9kZS5jaGlsZE5vZGVzWzBdKTtcbiAgICAgIH0sXG4gICAgICAvL1xuICAgICAgLy8gIEFkZCBiYWNrIGluIHRoZSBwYWRkaW5nIGZvciB0aGUgc3F1YXJlIHJvb3RcbiAgICAgIC8vXG4gICAgICBiYm94OiAobm9kZSkgPT4gbm9kZS5zcXJ0VFJCTCgpLFxuICAgICAgLy9cbiAgICAgIC8vICBUaGlzIG5vdGF0aW9uIHJlcGxhY2VzIHRoZSBjaGlsZFxuICAgICAgLy9cbiAgICAgIHJlbmRlckNoaWxkOiB0cnVlXG4gICAgfV1cblxuICBdIGFzIE5vdGF0aW9uLkRlZlBhaXI8U1ZHbWVuY2xvc2U8YW55LCBhbnksIGFueT4sIGFueT5bXSk7XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBjb25zdCBzdmcgPSB0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpO1xuICAgIC8vXG4gICAgLy8gIENyZWF0ZSBhIGJveCBhdCB0aGUgY29ycmVjdCBwb3NpdGlvbiBhbmQgYWRkIHRoZSBjaGlsZHJlblxuICAgIC8vXG4gICAgY29uc3QgbGVmdCA9IHRoaXMuZ2V0QkJveEV4dGVuZGVycygpWzNdO1xuICAgIGNvbnN0IGRlZjogT3B0aW9uTGlzdCA9IHt9O1xuICAgIGlmIChsZWZ0ID4gMCkge1xuICAgICAgZGVmLnRyYW5zZm9ybSA9ICd0cmFuc2xhdGUoJyArIHRoaXMuZml4ZWQobGVmdCkgKyAnLCAwKSc7XG4gICAgfVxuICAgIGNvbnN0IGJsb2NrID0gdGhpcy5hZGFwdG9yLmFwcGVuZChzdmcsIHRoaXMuc3ZnKCdnJywgZGVmKSk7XG4gICAgaWYgKHRoaXMucmVuZGVyQ2hpbGQpIHtcbiAgICAgIHRoaXMucmVuZGVyQ2hpbGQodGhpcywgYmxvY2spO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXNbMF0udG9TVkcoYmxvY2spO1xuICAgIH1cbiAgICAvL1xuICAgIC8vICBSZW5kZXIgYWxsIHRoZSBub3RhdGlvbnMgZm9yIHRoaXMgbWVuY2xvc2UgZWxlbWVudFxuICAgIC8vXG4gICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKHRoaXMubm90YXRpb25zKSkge1xuICAgICAgY29uc3Qgbm90YXRpb24gPSB0aGlzLm5vdGF0aW9uc1tuYW1lXTtcbiAgICAgICFub3RhdGlvbi5yZW5kZXJDaGlsZCAmJiBub3RhdGlvbi5yZW5kZXJlcih0aGlzLCBzdmcpO1xuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogQ3JlYXRlIGFuIGFycm93IHVzaW5nIFNWRyBlbGVtZW50c1xuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gVyAgICAgICAgVGhlIGxlbmd0aCBvZiB0aGUgYXJyb3dcbiAgICogQHBhcmFtIHtudW1iZXJ9IGEgICAgICAgIFRoZSBhbmdsZSBmb3IgdGhlIGFycm93XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZG91YmxlICBUcnVlIGlmIHRoaXMgaXMgYSBkb3VibGUtaGVhZGVkIGFycm93XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBvZmZzZXQgICAnWCcgZm9yIHZlcnRpY2FsIGFycm93LCAnWScgZm9yIGhvcml6b250YWxcbiAgICogQHBhcmFtIHtudW1iZXJ9IGRpc3QgICAgIERpc3RhbmNlIHRvIHRyYW5zbGF0ZSBpbiB0aGUgb2Zmc2V0IGRpcmVjdGlvblxuICAgKiBAcmV0dXJuIHtOfSAgICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgYXJyb3dcbiAgICovXG4gIHB1YmxpYyBhcnJvdyhXOiBudW1iZXIsIGE6IG51bWJlciwgZG91YmxlOiBib29sZWFuLCBvZmZzZXQ6IHN0cmluZyA9ICcnLCBkaXN0OiBudW1iZXIgPSAwKTogTiB7XG4gICAgY29uc3Qge3csIGgsIGR9ID0gdGhpcy5nZXRCQm94KCk7XG4gICAgY29uc3QgZHcgPSAoVyAtIHcpIC8gMjtcbiAgICBjb25zdCBtID0gKGggLSBkKSAvIDI7XG4gICAgY29uc3QgdCA9IHRoaXMudGhpY2tuZXNzO1xuICAgIGNvbnN0IHQyID0gdCAvIDI7XG4gICAgY29uc3QgW3gsIHksIGR4XSA9IFt0ICogdGhpcy5hcnJvd2hlYWQueCwgdCAqIHRoaXMuYXJyb3doZWFkLnksIHQgKiB0aGlzLmFycm93aGVhZC5keF07XG4gICAgY29uc3QgYXJyb3cgPVxuICAgICAgKGRvdWJsZSA/XG4gICAgICAgdGhpcy5maWxsKFxuICAgICAgICAgJ00nLCB3ICsgZHcsIG0sICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvaW50IG9mIGFycm93XG4gICAgICAgICAnbCcsIC0oeCArIGR4KSwgeSwgICdsJywgZHgsIHQyIC0geSwgICAgICAgLy8gdXBwZXIgcmlnaHQgaGVhZFxuICAgICAgICAgJ0wnLCB4IC0gZHcsIG0gKyB0MiwgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwcGVyIHNpZGUgb2Ygc2hhZnRcbiAgICAgICAgICdsJywgZHgsIHkgLSB0MiwgJ2wnLCAtKHggKyBkeCksIC0geSwgICAgICAvLyBsZWZ0IHBvaW50XG4gICAgICAgICAnbCcsIHggKyBkeCwgLXksICAgICdsJywgLWR4LCB5IC0gdDIsICAgICAgLy8gbG93ZXIgbGVmdCBoZWFkXG4gICAgICAgICAnTCcsIHcgKyBkdyAtIHgsIG0gLSB0MiwgICAgICAgICAgICAgICAgICAgLy8gbG93ZXIgc2lkZSBvZiBzaGFmdFxuICAgICAgICAgJ2wnLCAtZHgsIHQyIC0geSwgJ1onICAgICAgICAgICAgICAgICAgICAgIC8vIGxvd2VyIGhlYWRcbiAgICAgICApIDpcbiAgICAgICB0aGlzLmZpbGwoXG4gICAgICAgICAnTScsIHcgKyBkdywgbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9pbnQgb2YgYXJyb3dcbiAgICAgICAgICdsJywgLSh4ICsgZHgpLCB5LCAgJ2wnLCBkeCwgdDIgLSB5LCAgICAgICAvLyB1cHBlciBoZWFkXG4gICAgICAgICAnTCcsIC1kdywgbSArIHQyLCAnbCcsIDAsIC10LCAgICAgICAgICAgICAgLy8gdXBwZXIgc2lkZSBvZiBzaGFmdFxuICAgICAgICAgJ0wnLCB3ICsgZHcgLSB4LCBtIC0gdDIsICAgICAgICAgICAgICAgICAgIC8vIGxvd2VyIHNpZGUgb2Ygc2hhZnRcbiAgICAgICAgICdsJywgLWR4LCB0MiAtIHksICdaJyAgICAgICAgICAgICAgICAgICAgICAvLyBsb3dlciBoZWFkXG4gICAgICAgKSk7XG4gICAgY29uc3QgdHJhbnNmb3JtID0gW107XG4gICAgaWYgKGRpc3QpIHtcbiAgICAgIHRyYW5zZm9ybS5wdXNoKG9mZnNldCA9PT0gJ1gnID8gYHRyYW5zbGF0ZSgke3RoaXMuZml4ZWQoLWRpc3QpfSAwKWAgOiBgdHJhbnNsYXRlKDAgJHt0aGlzLmZpeGVkKGRpc3QpfSlgKTtcbiAgICB9XG4gICAgaWYgKGEpIHtcbiAgICAgIGNvbnN0IEEgPSB0aGlzLmpheC5maXhlZCgtYSAqIDE4MCAvIE1hdGguUEkpO1xuICAgICAgdHJhbnNmb3JtLnB1c2goYHJvdGF0ZSgke0F9ICR7dGhpcy5maXhlZCh3IC8gMil9ICR7dGhpcy5maXhlZChtKX0pYCk7XG4gICAgfVxuICAgIGlmICh0cmFuc2Zvcm0ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmFkYXB0b3Iuc2V0QXR0cmlidXRlKGFycm93LCAndHJhbnNmb3JtJywgdHJhbnNmb3JtLmpvaW4oJyAnKSk7XG4gICAgfVxuICAgIHJldHVybiBhcnJvdyBhcyBOO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBsaW5lIGVsZW1lbnRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJbXX0gcHEgICBUaGUgY29vcmRpbmF0ZXMgb2YgdGhlIGVuZHBvaW50cywgW3gxLCB5MSwgeDIsIHkyXVxuICAgKiBAcmV0dXJuIHtOfSAgICAgICAgICAgIFRoZSBuZXdseSBjcmVhdGVkIGxpbmUgZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGxpbmUocHE6IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdKTogTiB7XG4gICAgY29uc3QgW3gxLCB5MSwgeDIsIHkyXSA9IHBxO1xuICAgIHJldHVybiB0aGlzLnN2ZygnbGluZScsIHtcbiAgICAgIHgxOiB0aGlzLmZpeGVkKHgxKSwgeTE6IHRoaXMuZml4ZWQoeTEpLFxuICAgICAgeDI6IHRoaXMuZml4ZWQoeDIpLCB5MjogdGhpcy5maXhlZCh5MiksXG4gICAgICAnc3Ryb2tlLXdpZHRoJzogdGhpcy5maXhlZCh0aGlzLnRoaWNrbmVzcylcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSByZWN0YW5nbGUgZWxlbWVudFxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gdyAgICBUaGUgd2lkdGggb2YgdGhlIHJlY3RhbmdsZVxuICAgKiBAcGFyYW0ge251bWJlcn0gaCAgICBUaGUgaGVpZ2h0IG9mIHRoZSByZWN0YW5nbGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGQgICAgVGhlIGRlcHRoIG9mIHRoZSByZWN0YW5nbGVcbiAgICogQHBhcmFtIHtudW1iZXI9fSByICAgVGhlIGNvcm5lciByYWRpdXMgZm9yIGEgcm91bmRlZCByZWN0YW5nbGVcbiAgICogQHJldHVybiB7Tn0gICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgbGluZSBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgYm94KHc6IG51bWJlciwgaDogbnVtYmVyLCBkOiBudW1iZXIsIHI6IG51bWJlciA9IDApOiBOIHtcbiAgICBjb25zdCB0ID0gdGhpcy50aGlja25lc3M7XG4gICAgY29uc3QgZGVmOiBPcHRpb25MaXN0ID0ge1xuICAgICAgeDogdGhpcy5maXhlZCh0IC8gMiksIHk6IHRoaXMuZml4ZWQodCAvIDIgLSBkKSxcbiAgICAgIHdpZHRoOiB0aGlzLmZpeGVkKHcgLSB0KSwgaGVpZ2h0OiB0aGlzLmZpeGVkKGggKyBkIC0gdCksXG4gICAgICBmaWxsOiAnbm9uZScsICdzdHJva2Utd2lkdGgnOiB0aGlzLmZpeGVkKHQpXG4gICAgfTtcbiAgICBpZiAocikge1xuICAgICAgZGVmLnJ4ID0gdGhpcy5maXhlZChyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuc3ZnKCdyZWN0JywgZGVmKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gZWxsaXBzZSBlbGVtZW50XG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB3ICBUaGUgd2lkdGggb2YgdGhlIGVsbGlwc2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IGggIFRoZSBoZWlnaHQgb2YgdGhlIGVsbGlwc2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IGQgIFRoZSBkZXB0aCBvZiB0aGUgZWxsaXBzZVxuICAgKiBAcmV0dXJuIHtOfSAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgZWxsaXBzZSBub2RlXG4gICAqL1xuICBwdWJsaWMgZWxsaXBzZSh3OiBudW1iZXIsIGg6IG51bWJlciwgZDogbnVtYmVyKTogTiB7XG4gICAgY29uc3QgdCA9IHRoaXMudGhpY2tuZXNzO1xuICAgIHJldHVybiB0aGlzLnN2ZygnZWxsaXBzZScsIHtcbiAgICAgIHJ4OiB0aGlzLmZpeGVkKCh3IC0gdCkgLyAyKSwgcnk6IHRoaXMuZml4ZWQoKGggKyBkIC0gdCkgLyAyKSxcbiAgICAgIGN4OiB0aGlzLmZpeGVkKHcgLyAyKSwgY3k6IHRoaXMuZml4ZWQoKGggLSBkKSAvIDIpLFxuICAgICAgJ2ZpbGwnOiAnbm9uZScsICdzdHJva2Utd2lkdGgnOiB0aGlzLmZpeGVkKHQpXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgcGF0aCBlbGVtZW50IGZyb20gdGhlIGNvbW1hbmRzIHRoYXQgc3BlY2lmeSBpdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gam9pbiAgICAgICAgICAgVGhlIGpvaW4gc3R5bGUgZm9yIHRoZSBwYXRoXG4gICAqIEBwYXJhbSB7KHN0cmluZ3xudW1iZXIpW119IFAgICBUaGUgbGlzdCBvZiBjb21tYW5kcyBhbmQgY29vcmRpbmF0ZXMgZm9yIHRoZSBwYXRoXG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICAgICAgICAgICBUaGUgbmV3bHkgY3JlYXRlZCBwYXRoXG4gICAqL1xuICBwdWJsaWMgcGF0aChqb2luOiBzdHJpbmcsIC4uLlA6IChzdHJpbmcgfCBudW1iZXIpW10pOiBOIHtcbiAgICByZXR1cm4gdGhpcy5zdmcoJ3BhdGgnLCB7XG4gICAgICBkOiBQLm1hcCh4ID0+ICh0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyB4IDogdGhpcy5maXhlZCh4KSkpLmpvaW4oJyAnKSxcbiAgICAgIHN0eWxlOiB7J3N0cm9rZS13aWR0aCc6IHRoaXMuZml4ZWQodGhpcy50aGlja25lc3MpfSxcbiAgICAgICdzdHJva2UtbGluZWNhcCc6ICdyb3VuZCcsICdzdHJva2UtbGluZWpvaW4nOiBqb2luLFxuICAgICAgZmlsbDogJ25vbmUnXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgZmlsbGVkIHBhdGggZWxlbWVudCBmcm9tIHRoZSBjb21tYW5kcyB0aGUgc3BlY2lmeSBpdFxuICAgKiAgIChzYW1lIGFzIHBhdGggYWJvdmUsIGJ1dCBubyB0aGlja25lc3MgYWRqdXN0bWVudHMpXG4gICAqXG4gICAqIEBwYXJhbSB7KHN0cmluZ3xudW1iZXIpW119IFAgICBUaGUgbGlzdCBvZiBjb21tYW5kcyBhbmQgY29vcmRpbmF0ZXMgZm9yIHRoZSBwYXRoXG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICAgICAgICAgICBUaGUgbmV3bHkgY3JlYXRlZCBwYXRoXG4gICAqL1xuICBwdWJsaWMgZmlsbCguLi5QOiAoc3RyaW5nIHwgbnVtYmVyKVtdKTogTiB7XG4gICAgcmV0dXJuIHRoaXMuc3ZnKCdwYXRoJywge1xuICAgICAgZDogUC5tYXAoeCA9PiAodHlwZW9mIHggPT09ICdzdHJpbmcnID8geCA6IHRoaXMuZml4ZWQoeCkpKS5qb2luKCcgJylcbiAgICB9KTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIENvbW1vblNlbWFudGljcyB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sU2VtYW50aWNzIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgQ29tbW9uU2VtYW50aWNzIGludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vblNlbWFudGljcyBleHRlbmRzIEFueVdyYXBwZXIge1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vblNlbWFudGljcyBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBTZW1hbnRpY3NDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yPENvbW1vblNlbWFudGljcz47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vblNlbWFudGljcyB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sU2VtYW50aWNzIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25TZW1hbnRpY3NNaXhpbjxUIGV4dGVuZHMgV3JhcHBlckNvbnN0cnVjdG9yPihCYXNlOiBUKTogU2VtYW50aWNzQ29uc3RydWN0b3IgJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wdXRlQkJveChiYm94OiBCQm94LCBfcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIGlmICh0aGlzLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHt3LCBoLCBkfSA9IHRoaXMuY2hpbGROb2Rlc1swXS5nZXRCQm94KCk7XG4gICAgICAgIGJib3gudyA9IHc7XG4gICAgICAgIGJib3guaCA9IGg7XG4gICAgICAgIGJib3guZCA9IGQ7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbFNlbWFudGljcywgTW1sQW5ub3RhdGlvbiwgYW5kIE1tbEFubm90YXRpb25YTUwgbm9kZXNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtBYnN0cmFjdE1tbE5vZGUsIEFic3RyYWN0TW1sQmFzZU5vZGV9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNcm9vdCBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbEJhc2VOb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxTZW1hbnRpY3MgZXh0ZW5kcyBBYnN0cmFjdE1tbEJhc2VOb2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxCYXNlTm9kZS5kZWZhdWx0cyxcbiAgICBkZWZpbml0aW9uVXJsOiBudWxsLFxuICAgIGVuY29kaW5nOiBudWxsXG4gIH07XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnc2VtYW50aWNzJztcbiAgfVxuXG4gIC8qKlxuICAgKiA8c2VtYW50aWNzPiByZXF1aXJlcyBhdCBsZWFzdCBvbmUgbm9kZVxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgYXJpdHkoKSB7XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICAvKipcbiAgICogSWdub3JlIDxzZW1hbnRpY3M+IHdoZW4gbG9va2luZyBmb3IgcGFydGVudCBub2RlXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBub3RQYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNcm9vdCBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbE5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbEFubm90YXRpb25YTUwgZXh0ZW5kcyBBYnN0cmFjdE1tbE5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbE5vZGUuZGVmYXVsdHMsXG4gICAgZGVmaW5pdGlvblVybDogbnVsbCxcbiAgICBlbmNvZGluZzogbnVsbCxcbiAgICBjZDogJ21hdGhtbGtleXMnLFxuICAgIG5hbWU6ICcnLFxuICAgIHNyYzogbnVsbFxuICB9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ2Fubm90YXRpb24teG1sJztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGlsZHJlbiBhcmUgWE1MTm9kZXMsIHNvIGRvbid0IGJvdGhlciBpbmhlcml0dGluZyB0byB0aGVtXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHNldENoaWxkSW5oZXJpdGVkQXR0cmlidXRlcygpIHt9XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTXJvb3Qgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgTW1sQW5ub3RhdGlvblhNTClcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sQW5ub3RhdGlvbiBleHRlbmRzIE1tbEFubm90YXRpb25YTUwge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHMgPSB7XG4gICAgLi4uTW1sQW5ub3RhdGlvblhNTC5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYSBwcm9wZXJ0aWVzIGZvciB0aGlzIG5vZGVcbiAgICovXG4gIHB1YmxpYyBwcm9wZXJ0aWVzID0ge1xuICAgIGlzQ2hhcnM6IHRydWVcbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdhbm5vdGF0aW9uJztcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR3NlbWFudGljcyB3cmFwcGVyIGZvciB0aGUgTW1sU2VtYW50aWNzIG9iamVjdFxuICogICAgICAgICAgICAgICAgYW5kIHRoZSBhc3NvY2lhdGVkIHdyYXBwZXJzIGZvciBhbm5vdGF0aW9uc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0NvbW1vblNlbWFudGljc01peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvc2VtYW50aWNzLmpzJztcbmltcG9ydCB7QkJveH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9CQm94LmpzJztcbmltcG9ydCB7TW1sU2VtYW50aWNzLCBNbWxBbm5vdGF0aW9uLCBNbWxBbm5vdGF0aW9uWE1MfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZXMvc2VtYW50aWNzLmpzJztcbmltcG9ydCB7WE1MTm9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtTdHlsZUxpc3R9IGZyb20gJy4uLy4uLy4uL3V0aWwvU3R5bGVMaXN0LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHc2VtYW50aWNzIHdyYXBwZXIgZm9yIHRoZSBNbWxTZW1hbnRpY3Mgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG4vLyBAdHMtaWdub3JlXG5leHBvcnQgY2xhc3MgU1ZHc2VtYW50aWNzPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vblNlbWFudGljc01peGluPFNWR0NvbnN0cnVjdG9yPGFueSwgYW55LCBhbnk+PihTVkdXcmFwcGVyKSB7XG5cbiAgLyoqXG4gICAqIFRoZSBzZW1hbnRpY3Mgd3JhcHBlclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBraW5kID0gTW1sU2VtYW50aWNzLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBjb25zdCBzdmcgPSB0aGlzLnN0YW5kYXJkU1ZHbm9kZShwYXJlbnQpO1xuICAgIGlmICh0aGlzLmNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNoaWxkTm9kZXNbMF0udG9TVkcoc3ZnKTtcbiAgICB9XG4gIH1cblxufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIFNWR2Fubm90YXRpb24gd3JhcHBlciBmb3IgdGhlIE1tbEFubm90YXRpb24gb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU1ZHYW5ub3RhdGlvbjxOLCBULCBEPiBleHRlbmRzIFNWR1dyYXBwZXI8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBUaGUgYW5ub3RhdGlvbiB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxBbm5vdGF0aW9uLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICAvLyBGSVhNRTogIG91dHB1dCBhcyBwbGFpbiB0ZXh0XG4gICAgc3VwZXIudG9TVkcocGFyZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjb21wdXRlQkJveCgpIHtcbiAgICAvLyBGSVhNRTogIGNvbXB1dGUgdXNpbmcgdGhlIERPTSwgaWYgcG9zc2libGVcbiAgICByZXR1cm4gdGhpcy5iYm94O1xuICB9XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHYW5ub3RhdGlvblhNTCB3cmFwcGVyIGZvciB0aGUgTW1sQW5ub3RhdGlvblhNTCBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBTVkdhbm5vdGF0aW9uWE1MPE4sIFQsIEQ+IGV4dGVuZHMgU1ZHV3JhcHBlcjxOLCBULCBEPiB7XG5cbiAgLyoqXG4gICAqIFRoZSBhbm5vdGF0aW9uLXhtbCB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBNbWxBbm5vdGF0aW9uWE1MLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc3R5bGVzOiBTdHlsZUxpc3QgPSB7XG4gICAgJ2ZvcmVpZ25PYmplY3RbZGF0YS1tangteG1sXSc6IHtcbiAgICAgICdmb250LWZhbWlseSc6ICdpbml0aWFsJyxcbiAgICAgICdsaW5lLWhlaWdodCc6ICdub3JtYWwnLFxuICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJ1xuICAgIH1cbiAgfTtcblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBTVkd4bWwgd3JhcHBlciBmb3IgdGhlIFhNTE5vZGUgb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU1ZHeG1sPE4sIFQsIEQ+IGV4dGVuZHMgU1ZHV3JhcHBlcjxOLCBULCBEPiB7XG5cbiAgLyoqXG4gICAqIFRoZSBYTUxOb2RlIHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IFhNTE5vZGUucHJvdG90eXBlLmtpbmQ7XG5cbiAgLyoqXG4gICAqIERvbid0IGluY2x1ZGUgaW5saW5lLWJsb2NrIENTUyBmb3IgdGhpcyBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGF1dG9TdHlsZSA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBjb25zdCB4bWwgPSB0aGlzLmFkYXB0b3IuY2xvbmUoKHRoaXMubm9kZSBhcyBYTUxOb2RlKS5nZXRYTUwoKSBhcyBOKTtcbiAgICBjb25zdCBlbSA9IHRoaXMuamF4Lm1hdGgubWV0cmljcy5lbSAqIHRoaXMuamF4Lm1hdGgubWV0cmljcy5zY2FsZTtcbiAgICBjb25zdCBzY2FsZSA9IHRoaXMuZml4ZWQoMSAvIGVtKTtcbiAgICBjb25zdCB7dywgaCwgZH0gPSB0aGlzLmdldEJCb3goKTtcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLmFkYXB0b3IuYXBwZW5kKHBhcmVudCwgdGhpcy5zdmcoJ2ZvcmVpZ25PYmplY3QnLCB7XG4gICAgICAnZGF0YS1tangteG1sJzogdHJ1ZSxcbiAgICAgIHk6IHRoaXMuamF4LmZpeGVkKC1oICogZW0pICsgJ3B4JyxcbiAgICAgIHdpZHRoOiB0aGlzLmpheC5maXhlZCh3ICogZW0pICsgJ3B4JyxcbiAgICAgIGhlaWdodDogdGhpcy5qYXguZml4ZWQoKGggKyBkKSAqIGVtKSArICdweCcsXG4gICAgICB0cmFuc2Zvcm06IGBzY2FsZSgke3NjYWxlfSkgbWF0cml4KDEgMCAwIC0xIDAgMClgXG4gICAgfSwgW3htbF0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjb21wdXRlQkJveChiYm94OiBCQm94LCBfcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBjb25zdCB7dywgaCwgZH0gPSB0aGlzLmpheC5tZWFzdXJlWE1Mbm9kZSgodGhpcy5ub2RlIGFzIFhNTE5vZGUpLmdldFhNTCgpIGFzIE4pO1xuICAgIGJib3gudyA9IHc7XG4gICAgYmJveC5oID0gaDtcbiAgICBiYm94LmQgPSBkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFN0eWxlcygpIHt9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFNjYWxlKCkge31cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFyaWFudCgpIHt9XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIENvbW1vbk1nbHlwaCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWdseXBoIG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtBbnlXcmFwcGVyLCBXcmFwcGVyQ29uc3RydWN0b3IsIENvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uVGV4dE5vZGV9IGZyb20gJy4vVGV4dE5vZGUuanMnO1xuaW1wb3J0IHtUZXh0Tm9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25NZ2x5cGggaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uTWdseXBoIGV4dGVuZHMgQW55V3JhcHBlciB7XG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UncyB3aWR0aCBjb252ZXJ0ZWQgdG8gZW0nc1xuICAgKi9cbiAgd2lkdGg6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBpbWFnZSdzIGhlaWdodCBjb252ZXJ0ZWQgdG8gZW0nc1xuICAgKi9cbiAgaGVpZ2h0OiBudW1iZXI7XG4gIC8qXG4gICAqIFRoZSBpbWFnZSdzIHZhbGlnbiB2YWx1ZXMgY29udmVydGVkIHRvIGVtJ3NcbiAgICovXG4gIHZhbGlnbjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUZXh0Tm9kZSB1c2VkIGZvciBkZXByZWNhdGVkIGZvbnRmYW1pbHkvaW5kZXggdXNlIGNhc2VcbiAgICovXG4gIGNoYXJXcmFwcGVyOiBDb21tb25UZXh0Tm9kZTtcblxuICAvKipcbiAgICogT2J0YWluIHRoZSB3aWR0aCwgaGVpZ2h0LCBhbmQgdmFsaWduLlxuICAgKiBOb3RlOiAgQ3VycmVudGx5LCB0aGUgd2lkdGggYW5kIGhlaWdodCBtdXN0IGJlIHNwZWNpZmllZCBleHBsaWNpdGx5LCBvciB0aGV5IGRlZmF1bHQgdG8gMWVtXG4gICAqICAgU2luY2UgbG9hZGluZyB0aGUgaW1hZ2UgbWF5IGJlIGFzeW5jaHJvbm91cywgaXQgd291bGQgcmVxdWlyZSBhIHJlc3RhcnQuXG4gICAqICAgQSBmdXR1cmUgZXh0ZW5zaW9uIGNvdWxkIGltcGxlbWVudCB0aGlzIGVpdGhlciBieSBzdWJjbGFzc2luZyB0aGlzIG9iamVjdCwgb3JcbiAgICogICBwZXJoYXBzIGFzIGEgcG9zdC1maWx0ZXIgb24gdGhlIE1hdGhNTCBpbnB1dCBqYXggdGhhdCBhZGRzIHRoZSBuZWVkZWQgZGltZW5zaW9uc1xuICAgKi9cbiAgZ2V0UGFyYW1ldGVycygpOiB2b2lkO1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vbk1nbHlwaCBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBNZ2x5cGhDb25zdHJ1Y3RvciA9IENvbnN0cnVjdG9yPENvbW1vbk1nbHlwaD47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vbk1nbHlwaCB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sTWdseXBoIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25NZ2x5cGhNaXhpbjxUIGV4dGVuZHMgV3JhcHBlckNvbnN0cnVjdG9yPihCYXNlOiBUKTogTWdseXBoQ29uc3RydWN0b3IgJiBUIHtcblxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBCYXNlIHtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyB3aWR0aDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBoZWlnaHQ6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgdmFsaWduOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY2hhcldyYXBwZXI6IENvbW1vblRleHROb2RlO1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICogQGNvbnN0cnVjdG9yXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczogYW55W10pIHtcbiAgICAgIHN1cGVyKC4uLmFyZ3MpO1xuICAgICAgdGhpcy5nZXRQYXJhbWV0ZXJzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldFBhcmFtZXRlcnMoKSB7XG4gICAgICBjb25zdCB7d2lkdGgsIGhlaWdodCwgdmFsaWduLCBzcmMsIGluZGV4fSA9XG4gICAgICAgIHRoaXMubm9kZS5hdHRyaWJ1dGVzLmdldExpc3QoJ3dpZHRoJywgJ2hlaWdodCcsICd2YWxpZ24nLCAnc3JjJywgJ2luZGV4Jyk7XG4gICAgICBpZiAoc3JjKSB7XG4gICAgICAgIHRoaXMud2lkdGggPSAod2lkdGggPT09ICdhdXRvJyA/IDEgOiB0aGlzLmxlbmd0aDJlbSh3aWR0aCkpO1xuICAgICAgICB0aGlzLmhlaWdodCA9IChoZWlnaHQgPT09ICdhdXRvJyA/IDEgOiB0aGlzLmxlbmd0aDJlbShoZWlnaHQpKTtcbiAgICAgICAgdGhpcy52YWxpZ24gPSB0aGlzLmxlbmd0aDJlbSh2YWxpZ24gfHwgJzAnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRleHQgPSBTdHJpbmcuZnJvbUNvZGVQb2ludChwYXJzZUludChpbmRleCBhcyBzdHJpbmcpKTtcbiAgICAgICAgY29uc3QgbW1sRmFjdG9yeSA9IHRoaXMubm9kZS5mYWN0b3J5O1xuICAgICAgICB0aGlzLmNoYXJXcmFwcGVyID0gdGhpcy53cmFwKChtbWxGYWN0b3J5LmNyZWF0ZSgndGV4dCcpIGFzIFRleHROb2RlKS5zZXRUZXh0KHRleHQpKTtcbiAgICAgICAgdGhpcy5jaGFyV3JhcHBlci5wYXJlbnQgPSB0aGlzIGFzIGFueSBhcyBBbnlXcmFwcGVyO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBjb21wdXRlQkJveChiYm94OiBCQm94LCBfcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIGlmICh0aGlzLmNoYXJXcmFwcGVyKSB7XG4gICAgICAgIGJib3gudXBkYXRlRnJvbSh0aGlzLmNoYXJXcmFwcGVyLmdldEJCb3goKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBiYm94LncgPSB0aGlzLndpZHRoO1xuICAgICAgICBiYm94LmggPSB0aGlzLmhlaWdodCArIHRoaXMudmFsaWduO1xuICAgICAgICBiYm94LmQgPSAtdGhpcy52YWxpZ247XG4gICAgICB9XG4gICAgfVxuXG4gIH07XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgTW1sTWdseXBoIG5vZGVcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtBYnN0cmFjdE1tbFRva2VuTm9kZSwgVEVYQ0xBU1N9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNZ2x5cGggbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxUb2tlbk5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbE1nbHlwaCBleHRlbmRzIEFic3RyYWN0TW1sVG9rZW5Ob2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxUb2tlbk5vZGUuZGVmYXVsdHMsXG4gICAgYWx0OiAnJyxcbiAgICBzcmM6ICcnLFxuICAgIGluZGV4OiAnJyxcbiAgICB3aWR0aDogJ2F1dG8nLFxuICAgIGhlaWdodDogJ2F1dG8nLFxuICAgIHZhbGlnbjogJzBlbSdcbiAgfTtcblxuICAvKipcbiAgICogVGVYIGNsYXNzIGlzIE9SRFxuICAgKi9cbiAgcHJvdGVjdGVkIHRleGNsYXNzID0gVEVYQ0xBU1MuT1JEO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21nbHlwaCc7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdmVyaWZ5QXR0cmlidXRlcyhvcHRpb25zOiBQcm9wZXJ0eUxpc3QpIHtcbiAgICBjb25zdCB7c3JjLCBmb250ZmFtaWx5LCBpbmRleH0gPSB0aGlzLmF0dHJpYnV0ZXMuZ2V0TGlzdCgnc3JjJywgJ2ZvbnRmYW1pbHknLCAnaW5kZXgnKTtcbiAgICBpZiAoc3JjID09PSAnJyAmJiAoZm9udGZhbWlseSA9PT0gJycgfHwgaW5kZXggPT09ICcnKSkge1xuICAgICAgdGhpcy5tRXJyb3IoJ21nbHlwaCBtdXN0IGhhdmUgZWl0aGVyIHNyYyBvciBmb250ZmFtaWx5IGFuZCBpbmRleCBhdHRyaWJ1dGVzJywgb3B0aW9ucywgdHJ1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN1cGVyLnZlcmlmeUF0dHJpYnV0ZXMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgU1ZHbWdseXBoIHdyYXBwZXIgZm9yIHRoZSBNbWxNZ2x5cGggb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXIsIFNWR0NvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uTWdseXBoTWl4aW59IGZyb20gJy4uLy4uL2NvbW1vbi9XcmFwcGVycy9tZ2x5cGguanMnO1xuaW1wb3J0IHtNbWxNZ2x5cGh9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9tZ2x5cGguanMnO1xuaW1wb3J0IHtTVkdUZXh0Tm9kZX0gZnJvbSAnLi9UZXh0Tm9kZS5qcyc7XG5pbXBvcnQge09wdGlvbkxpc3R9IGZyb20gJy4uLy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIFNWR21nbHlwaCB3cmFwcGVyIGZvciB0aGUgTW1sTWdseXBoIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuLy8gQHRzLWlnbm9yZVxuZXhwb3J0IGNsYXNzIFNWR21nbHlwaDxOLCBULCBEPiBleHRlbmRzXG5Db21tb25NZ2x5cGhNaXhpbjxTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgbWdseXBoIHdyYXBwZXJcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMga2luZCA9IE1tbE1nbHlwaC5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdG9TVkcocGFyZW50OiBOKSB7XG4gICAgY29uc3Qgc3ZnID0gdGhpcy5zdGFuZGFyZFNWR25vZGUocGFyZW50KTtcbiAgICBpZiAodGhpcy5jaGFyV3JhcHBlcikge1xuICAgICAgKHRoaXMuY2hhcldyYXBwZXIgYXMgU1ZHVGV4dE5vZGU8TiwgVCwgRD4pLnRvU1ZHKHN2Zyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHtzcmMsIGFsdH0gPSB0aGlzLm5vZGUuYXR0cmlidXRlcy5nZXRMaXN0KCdzcmMnLCAnYWx0Jyk7XG4gICAgY29uc3QgaCA9IHRoaXMuZml4ZWQodGhpcy5oZWlnaHQpO1xuICAgIGNvbnN0IHcgPSB0aGlzLmZpeGVkKHRoaXMud2lkdGgpO1xuICAgIGNvbnN0IHkgPSB0aGlzLmZpeGVkKHRoaXMuaGVpZ2h0ICsgKHRoaXMudmFsaWduIHx8IDApKTtcbiAgICBjb25zdCBwcm9wZXJ0aWVzOiBPcHRpb25MaXN0ID0ge1xuICAgICAgd2lkdGg6IHcsIGhlaWdodDogaCxcbiAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgwICcgKyB5ICsgJykgbWF0cml4KDEgMCAwIC0xIDAgMCknLFxuICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbzogJ25vbmUnLFxuICAgICAgJ2FyaWEtbGFiZWwnOiBhbHQsXG4gICAgICBocmVmOiBzcmNcbiAgICB9O1xuICAgIGNvbnN0IGltZyA9IHRoaXMuc3ZnKCdpbWFnZScsIHByb3BlcnRpZXMpO1xuICAgIHRoaXMuYWRhcHRvci5hcHBlbmQoc3ZnLCBpbWcpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgQ29tbW9uVGVYQXRvbSB3cmFwcGVyIG1peGluIGZvciB0aGUgTW1sVGVYQXRvbSBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QW55V3JhcHBlciwgV3JhcHBlckNvbnN0cnVjdG9yLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi4vV3JhcHBlci5qcyc7XG5pbXBvcnQge0JCb3h9IGZyb20gJy4uLy4uLy4uL3V0aWwvQkJveC5qcyc7XG5pbXBvcnQge1RFWENMQVNTfSBmcm9tICcuLi8uLi8uLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vblRlWEF0b20gaW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uVGVYQXRvbSBleHRlbmRzIEFueVdyYXBwZXIge1xufVxuXG4vKipcbiAqIFNob3J0aGFuZCBmb3IgdGhlIENvbW1vblRlWEF0b20gY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IHR5cGUgVGVYQXRvbUNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8Q29tbW9uVGVYQXRvbT47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogVGhlIENvbW1vblRlWEF0b20gd3JhcHBlciBtaXhpbiBmb3IgdGhlIFRlWEF0b20gb2JqZWN0XG4gKlxuICogQHRlbXBsYXRlIFQgIFRoZSBXcmFwcGVyIGNsYXNzIGNvbnN0cnVjdG9yIHR5cGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIENvbW1vblRlWEF0b21NaXhpbjxUIGV4dGVuZHMgV3JhcHBlckNvbnN0cnVjdG9yPihCYXNlOiBUKTogVGVYQXRvbUNvbnN0cnVjdG9yICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCwgcmVjb21wdXRlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICAgIHN1cGVyLmNvbXB1dGVCQm94KGJib3gsIHJlY29tcHV0ZSk7XG4gICAgICBpZiAodGhpcy5jaGlsZE5vZGVzWzBdICYmIHRoaXMuY2hpbGROb2Rlc1swXS5iYm94LmljKSB7XG4gICAgICAgIGJib3guaWMgPSB0aGlzLmNoaWxkTm9kZXNbMF0uYmJveC5pYztcbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICAvLyBDZW50ZXIgVkNFTlRFUiBhdG9tcyB2ZXJ0aWNhbGx5XG4gICAgICAvL1xuICAgICAgaWYgKHRoaXMubm9kZS50ZXhDbGFzcyA9PT0gVEVYQ0xBU1MuVkNFTlRFUikge1xuICAgICAgICBjb25zdCB7aCwgZH0gPSBiYm94O1xuICAgICAgICBjb25zdCBhID0gdGhpcy5mb250LnBhcmFtcy5heGlzX2hlaWdodDtcbiAgICAgICAgY29uc3QgZGggPSAoKGggKyBkKSAvIDIgKyBhKSAtIGg7ICAvLyBuZXcgaGVpZ2h0IG1pbnVzIG9sZCBoZWlnaHRcbiAgICAgICAgYmJveC5oICs9IGRoO1xuICAgICAgICBiYm94LmQgLT0gZGg7XG4gICAgICB9XG4gICAgfVxuXG4gIH07XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgVGVYQXRvbSBub2RlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge01tbEZhY3Rvcnl9IGZyb20gJy4uL01tbEZhY3RvcnkuanMnO1xuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge0Fic3RyYWN0TW1sQmFzZU5vZGUsIE1tbE5vZGUsIFRFWENMQVNTfSBmcm9tICcuLi9NbWxOb2RlLmpzJztcbmltcG9ydCB7TW1sTW99IGZyb20gJy4vbW8uanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBUZVhBdG9tIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sQmFzZU5vZGUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIFRlWEF0b20gZXh0ZW5kcyBBYnN0cmFjdE1tbEJhc2VOb2RlIHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgLi4uQWJzdHJhY3RNbWxCYXNlTm9kZS5kZWZhdWx0c1xuICB9O1xuXG4gIC8qKlxuICAgKiBUZVggY2xhc3MgaXMgT1JEXG4gICAqL1xuICBwcm90ZWN0ZWQgdGV4Y2xhc3MgPSBURVhDTEFTUy5PUkQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnVGVYQXRvbSc7XG4gIH1cblxuICAvKipcbiAgICogSW5mZXJyZWQgbXJvdyB3aXRoIGFueSBudW1iZXIgb2YgY2hpbGRyZW5cbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaXR5KCkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGVsZW1lbnQgaXMgbm90IGNvbnNpZGVyZWQgYSBNYXRoTUwgY29udGFpbmVyXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBub3RQYXJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlc1swXSAmJiB0aGlzLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlcy5sZW5ndGggPT09IDE7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBNbWxGYWN0b3J5LCBhdHRyaWJ1dGVzOiBQcm9wZXJ0eUxpc3QsIGNoaWxkcmVuOiBNbWxOb2RlW10pIHtcbiAgICBzdXBlcihmYWN0b3J5LCBhdHRyaWJ1dGVzLCBjaGlsZHJlbik7XG4gICAgdGhpcy5zZXRQcm9wZXJ0eSgndGV4Q2xhc3MnLCB0aGlzLnRleENsYXNzKTsgICAvLyBuZWVkZWQgZm9yIHNlcmlhbGl6YXRpb24gdG8gaW5jbHVkZSB0aGUgdGV4Q2xhc3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKSB7XG4gICAgdGhpcy5jaGlsZE5vZGVzWzBdLnNldFRlWGNsYXNzKG51bGwpO1xuICAgIHJldHVybiB0aGlzLmFkanVzdFRlWGNsYXNzKHByZXYpO1xuICB9XG5cbiAgLyoqXG4gICAqIChSZXBsYWNlZCBiZWxvdyBieSB0aGUgdmVyc2lvbiBmcm9tIHRoZSBNbWxNbyBub2RlKVxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhZGp1c3RUZVhjbGFzcyhwcmV2OiBNbWxOb2RlKSB7XG4gICAgcmV0dXJuIHByZXY7XG4gIH1cblxufVxuLyoqXG4gKiAgVXNlIHRoZSBtZXRob2QgZnJvbSB0aGUgTW1sTW8gY2xhc3NcbiAqL1xuVGVYQXRvbS5wcm90b3R5cGUuYWRqdXN0VGVYY2xhc3MgPSBNbWxNby5wcm90b3R5cGUuYWRqdXN0VGVYY2xhc3M7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR1RlWEF0b20gd3JhcHBlciBmb3IgdGhlIE1tbFRlWEF0b20gb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1NWR1dyYXBwZXIsIFNWR0NvbnN0cnVjdG9yfSBmcm9tICcuLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7Q29tbW9uVGVYQXRvbU1peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvVGVYQXRvbS5qcyc7XG5pbXBvcnQge1RlWEF0b219IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2Rlcy9UZVhBdG9tLmpzJztcbmltcG9ydCB7VEVYQ0xBU1MsIFRFWENMQVNTTkFNRVN9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgU1ZHVGVYQXRvbSB3cmFwcGVyIGZvciB0aGUgVGVYQXRvbSBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdUZVhBdG9tPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vblRlWEF0b21NaXhpbjxTVkdDb25zdHJ1Y3RvcjxhbnksIGFueSwgYW55Pj4oU1ZHV3JhcHBlcikge1xuXG4gIC8qKlxuICAgKiBUaGUgVGVYQXRvbSB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBUZVhBdG9tLnByb3RvdHlwZS5raW5kO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0b1NWRyhwYXJlbnQ6IE4pIHtcbiAgICBzdXBlci50b1NWRyhwYXJlbnQpO1xuICAgIHRoaXMuYWRhcHRvci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCAnZGF0YS1tangtdGV4Y2xhc3MnLCBURVhDTEFTU05BTUVTW3RoaXMubm9kZS50ZXhDbGFzc10pO1xuICAgIC8vXG4gICAgLy8gQ2VudGVyIFZDRU5URVIgYXRvbXMgdmVydGljYWxseVxuICAgIC8vXG4gICAgaWYgKHRoaXMubm9kZS50ZXhDbGFzcyA9PT0gVEVYQ0xBU1MuVkNFTlRFUikge1xuICAgICAgY29uc3QgYmJveCA9IHRoaXMuY2hpbGROb2Rlc1swXS5nZXRCQm94KCk7ICAvLyBnZXQgdW5tb2RpZmllZCBiYm94IG9mIGNoaWxkcmVuXG4gICAgICBjb25zdCB7aCwgZH0gPSBiYm94O1xuICAgICAgY29uc3QgYSA9IHRoaXMuZm9udC5wYXJhbXMuYXhpc19oZWlnaHQ7XG4gICAgICBjb25zdCBkaCA9ICgoaCArIGQpIC8gMiArIGEpIC0gaDsgIC8vIG5ldyBoZWlnaHQgbWludXMgb2xkIGhlaWdodFxuICAgICAgY29uc3QgdHJhbnNsYXRlID0gJ3RyYW5zbGF0ZSgwICcgKyB0aGlzLmZpeGVkKGRoKSArICcpJztcbiAgICAgIHRoaXMuYWRhcHRvci5zZXRBdHRyaWJ1dGUodGhpcy5lbGVtZW50LCAndHJhbnNmb3JtJywgdHJhbnNsYXRlKTtcbiAgICB9XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBDb21tb25UZXh0Tm9kZSB3cmFwcGVyIG1peGluIGZvciB0aGUgVGV4dE5vZGUgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0FueVdyYXBwZXIsIFdyYXBwZXJDb25zdHJ1Y3RvciwgQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtCQm94fSBmcm9tICcuLi8uLi8uLi91dGlsL0JCb3guanMnO1xuaW1wb3J0IHtUZXh0Tm9kZX0gZnJvbSAnLi4vLi4vLi4vY29yZS9NbWxUcmVlL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBDb21tb25UZXh0Tm9kZSBpbnRlcmZhY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25UZXh0Tm9kZSBleHRlbmRzIEFueVdyYXBwZXIge1xuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgIFRoZSB0ZXh0IHRvIHJlbWFwXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYW50ICBUaGUgdmFyaWFudCBmb3IgdGhlIGNoYXJhY3RlclxuICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICAgICAgVGhlIHVuaWNvZGUgcG9pbnRzIGZvciB0aGUgKHJlbWFwcGVkKSB0ZXh0XG4gICAqL1xuICByZW1hcHBlZFRleHQodGV4dDogc3RyaW5nLCB2YXJpYW50OiBzdHJpbmcpOiBudW1iZXJbXTtcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmQgZm9yIHRoZSBDb21tb25UZXh0Tm9kZSBjb25zdHJ1Y3RvclxuICovXG5leHBvcnQgdHlwZSBUZXh0Tm9kZUNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I8Q29tbW9uVGV4dE5vZGU+O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgQ29tbW9uVGV4dE5vZGUgd3JhcHBlciBtaXhpbiBmb3IgdGhlIFRleHROb2RlIG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgV3JhcHBlciBjbGFzcyBjb25zdHJ1Y3RvciB0eXBlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDb21tb25UZXh0Tm9kZU1peGluPFQgZXh0ZW5kcyBXcmFwcGVyQ29uc3RydWN0b3I+KEJhc2U6IFQpOiBUZXh0Tm9kZUNvbnN0cnVjdG9yICYgVCB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgY29tcHV0ZUJCb3goYmJveDogQkJveCwgX3JlY29tcHV0ZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBjb25zdCB2YXJpYW50ID0gdGhpcy5wYXJlbnQudmFyaWFudDtcbiAgICAgIGNvbnN0IHRleHQgPSAodGhpcy5ub2RlIGFzIFRleHROb2RlKS5nZXRUZXh0KCk7XG4gICAgICBpZiAodmFyaWFudCA9PT0gJy1leHBsaWNpdEZvbnQnKSB7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIE1lYXN1cmUgdGhlIHNpemUgb2YgdGhlIHRleHQgKHVzaW5nIHRoZSBET00gaWYgcG9zc2libGUpXG4gICAgICAgIC8vXG4gICAgICAgIGNvbnN0IGZvbnQgPSB0aGlzLmpheC5nZXRGb250RGF0YSh0aGlzLnBhcmVudC5zdHlsZXMpO1xuICAgICAgICBjb25zdCB7dywgaCwgZH0gPSB0aGlzLmpheC5tZWFzdXJlVGV4dCh0ZXh0LCB2YXJpYW50LCBmb250KTtcbiAgICAgICAgYmJveC5oID0gaDtcbiAgICAgICAgYmJveC5kID0gZDtcbiAgICAgICAgYmJveC53ID0gdztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNoYXJzID0gdGhpcy5yZW1hcHBlZFRleHQodGV4dCwgdmFyaWFudCk7XG4gICAgICAgIGJib3guZW1wdHkoKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBjaGFyYWN0ZXJzIGFuZCBhZGQgdGhlbSBpbiBvbmUgYnkgb25lXG4gICAgICAgIC8vXG4gICAgICAgIGZvciAoY29uc3QgY2hhciBvZiBjaGFycykge1xuICAgICAgICAgIGxldCBbaCwgZCwgdywgZGF0YV0gPSB0aGlzLmdldFZhcmlhbnRDaGFyKHZhcmlhbnQsIGNoYXIpO1xuICAgICAgICAgIGlmIChkYXRhLnVua25vd24pIHtcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAvLyBNZWFzdXJlIHVua25vd24gY2hhcmFjdGVycyB1c2luZyB0aGUgRE9NIChpZiBwb3NzaWJsZSlcbiAgICAgICAgICAgIC8vXG4gICAgICAgICAgICBjb25zdCBjYm94ID0gdGhpcy5qYXgubWVhc3VyZVRleHQoU3RyaW5nLmZyb21Db2RlUG9pbnQoY2hhciksIHZhcmlhbnQpO1xuICAgICAgICAgICAgdyA9IGNib3gudztcbiAgICAgICAgICAgIGggPSBjYm94Lmg7XG4gICAgICAgICAgICBkID0gY2JveC5kO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvL1xuICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgYm91bmRpbmcgYm94XG4gICAgICAgICAgLy9cbiAgICAgICAgICBiYm94LncgKz0gdztcbiAgICAgICAgICBpZiAoaCA+IGJib3guaCkgYmJveC5oID0gaDtcbiAgICAgICAgICBpZiAoZCA+IGJib3guZCkgYmJveC5kID0gZDtcbiAgICAgICAgICBiYm94LmljID0gZGF0YS5pYyB8fCAwO1xuICAgICAgICAgIGJib3guc2sgPSBkYXRhLnNrIHx8IDA7XG4gICAgICAgICAgYmJveC5keCA9IGRhdGEuZHggfHwgMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhcnMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGJib3guc2sgPSAwO1xuICAgICAgICB9XG4gICAgICAgIGJib3guY2xlYW4oKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgICAgVGhlIHRleHQgdG8gcmVtYXBcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdmFyaWFudCAgVGhlIHZhcmlhbnQgZm9yIHRoZSBjaGFyYWN0ZXJcbiAgICAgKiBAcmV0dXJuIHtudW1iZXJbXX0gICAgICAgVGhlIHVuaWNvZGUgcG9pbnRzIGZvciB0aGUgKHJlbWFwcGVkKSB0ZXh0XG4gICAgICovXG4gICAgcHVibGljIHJlbWFwcGVkVGV4dCh0ZXh0OiBzdHJpbmcsIHZhcmlhbnQ6IHN0cmluZyk6IG51bWJlcltdIHtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLnBhcmVudC5zdHJldGNoLmM7XG4gICAgICByZXR1cm4gKGMgPyBbY10gOiB0aGlzLnBhcmVudC5yZW1hcENoYXJzKHRoaXMudW5pY29kZUNoYXJzKHRleHQsIHZhcmlhbnQpKSk7XG4gICAgfVxuXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbiAgICAvKlxuICAgICAqIFRleHROb2RlcyBkb24ndCBuZWVkIHRoZXNlLCBzaW5jZSB0aGVzZSBwcm9wZXJ0aWVzXG4gICAgICogICBhcmUgaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBub2Rlc1xuICAgICAqL1xuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldFN0eWxlcygpIHt9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0VmFyaWFudCgpIHt9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U2NhbGUoKSB7fVxuXG4gICAgLyoqXG4gICAgICogQG92ZXJyaWRlXG4gICAgICovXG4gICAgcHVibGljIGdldFNwYWNlKCkge31cblxuICB9O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR1RleHROb2RlIHdyYXBwZXIgZm9yIHRoZSBUZXh0Tm9kZSBvYmplY3RcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7VGV4dE5vZGV9IGZyb20gJy4uLy4uLy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7U1ZHV3JhcHBlciwgU1ZHQ29uc3RydWN0b3J9IGZyb20gJy4uL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtDb21tb25UZXh0Tm9kZU1peGlufSBmcm9tICcuLi8uLi9jb21tb24vV3JhcHBlcnMvVGV4dE5vZGUuanMnO1xuaW1wb3J0IHtTdHlsZUxpc3R9IGZyb20gJy4uLy4uLy4uL3V0aWwvU3R5bGVMaXN0LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIFNWR1RleHROb2RlIHdyYXBwZXIgZm9yIHRoZSBUZXh0Tm9kZSBvYmplY3RcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbi8vIEB0cy1pZ25vcmVcbmV4cG9ydCBjbGFzcyBTVkdUZXh0Tm9kZTxOLCBULCBEPiBleHRlbmRzXG5Db21tb25UZXh0Tm9kZU1peGluPFNWR0NvbnN0cnVjdG9yPGFueSwgYW55LCBhbnk+PihTVkdXcmFwcGVyKSB7XG5cbiAgLyoqXG4gICAqIFRoZSBUZXh0Tm9kZSB3cmFwcGVyXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGtpbmQgPSBUZXh0Tm9kZS5wcm90b3R5cGUua2luZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN0eWxlczogU3R5bGVMaXN0ID0ge1xuICAgICdtangtY29udGFpbmVyW2pheD1cIlNWR1wiXSBwYXRoW2RhdGEtY10sIG1qeC1jb250YWluZXJbamF4PVwiU1ZHXCJdIHVzZVtkYXRhLWNdJzoge1xuICAgICAgJ3N0cm9rZS13aWR0aCc6IDNcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHRvU1ZHKHBhcmVudDogTikge1xuICAgIGNvbnN0IHRleHQgPSAodGhpcy5ub2RlIGFzIFRleHROb2RlKS5nZXRUZXh0KCk7XG4gICAgY29uc3QgdmFyaWFudCA9IHRoaXMucGFyZW50LnZhcmlhbnQ7XG4gICAgaWYgKHRleHQubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgaWYgKHZhcmlhbnQgPT09ICctZXhwbGljaXRGb250Jykge1xuICAgICAgdGhpcy5lbGVtZW50ID0gdGhpcy5hZGFwdG9yLmFwcGVuZChwYXJlbnQsIHRoaXMuamF4LnVua25vd25UZXh0KHRleHQsIHZhcmlhbnQpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2hhcnMgPSB0aGlzLnJlbWFwcGVkVGV4dCh0ZXh0LCB2YXJpYW50KTtcbiAgICAgIGlmICh0aGlzLnBhcmVudC5jaGlsZE5vZGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcGFyZW50ID0gdGhpcy5lbGVtZW50ID0gdGhpcy5hZGFwdG9yLmFwcGVuZChwYXJlbnQsIHRoaXMuc3ZnKCdnJywgeydkYXRhLW1tbC1ub2RlJzogJ3RleHQnfSkpO1xuICAgICAgfVxuICAgICAgbGV0IHggPSAwO1xuICAgICAgZm9yIChjb25zdCBuIG9mIGNoYXJzKSB7XG4gICAgICAgIHggKz0gdGhpcy5wbGFjZUNoYXIobiwgeCwgMCwgcGFyZW50LCB2YXJpYW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBBbiBvYmplY3QgbGlzdGluZyBhbGwgdGhlIFNWR1dyYXBwZXIgY2xhc3Nlc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtXcmFwcGVyQ29uc3RydWN0b3J9IGZyb20gJy4uL2NvbW1vbi9XcmFwcGVyLmpzJztcbmltcG9ydCB7U1ZHV3JhcHBlcn0gZnJvbSAnLi9XcmFwcGVyLmpzJztcbmltcG9ydCB7U1ZHbWF0aH0gZnJvbSAnLi9XcmFwcGVycy9tYXRoLmpzJztcbmltcG9ydCB7U1ZHbXJvdywgU1ZHaW5mZXJyZWRNcm93fSBmcm9tICcuL1dyYXBwZXJzL21yb3cuanMnO1xuaW1wb3J0IHtTVkdtaX0gZnJvbSAnLi9XcmFwcGVycy9taS5qcyc7XG5pbXBvcnQge1NWR21vfSBmcm9tICcuL1dyYXBwZXJzL21vLmpzJztcbmltcG9ydCB7U1ZHbW59IGZyb20gJy4vV3JhcHBlcnMvbW4uanMnO1xuaW1wb3J0IHtTVkdtc30gZnJvbSAnLi9XcmFwcGVycy9tcy5qcyc7XG5pbXBvcnQge1NWR210ZXh0fSBmcm9tICcuL1dyYXBwZXJzL210ZXh0LmpzJztcbmltcG9ydCB7U1ZHbWVycm9yfSBmcm9tICcuL1dyYXBwZXJzL21lcnJvci5qcyc7XG5pbXBvcnQge1NWR21zcGFjZX0gZnJvbSAnLi9XcmFwcGVycy9tc3BhY2UuanMnO1xuaW1wb3J0IHtTVkdtcGFkZGVkfSBmcm9tICcuL1dyYXBwZXJzL21wYWRkZWQuanMnO1xuaW1wb3J0IHtTVkdtcGhhbnRvbX0gZnJvbSAnLi9XcmFwcGVycy9tcGhhbnRvbS5qcyc7XG5pbXBvcnQge1NWR21mcmFjfSBmcm9tICcuL1dyYXBwZXJzL21mcmFjLmpzJztcbmltcG9ydCB7U1ZHbXNxcnR9IGZyb20gJy4vV3JhcHBlcnMvbXNxcnQuanMnO1xuaW1wb3J0IHtTVkdtcm9vdH0gZnJvbSAnLi9XcmFwcGVycy9tcm9vdC5qcyc7XG5pbXBvcnQge1NWR21mZW5jZWR9IGZyb20gJy4vV3JhcHBlcnMvbWZlbmNlZC5qcyc7XG5pbXBvcnQge1NWR21zdWIsIFNWR21zdXAsIFNWR21zdWJzdXB9IGZyb20gJy4vV3JhcHBlcnMvbXN1YnN1cC5qcyc7XG5pbXBvcnQge1NWR21vdmVyLCBTVkdtdW5kZXIsIFNWR211bmRlcm92ZXJ9IGZyb20gJy4vV3JhcHBlcnMvbXVuZGVyb3Zlci5qcyc7XG5pbXBvcnQge1NWR21tdWx0aXNjcmlwdHN9IGZyb20gJy4vV3JhcHBlcnMvbW11bHRpc2NyaXB0cy5qcyc7XG5cbmltcG9ydCB7U1ZHbXRhYmxlfSBmcm9tICcuL1dyYXBwZXJzL210YWJsZS5qcyc7XG5pbXBvcnQge1NWR210ciwgU1ZHbWxhYmVsZWR0cn0gZnJvbSAnLi9XcmFwcGVycy9tdHIuanMnO1xuaW1wb3J0IHtTVkdtdGR9IGZyb20gJy4vV3JhcHBlcnMvbXRkLmpzJztcblxuaW1wb3J0IHtTVkdtYWN0aW9ufSBmcm9tICcuL1dyYXBwZXJzL21hY3Rpb24uanMnO1xuaW1wb3J0IHtTVkdtZW5jbG9zZX0gZnJvbSAnLi9XcmFwcGVycy9tZW5jbG9zZS5qcyc7XG5pbXBvcnQge1NWR3NlbWFudGljcywgU1ZHYW5ub3RhdGlvbiwgU1ZHYW5ub3RhdGlvblhNTCwgU1ZHeG1sfSBmcm9tICcuL1dyYXBwZXJzL3NlbWFudGljcy5qcyc7XG5pbXBvcnQge1NWR21nbHlwaH0gZnJvbSAnLi9XcmFwcGVycy9tZ2x5cGguanMnO1xuaW1wb3J0IHtTVkdUZVhBdG9tfSBmcm9tICcuL1dyYXBwZXJzL1RlWEF0b20uanMnO1xuaW1wb3J0IHtTVkdUZXh0Tm9kZX0gZnJvbSAnLi9XcmFwcGVycy9UZXh0Tm9kZS5qcyc7XG5cbmV4cG9ydCBjb25zdCBTVkdXcmFwcGVyczoge1traW5kOiBzdHJpbmddOiBXcmFwcGVyQ29uc3RydWN0b3J9ICA9IHtcbiAgW1NWR21hdGgua2luZF06IFNWR21hdGgsXG4gIFtTVkdtcm93LmtpbmRdOiBTVkdtcm93LFxuICBbU1ZHaW5mZXJyZWRNcm93LmtpbmRdOiBTVkdpbmZlcnJlZE1yb3csXG4gIFtTVkdtaS5raW5kXTogU1ZHbWksXG4gIFtTVkdtby5raW5kXTogU1ZHbW8sXG4gIFtTVkdtbi5raW5kXTogU1ZHbW4sXG4gIFtTVkdtcy5raW5kXTogU1ZHbXMsXG4gIFtTVkdtdGV4dC5raW5kXTogU1ZHbXRleHQsXG4gIFtTVkdtZXJyb3Iua2luZF06IFNWR21lcnJvcixcbiAgW1NWR21zcGFjZS5raW5kXTogU1ZHbXNwYWNlLFxuICBbU1ZHbXBhZGRlZC5raW5kXTogU1ZHbXBhZGRlZCxcbiAgW1NWR21waGFudG9tLmtpbmRdOiBTVkdtcGhhbnRvbSxcbiAgW1NWR21mcmFjLmtpbmRdOiBTVkdtZnJhYyxcbiAgW1NWR21zcXJ0LmtpbmRdOiBTVkdtc3FydCxcbiAgW1NWR21yb290LmtpbmRdOiBTVkdtcm9vdCxcbiAgW1NWR21mZW5jZWQua2luZF06IFNWR21mZW5jZWQsXG4gIFtTVkdtc3ViLmtpbmRdOiBTVkdtc3ViLFxuICBbU1ZHbXN1cC5raW5kXTogU1ZHbXN1cCxcbiAgW1NWR21zdWJzdXAua2luZF06IFNWR21zdWJzdXAsXG4gIFtTVkdtdW5kZXIua2luZF06IFNWR211bmRlcixcbiAgW1NWR21vdmVyLmtpbmRdOiBTVkdtb3ZlcixcbiAgW1NWR211bmRlcm92ZXIua2luZF06IFNWR211bmRlcm92ZXIsXG4gIFtTVkdtbXVsdGlzY3JpcHRzLmtpbmRdOiBTVkdtbXVsdGlzY3JpcHRzLFxuICBbU1ZHbXRhYmxlLmtpbmRdOiBTVkdtdGFibGUsXG4gIFtTVkdtdHIua2luZF06IFNWR210cixcbiAgW1NWR21sYWJlbGVkdHIua2luZF06IFNWR21sYWJlbGVkdHIsXG4gIFtTVkdtdGQua2luZF06IFNWR210ZCxcbiAgW1NWR21hY3Rpb24ua2luZF06IFNWR21hY3Rpb24sXG4gIFtTVkdtZW5jbG9zZS5raW5kXTogU1ZHbWVuY2xvc2UsXG4gIFtTVkdzZW1hbnRpY3Mua2luZF06IFNWR3NlbWFudGljcyxcbiAgW1NWR2Fubm90YXRpb24ua2luZF06IFNWR2Fubm90YXRpb24sXG4gIFtTVkdhbm5vdGF0aW9uWE1MLmtpbmRdOiBTVkdhbm5vdGF0aW9uWE1MLFxuICBbU1ZHeG1sLmtpbmRdOiBTVkd4bWwsXG4gIFtTVkdtZ2x5cGgua2luZF06IFNWR21nbHlwaCxcbiAgW1NWR1RlWEF0b20ua2luZF06IFNWR1RlWEF0b20sXG4gIFtTVkdUZXh0Tm9kZS5raW5kXTogU1ZHVGV4dE5vZGUsXG4gIFtTVkdXcmFwcGVyLmtpbmRdOiBTVkdXcmFwcGVyXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkdXcmFwcGVyRmFjdG9yeSBjbGFzc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkd9IGZyb20gJy4uL3N2Zy5qcyc7XG5pbXBvcnQge0NvbW1vbldyYXBwZXJGYWN0b3J5fSBmcm9tICcuLi9jb21tb24vV3JhcHBlckZhY3RvcnkuanMnO1xuaW1wb3J0IHtTVkdXcmFwcGVyLCBTVkdXcmFwcGVyQ2xhc3N9IGZyb20gJy4vV3JhcHBlci5qcyc7XG5pbXBvcnQge1NWR1dyYXBwZXJzfSBmcm9tICcuL1dyYXBwZXJzLmpzJztcbmltcG9ydCB7U1ZHQ2hhck9wdGlvbnMsIFNWR0RlbGltaXRlckRhdGEsIFNWR0ZvbnREYXRhfSBmcm9tICcuL0ZvbnREYXRhLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLypcbiAqICBUaGUgU1ZHV3JhcHBlckZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIENIVE1MV3JhcHBlciBub2Rlc1xuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNWR1dyYXBwZXJGYWN0b3J5PE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbldyYXBwZXJGYWN0b3J5PFxuICBTVkc8TiwgVCwgRD4sXG4gIFNWR1dyYXBwZXI8TiwgVCwgRD4sXG4gIFNWR1dyYXBwZXJDbGFzcyxcbiAgU1ZHQ2hhck9wdGlvbnMsXG4gIFNWR0RlbGltaXRlckRhdGEsXG4gIFNWR0ZvbnREYXRhXG4+IHtcblxuICAvKipcbiAgICogVGhlIGRlZmF1bHQgbGlzdCBvZiB3cmFwcGVyIG5vZGVzIHRoaXMgZmFjdG9yeSBjYW4gY3JlYXRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHROb2RlcyA9IFNWR1dyYXBwZXJzO1xuXG4gIC8qKlxuICAgKiBUaGUgQ0hUTUwgb3V0cHV0IGpheCBhc3NvY2lhdGVkIHdpdGggdGhpcyBmYWN0b3J5XG4gICAqL1xuICBwdWJsaWMgamF4OiBTVkc8TiwgVCwgRD4gPSBudWxsO1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIFNWR0ZvbnREYXRhIGNsYXNzIGZvciBmb250IGRhdGEgaW4gU1ZHIG91dHB1dC5cbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnMsIENoYXJEYXRhLCBWYXJpYW50RGF0YSwgRGVsaW1pdGVyRGF0YSwgRm9udERhdGF9IGZyb20gJy4uL2NvbW1vbi9Gb250RGF0YS5qcyc7XG5leHBvcnQgKiBmcm9tICcuLi9jb21tb24vRm9udERhdGEuanMnO1xuXG5leHBvcnQgdHlwZSBDaGFyU3RyaW5nTWFwID0ge1tuYW1lOiBudW1iZXJdOiBzdHJpbmd9O1xuXG4vKipcbiAqIEFkZCB0aGUgZXh0cmEgZGF0YSBuZWVkZWQgZm9yIENoYXJPcHRpb25zIGluIFNWR1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNWR0NoYXJPcHRpb25zIGV4dGVuZHMgQ2hhck9wdGlvbnMge1xuICBjPzogc3RyaW5nOyAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2hhcmFjdGVyIHZhbHVlIChvdmVycmlkZXMgZGVmYXVsdCB2YWx1ZSlcbiAgcD86IHN0cmluZzsgICAgICAgICAgICAgICAgICAgLy8gc3ZnIHBhdGhcbn1cblxuLyoqXG4gKiBTaG9ydGhhbmRzIGZvciBTVkcgY2hhciBtYXBzIGFuZCBjaGFyIGRhdGFcbiAqL1xuZXhwb3J0IHR5cGUgU1ZHQ2hhck1hcCA9IENoYXJNYXA8U1ZHQ2hhck9wdGlvbnM+O1xuZXhwb3J0IHR5cGUgU1ZHQ2hhckRhdGEgPSBDaGFyRGF0YTxTVkdDaGFyT3B0aW9ucz47XG5cbi8qKlxuICogVGhlIGV4dHJhIGRhdGEgbmVlZGVkIGZvciBhIFZhcmlhbnQgaW4gU1ZHIG91dHB1dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNWR1ZhcmlhbnREYXRhIGV4dGVuZHMgVmFyaWFudERhdGE8U1ZHQ2hhck9wdGlvbnM+IHtcbiAgY2FjaGVJRDogc3RyaW5nO1xufVxuXG4vKipcbiAqIHRoZSBleHRyYSBkYXRhIG5lZWRlIGZvciBhIERlbGltaXRlciBpbiBTVkcgb3V0cHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1ZHRGVsaW1pdGVyRGF0YSBleHRlbmRzIERlbGltaXRlckRhdGEge1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIFRoZSBTVkcgRm9udERhdGEgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIFNWR0ZvbnREYXRhIGV4dGVuZHMgRm9udERhdGE8U1ZHQ2hhck9wdGlvbnMsIFNWR1ZhcmlhbnREYXRhLCBTVkdEZWxpbWl0ZXJEYXRhPiB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBPUFRJT05TID0ge1xuICAgIC4uLkZvbnREYXRhLk9QVElPTlMsXG4gICAgZHluYW1pY1ByZWZpeDogJy4vb3V0cHV0L3N2Zy9mb250cydcbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEpBWCA9ICdTVkcnO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY2hhck9wdGlvbnMoZm9udDogU1ZHQ2hhck1hcCwgbjogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHN1cGVyLmNoYXJPcHRpb25zKGZvbnQsIG4pIGFzIFNWR0NoYXJPcHRpb25zO1xuICB9XG5cbn1cblxuZXhwb3J0IHR5cGUgU1ZHRm9udERhdGFDbGFzcyA9IHR5cGVvZiBTVkdGb250RGF0YTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogQHBhcmFtIHtDaGFyTWFwfSBmb250ICAgICAgICBUaGUgZm9udCB0byBhdWdtZW50XG4gKiBAcGFyYW0ge0NoYXJTdHJpbmdNYXB9IHBhdGhzICAgICBUaGUgcGF0aCBkYXRhIHRvIHVzZSBmb3IgZWFjaCBjaGFyYWN0ZXJcbiAqIEBwYXJhbSB7Q2hhclN0cmluZ01hcH0gY29udGVudCAgIFRoZSBzdHJpbmcgdG8gdXNlIGZvciByZW1hcHBlZCBjaGFyYWN0ZXJzXG4gKiBAcmV0dXJuIHtTVkdDaGFyTWFwfSAgICAgICAgICAgIFRoZSBhdWdtZW50ZWQgZm9udFxuICovXG5leHBvcnQgZnVuY3Rpb24gQWRkUGF0aHMoZm9udDogU1ZHQ2hhck1hcCwgcGF0aHM6IENoYXJTdHJpbmdNYXAsIGNvbnRlbnQ6IENoYXJTdHJpbmdNYXApOiBTVkdDaGFyTWFwIHtcbiAgZm9yIChjb25zdCBjIG9mIE9iamVjdC5rZXlzKHBhdGhzKSkge1xuICAgIGNvbnN0IG4gPSBwYXJzZUludChjKTtcbiAgICBTVkdGb250RGF0YS5jaGFyT3B0aW9ucyhmb250LCBuKS5wID0gcGF0aHNbbl07XG4gIH1cbiAgZm9yIChjb25zdCBjIG9mIE9iamVjdC5rZXlzKGNvbnRlbnQpKSB7XG4gICAgY29uc3QgbiA9IHBhcnNlSW50KGMpO1xuICAgIFNWR0ZvbnREYXRhLmNoYXJPcHRpb25zKGZvbnQsIG4pLmMgPSBjb250ZW50W25dO1xuICB9XG4gIHJldHVybiBmb250O1xufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBUaGUgTWF0aEpheCBUZVhGb250IG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtGb250RGF0YUNsYXNzLCBDaGFyT3B0aW9ucywgVmFyaWFudERhdGEsIERlbGltaXRlckRhdGEsIENzc0ZvbnRNYXB9IGZyb20gJy4uL0ZvbnREYXRhLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIENvbW1vblRlWEZvbnQgbWl4aW4gZm9yIHRoZSBDb21tb25UZVhGb250IG9iamVjdFxuICpcbiAqIEB0ZW1wbGF0ZSBDICBUaGUgQ2hhck9wdGlvbnMgY2xhc3MgZm9yIHRoaXMgZm9udFxuICogQHRlbXBsYXRlIFYgIFRoZSBWYXJpYW50RGF0YSBjbGFzcyBmb3IgdGhpcyBmb250XG4gKiBAdGVtcGxhdGUgQiAgVGhlIEZvbnREYXRhIGNsYXNzIHRvIGV4dGVuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gQ29tbW9uVGVYRm9udE1peGluPFxuICBDIGV4dGVuZHMgQ2hhck9wdGlvbnMsXG4gIFYgZXh0ZW5kcyBWYXJpYW50RGF0YTxDPixcbiAgRCBleHRlbmRzIERlbGltaXRlckRhdGEsXG4gIEIgZXh0ZW5kcyBGb250RGF0YUNsYXNzPEMsIFYsIEQ+XG4+KEJhc2U6IEIpOiBGb250RGF0YUNsYXNzPEMsIFYsIEQ+ICYgQiB7XG5cbiAgcmV0dXJuIGNsYXNzIGV4dGVuZHMgQmFzZSB7XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIE5BTUUgPSAnVGVYJztcblxuICAgIC8qKlxuICAgICAqICBBZGQgdGhlIGV4dHJhIHZhcmlhbnRzIGZvciB0aGUgVGVYIGZvbnRzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBkZWZhdWx0VmFyaWFudHMgPSBbXG4gICAgICAuLi5CYXNlLmRlZmF1bHRWYXJpYW50cyxcbiAgICAgIFsnLXNtYWxsb3AnLCAnbm9ybWFsJ10sXG4gICAgICBbJy1sYXJnZW9wJywgJ25vcm1hbCddLFxuICAgICAgWyctc2l6ZTMnLCAnbm9ybWFsJ10sXG4gICAgICBbJy1zaXplNCcsICdub3JtYWwnXSxcbiAgICAgIFsnLXRleC1jYWxsaWdyYXBoaWMnLCAnaXRhbGljJ10sXG4gICAgICBbJy10ZXgtYm9sZC1jYWxsaWdyYXBoaWMnLCAnYm9sZC1pdGFsaWMnXSxcbiAgICAgIFsnLXRleC1vbGRzdHlsZScsICdub3JtYWwnXSxcbiAgICAgIFsnLXRleC1ib2xkLW9sZHN0eWxlJywgJ2JvbGQnXSxcbiAgICAgIFsnLXRleC1tYXRoaXQnLCAnaXRhbGljJ10sXG4gICAgICBbJy10ZXgtdmFyaWFudCcsICdub3JtYWwnXVxuICAgIF07XG5cbiAgICAvKipcbiAgICAgKiBUaGUgZGF0YSB1c2VkIGZvciBDU1MgZm9yIHVuZGVmaW5lZCBjaGFyYWN0ZXJzIGZvciBlYWNoIHZhcmlhbnRcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RhdGljIGRlZmF1bHRDc3NGb250czogQ3NzRm9udE1hcCA9IHtcbiAgICAgIC4uLkJhc2UuZGVmYXVsdENzc0ZvbnRzLFxuICAgICAgJy1zbWFsbG9wJzogWydzZXJpZicsIGZhbHNlLCBmYWxzZV0sXG4gICAgICAnLWxhcmdlb3AnOiBbJ3NlcmlmJywgZmFsc2UsIGZhbHNlXSxcbiAgICAgICctc2l6ZTMnOiBbJ3NlcmlmJywgZmFsc2UsIGZhbHNlXSxcbiAgICAgICctc2l6ZTQnOiBbJ3NlcmlmJywgZmFsc2UsIGZhbHNlXSxcbiAgICAgICctdGV4LWNhbGxpZ3JhcGhpYyc6IFsnY3Vyc2l2ZScsIHRydWUsIGZhbHNlXSxcbiAgICAgICctdGV4LWJvbGQtY2FsbGlncmFwaGljJzogWydjdXJzaXZlJywgdHJ1ZSwgdHJ1ZV0sXG4gICAgICAnLXRleC1vbGRzdHlsZSc6IFsnc2VyaWYnLCBmYWxzZSwgZmFsc2VdLFxuICAgICAgJy10ZXgtYm9sZC1vbGRzdHlsZSc6IFsnc2VyaWYnLCBmYWxzZSwgdHJ1ZV0sXG4gICAgICAnLXRleC1tYXRoaXQnOiBbJ3NlcmlmJywgdHJ1ZSwgZmFsc2VdXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgZGVmYXVsdCB2YXJpYW50cyBmb3IgdGhlIHN0YW5kYXJkIHN0cmV0Y2h5IHNpemVzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBkZWZhdWx0U2l6ZVZhcmlhbnRzID0gWydub3JtYWwnLCAnLXNtYWxsb3AnLCAnLWxhcmdlb3AnLCAnLXNpemUzJywgJy1zaXplNCcsICctdGV4LXZhcmlhbnQnXTtcblxuICAgIC8qKlxuICAgICAqICBUaGUgZGVmYXVsdCB2YXJpYW50cyBmb3IgdGhlIHN0YW5kYXJkIHN0cmV0Y2h5IGFzc21lYmx5IHBhcnRzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHN0YXRpYyBkZWZhdWx0U3RyZXRjaFZhcmlhbnRzID0gWyctc2l6ZTQnXTtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXREZWxpbWl0ZXJEYXRhKG46IG51bWJlcikge1xuICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2hhcignLXNtYWxsb3AnLCBuKSB8fCB0aGlzLmdldENoYXIoJy1zaXplNCcsIG4pO1xuICAgIH1cblxuICB9O1xuXG59XG5cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IGJvbGRJdGFsaWM6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xuICAgIDB4MkY6IFsuNzExLCAuMjEsIC44OTRdLFxuICAgIDB4MTMxOiBbLjQ1MiwgLjAwOCwgLjM5NCwge3NrOiAuMDMxOX1dLFxuICAgIDB4MjM3OiBbLjQ1MSwgLjIwMSwgLjQzOSwge3NrOiAuMDk1OH1dLFxuICAgIDB4MjA0NDogWy43MTEsIC4yMSwgLjg5NF0sXG4gICAgMHgyMjA2OiBbLjcxMSwgMCwgLjk1OCwge3NrOiAuMTkyfV0sXG4gICAgMHgyOUY4OiBbLjcxMSwgLjIxLCAuODk0XSxcbn07XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtTVkdDaGFyTWFwLCBBZGRQYXRoc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuaW1wb3J0IHtib2xkSXRhbGljIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvYm9sZC1pdGFsaWMuanMnO1xuXG5leHBvcnQgY29uc3QgYm9sZEl0YWxpYzogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDJGOiAnMTg5IC0yMTBRMTc5IC0yMTAgMTcwIC0yMDNUMTYwIC0xNzlRMTYwIC0xNzEgMTYyIC0xNjZRMTY0IC0xNjMgNDIwIDI2NlQ2NzkgNjk4UTY4NiA3MTEgNzA0IDcxMVE3MTQgNzExIDcyMyA3MDRUNzMzIDY4MVE3MzMgNjcyIDczMCA2NjdRNzIzIDY1NCA0NjkgMjI4VDIxMSAtMjAxUTIwMiAtMjEwIDE4OSAtMjEwJyxcbiAgICAweDEzMTogJzI0IDI5NlEyNCAzMDUgMzQgMzI4VDYzIDM4MFQxMTUgNDMwVDE4NyA0NTJRMjA1IDQ1MiAyMjMgNDQ4VDI2MiA0MzVUMjk1IDQwNlQzMDggMzYwUTMwOCAzNDUgMjg3IDI5MFQyNDAgMTcwVDIwNyA4N1EyMDIgNjcgMjAyIDU3UTIwMiA0MiAyMTUgNDJRMjM1IDQyIDI1NyA2NFEyODggOTIgMzAyIDE0MFEzMDcgMTU2IDMxMCAxNTlUMzMwIDE2MkgzMzZIMzQ3UTM2NyAxNjIgMzY3IDE0OFEzNjcgMTQwIDM1NyAxMTdUMzI5IDY1VDI3NiAxNFQyMDEgLThRMTU4IC04IDEyMSAxNVQ4MyA4NFE4MyAxMDQgMTMzIDIyOVQxODQgMzU4UTE4OSAzNzYgMTg5IDM4OFExODkgNDAyIDE3NyA0MDJRMTU2IDQwMiAxMzQgMzgwUTEwMyAzNTIgODkgMzA0UTg0IDI4OCA4MSAyODVUNjEgMjgySDU1SDQ0UTI0IDI4MiAyNCAyOTYnLFxuICAgIDB4MjM3OiAnMjk3IDM2MFQyOTcgMzczVDI5NCAzOTJUMjg4IDQwMFQyNzggNDAxSDI3NlEyMzcgMzk4IDIwMCAzNjNRMTgxIDM0MyAxNzAgMzI1VDE1NiAyOTlUMTQ5IDI4N1QxMjkgMjgySDEyM0gxMTZRMTAyIDI4MiA5NyAyODRUOTIgMjk4UTkzIDMwMyA5OCAzMTVUMTE4IDM0OVQxNTEgMzkwVDIwMSA0MjdUMjY3IDQ1MUgyNzlRMzU3IDQ1MSAzODggNDIyVDQyMCAzNTRWMzM5TDM3MCAxMzhRMzIxIC02MCAzMTcgLTY5UTI4NyAtMTU3IDE2MyAtMTk0UTEzMyAtMjAxIDk5IC0yMDFRMzkgLTIwMSAxNCAtMTc4VC0xMiAtMTI1US0xMiAtOTQgMTEgLTY5VDY4IC00M1E5MyAtNDMgMTA4IC01N1QxMjMgLTk1UTEyMyAtMTIxIDEwMCAtMTUxSDEwNFExMzEgLTE1MSAxNTUgLTEyNVQxOTMgLTYwUTE5NSAtNTQgMjQ0IDE0MVQyOTQgMzQ1UTI5NyAzNjAgMjk3IDM3MycsXG4gICAgMHgyMDQ0OiAnMTg5IC0yMTBRMTc5IC0yMTAgMTcwIC0yMDNUMTYwIC0xNzlRMTYwIC0xNzEgMTYyIC0xNjZRMTY0IC0xNjMgNDIwIDI2NlQ2NzkgNjk4UTY4NiA3MTEgNzA0IDcxMVE3MTQgNzExIDcyMyA3MDRUNzMzIDY4MVE3MzMgNjcyIDczMCA2NjdRNzIzIDY1NCA0NjkgMjI4VDIxMSAtMjAxUTIwMiAtMjEwIDE4OSAtMjEwJyxcbiAgICAweDIyMDY6ICc2NSAwUTU5IDYgNTkgOVQ2MSAxNlE2NCAyMCAzMzQgMzU3VDYwOCA2OThRNjE2IDcwNiA2MjkgNzEwUTYzMCA3MTAgNjM0IDcxMFQ2NDQgNzEwVDY1NiA3MTFRNjg2IDcxMSA2OTQgNzAzUTY5OCA2OTkgNzAwIDY5M1E3MDYgNjc0IDgwNSAzNDVUOTA0IDE0UTkwNCA3IDg5NCAxTDQ3OSAwSDY1Wk02MzAgMzQyTDU2NyA1NTFMMjMyIDEzNEw0NjIgMTMzSDY5M1E2OTMgMTM3IDYzMCAzNDInLFxuICAgIDB4MjlGODogJzE4OSAtMjEwUTE3OSAtMjEwIDE3MCAtMjAzVDE2MCAtMTc5UTE2MCAtMTcxIDE2MiAtMTY2UTE2NCAtMTYzIDQyMCAyNjZUNjc5IDY5OFE2ODYgNzExIDcwNCA3MTFRNzE0IDcxMSA3MjMgNzA0VDczMyA2ODFRNzMzIDY3MiA3MzAgNjY3UTcyMyA2NTQgNDY5IDIyOFQyMTEgLTIwMVEyMDIgLTIxMCAxODkgLTIxMCcsXG59LHtcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3QgYm9sZDogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHgyMTogWy43MDUsIDAsIC4zNV0sXG4gICAgMHgyMjogWy42OTQsIC0wLjMyOSwgLjYwM10sXG4gICAgMHgyMzogWy42OTQsIC4xOTMsIC45NThdLFxuICAgIDB4MjQ6IFsuNzUsIC4wNTYsIC41NzVdLFxuICAgIDB4MjU6IFsuNzUsIC4wNTYsIC45NThdLFxuICAgIDB4MjY6IFsuNzA1LCAuMDExLCAuODk0XSxcbiAgICAweDI3OiBbLjY5NCwgLTAuMzI5LCAuMzE5XSxcbiAgICAweDI4OiBbLjc1LCAuMjQ5LCAuNDQ3XSxcbiAgICAweDI5OiBbLjc1LCAuMjQ5LCAuNDQ3XSxcbiAgICAweDJBOiBbLjc1LCAtMC4zMDYsIC41NzVdLFxuICAgIDB4MkI6IFsuNjMzLCAuMTMxLCAuODk0XSxcbiAgICAweDJDOiBbLjE3MSwgLjE5NCwgLjMxOV0sXG4gICAgMHgyRDogWy4yNzgsIC0wLjE2NiwgLjM4M10sXG4gICAgMHgyRTogWy4xNzEsIDAsIC4zMTldLFxuICAgIDB4MkY6IFsuNzUsIC4yNSwgLjU3NV0sXG4gICAgMHgzQTogWy40NDQsIDAsIC4zMTldLFxuICAgIDB4M0I6IFsuNDQ0LCAuMTk0LCAuMzE5XSxcbiAgICAweDNDOiBbLjU4NywgLjA4NSwgLjg5NF0sXG4gICAgMHgzRDogWy4zOTMsIC0wLjEwOSwgLjg5NF0sXG4gICAgMHgzRTogWy41ODcsIC4wODUsIC44OTRdLFxuICAgIDB4M0Y6IFsuNywgMCwgLjU0M10sXG4gICAgMHg0MDogWy42OTksIC4wMDYsIC44OTRdLFxuICAgIDB4NUI6IFsuNzUsIC4yNSwgLjMxOV0sXG4gICAgMHg1QzogWy43NSwgLjI1LCAuNTc1XSxcbiAgICAweDVEOiBbLjc1LCAuMjUsIC4zMTldLFxuICAgIDB4NUU6IFsuNjk0LCAtMC41MiwgLjU3NV0sXG4gICAgMHg1RjogWy0wLjAxLCAuMDYxLCAuNTc1XSxcbiAgICAweDYwOiBbLjcwNiwgLTAuNTAzLCAuNTc1XSxcbiAgICAweDdCOiBbLjc1LCAuMjUsIC41NzVdLFxuICAgIDB4N0M6IFsuNzUsIC4yNDksIC4zMTldLFxuICAgIDB4N0Q6IFsuNzUsIC4yNSwgLjU3NV0sXG4gICAgMHg3RTogWy4zNDQsIC0wLjIwMiwgLjU3NV0sXG4gICAgMHhBODogWy42OTUsIC0wLjUzNSwgLjU3NV0sXG4gICAgMHhBQzogWy4zNzEsIC0wLjA2MSwgLjc2N10sXG4gICAgMHhBRjogWy42MDcsIC0wLjU0LCAuNTc1XSxcbiAgICAweEIwOiBbLjcwMiwgLTAuNTM2LCAuNTc1XSxcbiAgICAweEIxOiBbLjcyOCwgLjAzNSwgLjg5NF0sXG4gICAgMHhCNDogWy43MDYsIC0wLjUwMywgLjU3NV0sXG4gICAgMHhCNzogWy4zMzYsIC0wLjE2NiwgLjMxOV0sXG4gICAgMHhENzogWy41MywgLjAyOCwgLjg5NF0sXG4gICAgMHhGNzogWy41OTcsIC4wOTYsIC44OTRdLFxuICAgIDB4MTMxOiBbLjQ0MiwgMCwgLjI3OCwge3NrOiAuMDI3OH1dLFxuICAgIDB4MjM3OiBbLjQ0MiwgLjIwNSwgLjMwNiwge3NrOiAuMDgzM31dLFxuICAgIDB4MkI5OiBbLjU2MywgLTAuMDMzLCAuMzQ0XSxcbiAgICAweDJDNjogWy42OTQsIC0wLjUyLCAuNTc1XSxcbiAgICAweDJDNzogWy42NiwgLTAuNTE1LCAuNTc1XSxcbiAgICAweDJDOTogWy42MDcsIC0wLjU0LCAuNTc1XSxcbiAgICAweDJDQTogWy43MDYsIC0wLjUwMywgLjU3NV0sXG4gICAgMHgyQ0I6IFsuNzA2LCAtMC41MDMsIC41NzVdLFxuICAgIDB4MkQ4OiBbLjY5NCwgLTAuNSwgLjU3NV0sXG4gICAgMHgyRDk6IFsuNjk1LCAtMC41MjUsIC41NzVdLFxuICAgIDB4MkRBOiBbLjcwMiwgLTAuNTM2LCAuNTc1XSxcbiAgICAweDJEQzogWy42OTQsIC0wLjU1MiwgLjU3NV0sXG4gICAgMHgzMDA6IFsuNzA2LCAtMC41MDMsIDBdLFxuICAgIDB4MzAxOiBbLjcwNiwgLTAuNTAzLCAwXSxcbiAgICAweDMwMjogWy42OTQsIC0wLjUyLCAwXSxcbiAgICAweDMwMzogWy42OTQsIC0wLjU1MiwgMF0sXG4gICAgMHgzMDQ6IFsuNjA3LCAtMC41NCwgMF0sXG4gICAgMHgzMDY6IFsuNjk0LCAtMC41LCAwXSxcbiAgICAweDMwNzogWy42OTUsIC0wLjUyNSwgMF0sXG4gICAgMHgzMDg6IFsuNjk1LCAtMC41MzUsIDBdLFxuICAgIDB4MzBBOiBbLjcwMiwgLTAuNTM2LCAwXSxcbiAgICAweDMwQjogWy43MTQsIC0wLjUxMSwgMF0sXG4gICAgMHgzMEM6IFsuNjYsIC0wLjUxNSwgMF0sXG4gICAgMHgzMzg6IFsuNzExLCAuMjEsIDBdLFxuICAgIDB4MjAwMjogWzAsIDAsIC41XSxcbiAgICAweDIwMDM6IFswLCAwLCAuOTk5XSxcbiAgICAweDIwMDQ6IFswLCAwLCAuMzMzXSxcbiAgICAweDIwMDU6IFswLCAwLCAuMjVdLFxuICAgIDB4MjAwNjogWzAsIDAsIC4xNjddLFxuICAgIDB4MjAwOTogWzAsIDAsIC4xNjddLFxuICAgIDB4MjAwQTogWzAsIDAsIC4wODNdLFxuICAgIDB4MjAxMzogWy4zLCAtMC4yNDksIC41NzVdLFxuICAgIDB4MjAxNDogWy4zLCAtMC4yNDksIDEuMTVdLFxuICAgIDB4MjAxNTogWy4zLCAtMC4yNDksIDEuMTVdLFxuICAgIDB4MjAxNjogWy43NSwgLjI0OCwgLjU3NV0sXG4gICAgMHgyMDE3OiBbLTAuMDEsIC4wNjEsIC41NzVdLFxuICAgIDB4MjAxODogWy42OTQsIC0wLjMyOSwgLjMxOV0sXG4gICAgMHgyMDE5OiBbLjY5NCwgLTAuMzI5LCAuMzE5XSxcbiAgICAweDIwMUM6IFsuNjk0LCAtMC4zMjksIC42MDNdLFxuICAgIDB4MjAxRDogWy42OTQsIC0wLjMyOSwgLjYwM10sXG4gICAgMHgyMDIwOiBbLjcwMiwgLjIxMSwgLjUxMV0sXG4gICAgMHgyMDIxOiBbLjcwMiwgLjIwMiwgLjUxMV0sXG4gICAgMHgyMDIyOiBbLjQ3NCwgLTAuMDI4LCAuNTc1XSxcbiAgICAweDIwMjY6IFsuMTcxLCAwLCAxLjI5NV0sXG4gICAgMHgyMDMyOiBbLjU2MywgLTAuMDMzLCAuMzQ0XSxcbiAgICAweDIwMzM6IFsuNTYzLCAwLCAuNjg4XSxcbiAgICAweDIwMzQ6IFsuNTYzLCAwLCAxLjAzMl0sXG4gICAgMHgyMDNFOiBbLjYwNywgLTAuNTQsIC41NzVdLFxuICAgIDB4MjA0NDogWy43NSwgLjI1LCAuNTc1XSxcbiAgICAweDIwNTc6IFsuNTYzLCAwLCAxLjM3Nl0sXG4gICAgMHgyMEQ3OiBbLjcyMywgLTAuNTEzLCAuNTc1XSxcbiAgICAweDIxMEY6IFsuNjk0LCAuMDA4LCAuNjY4LCB7c2s6IC0wLjAzMTl9XSxcbiAgICAweDIxMTM6IFsuNzAyLCAuMDE5LCAuNDc0LCB7c2s6IC4xMjh9XSxcbiAgICAweDIxMTg6IFsuNDYxLCAuMjEsIC43NF0sXG4gICAgMHgyMTM1OiBbLjY5NCwgMCwgLjcwM10sXG4gICAgMHgyMTkwOiBbLjUxOCwgLjAxNywgMS4xNV0sXG4gICAgMHgyMTkxOiBbLjY5NCwgLjE5MywgLjU3NV0sXG4gICAgMHgyMTkyOiBbLjUxOCwgLjAxNywgMS4xNV0sXG4gICAgMHgyMTkzOiBbLjY5NCwgLjE5NCwgLjU3NV0sXG4gICAgMHgyMTk0OiBbLjUxOCwgLjAxNywgMS4xNV0sXG4gICAgMHgyMTk1OiBbLjc2NywgLjI2NywgLjU3NV0sXG4gICAgMHgyMTk2OiBbLjcyNCwgLjE5NCwgMS4xNV0sXG4gICAgMHgyMTk3OiBbLjcyNCwgLjE5MywgMS4xNV0sXG4gICAgMHgyMTk4OiBbLjY5NCwgLjIyNCwgMS4xNV0sXG4gICAgMHgyMTk5OiBbLjY5NCwgLjIyNCwgMS4xNV0sXG4gICAgMHgyMTlBOiBbLjcxMSwgLjIxLCAxLjE1XSxcbiAgICAweDIxOUI6IFsuNzExLCAuMjEsIDEuMTVdLFxuICAgIDB4MjFBNjogWy41MTgsIC4wMTcsIDEuMTVdLFxuICAgIDB4MjFBOTogWy41MTgsIC4wMTcsIDEuMjgyXSxcbiAgICAweDIxQUE6IFsuNTE4LCAuMDE3LCAxLjI4Ml0sXG4gICAgMHgyMUFFOiBbLjcxMSwgLjIxLCAxLjE1XSxcbiAgICAweDIxQkM6IFsuNTE4LCAtMC4yMiwgMS4xNV0sXG4gICAgMHgyMUJEOiBbLjI4MSwgLjAxNywgMS4xNV0sXG4gICAgMHgyMUMwOiBbLjUxOCwgLTAuMjIsIDEuMTVdLFxuICAgIDB4MjFDMTogWy4yODEsIC4wMTcsIDEuMTVdLFxuICAgIDB4MjFDQzogWy43MTgsIC4wMTcsIDEuMTVdLFxuICAgIDB4MjFDRDogWy43MTEsIC4yMSwgMS4xNV0sXG4gICAgMHgyMUNFOiBbLjcxMSwgLjIxLCAxLjE1XSxcbiAgICAweDIxQ0Y6IFsuNzExLCAuMjEsIDEuMTVdLFxuICAgIDB4MjFEMDogWy41NDcsIC4wNDYsIDEuMTVdLFxuICAgIDB4MjFEMTogWy42OTQsIC4xOTMsIC43MDNdLFxuICAgIDB4MjFEMjogWy41NDcsIC4wNDYsIDEuMTVdLFxuICAgIDB4MjFEMzogWy42OTQsIC4xOTQsIC43MDNdLFxuICAgIDB4MjFENDogWy41NDcsIC4wNDYsIDEuMTVdLFxuICAgIDB4MjFENTogWy43NjcsIC4yNjcsIC43MDNdLFxuICAgIDB4MjIwMDogWy42OTQsIC4wMTYsIC42MzldLFxuICAgIDB4MjIwMzogWy42OTQsIDAsIC42MzldLFxuICAgIDB4MjIwNDogWy43MTEsIC4yMSwgLjYzOV0sXG4gICAgMHgyMjA1OiBbLjc2NywgLjA3MywgLjU3NV0sXG4gICAgMHgyMjA2OiBbLjY5OCwgMCwgLjk1OF0sXG4gICAgMHgyMjA4OiBbLjU4NywgLjA4NiwgLjc2N10sXG4gICAgMHgyMjA5OiBbLjcxMSwgLjIxLCAuNzY3XSxcbiAgICAweDIyMEI6IFsuNTg3LCAuMDg2LCAuNzY3XSxcbiAgICAweDIyMEM6IFsuNzExLCAuMjEsIC43NjddLFxuICAgIDB4MjIxMjogWy4yODEsIC0wLjIyMSwgLjg5NF0sXG4gICAgMHgyMjEzOiBbLjUzNywgLjIyNywgLjg5NF0sXG4gICAgMHgyMjE1OiBbLjc1LCAuMjUsIC41NzVdLFxuICAgIDB4MjIxNjogWy43NSwgLjI1LCAuNTc1XSxcbiAgICAweDIyMTc6IFsuNDcyLCAtMC4wMjgsIC41NzVdLFxuICAgIDB4MjIxODogWy40NzQsIC0wLjAyOCwgLjU3NV0sXG4gICAgMHgyMjE5OiBbLjQ3NCwgLTAuMDI4LCAuNTc1XSxcbiAgICAweDIyMUE6IFsuODIsIC4xOCwgLjk1OCwge2ljOiAuMDN9XSxcbiAgICAweDIyMUQ6IFsuNDUxLCAuMDA4LCAuODk0XSxcbiAgICAweDIyMUU6IFsuNDUyLCAuMDA4LCAxLjE1XSxcbiAgICAweDIyMjA6IFsuNzE0LCAwLCAuNzIyXSxcbiAgICAweDIyMjM6IFsuNzUsIC4yNDksIC4zMTldLFxuICAgIDB4MjIyNDogWy43NSwgLjI0OSwgLjMxOV0sXG4gICAgMHgyMjI1OiBbLjc1LCAuMjQ4LCAuNTc1XSxcbiAgICAweDIyMjY6IFsuNzUsIC4yNDgsIC41NzVdLFxuICAgIDB4MjIyNzogWy42MDQsIC4wMTcsIC43NjddLFxuICAgIDB4MjIyODogWy42MDQsIC4wMTYsIC43NjddLFxuICAgIDB4MjIyOTogWy42MDMsIC4wMTYsIC43NjddLFxuICAgIDB4MjIyQTogWy42MDQsIC4wMTYsIC43NjddLFxuICAgIDB4MjIyQjogWy43MTEsIC4yMTEsIC41NjksIHtpYzogLjA2M31dLFxuICAgIDB4MjIzQzogWy4zOTEsIC0wLjEwOSwgLjg5NF0sXG4gICAgMHgyMjQwOiBbLjU4MywgLjA4MiwgLjMxOV0sXG4gICAgMHgyMjQxOiBbLjcxMSwgLjIxLCAuODk0XSxcbiAgICAweDIyNDM6IFsuNTAyLCAwLCAuODk0XSxcbiAgICAweDIyNDQ6IFsuNzExLCAuMjEsIC44OTRdLFxuICAgIDB4MjI0NTogWy42MzgsIC4wMjcsIC44OTRdLFxuICAgIDB4MjI0NzogWy43MTEsIC4yMSwgLjg5NF0sXG4gICAgMHgyMjQ4OiBbLjUyNCwgLTAuMDMyLCAuODk0XSxcbiAgICAweDIyNDk6IFsuNzExLCAuMjEsIC44OTRdLFxuICAgIDB4MjI0RDogWy41MzMsIC4wMzIsIC44OTRdLFxuICAgIDB4MjI1MDogWy43MjEsIC0wLjEwOSwgLjg5NF0sXG4gICAgMHgyMjYwOiBbLjcxMSwgLjIxLCAuODk0XSxcbiAgICAweDIyNjE6IFsuNTA1LCAwLCAuODk0XSxcbiAgICAweDIyNjI6IFsuNzExLCAuMjEsIC44OTRdLFxuICAgIDB4MjI2NDogWy42OTcsIC4xOTksIC44OTRdLFxuICAgIDB4MjI2NTogWy42OTcsIC4xOTksIC44OTRdLFxuICAgIDB4MjI2QTogWy42MTcsIC4xMTYsIDEuMTVdLFxuICAgIDB4MjI2QjogWy42MTgsIC4xMTYsIDEuMTVdLFxuICAgIDB4MjI2RDogWy43MTEsIC4yMSwgLjg5NF0sXG4gICAgMHgyMjZFOiBbLjcxMSwgLjIxLCAuODk0XSxcbiAgICAweDIyNkY6IFsuNzExLCAuMjEsIC44OTRdLFxuICAgIDB4MjI3MDogWy43MTEsIC4yMSwgLjg5NF0sXG4gICAgMHgyMjcxOiBbLjcxMSwgLjIxLCAuODk0XSxcbiAgICAweDIyN0E6IFsuNTg1LCAuMDg2LCAuODk0XSxcbiAgICAweDIyN0I6IFsuNTg2LCAuMDg2LCAuODk0XSxcbiAgICAweDIyODA6IFsuNzExLCAuMjEsIC44OTRdLFxuICAgIDB4MjI4MTogWy43MTEsIC4yMSwgLjg5NF0sXG4gICAgMHgyMjgyOiBbLjU4NywgLjA4NSwgLjg5NF0sXG4gICAgMHgyMjgzOiBbLjU4NywgLjA4NiwgLjg5NF0sXG4gICAgMHgyMjg0OiBbLjcxMSwgLjIxLCAuODk0XSxcbiAgICAweDIyODU6IFsuNzExLCAuMjEsIC44OTRdLFxuICAgIDB4MjI4NjogWy42OTcsIC4xOTksIC44OTRdLFxuICAgIDB4MjI4NzogWy42OTcsIC4xOTksIC44OTRdLFxuICAgIDB4MjI4ODogWy43MTEsIC4yMSwgLjg5NF0sXG4gICAgMHgyMjg5OiBbLjcxMSwgLjIxLCAuODk0XSxcbiAgICAweDIyOEU6IFsuNjA0LCAuMDE2LCAuNzY3XSxcbiAgICAweDIyOTE6IFsuNjk3LCAuMTk5LCAuODk0XSxcbiAgICAweDIyOTI6IFsuNjk3LCAuMTk5LCAuODk0XSxcbiAgICAweDIyOTM6IFsuNjA0LCAwLCAuNzY3XSxcbiAgICAweDIyOTQ6IFsuNjA0LCAwLCAuNzY3XSxcbiAgICAweDIyOTU6IFsuNjMyLCAuMTMyLCAuODk0XSxcbiAgICAweDIyOTY6IFsuNjMyLCAuMTMyLCAuODk0XSxcbiAgICAweDIyOTc6IFsuNjMyLCAuMTMyLCAuODk0XSxcbiAgICAweDIyOTg6IFsuNjMyLCAuMTMyLCAuODk0XSxcbiAgICAweDIyOTk6IFsuNjMyLCAuMTMyLCAuODk0XSxcbiAgICAweDIyQTI6IFsuNjkzLCAwLCAuNzAzXSxcbiAgICAweDIyQTM6IFsuNjkzLCAwLCAuNzAzXSxcbiAgICAweDIyQTQ6IFsuNjk0LCAwLCAuODk0XSxcbiAgICAweDIyQTU6IFsuNjkzLCAwLCAuODk0XSxcbiAgICAweDIyQTg6IFsuNzUsIC4yNDksIC45NzRdLFxuICAgIDB4MjJBQzogWy43MTEsIC4yMSwgLjcwM10sXG4gICAgMHgyMkFEOiBbLjc1LCAuMjQ5LCAuOTc0XSxcbiAgICAweDIyQzQ6IFsuNTIzLCAuMDIxLCAuNTc1XSxcbiAgICAweDIyQzU6IFsuMzM2LCAtMC4xNjYsIC4zMTldLFxuICAgIDB4MjJDNjogWy41MDIsIDAsIC41NzVdLFxuICAgIDB4MjJDODogWy41NCwgLjAzOSwgMV0sXG4gICAgMHgyMkUyOiBbLjcxMSwgLjIxLCAuODk0XSxcbiAgICAweDIyRTM6IFsuNzExLCAuMjEsIC44OTRdLFxuICAgIDB4MjJFRTogWy45NTEsIC4wMjksIC4zMTldLFxuICAgIDB4MjJFRjogWy4zMzYsIC0wLjE2NiwgMS4yOTVdLFxuICAgIDB4MjJGMTogWy44NzEsIC0wLjEwMSwgMS4zMjNdLFxuICAgIDB4MjMwODogWy43NSwgLjI0OCwgLjUxMV0sXG4gICAgMHgyMzA5OiBbLjc1LCAuMjQ4LCAuNTExXSxcbiAgICAweDIzMEE6IFsuNzQ5LCAuMjQ4LCAuNTExXSxcbiAgICAweDIzMEI6IFsuNzQ5LCAuMjQ4LCAuNTExXSxcbiAgICAweDIzMjI6IFsuNDA1LCAtMC4xMDgsIDEuMTVdLFxuICAgIDB4MjMyMzogWy4zOTIsIC0wLjEyNiwgMS4xNV0sXG4gICAgMHgyMzI5OiBbLjc1LCAuMjQ5LCAuNDQ3XSxcbiAgICAweDIzMkE6IFsuNzUsIC4yNDksIC40NDddLFxuICAgIDB4MjVCMzogWy43MTEsIDAsIDEuMDIyXSxcbiAgICAweDI1QjU6IFsuNzExLCAwLCAxLjAyMl0sXG4gICAgMHgyNUI5OiBbLjU0LCAuMDM5LCAuNTc1XSxcbiAgICAweDI1QkQ6IFsuNSwgLjIxLCAxLjAyMl0sXG4gICAgMHgyNUJGOiBbLjUsIC4yMSwgMS4wMjJdLFxuICAgIDB4MjVDMzogWy41MzksIC4wMzgsIC41NzVdLFxuICAgIDB4MjVFRjogWy43MTEsIC4yMTEsIDEuMTVdLFxuICAgIDB4MjY2MDogWy43MTksIC4xMjksIC44OTRdLFxuICAgIDB4MjY2MTogWy43MTEsIC4wMjQsIC44OTRdLFxuICAgIDB4MjY2MjogWy43MTksIC4xNTQsIC44OTRdLFxuICAgIDB4MjY2MzogWy43MTksIC4xMjksIC44OTRdLFxuICAgIDB4MjY2RDogWy43NSwgLjAxNywgLjQ0N10sXG4gICAgMHgyNjZFOiBbLjc0MSwgLjIyMywgLjQ0N10sXG4gICAgMHgyNjZGOiBbLjcyNCwgLjIyNCwgLjQ0N10sXG4gICAgMHgyNzU4OiBbLjc1LCAuMjQ5LCAuMzE5XSxcbiAgICAweDI3RTg6IFsuNzUsIC4yNDksIC40NDddLFxuICAgIDB4MjdFOTogWy43NSwgLjI0OSwgLjQ0N10sXG4gICAgMHgyN0Y1OiBbLjUxOCwgLjAxNywgMS44MDVdLFxuICAgIDB4MjdGNjogWy41MTgsIC4wMTcsIDEuODMzXSxcbiAgICAweDI3Rjc6IFsuNTE4LCAuMDE3LCAyLjEyNl0sXG4gICAgMHgyN0Y4OiBbLjU0NywgLjA0NiwgMS44NjhdLFxuICAgIDB4MjdGOTogWy41NDcsIC4wNDYsIDEuODddLFxuICAgIDB4MjdGQTogWy41NDcsIC4wNDYsIDIuMTI2XSxcbiAgICAweDI3RkM6IFsuNTE4LCAuMDE3LCAxLjgzM10sXG4gICAgMHgyOUY4OiBbLjcxMSwgLjIxLCAuODk0XSxcbiAgICAweDJBMkY6IFsuNTMsIC4wMjgsIC44OTRdLFxuICAgIDB4MkEzRjogWy42ODYsIDAsIC45XSxcbiAgICAweDJBQUY6IFsuNjk2LCAuMTk5LCAuODk0XSxcbiAgICAweDJBQjA6IFsuNjk3LCAuMTk5LCAuODk0XSxcbiAgICAweDMwMDg6IFsuNzUsIC4yNDksIC40NDddLFxuICAgIDB4MzAwOTogWy43NSwgLjI0OSwgLjQ0N10sXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7U1ZHQ2hhck1hcCwgQWRkUGF0aHN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7Ym9sZCBhcyBmb250fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9udHMvdGV4L2JvbGQuanMnO1xuXG5leHBvcnQgY29uc3QgYm9sZDogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDIxOiAnODkgNjI5UTg5IDY2MyAxMTYgNjg0VDE3MSA3MDVRMjE1IDcwNSAyMzcgNjgxVDI2MCA2MzRRMjYwIDYxOSAyMzMgNDM0VDIwNCAyNDRRMjAxIDIzNyAxNzUgMjM3UTE1MCAyMzcgMTQ2IDI0NFExNDQgMjQ4IDExNyA0MzNUODkgNjI5Wk05MCA4NlE5MCAxMjUgMTE2IDE0OFQxNzcgMTcxUTIxMSAxNjkgMjM1IDE0NlQyNTkgODZRMjU5IDQ4IDIzNSAyNVQxNzUgMVExMzggMSAxMTQgMjRUOTAgODYnLFxuICAgIDB4MjI6ICczOCA1NzJUMzggNjA4VDYxIDY2OVQxMjEgNjk0UTE2NyA2OTQgMTk2IDY1N1QyMjUgNTU5UTIyNSA1MjAgMjE0IDQ4MlQxODYgNDE4VDE1MSAzNzBUMTE5IDMzOVQ5OSAzMjlUODIgMzQwVDcwIDM2MFE3MCAzNjUgNzQgMzY5VDkyIDM4NVQxMjIgNDE0UTE0MiA0NDEgMTU0IDQ3MVQxNzAgNTE4TDE3MiA1MzVMMTY2IDUzMlExNjAgNTMwIDE0OCA1MjdUMTIyIDUyM1E4NSA1MjMgNjIgNTQ3Wk0zMDUgNTcyVDMwNSA2MDhUMzI4IDY2OVQzODggNjk0UTQzNCA2OTQgNDYzIDY1N1Q0OTIgNTU5UTQ5MiA1MjAgNDgxIDQ4MlQ0NTMgNDE4VDQxOCAzNzBUMzg2IDMzOVQzNjYgMzI5VDM0OSAzNDBUMzM3IDM2MFEzMzcgMzY1IDM0MSAzNjlUMzU5IDM4NVQzODkgNDE0UTQwOSA0NDEgNDIxIDQ3MVQ0MzYgNTE4TDQzOSA1MzVMNDMzIDUzMlE0MjcgNTMwIDQxNSA1MjdUMzg5IDUyM1EzNTIgNTIzIDMyOSA1NDcnLFxuICAgIDB4MjM6ICc2NCAzNjJRNjQgMzgwIDg3IDM5M0gzNjNMMzY2IDQwNFEzNzkgNDQzIDM5MCA0ODBUNDA5IDU0MlQ0MjQgNTkwVDQzNSA2MjhUNDQzIDY1NVQ0NTEgNjc0VDQ1OCA2ODZUNDY3IDY5MlQ0NzggNjk0UTQ5MCA2OTQgNDk5IDY4NlQ1MDkgNjYyUTUwNSA2NDMgNDI3IDM5NVE0MjcgMzkzIDUyMyAzOTNINjIwTDYyMyA0MDRRNjMwIDQyNiA2NTIgNDk4VDY5MSA2MjRUNzExIDY4MVE3MTggNjk0IDczNSA2OTRRNzQ4IDY5NCA3NTcgNjg1VDc2NiA2NjJRNzYyIDY0MyA2ODQgMzk1UTY4NCAzOTMgNzc3IDM5M0g4NzFRODcyIDM5MiA4NzUgMzkwVDg4MSAzODZUODg3IDM4MVQ4OTEgMzc0VDg5MyAzNjNRODkzIDM0NSA4NzEgMzMzTDc2NyAzMzJINjY0TDY2MCAzMTlRNjYwIDMxOCA2MzggMjQ1VDYxNCAxNzFRNjE0IDE2OSA3NDIgMTY5SDg3MUw4NzcgMTY1UTg4MyAxNjEgODg1IDE1OVQ4OTAgMTUxVDg5MyAxMzhRODkzIDEyMCA4NzEgMTA5TDczMiAxMDhINTk0TDU5MCA5NVE1ODcgODQgNTQ2IC00NlE1MDggLTE3NSA1MDUgLTE3OFE0OTggLTE5MyA0NzggLTE5M1E0NjIgLTE5MyA0NTUgLTE4M1Q0NDggLTE2NFE0NDggLTE1NiA1MzAgMTA2UTUzMCAxMDggNDM0IDEwOEgzMzdMMzMzIDk1UTMzMCA4NCAyODkgLTQ2UTI1MSAtMTc1IDI0OCAtMTc4UTI0MCAtMTkzIDIyMiAtMTkzUTIwNiAtMTkzIDE5OSAtMTgzVDE5MSAtMTY0UTE5MSAtMTU0IDI3MyAxMDZRMjczIDEwOCAxODAgMTA4TDg3IDEwOVE2NCAxMTcgNjQgMTM5UTY0IDE1NiA4NyAxNjlIMjkzTDMyMSAyNjJRMzI2IDI3NyAzMzEgMjk0VDM0MCAzMjFMMzQzIDMzMFEzNDMgMzMyIDIxNSAzMzJMODcgMzMzUTY0IDM0MyA2NCAzNjJaTTYwMCAzMzBRNjAwIDMzMiA1MDQgMzMySDQwN0w0MDMgMzE5UTQwMyAzMTggMzgxIDI0NVQzNTcgMTcxUTM1NyAxNjkgNDUzIDE2OUg1NTBMNTc4IDI2MlE1ODMgMjc3IDU4OCAyOTRUNTk3IDMyMUw2MDAgMzMwJyxcbiAgICAweDI0OiAnNjQgNDk0UTY0IDU0MSA4MCA1NzlUMTIwIDYzOFQxNzEgNjc0VDIxOSA2OTNUMjUzIDY5OEgyNTZWNzUwSDMxOFY2OTlIMzIzUTM1NSA2OTQgMzgwIDY4NlQ0MzMgNjYzVDQ4MCA2MjBUNTA2IDU1NlE1MTAgNTM5IDUxMCA1MjBRNTEwIDQ4MCA0ODggNDYzVDQ0MCA0NDVMNDIyIDQ0N1E0MDcgNDUxIDM5OCA0NTlRMzcwIDQ3OCAzNzAgNTE1UTM3MCA1NDIgMzg0IDU1OVQ0MTIgNTgwTDQyNyA1ODRRNDI0IDU4OSA0MTggNTk2VDM4NiA2MTdUMzI0IDYzNkgzMThWNDM0UTQxMSA0MTkgNDYwIDM1NVQ1MTAgMjE3UTUxMCAxOTYgNTA3IDE3NVQ0OTIgMTIyVDQ2MSA2N1Q0MDQgMjNUMzE4IC00Vi01NkgyNTZWLTVIMjU0UTI1MiAtMyAyNDAgLTNRMTk0IDQgMTYwIDIzVDEwOCA2NFQ4MCAxMTJUNjcgMTU2VDY0IDE5MFE2NCAyMTggODEgMjQwVDEzNCAyNjJRMTcxIDI2MiAxODcgMjQwVDIwNCAxOTNUMTkwIDE1MFQxNTMgMTI1UTE0NiAxMjUgMTQ0IDEyM1ExNDIgMTIzIDE0OSAxMTNUMTc0IDg5VDIxOCA2NlEyNDcgNTggMjU1IDU4UTI1NiA1OCAyNTYgMTczVjI4N0wyMzkgMjkxUTE2MCAzMDggMTEyIDM2NVQ2NCA0OTRaTTI1NSA2MzZRMjQ2IDYzNSAyMzYgNjMyVDIwNiA2MjBUMTczIDU5MVQxNjAgNTQzUTE2MCA0NzIgMjU2IDQ0OFY1NDJRMjU2IDYzNiAyNTUgNjM2Wk0zMjAgNTlRMzI0IDU5IDMzMyA2MVQzNTYgNzBUMzg0IDg5VDQwNiAxMjBUNDE1IDE2N1E0MTUgMjAwIDM5NSAyMjVUMzU2IDI2MFQzMTggMjc0VjU5SDMyMCcsXG4gICAgMHgyNTogJzY1IDU0OVE2NSA2MDkgODQgNjUyVDEzMiA3MTRUMTg3IDc0MlQyMzYgNzUwUTI2NSA3NTAgMjk2IDczNFQzNTUgNjk3VDQzMSA2NjFUNTQxIDY0NFE2NjIgNjQ0IDczNiA3MzBRNzUxIDc0OSA3NjcgNzQ5VDc5MCA3MzlUNzk3IDcxOVE3OTcgNzEwIDc2OCA2NzJUNTA0IDMyOVEyMTIgLTQ3IDIxMSAtNDhRMjAzIC01NSAxOTEgLTU1UTE2MSAtNTUgMTYxIC0yNVExNjEgLTE3IDE2MyAtMTJMNjQyIDYwOVE2MDggNTk1IDU0MiA1OTVRNTE1IDU5NSA0ODggNTk5VDQ0MSA2MDhUNDA1IDYxOVQzODEgNjI4TDM3MyA2MzJRMzczIDYzMCAzNzUgNjE5VDM4MCA1ODlUMzgzIDU0OFEzODMgNDU1IDM0MyA0MDFUMjM1IDM0N1EyMTcgMzQ3IDE5OCAzNTFUMTU0IDM2OFQxMTAgNDAzVDc4IDQ2MlQ2NSA1NDlaTTMyMCA1NDlRMzIwIDYzMyAyOTUgNjY1VDIzNSA2OThIMjM0UTIxNCA2OTggMTk2IDY3NFExODIgNjUwIDE4MiA1NDlRMTgyIDUwOSAxODMgNDg2VDE5MCA0NDFUMjA3IDQwOVQyMzggMzk5UTI2OSAzOTkgMjk0IDQzMVQzMjAgNTQ5Wk03NDUgLTU2UTcyNyAtNTYgNzA4IC01MlQ2NjQgLTM1VDYyMCAwVDU4OCA1OVQ1NzUgMTQ2VDU4OCAyMzJUNjIwIDI5MVQ2NjMgMzI1VDcwOCAzNDNUNzQ3IDM0N1E4MTAgMzQ3IDg1MSAyOTRUODkzIDE0NlE4OTMgODkgODc5IDQ4VDg0MSAtMTVUNzk0IC00NlQ3NDUgLTU2Wk04MzAgMTQ2UTgzMCAyMzAgODA1IDI2MlQ3NDUgMjk1SDc0NFE3MjQgMjk1IDcwNiAyNzFRNjkyIDI0NyA2OTIgMTQ2UTY5MiAxMDYgNjkzIDgzVDcwMCAzOFQ3MTcgNlQ3NDggLTRRNzc5IC00IDgwNCAyOFQ4MzAgMTQ2JyxcbiAgICAweDI2OiAnMjU1IC0xMVEyMDkgLTExIDE2NCA0VDg0IDU2VDQ4IDE0NlE0OCAxNTkgNTAgMTcxUTU3IDE5NyA3MiAyMThUOTkgMjQ5VDE1MiAyOTJRMjA0IDMzMyAyMDQgMzM0TDE5NCAzNTZRMTg1IDM3OSAxNzYgNDIxVDE2NiA1MTFRMTY2IDUzOCAxNjggNTUxUTE4MiA2MTMgMjI2IDY1NFQzMzIgNzA0UTMzNCA3MDQgMzQzIDcwNFQzNTggNzA1UTQxMiA3MDIgNDQ0IDY2MVQ0NzYgNTY1VjU1OVE0NzYgNDg5IDMzNCAzNzFMMzMwIDM2OEwzMzUgMzU3UTM4MiAyNzIgNDg1IDE2NUw0OTYgMTU0TDUwNiAxNjNRNTQzIDIwMCA1OTcgMjczTDY3MSAzODJINjAxVjQ0NEg2MTBMNzMyIDQ0MVE4MjEgNDQxIDgzMCA0NDRIODM2VjM4Mkg3NDFMNzA5IDMzNVE3MDIgMzI0IDY4NyAzMDJUNjY1IDI3MFQ2NDYgMjQ0VDYyNSAyMTZUNjA1IDE5MVQ1ODEgMTYyVDU1MyAxMzJMNTM3IDExNlE1NDQgMTA5IDU1NyA5OFQ2MDUgNjlUNjczIDUxUTcxMSA1MSA3MzkgNzBUNzY3IDExNVYxMThIODI5VjExNFE4MjkgNzAgNzg2IDMwVDY2OCAtMTFRNTcwIC0xMSA0NzQgMzdMNDUxIDQ5TDQ0MSA0M1EzNTIgLTExIDI1NSAtMTFaTTQxNSA1NjRRNDE1IDU5NiA0MDAgNjI1VDM1NiA2NTRRMzI5IDY1NCAzMTAgNjM0VDI4NSA1ODhRMjgzIDU4MCAyODMgNTU0UTI4MyA0NzUgMzA5IDQxN0wzMjUgNDMxUTQxNSA1MTIgNDE1IDU2NFpNMTkyIDE4MlExOTIgMTI2IDIxMyA4OVQyNzkgNTFRMzQ4IDUxIDQwMCA4M0wzODkgOTFRMzYyIDExMiAzMzggMTM3VDI5NSAxODZUMjY0IDIyOVQyNDAgMjY1VDIyNyAyODZRMjI2IDI4NSAyMjIgMjgwVDIxNyAyNzJUMjExIDI2M1QyMDUgMjUxVDIwMCAyMzhUMTk2IDIyMlQxOTMgMjA0VDE5MiAxODInLFxuICAgIDB4Mjc6ICc3NCA1NzJUNzQgNjA4VDk3IDY2OVQxNTcgNjk0UTIwMyA2OTQgMjMyIDY1N1QyNjEgNTU5UTI2MSA1MjAgMjUwIDQ4MlQyMjIgNDE4VDE4NyAzNzBUMTU1IDMzOVQxMzUgMzI5UTEyOCAzMjkgMTE3IDM0MFQxMDYgMzU5UTEwNiAzNjUgMTE3IDM3NVQxNDQgMzk5VDE3NiA0NDBUMjAzIDUwNVEyMDQgNTExIDIwNSA1MThUMjA4IDUzMFY1MzVMMjAyIDUzMlExOTYgNTMwIDE4NCA1MjdUMTU4IDUyM1ExMjEgNTIzIDk4IDU0NycsXG4gICAgMHgyODogJzEwMyAxNjZUMTAzIDI1MVQxMjEgNDEyVDE2NSA1NDFUMjI1IDYzOVQyODcgNzA4VDM0MSA3NTBIMzU2SDM2MVEzODIgNzUwIDM4MiA3MzZRMzgyIDczMiAzNjUgNzE0VDMyMyA2NjFUMjc0IDU3NlQyMzIgNDM5VDIxNCAyNTBRMjE0IC02MiAzODEgLTIyOVEzODIgLTIzMSAzODIgLTIzNFEzODIgLTI0OSAzNjAgLTI0OUgzNTZIMzQxUTMxNCAtMjMxIDI4NyAtMjA3VDIyNiAtMTM4VDE2NSAtNDFUMTIxIDg5JyxcbiAgICAweDI5OiAnMjMxIDI1MVEyMzEgMzU0IDIxNCA0MzlUMTczIDU3NVQxMjMgNjYxVDgxIDcxNFQ2NCA3MzVRNjQgNzQ0IDczIDc0OUg3NVE3NyA3NDkgNzkgNzQ5VDg0IDc1MFQ5MCA3NTBIMTA1UTEzMiA3MzIgMTU5IDcwOFQyMjAgNjM5VDI4MSA1NDJUMzI1IDQxM1QzNDMgMjUxVDMyNSA4OVQyODEgLTQwVDIyMSAtMTM4VDE1OSAtMjA3VDEwNSAtMjQ5SDkwUTgwIC0yNDkgNzYgLTI0OVQ2OCAtMjQ1VDY0IC0yMzRRNjQgLTIzMCA4MSAtMjEyVDEyMyAtMTYwVDE3MiAtNzVUMjE0IDYxVDIzMSAyNTEnLFxuICAgIDB4MkE6ICcyMzUgNzA2UTIzNSA3MjQgMjUxIDczN1QyODcgNzUwUTMwNiA3NTAgMzIyIDczOFQzMzkgNzA2UTMzOSA2ODUgMzE4IDU4MFY1NzlRNDI5IDY2MyA0MzYgNjY2UTQ0MSA2NjggNDQ5IDY2OFE0NzEgNjY4IDQ4NiA2NTBUNTAxIDYxMlE1MDEgNTgyIDQ3OCA1NzJRNDc2IDU3MCA0MTQgNTQ5TDM1NCA1MjhMNDE0IDUwN1E0MjAgNTA1IDQzMCA1MDJUNDQ1IDQ5N1Q0NTggNDkyVDQ3MCA0ODhUNDc5IDQ4M1Q0ODcgNDc4VDQ5MyA0NzFUNDk3IDQ2M1Q1MDAgNDU0VDUwMSA0NDNRNTAxIDQyMyA0ODYgNDA2VDQ0OSAzODhINDQ2UTQzNSAzODggMzcwIDQzN1EzMzkgNDYxIDMxOCA0NzdWNDc2UTMzOSAzNzEgMzM5IDM1MFEzMzkgMzMyIDMyMyAzMTlUMjg3IDMwNlQyNTEgMzE5VDIzNSAzNTBRMjM1IDM3MSAyNTYgNDc2VjQ3N1ExNDUgMzkzIDEzOCAzOTBRMTMzIDM4OCAxMjUgMzg4UTEwMyAzODggODggNDA2VDczIDQ0NFE3MyA0NzQgOTYgNDg0UTk4IDQ4NiAxNjAgNTA3TDIyMCA1MjhMMTYwIDU0OVExNTQgNTUxIDE0NCA1NTRUMTI5IDU1OVQxMTYgNTY0VDEwNCA1NjhUOTUgNTczVDg3IDU3OFQ4MSA1ODVUNzcgNTkzVDc0IDYwMlQ3MyA2MTNRNzMgNjMzIDg4IDY1MFQxMjUgNjY4SDEyOFExMzkgNjY4IDIwNCA2MTlRMjM1IDU5NSAyNTYgNTc5VjU4MFEyMzUgNjg1IDIzNSA3MDYnLFxuICAgIDB4MkI6ICc2NCAyMzJUNjQgMjUwVDg3IDI4MUg0MTZWNDQ0UTQxNiA2MDggNDE4IDYxMlE0MjYgNjMzIDQ0NiA2MzNUNDc1IDYxM1E0NzcgNjA4IDQ3NyA0NDRWMjgxSDgwN1E4MDggMjgwIDgxMSAyNzhUODE3IDI3NFQ4MjMgMjY5VDgyNyAyNjJUODI5IDI1MVE4MjkgMjMwIDgwNyAyMjFMNjQyIDIyMEg0NzdWNTdRNDc3IC0xMDcgNDc1IC0xMTJRNDY4IC0xMzEgNDQ2IC0xMzFRNDI1IC0xMzEgNDE4IC0xMTJRNDE2IC0xMDcgNDE2IDU3VjIyMEgyNTFMODcgMjIxUTY0IDIzMiA2NCAyNTAnLFxuICAgIDB4MkM6ICc3NCA4NVE3NCAxMjAgOTcgMTQ1VDE1OSAxNzFRMjAwIDE3MSAyMjYgMTM4UTI1OCAxMDEgMjU4IDM3UTI1OCAtNSAyNDYgLTQ0VDIxOCAtMTA5VDE4MyAtMTU1VDE1MiAtMTg0VDEzNSAtMTk0UTEyOSAtMTk0IDExOCAtMTgzVDEwNiAtMTY0UTEwNiAtMTU3IDExNSAtMTQ5UTEyMSAtMTQ1IDEzMCAtMTM3VDE2MSAtMTAwVDE5NSAtMzVRMTk3IC0yOCAyMDAgLTE3VDIwNCAzVDIwNSAxMVQxOTkgOVQxODMgM1QxNTkgMFExMjAgMCA5NyAyNlQ3NCA4NScsXG4gICAgMHgyRDogJzEzIDE2NlYyNzhIMzE4VjE2NkgxMycsXG4gICAgMHgyRTogJzc0IDg1UTc0IDEyMSA5OSAxNDZUMTU2IDE3MVEyMDAgMTcxIDIyMiAxNDNUMjQ1IDg1UTI0NSA1NiAyMjQgMjlUMTYwIDFRMTE4IDEgOTYgMjdUNzQgODUnLFxuICAgIDB4MkY6ICc0NTEgNzMwUTQ2MCA3NTAgNDc5IDc1MFE0OTIgNzUwIDUwMSA3NDBUNTEwIDcxOFE1MDggNzA4IDMxOCAyNDRMMTIyIC0yMzJRMTEyIC0yNTAgOTUgLTI1MFE4MiAtMjUwIDczIC0yNDFUNjQgLTIxOFE2NiAtMjA1IDI1OCAyNjFUNDUxIDczMCcsXG4gICAgMHgzQTogJzc0IDM1OVE3NCAzOTQgOTggNDE5VDE1OCA0NDRRMjAwIDQ0NCAyMjIgNDE3VDI0NSAzNThRMjQ1IDMyOSAyMjQgMzAyVDE2MCAyNzRRMTE2IDI3NCA5NSAzMDFUNzQgMzU5Wk03NCA4NVE3NCAxMjEgOTkgMTQ2VDE1NiAxNzFRMjAwIDE3MSAyMjIgMTQzVDI0NSA4NVEyNDUgNTYgMjI0IDI5VDE2MCAxUTExOCAxIDk2IDI3VDc0IDg1JyxcbiAgICAweDNCOiAnNzQgMzU5UTc0IDM5NCA5OCA0MTlUMTU4IDQ0NFEyMDAgNDQ0IDIyMiA0MTdUMjQ1IDM1OFEyNDUgMzI5IDIyNCAzMDJUMTYwIDI3NFExMTYgMjc0IDk1IDMwMVQ3NCAzNTlaTTc0IDUwVDc0IDg2VDk3IDE0NlQxNTggMTcxUTIwNCAxNzEgMjI2IDEzMlQyNDggMzhRMjQ4IC0yMyAyMjMgLTgwVDE3MSAtMTY1VDEzNSAtMTk0UTEyOSAtMTk0IDExOCAtMTgzVDEwNiAtMTY0UTEwNiAtMTYzIDEwNiAtMTYwTDEwNyAtMTU4UTEwOCAtMTU1IDEyMSAtMTQyVDE1MCAtMTA3VDE3NyAtNThRMTg5IC0zMiAxOTQgM1ExOTUgNiAxOTMgNlExNzIgMCAxNTggMFExMjEgMCA5OCAyNScsXG4gICAgMHgzQzogJzc5NyAtNTZRNzk3IC02OCA3OTAgLTc2VDc2NyAtODVINzU5TDQzNCA3MFExMDggMjI2IDEwNSAyMjlROTYgMjM4IDk2IDI1MFE5NiAyNjMgMTA1IDI3MlExMDkgMjc2IDI3MSAzNTRUNTk1IDUwOFQ3NTcgNTg1UTc2MyA1ODcgNzY2IDU4N1E3ODAgNTg3IDc4OCA1NzhUNzk3IDU1NlE3OTcgNTQ0IDc4OCA1MzVRNzg0IDUzMSA0OTAgMzkxTDE5NyAyNTFRMjEzIDI0MiAzNTkgMTczVDY0NCAzN1Q3ODggLTM0UTc5NyAtNDMgNzk3IC01NicsXG4gICAgMHgzRDogJzg3IDMzM1E2NCAzNDMgNjQgMzYyUTY0IDM4MyA4NCAzOTFRODkgMzkzIDQ0OCAzOTNIODA3UTgwOCAzOTIgODExIDM5MFQ4MTcgMzg2VDgyMyAzODFUODI3IDM3NFQ4MjkgMzYzUTgyOSAzNDUgODA3IDMzM0g4N1pNODcgMTA5UTY0IDExOCA2NCAxMzlRNjQgMTU5IDg2IDE2OFE4OSAxNjkgNDQ4IDE2OUg4MDdMODEyIDE2NlE4MTYgMTYzIDgxOCAxNjJUODIzIDE1N1Q4MjcgMTQ5VDgyOSAxMzlRODI5IDExOCA4MDcgMTA5SDg3JyxcbiAgICAweDNFOiAnMTI3IC04NVExMTAgLTg1IDEwMyAtNzVUOTYgLTU1UTk2IC00MSAxMDYgLTM0UTExOSAtMjQgMzA4IDY1UTM2MSA5MCA0MTEgMTE0TDY5NiAyNTBMNDI3IDM3OVExMDYgNTMzIDEwMyA1MzdROTYgNTQ1IDk2IDU1N1E5NiA1NjggMTA0IDU3N1QxMjggNTg3UTEzNyA1ODYgNDYwIDQzMVQ3ODggMjcyUTc5NyAyNjMgNzk3IDI1MFE3OTcgMjM4IDc4OCAyMjlRNzg1IDIyNiA0NTkgNzBMMTM1IC04NUgxMjcnLFxuICAgIDB4M0Y6ICc2NSA1NzBRNjUgNjI4IDExOSA2NjRUMjU5IDcwMFEzMjYgNzAwIDM3MiA2ODhUNDQwIDY1NFQ0NjkgNjEzVDQ3OCA1NjlRNDc4IDUwNSA0MTIgNDY1UTI4NyAzOTEgMjg3IDI5NFYyODNRMjg3IDI1MCAyODQgMjQ0VDI2MyAyMzdIMjU2SDI0OVEyMzIgMjM3IDIyOSAyNDJUMjI1IDI3MlYyODdRMjI3IDM2NCAyNTMgNDE4UTI3NCA0NjMgMzExIDUwNFEzMzUgNTMwIDMzNSA1NzVRMzM1IDYyMiAzMjMgNjM1VDI1OSA2NDhRMjMxIDY0OCAyMDkgNjQ0VDE3OSA2MzZUMTcwIDYzMEwxNzIgNjI4UTE3NCA2MjcgMTc3IDYyNVQxODMgNjIwVDE5MCA2MTFUMTk3IDYwMVQyMDIgNTg3VDIwNCA1NzBRMjA0IDUzOSAxODUgNTE5VDEzNCA0OTlRMTA1IDQ5OSA4NSA1MTdUNjUgNTcwWk0xNzEgODZRMTcxIDEyNSAxOTcgMTQ4VDI1OCAxNzFRMjkyIDE2OSAzMTYgMTQ2VDM0MCA4NlEzNDAgNDggMzE2IDI1VDI1NiAxUTIxOCAxIDE5NSAyNFQxNzEgODYnLFxuICAgIDB4NDA6ICc2NCAzNDdRNjQgNTExIDE3MSA2MDVUNDM0IDY5OVE0ODcgNjk5IDUwMCA2OThRNjI0IDY4NCA3MDMgNjIxVDgxMSA0NjRRODI4IDQxNCA4MjggMzQ0UTgyOCAyMzIgNzg4IDE3OVQ2OTEgMTI1UTY3MyAxMjUgNjU3IDEyN1Q2MjggMTMyVDYwNiAxNDBUNTg4IDE0OFQ1NzYgMTU2VDU2OCAxNjJMNTY2IDE2NFE1NjUgMTY0IDU0OSAxNTRUNTA0IDEzNVQ0NDQgMTI1UTM0OSAxMjUgMjg0IDE4M1QyMTggMzQ3UTIxOCA0NTUgMjg0IDUxMlQ0NDggNTY5UTU1NCA1NjkgNjEwIDQ3OUg2MzhRNjcwIDQ3OSA2NzQgNDcxUTY3NiA0NjggNjc2IDM0MFYyNThRNjc2IDIxMyA2NzkgMTk5VDY5NCAxNzhRNzAxIDE3NCA3MTMgMTc3UTc2NyAxODcgNzY3IDM0MFE3NjcgNDg5IDY3OCA1NjlUNDQ2IDY0OVEyOTkgNjQ5IDIxMyA1NjZUMTI2IDM0NlExMjYgMzA3IDEzNCAyNjlUMTY2IDE4OVQyMjUgMTE2VDMyMCA2NVQ0NTUgNDVINDYzUTYwNiA1MSA3MjEgOTFMNzQ2IDk5SDc4Mkg4MDFRODI5IDk5IDgyOSA4NVE4MjkgNzggODI1IDc1VDgwNCA2NVE4MDAgNjMgNzk3IDYyUTYyNSAtNiA0NTEgLTZRMjcxIC02IDE2OCA5MVQ2NCAzNDdaTTU0NyA0NjhRNTI2IDQ5MyA1MDQgNTA1VDQ0NCA1MTdUMzc3IDQ3NlQzNDYgMzQ3UTM0NiAzMDYgMzU0IDI3MVQzODYgMjA2VDQ0OCAxNzdRNTA1IDE3NyA1NDcgMjI2VjQ2OCcsXG4gICAgMHg1QjogJzEyOCAtMjUwVjc1MEgyOTNWNjg5SDE4OVYtMTg5SDI5M1YtMjUwSDEyOCcsXG4gICAgMHg1QzogJzY0IDcxOFE2MyA3MzEgNzIgNzQwVDk0IDc1MFExMDYgNzUwIDExMyA3NDNRMTE4IDc0MSAxMjIgNzMyTDMxOCAyNTZRNTA4IC0yMDggNTEwIC0yMThRNTExIC0yMzEgNTAyIC0yNDBUNDgwIC0yNTBRNDYwIC0yNTAgNDUxIC0yMzBRNDUxIC0yMjkgMjU5IDIzOFQ2NCA3MTgnLFxuICAgIDB4NUQ6ICcyNSA2ODlWNzUwSDE5MFYtMjUwSDI1Vi0xODlIMTI5VjY4OUgyNScsXG4gICAgMHg1RTogJzIwNyA2MzJMMjg3IDY5NFEyODkgNjkzIDM2OCA2MzJUNDQ4IDU3MFQ0MzEgNTQ1VDQxMyA1MjBRNDEwIDUyMCAzNTAgNTU5TDI4NyA1OTdMMjI0IDU1OVExNjQgNTIwIDE2MSA1MjBRMTYwIDUyMCAxNDMgNTQ0VDEyNiA1NzBUMjA3IDYzMicsXG4gICAgMHg1RjogJzAgLTYxVi0xMEg1NzRWLTYxSDAnLFxuICAgIDB4NjA6ICcxMTQgNjM0UTExNCA2NjMgMTM2IDY4NFQxODMgNzA2UTE5MSA3MDYgMTk2IDcwNVQyMDggNzAwVDIxOSA2OTNUMjMyIDY4MVQyNDUgNjY2VDI2MiA2NDVUMjgyIDYyMFEzMzIgNTU4IDMzNyA1NTNRMzM4IDU1MiAzMTggNTI3TDI5OSA1MDNMMjIzIDU0M1EyMTUgNTQ3IDIwMiA1NTNUMTgzIDU2M1QxNjcgNTcxVDE1MyA1ODBUMTQxIDU4N1QxMzEgNTk1VDEyNCA2MDNUMTE4IDYxMlQxMTUgNjIyVDExNCA2MzQnLFxuICAgIDB4N0I6ICc1MDQgLTIwN1Q1MDQgLTIyNVQ1MDAgLTI0NlQ0NzYgLTI1MEg0NjlRMjU3IC0yNTAgMjI3IC0xNDVMMjI1IC0xMzVMMjI0IDBRMjI0IDE1IDIyNCAzMFQyMjQgNTlUMjI0IDg0VDIyNCAxMDZUMjIzIDEyMlQyMjMgMTMzVjEzN1EyMjIgMTM4IDIyMSAxNDRUMjEzIDE2MlQxOTUgMTg1UTE3MSAyMDYgMTQxIDIxNVExMjMgMjIyIDEwNyAyMjNUODQgMjI1VDc0IDIyOVQ3MCAyNTBUNzMgMjcwVDgzIDI3NlQxMDYgMjc2VDE0MSAyODVRMTcxIDI5NCAxOTUgMzE1UTIwMSAzMjEgMjA2IDMyOFQyMTQgMzQxVDIxOSAzNTJUMjIyIDM2MEwyMjMgMzYzVjM2N1EyMjMgMzcxIDIyMyAzNzhUMjIzIDM5NFQyMjQgNDE1VDIyNCA0NDFUMjI0IDQ3MFQyMjQgNTAxTDIyNSA2MzZRMjQ5IDczOSA0MjYgNzQ5UTQyOCA3NDkgNDQzIDc0OVQ0NjYgNzUwSDQ3M1E0OTUgNzUwIDQ5OSA3NDdUNTA0IDcyNVQ1MDEgNzA0VDQ4MCA2OTlRMzgxIDY5MyAzNTcgNjQ1UTM1MiA2MzQgMzUxIDYxN1QzNTAgNDk3VjQxMlEzNTAgMzUwIDMzOCAzMjlRMzI1IDMwMyAyOTggMjg0VDI1MSAyNThUMjI3IDI1MVEyMjYgMjUxIDIyNiAyNTBMMjI3IDI0OVEyMzEgMjQ4IDIzOCAyNDZUMjY1IDIzNlQyOTkgMjE3VDMyOSAxODRUMzQ5IDEzN1EzNTAgMTMxIDM1MCAzVDM1MiAtMTMwUTM1OCAtMTYwIDM5MiAtMTc4VDQ4MCAtMTk5UTQ5NyAtMjAwIDUwMCAtMjAzJyxcbiAgICAweDdDOiAnMTYwIC0yNDlRMTM4IC0yNDkgMTI5IC0yMjVWMjUwUTEyOSA3MjUgMTMxIDcyOVExMzkgNzUwIDE1OSA3NTBUMTkwIDcyNVYtMjI1UTE4MSAtMjQ5IDE2MCAtMjQ5JyxcbiAgICAweDdEOiAnNzAgNzI2UTcxIDc0NCA3NCA3NDdUOTkgNzUwSDEwNlEzMjMgNzUwIDM0OSA2MzZMMzUwIDUwMVEzNTAgNDg2IDM1MCA0NzBUMzUwIDQ0MVQzNTAgNDE2VDM1MCAzOTRUMzUxIDM3OFQzNTEgMzY3VjM2M1EzNTIgMzYyIDM1MyAzNTZUMzYxIDMzOFQzNzkgMzE1UTQwMyAyOTQgNDMzIDI4NVE0NTEgMjc4IDQ2NyAyNzdUNDkwIDI3NVQ1MDAgMjcxVDUwNCAyNTBUNTAxIDIzMFQ0OTEgMjI0VDQ2OCAyMjRUNDMzIDIxNVE0MDMgMjA2IDM3OSAxODVRMzczIDE3OSAzNjggMTcyVDM2MCAxNTlUMzU1IDE0OFQzNTIgMTQwTDM1MSAxMzdWMTMzUTM1MSAxMjkgMzUxIDEyMlQzNTEgMTA2VDM1MCA4NVQzNTAgNTlUMzUwIDMxVDM1MCAwTDM0OSAtMTM1TDM0NyAtMTQ1UTMxNyAtMjUwIDEwNiAtMjUwSDk5UTc5IC0yNTAgNzUgLTI0N1Q3MCAtMjI2UTcwIC0yMDggNzMgLTIwNFQ5NSAtMTk5UTE5MyAtMTkzIDIxNyAtMTQ1UTIyMiAtMTM0IDIyMyAtMTE3VDIyNCAzUTIyNCAyMCAyMjQgNDhUMjIzIDg2UTIyMyAxNDUgMjM3IDE3NVQzMDEgMjMyUTMzNSAyNDkgMzQ3IDI0OVEzNDggMjQ5IDM0OCAyNTBMMzQ3IDI1MVEzNDMgMjUyIDMzNiAyNTRUMzA5IDI2NFQyNzUgMjg0VDI0NSAzMTZUMjI1IDM2M1EyMjQgMzY5IDIyNCA0OTdUMjIyIDYzMVEyMTYgNjYwIDE4MiA2NzhUOTUgNjk5UTc3IDcwMCA3NCA3MDRUNzAgNzI2JyxcbiAgICAweDdFOiAnMzQzIDIwMlEzMjAgMjAyIDI3OCAyMjVUMjE1IDI0OVExODEgMjQ5IDE0NiAyMTRMMTM0IDIwMkwxMTUgMjE5UTExMSAyMjIgMTA2IDIyNlQ5OCAyMzRMOTYgMjM2UTE1OCAzMDYgMTY1IDMxM1ExOTkgMzQ0IDIzMCAzNDRRMjM5IDM0NCAyNDQgMzQzUTI2MiAzMzkgMzAwIDMxOFQzNTkgMjk3UTM5MyAyOTcgNDI4IDMzMkw0NDAgMzQ0TDQ1OSAzMjdRNDYzIDMyNCA0NjggMzIwVDQ3NiAzMTJMNDc4IDMxMFE0MTYgMjQwIDQwOSAyMzNRMzc1IDIwMiAzNDMgMjAyJyxcbiAgICAweEE4OiAnOTYgNjE1UTk2IDY1MCAxMjAgNjcyVDE3OCA2OTVRMjE0IDY5MyAyMzQgNjY5VDI1NSA2MTVRMjU1IDU4MyAyMzIgNTU5VDE3NiA1MzVRMTQ3IDUzNSAxMjIgNTU2VDk2IDYxNVpNMzE5IDYxNVEzMTkgNjUxIDM0MyA2NzNUMzk5IDY5NVE0MjYgNjk1IDQ1MiA2NzVUNDc4IDYxNVE0NzggNTc4IDQ1NCA1NTdUMzk1IDUzNVEzNjQgNTM3IDM0MiA1NTlUMzE5IDYxNScsXG4gICAgMHhBQzogJzY4MCAzNzFRNjgzIDM2OSA2ODggMzY2VDY5NSAzNjFUNjk4IDM1NlQ3MDEgMzQ2VDcwMSAzMzJUNzAyIDMwOFYyMTZRNzAyIDE5NiA3MDIgMTY4VDcwMyAxMzBRNzAzIDkwIDY5NyA3NlQ2NzEgNjFRNjUwIDYxIDY0MyA4MVE2NDEgODYgNjQxIDE5OFYzMTBIMzY0TDg3IDMxMVE2NCAzMTkgNjQgMzQxUTY0IDM2MiA4NCAzNjlRODkgMzcxIDM4NSAzNzFINjgwJyxcbiAgICAweEFGOiAnODAgNTQwVjYwN0g0OTRWNTQwSDgwJyxcbiAgICAweEIwOiAnMTYwIDYxOFExNjAgNjUzIDE5MyA2NzdUMjc5IDcwMkgyODRRMzgxIDcwMiA0MDcgNjQ3UTQxNCA2MzQgNDE0IDYxOFE0MTQgNjA3IDQxMCA1OTZUMzk1IDU3MFQzNTUgNTQ2VDI4NyA1MzZUMjIwIDU0NVQxODEgNTY4VDE2NSA1OTRUMTYwIDYxOFpNMzUyIDYxOFEzNTIgNjQ1IDM0MSA2NTJUMzAxIDY1OUgyOTJRMjg2IDY1OSAyNzggNjU5VDI2OCA2NjBRMjQ3IDY2MCAyMzYgNjUzVDIyNCA2MzhUMjIyIDYxOVEyMjIgNTkxIDIzNCA1ODVUMjg3IDU3OFEzMTUgNTc4IDMyNiA1ODBUMzQ1IDU5MFQzNTIgNjE4JyxcbiAgICAweEIxOiAnNjQgMzI4VDY0IDM0NlQ4NyAzNzdINDE2VjU0Mkw0MTcgNzA3UTQzMSA3MjggNDQzIDcyOFE0NjcgNzI4IDQ3NSA3MDlRNDc3IDcwNCA0NzcgNTQwVjM3N0g4MDdRODA4IDM3NiA4MTEgMzc0VDgxNyAzNzBUODIzIDM2NVQ4MjcgMzU4VDgyOSAzNDdRODI5IDMyNiA4MDcgMzE3TDY0MiAzMTZINDc3VjI1SDgwN1E4MDggMjQgODExIDIyVDgxNyAxOFQ4MjMgMTNUODI3IDZUODI5IC01UTgyOSAtMjYgODA3IC0zNUg4N1E2NCAtMjQgNjQgLTZUODcgMjVINDE2VjMxNkgyNTFMODcgMzE3UTY0IDMyOCA2NCAzNDYnLFxuICAgIDB4QjQ6ICczOTEgNzA2UTQxOSA3MDYgNDM5IDY4M1Q0NjAgNjM0UTQ2MCA2MDggNDQxIDU5M1QzNjYgNTUwUTM1NiA1NDUgMzUxIDU0M0wyNzUgNTAzTDI1NiA1MjdRMjM2IDU1MiAyMzcgNTUzUTI0MiA1NTggMjkyIDYyMFEyOTkgNjI5IDMwOSA2NDFUMzI0IDY1OVQzMzYgNjczVDM0NiA2ODVUMzU0IDY5M1QzNjMgNjk5VDM3MSA3MDNUMzgwIDcwNVQzOTEgNzA2JyxcbiAgICAweEI3OiAnNzQgMjUxUTc0IDI4NiA5OSAzMTFUMTU2IDMzNlEyMDAgMzM2IDIyMiAzMDhUMjQ1IDI1MFEyNDUgMjIxIDIyNCAxOTRUMTYwIDE2NlQ5NiAxOTNUNzQgMjUxJyxcbiAgICAweEQ3OiAnMTY4IDUwMFExNjggNTE1IDE3OCA1MjJUMTk1IDUzMEgxOThRMjA3IDUzMCAyMTggNTIxVDI4MiA0NThRMzEyIDQyOCAzMzEgNDA5TDQ0NyAyOTRMNTYzIDQwOVE2NzQgNTIwIDY4MiA1MjVRNjg3IDUyOSA2OTUgNTI5UTcxMSA1MjkgNzE4IDUyMFQ3MjYgNDk5VjQ5OFE3MjYgNDg5IDcyMCA0ODFUNjY2IDQyN1E2MzEgMzkyIDYwNiAzNjdMNDkwIDI1MUw2MDYgMTM1UTcxNyAyMyA3MjEgMTdUNzI2IDJRNzI2IC05IDcxOSAtMThUNjk1IC0yOEg2OTJRNjg1IC0yOCA2NzQgLTE4VDYwOCA0N1E1ODEgNzQgNTYzIDkyTDQ0NyAyMDdMMzMxIDkxUTIxNyAtMjIgMjA4IC0yN1EyMDYgLTI4IDIwMyAtMjhIMTk3UTE2OCAtMjggMTY4IDJRMTY4IDEzIDE3OCAyNFQyODggMTM1TDQwNCAyNTBMMjg4IDM2NlExNzcgNDc5IDE3MyA0ODVUMTY4IDUwMCcsXG4gICAgMHhGNzogJzM0NCA0OTVRMzQ0IDUzNSAzNzIgNTY2VDQ0NyA1OTdRNDkwIDU5NyA1MTkgNTY2VDU0OCA0OTVRNTQ4IDQ1MiA1MTggNDIzVDQ0NiAzOTNRNDA0IDM5MyAzNzQgNDIzVDM0NCA0OTVaTTg3IDIyMVE2NCAyMzAgNjQgMjUxVDg0IDI3OVE4OSAyODEgNDQ4IDI4MUg4MDZRODA3IDI4MCA4MTAgMjc4VDgxNiAyNzRUODIyIDI2OVQ4MjYgMjYyVDgyOCAyNTFRODI4IDIzMCA4MDYgMjIxSDg3Wk0zNDQgLTM2VDM0NCA2VDM3MyA3OFQ0NDYgMTA4UTQ4NyAxMDggNTE3IDc5VDU0OCA2UTU0OCAtMzUgNTE5IC02NVQ0NDYgLTk2UTQwNiAtOTYgMzc1IC02NicsXG4gICAgMHgxMzE6ICcyNDcgMFEyMzIgMyAxNDMgM1ExMzIgMyAxMDYgM1Q1NiAxTDM0IDBIMjZWNDZINDJRNzAgNDYgOTEgNDlRMTAwIDUzIDEwMiA2MFQxMDQgMTAyVjIwNVYyOTNRMTA0IDM0NSAxMDIgMzU5VDg4IDM3OFE3NCAzODUgNDEgMzg1SDMwVjQwOFEzMCA0MzEgMzIgNDMxTDQyIDQzMlE1MiA0MzMgNzAgNDM0VDEwNiA0MzZRMTIzIDQzNyAxNDIgNDM4VDE3MSA0NDFUMTgyIDQ0MkgxODVWNjJRMTkwIDUyIDE5NyA1MFQyMzIgNDZIMjU1VjBIMjQ3JyxcbiAgICAweDIzNzogJzI4IC0xNjNRNTggLTE2OCA2NCAtMTY4UTEyNCAtMTY4IDEzNSAtNzdRMTM3IC02NSAxMzcgMTQxVDEzNiAzNTNRMTMyIDM3MSAxMjAgMzc3VDcyIDM4NUg1MlY0MDhRNTIgNDMxIDU0IDQzMUw1OCA0MzJRNjIgNDMyIDcwIDQzMlQ4NyA0MzNUMTA4IDQzNFQxMzMgNDM2UTE1MSA0MzcgMTcxIDQzOFQyMDIgNDQxVDIxNCA0NDJIMjE4VjE4NFEyMTcgLTM2IDIxNyAtNTlUMjExIC05OFExOTUgLTE0NSAxNTMgLTE3NVQ1OCAtMjA1UTkgLTIwNSAtMjMgLTE3OVQtNTUgLTExN1EtNTUgLTk0IC00MCAtNzlULTIgLTY0VDM2IC03OVQ1MiAtMTE4UTUyIC0xNDMgMjggLTE2MycsXG4gICAgMHgyQjk6ICcyNDAgNTYzUTI3OCA1NjMgMzA0IDUzOVQzMzEgNDgwVjQ3M1EzMzEgNDYyIDMxNiA0MzFUMjE3IDIzNlExOTkgMjAwIDE3NCAxNTFUMTM2IDc4VDEyMyA1MFExMTMgMzMgMTA1IDMzUTEwMSAzMyA3MiA0NVQzOCA2MFEzNSA2MyAzNSA2NVEzNSA3NyAxMDEgMjkzVDE3MSA1MTdRMTgyIDU0MiAyMDIgNTUyVDI0MCA1NjMnLFxuICAgIDB4MkM2OiAnMjA3IDYzMkwyODcgNjk0UTI4OSA2OTMgMzY4IDYzMlQ0NDggNTcwVDQzMSA1NDVUNDEzIDUyMFE0MTAgNTIwIDM1MCA1NTlMMjg3IDU5N0wyMjQgNTU5UTE2NCA1MjAgMTYxIDUyMFExNjAgNTIwIDE0MyA1NDRUMTI2IDU3MFQyMDcgNjMyJyxcbiAgICAweDJDNzogJzEzMSA2MDNRMTMwIDYwNCAxMzYgNjE4VDE1MCA2NDZUMTU4IDY1OUwyMjMgNjM1TDI4NyA2MTFMMzUxIDYzNUw0MTYgNjU5UTQxNyA2NjAgNDI0IDY0N1Q0MzcgNjE5VDQ0MyA2MDNRNDQwIDYwMSAzNjQgNTU4VDI4NyA1MTVUMjEwIDU1OFQxMzEgNjAzJyxcbiAgICAweDJDOTogJzgwIDU0MFY2MDdINDk0VjU0MEg4MCcsXG4gICAgMHgyQ0E6ICczOTEgNzA2UTQxOSA3MDYgNDM5IDY4M1Q0NjAgNjM0UTQ2MCA2MDggNDQxIDU5M1QzNjYgNTUwUTM1NiA1NDUgMzUxIDU0M0wyNzUgNTAzTDI1NiA1MjdRMjM2IDU1MiAyMzcgNTUzUTI0MiA1NTggMjkyIDYyMFEyOTkgNjI5IDMwOSA2NDFUMzI0IDY1OVQzMzYgNjczVDM0NiA2ODVUMzU0IDY5M1QzNjMgNjk5VDM3MSA3MDNUMzgwIDcwNVQzOTEgNzA2JyxcbiAgICAweDJDQjogJzExNCA2MzRRMTE0IDY2MyAxMzYgNjg0VDE4MyA3MDZRMTkxIDcwNiAxOTYgNzA1VDIwOCA3MDBUMjE5IDY5M1QyMzIgNjgxVDI0NSA2NjZUMjYyIDY0NVQyODIgNjIwUTMzMiA1NTggMzM3IDU1M1EzMzggNTUyIDMxOCA1MjdMMjk5IDUwM0wyMjMgNTQzUTIxNSA1NDcgMjAyIDU1M1QxODMgNTYzVDE2NyA1NzFUMTUzIDU4MFQxNDEgNTg3VDEzMSA1OTVUMTI0IDYwM1QxMTggNjEyVDExNSA2MjJUMTE0IDYzNCcsXG4gICAgMHgyRDg6ICcyODcgNTAwUTIwOCA1MDAgMTU1IDU1OFQxMDIgNjg5VjY5NEgxNTNWNjg1UTE1MyA2ODEgMTU0IDY3NFQxNjQgNjQ4VDE4NiA2MTVUMjI2IDU5MFQyODcgNTc4UTM0NyA1NzggMzgyIDYxMVQ0MjEgNjg1VjY5NEg0NzJWNjg5UTQ3MiA2MjMgNDIyIDU2MlQyODcgNTAwJyxcbiAgICAweDJEOTogJzIwMiA2MTBRMjAyIDY0NyAyMjcgNjcxVDI4MyA2OTVRMzI0IDY5NSAzNDggNjY5VDM3MiA2MTBUMzUwIDU1MVQyODcgNTI1UTI0OCA1MjUgMjI1IDU1MVQyMDIgNjEwJyxcbiAgICAweDJEQTogJzE2MCA2MThRMTYwIDY1MyAxOTMgNjc3VDI3OSA3MDJIMjg0UTM4MSA3MDIgNDA3IDY0N1E0MTQgNjM0IDQxNCA2MThRNDE0IDYwNyA0MTAgNTk2VDM5NSA1NzBUMzU1IDU0NlQyODcgNTM2VDIyMCA1NDVUMTgxIDU2OFQxNjUgNTk0VDE2MCA2MThaTTM1MiA2MThRMzUyIDY0NSAzNDEgNjUyVDMwMSA2NTlIMjkyUTI4NiA2NTkgMjc4IDY1OVQyNjggNjYwUTI0NyA2NjAgMjM2IDY1M1QyMjQgNjM4VDIyMiA2MTlRMjIyIDU5MSAyMzQgNTg1VDI4NyA1NzhRMzE1IDU3OCAzMjYgNTgwVDM0NSA1OTBUMzUyIDYxOCcsXG4gICAgMHgyREM6ICczNDMgNTUyUTMyMCA1NTIgMjc4IDU3NVQyMTUgNTk5UTE4MSA1OTkgMTQ2IDU2NEwxMzQgNTUyTDExNSA1NjlRMTExIDU3MiAxMDYgNTc2VDk4IDU4NEw5NiA1ODZRMTU4IDY1NiAxNjUgNjYzUTE5OSA2OTQgMjMwIDY5NFEyMzkgNjk0IDI0NCA2OTNRMjYyIDY4OSAzMDAgNjY4VDM1OSA2NDdRMzkzIDY0NyA0MjggNjgyTDQ0MCA2OTRMNDU5IDY3N1E0NjMgNjc0IDQ2OCA2NzBUNDc2IDY2Mkw0NzggNjYwUTQxNiA1OTAgNDA5IDU4M1EzNzUgNTUyIDM0MyA1NTInLFxuICAgIDB4MzAwOiAnLTQ2MSA2MzRRLTQ2MSA2NjMgLTQzOSA2ODRULTM5MiA3MDZRLTM4NCA3MDYgLTM3OSA3MDVULTM2NyA3MDBULTM1NiA2OTNULTM0MyA2ODFULTMzMCA2NjZULTMxMyA2NDVULTI5MyA2MjBRLTI0MyA1NTggLTIzOCA1NTNRLTIzNyA1NTIgLTI1NyA1MjdMLTI3NiA1MDNMLTM1MiA1NDNRLTM2MCA1NDcgLTM3MyA1NTNULTM5MiA1NjNULTQwOCA1NzFULTQyMiA1ODBULTQzNCA1ODdULTQ0NCA1OTVULTQ1MSA2MDNULTQ1NyA2MTJULTQ2MCA2MjJULTQ2MSA2MzQnLFxuICAgIDB4MzAxOiAnLTE4NCA3MDZRLTE1NiA3MDYgLTEzNiA2ODNULTExNSA2MzRRLTExNSA2MDggLTEzNCA1OTNULTIwOSA1NTBRLTIxOSA1NDUgLTIyNCA1NDNMLTMwMCA1MDNMLTMxOSA1MjdRLTMzOSA1NTIgLTMzOCA1NTNRLTMzMyA1NTggLTI4MyA2MjBRLTI3NiA2MjkgLTI2NiA2NDFULTI1MSA2NTlULTIzOSA2NzNULTIyOSA2ODVULTIyMSA2OTNULTIxMiA2OTlULTIwNCA3MDNULTE5NSA3MDVULTE4NCA3MDYnLFxuICAgIDB4MzAyOiAnLTM2OCA2MzJMLTI4OCA2OTRRLTI4NiA2OTMgLTIwNyA2MzJULTEyNyA1NzBULTE0NCA1NDVULTE2MiA1MjBRLTE2NSA1MjAgLTIyNSA1NTlMLTI4OCA1OTdMLTM1MSA1NTlRLTQxMSA1MjAgLTQxNCA1MjBRLTQxNSA1MjAgLTQzMiA1NDRULTQ0OSA1NzBULTM2OCA2MzInLFxuICAgIDB4MzAzOiAnLTIzMiA1NTJRLTI1NSA1NTIgLTI5NyA1NzVULTM2MCA1OTlRLTM5NCA1OTkgLTQyOSA1NjRMLTQ0MSA1NTJMLTQ2MCA1NjlRLTQ2NCA1NzIgLTQ2OSA1NzZULTQ3NiA1ODRMLTQ3OSA1ODZRLTQxNyA2NTYgLTQxMCA2NjNRLTM3NiA2OTQgLTM0NSA2OTRRLTMzNiA2OTQgLTMzMSA2OTNRLTMxMyA2ODkgLTI3NSA2NjhULTIxNiA2NDdRLTE4MiA2NDcgLTE0NyA2ODJMLTEzNSA2OTRMLTExNiA2NzdRLTExMiA2NzQgLTEwNyA2NzBULTEwMCA2NjJMLTk3IDY2MFEtMTU5IDU5MCAtMTY2IDU4M1EtMjAwIDU1MiAtMjMyIDU1MicsXG4gICAgMHgzMDQ6ICctNDk1IDU0MFY2MDdILTgxVjU0MEgtNDk1JyxcbiAgICAweDMwNjogJy0yODggNTAwUS0zNjcgNTAwIC00MjAgNTU4VC00NzMgNjg5VjY5NEgtNDIyVjY4NVEtNDIyIDY4MSAtNDIxIDY3NFQtNDExIDY0OFQtMzg5IDYxNVQtMzQ5IDU5MFQtMjg4IDU3OFEtMjI4IDU3OCAtMTkzIDYxMVQtMTU0IDY4NVY2OTRILTEwM1Y2ODlRLTEwMyA2MjMgLTE1MyA1NjJULTI4OCA1MDAnLFxuICAgIDB4MzA3OiAnLTM3MyA2MTBRLTM3MyA2NDcgLTM0OCA2NzFULTI5MiA2OTVRLTI1MSA2OTUgLTIyNyA2NjlULTIwMyA2MTBULTIyNSA1NTFULTI4OCA1MjVRLTMyNyA1MjUgLTM1MCA1NTFULTM3MyA2MTAnLFxuICAgIDB4MzA4OiAnLTQ3OSA2MTVRLTQ3OSA2NTAgLTQ1NiA2NzJULTM5NyA2OTVRLTM2MSA2OTMgLTM0MSA2NjlULTMyMCA2MTVRLTMyMCA1ODMgLTM0MyA1NTlULTM5OSA1MzVRLTQyOCA1MzUgLTQ1MyA1NTZULTQ3OSA2MTVaTS0yNTYgNjE1US0yNTYgNjUxIC0yMzIgNjczVC0xNzYgNjk1US0xNDkgNjk1IC0xMjMgNjc1VC05NyA2MTVRLTk3IDU3OCAtMTIxIDU1N1QtMTgwIDUzNVEtMjExIDUzNyAtMjMzIDU1OVQtMjU2IDYxNScsXG4gICAgMHgzMEE6ICctNDE1IDYxOFEtNDE1IDY1MyAtMzgyIDY3N1QtMjk2IDcwMkgtMjkxUS0xOTQgNzAyIC0xNjggNjQ3US0xNjEgNjM0IC0xNjEgNjE4US0xNjEgNjA3IC0xNjUgNTk2VC0xODAgNTcwVC0yMjAgNTQ2VC0yODggNTM2VC0zNTUgNTQ1VC0zOTQgNTY4VC00MTAgNTk0VC00MTUgNjE4Wk0tMjIzIDYxOFEtMjIzIDY0NSAtMjM0IDY1MlQtMjc0IDY1OUgtMjgzUS0yODkgNjU5IC0yOTcgNjU5VC0zMDcgNjYwUS0zMjggNjYwIC0zMzkgNjUzVC0zNTEgNjM4VC0zNTMgNjE5US0zNTMgNTkxIC0zNDEgNTg1VC0yODggNTc4US0yNjAgNTc4IC0yNDkgNTgwVC0yMzAgNTkwVC0yMjMgNjE4JyxcbiAgICAweDMwQjogJy0zODkgNTExTC00NDIgNTQzUS00NDIgNTQ0IC00MjQgNjA2VC00MDQgNjc0US0zOTAgNzA1IC0zNjEgNzEzUS0zNjAgNzEzIC0zNTYgNzEzVC0zNDkgNzE0US0zNDAgNzE0IC0zMzAgNzEyUS0yNzMgNjkwIC0yNzMgNjQ0US0yNzMgNjIxIC0yOTAgNjA0TC0zNDIgNTU0TC0zODkgNTExWk0tMTk4IDUxMUwtMjUxIDU0M1EtMjUxIDU0NCAtMjMzIDYwNlQtMjEzIDY3NFEtMTk5IDcwNSAtMTcwIDcxM1EtMTY5IDcxMyAtMTY1IDcxM1QtMTU4IDcxNFEtMTI3IDcxNCAtMTA1IDY5M1QtODIgNjQ3US04MiA2MzggLTg0IDYzMVQtODkgNjE4VC05OSA2MDRULTExMiA1OTBULTEzMCA1NzRULTE1MSA1NTRMLTE5OCA1MTEnLFxuICAgIDB4MzBDOiAnLTQ0NCA2MDNRLTQ0NSA2MDQgLTQzOSA2MThULTQyNSA2NDZULTQxNyA2NTlMLTM1MiA2MzVMLTI4OCA2MTFMLTIyNCA2MzVMLTE1OSA2NTlRLTE1OCA2NjAgLTE1MSA2NDdULTEzOCA2MTlULTEzMiA2MDNRLTEzNSA2MDEgLTIxMSA1NThULTI4OCA1MTVULTM2NSA1NThULTQ0NCA2MDMnLFxuICAgIDB4MzM4OiAnLTcwNSAtMjEwUS03MTUgLTIxMCAtNzI0IC0yMDNULTczNCAtMTc5US03MzQgLTE3MSAtNzMyIC0xNjZRLTczMCAtMTYzIC00NzQgMjY2VC0yMTUgNjk4US0yMDggNzExIC0xOTAgNzExUS0xODAgNzExIC0xNzEgNzA0VC0xNjEgNjgxUS0xNjEgNjcyIC0xNjQgNjY3US0xNzEgNjU0IC00MjUgMjI4VC02ODMgLTIwMVEtNjkyIC0yMTAgLTcwNSAtMjEwJyxcbiAgICAweDIwMDI6ICcnLFxuICAgIDB4MjAwMzogJycsXG4gICAgMHgyMDA0OiAnJyxcbiAgICAweDIwMDU6ICcnLFxuICAgIDB4MjAwNjogJycsXG4gICAgMHgyMDA5OiAnJyxcbiAgICAweDIwMEE6ICcnLFxuICAgIDB4MjAxMzogJzAgMjQ5VjMwMEg1NzRWMjQ5SDAnLFxuICAgIDB4MjAxNDogJzAgMjQ5VjMwMEgxMTQ5VjI0OUgwJyxcbiAgICAweDIwMTU6ICcwIDI0OVYzMDBIMTE0OVYyNDlIMCcsXG4gICAgMHgyMDE2OiAnMjA1IC0yMjVRMjAxIC0yMzQgMTk5IC0yMzdUMTkxIC0yNDRUMTc1IC0yNDhUMTYxIC0yNDZRMTUxIC0yNDAgMTQ2IC0yMjlRMTQ1IC0yMjQgMTQ1IDI1MVExNDUgNzI1IDE0NiA3MzBRMTU2IDc1MCAxNzYgNzUwUTE5MyA3NDggMjA1IDcyN1YtMjI1Wk0zNjkgNzI3TDM3MiA3MzJRMzc1IDczNyAzNzcgNzQwVDM4NSA3NDdUMzk4IDc1MFE0MDYgNzUwIDQxMyA3NDdRNDIzIDc0MCA0MjggNzMwUTQzMCA3MjAgNDMwIDI1MVE0MzAgLTIxOSA0MjggLTIyOVE0MjMgLTI0MCA0MTMgLTI0NlE0MDggLTI0OCA0MDAgLTI0OFEzOTMgLTI0OCAzODggLTI0N1QzNzkgLTI0MlQzNzUgLTIzNlQzNzEgLTIzMEwzNjkgLTIyNVY3MjcnLFxuICAgIDB4MjAxNzogJzAgLTYxVi0xMEg1NzRWLTYxSDAnLFxuICAgIDB4MjAxODogJzU4IDQ2MVE1OCA1MDMgNzAgNTQyVDk5IDYwN1QxMzQgNjU0VDE2NSA2ODRUMTg0IDY5NFQyMDEgNjgzVDIxMyA2NjRRMjEzIDY1OCAyMDIgNjQ4VDE3NSA2MjRUMTQzIDU4M1QxMTYgNTE4UTExNSA1MTIgMTE0IDUwNVQxMTIgNDkzTDExMSA0ODhRMTMyIDUwMCAxNjEgNTAwUTE5OCA1MDAgMjIxIDQ3NVQyNDUgNDE0VDIyMiAzNTRUMTYxIDMyOVExMTIgMzI5IDg1IDM2OVQ1OCA0NjEnLFxuICAgIDB4MjAxOTogJzc0IDU3MlQ3NCA2MDhUOTcgNjY5VDE1NyA2OTRRMjAzIDY5NCAyMzIgNjU3VDI2MSA1NTlRMjYxIDUyMCAyNTAgNDgyVDIyMiA0MThUMTg3IDM3MFQxNTUgMzM5VDEzNSAzMjlRMTI4IDMyOSAxMTcgMzQwVDEwNiAzNTlRMTA2IDM2NSAxMTcgMzc1VDE0NCAzOTlUMTc2IDQ0MFQyMDMgNTA1UTIwNCA1MTEgMjA1IDUxOFQyMDggNTMwVjUzNUwyMDIgNTMyUTE5NiA1MzAgMTg0IDUyN1QxNTggNTIzUTEyMSA1MjMgOTggNTQ3JyxcbiAgICAweDIwMUM6ICcxMTAgNDYxUTExMCA1MDIgMTIxIDU0MVQxNTAgNjA2VDE4NSA2NTNUMjE3IDY4NFQyMzUgNjk0UTI0MiA2OTQgMjU0IDY4MlQyNjYgNjY0UTI2NiA2NTkgMjU0IDY0OFQyMjYgNjIzVDE5MyA1NzhUMTY3IDUxMVExNjQgNTAwIDE2NCA0OTRUMTY0IDQ4N1ExODggNTAwIDIxMiA1MDBRMjUxIDUwMCAyNzQgNDc1VDI5NyA0MTRRMjk3IDM3OCAyNzQgMzU0VDIxMiAzMjlRMTY3IDMyOSAxMzkgMzY3VDExMCA0NjFaTTM3NyA0NjFRMzc3IDUwMiAzODggNTQxVDQxNyA2MDZUNDUyIDY1M1Q0ODQgNjg0VDUwMiA2OTRRNTA5IDY5NCA1MjEgNjgyVDUzMyA2NjRRNTMzIDY1OSA1MjEgNjQ4VDQ5MyA2MjNUNDYwIDU3OFQ0MzQgNTExUTQzMSA1MDAgNDMxIDQ5NFQ0MzEgNDg3UTQ1NSA1MDAgNDc5IDUwMFE1MTggNTAwIDU0MSA0NzVUNTY0IDQxNFE1NjQgMzc4IDU0MSAzNTRUNDc5IDMyOVE0MzQgMzI5IDQwNiAzNjdUMzc3IDQ2MScsXG4gICAgMHgyMDFEOiAnMzggNTcyVDM4IDYwOFQ2MSA2NjlUMTIxIDY5NFExNjcgNjk0IDE5NiA2NTdUMjI1IDU1OVEyMjUgNTIwIDIxNCA0ODJUMTg2IDQxOFQxNTEgMzcwVDExOSAzMzlUOTkgMzI5VDgyIDM0MFQ3MCAzNjBRNzAgMzY1IDc0IDM2OVQ5MiAzODVUMTIyIDQxNFExNDIgNDQxIDE1NCA0NzFUMTcwIDUxOEwxNzIgNTM1TDE2NiA1MzJRMTYwIDUzMCAxNDggNTI3VDEyMiA1MjNRODUgNTIzIDYyIDU0N1pNMzA1IDU3MlQzMDUgNjA4VDMyOCA2NjlUMzg4IDY5NFE0MzQgNjk0IDQ2MyA2NTdUNDkyIDU1OVE0OTIgNTIwIDQ4MSA0ODJUNDUzIDQxOFQ0MTggMzcwVDM4NiAzMzlUMzY2IDMyOVQzNDkgMzQwVDMzNyAzNjBRMzM3IDM2NSAzNDEgMzY5VDM1OSAzODVUMzg5IDQxNFE0MDkgNDQxIDQyMSA0NzFUNDM2IDUxOEw0MzkgNTM1TDQzMyA1MzJRNDI3IDUzMCA0MTUgNTI3VDM4OSA1MjNRMzUyIDUyMyAzMjkgNTQ3JyxcbiAgICAweDIwMjA6ICcyMzEgNDcwUTIzMiA0NzEgMjMyIDQ3M1EyMzIgNDc3IDIxMyA1NDBUMTkzIDYzNlExOTIgNjQyIDE5MiA2NTFUMjA0IDY3N1QyMzkgNzAwUTI0OSA3MDIgMjU1IDcwMlEzMDAgNzAyIDMxNSA2NjBRMzE3IDY1MyAzMTcgNjM2UTMxNyA2MDMgMjk4IDUzOVQyNzkgNDcyVjQ3MFEyODAgNDcwIDMxOCA0ODhUMzgzIDUwNlE0MDggNTA2IDQyMyA0OTNUNDQyIDQ2N1Q0NDYgNDQ0VDQ0MyA0MjFUNDI0IDM5NlQzODMgMzgyUTM1NSAzODIgMzE4IDQwMFQyNzkgNDE4UTI3OCA0MTYgMjg1IDM5MlQzMDMgMzM0VDMxNiAyODRRMzE4IDI2OCAzMTggMjM0UTMxOCAxNDkgMzExIDQ1VDI5NiAtMTI3VDI4NCAtMjAzUTI3OSAtMjExIDI1NSAtMjExUTIzNyAtMjExIDIzMyAtMjEwVDIyNiAtMjAzUTIyMiAtMTk1IDIxNCAtMTI5VDE5OSA0MVQxOTIgMjM0VjI0NVExOTIgMjg2IDIxMiAzNDlRMjMzIDQxMyAyMzEgNDE4UTIyOSA0MTggMTkyIDQwMFQxMjggMzgyUTEwMiAzODIgODYgMzk2VDY3IDQyMVQ2NCA0NDRUNjcgNDY2VDg2IDQ5MlQxMjggNTA2UTE1NSA1MDYgMTkyIDQ4OFQyMzEgNDcwJyxcbiAgICAweDIwMjE6ICcxOTMgNjM3UTE5MyA2NjMgMjA2IDY3OVQyMzEgNjk4VDI1NSA3MDJUMjc5IDY5OVQzMDQgNjc5VDMxNyA2MzdRMzE3IDYwNSAyOTkgNTU3VDI4MCA1MDRRMjgwIDUwMyAyODEgNTAzVDMyMCA1MjFUMzgyIDUzOVE0MTAgNTM5IDQyOCA1MjFUNDQ2IDQ3NlE0NDYgNDU0IDQzMiA0MzRUMzgzIDQxNEgzNzdRMzU4IDQxNCAzMjAgNDMxVDI4MSA0NDlMMjgwIDQ0OFEyODAgNDQ0IDI5OCAzOTZUMzE3IDMxNlEzMTggMzEwIDMxOCAzMDFUMzA2IDI3NVQyNzEgMjUyUTI2MSAyNTAgMjU1IDI1MFEyMTAgMjUwIDE5NSAyOTJRMTkzIDI5OSAxOTMgMzE2UTE5MyAzNDcgMjExIDM5NVQyMzAgNDQ4UTIzMCA0NDkgMjI5IDQ0OVEyMjcgNDQ5IDE5NiA0MzRRMTUxIDQxNCAxMzMgNDE0SDEyN1ExMDIgNDE0IDg3IDQyN1Q2OCA0NTJUNjQgNDc3UTY0IDUwMyA4MSA1MjFUMTI3IDUzOVExNDMgNTM5IDE2NCA1MzJUMjA0IDUxNVQyMjYgNTA0UTIzMCA1MDIgMjMwIDUwNFEyMzAgNTA4IDIxMiA1NTZUMTkzIDYzN1pNMTkzIDE4NFExOTMgMjEwIDIwNiAyMjZUMjMxIDI0NVQyNTUgMjQ5VDI3OSAyNDZUMzA0IDIyNlQzMTcgMTg0UTMxNyAxNTMgMjk5IDEwNlQyODAgNTNRMjgwIDUxIDI4MiA1MVQzMjIgNjhUMzgzIDg2UTQxMSA4NiA0MjggNjlUNDQ1IDI0VDQyOCAtMjFUMzgyIC0zOVEzNTggLTM5IDMyMiAtMjJUMjgyIC00UTI4MCAtMyAyODAgLTNUMjgwIC02UTI4MSAtMTMgMjk5IC01OVQzMTcgLTEzNlEzMTggLTE0MiAzMTggLTE1MVQzMDYgLTE3N1QyNzEgLTIwMFEyNjEgLTIwMiAyNTUgLTIwMlEyMTAgLTIwMiAxOTUgLTE2MFExOTMgLTE1MyAxOTMgLTEzNlExOTMgLTEwNiAyMTEgLTYwVDIzMCAtNlEyMzAgLTQgMjI4IC00VDE4OCAtMjFUMTI4IC0zOVExMDAgLTM5IDgzIC0yMlQ2NSAyNFE2NSA1MyA4MiA2OVQxMjcgODZRMTUwIDg2IDE4NyA2OVQyMjggNTFRMjMwIDUwIDIzMCA1MFQyMzAgNTNRMjI5IDU4IDIxMSAxMDVUMTkzIDE4NCcsXG4gICAgMHgyMDIyOiAnNjQgMjUxUTY0IDMwMyA4MCAzNDRUMTIxIDQwOVQxNzUgNDQ4VDIzMCA0NjlUMjc1IDQ3NFEyNzcgNDc0IDI4MyA0NzRUMjkyIDQ3M1EzODUgNDczIDQ0NyA0MTVUNTEwIDI1MVE1MTAgMTQ5IDQ0OSA4OVQyODcgMjhUMTI2IDg4VDY0IDI1MScsXG4gICAgMHgyMDI2OiAnNzQgODVRNzQgMTIxIDk5IDE0NlQxNTYgMTcxUTIwMCAxNzEgMjIyIDE0M1QyNDUgODVRMjQ1IDU2IDIyNCAyOVQxNjAgMVExMTggMSA5NiAyN1Q3NCA4NVpNNTYyIDg1UTU2MiAxMjEgNTg3IDE0NlQ2NDQgMTcxUTY4OCAxNzEgNzEwIDE0M1Q3MzMgODVRNzMzIDU2IDcxMiAyOVQ2NDggMVE2MDYgMSA1ODQgMjdUNTYyIDg1Wk0xMDUwIDg1UTEwNTAgMTIxIDEwNzUgMTQ2VDExMzIgMTcxUTExNzYgMTcxIDExOTggMTQzVDEyMjEgODVRMTIyMSA1NiAxMjAwIDI5VDExMzYgMVExMDk0IDEgMTA3MiAyN1QxMDUwIDg1JyxcbiAgICAweDIwMzI6ICcyNDAgNTYzUTI3OCA1NjMgMzA0IDUzOVQzMzEgNDgwVjQ3M1EzMzEgNDYyIDMxNiA0MzFUMjE3IDIzNlExOTkgMjAwIDE3NCAxNTFUMTM2IDc4VDEyMyA1MFExMTMgMzMgMTA1IDMzUTEwMSAzMyA3MiA0NVQzOCA2MFEzNSA2MyAzNSA2NVEzNSA3NyAxMDEgMjkzVDE3MSA1MTdRMTgyIDU0MiAyMDIgNTUyVDI0MCA1NjMnLFxuICAgIDB4MjAzRTogJzgwIDU0MFY2MDdINDk0VjU0MEg4MCcsXG4gICAgMHgyMDQ0OiAnNDUxIDczMFE0NjAgNzUwIDQ3OSA3NTBRNDkyIDc1MCA1MDEgNzQwVDUxMCA3MThRNTA4IDcwOCAzMTggMjQ0TDEyMiAtMjMyUTExMiAtMjUwIDk1IC0yNTBRODIgLTI1MCA3MyAtMjQxVDY0IC0yMThRNjYgLTIwNSAyNTggMjYxVDQ1MSA3MzAnLFxuICAgIDB4MjBENzogJzQwNiA2OTRRNDA2IDcwNCA0MTMgNzEzVDQzMyA3MjNRNDQ4IDcyMyA0NTQgNzE5VDQ2NyA3MDFRNDgzIDY2NSA1MjIgNjQ4UTU0MiA2MzcgNTQyIDYxOVE1NDIgNjA1IDUzNiA1OTlUNTE0IDU4NlE0NjggNTY5IDQzMSA1MzJRNDExIDUxMyAzOTkgNTEzUTM4NiA1MTMgMzc4IDUyMlQzNjkgNTQzUTM2OSA1NTcgMzgxIDU2OFEzODUgNTcyIDM4NyA1NzRMNDAwIDU4OEgyMjhMNTYgNTg5UTMzIDU5OCAzMyA2MThRMzMgNjM2IDU2IDY0OUg0MjZRNDA2IDY3NiA0MDYgNjk0JyxcbiAgICAweDIxMEY6ICc0NzcgNTZRNDc3IDQ4IDQ3OSA0NlQ0OTAgNDNRNTIyIDQ1IDU0NCA3NVQ1NzcgMTQwUTU4MiAxNTYgNTg1IDE1OVQ2MDUgMTYySDYxMUg2MjJRNjQyIDE2MiA2NDIgMTQ4UTY0MiAxMzggNjMyIDExNFQ2MDIgNjJUNTUwIDEzVDQ3OCAtOFE0MjkgLTggMzk0IDE3VDM1OCA4M1EzNTggOTUgMzk1IDE5OVQ0MzMgMzUwUTQzMyA0MDAgMzk0IDQwMEgzODhIMzgzUTMzNSA0MDAgMjkxIDM2M1EyNTYgMzMyIDIzNiAyOThRMjMzIDI5MyAyMDIgMTcwVDE2OSA0MFExNjAgMTggMTQxIDVUOTkgLThRNzAgLTggNTggOVQ0NSAzOVE0NSA1MSAxMTYgMzM2TDE2NyA1NDBIODBWNjA3SDE4NEwxODggNjIySDE4NFExODMgNjIyIDE3OSA2MjJUMTY5IDYyM1QxNTcgNjI0VDE0NiA2MjRUMTM2IDYyNFQxMzEgNjI1UTExOSA2MjggMTE5IDY0MlExMTkgNjQ3IDEyMyA2NjFUMTI5IDY3OVExMzMgNjg0IDE0MiA2ODVUMjIwIDY5MFEyOTMgNjk0IDMwNyA2OTRRMzI0IDY5NCAzMjggNjc5UTMyOCA2NzMgMzExIDYwN0g0OTRWNTQwSDI5NFEyODYgNTA3IDI3OCA0NzNUMjY0IDQyMEwyNjAgNDAzUTI2MCA0MDAgMjY5IDQwOFEzMjcgNDUxIDM5MyA0NTFINDAxSDQxMFE0MjUgNDUxIDQzOSA0NTBUNDc2IDQ0MlQ1MTUgNDI0VDU0NCAzOTFUNTU2IDMzN1E1NTYgMjg2IDUxNyAxNzlUNDc3IDU2JyxcbiAgICAweDIxMTM6ICcyNDUgLTE5UTIyOCAtMTkgMjEyIC0xNlQxODQgLTZUMTYyIDlUMTQzIDI3VDEyOSA0NlQxMTggNjZUMTExIDg0VDEwNiA5OVQxMDIgMTExTDEwMSAxMTZMNjkgODlMMzYgNjJRMzEgNjAgMjQgNjJRLTEgODggLTEgOThRLTEgMTAxIDEgMTA1UTEgMTA2IDczIDE3MEw5NSAxODlWMTk3UTk1IDI0MiAxMTIgMzE3VDE1OSA0NzZUMjQxIDYyNFQzNTMgNzAxUTM1NyA3MDIgMzY3IDcwMlE0MjggNzAyIDQ0NCA2NDFRNDQ2IDYzMCA0NDYgNjA2UTQ0NiA0NTQgMjQxIDI0NkwyMTUgMjIwTDIxMiAyMDNRMjAzIDE1MCAyMDMgMTE0UTIwMyAxMTMgMjAzIDEwNlQyMDQgOTVUMjA1IDgyVDIwOSA2N1QyMTQgNTRUMjIzIDQzVDIzNiAzNVQyNTMgMzJRMjc3IDMyIDMwNSA0NFQzNTIgNzBUMzg5IDk4VDQwNyAxMTJRNDA5IDExMyA0MTIgMTEzUTQyMCAxMTMgNDMyIDk1UTQ0NSA3NyA0NDMgNzBRNDQwIDY0IDQxNiA0NFQzNDIgM1QyNDUgLTE5Wk0zODcgNjE1UTM4NyA2NTEgMzY2IDY1MVEzNDIgNjUxIDMyMSA2MDRUMjc2IDQ3MEwyNDEgMzMxUTI0NiAzMzEgMjgwIDM3M1QzNTAgNDg2VDM4NyA2MTUnLFxuICAgIDB4MjExODogJzM5OSAxNTlRNDEwIDE1OSA0MjEgMTUxVDQzMyAxMjZRNDMzIDEwNCA0MTAgODVRNDA4IDg0IDQxMCA3OFE0MTEgNzIgNDE0IDY2VDQyOCA1MVQ0NTUgNDNRNDgzIDQzIDUwNiA1NVQ1NDMgODNUNTY4IDEyNVQ1ODQgMTY2VDU5NCAyMDZRNTk1IDIxMSA1OTYgMjE0UTYxMCAyNzMgNjEwIDMwMVE2MTAgMzY1IDU0MiAzNjVINTM4UTQ4MyAzNjUgNDI5IDM0NFQzMzcgMjkyVDI2OSAyMjlUMjI1IDE3NVQyMTAgMTUwTDI1NSA5OVEyNjEgOTIgMjc0IDc4VDI5MiA1OFQzMDUgNDFUMzE2IDIyVDMyMSAzVDMyNCAtMjNRMzI0IC04NyAyODMgLTE0OFQxNzQgLTIxMEgxNzFRMTYxIC0yMTAgMTUyIC0yMDlUMTI4IC0yMDFUMTAxIC0xODBUODEgLTE0MVQ3MiAtNzhRNzIgLTcyIDcyIC02MFQ3MyAtNDVRNzkgNCAxMDIgNjVMMTA4IDgxUTg0IDExNyA4NCAxNjdRODQgMjczIDE0MCAzNjdUMjY5IDQ2MVEyODUgNDYxIDI4NSA0NDdRMjg1IDQ0MCAyODIgNDMxUTI3OCA0MTggMjc2IDQxNVQyNjQgNDEwUTIyOCA0MDQgMjAxIDMzNlQxNzQgMjE5UTE3NCAyMTggMTc2IDIwMkwxODQgMjE0UTI1MiAzMDMgMzQ4IDM2MFQ1NDkgNDE3UTYxNCA0MTcgNjU4IDM5MVQ3MTkgMzE3UTcyNiAyOTIgNzI2IDI2MFE3MjYgMTQ4IDY0NiA3MFQ0NTEgLThRNDA3IC04IDM3NyAxN1QzNDYgOTJRMzQ2IDE1OSAzOTYgMTU5SDM5OVpNMTc4IC0xNjBRMjAwIC0xNjAgMjE2IC0xMzJUMjMyIC03NVEyMzIgLTYzIDIyOCAtNTZUMjAzIC0yNlExOTYgLTE4IDE5MiAtMTRRMTg1IC01IDE3NiA1VDE2MSAyMFQxNTYgMjdMMTUzIDI4UTE1MSAyOCAxNDYgOFQxMzcgLTQyVDEzMiAtODlRMTMyIC0xNjAgMTc4IC0xNjAnLFxuICAgIDB4MjEzNTogJzU5MCA0MjdRNTgxIDQyNyA1NzkgNDMzVDU3NSA0NTBUNTY4IDQ3MFY0NjhMNTMyIDI4OEw1NDEgMjgxUTYyMCAyMjAgNjM0IDE2NUw2MzcgMTU0VjEyNFE2MzcgNzQgNjI4IDQ2UTYyMyAzMiA2MTIgMTZUNTkyIDBRNTgwIDAgNTc4IDE5VDU2OSA2OVQ1MzggMTIxUTUzMiAxMjYgMzg1IDI0MFQyMzYgMzU1UTIzNCAzNTUgMjMxIDMzOFQyMjUgMjkxVDIyMiAyMzdRMjIyIDIyMiAyMjMgMjEzVDIyNSAyMDFUMjI4IDE5NVQyMzEgMTkwUTIzOCAxNzkgMjYxIDE2MFQzMDAgMTE5VDMxNiA3M1EzMTYgNDEgMjkxIDIzVDIzMSAxUTIyNiAwIDE0OSAwSDk4UTczIDAgNjkgM1Q2NCAyNFE2NCA0MyA2NyA0N1Q4NSA1MUg4OVExMTkgNTEgMTM0IDU1VDE1MiA2NFQxNTQgNzZRMTU0IDk1IDEyNSAxNDFUOTYgMjIwUTk2IDI0MyAxMDQgMjcwVDEyMyAzMTlUMTQ1IDM2MFQxNjQgMzkxVDE3MiA0MDRUMTUwIDQyMVQxMDIgNDY4VDY4IDUyOUw2NSA1NDFWNTcwUTY1IDYyMCA3NCA2NDhRNzkgNjY0IDkxIDY3OVQxMTEgNjk0UTEyMiA2OTQgMTIzIDY3NVQxMzIgNjI1VDE2NCA1NzNRMTY4IDU2OSAzMTkgNDUyVDQ3MSAzMzVRNDcxIDMzNyA0ODYgNDA5VDUwMiA0ODhRNTAyIDQ4OSA0OTEgNDkzVDQ2NyA1MTFUNDQ4IDU0NlY1NzNRNDQ4IDYwMiA0NTIgNjI0VDQ2MiA2NTlUNDc0IDY4MFQ0ODYgNjkxVDQ5MyA2OTRRNDk5IDY5NCA1MDIgNjkxVDUwNyA2ODJUNTEzIDY3M1E1MTcgNjY3IDUzNCA2NTFUNTU3IDYzMFE1NTggNjI5IDU5MCA2MTZUNjMxIDU4N1E2MzggNTc3IDYzOCA1NDNRNjM3IDQ4OSA2MjIgNDU4VDU5MCA0MjcnLFxuICAgIDB4MjE5MDogJzEwNjMgMjgxUTEwODQgMjY4IDEwODQgMjUxUTEwODQgMjMxIDEwNjMgMjIxTDY0OSAyMjBIMjM1UTM0MCAxMzMgMzY0IDE3UTM2OCAxIDM2OCAtMlEzNjggLTE2IDM0MyAtMTdRMzQwIC0xNyAzMzggLTE3SDMzMlEzMTcgLTE3IDMxNCAtMTRUMzA1IDZRMjk4IDM0IDI4NSA2MlQyNDcgMTI2VDE3OSAxODlUNzggMjMzUTY0IDIzNyA2NCAyNTFRNjQgMjYxIDc0IDI2NVQxMDggMjc3VDE1NCAyOTdRMjEyIDMyOCAyNTEgMzc5VDMwNSA0OTVRMzA5IDUxMSAzMTMgNTE0VDMzMyA1MThIMzM4UTM2MyA1MTcgMzY3IDUxMFEzNjggNTA3IDM2OCA1MDNRMzY4IDUwMCAzNjQgNDg0UTM0NSA0MDEgMjg3IDMzMVEyNTQgMjk1IDIzNSAyODJMNjQ5IDI4MUgxMDYzJyxcbiAgICAweDIxOTE6ICczMyAzOTZRMTQgMzk2IDE0IDQyM1ExNCA0NDUgMTggNDQ5VDQxIDQ1OVE3MiA0NjYgOTkgNDc4VDE0NyA1MDVUMTg1IDUzN1QyMTUgNTcxVDIzOCA2MDRUMjU0IDYzNVQyNjQgNjYxVDI3MCA2NzhMMjcyIDY4NVEyNzYgNjk0IDI4OCA2OTRRMjk4IDY5MiAzMDAgNjg5VDMwNyA2NzJRMzMxIDU5MiAzOTIgNTM1VDUzNSA0NTlRNTUzIDQ1NCA1NTcgNDUwVDU2MSA0MjNRNTYxIDM5NiA1NDIgMzk2UTUzMSAzOTYgNTAxIDQwNVQ0MTggNDQzVDMyOSA1MTdMMzE5IDUyOUwzMTggMTc5Vi0xNzFRMzA3IC0xOTMgMjg4IC0xOTNRMjY1IC0xOTMgMjU4IC0xNzFMMjU3IDE3OVY1MjlMMjQ3IDUxN1EyMDkgNDczIDE1OCA0NDRUNzYgNDA1VDMzIDM5NicsXG4gICAgMHgyMTkyOiAnNjUgMjUxUTY1IDI3MCA4NyAyODFINTAwTDkxNCAyODJRODgxIDMwNCA4NDIgMzU3VDc4NSA0ODJRNzgxIDUwMCA3ODEgNTAxUTc4MSA1MTIgNzkyIDUxN1E3OTQgNTE4IDgxMiA1MThIODE3UTgzMiA1MTggODM1IDUxNVQ4NDQgNDk1UTg2NCA0MTIgOTIzIDM1MVQxMDY1IDI3MFExMDg1IDI2MyAxMDg1IDI1MVExMDg1IDI0MCAxMDc3IDIzNlQxMDQ0IDIyNVQ5OTUgMjA0UTkzNyAxNzMgODk4IDEyMlQ4NDQgNlE4NDAgLTEwIDgzNiAtMTNUODE2IC0xN0g4MTFRNzg2IC0xNiA3ODIgLTlRNzgxIC02IDc4MSAtMlE3ODEgMSA3ODUgMTdRODEzIDEzOCA5MTQgMjIwSDUwMEw4NyAyMjFRNjUgMjI4IDY1IDI1MScsXG4gICAgMHgyMTkzOiAnMTQgNzdRMTQgMTA0IDMzIDEwNFE0NCAxMDQgNzQgOTZUMTU2IDU3VDI0NyAtMTdMMjU3IC0yOVYzMjFRMjU3IDY2OSAyNTkgNjc1UTI2OCA2OTQgMjg5IDY5NFEyOTUgNjkzIDMwMCA2OTFUMzA3IDY4NlQzMTMgNjc5VDMxOCA2NzJWMzIxTDMxOSAtMjlMMzI5IC0xN1EzNjYgMjYgNDE3IDU1VDQ5OSA5NFQ1NDIgMTA0UTU2MSAxMDQgNTYxIDc3UTU2MSA1NiA1NTcgNTFUNTM1IDQxUTQ4MSAyOCA0MzggMFQzNzAgLTU4VDMzMCAtMTE5VDMwOCAtMTY3VDMwMiAtMTg3UTI5NyAtMTk0IDI4OCAtMTk0UTI3OCAtMTk0IDI3MyAtMTg2VDI2NSAtMTY1VDI1MSAtMTI3VDIyMCAtNzdRMTUxIDE1IDQxIDQxUTIyIDQ2IDE4IDUwVDE0IDc3JyxcbiAgICAweDIxOTQ6ICczMDUgNDk1UTMwOSA1MTEgMzEzIDUxNFQzMzMgNTE4SDMzOFEzNjMgNTE3IDM2NyA1MTBRMzY4IDUwNyAzNjggNTAzUTM2OCA1MDAgMzY0IDQ4NFEzNDUgNDAxIDI4NyAzMzFRMjU0IDI5NSAyMzUgMjgyTDQwNCAyODFINzQ0TDkxNCAyODJRODgwIDMwNSA4MzkgMzYyVDc4NSA0ODRRNzgxIDUwMCA3ODEgNTAzUTc4MSA1MTcgODA2IDUxOFE4MDkgNTE4IDgxMSA1MThIODE3UTgzMiA1MTggODM1IDUxNVQ4NDQgNDk1UTg2NCA0MTIgOTIzIDM1MVQxMDY1IDI3MFExMDg1IDI2MyAxMDg1IDI1MVExMDg1IDI0MCAxMDc3IDIzNlQxMDQ0IDIyNVQ5OTUgMjA0UTkzNyAxNzMgODk4IDEyMlQ4NDQgNlE4NDAgLTEwIDgzNiAtMTNUODE2IC0xN0g4MTFRNzg2IC0xNiA3ODIgLTlRNzgxIC02IDc4MSAtMlE3ODEgMSA3ODUgMTdRODEzIDEzOCA5MTQgMjIwSDIzNVEzNDAgMTMzIDM2NCAxN1EzNjggMSAzNjggLTJRMzY4IC0xNiAzNDMgLTE3UTM0MCAtMTcgMzM4IC0xN0gzMzJRMzE3IC0xNyAzMTQgLTE0VDMwNSA2UTI5OCAzNCAyODUgNjJUMjQ3IDEyNlQxNzkgMTg5VDc4IDIzM1E2NCAyMzcgNjQgMjUxUTY0IDI2MSA3NCAyNjVUMTA4IDI3N1QxNTQgMjk3UTIxMiAzMjggMjUxIDM3OVQzMDUgNDk1JyxcbiAgICAweDIxOTU6ICczMyA0NjlRMTQgNDY5IDE0IDQ5NlExNCA1MTggMTggNTIyVDQxIDUzMlExMjEgNTUxIDE4MiA2MDhUMjY4IDc0NVEyNzUgNzY3IDI4OCA3NjdRMjk5IDc2NyAzMDMgNzU1VDMyMCA3MTNUMzU1IDY1MFE0MjQgNTU4IDUzNSA1MzJRNTUzIDUyNyA1NTcgNTIzVDU2MSA0OTZRNTYxIDQ2OSA1NDIgNDY5UTUzMSA0NjkgNTAxIDQ3OFQ0MTggNTE2VDMyOSA1OTBMMzE5IDYwMkwzMTggNDI2Vjc0TDMxOSAtMTAyTDMyOSAtOTBRMzY2IC00NyA0MTcgLTE4VDQ5OSAyMVQ1NDIgMzFRNTYxIDMxIDU2MSA0UTU2MSAtMTcgNTU3IC0yMlQ1MzUgLTMyUTQ1NCAtNTEgMzkzIC0xMDhUMzA3IC0yNDVRMzAwIC0yNjcgMjg4IC0yNjdRMjc5IC0yNjcgMjc0IC0yNTlUMjY2IC0yMzhUMjUwIC0yMDBUMjIwIC0xNTBRMTUxIC01OCA0MSAtMzJRMjIgLTI3IDE4IC0yM1QxNCA0UTE0IDMxIDMzIDMxUTQ0IDMxIDc0IDIzVDE1NiAtMTZUMjQ3IC05MEwyNTcgLTEwMlY2MDJMMjQ3IDU5MFEyMDkgNTQ2IDE1OCA1MTdUNzYgNDc4VDMzIDQ2OScsXG4gICAgMHgyMTk2OiAnNDI5IDcyNFE0MzggNzI0IDQ1MiA3MTFUNDY2IDY5MFE0NjYgNjgxIDQ1MiA2NzFRMzYxIDYwMiAyNDIgNTk5SDIxOEw3NTYgMTM1UTgzMiA2OSA5MTMgLTFUMTAzNiAtMTA4TDEwNzcgLTE0M1ExMDg0IC0xNTEgMTA4NCAtMTYzUTEwODQgLTE4MCAxMDc0IC0xODdUMTA1NCAtMTk0SDEwNTJRMTA0MyAtMTk0IDkzOSAtMTA1UTg2NiAtNDIgODEyIDVRMTgwIDU0OSAxNzggNTQ5VjU0NlExNzkgNTQyIDE3OSA1MzlRMTgzIDUyMCAxODMgNDgzUTE4MyA0MzUgMTcyIDM5MFQxNDkgMzIzVDEzMCAyOTZRMTIxIDI5MiAxMTUgMjk1UTg1IDMxMiA4NSAzMjhRODUgMzMxIDk1IDM1MFQxMTUgNDA2VDEyNSA0ODZRMTI1IDU0MCAxMTAgNTgzVDc5IDY0OFQ2NCA2NzVRNjQgNjgxIDY4IDY4N1Q4MSA2OTNRODcgNjkzIDk0IDY5MFExNjIgNjU3IDIzMiA2NTdRMjk2IDY1NyAzNDkgNjgxVDQyMCA3MjJRNDIyIDcyNCA0MjkgNzI0JyxcbiAgICAweDIxOTc6ICcxMDY5IDY5M1ExMDc2IDY5MyAxMDgwIDY4N1QxMDg1IDY3NVExMDg1IDY3MSAxMDc2IDY1NlQxMDU1IDYyMVQxMDM0IDU2NVQxMDI0IDQ4NlExMDI0IDQ0MiAxMDM0IDQwNlQxMDU0IDM1MVQxMDY0IDMyOFExMDY0IDMyMSAxMDU3IDMxM1QxMDQyIDMwMEwxMDM0IDI5NVExMDMwIDI5MyAxMDI3IDI5M1ExMDIzIDI5MyAxMDIwIDI5NVQxMDE0IDMwMVQxMDA5IDMwOFQxMDA1IDMxNlQxMDAxIDMyNFE5ODAgMzY4IDk3MSA0MTlROTY2IDQ0MiA5NjYgNDg0VjQ5MlE5NjYgNTI4IDk3MiA1NTNROTcxIDU1MyA3NTcgMzY4VDMyOCAtM1QxMDcgLTE5MVExMDMgLTE5MyA5NCAtMTkzUTc4IC0xOTMgNzEgLTE4NFQ2NCAtMTY0UTY0IC0xNTMgNzIgLTE0M1E3OSAtMTM2IDM4MiAxMjRMOTM0IDU5OUg5MDlRODM3IDU5OSA3NjAgNjM0VDY4MyA2OTBRNjgzIDY5NyA2OTYgNzEwVDcyMiA3MjRRNzI2IDcyNCA3NDIgNzE0VDc3OSA2OTFUODM4IDY2OFQ5MjAgNjU3UTk1OSA2NTcgOTkxIDY2NlQxMDQzIDY4NFQxMDY5IDY5MycsXG4gICAgMHgyMTk4OiAnNjUgNjYzUTY1IDY4MCA3NCA2ODdUOTMgNjk0SDk2UTEwNCA2OTQgMTE4IDY4M1QyMDQgNjEwUTI4MCA1NDUgMzM4IDQ5NVE5NjkgLTQ5IDk3MSAtNDlMOTcwIC00NlE5NzAgLTQyIDk3MCAtMzlROTY2IC0yMCA5NjYgMThROTY2IDY1IDk3NyAxMTBUMTAwMSAxNzdUMTAxOSAyMDRRMTAyOCAyMDggMTAzNCAyMDVRMTA2NCAxODggMTA2NCAxNzJRMTA2NCAxNjkgMTA1NCAxNTBUMTAzNCA5NFQxMDI0IDE0UTEwMjQgLTI4IDEwMzMgLTY0VDEwNTQgLTEyMFQxMDc1IC0xNTVUMTA4NSAtMTc1UTEwODUgLTE4MSAxMDgxIC0xODdUMTA2OCAtMTkzUTEwNjIgLTE5MyAxMDU1IC0xOTBROTg3IC0xNTcgOTE5IC0xNTdRODE3IC0xNTcgNzM5IC0yMTVRNzI3IC0yMjQgNzIwIC0yMjRRNzEyIC0yMjQgNjk3IC0yMTBRNjgzIC0xOTkgNjgzIC0xOTBUNjk3IC0xNzFRNzg4IC0xMDIgOTA3IC05OUg5MzFMMzkzIDM2NVEzMTcgNDMxIDIzNiA1MDFUMTE0IDYwOEw3MiA2NDNRNjUgNjUxIDY1IDY2MycsXG4gICAgMHgyMTk5OiAnODAgLTE5M1E3MyAtMTkzIDY5IC0xODdUNjQgLTE3NVE2NCAtMTcyIDc5IC0xNTBUMTA5IC04NFQxMjUgMTRRMTI1IDU4IDExNSA5NFQ5NSAxNDlUODUgMTcyUTg1IDE3OSA5MiAxODdUMTA4IDIwMEwxMTUgMjA1UTExOSAyMDcgMTIyIDIwN1ExMjYgMjA3IDEyOSAyMDVUMTM1IDE5OVQxNDAgMTkyVDE0NCAxODRUMTQ4IDE3NlExNjkgMTMyIDE3OCA4MVExODMgNTggMTgzIDE3UTE4MyAtNyAxODIgLTI0VDE3OCAtNDhMMTc3IC01M1ExNzggLTUzIDM4OSAxMjlUODE2IDQ5OFQxMDQzIDY5MlExMDQ5IDY5NCAxMDU0IDY5NFExMDcwIDY5NCAxMDc3IDY4NFQxMDg1IDY2NFExMDg1IDY1MyAxMDc3IDY0M1ExMDcwIDYzNiA3NjcgMzc2TDIxNSAtOThMMjQwIC05OVEzMTIgLTk5IDM4OSAtMTM0VDQ2NiAtMTkwUTQ2NiAtMTk3IDQ1MiAtMjEwVDQyOSAtMjI0UTQyMiAtMjI0IDQxMSAtMjE1UTMzMCAtMTU3IDIyOSAtMTU3UTE5MCAtMTU3IDE1OCAtMTY2VDEwNiAtMTg0VDgwIC0xOTMnLFxuICAgIDB4MjFBNjogJzY1IDQyNlE3NCA0NDggOTUgNDQ4UTExMiA0NDggMTI1IDQyNlYyODFINTAwTDkxNCAyODJRODgxIDMwNCA4NDIgMzU3VDc4NSA0ODJRNzgxIDUwMCA3ODEgNTAxUTc4MSA1MTIgNzkyIDUxN1E3OTQgNTE4IDgxMiA1MThIODE3UTgzMiA1MTggODM1IDUxNVQ4NDQgNDk1UTg2NCA0MTIgOTIzIDM1MVQxMDY1IDI3MFExMDg1IDI2MyAxMDg1IDI1MVExMDg1IDI0MCAxMDc3IDIzNlQxMDQ0IDIyNVQ5OTUgMjA0UTkzNyAxNzMgODk4IDEyMlQ4NDQgNlE4NDAgLTEwIDgzNiAtMTNUODE2IC0xN0g4MTFRNzg2IC0xNiA3ODIgLTlRNzgxIC02IDc4MSAtMlE3ODEgMSA3ODUgMTdRODEzIDEzOCA5MTQgMjIwSDUwMEwxMzUgMjIxUTEzNCAyMjEgMTMzIDIyMVQxMzAgMjIwSDEyNVY3NlExMTUgNTQgOTUgNTRRNzMgNTQgNjUgNzZWNDI2JyxcbiAgICAweDIxQTk6ICcxMDI5IDQ3NVExMDI5IDUwNSAxMDY4IDUwNVExMTI5IDUwMSAxMTczIDQ2M1QxMjE4IDM2M1ExMjE4IDI5NiAxMTcwIDI1OVQxMDY2IDIyMUgxMDYzTDY0OSAyMjBIMjM1UTM0MCAxMzMgMzY0IDE3UTM2OCAxIDM2OCAtMlEzNjggLTE2IDM0MyAtMTdRMzQwIC0xNyAzMzggLTE3SDMzMlEzMTcgLTE3IDMxNCAtMTRUMzA1IDZRMjk4IDM0IDI4NSA2MlQyNDcgMTI2VDE3OSAxODlUNzggMjMzUTY0IDIzNyA2NCAyNTFRNjQgMjYxIDc0IDI2NVQxMDggMjc3VDE1NCAyOTdRMjEyIDMyOCAyNTEgMzc5VDMwNSA0OTVRMzA5IDUxMSAzMTMgNTE0VDMzMyA1MThIMzM4UTM2MyA1MTcgMzY3IDUxMFEzNjggNTA3IDM2OCA1MDNRMzY4IDUwMCAzNjQgNDg0UTM0NSA0MDEgMjg3IDMzMVEyNTQgMjk1IDIzNSAyODJMNjQ5IDI4MUgxMDYzUTExMDUgMjg0IDExMzEgMzA1VDExNTggMzYxUTExNTggMzg1IDExNDYgNDAxUTExMjIgNDQxIDEwNjMgNDQ0UTEwMjkgNDQ2IDEwMjkgNDc1JyxcbiAgICAweDIxQUE6ICcyMjUgMjIxSDIxOFExNTkgMjIxIDExMiAyNjBUNjUgMzYzUTY1IDQzMSAxMTYgNDY4VDIyMSA1MDVRMjU0IDUwMyAyNTQgNDc0UTI1NCA0NTYgMjQ1IDQ1MFQyMTYgNDQzVDE4OCA0MzhRMTUyIDQyNyAxMzcgNDAxUTEyNSAzODUgMTI1IDM2MlExMjUgMzM0IDE0NyAzMTBRMTcxIDI4OCAyMjEgMjgxSDYzMkwxMDQ2IDI4MlExMDEzIDMwNCA5NzQgMzU3VDkxNyA0ODJROTEzIDUwMCA5MTMgNTAxUTkxMyA1MTIgOTI0IDUxN1E5MjYgNTE4IDk0NCA1MThIOTQ5UTk2NCA1MTggOTY3IDUxNVQ5NzYgNDk1UTk5NiA0MTIgMTA1NSAzNTFUMTE5NyAyNzBRMTIxNyAyNjMgMTIxNyAyNTFRMTIxNyAyNDAgMTIwOSAyMzZUMTE3NiAyMjVUMTEyNyAyMDRRMTA2OSAxNzMgMTAzMCAxMjJUOTc2IDZROTcyIC0xMCA5NjggLTEzVDk0OCAtMTdIOTQzUTkxOCAtMTYgOTE0IC05UTkxMyAtNiA5MTMgLTJROTEzIDEgOTE3IDE3UTk0NSAxMzggMTA0NiAyMjBINjMyTDIyNSAyMjEnLFxuICAgIDB4MjFCQzogJzEwNjMgMjgxUTEwODQgMjY4IDEwODQgMjUxUTEwODQgMjMxIDEwNjMgMjIxTDU3MiAyMjBRNzkgMjIwIDc3IDIyMVE2NCAyMjUgNjQgMjQ0UTY0IDI1MCA2NCAyNTRUNjcgMjYxVDcxIDI2NVQ3OCAyNjhUODUgMjcyUTE0MiAzMDIgMTg5IDM0NVQyNTggNDIxVDI5NiA0ODRUMzE1IDUxNlEzMTkgNTE4IDMzNyA1MThRMzU4IDUxOCAzNjMgNTEyUTM3MCA1MDQgMzY3IDQ5NlEzNjAgNDY5IDMxOSA0MDRUMjE5IDI5MEwyMDkgMjgyTDYzNiAyODFIMTA2MycsXG4gICAgMHgyMUJEOiAnMTA2MyAyODFRMTA4NCAyNjggMTA4NCAyNTFRMTA4NCAyMzEgMTA2MyAyMjFMNjM2IDIyMEgyMDlMMjE5IDIxMlEyNzggMTYyIDMxOSA5N1QzNjcgNVEzNzAgLTMgMzYzIC0xMVEzNTggLTE3IDMzNyAtMTdIMzMyUTMxOCAtMTcgMzE0IC0xNFQzMDIgN1EyNzggNTUgMjQ2IDk1VDE4NSAxNjBUMTMwIDIwMlQ4OCAyMjhMNzAgMjM3UTY0IDI0MyA2NCAyNTdRNjQgMjc0IDc1IDI3OVE3OCAyODEgNTcxIDI4MUgxMDYzJyxcbiAgICAweDIxQzA6ICc2NSAyNTFRNjUgMjcwIDg3IDI4MUg1MTNMOTQwIDI4Mkw5MzAgMjkwUTg3MSAzMzggODMwIDQwM1Q3ODIgNDk2UTc3OSA1MTAgNzkxIDUxN1E3OTQgNTE4IDgxMiA1MThIODE3UTgzMSA1MTggODM1IDUxNVQ4NDcgNDk0UTg3MSA0NDUgOTAzIDQwNFQ5NjYgMzM4VDEwMjIgMjk4VDEwNjQgMjcyVDEwODMgMjU5UTEwODUgMjU1IDEwODUgMjQ1UTEwODUgMjI1IDEwNzIgMjIxUTEwNzAgMjIwIDU3OCAyMjBMODcgMjIxUTY1IDIyOCA2NSAyNTEnLFxuICAgIDB4MjFDMTogJzg0IDI3OVE4OSAyODEgNTgwIDI4MVExMDcwIDI4MSAxMDc0IDI3OVExMDg1IDI3NSAxMDg1IDI1NlExMDg1IDI0NSAxMDgzIDI0MVQxMDY2IDIzMFE5MTkgMTUzIDg0NyA3UTgzOSAtMTEgODM1IC0xNFQ4MTcgLTE3SDgxMlE3OTEgLTE3IDc4NiAtMTFRNzc5IC0zIDc4MiA1UTc4OSAzMSA4MzAgOTZUOTMwIDIxMkw5NDAgMjIwSDUxM0w4NyAyMjFRNjQgMjI5IDY0IDI1MFE2NCAyNzIgODQgMjc5JyxcbiAgICAweDIxQ0M6ICc2NSA0NTFRNjUgNDcwIDg3IDQ4MUg1MTNMOTQwIDQ4Mkw5MzAgNDkwUTg3MSA1MzggODMwIDYwM1Q3ODIgNjk2UTc3OSA3MTAgNzkxIDcxN1E3OTQgNzE4IDgxMiA3MThIODE3UTgzMSA3MTggODM1IDcxNVQ4NDcgNjk0UTg3MSA2NDUgOTAzIDYwNFQ5NjYgNTM4VDEwMjIgNDk4VDEwNjQgNDcyVDEwODMgNDU5UTEwODUgNDU1IDEwODUgNDQ1UTEwODUgNDI1IDEwNzIgNDIxUTEwNzAgNDIwIDU3OCA0MjBMODcgNDIxUTY1IDQyOCA2NSA0NTFaTTEwNjMgMjgxUTEwODQgMjY4IDEwODQgMjUxUTEwODQgMjMxIDEwNjMgMjIxTDYzNiAyMjBIMjA5TDIxOSAyMTJRMjc4IDE2MiAzMTkgOTdUMzY3IDVRMzcwIC0zIDM2MyAtMTFRMzU4IC0xNyAzMzcgLTE3SDMzMlEzMTggLTE3IDMxNCAtMTRUMzAyIDdRMjc4IDU1IDI0NiA5NVQxODUgMTYwVDEzMCAyMDJUODggMjI4TDcwIDIzN1E2NCAyNDMgNjQgMjU3UTY0IDI3NCA3NSAyNzlRNzggMjgxIDU3MSAyODFIMTA2MycsXG4gICAgMHgyMUQwOiAnMTA2MyAxNjlMMTA2OCAxNjZRMTA3MiAxNjMgMTA3NCAxNjJUMTA3OSAxNTdUMTA4MyAxNDlUMTA4NSAxMzlRMTA4NSAxMTggMTA2MyAxMDlMNzMzIDEwOEg0MDRMNDEyIDk5UTQ1NSA1MCA0ODggLTEwUTQ5OCAtMjcgNDkzIC0zN1E0ODcgLTQ2IDQ2NSAtNDZINDYwUTQ0NiAtNDYgNDM5IC0zOVQ0MjYgLTE4VDM5OSAyNVQzNDQgODlRMjM5IDE5NCA5OSAyMjlROTYgMjMwIDkyIDIzMVQ4NSAyMzJUNzkgMjM0VDczIDIzNVQ2OSAyMzdUNjYgMjQwVDY1IDI0NFQ2NCAyNTBRNjQgMjY3IDkwIDI3MVExOTcgMjk1IDI4NiAzNjFUNDMwIDUyNVE0MzkgNTQyIDQ0MiA1NDRUNDYwIDU0N0g0NjVRNDg3IDU0NyA0OTIgNTM5UTQ5NiA1MzEgNDk2IDUzMFE0OTYgNTIxIDQ3MSA0ODJUNDE0IDQwNUw0MDQgMzk0TDczMyAzOTNIMTA2M1ExMDY0IDM5MiAxMDY5IDM4OVQxMDc2IDM4NFQxMDgyIDM3NVQxMDg1IDM2MlExMDg1IDM0NCAxMDYzIDMzM0w3MDAgMzMySDMzOEwzMjQgMzIxUTI4MyAyOTAgMjMwIDI2NEwyMDUgMjUwUTI2NiAyMjQgMzIzIDE4MEwzMzggMTcwTDcwMCAxNjlIMTA2MycsXG4gICAgMHgyMUQxOiAnNjcyIDM0M1E2NzIgMzI2IDY3MCAzMjBUNjU3IDMxM1E2NDQgMzEzIDYwMiAzMzVRNTc3IDM0OSA1NTcgMzYxVDUyNyAzODFUNTA5IDM5NVQ0OTkgNDAzVDQ5NSA0MDZUNDk0IDExOFE0OTQgLTE2NiA0OTIgLTE3NFE0ODQgLTE5MyA0NjUgLTE5M0g0NjNRNDU2IC0xOTMgNDUzIC0xOTJUNDQ0IC0xODZUNDMzIC0xNzBWNDY1TDQyMyA0NzdRNDA3IDQ5NSAzOTQgNTE0VDM2NyA1NTRUMzUxIDU3OVEzNDkgNTc2IDMzOSA1NjBUMzEzIDUyMFQyNzkgNDc3TDI2OSA0NjVWLTIyVi0xMDJRMjY5IC0xMzIgMjY5IC0xNDVUMjY4IC0xNjlUMjY2IC0xODBUMjYwIC0xODVUMjUzIC0xOTFRMjQ4IC0xOTMgMjM5IC0xOTNIMjM3UTIxOCAtMTkzIDIxMCAtMTc0UTIwOCAtMTY2IDIwOCAxMThRMjA4IDQwNiAyMDcgNDA2TDE5OSAzOTlRMTkxIDM5MiAxNjUgMzc0VDEwMCAzMzVRNTggMzEzIDQ1IDMxM1EzNSAzMTMgMzMgMzE5VDMwIDM0M1YzNDlRMzAgMzU5IDMwIDM2MlQzNSAzNjlUNDUgMzc0VDY2IDM4M1QxMDAgNDAxUTI2NyA0OTkgMzMzIDY4MFEzMzkgNjk0IDM1MSA2OTRRMzYxIDY5NCAzNjUgNjg3VDM4MCA2NTJUNDA3IDU5N1E0NDIgNTM2IDQ4OSA0ODlUNTczIDQyMFQ2MzggMzgzVDY3MCAzNjVRNjcyIDM2MSA2NzIgMzQzJyxcbiAgICAweDIxRDI6ICc2NCAzNjJRNjQgMzgwIDg3IDM5M0g0MTZMNzQ1IDM5NEw3MzUgNDA1UTcwOCA0MzYgNjgxIDQ3N1Q2NTQgNTMxUTY1NCA1NDcgNjc5IDU0N0g2ODRINjg5UTcwMyA1NDcgNzEwIDU0MFQ3MjMgNTE5VDc1MCA0NzVUODA2IDQxMVE5MTQgMzAzIDEwNTkgMjcxUTEwNjAgMjcxIDEwNjMgMjcwVDEwNjggMjY5VDEwNzIgMjY4VDEwNzYgMjY2VDEwNzkgMjY0VDEwODIgMjYwVDEwODMgMjU2VDEwODQgMjUwUTEwODQgMjQyIDEwODAgMjM4VDEwNjMgMjMxVDEwMzUgMjI1VDk5MiAyMTFUOTM0IDE4NVE3OTcgMTEyIDcxOSAtMjRRNzEwIC00MCA3MDYgLTQzVDY4OSAtNDZINjg0UTY1MyAtNDYgNjUzIC0zMVE2NTMgLTI0IDY2MSAtMTBRNjk0IDUwIDczNyA5OUw3NDUgMTA4SDQxNkw4NyAxMDlRNjQgMTE3IDY0IDEzOVE2NCAxNTYgODcgMTY5SDQ0OUw4MTIgMTcwTDgyNiAxODBRODQyIDE5MyA4NjAgMjA0VDg5MiAyMjNUOTE4IDIzN1Q5MzcgMjQ2TDk0NCAyNTBMOTE5IDI2NFE4NjYgMjkwIDgyNSAzMjFMODExIDMzMkg0NDlMODcgMzMzUTY0IDM0MyA2NCAzNjInLFxuICAgIDB4MjFEMzogJzMwIDE1N1EzMCAxNzQgMzIgMTgwVDQ2IDE4N1E1OSAxODcgMTA0IDE2M1ExNTQgMTM2IDE5OCAxMDFMMjA3IDk0UTIwOCA5NCAyMDggMzgyUTIwOCA2NjYgMjEwIDY3NFEyMTkgNjk0IDI0MSA2OTRRMjU0IDY5MiAyNjIgNjgzUTI2NiA2NzkgMjY3IDY3NFEyNjkgNjU4IDI2OSA1MjJWMzVMMjc5IDIzUTI5NSA1IDMwOCAtMTRUMzM1IC01NFQzNTEgLTc5UTM1MyAtNzYgMzYzIC02MFQzODkgLTIwVDQyMyAyM0w0MzMgMzVWNjcxUTQzOSA2ODIgNDQ0IDY4NlQ0NTIgNjkyVDQ2MyA2OTNINDY1UTQ4NCA2OTMgNDkyIDY3NFE0OTQgNjY2IDQ5NCAzODJRNDk0IDk0IDQ5NSA5NEw1MDQgMTAxUTU0NyAxMzUgNTkzIDE2MFQ2NTIgMTg3UTY2NSAxOTEgNjcxIDE3N1E2NzIgMTc1IDY3MiAxNTdRNjcyIDEzNyA2NjkgMTM0VDYzNiAxMTZRNjA2IDEwMSA1NzggODNUNTI4IDQ3VDQ4NiA5VDQ1MiAtMzBUNDI0IC02OFQ0MDMgLTEwM1QzODcgLTEzNFQzNzcgLTE1OVQzNzAgLTE3NkwzNjcgLTE4NFEzNjAgLTE5NCAzNTEgLTE5NFEzNDUgLTE5NCAzNDIgLTE5MlQzMzQgLTE4MlQzMjcgLTE2NlQzMTUgLTEzN1QyOTUgLTk3UTI2MCAtMzYgMjEzIDExVDEyOSA4MFQ2MyAxMTdUMzIgMTM2UTMwIDEzOSAzMCAxNTcnLFxuICAgIDB4MjFENDogJzMzNiA0OTdRMzU4IDU0MSAzNjMgNTQ0UTM2NyA1NDcgMzc5IDU0N0gzODRRNDAxIDU0NyA0MDUgNTQ1UTQxOCA1MzggNDE0IDUyNVQzODkgNDc0VDM0NiA0MDhMMzM1IDM5M0g4MTRMODAzIDQwOFE3ODEgNDM2IDc2MCA0NzRUNzM1IDUyNVQ3NDQgNTQ1UTc0OCA1NDcgNzY1IDU0N1E3NzEgNTQ3IDc3NCA1NDdUNzgwIDU0NlQ3ODYgNTQ0VDc5MCA1NDFUNzk0IDUzNVQ3OTkgNTI3VDgwNSA1MTRUODEzIDQ5N1E4NDEgNDQ2IDg3NyA0MDZUOTUwIDM0MFQxMDE0IDMwMVQxMDY4IDI3NkwxMDk2IDI2NVExMTAyIDI1OSAxMTAyIDI1MVExMTAyIDI0MCAxMDg1IDIzMlE5ODEgMTk1IDkwMiAxMjFRODM1IDU2IDc5OCAtMjVRNzkxIC00MCA3ODcgLTQzVDc2NSAtNDZUNzQ0IC00NFE3MzUgLTQwIDczNSAtMzBRNzM1IC0xNSA3NjAgMjhUODA2IDk4TDgxNCAxMDhIMzM1TDM0MyA5OFEzNjEgNzUgMzc4IDQ2VDQwNCAtMVQ0MTQgLTI0UTQxOCAtMzcgNDA1IC00NFE0MDEgLTQ2IDM4NCAtNDZUMzYzIC00M1QzNTEgLTI1UTMxNCA1NiAyNDcgMTIxUTIxNiAxNTAgMTgyIDE3M1QxMjUgMjA2VDc5IDIyNlQ1MyAyMzdRNDcgMjQzIDQ3IDI1MVE0NyAyNTQgNDcgMjU2VDQ5IDI2MVQ1MiAyNjRUNTcgMjY3VDYxIDI2OFQ2NiAyNzBUNzEgMjcyUTI0NiAzMzUgMzM2IDQ5N1pNOTg1IDI1MVE5MzIgMjgwIDg4MiAzMjNMODcxIDMzMkgyNzhRMjY0IDMyMSAyNTMgMzExVDIzNyAyOTdUMjE0IDI4MlQxNjQgMjUxTDE3NiAyNDRRMjIxIDIxOCAyNzggMTY5SDg3MVE5MjggMjE4IDk3MyAyNDRMOTg1IDI1MScsXG4gICAgMHgyMUQ1OiAnNDkgNDQxUTMwIDQ0MSAzMCA0NjRWNDcxVjQ4MFEzMCA0OTggNDQgNTAyUTIzNyA1NzMgMzMxIDc1MFEzMzcgNzY3IDM1MSA3NjdRMzYwIDc2NyAzNjggNzUzVDQwMCA3MDJUNDYwIDYyOVE1MDQgNTg0IDU1MiA1NTRUNjMyIDUxMVQ2NjYgNDk3UTY3MiA0OTMgNjcyIDQ3MVE2NzIgNDU0IDY3MCA0NDlRNjY0IDQ0MSA2NTMgNDQxUTYzOSA0NDMgNTkxIDQ2NVQ1MDggNTEzTDQ5NSA1MjJMNDk0IDM4NlYxMTRMNDk1IC0yMkw1MDggLTEzUTU0MyAxMiA1OTEgMzRUNjUzIDU5UTY3MiA1OSA2NzIgMzZWMjlWMjBRNjcyIDIgNjU4IC0yUTQ2NSAtNzEgMzY3IC0yNTdRMzYwIC0yNjcgMzUxIC0yNjdRMzQzIC0yNjcgMzM2IC0yNTdUMzIwIC0yMzFUMjkyIC0xODdUMjQyIC0xMjlRMTk4IC04NCAxNTAgLTU0VDcwIC0xMVQzNiAzUTMwIDcgMzAgMjlRMzAgNDYgMzIgNTFRMzggNTkgNDkgNTlRNjMgNTcgMTExIDM1VDE5NCAtMTNMMjA4IC0yMlY1MjJMMTk0IDUxM1ExNTkgNDg4IDExMSA0NjZUNDkgNDQxWk00MjIgNTg0UTQxMSA1OTQgNDAwIDYwNlQzODMgNjI2VDM2NiA2NDhUMzUxIDY2N1EzNDkgNjY1IDMzOSA2NTJUMzE0IDYyMFQyODAgNTg0TDI2OSA1NzNWLTczTDI4MCAtODRRMzA1IC0xMDggMzUxIC0xNjZRMzUzIC0xNjQgMzYzIC0xNTFUMzg5IC0xMTlUNDIyIC04NEw0MzMgLTczVjU3M0w0MjIgNTg0JyxcbiAgICAweDIyMDA6ICcxIDY2NFEtMiA2ODUgMjMgNjkzSDI3UTQ2IDY5MyA1NCA2ODBUMTAyIDU3OEwxNDggNDc1SDQ5Mkw1MzMgNTcwUTU0MSA1ODYgNTQ4IDYwM1Q1NjAgNjMwVDU2OSA2NTBUNTc2IDY2N1Q1ODIgNjc4VDU4OCA2ODZUNTk0IDY5MVQ2MDAgNjkzVDYwOSA2OTRRNjIyIDY5NCA2MzEgNjg0VDYzOSA2NjJRNjM3IDY1MyA0OTIgMzI1VDM0MSAtOFEzMzMgLTE2IDMyMCAtMTZRMzA2IC0xNiAyOTggLThRMjk0IC00IDE0NyAzMjZMMSA2NTZWNjY0Wk00NjQgNDE0SDMxOVExNzUgNDE0IDE3NSA0MTNMMzE5IDg4TDQ2NCA0MTQnLFxuICAgIDB4MjIwMzogJzgxIDM0N1E4MSAzNTkgODQgMzYzVDEwNCAzNzhINTEzVjYzM0gzMDBMODcgNjM0UTY0IDY0MiA2NCA2NjRRNjQgNjg1IDg0IDY5MlE4OSA2OTQgMzIxIDY5NEg1NTJRNTcxIDY4MSA1NzQgNjY5VjI1UTU2NyA3IDU1MiAxSDg3UTY0IDEyIDY0IDMwVDg3IDYxSDUxM1YzMTdIMzA4UTEwMyAzMTcgOTkgMzE5UTgxIDMyOCA4MSAzNDcnLFxuICAgIDB4MjIwNTogJzI4NSA3MTFRMzA3IDcxMSAzMjYgNzA4VDM1NyA3MDFUMzcwIDY5OFEzNzEgNjk4IDM3NSA3MTBUMzgzIDczNVQzODkgNzUwUTM5NSA3NjcgNDE1IDc2N1E0MzEgNzY3IDQzOCA3NTdUNDQ2IDczOFQ0MzYgNzAxVDQyNiA2NzBRNDI2IDY2OCA0MzMgNjY0UTQ2OCA2MzMgNDg5IDU4OFE1MTEgNTQyIDUxOSA0ODhUNTI4IDM0NFE1MjggMjg2IDUyNCAyNDNUNTA4IDE1MFQ0NjYgNjNUMzk0IDZRMzQ1IC0xNyAyODcgLTE3UTI2NSAtMTcgMjQ2IC0xNFQyMTYgLTdUMjAzIC00UTE5MSAtNDcgMTgzIC02MFQxNTkgLTczUTE0NiAtNzMgMTM3IC02M1QxMjggLTQ0UTEyOCAtMzggMTM4IC03TDE0OCAyNEwxNDEgMzBRMTM0IDM1IDEyMCA0OVE5NCA3NyA3OCAxMTNUNTYgMTk0VDQ4IDI2OFQ0NiAzNDRRNDYgMzg4IDQ3IDQxNlQ1NiA0OTRUNzggNTc3VDEyMiA2NDRUMTk0IDY5NFEyMzkgNzExIDI4NSA3MTFaTTM1MSA2MzlRMzUwIDYzOSAzNDYgNjQyVDMzNyA2NDhUMzI1IDY1NFQzMDYgNjU4VDI4MyA2NjBRMjU0IDY2MCAyMjEgNjM4VDE4MSA1NjdRMTcxIDUxMyAxNzEgMzc1UTE3MSAxNjQgMTgyIDEyOUwzNTEgNjM5Wk00MDIgMzU2UTQwMiA1MTYgMzk1IDU1NVEzOTUgNTU3IDM5NSA1NTlUMzk0IDU2M1QzOTQgNTY2TDM5MyA1NjhMMjIzIDU3UTI1MiAzNCAyODYgMzRIMjg4UTMxOCAzNCAzNDYgNTNUMzg3IDEwOVE0MDIgMTUyIDQwMiAzMjlWMzU2JyxcbiAgICAweDIyMDY6ICc5MDEgMTJROTAxIDcgODkyIDBINDc5UTY1IDAgNjIgMlE1NiA2IDU2IDExUTU2IDE0IDI0MiAzNDdUNDMzIDY4NVE0MzggNjk0IDQ1MCA2OTZRNDU0IDY5OCA0ODAgNjk4SDUwNkw1MjMgNjg3UTUyNiA2ODMgNzExIDM1NFQ4OTkgMTdROTAxIDEzIDkwMSAxMlpNNjUzIDEzN0w0MjcgNTM4TDIwMiAxMzdMMzE1IDEzNkg1NDBMNjUzIDEzNycsXG4gICAgMHgyMjA4OiAnOTcgMjUxUTk3IDM5MyAxOTQgNDg0VDQxNyA1ODZRNDE4IDU4NiA0MzYgNTg2VDQ4MiA1ODZUNTM4IDU4N0g2NDhRNjQ5IDU4NiA2NTIgNTg0VDY1OCA1ODBUNjY0IDU3NVQ2NjggNTY4VDY3MCA1NTdRNjcwIDUzNiA2NDggNTI3TDUzNCA1MjZRNTE1IDUyNiA0OTEgNTI2VDQ1NyA1MjZUNDM1IDUyNlQ0MTcgNTI1VDQwNCA1MjNUMzkwIDUyMVQzNzQgNTE3UTI5OCA0OTggMjQzIDQ0N1QxNjcgMzI0UTE1OSAyOTUgMTU5IDI4M1ExNTkgMjgxIDQwMyAyODFINjQ4UTY0OSAyODAgNjUyIDI3OFQ2NTggMjc0VDY2NCAyNjlUNjY4IDI2MlQ2NzAgMjUxUTY3MCAyMzAgNjQ4IDIyMUw0MDMgMjIwUTE1OSAyMjAgMTU5IDIxOFExNTkgMjA2IDE2NiAxODJUMTkwIDEyMlQyNDcgNTBUMzQxIC02UTM4MCAtMjAgNDA1IC0yMlQ1MzQgLTI1SDY0OFE2NDkgLTI2IDY1NCAtMjlUNjYxIC0zNFQ2NjcgLTQzVDY3MCAtNTZRNjcwIC03NCA2NDggLTg1TDU0MSAtODZRNDE5IC04NiAzOTYgLTgyUTI3NiAtNjUgMTg3IDI0VDk3IDI1MScsXG4gICAgMHgyMjA5OiAnMTI2IC0yMTBRMTE2IC0yMTAgMTA3IC0yMDNUOTcgLTE3OVE5NyAtMTcxIDk5IC0xNjZROTkgLTE2NSAxMTEgLTE0NVQxNTAgLTgwVDIwMyA4UTk3IDEwNCA5NyAyNTFROTcgMzkzIDE5NCA0ODRUNDE3IDU4NlE0MTggNTg2IDQzNiA1ODZUNDgyIDU4NlQ1MzggNTg3SDU0OVE1NjUgNjE0IDU4MiA2NDNUNjA4IDY4NUw2MTYgNjk4UTYyMyA3MTEgNjQxIDcxMVE2NTEgNzExIDY2MCA3MDRUNjcwIDY4MVE2NzAgNjcyIDY2NyA2NjdRNjY2IDY2NiA2NjEgNjU3VDY0NCA2MjdUNjIwIDU4N0g2NDhRNjQ5IDU4NiA2NTIgNTg0VDY1OCA1ODBUNjY0IDU3NVQ2NjggNTY4VDY3MCA1NTdRNjcwIDUzNiA2NDggNTI3TDU4NCA1MjZMNDM3IDI4MUg2NDhRNjQ5IDI4MCA2NTIgMjc4VDY1OCAyNzRUNjY0IDI2OVQ2NjggMjYyVDY3MCAyNTFRNjcwIDIzMCA2NDggMjIxTDQwMyAyMjBINDAxTDI4MyAyM1EzMTEgNSAzNDEgLTZRMzgwIC0yMCA0MDUgLTIyVDUzNCAtMjVINjQ4UTY0OSAtMjYgNjU0IC0yOVQ2NjEgLTM0VDY2NyAtNDNUNjcwIC01NlE2NzAgLTc0IDY0OCAtODVMNTQxIC04NlE0MTkgLTg2IDM5NiAtODJRMzIwIC03MSAyNTIgLTI5UTE1MiAtMTk3IDE0OCAtMjAxUTEzOSAtMjEwIDEyNiAtMjEwWk0yMzUgNjJMMzMwIDIyMFExNTkgMjE5IDE1OSAyMThRMTU5IDE5NiAxNzYgMTUwVDIzNSA2MlpNMzY2IDI4MUw1MTMgNTI2UTUwMyA1MjYgNDg3IDUyNlQ0NjUgNTI2VDQ0OCA1MjVUNDMzIDUyNVQ0MjIgNTI1VDQxMiA1MjRUNDAzIDUyM1QzOTQgNTIxVDM4NSA1MTlUMzc0IDUxN1EyOTggNDk4IDI0MyA0NDdUMTY3IDMyNFExNTkgMjk1IDE1OSAyODNRMTU5IDI4MSAzNjYgMjgxJyxcbiAgICAweDIyMEI6ICc5NiAyNTFROTYgMjY4IDExOSAyODFIMzYzUTYwNyAyODEgNjA3IDI4M1E2MDcgMjk1IDYwMCAzMTlUNTc2IDM3OVQ1MTkgNDUxVDQyNSA1MDdRMzg2IDUyMSAzNjEgNTIzVDIzMyA1MjZMMTE5IDUyN1E5NiA1MzUgOTYgNTU3UTk2IDU3OCAxMTYgNTg1UTEyMSA1ODcgMjI5IDU4N1EyMzggNTg3IDI1NyA1ODdUMjg4IDU4OFEzNjYgNTg4IDQzNSA1NjhUNTY4IDQ4OFE2NzAgMzg4IDY3MCAyNTFRNjcwIDE1NSA2MjEgNzhUNDk5IC0zOVQzNDUgLTg1UTMzNiAtODYgMjI1IC04NkwxMTkgLTg1UTk2IC03NyA5NiAtNTVROTYgLTM4IDExOSAtMjVIMjMzUTM1NiAtMjQgMzcxIC0yMVEzNzMgLTIxIDM5MyAtMTZRNDY4IDMgNTIzIDU1VDU5OSAxNzdRNjA3IDIwNiA2MDcgMjE4UTYwNyAyMjAgMzYzIDIyMEwxMTkgMjIxUTk2IDIyOSA5NiAyNTEnLFxuICAgIDB4MjIxMjogJzExOSAyMjFROTYgMjMwIDk2IDI1MVQxMTYgMjc5UTEyMSAyODEgNDQ4IDI4MUg3NzVRNzc2IDI4MCA3NzkgMjc4VDc4NSAyNzRUNzkxIDI2OVQ3OTUgMjYyVDc5NyAyNTFRNzk3IDIzMCA3NzUgMjIxSDExOScsXG4gICAgMHgyMjEzOiAnNjQgMTU1UTY0IDE3MiA4NyAxODVINDE2VjQ3NkgyNTFMODcgNDc3UTY0IDQ4NSA2NCA1MDdRNjQgNTI4IDg0IDUzNVE4OSA1MzcgNDQ4IDUzN0g4MDdRODA4IDUzNiA4MTEgNTM0VDgxNyA1MzBUODIzIDUyNVQ4MjcgNTE4VDgyOSA1MDdRODI5IDQ4NiA4MDcgNDc3TDY0MiA0NzZINDc3VjE4NUg4MDdRODA4IDE4NCA4MTEgMTgyVDgxNyAxNzhUODIzIDE3M1Q4MjcgMTY2VDgyOSAxNTVRODI5IDEzNCA4MDcgMTI1TDY0MiAxMjRINDc3Vi0zOVE0NzcgLTIwMyA0NzUgLTIwOFE0NjYgLTIyNyA0NDYgLTIyN1E0MjcgLTIyNyA0MTcgLTIwNUw0MTYgLTQxVjEyNEgyNTFMODcgMTI1UTY0IDEzMyA2NCAxNTUnLFxuICAgIDB4MjIxNTogJzQ1MSA3MzBRNDYwIDc1MCA0NzkgNzUwUTQ5MiA3NTAgNTAxIDc0MFQ1MTAgNzE4UTUwOCA3MDggMzE4IDI0NEwxMjIgLTIzMlExMTIgLTI1MCA5NSAtMjUwUTgyIC0yNTAgNzMgLTI0MVQ2NCAtMjE4UTY2IC0yMDUgMjU4IDI2MVQ0NTEgNzMwJyxcbiAgICAweDIyMTY6ICc2NCA3MThRNjMgNzMxIDcyIDc0MFQ5NCA3NTBRMTA2IDc1MCAxMTMgNzQzUTExOCA3NDEgMTIyIDczMkwzMTggMjU2UTUwOCAtMjA4IDUxMCAtMjE4UTUxMSAtMjMxIDUwMiAtMjQwVDQ4MCAtMjUwUTQ2MCAtMjUwIDQ1MSAtMjMwUTQ1MSAtMjI5IDI1OSAyMzhUNjQgNzE4JyxcbiAgICAweDIyMTc6ICcyMzYgNDMxUTIzNyA0NDcgMjUxIDQ1OVQyODcgNDcyVDMyMyA0NTlUMzM4IDQzMVEzMzggNDIzIDMyOCAzNjNMMzE3IDMwMFEzMTggMzAwIDM0MCAzMTdUMzkyIDM1NlQ0MzUgMzg3UTQ0MiAzOTAgNDUwIDM5MFE0NzAgMzkwIDQ4NSAzNzRUNTAxIDMzNVE1MDEgMzI2IDUwMCAzMjBUNDk0IDMwOVQ0ODYgMzAwVDQ3MyAyOTNUNDU4IDI4N1Q0MzggMjgwVDQxNCAyNzJMMzUzIDI1MEw0MTQgMjI4UTQyMiAyMjUgNDM2IDIyMVQ0NTcgMjE0VDQ3MiAyMDhUNDg1IDIwMVQ0OTMgMTkyVDQ5OSAxODFUNTAxIDE2NlE1MDEgMTQxIDQ4NCAxMjZUNDUwIDExMVE0NDcgMTExIDQ0NSAxMTFUNDQxIDExMVQ0MzcgMTEyVDQzMyAxMTRUNDI4IDExN1Q0MjIgMTIxVDQxNCAxMjdUNDA0IDEzNVQzOTEgMTQ1VDM3NCAxNThMMzE3IDIwMEwzMjggMTM3UTMzOCA3NyAzMzggNjlRMzM2IDUyIDMyMSA0MFQyODcgMjhUMjUzIDQwVDIzNiA2OVEyMzYgNzcgMjQ2IDEzN0wyNTcgMjAwUTI1NiAyMDAgMjM0IDE4M1QxODIgMTQ0VDEzOSAxMTNRMTMyIDExMCAxMjQgMTEwUTEwNCAxMTAgODkgMTI2VDczIDE2NVE3MyAxNzQgNzQgMTgwVDgwIDE5MVQ4OCAyMDBUMTAxIDIwN1QxMTYgMjEzVDEzNiAyMjBUMTYwIDIyOEwyMjEgMjUwTDE2MCAyNzJRMTUyIDI3NSAxMzggMjc5VDExNyAyODZUMTAyIDI5MlQ4OSAyOTlUODEgMzA4VDc1IDMxOVQ3MyAzMzRRNzMgMzU5IDkwIDM3NFQxMjQgMzg5UTEyNyAzODkgMTI5IDM4OVQxMzMgMzg5VDEzNyAzODhUMTQxIDM4NlQxNDYgMzgzVDE1MiAzNzlUMTYwIDM3M1QxNzAgMzY1VDE4MyAzNTVUMjAwIDM0MkwyNTcgMzAwTDI0NiAzNjNRMjM2IDQyMyAyMzYgNDMxJyxcbiAgICAweDIyMTg6ICc2NCAyNTFRNjQgMzAzIDgwIDM0NFQxMjEgNDA5VDE3NSA0NDhUMjMwIDQ2OVQyNzUgNDc0UTI3NyA0NzQgMjgzIDQ3NFQyOTIgNDczUTM4NSA0NzMgNDQ3IDQxNVQ1MTAgMjUxUTUxMCAxNDkgNDQ5IDg5VDI4NyAyOFQxMjYgODhUNjQgMjUxWk00NDggMjUxUTQ0OCAzMjUgNDA1IDM2OVQyODYgNDEzUTIxNSA0MTMgMTcxIDM3MVQxMjYgMjUxUTEyNiAxNzcgMTY4IDEzM1QyODcgODlRMzYxIDg5IDQwNCAxMzJUNDQ4IDI1MScsXG4gICAgMHgyMjE5OiAnNjQgMjUxUTY0IDMwMyA4MCAzNDRUMTIxIDQwOVQxNzUgNDQ4VDIzMCA0NjlUMjc1IDQ3NFEyNzcgNDc0IDI4MyA0NzRUMjkyIDQ3M1EzODUgNDczIDQ0NyA0MTVUNTEwIDI1MVE1MTAgMTQ5IDQ0OSA4OVQyODcgMjhUMTI2IDg4VDY0IDI1MScsXG4gICAgMHgyMjFBOiAnMTA3IDE3OFExMDAgMTc4IDg5IDE4OFQ3OCAyMDdRNzggMjE2IDg0IDIyMFE4NSAyMjEgMTI0IDI0OFQyMDcgMzA0VDI2MCAzMzhRMjY5IDM0MCAyNzUgMzM1UTI3NiAzMzQgMzcwIDE1Nkw0NjMgLTIwTDY5OCAzOTNROTI4IDgwMCA5MzUgODExUTk0NCA4MjAgOTU0IDgyMFE5NzIgODIwIDk4MCA4MTFUOTg4IDc4OVE5ODggNzgxIDg1OCA1NTNRNzc2IDQwOSA3MTggMzA2UTQ1MiAtMTY2IDQ0NyAtMTcxUTQzOSAtMTc5IDQyMiAtMTgwUTQwNSAtMTgwIDQwMCAtMTc1UTM5OSAtMTc0IDM0NiAtNzNUMjQxIDEyOFQxODcgMjI5TDE1MSAyMDVRMTExIDE3OCAxMDcgMTc4JyxcbiAgICAweDIyMUQ6ICc2NSAyMjJRNjUgMjgyIDg4IDMyOVQxNDQgNDAxVDIwOCA0MzhUMjYxIDQ1MUgyNzNRMzEyIDQ1MSAzMjAgNDUwUTQ1NiA0MzEgNTI2IDMzMEw1MzcgMzE2UTYzOCA0NTEgNzc4IDQ1MVE4MTMgNDUxIDgzMCA0NDVWMzg4UTgyMSAzOTEgNzk5IDM5MVE3NTggMzkxIDcyMSAzNzdUNjYwIDM0MlQ2MTggMzAxVDU5MiAyNjZMNTg0IDI1MVE2NDggMTUyIDY5NyAxMTRRNzQ4IDc0IDgwNCA3NEg4MDZRODIzIDc0IDgyOSA3N1E4MzAgNzcgODMwIDM4Vi0xTDgyMCAtM1E4MDEgLTcgNzg2IC03SDc3MVE2OTkgLTcgNjMyIDI1VDUyNyAxMTRMNTE2IDEyOFE0MTQgLTggMjc2IC04UTE5MiAtOCAxMjkgNTZUNjUgMjIyWk0yNTYgNTNRMjk2IDUzIDMzMiA2N1QzOTIgMTAyVDQzNCAxNDNUNDYxIDE3OEw0NjkgMTkzUTQwNSAyOTIgMzU2IDMzMFEzMDggMzY5IDI1MSAzNjlIMjQzUTE5NiAzNjkgMTU2IDMyOFQxMTYgMjIxUTExNiAxOTEgMTI0IDE2MVQxNTggOTlUMjI1IDU1UTIzNCA1MyAyNTYgNTMnLFxuICAgIDB4MjIxRTogJzY1IDIxOVE2NSAzMTggMTMyIDM4NVQzMDIgNDUyUTQ3MyA0NTIgNTczIDMzMUw1ODkgMzEyTDU5NiAzMjBRNzEwIDQ1MiA4NTcgNDUyUTk0OCA0NTIgMTAxNiAzODZUMTA4NCAyMjVRMTA4NCAxMjUgMTAxNyA1OVQ4NDggLThRNjc5IC04IDU3NiAxMTNMNTYwIDEzMkw1NTMgMTI0UTQzOSAtOCAyOTIgLThRMjAwIC04IDEzMyA1OFQ2NSAyMTlaTTEwMzMgMjI0UTEwMzMgMjkxIDk4NyAzNDBUODc1IDM4OVE3NDggMzg5IDY0OCAyNjFRNjQxIDI1MyA2NDIgMjUxUTcxNyAxNjMgNzQ4IDEzN1E4MTMgODEgODgwIDgxUTk0MSA4MSA5ODcgMTIwVDEwMzMgMjI0Wk0yNzUgNTZRMzE1IDU2IDM1MyA3MFQ0MTggMTA0VDQ2NiAxNDRUNDk3IDE3OEw1MDcgMTkyUTUwNyAxOTMgNDc0IDIzMFQ0NDEgMjY5UTM1NSAzNjIgMjY3IDM2MlEyMTAgMzYyIDE2MyAzMjRUMTE2IDIyMVExMTYgMTUwIDE2MiAxMDNUMjc1IDU2JyxcbiAgICAweDIyMjA6ICc3MSAwTDY4IDJRNjUgMyA2MyA1VDU4IDExVDU1IDIwUTU1IDIxIDU2IDIzVjI1UTU1IDI3IDU1IDMwUTU1IDMxIDU2IDMzVjM1UTU1IDM3IDU1IDQwUTU1IDQyIDU3IDQ4UTY3IDYzIDM0NiAzODFRNDIxIDQ2NyA1MTggNTc4UTYwNyA2ODAgNjIzIDY5N1Q2NDcgNzE0UTY1NiA3MTQgNjYxIDcwOFQ2NjYgNjk0VjY5MlE2NzYgNjg3IDY3NiA2NzRRNjc2IDY2OCA2NzMgNjYzUTY3MiA2NjIgNjM3IDYyMlQ1MzQgNTAzVDQwMCAzNTBMMTQ3IDYxTDM4NiA2MEg2NTNRNjY2IDUwIDY2NiA0MFYzOFE2NzYgMzEgNjc2IDIwUTY3NiA4IDY2MSAwSDcxJyxcbiAgICAweDIyMjM6ICcxNjAgLTI0OVExMzggLTI0OSAxMjkgLTIyNVYyNTBRMTI5IDcyNSAxMzEgNzI5UTEzOSA3NTAgMTU5IDc1MFQxOTAgNzI1Vi0yMjVRMTgxIC0yNDkgMTYwIC0yNDknLFxuICAgIDB4MjIyNTogJzIwNSAtMjI1UTIwMSAtMjM0IDE5OSAtMjM3VDE5MSAtMjQ0VDE3NSAtMjQ4VDE2MSAtMjQ2UTE1MSAtMjQwIDE0NiAtMjI5UTE0NSAtMjI0IDE0NSAyNTFRMTQ1IDcyNSAxNDYgNzMwUTE1NiA3NTAgMTc2IDc1MFExOTMgNzQ4IDIwNSA3MjdWLTIyNVpNMzY5IDcyN0wzNzIgNzMyUTM3NSA3MzcgMzc3IDc0MFQzODUgNzQ3VDM5OCA3NTBRNDA2IDc1MCA0MTMgNzQ3UTQyMyA3NDAgNDI4IDczMFE0MzAgNzIwIDQzMCAyNTFRNDMwIC0yMTkgNDI4IC0yMjlRNDIzIC0yNDAgNDEzIC0yNDZRNDA4IC0yNDggNDAwIC0yNDhRMzkzIC0yNDggMzg4IC0yNDdUMzc5IC0yNDJUMzc1IC0yMzZUMzcxIC0yMzBMMzY5IC0yMjVWNzI3JyxcbiAgICAweDIyMjc6ICc5NSAtMTZRNzggLTE2IDcxIC02VDY0IDE0UTY0IDIwIDY1IDIyTDIxMiAzMDhRMzU5IDU5MyAzNjEgNTk1UTM3MCA2MDQgMzg1IDYwNFEzOTggNjAyIDQwNSA1OTVRNDA3IDU5MyA1NTQgMzA4TDcwMSAyMlE3MDIgMjAgNzAyIDE1UTcwMiAxIDY5MyAtOFQ2NzEgLTE3UTY2MSAtMTcgNjUxIC05UTY0NyAtNSA1MTUgMjUxTDM4MyA1MDZMMjUxIDI1MVExMTkgLTUgMTE2IC04UTEwOCAtMTYgOTUgLTE2JyxcbiAgICAweDIyMjg6ICc2NCA1NzJRNjQgNTg1IDcyIDU5NFQ5NCA2MDRUMTE2IDU5NVExMTkgNTkyIDI1MSAzMzZMMzgzIDgxTDUxNSAzMzZRNjQ3IDU5MiA2NTEgNTk2UTY2MSA2MDQgNjcxIDYwNFE2ODQgNjA0IDY5MyA1OTVUNzAyIDU3MlE3MDIgNTY3IDcwMSA1NjVMNTU0IDI3OVE0MDcgLTYgNDA1IC04UTQwNCAtOSA0MDEgLTExVDM5NyAtMTRRMzkyIC0xNiAzODMgLTE2SDM4MFEzNjkgLTE2IDM2MSAtOFEzNTkgLTYgMjEyIDI3OUw2NSA1NjVRNjUgNTY2IDY1IDU2OFQ2NCA1NzInLFxuICAgIDB4MjIyOTogJzk0IC0xNlE3MyAtMTYgNjQgOFYyMDlRNjQgMjM5IDY0IDI4N1E2NSA0MTggNjkgNDMyUTcwIDQzNCA3MCA0MzVRODQgNDg3IDEyNSA1MjNUMjE2IDU3NVQyOTkgNTk3VDM1NCA2MDNIMzcyUTQ0NCA2MDMgNTAxIDU5MFQ1OTEgNTU4VDY0OCA1MTVUNjgxIDQ3MVQ2OTYgNDM1UTY5NiA0MzQgNjk3IDQzMlE3MDEgNDE3IDcwMiAzMDlRNzAyIDMwMyA3MDIgMjg3UTcwMiAyMzkgNzAyIDIwOVY4UTY5MyAtMTYgNjcyIC0xNlE2NTAgLTE2IDY0MyAzUTY0MSA4IDY0MSAyMDFRNjQxIDM5NyA2NDAgNDAzUTYzMSA0NzIgNTU4IDUwN1QzODMgNTQyUTMzOSA1NDIgMjk4IDUzNVQyMTkgNTExVDE1NiA0NjhUMTI2IDQwM1ExMjUgMzk3IDEyNSAyMDFRMTI1IDggMTIzIDNRMTE2IC0xNiA5NCAtMTYnLFxuICAgIDB4MjIyQTogJzY3MiA2MDNRNjkzIDYwMyA3MDIgNTc5VjM3OFE3MDIgMzQ4IDcwMiAzMDBRNzAxIDE2OSA2OTcgMTU1UTY5NiAxNTMgNjk2IDE1MlE2NzYgNzggNTkzIDMxVDM4MyAtMTZRMjY1IC0xNiAxNzkgMjhUNzAgMTUyUTcwIDE1MyA2OSAxNTVRNjUgMTcwIDY0IDI3OFE2NCAyODUgNjQgMzAwUTY0IDM0OCA2NCAzNzhRNjQgNTc5IDY1IDU4M1E3NCA2MDQgOTQgNjA0VDEyMyA1ODRRMTI1IDU3OSAxMjUgMzg2UTEyNSAxOTAgMTI2IDE4NFExMzUgMTE1IDIxMCA4MFQzODMgNDRRNDI2IDQ0IDQ2NyA1MVQ1NDYgNzVUNjA5IDExOVQ2NDAgMTg0UTY0MSAxOTAgNjQxIDM4NlE2NDEgNTc5IDY0MyA1ODRRNjUwIDYwMyA2NzIgNjAzJyxcbiAgICAweDIyMkI6ICcyMDQgLTcxUTIwNCAtMTA4IDE4MSAtMTI0VDEzNyAtMTQxUTEzMiAtMTQxIDEzMiAtMTQyUTE0MiAtMTYxIDE1NCAtMTYxUTE2NCAtMTYxIDE4NiAtMTUyUTIwMCAtMTQ1IDIxMCAtMTM1VDIyOCAtMTA3VDI0MSAtNzdUMjQ5IC0zOFQyNTQgLTJUMjU4IDM4VDI2MiA3NFEyODIgMjY1IDMzNCA0ODlRMzM0IDQ5MCAzMzcgNTAzVDM0MSA1MjNUMzQ3IDU0NFQzNTUgNTY5VDM2NSA1OTRUMzc5IDYyMFQzOTcgNjQzVDQyMCA2NjZUNDQ3IDY4NVQ0ODEgNzAwUTUxMSA3MTEgNTM5IDcxMVQ1ODcgNjk2VDYxNiA2NTZUNjI4IDYxMlQ2MzIgNTczUTYzMiA1MzYgNjEwIDUxOVQ1NjIgNTAxUTUzNCA1MDEgNTEzIDUxOVQ0OTIgNTcxUTQ5MiA2MDggNTE1IDYyNFQ1NTkgNjQxUTU2NCA2NDEgNTY0IDY0MlE1NTQgNjYxIDU0MiA2NjFRNTMyIDY2MSA1MTAgNjUyUTQ5NiA2NDUgNDg2IDYzNVQ0NjggNjA3VDQ1NSA1NzdUNDQ3IDUzOFQ0NDIgNTAyVDQzOCA0NjJUNDM0IDQyNlE0MTQgMjM1IDM2MiAxMVEzNTIgLTM1IDM0NyAtNTRUMzI4IC0xMDFUMjkxIC0xNTJRMjM1IC0yMDggMTYyIC0yMTFRMTQ3IC0yMTEgMTM2IC0yMDhUMTA5IC0xOTZUODMgLTE2NVQ2NyAtMTA4UTY0IC05NCA2NCAtNzNRNjQgLTM3IDg2IC0xOVQxMzQgLTFRMTYyIC0xIDE4MyAtMTlUMjA0IC03MScsXG4gICAgMHgyMjNDOiAnNjQgMTU1UTY0IDIxMCA4NCAyNjJUMTUwIDM1M1QyNTcgMzkxUTMwMCAzOTEgMzQxIDM3MVQ0MTcgMzIxVDQ4NCAyNjRUNTU3IDIxNVQ2MzcgMTk0UTcwMiAxOTQgNzQ1IDI0NFQ3ODggMzY3UTc5NiAzOTEgODA4IDM5MVE4MTUgMzkxIDgyMSAzODFUODI4IDM1M1YzNDJRODI4IDI1MiA3NzYgMTgxVDYzNyAxMDlRNTk0IDEwOSA1NTIgMTI5VDQ3NiAxNzlUNDA5IDIzNlQzMzYgMjg1VDI1NiAzMDZRMTkzIDMwNiAxNDkgMjU4VDEwNSAxMzJROTggMTA5IDg2IDEwOVE3NiAxMDkgNzAgMTIyVDY0IDE1NScsXG4gICAgMHgyMjQwOiAnNjQgNTYxUTY0IDU3MCA3NiA1NzZUMTA4IDU4M1ExNzQgNTgzIDIxNCA1MzVUMjU0IDQwN1EyNTQgMzY4IDIzOCAzMjRUMjAyIDI0OFQxNjYgMTczVDE0OSA5MlExNDkgNDMgMTY5IDJUMjE3IC0zOVEyMzEgLTQwIDI0MiAtNDZUMjU0IC02MFEyNTQgLTY5IDI0MSAtNzVUMjEwIC04MlExNDUgLTgyIDEwNSAtMzRUNjQgOTNRNjQgMTMzIDgwIDE3N1QxMTYgMjUzVDE1MiAzMjhUMTY5IDQwOFExNjkgNDYxIDE0OCA1MDBUMTA1IDU0MFE5MiA1NDAgNzggNTQ1VDY0IDU2MScsXG4gICAgMHgyMjQzOiAnNjQgMjk1UTY0IDM3OCAxMTcgNDQwVDI1NyA1MDJRMjk4IDUwMiAzMzkgNDg1VDQxNiA0NDNUNDg2IDM5NFQ1NjAgMzUyVDYzNyAzMzVRNjkzIDMzNSA3NDAgMzczVDc4OCA0NzhRNzk2IDUwMiA4MDggNTAyUTgxNSA1MDIgODIxIDQ5MlQ4MjggNDY1VjQ1NVE4MjggMzY1IDc3MSAzMDhUNjQwIDI1MFE2MDMgMjUwIDU2MiAyNjVUNTAxIDI5NFQ0MzkgMzM2TDM3MCAzODJRMzA4IDQxNyAyNTYgNDE3UTIwNSA0MTcgMTY0IDM4OFQxMTAgMzE3UTExMCAzMTYgMTA5IDMwNFQxMDcgMjg2VDEwMyAyNzBUOTcgMjU1VDg2IDI1MFE3NiAyNTAgNzAgMjYzVDY0IDI5NVpNNjQgNlQ2NCAyN1Q4NyA1Nkg5M1E5OSA1NiAxMTAgNTZUMTM3IDU2VDE3MyA1NlQyMTcgNTZUMjY3IDU3VDMyMyA1N1QzODMgNTdUNDQ4IDU3SDgwN1E4MDggNTYgODExIDU0VDgxNSA1MlQ4MTkgNDlUODIzIDQ1VDgyNiA0MFQ4MjggMzRUODI5IDI3UTgyOSA3IDgwNyAtM0g4N1E2NCA2IDY0IDI3JyxcbiAgICAweDIyNDU6ICc2NCA0MDJRNjQgNDU3IDg0IDUwOVQxNTAgNjAwVDI1NyA2MzhRMzAwIDYzOCAzNDEgNjE4VDQxNyA1NjlUNDg0IDUxMVQ1NTcgNDYyVDYzNyA0NDFRNzAyIDQ0MSA3NDUgNDkxVDc4OCA2MTRRNzk2IDYzOCA4MDggNjM4UTgxNSA2MzggODIxIDYyOFQ4MjggNjAwVjU4OVE4MjggNDk5IDc3NiA0MjhUNjM3IDM1NlE1OTQgMzU2IDU1MiAzNzZUNDc2IDQyNVQ0MDkgNDgzVDMzNiA1MzJUMjU2IDU1M1ExOTMgNTUzIDE0OSA1MDVUMTA1IDM3OVE5OCAzNTYgODYgMzU2UTc2IDM1NiA3MCAzNjlUNjQgNDAyWk04NyAxOTdRNjQgMjA3IDY0IDIyNlE2NCAyNDcgODQgMjU1UTg5IDI1NyA0NDggMjU3SDgwN1E4MDggMjU2IDgxMSAyNTRUODE3IDI1MFQ4MjMgMjQ1VDgyNyAyMzhUODI5IDIyN1E4MjkgMjA5IDgwNyAxOTdIODdaTTg3IC0yN1E2NCAtMTggNjQgM1E2NCAyMyA4NiAzMlE4OSAzMyA0NDggMzNIODA3TDgxMiAzMFE4MTYgMjcgODE4IDI2VDgyMyAyMVQ4MjcgMTNUODI5IDNRODI5IC0xOCA4MDcgLTI3SDg3JyxcbiAgICAweDIyNDg6ICc2NCAzNDVRNjQgNDIzIDExOSA0NzNUMjUwIDUyNFEzMDEgNTI0IDM1NiA1MDNUNDUxIDQ1NVQ1NDIgNDA3VDYzNiAzODVRNzAwIDM4NSA3NDMgNDE3VDc4NiA0ODFRNzg2IDQ5MyA3OTEgNTA4VDgwNyA1MjRRODE3IDUyNCA4MjMgNTEyVDgyOSA0NzlRODI5IDQwNCA3NzYgMzUyVDYzOCAzMDBRNTkwIDMwMCA1MzcgMzIxVDQ0MyAzNjlUMzUyIDQxN1QyNTYgNDM5UTIwNyA0MzkgMTY2IDQxN1QxMTAgMzU5UTEwOSAzNTcgMTA3IDM0MVQxMDAgMzEyVDg1IDMwMFE3NyAzMDAgNzEgMzEzVDY0IDM0NVpNNjQgNzdRNjQgMTU1IDExOSAyMDVUMjUwIDI1NlEzMDIgMjU2IDM1NyAyMzVUNDUxIDE4N1Q1NDEgMTM5VDYzNiAxMTdRNjk5IDExNyA3NDIgMTQ4VDc4NiAyMTNRNzg2IDIzMSA3OTIgMjQzVDgwOCAyNTZUODIzIDI0MlQ4MjkgMjA4UTgyOSAxMzQgNzc2IDgzVDY0MCAzMlE1OTEgMzIgNTM3IDUzVDQ0MyAxMDFUMzUyIDE0OVQyNTYgMTcxUTIwNiAxNzEgMTY1IDE0OFQxMTAgOTFRMTA5IDg5IDEwNyA3M1QxMDAgNDRUODUgMzJRNzcgMzIgNzEgNDVUNjQgNzcnLFxuICAgIDB4MjI0RDogJzc5OCA1MzNRODEyIDUzMyA4MjAgNTI0VDgyOSA1MDJUODE5IDQ4MFQ3NjkgNDQwUTY1NSAzNTUgNTM3IDMzMFE0OTIgMzIyIDQ0NyAzMjJRNDAxIDMyMiAzNTYgMzMwUTI4OSAzNDQgMjE5IDM4MVQxMTggNDQzVDczIDQ4MVE2NCA0OTAgNjQgNTAzUTY0IDUxNyA3MiA1MjVUOTQgNTMzUTk5IDUzMyAxMDIgNTMyUTEwNyA1MzEgMTM4IDUwN1QyMDkgNDU2VDMxNCA0MDVUNDQ2IDM4MlE2MDQgMzgyIDc2NSA1MTVRNzg4IDUzMyA3OTggNTMzWk05NSAtMzJRODEgLTMyIDczIC0yM1Q2NCAtMVE2NCAxMCA3NCAyMVQxMjQgNjFRMjEzIDEyNyAyOTMgMTUzVDQyMSAxNzlMNDIyIDE4MFE0MjQgMTgwIDQyNiAxODBUNDMyIDE4MFQ0NDEgMTgwVDQ1MiAxNzlRNjEyIDE3OSA3NjkgNjFRODExIDI5IDgyMCAxOVQ4MjkgLTFRODI5IC0xNCA4MjEgLTIzVDc5OCAtMzJRNzg4IC0zMiA3NjUgLTE0UTYwOCAxMTggNDQ2IDExOFEyODcgMTE4IDEyOCAtMTRRMTA1IC0zMiA5NSAtMzInLFxuICAgIDB4MjI1MDogJzg3IDMzM1E2NCAzNDMgNjQgMzYyUTY0IDM4MyA4NCAzOTFRODkgMzkzIDQ0OCAzOTNIODA3UTgwOCAzOTIgODExIDM5MFQ4MTcgMzg2VDgyMyAzODFUODI3IDM3NFQ4MjkgMzYzUTgyOSAzNDUgODA3IDMzM0g4N1pNODcgMTA5UTY0IDExOCA2NCAxMzlRNjQgMTU5IDg2IDE2OFE4OSAxNjkgNDQ4IDE2OUg4MDdMODEyIDE2NlE4MTYgMTYzIDgxOCAxNjJUODIzIDE1N1Q4MjcgMTQ5VDgyOSAxMzlRODI5IDExOCA4MDcgMTA5SDg3Wk0zNjIgNjM1UTM2MiA2NzEgMzg3IDY5NlQ0NDQgNzIxUTQ4OCA3MjEgNTEwIDY5M1Q1MzMgNjM1UTUzMyA2MDYgNTEyIDU3OVQ0NDggNTUxUTQwNiA1NTEgMzg0IDU3N1QzNjIgNjM1JyxcbiAgICAweDIyNjA6ICcxODkgLTIxMFExNzkgLTIxMCAxNzAgLTIwM1QxNjAgLTE3OVExNjAgLTE3MSAxNjIgLTE2NlExNjUgLTE2MyAzMjcgMTA5SDg3UTY0IDExOCA2NCAxMzlRNjQgMTU5IDg2IDE2OFE4OSAxNjkgMzYzIDE2OUw0NjEgMzMzSDg3UTY0IDM0MyA2NCAzNjJRNjQgMzgzIDg0IDM5MVE4OSAzOTMgNDQ4IDM5M0g0OTZRNTMzIDQ1NSA1ODMgNTM5VDY1NiA2NjBUNjc5IDY5OFE2ODYgNzExIDcwNCA3MTFRNzE0IDcxMSA3MjMgNzA0VDczMyA2ODFRNzMzIDY3MiA3MzAgNjY3UTcyOSA2NjQgNzA5IDYzMVQ2NDUgNTIzVDU2NyAzOTNIODA3UTgwOCAzOTIgODExIDM5MFQ4MTcgMzg2VDgyMyAzODFUODI3IDM3NFQ4MjkgMzYzUTgyOSAzNDUgODA3IDMzM0g1MzJMNDMzIDE2OUg4MDdMODEyIDE2NlE4MTYgMTYzIDgxOCAxNjJUODIzIDE1N1Q4MjcgMTQ5VDgyOSAxMzlRODI5IDExOCA4MDcgMTA5SDM5OFEyMTcgLTE5NSAyMTEgLTIwMVEyMDIgLTIxMCAxODkgLTIxMCcsXG4gICAgMHgyMjYxOiAnODcgNDQ1UTY0IDQ1NCA2NCA0NzVRNjQgNDk3IDg0IDUwM1E4OSA1MDUgNDQ4IDUwNUg4MDdRODA4IDUwNCA4MTIgNTAyVDgxOCA0OTdUODIzIDQ5MlQ4MjcgNDg0VDgyOSA0NzRRODI5IDQ1NiA4MDcgNDQ1SDg3Wk04NyAyMjFRNjQgMjMwIDY0IDI1MVQ4NCAyNzlRODkgMjgxIDQ0OCAyODFIODA3UTgwOCAyODAgODExIDI3OFQ4MTcgMjc0VDgyMyAyNjlUODI3IDI2MlQ4MjkgMjUxUTgyOSAyMzAgODA3IDIyMUg4N1pNNjQgNlQ2NCAyN1Q4NyA1Nkg5M1E5OSA1NiAxMTAgNTZUMTM3IDU2VDE3MyA1NlQyMTcgNTZUMjY3IDU3VDMyMyA1N1QzODMgNTdUNDQ4IDU3SDgwN1E4MDggNTYgODExIDU0VDgxNSA1MlQ4MTkgNDlUODIzIDQ1VDgyNiA0MFQ4MjggMzRUODI5IDI3UTgyOSA3IDgwNyAtM0g4N1E2NCA2IDY0IDI3JyxcbiAgICAweDIyNjQ6ICc3OTcgNTVRNzk3IDQ1IDc5MCAzNVQ3NjcgMjVINzU5TDQzNCAxODBRMTA4IDMzNiAxMDUgMzM5UTk2IDM0OCA5NiAzNjBROTYgMzc4IDExNCAzODhRMTI2IDM5NCA0MzkgNTQ0VDc1NyA2OTVRNzYzIDY5NyA3NjYgNjk3UTc4MCA2OTcgNzg4IDY4OFQ3OTcgNjY2UTc5NyA2NTQgNzg4IDY0NVE3ODQgNjQxIDUwNyA1MDlUMTk3IDM2MUw0NjYgMjMyUTc4NSA4MCA3OTAgNzRRNzk3IDY2IDc5NyA1NVpNMTE5IC0xOTlROTYgLTE5MSA5NiAtMTY5UTk2IC0xNjAgMTAyIC0xNTJUMTE5IC0xNDBIMTI0UTEzMCAtMTQwIDE0MCAtMTQwVDE2NCAtMTQwVDE5NyAtMTQwVDIzNyAtMTQwVDI4MyAtMTM5VDMzNCAtMTM5VDM4OSAtMTM5VDQ0OCAtMTM5SDc3NVE3OTcgLTE1MyA3OTcgLTE2OVE3OTcgLTE4NyA3NzUgLTE5OUgxMTknLFxuICAgIDB4MjI2NTogJzEyNyAyNVExMTAgMjUgMTAzIDM0VDk2IDU0UTk2IDY2IDEwNSA3NVExMDkgODAgNDM5IDIzOEw2OTYgMzYxUTExMyA2MzcgMTA1IDY0NVE5NiA2NTQgOTYgNjY3UTk2IDY3OSAxMDQgNjg4VDEyOCA2OTdRMTM3IDY5NiA0NjAgNTQxVDc4OCAzODJRNzk3IDM3MyA3OTcgMzYwUTc5NyAzNDggNzg4IDMzOVE3ODUgMzM2IDQ1OSAxODBMMTM1IDI1SDEyN1pNMTE5IC0xOTlROTYgLTE5MSA5NiAtMTY5UTk2IC0xNjAgMTAyIC0xNTJUMTE5IC0xNDBIMTI0UTEzMCAtMTQwIDE0MCAtMTQwVDE2NCAtMTQwVDE5NyAtMTQwVDIzNyAtMTQwVDI4MyAtMTM5VDMzNCAtMTM5VDM4OSAtMTM5VDQ0OCAtMTM5SDc3NVE3OTcgLTE1MyA3OTcgLTE2OVE3OTcgLTE4NyA3NzUgLTE5OUgxMTknLFxuICAgIDB4MjI2QTogJzczNCAtNzRUNzM0IC04NlQ3MjcgLTEwN1Q3MDQgLTExNkg3MDJRNjk0IC0xMTYgNTg0IC01NVE0NzMgNyAzODAgNThRODcgMjE5IDczIDIyOVE2NCAyMzggNjQgMjUwUTY0IDI2MyA3MyAyNzJRODcgMjgyIDM4MCA0NDNRNjk1IDYxNiA2OTkgNjE3SDcwMFE3MTggNjE3IDcyNiA2MDdUNzM0IDU4OFE3MzQgNTY4IDcxNyA1NjBRNzA1IDU1NCA0MzUgNDA0TDE1NyAyNTBMNDM5IDk0UTcyMSAtNjEgNzI2IC02NlE3MzQgLTc0IDczNCAtODZaTTEwODUgLTc0VDEwODUgLTg2VDEwNzggLTEwN1QxMDU1IC0xMTZIMTA1M1ExMDQ1IC0xMTYgOTM1IC01NVE4MjQgNyA3MzEgNThRNDM4IDIxOSA0MjQgMjI5UTQxNSAyMzggNDE1IDI1MFE0MTUgMjYzIDQyNCAyNzJRNDM4IDI4MiA3MzEgNDQzUTEwNDYgNjE2IDEwNTAgNjE3SDEwNTFRMTA2OSA2MTcgMTA3NyA2MDdUMTA4NSA1ODhRMTA4NSA1NjggMTA2OCA1NjBRMTA1NiA1NTQgNzg2IDQwNEw1MDggMjUwTDc5MCA5NFExMDcyIC02MSAxMDc3IC02NlExMDg1IC03NCAxMDg1IC04NicsXG4gICAgMHgyMjZCOiAnNjQgNTg4UTY0IDYwMCA3MiA2MDlUOTQgNjE4SDk1UTEwMyA2MTggMjA5IDU1OVEzMjIgNDk2IDQxOSA0NDNRNzEyIDI4MiA3MjUgMjcyUTczNCAyNjMgNzM0IDI1MFE3MzQgMjM4IDcyNSAyMjlRNzE0IDIyMCA0MTUgNTVUMTEwIC0xMTNRMTAzIC0xMTYgOTUgLTExNlE3OCAtMTE2IDcxIC0xMDZUNjQgLTg2UTY0IC03NCA3MiAtNjZRNzcgLTYxIDM1OSA5NEw2NDEgMjUwTDM2MyA0MDRRMjc3IDQ1MiAxNzMgNTA5UTk1IDU1MiA4MiA1NjBUNjYgNTc2VjU3N1E2NCA1ODUgNjQgNTg4Wk00MTUgNTg4UTQxNSA2MDAgNDIzIDYwOVQ0NDUgNjE4SDQ0NlE0NTQgNjE4IDU2MCA1NTlRNjczIDQ5NiA3NzAgNDQzUTEwNjMgMjgyIDEwNzYgMjcyUTEwODUgMjYzIDEwODUgMjUwUTEwODUgMjM4IDEwNzYgMjI5UTEwNjUgMjIwIDc2NiA1NVQ0NjEgLTExM1E0NTQgLTExNiA0NDYgLTExNlE0MjkgLTExNiA0MjIgLTEwNlQ0MTUgLTg2UTQxNSAtNzQgNDIzIC02NlE0MjggLTYxIDcxMCA5NEw5OTIgMjUwTDcxNCA0MDRRNjI4IDQ1MiA1MjQgNTA5UTQ0NiA1NTIgNDMzIDU2MFQ0MTcgNTc2VjU3N1E0MTUgNTg1IDQxNSA1ODgnLFxuICAgIDB4MjI3QTogJzc5NyAtNTdRNzk3IC02NSA3OTAgLTc1VDc2NiAtODZRNzQ4IC04NiA3NDEgLTc0VDczMyAtNDNUNzE5IDhUNjgxIDcyUTY0NyAxMTIgNTg4IDE0MVQ0NzUgMTg1VDM0MyAyMDdUMjMwIDIxNlQxMzYgMjE5UTk2IDIxOSA5NiAyNTBROTYgMjgwIDEzMiAyODBIMTM2UTE5MyAyODEgMjM5IDI4M1QzNDcgMjkyVDQ1NyAzMTBUNTU2IDM0MlQ2NDMgMzkxVDcwMyA0NjBUNzM1IDU1M1E3NDEgNTg1IDc2MyA1ODVRNzgxIDU4NSA3ODkgNTc1VDc5NyA1NTZRNzk3IDU0MCA3OTIgNTEzVDc1OCA0MzRUNjgyIDM0NVE2MDUgMjg1IDQ4MSAyNTRMNDYyIDI0OVE0ODMgMjQ2IDUyNiAyMzNUNjMzIDE4NVQ3MzMgMTA0UTc2NyA2MyA3ODIgMTVUNzk3IC01NycsXG4gICAgMHgyMjdCOiAnOTYgNTU2UTk2IDU2OCAxMDQgNTc3VDEyNiA1ODZRMTUyIDU4NiAxNTggNTUzUTE2NCA1MDMgMTg4IDQ2MlQyNDcgMzk0VDMzMSAzNDVUNDI5IDMxM1Q1MzkgMjk0VDY0OSAyODRUNzU4IDI4MEg3NjBRNzk3IDI4MCA3OTcgMjUwUTc5NyAyMTkgNzYwIDIxOUg3NThRNjI3IDIxNyA1MjkgMjA0VDM0NyAxNjBUMjE2IDc3VDE1OCAtNTRRMTUyIC04NiAxMjYgLTg2UTExMCAtODYgMTAzIC03NlQ5NiAtNTdROTYgLTQxIDEwMSAtMTRUMTM1IDY1VDIxMSAxNTRRMjg4IDIxNCA0MTIgMjQ1TDQzMSAyNTBRNDEwIDI1MiAzNjcgMjY1VDI1OSAzMTRUMTYwIDM5NVExMjcgNDM1IDExMiA0ODNUOTYgNTU2JyxcbiAgICAweDIyODI6ICc5NiAyNTFROTYgMzg5IDE5MSA0ODJUNDE3IDU4NlE0MTggNTg2IDQyOCA1ODZUNDU2IDU4NlQ0OTYgNTg2VDU0NiA1ODdUNjAxIDU4N0g3NzVRNzc2IDU4NiA3NzkgNTg0VDc4NSA1ODBUNzkxIDU3NVQ3OTUgNTY4VDc5NyA1NTdRNzk3IDUzNiA3NzUgNTI3TDU5NyA1MjZRNDExIDUyNSAzOTUgNTIyUTM5MCA1MjEgMzcwIDUxNlEyODUgNDk0IDIyMiA0MjRUMTU4IDI1MVExNTggMTMxIDI0NiA1M1EzMTMgLTkgNDA4IC0yM1E0MTcgLTI0IDU5NyAtMjVINzc1UTc3NiAtMjYgNzgxIC0yOVQ3ODggLTM0VDc5NCAtNDNUNzk3IC01NlE3OTcgLTc0IDc3NSAtODVINDkzUTQwNyAtODUgMzc2IC03OVEyNTcgLTU1IDE3NyAzNVQ5NiAyNTEnLFxuICAgIDB4MjI4MzogJzk2IC01NVE5NiAtMzggMTE5IC0yNUgyOTZRNDgyIC0yNCA0OTggLTIxUTUwMyAtMjAgNTIzIC0xNVE2MDkgNyA2NzIgNzdUNzM1IDI1MVQ2NjUgNDMxVDQ4NSA1MjRRNDc2IDUyNSAyOTYgNTI2TDExOSA1MjdROTYgNTM1IDk2IDU1N1E5NiA1NzggMTE2IDU4NVExMjEgNTg3IDMwMCA1ODdRNDUxIDU4NiA0NzYgNTg1VDUyMiA1NzlRNjMyIDU1NiA3MTQgNDY4VDc5NiAyNTFRNzk2IDExMiA2OTUgMTNRNjEyIC02NSA0OTcgLTgyUTQ3MyAtODYgMjg5IC04NkwxMTkgLTg1UTk2IC03NyA5NiAtNTUnLFxuICAgIDB4MjI4NjogJzk2IDM2MVE5NiA0OTkgMTkxIDU5MlQ0MTcgNjk2UTQxOCA2OTYgNDI4IDY5NlQ0NTYgNjk2VDQ5NiA2OTZUNTQ2IDY5N1Q2MDEgNjk3SDc3NVE3NzYgNjk2IDc3OSA2OTRUNzg1IDY5MFQ3OTEgNjg1VDc5NSA2NzhUNzk3IDY2N1E3OTcgNjQ2IDc3NSA2MzdMNTk3IDYzNlE0MTEgNjM1IDM5NSA2MzJRMzkwIDYzMSAzNzAgNjI2UTI4NSA2MDQgMjIyIDUzNFQxNTggMzYxUTE1OCAyNDEgMjQ2IDE2M1EzMTMgMTAxIDQwOCA4N1E0MTcgODYgNTk3IDg1SDc3NVE3NzYgODQgNzgxIDgxVDc4OCA3NlQ3OTQgNjdUNzk3IDU0UTc5NyAzNiA3NzUgMjVINDkzUTQwNyAyNSAzNzYgMzFRMjU3IDU1IDE3NyAxNDVUOTYgMzYxWk0xNDkgLTE5OVExMjcgLTE5MSAxMjcgLTE2OVQxNDkgLTE0MEgxNTRRMTYwIC0xNDAgMTY5IC0xNDBUMTkyIC0xNDBUMjI0IC0xNDBUMjYyIC0xNDBUMzA2IC0xMzlUMzU0IC0xMzlUNDA3IC0xMzlUNDYzIC0xMzlINzc1UTc3NiAtMTQwIDc3OSAtMTQyVDc4NSAtMTQ2VDc5MSAtMTUxVDc5NSAtMTU4VDc5NyAtMTY5UTc5NyAtMTkwIDc3NSAtMTk5SDE0OScsXG4gICAgMHgyMjg3OiAnOTYgNTVROTYgNzIgMTE5IDg1SDI5NlE0ODIgODYgNDk4IDg5UTUwMyA5MCA1MjMgOTVRNjA5IDExNyA2NzIgMTg3VDczNSAzNjFUNjY1IDU0MVQ0ODUgNjM0UTQ3NiA2MzUgMjk2IDYzNkwxMTkgNjM3UTk2IDY0NSA5NiA2NjdROTYgNjg4IDExNiA2OTVRMTIxIDY5NyAzMDAgNjk3UTQ1MSA2OTYgNDc2IDY5NVQ1MjIgNjg5UTYzMiA2NjYgNzE0IDU3OFQ3OTYgMzYxUTc5NiAyMjIgNjk1IDEyM1E2MTIgNDUgNDk3IDI4UTQ3MyAyNCAyODkgMjRMMTE5IDI1UTk2IDMzIDk2IDU1Wk0xMTkgLTE5OVE5NiAtMTkwIDk2IC0xNjlUMTE2IC0xNDFRMTIxIC0xMzkgNDMzIC0xMzlINzQ1UTc2NiAtMTUyIDc2NiAtMTcwUTc2NiAtMTkwIDc0NSAtMTk5SDExOScsXG4gICAgMHgyMjhFOiAnNjcyIDYwM1E2OTMgNjAzIDcwMiA1NzlWMzc4UTcwMiAzNDggNzAyIDMwMFE3MDEgMTY5IDY5NyAxNTVRNjk2IDE1MyA2OTYgMTUyUTY3NiA3OCA1OTMgMzFUMzgzIC0xNlEyNjUgLTE2IDE3OSAyOFQ3MCAxNTJRNzAgMTUzIDY5IDE1NVE2NSAxNzAgNjQgMjc4UTY0IDI4NSA2NCAzMDBRNjQgMzQ4IDY0IDM3OFE2NCA1NzkgNjUgNTgzUTc0IDYwNCA5NCA2MDRUMTIzIDU4NFExMjUgNTc5IDEyNSAzODZRMTI1IDE5MCAxMjYgMTg0UTEzNSAxMTUgMjEwIDgwVDM4MyA0NFE0MjYgNDQgNDY3IDUxVDU0NiA3NVQ2MDkgMTE5VDY0MCAxODRRNjQxIDE5MCA2NDEgMzg2UTY0MSA1NzkgNjQzIDU4NFE2NTAgNjAzIDY3MiA2MDNaTTM1MyA0MTJRMzUzIDQyMCAzNTMgNDM1VDM1MiA0NTZRMzUyIDQ4MyAzNTggNDk1VDM4NSA1MDdRNDAzIDUwNiA0MDkgNDk0VDQxNSA0NTdRNDE1IDQ1MSA0MTUgNDM2VDQxNCA0MTFWMzQxSDU1OFE1NzkgMzI5IDU3OSAzMTFRNTc5IDI4OSA1NTggMjgxTDQ4NiAyODBINDE0VjEzNlE0MDAgMTE0IDM4NCAxMTRRMzYzIDExNCAzNTQgMTM2TDM1MyAyMDhWMjgwSDI4MUwyMDkgMjgxUTE4NyAyODkgMTg3IDMxMFExODcgMzI4IDIwOSAzNDFIMzUzVjQxMicsXG4gICAgMHgyMjkxOiAnMTI3IDI1UTExMSAyOSAxMDQgNDlWMzYyTDEwNSA2NzVRMTE0IDY5MyAxMjcgNjk2SDEzMlExMzggNjk2IDE0OSA2OTZUMTc0IDY5NlQyMDggNjk2VDI0OSA2OTZUMjk3IDY5N1QzNTAgNjk3VDQwNyA2OTdUNDY4IDY5N0g4MDZRODI4IDY4MyA4MjggNjY2UTgyOCA2NDYgODA2IDYzN0w0ODUgNjM2SDE2NVY4NUg4MDVRODA2IDg0IDgwOSA4MlQ4MTMgODBUODE3IDc3VDgyMSA3M1Q4MjQgNjhUODI2IDYyVDgyNyA1NVE4MjcgMzQgODA2IDI1SDEyN1pNOTYgLTE5MFQ5NiAtMTY5VDExOSAtMTQwSDEyNVExMzEgLTE0MCAxNDEgLTE0MFQxNjcgLTE0MFQyMDEgLTE0MFQyNDIgLTE0MFQyOTAgLTEzOVQzNDQgLTEzOVQ0MDIgLTEzOVQ0NjMgLTEzOUg4MDVRODA2IC0xNDAgODA5IC0xNDJUODEzIC0xNDRUODE3IC0xNDdUODIxIC0xNTFUODI0IC0xNTZUODI2IC0xNjJUODI3IC0xNjlRODI3IC0xOTAgODA2IC0xOTlIMTE5UTk2IC0xOTAgOTYgLTE2OScsXG4gICAgMHgyMjkyOiAnNjYgNTVRNjYgNzQgODkgODVINzI4VjYzNkg0MDhMODggNjM3UTY2IDY0NSA2NiA2NjdUODggNjk2SDk0UTk5IDY5NiAxMTAgNjk2VDEzNSA2OTZUMTY5IDY5NlQyMTAgNjk2VDI1OCA2OTdUMzExIDY5N1QzNjggNjk3VDQyOSA2OTdINzY3UTc4NiA2ODQgNzg5IDY3MlY0OVE3ODIgMzEgNzY3IDI1SDg4UTY2IDMyIDY2IDU1Wk04OCAtMTk5UTY2IC0xOTEgNjYgLTE2OVE2NiAtMTQ4IDg3IC0xNDBROTEgLTEzOSA0MzMgLTEzOUg3NzVRNzc2IC0xNDAgNzc5IC0xNDJUNzgzIC0xNDRUNzg3IC0xNDdUNzkxIC0xNTFUNzk0IC0xNTZUNzk2IC0xNjJUNzk3IC0xNjlRNzk3IC0xODkgNzc1IC0xOTlIODgnLFxuICAgIDB4MjI5MzogJzEzMSAyNVExMjEgMSAxMDAgMVE4MSAxIDcxIDIzTDcwIDMwMVE3MCA1NzkgNzIgNTgzUTc3IDU5OCA5MCA2MDJROTUgNjA0IDM4NSA2MDRINjc0UTY5MyA1OTEgNjk2IDU3OVYyNVE2ODYgMSA2NjUgMVE2NDYgMSA2MzYgMjNMNjM1IDI4M1Y1NDNIMTMxVjI1JyxcbiAgICAweDIyOTQ6ICc2OTYgMjVRNjg5IDcgNjc0IDFIOTNRNzcgNyA3MSAyM0w3MCAzMDFRNzAgNTc5IDcyIDU4M1E4MCA2MDQgMTAwIDYwNFQxMzEgNTc5VjYxSDYzNVY1NzlRNjQ0IDYwMyA2NjYgNjAzUTY4NyA2MDMgNjk2IDU3OVYyNScsXG4gICAgMHgyMjk1OiAnNjQgMjUwUTY0IDM1MCA5OCA0MjZUMTg5IDU0NlQzMDcgNjEwVDQzNCA2MzJRNDg1IDYzMiA0OTYgNjMxUTU3MiA2MjEgNjM1IDU5MlE2NjkgNTc1IDY5OSA1NTBUNzYwIDQ4NFQ4MDkgMzg0VDgyOCAyNTBRODI4IDc3IDcyNSAtMjdUNDQ2IC0xMzJRMjcyIC0xMzIgMTY4IC0yN1Q2NCAyNTBaTTQxNiAyODJWNTcwSDQxNFEzNDEgNTY0IDI4NSA1MzVUMjAyIDQ3NVQxNTYgMzk3VDEzNCAzMzJUMTI4IDI4N1ExMjcgMjgzIDEyNyAyODJINDE2Wk03NjUgMjg4UTc2MCAzNDQgNzQzIDM4OVQ3MDAgNDYyVDY0NyA1MTJUNTg5IDU0M1Q1MzggNTYwVDQ5OSA1NjhMNDgzIDU3MEg0NzhWMjgySDc2Nkw3NjUgMjg4Wk00MTYgLTY5VjIyMEgxMjdRMTMwIDE5NSAxMzEgMTg5VDEzOCAxNTVUMTUwIDExNVQxNjggNzZUMTk2IDM1VDIzNCAwVDI4NiAtMzVRMzM3IC02MSA0MTAgLTY5SDQxNlpNNDgzIC02OVE1NTQgLTYwIDYwNyAtMzNUNjg3IDIxVDczMyA5M1Q3NTYgMTU2VDc2NCAyMDlRNzY2IDIxNyA3NjYgMjIwSDQ3OFYtNjlINDgzJyxcbiAgICAweDIyOTY6ICc2NCAyNTBRNjQgMzUwIDk4IDQyNlQxODkgNTQ2VDMwNyA2MTBUNDM0IDYzMlE0ODUgNjMyIDQ5NiA2MzFRNTcyIDYyMSA2MzUgNTkyUTY2OSA1NzUgNjk5IDU1MFQ3NjAgNDg0VDgwOSAzODRUODI4IDI1MFE4MjggNzcgNzI1IC0yN1Q0NDYgLTEzMlEyNzIgLTEzMiAxNjggLTI3VDY0IDI1MFpNNzY1IDI4OFE3NTMgNDI0IDY2NiA0OTdUNDQ2IDU3MVQyMjcgNDk4VDEyOCAyODhMMTI3IDI4Mkg3NjZMNzY1IDI4OFpNNDQ2IC03MFE1NzggLTcwIDY2NiA0VDc2NSAyMTNMNzY2IDIyMEgxMjdRMTMwIDE5NSAxMzEgMTg5VDEzOCAxNTVUMTUwIDExNVQxNjggNzZUMTk2IDM1VDIzNCAwVDI4NiAtMzVRMzUzIC03MCA0NDYgLTcwJyxcbiAgICAweDIyOTc6ICc2NCAyNTBRNjQgMzUwIDk4IDQyNlQxODkgNTQ2VDMwNyA2MTBUNDM0IDYzMlE0ODUgNjMyIDQ5NiA2MzFRNTcyIDYyMSA2MzUgNTkyUTY2OSA1NzUgNjk5IDU1MFQ3NjAgNDg0VDgwOSAzODRUODI4IDI1MFE4MjggNzcgNzI1IC0yN1Q0NDYgLTEzMlEyNzIgLTEzMiAxNjggLTI3VDY0IDI1MFpNNjQ3IDUxMlE1NjcgNTcxIDQ0NyA1NzFRMzQwIDU3MSAyNjIgNTIzUTIzNyA1MDcgMjM3IDUwNUwzNDIgMzk5TDQ0NyAyOTVMNjU3IDUwNUw2NDcgNTEyWk0yOTggMzU2TDE5MiA0NjFRMTgwIDQ0NSAxNjEgNDExUTEyNiAzNDEgMTI2IDI1MVExMjYgMTI4IDE5MiA0MEw0MDMgMjUwTDI5OCAzNTZaTTcwMSA0MVE3MDQgNDEgNzE5IDYzVDc1MCAxMzhUNzY3IDI1MFE3NjcgMzEwIDc1MCAzNjJUNzE5IDQzN1Q3MDEgNDYwTDQ5MSAyNTBMNzAxIDQxWk0yMzggLTVRMjM4IC04IDI2MSAtMjJUMzM2IC01M1Q0NDcgLTcwUTU2NyAtNzAgNjQ3IC0xMUw2NTcgLTRMNDQ3IDIwNkwzNDIgMTAxUTIzOCAtMSAyMzggLTUnLFxuICAgIDB4MjI5ODogJzY0IDI1MFE2NCAzNTAgOTggNDI2VDE4OSA1NDZUMzA3IDYxMFQ0MzQgNjMyUTQ4NSA2MzIgNDk2IDYzMVE1NzIgNjIxIDYzNSA1OTJRNjY5IDU3NSA2OTkgNTUwVDc2MCA0ODRUODA5IDM4NFQ4MjggMjUwUTgyOCA3NyA3MjUgLTI3VDQ0NiAtMTMyUTI3MiAtMTMyIDE2OCAtMjdUNjQgMjUwWk02NTcgNTA1UTY1NiA1MDYgNjUwIDUxMFQ2MzggNTE4VDYyMyA1MjdUNjA0IDUzN1Q1ODEgNTQ3VDU1MyA1NTZUNTIyIDU2M1Q0ODYgNTY5VDQ0NiA1NzFRMzA1IDU3MSAyMTYgNDg3VDEyNiAyNTFRMTI2IDEyOCAxOTIgNDBMNjU3IDUwNVpNNDQ3IC03MFE1OTEgLTcwIDY3OSAxNlQ3NjcgMjUwUTc2NyAzMDggNzUxIDM2MFQ3MTkgNDM2VDcwMSA0NjBMNDY5IDIyOFEyMzggLTEgMjM4IC01UTIzOCAtOCAyNjEgLTIyVDMzNiAtNTNUNDQ3IC03MCcsXG4gICAgMHgyMjk5OiAnNjQgMjUwUTY0IDM1MCA5OCA0MjZUMTg5IDU0NlQzMDcgNjEwVDQzNCA2MzJRNDg1IDYzMiA0OTYgNjMxUTU3MiA2MjEgNjM1IDU5MlE2NjkgNTc1IDY5OSA1NTBUNzYwIDQ4NFQ4MDkgMzg0VDgyOCAyNTBRODI4IDc3IDcyNSAtMjdUNDQ2IC0xMzJRMjcyIC0xMzIgMTY4IC0yN1Q2NCAyNTBaTTc2NyAyNTJRNzY3IDM5NSA2ODEgNDgzVDQ0NiA1NzFRMzAzIDU3MSAyMTUgNDg2VDEyNiAyNDlRMTI2IDEwNyAyMTIgMTlUNDQ2IC03MFE1OTYgLTcwIDY4MSAxOFQ3NjcgMjUyWk0zMzUgMjUxUTMzNSAyOTcgMzY4IDMyOVQ0NDEgMzYxUTQ5OCAzNjEgNTI3IDMyN1Q1NTcgMjUwUTU1NyAyMDIgNTI1IDE3MVQ0NDYgMTQwUTM5NyAxNDAgMzY2IDE3M1QzMzUgMjUxJyxcbiAgICAweDIyQTI6ICc2NSA2NzJRNzYgNjkzIDkxIDY5M1ExMTUgNjkzIDEyMyA2NzRRMTI1IDY2OSAxMjUgNTIzVjM3OEg2MTVRNjE4IDM3NiA2MjIgMzczVDYyOCAzNjlUNjMyIDM2NlQ2MzUgMzYyVDYzNiAzNTZUNjM3IDM0N1E2MzcgMzI4IDYxOSAzMTlRNjE1IDMxNyAzNzAgMzE3SDEyNVYxNzFRMTI1IDI1IDEyMyAyMFExMTQgMSA5NCAxUTczIDEgNjUgMjNWNjcyJyxcbiAgICAweDIyQTM6ICc2NCAzMjdUNjQgMzQ3VDg5IDM3OEg1NzdWNTI1TDU3OCA2NzJRNTkyIDY5MyA2MDQgNjkzUTYyOSA2OTMgNjM4IDY2OVYyNVE2MjggMSA2MDcgMVE1ODggMSA1NzggMjNMNTc3IDE3MFYzMTdIODhRNjQgMzI3IDY0IDM0NycsXG4gICAgMHgyMkE0OiAnNjQgNjY0UTY0IDY3NSA3MSA2ODNUODcgNjkzSDkzUTk5IDY5MyAxMTAgNjkzVDEzNyA2OTNUMTczIDY5M1QyMTcgNjk0VDI2NyA2OTRUMzIzIDY5NFQzODMgNjk0VDQ0OCA2OTRIODA3UTgwOCA2OTMgODExIDY5MVQ4MTcgNjg3VDgyMyA2ODJUODI3IDY3NVQ4MjkgNjY0UTgyOSA2NDMgODA3IDYzNEw2NDIgNjMzSDQ3N1YyNVE0NjcgMSA0NDYgMVE0MjcgMSA0MTcgMjNMNDE2IDMyOFY2MzNIMjUxTDg3IDYzNFE2NCA2NDMgNjQgNjY0JyxcbiAgICAweDIyQTU6ICc2NSAzMVE2NSAzOCA2NiA0MVQ3MSA1MFQ4NyA2MUg0MTZWMzY2TDQxNyA2NzJRNDMxIDY5MyA0NDMgNjkzUTQ2OCA2OTMgNDc3IDY2OVY2MUg4MDdRODA4IDYwIDgxMSA1OFQ4MTcgNTRUODIzIDQ5VDgyNyA0MlQ4MjkgMzFRODI5IDEwIDgwNyAxSDg3UTY1IDEwIDY1IDMxJyxcbiAgICAweDIyQTg6ICcxNjAgLTI0OVExMzggLTI0OSAxMjkgLTIyNVYyNTBRMTI5IDcyNSAxMzEgNzI5UTEzOSA3NTAgMTU5IDc1MFQxOTAgNzI1VjM5MlEyMTkgMzkzIDUzNyAzOTNIODk2UTg5NyAzOTIgOTAwIDM5MFQ5MDYgMzg2VDkxMiAzODFUOTE2IDM3NFQ5MTggMzYzUTkxOCAzNDUgODk2IDMzM0gxOTBWMTY5SDg5Nkw5MDAgMTY2UTkwNSAxNjMgOTA3IDE2MlQ5MTIgMTU3VDkxNiAxNDlUOTE4IDEzOVE5MTggMTE4IDg5NiAxMDlIMTkwVi0yMjVRMTgxIC0yNDkgMTYwIC0yNDknLFxuICAgIDB4MjJDNDogJzI4MCA1MjJRMjgxIDUyMyAyODUgNTIzSDI4OVEzMDEgNTIzIDM2NiA0NTdRNDA0IDQyMCA0MzEgMzkzUTUzMyAyOTEgNTQ2IDI3N1Q1NjAgMjUwUTU2MCAyMzkgNTQ4IDIyNlQ0MzEgMTA4UTMxMyAtMTAgMzA0IC0xNlEyOTcgLTIxIDI4NyAtMjFRMjc4IC0yMSAyNzUgLTE5UTI3MCAtMTcgMTQ2IDEwN1QxOCAyMzhRMTUgMjQyIDE1IDI1MVExNSAyNTggMTggMjYzUTIwIDI2OCAxNDUgMzkyVDI3NCA1MTlMMjgwIDUyMlpNMzg4IDM1MEwyODggNDQ5TDE4OCAzNTBMODkgMjUwTDI4OCA1Mkw0ODcgMjUwTDM4OCAzNTAnLFxuICAgIDB4MjJDNTogJzc0IDI1MVE3NCAyODYgOTkgMzExVDE1NiAzMzZRMjAwIDMzNiAyMjIgMzA4VDI0NSAyNTBRMjQ1IDIyMSAyMjQgMTk0VDE2MCAxNjZUOTYgMTkzVDc0IDI1MScsXG4gICAgMHgyMkM2OiAnMjcwIDQ5MVEyNzQgNTAyIDI4NyA1MDJRMjk4IDUwMiAzMDQgNDkxUTMwNCA0ODYgMzIzIDM5NlQzNDIgMzAzTDQzOCAzMTRRNTIwIDMyNCA1MzQgMzI0UTU0MCAzMjQgNTQ1IDMyMFQ1NTAgMzA3UTU1MCAyOTggNTM5IDI5MFQ0NTYgMjQzUTM3NyAxOTggMzc3IDE5N0w0MTYgMTExUTQ1NiAyNiA0NTYgMjJRNDU3IDIxIDQ1NyAxOFE0NTcgMTEgNDUxIDZUNDM4IDBINDM3UTQzMiAwIDQxNSAxNlEzODcgNDIgMzU4IDY4TDI4NyAxMzNMMjE2IDY4UTE5MyA0NyAxNjcgMjNRMTQyIDAgMTM2IDBRMTI5IDAgMTIzIDVUMTE3IDE4UTExNyAyMSAxMTggMjJRMTE4IDI2IDE1OCAxMTFMMTk3IDE5N1ExOTcgMTk4IDE1NiAyMjFUNzIgMjY5VDI2IDI5OFEyNCAzMDQgMjQgMzA3UTI0IDMxNSAyOSAzMTlUNDAgMzI0UTUzIDMyNCAxMzYgMzE0TDIzMiAzMDNRMjMyIDMwNiAyNTEgMzk2VDI3MCA0OTEnLFxuICAgIDB4MjJDODogJzkwNiAyNTFROTA2IDQ1NiA5MDUgNDU2UTU1MCAyNTIgNTQ5IDI1MVE1NDkgMjUwIDcyNiAxNDhUOTA1IDQ1VDkwNiAyNTFaTTk2NyAtMTRROTU4IC0zOCA5MzkgLTM4SDkzN1E5MjggLTM4IDkyMyAtMzVROTE5IC0zNCA3NDggNjRUNTAwIDIwOUw3MSAtMzhRNjkgLTM5IDYzIC0zOVE0MiAtMzkgMzMgLTE2VjUxOFE0NSA1NDAgNjMgNTQwSDY1UTcyIDU0MCAxNzQgNDgxUTI0NyA0MzkgMzAyIDQwN0w1MDAgMjkyUTU3OCAzMzkgNzUwIDQzOFQ5MjkgNTM5SDkzM1E5NTggNTM5IDk2NyA1MTVWLTE0Wk00NDkgMjUxTDk0IDQ1NlE5MyA0NTYgOTMgMjUxUTkzIDQ1IDk0IDQ1TDEwNiA1MlExMTkgNTkgMTM5IDcxVDE4NiA5OFQyNDIgMTMxVDMwMSAxNjVUMzU3IDE5N1Q0MDQgMjI1VDQzNyAyNDRMNDQ5IDI1MScsXG4gICAgMHgyMkVFOiAnNzQgNTVRNzQgOTEgOTkgMTE2VDE1NiAxNDFRMjAwIDE0MSAyMjIgMTEzVDI0NSA1NVEyNDUgMjYgMjI0IC0xVDE2MCAtMjlRMTE4IC0yOSA5NiAtM1Q3NCA1NVpNNzQgNDY1UTc0IDUwMSA5OSA1MjZUMTU2IDU1MVEyMDAgNTUxIDIyMiA1MjNUMjQ1IDQ2NVEyNDUgNDM2IDIyNCA0MDlUMTYwIDM4MVExMTggMzgxIDk2IDQwN1Q3NCA0NjVaTTc0IDg2NVE3NCA5MDEgOTkgOTI2VDE1NiA5NTFRMjAwIDk1MSAyMjIgOTIzVDI0NSA4NjVRMjQ1IDgzNiAyMjQgODA5VDE2MCA3ODFRMTE4IDc4MSA5NiA4MDdUNzQgODY1JyxcbiAgICAweDIyRUY6ICc3NCAyNTFRNzQgMjg2IDk5IDMxMVQxNTYgMzM2UTIwMCAzMzYgMjIyIDMwOFQyNDUgMjUwUTI0NSAyMjEgMjI0IDE5NFQxNjAgMTY2VDk2IDE5M1Q3NCAyNTFaTTU2MiAyNTFRNTYyIDI4NiA1ODcgMzExVDY0NCAzMzZRNjg4IDMzNiA3MTAgMzA4VDczMyAyNTBRNzMzIDIyMSA3MTIgMTk0VDY0OCAxNjZUNTg0IDE5M1Q1NjIgMjUxWk0xMDUwIDI1MVExMDUwIDI4NiAxMDc1IDMxMVQxMTMyIDMzNlExMTc2IDMzNiAxMTk4IDMwOFQxMjIxIDI1MFExMjIxIDIyMSAxMjAwIDE5NFQxMTM2IDE2NlQxMDcyIDE5M1QxMDUwIDI1MScsXG4gICAgMHgyMkYxOiAnMTI5IDc4NVExMjkgODIxIDE1NCA4NDZUMjExIDg3MVEyNTUgODcxIDI3NyA4NDNUMzAwIDc4NVEzMDAgNzU2IDI3OSA3MjlUMjE1IDcwMVExNzMgNzAxIDE1MSA3MjdUMTI5IDc4NVpNNTc2IDQ4NVE1NzYgNTIxIDYwMSA1NDZUNjU4IDU3MVE3MDIgNTcxIDcyNCA1NDNUNzQ3IDQ4NVE3NDcgNDU2IDcyNiA0MjlUNjYyIDQwMVE2MjAgNDAxIDU5OCA0MjdUNTc2IDQ4NVpNMTAyMyAxODVRMTAyMyAyMjEgMTA0OCAyNDZUMTEwNSAyNzFRMTE0OSAyNzEgMTE3MSAyNDNUMTE5NCAxODVRMTE5NCAxNTYgMTE3MyAxMjlUMTEwOSAxMDFRMTA2NyAxMDEgMTA0NSAxMjdUMTAyMyAxODUnLFxuICAgIDB4MjMwODogJzE5NCA3MjhRMTk5IDc0MyAyMTYgNzQ5SDIyMFEyMjMgNzQ5IDIyOSA3NDlUMjQ1IDc0OVQyNjUgNzUwVDI4OSA3NTBUMzE2IDc1MFQzNDUgNzUwSDQ3MVE0NzIgNzQ5IDQ3NyA3NDZUNDg0IDc0MVQ0OTAgNzMyVDQ5MyA3MTlRNDkzIDcwMSA0NzEgNjkwTDM2MiA2ODlIMjU0Vi0yMjRRMjQ0IC0yNDggMjIzIC0yNDhUMTk0IC0yMjZWNzI4JyxcbiAgICAweDIzMDk6ICczMTcgLTIyNFEzMDcgLTI0OCAyODYgLTI0OFEyNjcgLTI0OCAyNTcgLTIyNkwyNTYgMjMxVjY4OUgxNDhMNDAgNjkwUTE3IDY5OCAxNyA3MjBRMTcgNzQxIDM3IDc0OFE0MiA3NTAgMTY5IDc1MEgyOTVRMzE0IDczNyAzMTcgNzI1Vi0yMjQnLFxuICAgIDB4MjMwQTogJzE5NCA3MjhRMjA0IDc0OSAyMjAgNzQ5UTI0NSA3NDkgMjU0IDcyNVYtMTg4SDQ3MVE0NzIgLTE4OSA0NzcgLTE5MlQ0ODQgLTE5N1Q0OTAgLTIwNlQ0OTMgLTIxOVE0OTMgLTIzNyA0NzEgLTI0OEgyMTZRMjAwIC0yNDIgMTk0IC0yMjZWNzI4JyxcbiAgICAweDIzMEI6ICcxNyAtMjE5UTE3IC0yMDEgNDAgLTE4OEgyNTZWMjcwTDI1NyA3MjhRMjcxIDc0OSAyODMgNzQ5UTMwOCA3NDkgMzE3IDcyNVYtMjI0UTMxMCAtMjQyIDI5NSAtMjQ4SDQwTDM4IC0yNDdRMzUgLTI0NiAzNCAtMjQ1VDMwIC0yNDNUMjUgLTIzOVQyMSAtMjM0VDE4IC0yMjdUMTcgLTIxOScsXG4gICAgMHgyMzIyOiAnOTUgMTA4UTg1IDEwOCA3NSAxMTRUNjUgMTM5UTY1IDE1OSAxMjkgMjI3UTMxNiA0MDUgNTczIDQwNVE2NTQgNDA1IDcyOSAzODdUODU0IDM0NFQ5NTAgMjg2VDEwMTUgMjMyVDEwNTMgMTkxUTEwNzggMTYwIDEwODMgMTUyUTEwODQgMTQ4IDEwODQgMTM5UTEwODQgMTIxIDEwNzQgMTE1VDEwNTQgMTA4UTEwNDAgMTA4IDEwMjkgMTIyVDk5MCAxNjdUOTIyIDIyM1E4MTkgMjkxIDY4MCAzMDlRNjQxIDMxNSA1NzUgMzE1UTUwOCAzMTUgNDY5IDMwOVEzMDMgMjg4IDE5NyAyMDFRMTY4IDE3OSAxNDggMTU1VDExOCAxMTlUOTUgMTA4JyxcbiAgICAweDIzMjM6ICcxMDU0IDM5MlExMDY3IDM5MiAxMDc2IDM4NFQxMDg1IDM2MlExMDg1IDM1MSAxMDc5IDM0MlQxMDUwIDMxMFE5ODMgMjQzIDkwMSAyMDBRNzUzIDEyNiA1NzUgMTI2UTQ5NCAxMjYgNDIwIDE0MVQyOTggMTc2VDIwNSAyMjVUMTQwIDI3MlQxMDAgMzEwUTY0IDM0NiA2NCAzNjJRNjQgMzcwIDY3IDM3NFE3NSAzOTMgOTMgMzkzUTEwNyAzOTMgMTI0IDM3NVEyNzIgMjE0IDU3NSAyMTRRODc3IDIxNCAxMDI1IDM3NVExMDM5IDM5MiAxMDU0IDM5MicsXG4gICAgMHgyMzI5OiAnMTI3IDI0M1YyNTlMMjIzIDQ5MVEyNTEgNTU3IDI4NiA2NDJRMzE4IDcxOSAzMjQgNzMyVDM0MCA3NDhIMzQxUTM0NyA3NTAgMzUxIDc1MFEzNjUgNzUwIDM3MyA3NDBUMzgyIDcyM1EzODIgNzEzIDI4NiA0ODJMMTkwIDI1MVExOTAgMjQ5IDI4NiAyMFQzODIgLTIxOVEzODIgLTIzMiAzNzMgLTI0MFQzNTIgLTI0OVEzMzIgLTI0OSAzMjMgLTIyOVEzMjAgLTIyMCAyMjMgMTBMMTI3IDI0MycsXG4gICAgMHgyMzJBOiAnNjQgNzIwUTY0IDczMiA3MiA3NDFUOTQgNzUwUTEwNiA3NTAgMTEzIDc0M1ExMTggNzQxIDEyMiA3MzJMMzE5IDI1OVYyNDNMMTIyIC0yMzFRMTEyIC0yNDkgOTUgLTI0OVE4MyAtMjQ5IDc0IC0yNDBUNjQgLTIxOFE2NCAtMjEwIDE2MCAyMEwyNTYgMjUxTDE2MCA0ODJRNjQgNzE1IDY0IDcyMCcsXG4gICAgMHgyNUIzOiAnOTEgMVE2OSAxMCA2OSAzMVE2OSAzOSA4MSA1OVQxNjggMTk3UTMyNyA0NDcgNDg1IDY5N1E0OTMgNzExIDUxMCA3MTFRNTIzIDcxMSA1MzIgNzAyUTUzNiA2OTcgNzQzIDM3MVQ5NTEgNDFROTUzIDM1IDk1MyAzMVE5NTMgMTIgOTMxIDFIOTFaTTY5MCAzNDBRNjUxIDQwMSA2MDQgNDc2VDUzNCA1ODZMNTEyIDYyMVE1MTEgNjIyIDUwNyA2MTZRNDk4IDYwNCAzMzIgMzQyTDE1NCA2MkwzMzMgNjFINjg5TDg2NyA2Mkw2OTAgMzQwJyxcbiAgICAweDI1QjU6ICc5MSAxUTY5IDEwIDY5IDMxUTY5IDM5IDgxIDU5VDE2OCAxOTdRMzI3IDQ0NyA0ODUgNjk3UTQ5MyA3MTEgNTEwIDcxMVE1MjMgNzExIDUzMiA3MDJRNTM2IDY5NyA3NDMgMzcxVDk1MSA0MVE5NTMgMzUgOTUzIDMxUTk1MyAxMiA5MzEgMUg5MVpNNjkwIDM0MFE2NTEgNDAxIDYwNCA0NzZUNTM0IDU4Nkw1MTIgNjIxUTUxMSA2MjIgNTA3IDYxNlE0OTggNjA0IDMzMiAzNDJMMTU0IDYyTDMzMyA2MUg2ODlMODY3IDYyTDY5MCAzNDAnLFxuICAgIDB4MjVCOTogJzMzIDUxOFE0NSA1NDAgNjMgNTQwSDY1UTcyIDU0MCAxNzQgNDgxUTI0NyA0MzkgMzAyIDQwN1E1MjkgMjc2IDUzMyAyNzJRNTQyIDI2MyA1NDIgMjUwUTU0MiAyMzggNTMzIDIyOVE1MjggMjI0IDMwNCA5NVQ3MSAtMzhRNjkgLTM5IDYzIC0zOVE0MiAtMzkgMzMgLTE2VjUxOFpNNDQ5IDI1MUw5NCA0NTZROTMgNDU2IDkzIDI1MVE5MyA0NSA5NCA0NUwxMDYgNTJRMTE5IDU5IDEzOSA3MVQxODYgOThUMjQyIDEzMVQzMDEgMTY1VDM1NyAxOTdUNDA0IDIyNVQ0MzcgMjQ0TDQ0OSAyNTEnLFxuICAgIDB4MjVCRDogJzY4IDQ3MFE2OCA0ODEgNzUgNDg5VDkxIDQ5OUg5M1EyOTYgNTAwIDUxMiA1MDBIOTMxUTkzMiA0OTkgOTM3IDQ5NlQ5NDUgNDkwVDk1MCA0ODJUOTUzIDQ2OVE5NTMgNDY1IDk1MSA0NTlROTUwIDQ1NSA3NDMgMTI5VDUzMiAtMjAyUTUyNCAtMjEwIDUxMSAtMjEwUTQ5NyAtMjEwIDQ4OSAtMjAyUTQ4NiAtMTk5IDI4MSAxMjRUNzEgNDU2UTY4IDQ2MiA2OCA0NzBaTTE1NCA0MzlRMTU1IDQzNyAzMzIgMTU4VDUxMCAtMTIyUTUxMCAtMTIzIDUzMyAtODdUNjAwIDE4VDY4OCAxNTdRODY2IDQzNyA4NjYgNDM4UTg2NyA0MzkgODA1IDQzOVQ1MTEgNDM5SDE1NCcsXG4gICAgMHgyNUJGOiAnNjggNDcwUTY4IDQ4MSA3NSA0ODlUOTEgNDk5SDkzUTI5NiA1MDAgNTEyIDUwMEg5MzFROTMyIDQ5OSA5MzcgNDk2VDk0NSA0OTBUOTUwIDQ4MlQ5NTMgNDY5UTk1MyA0NjUgOTUxIDQ1OVE5NTAgNDU1IDc0MyAxMjlUNTMyIC0yMDJRNTI0IC0yMTAgNTExIC0yMTBRNDk3IC0yMTAgNDg5IC0yMDJRNDg2IC0xOTkgMjgxIDEyNFQ3MSA0NTZRNjggNDYyIDY4IDQ3MFpNMTU0IDQzOVExNTUgNDM3IDMzMiAxNThUNTEwIC0xMjJRNTEwIC0xMjMgNTMzIC04N1Q2MDAgMThUNjg4IDE1N1E4NjYgNDM3IDg2NiA0MzhRODY3IDQzOSA4MDUgNDM5VDUxMSA0MzlIMTU0JyxcbiAgICAweDI1QzM6ICc1NDIgLTE0UTUzMyAtMzggNTE0IC0zOEg1MTJRNTAzIC0zOCA0OTggLTM1UTQ5NCAtMzQgMjcwIDk1VDQyIDIyOVEzMyAyMzggMzMgMjUxUTMzIDI1OSAzNSAyNjRRMzYgMjY1IDM4IDI2OFQ0MiAyNzJRNDggMjc4IDI3MSA0MDdUNTA0IDUzOUg1MDhRNTMzIDUzOSA1NDIgNTE1Vi0xNFpNNDgxIDI1MVE0ODEgNDU2IDQ4MCA0NTZRMTI1IDI1MiAxMjQgMjUxUTEyNCAyNTAgMzAxIDE0OFQ0ODAgNDVUNDgxIDI1MScsXG4gICAgMHgyNUVGOiAnNjUgNDJUNjUgMjUwVDIwNCA1ODRUNTc0IDcxMVE3OTUgNzExIDkzNSA1OTRROTU1IDU3NyA5NzQgNTU1VDEwMjIgNDkwVDEwNjcgMzg1VDEwODQgMjUwUTEwODQgNDIgOTQ1IC04NFQ1NzQgLTIxMVQyMDQgLTg1Wk0xMDI0IDI1MFExMDI0IDQzMSA5MDMgNTQwVDU3OCA2NTBRNDgyIDY1MCA0MDQgNjI3VDI3NCA1NjVUMTg5IDQ3NFQxNDAgMzY2VDEyNSAyNTBRMTI1IDEyMyAxODYgMzFUMzQ3IC0xMDZUNTczIC0xNTBRNzcyIC0xNTAgODk4IC00NVQxMDI0IDI1MCcsXG4gICAgMHgyNjYwOiAnNjc1IC0xOFE1MzYgLTE4IDUyNyA2MlY3MEg0NzdWNTVRNDc5IDE0IDQ4NyAtMjFUNTAyIC03NVQ1MDkgLTEwMVE1MDkgLTEyMCA0OTEgLTEyN1E0ODcgLTEyOSA0NDcgLTEyOVE0NDYgLTEyOSA0MzkgLTEyOVQ0MjcgLTEzMFEzODQgLTEzMCAzODQgLTEwMVEzODQgLTk1IDM5MSAtNzZUNDA2IC0yMVQ0MTYgNTVWNzBIMzY2UTM2NCA1MiAzNjAgNDBUMzQyIDE0VDMwMCAtOFQyMzAgLTE3SDIxOFExMTAgLTE3IDc1IDExN1E2NCAxNjMgNjQgMjA5UTY0IDI5MCAxMTYgMzU3VDI2MSA0OTVRMzYzIDU3NCA0MTQgNjkwUTQyNSA3MTkgNDQ1IDcxOVE0NjcgNzE5IDQ3OCA2OTNRNTA3IDYyNyA1NDcgNTc4VDYyMyA1MDNUNzAyIDQzOFQ3NzcgMzU3UTgyOSAyODUgODI5IDIwMlYxOTdRODI2IDEyOCA4MDggODFUNzYyIDE1VDcxNCAtMTFUNjc1IC0xOCcsXG4gICAgMHgyNjYxOiAnNjUgNDkxUTY1IDYwMiAxMjEgNjU2VDI0NiA3MTBRMzc1IDcxMCA0NDAgNjI0TDQ0NyA2MTVRNTE5IDcxMSA2MzggNzExUTcyMyA3MTEgNzc1IDY1MlQ4MjggNDkxUTgyOCAzOTAgNzcwIDMxM1Q1ODEgMTI5UTUzOSA5NSA1MTQgNjNUNDgzIDE0VDQ2OSAtMTNUNDQ2IC0yNFE0MzQgLTI0IDQyNyAtMTdUNDE2IDBUNDAwIDMyVDM3MSA3NFEzNTIgOTcgMzEwIDEzMVQyMjkgMTk5VDE1MSAyNzZUODkgMzc0VDY1IDQ5MVpNMjQ5IDY0OVExODggNjQ5IDE1NyA2MDNUMTI1IDQ4OVExMjUgNDA5IDE4MSAzMzhUMzUyIDE3NlE0MDggMTMxIDQzNyA4N0w0NDYgNzNMNDU2IDg3UTQ3OSAxMjEgNTA3IDE0N1Q1NzkgMjA3VDY1OSAyNzhRNzY4IDM4NyA3NjggNDg5UTc2OCA1MDYgNzY2IDUyNFQ3NTYgNTY2VDczMSA2MTFUNjg3IDY0MlE2NjggNjQ5IDYzOCA2NDlRNjA5IDY0OSA1OTMgNjQ0UTU0NyA2MzMgNTE2IDYwNFQ0NzggNTM0UTQ3MyA1MDUgNDQ3IDUwNUg0NDVRNDIwIDUwNSA0MTYgNTM0UTQwNyA1NzcgMzcyIDYwOFQyODUgNjQ4UTI3NyA2NDkgMjQ5IDY0OScsXG4gICAgMHgyNjYyOiAnNDA5IDY4NlE0MTAgNjg4IDQxMiA2OTFUNDE1IDY5NlQ0MTggNzAxVDQyMSA3MDZUNDI0IDcwOVQ0MjcgNzEzVDQzMSA3MTVUNDM1IDcxN1Q0NDAgNzE4VDQ0NiA3MTlRNDU1IDcxOSA0NjAgNzE3VDQ3MiA3MDRUNDg4IDY3OVQ1MTYgNjMzVDU2MyA1NjdRNjI0IDQ4NSA2ODcgNDIyVDc4NyAzMzBUODI2IDI5NlQ4MjggMjgyUTgyOCAyNzAgODI1IDI2NVQ4MDEgMjQ1UTY5NiAxNjEgNjEyIDU5VDQ3NyAtMTMzUTQ2NSAtMTU0IDQ0NyAtMTU0UTQzOSAtMTU0IDQzNCAtMTUyVDQyNSAtMTQ2VDQxNCAtMTMwVDM5OSAtMTA0VDM3MiAtNjJUMzMwIC0zUTI3MCA3OCAyMDcgMTQyVDEwNyAyMzRUNzAgMjY1UTY0IDI3NCA2NCAyODJRNjQgMjk2IDkwIDMxN1EyODQgNDcyIDQwOSA2ODZaTTc0OSAyODJRNzQ1IDI4NiA3MjEgMzA3VDY4MSAzNDNUNjM1IDM4OFQ1ODEgNDQ2VDUyNSA1MTZUNDY1IDYwMVE0NjIgNjA2IDQ1NyA2MTNUNDUwIDYyNEw0NDcgNjI3VjYyOFE0NDYgNjI4IDQzNiA2MTFUNDAyIDU2MVQzNDggNDg5VDI2NiAzOTZUMTU1IDI5MkwxNDUgMjgyUTE0NyAyODAgMTg1IDI0NVQyNTcgMTc3VDM0MyA3OVQ0NDIgLTU3UTQ0NiAtNjQgNDQ3IC02NFYtNjNRNDUwIC01OSA0NzUgLTIyVDUzMCA1NlQ2MTkgMTYwVDc0OSAyODInLFxuICAgIDB4MjY2MzogJzI0MCA1MjdRMjQwIDYxMSAzMDEgNjY1VDQ0NiA3MTlUNTkwIDY2NVQ2NTIgNTI3UTY1MiA0MzEgNTcxIDM3M1E1NzggMzYzIDU4NCAzNTJUNTkzIDMzNVQ1OTcgMzI5TDYwNCAzMzVRNjExIDM0MSA2MTcgMzQ1VDYzNyAzNTZUNjY3IDM2NlE2NzIgMzY2IDY4MCAzNjdUNjk0IDM2OFE3NjcgMzY4IDgxNCAzMTBUODYxIDE3N1E4NjEgMTA5IDgxOSA1N1Q3MTMgLTEyUTY5MCAtMTcgNjU2IC0xN1E1MzUgLTEzIDUyNyA2MlY3MEg0NzdWNTVRNDc5IDE0IDQ4NyAtMjFUNTAyIC03NVQ1MDkgLTEwMVE1MDkgLTEyMCA0OTEgLTEyN1E0ODcgLTEyOSA0NDcgLTEyOVE0NDYgLTEyOSA0MzkgLTEyOVQ0MjcgLTEzMFEzODQgLTEzMCAzODQgLTEwMVEzODQgLTk1IDM5MSAtNzZUNDA2IC0yMVQ0MTYgNTVWNzBIMzY2VjYyUTM1NiAtMTIgMjM3IC0xN1ExMzAgLTE3IDcxIDYwUTMyIDExMSAzMiAxNzhRMzIgMjUxIDc4IDMwOVQxOTggMzY4UTIxNyAzNjggMjMzIDM2NFQyNjAgMzU0VDI3OSAzNDNUMjkxIDMzM1QyOTYgMzI5TDMwMCAzMzZRMzA0IDM0MyAzMTAgMzU0VDMyMiAzNzNRMjQwIDQzMiAyNDAgNTI3JyxcbiAgICAweDI2NkQ6ICcyMzAgNDgwUTI5MyA0ODAgMzM3IDQ0MFQzODEgMzMwVjMyMlEzODEgMjQwIDMyMyAxNjFRMjU4IDcxIDEyMyAtMTFMMTE0IC0xNkw5NyAtMTdRNzAgLTE3IDY2IC03UTY0IC0zIDY0IDM2NlY2NDFRNjQgNzE3IDY1IDczMVQ3NSA3NDhRNzggNzUwIDk1IDc1MFExMTcgNzUwIDEyMiA3NDJUMTI3IDY5NFExMjcgNjg1IDEyNyA2NTNUMTI2IDU5NVY0NTRRMTgzIDQ4MCAyMzAgNDgwWk0yNDIgMzMzUTI0MiA0MDUgMjEyIDQwNUgyMDdRMTQ3IDQwNSAxMzAgMzcwTDEyNyAzNjRMMTI2IDIxOVExMjYgNzcgMTI4IDc3UTEzMyA4MiAxNDAgOTBUMTY3IDEyN1QyMDIgMTgzVDIyOSAyNTNUMjQyIDMzMycsXG4gICAgMHgyNjZFOiAnMzQ1IC0yMjNRMzMzIC0yMjMgMzMwIC0yMTRUMzI3IC0xNzhWLTExNlEzMjcgLTIzIDMyNiAtMjNMMjAzIC04MlE5MCAtMTM0IDc3IC0xNDBRNjUgLTE0MiA1OSAtMTMwUTU3IC0xMjYgNTcgMjk1VjU5NVE1NyA2NDMgNTcgNjY3VDU4IDcwNFQ2MCA3MTlUNjMgNzI0UTkzIDc0MSAxMDEgNzQxUTExMyA3NDEgMTE2IDczMlQxMTkgNjgwVjU5N1ExMTkgNDY3IDEyMCA0NjdRMTIxIDQ2OCAxODAgNDk1VDMwMSA1NTJUMzY5IDU4NFEzODEgNTg2IDM4NyA1NzRRMzg5IDU3MCAzODkgMTg3Vi04OFEzODkgLTEzMiAzODkgLTE1NFQzODggLTE4OFQzODYgLTIwMlQzODMgLTIwNlEzNTMgLTIyMyAzNDUgLTIyM1pNMzI3IDI3MVEzMjcgNDIxIDMyNiA0MjFMMTIwIDMyM0wxMTkgMTczVjIzUTEyMCAyMyAyMjMgNzJMMzI3IDEyMVYyNzEnLFxuICAgIDB4MjY2RjogJzE0MCA2MjhRMTUxIDYyOCAxNTQgNjIwVDE1OCA1OTFWNTQ5VjQ4NEwxNjYgNDg4UTE3NSA0OTIgMTkyIDUwMFQyMjMgNTE2TDI4OCA1NDhWNjIyVjY3NFEyODggNjgxIDI4OCA2ODVUMjg5IDY5M1QyODkgNjk5VDI5MSA3MDNUMjk1IDcwN1QyOTggNzA5VDMwNCA3MTJUMzExIDcxNlEzMjYgNzI0IDMzMiA3MjRRMzQzIDcyNCAzNDYgNzE1VDM1MCA2ODVWNjQ0VjU3OVEzNTggNTgzIDM2NCA1ODNRMzc2IDU4MyAzODAgNTc0UTM4MiA1NzAgMzgyIDUxNFY0ODFRMzgyIDQ1OSAzODAgNDU0VDM2MyA0NDFMMzUwIDQzNVYxMzVRMzU4IDEzOSAzNjQgMTM5UTM3NiAxMzkgMzgwIDEzMFEzODIgMTI2IDM4MiA3MFYzN1EzODIgMTUgMzgwIDEwVDM2MyAtM0wzNTAgLTlWLTc2UTM1MCAtMTAyIDM0OCAtMTA2VDMyOCAtMTE5UTMxMiAtMTI4IDMwNiAtMTI4UTI4OCAtMTI4IDI4OCAtOTlWLTc3Vi00MEwyODAgLTQ0UTI3MSAtNDggMjU0IC01NlQyMjMgLTcyTDE1OCAtMTA0Vi0xNTBWLTE4MFExNTggLTE5OCAxNTUgLTIwMlQxMzUgLTIxNlExMTkgLTIyNCAxMTQgLTIyNFE5NiAtMjI0IDk2IC0xOTJWLTE3MlYtMTM1UTg2IC0xNDAgODEgLTE0MFE3MCAtMTQwIDY2IC0xMjlRNjQgLTEyNiA2NCAtNzBWLTU0UTY0IC0xOCA2NiAtMTJUODMgM0w5NiA5VjMwOVE4NiAzMDQgODEgMzA0UTcwIDMwNCA2NiAzMTVRNjQgMzE4IDY0IDM3NFY0MDdRNjQgNDI5IDY2IDQzNFQ4MyA0NDdMOTYgNDUzVjYwMlE5OSA2MDkgMTAwIDYxMFQxMTggNjE5UTEzNCA2MjggMTQwIDYyOFpNMjg4IDI1NFEyODggNDA0IDI4NyA0MDRMMTU4IDM0MFY0MEwxNjYgNDRRMTc1IDQ4IDE5MiA1NlQyMjMgNzJMMjg4IDEwNFYyNTQnLFxuICAgIDB4Mjc1ODogJzE2MCAtMjQ5UTEzOCAtMjQ5IDEyOSAtMjI1VjI1MFExMjkgNzI1IDEzMSA3MjlRMTM5IDc1MCAxNTkgNzUwVDE5MCA3MjVWLTIyNVExODEgLTI0OSAxNjAgLTI0OScsXG4gICAgMHgyN0U4OiAnMTI3IDI0M1YyNTlMMjIzIDQ5MVEyNTEgNTU3IDI4NiA2NDJRMzE4IDcxOSAzMjQgNzMyVDM0MCA3NDhIMzQxUTM0NyA3NTAgMzUxIDc1MFEzNjUgNzUwIDM3MyA3NDBUMzgyIDcyM1EzODIgNzEzIDI4NiA0ODJMMTkwIDI1MVExOTAgMjQ5IDI4NiAyMFQzODIgLTIxOVEzODIgLTIzMiAzNzMgLTI0MFQzNTIgLTI0OVEzMzIgLTI0OSAzMjMgLTIyOVEzMjAgLTIyMCAyMjMgMTBMMTI3IDI0MycsXG4gICAgMHgyN0U5OiAnNjQgNzIwUTY0IDczMiA3MiA3NDFUOTQgNzUwUTEwNiA3NTAgMTEzIDc0M1ExMTggNzQxIDEyMiA3MzJMMzE5IDI1OVYyNDNMMTIyIC0yMzFRMTEyIC0yNDkgOTUgLTI0OVE4MyAtMjQ5IDc0IC0yNDBUNjQgLTIxOFE2NCAtMjEwIDE2MCAyMEwyNTYgMjUxTDE2MCA0ODJRNjQgNzE1IDY0IDcyMCcsXG4gICAgMHgyN0Y1OiAnMTA2MyAyMjFMNjQ5IDIyMEgyMzVRMzQwIDEzMyAzNjQgMTdRMzY4IDEgMzY4IC0yUTM2OCAtMTYgMzQzIC0xN1EzNDAgLTE3IDMzOCAtMTdIMzMyUTMxNyAtMTcgMzE0IC0xNFQzMDUgNlEyOTggMzQgMjg1IDYyVDI0NyAxMjZUMTc5IDE4OVQ3OCAyMzNRNjQgMjM3IDY0IDI1MVE2NCAyNjEgNzQgMjY1VDEwOCAyNzdUMTU0IDI5N1EyMTIgMzI4IDI1MSAzNzlUMzA1IDQ5NVEzMDkgNTExIDMxMyA1MTRUMzMzIDUxOEgzMzhRMzYzIDUxNyAzNjcgNTEwUTM2OCA1MDcgMzY4IDUwM1EzNjggNTAwIDM2NCA0ODRRMzQ1IDQwMSAyODcgMzMxUTI1NCAyOTUgMjM1IDI4Mkw2NDkgMjgxSDEwNjNMMTA2NSAyODBRMTA3OSAyODEgMTM5MiAyODFIMTcxOVExNzIwIDI4MCAxNzIzIDI3OFQxNzI5IDI3NFQxNzM1IDI2OVQxNzM5IDI2MlQxNzQxIDI1MVExNzQxIDIzMCAxNzE5IDIyMUgxMDYzJyxcbiAgICAweDI3RjY6ICcxMTkgMjIxUTk2IDIzMCA5NiAyNTFUMTE2IDI3OVExMjEgMjgxIDQ0OCAyODFIMTE4OEwxNjAyIDI4MlExNTY5IDMwNCAxNTMwIDM1N1QxNDczIDQ4MlExNDY5IDUwMCAxNDY5IDUwMVExNDY5IDUxMiAxNDgwIDUxN1ExNDgyIDUxOCAxNTAwIDUxOEgxNTA1UTE1MjAgNTE4IDE1MjMgNTE1VDE1MzIgNDk1UTE1NTIgNDEyIDE2MTEgMzUxVDE3NTMgMjcwUTE3NzMgMjYzIDE3NzMgMjUxUTE3NzMgMjQwIDE3NjUgMjM2VDE3MzIgMjI1VDE2ODMgMjA0UTE2MjUgMTczIDE1ODYgMTIyVDE1MzIgNlExNTI4IC0xMCAxNTI0IC0xM1QxNTA0IC0xN0gxNDk5UTE0NzQgLTE2IDE0NzAgLTlRMTQ2OSAtNiAxNDY5IC0yUTE0NjkgMSAxNDczIDE3UTE1MDEgMTM4IDE2MDIgMjIwSDExODhMNzc1IDIyMUgxMTknLFxuICAgIDB4MjdGNzogJzEwNjMgMjIxTDY0OSAyMjBIMjM1UTM0MCAxMzMgMzY0IDE3UTM2OCAxIDM2OCAtMlEzNjggLTE2IDM0MyAtMTdRMzQwIC0xNyAzMzggLTE3SDMzMlEzMTcgLTE3IDMxNCAtMTRUMzA1IDZRMjk4IDM0IDI4NSA2MlQyNDcgMTI2VDE3OSAxODlUNzggMjMzUTY0IDIzNyA2NCAyNTFRNjQgMjYxIDc0IDI2NVQxMDggMjc3VDE1NCAyOTdRMjEyIDMyOCAyNTEgMzc5VDMwNSA0OTVRMzA5IDUxMSAzMTMgNTE0VDMzMyA1MThIMzM4UTM2MyA1MTcgMzY3IDUxMFEzNjggNTA3IDM2OCA1MDNRMzY4IDUwMCAzNjQgNDg0UTM0NSA0MDEgMjg3IDMzMVEyNTQgMjk1IDIzNSAyODJMNjQ5IDI4MUgxNDc2TDE4OTAgMjgyUTE4NTcgMzA0IDE4MTggMzU3VDE3NjEgNDgyUTE3NTcgNTAwIDE3NTcgNTAxUTE3NTcgNTEyIDE3NjggNTE3UTE3NzAgNTE4IDE3ODggNTE4SDE3OTNRMTgwOCA1MTggMTgxMSA1MTVUMTgyMCA0OTVRMTg0MCA0MTIgMTg5OSAzNTFUMjA0MSAyNzBRMjA2MSAyNjMgMjA2MSAyNTFRMjA2MSAyNDAgMjA1MyAyMzZUMjAyMCAyMjVUMTk3MSAyMDRRMTkxMyAxNzMgMTg3NCAxMjJUMTgyMCA2UTE4MTYgLTEwIDE4MTIgLTEzVDE3OTIgLTE3SDE3ODdRMTc2MiAtMTYgMTc1OCAtOVExNzU3IC02IDE3NTcgLTJRMTc1NyAxIDE3NjEgMTdRMTc4OSAxMzggMTg5MCAyMjBIMTQ3NkwxMDYzIDIyMScsXG4gICAgMHgyN0Y4OiAnMTA2MyAzMzNMNzAwIDMzMkgzMzhMMzI0IDMyMVEyODMgMjkwIDIzMCAyNjRMMjA1IDI1MFEyNjYgMjI0IDMyMyAxODBMMzM4IDE3MEw3MDAgMTY5SDEwNjNMMTA2NCAxNjhRMTA4MCAxNjkgMTQyMyAxNjlIMTc4MkwxNzg2IDE2NlExNzkxIDE2MyAxNzkzIDE2MlQxNzk4IDE1N1QxODAyIDE0OVQxODA0IDEzOVExODA0IDExOCAxNzgyIDEwOUgxMDYzTDczMyAxMDhINDA0TDQxMiA5OVE0NTUgNTAgNDg4IC0xMFE0OTggLTI3IDQ5MyAtMzdRNDg3IC00NiA0NjUgLTQ2SDQ2MFE0NDYgLTQ2IDQzOSAtMzlUNDI2IC0xOFQzOTkgMjVUMzQ0IDg5UTIzOSAxOTQgOTkgMjI5UTk2IDIzMCA5MiAyMzFUODUgMjMyVDc5IDIzNFQ3MyAyMzVUNjkgMjM3VDY2IDI0MFQ2NSAyNDRUNjQgMjUwUTY0IDI2NyA5MCAyNzFRMTk3IDI5NSAyODYgMzYxVDQzMCA1MjVRNDM5IDU0MiA0NDIgNTQ0VDQ2MCA1NDdINDY1UTQ4NyA1NDcgNDkyIDUzOVE0OTYgNTMxIDQ5NiA1MzBRNDk2IDUyMSA0NzEgNDgyVDQxNCA0MDVMNDA0IDM5NEw3MzMgMzkzSDEwNjNRMTA2NCAzOTIgMTA2NSAzOTJRMTA4MSAzOTMgMTQyMyAzOTNIMTc4MlExNzgzIDM5MiAxNzg2IDM5MFQxNzkyIDM4NlQxNzk4IDM4MVQxODAyIDM3NFQxODA0IDM2M1ExODA0IDM0NSAxNzgyIDMzM0gxMDYzJyxcbiAgICAweDI3Rjk6ICc4NyAxMDlRNjQgMTE4IDY0IDEzOVE2NCAxNTkgODYgMTY4UTg5IDE2OSA0NDggMTY5SDExNjlMMTUzMiAxNzBMMTU0NiAxODBRMTU2MiAxOTMgMTU4MCAyMDRUMTYxMiAyMjNUMTYzOCAyMzdUMTY1NyAyNDZMMTY2NCAyNTBMMTYzOSAyNjRRMTU4NiAyOTAgMTU0NSAzMjFMMTUzMSAzMzJIMTE2OUw4MDcgMzMzSDg3UTY0IDM0MyA2NCAzNjJRNjQgMzgzIDg0IDM5MVE4OSAzOTMgNDQ4IDM5M0gxMTM2TDE0NjUgMzk0TDE0NTUgNDA1UTE0MjggNDM2IDE0MDEgNDc3VDEzNzQgNTMxUTEzNzQgNTQ3IDEzOTkgNTQ3SDE0MDRIMTQwOVExNDIzIDU0NyAxNDMwIDU0MFQxNDQzIDUxOVQxNDcwIDQ3NVQxNTI2IDQxMVExNjM0IDMwMyAxNzc5IDI3MVExNzgwIDI3MSAxNzgzIDI3MFQxNzg4IDI2OVQxNzkyIDI2OFQxNzk2IDI2NlQxNzk5IDI2NFQxODAyIDI2MFQxODAzIDI1NlQxODA0IDI1MFExODA0IDI0MiAxODAwIDIzOFQxNzgzIDIzMVQxNzU1IDIyNVQxNzEyIDIxMVQxNjU0IDE4NVExNTE3IDExMiAxNDM5IC0yNFExNDMwIC00MCAxNDI2IC00M1QxNDA5IC00NkgxNDA0UTEzNzMgLTQ2IDEzNzMgLTMxUTEzNzMgLTI0IDEzODEgLTEwUTE0MTQgNTAgMTQ1NyA5OUwxNDY1IDEwOEgxMTM2TDgwNyAxMDlIODcnLFxuICAgIDB4MjdGQTogJzEwNjMgMzMzTDcwMCAzMzJIMzM4TDMyNCAzMjFRMjgzIDI5MCAyMzAgMjY0TDIwNSAyNTBRMjY2IDIyNCAzMjMgMTgwTDMzOCAxNzBMNzAwIDE2OUgxNDI1TDE3ODggMTcwTDE4MDIgMTgwUTE4MTggMTkzIDE4MzYgMjA0VDE4NjggMjIzVDE4OTQgMjM3VDE5MTMgMjQ2TDE5MjAgMjUwTDE4OTUgMjY0UTE4NDIgMjkwIDE4MDEgMzIxTDE3ODcgMzMySDE0MjVMMTA2MyAzMzNaTTczMyAzOTNIMTM5MkwxNzIxIDM5NEwxNzExIDQwNVExNjg0IDQzNiAxNjU3IDQ3N1QxNjMwIDUzMVExNjMwIDU0NyAxNjU1IDU0N0gxNjYwSDE2NjVRMTY3OSA1NDcgMTY4NiA1NDBUMTY5OSA1MTlUMTcyNiA0NzVUMTc4MiA0MTFRMTg5MCAzMDMgMjAzNSAyNzFRMjAzNiAyNzEgMjAzOSAyNzBUMjA0NCAyNjlUMjA0OCAyNjhUMjA1MiAyNjZUMjA1NSAyNjRUMjA1OCAyNjBUMjA1OSAyNTZUMjA2MCAyNTBRMjA2MCAyNDIgMjA1NiAyMzhUMjAzOSAyMzFUMjAxMSAyMjVUMTk2OCAyMTFUMTkxMCAxODVRMTc3MyAxMTIgMTY5NSAtMjRRMTY4NiAtNDAgMTY4MiAtNDNUMTY2NSAtNDZIMTY2MFExNjI5IC00NiAxNjI5IC0zMVExNjI5IC0yNCAxNjM3IC0xMFExNjcwIDUwIDE3MTMgOTlMMTcyMSAxMDhIMTM5MkwxMDYzIDEwOUw3MzMgMTA4SDQwNEw0MTIgOTlRNDU1IDUwIDQ4OCAtMTBRNDk4IC0yNyA0OTMgLTM3UTQ4NyAtNDYgNDY1IC00Nkg0NjBRNDQ2IC00NiA0MzkgLTM5VDQyNiAtMThUMzk5IDI1VDM0NCA4OVEyMzkgMTk0IDk5IDIyOVE5NiAyMzAgOTIgMjMxVDg1IDIzMlQ3OSAyMzRUNzMgMjM1VDY5IDIzN1Q2NiAyNDBUNjUgMjQ0VDY0IDI1MFE2NCAyNjcgOTAgMjcxUTE5NyAyOTUgMjg2IDM2MVQ0MzAgNTI1UTQzOSA1NDIgNDQyIDU0NFQ0NjAgNTQ3SDQ2NVE0ODcgNTQ3IDQ5MiA1MzlRNDk2IDUzMSA0OTYgNTMwUTQ5NiA1MjEgNDcxIDQ4MlQ0MTQgNDA1TDQwNCAzOTRMNzMzIDM5MycsXG4gICAgMHgyN0ZDOiAnNjUgNDI2UTc0IDQ0OCA5NSA0NDhRMTEyIDQ0OCAxMjUgNDI2VjI4MUgxMzBMMTMyIDI4MEgxMzRRMTYyIDI4MSA0NDggMjgxSDExODhMMTYwMiAyODJRMTU2OSAzMDQgMTUzMCAzNTdUMTQ3MyA0ODJRMTQ2OSA1MDAgMTQ2OSA1MDFRMTQ2OSA1MTIgMTQ4MCA1MTdRMTQ4MiA1MTggMTUwMCA1MThIMTUwNVExNTIwIDUxOCAxNTIzIDUxNVQxNTMyIDQ5NVExNTUyIDQxMiAxNjExIDM1MVQxNzUzIDI3MFExNzczIDI2MyAxNzczIDI1MVExNzczIDI0MCAxNzY1IDIzNlQxNzMyIDIyNVQxNjgzIDIwNFExNjI1IDE3MyAxNTg2IDEyMlQxNTMyIDZRMTUyOCAtMTAgMTUyNCAtMTNUMTUwNCAtMTdIMTQ5OVExNDc0IC0xNiAxNDcwIC05UTE0NjkgLTYgMTQ2OSAtMlExNDY5IDEgMTQ3MyAxN1ExNTAxIDEzOCAxNjAyIDIyMEgxMTg4TDc3NSAyMjFIMTM1UTEzMyAyMjAgMTMwIDIyMEgxMjVWNzZRMTE1IDU0IDk1IDU0UTczIDU0IDY1IDc2VjQyNicsXG4gICAgMHgyOUY4OiAnMTg5IC0yMTBRMTc5IC0yMTAgMTcwIC0yMDNUMTYwIC0xNzlRMTYwIC0xNzEgMTYyIC0xNjZRMTY0IC0xNjMgNDIwIDI2NlQ2NzkgNjk4UTY4NiA3MTEgNzA0IDcxMVE3MTQgNzExIDcyMyA3MDRUNzMzIDY4MVE3MzMgNjcyIDczMCA2NjdRNzIzIDY1NCA0NjkgMjI4VDIxMSAtMjAxUTIwMiAtMjEwIDE4OSAtMjEwJyxcbiAgICAweDJBMkY6ICcxNjggNTAwUTE2OCA1MTUgMTc4IDUyMlQxOTUgNTMwSDE5OFEyMDcgNTMwIDIxOCA1MjFUMjgyIDQ1OFEzMTIgNDI4IDMzMSA0MDlMNDQ3IDI5NEw1NjMgNDA5UTY3NCA1MjAgNjgyIDUyNVE2ODcgNTI5IDY5NSA1MjlRNzExIDUyOSA3MTggNTIwVDcyNiA0OTlWNDk4UTcyNiA0ODkgNzIwIDQ4MVQ2NjYgNDI3UTYzMSAzOTIgNjA2IDM2N0w0OTAgMjUxTDYwNiAxMzVRNzE3IDIzIDcyMSAxN1Q3MjYgMlE3MjYgLTkgNzE5IC0xOFQ2OTUgLTI4SDY5MlE2ODUgLTI4IDY3NCAtMThUNjA4IDQ3UTU4MSA3NCA1NjMgOTJMNDQ3IDIwN0wzMzEgOTFRMjE3IC0yMiAyMDggLTI3UTIwNiAtMjggMjAzIC0yOEgxOTdRMTY4IC0yOCAxNjggMlExNjggMTMgMTc4IDI0VDI4OCAxMzVMNDA0IDI1MEwyODggMzY2UTE3NyA0NzkgMTczIDQ4NVQxNjggNTAwJyxcbiAgICAweDJBM0Y6ICczOSA2NTVRMzkgNjc1IDQzIDY4MFQ2OSA2ODZRMTEwIDY4NCAyMjUgNjg0UTI2NyA2ODQgMzAzIDY4NFQzNjAgNjg1VDM4NSA2ODZRNDAxIDY4NiA0MDUgNjgwVDQwOSA2NTFRNDA5IDYzMiA0MDMgNjI4VDM2NyA2MjRIMzQ4SDMwMVY2Mkg1OThWNjI0SDU1MUg1MzJRNTAyIDYyNCA0OTYgNjI4VDQ5MCA2NTFRNDkwIDY3MyA0OTQgNjc5VDUxNCA2ODZRNTE4IDY4NiA1NTggNjg1VDY3NSA2ODRUNzkyIDY4NVQ4MzYgNjg2UTg1MiA2ODYgODU2IDY4MFQ4NjAgNjUxUTg2MCA2MzIgODU0IDYyOFQ4MTggNjI0SDc5OUg3NTJWNjJINzk5SDgwOVE4NDYgNjIgODUzIDU5VDg2MCAzNlYzMVYyMVE4NjAgNiA4NTAgMlE4NDYgMCA0NTAgMEgxNTZRNzUgMCA2MCAxVDQwIDExVjE4UTM5IDI2IDM5IDMxUTM5IDU0IDQ0IDU4VDgyIDYzUTg0IDYzIDkwIDYzVDEwMCA2MkgxNDdWNjI0SDEwMEg5MFE1MyA2MjQgNDYgNjI3VDM5IDY1MFY2NTUnLFxuICAgIDB4MkFBRjogJzc5NiA1NFE3OTYgNDAgNzg4IDMyVDc2NyAyNFE3NDEgMjQgNzM1IDU3UTcyOSAxMDcgNzA1IDE0OFQ2NDYgMjE2VDU2MyAyNjRUNDY1IDI5N1QzNTYgMzE2VDI0NSAzMjZUMTM2IDMzMEgxMzRROTYgMzMwIDk2IDM2MFE5NiAzOTEgMTM0IDM5MUgxMzZRMTkzIDM5MiAyMzkgMzk0VDM0NyA0MDNUNDU3IDQyMVQ1NTYgNDUzVDY0MyA1MDJUNzAzIDU3MVQ3MzUgNjY0UTc0MSA2OTYgNzYzIDY5NlE3ODEgNjk2IDc4OSA2ODZUNzk3IDY2N1E3OTcgNjUxIDc5MiA2MjRUNzU4IDU0NVQ2ODIgNDU2UTYwNSAzOTYgNDgxIDM2NUw0NjIgMzYwUTQ4MyAzNTcgNTI2IDM0NFQ2MzMgMjk2VDczMyAyMTVRNzY3IDE3MyA3ODEgMTI4VDc5NiA1NFpNMTE5IC0xOTlROTYgLTE5MCA5NiAtMTY5VDExNiAtMTQxUTEyMSAtMTM5IDQ0OCAtMTM5SDc3NVE3NzYgLTE0MCA3NzkgLTE0MlQ3ODUgLTE0NlQ3OTEgLTE1MVQ3OTUgLTE1OFQ3OTcgLTE2OVE3OTcgLTE5MCA3NzUgLTE5OUgxMTknLFxuICAgIDB4MkFCMDogJzEyNyAyNFExMTUgMjQgMTA2IDMyVDk3IDU1UTk3IDk1IDEyNCAxNTZUMjExIDI2NVEyODggMzI1IDQxMiAzNTZMNDMxIDM2MVE0MTAgMzYzIDM2NyAzNzZUMjU5IDQyNVQxNjAgNTA2UTEyNyA1NDYgMTEyIDU5NFQ5NiA2NjdROTYgNjc5IDEwNCA2ODhUMTI2IDY5N1ExNTIgNjk3IDE1OCA2NjRRMTY0IDYxNCAxODggNTczVDI0NyA1MDVUMzMxIDQ1NlQ0MjkgNDI0VDUzOSA0MDVUNjQ5IDM5NVQ3NTggMzkxUTc5NyAzOTEgNzk3IDM2MFE3OTcgMzMwIDc2MSAzMzBINzU4UTcwMSAzMjkgNjU1IDMyN1Q1NDcgMzE4VDQzNyAzMDBUMzM3IDI2OFQyNTEgMjE5VDE5MCAxNTBUMTU4IDU3UTE1MSAyNCAxMjcgMjRaTTExOSAtMTk5UTk2IC0xOTAgOTYgLTE2OVQxMTYgLTE0MVExMjEgLTEzOSA0NDggLTEzOUg3NzVRNzc2IC0xNDAgNzc5IC0xNDJUNzg1IC0xNDZUNzkxIC0xNTFUNzk1IC0xNThUNzk3IC0xNjlRNzk3IC0xOTAgNzc1IC0xOTlIMTE5JyxcbiAgICAweDMwMDg6ICcxMjcgMjQzVjI1OUwyMjMgNDkxUTI1MSA1NTcgMjg2IDY0MlEzMTggNzE5IDMyNCA3MzJUMzQwIDc0OEgzNDFRMzQ3IDc1MCAzNTEgNzUwUTM2NSA3NTAgMzczIDc0MFQzODIgNzIzUTM4MiA3MTMgMjg2IDQ4MkwxOTAgMjUxUTE5MCAyNDkgMjg2IDIwVDM4MiAtMjE5UTM4MiAtMjMyIDM3MyAtMjQwVDM1MiAtMjQ5UTMzMiAtMjQ5IDMyMyAtMjI5UTMyMCAtMjIwIDIyMyAxMEwxMjcgMjQzJyxcbiAgICAweDMwMDk6ICc2NCA3MjBRNjQgNzMyIDcyIDc0MVQ5NCA3NTBRMTA2IDc1MCAxMTMgNzQzUTExOCA3NDEgMTIyIDczMkwzMTkgMjU5VjI0M0wxMjIgLTIzMVExMTIgLTI0OSA5NSAtMjQ5UTgzIC0yNDkgNzQgLTI0MFQ2NCAtMjE4UTY0IC0yMTAgMTYwIDIwTDI1NiAyNTFMMTYwIDQ4MlE2NCA3MTUgNjQgNzIwJyxcbn0se1xuICAgIDB4MjAzMzogXCJcXHUyMDMyXFx1MjAzMlwiLFxuICAgIDB4MjAzNDogXCJcXHUyMDMyXFx1MjAzMlxcdTIwMzJcIixcbiAgICAweDIwNTc6IFwiXFx1MjAzMlxcdTIwMzJcXHUyMDMyXFx1MjAzMlwiLFxuICAgIDB4MjE5QTogXCJcXHUyMTkwXFx1MDMzOFwiLFxuICAgIDB4MjE5QjogXCJcXHUyMTkyXFx1MDMzOFwiLFxuICAgIDB4MjFBRTogXCJcXHUyMTk0XFx1MDMzOFwiLFxuICAgIDB4MjFDRDogXCJcXHUyMUQwXFx1MDMzOFwiLFxuICAgIDB4MjFDRTogXCJcXHUyMUQ0XFx1MDMzOFwiLFxuICAgIDB4MjFDRjogXCJcXHUyMUQyXFx1MDMzOFwiLFxuICAgIDB4MjIwNDogXCJcXHUyMjAzXFx1MDMzOFwiLFxuICAgIDB4MjIwQzogXCJcXHUyMjBCXFx1MDMzOFwiLFxuICAgIDB4MjIyNDogXCJcXHUyMjIzXFx1MDMzOFwiLFxuICAgIDB4MjIyNjogXCJcXHUyMjI1XFx1MDMzOFwiLFxuICAgIDB4MjI0MTogXCJcXHUyMjNDXFx1MDMzOFwiLFxuICAgIDB4MjI0NDogXCJcXHUyMjQzXFx1MDMzOFwiLFxuICAgIDB4MjI0NzogXCJcXHUyMjQ1XFx1MDMzOFwiLFxuICAgIDB4MjI0OTogXCJcXHUyMjQ4XFx1MDMzOFwiLFxuICAgIDB4MjI2MjogXCJcXHUyMjYxXFx1MDMzOFwiLFxuICAgIDB4MjI2RDogXCJcXHUyMjREXFx1MDMzOFwiLFxuICAgIDB4MjI2RTogXCI8XFx1MDMzOFwiLFxuICAgIDB4MjI2RjogXCI+XFx1MDMzOFwiLFxuICAgIDB4MjI3MDogXCJcXHUyMjY0XFx1MDMzOFwiLFxuICAgIDB4MjI3MTogXCJcXHUyMjY1XFx1MDMzOFwiLFxuICAgIDB4MjI4MDogXCJcXHUyMjdBXFx1MDMzOFwiLFxuICAgIDB4MjI4MTogXCJcXHUyMjdCXFx1MDMzOFwiLFxuICAgIDB4MjI4NDogXCJcXHUyMjgyXFx1MDMzOFwiLFxuICAgIDB4MjI4NTogXCJcXHUyMjgzXFx1MDMzOFwiLFxuICAgIDB4MjI4ODogXCJcXHUyMjg2XFx1MDMzOFwiLFxuICAgIDB4MjI4OTogXCJcXHUyMjg3XFx1MDMzOFwiLFxuICAgIDB4MjJBQzogXCJcXHUyMkEyXFx1MDMzOFwiLFxuICAgIDB4MjJBRDogXCJcXHUyMkE4XFx1MDMzOFwiLFxuICAgIDB4MjJFMjogXCJcXHUyMjkxXFx1MDMzOFwiLFxuICAgIDB4MjJFMzogXCJcXHUyMjkyXFx1MDMzOFwiLFxufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NoYXJNYXAsIENoYXJPcHRpb25zfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5cbmV4cG9ydCBjb25zdCBkb3VibGVTdHJ1Y2s6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5leHBvcnQge2RvdWJsZVN0cnVja30gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZvbnRzL3RleC9kb3VibGUtc3RydWNrLmpzJztcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IGZyYWt0dXJCb2xkOiBDaGFyTWFwPENoYXJPcHRpb25zPiA9IHtcbiAgICAweDIxOiBbLjY4OSwgLjAxMiwgLjM0OV0sXG4gICAgMHgyMjogWy42OTUsIC0wLjQzMiwgLjI1NF0sXG4gICAgMHgyNjogWy42OTYsIC4wMTYsIC44NzFdLFxuICAgIDB4Mjc6IFsuNjk1LCAtMC40MzYsIC4yNV0sXG4gICAgMHgyODogWy43MzcsIC4xODYsIC40NTldLFxuICAgIDB4Mjk6IFsuNzM1LCAuMTg3LCAuNDU5XSxcbiAgICAweDJBOiBbLjY5MiwgLTAuNDQ5LCAuMzI4XSxcbiAgICAweDJCOiBbLjU5OCwgLjA4MiwgLjg5M10sXG4gICAgMHgyQzogWy4xMDcsIC4xOTEsIC4zMjhdLFxuICAgIDB4MkQ6IFsuMjc1LCAtMC4yMzYsIC44OTNdLFxuICAgIDB4MkU6IFsuMTAyLCAuMDE1LCAuMzI4XSxcbiAgICAweDJGOiBbLjcyMSwgLjE4MiwgLjU5M10sXG4gICAgMHgzMDogWy41MDEsIC4wMTIsIC41OTNdLFxuICAgIDB4MzE6IFsuNDg5LCAwLCAuNTkzXSxcbiAgICAweDMyOiBbLjQ5MSwgMCwgLjU5M10sXG4gICAgMHgzMzogWy40ODcsIC4xOTMsIC41OTNdLFxuICAgIDB4MzQ6IFsuNDk1LCAuMTk2LCAuNTkzXSxcbiAgICAweDM1OiBbLjQ4MSwgLjE5LCAuNTkzXSxcbiAgICAweDM2OiBbLjcwNCwgLjAxMiwgLjU5M10sXG4gICAgMHgzNzogWy40NzksIC4xOTcsIC41OTNdLFxuICAgIDB4Mzg6IFsuNzE0LCAuMDA1LCAuNTkzXSxcbiAgICAweDM5OiBbLjQ4NywgLjE5NSwgLjU5M10sXG4gICAgMHgzQTogWy40NTcsIC4wMTIsIC4yNTVdLFxuICAgIDB4M0I6IFsuNDU4LCAuMTksIC4yNTVdLFxuICAgIDB4M0Q6IFsuMzQzLCAtMC4xNjgsIC41ODJdLFxuICAgIDB4M0Y6IFsuNjk3LCAuMDE0LCAuNDI4XSxcbiAgICAweDVCOiBbLjc0LCAuMTMsIC4yNTddLFxuICAgIDB4NUQ6IFsuNzM4LCAuMTMyLCAuMjU3XSxcbiAgICAweDVFOiBbLjczNCwgLTAuNDUyLCAuNTldLFxuICAgIDB4MjAxODogWy43MDgsIC0wLjQxMSwgLjI1NF0sXG4gICAgMHgyMDE5OiBbLjY5MiwgLTAuMzk0LCAuMjU0XSxcbiAgICAweDIwNDQ6IFsuNzIxLCAuMTgyLCAuNTkzXSxcbiAgICAweEUzMDE6IFsuNjMsIC4wMjcsIC41ODddLFxuICAgIDB4RTMwMjogWy42OTMsIC4yMTIsIC4zOTQsIHtpYzogLjAxNH1dLFxuICAgIDB4RTMwMzogWy42ODEsIC4yMTksIC4zODddLFxuICAgIDB4RTMwNDogWy40NzMsIC4yMTIsIC41OTNdLFxuICAgIDB4RTMwNTogWy42ODQsIC4wMjcsIC4zOTNdLFxuICAgIDB4RTMwODogWy42NzksIC4yMiwgLjk4MV0sXG4gICAgMHhFMzA5OiBbLjcxNywgLjEzNywgLjcyN10sXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7U1ZHQ2hhck1hcCwgQWRkUGF0aHN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7ZnJha3R1ckJvbGQgYXMgZm9udH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZvbnRzL3RleC9mcmFrdHVyLWJvbGQuanMnO1xuXG5leHBvcnQgY29uc3QgZnJha3R1ckJvbGQ6IFNWR0NoYXJNYXAgPSBBZGRQYXRocyhmb250LCB7XG4gICAgMHgyMTogJzEyMSA2MjFRMTIxIDY1NyAxMzIgNjczVDE3NyA2ODlRMjIzIDY4OSAyMjMgNjQ0VjYzNVEyMjMgNjA0IDIyMiA1OTVRMjIxIDU5MCAyMTAgNDkwVDE4NyAyOTJUMTc1IDE5MFYxODZMMTY2IDE4NUwxNTYgMTg0UTE1NiAxODUgMTM5IDM5M1QxMjEgNjIxWk0xMDcgNDdRMTA3IDcwIDEyNyA4N1QxNzQgMTA0UTIwMSAxMDQgMjIxIDg5VDI0MSA0OFEyNDEgMjQgMjIyIDZUMTc0IC0xMlExNDcgLTEyIDEyNyA2VDEwNyA0NycsXG4gICAgMHgyMjogJzUzIDY5NVE3NCA2OTUgOTAgNjc5VjYyMkw2NSA0MzNMNTIgNDMySDM5TDI3IDUxNlExMCA2MjYgMTAgNjU1UTEwIDY4MCAyNiA2ODhRMzMgNjkzIDM5IDY5M1E0OSA2OTUgNTMgNjk1Wk0xNTEgNjY4UTE1MSA2OTEgMTkxIDY5MVEyMTcgNjkxIDIyNCA2ODVUMjMxIDY2MVY2NTJRMjMwIDYzNCAyMTkgNTMxTDIwNyA0MzNMMTk1IDQzMlExODMgNDMyIDE4MyA0MzNMMTY4IDU0MVExNTEgNjY0IDE1MSA2NjgnLFxuICAgIDB4MjY6ICcyOTAgLTE0UTE4NiAtMTQgMTE1IDQxVDQ0IDE4NVE0NCAyMjIgNTQgMjQ5VDg4IDMwMFQxMzEgMzM2VDE4OSAzNzFRMjE2IDM4NyAyMTYgMzg4UTE4NSA0NTkgMTg1IDUxMFExODUgNTYzIDIwNiA2MDFUMjYzIDY1OVQzMzQgNjg3VDQwNSA2OTZRNDc2IDY5NiA1MDMgNjY4VDUzMSA2MDNRNTMxIDU2NSA1MTMgNTM2VDQ1MCA0NzZRNDIzIDQ1OSAzNzAgNDMyTDMzNCA0MTNMMzU0IDM4NFE0NzQgMjEyIDU2MCAxMzlMNTYzIDEzN1E2MTEgMTg1IDYxMSAyNTBRNjExIDI5NSA1NzcgMzI5UTU0OSAzNTYgNDk2IDM1N1E0MzkgMzU3IDQzMyAzNTRRNDMyIDM1NCA0MzIgMzc5VjQwM0w0MzcgNDAyUTQ0MyA0MDIgNDc5IDQwMVQ1NTcgNDAwUTY1MyA0MDAgNzM1IDQwM1Q4MzEgNDA3SDgzNlE4MzMgMzUyIDgzMyAzNTFMODIxIDM1MlE4MDkgMzUyIDc5MiAzNTJUNzU2IDM1MlQ3MjAgMzUzVDY5NiAzNTRRNjgwIDM1NCA2ODAgMzUzTDY4MSAzNDZRNjgyIDMzOSA2ODMgMzI3VDY4NSAzMDZRNjg1IDI4MyA2ODEgMjYwVDY2OSAyMThUNjUzIDE4MlQ2MzUgMTUyVDYxOSAxMjlUNjA2IDExNEw2MDIgMTA5UTYwNCAxMDcgNjE4IDk5VDY1OSA4MVQ3MDcgNzFRNzQyIDcxIDc2NyA5OVQ4MDQgMTU1TDgxNSAxODNRODE1IDE4NCA4MjEgMTgzVDgzMyAxODBUODM5IDE3N1E4MzcgMTY5IDgzNCAxNTZUODE2IDExMFQ3ODIgNTJUNzI3IDVUNjQ4IC0xNlE1NjkgLTE2IDQ5OSAzNUg0OThRNDk2IDM1IDQ2NiAyM1QzODcgLTFUMjkwIC0xNFpNNDE4IDU5MlE0MTggNjE3IDM5OCA2MzlUMzUyIDY2MVQzMDIgNjQyVDI3OCA1NzRRMjc4IDU0NSAyODggNTE0VDMwNiA0NjVUMzE5IDQ0NFEzNDIgNDU2IDM1MyA0NjNUMzgyIDQ4OFQ0MDkgNTI5VDQxOCA1ODRWNTkyWk0xNTkgMjM5UTE1OSAxNTggMjIyIDk4VDM2NCAzOFEzODYgMzggNDQ3IDU3TDQ2OSA2M0w0MzQgOThRMzQ5IDE4NSAyODYgMjc1UTI1OCAzMTYgMjM4IDM0NVEyMzMgMzUzIDIzMiAzNTNRMTU5IDMxNiAxNTkgMjM5JyxcbiAgICAweDI3OiAnODAgNjQ1VDgwIDY2MlQ5MyA2ODdUMTIzIDY5NVExNTggNjk1IDE1OCA2NTlRMTU4IDY0OSAxNTcgNjQzTDEyMyA0MzdRMTIzIDQzNiAxMTQgNDM2SDEwNFExMDQgNDQyIDkyIDUzOFE4MCA2NDUgODAgNjYyJyxcbiAgICAweDI4OiAnMzQ3IDcxOVEzMjUgNzA4IDMxMSA2OThUMjcyIDY1NlQyMzMgNTgwVDIwNyA0NTVUMTk1IDI2N1ExOTUgMzAgMjQ3IC03OVEyNjEgLTExMCAyOTEgLTEzNlEzMjAgLTE2MyAzNDcgLTE3MlYtMTc5UTM0NyAtMTg2IDM0NCAtMTg2UTMzOCAtMTg2IDMyOCAtMTg0VDI4NyAtMTY1VDIzMCAtMTIzUTEzNCAtMjUgMTM0IDI3MVExMzQgNDE3IDE1OCA1MTRUMjI2IDY2MlQzMzUgNzM0TDM0NiA3MzdRMzQ3IDczNyAzNDcgNzI4VjcxOScsXG4gICAgMHgyOTogJzI2NCAyNjJRMjY0IDM2NiAyNTMgNDQ2VDIyNiA1NzJUMTg2IDY0OVQxNDUgNjkyVDEwNSA3MTRWNzI1UTEwNSA3MzUgMTA3IDczNVExMDggNzM0IDEyMSA3MzFUMTU0IDcxOVQxOTYgNjkyVDI0MiA2NDFUMjg0IDU2MFQzMTQgNDM3VDMyNiAyNjhRMzI2IDExMiAyOTkgN1EyNzkgLTc4IDIzOSAtMTI0VDExNiAtMTg1TDEwNSAtMTg3Vi0xNzlMMTA2IC0xNzFMMTA5IC0xNjlRMTMwIC0xNjEgMTM4IC0xNThUMTY1IC0xNDZUMTkwIC0xMjdUMjEwIC0xMDFUMjI5IC02NFQyNDMgLTEyVDI1NSA1OFQyNjEgMTQ4VDI2NCAyNjInLFxuICAgIDB4MkE6ICc0MCA1MTZMNjIgNTI5UTg1IDU0MiAxMTAgNTU2VDE0MCA1NzRMMTI2IDU4MlExMTIgNTkxIDEwNCA1OTVUODAgNjA3VDQwIDYyOVE1MyA2NDIgNTcgNjQ1TDY1IDY1Mkw3OCA2NDJRMTA2IDYyMCAxMzIgNjAzTDE1MiA1ODlWNTk1UTE1MiA2MzAgMTQ5IDY4MVY2OTJIMTc5VjY4OVExNzggNjgxIDE3NCA2MzhUMTcxIDU5M1ExNzMgNTkzIDI0MCA2MzlMMjU4IDY1MlEyNjAgNjUyIDI2NyA2NDNMMjc2IDYzM0wyNjAgNjI1UTE5MCA1ODcgMTc1IDU3NlExNzMgNTc1IDE4MCA1NzBRMTgzIDU2OSAxODYgNTY3UTIxMyA1NDkgMjU2IDUyN0wyNzcgNTE1TDI1NiA0OTVRMjQ2IDUwMSAyMjggNTE1VDE5NCA1MzlUMTcwIDU1NFY1NDNRMTcwIDQ4NiAxNzggNDQ5SDE0OFY0NTZRMTUyIDQ5MiAxNTIgNTUwTDE1MSA1NjJRMTUwIDU2MiAxMDIgNTI4TDUzIDQ5NVE0MCA1MTQgNDAgNTE2JyxcbiAgICAweDJCOiAnNDIyIDU4NEw0NzEgNTk4UTQ3MiA1OTggNDcyIDQ0MFYyODJIODM3UTgzMyAyNzMgODI5IDI2M0w4MjEgMjQ0TDY0NyAyNDNINDcyVi02M0w0NDggLTczTDQyMyAtODJRNDIyIC04MiA0MjIgODFWMjQzSDIzOVE1NiAyNDMgNTYgMjQ0UTYwIDI1MyA2NSAyNjNMNzMgMjgySDQyMlY1ODQnLFxuICAgIDB4MkM6ICcxMTggNjFRMTE4IDgwIDEzNSA5M1QxNjkgMTA3UTE5MCAxMDcgMjIxIDY1VDI1MyAtMjNRMjUzIC0zOSAyNTEgLTQ5VDIzNyAtODBUMTk4IC0xMzNRMTQ4IC0xOTEgMTQ0IC0xOTFRMTQyIC0xOTEgMTM3IC0xODJUMTMyIC0xNzJRMTQzIC0xNjEgMTYwIC0xMzFUMTgzIC04M1ExODUgLTc3IDE4NSAtNjJRMTg1IC01NCAxODQgLTQ4VDE4MiAtMzhUMTc3IC0yOFQxNzEgLTE5VDE2MiAtOFQxNTAgNlExMzAgMjggMTI0IDM4VDExOCA2MScsXG4gICAgMHgyRDogJzU0IDIzNkw3MyAyNzVINDUzUTgzMyAyNzUgODMzIDI3NFE4MzAgMjY1IDgyNSAyNTVMODE4IDIzNkg1NCcsXG4gICAgMHgyRTogJzEwMyAyM1QxMDMgNDRUMTIwIDgzVDE3MCAxMDJRMjAwIDEwMiAyMTggODRUMjM3IDQ0UTIzNyAyMCAyMTYgM1QxNjggLTE1UTEzOCAtMTUgMTIxIDQnLFxuICAgIDB4MkY6ICcyNzIgMjcwUTUwMyA3MjEgNTA2IDcyMUw1MDkgNzIwUTUxMiA3MjAgNTE4IDcxOVQ1MjkgNzE3TDU1MCA3MTNMOTEgLTE4MUw2NiAtMTgyUTQxIC0xODIgNDEgLTE4MUwyNzIgMjcwJyxcbiAgICAweDMwOiAnMjM4IC0xMlExNjIgLTEyIDEwMiA0MlQ0MiAxODVRNDIgMzAzIDEzMCAzOTNRMTYzIDQyNSAyMDggNDUyVDI4NCA0OTBMMzEzIDUwMVEzMjMgNDk5IDMzOSA0OTVUMzk1IDQ3MlQ0NjQgNDI2UTUzMyAzNTcgNTMzIDI3M1E1MzMgMjAxIDQ4MyAxMzNUMzY0IDI3VDIzOCAtMTJaTTQyOCAyMDhRNDI4IDI1NSA0MDIgMjk3VDM0MiAzNjVUMjgwIDQwNFQyNDEgNDE5UTIxNCA0MTkgMTc4IDM3NFQxNDIgMjU5UTE0MiAyMDYgMTY4IDE2NFQyMjUgOTlRMjU5IDc0IDMxMCA3NFEzMjYgNzQgMzM3IDc1VDM2NiA4MlQzOTYgMTAzVDQxNyAxNDFRNDI4IDE3MSA0MjggMjA4JyxcbiAgICAweDMxOiAnOTUgNDgxUTEwMiA0ODEgMjE3IDQ4NVQzODMgNDg5UTM4NCA0ODkgMzg0IDQ4NVEzNjcgMzk3IDM2NyAxNjVRMzY3IDU4IDM2OSA1NFEzNzQgNDYgMzgwIDQ0VDQxMCA0Mkg0NjZINTQ2VjQwUTU0NyAzOCA1NDcgMTlMNTQ4IDBINTRWMjNRNTQgMjkgNTQgMzRUNTQgNDRMNTUgNDdRNzkgNDcgMTM0IDQ2VDIwMiA0NVEyMjYgNDUgMjM0IDUyUTI0MCA1NyAyNDEgNjRUMjQ1IDEwNVEyNTQgMjM2IDI1NCAzMjBWMzQ3UTI1NCAzNjkgMjUyIDM4MlQyNDAgNDA5VDIxMSA0MzFMOTcgNDUwTDk2IDQ2NVE5NSA0ODAgOTUgNDgxJyxcbiAgICAweDMyOiAnMzA3IDMzNVEzMDcgMzc0IDI4MyAzOTdUMjI0IDQyMVExODcgNDIxIDExMiAzODdRMTA1IDM4NCAxMDAgMzgyVDk1IDM4MVE5MCAzODcgODYgMzk0TDc3IDQwN0w4NiA0MTNRMjE5IDQ5MSAyOTggNDkxUTM3MCA0OTEgMzk5IDQ2MFQ0MjggMzg4UTQyOCAzNzMgNDI0IDM1OFQ0MDkgMzI2VDM5MSAyOTdUMzYzIDI2NFQzMzUgMjM1VDMwMSAyMDJUMjY5IDE3MUwxOTkgMTA0UTE5NCA5OSAyMDUgOTdRMjA5IDk2IDIxNCA5NlE1MjcgMTA1IDU0NCAxMDVRNTUzIDEwNyA1NjMgMTAyUTU2MyAxMDAgNTU3IDc5VDU0NSAzNFQ1MzcgMkgzNzdRMzM4IDIgMjQ3IDJUMTMwIDRINDRWMjZMMTA0IDc3UTE4NSAxNDUgMjEyIDE3MlQyNjcgMjM1UTMwNyAyOTEgMzA3IDMzNScsXG4gICAgMHgzMzogJzEwMiA0MDJMMTA4IDQwOFExMTUgNDEzIDEyMiA0MThUMTQxIDQzMVQxNjUgNDQ3VDE5NCA0NjFUMjI3IDQ3NFQyNjMgNDgzVDMwMiA0ODdIMzA3UTQxMyA0ODcgNDUyIDQyMFE0NjUgNDAwIDQ2NSAzNzFRNDY1IDMzNCA0NDUgMzAzVDM5NiAyNTNUMzQ3IDIyNVQzMTcgMjEzUTMxNCAyMTMgMzE0IDIxMVEzMTYgMjA5IDMxNiAyMDVRMzE3IDIwMSAzMjAgMjAxUTMzNyAyMDEgMzU5IDE5OFQ0MTEgMTg0VDQ2NSAxNTZUNTA2IDEwOVQ1MjMgMzlRNTIzIC02MiA0MzYgLTEyN1QyMjkgLTE5M1ExNzkgLTE5MyAxMzAgLTE3OFQ1NiAtMTUwVDMxIC0xMzNRMzEgLTEzMiA0MSAtMTIyTDUyIC0xMTJMNjMgLTExN1ExMjggLTE0OCAyMDEgLTE0OFEyODIgLTE0OCAzMzEgLTEwNFQzODEgMjBRMzgxIDcxIDM2MyAxMDBUMzA0IDE0NVEyNDMgMTY2IDE0OSAxNjZIMTM3VjIwNEgxNDZRMTc5IDIwNCAyMTEgMjEwVDI3NSAyMjlUMzI2IDI2OFQzNDYgMzI5UTM0NiAzNzIgMzE0IDQwMVEyOTIgNDIzIDI0NSA0MjNRMTg4IDQyMyAxMjUgMzgzTDEwMiA0MDInLFxuICAgIDB4MzQ6ICczNDYgLTE5NlEzNDQgLTE5NiAzMzUgLTE4N0wzMzYgLTE0OFEzMzcgLTEyNyAzMzcgLTU1VjBIMTNWMjlMMTg3IDI1M1EzNjIgNDc3IDM2MiA0NzlMMzY4IDQ4MFEzNzUgNDgxIDM4NyA0ODNUNDExIDQ4N1Q0MzQgNDkxVDQ1MiA0OTRMNDU5IDQ5NVE0NjAgNDk1IDQ3MCA0ODJWNDUzUTQ3MCAzODkgNDY2IDIzMFQ0NjEgNjJRNDYxIDYxIDUxMyA2MVQ1NjUgNjBMNTU1IDI5TDU0NiAtMUg0NjFWLTE1UTQ2MSAtNDggNDYzIC0xMDBUNDY1IC0xNTRMNDU3IC0xNTdRNDQ5IC0xNjAgNDM0IC0xNjVUNDA1IC0xNzVRMzQ3IC0xOTYgMzQ2IC0xOTZaTTMzOSAyNjVWMzQxUTMzOSAzNjIgMzM1IDM2MlEzMjcgMzYyIDIxOSAyMTdUMTEwIDY1VjYxSDMzN1YxMTdRMzM4IDEzMyAzMzggMTg3VDMzOSAyNjUnLFxuICAgIDB4MzU6ICcyMzIgMTkyUTE3NiAxOTIgMTIyIDE1Mkw5NSAxNjJWNDgxSDMwNlE1MTYgNDgxIDUxNiA0NzlRNTE0IDQ3NyA1MDEgNDMzTDQ4NiAzODlMMzE5IDM4OEgxNTJWMzg2VjM4MlExNTIgMzc5IDE1MiAzNzRUMTUxIDM2NVExNDcgMzI5IDE0NiAyNjBWMjE4SDE0OVEyMTEgMjQyIDI4NCAyNDJRMzUzIDI0MiA0MDIgMjI0VDQ3NCAxNzZUNTA4IDExN1Q1MTggNTVRNTE4IC02MiA0MzIgLTEyNlQyMjAgLTE5MFExODQgLTE5MCAxNTEgLTE4NVQ5NiAtMTcyVDU3IC0xNTdUMzEgLTE0NVQyMCAtMTM5VDE5IC0xMzhRMTkgLTEzNiAyNyAtMTI1TDM1IC0xMTJMNTEgLTEyMFExMTQgLTE1MiAxNzQgLTE1MlEyNTcgLTE1MiAzMTQgLTEwMFQzNzEgNDZRMzcxIDEwNyAzNDAgMTQ5VDIzMiAxOTInLFxuICAgIDB4MzY6ICc0OCAyNTFRNDggMzMwIDc2IDQwM1QxNTAgNTI5VDI1MyA2MjNUMzcwIDY4M1Q0ODUgNzA0UTQ5NCA3MDQgNTIwIDcwMVQ1NDcgNjk1UTU0NyA2OTIgNTQyIDY1OVQ1MzYgNjI1UTUzMSA2MjQgNTI0IDYyNEw1MTIgNjIzTDUwMiA2MjhRNDg5IDYzNSA0NjggNjQwUTQ1MiA2NDUgNDIzIDY0NVE0MDMgNjQ1IDM3OSA2NDBUMzIwIDYxN1QyNTUgNTY4VDIwMSA0ODFUMTcxIDM0OFExNzAgMzQxIDE3MCAzMzBWMzI1TDE4MyAzMzNRMjc1IDM4NSAzNTcgMzg1SDM2MVE0NjQgMzg1IDUxNCAzMTJRNTQ2IDI2NyA1NDYgMjE3UTU0NiAxMjcgNDU3IDU4VDI2MiAtMTJRMjI1IC0xMiAxODkgM1QxMjAgNDlUNjggMTMyVDQ4IDI1MVpNNDQ4IDE2NVE0NDggMjI4IDQwNiAyNzRUMjg5IDMyMFEyNjQgMzIwIDIzNiAzMTJUMTkwIDI5NVQxNzMgMjg0UTE3MyAyNjYgMTc2IDI0MVQxODkgMTc4VDIxNCAxMTJUMjU5IDYxVDMyNiAzOVEzNzIgMzkgNDEwIDc1VDQ0OCAxNjUnLFxuICAgIDB4Mzc6ICc1NyAzNzZMODcgNDc5SDU5MVY0NTVMNTg0IDQ0NlE1NDQgMzk5IDQ5MSAzMjhUMzQ5IDExN1QxODUgLTE2OUwxNzEgLTE5NkgxNTlRMTUyIC0xOTcgMTAyIC0xOTdRNTggLTE5NyA1OCAtMTk2VDU2IC0xODVMNTQgLTE3NUwyOTkgMTU4TDQ0MyAzNTlRNDQ2IDM2NyA0NDQgMzcwSDI1NEw3MSAzNjVMNTcgMzc2JyxcbiAgICAweDM4OiAnODggNTMzUTg4IDU3MyAxMjAgNjEwVDE5NCA2NjhUMjY4IDcwMVQzMDcgNzE0UTMyNCA3MTQgMzUyIDcxMVQ0MjIgNjk1VDQ4NiA2NTlRNTE4IDYyNSA1MTggNTg1UTUxOCA1MzYgNDc5IDQ4OVQzODQgNDA2TDM3MSAzOThMMzg1IDM5MFEzODcgMzg5IDQwMCAzODJUNDIwIDM3MFQ0NDIgMzU2VDQ2NiAzMzlUNDg5IDMxOVQ1MTAgMjk1VDUyNiAyNjlUNTM4IDIzOFQ1NDIgMjA0UTU0MiAxMjUgNDYzIDYwVDI1NiAtNVExNDUgLTUgOTIgNTJRNDUgOTcgNDUgMTY1UTQ1IDIwNCA2NCAyMzdUMTA5IDI5MFQxNjMgMzI0VDIwOSAzNDVUMjI4IDM1M0wyMTQgMzY0UTE5OSAzNzUgMTc5IDM5MlQxMzggNDMxVDEwMyA0ODBUODggNTMzWk00MDUgNTU3UTQwNSA1NjggNDAyIDU4MVQzODcgNjEyVDM1MCA2NDRUMjg2IDY2M1EyODMgNjYzIDI4MCA2NjNUMjc0IDY2NEgyNzJRMjU2IDY2NCAyMjggNjM2VDE5OSA1NzJRMTk5IDU0NyAyMzggNTA3UTI2OCA0NzUgMzIwIDQzN0wzMzQgNDI3UTM0NSA0MzMgMzU4IDQ0M1QzODggNDgzVDQwNSA1NDlWNTU3Wk0zMDQgNDJRMzY2IDQyIDM5OCA3NlQ0MzEgMTU1UTQzMSAxNzggNDIwIDIwMFQzOTYgMjM4VDM1OSAyNzBUMzIxIDI5NlQyODMgMzE4TDI2MyAzMjhRMjYyIDMyOCAyMzAgMzEyUTE5MCAyOTAgMTc1IDI2NlQxNjAgMTk4UTE2MCAxMzIgMjAyIDg3VDMwNCA0MicsXG4gICAgMHgzOTogJzU0OSAyMjBRNTQ5IDIzIDQyOSAtODJUMTA1IC0xOTVIODRWLTE4OVE4NCAtMTc5IDg1IC0xNzRWLTE2NEg5M1ExODQgLTE1NiAyMzggLTEzMlQzMzQgLTU2UTM2MSAtMjMgMzc2IDE2VDM5NCA3OEwzOTcgMTAwTDM2MyA4OFEzMjkgNzUgMjkxIDYxVDI0NCA0NVEyMzcgNDQgMjE4IDQ0UTE1NCA0NCA5NCA5N1EyOSAxNTIgMjkgMjQwUTI5IDM1MCAxMDggNDA0UTE0NSA0MjkgMjU3IDQ4MFEyNzAgNDg3IDI3OSA0ODdRNDAzIDQ4NyA0NzAgNDIxUTU0OSAzNDcgNTQ5IDIyMFpNNDA4IDIxN1E0MDggMjc2IDM5MCAzMjBUMzQ2IDM4NVQyOTcgNDE1VDI1OSA0MjRRMjE4IDQyNCAxODUgMzkzVDE1MSAyODZRMTUxIDIxNiAyMTMgMTU0UTI1MiAxMTUgMzIxIDExNVEzNjggMTE1IDM4OCAxMzRUNDA4IDIxNycsXG4gICAgMHgzQTogJzU3IDM5OFE1NyA0MTkgNzIgNDM4VDExNyA0NTdRMTU0IDQ1NyAxNzQgNDM5VDE5NCAzOThRMTk0IDM3OSAxNzYgMzYxVDExOSAzNDNRODUgMzQzIDcxIDM2MlQ1NyAzOThaTTYyIDE5VDYyIDQzVDc3IDg1VDExNSAxMDRRMTUzIDEwNCAxNzUgODZUMTk3IDQyUTE5NyAxNCAxNzEgMVQxMTkgLTEyUTk2IC0xMiA3OSAzJyxcbiAgICAweDNCOiAnNTYgMzk5UTU2IDQyNCA3MyA0NDBUMTA0IDQ1NlExMTQgNDU4IDEyMCA0NThRMTQ5IDQ1OCAxNzAgNDQwVDE5MiAzOTlRMTkyIDM4MCAxNzQgMzYyVDEyMCAzNDRRODUgMzQ0IDcxIDM2MlQ1NiAzOTlaTTc4IDUzUTc4IDY3IDg0IDc2VDkwIDg2UTkwIDg4IDk4IDkyVDExNiA5OFExMTcgOTggMTIxIDk4VDEyOCA5OVExNTIgOTcgMTgxIDU4VDIxMSAtMjRRMjExIC03NyAxMjggLTE2NVExMjQgLTE3MCAxMjEgLTE3M1QxMTYgLTE3OFQxMTMgLTE4MVQxMTAgLTE4NVQxMDYgLTE5MEw5NyAtMTg0TDg4IC0xNzdMOTUgLTE2OFExNDMgLTEwNCAxNDMgLTY1UTE0MyAtNTEgMTM3IC00MFQxMTMgLTdUODEgMzVRNzggNDEgNzggNTMnLFxuICAgIDB4M0Q6ICc1NTkgMzQyTDU0OSAzMDRIMjJMMjcgMzE5UTI5IDMyOCAzMCAzMzNUMzMgMzQzSDI5NlE1NTkgMzQzIDU1OSAzNDJaTTU1OSAyMDZMNTQ5IDE2OEgyMkwyNyAxODNRMjkgMTkyIDMwIDE5N1QzMyAyMDdIMjk2UTU1OSAyMDcgNTU5IDIwNicsXG4gICAgMHgzRjogJzEyMSA1OTBRMTIxIDU3NSAxMjggNTYyVDE0NCA1NDJUMTUyIDUzM1QxMTUgNTEyTDc4IDQ5MVE1NSA0OTkgNDcgNTE2UTQwIDUzMCA0MCA1NTNRNDAgNjAxIDc3IDYzMlExNTUgNjk3IDI1NyA2OTdIMjY4UTMxNiA2OTcgMzU1IDY3OVE0MjIgNjQ2IDQyMiA1NzZRNDIyIDUxOCAzODggNDc2UTM4MyA0NjggMzc2IDQ2MVQzNTggNDQ0VDM0MCA0MjhUMzE2IDQxMFQyOTAgMzkwTDIzMCAzNDRRMTgwIDMwNyAxODAgMjc1UTE4MCAyNjEgMTg3IDI0OFQyMDIgMjI3TDIwOSAyMTlRMjA5IDIxNSAxNzYgMTkzTDE0MiAxNzBRMTE0IDE3NyAxMDAgMTk0VDg0IDIyNlYyMzlRODQgMjU5IDkzIDI3NlQxMTMgMzAyVDE1MCAzMzFUMTkyIDM2MlEyMDMgMzcwIDIxOSAzODJUMjQ3IDQwM1QyNjcgNDIyUTMxMiA0NzEgMzEyIDU0NlEzMTIgNTkzIDI4MiA2MjNUMjA3IDY1M1ExNzAgNjUzIDE0NiA2MzZUMTIxIDU5MFpNOTUgMjNUOTUgNDlUMTE3IDk0VDE3MyAxMTNRMjA0IDExMyAyMjMgOTZUMjQyIDU0UTI0MiAyNyAyMjEgN1QxNjcgLTE0UTEzNiAtMTQgMTE2IDQnLFxuICAgIDB4NUI6ICcyMjYgNzExVDIyNSA3MTFUODYgNjk5Vi05M0g4OVE5NCAtOTMgMTU3IC05NlQyMjMgLTEwMEgyMjZWLTExOUgyMjNRMTM0IC0xMTkgNDIgLTEzMEgzNlY3NDBINDJRNjEgNzM4IDE1NiA3MzZIMjI2VjcyM1EyMjYgNzExIDIyNSA3MTEnLFxuICAgIDB4NUQ6ICc2OSA3MzJRMTE2IDczMyAxNDYgNzM0VDE4NCA3MzZUMTk3IDczN1QyMDYgNzM4SDIwOFYtMTMyUTE5MCAtMTI5IDE2MCAtMTI3VDk5IC0xMjVUNjYgLTEyNEgxNFYtMTAzSDE5UTIwIC0xMDMgODQgLTk4VDE1MiAtOTJIMTU4VjY5OUgxNTFRMTQ4IDcwMCA4NSA3MDNUMTggNzA4SDE0VjczMkg2OScsXG4gICAgMHg1RTogJzEgNDYzVDEgNDY0VDE0OCA1OTlUMjk2IDczNFE1ODQgNDg2IDU4NCA0ODVMNTYxIDQ3MlE1MzggNDU5IDUzNyA0NjFRMjk2IDY3MiAyOTMgNjcyTDE2MSA1NjNRMTMzIDUzOSA5NyA1MDlUNDQgNDY2TDI4IDQ1MlEyNyA0NTIgMTQgNDU3JyxcbiAgICAweDIwMTg6ICcxODcgNDU2UTE4NyA0MzcgMTY5IDQyNFQxMzggNDExUTExNCA0MTEgODQgNDU0VDUzIDUzOFE1MyA1NjUgNzUgNTk3UTEwOSA2NDggMTU1IDY5N0wxNjYgNzA4TDE4MSA2OTRMMTczIDY4MVExMjQgNjEwIDEyNCA1NzdRMTI0IDU0OSAxNTUgNTExVDE4NyA0NTYnLFxuICAgIDB4MjAxOTogJzEyNSA1MjRRMTI1IDU0NSA5MiA1ODhUNTggNjUxUTU4IDY2MSA2MSA2NjdRNjUgNjc0IDgwIDY4M1QxMDcgNjkyUTEzMSA2OTIgMTYyIDY0NVQxOTMgNTY0UTE5MyA1NDAgMTc2IDUwOVQxNDQgNDYwVDg3IDM5NEw3OCA0MDBMNjggNDA2TDc5IDQyMVExMjUgNDg5IDEyNSA1MjQnLFxuICAgIDB4MjA0NDogJzI3MiAyNzBRNTAzIDcyMSA1MDYgNzIxTDUwOSA3MjBRNTEyIDcyMCA1MTggNzE5VDUyOSA3MTdMNTUwIDcxM0w5MSAtMTgxTDY2IC0xODJRNDEgLTE4MiA0MSAtMTgxTDI3MiAyNzAnLFxuICAgIDB4RTMwMTogJzM4OCA0MjdRMzIwIDQ4NSAyNDIgNTI0VDEyOCA1NjNIMTE2UTk1IDU2MyA4NyA1NjFMNzcgNTU5UTcyIDU2MyA2OSA1NjZUNjUgNTcwVDY1IDU3Mkw3NSA1NzZRMTA2IDU5MiAxNTQgNjExVDIxMiA2MzBRMjMwIDYzMCAyNjIgNjIyVDM1OCA1ODFUNDkyIDQ5OEw1MDggNDg2UTUxMiA0NjMgNTEyIDM5NlE1MTIgMjQ2IDQ2OSAxMTJMNDY1IDEwMlE0NTMgOTQgMzQxIDI1UTI1MiAtMjcgMjQ3IC0yN1EyNDMgLTI3IDE3NCAyNFQ5NyA4NFE5MCAxMDAgOTAgMjE0UTkwIDI4NSA5OCAzNDVRMTAwIDM2MCAxMDIgMzYzVDExOCAzNzdRMTc1IDQyMiAyNjIgNDY1UTI2NCA0NjMgMjcwIDQ2MEwyNzcgNDU2UTI3NyA0NTUgMjY3IDQ0N1QyNDQgNDI4VDIyOCA0MTRRMjA2IDM4MiAyMDYgMjY5UTIwNiAxODcgMjE0IDE2NFQyNTkgMTEwUTI4NiA4OSAzNDIgNThRMzkxIDEzMSAzOTEgMzEzUTM5MSAzNTUgMzg4IDQxMlY0MjcnLFxuICAgIDB4RTMwMjogJzM5IDM2MkwzNyAzNjZMMzggMzY4TDgyIDQwNUgxMzNWNDc0UTEzNSA1NjMgMTQzIDU4OVQxOTggNjU4UTIxMCA2NjkgMjI0IDY3NlQyNDcgNjg3TDI1NSA2OTBIMjUzUTI0MSA2OTAgMjUzIDY5MlEyNTQgNjkyIDI1NiA2OTJUMjYwIDY5M1EyNjMgNjkzIDI2MiA2OTFMMjYxIDY5MFEzMDAgNjkwIDM2MSA2NjJMMzczIDY1NkwzODggNjY2UTQwNCA2NzUgNDA1IDY3NUw0MDYgNjc0UTQwNiA2NzIgNDA2IDY3MFQ0MDYgNjY0TDQwOCA2NTVMMzAxIDU1NVEzMDAgNTU1IDI4NyA1NjRUMjU0IDU4NFQyMjEgNTk3UTE5MCA1OTcgMTc2IDU4M1QxNjEgNTUwUTE2MSA1MjUgMTg0IDQ5NVQyMzIgNDQwVDI2MSA0MDVIMzg3VjM5OVEzNzcgMzg5IDM2NCAzNzlMMzQwIDM1OUgyNThWMzE1UTI1OCA1MiAyMjggLTE4TDE3MiAtMTIwTDEyMSAtMjExSDEwOVExMDIgLTIxMiA5NiAtMjEyTDEwOSAtMTc0UTEzMSAtMTA4IDEzNSAtODBUMTM5IDUzVjc2VjE1N1YzNjJIMzknLFxuICAgIDB4RTMwMzogJzQxIDM1MlE0MCAzNTQgMzkgMzU1VDM3IDM1OEwzNiAzNjBIMzdRNDggMzcwIDYxIDM4MEw4NCA0MDBIMTA4UTEzMSA0MDAgMTMxIDQwMlExMjEgNDI0IDEwNCA1MDFMMTAwIDUxOVExMDkgNTYwIDEzNCA2MDJUMTk2IDY2NFEyMzAgNjgxIDI3MSA2ODFRMjkxIDY4MSAzMTYgNjY5VDM1OCA2NDRMMzczIDYzMVEzNzMgNjMwIDMwNCA1NTNRMjk5IDU0OCAyOTQgNTQ3UTI5MiA1NDcgMjkwIDU0NkgyODdRMjg2IDU0NiAyNzQgNTYyVDI0MyA1OTNUMjA1IDYwOVExODAgNjA5IDE2NSA1OTZUMTUwIDU2MlExNTAgNTI2IDE5MSA0ODhMMjE3IDQ2MlEyNDggNDMxIDI1MyA0MDVWNDAwSDM4MUwzODQgMzk0TDM0OSAzNTJIMjUxVjMzMlEyNDkgMjcxIDIzMSAxN0wyMjcgLTM3TDEyMCAtMjE3TDEwOSAtMjE4UTEwMyAtMjE5IDk3IC0yMTlROTcgLTIxOCAxMDEgLTIwNlQxMTAgLTE3N1QxMTggLTE1MVExMjYgLTEyOSAxMjggLTEyMFQxMzYgLTQ2VDE0MSAxMjdRMTQxIDI1MCAxMzYgMzQwVjM1Mkg0MScsXG4gICAgMHhFMzA0OiAnMTA3IDM3MFExMjcgMzg0IDE3MiA0MDlUMjU1IDQ1NFQyOTQgNDczTDMwNiA0NjhRMzU2IDQ0NiA0MjUgNDMxTDQzNSA0MjlMNTI0IDQ2OFE1MjggNDY1IDUzMSA0NjFRNDk5IDM5NSA0OTkgMjcxVjI2M1E0OTkgMTQ2IDUwOSA3MVQ1MTkgLThRNTE5IC0yOCA1MTIgLTQ1UTUxMCAtNTAgNDM1IC0xMjNUMzU1IC0xOTdRMjk2IC0yMTIgMjU3IC0yMTJRMjA5IC0yMTIgMTY0IC0xOTZUOTggLTE2N1Q2NyAtMTQzTDEzMyAtNDRIMTQ0UTE2NyAtODggMjE2IC0xMTFUMzIwIC0xMzRRMzcxIC0xMzQgMzkwIC0xMThUNDEwIC02OVE0MTAgLTUyIDQwNCAtMTJUMzkyIDYwVDM4NSA5MkwxOTMgLTI5TDE1OCA1UTEyNCAzOSAxMTAgNTFMOTYgNjNWNzFROTQgNzkgOTQgMTIxUTk0IDEzMCA5NCAxNDhUOTMgMTc0UTkzIDIzMCA5NiAyNzVUMTAzIDM0NFQxMDcgMzcwWk0yMjEgMzk3UTIwMCAzMzQgMjAwIDI1NFEyMDAgMTcwIDIxMCAxNDBRMjE2IDEyNiAyMzQgMTA5VDI2OCA4MUwyODMgNzFMMzgzIDExOVYxMjdRMzg0IDEzMiAzODQgMjQxTDM4NSAzNDdMMzY4IDM0OVEzMjUgMzU3IDI5MCAzNjlUMjQwIDM4OVQyMjEgMzk3JyxcbiAgICAweEUzMDU6ICcxMDMgNDUzUTEwMyA2MzEgOTUgNjYxUTk1IDY2MyAxMDIgNjY3VDExMCA2NzJMMTE0IDY2NFExMTcgNjU1IDEyMyA2NDFUMTMxIDYyMUwxNDAgNTk3TDE1NCA2MDZRMjA4IDY0MSAyNzUgNjczTDI5NyA2ODRRMzAwIDY4MyAzMDIgNjgyVDMwNyA2NzlUMzEwIDY3OEwzMTQgNjc2UTI4MyA2NTggMjU2IDYyNVEyMzggNjAxIDIzMSA1NzlUMjIzIDUxNUwyMjQgNTEyTDI4MiA1NDhRMzM5IDU4MyAzNDEgNTgzVDM2NSA1NDhUMzg2IDUwOVEzMjYgNDQzIDMxOCA0NDNMMzE2IDQ0NlEzMTQgNDQ4IDMxMSA0NTJUMzA0IDQ2MFQyOTQgNDcwVDI4MyA0ODBUMjcyIDQ4OFQyNjAgNDk0VDI0OCA0OTdRMjMxIDQ5NyAyMjMgNDc0UTIyMCA0NjggMjE4IDQ0MFQyMTUgNDA3VjQwMUgzNDVMMzA5IDM2MEgyMThWMzE0UTIxOCAxODEgMjIxIDEzOVYxMjlMMjUzIDEwOFEzMDYgNzMgMzEwIDczUTMxNSA3MyAzNDMgODNMMzczIDkyTDM3NCA4N1EzNzUgODIgMzc1IDc5VDM3NSA3NFQzNjAgNjVUMzA4IDM2VDIyOSAtMTNMMjA4IC0yN0wxOTIgLTEzUTE0OSAyNCA5MCA2MVE4OSA2MSA4OSA2Mkw5MCA2OFE5MSA3MyA5MyA4N1Q5NyAxMjVUMTAwIDE5MVQxMDMgMjkxVjM2MEgzM1YzNjZMMzQgMzcxTDg1IDQwNUg5NEwxMDMgNDA0VjQ1MycsXG4gICAgMHhFMzA4OiAnNjAyIDU3NVE1MDUgNTA4IDUwNSA0ODlRNTA1IDQ4OCA1MDUgNDgyVDUwNiA0NjNUNTA3IDQzMlE1MDcgMzE0IDQ1NiAyMzdMNDQ5IDIyNkw0MzQgMjE2UTQyMCAyMDggMzI1IDE0M0wzMTYgMTM3UTQ1MyA4MiA0ODggODJRNTI3IDgyIDU4NSAxMjdMNTk2IDEzNlE1OTcgMTM2IDU5OSAxMjZMNjAyIDExNVE1NzggODUgNTExIDI3VDQyOCAtMzFRNDAwIC0zMSAzMDggMTBUMTcwIDUxUTE0MyA1MSAxMjMgNDNUOTIgMjRUNTQgLTE1TDM0IDZMNDEgMTRRNjUgNDEgMTcwIDEyOUwxODggMTQ0TDIwNCAxNDVRMjU0IDE0NyAyOTMgMTY0VDM1MCAyMDhRMzc4IDI0OSAzNzggMzQ0UTM3OCA0MjIgMzYyIDQ3OFQzMjAgNTYzVDI2OCA2MDVUMjEzIDYxOFExNzcgNjE4IDE1NiA2MDBUMTM0IDU2MVExMzQgNTM5IDE2MiA1MDhUMjE3IDQ0NlQyNDUgMzk0UTI0NSAzNjggMjEzIDMzN1Q4NSAyNTBMNjIgMjYyUTczIDI2OSA4NiAyNzlUMTE2IDMwOFQxMzMgMzM4VDEwOCAzNzhUNTcgNDM5VDMyIDQ5OVEzMiA1NTYgMTE3IDYxN1QyOTEgNjc5UTM1MCA2NzkgMzkzIDY1OFE0MTUgNjQ3IDQzMyA2MzFUNDYyIDYwMFQ0ODAgNTcyVDQ5MCA1NTBUNDk0IDU0MVQ0OTkgNTQ0VDUxNiA1NTZUNTQ3IDU3OFQ2MDMgNjEzVDY4OSA2NjJMNzIwIDY3OUw3MzAgNjcwUTc0MiA2NTkgNzU2IDY0OVQ3ODUgNjI5VDgxMCA2MTVUODM2IDYwMVQ4NTUgNTkwUTg1NSA1ODcgODYwIDUzNlQ4NzAgNDE5VDg3NSAzMTJRODc1IDExNCA4MDAgLTI1UTc5NCAtMzUgNzgxIC00N1E1ODQgLTIyMCAzOTggLTIyMFEzMjIgLTIyMCAyNzggLTE5MFEyNTMgLTE3MyAyMzkgLTE1NUwyNDQgLTE1MFEyNDggLTE0NSAyNTUgLTEzOFQyNzEgLTEyMFQyOTAgLTEwMFQzMTAgLTgwVDMyOCAtNjNUMzQxIC01MVQzNDkgLTQ2UTM1MCAtNDYgMzUxIC00NlQzNTQgLTQ3UTM1NyAtNDcgMzU3IC01MlEzNTkgLTY4IDM2NCAtODNUMzgzIC0xMThUNDI0IC0xNTFUNDkxIC0xNjZRNTU5IC0xNjYgNjEzIC0xMjlRNjI5IC0xMTggNjQxIC0xMDhUNjc0IC02OFQ3MTAgMVQ3MzUgMTA3VDc0NiAyNjBRNzQ2IDQzMyA3MjcgNTA3UTcyNyA1MTIgNjg1IDUzNVQ2MTUgNTcwTDYwMiA1NzUnLFxuICAgIDB4RTMwOTogJzM1MSA1NzFRMzE3IDU3MSAyNDcgNTYzVDE3MSA1NTVRMTUzIDU1NSAxMzMgNTYzVDEwNyA1ODRROTQgNjA1IDk4IDYwOVExMDEgNjE1IDEzOCA2NThUMTkwIDcxN0gyMDdRMjA0IDcxMCAyMDQgNjk5UTIwNCA2NzMgMjMxIDY2NlEyMzUgNjY1IDI2NCA2NjVRMjk2IDY2NSAzNDUgNjY3VDQyNiA2NjlRNDc0IDY2OSA1MDEgNjYwVDU0NSA2MjZRNTUzIDYxMiA1NTMgNTk0UTU1MyA1MzEgNDk4IDQ3NFQzNzkgMzg0UTM3MSAzNzkgMzcxIDM3OFEzNzEgMzc2IDM5MCAzNzZINDExSDQzNFE1MjAgMzc2IDYwMiAzMThRNjIxIDMwMyA2MjcgMjg4VDYzMyAyMzRRNjMzIDU5IDU0MCAtMzRRNDY1IC0xMDkgMzQ4IC0xMzBRMzA4IC0xMzcgMjM1IC0xMzdRMTU5IC0xMzYgMTQzIC0xMjlRMTMyIC0xMjUgMTMyIC0xMThWLTUzUTExOCAtMjQgOTAgLTI0UTY5IC0yNCAzNyAtMzlMMjcgLTQ0TDI1IC00MlEyMyAtMzkgMjEgLTM1VDE3IC0zMFExNyAtMjggNDAgLTE0VDEwMyAxOVQxNzcgNDRRMTgzIDQ1IDIwNSA0NVEyMTkgNDUgMjI3IDQ0VDI0NSAzN1QyNTkgMjBUMjY0IC0xMlEyNjQgLTMzIDI2MiAtNDhUMjU5IC04MFEyNTkgLTkzIDI2MCAtOTVRMjcxIC0xMTAgMzA1IC0xMTBRMzQzIC0xMTAgMzgzIC04NlQ0NDMgLTMzUTQ5MSAzNCA0OTEgMTU0UTQ5MSAyMjMgNDY3IDI0OVE0MjggMjg4IDMzNCAyODhIMzIyUTI4OCAyODggMjM3IDI3NkwyMjIgMjczTDIwNiAyODZMMjYyIDM2N1EyNzkgMzY5IDMwMyAzNzdUMzU4IDQwM1Q0MTAgNDUyVDQzMSA1MjRRNDMxIDUzMSA0MzEgNTMzVDQyNyA1NDVUNDE2IDU1OFQzOTIgNTY2VDM1MSA1NzEnLFxufSx7XG59KTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IGZyYWt0dXI6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xuICAgIDB4MjE6IFsuNjg5LCAuMDEyLCAuMjk2XSxcbiAgICAweDIyOiBbLjY5NSwgLTAuNDMyLCAuMjE1XSxcbiAgICAweDI2OiBbLjY5OCwgLjAxMSwgLjczOF0sXG4gICAgMHgyNzogWy42OTUsIC0wLjQzNiwgLjIxMl0sXG4gICAgMHgyODogWy43MzcsIC4xODYsIC4zODldLFxuICAgIDB4Mjk6IFsuNzM1LCAuMTg3LCAuMzg5XSxcbiAgICAweDJBOiBbLjY5MiwgLTAuNDQ5LCAuMjc4XSxcbiAgICAweDJCOiBbLjU5OCwgLjA4MiwgLjc1Nl0sXG4gICAgMHgyQzogWy4xMDcsIC4xOTEsIC4yNzhdLFxuICAgIDB4MkQ6IFsuMjc1LCAtMC4yMzYsIC43NTZdLFxuICAgIDB4MkU6IFsuMTAyLCAuMDE1LCAuMjc4XSxcbiAgICAweDJGOiBbLjcyMSwgLjE4MiwgLjUwMl0sXG4gICAgMHgzMDogWy40OTIsIC4wMTMsIC41MDJdLFxuICAgIDB4MzE6IFsuNDY4LCAwLCAuNTAyXSxcbiAgICAweDMyOiBbLjQ3NCwgMCwgLjUwMl0sXG4gICAgMHgzMzogWy40NzMsIC4xODIsIC41MDJdLFxuICAgIDB4MzQ6IFsuNDc2LCAuMTkxLCAuNTAyXSxcbiAgICAweDM1OiBbLjQ1OCwgLjE4NCwgLjUwMl0sXG4gICAgMHgzNjogWy43LCAuMDEzLCAuNTAyXSxcbiAgICAweDM3OiBbLjQ2OCwgLjE4MSwgLjUwMl0sXG4gICAgMHgzODogWy43MDUsIC4wMSwgLjUwMl0sXG4gICAgMHgzOTogWy40NjksIC4xODIsIC41MDJdLFxuICAgIDB4M0E6IFsuNDU3LCAuMDEyLCAuMjE2XSxcbiAgICAweDNCOiBbLjQ1OCwgLjE4OSwgLjIxNl0sXG4gICAgMHgzRDogWy4zNjgsIC0wLjEzMiwgLjc1Nl0sXG4gICAgMHgzRjogWy42OTMsIC4wMTEsIC4zNjJdLFxuICAgIDB4NUI6IFsuNzQsIC4xMywgLjI3OF0sXG4gICAgMHg1RDogWy43MzgsIC4xMzEsIC4yNzhdLFxuICAgIDB4NUU6IFsuNzM0LCAtMC40NTIsIC41XSxcbiAgICAweDIwMTg6IFsuNzA4LCAtMC40MSwgLjIxNV0sXG4gICAgMHgyMDE5OiBbLjY5MiwgLTAuMzk1LCAuMjE1XSxcbiAgICAweDIwNDQ6IFsuNzIxLCAuMTgyLCAuNTAyXSxcbiAgICAweEUzMDA6IFsuNjgzLCAuMDMyLCAuNDk3XSxcbiAgICAweEUzMDE6IFsuNjE2LCAuMDMsIC40OThdLFxuICAgIDB4RTMwMjogWy42OCwgLjIxNSwgLjMzM10sXG4gICAgMHhFMzAzOiBbLjY3OSwgLjIyNCwgLjMyOV0sXG4gICAgMHhFMzA0OiBbLjQ3MSwgLjIxNCwgLjUwM10sXG4gICAgMHhFMzA1OiBbLjY4NiwgLjAyLCAuMzMzXSxcbiAgICAweEUzMDY6IFsuNTc3LCAuMDIxLCAuMzM0LCB7aWM6IC4wMTN9XSxcbiAgICAweEUzMDc6IFsuNDc1LCAuMDIyLCAuNTAxLCB7aWM6IC4wMTN9XSxcbn07XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtTVkdDaGFyTWFwLCBBZGRQYXRoc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuaW1wb3J0IHtmcmFrdHVyIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvZnJha3R1ci5qcyc7XG5cbmV4cG9ydCBjb25zdCBmcmFrdHVyOiBTVkdDaGFyTWFwID0gQWRkUGF0aHMoZm9udCwge1xuICAgIDB4MjE6ICcxMDIgNTgyVDEwMiA2MjBUMTEyIDY3M1QxNTIgNjg5UTE5MCA2ODkgMTkwIDYzOFExOTAgNjA1IDE2NyAzNzNMMTQ4IDE4N0wxMzMgMTg0UTEwMiA1ODIgMTAyIDYyMFpNOTEgMjRUOTEgNDhUMTA3IDg4VDE0OCAxMDRRMTcxIDEwNCAxODcgODdUMjA0IDQ4UTIwNCAyMiAxODggNVQxNDkgLTEyUTEyNCAtMTIgMTA4IDYnLFxuICAgIDB4MjI6ICczMyA0MzZROCA2MDMgOCA2NDhROCA2NjMgOSA2NzFUMTkgNjg3VDQzIDY5NVE2MyA2OTUgNzQgNjgxUTc2IDY3OCA3NiA2NTBWNjIzTDY2IDUzMlE1NyA0NDMgNTUgNDM2VjQzMkgzM1Y0MzZaTTEyOCA2NjZRMTI4IDY5MSAxNjIgNjkxVDE5NiA2NjhRMTk2IDYzNCAxODYgNTMxUTE3NiA0NDEgMTc2IDQzMkgxNjZRMTU1IDQzMiAxNTUgNDM0TDE0MiA1NDVRMTM1IDYwMyAxMzAgNjQ3UTEyOCA2NjQgMTI4IDY2NicsXG4gICAgMHgyNjogJzE4MSA1MjBRMTgxIDYwNCAyMzEgNjUwVDMyOCA2OTdMMzMwIDY5OFEzMzMgNjk4IDMzNSA2OThRMzM2IDY5OCAzNDAgNjk4VDM0NiA2OTdRMzkwIDY5NyA0MTggNjcwVDQ0NiA2MDRRNDQ2IDU1NCA0MTQgNTExUTM4NCA0NjcgMzAwIDQxN0wyODMgNDA2UTI4MSA0MDUgMjk2IDM3NFQzNDcgMjg2VDQyNSAxODJRNDY2IDEzNSA0NjkgMTM1UTQ3MCAxMzUgNDczIDE0MFQ0ODAgMTUyVDQ4NiAxNjVRNTA5IDIxMCA1MDkgMjYzUTUwOSAyODIgNTA3IDI5MlE0OTggMzE3IDQ4OCAzMzJUNDY1IDM1MlQ0NDMgMzU5VDQxOCAzNjFRMzg4IDM2MSAzNTcgMzU4TDM0NiAzNTZMMzQ3IDM3NFEzNDcgMzk0IDM0OCAzOTZWMzk5SDM1NVEzNjYgMzk2IDUzNSAzOTZRNjYzIDM5NiA2ODkgMzk4TDcwMyAzOTlRNzAzIDM5OCA3MDIgMzc1VDcwMCAzNTFMNjg4IDM1M1E2NTUgMzU2IDYwMSAzNTdRNTUzIDM1NyA1NTMgMzU1UTU2MiAzMzIgNTYyIDI5NFE1NjIgMjgwIDU2MSAyNjdUNTU1IDI0MVQ1NDggMjE4VDUzOSAxOTVUNTI5IDE3NVQ1MTggMTU2VDUwOCAxNDFUNDk3IDEyNkw0ODkgMTE1TDQ5NiAxMDdRNTQ5IDU0IDU5NiA1NFE2MjMgNTQgNjQ0IDY3VDY3NyAxMDFUNjk3IDE0MFQ3MDggMTc0TDcxMCAxODdRNzEwIDE4OCA3MTAgMTg4TDcxMSAxOTBRNzE0IDE5MCA3MjMgMTg3VDczMyAxODNRNzMzIDE3OSA3MzIgMTcyVDcyNiAxNDVUNzE0IDEwN1Q2OTQgNjZUNjY1IDI3VDYyMyAwVDU2OSAtMTFRNTAwIC0xMSA0NDMgNDFMNDM0IDQ5TDQyNSA0MlEzNDggLTkgMjc1IC05UTI1MSAtOSAyMzMgLTZRMTg3IC0xIDE1MiAxOFQ5OCA2MFQ2NyAxMTFUNTIgMTU5VDQ5IDE5NVE0OSAyMzEgNjAgMjYxVDk2IDMxNVQxNDEgMzU0VDE5NyAzOTBMMjA4IDM5N1ExODEgNDU5IDE4MSA1MjBaTTM3NCA1NzdRMzc0IDYwNyAzNTYgNjI5VDMxMSA2NTFRMjg5IDY1MSAyNzEgNjM2UTI0MiA2MTQgMjQyIDU1OVEyNDIgNTMzIDI0OSA1MDJUMjYyIDQ1M1QyNzAgNDM1VDI3OSA0NDBUMjk4IDQ1M1QzMTQgNDY0UTM3NCA1MDMgMzc0IDU3N1pNMTI3IDIxN1ExMjcgMTQ1IDE3MyA4OVQyOTEgMzJRMzE4IDMyIDM0NyA0MlQzOTMgNjNUNDA5IDc1UTM4NCAxMDAgMzI1IDE4NFQyMjcgMzUxUTIyMyAzNjYgMjIwIDM2NlEyMTUgMzY2IDE3OCAzMzhRMTI3IDI5OCAxMjcgMjE3JyxcbiAgICAweDI3OiAnNjkgNjY2UTY5IDY4MCA3OSA2ODdUMTA0IDY5NVExMTIgNjk1IDExNyA2OTRUMTI4IDY4NFQxMzQgNjU5TDEwNCA0MzhRMTA0IDQzNiA5NiA0MzZUODggNDM4UTg4IDQ0NyA3OSA1NDBUNjkgNjU1VjY2NicsXG4gICAgMHgyODogJzI5MyA3MzdWNzE5UTI5MSA3MTggMjg1IDcxNFQyNzYgNzA4VDI2OCA3MDJUMjU4IDY5NVQyNTAgNjg2VDI0MSA2NzRRMTY0IDU3MCAxNjQgMjgyUTE2NCAtMzcgMjMwIC0xMTlRMjczIC0xNzEgMjkyIC0xNzFRMjkzIC0xNzEgMjkzIC0xNzlWLTE4NkgyODlRMjcwIC0xODAgMjU5IC0xNzVRMTc1IC0xMzIgMTQ1IC0yM1QxMTQgMjc1UTExNCA0OTEgMTU3IDU5OFQyOTMgNzM3JyxcbiAgICAweDI5OiAnMjIzIDI1OVEyMjMgMzg2IDIxMiA0NzRUMTc4IDYwOVQxMzYgNjc3VDg5IDcxNFY3MzVRMTIxIDcyNiAxMzkgNzEzUTI3NiA2MjIgMjc2IDI3M1EyNzYgOTggMjQ2IC0yM1EyMjUgLTEwNiAxODkgLTEzOVQ4OSAtMTg3Vi0xNzBMMTAxIC0xNjVRMTQ4IC0xNDYgMTcyIC0xMTBUMjEwIDEzVDIyMyAyNTknLFxuICAgIDB4MkE6ICcxMTggNTczUTExOCA1NzUgNzYgNjAyTDM0IDYyOUw1MCA2NDdMNTUgNjUyTDY2IDY0MlE3NiA2MzMgOTEgNjIwVDExNyA1OThMMTI4IDU5MFExMjggNjYzIDEyNSA2ODdWNjkySDE1MVY2ODlWNjg3UTE1MSA2ODUgMTUxIDY4M1QxNTAgNjc4VDE1MCA2NzJRMTQ1IDYyOCAxNDQgNjA1VjU5MkwyMTkgNjUyTDIzMiA2MzRRMjMyIDYzMiAyMjAgNjI0UTE5NSA2MTAgMTU1IDU4MkwxNDYgNTc1TDE1OCA1NjdRMTc4IDU1MiAxOTcgNTQwVDIyNSA1MjNUMjMzIDUxNlEyMzMgNTE1IDIyNiA1MDZUMjE3IDQ5NUwxNTIgNTQ5TDE0MyA1NTVWNTMwUTE0NCA1MDkgMTQ1IDQ5MlQxNDggNDY2VDE0OSA0NTRRMTQ5IDQ0OSAxNDIgNDQ5SDEyNVY0NjJRMTI4IDUyMiAxMjggNTQ5VjU2MkwxMTUgNTUyUTg4IDUzMSA1OSA1MDZMNDUgNDk1UTQ0IDQ5NSAzOSA1MDVUMzQgNTE2TDExOCA1NzMnLFxuICAgIDB4MkI6ICczNTcgNTg0TDM5OSA1OThWMjgySDcwOUw3MDIgMjYzTDY5NiAyNDNIMzk5Vi02NEwzNzkgLTczTDM1OCAtODJRMzU3IC04MiAzNTcgODFWMjQzSDQ3TDUxIDI1M1E1MiAyNTYgNTQgMjYzVDU4IDI3Mkw2MiAyODJIMzU3VjU4NCcsXG4gICAgMHgyQzogJzk5IDYyUTk5IDgyIDExNCA5NFQxNDQgMTA3UTE1OSAxMDcgMTc4IDc3VDIwNSAyNlEyMTMgNSAyMTMgLTIzUTIxMyAtNDkgMjA3IC02NVQxODEgLTExM1ExMjggLTE4OSAxMjIgLTE5MVExMjEgLTE5MSAxMTYgLTE4NFQxMTEgLTE3NFExMTEgLTE3MyAxMjIgLTE1NVQxNDUgLTExMVQxNTYgLTYyUTE1NiAtNDQgMTUyIC0zNFQxMjcgNEwxMDQgMzdROTkgNDkgOTkgNjInLFxuICAgIDB4MkQ6ICc0NiAyMzZMNjIgMjc0UTYyIDI3NSAzODQgMjc1SDcwNkw2OTkgMjU1TDY5MyAyMzZINDYnLFxuICAgIDB4MkU6ICc4NyA0M1E4NyA2OSAxMDQgODVUMTQyIDEwMlExNjQgMTAyIDE4MiA4NlQyMDAgNDRRMjAwIDIwIDE4MyAzVDE0MSAtMTVRMTE4IC0xNSAxMDMgMlQ4NyA0MycsXG4gICAgMHgyRjogJzIzMCAyNzBRNDI2IDcyMSA0MjggNzIxUTQzNyA3MTkgNDQ3IDcxN0w0NjYgNzEzTDQ0OCA2NzJRNzggLTE4MCA3NyAtMTgxUTc3IC0xODIgNTUgLTE4MkwzNCAtMTgxTDIzMCAyNzAnLFxuICAgIDB4MzA6ICcyMTIgLTEzUTE4NCAtMTMgMTU2IC0yVDEwMSAzMlQ1OSA5N1Q0MiAxOTVRNDIgMzExIDEzMiAzOTZRMTcwIDQzMyAyMTEgNDYyVDI2MiA0OTJRMjcyIDQ5MiAzMDEgNDc3VDM2NiA0MzRUNDI5IDM2MFQ0NTYgMjU4UTQ1NiAxNjEgMzc4IDc0VDIxMiAtMTNaTTM4MSAyMDlRMzgxIDI1NyAzNjUgMjk1VDMyOCAzNTVUMjgyIDM5MFQyNDMgNDA4VDIyMyA0MTNRMjIwIDQxMyAyMDQgNDAzVDE2NyAzNzZUMTM3IDM0MVExMTkgMzA1IDExOSAyNTBRMTE5IDE2OCAxNTkgMTE0VDI2MyA1OVEzMDggNTkgMzQ0IDkzVDM4MSAyMDknLFxuICAgIDB4MzE6ICcxMjMgNDU5UTE0NSA0NTkgMTcwIDQ2MFQyMTcgNDYyVDI1NiA0NjRUMjg0IDQ2NkwyOTUgNDY3UTI5NiA0NjcgMjk2IDQ2N1QyOTcgNDY4UTI5OSA0NjggMzAyIDQ2NlQzMDcgNDYyTDMwOSA0NTlRMzA3IDQ1NCAzMDQgNDI0VDI5OSAzNDFUMjk3IDIzNVEyOTcgMTM5IDI5OCAxMDFUMzAyIDU1VDMxMyA0NFEzMTYgNDMgMzY3IDQzTDQ2MCA0NlE0NjAgMzUgNDU5IDIyVi0xSDQ1MFE0MDIgMiAyODEgNlEyMjIgNiAxNzEgNFQ5MSAxVDU2IC0xTDQ3IC0yVjQzSDEyMUgxNzBRMTk1IDQzIDIwMSA0NVQyMDkgNTZRMjEyIDY5IDIxMiAyMTRRMjEyIDMzMyAyMDkgMzY1VDE5NCA0MDlRMTgzIDQxNyAxNjEgNDIzVDEyMSA0MzBMMTA0IDQzMlExMDMgNDMyIDEwMyA0NDZWNDU5SDEyMycsXG4gICAgMHgzMjogJzEwNCAzODRRMTE1IDM5NCAxMzMgNDA5VDE5OSA0NDlUMjgxIDQ3NFEzMjEgNDc0IDM1MSA0NDdUMzg1IDM3OFEzODUgMzI4IDMzMyAyNTVUMjI4IDEyN1QxNzYgNzJRMTc2IDY3IDE4MyA2NVExODQgNjUgMjAzIDY1VDI2MCA2N1QzMzEgNjlMNDc1IDczTDQ4NCA2N1E0ODQgNjQgNDcyIDMzTDQ2MCAxSDYwVjE3TDEwNyA2MVEyMTAgMTU5IDI0OSAyMDhRMzA5IDI4MyAzMDkgMzMxUTMwOSAzNjMgMjg1IDM4OVQyMjggNDE1UTIxMiA0MTUgMTg0IDQwM1QxMzQgMzc5TDExNCAzNjdMMTA0IDM4NCcsXG4gICAgMHgzMzogJzMwNSAzMjhRMzA1IDM3MiAyNzkgMzk2VDIxNCA0MjFIMjExUTE3MiA0MjEgMTI4IDM4NEwxMDcgMzk4TDExNiA0MDVRMTUxIDQzNyAxOTEgNDU1VDI1MSA0NzNIMjYwUTMxNCA0NzMgMzQxIDQ1NVQzODIgMzk0UTM4NCAzODYgMzg0IDM2N1QzODIgMzM4UTM2MiAyNjMgMjcxIDIxN0wyNTYgMjEwTDI1NyAyMDZMMjU5IDIwMlEyNjAgMjAyIDI3MiAyMDFUMjk2IDE5OFQzMjQgMTkyVDM1NSAxNzlUMzg0IDE1N1Q0MTAgMTIzVDQyNyA3NVE0MjkgNjQgNDI5IDQxUTQyOSAtNTkgMzUzIC0xMjBUMTgzIC0xODJMODggLTE2NFE4MSAtMTYyIDY5IC0xNTdUNDggLTE0N1QzOSAtMTQxUTM5IC0xMzkgNDYgLTEyN0w1MyAtMTE0TDY5IC0xMjJRMTI5IC0xNDkgMTcxIC0xNDlRMjE4IC0xNDkgMjUzIC0xMzFUMzA1IC04M1QzMzAgLTI2VDMzOCAyOVEzMzggNDEgMzM2IDU1VDMyOCA4OVQzMDggMTI3VDI3MyAxNTNRMjI4IDE3MSAxNjIgMTcxUTE1OCAxNzEgMTUyIDE3MVQxNDIgMTcwSDEyN1YyMDRIMTM0UTIzMiAyMTQgMjc1IDI1N1EzMDUgMjkyIDMwNSAzMjgnLFxuICAgIDB4MzQ6ICcyOTkgLTE3OVEzMDYgLTE1NiAzMDYgLTQ4VjBIMTFWN1ExMCAxMCAxMCAxOFExMCAyMyAxNTQgMjM2TDI5OCA0NDlRMjk4IDQ1MCAzMzkgNDYzTDM3OSA0NzZRMzg1IDQ3MyAzODQgNDcwVjQ2NlEzODQgNDYzIDM4NCA0NTdUMzg0IDQ0NFQzODMgNDI3VDM4MyA0MDhRMzgxIDMyOCAzODEgMjQ4UTM4MSA0NiAzODQgNDBIMzg3UTQyMiA0MCA0NjAgNDRRNDY1IDQ0IDQ3MCA0NFQ0NzggNDRMNDgxIDQ1UTQ4MSA0MyA0NzggMjRUNDczIDFRNDczIC0xIDQ2NCAtMVE0NjIgLTEgNDUxIC0xVDQzMCAwSDM4N1YtNzZMMzg5IC0xNTZWLTE2MUwzMTEgLTE5MVEyOTkgLTE4MSAyOTkgLTE3OVpNMjk5IDM2NEgyODdMMjc3IDM1MlEyMzQgMjk3IDE4NiAyMjRUMTEyIDEwNFQ3OSA0M1E3OSA0MiAxOTIgNDJIMzA2VjExNVEzMDYgMzAwIDI5OSAzNTlWMzY0JyxcbiAgICAweDM1OiAnMzM0IDI1UTMzNCA5OSAyOTYgMTM0VDIwNyAxNjlRMTU0IDE2OSAxMDcgMTIzTDk4IDExNEw4OSAxMjBMODAgMTI1VjQ1OEg0MjBRNDIwIDQ1NiA0MDkgNDE4TDM5NyAzNzlRMzk3IDM3OCAyNjQgMzc4SDEzMVExMzAgMzc3IDEyOCAzNzZUMTI1IDM3NFQxMjQgMzcxVDEyMiAzNjhUMTIyIDM2M1QxMjEgMzU2VDEyMSAzNDVWMjc5VjE5MEwxMzAgMTg2TDE0MCAxOTBRMTk2IDIxNCAyNjAgMjE0UTMxMSAyMTQgMzQ4IDE5N1Q0MDQgMTUzVDQzMSA5OVQ0NDAgNDJUNDMzIC0xNlQ0MDYgLTc2VDM1NiAtMTMwVDI3NiAtMTY5VDE2MyAtMTg0SDE1NlExMTAgLTE4NCA1NyAtMTYzTDQ3IC0xNTlMNTMgLTE0N0w1OCAtMTM0UTYxIC0xMzQgNzQgLTEzOVQxMTAgLTE0OFQxNTYgLTE1M1EyMDYgLTE1MyAyNDMgLTEzNVQyOTkgLTg3VDMyNiAtMzBUMzM0IDI1JyxcbiAgICAweDM2OiAnNDUgMjQwUTQ1IDMyOCA3MyA0MDZUMTQzIDUzNlQyMzUgNjI2VDMyNyA2ODFUMzk5IDY5OVE0MDAgNjk5IDQwNCA2OTlUNDExIDcwMFE0MjQgNzAwIDQ0MSA2OTZUNDU5IDY4OVE0NTkgNjcxIDQ1MSA2MzdRNDUxIDYzMyA0NDcgNjMyTDQ0NCA2MjlMNDM0IDYzM1E0MTMgNjQwIDM4NCA2NDBIMzc3UTI5OSA2NDAgMjIyIDU2NVExODIgNTMxIDE1NiA0NjNUMTI5IDMxNVYzMDZIMTM2TDE0OSAzMTVRMjI5IDM3NiAzMTYgMzc2SDMxOFEzOTMgMzc2IDQzMiAzMjZUNDcxIDIxM1E0NzEgMTI5IDQwMiA1OFQyMzcgLTEzVDkzIDU5VDQ1IDI0MFpNMzkxIDE3MlEzOTEgMjMxIDM1NCAyNzJUMjU4IDMxNFEyMzAgMzE0IDIwMCAzMDJUMTU0IDI3OVQxMzMgMjYyTDEzNCAyNDlRMTU0IDMyIDI2NiAzMlEzMTUgMzIgMzUzIDY0VDM5MSAxNzInLFxuICAgIDB4Mzc6ICczOTUgMzc3TDM5MSAzODJIMjI1UTU5IDM4MiA1OSAzODNMNzQgNDIzUTg5IDQ2NCA4OSA0NjVROTAgNDY4IDk0IDQ2OFExNDYgNDYwIDM1MCA0NThINDk4VjQ0Mkw0NzMgNDA2UTI0MSA3NSAxMjUgLTE1NkwxMTMgLTE4MUg0MEwzNyAtMTY4TDU3IC0xNDBRMTE1IC01OCAxOTkgNzBUMzM5IDI4N1QzOTUgMzc3JyxcbiAgICAweDM4OiAnMjIwIC0xMFExNjggLTEwIDEzMSA2VDc1IDUwVDQ4IDEwM1Q0MCAxNTdRNDAgMjIzIDc3IDI2NlExMDMgMjk1IDE1NiAzMjhUMjI1IDM3NVEyNDcgMzkzIDI0NyAzOTRMMjA2IDM2MVEyMDUgMzYxIDE5MyAzNjhUMTY0IDM5MVQxMzEgNDI2VDEwMiA0NzRUOTAgNTMxUTkwIDU4MCAxMTQgNjE1UTE0NiA2NjAgMjM4IDY5OEwyNTQgNzA1TDI2MiA3MDRRMjg4IDcwNCAzMzIgNjkzVDQwMiA2NTZRNDM0IDYyMCA0MzQgNTY4UTQzNCA1MTggNDAxIDQ3NVQzMjEgNDAyTDMwNSAzOTFMMzM2IDM2OFEzMzkgMzY2IDM1MyAzNTZUMzcyIDM0M1QzODkgMzMwVDQwNiAzMTZUNDIwIDMwMVQ0MzQgMjgzVDQ0NSAyNjVUNDU0IDI0NFQ0NTggMjIyVDQ2MSAxOTVRNDYxIDEwNiAzODkgNDhUMjIwIC0xMFpNMzUwIDU0NVEzNTAgNTc4IDMzNyA2MDFUMzA0IDYzNFQyNjYgNjQ5VDIzNCA2NTNMMjI0IDY1NEwyMDQgNjM5UTE5NiA2MzQgMTkxIDYyOVQxODIgNjIxVDE3NiA2MTRUMTczIDYwOVQxNzAgNjAzVDE2OCA1OTdRMTY1IDU4NSAxNjUgNTY3UTE2NSA0OTcgMjYxIDQyNEwyNzMgNDE1UTM1MCA0NjcgMzUwIDU0NVpNMjYxIDQwNUwyNjMgNDA3UTI2MiA0MDcgMjYxIDQwNVpNMjU4IDQwM1EyNTcgNDAzIDI1NSA0MDFMMjU0IDM5OUwyNTYgNDAwUTI1OCA0MDIgMjU4IDQwM1pNMjUyIDM5OFEyNTEgMzk4IDI0OSAzOTZMMjQ4IDM5NEwyNTAgMzk1UTI1MiAzOTcgMjUyIDM5OFpNMjQ1IDM2UTI3NiAzNiAzMDAgNDVUMzM4IDY5VDM2MCAxMDJUMzcxIDEzNlQzNzQgMTY4UTM3NCAyMTEgMzQxIDI1NVEzMjQgMjc1IDMwNSAyODlUMjM1IDMzMlEyMzEgMzMwIDIxNSAzMjFUMTkzIDMwN1QxNzMgMjkyVDE1MyAyNzFUMTM4IDI0N1QxMjcgMjE2VDEyMyAxNzdRMTIzIDE0NiAxMzIgMTE3VDE3MCA2MlQyNDUgMzYnLFxuICAgIDB4Mzk6ICczNTMgOTNUMzUyIDkzVDMyMCA3OVQyNTEgNDlUMjAxIDM0UTEyNyAzNyA4NyA3OVEyOCAxMzggMjggMjM0UTI4IDI3MyAzNyAzMDRUNjAgMzU1VDEwMSAzOTZUMTUyIDQyOVQyMTggNDYyTDIzNCA0NjlIMjQzUTM0OCA0NjEgMzk1IDQxN1E0NjYgMzQ4IDQ2NiAyMDFRNDY2IDcyIDM5NyAtMjlUMjExIC0xNjNRMTU1IC0xNzkgOTEgLTE4Mkg3MlYtMTU0SDgwUTE0NCAtMTU0IDIwMiAtMTMxVDI5NyAtNjBRMzE4IC0zMSAzMzMgN1QzNTIgNjhMMzU3IDkyUTM1MyA5MyAzNTIgOTNaTTM2OSAyMDhRMzY5IDI0MCAzNjIgMjcyVDMzOSAzMzlUMjkwIDM5NFQyMTQgNDE1UTE3MSA0MTUgMTQ0IDM3MlQxMTYgMjY2UTExNiAxOTMgMTU0IDE0NFQyMzggOTVIMjQ5UTM2OSA5NSAzNjkgMjA4JyxcbiAgICAweDNBOiAnNTAgMzc3VDUwIDQwMFQ2NCA0NDBUOTkgNDU3UTEyOCA0NTcgMTQ2IDQ0MFQxNjUgMzk5UTE2NSAzNzUgMTQ2IDM1OVQxMDIgMzQyVDY0IDM1OVpNNTMgMTlUNTMgNDNUNjYgODZUMTAzIDEwNVExMjkgMTA1IDE0OCA4N1QxNjggNDFRMTY4IDE3IDE0NyAzVDEwMiAtMTJRODAgLTEyIDY3IDMnLFxuICAgIDB4M0I6ICc0NyAzOTlRNDcgNDI0IDYyIDQ0MVQxMDEgNDU4VDE0MyA0NDJUMTYyIDQwMFQxNDQgMzU5VDEwMSAzNDNRNzggMzQzIDYzIDM2MFQ0NyAzOTlaTTc2IDg2UTc2IDg4IDgwIDkxVDkxIDk2VDEwNiA5OVExMTkgOTkgMTMxIDg2UTE3OSAzNSAxNzkgLTI1UTE3OSAtNjQgMTQ2IC0xMTVUODkgLTE4OVE4NiAtMTg3IDgzIC0xODVUNzkgLTE4MlQ3NiAtMTgwVDc1IC0xNzdUNzcgLTE3M1Q4MCAtMTY4UTEyMSAtMTA4IDEyMSAtNjRRMTIxIC00NCA5NCAtNVQ2NiA1MlE2NiA2NiA3MSA3NVQ3NiA4NicsXG4gICAgMHgzRDogJzcyNSAzNjZRNzI0IDM2NSA3MjEgMzQ5VDcxNiAzMzFWMzI5SDM4NVE1NCAzMjkgNTQgMzMxUTU1IDMzMiA1OSAzNDlUNjMgMzY4SDM5NFE3MjUgMzY4IDcyNSAzNjZaTTcyNSAxNjlRNzI0IDE2OCA3MjEgMTUyVDcxNiAxMzRWMTMySDM4NVE1NCAxMzIgNTQgMTM0UTU1IDEzNSA1OSAxNTJUNjMgMTcxSDM5NFE3MjUgMTcxIDcyNSAxNjknLFxuICAgIDB4M0Y6ICc0NiA1NTdRNDYgNjEzIDEwMyA2NTNUMjI3IDY5M1EyODcgNjkzIDMyMiA2NTlUMzU3IDU2NFEzNTcgNTE3IDMyNiA0NjlUMjU5IDM5MFQxOTEgMzI2VDE2MCAyNzJRMTYwIDI0MCAxODcgMjIxUTE5MyAyMTcgMTkzIDIxNlExODIgMjA5IDE3MCAyMDBMMTQ3IDE4NFExMjcgMTkyIDExMyAyMDlUOTggMjUwUTk4IDI5MCAxOTMgMzc2UTI4NyA0NTQgMjg3IDU0MlEyODcgNTgxIDI2MiA2MTZUMTg4IDY1MlExNDMgNjUyIDEyNiA2MzFUMTA4IDU4OFExMDggNTU5IDE0MCA1MjdMNzkgNDkwUTQ2IDUxNSA0NiA1NTdaTTEwOCA0N1ExMDggNjggMTIzIDg1VDE2MCAxMDNRMTc5IDEwMyAxOTggOTBUMjE3IDQ2UTIxNSAyNCAyMDEgN1QxNjQgLTExUTE0MiAtMTEgMTI1IDZUMTA4IDQ3JyxcbiAgICAweDVCOiAnMjYyIC0xMTlRMjI0IC0xMjAgMTkxIC0xMjNUMTQxIC0xMjhUMTE4IC0xMzBRMTE3IC0xMzAgMTE3IDMwNVY3NDBIMTIyUTE0MSA3MzcgMjE5IDczNkgyNzhWNzIzUTI3OCA3MTEgMjc3IDcxMUwxNTkgNjk5Vi05M0gxNjJRMTY3IC05MyAyMjAgLTk2VDI3NiAtMTAwUTI3OCAtMTAwIDI3OCAtMTA5Vi0xMTlIMjYyJyxcbiAgICAweDVEOiAnNjQgNzMzUTg5IDczMyAxMTAgNzM0VDE0MyA3MzdUMTU4IDczOEgxNjBWLTEzMUgxNTRRMTAxIC0xMjUgNDAgLTEyNEgtNFYtMTAzSDFRMyAtMTAyIDU3IC05OFQxMTMgLTkySDExOFY3MDBMNjQgNzAzUTcgNzA3IDMgNzA4SC00VjczMkgyMVEzNCA3MzMgNjQgNzMzJyxcbiAgICAweDVFOiAnMCA0NjRMMjUwIDczNEwyNjIgNzIyUTI3NCA3MTIgMzg0IDU5OEw0OTUgNDg2UTQ4MyA0NzggNDY3IDQ2N0w0NTYgNDU5TDI0OCA2NzJMMTU0IDU4MEwyMyA0NTJRMTcgNDU0IDEwIDQ1OFQwIDQ2NCcsXG4gICAgMHgyMDE4OiAnMTE3IDQxMFE5NyA0MTAgNzEgNDU1VDQ1IDUzOVE0NSA1ODggMTI5IDY5NEwxNDAgNzA4UTE0MiA3MDggMTUzIDY5NEwxNDcgNjgyUTEwNiA2MDkgMTA2IDU4MlY1NzdWNTcxUTEwNiA1NDggMTMyIDUxMVQxNTggNDU1UTE1OCA0MzQgMTQzIDQyMlQxMTcgNDEwJyxcbiAgICAweDIwMTk6ICcxMDUgNTI5UTEwNSA1NDYgNzcgNTg4VDQ5IDY1MVE0OSA2NTggNTEgNjY2UTUzIDY3MiA2NyA2ODJUOTIgNjkyUTExMSA2OTIgMTM3IDY0NFQxNjMgNTYzUTE2MyA1MzQgMTQzIDQ5N1Q5OSA0MjhUNzQgMzk1UTcyIDM5NSA2NSA0MDBUNTggNDA3UTEwNSA0NzYgMTA1IDUyM1Y1MjknLFxuICAgIDB4MjA0NDogJzIzMCAyNzBRNDI2IDcyMSA0MjggNzIxUTQzNyA3MTkgNDQ3IDcxN0w0NjYgNzEzTDQ0OCA2NzJRNzggLTE4MCA3NyAtMTgxUTc3IC0xODIgNTUgLTE4MkwzNCAtMTgxTDIzMCAyNzAnLFxuICAgIDB4RTMwMDogJzQyNyA0MzZRNDI3IDQzNCA0MjcgNDI1VDQyOSAzOThUNDMwIDM2MlE0MzAgMjIyIDM5NiAxMDlMMzkzIDk5TDMwNSAzM1EyMTggLTMyIDIxNiAtMzJRMjA4IC0yOSAxNDIgMjJMOTEgNjhMNzggODFMNzcgOTRRNzUgMTMwIDc1IDE3M1E3NSAyNDUgODcgMzQ3TDEzNSAzODVRMTc4IDQxOCAxODQgNDI0TDE3NyA0MjhRMTc0IDQyOSAxNzAgNDMxUTExNiA0NTQgOTYgNDczVDc1IDUzNFE3OSA2MDggMTU0IDY4M1ExNjQgNjc3IDE2NCA2NzNRMTY0IDY3MCAxNTcgNjYyVDE0NCA2MzdUMTM3IDU5OFExMzcgNTUyIDE4MiA1MThUMjgwIDQ3MFQzODAgNDQ3VDQyNyA0MzZaTTM0MiAzNzFMMjc1IDM5NEwyMDggNDE3UTIwMyA0MTcgMTkyIDM5OVQxNjggMzM0VDE1NiAyMjlRMTUzIDE4NyAxNTMgMTU3UTE1MyAxNDEgMTU2IDEzNVExNTggMTI1IDIwOCA4OFQyODAgNTFRMzA2IDUxIDMyNiAxMjBUMzQ2IDI5N1EzNDYgMzM5IDM0NCAzNTRUMzQyIDM3MScsXG4gICAgMHhFMzAxOiAnMzkgNTUxTDM1IDU2OUw1MiA1NzdRNzIgNTg2IDk4IDU5NVQxNDAgNjEwVDE1OCA2MTZRMTc0IDYxMiAyMDAgNjA0VDI5MyA1NjBUNDEyIDQ3N1E0MTQgNDc1IDQxNyA0NzJRNDI4IDQ2MiA0MzAgNDUwVDQzMiAzNzZRNDMyIDIyMyA0MDEgMTI0UTM5NSAxMDYgMzkzIDEwM1QzODIgOTJRMzUxIDY4IDI4MSAyMFQyMDYgLTI5UTIwMSAtMzEgMTM3IDI2TDEwMCA2MEw3OCA4M0w3NyAxMTJRNzYgMTMyIDc2IDE3MFE3NiAyNTkgODYgMzQyTDg4IDM2MEwxMDEgMzcxUTExNiAzODYgMTYzIDQyMlQyMTUgNDU5UTIxNiA0NTkgMjI0IDQ1NVQyMzMgNDUwTDIyOSA0NDZRMjI1IDQ0MiAyMTggNDM0VDIwMyA0MTlRMTc5IDM5NCAxNzUgMzg5VDE2OCAzNzJRMTU2IDMzNCAxNTYgMjYyUTE1NiAxNjcgMTY0IDEzN1ExNjggMTI1IDE5NiAxMDJUMjUyIDYyTDI3OCA0NVEyNzkgNDUgMjg1IDUyVDMwMiA3OFQzMjIgMTI2VDMzOSAyMDVUMzQ2IDMxNlEzNDYgMzY3IDM0NCAzODlMMzQzIDQwNkwzMjYgNDIzUTIyOCA1MjAgMTEzIDU1OUwxMDAgNTY0TDcwIDU1N0wzOSA1NTEnLFxuICAgIDB4RTMwMjogJzEyMyAzODZMMTIwIDQzMVExMTYgNDc2IDExNiA1MTFWNTIwUTExNiA1OTMgMTc0IDY0OVEyMDcgNjgwIDIzNiA2ODBRMjU4IDY4MCAyODQgNjY0VDMxMiA2NDhRMzE4IDY0OCAzMjcgNjU2UTMyOCA2NTcgMzMwIDY1OVEzMzcgNjY0IDMzNyA2NjFRMzM3IDY2MCAzMzggNjU3UTMzOCA2NTIgMzM5IDY0OEwyNjggNTY2TDI2MCA1NzRRMjM0IDYwMCAyMDYgNjAwUTE4MiA2MDAgMTY0IDU4NVQxNDUgNTQxUTE0NSA0OTIgMjExIDM4NkwyNjcgMzg1SDMyNEwyOTkgMzU0SDIxNFYzMTJRMjE0IDg2IDE5MyAtNThMMTkyIC02OUwxMTYgLTIxNUgxMDhROTIgLTIxNSA5MiAtMjEyUTkzIC0yMTEgMTAwIC0xODlUMTE2IC0xMzVUMTI4IC04MFExMzQgLTQxIDEzNCAyMlExMzQgNTQgMTMwIDE4NVQxMjUgMzQ5VjM1NEgyOUw1OSAzODVIOTFRMTIzIDM4NSAxMjMgMzg2JyxcbiAgICAweEUzMDM6ICc5MSA1MzBROTEgNTY0IDExNiA2MDBUMTY0IDY1NlQxOTQgNjc4UTE5NSA2NzggMjAwIDY3OFQyMDkgNjc5UTI2OCA2NzkgMzE2IDYzOUwyOTMgNTkzUTI2NyA1NDcgMjYzIDU0NkgyNjJRMjYwIDU0NiAyNTYgNTUzUTIyMiA2MTMgMTgwIDYxM1ExNjAgNjEzIDE0NiA1OTlUMTMyIDU2NFQxNzAgNDc0VDIxMCAzODhIMzE4TDI5NiAzNTZIMjA2VjMyMlEyMDQgMjg0IDIwNCAyNTVRMjAyIDIyMSAyMDIgMTYxVjk5UTIwMiAyOCAxOTQgLTIyVDE2MCAtMTI0UTE0OCAtMTQ2IDExNiAtMTk5TDEwMSAtMjI0TDkxIC0yMjBRODUgLTIxOCA4NCAtMjE3VDgzIC0yMTVMMTAxIC0xNjFRMTE2IC0xMTQgMTE5IC03M1QxMjIgMTA4UTExOSAzMzQgMTE3IDM1MlYzNTZINzJMMjggMzU3TDY2IDM4OEg5MlExMTggMzg4IDExOCAzODlMMTA5IDQzM1E5MSA1MTQgOTEgNTMwJyxcbiAgICAweEUzMDQ6ICcyNTQgLTE1MFEyOTMgLTE1MCAzMjggLTEyNlQzNjMgLTU0UTM2MyAtMzggMzUyIDI5VDMzOSA5OEwyNTAgMzRRMTYwIC0zMCAxNTkgLTMwTDc3IDY0VjcxUTc0IDk1IDc0IDE3NFE3NCAyMTIgNzUgMjQzVDc5IDI5NFQ4MyAzMjhUODcgMzUyVDkwIDM2NkwxMTcgMzg0UTIwNiA0NDYgMjM4IDQ2NEwyNTAgNDcxUTI3NyA0NTUgMzA2IDQ0M1QzNTAgNDI3TDM2NSA0MjNRMzY3IDQyMyA0MDUgNDQzVDQ0MyA0NjVMNDQ5IDQ1NVE0MzEgNDE0IDQyNiAzNjJUNDE4IDIwMVE0MTggMTM1IDQyMCAxMjFRNDM4IC00IDQzOCAtMTlRNDM4IC0yNiA0MzggLTMxVDQzNCAtNDJUNDI5IC01MVQ0MjAgLTYzVDQwOCAtNzdUMzkxIC05NVQzNzAgLTExOVQzNDYgLTE0N1QzMjUgLTE3MFQzMDkgLTE4N1QyOTEgLTIwMFQyNzQgLTIwN1QyNTIgLTIxM1QyMjUgLTIxNFExNzUgLTIxNCAxMzIgLTE5NlQ3MCAtMTYwTDUyIC0xNDNRNTIgLTEzOCA5MCAtNDhROTAgLTQ3IDk1IC00N0gxMDFRMTA4IC04MSAxNDYgLTExNVQyNTQgLTE1MFpNMzQxIDEzNlEzNDEgMTU3IDM0NCAyNDJUMzQ3IDM0OFYzNTVMMzM0IDM1NlEyOTkgMzU5IDI2MiAzNjdUMjAzIDM4M1QxNzkgMzkxUTE3NyAzOTEgMTczIDM3N1QxNjMgMzIzVDE1OCAyMjdRMTU4IDE2NCAxNjEgMTI4VjEyMUwxNzQgMTA2UTIwMyA3NSAyMjMgNTlMMzQxIDEyN1YxMzYnLFxuICAgIDB4RTMwNTogJzkyIDQ0NlE5MiA2MDMgODIgNjY0UTk0IDY3MCA5NSA2NzBMOTYgNjY2UTk4IDY2MSAxMDEgNjUxVDEwOCA2MzNRMTIxIDU5OCAxMjEgNTk3TDE0MSA2MTJRMjQ3IDY4NiAyNTAgNjg2UTI1MSA2ODYgMjY2IDY3OVEyNjEgNjc0IDI0MyA2NTlUMjEzIDYzMlQxOTAgNTk3VDE3MyA1NDZRMTcyIDU0MSAxNzEgNTMwVDE3MCA1MTFUMTcwIDUwMlExNzEgNTAyIDIyMiA1NDJMMjczIDU4MlEzMDggNTIyIDMxNSA1MDRMMjc5IDQ0OUwyNjkgNDYyUTIzMSA1MDYgMjE1IDUwNlEyMDIgNTA2IDE5MCA0OTBRMTY0IDQ1OCAxNjQgMzk1VjM5MEgyNzlMMjY2IDM3M0wyNTQgMzU1SDE2N1YzMDZRMTY5IDI1MiAxNjkgMjE3UTE3MCAxOTUgMTcwIDE0N1YxMTdMMjAwIDkyUTIzNCA2NCAyMzcgNjRRMjQzIDY0IDI3NyA4MUwzMTEgOTlWNzVRMzEwIDc1IDI0MiAyN0wxNzQgLTIwTDE1NiAtM1E4OCA2MCA4MSA2MEw3OSA2MlE4MCA2MCA4MiA2MlE4NyA2NyA4NyAyOTBWMzU1SDU3TDI2IDM1Nkw3MyAzOTBIOTJWNDQ2JyxcbiAgICAweEUzMDY6ICcxMTcgNTMxUTExNyA1MzMgMTM3IDU0NFQxNzggNTY2TDE5OCA1NzdRMjAwIDU3NyAyMDQgNTc1VDIwOCA1NzJWNTcwUTIwOCA1NjggMjA4IDU2NlQyMDcgNTYwUTE5NyA0OTYgMTk3IDM5N1YzOTJIMzIxTDI5NSAzNTNIMTk5VjI2MFExOTkgMTU3IDIwMCAxNDVWMTIyTDI2OSA2OFEyNzEgNjcgMjc0IDY3UTI4MiA2NyAzMTAgODNUMzQyIDEwMFEzNDMgMTAwIDM0NSA5MlQzNDYgODNMMjExIC0yMUwxNzIgMTJRMTE3IDU5IDExNyA2M1ExMTcgNjUgMTE3IDg3VDExOSAxNTBUMTIwIDIzOFYzNTNINzVMMjkgMzU0TDY1IDM5MUgxMThWNDYwUTExNyA0OTggMTE3IDUzMScsXG4gICAgMHhFMzA3OiAnMzM3IDkxVjc4TDMyNCA3MVEyODggNTMgMjU2IDI5VDIwNiAtOFQxODAgLTIyUTE3NCAtMjIgMTU4IC05UTgyIDQ2IDYwIDQ2SDU5TDYzIDUxUTY3IDU2IDczIDY4VDg1IDk2UTEwMSAxNTggMTAxIDI1NFExMDEgMzAwIDk1IDMzMFQ4MyAzNzBUNjYgMzk0TDUzIDM4OFE0OCAzODUgNDEgMzgyVDI0IDM3NFEyMiAzNzYgMjAgMzc4VDE2IDM4MVQxMyAzODNUMTAgMzg1VjM4NkwxMTkgNDc1UTE1MCA0MzkgMTYwIDQzMEwxNzEgNDIyVjQwOVExNzMgMzc3IDE3MyAzMDBRMTczIDIyOCAxNjYgMTgzVDE1MiAxMjJUMTQ1IDEwMlEyMDcgODEgMjQyIDU4TDMzNyAxMDRWMTExUTM0MCAxNDYgMzQwIDIyN1EzNDAgMzIwIDMzOSAzNTFUMzM4IDQwOFY0MjNMNDIyIDQ2OVE0MjUgNDY1IDQyOSA0NjJMNDI2IDQzOFE0MTMgMzU0IDQxMyAyNTFRNDEzIDE1MiA0MjMgMTE5UTQyNiAxMTAgNDM1IDk2VDQ1MiA4MlE0NTQgODIgNTA5IDEwM1E1MTQgOTggNTE0IDg5UTUxNCA4NyA1MDcgODFUNDcyIDUxVDQwOSAtN0wzOTUgLTIwUTM5MyAtMTggMzkwIC0xN1EzODYgLTE0IDM4MiAtNlEzODAgLTIgMzc5IDFRMzY5IDI0IDM2MSA0MFQzNDggNjJUMzQxIDczVDMzOCA4NEwzMzcgOTEnLFxufSx7XG59KTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IGl0YWxpYzogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHgyMTogWy43MTYsIDAsIC4zMDcsIHtpYzogLjA3M31dLFxuICAgIDB4MjI6IFsuNjk0LCAtMC4zNzksIC41MTQsIHtpYzogLjAyNH1dLFxuICAgIDB4MjM6IFsuNjk0LCAuMTk0LCAuODE4LCB7aWM6IC4wMX1dLFxuICAgIDB4MjU6IFsuNzUsIC4wNTYsIC44MTgsIHtpYzogLjAyOX1dLFxuICAgIDB4MjY6IFsuNzE2LCAuMDIyLCAuNzY3LCB7aWM6IC4wMzV9XSxcbiAgICAweDI3OiBbLjY5NCwgLTAuMzc5LCAuMzA3LCB7aWM6IC4wN31dLFxuICAgIDB4Mjg6IFsuNzUsIC4yNSwgLjQwOSwge2ljOiAuMTA4fV0sXG4gICAgMHgyOTogWy43NSwgLjI1LCAuNDA5XSxcbiAgICAweDJBOiBbLjc1LCAtMC4zMiwgLjUxMSwge2ljOiAuMDczfV0sXG4gICAgMHgyQjogWy41NTcsIC4wNTcsIC43NjddLFxuICAgIDB4MkM6IFsuMTIxLCAuMTk0LCAuMzA3XSxcbiAgICAweDJEOiBbLjI1MSwgLTAuMTgsIC4zNThdLFxuICAgIDB4MkU6IFsuMTIxLCAwLCAuMzA3XSxcbiAgICAweDJGOiBbLjcxNiwgLjIxNSwgLjc3OF0sXG4gICAgMHgzMDogWy42NjUsIC4wMjEsIC41MTEsIHtpYzogLjA1MX1dLFxuICAgIDB4MzE6IFsuNjY2LCAwLCAuNTExXSxcbiAgICAweDMyOiBbLjY2NiwgLjAyMiwgLjUxMSwge2ljOiAuMDR9XSxcbiAgICAweDMzOiBbLjY2NiwgLjAyMiwgLjUxMSwge2ljOiAuMDUxfV0sXG4gICAgMHgzNDogWy42NjYsIC4xOTQsIC41MTFdLFxuICAgIDB4MzU6IFsuNjY2LCAuMDIyLCAuNTExLCB7aWM6IC4wNTZ9XSxcbiAgICAweDM2OiBbLjY2NSwgLjAyMiwgLjUxMSwge2ljOiAuMDU0fV0sXG4gICAgMHgzNzogWy42NjYsIC4wMjIsIC41MTEsIHtpYzogLjEyM31dLFxuICAgIDB4Mzg6IFsuNjY2LCAuMDIxLCAuNTExLCB7aWM6IC4wNDJ9XSxcbiAgICAweDM5OiBbLjY2NiwgLjAyMiwgLjUxMSwge2ljOiAuMDQyfV0sXG4gICAgMHgzQTogWy40MzEsIDAsIC4zMDddLFxuICAgIDB4M0I6IFsuNDMxLCAuMTk0LCAuMzA3XSxcbiAgICAweDNEOiBbLjM2NywgLTAuMTMzLCAuNzY3XSxcbiAgICAweDNGOiBbLjcxNiwgMCwgLjUxMSwge2ljOiAuMDR9XSxcbiAgICAweDQwOiBbLjcwNSwgLjAxMSwgLjc2Nywge2ljOiAuMDIyfV0sXG4gICAgMHg1QjogWy43NSwgLjI1LCAuMzA3LCB7aWM6IC4xMzl9XSxcbiAgICAweDVEOiBbLjc1LCAuMjUsIC4zMDcsIHtpYzogLjA1Mn1dLFxuICAgIDB4NUU6IFsuNjk0LCAtMC41MjcsIC41MTEsIHtpYzogLjAxN31dLFxuICAgIDB4NUY6IFstMC4wMjUsIC4wNjIsIC41MTEsIHtpYzogLjA0M31dLFxuICAgIDB4N0U6IFsuMzE4LCAtMC4yMDgsIC41MTEsIHtpYzogLjA2fV0sXG4gICAgMHgxMzE6IFsuNDQxLCAuMDEsIC4zMDcsIHtpYzogLjAzM31dLFxuICAgIDB4MjM3OiBbLjQ0MiwgLjIwNCwgLjMzMl0sXG4gICAgMHgzMDA6IFsuNjk3LCAtMC41LCAwXSxcbiAgICAweDMwMTogWy42OTcsIC0wLjUsIDAsIHtpYzogLjAzOX1dLFxuICAgIDB4MzAyOiBbLjY5NCwgLTAuNTI3LCAwLCB7aWM6IC4wMTd9XSxcbiAgICAweDMwMzogWy42NjgsIC0wLjU1OCwgMCwge2ljOiAuMDZ9XSxcbiAgICAweDMwNDogWy41ODksIC0wLjU0NCwgMCwge2ljOiAuMDU0fV0sXG4gICAgMHgzMDY6IFsuNjk0LCAtMC41MTUsIDAsIHtpYzogLjA2Mn1dLFxuICAgIDB4MzA3OiBbLjY2OSwgLTAuNTQ4LCAwXSxcbiAgICAweDMwODogWy42NjksIC0wLjU1NCwgMCwge2ljOiAuMDQ1fV0sXG4gICAgMHgzMEE6IFsuNzE2LCAtMC41NDIsIDBdLFxuICAgIDB4MzBCOiBbLjY5NywgLTAuNTAzLCAwLCB7aWM6IC4wNjV9XSxcbiAgICAweDMwQzogWy42MzgsIC0wLjUwMiwgMCwge2ljOiAuMDI5fV0sXG4gICAgMHgzREQ6IFsuNjA1LCAuMDg1LCAuNzc4XSxcbiAgICAweDIwMTM6IFsuMjg1LCAtMC4yNDgsIC41MTEsIHtpYzogLjA0M31dLFxuICAgIDB4MjAxNDogWy4yODUsIC0wLjI0OCwgMS4wMjIsIHtpYzogLjAxNn1dLFxuICAgIDB4MjAxNTogWy4yODUsIC0wLjI0OCwgMS4wMjIsIHtpYzogLjAxNn1dLFxuICAgIDB4MjAxNzogWy0wLjAyNSwgLjA2MiwgLjUxMSwge2ljOiAuMDQzfV0sXG4gICAgMHgyMDE4OiBbLjY5NCwgLTAuMzc5LCAuMzA3LCB7aWM6IC4wNTV9XSxcbiAgICAweDIwMTk6IFsuNjk0LCAtMC4zNzksIC4zMDcsIHtpYzogLjA3fV0sXG4gICAgMHgyMDFDOiBbLjY5NCwgLTAuMzc5LCAuNTE0LCB7aWM6IC4wOTJ9XSxcbiAgICAweDIwMUQ6IFsuNjk0LCAtMC4zNzksIC41MTQsIHtpYzogLjAyNH1dLFxuICAgIDB4MjA0NDogWy43MTYsIC4yMTUsIC43NzhdLFxuICAgIDB4MjEwRjogWy42OTUsIC4wMTMsIC41NCwge2ljOiAuMDIyfV0sXG4gICAgMHgyMjA2OiBbLjcxNiwgMCwgLjgzMywge3NrOiAuMTY3fV0sXG4gICAgMHgyOUY4OiBbLjcxNiwgLjIxNSwgLjc3OF0sXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7U1ZHQ2hhck1hcCwgQWRkUGF0aHN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7aXRhbGljIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvaXRhbGljLmpzJztcblxuZXhwb3J0IGNvbnN0IGl0YWxpYzogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDIxOiAnMzMwIDcxNlEzNTEgNzE2IDM2NSA3MDNUMzgwIDY3MFY2NTlMMzA0IDQzM1EyMzAgMjA3IDIyNyAyMDRRMjI1IDE5OCAyMDUgMTk4UTE4NCAxOTggMTg0IDIwN1QyMjAgNDM5VDI2MCA2NjlRMjcwIDY5NCAyOTcgNzA4UTMwMCA3MDkgMzA0IDcxMFQzMTEgNzEzVDMxNiA3MTRRMzI0IDcxNiAzMzAgNzE2Wk0xMDcgNTFRMTEwIDgzIDEzMyAxMDJUMTc5IDEyMVEyMDcgMTIxIDIxOSAxMDVUMjMxIDcyUTIzMSA0NSAyMDkgMjNUMTU2IDBRMTM4IDAgMTIzIDExVDEwNyA1MScsXG4gICAgMHgyMjogJzIxNCA2MjBRMjE0IDY0NyAyMzYgNjcwVDI4OSA2OTRRMzEyIDY5NCAzMjYgNjc3VDM0MSA2MzNWNjI0UTM0MSA1ODggMzI3IDU1MFQyOTQgNDgyVDI1MyA0MjhUMjE2IDM5MlQxOTYgMzc5UTE5MSAzNzkgMTg0IDM4OFQxNzYgNDAxUTE3NiA0MDQgMTk1IDQyMVQyNDMgNDcyVDI4NyA1NDdRMjk5IDU3NiAyOTkgNTgyTDI5NSA1ODBRMjkxIDU3OCAyODIgNTc2VDI2NCA1NzNRMjQxIDU3MyAyMjggNTg1VDIxNCA2MjBaTTQxMSA2MjBRNDExIDY0NyA0MzMgNjcwVDQ4NiA2OTRRNTA5IDY5NCA1MjMgNjc3VDUzOCA2MzNWNjI0UTUzOCA1ODggNTI0IDU1MFQ0OTEgNDgyVDQ1MCA0MjhUNDEzIDM5MlQzOTMgMzc5UTM4OCAzNzkgMzgxIDM4OFQzNzMgNDAxUTM3MyA0MDQgMzkyIDQyMVQ0NDAgNDcyVDQ4NCA1NDdRNDk2IDU3NiA0OTYgNTgyTDQ5MiA1ODBRNDg4IDU3OCA0NzkgNTc2VDQ2MSA1NzNRNDM4IDU3MyA0MjUgNTg1VDQxMSA2MjAnLFxuICAgIDB4MjM6ICcyODEgMzI3SDIyOFExODYgMzI3IDE3NSAzMzBUMTY0IDM0N1ExNjQgMzU5IDE3NiAzNjVRMTc5IDM2NyAyOTIgMzY3SDQwNEw1NjMgNjg4UTU2OSA2OTQgNTc4IDY5NFQ1OTMgNjg2VDU5NyA2NzBRNTk3IDY2NyA1MzEgNTM1TDQ0OCAzNjdINjE0TDc3MyA2ODhRNzc5IDY5NCA3ODcgNjk0UTc5NiA2OTQgODAyIDY4OFQ4MDggNjc0VjY3Mkw4MDcgNjcwUTgwNyA2NjcgNzMyIDUxN0w2NTggMzY4TDczNiAzNjdIODE0UTgyOCAzNTcgODI4IDM0N1E4MjggMzM2IDgxMiAzMjdINjM3TDU5OSAyNTBRNTYxIDE3NCA1NjEgMTczSDY2Mkg3MjRRNzYwIDE3MyA3NjkgMTcwVDc3OSAxNTNUNzcwIDEzNlQ3MjkgMTMyUTcyMSAxMzIgNjk2IDEzMlQ2NTEgMTMzSDU0MEwzODAgLTE4OFEzNzQgLTE5NCAzNjYgLTE5NFEzNTcgLTE5NCAzNTEgLTE4OFQzNDUgLTE3NEwzNDYgLTE3MlYtMTcwUTM0NiAtMTY3IDQxMiAtMzVMNDk1IDEzM0gzMzBMMTcwIC0xODhRMTY0IC0xOTQgMTU2IC0xOTRRMTQ3IC0xOTQgMTQxIC0xODhUMTM1IC0xNzRMMTM2IC0xNzJWLTE3MFExMzYgLTE2NyAyMTEgLTE3TDI4NSAxMzNIMjA3TDEzMCAxMzRRMTE1IDE0MCAxMTUgMTUzUTExNSAxNjQgMTMxIDE3M0gzMDZMMzQ0IDI1MFEzODIgMzI2IDM4MiAzMjdIMjgxWk01OTIgMzI3SDQyN0wzODkgMjUwUTM1MSAxNzQgMzUxIDE3M0g1MTZMNTU0IDI1MFE1OTIgMzI2IDU5MiAzMjcnLFxuICAgIDB4MjU6ICczMDEgMzQ4UTI1NyAzNDggMjMxIDM4M1QyMDUgNDgwUTIwNSA1NTMgMjQ0IDYyOVQzNDYgNzM2UTM3MCA3NTAgMzk0IDc1MFE0MTYgNzUwIDQyOSA3NDJUNDU4IDcxNFE1MTIgNjQ0IDYwNiA2NDRRNzIyIDY0NCA4MDIgNzMyUTgxNyA3NTAgODI3IDc1MFE4MzUgNzUwIDg0MSA3NDRUODQ3IDczMFE4NDcgNzI1IDgyNyA3MDBUNjg5IDU0MFE1ODYgNDIxIDUxMiAzMzVRMTgwIC01MCAxNzYgLTUyUTE3MiAtNTYgMTY1IC01NlExNTcgLTU2IDE1MSAtNTBUMTQ1IC0zNVExNDUgLTI5IDE2MiAtOVQzMzAgMTg2UTM5MiAyNTggNDMwIDMwMlE3MTEgNjI3IDcxMSA2MjhMNzAxIDYyNFE2NTIgNjA3IDYwNCA2MDdRNTUxIDYwNyA0OTQgNjM0TDQ3OSA2NDJWNjI0UTQ3OSA1NDQgNDM5IDQ2N1E0MTQgNDE2IDM3NyAzODJUMzAxIDM0OFpNMjcwIDQ0M1EyNzAgMzg1IDMwMyAzODVIMzA2SDMwOFEzMjYgMzg1IDM0OCA0MDdRMzg0IDQ0MSA0MDkgNTA0VDQzNCA2MjdRNDM0IDcxMyAzOTAgNzEzUTM1OCA3MTMgMzI4IDY2M1EzMDcgNjMxIDI4OSA1NTZUMjcwIDQ1MVY0NDNaTTYwOCAtNTZRNTczIC01NiA1NDMgLTIzVDUxMyA3NlE1MTMgMTI5IDUzNiAxOTBUNjA0IDI5Nkw2MjcgMzE4UTY3MCAzNDcgNzA0IDM0N1E3NDcgMzQ3IDc2NyAzMTBUNzg4IDIyMlE3ODggMTI2IDczMiAzNVQ2MDggLTU2Wk03NDIgMjIyUTc0MiAzMTAgNjk5IDMxMFE2NzcgMzEwIDY1NSAyODVUNjIwIDIyN1E2MDggMTk3IDU5MyAxMzhUNTc4IDQyVjM2UTU3OCAtMTggNjEzIC0xOFE2NTcgLTE4IDY5OSA2NFQ3NDIgMjIyJyxcbiAgICAweDI2OiAnMjA5IDQ0NFEyMDkgNTQ2IDI3OCA2MzFUNDI0IDcxNlE0NzMgNzE2IDUwMSA2ODNUNTMwIDYwMVE1MzAgNTU0IDUxMSA1MzVUNDY3IDUxNVE0NDYgNTE1IDQzNyA1MjdUNDI3IDU1M1E0MjcgNTc4IDQ0NiA1OTRUNDgxIDYxMEg0ODNWNjE3UTQ4MCA2NDEgNDY0IDY2MFQ0MTkgNjc5UTM2NyA2NzkgMzI4IDYwM1EzMTYgNTc4IDMwNSA1MzhUMjg4IDQ3MEwyODIgNDQzTDI5NSA0NDlRMzA4IDQ1NSAzMzAgNDYyVDM3MSA0NjlRMzk3IDQ2OSA0MTMgNDUwVDQzMCA0MDRRNDMwIDM2MyA0MDAgMzI5VDMzMSAyOTVRMjkxIDI5NSAyNTYgMzIyUTI1NSAzMjIgMjQ2IDI5M1QyMjcgMjIzVDIxNyAxNThRMjE3IDExNyAyMzIgODhUMjczIDQzVDMyNyAyMlQzODcgMTVRNDU3IDE1IDUxMiAzN1Q1OTkgOTNUNjUyIDE2OVQ2ODAgMjQ4VDY4OCAzMTdUNjc4IDM4MFQ2NTkgNDIzVDY0NyA0MzdRNjQzIDQzNSA2MzcgNDMxVDYxMyA0MTZUNTgxIDM5MlQ1NTQgMzY0VDUzOCAzMzJRNTQwIDMxMCA1NDEgMzEwUTU1NCAzMzUgNTg3IDMzNVE2MDEgMzM1IDYxMyAzMjdUNjI2IDMwMFE2MjYgMjkwIDYyMiAyNzlUNjAzIDI1NVQ1NjMgMjQyUTUzMiAyNDUgNTEyIDI2M1Q0OTEgMzIwUTQ5NCAzNTEgNTExIDM3N1Q1NDcgNDE4VDYwMCA0NTZUNjUyIDQ5NFE2NzYgNTEyIDY5NyA1MzlUNzI4IDU4MlQ3MzggNjAxUTczOCA2MDIgNzM2IDYwMlE3MzIgNjAyIDcyNiA2MDRUNzE0IDYxNlQ3MDcgNjM4UTcwNyA2NjEgNzI0IDY3N1Q3NjQgNjk0UTc5OSA2OTQgODAyIDY2MFE4MDIgNjI1IDc2NyA1NjJUNjg4IDQ2N0w2OTQgNDU4UTcwMCA0NDkgNzAyIDQ0NFQ3MTEgNDI4VDcyMCA0MDhUNzI3IDM4NVQ3MzMgMzU4VDczNSAzMjdRNzM1IDI4MSA3MjQgMjM1VDY4NSAxNDFUNjE3IDU5VDUxNSAxVDM3NSAtMjJRMjcwIC0yMiAxOTkgMzRUMTI3IDE4MVExMjcgMjE2IDE0NyAyNzBUMjA3IDM3NEwyMTYgMzg2UTIwOSA0MjEgMjA5IDQ0NFpNMzg2IDQxMlEzODYgNDMyIDM2NiA0MzJRMzQ1IDQzMiAzMjUgNDE4VDI5NCAzOTBUMjg0IDM3NVEyODQgMzcxIDI4OSAzNjJUMzA2IDM0M1QzMzUgMzMyUTM1NSAzMzIgMzY3IDM1MFQzODMgMzg0VDM4NiA0MTInLFxuICAgIDB4Mjc6ICcyNTAgNjIwUTI1MCA2NDcgMjcyIDY3MFQzMjUgNjk0UTM0OCA2OTQgMzYyIDY3N1QzNzcgNjMzVjYyNFEzNzcgNTY2IDM0MyA1MDZUMjc1IDQxMlQyMzEgMzc5UTIyNiAzNzkgMjIwIDM4OFQyMTMgNDAxVDIzMiA0MjFUMjc5IDQ3MlQzMjMgNTQ3UTMzNSA1NzMgMzM1IDU4MkwzMzEgNTgwUTMyNyA1NzggMzE4IDU3NlQzMDAgNTczUTI3NyA1NzMgMjY0IDU4NVQyNTAgNjIwJyxcbiAgICAweDI4OiAnMjQxIC0yNTBRMjAzIC0yMTIgMTc0IC0xNDBUMTQ0IDM5UTE0NCAxNTggMTgwIDI4OFQyOTYgNTQ0VDQ4MSA3NDZMNDg3IDc1MEg0OTlRNTE3IDc1MCA1MTcgNzQwUTUxNyA3MzYgNDk1IDcxNlEzOTkgNjMwIDMzMSA0OTFUMjM2IDIyOFQyMDggM1EyMDggLTczIDIyNCAtMTMwVDI1NSAtMjE0VDI3MSAtMjQ0UTI3MSAtMjUwIDI1MiAtMjUwSDI0MScsXG4gICAgMHgyOTogJzMyNiA0OTdRMzI2IDU0NiAzMjAgNTg4VDMwNCA2NTVUMjg1IDY5OVQyNjkgNzI4VDI2MiA3NDBRMjYyIDc0NiAyNjcgNzQ5TDI3MiA3NTBRMjc2IDc1MCAyODEgNzUwSDI5M1EzMzEgNzEyIDM2MCA2NDBUMzkwIDQ2MVEzOTAgMzMyIDMzOSAxNzFUMTg4IC0xMTZRMTYxIC0xNTAgMTIxIC0xODhUNDcgLTI1MEgzNVExNyAtMjUwIDE3IC0yNDBRMTcgLTIzNiAzOSAtMjE2UTEzNSAtMTMwIDIwMyA5VDI5OCAyNzJUMzI2IDQ5NycsXG4gICAgMHgyQTogJzU2MCA2NThRNTY5IDY1OCA1NzYgNjQ5VDU4NCA2MzFRNTg0IDYyNSA1ODMgNjIwVDU3NyA2MTFUNTY5IDYwM1Q1NTYgNTk1VDU0MCA1ODdUNTE5IDU3OFQ0OTQgNTY2TDQyOCA1MzZRNDI3IDUzNSA0MzMgNTMxVDQ3OSA1MDJRNTI1IDQ3NSA1MzIgNDY5VDUzOSA0NTBRNTM4IDQzNSA1MjUgNDI0VDQ5NyA0MTJRNDg5IDQxMiA0ODIgNDE4VDQ0MiA0NTZRNDAwIDQ5NyA0MDAgNDk0TDM4NyA0MjBRMzc2IDM1MyAzNzMgMzQzVDM1MiAzMjNRMzQ1IDMyMCAzMzYgMzIwSDMzMVEzMjIgMzIwIDMxNiAzMjdUMzA5IDM0M1EzMDkgMzQ3IDMzNCA0MjBMMzU5IDQ5NlEzNTggNDk2IDI5NyA0NTZUMjM0IDQxNFEyMjggNDExIDIyMSA0MTFRMjEyIDQxMSAyMDQgNDE3VDE5NSA0MzlRMTk4IDQ1OCAyMDkgNDY1VDI4MyA1MDJMMzUzIDUzNEwzMDAgNTY2UTI1NSA1OTMgMjQ3IDU5OVQyMzkgNjE2UTIzOSA2MzEgMjUyIDY0NFQyODIgNjU4UTI5MCA2NTggMjk1IDY1NFQzMzUgNjE1TDM3OCA1NzNMMzkxIDY0N1EzOTMgNjU3IDM5NSA2NzFUMzk4IDY5MVQ0MDAgNzA2VDQwNCA3MjBUNDA4IDczMFQ0MTQgNzM5VDQyMyA3NDRUNDM0IDc0OVE0MzUgNzQ5IDQzOSA3NDlUNDQ1IDc1MFE0NjcgNzQ4IDQ2OSA3MjhRNDY5IDcyMyA0NTcgNjg1VDQzMiA2MTBMNDIwIDU3M0w0ODEgNjEzUTU0OCA2NTggNTYwIDY1OCcsXG4gICAgMHgyQjogJzEzOSAyMzdUMTM5IDI1MFQxNTEgMjY2VDE5OCAyNzBIMjkzSDQzMUw0NjUgNDA3UTQ2OSA0MjQgNDc2IDQ1MlE0OTQgNTI4IDUwMCA1NDJUNTE5IDU1N1E1MjYgNTU3IDUzMiA1NTJUNTM4IDUzOFE1MzggNTM2IDUwNyA0MDlUNDcyIDI3MlE0NzIgMjcwIDYwNCAyNzBRNzM3IDI3MCA3NDEgMjY4UTc1MyAyNjEgNzUzIDI1MFE3NTMgMjM3IDc0MiAyMzNUNjk2IDIyOVE2ODcgMjI5IDY1NSAyMjlUNTk5IDIzMEg0NjJMNDYxIDIyNlE0NjEgMjI0IDQyNyA5MVQzOTIgLTQ3UTM4NyAtNTcgMzc0IC01N1EzNjcgLTU3IDM2MSAtNTFUMzU1IC0zN1EzNTUgLTMxIDM4OCA5OUw0MjEgMjMwSDI4OFEyNjcgMjMwIDIzOCAyMzBUMTk5IDIyOVExNjMgMjI5IDE1MSAyMzMnLFxuICAgIDB4MkM6ICcxMDYgNDZRMTA2IDY4IDEyMSA5MFQxNjcgMTIwUTE2OCAxMjAgMTczIDEyMFQxODAgMTIxUTIzMiAxMjEgMjMyIDU5VjU0UTIzMiAxOCAyMTkgLTIwVDE4NiAtODhUMTQ1IC0xNDNUMTA5IC0xODFUODggLTE5NFE4NCAtMTk0IDc3IC0xODVUNjkgLTE3MVE2OSAtMTY4IDcwIC0xNjZUNzYgLTE2MVQ4NSAtMTU0VDEwMSAtMTM5VDEyNCAtMTE0UTE0NiAtODggMTYyIC01OFQxODMgLTEyVDE4OCA3UTE4NyA3IDE4MyA1VDE3MiAyVDE1NiAwUTEyOSAwIDExOCAxNFQxMDYgNDYnLFxuICAgIDB4MkQ6ICcyMDUgMTgwSDEzMVExMDIgMTgwIDkzIDE4MVQ4NCAxOTBROTAgMjM4IDEwMyAyNTFIMzM0UTM0MSAyNDQgMzQxIDI0MVEzNDEgMjM2IDMzNiAyMTRUMzI3IDE4NlEzMjUgMTgxIDMxMiAxODFUMjA1IDE4MCcsXG4gICAgMHgyRTogJzEwNyA1MFExMDcgNzYgMTI5IDk4VDE4MSAxMjFRMjAzIDEyMSAyMTcgMTA4VDIzMSA3MlEyMzEgNDcgMjEwIDI0VDE1NiAwUTEzNSAwIDEyMSAxM1QxMDcgNTAnLFxuICAgIDB4MkY6ICcxNjYgLTIxNVQxNTkgLTIxNVQxNDcgLTIxMlQxNDEgLTIwNFQxMzkgLTE5N1ExMzkgLTE5MCAxNDQgLTE4M1ExNTcgLTE1NyAzNzggMjc0VDYwMiA3MDdRNjA1IDcxNiA2MTggNzE2UTYyNSA3MTYgNjMwIDcxMlQ2MzYgNzAzVDYzOCA2OTZRNjM4IDY5MSA0MDYgMjQxVDE3MCAtMjEyUTE2NiAtMjE1IDE1OSAtMjE1JyxcbiAgICAweDMwOiAnNDE0IDY2NVE1NjIgNjY1IDU2MiA0OTBRNTYyIDQyNiA1MzQgMzE4UTQ1MSAtMjEgMjUxIC0yMVEyMjIgLTIxIDIwMiAtMTVRMTU1IDIgMTM0IDQwVDExMCAxNDRRMTEwIDIwMSAxMjcgMjg2VDE4NyA0NzBUMjg3IDYxNFEzNDggNjY1IDQxNCA2NjVaTTE4NyA5OFExODcgNTkgMjA4IDM3VDI2MCAxNVEzMjAgMTUgMzY1IDgzUTM5NCAxMjggNDQwIDMxMlQ0ODcgNTQ3UTQ4NyA1ODAgNDcxIDYwMFQ0MzMgNjI3UTQyOCA2MjggNDA4IDYyOFEzODEgNjI4IDM1MyA2MDlUMzExIDU2OVEyNzkgNTI2IDIzOSAzNjRUMTkwIDE0M1ExODcgMTIwIDE4NyA5OCcsXG4gICAgMHgzMTogJzI0OCA0OTFRMjI4IDQ5MSAyMjggNTAyUTIyOCA1MTYgMjM2IDUzMlEyMzcgNTM2IDI0NiA1MzdUMjc1IDU0MVQzMTQgNTUyUTM1MCA1NjcgMzgyIDU5NVQ0MzAgNjQ0TDQ0NiA2NjRRNDUwIDY2NiA0NTQgNjY2UTQ2OCA2NjYgNDY4IDY1OFE0NjggNjQ3IDM5NSAzNTlRMzIxIDYzIDMyMSA1OVEzMjEgNTIgMzM0IDUwVDM4OCA0Nkg0MjJRNDI4IDM3IDQyOCAzNVE0MjggMTkgNDIxIDVRNDE2IDAgNDA1IDBRNDAwIDAgMzYxIDFUMjYzIDJRMjE1IDIgMTg1IDJUMTQyIDFUMTI3IDBRMTEwIDAgMTEwIDExUTExMCAxMyAxMTMgMjVUMTE4IDQwUTEyMCA0NiAxNDYgNDZRMTk2IDQ2IDIxMiA0OVQyMzUgNjFRMjM4IDY2IDI5NSAyOTVMMzUzIDUyNkwzNDAgNTE5UTMyOCA1MTIgMzAyIDUwM1QyNDggNDkxJyxcbiAgICAweDMyOiAnMTU5IDQwNFExNTkgNDMzIDE3NiA0NzZUMjIyIDU2MlQyOTcgNjM1VDM5NSA2NjZRNDY2IDY2NiA1MDggNjE3VDU1MSA0OTdRNTUxIDQ3MyA1NDUgNDQ2UTUzNCAzODggNDgyIDMzM1E0NDEgMjkyIDM1NSAyNDBUMjY0IDE4NFEyMTYgMTUxIDE3OSAxMDFMMTcxIDkxUTE3MSA5MCAxNzcgOTBRMjA2IDkwIDI2OSA3N1QzNjYgNjRRMzg1IDY0IDM5MCA2NVE0MTggNzMgNDQxIDk4VDQ3NSAxNTZRNDc5IDE2OCA0ODEgMTcwVDQ5NSAxNzNINTE4UTUyNCAxNjcgNTI0IDE2NlQ1MjEgMTUyUTUwMiA4NiA0NTkgMzJUMzUzIC0yMlEzMTUgLTIyIDI1OSAxNVQxNzIgNTNRMTU2IDUzIDE0MyAzNlQxMjYgMUwxMjEgLTE2UTExOSAtMjIgOTggLTIySDgyUTc2IC0xNiA3NiAtMTNUODAgNVQ5OCA1MFQxMzIgMTExVDE4OSAxNzhUMjc0IDI0MlEzMjcgMjczIDM2NCAzMDVUNDIwIDM3MFQ0NDcgNDI3VDQ2MCA0ODNRNDY2IDUxNCA0NjYgNTM4UTQ2NiA1ODYgNDQzIDYwN1QzODkgNjI5UTMzOCA2MjkgMjkzIDU4NFQyMjYgNDg3VDIwNCAzOTlRMjA0IDM5MCAyMDQgMzg2VDIwOSAzNzhUMjIyIDM3M1EyNTggMzc2IDI4MiA0MjJUMzA3IDQ5M1EzMDcgNTA2IDMwMiA1MTdUMjk3IDUzMVEyOTcgNTM3IDMwOCA1NDZUMzI3IDU1MVEzMjkgNTUwIDMzMyA1NDNUMzQwIDUyM1QzNDQgNDk3UTM0NCA0NTAgMzA2IDM5M1QyMTYgMzM2UTE4NiAzMzYgMTczIDM1NVQxNTkgMzk2VjQwNCcsXG4gICAgMHgzMzogJzI5NiA1MzFRMjk2IDUzNiAzMDcgNTQ0VDMyMiA1NTNRMzMwIDU1MyAzMzggNTM0VDM0NiA1MDFRMzQ2IDQ2OCAzMTkgNDQwVDI1OCA0MTJRMjMyIDQxMiAyMTYgNDMwVDIwMCA0NzhRMjAwIDU1MiAyODEgNjE4UTM0NSA2NjYgNDE2IDY2NlE0ODkgNjY2IDUyNSA2MjVUNTYyIDUzMFE1NjIgNDczIDUyNSA0MTlUNDMwIDMzNUw0MTYgMzI5UTQ3OSAyODggNDc5IDIwNlE0NzkgMTQyIDQ0MCA4OVQzNDQgN1QyMjkgLTIyUTE3MyAtMjIgMTM1IDEyVDk2IDEwNlE5NiAxOTIgMTU3IDE5MlExOTIgMTkyIDE5NyAxNTdRMTk3IDEzNCAxODQgMTE3VDE0MiA5NlExNTMgNDcgMTgwIDI5UTIwMSAxNSAyMzIgMTVRMjQ5IDE1IDI3NSAyMlEzMDcgMzQgMzMxIDU3UTM2MyA5MCAzNzkgMTUzVDM5NiAyNDZRMzk2IDI2MSAzOTMgMjcyVDM4NCAyOTBUMzcxIDMwMVQzNTUgMzA4VDM0MSAzMTFUMzI2IDMxMkgzMTZIMzA3UTI4NyAzMTIgMjgyIDMxM1QyNzYgMzIwUTI3NiAzMjMgMjc5IDMzN1QyODMgMzUyUTI4NCAzNTYgMjkwIDM1N1QzMjUgMzU4UTM2NCAzNTkgMzY4IDM2MFEzODYgMzY1IDQwMCAzNzJUNDMzIDM5N1Q0NjQgNDQ4VDQ4NSA1MjdRNDg3IDUzNSA0ODcgNTU2UTQ4NyA2MjkgNDE0IDYyOVEzNTAgNjI5IDI5OCA1ODBUMjQ1IDQ3NlEyNDUgNDUwIDI2MyA0NTBIMjY0UTI4MCA0NTAgMjk0IDQ2M1QzMDggNDk2UTMwOCA1MDggMzAyIDUxOFQyOTYgNTMxJyxcbiAgICAweDM0OiAnNDQ4IDM0UTQ1MyAzNCA0NjMgMjJUNDczIDVRNDczIC0yIDQ1NyAtN1E0MTcgLTIyIDM4MyAtMjNIMzY2TDM1MCAtOTFRMzQ4IC05OCAzNDUgLTExMVQzNDAgLTEzMFQzMzUgLTE0NlQzMzAgLTE2MVQzMjUgLTE3MlQzMTggLTE4MlQzMTAgLTE4OFQyOTkgLTE5M1QyODYgLTE5NFEyNTYgLTE5NCAyNTMgLTE2NVEyNTMgLTE1OSAyNzEgLTgzVDI5MiAtNVEyMzEgMjkgMTY5IDI5UTExNCAyOSA5MSAxNFE3MiAtMiA2NSAxUTQ2IDIwIDQ2IDI4UTQ2IDM1IDU1IDQzVDc3IDYwVDk2IDc0UTMwNiAyNTcgMzk2IDYyM1E0MTAgNjY2IDQ0NCA2NjZRNDU5IDY2NiA0NjggNjU3VDQ3OCA2MzRRNDc4IDYyNyA0NzAgNTk1VDQ0MCA1MDRUMzg3IDM4MVQzMDMgMjM5VDE4NyA5OUwxNjQgNzVIMTc4UTIxNyA3NSAyNjAgNTlMMzA0IDQzUTMwNCA0OCAzMjUgMTI3UTM0MiAxOTUgMzQ2IDIwN1QzNTggMjI4UTM3MiAyNDIgMzkxIDI0MlE0MDMgMjQyIDQxMyAyMzVUNDIzIDIxNFE0MjMgMjA1IDQwMiAxMTZUMzc4IDI1UTM3OCAyMyAzODcgMjNRNDA1IDIzIDQxOCAyNVQ0MzkgMzFUNDQ4IDM0JyxcbiAgICAweDM1OiAnMTk2IDMwNFExODkgMzA5IDE4OSAzMTRRMTg5IDMxNyAyMzEgNDg3VDI3NSA2NjBRMjc4IDY2NiAyODMgNjY2UTI4NyA2NjYgMzAyIDY1OFQzNDYgNjQzVDQxMyA2MzVRNDQ3IDYzNSA0ODEgNjQyVDUzNyA2NThUNTU5IDY2NlE1NjEgNjY2IDU2NCA2NjNUNTY3IDY1OFE1NjUgNjM3IDU1NyA2MjlRNTI4IDYwMCA0NzQgNTczVDM1OSA1NDVRMzQyIDU0NSAzMjcgNTQ2VDMwNCA1NTBUMjk0IDU1MkwyOTEgNTQwUTI4OCA1MjkgMjgzIDUwN1QyNzMgNDY1TDI1MSAzNzlRMzA3IDQyMCAzNjQgNDIwUTQxNSA0MjAgNDU2IDM4MlQ0OTcgMjYxUTQ5NyAxNjUgNDI5IDgyVDI2MiAtMjBRMjU2IC0yMCAyNDcgLTIxVDIzMyAtMjJRMTc2IC0yMiAxNDEgMTVUMTA2IDExMlExMDYgMjA4IDE3MyAyMDhRMTkyIDIwOCAyMDMgMTk3VDIxNCAxNjlRMjE0IDE0MyAxOTUgMTI1VDE1NiAxMDdIMTUzVjEwMFExNTUgNzMgMTc0IDQ3VDIzOSAyMVEyNDUgMjEgMjU5IDIzUTM1NSA0NiAzOTIgMjAwUTM5MyAyMDUgMzk0IDIwN1E0MTIgMjc2IDQxMiAzMTJRNDEyIDM1MiAzOTYgMzY3VDM1OCAzODNRMjg4IDM4MyAyMzMgMzE0UTIyNiAzMDYgMjI0IDMwNVQyMDkgMzA0SDE5NicsXG4gICAgMHgzNjogJzM3NyA0MzRRNDI1IDQzNCA0NTcgNDA0VDQ5OSAzNDFUNTA5IDI3OFE1MDkgMjQzIDQ5NiAxOTRUNDU2IDEwNVQzODMgMjdRMzIyIC0yMiAyNTYgLTIyUTE0MiAtMjIgMTIyIDExNFExMjAgMTMwIDEyMCAxNTlRMTIwIDIyMSAxMzUgMjkyVDE5NSA0NTJUMzEwIDU5OVEzOTAgNjY1IDQ2NSA2NjVRNTY1IDY2NSA1NjUgNTgzVjU3NFE1NjUgNTQzIDU0NiA1MjRRNTI4IDUwNiA1MDQgNTA2UTQ5MSA1MDYgNDc4IDUxNFQ0NjUgNTQzUTQ2NSA1ODUgNTE1IDYwMlE1MDUgNjI2IDQ2NiA2MjZRNDE5IDYyNiAzNzIgNTg3UTMzNCA1NTcgMzA1IDUwM1QyNjYgNDA5TDI1NSAzNzBRMjg3IDQxMCAzMzkgNDI5UTM2MSA0MzQgMzc3IDQzNFpNNDI0IDMzM1E0MjQgMzU5IDQxMSAzNzhUMzY1IDM5N1EzMTggMzk3IDI4MiAzNTZUMjMwIDI1N1QyMDUgMTU3VDE5NyA5NFExOTcgNjcgMjExIDQ1VDI2MCAyMlEzMTMgMjIgMzQxIDU3VDM4NiAxNTFRNDI0IDI4MyA0MjQgMzMzJyxcbiAgICAweDM3OiAnNDY2IDUxOVE0NDggNTE5IDQzNSA1MjhUNDE2IDU1MFQ0MDAgNTcxVDM3NiA1ODFRMzI0IDU4MSAyNzEgNTQwVDE4NiA0MzdRMTg1IDQzNSAxODMgNDMyVDE4MSA0MjhUMTc5IDQyNlQxNzcgNDI0VDE3NCA0MjNUMTcxIDQyMlQxNjUgNDIySDE1OVExNDEgNDIyIDE0MSA0MjNRMTM2IDQyMyAxMzYgNDMxUTEzNiA0MzMgMTkwIDU0OFQyNDcgNjY1UTI0OSA2NjYgMjY2IDY2NkgyODJRMjg4IDY2MCAyODggNjU3UTI4OCA2NTUgMjg0IDY0NlQyNzYgNjI4TDI3MyA2MjBRMzM3IDY2NiAzOTAgNjY2UTQxMyA2NjYgNDI1IDY1MlQ0MzggNjIwVDQ0NCA1ODRUNDU3IDU1OVE0NjAgNTU3IDQ3MCA1NTdRNDk3IDU1NyA1MjQgNTgyVDU3MSA2MzVUNTk0IDY2NVE1OTUgNjY2IDYxMiA2NjZINjI4UTYzNCA2NjAgNjM0IDY1N1E2MzQgNjUzIDYxOCA2MjlUNTcyIDU1NlQ1MTAgNDQxVDQzNyAyNjlUMzY3IDQzUTM1NiAtMjIgMzA0IC0yMlEyOTEgLTIyIDI3OCAtMTRUMjYzIDE0UTI2MyAzNiAyODEgOTVUMzU0IDI2OVQ0ODYgNTA3UTQ5NyA1MjQgNDk1IDUyNFE0ODIgNTE5IDQ2NiA1MTknLFxuICAgIDB4Mzg6ICcyMDkgNDQ5UTIwOSA1NDUgMjc4IDYwNVQ0MTYgNjY2UTQ4MiA2NjYgNTE3IDYzMVQ1NTMgNTQ2UTU1MyA1MTMgNTM5IDQ4MlQ1MDQgNDMwVDQ2MyAzOTRUNDI2IDM3MEw0MTAgMzYwTDQzMCAzNDNRNDcxIDMwOSA0ODMgMjc4VDQ5NSAyMTFRNDk1IDE0MSA0NDEgNzVRMzYzIC0yMSAyNTMgLTIxUTE4MiAtMjEgMTQxIDE4VDk5IDExN1E5OSAxNjEgMTE5IDIwMVQxNzAgMjY4VDIyMiAzMDhUMjU5IDMzMUwyNzIgMzM4TDI1OSAzNDlRMjEyIDM4OSAyMDkgNDQ5Wk00OTIgNTQyUTQ5MiA1ODYgNDY5IDYwNVQ0MTUgNjI1UTM2MCA2MjUgMzIwIDU4N1QyNzkgNTA1UTI3OSA0OTUgMjgxIDQ4N1QyODYgNDc0VDI5NSA0NjBUMzA2IDQ0OVQzMjEgNDM2VDMzNyA0MjJRMzc5IDM4NiAzODAgMzg2UTM4OSAzODYgNDIwIDQxMlQ0NzIgNDcxUTQ5MiA1MTMgNDkyIDU0MlpNMTYzIDExOFExNjMgNzYgMTg5IDQ5VDI1OCAyMVEzMTYgMjEgMzY4IDY0VDQyMCAxNzBRNDIwIDE5MyA0MTIgMjA4VDM5NSAyMzNUMzUwIDI3MUwzMDIgMzEyUTI5OCAzMTIgMjg0IDMwM1QyNDkgMjc2VDIwOSAyMzVUMTc3IDE4MVQxNjMgMTE4JyxcbiAgICAweDM5OiAnMjk3IDIxMVEyNTggMjExIDIzMCAyMjhUMTg5IDI3M1QxNjkgMzIzVDE2MyAzNjdRMTYzIDQxMSAxODMgNDcyVDI1NCA1ODVRMzI3IDY1NiA0MDEgNjY1UTQwMyA2NjUgNDEyIDY2NVQ0MjcgNjY2UTQ1OCA2NjQgNDgxIDY1MlQ1MTggNjIyVDUzOSA1ODBUNTUwIDUzNVQ1NTMgNDkxUTU1MyA0NDggNTQ0IDM5NVQ1MTUgMjc3VDQ1NCAxNDhUMzU4IDM3UTI4MiAtMjIgMjEzIC0yMlExNjYgLTIyIDEzNyAtMVQxMDcgNTVWNjRRMTA3IDg4IDExNCAxMDRUMTM0IDEyN1QxNTQgMTM2VDE2OSAxMzhRMTg1IDEzOCAxOTYgMTI4VDIwNyAxMDFRMjA3IDgyIDE5NiA2OFQxNzIgNDhMMTYxIDQzUTE2MSA0MCAxNjcgMzZUMTg3IDI2VDIxOSAyMVEyODYgMjEgMzQ0IDk5UTM2NCAxMjYgMzgyIDE2OVQ0MDggMjQxVDQxNyAyNzVMNDEyIDI2OVE0MDYgMjYzIDM5NSAyNTNUMzcwIDIzNFQzMzcgMjE4VDI5NyAyMTFaTTQ3NiA1NTJRNDc2IDYyNiA0MTcgNjI2UTM2OCA2MjYgMzMwIDU4NFEzMTIgNTYzIDMwMCA1MzNUMjcwIDQzM1EyNDggMzQxIDI0OCAzMTJRMjQ4IDI4NiAyNjIgMjY3VDMxMCAyNDhRMzUzIDI0OCAzODcgMjg3VDQ0MCAzODBUNDY3IDQ4MFQ0NzYgNTUyJyxcbiAgICAweDNBOiAnMTg0IDM1OFExODQgMzg1IDIwNiA0MDhUMjU4IDQzMVEyNzkgNDMxIDI5MyA0MThUMzA4IDM4M1EzMDggMzU0IDI4NCAzMzJUMjMzIDMxMFEyMTIgMzEwIDE5OCAzMjRUMTg0IDM1OFpNMTA3IDUwUTEwNyA3NiAxMjkgOThUMTgxIDEyMVEyMDMgMTIxIDIxNyAxMDhUMjMxIDcyUTIzMSA0NyAyMTAgMjRUMTU2IDBRMTM1IDAgMTIxIDEzVDEwNyA1MCcsXG4gICAgMHgzQjogJzE4NCAzNThRMTg0IDM4NSAyMDYgNDA4VDI1OCA0MzFRMjc5IDQzMSAyOTMgNDE4VDMwOCAzODNRMzA4IDM1NCAyODQgMzMyVDIzMyAzMTBRMjEyIDMxMCAxOTggMzI0VDE4NCAzNThaTTEwNyA0N1ExMDcgNzcgMTMwIDk5VDE4MCAxMjFRMjI2IDEyMSAyMjYgNjFRMjI2IDI1IDIxNCAtMTRUMTgyIC04NFQxNDQgLTE0MFQxMDkgLTE4MFQ4OCAtMTk0VDc3IC0xODVUNzAgLTE3MlE3MCAtMTY5IDg0IC0xNTVUMTIxIC0xMTJUMTYxIC00OFExODAgLTEwIDE4MCAzUTE4MCA0IDE3NCAyUTE3MiAyIDE2NiAxVDE1NiAwUTEzNSAwIDEyMSAxM1QxMDcgNDcnLFxuICAgIDB4M0Q6ICc3NzYgMzU3VDc3NiAzNDdUNzYxIDMyN0g0NzBRMTgwIDMyNyAxNzYgMzI5UTE2NCAzMzQgMTY0IDM0N1ExNjQgMzU5IDE3NiAzNjVRMTc5IDM2NyA0NzAgMzY3SDc2MVE3NzYgMzU3IDc3NiAzNDdaTTExNiAxNDNUMTE2IDE1M1QxMzEgMTczSDQyMlE3MTMgMTczIDcxNyAxNzFRNzI4IDE2NiA3MjggMTUzVDcxNyAxMzVRNzEzIDEzMyA0MjIgMTMzSDEzMVExMTYgMTQzIDExNiAxNTMnLFxuICAgIDB4M0Y6ICcyMzUgNDMxUTIxNyA0MzEgMjA2IDQ0MlQxOTUgNDY4UTE5NSA0OTAgMjE1IDUzN1QyODAgNjM4VDM4MCA3MDdRNDAzIDcxNiA0MjMgNzE2UTQyNSA3MTYgNDI5IDcxNlQ0MzYgNzE1UTQ4NSA3MTUgNTE4IDY4MVQ1NTEgNTkwUTU1MSA1NDMgNTMwIDUwM1Q0ODIgNDM5UTQ3MSA0MjggNDAwIDM3NVQzMTggMzEwUTMwMCAyODcgMzAwIDI1OVEzMDAgMjM2IDMxNSAyMzZRMzMzIDIzNiAzNTIgMjUxVDM4NCAzMDBRMzg2IDMwNiA0MDcgMzA2SDQyM1E0MjkgMzAwIDQyOSAyOTdRNDI5IDI3MiAzOTMgMjM1VDMwOCAxOThRMjg3IDE5OCAyNjkgMjE1VDI1MSAyNzBRMjUxIDMzMCAyOTMgMzc0TDM3NCA0MzZRMzc3IDQzOCA0MDEgNDU2VDQzMiA0ODBUNDU3IDUwM1Q0ODEgNTMxVDQ5NCA1NjFUNTAxIDU5OFE1MDEgNjE0IDQ5OSA2MjZRNDgyIDY3OCA0MzAgNjc4SDQyNlEzOTIgNjc4IDM2MiA2NjBUMzExIDYxNVQyODAgNTcxVDI2NCA1NDBMMjU5IDUyOFEyNTkgNTI3IDI2NiA1MjZUMjgzIDUxNlQyOTQgNDkyUTI5NCA0NjYgMjc2IDQ0OVQyMzUgNDMxWk0yMDkgNTFRMjEyIDgzIDIzNSAxMDJUMjgxIDEyMVEzMDkgMTIxIDMyMSAxMDVUMzMzIDcyUTMzMyA0NSAzMTEgMjNUMjU4IDBRMjQwIDAgMjI1IDExVDIwOSA1MScsXG4gICAgMHg0MDogJzE5OCAyNTBRMTk4IDE1NSAyNDggOTFUMzk0IDI2UTUxNCAyNiA2NDAgODBMNjUwIDg0SDY3NUg2ODNRNzA5IDg0IDcwOSA3NlE3MDkgNzMgNzA4IDcxUTcwNiA2NCA2NjAgNDVUNTM0IDhUMzgzIC0xMVQyNjAgMjRUMTgxIDExNVExNTIgMTY4IDE1MiAyNDhRMTUyIDQxMCAyNjggNTUyUTMwMyA1OTAgMzI0IDYwOFE0MzkgNzA1IDU1MSA3MDVRNjExIDcwNSA2NTggNjgzVDczMyA2MjNUNzc1IDU0M1Q3ODkgNDU0UTc4OSAzODAgNzY2IDMwNFQ3MjAgMTkyUTY3NyAxMjUgNjE3IDEyNVE1OTEgMTI1IDU3MyAxMzdUNTQ4IDE2MFQ1NDEgMTc2UTU0MSAxNzggNTQwIDE3OEw1MzQgMTczUTUyNyAxNjggNTE1IDE2MFQ0ODggMTQ0VDQ1NCAxMzFUNDE3IDEyNVEzNjEgMTI1IDMyMCAxNjZUMjc5IDI4NFEyNzkgMzkzIDM1NiA0ODFUNTIzIDU2OVE1NzAgNTY5IDYwMyA1MzdRNjIzIDUxNSA2MzIgNDkwTDYzNyA0ODBMNjU3IDQ3OVE2ODQgNDc5IDY4NCA0NzBRNjg0IDQ2NSA2NTAgMzMzTDYxNyAxOTlWMTg1UTYxNiAxNjIgNjI4IDE2MlE2NzcgMTYyIDcxMiAyNzhRNzQzIDM4MSA3NDMgNDQyUTc0MyA1NTUgNjg3IDYxMVQ1NTMgNjY4UTQ2NyA2NjggMzg1IDYwOFQyNTAgNDUwVDE5OCAyNTBaTTU5OCA0NDVRNTk4IDQ1MyA1OTQgNDcwVDU2OSA1MTBUNTE4IDUzMlE0NjMgNTMyIDQxMCA0NDhUMzU2IDI3MVEzNTYgMjIwIDM3NCAxOTFUNDIzIDE2MlE0ODIgMTYyIDU1MiAyNTVMNTc1IDM0OFE1OTggNDQwIDU5OCA0NDUnLFxuICAgIDB4NUI6ICcyMDUgLTIyMVEyMDUgLTIzOSAxOTQgLTI1MEgxMzdIMTA2UTczIC0yNTAgNzMgLTI0MlE3MyAtMjMyIDE5NCAyNTVUMzIxIDc0N0wzMjQgNzUwSDM4MUg0MTdRNDM1IDc1MCA0NDAgNzQ4VDQ0NiA3MzlRNDQ2IDczMCA0NDMgNzIzVDQzNyA3MTJMNDM0IDcxMEgzNTBMMzQ5IDcwNlEzNDkgNzA0IDIzNSAyNDlUMTIwIC0yMDhRMTIwIC0yMTAgMTU5IC0yMTBRMTY2IC0yMTAgMTc1IC0yMTBUMTg3IC0yMDlRMjA1IC0yMDkgMjA1IC0yMjEnLFxuICAgIDB4NUQ6ICcyMjcgNzIxUTIyNyA3MzkgMjM4IDc1MEgyOTVIMzI2UTM1OSA3NTAgMzU5IDc0MlEzNTkgNzMyIDIzOCAyNDVUMTExIC0yNDdMMTA4IC0yNTBINTFIMTVRLTMgLTI1MCAtOCAtMjQ4VC0xNCAtMjM5US0xNCAtMjMwIC0xMSAtMjIzVC01IC0yMTJMLTIgLTIxMEg4Mkw4MyAtMjA2UTgzIC0yMDQgMTk3IDI1MVQzMTIgNzA4UTMxMiA3MTAgMjczIDcxMFEyNjYgNzEwIDI1NyA3MTBUMjQ1IDcwOVEyMjcgNzA5IDIyNyA3MjEnLFxuICAgIDB4NUU6ICc1MjggNTU1UTUyOCA1NDkgNTE0IDUzOFQ0OTYgNTI3UTQ5MSA1MjcgNDcwIDU1NFE0NTggNTY5IDQ0OSA1ODBMNDE0IDYyNUwzNTMgNTc4UTMzOSA1NjcgMzIzIDU1NVQyOTggNTM2TDI5MCA1MjlRMjg2IDUyNyAyODUgNTI3UTI3OSA1MjcgMjczIDUzM1QyNjQgNTQ2TDI2MCA1NTNRMjYwIDU1OSAyNjMgNTYyUTI2NSA1NjQgMzQyIDYyOFQ0MjEgNjkzVDQyNSA2OTRRNDMwIDY5NCA0MzMgNjkxUTUyOCA1NjMgNTI4IDU1NScsXG4gICAgMHg1RjogJzk4IC02MlE5MSAtNTggOTEgLTUxUTkxIC0zMSAxMDAgLTI2UTEwMiAtMjUgMzI0IC0yNUg0NDJINTAwUTUzNiAtMjUgNTQ1IC0yN1Q1NTQgLTM2UTU1NCAtNTAgNTQ4IC01NlE1NDYgLTYwIDUzOCAtNjFRNTIwIC02MiAzMTkgLTYySDk4JyxcbiAgICAweDdFOiAnMjY2IDIwOFEyNjIgMjA4IDI1NSAyMTVUMjQ3IDIyOFEyNDcgMjMzIDI1MCAyMzZUMjc0IDI1OVEzMzUgMzE4IDM2OSAzMThRMzk0IDMxOCA0MjAgMjkyVDQ2NCAyNjVRNDg1IDI2NSA1MTYgMjkxVDU1MCAzMThRNTU0IDMxOCA1NjIgMzExVDU3MSAyOTdRNTcwIDI5MyA1NTEgMjczVDUwMiAyMzFUNDUxIDIwOUg0NDdRNDIxIDIwOSAzOTYgMjM1VDM1NSAyNjFRMzM0IDI2MSAzMDEgMjM1VDI2NiAyMDgnLFxuICAgIDB4MTMxOiAnNzUgMjg3UTc1IDI5MiA4MiAzMTNUMTAzIDM2MlQxNDIgNDEzVDE5NiA0NDFIMjE0UTI0OCA0NDEgMjcwIDQxOVQyOTMgMzU3UTI5MiAzMzggMjg5IDMzMFQyNDUgMjA4UTE5MyA3MiAxOTMgNDZRMTkzIDI2IDIwOSAyNlEyMjggMjYgMjQ3IDQzUTI3MyA3MSAyOTIgMTM2UTI5NSAxNDggMjk3IDE1MFQzMTEgMTUzSDMxN1EzMjcgMTUzIDMzMCAxNTNUMzM3IDE1MFQzNDAgMTQzUTM0MCAxMzMgMzMwIDEwNVQyOTIgNDFUMjI4IC04UTIyMCAtMTAgMjA0IC0xMFExNjAgLTEwIDE0MSAxNVQxMjIgNzFRMTIyIDk4IDE3MSAyMjdUMjIxIDM4NFEyMjEgMzk2IDIxOCA0MDBUMjAzIDQwNVExNzUgNDAzIDE1NiAzNzRUMTI4IDMxMlQxMTYgMjc5UTExNSAyNzggOTcgMjc4SDgxUTc1IDI4NCA3NSAyODcnLFxuICAgIDB4MjM3OiAnNzUgMjg0VDc1IDI4N1Q4MSAzMDVUMTAxIDM0M1QxMzMgMzg5VDE4MCA0MjZUMjQwIDQ0MlEyNzMgNDQwIDMwMCA0MjBUMzI3IDM1MFYzMzJMMjc4IDEzNFEyNjcgOTIgMjUzIDM3VDIzMyAtNDVUMjI1IC03M1EyMDggLTEyMyAxNjIgLTE2M1Q1NCAtMjA0UTggLTIwNCAtMTUgLTE4MVEtMzIgLTE2NCAtMzIgLTE0MFEtMzIgLTExMiAtMTQgLTk2VDI3IC03OVE0OCAtNzkgNTcgLTkxVDY3IC0xMTRRNjcgLTE0NiAzOSAtMTY2TDQ0IC0xNjdINTlINjBRMTEyIC0xNjcgMTQ1IC03NFExNDggLTY1IDE5OCAxMzRUMjUxIDM0N1EyNTIgMzUzIDI1MiAzNzBRMjUyIDM4MiAyNTEgMzg4VDI0NSAzOTlUMjMwIDQwNVEyMDQgNDA1IDE3NSAzNzhRMTU3IDM2MCAxNDUgMzM3VDEyNiAyOThUMTE3IDI4MFQ5OCAyNzhIODFRNzUgMjg0IDc1IDI4NycsXG4gICAgMHgzMDA6ICctMjIyIDY1MVEtMjIyIDY2OCAtMjA2IDY4MlQtMTc0IDY5N1EtMTU1IDY5NyAtMTQ1IDY4MFEtMTQwIDY3MSAtMTA3IDU5OVQtNzQgNTI2US03NCA1MjIgLTg4IDUxMVQtMTA3IDUwMFEtMTA5IDUwMCAtMTEzIDUwMlQtMTY3IDU2OFQtMjE5IDYzN1EtMjIyIDY0MyAtMjIyIDY1MScsXG4gICAgMHgzMDE6ICctMTQ4IDUwMFEtMTU0IDUwMCAtMTYzIDUxMVQtMTczIDUyOFEtMTczIDUyOSAtMTcyIDUzMFY1MzJRLTE3MCA1MzQgLTk3IDYxMFQtMjEgNjg4US04IDY5NyA0IDY5N1ExOSA2OTcgMjkgNjg4VDM5IDY2M1QzMCA2MzhRMjYgNjMxIC01MCA1NzNMLTEzNSA1MDdRLTE0NCA1MDAgLTE0OCA1MDAnLFxuICAgIDB4MzAyOiAnMTcgNTU1UTE3IDU0OSAzIDUzOFQtMTUgNTI3US0yMCA1MjcgLTQxIDU1NFEtNTMgNTY5IC02MiA1ODBMLTk3IDYyNUwtMTU4IDU3OFEtMTcyIDU2NyAtMTg4IDU1NVQtMjEyIDUzNkwtMjIxIDUyOVEtMjI1IDUyNyAtMjI2IDUyN1EtMjMyIDUyNyAtMjM4IDUzM1QtMjQ4IDU0NkwtMjUxIDU1M1EtMjUxIDU1OSAtMjQ4IDU2MlEtMjQ2IDU2NCAtMTY5IDYyOFQtOTAgNjkzVC04NiA2OTRRLTgxIDY5NCAtNzggNjkxUTE3IDU2MyAxNyA1NTUnLFxuICAgIDB4MzAzOiAnLTI0NSA1NThRLTI0OSA1NTggLTI1NiA1NjVULTI2NCA1NzhRLTI2NCA1ODMgLTI2MSA1ODZULTIzNyA2MDlRLTE3NiA2NjggLTE0MiA2NjhRLTExNyA2NjggLTkxIDY0MlQtNDcgNjE1US0yNiA2MTUgNSA2NDFUMzkgNjY4UTQzIDY2OCA1MSA2NjFUNjAgNjQ3UTU5IDY0MyA0MCA2MjNULTkgNTgxVC02MCA1NTlILTY0US05MCA1NTkgLTExNSA1ODVULTE1NiA2MTFRLTE3NyA2MTEgLTIxMCA1ODVULTI0NSA1NTgnLFxuICAgIDB4MzA0OiAnLTI3NSA1NDRRLTI4MiA1NDggLTI4MiA1NTRRLTI4MiA1NjEgLTI3OSA1NzNULTI3MSA1ODhRLTI2OSA1ODkgLTExMSA1ODlILTI3SDEyUTM4IDU4OSA0NiA1ODdUNTQgNTc4UTU0IDU3NCA1MSA1NjNUNDcgNTUwUTQ1IDU0NiAzMiA1NDVRMTUgNTQ0IC0xMTggNTQ0SC0yNzUnLFxuICAgIDB4MzA2OiAnLTIzNyA2NDFRLTIzNyA2OTQgLTIxOCA2OTRILTIxM1EtMTk1IDY5NCAtMTk1IDY4NFEtMTk1IDY4MyAtMTk1IDY3OVQtMTk3IDY2N1QtMTk4IDY1MFEtMTk4IDYxMSAtMTc2IDU4OVQtMTE3IDU2NlEtNzQgNTY2IC0zNCA1OTdUMjMgNjc4UTI3IDY4OSAzMCA2OTFUNDMgNjk0UTYyIDY5NCA2MiA2ODRRNjIgNjcxIDQ5IDY0NVQxNCA1ODlULTQ2IDUzN1QtMTIzIDUxNVEtMTc1IDUxNSAtMjA2IDU1MFQtMjM3IDY0MScsXG4gICAgMHgzMDc6ICctMTY1IDU5OVEtMTYyIDYzMSAtMTM5IDY1MFQtOTMgNjY5US02NSA2NjkgLTUzIDY1M1QtNDEgNjIwUS00MSA1OTMgLTYzIDU3MVQtMTE2IDU0OFEtMTM0IDU0OCAtMTQ5IDU1OVQtMTY1IDU5OScsXG4gICAgMHgzMDg6ICctMjUxIDYwMVEtMjUxIDYyNiAtMjMwIDY0N1QtMTgwIDY2OVEtMTM5IDY2OSAtMTMzIDYyNVEtMTMzIDU5NSAtMTU1IDU3NVQtMjAzIDU1NFEtMjIzIDU1NCAtMjM3IDU2N1QtMjUxIDYwMVpNLTcyIDU5OVEtNzIgNjMyIC00OCA2NTBULTIgNjY5UTE4IDY2OSAzMSA2NTdUNDUgNjIzUTQ1IDU5MiAyMiA1NzNULTI1IDU1NFEtNjggNTU0IC03MiA1OTknLFxuICAgIDB4MzBBOiAnLTE5OSA2MTBRLTE5OSA2NTQgLTE2MSA2ODVULTc5IDcxNlEtMzkgNzE2IC0xNiA2OTNRMyA2NzQgMyA2NDdRMyA2MDcgLTM0IDU3NVQtMTE4IDU0MlEtMTk5IDU0MiAtMTk5IDYxMFpNLTQxIDYzMVQtNDEgNjU1VC04MyA2NzlILTg5US0xMjkgNjc5IC0xNDIgNjU2US0xNDYgNjUwIC0xNTEgNjMyVC0xNTYgNjA0US0xNTYgNTc4IC0xMTMgNTc4SC0xMDhRLTk0IDU3OCAtODYgNTc5VC02OSA1ODZULTUyIDYwNVEtNDEgNjMxIC00MSA2NTUnLFxuICAgIDB4MzBCOiAnLTIxNyA1MDNRLTIyMSA1MDMgLTIzNCA1MTBULTI0OCA1MjNRLTI0OCA1MjggLTIwNSA2MDJRLTIwMCA2MTAgLTE5MiA2MjNULTE4MCA2NDRULTE3MCA2NjFULTE1OSA2NzZULTE1MSA2ODZULTE0MiA2OTRULTEzNCA2OTZRLTEzMiA2OTcgLTEyMSA2OTdRLTg4IDY5NCAtODggNjY0US04OCA2NTIgLTk3IDY0MFQtMTUyIDU3NFEtMjE0IDUwNCAtMjE3IDUwM1pNLTY0IDUwM1EtNjggNTAzIC04MSA1MTBULTk1IDUyM1EtOTUgNTI4IC01MiA2MDJRLTQ3IDYxMCAtMzkgNjIzVC0yNyA2NDRULTE3IDY2MVQtNiA2NzZUMiA2ODZUMTEgNjk0VDE5IDY5NlEyMSA2OTcgMzIgNjk3UTY1IDY5NCA2NSA2NjRRNjUgNjUyIDU2IDY0MFQxIDU3NFEtNjEgNTA0IC02NCA1MDMnLFxuICAgIDB4MzBDOiAnMTEgNjM3UTE2IDYzNyAyMiA2MjRUMjkgNjA3UTI5IDYwNiAyNyA2MDJRMjYgNjAwIC00NyA1NTJULTEyNSA1MDJILTEyN1EtMTMzIDUwMiAtMTg0IDU1M1EtMjM2IDYwMiAtMjM2IDYwOFEtMjM2IDYxMiAtMjI0IDYyNVQtMjA2IDYzOEwtMjAyIDYzN0wtMTk2IDYzMlEtMTkwIDYyOCAtMTc5IDYyMFQtMTU4IDYwM0wtMTE2IDU3MFEtMTA5IDU3MiAtNTIgNjA0VDExIDYzNycsXG4gICAgMHgzREQ6ICc0NzcgMjYxUTQ3NyAyNTcgNDczIDI1NlQ0NTUgMjUzVDQxNyAyNTFUMzQ4IDI1MEgyMzVMMTU1IC03N0wxNDYgLTgyUTEzNyAtODUgMTA5IC04NVE1NSAtODUgNTUgLTc3TDEzOSAyNjFRMjI0IDU5NiAyMjYgNTk4UTIyOSA2MDMgMjM5IDYwM1EyNDAgNjAzIDI1NCA2MDNUMjkwIDYwM1QzNDEgNjA0VDQwNSA2MDVUNDc3IDYwNVE2NTYgNjAzIDY4NyA2MDJUNzE5IDU5NlE3MTkgNTg5IDY5MiA1ODhUNTEzIDU4NUgzMTlMMjgyIDQyN0wyNDIgMjcyUTI0MiAyNzAgMzUxIDI3MFEzODggMjcwIDQxMCAyNzBUNDQ0IDI2OVQ0NjAgMjY3VDQ2OSAyNjVUNDc3IDI2MScsXG4gICAgMHgyMDEzOiAnOTggMjQ4UTkxIDI1MiA5MSAyNTlROTEgMjc5IDEwMCAyODRRMTAyIDI4NSAzMjQgMjg1SDQ0Mkg1MDBRNTM2IDI4NSA1NDUgMjgzVDU1NCAyNzRRNTU0IDI2MCA1NDggMjU0UTU0NiAyNTAgNTM4IDI0OVE1MjAgMjQ4IDMxOSAyNDhIOTgnLFxuICAgIDB4MjAxNDogJzEyNCAyNDhRMTE3IDI1MiAxMTcgMjU5UTExNyAyNzkgMTI2IDI4NFExMjggMjg1IDU3OSAyODVUMTAzMyAyODRRMTAzNyAyODAgMTAzNyAyNzhRMTAzOCAyNzYgMTAzOCAyNzRRMTAzOCAyNTMgMTAyOSAyNTBRMTAyNiAyNDggNTc1IDI0OEgxMjQnLFxuICAgIDB4MjAxNTogJzEyNCAyNDhRMTE3IDI1MiAxMTcgMjU5UTExNyAyNzkgMTI2IDI4NFExMjggMjg1IDU3OSAyODVUMTAzMyAyODRRMTAzNyAyODAgMTAzNyAyNzhRMTAzOCAyNzYgMTAzOCAyNzRRMTAzOCAyNTMgMTAyOSAyNTBRMTAyNiAyNDggNTc1IDI0OEgxMjQnLFxuICAgIDB4MjAxNzogJzk4IC02MlE5MSAtNTggOTEgLTUxUTkxIC0zMSAxMDAgLTI2UTEwMiAtMjUgMzI0IC0yNUg0NDJINTAwUTUzNiAtMjUgNTQ1IC0yN1Q1NTQgLTM2UTU1NCAtNTAgNTQ4IC01NlE1NDYgLTYwIDUzOCAtNjFRNTIwIC02MiAzMTkgLTYySDk4JyxcbiAgICAweDIwMTg6ICcyNDkgMzc5UTIyOCAzNzkgMjEzIDM5NlQxOTcgNDQ4UTE5NyA1MzMgMjcxIDYyN0wyNzggNjM1UTI4NiA2NDMgMjk1IDY1MlQzMTQgNjcxVDMzMiA2ODdUMzQ0IDY5NFEzNDkgNjk0IDM1NSA2ODVUMzYyIDY3MVEzNjIgNjY4IDM0NSA2NTRUMzAxIDYwOFQyNTYgNTM3UTIzOCA0OTMgMjQwIDQ5MVEyNDEgNDkxIDI0NSA0OTNUMjU4IDQ5OFQyNzUgNTAwUTI5NiA1MDAgMzExIDQ4OFQzMjYgNDU0UTMyNiA0MjYgMzA0IDQwM1QyNDkgMzc5JyxcbiAgICAweDIwMTk6ICcyNTAgNjIwUTI1MCA2NDcgMjcyIDY3MFQzMjUgNjk0UTM0OCA2OTQgMzYyIDY3N1QzNzcgNjMzVjYyNFEzNzcgNTY2IDM0MyA1MDZUMjc1IDQxMlQyMzEgMzc5UTIyNiAzNzkgMjIwIDM4OFQyMTMgNDAxVDIzMiA0MjFUMjc5IDQ3MlQzMjMgNTQ3UTMzNSA1NzMgMzM1IDU4MkwzMzEgNTgwUTMyNyA1NzggMzE4IDU3NlQzMDAgNTczUTI3NyA1NzMgMjY0IDU4NVQyNTAgNjIwJyxcbiAgICAweDIwMUM6ICcyOTUgMzc5UTI3NCAzNzkgMjU5IDM5NlQyNDMgNDQ4UTI0MyA1MzMgMzE3IDYyN1EzMjYgNjM4IDM1NCA2NjZUMzkxIDY5NFEzOTUgNjk0IDQwMiA2ODZUNDA5IDY3M1E0MDkgNjY4IDM5MiA2NTRUMzQ4IDYwOFQzMDIgNTM3UTI4NCA0OTMgMjg2IDQ5MVEyODcgNDkxIDI5MSA0OTNUMzA0IDQ5OFQzMjEgNTAwUTM0MiA1MDAgMzU3IDQ4OFQzNzIgNDU0UTM3MiA0MjYgMzUwIDQwM1QyOTUgMzc5Wk00OTIgMzc5UTQ3MSAzNzkgNDU2IDM5NlQ0NDAgNDQ4UTQ0MCA1MzMgNTE0IDYyN1E1MjMgNjM4IDU1MSA2NjZUNTg4IDY5NFE1OTIgNjk0IDU5OSA2ODVUNjA2IDY3MlQ1ODkgNjU0VDU0NCA2MDhUNDk5IDUzN1E0ODEgNDkzIDQ4MyA0OTFRNDg0IDQ5MSA0ODggNDkzVDUwMSA0OThUNTE4IDUwMFE1MzkgNTAwIDU1NCA0ODhUNTY5IDQ1NFE1NjkgNDI2IDU0NyA0MDNUNDkyIDM3OScsXG4gICAgMHgyMDFEOiAnMjE0IDYyMFEyMTQgNjQ3IDIzNiA2NzBUMjg5IDY5NFEzMTIgNjk0IDMyNiA2NzdUMzQxIDYzM1Y2MjRRMzQxIDU4OCAzMjcgNTUwVDI5NCA0ODJUMjUzIDQyOFQyMTYgMzkyVDE5NiAzNzlRMTkxIDM3OSAxODQgMzg4VDE3NiA0MDFRMTc2IDQwNCAxOTUgNDIxVDI0MyA0NzJUMjg3IDU0N1EyOTkgNTc2IDI5OSA1ODJMMjk1IDU4MFEyOTEgNTc4IDI4MiA1NzZUMjY0IDU3M1EyNDEgNTczIDIyOCA1ODVUMjE0IDYyMFpNNDExIDYyMFE0MTEgNjQ3IDQzMyA2NzBUNDg2IDY5NFE1MDkgNjk0IDUyMyA2NzdUNTM4IDYzM1Y2MjRRNTM4IDU4OCA1MjQgNTUwVDQ5MSA0ODJUNDUwIDQyOFQ0MTMgMzkyVDM5MyAzNzlRMzg4IDM3OSAzODEgMzg4VDM3MyA0MDFRMzczIDQwNCAzOTIgNDIxVDQ0MCA0NzJUNDg0IDU0N1E0OTYgNTc2IDQ5NiA1ODJMNDkyIDU4MFE0ODggNTc4IDQ3OSA1NzZUNDYxIDU3M1E0MzggNTczIDQyNSA1ODVUNDExIDYyMCcsXG4gICAgMHgyMDQ0OiAnMTY2IC0yMTVUMTU5IC0yMTVUMTQ3IC0yMTJUMTQxIC0yMDRUMTM5IC0xOTdRMTM5IC0xOTAgMTQ0IC0xODNRMTU3IC0xNTcgMzc4IDI3NFQ2MDIgNzA3UTYwNSA3MTYgNjE4IDcxNlE2MjUgNzE2IDYzMCA3MTJUNjM2IDcwM1Q2MzggNjk2UTYzOCA2OTEgNDA2IDI0MVQxNzAgLTIxMlExNjYgLTIxNSAxNTkgLTIxNScsXG4gICAgMHgyMTBGOiAnMTUwIDQ3NVExNDcgNDc1IDExOCA0NjZUODIgNDU3UTczIDQ1NyA2NCA0NjdUNTQgNDg3UTU0IDQ5MCA1NSA0OTJRNjMgNTA2IDY0IDUwNlE2NyA1MTIgMTE4IDUyNlExNjIgNTQxIDE2OSA1NDZRMTczIDU1OSAxNzUgNTc1UTE4MSA1OTYgMTgxIDYwNFExODEgNjEzIDE2NiA2MTdRMTY0IDYxNyAxNTMgNjE4VDEzNSA2MTlRMTE5IDYxOSAxMTQgNjIxVDEwOSA2MzBRMTA5IDYzNiAxMTQgNjU2VDEyMiA2ODFRMTI1IDY4NSAyMDIgNjg4UTI3MiA2OTUgMjg2IDY5NVEzMDQgNjk1IDMwNCA2ODRRMzA0IDY4MiAyOTEgNjI4TDI3OCA1NzdMMzg2IDYxMlE0NjYgNjM1IDQ3NiA2MzVUNDkyIDYyN1Q0OTkgNjA3UTQ5OSA1OTMgNDg5IDU4NlE0ODUgNTgzIDM3MyA1NDZMMjYyIDUxMlEyNjIgNTExIDI0OCA0NTVUMjMzIDM5N1QyMzYgMzk3VDI0NCA0MDRRMjk1IDQ0MSAzNTcgNDQxUTQwNSA0NDEgNDQ1IDQxN1Q0ODUgMzMzUTQ4NSAyODQgNDQ5IDE3OFQ0MTIgNThUNDI2IDQ0UTQ0NyA0NCA0NjYgNjhRNDg1IDg3IDUwMCAxMzBMNTA5IDE1Mkg1MzFINTQzUTU2MiAxNTIgNTYyIDE0NFE1NjIgMTI4IDU0NiA5M1Q0OTQgMjNUNDE1IC0xM1EzODUgLTEzIDM1OSAzVDMyMiA0NFEzMTggNTIgMzE4IDc3UTMxOCA5OSAzNTIgMTk2VDM4NiAzMzdRMzg2IDM4NiAzNDYgMzg2UTMxOCAzODYgMjg2IDM3MFEyNjcgMzYxIDI0NSAzMzhUMjExIDI5MlEyMDcgMjg3IDE5MyAyMzVUMTYyIDExM1QxMzggMjFRMTI4IDcgMTIyIDRRMTA1IC0xMiA4MyAtMTJRNjYgLTEyIDU0IC0yVDQyIDI2UTQyIDQ1IDk4IDI1N0wxNTEgNDc1SDE1MCcsXG4gICAgMHgyMjA2OiAnNTc0IDcxNUw1ODIgNzE2UTU4OSA3MTYgNTk1IDcxNlE2MTIgNzE2IDYxNiA3MTRRNjIxIDcxMiA2MjEgNzA5UTYyMiA3MDcgNzA1IDM1OVQ3ODggOFE3ODYgNSA3ODUgM0w3ODEgMEg0MTZRNTIgMCA1MCAyVDQ4IDZRNDggOSAzMDUgMzU4VDU2NyA3MTFRNTcyIDcxMiA1NzQgNzE1Wk01OTkgMzQ2TDUzOCA2MDJMNDQyIDQ3NFEzNDcgMzQ1IDI1MiAyMTdUMTU3IDg3VDQwOSA4NlQ2NjEgODhMNjU0IDEyMFE2NDYgMTUxIDYyOSAyMjBUNTk5IDM0NicsXG4gICAgMHgyOUY4OiAnMTY2IC0yMTVUMTU5IC0yMTVUMTQ3IC0yMTJUMTQxIC0yMDRUMTM5IC0xOTdRMTM5IC0xOTAgMTQ0IC0xODNRMTU3IC0xNTcgMzc4IDI3NFQ2MDIgNzA3UTYwNSA3MTYgNjE4IDcxNlE2MjUgNzE2IDYzMCA3MTJUNjM2IDcwM1Q2MzggNjk2UTYzOCA2OTEgNDA2IDI0MVQxNzAgLTIxMlExNjYgLTIxNSAxNTkgLTIxNScsXG59LHtcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3QgbGFyZ2VvcDogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHgyODogWzEuMTUsIC42NDksIC41OTddLFxuICAgIDB4Mjk6IFsxLjE1LCAuNjQ5LCAuNTk3XSxcbiAgICAweDJGOiBbMS4xNSwgLjY0OSwgLjgxMV0sXG4gICAgMHg1QjogWzEuMTUsIC42NDksIC40NzJdLFxuICAgIDB4NUM6IFsxLjE1LCAuNjQ5LCAuODExXSxcbiAgICAweDVEOiBbMS4xNSwgLjY0OSwgLjQ3Ml0sXG4gICAgMHg3QjogWzEuMTUsIC42NDksIC42NjddLFxuICAgIDB4N0Q6IFsxLjE1LCAuNjQ5LCAuNjY3XSxcbiAgICAweDJDNjogWy43NzIsIC0wLjU2NSwgMV0sXG4gICAgMHgyREM6IFsuNzUsIC0wLjYxMSwgMV0sXG4gICAgMHgzMDI6IFsuNzcyLCAtMC41NjUsIDBdLFxuICAgIDB4MzAzOiBbLjc1LCAtMC42MTEsIDBdLFxuICAgIDB4MjAxNjogWy42MDIsIDAsIC43NzhdLFxuICAgIDB4MjA0NDogWzEuMTUsIC42NDksIC44MTFdLFxuICAgIDB4MjE5MTogWy42LCAwLCAuNjY3XSxcbiAgICAweDIxOTM6IFsuNiwgMCwgLjY2N10sXG4gICAgMHgyMUQxOiBbLjU5OSwgMCwgLjc3OF0sXG4gICAgMHgyMUQzOiBbLjYsIDAsIC43NzhdLFxuICAgIDB4MjIwRjogWy45NSwgLjQ1LCAxLjI3OF0sXG4gICAgMHgyMjEwOiBbLjk1LCAuNDUsIDEuMjc4XSxcbiAgICAweDIyMTE6IFsuOTUsIC40NSwgMS40NDRdLFxuICAgIDB4MjIxQTogWzEuMTUsIC42NSwgMSwge2ljOiAuMDJ9XSxcbiAgICAweDIyMjM6IFsuNjI3LCAuMDE1LCAuMzMzXSxcbiAgICAweDIyMjU6IFsuNjI3LCAuMDE1LCAuNTU2XSxcbiAgICAweDIyMkI6IFsxLjM2LCAuODYyLCAuNTU2LCB7aWM6IC4zODh9XSxcbiAgICAweDIyMkM6IFsxLjM2LCAuODYyLCAxLjA4NCwge2ljOiAuMzg4fV0sXG4gICAgMHgyMjJEOiBbMS4zNiwgLjg2MiwgMS41OTIsIHtpYzogLjM4OH1dLFxuICAgIDB4MjIyRTogWzEuMzYsIC44NjIsIC41NTYsIHtpYzogLjM4OH1dLFxuICAgIDB4MjJDMDogWy45NSwgLjQ1LCAxLjExMV0sXG4gICAgMHgyMkMxOiBbLjk1LCAuNDUsIDEuMTExXSxcbiAgICAweDIyQzI6IFsuOTQ5LCAuNDUsIDEuMTExXSxcbiAgICAweDIyQzM6IFsuOTUsIC40NDksIDEuMTExXSxcbiAgICAweDIzMDg6IFsxLjE1LCAuNjQ5LCAuNTI4XSxcbiAgICAweDIzMDk6IFsxLjE1LCAuNjQ5LCAuNTI4XSxcbiAgICAweDIzMEE6IFsxLjE1LCAuNjQ5LCAuNTI4XSxcbiAgICAweDIzMEI6IFsxLjE1LCAuNjQ5LCAuNTI4XSxcbiAgICAweDIzMjk6IFsxLjE1LCAuNjQ5LCAuNjExXSxcbiAgICAweDIzMkE6IFsxLjE1LCAuNjQ5LCAuNjExXSxcbiAgICAweDIzRDA6IFsuNjAyLCAwLCAuNjY3XSxcbiAgICAweDI3NTg6IFsuNjI3LCAuMDE1LCAuMzMzXSxcbiAgICAweDI3RTg6IFsxLjE1LCAuNjQ5LCAuNjExXSxcbiAgICAweDI3RTk6IFsxLjE1LCAuNjQ5LCAuNjExXSxcbiAgICAweDJBMDA6IFsuOTQ5LCAuNDQ5LCAxLjUxMV0sXG4gICAgMHgyQTAxOiBbLjk0OSwgLjQ0OSwgMS41MTFdLFxuICAgIDB4MkEwMjogWy45NDksIC40NDksIDEuNTExXSxcbiAgICAweDJBMDQ6IFsuOTUsIC40NDksIDEuMTExXSxcbiAgICAweDJBMDY6IFsuOTUsIC40NSwgMS4xMTFdLFxuICAgIDB4MkEwQzogWzEuMzYsIC44NjIsIDIuMTY4LCB7aWM6IC4zODh9XSxcbiAgICAweDMwMDg6IFsxLjE1LCAuNjQ5LCAuNjExXSxcbiAgICAweDMwMDk6IFsxLjE1LCAuNjQ5LCAuNjExXSxcbn07XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtTVkdDaGFyTWFwLCBBZGRQYXRoc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuaW1wb3J0IHtsYXJnZW9wIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvbGFyZ2VvcC5qcyc7XG5cbmV4cG9ydCBjb25zdCBsYXJnZW9wOiBTVkdDaGFyTWFwID0gQWRkUGF0aHMoZm9udCwge1xuICAgIDB4Mjg6ICcxODAgOTZUMTgwIDI1MFQyMDUgNTQxVDI2NiA3NzBUMzUzIDk0NFQ0NDQgMTA2OVQ1MjcgMTE1MEg1NTVRNTYxIDExNDQgNTYxIDExNDFRNTYxIDExMzcgNTQ1IDExMjBUNTA0IDEwNzJUNDQ3IDk5NVQzODYgODc4VDMzMCA3MjFUMjg4IDUxM1QyNzIgMjUxUTI3MiAxMzMgMjgwIDU2UTI5MyAtODcgMzI2IC0yMDlUMzk5IC00MDVUNDc1IC01MzFUNTM2IC02MDlUNTYxIC02NDBRNTYxIC02NDMgNTU1IC02NDlINTI3UTQ4MyAtNjEyIDQ0MyAtNTY4VDM1MyAtNDQzVDI2NiAtMjcwVDIwNSAtNDEnLFxuICAgIDB4Mjk6ICczNSAxMTM4UTM1IDExNTAgNTEgMTE1MEg1Nkg2OVExMTMgMTExMyAxNTMgMTA2OVQyNDMgOTQ0VDMzMCA3NzFUMzkxIDU0MVQ0MTYgMjUwVDM5MSAtNDBUMzMwIC0yNzBUMjQzIC00NDNUMTUyIC01NjhUNjkgLTY0OUg1NlE0MyAtNjQ5IDM5IC02NDdUMzUgLTYzN1E2NSAtNjA3IDExMCAtNTQ4UTI4MyAtMzE2IDMxNiA1NlEzMjQgMTMzIDMyNCAyNTFRMzI0IDM2OCAzMTYgNDQ1UTI3OCA4NzcgNDggMTEyM1EzNiAxMTM3IDM1IDExMzgnLFxuICAgIDB4MkY6ICc3OCAtNjQ5UTU2IC02NDYgNTYgLTYyNVE1NiAtNjE0IDM4MiAyNjFUNzEyIDExNDBRNzE2IDExNTAgNzMyIDExNTBRNzU0IDExNDcgNzU0IDExMjZRNzU0IDExMTYgNDI4IDI0MFQ5OCAtNjM5UTk0IC02NDkgNzggLTY0OScsXG4gICAgMHg1QjogJzIyNCAtNjQ5VjExNTBINDU1VjEwOTlIMjc1Vi01OThINDU1Vi02NDlIMjI0JyxcbiAgICAweDVDOiAnNzU0IC02MjVRNzU0IC02NDkgNzMxIC02NDlRNzE1IC02NDkgNzEyIC02MzlRNzA5IC02MzUgMzgzIDI0MlQ1NSAxMTI0UTU0IDExMzUgNjEgMTE0MlQ4MCAxMTUwUTkyIDExNTAgOTggMTE0MFExMDEgMTEzNyA0MjcgMjYyVDc1NCAtNjI1JyxcbiAgICAweDVEOiAnMTYgMTA5OVYxMTUwSDI0N1YtNjQ5SDE2Vi01OThIMTk2VjEwOTlIMTYnLFxuICAgIDB4N0I6ICc1NDcgLTY0M0w1NDEgLTY0OUg1MjhRNTE1IC02NDkgNTAzIC02NDVRMzI0IC01ODIgMjkzIC00NjZRMjg5IC00NDkgMjg5IC00MjhUMjg3IC0yMDBMMjg2IDQyTDI4NCA1M1EyNzQgOTggMjQ4IDEzNVQxOTYgMTkwVDE0NiAyMjJMMTIxIDIzNVExMTkgMjM5IDExOSAyNTBRMTE5IDI2MiAxMjEgMjY2VDEzMyAyNzNRMjYyIDMzNiAyODQgNDQ5TDI4NiA0NjBMMjg3IDcwMVEyODcgNzM3IDI4NyA3OTRRMjg4IDk0OSAyOTIgOTYzUTI5MyA5NjYgMjkzIDk2N1EzMjUgMTA4MCA1MDggMTE0OFE1MTYgMTE1MCA1MjcgMTE1MEg1NDFMNTQ3IDExNDRWMTEzMFE1NDcgMTExNyA1NDYgMTExNVQ1MzYgMTEwOVE0ODAgMTA4NiA0MzcgMTA0NlQzODEgOTUwTDM3OSA5NDBMMzc4IDY5OVEzNzggNjU3IDM3OCA1OTRRMzc3IDQ1MiAzNzQgNDM4UTM3MyA0MzcgMzczIDQzNlEzNTAgMzQ4IDI0MyAyODJRMTkyIDI1NyAxODYgMjU0TDE3NiAyNTFMMTg4IDI0NVEyMTEgMjM2IDIzNCAyMjNUMjg3IDE4OVQzNDAgMTM1VDM3MyA2NVEzNzMgNjQgMzc0IDYzUTM3NyA0OSAzNzggLTkzUTM3OCAtMTU2IDM3OCAtMTk4TDM3OSAtNDM4TDM4MSAtNDQ5UTM5MyAtNTA0IDQzNiAtNTQ0VDUzNiAtNjA4UTU0NCAtNjExIDU0NSAtNjEzVDU0NyAtNjI5Vi02NDMnLFxuICAgIDB4N0Q6ICcxMTkgMTEzMFExMTkgMTE0NCAxMjEgMTE0N1QxMzUgMTE1MEgxMzlRMTUxIDExNTAgMTgyIDExMzhUMjUyIDExMDVUMzI2IDEwNDZUMzczIDk2NFEzNzggOTQyIDM3OCA3MDJRMzc4IDQ2OSAzNzkgNDYyUTM4NiAzOTQgNDM5IDMzOVE0ODIgMjk2IDUzNSAyNzJRNTQ0IDI2OCA1NDUgMjY2VDU0NyAyNTFRNTQ3IDI0MSA1NDcgMjM4VDU0MiAyMzFUNTMxIDIyN1Q1MTAgMjE3VDQ3NyAxOTRRMzkwIDEyOSAzNzkgMzlRMzc4IDMyIDM3OCAtMjAxUTM3OCAtNDQxIDM3MyAtNDYzUTM0MiAtNTgwIDE2NSAtNjQ0UTE1MiAtNjQ5IDEzOSAtNjQ5UTEyNSAtNjQ5IDEyMiAtNjQ2VDExOSAtNjI5UTExOSAtNjIyIDExOSAtNjE5VDEyMSAtNjE0VDEyNCAtNjEwVDEzMiAtNjA3VDE0MyAtNjAyUTE5NSAtNTc5IDIzNSAtNTM5VDI4NSAtNDQ3UTI4NiAtNDM1IDI4NyAtMTk5VDI4OSA1MVEyOTQgNzQgMzAwIDkxVDMyOSAxMzhUMzkwIDE5N1E0MTIgMjEzIDQzNiAyMjZUNDc1IDI0NEw0ODkgMjUwTDQ3MiAyNThRNDU1IDI2NSA0MzAgMjc5VDM3NyAzMTNUMzI3IDM2NlQyOTMgNDM0UTI4OSA0NTEgMjg5IDQ3MlQyODcgNjk5UTI4NiA5NDEgMjg1IDk0OFEyNzkgOTc4IDI2MiAxMDA1VDIyNyAxMDQ4VDE4NCAxMDgwVDE1MSAxMTAwVDEyOSAxMTA5TDEyNyAxMTEwUTExOSAxMTEzIDExOSAxMTMwJyxcbiAgICAweDJDNjogJzEwMDQgNjAzUTEwMDQgNjAwIDk5OSA1ODNUOTkxIDU2NUw5NjAgNTc0UTkyOSA1ODIgODY2IDU5OVQ3NDUgNjMxTDUwMCA2OThRNDk3IDY5OCAyNTQgNjMxUTE5NyA2MTYgMTM0IDU5OVQzOSA1NzRMOCA1NjVRNSA1NjUgMCA1ODJULTUgNjAzTDI2IDYxNFE1OCA2MjQgMTI0IDY0NlQyNDggNjg3TDQ5OSA3NzJROTk5IDYwNCAxMDA0IDYwMycsXG4gICAgMHgyREM6ICcyOTYgNjkxUTI1OCA2OTEgMjE2IDY4M1QxNDAgNjYzVDc5IDYzOVQzNCA2MTlUMTYgNjExUTEzIDYxOSA4IDYyOEwwIDY0NEwzNiA2NjJRMjA2IDc0OSAzMjEgNzQ5UTQxMCA3NDkgNTE3IDcxMFQ3MDMgNjcwUTc0MSA2NzAgNzgzIDY3OFQ4NTkgNjk4VDkyMCA3MjJUOTY1IDc0MlQ5ODMgNzUwUTk4NiA3NDIgOTkxIDczM0w5OTkgNzE3TDk2MyA2OTlRNzg3IDYxMSA2NjQgNjExUTU5NCA2MTEgNDg0IDY1MVQyOTYgNjkxJyxcbiAgICAweDMwMjogJzQgNjAzUTQgNjAwIC0xIDU4M1QtOSA1NjVMLTQwIDU3NFEtNzEgNTgyIC0xMzQgNTk5VC0yNTUgNjMxTC01MDAgNjk4US01MDMgNjk4IC03NDYgNjMxUS04MDMgNjE2IC04NjYgNTk5VC05NjEgNTc0TC05OTIgNTY1US05OTUgNTY1IC0xMDAwIDU4MlQtMTAwNSA2MDNMLTk3NCA2MTRRLTk0MiA2MjQgLTg3NiA2NDZULTc1MiA2ODdMLTUwMSA3NzJRLTEgNjA0IDQgNjAzJyxcbiAgICAweDMwMzogJy03MDQgNjkxUS03NDIgNjkxIC03ODQgNjgzVC04NjAgNjYzVC05MjEgNjM5VC05NjYgNjE5VC05ODQgNjExUS05ODcgNjE5IC05OTIgNjI4TC0xMDAwIDY0NEwtOTY0IDY2MlEtNzk0IDc0OSAtNjc5IDc0OVEtNTkwIDc0OSAtNDgzIDcxMFQtMjk3IDY3MFEtMjU5IDY3MCAtMjE3IDY3OFQtMTQxIDY5OFQtODAgNzIyVC0zNSA3NDJULTE3IDc1MFEtMTQgNzQyIC05IDczM0wtMSA3MTdMLTM3IDY5OVEtMjEzIDYxMSAtMzM2IDYxMVEtNDA1IDYxMSAtNTE1IDY1MVQtNzA0IDY5MScsXG4gICAgMHgyMDE2OiAnMjU3IDBWNjAySDMwMFYwSDI1N1pNNDc4IDBWNjAySDUyMVYwSDQ3OCcsXG4gICAgMHgyMDQ0OiAnNzggLTY0OVE1NiAtNjQ2IDU2IC02MjVRNTYgLTYxNCAzODIgMjYxVDcxMiAxMTQwUTcxNiAxMTUwIDczMiAxMTUwUTc1NCAxMTQ3IDc1NCAxMTI2UTc1NCAxMTE2IDQyOCAyNDBUOTggLTYzOVE5NCAtNjQ5IDc4IC02NDknLFxuICAgIDB4MjE5MTogJzExMiA0MjFMMTIwIDQyNFExMjcgNDI3IDEzNiA0MzBUMTYxIDQ0MVQxOTEgNDU4VDIyNCA0ODFUMjYwIDUxMFQyOTUgNTQ2VDMyOCA1OTFMMzMzIDYwMEwzNDAgNTg5UTM4MCA1MjcgNDMxIDQ4OVQ1NTUgNDIxVjM3N0w1NDMgMzgxUTQ0NSA0MTggMzY4IDQ5MkwzNTUgNTA0VjBIMzEyVjUwNEwyOTkgNDkyUTIyMiA0MTggMTI0IDM4MUwxMTIgMzc3VjQyMScsXG4gICAgMHgyMTkzOiAnMzEyIDk2VjYwMEgzNTVWOTZMMzY4IDEwOFE0NDUgMTgyIDU0MyAyMTlMNTU1IDIyM1YxNzlMNTQ2IDE3NlE1MzggMTczIDUyOSAxNjlUNTA1IDE1OFQ0NzUgMTQxVDQ0MiAxMTlUNDA3IDkwVDM3MiA1M1QzMzkgOUwzMzQgMEwzMjcgMTFRMjg3IDczIDIzNiAxMTFUMTEyIDE3OVYyMjNMMTI0IDIxOVEyMjIgMTgyIDI5OSAxMDhMMzEyIDk2JyxcbiAgICAweDIxRDE6ICcxNDIgMzI5UTMwMCA0MTkgMzg5IDU5OVEzODkgNTk4IDM5OSA1NzlUNDIwIDU0MVQ0NTIgNDk0VDQ5NyA0MzhUNTU4IDM4M1Q2MzYgMzI5VDcwOCAyOTRMNzIxIDI4OVYyNDZRNzE4IDI0NiA2OTQgMjU2VDYyMyAyOTNUNTMyIDM1Nkw1MjIgMzY0TDUyMSAxODJWMEg0NzhWNDA1TDQ2NiA0MTdRNDM2IDQ1MCAzODkgNTE2UTM4OCA1MTUgMzc4IDUwMFQzNTIgNDYzVDMxMiA0MTdMMzAwIDQwNVYwSDI1N1YzNjRMMjQ3IDM1NlEyMDIgMzIwIDE1NSAyOTNUODIgMjU2TDU3IDI0NlYyODlMNzAgMjk0UTEwMSAzMDUgMTQyIDMyOScsXG4gICAgMHgyMUQzOiAnMjU3IDIzNlY2MDBIMzAwVjE5NUwzMTIgMTgzUTM0MiAxNTAgMzg5IDg0UTM5MCA4NSA0MDAgMTAwVDQyNiAxMzdUNDY2IDE4M0w0NzggMTk1VjYwMEg1MjFWNDE4TDUyMiAyMzZMNTMyIDI0NFE1NzYgMjgwIDYyMyAzMDdUNjk2IDM0NEw3MjEgMzU0VjMxMUw3MDggMzA2UTY3NyAyOTUgNjM2IDI3MVE0NzggMTgxIDM4OSAxUTM4OSAyIDM3OSAyMVQzNTggNTlUMzI2IDEwNlQyODEgMTYyVDIyMCAyMTdUMTQyIDI3MVQ3MCAzMDZMNTcgMzExVjM1NFE2MCAzNTQgODMgMzQ1VDE1NCAzMDhUMjQ3IDI0NEwyNTcgMjM2JyxcbiAgICAweDIyMEY6ICcyMjAgODEyUTIyMCA4MTMgMjE4IDgxOVQyMTQgODI5VDIwOCA4NDBUMTk5IDg1M1QxODUgODY2VDE2NiA4NzhUMTQwIDg4N1QxMDcgODkzVDY2IDg5Nkg1NlY5NTBIMTIyMVY4OTZIMTIxMVExMDgwIDg5NiAxMDU4IDgxMlYtMzExUTEwNzYgLTM5NiAxMjExIC0zOTZIMTIyMVYtNDUwSDcyNVYtMzk2SDczNVE4NjQgLTM5NiA4ODggLTMxNFE4ODkgLTMxMiA4ODkgLTMxMVY4OTZIMzg4VjI5MkwzODkgLTMxMVE0MDUgLTM5NiA1NDIgLTM5Nkg1NTJWLTQ1MEg1NlYtMzk2SDY2UTE5NSAtMzk2IDIxOSAtMzE0UTIyMCAtMzEyIDIyMCAtMzExVjgxMicsXG4gICAgMHgyMjEwOiAnMjIwIDgxMlEyMjAgODEzIDIxOCA4MTlUMjE0IDgyOVQyMDggODQwVDE5OSA4NTNUMTg1IDg2NlQxNjYgODc4VDE0MCA4ODdUMTA3IDg5M1Q2NiA4OTZINTZWOTUwSDU1MlY4OTZINTQyUTQxMSA4OTYgMzg5IDgxMkwzODggMjA4Vi0zOTZIODg5VjgxMlE4ODkgODEzIDg4NyA4MTlUODgzIDgyOVQ4NzcgODQwVDg2OCA4NTNUODU0IDg2NlQ4MzUgODc4VDgwOSA4ODdUNzc2IDg5M1Q3MzUgODk2SDcyNVY5NTBIMTIyMVY4OTZIMTIxMVExMDgwIDg5NiAxMDU4IDgxMlYtMzExUTEwNzYgLTM5NiAxMjExIC0zOTZIMTIyMVYtNDUwSDU2Vi0zOTZINjZRMTk1IC0zOTYgMjE5IC0zMTRRMjIwIC0zMTIgMjIwIC0zMTFWODEyJyxcbiAgICAweDIyMTE6ICc2MCA5NDhRNjMgOTUwIDY2NSA5NTBIMTI2N0wxMzI1IDgxNVExMzg0IDY3NyAxMzg4IDY2OUgxMzQ4TDEzNDEgNjgzUTEzMjAgNzI0IDEyODUgNzYxUTEyMzUgODA5IDExNzQgODM4VDEwMzMgODgxVDg4MiA4OThUNjk5IDkwMkg1NzRINTQzSDI1MUwyNTkgODkxUTcyMiAyNTggNzI0IDI1MlE3MjUgMjUwIDcyNCAyNDZRNzIxIDI0MyA0NjAgLTU2TDE5NiAtMzU2UTE5NiAtMzU3IDQwNyAtMzU3UTQ1OSAtMzU3IDU0OCAtMzU3VDY3NiAtMzU4UTgxMiAtMzU4IDg5NiAtMzUzVDEwNjMgLTMzMlQxMjA0IC0yODNUMTMwNyAtMTk2UTEzMjggLTE3MCAxMzQ4IC0xMjRIMTM4OFExMzg4IC0xMjUgMTM4MSAtMTQ1VDEzNTYgLTIxMFQxMzI1IC0yOTRMMTI2NyAtNDQ5TDY2NiAtNDUwUTY0IC00NTAgNjEgLTQ0OFE1NSAtNDQ2IDU1IC00MzlRNTUgLTQzNyA1NyAtNDMzTDU5MCAxNzdRNTkwIDE3OCA1NTcgMjIyVDQ1MiAzNjZUMzIyIDU0NEw1NiA5MDlMNTUgOTI0UTU1IDk0NSA2MCA5NDgnLFxuICAgIDB4MjIxQTogJzEwMDEgMTE1MFExMDE3IDExNTAgMTAyMCAxMTMyUTEwMjAgMTEyNyA3NDEgMjQ0TDQ2MCAtNjQzUTQ1MyAtNjUwIDQzNiAtNjUwSDQyNFE0MjMgLTY0NyA0MjMgLTY0NVQ0MjEgLTY0MFQ0MTkgLTYzMVQ0MTUgLTYxN1Q0MDggLTU5NFQzOTkgLTU2MFQzODUgLTUxMlQzNjcgLTQ0OFQzNDMgLTM2NFQzMTIgLTI1OUwyMDMgMTE5TDEzOCA0MUwxMTEgNjdMMjEyIDE4OEwyNjQgMjQ4TDQ3MiAtNDc0TDk4MyAxMTQwUTk4OCAxMTUwIDEwMDEgMTE1MCcsXG4gICAgMHgyMjIzOiAnMTQ2IDYxMlExNTEgNjI3IDE2NiA2MjdRMTgyIDYyNyAxODcgNjEyUTE4OCA2MTAgMTg4IDMwNlQxODcgMFExODQgLTE1IDE2NiAtMTVRMTQ5IC0xNSAxNDYgMFYxMFExNDYgMTkgMTQ2IDM1VDE0NiA3M1QxNDYgMTIyVDE0NSAxNzlUMTQ1IDI0MVQxNDUgMzA2VDE0NSAzNzBUMTQ1IDQzM1QxNDUgNDg5VDE0NiA1MzhUMTQ2IDU3NlQxNDYgNjAyVjYxMicsXG4gICAgMHgyMjI1OiAnMTQ2IDYxMlExNTEgNjI3IDE2NiA2MjdRMTgyIDYyNyAxODcgNjEyUTE4OCA2MTAgMTg4IDMwNlQxODcgMFExODQgLTE1IDE2NiAtMTVRMTQ5IC0xNSAxNDYgMFYxMFExNDYgMTkgMTQ2IDM1VDE0NiA3M1QxNDYgMTIyVDE0NSAxNzlUMTQ1IDI0MVQxNDUgMzA2VDE0NSAzNzBUMTQ1IDQzM1QxNDUgNDg5VDE0NiA1MzhUMTQ2IDU3NlQxNDYgNjAyVjYxMlpNMzY4IDYxMlEzNzMgNjI3IDM4OCA2MjdRNDA0IDYyNyA0MDkgNjEyUTQxMCA2MTAgNDEwIDMwNlQ0MDkgMFE0MDYgLTE1IDM4OSAtMTVRMzcxIC0xNSAzNjggMFYxMFEzNjggMTkgMzY4IDM1VDM2OCA3M1QzNjggMTIyVDM2NyAxNzlUMzY3IDI0MVQzNjcgMzA2VDM2NyAzNzBUMzY3IDQzM1QzNjcgNDg5VDM2OCA1MzhUMzY4IDU3NlQzNjggNjAyVjYxMicsXG4gICAgMHgyMjJCOiAnMTE0IC03OThRMTMyIC04MjQgMTY1IC04MjRIMTY3UTE5NSAtODI0IDIyMyAtNzY0VDI3NSAtNjAwVDMyMCAtMzkxVDM2MiAtMTY0UTM2NSAtMTQzIDM2NyAtMTMzUTQzOSAyOTIgNTIzIDY1NVQ2NDUgMTEyN1E2NTEgMTE0NSA2NTUgMTE1N1Q2NzIgMTIwMVQ2OTkgMTI1N1Q3MzMgMTMwNlQ3NzcgMTM0NlQ4MjggMTM2MFE4ODQgMTM2MCA5MTIgMTMyNVQ5NDQgMTI0NVE5NDQgMTIyMCA5MzIgMTIwNVQ5MDkgMTE4NlQ4ODcgMTE4M1E4NjYgMTE4MyA4NDkgMTE5OFQ4MzIgMTIzOVE4MzIgMTI4NyA4ODUgMTI5Nkw4ODIgMTMwMFE4NzkgMTMwMyA4NzQgMTMwN1Q4NjYgMTMxM1E4NTEgMTMyMyA4MzMgMTMyM1E4MTkgMTMyMyA4MDcgMTMxMVQ3NzUgMTI1NVQ3MzYgMTEzOVQ2ODkgOTM2VDYzMyA2MjhRNTc0IDI5MyA1MTAgLTVUNDEwIC00MzdUMzU1IC02MjlRMjc4IC04NjIgMTY1IC04NjJRMTI1IC04NjIgOTIgLTgzMVQ1NSAtNzQ2UTU1IC03MTEgNzQgLTY5OFQxMTIgLTY4NVExMzMgLTY4NSAxNTAgLTcwMFQxNjcgLTc0MVExNjcgLTc4OSAxMTQgLTc5OCcsXG4gICAgMHgyMjJDOiAnMTE0IC03OThRMTMyIC04MjQgMTY1IC04MjRIMTY3UTE5NSAtODI0IDIyMyAtNzY0VDI3NSAtNjAwVDMyMCAtMzkxVDM2MiAtMTY0UTM2NSAtMTQzIDM2NyAtMTMzUTQzOSAyOTIgNTIzIDY1NVQ2NDUgMTEyN1E2NTEgMTE0NSA2NTUgMTE1N1Q2NzIgMTIwMVQ2OTkgMTI1N1Q3MzMgMTMwNlQ3NzcgMTM0NlQ4MjggMTM2MFE4ODQgMTM2MCA5MTIgMTMyNVQ5NDQgMTI0NVE5NDQgMTIyMCA5MzIgMTIwNVQ5MDkgMTE4NlQ4ODcgMTE4M1E4NjYgMTE4MyA4NDkgMTE5OFQ4MzIgMTIzOVE4MzIgMTI4NyA4ODUgMTI5Nkw4ODIgMTMwMFE4NzkgMTMwMyA4NzQgMTMwN1Q4NjYgMTMxM1E4NTEgMTMyMyA4MzMgMTMyM1E4MTkgMTMyMyA4MDcgMTMxMVQ3NzUgMTI1NVQ3MzYgMTEzOVQ2ODkgOTM2VDYzMyA2MjhRNTc0IDI5MyA1MTAgLTVUNDEwIC00MzdUMzU1IC02MjlRMjc4IC04NjIgMTY1IC04NjJRMTI1IC04NjIgOTIgLTgzMVQ1NSAtNzQ2UTU1IC03MTEgNzQgLTY5OFQxMTIgLTY4NVExMzMgLTY4NSAxNTAgLTcwMFQxNjcgLTc0MVExNjcgLTc4OSAxMTQgLTc5OFpNNjQyIC03OThRNjYwIC04MjQgNjkzIC04MjRINjk1UTcyMyAtODI0IDc1MSAtNzY0VDgwMyAtNjAwVDg0OCAtMzkxVDg5MCAtMTY0UTg5MyAtMTQzIDg5NSAtMTMzUTk2NyAyOTIgMTA1MSA2NTVUMTE3MyAxMTI3UTExNzkgMTE0NSAxMTgzIDExNTdUMTIwMCAxMjAxVDEyMjcgMTI1N1QxMjYxIDEzMDZUMTMwNSAxMzQ2VDEzNTYgMTM2MFExNDEyIDEzNjAgMTQ0MCAxMzI1VDE0NzIgMTI0NVExNDcyIDEyMjAgMTQ2MCAxMjA1VDE0MzcgMTE4NlQxNDE1IDExODNRMTM5NCAxMTgzIDEzNzcgMTE5OFQxMzYwIDEyMzlRMTM2MCAxMjg3IDE0MTMgMTI5NkwxNDEwIDEzMDBRMTQwNyAxMzAzIDE0MDIgMTMwN1QxMzk0IDEzMTNRMTM3OSAxMzIzIDEzNjEgMTMyM1ExMzQ3IDEzMjMgMTMzNSAxMzExVDEzMDMgMTI1NVQxMjY0IDExMzlUMTIxNyA5MzZUMTE2MSA2MjhRMTEwMiAyOTMgMTAzOCAtNVQ5MzggLTQzN1Q4ODMgLTYyOVE4MDYgLTg2MiA2OTMgLTg2MlE2NTMgLTg2MiA2MjAgLTgzMVQ1ODMgLTc0NlE1ODMgLTcxMSA2MDIgLTY5OFQ2NDAgLTY4NVE2NjEgLTY4NSA2NzggLTcwMFQ2OTUgLTc0MVE2OTUgLTc4OSA2NDIgLTc5OCcsXG4gICAgMHgyMjJEOiAnMTE0IC03OThRMTMyIC04MjQgMTY1IC04MjRIMTY3UTE5NSAtODI0IDIyMyAtNzY0VDI3NSAtNjAwVDMyMCAtMzkxVDM2MiAtMTY0UTM2NSAtMTQzIDM2NyAtMTMzUTQzOSAyOTIgNTIzIDY1NVQ2NDUgMTEyN1E2NTEgMTE0NSA2NTUgMTE1N1Q2NzIgMTIwMVQ2OTkgMTI1N1Q3MzMgMTMwNlQ3NzcgMTM0NlQ4MjggMTM2MFE4ODQgMTM2MCA5MTIgMTMyNVQ5NDQgMTI0NVE5NDQgMTIyMCA5MzIgMTIwNVQ5MDkgMTE4NlQ4ODcgMTE4M1E4NjYgMTE4MyA4NDkgMTE5OFQ4MzIgMTIzOVE4MzIgMTI4NyA4ODUgMTI5Nkw4ODIgMTMwMFE4NzkgMTMwMyA4NzQgMTMwN1Q4NjYgMTMxM1E4NTEgMTMyMyA4MzMgMTMyM1E4MTkgMTMyMyA4MDcgMTMxMVQ3NzUgMTI1NVQ3MzYgMTEzOVQ2ODkgOTM2VDYzMyA2MjhRNTc0IDI5MyA1MTAgLTVUNDEwIC00MzdUMzU1IC02MjlRMjc4IC04NjIgMTY1IC04NjJRMTI1IC04NjIgOTIgLTgzMVQ1NSAtNzQ2UTU1IC03MTEgNzQgLTY5OFQxMTIgLTY4NVExMzMgLTY4NSAxNTAgLTcwMFQxNjcgLTc0MVExNjcgLTc4OSAxMTQgLTc5OFpNNjQyIC03OThRNjYwIC04MjQgNjkzIC04MjRINjk1UTcyMyAtODI0IDc1MSAtNzY0VDgwMyAtNjAwVDg0OCAtMzkxVDg5MCAtMTY0UTg5MyAtMTQzIDg5NSAtMTMzUTk2NyAyOTIgMTA1MSA2NTVUMTE3MyAxMTI3UTExNzkgMTE0NSAxMTgzIDExNTdUMTIwMCAxMjAxVDEyMjcgMTI1N1QxMjYxIDEzMDZUMTMwNSAxMzQ2VDEzNTYgMTM2MFExNDEyIDEzNjAgMTQ0MCAxMzI1VDE0NzIgMTI0NVExNDcyIDEyMjAgMTQ2MCAxMjA1VDE0MzcgMTE4NlQxNDE1IDExODNRMTM5NCAxMTgzIDEzNzcgMTE5OFQxMzYwIDEyMzlRMTM2MCAxMjg3IDE0MTMgMTI5NkwxNDEwIDEzMDBRMTQwNyAxMzAzIDE0MDIgMTMwN1QxMzk0IDEzMTNRMTM3OSAxMzIzIDEzNjEgMTMyM1ExMzQ3IDEzMjMgMTMzNSAxMzExVDEzMDMgMTI1NVQxMjY0IDExMzlUMTIxNyA5MzZUMTE2MSA2MjhRMTEwMiAyOTMgMTAzOCAtNVQ5MzggLTQzN1Q4ODMgLTYyOVE4MDYgLTg2MiA2OTMgLTg2MlE2NTMgLTg2MiA2MjAgLTgzMVQ1ODMgLTc0NlE1ODMgLTcxMSA2MDIgLTY5OFQ2NDAgLTY4NVE2NjEgLTY4NSA2NzggLTcwMFQ2OTUgLTc0MVE2OTUgLTc4OSA2NDIgLTc5OFpNMTE1MCAtNzk4UTExNjggLTgyNCAxMjAxIC04MjRIMTIwM1ExMjMxIC04MjQgMTI1OSAtNzY0VDEzMTEgLTYwMFQxMzU2IC0zOTFUMTM5OCAtMTY0UTE0MDEgLTE0MyAxNDAzIC0xMzNRMTQ3NSAyOTIgMTU1OSA2NTVUMTY4MSAxMTI3UTE2ODcgMTE0NSAxNjkxIDExNTdUMTcwOCAxMjAxVDE3MzUgMTI1N1QxNzY5IDEzMDZUMTgxMyAxMzQ2VDE4NjQgMTM2MFExOTIwIDEzNjAgMTk0OCAxMzI1VDE5ODAgMTI0NVExOTgwIDEyMjAgMTk2OCAxMjA1VDE5NDUgMTE4NlQxOTIzIDExODNRMTkwMiAxMTgzIDE4ODUgMTE5OFQxODY4IDEyMzlRMTg2OCAxMjg3IDE5MjEgMTI5NkwxOTE4IDEzMDBRMTkxNSAxMzAzIDE5MTAgMTMwN1QxOTAyIDEzMTNRMTg4NyAxMzIzIDE4NjkgMTMyM1ExODU1IDEzMjMgMTg0MyAxMzExVDE4MTEgMTI1NVQxNzcyIDExMzlUMTcyNSA5MzZUMTY2OSA2MjhRMTYxMCAyOTMgMTU0NiAtNVQxNDQ2IC00MzdUMTM5MSAtNjI5UTEzMTQgLTg2MiAxMjAxIC04NjJRMTE2MSAtODYyIDExMjggLTgzMVQxMDkxIC03NDZRMTA5MSAtNzExIDExMTAgLTY5OFQxMTQ4IC02ODVRMTE2OSAtNjg1IDExODYgLTcwMFQxMjAzIC03NDFRMTIwMyAtNzg5IDExNTAgLTc5OCcsXG4gICAgMHgyMjJFOiAnMTE0IC03OThRMTMyIC04MjQgMTY1IC04MjRIMTY3UTE5NSAtODI0IDIyMyAtNzY0VDI3NSAtNjAwVDMyMCAtMzkxVDM2MiAtMTY0UTM2NSAtMTQzIDM2NyAtMTMzUTM4MiAtNTIgMzkwIDJRMzE0IDQwIDI3NiA5OVEyMzAgMTY3IDIzMCAyNDlRMjMwIDM2MyAzMDUgNDM2VDQ4NCA1MTlINDk0TDUwMyA1NjNRNTg3IDkzOSA2MzIgMTA4N1Q3MjcgMTI5OFE3NzQgMTM2MCA4MjggMTM2MFE4ODQgMTM2MCA5MTIgMTMyNVQ5NDQgMTI0NVE5NDQgMTIyMCA5MzIgMTIwNVQ5MDkgMTE4NlQ4ODcgMTE4M1E4NjYgMTE4MyA4NDkgMTE5OFQ4MzIgMTIzOVE4MzIgMTI4NyA4ODUgMTI5Nkw4ODIgMTMwMFE4NzkgMTMwMyA4NzQgMTMwN1Q4NjYgMTMxM1E4NTEgMTMyMyA4MzMgMTMyM1E3NjYgMTMyMyA2ODggOTI5UTY2MiA4MTEgNjEwIDQ5NlE3NzAgNDE2IDc3MCAyNDlRNzcwIDE0NyA3MDEgNjhUNTE2IC0yMUg1MDZMNDk3IC02NVE0MDcgLTQ2NCAzNTcgLTYyM1QyMzcgLTgzN1EyMDMgLTg2MiAxNjUgLTg2MlExMjUgLTg2MiA5MiAtODMxVDU1IC03NDZRNTUgLTcxMSA3NCAtNjk4VDExMiAtNjg1UTEzMyAtNjg1IDE1MCAtNzAwVDE2NyAtNzQxUTE2NyAtNzg5IDExNCAtNzk4Wk00ODAgNDc4UTQ2MCA0NzggNDM1IDQ3MFQzODAgNDQ0VDMyNyA0MDFUMjg3IDMzNVQyNzEgMjQ5UTI3MSAxMjQgMzc1IDU2TDM5NyA0M0w0MzEgMjIzTDQ4NSA0NzhINDgwWk01MTkgMjBRNTQ1IDIwIDU3OCAzM1Q2NDcgNzJUNzA2IDE0NFQ3MzAgMjQ5UTczMCAzODMgNjAzIDQ1NVE2MDMgNDU0IDU5NyA0MjFUNTgyIDM0M1Q1NjkgMjc2UTUxNiAyMiA1MTUgMjBINTE5JyxcbiAgICAweDIyQzA6ICcxMDU1IC00MDFRMTA1NSAtNDE5IDEwNDIgLTQzNFQxMDA3IC00NTBROTc3IC00NTAgOTYzIC00MjNROTU5IC00MTcgNzU3IDE2N0w1NTUgNzUwTDM1MyAxNjdRMTUxIC00MTcgMTQ3IC00MjNRMTM0IC00NTAgMTA0IC00NTBRODQgLTQ1MCA3MCAtNDM2VDU1IC00MDFRNTUgLTM5NCA1NiAtMzkwUTU5IC0zODEgMjg0IDI3MFQ1MTIgOTI1UTUyNSA5NTAgNTU1IDk1MFE1ODMgOTUwIDU5NyA5MjZRNTk5IDkyMyA4MjUgMjcwVDEwNTQgLTM5MVExMDU1IC0zOTQgMTA1NSAtNDAxJyxcbiAgICAweDIyQzE6ICc1NSA5MDBRNTUgOTE5IDY5IDkzNFQxMDMgOTUwUTEzNCA5NTAgMTQ3IDkyNFExNTIgOTEzIDM1MyAzMzNMNTU1IC0yNTBMNzU3IDMzM1E5NTggOTEzIDk2MyA5MjRROTc4IDk1MCAxMDA3IDk1MFExMDI4IDk1MCAxMDQxIDkzNVQxMDU1IDkwMVExMDU1IDg5NCAxMDU0IDg5MVExMDUyIDg4NCA4MjYgMjMxVDU5NyAtNDI2UTU4MyAtNDUwIDU1NiAtNDUwUTUyNyAtNDUwIDUxMiAtNDI0UTUxMCAtNDIxIDI4NSAyMjlUNTYgODkwUTU1IDg5MyA1NSA5MDAnLFxuICAgIDB4MjJDMjogJzU3IDUxNlE2OCA2MDIgMTA0IDY3NVQxOTAgNzk3VDMwMSA4ODJUNDIzIDkzM1Q1NDIgOTQ5UTU5NCA5NDkgNjA2IDk0OFE3ODAgOTI4IDkwMSA4MTVUMTA0OCA1NDVRMTA1MyA1MTYgMTA1MyA0NzVUMTA1NSA0OVExMDU1IC00MDYgMTA1NCAtNDEwUTEwNTEgLTQyNyAxMDM3IC00MzhUMTAwNiAtNDUwVDk3NiAtNDM5VDk1OCAtNDExUTk1NyAtNDA3IDk1NyAzN1E5NTcgNDg0IDk1NiA0OTRROTQ1IDY0MyA4MzEgNzQ3VDU1NCA4NTJRNDgxIDg1MiA0MTEgODI2UTMwMSA3ODYgMjMyIDY5NlQxNTQgNDk0UTE1MyA0ODQgMTUzIDM3UTE1MyAtNDA3IDE1MiAtNDExUTE0OCAtNDI4IDEzNSAtNDM5VDEwNCAtNDUwVDczIC00MzlUNTYgLTQxMFE1NSAtNDA2IDU1IDQ5UTU2IDUwNSA1NyA1MTYnLFxuICAgIDB4MjJDMzogJzU2IDkxMVE1OCA5MjYgNzEgOTM4VDEwMyA5NTBRMTIwIDk1MCAxMzQgOTM5VDE1MiA5MTFRMTUzIDkwNyAxNTMgNDYzUTE1MyAxNiAxNTQgNlExNjUgLTE0MyAyNzkgLTI0N1Q1NTYgLTM1MlE3MTYgLTM1MiA4MzAgLTI0OFQ5NTYgNlE5NTcgMTYgOTU3IDQ2M1E5NTcgOTA3IDk1OCA5MTFROTYyIDkyOCA5NzUgOTM5VDEwMDYgOTUwVDEwMzcgOTM5VDEwNTQgOTExUTEwNTUgOTA2IDEwNTUgNDUxUTEwNTQgLTUgMTA1MyAtMTZRMTAyOSAtMjA3IDg4OSAtMzI4VDU1NSAtNDQ5UTM2MyAtNDQ5IDIyNiAtMzMxVDYyIC00NVE1NyAtMTYgNTcgMjVUNTUgNDUxUTU1IDkwNiA1NiA5MTEnLFxuICAgIDB4MjMwODogJzIyNCAtNjQ5VjExNTBINTExVjEwOTlIMjc1Vi02NDlIMjI0JyxcbiAgICAweDIzMDk6ICcxNiAxMDk5VjExNTBIMzAzVi02NDlIMjUyVjEwOTlIMTYnLFxuICAgIDB4MjMwQTogJzIyNCAtNjQ5VjExNTBIMjc1Vi01OThINTExVi02NDlIMjI0JyxcbiAgICAweDIzMEI6ICcyNTIgLTU5OFYxMTUwSDMwM1YtNjQ5SDE2Vi01OThIMjUyJyxcbiAgICAweDIzMjk6ICcxMTIgMjQ0VjI1OEw0NzMgMTEzMFE0ODIgMTE1MCA0OTggMTE1MFE1MTEgMTE1MCA1MTcgMTE0MlQ1MjMgMTEyNVYxMTE4TDM0NCA2ODVRMzA0IDU4NyAyNTcgNDczVDE4NyAzMDVMMTY1IDI1MUwzNDQgLTE4NEw1MjMgLTYxNlYtNjIzUTUyNCAtNjM0IDUxNyAtNjQxVDQ5OSAtNjQ5UTQ4NCAtNjQ5IDQ3MyAtNjI5TDExMiAyNDQnLFxuICAgIDB4MjMyQTogJzExMiAtNjQ5UTEwMyAtNjQ5IDk1IC02NDJUODcgLTYyM1YtNjE2TDI2NiAtMTg0TDQ0NSAyNTFRNDQ1IDI1MiAzNTYgNDY2VDE3OCA4OThUODYgMTEyM1E4NSAxMTM0IDkzIDExNDJUMTEwIDExNTBRMTI2IDExNTAgMTMzIDExMzdRMTM0IDExMzYgMzE3IDY5NUw0OTggMjU4VjI0NEwzMTcgLTE5NFExMzQgLTYzNSAxMzMgLTYzNlExMjYgLTY0OSAxMTIgLTY0OScsXG4gICAgMHgyM0QwOiAnMzEyIDBWNjAySDM1NVYwSDMxMicsXG4gICAgMHgyNzU4OiAnMTQ2IDYxMlExNTEgNjI3IDE2NiA2MjdRMTgyIDYyNyAxODcgNjEyUTE4OCA2MTAgMTg4IDMwNlQxODcgMFExODQgLTE1IDE2NiAtMTVRMTQ5IC0xNSAxNDYgMFYxMFExNDYgMTkgMTQ2IDM1VDE0NiA3M1QxNDYgMTIyVDE0NSAxNzlUMTQ1IDI0MVQxNDUgMzA2VDE0NSAzNzBUMTQ1IDQzM1QxNDUgNDg5VDE0NiA1MzhUMTQ2IDU3NlQxNDYgNjAyVjYxMicsXG4gICAgMHgyN0U4OiAnMTEyIDI0NFYyNThMNDczIDExMzBRNDgyIDExNTAgNDk4IDExNTBRNTExIDExNTAgNTE3IDExNDJUNTIzIDExMjVWMTExOEwzNDQgNjg1UTMwNCA1ODcgMjU3IDQ3M1QxODcgMzA1TDE2NSAyNTFMMzQ0IC0xODRMNTIzIC02MTZWLTYyM1E1MjQgLTYzNCA1MTcgLTY0MVQ0OTkgLTY0OVE0ODQgLTY0OSA0NzMgLTYyOUwxMTIgMjQ0JyxcbiAgICAweDI3RTk6ICcxMTIgLTY0OVExMDMgLTY0OSA5NSAtNjQyVDg3IC02MjNWLTYxNkwyNjYgLTE4NEw0NDUgMjUxUTQ0NSAyNTIgMzU2IDQ2NlQxNzggODk4VDg2IDExMjNRODUgMTEzNCA5MyAxMTQyVDExMCAxMTUwUTEyNiAxMTUwIDEzMyAxMTM3UTEzNCAxMTM2IDMxNyA2OTVMNDk4IDI1OFYyNDRMMzE3IC0xOTRRMTM0IC02MzUgMTMzIC02MzZRMTI2IC02NDkgMTEyIC02NDknLFxuICAgIDB4MkEwMDogJzY2OCA5NDRRNjk3IDk0OSA3NDQgOTQ5UTgwMyA5NDkgODE0IDk0OFE5MTYgOTM3IDEwMDYgOTAyVDExNTQgODI2VDEyNjIgNzMwVDEzMzYgNjM4VDEzODAgNTYzUTE0NTQgNDE1IDE0NTQgMjUwUTE0NTQgMTEzIDE0MDIgLTE0VDEyNTggLTIzOFQxMDM2IC0zOTFUNzU1IC00NDlRNjA4IC00NDkgNDc3IC0zOTJUMjU1IC0yNDBUMTEwIC0xNlQ1NiAyNTBRNTYgMzg3IDEwNSA1MTBUMjM5IDcyM1Q0MzQgODcxVDY2OCA5NDRaTTc1NSAtMzUyUTkyMiAtMzUyIDEwNjEgLTI2OVQxMjc4IC00OFQxMzU2IDI1MFExMzU2IDQ3OSAxMjAyIDY1MlQ4MDkgODUwUTc5OCA4NTEgNzQ3IDg1MVE2MzQgODUxIDUyNyA4MDZUMzM3IDY4MlQyMDQgNDkxVDE1NCAyNTFRMTU0IDEyOCAyMDEgMTdUMzI5IC0xNzZUNTIxIC0zMDRUNzU1IC0zNTJaTTY2NSAyNTBRNjY1IDI5MCA2OTIgMzE1VDc1OCAzNDFRNzkyIDMzOSA4MTggMzE1VDg0NSAyNTBRODQ1IDIxMSA4MTkgMTg2VDc1NSAxNjBRNzE2IDE2MCA2OTEgMTg2VDY2NSAyNTAnLFxuICAgIDB4MkEwMTogJzY2OCA5NDRRNjk3IDk0OSA3NDQgOTQ5UTgwMyA5NDkgODE0IDk0OFE5MTYgOTM3IDEwMDYgOTAyVDExNTQgODI2VDEyNjIgNzMwVDEzMzYgNjM4VDEzODAgNTYzUTE0NTQgNDE1IDE0NTQgMjUwUTE0NTQgMTEzIDE0MDIgLTE0VDEyNTggLTIzOFQxMDM2IC0zOTFUNzU1IC00NDlRNjA4IC00NDkgNDc3IC0zOTJUMjU1IC0yNDBUMTEwIC0xNlQ1NiAyNTBRNTYgMzg3IDEwNSA1MTBUMjM5IDcyM1Q0MzQgODcxVDY2OCA5NDRaTTcwNiAyOTlWODUwSDcwNFE1MTkgODMyIDM4NiA3MjVUMTk4IDQ3NlExODEgNDMzIDE2OSAzNzlUMTU2IDMwMFExNTYgMjk5IDQzMSAyOTlINzA2Wk0xMTE2IDczMlExMDU0IDc3OCA5ODIgODA3VDg3MSA4NDJUODEwIDg0OUw4MDQgODUwVjI5OUgxMDc5UTEzNTQgMjk5IDEzNTQgMzAwUTEzNTQgMzExIDEzNTIgMzI5VDEzMzYgNDAyVDEyOTkgNTA2VDEyMjggNjIwVDExMTYgNzMyWk03MDYgLTM1MFYyMDFINDMxUTE1NiAyMDEgMTU2IDIwMFExNTYgMTg5IDE1OCAxNzFUMTc0IDk4VDIxMSAtNlQyODIgLTEyMFQzOTUgLTIzMlE0MjggLTI1NyA0NjQgLTI3N1Q1MjcgLTMwOFQ1ODcgLTMyOFQ2MzYgLTMzOVQ2NzggLTM0NlQ3MDYgLTM1MFpNMTM1NCAyMDBRMTM1NCAyMDEgMTA3OSAyMDFIODA0Vi0zNTBRODA4IC0zNDkgODM4IC0zNDVUODg3IC0zMzhUOTQwIC0zMjNUMTAxMCAtMjk1UTEwMzggLTI4MiAxMDY3IC0yNjVUMTE0NCAtMjA4VDEyMjkgLTEyMVQxMzAxIDBUMTM0OSAxNThRMTM1NCAxODggMTM1NCAyMDAnLFxuICAgIDB4MkEwMjogJzY2OCA5NDRRNjk3IDk0OSA3NDQgOTQ5UTgwMyA5NDkgODE0IDk0OFE5MTYgOTM3IDEwMDYgOTAyVDExNTQgODI2VDEyNjIgNzMwVDEzMzYgNjM4VDEzODAgNTYzUTE0NTQgNDE1IDE0NTQgMjUwUTE0NTQgMTEzIDE0MDIgLTE0VDEyNTggLTIzOFQxMDM2IC0zOTFUNzU1IC00NDlRNjA4IC00NDkgNDc3IC0zOTJUMjU1IC0yNDBUMTEwIC0xNlQ1NiAyNTBRNTYgMzg3IDEwNSA1MTBUMjM5IDcyM1Q0MzQgODcxVDY2OCA5NDRaTTExNDMgNzA5UTExMzggNzE0IDExMjkgNzIyVDEwODYgNzUyVDEwMTcgNzkxVDkyNSA4MjZUODA5IDg1MFE3OTggODUxIDc0NyA4NTFINzI4UTY1OSA4NTEgNTcxIDgyM1Q0MDggNzQxUTM2NyA3MTMgMzY3IDcwOUw3NTUgMzIwTDExNDMgNzA5Wk0yOTcgNjM5UTI5NiA2MzkgMjgyIDYyMlQyNDcgNTcwVDIwNSA0OTFUMTY5IDM4MlQxNTQgMjUwVDE2OCAxMThUMjA0IDlUMjQ3IC03MFQyODIgLTEyMkwyOTcgLTEzOUw2ODUgMjUwTDI5NyA2MzlaTTEyMTMgLTEzOVExMjE0IC0xMzkgMTIyOCAtMTIyVDEyNjMgLTcwVDEzMDUgOVQxMzQxIDExOFQxMzU2IDI1MFQxMzQyIDM4MlQxMzA2IDQ5MVQxMjYzIDU3MFQxMjI4IDYyMkwxMjEzIDYzOUw4MjUgMjUwTDEyMTMgLTEzOVpNMzY3IC0yMDlRMzczIC0yMTUgMzg0IC0yMjRUNDM0IC0yNThUNTE0IC0zMDJUNjIyIC0zMzZUNzU1IC0zNTJUODg3IC0zMzhUOTk2IC0zMDJUMTA3NSAtMjU5VDExMjYgLTIyNEwxMTQzIC0yMDlMNzU1IDE4MFE3NTQgMTgwIDU2MSAtMTRUMzY3IC0yMDknLFxuICAgIDB4MkEwNDogJzU2IDkxMVE1OCA5MjYgNzEgOTM4VDEwMyA5NTBRMTIwIDk1MCAxMzQgOTM5VDE1MiA5MTFRMTUzIDkwNyAxNTMgNDYzUTE1MyAxNiAxNTQgNlExNjUgLTE0MyAyNzkgLTI0N1Q1NTYgLTM1MlE3MTYgLTM1MiA4MzAgLTI0OFQ5NTYgNlE5NTcgMTYgOTU3IDQ2M1E5NTcgOTA3IDk1OCA5MTFROTYyIDkyOCA5NzUgOTM5VDEwMDYgOTUwVDEwMzcgOTM5VDEwNTQgOTExUTEwNTUgOTA2IDEwNTUgNDUxUTEwNTQgLTUgMTA1MyAtMTZRMTAyOSAtMjA3IDg4OSAtMzI4VDU1NSAtNDQ5UTM2MyAtNDQ5IDIyNiAtMzMxVDYyIC00NVE1NyAtMTYgNTcgMjVUNTUgNDUxUTU1IDkwNiA1NiA5MTFaTTUwNyA1NTRRNTExIDU3MCA1MjMgNTgxVDU1NCA1OTNRNTcxIDU5MyA1ODUgNTgyVDYwMyA1NTRRNjA0IDU1MSA2MDQgNDQzVjMzOEg3MDlRODE3IDMzOCA4MjAgMzM3UTgzNSAzMzQgODQ3IDMyMVQ4NTkgMjkwUTg1OSAyNTQgODE5IDI0MVE4MTYgMjQwIDcwOSAyNDBINjA0VjEzNFE2MDQgNDggNjA0IDM0VDU5OCAxMVE1ODMgLTE1IDU1NSAtMTVRNTI2IC0xNSA1MTIgMTFRNTA3IDIwIDUwNyAzNFQ1MDYgMTM0VjI0MEg0MDFIMzQ0UTI5MiAyNDAgMjc4IDI0NlEyNTEgMjU5IDI1MSAyOTBRMjUxIDMwOSAyNjQgMzIxVDI5MCAzMzdRMjkzIDMzOCA0MDEgMzM4SDUwNlY0NDNRNTA2IDU1MSA1MDcgNTU0JyxcbiAgICAweDJBMDY6ICc1NiA5MTFRNjAgOTI3IDcyIDkzOFQxMDMgOTUwUTEyMCA5NTAgMTM0IDkzOVQxNTIgOTExUTE1MyA5MDcgMTUzIDI3N1YtMzUySDk1N1YyNzdROTU3IDkwNyA5NTggOTExUTk2MiA5MjggOTc1IDkzOVQxMDA2IDk1MFQxMDM2IDkzOVQxMDU0IDkxMVY4OTFRMTA1NCA4NzEgMTA1NCA4MzZUMTA1NCA3NTRUMTA1NCA2NDdUMTA1NSA1MjVUMTA1NSAzOTBUMTA1NSAyNTBUMTA1NSAxMTFUMTA1NSAtMjRUMTA1NSAtMTQ3VDEwNTQgLTI1M1QxMDU0IC0zMzVUMTA1NCAtMzkxVi00MTFRMTA0NyAtNDQyIDEwMTYgLTQ0OVExMDExIC00NTAgNTUyIC00NTBMOTQgLTQ0OVE2MyAtNDM5IDU2IC00MTFWLTM5MVE1NiAtMzcxIDU2IC0zMzZUNTYgLTI1NFQ1NiAtMTQ3VDU1IC0yNVQ1NSAxMTBUNTUgMjUwVDU1IDM4OVQ1NSA1MjRUNTUgNjQ3VDU2IDc1M1Q1NiA4MzVUNTYgODkxVjkxMScsXG4gICAgMHgzMDA4OiAnMTEyIDI0NFYyNThMNDczIDExMzBRNDgyIDExNTAgNDk4IDExNTBRNTExIDExNTAgNTE3IDExNDJUNTIzIDExMjVWMTExOEwzNDQgNjg1UTMwNCA1ODcgMjU3IDQ3M1QxODcgMzA1TDE2NSAyNTFMMzQ0IC0xODRMNTIzIC02MTZWLTYyM1E1MjQgLTYzNCA1MTcgLTY0MVQ0OTkgLTY0OVE0ODQgLTY0OSA0NzMgLTYyOUwxMTIgMjQ0JyxcbiAgICAweDMwMDk6ICcxMTIgLTY0OVExMDMgLTY0OSA5NSAtNjQyVDg3IC02MjNWLTYxNkwyNjYgLTE4NEw0NDUgMjUxUTQ0NSAyNTIgMzU2IDQ2NlQxNzggODk4VDg2IDExMjNRODUgMTEzNCA5MyAxMTQyVDExMCAxMTUwUTEyNiAxMTUwIDEzMyAxMTM3UTEzNCAxMTM2IDMxNyA2OTVMNDk4IDI1OFYyNDRMMzE3IC0xOTRRMTM0IC02MzUgMTMzIC02MzZRMTI2IC02NDkgMTEyIC02NDknLFxufSx7XG4gICAgMHgyQTBDOiBcIlxcdTIyMkNcXHUyMjJDXCIsXG59KTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IG1vbm9zcGFjZTogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHgyMDogWzAsIDAsIC41MjVdLFxuICAgIDB4MjE6IFsuNjIyLCAwLCAuNTI1XSxcbiAgICAweDIyOiBbLjYyMywgLTAuMzMzLCAuNTI1XSxcbiAgICAweDIzOiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgyNDogWy42OTQsIC4wODIsIC41MjVdLFxuICAgIDB4MjU6IFsuNjk0LCAuMDgzLCAuNTI1XSxcbiAgICAweDI2OiBbLjYyMiwgLjAxMSwgLjUyNV0sXG4gICAgMHgyNzogWy42MTEsIC0wLjI4NywgLjUyNV0sXG4gICAgMHgyODogWy42OTQsIC4wODIsIC41MjVdLFxuICAgIDB4Mjk6IFsuNjk0LCAuMDgyLCAuNTI1XSxcbiAgICAweDJBOiBbLjUyLCAtMC4wOSwgLjUyNV0sXG4gICAgMHgyQjogWy41MzEsIC0wLjA4MSwgLjUyNV0sXG4gICAgMHgyQzogWy4xNCwgLjEzOSwgLjUyNV0sXG4gICAgMHgyRDogWy4zNDEsIC0wLjI3MSwgLjUyNV0sXG4gICAgMHgyRTogWy4xNCwgMCwgLjUyNV0sXG4gICAgMHgyRjogWy42OTQsIC4wODMsIC41MjVdLFxuICAgIDB4M0E6IFsuNDMxLCAwLCAuNTI1XSxcbiAgICAweDNCOiBbLjQzMSwgLjEzOSwgLjUyNV0sXG4gICAgMHgzQzogWy41NTcsIC0wLjA1NSwgLjUyNV0sXG4gICAgMHgzRDogWy40MTcsIC0wLjE5NSwgLjUyNV0sXG4gICAgMHgzRTogWy41NTcsIC0wLjA1NSwgLjUyNV0sXG4gICAgMHgzRjogWy42MTcsIDAsIC41MjVdLFxuICAgIDB4NDA6IFsuNjE3LCAuMDA2LCAuNTI1XSxcbiAgICAweDVCOiBbLjY5NCwgLjA4MiwgLjUyNV0sXG4gICAgMHg1QzogWy42OTQsIC4wODMsIC41MjVdLFxuICAgIDB4NUQ6IFsuNjk0LCAuMDgyLCAuNTI1XSxcbiAgICAweDVFOiBbLjYxMSwgLTAuNDYsIC41MjVdLFxuICAgIDB4NUY6IFstMC4wMjUsIC4wOTUsIC41MjVdLFxuICAgIDB4NjA6IFsuNjgxLCAtMC4zNTcsIC41MjVdLFxuICAgIDB4N0I6IFsuNjk0LCAuMDgzLCAuNTI1XSxcbiAgICAweDdDOiBbLjY5NCwgLjA4MiwgLjUyNV0sXG4gICAgMHg3RDogWy42OTQsIC4wODMsIC41MjVdLFxuICAgIDB4N0U6IFsuNjExLCAtMC40NjYsIC41MjVdLFxuICAgIDB4N0Y6IFsuNjEyLCAtMC41MTksIC41MjVdLFxuICAgIDB4QTA6IFswLCAwLCAuNTI1XSxcbiAgICAweDEzMTogWy40MzEsIDAsIC41MjVdLFxuICAgIDB4MjM3OiBbLjQzMSwgLjIyOCwgLjUyNV0sXG4gICAgMHgyQjk6IFsuNjIzLCAtMC4zMzQsIC41MjVdLFxuICAgIDB4MzAwOiBbLjYxMSwgLTAuNDg1LCAwXSxcbiAgICAweDMwMTogWy42MTEsIC0wLjQ4NSwgMF0sXG4gICAgMHgzMDI6IFsuNjExLCAtMC40NiwgMF0sXG4gICAgMHgzMDM6IFsuNjExLCAtMC40NjYsIDBdLFxuICAgIDB4MzA0OiBbLjU3NywgLTAuNSwgMF0sXG4gICAgMHgzMDY6IFsuNjExLCAtMC41MDQsIDBdLFxuICAgIDB4MzA4OiBbLjYxMiwgLTAuNTE5LCAwXSxcbiAgICAweDMwQTogWy42MTksIC0wLjQ5OSwgMF0sXG4gICAgMHgzMEM6IFsuNTc3LCAtMC40NDksIDBdLFxuICAgIDB4MzkxOiBbLjYyMywgMCwgLjUyNV0sXG4gICAgMHgzOTI6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDM5MzogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4Mzk0OiBbLjYyMywgMCwgLjUyNV0sXG4gICAgMHgzOTU6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDM5NjogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4Mzk3OiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgzOTg6IFsuNjIxLCAuMDEsIC41MjVdLFxuICAgIDB4Mzk5OiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgzOUE6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDM5QjogWy42MjMsIDAsIC41MjVdLFxuICAgIDB4MzlDOiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgzOUQ6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDM5RTogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4MzlGOiBbLjYyMSwgLjAxLCAuNTI1XSxcbiAgICAweDNBMDogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4M0ExOiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgzQTM6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDNBNDogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4M0E1OiBbLjYyMiwgMCwgLjUyNV0sXG4gICAgMHgzQTY6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDNBNzogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4M0E4OiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgzQTk6IFsuNjIyLCAwLCAuNTI1XSxcbiAgICAweDIwMTc6IFstMC4wMjUsIC4wOTUsIC41MjVdLFxuICAgIDB4MjAzMjogWy42MjMsIC0wLjMzNCwgLjUyNV0sXG4gICAgMHgyMDMzOiBbLjYyMywgMCwgMS4wNV0sXG4gICAgMHgyMDM0OiBbLjYyMywgMCwgMS41NzVdLFxuICAgIDB4MjA0NDogWy42OTQsIC4wODMsIC41MjVdLFxuICAgIDB4MjA1NzogWy42MjMsIDAsIDIuMV0sXG4gICAgMHgyMjA2OiBbLjYyMywgMCwgLjUyNV0sXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7U1ZHQ2hhck1hcCwgQWRkUGF0aHN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7bW9ub3NwYWNlIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvbW9ub3NwYWNlLmpzJztcblxuZXhwb3J0IGNvbnN0IG1vbm9zcGFjZTogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDIwOiAnJyxcbiAgICAweDIxOiAnMjA2IDU2NVEyMDYgNTkwIDIyMiA2MDZUMjY1IDYyMlEyODcgNjIxIDMwMyA2MDZUMzE5IDU2NVQzMTQgMzkyTDMwOCAyMTZRMjk5IDE5NCAyNzMgMTk0SDI2MlEyNDcgMTk0IDI0MSAxOTVUMjI4IDIwMFQyMTcgMjE2TDIxMSAzOTJRMjA2IDUzOSAyMDYgNTY1Wk0yMDYgNTZRMjA2IDgzIDIyMyA5OVQyNjUgMTE1UTI4OCAxMTMgMzA0IDk5VDMyMCA1OFEzMjAgMzMgMzAzIDE3VDI2MiAwUTIzNyAwIDIyMiAxN1QyMDYgNTYnLFxuICAgIDB4MjI6ICcxMjIgNTc1UTEyMiA1OTMgMTM3IDYwOFQxNzMgNjIzUTE5NiA2MjMgMjEwIDYwOFQyMjUgNTc1UTIyNSA1NjIgMjE4IDQ2NFEyMTIgMzczIDIxMSAzNjFUMjAxIDM0MVExOTMgMzMzIDE3MyAzMzNRMTU0IDMzMyAxNDYgMzQxUTEzOCAzNDggMTM3IDM2MFQxMjkgNDY0UTEyMiA1NjEgMTIyIDU3NVpNMjk5IDU3NVEyOTkgNTkzIDMxNCA2MDhUMzUwIDYyM1EzNzMgNjIzIDM4NyA2MDhUNDAyIDU3NVE0MDIgNTYyIDM5NSA0NjRRMzg5IDM3MyAzODggMzYxVDM3OCAzNDFRMzcwIDMzMyAzNTAgMzMzUTMzMSAzMzMgMzIzIDM0MVEzMTUgMzQ4IDMxNCAzNjBUMzA2IDQ2NFEyOTkgNTYxIDI5OSA1NzUnLFxuICAgIDB4MjM6ICc5MyAxNjNRNzQgMTYzIDY1IDE2NFQ0NiAxNzNUMzYgMTk4UTM2IDIxMCA0MCAyMTVUNjEgMjMzSDEzMVYyMzZRMTMyIDIzOSAxNDAgMzA3VDE0OSAzNzdRMTQ5IDM3OSAxMDUgMzc5TDYxIDM4MFEzNiAzOTIgMzYgNDE0UTM2IDQ1MCA4NiA0NTBROTEgNDUwIDk5IDQ1MFQxMTIgNDQ5SDE1OVExNjMgNDgwIDE2NyA1MTdRMTY4IDUyNCAxNzAgNTQ1VDE3NCA1NzNUMTgwIDU5MVQxOTEgNjA3VDIxMCA2MTFRMjIzIDYxMSAyMzIgNjA0VDI0MyA1ODhMMjQ1IDU4MFEyNDUgNTY1IDIzOCA1MTFUMjMwIDQ1MVEyMzAgNDQ5IDI4MiA0NDlIMzMzUTMzNyA0ODAgMzQxIDUxN1EzNDIgNTI0IDM0MyA1MzdUMzQ1IDU1NlQzNDggNTczVDM1MiA1ODlUMzU5IDYwMFQzNzAgNjA4VDM4NCA2MTFRMzk1IDYxMSA0MDYgNjAyVDQxOSA1ODBRNDE5IDU2NSA0MTIgNTExVDQwNCA0NTFRNDA0IDQ0OSA0MzEgNDQ5SDQ0MlE0NzcgNDQ5IDQ4NSA0MjlRNDg5IDQyMSA0ODkgNDE0UTQ4OSAzOTIgNDYzIDM4MEw0MjggMzc5SDM5NFYzNzZRMzkzIDM3MyAzODUgMzA1VDM3NiAyMzVRMzc2IDIzMyA0MTkgMjMzSDQ2M0w0NjggMjMwUTQ3MiAyMjcgNDczIDIyN1Q0NzcgMjIzVDQ4MiAyMThUNDg2IDIxM1Q0ODggMjA2VDQ4OSAxOThRNDg5IDE2MiA0MzYgMTYyUTQzMCAxNjIgNDIyIDE2MlQ0MTIgMTYzSDM2NlYxNjFRMzY0IDE1OSAzNTcgOTJRMzU2IDg1IDM1NSA3M1QzNTMgNTRUMzUwIDM3VDM0NiAyMlQzMzkgMTFUMzI4IDNUMzE0IDBRMzAzIDAgMjkyIDlUMjc5IDMxUTI3OSAzNyAyODcgOTZUMjk1IDE2MlEyOTUgMTYzIDI0NCAxNjNIMTkyVjE2MVExOTAgMTU5IDE4MyA5MlExODIgODUgMTgxIDczVDE3OSA1NFQxNzYgMzdUMTcyIDIyVDE2NSAxMVQxNTQgM1QxNDAgMFExMjkgMCAxMTggOVQxMDUgMzFRMTA1IDM3IDExMyA5NlQxMjEgMTYyUTEyMSAxNjMgOTMgMTYzWk0zMjMgMzc3UTMyMyAzNzkgMjcyIDM3OUgyMjBWMzc2UTIxOSAzNzMgMjExIDMwNVQyMDIgMjM1UTIwMiAyMzMgMjUzIDIzM0gzMDVWMjM2UTMwNiAyMzkgMzE0IDMwN1QzMjMgMzc3JyxcbiAgICAweDI0OiAnNDE1IDM5N1EzOTIgMzk3IDM3NyA0MTFUMzYyIDQ0OFEzNjIgNDY0IDM3NiA0ODVRMzY5IDQ5OCAzNjIgNTA2VDM0NiA1MjBUMzMyIDUyOFQzMTUgNTMzVDMwMCA1MzhWNDQ1TDMwMSAzNTNMMzExIDM1MFEzODIgMzM0IDQyNCAyODRUNDY2IDE3NFE0NjYgMTE1IDQyNSA2NVQzMDMgLTJMMzAwIC0zVi0zMFEzMDAgLTY0IDI5MSAtNzRRMjgzIC04MiAyNjIgLTgySDI1NVEyMzQgLTgyIDIyNSAtNjBMMjI0IC0zMlYtNEwyMTMgLTJRMTUyIDYgMTA2IDUxVDU5IDE3MFYxODBRNTkgMTk3IDc0IDIxM1E4OSAyMjcgMTEwIDIyN1QxNDYgMjEzVDE2MiAxNzRRMTYyIDE1NiAxNDcgMTM3UTE1MyAxMjMgMTYxIDExMlQxNzYgOTVUMTkxIDg1VDIwNSA3OVQyMTYgNzZUMjI0IDc0VjI4M0wyMTMgMjg1UTE0NyAyOTggMTAzIDM0M1Q1OCA0NDlRNTggNTE2IDEwOCA1NjBUMjI0IDYxNFY2NDNWNjU0UTIyNCA2NjYgMjI2IDY3M1QyMzcgNjg3VDI2NCA2OTRRMjg5IDY5MyAyOTQgNjgzVDMwMCA2NDJWNjE1SDMwM1EzNTUgNjA3IDM5MCA1ODdUNDQwIDU0MFQ0NjAgNDkzVDQ2NiA0NTNRNDY2IDQyNSA0NTEgNDExVDQxNSAzOTdaTTEzNyA0NTJRMTM3IDQyNSAxNTggNDA0VDE5OCAzNzZUMjIzIDM2OVEyMjQgMzY5IDIyNCA0NTNUMjIzIDUzN1ExOTggNTMyIDE2OCA1MDlUMTM3IDQ1MlpNMzAxIDc1UTMwNyA3NSAzMjUgODNUMzY1IDExNlQzODcgMTcxUTM4NyAyMzggMzAwIDI2N1YxNzFRMzAwIDc1IDMwMSA3NScsXG4gICAgMHgyNTogJzM1IDU2MFEzNSA2MDcgNTQgNjQ1VDExMCA2OTNRMTExIDY5MyAxMTYgNjkzVDEyNSA2OTRRMTY1IDY5MiAxODcgNjUxVDIxMCA1NjBRMjEwIDUwNiAxODYgNDY3VDEyMyA0MjhRODQgNDI4IDYwIDQ2NlQzNSA1NjBaTTEzOSA1NjBRMTM5IDU3NCAxMzYgNTg3VDEzMCA2MDhUMTI0IDYxNVExMjIgNjE3IDEyMCA2MTRRMTA2IDU5NSAxMDYgNTYxUTEwNiA1MTYgMTIxIDUwNlExMjMgNTA0IDEyNSA1MDdRMTM5IDUyNiAxMzkgNTYwWk0xMjMgLTgzUTEwNyAtODMgOTggLTczVDg4IC00OFE4OCAtNDMgODkgLTQxUTkwIC0zNyAyMjkgMzE2VDM3MCA2NzVRMzgxIDY5NCA0MDAgNjk0UTQxNiA2OTQgNDI2IDY4NFQ0MzYgNjU5UTQzNiA2NTQgNDM1IDY1MlE0MzQgNjQ3IDI5NSAyOTRUMTUzIC02NVExNDQgLTgzIDEyMyAtODNaTTMxNCA1MFEzMTQgMTA0IDMzOCAxNDNUNDAwIDE4M1E0MzkgMTgzIDQ2NCAxNDRUNDg5IDUwVDQ2NSAtNDNUNDAyIC04MlEzNTggLTgyIDMzNiAtNDFUMzE0IDUwWk00MTcgNTBRNDE3IDcxIDQxMyA4NVQ0MDUgMTAyTDQwMSAxMDZRMzg2IDk1IDM4NiA1MFEzODYgMjkgMzkwIDE1VDM5OCAtMkw0MDIgLTZRNDE3IDUgNDE3IDUwJyxcbiAgICAweDI2OiAnOTYgNDYyUTk2IDU0NiAxMzIgNTg0VDIxMSA2MjJRMjU1IDYyMiAyODQgNTgzVDMxNCA0NzRRMzE0IDM5NSAyMjQgMzA1TDIwOCAyODhRMjEzIDI3NSAyMjYgMjUxTDI2NSAxODVMMjY5IDE3OVEyNzMgMTg0IDI5OSAyNDZMMzMyIDMzM0wzNDIgMzYzUTM0MiAzNjQgMzQxIDM2NVEzMzQgMzY1IDMzNCAzOTNRMzM0IDQwNiAzMzQgNDEwVDM0MCA0MjBUMzU2IDQzMUg0MTJINDQwUTQ2NyA0MzEgNDc4IDQyNFQ0OTAgMzkzUTQ5MCAzNzYgNDg0IDM2N1Q0NzAgMzU3VDQ0OCAzNTVINDQxSDQxNUwzOTkgMzEyUTM0OSAxNzYgMzIyIDEyN0wzMTUgMTE1TDMyMyAxMDZRMzYwIDY1IDM5MyA2NVE0MDUgNjUgNDEwIDgwVDQxNiAxMDlRNDE2IDE0MCA0NTIgMTQwUTQ4NyAxNDAgNDg3IDEwNVE0ODcgNTYgNDYwIDIzVDM5MSAtMTFMMjg2IDQxTDI3MyA1M0wyNjIgNDJRMjEyIC0xMSAxNTEgLTExUTk3IC0xMSA2MyAzM1QyOCAxNDNRMjggMTYxIDMwIDE3NlQzOCAyMDVUNDcgMjI3VDYwIDI0N1Q3MiAyNjFUODQgMjc0VDk0IDI4M0wxMjIgMzExTDExOSAzMjNROTYgMzkyIDk2IDQ2MlpNMjQzIDQ3NFEyNDMgNTMzIDIxOCA1NDVMMjE1IDU0NlEyMTIgNTQ2IDIxMCA1NDZRMTgyIDU0NiAxNjkgNTAxUTE2NyA0OTIgMTY3IDQ2NlExNjcgNDE5IDE3OSAzNjhMMTg4IDM3N1EyMzQgNDI1IDI0MiA0NjFRMjQzIDQ2NSAyNDMgNDc0Wk0yMTcgMTI5UTE4NSAxNzQgMTU0IDIzNVExMjEgMjE0IDExNSAxNzZRMTEzIDE2OCAxMTMgMTQzUTExMyA4MyAxMzkgNjdRMTQxIDY2IDE1MiA2NlExOTEgNjYgMjI4IDExMkwyMTcgMTI5JyxcbiAgICAweDI3OiAnMjA1IDU1NFEyMDUgNTc3IDIyMSA1OTRUMjYzIDYxMVEzMDIgNjExIDMyNSA1NzdUMzQ5IDQ5MFEzNDkgNDA5IDI5OCAzNDdRMjg1IDMzMCAyNTggMzA5VDIxNCAyODdRMjAzIDI4OSAxODkgMzAyVDE3NSAzMjdRMTc1IDM0MSAxODUgMzQ5VDIxMyAzNjlUMjQ1IDQwMlEyNjkgNDM3IDI3MyA0ODNWNDk3UTI2NCA0OTYgMjYzIDQ5NlEyNDAgNDk2IDIyMyA1MTNUMjA1IDU1NCcsXG4gICAgMHgyODogJzQzNyAtNTNRNDM3IC04MiAzOTkgLTgySDM5NFEzNzcgLTgyIDM0MiAtNTVRMjU5IDcgMjEzIDEwMlQxNjYgMzA2UTE2NiA0MTIgMjExIDUwN1QzNDIgNjY3UTM3NyA2OTQgMzkzIDY5NEgzOTlRNDM3IDY5NCA0MzcgNjY1UTQzNyA2NTQgNDI2IDY0M1QzOTcgNjIwVDM1NiA1ODRUMzExIDUyNVEzMDEgNTExIDI5MCA0ODhUMjY0IDQxMlQyNTAgMzA2UTI1MCAxOTEgMzAwIDEwNVQ0MjIgLTI3UTQzNyAtMzcgNDM3IC01MycsXG4gICAgMHgyOTogJzg3IDY2NFE4NyA2OTQgMTI2IDY5NFExMzggNjk0IDE0NyA2OTBUMTgzIDY2N1EyNjYgNjA1IDMxMiA1MTBUMzU4IDMwNlEzNTggMTkzIDMwNyA5M1QxNjEgLTcwUTE0MiAtODIgMTI2IC04MlExMDUgLTgyIDk2IC03M1Q4NyAtNTNRODcgLTQ3IDg4IC00NFE5MiAtMzYgMTE2IC0xOVQxNzMgMzRUMjMwIDExOVEyNzMgMjA2IDI3MyAzMDZRMjczIDQwOCAyMzEgNDk0VDEwOSA2MzVRODcgNjQ5IDg3IDY2NCcsXG4gICAgMHgyQTogJzIyMiA0ODdRMjI0IDUwMSAyMzUgNTEwVDI2MiA1MjBRMjc5IDUyMCAyODkgNTEwVDMwMiA0ODdRMzAyIDQ1OCAzMDEgNDI5UTMwMSA0MjEgMzAxIDQxM1QzMDEgMzk4VDMwMCAzODZUMzAwIDM3N1YzNzRRMzAwIDM3MyAzMDEgMzczUTMwNCAzNzMgMzUzIDQwM1Q0MTYgNDM0UTQzMiA0MzQgNDQ0IDQyM1Q0NTYgMzkzUTQ1NiAzODkgNDU2IDM4NlQ0NTQgMzc5VDQ1MSAzNzNUNDQ4IDM2OFQ0NDIgMzYzVDQzNiAzNThUNDI3IDM1M1Q0MTcgMzQ4VDQwNSAzNDJUMzkxIDMzNFEzNDUgMzA5IDMzOSAzMDVMMzg4IDI3OVE0MDAgMjczIDQxMiAyNjZUNDMyIDI1NVQ0NDEgMjUwUTQ1NiAyMzggNDU2IDIxOFE0NTYgMjAwIDQ0NSAxODlUNDE3IDE3N1E0MDMgMTc3IDM1NCAyMDdUMzAxIDIzOFEzMDAgMjM4IDMwMCAyMzdWMjM0UTMwMCAyMzEgMzAwIDIyNlQzMDAgMjE0VDMwMSAxOTlUMzAxIDE4MlEzMDIgMTUzIDMwMiAxMjRRMzAwIDEwOSAyODkgMTAwVDI2MiA5MFQyMzUgMTAwVDIyMiAxMjRRMjIyIDE1MyAyMjMgMTgyUTIyMyAxOTAgMjIzIDE5OFQyMjMgMjEzVDIyNCAyMjVUMjI0IDIzNFYyMzdRMjI0IDIzOCAyMjMgMjM4UTIyMCAyMzggMTcxIDIwOFQxMDggMTc3UTkyIDE3NyA4MCAxODhUNjggMjE4UTY4IDIzNyA3OSAyNDZUMTM0IDI3N1ExODAgMzAzIDE4NSAzMDZMMTM2IDMzMlExMjQgMzM4IDExMiAzNDVUOTIgMzU2VDgzIDM2MVE2OCAzNzMgNjggMzkzUTY4IDQxMSA3OSA0MjJUMTA3IDQzNFExMjEgNDM0IDE3MCA0MDRUMjIzIDM3M1EyMjQgMzczIDIyNCAzNzRWMzc3UTIyNCAzODAgMjI0IDM4NVQyMjQgMzk3VDIyMyA0MTJUMjIzIDQyOVEyMjIgNDU4IDIyMiA0ODcnLFxuICAgIDB4MkI6ICcxNDcgMjcxUTEzOCAyNzEgMTIyIDI3MVQ5OCAyNzBRNjggMjcwIDUzIDI3N1QzOCAzMDZUNTMgMzM1VDk4IDM0MlExMDUgMzQyIDEyMSAzNDJUMTQ3IDM0MUgyMjdWNDIzTDIyOCA1MDVRMjQxIDUzMSAyNjIgNTMxUTI2OCA1MzEgMjczIDUzMFQyODIgNTI1VDI4NyA1MTlUMjkzIDUxMUwyOTcgNTA1VjM0MUgzNzdINDMwUTQ1NyAzNDEgNDY3IDMzOFQ0ODMgMzIxUTQ4NyAzMTMgNDg3IDMwNlE0ODcgMjk1IDQ4MCAyODZUNDYzIDI3M1E0NTcgMjcxIDM3NyAyNzFIMjk3VjEwN1EyODEgODEgMjYyIDgxUTI1MCA4MSAyNDIgODdUMjMwIDEwMEwyMjggMTA3TDIyNyAxODlWMjcxSDE0NycsXG4gICAgMHgyQzogJzE5MyAzN1QxOTMgNzBUMjEzIDEyMVQyNjAgMTQwUTMwMiAxNDAgMzI3IDEwOFQzNTMgMzZRMzUzIC03IDMzNiAtNDNUMjk0IC05OFQyNDkgLTEyOFQyMTUgLTEzOVEyMDQgLTEzOSAxODkgLTEyNVExNzcgLTExMSAxNzQgLTEwMVExNzIgLTg0IDE4MyAtNzdUMjE3IC02MVQyNTMgLTMzUTI2MSAtMjQgMjcyIDFMMjY1IDBRMjM0IDAgMjE0IDE4JyxcbiAgICAweDJEOiAnNTcgMzA2UTU3IDMzMyA4NiAzNDFINDM4UTQ2OCAzMzIgNDY4IDMwNlQ0MzggMjcxSDg2UTU3IDI4MCA1NyAzMDYnLFxuICAgIDB4MkU6ICcxOTMgNzBRMTkzIDEwNSAyMTQgMTIyVDI1OCAxNDBRMjkxIDE0MCAzMTEgMTIwVDMzMiA3MFEzMzIgNDQgMzE0IDIzVDI2MiAxUTIzNCAxIDIxNCAxOFQxOTMgNzAnLFxuICAgIDB4MkY6ICc5NCAtODNRNzggLTgzIDY4IC03M1Q1OCAtNDhRNTggLTQ0IDYwIC0zNlE2MiAtMzEgMjI3IDMxNFQzOTkgNjczUTQxMCA2OTQgNDMxIDY5NFE0NDUgNjk0IDQ1NSA2ODRUNDY2IDY1OVE0NjYgNjU2IDQ2NCA2NDhRNDYzIDY0MyAyOTggMjk4VDEyNSAtNjJRMTE0IC04MyA5NCAtODMnLFxuICAgIDB4M0E6ICcxOTMgMzYxUTE5MyAzOTYgMjE0IDQxM1QyNTggNDMxUTI5MSA0MzEgMzExIDQxMVQzMzIgMzYxUTMzMiAzMzUgMzE0IDMxNFQyNjIgMjkyUTIzNCAyOTIgMjE0IDMwOVQxOTMgMzYxWk0xOTMgNzBRMTkzIDEwNSAyMTQgMTIyVDI1OCAxNDBRMjkxIDE0MCAzMTEgMTIwVDMzMiA3MFEzMzIgNDQgMzE0IDIzVDI2MiAxUTIzNCAxIDIxNCAxOFQxOTMgNzAnLFxuICAgIDB4M0I6ICcxOTMgMzYxUTE5MyAzOTYgMjE0IDQxM1QyNTggNDMxUTI5MSA0MzEgMzExIDQxMVQzMzIgMzYxUTMzMiAzMzUgMzE0IDMxNFQyNjIgMjkyUTIzNCAyOTIgMjE0IDMwOVQxOTMgMzYxWk0xOTMgNzBRMTkzIDEwNSAyMTQgMTIyVDI1OSAxNDBRMzAxIDE0MCAzMTkgMTA4VDMzNyAzM1EzMzcgLTM4IDI5MSAtODhUMjE0IC0xMzlRMjAzIC0xMzkgMTg5IC0xMjZUMTc1IC05N1ExNzUgLTg1IDE4MiAtNzhUMjAwIC02NlQyMjUgLTUwVDI0OSAtMTdRMjU2IC0zIDI1NiAwUTI1MiAxIDI0OCAxUTI0MiAyIDIzNSA1VDIxOCAxNVQyMDAgMzZUMTkzIDcwJyxcbiAgICAweDNDOiAnNDY4IDkwUTQ2OCA3NiA0NTggNjZUNDMzIDU1UTQyNiA1NSA0MTkgNThRNDEzIDYxIDI0MyAxNjhUNjggMjgwUTU3IDI5MSA1NyAzMDZUNjggMzMyUTcyIDMzNSAyNDEgNDQyVDQxNiA1NTNRNDI0IDU1NyA0MzIgNTU3UTQ0NyA1NTcgNDU3IDU0N1Q0NjggNTIyVDQ1NiA0OTZRNDU0IDQ5NCAzMDUgMzk5TDE1OCAzMDZMMzA1IDIxM1EzNDEgMTkwIDM5MCAxNTlRNDQzIDEyNSA0NTIgMTE5VDQ2NCAxMDZWMTA1UTQ2OCA5NyA0NjggOTAnLFxuICAgIDB4M0Q6ICczOCAzODJRMzggNDA5IDY3IDQxN0g0NTdRNDg3IDQwOCA0ODcgMzgyUTQ4NyAzNTggNDYxIDM0OEg2NFE1MSAzNTIgNDUgMzYwVDM4IDM3NlYzODJaTTY3IDE5NVEzOCAyMDQgMzggMjMwUTM4IDI1NSA2MiAyNjRRNjYgMjY1IDI2NCAyNjVINDYxTDQ2NCAyNjRRNDY3IDI2MiA0NjkgMjYxVDQ3NSAyNTZUNDgxIDI0OVQ0ODUgMjQwVDQ4NyAyMzBRNDg3IDIwNCA0NTcgMTk1SDY3JyxcbiAgICAweDNFOiAnNTcgNTIyUTU3IDUzOSA2NyA1NDhUOTAgNTU3UTk4IDU1NyAxMDUgNTU0UTExMSA1NTEgMjgxIDQ0NFQ0NTYgMzMyUTQ2OCAzMjAgNDY4IDMwNlQ0NTYgMjgwUTQ1MiAyNzYgMjgyIDE2OVQxMDUgNThROTggNTUgOTEgNTVRNzkgNTUgNjggNjNUNTcgOTBRNTcgMTA1IDY4IDExNlE3MCAxMTggMjE5IDIxM0wzNjYgMzA2TDIxOSAzOTlRNzUgNDkxIDcxIDQ5NFE1NyA1MDcgNTcgNTIyJyxcbiAgICAweDNGOiAnNjIgNDkzUTYyIDU0MCAxMDcgNTc4VDI1MyA2MTdRMzY2IDYxNyA0MTQgNTc4VDQ2MiA0OTBRNDYyIDQ1OSA0NDUgNDM0VDQxMSA0MDBMMzk0IDM5MFEzMTUgMzQ3IDI5NiAyODdRMjk0IDI3OCAyOTMgMjQ3VjIxN1EyODUgMjAxIDI3OCAxOThUMjQ2IDE5NFQyMTYgMTk3VDIwMSAyMTVWMjQ1VjI1M1EyMDEgMzc5IDM1MSA0NTZRMzY2IDQ2NCAzNzUgNDc3UTM3NyA0ODIgMzc3IDQ5MFEzNzcgNTE3IDMzOSA1MjhUMjUxIDU0MFExODIgNTQwIDE1OSA1MTdRMTY2IDUwMyAxNjYgNDkwUTE2NiA0NjggMTUxIDQ1M1QxMTQgNDM4UTk2IDQzOCA3OSA0NTFUNjIgNDkzWk0xOTAgNThRMTkwIDg1IDIwOCAxMDBUMjQ5IDExNVEyNzIgMTEzIDI4OCA5OVQzMDQgNThRMzA0IDMzIDI4NyAxN1QyNDYgMFQyMDYgMTZUMTkwIDU4JyxcbiAgICAweDQwOiAnNDQgMzA2UTQ0IDQ0NSAxMjUgNTMxVDMwMiA2MTdRMzMyIDYxNyAzNTggNjA3VDQxMSA1NzRUNDU2IDUwMlQ0NzkgMzg3UTQ4MSAzNjEgNDgxIDMyMVE0ODEgMjAzIDQyMSAxNDNRMzgxIDEwMyAzMzIgMTAzUTI2NiAxMDMgMjI1IDE2NVQxODMgMzA3UTE4MyAzOTAgMjI3IDQ0OVQzMzIgNTA4UTM1OCA1MDggMzc4IDQ5OFEzNTAgNTQxIDMwNCA1NDFRMjI5IDU0MSAxNzIgNDczVDExNSAzMDVRMTE1IDIwOCAxNzEgMTQwVDMwNiA3MUgzMTBRMzU4IDcxIDM5NyAxMDVRNDA5IDExNSA0MzYgMTE1UTQ1OCAxMTUgNDYyIDExM1E0ODEgMTA2IDQ4MSA4NlE0ODEgNzMgNDY4IDYxUTQwMSAtNiAzMDUgLTZRMjYyIC02IDIxNyAxNFQxMzMgNzFUNjkgMTcwVDQ0IDMwNlpNNDEwIDMwNlE0MTAgMzYxIDM4NiAzOTZUMzMzIDQzMVEzMDAgNDMxIDI3NyAzOTRUMjU0IDMwNVEyNTQgMjU2IDI3NiAyMThUMzMyIDE4MFEzNjQgMTgwIDM4NyAyMTdUNDEwIDMwNicsXG4gICAgMHg1QjogJzIzNyAtODJRMjIxIC03OCAyMTQgLTU4VjMwNVEyMTQgNjY5IDIxNiA2NzNRMjIwIDY4NyAyMzEgNjkwVDI3OCA2OTRIMzUwSDQ2MVE0NjIgNjkzIDQ2NyA2OTBUNDc0IDY4NVQ0NzggNjc5VDQ4MiA2NzBUNDgzIDY1NlE0ODMgNjMyIDQ3MSA2MjVUNDI4IDYxN1E0MjIgNjE3IDQwNiA2MTdUMzc5IDYxOEgyOThWLTdIMzc5SDQyMFE0NTkgLTcgNDcxIC0xM1Q0ODMgLTQ1UTQ4MyAtNTUgNDgzIC01OVQ0NzcgLTcwVDQ2MSAtODJIMjM3JyxcbiAgICAweDVDOiAnNTggNjU5UTU4IDY3MyA2OCA2ODNUOTMgNjk0UTExNCA2OTQgMTI1IDY3M1ExMzIgNjU5IDI5NyAzMTRUNDY0IC0zNlE0NjYgLTQ0IDQ2NiAtNDhRNDY2IC02NiA0NTQgLTc0VDQzMSAtODNRNDEwIC04MyAzOTkgLTYyUTM5MSAtNDcgMjI2IDI5OFQ2MCA2NDhRNTggNjU2IDU4IDY1OScsXG4gICAgMHg1RDogJzQxIDY1NlE0MSA2ODEgNTMgNjg4VDk5IDY5NVExMDcgNjk1IDEzMyA2OTVUMTc3IDY5NEgyODhRMzA3IDY4MSAzMTAgNjY5Vi01OFEzMDMgLTc2IDI4OCAtODJINjRRNDEgLTczIDQxIC00NVE0MSAtMjEgNTMgLTE0VDk2IC02UTEwMiAtNiAxMTggLTZUMTQ1IC03SDIyNlY2MThIMTQ1SDEwMFE2NyA2MTggNTQgNjI1VDQxIDY1NicsXG4gICAgMHg1RTogJzEzOCA0NjBRMTIxIDQ2MCAxMDkgNDc5VDk2IDUxMlE5NiA1MjcgMTA2IDUzNFExMDkgNTM2IDE3OCA1NzFUMjUzIDYwOVEyNTYgNjExIDI2NCA2MTFRMjcyIDYxMCAzNDMgNTc0UTM1NyA1NjcgMzY5IDU2MVQzODkgNTUwVDQwMiA1NDNUNDExIDUzOFQ0MTYgNTM1VDQyMCA1MzJUNDIyIDUyOVQ0MjUgNTI1UTQyOCA1MTggNDI4IDUxMlE0MjggNDk4IDQxNiA0NzlUMzg2IDQ2MEgzODRRMzc3IDQ2MCAzMTYgNDk2TDI2MiA1MjZMMjA4IDQ5NlExNDcgNDYwIDEzOCA0NjAnLFxuICAgIDB4NUY6ICc1NyAtNjBRNTcgLTMzIDg2IC0yNUg0MzhRNDY4IC0zNCA0NjggLTYwVDQzOCAtOTVIODZRNTcgLTg2IDU3IC02MCcsXG4gICAgMHg2MDogJzE3NiA0NzlRMTc2IDU2MyAyMjcgNjIyVDMxMCA2ODFRMzI0IDY4MCAzMzcgNjY3VDM1MCA2NDFRMzUwIDYyNyAzNDAgNjE5VDMxMiA1OTlUMjgwIDU2NlEyNTYgNTMxIDI1MiA0ODVWNDcxUTI2MSA0NzIgMjYyIDQ3MlEyODUgNDcyIDMwMiA0NTVUMzIwIDQxNFEzMjAgMzg5IDMwMyAzNzNUMjYxIDM1N1EyMjMgMzU3IDIwMCAzOTFUMTc2IDQ3OScsXG4gICAgMHg3QjogJzQzMCAtN0g0MzZRNDQ5IC03IDQ1NiAtOFQ0NjkgLTE5VDQ3NSAtNDVRNDc1IC02OSA0NjYgLTc2VDQzNCAtODNINDE5UTM4NiAtODIgMzYzIC04MFQzMDggLTY5VDI1MyAtNDFUMjIzIDdMMjIxIDE3TDIyMCAxMThWMjIwTDIxOCAyMjRRMjE1IDIyOSAyMTQgMjMwVDIxMCAyMzVUMjA0IDI0MVQxOTUgMjQ2VDE4NCAyNTJUMTcwIDI1N1QxNTEgMjYyVDEyNyAyNjVRMTE4IDI2NyAxMDAgMjY3VDY5IDI3MFQ1MiAyODNRNTAgMjg4IDUwIDMwNlYzMTRRNTAgMzM1IDY3IDM0MVE2OCAzNDIgMTAyIDM0M1QxNzIgMzU1VDIxNyAzODZMMjIwIDM5MlY0OTNMMjIxIDU5NVEyMjUgNjExIDIzMCA2MjFUMjUxIDY1MFQzMDQgNjc5VDM5NSA2OTNMNDA2IDY5NFE0MTggNjk0IDQyNiA2OTRRNDU4IDY5NCA0NjYgNjg1UTQ3NSA2NzYgNDc1IDY1NlQ0NjYgNjI3UTQ1OCA2MTggNDMwIDYxOFEzMTkgNjE4IDMwNSA1ODdMMzA0IDQ4NlEzMDQgNDc2IDMwNCA0NThUMzA1IDQzMVEzMDUgMzg1IDI5NSAzNThUMjUxIDMxMUwyNDMgMzA2UTI0MyAzMDUgMjU0IDI5OFQyODEgMjc0VDMwMiAyMzFRMzA0IDIyMyAzMDQgMTI1TDMwNSAyNVEzMDkgMTYgMzE2IDEwVDM1MiAtMVQ0MzAgLTcnLFxuICAgIDB4N0M6ICcyMjggNjY4UTI0MSA2OTQgMjYyIDY5NFEyNjggNjk0IDI3MyA2OTNUMjgyIDY4OFQyODcgNjgyVDI5MyA2NzRMMjk3IDY2OFYtNTdRMjgyIC04MiAyNjIgLTgyUTIzOSAtODIgMjI4IC01N1Y2NjgnLFxuICAgIDB4N0Q6ICc0OSA2NTVRNDkgNjc0IDU2IDY4MlQ3MyA2OTJUMTA2IDY5NFExNDEgNjkzIDE2NyA2OTBUMjI0IDY3N1QyNzUgNjQ3VDMwMyA1OTVMMzA1IDM5MlEzMTMgMzY3IDM0NyAzNTZUNDE3IDM0NFQ0NTcgMzQxUTQ3NSAzMzUgNDc1IDMwNlE0NzUgMjkyIDQ3MyAyODVUNDY0IDI3M1Q0NTEgMjY5VDQzMCAyNjdRMzUyIDI2MiAzMjcgMjQ2UTMxMSAyMzYgMzA1IDIyMEwzMDMgMTdMMzAxIDdRMjk0IC0xNiAyNzcgLTMzVDI0MiAtNjBUMTk2IC03NFQxNTAgLTgwVDEwNiAtODNRNzggLTgzIDcyIC04MlQ1OCAtNzRRNDkgLTY1IDQ5IC00NFE0OSAtMjQgNTggLTE2UTY2IC03IDk0IC03UTE0MyAtNyAxNzEgLTFUMjA3IDEwVDIyMCAyNVYxMjVRMjIwIDIyMyAyMjIgMjMxUTIyOCAyNTcgMjQzIDI3NFQyNzAgMjk5TDI4MSAzMDZRMjM0IDMyOSAyMjIgMzgxUTIyMCAzODcgMjIwIDQ4NlY1ODdRMjEyIDU5NyAyMDcgNjAxVDE3MyA2MTJUOTQgNjE4UTY2IDYxOCA1OCA2MjdRNDkgNjM1IDQ5IDY1NScsXG4gICAgMHg3RTogJzEyNSA0NjdRMTEzIDQ2NyAxMDAgNDgwVDg3IDUwOVE4OCA1MjAgMTExIDU0M1ExNzIgNjAyIDIwOSA2MDlRMjE5IDYxMSAyMjQgNjExUTI0NiA2MTEgMjYzIDU5NlQyOTAgNTY2VDMwNCA1NTFRMzE5IDU1MSAzNjcgNTk0UTM4MyA2MTAgMzk2IDYxMEg0MDBRNDExIDYxMCA0MjQgNTk3VDQzNyA1NjhRNDM2IDU1NyA0MTMgNTM0UTM0OCA0NjkgMzA1IDQ2NlEyNzggNDY2IDI2MCA0ODFUMjM0IDUxMVQyMjAgNTI2UTIwNSA1MjYgMTU3IDQ4M1ExNDEgNDY3IDEyOSA0NjdIMTI1JyxcbiAgICAweDdGOiAnMTA0IDU2NVExMDQgNTkwIDEyMCA2MDBUMTU1IDYxMVExNzUgNjExIDE4MCA2MTBRMjE3IDU5OSAyMTcgNTY1UTIxNyA1NDUgMjAyIDUzMlQxNjYgNTE5SDE1OUgxNTVRMTIwIDUxOSAxMDcgNTQ3UTEwNCA1NTMgMTA0IDU2NVpNMzA3IDU2NVEzMDcgNTgwIDMxNyA1OTNUMzQ2IDYxMFEzNDggNjEwIDM1MCA2MTBUMzU0IDYxMVEzNTUgNjEyIDM2NyA2MTJRMzk1IDYxMSA0MDggNTk3VDQyMSA1NjVUNDA5IDUzNFQzNjUgNTE5SDM1OFEzMzYgNTE5IDMyMiA1MzJUMzA3IDU2NScsXG4gICAgMHhBMDogJycsXG4gICAgMHgxMzE6ICc0MTEgNzZRNDQxIDc2IDQ1MSA2OVQ0NjIgMzhRNDYyIDI5IDQ2MiAyNlQ0NjAgMThUNDUzIDlUNDQwIDFIOTRRNzIgOCA3MiAzM1YzOFE3MiA0NiA3MiA0OVQ3NCA1OFQ4MSA2OFQ5NCA3NkgyMzNWMzU1SDE2N0wxMDIgMzU2UTgwIDM2MyA4MCAzOTNRODAgNDE4IDkxIDQyNVQxMzggNDMyUTE0NSA0MzIgMTY1IDQzMlQyMDAgNDMxSDI5NVEyOTcgNDI5IDMwMyA0MjVUMzEwIDQyMFQzMTQgNDE1VDMxNyA0MDRUMzE3IDM4OVQzMTggMzYzUTMxOCAzNTQgMzE4IDMxNFQzMTcgMjQxVjc2SDM3OEg0MTEnLFxuICAgIDB4MjM3OiAnNzUgLTkxVDEwMCAtOTFUMTM4IC0xMDdUMTUyIC0xNDRWLTE1MEwxNjAgLTE1MUgxOTNIMjAzUTI0MSAtMTUxIDI2NyAtMTIxUTI4NCAtOTcgMjg4IC03M1QyOTIgMjNWMTUxVjM1NUgyMThMMTQ1IDM1NlExMjMgMzY1IDEyMyAzODdWMzkzUTEyMyA0MjIgMTQ1IDQzMEgxNDhRMTUxIDQzMCAxNTYgNDMwVDE2OSA0MzBUMTg1IDQzMFQyMDUgNDMxVDIyNyA0MzFUMjUxIDQzMUgzNTRRMzU2IDQzMCAzNjAgNDI3VDM2NSA0MjRUMzY5IDQyMFQzNzIgNDE2VDM3MyA0MTBUMzc1IDQwMlQzNzYgMzkxVDM3NyAzNzZUMzc3IDM1NlEzNzcgMzQ1IDM3NyAyODZUMzc2IDE3NlEzNzYgLTY3IDM3MSAtODhRMzYyIC0xMjMgMzQyIC0xNTFUMjk5IC0xOTRRMjU0IC0yMjggMTgwIC0yMjhRODQgLTIyNiA1NiAtMTc3UTQ5IC0xNjIgNDggLTE0OFE0OCAtMTIyIDYxIC0xMDcnLFxuICAgIDB4MkI5OiAnMjExIDU3MlEyMTEgNTkzIDIyNiA2MDhUMjYyIDYyM1EyODEgNjIzIDI5NyA2MTBUMzEzIDU3M1EzMTMgNTYxIDMwNyA0NjVRMzAxIDM3MCAyOTkgMzU3VDI4NCAzMzZRMjc5IDMzNCAyNjIgMzM0UTI0MCAzMzQgMjMxIDM0M1EyMjYgMzUwIDIyNSAzNjJUMjE3IDQ2NVEyMTEgNTQ5IDIxMSA1NzInLFxuICAgIDB4MzAwOiAnLTQwOSA1NjlRLTQwOSA1ODYgLTM5OSA1OTZULTM3NyA2MTBRLTM3NiA2MTAgLTM3MiA2MTBULTM2NSA2MTFRLTM1NSA2MTAgLTI4NCA1ODhULTIxMCA1NjNRLTE5NSA1NTYgLTE5NSA1MzdRLTE5NSA1MzMgLTE5NyA1MjJULTIwOCA0OThULTIyOSA0ODVRLTIzOCA0ODUgLTMxMiA1MDhULTM4OCA1MzNRLTQwMCA1MzggLTQwNSA1NTJRLTQwOSA1NTkgLTQwOSA1NjknLFxuICAgIDB4MzAxOiAnLTI5NyA0ODVRLTMxNSA0ODUgLTMyMyA1MDVULTMzMSA1MzdRLTMzMSA1NTYgLTMxNiA1NjNRLTMwNyA1NjkgLTE3MCA2MTBRLTE2OSA2MTAgLTE2NSA2MTBULTE1NyA2MTFRLTE0MSA2MDkgLTEzMSA2MDBULTExOSA1ODRULTExNyA1NjlRLTExNyA1NTUgLTEyNCA1NDVULTEzOCA1MzNRLTE0MCA1MzEgLTIxNCA1MDhULTI5NyA0ODUnLFxuICAgIDB4MzAyOiAnLTM4NyA0NjBRLTQwNCA0NjAgLTQxNiA0NzlULTQyOSA1MTJRLTQyOSA1MjcgLTQxOSA1MzRRLTQxNiA1MzYgLTM0NyA1NzFULTI3MiA2MDlRLTI2OSA2MTEgLTI2MSA2MTFRLTI1NCA2MTAgLTE4MiA1NzRRLTE2OCA1NjcgLTE1NiA1NjFULTEzNiA1NTBULTEyMyA1NDNULTExNCA1MzhULTEwOSA1MzVULTEwNSA1MzJULTEwMyA1MjlULTEwMCA1MjVRLTk3IDUxOCAtOTcgNTEyUS05NyA0OTggLTEwOSA0NzlULTEzOSA0NjBILTE0MVEtMTQ4IDQ2MCAtMjA5IDQ5NkwtMjYzIDUyNkwtMzE3IDQ5NlEtMzc4IDQ2MCAtMzg3IDQ2MCcsXG4gICAgMHgzMDM6ICctNDAwIDQ2N1EtNDEyIDQ2NyAtNDI1IDQ4MFQtNDM4IDUwOVEtNDM3IDUyMCAtNDE0IDU0M1EtMzUzIDYwMiAtMzE2IDYwOVEtMzA2IDYxMSAtMzAxIDYxMVEtMjc5IDYxMSAtMjYyIDU5NlQtMjM1IDU2NlQtMjIxIDU1MVEtMjA2IDU1MSAtMTU4IDU5NFEtMTQyIDYxMCAtMTI5IDYxMEgtMTI1US0xMTQgNjEwIC0xMDEgNTk3VC04OCA1NjhRLTg5IDU1NyAtMTEyIDUzNFEtMTc3IDQ2OSAtMjIwIDQ2NlEtMjQ3IDQ2NiAtMjY1IDQ4MVQtMjkxIDUxMVQtMzA1IDUyNlEtMzIwIDUyNiAtMzY4IDQ4M1EtMzg0IDQ2NyAtMzk2IDQ2N0gtNDAwJyxcbiAgICAweDMwNDogJy00MjkgNTAwUS00NDAgNTA0IC00NDUgNTExVC00NTAgNTIyVC00NTIgNTM2US00NTIgNTUyIC00NTEgNTU2US00NDUgNTcxIC00MzQgNTc0VC0zNzkgNTc4US0zNjkgNTc4IC0zMzAgNTc4VC0yNjEgNTc3SC05NlEtOTQgNTc1IC05MCA1NzNULTg1IDU2OVQtODEgNTY0VC03NyA1NThULTc1IDU1MFQtNzQgNTM4US03NCA1MjIgLTc4IDUxNVQtOTYgNTAwSC00MjknLFxuICAgIDB4MzA2OiAnLTQ0NiA1NzlRLTQ0NiA2MTEgLTQxMiA2MTFILTQwN1EtMzgzIDYwOSAtMzc4IDU5OVQtMzU4IDU4N1EtMzQwIDU4MyAtMjYzIDU4M0gtMjM1US0xNTkgNTgzIC0xNTIgNTkzUS0xNDUgNjExIC0xMjAgNjExSC0xMTdILTExNVEtNzkgNjExIC03OSA1NzdRLTgwIDU1MiAtOTUgNTM2VC0xNDAgNTE0VC0xOTEgNTA2VC0yNTEgNTA0SC0yNjNILTI3NFEtMzExIDUwNCAtMzM0IDUwNVQtMzg2IDUxM1QtNDMxIDUzNlQtNDQ2IDU3OScsXG4gICAgMHgzMDg6ICctNDIxIDU2NVEtNDIxIDU5MCAtNDA1IDYwMFQtMzcwIDYxMVEtMzUwIDYxMSAtMzQ1IDYxMFEtMzA4IDU5OSAtMzA4IDU2NVEtMzA4IDU0NSAtMzIzIDUzMlQtMzU5IDUxOUgtMzY2SC0zNzBRLTQwNSA1MTkgLTQxOCA1NDdRLTQyMSA1NTMgLTQyMSA1NjVaTS0yMTggNTY1US0yMTggNTgwIC0yMDggNTkzVC0xNzkgNjEwUS0xNzcgNjEwIC0xNzUgNjEwVC0xNzEgNjExUS0xNzAgNjEyIC0xNTggNjEyUS0xMzAgNjExIC0xMTcgNTk3VC0xMDQgNTY1VC0xMTYgNTM0VC0xNjAgNTE5SC0xNjdRLTE4OSA1MTkgLTIwMyA1MzJULTIxOCA1NjUnLFxuICAgIDB4MzBBOiAnLTM0NCA1NThRLTM0NCA1ODMgLTMyMSA2MDFULTI2MiA2MTlRLTIyNSA2MTkgLTIwNCA2MDBULTE4MiA1NjBRLTE4MiA1MzYgLTIwNSA1MThULTI2NCA0OTlRLTMwMSA0OTkgLTMyMiA1MTlULTM0NCA1NThaTS0yMjMgNTU5US0yMjMgNTcwIC0yMzQgNTc5VC0yNjEgNTg4VC0yODkgNTgwVC0zMDMgNTU5US0zMDMgNTQ5IC0yOTMgNTQwVC0yNjMgNTMwVC0yMzQgNTM5VC0yMjMgNTU5JyxcbiAgICAweDMwQzogJy00MjcgNTI1US00MjcgNTQyIC00MTcgNTU5VC0zOTIgNTc3US0zODUgNTc3IC0zMjMgNTUzTC0yNjMgNTMwTC0yMDMgNTUzUS0xNDMgNTc2IC0xMzYgNTc2US0xMTggNTc2IC0xMDkgNTU5VC05OSA1MjVRLTk5IDUwOCAtMTA3IDUwMlQtMTYxIDQ4MVEtMTc3IDQ3NSAtMTg2IDQ3MlEtMjU2IDQ0OSAtMjYzIDQ0OVEtMjcyIDQ0OSAtMzM5IDQ3MlQtNDEyIDQ5OFEtNDIwIDUwMSAtNDIzIDUwOFQtNDI3IDUyMFY1MjUnLFxuICAgIDB4MzkxOiAnMTkxIDc2UTIxMiA3NSAyMjAgNjhUMjI5IDM4UTIyOSAxMCAyMDggMUgxMjlIODBRNDggMSAzOCA3VDI4IDM4UTI4IDUxIDI5IDU3VDQwIDY5VDcwIDc2UTg5IDc2IDg5IDc4UTkwIDc5IDExNyAyMDVUMTczIDQ2MVQyMDUgNTk5UTIxMiA2MjMgMjUwIDYyM0gyNjJIMjczUTMxMiA2MjMgMzE5IDU5OVEzMjIgNTkxIDM1MCA0NjFUNDA2IDIwNVQ0MzUgNzhRNDM1IDc2IDQ1NCA3Nkg0NThRNDg0IDc2IDQ5MyA1OVE0OTYgNTMgNDk2IDM4UTQ5NiAxMSA0NzggM1E0NzQgMSAzOTUgMUgzMTdRMjk1IDggMjk1IDM4UTI5NSA2NSAzMTEgNzNRMzE2IDc1IDMzMyA3NkwzNDggNzdWNzhRMzQ4IDgwIDM0MSAxMTJMMzM0IDE0M0gxOTBMMTgzIDExMlExNzYgODAgMTc2IDc4UTE3NSA3NiAxNzggNzZRMTgwIDc2IDE5MSA3NlpNMzE4IDIyMVEzMTMgMjM4IDI4OCAzNjZUMjYzIDUxOVEyNjMgNTI2IDI2MiA1MjdRMjYxIDUyNyAyNjEgNTIwUTI2MSA0OTMgMjM2IDM2NVQyMDYgMjIxUTIwNiAyMTkgMjYyIDIxOVQzMTggMjIxJyxcbiAgICAweDM5MjogJzM5IDFRMTcgMTAgMTcgMzJWMzhWNDZRMTcgNjUgMzQgNzNRNDAgNzYgNjEgNzZIODRWNTM1SDYxSDU0UTI3IDUzNSAxOSA1NTNRMTcgNTU3IDE3IDU3M1ExNyA1ODMgMTcgNTg3VDIzIDU5OVQzOSA2MTBRNDAgNjExIDE3OSA2MTFRMzIwIDYxMCAzMzIgNjA3UTMzMiA2MDcgMzM5IDYwNVEzOTQgNTkxIDQyNyA1NDdUNDYxIDQ1NFE0NjEgNDEzIDQzNiAzNzhUMzY5IDMyNUwzNTggMzIwUTQwNSAzMTEgNDQzIDI3MFQ0ODIgMTY5UTQ4MiAxMTIgNDQ1IDY0VDM0NSAzTDMzNCAxSDM5Wk0zMDkgNTMzUTMwMiA1MzUgMjM0IDUzNUgxNjhWMzU2SDIzMFEyODQgMzU3IDI5NiAzNThUMzIzIDM2OFEzNDYgMzgwIDM2MSA0MDJUMzc3IDQ1MlEzNzcgNDgyIDM1OCA1MDVUMzA5IDUzM1pNMzk4IDE3NlEzOTYgMjE4IDM3MSAyNDZUMzE1IDI3OVEzMTAgMjgwIDIzNyAyODBIMTY4Vjc2SDIzOVEzMTYgNzcgMzI3IDgxUTMyOSA4MiAzMzQgODRRMzk4IDEwNyAzOTggMTc2JyxcbiAgICAweDM5MzogJzQ2NiA2MTFRNDY4IDYwOSA0NzMgNjA2VDQ3OSA2MDJUNDgzIDU5OFQ0ODYgNTkzVDQ4NyA1ODZUNDg4IDU3NlQ0ODggNTYyVjUyNlY0ODhRNDg4IDQ1MiA0NzAgNDQ0UTQ2NiA0NDIgNDQ2IDQ0MlE0MjEgNDQyIDQxMyA0NTBRNDA2IDQ1NyA0MDUgNDYzVDQwNCA1MDFWNTM1SDE4NVY3NkgyMjJIMjM5UTI2MCA3NiAyNzAgNjlUMjgxIDM4UTI4MSAxMiAyNzAgNlQyMDkgMEgxNTVIMTA0UTQ4IDAgMzcgNVQyNSAzOFEyNSA1OSAzNSA2OVE0NCA3NiA3NiA3NkgxMDFWNTM1SDc2SDY0UTM2IDUzNSAyNyA1NTJRMjUgNTU3IDI1IDU3M1QyNyA1OTRRMzMgNjA2IDQzIDYwOFQxMDYgNjExSDI1OEg0NjYnLFxuICAgIDB4Mzk0OiAnMjMyIDYyMkgyMzdRMjQyIDYyMiAyNDkgNjIyVDI2NCA2MjNIMjkzUTI5NSA2MjIgMzAwIDYxOVQzMDggNjEzVDMxNCA2MDhUMzE5IDYwMVEzMjIgNTk3IDQwNSAzMTZUNDg5IDE5UTQ4OSA5IDQ3MyAxUTQ3MSAwIDI2MiAwVDUxIDFRMzUgOSAzNSAxOVEzNSAzNCAxMTggMzE1VDIwNSA2MDFRMjE0IDYxNiAyMzIgNjIyWk0yNjcgNTAxUTI2NiA1MDQgMjY1IDUxMFQyNjMgNTIxVDI2MSA1MjZWNTIzUTI2MSA1MDggMjExIDMzMlExNDIgOTEgMTM4IDgySDM4NlEzODUgODQgMzQ1IDIyNFEyODEgNDM5IDI2NyA1MDEnLFxuICAgIDB4Mzk1OiAnMzc0IDI3MVEzNzQgMjQxIDM2NyAyMzJUMzMyIDIyM1EzMDcgMjIzIDI5OSAyMzFRMjkwIDI0MCAyOTAgMjYzVjI3OUgxNzNWNzZINDE4VjExOFYxNDRRNDE4IDE2NyA0MjYgMTc2VDQ2MCAxODZRNDkxIDE4NiA1MDAgMTY2UTUwMiAxNjEgNTAyIDkzVjUyUTUwMiAyNSA0OTkgMTdUNDgwIDFINDFRMTkgOSAxOSAzMlYzOFExOSA2MyAzNiA3M1E0MiA3NiA2NSA3Nkg4OVY1MzVINjVINTVRNDQgNTM1IDM4IDUzN1QyNSA1NDhUMTkgNTczUTE5IDYwMiA0MSA2MTBINDdRNTMgNjEwIDYzIDYxMFQ4OCA2MTBUMTIxIDYxMFQxNjAgNjExVDIwNCA2MTFUMjUxIDYxMUg0NThRNDYwIDYwOSA0NjUgNjA2VDQ3MSA2MDJUNDc1IDU5OFQ0NzggNTkzVDQ3OSA1ODZUNDgwIDU3NlQ0ODAgNTYyVjUyNlY0ODhRNDgwIDQ1MiA0NjIgNDQ0UTQ1OCA0NDIgNDM4IDQ0MlE0MTMgNDQyIDQwNSA0NTBRMzk4IDQ1NyAzOTcgNDYzVDM5NiA1MDFWNTM1SDE3M1YzNTVIMjkwVjM3MVEyOTAgMzk0IDI5OSA0MDNUMzMyIDQxMlEzNjMgNDEyIDM3MiAzOTJRMzc0IDM4NyAzNzQgMzE3VjI3MScsXG4gICAgMHgzOTY6ICc3MSAxUTYwIDUgNTUgMTFUNDkgMjNUNDggMzlWNDZRNDggNTYgNTggNzNUMTMxIDE4M1ExNzEgMjQyIDE5NyAyODJMMzY2IDUzNUgxNDRWNTAxUTE0NCA0NzAgMTQzIDQ2NFQxMzUgNDUwUTEyNyA0NDIgMTAyIDQ0Mkg5NFE3MSA0NDIgNjIgNDYxUTYwIDQ2NiA2MCA1MjdMNjEgNTg5UTcwIDYwNyA4MyA2MTBIODhROTMgNjEwIDEwMiA2MTBUMTI0IDYxMFQxNTQgNjEwVDE4OCA2MTFUMjI3IDYxMVQyNzAgNjExSDQ1NFE0NTYgNjA5IDQ2MSA2MDZUNDY3IDYwMVQ0NzEgNTk3VDQ3NCA1OTFUNDc1IDU4NFQ0NzYgNTcyVjU2NVE0NzYgNTU1IDQ2NiA1MzhUMzkzIDQyOFEzNTMgMzY5IDMyNyAzMjlMMTU4IDc2SDM5N1YxMjBWMTQ2UTM5NyAxNjkgNDA1IDE3OVQ0MzkgMTg5UTQ3MCAxODkgNDc5IDE2OVE0ODEgMTY0IDQ4MSA5NVY0OFE0ODEgMjQgNDc4IDE2VDQ1OSAxSDcxJyxcbiAgICAweDM5NzogJzE2IDU3MVExNiA1OTcgMjcgNjA0VDc0IDYxMUgxMjVIMjA4UTIyMyA2MDIgMjI2IDU5NlQyMzAgNTczUTIzMCA1NTkgMjI3IDU1MVQyMTcgNTQwVDIwNCA1MzZUMTg2IDUzNUgxNjVWMzU2SDM1OVY1MzVIMzM4SDMzM1EzMDYgNTM1IDI5NyA1NTJRMjk1IDU1NiAyOTUgNTczUTI5NSA1ODYgMjk1IDU5MFQzMDEgNjAwVDMxNyA2MTFINDg2UTUwMSA2MDIgNTA0IDU5NlQ1MDggNTczUTUwOCA1NTkgNTA1IDU1MVQ0OTUgNTQwVDQ4MiA1MzZUNDY0IDUzNUg0NDNWNzZINDY0SDQ3MFE0ODIgNzYgNDg5IDc1VDUwMiA2NFQ1MDggMzhRNTA4IDEwIDQ4NiAxSDMxN1EzMDYgNSAzMDEgMTFUMjk2IDIxVDI5NSAzOFY0NFEyOTUgNjYgMzExIDczUTMxOCA3NiAzMzggNzZIMzU5VjI4MEgxNjVWNzZIMTg2SDE5MlEyMDQgNzYgMjExIDc1VDIyNCA2NFQyMzAgMzhRMjMwIDEwIDIwOCAxSDM5UTI4IDUgMjMgMTFUMTggMjFUMTcgMzhWNDRRMTcgNjYgMzMgNzNRNDAgNzYgNjAgNzZIODFWNTM1SDYwUTQ1IDUzNSAzOCA1MzZUMjQgNTQ1VDE2IDU3MScsXG4gICAgMHgzOTg6ICcxMDIgNTg4UTE0MCA2MjEgMjQwIDYyMVEzMjMgNjIxIDMzNSA2MjBRMzkzIDYxMyA0MjIgNTg4UTQ1MCA1NjAgNDU5IDQ5M1Q0NjggMzA2UTQ2OCAxODUgNDYwIDExOFQ0MjIgMjNRMzgyIC0xMCAyODkgLTEwSDI2MkgyMzVRMTQyIC0xMCAxMDIgMjNRNzQgNTAgNjUgMTE4VDU2IDMwNlE1NiA0MjcgNjQgNDk0VDEwMiA1ODhaTTI2MiA2NlEyODUgNjYgMzAwIDY3VDMyOSA3NFQzNTEgODZUMzY2IDEwOFQzNzYgMTM4VDM4MSAxODFUMzgzIDIzNVQzODQgMzA2UTM4NCA0NTIgMzcxIDQ5MlQzMDQgNTQ0UTI5NiA1NDUgMjUxIDU0NVEyMzAgNTQ1IDIxNSA1NDNUMTg4IDUzNFQxNjkgNTIwVDE1NSA0OTdUMTQ3IDQ2NlQxNDMgNDIzVDE0MSAzNzFUMTQwIDMwNlExNDAgMjQ3IDE0MSAyMTVUMTQ2IDE1MVQxNTggMTA3VDE3OSA4MlQyMTIgNjlUMjYyIDY2Wk0xNzkgMzU2UTE4NyAzNzggMjE5IDM3OEgyMjNRMjQwIDM3NyAyNDkgMzcyVDI2MCAzNjBMMjYxIDM1NVEyNjEgMzUzIDI2MiAzNTNUMjYzIDM1NVEyNjMgMzYyIDI3MiAzNjlRMjgwIDM3NyAzMDQgMzc3SDMxMFEzMjUgMzc3IDMzMSAzNzRUMzQ2IDM1NlYyNTZRMzM4IDI0MSAzMzEgMjM4VDMwOSAyMzRIMzA0UTI4MCAyMzQgMjcyIDI0MlEyNjMgMjQ5IDI2MyAyNTZRMjYzIDI1OCAyNjIgMjU4VDI2MSAyNTZRMjYxIDI0OSAyNTIgMjQyUTI0NCAyMzQgMjIwIDIzNEgyMTZRMTg2IDIzNCAxNzkgMjU2VjM1NicsXG4gICAgMHgzOTk6ICc0MDAgNzZRNDMxIDc2IDQ0MSA2OVQ0NTIgMzhRNDUyIDI5IDQ1MiAyNlQ0NTAgMThUNDQzIDlUNDMwIDFIOTVRODQgNiA3OSAxMlQ3MyAyM1Q3MiAzOFE3MiA2NSA5MCA3M1E5NiA3NiAxNTcgNzZIMjIwVjUzNUgxNTdIMTI0UTkzIDUzNSA4MyA1NDJUNzIgNTczUTcyIDYwMyA5MyA2MTBROTcgNjExIDI2NCA2MTFINDMwUTQzMiA2MDkgNDM2IDYwN1Q0NDQgNjAyVDQ0OSA1OTRRNDUyIDU4OCA0NTIgNTczUTQ1MiA1NDYgNDM0IDUzOFE0MjggNTM1IDM2NyA1MzVIMzA0Vjc2SDM2N0g0MDAnLFxuICAgIDB4MzlBOiAnMTggNTQ5VDE4IDU3M1QyOSA2MDRUNzAgNjExSDExOEgxOTNRMjA3IDYwMyAyMTAgNTk2VDIxNCA1NzNRMjE0IDU0OSAxOTggNTM4UTE5MSA1MzUgMTcyIDUzNUgxNTJWNDIxUTE1MiAzNDQgMTUyIDMyNlQxNTMgMzA5TDI0MiA0MjJMMzI5IDUzNFEzMjcgNTM1IDMyMiA1MzZUMzE0IDUzOFQzMDggNTQyVDMwMyA1NDhUMzAwIDU1OFQyOTggNTczUTI5OCA2MDAgMzE2IDYwOFEzMjIgNjExIDM5MiA2MTFINDYzUTQ3NyA2MDIgNDgxIDU5NVQ0ODUgNTczUTQ4NSA1MzUgNDQ2IDUzNUg0NDFINDIwTDI4MSAzNTdMNDM2IDc3TDQ1NCA3NlE0NzMgNzUgNDc4IDczUTQ5NSA2MiA0OTUgMzhRNDk1IDEwIDQ3MyAxSDM0NVEzMzQgNSAzMjkgMTFUMzI0IDIxVDMyMyAzOFEzMjMgNTEgMzI0IDU2VDMzMiA2OFQzNTUgNzdMMjMzIDI5NkwxNTIgMTkyVjc2SDE3MlExOTEgNzYgMTk4IDczUTIxNCA2MyAyMTQgMzhRMjE0IDkgMTkzIDFINDFRMTggOCAxOCAzOFExOCA2MSAzNSA3M1E0MiA3NiA2MSA3Nkg4MVY1MzVINjFRNDIgNTM1IDM1IDUzOFExOCA1NDkgMTggNTczJyxcbiAgICAweDM5QjogJzMwIDM4UTMwIDU3IDM4IDY2VDcwIDc2UTg4IDc2IDg4IDc4UTg5IDc5IDExNyAyMDdUMTczIDQ2NlQyMDUgNjAyUTIxMyA2MTcgMjMxIDYyMkgyMzZRMjQxIDYyMiAyNDkgNjIyVDI2NCA2MjNIMjk0UTMxNSA2MDkgMzE5IDYwMlEzMjEgNTk4IDM1MCA0NjhUNDA3IDIwOFQ0MzUgNzhRNDM2IDc2IDQ1NCA3NlE0NzAgNzYgNDc4IDczUTQ5NSA2MiA0OTUgMzhRNDk1IDEwIDQ3MyAxSDMxM1EyOTAgMTAgMjkwIDM4UTI5MCA1NiAyOTcgNjVUMzEwIDc0VDMzMSA3NlEzNTAgNzYgMzUwIDc4UTM0OSA4MCAzMjggMTc2VDI4NSAzODNUMjYzIDUyMFEyNjMgNTI2IDI2MiA1MjdRMjYxIDUyNyAyNjEgNTIxUTI2MSA0OTcgMjQwIDM4OFQxOTggMTgxVDE3NCA3OFExNzQgNzYgMTkzIDc2UTIyMCA3NSAyMjcgNjVRMjM0IDU2IDIzNCAzOFEyMzQgMjggMjM0IDI0VDIyOCAxM1QyMTIgMUg1MlEzMCA5IDMwIDMyVjM4JyxcbiAgICAweDM5QzogJzUwIDUzNVEzNyA1MzYgMzEgNTM3VDE4IDU0N1QxMiA1NzNRMTIgNTk4IDIyIDYwNFQ2MiA2MTFIOTFIMTIxUTE0NyA2MTEgMTU4IDYwN1QxNzggNTg3UTE4MyA1NzkgMjIyIDQ0NlQyNjEgMjkzUTI2MSAyODkgMjYyIDI4OFEyNjMgMjg4IDI2MyAyOTJRMjYzIDMxMSAyOTggNDM0VDM0NiA1ODhRMzUzIDYwMyAzNjUgNjA3VDQwMiA2MTFINDM1SDQ1MFE0ODggNjExIDUwMCA2MDVUNTEyIDU3M1E1MTIgNTU2IDUwNiA1NDdUNDkzIDUzN1Q0NzQgNTM1SDQ1OVY3Nkg0NzRRNDg3IDc1IDQ5MyA3NFQ1MDUgNjRUNTEyIDM4UTUxMiAxMSA0OTQgM1E0OTAgMSA0MjQgMUgzODZRMzU1IDEgMzQ1IDdUMzM1IDM4UTMzNSA1NSAzNDEgNjRUMzU0IDc0VDM3MyA3NkgzODhWMzAyUTM4OCA1MTIgMzg3IDUxOVEzODIgNDgyIDM0NiAzNTlUMzA0IDIyOFEyOTIgMjA0IDI2MiAyMDRUMjIwIDIyOFEyMTUgMjM3IDE3OSAzNTlUMTM3IDUxOVExMzYgNTEyIDEzNiAzMDJWNzZIMTUxUTE2NCA3NSAxNzAgNzRUMTgyIDY0VDE4OSAzOFExODkgMTEgMTcxIDNRMTY3IDEgMTAxIDFINjNRMzIgMSAyMiA3VDEyIDM4UTEyIDU1IDE4IDY0VDMxIDc0VDUwIDc2SDY1VjUzNUg1MCcsXG4gICAgMHgzOUQ6ICcyMCA1NzFRMjAgNTk4IDMwIDYwNFQ3MyA2MTFIMTA1SDEzNlExNTIgNjExIDE2MCA2MTFUMTc3IDYwN1QxODkgNjAxVDE5OCA1ODdUMjA2IDU2OFQyMTcgNTM3VDIzMSA0OTdRMzU0IDE0MiAzNjUgOTVMMzY4IDg0VjUzNUgzNDdIMzQyUTMxNCA1MzUgMzA2IDU1MlEzMDQgNTU2IDMwNCA1NzNRMzA0IDU4NiAzMDQgNTkwVDMxMCA2MDBUMzI2IDYxMUg0ODJRNDk3IDYwMiA1MDAgNTk2VDUwNCA1NzNRNTA0IDU1OSA1MDEgNTUxVDQ5MSA1NDBUNDc4IDUzNlQ0NjAgNTM1SDQzOVYyNVE0MzIgNyA0MjQgNFQzODkgMEgzNzRRMzM0IDAgMzIyIDMxTDI5MyAxMTVRMTcxIDQ2OCAxNTkgNTE3TDE1NiA1MjhWNzZIMTc3SDE4M1ExOTUgNzYgMjAyIDc1VDIxNSA2NFQyMjEgMzhRMjIxIDEwIDE5OSAxSDQzUTMyIDUgMjcgMTFUMjIgMjFUMjEgMzhWNDRRMjEgNjYgMzcgNzNRNDQgNzYgNjQgNzZIODVWNTM1SDY0UTQ5IDUzNSA0MiA1MzZUMjggNTQ1VDIwIDU3MScsXG4gICAgMHgzOUU6ICczNyA1NTVWNTY5UTM3IDYwNSA2MCA2MTBINjZRNzEgNjEwIDgxIDYxMFQxMDUgNjEwVDEzNyA2MTBUMTc1IDYxMVQyMTcgNjExVDI2NCA2MTFINDY1UTQ2NyA2MDkgNDcxIDYwNlQ0NzcgNjAyVDQ4MSA1OTlUNDg0IDU5NFQ0ODUgNTg4VDQ4NyA1ODBUNDg3IDU3MFQ0ODcgNTU0UTQ4NyA1MjYgNDg2IDUyMFQ0NzggNTA2UTQ3MCA0OTggNDQ1IDQ5OFQ0MTIgNTA2UTQwMyA1MTUgNDAzIDUzMVY1MzlIMTIxVjUzMVExMjEgNDk4IDg2IDQ5OEg3OUg3MVE0OCA0OTggMzkgNTE3UTM3IDUyMiAzNyA1NTVaTTEwOSAzMThWMzQ2UTEwOSAzNjYgMTEzIDM3NFQxMzIgMzg5SDE3MFExOTMgMzc5IDE5MyAzNTlWMzU0SDMzMVYzNTlRMzMxIDM3OSAzNTQgMzg5SDM5MlE0MDcgMzgxIDQxMSAzNzNUNDE1IDM0MlYzMThWMjkwUTQxNSAyNzAgNDExIDI2MlQzOTIgMjQ3SDM1NFEzMzEgMjU3IDMzMSAyNzdWMjgySDE5M1YyNzdRMTkzIDI1NyAxNzAgMjQ3SDEzMlExMTcgMjU1IDExMyAyNjNUMTA5IDI5NFYzMThaTTU2IDFRNDEgNyAzNyAxNVQzMyA0MlY1OFY4MFEzMyAxMDEgNDEgMTEwVDc3IDExOVE4NyAxMTggOTEgMTE4VDEwMyAxMTRUMTE0IDEwM1QxMTcgODNWNzJINDA3VjgzUTQwNyAxMDEgNDE2IDExMFQ0NDkgMTE5VDQ4MiAxMTBRNDg5IDEwMyA0OTAgOTdUNDkxIDU5VjQxUTQ5MSAyNCA0ODcgMTZUNDY5IDFINTYnLFxuICAgIDB4MzlGOiAnMTAyIDU4OFExNDAgNjIxIDI0MCA2MjFRMzIzIDYyMSAzMzUgNjIwUTM5MyA2MTMgNDIyIDU4OFE0NTAgNTYwIDQ1OSA0OTNUNDY4IDMwNlE0NjggMTg1IDQ2MCAxMThUNDIyIDIzUTM4MiAtMTAgMjg5IC0xMEgyNjJIMjM1UTE0MiAtMTAgMTAyIDIzUTc0IDUwIDY1IDExOFQ1NiAzMDZRNTYgNDI3IDY0IDQ5NFQxMDIgNTg4Wk0zNjMgNTEzUTM1NyA1MjMgMzQ3IDUzMFQzMjQgNTQwVDMwMiA1NDRUMjgwIDU0NkgyNjhRMTkyIDU0NiAxNjcgNTIxUTE1MCA1MDEgMTQ1IDQ1MlQxNDAgMzAwUTE0MCAyMzUgMTQyIDE5N1QxNTEgMTMwVDE3MiA4OVQyMDcgNzFUMjYyIDY1UTMxNyA2NSAzNDEgODFUMzc0IDE0NFQzODQgMzAwUTM4NCA0NzQgMzYzIDUxMycsXG4gICAgMHgzQTA6ICc2MCA1MzVRNDUgNTM1IDM4IDUzNlQyNCA1NDVUMTYgNTcxUTE2IDYwMyAzNiA2MDlRNDEgNjExIDI2NCA2MTFINDg2UTUwMSA2MDIgNTA0IDU5NlQ1MDggNTczUTUwOCA1NTkgNTA1IDU1MVQ0OTUgNTQwVDQ4MiA1MzZUNDY0IDUzNUg0NDNWNzZINDY0SDQ3MFE0ODIgNzYgNDg5IDc1VDUwMiA2NFQ1MDggMzhRNTA4IDEwIDQ4NiAxSDMxN1EzMDYgNSAzMDEgMTFUMjk2IDIxVDI5NSAzOFY0NFEyOTUgNjYgMzExIDczUTMxOCA3NiAzMzggNzZIMzU5VjUzNUgxNjVWNzZIMTg2SDE5MlEyMDQgNzYgMjExIDc1VDIyNCA2NFQyMzAgMzhRMjMwIDEwIDIwOCAxSDM5UTI4IDUgMjMgMTFUMTggMjFUMTcgMzhWNDRRMTcgNjYgMzMgNzNRNDAgNzYgNjAgNzZIODFWNTM1SDYwJyxcbiAgICAweDNBMTogJzQxIDFRMTkgOSAxOSAzMlYzOFExOSA2MyAzNiA3M1E0MiA3NiA2NSA3Nkg4OVY1MzVINjVINTVRMzggNTM1IDI5IDU0M1QxOSA1NzZRMTkgNjAzIDQxIDYxMEg0OVE1NyA2MTAgNzAgNjEwVDEwMCA2MTBUMTM2IDYxMVQxNzUgNjExUTE5MCA2MTEgMjE2IDYxMVQyNTUgNjEyUTMyMSA2MTIgMzYzIDU5OFQ0NDEgNTM3UTQ4MCA0ODYgNDgwIDQyN1Y0MjFRNDgwIDM1NCA0NDcgMzExVDM3OCAyNTFRMzM5IDIzMCAyNzUgMjMwSDIzOUgxNzNWNzZIMTk3UTIyMCA3NiAyMjcgNzNRMjQ0IDYyIDI0NCAzOFEyNDQgMTAgMjIyIDFINDFaTTM5NiA0MjFRMzk2IDQ2MSAzNjkgNDkxVDMwMCA1MzNRMjk0IDUzNCAyMzMgNTM1SDE3M1YzMDZIMjMzUTI5NCAzMDcgMzAwIDMwOFEzNDUgMzE5IDM3MCAzNTJUMzk2IDQyMScsXG4gICAgMHgzQTM6ICc0MCA1NzVRNDAgNTc2IDQwIDU3OVQ0MSA1ODNUNDEgNTg4VDQzIDU5M1Q0NiA1OTdUNTAgNjAyVDU1IDYwNlQ2MyA2MTBINjhRNzQgNjEwIDg0IDYxMFQxMDggNjEwVDEzOSA2MTBUMTc2IDYxMVQyMTkgNjExVDI2NCA2MTFINDYyUTQ2NCA2MDkgNDY5IDYwNlQ0NzUgNjAyVDQ3OSA1OThUNDgyIDU5M1Q0ODMgNTg2VDQ4NCA1NzZUNDg0IDU2MlY1MjZWNDg4UTQ4NCA0NTIgNDY2IDQ0NFE0NjIgNDQyIDQ0MiA0NDJRNDE3IDQ0MiA0MDkgNDUwUTQwMiA0NTcgNDAxIDQ2M1Q0MDAgNTAxVjUzNUgxNTNRMTUzIDUzMyAyMTggNDMwUTIzMyA0MDUgMjUwIDM3OFQyNzYgMzM2VDI4NiAzMTlRMjkwIDMxMSAyOTAgMzA3UTI5MCAyOTYgMjM5IDIxMVEyMjkgMTk0IDIyMyAxODRMMTYxIDc4SDQwMFYxMTJRNDAwIDE0MiA0MDEgMTQ5VDQwOSAxNjNRNDE4IDE3MiA0NDIgMTcyUTQ3MyAxNzIgNDgyIDE1MlE0ODQgMTQ3IDQ4NCA4NlY0OVE0ODQgMjUgNDgxIDE3VDQ2MiAxSDYzUTQxIDEwIDQxIDMxUTQxIDM5IDQzIDQ0UTQzIDQ1IDgxIDEwOVQxNTcgMjM4TDE5NSAzMDNRMTk1IDMwNyAxMTkgNDMwVDQxIDU1N1Q0MCA1NzUnLFxuICAgIDB4M0E0OiAnMTI5IDM4UTEyOSA1MSAxMjkgNTVUMTM1IDY1VDE1MSA3NkgyMjBWNTM1SDExMFY1MDFRMTEwIDQ3MCAxMDkgNDY0VDEwMSA0NTBROTMgNDQyIDY4IDQ0Mkg2MFEzNyA0NDIgMjggNDYxUTI2IDQ2NiAyNiA1MjdMMjcgNTg5UTM2IDYwNyA0OSA2MTBINTVRNjEgNjEwIDcyIDYxMFQ5NyA2MTBUMTMxIDYxMFQxNzAgNjExVDIxNSA2MTFUMjY0IDYxMUg0NzZRNDc4IDYwOSA0ODMgNjA2VDQ4OSA2MDJUNDkzIDU5OFQ0OTYgNTkzVDQ5NyA1ODZUNDk4IDU3NlQ0OTggNTYyVjUyNlY0ODhRNDk4IDQ1MiA0ODAgNDQ0UTQ3NiA0NDIgNDU2IDQ0MlE0MzEgNDQyIDQyMyA0NTBRNDE2IDQ1NyA0MTUgNDYzVDQxNCA1MDFWNTM1SDMwNFY3NkgzNzRRMzg5IDY3IDM5MiA2MVQzOTYgMzhRMzk2IDEwIDM3NCAxSDE1MVExNDAgNSAxMzUgMTFUMTMwIDIxVDEyOSAzOCcsXG4gICAgMHgzQTU6ICczOCA0OTRRMzggNTQ5IDc0IDU4NVQxNTIgNjIxUTE2OCA2MjEgMTc5IDYxOVQyMDkgNjA2VDI0MSA1NjZUMjYyIDQ5MlEyNjIgNDk0IDI2NSA1MDdUMjcwIDUyNlQyNzYgNTQ3VDI4NSA1NjlUMjk4IDU4OVQzMTUgNjA2VDMzNyA2MTdUMzY1IDYyMlE0MTYgNjIyIDQ1MSA1ODRUNDg2IDQ5NFE0ODYgNDcwIDQ2OSA0NjFRNDY0IDQ1OSA0NDUgNDU5SDQzN1E0MTYgNDU5IDQwNiA0NzZRNDA0IDQ3OSA0MDMgNTAyVDM5MyA1NDFUMzY1IDU1OFEzNTAgNTU4IDM0MCA1NDhUMzIzIDUxOVQzMTIgNDc1VDMwNyA0MTlUMzA1IDM1NFQzMDQgMjgyUTMwNCAyNTQgMzA0IDIzOVY3NkgzNThRMzcyIDY3IDM3NiA2MFQzODAgMzhRMzgwIDEwIDM1OCAxSDE2N1ExNDUgOSAxNDUgMzJWMzhRMTQ1IDU0IDE0OCA2MFQxNjcgNzZIMjIwVjIzOVEyMjAgMjU2IDIyMCAyODlUMjIwIDMzOFQyMTkgMzgzVDIxNyA0MjZUMjE0IDQ2M1QyMDkgNDk3VDIwMSA1MjJUMTg5IDU0M1QxNzQgNTU1UTE2OCA1NTggMTU5IDU1OFExMzkgNTU4IDEzMSA1NDFUMTIxIDUwMlQxMTggNDc2UTEwOCA0NTkgODQgNDU5SDc5SDcxUTM4IDQ1OSAzOCA0OTQnLFxuICAgIDB4M0E2OiAnMTM5IDU3M1Y1NzhRMTM5IDYwMyAxNjEgNjEwSDE2NlExNzIgNjEwIDE4MiA2MTBUMjA0IDYxMFQyMzIgNjExVDI2NCA2MTFIMzY0UTM3OSA2MDIgMzgyIDU5NVQzODUgNTczUTM4NSA1NDQgMzY0IDUzNkwzMzQgNTM1SDMwNFY0NDFIMzA2UTMxMyA0NDAgMzI1IDQzOFQzNjcgNDI2VDQyMSA0MDNUNDY0IDM2NFQ0ODMgMzA2UTQ4MyAyNTEgNDMwIDIxNlQzMTcgMTcyUTMxNSAxNzIgMzEzIDE3MlQzMDggMTcwSDMwNkgzMDRWNzZIMzY0UTM3OSA2NyAzODIgNjBUMzg1IDM4UTM4NSAyOCAzODUgMjRUMzc5IDEyVDM2NCAxSDE2MVExMzkgOCAxMzkgMzNWMzhRMTM5IDQ2IDEzOSA0OVQxNDEgNThUMTQ4IDY4VDE2MSA3NkgyMjBWMTcwSDIxOFEyMTEgMTcxIDE5OSAxNzNUMTU3IDE4NVQxMDMgMjA4VDYwIDI0OFQ0MSAzMDZRNDEgMzYxIDk0IDM5NlQyMDggNDM5UTIxMCA0MzkgMjEyIDQzOVQyMTYgNDQwTDIxOCA0NDFIMjIwVjUzNUgxOTBMMTYxIDUzNlExMzkgNTQzIDEzOSA1NzNaTTEyNCAzMDZRMTI0IDI4NiAxNDcgMjcxVDE5NCAyNTJMMjE4IDI0N1EyMjAgMjQ3IDIyMCAzMDZWMzY0SDIxOFEyMTIgMzY0IDE5MiAzNTlUMTQ4IDM0MFQxMjQgMzA2Wk00MDAgMzA1UTQwMCAzMjUgMzc3IDM0MFQzMzAgMzYwTDMwNiAzNjRRMzA0IDM2NCAzMDQgMzA2UTMwNCAyNDcgMzA2IDI0N1EzMTIgMjQ3IDMzMiAyNTJUMzc2IDI3MVQ0MDAgMzA1JyxcbiAgICAweDNBNzogJzM5IDU3MVEzOSA1OTcgNDkgNjA0VDkzIDYxMUgxNDFIMjE4UTIzMyA2MDIgMjM2IDU5NVQyMzkgNTczUTIzOSA1MzggMjEwIDUzNVEyMDIgNTM1IDIwMiA1MzRUMjE1IDUwN1QyNDMgNDU0TDI1NyA0MjhMMzA3IDUzNUgyOThRMjY2IDUzOCAyNjYgNTczUTI2NiA1ODQgMjY3IDU4OFQyNzMgNTk4VDI4OSA2MTFIMzY2SDQwMVE0NDIgNjExIDQ1NCA2MDVUNDY2IDU3M1E0NjYgNTQ2IDQ0OCA1MzhRNDQyIDUzNSA0MjEgNTM1SDM5OEwyOTkgMzI3UTI5OSAzMjMgMzYyIDIwMUw0MjYgNzdMNDQ5IDc2UTQ2NyA3NiA0NzUgNzVUNDg5IDY1VDQ5NSAzOFE0OTUgMTEgNDc3IDNRNDczIDEgMzk1IDFIMzE3UTI5NSA4IDI5NSAzOFEyOTUgNzMgMzI1IDc2TDMzNCA3N1EzMzMgNzggMzE0IDExN1QyNzYgMTk2TDI1NyAyMzVMMjM5IDE5NlEyMjEgMTU3IDIwNCAxMThUMTg2IDc3UTE5MCA3NiAxOTYgNzZRMjExIDc0IDIxOCA2N1QyMjcgNTVUMjI4IDM4UTIyOCAyOCAyMjcgMjRUMjIxIDEzVDIwNiAxSDUwUTI4IDkgMjggMzJWMzhRMjggNjMgNDUgNzNRNTEgNzYgNzMgNzZIOTZMMjE0IDMyNFEyMTUgMzI3IDE2MiA0MzFMMTA4IDUzNUg4NUg3OVE2NyA1MzUgNjAgNTM2VDQ2IDU0NlQzOSA1NzEnLFxuICAgIDB4M0E4OiAnMzcgNDM5UTM4IDQ1MSA0MCA0NTdUNTIgNDY5VDc3IDQ3NUg3OVE5NiA0NzUgMTA3IDQ3M1QxMzIgNDU2VDE1MiA0MTFRMTUyIDQwOSAxNTMgMzk2VDE1NCAzNzJWMzY1UTE1NCAyOTEgMTk4IDI2MVEyMTUgMjUxIDIxOSAyNTFRMjIwIDI1MSAyMjAgMzkzVjUzNUgxOTNMMTY3IDUzNlExNDUgNTQ1IDE0NSA1NjdWNTczUTE0NSA2MDIgMTY3IDYxMFExNjggNjExIDI2NCA2MTFIMzU4UTM3MiA2MDIgMzc2IDU5NVQzODAgNTczUTM4MCA1NDUgMzU4IDUzNkwzMzEgNTM1SDMwNFYzOTNRMzA0IDI1MSAzMDUgMjUxUTMwNyAyNTEgMzEwIDI1MlQzMjMgMjU5VDMzOSAyNzJUMzU1IDI5NVQzNjcgMzMxUTM2OCAzMzcgMzcwIDM3MlEzNzAgMzgyIDM3MSAzOTVUMzcyIDQxMVEzNzYgNDM0IDM4NCA0NDhUNDA0IDQ2N1Q0MjUgNDc0VDQ0NyA0NzVRNDYxIDQ3NCA0NjcgNDczVDQ4MCA0NjNUNDg3IDQzN1E0ODcgNDE5IDQ4MSA0MTJRNDc2IDQwMyA0NTkgMzk4UTQ1NyAzOTAgNDUzIDM0NFQ0MzEgMjYzUTQxNSAyMjggMzgzIDIwNVQzMzIgMTc3VDMwNiAxNzJIMzA0Vjc2SDM1OFEzNzIgNjcgMzc2IDYwVDM4MCAzOFEzODAgMTAgMzU4IDFIMTY3UTE0NSA5IDE0NSAzMlYzOFExNDUgNTQgMTQ4IDYwVDE2NyA3NkgyMjBWMTcySDIxOFEyMTEgMTcyIDE5MiAxNzdUMTQxIDIwNVQ5MyAyNjNRNzQgMjk4IDcxIDM0M1Q2NyAzOTFMNjYgMzk4UTQ3IDQwMyA0MiA0MTFUMzcgNDMzVjQzOScsXG4gICAgMHgzQTk6ICc0MCA0MDRRNDAgNDk4IDEwNiA1NjBUMjU4IDYyMlEzNTcgNjIyIDQyMCA1NThUNDg0IDQwNlE0ODQgMzU5IDQ2OSAzMTFUNDI4IDIwNVQzOTIgMTE3UTM4MiA4NCAzODIgNzhRMzgyIDc2IDQwMiA3Nkg0MjFWODdRNDIxIDExMCA0MzEgMTE2VDQ1NyAxMjNRNDc0IDEyMyA0ODMgMTE0UTQ5MCAxMDcgNDkxIDEwMFQ0OTIgNjFWNDJRNDkyIDExIDQ3NCAzUTQ3MCAxIDM5NyAxSDMyNFEzMDIgOSAzMDIgMzJWMzlRMzAyIDEwNCAzNTEgMjI1VDQwMCA0MDVRNDAwIDQ2MiAzNjEgNTA0VDI2MiA1NDZRMjAwIDU0NiAxNjIgNTA0VDEyNCA0MDVRMTI0IDM0NiAxNzEgMjMwVDIyMyA0MlYzNlEyMjMgMTEgMjA1IDNRMjAxIDEgMTI4IDFINTVRMzkgNyAzMyAyM0wzMiA2MFY4MFEzMiA5NCAzNCAxMDJUNDQgMTE2VDY4IDEyM1ExMDMgMTIzIDEwMyA4N1Y3NkgxMjNRMTQyIDc2IDE0MiA3OFExNDIgMTAwIDExNyAxNTZUNjYgMjgyVDQwIDQwNCcsXG4gICAgMHgyMDE3OiAnNTcgLTYwUTU3IC0zMyA4NiAtMjVINDM4UTQ2OCAtMzQgNDY4IC02MFQ0MzggLTk1SDg2UTU3IC04NiA1NyAtNjAnLFxuICAgIDB4MjAzMjogJzIxMSA1NzJRMjExIDU5MyAyMjYgNjA4VDI2MiA2MjNRMjgxIDYyMyAyOTcgNjEwVDMxMyA1NzNRMzEzIDU2MSAzMDcgNDY1UTMwMSAzNzAgMjk5IDM1N1QyODQgMzM2UTI3OSAzMzQgMjYyIDMzNFEyNDAgMzM0IDIzMSAzNDNRMjI2IDM1MCAyMjUgMzYyVDIxNyA0NjVRMjExIDU0OSAyMTEgNTcyJyxcbiAgICAweDIwNDQ6ICc5NCAtODNRNzggLTgzIDY4IC03M1Q1OCAtNDhRNTggLTQ0IDYwIC0zNlE2MiAtMzEgMjI3IDMxNFQzOTkgNjczUTQxMCA2OTQgNDMxIDY5NFE0NDUgNjk0IDQ1NSA2ODRUNDY2IDY1OVE0NjYgNjU2IDQ2NCA2NDhRNDYzIDY0MyAyOTggMjk4VDEyNSAtNjJRMTE0IC04MyA5NCAtODMnLFxuICAgIDB4MjIwNjogJzIzMiA2MjJIMjM3UTI0MiA2MjIgMjQ5IDYyMlQyNjQgNjIzSDI5M1EyOTUgNjIyIDMwMCA2MTlUMzA4IDYxM1QzMTQgNjA4VDMxOSA2MDFRMzIyIDU5NyA0MDUgMzE2VDQ4OSAxOVE0ODkgOSA0NzMgMVE0NzEgMCAyNjIgMFQ1MSAxUTM1IDkgMzUgMTlRMzUgMzQgMTE4IDMxNVQyMDUgNjAxUTIxNCA2MTYgMjMyIDYyMlpNMjY3IDUwMVEyNjYgNTA0IDI2NSA1MTBUMjYzIDUyMVQyNjEgNTI2VjUyM1EyNjEgNTA4IDIxMSAzMzJRMTQyIDkxIDEzOCA4MkgzODZRMzg1IDg0IDM0NSAyMjRRMjgxIDQzOSAyNjcgNTAxJyxcbn0se1xuICAgIDB4MjAzMzogXCJcXHUyMDMyXFx1MjAzMlwiLFxuICAgIDB4MjAzNDogXCJcXHUyMDMyXFx1MjAzMlxcdTIwMzJcIixcbiAgICAweDIwNTc6IFwiXFx1MjAzMlxcdTIwMzJcXHUyMDMyXFx1MjAzMlwiLFxufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NoYXJNYXAsIENoYXJPcHRpb25zfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5cbmV4cG9ydCBjb25zdCBub3JtYWw6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xuICAgIDB4MjA6IFswLCAwLCAuMjVdLFxuICAgIDB4MjE6IFsuNzE2LCAwLCAuMjc4XSxcbiAgICAweDIyOiBbLjY5NCwgLTAuMzc5LCAuNV0sXG4gICAgMHgyMzogWy42OTQsIC4xOTQsIC44MzNdLFxuICAgIDB4MjQ6IFsuNzUsIC4wNTYsIC41XSxcbiAgICAweDI1OiBbLjc1LCAuMDU2LCAuODMzXSxcbiAgICAweDI2OiBbLjcxNiwgLjAyMiwgLjc3OF0sXG4gICAgMHgyNzogWy42OTQsIC0wLjM3OSwgLjI3OF0sXG4gICAgMHgyODogWy43NSwgLjI1LCAuMzg5XSxcbiAgICAweDI5OiBbLjc1LCAuMjUsIC4zODldLFxuICAgIDB4MkE6IFsuNzUsIC0wLjMyLCAuNV0sXG4gICAgMHgyQjogWy41ODMsIC4wODIsIC43NzhdLFxuICAgIDB4MkM6IFsuMTIxLCAuMTk0LCAuMjc4XSxcbiAgICAweDJEOiBbLjI1MiwgLTAuMTc5LCAuMzMzXSxcbiAgICAweDJFOiBbLjEyLCAwLCAuMjc4XSxcbiAgICAweDJGOiBbLjc1LCAuMjUsIC41XSxcbiAgICAweDMwOiBbLjY2NiwgLjAyMiwgLjVdLFxuICAgIDB4MzE6IFsuNjY2LCAwLCAuNV0sXG4gICAgMHgzMjogWy42NjYsIDAsIC41XSxcbiAgICAweDMzOiBbLjY2NSwgLjAyMiwgLjVdLFxuICAgIDB4MzQ6IFsuNjc3LCAwLCAuNV0sXG4gICAgMHgzNTogWy42NjYsIC4wMjIsIC41XSxcbiAgICAweDM2OiBbLjY2NiwgLjAyMiwgLjVdLFxuICAgIDB4Mzc6IFsuNjc2LCAuMDIyLCAuNV0sXG4gICAgMHgzODogWy42NjYsIC4wMjIsIC41XSxcbiAgICAweDM5OiBbLjY2NiwgLjAyMiwgLjVdLFxuICAgIDB4M0E6IFsuNDMsIDAsIC4yNzhdLFxuICAgIDB4M0I6IFsuNDMsIC4xOTQsIC4yNzhdLFxuICAgIDB4M0M6IFsuNTQsIC4wNCwgLjc3OF0sXG4gICAgMHgzRDogWy41ODMsIC4wODIsIC43NzhdLFxuICAgIDB4M0U6IFsuNTQsIC4wNCwgLjc3OF0sXG4gICAgMHgzRjogWy43MDUsIDAsIC40NzJdLFxuICAgIDB4NDA6IFsuNzA1LCAuMDExLCAuNzc4XSxcbiAgICAweDQxOiBbLjcxNiwgMCwgLjc1XSxcbiAgICAweDQyOiBbLjY4MywgMCwgLjcwOF0sXG4gICAgMHg0MzogWy43MDUsIC4wMjEsIC43MjJdLFxuICAgIDB4NDQ6IFsuNjgzLCAwLCAuNzY0XSxcbiAgICAweDQ1OiBbLjY4LCAwLCAuNjgxXSxcbiAgICAweDQ2OiBbLjY4LCAwLCAuNjUzXSxcbiAgICAweDQ3OiBbLjcwNSwgLjAyMiwgLjc4NV0sXG4gICAgMHg0ODogWy42ODMsIDAsIC43NV0sXG4gICAgMHg0OTogWy42ODMsIDAsIC4zNjFdLFxuICAgIDB4NEE6IFsuNjgzLCAuMDIyLCAuNTE0XSxcbiAgICAweDRCOiBbLjY4MywgMCwgLjc3OF0sXG4gICAgMHg0QzogWy42ODMsIDAsIC42MjVdLFxuICAgIDB4NEQ6IFsuNjgzLCAwLCAuOTE3XSxcbiAgICAweDRFOiBbLjY4MywgMCwgLjc1XSxcbiAgICAweDRGOiBbLjcwNSwgLjAyMiwgLjc3OF0sXG4gICAgMHg1MDogWy42ODMsIDAsIC42ODFdLFxuICAgIDB4NTE6IFsuNzA1LCAuMTkzLCAuNzc4XSxcbiAgICAweDUyOiBbLjY4MywgLjAyMiwgLjczNl0sXG4gICAgMHg1MzogWy43MDUsIC4wMjIsIC41NTZdLFxuICAgIDB4NTQ6IFsuNjc3LCAwLCAuNzIyXSxcbiAgICAweDU1OiBbLjY4MywgLjAyMiwgLjc1XSxcbiAgICAweDU2OiBbLjY4MywgLjAyMiwgLjc1XSxcbiAgICAweDU3OiBbLjY4MywgLjAyMiwgMS4wMjhdLFxuICAgIDB4NTg6IFsuNjgzLCAwLCAuNzVdLFxuICAgIDB4NTk6IFsuNjgzLCAwLCAuNzVdLFxuICAgIDB4NUE6IFsuNjgzLCAwLCAuNjExXSxcbiAgICAweDVCOiBbLjc1LCAuMjUsIC4yNzhdLFxuICAgIDB4NUM6IFsuNzUsIC4yNSwgLjVdLFxuICAgIDB4NUQ6IFsuNzUsIC4yNSwgLjI3OF0sXG4gICAgMHg1RTogWy42OTQsIC0wLjUzMSwgLjVdLFxuICAgIDB4NUY6IFstMC4wMjUsIC4wNjIsIC41XSxcbiAgICAweDYwOiBbLjY5OSwgLTAuNTA1LCAuNV0sXG4gICAgMHg2MTogWy40NDgsIC4wMTEsIC41XSxcbiAgICAweDYyOiBbLjY5NCwgLjAxMSwgLjU1Nl0sXG4gICAgMHg2MzogWy40NDgsIC4wMTEsIC40NDRdLFxuICAgIDB4NjQ6IFsuNjk0LCAuMDExLCAuNTU2XSxcbiAgICAweDY1OiBbLjQ0OCwgLjAxMSwgLjQ0NF0sXG4gICAgMHg2NjogWy43MDUsIDAsIC4zMDYsIHtpYzogLjA2Nn1dLFxuICAgIDB4Njc6IFsuNDUzLCAuMjA2LCAuNV0sXG4gICAgMHg2ODogWy42OTQsIDAsIC41NTZdLFxuICAgIDB4Njk6IFsuNjY5LCAwLCAuMjc4XSxcbiAgICAweDZBOiBbLjY2OSwgLjIwNSwgLjMwNl0sXG4gICAgMHg2QjogWy42OTQsIDAsIC41MjhdLFxuICAgIDB4NkM6IFsuNjk0LCAwLCAuMjc4XSxcbiAgICAweDZEOiBbLjQ0MiwgMCwgLjgzM10sXG4gICAgMHg2RTogWy40NDIsIDAsIC41NTZdLFxuICAgIDB4NkY6IFsuNDQ4LCAuMDEsIC41XSxcbiAgICAweDcwOiBbLjQ0MiwgLjE5NCwgLjU1Nl0sXG4gICAgMHg3MTogWy40NDIsIC4xOTQsIC41MjhdLFxuICAgIDB4NzI6IFsuNDQyLCAwLCAuMzkyXSxcbiAgICAweDczOiBbLjQ0OCwgLjAxMSwgLjM5NF0sXG4gICAgMHg3NDogWy42MTUsIC4wMSwgLjM4OV0sXG4gICAgMHg3NTogWy40NDIsIC4wMTEsIC41NTZdLFxuICAgIDB4NzY6IFsuNDMxLCAuMDExLCAuNTI4XSxcbiAgICAweDc3OiBbLjQzMSwgLjAxMSwgLjcyMl0sXG4gICAgMHg3ODogWy40MzEsIDAsIC41MjhdLFxuICAgIDB4Nzk6IFsuNDMxLCAuMjA0LCAuNTI4XSxcbiAgICAweDdBOiBbLjQzMSwgMCwgLjQ0NF0sXG4gICAgMHg3QjogWy43NSwgLjI1LCAuNV0sXG4gICAgMHg3QzogWy43NSwgLjI0OSwgLjI3OF0sXG4gICAgMHg3RDogWy43NSwgLjI1LCAuNV0sXG4gICAgMHg3RTogWy4zMTgsIC0wLjIxNSwgLjVdLFxuICAgIDB4QTA6IFswLCAwLCAuMjVdLFxuICAgIDB4QTM6IFsuNzE0LCAuMDExLCAuNzY5XSxcbiAgICAweEE1OiBbLjY4MywgMCwgLjc1XSxcbiAgICAweEE4OiBbLjY2OSwgLTAuNTU0LCAuNV0sXG4gICAgMHhBQzogWy4zNTYsIC0wLjA4OSwgLjY2N10sXG4gICAgMHhBRTogWy43MDksIC4xNzUsIC45NDddLFxuICAgIDB4QUY6IFsuNTksIC0wLjU0NCwgLjVdLFxuICAgIDB4QjA6IFsuNzE1LCAtMC41NDIsIC41XSxcbiAgICAweEIxOiBbLjY2NiwgMCwgLjc3OF0sXG4gICAgMHhCNDogWy42OTksIC0wLjUwNSwgLjVdLFxuICAgIDB4Qjc6IFsuMzEsIC0wLjE5LCAuMjc4XSxcbiAgICAweEQ3OiBbLjQ5MSwgLTAuMDA5LCAuNzc4XSxcbiAgICAweEYwOiBbLjc0OSwgLjAyMSwgLjU1Nl0sXG4gICAgMHhGNzogWy41MzcsIC4wMzYsIC43NzhdLFxuICAgIDB4MTMxOiBbLjQ0MiwgMCwgLjI3OCwge3NrOiAuMDI3OH1dLFxuICAgIDB4MjM3OiBbLjQ0MiwgLjIwNSwgLjMwNiwge3NrOiAuMDgzM31dLFxuICAgIDB4MkI5OiBbLjU2LCAtMC4wNDMsIC4yNzVdLFxuICAgIDB4MkM2OiBbLjY5NCwgLTAuNTMxLCAuNV0sXG4gICAgMHgyQzc6IFsuNjQ0LCAtMC41MTMsIC41XSxcbiAgICAweDJDOTogWy41OSwgLTAuNTQ0LCAuNV0sXG4gICAgMHgyQ0E6IFsuNjk5LCAtMC41MDUsIC41XSxcbiAgICAweDJDQjogWy42OTksIC0wLjUwNSwgLjVdLFxuICAgIDB4MkQ4OiBbLjY5NCwgLTAuNTE1LCAuNV0sXG4gICAgMHgyRDk6IFsuNjY5LCAtMC41NDksIC41XSxcbiAgICAweDJEQTogWy43MTUsIC0wLjU0MiwgLjVdLFxuICAgIDB4MkRDOiBbLjY2OCwgLTAuNTY1LCAuNV0sXG4gICAgMHgzMDA6IFsuNjk5LCAtMC41MDUsIDBdLFxuICAgIDB4MzAxOiBbLjY5OSwgLTAuNTA1LCAwXSxcbiAgICAweDMwMjogWy42OTQsIC0wLjUzMSwgMF0sXG4gICAgMHgzMDM6IFsuNjY4LCAtMC41NjUsIDBdLFxuICAgIDB4MzA0OiBbLjU5LCAtMC41NDQsIDBdLFxuICAgIDB4MzA2OiBbLjY5NCwgLTAuNTE1LCAwXSxcbiAgICAweDMwNzogWy42NjksIC0wLjU0OSwgMF0sXG4gICAgMHgzMDg6IFsuNjY5LCAtMC41NTQsIDBdLFxuICAgIDB4MzBBOiBbLjcxNSwgLTAuNTQyLCAwXSxcbiAgICAweDMwQjogWy43MDEsIC0wLjUxLCAwXSxcbiAgICAweDMwQzogWy42NDQsIC0wLjUxMywgMF0sXG4gICAgMHgzMzg6IFsuNzE2LCAuMjE1LCAwXSxcbiAgICAweDM5MTogWy43MTYsIDAsIC43NV0sXG4gICAgMHgzOTI6IFsuNjgzLCAwLCAuNzA4XSxcbiAgICAweDM5MzogWy42OCwgMCwgLjYyNV0sXG4gICAgMHgzOTQ6IFsuNzE2LCAwLCAuODMzXSxcbiAgICAweDM5NTogWy42OCwgMCwgLjY4MV0sXG4gICAgMHgzOTY6IFsuNjgzLCAwLCAuNjExXSxcbiAgICAweDM5NzogWy42ODMsIDAsIC43NV0sXG4gICAgMHgzOTg6IFsuNzA1LCAuMDIyLCAuNzc4XSxcbiAgICAweDM5OTogWy42ODMsIDAsIC4zNjFdLFxuICAgIDB4MzlBOiBbLjY4MywgMCwgLjc3OF0sXG4gICAgMHgzOUI6IFsuNzE2LCAwLCAuNjk0XSxcbiAgICAweDM5QzogWy42ODMsIDAsIC45MTddLFxuICAgIDB4MzlEOiBbLjY4MywgMCwgLjc1XSxcbiAgICAweDM5RTogWy42NzcsIDAsIC42NjddLFxuICAgIDB4MzlGOiBbLjcwNSwgLjAyMiwgLjc3OF0sXG4gICAgMHgzQTA6IFsuNjgsIDAsIC43NV0sXG4gICAgMHgzQTE6IFsuNjgzLCAwLCAuNjgxXSxcbiAgICAweDNBMzogWy42ODMsIDAsIC43MjJdLFxuICAgIDB4M0E0OiBbLjY3NywgMCwgLjcyMl0sXG4gICAgMHgzQTU6IFsuNzA1LCAwLCAuNzc4XSxcbiAgICAweDNBNjogWy42ODMsIDAsIC43MjJdLFxuICAgIDB4M0E3OiBbLjY4MywgMCwgLjc1XSxcbiAgICAweDNBODogWy42ODMsIDAsIC43NzhdLFxuICAgIDB4M0E5OiBbLjcwNCwgMCwgLjcyMl0sXG4gICAgMHgyMDAwOiBbMCwgMCwgLjVdLFxuICAgIDB4MjAwMTogWzAsIDAsIDFdLFxuICAgIDB4MjAwMjogWzAsIDAsIC41XSxcbiAgICAweDIwMDM6IFswLCAwLCAxXSxcbiAgICAweDIwMDQ6IFswLCAwLCAuMzMzXSxcbiAgICAweDIwMDU6IFswLCAwLCAuMjVdLFxuICAgIDB4MjAwNjogWzAsIDAsIC4xNjddLFxuICAgIDB4MjAwOTogWzAsIDAsIC4xNjddLFxuICAgIDB4MjAwQTogWzAsIDAsIC4xXSxcbiAgICAweDIwMEI6IFswLCAwLCAwXSxcbiAgICAweDIwMEM6IFswLCAwLCAwXSxcbiAgICAweDIwMTM6IFsuMjg1LCAtMC4yNDgsIC41XSxcbiAgICAweDIwMTQ6IFsuMjg1LCAtMC4yNDgsIDFdLFxuICAgIDB4MjAxNTogWy4yODUsIC0wLjI0OCwgMV0sXG4gICAgMHgyMDE2OiBbLjc1LCAuMjUsIC41XSxcbiAgICAweDIwMTc6IFstMC4wMjUsIC4wNjIsIC41XSxcbiAgICAweDIwMTg6IFsuNjk0LCAtMC4zNzksIC4yNzhdLFxuICAgIDB4MjAxOTogWy42OTQsIC0wLjM3OSwgLjI3OF0sXG4gICAgMHgyMDFDOiBbLjY5NCwgLTAuMzc5LCAuNV0sXG4gICAgMHgyMDFEOiBbLjY5NCwgLTAuMzc5LCAuNV0sXG4gICAgMHgyMDIwOiBbLjcwNSwgLjIxNiwgLjQ0NF0sXG4gICAgMHgyMDIxOiBbLjcwNSwgLjIwNSwgLjQ0NF0sXG4gICAgMHgyMDIyOiBbLjQ0NCwgLTAuMDU1LCAuNV0sXG4gICAgMHgyMDI2OiBbLjEyLCAwLCAxLjE3Ml0sXG4gICAgMHgyMDMyOiBbLjU2LCAtMC4wNDMsIC4yNzVdLFxuICAgIDB4MjAzMzogWy41NiwgMCwgLjU1XSxcbiAgICAweDIwMzQ6IFsuNTYsIDAsIC44MjVdLFxuICAgIDB4MjAzNTogWy41NiwgLTAuMDQzLCAuMjc1XSxcbiAgICAweDIwMzY6IFsuNTYsIDAsIC41NV0sXG4gICAgMHgyMDM3OiBbLjU2LCAwLCAuODI1XSxcbiAgICAweDIwM0U6IFsuNTksIC0wLjU0NCwgLjVdLFxuICAgIDB4MjA0NDogWy43NSwgLjI1LCAuNV0sXG4gICAgMHgyMDU3OiBbLjU2LCAwLCAxLjFdLFxuICAgIDB4MjA2MDogWzAsIDAsIDBdLFxuICAgIDB4MjA2MTogWzAsIDAsIDBdLFxuICAgIDB4MjA2MjogWzAsIDAsIDBdLFxuICAgIDB4MjA2MzogWzAsIDAsIDBdLFxuICAgIDB4MjA2NDogWzAsIDAsIDBdLFxuICAgIDB4MjBENzogWy43MTQsIC0wLjUxNiwgLjVdLFxuICAgIDB4MjEwMjogWy43MDIsIC4wMTksIC43MjJdLFxuICAgIDB4MjEwQjogWy43MTcsIC4wMzYsIC45NjksIHtpYzogLjI3Miwgc2s6IC4zMzN9XSxcbiAgICAweDIxMEM6IFsuNjY2LCAuMTMzLCAuNzJdLFxuICAgIDB4MjEwRDogWy42ODMsIDAsIC43NzhdLFxuICAgIDB4MjEwRTogWy42OTQsIC4wMTEsIC41NzYsIHtzazogLTAuMDI3OH1dLFxuICAgIDB4MjEwRjogWy42OTUsIC4wMTMsIC41NCwge2ljOiAuMDIyfV0sXG4gICAgMHgyMTEwOiBbLjcxNywgLjAxNywgLjgwOSwge2ljOiAuMTM3LCBzazogLjMzM31dLFxuICAgIDB4MjExMTogWy42ODYsIC4wMjYsIC41NTRdLFxuICAgIDB4MjExMjogWy43MTcsIC4wMTcsIC44NzQsIHtpYzogLjE2MSwgc2s6IC4zMDZ9XSxcbiAgICAweDIxMTM6IFsuNzA1LCAuMDIsIC40MTcsIHtzazogLjExMX1dLFxuICAgIDB4MjExNTogWy42ODMsIC4wMiwgLjcyMl0sXG4gICAgMHgyMTE4OiBbLjQ1MywgLjIxNiwgLjYzNiwge3NrOiAuMTExfV0sXG4gICAgMHgyMTE5OiBbLjY4MywgMCwgLjYxMV0sXG4gICAgMHgyMTFBOiBbLjcwMSwgLjE4MSwgLjc3OF0sXG4gICAgMHgyMTFCOiBbLjcxNywgLjAxNywgLjg1LCB7aWM6IC4wMzcsIHNrOiAuMTk0fV0sXG4gICAgMHgyMTFDOiBbLjY4NiwgLjAyNiwgLjgyOF0sXG4gICAgMHgyMTFEOiBbLjY4MywgMCwgLjcyMl0sXG4gICAgMHgyMTI0OiBbLjY4MywgMCwgLjY2N10sXG4gICAgMHgyMTI2OiBbLjcwNCwgMCwgLjcyMl0sXG4gICAgMHgyMTI3OiBbLjY4NCwgLjAyMiwgLjcyMl0sXG4gICAgMHgyMTI4OiBbLjcyOSwgLjEzOSwgLjYwMl0sXG4gICAgMHgyMTJDOiBbLjcwOCwgLjAyOCwgLjkwOCwge2ljOiAuMDIsIHNrOiAuMTk0fV0sXG4gICAgMHgyMTJEOiBbLjY4NSwgLjAyNCwgLjYxM10sXG4gICAgMHgyMTMwOiBbLjcwNywgLjAwOCwgLjU2Miwge2ljOiAuMTU2LCBzazogLjEzOX1dLFxuICAgIDB4MjEzMTogWy43MzUsIC4wMzYsIC44OTUsIHtpYzogLjA5NSwgc2s6IC4yMjJ9XSxcbiAgICAweDIxMzI6IFsuNjk1LCAwLCAuNTU2XSxcbiAgICAweDIxMzM6IFsuNzIxLCAuMDUsIDEuMDgsIHtpYzogLjEzNiwgc2s6IC40NDR9XSxcbiAgICAweDIxMzU6IFsuNjk0LCAwLCAuNjExXSxcbiAgICAweDIxMzY6IFsuNzYzLCAuMDIxLCAuNjY3LCB7aWM6IC4wMn1dLFxuICAgIDB4MjEzNzogWy43NjQsIC4wNDMsIC40NDRdLFxuICAgIDB4MjEzODogWy43NjQsIC4wNDMsIC42NjddLFxuICAgIDB4MjE0MTogWy43MDUsIC4wMjMsIC42MzldLFxuICAgIDB4MjE5MDogWy41MTEsIC4wMTEsIDFdLFxuICAgIDB4MjE5MTogWy42OTQsIC4xOTMsIC41XSxcbiAgICAweDIxOTI6IFsuNTExLCAuMDExLCAxXSxcbiAgICAweDIxOTM6IFsuNjk0LCAuMTk0LCAuNV0sXG4gICAgMHgyMTk0OiBbLjUxMSwgLjAxMSwgMV0sXG4gICAgMHgyMTk1OiBbLjc3MiwgLjI3MiwgLjVdLFxuICAgIDB4MjE5NjogWy43MiwgLjE5NSwgMV0sXG4gICAgMHgyMTk3OiBbLjcyLCAuMTk1LCAxXSxcbiAgICAweDIxOTg6IFsuNjk1LCAuMjIsIDFdLFxuICAgIDB4MjE5OTogWy42OTUsIC4yMiwgMV0sXG4gICAgMHgyMTlBOiBbLjQzNywgLTAuMDYsIDFdLFxuICAgIDB4MjE5QjogWy40MzcsIC0wLjA2LCAxXSxcbiAgICAweDIxOUU6IFsuNDE3LCAtMC4wODMsIDFdLFxuICAgIDB4MjFBMDogWy40MTcsIC0wLjA4MywgMV0sXG4gICAgMHgyMUEyOiBbLjQxNywgLTAuMDgzLCAxLjExMV0sXG4gICAgMHgyMUEzOiBbLjQxNywgLTAuMDgzLCAxLjExMV0sXG4gICAgMHgyMUE2OiBbLjUxMSwgLjAxMSwgMV0sXG4gICAgMHgyMUE5OiBbLjUxMSwgLjAxMSwgMS4xMjZdLFxuICAgIDB4MjFBQTogWy41MTEsIC4wMTEsIDEuMTI2XSxcbiAgICAweDIxQUI6IFsuNTc1LCAuMDQxLCAxXSxcbiAgICAweDIxQUM6IFsuNTc1LCAuMDQxLCAxXSxcbiAgICAweDIxQUQ6IFsuNDE3LCAtMC4wODMsIDEuMzg5XSxcbiAgICAweDIxQUU6IFsuNDM3LCAtMC4wNiwgMV0sXG4gICAgMHgyMUIwOiBbLjcyMiwgMCwgLjVdLFxuICAgIDB4MjFCMTogWy43MjIsIDAsIC41XSxcbiAgICAweDIxQjY6IFsuNDYxLCAwLCAxXSxcbiAgICAweDIxQjc6IFsuNDYsIDAsIDFdLFxuICAgIDB4MjFCQTogWy42NSwgLjA4MywgLjc3OF0sXG4gICAgMHgyMUJCOiBbLjY1LCAuMDgzLCAuNzc4XSxcbiAgICAweDIxQkM6IFsuNTExLCAtMC4yMywgMV0sXG4gICAgMHgyMUJEOiBbLjI3LCAuMDExLCAxXSxcbiAgICAweDIxQkU6IFsuNjk0LCAuMTk0LCAuNDE3XSxcbiAgICAweDIxQkY6IFsuNjk0LCAuMTk0LCAuNDE3XSxcbiAgICAweDIxQzA6IFsuNTExLCAtMC4yMywgMV0sXG4gICAgMHgyMUMxOiBbLjI3LCAuMDExLCAxXSxcbiAgICAweDIxQzI6IFsuNjk0LCAuMTk0LCAuNDE3XSxcbiAgICAweDIxQzM6IFsuNjk0LCAuMTk0LCAuNDE3XSxcbiAgICAweDIxQzQ6IFsuNjY3LCAwLCAxXSxcbiAgICAweDIxQzY6IFsuNjY3LCAwLCAxXSxcbiAgICAweDIxQzc6IFsuNTgzLCAuMDgzLCAxXSxcbiAgICAweDIxQzg6IFsuNjk0LCAuMTkzLCAuODMzXSxcbiAgICAweDIxQzk6IFsuNTgzLCAuMDgzLCAxXSxcbiAgICAweDIxQ0E6IFsuNjk0LCAuMTk0LCAuODMzXSxcbiAgICAweDIxQ0I6IFsuNTE0LCAuMDE0LCAxXSxcbiAgICAweDIxQ0M6IFsuNjcxLCAuMDExLCAxXSxcbiAgICAweDIxQ0Q6IFsuNTM0LCAuMDM1LCAxXSxcbiAgICAweDIxQ0U6IFsuNTM0LCAuMDM3LCAxXSxcbiAgICAweDIxQ0Y6IFsuNTM0LCAuMDM1LCAxXSxcbiAgICAweDIxRDA6IFsuNTI1LCAuMDI0LCAxXSxcbiAgICAweDIxRDE6IFsuNjk0LCAuMTk0LCAuNjExXSxcbiAgICAweDIxRDI6IFsuNTI1LCAuMDI0LCAxXSxcbiAgICAweDIxRDM6IFsuNjk0LCAuMTk0LCAuNjExXSxcbiAgICAweDIxRDQ6IFsuNTI2LCAuMDI1LCAxXSxcbiAgICAweDIxRDU6IFsuNzcyLCAuMjcyLCAuNjExXSxcbiAgICAweDIxREE6IFsuNjExLCAuMTExLCAxXSxcbiAgICAweDIxREI6IFsuNjExLCAuMTExLCAxXSxcbiAgICAweDIxREQ6IFsuNDE3LCAtMC4wODMsIDFdLFxuICAgIDB4MjFFMDogWy40MzcsIC0wLjA2NCwgMS4zMzRdLFxuICAgIDB4MjFFMjogWy40MzcsIC0wLjA2NCwgMS4zMzRdLFxuICAgIDB4MjIwMDogWy42OTQsIC4wMjIsIC41NTZdLFxuICAgIDB4MjIwMTogWy44NDYsIC4wMjEsIC41XSxcbiAgICAweDIyMDI6IFsuNzE1LCAuMDIyLCAuNTMxLCB7aWM6IC4wMzUsIHNrOiAuMDgzM31dLFxuICAgIDB4MjIwMzogWy42OTQsIDAsIC41NTZdLFxuICAgIDB4MjIwNDogWy43MTYsIC4yMTUsIC41NTZdLFxuICAgIDB4MjIwNTogWy43NzIsIC4wNzgsIC41XSxcbiAgICAweDIyMDY6IFsuNzE2LCAwLCAuODMzXSxcbiAgICAweDIyMDc6IFsuNjgzLCAuMDMzLCAuODMzXSxcbiAgICAweDIyMDg6IFsuNTQsIC4wNCwgLjY2N10sXG4gICAgMHgyMjA5OiBbLjcxNiwgLjIxNSwgLjY2N10sXG4gICAgMHgyMjBCOiBbLjU0LCAuMDQsIC42NjddLFxuICAgIDB4MjIwQzogWy43MTYsIC4yMTUsIC42NjddLFxuICAgIDB4MjIwRDogWy40NCwgMCwgLjQyOSwge2ljOiAuMDI3fV0sXG4gICAgMHgyMjBGOiBbLjc1LCAuMjUsIC45NDRdLFxuICAgIDB4MjIxMDogWy43NSwgLjI1LCAuOTQ0XSxcbiAgICAweDIyMTE6IFsuNzUsIC4yNSwgMS4wNTZdLFxuICAgIDB4MjIxMjogWy41ODMsIC4wODIsIC43NzhdLFxuICAgIDB4MjIxMzogWy41LCAuMTY2LCAuNzc4XSxcbiAgICAweDIyMTQ6IFsuNzY2LCAuMDkzLCAuNzc4XSxcbiAgICAweDIyMTU6IFsuNzUsIC4yNSwgLjVdLFxuICAgIDB4MjIxNjogWy43NSwgLjI1LCAuNV0sXG4gICAgMHgyMjE3OiBbLjQ2NSwgLTAuMDM1LCAuNV0sXG4gICAgMHgyMjE4OiBbLjQ0NCwgLTAuMDU1LCAuNV0sXG4gICAgMHgyMjE5OiBbLjQ0NCwgLTAuMDU1LCAuNV0sXG4gICAgMHgyMjFBOiBbLjgsIC4yLCAuODMzLCB7aWM6IC4wMn1dLFxuICAgIDB4MjIxRDogWy40NDIsIC4wMTEsIC43NzhdLFxuICAgIDB4MjIxRTogWy40NDIsIC4wMTEsIDFdLFxuICAgIDB4MjIyMDogWy42OTQsIDAsIC43MjJdLFxuICAgIDB4MjIyMTogWy43MTQsIC4wMiwgLjcyMl0sXG4gICAgMHgyMjIyOiBbLjU1MSwgLjA1MSwgLjcyMl0sXG4gICAgMHgyMjIzOiBbLjc1LCAuMjQ5LCAuMjc4XSxcbiAgICAweDIyMjQ6IFsuNzUsIC4yNTIsIC4yNzgsIHtpYzogLjAxOX1dLFxuICAgIDB4MjIyNTogWy43NSwgLjI1LCAuNV0sXG4gICAgMHgyMjI2OiBbLjc1LCAuMjUsIC41LCB7aWM6IC4wMTh9XSxcbiAgICAweDIyMjc6IFsuNTk4LCAuMDIyLCAuNjY3XSxcbiAgICAweDIyMjg6IFsuNTk4LCAuMDIyLCAuNjY3XSxcbiAgICAweDIyMjk6IFsuNTk4LCAuMDIyLCAuNjY3XSxcbiAgICAweDIyMkE6IFsuNTk4LCAuMDIyLCAuNjY3XSxcbiAgICAweDIyMkI6IFsuNzE2LCAuMjE2LCAuNDE3LCB7aWM6IC4wNTV9XSxcbiAgICAweDIyMkM6IFsuODA1LCAuMzA2LCAuODE5LCB7aWM6IC4xMzh9XSxcbiAgICAweDIyMkQ6IFsuODA1LCAuMzA2LCAxLjE2Niwge2ljOiAuMTM4fV0sXG4gICAgMHgyMjJFOiBbLjgwNSwgLjMwNiwgLjQ3Miwge2ljOiAuMTM4fV0sXG4gICAgMHgyMjM0OiBbLjQ3MSwgLjA4MiwgLjY2N10sXG4gICAgMHgyMjM1OiBbLjQ3MSwgLjA4MiwgLjY2N10sXG4gICAgMHgyMjNDOiBbLjM2NywgLTAuMTMzLCAuNzc4XSxcbiAgICAweDIyM0Q6IFsuMzY3LCAtMC4xMzMsIC43NzhdLFxuICAgIDB4MjI0MDogWy41ODMsIC4wODMsIC4yNzhdLFxuICAgIDB4MjI0MTogWy40NjcsIC0wLjAzMiwgLjc3OF0sXG4gICAgMHgyMjQyOiBbLjQ2MywgLTAuMDM0LCAuNzc4XSxcbiAgICAweDIyNDM6IFsuNDY0LCAtMC4wMzYsIC43NzhdLFxuICAgIDB4MjI0NDogWy43MTYsIC4yMTUsIC43NzhdLFxuICAgIDB4MjI0NTogWy41ODksIC0wLjAyMiwgLjc3OF0sXG4gICAgMHgyMjQ3OiBbLjY1MiwgLjE1NSwgLjc3OF0sXG4gICAgMHgyMjQ4OiBbLjQ4MywgLTAuMDU1LCAuNzc4XSxcbiAgICAweDIyNDk6IFsuNzE2LCAuMjE1LCAuNzc4XSxcbiAgICAweDIyNEE6IFsuNTc5LCAuMDM5LCAuNzc4XSxcbiAgICAweDIyNEQ6IFsuNDg0LCAtMC4wMTYsIC43NzhdLFxuICAgIDB4MjI0RTogWy40OTIsIC0wLjAwOCwgLjc3OF0sXG4gICAgMHgyMjRGOiBbLjQ5MiwgLTAuMTMzLCAuNzc4XSxcbiAgICAweDIyNTA6IFsuNjcsIC0wLjEzMywgLjc3OF0sXG4gICAgMHgyMjUxOiBbLjYwOSwgLjEwOCwgLjc3OF0sXG4gICAgMHgyMjUyOiBbLjYwMSwgLjEwMSwgLjc3OF0sXG4gICAgMHgyMjUzOiBbLjYwMSwgLjEwMiwgLjc3OF0sXG4gICAgMHgyMjU2OiBbLjM2NywgLTAuMTMzLCAuNzc4XSxcbiAgICAweDIyNTc6IFsuNzIxLCAtMC4xMzMsIC43NzhdLFxuICAgIDB4MjI1QzogWy44NTksIC0wLjEzMywgLjc3OF0sXG4gICAgMHgyMjYwOiBbLjcxNiwgLjIxNSwgLjc3OF0sXG4gICAgMHgyMjYxOiBbLjQ2NCwgLTAuMDM2LCAuNzc4XSxcbiAgICAweDIyNjI6IFsuNzE2LCAuMjE1LCAuNzc4XSxcbiAgICAweDIyNjQ6IFsuNjM2LCAuMTM4LCAuNzc4XSxcbiAgICAweDIyNjU6IFsuNjM2LCAuMTM4LCAuNzc4XSxcbiAgICAweDIyNjY6IFsuNzUzLCAuMTc1LCAuNzc4XSxcbiAgICAweDIyNjc6IFsuNzUzLCAuMTc1LCAuNzc4XSxcbiAgICAweDIyNjg6IFsuNzUyLCAuMjg2LCAuNzc4XSxcbiAgICAweDIyNjk6IFsuNzUyLCAuMjg2LCAuNzc4XSxcbiAgICAweDIyNkE6IFsuNTY4LCAuMDY3LCAxXSxcbiAgICAweDIyNkI6IFsuNTY3LCAuMDY3LCAxXSxcbiAgICAweDIyNkM6IFsuNzUsIC4yNSwgLjVdLFxuICAgIDB4MjI2RDogWy43MTYsIC4yMTUsIC43NzhdLFxuICAgIDB4MjI2RTogWy43MDgsIC4yMDksIC43NzhdLFxuICAgIDB4MjI2RjogWy43MDgsIC4yMDksIC43NzhdLFxuICAgIDB4MjI3MDogWy44MDEsIC4zMDMsIC43NzhdLFxuICAgIDB4MjI3MTogWy44MDEsIC4zMDMsIC43NzhdLFxuICAgIDB4MjI3MjogWy43MzIsIC4yMjgsIC43NzhdLFxuICAgIDB4MjI3MzogWy43MzIsIC4yMjgsIC43NzhdLFxuICAgIDB4MjI3NDogWy43MzIsIC4yMjgsIC43NzhdLFxuICAgIDB4MjI3NTogWy43MzIsIC4yMjgsIC43NzhdLFxuICAgIDB4MjI3NjogWy42ODEsIC4yNTMsIC43NzhdLFxuICAgIDB4MjI3NzogWy42ODEsIC4yNTMsIC43NzhdLFxuICAgIDB4MjI3ODogWy43MTYsIC4yNTMsIC43NzhdLFxuICAgIDB4MjI3OTogWy43MTYsIC4yNTMsIC43NzhdLFxuICAgIDB4MjI3QTogWy41MzksIC4wNDEsIC43NzhdLFxuICAgIDB4MjI3QjogWy41MzksIC4wNDEsIC43NzhdLFxuICAgIDB4MjI3QzogWy41OCwgLjE1MywgLjc3OF0sXG4gICAgMHgyMjdEOiBbLjU4LCAuMTU0LCAuNzc4XSxcbiAgICAweDIyN0U6IFsuNzMyLCAuMjI4LCAuNzc4XSxcbiAgICAweDIyN0Y6IFsuNzMyLCAuMjI4LCAuNzc4XSxcbiAgICAweDIyODA6IFsuNzA1LCAuMjA4LCAuNzc4XSxcbiAgICAweDIyODE6IFsuNzA1LCAuMjA4LCAuNzc4XSxcbiAgICAweDIyODI6IFsuNTQsIC4wNCwgLjc3OF0sXG4gICAgMHgyMjgzOiBbLjU0LCAuMDQsIC43NzhdLFxuICAgIDB4MjI4NDogWy43MTYsIC4yMTUsIC43NzhdLFxuICAgIDB4MjI4NTogWy43MTYsIC4yMTUsIC43NzhdLFxuICAgIDB4MjI4NjogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MjI4NzogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MjI4ODogWy44MDEsIC4zMDMsIC43NzhdLFxuICAgIDB4MjI4OTogWy44MDEsIC4zMDMsIC43NzhdLFxuICAgIDB4MjI4QTogWy42MzUsIC4yNDEsIC43NzhdLFxuICAgIDB4MjI4QjogWy42MzUsIC4yNDEsIC43NzhdLFxuICAgIDB4MjI4RTogWy41OTgsIC4wMjIsIC42NjddLFxuICAgIDB4MjI4RjogWy41MzksIC4wNDEsIC43NzhdLFxuICAgIDB4MjI5MDogWy41MzksIC4wNDEsIC43NzhdLFxuICAgIDB4MjI5MTogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MjI5MjogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MjI5MzogWy41OTgsIDAsIC42NjddLFxuICAgIDB4MjI5NDogWy41OTgsIDAsIC42NjddLFxuICAgIDB4MjI5NTogWy41ODMsIC4wODMsIC43NzhdLFxuICAgIDB4MjI5NjogWy41ODMsIC4wODMsIC43NzhdLFxuICAgIDB4MjI5NzogWy41ODMsIC4wODMsIC43NzhdLFxuICAgIDB4MjI5ODogWy41ODMsIC4wODMsIC43NzhdLFxuICAgIDB4MjI5OTogWy41ODMsIC4wODMsIC43NzhdLFxuICAgIDB4MjI5QTogWy41ODIsIC4wODIsIC43NzhdLFxuICAgIDB4MjI5QjogWy41ODIsIC4wODIsIC43NzhdLFxuICAgIDB4MjI5RDogWy41ODIsIC4wODIsIC43NzhdLFxuICAgIDB4MjI5RTogWy42ODksIDAsIC43NzhdLFxuICAgIDB4MjI5RjogWy42ODksIDAsIC43NzhdLFxuICAgIDB4MjJBMDogWy42ODksIDAsIC43NzhdLFxuICAgIDB4MjJBMTogWy42ODksIDAsIC43NzhdLFxuICAgIDB4MjJBMjogWy42OTQsIDAsIC42MTFdLFxuICAgIDB4MjJBMzogWy42OTQsIDAsIC42MTFdLFxuICAgIDB4MjJBNDogWy42NjgsIDAsIC43NzhdLFxuICAgIDB4MjJBNTogWy42NjgsIDAsIC43NzhdLFxuICAgIDB4MjJBODogWy43NSwgLjI0OSwgLjg2N10sXG4gICAgMHgyMkE5OiBbLjY5NCwgMCwgLjcyMl0sXG4gICAgMHgyMkFBOiBbLjY5NCwgMCwgLjg4OV0sXG4gICAgMHgyMkFDOiBbLjY5NSwgMCwgLjYxMV0sXG4gICAgMHgyMkFEOiBbLjY5NSwgMCwgLjYxMV0sXG4gICAgMHgyMkFFOiBbLjY5NSwgMCwgLjcyMl0sXG4gICAgMHgyMkFGOiBbLjY5NSwgMCwgLjcyMl0sXG4gICAgMHgyMkIyOiBbLjUzOSwgLjA0MSwgLjc3OF0sXG4gICAgMHgyMkIzOiBbLjUzOSwgLjA0MSwgLjc3OF0sXG4gICAgMHgyMkI0OiBbLjYzNiwgLjEzOCwgLjc3OF0sXG4gICAgMHgyMkI1OiBbLjYzNiwgLjEzOCwgLjc3OF0sXG4gICAgMHgyMkI4OiBbLjQwOCwgLTAuMDkyLCAxLjExMV0sXG4gICAgMHgyMkJBOiBbLjQzMSwgLjIxMiwgLjU1Nl0sXG4gICAgMHgyMkJCOiBbLjcxNiwgMCwgLjYxMV0sXG4gICAgMHgyMkJDOiBbLjcxNiwgMCwgLjYxMV0sXG4gICAgMHgyMkMwOiBbLjc1LCAuMjQ5LCAuODMzXSxcbiAgICAweDIyQzE6IFsuNzUsIC4yNDksIC44MzNdLFxuICAgIDB4MjJDMjogWy43NSwgLjI0OSwgLjgzM10sXG4gICAgMHgyMkMzOiBbLjc1LCAuMjQ5LCAuODMzXSxcbiAgICAweDIyQzQ6IFsuNDg4LCAtMC4wMTIsIC41XSxcbiAgICAweDIyQzU6IFsuMzEsIC0wLjE5LCAuMjc4XSxcbiAgICAweDIyQzY6IFsuNDg2LCAtMC4wMTYsIC41XSxcbiAgICAweDIyQzc6IFsuNTQ1LCAuMDQ0LCAuNzc4XSxcbiAgICAweDIyQzg6IFsuNTA1LCAuMDA1LCAuOV0sXG4gICAgMHgyMkM5OiBbLjQ5MiwgLTAuMDA4LCAuNzc4XSxcbiAgICAweDIyQ0E6IFsuNDkyLCAtMC4wMDgsIC43NzhdLFxuICAgIDB4MjJDQjogWy42OTQsIC4wMjIsIC43NzhdLFxuICAgIDB4MjJDQzogWy42OTQsIC4wMjIsIC43NzhdLFxuICAgIDB4MjJDRDogWy40NjQsIC0wLjAzNiwgLjc3OF0sXG4gICAgMHgyMkNFOiBbLjU3OCwgLjAyMSwgLjc2XSxcbiAgICAweDIyQ0Y6IFsuNTc4LCAuMDIyLCAuNzZdLFxuICAgIDB4MjJEMDogWy41NCwgLjA0LCAuNzc4XSxcbiAgICAweDIyRDE6IFsuNTQsIC4wNCwgLjc3OF0sXG4gICAgMHgyMkQyOiBbLjU5OCwgLjAyMiwgLjY2N10sXG4gICAgMHgyMkQzOiBbLjU5OCwgLjAyMiwgLjY2N10sXG4gICAgMHgyMkQ0OiBbLjczNiwgLjAyMiwgLjY2N10sXG4gICAgMHgyMkQ2OiBbLjU0MSwgLjA0MSwgLjc3OF0sXG4gICAgMHgyMkQ3OiBbLjU0MSwgLjA0MSwgLjc3OF0sXG4gICAgMHgyMkQ4OiBbLjU2OCwgLjA2NywgMS4zMzNdLFxuICAgIDB4MjJEOTogWy41NjgsIC4wNjcsIDEuMzMzXSxcbiAgICAweDIyREE6IFsuODg2LCAuMzg2LCAuNzc4XSxcbiAgICAweDIyREI6IFsuODg2LCAuMzg2LCAuNzc4XSxcbiAgICAweDIyREU6IFsuNzM0LCAwLCAuNzc4XSxcbiAgICAweDIyREY6IFsuNzM0LCAwLCAuNzc4XSxcbiAgICAweDIyRTA6IFsuODAxLCAuMzAzLCAuNzc4XSxcbiAgICAweDIyRTE6IFsuODAxLCAuMzAzLCAuNzc4XSxcbiAgICAweDIyRTI6IFsuNzE2LCAuMjE1LCAuNzc4XSxcbiAgICAweDIyRTM6IFsuNzE2LCAuMjE1LCAuNzc4XSxcbiAgICAweDIyRTY6IFsuNzMsIC4zNTksIC43NzhdLFxuICAgIDB4MjJFNzogWy43MywgLjM1OSwgLjc3OF0sXG4gICAgMHgyMkU4OiBbLjczLCAuMzU5LCAuNzc4XSxcbiAgICAweDIyRTk6IFsuNzMsIC4zNTksIC43NzhdLFxuICAgIDB4MjJFQTogWy43MDYsIC4yMDgsIC43NzhdLFxuICAgIDB4MjJFQjogWy43MDYsIC4yMDgsIC43NzhdLFxuICAgIDB4MjJFQzogWy44MDIsIC4zMDMsIC43NzhdLFxuICAgIDB4MjJFRDogWy44MDEsIC4zMDMsIC43NzhdLFxuICAgIDB4MjJFRTogWzEuMywgLjAzLCAuMjc4XSxcbiAgICAweDIyRUY6IFsuMzEsIC0wLjE5LCAxLjE3Ml0sXG4gICAgMHgyMkYxOiBbMS41MiwgLTAuMSwgMS4yODJdLFxuICAgIDB4MjMwNTogWy43MTYsIDAsIC42MTFdLFxuICAgIDB4MjMwNjogWy44MTMsIC4wOTcsIC42MTFdLFxuICAgIDB4MjMwODogWy43NSwgLjI1LCAuNDQ0XSxcbiAgICAweDIzMDk6IFsuNzUsIC4yNSwgLjQ0NF0sXG4gICAgMHgyMzBBOiBbLjc1LCAuMjUsIC40NDRdLFxuICAgIDB4MjMwQjogWy43NSwgLjI1LCAuNDQ0XSxcbiAgICAweDIzMUM6IFsuNjk0LCAtMC4zMDYsIC41XSxcbiAgICAweDIzMUQ6IFsuNjk0LCAtMC4zMDYsIC41XSxcbiAgICAweDIzMUU6IFsuMzY2LCAuMDIyLCAuNV0sXG4gICAgMHgyMzFGOiBbLjM2NiwgLjAyMiwgLjVdLFxuICAgIDB4MjMyMjogWy4zODgsIC0wLjEyMiwgMV0sXG4gICAgMHgyMzIzOiBbLjM3OCwgLTAuMTM0LCAxXSxcbiAgICAweDIzMjk6IFsuNzUsIC4yNSwgLjM4OV0sXG4gICAgMHgyMzJBOiBbLjc1LCAuMjUsIC4zODldLFxuICAgIDB4MjNCMDogWy43NDQsIC4yNDQsIC40MTJdLFxuICAgIDB4MjNCMTogWy43NDQsIC4yNDQsIC40MTJdLFxuICAgIDB4MjNEMDogWy42MDIsIDAsIC42NjddLFxuICAgIDB4MjRDODogWy43MDksIC4xNzUsIC45MDJdLFxuICAgIDB4MjUwQzogWy42OTQsIC0wLjMwNiwgLjVdLFxuICAgIDB4MjUxMDogWy42OTQsIC0wLjMwNiwgLjVdLFxuICAgIDB4MjUxNDogWy4zNjYsIC4wMjIsIC41XSxcbiAgICAweDI1MTg6IFsuMzY2LCAuMDIyLCAuNV0sXG4gICAgMHgyNTcxOiBbLjY5NCwgLjE5NSwgLjg4OV0sXG4gICAgMHgyNTcyOiBbLjY5NCwgLjE5NSwgLjg4OV0sXG4gICAgMHgyNUEwOiBbLjY4OSwgMCwgLjc3OF0sXG4gICAgMHgyNUExOiBbLjY4OSwgMCwgLjc3OF0sXG4gICAgMHgyNUFBOiBbLjY4OSwgMCwgLjc3OF0sXG4gICAgMHgyNUIyOiBbLjU3NSwgLjAyLCAuNzIyXSxcbiAgICAweDI1QjM6IFsuNzE2LCAwLCAuODg5XSxcbiAgICAweDI1QjQ6IFsuNTc1LCAuMDIsIC43MjJdLFxuICAgIDB4MjVCNTogWy43MTYsIDAsIC44ODldLFxuICAgIDB4MjVCNjogWy41MzksIC4wNDEsIC43NzhdLFxuICAgIDB4MjVCODogWy41MzksIC4wNDEsIC43NzhdLFxuICAgIDB4MjVCOTogWy41MDUsIC4wMDUsIC41XSxcbiAgICAweDI1QkM6IFsuNTc2LCAuMDE5LCAuNzIyXSxcbiAgICAweDI1QkQ6IFsuNSwgLjIxNSwgLjg4OV0sXG4gICAgMHgyNUJFOiBbLjU3NiwgLjAxOSwgLjcyMl0sXG4gICAgMHgyNUJGOiBbLjUsIC4yMTUsIC44ODldLFxuICAgIDB4MjVDMDogWy41MzksIC4wNDEsIC43NzhdLFxuICAgIDB4MjVDMjogWy41MzksIC4wNDEsIC43NzhdLFxuICAgIDB4MjVDMzogWy41MDUsIC4wMDUsIC41XSxcbiAgICAweDI1Q0E6IFsuNzE2LCAuMTMyLCAuNjY3XSxcbiAgICAweDI1RUY6IFsuNzE1LCAuMjE1LCAxXSxcbiAgICAweDI1RkI6IFsuNjg5LCAwLCAuNzc4XSxcbiAgICAweDI1RkM6IFsuNjg5LCAwLCAuNzc4XSxcbiAgICAweDI2MDU6IFsuNjk0LCAuMTExLCAuOTQ0XSxcbiAgICAweDI2NjA6IFsuNzI3LCAuMTMsIC43NzhdLFxuICAgIDB4MjY2MTogWy43MTYsIC4wMzMsIC43NzhdLFxuICAgIDB4MjY2MjogWy43MjcsIC4xNjIsIC43NzhdLFxuICAgIDB4MjY2MzogWy43MjYsIC4xMywgLjc3OF0sXG4gICAgMHgyNjZEOiBbLjc1LCAuMDIyLCAuMzg5XSxcbiAgICAweDI2NkU6IFsuNzM0LCAuMjIzLCAuMzg5XSxcbiAgICAweDI2NkY6IFsuNzIzLCAuMjIzLCAuMzg5XSxcbiAgICAweDI3MTM6IFsuNzA2LCAuMDM0LCAuODMzXSxcbiAgICAweDI3MjA6IFsuNzE2LCAuMDIyLCAuODMzXSxcbiAgICAweDI3NTg6IFsuNzUsIC4yNDksIC4yNzhdLFxuICAgIDB4MjdFODogWy43NSwgLjI1LCAuMzg5XSxcbiAgICAweDI3RTk6IFsuNzUsIC4yNSwgLjM4OV0sXG4gICAgMHgyN0VFOiBbLjc0NCwgLjI0NCwgLjQxMl0sXG4gICAgMHgyN0VGOiBbLjc0NCwgLjI0NCwgLjQxMl0sXG4gICAgMHgyN0Y1OiBbLjUxMSwgLjAxMSwgMS42MDldLFxuICAgIDB4MjdGNjogWy41MTEsIC4wMTEsIDEuNjM4XSxcbiAgICAweDI3Rjc6IFsuNTExLCAuMDExLCAxLjg1OV0sXG4gICAgMHgyN0Y4OiBbLjUyNSwgLjAyNCwgMS42MDldLFxuICAgIDB4MjdGOTogWy41MjUsIC4wMjQsIDEuNjM4XSxcbiAgICAweDI3RkE6IFsuNTI1LCAuMDI0LCAxLjg1OF0sXG4gICAgMHgyN0ZDOiBbLjUxMSwgLjAxMSwgMS42MzhdLFxuICAgIDB4MjlFQjogWy43MTYsIC4xMzIsIC42NjddLFxuICAgIDB4MjlGODogWy43MTYsIC4yMTUsIC43NzhdLFxuICAgIDB4MkEwMDogWy43NSwgLjI1LCAxLjExMV0sXG4gICAgMHgyQTAxOiBbLjc1LCAuMjUsIDEuMTExXSxcbiAgICAweDJBMDI6IFsuNzUsIC4yNSwgMS4xMTFdLFxuICAgIDB4MkEwNDogWy43NSwgLjI0OSwgLjgzM10sXG4gICAgMHgyQTA2OiBbLjc1LCAuMjQ5LCAuODMzXSxcbiAgICAweDJBMEM6IFsuODA1LCAuMzA2LCAxLjYzOCwge2ljOiAuMTM4fV0sXG4gICAgMHgyQTJGOiBbLjQ5MSwgLTAuMDA5LCAuNzc4XSxcbiAgICAweDJBM0Y6IFsuNjgzLCAwLCAuNzVdLFxuICAgIDB4MkE1RTogWy44MTMsIC4wOTcsIC42MTFdLFxuICAgIDB4MkE3RDogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MkE3RTogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MkE4NTogWy43NjIsIC4yOSwgLjc3OF0sXG4gICAgMHgyQTg2OiBbLjc2MiwgLjI5LCAuNzc4XSxcbiAgICAweDJBODc6IFsuNjM1LCAuMjQxLCAuNzc4XSxcbiAgICAweDJBODg6IFsuNjM1LCAuMjQxLCAuNzc4XSxcbiAgICAweDJBODk6IFsuNzYxLCAuMzg3LCAuNzc4XSxcbiAgICAweDJBOEE6IFsuNzYxLCAuMzg3LCAuNzc4XSxcbiAgICAweDJBOEI6IFsxLjAwMywgLjQ2MywgLjc3OF0sXG4gICAgMHgyQThDOiBbMS4wMDMsIC40NjMsIC43NzhdLFxuICAgIDB4MkE5NTogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MkE5NjogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MkFBRjogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MkFCMDogWy42MzYsIC4xMzgsIC43NzhdLFxuICAgIDB4MkFCNTogWy43NTIsIC4yODYsIC43NzhdLFxuICAgIDB4MkFCNjogWy43NTIsIC4yODYsIC43NzhdLFxuICAgIDB4MkFCNzogWy43NjEsIC4yOTQsIC43NzhdLFxuICAgIDB4MkFCODogWy43NjEsIC4yOTQsIC43NzhdLFxuICAgIDB4MkFCOTogWy43NjEsIC4zMzcsIC43NzhdLFxuICAgIDB4MkFCQTogWy43NjEsIC4zMzcsIC43NzhdLFxuICAgIDB4MkFDNTogWy43NTMsIC4yMTUsIC43NzhdLFxuICAgIDB4MkFDNjogWy43NTMsIC4yMTUsIC43NzhdLFxuICAgIDB4MkFDQjogWy43ODMsIC4zODUsIC43NzhdLFxuICAgIDB4MkFDQzogWy43ODMsIC4zODUsIC43NzhdLFxuICAgIDB4MzAwODogWy43NSwgLjI1LCAuMzg5XSxcbiAgICAweDMwMDk6IFsuNzUsIC4yNSwgLjM4OV0sXG4gICAgMHhFMDA2OiBbLjQzLCAuMDIzLCAuMjIyLCB7aWM6IC4wMTh9XSxcbiAgICAweEUwMDc6IFsuNDMxLCAuMDI0LCAuMzg5LCB7aWM6IC4wMTh9XSxcbiAgICAweEUwMDg6IFsuNjA1LCAuMDg1LCAuNzc4XSxcbiAgICAweEUwMDk6IFsuNDM0LCAuMDA2LCAuNjY3LCB7aWM6IC4wNjd9XSxcbiAgICAweEUwMEM6IFsuNzUyLCAuMjg0LCAuNzc4XSxcbiAgICAweEUwMEQ6IFsuNzUyLCAuMjg0LCAuNzc4XSxcbiAgICAweEUwMEU6IFsuOTE5LCAuNDIxLCAuNzc4XSxcbiAgICAweEUwMEY6IFsuODAxLCAuMzAzLCAuNzc4XSxcbiAgICAweEUwMTA6IFsuODAxLCAuMzAzLCAuNzc4XSxcbiAgICAweEUwMTE6IFsuOTE5LCAuNDIxLCAuNzc4XSxcbiAgICAweEUwMTY6IFsuODI4LCAuMzMsIC43NzhdLFxuICAgIDB4RTAxNzogWy43NTIsIC4zMzIsIC43NzhdLFxuICAgIDB4RTAxODogWy44MjgsIC4zMywgLjc3OF0sXG4gICAgMHhFMDE5OiBbLjc1MiwgLjMzMywgLjc3OF0sXG4gICAgMHhFMDFBOiBbLjYzNCwgLjI1NSwgLjc3OF0sXG4gICAgMHhFMDFCOiBbLjYzNCwgLjI1NCwgLjc3OF0sXG4gICAgMHgxRDQwMDogWy42OTgsIDAsIC44NjldLFxuICAgIDB4MUQ0MDE6IFsuNjg2LCAwLCAuODE4XSxcbiAgICAweDFENDAyOiBbLjY5NywgLjAxMSwgLjgzMV0sXG4gICAgMHgxRDQwMzogWy42ODYsIDAsIC44ODJdLFxuICAgIDB4MUQ0MDQ6IFsuNjgsIDAsIC43NTZdLFxuICAgIDB4MUQ0MDU6IFsuNjgsIDAsIC43MjRdLFxuICAgIDB4MUQ0MDY6IFsuNjk3LCAuMDEsIC45MDRdLFxuICAgIDB4MUQ0MDc6IFsuNjg2LCAwLCAuOV0sXG4gICAgMHgxRDQwODogWy42ODYsIDAsIC40MzZdLFxuICAgIDB4MUQ0MDk6IFsuNjg2LCAuMDExLCAuNTk0XSxcbiAgICAweDFENDBBOiBbLjY4NiwgMCwgLjkwMV0sXG4gICAgMHgxRDQwQjogWy42ODYsIDAsIC42OTJdLFxuICAgIDB4MUQ0MEM6IFsuNjg2LCAwLCAxLjA5Ml0sXG4gICAgMHgxRDQwRDogWy42ODYsIDAsIC45XSxcbiAgICAweDFENDBFOiBbLjY5NiwgLjAxLCAuODY0XSxcbiAgICAweDFENDBGOiBbLjY4NiwgMCwgLjc4Nl0sXG4gICAgMHgxRDQxMDogWy42OTYsIC4xOTMsIC44NjRdLFxuICAgIDB4MUQ0MTE6IFsuNjg2LCAuMDExLCAuODYyXSxcbiAgICAweDFENDEyOiBbLjY5NywgLjAxMSwgLjYzOV0sXG4gICAgMHgxRDQxMzogWy42NzUsIDAsIC44XSxcbiAgICAweDFENDE0OiBbLjY4NiwgLjAxMSwgLjg4NV0sXG4gICAgMHgxRDQxNTogWy42ODYsIC4wMDcsIC44NjldLFxuICAgIDB4MUQ0MTY6IFsuNjg2LCAuMDA3LCAxLjE4OV0sXG4gICAgMHgxRDQxNzogWy42ODYsIDAsIC44NjldLFxuICAgIDB4MUQ0MTg6IFsuNjg2LCAwLCAuODY5XSxcbiAgICAweDFENDE5OiBbLjY4NiwgMCwgLjcwM10sXG4gICAgMHgxRDQxQTogWy40NTMsIC4wMDYsIC41NTldLFxuICAgIDB4MUQ0MUI6IFsuNjk0LCAuMDA2LCAuNjM5XSxcbiAgICAweDFENDFDOiBbLjQ1MywgLjAwNiwgLjUxMV0sXG4gICAgMHgxRDQxRDogWy42OTQsIC4wMDYsIC42MzldLFxuICAgIDB4MUQ0MUU6IFsuNDUyLCAuMDA2LCAuNTI3XSxcbiAgICAweDFENDFGOiBbLjcsIDAsIC4zNTEsIHtpYzogLjEwMX1dLFxuICAgIDB4MUQ0MjA6IFsuNDU1LCAuMjAxLCAuNTc1XSxcbiAgICAweDFENDIxOiBbLjY5NCwgMCwgLjYzOV0sXG4gICAgMHgxRDQyMjogWy42OTUsIDAsIC4zMTldLFxuICAgIDB4MUQ0MjM6IFsuNjk1LCAuMiwgLjM1MV0sXG4gICAgMHgxRDQyNDogWy42OTQsIDAsIC42MDddLFxuICAgIDB4MUQ0MjU6IFsuNjk0LCAwLCAuMzE5XSxcbiAgICAweDFENDI2OiBbLjQ1LCAwLCAuOTU4XSxcbiAgICAweDFENDI3OiBbLjQ1LCAwLCAuNjM5XSxcbiAgICAweDFENDI4OiBbLjQ1MiwgLjAwNSwgLjU3NV0sXG4gICAgMHgxRDQyOTogWy40NSwgLjE5NCwgLjYzOV0sXG4gICAgMHgxRDQyQTogWy40NSwgLjE5NCwgLjYwN10sXG4gICAgMHgxRDQyQjogWy40NSwgMCwgLjQ3NF0sXG4gICAgMHgxRDQyQzogWy40NTMsIC4wMDYsIC40NTRdLFxuICAgIDB4MUQ0MkQ6IFsuNjM1LCAuMDA1LCAuNDQ3XSxcbiAgICAweDFENDJFOiBbLjQ1LCAuMDA2LCAuNjM5XSxcbiAgICAweDFENDJGOiBbLjQ0NCwgMCwgLjYwN10sXG4gICAgMHgxRDQzMDogWy40NDQsIDAsIC44MzFdLFxuICAgIDB4MUQ0MzE6IFsuNDQ0LCAwLCAuNjA3XSxcbiAgICAweDFENDMyOiBbLjQ0NCwgLjIsIC42MDddLFxuICAgIDB4MUQ0MzM6IFsuNDQ0LCAwLCAuNTExXSxcbiAgICAweDFENDM0OiBbLjcxNiwgMCwgLjc1LCB7c2s6IC4xMzl9XSxcbiAgICAweDFENDM1OiBbLjY4MywgMCwgLjc1OSwge3NrOiAuMDgzM31dLFxuICAgIDB4MUQ0MzY6IFsuNzA1LCAuMDIyLCAuNzE1LCB7aWM6IC4wNDUsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ0Mzc6IFsuNjgzLCAwLCAuODI4LCB7c2s6IC4wNTU2fV0sXG4gICAgMHgxRDQzODogWy42OCwgMCwgLjczOCwge2ljOiAuMDI2LCBzazogLjA4MzN9XSxcbiAgICAweDFENDM5OiBbLjY4LCAwLCAuNjQzLCB7aWM6IC4xMDYsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ0M0E6IFsuNzA1LCAuMDIyLCAuNzg2LCB7c2s6IC4wODMzfV0sXG4gICAgMHgxRDQzQjogWy42ODMsIDAsIC44MzEsIHtpYzogLjA1Nywgc2s6IC4wNTU2fV0sXG4gICAgMHgxRDQzQzogWy42ODMsIDAsIC40NCwge2ljOiAuMDY0LCBzazogLjExMX1dLFxuICAgIDB4MUQ0M0Q6IFsuNjgzLCAuMDIyLCAuNTU1LCB7aWM6IC4wNzgsIHNrOiAuMTY3fV0sXG4gICAgMHgxRDQzRTogWy42ODMsIDAsIC44NDksIHtpYzogLjA0LCBzazogLjA1NTZ9XSxcbiAgICAweDFENDNGOiBbLjY4MywgMCwgLjY4MSwge3NrOiAuMDI3OH1dLFxuICAgIDB4MUQ0NDA6IFsuNjgzLCAwLCAuOTcsIHtpYzogLjA4MSwgc2s6IC4wODMzfV0sXG4gICAgMHgxRDQ0MTogWy42ODMsIDAsIC44MDMsIHtpYzogLjA4NSwgc2s6IC4wODMzfV0sXG4gICAgMHgxRDQ0MjogWy43MDQsIC4wMjIsIC43NjMsIHtzazogLjA4MzN9XSxcbiAgICAweDFENDQzOiBbLjY4MywgMCwgLjY0Miwge2ljOiAuMTA5LCBzazogLjA4MzN9XSxcbiAgICAweDFENDQ0OiBbLjcwNCwgLjE5NCwgLjc5MSwge3NrOiAuMDgzM31dLFxuICAgIDB4MUQ0NDU6IFsuNjgzLCAuMDIxLCAuNzU5LCB7c2s6IC4wODMzfV0sXG4gICAgMHgxRDQ0NjogWy43MDUsIC4wMjIsIC42MTMsIHtpYzogLjAzMiwgc2s6IC4wODMzfV0sXG4gICAgMHgxRDQ0NzogWy42NzcsIDAsIC41ODQsIHtpYzogLjEyLCBzazogLjA4MzN9XSxcbiAgICAweDFENDQ4OiBbLjY4MywgLjAyMiwgLjY4Mywge2ljOiAuMDg0LCBzazogLjAyNzh9XSxcbiAgICAweDFENDQ5OiBbLjY4MywgLjAyMiwgLjU4Mywge2ljOiAuMTg2fV0sXG4gICAgMHgxRDQ0QTogWy42ODMsIC4wMjIsIC45NDQsIHtpYzogLjEwNH1dLFxuICAgIDB4MUQ0NEI6IFsuNjgzLCAwLCAuODI4LCB7aWM6IC4wMjQsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ0NEM6IFsuNjgzLCAwLCAuNTgxLCB7aWM6IC4xODJ9XSxcbiAgICAweDFENDREOiBbLjY4MywgMCwgLjY4Mywge2ljOiAuMDQsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ0NEU6IFsuNDQxLCAuMDEsIC41MjldLFxuICAgIDB4MUQ0NEY6IFsuNjk0LCAuMDExLCAuNDI5XSxcbiAgICAweDFENDUwOiBbLjQ0MiwgLjAxMSwgLjQzMywge3NrOiAuMDU1Nn1dLFxuICAgIDB4MUQ0NTE6IFsuNjk0LCAuMDEsIC41Miwge3NrOiAuMTY3fV0sXG4gICAgMHgxRDQ1MjogWy40NDIsIC4wMTEsIC40NjYsIHtzazogLjA1NTZ9XSxcbiAgICAweDFENDUzOiBbLjcwNSwgLjIwNSwgLjQ5LCB7aWM6IC4wNiwgc2s6IC4xNjd9XSxcbiAgICAweDFENDU0OiBbLjQ0MiwgLjIwNSwgLjQ3Nywge3NrOiAuMDI3OH1dLFxuICAgIDB4MUQ0NTY6IFsuNjYxLCAuMDExLCAuMzQ1XSxcbiAgICAweDFENDU3OiBbLjY2MSwgLjIwNCwgLjQxMl0sXG4gICAgMHgxRDQ1ODogWy42OTQsIC4wMTEsIC41MjFdLFxuICAgIDB4MUQ0NTk6IFsuNjk0LCAuMDExLCAuMjk4LCB7c2s6IC4wODMzfV0sXG4gICAgMHgxRDQ1QTogWy40NDIsIC4wMTEsIC44NzhdLFxuICAgIDB4MUQ0NUI6IFsuNDQyLCAuMDExLCAuNl0sXG4gICAgMHgxRDQ1QzogWy40NDEsIC4wMTEsIC40ODUsIHtzazogLjA1NTZ9XSxcbiAgICAweDFENDVEOiBbLjQ0MiwgLjE5NCwgLjUwMywge3NrOiAuMDgzM31dLFxuICAgIDB4MUQ0NUU6IFsuNDQyLCAuMTk0LCAuNDQ2LCB7aWM6IC4wMTQsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ0NUY6IFsuNDQyLCAuMDExLCAuNDUxLCB7c2s6IC4wNTU2fV0sXG4gICAgMHgxRDQ2MDogWy40NDIsIC4wMSwgLjQ2OSwge3NrOiAuMDU1Nn1dLFxuICAgIDB4MUQ0NjE6IFsuNjI2LCAuMDExLCAuMzYxLCB7c2s6IC4wODMzfV0sXG4gICAgMHgxRDQ2MjogWy40NDIsIC4wMTEsIC41NzIsIHtzazogLjAyNzh9XSxcbiAgICAweDFENDYzOiBbLjQ0MywgLjAxMSwgLjQ4NSwge3NrOiAuMDI3OH1dLFxuICAgIDB4MUQ0NjQ6IFsuNDQzLCAuMDExLCAuNzE2LCB7c2s6IC4wODMzfV0sXG4gICAgMHgxRDQ2NTogWy40NDIsIC4wMTEsIC41NzIsIHtzazogLjAyNzh9XSxcbiAgICAweDFENDY2OiBbLjQ0MiwgLjIwNSwgLjQ5LCB7c2s6IC4wNTU2fV0sXG4gICAgMHgxRDQ2NzogWy40NDIsIC4wMTEsIC40NjUsIHtzazogLjA1NTZ9XSxcbiAgICAweDFENDY4OiBbLjcxMSwgMCwgLjg2OSwge3NrOiAuMTZ9XSxcbiAgICAweDFENDY5OiBbLjY4NiwgMCwgLjg2Niwge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ0NkE6IFsuNzAzLCAuMDE3LCAuODE3LCB7aWM6IC4wMzgsIHNrOiAuMDk1OH1dLFxuICAgIDB4MUQ0NkI6IFsuNjg2LCAwLCAuOTM4LCB7c2s6IC4wNjM5fV0sXG4gICAgMHgxRDQ2QzogWy42OCwgMCwgLjgxLCB7aWM6IC4wMTUsIHNrOiAuMDk1OH1dLFxuICAgIDB4MUQ0NkQ6IFsuNjgsIDAsIC42ODksIHtpYzogLjEyLCBzazogLjA5NTh9XSxcbiAgICAweDFENDZFOiBbLjcwMywgLjAxNiwgLjg4Nywge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ0NkY6IFsuNjg2LCAwLCAuOTgyLCB7aWM6IC4wNDUsIHNrOiAuMDYzOX1dLFxuICAgIDB4MUQ0NzA6IFsuNjg2LCAwLCAuNTExLCB7aWM6IC4wNjIsIHNrOiAuMTI4fV0sXG4gICAgMHgxRDQ3MTogWy42ODYsIC4wMTcsIC42MzEsIHtpYzogLjA2Mywgc2s6IC4xOTJ9XSxcbiAgICAweDFENDcyOiBbLjY4NiwgMCwgLjk3MSwge2ljOiAuMDMyLCBzazogLjA2Mzl9XSxcbiAgICAweDFENDczOiBbLjY4NiwgMCwgLjc1Niwge3NrOiAuMDMxOX1dLFxuICAgIDB4MUQ0NzQ6IFsuNjg2LCAwLCAxLjE0Miwge2ljOiAuMDc3LCBzazogLjA5NTh9XSxcbiAgICAweDFENDc1OiBbLjY4NiwgMCwgLjk1LCB7aWM6IC4wNzcsIHNrOiAuMDk1OH1dLFxuICAgIDB4MUQ0NzY6IFsuNzAzLCAuMDE3LCAuODM3LCB7c2s6IC4wOTU4fV0sXG4gICAgMHgxRDQ3NzogWy42ODYsIDAsIC43MjMsIHtpYzogLjEyNCwgc2s6IC4wOTU4fV0sXG4gICAgMHgxRDQ3ODogWy43MDMsIC4xOTQsIC44NjksIHtzazogLjA5NTh9XSxcbiAgICAweDFENDc5OiBbLjY4NiwgLjAxNywgLjg3Miwge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ0N0E6IFsuNzAzLCAuMDE3LCAuNjkzLCB7aWM6IC4wMjEsIHNrOiAuMDk1OH1dLFxuICAgIDB4MUQ0N0I6IFsuNjc1LCAwLCAuNjM3LCB7aWM6IC4xMzUsIHNrOiAuMDk1OH1dLFxuICAgIDB4MUQ0N0M6IFsuNjg2LCAuMDE2LCAuOCwge2ljOiAuMDc3LCBzazogLjAzMTl9XSxcbiAgICAweDFENDdEOiBbLjY4NiwgLjAxNiwgLjY3OCwge2ljOiAuMjA4fV0sXG4gICAgMHgxRDQ3RTogWy42ODYsIC4wMTcsIDEuMDkzLCB7aWM6IC4xMTR9XSxcbiAgICAweDFENDdGOiBbLjY4NiwgMCwgLjk0Nywge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ0ODA6IFsuNjg2LCAwLCAuNjc1LCB7aWM6IC4yMDF9XSxcbiAgICAweDFENDgxOiBbLjY4NiwgMCwgLjc3Mywge2ljOiAuMDMyLCBzazogLjA5NTh9XSxcbiAgICAweDFENDgyOiBbLjQ1MiwgLjAwOCwgLjYzM10sXG4gICAgMHgxRDQ4MzogWy42OTQsIC4wMDgsIC41MjFdLFxuICAgIDB4MUQ0ODQ6IFsuNDUxLCAuMDA4LCAuNTEzLCB7c2s6IC4wNjM5fV0sXG4gICAgMHgxRDQ4NTogWy42OTQsIC4wMDgsIC42MSwge3NrOiAuMTkyfV0sXG4gICAgMHgxRDQ4NjogWy40NTIsIC4wMDgsIC41NTQsIHtzazogLjA2Mzl9XSxcbiAgICAweDFENDg3OiBbLjcwMSwgLjIwMSwgLjU2OCwge2ljOiAuMDU2LCBzazogLjE5Mn1dLFxuICAgIDB4MUQ0ODg6IFsuNDUyLCAuMjAyLCAuNTQ1LCB7c2s6IC4wMzE5fV0sXG4gICAgMHgxRDQ4OTogWy42OTQsIC4wMDgsIC42NjgsIHtzazogLTAuMDMxOX1dLFxuICAgIDB4MUQ0OEE6IFsuNjk0LCAuMDA4LCAuNDA1XSxcbiAgICAweDFENDhCOiBbLjY5NCwgLjIwMiwgLjQ3MV0sXG4gICAgMHgxRDQ4QzogWy42OTQsIC4wMDgsIC42MDRdLFxuICAgIDB4MUQ0OEQ6IFsuNjk0LCAuMDA4LCAuMzQ4LCB7c2s6IC4wOTU4fV0sXG4gICAgMHgxRDQ4RTogWy40NTIsIC4wMDgsIDEuMDMyXSxcbiAgICAweDFENDhGOiBbLjQ1MiwgLjAwOCwgLjcxM10sXG4gICAgMHgxRDQ5MDogWy40NTIsIC4wMDgsIC41ODUsIHtzazogLjA2Mzl9XSxcbiAgICAweDFENDkxOiBbLjQ1MiwgLjE5NCwgLjYwMSwge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ0OTI6IFsuNDUyLCAuMTk0LCAuNTQyLCB7c2s6IC4wOTU4fV0sXG4gICAgMHgxRDQ5MzogWy40NTIsIC4wMDgsIC41MjksIHtzazogLjA2Mzl9XSxcbiAgICAweDFENDk0OiBbLjQ1MSwgLjAwOCwgLjUzMSwge3NrOiAuMDYzOX1dLFxuICAgIDB4MUQ0OTU6IFsuNjQzLCAuMDA3LCAuNDE1LCB7c2s6IC4wOTU4fV0sXG4gICAgMHgxRDQ5NjogWy40NTIsIC4wMDgsIC42ODEsIHtzazogLjAzMTl9XSxcbiAgICAweDFENDk3OiBbLjQ1MywgLjAwOCwgLjU2Nywge3NrOiAuMDMxOX1dLFxuICAgIDB4MUQ0OTg6IFsuNDUzLCAuMDA4LCAuODMxLCB7c2s6IC4wOTU4fV0sXG4gICAgMHgxRDQ5OTogWy40NTIsIC4wMDgsIC42NTksIHtzazogLjAzMTl9XSxcbiAgICAweDFENDlBOiBbLjQ1MiwgLjIwMiwgLjU5LCB7c2s6IC4wNjM5fV0sXG4gICAgMHgxRDQ5QjogWy40NTIsIC4wMDgsIC41NTUsIHtzazogLjA2Mzl9XSxcbiAgICAweDFENDlDOiBbLjcxNywgLjAwOCwgLjgwMywge2ljOiAuMjEzLCBzazogLjM4OX1dLFxuICAgIDB4MUQ0OUU6IFsuNzI4LCAuMDI2LCAuNjY2LCB7aWM6IC4xNTMsIHNrOiAuMjc4fV0sXG4gICAgMHgxRDQ5RjogWy43MDgsIC4wMzEsIC43NzQsIHtpYzogLjA4MSwgc2s6IC4xMTF9XSxcbiAgICAweDFENEEyOiBbLjcxNywgLjAzNywgLjYxLCB7aWM6IC4xMjgsIHNrOiAuMjV9XSxcbiAgICAweDFENEE1OiBbLjcxNywgLjMxNCwgMS4wNTIsIHtpYzogLjA4MSwgc2s6IC40MTd9XSxcbiAgICAweDFENEE2OiBbLjcxNywgLjAzNywgLjkxNCwge2ljOiAuMjksIHNrOiAuMzYxfV0sXG4gICAgMHgxRDRBOTogWy43MjYsIC4wMzYsIC45MDIsIHtpYzogLjMwNiwgc2s6IC4zODl9XSxcbiAgICAweDFENEFBOiBbLjcwNywgLjAwOCwgLjczOCwge2ljOiAuMDY3LCBzazogLjE2N31dLFxuICAgIDB4MUQ0QUI6IFsuNzE2LCAuMDM3LCAxLjAxMywge2ljOiAuMDE4LCBzazogLjIyMn1dLFxuICAgIDB4MUQ0QUM6IFsuNzE3LCAuMDE3LCAuODgzLCB7c2s6IC4yNzh9XSxcbiAgICAweDFENEFFOiBbLjcwOCwgLjAzNiwgLjg2OCwge2ljOiAuMTQ4LCBzazogLjMzM31dLFxuICAgIDB4MUQ0QUY6IFsuNzM1LCAuMDM3LCAuNzQ3LCB7aWM6IC4yNDksIHNrOiAuMjIyfV0sXG4gICAgMHgxRDRCMDogWy43MTcsIC4wMTcsIC44LCB7aWM6IC4xNiwgc2s6IC4yNX1dLFxuICAgIDB4MUQ0QjE6IFsuNzE3LCAuMDE3LCAuNjIyLCB7aWM6IC4yMjgsIHNrOiAuMjIyfV0sXG4gICAgMHgxRDRCMjogWy43MTcsIC4wMTcsIC44MDUsIHtpYzogLjIyMSwgc2s6IC4yNX1dLFxuICAgIDB4MUQ0QjM6IFsuNzE3LCAuMDE3LCAuOTQ0LCB7aWM6IC4xODcsIHNrOiAuMjc4fV0sXG4gICAgMHgxRDRCNDogWy43MTYsIC4wMTcsIC43MSwge2ljOiAuMjQ5LCBzazogLjE5NH1dLFxuICAgIDB4MUQ0QjU6IFsuNzE3LCAuMDE2LCAuODIxLCB7aWM6IC4yMTEsIHNrOiAuMzA2fV0sXG4gICAgMHgxRDUwNDogWy42OTYsIC4wMjYsIC43MThdLFxuICAgIDB4MUQ1MDU6IFsuNjkxLCAuMDI3LCAuODg0XSxcbiAgICAweDFENTA3OiBbLjY4NSwgLjAyNywgLjgzMl0sXG4gICAgMHgxRDUwODogWy42ODUsIC4wMjQsIC42NjNdLFxuICAgIDB4MUQ1MDk6IFsuNjg2LCAuMTUzLCAuNjExXSxcbiAgICAweDFENTBBOiBbLjY5LCAuMDI2LCAuNzg1XSxcbiAgICAweDFENTBEOiBbLjY4NiwgLjEzOSwgLjU1Ml0sXG4gICAgMHgxRDUwRTogWy42OCwgLjAyNywgLjY2OCwge2ljOiAuMDE0fV0sXG4gICAgMHgxRDUwRjogWy42ODYsIC4wMjYsIC42NjZdLFxuICAgIDB4MUQ1MTA6IFsuNjkyLCAuMDI3LCAxLjA1XSxcbiAgICAweDFENTExOiBbLjY4NiwgLjAyNSwgLjgzMl0sXG4gICAgMHgxRDUxMjogWy43MjksIC4wMjcsIC44MjddLFxuICAgIDB4MUQ1MTM6IFsuNjkyLCAuMjE4LCAuODI4XSxcbiAgICAweDFENTE0OiBbLjcyOSwgLjA2OSwgLjgyN10sXG4gICAgMHgxRDUxNjogWy42OTIsIC4wMjcsIC44MjldLFxuICAgIDB4MUQ1MTc6IFsuNzAxLCAuMDI3LCAuNjY5XSxcbiAgICAweDFENTE4OiBbLjY5NywgLjAyNywgLjY0Niwge2ljOiAuMDE5fV0sXG4gICAgMHgxRDUxOTogWy42ODYsIC4wMjYsIC44MzFdLFxuICAgIDB4MUQ1MUE6IFsuNjg2LCAuMDI3LCAxLjA0Nl0sXG4gICAgMHgxRDUxQjogWy42ODgsIC4wMjcsIC43MTldLFxuICAgIDB4MUQ1MUM6IFsuNjg2LCAuMjE4LCAuODMzXSxcbiAgICAweDFENTFFOiBbLjQ3LCAuMDM1LCAuNV0sXG4gICAgMHgxRDUxRjogWy42ODUsIC4wMzEsIC41MTNdLFxuICAgIDB4MUQ1MjA6IFsuNDY2LCAuMDI5LCAuMzg5XSxcbiAgICAweDFENTIxOiBbLjYwOSwgLjAzMywgLjQ5OV0sXG4gICAgMHgxRDUyMjogWy40NjcsIC4wMywgLjQwMV0sXG4gICAgMHgxRDUyMzogWy42ODEsIC4yMjEsIC4zMjZdLFxuICAgIDB4MUQ1MjQ6IFsuNDcsIC4yMDksIC41MDRdLFxuICAgIDB4MUQ1MjU6IFsuNjg4LCAuMjA1LCAuNTIxXSxcbiAgICAweDFENTI2OiBbLjY3MywgLjAyLCAuMjc5XSxcbiAgICAweDFENTI3OiBbLjY3MiwgLjIwOCwgLjI4MV0sXG4gICAgMHgxRDUyODogWy42ODksIC4wMjUsIC4zODldLFxuICAgIDB4MUQ1Mjk6IFsuNjg1LCAuMDIsIC4yOF0sXG4gICAgMHgxRDUyQTogWy40NzUsIC4wMjYsIC43NjddLFxuICAgIDB4MUQ1MkI6IFsuNDc1LCAuMDIyLCAuNTI3XSxcbiAgICAweDFENTJDOiBbLjQ4LCAuMDI4LCAuNDg5XSxcbiAgICAweDFENTJEOiBbLjU0MSwgLjIxMiwgLjVdLFxuICAgIDB4MUQ1MkU6IFsuNDc5LCAuMjE5LCAuNDg5XSxcbiAgICAweDFENTJGOiBbLjQ3NCwgLjAyMSwgLjM4OV0sXG4gICAgMHgxRDUzMDogWy40NzgsIC4wMjksIC40NDNdLFxuICAgIDB4MUQ1MzE6IFsuNjQsIC4wMiwgLjMzMywge2ljOiAuMDE1fV0sXG4gICAgMHgxRDUzMjogWy40NzQsIC4wMjMsIC41MTddLFxuICAgIDB4MUQ1MzM6IFsuNTMsIC4wMjgsIC41MTJdLFxuICAgIDB4MUQ1MzQ6IFsuNTMyLCAuMDI4LCAuNzc0XSxcbiAgICAweDFENTM1OiBbLjQ3MiwgLjE4OCwgLjM4OV0sXG4gICAgMHgxRDUzNjogWy41MjgsIC4yMTgsIC40OTldLFxuICAgIDB4MUQ1Mzc6IFsuNDcxLCAuMjE0LCAuMzkxXSxcbiAgICAweDFENTM4OiBbLjcwMSwgMCwgLjcyMl0sXG4gICAgMHgxRDUzOTogWy42ODMsIDAsIC42NjddLFxuICAgIDB4MUQ1M0I6IFsuNjgzLCAwLCAuNzIyXSxcbiAgICAweDFENTNDOiBbLjY4MywgMCwgLjY2N10sXG4gICAgMHgxRDUzRDogWy42ODMsIDAsIC42MTFdLFxuICAgIDB4MUQ1M0U6IFsuNzAyLCAuMDE5LCAuNzc4XSxcbiAgICAweDFENTQwOiBbLjY4MywgMCwgLjM4OV0sXG4gICAgMHgxRDU0MTogWy42ODMsIC4wNzcsIC41XSxcbiAgICAweDFENTQyOiBbLjY4MywgMCwgLjc3OF0sXG4gICAgMHgxRDU0MzogWy42ODMsIDAsIC42NjddLFxuICAgIDB4MUQ1NDQ6IFsuNjgzLCAwLCAuOTQ0XSxcbiAgICAweDFENTQ2OiBbLjcwMSwgLjAxOSwgLjc3OF0sXG4gICAgMHgxRDU0QTogWy43MDIsIC4wMTIsIC41NTZdLFxuICAgIDB4MUQ1NEI6IFsuNjgzLCAwLCAuNjY3XSxcbiAgICAweDFENTRDOiBbLjY4MywgLjAxOSwgLjcyMl0sXG4gICAgMHgxRDU0RDogWy42ODMsIC4wMiwgLjcyMl0sXG4gICAgMHgxRDU0RTogWy42ODMsIC4wMTksIDFdLFxuICAgIDB4MUQ1NEY6IFsuNjgzLCAwLCAuNzIyXSxcbiAgICAweDFENTUwOiBbLjY4MywgMCwgLjcyMl0sXG4gICAgMHgxRDU2QzogWy42ODYsIC4wMzEsIC44NDddLFxuICAgIDB4MUQ1NkQ6IFsuNjg0LCAuMDMxLCAxLjA0NF0sXG4gICAgMHgxRDU2RTogWy42NzYsIC4wMzIsIC43MjNdLFxuICAgIDB4MUQ1NkY6IFsuNjgzLCAuMDI5LCAuOTgyXSxcbiAgICAweDFENTcwOiBbLjY4NiwgLjAyOSwgLjc4M10sXG4gICAgMHgxRDU3MTogWy42ODQsIC4xNDYsIC43MjJdLFxuICAgIDB4MUQ1NzI6IFsuNjg3LCAuMDI5LCAuOTI3XSxcbiAgICAweDFENTczOiBbLjY4MywgLjEyNiwgLjg1MV0sXG4gICAgMHgxRDU3NDogWy42ODEsIC4wMjUsIC42NTVdLFxuICAgIDB4MUQ1NzU6IFsuNjgsIC4xNDEsIC42NTJdLFxuICAgIDB4MUQ1NzY6IFsuNjgxLCAuMDI2LCAuNzg5LCB7aWM6IC4wMTd9XSxcbiAgICAweDFENTc3OiBbLjY4MywgLjAyOCwgLjc4Nl0sXG4gICAgMHgxRDU3ODogWy42ODMsIC4wMzIsIDEuMjM5XSxcbiAgICAweDFENTc5OiBbLjY3OSwgLjAzLCAuOTgzXSxcbiAgICAweDFENTdBOiBbLjcyNiwgLjAzLCAuOTc2XSxcbiAgICAweDFENTdCOiBbLjY4OCwgLjIyMywgLjk3N10sXG4gICAgMHgxRDU3QzogWy43MjYsIC4wODMsIC45NzZdLFxuICAgIDB4MUQ1N0Q6IFsuNjg4LCAuMDI4LCAuOTc4XSxcbiAgICAweDFENTdFOiBbLjY4NSwgLjAzMSwgLjk3OF0sXG4gICAgMHgxRDU3RjogWy42ODYsIC4wMywgLjc5LCB7aWM6IC4wMTJ9XSxcbiAgICAweDFENTgwOiBbLjY4OCwgLjAzOSwgLjg1MSwge2ljOiAuMDJ9XSxcbiAgICAweDFENTgxOiBbLjY4NSwgLjAyOSwgLjk4Ml0sXG4gICAgMHgxRDU4MjogWy42ODMsIC4wMywgMS4yMzVdLFxuICAgIDB4MUQ1ODM6IFsuNjgxLCAuMDM1LCAuODQ5XSxcbiAgICAweDFENTg0OiBbLjY4OCwgLjIxNCwgLjk4NF0sXG4gICAgMHgxRDU4NTogWy42NzcsIC4xNDgsIC43MTFdLFxuICAgIDB4MUQ1ODY6IFsuNDcyLCAuMDMyLCAuNjAzXSxcbiAgICAweDFENTg3OiBbLjY5LCAuMDMyLCAuNTldLFxuICAgIDB4MUQ1ODg6IFsuNDczLCAuMDI2LCAuNDY0XSxcbiAgICAweDFENTg5OiBbLjYzMiwgLjAyOCwgLjU4OV0sXG4gICAgMHgxRDU4QTogWy40NzEsIC4wMjcsIC40NzJdLFxuICAgIDB4MUQ1OEI6IFsuNjg3LCAuMjIyLCAuMzg4XSxcbiAgICAweDFENThDOiBbLjQ3MiwgLjIwOCwgLjU5NV0sXG4gICAgMHgxRDU4RDogWy42ODcsIC4yMDcsIC42MTVdLFxuICAgIDB4MUQ1OEU6IFsuNjg2LCAuMDI1LCAuMzMxXSxcbiAgICAweDFENThGOiBbLjY4MiwgLjIwMywgLjMzMl0sXG4gICAgMHgxRDU5MDogWy42ODIsIC4wMjUsIC40NjRdLFxuICAgIDB4MUQ1OTE6IFsuNjgxLCAuMDI0LCAuMzM3XSxcbiAgICAweDFENTkyOiBbLjQ3NiwgLjAzMSwgLjkyMV0sXG4gICAgMHgxRDU5MzogWy40NzMsIC4wMjgsIC42NTRdLFxuICAgIDB4MUQ1OTQ6IFsuNDgyLCAuMDM0LCAuNjA5XSxcbiAgICAweDFENTk1OiBbLjU1NywgLjIwNywgLjYwNF0sXG4gICAgMHgxRDU5NjogWy40ODUsIC4yMTEsIC41OTZdLFxuICAgIDB4MUQ1OTc6IFsuNDcyLCAuMDI2LCAuNDZdLFxuICAgIDB4MUQ1OTg6IFsuNDc5LCAuMDM0LCAuNTIzXSxcbiAgICAweDFENTk5OiBbLjY0OCwgLjAyNywgLjM5Mywge2ljOiAuMDE0fV0sXG4gICAgMHgxRDU5QTogWy40NzIsIC4wMzIsIC41ODksIHtpYzogLjAxNH1dLFxuICAgIDB4MUQ1OUI6IFsuNTQ2LCAuMDI3LCAuNjA0XSxcbiAgICAweDFENTlDOiBbLjU0OSwgLjAzMiwgLjkxOF0sXG4gICAgMHgxRDU5RDogWy40NzEsIC4xODgsIC40NTldLFxuICAgIDB4MUQ1OUU6IFsuNTU3LCAuMjIxLCAuNTg5XSxcbiAgICAweDFENTlGOiBbLjQ3MSwgLjIxNCwgLjQ2MV0sXG4gICAgMHgxRDVBMDogWy42OTQsIDAsIC42NjddLFxuICAgIDB4MUQ1QTE6IFsuNjk0LCAwLCAuNjY3XSxcbiAgICAweDFENUEyOiBbLjcwNSwgLjAxMSwgLjYzOV0sXG4gICAgMHgxRDVBMzogWy42OTQsIDAsIC43MjJdLFxuICAgIDB4MUQ1QTQ6IFsuNjkxLCAwLCAuNTk3XSxcbiAgICAweDFENUE1OiBbLjY5MSwgMCwgLjU2OV0sXG4gICAgMHgxRDVBNjogWy43MDQsIC4wMTEsIC42NjddLFxuICAgIDB4MUQ1QTc6IFsuNjk0LCAwLCAuNzA4XSxcbiAgICAweDFENUE4OiBbLjY5NCwgMCwgLjI3OF0sXG4gICAgMHgxRDVBOTogWy42OTQsIC4wMjIsIC40NzJdLFxuICAgIDB4MUQ1QUE6IFsuNjk0LCAwLCAuNjk0XSxcbiAgICAweDFENUFCOiBbLjY5NCwgMCwgLjU0Ml0sXG4gICAgMHgxRDVBQzogWy42OTQsIDAsIC44NzVdLFxuICAgIDB4MUQ1QUQ6IFsuNjk0LCAwLCAuNzA4XSxcbiAgICAweDFENUFFOiBbLjcxNSwgLjAyMiwgLjczNl0sXG4gICAgMHgxRDVBRjogWy42OTQsIDAsIC42MzldLFxuICAgIDB4MUQ1QjA6IFsuNzE1LCAuMTI1LCAuNzM2XSxcbiAgICAweDFENUIxOiBbLjY5NCwgMCwgLjY0Nl0sXG4gICAgMHgxRDVCMjogWy43MTYsIC4wMjIsIC41NTZdLFxuICAgIDB4MUQ1QjM6IFsuNjg4LCAwLCAuNjgxXSxcbiAgICAweDFENUI0OiBbLjY5NCwgLjAyMiwgLjY4OF0sXG4gICAgMHgxRDVCNTogWy42OTQsIDAsIC42NjddLFxuICAgIDB4MUQ1QjY6IFsuNjk0LCAwLCAuOTQ0XSxcbiAgICAweDFENUI3OiBbLjY5NCwgMCwgLjY2N10sXG4gICAgMHgxRDVCODogWy42OTQsIDAsIC42NjddLFxuICAgIDB4MUQ1Qjk6IFsuNjk0LCAwLCAuNjExXSxcbiAgICAweDFENUJBOiBbLjQ2LCAuMDEsIC40ODFdLFxuICAgIDB4MUQ1QkI6IFsuNjk0LCAuMDExLCAuNTE3XSxcbiAgICAweDFENUJDOiBbLjQ2LCAuMDEsIC40NDRdLFxuICAgIDB4MUQ1QkQ6IFsuNjk0LCAuMDEsIC41MTddLFxuICAgIDB4MUQ1QkU6IFsuNDYxLCAuMDEsIC40NDRdLFxuICAgIDB4MUQ1QkY6IFsuNzA1LCAwLCAuMzA2LCB7aWM6IC4wNDF9XSxcbiAgICAweDFENUMwOiBbLjQ1NSwgLjIwNiwgLjVdLFxuICAgIDB4MUQ1QzE6IFsuNjk0LCAwLCAuNTE3XSxcbiAgICAweDFENUMyOiBbLjY4LCAwLCAuMjM5XSxcbiAgICAweDFENUMzOiBbLjY4LCAuMjA1LCAuMjY3XSxcbiAgICAweDFENUM0OiBbLjY5NCwgMCwgLjQ4OV0sXG4gICAgMHgxRDVDNTogWy42OTQsIDAsIC4yMzldLFxuICAgIDB4MUQ1QzY6IFsuNDU1LCAwLCAuNzk0XSxcbiAgICAweDFENUM3OiBbLjQ1NSwgMCwgLjUxN10sXG4gICAgMHgxRDVDODogWy40NiwgLjAxLCAuNV0sXG4gICAgMHgxRDVDOTogWy40NTUsIC4xOTQsIC41MTddLFxuICAgIDB4MUQ1Q0E6IFsuNDU1LCAuMTk0LCAuNTE3XSxcbiAgICAweDFENUNCOiBbLjQ1NSwgMCwgLjM0Ml0sXG4gICAgMHgxRDVDQzogWy40NiwgLjAxLCAuMzgzXSxcbiAgICAweDFENUNEOiBbLjU3MSwgLjAxLCAuMzYxXSxcbiAgICAweDFENUNFOiBbLjQ0NCwgLjAxLCAuNTE3XSxcbiAgICAweDFENUNGOiBbLjQ0NCwgMCwgLjQ2MV0sXG4gICAgMHgxRDVEMDogWy40NDQsIDAsIC42ODNdLFxuICAgIDB4MUQ1RDE6IFsuNDQ0LCAwLCAuNDYxXSxcbiAgICAweDFENUQyOiBbLjQ0NCwgLjIwNCwgLjQ2MV0sXG4gICAgMHgxRDVEMzogWy40NDQsIDAsIC40MzVdLFxuICAgIDB4MUQ1RDQ6IFsuNjk0LCAwLCAuNzMzXSxcbiAgICAweDFENUQ1OiBbLjY5NCwgMCwgLjczM10sXG4gICAgMHgxRDVENjogWy43MDQsIC4wMTEsIC43MDNdLFxuICAgIDB4MUQ1RDc6IFsuNjk0LCAwLCAuNzk0XSxcbiAgICAweDFENUQ4OiBbLjY5MSwgMCwgLjY0Ml0sXG4gICAgMHgxRDVEOTogWy42OTEsIDAsIC42MTFdLFxuICAgIDB4MUQ1REE6IFsuNzA1LCAuMDExLCAuNzMzXSxcbiAgICAweDFENURCOiBbLjY5NCwgMCwgLjc5NF0sXG4gICAgMHgxRDVEQzogWy42OTQsIDAsIC4zMzFdLFxuICAgIDB4MUQ1REQ6IFsuNjk0LCAuMDIyLCAuNTE5XSxcbiAgICAweDFENURFOiBbLjY5NCwgMCwgLjc2NF0sXG4gICAgMHgxRDVERjogWy42OTQsIDAsIC41ODFdLFxuICAgIDB4MUQ1RTA6IFsuNjk0LCAwLCAuOTc4XSxcbiAgICAweDFENUUxOiBbLjY5NCwgMCwgLjc5NF0sXG4gICAgMHgxRDVFMjogWy43MTYsIC4wMjIsIC43OTRdLFxuICAgIDB4MUQ1RTM6IFsuNjk0LCAwLCAuNzAzXSxcbiAgICAweDFENUU0OiBbLjcxNiwgLjEwNiwgLjc5NF0sXG4gICAgMHgxRDVFNTogWy42OTQsIDAsIC43MDNdLFxuICAgIDB4MUQ1RTY6IFsuNzE2LCAuMDIyLCAuNjExXSxcbiAgICAweDFENUU3OiBbLjY4OCwgMCwgLjczM10sXG4gICAgMHgxRDVFODogWy42OTQsIC4wMjIsIC43NjRdLFxuICAgIDB4MUQ1RTk6IFsuNjk0LCAwLCAuNzMzXSxcbiAgICAweDFENUVBOiBbLjY5NCwgMCwgMS4wMzldLFxuICAgIDB4MUQ1RUI6IFsuNjk0LCAwLCAuNzMzXSxcbiAgICAweDFENUVDOiBbLjY5NCwgMCwgLjczM10sXG4gICAgMHgxRDVFRDogWy42OTQsIDAsIC42NzJdLFxuICAgIDB4MUQ1RUU6IFsuNDc1LCAuMDExLCAuNTI1XSxcbiAgICAweDFENUVGOiBbLjY5NCwgLjAxLCAuNTYxXSxcbiAgICAweDFENUYwOiBbLjQ3NSwgLjAxMSwgLjQ4OV0sXG4gICAgMHgxRDVGMTogWy42OTQsIC4wMTEsIC41NjFdLFxuICAgIDB4MUQ1RjI6IFsuNDc0LCAuMDEsIC41MTFdLFxuICAgIDB4MUQ1RjM6IFsuNzA1LCAwLCAuMzM2LCB7aWM6IC4wNDV9XSxcbiAgICAweDFENUY0OiBbLjQ2OSwgLjIwNiwgLjU1XSxcbiAgICAweDFENUY1OiBbLjY5NCwgMCwgLjU2MV0sXG4gICAgMHgxRDVGNjogWy42OTUsIDAsIC4yNTZdLFxuICAgIDB4MUQ1Rjc6IFsuNjk1LCAuMjA1LCAuMjg2XSxcbiAgICAweDFENUY4OiBbLjY5NCwgMCwgLjUzMV0sXG4gICAgMHgxRDVGOTogWy42OTQsIDAsIC4yNTZdLFxuICAgIDB4MUQ1RkE6IFsuNDY5LCAwLCAuODY3XSxcbiAgICAweDFENUZCOiBbLjQ2OCwgMCwgLjU2MV0sXG4gICAgMHgxRDVGQzogWy40NzQsIC4wMTEsIC41NV0sXG4gICAgMHgxRDVGRDogWy40NjksIC4xOTQsIC41NjFdLFxuICAgIDB4MUQ1RkU6IFsuNDY5LCAuMTk0LCAuNTYxXSxcbiAgICAweDFENUZGOiBbLjQ2OSwgMCwgLjM3Ml0sXG4gICAgMHgxRDYwMDogWy40NzQsIC4wMSwgLjQyMl0sXG4gICAgMHgxRDYwMTogWy41ODksIC4wMSwgLjQwNF0sXG4gICAgMHgxRDYwMjogWy40NTgsIC4wMTEsIC41NjFdLFxuICAgIDB4MUQ2MDM6IFsuNDU4LCAwLCAuNV0sXG4gICAgMHgxRDYwNDogWy40NTgsIDAsIC43NDRdLFxuICAgIDB4MUQ2MDU6IFsuNDU4LCAwLCAuNV0sXG4gICAgMHgxRDYwNjogWy40NTgsIC4yMDUsIC41XSxcbiAgICAweDFENjA3OiBbLjQ1OCwgMCwgLjQ3Nl0sXG4gICAgMHgxRDYwODogWy42OTQsIDAsIC42NjddLFxuICAgIDB4MUQ2MDk6IFsuNjk0LCAwLCAuNjY3LCB7aWM6IC4wMjl9XSxcbiAgICAweDFENjBBOiBbLjcwNSwgLjAxLCAuNjM5LCB7aWM6IC4wOH1dLFxuICAgIDB4MUQ2MEI6IFsuNjk0LCAwLCAuNzIyLCB7aWM6IC4wMjV9XSxcbiAgICAweDFENjBDOiBbLjY5MSwgMCwgLjU5Nywge2ljOiAuMDkxfV0sXG4gICAgMHgxRDYwRDogWy42OTEsIDAsIC41NjksIHtpYzogLjEwNH1dLFxuICAgIDB4MUQ2MEU6IFsuNzA1LCAuMDExLCAuNjY3LCB7aWM6IC4wNjN9XSxcbiAgICAweDFENjBGOiBbLjY5NCwgMCwgLjcwOCwge2ljOiAuMDZ9XSxcbiAgICAweDFENjEwOiBbLjY5NCwgMCwgLjI3OCwge2ljOiAuMDZ9XSxcbiAgICAweDFENjExOiBbLjY5NCwgLjAyMiwgLjQ3Miwge2ljOiAuMDYzfV0sXG4gICAgMHgxRDYxMjogWy42OTQsIDAsIC42OTQsIHtpYzogLjA5MX1dLFxuICAgIDB4MUQ2MTM6IFsuNjk0LCAwLCAuNTQyXSxcbiAgICAweDFENjE0OiBbLjY5NCwgMCwgLjg3NSwge2ljOiAuMDU0fV0sXG4gICAgMHgxRDYxNTogWy42OTQsIDAsIC43MDgsIHtpYzogLjA1OH1dLFxuICAgIDB4MUQ2MTY6IFsuNzE2LCAuMDIyLCAuNzM2LCB7aWM6IC4wMjd9XSxcbiAgICAweDFENjE3OiBbLjY5NCwgMCwgLjYzOSwge2ljOiAuMDUxfV0sXG4gICAgMHgxRDYxODogWy43MTYsIC4xMjUsIC43MzYsIHtpYzogLjAyN31dLFxuICAgIDB4MUQ2MTk6IFsuNjk0LCAwLCAuNjQ2LCB7aWM6IC4wNTJ9XSxcbiAgICAweDFENjFBOiBbLjcxNiwgLjAyMiwgLjU1Niwge2ljOiAuMDUzfV0sXG4gICAgMHgxRDYxQjogWy42ODgsIDAsIC42ODEsIHtpYzogLjEwOX1dLFxuICAgIDB4MUQ2MUM6IFsuNjk0LCAuMDIyLCAuNjg4LCB7aWM6IC4wNTl9XSxcbiAgICAweDFENjFEOiBbLjY5NCwgMCwgLjY2Nywge2ljOiAuMTMyfV0sXG4gICAgMHgxRDYxRTogWy42OTQsIDAsIC45NDQsIHtpYzogLjEzMn1dLFxuICAgIDB4MUQ2MUY6IFsuNjk0LCAwLCAuNjY3LCB7aWM6IC4wOTF9XSxcbiAgICAweDFENjIwOiBbLjY5NCwgMCwgLjY2Nywge2ljOiAuMTQzfV0sXG4gICAgMHgxRDYyMTogWy42OTQsIDAsIC42MTEsIHtpYzogLjA5MX1dLFxuICAgIDB4MUQ2MjI6IFsuNDYxLCAuMDEsIC40ODFdLFxuICAgIDB4MUQ2MjM6IFsuNjk0LCAuMDExLCAuNTE3LCB7aWM6IC4wMjJ9XSxcbiAgICAweDFENjI0OiBbLjQ2LCAuMDExLCAuNDQ0LCB7aWM6IC4wNTV9XSxcbiAgICAweDFENjI1OiBbLjY5NCwgLjAxLCAuNTE3LCB7aWM6IC4wNzF9XSxcbiAgICAweDFENjI2OiBbLjQ2LCAuMDExLCAuNDQ0LCB7aWM6IC4wMjh9XSxcbiAgICAweDFENjI3OiBbLjcwNSwgMCwgLjMwNiwge2ljOiAuMTg4fV0sXG4gICAgMHgxRDYyODogWy40NTUsIC4yMDYsIC41LCB7aWM6IC4wNjh9XSxcbiAgICAweDFENjI5OiBbLjY5NCwgMCwgLjUxN10sXG4gICAgMHgxRDYyQTogWy42OCwgMCwgLjIzOSwge2ljOiAuMDc2fV0sXG4gICAgMHgxRDYyQjogWy42OCwgLjIwNCwgLjI2Nywge2ljOiAuMDY5fV0sXG4gICAgMHgxRDYyQzogWy42OTQsIDAsIC40ODksIHtpYzogLjA1NH1dLFxuICAgIDB4MUQ2MkQ6IFsuNjk0LCAwLCAuMjM5LCB7aWM6IC4wNzJ9XSxcbiAgICAweDFENjJFOiBbLjQ1NSwgMCwgLjc5NF0sXG4gICAgMHgxRDYyRjogWy40NTQsIDAsIC41MTddLFxuICAgIDB4MUQ2MzA6IFsuNDYxLCAuMDExLCAuNSwge2ljOiAuMDIzfV0sXG4gICAgMHgxRDYzMTogWy40NTUsIC4xOTQsIC41MTcsIHtpYzogLjAyMX1dLFxuICAgIDB4MUQ2MzI6IFsuNDU1LCAuMTk0LCAuNTE3LCB7aWM6IC4wMjF9XSxcbiAgICAweDFENjMzOiBbLjQ1NSwgMCwgLjM0Miwge2ljOiAuMDgyfV0sXG4gICAgMHgxRDYzNDogWy40NjEsIC4wMTEsIC4zODMsIHtpYzogLjA1M31dLFxuICAgIDB4MUQ2MzU6IFsuNTcxLCAuMDExLCAuMzYxLCB7aWM6IC4wNDl9XSxcbiAgICAweDFENjM2OiBbLjQ0NCwgLjAxLCAuNTE3LCB7aWM6IC4wMn1dLFxuICAgIDB4MUQ2Mzc6IFsuNDQ0LCAwLCAuNDYxLCB7aWM6IC4wNzl9XSxcbiAgICAweDFENjM4OiBbLjQ0NCwgMCwgLjY4Mywge2ljOiAuMDc5fV0sXG4gICAgMHgxRDYzOTogWy40NDQsIDAsIC40NjEsIHtpYzogLjA3Nn1dLFxuICAgIDB4MUQ2M0E6IFsuNDQ0LCAuMjA1LCAuNDYxLCB7aWM6IC4wNzl9XSxcbiAgICAweDFENjNCOiBbLjQ0NCwgMCwgLjQzNSwge2ljOiAuMDU5fV0sXG4gICAgMHgxRDY3MDogWy42MjMsIDAsIC41MjVdLFxuICAgIDB4MUQ2NzE6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDFENjcyOiBbLjYyMiwgLjAxMSwgLjUyNV0sXG4gICAgMHgxRDY3MzogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4MUQ2NzQ6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDFENjc1OiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgxRDY3NjogWy42MjIsIC4wMTEsIC41MjVdLFxuICAgIDB4MUQ2Nzc6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDFENjc4OiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgxRDY3OTogWy42MTEsIC4wMTEsIC41MjVdLFxuICAgIDB4MUQ2N0E6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDFENjdCOiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgxRDY3QzogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4MUQ2N0Q6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDFENjdFOiBbLjYyMSwgLjAxLCAuNTI1XSxcbiAgICAweDFENjdGOiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgxRDY4MDogWy42MjEsIC4xMzgsIC41MjVdLFxuICAgIDB4MUQ2ODE6IFsuNjExLCAuMDExLCAuNTI1XSxcbiAgICAweDFENjgyOiBbLjYyMiwgLjAxMSwgLjUyNV0sXG4gICAgMHgxRDY4MzogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4MUQ2ODQ6IFsuNjExLCAuMDExLCAuNTI1XSxcbiAgICAweDFENjg1OiBbLjYxMSwgLjAwNywgLjUyNV0sXG4gICAgMHgxRDY4NjogWy42MTEsIC4wMDcsIC41MjVdLFxuICAgIDB4MUQ2ODc6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDFENjg4OiBbLjYxMSwgMCwgLjUyNV0sXG4gICAgMHgxRDY4OTogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4MUQ2OEE6IFsuNDM5LCAuMDA2LCAuNTI1XSxcbiAgICAweDFENjhCOiBbLjYxMSwgLjAwNiwgLjUyNV0sXG4gICAgMHgxRDY4QzogWy40NCwgLjAwNiwgLjUyNV0sXG4gICAgMHgxRDY4RDogWy42MTEsIC4wMDYsIC41MjVdLFxuICAgIDB4MUQ2OEU6IFsuNDQsIC4wMDYsIC41MjVdLFxuICAgIDB4MUQ2OEY6IFsuNjE3LCAwLCAuNTI1XSxcbiAgICAweDFENjkwOiBbLjQ0MiwgLjIyOSwgLjUyNV0sXG4gICAgMHgxRDY5MTogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4MUQ2OTI6IFsuNjEyLCAwLCAuNTI1XSxcbiAgICAweDFENjkzOiBbLjYxMiwgLjIyOCwgLjUyNV0sXG4gICAgMHgxRDY5NDogWy42MTEsIDAsIC41MjVdLFxuICAgIDB4MUQ2OTU6IFsuNjExLCAwLCAuNTI1XSxcbiAgICAweDFENjk2OiBbLjQzNiwgMCwgLjUyNSwge2ljOiAuMDExfV0sXG4gICAgMHgxRDY5NzogWy40MzYsIDAsIC41MjVdLFxuICAgIDB4MUQ2OTg6IFsuNDQsIC4wMDYsIC41MjVdLFxuICAgIDB4MUQ2OTk6IFsuNDM3LCAuMjIxLCAuNTI1XSxcbiAgICAweDFENjlBOiBbLjQzNywgLjIyMSwgLjUyNSwge2ljOiAuMDJ9XSxcbiAgICAweDFENjlCOiBbLjQzNywgMCwgLjUyNV0sXG4gICAgMHgxRDY5QzogWy40NCwgLjAwNiwgLjUyNV0sXG4gICAgMHgxRDY5RDogWy41NTQsIC4wMDYsIC41MjVdLFxuICAgIDB4MUQ2OUU6IFsuNDMxLCAuMDA1LCAuNTI1XSxcbiAgICAweDFENjlGOiBbLjQzMSwgMCwgLjUyNV0sXG4gICAgMHgxRDZBMDogWy40MzEsIDAsIC41MjVdLFxuICAgIDB4MUQ2QTE6IFsuNDMxLCAwLCAuNTI1XSxcbiAgICAweDFENkEyOiBbLjQzMSwgLjIyOCwgLjUyNV0sXG4gICAgMHgxRDZBMzogWy40MzEsIDAsIC41MjVdLFxuICAgIDB4MUQ2QTg6IFsuNjk4LCAwLCAuODY5XSxcbiAgICAweDFENkE5OiBbLjY4NiwgMCwgLjgxOF0sXG4gICAgMHgxRDZBQTogWy42OCwgMCwgLjY5Ml0sXG4gICAgMHgxRDZBQjogWy42OTgsIDAsIC45NThdLFxuICAgIDB4MUQ2QUM6IFsuNjgsIDAsIC43NTZdLFxuICAgIDB4MUQ2QUQ6IFsuNjg2LCAwLCAuNzAzXSxcbiAgICAweDFENkFFOiBbLjY4NiwgMCwgLjldLFxuICAgIDB4MUQ2QUY6IFsuNjk2LCAuMDEsIC44OTRdLFxuICAgIDB4MUQ2QjA6IFsuNjg2LCAwLCAuNDM2XSxcbiAgICAweDFENkIxOiBbLjY4NiwgMCwgLjkwMV0sXG4gICAgMHgxRDZCMjogWy42OTgsIDAsIC44MDZdLFxuICAgIDB4MUQ2QjM6IFsuNjg2LCAwLCAxLjA5Ml0sXG4gICAgMHgxRDZCNDogWy42ODYsIDAsIC45XSxcbiAgICAweDFENkI1OiBbLjY3NSwgMCwgLjc2N10sXG4gICAgMHgxRDZCNjogWy42OTYsIC4wMSwgLjg2NF0sXG4gICAgMHgxRDZCNzogWy42OCwgMCwgLjldLFxuICAgIDB4MUQ2Qjg6IFsuNjg2LCAwLCAuNzg2XSxcbiAgICAweDFENkJBOiBbLjY4NiwgMCwgLjgzMV0sXG4gICAgMHgxRDZCQjogWy42NzUsIDAsIC44XSxcbiAgICAweDFENkJDOiBbLjY5NywgMCwgLjg5NF0sXG4gICAgMHgxRDZCRDogWy42ODYsIDAsIC44MzFdLFxuICAgIDB4MUQ2QkU6IFsuNjg2LCAwLCAuODY5XSxcbiAgICAweDFENkJGOiBbLjY4NiwgMCwgLjg5NF0sXG4gICAgMHgxRDZDMDogWy42OTYsIDAsIC44MzFdLFxuICAgIDB4MUQ2QzE6IFsuNjg2LCAuMDI0LCAuOTU4XSxcbiAgICAweDFENkUyOiBbLjcxNiwgMCwgLjc1LCB7c2s6IC4xMzl9XSxcbiAgICAweDFENkUzOiBbLjY4MywgMCwgLjc1OSwge3NrOiAuMDgzM31dLFxuICAgIDB4MUQ2RTQ6IFsuNjgsIDAsIC42MTUsIHtpYzogLjEwNiwgc2s6IC4wODMzfV0sXG4gICAgMHgxRDZFNTogWy43MTYsIDAsIC44MzMsIHtzazogLjE2N31dLFxuICAgIDB4MUQ2RTY6IFsuNjgsIDAsIC43MzgsIHtpYzogLjAyNiwgc2s6IC4wODMzfV0sXG4gICAgMHgxRDZFNzogWy42ODMsIDAsIC42ODMsIHtpYzogLjA0LCBzazogLjA4MzN9XSxcbiAgICAweDFENkU4OiBbLjY4MywgMCwgLjgzMSwge2ljOiAuMDU3LCBzazogLjA1NTZ9XSxcbiAgICAweDFENkU5OiBbLjcwNCwgLjAyMiwgLjc2Mywge3NrOiAuMDgzM31dLFxuICAgIDB4MUQ2RUE6IFsuNjgzLCAwLCAuNDQsIHtpYzogLjA2NCwgc2s6IC4xMTF9XSxcbiAgICAweDFENkVCOiBbLjY4MywgMCwgLjg0OSwge2ljOiAuMDQsIHNrOiAuMDU1Nn1dLFxuICAgIDB4MUQ2RUM6IFsuNzE2LCAwLCAuNjk0LCB7c2s6IC4xNjd9XSxcbiAgICAweDFENkVEOiBbLjY4MywgMCwgLjk3LCB7aWM6IC4wODEsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ2RUU6IFsuNjgzLCAwLCAuODAzLCB7aWM6IC4wODUsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ2RUY6IFsuNjc3LCAwLCAuNzQyLCB7aWM6IC4wMzUsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ2RjA6IFsuNzA0LCAuMDIyLCAuNzYzLCB7c2s6IC4wODMzfV0sXG4gICAgMHgxRDZGMTogWy42OCwgMCwgLjgzMSwge2ljOiAuMDU2LCBzazogLjA1NTZ9XSxcbiAgICAweDFENkYyOiBbLjY4MywgMCwgLjY0Miwge2ljOiAuMTA5LCBzazogLjA4MzN9XSxcbiAgICAweDFENkY0OiBbLjY4MywgMCwgLjc4LCB7aWM6IC4wMjYsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ2RjU6IFsuNjc3LCAwLCAuNTg0LCB7aWM6IC4xMiwgc2s6IC4wODMzfV0sXG4gICAgMHgxRDZGNjogWy43MDUsIDAsIC41ODMsIHtpYzogLjExNywgc2s6IC4wNTU2fV0sXG4gICAgMHgxRDZGNzogWy42ODMsIDAsIC42NjcsIHtzazogLjA4MzN9XSxcbiAgICAweDFENkY4OiBbLjY4MywgMCwgLjgyOCwge2ljOiAuMDI0LCBzazogLjA4MzN9XSxcbiAgICAweDFENkY5OiBbLjY4MywgMCwgLjYxMiwge2ljOiAuMDgsIHNrOiAuMDU1Nn1dLFxuICAgIDB4MUQ2RkE6IFsuNzA0LCAwLCAuNzcyLCB7aWM6IC4wMTQsIHNrOiAuMDgzM31dLFxuICAgIDB4MUQ2RkM6IFsuNDQyLCAuMDExLCAuNjQsIHtzazogLjAyNzh9XSxcbiAgICAweDFENkZEOiBbLjcwNSwgLjE5NCwgLjU2Niwge3NrOiAuMDgzM31dLFxuICAgIDB4MUQ2RkU6IFsuNDQxLCAuMjE2LCAuNTE4LCB7aWM6IC4wMjV9XSxcbiAgICAweDFENkZGOiBbLjcxNywgLjAxLCAuNDQ0LCB7c2s6IC4wNTU2fV0sXG4gICAgMHgxRDcwMDogWy40NTIsIC4wMjIsIC40NjYsIHtzazogLjA4MzN9XSxcbiAgICAweDFENzAxOiBbLjcwNCwgLjIwNCwgLjQzOCwge2ljOiAuMDMzLCBzazogLjA4MzN9XSxcbiAgICAweDFENzAyOiBbLjQ0MiwgLjIxNiwgLjQ5Nywge3NrOiAuMDU1Nn1dLFxuICAgIDB4MUQ3MDM6IFsuNzA1LCAuMDEsIC40NjksIHtzazogLjA4MzN9XSxcbiAgICAweDFENzA0OiBbLjQ0MiwgLjAxLCAuMzU0LCB7c2s6IC4wNTU2fV0sXG4gICAgMHgxRDcwNTogWy40NDIsIC4wMTEsIC41NzZdLFxuICAgIDB4MUQ3MDY6IFsuNjk0LCAuMDEyLCAuNTgzXSxcbiAgICAweDFENzA3OiBbLjQ0MiwgLjIxNiwgLjYwMywge3NrOiAuMDI3OH1dLFxuICAgIDB4MUQ3MDg6IFsuNDQyLCAwLCAuNDk0LCB7aWM6IC4wMzYsIHNrOiAuMDI3OH1dLFxuICAgIDB4MUQ3MDk6IFsuNzA0LCAuMjA1LCAuNDM4LCB7c2s6IC4xMTF9XSxcbiAgICAweDFENzBBOiBbLjQ0MSwgLjAxMSwgLjQ4NSwge3NrOiAuMDU1Nn1dLFxuICAgIDB4MUQ3MEI6IFsuNDMxLCAuMDExLCAuNTddLFxuICAgIDB4MUQ3MEM6IFsuNDQyLCAuMjE2LCAuNTE3LCB7c2s6IC4wODMzfV0sXG4gICAgMHgxRDcwRDogWy40NDIsIC4xMDcsIC4zNjMsIHtpYzogLjA0Miwgc2s6IC4wODMzfV0sXG4gICAgMHgxRDcwRTogWy40MzEsIC4wMTEsIC41NzFdLFxuICAgIDB4MUQ3MEY6IFsuNDMxLCAuMDEzLCAuNDM3LCB7aWM6IC4wOCwgc2s6IC4wMjc4fV0sXG4gICAgMHgxRDcxMDogWy40NDMsIC4wMSwgLjU0LCB7c2s6IC4wMjc4fV0sXG4gICAgMHgxRDcxMTogWy40NDIsIC4yMTgsIC42NTQsIHtzazogLjA4MzN9XSxcbiAgICAweDFENzEyOiBbLjQ0MiwgLjIwNCwgLjYyNiwge3NrOiAuMDU1Nn1dLFxuICAgIDB4MUQ3MTM6IFsuNjk0LCAuMjA1LCAuNjUxLCB7c2s6IC4xMTF9XSxcbiAgICAweDFENzE0OiBbLjQ0MywgLjAxMSwgLjYyMl0sXG4gICAgMHgxRDcxNTogWy43MTUsIC4wMjIsIC41MzEsIHtpYzogLjAzNSwgc2s6IC4wODMzfV0sXG4gICAgMHgxRDcxNjogWy40MzEsIC4wMTEsIC40MDYsIHtzazogLjA1NTZ9XSxcbiAgICAweDFENzE3OiBbLjcwNSwgLjAxMSwgLjU5MSwge3NrOiAuMDgzM31dLFxuICAgIDB4MUQ3MTg6IFsuNDM0LCAuMDA2LCAuNjY3LCB7aWM6IC4wNjd9XSxcbiAgICAweDFENzE5OiBbLjY5NCwgLjIwNSwgLjU5Niwge3NrOiAuMDgzM31dLFxuICAgIDB4MUQ3MUE6IFsuNDQyLCAuMTk0LCAuNTE3LCB7c2s6IC4wODMzfV0sXG4gICAgMHgxRDcxQjogWy40MzEsIC4wMSwgLjgyOF0sXG4gICAgMHgxRDcxQzogWy43MTEsIDAsIC44NjksIHtzazogLjE2fV0sXG4gICAgMHgxRDcxRDogWy42ODYsIDAsIC44NjYsIHtzazogLjA5NTh9XSxcbiAgICAweDFENzFFOiBbLjY4LCAwLCAuNjU3LCB7aWM6IC4xMiwgc2s6IC4wOTU4fV0sXG4gICAgMHgxRDcxRjogWy43MTEsIDAsIC45NTgsIHtzazogLjE5Mn1dLFxuICAgIDB4MUQ3MjA6IFsuNjgsIDAsIC44MSwge2ljOiAuMDE1LCBzazogLjA5NTh9XSxcbiAgICAweDFENzIxOiBbLjY4NiwgMCwgLjc3Mywge2ljOiAuMDMyLCBzazogLjA5NTh9XSxcbiAgICAweDFENzIyOiBbLjY4NiwgMCwgLjk4Miwge2ljOiAuMDQ1LCBzazogLjA2Mzl9XSxcbiAgICAweDFENzIzOiBbLjcwMiwgLjAxNywgLjg2Nywge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ3MjQ6IFsuNjg2LCAwLCAuNTExLCB7aWM6IC4wNjIsIHNrOiAuMTI4fV0sXG4gICAgMHgxRDcyNTogWy42ODYsIDAsIC45NzEsIHtpYzogLjAzMiwgc2s6IC4wNjM5fV0sXG4gICAgMHgxRDcyNjogWy43MTEsIDAsIC44MDYsIHtzazogLjE5Mn1dLFxuICAgIDB4MUQ3Mjc6IFsuNjg2LCAwLCAxLjE0Miwge2ljOiAuMDc3LCBzazogLjA5NTh9XSxcbiAgICAweDFENzI4OiBbLjY4NiwgMCwgLjk1LCB7aWM6IC4wNzcsIHNrOiAuMDk1OH1dLFxuICAgIDB4MUQ3Mjk6IFsuNjc1LCAwLCAuODQxLCB7aWM6IC4wMjYsIHNrOiAuMDk1OH1dLFxuICAgIDB4MUQ3MkE6IFsuNzAzLCAuMDE3LCAuODM3LCB7c2s6IC4wOTU4fV0sXG4gICAgMHgxRDcyQjogWy42OCwgMCwgLjk4Miwge2ljOiAuMDQ0LCBzazogLjA2Mzl9XSxcbiAgICAweDFENzJDOiBbLjY4NiwgMCwgLjcyMywge2ljOiAuMTI0LCBzazogLjA5NTh9XSxcbiAgICAweDFENzJFOiBbLjY4NiwgMCwgLjg4NSwge2ljOiAuMDE3LCBzazogLjA5NTh9XSxcbiAgICAweDFENzJGOiBbLjY3NSwgMCwgLjYzNywge2ljOiAuMTM1LCBzazogLjA5NTh9XSxcbiAgICAweDFENzMwOiBbLjcwMywgMCwgLjY3MSwge2ljOiAuMTMxLCBzazogLjA2Mzl9XSxcbiAgICAweDFENzMxOiBbLjY4NiwgMCwgLjc2Nywge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ3MzI6IFsuNjg2LCAwLCAuOTQ3LCB7c2s6IC4wOTU4fV0sXG4gICAgMHgxRDczMzogWy42ODYsIDAsIC43MTQsIHtpYzogLjA3Niwgc2s6IC4wNjM5fV0sXG4gICAgMHgxRDczNDogWy43MDMsIDAsIC44NzksIHtzazogLjA5NTh9XSxcbiAgICAweDFENzM2OiBbLjQ1MiwgLjAwOCwgLjc2MSwge3NrOiAuMDMxOX1dLFxuICAgIDB4MUQ3Mzc6IFsuNzAxLCAuMTk0LCAuNjYsIHtzazogLjA5NTh9XSxcbiAgICAweDFENzM4OiBbLjQ1MSwgLjIxMSwgLjU5LCB7aWM6IC4wMjd9XSxcbiAgICAweDFENzM5OiBbLjcyNSwgLjAwOCwgLjUyMiwge3NrOiAuMDYzOX1dLFxuICAgIDB4MUQ3M0E6IFsuNDYxLCAuMDE3LCAuNTI5LCB7c2s6IC4wOTU4fV0sXG4gICAgMHgxRDczQjogWy43MTEsIC4yMDIsIC41MDgsIHtpYzogLjAxMywgc2s6IC4wOTU4fV0sXG4gICAgMHgxRDczQzogWy40NTIsIC4yMTEsIC42LCB7c2s6IC4wNjM5fV0sXG4gICAgMHgxRDczRDogWy43MDIsIC4wMDgsIC41NjIsIHtzazogLjA5NTh9XSxcbiAgICAweDFENzNFOiBbLjQ1MiwgLjAwOCwgLjQxMiwge3NrOiAuMDYzOX1dLFxuICAgIDB4MUQ3M0Y6IFsuNDUyLCAuMDA4LCAuNjY4XSxcbiAgICAweDFENzQwOiBbLjY5NCwgLjAxMywgLjY3MV0sXG4gICAgMHgxRDc0MTogWy40NTIsIC4yMTEsIC43MDgsIHtzazogLjAzMTl9XSxcbiAgICAweDFENzQyOiBbLjQ1MiwgMCwgLjU3Nywge2ljOiAuMDMxLCBzazogLjAzMTl9XSxcbiAgICAweDFENzQzOiBbLjcxMSwgLjIwMSwgLjUwOCwge3NrOiAuMTI4fV0sXG4gICAgMHgxRDc0NDogWy40NTIsIC4wMDgsIC41ODUsIHtzazogLjA2Mzl9XSxcbiAgICAweDFENzQ1OiBbLjQ0NCwgLjAwOCwgLjY4Ml0sXG4gICAgMHgxRDc0NjogWy40NTEsIC4yMTEsIC42MTIsIHtzazogLjA5NTh9XSxcbiAgICAweDFENzQ3OiBbLjQ1MSwgLjEwNSwgLjQyNCwge2ljOiAuMDMzLCBzazogLjA5NTh9XSxcbiAgICAweDFENzQ4OiBbLjQ0NCwgLjAwOCwgLjY4Nl0sXG4gICAgMHgxRDc0OTogWy40NDQsIC4wMTMsIC41MjEsIHtpYzogLjA4OSwgc2s6IC4wMzE5fV0sXG4gICAgMHgxRDc0QTogWy40NTMsIC4wMDgsIC42MzEsIHtzazogLjAzMTl9XSxcbiAgICAweDFENzRCOiBbLjQ1MiwgLjIxNiwgLjc0Nywge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ3NEM6IFsuNDUyLCAuMjAxLCAuNzE4LCB7c2s6IC4wNjM5fV0sXG4gICAgMHgxRDc0RDogWy42OTQsIC4yMDIsIC43NTgsIHtzazogLjEyOH1dLFxuICAgIDB4MUQ3NEU6IFsuNDUzLCAuMDA4LCAuNzE4XSxcbiAgICAweDFENzRGOiBbLjcxLCAuMDE3LCAuNjI4LCB7aWM6IC4wMjksIHNrOiAuMDk1OH1dLFxuICAgIDB4MUQ3NTA6IFsuNDQ0LCAuMDA3LCAuNDgzLCB7c2s6IC4wNjM5fV0sXG4gICAgMHgxRDc1MTogWy43MDEsIC4wMDgsIC42OTIsIHtzazogLjA5NTh9XSxcbiAgICAweDFENzUyOiBbLjQzNCwgLjAwNiwgLjY2Nywge2ljOiAuMDY3fV0sXG4gICAgMHgxRDc1MzogWy42OTQsIC4yMDIsIC43MTIsIHtzazogLjA5NTh9XSxcbiAgICAweDFENzU0OiBbLjQ1MSwgLjE5NCwgLjYxMiwge3NrOiAuMDk1OH1dLFxuICAgIDB4MUQ3NTU6IFsuNDQ0LCAuMDA4LCAuOTc1XSxcbiAgICAweDFENzU2OiBbLjY5NCwgMCwgLjczM10sXG4gICAgMHgxRDc1NzogWy42OTQsIDAsIC43MzNdLFxuICAgIDB4MUQ3NTg6IFsuNjkxLCAwLCAuNTgxXSxcbiAgICAweDFENzU5OiBbLjY5NCwgMCwgLjkxN10sXG4gICAgMHgxRDc1QTogWy42OTEsIDAsIC42NDJdLFxuICAgIDB4MUQ3NUI6IFsuNjk0LCAwLCAuNjcyXSxcbiAgICAweDFENzVDOiBbLjY5NCwgMCwgLjc5NF0sXG4gICAgMHgxRDc1RDogWy43MTYsIC4wMjIsIC44NTZdLFxuICAgIDB4MUQ3NUU6IFsuNjk0LCAwLCAuMzMxXSxcbiAgICAweDFENzVGOiBbLjY5NCwgMCwgLjc2NF0sXG4gICAgMHgxRDc2MDogWy42OTQsIDAsIC42NzJdLFxuICAgIDB4MUQ3NjE6IFsuNjk0LCAwLCAuOTc4XSxcbiAgICAweDFENzYyOiBbLjY5NCwgMCwgLjc5NF0sXG4gICAgMHgxRDc2MzogWy42ODgsIDAsIC43MzNdLFxuICAgIDB4MUQ3NjQ6IFsuNzE2LCAuMDIyLCAuNzk0XSxcbiAgICAweDFENzY1OiBbLjY5MSwgMCwgLjc5NF0sXG4gICAgMHgxRDc2NjogWy42OTQsIDAsIC43MDNdLFxuICAgIDB4MUQ3Njg6IFsuNjk0LCAwLCAuNzk0XSxcbiAgICAweDFENzY5OiBbLjY4OCwgMCwgLjczM10sXG4gICAgMHgxRDc2QTogWy43MTUsIDAsIC44NTZdLFxuICAgIDB4MUQ3NkI6IFsuNjk0LCAwLCAuNzk0XSxcbiAgICAweDFENzZDOiBbLjY5NCwgMCwgLjczM10sXG4gICAgMHgxRDc2RDogWy42OTQsIDAsIC44NTZdLFxuICAgIDB4MUQ3NkU6IFsuNzE2LCAwLCAuNzk0XSxcbiAgICAweDFEN0NFOiBbLjY1NCwgLjAxLCAuNTc1XSxcbiAgICAweDFEN0NGOiBbLjY1NSwgMCwgLjU3NV0sXG4gICAgMHgxRDdEMDogWy42NTQsIDAsIC41NzVdLFxuICAgIDB4MUQ3RDE6IFsuNjU1LCAuMDExLCAuNTc1XSxcbiAgICAweDFEN0QyOiBbLjY1NiwgMCwgLjU3NV0sXG4gICAgMHgxRDdEMzogWy42NTUsIC4wMTEsIC41NzVdLFxuICAgIDB4MUQ3RDQ6IFsuNjU1LCAuMDExLCAuNTc1XSxcbiAgICAweDFEN0Q1OiBbLjY3NiwgLjAxMSwgLjU3NV0sXG4gICAgMHgxRDdENjogWy42NTQsIC4wMTEsIC41NzVdLFxuICAgIDB4MUQ3RDc6IFsuNjU0LCAuMDExLCAuNTc1XSxcbiAgICAweDFEN0UyOiBbLjY3OCwgLjAyMiwgLjVdLFxuICAgIDB4MUQ3RTM6IFsuNjc4LCAwLCAuNV0sXG4gICAgMHgxRDdFNDogWy42NzcsIDAsIC41XSxcbiAgICAweDFEN0U1OiBbLjY3OCwgLjAyMiwgLjVdLFxuICAgIDB4MUQ3RTY6IFsuNjU2LCAwLCAuNV0sXG4gICAgMHgxRDdFNzogWy42NTYsIC4wMjEsIC41XSxcbiAgICAweDFEN0U4OiBbLjY3NywgLjAyMiwgLjVdLFxuICAgIDB4MUQ3RTk6IFsuNjU2LCAuMDExLCAuNV0sXG4gICAgMHgxRDdFQTogWy42NzgsIC4wMjIsIC41XSxcbiAgICAweDFEN0VCOiBbLjY3NywgLjAyMiwgLjVdLFxuICAgIDB4MUQ3RUM6IFsuNzE1LCAuMDIyLCAuNTVdLFxuICAgIDB4MUQ3RUQ6IFsuNzE2LCAwLCAuNTVdLFxuICAgIDB4MUQ3RUU6IFsuNzE2LCAwLCAuNTVdLFxuICAgIDB4MUQ3RUY6IFsuNzE2LCAuMDIyLCAuNTVdLFxuICAgIDB4MUQ3RjA6IFsuNjk0LCAwLCAuNTVdLFxuICAgIDB4MUQ3RjE6IFsuNjk0LCAuMDIyLCAuNTVdLFxuICAgIDB4MUQ3RjI6IFsuNzE2LCAuMDIyLCAuNTVdLFxuICAgIDB4MUQ3RjM6IFsuNjk1LCAuMDExLCAuNTVdLFxuICAgIDB4MUQ3RjQ6IFsuNzE1LCAuMDIyLCAuNTVdLFxuICAgIDB4MUQ3RjU6IFsuNzE2LCAuMDIyLCAuNTVdLFxuICAgIDB4MUQ3RjY6IFsuNjIxLCAuMDEsIC41MjVdLFxuICAgIDB4MUQ3Rjc6IFsuNjIyLCAwLCAuNTI1XSxcbiAgICAweDFEN0Y4OiBbLjYyMiwgMCwgLjUyNV0sXG4gICAgMHgxRDdGOTogWy42MjIsIC4wMTEsIC41MjVdLFxuICAgIDB4MUQ3RkE6IFsuNjI0LCAwLCAuNTI1XSxcbiAgICAweDFEN0ZCOiBbLjYxMSwgLjAxLCAuNTI1XSxcbiAgICAweDFEN0ZDOiBbLjYyMiwgLjAxMSwgLjUyNV0sXG4gICAgMHgxRDdGRDogWy42MjcsIC4wMSwgLjUyNV0sXG4gICAgMHgxRDdGRTogWy42MjEsIC4wMSwgLjUyNV0sXG4gICAgMHgxRDdGRjogWy42MjIsIC4wMTEsIC41MjVdLFxufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1NWR0NoYXJNYXAsIEFkZFBhdGhzfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge25vcm1hbCBhcyBmb250fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9udHMvdGV4L25vcm1hbC5qcyc7XG5cbmV4cG9ydCBjb25zdCBub3JtYWw6IFNWR0NoYXJNYXAgPSBBZGRQYXRocyhmb250LCB7XG4gICAgMHgyMDogJycsXG4gICAgMHgyMTogJzc4IDY2MVE3OCA2ODIgOTYgNjk5VDEzOCA3MTZUMTgwIDcwMFQxOTkgNjYxUTE5OSA2NTQgMTc5IDQzMlQxNTggMjA2UTE1NiAxOTggMTM5IDE5OFExMjEgMTk4IDExOSAyMDZRMTE4IDIwOSA5OCA0MzFUNzggNjYxWk03OSA2MVE3OSA4OSA5NyAxMDVUMTQxIDEyMVExNjQgMTE5IDE4MSAxMDRUMTk4IDYxUTE5OCAzMSAxODEgMTZUMTM5IDFRMTE0IDEgOTcgMTZUNzkgNjEnLFxuICAgIDB4MjI6ICczNCA2MzRRMzQgNjU5IDUwIDY3NlQ5MyA2OTRRMTIxIDY5NCAxNDQgNjY4VDE2OCA1NzlRMTY4IDUyNSAxNDYgNDc2VDEwMSA0MDNUNzMgMzc5UTY5IDM3OSA2MCAzODhUNTAgNDAxUTUwIDQwNCA2MiA0MTdUODggNDQ4VDExNiA1MDBUMTMxIDU3MlExMzEgNTg0IDEzMCA1ODRUMTI1IDU4MVQxMTIgNTc2VDk0IDU3M1E2OSA1NzMgNTIgNTkwVDM0IDYzNFpNMjM4IDYzNFEyMzggNjU5IDI1NCA2NzZUMjk3IDY5NFEzMjUgNjk0IDM0OCA2NjhUMzcyIDU3OVEzNzIgNTI1IDM1MCA0NzZUMzA1IDQwM1QyNzcgMzc5UTI3MyAzNzkgMjY0IDM4OFQyNTQgNDAxUTI1NCA0MDQgMjY2IDQxN1QyOTIgNDQ4VDMyMCA1MDBUMzM1IDU3MlEzMzUgNTg0IDMzNCA1ODRUMzI5IDU4MVQzMTYgNTc2VDI5OCA1NzNRMjczIDU3MyAyNTYgNTkwVDIzOCA2MzQnLFxuICAgIDB4MjM6ICc1NiAzNDdRNTYgMzYwIDcwIDM2N0gzMTNMMzU1IDUyNFEzOTQgNjc2IDQwMSA2ODZRNDA2IDY5NCA0MTYgNjk0UTQzNCA2OTQgNDM2IDY3NlE0MzYgNjcyIDM5NiA1MjJRMzU1IDM3NCAzNTUgMzY5TDM1NCAzNjdINTQzTDU4NSA1MjRRNjI2IDY3OSA2MzAgNjg1UTYzNiA2OTQgNjQ2IDY5NFE2NTMgNjk0IDY1OSA2ODlUNjY1IDY3OFE2NjUgNjY4IDYyNiA1MjJRNTg1IDM3NCA1ODUgMzY5TDU4NCAzNjdINzYyUTc3NyAzNTkgNzc3IDM0N1E3NzcgMzM0IDc2NyAzMzFUNzIyIDMyN0g2NjdINTcyTDU1MiAyNTFMNTMxIDE3NFE1MzEgMTczIDY0NyAxNzNINzIwUTc1NiAxNzMgNzY2IDE3MFQ3NzcgMTUzVDc2MiAxMzNINTE5TDQ3NyAtMjRRNDM2IC0xNzkgNDMyIC0xODVRNDI2IC0xOTQgNDE2IC0xOTRRNDA5IC0xOTQgNDAzIC0xODlUMzk3IC0xNzdRMzk3IC0xNjcgNDM2IC0yMVE0NzcgMTI1IDQ3NyAxMzFMNDc4IDEzM0gyODlMMjQ3IC0yNFEyMDYgLTE3OSAyMDIgLTE4NVExOTYgLTE5NCAxODYgLTE5NFExNzkgLTE5NCAxNzMgLTE4OVQxNjcgLTE3N1ExNjcgLTE2NyAyMDYgLTIxUTI0NyAxMjUgMjQ3IDEzMUwyNDggMTMzSDcwUTU2IDE0MCA1NiAxNTNRNTYgMTY4IDcyIDE3M0gyNjBMMjgwIDI0OUwzMDEgMzI2UTMwMSAzMjcgMTg2IDMyN0g3MlE1NiAzMzIgNTYgMzQ3Wk01MzEgMzI2UTUzMSAzMjcgNDM3IDMyN0gzNDJMMzIyIDI1MUwzMDEgMTc0UTMwMSAxNzMgMzk1IDE3M0g0OTBMNTEwIDI0OUw1MzEgMzI2JyxcbiAgICAweDI0OiAnMTYyIDE4N1ExNjIgMTY0IDE0NiAxNDlUMTA5IDEzM0gxMDNWMTMwUTEwOCAxMTUgMTE1IDEwNVExMjIgOTIgMTMxIDgyVDE1MCA2NFQxNzAgNTJUMTkwIDQ0VDIwNiA0MFQyMjAgMzdMMjI3IDM2VjMxM1ExOTAgMzIwIDE2MiAzMzVRMTE2IDM1OCA4NiA0MDRUNTUgNTA4UTU1IDU2NyA4NSA2MTRUMTY1IDY4NVExODYgNjk2IDIyNSA3MDRIMjI3Vjc1MEgyNzNWNzA0TDI4NiA3MDNRMzY5IDY5MCA0MTMgNjMxUTQ0MSA1ODggNDQ0IDUzMVE0NDQgNTE0IDQ0MyA1MDlRNDM5IDQ5MCA0MjUgNDc5VDM5MSA0NjhRMzY4IDQ2OCAzNTMgNDgzVDMzNyA1MjJRMzM3IDU0NiAzNTMgNTYwVDM5MCA1NzVMMzk0IDU3NlY1NzhRMzg2IDU5OSAzNzIgNjE0VDM0MiA2MzdUMzE0IDY0OVQyODggNjU2TDI3MyA2NThWNDA4TDI4OCA0MDVRMzI5IDM5NCAzNTUgMzc2UTM5NiAzNDggNDIwIDMwMFQ0NDQgMTk5UTQ0NCAxMzAgNDA4IDc2VDMxMyAxUTI4NiAtOSAyNzYgLTlIMjczVi01NkgyMjdWLTEwSDIyMVEyMDIgLTYgMTkzIC00VDE1NSAxMVQxMDggNDFUNzQgOTRUNTUgMTc2VjE4MlE1NSAyMjcgOTUgMjM4UTEwMyAyNDAgMTA4IDI0MFExMjkgMjQwIDE0NSAyMjZUMTYyIDE4N1pNMjI1IDY1N1EyMTkgNjU3IDIwNCA2NTFUMTY5IDYzMlQxMzUgNTk0VDEyMSA1MzhRMTIxIDUxMiAxMzEgNDkxVDE1NiA0NTdUMTg3IDQzNVQyMTMgNDIzVDIyNyA0MjBWNTM5UTIyNyA2NTcgMjI1IDY1N1pNMzc4IDE2OVEzNzggMjMwIDMzOSAyNjVUMjc0IDMwMVEyNzMgMzAxIDI3MyAxNjlWMzdRMzI0IDUwIDM1MSA4N1QzNzggMTY5JyxcbiAgICAweDI1OiAnNDY1IDYwNVE0MjggNjA1IDM5NCA2MTRUMzQwIDYzMlQzMTkgNjQxUTMzMiA2MDggMzMyIDU0OFEzMzIgNDU4IDI5MyA0MDNUMjAyIDM0N1ExNDUgMzQ3IDEwMSA0MDJUNTYgNTQ4UTU2IDYzNyAxMDEgNjkzVDIwMiA3NTBRMjQxIDc1MCAyNzIgNzE5UTM1OSA2NDIgNDY0IDY0MlE1ODAgNjQyIDY1MCA3MzJRNjYyIDc0OCA2NjggNzQ5UTY3MCA3NTAgNjczIDc1MFE2ODIgNzUwIDY4OCA3NDNUNjkzIDcyNlExNzggLTQ3IDE3MCAtNTJRMTY2IC01NiAxNjAgLTU2UTE0NyAtNTYgMTQyIC00NVExMzcgLTM2IDE0MiAtMjdRMTQzIC0yNCAzNjMgMzA0UTQ2OSA0NjIgNTI1IDU0NlQ1ODEgNjMwUTUyOCA2MDUgNDY1IDYwNVpNMjA3IDM4NVEyMzUgMzg1IDI2MyA0MjdUMjkyIDU0OFEyOTIgNjE3IDI2NyA2NjRUMjAwIDcxMlExOTMgNzEyIDE4NiA3MDlUMTY3IDY5OFQxNDcgNjY4VDEzNCA2MTVRMTMyIDU5NSAxMzIgNTQ4VjUyN1ExMzIgNDM2IDE2NSA0MDNRMTgzIDM4NSAyMDMgMzg1SDIwN1pNNTAwIDE0NlE1MDAgMjM0IDU0NCAyOTBUNjQ3IDM0N1E2OTkgMzQ3IDczNyAyOTJUNzc2IDE0NlQ3MzcgMFQ2NDYgLTU2UTU5MCAtNTYgNTQ1IDBUNTAwIDE0NlpNNjUxIC0xOFE2NzkgLTE4IDcwNyAyNFQ3MzYgMTQ2UTczNiAyMTUgNzExIDI2MlQ2NDQgMzA5UTYzNyAzMDkgNjMwIDMwNlQ2MTEgMjk1VDU5MSAyNjVUNTc4IDIxMlE1NzcgMjAwIDU3NyAxNDZWMTI0UTU3NyAtMTggNjQ3IC0xOEg2NTEnLFxuICAgIDB4MjY6ICcxNTYgNTQwUTE1NiA2MjAgMjAxIDY2OFQzMDIgNzE2UTM1NCA3MTYgMzc3IDY3MVQ0MDEgNTc4UTQwMSA1MDUgMjg3IDM4NkwyNzQgMzczUTMwOSAyODUgNDE2IDE0OEw0MjkgMTMyTDQzNyAxNDJRNDc0IDE5MSA1NDMgMzA5TDU2MiAzNDFWMzQ5UTU2MiAzNjggNTQxIDM3NlQ0OTggMzg1SDQ5M1Y0MzFINTAyTDYyNiA0MjhRNzA5IDQyOCA3MjEgNDMxSDcyN1YzODVINzEyUTY4OCAzODQgNjY5IDM3OVQ2MzkgMzY5VDYxOCAzNTRUNjAzIDMzN1Q1OTEgMzE2VDU3OCAyOTVRNTM3IDIyMyA1MDYgMTc2VDQ2NCAxMTdUNDU0IDEwNFE0NTQgMTAyIDQ3MSA4NVQ0OTcgNjJRNTQzIDI0IDU4NSAyNFE2MTggMjQgNjQ4IDQ4VDY4MiAxMTNWMTIxSDcyMlYxMTJRNzIxIDk0IDcxNCA3NVQ2OTIgMzJUNjQ2IC03VDU3NCAtMjJRNDkxIC0xOSA0MTQgNDJMNDAyIDUxTDM5MSA0MlEzMTIgLTIyIDIyNCAtMjJRMTQ0IC0yMiA5MyAyNVQ0MiAxMzVRNDIgMTUzIDQ2IDE2OVQ1NSAxOTdUNzQgMjI1VDk2IDI0OVQxMjUgMjc4VDE1NiAzMDhMMTk1IDM0N0wxOTAgMzYwUTE4NSAzNzIgMTgyIDM4MlQxNzQgNDExVDE2NSA0NDhUMTU5IDQ5MVQxNTYgNTQwWk0zNjEgNTc2UTM2MSA2MTMgMzQ4IDY0NlQzMDUgNjc5UTI3MiA2NzkgMjUyIDY0OVQyMzIgNTcyUTIzMiA0OTcgMjU1IDQyNkwyNTkgNDExTDI2NyA0MjBRMzYxIDUxOSAzNjEgNTc2Wk0xNDAgMTY0UTE0MCAxMDMgMTY3IDY0VDI0MCAyNFEyNzEgMjQgMzA0IDM2VDM1NiA2MVQzNzQgNzdRMjk1IDE1NiAyMzUgMjYyTDIyMCAyOTJMMjEwIDMxMEwxOTMgMjkzUTE3NyAyNzcgMTY5IDI2OFQxNTEgMjI5VDE0MCAxNjQnLFxuICAgIDB4Mjc6ICc3OCA2MzRRNzggNjU5IDk1IDY3NlQxMzggNjk0UTE2NiA2OTQgMTg5IDY2OFQyMTIgNTc5UTIxMiA1MjUgMTkwIDQ3NlQxNDYgNDAzVDExOCAzNzlRMTE0IDM3OSAxMDUgMzg4VDk1IDQwMVE5NSA0MDQgMTA3IDQxN1QxMzMgNDQ4VDE2MSA1MDBUMTc2IDU3MlExNzYgNTg0IDE3NSA1ODRUMTcwIDU4MVQxNTcgNTc2VDEzOSA1NzNRMTE0IDU3MyA5NiA1OTBUNzggNjM0JyxcbiAgICAweDI4OiAnOTQgMjUwUTk0IDMxOSAxMDQgMzgxVDEyNyA0ODhUMTY0IDU3NlQyMDIgNjQzVDI0NCA2OTVUMjc3IDcyOVQzMDIgNzUwSDMxNUgzMTlRMzMzIDc1MCAzMzMgNzQxUTMzMyA3MzggMzE2IDcyMFQyNzUgNjY3VDIyNiA1ODFUMTg0IDQ0M1QxNjcgMjUwVDE4NCA1OFQyMjUgLTgxVDI3NCAtMTY3VDMxNiAtMjIwVDMzMyAtMjQxUTMzMyAtMjUwIDMxOCAtMjUwSDMxNUgzMDJMMjc0IC0yMjZRMTgwIC0xNDEgMTM3IC0xNFQ5NCAyNTAnLFxuICAgIDB4Mjk6ICc2MCA3NDlMNjQgNzUwUTY5IDc1MCA3NCA3NTBIODZMMTE0IDcyNlEyMDggNjQxIDI1MSA1MTRUMjk0IDI1MFEyOTQgMTgyIDI4NCAxMTlUMjYxIDEyVDIyNCAtNzZUMTg2IC0xNDNUMTQ1IC0xOTRUMTEzIC0yMjdUOTAgLTI0NlE4NyAtMjQ5IDg2IC0yNTBINzRRNjYgLTI1MCA2MyAtMjUwVDU4IC0yNDdUNTUgLTIzOFE1NiAtMjM3IDY2IC0yMjVRMjIxIC02NCAyMjEgMjUwVDY2IDcyNVE1NiA3MzcgNTUgNzM4UTU1IDc0NiA2MCA3NDknLFxuICAgIDB4MkE6ICcyMTUgNzIxUTIxNiA3MzIgMjI1IDc0MVQyNDggNzUwUTI2MyA3NTAgMjczIDc0MlQyODQgNzIxTDI3MCA1NzFMMzI3IDYxM1EzODMgNjU0IDM4OCA2NTdUMzk5IDY2MFE0MTIgNjYwIDQyMyA2NTBUNDM1IDYyNFQ0MjQgNjAwVDM3NiA1NzVRMzYzIDU2OSAzNTUgNTY2TDI4OSA1MzRMMzU1IDUwNEw0MjQgNDcwUTQzNSA0NjIgNDM1IDQ0N1E0MzUgNDMxIDQyNCA0MjBUMzk5IDQwOVEzOTMgNDA5IDM4OCA0MTJUMzI3IDQ1NkwyNzAgNDk4TDI3NyA0MjNMMjg0IDM0OFEyODAgMzIwIDI1MCAzMjBUMjE1IDM0OEwyMjkgNDk4TDE3MiA0NTZRMTE2IDQxNSAxMTEgNDEyVDEwMCA0MDlRODcgNDA5IDc2IDQyMFQ2NCA0NDdRNjQgNDYxIDc1IDQ3MEwxNDQgNTA0TDIxMCA1MzRMMTQ0IDU2NlExMzYgNTcwIDEyMiA1NzZRODMgNTkzIDc0IDYwMFQ2NCA2MjRRNjQgNjM5IDc1IDY0OVQxMDAgNjYwUTEwNiA2NjAgMTExIDY1N1QxNzIgNjEzTDIyOSA1NzFRMjI5IDU3OCAyMjIgNjQzVDIxNSA3MjEnLFxuICAgIDB4MkI6ICc1NiAyMzdUNTYgMjUwVDcwIDI3MEgzNjlWNDIwTDM3MCA1NzBRMzgwIDU4MyAzODkgNTgzUTQwMiA1ODMgNDA5IDU2OFYyNzBINzA3UTcyMiAyNjIgNzIyIDI1MFQ3MDcgMjMwSDQwOVYtNjhRNDAxIC04MiAzOTEgLTgySDM4OUgzODdRMzc1IC04MiAzNjkgLTY4VjIzMEg3MFE1NiAyMzcgNTYgMjUwJyxcbiAgICAweDJDOiAnNzggMzVUNzggNjBUOTQgMTAzVDEzNyAxMjFRMTY1IDEyMSAxODcgOTZUMjEwIDhRMjEwIC0yNyAyMDEgLTYwVDE4MCAtMTE3VDE1NCAtMTU4VDEzMCAtMTg1VDExNyAtMTk0UTExMyAtMTk0IDEwNCAtMTg1VDk1IC0xNzJROTUgLTE2OCAxMDYgLTE1NlQxMzEgLTEyNlQxNTcgLTc2VDE3MyAtM1Y5TDE3MiA4UTE3MCA3IDE2NyA2VDE2MSAzVDE1MiAxVDE0MCAwUTExMyAwIDk2IDE3JyxcbiAgICAweDJEOiAnMTEgMTc5VjI1MkgyNzdWMTc5SDExJyxcbiAgICAweDJFOiAnNzggNjBRNzggODQgOTUgMTAyVDEzOCAxMjBRMTYyIDEyMCAxODAgMTA0VDE5OSA2MVExOTkgMzYgMTgyIDE4VDEzOSAwVDk2IDE3VDc4IDYwJyxcbiAgICAweDJGOiAnNDIzIDc1MFE0MzIgNzUwIDQzOCA3NDRUNDQ0IDczMFE0NDQgNzI1IDI3MSAyNDhUOTIgLTI0MFE4NSAtMjUwIDc1IC0yNTBRNjggLTI1MCA2MiAtMjQ1VDU2IC0yMzFRNTYgLTIyMSAyMzAgMjU3VDQwNyA3NDBRNDExIDc1MCA0MjMgNzUwJyxcbiAgICAweDMwOiAnOTYgNTg1UTE1MiA2NjYgMjQ5IDY2NlEyOTcgNjY2IDM0NSA2NDBUNDIzIDU0OFE0NjAgNDY1IDQ2MCAzMjBRNDYwIDE2NSA0MTcgODNRMzk3IDQxIDM2MiAxNlQzMDEgLTE1VDI1MCAtMjJRMjI0IC0yMiAxOTggLTE2VDEzNyAxNlQ4MiA4M1EzOSAxNjUgMzkgMzIwUTM5IDQ5NCA5NiA1ODVaTTMyMSA1OTdRMjkxIDYyOSAyNTAgNjI5UTIwOCA2MjkgMTc4IDU5N1ExNTMgNTcxIDE0NSA1MjVUMTM3IDMzM1ExMzcgMTc1IDE0NSAxMjVUMTgxIDQ2UTIwOSAxNiAyNTAgMTZRMjkwIDE2IDMxOCA0NlEzNDcgNzYgMzU0IDEzMFQzNjIgMzMzUTM2MiA0NzggMzU0IDUyNFQzMjEgNTk3JyxcbiAgICAweDMxOiAnMjEzIDU3OEwyMDAgNTczUTE4NiA1NjggMTYwIDU2M1QxMDIgNTU2SDgzVjYwMkgxMDJRMTQ5IDYwNCAxODkgNjE3VDI0NSA2NDFUMjczIDY2M1EyNzUgNjY2IDI4NSA2NjZRMjk0IDY2NiAzMDIgNjYwVjM2MUwzMDMgNjFRMzEwIDU0IDMxNSA1MlQzMzkgNDhUNDAxIDQ2SDQyN1YwSDQxNlEzOTUgMyAyNTcgM1ExMjEgMyAxMDAgMEg4OFY0NkgxMTRRMTM2IDQ2IDE1MiA0NlQxNzcgNDdUMTkzIDUwVDIwMSA1MlQyMDcgNTdUMjEzIDYxVjU3OCcsXG4gICAgMHgzMjogJzEwOSA0MjlRODIgNDI5IDY2IDQ0N1Q1MCA0OTFRNTAgNTYyIDEwMyA2MTRUMjM1IDY2NlEzMjYgNjY2IDM4NyA2MTBUNDQ5IDQ2NVE0NDkgNDIyIDQyOSAzODNUMzgxIDMxNVQzMDEgMjQxUTI2NSAyMTAgMjAxIDE0OUwxNDIgOTNMMjE4IDkyUTM3NSA5MiAzODUgOTdRMzkyIDk5IDQwOSAxODZWMTg5SDQ0OVYxODZRNDQ4IDE4MyA0MzYgOTVUNDIxIDNWMEg1MFYxOVYzMVE1MCAzOCA1NiA0NlQ4NiA4MVExMTUgMTEzIDEzNiAxMzdRMTQ1IDE0NyAxNzAgMTc0VDIwNCAyMTFUMjMzIDI0NFQyNjEgMjc4VDI4NCAzMDhUMzA1IDM0MFQzMjAgMzY5VDMzMyA0MDFUMzQwIDQzMVQzNDMgNDY0UTM0MyA1MjcgMzA5IDU3M1QyMTIgNjE5UTE3OSA2MTkgMTU0IDYwMlQxMTkgNTY5VDEwOSA1NTBRMTA5IDU0OSAxMTQgNTQ5UTEzMiA1NDkgMTUxIDUzNVQxNzAgNDg5UTE3MCA0NjQgMTU0IDQ0N1QxMDkgNDI5JyxcbiAgICAweDMzOiAnMTI3IDQ2M1ExMDAgNDYzIDg1IDQ4MFQ2OSA1MjRRNjkgNTc5IDExNyA2MjJUMjMzIDY2NVEyNjggNjY1IDI3NyA2NjRRMzUxIDY1MiAzOTAgNjExVDQzMCA1MjJRNDMwIDQ3MCAzOTYgNDIxVDMwMiAzNTBMMjk5IDM0OFEyOTkgMzQ3IDMwOCAzNDVUMzM3IDMzNlQzNzUgMzE1UTQ1NyAyNjIgNDU3IDE3NVE0NTcgOTYgMzk1IDM3VDIzOCAtMjJRMTU4IC0yMiAxMDAgMjFUNDIgMTMwUTQyIDE1OCA2MCAxNzVUMTA1IDE5M1ExMzMgMTkzIDE1MSAxNzVUMTY5IDEzMFExNjkgMTE5IDE2NiAxMTBUMTU5IDk0VDE0OCA4MlQxMzYgNzRUMTI2IDcwVDExOCA2N0wxMTQgNjZRMTY1IDIxIDIzOCAyMVEyOTMgMjEgMzIxIDc0UTMzOCAxMDcgMzM4IDE3NVYxOTVRMzM4IDI5MCAyNzQgMzIyUTI1OSAzMjggMjEzIDMyOUwxNzEgMzMwTDE2OCAzMzJRMTY2IDMzNSAxNjYgMzQ4UTE2NiAzNjYgMTc0IDM2NlEyMDIgMzY2IDIzMiAzNzFRMjY2IDM3NiAyOTQgNDEzVDMyMiA1MjVWNTMzUTMyMiA1OTAgMjg3IDYxMlEyNjUgNjI2IDI0MCA2MjZRMjA4IDYyNiAxODEgNjE1VDE0MyA1OTJUMTMyIDU4MEgxMzVRMTM4IDU3OSAxNDMgNTc4VDE1MyA1NzNUMTY1IDU2NlQxNzUgNTU1VDE4MyA1NDBUMTg2IDUyMFExODYgNDk4IDE3MiA0ODFUMTI3IDQ2MycsXG4gICAgMHgzNDogJzQ2MiAwUTQ0NCAzIDMzMyAzUTIxNyAzIDE5OSAwSDE5MFY0NkgyMjFRMjQxIDQ2IDI0OCA0NlQyNjUgNDhUMjc5IDUzVDI4NiA2MVEyODcgNjMgMjg3IDExNVYxNjVIMjhWMjExTDE3OSA0NDJRMzMyIDY3NCAzMzQgNjc1UTMzNiA2NzcgMzU1IDY3N0gzNzNMMzc5IDY3MVYyMTFINDcxVjE2NUgzNzlWMTE0UTM3OSA3MyAzNzkgNjZUMzg1IDU0UTM5MyA0NyA0NDIgNDZINDcxVjBINDYyWk0yOTMgMjExVjU0NUw3NCAyMTJMMTgzIDIxMUgyOTMnLFxuICAgIDB4MzU6ICcxNjQgMTU3UTE2NCAxMzMgMTQ4IDExN1QxMDkgMTAxSDEwMlExNDggMjIgMjI0IDIyUTI5NCAyMiAzMjYgODJRMzQ1IDExNSAzNDUgMjEwUTM0NSAzMTMgMzE4IDM0OVEyOTIgMzgyIDI2MCAzODJIMjU0UTE3NiAzODIgMTM2IDMxNFExMzIgMzA3IDEyOSAzMDZUMTE0IDMwNFE5NyAzMDQgOTUgMzEwUTkzIDMxNCA5MyA0ODVWNjE0UTkzIDY2NCA5OCA2NjRRMTAwIDY2NiAxMDIgNjY2UTEwMyA2NjYgMTIzIDY1OFQxNzggNjQyVDI1MyA2MzRRMzI0IDYzNCAzODkgNjYyUTM5NyA2NjYgNDAyIDY2NlE0MTAgNjY2IDQxMCA2NDhWNjM1UTMyOCA1MzggMjA1IDUzOFExNzQgNTM4IDE0OSA1NDRMMTM5IDU0NlYzNzRRMTU4IDM4OCAxNjkgMzk2VDIwNSA0MTJUMjU2IDQyMFEzMzcgNDIwIDM5MyAzNTVUNDQ5IDIwMVE0NDkgMTA5IDM4NSA0NFQyMjkgLTIyUTE0OCAtMjIgOTkgMzJUNTAgMTU0UTUwIDE3OCA2MSAxOTJUODQgMjEwVDEwNyAyMTRRMTMyIDIxNCAxNDggMTk3VDE2NCAxNTcnLFxuICAgIDB4MzY6ICc0MiAzMTNRNDIgNDc2IDEyMyA1NzFUMzAzIDY2NlEzNzIgNjY2IDQwMiA2MzBUNDMyIDU1MFE0MzIgNTI1IDQxOCA1MTBUMzc5IDQ5NVEzNTYgNDk1IDM0MSA1MDlUMzI2IDU0OFEzMjYgNTkyIDM3MyA2MDFRMzUxIDYyMyAzMTEgNjI2UTI0MCA2MjYgMTk0IDU2NlExNDcgNTAwIDE0NyAzNjRMMTQ4IDM2MFExNTMgMzY2IDE1NiAzNzNRMTk3IDQzMyAyNjMgNDMzSDI2N1EzMTMgNDMzIDM0OCA0MTRRMzcyIDQwMCAzOTYgMzc0VDQzNSAzMTdRNDU2IDI2OCA0NTYgMjEwVjE5MlE0NTYgMTY5IDQ1MSAxNDlRNDQwIDkwIDM4NyAzNFQyNTMgLTIyUTIyNSAtMjIgMTk5IC0xNFQxNDMgMTZUOTIgNzVUNTYgMTcyVDQyIDMxM1pNMjU3IDM5N1EyMjcgMzk3IDIwNSAzODBUMTcxIDMzNVQxNTQgMjc4VDE0OCAyMTZRMTQ4IDEzMyAxNjAgOTdUMTk4IDM5UTIyMiAyMSAyNTEgMjFRMzAyIDIxIDMyOSA1OVEzNDIgNzcgMzQ3IDEwNFQzNTIgMjA5UTM1MiAyODkgMzQ3IDMxNlQzMjkgMzYxUTMwMiAzOTcgMjU3IDM5NycsXG4gICAgMHgzNzogJzU1IDQ1OFE1NiA0NjAgNzIgNTY3TDg4IDY3NFE4OCA2NzYgMTA4IDY3NkgxMjhWNjcyUTEyOCA2NjIgMTQzIDY1NVQxOTUgNjQ2VDM2NCA2NDRINDg1VjYwNUw0MTcgNTEyUTQwOCA1MDAgMzg3IDQ3MlQzNjAgNDM1VDMzOSA0MDNUMzE5IDM2N1QzMDUgMzMwVDI5MiAyODRUMjg0IDIzMFQyNzggMTYyVDI3NSA4MFEyNzUgNjYgMjc1IDUyVDI3NCAyOFYxOVEyNzAgMiAyNTUgLTEwVDIyMSAtMjJRMjEwIC0yMiAyMDAgLTE5VDE3OSAwVDE2OCA0MFExNjggMTk4IDI2NSAzNjhRMjg1IDQwMCAzNDkgNDg5TDM5NSA1NTJIMzAyUTEyOCA1NTIgMTE5IDU0NlExMTMgNTQzIDEwOCA1MjJUOTggNDc5TDk1IDQ1OFY0NTVINTVWNDU4JyxcbiAgICAweDM4OiAnNzAgNDE3VDcwIDQ5NFQxMjQgNjE4VDI0OCA2NjZRMzE5IDY2NiAzNzQgNjI0VDQyOSA1MTVRNDI5IDQ4NSA0MTggNDU5VDM5MiA0MTdUMzYxIDM4OVQzMzUgMzcxVDMyNCAzNjNMMzM4IDM1NFEzNTIgMzQ0IDM2NiAzMzRUMzgyIDMyM1E0NTcgMjY0IDQ1NyAxNzRRNDU3IDk1IDM5OSAzN1QyNDkgLTIyUTE1OSAtMjIgMTAxIDI5VDQzIDE1NVE0MyAyNjMgMTcyIDMzNUwxNTQgMzQ4UTEzMyAzNjEgMTI3IDM2OFE3MCA0MTcgNzAgNDk0Wk0yODYgMzg2TDI5MiAzOTBRMjk4IDM5NCAzMDEgMzk2VDMxMSA0MDNUMzIzIDQxM1QzMzQgNDI1VDM0NSA0MzhUMzU1IDQ1NFQzNjQgNDcxVDM2OSA0OTFUMzcxIDUxM1EzNzEgNTU2IDM0MiA1ODZUMjc1IDYyNFEyNjggNjI1IDI0MiA2MjVRMjAxIDYyNSAxNjUgNTk5VDEyOCA1MzRRMTI4IDUxMSAxNDEgNDkyVDE2NyA0NjNUMjE3IDQzMVEyMjQgNDI2IDIyOCA0MjRMMjg2IDM4NlpNMjUwIDIxUTMwOCAyMSAzNTAgNTVUMzkyIDEzN1EzOTIgMTU0IDM4NyAxNjlUMzc1IDE5NFQzNTMgMjE2VDMzMCAyMzRUMzAxIDI1M1QyNzQgMjcwUTI2MCAyNzkgMjQ0IDI4OVQyMTggMzA2TDIxMCAzMTFRMjA0IDMxMSAxODEgMjk0VDEzMyAyMzlUMTA3IDE1N1ExMDcgOTggMTUwIDYwVDI1MCAyMScsXG4gICAgMHgzOTogJzM1MiAyODdRMzA0IDIxMSAyMzIgMjExUTE1NCAyMTEgMTA0IDI3MFQ0NCAzOTZRNDIgNDEyIDQyIDQzNlY0NDRRNDIgNTM3IDExMSA2MDZRMTcxIDY2NiAyNDMgNjY2UTI0NSA2NjYgMjQ5IDY2NlQyNTcgNjY1SDI2MVEyNzMgNjY1IDI4NiA2NjNUMzIzIDY1MVQzNzAgNjE5VDQxMyA1NjBRNDU2IDQ3MiA0NTYgMzM0UTQ1NiAxOTQgMzk2IDk3UTM2MSA0MSAzMTIgMTBUMjA4IC0yMlExNDcgLTIyIDEwOCA3VDY4IDkzVDEyMSAxNDlRMTQzIDE0OSAxNTggMTM1VDE3MyA5NlExNzMgNzggMTY0IDY1VDE0OCA0OVQxMzUgNDRMMTMxIDQzUTEzMSA0MSAxMzggMzdUMTY0IDI3VDIwNiAyMkgyMTJRMjcyIDIyIDMxMyA4NlEzNTIgMTQyIDM1MiAyODBWMjg3Wk0yNDQgMjQ4UTI5MiAyNDggMzIxIDI5N1QzNTEgNDMwUTM1MSA1MDggMzQzIDU0MlEzNDEgNTUyIDMzNyA1NjJUMzIzIDU4OFQyOTMgNjE1VDI0NiA2MjVRMjA4IDYyNSAxODEgNTk4UTE2MCA1NzYgMTU0IDU0NlQxNDcgNDQxUTE0NyAzNTggMTUyIDMyOVQxNzIgMjgyUTE5NyAyNDggMjQ0IDI0OCcsXG4gICAgMHgzQTogJzc4IDM3MFE3OCAzOTQgOTUgNDEyVDEzOCA0MzBRMTYyIDQzMCAxODAgNDE0VDE5OSAzNzFRMTk5IDM0NiAxODIgMzI4VDEzOSAzMTBUOTYgMzI3VDc4IDM3MFpNNzggNjBRNzggODQgOTUgMTAyVDEzOCAxMjBRMTYyIDEyMCAxODAgMTA0VDE5OSA2MVExOTkgMzYgMTgyIDE4VDEzOSAwVDk2IDE3VDc4IDYwJyxcbiAgICAweDNCOiAnNzggMzcwUTc4IDM5NCA5NSA0MTJUMTM4IDQzMFExNjIgNDMwIDE4MCA0MTRUMTk5IDM3MVExOTkgMzQ2IDE4MiAzMjhUMTM5IDMxMFQ5NiAzMjdUNzggMzcwWk03OCA2MFE3OCA4NSA5NCAxMDNUMTM3IDEyMVEyMDIgMTIxIDIwMiA4UTIwMiAtNDQgMTgzIC05NFQxNDQgLTE2OVQxMTggLTE5NFExMTUgLTE5NCAxMDYgLTE4NlQ5NSAtMTc0UTk0IC0xNzEgMTA3IC0xNTVUMTM3IC0xMDdUMTYwIC0zOFExNjEgLTMyIDE2MiAtMjJUMTY1IC00VDE2NSA0UTE2NSA1IDE2MSA0VDE0MiAwUTExMCAwIDk0IDE4VDc4IDYwJyxcbiAgICAweDNDOiAnNjk0IC0xMVQ2OTQgLTE5VDY4OCAtMzNUNjc4IC00MFE2NzEgLTQwIDUyNCAyOVQyMzQgMTY2TDkwIDIzNVE4MyAyNDAgODMgMjUwUTgzIDI2MSA5MSAyNjZRNjY0IDU0MCA2NzggNTQwUTY4MSA1NDAgNjg3IDUzNFQ2OTQgNTE5VDY4NyA1MDVRNjg2IDUwNCA0MTcgMzc2TDE1MSAyNTBMNDE3IDEyNFE2ODYgLTQgNjg3IC01UTY5NCAtMTEgNjk0IC0xOScsXG4gICAgMHgzRDogJzU2IDM0N1E1NiAzNjAgNzAgMzY3SDcwN1E3MjIgMzU5IDcyMiAzNDdRNzIyIDMzNiA3MDggMzI4TDM5MCAzMjdINzJRNTYgMzMyIDU2IDM0N1pNNTYgMTUzUTU2IDE2OCA3MiAxNzNINzA4UTcyMiAxNjMgNzIyIDE1M1E3MjIgMTQwIDcwNyAxMzNINzBRNTYgMTQwIDU2IDE1MycsXG4gICAgMHgzRTogJzg0IDUyMFE4NCA1MjggODggNTMzVDk2IDUzOUw5OSA1NDBRMTA2IDU0MCAyNTMgNDcxVDU0NCAzMzRMNjg3IDI2NVE2OTQgMjYwIDY5NCAyNTBUNjg3IDIzNVE2ODUgMjMzIDM5NSA5NkwxMDcgLTQwSDEwMVE4MyAtMzggODMgLTIwUTgzIC0xOSA4MyAtMTdRODIgLTEwIDk4IC0xUTExNyA5IDI0OCA3MVEzMjYgMTA4IDM3OCAxMzJMNjI2IDI1MEwzNzggMzY4UTkwIDUwNCA4NiA1MDlRODQgNTEzIDg0IDUyMCcsXG4gICAgMHgzRjogJzIyNiA2NjhRMTkwIDY2OCAxNjIgNjU2VDEyNCA2MzJMMTE0IDYyMVExMTYgNjIxIDExOSA2MjBUMTMwIDYxNlQxNDUgNjA3VDE1NyA1OTFUMTYyIDU2N1ExNjIgNTQ0IDE0NyA1MjlUMTA5IDUxNFQ3MSA1MjhUNTUgNTY2UTU1IDYyNSAxMDAgNjYxVDE5OSA3MDRRMjAxIDcwNCAyMTAgNzA0VDIyNCA3MDVIMjI4UTI4MSA3MDUgMzIwIDY5MlQzNzggNjU2VDQwNyA2MTJUNDE2IDU2N1E0MTYgNTAzIDM2MSA0NjJRMjY3IDM5NSAyNDcgMzAzUTI0MiAyNzkgMjQyIDI0MVYyMjRRMjQyIDIwNSAyMzkgMjAyVDIyMiAxOThUMjA1IDIwMVQyMDIgMjE4VjI0OVEyMDQgMzIwIDIyMCAzNzFUMjU1IDQ0NVQyOTIgNDkxVDMxNSA1MzdRMzE3IDU0NiAzMTcgNTc0VjU4N1EzMTcgNjA0IDMxNSA2MTVUMzA0IDY0MFQyNzcgNjYxVDIyNiA2NjhaTTE2MiA2MVExNjIgODkgMTgwIDEwNVQyMjQgMTIxUTI0NyAxMTkgMjY0IDEwNFQyODEgNjFRMjgxIDMxIDI2NCAxNlQyMjIgMVExOTcgMSAxODAgMTZUMTYyIDYxJyxcbiAgICAweDQwOiAnNTYgMzQ3UTU2IDQyOSA4NiA0OThUMTY0IDYxMlQyNzAgNjgwVDM4NiA3MDVRNTIyIDcwNSA2MjIgNjAzVDcyMiAzNDlRNzIyIDEyNiA2MDggMTI2UTU0MSAxMjYgNTEzIDE3NlE1MTIgMTc3IDUxMiAxNzlUNTEwIDE4Mkw1MDkgMTgzUTUwOCAxODMgNTAzIDE3N1Q0ODcgMTYzVDQ2NCAxNDZUNDI5IDEzMlQzODUgMTI2UTMxMSAxMjYgMjUxIDE4NlQxOTAgMzQ3UTE5MCA0NDggMjUxIDUwOFQzODUgNTY4UTQyNiA1NjggNDYwIDU0OFQ1MDkgNTExVDUzMSA0NzlINTU1UTU4MCA0NzkgNTgyIDQ3OFE1ODYgNDc3IDU4NyA0NjhRNTg4IDQ1NCA1ODggMzM4VjI2MFE1ODggMjAwIDU5MyAxODJUNjE5IDE2M1E2NDEgMTYzIDY1NSAxNzhUNjc0IDIyM1Q2ODAgMjczVDY4MiAzMjVWMzMwUTY4MiA0MjYgNjQ3IDUwMFE2MTEgNTY5IDU0NCA2MThUMzg4IDY2OFEyNzEgNjY4IDE4NCA1NzdUOTYgMzQ3UTk2IDIxNiAxODAgMTIxVDM5NiAyNlE0MjEgMjYgNDQ2IDI4VDQ5MyAzNFQ1MzUgNDNUNTczIDUyVDYwNSA2M1Q2MjkgNzJUNjQ3IDgwVDY1NyA4NEg3MTZRNzIyIDc4IDcyMiA3NFE3MjIgNjUgNjc1IDQ1VDU0NyA3VDM5MiAtMTFRMjU1IC0xMSAxNTYgOTBUNTYgMzQ3Wk0yNzQgMzQ3UTI3NCAyNjYgMzA4IDIxNFQzOTAgMTYyUTQyMCAxNjIgNDQ5IDE4MlQ0OTggMjM1TDUwNCAyNDVWNDQ5TDQ5OCA0NTlRNDUzIDUzMiAzODcgNTMyUTM0NyA1MzIgMzExIDQ4M1QyNzQgMzQ3JyxcbiAgICAweDQxOiAnMjU1IDBRMjQwIDMgMTQwIDNRNDggMyAzOSAwSDMyVjQ2SDQ3UTExOSA0OSAxMzkgODhRMTQwIDkxIDE5MiAyNDVUMjk1IDU1M1QzNDggNzA4UTM1MSA3MTYgMzY2IDcxNkgzNzZRMzk2IDcxNSA0MDAgNzA5UTQwMiA3MDcgNTA4IDM5MEw2MTcgNjdRNjI0IDU0IDYzNiA1MVQ2ODcgNDZINzE3VjBINzA4UTY5OSAzIDU4MSAzUTQ1OCAzIDQzNyAwSDQyN1Y0Nkg0NDBRNTEwIDQ2IDUxMCA2NFE1MTAgNjYgNDg2IDEzOEw0NjIgMjA5SDIyOUwyMDkgMTUwUTE4OSA5MSAxODkgODVRMTg5IDcyIDIwOSA1OVQyNTkgNDZIMjY0VjBIMjU1Wk00NDcgMjU1TDM0NSA1NTdMMjQ0IDI1NlEyNDQgMjU1IDM0NSAyNTVINDQ3JyxcbiAgICAweDQyOiAnMTMxIDYyMlExMjQgNjI5IDEyMCA2MzFUMTA0IDYzNFQ2MSA2MzdIMjhWNjgzSDIyOUgyNjdIMzQ2UTQyMyA2ODMgNDU5IDY3OFQ1MzEgNjUxUTU3NCA2MjcgNTk5IDU5MFQ2MjQgNTEyUTYyNCA0NjEgNTgzIDQxOVQ0NzYgMzYwTDQ2NiAzNTdRNTM5IDM0OCA1OTUgMzAyVDY1MSAxODdRNjUxIDExOSA2MDAgNjdUNDY5IDNRNDU2IDEgMjQyIDBIMjhWNDZINjFRMTAzIDQ3IDExMiA0OVQxMzEgNjFWNjIyWk01MTEgNTEzUTUxMSA1NjAgNDg1IDU5NFQ0MTYgNjM2UTQxNSA2MzYgNDAzIDYzNlQzNzEgNjM2VDMzMyA2MzdRMjY2IDYzNyAyNTEgNjM2VDIzMiA2MjhRMjI5IDYyNCAyMjkgNDk5VjM3NEgzMTJMMzk2IDM3NUw0MDYgMzc3UTQxMCAzNzggNDE3IDM4MFQ0NDIgMzkzVDQ3NCA0MTdUNDk5IDQ1NlQ1MTEgNTEzWk01MzcgMTg4UTUzNyAyMzkgNTA5IDI4MlQ0MzAgMzM2TDMyOSAzMzdIMjI5VjIwMFYxMTZRMjI5IDU3IDIzNCA1MlEyNDAgNDcgMzM0IDQ3SDM4M1E0MjUgNDcgNDQzIDUzUTQ4NiA2NyA1MTEgMTA0VDUzNyAxODgnLFxuICAgIDB4NDM6ICc1NiAzNDJRNTYgNDI4IDg5IDUwMFQxNzQgNjE1VDI4MyA2ODFUMzkxIDcwNVEzOTQgNzA1IDQwMCA3MDVUNDA4IDcwNFE0OTkgNzA0IDU2OSA2MzZMNTgyIDYyNEw2MTIgNjYzUTYzOSA3MDAgNjQzIDcwNFE2NDQgNzA0IDY0NyA3MDRUNjUzIDcwNUg2NTdRNjYwIDcwNSA2NjYgNjk5VjQxOUw2NjAgNDEzSDYyNlE2MjAgNDE5IDYxOSA0MzBRNjEwIDUxMiA1NzEgNTcyVDQ3NiA2NTFRNDU3IDY1OCA0MjYgNjU4UTMyMiA2NTggMjUyIDU4OFExNzMgNTA5IDE3MyAzNDJRMTczIDIyMSAyMTEgMTUxUTIzMiAxMTEgMjYzIDg0VDMyOCA0NVQzODQgMjlUNDI4IDI0UTUxNyAyNCA1NzEgOTNUNjI2IDI0NFE2MjYgMjUxIDYzMiAyNTdINjYwTDY2NiAyNTFWMjM2UTY2MSAxMzMgNTkwIDU2VDQwMyAtMjFRMjYyIC0yMSAxNTkgODNUNTYgMzQyJyxcbiAgICAweDQ0OiAnMTMwIDYyMlExMjMgNjI5IDExOSA2MzFUMTAzIDYzNFQ2MCA2MzdIMjdWNjgzSDIyOFEzOTkgNjgyIDQxOSA2ODJUNDYxIDY3NlE1MDQgNjY3IDU0NiA2NDFUNjI2IDU3M1Q2ODUgNDcwVDcwOCAzMzZRNzA4IDIxMCA2MzQgMTE2VDQ0MiAzUTQyOSAxIDIyOCAwSDI3VjQ2SDYwUTEwMiA0NyAxMTEgNDlUMTMwIDYxVjYyMlpNNTkzIDMzOFE1OTMgNDM5IDU3MSA1MDFUNDkzIDYwMlE0MzkgNjM3IDM1NSA2MzdIMzIySDI5NFEyMzggNjM3IDIzNCA2MjhRMjMxIDYyNCAyMzEgMzQ0UTIzMSA2MiAyMzIgNTlRMjMzIDQ5IDI0OCA0OFQzMzkgNDZIMzUwUTQ1NiA0NiA1MTUgOTVRNTYxIDEzMyA1NzcgMTkxVDU5MyAzMzgnLFxuICAgIDB4NDU6ICcxMjggNjE5UTEyMSA2MjYgMTE3IDYyOFQxMDEgNjMxVDU4IDYzNEgyNVY2ODBINTk3VjY3NlE1OTkgNjcwIDYxMSA1NjBUNjI1IDQ0NFY0NDBINTg1VjQ0NFE1ODQgNDQ3IDU4MiA0NjVRNTc4IDUwMCA1NzAgNTI2VDU1MyA1NzFUNTI4IDYwMVQ0OTggNjE5VDQ1NyA2MjlUNDExIDYzM1QzNTMgNjM0UTI2NiA2MzQgMjUxIDYzM1QyMzMgNjIyUTIzMyA2MjIgMjMzIDYyMVEyMzIgNjE5IDIzMiA0OTdWMzc2SDI4NlEzNTkgMzc4IDM3NyAzODVRNDEzIDQwMSA0MTYgNDY5UTQxNiA0NzEgNDE2IDQ3M1Y0OTNINDU2VjIxM0g0MTZWMjMzUTQxNSAyNjggNDA4IDI4OFQzODMgMzE3VDM0OSAzMjhUMjk3IDMzMFEyOTAgMzMwIDI4NiAzMzBIMjMyVjE5NlYxMTRRMjMyIDU3IDIzNyA1MlEyNDMgNDcgMjg5IDQ3SDM0MEgzOTFRNDI4IDQ3IDQ1MiA1MFQ1MDUgNjJUNTUyIDkyVDU4NCAxNDZRNTk0IDE3MiA1OTkgMjAwVDYwNyAyNDdUNjEyIDI3MFYyNzNINjUyVjI3MFE2NTEgMjY3IDYzMiAxMzdUNjEwIDNWMEgyNVY0Nkg1OFExMDAgNDcgMTA5IDQ5VDEyOCA2MVY2MTknLFxuICAgIDB4NDY6ICcxMjggNjE5UTEyMSA2MjYgMTE3IDYyOFQxMDEgNjMxVDU4IDYzNEgyNVY2ODBINTgyVjY3NlE1ODQgNjcwIDU5NiA1NjBUNjEwIDQ0NFY0NDBINTcwVjQ0NFE1NjMgNDkzIDU2MSA1MDFRNTU1IDUzOCA1NDMgNTYzVDUxNiA2MDFUNDc3IDYyMlQ0MzEgNjMxVDM3NCA2MzNIMzM0SDI4NlEyNTIgNjMzIDI0NCA2MzFUMjMzIDYyMVEyMzIgNjE5IDIzMiA0OTBWMzYzSDI4NFEyODcgMzYzIDMwMyAzNjNUMzI3IDM2NFQzNDkgMzY3VDM3MiAzNzNUMzg5IDM4NVE0MDcgNDAzIDQxMCA0NTlWNDgwSDQ1MFYyMDBINDEwVjIyMVE0MDcgMjc2IDM4OSAyOTZRMzgxIDMwMyAzNzEgMzA3VDM0OCAzMTNUMzI3IDMxNlQzMDMgMzE3VDI4NCAzMTdIMjMyVjE4OUwyMzMgNjFRMjQwIDU0IDI0NSA1MlQyNzAgNDhUMzMzIDQ2SDM2MFYwSDM0OFEzMjQgMyAxODIgM1E1MSAzIDM2IDBIMjVWNDZINThRMTAwIDQ3IDEwOSA0OVQxMjggNjFWNjE5JyxcbiAgICAweDQ3OiAnNTYgMzQyUTU2IDQyOCA4OSA1MDBUMTc0IDYxNVQyODMgNjgxVDM5MSA3MDVRMzk0IDcwNSA0MDAgNzA1VDQwOCA3MDRRNDk5IDcwNCA1NjkgNjM2TDU4MiA2MjRMNjEyIDY2M1E2MzkgNzAwIDY0MyA3MDRRNjQ0IDcwNCA2NDcgNzA0VDY1MyA3MDVINjU3UTY2MCA3MDUgNjY2IDY5OVY0MTlMNjYwIDQxM0g2MjZRNjIwIDQxOSA2MTkgNDMwUTYxMCA1MTIgNTcxIDU3MlQ0NzYgNjUxUTQ1NyA2NTggNDI2IDY1OFE0MDEgNjU4IDM3NiA2NTRUMzE2IDYzM1QyNTQgNTkyVDIwNSA1MTlUMTc3IDQxMVExNzMgMzY5IDE3MyAzMzVRMTczIDI1OSAxOTIgMjAxVDIzOCAxMTFUMzAyIDU4VDM3MCAzMVQ0MzEgMjRRNDc4IDI0IDUxMyA0NVQ1NTkgMTAwUTU2MiAxMTAgNTYyIDE2MFYyMTJRNTYxIDIxMyA1NTcgMjE2VDU1MSAyMjBUNTQyIDIyM1Q1MjYgMjI1VDUwMiAyMjZUNDYzIDIyN0g0MzdWMjczSDQ0OUw2MDkgMjcwUTcxNSAyNzAgNzI3IDI3M0g3MzVWMjI3SDcyMVE2NzQgMjI3IDY2OCAyMTVRNjY2IDIxMSA2NjYgMTA4VjZRNjYwIDAgNjU3IDBRNjUzIDAgNjM5IDEwUTYxNyAyNSA2MDAgNDJMNTg3IDU0UTU3MSAyNyA1MjQgM1Q0MDYgLTIyUTMxNyAtMjIgMjM4IDIyVDEwOCAxNTFUNTYgMzQyJyxcbiAgICAweDQ4OiAnMTI4IDYyMlExMjEgNjI5IDExNyA2MzFUMTAxIDYzNFQ1OCA2MzdIMjVWNjgzSDM2UTU3IDY4MCAxODAgNjgwUTMxNSA2ODAgMzI0IDY4M0gzMzVWNjM3SDMwMlEyNjIgNjM2IDI1MSA2MzRUMjMzIDYyMkwyMzIgNTAwVjM3OEg1MTdWNjIyUTUxMCA2MjkgNTA2IDYzMVQ0OTAgNjM0VDQ0NyA2MzdINDE0VjY4M0g0MjVRNDQ2IDY4MCA1NjkgNjgwUTcwNCA2ODAgNzEzIDY4M0g3MjRWNjM3SDY5MVE2NTEgNjM2IDY0MCA2MzRUNjIyIDYyMlY2MVE2MjggNTEgNjM5IDQ5VDY5MSA0Nkg3MjRWMEg3MTNRNjkyIDMgNTY5IDNRNDM0IDMgNDI1IDBINDE0VjQ2SDQ0N1E0ODkgNDcgNDk4IDQ5VDUxNyA2MVYzMzJIMjMyVjE5N0wyMzMgNjFRMjM5IDUxIDI1MCA0OVQzMDIgNDZIMzM1VjBIMzI0UTMwMyAzIDE4MCAzUTQ1IDMgMzYgMEgyNVY0Nkg1OFExMDAgNDcgMTA5IDQ5VDEyOCA2MVY2MjInLFxuICAgIDB4NDk6ICczMjggMFEzMDcgMyAxODAgM1QzMiAwSDIxVjQ2SDQzUTkyIDQ2IDEwNiA0OVQxMjYgNjBRMTI4IDYzIDEyOCAzNDJRMTI4IDYyMCAxMjYgNjIzUTEyMiA2MjggMTE4IDYzMFQ5NiA2MzVUNDMgNjM3SDIxVjY4M0gzMlE1MyA2ODAgMTgwIDY4MFQzMjggNjgzSDMzOVY2MzdIMzE3UTI2OCA2MzcgMjU0IDYzNFQyMzQgNjIzUTIzMiA2MjAgMjMyIDM0MlEyMzIgNjMgMjM0IDYwUTIzOCA1NSAyNDIgNTNUMjY0IDQ4VDMxNyA0NkgzMzlWMEgzMjgnLFxuICAgIDB4NEE6ICc4OSAxNzdRMTE1IDE3NyAxMzMgMTYwVDE1MiAxMTJRMTUyIDg4IDEzNyA3MlQxMDIgNTJROTkgNTEgMTAxIDQ5UTEwNiA0MyAxMjkgMjlRMTU5IDE1IDE5MCAxNVEyMzIgMTUgMjU2IDQ4VDI4NiAxMjZRMjg2IDEyNyAyODYgMTQyVDI4NiAxODNUMjg2IDIzOFQyODcgMzA2VDI4NyAzNzhRMjg3IDQwMyAyODcgNDI5VDI4NyA0NzlUMjg3IDUyNFQyODYgNTYzVDI4NiA1OTNUMjg2IDYxNFY2MjFRMjgxIDYzMCAyNjMgNjMzVDE4MiA2MzdIMTU0VjY4M0gxNjZRMTg3IDY4MCAzMzIgNjgwUTQzOSA2ODAgNDU3IDY4M0g0NjVWNjM3SDQ0OVE0MjIgNjM3IDQwMSA2MzRRMzkzIDYzMSAzODkgNjIzUTM4OCA2MjEgMzg4IDM3NlQzODcgMTIzUTM3NyA2MSAzMjIgMjBUMTk0IC0yMlExODggLTIyIDE3NyAtMjFUMTYwIC0yMFE5NiAtOSA2MSAyOVQyNSAxMTBRMjUgMTQ0IDQ0IDE2MFQ4OSAxNzcnLFxuICAgIDB4NEI6ICcxMjggNjIyUTEyMSA2MjkgMTE3IDYzMVQxMDEgNjM0VDU4IDYzN0gyNVY2ODNIMzZRNTcgNjgwIDE4MCA2ODBRMzE1IDY4MCAzMjQgNjgzSDMzNVY2MzdIMzEzUTIzNSA2MzcgMjMzIDYyMFEyMzIgNjE4IDIzMiA0NjJMMjMzIDMwN0wzNzkgNDQ5UTQyNSA0OTQgNDc5IDU0NlE1MTggNTg0IDUyNCA1OTFUNTMxIDYwN1Y2MDhRNTMxIDYzMCA1MDMgNjM2UTUwMSA2MzYgNDk4IDYzNlQ0OTMgNjM3SDQ4OVY2ODNINDk5UTUxNyA2ODAgNjMwIDY4MFE3MDQgNjgwIDcxNiA2ODNINzIyVjYzN0g3MDhRNjMzIDYzMyA1ODkgNTk3UTU4NCA1OTIgNDk1IDUwNlQ0MDYgNDE5VDUxNSAyNTRUNjMxIDgwUTY0NCA2MCA2NjIgNTRUNzE1IDQ2SDczNlYwSDcyOFE3MTkgMyA2MTUgM1E0OTMgMyA0NzIgMEg0NjFWNDZINDY5UTUxNSA0NiA1MTUgNzJRNTE1IDc4IDUxMiA4NEwzMzYgMzUxUTMzMiAzNDggMjc4IDI5NkwyMzIgMjUxVjE1NlEyMzIgNjIgMjM1IDU4UTI0MyA0NyAzMDIgNDZIMzM1VjBIMzI0UTMwMyAzIDE4MCAzUTQ1IDMgMzYgMEgyNVY0Nkg1OFExMDAgNDcgMTA5IDQ5VDEyOCA2MVY2MjInLFxuICAgIDB4NEM6ICcxMjggNjIyUTEyMSA2MjkgMTE3IDYzMVQxMDEgNjM0VDU4IDYzN0gyNVY2ODNIMzZRNDggNjgwIDE4MiA2ODBRMzI0IDY4MCAzNDggNjgzSDM2MFY2MzdIMzMzUTI3MyA2MzcgMjU4IDYzNVQyMzMgNjIyTDIzMiAzNDJWMTI5UTIzMiA1NyAyMzcgNTJRMjQzIDQ3IDMxMyA0N1EzODQgNDcgNDEwIDUzUTQ3MCA3MCA0OTggMTEwVDUzNiAyMjFRNTM2IDIyNiA1MzcgMjM4VDU0MCAyNjFUNTQyIDI3MlQ1NjIgMjczSDU4MlYyNjhRNTgwIDI2NSA1NjggMTM3VDU1NCA1VjBIMjVWNDZINThRMTAwIDQ3IDEwOSA0OVQxMjggNjFWNjIyJyxcbiAgICAweDREOiAnMTMyIDYyMlExMjUgNjI5IDEyMSA2MzFUMTA1IDYzNFQ2MiA2MzdIMjlWNjgzSDEzNVEyMjEgNjgzIDIzMiA2ODJUMjQ5IDY3NVEyNTAgNjc0IDM1NCAzOThMNDU4IDEyNEw1NjIgMzk4UTY2NiA2NzQgNjY4IDY3NVE2NzEgNjgxIDY4MyA2ODJUNzgxIDY4M0g4ODdWNjM3SDg1NFE4MTQgNjM2IDgwMyA2MzRUNzg1IDYyMlY2MVE3OTEgNTEgODAyIDQ5VDg1NCA0Nkg4ODdWMEg4NzZRODU1IDMgNzM2IDNRNjA1IDMgNTk2IDBINTg1VjQ2SDYxOFE2NjAgNDcgNjY5IDQ5VDY4OCA2MVYzNDdRNjg4IDQyNCA2ODggNDYxVDY4OCA1NDZUNjg4IDYxM0w2ODcgNjMyUTQ1NCAxNCA0NTAgN1E0NDYgMSA0MzAgMVQ0MTAgN1E0MDkgOSAyOTIgMzE2TDE3NiA2MjRWNjA2UTE3NSA1ODggMTc1IDU0M1QxNzUgNDYzVDE3NSAzNTZMMTc2IDg2UTE4NyA1MCAyNjEgNDZIMjc4VjBIMjY5UTI1NCAzIDE1NCAzUTUyIDMgMzcgMEgyOVY0Nkg0NlE3OCA0OCA5OCA1NlQxMjIgNjlUMTMyIDg2VjYyMicsXG4gICAgMHg0RTogJzQyIDQ2UTc0IDQ4IDk0IDU2VDExOCA2OVQxMjggODZWNjM0SDEyNFExMTQgNjM3IDUyIDYzN0gyNVY2ODNIMjMyTDIzNSA2ODBRMjM3IDY3OSAzMjIgNTU0VDQ5MyAzMDNMNTc4IDE3OFY1OThRNTcyIDYwOCA1NjggNjEzVDU0NCA2MjdUNDkyIDYzN0g0NzVWNjgzSDQ4M1E0OTggNjgwIDYwMCA2ODBRNzA2IDY4MCA3MTUgNjgzSDcyNFY2MzdINzA3UTYzNCA2MzMgNjIyIDU5OEw2MjEgMzAyVjZMNjE0IDBINjAwUTU4NSAwIDU4MiAzVDQ4MSAxNTBUMjgyIDQ0M1QxNzEgNjA1VjM0NUwxNzIgODZRMTgzIDUwIDI1NyA0NkgyNzRWMEgyNjVRMjUwIDMgMTUwIDNRNDggMyAzMyAwSDI1VjQ2SDQyJyxcbiAgICAweDRGOiAnNTYgMzQwUTU2IDQyMyA4NiA0OTRUMTY0IDYxMFQyNzAgNjgwVDM4OCA3MDVRNTIxIDcwNSA2MjEgNjAxVDcyMiAzNDFRNzIyIDI2MCA2OTMgMTkxVDYxNyA3NVQ1MTAgNFQzODggLTIyVDI2NyAzVDE2MCA3NFQ4NSAxODlUNTYgMzQwWk00NjcgNjQ3UTQyNiA2NjUgMzg4IDY2NVEzNjAgNjY1IDMzMSA2NTRUMjY5IDYyMFQyMTMgNTQ5VDE3OSA0MzlRMTc0IDQxMSAxNzQgMzU0UTE3NCAxNDQgMjc3IDYxUTMyNyAyMCAzODUgMjBIMzg5SDM5MVE0NzQgMjAgNTM3IDk5UTYwMyAxODggNjAzIDM1NFE2MDMgNDExIDU5OCA0MzlRNTc3IDU5MiA0NjcgNjQ3JyxcbiAgICAweDUwOiAnMTMwIDYyMlExMjMgNjI5IDExOSA2MzFUMTAzIDYzNFQ2MCA2MzdIMjdWNjgzSDIxNFEyMzcgNjgzIDI3NiA2ODNUMzMxIDY4NFE0MTkgNjg0IDQ3MSA2NzFUNTY3IDYxNlE2MjQgNTYzIDYyNCA0ODlRNjI0IDQyMSA1NzMgMzcyVDQ1MSAzMDdRNDI5IDMwMiAzMjggMzAxSDIzNFYxODFRMjM0IDYyIDIzNyA1OFEyNDUgNDcgMzA0IDQ2SDMzN1YwSDMyNlEzMDUgMyAxODIgM1E0NyAzIDM4IDBIMjdWNDZINjBRMTAyIDQ3IDExMSA0OVQxMzAgNjFWNjIyWk01MDcgNDg4UTUwNyA1MTQgNTA2IDUyOFQ1MDAgNTY0VDQ4MyA1OTdUNDUwIDYyMFQzOTcgNjM1UTM4NSA2MzcgMzA3IDYzN0gyODZRMjM3IDYzNyAyMzQgNjI4UTIzMSA2MjQgMjMxIDQ4M1YzNDJIMzAySDMzOVEzOTAgMzQyIDQyMyAzNDlUNDgxIDM4MlE1MDcgNDExIDUwNyA0ODgnLFxuICAgIDB4NTE6ICc1NiAzNDFRNTYgNDk5IDE1NyA2MDJUMzg4IDcwNVE1MjEgNzA1IDYyMSA2MDFUNzIyIDM0MVE3MjIgMjc1IDcwMyAyMThUNjYwIDEyN1Q2MDMgNjNUNTU1IDI1VDUyNSA5UTUyNCA4IDUyNCA4SDUyM1E1MjQgNSA1MjYgLTFUNTM3IC0yMVQ1NTUgLTQ3VDU4MSAtNjdUNjE1IC03NlE2NTMgLTc2IDY3OCAtNTZUNzA2IC0zUTcwNyAxMCA3MTYgMTBRNzIxIDEwIDcyOCA1TDcyNyAtMTNRNzI3IC04OCA2OTcgLTE0MFQ2MDYgLTE5M1E1NjMgLTE5MyA1MzggLTE2NlQ0OTggLTgzUTQ4MyAtMjMgNDgzIC04TDQ3MSAtMTFRNDU5IC0xNCA0MzUgLTE4VDM4OCAtMjJRMjU0IC0yMiAxNTUgODFUNTYgMzQxWk02MDcgMzM5UTYwNyA0MjkgNTg2IDQ5NlQ1MzEgNTk4VDQ2MSA2NDlUMzkwIDY2NVQzMTggNjQ5VDI0OCA1OThUMTkyIDQ5NlQxNzAgMzM5UTE3MCAxNDMgMjc3IDU3UTMwMSAzOSAzMDUgMzlMMzA0IDQyUTMwNCA0NCAzMDQgNDZRMzAxIDUzIDMwMSA2OFEzMDEgMTAxIDMyNSAxMjhUMzkxIDE1NVE0NTQgMTU1IDQ5NSA3MEw1MDEgNThRNTQ5IDkxIDU3OCAxNjRRNjA3IDIzNCA2MDcgMzM5Wk0zODUgMThRNDA0IDE4IDQyNSAyM1Q0NTkgMzNUNDcyIDQwUTQ3MSA0NyA0NjggNTdUNDQ5IDg4VDQxMiAxMTVRMzk4IDExNyAzODYgMTE3UTM2NyAxMTcgMzUzIDEwMlQzMzggNjdRMzM4IDQ4IDM1MSAzM1QzODUgMTgnLFxuICAgIDB4NTI6ICcxMzAgNjIyUTEyMyA2MjkgMTE5IDYzMVQxMDMgNjM0VDYwIDYzN0gyN1Y2ODNIMjAySDIzNkgzMDBRMzc2IDY4MyA0MTcgNjc3VDUwMCA2NDhRNTk1IDYwMCA2MDkgNTE3UTYxMCA1MTIgNjEwIDUwMVE2MTAgNDY4IDU5NCA0MzlUNTU2IDM5MlQ1MTEgMzYxVDQ3MiAzNDNMNDU2IDMzOFE0NTkgMzM1IDQ2NyAzMzJRNDk3IDMxNiA1MTYgMjk4VDU0NSAyNTRUNTU5IDIxMVQ1NjggMTU1VDU3OCA5NFE1ODggNDYgNjAyIDMxVDY0MCAxNkg2NDVRNjYwIDE2IDY3NCAzMlQ2OTIgODdRNjkyIDk4IDY5NiAxMDFUNzEyIDEwNVQ3MjggMTAzVDczMiA5MFE3MzIgNTkgNzE2IDI3VDY3MiAtMTZRNjU2IC0yMiA2MzAgLTIyUTQ4MSAtMTYgNDU4IDkwUTQ1NiAxMDEgNDU2IDE2M1Q0NDkgMjQ2UTQzMCAzMDQgMzczIDMyMEwzNjMgMzIyTDI5NyAzMjNIMjMxVjE5MkwyMzIgNjFRMjM4IDUxIDI0OSA0OVQzMDEgNDZIMzM0VjBIMzIzUTMwMiAzIDE4MSAzUTU5IDMgMzggMEgyN1Y0Nkg2MFExMDIgNDcgMTExIDQ5VDEzMCA2MVY2MjJaTTQ5MSA0OTlWNTA5UTQ5MSA1MjcgNDkwIDUzOVQ0ODEgNTcwVDQ2MiA2MDFUNDI0IDYyM1QzNjIgNjM2UTM2MCA2MzYgMzQwIDYzNlQzMDQgNjM3SDI4M1EyMzggNjM3IDIzNCA2MjhRMjMxIDYyNCAyMzEgNDkyVjM2MEgyODlRMzkwIDM2MCA0MzQgMzc4VDQ4OSA0NTZRNDkxIDQ2NyA0OTEgNDk5JyxcbiAgICAweDUzOiAnNTUgNTA3UTU1IDU5MCAxMTIgNjQ3VDI0MyA3MDRIMjU3UTM0MiA3MDQgNDA1IDY0MUw0MjYgNjcyUTQzMSA2NzkgNDM2IDY4N1Q0NDYgNzAwTDQ0OSA3MDRRNDUwIDcwNCA0NTMgNzA0VDQ1OSA3MDVINDYzUTQ2NiA3MDUgNDcyIDY5OVY0NjJMNDY2IDQ1Nkg0NDhRNDM3IDQ1NiA0MzUgNDU5VDQzMCA0NzlRNDEzIDYwNSAzMjkgNjQ2UTI5MiA2NjIgMjU0IDY2MlEyMDEgNjYyIDE2OCA2MjZUMTM1IDU0MlExMzUgNTA4IDE1MiA0ODBUMjAwIDQzNVEyMTAgNDMxIDI4NiA0MTJUMzcwIDM4OVE0MjcgMzY3IDQ2MyAzMTRUNTAwIDE5MVE1MDAgMTEwIDQ0OCA0NVQzMDEgLTIxUTI0NSAtMjEgMjAxIC00VDE0MCAyN0wxMjIgNDFRMTE4IDM2IDEwNyAyMVQ4NyAtN1Q3OCAtMjFRNzYgLTIyIDY4IC0yMkg2NFE2MSAtMjIgNTUgLTE2VjEwMVE1NSAyMjAgNTYgMjIyUTU4IDIyNyA3NiAyMjdIODlROTUgMjIxIDk1IDIxNFE5NSAxODIgMTA1IDE1MVQxMzkgOTBUMjA1IDQyVDMwNSAyNFEzNTIgMjQgMzg2IDYyVDQyMCAxNTVRNDIwIDE5OCAzOTggMjMzVDM0MCAyODFRMjg0IDI5NSAyNjYgMzAwUTI2MSAzMDEgMjM5IDMwNlQyMDYgMzE0VDE3NCAzMjVUMTQxIDM0M1QxMTIgMzY3VDg1IDQwMlE1NSA0NTEgNTUgNTA3JyxcbiAgICAweDU0OiAnMzYgNDQzUTM3IDQ0OCA0NiA1NThUNTUgNjcxVjY3N0g2NjZWNjcxUTY2NyA2NjYgNjc2IDU1NlQ2ODUgNDQzVjQzN0g2NDVWNDQzUTY0NSA0NDUgNjQyIDQ3OFQ2MzEgNTQ0VDYxMCA1OTNRNTkzIDYxNCA1NTUgNjI1UTUzNCA2MzAgNDc4IDYzMEg0NTFINDQzUTQxNyA2MzAgNDE0IDYxOFE0MTMgNjE2IDQxMyAzMzlWNjNRNDIwIDUzIDQzOSA1MFQ1MjggNDZINTU4VjBINTQ1TDM2MSAzUTE4NiAxIDE3NyAwSDE2NFY0NkgxOTRRMjY0IDQ2IDI4MyA0OVQzMDkgNjNWMzM5VjU1MFEzMDkgNjIwIDMwNCA2MjVUMjcxIDYzMEgyNDRIMjI0UTE1NCA2MzAgMTE5IDYwMVExMDEgNTg1IDkzIDU1NFQ4MSA0ODZUNzYgNDQzVjQzN0gzNlY0NDMnLFxuICAgIDB4NTU6ICcxMjggNjIyUTEyMSA2MjkgMTE3IDYzMVQxMDEgNjM0VDU4IDYzN0gyNVY2ODNIMzZRNTcgNjgwIDE4MCA2ODBRMzE1IDY4MCAzMjQgNjgzSDMzNVY2MzdIMzAyUTI2MiA2MzYgMjUxIDYzNFQyMzMgNjIyTDIzMiA0MThWMjkxUTIzMiAxODkgMjQwIDE0NVQyODAgNjdRMzI1IDI0IDM4OSAyNFE0NTQgMjQgNTA2IDY0VDU3MSAxODNRNTc1IDIwNiA1NzUgNDEwVjU5OFE1NjkgNjA4IDU2NSA2MTNUNTQxIDYyN1Q0ODkgNjM3SDQ3MlY2ODNINDgxUTQ5NiA2ODAgNTk4IDY4MFQ3MTUgNjgzSDcyNFY2MzdINzA3UTYzNCA2MzMgNjIyIDU5OEw2MjEgMzk5UTYyMCAxOTQgNjE3IDE4MFE2MTcgMTc5IDYxNSAxNzFRNTk1IDgzIDUzMSAzMVQzODkgLTIyUTMwNCAtMjIgMjI2IDMzVDEzMCAxOTJRMTI5IDIwMSAxMjggNDEyVjYyMicsXG4gICAgMHg1NjogJzExNCA2MjBRMTEzIDYyMSAxMTAgNjI0VDEwNyA2MjdUMTAzIDYzMFQ5OCA2MzJUOTEgNjM0VDgwIDYzNVQ2NyA2MzZUNDggNjM3SDE5VjY4M0gyOFE0NiA2ODAgMTUyIDY4MFEyNzMgNjgwIDI5NCA2ODNIMzA1VjYzN0gyODRRMjIzIDYzNCAyMjMgNjIwUTIyMyA2MTggMzEzIDM3MlQ0MDQgMTI2TDQ5MCAzNThRNTc1IDU4OCA1NzUgNTk3UTU3NSA2MTYgNTU0IDYyNlQ1MDggNjM3SDUwM1Y2ODNINTEyUTUyNyA2ODAgNjI3IDY4MFE3MTggNjgwIDcyNCA2ODNINzMwVjYzN0g3MjNRNjQ4IDYzNyA2MjcgNTk2UTYyNyA1OTUgNTE1IDI5MVQ0MDEgLTE0UTM5NiAtMjIgMzgyIC0yMkgzNzRIMzY3UTM1MyAtMjIgMzQ4IC0xNFEzNDYgLTEyIDIzMSAzMDNRMTE0IDYxNyAxMTQgNjIwJyxcbiAgICAweDU3OiAnNzkyIDY4M1E4MTAgNjgwIDkxNCA2ODBROTkxIDY4MCAxMDAzIDY4M0gxMDA5VjYzN0g5OTZROTMxIDYzMyA5MTUgNTk4UTkxMiA1OTEgODYzIDQzOFQ3NjYgMTM1VDcxNiAtMTdRNzExIC0yMiA2OTQgLTIyUTY3NiAtMjIgNjczIC0xNVE2NzEgLTEzIDU5MyAyMzFMNTE0IDQ3N0w0MzUgMjM0UTQxNiAxNzQgMzkxIDkyVDM1OCAtNlQzNDEgLTIySDMzMVEzMTQgLTIxIDMxMCAtMTVRMzA5IC0xNCAyMDggMzAyVDEwNCA2MjJROTggNjMyIDg3IDYzM1E3MyA2MzcgMzUgNjM3SDE4VjY4M0gyN1E2OSA2ODEgMTU0IDY4MVExNjQgNjgxIDE4MSA2ODFUMjE2IDY4MVQyNDkgNjgyVDI3NiA2ODNIMjg3SDI5OFY2MzdIMjg1UTIxMyA2MzcgMjEzIDYyMFEyMTMgNjE2IDI4OSAzODFMMzY0IDE0NEw0MjcgMzM5UTQ5MCA1MzUgNDkyIDU0NlE0ODcgNTYwIDQ4MiA1NzhUNDc1IDYwMlQ0NjggNjE4VDQ2MSA2MjhUNDQ5IDYzM1Q0MzMgNjM2VDQwOCA2MzdIMzgwVjY4M0gzODhRMzk3IDY4MCA1MDggNjgwUTYyOSA2ODAgNjUwIDY4M0g2NjBWNjM3SDY0N1E1NzYgNjM3IDU3NiA2MTlMNzI3IDE0NlE4NjkgNTgwIDg2OSA2MDBRODY5IDYwNSA4NjMgNjEyVDgzOSA2MjdUNzk0IDYzN0g3ODNWNjgzSDc5MicsXG4gICAgMHg1ODogJzI3MCAwUTI1MiAzIDE0MSAzUTQ2IDMgMzEgMEgyM1Y0Nkg0MFExMjkgNTAgMTYxIDg4UTE2NSA5NCAyNDQgMjE2VDMyNCAzMzlRMzI0IDM0MSAyMzUgNDgwVDE0MyA2MjJRMTMzIDYzMSAxMTkgNjM0VDU3IDYzN0gzN1Y2ODNINDZRNjQgNjgwIDE3MiA2ODBRMjk3IDY4MCAzMTggNjgzSDMyOVY2MzdIMzI0UTMwNyA2MzcgMjg2IDYzMlQyNjMgNjIxUTI2MyA2MTggMzIyIDUyNVQzODQgNDMxUTM4NSA0MzEgNDM3IDUxMVQ0ODkgNTkzUTQ5MCA1OTUgNDkwIDU5OVE0OTAgNjExIDQ3NyA2MjJUNDM2IDYzN0g0MjhWNjgzSDQzN1E0NTUgNjgwIDU2NiA2ODBRNjYxIDY4MCA2NzYgNjgzSDY4NFY2MzdINjY3UTU4NSA2MzQgNTUxIDU5OVE1NDggNTk2IDQ3OCA0OTFRNDEyIDM4OCA0MTIgMzg3UTQxMiAzODUgNTE0IDIyNVQ2MjAgNjJRNjI4IDUzIDY0MiA1MFQ2OTUgNDZINzI2VjBINzE3UTY5OSAzIDU5MSAzUTQ2NiAzIDQ0NSAwSDQzNFY0Nkg0NDBRNDU0IDQ2IDQ3NiA1MVQ0OTkgNjRRNDk5IDY3IDQ2MyAxMjRUMzkwIDIzOEwzNTMgMjk1TDM1MCAyOTJRMzQ4IDI5MCAzNDMgMjgzVDMzMSAyNjVUMzEyIDIzNlQyODYgMTk1UTIxOSA4OCAyMTggODRRMjE4IDcwIDIzNCA1OVQyNzIgNDZIMjgwVjBIMjcwJyxcbiAgICAweDU5OiAnNTE4IDBRNDk3IDMgMzc0IDNRMjUzIDMgMjMyIDBIMjIxVjQ2SDI1NFEzMTMgNDcgMzIxIDU4UTMyNCA2MiAzMjQgMTY3VjI3M0wyMjEgNDQ2UTExNyA2MjAgMTE0IDYyM1ExMDYgNjMxIDkxIDYzNFQzMSA2MzdIMTFWNjgzSDIwUTI5IDY4MCAxNDggNjgwUTI3MyA2ODAgMjk0IDY4M0gzMDVWNjM3SDI4N1EyMzkgNjM2IDIzNiA2MjFRMjM2IDYxOSAzMjEgNDc1TDQwNyAzMzJMNDgzIDQ2MFE1MDIgNDkyIDUyNyA1MzRRNTYzIDU5NCA1NjMgNjA0UTU2MyA2MzIgNTE3IDYzN0g1MDhWNjgzSDUxN0g1MjVRNTMzIDY4MyA1NDUgNjgzVDU3MSA2ODJUNjAwIDY4MVQ2MjYgNjgxUTY5NSA2ODEgNzMxIDY4M0g3MzhWNjM3SDcyM1E2NDAgNjMzIDYxMyA1ODhRNjEyIDU4NyA1MTcgNDI3TDQyNSAyNzNWMTY5Vjk1UTQyNSA2NiA0MjggNTlUNDQ0IDQ5UTQ1OSA0NiA1MDYgNDZINTI4VjBINTE4JyxcbiAgICAweDVBOiAnNjkgNDQzUTY5IDQ1MiA3NCA1NTRUODAgNjgzSDU0OVE1NTUgNjc3IDU1NSA2NjRRNTU1IDY0OSA1NTQgNjQ4UTU1MiA2NDUgMzY2IDM0OFQxNzkgNTBUMTkyIDQ5VDI2MyA0OUgyNzVIMzAyUTMzMyA0OSAzNTMgNTBUNDAxIDU5VDQ0NyA3OFQ0ODIgMTE1VDUwNyAxNzNRNTEzIDIwMCA1MjAgMjczVjI4Mkg1NjBWMjc0UTU2MCAyNzIgNTUyIDE0M1Q1NDMgOFYwSDMwMkw2MSAxTDU4IDNRNTUgOCA1NSAyMVYzNVE1OSA0MyAxNTMgMTkzVDM0MCA0ODlUNDMyIDYzN0gzNDNRMjU5IDYzNyAyMTQgNjI1VDE0MSA1NzNRMTA5IDUyMyAxMDkgNDQ1UTEwOSA0NDMgODkgNDQzSDY5JyxcbiAgICAweDVCOiAnMTE4IC0yNTBWNzUwSDI1NVY3MTBIMTU4Vi0yMTBIMjU1Vi0yNTBIMTE4JyxcbiAgICAweDVDOiAnNTYgNzMxUTU2IDc0MCA2MiA3NDVUNzUgNzUwUTg1IDc1MCA5MiA3NDBROTYgNzMzIDI3MCAyNTVUNDQ0IC0yMzFRNDQ0IC0yMzkgNDM4IC0yNDRUNDI0IC0yNTBRNDE0IC0yNTAgNDA3IC0yNDBRNDA0IC0yMzYgMjMwIDI0MlQ1NiA3MzEnLFxuICAgIDB4NUQ6ICcyMiA3MTBWNzUwSDE1OVYtMjUwSDIyVi0yMTBIMTE5VjcxMEgyMicsXG4gICAgMHg1RTogJzExMiA1NjBMMjQ5IDY5NEwyNTcgNjg2UTM4NyA1NjIgMzg3IDU2MEwzNjEgNTMxUTM1OSA1MzIgMzAzIDU4MUwyNTAgNjI3TDE5NSA1ODBRMTgyIDU2OSAxNjkgNTU3VDE0OCA1MzhMMTQwIDUzMlExMzggNTMwIDEyNSA1NDZMMTEyIDU2MCcsXG4gICAgMHg1RjogJzAgLTYyVi0yNUg0OTlWLTYySDAnLFxuICAgIDB4NjA6ICcxMDYgNjU1UTEwNiA2NzEgMTE5IDY4NVQxNTAgNjk5UTE2NiA2OTkgMTc3IDY4OFExOTAgNjcxIDIyMiA2MjlUMjc1IDU2MVQyOTUgNTMzVDI4MiA1MTlMMjY3IDUwNUwxOTYgNTYzUTExOSA2MjYgMTEzIDYzNFExMDYgNjQzIDEwNiA2NTUnLFxuICAgIDB4NjE6ICcxMzcgMzA1VDExNSAzMDVUNzggMzIwVDYzIDM1OVE2MyAzOTQgOTcgNDIxVDIxOCA0NDhRMjkxIDQ0OCAzMzYgNDE2VDM5NiAzNDBRNDAxIDMyNiA0MDEgMzA5VDQwMiAxOTRWMTI0UTQwMiA3NiA0MDcgNThUNDI4IDQwUTQ0MyA0MCA0NDggNTZUNDUzIDEwOVYxNDVINDkzVjEwNlE0OTIgNjYgNDkwIDU5UTQ4MSAyOSA0NTUgMTJUNDAwIC02VDM1MyAxMlQzMjkgNTRWNThMMzI3IDU1UTMyNSA1MiAzMjIgNDlUMzE0IDQwVDMwMiAyOVQyODcgMTdUMjY5IDZUMjQ3IC0yVDIyMSAtOFQxOTAgLTExUTEzMCAtMTEgODIgMjBUMzQgMTA3UTM0IDEyOCA0MSAxNDdUNjggMTg4VDExNiAyMjVUMTk0IDI1M1QzMDQgMjY4SDMxOFYyOTBRMzE4IDMyNCAzMTIgMzQwUTI5MCA0MTEgMjE1IDQxMVExOTcgNDExIDE4MSA0MTBUMTU2IDQwNlQxNDggNDAzUTE3MCAzODggMTcwIDM1OVExNzAgMzM0IDE1NCAzMjBaTTEyNiAxMDZRMTI2IDc1IDE1MCA1MVQyMDkgMjZRMjQ3IDI2IDI3NiA0OVQzMTUgMTA5UTMxNyAxMTYgMzE4IDE3NVEzMTggMjMzIDMxNyAyMzNRMzA5IDIzMyAyOTYgMjMyVDI1MSAyMjNUMTkzIDIwM1QxNDcgMTY2VDEyNiAxMDYnLFxuICAgIDB4NjI6ICczMDcgLTExUTIzNCAtMTEgMTY4IDU1TDE1OCAzN1ExNTYgMzQgMTUzIDI4VDE0NyAxN1QxNDMgMTBMMTM4IDFMMTE4IDBIOThWMjk4UTk4IDU5OSA5NyA2MDNROTQgNjIyIDgzIDYyOFQzOCA2MzdIMjBWNjYwUTIwIDY4MyAyMiA2ODNMMzIgNjg0UTQyIDY4NSA2MSA2ODZUOTggNjg4UTExNSA2ODkgMTM1IDY5MFQxNjUgNjkzVDE3NiA2OTRIMTc5VjU0M1ExNzkgMzkxIDE4MCAzOTFMMTgzIDM5NFExODYgMzk3IDE5MiA0MDFUMjA3IDQxMVQyMjggNDIxVDI1NCA0MzFUMjg2IDQzOVQzMjMgNDQyUTQwMSA0NDIgNDYxIDM3OVQ1MjIgMjE2UTUyMiAxMTUgNDU4IDUyVDMwNyAtMTFaTTE4MiA5OFExODIgOTcgMTg3IDkwVDE5NiA3OVQyMDYgNjdUMjE4IDU1VDIzMyA0NFQyNTAgMzVUMjcxIDI5VDI5NSAyNlEzMzAgMjYgMzYzIDQ2VDQxMiAxMTNRNDI0IDE0OCA0MjQgMjEyUTQyNCAyODcgNDEyIDMyM1EzODUgNDA1IDMwMCA0MDVRMjcwIDQwNSAyMzkgMzkwVDE4OCAzNDdMMTgyIDMzOVY5OCcsXG4gICAgMHg2MzogJzM3MCAzMDVUMzQ5IDMwNVQzMTMgMzIwVDI5NyAzNThRMjk3IDM4MSAzMTIgMzk2UTMxNyA0MDEgMzE3IDQwMlQzMDcgNDA0UTI4MSA0MDggMjU4IDQwOFEyMDkgNDA4IDE3OCAzNzZRMTMxIDMyOSAxMzEgMjE5UTEzMSAxMzcgMTYyIDkwUTIwMyAyOSAyNzIgMjlRMzEzIDI5IDMzOCA1NVQzNzQgMTE3UTM3NiAxMjUgMzc5IDEyN1QzOTUgMTI5SDQwOVE0MTUgMTIzIDQxNSAxMjBRNDE1IDExNiA0MTEgMTA0VDM5NSA3MVQzNjYgMzNUMzE4IDJUMjQ5IC0xMVExNjMgLTExIDk5IDUzVDM0IDIxNFEzNCAzMTggOTkgMzgzVDI1MCA0NDhUMzcwIDQyMVQ0MDQgMzU3UTQwNCAzMzQgMzg3IDMyMCcsXG4gICAgMHg2NDogJzM3NiA0OTVRMzc2IDUxMSAzNzYgNTM1VDM3NyA1NjhRMzc3IDYxMyAzNjcgNjI0VDMxNiA2MzdIMjk4VjY2MFEyOTggNjgzIDMwMCA2ODNMMzEwIDY4NFEzMjAgNjg1IDMzOSA2ODZUMzc2IDY4OFEzOTMgNjg5IDQxMyA2OTBUNDQzIDY5M1Q0NTQgNjk0SDQ1N1YzOTBRNDU3IDg0IDQ1OCA4MVE0NjEgNjEgNDcyIDU1VDUxNyA0Nkg1MzVWMFE1MzMgMCA0NTkgLTVUMzgwIC0xMUgzNzNWNDRMMzY1IDM3UTMwNyAtMTEgMjM1IC0xMVExNTggLTExIDk2IDUwVDM0IDIxNVEzNCAzMTUgOTcgMzc4VDI0NCA0NDJRMzE5IDQ0MiAzNzYgMzkzVjQ5NVpNMzczIDM0MlEzMjggNDA1IDI2MCA0MDVRMjExIDQwNSAxNzMgMzY5UTE0NiAzNDEgMTM5IDMwNVQxMzEgMjExUTEzMSAxNTUgMTM4IDEyMFQxNzMgNTlRMjAzIDI2IDI1MSAyNlEzMjIgMjYgMzczIDEwM1YzNDInLFxuICAgIDB4NjU6ICcyOCAyMThRMjggMjczIDQ4IDMxOFQ5OCAzOTFUMTYzIDQzM1QyMjkgNDQ4UTI4MiA0NDggMzIwIDQzMFQzNzggMzgwVDQwNiAzMTZUNDE1IDI0NVE0MTUgMjM4IDQwOCAyMzFIMTI2VjIxNlExMjYgNjggMjI2IDM2UTI0NiAzMCAyNzAgMzBRMzEyIDMwIDM0MiA2MlEzNTkgNzkgMzY5IDEwNEwzNzkgMTI4UTM4MiAxMzEgMzk1IDEzMUgzOThRNDE1IDEzMSA0MTUgMTIxUTQxNSAxMTcgNDEyIDEwOFEzOTMgNTMgMzQ5IDIxVDI1MCAtMTFRMTU1IC0xMSA5MiA1OFQyOCAyMThaTTMzMyAyNzVRMzIyIDQwMyAyMzggNDExSDIzNlEyMjggNDExIDIyMCA0MTBUMTk1IDQwMlQxNjYgMzgxVDE0MyAzNDBUMTI3IDI3NFYyNjdIMzMzVjI3NScsXG4gICAgMHg2NjogJzI3MyAwUTI1NSAzIDE0NiAzUTQzIDMgMzQgMEgyNlY0Nkg0MlE3MCA0NiA5MSA0OVE5OSA1MiAxMDMgNjBRMTA0IDYyIDEwNCAyMjRWMzg1SDMzVjQzMUgxMDRWNDk3TDEwNSA1NjRMMTA3IDU3NFExMjYgNjM5IDE3MSA2NjhUMjY2IDcwNFEyNjcgNzA0IDI3NSA3MDRUMjg5IDcwNVEzMzAgNzAyIDM1MSA2NzlUMzcyIDYyN1EzNzIgNjA0IDM1OCA1OTBUMzIxIDU3NlQyODQgNTkwVDI3MCA2MjdRMjcwIDY0NyAyODggNjY3SDI4NFEyODAgNjY4IDI3MyA2NjhRMjQ1IDY2OCAyMjMgNjQ3VDE4OSA1OTJRMTgzIDU3MiAxODIgNDk3VjQzMUgyOTNWMzg1SDE4NVYyMjVRMTg1IDYzIDE4NiA2MVQxODkgNTdUMTk0IDU0VDE5OSA1MVQyMDYgNDlUMjEzIDQ4VDIyMiA0N1QyMzEgNDdUMjQxIDQ2VDI1MSA0NkgyODJWMEgyNzMnLFxuICAgIDB4Njc6ICczMjkgNDA5UTM3MyA0NTMgNDI5IDQ1M1E0NTkgNDUzIDQ3MiA0MzRUNDg1IDM5NlE0ODUgMzgyIDQ3NiAzNzFUNDQ5IDM2MFE0MTYgMzYwIDQxMiAzOTBRNDEwIDQwNCA0MTUgNDExUTQxNSA0MTIgNDE2IDQxNFY0MTVRMzg4IDQxMiAzNjMgMzkzUTM1NSAzODggMzU1IDM4NlEzNTUgMzg1IDM1OSAzODFUMzY4IDM2OVQzNzkgMzUxVDM4OCAzMjVUMzkyIDI5MlEzOTIgMjMwIDM0MyAxODdUMjIyIDE0M1ExNzIgMTQzIDEyMyAxNzFRMTEyIDE1MyAxMTIgMTMzUTExMiA5OCAxMzggODFRMTQ3IDc1IDE1NSA3NVQyMjcgNzNRMzExIDcyIDMzNSA2N1EzOTYgNTggNDMxIDI2UTQ3MCAtMTMgNDcwIC03MlE0NzAgLTEzOSAzOTIgLTE3NVEzMzIgLTIwNiAyNTAgLTIwNlExNjcgLTIwNiAxMDcgLTE3NVEyOSAtMTQwIDI5IC03NVEyOSAtMzkgNTAgLTE1VDkyIDE4TDEwMyAyNFE2NyA1NSA2NyAxMDhRNjcgMTU1IDk2IDE5M1E1MiAyMzcgNTIgMjkyUTUyIDM1NSAxMDIgMzk4VDIyMyA0NDJRMjc0IDQ0MiAzMTggNDE2TDMyOSA0MDlaTTI5OSAzNDNRMjk0IDM3MSAyNzMgMzg3VDIyMSA0MDRRMTkyIDQwNCAxNzEgMzg4VDE0NSAzNDNRMTQyIDMyNiAxNDIgMjkyUTE0MiAyNDggMTQ5IDIyN1QxNzkgMTkyUTE5NiAxODIgMjIyIDE4MlEyNDQgMTgyIDI2MCAxODlUMjgzIDIwN1QyOTQgMjI3VDI5OSAyNDJRMzAyIDI1OCAzMDIgMjkyVDI5OSAzNDNaTTQwMyAtNzVRNDAzIC01MCAzODkgLTM0VDM0OCAtMTFUMjk5IC0yVDI0NSAwSDIxOFExNTEgMCAxMzggLTZRMTE4IC0xNSAxMDcgLTM0VDk1IC03NFE5NSAtODQgMTAxIC05N1QxMjIgLTEyN1QxNzAgLTE1NVQyNTAgLTE2N1EzMTkgLTE2NyAzNjEgLTEzOVQ0MDMgLTc1JyxcbiAgICAweDY4OiAnNDEgNDZINTVROTQgNDYgMTAyIDYwVjY4UTEwMiA3NyAxMDIgOTFUMTAyIDEyNFQxMDIgMTY3VDEwMyAyMTdUMTAzIDI3MlQxMDMgMzI5UTEwMyAzNjYgMTAzIDQwN1QxMDMgNDgyVDEwMiA1NDJUMTAyIDU4NlQxMDIgNjAzUTk5IDYyMiA4OCA2MjhUNDMgNjM3SDI1VjY2MFEyNSA2ODMgMjcgNjgzTDM3IDY4NFE0NyA2ODUgNjYgNjg2VDEwMyA2ODhRMTIwIDY4OSAxNDAgNjkwVDE3MCA2OTNUMTgxIDY5NEgxODRWMzY3UTI0NCA0NDIgMzI4IDQ0MlE0NTEgNDQyIDQ2MyAzMjlRNDY0IDMyMiA0NjQgMTkwVjEwNFE0NjQgNjYgNDY2IDU5VDQ3NyA0OVE0OTggNDYgNTI2IDQ2SDU0MlYwSDUzNEw1MTAgMVE0ODcgMiA0NjAgMlQ0MjIgM1EzMTkgMyAzMTAgMEgzMDJWNDZIMzE4UTM3OSA0NiAzNzkgNjJRMzgwIDY0IDM4MCAyMDBRMzc5IDMzNSAzNzggMzQzUTM3MiAzNzEgMzU4IDM4NVQzMzQgNDAyVDMwOCA0MDRRMjYzIDQwNCAyMjkgMzcwUTIwMiAzNDMgMTk1IDMxNVQxODcgMjMyVjE2OFYxMDhRMTg3IDc4IDE4OCA2OFQxOTEgNTVUMjAwIDQ5UTIyMSA0NiAyNDkgNDZIMjY1VjBIMjU3TDIzNCAxUTIxMCAyIDE4MyAyVDE0NSAzUTQyIDMgMzMgMEgyNVY0Nkg0MScsXG4gICAgMHg2OTogJzY5IDYwOVE2OSA2MzcgODcgNjUzVDEzMSA2NjlRMTU0IDY2NyAxNzEgNjUyVDE4OCA2MDlRMTg4IDU3OSAxNzEgNTY0VDEyOSA1NDlRMTA0IDU0OSA4NyA1NjRUNjkgNjA5Wk0yNDcgMFEyMzIgMyAxNDMgM1ExMzIgMyAxMDYgM1Q1NiAxTDM0IDBIMjZWNDZINDJRNzAgNDYgOTEgNDlRMTAwIDUzIDEwMiA2MFQxMDQgMTAyVjIwNVYyOTNRMTA0IDM0NSAxMDIgMzU5VDg4IDM3OFE3NCAzODUgNDEgMzg1SDMwVjQwOFEzMCA0MzEgMzIgNDMxTDQyIDQzMlE1MiA0MzMgNzAgNDM0VDEwNiA0MzZRMTIzIDQzNyAxNDIgNDM4VDE3MSA0NDFUMTgyIDQ0MkgxODVWNjJRMTkwIDUyIDE5NyA1MFQyMzIgNDZIMjU1VjBIMjQ3JyxcbiAgICAweDZBOiAnOTggNjA5UTk4IDYzNyAxMTYgNjUzVDE2MCA2NjlRMTgzIDY2NyAyMDAgNjUyVDIxNyA2MDlRMjE3IDU3OSAyMDAgNTY0VDE1OCA1NDlRMTMzIDU0OSAxMTYgNTY0VDk4IDYwOVpNMjggLTE2M1E1OCAtMTY4IDY0IC0xNjhRMTI0IC0xNjggMTM1IC03N1ExMzcgLTY1IDEzNyAxNDFUMTM2IDM1M1ExMzIgMzcxIDEyMCAzNzdUNzIgMzg1SDUyVjQwOFE1MiA0MzEgNTQgNDMxTDU4IDQzMlE2MiA0MzIgNzAgNDMyVDg3IDQzM1QxMDggNDM0VDEzMyA0MzZRMTUxIDQzNyAxNzEgNDM4VDIwMiA0NDFUMjE0IDQ0MkgyMThWMTg0UTIxNyAtMzYgMjE3IC01OVQyMTEgLTk4UTE5NSAtMTQ1IDE1MyAtMTc1VDU4IC0yMDVROSAtMjA1IC0yMyAtMTc5VC01NSAtMTE3US01NSAtOTQgLTQwIC03OVQtMiAtNjRUMzYgLTc5VDUyIC0xMThRNTIgLTE0MyAyOCAtMTYzJyxcbiAgICAweDZCOiAnMzYgNDZINTBRODkgNDYgOTcgNjBWNjhROTcgNzcgOTcgOTFUOTcgMTI0VDk4IDE2N1Q5OCAyMTdUOTggMjcyVDk4IDMyOVE5OCAzNjYgOTggNDA3VDk4IDQ4MlQ5OCA1NDJUOTcgNTg2VDk3IDYwM1E5NCA2MjIgODMgNjI4VDM4IDYzN0gyMFY2NjBRMjAgNjgzIDIyIDY4M0wzMiA2ODRRNDIgNjg1IDYxIDY4NlQ5OCA2ODhRMTE1IDY4OSAxMzUgNjkwVDE2NSA2OTNUMTc2IDY5NEgxNzlWNDYzTDE4MCAyMzNMMjQwIDI4N1EzMDAgMzQxIDMwNCAzNDdRMzEwIDM1NiAzMTAgMzY0UTMxMCAzODMgMjg5IDM4NUgyODRWNDMxSDI5M1EzMDggNDI4IDQxMiA0MjhRNDc1IDQyOCA0ODQgNDMxSDQ4OVYzODVINDc2UTQwNyAzODAgMzYwIDM0MVEyODYgMjc4IDI4NiAyNzRRMjg2IDI3MyAzNDkgMTgxVDQyMCA3OVE0MzQgNjAgNDUxIDUzVDUwMCA0Nkg1MTFWMEg1MDVRNDk2IDMgNDE4IDNRMzIyIDMgMzA3IDBIMjk5VjQ2SDMwNlEzMzAgNDggMzMwIDY1UTMzMCA3MiAzMjYgNzlRMzIzIDg0IDI3NiAxNTNUMjI4IDIyMkwxNzYgMTc2VjEyMFY4NFExNzYgNjUgMTc4IDU5VDE4OSA0OVEyMTAgNDYgMjM4IDQ2SDI1NFYwSDI0NlEyMzEgMyAxMzcgM1QyOCAwSDIwVjQ2SDM2JyxcbiAgICAweDZDOiAnNDIgNDZINTZROTUgNDYgMTAzIDYwVjY4UTEwMyA3NyAxMDMgOTFUMTAzIDEyNFQxMDQgMTY3VDEwNCAyMTdUMTA0IDI3MlQxMDQgMzI5UTEwNCAzNjYgMTA0IDQwN1QxMDQgNDgyVDEwNCA1NDJUMTAzIDU4NlQxMDMgNjAzUTEwMCA2MjIgODkgNjI4VDQ0IDYzN0gyNlY2NjBRMjYgNjgzIDI4IDY4M0wzOCA2ODRRNDggNjg1IDY3IDY4NlQxMDQgNjg4UTEyMSA2ODkgMTQxIDY5MFQxNzEgNjkzVDE4MiA2OTRIMTg1VjM3OVExODUgNjIgMTg2IDYwUTE5MCA1MiAxOTggNDlRMjE5IDQ2IDI0NyA0NkgyNjNWMEgyNTVMMjMyIDFRMjA5IDIgMTgzIDJUMTQ1IDNUMTA3IDNUNTcgMUwzNCAwSDI2VjQ2SDQyJyxcbiAgICAweDZEOiAnNDEgNDZINTVROTQgNDYgMTAyIDYwVjY4UTEwMiA3NyAxMDIgOTFUMTAyIDEyMlQxMDMgMTYxVDEwMyAyMDNRMTAzIDIzNCAxMDMgMjY5VDEwMiAzMjhWMzUxUTk5IDM3MCA4OCAzNzZUNDMgMzg1SDI1VjQwOFEyNSA0MzEgMjcgNDMxTDM3IDQzMlE0NyA0MzMgNjUgNDM0VDEwMiA0MzZRMTE5IDQzNyAxMzggNDM4VDE2NyA0NDFUMTc4IDQ0MkgxODFWNDAyUTE4MSAzNjQgMTgyIDM2NFQxODcgMzY5VDE5OSAzODRUMjE4IDQwMlQyNDcgNDIxVDI4NSA0MzdRMzA1IDQ0MiAzMzYgNDQyUTM1MSA0NDIgMzY0IDQ0MFQzODcgNDM0VDQwNiA0MjZUNDIxIDQxN1Q0MzIgNDA2VDQ0MSAzOTVUNDQ4IDM4NFQ0NTIgMzc0VDQ1NSAzNjZMNDU3IDM2MUw0NjAgMzY1UTQ2MyAzNjkgNDY2IDM3M1Q0NzUgMzg0VDQ4OCAzOTdUNTAzIDQxMFQ1MjMgNDIyVDU0NiA0MzJUNTcyIDQzOVQ2MDMgNDQyUTcyOSA0NDIgNzQwIDMyOVE3NDEgMzIyIDc0MSAxOTBWMTA0UTc0MSA2NiA3NDMgNTlUNzU0IDQ5UTc3NSA0NiA4MDMgNDZIODE5VjBIODExTDc4OCAxUTc2NCAyIDczNyAyVDY5OSAzUTU5NiAzIDU4NyAwSDU3OVY0Nkg1OTVRNjU2IDQ2IDY1NiA2MlE2NTcgNjQgNjU3IDIwMFE2NTYgMzM1IDY1NSAzNDNRNjQ5IDM3MSA2MzUgMzg1VDYxMSA0MDJUNTg1IDQwNFE1NDAgNDA0IDUwNiAzNzBRNDc5IDM0MyA0NzIgMzE1VDQ2NCAyMzJWMTY4VjEwOFE0NjQgNzggNDY1IDY4VDQ2OCA1NVQ0NzcgNDlRNDk4IDQ2IDUyNiA0Nkg1NDJWMEg1MzRMNTEwIDFRNDg3IDIgNDYwIDJUNDIyIDNRMzE5IDMgMzEwIDBIMzAyVjQ2SDMxOFEzNzkgNDYgMzc5IDYyUTM4MCA2NCAzODAgMjAwUTM3OSAzMzUgMzc4IDM0M1EzNzIgMzcxIDM1OCAzODVUMzM0IDQwMlQzMDggNDA0UTI2MyA0MDQgMjI5IDM3MFEyMDIgMzQzIDE5NSAzMTVUMTg3IDIzMlYxNjhWMTA4UTE4NyA3OCAxODggNjhUMTkxIDU1VDIwMCA0OVEyMjEgNDYgMjQ5IDQ2SDI2NVYwSDI1N0wyMzQgMVEyMTAgMiAxODMgMlQxNDUgM1E0MiAzIDMzIDBIMjVWNDZINDEnLFxuICAgIDB4NkU6ICc0MSA0Nkg1NVE5NCA0NiAxMDIgNjBWNjhRMTAyIDc3IDEwMiA5MVQxMDIgMTIyVDEwMyAxNjFUMTAzIDIwM1ExMDMgMjM0IDEwMyAyNjlUMTAyIDMyOFYzNTFROTkgMzcwIDg4IDM3NlQ0MyAzODVIMjVWNDA4UTI1IDQzMSAyNyA0MzFMMzcgNDMyUTQ3IDQzMyA2NSA0MzRUMTAyIDQzNlExMTkgNDM3IDEzOCA0MzhUMTY3IDQ0MVQxNzggNDQySDE4MVY0MDJRMTgxIDM2NCAxODIgMzY0VDE4NyAzNjlUMTk5IDM4NFQyMTggNDAyVDI0NyA0MjFUMjg1IDQzN1EzMDUgNDQyIDMzNiA0NDJRNDUwIDQzOCA0NjMgMzI5UTQ2NCAzMjIgNDY0IDE5MFYxMDRRNDY0IDY2IDQ2NiA1OVQ0NzcgNDlRNDk4IDQ2IDUyNiA0Nkg1NDJWMEg1MzRMNTEwIDFRNDg3IDIgNDYwIDJUNDIyIDNRMzE5IDMgMzEwIDBIMzAyVjQ2SDMxOFEzNzkgNDYgMzc5IDYyUTM4MCA2NCAzODAgMjAwUTM3OSAzMzUgMzc4IDM0M1EzNzIgMzcxIDM1OCAzODVUMzM0IDQwMlQzMDggNDA0UTI2MyA0MDQgMjI5IDM3MFEyMDIgMzQzIDE5NSAzMTVUMTg3IDIzMlYxNjhWMTA4UTE4NyA3OCAxODggNjhUMTkxIDU1VDIwMCA0OVEyMjEgNDYgMjQ5IDQ2SDI2NVYwSDI1N0wyMzQgMVEyMTAgMiAxODMgMlQxNDUgM1E0MiAzIDMzIDBIMjVWNDZINDEnLFxuICAgIDB4NkY6ICcyOCAyMTRRMjggMzA5IDkzIDM3OFQyNTAgNDQ4UTM0MCA0NDggNDA1IDM4MFQ0NzEgMjE1UTQ3MSAxMjAgNDA3IDU1VDI1MCAtMTBRMTUzIC0xMCA5MSA1N1QyOCAyMTRaTTI1MCAzMFEzNzIgMzAgMzcyIDE5M1YyMjVWMjUwUTM3MiAyNzIgMzcxIDI4OFQzNjQgMzI2VDM0OCAzNjJUMzE3IDM5MFQyNjggNDEwUTI2MyA0MTEgMjUyIDQxMVEyMjIgNDExIDE5NSAzOTlRMTUyIDM3NyAxMzkgMzM4VDEyNiAyNDZWMjI2UTEyNiAxMzAgMTQ1IDkxUTE3NyAzMCAyNTAgMzAnLFxuICAgIDB4NzA6ICczNiAtMTQ4SDUwUTg5IC0xNDggOTcgLTEzNFYtMTI2UTk3IC0xMTkgOTcgLTEwN1Q5NyAtNzdUOTggLTM4VDk4IDZUOTggNTVUOTggMTA2UTk4IDE0MCA5OCAxNzdUOTggMjQzVDk4IDI5NlQ5NyAzMzVUOTcgMzUxUTk0IDM3MCA4MyAzNzZUMzggMzg1SDIwVjQwOFEyMCA0MzEgMjIgNDMxTDMyIDQzMlE0MiA0MzMgNjEgNDM0VDk4IDQzNlExMTUgNDM3IDEzNSA0MzhUMTY1IDQ0MVQxNzYgNDQySDE3OVY0MTZMMTgwIDM5MEwxODggMzk3UTI0NyA0NDEgMzI2IDQ0MVE0MDcgNDQxIDQ2NCAzNzdUNTIyIDIxNlE1MjIgMTE1IDQ1NyA1MlQzMTAgLTExUTI0MiAtMTEgMTkwIDMzTDE4MiA0MFYtNDVWLTEwMVExODIgLTEyOCAxODQgLTEzNFQxOTUgLTE0NVEyMTYgLTE0OCAyNDQgLTE0OEgyNjBWLTE5NEgyNTJMMjI4IC0xOTNRMjA1IC0xOTIgMTc4IC0xOTJUMTQwIC0xOTFRMzcgLTE5MSAyOCAtMTk0SDIwVi0xNDhIMzZaTTQyNCAyMThRNDI0IDI5MiAzOTAgMzQ3VDMwNSA0MDJRMjM0IDQwMiAxODIgMzM3Vjk4UTIyMiAyNiAyOTQgMjZRMzQ1IDI2IDM4NCA4MFQ0MjQgMjE4JyxcbiAgICAweDcxOiAnMzMgMjE4UTMzIDMwOCA5NSAzNzRUMjM2IDQ0MUgyNDZRMzMwIDQ0MSAzODEgMzcyTDM4NyAzNjRRMzg4IDM2NCA0MDQgNDAzTDQyMCA0NDJINDU3VjE1NlE0NTcgLTEzMiA0NTggLTEzNFE0NjIgLTE0MiA0NzAgLTE0NVE0OTEgLTE0OCA1MTkgLTE0OEg1MzVWLTE5NEg1MjdMNTA0IC0xOTNRNDgwIC0xOTIgNDUzIC0xOTJUNDE1IC0xOTFRMzEyIC0xOTEgMzAzIC0xOTRIMjk1Vi0xNDhIMzExUTMzOSAtMTQ4IDM2MCAtMTQ1UTM2OSAtMTQxIDM3MSAtMTM1VDM3MyAtMTA2Vi00MVY0OVEzMTMgLTExIDIzNiAtMTFRMTU0IC0xMSA5NCA1M1QzMyAyMThaTTM3NiAzMDBRMzQ2IDM4OSAyNzggNDAxUTI3NSA0MDEgMjY5IDQwMVQyNjEgNDAyUTIxMSA0MDAgMTcxIDM1MFQxMzEgMjE0UTEzMSAxMzcgMTY1IDgyVDI1MyAyN1EyOTYgMjcgMzI4IDU0VDM3NiAxMThWMzAwJyxcbiAgICAweDcyOiAnMzYgNDZINTBRODkgNDYgOTcgNjBWNjhROTcgNzcgOTcgOTFUOTggMTIyVDk4IDE2MVQ5OCAyMDNROTggMjM0IDk4IDI2OVQ5OCAzMjhMOTcgMzUxUTk0IDM3MCA4MyAzNzZUMzggMzg1SDIwVjQwOFEyMCA0MzEgMjIgNDMxTDMyIDQzMlE0MiA0MzMgNjAgNDM0VDk2IDQzNlExMTIgNDM3IDEzMSA0MzhUMTYwIDQ0MVQxNzEgNDQySDE3NFYzNzNRMjEzIDQ0MSAyNzEgNDQxSDI3N1EzMjIgNDQxIDM0MyA0MTlUMzY0IDM3M1EzNjQgMzUyIDM1MSAzMzdUMzEzIDMyMlEyODggMzIyIDI3NiAzMzhUMjYzIDM3MlEyNjMgMzgxIDI2NSAzODhUMjcwIDQwMFQyNzMgNDA1UTI3MSA0MDcgMjUwIDQwMVEyMzQgMzkzIDIyNiAzODZRMTc5IDM0MSAxNzkgMjA3VjE1NFExNzkgMTQxIDE3OSAxMjdUMTc5IDEwMVQxODAgODFUMTgwIDY2VjYxUTE4MSA1OSAxODMgNTdUMTg4IDU0VDE5MyA1MVQyMDAgNDlUMjA3IDQ4VDIxNiA0N1QyMjUgNDdUMjM1IDQ2VDI0NSA0NkgyNzZWMEgyNjdRMjQ5IDMgMTQwIDNRMzcgMyAyOCAwSDIwVjQ2SDM2JyxcbiAgICAweDczOiAnMjk1IDMxNlEyOTUgMzU2IDI2OCAzODVUMTkwIDQxNFExNTQgNDE0IDEyOCA0MDFROTggMzgyIDk4IDM0OVE5NyAzNDQgOTggMzM2VDExNCAzMTJUMTU3IDI4N1ExNzUgMjgyIDIwMSAyNzhUMjQ1IDI2OVQyNzcgMjU2UTI5NCAyNDggMzEwIDIzNlQzNDIgMTk1VDM1OSAxMzNRMzU5IDcxIDMyMSAzMVQxOTggLTEwSDE5MFExMzggLTEwIDk0IDI2TDg2IDE5TDc3IDEwUTcxIDQgNjUgLTFMNTQgLTExSDQ2SDQyUTM5IC0xMSAzMyAtNVY3NFYxMzJRMzMgMTUzIDM1IDE1N1Q0NSAxNjJINTRRNjYgMTYyIDcwIDE1OFQ3NSAxNDZUODIgMTE5VDEwMSA3N1ExMzYgMjYgMTk4IDI2UTI5NSAyNiAyOTUgMTA0UTI5NSAxMzMgMjc3IDE1MVEyNTcgMTc1IDE5NCAxODdUMTExIDIxMFE3NSAyMjcgNTQgMjU2VDMzIDMxOFEzMyAzNTcgNTAgMzg0VDkzIDQyNFQxNDMgNDQyVDE4NyA0NDdIMTk4UTIzOCA0NDcgMjY4IDQzMkwyODMgNDI0TDI5MiA0MzFRMzAyIDQ0MCAzMTQgNDQ4SDMyMkgzMjZRMzI5IDQ0OCAzMzUgNDQyVjMxMEwzMjkgMzA0SDMwMVEyOTUgMzEwIDI5NSAzMTYnLFxuICAgIDB4NzQ6ICcyNyA0MjJRODAgNDI2IDEwOSA0NzhUMTQxIDYwMFY2MTVIMTgxVjQzMUgzMTZWMzg1SDE4MVYyNDFRMTgyIDExNiAxODIgMTAwVDE4OSA2OFEyMDMgMjkgMjM4IDI5UTI4MiAyOSAyOTIgMTAwUTI5MyAxMDggMjkzIDE0NlYxODFIMzMzVjE0NlYxMzRRMzMzIDU3IDI5MSAxN1EyNjQgLTEwIDIyMSAtMTBRMTg3IC0xMCAxNjIgMlQxMjQgMzNUMTA1IDY4VDk4IDEwMFE5NyAxMDcgOTcgMjQ4VjM4NUgxOFY0MjJIMjcnLFxuICAgIDB4NzU6ICczODMgNThRMzI3IC0xMCAyNTYgLTEwSDI0OVExMjQgLTEwIDEwNSA4OVExMDQgOTYgMTAzIDIyNlExMDIgMzM1IDEwMiAzNDhUOTYgMzY5UTg2IDM4NSAzNiAzODVIMjVWNDA4UTI1IDQzMSAyNyA0MzFMMzggNDMyUTQ4IDQzMyA2NyA0MzRUMTA1IDQzNlExMjIgNDM3IDE0MiA0MzhUMTcyIDQ0MVQxODQgNDQySDE4N1YyNjFRMTg4IDc3IDE5MCA2NFExOTMgNDkgMjA0IDQwUTIyNCAyNiAyNjQgMjZRMjkwIDI2IDMxMSAzNVQzNDMgNThUMzYzIDkwVDM3NSAxMjBUMzc5IDE0NFEzNzkgMTQ1IDM3OSAxNjFUMzgwIDIwMVQzODAgMjQ4VjMxNVEzODAgMzYxIDM3MCAzNzJUMzIwIDM4NUgzMDJWNDMxUTMwNCA0MzEgMzc4IDQzNlQ0NTcgNDQySDQ2NFYyNjRRNDY0IDg0IDQ2NSA4MVE0NjggNjEgNDc5IDU1VDUyNCA0Nkg1NDJWMFE1NDAgMCA0NjcgLTVUMzkwIC0xMUgzODNWNTgnLFxuICAgIDB4NzY6ICczMzggNDMxUTM0NCA0MjkgNDIyIDQyOVE0NzkgNDI5IDUwMyA0MzFINTA4VjM4NUg0OTdRNDM5IDM4MSA0MjMgMzQ1UTQyMSAzNDEgMzU2IDE3MlQyODggLTJRMjgzIC0xMSAyNjMgLTExUTI0NCAtMTEgMjM5IC0yUTk5IDM1OSA5OCAzNjRROTMgMzc4IDgyIDM4MVQ0MyAzODVIMTlWNDMxSDI1TDMzIDQzMFE0MSA0MzAgNTMgNDMwVDc5IDQzMFQxMDQgNDI5VDEyMiA0MjhRMjE3IDQyOCAyMzIgNDMxSDI0MFYzODVIMjI2UTE4NyAzODQgMTg0IDM3MFExODQgMzY2IDIzNSAyMzRMMjg2IDEwMkwzNzcgMzQxVjM0OVEzNzcgMzYzIDM2NyAzNzJUMzQ5IDM4M1QzMzUgMzg1SDMzMVY0MzFIMzM4JyxcbiAgICAweDc3OiAnOTAgMzY4UTg0IDM3OCA3NiAzODBUNDAgMzg1SDE4VjQzMUgyNEw0MyA0MzBRNjIgNDMwIDg0IDQyOVQxMTYgNDI4UTIwNiA0MjggMjIxIDQzMUgyMjlWMzg1SDIxNVExNzcgMzgzIDE3NyAzNjhRMTc3IDM2NyAyMjEgMjM5TDI2NSAxMTNMMzM5IDMyOEwzMzMgMzQ1UTMyMyAzNzQgMzE2IDM3OVEzMDggMzg0IDI3OCAzODVIMjU4VjQzMUgyNjRRMjcwIDQyOCAzNDggNDI4UTQzOSA0MjggNDU0IDQzMUg0NjFWMzg1SDQ1MlE0MDQgMzg1IDQwNCAzNjlRNDA0IDM2NiA0MTggMzI0VDQ0OSAyMzRUNDgxIDE0M0w0OTYgMTAwTDUzNyAyMTlRNTc5IDM0MSA1NzkgMzQ3UTU3OSAzNjMgNTY0IDM3M1Q1MzAgMzg1SDUyMlY0MzFINTI5UTU0MSA0MjggNjI0IDQyOFE2OTIgNDI4IDY5OCA0MzFINzAzVjM4NUg2OTdRNjk2IDM4NSA2OTEgMzg1VDY4MiAzODRRNjM1IDM3NyA2MTkgMzM0TDU1OSAxNjFRNTQ2IDEyNCA1MjggNzFRNTA4IDEyIDUwMyAxVDQ4NyAtMTFINDc5UTQ2MCAtMTEgNDU2IC00UTQ1NSAtMyA0MDcgMTMzTDM2MSAyNjdRMzU5IDI2MyAyNjYgLTRRMjYxIC0xMSAyNDMgLTExSDIzOFEyMjUgLTExIDIyMCAtM0w5MCAzNjgnLFxuICAgIDB4Nzg6ICcyMDEgMFExODkgMyAxMDIgM1EyNiAzIDE3IDBIMTFWNDZIMjVRNDggNDcgNjcgNTJUOTYgNjFUMTIxIDc4VDEzOSA5NlQxNjAgMTIyVDE4MCAxNTBMMjI2IDIxMEwxNjggMjg4UTE1OSAzMDEgMTQ5IDMxNVQxMzMgMzM2VDEyMiAzNTFUMTEzIDM2M1QxMDcgMzcwVDEwMCAzNzZUOTQgMzc5VDg4IDM4MVQ4MCAzODNRNzQgMzgzIDQ0IDM4NUgxNlY0MzFIMjNRNTkgNDI5IDEyNiA0MjlRMjE5IDQyOSAyMjkgNDMxSDIzN1YzODVRMjAxIDM4MSAyMDEgMzY5UTIwMSAzNjcgMjExIDM1M1QyMzkgMzE1VDI2OCAyNzRMMjcyIDI3MEwyOTcgMzA0UTMyOSAzNDUgMzI5IDM1OFEzMjkgMzY0IDMyNyAzNjlUMzIyIDM3NlQzMTcgMzgwVDMxMCAzODRMMzA3IDM4NUgzMDJWNDMxSDMwOVEzMjQgNDI4IDQwOCA0MjhRNDg3IDQyOCA0OTMgNDMxSDQ5OVYzODVINDkyUTQ0MyAzODUgNDExIDM2OFEzOTQgMzYwIDM3NyAzNDFUMzEyIDI1N0wyOTYgMjM2TDM1OCAxNTFRNDI0IDYxIDQyOSA1N1Q0NDYgNTBRNDY0IDQ2IDQ5OSA0Nkg1MTZWMEg1MTBINTAyUTQ5NCAxIDQ4MiAxVDQ1NyAyVDQzMiAyVDQxNCAzUTQwMyAzIDM3NyAzVDMyNyAxTDMwNCAwSDI5NVY0NkgyOThRMzA5IDQ2IDMyMCA1MVQzMzEgNjNRMzMxIDY1IDI5MSAxMjBMMjUwIDE3NVEyNDkgMTc0IDIxOSAxMzNUMTg1IDg4UTE4MSA4MyAxODEgNzRRMTgxIDYzIDE4OCA1NVQyMDYgNDZRMjA4IDQ2IDIwOCAyM1YwSDIwMScsXG4gICAgMHg3OTogJzY5IC02NlE5MSAtNjYgMTA0IC04MFQxMTggLTExNlExMTggLTEzNCAxMDkgLTE0NVQ5MSAtMTYwUTg0IC0xNjMgOTcgLTE2NlExMDQgLTE2OCAxMTEgLTE2OFExMzEgLTE2OCAxNDggLTE1OVQxNzUgLTEzOFQxOTcgLTEwNlQyMTMgLTc1VDIyNSAtNDNMMjQyIDBMMTcwIDE4M1ExNTAgMjMzIDEyNSAyOTdRMTAxIDM1OCA5NiAzNjhUODAgMzgxUTc5IDM4MiA3OCAzODJRNjYgMzg1IDM0IDM4NUgxOVY0MzFIMjZMNDYgNDMwUTY1IDQzMCA4OCA0MjlUMTIyIDQyOFExMjkgNDI4IDE0MiA0MjhUMTcxIDQyOVQyMDAgNDMwVDIyNCA0MzBMMjMzIDQzMUgyNDFWMzg1SDIzMlExODMgMzg1IDE4NSAzNjZMMjg2IDExMlEyODYgMTEzIDMzMiAyMjdMMzc2IDM0MVYzNTBRMzc2IDM2NSAzNjYgMzczVDM0OCAzODNUMzM0IDM4NUgzMzFWNDMxSDMzN0gzNDRRMzUxIDQzMSAzNjEgNDMxVDM4MiA0MzBUNDA1IDQyOVQ0MjIgNDI5UTQ3NyA0MjkgNTAzIDQzMUg1MDhWMzg1SDQ5N1E0NDEgMzgwIDQyMiAzNDVRNDIwIDM0MyAzNzggMjM1VDI4OSA5VDIyNyAtMTMxUTE4MCAtMjA0IDExMyAtMjA0UTY5IC0yMDQgNDQgLTE3N1QxOSAtMTE2UTE5IC04OSAzNSAtNzhUNjkgLTY2JyxcbiAgICAweDdBOiAnNDIgMjYzUTQ0IDI3MCA0OCAzNDVUNTMgNDIzVjQzMUgzOTNRMzk5IDQyNSAzOTkgNDE1UTM5OSA0MDMgMzk4IDQwMkwzODEgMzc4UTM2NCAzNTUgMzMxIDMwOVQyNjUgMjIwTDEzNCA0MUwxODIgNDBIMjA2UTI1NCA0MCAyODMgNDZUMzMxIDc3UTM1MiAxMDUgMzU5IDE4NUwzNjEgMjAxUTM2MSAyMDIgMzgxIDIwMkg0MDFWMTk2UTQwMSAxOTUgMzkzIDEwM1QzODQgNlYwSDIwOUwzNCAxTDMxIDNRMjggOCAyOCAxN1EyOCAzMCAyOSAzMVQxNjAgMjEwVDI5NCAzOTRIMjM2UTE2OSAzOTMgMTUyIDM4OFExMjcgMzgyIDExMyAzNjdRODkgMzQ0IDgyIDI2NFYyNTVINDJWMjYzJyxcbiAgICAweDdCOiAnNDM0IC0yMzFRNDM0IC0yNDQgNDI4IC0yNTBINDEwUTI4MSAtMjUwIDIzMCAtMTg0UTIyNSAtMTc3IDIyMiAtMTcyVDIxNyAtMTYxVDIxMyAtMTQ4VDIxMSAtMTMzVDIxMCAtMTExVDIwOSAtODRUMjA5IC00N1QyMDkgMFEyMDkgMjEgMjA5IDUzUTIwOCAxNDIgMjA0IDE1M1EyMDMgMTU0IDIwMyAxNTVRMTg5IDE5MSAxNTMgMjExVDgyIDIzMVE3MSAyMzEgNjggMjM0VDY1IDI1MFQ2OCAyNjZUODIgMjY5UTExNiAyNjkgMTUyIDI4OVQyMDMgMzQ1UTIwOCAzNTYgMjA4IDM3N1QyMDkgNTI5VjU3OVEyMDkgNjM0IDIxNSA2NTZUMjQ0IDY5OFEyNzAgNzI0IDMyNCA3NDBRMzYxIDc0OCAzNzcgNzQ5UTM3OSA3NDkgMzkwIDc0OVQ0MDggNzUwSDQyOFE0MzQgNzQ0IDQzNCA3MzJRNDM0IDcxOSA0MzEgNzE2UTQyOSA3MTMgNDE1IDcxM1EzNjIgNzEwIDMzMiA2ODlUMjk2IDY0N1EyOTEgNjM0IDI5MSA0OTlWNDE3UTI5MSAzNzAgMjg4IDM1M1QyNzEgMzE0UTI0MCAyNzEgMTg0IDI1NUwxNzAgMjUwTDE4NCAyNDVRMjAyIDIzOSAyMjAgMjMwVDI2MiAxOTZUMjkwIDEzN1EyOTEgMTMxIDI5MSAxUTI5MSAtMTM0IDI5NiAtMTQ3UTMwNiAtMTc0IDMzOSAtMTkyVDQxNSAtMjEzUTQyOSAtMjEzIDQzMSAtMjE2UTQzNCAtMjE5IDQzNCAtMjMxJyxcbiAgICAweDdDOiAnMTM5IC0yNDlIMTM3UTEyNSAtMjQ5IDExOSAtMjM1VjI1MUwxMjAgNzM3UTEzMCA3NTAgMTM5IDc1MFExNTIgNzUwIDE1OSA3MzVWLTIzNVExNTEgLTI0OSAxNDEgLTI0OUgxMzknLFxuICAgIDB4N0Q6ICc2NSA3MzFRNjUgNzQ1IDY4IDc0N1Q4OCA3NTBRMTcxIDc1MCAyMTYgNzI1VDI3OSA2NzBRMjg4IDY0OSAyODkgNjM1VDI5MSA1MDFRMjkyIDM2MiAyOTMgMzU3UTMwNiAzMTIgMzQ1IDI5MVQ0MTcgMjY5UTQyOCAyNjkgNDMxIDI2NlQ0MzQgMjUwVDQzMSAyMzRUNDE3IDIzMVEzODAgMjMxIDM0NSAyMTBUMjk4IDE1N1EyOTMgMTQzIDI5MiAxMjFUMjkxIC0yOFYtNzlRMjkxIC0xMzQgMjg1IC0xNTZUMjU2IC0xOThRMjAyIC0yNTAgODkgLTI1MFE3MSAtMjUwIDY4IC0yNDdUNjUgLTIzMFE2NSAtMjI0IDY1IC0yMjNUNjYgLTIxOFQ2OSAtMjE0VDc3IC0yMTNROTEgLTIxMyAxMDggLTIxMFQxNDYgLTIwMFQxODMgLTE3N1QyMDcgLTEzOVEyMDggLTEzNCAyMDkgM0wyMTAgMTM5UTIyMyAxOTYgMjgwIDIzMFEzMTUgMjQ3IDMzMCAyNTBRMzA1IDI1NyAyODAgMjcwUTIyNSAzMDQgMjEyIDM1MkwyMTAgMzYyTDIwOSA0OThRMjA4IDYzNSAyMDcgNjQwUTE5NSA2ODAgMTU0IDY5NlQ3NyA3MTNRNjggNzEzIDY3IDcxNlQ2NSA3MzEnLFxuICAgIDB4N0U6ICcxNzkgMjUxUTE2NCAyNTEgMTUxIDI0NVQxMzEgMjM0VDExMSAyMTVMOTcgMjI3TDgzIDIzOFE4MyAyMzkgOTUgMjUzVDEyMSAyODNUMTQyIDMwNFExNjUgMzE4IDE4NyAzMThUMjUzIDMwMFQzMjAgMjgyUTMzNSAyODIgMzQ4IDI4OFQzNjggMjk5VDM4OCAzMThMNDAyIDMwNkw0MTYgMjk1UTM3NSAyMzYgMzQ0IDIyMlEzMzAgMjE1IDMxMyAyMTVRMjkyIDIxNSAyNDggMjMzVDE3OSAyNTEnLFxuICAgIDB4QTA6ICcnLFxuICAgIDB4QTM6ICc2OTkgNTc4UTY5OSA0NzMgNjM1IDQ3M1E1OTcgNDczIDU5NSA1MDhRNTk1IDU1OSA2NTQgNTY5VjU3NlE2NTQgNjE5IDYzNyA2NDhUNTgxIDY3N1E1NDUgNjc3IDUxMyA2NDdUNDYzIDU2MVE0NjAgNTU0IDQzNyA0NjRUNDE0IDM3MVE0MTQgMzcwIDQ1OCAzNzBINTAyUTUwOCAzNjQgNTA4IDM2MlE1MDUgMzM0IDQ5NSAzMjRINDAyTDM4MiAyNDFRMzc3IDIyNCAzNzMgMjA2VDM2NiAxODBUMzYxIDE2M1QzNTggMTUxVDM1NCAxNDJUMzUwIDEzM1QzNDQgMTIwUTM0MCAxMTIgMzM4IDEwN1QzMzYgMTAxTDM1NCA5MFEzOTggNjMgNDIyIDU0VDQ3NiA0NFE1MTUgNDQgNTM5IDczVDU3NCAxMzNRNTc4IDE0NCA1ODAgMTQ2VDU5OCAxNDhRNjIyIDE0OCA2MjIgMTM5UTYyMiAxMzggNjIwIDEzMFE2MDIgNzQgNTU1IDMyVDQ0NyAtMTFRMzk1IC0xMSAzMTcgMzhMMjk0IDUxUTI3MSAyOCAyMzMgOVQxNTUgLTEwUTExNyAtMTAgMTAzIDVUODggMzlRODggNzMgMTI2IDEwNlQyMjQgMTM5UTIzNiAxMzkgMjQ3IDEzOFQyNjYgMTM0TDI3MyAxMzJRMjc1IDEzMiAzMDIgMjM5TDMyMyAzMjRIMjU5UTI1MyAzMzAgMjUzIDMzMlEyNTMgMzUwIDI2NSAzNzBIMzAwTDMzNCAzNzFMMzU1IDQ1M1EzNTYgNDU3IDM2MCA0NzdUMzY2IDUwMVQzNzIgNTIyVDM3OSA1NDVUMzg3IDU2NVQzOTcgNTg3VDQwOSA2MDZUNDI1IDYyN1E0NTMgNjY0IDQ5NyA2ODlUNTgzIDcxNFE2NDAgNzE0IDY2OSA2NzZUNjk5IDU3OFpNMjQ1IDc2UTIxMSA4NSAxOTUgODVRMTczIDg1IDE1OCA3MVQxNDIgNDJRMTQyIDI2IDE2MCAyNkgxNjNRMjExIDMwIDI0NSA3NicsXG4gICAgMHhBNTogJzUxNSAwUTQ5NCAzIDM3NCAzUTI1NiAzIDIzNSAwSDIyNFY0NkgyNTdRMzE2IDQ3IDMyNCA1OFEzMjcgNjIgMzI3IDEzN1YyMTNIMTMzUTEyMSAyMTMgMTEzIDIxM1Q5NyAyMTNUODYgMjEzVDc4IDIxM1Q3MyAyMTRUNzAgMjE1VDY5IDIxNlQ2OCAyMThUNjcgMjIwUTY0IDIyNSA2NiAyMzFUNzMgMjQwUTc2IDI0MiAyMDIgMjQySDMyN1YyNzNMMjQ3IDQwN0gxMTVRODEgNDA3IDc1IDQwOFQ2NyA0MTRRNjQgNDE5IDY2IDQyNVQ3MyA0MzRRNzYgNDM2IDE1MyA0MzZRMjI4IDQzNiAyMjggNDM3UTIyNyA0NDAgMTczIDUzMFQxMTUgNjIzUTEwMSA2MzcgMzEgNjM3SDExVjY4M0gyMFE2NiA2ODEgMTUzIDY4MVExNjkgNjgxIDIwMiA2ODFUMjYyIDY4MkwyODggNjgzSDI5OFY2MzdIMjgwUTIzMCA2MzYgMjMwIDYyMVEyMzAgNjE5IDI1MCA1ODRRMjU1IDU3NiAyNjQgNTYxVDI4NiA1MjZUMzA1IDQ5NEwzNDAgNDM3TDQwMyA0MzZINDY3TDUxMyA1MTRRNTY0IDU5NiA1NjQgNjA1UTU2NCA2MDggNTYwIDYxNlE1NTAgNjM0IDUxNyA2MzdINTA4VjY4M0g1MTZRNTMxIDY4MCA2MzMgNjgwUTcyMiA2ODAgNzMxIDY4M0g3MzhWNjM3SDcyM1E2NDQgNjMyIDYxNyA1OTVRNjE0IDU5MSA1NjggNTE1VDUyMSA0MzdUNTk3IDQzNlQ2NzYgNDM0UTY4MSA0MzIgNjgzIDQyNlQ2ODIgNDE0VDY3MSA0MDlUNTg5IDQwN0g1MDNMNDIyIDI3M1YyNDJINTQ3UTY3MyAyNDIgNjc2IDI0MFE2ODEgMjM4IDY4MyAyMzJUNjgyIDIyMFE2ODIgMjE5IDY4MiAyMThUNjgxIDIxN1Q2NzkgMjE2VDY3NyAyMTVUNjcyIDIxNFQ2NjQgMjEzVDY1MiAyMTNUNjM3IDIxM1Q2MTYgMjEzSDQyMlYxMzlWODdRNDIyIDY0IDQyNSA1OFQ0NDEgNDlRNDU2IDQ2IDUwMyA0Nkg1MjVWMEg1MTVaTTQ0OSA0MDZRNDQ5IDQwNyA0MDMgNDA3UTM1OCA0MDcgMzU4IDQwNkwzNzAgMzg3UTM4MSAzNjggMzkyIDM1MEw0MDQgMzMxUTQ0NyA0MDQgNDQ5IDQwNicsXG4gICAgMHhBODogJzk1IDYxMlE5NSA2MzMgMTEyIDY1MVQxNTMgNjY5VDE5MyA2NTJUMjEwIDYxMlEyMTAgNTg4IDE5NCA1NzFUMTUyIDU1NEwxMjcgNTYwUTk1IDU3NyA5NSA2MTJaTTI4OSA2MTFRMjg5IDYzNCAzMDQgNjQ5VDMzNSA2NjhRMzM2IDY2OCAzNDAgNjY4VDM0NiA2NjlRMzY5IDY2OSAzODYgNjUyVDQwNCA2MTJUMzg3IDU3MlQzNDYgNTU0UTMyMyA1NTQgMzA2IDU3MFQyODkgNjExJyxcbiAgICAweEFDOiAnNTYgMzIzVDU2IDMzNlQ3MCAzNTZINTk2UTYwMyAzNTMgNjExIDM0M1YxMDJRNTk4IDg5IDU5MSA4OVE1ODcgODkgNTg0IDkwVDU3OSA5NFQ1NzUgOThUNTcyIDEwMkw1NzEgMjA5VjMxNkg3MFE1NiAzMjMgNTYgMzM2JyxcbiAgICAweEFFOiAnOTE1IDI2NlE5MTUgMTQwIDg1MiAzOFQ2ODkgLTEyMFQ0NzQgLTE3NVEzMTIgLTE3NSAxODggLTcxVDM4IDE5MFEzMiAyMjAgMzIgMjY2VjI4N1EzMiAzNDUgNTcgNDE2VDEyOSA1NDVRMTkyIDYyNCAyODIgNjY2VDQ2NCA3MDlRNTEzIDcwOSA1MjIgNzA4UTU5OSA2OTggNjY1IDY2NlQ3NzYgNTkwVDg1MyA0OTNUOTAwIDM4N1Q5MTUgMjg3VjI2NlpNODc1IDI4NVE4NzUgMzM5IDg1MyAzOTlUNzg5IDUxN1Q2NzYgNjE2VDUxOSA2NjhRNTEwIDY2OSA0NjUgNjY5UTM4MCA2NjkgMjk5IDYzMFQxNTUgNTE0VDc3IDMzNlE3MiAzMTIgNzIgMjg1VjI2NlYyNTZRNzIgMTIzIDE2MyAxMVEyOTAgLTEzNSA0NzQgLTEzNVE2MTQgLTEzNSA3MjcgLTQ2UTg3NSA4MSA4NzUgMjY2VjI4NVpNMjc2IDQ1N1EyNzUgNDU4IDI3NCA0NjBUMjcyIDQ2M1QyNzAgNDY1VDI2NyA0NjdUMjY0IDQ2OVQyNTggNDcxVDI1MiA0NzJUMjQzIDQ3M1QyMzIgNDc0VDIxOCA0NzRIMjA0VjUxNEgzMzVRNDc3IDUxNCA0OTkgNTEwUTU2MCA1MDIgNjEwIDQ2N1Q2NjEgMzc1UTY2MSAzNjIgNjU4IDM1MFQ2NDggMzI3VDYzNSAzMDhUNjE4IDI5MlQ2MDEgMjgwVDU4MyAyNjlUNTY4IDI2MlQ1NTQgMjU2TDU0NyAyNTNRNTQ4IDI1MiA1NTYgMjQ3VDU3MCAyMzdUNTg2IDIyM1Q2MDIgMjAyVDYxNCAxNzRRNjE2IDE2OSA2MjYgMTIzVDYzOCA3MlE2NTIgMjMgNjgzIDIzUTcxNSAyMyA3MjAgNjhRNzIxIDc4IDcyNCA4MVQ3NDAgODRUNzU2IDgyVDc2MCA3MFE3NjAgNDcgNzQ3IDI1VDcxNSAtN1E3MDAgLTE0IDY3MyAtMTRRNjcyIC0xNCA2NjIgLTE0VDY0MyAtMTJUNjE5IC03VDU5MyAyVDU2OCAxNlQ1NDcgMzdUNTM0IDY3UTUzMSA4MCA1MzEgOTdRNTMxIDEwMyA1MzEgMTE2VDUzMiAxMzZRNTMyIDIxOCA0NzIgMjM2UTQ2NiAyMzggNDEzIDIzOUgzNjBWMTQ4TDM2MSA1OFEzNjYgNDcgMzc1IDQ0VDQxOCA0MEg0MzJWMEg0MjRRNDA5IDMgMzE4IDNUMjEyIDBIMjA0VjQwSDIxOFEyNDIgNDAgMjUzIDQyVDI2OCA0N1QyNzYgNThWNDU3Wk0zNzYgNDczUTM2NSA0NzEgMzYzIDQ2NFQzNjAgNDMwVjM2NlYyNzZINDE2UTQyMSAyNzYgNDM0IDI3NlQ0NTMgMjc2VDQ2OSAyNzdUNDg2IDI3OVQ1MDEgMjgyVDUxNyAyODdUNTI5IDI5NFQ1NDIgMzA1UTU2MSAzMjQgNTYxIDM3NVE1NjEgNDI0IDU0NSA0NDRUNDgyIDQ3MlE0NzggNDczIDQyNyA0NzRRNDE1IDQ3NCA0MDMgNDc0VDM4NCA0NzRMMzc2IDQ3MycsXG4gICAgMHhBRjogJzY5IDU0NFY1OTBINDMwVjU0NEg2OScsXG4gICAgMHhCMDogJzE0NyA2MjhRMTQ3IDY2OSAxNzkgNjkyVDI0NCA3MTVRMjk4IDcxNSAzMjUgNjg5VDM1MiA2MjlRMzUyIDU5MiAzMjMgNTY3VDI0OSA1NDJRMjAyIDU0MiAxNzUgNTY3VDE0NyA2MjhaTTMxMyA2MjhRMzEzIDY2MCAzMDAgNjY5VDI1OSA2NzhIMjUzUTI0OCA2NzggMjQyIDY3OFQyMzQgNjc5UTIxNyA2NzkgMjA3IDY3NFQxOTIgNjU5VDE4OCA2NDRUMTg3IDYyOVExODcgNjAwIDE5OCA1OTBRMjEwIDU3OSAyNTAgNTc5SDI2NVEyNzkgNTc5IDI4OCA1ODFUMzA1IDU5NVQzMTMgNjI4JyxcbiAgICAweEIxOiAnNTYgMzIwVDU2IDMzM1Q3MCAzNTNIMzY5VjUwMlEzNjkgNjUxIDM3MSA2NTVRMzc2IDY2NiAzODggNjY2UTQwMiA2NjYgNDA1IDY1NFQ0MDkgNTk2VjUwMFYzNTNINzA3UTcyMiAzNDUgNzIyIDMzM1E3MjIgMzIwIDcwNyAzMTNINDA5VjQwSDcwN1E3MjIgMzIgNzIyIDIwVDcwNyAwSDcwUTU2IDcgNTYgMjBUNzAgNDBIMzY5VjMxM0g3MFE1NiAzMjAgNTYgMzMzJyxcbiAgICAweEI0OiAnMzQ5IDY5OVEzNjcgNjk5IDM4MCA2ODZUMzkzIDY1NlEzOTMgNjUxIDM5MiA2NDdUMzg3IDYzN1QzODAgNjI3VDM2NyA2MTZUMzUxIDYwMlQzMzAgNTg1VDMwMyA1NjNMMjMyIDUwNUwyMTcgNTE5UTIwMyA1MzMgMjA0IDUzM1EyMDQgNTM0IDIyOSA1NjdUMjgyIDYzNlQzMTMgNjc4TDMxNiA2ODFRMzE4IDY4NCAzMjEgNjg2VDMyOCA2OTJUMzM3IDY5N1QzNDkgNjk5JyxcbiAgICAweEI3OiAnNzggMjUwUTc4IDI3NCA5NSAyOTJUMTM4IDMxMFExNjIgMzEwIDE4MCAyOTRUMTk5IDI1MVExOTkgMjI2IDE4MiAyMDhUMTM5IDE5MFQ5NiAyMDdUNzggMjUwJyxcbiAgICAweEQ3OiAnNjMwIDI5UTYzMCA5IDYwOSA5UTYwNCA5IDU4NyAyNVQ0OTMgMTE4TDM4OSAyMjJMMjg0IDExN1ExNzggMTMgMTc1IDExUTE3MSA5IDE2OCA5UTE2MCA5IDE1NCAxNVQxNDcgMjlRMTQ3IDM2IDE2MSA1MVQyNTUgMTQ2TDM1OSAyNTBMMjU1IDM1NFExNzQgNDM1IDE2MSA0NDlUMTQ3IDQ3MVExNDcgNDgwIDE1MyA0ODVUMTY4IDQ5MFExNzMgNDkwIDE3NSA0ODlRMTc4IDQ4NyAyODQgMzgzTDM4OSAyNzhMNDkzIDM4MlE1NzAgNDU5IDU4NyA0NzVUNjA5IDQ5MVE2MzAgNDkxIDYzMCA0NzFRNjMwIDQ2NCA2MjAgNDUzVDUyMiAzNTVMNDE4IDI1MEw1MjIgMTQ1UTYwNiA2MSA2MTggNDhUNjMwIDI5JyxcbiAgICAweEYwOiAnNzUgNTY2VjYwNFE3NSA2MjQgNzkgNjI5VDEwMiA2MzVRMTI0IDYzNSAxMjcgNjI5VDEzMSA1ODhMMTMzIDU1MEwxOTEgNTg4TDI0OSA2MjhMMjMxIDYzNVExNzYgNjU0IDEyNCA2NTdRMTE2IDY1NyAxMDYgNjU4TDk1IDY1OVE5NCA2NjEgOTQgNjg3VDk1IDcxNVE5OSA3MTcgMTEzIDcxN1ExOTUgNzE3IDI4MiA2NzlMMzA5IDY2OEwzMzEgNjgxUTM1MSA2OTcgMzkxIDcyMVE0MjggNzQ4IDQzNSA3NDhRNDM3IDc0OSA0NDYgNzQ5UTQ3MCA3NDkgNDczIDc0NlE0NzggNzQ0IDQ3OCA2ODFWNjIxUTQ2NiA2MTUgNDU2IDYxNVE0MzUgNjE1IDQyNCA2MjRMNDIyIDY2MVY2OTlMMzgyIDY3NUwzNDQgNjQ4UTM1MyA2MzkgMzY2IDYzMFE0ODAgNTM4IDUwNCA0MTNRNTA5IDM5MyA1MDkgMzMzVjMxM1E1MDkgMjg0IDUwNyAyNTdUNDk1IDE4NFQ0NjYgMTAyVDQxMyAzM1QzMjkgLTE2UTMxMSAtMjEgMjc1IC0yMVEyMjYgLTIxIDE5NSAtMTBRMTUwIDcgMTEwIDUwVDUzIDE0MVE0MiAxNzkgNDIgMjI3UTQyIDMzMiAxMDEgNDAzVDI0NSA0NzRRMjgyIDQ3NCAzMTQgNDYxVDM1OSA0MzZUMzgwIDQxNVEzODYgNDA1IDM4OSA0MDhRMzg5IDQyNiAzNzggNDc1UTM2OCA1MDUgMzU1IDUyOVQzMjkgNTY3VDMwNiA1OTBUMjg4IDYwM0wyODIgNjA2TDEyMCA1MDFRMTE2IDUwMCAxMDIgNTAwUTg0IDUwMCA3NSA1MDZWNTY2Wk0zODggMjI1UTM4OCAzNzYgMzA5IDQxMFEyOTkgNDE2IDI3MyA0MTlRMjE2IDQxOSAxOTEgMzkwUTE3NCAzNzEgMTY4IDM0MlQxNjIgMjE4UTE2MiAxMTIgMTg0IDc5UTIxMiAzOSAyNzMgMzlRMzEyIDM5IDM0MiA2MlQzODAgMTIxUTM4OCAxNTkgMzg4IDIyNScsXG4gICAgMHhGNzogJzMxOCA0NjZRMzE4IDUwMCAzMzkgNTE4VDM4NiA1MzdRNDE4IDUzNyA0MzggNTE3VDQ1OCA0NjZRNDU4IDQzOCA0NDAgNDE3VDM4OCAzOTZRMzU1IDM5NiAzMzcgNDE3VDMxOCA0NjZaTTU2IDIzN1Q1NiAyNTBUNzAgMjcwSDcwNlE3MjEgMjYyIDcyMSAyNTBUNzA2IDIzMEg3MFE1NiAyMzcgNTYgMjUwWk0zMTggMzRRMzE4IDY4IDMzOSA4NlQzODYgMTA1UTQxOCAxMDUgNDM4IDg1VDQ1OCAzNFE0NTggNiA0NDAgLTE1VDM4OCAtMzZRMzU1IC0zNiAzMzcgLTE1VDMxOCAzNCcsXG4gICAgMHgxMzE6ICcyNDcgMFEyMzIgMyAxNDMgM1ExMzIgMyAxMDYgM1Q1NiAxTDM0IDBIMjZWNDZINDJRNzAgNDYgOTEgNDlRMTAwIDUzIDEwMiA2MFQxMDQgMTAyVjIwNVYyOTNRMTA0IDM0NSAxMDIgMzU5VDg4IDM3OFE3NCAzODUgNDEgMzg1SDMwVjQwOFEzMCA0MzEgMzIgNDMxTDQyIDQzMlE1MiA0MzMgNzAgNDM0VDEwNiA0MzZRMTIzIDQzNyAxNDIgNDM4VDE3MSA0NDFUMTgyIDQ0MkgxODVWNjJRMTkwIDUyIDE5NyA1MFQyMzIgNDZIMjU1VjBIMjQ3JyxcbiAgICAweDIzNzogJzI4IC0xNjNRNTggLTE2OCA2NCAtMTY4UTEyNCAtMTY4IDEzNSAtNzdRMTM3IC02NSAxMzcgMTQxVDEzNiAzNTNRMTMyIDM3MSAxMjAgMzc3VDcyIDM4NUg1MlY0MDhRNTIgNDMxIDU0IDQzMUw1OCA0MzJRNjIgNDMyIDcwIDQzMlQ4NyA0MzNUMTA4IDQzNFQxMzMgNDM2UTE1MSA0MzcgMTcxIDQzOFQyMDIgNDQxVDIxNCA0NDJIMjE4VjE4NFEyMTcgLTM2IDIxNyAtNTlUMjExIC05OFExOTUgLTE0NSAxNTMgLTE3NVQ1OCAtMjA1UTkgLTIwNSAtMjMgLTE3OVQtNTUgLTExN1EtNTUgLTk0IC00MCAtNzlULTIgLTY0VDM2IC03OVQ1MiAtMTE4UTUyIC0xNDMgMjggLTE2MycsXG4gICAgMHgyQjk6ICc3OSA0M1E3MyA0MyA1MiA0OVQzMCA2MVEzMCA2OCA4NSAyOTNUMTQ2IDUyOFExNjEgNTYwIDE5OCA1NjBRMjE4IDU2MCAyNDAgNTQ1VDI2MiA1MDFRMjYyIDQ5NiAyNjAgNDg2UTI1OSA0NzkgMTczIDI2M1Q4NCA0NVQ3OSA0MycsXG4gICAgMHgyQzY6ICcxMTIgNTYwTDI0OSA2OTRMMjU3IDY4NlEzODcgNTYyIDM4NyA1NjBMMzYxIDUzMVEzNTkgNTMyIDMwMyA1ODFMMjUwIDYyN0wxOTUgNTgwUTE4MiA1NjkgMTY5IDU1N1QxNDggNTM4TDE0MCA1MzJRMTM4IDUzMCAxMjUgNTQ2TDExMiA1NjAnLFxuICAgIDB4MkM3OiAnMTE0IDYxMUwxMjcgNjMwTDEzNiA2NDRRMTM4IDY0NCAxOTMgNjEyUTI0OCA1ODEgMjUwIDU4MUwzMDYgNjEyUTM2MSA2NDQgMzYzIDY0NEwzODUgNjExTDMxOCA1NjJMMjQ5IDUxM0wxMTQgNjExJyxcbiAgICAweDJDOTogJzY5IDU0NFY1OTBINDMwVjU0NEg2OScsXG4gICAgMHgyQ0E6ICczNDkgNjk5UTM2NyA2OTkgMzgwIDY4NlQzOTMgNjU2UTM5MyA2NTEgMzkyIDY0N1QzODcgNjM3VDM4MCA2MjdUMzY3IDYxNlQzNTEgNjAyVDMzMCA1ODVUMzAzIDU2M0wyMzIgNTA1TDIxNyA1MTlRMjAzIDUzMyAyMDQgNTMzUTIwNCA1MzQgMjI5IDU2N1QyODIgNjM2VDMxMyA2NzhMMzE2IDY4MVEzMTggNjg0IDMyMSA2ODZUMzI4IDY5MlQzMzcgNjk3VDM0OSA2OTknLFxuICAgIDB4MkNCOiAnMTA2IDY1NVExMDYgNjcxIDExOSA2ODVUMTUwIDY5OVExNjYgNjk5IDE3NyA2ODhRMTkwIDY3MSAyMjIgNjI5VDI3NSA1NjFUMjk1IDUzM1QyODIgNTE5TDI2NyA1MDVMMTk2IDU2M1ExMTkgNjI2IDExMyA2MzRRMTA2IDY0MyAxMDYgNjU1JyxcbiAgICAweDJEODogJzI1MCA1MTVRMTc5IDUxNSAxMzggNTY1VDkyIDY4M1Y2OTRIMTI5VjY4OVExMjkgNjg4IDEyOSA2ODNUMTMwIDY3NVExMzcgNjMxIDE2OSA1OTlUMjQ4IDU2N1EzMDQgNTY3IDMzNyA2MDhUMzcwIDY4OVY2OTRINDA3VjY4M1E0MDMgNjE3IDM2MSA1NjZUMjUwIDUxNScsXG4gICAgMHgyRDk6ICcxOTAgNjA5UTE5MCA2MzcgMjA4IDY1M1QyNTIgNjY5UTI3NSA2NjcgMjkyIDY1MlQzMDkgNjA5UTMwOSA1NzkgMjkyIDU2NFQyNTAgNTQ5UTIyNSA1NDkgMjA4IDU2NFQxOTAgNjA5JyxcbiAgICAweDJEQTogJzE0NyA2MjhRMTQ3IDY2OSAxNzkgNjkyVDI0NCA3MTVRMjk4IDcxNSAzMjUgNjg5VDM1MiA2MjlRMzUyIDU5MiAzMjMgNTY3VDI0OSA1NDJRMjAyIDU0MiAxNzUgNTY3VDE0NyA2MjhaTTMxMyA2MjhRMzEzIDY2MCAzMDAgNjY5VDI1OSA2NzhIMjUzUTI0OCA2NzggMjQyIDY3OFQyMzQgNjc5UTIxNyA2NzkgMjA3IDY3NFQxOTIgNjU5VDE4OCA2NDRUMTg3IDYyOVExODcgNjAwIDE5OCA1OTBRMjEwIDU3OSAyNTAgNTc5SDI2NVEyNzkgNTc5IDI4OCA1ODFUMzA1IDU5NVQzMTMgNjI4JyxcbiAgICAweDJEQzogJzE3OSA2MDFRMTY0IDYwMSAxNTEgNTk1VDEzMSA1ODRUMTExIDU2NUw5NyA1NzdMODMgNTg4UTgzIDU4OSA5NSA2MDNUMTIxIDYzM1QxNDIgNjU0UTE2NSA2NjggMTg3IDY2OFQyNTMgNjUwVDMyMCA2MzJRMzM1IDYzMiAzNDggNjM4VDM2OCA2NDlUMzg4IDY2OEw0MDIgNjU2TDQxNiA2NDVRMzc1IDU4NiAzNDQgNTcyUTMzMCA1NjUgMzEzIDU2NVEyOTIgNTY1IDI0OCA1ODNUMTc5IDYwMScsXG4gICAgMHgzMDA6ICctMzk0IDY1NVEtMzk0IDY3MSAtMzgxIDY4NVQtMzUwIDY5OVEtMzM0IDY5OSAtMzIzIDY4OFEtMzEwIDY3MSAtMjc4IDYyOVQtMjI1IDU2MVQtMjA1IDUzM1QtMjE4IDUxOUwtMjMzIDUwNUwtMzA0IDU2M1EtMzgxIDYyNiAtMzg3IDYzNFEtMzk0IDY0MyAtMzk0IDY1NScsXG4gICAgMHgzMDE6ICctMTUxIDY5OVEtMTMzIDY5OSAtMTIwIDY4NlQtMTA3IDY1NlEtMTA3IDY1MSAtMTA4IDY0N1QtMTEzIDYzN1QtMTIwIDYyN1QtMTMzIDYxNlQtMTQ5IDYwMlQtMTcwIDU4NVQtMTk3IDU2M0wtMjY4IDUwNUwtMjgzIDUxOVEtMjk3IDUzMyAtMjk2IDUzM1EtMjk2IDUzNCAtMjcxIDU2N1QtMjE4IDYzNlQtMTg3IDY3OEwtMTg0IDY4MVEtMTgyIDY4NCAtMTc5IDY4NlQtMTcyIDY5MlQtMTYzIDY5N1QtMTUxIDY5OScsXG4gICAgMHgzMDI6ICctMzg4IDU2MEwtMjUxIDY5NEwtMjQzIDY4NlEtMTEzIDU2MiAtMTEzIDU2MEwtMTM5IDUzMVEtMTQxIDUzMiAtMTk3IDU4MUwtMjUwIDYyN0wtMzA1IDU4MFEtMzE4IDU2OSAtMzMxIDU1N1QtMzUyIDUzOEwtMzYwIDUzMlEtMzYyIDUzMCAtMzc1IDU0NkwtMzg4IDU2MCcsXG4gICAgMHgzMDM6ICctMzIxIDYwMVEtMzM2IDYwMSAtMzQ5IDU5NVQtMzY5IDU4NFQtMzg5IDU2NUwtNDAzIDU3N0wtNDE3IDU4OFEtNDE3IDU4OSAtNDA1IDYwM1QtMzc5IDYzM1QtMzU4IDY1NFEtMzM1IDY2OCAtMzEzIDY2OFQtMjQ3IDY1MFQtMTgwIDYzMlEtMTY1IDYzMiAtMTUyIDYzOFQtMTMyIDY0OVQtMTEyIDY2OEwtOTggNjU2TC04NCA2NDVRLTEyNSA1ODYgLTE1NiA1NzJRLTE3MCA1NjUgLTE4NyA1NjVRLTIwOCA1NjUgLTI1MiA1ODNULTMyMSA2MDEnLFxuICAgIDB4MzA0OiAnLTQzMSA1NDRWNTkwSC03MFY1NDRILTQzMScsXG4gICAgMHgzMDY6ICctMjUwIDUxNVEtMzIxIDUxNSAtMzYyIDU2NVQtNDA4IDY4M1Y2OTRILTM3MVY2ODlRLTM3MSA2ODggLTM3MSA2ODNULTM3MCA2NzVRLTM2MyA2MzEgLTMzMSA1OTlULTI1MiA1NjdRLTE5NiA1NjcgLTE2MyA2MDhULTEzMCA2ODlWNjk0SC05M1Y2ODNRLTk3IDYxNyAtMTM5IDU2NlQtMjUwIDUxNScsXG4gICAgMHgzMDc6ICctMzEwIDYwOVEtMzEwIDYzNyAtMjkyIDY1M1QtMjQ4IDY2OVEtMjI1IDY2NyAtMjA4IDY1MlQtMTkxIDYwOVEtMTkxIDU3OSAtMjA4IDU2NFQtMjUwIDU0OVEtMjc1IDU0OSAtMjkyIDU2NFQtMzEwIDYwOScsXG4gICAgMHgzMDg6ICctNDA1IDYxMlEtNDA1IDYzMyAtMzg4IDY1MVQtMzQ3IDY2OVQtMzA3IDY1MlQtMjkwIDYxMlEtMjkwIDU4OCAtMzA2IDU3MVQtMzQ4IDU1NEwtMzczIDU2MFEtNDA1IDU3NyAtNDA1IDYxMlpNLTIxMSA2MTFRLTIxMSA2MzQgLTE5NiA2NDlULTE2NSA2NjhRLTE2NCA2NjggLTE2MCA2NjhULTE1NCA2NjlRLTEzMSA2NjkgLTExNCA2NTJULTk2IDYxMlQtMTEzIDU3MlQtMTU0IDU1NFEtMTc3IDU1NCAtMTk0IDU3MFQtMjExIDYxMScsXG4gICAgMHgzMEE6ICctMzUzIDYyOFEtMzUzIDY2OSAtMzIxIDY5MlQtMjU2IDcxNVEtMjAyIDcxNSAtMTc1IDY4OVQtMTQ4IDYyOVEtMTQ4IDU5MiAtMTc3IDU2N1QtMjUxIDU0MlEtMjk4IDU0MiAtMzI1IDU2N1QtMzUzIDYyOFpNLTE4NyA2MjhRLTE4NyA2NjAgLTIwMCA2NjlULTI0MSA2NzhILTI0N1EtMjUyIDY3OCAtMjU4IDY3OFQtMjY2IDY3OVEtMjgzIDY3OSAtMjkzIDY3NFQtMzA4IDY1OVQtMzEyIDY0NFQtMzEzIDYyOVEtMzEzIDYwMCAtMzAyIDU5MFEtMjkwIDU3OSAtMjUwIDU3OUgtMjM1US0yMjEgNTc5IC0yMTIgNTgxVC0xOTUgNTk1VC0xODcgNjI4JyxcbiAgICAweDMwQjogJy0yOTIgNzAxUS0yNzggNzAxIC0yNjIgNjkwVC0yNDYgNjU4US0yNDYgNjQ5IC0yNTAgNjQxUS0yNTIgNjM3IC0yOTcgNTc0VC0zNDQgNTEwTC0zNzggNTI4US0zNzggNTMwIC0zNTUgNTk4VC0zMjcgNjc2US0zMTYgNzAxIC0yOTIgNzAxWk0tMTI2IDcwMVEtMTEyIDcwMSAtOTYgNjkwVC04MCA2NThRLTgwIDY0OSAtODQgNjQxUS04NiA2MzcgLTEzMSA1NzRULTE3OCA1MTBMLTIxMiA1MjhRLTIxMiA1MzAgLTE4OSA1OThULTE2MSA2NzZRLTE1MCA3MDEgLTEyNiA3MDEnLFxuICAgIDB4MzBDOiAnLTM4NiA2MTFMLTM3MyA2MzBMLTM2NCA2NDRRLTM2MiA2NDQgLTMwNyA2MTJRLTI1MiA1ODEgLTI1MCA1ODFMLTE5NCA2MTJRLTEzOSA2NDQgLTEzNyA2NDRMLTExNSA2MTFMLTE4MiA1NjJMLTI1MSA1MTNMLTM4NiA2MTEnLFxuICAgIDB4MzM4OiAnLTYxMiAtMjE1VC02MTkgLTIxNVQtNjMxIC0yMTJULTYzNyAtMjA0VC02MzkgLTE5N1EtNjM5IC0xOTAgLTYzNCAtMTgzUS02MjEgLTE1NyAtNDAwIDI3NFQtMTc2IDcwN1EtMTczIDcxNiAtMTYwIDcxNlEtMTUzIDcxNiAtMTQ4IDcxMlQtMTQyIDcwM1QtMTQwIDY5NlEtMTQwIDY5MSAtMzcyIDI0MVQtNjA4IC0yMTJRLTYxMiAtMjE1IC02MTkgLTIxNScsXG4gICAgMHgzOTE6ICcyNTUgMFEyNDAgMyAxNDAgM1E0OCAzIDM5IDBIMzJWNDZINDdRMTE5IDQ5IDEzOSA4OFExNDAgOTEgMTkyIDI0NVQyOTUgNTUzVDM0OCA3MDhRMzUxIDcxNiAzNjYgNzE2SDM3NlEzOTYgNzE1IDQwMCA3MDlRNDAyIDcwNyA1MDggMzkwTDYxNyA2N1E2MjQgNTQgNjM2IDUxVDY4NyA0Nkg3MTdWMEg3MDhRNjk5IDMgNTgxIDNRNDU4IDMgNDM3IDBINDI3VjQ2SDQ0MFE1MTAgNDYgNTEwIDY0UTUxMCA2NiA0ODYgMTM4TDQ2MiAyMDlIMjI5TDIwOSAxNTBRMTg5IDkxIDE4OSA4NVExODkgNzIgMjA5IDU5VDI1OSA0NkgyNjRWMEgyNTVaTTQ0NyAyNTVMMzQ1IDU1N0wyNDQgMjU2UTI0NCAyNTUgMzQ1IDI1NUg0NDcnLFxuICAgIDB4MzkyOiAnMTMxIDYyMlExMjQgNjI5IDEyMCA2MzFUMTA0IDYzNFQ2MSA2MzdIMjhWNjgzSDIyOUgyNjdIMzQ2UTQyMyA2ODMgNDU5IDY3OFQ1MzEgNjUxUTU3NCA2MjcgNTk5IDU5MFQ2MjQgNTEyUTYyNCA0NjEgNTgzIDQxOVQ0NzYgMzYwTDQ2NiAzNTdRNTM5IDM0OCA1OTUgMzAyVDY1MSAxODdRNjUxIDExOSA2MDAgNjdUNDY5IDNRNDU2IDEgMjQyIDBIMjhWNDZINjFRMTAzIDQ3IDExMiA0OVQxMzEgNjFWNjIyWk01MTEgNTEzUTUxMSA1NjAgNDg1IDU5NFQ0MTYgNjM2UTQxNSA2MzYgNDAzIDYzNlQzNzEgNjM2VDMzMyA2MzdRMjY2IDYzNyAyNTEgNjM2VDIzMiA2MjhRMjI5IDYyNCAyMjkgNDk5VjM3NEgzMTJMMzk2IDM3NUw0MDYgMzc3UTQxMCAzNzggNDE3IDM4MFQ0NDIgMzkzVDQ3NCA0MTdUNDk5IDQ1NlQ1MTEgNTEzWk01MzcgMTg4UTUzNyAyMzkgNTA5IDI4MlQ0MzAgMzM2TDMyOSAzMzdIMjI5VjIwMFYxMTZRMjI5IDU3IDIzNCA1MlEyNDAgNDcgMzM0IDQ3SDM4M1E0MjUgNDcgNDQzIDUzUTQ4NiA2NyA1MTEgMTA0VDUzNyAxODgnLFxuICAgIDB4MzkzOiAnMTI4IDYxOVExMjEgNjI2IDExNyA2MjhUMTAxIDYzMVQ1OCA2MzRIMjVWNjgwSDU1NFY2NzZRNTU2IDY3MCA1NjggNTYwVDU4MiA0NDRWNDQwSDU0MlY0NDRRNTQyIDQ0NSA1MzggNDc4VDUyMyA1NDVUNDkyIDU5OFE0NTQgNjM0IDM0OSA2MzRIMzM0UTI2NCA2MzQgMjQ5IDYzM1QyMzMgNjIxUTIzMiA2MTggMjMyIDMzOUwyMzMgNjFRMjQwIDU0IDI0NSA1MlQyNzAgNDhUMzMzIDQ2SDM2MFYwSDM0OFEzMjQgMyAxODIgM1E1MSAzIDM2IDBIMjVWNDZINThRMTAwIDQ3IDEwOSA0OVQxMjggNjFWNjE5JyxcbiAgICAweDM5NDogJzUxIDBRNDYgNCA0NiA3UTQ2IDkgMjE1IDM1N1QzODggNzA5UTM5MSA3MTYgNDE2IDcxNlE0MzkgNzE2IDQ0NCA3MDlRNDQ3IDcwNSA2MTYgMzU3VDc4NiA3UTc4NiA0IDc4MSAwSDUxWk01MDcgMzQ0TDM4NCA1OTZMMTM3IDkyTDM4MyA5MUg2MzBRNjMwIDkzIDUwNyAzNDQnLFxuICAgIDB4Mzk1OiAnMTI4IDYxOVExMjEgNjI2IDExNyA2MjhUMTAxIDYzMVQ1OCA2MzRIMjVWNjgwSDU5N1Y2NzZRNTk5IDY3MCA2MTEgNTYwVDYyNSA0NDRWNDQwSDU4NVY0NDRRNTg0IDQ0NyA1ODIgNDY1UTU3OCA1MDAgNTcwIDUyNlQ1NTMgNTcxVDUyOCA2MDFUNDk4IDYxOVQ0NTcgNjI5VDQxMSA2MzNUMzUzIDYzNFEyNjYgNjM0IDI1MSA2MzNUMjMzIDYyMlEyMzMgNjIyIDIzMyA2MjFRMjMyIDYxOSAyMzIgNDk3VjM3NkgyODZRMzU5IDM3OCAzNzcgMzg1UTQxMyA0MDEgNDE2IDQ2OVE0MTYgNDcxIDQxNiA0NzNWNDkzSDQ1NlYyMTNINDE2VjIzM1E0MTUgMjY4IDQwOCAyODhUMzgzIDMxN1QzNDkgMzI4VDI5NyAzMzBRMjkwIDMzMCAyODYgMzMwSDIzMlYxOTZWMTE0UTIzMiA1NyAyMzcgNTJRMjQzIDQ3IDI4OSA0N0gzNDBIMzkxUTQyOCA0NyA0NTIgNTBUNTA1IDYyVDU1MiA5MlQ1ODQgMTQ2UTU5NCAxNzIgNTk5IDIwMFQ2MDcgMjQ3VDYxMiAyNzBWMjczSDY1MlYyNzBRNjUxIDI2NyA2MzIgMTM3VDYxMCAzVjBIMjVWNDZINThRMTAwIDQ3IDEwOSA0OVQxMjggNjFWNjE5JyxcbiAgICAweDM5NjogJzY5IDQ0M1E2OSA0NTIgNzQgNTU0VDgwIDY4M0g1NDlRNTU1IDY3NyA1NTUgNjY0UTU1NSA2NDkgNTU0IDY0OFE1NTIgNjQ1IDM2NiAzNDhUMTc5IDUwVDE5MiA0OVQyNjMgNDlIMjc1SDMwMlEzMzMgNDkgMzUzIDUwVDQwMSA1OVQ0NDcgNzhUNDgyIDExNVQ1MDcgMTczUTUxMyAyMDAgNTIwIDI3M1YyODJINTYwVjI3NFE1NjAgMjcyIDU1MiAxNDNUNTQzIDhWMEgzMDJMNjEgMUw1OCAzUTU1IDggNTUgMjFWMzVRNTkgNDMgMTUzIDE5M1QzNDAgNDg5VDQzMiA2MzdIMzQzUTI1OSA2MzcgMjE0IDYyNVQxNDEgNTczUTEwOSA1MjMgMTA5IDQ0NVExMDkgNDQzIDg5IDQ0M0g2OScsXG4gICAgMHgzOTc6ICcxMjggNjIyUTEyMSA2MjkgMTE3IDYzMVQxMDEgNjM0VDU4IDYzN0gyNVY2ODNIMzZRNTcgNjgwIDE4MCA2ODBRMzE1IDY4MCAzMjQgNjgzSDMzNVY2MzdIMzAyUTI2MiA2MzYgMjUxIDYzNFQyMzMgNjIyTDIzMiA1MDBWMzc4SDUxN1Y2MjJRNTEwIDYyOSA1MDYgNjMxVDQ5MCA2MzRUNDQ3IDYzN0g0MTRWNjgzSDQyNVE0NDYgNjgwIDU2OSA2ODBRNzA0IDY4MCA3MTMgNjgzSDcyNFY2MzdINjkxUTY1MSA2MzYgNjQwIDYzNFQ2MjIgNjIyVjYxUTYyOCA1MSA2MzkgNDlUNjkxIDQ2SDcyNFYwSDcxM1E2OTIgMyA1NjkgM1E0MzQgMyA0MjUgMEg0MTRWNDZINDQ3UTQ4OSA0NyA0OTggNDlUNTE3IDYxVjMzMkgyMzJWMTk3TDIzMyA2MVEyMzkgNTEgMjUwIDQ5VDMwMiA0NkgzMzVWMEgzMjRRMzAzIDMgMTgwIDNRNDUgMyAzNiAwSDI1VjQ2SDU4UTEwMCA0NyAxMDkgNDlUMTI4IDYxVjYyMicsXG4gICAgMHgzOTg6ICc1NiAzNDBRNTYgNDIzIDg2IDQ5NFQxNjQgNjEwVDI3MCA2ODBUMzg4IDcwNVE1MjEgNzA1IDYyMSA2MDFUNzIyIDM0MVE3MjIgMjYwIDY5MyAxOTFUNjE3IDc1VDUxMCA0VDM4OCAtMjJUMjY3IDNUMTYwIDc0VDg1IDE4OVQ1NiAzNDBaTTYxMCAzMzlRNjEwIDQyOCA1OTAgNDk1VDUzNSA1OThUNDYzIDY1MVQzODQgNjY4UTMzMiA2NjggMjg5IDYzOFQyMjEgNTY2UTE2OCA0ODUgMTY4IDMzOVExNjggMjc0IDE3NiAyMzVRMTg5IDE1OCAyMjggMTA1VDMyNCAyOFEzNTYgMTYgMzg4IDE2UTQxNSAxNiA0NDIgMjRUNTAxIDU0VDU1NSAxMTFUNTk0IDIwNVQ2MTAgMzM5Wk0yMjMgMjYzVjQyMkgyNjNWMzg4SDUxNFY0MjJINTU0VjI2M0g1MTRWMjk3SDI2M1YyNjNIMjIzJyxcbiAgICAweDM5OTogJzMyOCAwUTMwNyAzIDE4MCAzVDMyIDBIMjFWNDZINDNROTIgNDYgMTA2IDQ5VDEyNiA2MFExMjggNjMgMTI4IDM0MlExMjggNjIwIDEyNiA2MjNRMTIyIDYyOCAxMTggNjMwVDk2IDYzNVQ0MyA2MzdIMjFWNjgzSDMyUTUzIDY4MCAxODAgNjgwVDMyOCA2ODNIMzM5VjYzN0gzMTdRMjY4IDYzNyAyNTQgNjM0VDIzNCA2MjNRMjMyIDYyMCAyMzIgMzQyUTIzMiA2MyAyMzQgNjBRMjM4IDU1IDI0MiA1M1QyNjQgNDhUMzE3IDQ2SDMzOVYwSDMyOCcsXG4gICAgMHgzOUE6ICcxMjggNjIyUTEyMSA2MjkgMTE3IDYzMVQxMDEgNjM0VDU4IDYzN0gyNVY2ODNIMzZRNTcgNjgwIDE4MCA2ODBRMzE1IDY4MCAzMjQgNjgzSDMzNVY2MzdIMzEzUTIzNSA2MzcgMjMzIDYyMFEyMzIgNjE4IDIzMiA0NjJMMjMzIDMwN0wzNzkgNDQ5UTQyNSA0OTQgNDc5IDU0NlE1MTggNTg0IDUyNCA1OTFUNTMxIDYwN1Y2MDhRNTMxIDYzMCA1MDMgNjM2UTUwMSA2MzYgNDk4IDYzNlQ0OTMgNjM3SDQ4OVY2ODNINDk5UTUxNyA2ODAgNjMwIDY4MFE3MDQgNjgwIDcxNiA2ODNINzIyVjYzN0g3MDhRNjMzIDYzMyA1ODkgNTk3UTU4NCA1OTIgNDk1IDUwNlQ0MDYgNDE5VDUxNSAyNTRUNjMxIDgwUTY0NCA2MCA2NjIgNTRUNzE1IDQ2SDczNlYwSDcyOFE3MTkgMyA2MTUgM1E0OTMgMyA0NzIgMEg0NjFWNDZINDY5UTUxNSA0NiA1MTUgNzJRNTE1IDc4IDUxMiA4NEwzMzYgMzUxUTMzMiAzNDggMjc4IDI5NkwyMzIgMjUxVjE1NlEyMzIgNjIgMjM1IDU4UTI0MyA0NyAzMDIgNDZIMzM1VjBIMzI0UTMwMyAzIDE4MCAzUTQ1IDMgMzYgMEgyNVY0Nkg1OFExMDAgNDcgMTA5IDQ5VDEyOCA2MVY2MjInLFxuICAgIDB4MzlCOiAnMzIwIDcwOFEzMjYgNzE2IDM0MCA3MTZIMzQ4SDM1NVEzNjcgNzE2IDM3MiA3MDhRMzc0IDcwNiA0MjMgNTQ3VDUyMyAyMjZUNTc1IDYyUTU4MSA1MiA1OTEgNTBUNjM0IDQ2SDY2MVYwSDY1M1E2NDQgMyA1MzIgM1E0MTEgMyAzOTAgMEgzNzlWNDZIMzkyUTQ2NCA0NiA0NjQgNjVRNDYzIDcwIDM5MCAzMDVUMzE2IDUzOUwyNDYgMzE2UTE3NyA5NSAxNzcgODRRMTc3IDcyIDE5OCA1OVQyNDggNDZIMjUzVjBIMjQ1UTIzMCAzIDEzMCAzUTQ3IDMgMzggMEgzMlY0Nkg0NVExMTIgNTEgMTI3IDkxUTEyOCA5MiAyMjQgMzk5VDMyMCA3MDgnLFxuICAgIDB4MzlDOiAnMTMyIDYyMlExMjUgNjI5IDEyMSA2MzFUMTA1IDYzNFQ2MiA2MzdIMjlWNjgzSDEzNVEyMjEgNjgzIDIzMiA2ODJUMjQ5IDY3NVEyNTAgNjc0IDM1NCAzOThMNDU4IDEyNEw1NjIgMzk4UTY2NiA2NzQgNjY4IDY3NVE2NzEgNjgxIDY4MyA2ODJUNzgxIDY4M0g4ODdWNjM3SDg1NFE4MTQgNjM2IDgwMyA2MzRUNzg1IDYyMlY2MVE3OTEgNTEgODAyIDQ5VDg1NCA0Nkg4ODdWMEg4NzZRODU1IDMgNzM2IDNRNjA1IDMgNTk2IDBINTg1VjQ2SDYxOFE2NjAgNDcgNjY5IDQ5VDY4OCA2MVYzNDdRNjg4IDQyNCA2ODggNDYxVDY4OCA1NDZUNjg4IDYxM0w2ODcgNjMyUTQ1NCAxNCA0NTAgN1E0NDYgMSA0MzAgMVQ0MTAgN1E0MDkgOSAyOTIgMzE2TDE3NiA2MjRWNjA2UTE3NSA1ODggMTc1IDU0M1QxNzUgNDYzVDE3NSAzNTZMMTc2IDg2UTE4NyA1MCAyNjEgNDZIMjc4VjBIMjY5UTI1NCAzIDE1NCAzUTUyIDMgMzcgMEgyOVY0Nkg0NlE3OCA0OCA5OCA1NlQxMjIgNjlUMTMyIDg2VjYyMicsXG4gICAgMHgzOUQ6ICc0MiA0NlE3NCA0OCA5NCA1NlQxMTggNjlUMTI4IDg2VjYzNEgxMjRRMTE0IDYzNyA1MiA2MzdIMjVWNjgzSDIzMkwyMzUgNjgwUTIzNyA2NzkgMzIyIDU1NFQ0OTMgMzAzTDU3OCAxNzhWNTk4UTU3MiA2MDggNTY4IDYxM1Q1NDQgNjI3VDQ5MiA2MzdINDc1VjY4M0g0ODNRNDk4IDY4MCA2MDAgNjgwUTcwNiA2ODAgNzE1IDY4M0g3MjRWNjM3SDcwN1E2MzQgNjMzIDYyMiA1OThMNjIxIDMwMlY2TDYxNCAwSDYwMFE1ODUgMCA1ODIgM1Q0ODEgMTUwVDI4MiA0NDNUMTcxIDYwNVYzNDVMMTcyIDg2UTE4MyA1MCAyNTcgNDZIMjc0VjBIMjY1UTI1MCAzIDE1MCAzUTQ4IDMgMzMgMEgyNVY0Nkg0MicsXG4gICAgMHgzOUU6ICc0NyA1MDlMNTUgNjc2UTU1IDY3NyAzMzMgNjc3VDYxMSA2NzZMNjE5IDUwOVE2MTkgNTA4IDU5OSA1MDhUNTc5IDUxMFE1NzkgNTI5IDU3NSA1NTdUNTY0IDU4OVE1NTAgNTk0IDMzMyA1OTRUMTAyIDU4OVE5NSA1ODYgOTEgNTU4VDg3IDUxMFE4NyA1MDggNjcgNTA4VDQ3IDUwOVpNMTM5IDI2MFY0NDVIMTc5VjM5NEg0ODdWNDQ1SDUyN1YyNjBINDg3VjMxMUgxNzlWMjYwSDEzOVpNNTAgMEw0MiAxODBINjJRODIgMTgwIDgyIDE3OFE4MiAxMzMgODkgMTA1UTkyIDkzIDk1IDkwVDEwOCA4NlExMzcgODMgMzMzIDgzUTUzMCA4MyA1NTggODZRNTY4IDg3IDU3MSA5MFQ1NzcgMTA1UTU4NCAxMzMgNTg0IDE3OFE1ODQgMTgwIDYwNCAxODBINjI0TDYxNiAwSDUwJyxcbiAgICAweDM5RjogJzU2IDM0MFE1NiA0MjMgODYgNDk0VDE2NCA2MTBUMjcwIDY4MFQzODggNzA1UTUyMSA3MDUgNjIxIDYwMVQ3MjIgMzQxUTcyMiAyNjAgNjkzIDE5MVQ2MTcgNzVUNTEwIDRUMzg4IC0yMlQyNjcgM1QxNjAgNzRUODUgMTg5VDU2IDM0MFpNNDY3IDY0N1E0MjYgNjY1IDM4OCA2NjVRMzYwIDY2NSAzMzEgNjU0VDI2OSA2MjBUMjEzIDU0OVQxNzkgNDM5UTE3NCA0MTEgMTc0IDM1NFExNzQgMTQ0IDI3NyA2MVEzMjcgMjAgMzg1IDIwSDM4OUgzOTFRNDc0IDIwIDUzNyA5OVE2MDMgMTg4IDYwMyAzNTRRNjAzIDQxMSA1OTggNDM5UTU3NyA1OTIgNDY3IDY0NycsXG4gICAgMHgzQTA6ICcxMjggNjE5UTEyMSA2MjYgMTE3IDYyOFQxMDEgNjMxVDU4IDYzNEgyNVY2ODBINzI0VjYzNEg2OTFRNjUxIDYzMyA2NDAgNjMxVDYyMiA2MTlWNjFRNjI4IDUxIDYzOSA0OVQ2OTEgNDZINzI0VjBINzEzUTY5MiAzIDU2OSAzUTQzNCAzIDQyNSAwSDQxNFY0Nkg0NDdRNDg5IDQ3IDQ5OCA0OVQ1MTcgNjFWNjM0SDIzMlYzNDhMMjMzIDYxUTIzOSA1MSAyNTAgNDlUMzAyIDQ2SDMzNVYwSDMyNFEzMDMgMyAxODAgM1E0NSAzIDM2IDBIMjVWNDZINThRMTAwIDQ3IDEwOSA0OVQxMjggNjFWNjE5JyxcbiAgICAweDNBMTogJzEzMCA2MjJRMTIzIDYyOSAxMTkgNjMxVDEwMyA2MzRUNjAgNjM3SDI3VjY4M0gyMTRRMjM3IDY4MyAyNzYgNjgzVDMzMSA2ODRRNDE5IDY4NCA0NzEgNjcxVDU2NyA2MTZRNjI0IDU2MyA2MjQgNDg5UTYyNCA0MjEgNTczIDM3MlQ0NTEgMzA3UTQyOSAzMDIgMzI4IDMwMUgyMzRWMTgxUTIzNCA2MiAyMzcgNThRMjQ1IDQ3IDMwNCA0NkgzMzdWMEgzMjZRMzA1IDMgMTgyIDNRNDcgMyAzOCAwSDI3VjQ2SDYwUTEwMiA0NyAxMTEgNDlUMTMwIDYxVjYyMlpNNTA3IDQ4OFE1MDcgNTE0IDUwNiA1MjhUNTAwIDU2NFQ0ODMgNTk3VDQ1MCA2MjBUMzk3IDYzNVEzODUgNjM3IDMwNyA2MzdIMjg2UTIzNyA2MzcgMjM0IDYyOFEyMzEgNjI0IDIzMSA0ODNWMzQySDMwMkgzMzlRMzkwIDM0MiA0MjMgMzQ5VDQ4MSAzODJRNTA3IDQxMSA1MDcgNDg4JyxcbiAgICAweDNBMzogJzY2NiAyNDdRNjY0IDI0NCA2NTIgMTI2VDYzOCA0VjBIMzUxUTEzMSAwIDk1IDBUNTcgNVY2UTU0IDEyIDU3IDE3TDczIDM2UTg5IDU0IDEyMSA5MFQxODIgMTU5TDMwNSAyOTlMNTYgNjQ0TDU1IDY1OFE1NSA2NzcgNjAgNjgxUTYzIDY4MyAzNTEgNjgzSDYzOFY2NzlRNjQwIDY3NCA2NTIgNTY0VDY2NiA0NDdWNDQzSDYyNlY0NDdRNjE4IDUwNSA2MDQgNTQzVDU1OSA2MDVRNTI5IDYyNiA0NzggNjMxVDMzMyA2MzdIMjk0SDE4OUwyOTMgNDk0UTMxNCA0NjUgMzQ1IDQyMlE0MDAgMzQ2IDQwMCAzNDBRNDAwIDMzOCAzOTkgMzM3TDE1NCA1N1E0MDcgNTcgNDI4IDU4UTQ3NiA2MCA1MDggNjhUNTUxIDgzVDU3NSAxMDNRNTk1IDEyNSA2MDggMTYyVDYyNCAyMjVMNjI2IDI1MUg2NjZWMjQ3JyxcbiAgICAweDNBNDogJzM2IDQ0M1EzNyA0NDggNDYgNTU4VDU1IDY3MVY2NzdINjY2VjY3MVE2NjcgNjY2IDY3NiA1NTZUNjg1IDQ0M1Y0MzdINjQ1VjQ0M1E2NDUgNDQ1IDY0MiA0NzhUNjMxIDU0NFQ2MTAgNTkzUTU5MyA2MTQgNTU1IDYyNVE1MzQgNjMwIDQ3OCA2MzBINDUxSDQ0M1E0MTcgNjMwIDQxNCA2MThRNDEzIDYxNiA0MTMgMzM5VjYzUTQyMCA1MyA0MzkgNTBUNTI4IDQ2SDU1OFYwSDU0NUwzNjEgM1ExODYgMSAxNzcgMEgxNjRWNDZIMTk0UTI2NCA0NiAyODMgNDlUMzA5IDYzVjMzOVY1NTBRMzA5IDYyMCAzMDQgNjI1VDI3MSA2MzBIMjQ0SDIyNFExNTQgNjMwIDExOSA2MDFRMTAxIDU4NSA5MyA1NTRUODEgNDg2VDc2IDQ0M1Y0MzdIMzZWNDQzJyxcbiAgICAweDNBNTogJzU1IDU1MVE1NSA2MDQgOTEgNjU0VDE5NCA3MDVRMjQwIDcwNSAyNzcgNjgxVDMzNCA2MjRUMzY3IDU1NlQzODUgNDk4TDM4OSA0NzRMMzkyIDQ4OFEzOTQgNTAxIDQwMCA1MjFUNDE0IDU2NlQ0MzggNjE1VDQ3MyA2NTlUNTIxIDY5MlQ1ODQgNzA1UTYyMCA3MDUgNjQ4IDY4OVQ2OTEgNjQ3VDcxNCA1OTdUNzIyIDU1MVE3MjIgNTQwIDcxOSA1MzhUNjk5IDUzNlE2ODAgNTM2IDY3NyA1NDFRNjc3IDU0MiA2NzcgNTQ0VDY3NiA1NDhRNjc2IDU3NiA2NTAgNTk2VDU4OCA2MTZINTgyUTUzOCA2MTYgNTA1IDU4MlE0NjYgNTQzIDQ1NCA0NzdUNDQxIDMxOFE0NDEgMzAxIDQ0MSAyNjlUNDQyIDIyMlY2MVE0NDggNTUgNDUyIDUzVDQ3OCA0OFQ1NDIgNDZINTY5VjBINTU3UTUzMyAzIDM4OSAzVDIyMSAwSDIwOVY0NkgyMzZRMjU2IDQ2IDI3MCA0NlQyOTUgNDdUMzExIDQ4VDMyMiA1MVQzMjggNTRUMzMyIDU3VDMzNyA2MVYyMDlRMzM3IDM4MyAzMzMgNDE1UTMxMyA2MTYgMTg5IDYxNlExNTQgNjE2IDEyOCA1OTdUMTAxIDU0OFExMDEgNTQwIDk3IDUzOFQ3OCA1MzZRNjMgNTM2IDU5IDUzOFQ1NSA1NTEnLFxuICAgIDB4M0E2OiAnMzEyIDYyMlEzMTAgNjIzIDMwNyA2MjVUMzAzIDYyOVQyOTcgNjMxVDI4NiA2MzRUMjcwIDYzNVQyNDYgNjM2VDIxMSA2MzdIMTg0VjY4M0gxOTZRMjIwIDY4MCAzNjEgNjgwVDUyNiA2ODNINTM4VjYzN0g1MTFRNDY4IDYzNyA0NDcgNjM1VDQyMiA2MzFUNDExIDYyMlY1MzNMNDI1IDUzMVE1MjUgNTE5IDU5NSA0NjZUNjY1IDM0MlE2NjUgMzAxIDY0MiAyNjdUNTgzIDIwOVQ1MDYgMTcyVDQyNSAxNTJMNDExIDE1MFY2MVE0MTcgNTUgNDIxIDUzVDQ0NyA0OFQ1MTEgNDZINTM4VjBINTI2UTUwMiAzIDM2MSAzVDE5NiAwSDE4NFY0NkgyMTFRMjMxIDQ2IDI0NSA0NlQyNzAgNDdUMjg2IDQ4VDI5NyA1MVQzMDMgNTRUMzA3IDU3VDMxMiA2MVYxNTBIMzEwUTMwOSAxNTEgMjg5IDE1M1QyMzIgMTY2VDE2MCAxOTVRMTQ5IDIwMSAxMzYgMjEwVDEwMyAyMzhUNjkgMjg0VDU2IDM0MlE1NiA0MTQgMTI4IDQ2N1QyOTQgNTMwUTMwOSA1MzIgMzEwIDUzM0gzMTJWNjIyWk0xNzAgMzQyUTE3MCAyMDcgMzA3IDE4OEgzMTJWNDk1SDMwOVEzMDEgNDk1IDI4MiA0OTFUMjMxIDQ2OVQxODYgNDIzUTE3MCAzODkgMTcwIDM0MlpNNDE1IDE4OFE0ODcgMTk5IDUxOSAyMzZUNTUxIDM0MlE1NTEgMzg0IDUzOSA0MTRUNTA3IDQ1OVQ0NzAgNDgxVDQzNCA0OTFUNDE1IDQ5NUg0MTBWMTg4SDQxNScsXG4gICAgMHgzQTc6ICcyNzAgMFEyNTIgMyAxNDEgM1E0NiAzIDMxIDBIMjNWNDZINDBRMTI5IDUwIDE2MSA4OFExNjUgOTQgMjQ0IDIxNlQzMjQgMzM5UTMyNCAzNDEgMjM1IDQ4MFQxNDMgNjIyUTEzMyA2MzEgMTE5IDYzNFQ1NyA2MzdIMzdWNjgzSDQ2UTY0IDY4MCAxNzIgNjgwUTI5NyA2ODAgMzE4IDY4M0gzMjlWNjM3SDMyNFEzMDcgNjM3IDI4NiA2MzJUMjYzIDYyMVEyNjMgNjE4IDMyMiA1MjVUMzg0IDQzMVEzODUgNDMxIDQzNyA1MTFUNDg5IDU5M1E0OTAgNTk1IDQ5MCA1OTlRNDkwIDYxMSA0NzcgNjIyVDQzNiA2MzdINDI4VjY4M0g0MzdRNDU1IDY4MCA1NjYgNjgwUTY2MSA2ODAgNjc2IDY4M0g2ODRWNjM3SDY2N1E1ODUgNjM0IDU1MSA1OTlRNTQ4IDU5NiA0NzggNDkxUTQxMiAzODggNDEyIDM4N1E0MTIgMzg1IDUxNCAyMjVUNjIwIDYyUTYyOCA1MyA2NDIgNTBUNjk1IDQ2SDcyNlYwSDcxN1E2OTkgMyA1OTEgM1E0NjYgMyA0NDUgMEg0MzRWNDZINDQwUTQ1NCA0NiA0NzYgNTFUNDk5IDY0UTQ5OSA2NyA0NjMgMTI0VDM5MCAyMzhMMzUzIDI5NUwzNTAgMjkyUTM0OCAyOTAgMzQzIDI4M1QzMzEgMjY1VDMxMiAyMzZUMjg2IDE5NVEyMTkgODggMjE4IDg0UTIxOCA3MCAyMzQgNTlUMjcyIDQ2SDI4MFYwSDI3MCcsXG4gICAgMHgzQTg6ICczNDAgNjIyUTMzOCA2MjMgMzM1IDYyNVQzMzEgNjI5VDMyNSA2MzFUMzE0IDYzNFQyOTggNjM1VDI3NCA2MzZUMjM5IDYzN0gyMTJWNjgzSDIyNFEyNDggNjgwIDM4OSA2ODBUNTU0IDY4M0g1NjZWNjM3SDUzOVE0NzkgNjM3IDQ2NCA2MzVUNDM5IDYyMkw0MzggNDA3UTQzOCAxOTIgNDM5IDE5MlE0NDMgMTkzIDQ0OSAxOTVUNDc0IDIwN1Q1MDcgMjMyVDUzNiAyNzZUNTU3IDM0NFE1NjAgMzY1IDU2MiA0MTdUNTczIDQ5M1E1ODcgNTM2IDYyMCA1NDRRNjI3IDU0NiA2NzEgNTQ2SDcxNUw3MjIgNTQwVjUxNVE3MTQgNTA5IDcwOCA1MDlRNjgwIDUwNSA2NzEgNDc2VDY1OCAzOTJUNjQ0IDMwN1E1OTkgMTc3IDQ1MSAxNTNMNDM4IDE1MVYxMDZMNDM5IDYxUTQ0NiA1NCA0NTEgNTJUNDc2IDQ4VDUzOSA0Nkg1NjZWMEg1NTRRNTMwIDMgMzg5IDNUMjI0IDBIMjEyVjQ2SDIzOVEyNTkgNDYgMjczIDQ2VDI5OCA0N1QzMTQgNDhUMzI1IDUxVDMzMSA1NFQzMzUgNTdUMzQwIDYxVjE1MVExMjYgMTc4IDExNyA0MDZRMTE1IDUwMyA2OSA1MDlRNTUgNTA5IDU1IDUyNlE1NSA1NDEgNTkgNTQzVDg2IDU0NkgxMDdIMTIwUTE1MCA1NDYgMTYxIDU0M1QxODQgNTI4UTE5OCA1MTQgMjA0IDQ5M1EyMTIgNDcyIDIxMyA0MjBUMjI2IDMxNlQyNzIgMjMwUTI4NyAyMTYgMzAzIDIwN1QzMzAgMTk0TDMzOSAxOTJRMzQwIDE5MiAzNDAgNDA3VjYyMicsXG4gICAgMHgzQTk6ICc1NSA0NTRRNTUgNTAzIDc1IDU0NlQxMjcgNjE3VDE5NyA2NjVUMjcyIDY5NVQzMzcgNzA0SDM1MlEzOTYgNzA0IDQwNCA3MDNRNTI3IDY4NyA1OTYgNjE1VDY2NiA0NTRRNjY2IDM5MiA2MzUgMzMwVDU1OSAyMDBUNDk5IDgzVjgwSDU0M1E1ODkgODEgNjAwIDgzVDYxNyA5M1E2MjIgMTAyIDYyOSAxMzVUNjM2IDE3Mkw2MzcgMTc3SDY3N1YxNzVMNjYwIDg5UTY0NSAzIDY0NCAyVjBINTUySDQ4OFE0NjEgMCA0NTYgM1Q0NTEgMjBRNDUxIDg5IDQ5OSAyMzVUNTQ4IDQ1NVE1NDggNTEyIDUzMCA1NTVUNDgzIDYyMlQ0MjQgNjU2VDM2MSA2NjhRMzMyIDY2OCAzMDMgNjU4VDI0MyA2MjZUMTkzIDU2MFQxNzQgNDU2UTE3NCAzODAgMjIyIDIzM1QyNzAgMjBRMjcwIDcgMjYzIDBINzdWMlE3NiAzIDYxIDg5TDQ0IDE3NVYxNzdIODRMODUgMTcyUTg1IDE3MSA4OCAxNTVUOTYgMTE5VDEwNCA5M1ExMDkgODYgMTIwIDg0VDE3OCA4MEgyMjJWODNRMjA2IDEzMiAxNjIgMTk5VDg3IDMyOVQ1NSA0NTQnLFxuICAgIDB4MjAwMDogJycsXG4gICAgMHgyMDAxOiAnJyxcbiAgICAweDIwMDI6ICcnLFxuICAgIDB4MjAwMzogJycsXG4gICAgMHgyMDA0OiAnJyxcbiAgICAweDIwMDU6ICcnLFxuICAgIDB4MjAwNjogJycsXG4gICAgMHgyMDA5OiAnJyxcbiAgICAweDIwMEE6ICcnLFxuICAgIDB4MjAwQjogJycsXG4gICAgMHgyMDBDOiAnJyxcbiAgICAweDIwMTM6ICcwIDI0OFYyODVINDk5VjI0OEgwJyxcbiAgICAweDIwMTQ6ICcwIDI0OFYyODVIOTk5VjI0OEgwJyxcbiAgICAweDIwMTU6ICcwIDI0OFYyODVIOTk5VjI0OEgwJyxcbiAgICAweDIwMTY6ICcxMzMgNzM2UTEzOCA3NTAgMTUzIDc1MFExNjQgNzUwIDE3MCA3MzlRMTcyIDczNSAxNzIgMjUwVDE3MCAtMjM5UTE2NCAtMjUwIDE1MiAtMjUwUTE0NCAtMjUwIDEzOCAtMjQ0TDEzNyAtMjQzUTEzMyAtMjQxIDEzMyAtMTc5VDEzMiAyNTBRMTMyIDczMSAxMzMgNzM2Wk0zMjkgNzM5UTMzNCA3NTAgMzQ2IDc1MFEzNTMgNzUwIDM2MSA3NDRMMzYyIDc0M1EzNjYgNzQxIDM2NiA2NzlUMzY3IDI1MFQzNjcgLTE3OFQzNjIgLTI0M0wzNjEgLTI0NFEzNTUgLTI1MCAzNDcgLTI1MFEzMzUgLTI1MCAzMjkgLTIzOVEzMjcgLTIzNSAzMjcgMjUwVDMyOSA3MzknLFxuICAgIDB4MjAxNzogJzAgLTYyVi0yNUg0OTlWLTYySDAnLFxuICAgIDB4MjAxODogJzY0IDQ5NFE2NCA1NDggODYgNTk3VDEzMSA2NzBUMTYwIDY5NFExNjMgNjk0IDE3MiA2ODVUMTgyIDY3MlExODIgNjY5IDE3MCA2NTZUMTQ0IDYyNVQxMTYgNTczVDEwMSA1MDFRMTAxIDQ4OSAxMDIgNDg5VDEwNyA0OTFUMTIwIDQ5N1QxMzggNTAwUTE2MyA1MDAgMTgwIDQ4M1QxOTggNDQwVDE4MSAzOTdUMTM5IDM3OVExMTAgMzc5IDg3IDQwNVQ2NCA0OTQnLFxuICAgIDB4MjAxOTogJzc4IDYzNFE3OCA2NTkgOTUgNjc2VDEzOCA2OTRRMTY2IDY5NCAxODkgNjY4VDIxMiA1NzlRMjEyIDUyNSAxOTAgNDc2VDE0NiA0MDNUMTE4IDM3OVExMTQgMzc5IDEwNSAzODhUOTUgNDAxUTk1IDQwNCAxMDcgNDE3VDEzMyA0NDhUMTYxIDUwMFQxNzYgNTcyUTE3NiA1ODQgMTc1IDU4NFQxNzAgNTgxVDE1NyA1NzZUMTM5IDU3M1ExMTQgNTczIDk2IDU5MFQ3OCA2MzQnLFxuICAgIDB4MjAxQzogJzEyOCA0OTRRMTI4IDUyOCAxMzcgNTYwVDE1OCA2MTZUMTg1IDY1OFQyMDkgNjg1VDIyMyA2OTRUMjM2IDY4NVQyNDUgNjcwUTI0NCA2NjggMjMxIDY1NFQyMDQgNjIyVDE3OCA1NzFUMTY0IDUwMVExNjQgNDg5IDE2NSA0ODlUMTcwIDQ5MVQxODMgNDk3VDIwMSA1MDBRMjI2IDUwMCAyNDQgNDgzVDI2MiA0NDBUMjQ1IDM5N1QyMDIgMzc5UTE3MyAzNzkgMTUxIDQwNVQxMjggNDk0Wk0zMzIgNDk0UTMzMiA1MjggMzQxIDU2MFQzNjIgNjE2VDM4OSA2NThUNDEzIDY4NVQ0MjcgNjk0VDQzOSA2ODVUNDQ5IDY3MlE0NDkgNjY5IDQzNyA2NTZUNDExIDYyNVQzODMgNTczVDM2OCA1MDFRMzY4IDQ4OSAzNjkgNDg5VDM3NCA0OTFUMzg3IDQ5N1Q0MDUgNTAwUTQzMCA1MDAgNDQ4IDQ4M1Q0NjYgNDQwVDQ0OSAzOTdUNDA2IDM3OVEzNzcgMzc5IDM1NSA0MDVUMzMyIDQ5NCcsXG4gICAgMHgyMDFEOiAnMzQgNjM0UTM0IDY1OSA1MCA2NzZUOTMgNjk0UTEyMSA2OTQgMTQ0IDY2OFQxNjggNTc5UTE2OCA1MjUgMTQ2IDQ3NlQxMDEgNDAzVDczIDM3OVE2OSAzNzkgNjAgMzg4VDUwIDQwMVE1MCA0MDQgNjIgNDE3VDg4IDQ0OFQxMTYgNTAwVDEzMSA1NzJRMTMxIDU4NCAxMzAgNTg0VDEyNSA1ODFUMTEyIDU3NlQ5NCA1NzNRNjkgNTczIDUyIDU5MFQzNCA2MzRaTTIzOCA2MzRRMjM4IDY1OSAyNTQgNjc2VDI5NyA2OTRRMzI1IDY5NCAzNDggNjY4VDM3MiA1NzlRMzcyIDUyNSAzNTAgNDc2VDMwNSA0MDNUMjc3IDM3OVEyNzMgMzc5IDI2NCAzODhUMjU0IDQwMVEyNTQgNDA0IDI2NiA0MTdUMjkyIDQ0OFQzMjAgNTAwVDMzNSA1NzJRMzM1IDU4NCAzMzQgNTg0VDMyOSA1ODFUMzE2IDU3NlQyOTggNTczUTI3MyA1NzMgMjU2IDU5MFQyMzggNjM0JyxcbiAgICAweDIwMjA6ICcxODIgNjc1UTE5NSA3MDUgMjIyIDcwNVEyMzQgNzA1IDI0MyA3MDBUMjUzIDY5MVQyNjMgNjc1TDI2MiA2NTVRMjYyIDYyMCAyNTIgNTQ5VDI0MCA0NTRWNDQ5UTI1MCA0NTEgMjg4IDQ2MVQzNDYgNDcyVDM3NyA0NjFUMzg5IDQzMVEzODkgNDE3IDM3OSA0MDRUMzQ2IDM5MFEzMjcgMzkwIDI4OCA0MDFUMjQzIDQxMkgyNDBWNDA1UTI0NSAzNjcgMjUwIDMzOVQyNTggMzAxVDI2MSAyNzRUMjYzIDIyNVEyNjMgMTI0IDI1NSAtNDFUMjM5IC0yMTNRMjM2IC0yMTYgMjIyIC0yMTZIMjE3UTIwNiAtMjE2IDIwNCAtMjEyVDIwMCAtMTg2UTE5OSAtMTc1IDE5OSAtMTY4UTE4MSAzOCAxODEgMjI1UTE4MSAyNjUgMTgyIDI4MFQxOTEgMzI3VDIwNCA0MDVWNDEySDIwMVExOTYgNDEyIDE1NyA0MDFUOTggMzkwUTc2IDM5MCA2NiA0MDNUNTUgNDMxVDY1IDQ1OFQ5OCA0NzJRMTE2IDQ3MiAxNTUgNDYyVDIwNSA0NDlRMjA0IDQ1MiAyMDQgNDYwVDIwMSA0OTBUMTkzIDU0N1ExODIgNjE5IDE4MiA2NTVWNjc1JyxcbiAgICAweDIwMjE6ICcxODEgNjU4UTE4MSA3MDUgMjIyIDcwNVQyNjMgNjU4UTI2MyA2MzMgMjUyIDU3MlQyNDAgNDk3UTI0MCA0OTYgMjQxIDQ5NlEyNDMgNDk2IDI4NSA1MDdUMzQ1IDUxOVEzNjUgNTE5IDM3NiA1MDhUMzg4IDQ3OFEzODggNDY2IDM4NCA0NThUMzc1IDQ0N1QzNjEgNDM4SDM0NFEzMTggNDM4IDI4MiA0NDhUMjQxIDQ1OVEyNDAgNDU4IDI0MCA0NTZRMjQwIDQ0OSAyNTEgMzg0VDI2MyAyOTdRMjYzIDI3OCAyNTUgMjY3VDIzOCAyNTNUMjIyIDI1MFQyMDYgMjUyVDE5MCAyNjZUMTgxIDI5N1ExODEgMzIzIDE5MiAzODNUMjA0IDQ1OFEyMDQgNDU5IDIwMyA0NTlRMTk4IDQ1OSAxNjIgNDQ5VDEwMSA0MzhIODRRNzQgNDQzIDcwIDQ0NlQ2MSA0NTdUNTYgNDc4UTU2IDQ5NyA2NyA1MDhUOTkgNTE5UTExNyA1MTkgMTU5IDUwOFQyMDMgNDk2UTIwNCA0OTYgMjA0IDQ5OVEyMDQgNTA3IDE5MyA1NzJUMTgxIDY1OFpNMTgxIDIwMlExODEgMjQ5IDIyMiAyNDlUMjYzIDIwMlEyNjMgMTg1IDI1OSAxNjFUMjQ5IDEwM1QyNDAgNDhWNDFIMjQzUTI0OCA0MSAyODcgNTJUMzQ2IDYzVDM3NyA1MlQzODkgMjJRMzg5IDggMzc5IC01VDM0NiAtMTlRMzI3IC0xOSAyODggLThUMjQzIDNIMjQwVi00UTI0MyAtMjQgMjQ5IC01OFQyNTkgLTExN1QyNjMgLTE1OFEyNjMgLTE3NyAyNTUgLTE4OFQyMzggLTIwMlQyMjIgLTIwNVQyMDYgLTIwM1QxOTAgLTE4OVQxODEgLTE1OFExODEgLTE0MSAxODUgLTExN1QxOTUgLTU5VDIwNCAtNFYzSDIwMVExOTYgMyAxNTcgLThUOTggLTE5UTc2IC0xOSA2NiAtNlQ1NSAyMlQ2NSA0OVQ5OCA2M1ExMTcgNjMgMTU2IDUyVDIwMSA0MUgyMDRWNDhRMjAxIDY4IDE5NSAxMDJUMTg1IDE2MVQxODEgMjAyJyxcbiAgICAweDIwMjI6ICc1NSAyNTFRNTUgMzI4IDExMiAzODZUMjQ5IDQ0NFQzODYgMzg4VDQ0NCAyNDlRNDQ0IDE3MSAzODggMTEzVDI1MCA1NVExNzAgNTUgMTEzIDExMlQ1NSAyNTEnLFxuICAgIDB4MjAyNjogJzc4IDYwUTc4IDg0IDk1IDEwMlQxMzggMTIwUTE2MiAxMjAgMTgwIDEwNFQxOTkgNjFRMTk5IDM2IDE4MiAxOFQxMzkgMFQ5NiAxN1Q3OCA2MFpNNTI1IDYwUTUyNSA4NCA1NDIgMTAyVDU4NSAxMjBRNjA5IDEyMCA2MjcgMTA0VDY0NiA2MVE2NDYgMzYgNjI5IDE4VDU4NiAwVDU0MyAxN1Q1MjUgNjBaTTk3MiA2MFE5NzIgODQgOTg5IDEwMlQxMDMyIDEyMFExMDU2IDEyMCAxMDc0IDEwNFQxMDkzIDYxUTEwOTMgMzYgMTA3NiAxOFQxMDMzIDBUOTkwIDE3VDk3MiA2MCcsXG4gICAgMHgyMDMyOiAnNzkgNDNRNzMgNDMgNTIgNDlUMzAgNjFRMzAgNjggODUgMjkzVDE0NiA1MjhRMTYxIDU2MCAxOTggNTYwUTIxOCA1NjAgMjQwIDU0NVQyNjIgNTAxUTI2MiA0OTYgMjYwIDQ4NlEyNTkgNDc5IDE3MyAyNjNUODQgNDVUNzkgNDMnLFxuICAgIDB4MjAzNTogJzEyIDUwMVExMiA1MjcgMzEgNTQyVDYzIDU1OFE3MyA1NjAgNzcgNTYwUTExNCA1NjAgMTI4IDUyOFExMzMgNTE4IDE4OCAyOTNUMjQ0IDYxUTI0NCA1NiAyMjMgNTBUMTk1IDQzUTE5MiA0MyAxOTAgNDVUMTAyIDI2M1QxNCA0ODZRMTIgNDk2IDEyIDUwMScsXG4gICAgMHgyMDNFOiAnNjkgNTQ0VjU5MEg0MzBWNTQ0SDY5JyxcbiAgICAweDIwNDQ6ICc0MjMgNzUwUTQzMiA3NTAgNDM4IDc0NFQ0NDQgNzMwUTQ0NCA3MjUgMjcxIDI0OFQ5MiAtMjQwUTg1IC0yNTAgNzUgLTI1MFE2OCAtMjUwIDYyIC0yNDVUNTYgLTIzMVE1NiAtMjIxIDIzMCAyNTdUNDA3IDc0MFE0MTEgNzUwIDQyMyA3NTAnLFxuICAgIDB4MjA2MDogJycsXG4gICAgMHgyMDYxOiAnJyxcbiAgICAweDIwNjI6ICcnLFxuICAgIDB4MjA2MzogJycsXG4gICAgMHgyMDY0OiAnJyxcbiAgICAweDIwRDc6ICczNzcgNjk0UTM3NyA3MDIgMzgyIDcwOFQzOTcgNzE0UTQwNCA3MTQgNDA5IDcwOVE0MTQgNzA1IDQxOSA2OTBRNDI5IDY1MyA0NjAgNjMzUTQ3MSA2MjYgNDcxIDYxNVE0NzEgNjA2IDQ2OCA2MDNUNDU0IDU5NFE0MTEgNTcyIDM3OSA1MzFRMzc3IDUyOSAzNzQgNTI1VDM2OSA1MTlUMzY0IDUxN1QzNTcgNTE2UTM1MCA1MTYgMzQ0IDUyMVQzMzcgNTM2UTMzNyA1NTUgMzg0IDU5NUgyMTNMNDIgNTk2UTI5IDYwNSAyOSA2MTVRMjkgNjIyIDQyIDYzNUg0MDFRMzc3IDY3MyAzNzcgNjk0JyxcbiAgICAweDIxMDI6ICc2ODQgMTMxUTY4NCAxMjUgNjcyIDEwOVQ2MzMgNzFUNTczIDI5VDQ4OSAtNVQzODYgLTE5UTMzMCAtMTkgMjc2IC0zVDE3NCA0NlQ5MSAxMzRUNDQgMjYxUTM5IDI4MyAzOSAzNDFUNDQgNDIxUTY2IDUzOCAxNDMgNjExVDM0MSA2OTlRMzQ0IDY5OSAzNjQgNzAwVDM5NSA3MDFRNDQ5IDY5OCA1MDMgNjc3VDU4NSA2NTVRNjAzIDY1NSA2MTEgNjYyVDYyMCA2NzhUNjI1IDY5NFQ2MzkgNzAyUTY1MCA3MDIgNjU3IDY5MFY0ODFMNjUzIDQ3NFE2NDAgNDY3IDYyOCA0NzJRNjI0IDQ3NiA2MTggNDk2VDU5NSA1NDFRNTYyIDU4NyA1MDcgNjI1VDM5MCA2NjNIMzgxUTMzNyA2NjMgMjk5IDYyNVEyMTIgNTQ3IDIxMiAzMzZRMjEyIDI0OSAyMzMgMTc5UTI3NCAzMCA0MDUgMzBRNTMzIDMwIDY0MSAxMzBRNjU4IDE0NyA2NjYgMTQ3UTY3MSAxNDcgNjc3IDE0M1Q2ODQgMTMxWk0yNTAgNjI1UTI2NCA2NDMgMjYxIDY0M1EyMzggNjM1IDIxNCA2MjBUMTYxIDU3OVQxMTAgNTEwVDc5IDQxNFE3NCAzODQgNzQgMzQxVDc5IDI2OFE4OSAyMTMgMTEzIDE2OVQxNjQgMTAxVDIxNyA2MVQyNjAgMzlMMjc3IDM0UTI3MCA0MSAyNjQgNDhRMTk5IDExMSAxODEgMjU0UTE3OCAyODEgMTc4IDM0NFQxODEgNDM0UTIwMCA1NTkgMjUwIDYyNVpNNjIxIDU2NVY2MjVRNjE3IDYyMyA2MTMgNjIzUTYwMyA2MTkgNTkwIDYxOUg1NzVMNTg4IDYwNVE2MDggNTgzIDYxMCA1NzlMNjIxIDU2NScsXG4gICAgMHgyMTBCOiAnMzMxIDUwNVEzMzEgNTE5IDM4MiA1NzRUNDcyIDYyOUg0ODBRNTEyIDYyOSA1MjkgNjE0VDU0NyA1NzZRNTQ3IDU1NSA1MzQgNTMyVDUyMCA1MDRRNTIwIDQ5MyA1NDkgNDkzUTU5MCA0OTMgNjIzIDUwNlQ2NjggNTMzTDY4MSA1NDZRNzMxIDYwMCA3NzIgNjQxVDgzMiA3MDBUODUyIDcxN1E4NTcgNzE3IDg2MCA3MTFUODY1IDY5N0w4NjYgNjkwUTg2NiA2ODggODEzIDYxN1Q3MDggNDc1VDY1NiA0MDNRNjgyIDQwMyA3MTQgNDA0SDc3MUw3ODAgNDE2UTEwMDQgNzA3IDExNjcgNzA3UTEyMDkgNzA3IDEyMjUgNjg5VDEyNDEgNjQ2UTEyNDEgNjA0IDEyMDkgNTQ3VDExMTggNDQ3UTEwODEgNDIyIDEwMzQgNDA1VDk1MiAzODJUODg4IDM3NFQ4NTcgMzcwSDg1Mkw4MjYgMzM0UTczMyAyMDQgNzA4IDE0NFE2OTEgMTA0IDY5MSA3NlE2OTEgMjkgNzQ4IDI5UTc2OCAzMSA3OTEgNDhUODMxIDgzVDg2MiAxMjJUODgxIDE0NlE4ODMgMTQ4IDkwMCAxNDhIOTE3UTkyMSAxNDMgOTIxIDE0MFQ5MTQgMTI3UTgxMCAtOCA3MjMgLThRNjExIC00IDYxMSAxMDBRNjExIDE0MiA2MzEgMTkxVDY3NiAyNzVUNzIxIDMzN1Q3NDIgMzY3UTcxNiAzNjcgNjg1IDM2Nkg2MjhMNjIwIDM1NVE2MTggMzUyIDU1OCAyNjhRNDg2IDE2OCA0NjEgMTQxUTQwNSA3OSAzMzkgMzRUMjE1IC0yOFExODggLTM2IDE1MyAtMzZRODYgLTM2IDU4IC0xMVQyOSA0NlEyOSA4MiA1NSAxMjBUMTIzIDE1OFExNDQgMTU4IDE1NCAxNDZUMTY0IDExOVExNjQgMTAyIDE0MyA4OVQxMDAgNzVROTIgNzUgODYgNzZUNzcgODBUNzIgODJRNjcgODIgNjcgNjBRNjcgMjggOTkgMTRUMTcwIDBRMjE0IDAgMjcyIDQ3VDQxOSAyMjRMNTA1IDM0MEw1MTggMzU3UTUxMyAzNTcgNTA0IDM1NlQ0NjcgMzQ3VDQxNSAzMzBUMzYwIDMwMFQzMDggMjUzUTI5NiAyMzggMjk1IDIzN0gyNzhIMjc0UTI1NiAyMzcgMjU2IDI0M1EyNTYgMjQ4IDI2MyAyNTZRMjkxIDI5NCAzMzAgMzIxVDQwNyAzNjJUNDc2IDM4MlQ1MzAgMzkzVDU1MiAzOThRNTU2IDQwMiA1NzMgNDIzVDYwMCA0NTRRNjAyIDQ1NyA2MDQgNDYwVDYwOCA0NjVMNjEwIDQ2N1E1NjUgNDU1IDUzMiA0NTVRNDY1IDQ1NSA0NDkgNDgzUTQ0NyA0ODcgNDQ3IDQ5OFE0NDcgNTEzIDQ2MyA1MzhUNDc5IDU3OVE0NzkgNTkzIDQ2MyA1OTNRNDM2IDU5MyAzODUgNTE5UTM3NCA1MDQgMzcxIDUwMlQzNjAgNDk5SDM1M0gzNDlRMzMxIDQ5OSAzMzEgNTA1Wk0xMTk1IDYzNFExMTk1IDY0MyAxMTk1IDY0OFQxMTg1IDY2MlQxMTU3IDY3MVExMTMwIDY3MSAxMDkyIDY0NFQxMDE5IDU3OVQ5NTIgNTAyVDkwMSA0MzZMODgyIDQwOUw4OTEgNDEwUTkwMCA0MTEgOTEzIDQxMlQ5MzQgNDE1UTEwODEgNDM5IDExNDQgNTIwUTExOTUgNTkwIDExOTUgNjM0JyxcbiAgICAweDIxMEM6ICcxMSAtMTZMMSAwUTcgNiAyNSAyN1Q1NyA2MlQ5MSA4OFQxMjggMTAxUTE1OSA5OSAxOTUgNjZMMjAzIDU5TDIxMSA2N1EyMzkgOTUgMjM5IDEzM1EyMzkgMTU4IDIxMCAyMTNUMTUyIDMzMFQxMjMgNDMwUTEyMyA0NzcgMTczIDUzNlQyNjkgNjMwVDMyMCA2NjZRMzc2IDYxMCA0NDAgNjA2SDQ0M1E0NTcgNjA2IDQ2NiA2MTFUNTE5IDY0N0w1NDIgNjY0UTU0MyA2NjQgNTQzIDY1NFY2NDNMNTIyIDYyMlE0MzQgNTM3IDQwMyA1MzdRMzg4IDUzNyAzNjYgNTQzVDMyOSA1NTVUMjkzIDU3MFQyNzAgNTgwTDI2MSA1ODVMMjUzIDU3NFEyMDYgNTE3IDIwNiA0NzVRMjA2IDQ1MiAyMTggNDE2VDI0MiAzNTZMMjU1IDMzMVEyNTYgMzMxIDI3MCAzNDVUMzI0IDM5MVQ0MjEgNDU5TDQzNyA0NjhINDUzUTU0NSA0NjMgNjA4IDQyMUw2MTggNDE1TDYyMyAzOTJRNjQ0IDMwNyA2NDQgMjMzUTY0NCA5NyA2MTIgOVE2MDQgLTEwIDYwMSAtMTVUNTgxIC0zNVE1MDUgLTEwNCA0NjcgLTEyNFE0NDYgLTEzMyA0MzEgLTEzM1E0MTQgLTEzMiAzOTkgLTEyNlQzNzYgLTExNVQzNjggLTEwN1EzNjggLTEwNiAzOTIgLTc1TDQxNSAtNDNRNDMyIC02NyA0NDQgLTczVDQ3MiAtNzlINDc0UTQ3OSAtNzkgNDg0IC03OFQ1MDEgLTY5VDUyMSAtNTBUNTM4IC0xM1Q1NTEgNDZRNTU4IDk3IDU1OCAxODBRNTU4IDIzMiA1NTcgMjQ1UTU1MyAyNzcgNTQ3IDMwMFQ1MjggMzQ5VDQ4OCAzODlUNDI0IDQwNFEzNDQgNDA0IDI3NiAyOTVRMjcyIDI4OCAyNzMgMjg1UTMwMCAyMTYgMzAwIDE2OFEzMDAgMTYxIDMwMCAxNTZUMjk4IDE0NVQyOTcgMTM3VDI5MyAxMjlUMjg5IDEyM1QyODMgMTE2VDI3NyAxMDdRMjEyIDIzIDE3OCAtMTNMMTY2IC0yNkwxNDkgLTlRMTA4IDMyIDgxIDMyUTYzIDMyIDIxIC03TDExIC0xNicsXG4gICAgMHgyMTBEOiAnMTQgNjY2UTE0IDY3NSAyNiA2ODNIMzQ0TDM1MSA2NzlRMzYxIDY2NSAzNTEgNjU1UTM0NCA2NDggMzE3IDY0OFEyODcgNjQ1IDI4MiA2NDFRMjcwIDYzNyAyNjkgNjIzVDI2NiA0OTdWMzcwSDUxMVY0OTdRNTExIDUxOSA1MTAgNTUzUTUwOSA2MTUgNTA3IDYyNlQ0OTYgNjQxSDQ5NVE0ODkgNjQ1IDQ1OSA2NDhRNDIwIDY0OCA0MjAgNjY1UTQyMCA2NzIgNDI2IDY3OUw0MzMgNjgzSDc1MVE3NjIgNjc2IDc2MiA2NjZRNzYyIDY0OCA3MjQgNjQ4UTY4NCA2NDUgNjc3IDYzMlE2NzUgNjI2IDY3NSAzNDFRNjc1IDU3IDY3NyA1MlE2ODQgMzggNzI0IDM1UTc2MiAzNSA3NjIgMTZRNzYyIDYgNzUxIC0xSDQzM0w0MjYgM1E0MjAgMTAgNDIwIDE3UTQyMCAzNSA0NTkgMzVRNTAxIDM4IDUwNiA1MlE1MTEgNjQgNTExIDE5MFYzMjNIMjY2VjE5MFEyNjYgNjAgMjcxIDUyUTI3NiAzOCAzMTcgMzVRMzQyIDM1IDM1MSAyOFEzNjAgMTcgMzUxIDNMMzQ0IC0xSDI2UTE0IDUgMTQgMTZRMTQgMzUgNTMgMzVROTQgMzggOTkgNTJRMTA0IDYwIDEwNCAzNDFUOTkgNjMyUTkzIDY0NSA1MyA2NDhRMTQgNjQ4IDE0IDY2NlpNMjMzIDM0MVY1NTNRMjMzIDYzNSAyMzkgNjQ4SDEzMVExMzQgNjQxIDEzNSA2MzhUMTM3IDYwM1QxMzkgNTE3VDEzOSAzNDFRMTM5IDEzMSAxMzggODlUMTMyIDM3UTEzMSAzNiAxMzEgMzVIMjM5UTIzMyA0NyAyMzMgMTI5VjM0MVpNNjM5IDM0MVY0ODlRNjM5IDU0OCA2MzkgNTc2VDY0MCA2MjBUNjQyIDYzOVQ2NDYgNjQ4SDUzN0w1NDIgNjM5UTU0NiA2MjUgNTQ2IDM0MVE1NDYgMTMwIDU0NSA4OFQ1MzggMzdRNTM3IDM2IDUzNyAzNUg2NDZRNjQzIDQxIDY0MyA0MlQ2NDEgNTVUNjM5IDg0VDYzOSAxNDBWMzQxJyxcbiAgICAweDIxMEU6ICcxMzcgNjgzUTEzOCA2ODMgMjA5IDY4OFQyODIgNjk0UTI5NCA2OTQgMjk0IDY4NVEyOTQgNjc0IDI1OCA1MzRRMjIwIDM4NiAyMjAgMzgzUTIyMCAzODEgMjI3IDM4OFEyODggNDQyIDM1NyA0NDJRNDExIDQ0MiA0NDQgNDE1VDQ3OCAzMzZRNDc4IDI4NSA0NDAgMTc4VDQwMiA1MFE0MDMgMzYgNDA3IDMxVDQyMiAyNlE0NTAgMjYgNDc0IDU2VDUxMyAxMzhRNTE2IDE0OSA1MTkgMTUxVDUzNSAxNTNRNTU1IDE1MyA1NTUgMTQ1UTU1NSAxNDQgNTUxIDEzMFE1MzUgNzEgNTAwIDMzUTQ2NiAtMTAgNDE5IC0xMEg0MTRRMzY3IC0xMCAzNDYgMTdUMzI1IDc0UTMyNSA5MCAzNjEgMTkyVDM5OCAzNDVRMzk4IDQwNCAzNTQgNDA0SDM0OVEyNjYgNDA0IDIwNSAzMDZMMTk4IDI5M0wxNjQgMTU4UTEzMiAyOCAxMjcgMTZRMTE0IC0xMSA4MyAtMTFRNjkgLTExIDU5IC0yVDQ4IDE2UTQ4IDMwIDEyMSAzMjBMMTk1IDYxNlExOTUgNjI5IDE4OCA2MzJUMTQ5IDYzN0gxMjhRMTIyIDY0MyAxMjIgNjQ1VDEyNCA2NjRRMTI5IDY4MyAxMzcgNjgzJyxcbiAgICAweDIxMEY6ICcxNTAgNDc1UTE0NyA0NzUgMTE4IDQ2NlQ4MiA0NTdRNzMgNDU3IDY0IDQ2N1Q1NCA0ODdRNTQgNDkwIDU1IDQ5MlE2MyA1MDYgNjQgNTA2UTY3IDUxMiAxMTggNTI2UTE2MiA1NDEgMTY5IDU0NlExNzMgNTU5IDE3NSA1NzVRMTgxIDU5NiAxODEgNjA0UTE4MSA2MTMgMTY2IDYxN1ExNjQgNjE3IDE1MyA2MThUMTM1IDYxOVExMTkgNjE5IDExNCA2MjFUMTA5IDYzMFExMDkgNjM2IDExNCA2NTZUMTIyIDY4MVExMjUgNjg1IDIwMiA2ODhRMjcyIDY5NSAyODYgNjk1UTMwNCA2OTUgMzA0IDY4NFEzMDQgNjgyIDI5MSA2MjhMMjc4IDU3N0wzODYgNjEyUTQ2NiA2MzUgNDc2IDYzNVQ0OTIgNjI3VDQ5OSA2MDdRNDk5IDU5MyA0ODkgNTg2UTQ4NSA1ODMgMzczIDU0NkwyNjIgNTEyUTI2MiA1MTEgMjQ4IDQ1NVQyMzMgMzk3VDIzNiAzOTdUMjQ0IDQwNFEyOTUgNDQxIDM1NyA0NDFRNDA1IDQ0MSA0NDUgNDE3VDQ4NSAzMzNRNDg1IDI4NCA0NDkgMTc4VDQxMiA1OFQ0MjYgNDRRNDQ3IDQ0IDQ2NiA2OFE0ODUgODcgNTAwIDEzMEw1MDkgMTUySDUzMUg1NDNRNTYyIDE1MiA1NjIgMTQ0UTU2MiAxMjggNTQ2IDkzVDQ5NCAyM1Q0MTUgLTEzUTM4NSAtMTMgMzU5IDNUMzIyIDQ0UTMxOCA1MiAzMTggNzdRMzE4IDk5IDM1MiAxOTZUMzg2IDMzN1EzODYgMzg2IDM0NiAzODZRMzE4IDM4NiAyODYgMzcwUTI2NyAzNjEgMjQ1IDMzOFQyMTEgMjkyUTIwNyAyODcgMTkzIDIzNVQxNjIgMTEzVDEzOCAyMVExMjggNyAxMjIgNFExMDUgLTEyIDgzIC0xMlE2NiAtMTIgNTQgLTJUNDIgMjZRNDIgNDUgOTggMjU3TDE1MSA0NzVIMTUwJyxcbiAgICAweDIxMTA6ICc0ODcgMjI1UTM5OCAyNTUgMzk4IDM0MlEzOTggNDEwIDQ1NSA0OTJRNDkxIDU0NSA1NTIgNTgyVDY2OSA2MzZUODAwIDY3M1Q5MTggNzEyUTkzMCA3MTcgOTMzIDcxN1E5MzkgNzE3IDk0MiA3MDZUOTQ2IDY4OVE5NDYgNjg2IDkxNSA2NjRUODMwIDU5MVQ3MjkgNDgwUTY5MSA0MjkgNjU3IDM1MVQ2MTUgMjYwUTYyOCAyNjAgNjYzIDI3OVQ3MzMgMzM5VDc2OSA0MjZRNzY5IDQ0MiA3NjcgNDU5VDc2NCA0NzlRNzY0IDQ4NCA3NjYgNDg2UTc2OSA0ODggNzgxIDQ5M1Q3OTcgNDk4UTgwMiA0OTggODAzIDQ5NFQ4MDggNDcyUTgxMyA0NDIgODEzIDQyNVE4MTMgMzY5IDc2MSAzMTVRNjkyIDI0NiA2MDUgMjI0TDU5MiAyMjBMNTg0IDIwOVE1NDcgMTU1IDQ4NyAxMDZUMzU4IDI1UTI3MCAtMTcgMTkxIC0xN1ExNDMgLTE3IDEwMSAxVDU5IDU5UTU5IDk2IDg1IDEyN1QxNDggMTU4UTE2OSAxNTggMTc5IDE0NlQxODkgMTE5UTE4OSAxMDIgMTY3IDg5VDEyNSA3NVExMTYgNzUgMTA5IDc3VDEwMSA4MVQ5NyA4MFE5NiA3NyA5NiA3MlE5NiA1MCAxMjMgMzZUMjA0IDIxSDIxNlEyNDkgMjEgMzAyIDQ5VDQxMSAxMzRRNDM5IDE2MSA0NTkgMTg3UTQ4NyAyMjAgNDg3IDIyNVpNNDYwIDMzNFE0NjAgMzA4IDQ3MiAyOTBUNDk4IDI2OEw1MTAgMjYzUTUxNSAyNjMgNTQ1IDMxM1Q2MjYgNDM4VDcyMyA1NjFRNzUxIDU4OSA3NzUgNjA5VDgwOCA2MzZUODE3IDY0NEg4MTZRODEzIDY0NCA3MzIgNjE4UTY4MSA2MDEgNjQ1IDU4NFQ1ODUgNTQ4VDU0OSA1MTRUNTE4IDQ3NlE0NjAgMzkwIDQ2MCAzMzQnLFxuICAgIDB4MjExMTogJzE5MCA2MDFRMTYxIDYwMSAxMzcgNTg3VDk3IDU1M1Q3MSA1MTJUNTUgNDc3VDQ4IDQ2M1E0NCA0NjUgMzkgNDY4TDMwIDQ3M0wzNSA0ODhRNzMgNTk0IDEwNiA2MzZUMTk5IDY4NVEyMDAgNjg2IDIxMSA2ODZRMjUwIDY4NiAzMjYgNjUyVDQxNyA2MTdRNDM1IDYxNyA0NTUgNjI2VDQ5NyA2NTJUNTIyIDY3MFE1MzIgNjYwIDUzMiA2NTRRNDY5IDU5MSAzOTAgNTUwTDM3OCA1NDNMMzQzIDU1NlEyMjMgNjAxIDE5MCA2MDFaTTM3OCAyMDhRMzc4IDI0OSAzNjkgMzE4VDM2MCA0MjRRMzYwIDQzMCAzNjAgNDM5VDM2MSA0NTFMMzYyIDQ2MlE0MTYgNTI2IDQ4MiA1NzFMNDk1IDU4MEw1MDMgNTc3TDUxMSA1NzVMNDk5IDU2MlE0NDIgNTAyIDQ0MiA0NjVRNDQyIDQzNiA0NTIgMzY4VDQ2MiAyNDZRNDYyIDE2OSA0NDIgMTI4VDM4NSA1NlEyOTIgLTI2IDE5NSAtMjZRMTUwIC0yNiAxMDQgMTRMOTYgMjFMNDMgLTE2UTQzIC0xNSA0MyAtMTRUNDEgLTEwVDM4IDBMNDggMTNRNzYgNTAgMTIzIDk3TDE1MCAxMjVRMTU0IDEzMSAxNTkgMTMxUTE2NiAxMzEgMTcxIDExNlQxODIgODFUMTkzIDUzUTE5OSA0MyAyMTYgMzNUMjYxIDIyUTMwNyAyMiAzNDQgNjhRMzc4IDExMyAzNzggMjA4JyxcbiAgICAweDIxMTI6ICc1NzIgNzA0UTYwNyA3MDQgNjA3IDY5M1E2MDcgNjgxIDU5MCA2NjRINTg4UTU4NiA2NjQgNTg0IDY2NFQ1NzggNjYzUTUwNCA2NTggNDM0IDU5MlQzNjMgNDU3UTM2MyA0MjYgMzg2IDQwMVE0MTcgMzcxIDQ4MSAzNjFRNDkwIDM2MCA1MjcgMzYwSDU2MlE1NjUgMzYzIDU5NSA0MDRUNjY2IDQ5NFQ3NTUgNTk2VDg1NCA2ODJUOTQ1IDcxN1E5ODYgNzE3IDEwMTAgNjk2VDEwMzUgNjM3UTEwMzUgNTkzIDk5NiA1MzFUODczIDQxNFE4MDkgMzc4IDc1MyAzNjBUNjc0IDMzOFQ2NTEgMzMzUTY1MCAzMzMgNjMzIDMwOFQ1ODggMjQ1VDU0NCAxODVRNDk4IDEyNiA0MjYgNzhMNDEzIDY4SDQxNFE0OTggNDcgNTc1IDQ3UTYyNiA0NyA2NzYgNzRUNzU1IDEzOUw3NjIgMTQ4SDc3OUg3ODNRODAyIDE0OCA4MDIgMTQyUTgwMiAxMzcgNzk1IDEyOVE3NjAgODEgNjkxIDMzVDU0NCAtMTZRNDcwIC0xNiAzNjYgMjBMMzQxIDI5TDMzMSAyNFEyMzkgLTE3IDE1NSAtMTdIMTQxUTkwIC0xNyA2MSAtMTJUMjMgMVQxNCAyMlExNCA0NCAzOSA2NVQxMDMgOTVRMTI2IDEwMSAxODAgMTAxUTIyNCAxMDEgMjU4IDk4VDMwOSA5MFQzMzAgODZRMzMyIDg2IDM1MyAxMDNUMzg5IDEzNVE0MDEgMTQ2IDQxMiAxNThUNDMxIDE3OVQ0NTAgMjAzVDQ2NiAyMjVUNDg1IDI1MlQ1MDUgMjgwTDUzNSAzMjJINTA5UTM5MSAzMjIgMzQwIDM2MlQyODkgNDUyUTI4OSA0OTUgMzIxIDU0N1QzOTYgNjMwUTQzOCA2NjUgNDg2IDY4NFQ1NzIgNzA0Wk05NzggNjM1UTk3OCA2NDQgOTc3IDY1MFQ5NzMgNjYxVDk2OCA2NjhUOTYxIDY3M1Q5NTQgNjc2VDk0NiA2NzhUOTM4IDY4MFE5MjkgNjgwIDkyNSA2NzdRODkzIDY1OSA3OTUgNTMxVDY4MiAzNzdRNjgzIDM3NyA3MTEgMzg1VDc1NSA0MDFUODAxIDQyMVQ4NTYgNDUzVDkwNiA0OTVROTI3IDUxNiA5NTIgNTU3VDk3OCA2MzVaTTI3NCA1MFEyNzQgNTEgMjU4IDU0VDIxNiA2MVQxNjYgNjVRMTYwIDY1IDE1MSA2NVQxNDAgNjRRMTE1IDU4IDEwMiA0OFQ4OCAzMVE4OCAyMCAxNTkgMjBRMTkxIDIwIDIxOSAyN1QyNjEgNDJMMjc0IDUwJyxcbiAgICAweDIxMTM6ICczNDUgMTA0VDM0OSAxMDRUMzYxIDk1VDM2OSA4MFQzNTIgNTlRMjY4IC0yMCAyMDYgLTIwUTE3MCAtMjAgMTQ2IDNUMTEzIDUzVDk5IDEwNEw5NCAxMjlROTQgMTMwIDc5IDExNlQ0OCA4NlQyOCA3MFEyMiA3MCAxNSA3OVQ3IDk0UTcgOTggMTIgMTAzVDU4IDE0N0w5MSAxNzlWMTg1UTkxIDE4NiA5MSAxOTFUOTIgMjAwUTkyIDI4MiAxMjggNDAwVDIyMyA2MTJUMzM2IDcwNVEzOTcgNzA1IDM5NyA2MzZWNjI3UTM5NyA0NTMgMTk0IDIzM1ExODUgMjIzIDE4MCAyMThUMTc0IDIxMVQxNzEgMjA4VDE2NSAyMDFMMTYzIDE4NlExNTkgMTQyIDE1OSAxMjNRMTU5IDE3IDIwOCAxN1EyMjggMTcgMjUzIDMwVDI5MyA1NlQzMzUgOTRRMzQ1IDEwNCAzNDkgMTA0Wk0zNjAgNjM0UTM2MCA2NTUgMzU0IDY2MVQzMzYgNjY4UTMyOCA2NjggMzIyIDY2NlQzMDIgNjQ1VDI3MiA1OTJRMjUyIDU0NyAyMjkgNDY3VDE5MiAzMzBMMTc5IDI3M1ExNzkgMjcyIDE4NiAyODBUMjA0IDMwMFQyMjEgMzIyUTMyNyA0NTMgMzU1IDU5MFEzNjAgNjEyIDM2MCA2MzQnLFxuICAgIDB4MjExNTogJzIwIDY2NFEyMCA2NjYgMzEgNjgzSDE0MlEyNTYgNjgzIDI1OCA2ODFRMjU5IDY4MCAyNzkgNjUzVDM0MiA1NzJUNDIyIDQ2OEw1ODIgMjU5VjQyNVE1ODIgNDUxIDU4MiA0OTBUNTgzIDU0MVE1ODMgNjExIDU3MyA2MjhUNTIyIDY0OFE1MDAgNjQ4IDQ5MyA2NTRRNDg0IDY2NSA0OTMgNjc5TDUwMCA2ODNINjkxUTcwMiA2NzYgNzAyIDY2NlE3MDIgNjU3IDY5OCA2NTJRNjg4IDY0OCA2ODAgNjQ4UTYzMyA2NDggNjI3IDYxMlE2MjQgNjAxIDYyNCAyOTRWLThRNjE2IC0yMCA2MDcgLTIwUTYwMSAtMjAgNTk2IC0xNVE1OTMgLTEzIDM3MSAyNzBMMTU2IDU0OEwxNTMgMzE5UTE1MyAyODQgMTUzIDIzNFQxNTIgMTY3UTE1MiAxMDMgMTU2IDc4VDE3MiA0NFQyMTMgMzRRMjM2IDM0IDI0MiAyOFEyNTMgMTcgMjQyIDNMMjM2IC0xSDM2UTI0IDYgMjQgMTZRMjQgMzQgNTYgMzRRNTggMzUgNjkgMzZUODYgNDBUMTAwIDUwVDEwOSA3MlExMTEgODMgMTExIDM0NVY2MDNMOTYgNjE5UTcyIDY0MyA0NCA2NDhRMjAgNjQ4IDIwIDY2NFpNNDEzIDQxOUwyNDAgNjQ4SDEyMEwxMzYgNjI4UTEzNyA2MjYgMzYxIDM0MVQ1ODcgNTRMNTg5IDY4UTU4OSA3OCA1ODkgMTIxVjE5Mkw0MTMgNDE5JyxcbiAgICAweDIxMTg6ICczMDAgNzRRMzAwIDEzMyAzMzggMTMzUTM1MCAxMzMgMzU2IDEyNlQzNjMgMTA5UTM2MyA4OCAzNDAgNzZRMzQwIDcxIDM0MiA2MlQzNTggMzlUMzkzIDI2UTQzNSAyNiA0NzQgNjdUNTMyIDE4MlQ1NTEgMjkwUTU1MSAzMjUgNTM1IDM0OVQ0ODQgMzczUTQzMCAzNzMgMzc4IDM0OFQyOTEgMjg5VDIyOCAyMThUMTg3IDE1N1QxNzQgMTMwUTI1NCAzMCAyNjUgMTBRMjc2IC0xNSAyNzYgLTQxUTI3NiAtMTAxIDIzNSAtMTU4VDE0MiAtMjE2UTExMiAtMjE2IDkwIC0xOTVUNjcgLTExOFE2NyAtNDAgMTA0IDY0TDExMCA4MVE4MSAxMTggODEgMTc0UTgxIDI2OCAxMzQgMzYwVDI0NyA0NTNRMjUyIDQ1MyAyNTUgNDUxVDI1OCA0NDdMMjU5IDQ0NVEyNTkgNDMyIDI1MyA0MjBRMjUxIDQxNiAyNDIgNDE2UTIwOSA0MTEgMTc2IDM0MVQxNDIgMjAzUTE0MiAxOTMgMTQzIDE4NFQxNDYgMTcwVDE0OSAxNjVMMTU4IDE4MFEyMTUgMjgwIDMwMyAzNDVUNDg1IDQxMFE1NDggNDEwIDU4NiAzNjhUNjI1IDI1NVE2MjUgMTU3IDU1MyA3NFQzODkgLTEwSDM4M1EzNDkgLTEwIDMyNSAxNFEzMDIgMzcgMzAwIDc0Wk0xMDUgLTEyM1ExMDUgLTEzNCAxMDYgLTE0MVQxMTAgLTE1OFQxMjIgLTE3M1QxNDUgLTE3OFExNTUgLTE3OCAxNjAgLTE3NlExODQgLTE2MyAxOTkgLTEzMlQyMTQgLTczUTIxNCAtNjkgMjE0IC02NlQyMTMgLTU5VDIxMiAtNTNUMjA5IC00N1QyMDUgLTQxVDE5OSAtMzNUMTkzIC0yNVQxODQgLTE0VDE3NCAtMUwxNjUgMTBRMTU2IDIyIDE0OCAzMkwxMzkgNDNRMTM4IDQzIDEzMCAxNVQxMTMgLTU0VDEwNSAtMTIzJyxcbiAgICAweDIxMTk6ICcxNiA2NjZRMTYgNjc1IDI4IDY4M0gxOTVRMzM0IDY4MyAzNzAgNjgyVDQzNyA2NzJRNTExIDY1NyA1NTQgNjExVDU5NyA0OTVRNTk3IDM0MyA0MDQgMzA5UTQwMiAzMDggNDAxIDMwOFEzODEgMzAzIDMxOSAzMDNIMjYxVjE4MVEyNjEgMTU3IDI2MiAxMjBRMjYyIDYwIDI2NyA1MFQzMDQgMzZRMzEwIDM1IDMxMyAzNVEzNTIgMzUgMzUyIDE3UTM1MiAxMCAzNDYgM0wzMzkgLTFIMjhRMTYgNSAxNiAxNlExNiAzNSA1MyAzNVE2OCAzNiA3NSAzN1Q4NyA0MlQ5NSA1MlE5OCA2MSA5OCAzNDFUOTUgNjMwUTkxIDY0MCA4MyA2NDNUNTMgNjQ4UTE2IDY0OCAxNiA2NjZaTTIzNSAzNVEyMjggNDYgMjI3IDg0UTIyNiAxMjkgMjI2IDMzN1Y2MjFMMjMwIDYzNUwyMzcgNjQ4SDEyOFExMjggNjQ3IDEzMyA2MzJRMTM2IDYyMCAxMzYgMzQxUTEzNiA2NCAxMzMgNTBMMTI4IDM1SDIzNVpNMzAxIDM0MUgzMTNRMzM5IDM0MSAzNTQgMzQ0VDM4OSAzNjJUNDE3IDQxMFQ0MjYgNDk4UTQyNiA1ODYgNDAxIDYxNlQzMjIgNjQ3UTMwMSA2NDcgMjkzIDY0M1EyNzEgNjM3IDI2NCA2MjFRMjYxIDYxNyAyNjEgNDc5VjM0MUgzMDFaTTQyOSAzNTBRNDMxIDM1MCA0NDMgMzUzVDQ3NiAzNjdUNTE1IDM5MVQ1NDggNDMyVDU2MiA0OTBRNTYyIDU1MCA1MjQgNTkyUTUwNyA2MDcgNDg0IDYxOVE0ODEgNjIxIDQ0OCA2MzVMNDMzIDYzOUw0MzkgNjIxUTQ2MiA1NzggNDYyIDUwNlE0NjIgNDQ4IDQ1NCA0MTNUNDM3IDM2NlQ0MjggMzUwSDQyOScsXG4gICAgMHgyMTFBOiAnNDgwIC0xMFE0ODAgLTEzIDQ4NiAtMjRUNTA3IC01MFQ1NDEgLTgwVDU4OCAtMTA0VDY0OCAtMTE0UTY2NiAtMTE0IDY4OCAtMTEwVDcxNCAtMTA2UTcyNCAtMTA2IDcyOCAtMTE0VDcyOSAtMTMwUTcyMyAtMTQ1IDY2MyAtMTYzVDU0OCAtMTgxUTUwMyAtMTgxIDQ2MyAtMTY5VDM5NSAtMTM5VDM0MyAtOTdUMzA3IC01NlQyODQgLTE5TDI4MCAtM0wyNjIgMVExODggMjQgMTMxIDgxUTU3IDE1NSAzNyAyNzVRMzQgMjkyIDM0IDM0MlQzNyA0MTBRNTggNTI4IDEzMSA2MDFRMTc5IDY1MiAyNDggNjc2VDM4OCA3MDFRNDg1IDcwMSA1NjIgNjYxUTY5OCA1OTUgNzMxIDQ0OFE3NDIgNDEwIDc0MiAzNDFUNzMxIDIzNVE3MDcgMTQxIDY0NiA4MVE2MTYgNTAgNTc1IDI3VDQ5MyAtNUw0ODAgLTEwWk01NjggMzQyUTU2OCA2MTMgNDM3IDY1OUwzOTUgNjY2UTMyOSA2NjYgMjg2IDYyNlEyMzIgNTcwIDIxMyA0MzlRMjEwIDQwOCAyMTAgMzQyVDIxMyAyNDZRMjMxIDExMyAyODYgNTdRMzA5IDM3IDM0MiAyM1EzNTcgMTkgMzg5IDE5UTQyMCAxOSA0MzcgMjNRNDY5IDM4IDQ5MSA1N1E1NjggMTM0IDU2OCAzNDJaTTE3NCAzNDFWMzU0UTE3NCAzOTMgMTc1IDQxOVQxODMgNDg0VDIwNSA1NjFUMjQ2IDYzNUwyNDkgNjM5UTI0NiA2MzkgMjI0IDYyN1QxOTMgNjA4UTE4OSA2MDYgMTgzIDYwMVQxNjkgNTg5VDE1NSA1NzdRNjkgNDkxIDY5IDM0NFE2OSAxMzMgMjMxIDUyUTI0NyA0MiAyNDcgNDZRMjQ3IDQ2IDI0NiA0OFEyMzEgNjkgMjIyIDg1VDIwMCAxNDFUMTc3IDIzOVExNzQgMjY5IDE3NCAzNDFaTTcwOCAzNDFRNzA4IDQxMCA2ODkgNDY3VDY0MCA1NTZUNTg4IDYwNlQ1NDYgNjMwUTUzMiA2MzggNTMxIDYzOFE1MzAgNjM4IDUzMSA2MzVRNTYzIDU5MCA1NzcgNTQzUTYwMiA0NzIgNjAyIDM0MVYzMTZRNjAyIDI2NCA1OTkgMjMwVDU4MCAxNDRUNTMxIDQ4UTUyOSA0NCA1MzIgNDVUNTQ2IDUyUTU3NSA2OCA1OTYgODRUNjQyIDEyOFQ2ODMgMjAwVDcwNiAyOTlRNzA4IDMyNyA3MDggMzQxWk0zOTEgLTE3SDMzM1EzMjkgLTE1IDMyNiAtMTVRMzI0IC0xNSAzMjQgLTE3UTMyNCAtMjEgMzYyIC02OFE0MjQgLTEzMCA1MDYgLTE0M1E1MTggLTE0NCA1NDQgLTE0NFE1NjkgLTE0NCA1NzcgLTE0M0w1ODkgLTE0MUw1NzUgLTEzOVE1NDQgLTEyNyA1MDkgLTEwMVQ0NTMgLTM3TDQ0MiAtMTlMMzkxIC0xNycsXG4gICAgMHgyMTFCOiAnMjI0IDI2NlExODUgMjY2IDE1NiAyODZUMTI3IDM1NFExMjcgNDE5IDE3NiA0ODdUMjgyIDU5NFEzNDYgNjQyIDQzMyA2NzlUNjE1IDcxN1E3MzIgNzE3IDgwMiA2ODBMODE1IDY3M1E4MjQgNjgwIDg0MCA2OTBUODYwIDcwMFE4NjQgNzAwIDg2NyA2OTNUODcyIDY4MEw4NzMgNjczUTg3MyA2NjggODU4IDY1OUw4NDUgNjUxTDg1MyA2NDJRODg3IDYwNSA4ODcgNTYxUTg4NyA1MDAgODQwIDQzOVE3OTAgMzc5IDY4MSAzMzZRNjkzIDMxMiA2OTMgMjkyUTY5MiAyNzYgNjg5IDI2M1Q2NzIgMjI5VDY1MyAxOThUNjIwIDE1Mkw1NzUgODdRNTU3IDU3IDU1NyAzM1E1NTcgMjQgNTYwIDE3VDU2NiA4TDU2OSA1UTU0NiA1IDUwOCAyNVQ0NzAgNzZRNDcwIDgzIDQ3MyA5MlQ1NDUgMTk4VDYxNiAzMTBRNjE2IDMxNyA2MTUgMzE4VDYxMiAzMTlRNjAzIDMxOSA1NzUgMzE1SDU2MEw1NDUgMjkxUTQ5MiAyMDEgNDI5IDEzNVQyNzcgMjNRMjAyIC0xNyAxNDIgLTE3SDEzMFE1MCAtMTcgMTYgMTdRLTIgMzUgLTIgNTdRLTIgOTUgMjQgMTI2VDg4IDE1OFExMDYgMTU4IDExNiAxNDdUMTI3IDEyMVExMjcgMTEwIDEyMiAxMDJRMTE2IDkzIDk5IDg0VDYzIDc1UTU4IDc1IDUzIDc2VDQ3IDc3VDQ1IDc1VDQ0IDY3UTQ1IDUyIDU3IDQyVDg4IDI3VDEyMCAyMVQxNDQgMTlRMTc0IDE5IDIwOCAzNlQyNjcgNzZUMzI0IDEzNFQzNjkgMTg5VDQwNiAyMzlRNDYyIDMxOSA1MDQgMzc0VDYxNiA1MDNUNzU1IDYzMUw3NzAgNjQ0UTc2NyA2NDcgNzUzIDY1NFQ2OTcgNjcwVDYwMiA2ODBRNDkzIDY4MCAzOTkgNjMxVDI0NyA1MTZRMjE4IDQ4NSAxOTMgNDQwVDE2OCAzNTlRMTY4IDMyOCAxODggMzE2VDIzNCAzMDNRMjU1IDMwMyAyNzMgMzE1VDMwNCAzNDBUMzQzIDM4OVQzOTAgNDQ4UTQyOCA0OTAgNDQxIDUxMFQ0NTYgNTQ4UTQ1NiA1NTcgNDU4IDU1OVE0NTkgNTYwIDQ3NiA1NjdUNDk2IDU3NVE1MDUgNTc1IDUwNSA1NThRNTA1IDUxMSA0MzQgNDEyUTQyOSA0MDYgNDI3IDQwM1EzOTcgMzYwIDM3OCAzNDNRMzQyIDMwOCAzMDAgMjg3VDIyNCAyNjZaTTgxOSA1NjRRODE5IDU5NSA4MDAgNjE5TDc4NCA2MDZRNzI5IDU1NyA2OTIgNTEyVDYwNSAzODdMNTkxIDM2NUw2MTAgMzY0UTYyMiAzNjQgNjMxIDM2M1Q2NDEgMzYxUTY0MyAzNjEgNjUxIDM2M1E3MjUgMzg4IDc3MiA0NDlUODE5IDU2NFpNNzk0IDE0MVE3OTQgMTIzIDcyNSA2M1Q2MTIgM1E2MDkgMyA2MTIgNVE2MTIgNSA2MTUgN1E2MzkgMTkgNjc4IDU3VDc0MiAxMzFMNzU1IDE0OEg3NzJINzgwUTc5NCAxNDggNzk0IDE0MVpNNTg4IC0zUTU5MCAwIDU5MyAwSDU5NEw1OTMgLTFRNTkyIC0xIDU5MCAtMkw1ODggLTMnLFxuICAgIDB4MjExQzogJzI3IDQ5NlEzMSA1NjkgMTAyIDYyN1QyMzQgNjg1UTIzNiA2ODUgMjQxIDY4NVQyNTEgNjg2UTI4NyA2ODYgMzE4IDY3MlQzNjcgNjM4VDM5OSA1OThUNDE4IDU2NEw0MjMgNTUwUTQyNCA1NTQgNDM0IDU2N1Q0NjMgNjAxVDUwNSA2MzlUNTYxIDY3MVQ2MjYgNjg1UTY3MiA2ODUgNjg4IDY1OVQ3MTAgNTcyUTcxMyA1MzMgNzIxIDUyM1Q3NjYgNTEzUTc4MSA1MTMgNzg3IDUxNFQ3OTQgNTE2UTc5NiA1MTIgNzk4IDUwOVQ4MDEgNTA0VDgwMiA1MDFUNzg3IDQ5M1E3MDIgNDYxIDYyNCA0MDFMNjA3IDM4OVE2NTUgMzgzIDY4OCAzNThMNjk3IDM1MlYzNDJRNjk5IDMzMCA2OTkgMjk3UTcwNCAyMDkgNzEwIDE3M1Q3MzQgMTAzUTc1MSA2OSA3NjUgNjlRNzY5IDY5IDgwNiA4M0w4MjQgOTBWNzRRODIzIDczIDc1OSAyNFQ2OTMgLTI2UTY5MiAtMjYgNjYwIDMyTDYyOCA5MEw2MjkgMTExUTYzMSAxNTkgNjMxIDE3N1E2MzEgMjc4IDYxNCAzMDBRNTg0IDM0MCA1MjMgMzQwUTUwMCAzNDAgNDY3IDMzM1Q0MzEgMzI1UTQyOSAzMjUgNDI5IDMyMlE0MjggMzIxIDQyNiAzMDhUNDIwIDI3NVQ0MTAgMjMwVDM5MiAxNzhUMzY2IDEyNUwzNTggMTEyTDM0MiA5OVEzMDYgNzAgMjY5IDM4VDIxMyAtMTBUMTkzIC0yNlExOTIgLTI2IDE2MyAwVDExNiAyNlE4MiAyNiA1MCAtOEw0MiAtMTZMMzUgLThMMjcgMEwzNSAxMFE0MyAyMSA1OCAzOFQxMDQgODBUMTU4IDEwNlExNzkgMTA2IDIxOCA2NUwyMzUgNDhRMjM4IDQ4IDI1NSA2MFQyOTUgOTlUMzI5IDE1OFEzNTIgMjMxIDM1MiAzNTlRMzUyIDU1NSAyNDIgNjE0UTIxMCA2MjggMTg3IDYyOFExNDAgNjI4IDExNiA2MDBUOTEgNTQ4UTkxIDUyMiAxMzggNDY0VDE4NSAzODJWMzc2UTE4NSAzNDUgMTU4IDMxM1QxMDMgMjYzTDc2IDI0NlE3NCAyNDQgNjQgMjUzTDU0IDI2MEw2NSAyNjdROTEgMjg1IDEwMCAzMDJRMTExIDMxOCAxMTEgMzM3UTExMSAzNTUgNjkgNDEwVDI3IDQ5NlpNNTYyIDYyOFE1MDQgNjI4IDQ0MyA1MDdMNDM1IDQ5MUw0MzYgNDc5UTQzNyA0NzEgNDM3IDQ0NlE0MzcgMzk2IDQzMiAzNTFMNTI5IDM4OUw2MDIgNDI2UTY3MyA0NjIgNjczIDQ2M0g2NzJRNjQ0IDQ3MCA2MzcgNDgzVDYyMiA1NTNRNjA4IDYyOCA1NjIgNjI4JyxcbiAgICAweDIxMUQ6ICcxNyA2NjVRMTcgNjcyIDI4IDY4M0gyMjFRNDE1IDY4MSA0MzkgNjc3UTQ2MSA2NzMgNDgxIDY2N1Q1MTYgNjU0VDU0NCA2MzlUNTY2IDYyM1Q1ODQgNjA3VDU5NyA1OTJUNjA3IDU3OFQ2MTQgNTY1VDYxOCA1NTRMNjIxIDU0OFE2MjYgNTMwIDYyNiA0OTdRNjI2IDQ0NyA2MTMgNDE5UTU3OCAzNDggNDczIDMyNkw0NTUgMzIxUTQ2MiAzMTAgNDczIDI5MlQ1MTcgMjI2VDU3OCAxNDFUNjM3IDcyVDY4NiAzNVE3MDUgMzAgNzA1IDE2UTcwNSA3IDY5MyAtMUg1MTBRNTAzIDYgNDA0IDE1OUwzMDYgMzEwSDI2OFYxODNRMjcwIDY3IDI3MSA1OVEyNzQgNDIgMjkxIDM4UTI5NSAzNyAzMTkgMzVRMzQ0IDM1IDM1MyAyOFEzNjIgMTcgMzUzIDNMMzQ2IC0xSDI4UTE2IDUgMTYgMTZRMTYgMzUgNTUgMzVROTYgMzggMTAxIDUyUTEwNiA2MCAxMDYgMzQxVDEwMSA2MzJROTUgNjQ1IDU1IDY0OFExNyA2NDggMTcgNjY1Wk0yNDEgMzVRMjM4IDQyIDIzNyA0NVQyMzUgNzhUMjMzIDE2M1QyMzMgMzM3VjYyMUwyMzcgNjM1TDI0NCA2NDhIMTMzUTEzNiA2NDEgMTM3IDYzOFQxMzkgNjAzVDE0MSA1MTdUMTQxIDM0MVExNDEgMTMxIDE0MCA4OVQxMzQgMzdRMTMzIDM2IDEzMyAzNUgyNDFaTTQ1NyA0OTZRNDU3IDU0MCA0NDkgNTcwVDQyNSA2MTVUNDAwIDYzNFQzNzcgNjQzUTM3NCA2NDMgMzM5IDY0OFEzMDAgNjQ4IDI4MSA2MzVRMjcxIDYyOCAyNzAgNjEwVDI2OCA0ODFWMzQ2SDI4NFEzMjcgMzQ2IDM3NSAzNTJRNDIxIDM2NCA0MzkgMzkyVDQ1NyA0OTZaTTQ5MiA1MzdUNDkyIDQ5NlQ0ODggNDI3VDQ3OCAzODlUNDY5IDM3MVQ0NjQgMzYxUTQ2NCAzNjAgNDY1IDM2MFE0NjkgMzYwIDQ5NyAzNzBRNTkzIDQwMCA1OTMgNDk1UTU5MyA1OTIgNDc3IDYzMEw0NTcgNjM3TDQ2MSA2MjZRNDc0IDYxMSA0ODggNTYxUTQ5MiA1MzcgNDkyIDQ5NlpNNDY0IDI0M1E0MTEgMzE3IDQxMCAzMTdRNDA0IDMxNyA0MDEgMzE1UTM4NCAzMTUgMzcwIDMxMkgzNDZMNTI2IDM1SDYxOUw2MDYgNTBRNTUzIDEwOSA0NjQgMjQzJyxcbiAgICAweDIxMjQ6ICczOSAtMVEyOSA5IDI5IDEyUTI5IDIzIDYwIDc3VDIxOSAzMzdMNDEwIDY0OEgzNjRRMjYxIDY0OCAyMTAgNjI4UTE2OCA2MTIgMTQyIDU4OFQxMDkgNTQ1VDk3IDUwOVQ4OCA0OTBRODUgNDg5IDgwIDQ4OVE3MiA0ODkgNjEgNTAzTDcwIDU4OFE3MiA2MDcgNzUgNjI4VDc5IDY2MlQ4MSA2NzVRODQgNjc3IDg4IDY4MVE5MCA2ODMgMzQxIDY4M0g1OTJRNjA0IDY3MyA2MDQgNjY2UTYwNCA2NjIgNDEyIDM0OEwyMjEgMzdRMjIxIDM1IDMwMSAzNVE0MDYgMzUgNDQ2IDQ4UTUwNCA2OCA1NDMgMTExVDU5NyAyMTJRNjAyIDIzOSA2MTcgMjM5UTYyNCAyMzkgNjI5IDIzNFQ2MzUgMjIzUTYzNSAyMTUgNjIxIDExM1Q2MDQgOEw1OTcgMVE1OTUgLTEgMzE3IC0xSDM5Wk0xNDggNjM3TDE2NiA2NDhIMTEyVjYzMlExMTEgNjI5IDExMCA2MjJUMTA4IDYxMlExMDggNjA4IDExMCA2MDhUMTE2IDYxMlQxMjkgNjIzVDE0OCA2MzdaTTU1MiA2NDZRNTUyIDY0OCA1MDQgNjQ4UTQ1MiA2NDggNDUwIDY0M1E0NDggNjM5IDI2NiAzNDNUNzcgMzdRNzcgMzUgMTI4IDM1SDE3OUwzNjYgMzM5TDU1MiA2NDZaTTU3MiAzNVE1ODEgODkgNTgxIDk3TDU2MSA3N1E1NDIgNTkgNTI2IDQ4TDUwOCAzN0w1MzkgMzVINTcyJyxcbiAgICAweDIxMjY6ICc1NSA0NTRRNTUgNTAzIDc1IDU0NlQxMjcgNjE3VDE5NyA2NjVUMjcyIDY5NVQzMzcgNzA0SDM1MlEzOTYgNzA0IDQwNCA3MDNRNTI3IDY4NyA1OTYgNjE1VDY2NiA0NTRRNjY2IDM5MiA2MzUgMzMwVDU1OSAyMDBUNDk5IDgzVjgwSDU0M1E1ODkgODEgNjAwIDgzVDYxNyA5M1E2MjIgMTAyIDYyOSAxMzVUNjM2IDE3Mkw2MzcgMTc3SDY3N1YxNzVMNjYwIDg5UTY0NSAzIDY0NCAyVjBINTUySDQ4OFE0NjEgMCA0NTYgM1Q0NTEgMjBRNDUxIDg5IDQ5OSAyMzVUNTQ4IDQ1NVE1NDggNTEyIDUzMCA1NTVUNDgzIDYyMlQ0MjQgNjU2VDM2MSA2NjhRMzMyIDY2OCAzMDMgNjU4VDI0MyA2MjZUMTkzIDU2MFQxNzQgNDU2UTE3NCAzODAgMjIyIDIzM1QyNzAgMjBRMjcwIDcgMjYzIDBINzdWMlE3NiAzIDYxIDg5TDQ0IDE3NVYxNzdIODRMODUgMTcyUTg1IDE3MSA4OCAxNTVUOTYgMTE5VDEwNCA5M1ExMDkgODYgMTIwIDg0VDE3OCA4MEgyMjJWODNRMjA2IDEzMiAxNjIgMTk5VDg3IDMyOVQ1NSA0NTQnLFxuICAgIDB4MjEyNzogJzEyNiA1ODRRMTE5IDU4NCAxMTAgNTM5VDk3IDQ5M1E5NSA0OTAgNzMgNDkwUTQ0IDQ5MCA0NCA1MDFRNDQgNTE1IDYyIDU5MFE3NSA2NzIgODIgNjc5UTg0IDY4NCAxNzcgNjg0UTE5MyA2ODQgMjE0IDY4NFQyNDEgNjg1UTI2NSA2ODUgMjcxIDY4MlQyNzcgNjY0VjY0OFEyNzEgNTcyIDIyOSA0MzRUMTg2IDIzMVExODYgMTczIDIwMyAxMzJUMjQ3IDcwVDMwMiA0MlQzNjAgMzNRMzkxIDMzIDQxOSA0MlQ0NzQgNzJUNTE3IDEzM1Q1MzMgMjMxUTUzMyAyOTcgNDkxIDQzN1Q0NDIgNjQ4UTQ0MiA2NzUgNDQ2IDY3OVE0NDggNjg0IDU0MiA2ODRRNjM1IDY4NCA2MzcgNjgxUTY0MCA2NzggNjU3IDU5NFQ2NzUgNTAxUTY3NSA0OTAgNjQ2IDQ5MFE2MjQgNDkwIDYyMiA0OTNRNjIwIDQ5MyA2MDkgNTM4VDU5MyA1ODRRNTkxIDU4NSA1ODUgNTg1VDU2OSA1ODZUNTUxIDU4OEg1MTNRNTE0IDU4NiA1MTggNTczVDUzOCA1MzFUNTgyIDQ1M1E2NDcgMzQwIDY2MCAyNzdRNjYzIDI1OSA2NjMgMjMyUTY2MyAxOTQgNjU3IDE3N1E2NTIgMTUxIDYyOSAxMTJUNTYwIDM5UTQ5NSAtNSA0MjQgLTE5UTQwMyAtMjIgMzYwIC0yMlEzMTggLTIyIDI5NyAtMTlRMjM5IC04IDE5MyAxOFQxMjAgNzRUODAgMTMxVDYyIDE3N1E1NiAxOTQgNTYgMjI5UTU2IDI4MSA3NCAzMjhUMTM3IDQ1M1ExNjAgNDkxIDE3NCA1MThUMTkzIDU1NVQyMDEgNTc1VDIwNiA1ODhIMTY4UTE2MCA1ODcgMTUwIDU4N1QxMzQgNTg2VDEyNiA1ODQnLFxuICAgIDB4MjEyODogJzE0OCA1OTBROTUgNTkyIDkxIDYyN1Y2MzNMMTYwIDcyOUgxNzZRMTY5IDcxMyAxNjkgNzA1UTE2OSA2NzAgMjQ0IDY3MFEyNjkgNjcwIDMwNSA2NzJUMzU3IDY3NVE0MDUgNjc1IDQzMiA2NjFUNDY4IDYwOVE0NjkgNjA1IDQ2OSA1OTZRNDY5IDU3MiA0NjAgNTQwUTQzMyA0NjMgMzAxIDM3MlEzMjUgMzc4IDM1OSAzNzhRNDMxIDM3OCA0NzIgMzUwVDUxOSAyOTdRNTMyIDI0OSA1MzIgMTk4UTUzMiAxMTUgNTAwIDQwVDQ0MiAtNTdRMzM1IC0xMzkgMjAyIC0xMzlRMTY1IC0xMzkgMTI1IC0xMzFMMTEyIC0xMjlWLTEwMFExMTIgLTQ5IDEwNiAtMzNUNzUgLTE3UTU1IC0xNyAzMSAtMzVMMjIgLTQyTDExIC0yNkwyMiAtMThROTQgMzYgMTUxIDM2SDE2MFExNzEgMzYgMTc4IDMzVDE4OCAyN1QxOTQgMTNUMTk2IC01VDE5NyAtMzJRMTk4IC03OSAyMDYgLTkwUTIxNyAtMTA3IDI1MSAtMTA3UTMzNiAtMTA3IDM4OSAtMzNUNDQyIDE1NVE0NDIgMjQwIDQwNyAyNzRRMzYyIDMxOSAyODUgMzE5UTIzNiAzMTkgMTkyIDI5OFExODggMjk4IDE4MSAzMDlMMjI0IDM3MlEyMjcgMzczIDIzNCAzNzRUMjQ2IDM3NlQyNTcgMzc5VDI3MSAzODRUMjg1IDM5MVQzMDIgNDAyVDMyMSA0MTdRMzg0IDQ3MSAzODQgNTQwUTM4NCA1NjIgMzY2IDU4MVQzMDYgNjAwUTI5MiA2MDAgMjMzIDU5NVQxNDggNTkwJyxcbiAgICAweDIxMkM6ICcyNTYgMjYyUTE2MSAyNjIgMTYxIDM1MVExNjEgNDA4IDIwMyA0NzFUMjg5IDU3MFEzODAgNjQ1IDQ3NSA2NzZUNjE3IDcwN0w2MjcgNzA4UTYzNyA3MDggNjQ0IDcwOFE3NTkgNzA4IDgzMSA2NzVMODQ0IDY2OUw4NTcgNjc3UTg5MiA3MDAgODk2IDcwMFE5MDIgNzAwIDkwNyA2ODVROTA3IDY4MyA5MDcgNjgxVDkwOCA2NzhUOTA5IDY3NlQ5MDkgNjczUTkwOSA2NzEgOTA5IDY3MFQ5MDYgNjY3VDkwMyA2NjRUODk3IDY2MFQ4ODkgNjU1TDg3OCA2NDdMODg5IDYzNlE5MjggNTk4IDkyOCA1NDhROTI4IDUyOSA5MjMgNTEwVDkwNyA0NzRUODg2IDQ0MlQ4NjEgNDEyVDgzNyAzODhUODE1IDM2OFQ4MDAgMzU1UTg0NyAzMjMgODQ3IDI3MFYyNjNRODQ3IDIwNSA4MDYgMTQ1UTc2NiA4MiA2OTUgMzdUNTY0IC04UTUyNyAtOCA1MDYgMTBUNDg0IDU4UTQ4NCA4NSA1MDEgMTE3VDU0MyAxNzJRNjA3IDIyNiA2ODUgMjI4UTY5NSAyMjggNjk4IDIyNlE3MDMgMjIwIDY5MiAyMDZRNjg0IDE5NCA2ODIgMTkzVDY2NSAxOTFRNjI1IDE4OSA1OTUgMTcyVDU1MCAxMzNUNTI5IDkzVDUyMiA2NlE1MjIgMjkgNTc2IDI5UTY0MiAyOSA3MDUgMTA5UTc4NSAyMTEgNzg1IDI3MFE3ODUgMjg3IDc3OSAzMDBUNzY5IDMxNlQ3NTUgMzI3TDc0MCAzMTlRNjgyIDI5MCA2MzQgMjkwUTYxMSAyOTAgNTkyIDI5NEg1ODhMNTY1IDI2MVE1NTkgMjUyIDU0NCAyMzFUNTIyIDIwMVQ1MDQgMTc4VDQ4MSAxNTFUNDU1IDEyM1EzOTQgNjMgMzE0IDE4VDE1OSAtMjhRMTAzIC0yOCA2NyAtNlQzMSA1NFEzMSA4OCA1NyAxMjNUMTIzIDE1OFExNDQgMTU4IDE1NCAxNDZUMTY0IDExOVExNjQgMTAyIDE0MiA4OVQxMDAgNzVROTQgNzUgODcgNzdUNzYgODBMNzIgODFRNjkgNzggNjkgNjVRNjkgMzUgMTAyIDIyVDE3NSA5UTE4NCA5IDE5OCAxMVEyNDggMjMgMzAwIDcwVDQwMyAxODdUNTA4IDMzMVQ2MzYgNDg5VDc4OSA2MjlMODAxIDYzOVE3OTYgNjQyIDc4NiA2NDdUNzMyIDY2MVQ2MzMgNjcwUTU5MiA2NzAgNTU4IDY2NVE0ODEgNjUxIDQwOSA2MTNUMjg2IDUyMFEyNzQgNTA3IDI1OCA0ODVUMjIyIDQyNFQyMDIgMzU0UTIwMiAyOTkgMjY5IDI5OVEyODIgMjk5IDI5NSAzMDFUMzE4IDMwN1QzMzkgMzE3VDM1OCAzMjlUMzc2IDM0NVQzOTEgMzYyVDQwNiAzODBUNDIwIDM5OFQ0MzMgNDE3VDQ0NSA0MzVRNDk2IDUxMiA0OTYgNTQ3UTQ5NiA1NTkgNDk3IDU2MFQ1MTYgNTY5UTUyNiA1NzQgNTMwIDU3NFE1MzggNTc0IDUzOCA1NDBRNTM4IDQxNCA0MjcgMzI1UTM0MiAyNjIgMjU2IDI2MlpNNjg5IDM4MlE3MDggMzgyIDc1MyAzNzVMNzY1IDM4N1E4NjAgNDgyIDg2MCA1NTVRODYwIDU5NCA4MzkgNjEwTDgyMiA1OTJRNzk0IDU2MyA3NTIgNTExVDY4MCA0MjBUNjUxIDM4MFE2NTUgMzgxIDY2MCAzODFRNjY0IDM4MiA2ODkgMzgyWk02OTcgMzQ0UTY5MiAzNDUgNjgxIDM0NUg2NzVRNjcxIDM0NSA2NjUgMzQ1VDY1NSAzNDRUNjUwIDM0NEw2NDggMzQyUTY0NiAzMzkgNjQ1IDMzOFE2NDMgMzMzIDYzOSAzMjdINjUzUTY3MCAzMjkgNjc2IDMzMFE3MDYgMzQyIDcwNiAzNDNRNzAyIDM0NCA2OTcgMzQ0JyxcbiAgICAweDIxMkQ6ICcyOTkgNTg1UTMzMyA2MDkgMzg0IDYzNFQ0NzAgNjcyTDUwNSA2ODVRNTA2IDY4NSA1MTMgNjYyVDUzMSA2MTNUNTQ4IDU4MFE1NTMgNTc2IDU2MyA1NzZRNTc1IDU3NiA2MDUgNTg1UTYwNyA1ODUgNjA3IDU3NVY1NjRRNTM3IDUzMiA0OTYgNTI3UTQ3NSA1NDIgNDU2IDU2N1Q0MjcgNjEwVDQxNSA2MjdRNDEwIDYyNyAzOTggNjE4VDM4MiA2MDNRMzczIDU4OCAzNzMgNTU4VDM4NiA0NzVUNDAwIDM5OVE0MDAgMzM3IDM2NiAzMDNRMzQzIDI4MSAzMDkgMjY2VDI1NCAyNDdUMjI2IDI0MkwyMTQgMjU3UTIxNCAyNTggMjIzIDI2MFQyNTEgMjcyVDI4NyAyOTlRMzA0IDMxNiAzMDQgMzYwUTMwNCAzOTYgMjg5IDQ1MVQyNzQgNTMyUTI3NCA1NTMgMjc3IDU2MVY1NjRIMjY5UTIwNSA1NTggMTcyIDUwMVQxMzkgMzU4UTEzOSAyMDcgMjI2IDEyN1Q0NDMgNDZRNDQ4IDQ2IDQ1NyA0NlQ0NzAgNDdMNDg1IDQ4TDYwMSAxMDZRNjAyIDEwNiA2MDIgOTNWODBRNTUxIDQ4IDUxNyAyNVQ0NzQgLTRUNDYwIC0xM1Q0NDMgLTE5UTQwOSAtMjQgMzY3IC0yNFEzNjAgLTI0IDM1MSAtMjRUMzM1IC0yM1QzMjYgLTIyUTE5MCAtMiAxMjUgODdUNTkgMzE5VjMyOFE2MiA0MTIgOTYgNDg3TDEwMSA1MDBMMTE4IDUxMlExODkgNTYzIDI0NSA1OTFMMjY2IDYwMUwyOTkgNTg1JyxcbiAgICAweDIxMzA6ICcyODAgMzk4TDI3OSA0MDBRMjc4IDQwMiAyNzcgNDA1VDI3NSA0MTNUMjcyIDQyNlQyNzEgNDQzUTI3MSA0OTQgMzAyIDU0NFQzNzkgNjI5VDQ3MiA2ODVUNTUzIDcwN0g1NjVINTczUTYzMCA3MDcgNjY0IDY4OVE3MTggNjYxIDcxOCA2MDRRNzE4IDU0OCA2NjIgNDkyVDU1MyA0MzZRNTI1IDQzNiA1MDggNDUxVDQ5MCA0OTJRNDkwIDUzNCA1MzEgNTc5VDYxOSA2MzBRNjMyIDYzMCA2MzIgNjIzUTYzMiA2MTkgNjI0IDYwNlE2MTQgNTkzIDYwMiA1OTJUNTc4IDU4MFE1NjYgNTY4IDU0OSA1NDFUNTMyIDQ5N1E1MzIgNDc0IDU2NSA0NzRRNTc3IDQ3NCA1ODcgNDc2UTYwMCA0ODEgNjExIDQ4OVE2MzAgNTAzIDY1MSA1MzVUNjcyIDU5NlE2NzIgNjYwIDU1MyA2NjBINTQ4UTQ5NCA2NjAgNDUwIDYxNlE0MjEgNTg3IDM4NCA1MzFUMzQzIDQzOVEzNDEgNDIwIDM0NCA0MTVIMzQ1UTM0NiA0MTUgMzUyIDQxNVQzNjkgNDE3VDM5MSA0MThRNDIxIDQxOCA0NDAgNDEyVDQ2NiAzOThUNDczIDM4MlE0NzMgMzY3IDQ1MiAzNTNUMzk4IDMzOVEzNzAgMzM5IDM0OCAzNDVUMzE1IDM1OUwzMDQgMzY2UTI5NyAzNjUgMjg0IDM2MFQyMzQgMzIxVDE2MyAyMzRRMTIwIDE2MCAxMjAgMTE3UTEyMCA4MyAxNDkgNTdUMjUyIDMwUTMxMSAzMCAzNTcgNjBRMzg2IDc5IDQxNCAxMTRUNDUyIDE3OVE0NTQgMTg2IDQ1NCAyMDBRNDU0IDIzMCA0MTUgMjQyUTQwMSAyNDYgMzczIDI0NlEzNTMgMjQ2IDM0NyAyNDRRMzI4IDIzNiAzMTMgMjE5VDI4OCAxODRUMjc0IDE0OVQyNjUgMTIxVDI2MSAxMDlRMjYwIDEwNyAyNDcgMTAyVDIzMCA5N1EyMjMgOTcgMjIzIDEwNVEyMjMgMTQ4IDI3MSAyMTZUMzg2IDI4NFE0NDYgMjg0IDQ4MyAyNjBUNTIwIDE5NVE1MjAgMTIxIDQyNyA1N1QyMzkgLThRMTkyIC04IDE1MiAyVDc5IDQ2VDQ2IDEzM1E0NiAyMTIgMTA3IDI4NVQyNjkgMzk0TDI4MCAzOThaTTQyNyAzNzZRNDI3IDM3NyA0MDIgMzgwUTM4NiAzODAgMzg2IDM3OUw0MjUgMzc1TDQyNyAzNzYnLFxuICAgIDB4MjEzMTogJzI1OCA0MjhRMjU4IDQ4OSAzMjIgNTYyVDQ4MiA2ODVUNjYxIDczNVE3MjYgNzM1IDgyNCA2OTNUOTc3IDY1MVE5OTAgNjUxIDk5MCA2NDRROTkwIDYzOSA5NzEgNjEyVDk0OCA1ODFROTQ3IDU4MCA5MzggNTgwUTg3OCA1ODAgNzg0IDYyMVQ2MTcgNjYzUTU0NCA2NjMgNDgwIDYzNVQzNzkgNTY4VDMyMCA0OTJUMjk5IDQzMVEyOTkgMzg3IDM2MiAzODdRNDA0IDM4NyA0MzggNDAyVDQ5MyA0MzhUNTI3IDQ4NlQ1NDYgNTMxVDU1MSA1NjNRNTUxIDU2OSA1NTAgNTc1VDU0OSA1ODRUNTQ5IDU5MFE1NTEgNTkzIDU2MyA2MDJUNTc5IDYxMVE1ODQgNjExIDU5MiA2MDVUNjA4IDU4NFQ2MTYgNTQ4UTYxNiA1MTMgNTk1IDQ3N1Q1NTQgNDIzUTUxOCAzOTIgNDY0IDM3MlQzNDkgMzUxUTI1OCAzNTEgMjU4IDQyOFpNMzI0IDE4N1QzMDUgMTg3VDI4NiAxOTZRMjg2IDIwMiAzMDEgMjE3UTMyNyAyNDIgMzgzIDI2MlQ0ODQgMjkwTDUyNyAyOTdMNTY3IDM1NlE2MjQgNDQxIDY0MyA0NjdUNjg4IDUyMVE3MTUgNTUwIDc1MiA1ODFUNzk1IDYxM1Q4MDQgNjAzVDgwOCA1ODdUNzc4IDU0N1Q3MDIgNDQ0VDYyNiAzMDBINjM3UTY2MyAzMDIgNjg1IDMwNkw2OTcgMzA4TDcwMyAzMTdRNzQ1IDM3NiA3OTIgNDAwUTgwNiA0MDYgODE4IDQwNlE4NDkgNDA2IDg0OSAzNzVRODQ3IDM1NSA4MzEgMzM4VDc5NyAzMTJUNzYzIDI5Nkw3NDcgMjkwUTc0NCAyODkgNzM1IDI2NlQ3MjQgMjQxUTcyMiAyNDAgNzAyIDIzMlQ2NjQgMjE3VDY0NSAyMTBRNjM4IDIxMCA2MzggMjE4UTYzOCAyMjQgNjUzIDI0NlQ2NjkgMjcwUTY2OSAyNzEgNjY4IDI3MVE2NjMgMjcwIDYyNCAyNjRMNjA3IDI2M1E1NzAgMTk5IDUyOSAxNTJRNTEzIDEzMyA0ODQgMTA2VDQwOSA0NVQzMDUgLTEzVDE5MyAtMzZRMTA5IC0zNiA3NCAtMTBUMzkgNTBRMzkgODYgNjQgMTIxVDEyOCAxNThRMTcxIDE1OCAxNzEgMTIxUTE3MSA5NyAxNDEgODNRMTI1IDc1IDEwNyA3NVE5MyA3NSA4MCA4M1E3NiA3MSA3NiA2MlE3NiAyOSAxMTcgMTVUMjA3IDBRMzI0IDAgNDk0IDI0OEw1MDEgMjU4SDQ5NVEzNjggMjM5IDMzMCAxOTVRMzI0IDE4NyAzMDUgMTg3Wk03NzUgMzM1UTgwNiAzNTggODA2IDM2OFE4MDUgMzY5IDgwNCAzNjlRODAwIDM2OSA3OTEgMzYwUTc3NCAzMzYgNzc1IDMzNScsXG4gICAgMHgyMTMyOiAnNDU3IDY4MVE0NzEgNjk1IDQ3NyA2OTVRNDg1IDY5NSA0OTcgNjgxVjEyTDQ4NCAtMUg2OFE1NSAxNCA1NSAxOVQ2OCAzOUg0NTdWMzI4SDIxNUwyMTEgMzM1UTE5OCAzNDYgMjExIDM1OUwyMTcgMzY4SDQ1N1Y2ODEnLFxuICAgIDB4MjEzMzogJzExMiAtN1E4NiAtNyA1OCA2VDMwIDQ4VDU0IDEwM1QxMTMgMTMwUTEyOSAxMzAgMTQxIDEyMVQxNTMgOTRRMTUzIDcxIDEzMiA1OVQ5MCA0N0g4MFE5NSAzMCAxMzMgMzBRMTgwIDMwIDIyOCA2M1QzMTEgMTM3VDQwMiAyNDlUNTAwIDM2MVE1NjYgNDI1IDcwMyA1MjlUOTEwIDY5M1E5NDIgNzIxIDk0NSA3MjFUOTU4IDcxNlQ5NzAgNzA5UTk3NCA3MDQgOTY0IDY5MVE5NjEgNjg4IDkwNSA2MjJUODQ3IDU1NEw1OTUgMTgxUTU1MyAxMjEgNTI3IDc3VDQ5NiAxOUw0OTIgNVE0OTcgNSA1MzEgNDZRNTc5IDk4IDY4NSAyMjRUODUwIDQwOUw5NzIgNTI0UTk5NCA1NDMgMTAwNCA1NTZRMTAxMiA1NjcgMTA5NyA2NDNUMTE4NiA3MjBRMTE5NCA3MjAgMTIwNiA3MTVUMTIxNSA3MDNRMTIxNSA3MDEgMTE5MSA2NzFUMTEzMyA1OTlUMTA4MCA1MzBRMTAzNiA0NjEgOTgzIDM1N1Q4NjIgMTUyUTgwMiA2NCA3OTkgMTdRNzk5IDcgODAwIDVUODExIDJRODM2IDIgODgyIDM3VDk2OSAxMjZROTcyIDEzMCA5NzQgMTM0VDk3OCAxMzhUOTgzIDEzOVQ5OTYgMTQwSDEwMTJRMTAxOCAxMzQgMTAxOCAxMzJRMTAxOCAxMjIgOTgxIDgzVDg4OSA0VDc5NSAtMzVRNzYxIC0zNSA3NDUgLTEyVDcyOCA0OFE3MjggMTIyIDc4MSAxOTBRODMzIDI2OSA4OTAgMzcwTDkyNyA0MzRMOTE0IDQyMlE4NDggMzYwIDc1MiAyNDVRNjQzIDExNyA1ODIgNTFUNDk4IC0zM1Q0NjEgLTUwUTQyNCAtNDggNDI0IC00UTQyNCA4NCA0ODEgMTcyTDcxNCA0OTVRNTkxIDQwNiA1MjMgMzMzUTUwNyAzMTYgNDMwIDIyNlQzMTMgOTVRMjYzIDQ4IDIyMSAyNFQxNjIgLTRUMTIwIC03SDExMicsXG4gICAgMHgyMTM1OiAnNTUgNjEzUTU1IDY0MyA2MSA2NjNUNzQgNjg4VDg1IDY5NFE5NCA2OTQgOTQgNjgxUTk4IDYzMiAxMzQgNTg4TDQxMiAyODVRNDE2IDMxMSA0MzAgMzk3VDQ0NyA1MDlWNTE5TDQzOCA1MjZRNDA3IDU1NCAzOTggNTcxVDM4OCA2MTdUMzk0IDY2NFQ0MDcgNjg4VDQxOCA2OTRRNDI1IDY5NCA0MjcgNjg0UTQyOSA2NzUgNDU0IDYzNVQ0ODggNTg2UTQ5MCA1ODQgNDk2IDU3OVQ1MTMgNTYzVDUzNyA1NDBRNTU1IDUxNiA1NTUgNDg3UTU1NSA0NjAgNTQ5IDQ0MVQ1MzcgNDE2VDUyOCA0MDlRNTE5IDQwOSA1MTcgNDE1VDUxMyA0MzVUNTAzIDQ2M1E0OTIgNDgxIDQ5MCA0ODFRNDU0IDI2NCA0NTQgMjQ2UTQ1NCAyMzcgNDc5IDIxMlQ1MjkgMTUyVDU1NSA3OVE1NTUgMzIgNTM4IDlRNTMxIDEgNTI0IDFRNTE2IDEgNTE2IDEzUTUxMiA2MiA0NzYgMTA2UTQ2OCAxMTUgMzM3IDI1OFQxOTUgNDEyTDE5MyA0MDZRMTkxIDQwMSAxODkgMzk0VDE4MyAzNzdUMTc2IDM1MlQxNzEgMzIyVDE2NyAyODRUMTY1IDI0MFExNjUgMjI0IDE2NiAyMjBRMTcxIDE5OSAyMTEgMTUyVDI1MiA3MFEyNTIgNDUgMjM1IDI5VDIwMyA4VDE3NSAxUTE3MCAwIDExNSAwSDc5UTYwIDAgNTggM1Q1NSAyMFE1NSAzMSA1OCAzNFE2MCAzNyA3NiAzN1ExMTIgMzkgMTI2IDQ2VDE0MCA3MFExNDAgOTYgMTEyIDE0OFQ4MyAyMzZRODMgMjgxIDEwMiAzMzRUMTQwIDQxOVQxNTkgNDUyUTU1IDU1NiA1NSA2MTMnLFxuICAgIDB4MjEzNjogJzU2IDcwNlY3MjZRNTYgNzYzIDc2IDc2M1E4MyA3NjMgODcgNzU5VDk4IDc0MVExMDggNzI2IDExNiA3MjFMMTI3IDcxN0wzNDAgNzE1UTU0NyA3MTIgNTY0IDcwOVE1NzUgNzA1IDU4NyA2OTJRNTk5IDY4MCA2MDUgNjYzTDYwOSA2NTBWMTM3SDY3NlE2ODcgMTI0IDY4NyAxMTVRNjg3IDExMCA2NzggMTAwVDYyMiA0M0w1NTggLTIxSC05US0yMiAtNiAtMjIgLTFULTEzIDE0VDQyIDcyTDEwNyAxMzdINTY5VjMzOVE1NjkgNTQxIDU2NyA1NDZRNTU4IDU1NSA1NTQgNTU3TDU0NSA1NjNIMzI5UTExOCA1NjYgMTAxIDU2OVE5MCA1NzMgNzggNTg2UTU0IDYxMCA1NCA2NjFRNTQgNjcwIDU2IDcwNicsXG4gICAgMHgyMTM3OiAnNTYgNzUwUTY4IDc2NCA3NiA3NjRRODggNzY0IDk3IDc0M1QxMjUgNzE3UTEzMSA3MTUgMjQwIDcxNVQzNTggNzEzUTQyMSA2OTEgNDIxIDY0MFE0MjEgNjA4IDM5OSA1ODhUMzU4IDU2NlEzNTMgNTY2IDM1MiA1NjVUMzUxIDU1N0wzNTYgNTI2UTM1NiA0ODggMzc5IDM0NlQ0MDIgOTdRNDAwIDIxIDM4NSAtMTJRMzY2IC00MyAzNTEgLTQzUTMzNSAtNDMgMzI5IC0xMFEzMTYgNDAgMzE2IDY0UTMxNiA2NyAzMTUgNjdRMzEzIDY3IDI2OSAyNkwyMjIgLTIxSC05US0yMiAtNyAtMjIgLTFRLTIyIDQgLTE0IDE0VDQyIDczTDEwNyAxMzdIMzExVjU2NEgyMTFIMTY0UTExNSA1NjQgOTMgNTczVDYwIDYxNVE1NiA2MzAgNTYgNjkwVjc1MCcsXG4gICAgMHgyMTM4OiAnNjIgNzU3UTY5IDc2NCA3NSA3NjRRODcgNzY0IDk3IDc0MVExMDIgNzMxIDEwNSA3MjhUMTE3IDcyMUwxMjkgNzE1SDM0OVE1NjkgNzE1IDU4MCA3MTBRNjE4IDcwMSA2MzUgNjcwUTY0MCA2NjEgNjQwIDYzOVE2NDAgNjA5IDYyMiA1OTBRNjE3IDU4MyA2MDQgNTc1VDU4MCA1NjZINTczVjU1M1E1NzUgNTQ3IDU3NiA1MzFUNTgyIDQ2OVQ2MDAgMzUzUTYyNCAyMDUgNjI0IDEwNFE2MjQgNDYgNjE3IDE3VDU5MSAtMzJRNTgxIC00MyA1NzMgLTQzUTU1MCAtNDMgNTQwIDQ0UTUzNSA3MyA1MzMgMzE5VjU2NEgzMjJRMTE3IDU2NiAxMDAgNTcwUTkwIDU3MyA3NyA1ODZRNTQgNjA5IDU0IDY2M1E1NCA2ODkgNTUgNzA2UTU1IDczOCA1NiA3NDVUNjIgNzU3JyxcbiAgICAweDIxNDE6ICcyMzkgNjY1UTE5NCA2NjUgMTU0IDY1M1Q5MCA2MjlUNjYgNjE3UTU5IDYxNyA1MyA2MjNUNDYgNjM3UTQ2IDY1MiA2NiA2NTlRMTI5IDY5NSAxOTcgNzAxUTIxOCA3MDUgMjQ4IDcwNVEyOTMgNzA1IDMzNSA2OTNRMzcxIDY4NCA0MzUgNjQ0UTU0MyA1NjIgNTczIDQxN1E1NzcgMzkzIDU3NyAzNDFRNTc3IDI5MCA1NzMgMjY2UTUzMSA4MyAzODQgMTBRMzQ2IC05IDMxNSAtMTZUMjM0IC0yM0gyMDZRMjAyIC0yMyAxODMgLTIzVDE1MiAtMjFUMTIwIC0xOFQ4OCAtMTBUNjMgM1Q0NCAyNEwzNyAzNVYyOTdMNTAgMzEwSDIzNVEyNDggMjk3IDI0OCAyOTBRMjQ4IDI4NSAyMzUgMjcwSDc3VjEwM1E3NyA4OCA3NyA4MFQ3NyA2M1Q3OCA1MFQ4MCA0M1Q4MiAzOFQ4NSAzNVQ4OSAzMlQ5NSAzMFExMjYgMjAgMjA2IDE3UTI4OSAxNyAzMzAgMzBRNDA3IDU1IDQ2MCAxMjBUNTMzIDI3NVE1MzggMzA1IDUzOCAzNDJRNTM4IDQ4NiA0NTIgNTc1VDIzOSA2NjUnLFxuICAgIDB4MjE5MDogJzk0NCAyNjFUOTQ0IDI1MFQ5MjkgMjMwSDE2NVExNjcgMjI4IDE4MiAyMTZUMjExIDE4OVQyNDQgMTUyVDI3NyA5NlQzMDMgMjVRMzA4IDcgMzA4IDBRMzA4IC0xMSAyODggLTExUTI4MSAtMTEgMjc4IC0xMVQyNzIgLTdUMjY3IDJUMjYzIDIxUTI0NSA5NCAxOTUgMTUxVDczIDIzNlE1OCAyNDIgNTUgMjQ3UTU1IDI1NCA1OSAyNTdUNzMgMjY0UTEyMSAyODMgMTU4IDMxNFQyMTUgMzc1VDI0NyA0MzRUMjY0IDQ4MEwyNjcgNDk3UTI2OSA1MDMgMjcwIDUwNVQyNzUgNTA5VDI4OCA1MTFRMzA4IDUxMSAzMDggNTAwUTMwOCA0OTMgMzAzIDQ3NVEyOTMgNDM4IDI3OCA0MDZUMjQ2IDM1MlQyMTUgMzE1VDE4NSAyODdUMTY1IDI3MEg5MjlROTQ0IDI2MSA5NDQgMjUwJyxcbiAgICAweDIxOTE6ICcyNyA0MTRRMTcgNDE0IDE3IDQzM1ExNyA0MzcgMTcgNDM5VDE3IDQ0NFQxOSA0NDdUMjAgNDUwVDIyIDQ1MlQyNiA0NTNUMzAgNDU0VDM2IDQ1NlE4MCA0NjcgMTIwIDQ5NFQxODAgNTQ5UTIyNyA2MDcgMjM4IDY3OFEyNDAgNjk0IDI1MSA2OTRRMjU5IDY5NCAyNjEgNjg0UTI2MSA2NzcgMjY1IDY1OVQyODQgNjA4VDMyMCA1NDlRMzQwIDUyNSAzNjMgNTA3VDQwNSA0NzlUNDQwIDQ2M1Q0NjcgNDU1VDQ3OSA0NTFRNDgzIDQ0NyA0ODMgNDMzUTQ4MyA0MTMgNDcyIDQxM1E0NjcgNDEzIDQ1OCA0MTZRMzQyIDQ0OCAyNzcgNTQ1TDI3MCA1NTVWLTE3OVEyNjIgLTE5MyAyNTIgLTE5M0gyNTBIMjQ4UTIzNiAtMTkzIDIzMCAtMTc5VjU1NUwyMjMgNTQ1UTE5MiA0OTkgMTQ2IDQ2N1Q3MCA0MjRUMjcgNDE0JyxcbiAgICAweDIxOTI6ICc1NiAyMzdUNTYgMjUwVDcwIDI3MEg4MzVRNzE5IDM1NyA2OTIgNDkzUTY5MiA0OTQgNjkyIDQ5NlQ2OTEgNDk5UTY5MSA1MTEgNzA4IDUxMUg3MTFRNzIwIDUxMSA3MjMgNTEwVDcyOSA1MDZUNzMyIDQ5N1Q3MzUgNDgxVDc0MyA0NTZRNzY1IDM4OSA4MTYgMzM2VDkzNSAyNjFROTQ0IDI1OCA5NDQgMjUwUTk0NCAyNDQgOTM5IDI0MVQ5MTUgMjMxVDg3NyAyMTJRODM2IDE4NiA4MDYgMTUyVDc2MSA4NVQ3NDAgMzVUNzMyIDRRNzMwIC02IDcyNyAtOFQ3MTEgLTExUTY5MSAtMTEgNjkxIDBRNjkxIDcgNjk2IDI1UTcyOCAxNTEgODM1IDIzMEg3MFE1NiAyMzcgNTYgMjUwJyxcbiAgICAweDIxOTM6ICc0NzMgODZRNDgzIDg2IDQ4MyA2N1E0ODMgNjMgNDgzIDYxVDQ4MyA1NlQ0ODEgNTNUNDgwIDUwVDQ3OCA0OFQ0NzQgNDdUNDcwIDQ2VDQ2NCA0NFE0MjggMzUgMzkxIDE0VDMxNiAtNTVUMjY0IC0xNjhRMjY0IC0xNzAgMjYzIC0xNzNUMjYyIC0xODBUMjYxIC0xODRRMjU5IC0xOTQgMjUxIC0xOTRRMjQyIC0xOTQgMjM4IC0xNzZUMjIxIC0xMjFUMTgwIC00OVExNjkgLTM0IDE1NSAtMjFUMTI1IDJUOTUgMjBUNjcgMzNUNDQgNDJUMjcgNDdMMjEgNDlRMTcgNTMgMTcgNjdRMTcgODcgMjggODdRMzMgODcgNDIgODRRMTU4IDUyIDIyMyAtNDVMMjMwIC01NVYzMTJRMjMwIDM5MSAyMzAgNDgyVDIyOSA1OTFRMjI5IDY2MiAyMzEgNjc2VDI0MyA2OTNRMjQ0IDY5NCAyNTEgNjk0UTI2NCA2OTIgMjcwIDY3OVYtNTVMMjc3IC00NVEzMDcgMSAzNTMgMzNUNDMwIDc2VDQ3MyA4NicsXG4gICAgMHgyMTk0OiAnMjYzIDQ3OVEyNjcgNTAxIDI3MSA1MDZUMjg4IDUxMVEzMDggNTExIDMwOCA1MDBRMzA4IDQ5MyAzMDMgNDc1UTI5MyA0MzggMjc4IDQwNlQyNDYgMzUyVDIxNSAzMTVUMTg1IDI4N1QxNjUgMjcwSDgzNVE3MjkgMzQ5IDY5NiA0NzVRNjkxIDQ5MyA2OTEgNTAwUTY5MSA1MTEgNzExIDUxMVE3MjAgNTExIDcyMyA1MTBUNzI5IDUwNlQ3MzIgNDk3VDczNSA0ODFUNzQzIDQ1NlE3NjUgMzg5IDgxNiAzMzZUOTM1IDI2MVE5NDQgMjU4IDk0NCAyNTBROTQ0IDI0NCA5MzkgMjQxVDkxNSAyMzFUODc3IDIxMlE4MzYgMTg2IDgwNiAxNTJUNzYxIDg1VDc0MCAzNVQ3MzIgNFE3MzAgLTYgNzI3IC04VDcxMSAtMTFRNjkxIC0xMSA2OTEgMFE2OTEgNyA2OTYgMjVRNzI4IDE1MSA4MzUgMjMwSDE2NVExNjcgMjI4IDE4MiAyMTZUMjExIDE4OVQyNDQgMTUyVDI3NyA5NlQzMDMgMjVRMzA4IDcgMzA4IDBRMzA4IC0xMSAyODggLTExUTI4MSAtMTEgMjc4IC0xMVQyNzIgLTdUMjY3IDJUMjYzIDIxUTI0NSA5NCAxOTUgMTUxVDczIDIzNlE1OCAyNDIgNTUgMjQ3UTU1IDI1NCA1OSAyNTdUNzMgMjY0UTE0NCAyOTIgMTk0IDM0OVQyNjMgNDc5JyxcbiAgICAweDIxOTU6ICcyNyA0OTJRMTcgNDkyIDE3IDUxMVExNyA1MTUgMTcgNTE3VDE3IDUyMlQxOSA1MjVUMjAgNTI4VDIyIDUzMFQyNiA1MzFUMzAgNTMyVDM2IDUzNFE4MCA1NDUgMTIwIDU3MlQxODAgNjI3UTIxMCA2NjQgMjIzIDcwMVQyMzggNzU1VDI1MCA3NzJUMjYxIDc2MlEyNjEgNzU3IDI2NCA3NDFUMjgyIDY5MVQzMTkgNjI4UTM1MiA1ODkgMzkwIDU2NlQ0NTQgNTM2TDQ3OSA1MjlRNDgzIDUyNSA0ODMgNTExUTQ4MyA0OTEgNDcyIDQ5MVE0NjcgNDkxIDQ1OCA0OTRRMzQyIDUyNiAyNzcgNjIzTDI3MCA2MzNWLTEzM0wyNzcgLTEyM1EzMDcgLTc3IDM1MyAtNDVUNDMwIC0yVDQ3MyA4UTQ4MyA4IDQ4MyAtMTFRNDgzIC0xNSA0ODMgLTE3VDQ4MyAtMjJUNDgxIC0yNVQ0ODAgLTI4VDQ3OCAtMzBUNDc0IC0zMVQ0NzAgLTMyVDQ2NCAtMzRRNDA3IC00OSAzNjQgLTg0VDMwMCAtMTU3VDI3MCAtMjIzVDI2MSAtMjYyUTI1OSAtMjcyIDI1MCAtMjcyUTI0MiAtMjcyIDIzOSAtMjU1VDIyMyAtMjAxVDE4MCAtMTI3UTE2OSAtMTEyIDE1NSAtOTlUMTI1IC03NlQ5NSAtNThUNjcgLTQ1VDQ0IC0zNlQyNyAtMzFMMjEgLTI5UTE3IC0yNSAxNyAtMTFRMTcgOSAyOCA5UTMzIDkgNDIgNlExNTggLTI2IDIyMyAtMTIzTDIzMCAtMTMzVjYzM0wyMjMgNjIzUTE5MiA1NzcgMTQ2IDU0NVQ3MCA1MDJUMjcgNDkyJyxcbiAgICAweDIxOTY6ICcyMDQgNjYyUTI1NyA2NjIgMzAxIDY3NlQzNjkgNzA1VDM5NCA3MjBRMzk4IDcyMCA0MDcgNzExVDQxNyA2OTdRNDE3IDY4OCAzODkgNjcxVDMxMCA2MzlUMjEyIDYyM1ExNzYgNjIzIDE1MyA2MjhRMTUxIDYyOCAyMjEgNTU3VDU0NiAyMzJROTQyIC0xNjQgOTQzIC0xNjhROTQ0IC0xNzAgOTQ0IC0xNzRROTQ0IC0xODIgOTM4IC0xODhUOTI0IC0xOTVROTIyIC0xOTUgOTE2IC0xOTNROTEyIC0xOTEgNTE3IDIwNFE0NDAgMjgxIDMyNiAzOTRUMTY2IDU1M0wxMjEgNTk4UTEyNiA1ODkgMTI2IDU0MVExMjYgNDM4IDcwIDM0OVE1OSAzMzIgNTIgMzMyUTQ4IDMzMiAzOSAzNDFUMjkgMzU1UTI5IDM1OCAzOCAzNzJUNTcgNDA3VDc3IDQ2NFQ4NiA1NDVRODYgNTgzIDc4IDYxNFQ2MyA2NjNUNTUgNjgzUTU1IDY5MyA2NSA2OTNRNzMgNjkzIDgyIDY4OFExMzYgNjYyIDIwNCA2NjInLFxuICAgIDB4MjE5NzogJzU4MiA2OTdRNTgyIDcwMSA1OTEgNzEwVDYwNSA3MjBRNjA3IDcyMCA2MzAgNzA2VDY5NyA2NzdUNzk1IDY2MlE4MzAgNjYyIDg2MyA2NzBUOTE0IDY4NlQ5MzQgNjk0UTk0MiA2OTQgOTQ0IDY4NVE5NDQgNjgwIDkzNiA2NjNUOTIxIDYxNVQ5MTMgNTQ1UTkxMyA0OTAgOTI3IDQ0NlQ5NTYgMzc5VDk3MCAzNTVROTcwIDM1MSA5NjEgMzQyVDk0NyAzMzJROTQwIDMzMiA5MjkgMzQ5UTg3NCA0MzYgODc0IDU0MVE4NzQgNTkwIDg3OCA1OThMODMyIDU1M1E3ODcgNTA4IDY3MyAzOTVUNDgyIDIwNFE4NyAtMTkxIDgzIC0xOTNRNzcgLTE5NSA3NSAtMTk1UTY3IC0xOTUgNjEgLTE4OVQ1NSAtMTc0UTU1IC0xNzAgNTYgLTE2OFE1OCAtMTY0IDQ1MyAyMzJRNzA3IDQ4NyA3NzcgNTU3VDg0NyA2MjhRODI0IDYyMyA3ODcgNjIzUTY4OSA2MjMgNTk5IDY3OVE1ODIgNjkwIDU4MiA2OTcnLFxuICAgIDB4MjE5ODogJzU1IDY3NVE1NSA2ODMgNjAgNjg5VDc1IDY5NVE3NyA2OTUgODMgNjkzUTg3IDY5MSA0ODIgMjk2UTUzMiAyNDYgNjA1IDE3NFQ3MTcgNjJUNzk5IC0yMFQ4NTkgLTgwVDg3OCAtOTdRODc0IC05MyA4NzQgLTQxUTg3NCA2NCA5MjkgMTUxUTk0MCAxNjggOTQ3IDE2OFE5NTEgMTY4IDk2MCAxNTlUOTcwIDE0NVE5NzAgMTQzIDk1NiAxMjFUOTI4IDU0VDkxMyAtNDVROTEzIC04MyA5MjAgLTExNFQ5MzYgLTE2M1Q5NDQgLTE4NVE5NDIgLTE5NCA5MzQgLTE5NFE5MzIgLTE5NCA5MTQgLTE4NlQ4NjQgLTE3MFQ3OTUgLTE2MlE3NDMgLTE2MiA2OTggLTE3NlQ2MzAgLTIwNVQ2MDUgLTIyMFE2MDEgLTIyMCA1OTIgLTIxMVQ1ODIgLTE5N1E1ODIgLTE4NyA2MTEgLTE3MFQ2OTEgLTEzOFQ3ODcgLTEyM1E4MjQgLTEyMyA4NDcgLTEyOFE4NDggLTEyOCA3NzggLTU3VDQ1MyAyNjhRNTggNjY0IDU2IDY2OFE1NSA2NzAgNTUgNjc1JyxcbiAgICAweDIxOTk6ICcxMjYgLTQxUTEyNiAtOTIgMTIxIC05N1ExMjEgLTk4IDEzOSAtODBUMjAwIC0yMFQyODEgNjFUMzk0IDE3M1Q1MTcgMjk2UTkwOSA2OTAgOTE2IDY5M1E5MjIgNjk1IDkyNCA2OTVROTMyIDY5NSA5MzggNjg5VDk0NCA2NzRROTQ0IDY3MCA5NDMgNjY4UTk0MiA2NjQgNTQ2IDI2OFEyOTIgMTMgMjIyIC01N1QxNTMgLTEyOFExNzYgLTEyMyAyMTIgLTEyM1EzMTAgLTEyMyA0MDAgLTE3OVE0MTcgLTE5MCA0MTcgLTE5N1E0MTcgLTIwMSA0MDggLTIxMFQzOTQgLTIyMFEzOTIgLTIyMCAzNjkgLTIwNlQzMDIgLTE3N1QyMDQgLTE2MlExMzEgLTE2MiA2NyAtMTk0UTYzIC0xOTUgNTkgLTE5MlQ1NSAtMTgzUTU1IC0xODAgNjIgLTE2M1Q3OCAtMTE1VDg2IC00NVE4NiAxMCA3MiA1NFQ0NCAxMjBUMjkgMTQ1UTI5IDE0OSAzOCAxNThUNTIgMTY4UTU5IDE2OCA3MCAxNTFRMTI2IDYyIDEyNiAtNDEnLFxuICAgIDB4MjE5QTogJzk0MiAyNTBROTQyIDI0NCA5MjggMjMwSDUxMUw0NTcgMTQ4UTQ0MCAxMjQgNDIwIDkzUTQwNCA2OCA0MDAgNjRUMzg5IDYwUTM4MSA2MCAzNzUgNjZUMzY4IDgxUTM2OCA4OCA0MTUgMTU5TDQ2MiAyMzBIMTc1TDE4OCAyMTRRMjEwIDE4OCAyMzUgMTQ1VDI2NCA4NVEyNjQgNzUgMjYwIDc0VDIzMSA3MkwyMDYgNzRMMTkxIDEwM1ExNjkgMTQyIDE2NCAxNTBRMTMwIDE5NSA2NCAyMzlRNTYgMjQ0IDU2IDI1MFQ2NCAyNjFRMTE1IDI5NCAxNDIgMzIzVDE5MSAzOTdMMjA2IDQyOEgyMzFRMjU1IDQyOCAyNTkgNDI2VDI2NCA0MTRRMjYwIDM5NyAyMzUgMzU1VDE4OCAyODhMMTc1IDI3MkwzMzEgMjcwUTQ4OCAyNzAgNDkxIDI3MlE0OTEgMjc1IDU0MiAzNTJUNTk3IDQzMlE2MDIgNDM3IDYwOSA0MzdRNjE3IDQzNyA2MjIgNDMyVDYyOCA0MTdUNTgyIDM0MUw1MzcgMjcyTDczNSAyNzBIOTMxUTk0MiAyNTcgOTQyIDI1MCcsXG4gICAgMHgyMTlCOiAnNTQgMjUwUTU0IDI1OCA2NiAyNzBIMjc3TDQ4OCAyNzJMNTQyIDM1MFE1OTYgNDMxIDYwMiA0MzVRNjA0IDQzNyA2MDkgNDM3UTYxNyA0MzcgNjIyIDQzMlQ2MjggNDE3VDU4MiAzNDFMNTM3IDI3Mkw2MDggMjcwSDc1MUw4MjIgMjcyTDgwOCAyODhRNzg2IDMxMyA3NjEgMzU1VDczMyA0MTRRNzMzIDQyNCA3MzcgNDI2VDc2NiA0MjhINzkzTDgwNiAzOTdRODI5IDM1NCA4NjQgMzE0UTg5NiAyODQgOTI4IDI2M1E5NDIgMjU3IDk0MiAyNTBUOTI4IDIzN1E4ODcgMjA4IDg2NCAxODVRODI5IDE0NyA4MDYgMTAzTDc5MyA3NEw3NjYgNzJRNzQyIDcyIDczOCA3M1Q3MzMgODVRNzM1IDEwMiA3NTYgMTM3VDc5NyAxOThMODE3IDIyNUw4MjIgMjMwSDUxMUw0NTcgMTQ4UTQ0MCAxMjQgNDIwIDkzUTQwNCA2OCA0MDAgNjRUMzg5IDYwUTM4MSA2MCAzNzUgNjZUMzY4IDgxUTM2OCA4OCA0MTUgMTU5TDQ2MiAyMzBIMjY0TDY2IDIzMlE1NCAyMzkgNTQgMjUwJyxcbiAgICAweDIxOUU6ICc1NiAyNTBRMTAzIDI3NyAxNDIgMzIyVDE5OSA0MTdIMjIxUTI0NCA0MTcgMjQ0IDQxNlEyNDQgNDE0IDIzNyAzOTdUMjA4IDM0NFQxNTggMjc4TDE1MSAyNzBIMjc2TDI4NSAyNzdRMzIyIDMwNiAzNDkgMzQ1VDM4OCA0MTdINDM0UTQzNCA0MTMgNDI0IDM5MlQzOTMgMzM4VDM0OSAyNzlMMzQwIDI3MEg2MzRROTMzIDI3MCA5MzcgMjY2TDkzOCAyNjVROTQ0IDI1OSA5NDQgMjUwVDkzOCAyMzVMOTM3IDIzNFE5MzMgMjMwIDYzNCAyMzBIMzQwTDM0OSAyMjFRMzcyIDE5NiAzOTMgMTYzVDQyNCAxMDhUNDM0IDgzSDM4OFEzNzcgMTE2IDM1MCAxNTVUMjg1IDIyM0wyNzYgMjMwSDE1MUwxNTggMjIyUTE4NiAxOTEgMjA3IDE1NlQyMzYgMTA0VDI0NCA4NFEyNDQgODMgMjIxIDgzSDE5OVExODEgMTMzIDE0MiAxNzhUNTYgMjUwJyxcbiAgICAweDIxQTA6ICc5NDMgMjUwUTg5NSAyMjEgODU2IDE3N1Q4MDEgODNINzc4UTc1NSA4MyA3NTUgODRRNzU1IDg2IDc2MiAxMDNUNzkxIDE1NlQ4NDEgMjIyTDg0OCAyMzBINzIzTDcxNCAyMjNRNjc3IDE5NCA2NTAgMTU1VDYxMSA4M0g1NjVRNTY1IDg3IDU3NSAxMDhUNjA2IDE2MlQ2NTAgMjIxTDY1OSAyMzBIMzY1UTY2IDIzMCA2MiAyMzRMNjEgMjM1UTU1IDI0MSA1NSAyNTBUNjEgMjY1TDYyIDI2NlE2NiAyNzAgMzY1IDI3MEg2NTlMNjUwIDI3OVE2MjcgMzA0IDYwNiAzMzdUNTc1IDM5MlQ1NjUgNDE3SDYxMVE2MjIgMzg0IDY0OSAzNDVUNzE0IDI3N0w3MjMgMjcwSDg0OEw4NDEgMjc4UTgxMyAzMDkgNzkyIDM0NFQ3NjMgMzk2VDc1NSA0MTZRNzU1IDQxNyA3NzggNDE3SDgwMVE4MTcgMzY3IDg1NiAzMjNUOTQzIDI1MCcsXG4gICAgMHgyMUEyOiAnNTYgMjUwUTEwMyAyNzcgMTQyIDMyMlQxOTkgNDE3SDIyMVEyNDQgNDE3IDI0NCA0MTZRMjQ0IDQxNCAyMzcgMzk3VDIwOCAzNDRUMTU4IDI3OEwxNTEgMjcwSDg3M0w4ODIgMjc3UTkxOSAzMDYgOTQ2IDM0NVQ5ODUgNDE3SDEwMzFRMTAzMSA0MTMgMTAyMSAzOTJUOTkwIDMzOFQ5NDYgMjc5TDkzNyAyNzBWMjMwTDk0NiAyMjFROTY5IDE5NiA5OTAgMTYzVDEwMjEgMTA4VDEwMzEgODNIOTg1UTk3NCAxMTYgOTQ3IDE1NVQ4ODIgMjIzTDg3MyAyMzBIMTUxTDE1OCAyMjJRMTg2IDE5MSAyMDcgMTU2VDIzNiAxMDRUMjQ0IDg0UTI0NCA4MyAyMjEgODNIMTk5UTE4MSAxMzMgMTQyIDE3OFQ1NiAyNTAnLFxuICAgIDB4MjFBMzogJzEwNTQgMjUwUTEwMDYgMjIxIDk2NyAxNzdUOTEyIDgzSDg4OVE4NjYgODMgODY2IDg0UTg2NiA4NiA4NzMgMTAzVDkwMiAxNTZUOTUyIDIyMkw5NTkgMjMwSDIzN0wyMjggMjIzUTE5MSAxOTQgMTY0IDE1NVQxMjUgODNINzlRNzkgODcgODkgMTA4VDEyMCAxNjJUMTY0IDIyMUwxNzMgMjMwVjI3MEwxNjQgMjc5UTE0MSAzMDQgMTIwIDMzN1Q4OSAzOTJUNzkgNDE3SDEyNVExMzYgMzg0IDE2MyAzNDVUMjI4IDI3N0wyMzcgMjcwSDk1OUw5NTIgMjc4UTkyNCAzMDkgOTAzIDM0NFQ4NzQgMzk2VDg2NiA0MTZRODY2IDQxNyA4ODkgNDE3SDkxMlE5MjggMzY3IDk2NyAzMjNUMTA1NCAyNTAnLFxuICAgIDB4MjFBNjogJzk1IDE1NVYxMDlROTUgODMgOTIgNzNUNzUgNjNRNjEgNjMgNTggNzRUNTQgMTMwUTU0IDE0MCA1NCAxODBUNTUgMjUwUTU1IDQyMSA1NyA0MjVRNjEgNDM3IDc1IDQzN1E4OCA0MzcgOTEgNDI4VDk1IDM5M1YzNDVWMjcwSDgzNVE3MTkgMzU3IDY5MiA0OTNRNjkyIDQ5NCA2OTIgNDk2VDY5MSA0OTlRNjkxIDUxMSA3MDggNTExSDcxMVE3MjAgNTExIDcyMyA1MTBUNzI5IDUwNlQ3MzIgNDk3VDczNSA0ODFUNzQzIDQ1NlE3NjUgMzg5IDgxNiAzMzZUOTM1IDI2MVE5NDQgMjU4IDk0NCAyNTBROTQ0IDI0NCA5MzkgMjQxVDkxNSAyMzFUODc3IDIxMlE4MzYgMTg2IDgwNiAxNTJUNzYxIDg1VDc0MCAzNVQ3MzIgNFE3MzAgLTYgNzI3IC04VDcxMSAtMTFRNjkxIC0xMSA2OTEgMFE2OTEgNyA2OTYgMjVRNzI4IDE1MSA4MzUgMjMwSDk1VjE1NScsXG4gICAgMHgyMUE5OiAnOTAzIDQyNFQ5MDMgNDQ0VDkyOSA0NjRROTc2IDQ2NCAxMDIzIDQzNFQxMDcwIDM0N1ExMDcwIDMxNiAxMDU1IDI5MlQxMDE2IDI1NlQ5NzEgMjM3VDkyOSAyMzBIMTY1UTE2NyAyMjggMTgyIDIxNlQyMTEgMTg5VDI0NCAxNTJUMjc3IDk2VDMwMyAyNVEzMDggNyAzMDggMFEzMDggLTExIDI4OCAtMTFRMjgxIC0xMSAyNzggLTExVDI3MiAtN1QyNjcgMlQyNjMgMjFRMjQ1IDk0IDE5NSAxNTFUNzMgMjM2UTU4IDI0MiA1NSAyNDdRNTUgMjU0IDU5IDI1N1Q3MyAyNjRRMTIxIDI4MyAxNTggMzE0VDIxNSAzNzVUMjQ3IDQzNFQyNjQgNDgwTDI2NyA0OTdRMjY5IDUwMyAyNzAgNTA1VDI3NSA1MDlUMjg4IDUxMVEzMDggNTExIDMwOCA1MDBRMzA4IDQ5MyAzMDMgNDc1UTI5MyA0MzggMjc4IDQwNlQyNDYgMzUyVDIxNSAzMTVUMTg1IDI4N1QxNjUgMjcwSDkyNlE5MjkgMjcwIDk0MSAyNzFUOTYwIDI3NVQ5NzggMjgwVDk5OCAyOTBUMTAxNSAzMDdRMTAzMCAzMjUgMTAzMCAzNDdRMTAzMCAzNTUgMTAyNyAzNjRUMTAxNCAzODdUOTgzIDQxMVQ5MjkgNDI0SDkyOFE5MDMgNDI0IDkwMyA0NDQnLFxuICAgIDB4MjFBQTogJzU1IDM0N1E1NSAzODAgNzIgNDA0VDExMyA0NDFUMTU5IDQ1OFQxOTcgNDY0UTIyMiA0NjQgMjIyIDQ0NFEyMjIgNDI5IDIwNCA0MjZUMTU3IDQxN1QxMTAgMzg3UTk1IDM2OSA5NSAzNDdROTUgMzM5IDk4IDMzMFQxMTEgMzA3VDE0MiAyODNUMTk2IDI3MEg5NjFRODQ1IDM1NyA4MTggNDkzUTgxOCA0OTQgODE4IDQ5NlQ4MTcgNDk5UTgxNyA1MTEgODM0IDUxMUg4MzdRODQ2IDUxMSA4NDkgNTEwVDg1NSA1MDZUODU4IDQ5N1Q4NjEgNDgxVDg2OSA0NTZRODkxIDM4OSA5NDIgMzM2VDEwNjEgMjYxUTEwNzAgMjU4IDEwNzAgMjUwUTEwNzAgMjQ0IDEwNjUgMjQxVDEwNDEgMjMxVDEwMDMgMjEyUTk2MiAxODYgOTMyIDE1MlQ4ODcgODVUODY2IDM1VDg1OCA0UTg1NiAtNiA4NTMgLThUODM3IC0xMVE4MTcgLTExIDgxNyAwUTgxNyA3IDgyMiAyNVE4NTQgMTUxIDk2MSAyMzBIMTk2UTE0OSAyMzAgMTAyIDI2MFQ1NSAzNDcnLFxuICAgIDB4MjFBQjogJzU2IDI1MFExMDMgMjc3IDE0MiAzMjJUMTk5IDQxN0gyMjFRMjQ0IDQxNyAyNDQgNDE2UTI0NCA0MTQgMjM3IDM5N1QyMDggMzQ0VDE1OCAyNzhMMTUxIDI3MEg2MjJWMzA1UTYyMiAzNTYgNjI0IDM4OFQ2MzUgNDYwVDY2MSA1MjFUNzA5IDU1OVQ3ODUgNTc1UTgxMyA1NzUgODMzIDU3M1Q4ODAgNTYxVDkyMyA1MzRUOTUyIDQ4M1Q5NjQgNDA1UTk2NCAzNzQgOTU5IDM1MFQ5NDIgMzA3VDkxOCAyNzZUODg0IDI1NVQ4NDcgMjQyVDgwNCAyMzVUNzYwIDIzMVQ3MTMgMjMwSDY2MlYtMjdRNjU0IC00MSA2NDQgLTQxSDY0Mkg2NDBRNjI4IC00MSA2MjIgLTI3VjIzMEgxNTFMMTU4IDIyMlExODYgMTkxIDIwNyAxNTZUMjM2IDEwNFQyNDQgODRRMjQ0IDgzIDIyMSA4M0gxOTlRMTgxIDEzMyAxNDIgMTc4VDU2IDI1MFpNOTI0IDQwM1E5MjQgNDc0IDg5NCA1MDVUNzk0IDUzNlE3NTggNTM2IDczNCA1MjZUNjk2IDUwMFQ2NzUgNDUzVDY2NSAzOTVUNjYyIDMxOVYyNzBINjk5UTgyNiAyNzAgODc1IDI5NVQ5MjQgNDAzJyxcbiAgICAweDIxQUM6ICczNSA0MDVRMzUgNDU0IDQ4IDQ4OVQ4NiA1NDJUMTM3IDU2N1QxOTUgNTc1UTIyOSA1NzUgMjUxIDU3MVQzMDEgNTU0VDM0NSA1MTBUMzcwIDQyOVEzNzcgMzg0IDM3NyAzMDVWMjcwSDg0OEw4NDEgMjc4UTgxMyAzMDkgNzkyIDM0NFQ3NjMgMzk2VDc1NSA0MTZRNzU1IDQxNyA3NzggNDE3SDgwMVE4MTcgMzY3IDg1NiAzMjNUOTQzIDI1MFE4OTYgMjIxIDg1NyAxNzdUODAxIDgzSDc3OFE3NTUgODMgNzU1IDg0UTc1NSA4NiA3NjIgMTAzVDc5MSAxNTZUODQxIDIyMkw4NDggMjMwSDM3N1YtMjdRMzY5IC00MSAzNTkgLTQxSDM1N1EzNDIgLTQxIDMzNyAtMjVWMjMwSDI4NlEyNDcgMjMxIDIyNSAyMzJUMTY5IDIzOFQxMTUgMjU1VDc1IDI4NFQ0NSAzMzNUMzUgNDA1Wk03NSA0MDZRNzUgMzIyIDEyMyAyOTZUMzAwIDI3MEgzMzdWMzE5UTMzNSA0MzIgMzE3IDQ3N1QyNDAgNTM0UTIzMiA1MzUgMTk3IDUzNVExNDAgNTM1IDEwOCA1MDdUNzUgNDA2JyxcbiAgICAweDIxQUQ6ICc1NyAyNTBRMTU5IDMxMSAyMDAgNDE3SDI0NkwyNDIgNDA3UTIxNSAzNDAgMTU5IDI3OEwxNTIgMjcwSDI3NkwzMTUgMzEwUTM1NCAzNDkgMzU4IDM1MVEzNjYgMzU2IDM3NiAzNTFRMzc4IDM1MCA0NTUgMjczTDUzMCAxOTZMNjA2IDI3M1E2ODMgMzUwIDY4NiAzNTFRNjk0IDM1NCA3MDMgMzUxUTcwNSAzNTAgNzgyIDI3M0w4NTggMTk2TDkzMyAyNzNRMTAxMCAzNTAgMTAxMiAzNTFRMTAyMiAzNTYgMTAzMCAzNTFRMTAzNCAzNDkgMTA3MyAzMTBMMTExMiAyNzBIMTIzNkwxMjI5IDI3OFExMTczIDM0MCAxMTQ2IDQwN0wxMTQyIDQxN0gxMTg4UTEyMzMgMzA2IDEzMzEgMjUwUTEyMzEgMTkyIDExODggODNIMTE0MkwxMTQ2IDkzUTExNzMgMTYwIDEyMjkgMjIyTDEyMzYgMjMwSDExNjhRMTE1NSAyMzAgMTEzOSAyMzBUMTExOSAyMjlRMTExMiAyMjkgMTEwOCAyMjlUMTA5OSAyMzFUMTA5MiAyMzNUMTA4NSAyMzhUMTA3OCAyNDVUMTA2OCAyNTZUMTA1NiAyNjlMMTAyMSAzMDRMOTg0IDI2N1E5NDggMjMwIDkxMCAxOTFUODY3IDE0OVE4NTcgMTQ0IDg0OCAxNTBRODQ0IDE1MSA3NzAgMjI3VDY5NCAzMDRUNjE4IDIyOFQ1NDAgMTUwUTUzMSAxNDQgNTIxIDE0OVE1MTcgMTUyIDQ3OSAxOTFUNDA0IDI2N0wzNjcgMzA0TDMzMiAyNjlRMzI4IDI2NCAzMjAgMjU2VDMxMCAyNDZUMzAzIDIzOVQyOTYgMjM0VDI4OSAyMzFUMjgwIDIyOVQyNjkgMjI5UTI2NSAyMjkgMjQ5IDIyOVQyMjAgMjMwSDE1MkwxNTkgMjIyUTIxNSAxNjAgMjQyIDkzTDI0NiA4M0gyMjNMMjAwIDg0TDE5NSA5NlExNTIgMTkwIDU3IDI1MCcsXG4gICAgMHgyMUFFOiAnNDkxIDI3MlE0OTEgMjc1IDU0MiAzNTJUNTk3IDQzMlE2MDIgNDM3IDYwOSA0MzdRNjE3IDQzNyA2MjIgNDMyVDYyOCA0MTdUNTgyIDM0MUw1MzcgMjcyTDYwOCAyNzBINzUxTDgyMiAyNzJMODA4IDI4OFE3ODYgMzEzIDc2MSAzNTVUNzMzIDQxNFE3MzMgNDI0IDczNyA0MjZUNzY2IDQyOEg3OTNMODA2IDM5N1E4MjkgMzU0IDg2NCAzMTRRODk2IDI4NCA5MjggMjYzUTk0MiAyNTcgOTQyIDI1MFQ5MjggMjM3UTg4NyAyMDggODY0IDE4NVE4MjkgMTQ3IDgwNiAxMDNMNzkzIDc0TDc2NiA3MlE3NDIgNzIgNzM4IDczVDczMyA4NVE3MzUgMTAyIDc1NiAxMzdUNzk3IDE5OEw4MTcgMjI1TDgyMiAyMzBINTExTDQ1NyAxNDhRNDQwIDEyNCA0MjAgOTNRNDA0IDY4IDQwMCA2NFQzODkgNjBRMzgxIDYwIDM3NSA2NlQzNjggODFRMzY4IDg4IDQxNSAxNTlMNDYyIDIzMEgxNzVMMTg4IDIxNFEyMTAgMTg4IDIzNSAxNDVUMjY0IDg1UTI2NCA3NSAyNjAgNzRUMjMxIDcyTDIwNiA3NEwxOTEgMTAzUTE2OSAxNDIgMTY0IDE1MFExMzAgMTk1IDY0IDIzOVE1NiAyNDQgNTYgMjUwVDY0IDI2MVExMTUgMjk0IDE0MiAzMjNUMTkxIDM5N0wyMDYgNDI4SDIzMVEyNTUgNDI4IDI1OSA0MjZUMjY0IDQxNFEyNjAgMzk3IDIzNSAzNTVUMTg4IDI4OEwxNzUgMjcyTDMzMSAyNzBRNDg4IDI3MCA0OTEgMjcyJyxcbiAgICAweDIxQjA6ICc1NiA1NTVRNzQgNTY3IDc5IDU3MFQxMDcgNTkyVDE0MSA2MjVUMTcwIDY2N1QxOTggNzIySDIyMVEyNDQgNzIyIDI0NCA3MjFRMjQ0IDcxOCAyMzYgNjk5VDIwNyA2NDdUMTYxIDU4N0wxNTEgNTc2TDI5MSA1NzVIMjkySDI5M0gyOTRIMjk2SDI5N0gyOThIMjk5SDMwMEgzMDFIMzAySDMwNEgzMDVIMzA2SDMwN0gzMDhIMzA5SDMxMEgzMTFIMzEySDMxNEgzMTVIMzE2SDMxN0gzMThIMzE5SDMyMEgzMjFIMzIySDMyM0gzMjRIMzI1SDMyN0gzMjhIMzI5SDMzMEgzMzFIMzMySDMzM0gzMzRIMzM1SDMzNkgzMzdIMzM4SDMzOUgzNDBIMzQxSDM0MkgzNDNIMzQ1UTQzNSA1NzQgNDM4IDU3MEw0MzkgNTY5TDQ0MCA1NjhRNDQ0IDU2NCA0NDQgMjg3UTQ0NCAxNSA0NDIgMTJRNDM2IDAgNDI0IDBUNDA2IDEyUTQwNCAxNSA0MDQgMjc1VjUzNUgxNTFMMTYyIDUyM1ExODcgNDk1IDIwNyA0NjJUMjM2IDQxMFQyNDQgMzg5SDE5OEwxOTMgNDAyUTE3MSA0NTcgMTMxIDQ5N1Q1NiA1NTUnLFxuICAgIDB4MjFCMTogJzMwMSA3MjJRMzM5IDYxOCA0NDMgNTU1TDQzNyA1NTFRNDMxIDU0NyA0MjIgNTQxVDQwMSA1MjZUMzc3IDUwNFQzNTIgNDc3VDMyNyA0NDNUMzA2IDQwMkwzMDEgMzg5SDI1NVEyNTUgMzkyIDI2MyA0MTBUMjkxIDQ2MVQzMzcgNTIzTDM0OCA1MzVIOTVWMjc1UTk1IDE1IDkzIDEyUTg3IDAgNzUgMFQ1NyAxMlE1NSAxNSA1NSAyODdRNTUgNTY0IDU5IDU2OEw2MCA1NjlRNjQgNTczIDc2IDU3M1QyMDggNTc1TDM0OCA1NzZMMzM4IDU4N1EzMTQgNjEzIDI5NCA2NDZUMjY0IDY5OFQyNTUgNzIxUTI1NSA3MjIgMjc4IDcyMkgzMDEnLFxuICAgIDB4MjFCNjogJzM2MSAyMTBRMzczIDIxMCAzNzMgMTgyVjE3N1EzNzMgMTU1IDM3MCAxNTFUMzQ4IDEzOVEzMDMgMTE4IDI2NyA4NFQyMTYgMjhUMjAxIDFRMTk3IC0xIDE5NiAtMVExODkgLTEgMTg0IDhRMTY2IDM5IDE0MyA2NFQ5OSAxMDRUNjEgMTI5VDMyIDE0NFQxOSAxNTBRMTcgMTUyIDE3IDE3OVExNyAyMDMgMjEgMjA4UTI4IDIxMCAzOSAyMDZRMTA2IDE3OCAxNTcgMTM1TDE3NSAxMTlWMTI2UTE3OSAxMzAgMTc5IDE1NVExODIgMTczIDE5MyAyMDFRMjI4IDMwNSAzMTIgMzc0VDUxMCA0NTlRNTMyIDQ2MSA1NTEgNDYxSDU2N1E2NzggNDYxIDc4NCAzODZRODM1IDM0NCA4NjEgMzAxUTkwMiAyNDUgOTI2IDE3M1Q5NTAgMzJROTUwIDE1IDk0NCA4UTkzMCAtNiA5MTcgOFE5MTAgMTIgOTEwIDQzUTkwMSAyMDggODAxIDMxNFQ1NjEgNDIxUTQ1MyA0MjEgMzU5IDM1OVEzMDAgMzE5IDI2MyAyNThUMjE3IDEyNkwyMTYgMTI1UTIxNiAxMjQgMjE2IDEyM1QyMTcgMTIyUTIxOSAxMjIgMjI5IDEzMVQyNjAgMTU2VDMwMSAxODFRMzE0IDE4OSAzMzYgMTk5VDM2MSAyMTAnLFxuICAgIDB4MjFCNzogJzk3MiAyMDlROTgwIDIwOSA5ODEgMjA0VDk4MiAxNzlROTgyIDE1NSA5NzkgMTUxVDk1NyAxMzlROTE1IDEyMSA4NzggODZUODE1IDhRODA4IC0xIDgwMyAtMVE4MDEgLTEgNzk3IDFRNzk3IDYgNzgzIDI4VDczMiA4NFQ2NTAgMTM5TDYyOCAxNTBRNjI2IDE1MiA2MjYgMTc3UTYyNiAyMDEgNjMwIDIwNlE2MzYgMjEwIDYzNyAyMTBRNjUwIDIxMCA2OTcgMTgxUTcyNyAxNjYgNzY0IDEzN0w3ODQgMTE5TDc4MiAxMzJRNzY3IDIzOSA2ODkgMzE4VDQ5OSA0MTdRNDc0IDQyMSA0NDIgNDIxUTM0MyA0MjEgMjYxIDM2OVQxMzAgMjE5UTg2IDEyMSA4NiAyOFE4NiAxNSA3OSA4UTczIDEgNjYgMVQ1MyA4UTQ2IDE1IDQ2IDMwUTQ2IDEwMiA3NyAxOTJUMTg2IDM2MVEyNzQgNDQzIDM4NiA0NTlRMzk2IDQ2MCA0MjYgNDYwUTUxNSA0NjAgNTg4IDQzMVQ3MDMgMzYxVDc3MyAyNzFUODEyIDE4N1Q4MjIgMTMyUTgyMiAxMjMgODI1IDEyM1E5MzYgMjA5IDk3MiAyMDknLFxuICAgIDB4MjFCQTogJzM2OSA1NDNUMzY5IDU2M1QzOTcgNTgzUTQwOCA1ODMgNDQwIDU3OUw0NTQgNTc3TDQ2NCA1ODFRNDkyIDU5MiA1MTYgNjA5VDU1MiA2MzhUNTY1IDY1MFE2MDQgNjM4IDYwNyA2MzdRNjA2IDYzNiA1OTggNjI4VDU4NSA2MTRUNTcwIDYwMVQ1NDggNTg0VDUyMyA1NjhMNTEwIDU2MEw1MTYgNTU4UTUyMiA1NTUgNTI3IDU1M1Q1NDEgNTQ2VDU1OSA1MzZUNTgwIDUyM1Q2MDMgNTA2VDYyNiA0ODVRNzIyIDM4NCA3MjIgMjUwUTcyMiAxMDYgNjIyIDEyVDM4NyAtODNRMjUzIC04MyAxNTUgMTJUNTYgMjUwUTU2IDM1NyAxMTAgNDMzVDIzNSA1NDVRMjQ0IDU1MCAyNTIgNTUwUTI3MCA1NTAgMjcwIDUzMVEyNzAgNTIyIDI2MSA1MTVUMjM4IDUwMVQyMDIgNDc3VDE1OSA0MzNROTUgMzUyIDk1IDI1MFE5NSAxMzEgMTc4IDQ1VDM4OCAtNDJRNTExIC00MiA1OTYgNDNUNjgyIDI1MFE2ODIgMzQwIDYzNiA0MDhUNTIyIDUxMVE0OTUgNTI2IDQ4OCA1MjZRNDg4IDUyNSA0ODggNTI1VDQ4NyA1MjJUNDg1IDUxNUw0OTAgNTA2UTUwNSA0ODEgNTE2IDQ1MVQ1MzEgNDA0VDUzNSAzODRMNTMyIDM4NVE1MjkgMzg2IDUyNCAzODdUNTEzIDM5MEw0OTEgMzk3TDQ4OCA0MDhRNDcyIDQ4MyA0MTMgNTQyTDM5OSA1NDNRMzY5IDU0MyAzNjkgNTYzJyxcbiAgICAweDIxQkI6ICcxNzAgNjM3TDIxMyA2NTBRMjcwIDU5NyAzMTMgNTgxTDMyMyA1NzdMMzM3IDU3OVEzNjkgNTgzIDM4MCA1ODNRNDA4IDU4MyA0MDggNTYzVDM4MCA1NDNIMzc4TDM2NCA1NDJRMzA1IDQ4MyAyODkgNDA4TDI4NiAzOTdMMjY0IDM5MFEyNTkgMzg5IDI1NCAzODhUMjQ1IDM4NUwyNDIgMzg0UTI0MiAzODcgMjQ2IDQwM1QyNjEgNDUwVDI4NyA1MDZMMjkyIDUxNVEyOTEgNTE5IDI5MSA1MjFUMjkwIDUyNFQyODkgNTI2UTI4NCA1MjYgMjY1IDUxN1QyMTYgNDg2VDE2MCA0MzRUMTE0IDM1NFQ5NSAyNDlROTUgMTMyIDE3OCA0NVQzODggLTQyUTUxMyAtNDIgNTk3IDQ0VDY4MiAyNTBRNjgyIDMzNyA2MzggNDA0VDUzMiA1MDZRNTI5IDUwOCA1MjUgNTEwVDUxOSA1MTRUNTE1IDUxNlQ1MTEgNTE5VDUwOSA1MjJUNTA4IDUyNlQ1MDcgNTMxUTUwNyA1NTAgNTI1IDU1MFE1MzMgNTUwIDU0MiA1NDVRNTY5IDUzMiA1OTYgNTExVDY1MyA0NTRUNzAyIDM2NlQ3MjEgMjUwUTcyMSAxNTEgNjcyIDc0VDU0NyAtNDNUMzg4IC04M1EyNTQgLTgzIDE1NSAxMlQ1NiAyNTBRNTYgMzg1IDE1MSA0ODVRMTY0IDQ5OCAxNzkgNTA5VDIwNSA1MjhUMjI4IDU0MlQyNDcgNTUxVDI2MCA1NThMMjY3IDU2MEwyNTQgNTY4UTIxNSA1OTAgMTcwIDYzNycsXG4gICAgMHgyMUJDOiAnNjIgMjMwUTU2IDIzNiA1NSAyNDRRNTUgMjUyIDU3IDI1NVQ2OSAyNjVRMTE0IDI5MiAxNTEgMzI2VDIwOCAzOTFUMjQzIDQ0OFQyNjUgNDkxVDI3MyA1MDlRMjc2IDUxMSAyODggNTExUTMwNCA1MTEgMzA2IDUwNVEzMDkgNTAxIDMwMyA0ODRRMjkzIDQ1NiAyNzkgNDMwVDI1MSAzODNUMjIzIDM0NFQxOTYgMzEzVDE3MyAyOTFUMTU2IDI3NkwxNDggMjcwSDkyOVE5NDQgMjYxIDk0NCAyNTBUOTI5IDIzMEg2MicsXG4gICAgMHgyMUJEOiAnNTUgMjU2UTU2IDI2NCA2MiAyNzBIOTI5UTk0NCAyNjEgOTQ0IDI1MFQ5MjkgMjMwSDE0OFExNDkgMjI5IDE2NSAyMTVUMTk2IDE4NVQyMzEgMTQ1VDI3MCA4N1QzMDMgMTZRMzA5IC0xIDMwNiAtNVEzMDQgLTExIDI4OCAtMTFRMjc5IC0xMSAyNzYgLTEwVDI2OSAtNFQyNjQgMTBUMjUzIDM2VDIzMSA3NVExNzIgMTczIDY5IDIzNVE1OSAyNDIgNTcgMjQ1VDU1IDI1NicsXG4gICAgMHgyMUJFOiAnMTg4IDI1OFY2OTRIMjA4TDIxNSA2ODJRMjQ2IDYyOCAyOTMgNTk0VDM3NSA1NTFWNTI4UTM3NSA1MDUgMzc0IDUwNVEzNjkgNTA1IDM1MSA1MTBUMjk5IDUzNFQyMzcgNTc4TDIyOCA1ODdWMjA1UTIyOCAtMTc4IDIyNiAtMTgyUTIyMSAtMTk0IDIwOCAtMTk0VDE5MCAtMTgyUTE4OCAtMTc4IDE4OCAyNTgnLFxuICAgIDB4MjFCRjogJzQxIDU1MVE3NiA1NTkgMTIzIDU5MlQyMDEgNjgyTDIwOCA2OTRIMjI4VjI1OFEyMjggLTE3OCAyMjYgLTE4MlEyMjEgLTE5NCAyMDggLTE5NFQxOTAgLTE4MlExODggLTE3OCAxODggMjA1VjU4N0wxNzkgNTc4UTE1MSA1NTIgMTE3IDUzNFQ2NSA1MTFUNDIgNTA1UTQxIDUwNSA0MSA1MjhWNTUxJyxcbiAgICAweDIxQzA6ICc2OTEgNTAwUTY5MSA1MTEgNzExIDUxMVE3MjAgNTExIDcyMyA1MTBUNzMwIDUwNFQ3MzUgNDkwVDc0NiA0NjRUNzY4IDQyNVE3OTYgMzc4IDgzNSAzMzlUODk3IDI4NVQ5MzMgMjYzUTk0MSAyNTggOTQyIDI1NlQ5NDQgMjQ1VDkzNyAyMzBINzBRNTYgMjM3IDU2IDI1MFQ3MCAyNzBIODUyUTgwMiAzMDggNzYyIDM2NFQ3MDcgNDU1VDY5MSA1MDAnLFxuICAgIDB4MjFDMTogJzU2IDIzN1Q1NiAyNTBUNzAgMjcwSDkzN1E5NDQgMjYzIDk0NCAyNTZROTQ0IDI1MSA5NDQgMjUwVDk0MyAyNDZUOTQwIDI0MlQ5MzMgMjM4UTc5NCAxNTMgNzM0IDdRNzI5IC03IDcyNiAtOVQ3MTEgLTExUTY5NSAtMTEgNjkzIC01UTY5MCAtMSA2OTYgMTZRNzIxIDg0IDc2MyAxMzlUODUyIDIzMEg3MFE1NiAyMzcgNTYgMjUwJyxcbiAgICAweDIxQzI6ICcxOTAgNjgyUTE5NSA2OTQgMjA4IDY5NFQyMjYgNjgzUTIyOCA2NzkgMjI4IDI5NlYtODdMMjM3IC03OFEyNjUgLTUyIDI5OSAtMzRUMzUxIC0xMVQzNzQgLTVRMzc1IC01IDM3NSAtMjhWLTUxUTM0MCAtNjAgMjkzIC05MlQyMTUgLTE4MkwyMDggLTE5NEgxODhWMjQyUTE4OCA2NzggMTkwIDY4MicsXG4gICAgMHgyMUMzOiAnMTg4IDI5NVY1NzNRMTg4IDY1NyAxODkgNjcyVDIwMCA2OTJRMjA2IDY5NCAyMDggNjk0UTIyMSA2OTQgMjI2IDY4M1EyMjggNjc5IDIyOCAyNDJWLTE5NEgyMDhMMjAxIC0xODJRMTcwIC0xMjggMTIzIC05NFQ0MSAtNTFWLTI4UTQxIC01IDQyIC01UTQ3IC01IDY1IC0xMFQxMTcgLTM0VDE3OSAtNzhMMTg4IC04N1YyOTUnLFxuICAgIDB4MjFDNDogJzk0MyA1MDBRODk1IDQ3MSA4NTYgNDI3VDgwMSAzMzNINzc4UTc1NSAzMzMgNzU1IDMzNFE3NTUgMzM2IDc2MiAzNTNUNzkxIDQwNlQ4NDEgNDcyTDg0OCA0ODBINDU5UTcwIDQ4MCA2NyA0ODJRNTUgNDg4IDU1IDUwMFQ2NyA1MThRNzAgNTIwIDQ1OSA1MjBIODQ4TDg0MSA1MjhRODEzIDU1OSA3OTIgNTk0VDc2MyA2NDZUNzU1IDY2NlE3NTUgNjY3IDc3OCA2NjdIODAxUTgxNyA2MTcgODU2IDU3M1Q5NDMgNTAwWk01NiAxNjdRMTAyIDE5NCAxNDEgMjM4VDE5OCAzMzNIMjIxUTI0NCAzMzMgMjQ0IDMzMlEyMjEgMjY1IDE2MSAxOThMMTUxIDE4N0g1MzlROTI4IDE4NyA5MzAgMTg2UTk0NCAxODIgOTQ0IDE2N1E5NDQgMTU1IDkzNCAxNDlROTMwIDE0NyA1NDEgMTQ3SDE1MUwxNjAgMTM3UTE4NSAxMTAgMjA1IDc3VDIzNSAyNFQyNDQgMVEyNDQgMCAyMjEgMEgxOTlRMTU4IDEwNiA1NiAxNjcnLFxuICAgIDB4MjFDNjogJzU2IDUwMFExMDMgNTI3IDE0MiA1NzJUMTk5IDY2N0gyMjFRMjQ0IDY2NyAyNDQgNjY2UTI0NCA2NjQgMjM3IDY0N1QyMDggNTk0VDE1OCA1MjhMMTUxIDUyMEg1MzlROTI4IDUyMCA5MzIgNTE4UTk0NCA1MTMgOTQ0IDUwMFQ5MzIgNDgyUTkyOCA0ODAgNTM5IDQ4MEgxNTFMMTU4IDQ3MlExODYgNDQxIDIwNyA0MDZUMjM2IDM1NFQyNDQgMzM0UTI0NCAzMzMgMjIxIDMzM0gxOTlRMTgxIDM4MyAxNDIgNDI4VDU2IDUwMFpNOTQzIDE2N1E4MzUgMTAxIDgwMSAwSDc3OFE3NTUgMCA3NTUgMVQ3NTggOVQ3NjUgMjVUNzcxIDM5UTgwMCA5NCA4MzkgMTM3TDg0OCAxNDdINDU4UTY4IDE0NyA2NiAxNDlRNTUgMTU0IDU1IDE2N1E1NSAxODIgNjkgMTg2UTcxIDE4NyA0NjAgMTg3SDg0OEw4MzggMTk4UTgxMSAyMjggNzkxIDI2MVQ3NjIgMzE0TDc1NSAzMzJRNzU1IDMzMyA3NzggMzMzSDgwMVE4NDEgMjI3IDk0MyAxNjcnLFxuICAgIDB4MjFDNzogJzkzMCA0MzdROTQ0IDQyNiA5NDQgNDE2VDkzNCAzOTlROTMwIDM5NyA1NDAgMzk3SDE1MEwxNTkgMzg3UTE4NSAzNjAgMjA1IDMyOFQyMzQgMjc3VDI0MyAyNTJRMjQzIDIzNyAyMTcgMTkxVDE1OSAxMTNMMTUwIDEwM0g1NDBROTMwIDEwMyA5MzQgMTAxUTk0NCA5NCA5NDQgODRROTQ0IDcxIDkzMCA2NEw1NDAgNjNIMTUxUTE4MCAzNCAyMDMgLTJUMjM2IC02MUwyNDQgLTgzSDE5OFExNzggLTMxIDE0MiAxMVQ2NiA3N0w1NSA4M0w2NSA4OVExNTcgMTQ1IDE5NyAyNDZRMTk5IDI1MCAxOTAgMjY5UTE1MCAzNTkgNjUgNDExTDU1IDQxN0w2NiA0MjNRMTA2IDQ0NyAxNDIgNDg5VDE5OCA1ODNIMjQ0UTIwMiA0ODggMTUxIDQzN0g5MzAnLFxuICAgIDB4MjFDODogJzgzIDU1MVExOTAgNTkwIDI1MCA2OTRRMjUxIDY4OSAyNjMgNjcxVDMwNyA2MjFUMzgwIDU2N1E0MDkgNTUxIDQxNiA1NTFRNDIyIDU1MSA0NDcgNTYzVDUxMSA2MDhUNTc3IDY4NEw1ODIgNjk0UTY0MiA1OTEgNzQ5IDU1MVY1MjhRNzQ5IDUwNSA3NDggNTA1UTc0NSA1MDUgNzI0IDUxNVQ2NjkgNTQ2VDYxMiA1OTBMNjAyIDU5OVYtMTgxUTU5NSAtMTkzIDU4NSAtMTkzSDU4Mkg1ODFRNTY4IC0xOTMgNTY1IC0xODNMNTYzIC0xNzlMNTYyIDIwOVY1OThMNTUyIDU4OVE1MTcgNTU2IDQ3MyA1MzFUNDE0IDUwNkg0MTJRNDExIDUwNiAzOTMgNTE0VDM2MSA1MzBUMzI0IDU1M1QyODAgNTg5TDI3MCA1OThWLTE3OVEyNTUgLTE5MiAyNTAgLTE5M0gyNDdRMjM3IC0xOTMgMjMwIC0xODFWNTk5TDIyMCA1OTBRMTk3IDU2NyAxNjQgNTQ2VDExMCA1MTVUODQgNTA1UTgzIDUwNSA4MyA1MjhWNTUxJyxcbiAgICAweDIxQzk6ICc1NSA0MTZRNTUgNDI3IDcwIDQzN0g4NDhRODE5IDQ2NiA3OTYgNTAyVDc2NCA1NjFMNzU1IDU4M0g4MDFRODIxIDUzMSA4NTcgNDg5VDkzMyA0MjNMOTQ0IDQxN0w5MzQgNDExUTg0MyAzNTUgODAyIDI1NFE4MDAgMjUwIDgwOSAyMzFRODQ5IDE0MSA5MzQgODlMOTQ0IDgzTDkzMyA3N1E4OTMgNTMgODU3IDExVDgwMSAtODNINzU1UTc5NyAxMiA4NDggNjNINDU5TDcwIDY0UTU1IDcwIDU1IDg0UTU1IDk0IDY1IDEwMVE2OSAxMDMgNDU5IDEwM0g4NDlMODQwIDExM1E4MDYgMTQ4IDc3OSAxOTZUNzU2IDI1NFE3NTYgMjU1IDc2MCAyNjRUNzcwIDI4NlQ3ODYgMzE1VDgwOSAzNTFUODQwIDM4N0w4NDkgMzk3SDQ1OVE2OSAzOTcgNjUgMzk5UTU1IDQwNiA1NSA0MTYnLFxuICAgIDB4MjFDQTogJzIzMCA2ODFRMjQwIDY5NCAyNTEgNjk0UTI2MCA2OTMgMjcwIDY4MFYtOThMMjgwIC04OVEyOTcgLTczIDMxNCAtNjBUMzQ4IC0zOFQzNzQgLTI0VDM5NyAtMTNUNDEyIC02SDQxNFE0MjggLTYgNDczIC0zMlQ1NTIgLTg5TDU2MiAtOThWMjkxTDU2MyA2ODBRNTcwIDY5MyA1ODIgNjkzUTU5MyA2OTQgNjAyIDY4MVYtOTlMNjEyIC05MFE2MzUgLTY4IDY2OCAtNDdUNzIzIC0xNVQ3NDggLTVRNzQ5IC01IDc0OSAtMjhWLTUxUTY0MiAtOTEgNTgyIC0xOTRMNTc3IC0xODRRNTUxIC0xNDEgNTEyIC0xMDhUNDQ3IC02M1Q0MTYgLTUxVDM4NSAtNjNUMzIxIC0xMDhUMjU1IC0xODRMMjUwIC0xOTRRMTg5IC04OSA4MyAtNTFWLTI4UTgzIC01IDg0IC01UTg4IC01IDEwOSAtMTVUMTY0IC00NlQyMjAgLTkwTDIzMCAtOTlWNjgxJyxcbiAgICAweDIxQ0I6ICcxOTUgNTA0TDE5OCA1MTRIMjIxUTI0NCA1MTQgMjQ0IDUxMlEyNDQgNTA4IDIzOSA0OTBUMjE1IDQzN1QxNzEgMzc2TDE2MiAzNjdINTQ1UTkyOCAzNjcgOTMyIDM2NVE5NDQgMzYwIDk0NCAzNDdUOTMyIDMyOVE5MjggMzI3IDQ5MiAzMjdINTVWMzQ3TDY3IDM1NFExMTMgMzc5IDE0NiA0MjBUMTk1IDUwNFpNNjcgMTcxUTcwIDE3MyA1MDcgMTczSDk0NFYxNTNMOTMyIDE0NlE4MzkgOTUgODA0IC00TDgwMSAtMTRINzc4UTc1NSAtMTQgNzU1IC0xMlE3NjggNTkgODI4IDEyNEw4MzcgMTMzSDQ1NFE3MSAxMzMgNjcgMTM1UTU1IDE0MCA1NSAxNTNRNTUgMTY1IDY3IDE3MScsXG4gICAgMHgyMUNDOiAnNjkxIDY2MFE2OTEgNjcxIDcxMSA2NzFRNzIwIDY3MSA3MjMgNjcwVDczMCA2NjRUNzM1IDY1MFQ3NDYgNjI0VDc2OCA1ODVRNzk3IDUzOCA4MzYgNDk5VDg5NyA0NDVUOTMzIDQyM1E5NDEgNDE4IDk0MiA0MTZUOTQ0IDQwNVQ5MzcgMzkwSDcwUTU2IDM5NyA1NiA0MTBUNzAgNDMwSDg1MlE4MDIgNDY4IDc2MiA1MjRUNzA3IDYxNVQ2OTEgNjYwWk01NSAyNTZRNTYgMjY0IDYyIDI3MEg5MjlROTQ0IDI2MSA5NDQgMjUwVDkyOSAyMzBIMTQ4UTE0OSAyMjkgMTY1IDIxNVQxOTYgMTg1VDIzMSAxNDVUMjcwIDg3VDMwMyAxNlEzMDkgLTEgMzA2IC01UTMwNCAtMTEgMjg4IC0xMVEyNzkgLTExIDI3NiAtMTBUMjY5IC00VDI2NCAxMFQyNTMgMzZUMjMxIDc1UTE3MiAxNzMgNjkgMjM1UTU5IDI0MiA1NyAyNDVUNTUgMjU2JyxcbiAgICAweDIxQ0Q6ICczOTcgNTI1UTQxMCA1MjUgNDE0IDUyNFQ0MTggNTE2UTQxOCA1MDYgMzk0IDQ2N1QzMzEgMzgxTDMxOSAzNjdINDczTDYyNCAzNjlMNjU3IDQ0NVE2NzQgNDg3IDY4NCA1MDdUNjk5IDUzMVQ3MDkgNTM0UTcxNyA1MzQgNzIyIDUyOFQ3MjggNTE2UTcyOCA1MTAgNjk1IDQzNFE2ODkgNDE4IDY4MyA0MDJUNjcyIDM3N1Q2NjggMzY3SDkyOFE5NDIgMzU1IDk0MiAzNDdROTQyIDM0MSA5MjggMzI3SDc5MVE2NTEgMzI3IDY1MSAzMjVRNjQ5IDMyNCA2MjAgMjUxVDU4NiAxNzRRNTg2IDE3MiA3NTcgMTcySDkyOFE5NDIgMTU4IDk0MiAxNTJROTQyIDE0MyA5MjggMTMySDU2OEw1MzcgNTRRNTEwIC05IDUwMyAtMjJUNDg2IC0zNVE0NzkgLTM1IDQ3MyAtMjlUNDY2IC0xN1Q0OTUgNjFMNTI2IDEzMkgzMTlMMzMxIDExOFEzNjQgODEgMzkxIDM3VDQxOCAtMTdRNDE4IC0yMyA0MTUgLTI0VDQwMSAtMjZRMzk4IC0yNiAzOTcgLTI2TDM4NCAtMjRMMzc3IC0xM1EzNDQgNDkgMzAxIDk3VDIxOCAxNzBUMTQzIDIxMFQ4NCAyMzNUNTUgMjQ1UTU0IDI1MyA1OSAyNTZUODYgMjY3UTI4MSAzMjcgMzc3IDUxMkwzODQgNTI1SDM5N1pNNjA2IDMyNVE2MDYgMzI3IDQzOSAzMjdIMjc1UTI1OCAzMTIgMTc5IDI2NUwxNDggMjQ5UTIyOCAyMDYgMjYyIDE4MUwyNzUgMTcySDU0NEw1NzUgMjQ3TDYwNiAzMjUnLFxuICAgIDB4MjFDRTogJzM5NSAtMjRUMzk1IC0xOVQ0MTcgNTdUNDQwIDEzMkgyNTVMMjY2IDExNlEzMDggNjQgMzQwIC02UTM0MiAtMTcgMzM3IC0yMVEzMzUgLTI2IDMyMCAtMjZUMzAyIC0xOVEzMDIgLTE1IDI5NCA0VDI2NSA1NFQyMTcgMTE3VDE0NSAxODJUNDkgMjM2UTMwIDI0MyAzMyAyNTRRNDAgMjYxIDQ5IDI2M1E5OCAyODMgMTQyIDMxNVQyMTQgMzc5VDI2MyA0NDJUMjkzIDQ5M1QzMDIgNTE5UTMwNSA1MjUgMzIwIDUyNVQzMzcgNTIxUTM0MiA1MTYgMzQwIDUwNVEzMDggNDM1IDI2NiAzODNMMjU1IDM3MEwzODQgMzY3SDUxNVE1NjEgNTIyIDU2OSA1MzBRNTc0IDUzNCA1ODAgNTM0UTU4NyA1MzQgNTk0IDUyOFQ2MDIgNTE2UTYwMiA1MTIgNTgwIDQ0MVQ1NTcgMzY3SDY1MUw3NDIgMzcwTDczMSAzODNRNjg5IDQzNSA2NTcgNTA1UTY1NSA1MTYgNjYwIDUyMVE2NjIgNTI1IDY3NyA1MjVUNjk1IDUxOVE2OTUgNTE1IDcwMyA0OTZUNzMyIDQ0NlQ3ODAgMzgzVDg1MyAzMTdUOTQ5IDI2M1E5NjcgMjU4IDk2NCAyNDVROTU5IDI0MCA5NDkgMjM2UTg5NyAyMTUgODUyIDE4MlQ3NzkgMTE2VDczMSA1MlQ3MDMgM1Q2OTUgLTE5UTY5MiAtMjYgNjc3IC0yNlQ2NjAgLTIxUTY1NSAtMTcgNjU3IC02UTY3MCAyMSA2ODIgNDJUNzAyIDc3VDcxNyA5OVQ3MjggMTE0VDczNSAxMjJUNzM5IDEyNlQ3NDAgMTMwVDYxMyAxMzJINDgyTDQ2MCA1NFE0NDAgLTkgNDMzIC0yM1Q0MTUgLTM3UTQwOCAtMzcgNDAyIC0zMVpNNTAyIDMyNVE1MDIgMzI3IDM2MCAzMjdIMjE3TDE5NSAzMTBRMTczIDI5MSAxMjAgMjU2TDExMSAyNTBRMTE0IDI0OCAxNDMgMjI5VDE5NSAxOTBMMjE3IDE3MkgzMzVMNDUzIDE3NEw1MDIgMzI1Wk04ODYgMjUwUTg4NSAyNTEgODY1IDI2M1Q4MzEgMjg2VDgwMiAzMTBMNzgwIDMyN0g1NDRMNTM1IDI5OVE1MzEgMjgzIDUxMSAyMjNMNDk1IDE3NEw2MzcgMTcySDc4MEw4MDIgMTkwUTg0MyAyMjUgODc3IDI0M0w4ODYgMjUwJyxcbiAgICAweDIxQ0Y6ICczNDYgMTc0UTM0OCAxNzYgMzc4IDI0OVQ0MTEgMzI1UTQxMSAzMjcgMjM5IDMyN0g2OFE1NSAzNDIgNTUgMzQ3UTU1IDM1NCA2OCAzNjdINDI4TDQ1OSA0NDVRNDg3IDUwOSA0OTQgNTIxVDUxMCA1MzRRNTE3IDUzNCA1MjQgNTI3VDUzMSA1MTZRNTMxIDUxNSA1MDIgNDM4TDQ3MSAzNjdINjc3TDY2NiAzODFRNjMxIDQyMSA2MDUgNDYzVDU3OCA1MTZRNTc4IDUyMiA1ODIgNTIzVDU5OSA1MjVINjE1TDYxOSA1MTJRNjU5IDQzNyA3MTQgMzgzVDgxMiAzMDlUODk2IDI3MlQ5NDIgMjU0UTk0MyAyNDYgOTM4IDI0M1Q5MTEgMjMyUTcxOCAxNzIgNjE5IC0xM0w2MTUgLTI0TDU5OSAtMjZRNTc4IC0yNiA1NzggLTE3UTU3OCAtMTEgNTg3IDZUNjE3IDUzVDY2NiAxMThMNjc3IDEzMkgzNzNMMzM5IDU0UTMyMyAxMiAzMTMgLThUMjk4IC0zMlQyODggLTM1UTI4MCAtMzUgMjc1IC0yOVQyNjkgLTE3UTI2OSAtMTQgMjk4IDU3VDMyOCAxMzJINjhRNTUgMTQ1IDU1IDE1MlE1NSAxNTYgNTYgMTU4VDYyIDE2NVQ2OCAxNzJIMjA2UTM0NiAxNzIgMzQ2IDE3NFpNODQ4IDI0OVE3NjMgMjk3IDczNSAzMThMNzIyIDMyN0g0NTVMNDIyIDI1MkwzOTEgMTc0UTM5MSAxNzIgNTU3IDE3Mkg3MjJMNzM1IDE4MVE3NzMgMjEwIDgxOSAyMzRMODQ4IDI0OScsXG4gICAgMHgyMUQwOiAnOTQ0IDE1M1E5NDQgMTQwIDkyOSAxMzNIMzE4TDMyOCAxMjNRMzc5IDY5IDQxNCAwUTQxOSAtMTMgNDE5IC0xN1E0MTkgLTI0IDM5OSAtMjRRMzg4IC0yNCAzODUgLTIzVDM3NyAtMTJRMzMyIDc3IDI1MyAxNDRUNzIgMjM3UTYyIDI0MCA1OSAyNDJUNTYgMjUwVDU5IDI1N1Q3MCAyNjJUODkgMjY4VDExOSAyNzhUMTYwIDI5NlEzMDMgMzY2IDM3NyA1MTJRMzgyIDUyMiAzODUgNTIzVDQwMSA1MjVRNDE5IDUyNCA0MTkgNTE1UTQxOSA1MTAgNDE0IDUwMFEzNzkgNDMxIDMyOCAzNzdMMzE4IDM2N0g5MjlROTQ0IDM1OSA5NDQgMzQ3UTk0NCAzMzYgOTMwIDMyOEw2MDIgMzI3SDI3NEwyNjQgMzE5UTIyNSAyODkgMTQ3IDI1MFExNDggMjQ5IDE2NSAyNDFUMjEwIDIxN1QyNjQgMTgxTDI3NCAxNzNIOTMwUTkzMSAxNzIgOTMzIDE3MVQ5MzYgMTY5VDkzOCAxNjdUOTQxIDE2NFQ5NDIgMTYyVDk0MyAxNThUOTQ0IDE1MycsXG4gICAgMHgyMUQxOiAnMjI4IC0xNzlRMjI3IC0xODAgMjI2IC0xODJUMjIzIC0xODZUMjIxIC0xODlUMjE4IC0xOTJUMjE0IC0xOTNUMjA4IC0xOTRRMTk2IC0xOTQgMTg5IC0xODFMMTg4IDEyNVY0MzBMMTc2IDQxOVExMjIgMzY5IDU5IDMzOFE0NiAzMzAgNDAgMzMwUTM4IDMzMCAzMSAzMzdWMzUwUTMxIDM2MiAzMyAzNjVUNDYgMzc0UTYwIDM4MSA3NyAzOTBUMTI4IDQyNlQxOTAgNDg0VDI0NyA1NjdUMjkyIDY3N1EyOTUgNjg4IDI5OCA2OTJRMzAyIDY5NCAzMDUgNjk0UTMxMyA2OTQgMzE4IDY3N1EzMzQgNjE5IDM2MyA1NjhUNDIwIDQ4NVQ0ODEgNDI3VDUzMiAzOTFUNTY0IDM3NFE1NzUgMzY4IDU3NyAzNjVUNTc5IDM1MFYzMzdRNTcyIDMzMCA1NzAgMzMwUTU2NCAzMzAgNTUxIDMzOFE0ODcgMzcwIDQzNSA0MTlMNDIzIDQzMEw0MjIgMTI1Vi0xODFRNDA5IC0xOTQgNDAxIC0xOTRRMzk3IC0xOTQgMzk0IC0xOTNUMzg4IC0xODlUMzg1IC0xODRUMzgyIC0xODBWLTE3N1Y0NzVMMzczIDQ4N1EzMzEgNTQxIDMwNSA2MDJRMzA0IDYwMSAzMDAgNTkxVDI5MCA1NzFUMjc4IDU0OFQyNjAgNTE5VDIzOCA0ODhMMjI5IDQ3NkwyMjggMTQ4Vi0xNzknLFxuICAgIDB4MjFEMjogJzU4MCA1MTRRNTgwIDUyNSA1OTYgNTI1UTYwMSA1MjUgNjA0IDUyNVQ2MDkgNTI1VDYxMyA1MjRUNjE1IDUyM1Q2MTcgNTIwVDYxOSA1MTdUNjIyIDUxMlE2NTkgNDM4IDcyMCAzODFUODMxIDMwMFQ5MjcgMjYzUTk0NCAyNTggOTQ0IDI1MFQ5MzUgMjM5VDg5OCAyMjhUODQwIDIwNFE2OTYgMTM0IDYyMiAtMTJRNjE4IC0yMSA2MTUgLTIyVDYwMCAtMjRRNTgwIC0yNCA1ODAgLTE3UTU4MCAtMTMgNTg1IDBRNjIwIDY5IDY3MSAxMjNMNjgxIDEzM0g3MFE1NiAxNDAgNTYgMTUzUTU2IDE2OCA3MiAxNzNINzI1TDczNSAxODFRNzc0IDIxMSA4NTIgMjUwUTg1MSAyNTEgODM0IDI1OVQ3ODkgMjgzVDczNSAzMTlMNzI1IDMyN0g3MlE1NiAzMzIgNTYgMzQ3UTU2IDM2MCA3MCAzNjdINjgxTDY3MSAzNzdRNjM4IDQxMiA2MDkgNDU4VDU4MCA1MTQnLFxuICAgIDB4MjFEMzogJzQwMSA2OTRRNDEyIDY5NCA0MjIgNjgxVjM3NUw0MjMgNzBMNDM1IDgxUTQ4NyAxMzAgNTUxIDE2MlE1NjQgMTcwIDU3MCAxNzBRNTcyIDE3MCA1NzkgMTYzVjE1MFE1NzkgMTM4IDU3NyAxMzVUNTY0IDEyNlE1NDEgMTE0IDUxOCA5OVQ0NTMgNDhUMzc0IC00NlQzMTggLTE3N1EzMTMgLTE5NCAzMDUgLTE5NFQyOTMgLTE3OFQyNzIgLTExOVQyMjUgLTMxUTE1OCA3MCA0NiAxMjZRMzUgMTMyIDMzIDEzNVQzMSAxNTBWMTYzUTM4IDE3MCA0MCAxNzBRNDYgMTcwIDU5IDE2MlExMjIgMTMxIDE3NiA4MUwxODggNzBWMzc1TDE4OSA2ODFRMTk5IDY5NCAyMDggNjk0UTIxOSA2OTQgMjI4IDY4MFYzNTJMMjI5IDI1TDIzOCAxMlEyNzkgLTQyIDMwNSAtMTAyUTM0NCAtMjMgMzczIDEzTDM4MiAyNVY2NzhRMzg3IDY5MiA0MDEgNjk0JyxcbiAgICAweDIxRDQ6ICczMDggNTI0UTMxOCA1MjYgMzIzIDUyNlEzNDAgNTI2IDM0MCA1MTRRMzQwIDUwNyAzMzYgNDk5UTMyNiA0NzYgMzE0IDQ1NFQyOTIgNDE3VDI3NCAzOTFUMjYwIDM3NEwyNTUgMzY4UTI1NSAzNjcgNTAwIDM2N1E3NDQgMzY3IDc0NCAzNjhMNzM5IDM3NFE3MzQgMzc5IDcyNiAzOTBUNzA3IDQxNlQ2ODUgNDUzVDY2MyA0OTlRNjU4IDUxMSA2NTggNTE1UTY1OCA1MjUgNjgwIDUyNVE2ODcgNTI0IDY5MCA1MjNUNjk1IDUxOVQ3MDEgNTA3UTc2NiAzNTkgOTAyIDI4N1E5MjEgMjc2IDkzOSAyNjlUOTYxIDI1OVQ5NjYgMjUwUTk2NiAyNDYgOTY1IDI0NFQ5NjAgMjQwVDk0OSAyMzZUOTMwIDIyOFQ5MDIgMjEzUTc2MyAxMzcgNzAxIC03UTY5NyAtMTYgNjk1IC0xOVQ2OTAgLTIzVDY4MCAtMjVRNjU4IC0yNSA2NTggLTE1UTY1OCAtMTEgNjYzIDFRNjczIDI0IDY4NSA0NlQ3MDcgODNUNzI1IDEwOVQ3MzkgMTI2TDc0NCAxMzJRNzQ0IDEzMyA1MDAgMTMzUTI1NSAxMzMgMjU1IDEzMkwyNjAgMTI2UTI2NSAxMjEgMjczIDExMFQyOTIgODRUMzE0IDQ3VDMzNiAxUTM0MSAtMTEgMzQxIC0xNVEzNDEgLTI1IDMxOSAtMjVRMzEyIC0yNCAzMDkgLTIzVDMwNCAtMTlUMjk4IC03UTIzMyAxNDEgOTcgMjEzUTgzIDIyMSA3MCAyMjdUNTEgMjM1VDQxIDIzOVQzNSAyNDNUMzQgMjUwVDM1IDI1NlQ0MCAyNjFUNTEgMjY1VDcwIDI3M1Q5NyAyODdRMjM1IDM2MyAyOTkgNTA5UTMwNSA1MjIgMzA4IDUyNFpNNzkyIDMxOUw3ODMgMzI3SDIxNlExODMgMjk0IDEyMCAyNTZMMTEwIDI1MEwxMjAgMjQ0UTE3MyAyMTIgMjA3IDE4MUwyMTYgMTczSDc4M0w3OTIgMTgxUTgyNiAyMTIgODc5IDI0NEw4ODkgMjUwTDg3OSAyNTZRODI2IDI4OCA3OTIgMzE5JyxcbiAgICAweDIxRDU6ICcyOTAgNzU1UTI5OCA3NzIgMzA1IDc3MlQzMTggNzU3VDM0MyA3MDZUMzkzIDYzM1E0MzEgNTg4IDQ3MyA1NThUNTQ1IDUxNVQ1NzkgNDk3VjQ4NFE1NzkgNDY0IDU3MCA0NjRRNTY0IDQ2NCA1NTAgNDcwUTQ4NSA0OTcgNDIzIDU1MEw0MjIgNDAwVjEwMEw0MjMgLTUwUTQ4NSAzIDU1MCAzMFE1NjUgMzYgNTcwIDM2UTU3OSAzNiA1NzkgMTZWM1E1NzUgLTEgNTQ5IC0xMlQ0ODAgLTUzVDM5MyAtMTMyUTM2MSAtMTcyIDM0MiAtMjA4VDMxOCAtMjU4VDMwNSAtMjcyVDI5MyAtMjU4VDI2OCAtMjA4VDIxNyAtMTMyUTE3MCAtODAgMTI4IC01MVQ2MSAtMTJUMzEgM1YxNlEzMSAzNiA0MCAzNlE0NiAzNiA2MSAzMFE4NiAxOSAxMDkgNlQxNDYgLTE4VDE3MyAtMzhUMTg4IC01MFY1NTBRMTg2IDU0OSAxNzMgNTM5VDE0NyA1MTlUMTEwIDQ5NVQ2MSA0NzBRNDYgNDY0IDQwIDQ2NFEzMSA0NjQgMzEgNDg0VjQ5N1EzNCA1MDAgNjMgNTEzVDEzNSA1NTdUMjE3IDYzM1EyNjcgNjkyIDI5MCA3NTVaTTM3NCA1OThRMzYzIDYxMCAzNTEgNjI1VDMzMiA2NTFUMzE2IDY3NlQzMDUgNjk1TDI5NCA2NzZRMjgyIDY1NyAyNjcgNjM2VDIzNiA1OThMMjI4IDU4OVYtODlMMjM2IC05OFEyNDcgLTExMCAyNTkgLTEyNVQyNzggLTE1MVQyOTQgLTE3NlQzMDUgLTE5NUwzMTYgLTE3NlEzMjggLTE1NyAzNDMgLTEzNlQzNzQgLTk4TDM4MiAtODlWNTg5TDM3NCA1OTgnLFxuICAgIDB4MjFEQTogJzk0NCA1NFE5NDIgNDQgOTI5IDM2SDM3MlEzNzIgMzQgMzc3IDI2VDM5NSAtNFQ0MjIgLTU4UTQ0MiAtMTA5IDQ0MiAtMTEwVDQwOCAtMTExSDM3NEwzNzAgLTEwMFEyODIgMTI0IDg3IDI0M0w3NiAyNTBMODcgMjU3UTI4NCAzNzcgMzcwIDYwMEwzNzQgNjExSDQwOFE0NDIgNjExIDQ0MiA2MTBRNDIzIDU1MCAzODEgNDgwUTM4MCA0NzggMzc5IDQ3NVQzNzYgNDcxVDM3NCA0NjhUMzcyIDQ2NVY0NjRIOTI5UTk0MiA0NTYgOTQ0IDQ0NlE5NDQgNDQyIDk0MyA0MzlUOTQxIDQzNFQ5MzggNDMwVDkzNSA0MjhUOTMxIDQyNlQ5MjggNDI0SDM0NEwzMzYgNDE0UTI3NyAzMzYgMjAwIDI3N0wxOTEgMjcwSDU2MFE5MjkgMjcwIDkzMyAyNjhROTQ0IDI2MiA5NDQgMjUwUTk0NCAyMzcgOTMzIDIzMlE5MjkgMjMwIDU2MCAyMzBIMTkxTDIwMCAyMjNRMjc5IDE2MiAzMzYgODZMMzQ0IDc2SDkyOFE5MjkgNzYgOTMxIDc1VDkzNCA3M1Q5MzggNzBUOTQxIDY2VDk0MyA2MVQ5NDQgNTQnLFxuICAgIDB4MjFEQjogJzU2IDI1MFE1NiAyNjAgNjggMjcwSDgwOEw3OTkgMjc3UTcyMCAzMzggNjYzIDQxNEw2NTUgNDI0SDM2M1E3MSA0MjQgNjggNDI2UTU1IDQzMiA1NSA0NDRUNjggNDYyUTcxIDQ2NCAzNDkgNDY0SDYyN1E2MjcgNDY2IDYyMiA0NzRUNjA0IDUwNFQ1NzcgNTU4UTU1NyA2MDkgNTU3IDYxMFQ1OTEgNjExSDYyNkw2MjkgNjAwUTcxNyAzNzYgOTEyIDI1N0w5MjMgMjUwTDkxMiAyNDNRNzE1IDEyMyA2MjkgLTEwMEw2MjYgLTExMUg1OTFRNTU3IC0xMTEgNTU3IC0xMTBRNTc2IC01MCA2MTggMjBRNjE5IDIyIDYyMCAyNVQ2MjMgMjlUNjI1IDMyVDYyNiAzNUw2MjcgMzZIMzQ5UTcxIDM2IDY4IDM4UTU1IDQ0IDU1IDU2VDY4IDc0UTcxIDc2IDM2MyA3Nkg2NTVMNjYzIDg2UTcyMiAxNjQgNzk5IDIyM0w4MDggMjMwSDQzOEw2OCAyMzFRNTYgMjM2IDU2IDI1MCcsXG4gICAgMHgyMUREOiAnNzYgMjMwUTY4IDIzMCA2MiAyMzdUNTYgMjUwUTU2IDI1NyA2MyAyNjRUOTEgMjkxUTEwMiAzMDAgMTA4IDMwNkwxNTkgMzUxUTE2OCAzNTYgMTc3IDM1MUwyMTggMzE2TDMwMyAyMzlMMzUzIDE5NVEzNzYgMjE0IDQwMyAyMzlMNDg4IDMxNkw1MjkgMzUxUTUzOCAzNTYgNTQ2IDM1MVE1NDggMzUwIDU5NCAzMTBMNjM4IDI3MEg4NDhMODQxIDI3OFE4MTMgMzA5IDc5MiAzNDRUNzYzIDM5NlQ3NTUgNDE2UTc1NSA0MTcgNzc4IDQxN0g4MDFRODE3IDM2NyA4NTYgMzIzVDk0MyAyNTBRODk1IDIyMSA4NTYgMTc3VDgwMSA4M0g3NzhRNzU1IDgzIDc1NSA4NFE3NTUgODYgNzYyIDEwM1Q3OTEgMTU2VDg0MSAyMjJMODQ4IDIzMEg3MzdRNjI1IDIzMCA2MjIgMjMyUTYyMCAyMzMgNTk5IDI1MVQ1NTggMjg4TDUzNyAzMDZRNTM3IDMwNSA0NTEgMjI4VDM2MiAxNDlRMzUzIDE0NiAzNDUgMTQ5UTM0MSAxNTAgMjU1IDIyN1QxNjkgMzA2UTE2NyAzMDYgMTI5IDI3MFExMjMgMjY1IDExNSAyNTdUMTAyIDI0NVQ5MyAyMzdUODQgMjMyVDc2IDIzMCcsXG4gICAgMHgyMUUwOiAnMjkyIDQxOVEyOTIgNDAwIDI2MSAzNDdUMjExIDI3NUgzMDZIMzY0UTQwMCAyNzUgNDExIDI3MVQ0MjIgMjUwVDQxMSAyMzBUMzY2IDIyNUgzMDZIMjExUTIxNCAyMjIgMjMyIDE5N1QyNzEgMTM2VDI5MiA4MlEyOTIgNzEgMjg1IDY4VDI2MiA2NEgyNTBIMjQxUTIyMSA2NCAyMTYgNjdUMjA1IDgzUTE4NiAxMjcgMTUzIDE2N1Q3OCAyMzBRNjQgMjM4IDY0IDI1MFE2NCAyNTggNjkgMjYzVDgyIDI3MlQxMDYgMjg4VDEzOSAzMThRMTYyIDM0MiAxNzcgMzY1VDE5OCA0MDJUMjA5IDQyNVQyMjMgNDM2UTIyNCA0MzcgMjUyIDQzN0gyNThRMjkyIDQzNyAyOTIgNDE5Wk01MDEgMjM3VDUwMSAyNTBUNTE1IDI3MEg4MTlRODM0IDI2MiA4MzQgMjUwVDgxOSAyMzBINTE1UTUwMSAyMzcgNTAxIDI1MFpNOTE4IDIzN1Q5MTggMjUwVDkzMiAyNzBIMTIzNlExMjUxIDI2MiAxMjUxIDI1MFQxMjM2IDIzMEg5MzJROTE4IDIzNyA5MTggMjUwJyxcbiAgICAweDIxRTI6ICc4NCAyMzdUODQgMjUwVDk4IDI3MEg0MDJRNDE3IDI2MiA0MTcgMjUwVDQwMiAyMzBIOThRODQgMjM3IDg0IDI1MFpNNTAxIDIzN1Q1MDEgMjUwVDUxNSAyNzBIODE5UTgzNCAyNjIgODM0IDI1MFQ4MTkgMjMwSDUxNVE1MDEgMjM3IDUwMSAyNTBaTTEwMjIgNDE3UTEwMjIgNDM3IDEwNTUgNDM3SDEwNjdRMTA5MCA0MzcgMTA5NyA0MzRUMTEwOSA0MTdRMTEyOCAzNzMgMTE2MSAzMzNUMTIzNiAyNzBRMTI1MSAyNjEgMTI1MSAyNTBRMTI1MSAyNDEgMTI0NCAyMzZUMTIxNiAyMTdUMTE3NSAxODJRMTE0OSAxNTUgMTEzMyAxMjhUMTEwOSA4NVQxMDk3IDY2UTEwOTMgNjQgMTA2NSA2NEgxMDUzUTEwMzEgNjQgMTAyNSA3MlQxMDI3IDEwMFExMDM2IDEyNCAxMDQ5IDE0N1QxMDczIDE4NVQxMDkxIDIxMFQxMTAxIDIyM0wxMTAzIDIyNUgxMDA4SDk1MFE5MTQgMjI1IDkwMyAyMjlUODkyIDI1MFQ5MDMgMjcwVDk0OCAyNzVIMTAwOEgxMTAzTDExMDEgMjc3UTExMDAgMjgwIDEwOTEgMjkxVDEwNjcgMzI1VDEwMzkgMzc0UTEwMjIgNDA4IDEwMjIgNDE3JyxcbiAgICAweDIyMDA6ICcwIDY3M1EwIDY4NCA3IDY4OVQyMCA2OTRRMzIgNjk0IDM4IDY4MFQ4MiA1NjdMMTI2IDQ1MUg0MzBMNDczIDU2NlE0ODMgNTkzIDQ5NCA2MjJUNTEyIDY2OFQ1MTkgNjg1UTUyNCA2OTQgNTM4IDY5NFE1NTYgNjkyIDU1NiA2NzRRNTU2IDY3MCA0MjYgMzI5VDI5MyAtMTVRMjg4IC0yMiAyNzggLTIyVDI2MyAtMTVRMjYwIC0xMSAxMzEgMzI4VDAgNjczWk00MTQgNDEwUTQxNCA0MTEgMjc4IDQxMVQxNDIgNDEwTDI3OCA1NUw0MTQgNDEwJyxcbiAgICAweDIyMDE6ICc0MDQgMjY5UTQxMiAyNjkgNDE4IDI2N1Q0MjggMjYxVDQzNSAyNTNUNDQxIDI0NUw0NDQgMjQwVjE3MlE0NDQgMTAzIDQ0MyA5NlE0NDAgODEgNDMxIDY1VDQwMyAyN1QzNDQgLTdUMjUwIC0yMVQxNTYgLThUOTcgMjdUNjkgNjVUNTggOTZRNTYgMTAzIDU2IDQxM1E1NiA3MjIgNTggNzI5UTc0IDgyMiAyMTUgODQ1UTIyMSA4NDYgMjI5IDg0NkgyNDNRMjgyIDg0NiAyOTAgODQ1UTQyMiA4MjYgNDQzIDcyOVE0NDQgNzIyIDQ0NCA2NTNWNTg2TDQ0MiA1ODNRNDQxIDU4MCA0NDAgNTc4VDQzNiA1NzNUNDMwIDU2N1Q0MjMgNTYyVDQxNSA1NThUNDA0IDU1NlEzNzcgNTU2IDM2NyA1ODNRMzY0IDU5MCAzNjQgNjU0VjcxOVEzNjMgNzIxIDM2MCA3MjZUMzU1IDczM1EzMjYgNzY2IDI1MCA3NjZIMjQ5UTIzNSA3NjYgMjE5IDc2NVQxNzQgNzUyVDEzNyA3MTlWMTA3UTE0NSA4MyAxNzggNzFUMjUxIDU4SDI1NFEzNDAgNTggMzY0IDEwN1YxNzJRMzY0IDE3NiAzNjQgMTg3VDM2MyAyMDRRMzYzIDI2OSA0MDQgMjY5JyxcbiAgICAweDIyMDI6ICcyMDIgNTA4UTE3OSA1MDggMTY5IDUyMFQxNTggNTQ3UTE1OCA1NTcgMTY0IDU3N1QxODUgNjI0VDIzMCA2NzVUMzAxIDcxMEwzMzMgNzE1SDM0NVEzNzggNzE1IDM4NCA3MTRRNDQ3IDcwMyA0ODkgNjYxVDU0OSA1NjhUNTY2IDQ1N1E1NjYgMzYyIDUxOSAyNDBUNDAyIDUzUTMyMSAtMjIgMjIzIC0yMlExMjMgLTIyIDczIDU2UTQyIDEwMiA0MiAxNDhWMTU5UTQyIDI3NiAxMjkgMzcwVDMyMiA0NjVRMzgzIDQ2NSA0MTQgNDM0VDQ1NSAzNjdMNDU4IDM3OFE0NzggNDYxIDQ3OCA1MTVRNDc4IDYwMyA0MzcgNjM5VDM0NCA2NzZRMjY2IDY3NiAyMjMgNjEyUTI2NCA2MDYgMjY0IDU3MlEyNjQgNTQ3IDI0NiA1MjhUMjAyIDUwOFpNNDMwIDMwNlE0MzAgMzcyIDQwMSA0MDBUMzMzIDQyOFEyNzAgNDI4IDIyMiAzODJRMTk3IDM1NCAxODMgMzIzVDE1MCAyMjFRMTMyIDE0OSAxMzIgMTE2UTEzMiAyMSAyMzIgMjFRMjQ0IDIxIDI1MCAyMlEzMjcgMzUgMzc0IDExMlEzODkgMTM3IDQwOSAxOTZUNDMwIDMwNicsXG4gICAgMHgyMjAzOiAnNTYgNjYxVDU2IDY3NFQ3MCA2OTRINDg3UTQ5NyA2ODYgNTAwIDY3OVYxNVE0OTcgMTAgNDg3IDFMMjc5IDBINzBRNTYgNyA1NiAyMFQ3MCA0MEg0NjBWMzI3SDg0UTcwIDMzNCA3MCAzNDdUODQgMzY3SDQ2MFY2NTRINzBRNTYgNjYxIDU2IDY3NCcsXG4gICAgMHgyMjA1OiAnMzMxIDY5NlEzMzUgNzA4IDMzOSA3MjJUMzQ1IDc0NFQzNTAgNzU5VDM1NyA3NjlUMzY3IDc3MlEzNzQgNzcyIDM4MSA3NjdUMzg4IDc1NFEzODggNzQ2IDM3NyA3MTJMMzY2IDY3M0wzNzggNjYxUTQ2MCA1NzUgNDYwIDM0NFE0NjAgMjgxIDQ1NiAyMzRUNDMyIDEyNlQzNzMgMjdRMzE5IC0yMiAyNTAgLTIyUTIxNCAtMjIgMTgwIC03UTE2OCAtMyAxNjggLTRMMTU5IC0zM1ExNDggLTcxIDE0MiAtNzVRMTM4IC03OCAxMzIgLTc4UTEyNCAtNzggMTE4IC03MlQxMTEgLTYwUTExMSAtNTIgMTIyIC0xOEwxMzMgMjFMMTI1IDI5UTM5IDExMSAzOSAzNDRRMzkgNTk2IDEzNyA2NzVRMTg3IDcxNiAyNTEgNzE2UTI2NSA3MTYgMjc4IDcxNFQyOTYgNzEwVDMxNSA3MDNUMzMxIDY5NlpNMjc2IDY3NlEyNjQgNjc5IDI0NiA2NzlRMTk2IDY3OSAxNTkgNjMxUTEzNCA1OTcgMTI4IDUzNlQxMjEgMzU2UTEyMSAyMzQgMTI3IDE3NFQxNTEgODBMMjM0IDM2NlEyNTMgNDMwIDI3NSA1MDZUMzA4IDYxOEwzMTggNjU0UTMxOCA2NTYgMjk0IDY2OUwyNzYgNjc2Wk0xODEgNDJRMjA3IDE2IDI1MCAxNlEyOTEgMTYgMzI0IDQ3UTM1NCA3OCAzNjYgMTM2VDM3OCAzNTZRMzc4IDQ3MCAzNzIgNTI4VDM0OSA2MTZMMzQ4IDYxM1EzNDggNjExIDI2NCAzMjZMMTgxIDQyJyxcbiAgICAweDIyMDY6ICc1MSAwUTQ2IDQgNDYgN1E0NiA5IDIxNSAzNTdUMzg4IDcwOVEzOTEgNzE2IDQxNiA3MTZRNDM5IDcxNiA0NDQgNzA5UTQ0NyA3MDUgNjE2IDM1N1Q3ODYgN1E3ODYgNCA3ODEgMEg1MVpNNTA3IDM0NEwzODQgNTk2TDEzNyA5MkwzODMgOTFINjMwUTYzMCA5MyA1MDcgMzQ0JyxcbiAgICAweDIyMDc6ICc0NiA2NzZRNDYgNjc5IDUxIDY4M0g3ODFRNzg2IDY3OSA3ODYgNjc2UTc4NiA2NzQgNjE3IDMyNlQ0NDQgLTI2UTQzOSAtMzMgNDE2IC0zM1QzODggLTI2UTM4NSAtMjIgMjE2IDMyNlQ0NiA2NzZaTTY5NyA1OTZRNjk3IDU5NyA0NDUgNTk3VDE5MyA1OTZRMTk1IDU5MSAzMTkgMzM2VDQ0NSA4MEw2OTcgNTk2JyxcbiAgICAweDIyMDg6ICc4NCAyNTBRODQgMzcyIDE2NiA0NTBUMzYwIDUzOVEzNjEgNTM5IDM3NyA1MzlUNDE5IDU0MFQ0NjkgNTQwSDU2OFE1ODMgNTMyIDU4MyA1MjBRNTgzIDUxMSA1NzAgNTAxTDQ2NiA1MDBRMzU1IDQ5OSAzMjkgNDk0UTI4MCA0ODIgMjQyIDQ1OFQxODMgNDA5VDE0NyAzNTRUMTI5IDMwNlQxMjQgMjcyVjI3MEg1NjhRNTgzIDI2MiA1ODMgMjUwVDU2OCAyMzBIMTI0VjIyOFExMjQgMjA3IDEzNCAxNzdUMTY3IDExMlQyMzEgNDhUMzI4IDdRMzU1IDEgNDY2IDBINTcwUTU4MyAtMTAgNTgzIC0yMFE1ODMgLTMyIDU2OCAtNDBINDcxUTQ2NCAtNDAgNDQ2IC00MFQ0MTcgLTQxUTI2MiAtNDEgMTcyIDQ1UTg0IDEyNyA4NCAyNTAnLFxuICAgIDB4MjIwOTogJzE5NiAyNVE4NCAxMDkgODQgMjUwUTg0IDM3MiAxNjYgNDUwVDM2MCA1MzlRMzYxIDUzOSAzNzUgNTM5VDQxMyA1NDBUNDYwIDU0MEw1NDcgNzA3UTU1MCA3MTYgNTYzIDcxNlE1NzAgNzE2IDU3NSA3MTJUNTgxIDcwM1Q1ODMgNjk2VDUwNSA1NDBINTY4UTU4MyA1MzIgNTgzIDUyMFE1ODMgNTExIDU3MCA1MDFMNDg0IDUwMEwzNjYgMjcwSDU2OFE1ODMgMjYyIDU4MyAyNTBUNTY4IDIzMEgzNDZMMjQ3IDM4UTI4NCAxNiAzMjggN1EzNTUgMSA0NjYgMEg1NzBRNTgzIC0xMCA1ODMgLTIwUTU4MyAtMzIgNTY4IC00MEg0NzFRNDY0IC00MCA0NDcgLTQwVDQxOSAtNDFRMzA0IC00MSAyMjggM1ExMTcgLTIxMSAxMTUgLTIxMlExMTEgLTIxNSAxMDQgLTIxNVQ5MiAtMjEyVDg2IC0yMDRUODQgLTE5N1E4NCAtMTkwIDg5IC0xODNMMTk2IDI1Wk0yMTQgNjFMMzAxIDIzMEgxMjRWMjI4UTEyNCAxOTYgMTQ3IDE0N1QyMTQgNjFaTTMyMSAyNzBMNDQwIDUwMFEzNTMgNDk5IDMyOSA0OTRRMjgwIDQ4MiAyNDIgNDU4VDE4MyA0MDlUMTQ3IDM1NFQxMjkgMzA2VDEyNCAyNzJWMjcwSDMyMScsXG4gICAgMHgyMjBCOiAnODMgNTIwUTgzIDUzMiA5OCA1NDBIMTk1UTIwMiA1NDAgMjIwIDU0MFQyNDkgNTQxUTQwNCA1NDEgNDk0IDQ1NVE1ODIgMzc0IDU4MiAyNTBRNTgyIDE2NSA1MzkgOTlUNDM0IDBUMzA0IC0zOVEyOTcgLTQwIDE5NSAtNDBIOThRODMgLTMyIDgzIC0yMFE4MyAtMTAgOTYgMEgyMDBRMzExIDEgMzM3IDZRMzY5IDE0IDQwMSAyOFE0MjIgMzkgNDQ1IDU1UTQ4NCA4NSA1MDggMTI3VDUzNyAxOTFUNTQyIDIyOFYyMzBIOThRODQgMjM3IDg0IDI1MFQ5OCAyNzBINTQyVjI3MlE1NDIgMjgwIDUzOSAyOTVUNTI3IDMzNlQ0OTcgMzkxVDQ0NSA0NDVRNDIyIDQ2MSA0MDEgNDcyUTM4NiA0NzkgMzc0IDQ4M1QzNDcgNDkxVDMyNSA0OTVUMjk4IDQ5OFQyNzMgNDk5VDIzOSA1MDBUMjAwIDUwMEw5NiA1MDFRODMgNTExIDgzIDUyMCcsXG4gICAgMHgyMjBEOiAnMTU0IC0xUTEyMiAtMSAxMTIgM1QxMDIgMjZRMTAyIDYzIDE1OCA2M0gxNzhRMTkyIDY0IDIwNiA2NVQyMjggNjZUMjQwIDY4UTMwMSA4NSAzMjQgMTQ2TDMyOSAxNTdIMjQ0UTE1OCAxNTcgMTUzIDE2MVExNDkgMTYyIDE0NSAxNjlUMTQwIDE4M1ExNDAgMjAxIDE1OCAyMTVMMTY3IDIyMUgyNTZMMzQ0IDIyM0wzNDkgMjM3UTM1MiAyNjIgMzUyIDI4N1EzNTIgMzA4IDM1MSAzMTVRMzQxIDM1MiAzMTUgMzY4VDI1NiAzODVRMjMxIDM4NSAyMDYgMzc2VDE2NiAzNTZUMTQ5IDM0NlExNDMgMzQ2IDEzOCAzNjRUMTMyIDM4OFExMzIgMzk2IDE0NyA0MDZRMTk4IDQ0MCAyNTIgNDQwUTI5MSA0NDAgMzE4IDQzNVE0MjEgNDA0IDQ1MSAzMDFRNDU2IDI4OCA0NTYgMjQ4VjIzNFE0NTYgMTUxIDM5MSA4NlEzMzAgMjUgMjQwIDNRMjEyIC0xIDE1NCAtMScsXG4gICAgMHgyMjBGOiAnMTU4IDY1NlExNDcgNjg0IDEzMSA2OTRRMTEwIDcwNyA2OSA3MTBINTVWNzUwSDg4OFY3MTBIODc0UTg0MCA3MDggODIwIDY5OFQ3OTUgNjc4VDc4NiA2NTZWLTE1NVE3OTggLTIwNiA4NzQgLTIxMEg4ODhWLTI1MEg1NzBWLTIxMEg1ODRRNjE4IC0yMDggNjM4IC0xOTdUNjYzIC0xNzhUNjczIC0xNTVWNzEwSDI3MFYyNzdMMjcxIC0xNTVRMjgzIC0yMDYgMzU5IC0yMTBIMzczVi0yNTBINTVWLTIxMEg2OVExMDMgLTIwOCAxMjMgLTE5N1QxNDggLTE3OFQxNTggLTE1NVY2NTYnLFxuICAgIDB4MjIxMDogJzE1OCA2NTZRMTQ3IDY4NCAxMzEgNjk0UTExMCA3MDcgNjkgNzEwSDU1Vjc1MEgzNzNWNzEwSDM1OVEzMjUgNzA4IDMwNSA2OThUMjgwIDY3OFQyNzEgNjU2TDI3MCAyMjNWLTIxMEg2NzNWNjU2UTY2NiA2NzIgNjYzIDY3OVQ2MzkgNjk3VDU4NCA3MTBINTcwVjc1MEg4ODhWNzEwSDg3NFE4NDAgNzA4IDgyMCA2OThUNzk1IDY3OFQ3ODYgNjU2Vi0xNTVRNzk4IC0yMDYgODc0IC0yMTBIODg4Vi0yNTBINTVWLTIxMEg2OVExMDMgLTIwOCAxMjMgLTE5N1QxNDggLTE3OFQxNTggLTE1NVY2NTYnLFxuICAgIDB4MjIxMTogJzYxIDc0OFE2NCA3NTAgNDg5IDc1MEg5MTNMOTU0IDY0MFE5NjUgNjA5IDk3NiA1NzlUOTkzIDUzM1Q5OTkgNTE2SDk3OUw5NTkgNTE3UTkzNiA1NzkgODg2IDYyMVQ3NzcgNjgyUTcyNCA3MDAgNjU1IDcwNVQ0MzYgNzEwSDMxOVExODMgNzEwIDE4MyA3MDlRMTg2IDcwNiAzNDggNDg0VDUxMSAyNTlRNTE3IDI1MCA1MTMgMjQ0TDQ5MCAyMTZRNDY2IDE4OCA0MjAgMTM0VDMzMCAyN0wxNDkgLTE4N1ExNDkgLTE4OCAzNjIgLTE4OFEzODggLTE4OCA0MzYgLTE4OFQ1MDYgLTE4OVE2NzkgLTE4OSA3NzggLTE2MlQ5MzYgLTQzUTk0NiAtMjcgOTU5IDZIOTk5TDkxMyAtMjQ5TDQ4OSAtMjUwUTY1IC0yNTAgNjIgLTI0OFE1NiAtMjQ2IDU2IC0yMzlRNTYgLTIzNCAxMTggLTE2MVExODYgLTgxIDI0NSAtMTFMNDI4IDIwNlE0MjggMjA3IDI0MiA0NjJMNTcgNzE3TDU2IDcyOFE1NiA3NDQgNjEgNzQ4JyxcbiAgICAweDIyMTI6ICc4NCAyMzdUODQgMjUwVDk4IDI3MEg2NzlRNjk0IDI2MiA2OTQgMjUwVDY3OSAyMzBIOThRODQgMjM3IDg0IDI1MCcsXG4gICAgMHgyMjEzOiAnNTYgNDY3VDU2IDQ4MFQ3MCA1MDBINzA3UTcyMiA0OTIgNzIyIDQ4MFQ3MDcgNDYwSDQwOVYxODdINzA3UTcyMiAxNzkgNzIyIDE2N1E3MjIgMTU0IDcwNyAxNDdINDA5VjBWLTkzUTQwOSAtMTQ0IDQwNiAtMTU1VDM4OSAtMTY2UTM3NiAtMTY2IDM3MiAtMTU1VDM2OCAtMTA1UTM2OCAtOTYgMzY4IC02MlQzNjkgLTJWMTQ3SDcwUTU2IDE1NCA1NiAxNjdUNzAgMTg3SDM2OVY0NjBINzBRNTYgNDY3IDU2IDQ4MCcsXG4gICAgMHgyMjE0OiAnMzM5IDcxN1EzMzkgNzM5IDM1NCA3NTJUMzg4IDc2NlE0MTAgNzY2IDQyNCA3NTFUNDM5IDcxNlQ0MjQgNjgxVDM5MCA2NjZRMzY5IDY2NiAzNTQgNjgxVDMzOSA3MTdaTTU3IDIzN1Q1NyAyNTBUNzEgMjcwSDM2OVY0MjVMMzcwIDU4MVEzODAgNTk0IDM4OSA1OTRRNDAyIDU5NCA0MDkgNTc5VjI3MEg3MDdRNzIyIDI2MiA3MjIgMjUwVDcwNyAyMzBINDA5Vi03OVE0MDEgLTkzIDM5MSAtOTNIMzg5SDM4N1EzNzUgLTkzIDM2OSAtNzlWMjMwSDcxUTU3IDIzNyA1NyAyNTAnLFxuICAgIDB4MjIxNTogJzQyMyA3NTBRNDMyIDc1MCA0MzggNzQ0VDQ0NCA3MzBRNDQ0IDcyNSAyNzEgMjQ4VDkyIC0yNDBRODUgLTI1MCA3NSAtMjUwUTY4IC0yNTAgNjIgLTI0NVQ1NiAtMjMxUTU2IC0yMjEgMjMwIDI1N1Q0MDcgNzQwUTQxMSA3NTAgNDIzIDc1MCcsXG4gICAgMHgyMjE2OiAnNTYgNzMxUTU2IDc0MCA2MiA3NDVUNzUgNzUwUTg1IDc1MCA5MiA3NDBROTYgNzMzIDI3MCAyNTVUNDQ0IC0yMzFRNDQ0IC0yMzkgNDM4IC0yNDRUNDI0IC0yNTBRNDE0IC0yNTAgNDA3IC0yNDBRNDA0IC0yMzYgMjMwIDI0MlQ1NiA3MzEnLFxuICAgIDB4MjIxNzogJzIyOSAyODZRMjE2IDQyMCAyMTYgNDM2UTIxNiA0NTQgMjQwIDQ2NFEyNDEgNDY0IDI0NSA0NjRUMjUxIDQ2NVEyNjMgNDY0IDI3MyA0NTZUMjgzIDQzNlEyODMgNDE5IDI3NyAzNTZUMjcwIDI4NkwzMjggMzI4UTM4NCAzNjkgMzg5IDM3MlQzOTkgMzc1UTQxMiAzNzUgNDIzIDM2NVQ0MzUgMzM4UTQzNSAzMjUgNDI1IDMxNVE0MjAgMzEyIDM1NyAyODJUMjg5IDI1MEwzNTUgMjE5TDQyNSAxODRRNDM0IDE3NSA0MzQgMTYxUTQzNCAxNDYgNDI1IDEzNlQ0MDEgMTI1UTM5MyAxMjUgMzgzIDEzMVQzMjggMTcxTDI3MCAyMTNRMjgzIDc5IDI4MyA2M1EyODMgNTMgMjc2IDQ0VDI1MCAzNVEyMzEgMzUgMjI0IDQ0VDIxNiA2M1EyMTYgODAgMjIyIDE0M1QyMjkgMjEzTDE3MSAxNzFRMTE1IDEzMCAxMTAgMTI3UTEwNiAxMjQgMTAwIDEyNFE4NyAxMjQgNzYgMTM0VDY0IDE2MVE2NCAxNjYgNjQgMTY5VDY3IDE3NVQ3MiAxODFUODEgMTg4VDk0IDE5NVQxMTMgMjA0VDEzOCAyMTVUMTcwIDIzMFQyMTAgMjUwTDc0IDMxNVE2NSAzMjQgNjUgMzM4UTY1IDM1MyA3NCAzNjNUOTggMzc0UTEwNiAzNzQgMTE2IDM2OFQxNzEgMzI4TDIyOSAyODYnLFxuICAgIDB4MjIxODogJzU1IDI1MVE1NSAzMjggMTEyIDM4NlQyNDkgNDQ0VDM4NiAzODhUNDQ0IDI0OVE0NDQgMTcxIDM4OCAxMTNUMjUwIDU1UTE3MCA1NSAxMTMgMTEyVDU1IDI1MVpNMjQ1IDQwM1ExODggNDAzIDE0MiAzNjFUOTYgMjUwUTk2IDE4MyAxNDEgMTQwVDI1MCA5NlEyODQgOTYgMzEzIDEwOVQzNTQgMTM1VDM3NSAxNjBRNDAzIDE5NyA0MDMgMjUwUTQwMyAzMTMgMzYwIDM1OFQyNDUgNDAzJyxcbiAgICAweDIyMTk6ICc1NSAyNTFRNTUgMzI4IDExMiAzODZUMjQ5IDQ0NFQzODYgMzg4VDQ0NCAyNDlRNDQ0IDE3MSAzODggMTEzVDI1MCA1NVExNzAgNTUgMTEzIDExMlQ1NSAyNTEnLFxuICAgIDB4MjIxQTogJzk1IDE3OFE4OSAxNzggODEgMTg2VDcyIDIwMFQxMDMgMjMwVDE2OSAyODBUMjA3IDMwOVEyMDkgMzExIDIxMiAzMTFIMjEzUTIxOSAzMTEgMjI3IDI5NFQyODEgMTc3UTMwMCAxMzQgMzEyIDEwOEwzOTcgLTc3UTM5OCAtNzcgNTAxIDEzNlQ3MDcgNTY1VDgxNCA3ODZRODIwIDgwMCA4MzQgODAwUTg0MSA4MDAgODQ2IDc5NFQ4NTMgNzgyVjc3Nkw2MjAgMjkzTDM4NSAtMTkzUTM4MSAtMjAwIDM2NiAtMjAwUTM1NyAtMjAwIDM1NCAtMTk3UTM1MiAtMTk1IDI1NiAxNUwxNjAgMjI1TDE0NCAyMTRRMTI5IDIwMiAxMTMgMTkwVDk1IDE3OCcsXG4gICAgMHgyMjFEOiAnNTYgMTI0VDU2IDIxNlQxMDcgMzc1VDIzOCA0NDJRMjYwIDQ0MiAyODAgNDM4VDMxOSA0MjVUMzUyIDQwN1QzODIgMzg1VDQwNiAzNjFUNDI3IDMzNlQ0NDIgMzE1VDQ1NSAyOTdUNDYyIDI4NUw0NjkgMjk3UTU1NSA0NDIgNjc5IDQ0MlE2ODcgNDQyIDcyMiA0MzdWMzk4SDcxOFE3MTAgNDAwIDY5NCA0MDBRNjU3IDQwMCA2MjMgMzgzVDU2NyAzNDNUNTI3IDI5NFQ1MDMgMjUzVDQ5NSAyMzVRNDk1IDIzMSA1MjAgMTkyVDU1NCAxNDNRNjI1IDQ0IDY5NiA0NFE3MTcgNDQgNzE5IDQ2SDcyMlYtNVE2OTUgLTExIDY3OCAtMTFRNTUyIC0xMSA0NTcgMTQxUTQ1NSAxNDUgNDU0IDE0Nkw0NDcgMTM0UTM2MiAtMTEgMjM1IC0xMVExNTcgLTExIDEwNyA1NlpNOTMgMjEzUTkzIDE0MyAxMjYgODdUMjIwIDMxUTI1OCAzMSAyOTIgNDhUMzQ5IDg4VDM4OSAxMzdUNDEzIDE3OFQ0MjEgMTk2UTQyMSAyMDAgMzk2IDIzOVQzNjIgMjg4UTMyMiAzNDUgMjg4IDM2NlQyMTMgMzg3UTE2MyAzODcgMTI4IDMzN1Q5MyAyMTMnLFxuICAgIDB4MjIxRTogJzU1IDIxN1E1NSAzMDUgMTExIDM3M1QyNTQgNDQyUTM0MiA0NDIgNDE5IDM4MVE0NTcgMzUwIDQ5MyAzMDNMNTA3IDI4NEw1MTQgMjk0UTYxOCA0NDIgNzQ3IDQ0MlE4MzMgNDQyIDg4OCAzNzRUOTQ0IDIxNFE5NDQgMTI4IDg4OSA1OVQ3NDMgLTExUTY1NyAtMTEgNTgwIDUwUTU0MiA4MSA1MDYgMTI4TDQ5MiAxNDdMNDg1IDEzN1EzODEgLTExIDI1MiAtMTFRMTY2IC0xMSAxMTEgNTdUNTUgMjE3Wk05MDcgMjE3UTkwNyAyODUgODY5IDM0MVQ3NjEgMzk3UTc0MCAzOTcgNzIwIDM5MlQ2ODIgMzc4VDY0OCAzNTlUNjE5IDMzNVQ1OTQgMzEwVDU3NCAyODVUNTU5IDI2M1Q1NDggMjQ2TDU0MyAyMzhMNTc0IDE5OFE2MDUgMTU4IDYyMiAxMzhUNjY0IDk0VDcxNCA2MVQ3NjUgNTFRODI3IDUxIDg2NyAxMDBUOTA3IDIxN1pNOTIgMjE0UTkyIDE0NSAxMzEgODlUMjM5IDMzUTM1NyAzMyA0NTYgMTkzTDQyNSAyMzNRMzY0IDMxMiAzMzQgMzM3UTI4NSAzODAgMjMzIDM4MFExNzEgMzgwIDEzMiAzMzFUOTIgMjE0JyxcbiAgICAweDIyMjA6ICc3MSAwTDY4IDJRNjUgMyA2MyA1VDU4IDExVDU1IDIwUTU1IDIyIDU3IDI4UTY3IDQzIDM0NiAzNjFRMzk3IDQyMCA0NzQgNTA4UTU5NSA2NDggNjE2IDY3MVQ2NDcgNjk0VDY2MSA2ODhUNjY2IDY3NFE2NjYgNjY4IDY2MyA2NjNRNjYyIDY2MiA2MjcgNjIyVDUyNCA1MDNUMzkwIDM1MEwxMjAgNDFMMzg2IDQwSDY1M1E2NjYgMzAgNjY2IDIwUTY2NiA4IDY1MSAwSDcxJyxcbiAgICAweDIyMjE6ICc3MSAwTDY4IDJRNjUgMyA2MyA1VDU4IDExVDU1IDIwUTU1IDIyIDU3IDI4UTY0IDM4IDM0OCAzNzNUNjM4IDcxMlE2NDQgNzE0IDY0NiA3MTRRNjUzIDcxNCA2NTkgNzA5VDY2NiA2OTRWNjkzUTY2NiA2ODcgNjMzIDY0N1E2MTkgNjMxIDU3NiA1ODBRNTI4IDUyNCA0OTUgNDg1UTMzNiAyOTYgMzI5IDI4OVEzMjggMjg4IDM0OCAyNjRUMzk1IDE4MlQ0MzMgNTRMNDM0IDQwSDY1MVE2NjYgMzIgNjY2IDIwVDY1MSAwSDQzNlE0MzEgLTIwIDQxNiAtMjBRNDAwIC0yMCAzOTYgLTRWMEg3MVpNMzk0IDQwUTM5NCA1MSAzODkgNzZUMzY2IDE0OVQzMTkgMjM0TDMwMiAyNTZMMTE5IDQxTDI1NiA0MEgzOTQnLFxuICAgIDB4MjIyMjogJzY2NiAtMzJRNjY2IC01MSA2NDYgLTUxUTYzOSAtNTEgMzY1IDg1TDc1IDIyOFE1NSAyMzggNTUgMjUwUTU1IDI1NyA1OSAyNjJUNjggMjY4TDcyIDI3MEw2MTEgNTM2UTY0MiA1NTEgNjQ3IDU1MVQ2NTkgNTQ3VDY2NiA1MzJRNjY2IDUyMSA2NTcgNTE1TDUyNSA0NDlRNTI1IDQ0OCA1MzUgNDI0VDU1NiAzNTJUNTY2IDI1MFQ1NTYgMTQ4VDUzNiA3N1Q1MjUgNTFMNjU3IC0xNVE2NjYgLTIxIDY2NiAtMzJaTTUyNiAyNTBRNTI2IDI5NyA1MTcgMzQyVDQ5OSA0MDlUNDg4IDQzMVE0ODcgNDMxIDMwNCAzNDFUMTIxIDI1MFQzMDQgMTU5VDQ4OCA2OVE1MjYgMTQzIDUyNiAyNTAnLFxuICAgIDB4MjIyMzogJzEzOSAtMjQ5SDEzN1ExMjUgLTI0OSAxMTkgLTIzNVYyNTFMMTIwIDczN1ExMzAgNzUwIDEzOSA3NTBRMTUyIDc1MCAxNTkgNzM1Vi0yMzVRMTUxIC0yNDkgMTQxIC0yNDlIMTM5JyxcbiAgICAweDIyMjQ6ICcxMTggNzM3UTEzMSA3NTAgMTM4IDc1MEwxNTEgNzQ2TDE1OCA3MzlWNTc5TDE2MCA0MjFMMjEzIDQ3MFEyNjkgNTE5IDI3NiA1MTlRMjg0IDUxOSAyOTAgNTEzVDI5NiA0OTlWNDk4UTI5NiA0OTMgMjkxIDQ4OFQyNDQgNDQ1UTIyNSA0MjggMjEzIDQxN0wxNTggMzY4Vi0yMzlRMTQzIC0yNTIgMTM2IC0yNTJMMTI0IC0yNDhMMTIwIC0yNDFMMTE4IDQ0VjMyOEw2MiAyNzlRNCAyMzEgMCAyMzBRLTggMjMwIC0xNCAyMzZULTIwIDI1MFEtMjAgMjU3IC0xMSAyNjVUNjIgMzMyTDExOCAzODRWNzM3JyxcbiAgICAweDIyMjU6ICcxMzMgNzM2UTEzOCA3NTAgMTUzIDc1MFExNjQgNzUwIDE3MCA3MzlRMTcyIDczNSAxNzIgMjUwVDE3MCAtMjM5UTE2NCAtMjUwIDE1MiAtMjUwUTE0NCAtMjUwIDEzOCAtMjQ0TDEzNyAtMjQzUTEzMyAtMjQxIDEzMyAtMTc5VDEzMiAyNTBRMTMyIDczMSAxMzMgNzM2Wk0zMjkgNzM5UTMzNCA3NTAgMzQ2IDc1MFEzNTMgNzUwIDM2MSA3NDRMMzYyIDc0M1EzNjYgNzQxIDM2NiA2NzlUMzY3IDI1MFQzNjcgLTE3OFQzNjIgLTI0M0wzNjEgLTI0NFEzNTUgLTI1MCAzNDcgLTI1MFEzMzUgLTI1MCAzMjkgLTIzOVEzMjcgLTIzNSAzMjcgMjUwVDMyOSA3MzknLFxuICAgIDB4MjIyNjogJzEzMSA3MzdRMTM0IDczOSAxMzggNzQzVDE0NCA3NDhUMTUxIDc1MFQxNzEgNzM3VjE5OUwzMjcgMzU3VjczN1EzNDAgNzUwIDM0NyA3NTBRMzUxIDc1MCAzNTMgNzQ5VDM2MCA3NDNUMzY3IDczN1YzOTdMNDI5IDQ1N1E0OTMgNTE4IDQ5OCA1MTlRNTA2IDUxOSA1MTIgNTEyVDUxOCA1MDBRNTE4IDQ4OSA0NDIgNDE3TDM2NyAzMzlWLTIzN1EzNTIgLTI1MCAzNDYgLTI1MEwzMzMgLTI0M0wzMjcgLTIzN1YzMDFMMTcxIDE0M1YtMjM3UTE1NiAtMjUwIDE1MSAtMjUwVDEzMSAtMjM3VjEwMUw2OSA0MVEyNCAtMyAxNSAtMTJUMCAtMjFRLTggLTIxIC0xNCAtMTRULTIwIC0yUS0yMCA1IC03IDE5VDU2IDgxTDEzMSAxNTlWNzM3JyxcbiAgICAweDIyMjc6ICczMTggNTkxUTMyNSA1OTggMzMzIDU5OFEzNDQgNTk4IDM0OCA1OTFRMzQ5IDU5MCA0MTQgNDQ1VDU0NSAxNTFUNjExIC00UTYwOSAtMjIgNTkxIC0yMlE1ODggLTIyIDU4NiAtMjFUNTgxIC0yMFQ1NzcgLTE3VDU3NSAtMTNUNTcyIC05VDU3MCAtNEwzMzMgNTI4TDk2IC00UTg3IC0yMCA4MCAtMjFRNzggLTIyIDc1IC0yMlE1NyAtMjIgNTUgLTRRNTUgMiAxMjAgMTUwVDI1MSA0NDRUMzE4IDU5MScsXG4gICAgMHgyMjI4OiAnNTUgNTgwUTU2IDU4NyA2MSA1OTJUNzUgNTk4UTg2IDU5OCA5NiA1ODBMMzMzIDQ4TDU3MCA1ODBRNTc5IDU5NiA1ODYgNTk3UTU4OCA1OTggNTkxIDU5OFE2MDkgNTk4IDYxMSA1ODBRNjExIDU3NCA1NDYgNDI2VDQxNSAxMzJUMzQ4IC0xNVEzNDMgLTIyIDMzMyAtMjJUMzE4IC0xNVEzMTcgLTE0IDI1MiAxMzFUMTIxIDQyNVQ1NSA1ODAnLFxuICAgIDB4MjIyOTogJzg4IC0yMVQ3NSAtMjFUNTUgLTdWMjAwUTU1IDIzMSA1NSAyODBRNTYgNDE0IDYwIDQyOFE2MSA0MzAgNjEgNDMxUTc3IDUwMCAxNTIgNTQ5VDMzMiA1OThRNDQzIDU5OCA1MjIgNTQ0VDYxMCA0MDVRNjExIDM5OSA2MTEgMTk0Vi03UTYwNCAtMjIgNTkxIC0yMlE1ODIgLTIyIDU3MiAtOUw1NzAgNDA1UTU2MyA0MzMgNTU2IDQ0OVQ1MjkgNDg1UTQ5OCA1MTkgNDQ1IDUzOFQzMzQgNTU4UTI1MSA1NTggMTc5IDUxOFQ5NiA0MDFROTUgMzk2IDk1IDE5M1YtN1E4OCAtMjEgNzUgLTIxJyxcbiAgICAweDIyMkE6ICc1OTEgNTk4SDU5MlE2MDQgNTk4IDYxMSA1ODNWMzc2UTYxMSAzNDUgNjExIDI5NlE2MTAgMTYyIDYwNiAxNDhRNjA1IDE0NiA2MDUgMTQ1UTU4NiA2OCA1MDcgMjNUMzMzIC0yMlEyNjggLTIyIDIwOSAtMVQxMDYgNjZUNTYgMTczUTU1IDE4MCA1NSAzODRMNTYgNTg1UTY2IDU5OCA3NSA1OThRODUgNTk4IDk1IDU4NVYzNzhMOTYgMTcyTDk4IDE2MlExMTIgOTUgMTgxIDU3VDMzMiAxOFE0MTUgMTggNDg3IDU4VDU3MCAxNzVRNTcxIDE4MCA1NzEgMzgzVjU4M1E1NzkgNTk4IDU5MSA1OTgnLFxuICAgIDB4MjIyQjogJzE1MSAtMTEyUTE1MSAtMTUwIDEwNiAtMTYxUTEwNiAtMTY1IDExNCAtMTcyVDEzNCAtMTc5UTE1NSAtMTc5IDE3MCAtMTQ2UTE4MSAtMTIwIDE4OCAtNjRUMjA2IDEwMVQyMzIgMzEwUTI1NiA0NzIgMjc3IDU2N1EzMDggNzE2IDM5MiA3MTZRNDM0IDcxNiA0NTMgNjgxVDQ3MiA2MTNRNDcyIDU5MCA0NTggNTc3VDQyNCA1NjRRNDA0IDU2NCAzOTAgNTc4VDM3NiA2MTJRMzc2IDY1MCA0MjEgNjYxUTQyMSA2NjMgNDE4IDY2N1Q0MDcgNjc1VDM5MyA2NzlRMzg3IDY3OSAzODAgNjc1UTM2MCA2NjUgMzUwIDYxOVQzMjYgNDM4UTMwMiAxOTAgMjUzIC01N1EyMzUgLTE0NyAyMDEgLTE4NlExNzQgLTIxMyAxMzggLTIxNlE5MyAtMjE2IDc0IC0xODFUNTUgLTExM1E1NSAtOTEgNjkgLTc4VDEwMyAtNjRRMTIzIC02NCAxMzcgLTc4VDE1MSAtMTEyJyxcbiAgICAweDIyMkM6ICcxMTMgLTI0NFExMTMgLTI0NiAxMTkgLTI1MVQxMzkgLTI2M1QxNjcgLTI2OVExODYgLTI2OSAxOTkgLTI2MFEyMjAgLTI0NyAyMzIgLTIxOFQyNTEgLTEzM1QyNjIgLTE1VDI3NiAxNTVUMjk3IDM2N1EzMDAgMzkwIDMwNSA0MzhUMzE0IDUxMlQzMjUgNTgwVDM0MCA2NDdUMzYxIDcwM1QzOTAgNzUxVDQyOCA3ODRUNDc5IDgwNFE0ODEgODA0IDQ4OCA4MDRUNTAxIDgwNVE1NTIgODAyIDU4MSA3NjlUNjEwIDY5NVE2MTAgNjY5IDU5NCA2NTdUNTYxIDY0NVE1NDIgNjQ1IDUyNyA2NThUNTEyIDY5NFE1MTIgNzA1IDUxNiA3MTRUNTI2IDcyOVQ1MzggNzM3VDU0OCA3NDJMNTUyIDc0M1E1NTIgNzQ1IDU0NSA3NTFUNTI1IDc2MlQ0OTggNzY4UTQ3NSA3NjggNDYwIDc1NlQ0MzQgNzE2VDQxOCA2NTJUNDA3IDU1OVQzOTggNDQ0VDM4NyAzMDBUMzY5IDEzM1EzNDkgLTM4IDMzNyAtMTAyVDMwMyAtMjA3UTI1NiAtMzA2IDE2OSAtMzA2UTExOSAtMzA2IDg3IC0yNzJUNTUgLTE5NlE1NSAtMTcwIDcxIC0xNThUMTA0IC0xNDZRMTIzIC0xNDYgMTM4IC0xNTlUMTUzIC0xOTVRMTUzIC0yMDYgMTQ5IC0yMTVUMTM5IC0yMzBUMTI3IC0yMzhUMTE3IC0yNDJMMTEzIC0yNDRaTTQ2MCAtMjQ0UTQ2MCAtMjQ2IDQ2NiAtMjUxVDQ4NiAtMjYzVDUxNCAtMjY5UTUzMiAtMjY5IDU0NiAtMjYwUTU2NyAtMjQ3IDU3OSAtMjE4VDU5OCAtMTMzVDYwOSAtMTVUNjIzIDE1NVQ2NDQgMzY3UTY0NyAzOTAgNjUyIDQzOFQ2NjEgNTEyVDY3MiA1ODBUNjg3IDY0N1Q3MDggNzAzVDczNyA3NTFUNzc1IDc4NFQ4MjYgODA0UTgyOCA4MDQgODM1IDgwNFQ4NDggODA1UTg5OSA4MDIgOTI4IDc2OVQ5NTcgNjk1UTk1NyA2NjkgOTQxIDY1N1Q5MDggNjQ1UTg4OSA2NDUgODc0IDY1OFQ4NTkgNjk0UTg1OSA3MDUgODYzIDcxNFQ4NzMgNzI5VDg4NSA3MzdUODk1IDc0Mkw4OTkgNzQzUTg5OSA3NDUgODkyIDc1MVQ4NzIgNzYyVDg0NSA3NjhRODIyIDc2OCA4MDcgNzU2VDc4MSA3MTZUNzY1IDY1MlQ3NTQgNTU5VDc0NSA0NDRUNzM0IDMwMFQ3MTYgMTMzUTY5NiAtMzggNjg0IC0xMDJUNjUwIC0yMDdRNjAzIC0zMDYgNTE2IC0zMDZRNDY2IC0zMDYgNDM0IC0yNzJUNDAyIC0xOTZRNDAyIC0xNzAgNDE4IC0xNThUNDUxIC0xNDZRNDcwIC0xNDYgNDg1IC0xNTlUNTAwIC0xOTVRNTAwIC0yMDYgNDk2IC0yMTVUNDg2IC0yMzBUNDc0IC0yMzhUNDY0IC0yNDJMNDYwIC0yNDQnLFxuICAgIDB4MjIyRDogJzExMyAtMjQ0UTExMyAtMjQ2IDExOSAtMjUxVDEzOSAtMjYzVDE2NyAtMjY5UTE4NiAtMjY5IDE5OSAtMjYwUTIyMCAtMjQ3IDIzMiAtMjE4VDI1MSAtMTMzVDI2MiAtMTVUMjc2IDE1NVQyOTcgMzY3UTMwMCAzOTAgMzA1IDQzOFQzMTQgNTEyVDMyNSA1ODBUMzQwIDY0N1QzNjEgNzAzVDM5MCA3NTFUNDI4IDc4NFQ0NzkgODA0UTQ4MSA4MDQgNDg4IDgwNFQ1MDEgODA1UTU1MiA4MDIgNTgxIDc2OVQ2MTAgNjk1UTYxMCA2NjkgNTk0IDY1N1Q1NjEgNjQ1UTU0MiA2NDUgNTI3IDY1OFQ1MTIgNjk0UTUxMiA3MDUgNTE2IDcxNFQ1MjYgNzI5VDUzOCA3MzdUNTQ4IDc0Mkw1NTIgNzQzUTU1MiA3NDUgNTQ1IDc1MVQ1MjUgNzYyVDQ5OCA3NjhRNDc1IDc2OCA0NjAgNzU2VDQzNCA3MTZUNDE4IDY1MlQ0MDcgNTU5VDM5OCA0NDRUMzg3IDMwMFQzNjkgMTMzUTM0OSAtMzggMzM3IC0xMDJUMzAzIC0yMDdRMjU2IC0zMDYgMTY5IC0zMDZRMTE5IC0zMDYgODcgLTI3MlQ1NSAtMTk2UTU1IC0xNzAgNzEgLTE1OFQxMDQgLTE0NlExMjMgLTE0NiAxMzggLTE1OVQxNTMgLTE5NVExNTMgLTIwNiAxNDkgLTIxNVQxMzkgLTIzMFQxMjcgLTIzOFQxMTcgLTI0MkwxMTMgLTI0NFpNNDYwIC0yNDRRNDYwIC0yNDYgNDY2IC0yNTFUNDg2IC0yNjNUNTE0IC0yNjlRNTMyIC0yNjkgNTQ2IC0yNjBRNTY3IC0yNDcgNTc5IC0yMThUNTk4IC0xMzNUNjA5IC0xNVQ2MjMgMTU1VDY0NCAzNjdRNjQ3IDM5MCA2NTIgNDM4VDY2MSA1MTJUNjcyIDU4MFQ2ODcgNjQ3VDcwOCA3MDNUNzM3IDc1MVQ3NzUgNzg0VDgyNiA4MDRRODI4IDgwNCA4MzUgODA0VDg0OCA4MDVRODk5IDgwMiA5MjggNzY5VDk1NyA2OTVROTU3IDY2OSA5NDEgNjU3VDkwOCA2NDVRODg5IDY0NSA4NzQgNjU4VDg1OSA2OTRRODU5IDcwNSA4NjMgNzE0VDg3MyA3MjlUODg1IDczN1Q4OTUgNzQyTDg5OSA3NDNRODk5IDc0NSA4OTIgNzUxVDg3MiA3NjJUODQ1IDc2OFE4MjIgNzY4IDgwNyA3NTZUNzgxIDcxNlQ3NjUgNjUyVDc1NCA1NTlUNzQ1IDQ0NFQ3MzQgMzAwVDcxNiAxMzNRNjk2IC0zOCA2ODQgLTEwMlQ2NTAgLTIwN1E2MDMgLTMwNiA1MTYgLTMwNlE0NjYgLTMwNiA0MzQgLTI3MlQ0MDIgLTE5NlE0MDIgLTE3MCA0MTggLTE1OFQ0NTEgLTE0NlE0NzAgLTE0NiA0ODUgLTE1OVQ1MDAgLTE5NVE1MDAgLTIwNiA0OTYgLTIxNVQ0ODYgLTIzMFQ0NzQgLTIzOFQ0NjQgLTI0Mkw0NjAgLTI0NFpNODA3IC0yNDRRODA3IC0yNDYgODEzIC0yNTFUODMzIC0yNjNUODYxIC0yNjlRODgwIC0yNjkgODkzIC0yNjBROTE0IC0yNDcgOTI2IC0yMThUOTQ1IC0xMzNUOTU2IC0xNVQ5NzAgMTU1VDk5MSAzNjdROTk0IDM5MCA5OTkgNDM4VDEwMDggNTEyVDEwMTkgNTgwVDEwMzQgNjQ3VDEwNTUgNzAzVDEwODQgNzUxVDExMjIgNzg0VDExNzMgODA0UTExNzUgODA0IDExODIgODA0VDExOTUgODA1UTEyNDYgODAyIDEyNzUgNzY5VDEzMDQgNjk1UTEzMDQgNjY5IDEyODggNjU3VDEyNTUgNjQ1UTEyMzYgNjQ1IDEyMjEgNjU4VDEyMDYgNjk0UTEyMDYgNzA1IDEyMTAgNzE0VDEyMjAgNzI5VDEyMzIgNzM3VDEyNDIgNzQyTDEyNDYgNzQzUTEyNDYgNzQ1IDEyMzkgNzUxVDEyMTkgNzYyVDExOTIgNzY4UTExNjkgNzY4IDExNTQgNzU2VDExMjggNzE2VDExMTIgNjUyVDExMDEgNTU5VDEwOTIgNDQ0VDEwODEgMzAwVDEwNjMgMTMzUTEwNDMgLTM4IDEwMzEgLTEwMlQ5OTcgLTIwN1E5NTAgLTMwNiA4NjMgLTMwNlE4MTMgLTMwNiA3ODEgLTI3MlQ3NDkgLTE5NlE3NDkgLTE3MCA3NjUgLTE1OFQ3OTggLTE0NlE4MTcgLTE0NiA4MzIgLTE1OVQ4NDcgLTE5NVE4NDcgLTIwNiA4NDMgLTIxNVQ4MzMgLTIzMFQ4MjEgLTIzOFQ4MTEgLTI0Mkw4MDcgLTI0NCcsXG4gICAgMHgyMjJFOiAnMjY5IDc0TDI1NiA4MFEyNDQgODUgMjI3IDk3VDE5MSAxMjhUMTYxIDE3OVQxNDggMjUwUTE0OCAzMzIgMTk5IDM3OVQzMDIgNDMzTDMwNiA0MzRMMzA3IDQ0NFEzMDkgNDU2IDMxMyA0OTVUMzIxIDU1M1QzMzEgNjA3VDM0NSA2NjRUMzY1IDcxMlQzOTMgNzU2VDQzMSA3ODVUNDc5IDgwNFE0ODEgODA0IDQ4OCA4MDRUNTAxIDgwNVE1NTIgODAyIDU4MSA3NjlUNjEwIDY5NVE2MTAgNjY5IDU5NCA2NTdUNTYxIDY0NVE1NDIgNjQ1IDUyNyA2NThUNTEyIDY5NFE1MTIgNzA1IDUxNiA3MTRUNTI2IDcyOVQ1MzggNzM3VDU0OCA3NDJMNTUyIDc0M1E1NTIgNzQ1IDU0NSA3NTFUNTI1IDc2MlQ0OTggNzY4UTQ3MSA3NjggNDU0IDc1MlQ0MjcgNjkzVDQxNCA2MjZUNDA2IDUzNlE0MDUgNTMwIDQwNSA1MjdMMzk3IDQyNUw0MDQgNDIyUTQxMCA0MTkgNDIxIDQxM1Q0NDUgMzk5VDQ3MCAzNzZUNDk0IDM0NVQ1MTEgMzAzVDUxOCAyNTBRNTE4IDIwNSA1MDIgMTY5VDQ2MCAxMTJUNDEwIDgwVDM2NCA2NkwzNjAgNjVMMzU5IDU1UTM1NyAzOCAzNTMgNFQzNDYgLTQzVDM0MCAtODFUMzMzIC0xMThUMzI2IC0xNDhUMzE2IC0xNzlUMzAzIC0yMDdRMjU2IC0zMDYgMTY5IC0zMDZRMTE5IC0zMDYgODcgLTI3MlQ1NSAtMTk2UTU1IC0xNzAgNzEgLTE1OFQxMDQgLTE0NlExMjMgLTE0NiAxMzggLTE1OVQxNTMgLTE5NVExNTMgLTIwNiAxNDkgLTIxNVQxMzkgLTIzMFQxMjcgLTIzOFQxMTcgLTI0MkwxMTMgLTI0NFExMTMgLTI0NiAxMTkgLTI1MVQxMzkgLTI2M1QxNjcgLTI2OVExODYgLTI2OSAxOTkgLTI2MFEyMzEgLTI0MSAyNDIgLTE4M1QyNjYgMzNMMjY5IDc0Wk0yNzIgMTIyUTI3MiAxNTYgMzAwIDM5MVEzMDAgMzkyIDI5OSAzOTJRMjg3IDM5MiAyNjMgMzc5VDIxMyAzMzFUMTg3IDI0OVExODcgMjExIDIwNSAxODBUMjM5IDEzN1QyNzIgMTE2VjEyMlpNMzY2IDEwN1EzNzggMTA3IDQwMiAxMTlUNDUzIDE2N1Q0NzkgMjQ5UTQ3OSAzNDAgMzk0IDM4M1YzNzdRMzk0IDM3NSAzOTQgMzc0VDM5MyAzNzFUMzkzIDM2NlQzOTIgMzU3VDM5MSAzNDJUMzg5IDMyMVQzODYgMjkxVDM4MiAyNTFUMzc3IDE5OVQzNjkgMTMzUTM2NiAxMTIgMzY2IDEwNycsXG4gICAgMHgyMjM0OiAnMjczIDQxMVEyNzMgNDM3IDI5MSA0NTRUMzM0IDQ3MVEzNTggNDcxIDM3NSA0NTRUMzkzIDQxMVQzNzYgMzY4VDMzMyAzNTFRMzA3IDM1MSAyOTAgMzY4VDI3MyA0MTFaTTg0IDM4UTExMCAzOCAxMjYgMjFUMTQzIC0yMlExNDMgLTQ2IDEyNyAtNjRUODMgLTgyUTU3IC04MiA0MSAtNjVUMjQgLTIyUTI0IDQgNDEgMjFUODQgMzhaTTUyNCAtMjJRNTI0IDQgNTQxIDIxVDU4NCAzOFE2MDggMzggNjI1IDIxVDY0MyAtMjJRNjQzIC00NSA2MjcgLTYzVDU4MyAtODJRNTU3IC04MiA1NDEgLTY1VDUyNCAtMjInLFxuICAgIDB4MjIzNTogJzIzIDQxMVEyMyA0MzcgNDEgNDU0VDg0IDQ3MVExMDggNDcxIDEyNSA0NTRUMTQzIDQxMVQxMjYgMzY4VDgzIDM1MVE1NyAzNTEgNDAgMzY4VDIzIDQxMVpNNTIzIDQxMVE1MjMgNDM3IDU0MSA0NTRUNTg0IDQ3MVE2MDggNDcxIDYyNSA0NTRUNjQzIDQxMVQ2MjYgMzY4VDU4MyAzNTFRNTU3IDM1MSA1NDAgMzY4VDUyMyA0MTFaTTI3NCAtMjJRMjc0IDQgMjkxIDIxVDMzNCAzOFEzNTYgMzggMzc0IDIyVDM5MiAtMjJUMzc1IC02NVQzMzMgLTgyUTMwNyAtODIgMjkxIC02NVQyNzQgLTIyJyxcbiAgICAweDIyM0M6ICc1NSAxNjZRNTUgMjQxIDEwMSAzMDRUMjIyIDM2N1EyNjAgMzY3IDI5NiAzNDlUMzYyIDMwNFQ0MjEgMjUyVDQ4NCAyMDhUNTU0IDE4OVE2MTYgMTg5IDY1NSAyMzZUNjk0IDMzOFE2OTQgMzUwIDY5OCAzNThUNzA4IDM2N1E3MjIgMzY3IDcyMiAzMzRRNzIyIDI2MCA2NzcgMTk3VDU2MiAxMzRINTU0UTUxNyAxMzQgNDgxIDE1MlQ0MTQgMTk2VDM1NSAyNDhUMjkyIDI5M1QyMjMgMzExUTE3OSAzMTEgMTQ1IDI4NlExMDkgMjU3IDk2IDIxOFQ4MCAxNTZUNjkgMTMzUTU1IDEzMyA1NSAxNjYnLFxuICAgIDB4MjIzRDogJzIyMiAxMzNRMTQ3IDEzMyAxMDIgMTk3VDU2IDMzNVE1NiAzNjIgNjYgMzY1UTcxIDM2OSA3NyAzNjRRODMgMzU2IDg0IDMzNVQ5MCAyOThRMTAyIDI1NCAxMzcgMjIyVDIyMyAxODlRMjU4IDE4OSAyOTIgMjA2VDM1NSAyNTBUNDEzIDMwMVQ0NzcgMzQ2VDU1MCAzNjdRNjI4IDM2NyA2NzMgMzA5VDcyMiAxNzFRNzIyIDEzMyA3MDggMTMzUTcwMyAxMzMgNjk5IDE0MVQ2OTQgMTYyUTY5NCAyMjAgNjU1IDI2NVQ1NTUgMzExUTUxOSAzMTEgNDg1IDI5M1Q0MjEgMjQ4VDM2MyAxOTZUMjk4IDE1MlQyMjIgMTMzJyxcbiAgICAweDIyNDA6ICc1NSA1NjlRNTUgNTgzIDgzIDU4M1ExMjIgNTgzIDE1MSA1NjVUMTk0IDUxOVQyMTUgNDY0VDIyMiA0MTFRMjIyIDM2MCAxOTQgMzA0VDEzOSAxOTNUMTExIDg5UTExMSAzOCAxMzQgLTdUMTk1IC01NVEyMjIgLTU3IDIyMiAtNjlRMjIyIC04MyAxODkgLTgzUTEzMCAtODMgOTMgLTMzVDU1IDkwUTU1IDEzMCA3MiAxNzRUMTEwIDI1MlQxNDggMzI4VDE2NiA0MTFRMTY2IDQ2MiAxNDQgNTA3VDgzIDU1NVE1NSA1NTYgNTUgNTY5JyxcbiAgICAweDIyNDE6ICcyMjAgMzY2UTI1OCAzNjYgMjk3IDM0N1QzNjEgMzA4VDM5MSAyODhRMzk0IDI4OCA0NjQgMzcwUTQ5NCA0MDcgNTEwIDQyNVQ1MzUgNDU0VDU0NiA0NjVUNTUyIDQ2N0g1NTNRNTYwIDQ2NyA1NjYgNDYxVDU3MyA0NDhRNTczIDQzOSA0OTkgMzUwUTQyNCAyNjYgNDI0IDI2MVE0MjQgMjU5IDQ0MiAyNDdUNDkyIDIyMlQ1NTQgMjA5UTYwNyAyMDkgNjQ2IDI0M1E2NzEgMjY4IDY4MCAyOTVUNjkwIDM0MVQ3MDIgMzY2UTcxOSAzNjYgNzE5IDMxNFE3MTYgMjY1IDY5NSAyMjZRNjgyIDE5OSA2NjQgMTc5UTYxNCAxMzIgNTU1IDEzMlE1MTcgMTMyIDQ3NyAxNTFUNDEyIDE5MFQzODMgMjEwVDM0NyAxNzJUMjc4IDg5VDIzMyAzN1EyMjggMzIgMjIwIDMyUTIxMCAzMiAyMDYgMzhUMjAxIDQ4UTIwMSA1NyAyNjYgMTM3UTI3MiAxNDQgMjc1IDE0OFEzNTEgMjMxIDM1MSAyMzdRMzUxIDIzOSAzMzMgMjUxVDI4MyAyNzZUMjIxIDI4OVExNTkgMjg5IDEyMyAyNDhUODYgMTY2UTg2IDE1NiA4MiAxNDVUNzMgMTMyUTU1IDEzMiA1NSAxNzJRNTUgMjIwIDc5IDI3MlE5NSAzMDEgMTExIDMxOVExNjEgMzY2IDIyMCAzNjYnLFxuICAgIDB4MjI0MjogJzU1IDQzOVQ1NSA0NDNUNTYgNDQ5VDYyIDQ1NlQ2OCA0NjNINzA2UTcyMCA0NDkgNzIwIDQ0M1Q3MDYgNDIzSDY4UTU1IDQzOSA1NSA0NDNaTTU2IDcyUTU2IDExMiA3MyAxNTJUMTMwIDIyNVQyMjQgMjU3UTI1OSAyNTcgMjk0IDI0MFQzNjAgMTk5VDQxOSAxNDlUNDg0IDEwN1Q1NTMgOTBRNjAzIDkwIDY0MyAxMjVUNjkxIDIyM1E2OTMgMjU3IDcwNCAyNTdRNzE3IDI1NyA3MTcgMjIxUTcxNyAxNDcgNjcxIDkxVDU1NCAzNFE1MTcgMzQgNDgxIDUxVDQxNCA5M1QzNTUgMTQyVDI5MSAxODRUMjIyIDIwMVExNzIgMjAxIDEzMSAxNjdUODQgNjdRODEgMzQgNzEgMzRRNTYgMzcgNTYgNzInLFxuICAgIDB4MjI0MzogJzU1IDI4M1E1NSAzNTYgMTAzIDQwOVQyMTcgNDYzUTI2MiA0NjMgMjk3IDQ0N1QzOTUgMzgyUTQzMSAzNTUgNDQ2IDM0NFQ0OTMgMzIwVDU1NCAzMDdINTU4UTYxMyAzMDcgNjUyIDM0NFQ2OTQgNDMzUTY5NCA0NjQgNzA4IDQ2NFQ3MjIgNDMyUTcyMiAzNTYgNjczIDMwNFQ1NjQgMjUxSDU1NFE1MTAgMjUxIDQ2NSAyNzVUMzg3IDMyOVQzMTAgMzgyVDIyMyA0MDdIMjE5UTE2NCA0MDcgMTIyIDM2N1E5MSAzMzMgODUgMjk1VDc2IDI1M1Q2OSAyNTBRNTUgMjUwIDU1IDI4M1pNNTYgNTZRNTYgNzEgNzIgNzZINzA2UTcyMiA3MCA3MjIgNTZRNzIyIDQ0IDcwNyAzNkg3MFE1NiA0MyA1NiA1NicsXG4gICAgMHgyMjQ1OiAnNTUgMzg4UTU1IDQ2MyAxMDEgNTI2VDIyMiA1ODlRMjYwIDU4OSAyOTYgNTcxVDM2MiA1MjZUNDIxIDQ3NFQ0ODQgNDMwVDU1NCA0MTFRNjE2IDQxMSA2NTUgNDU4VDY5NCA1NjBRNjk0IDU3MiA2OTggNTgwVDcwOCA1ODlRNzIyIDU4OSA3MjIgNTU2UTcyMiA0ODIgNjc3IDQxOVQ1NjIgMzU2SDU1NFE1MTcgMzU2IDQ4MSAzNzRUNDE0IDQxOFQzNTUgNDcxVDI5MiA1MTVUMjIzIDUzM1ExNzkgNTMzIDE0NSA1MDhRMTA5IDQ3OSA5NiA0NDBUODAgMzc4VDY5IDM1NVE1NSAzNTUgNTUgMzg4Wk01NiAyMzZRNTYgMjQ5IDcwIDI1Nkg3MDdRNzIyIDI0OCA3MjIgMjM2UTcyMiAyMjUgNzA4IDIxN0wzOTAgMjE2SDcyUTU2IDIyMSA1NiAyMzZaTTU2IDQyUTU2IDU3IDcyIDYySDcwOFE3MjIgNTIgNzIyIDQyUTcyMiAzMCA3MDcgMjJINzBRNTYgMjkgNTYgNDInLFxuICAgIDB4MjI0NzogJzU1IDQxN1E1NSA0NzkgMTAxIDUyOFQyMjIgNTc4UTI1OSA1NzggMjk0IDU2NFQzOTMgNTA3UTQxMyA0OTMgNDM0IDQ4MFQ0NjkgNDYwVDQ4NCA0NTRMNTM3IDU0OVE1ODcgNjM5IDU5NSA2NDdRNjAwIDY1MiA2MDcgNjUyUTYxNSA2NTIgNjIxIDY0N1Q2MjggNjM0UTYyOCA2MjUgNTc1IDUzNlE1MjQgNDQ2IDUyNCA0NDNRNTI3IDQ0MCA1NTUgNDQwUTYwMyA0NDAgNjQ0IDQ2OVQ2OTEgNTQ3UTY5NCA1NzggNzA2IDU3OFQ3MTggNTU2UTcxOCA1NTUgNzE4IDU1MVQ3MTcgNTQ1UTcxNyA0ODggNjg0IDQ0NVQ1OTUgMzg3UTU4MiAzODQgNTU4IDM4NFE1MzAgMzg0IDUwOCAzODlMNDkzIDM5NEw0MDQgMjM4TDU1NyAyMzZINzA4UTcyMCAyMjQgNzIwIDIxN1Q3MDYgMTk2SDM3OUwyOTEgNDNMNDk5IDQxSDcwOFE3MjAgMjkgNzIwIDIxVDcwNiAxSDI2OEwyMjYgLTcxUTE4NiAtMTQzIDE3OSAtMTQ4UTE3MyAtMTU1IDE2NSAtMTU1VDE1MiAtMTUwVDE0NiAtMTM3UTE0NiAtMTMzIDE4NCAtNjRMMjIyIDFIMTQ0TDY2IDNMNTkgN1E1NCAxNCA1NCAyMFE1NCAyOSA2NiA0MUgyNDZMMzMzIDE5NFEzMzMgMTk2IDIwMiAxOTZINjhRNTUgMjExIDU1IDIxOFQ2NiAyMzZIMjEzTDM1NyAyMzhMNDU3IDQwOUw0MzcgNDIxUTQzMiA0MjMgMzkzIDQ1MFQzMDcgNTAwVDIyMiA1MjNRMTcxIDUyMyAxMjkgNDkxVDg0IDQxNFE4MiAzODMgNzAgMzgzUTU1IDM4MyA1NSA0MTcnLFxuICAgIDB4MjI0ODogJzU1IDMxOVE1NSAzNjAgNzIgMzkzVDExNCA0NDRUMTYzIDQ3MlQyMDUgNDgyUTIwNyA0ODIgMjEzIDQ4MlQyMjMgNDgzUTI2MiA0ODMgMjk2IDQ2OFQzOTMgNDEzTDQ0MyAzODFRNTAyIDM0NiA1NTMgMzQ2UTYwOSAzNDYgNjQ5IDM3NVQ2OTQgNDU0UTY5NCA0NjUgNjk4IDQ3NFQ3MDggNDgzUTcyMiA0ODMgNzIyIDQ1MlE3MjIgMzg2IDY3NSAzMzhUNTU1IDI4OVE1MTQgMjg5IDQ2OCAzMTBUMzg4IDM1N1QzMDggNDA0VDIyNCA0MjZRMTY0IDQyNiAxMjUgMzkzVDgzIDMxOFE4MSAyODkgNjkgMjg5UTU1IDI4OSA1NSAzMTlaTTU1IDg1UTU1IDEyNiA3MiAxNTlUMTE0IDIxMFQxNjMgMjM4VDIwNSAyNDhRMjA3IDI0OCAyMTMgMjQ4VDIyMyAyNDlRMjYyIDI0OSAyOTYgMjM0VDM5MyAxNzlMNDQzIDE0N1E1MDIgMTEyIDU1MyAxMTJRNjA5IDExMiA2NDkgMTQxVDY5NCAyMjBRNjk0IDI0OSA3MDggMjQ5VDcyMiAyMTdRNzIyIDE1MyA2NzUgMTA0VDU1NSA1NVE1MTQgNTUgNDY4IDc2VDM4OCAxMjNUMzA4IDE3MFQyMjQgMTkyUTE2NCAxOTIgMTI1IDE1OVQ4MyA4NFE4MCA1NSA2OSA1NVE1NSA1NSA1NSA4NScsXG4gICAgMHgyMjRBOiAnMjIwIDUyM1ExNjMgNTIzIDEyNCA0ODZUODQgNDEyUTgxIDM4MyA2OSAzODNRNTYgMzgzIDU2IDQxM1E1NiA0NDEgNjcgNDcwUTc4IDUwOCAxMTEgNTM3VDE4NyA1NzVRMjAzIDU3OSAyMTkgNTc5UTI0OCA1NzkgMjcxIDU3MlEzMDQgNTY1IDM5MyA1MDhRNDk4IDQzOSA1NTEgNDM5UTYyMCA0MzkgNjYyIDQ4NlE2ODggNTEyIDY5MyA1NTdRNjkzIDU2NSA2OTcgNTcyVDcwNyA1NzlRNzE5IDU3OSA3MTkgNTQ4UTcxOSA0ODMgNjczIDQzNFQ1NTAgMzg0UTUxMiAzODQgNDY3IDQwNVQzODYgNDUzVDMwNSA1MDFUMjIwIDUyM1pNMjIyIDI4OFExNjQgMjg4IDEyNCAyNTFUODQgMTc3UTgxIDE0OCA2OSAxNDhRNTYgMTQ4IDU2IDE3OFE1NiAyMDYgNjcgMjM1UTc4IDI3NCAxMTEgMzAyVDE4NyAzMzlRMTk4IDM0MyAyMjAgMzQzUTI0NCAzNDMgMjU5IDM0MVQzMDggMzIyVDM5MyAyNzJRNDk2IDIwMyA1NTMgMjAzUTYxMiAyMDMgNjUxIDI0MVQ2OTEgMzEyUTY5MyAzNDMgNzA1IDM0M1E3MTkgMzQzIDcxOSAzMTNRNzE5IDI0NSA2NzMgMTk5UTYyNiAxNDggNTUyIDE0OFE1MTMgMTQ4IDQ2NyAxNzBUMzg1IDIxOFQzMDQgMjY2VDIyMiAyODhaTTUxIC0xOVE1MSAtNiA2MiAtMUgzODdRNzEzIC0xIDcxNSAtM1E3MjUgLTEwIDcyNSAtMjBRNzI1IC0yNyA3MTggLTM0UTcxNCAtMzggNjcyIC0zOFQzODcgLTM5SDYyUTUxIC0yNSA1MSAtMTknLFxuICAgIDB4MjI0RDogJzU1IDQ2NFE1NSA0NzEgNjAgNDc3VDc0IDQ4NFE4MCA0ODQgMTA4IDQ2NFQxNzIgNDIwVDI2OCAzNzZUMzg5IDM1NlE0MzYgMzU2IDQ4MyAzNjhUNTY2IDM5OVQ2MzAgNDM2VDY3NSA0NjdUNjk1IDQ4MlE3MDEgNDg0IDcwMyA0ODRRNzExIDQ4NCA3MTYgNDc4VDcyMiA0NjRRNzIyIDQ1NCA3MDcgNDQyUTU1MCAzMTYgMzg5IDMxNlEzMzggMzE2IDI4NiAzMjlUMTk1IDM2MlQxMjQgNDAyVDc2IDQzN1Q1NyA0NTZRNTUgNDYyIDU1IDQ2NFpNNTcgNDVRNjYgNTggMTA5IDg4VDIzMCAxNTFUMzgxIDE4M1E0MzggMTgzIDQ5NCAxNjhUNTg3IDEzNVQ2NTggOTRUNzAzIDYxVDcyMCA0NVE3MjIgMzkgNzIyIDM2UTcyMiAyOCA3MTcgMjJUNzAzIDE2UTY5NyAxNiA2NjkgMzZUNjA2IDgwVDUxMCAxMjRUMzg5IDE0NFEzNDEgMTQ0IDI5NCAxMzJUMjExIDEwMVQxNDcgNjRUMTAyIDMzVDgyIDE4UTc2IDE2IDc0IDE2UTY2IDE2IDYxIDIyVDU1IDM2UTU1IDM5IDU3IDQ1JyxcbiAgICAweDIyNEU6ICcyNDUgMzY3UTI1MSA0MTUgMjg4IDQ1M1QzOTIgNDkyUTQ0NSA0OTIgNDg1IDQ1NlQ1MzIgMzY3SDcwN1E3MjIgMzU5IDcyMiAzNDdRNzIyIDMzNCA3MTEgMzMxVDY2NSAzMjdINjA4SDUwOVE1MDAgMzMyIDQ5OCAzMzZRNDk2IDMzOCA0OTMgMzYzVDQ3MiA0MTFRNDQzIDQ1MSAzODkgNDUxSDM4N1EzMzUgNDUxIDMwNSA0MTFRMjkwIDM5MiAyODcgMzc0VDI4MiAzNDRUMjY4IDMyN0g3MlE1NiAzMzIgNTYgMzQ3UTU2IDM2MCA3MCAzNjdIMjQ1Wk01NiAxNTNRNTYgMTY4IDcyIDE3M0gyNjhRMjc3IDE2OCAyNzkgMTY0UTI4MSAxNjIgMjg0IDEzN1QzMDUgODlRMzM0IDQ5IDM4OSA0OUgzOTFRNDQyIDQ5IDQ3MiA4OVE0ODcgMTA4IDQ5MCAxMjZUNDk1IDE1NlQ1MDkgMTczSDYwOEg2NjZRNzAxIDE3MyA3MTEgMTcwVDcyMiAxNTNUNzA3IDEzM0g1MzJRNTI2IDgxIDQ4NiA0NVQzODkgOFEzMzEgOCAyOTEgNDVUMjQ1IDEzM0g3MFE1NiAxNDAgNTYgMTUzJyxcbiAgICAweDIyNEY6ICcyNDUgMzY3UTI1MSA0MTUgMjg4IDQ1M1QzOTIgNDkyUTQ0NSA0OTIgNDg1IDQ1NlQ1MzIgMzY3SDcwN1E3MjIgMzU5IDcyMiAzNDdRNzIyIDMzNCA3MTEgMzMxVDY2NSAzMjdINjA4SDUwOVE1MDAgMzMyIDQ5OCAzMzZRNDk2IDMzOCA0OTMgMzYzVDQ3MiA0MTFRNDQzIDQ1MSAzODkgNDUxSDM4N1EzMzUgNDUxIDMwNSA0MTFRMjkwIDM5MiAyODcgMzc0VDI4MiAzNDRUMjY4IDMyN0g3MlE1NiAzMzIgNTYgMzQ3UTU2IDM2MCA3MCAzNjdIMjQ1Wk01NiAxNTNRNTYgMTY4IDcyIDE3M0g3MDhRNzIyIDE2MyA3MjIgMTUzUTcyMiAxNDAgNzA3IDEzM0g3MFE1NiAxNDAgNTYgMTUzJyxcbiAgICAweDIyNTA6ICc1NiAzNDdRNTYgMzYwIDcwIDM2N0g3MDdRNzIyIDM1OSA3MjIgMzQ3UTcyMiAzMzYgNzA4IDMyOEwzOTAgMzI3SDcyUTU2IDMzMiA1NiAzNDdaTTU2IDE1M1E1NiAxNjggNzIgMTczSDcwOFE3MjIgMTYzIDcyMiAxNTNRNzIyIDE0MCA3MDcgMTMzSDcwUTU2IDE0MCA1NiAxNTNaTTMyOSA2MTBRMzI5IDYzNCAzNDYgNjUyVDM4OSA2NzBRNDEzIDY3MCA0MzEgNjU0VDQ1MCA2MTFRNDUwIDU4NiA0MzMgNTY4VDM5MCA1NTBUMzQ3IDU2N1QzMjkgNjEwJyxcbiAgICAweDIyNTE6ICc0MjEgNDc0VDM4OSA0NzRUMzM5IDQ5M1QzMjEgNTQxUTMyMSA1NjYgMzM3IDU4N1QzOTEgNjA5UTQ1NiA2MDIgNDU2IDU0MVE0NTYgNTEyIDQzOSA0OTNaTTU2IDM0N1E1NiAzNjAgNzAgMzY3SDcwN1E3MjIgMzU5IDcyMiAzNDdRNzIyIDMzNiA3MDggMzI4TDM5MCAzMjdINzJRNTYgMzMyIDU2IDM0N1pNNTYgMTUzUTU2IDE2OCA3MiAxNzNINzA4UTcyMiAxNjMgNzIyIDE1M1E3MjIgMTQwIDcwNyAxMzNINzBRNTYgMTQwIDU2IDE1M1pNNDIxIC0xMDhUMzg5IC0xMDhUMzM5IC04OVQzMjEgLTQxUTMyMSAtMTYgMzM3IDVUMzkxIDI3UTQ1NiAyMCA0NTYgLTQxUTQ1NiAtNzAgNDM5IC04OScsXG4gICAgMHgyMjUyOiAnMTUgNTQxUTE1IDU2OSAzMyA1ODVUNzUgNjAxVDExNyA1ODVUMTM1IDU0MVExMzUgNTE0IDExOCA0OThUNzUgNDgxVDMyIDQ5OFQxNSA1NDFaTTU2IDM0N1E1NiAzNjAgNzAgMzY3SDcwN1E3MjIgMzU5IDcyMiAzNDdRNzIyIDMzNiA3MDggMzI4TDM5MCAzMjdINzJRNTYgMzMyIDU2IDM0N1pNNTYgMTUzUTU2IDE2OCA3MiAxNzNINzA4UTcyMiAxNjMgNzIyIDE1M1E3MjIgMTQwIDcwNyAxMzNINzBRNTYgMTQwIDU2IDE1M1pNNjQyIC00MVE2NDIgLTE3IDY1OCAwVDcwMiAxOFE3MjYgMTggNzQ0IDNUNzYyIC00MVE3NjIgLTY3IDc0NSAtODRUNzAyIC0xMDFRNjc2IC0xMDEgNjU5IC04NVQ2NDIgLTQxJyxcbiAgICAweDIyNTM6ICc2NDIgNTQxUTY0MiA1NjkgNjYwIDU4NVQ3MDIgNjAxVDc0NCA1ODVUNzYyIDU0MVE3NjIgNTE1IDc0NSA0OThUNzAyIDQ4MVE2NzYgNDgxIDY1OSA0OTdUNjQyIDU0MVpNNTYgMzQ3UTU2IDM2MCA3MCAzNjdINzA3UTcyMiAzNTkgNzIyIDM0N1E3MjIgMzM2IDcwOCAzMjhMMzkwIDMyN0g3MlE1NiAzMzIgNTYgMzQ3Wk01NiAxNTNRNTYgMTY4IDcyIDE3M0g3MDhRNzIyIDE2MyA3MjIgMTUzUTcyMiAxNDAgNzA3IDEzM0g3MFE1NiAxNDAgNTYgMTUzWk0xNCAtNDFRMTQgLTE1IDMxIDFUNzQgMThRMTAxIDE4IDExOCAwVDEzNSAtNDFRMTM1IC02NCAxMTggLTgzVDc1IC0xMDJRNTEgLTEwMiAzMyAtODVUMTQgLTQxJyxcbiAgICAweDIyNTY6ICc1NiAzNDdRNTYgMzYwIDcwIDM2N0g3MDdRNzIyIDM1OSA3MjIgMzQ3UTcyMiAzMzQgNzExIDMzMVQ2NTggMzI3SDU4Nkg0NjVMNDcyIDMxOFE0OTYgMjg4IDQ5NiAyNTBUNDcyIDE4Mkw0NjUgMTczSDU4Nkg2NjNRNzAwIDE3MyA3MTEgMTcwVDcyMiAxNTNUNzA3IDEzM0g3MFE1NiAxNDAgNTYgMTUzUTU2IDE2OCA3MiAxNzNIMzEyTDMwNSAxODJRMjgxIDIxMiAyODEgMjUwVDMwNSAzMThMMzEyIDMyN0g3MlE1NiAzMzIgNTYgMzQ3Wk00NzMgMjUwUTQ3MyAyNjUgNDcyIDI3M1Q0NjAgMjk3VDQyOCAzMjdIMzQ5UTMyOCAzMTMgMzE4IDI5OFQzMDYgMjczVDMwNCAyNTBRMzA0IDIzNSAzMDUgMjI3VDMxNyAyMDNUMzQ5IDE3M0g0MjhRNDQ5IDE4NyA0NTkgMjAyVDQ3MSAyMjdUNDczIDI1MCcsXG4gICAgMHgyMjU3OiAnMjc5IDYxMlEyNzkgNjU2IDMxMCA2ODhUMzg4IDcyMVE0MzMgNzIxIDQ2NSA2ODlUNDk4IDYxMlE0OTggNTczIDQ3MCA1MzhUMzg5IDUwM1EzMzYgNTAzIDMwOCA1MzhUMjc5IDYxMlpNNDU4IDYxNFE0NTggNjM3IDQ1MiA2NTFUNDMzIDY3MlQ0MTEgNjc5VDM4MyA2ODBUMzUyIDY3NVQzMzMgNjY0VDMyNCA2NDdUMzIxIDYyOVQzMjAgNjExUTMyMCA1OTMgMzIxIDU4NFQzMzIgNTYyVDM1OSA1NDVRMzY2IDU0MyAzODkgNTQzSDM5MVE0MDYgNTQzIDQxNCA1NDRUNDM1IDU1MlQ0NTIgNTczVDQ1OCA2MTRaTTU2IDM0N1E1NiAzNjAgNzAgMzY3SDcwN1E3MjIgMzU5IDcyMiAzNDdRNzIyIDMzNiA3MDggMzI4TDM5MCAzMjdINzJRNTYgMzMyIDU2IDM0N1pNNTYgMTUzUTU2IDE2OCA3MiAxNzNINzA4UTcyMiAxNjMgNzIyIDE1M1E3MjIgMTQwIDcwNyAxMzNINzBRNTYgMTQwIDU2IDE1MycsXG4gICAgMHgyMjVDOiAnMTkyIDQ4MkgxOTBRMTg3IDQ4MyAxODUgNDg0VDE4MSA0ODhUMTc3IDQ5M1QxNzUgNTAxUTE3NSA1MDYgMTc4IDUxMlExODQgNTIzIDI3OCA2ODdUMzc1IDg1M1EzNzkgODU3IDM4MyA4NTdRMzg1IDg1NyAzODcgODU4VDM5MCA4NTlRMzk3IDg1OSA0MDMgODUzUTQwNSA4NTEgNDk5IDY4N1Q2MDAgNTEyUTYwMyA1MDYgNjAzIDUwMVE2MDMgNDg4IDU4NyA0ODJIMTkyWk01NDggNTIzTDM4OSA3OThRMzg4IDc5OCAzMDkgNjYxVDIzMCA1MjNUMzg5IDUyMlQ1NDggNTIzWk01NiAzNDdRNTYgMzYwIDcwIDM2N0g3MDhRNzIzIDM1OSA3MjMgMzQ3UTcyMyAzMzYgNzA5IDMyOEwzOTAgMzI3SDcyUTU2IDMzMiA1NiAzNDdaTTU2IDE1M1E1NiAxNjggNzIgMTczSDcwOVE3MjMgMTYzIDcyMyAxNTNRNzIzIDE0MCA3MDggMTMzSDcwUTU2IDE0MCA1NiAxNTMnLFxuICAgIDB4MjI2MDogJzE2NiAtMjE1VDE1OSAtMjE1VDE0NyAtMjEyVDE0MSAtMjA0VDEzOSAtMTk3UTEzOSAtMTkwIDE0NCAtMTgzTDMwNiAxMzNINzBRNTYgMTQwIDU2IDE1M1E1NiAxNjggNzIgMTczSDMyN0w0MDYgMzI3SDcyUTU2IDMzMiA1NiAzNDdRNTYgMzYwIDcwIDM2N0g0MjZRNTk3IDcwMiA2MDIgNzA3UTYwNSA3MTYgNjE4IDcxNlE2MjUgNzE2IDYzMCA3MTJUNjM2IDcwM1Q2MzggNjk2UTYzOCA2OTIgNDcxIDM2N0g3MDdRNzIyIDM1OSA3MjIgMzQ3UTcyMiAzMzYgNzA4IDMyOEw0NTEgMzI3TDM3MSAxNzNINzA4UTcyMiAxNjMgNzIyIDE1M1E3MjIgMTQwIDcwNyAxMzNIMzUxUTE3NSAtMjEwIDE3MCAtMjEyUTE2NiAtMjE1IDE1OSAtMjE1JyxcbiAgICAweDIyNjE6ICc1NiA0NDRRNTYgNDU3IDcwIDQ2NEg3MDdRNzIyIDQ1NiA3MjIgNDQ0UTcyMiA0MzAgNzA2IDQyNEg3MlE1NiA0MjkgNTYgNDQ0Wk01NiAyMzdUNTYgMjUwVDcwIDI3MEg3MDdRNzIyIDI2MiA3MjIgMjUwVDcwNyAyMzBINzBRNTYgMjM3IDU2IDI1MFpNNTYgNTZRNTYgNzEgNzIgNzZINzA2UTcyMiA3MCA3MjIgNTZRNzIyIDQ0IDcwNyAzNkg3MFE1NiA0MyA1NiA1NicsXG4gICAgMHgyMjY0OiAnNjc0IDYzNlE2ODIgNjM2IDY4OCA2MzBUNjk0IDYxNVQ2ODcgNjAxUTY4NiA2MDAgNDE3IDQ3MkwxNTEgMzQ2TDM5OSAyMjhRNjg3IDkyIDY5MSA4N1E2OTQgODEgNjk0IDc2UTY5NCA1OCA2NzYgNTZINjcwTDM4MiAxOTJROTIgMzI5IDkwIDMzMVE4MyAzMzYgODMgMzQ4UTg0IDM1OSA5NiAzNjVRMTA0IDM2OSAzODIgNTAwVDY2NSA2MzRRNjY5IDYzNiA2NzQgNjM2Wk04NCAtMTE4UTg0IC0xMDggOTkgLTk4SDY3OFE2OTQgLTEwNCA2OTQgLTExOFE2OTQgLTEzMCA2NzkgLTEzOEg5OFE4NCAtMTMxIDg0IC0xMTgnLFxuICAgIDB4MjI2NTogJzgzIDYxNlE4MyA2MjQgODkgNjMwVDk5IDYzNlExMDcgNjM2IDI1MyA1NjhUNTQzIDQzMVQ2ODcgMzYxUTY5NCAzNTYgNjk0IDM0NlQ2ODcgMzMxUTY4NSAzMjkgMzk1IDE5MkwxMDcgNTZIMTAxUTgzIDU4IDgzIDc2UTgzIDc3IDgzIDc5UTgyIDg2IDk4IDk1UTExNyAxMDUgMjQ4IDE2N1EzMjYgMjA0IDM3OCAyMjhMNjI2IDM0NkwzNjAgNDcyUTI5MSA1MDUgMjAwIDU0OFExMTIgNTg5IDk4IDU5N1Q4MyA2MTZaTTg0IC0xMThRODQgLTEwOCA5OSAtOThINjc4UTY5NCAtMTA0IDY5NCAtMTE4UTY5NCAtMTMwIDY3OSAtMTM4SDk4UTg0IC0xMzEgODQgLTExOCcsXG4gICAgMHgyMjY2OiAnNjc0IDc1M1E2ODIgNzUzIDY4OCA3NDdUNjk0IDczMlQ2ODcgNzE4UTY4NiA3MTcgNDE3IDU4OUwxNTEgNDYzTDM5OSAzNDVRNjg3IDIwOSA2OTEgMjA0UTY5NCAxOTggNjk0IDE5M1E2OTQgMTc1IDY3NiAxNzNINjcwTDM4MiAzMDlROTIgNDQ2IDkwIDQ0OFE4MyA0NTMgODMgNDY1UTg0IDQ3NiA5NiA0ODJRMTA0IDQ4NiAzODIgNjE3VDY2NSA3NTFRNjY5IDc1MyA2NzQgNzUzWk04NCAzOVE4NCA0OSA5OSA1OUg2NzhRNjk0IDUzIDY5NCAzOVE2OTQgMjYgNjc5IDE5SDk4UTg0IDI2IDg0IDM5Wk04MyAtMTU3UTgzIC0xNTMgODQgLTE1MFQ4NiAtMTQ1VDg5IC0xNDFUOTIgLTEzOVQ5NiAtMTM3VDk5IC0xMzVINjc4UTY5NCAtMTQ2IDY5NCAtMTU1UTY5NCAtMTY4IDY3OSAtMTc1SDk4UTg0IC0xNjggODMgLTE1NycsXG4gICAgMHgyMjY3OiAnODMgNzMzUTgzIDc0MSA4OSA3NDdUOTkgNzUzUTEwNyA3NTMgMjUzIDY4NVQ1NDMgNTQ4VDY4NyA0NzhRNjk0IDQ3MyA2OTQgNDYzVDY4NyA0NDhRNjg1IDQ0NiAzOTUgMzA5TDEwNyAxNzNIMTAxUTgzIDE3NSA4MyAxOTNRODMgMTk0IDgzIDE5NlE4MiAyMDMgOTggMjEyUTExNyAyMjIgMjQ4IDI4NFEzMjYgMzIxIDM3OCAzNDVMNjI2IDQ2M0wzNjAgNTg5UTI5MSA2MjIgMjAwIDY2NVExMTIgNzA2IDk4IDcxNFQ4MyA3MzNaTTg0IDM5UTg0IDQ5IDk5IDU5SDY3OFE2OTQgNTMgNjk0IDM5UTY5NCAyNiA2NzkgMTlIOThRODQgMjYgODQgMzlaTTgzIC0xNTdRODMgLTE1MyA4NCAtMTUwVDg2IC0xNDVUODkgLTE0MVQ5MiAtMTM5VDk2IC0xMzdUOTkgLTEzNUg2NzhRNjk0IC0xNDYgNjk0IC0xNTVRNjk0IC0xNjggNjc5IC0xNzVIOThRODQgLTE2OCA4MyAtMTU3JyxcbiAgICAweDIyNjg6ICc4NiA0NzJROTMgNDc3IDM4MSA2MTRUNjczIDc1MlE2ODAgNzUyIDY4NiA3NDZUNjkzIDczMlQ2ODkgNzIxUTY4NiA3MTUgNDE4IDU5MEwxNTEgNDYxTDQxOCAzMzJRNjg0IDIwNyA2ODkgMjAxUTY5MyAxOTUgNjkzIDE5MFE2OTMgMTgzIDY4NyAxNzdUNjc1IDE3MFE2NjggMTcwIDM4MCAzMDdUODYgNDUwUTgyIDQ1NCA4MiA0NjFRODIgNDY3IDg2IDQ3MlpNODIgMzNRODIgMzcgODMgNDBUODkgNDdUOTUgNTRINDczTDUyMCAxMDVRNTY5IDE1NiA1NzEgMTU2UTU3MyAxNTcgNTc4IDE1N1E1ODYgMTU3IDU5MiAxNTFUNTk4IDEzNlE1OTggMTMwIDU2MiA5Mkw1MjYgNTZMNjA0IDU0SDY4MlE2OTMgNDMgNjkzIDM1UTY5MyAzMSA2OTIgMjhUNjg2IDIxVDY4MCAxNEg0ODlMMzQyIC0xMzlMNTEzIC0xNDJINjgyUTY5MyAtMTQ4IDY5MyAtMTYwUTY5MyAtMTY3IDY4MCAtMTgySDMwNEwyNTggLTIzMFEyNDggLTI0MCAyMzcgLTI1MVQyMjEgLTI2OFQyMTEgLTI3OFQyMDMgLTI4NFQxOTcgLTI4NlExODkgLTI4NiAxODQgLTI4MFQxNzggLTI2NFExNzggLTI1NyAyMTMgLTIxOUwyNDkgLTE4MkgxNzFMOTMgLTE3OUw4NiAtMTc1UTgyIC0xNzAgODIgLTE2M1E4MiAtMTU1IDk1IC0xNDJIMjg5TDM2MCAtNjRMNDMzIDE0SDI2Mkw5MyAxNlE4MiAyMyA4MiAzMycsXG4gICAgMHgyMjY5OiAnODkgNzQ1UTk1IDc1MiAxMDAgNzUyUTEwNiA3NTIgMzk0IDYxNVQ2ODkgNDcyUTY5MyA0NjggNjkzIDQ2MVQ2ODkgNDUwUTY4NCA0NDUgMzk2IDMwOFQxMDAgMTcwUTk1IDE3MCA4OSAxNzZUODIgMTkwUTgyIDE5NSA4NiAyMDFROTEgMjA4IDM1OCAzMzJMNjI0IDQ2MUwzNTggNTkwUTkwIDcxNSA4NiA3MjFRODIgNzI1IDgyIDczMVE4MiA3MzkgODkgNzQ1Wk04MiAzM1E4MiAzNyA4MyA0MFQ4OSA0N1Q5NSA1NEg0NzNMNTIwIDEwNVE1NjkgMTU2IDU3MSAxNTZRNTczIDE1NyA1NzggMTU3UTU4NiAxNTcgNTkyIDE1MVQ1OTggMTM2UTU5OCAxMzAgNTYyIDkyTDUyNiA1Nkw2MDQgNTRINjgyUTY5MyA0MyA2OTMgMzVRNjkzIDMxIDY5MiAyOFQ2ODYgMjFUNjgwIDE0SDQ4OUwzNDIgLTEzOUw1MTMgLTE0Mkg2ODJRNjkzIC0xNDggNjkzIC0xNjBRNjkzIC0xNjcgNjgwIC0xODJIMzA0TDI1OCAtMjMwUTI0OCAtMjQwIDIzNyAtMjUxVDIyMSAtMjY4VDIxMSAtMjc4VDIwMyAtMjg0VDE5NyAtMjg2UTE4OSAtMjg2IDE4NCAtMjgwVDE3OCAtMjY0UTE3OCAtMjU3IDIxMyAtMjE5TDI0OSAtMTgySDE3MUw5MyAtMTc5TDg2IC0xNzVRODIgLTE3MCA4MiAtMTYzUTgyIC0xNTUgOTUgLTE0MkgyODlMMzYwIC02NEw0MzMgMTRIMjYyTDkzIDE2UTgyIDIzIDgyIDMzJyxcbiAgICAweDIyNkE6ICc2MzkgLTQ4UTYzOSAtNTQgNjM0IC02MFQ2MTkgLTY3SDYxOFE2MTIgLTY3IDUzNiAtMjZRNDMwIDMzIDMyOSA4OFE2MSAyMzUgNTkgMjM5UTU2IDI0MyA1NiAyNTBUNTkgMjYxUTYyIDI2NiAzMzYgNDE1VDYxNSA1NjdMNjE5IDU2OFE2MjIgNTY3IDYyNSA1NjdRNjM5IDU2MiA2MzkgNTQ4UTYzOSA1NDAgNjMzIDUzNFE2MzIgNTMyIDM3NCAzOTFMMTE3IDI1MEwzNzQgMTA5UTYzMiAtMzIgNjMzIC0zNFE2MzkgLTQwIDYzOSAtNDhaTTk0NCAtNDhROTQ0IC01NCA5MzkgLTYwVDkyNCAtNjdIOTIzUTkxNyAtNjcgODQxIC0yNlE3MzUgMzMgNjM0IDg4UTM2NiAyMzUgMzY0IDIzOVEzNjEgMjQzIDM2MSAyNTBUMzY0IDI2MVEzNjcgMjY2IDY0MSA0MTVUOTIwIDU2N0w5MjQgNTY4UTkyNyA1NjcgOTMwIDU2N1E5NDQgNTYyIDk0NCA1NDhROTQ0IDU0MCA5MzggNTM0UTkzNyA1MzIgNjc5IDM5MUw0MjIgMjUwTDY3OSAxMDlROTM3IC0zMiA5MzggLTM0UTk0NCAtNDAgOTQ0IC00OCcsXG4gICAgMHgyMjZCOiAnNTUgNTM5VDU1IDU0N1Q2MCA1NjFUNzQgNTY3UTgxIDU2NyAyMDcgNDk4UTI5NyA0NDkgMzY1IDQxMlE2MzMgMjY1IDYzNiAyNjFRNjM5IDI1NSA2MzkgMjUwUTYzOSAyNDEgNjI2IDIzMlE2MTQgMjI0IDM2NSA4OFE4MyAtNjUgNzkgLTY2UTc2IC02NyA3MyAtNjdRNjUgLTY3IDYwIC02MVQ1NSAtNDdRNTUgLTM5IDYxIC0zM1E2MiAtMzMgOTUgLTE1VDE5MyAzOVQzMjAgMTA5TDMyMSAxMTBIMzIyTDMyMyAxMTFIMzI0TDMyNSAxMTJMMzI2IDExM0gzMjdMMzI5IDExNEgzMzBMMzMxIDExNUgzMzJMMzMzIDExNkwzMzQgMTE3SDMzNUwzMzYgMTE4SDMzN0wzMzggMTE5SDMzOUwzNDAgMTIwTDM0MSAxMjFIMzQyTDM0MyAxMjJIMzQ0TDM0NSAxMjNIMzQ2TDM0NyAxMjRMMzQ4IDEyNUgzNDlMMzUxIDEyNkgzNTJMMzUzIDEyN0gzNTRMMzU1IDEyOEwzNTYgMTI5SDM1N0wzNTggMTMwSDM1OUwzNjAgMTMxSDM2MUwzNjIgMTMyTDM2MyAxMzNIMzY0TDM2NSAxMzRIMzY2TDM2NyAxMzVIMzY4TDM2OSAxMzZIMzcwTDM3MSAxMzdMMzcyIDEzOEgzNzNMMzc0IDEzOUgzNzVMMzc2IDE0MEwzNzggMTQxTDU3NiAyNTFRNjMgNTMwIDYyIDUzM1E1NSA1MzkgNTUgNTQ3Wk0zNjAgNTM5VDM2MCA1NDdUMzY1IDU2MVQzNzkgNTY3UTM4NiA1NjcgNTEyIDQ5OFE2MDIgNDQ5IDY3MCA0MTJROTM4IDI2NSA5NDEgMjYxUTk0NCAyNTUgOTQ0IDI1MFE5NDQgMjQxIDkzMSAyMzJROTE5IDIyNCA2NzAgODhRMzg4IC02NSAzODQgLTY2UTM4MSAtNjcgMzc4IC02N1EzNzAgLTY3IDM2NSAtNjFUMzYwIC00N1EzNjAgLTM5IDM2NiAtMzNRMzY3IC0zMyA0MDAgLTE1VDQ5OCAzOVQ2MjUgMTA5TDYyNiAxMTBINjI3TDYyOCAxMTFINjI5TDYzMCAxMTJMNjMxIDExM0g2MzJMNjM0IDExNEg2MzVMNjM2IDExNUg2MzdMNjM4IDExNkw2MzkgMTE3SDY0MEw2NDEgMTE4SDY0Mkw2NDMgMTE5SDY0NEw2NDUgMTIwTDY0NiAxMjFINjQ3TDY0OCAxMjJINjQ5TDY1MCAxMjNINjUxTDY1MiAxMjRMNjUzIDEyNUg2NTRMNjU2IDEyNkg2NTdMNjU4IDEyN0g2NTlMNjYwIDEyOEw2NjEgMTI5SDY2Mkw2NjMgMTMwSDY2NEw2NjUgMTMxSDY2Nkw2NjcgMTMyTDY2OCAxMzNINjY5TDY3MCAxMzRINjcxTDY3MiAxMzVINjczTDY3NCAxMzZINjc1TDY3NiAxMzdMNjc3IDEzOEg2NzhMNjc5IDEzOUg2ODBMNjgxIDE0MEw2ODMgMTQxTDg4MSAyNTFRMzY4IDUzMCAzNjcgNTMzUTM2MCA1MzkgMzYwIDU0NycsXG4gICAgMHgyMjZDOiAnMTA0IDczMFExMDQgNzQ5IDEyMyA3NDlRMTMwIDc0OSAxMzggNzQ1UTE4NiA3MTcgMjM3IDY3MUwyNTAgNjU5TDI2MSA2NzBRMjk3IDcwMyAzMzIgNzI2VDM3NSA3NTBUMzg5IDc0NFQzOTUgNzMwUTM5NSA3MjEgMzkwIDcxN1QzNjQgNjk5VDMyMiA2NjhRMjkwIDY0MSAyODMgNjMyUTI4MCA2MjggMjgxIDYyN1QyOTMgNjEyUTQyNSA0NTQgNDI1IDI1MFE0MjUgMTQ0IDM4OCA1MVQyOTMgLTExMlEyODIgLTEyNSAyODEgLTEyNlQyODMgLTEzMlEzMDYgLTE2MiAzNzkgLTIwOVEzOTUgLTIxOSAzOTUgLTIzMFEzOTUgLTIzOCAzODkgLTI0NFQzNzUgLTI1MFQzMzUgLTIyOFQyNjIgLTE3MUwyNTAgLTE1OUwyMzggLTE3MFEyMDIgLTIwMyAxNjcgLTIyNlQxMjQgLTI1MFQxMTAgLTI0NFQxMDQgLTIzMFExMDQgLTIxOSAxMjEgLTIwOVExOTkgLTE1NiAyMTYgLTEzMlEyMTkgLTEyOCAyMTggLTEyN1QyMDYgLTExMlE3NCA0NiA3NCAyNTBUMjA2IDYxMlEyMTcgNjI1IDIxOCA2MjZUMjE2IDYzMlExOTkgNjU2IDEyMSA3MDlRMTA0IDcxOSAxMDQgNzMwWk0yNDkgLTk0UTM2NCA2MSAzNjQgMjUwUTM2NCA0MzAgMjY1IDU3NFEyNTMgNTkwIDI0OSA1OTRMMjQyIDU4M1ExMzQgNDM5IDEzNCAyNTBRMTM0IDExNCAxOTIgLTFRMjEyIC00NCAyNDIgLTgzTDI0OSAtOTQnLFxuICAgIDB4MjI2RTogJzY5MyAtMTRUNjkzIC0yMFQ2ODcgLTMzVDY3NSAtNDFRNjY3IC00MSA1MDYgMzdMMzQ0IDExMlEzNDIgMTEyIDI2MiAtNDZRMTg0IC0xOTYgMTc2IC0yMDVRMTcyIC0yMDkgMTY4IC0yMDlUMTYyIC0yMDhRMTU1IC0yMDggMTUxIC0yMDNUMTQ2IC0xOTBRMTQ2IC0xNzggMTcxIC0xMzdRMTkzIC05MSAyNTEgMjFMMzA2IDEzMkwxOTggMTgzUTE0MiAyMDggMTE4IDIyMFQ4OCAyMzhUODIgMjQ5UTgyIDI1MyA4NiAyNjFROTIgMjY3IDI3OCAzNTdMNDY0IDQ0M0w1MjkgNTcyUTU2MSA2MzcgNTc3IDY2N1Q1OTcgNzAzVDYwNyA3MDhRNjE1IDcwOCA2MjIgNzAyVDYyOSA2ODhRNjI5IDY4MCA1NzUgNTc5TDUyNCA0NzRRNTI0IDQ3MyA1NDUgNDgyVDU5OCA1MDhRNjY2IDU0MSA2NzMgNTQxVDY4NiA1MzVUNjkzIDUyMVE2OTMgNTEyIDY3OSA1MDRUNTg5IDQ1OUw0OTMgNDE0TDM2MCAxNTBRMzY2IDE0OCAzNzggMTQyVDQzMSAxMTZUNTI5IDcwUTY4NiAtOCA2ODkgLTEwUTY5MyAtMTQgNjkzIC0yMFpNMzgwIDI3N0w0MzMgMzgzUTQzMiAzODUgMjkyIDMxOVQxNTEgMjUwVDIzNyAyMDlUMzI0IDE3MEwzODAgMjc3JyxcbiAgICAweDIyNkY6ICc4MiA1MTRUODIgNTIwVDg5IDUzM1QxMDAgNTQxUTEwNiA1NDEgMjcxIDQ2M1E0MzQgMzg2IDQzNSAzODZMNTE1IDU0M1E1OTMgNjk5IDYwMCA3MDZRNjA0IDcwOCA2MDcgNzA4UTYxNSA3MDggNjIyIDcwMlQ2MjkgNjg4VDU0OSA1MjZRNTA5IDQ0NSA0OTEgNDA3VDQ3MyAzNjhRNTIyIDM0MyA1ODAgMzE3UTYzNiAyOTEgNjYwIDI3OFQ2ODggMjYxVDY5MyAyNTBWMjQ5UTY5MyAyNDEgNjgxIDIzNFQ1ODAgMTg0UTUzMyAxNjEgNTAyIDE0NlEzMTcgNTkgMzE1IDU5UTMxMiA1NiAyNDYgLTc0UTE5NyAtMTcwIDE4NiAtMTg5VDE2OCAtMjA5UTE2NCAtMjA5IDE2MiAtMjA4UTE1NSAtMjA4IDE1MSAtMjAzVDE0NiAtMTkwUTE0NiAtMTg3IDIwMCAtNzlMMjUzIDI4TDIxOCAxMVExODIgLTYgMTQ0IC0yM1QxMDAgLTQxUTk1IC00MSA4OSAtMzVUODIgLTIxUTgyIC0xMiA5NiAtNFQxODYgNDFMMjg0IDg4TDM0OSAyMTdRMzc3IDI3MyAzOTUgMzExVDQxMyAzNTBRNDEzIDM1MSAyNTMgNDI4UTEwMSA0OTggODYgNTEwUTgyIDUxNCA4MiA1MjBaTTYyNCAyNTBRNDYxIDMzMCA0NTUgMzMwUTQ1NCAzMzEgNDUzIDMyOVQ0NDggMzIxVDQ0MSAzMDhUNDMwIDI4N1Q0MTYgMjU5VDM5OCAyMjNMMzQyIDExNEw2MjQgMjUwJyxcbiAgICAweDIyNzA6ICc4MiAtMTI0UTgyIC0xMjAgODMgLTExN1Q4OSAtMTEwVDk1IC0xMDNIMjIwTDI4NCA1MFEzNDYgMjA0IDM0NCAyMDZMMjE4IDI2OFExNTMgMjk3IDEyMyAzMTNUODcgMzMzVDgyIDM0NFQ4NiAzNTVRMTA0IDM2OSAyOTEgNDU1UTQ5MSA1NTIgNDkxIDU1M0w1NDIgNjczUTU4MSA3NjcgNTkwIDc4NFQ2MDkgODAxUTYxNiA4MDEgNjIyIDc5NVQ2MjkgNzgxUTYyOSA3NzMgNTg2IDY3N1E1NDYgNTgxIDU0NiA1NzdMNjA5IDYwNlE2NjkgNjM1IDY3MyA2MzVRNjgwIDYzNSA2ODYgNjI5VDY5MyA2MTVRNjkzIDYxMCA2OTIgNjA4VDY3MCA1OTNUNjA0IDU2MUw1MjQgNTIxTDQwMCAyMjZMNTQyIDE1N1E2MTcgMTIzIDY0OSAxMDdUNjg3IDg1VDY5NCA3MlE2OTQgNjYgNjkwIDYwVDY3OSA1NFE2NjQgNTQgNTI2IDEyMVE1MTMgMTI3IDQ5NSAxMzZUNDY0IDE1MFQ0MzggMTYyVDQxNiAxNzNUMzk5IDE4MFQzODggMTg1TDM4NCAxODZRMzgzIDE4NiAzMjIgNDFMMjYyIC0xMDNINjgwUTY4MiAtMTA1IDY4NCAtMTA4VDY4OCAtMTEzVDY5MSAtMTE4VDY5MyAtMTI0UTY5MyAtMTM0IDY4MiAtMTQxTDQ2NCAtMTQzSDI0NkwyMTMgLTIxOVExODIgLTI5MiAxNzggLTI5OVExNzIgLTMwMyAxNjYgLTMwM1QxNTMgLTI5N1QxNDYgLTI4M1ExNDYgLTI4MiAxNzQgLTIxM1QyMDIgLTE0M0gxNDZMOTMgLTE0MVE4MiAtMTM0IDgyIC0xMjRaTTQxOCAzNzBMNDY2IDQ5NVE0NjQgNDk1IDMwOCA0MjBUMTUxIDM0NFQyMDQgMzE3VDMxMSAyNjdUMzY0IDI0NFEzNjQgMjQ3IDQxOCAzNzAnLFxuICAgIDB4MjI3MTogJzk3IDU0UTgyIDU0IDgyIDcyUTgyIDc5IDg2IDg0UTk1IDkxIDIyMiAxNTNMMzUxIDIxNUwzOTggMzI0TDQ0MiA0MzNMMjU4IDUxOVE5NSA1OTcgODcgNjA0UTgyIDYwOCA4MiA2MTVUODggNjI4VDEwMiA2MzVRMTA3IDYzNSA0MjQgNDg0TDQ1OCA0NjhMNTI0IDYzMFE1OTMgNzg5IDU5NyA3OTVRNjAxIDgwMSA2MDkgODAxUTYxNiA4MDEgNjIyIDc5NVQ2MjkgNzgxTDU2MiA2MTVMNDkzIDQ1MEw1ODkgNDA2UTY2NSAzNzEgNjc5IDM2MlQ2OTQgMzQ0UTY5NCAzMzkgNjkzIDMzN1Q2NzcgMzI2VDYzMSAzMDJUNTM4IDI1N1E1MDQgMjQxIDQ2NSAyMjNUNDA2IDE5NVQzODYgMTg2UTM4NCAxODUgMzIyIDM5TDI2MiAtMTAzSDY4MFE2ODIgLTEwNSA2ODQgLTEwOFQ2ODggLTExM1Q2OTEgLTExOFQ2OTMgLTEyNFE2OTMgLTEzNCA2ODIgLTE0MUw0NjQgLTE0M0gyNDZMMjEzIC0yMTlRMTgyIC0yOTIgMTc4IC0yOTlRMTcyIC0zMDMgMTY2IC0zMDNUMTUzIC0yOTdUMTQ2IC0yODNRMTQ2IC0yODIgMTc0IC0yMTNUMjAyIC0xNDNIMTQ2TDkzIC0xNDFRODIgLTEzNCA4MiAtMTI0UTgyIC0xMjAgODMgLTExN1Q4OSAtMTEwVDk1IC0xMDNIMjIwTDI3MyAyNlEzMjYgMTU2IDMyNiAxNTdMMjE4IDEwNlExMDkgNTQgOTcgNTRaTTU1MyAzNzlRNDgwIDQxMiA0ODAgNDE1UTQ3OSA0MTUgNDYwIDM3MlQ0MjMgMjg1VDQwNiAyNDFRNDA4IDI0MCA1MTYgMjkxVDYyNCAzNDRMNTUzIDM3OScsXG4gICAgMHgyMjcyOiAnNjc0IDczMlE2ODIgNzMyIDY4OCA3MjZUNjk0IDcxMVQ2ODcgNjk3UTY4NiA2OTYgNDE3IDU2OEwxNTEgNDQyTDM5OSAzMjRRNjg3IDE4OCA2OTEgMTgzUTY5NCAxNzcgNjk0IDE3MlE2OTQgMTU0IDY3NiAxNTJINjcwTDM4MiAyODhROTIgNDI1IDkwIDQyN1E4MyA0MzIgODMgNDQ0UTg0IDQ1NSA5NiA0NjFRMTA0IDQ2NSAzODIgNTk2VDY2NSA3MzBRNjY5IDczMiA2NzQgNzMyWk01NiAtMTk0UTU2IC0xMDcgMTA2IC01MVQyMjIgNlEyNjAgNiAyOTYgLTEyVDM2MiAtNTZUNDIwIC0xMDhUNDgzIC0xNTNUNTU0IC0xNzFRNjE2IC0xNzEgNjU0IC0xMjhUNjk0IC0yOVE2OTYgNiA3MDggNlE3MjIgNiA3MjIgLTI2UTcyMiAtMTAyIDY3NiAtMTY0VDU1NyAtMjI3UTUxOCAtMjI3IDQ4MSAtMjA5VDQxNSAtMTY1VDM1OCAtMTEzVDI5NCAtNjlUMjIzIC01MVExNjMgLTUxIDEyNSAtOTNUODMgLTE5NlE4MSAtMjI4IDY5IC0yMjhRNTYgLTIyOCA1NiAtMjAyVi0xOTQnLFxuICAgIDB4MjI3MzogJzkwIDY5N1E4MyA3MDQgODMgNzEyVDg4IDcyNlQ5OSA3MzJRMTA3IDczMiAyNTMgNjY0VDU0MyA1MjdUNjg3IDQ1N1E2OTQgNDUyIDY5NCA0NDJUNjg3IDQyN1E2ODUgNDI1IDM5NSAyODhMMTA3IDE1MkgxMDFRODMgMTU0IDgzIDE3MlE4MyAxNzMgODMgMTc1UTgyIDE4MiA5OCAxOTFRMTE3IDIwMSAyNDggMjYzUTMyNiAzMDAgMzc4IDMyNEw2MjYgNDQyTDM2MCA1NjhROTEgNjk2IDkwIDY5N1pNNTYgLTE5NFE1NiAtMTA3IDEwNiAtNTFUMjIyIDZRMjYwIDYgMjk2IC0xMlQzNjIgLTU2VDQyMCAtMTA4VDQ4MyAtMTUzVDU1NCAtMTcxUTYxNiAtMTcxIDY1NCAtMTI4VDY5NCAtMjlRNjk2IDYgNzA4IDZRNzIyIDYgNzIyIC0yNlE3MjIgLTEwMiA2NzYgLTE2NFQ1NTcgLTIyN1E1MTggLTIyNyA0ODEgLTIwOVQ0MTUgLTE2NVQzNTggLTExM1QyOTQgLTY5VDIyMyAtNTFRMTYzIC01MSAxMjUgLTkzVDgzIC0xOTZRODEgLTIyOCA2OSAtMjI4UTU2IC0yMjggNTYgLTIwMlYtMTk0JyxcbiAgICAweDIyNzY6ICc3MzQgMTgxUTczNCAxNzMgNzI4IDE2N1Q3MTQgMTYxUTcxMSAxNjEgMzg2IDI4MFQ1NCA0MDRRNDQgNDA4IDQ0IDQyMVE0NCA0MzIgNTIgNDM3UTY2IDQ0MyAzODggNTYyVDcxNCA2ODFRNzIxIDY4MSA3MjcgNjc1VDczNCA2NjFRNzM0IDY1MSA3MjIgNjQ1UTcxMSA2MzkgNDYyIDU0NlE0NDEgNTM5IDQyMCA1MzFMMTIyIDQyMUw0MjAgMzExTDcyMyAxOThRNzM0IDE5MiA3MzQgMTgxWk00NCAyNDdRNDQgMjU1IDUwIDI2MVQ2MyAyNjdRNjYgMjY3IDM5MSAxNDhUNzIzIDI0UTczNCAxOCA3MzQgN1Q3MjMgLTEwUTcxNiAtMTQgMzkxIC0xMzNUNjMgLTI1M1E1NiAtMjUzIDUwIC0yNDdUNDQgLTIzM1E0NCAtMjIzIDU1IC0yMTdRNjcgLTIxMCAzMTcgLTExOFEzMzcgLTExMCAzNTcgLTEwM0w2NTUgN0wzNTcgMTE3TDU0IDIzMFE0NCAyMzYgNDQgMjQ3JyxcbiAgICAweDIyNzc6ICc4MyA2NjFRODMgNjY4IDg4IDY3NFQxMDQgNjgxUTExMSA2NzkgMzk2IDU2MFE2ODYgNDM3IDY4NyA0MzZRNjk0IDQzMSA2OTQgNDIxVDY4NyA0MDZRNjg2IDQwNSA1NDMgMzQ0VDI1MyAyMjJUMTAxIDE2MVE4MyAxNjMgODMgMTgwUTgzIDE5NCA5NSAxOTlROTYgMTk5IDEzMCAyMTNUMjMyIDI1N1QzNjEgMzExTDYyMSA0MjFMMzU3IDUzMlEzMDcgNTUzIDIzMyA1ODRRMTIxIDYzMSAxMDIgNjQwVDgzIDY2MVpNNjczIDI2N1E2OTQgMjY3IDY5NCAyNDhRNjk0IDIzNyA2ODcgMjMyUTY4NCAyMjkgNDIwIDExOEwxNTYgN0w0MTYgLTEwM0w2ODMgLTIxNVE2OTQgLTIyMiA2OTQgLTIzM1E2OTQgLTI1MSA2NzYgLTI1M1E2NzAgLTI1MyA1MjQgLTE5MlQyMzUgLTcwVDkwIC04UTgzIC0xIDgzIDdRODMgMTkgOTQgMjRROTcgMjUgMzc4IDE0NFQ2NjcgMjY2UTY2OSAyNjcgNjczIDI2NycsXG4gICAgMHgyMjdBOiAnODQgMjQ5UTg0IDI2MiA5MSAyNjZUMTE3IDI3MFExMjAgMjcwIDEyNiAyNzBUMTM3IDI2OVEzODggMjczIDUxMiAzMzNUNjUzIDUxMlE2NTcgNTM5IDY3NiA1MzlRNjg1IDUzOCA2ODkgNTMyVDY5NCA1MjBWNTE1UTY4OSA0NjkgNjcyIDQzMVQ2MjYgMzY2VDU2OSAzMjBUNTAwIDI4NlQ0MzUgMjY1VDM3MyAyNDlRMzc5IDI0OCA0MDQgMjQyVDQ0MCAyMzNUNDc3IDIyMVQ1MzMgMTk5UTY4MSAxMjQgNjk0IC0xN1E2OTQgLTQxIDY3NCAtNDFRNjU4IC00MSA2NTMgLTE3UTY0NiA0MSA2MTMgODRUNTMzIDE1NFQ0MTggMTk3VDI4NCAyMjBUMTM3IDIyOUgxMTRRMTA0IDIyOSA5OCAyMzBUODggMjM1VDg0IDI0OScsXG4gICAgMHgyMjdCOiAnODQgNTE3UTg0IDUzOSAxMDIgNTM5UTExNSA1MzkgMTE5IDUyOVQxMjUgNTAzVDEzNyA0NTlUMTcxIDQwNFEyNzcgMjc1IDY0MCAyNjlINjYxUTY5NCAyNjkgNjk0IDI0OVQ2NjEgMjI5SDY0MFE1MjYgMjI3IDQzOSAyMTRUMjgzIDE3M1QxNzMgOThUMTI0IC0xN1ExMTggLTQxIDEwMyAtNDFRODMgLTQxIDgzIC0xN1E4OCAyOSAxMDUgNjdUMTUxIDEzMlQyMDggMTc4VDI3NyAyMTJUMzQyIDIzM1Q0MDQgMjQ5UTQwMSAyNTAgMzgwIDI1NFQzNDUgMjYzVDMwMiAyNzZUMjQ1IDI5OVExMjUgMzU4IDkyIDQ2OFE4NCA1MDIgODQgNTE3JyxcbiAgICAweDIyN0M6ICcxMTIgMjcwUTgzIDI3MCA4MyAyOTBRODMgMzAxIDk0IDMwN1E5OCAzMTAgMTE4IDMxMFE1MTYgMzEwIDYyMCA0NjRRNjM1IDQ4NiA2NDIgNTEwVDY1MSA1NDhUNjU3IDU3MVQ2NzUgNTgwUTY5MyA1NzcgNjkzIDU1OVY1NTJRNjg0IDQ3MiA2MjggNDEwVDQ2NSAzMTRRNDM2IDMwMyAzNzIgMjkwUTM3MyAyOTAgMzg4IDI4N1Q0MjUgMjc4VDQ2NSAyNjZRNjc0IDE5OSA2OTMgMjhMNjk0IDE3UTY4OCA1IDY4MyAzUTY3NyAwIDY3MyAwUTY1NiAwIDY1MyAyNFE2MjMgMjcwIDExOCAyNzBIMTEyWk0xMTAgMTE2UTgzIDExNiA4MyAxMzZUMTEwIDE1NkgxMTNRMTM0IDE1NiAxNjAgMTU1VDIzMSAxNDZUMzE4IDEyOFQ0MDcgOTVUNDg5IDQ0VDU1MCAtMzBUNTgzIC0xMzFRNTgzIC0xNTMgNTYzIC0xNTNRNTU2IC0xNTMgNTUzIC0xNTJUNTQ3IC0xNDVUNTQyIC0xMjdRNTMxIC01NCA0NzggMFE0MjUgNTMgMzMzIDgzVDEyMyAxMTZIMTEwJyxcbiAgICAweDIyN0Q6ICc2NjggMzEwUTY5NCAzMTAgNjk0IDI5MFE2OTQgMjg1IDY5MSAyNzlRNjg0IDI3MSA2NjQgMjcwUTU1MCAyNjggNDY0IDI1N1QzMDEgMjIwVDE3OSAxNDZUMTI0IDI3UTExOSAwIDEwMyAwVDgzIDE2UTgzIDIxIDgzIDMxVDkyIDY4VDExMyAxMjFUMTU3IDE3N1QyMjkgMjMxUTI5NSAyNjggNDA1IDI5MFE0MDQgMjkwIDM4OSAyOTNUMzUyIDMwMlQzMTIgMzE0UTEzOCAzNzEgOTYgNTAwUTgzIDU0MSA4MyA1NjJRODMgNTY4IDg5IDU3NFQxMDMgNTgwUTExNSA1ODAgMTIwIDU3MFQxMjYgNTQyVDEzOCA0OTdUMTczIDQ0MlEyODkgMzEwIDY1OSAzMTBINjY4Wk0xOTQgLTEzMVEyMDEgLTYwIDI0MSAtNlQzNDMgODJUNDc3IDEzM1Q2MjggMTU1UTYzMiAxNTUgNjQ0IDE1NVQ2NjEgMTU2UTY4NSAxNTUgNjkwIDE0N1E2OTQgMTQzIDY5NCAxMzZRNjk0IDEzMiA2OTMgMTI5VDY4OSAxMjRUNjg1IDEyMFQ2ODEgMTE3TDY1NiAxMTZRNTk2IDExNCA1NDMgMTA2VDQzNiA3OVQzNDIgMzVUMjcyIC0zM1QyMzUgLTEyN1EyMzEgLTE1NCAyMTIgLTE1NFEyMDMgLTE1MyAxOTkgLTE0N1QxOTQgLTEzNlYtMTMxJyxcbiAgICAweDIyN0U6ICc4NCA0NDJRODQgNDU1IDkxIDQ1OVQxMTcgNDYzUTEyMCA0NjMgMTI2IDQ2M1QxMzcgNDYyUTM4OCA0NjYgNTEyIDUyNlQ2NTMgNzA1UTY1NyA3MzIgNjc2IDczMlE2ODUgNzMxIDY4OSA3MjVUNjk0IDcxNFY3MDhRNjg5IDY2MiA2NzIgNjI0VDYyNiA1NTlUNTY5IDUxM1Q1MDAgNDc5VDQzNSA0NThUMzczIDQ0MlEzNzkgNDQxIDQwNCA0MzVUNDQwIDQyNlQ0NzcgNDE0VDUzMyAzOTJRNTkyIDM2MiA2MzAgMzE5VDY4MSAyNDFUNjk0IDE3NFE2OTQgMTUzIDY3NCAxNTNRNjYyIDE1MyA2NTcgMTYzVDY1MiAxODhUNjQwIDIzMVQ2MDYgMjg3UTUwMCA0MTYgMTM3IDQyMkgxMTRRMTA0IDQyMiA5OCA0MjNUODggNDI4VDg0IDQ0MlpNNTYgLTE5NFE1NiAtMTA3IDEwNiAtNTFUMjIyIDZRMjYwIDYgMjk2IC0xMlQzNjIgLTU2VDQyMCAtMTA4VDQ4MyAtMTUzVDU1NCAtMTcxUTYxNiAtMTcxIDY1NCAtMTI4VDY5NCAtMjlRNjk2IDYgNzA4IDZRNzIyIDYgNzIyIC0yNlE3MjIgLTEwMiA2NzYgLTE2NFQ1NTcgLTIyN1E1MTggLTIyNyA0ODEgLTIwOVQ0MTUgLTE2NVQzNTggLTExM1QyOTQgLTY5VDIyMyAtNTFRMTYzIC01MSAxMjUgLTkzVDgzIC0xOTZRODEgLTIyOCA2OSAtMjI4UTU2IC0yMjggNTYgLTIwMlYtMTk0JyxcbiAgICAweDIyN0Y6ICc4NCA3MTBRODQgNzMyIDEwMiA3MzJRMTE1IDczMiAxMTkgNzIyVDEyNSA2OTZUMTM3IDY1MlQxNzEgNTk3UTI3NyA0NjggNjQwIDQ2Mkg2NjFRNjk0IDQ2MiA2OTQgNDQyVDY2MSA0MjJINjQwUTU3OCA0MjEgNTI2IDQxN1Q0MTUgNDAzVDMwOSAzNzZUMjIyIDMzM1QxNTYgMjY4VDEyNCAxNzlRMTIyIDE2MiAxMTggMTU4VDEwMyAxNTNRMTAwIDE1MyA5OCAxNTNUOTUgMTU0VDkzIDE1NVQ5MCAxNThUODUgMTYzUTgzIDE2NyA4MyAxNzZRODggMjIyIDEwNSAyNjBUMTUxIDMyNVQyMDggMzcxVDI3NyA0MDVUMzQyIDQyNlQ0MDQgNDQyUTQwMSA0NDMgMzgwIDQ0N1QzNDUgNDU2VDMwMiA0NjlUMjQ1IDQ5MlExMjUgNTUxIDkyIDY2MVE4NCA2OTUgODQgNzEwWk01NiAtMTk0UTU2IC0xMDcgMTA2IC01MVQyMjIgNlEyNjAgNiAyOTYgLTEyVDM2MiAtNTZUNDIwIC0xMDhUNDgzIC0xNTNUNTU0IC0xNzFRNjE2IC0xNzEgNjU0IC0xMjhUNjk0IC0yOVE2OTYgNiA3MDggNlE3MjIgNiA3MjIgLTI2UTcyMiAtMTAyIDY3NiAtMTY0VDU1NyAtMjI3UTUxOCAtMjI3IDQ4MSAtMjA5VDQxNSAtMTY1VDM1OCAtMTEzVDI5NCAtNjlUMjIzIC01MVExNjMgLTUxIDEyNSAtOTNUODMgLTE5NlE4MSAtMjI4IDY5IC0yMjhRNTYgLTIyOCA1NiAtMjAyVi0xOTQnLFxuICAgIDB4MjI4MDogJzM4NiAyOTJRMzg4IDI5MiA0MzkgMzkzVDU0MyA1OThUNTk4IDcwM1E1OTkgNzAzIDYwMyA3MDRUNjA5IDcwNVE2MTYgNzA1IDYyMiA2OTlUNjI5IDY4NVQ1MzMgNDk0UTQ0MCAzMDggNDQwIDMwNVE0NTEgMzEwIDQ2MiAzMTJRNTQ3IDM0MiA1OTIgMzg4VDY1MSA1MDVRNjU0IDUyNSA2NTggNTMyVDY3MyA1MzlRNjgwIDUzOSA2ODYgNTMzVDY5MyA1MTlRNjkzIDQ5NSA2NzggNDUwUTYzOCAzNDEgNTAwIDI4M1E0MzMgMjU5IDQxOCAyNTlRNDE2IDI1OSA0MTEgMjUxVDQwNiAyNDFUNDE1IDIzOVE0ODIgMjI0IDU0NCAxOTBRNjc0IDEyMSA2OTEgLTEwUTY5MyAtMjggNjkxIC0zMlE2ODQgLTQzIDY3MiAtNDNRNjY0IC00MyA2NTggLTM3UTY1NiAtMzMgNjUwIC02VDYzNCA0N1Q1ODkgMTA5VDUwMCAxNjhRNDczIDE3OSA0MzYgMTkwVDM4OCAyMDFIMzg2TDI4NCAtMVEyNjEgLTQ1IDIzMiAtMTAxVDE5MSAtMTgxVDE3OCAtMjA2UTE3NiAtMjA2IDE3MiAtMjA3VDE2NiAtMjA4UTE2MCAtMjA4IDE1MyAtMjAyVDE0NiAtMTg4UTE0NiAtMTg1IDI0NiAxMlEzNDQgMjA2IDM0NCAyMTBRMzQ0IDIxMyAzMDUgMjE3VDIxMyAyMjVUMTI0IDIyOEg5NVE4MiAyNDEgODIgMjQ4UTgyIDI1MyA5NSAyNjhIMTI0UTE3MiAyNjggMjM2IDI3M1QzNDMgMjgzVDM4NiAyOTInLFxuICAgIDB4MjI4MTogJzEwMyAtNDNROTYgLTQzIDg5IC0zOVQ4MiAtMjZMODQgLTEwUTEwNSAxNDEgMjc1IDIxMlEzNDIgMjM2IDM1NSAyMzZRMzYwIDIzNiAzNjQgMjQ1TDM2OSAyNTZIMzYwUTI4NCAyODAgMjc1IDI4M1ExMTUgMzUxIDg2IDQ5MFE4MiA1MDcgODIgNTE3UTgyIDUyNiA4OCA1MzJUMTAzIDUzOFExMTAgNTM4IDExNSA1MzRRMTE5IDUzMSAxMjIgNTE3VDEyOCA0ODZUMTQzIDQ0NFQxNzQgMzk3VDIzMSAzNTFUMzIwIDMxMFEzNzEgMjkyIDM4OSAyOTJMNDkxIDQ5NlE1OTUgNzAxIDU5OCA3MDNRNTk5IDcwMyA2MDMgNzA0VDYwOSA3MDVRNjE2IDcwNSA2MjIgNjk5VDYyOSA2ODVRNjI5IDY4NCA1MzEgNDg1UTQzMSAyOTYgNDMxIDI4OFE0MzEgMjc4IDUyMCAyNzNUNjUxIDI2OEg2ODBRNjkzIDI1MyA2OTMgMjQ4UTY5MyAyNDEgNjgwIDIyOEg2NTFRNTkxIDIyOCA0OTEgMjE4VDM4NiAyMDFMMjg0IC0xUTI2MSAtNDUgMjMyIC0xMDFUMTkxIC0xODFUMTc4IC0yMDZRMTc2IC0yMDYgMTcyIC0yMDdUMTY2IC0yMDhRMTYwIC0yMDggMTUzIC0yMDJUMTQ2IC0xODhRMTQ2IC0xODIgMzAyIDEyNUwzMzUgMTkwTDMyNCAxODVRMzEzIDE4NSAyODkgMTcyUTI0MSAxNTMgMjA4IDEyOFQxNTkgNzhUMTM1IDMxVDEyNCAtMTFUMTE4IC0zN1ExMTIgLTQzIDEwMyAtNDMnLFxuICAgIDB4MjI4MjogJzg0IDI1MFE4NCAzNzIgMTY2IDQ1MFQzNjAgNTM5UTM2MSA1MzkgMzcwIDUzOVQzOTUgNTM5VDQzMCA1NDBUNDc1IDU0MFQ1MjQgNTQwSDY3OVE2OTQgNTMyIDY5NCA1MjBRNjk0IDUxMSA2ODEgNTAxTDUyMiA1MDBINDcwSDQ0MVEzNjYgNTAwIDMzOCA0OTZUMjY2IDQ3MlEyNDQgNDYxIDIyNCA0NDZUMTc5IDQwNFQxMzkgMzM3VDEyNCAyNTBWMjQ1UTEyNCAxNTcgMTg1IDg5UTI0NCAyNSAzMjggN1EzNDggMiAzNjYgMlQ1MjIgMEg2ODFRNjk0IC0xMCA2OTQgLTIwUTY5NCAtMzIgNjc5IC00MEg1MjZRNTEwIC00MCA0ODAgLTQwVDQzNCAtNDFRMzUwIC00MSAyODkgLTI1VDE3MiA0NVE4NCAxMjcgODQgMjUwJyxcbiAgICAweDIyODM6ICc4MyA1MjBRODMgNTMyIDk4IDU0MEgyNTFRMjY3IDU0MCAyOTcgNTQwVDM0MyA1NDFRNDI3IDU0MSA0ODggNTI1VDYwNSA0NTVRNjkzIDM3NCA2OTMgMjUwUTY5MyAxNjUgNjUwIDk5VDU0NSAwVDQxNSAtMzlRNDA3IC00MCAyNTEgLTQwSDk4UTgzIC0zMiA4MyAtMjBRODMgLTEwIDk2IDBIMjU1SDMwOEgzMzdRNDEyIDAgNDM5IDRUNTEyIDI4UTUzMyAzOSA1NTMgNTRUNTk5IDk2VDYzOSAxNjNUNjU0IDI1MFE2NTQgMzQxIDU5MiA0MTFRNTU3IDQ0OSA1MTIgNDcyUTQ2OCA0OTEgNDM5IDQ5NVQzMzUgNTAwSDMwNkgyNTVMOTYgNTAxUTgzIDUxMSA4MyA1MjAnLFxuICAgIDB4MjI4NjogJzg0IDM0NlE4NCA0NjggMTY2IDU0NlQzNjAgNjM1UTM2MSA2MzUgMzcwIDYzNVQzOTUgNjM1VDQzMCA2MzZUNDc1IDYzNlQ1MjQgNjM2SDY3OVE2OTQgNjI4IDY5NCA2MTZRNjk0IDYwNyA2ODEgNTk3TDUyMiA1OTZINDcwSDQ0MVEzNjYgNTk2IDMzOCA1OTJUMjY2IDU2OFEyNDQgNTU3IDIyNCA1NDJUMTc5IDUwMFQxMzkgNDMzVDEyNCAzNDZWMzQxUTEyNCAyNTMgMTg1IDE4NVEyNDQgMTIxIDMyOCAxMDNRMzQ4IDk4IDM2NiA5OFQ1MjIgOTZINjgxUTY5NCA4NiA2OTQgNzZRNjk0IDY0IDY3OSA1Nkg1MjZRNTEwIDU2IDQ4MCA1NlQ0MzQgNTVRMzUwIDU1IDI4OSA3MVQxNzIgMTQxUTg0IDIyMyA4NCAzNDZaTTEwNCAtMTMxVDEwNCAtMTE4VDExOCAtOThINjc5UTY5NCAtMTA2IDY5NCAtMTE4VDY3OSAtMTM4SDExOFExMDQgLTEzMSAxMDQgLTExOCcsXG4gICAgMHgyMjg3OiAnODMgNjE2UTgzIDYyOCA5OCA2MzZIMjUxUTI2NyA2MzYgMjk3IDYzNlQzNDMgNjM3UTQyNyA2MzcgNDg4IDYyMVQ2MDUgNTUxUTY5MyA0NzAgNjkzIDM0NlE2OTMgMjYxIDY1MCAxOTVUNTQ1IDk2VDQxNSA1N1E0MDcgNTYgMjUxIDU2SDk4UTgzIDY0IDgzIDc2UTgzIDg2IDk2IDk2SDI1NUgzMDhIMzM3UTQxMiA5NiA0MzkgMTAwVDUxMiAxMjRRNTMzIDEzNSA1NTMgMTUwVDU5OSAxOTJUNjM5IDI1OVQ2NTQgMzQ2UTY1NCA0MzcgNTkyIDUwN1E1NTcgNTQ1IDUxMiA1NjhRNDY4IDU4NyA0MzkgNTkxVDMzNSA1OTZIMzA2SDI1NUw5NiA1OTdRODMgNjA3IDgzIDYxNlpNODQgLTEzMVQ4NCAtMTE4VDk4IC05OEg2NTlRNjc0IC0xMDYgNjc0IC0xMThUNjU5IC0xMzhIOThRODQgLTEzMSA4NCAtMTE4JyxcbiAgICAweDIyODg6ICcxNDYgLTI4M1ExNDYgLTI4MiAxNzQgLTIxM1QyMDIgLTE0M0gxMTVRMTAyIC0xMjcgMTAyIC0xMjNUMTE1IC0xMDNIMjIwTDI5MSA2OEwyNzggNzNRMjAzIDEwMSAxNTMgMTU3VDg2IDI4OFE4MyAzMDkgODMgMzQ0UTgzIDM4MCA4NiAzOTlRMTA3IDQ4MCAxNjAgNTM5UTIyMiA2MDEgMjk4IDYyMVEzMjggNjMwIDM0NSA2MzFUNDM1IDYzNUw1MjYgNjM3TDU2MCA3MTVRNTg3IDc3OCA1OTMgNzg5VDYwOSA4MDFRNjE2IDgwMSA2MjIgNzk1VDYyOSA3ODFRNjI5IDc4MCA2MjUgNzcxVDYxNCA3NDJUNjAwIDcwNkw1NzEgNjM3UTU3MSA2MzUgNjI2IDYzNUg2ODBRNjkzIDYyMCA2OTMgNjEzVDY4OSA2MDFMNjgyIDU5N0w2MTggNTk1SDU1M0w0NDkgMzQ2UTQyNSAyODggMzk5IDIyM1QzNTkgMTI3VDM0NiA5NUgzNTZRMzY1IDk1IDM4MSA5NVQ0MTcgOTRUNDYzIDkzVDUxNSA5M0g2ODJRNjkzIDgyIDY5MyA3NFQ2ODAgNTNINTExUTQyMCA1NSAzMzUgNTVMMzI5IDU3TDI2MiAtMTAzSDY4MFE2ODIgLTEwNSA2ODQgLTEwOFQ2ODggLTExM1Q2OTEgLTExOFQ2OTMgLTEyNFE2OTMgLTEzNCA2ODIgLTE0MUw0NjQgLTE0M0gyNDZMMjEzIC0yMTlRMTgyIC0yOTIgMTc4IC0yOTlRMTcyIC0zMDMgMTY2IC0zMDNUMTUzIC0yOTdUMTQ2IC0yODNaTTUwOSA1OTBRNTA5IDU5NSA0MzggNTk1UTM1NCA1OTUgMzE4IDU4NlEyNDYgNTY3IDE5NSA1MTZUMTI2IDM5NVExMjMgMzc4IDEyMyAzNDRUMTI2IDI5M1ExNDEgMjI5IDE4NCAxODFUMjkxIDExMEwzMDYgMTA0TDQwNiAzNDZMNTA5IDU5MCcsXG4gICAgMHgyMjg5OiAnODIgNjA2VDgyIDYxM1Q5NSA2MzVIMjUxSDM0OFE0MDggNjM1IDQzNSA2MzJUNTAyIDYxNUw1MTUgNjA4TDUyMCA2MTdRNTIwIDYxOSA1NTggNzA4UTU4NCA3NzQgNTkxIDc4N1Q2MDkgODAxUTYxNiA4MDEgNjIyIDc5NVQ2MjkgNzgxUTYyOSA3NzUgNTYyIDYxNUw1NTEgNTkwTDU2OSA1NzdRNjQ2IDUyNyA2NzggNDM3UTY5MSAzOTggNjkxIDM0NFQ2NzggMjUwUTY1MyAxODIgNTk3IDEzMlQ0NjkgNjRRNDI3IDUzIDM2NiA1M0gzMjZMMjk1IC0yNUwyNjIgLTEwM0g2NjBRNjczIC0xMTggNjczIC0xMjRRNjczIC0xMjkgNjY5IC0xMzZMNjYyIC0xNDFMNDUzIC0xNDNIMjQ2TDIxMyAtMjE5UTE4MiAtMjkyIDE3OCAtMjk5UTE3MiAtMzAzIDE2NiAtMzAzVDE1MyAtMjk3VDE0NiAtMjgzUTE0NiAtMjgyIDE3NCAtMjEzVDIwMiAtMTQzSDk1UTgyIC0xMjggODIgLTEyM1Q5NSAtMTAzSDIyMEwyNTEgLTI1TDI4NCA1M0gxODlMOTMgNTVMODYgNTlRODIgNjQgODIgNzFUOTUgOTNIMzAyTDQwMCAzMzNRNDk4IDU2OSA0OTggNTczTDQ0NCA1OTBRNDMxIDU5MyAyNjAgNTk1TDkzIDU5N0w4NiA2MDFRODIgNjA2IDgyIDYxM1pNNjUyIDM0NFYzNTRRNjUyIDQ1MSA1NzUgNTIxUTU3MSA1MjYgNTU3IDUzOFQ1MzcgNTUxUTUzNCA1NTEgNTMzIDU0OFE1MzMgNTQzIDQzOCAzMTlMMzQ0IDk1TDM3MSA5M0gzODZRNDg3IDkzIDU1NyAxNTBUNjQ5IDI5M1E2NTIgMzA5IDY1MiAzNDQnLFxuICAgIDB4MjI4QTogJzY5MyA3MlE2OTMgNjggNjkyIDY2VDY4NiA1OVQ2ODAgNTJINTI0UTM5OCA1MiAzNjcgNTNUMzA5IDYzUTIzNiA4MiAxODAgMTMyVDk4IDI1MFE4NCAyODggODQgMzQzUTg0IDM5NyA5OCA0MzdRMTI2IDUxNSAxOTMgNTY4VDM0NiA2MzJRMzQ3IDYzMiAzNzMgNjMzVDQ0MCA2MzRUNTIwIDYzNUg2ODBRNjkzIDYyMCA2OTMgNjE1UTY5MyA2MDggNjgwIDU5NUg1MjZRMzY0IDU5NSAzNTMgNTkyUTI3OSA1ODIgMjIxIDUzOVQxMzggNDMwUTEyNCAzOTIgMTI0IDM0M1ExMjQgMjk2IDEzOCAyNTdRMTYzIDE5MiAyMjEgMTQ5VDM1MyA5NVEzNjQgOTIgNTI2IDkySDY4MFE2OTMgNzkgNjkzIDcyWk0xMDIgLTEzMlQxMDIgLTEyNVQxMTUgLTEwM0gzODJMNDIwIC02OFE0MjkgLTYwIDQzOCAtNTJUNDUyIC0zOVQ0NjMgLTI4VDQ3MiAtMjBUNDc4IC0xNFQ0ODMgLTEwVDQ4NyAtN1Q0OTAgLTZUNDkzIC01VDQ5NiAtNVE1MDIgLTUgNTA4IC0xMlQ1MTUgLTI4UTUxNSAtMzQgNTEzIC0zN1E1MTIgLTM4IDUwNyAtNDJUNDkyIC01NVQ0NzUgLTcwTDQ0MCAtMTAxTDU2MiAtMTAzSDY4MlE2OTMgLTExNCA2OTMgLTEyMlQ2ODAgLTE0M0gzOTVMMzU1IC0xNzlRMjg5IC0yNDEgMjgwIC0yNDFRMjczIC0yNDEgMjY3IC0yMzVUMjYwIC0yMjFUMjY1IC0yMDhUMzAwIC0xNzRMMzM1IC0xNDNIMjI0TDExMyAtMTQxTDEwNiAtMTM3UTEwMiAtMTMyIDEwMiAtMTI1JyxcbiAgICAweDIyOEI6ICc4MiA2MTVRODIgNjIwIDk1IDYzNUgyNTFRMzc4IDYzNSA0MDkgNjM0VDQ2OSA2MjNRNTQwIDYwNSA1OTYgNTU1VDY3OCA0MzdRNjkxIDM5NyA2OTEgMzQzVDY3OCAyNTBRNjQ5IDE3MiA1ODEgMTE5VDQyNiA1NVE0MTUgNTIgMjUxIDUySDk1UTkzIDU1IDg5IDU5VDg0IDY1VDgyIDcyUTgyIDc5IDk1IDkySDI0OVE0MTEgOTIgNDIyIDk1UTQ5NiAxMDUgNTU0IDE0OFQ2MzggMjU3UTY1MSAyOTYgNjUxIDM0M1E2NTEgMzkxIDYzOCA0MzBRNjEzIDQ5NSA1NTUgNTM4VDQyMiA1OTJRNDExIDU5NSAyNDkgNTk1SDk1UTgyIDYwOCA4MiA2MTVaTTgyIC0xMzJUODIgLTEyNVQ5NSAtMTAzSDM4MEw0MjAgLTU3UTQ1MiAtMjEgNDYwIC0xNFQ0NzQgLTZRNDgyIC02IDQ4OCAtMTJUNDk1IC0yNVQ0NTEgLTgxTDQzMyAtMTAxTDU0OSAtMTAzSDY2MlE2NzMgLTExNCA2NzMgLTEyMlQ2NjAgLTE0M0gzOTVMMzU1IC0xOTBRMzExIC0yMzkgMzA5IC0yMzlRMzA1IC0yNDEgMzAyIC0yNDFRMjk0IC0yNDEgMjg3IC0yMzVUMjgwIC0yMjFUMzI0IC0xNjNMMzQyIC0xNDNIMjE4TDkzIC0xNDFMODYgLTEzN1E4MiAtMTMyIDgyIC0xMjUnLFxuICAgIDB4MjI4RTogJzU5MSA1OThINTkyUTYwNCA1OTggNjExIDU4M1YzNzZRNjExIDM0NSA2MTEgMjk2UTYxMCAxNjIgNjA2IDE0OFE2MDUgMTQ2IDYwNSAxNDVRNTg2IDY4IDUwNyAyM1QzMzMgLTIyUTI2OCAtMjIgMjA5IC0xVDEwNiA2NlQ1NiAxNzNRNTUgMTgwIDU1IDM4NEw1NiA1ODVRNjYgNTk4IDc1IDU5OFE4NSA1OTggOTUgNTg1VjM3OEw5NiAxNzJMOTggMTYyUTExMiA5NSAxODEgNTdUMzMyIDE4UTQxNSAxOCA0ODcgNThUNTcwIDE3NVE1NzEgMTgwIDU3MSAzODNWNTgzUTU3OSA1OTggNTkxIDU5OFpNMzEzIDQwNlEzMTMgNDE3IDMxMyA0MzVUMzEyIDQ1OVEzMTIgNDgzIDMxNiA0OTNUMzMzIDUwM1QzNDkgNDk0VDM1MyA0NjFWNDA2VjMyNUg1MTVRNTE2IDMyNSA1MTkgMzIzVDUyNyAzMTZUNTMxIDMwNVQ1MjcgMjk0VDUyMCAyODdUNTE1IDI4NUgzNTNWMjA0VjE1MlEzNTMgMTI3IDM1MCAxMTdUMzMzIDEwN1QzMTYgMTE3VDMxMiAxNTJRMzEyIDE1OCAzMTIgMTc1VDMxMyAyMDRWMjg1SDE1MVExNTAgMjg1IDE0NyAyODdUMTM5IDI5NFQxMzUgMzA1VDEzOSAzMTZUMTQ2IDMyM1QxNTEgMzI1SDMxM1Y0MDYnLFxuICAgIDB4MjI4RjogJzgzIDUyM1E4NyA1MzUgOTkgNTM5SDY3OVE2OTQgNTMxIDY5NCA1MTlRNjk0IDUwNiA2NzkgNDk5SDEyM1YtMUg2NzhRNjk0IC03IDY5NCAtMjFRNjk0IC0zNCA2NzkgLTQxSDk4UTkzIC0zOCA4NCAtMjhMODMgMjQ3VjUyMycsXG4gICAgMHgyMjkwOiAnNjQgNTA2VDY0IDUxOVQ3OCA1MzlINjk5UTcwNiA1MzYgNzE0IDUyNlYtMjhRNzA2IC0zOCA2OTkgLTQxSDc4UTY0IC0zNCA2NCAtMjFRNjQgLTYgODAgLTFINjc0VjQ5OUg3OFE2NCA1MDYgNjQgNTE5JyxcbiAgICAweDIyOTE6ICc5NCA2MjBROTggNjMyIDExMCA2MzZINjk5UTcxNCA2MjggNzE0IDYxNlQ2OTkgNTk2SDEzNFY5Nkg2OThRNzE0IDkwIDcxNCA3NlE3MTQgNjQgNjk5IDU2SDEwOVExMDQgNTkgOTUgNjlMOTQgMzQ0VjYyMFpNODQgLTExOFE4NCAtMTAzIDEwMCAtOThINjk4UTcxNCAtMTA0IDcxNCAtMTE4UTcxNCAtMTMwIDY5OSAtMTM4SDk4UTg0IC0xMzEgODQgLTExOCcsXG4gICAgMHgyMjkyOiAnNjQgNjAzVDY0IDYxNlQ3OCA2MzZINjY4UTY3NSA2MzMgNjgzIDYyM1Y2OVE2NzUgNTkgNjY4IDU2SDc4UTY0IDYzIDY0IDc2UTY0IDkxIDgwIDk2SDY0M1Y1OTZINzhRNjQgNjAzIDY0IDYxNlpNNjQgLTExOFE2NCAtMTA4IDc5IC05OEg2NzhRNjk0IC0xMDQgNjk0IC0xMThRNjk0IC0xMzAgNjc5IC0xMzhINzhRNjQgLTEzMSA2NCAtMTE4JyxcbiAgICAweDIyOTM6ICc4MyAwUTc5IDAgNzYgMVQ3MSAzVDY3IDZUNjUgOVQ2MyAxM1Q2MSAxNlYzMDFMNjIgNTg1UTcwIDU5NSA3NiA1OThINTkyUTYwMiA1OTAgNjA1IDU4M1YxNVE1OTggMiA1ODcgMFE1ODMgMCA1ODAgMVQ1NzUgM1Q1NzEgNlQ1NjkgOVQ1NjcgMTNUNTY1IDE2VjU1OEgxMDFWMTVROTQgMiA4MyAwJyxcbiAgICAweDIyOTQ6ICc3NyAwUTY1IDQgNjEgMTZWMzAxTDYyIDU4NVE3MiA1OTggODEgNTk4UTk0IDU5OCAxMDEgNTgzVjQwSDU2NVY1ODNRNTczIDU5OCA1ODUgNTk4UTU5OCA1OTggNjA1IDU4M1YxNVE2MDIgMTAgNTkyIDFMMzM1IDBINzcnLFxuICAgIDB4MjI5NTogJzU2IDI1MFE1NiAzOTQgMTU2IDQ4OFQzODQgNTgzUTUzMCA1ODMgNjI2IDQ4NVQ3MjIgMjUwUTcyMiAxMTAgNjI1IDE0VDM5MCAtODNRMjQ5IC04MyAxNTMgMTRUNTYgMjUwWk0zNjQgNTQyUTMwOCA1MzkgMjUxIDUwOVQxNDggNDE4VDk2IDI3OFYyNzBIMzY5VjU0MkgzNjRaTTY4MSAyNzhRNjc1IDMzOCA2NTAgMzg2VDU5MiA0NjJUNTIyIDUwOVQ0NTggNTM1VDQxMiA1NDJINDA5VjI3MEg2ODFWMjc4Wk05NiAyMjJRMTA0IDE1MCAxMzkgOTVUMjE5IDEyVDMwMiAtMjlUMzY2IC00MkgzNjlWMjMwSDk2VjIyMlpNNjgxIDIyMlYyMzBINDA5Vi00Mkg0MTJRNDI5IC00MiA0NTYgLTM2VDUyMSAtMTBUNTkwIDM3VDY0OSAxMTNUNjgxIDIyMicsXG4gICAgMHgyMjk2OiAnNTYgMjUwUTU2IDM5NCAxNTYgNDg4VDM4NCA1ODNRNTMwIDU4MyA2MjYgNDg1VDcyMiAyNTBRNzIyIDExMCA2MjUgMTRUMzkwIC04M1EyNDkgLTgzIDE1MyAxNFQ1NiAyNTBaTTY4MSAyNzhRNjY5IDM4NSA1OTEgNDYzVDM4MSA1NDJRMjgzIDU0MiAxOTYgNDcxVDk2IDI3OFYyNzBINjgxVjI3OFpNMjc1IC00MlQzODggLTQyVDU4NSAzMlQ2ODEgMjIyVjIzMEg5NlYyMjJRMTA4IDEwNyAxOTEgMzMnLFxuICAgIDB4MjI5NzogJzU2IDI1MFE1NiAzOTQgMTU2IDQ4OFQzODQgNTgzUTUzMCA1ODMgNjI2IDQ4NVQ3MjIgMjUwUTcyMiAxMTAgNjI1IDE0VDM5MCAtODNRMjQ5IC04MyAxNTMgMTRUNTYgMjUwWk01ODIgNDcxUTUzMSA1MTAgNDk2IDUyM1E0NDYgNTQyIDM4MSA1NDJRMzI0IDU0MiAyNzIgNTE5VDE5NiA0NzFMMzg5IDI3OEw0ODUgMzc1TDU4MiA0NzFaTTE2NyA0NDJROTUgMzYyIDk1IDI1MFE5NSAxMzcgMTY3IDU4TDM1OSAyNTBMMTY3IDQ0MlpNNjEwIDU4UTY4MiAxMzggNjgyIDI1MFE2ODIgMzYzIDYxMCA0NDJMNDE4IDI1MEw2MTAgNThaTTE5NiAyOVEyMDkgMTYgMjMwIDJUMjk1IC0yN1QzODggLTQyUTQwOSAtNDIgNDI5IC00MFQ0NjUgLTMzVDQ5NiAtMjNUNTIyIC0xMVQ1NDQgMVQ1NjEgMTNUNTc0IDIyVDU4MiAyOUwzODggMjIyTDE5NiAyOScsXG4gICAgMHgyMjk4OiAnNTYgMjUwUTU2IDM5NCAxNTYgNDg4VDM4NCA1ODNRNTMwIDU4MyA2MjYgNDg1VDcyMiAyNTBRNzIyIDExMCA2MjUgMTRUMzkwIC04M1EyNDkgLTgzIDE1MyAxNFQ1NiAyNTBaTTU4MiA0NzFRNTgxIDQ3MiA1NzEgNDgwVDU1NiA0OTFUNTM5IDUwMlQ1MTcgNTE0VDQ5MSA1MjVUNDYwIDUzNFQ0MjQgNTM5VDM4MSA1NDJRMjcyIDU0MiAxODQgNDYwVDk1IDI1MVE5NSAxOTggMTEzIDE1MFQxNDkgODBMMTY3IDU4TDU4MiA0NzFaTTM4OCAtNDJRNTEzIC00MiA1OTcgNDRUNjgyIDI1MFE2ODIgMzYzIDYxMCA0NDJMMTk2IDI5UTIwOSAxNiAyMjkgMlQyOTUgLTI3VDM4OCAtNDInLFxuICAgIDB4MjI5OTogJzU2IDI1MFE1NiAzOTQgMTU2IDQ4OFQzODQgNTgzUTUzMCA1ODMgNjI2IDQ4NVQ3MjIgMjUwUTcyMiAxMTAgNjI1IDE0VDM5MCAtODNRMjQ5IC04MyAxNTMgMTRUNTYgMjUwWk02ODIgMjUwUTY4MiAzMjIgNjQ5IDM4N1Q1NDYgNDk3VDM4MSA1NDJRMjcyIDU0MiAxODQgNDU5VDk1IDI1MFE5NSAxMzIgMTc4IDQ1VDM4OSAtNDJRNTE1IC00MiA1OTggNDVUNjgyIDI1MFpNMzExIDI1MFEzMTEgMjg1IDMzMiAzMDRUMzc1IDMyOFEzNzYgMzI4IDM4MiAzMjhUMzkyIDMyOVE0MjQgMzI2IDQ0NSAzMDVUNDY2IDI1MFE0NjYgMjE3IDQ0NSAxOTVUMzg5IDE3MlEzNTQgMTcyIDMzMyAxOTVUMzExIDI1MCcsXG4gICAgMHgyMjlBOiAnNTcgMjUwUTU3IDMyNyA4NyAzOTJUMTY2IDQ5N1QyNzAgNTYwVDM4MiA1ODJIMzk0UTUxMiA1ODIgNjEwIDUwMFE3MjEgNDAxIDcyMSAyNTBRNzIxIDExMiA2MjYgMTVUMzg5IC04MlEyNTEgLTgyIDE1NCAxM1Q1NyAyNTBaTTY4MiAxMjlUNjgyIDI1MFQ1OTYgNDU3VDM5MCA1NDNRMjY5IDU0MyAxODMgNDU3VDk2IDI1MFE5NiAxMzIgMTgwIDQ1VDM4OSAtNDNRNTExIC00MyA1OTYgNDNaTTI1MCAyNTBRMjUwIDMxNiAyOTUgMzUyVDM4NCAzODhRNDUxIDM4OCA0ODkgMzQ3VDUyOCAyNTBRNTI4IDE5MiA0ODcgMTUyVDM4OSAxMTJRMzMxIDExMiAyOTEgMTUyVDI1MCAyNTBaTTQ4OCAyNTBRNDg4IDI5MCA0NjAgMzE5VDM4OSAzNDlRMzQ4IDM0OSAzMTkgMzIwVDI5MCAyNTBRMjkwIDIwOCAzMjAgMTgwVDM4OSAxNTFRNDMxIDE1MSA0NTkgMTgxVDQ4OCAyNTAnLFxuICAgIDB4MjI5QjogJzU3IDI1MFE1NyAzMjcgODcgMzkyVDE2NiA0OTdUMjcwIDU2MFQzODIgNTgySDM5NFE1MTIgNTgyIDYxMCA1MDBRNzIxIDQwMSA3MjEgMjUwUTcyMSAxMTIgNjI2IDE1VDM4OSAtODJRMjUxIC04MiAxNTQgMTNUNTcgMjUwWk02ODIgMTI5VDY4MiAyNTBUNTk2IDQ1N1QzOTAgNTQzUTI2OSA1NDMgMTgzIDQ1N1Q5NiAyNTBROTYgMTMyIDE4MCA0NVQzODkgLTQzUTUxMSAtNDMgNTk2IDQzWk0yMDQgMzM5UTIwNCAzNTcgMjE1IDM2NlQyMzggMzc1UTI0NyAzNzUgMjgzIDM0OFEzMDAgMzM2IDMxMSAzMjhMMzY4IDI4NlEzNjkgMjg2IDM2NiAzMjNUMzU5IDM5OFQzNTUgNDM3UTM1NyA0NTYgMzc5IDQ2NVEzODAgNDY1IDM4NCA0NjVUMzkxIDQ2NlE0MDMgNDY1IDQxMiA0NTdUNDIzIDQzN1E0MjMgNDM2IDQyMCAzOThUNDEzIDMyM1Q0MTAgMjg2TDQ2NyAzMjhRNDc2IDMzNCA0ODYgMzQxVDUwMSAzNTNUNTEzIDM2MVQ1MjMgMzY4VDUyOSAzNzJUNTM1IDM3NFQ1NDEgMzc1UTU1NCAzNzUgNTY0IDM2NVQ1NzUgMzM5UTU3NSAzMjUgNTY2IDMxOFQ1MTkgMjkyUTUwNCAyODUgNDk2IDI4MUw0MzAgMjUwTDQ5NiAyMTlRNTUyIDE5MiA1NTkgMTg4VDU3MiAxNzVRNTc1IDE2OCA1NzUgMTYxUTU3NSAxNDggNTY2IDEzN1Q1NDEgMTI2SDUzOFE1MzAgMTI2IDQ5OSAxNDlRNDgwIDE2MyA0NjcgMTcyTDQxMCAyMTRRNDA5IDIxNCA0MTIgMTc3VDQxOSAxMDJUNDIzIDYzUTQyMyA1OSA0MjEgNTRUNDExIDQzVDM4OSAzNlQzNjggNDJUMzU3IDU0VDM1NSA2M1EzNTUgNjQgMzU4IDEwMlQzNjUgMTc3VDM2OCAyMTRMMzExIDE3MlEzMDIgMTY1IDI5MyAxNTlUMjc5IDE0OFQyNjggMTQwVDI2MCAxMzRUMjU0IDEzMVQyNTAgMTI4VDI0NiAxMjdUMjQyIDEyNlQyMzggMTI2UTIyMyAxMjYgMjE0IDEzNVQyMDQgMTYxVDIxMyAxODNUMjgyIDIxOUwzNDggMjUwTDI4MiAyODFRMjI2IDMwOCAyMTkgMzEyVDIwNiAzMjVRMjA0IDMzMCAyMDQgMzM5JyxcbiAgICAweDIyOUQ6ICc1NyAyNTBRNTcgMzI3IDg3IDM5MlQxNjYgNDk3VDI3MCA1NjBUMzgyIDU4MkgzOTRRNTEyIDU4MiA2MTAgNTAwUTcyMSA0MDEgNzIxIDI1MFE3MjEgMTEyIDYyNiAxNVQzODkgLTgyUTI1MSAtODIgMTU0IDEzVDU3IDI1MFpNNjgyIDEyOVQ2ODIgMjUwVDU5NiA0NTdUMzkwIDU0M1EyNjkgNTQzIDE4MyA0NTdUOTYgMjUwUTk2IDEzMiAxODAgNDVUMzg5IC00M1E1MTEgLTQzIDU5NiA0M1pNMjIzIDI1MFEyMjMgMjYzIDIzMyAyNjdUMjgwIDI3MVEyODkgMjcxIDMyNSAyNzFUMzg5IDI3MEg0OTBRNTM1IDI3MCA1NDUgMjY3VDU1NSAyNTBRNTU1IDI0MSA1NDkgMjM1UTU0NCAyMzEgNTI3IDIzMVQzODkgMjMwUTIzOSAyMzAgMjM1IDIzMlEyMjMgMjM2IDIyMyAyNTAnLFxuICAgIDB4MjI5RTogJzcxIDBRNTkgNCA1NSAxNlYzNDZMNTYgNjc2UTY0IDY4NiA3MCA2ODlINzA5UTcxOSA2ODEgNzIyIDY3NFYxNVE3MTkgMTAgNzA5IDFMMzkwIDBINzFaTTM2OSAzNjVWNjQ5SDk1VjM2NUgzNjlaTTY4MiAzNjVWNjQ5SDQwOVYzNjVINjgyWk0zNjkgNDBWMzI1SDk1VjQwSDM2OVpNNjgyIDQwVjMyNUg0MDlWNDBINjgyJyxcbiAgICAweDIyOUY6ICc3MSAwUTU5IDQgNTUgMTZWMzQ2TDU2IDY3NlE2NCA2ODYgNzAgNjg5SDcwOVE3MTkgNjgxIDcyMiA2NzRWMTVRNzE5IDEwIDcwOSAxTDM5MCAwSDcxWk02ODIgMzY1VjY0OUg5NVYzNjVINjgyWk02ODIgNDBWMzI1SDk1VjQwSDY4MicsXG4gICAgMHgyMkEwOiAnNzEgMFE1OSA0IDU1IDE2VjM0Nkw1NiA2NzZRNjQgNjg2IDcwIDY4OUg3MDdRNzE0IDY4NiA3MjIgNjc2VjEzUTcxNCAzIDcwNyAwSDcxWk0xMjMgNjQ5UTE0NyA2MjUgMjE0IDU1NVQzMzUgNDMwVDM4OSAzNzRMNjU0IDY0OUgxMjNaTTk1IDcwUTk5IDc0IDIyOSAyMDlUMzYwIDM0NUw5NSA2MTlWNzBaTTY4MiA3MFY2MTlMNDE4IDM0NlE0MTcgMzQ0IDU0OSAyMDdMNjgyIDcwWk02NTQgNDFMNDAwIDMwNEwzODggMzE1TDEyMyA0MUwyNTYgNDBINTIyTDY1NCA0MScsXG4gICAgMHgyMkExOiAnNzEgMFE1OSA0IDU1IDE2VjM0Nkw1NiA2NzZRNjQgNjg2IDcwIDY4OUg3MDlRNzE5IDY4MSA3MjIgNjc0VjE1UTcxOSAxMCA3MDkgMUwzOTAgMEg3MVpNNjgyIDQwVjY0OUg5NVY0MEg2ODJaTTMzMCAzNDVRMzMwIDM3MSAzNDcgMzg4VDM5MCA0MDVRNDEyIDQwNSA0MzAgMzg5VDQ0OCAzNDVRNDQ4IDMxNyA0MzAgMzAxVDM4OSAyODVUMzQ4IDMwMVQzMzAgMzQ1JyxcbiAgICAweDIyQTI6ICc1NSA2NzhRNTUgNjc5IDU2IDY4MVQ1OCA2ODRUNjEgNjg4VDY1IDY5MVQ3MCA2OTNUNzcgNjk0UTg4IDY5MiA5NSA2NzlWMzY3SDU0MFE1NTUgMzU5IDU1NSAzNDdRNTU1IDMzNCA1NDAgMzI3SDk1VjE1UTg4IDIgNzcgMFE3MyAwIDcwIDFUNjUgM1Q2MSA2VDU5IDlUNTcgMTNUNTUgMTZWNjc4JyxcbiAgICAweDIyQTM6ICc1MTUgNjc4UTUxNSA2NzkgNTE2IDY4MVQ1MTggNjg0VDUyMSA2ODhUNTI1IDY5MVQ1MzAgNjkzVDUzNyA2OTRRNTQ4IDY5MiA1NTUgNjc5VjE1UTU0OCAyIDUzNyAwUTUzMyAwIDUzMCAxVDUyNSAzVDUyMSA2VDUxOSA5VDUxNyAxM1Q1MTUgMTZWMzI3SDcxUTcwIDMyNyA2NyAzMjlUNTkgMzM2VDU1IDM0N1Q1OSAzNThUNjYgMzY1VDcxIDM2N0g1MTVWNjc4JyxcbiAgICAweDIyQTQ6ICc1NSA2NDJUNTUgNjQ4VDU5IDY1OVQ2NiA2NjZUNzEgNjY4SDcwOFE3MjMgNjYwIDcyMyA2NDhUNzA4IDYyOEg0MDlWMTVRNDAyIDIgMzkxIDBRMzg3IDAgMzg0IDFUMzc5IDNUMzc1IDZUMzczIDlUMzcxIDEzVDM2OSAxNlY2MjhINzFRNzAgNjI4IDY3IDYzMFQ1OSA2MzcnLFxuICAgIDB4MjJBNTogJzM2OSA2NTJRMzY5IDY1MyAzNzAgNjU1VDM3MiA2NThUMzc1IDY2MlQzNzkgNjY1VDM4NCA2NjdUMzkxIDY2OFE0MDIgNjY2IDQwOSA2NTNWNDBINzA4UTcyMyAzMiA3MjMgMjBUNzA4IDBINzFRNzAgMCA2NyAyVDU5IDlUNTUgMjBUNTkgMzFUNjYgMzhUNzEgNDBIMzY5VjY1MicsXG4gICAgMHgyMkE4OiAnMTM5IC0yNDlIMTM3UTEyNSAtMjQ5IDExOSAtMjM1VjI1MUwxMjAgNzM3UTEzMCA3NTAgMTM5IDc1MFExNTIgNzUwIDE1OSA3MzVWMzY3SDc5NlE4MTEgMzU5IDgxMSAzNDdRODExIDMzNiA3OTcgMzI4TDQ3OSAzMjdIMTYxTDE1OSAzMjhWMTcyTDE2MSAxNzNINzk3UTc5OCAxNzIgODAwIDE3MVQ4MDMgMTY5VDgwNSAxNjdUODA4IDE2NFQ4MDkgMTYyVDgxMCAxNThUODExIDE1M1E4MTEgMTQwIDc5NiAxMzNIMTU5Vi0yMzVRMTUxIC0yNDkgMTQxIC0yNDlIMTM5JyxcbiAgICAweDIyQTk6ICc1NSA2NzhRNTUgNjc5IDU2IDY4MVQ1OCA2ODRUNjEgNjg4VDY1IDY5MVQ3MCA2OTNUNzcgNjk0UTg4IDY5MiA5NSA2NzlWMTVRODggMiA3NyAwUTczIDAgNzAgMVQ2NSAzVDYxIDZUNTkgOVQ1NyAxM1Q1NSAxNlY2NzhaTTI0OSA2NzhRMjQ5IDY3OSAyNTAgNjgxVDI1MiA2ODRUMjU1IDY4OFQyNTkgNjkxVDI2NCA2OTNUMjcxIDY5NFEyODIgNjkyIDI4OSA2NzlWMzY3SDY1MVE2NjYgMzU5IDY2NiAzNDdRNjY2IDMzNCA2NTEgMzI3SDI4OVYxNVEyODIgMiAyNzEgMFEyNjcgMCAyNjQgMVQyNTkgM1QyNTUgNlQyNTMgOVQyNTEgMTNUMjQ5IDE2VjY3OCcsXG4gICAgMHgyMkFBOiAnNTUgNjc4UTU1IDY3OSA1NiA2ODFUNTggNjg0VDYxIDY4OFQ2NSA2OTFUNzAgNjkzVDc3IDY5NFE4OCA2OTIgOTUgNjc5VjE1UTg4IDIgNzcgMFE3MyAwIDcwIDFUNjUgM1Q2MSA2VDU5IDlUNTcgMTNUNTUgMTZWNjc4Wk0yMzcgNjc4UTIzNyA2NzkgMjM4IDY4MVQyNDAgNjg0VDI0MyA2ODhUMjQ3IDY5MVQyNTIgNjkzVDI1OSA2OTRRMjcwIDY5MiAyNzcgNjc5VjE1UTI3MCAyIDI1OSAwUTI1NSAwIDI1MiAxVDI0NyAzVDI0MyA2VDI0MSA5VDIzOSAxM1QyMzcgMTZWNjc4Wk00MTkgNjc4UTQxOSA2NzkgNDIwIDY4MVQ0MjIgNjg0VDQyNSA2ODhUNDI5IDY5MVQ0MzQgNjkzVDQ0MSA2OTRRNDUyIDY5MiA0NTkgNjc5VjM2N0g4MThRODMzIDM1OSA4MzMgMzQ3UTgzMyAzMzQgODE4IDMyN0g0NTlWMTVRNDUyIDIgNDQxIDBRNDM3IDAgNDM0IDFUNDI5IDNUNDI1IDZUNDIzIDlUNDIxIDEzVDQxOSAxNlY2NzgnLFxuICAgIDB4MjJBQzogJzU2IDY4MVE3MCA2OTUgNzYgNjk1VDk2IDY4MVYzNjhIMjQzTDM4MSA1MzBRNTIxIDY5MiA1MjUgNjkyUTUzNyA3MDAgNTQ3IDY4OFE1NTQgNjgyIDU1NCA2NzRRNTU0IDY3MSA1NTMgNjY5VDU0OCA2NjFUNTM5IDY0OVQ1MjIgNjMxVDQ5OSA2MDRUNDY1IDU2NVQ0MjEgNTEyUTI5NiAzNzMgMjk2IDM2OEg0MTZINDc2UTUyNSAzNjggNTM5IDM2NVQ1NTQgMzQ4UTU1NCAzMzQgNTQzIDMyOEgyNjFMOTYgMTQxVjEyUTgxIC0xIDc1IC0xUTY1IC0xIDU4IDEwTDU2IDUwVjkyTDE4IDQ4UTcgMzcgLTEgMjhULTEzIDE0VC0xOSA2VC0yMyAxVC0yNyAwVC0zMyAtMVEtNDIgLTEgLTQ4IDRULTU1IDE5US01NSAyNCAtNDcgMzRUMTIgMTAzTDU2IDE1NVY2ODFaTTIwNSAzMjZRMjA1IDMyOCAxNTIgMzI4SDk2VjI2M1E5NiAyMDMgOTggMjAzUTk5IDIwMyAxMjMgMjMxVDE3NCAyOTBUMjA1IDMyNicsXG4gICAgMHgyMkFEOiAnNTYgNjgxUTcwIDY5NSA3NiA2OTVUOTYgNjgxVjQ2NkgzMjdMNDI1IDU3OVE1MjIgNjkyIDUyNyA2OTJRNTI5IDY5MyA1MzQgNjkzUTU0MiA2OTMgNTQ3IDY4OFQ1NTMgNjc0UTU1MyA2NjggNTQ5IDY2M1E1NDkgNjYyIDUzOCA2NTBUNTA0IDYxMVQ0NjMgNTYzTDM4MSA0NjhMNDYxIDQ2Nkg1NDNRNTU0IDQ1MyA1NTQgNDQ2VDU0MSA0MjZIMzQ1TDIwOSAyNzJMMzc2IDI3MEg1NDNRNTU0IDI1NyA1NTQgMjUxVDU0MSAyMzBIMTc0TDk2IDE0MVYxMlE4MSAtMSA3NSAtMVE2NSAtMSA1OCAxMEw1NiA1MFY5MkwxOCA0OFE3IDM3IC0xIDI4VC0xMyAxNFQtMTkgNlQtMjMgMVQtMjcgMFQtMzMgLTFRLTQyIC0xIC00OCA0VC01NSAxOVEtNTUgMjQgLTQ3IDM0VDEyIDEwM0w1NiAxNTVWNjgxWk0yNjcgMzk5TDI5MiA0MjZIOTZWMjcwSDE1OEwyMDEgMzIxUTI1NiAzODIgMjY3IDM5OVpNMTE4IDIyOEwxMTkgMjI5UTExOSAyMzAgMTA5IDIzMEg5NlYyMDFMMTA3IDIxMlExMTggMjI3IDExOCAyMjgnLFxuICAgIDB4MjJBRTogJzU2IDY4MVE3MCA2OTUgNzcgNjk1VDk2IDY4M1Y0MjhMOTggMTc1TDI1MiAzMjNWNjgxUTI2NCA2OTUgMjcyIDY5NVEyNzggNjk1IDI5MiA2ODFWNTI2UTI5MiAzNjggMjk2IDM2OFEyOTggMzY4IDQ0NyA1MTBRNjM4IDY5NSA2NDIgNjk1SDY0NVE2NTEgNjk1IDY1OCA2ODhUNjY1IDY3M1E2NjUgNjY2IDY2MSA2NjFRNjU5IDY2MCA2MzkgNjQxVDU3OCA1ODJUNTA1IDUxMkwzNTYgMzcwTDUwNSAzNjhINjU0UTY2NSAzNTcgNjY1IDM0OVE2NjUgMzQzIDY1MiAzMjhIMzE0TDMwMyAzMTdMMjkyIDMwOFYxMlEyODkgMTAgMjg1IDZUMjc5IDFUMjcyIC0xUTI2NSAtMSAyNTIgMTJWMTM5UTI1MiAyNjYgMjQ5IDI2Nkw5NiAxMTlWMTJRODAgLTEgNzYgLTFUNzAgMFQ2MyA2VDU2IDEyVjc5TDI5IDU1US0yNiAtMSAtMzUgLTFRLTQyIC0xIC00OCA1VC01NSAxOVEtNTUgMjUgLTUxIDMwVC0xNSA2NlE1IDg2IDE4IDk5TDU2IDEzNVY2ODEnLFxuICAgIDB4MjJBRjogJzU2IDY4MVE3MCA2OTUgNzcgNjk1VDk2IDY4M1Y0MjhMOTggMTc1TDI1MiAzMjNWNjgxUTI2NCA2OTUgMjcyIDY5NVEyNzggNjk1IDI5MiA2ODFWNDY2SDQwMUw1MDMgNTYzTDYyMSA2NzlRNjM3IDY5NSA2NDUgNjk1UTY1MiA2OTUgNjU4IDY4OFQ2NjUgNjczUTY2NSA2NzAgNjYzIDY2NlE2NjMgNjY1IDY1MSA2NTJUNjExIDYxMlQ1NjEgNTYzTDQ1OCA0NjhMNTU2IDQ2Nkg2NTRRNjY1IDQ1NSA2NjUgNDQ3VDY1MiA0MjZINDE2TDI5NCAzMDhMMjkyIDI4OFYyNzBINjUyUTY2NSAyNTUgNjY1IDI1MFQ2NTIgMjMwSDI5MlYxMlEyODkgMTAgMjg1IDZUMjc5IDFUMjcyIC0xUTI2NSAtMSAyNTIgMTJWMTM5UTI1MiAyNjYgMjQ5IDI2Nkw5NiAxMTlWMTJRODAgLTEgNzYgLTFUNzAgMFQ2MyA2VDU2IDEyVjc5TDI5IDU1US0yNiAtMSAtMzUgLTFRLTQyIC0xIC00OCA1VC01NSAxOVEtNTUgMjUgLTUxIDMwVC0xNSA2NlE1IDg2IDE4IDk5TDU2IDEzNVY2ODFaTTM1OCA0MjZIMjkyVjM2MUwzMjUgMzkyTDM1OCA0MjYnLFxuICAgIDB4MjJCMjogJzY5NCAtMjZRNjg2IC00MCA2NzYgLTQxSDY3MEwzODIgOTVROTIgMjMyIDkwIDIzNFE4MyAyMzkgODMgMjQ5UTgzIDI2MiA5NiAyNjdRMTAxIDI3MCAzNzkgNDAxVDY2NSA1MzdRNjcxIDUzOSA2NzQgNTM5UTY4NiA1MzkgNjk0IDUyNFYtMjZaTTY1NCAxMVQ2NTQgMjQ5VDY1MyA0ODdUNDAyIDM2OVQxNTEgMjQ5TDI3NSAxOTBRMzk5IDEzMSA1MjQgNzJUNjUyIDExUTY1NCAxMSA2NTQgMjQ5JyxcbiAgICAweDIyQjM6ICc4MyA1MjNRODMgNTI0IDg1IDUyN1Q5MiA1MzVUMTAzIDUzOVExMDcgNTM5IDM4OSA0MDZUNjgwIDI2OFE2OTQgMjYwIDY5NCAyNDlRNjk0IDIzOSA2ODcgMjM0UTY4NSAyMzIgMzk1IDk1TDEwNyAtNDFIMTAxUTkwIC00MCA4MyAtMjZWNTIzWk0zNzYgMzY4UTMyMyAzOTMgMjU0IDQyNVQxNTUgNDcyTDEyNSA0ODdRMTIzIDQ4NyAxMjMgMjQ5VDEyNSAxMVExMjcgMTIgMjUyIDcxVDUwMiAxOTBMNjI2IDI0OUwzNzYgMzY4JyxcbiAgICAweDIyQjQ6ICc2OTQgNzFRNjg2IDU4IDY3NiA1Nkg2NzBMMzgyIDE5MlE5MiAzMjkgOTAgMzMxUTgzIDMzNiA4MyAzNDZRODMgMzU5IDk2IDM2NFExMDEgMzY3IDM3OSA0OThUNjY1IDYzNFE2NzEgNjM2IDY3NCA2MzZRNjg2IDYzNiA2OTQgNjIxVjcxWk02NTQgMTA4VDY1NCAzNDZUNjUzIDU4NFQ0MDIgNDY2VDE1MSAzNDZMMjc1IDI4N1EzOTkgMjI4IDUyNCAxNjlUNjUyIDEwOFE2NTQgMTA4IDY1NCAzNDZaTTgzIC0xMjBRODMgLTExNiA4NCAtMTEzVDg2IC0xMDhUODkgLTEwNFQ5MiAtMTAyVDk2IC0xMDBUOTkgLTk4SDY3OFE2NzkgLTk4IDY4MSAtOTlUNjg0IC0xMDFUNjg4IC0xMDRUNjkxIC0xMDhUNjkzIC0xMTNUNjk0IC0xMjBRNjkyIC0xMzAgNjc5IC0xMzhIOThRODQgLTEzMCA4MyAtMTIwJyxcbiAgICAweDIyQjU6ICc4MyA2MjBRODMgNjIxIDg1IDYyNFQ5MiA2MzJUMTAzIDYzNlExMDcgNjM2IDM4OSA1MDNUNjgwIDM2NVE2OTQgMzU3IDY5NCAzNDZRNjk0IDMzNiA2ODcgMzMxUTY4NSAzMjkgMzk1IDE5MkwxMDcgNTZIMTAxUTkwIDU4IDgzIDcxVjYyMFpNMzc2IDQ2NVEzMjMgNDkwIDI1NCA1MjJUMTU1IDU3MEwxMjUgNTg0UTEyMyA1ODQgMTIzIDM0NlQxMjUgMTA4UTEyNyAxMDkgMjUyIDE2OFQ1MDIgMjg3TDYyNiAzNDZMMzc2IDQ2NVpNODMgLTEyMFE4MyAtMTE2IDg0IC0xMTNUODYgLTEwOFQ4OSAtMTA0VDkyIC0xMDJUOTYgLTEwMFQ5OSAtOThINjc4UTY3OSAtOTggNjgxIC05OVQ2ODQgLTEwMVQ2ODggLTEwNFQ2OTEgLTEwOFQ2OTMgLTExM1Q2OTQgLTEyMFE2OTIgLTEzMCA2NzkgLTEzOEg5OFE4NCAtMTMwIDgzIC0xMjAnLFxuICAgIDB4MjJCODogJzEwNTUgMjUwUTEwNTUgMTkwIDEwMTIgMTQxVDg5NiA5MlE4NTggOTIgODI4IDEwNlQ3ODEgMTQwVDc1NSAxODBUNzQxIDIxNEw3MzggMjI4VjIzMEg0MDVRNzEgMjMwIDY4IDIzMlE1NSAyMzggNTUgMjUwVDY4IDI2OFE3MSAyNzAgNDA1IDI3MEg3MzhWMjcyTDc0MCAyODBRNzQyIDI4NyA3NDUgMjk3VDc1NCAzMjFUNzcxIDM0OFQ3OTYgMzc0VDgzMiAzOTZUODgxIDQwOEg4OTFROTY5IDQwOCAxMDEyIDM2MFQxMDU1IDI1MFpNODk2IDEzMlE5NDggMTMyIDk4MSAxNjZUMTAxNCAyNTBRMTAxNCAzMDEgOTg1IDMzMFQ5MjAgMzY3UTkxNCAzNjggODkxIDM2OFE4NTMgMzY4IDgxNiAzMzhUNzc4IDI1MFE3NzggMTk4IDgxMiAxNjVUODk2IDEzMicsXG4gICAgMHgyMkJBOiAnMzE4IC0xODJRMzAyIC0yMTIgMjgwIC0yMTJIMjc4SDI3NVEyNDkgLTIxMiAyMzkgLTE4MkwyMzggODRWMzUxSDE2Mkw4NyAzNTJRNTcgMzYyIDU3IDM5MVQ4NCA0MjlRODkgNDMxIDI4MCA0MzFINDcwTDQ3NCA0MjlRNDc3IDQyNyA0NzkgNDI2VDQ4NCA0MjNUNDkwIDQxN1Q0OTUgNDEwVDQ5OSA0MDJUNTAwIDM5MVE1MDAgMzY1IDQ3MCAzNTJMMzk0IDM1MUgzMThWLTE4MicsXG4gICAgMHgyMkJCOiAnNTYgNjk3UTU2IDcwNiA2MiA3MTFUNzUgNzE2UTg2IDcxNiA5MCA3MDlROTEgNzA4IDEwNCA2ODBUMTQ3IDU5MlQxOTkgNDgzTDMwNSAyNjFMNDExIDQ4M1E0NDMgNTQ4IDQ4MSA2MjlRNTEyIDY5NCA1MTggNzA1VDUzNSA3MTZRNTQzIDcxNiA1NDkgNzEwVDU1NSA3MDBRNTU1IDY5MyA1MDEgNTc3VDM4OCAzNDBUMzI1IDIxMFEzMTYgMTk0IDMwNSAxOTRRMjkyIDE5NCAyODUgMjEwUTI4MiAyMTkgMjI0IDMzOVQxMTEgNTc0VDU2IDY5N1pNNTUgMTRUNTUgMjBUNTkgMzFUNjYgMzhUNzEgNDBINTQwUTU1NSAzMiA1NTUgMjBUNTQwIDBINzFRNzAgMCA2NyAyVDU5IDknLFxuICAgIDB4MjJCQzogJzU1IDY5OFE1NiA3MDggNzAgNzE2SDU0MFE1NTQgNzA4IDU1NSA2OThRNTU1IDY5NCA1NTQgNjkxVDU1MiA2ODZUNTQ5IDY4MlQ1NDYgNjgwVDU0MiA2NzhUNTM5IDY3Nkg3MVE3MCA2NzYgNjggNjc3VDY1IDY3OVQ2MSA2ODJUNTggNjg2VDU2IDY5MVQ1NSA2OThaTTU1NSAxOFE1NTQgMTIgNTQ5IDZUNTM2IDBINTM1UTUyNSAwIDUxNSAxN1Q0NTkgMTMyUTQzMCAxOTQgNDEwIDIzNUwzMDUgNDU1TDE5OSAyMzNRMTc2IDE4NSAxNDcgMTI1VDEwNSAzNlQ5MCA3UTg1IDAgNzUgMFE2MyAwIDU4IDExUTU1IDE1IDU1IDIxUTU4IDMxIDE3MCAyNjZUMjg1IDUwN1EyOTUgNTIyIDMwNSA1MjJUMzIwIDUxNVEzMjIgNTEzIDQzOSAyNjhMNTU1IDI0VjE4JyxcbiAgICAweDIyQzA6ICcxMTkgLTI0OVQ5NyAtMjQ5VDY1IC0yMzVUNTUgLTIwN1E1NSAtMjAxIDU2IC0xOThRNTggLTE5MCAyMTggMjY4VDM4MCA3MjlRMzkyIDc1MCA0MTYgNzUwUTQzOCA3NTAgNDUxIDczMlE0NTMgNzI4IDUzNCA0OThUNjk1IDM2TDc3NSAtMTk0UTc3NyAtMjA0IDc3NyAtMjA4UTc3NyAtMjIyIDc2NyAtMjM1VDczNSAtMjQ5UTcxMyAtMjQ5IDcwMCAtMjMxUTY5NiAtMjI1IDU1NyAxNzdMNDE2IDU3OUwyNzYgMTc3UTEzNiAtMjI2IDEzMiAtMjMxUTExOSAtMjQ5IDk3IC0yNDknLFxuICAgIDB4MjJDMTogJzU1IDcwOFE1NSA3MjkgNjggNzM5VDk2IDc1MFExMTkgNzUwIDEzMiA3MzFRMTM2IDcyNiAyNzYgMzIzTDQxNiAtNzlMNTU3IDMyM1E2OTYgNzI1IDcwMCA3MzFRNzEzIDc0OSA3MzUgNzQ5UTc1NiA3NDkgNzY2IDczNlQ3NzcgNzA4UTc3NyA3MDAgNjk2IDQ2NlQ1MzMgMVQ0NTEgLTIzMlE0MzYgLTI0OSA0MTYgLTI0OVE0MDIgLTI0OSAzOTEgLTI0MVEzODQgLTIzNiAzODAgLTIyNlEzNjggLTE5OCAyMTkgMjMwUTU1IDY5NyA1NSA3MDgnLFxuICAgIDB4MjJDMjogJzEzOSAtMjE3UTEyNyAtMjQxIDExNCAtMjQ2UTEwNiAtMjQ5IDk3IC0yNDlRNjcgLTI0OSA1NyAtMjIwUTU1IC0yMTQgNTUgMTAyUTU1IDE1MiA1NSAyMjFUNTQgMzEyUTU0IDQyMiA2MCA0NjRUOTEgNTU0UTEyMCA2MTIgMTY1IDY1NFQyNTcgNzE0VDMzNyA3NDFUMzkyIDc0OVEzOTMgNzUwIDQwMiA3NTBRNDE0IDc1MCA0MjIgNzQ5UTU1NyA3NDkgNjYwIDY1OVQ3NzYgNDMwUTc3NyA0MjIgNzc3IDEwMlE3NzcgLTIxNCA3NzUgLTIyMFE3NjUgLTI0OSA3MzUgLTI0OVE3MTYgLTI0OSA3MDggLTI0MVQ2OTQgLTIxN0w2OTIgNDI4TDY5MCA0NDFRNjc0IDU0MCA1OTcgNjAzVDQxNiA2NjZINDA5UTM4OCA2NjYgMzY0IDY2MlQyOTQgNjM4VDIxMiA1ODFRMTU2IDUyMyAxNDIgNDQxTDE0MCA0MjhMMTM5IDEwNVYtMjE3JyxcbiAgICAweDIyQzM6ICc5NiA3NTBRMTAzIDc1MCAxMDkgNzQ4VDEyMCA3NDRUMTI3IDczN1QxMzMgNzMwVDEzNyA3MjNUMTM5IDcxOFYzOTVMMTQwIDczTDE0MiA2MFExNTkgLTQzIDIzNyAtMTA0VDQxNiAtMTY2UTUyMSAtMTY2IDU5NyAtMTAzVDY5MCA2MEw2OTIgNzNMNjk0IDcxOFE3MDggNzQ5IDczNSA3NDlRNzY1IDc0OSA3NzUgNzIwUTc3NyA3MTQgNzc3IDM5OFE3NzcgNzggNzc2IDcxUTc2NiAtNTEgNjgwIC0xNDBRNTcxIC0yNDkgNDE2IC0yNDlINDExUTI2MSAtMjQ5IDE1MiAtMTQwUTY2IC01MSA1NiA3MVE1NSA3OCA1NSAzOThRNTUgNzE0IDU3IDcyMFE2MCA3MzQgNzAgNzQwUTgwIDc1MCA5NiA3NTAnLFxuICAgIDB4MjJDNDogJzI0MiA0ODZRMjQ1IDQ4OCAyNTAgNDg4UTI1NiA0ODggMjU4IDQ4NlEyNjIgNDg0IDM3MyAzNzNUNDg2IDI1OFQ0ODggMjUwVDQ4NiAyNDJUMzczIDEyN1QyNTggMTRRMjU2IDEyIDI1MCAxMlEyNDUgMTIgMjQyIDE0UTIzNyAxNiAxMjcgMTI2VDE0IDI0MlExMiAyNDUgMTIgMjUwVDE0IDI1OFExNiAyNjMgMTI2IDM3M1QyNDIgNDg2Wk00MzkgMjUwTDI1MCA0MzlMNjEgMjUwTDI1MCA2MUw0MzkgMjUwJyxcbiAgICAweDIyQzU6ICc3OCAyNTBRNzggMjc0IDk1IDI5MlQxMzggMzEwUTE2MiAzMTAgMTgwIDI5NFQxOTkgMjUxUTE5OSAyMjYgMTgyIDIwOFQxMzkgMTkwVDk2IDIwN1Q3OCAyNTAnLFxuICAgIDB4MjJDNjogJzIxMCAyODJRMjEwIDI4NCAyMjUgMzgxVDI0MSA0ODBRMjQxIDQ4NCAyNDUgNDg0UTI0OSA0ODYgMjUxIDQ4NlEyNTggNDg2IDI2MCA0NzdUMjcyIDQwNlEyNzUgMzkwIDI3NiAzODBRMjkwIDI4NiAyOTAgMjgyTDM4OCAyOTlRNDg0IDMxNCA0ODcgMzE0SDQ4OFE0OTcgMzE0IDQ5NyAzMDJRNDk3IDI5NyA0MzQgMjY2UTQxNiAyNTcgNDA0IDI1MUwzMTUgMjA2TDM2MSAxMThRMzcyIDk4IDM4MyA3NVQ0MDEgNDBMNDA3IDI4UTQwNyAxNiAzOTUgMTZRMzk0IDE2IDM5MiAxNkwzOTAgMTdMMjUwIDE1OUwxMTAgMTdMMTA4IDE2UTEwNiAxNiAxMDUgMTZROTMgMTYgOTMgMjhMOTkgNDBRMTA1IDUyIDExNiA3NVQxMzkgMTE4TDE4NSAyMDZMOTYgMjUxUTYgMjk2IDQgMzAwUTMgMzAxIDMgMzAyUTMgMzE0IDEyIDMxNEgxM1ExNiAzMTQgMTEyIDI5OUwyMTAgMjgyJyxcbiAgICAweDIyQzc6ICczNjYgNTQzUTM3NCA1NDUgMzgyIDU0NVE0MDUgNTQ1IDQxOSA1MzhRNDI5IDUzNCA0NDMgNTIxVDQ2MiA0OTZRNDY2IDQ3OCA0NjYgNDY3UTQ2NiA0MzggNDQ0IDQxMlE0MjIgMzkwIDM4OCAzOTBRMzUyIDM5MCAzMzEgNDEyUTMxMSA0MzQgMzExIDQ2N1EzMTEgNDk5IDMzMSA1MThRMzQ1IDUzMyAzNjYgNTQzWk0xNDYgNDcyUTE0NiA0NzkgMTUzIDQ4NVQxNjYgNDkyUTE3MSA0OTIgMTg3IDQ3NlQyNzkgMzg1TDM4NiAyNzhMNDk1IDM4NVE2MDAgNDkyIDYwOCA0OTJRNjE1IDQ5MiA2MjEgNDg2VDYyOCA0NzJRNjI4IDQ2NyA2MTQgNDUyVDUzMSAzNjdMNDM1IDI3MEg3MDZRNzIwIDI1NiA3MjAgMjUwUTcyMCAyNDEgNzA2IDIzMEg0MzVMNTMxIDEzMlE2MDAgNjMgNjE0IDQ4VDYyOCAyN1E2MjggMjAgNjIyIDE0VDYwOCA3UTYwMCA3IDQ5NSAxMTRMMzg2IDIyMUwyNzkgMTE0UTIwNCAzOSAxODggMjNUMTY2IDdRMTU5IDcgMTUzIDEzVDE0NiAyN1ExNDYgMzIgMTYwIDQ3VDI0NCAxMzJMMzM5IDIzMEg2OFE1NSAyNDMgNTUgMjUwUTU1IDI1NSA2OCAyNzBIMzM5TDI0NCAzNjdRMTc1IDQzNiAxNjEgNDUxVDE0NiA0NzJaTTQ2NiAzNFE0NjYgNCA0NDcgLTIwVDM4OCAtNDRRMzUzIC00NCAzMzEgLTIyUTMxMSAxIDMxMSAzNFEzMTEgNjYgMzMxIDg1UTM0NyAxMDEgMzY2IDExMFEzNzQgMTEyIDM4MiAxMTJRNDA1IDExMiA0MTkgMTA1UTQyOSAxMDAgNDQzIDg3VDQ2MiA2M1E0NjYgNDUgNDY2IDM0JyxcbiAgICAweDIyQzg6ICc4MzMgNTBUODMzIDI1MFQ4MzIgNDUwVDY1OSAzNTFUNDg3IDI1MFQ2NTggMTUwVDgzMiA1MFE4MzMgNTAgODMzIDI1MFpNODczIDEwUTg2NiAtNSA4NTQgLTVRODUxIC01IDg0NSAtM0w0NDkgMjI2TDI2MCAxMTVRNTEgLTUgNDMgLTVRMzkgLTUgMzUgLTFUMjggN0wyNiAxMVY0ODlRMzMgNTA1IDQzIDUwNVE1MSA1MDUgMjYwIDM4NUw0NDkgMjc0TDg0NSA1MDNRODUxIDUwNSA4NTMgNTA1UTg2NiA1MDUgODczIDQ5MFYxMFpNNDEyIDI1MEw2NyA0NTBRNjYgNDUwIDY2IDI1MFQ2NyA1MFE2OSA1MSAyNDAgMTUwVDQxMiAyNTAnLFxuICAgIDB4MjJDOTogJzE0NiA0NzlRMTU5IDQ5MiAxNjYgNDkyUTE3MSA0OTIgMTg5IDQ3NVQyNzkgMzg2TDM4NiAyNzlMNDk1IDM4NlE1OTggNDkyIDYwOCA0OTJRNjE1IDQ5MiA2MjEgNDg2VDYyOCA0NzJRNjI4IDQ2NCA1MjIgMzU3TDQxNSAyNTBMNTIyIDE0NFE2MjggMzcgNjI4IDI4UTYyOCAyMSA2MjIgMTVUNjA4IDhRNTk5IDggNDk1IDExNUwzODYgMjIxTDI3OSAxMTVRMjA0IDQwIDE4OCAyNFQxNjYgOFExNjIgOCAxNjAgOVQxNTMgMTVUMTQ2IDIxVjQ3OVpNMTg2IDc3TDM1OSAyNTBMMTg2IDQyNFY3NycsXG4gICAgMHgyMkNBOiAnMTQ2IDQ3MlExNDYgNDc5IDE1MiA0ODVUMTY2IDQ5MlExNzEgNDkyIDE4OSA0NzVUMjc5IDM4NkwzODYgMjc5TDQ5NSAzODZRNTk4IDQ5MiA2MDggNDkyUTYxNSA0OTIgNjI4IDQ3OVYyMVE2MTUgOCA2MDggOFE1OTkgOCA0OTUgMTE1TDM4NiAyMjFMMjc5IDExNVEyMDQgNDAgMTg4IDI0VDE2NiA4UTE1OSA4IDE1MyAxNFQxNDYgMjhRMTQ2IDM3IDI1MyAxNDRMMzU5IDI1MEwyNTMgMzU3UTE0NiA0NjQgMTQ2IDQ3MlpNNTg4IDc3VjQyNEw0OTkgMzM3TDQxNSAyNTBMNTg4IDc3JyxcbiAgICAweDIyQ0I6ICc1NSA2NzRRNTUgNjgyIDYyIDY4OFQ3NiA2OTRINzdRODMgNjk0IDEwMCA2NzdUMjA4IDU2MVEzMjAgNDQwIDQxMCAzNDJRNDYyIDI4NiA1NDEgMjAxUTY3NyA1NSA2OTkgMzBUNzIyIC0yUTcyMiAtOSA3MTYgLTE1VDcwMSAtMjJUNjg4IC0xN1E2ODcgLTE1IDU0MiAxNDFUMzk0IDMwMUwzODggMzA2TDI0MCAxNDZRMTE5IDE1IDEwMSAtM1Q3NSAtMjJUNjEgLTE2VDU1IC0yUTU1IDQgNjcgMTlUMTU4IDExN1ExOTAgMTUxIDIwOSAxNzJMMzYxIDMzNkwyMDkgNTAwUTYyIDY1NyA1NyA2NjdRNTUgNjcxIDU1IDY3NCcsXG4gICAgMHgyMkNDOiAnODQgLTIyVDc2IC0yMlQ2MiAtMTZUNTUgLTJRNTUgNCA3OCAzMFQyNDkgMjE1UTMyMSAyOTMgMzY3IDM0MlE2NzIgNjcyIDY4MyA2ODJRNjk1IDY5NCA3MDIgNjk0UTcxMCA2OTQgNzE2IDY4OFQ3MjIgNjc0UTcyMiA2NjggNzEwIDY1M1Q2MTkgNTU1UTU4NyA1MjEgNTY4IDUwMEw0MTYgMzM2TDU2OCAxNzJRNzE1IDE1IDcyMCA1UTcyMiAxIDcyMiAtMlE3MjIgLTkgNzE2IC0xNVQ3MDIgLTIySDcwMFE2OTMgLTIyIDY3MSAxVDUzNyAxNDZMMzg5IDMwNlEzODcgMzA0IDM0MCAyNTNUMjM3IDE0M1QxMzUgMzNMODkgLTE3UTg0IC0yMiA3NiAtMjInLFxuICAgIDB4MjJDRDogJzU2IDQzM1E1NiA0NjQgNzEgNDY0UTc0IDQ2NCA3NyA0NjFRODIgNDU0IDgyIDQzOFQ5MSAzOTdUMTIzIDM0N1ExNjYgMzA3IDIyMiAzMDdRMjY0IDMwNyAzMDggMzMxVDM4NiAzODVUNDY1IDQzOFQ1NTYgNDYzUTYzMSA0NjMgNjc2IDQwOFQ3MjIgMjgzUTcyMiAyNTAgNzA4IDI1MFE3MDQgMjUwIDY5OSAyNTdRNjk1IDI2NSA2OTMgMjg2VDY4MiAzMzBRNjcwIDM1MCA2NTUgMzY3UTYxMiA0MDcgNTU2IDQwN1E1MTQgNDA3IDQ3MCAzODNUMzkzIDMyOVQzMTQgMjc2VDIyMiAyNTFRMTQ4IDI1MSAxMDIgMzA2VDU2IDQzM1pNNTcgNTZRNTcgNzEgNzMgNzZINzA2UTcyMiA3MCA3MjIgNTZRNzIyIDQ0IDcwNyAzNkg3MVE1NyA0MyA1NyA1NicsXG4gICAgMHgyMkNFOiAnODMgNTU4UTgzIDU2NiA4OSA1NzJUMTA0IDU3OFExMDggNTc4IDExNiA1NzdUMTQ2IDU3MFQxOTAgNTU1VDIzOSA1MjZUMjg2IDQ4MFEzMDggNDUzIDMyNSA0MjBUMzUxIDM1OFQzNjcgMzA0VDM3NiAyNjVUMzgwIDI1MVQzODEgMjUzUTM4MSAyNjIgMzk1IDMxMlE0MjggNDM0IDQ5MiA0OTlUNjQyIDU3NlE2NTQgNTc4IDY1NSA1NzhRNjY0IDU3OCA2NzAgNTcyVDY3NiA1NThRNjc2IDU0MyA2NTcgNTQwVDU5OSA1MjRUNTI1IDQ3NlE0MDYgMzYyIDQwMCAyOVY4UTQwMCAtMjEgMzgwIC0yMVEzNjkgLTIxIDM2MiAtMTFRMzYwIC03IDM2MCAxMlEzNjAgMTE1IDM0OCAyMDBUMzA4IDM2MFQyMzEgNDgwVDExMSA1MzdRODMgNTQwIDgzIDU1OCcsXG4gICAgMHgyMkNGOiAnMTA0IC0yMlE5NSAtMjIgODkgLTE2VDgzIC0yUTgzIDExIDk4IDE2VDEzNSAyM1QxOTIgNDZUMjU2IDEwM1EzNjAgMjMzIDM2MCA1NDlRMzYwIDU1NCAzNjAgNTU3VDM2MSA1NjNUMzYyIDU2N1QzNjQgNTY5VDM2NyA1NzJUMzcxIDU3NlEzNzcgNTc4IDM4MCA1NzhRNDAxIDU3OCA0MDEgNTQ3UTQwMSA1NDMgNDAxIDUzN1Q0MDAgNTI3UTQwOSA1MyA2NDggMTlRNjc2IDE2IDY3NiAtMlE2NzYgLTEwIDY3MCAtMTZUNjU1IC0yMlE2NTQgLTIyIDY0MiAtMjBRNTU2IC05IDQ5MiA1NlQzOTUgMjQ0UTM4MSAyOTQgMzgxIDMwM1EzODEgMzA1IDM4MCAzMDVUMzc0IDI3NVQzNTIgMjAxVDMxMCAxMTBUMjM0IDI3VDExNyAtMjBRMTA1IC0yMiAxMDQgLTIyJyxcbiAgICAweDIyRDA6ICc4NCAyNTBRODQgMzcyIDE2NiA0NTBUMzYwIDUzOVEzNjEgNTM5IDM3MCA1MzlUMzk1IDUzOVQ0MzAgNTQwVDQ3NSA1NDBUNTI0IDU0MEg2NzlRNjk0IDUzMiA2OTQgNTIwUTY5NCA1MTEgNjgxIDUwMUw1MjIgNTAwSDQ3MEg0NDFRMzY2IDUwMCAzMzggNDk2VDI2NiA0NzJRMjQ0IDQ2MSAyMjQgNDQ2VDE3OSA0MDRUMTM5IDMzN1QxMjQgMjUwVjI0NVExMjQgMTU3IDE4NSA4OVEyNDQgMjUgMzI4IDdRMzQ4IDIgMzY2IDJUNTIyIDBINjgxUTY5NCAtMTAgNjk0IC0yMFE2OTQgLTMyIDY3OSAtNDBINTI2UTUxMCAtNDAgNDgwIC00MFQ0MzQgLTQxUTM1MCAtNDEgMjg5IC0yNVQxNzIgNDVRODQgMTI3IDg0IDI1MFpNNjk0IDEzNFE2OTQgMTIzIDY3OSAxMTRINDI1SDM4NFEzNTAgMTE0IDMyNiAxMjFUMjc3IDE1NFEyMzggMTkzIDIzOCAyNTFRMjM4IDMyMiAyOTUgMzYxUTMxOCAzNzggMzM5IDM4MlQ0MTIgMzg3UTQyMyAzODcgNDU5IDM4N1Q1MjAgMzg2SDY3OVE2OTQgMzc3IDY5NCAzNjZRNjk0IDM1NCA2NzkgMzQ2SDUxOVE0OTMgMzQ2IDQ1OCAzNDZUNDExIDM0N1EzNjAgMzQ3IDM0MSAzNDJUMzAzIDMxNVEyNzggMjg3IDI3OCAyNTBRMjc4IDIxMCAzMDEgMTg3VDM1MSAxNTZRMzU4IDE1NCA1MTkgMTU0SDY3OVE2OTQgMTQ2IDY5NCAxMzQnLFxuICAgIDB4MjJEMTogJzgzIDUyMFE4MyA1MzIgOTggNTQwSDI1MVEyNjcgNTQwIDI5NyA1NDBUMzQzIDU0MVE0MjcgNTQxIDQ4OCA1MjVUNjA1IDQ1NVE2OTMgMzc0IDY5MyAyNTBRNjkzIDE2NSA2NTAgOTlUNTQ1IDBUNDE1IC0zOVE0MDcgLTQwIDI1MSAtNDBIOThRODMgLTMyIDgzIC0yMFE4MyAtMTAgOTYgMEgyNTVIMzA4SDMzN1E0MTIgMCA0MzkgNFQ1MTIgMjhRNTMzIDM5IDU1MyA1NFQ1OTkgOTZUNjM5IDE2M1Q2NTQgMjUwUTY1NCAzNDEgNTkyIDQxMVE1NTcgNDQ5IDUxMiA0NzJRNDY4IDQ5MSA0MzkgNDk1VDMzNSA1MDBIMzA2SDI1NUw5NiA1MDFRODMgNTExIDgzIDUyMFpNODMgMzY2UTgzIDM3NiA5NiAzODZIMjQ0UTI4MCAzODYgMzE3IDM4NlQzNzggMzg2TDQwMiAzODdRNDU2IDM4NyA0OTggMzQ4VDU0MCAyNTBRNTQwIDIwMyA1MTIgMTY4VDQ0NiAxMjBRNDI3IDExNCAzNTMgMTE0SDk5UTg0IDEyMCA4NCAxMzRRODQgMTQ3IDk4IDE1NEgyNThRMjg0IDE1NCAzMTkgMTU0VDM2NiAxNTNRNDE2IDE1MyA0MzYgMTU4VDQ3NCAxODVRNTAwIDIxNCA1MDAgMjUwUTUwMCAyOTAgNDc3IDMxM1Q0MjYgMzQ0UTQxOSAzNDYgMjU4IDM0Nkg5OFE4MyAzNTQgODMgMzY2JyxcbiAgICAweDIyRDI6ICc4OCAtMjFUNzUgLTIxVDU1IC03VjIwMFE1NSAyMzEgNTUgMjgwUTU2IDQxNCA2MCA0MjhRNjEgNDMwIDYxIDQzMVE3NyA1MDAgMTUyIDU0OVQzMzIgNTk4UTQ0MyA1OTggNTIyIDU0NFQ2MTAgNDA1UTYxMSAzOTkgNjExIDE5NFYtN1E2MDQgLTIyIDU5MSAtMjJRNTgyIC0yMiA1NzIgLTlMNTcwIDQwNVE1NjMgNDMzIDU1NiA0NDlUNTI5IDQ4NVE0OTggNTE5IDQ0NSA1MzhUMzM0IDU1OFEyNTEgNTU4IDE3OSA1MThUOTYgNDAxUTk1IDM5NiA5NSAxOTNWLTdRODggLTIxIDc1IC0yMVpNMjI5IC0yMUgyMjdRMjE1IC0yMSAyMDkgLTdWMTY2UTIwOSAzMDQgMjA5IDMyN1QyMTUgMzYzUTIyNiAzOTggMjU5IDQyMVQzMzMgNDQ0UTM4MCA0NDQgNDE0IDQxNlQ0NTUgMzQ3UTQ1NyAzMzkgNDU3IDE2NlYtN1E0NDkgLTIxIDQzOSAtMjFINDM3SDQzNVE0MjMgLTIxIDQxNyAtN1YxNjRRNDE3IDMwMyA0MTcgMzI1VDQxMSAzNThRMzg3IDQwMyAzMzMgNDAzVDI1NSAzNThRMjUwIDM0NyAyNTAgMzI1VDI0OSAxNjRWLTdRMjQxIC0yMSAyMzEgLTIxSDIyOScsXG4gICAgMHgyMkQzOiAnNTkxIDU5OEg1OTJRNjA0IDU5OCA2MTEgNTgzVjM3NlE2MTEgMzQ1IDYxMSAyOTZRNjEwIDE2MiA2MDYgMTQ4UTYwNSAxNDYgNjA1IDE0NVE1ODYgNjggNTA3IDIzVDMzMyAtMjJRMjY4IC0yMiAyMDkgLTFUMTA2IDY2VDU2IDE3M1E1NSAxODAgNTUgMzg0TDU2IDU4NVE2NiA1OTggNzUgNTk4UTg1IDU5OCA5NSA1ODVWMzc4TDk2IDE3Mkw5OCAxNjJRMTEyIDk1IDE4MSA1N1QzMzIgMThRNDE1IDE4IDQ4NyA1OFQ1NzAgMTc1UTU3MSAxODAgNTcxIDM4M1Y1ODNRNTc5IDU5OCA1OTEgNTk4Wk00MzcgNTk4UTQ1MCA1OTggNDU3IDU4M1Y0MTBRNDU3IDIzNyA0NTUgMjI5UTQ0OCAxODkgNDE0IDE2MVQzMzMgMTMyUTI5MSAxMzIgMjU1IDE1N1QyMTEgMjMwUTIwOSAyMzcgMjA5IDQxMkwyMTAgNTg1UTIyMCA1OTggMjI5IDU5OFEyNDIgNTk4IDI0OSA1ODNWNDEyUTI0OSAyNzMgMjQ5IDI1MVQyNTUgMjE4UTI3OSAxNzMgMzMzIDE3M1Q0MTEgMjE4UTQxNiAyMjkgNDE2IDI1MVQ0MTcgNDEyVjU4M1E0MjUgNTk4IDQzNyA1OTgnLFxuICAgIDB4MjJENDogJzc2IC0yMlE2NCAtMjIgNTYgLTdWMTc2TDU3IDM2MEw1OSAzNzBRNjYgNDAxIDgzIDQyNlQxMjMgNDY4VDE3MSA0OTVUMjIxIDUxM1QyNjUgNTIyVDI5OCA1MjdMMzExIDUyOEgzMTRWNjI1TDMxNSA3MjNRMzI1IDczNiAzMzQgNzM2UTM0NiA3MzYgMzU0IDcyMVY1MjhIMzU2TDM2OCA1MjdRMzgwIDUyNiAzOTkgNTIzVDQ0MSA1MTVUNDkwIDQ5OFQ1MzcgNDcyVDU3OCA0MzNUNjA2IDM3OVE2MTEgMzU5IDYxMSAxNzFWLTdRNjA0IC0yMSA1OTEgLTIxVDU3MSAtN1YxNzBRNTcxIDMxMyA1NzEgMzM3VDU2NSAzNzVRNTU1IDQwOCA1MjYgNDMyVDQ2MSA0NjdUNDAyIDQ4MlQzNjUgNDg3SDM1NFYtN1EzNDcgLTIxIDMzNCAtMjFUMzE0IC03VjQ4N0gzMDNRMjUxIDQ4NCAyMDcgNDY3UTEyMSA0MzggOTkgMzY3TDk3IDM1N0w5NiAxNzRWLTlRODYgLTIyIDc2IC0yMicsXG4gICAgMHgyMkQ2OiAnODYgMjYxUTkyIDI2NyAzODEgNDA0VDY3MyA1NDFRNjgwIDU0MSA2ODYgNTM1VDY5MyA1MjFUNjg5IDUxMFE2ODQgNTA0IDQxOCAzNzlMMTUxIDI1MEw0MTggMTIxUTY4NiAtNCA2ODkgLTEwUTY5MyAtMTQgNjkzIC0yMVQ2ODcgLTM0VDY3NSAtNDFRNjY4IC00MSAzODAgOTZUODYgMjM5UTgyIDI0NCA4MiAyNTBRODIgMjU3IDg2IDI2MVpNNjEwIDI1MFE2MTAgMjI0IDU5MiAxOThUNTMxIDE3MlE0OTggMTcyIDQ3NSAxOTVRNDUzIDIxNCA0NTMgMjUwUTQ1MyAzMDggNTEzIDMyOFE1MTUgMzMwIDUzNSAzMzBRNTY5IDMyOCA1ODkgMzA0VDYxMCAyNTAnLFxuICAgIDB4MjJENzogJzgyIDUyMVE4MiA1MjkgODkgNTM1VDEwMCA1NDFRMTA3IDU0MSAzOTUgNDA0VDY4OSAyNjFRNjkzIDI1NyA2OTMgMjUwVDY4OSAyMzlRNjg0IDIzNCAzOTYgOTdUMTAwIC00MVE5NSAtNDEgODkgLTM1VDgyIC0yMVE4MiAtMTIgOTYgLTRRMTE4IDkgMzU4IDEyMUw2MjQgMjUwTDM1OCAzNzlROTEgNTAzIDg2IDUxMFE4MiA1MTQgODIgNTIxWk0xNjUgMjUwUTE2NSAyODIgMTg4IDMwNlQyMzkgMzMwUTI2MiAzMzAgMjc1IDMyM1EzMDMgMzEyIDMxOCAyODNRMzIyIDI3MiAzMjIgMjUwUTMyMiAyMTMgMzAwIDE5NVEyNzcgMTcyIDI0NiAxNzJRMjI0IDE3MiAyMTMgMTc3UTE2NSAyMDAgMTY1IDI1MCcsXG4gICAgMHgyMkQ4OiAnNjM5IC00OFE2MzkgLTU0IDYzNCAtNjBUNjE5IC02N0g2MThRNjEyIC02NyA1MzYgLTI2UTQzMCAzMyAzMjkgODhRNjEgMjM1IDU5IDIzOVE1NiAyNDMgNTYgMjUwVDU5IDI2MVE2MiAyNjYgMzM2IDQxNVQ2MTUgNTY3TDYxOSA1NjhRNjIyIDU2NyA2MjUgNTY3UTYzOSA1NjIgNjM5IDU0OFE2MzkgNTQwIDYzMyA1MzRRNjMyIDUzMiAzNzQgMzkxTDExNyAyNTBMMzc0IDEwOVE2MzIgLTMyIDYzMyAtMzRRNjM5IC00MCA2MzkgLTQ4Wk05NTggLTQ4UTk1OCAtNTQgOTUzIC02MFQ5MzggLTY3SDkzN1E5MzEgLTY3IDg1NSAtMjZRNzQ5IDMzIDY0OCA4OFEzODAgMjM1IDM3OCAyMzlRMzc1IDI0MyAzNzUgMjUwVDM3OCAyNjFRMzgxIDI2NiA2NTUgNDE1VDkzNCA1NjdMOTM4IDU2OFE5NDEgNTY3IDk0NCA1NjdROTU4IDU2MiA5NTggNTQ4UTk1OCA1NDAgOTUyIDUzNFE5NTEgNTMyIDY5MyAzOTFMNDM2IDI1MEw2OTMgMTA5UTk1MSAtMzIgOTUyIC0zNFE5NTggLTQwIDk1OCAtNDhaTTEyNzcgLTQ4UTEyNzcgLTU0IDEyNzIgLTYwVDEyNTcgLTY3SDEyNTZRMTI1MCAtNjcgMTE3NCAtMjZRMTA2OCAzMyA5NjcgODhRNjk5IDIzNSA2OTcgMjM5UTY5NCAyNDMgNjk0IDI1MFQ2OTcgMjYxUTcwMCAyNjYgOTc0IDQxNVQxMjUzIDU2N0wxMjU3IDU2OFExMjYwIDU2NyAxMjYzIDU2N1ExMjc3IDU2MiAxMjc3IDU0OFExMjc3IDU0MCAxMjcxIDUzNFExMjcwIDUzMiAxMDEyIDM5MUw3NTUgMjUwTDEwMTIgMTA5UTEyNzAgLTMyIDEyNzEgLTM0UTEyNzcgLTQwIDEyNzcgLTQ4JyxcbiAgICAweDIyRDk6ICc3NSAtNjdRNjUgLTY3IDYwIC02MVQ1NSAtNDhRNTUgLTQwIDYxIC0zNFE2MiAtMzIgMzI5IDEwOUw1OTUgMjUwTDMyOSAzOTFRNjIgNTMyIDYxIDUzNFE1NSA1NDAgNTUgNTQ4UTU1IDU2MiA2OSA1NjdINzdRODEgNTY3IDIyMiA0OTNUNTA2IDM0MlQ2NTMgMjY0UTY2NyAyNTAgNjUzIDIzNlE2NDkgMjM0IDUwNCAxNTdUMjIwIDdUNzcgLTY3SDc1Wk0zNjQgNTQ3UTM2NCA1NjMgMzgxIDU2N0wzODQgNTY4UTM4NyA1NjggNTE4IDQ5OVQ3OTUgMzUzVDk1NSAyNjlROTY3IDI2MSA5NjcgMjUwVDk1NSAyMzFROTI1IDIxNiA3ODAgMTM5VDUxMyAtM1QzODMgLTY3UTM3MyAtNjcgMzY5IC02MFQzNjQgLTQ3UTM2NCAtNDAgMzcwIC0zNFEzNzMgLTMxIDYzOSAxMDlMOTA0IDI1MEw2MzkgMzkxUTM3MyA1MzEgMzcwIDUzNFEzNjQgNTQwIDM2NCA1NDdaTTY3NCA1MzhUNjc0IDU0OFQ2ODEgNTYyVDY5MyA1NjdRNjk5IDU2NyA4MTYgNTA1UTkxNSA0NTMgOTkzIDQxMlExMDUwIDM4MiAxMTMyIDMzOVExMjQxIDI4MiAxMjU5IDI3MVQxMjc3IDI1MFExMjc3IDI0MSAxMjYzIDIzMlExMjQ2IDIyMSA5ODUgODRRNjk4IC02NyA2OTIgLTY3UTY3NCAtNjcgNjc0IC00N1E2NzQgLTM4IDY4MCAtMzNRNjgzIC0zMCA5NDcgMTA5TDEyMTMgMjUwTDk0NyAzOTFRNjgzIDUzMCA2ODAgNTMzUTY3NCA1MzggNjc0IDU0OCcsXG4gICAgMHgyMkRBOiAnNjc0IDQ0NVE2NzQgNDM4IDY2OSA0MzJUNjU1IDQyNVQzNjkgNTMxVDkwIDY0MFE4MyA2NDUgODMgNjU1UTgzIDY2OCA5NSA2NzNRNjQ0IDg4NiA2NTQgODg2UTY2MiA4ODYgNjY4IDg4MFQ2NzQgODY2UTY3NCA4NTYgNjYzIDg1MFE2NDkgODQzIDQxMSA3NTFMMTYwIDY1NUw0MDcgNTYwUTQ3NCA1MzQgNTYxIDUwMVE2NDYgNDY5IDY2MCA0NjJUNjc0IDQ0NVpNODQgMjUwUTg0IDI2MCA5OSAyNzBINjU4UTY3NCAyNjQgNjc0IDI1MFE2NzQgMjM4IDY1OSAyMzBIOThRODQgMjM3IDg0IDI1MFpNODMgNTVRODMgNjggOTQgNzNROTggNzYgMTA0IDc2UTEwOCA3NSAzODMgLTMwVDY2NCAtMTM4UTY3NCAtMTQ0IDY3NCAtMTU1UTY3NCAtMTY1IDY2NyAtMTcwUTY2NCAtMTczIDM4NSAtMjc5VDEwNCAtMzg2UTg1IC0zODYgODMgLTM2OFE4MyAtMzU0IDkyIC0zNDlROTMgLTM0OSAzNDcgLTI1MUw1OTcgLTE1NUwzNDYgLTU5UTI5NiAtNDAgMjIzIC0xMlExMTggMjggMTAxIDM2VDgzIDU1JyxcbiAgICAweDIyREI6ICcxMTEgNDI1VDEwMiA0MjVUODggNDMxVDgzIDQ0NVY0NDZRODMgNDU1IDk2IDQ2MVExMTEgNDY5IDIwMyA1MDRRMjg3IDUzNiAzNTAgNTYwTDU5NyA2NTVMMzQ2IDc1MVE5NCA4NDggOTIgODUwUTgzIDg1NiA4MyA4NjZRODMgODczIDg4IDg3OVQxMDQgODg2UTEwOSA4ODUgMzg2IDc3OVQ2NjcgNjcwUTY3NCA2NjUgNjc0IDY1NVQ2NjcgNjQwUTY2NSA2MzggMzg4IDUzMlpNODQgMjUwUTg0IDI2MCA5OSAyNzBINjU4UTY3NCAyNjQgNjc0IDI1MFE2NzQgMjM4IDY1OSAyMzBIOThRODQgMjM3IDg0IDI1MFpNNjUzIDc2UTY1NiA3NiA2NjAgNzVUNjY5IDY4VDY3NCA1NlE2NzQgNDYgNjY1IDQwUTY2MyAzOCA0MTEgLTU5TDE2MCAtMTU1TDQxMCAtMjUxUTY2NCAtMzQ5IDY2NSAtMzQ5UTY3NCAtMzU0IDY3NCAtMzY4UTY3MiAtMzg2IDY1NCAtMzg2UTY1MCAtMzg2IDM3MSAtMjc5VDkwIC0xNzBRODMgLTE2NSA4MyAtMTU1UTgzIC0xNDQgOTMgLTEzOFE2NDUgNzYgNjUzIDc2JyxcbiAgICAweDIyREU6ICcxMTMgNDI0UTgzIDQyNCA4MyA0NDRRODMgNDUzIDk2IDQ2NEgxMjFRMTgxIDQ2NiAyMzQgNDc0VDM0MSA1MDFUNDM1IDU0NVQ1MDUgNjEzVDU0MiA3MDdRNTQ1IDczNCA1NjQgNzM0UTU4MyA3MzEgNTgzIDcxNFE1ODMgNjU4IDU2MCA2MTNUNTAwIDUzOFQ0MTQgNDg2VDMyMSA0NTNUMjI5IDQzNFQxNTYgNDI2VDExMyA0MjRaTTExMiAyNzBRODMgMjcwIDgzIDI5MFE4MyAzMDEgOTQgMzA3UTk4IDMxMCAxMTggMzEwUTYyNCAzMTAgNjUzIDU1NlE2NTcgNTgwIDY3NSA1ODBRNjkzIDU3NyA2OTMgNTU5VjU1MlE2ODQgNDcyIDYyOCA0MTBUNDY1IDMxNFE0MzYgMzAzIDM3MiAyOTBRMzczIDI5MCAzODggMjg3VDQyNSAyNzhUNDY1IDI2NlE2NzQgMTk5IDY5MyAyOEw2OTQgMTdMNjkyIDE0UTY5MSAxMSA2ODkgOFQ2ODMgM1Q2NzMgMFE2NTcgMCA2NTMgMjRRNjIzIDI3MCAxMTggMjcwSDExMicsXG4gICAgMHgyMkRGOiAnMTk1IDcxM1ExOTUgNzI1IDIwMSA3MjlUMjE0IDczNFEyMjcgNzM0IDIzMSA3MjJUMjM4IDY5MVQyNTUgNjQxVDI5OSA1ODBRNDA1IDQ3NCA2NTYgNDY0SDY4MVE2OTQgNDUxIDY5NCA0NDNRNjk0IDQyNCA2NzAgNDI0SDY2NFE1MzUgNDI0IDQxNSA0NjVUMjM1IDU5NVExOTUgNjU3IDE5NSA3MTNaTTY2OCAzMTBRNjk0IDMxMCA2OTQgMjkwUTY5NCAyODUgNjkxIDI3OVE2ODQgMjcxIDY2NCAyNzBRNTUwIDI2OCA0NjQgMjU3VDMwMSAyMjBUMTc5IDE0NlQxMjQgMjdRMTE5IDAgMTAzIDBUODMgMTZRODMgMjEgODMgMzFUOTIgNjhUMTEzIDEyMVQxNTcgMTc3VDIyOSAyMzFRMjk1IDI2OCA0MDUgMjkwUTQwNCAyOTAgMzg5IDI5M1QzNTIgMzAyVDMxMiAzMTRRMTM4IDM3MSA5NiA1MDBRODMgNTQxIDgzIDU2MlE4MyA1NjggODkgNTc0VDEwMyA1ODBRMTE1IDU4MCAxMjAgNTcwVDEyNiA1NDJUMTM4IDQ5N1QxNzMgNDQyUTI4OSAzMTAgNjU5IDMxMEg2NjgnLFxuICAgIDB4MjJFMDogJzgyIDM0NFE4MiAzNDkgOTUgMzY0SDEyNFEyNjYgMzY0IDM5OCAzOTBMNDI5IDM5N0w1MDkgNTk1UTUxOSA2MTkgNTM2IDY1OVE1ODEgNzY2IDU5MCA3ODNUNjA5IDgwMVE2MTYgODAxIDYyMiA3OTVUNjI5IDc4MVE2MjkgNzc2IDU1MyA1OTVRNTMzIDU0OCA1MTYgNTA2VDQ4OSA0MzlUNDgwIDQxNVE0ODIgNDE1IDUwNSA0MjZUNTM4IDQ0NFE2MzIgNDk4IDY1MSA2MDFRNjU0IDYyMSA2NTggNjI4VDY3MyA2MzVRNjgwIDYzNSA2ODYgNjI5VDY5MyA2MTVRNjkzIDU5MSA2NzggNTQ2UTYzNiA0MzMgNDg0IDM3NUw0NTggMzY0TDQ1MSAzNDhRNDQzIDMzMiA0NDMgMzI5VDQ1NSAzMjRRNDgwIDMxNiA1MDMgMzA3VDU2MCAyNzdUNjE5IDIzM1Q2NjQgMTcwVDY5MSA4NlE2OTMgNjggNjkxIDY0UTY4NCA1MyA2NzIgNTNRNjY0IDUzIDY1OCA1OVE2NTcgNjAgNjUwIDk3VDYxNyAxNzRUNTM4IDI0NFE1MTUgMjU3IDQ3NiAyNzNUNDI4IDI4OVE0MjUgMjg5IDQxMiAyNTZRMzgxIDE3OSAzNDQgOTBMMjYyIC0xMDNINjgwUTY4MiAtMTA1IDY4NCAtMTA4VDY4OCAtMTEzVDY5MSAtMTE4VDY5MyAtMTI0UTY5MyAtMTM0IDY4MiAtMTQxTDQ2NCAtMTQzSDI0NkwyMTMgLTIxOVExODIgLTI5MiAxNzggLTI5OVExNzIgLTMwMyAxNjYgLTMwM1QxNTMgLTI5N1QxNDYgLTI4M1ExNDYgLTI4MiAxNzQgLTIxM1QyMDIgLTE0M0g5NVE4MiAtMTI4IDgyIC0xMjNUOTUgLTEwM0gyMjBMMzAyIDk3UTM4NCAyODggMzg0IDI5OVEzODQgMzAyIDM0MSAzMDhUMjM1IDMxOVQxMjQgMzI0SDk1UTgyIDMzNyA4MiAzNDRaTTM5OSAzMzhRNDAzIDMzOCA0MDYgMzQ2TDQwOSAzNTNMMzc1IDM0NFEzNzUgMzQzIDM4NCAzNDFUMzk5IDMzOCcsXG4gICAgMHgyMkUxOiAnMTQ2IC0yODNRMTQ2IC0yODIgMTc0IC0yMTNUMjAyIC0xNDNIOTVRODIgLTEyNyA4MiAtMTIzVDk1IC0xMDNIMjIwTDMwMCA5M1EzNDMgMTk2IDM3NCAyNzBRMzg1IDI5NCAzODYgMjk5TDM3MyAyOTVRMzMxIDI4NyAyODkgMjY4UTI0MSAyNDkgMjA4IDIyNFQxNTkgMTc0VDEzNSAxMjdUMTI0IDg1VDExOCA1OVExMTIgNTMgMTAzIDUzUTkxIDUzIDg0IDY0UTgyIDY4IDg0IDg2UTk2IDE4NSAxNzQgMjQ4VDM3NSAzMzdMNDAwIDM0NFEzOTkgMzQ0IDM4MSAzNDhUMzUxIDM1NVQzMTYgMzY0VDI3NiAzNzlUMjM1IDM5OFQxOTMgNDI0VDE1NSA0NTZUMTIyIDQ5N1Q5OCA1NDZRODIgNTg3IDgyIDYxNVE4MiA2MjIgODggNjI4VDEwMiA2MzVRMTEyIDYzNSAxMTYgNjI4VDEyNCA2MDFRMTI4IDU3OSAxMzQgNTYyVDE1OSA1MTVUMjA3IDQ2M1QyOTAgNDE4VDQxNSAzODRMNDIyIDM4MUw1MDYgNTg2UTU3MSA3NDQgNTg0IDc3MlQ2MDkgODAxUTYxNiA4MDEgNjIyIDc5NVQ2MjkgNzgxVDU0NCA1NzdRNTI1IDUyOSA1MDQgNDc4VDQ3MyA0MDJUNDYyIDM3NVE0ODAgMzczIDUwMCAzNzNRNTc5IDM2NCA2NTEgMzY0SDY4MFE2ODIgMzYxIDY4NiAzNTdUNjkxIDM1MVQ2OTMgMzQ0UTY5MyAzMzcgNjgwIDMyNEg2NTFRNTUzIDMyNCA0NTEgMzEwTDQzMyAzMDhMMzQ5IDEwNEwyNjIgLTEwMUw0NzMgLTEwM0g2ODJRNjk0IC0xMTUgNjk0IC0xMjNRNjk0IC0xMzMgNjgyIC0xNDFMNDY0IC0xNDNIMjQ2TDIxMyAtMjE5UTE4MiAtMjkyIDE3OCAtMjk5UTE3MiAtMzAzIDE2NiAtMzAzVDE1MyAtMjk3VDE0NiAtMjgzJyxcbiAgICAweDIyRTY6ICc4NiA0NTBROTMgNDU1IDM4MCA1OTJUNjczIDczMFE2ODAgNzMwIDY4NiA3MjRUNjkzIDcxMFE2OTMgNzAyIDY4OCA2OTlRNjg2IDY5MyA0MTcgNTY4TDE1MSA0MzlMNDE3IDMxMFE2ODUgMTg1IDY4OCAxNzlRNjkzIDE3NiA2OTMgMTY4UTY5MyAxNjEgNjg3IDE1NVQ2NzUgMTQ4UTY2OCAxNDggMzgwIDI4NVQ4NiA0MjhRNzQgNDM4IDg2IDQ1MFpNNTUgLTIwNVE1NSAtMTc1IDY0IC0xNDJUOTIgLTc2VDE0NSAtMjJUMjIyIC0xUTI4OCAtMSAzNjIgLTY2UTM2OSAtNzIgMzcyIC03NVQzNzggLTc5VDM4MiAtODFUMzg0IC03OVEzODkgLTc0IDQzOSAyMVE0ODMgMTAwIDQ5MCAxMTFUNTA0IDEyMlE1MTAgMTIyIDUxOCAxMThUNTI2IDEwM1E1MjYgMTAxIDUxMCA2OVQ0NjcgLTEyVDQxOSAtOTlMNDEzIC0xMTJMNDMzIC0xMjhRNDk4IC0xODAgNTUzIC0xODBRNjA1IC0xODAgNjQ2IC0xMzlRNjcyIC0xMTIgNjgxIC03N1Q2OTMgLTIxVDcwNiAtMVE3MTkgLTEgNzE5IC0zM1E3MTkgLTM5IDcxNyAtNTdRNzA4IC0xNDEgNjU1IC0xOTBRNjI1IC0yMjQgNTg2IC0yMzJRNTY4IC0yMzcgNTUxIC0yMzdRNDg3IC0yMzcgNDEzIC0xNzJMMzkxIC0xNTVRMzkxIC0xNTcgMzM1IC0yNTVRMjk3IC0zMjUgMjg2IC0zNDJUMjY4IC0zNTlRMjYwIC0zNTkgMjU0IC0zNTNUMjQ4IC0zMzlUMzA0IC0yMzBMMzU5IC0xMjZRMzU5IC0xMjQgMzM3IC0xMDdUMzAyIC04MVEyNjIgLTU3IDIyMSAtNTdRMTcwIC01NyAxMzAgLTkzVDg0IC0yMDFRODIgLTIzNiA3MCAtMjM2UTU1IC0yMzYgNTUgLTIwNScsXG4gICAgMHgyMkU3OiAnODggNzIzUTk1IDczMCA5OSA3MzBRMTA2IDczMCAzOTQgNTkzVDY4OCA0NTBRNjkzIDQ0NyA2OTMgNDM5VDY4OCA0MjhRNjgzIDQyMyAzOTUgMjg2VDk5IDE0OFE5NCAxNDggODggMTU1VDgyIDE2OFE4MiAxNzUgODYgMTc5UTg5IDE4NCAzNTcgMzEwTDYyNCA0MzlMMzU3IDU2OFE4OCA2OTQgODYgNjk5UTgxIDcwMyA4MSA3MTFUODggNzIzWk01NSAtMjA1UTU1IC0xNzUgNjQgLTE0MlQ5MiAtNzZUMTQ1IC0yMlQyMjIgLTFRMjg4IC0xIDM2MiAtNjZRMzY5IC03MiAzNzIgLTc1VDM3OCAtNzlUMzgyIC04MVQzODQgLTc5UTM4OSAtNzQgNDM5IDIxUTQ4MyAxMDAgNDkwIDExMVQ1MDQgMTIyUTUxMCAxMjIgNTE4IDExOFQ1MjYgMTAzUTUyNiAxMDEgNTEwIDY5VDQ2NyAtMTJUNDE5IC05OUw0MTMgLTExMkw0MzMgLTEyOFE0OTggLTE4MCA1NTMgLTE4MFE2MDUgLTE4MCA2NDYgLTEzOVE2NzIgLTExMiA2ODEgLTc3VDY5MyAtMjFUNzA2IC0xUTcxOSAtMSA3MTkgLTMzUTcxOSAtMzkgNzE3IC01N1E3MDggLTE0MSA2NTUgLTE5MFE2MjUgLTIyNCA1ODYgLTIzMlE1NjggLTIzNyA1NTEgLTIzN1E0ODcgLTIzNyA0MTMgLTE3MkwzOTEgLTE1NVEzOTEgLTE1NyAzMzUgLTI1NVEyOTcgLTMyNSAyODYgLTM0MlQyNjggLTM1OVEyNjAgLTM1OSAyNTQgLTM1M1QyNDggLTMzOVQzMDQgLTIzMEwzNTkgLTEyNlEzNTkgLTEyNCAzMzcgLTEwN1QzMDIgLTgxUTI2MiAtNTcgMjIxIC01N1ExNzAgLTU3IDEzMCAtOTNUODQgLTIwMVE4MiAtMjM2IDcwIC0yMzZRNTUgLTIzNiA1NSAtMjA1JyxcbiAgICAweDIyRTg6ICc5NSA0MTlRODEgNDMzIDgxIDQzOVQ5NSA0NTlIMTI0UTMxOCA0NTkgNDU1IDUwMVE1MTUgNTIxIDU1NiA1NTBUNjE1IDYwN1Q2NDEgNjU5VDY1MiA3MDJUNjU5IDcyNVE2NjcgNzMwIDY3MyA3MzBRNjgwIDczMCA2ODYgNzI0VDY5MyA3MTBRNjkzIDY4MiA2NzcgNjQxUTY2OCA2MTYgNjU0IDU5NFQ2MjIgNTU0VDU4NiA1MjJUNTQ1IDQ5N1Q1MDQgNDc3VDQ2NCA0NjJUNDI4IDQ1MlQzOTcgNDQ0VDM3NSA0MzlRMzc5IDQzNyA0MTAgNDMwVDQ3NiA0MTFUNTUxIDM3OVQ2MjUgMzIxVDY3NyAyMzdRNjkzIDE5NiA2OTMgMTY4UTY5MyAxNjEgNjg3IDE1NVQ2NzMgMTQ4UTY2MiAxNDggNjU4IDE1NFQ2NTEgMTgxUTYzOCAyNTMgNTkxIDMwMFQ0NTUgMzc3UTMxOCA0MTkgMTI0IDQxOUg5NVpNNTUgLTIwNVE1NSAtMTc1IDY0IC0xNDJUOTIgLTc2VDE0NSAtMjJUMjIyIC0xUTI4OCAtMSAzNjIgLTY2UTM2OSAtNzIgMzcyIC03NVQzNzggLTc5VDM4MiAtODFUMzg0IC03OVEzODkgLTc0IDQzOSAyMVE0ODMgMTAwIDQ5MCAxMTFUNTA0IDEyMlE1MTAgMTIyIDUxOCAxMThUNTI2IDEwM1E1MjYgMTAxIDUxMCA2OVQ0NjcgLTEyVDQxOSAtOTlMNDEzIC0xMTJMNDMzIC0xMjhRNDk4IC0xODAgNTUzIC0xODBRNjA1IC0xODAgNjQ2IC0xMzlRNjcyIC0xMTIgNjgxIC03N1Q2OTMgLTIxVDcwNiAtMVE3MTkgLTEgNzE5IC0zM1E3MTkgLTM5IDcxNyAtNTdRNzA4IC0xNDEgNjU1IC0xOTBRNjI1IC0yMjQgNTg2IC0yMzJRNTY4IC0yMzcgNTUxIC0yMzdRNDg3IC0yMzcgNDEzIC0xNzJMMzkxIC0xNTVRMzkxIC0xNTcgMzM1IC0yNTVRMjk3IC0zMjUgMjg2IC0zNDJUMjY4IC0zNTlRMjYwIC0zNTkgMjU0IC0zNTNUMjQ4IC0zMzlUMzA0IC0yMzBMMzU5IC0xMjZRMzU5IC0xMjQgMzM3IC0xMDdUMzAyIC04MVEyNjIgLTU3IDIyMSAtNTdRMTcwIC01NyAxMzAgLTkzVDg0IC0yMDFRODIgLTIzNiA3MCAtMjM2UTU1IC0yMzYgNTUgLTIwNScsXG4gICAgMHgyMkU5OiAnNjc5IDQ1OVE2OTMgNDQ1IDY5MyA0MzlRNjkzIDQzMCA2NzkgNDE5SDY1MVE0NTUgNDE5IDMxOSAzNzdRMjMxIDM0NyAxODQgMzAwVDEyNCAxODFRMTIwIDE2MSAxMTYgMTU1VDEwMiAxNDhROTUgMTQ4IDg5IDE1NFQ4MiAxNjhRODIgMTkyIDk3IDIzN1ExMTEgMjc1IDEzNyAzMDZUMTg4IDM1NVQyNDkgMzkxVDMwNyA0MTRUMzYxIDQyOVQzOTkgNDM5UTM5NyA0NDAgMzY0IDQ0N1QyOTggNDY3VDIyNCA0OTlUMTQ5IDU1N1Q5NyA2NDFRODIgNjg2IDgyIDcxMFE4MiA3MTcgODggNzIzVDEwMiA3MzBMMTE1IDcyNVExMTggNzIyIDEyNCA2OTdRMTM3IDYyNSAxODQgNTc4VDMxOSA1MDFRNDU2IDQ1OSA2NTEgNDU5SDY3OVpNNTUgLTIwNVE1NSAtMTc1IDY0IC0xNDJUOTIgLTc2VDE0NSAtMjJUMjIyIC0xUTI4OCAtMSAzNjIgLTY2UTM2OSAtNzIgMzcyIC03NVQzNzggLTc5VDM4MiAtODFUMzg0IC03OVEzODkgLTc0IDQzOSAyMVE0ODMgMTAwIDQ5MCAxMTFUNTA0IDEyMlE1MTAgMTIyIDUxOCAxMThUNTI2IDEwM1E1MjYgMTAxIDUxMCA2OVQ0NjcgLTEyVDQxOSAtOTlMNDEzIC0xMTJMNDMzIC0xMjhRNDk4IC0xODAgNTUzIC0xODBRNjA1IC0xODAgNjQ2IC0xMzlRNjcyIC0xMTIgNjgxIC03N1Q2OTMgLTIxVDcwNiAtMVE3MTkgLTEgNzE5IC0zM1E3MTkgLTM5IDcxNyAtNTdRNzA4IC0xNDEgNjU1IC0xOTBRNjI1IC0yMjQgNTg2IC0yMzJRNTY4IC0yMzcgNTUxIC0yMzdRNDg3IC0yMzcgNDEzIC0xNzJMMzkxIC0xNTVRMzkxIC0xNTcgMzM1IC0yNTVRMjk3IC0zMjUgMjg2IC0zNDJUMjY4IC0zNTlRMjYwIC0zNTkgMjU0IC0zNTNUMjQ4IC0zMzlUMzA0IC0yMzBMMzU5IC0xMjZRMzU5IC0xMjQgMzM3IC0xMDdUMzAyIC04MVEyNjIgLTU3IDIyMSAtNTdRMTcwIC01NyAxMzAgLTkzVDg0IC0yMDFRODIgLTIzNiA3MCAtMjM2UTU1IC0yMzYgNTUgLTIwNScsXG4gICAgMHgyMkVBOiAnNjkzIC0zMFE2ODYgLTQxIDY3MyAtNDFRNjYxIC00MSA1MDYgMzRMMzQ2IDExMEwyODAgLTQ0UTIyOCAtMTYyIDIxNiAtMTg1VDE5MyAtMjA4UTE3NyAtMjA4IDE3MyAtMTkyUTE3MyAtMTg2IDI0MiAtMzBUMzExIDEyOFEyNzEgMTQ1IDE4NCAxODZUODYgMjM2UTgyIDI0MCA4MiAyNDZRODIgMjUxIDg2IDI1OVE5NiAyNjcgMjcxIDM1MEw0NDkgNDM0TDUwNiA1NjVRNTM3IDYzNSA1NTEgNjY0VDU3MSA3MDBUNTgyIDcwNlE1ODcgNzA2IDU5MyA3MDFUNjAwIDY5MFE2MDAgNjc5IDU1MyA1NzJRNTA0IDQ2MyA1MDQgNDYxTDU4NiA1MDFRNjcyIDUzOSA2NzMgNTM5UTY3OSA1MzkgNjkzIDUyNVYtMzBaTTY1MyAxMFY0ODhMNTY2IDQ0NUw0ODAgNDA1TDQyMiAyNzZRNDE1IDI2MCA0MDUgMjM2VDM4OCAxOTlUMzc2IDE3MVQzNjggMTUxVDM2NiAxNDVRMzY4IDE0MyA1MTAgNzdUNjUzIDEwWk00MjIgMzc0UTQyMiAzNzYgNDIwIDM3NlQyODUgMzEzVDE1MSAyNDhRMzE1IDE2OCAzMjYgMTYzUTQxNSAzNTYgNDIyIDM3NCcsXG4gICAgMHgyMkVCOiAnODIgNTI1UTk2IDUzOSAxMDIgNTM5UTEwMyA1MzkgMTIyIDUzMFQxODYgNTAxVDI2NiA0NjNMNDI2IDM4OFE0MjggMzg4IDQ5NSA1NDFRNTY0IDY5NCA1NjkgNjk5UTU3MyA3MDYgNTgxIDcwNlE1ODcgNzA2IDU5MyA3MDJUNjAwIDY5MVE2MDAgNjc2IDUzMyA1MjhRNTE1IDQ4NiA1MDYgNDY1VDQ4NSA0MThUNDcwIDM4MVQ0NjYgMzcwUTQ2NiAzNjkgNTc1IDMxNlE2NzYgMjY5IDY4OSAyNTlRNjkzIDI1MyA2OTMgMjQ4UTY5MyAyNDIgNjg5IDIzNlE2ODggMjM1IDUwNiAxNDVRMzI4IDYzIDMyNCA1OVEzMjQgNTAgMjY2IC03MFEyMjQgLTE2OSAyMTQgLTE4OFQxOTMgLTIwOFExNzcgLTIwOCAxNzMgLTE5MlExNzMgLTE4MyAyMjIgLTc3UTI0NCAtMjkgMjU3IDJUMjY5IDM0TDE4NiAtNlExMDggLTQzIDk5IC00M1E5MyAtNDMgODIgLTMwVjUyNVpNMjcxIDQxNlExMjkgNDg1IDEyNiA0ODVIMTI1UTEyMiA0ODUgMTIyIDI1MFExMjIgMTAgMTI0IDEwTDIxMSA1MEwyOTUgOTJMNDExIDM1MFE0MTEgMzUxIDI3MSA0MTZaTTYyNCAyNDhMNDQ5IDMzMkw0NDAgMzE5UTQzNCAyOTcgMzkzIDIxNFEzNTMgMTIxIDM1MyAxMTlRMzU1IDExOSA0ODkgMTgyVDYyNCAyNDgnLFxuICAgIDB4MjJFQzogJzgyIC0xMjNRODIgLTExNCA5MyAtMTAzSDE2NkwyMzggLTEwMUwyOTMgNTBRMzQ5IDIwMCAzNDkgMjA0TDIyMCAyNjZRMTY2IDI5MSAxNDAgMzA0VDEwMCAzMjVUODQgMzM2VDgyIDM0NFE4MiAzNTMgOTQgMzYwUTExMiAzNzIgMjgyIDQ1M0w0NzMgNTQxTDQ4MiA1NjhRNDg3IDU3OCA1MjkgNjkzUTU1OSA3ODUgNTY5IDc5NVE1NzMgODAyIDU4MSA4MDJRNTg3IDgwMiA1OTMgNzk3VDU5OSA3ODZRNTk5IDc3NSA1NjQgNjc1TDUyNiA1NzBRNTI2IDU2OCA1NjEgNTg0VDYzMyA2MTdUNjczIDYzNVE2NzkgNjM1IDY5MyA2MjFWNjZRNjg2IDU0IDY3OSA1NFE2NjUgNTQgNTI2IDExOVE0OTEgMTM3IDQ1OCAxNTNUNDA1IDE3N1QzODYgMTg0UTM4NSAxODIgMzM0IDQyVDI4MiAtMTAxVDQ4MiAtMTAzSDY4MFE2ODIgLTEwNSA2ODQgLTEwOFQ2ODggLTExM1Q2OTEgLTExOFQ2OTMgLTEyNFE2OTMgLTEzNCA2ODIgLTE0MUw0NzMgLTE0M0gyNjZMMjM4IC0yMTlRMjE3IC0yNzggMjEwIC0yOTBUMTkzIC0zMDNRMTc4IC0zMDMgMTczIC0yODdRMTczIC0yNzkgMTk4IC0yMTRMMjIyIC0xNDVRMjIyIC0xNDMgMTU4IC0xNDNMOTMgLTE0MUw4NiAtMTM2UTgyIC0xMzEgODIgLTEyM1pNNjUzIDEwNlY1ODRMNTA2IDUxM0w0NTMgMzcwUTQ0MiAzMzkgNDI4IDMwMFQ0MDcgMjQzVDQwMCAyMjRRNDAzIDIyMiA1MjcgMTY0VDY1MyAxMDZaTTQ1MyA0ODZRNDUzIDQ4OCA0NTEgNDg4VDMwMCA0MTdUMTUxIDM0NEwyMjQgMzA4UTI0NyAyOTggMjg1IDI3OVQzMzEgMjU3TDM2NCAyNDFMNDUzIDQ4NicsXG4gICAgMHgyMkVEOiAnODIgNjIxUTk2IDYzNSAxMDIgNjM1VDI0OSA1NjhMNDIwIDQ4Nkw0NDkgNDczTDQ2OSA1MzNRNTYzIDc4OSA1NjkgNzk3UTU3MyA4MDEgNTgxIDgwMVE1OTggODAxIDYwMCA3ODZRNjAyIDc4MSA1NDQgNjE3TDQ4NCA0NTVRNTMxIDQzNSA1ODQgNDA4UTY3NyAzNjQgNjg5IDM1NVE2OTMgMzUxIDY5MyAzNDRRNjkzIDMzOSA2OTIgMzM3VDY3NiAzMjVUNjMxIDMwMlQ1MzggMjU3UTUwNCAyNDEgNDY1IDIyM1Q0MDYgMTk1VDM4NiAxODZRMzg0IDE4NCAzMzMgNDRUMjgyIC0xMDFRMjgyIC0xMDMgNDgyIC0xMDNINjgwUTY4MiAtMTA1IDY4NCAtMTA4VDY4OCAtMTEzVDY5MSAtMTE4VDY5MyAtMTI0UTY5MyAtMTM0IDY4MiAtMTQxTDQ3MyAtMTQzSDI2NkwyMzggLTIxOVEyMTcgLTI3OCAyMTAgLTI5MFQxOTMgLTMwM1ExNzggLTMwMyAxNzMgLTI4N1ExNzMgLTI3OSAxOTggLTIxNEwyMjIgLTE0NVEyMjIgLTE0MyAxNTggLTE0M0w5MyAtMTQxTDg2IC0xMzZRODIgLTEzMSA4MiAtMTIzUTgyIC0xMTQgOTMgLTEwM0gxNjZMMjM4IC0xMDFMMzMzIDE1OVEzMjYgMTU5IDIyMCAxMDZRMTEwIDU0IDk3IDU0UTg5IDU0IDgyIDY2VjYyMVpNMjk4IDUwMVExNTUgNTY3IDE0MiA1NzVMMTIyIDU4NFYzNDRRMTIyIDEwNiAxMjQgMTA2UTEyNSAxMDYgMTgwIDEzMlQyOTEgMTg1VDM1MSAyMTNRMzU1IDIxNyAzOTMgMzI2TDQzMyA0MzVRNDMzIDQzNiAyOTggNTAxWk01NDkgMzgxUTQ3MiA0MTcgNDcxIDQxN0w0MDYgMjQxUTQwOCAyNDAgNTE2IDI5MVQ2MjQgMzQ0TDU0OSAzODEnLFxuICAgIDB4MjJFRTogJzc4IDMwUTc4IDU0IDk1IDcyVDEzOCA5MFExNjIgOTAgMTgwIDc0VDE5OSAzMVExOTkgNiAxODIgLTEyVDEzOSAtMzBUOTYgLTEzVDc4IDMwWk03OCA0NDBRNzggNDY0IDk1IDQ4MlQxMzggNTAwUTE2MiA1MDAgMTgwIDQ4NFQxOTkgNDQxUTE5OSA0MTYgMTgyIDM5OFQxMzkgMzgwVDk2IDM5N1Q3OCA0NDBaTTc4IDg0MFE3OCA4NjQgOTUgODgyVDEzOCA5MDBRMTYyIDkwMCAxODAgODg0VDE5OSA4NDFRMTk5IDgxNiAxODIgNzk4VDEzOSA3ODBUOTYgNzk3VDc4IDg0MCcsXG4gICAgMHgyMkVGOiAnNzggMjUwUTc4IDI3NCA5NSAyOTJUMTM4IDMxMFExNjIgMzEwIDE4MCAyOTRUMTk5IDI1MVExOTkgMjI2IDE4MiAyMDhUMTM5IDE5MFQ5NiAyMDdUNzggMjUwWk01MjUgMjUwUTUyNSAyNzQgNTQyIDI5MlQ1ODUgMzEwUTYwOSAzMTAgNjI3IDI5NFQ2NDYgMjUxUTY0NiAyMjYgNjI5IDIwOFQ1ODYgMTkwVDU0MyAyMDdUNTI1IDI1MFpNOTcyIDI1MFE5NzIgMjc0IDk4OSAyOTJUMTAzMiAzMTBRMTA1NiAzMTAgMTA3NCAyOTRUMTA5MyAyNTFRMTA5MyAyMjYgMTA3NiAyMDhUMTAzMyAxOTBUOTkwIDIwN1Q5NzIgMjUwJyxcbiAgICAweDIyRjE6ICcxMzMgNzYwUTEzMyA3ODQgMTUwIDgwMlQxOTMgODIwUTIxNyA4MjAgMjM1IDgwNFQyNTQgNzYxUTI1NCA3MzYgMjM3IDcxOFQxOTQgNzAwVDE1MSA3MTdUMTMzIDc2MFpNNTgwIDQ2MFE1ODAgNDg0IDU5NyA1MDJUNjQwIDUyMFE2NjQgNTIwIDY4MiA1MDRUNzAxIDQ2MVE3MDEgNDM2IDY4NCA0MThUNjQxIDQwMFQ1OTggNDE3VDU4MCA0NjBaTTEwMjcgMTYwUTEwMjcgMTg0IDEwNDQgMjAyVDEwODcgMjIwUTExMTEgMjIwIDExMjkgMjA0VDExNDggMTYxUTExNDggMTM2IDExMzEgMTE4VDEwODggMTAwVDEwNDUgMTE3VDEwMjcgMTYwJyxcbiAgICAweDIzMDU6ICc1NSA2OThRNTYgNzA4IDcwIDcxNkg1NDBRNTU0IDcwOCA1NTUgNjk4UTU1NSA2OTQgNTU0IDY5MVQ1NTIgNjg2VDU0OSA2ODJUNTQ2IDY4MFQ1NDIgNjc4VDUzOSA2NzZINzFRNzAgNjc2IDY4IDY3N1Q2NSA2NzlUNjEgNjgyVDU4IDY4NlQ1NiA2OTFUNTUgNjk4Wk01NTUgMThRNTU0IDEyIDU0OSA2VDUzNiAwSDUzNVE1MjUgMCA1MTUgMTdUNDU5IDEzMlE0MzAgMTk0IDQxMCAyMzVMMzA1IDQ1NUwxOTkgMjMzUTE3NiAxODUgMTQ3IDEyNVQxMDUgMzZUOTAgN1E4NSAwIDc1IDBRNjMgMCA1OCAxMVE1NSAxNSA1NSAyMVE1OCAzMSAxNzAgMjY2VDI4NSA1MDdRMjk1IDUyMiAzMDUgNTIyVDMyMCA1MTVRMzIyIDUxMyA0MzkgMjY4TDU1NSAyNFYxOCcsXG4gICAgMHgyMzA2OiAnNTUgNzk1UTU2IDgwNiA3MCA4MTNINTQwUTU1NCA4MDYgNTU1IDc5NVE1NTUgNzkxIDU1NCA3ODhUNTUyIDc4M1Q1NDkgNzc5VDU0NiA3NzdUNTQyIDc3NVQ1MzkgNzczSDcxUTcwIDc3MyA2OCA3NzRUNjUgNzc2VDYxIDc3OVQ1OCA3ODNUNTYgNzg4VDU1IDc5NVpNNTUgNjAxUTU2IDYxMiA3MCA2MTlINTQwUTU1NCA2MTIgNTU1IDYwMVE1NTUgNTk3IDU1NCA1OTRUNTUyIDU4OVQ1NDkgNTg1VDU0NiA1ODNUNTQyIDU4MVQ1MzkgNTc5SDcxUTcwIDU3OSA2OCA1ODBUNjUgNTgyVDYxIDU4NVQ1OCA1ODlUNTYgNTk0VDU1IDYwMVpNNzUgLTk3UTY3IC05NyA2MSAtOTFUNTUgLTgxUTU1IC03MSAxNjkgMTY2VDI4NSA0MTBRMjk1IDQyNSAzMDUgNDI1UTMxMSA0MjUgMzE2IDQyMlQzMjMgNDE0TDMyNSA0MTBRMzI3IDQwNCA0NDEgMTY3VDU1NSAtODFRNTU1IC04NSA1NDkgLTkxVDUzNSAtOTdUNTIwIC05MFE1MTkgLTg5IDUwNiAtNjFUNDYzIDI3VDQxMSAxMzZMMzA1IDM1OEwxOTkgMTM2UTE2NyA3MSAxMjkgLTEwUTk4IC03NSA5MiAtODZUNzUgLTk3JyxcbiAgICAweDIzMDg6ICcxNzQgNzM0UTE3OCA3NDYgMTkwIDc1MEgyOThIMzY5UTQwMCA3NTAgNDExIDc0N1Q0MjIgNzMwVDQxMSA3MTNUMzcyIDcwOVEzNjUgNzA5IDM0NSA3MDlUMzEwIDcxMEgyMTRWLTIzNVEyMDYgLTI0OCAxOTYgLTI1MFExOTIgLTI1MCAxODkgLTI0OVQxODQgLTI0N1QxODAgLTI0NFQxNzggLTI0MVQxNzYgLTIzN1QxNzQgLTIzNFY3MzQnLFxuICAgIDB4MjMwOTogJzIxIDcxN1QyMSA3MzBUMzIgNzQ2VDc1IDc1MEgxNDdIMjU2UTI2NiA3NDIgMjY5IDczNVYtMjM1UTI2MiAtMjQ4IDI1MSAtMjUwUTI0NyAtMjUwIDI0NCAtMjQ5VDIzOSAtMjQ3VDIzNSAtMjQ0VDIzMyAtMjQxVDIzMSAtMjM3VDIyOSAtMjM0VjcxMEgxMzNRMTE5IDcxMCA5OSA3MTBUNzEgNzA5UTQzIDcwOSAzMiA3MTMnLFxuICAgIDB4MjMwQTogJzE3NCA3MzRRMTc0IDczNSAxNzUgNzM3VDE3NyA3NDBUMTgwIDc0NFQxODQgNzQ3VDE4OSA3NDlUMTk2IDc1MFEyMDYgNzQ4IDIxNCA3MzVWLTIxMEgzMTBIMzczUTQwMSAtMjEwIDQxMSAtMjEzVDQyMiAtMjMwVDQxMSAtMjQ3VDM2OSAtMjUxUTM2MiAtMjUxIDMzOCAtMjUxVDI5OCAtMjUwSDE5MFExNzggLTI0NiAxNzQgLTIzNFY3MzQnLFxuICAgIDB4MjMwQjogJzIyOSA3MzRRMjI5IDczNSAyMzAgNzM3VDIzMiA3NDBUMjM1IDc0NFQyMzkgNzQ3VDI0NCA3NDlUMjUxIDc1MFEyNjIgNzQ4IDI2OSA3MzVWLTIzNVEyNjYgLTI0MCAyNTYgLTI0OUwxNDcgLTI1MEg3N1E0MyAtMjUwIDMyIC0yNDdUMjEgLTIzMFQzMiAtMjEzVDcyIC0yMDlRNzkgLTIwOSA5OSAtMjA5VDEzMyAtMjEwSDIyOVY3MzQnLFxuICAgIDB4MjMxQzogJzc2IDMwNlE2MiAzMDYgNTkgMzE5VDU1IDM4NlY1MDBWNTk2UTU1IDY2NCA1NyA2NzZUNjggNjkyUTcxIDY5NCAyNTAgNjk0UTQyOCA2OTQgNDMyIDY5MlE0NDQgNjg1IDQ0NCA2NzRRNDQ0IDY2NSA0MzIgNjU2UTQyOCA2NTQgMjYxIDY1NEg5NVY0ODdROTUgMzU1IDk1IDMzNlQ5MCAzMTJRODQgMzA2IDc2IDMwNicsXG4gICAgMHgyMzFEOiAnNDI0IDMwNlE0MTggMzA2IDQxMyAzMTBUNDA2IDMxOEw0MDQgMzIxVjY1NEgyMzhRNzEgNjU0IDY4IDY1NlE1NSA2NjIgNTUgNjc0VDY4IDY5MlE3MSA2OTQgMjUwIDY5NEgzNzlRNDMyIDY5NCA0MzggNjg4UTQ0MyA2ODMgNDQzIDY2MlQ0NDQgNTAwVDQ0NCAzMzhUNDM4IDMxMlE0MzIgMzA2IDQyNCAzMDYnLFxuICAgIDB4MjMxRTogJzU1IDE3MlYyODdRNTUgMzQxIDU4IDM1M1Q3NiAzNjZRODggMzY2IDk1IDM1MVYxOEgyNjFRNDI4IDE4IDQzMiAxNlE0NDQgOSA0NDQgLTJRNDQ0IC0xMSA0MzIgLTIwUTQyOCAtMjIgMjUwIC0yMkgxMjBRNjcgLTIyIDYxIC0xNlE1NiAtMTEgNTYgMTBUNTUgMTcyJyxcbiAgICAweDIzMUY6ICc0MDQgMzUxUTQxMCAzNjYgNDI0IDM2NlE0MzcgMzY2IDQ0MCAzNTNUNDQ0IDI4OFYxNzJWNzJRNDQ0IDggNDQzIC00VDQzMiAtMjBRNDI4IC0yMiAyNTAgLTIyUTcxIC0yMiA2OCAtMjBRNTUgLTE0IDU1IC0yVDY4IDE2UTcxIDE4IDIzOCAxOEg0MDRWMzUxJyxcbiAgICAweDIzMjI6ICc1NSAxNDFRNTUgMTQ5IDcyIDE3NFQxMjUgMjM0VDIwOSAzMDNUMzI5IDM2MFQ0NzggMzg4SDUyNlE2NDkgMzgzIDc2NSAzMTlRODE0IDI5MSA4NTggMjUwVDkyMyAxNzlUOTQ0IDE0MVE5NDQgMTMzIDkzOCAxMjhUOTI0IDEyMlE5MTQgMTI0IDkxMiAxMjVUOTAyIDEzOVE3NjYgMzI4IDUwMCAzMjhRNDE1IDMyOCAzNDIgMzA4VDIyNSAyNThUMTUwIDE5OVQxMDIgMTQ4VDg0IDEyNFE4MSAxMjIgNzUgMTIyUTU1IDEyNyA1NSAxNDEnLFxuICAgIDB4MjMyMzogJzkyMyAzNzhROTQ0IDM3OCA5NDQgMzU4UTk0NCAzNDUgOTEyIDMxMVQ4NTkgMjU5UTcxMCAxMzQgNTAwIDEzNFEyODggMTM0IDE0MCAyNTlRNTUgMzM2IDU1IDM1OFE1NSAzNjYgNjEgMzcyVDc1IDM3OFE3OCAzNzggODQgMzc2UTg2IDM3NiAxMDEgMzU2VDE0NyAzMTBUMjIxIDI1N1QzMzkgMjEyVDUwMCAxOTNRNjI4IDE5MyA3MzQgMjM2UTg0MSAyODIgOTAzIDM2M1E5MTQgMzc4IDkyMyAzNzgnLFxuICAgIDB4MjMyOTogJzMzMyAtMjMyUTMzMiAtMjM5IDMyNyAtMjQ0VDMxMyAtMjUwUTMwMyAtMjUwIDI5NiAtMjQwUTI5MyAtMjMzIDIwMiA2VDExMCAyNTBUMjAxIDQ5NFQyOTYgNzQwUTI5OSA3NDUgMzA2IDc0OUwzMDkgNzUwUTMxMiA3NTAgMzEzIDc1MFEzMzEgNzUwIDMzMyA3MzJRMzMzIDcyNyAyNDMgNDg5UTE1MiAyNTIgMTUyIDI1MFQyNDMgMTFRMzMzIC0yMjcgMzMzIC0yMzInLFxuICAgIDB4MjMyQTogJzU1IDczMlE1NiA3MzkgNjEgNzQ0VDc1IDc1MFE4NSA3NTAgOTIgNzQwUTk1IDczMyAxODYgNDk0VDI3OCAyNTBUMTg3IDZUOTIgLTI0MFE4NSAtMjUwIDc1IC0yNTBRNjcgLTI1MCA2MiAtMjQ1VDU1IC0yMzJRNTUgLTIyNyAxNDUgMTFRMjM2IDI0OCAyMzYgMjUwVDE0NSA0ODlRNTUgNzI3IDU1IDczMicsXG4gICAgMHgyM0IwOiAnMzU3IDc0MVY3MjZRMzU3IDcyMCAzNDkgNzE1UTI2MSA2NTUgMjQyIDUzOVEyNDAgNTI2IDI0MCA0NTRUMjM5IDMxNVQyMzkgMjQ3UTI0MCAyMzUgMjQwIDEyNFY0MFEyNDAgLTE3IDIzMyAtNTNUMjAxIC0xMzBRMTU1IC0yMDYgNzggLTI0NEg2OUg2NFE1OCAtMjQ0IDU3IC0yNDNUNTYgLTIzNFE1NiAtMjMyIDU2IC0yMzFWLTIyNVE1NiAtMjE4IDYzIC0yMTVRMTUzIC0xNTMgMTcwIC0zOVExNzIgLTI1IDE3MyAxMTlWMjE5UTE3MyAyNDUgMTc0IDI0OVExNzMgMjU4IDE3MyAzNzZWNDYwUTE3MyA1MTUgMTc4IDU0NVQyMDEgNjExUTI0NCA2OTUgMzI3IDc0MUwzMzQgNzQ0SDM1NEwzNTcgNzQxJyxcbiAgICAweDIzQjE6ICc3OCA3NDRRMTUzIDcwNiAxOTYgNjQwVDIzOSA0OTJWMzc2UTIzOSAzNDEgMjM5IDMxNFQyMzggMjcxVDIzOCAyNTNRMjM5IDI1MSAyMzkgMjIzVjExOVY0OVEyMzkgLTM5IDI1NCAtODVRMjYzIC0xMTEgMjc1IC0xMzRUMzAxIC0xNzJUMzI2IC0xOTdUMzQ2IC0yMTNUMzU2IC0yMjFUMzU3IC0yMzJWLTI0MUwzNTQgLTI0NEgzMzRRMjY0IC0yMDkgMjIyIC0xNDZUMTc0IC0xMlExNzMgLTYgMTczIDk1UTE3MyAxMzQgMTczIDE5MVQxNzQgMjUwUTE3MyAyNTggMTczIDM4MlY0NTFRMTczIDU0MiAxNTkgNTg1UTE0NSA2MjYgMTIwIDY1OFQ3NSA3MDZUNTYgNzIzVjczMVE1NiA3NDEgNTcgNzQyVDY2IDc0NEg3OCcsXG4gICAgMHgyM0QwOiAnMzEyIDBWNjAySDM1NVYwSDMxMicsXG4gICAgMHgyNEM4OiAnNDUxIC0xNzVRMzI4IC0xNzUgMjI2IC0xMTVUNjYgNDdUOCAyNjdROCAzMDMgMTUgMzQyVDM5IDQzMVQ5NCA1MzFUMTg2IDYyMlEyMzkgNjYzIDMwNyA2ODZUNDI0IDcwOUg0NDBRNjA0IDcwOSA3MTYgNjIyUTc1NyA1OTIgNzg4IDU1NVQ4MzggNDgyVDg2OSA0MTRUODg2IDM1MFQ4OTIgMzAxVDg5NCAyNjdRODk0IDE0NyA4MzUgNDVUNjc0IC0xMTZUNDUxIC0xNzVaTTg1NCAyNjhRODU0IDM3NSA4MDIgNDY3VDY1NyA2MTRUNDUwIDY3MFEyODMgNjcwIDE2NiA1NTJUNDkgMjY3UTQ5IDk5IDE2NyAtMThUNDUzIC0xMzZRNjE3IC0xMzYgNzM1IC0xOFQ4NTQgMjY4Wk0yNzMgMzc4UTI3MyA0MzAgMzA5IDQ3NFQ0MDkgNTI3UTQxMSA1MjcgNDE3IDUyN1Q0MjggNTI4UTQ5OCA1MjggNTQ5IDQ4NEw1NjcgNTA1UTU4MyA1MjggNTkwIDUyOEg1OTRRNjAwIDUyOCA2MDYgNTIyVjM1MEw2MDAgMzQ0SDU4NlE1NzcgMzQ0IDU3NCAzNDRUNTY5IDM0N1Q1NjYgMzU3UTU0MiA0OTEgNDMyIDQ5MVEzODkgNDkxIDM2NSA0NjVUMzQwIDQwN1EzNDAgMzkxIDM0NCAzNzhUMzU4IDM1NlQzNzcgMzQwVDQwMCAzMjhUNDIxIDMyMVQ0NDMgMzE2VDQ1OSAzMTNRNDk5IDMwNSA1MTcgMzAwVDU1OSAyNzlUNjAxIDIzOFE2MjkgMTk1IDYyOSAxNDhRNjI5IDgwIDU4MyAzM1Q0NzEgLTE0UTM5MiAtMTQgMzMwIDMwUTMxMiA2IDI5MyAtMTNRMjkyIC0xNCAyODUgLTE0UTI3OSAtMTQgMjczIC04Vjc3VjEzOFEyNzMgMTYwIDI3NSAxNjVUMjg2IDE3MEgyOTRIMzA3UTMxMyAxNjQgMzEzIDE1OFEzMTMgMTA4IDM1MCA2N1Q0NzEgMjZRNTEyIDI2IDUzNyA1NFQ1NjIgMTE5UTU2MiAxMzcgNTU4IDE1MVQ1NDQgMTc2VDUyNyAxOTNUNTA0IDIwNVQ0ODMgMjEyVDQ1OSAyMThUNDQxIDIyMlEzOTEgMjMyIDM2OCAyNDFUMzE4IDI3M1EyNzMgMzE2IDI3MyAzNzgnLFxuICAgIDB4MjUwQzogJzc2IDMwNlE2MiAzMDYgNTkgMzE5VDU1IDM4NlY1MDBWNTk2UTU1IDY2NCA1NyA2NzZUNjggNjkyUTcxIDY5NCAyNTAgNjk0UTQyOCA2OTQgNDMyIDY5MlE0NDQgNjg1IDQ0NCA2NzRRNDQ0IDY2NSA0MzIgNjU2UTQyOCA2NTQgMjYxIDY1NEg5NVY0ODdROTUgMzU1IDk1IDMzNlQ5MCAzMTJRODQgMzA2IDc2IDMwNicsXG4gICAgMHgyNTEwOiAnNDI0IDMwNlE0MTggMzA2IDQxMyAzMTBUNDA2IDMxOEw0MDQgMzIxVjY1NEgyMzhRNzEgNjU0IDY4IDY1NlE1NSA2NjIgNTUgNjc0VDY4IDY5MlE3MSA2OTQgMjUwIDY5NEgzNzlRNDMyIDY5NCA0MzggNjg4UTQ0MyA2ODMgNDQzIDY2MlQ0NDQgNTAwVDQ0NCAzMzhUNDM4IDMxMlE0MzIgMzA2IDQyNCAzMDYnLFxuICAgIDB4MjUxNDogJzU1IDE3MlYyODdRNTUgMzQxIDU4IDM1M1Q3NiAzNjZRODggMzY2IDk1IDM1MVYxOEgyNjFRNDI4IDE4IDQzMiAxNlE0NDQgOSA0NDQgLTJRNDQ0IC0xMSA0MzIgLTIwUTQyOCAtMjIgMjUwIC0yMkgxMjBRNjcgLTIyIDYxIC0xNlE1NiAtMTEgNTYgMTBUNTUgMTcyJyxcbiAgICAweDI1MTg6ICc0MDQgMzUxUTQxMCAzNjYgNDI0IDM2NlE0MzcgMzY2IDQ0MCAzNTNUNDQ0IDI4OFYxNzJWNzJRNDQ0IDggNDQzIC00VDQzMiAtMjBRNDI4IC0yMiAyNTAgLTIyUTcxIC0yMiA2OCAtMjBRNTUgLTE0IDU1IC0yVDY4IDE2UTcxIDE4IDIzOCAxOEg0MDRWMzUxJyxcbiAgICAweDI1NzE6ICcxOSAtMTk1UTEzIC0xOTUgNyAtMTg4VDAgLTE3NlEwIC0xNjkgMTggLTE1MUw4MjIgNjgzUTgzNSA2OTQgODQwIDY5NFQ4NTIgNjg4VDg2MCA2NzRRODYwIDY2NyA4MTAgNjE0VDQ2MCAyNTJRNTcgLTE2NyA0NCAtMTc5UTI3IC0xOTUgMTkgLTE5NScsXG4gICAgMHgyNTcyOiAnMCA2NzVRMCA2ODEgNiA2ODdUMTkgNjk0UTI3IDY5NCA0NCA2NzhMNDYwIDI0N1E3NTkgLTYyIDgwOSAtMTE1VDg2MCAtMTc1UTg2MCAtMTgzIDg1MiAtMTg5VDg0MCAtMTk1UTgzNSAtMTk1IDgyMiAtMTg0TDE4IDY0OVEwIDY2NyAwIDY3NScsXG4gICAgMHgyNUEwOiAnNzEgMFE1OSA0IDU1IDE2VjM0Nkw1NiA2NzZRNjQgNjg2IDcwIDY4OUg3MDlRNzE5IDY4MSA3MjIgNjc0VjE1UTcxOSAxMCA3MDkgMUwzOTAgMEg3MScsXG4gICAgMHgyNUExOiAnNzEgMFE1OSA0IDU1IDE2VjM0Nkw1NiA2NzZRNjQgNjg2IDcwIDY4OUg3MDlRNzE5IDY4MSA3MjIgNjc0VjE1UTcxOSAxMCA3MDkgMUwzOTAgMEg3MVpNNjgyIDQwVjY0OUg5NVY0MEg2ODInLFxuICAgIDB4MjVBQTogJzcxIDBRNTkgNCA1NSAxNlYzNDZMNTYgNjc2UTY0IDY4NiA3MCA2ODlINzA5UTcxOSA2ODEgNzIyIDY3NFYxNVE3MTkgMTAgNzA5IDFMMzkwIDBINzEnLFxuICAgIDB4MjVCMjogJzk5IC0yMFE4NCAtMTEgODQgMFE4NCA1IDE0OCAxNDVUMjc4IDQyNEwzNDIgNTYzUTM0NyA1NzUgMzYwIDU3NVEzNjggNTc1IDM3NSA1NzBRMzc2IDU2OSA0NDEgNDMwVDU3MSAxNDhUNjM3IDBRNjM3IC0xMSA2MjIgLTIwSDk5JyxcbiAgICAweDI1QjM6ICc3NSAwTDcyIDJRNjkgMyA2NyA1VDYyIDExVDU5IDIwUTU5IDI0IDYyIDMwUTY1IDM3IDI0NSAzNzBUNDI4IDcwN1E0MjggNzA4IDQzMCA3MTBUNDM2IDcxNFQ0NDQgNzE2UTQ1MSA3MTYgNDU1IDcxMlE0NTkgNzEwIDY0NCAzNjhMODI4IDI3VjIwUTgyOCA3IDgxNCAwSDc1Wk02MTAgMzQ3TDQ0NCA2NTNRNDQzIDY1MyAyNzggMzQ3VDExMyA0MEg3NzVRNzc1IDQyIDYxMCAzNDcnLFxuICAgIDB4MjVCNDogJzk5IC0yMFE4NCAtMTEgODQgMFE4NCA1IDE0OCAxNDVUMjc4IDQyNEwzNDIgNTYzUTM0NyA1NzUgMzYwIDU3NVEzNjggNTc1IDM3NSA1NzBRMzc2IDU2OSA0NDEgNDMwVDU3MSAxNDhUNjM3IDBRNjM3IC0xMSA2MjIgLTIwSDk5JyxcbiAgICAweDI1QjU6ICc3NSAwTDcyIDJRNjkgMyA2NyA1VDYyIDExVDU5IDIwUTU5IDI0IDYyIDMwUTY1IDM3IDI0NSAzNzBUNDI4IDcwN1E0MjggNzA4IDQzMCA3MTBUNDM2IDcxNFQ0NDQgNzE2UTQ1MSA3MTYgNDU1IDcxMlE0NTkgNzEwIDY0NCAzNjhMODI4IDI3VjIwUTgyOCA3IDgxNCAwSDc1Wk02MTAgMzQ3TDQ0NCA2NTNRNDQzIDY1MyAyNzggMzQ3VDExMyA0MEg3NzVRNzc1IDQyIDYxMCAzNDcnLFxuICAgIDB4MjVCNjogJzgzIDUyM1E4MyA1MjQgODUgNTI3VDkyIDUzNVQxMDMgNTM5UTEwNyA1MzkgMzg5IDQwNlQ2ODAgMjY4UTY5NCAyNjAgNjk0IDI0OVE2OTQgMjM5IDY4NyAyMzRRNjg1IDIzMiAzOTUgOTVMMTA3IC00MUgxMDFROTAgLTQwIDgzIC0yNlY1MjMnLFxuICAgIDB4MjVCODogJzgzIDUyM1E4MyA1MjQgODUgNTI3VDkyIDUzNVQxMDMgNTM5UTEwNyA1MzkgMzg5IDQwNlQ2ODAgMjY4UTY5NCAyNjAgNjk0IDI0OVE2OTQgMjM5IDY4NyAyMzRRNjg1IDIzMiAzOTUgOTVMMTA3IC00MUgxMDFROTAgLTQwIDgzIC0yNlY1MjMnLFxuICAgIDB4MjVCOTogJzI2IDQ4OVEzMyA1MDUgNDMgNTA1UTUxIDUwNSAyNjAgMzg1UTQ2NCAyNjYgNDcxIDI1OVE0NzMgMjU3IDQ3MyAyNTBRNDczIDI0MiA0NjkgMjM5UTQ1OSAyMzEgMjYwIDExNVE1MSAtNSA0MyAtNVEzOSAtNSAzNSAtMVQyOCA3TDI2IDExVjQ4OVpNNDEyIDI1MEw2NyA0NTBRNjYgNDUwIDY2IDI1MFQ2NyA1MFE2OSA1MSAyNDAgMTUwVDQxMiAyNTAnLFxuICAgIDB4MjVCQzogJzg0IDU1NlE4NCA1NjcgOTkgNTc2SDYyMlE2MzcgNTY3IDYzNyA1NTZRNjM3IDU1MSA1NzIgNDA5VDQ0MSAxMjdUMzc1IC0xNFEzNjggLTE5IDM2MCAtMTlIMzU4UTM0OSAtMTkgMzQyIC03VDI5NiA5MlEyNDkgMTkzIDIxMSAyNzVRODQgNTUwIDg0IDU1NicsXG4gICAgMHgyNUJEOiAnNTkgNDgwUTU5IDQ4NSA2MSA0ODlUNjYgNDk1VDcyIDQ5OEw3NSA1MDBIODE0UTgyOCA0OTMgODI4IDQ4MFY0NzRMNjQ0IDEzMlE0NTggLTIxMCA0NTUgLTIxMlE0NTEgLTIxNSA0NDQgLTIxNVQ0MzMgLTIxMlE0MjkgLTIxMCAzNDIgLTQ5VDE2NCAyODJUNjQgNDY2UTU5IDQ3OCA1OSA0ODBaTTc3NSA0NjBIMTEzUTExMyA0NTkgMjc4IDE1M1Q0NDQgLTE1M1Q2MTAgMTUzVDc3NSA0NjAnLFxuICAgIDB4MjVCRTogJzg0IDU1NlE4NCA1NjcgOTkgNTc2SDYyMlE2MzcgNTY3IDYzNyA1NTZRNjM3IDU1MSA1NzIgNDA5VDQ0MSAxMjdUMzc1IC0xNFEzNjggLTE5IDM2MCAtMTlIMzU4UTM0OSAtMTkgMzQyIC03VDI5NiA5MlEyNDkgMTkzIDIxMSAyNzVRODQgNTUwIDg0IDU1NicsXG4gICAgMHgyNUJGOiAnNTkgNDgwUTU5IDQ4NSA2MSA0ODlUNjYgNDk1VDcyIDQ5OEw3NSA1MDBIODE0UTgyOCA0OTMgODI4IDQ4MFY0NzRMNjQ0IDEzMlE0NTggLTIxMCA0NTUgLTIxMlE0NTEgLTIxNSA0NDQgLTIxNVQ0MzMgLTIxMlE0MjkgLTIxMCAzNDIgLTQ5VDE2NCAyODJUNjQgNDY2UTU5IDQ3OCA1OSA0ODBaTTc3NSA0NjBIMTEzUTExMyA0NTkgMjc4IDE1M1Q0NDQgLTE1M1Q2MTAgMTUzVDc3NSA0NjAnLFxuICAgIDB4MjVDMDogJzY5NCAtMjZRNjg2IC00MCA2NzYgLTQxSDY3MEwzODIgOTVROTIgMjMyIDkwIDIzNFE4MyAyMzkgODMgMjQ5UTgzIDI2MiA5NiAyNjdRMTAxIDI3MCAzNzkgNDAxVDY2NSA1MzdRNjcxIDUzOSA2NzQgNTM5UTY4NiA1MzkgNjk0IDUyNFYtMjYnLFxuICAgIDB4MjVDMjogJzY5NCAtMjZRNjg2IC00MCA2NzYgLTQxSDY3MEwzODIgOTVROTIgMjMyIDkwIDIzNFE4MyAyMzkgODMgMjQ5UTgzIDI2MiA5NiAyNjdRMTAxIDI3MCAzNzkgNDAxVDY2NSA1MzdRNjcxIDUzOSA2NzQgNTM5UTY4NiA1MzkgNjk0IDUyNFYtMjYnLFxuICAgIDB4MjVDMzogJzQ3MyAxMFE0NjYgLTUgNDU0IC01UTQ1MSAtNSA0NDUgLTNRNDQ0IC0zIDM0MyA1NlQxNDAgMTczVDM1IDIzNFEyNiAyMzkgMjYgMjUwVDM1IDI2NlE0MCAyNjkgMjQwIDM4NFQ0NDUgNTAzUTQ1MSA1MDUgNDUzIDUwNVE0NjYgNTA1IDQ3MyA0OTBWMTBaTTQzMyA1MFQ0MzMgMjUwVDQzMiA0NTBUMjU5IDM1MVQ4NyAyNTBUMjU4IDE1MFQ0MzIgNTBRNDMzIDUwIDQzMyAyNTAnLFxuICAgIDB4MjVDQTogJzMxOCA3MDlRMzI1IDcxNiAzMzIgNzE2UTM0MCA3MTYgMzQ0IDcxM1Q0NzQgNTExUTYxMSAyOTggNjExIDI5MlE2MTEgMjg1IDUyNiAxNTJRNDk0IDEwMyA0NzQgNzJRMzQ3IC0xMjggMzQ0IC0xMzBRMzQwIC0xMzIgMzMzIC0xMzJUMzIyIC0xMzBRMzE5IC0xMjggMjU3IC0zMVQxMzEgMTY5VDYwIDI3OFE1NiAyODUgNTYgMjkyUTU2IDI5OCA2MCAzMDVRNzMgMzI2IDE5NCA1MTZUMzE4IDcwOVpNNTY3IDI5MFQ1NjcgMjkxVDQ1MSA0NzVUMzMzIDY1OEwxMDAgMjkzUTEwMCAyODggMjE1IDEwOEwzMzMgLTc0UTMzNCAtNzQgNDUwIDEwOCcsXG4gICAgMHgyNUVGOiAnNTYgMjUwUTU2IDM1MyA5NSA0NDJUMTk2IDU4OVQzMzUgNjgxVDQ5MSA3MTVRNTczIDcxNSA2MzUgNjkzUTY5NCA2NzMgNzQ3IDYzNVQ4NDYgNTQzVDkxNyA0MTJUOTQ0IDI1MFE5NDQgNTggODE1IC03OFQ1MDAgLTIxNVE0NTcgLTIxNSA0MjkgLTIxMFEyNzQgLTE4MyAxNjUgLTU2VDU2IDI1MFpNNTAwIC0xNzZRNjY0IC0xNzYgNzg0IC01NFQ5MDQgMjUwUTkwNCA0MTggNzk5IDUzNlQ1NDMgNjc0UTUzNCA2NzUgNDkzIDY3NVE0MjUgNjc1IDM1NyA2NDdUMjI5IDU2N1QxMzMgNDMyVDk2IDI1MFE5NiAxNjAgMTI5IDgwVDIxNyAtNTZUMzQ2IC0xNDRUNTAwIC0xNzYnLFxuICAgIDB4MjVGQjogJzcxIDBRNTkgNCA1NSAxNlYzNDZMNTYgNjc2UTY0IDY4NiA3MCA2ODlINzA5UTcxOSA2ODEgNzIyIDY3NFYxNVE3MTkgMTAgNzA5IDFMMzkwIDBINzFaTTY4MiA0MFY2NDlIOTVWNDBINjgyJyxcbiAgICAweDI1RkM6ICc3MSAwUTU5IDQgNTUgMTZWMzQ2TDU2IDY3NlE2NCA2ODYgNzAgNjg5SDcwOVE3MTkgNjgxIDcyMiA2NzRWMTVRNzE5IDEwIDcwOSAxTDM5MCAwSDcxJyxcbiAgICAweDI2MDU6ICczNjcgMzk1UTM3NCA0MTYgMzk4IDQ5MlQ0NDIgNjI3VDQ2MyA2ODhRNDYzIDY5MiA0NjcgNjkyUTQ3MSA2OTQgNDcyIDY5NFE0NzggNjk0IDQ4NCA2ODBUNTIzIDU2MlE1NTMgNDY5IDU3NiA0MDBMNTc3IDM5NUg3MzFIODE5UTg3MiAzOTUgODgzIDM5NFQ4OTUgMzg0UTg5NSAzODAgODkxIDM3NlQ4MzIgMzMzUTc5NCAzMDUgNzY3IDI4NVE2NDMgMTk1IDY0MyAxOTRMNjkwIDQ3UTczNyAtOTYgNzM3IC0xMDNRNzM3IC0xMTEgNzI3IC0xMTFRNzIxIC0xMTEgNTk0IC0xOEw0NzIgNzFMMzUwIC0xOFEyMjMgLTExMSAyMTcgLTExMVEyMDcgLTExMSAyMDcgLTEwM1EyMDcgLTk2IDI1NCA0N0wzMDEgMTk0UTMwMSAxOTUgMjQxIDIzOVQxMTggMzI4VDUxIDM3OFE0OSAzODIgNDkgMzg0UTQ5IDM5MiA1OCAzOTNUMTEwIDM5NUgyMTNIMzY3JyxcbiAgICAweDI2NjA6ICcxODEgLTIxUTEzNCAtMjEgOTYgMjdUNTUgMTkzUTU1IDIyNCA1OCAyNDdUODIgMzE3VDE0MyA0MTBRMTcyIDQ0MyAyMzQgNDk4UTI4MiA1NDMgMzE0IDU5OFQzNjAgNjg3VDM4MCA3MjVRMzg2IDcyNyAzODkgNzI3UTM5NSA3MjcgMzk4IDcyNVQ0MDYgNzE2VDQxMyA3MDJUNDIzIDY3N1Q0MzkgNjQxUTQ4MSA1NTYgNTQ0IDQ5OFE2MzMgNDIwIDY3OCAzNTNUNzIzIDIwNFE3MjMgMTQyIDcxMSA5NFQ2NjkgMTJUNTkwIC0yMVE1MjAgLTIxIDQ5MCA4VDQ1OSA2NlY3MEg0MDlWNjJRNDA5IDIyIDQxNiAtMTdUNDMwIC04MlQ0MzcgLTExMlE0MzcgLTEzMSA0MDcgLTEzMVE0MDMgLTEzMSAzOTcgLTEzMVQzODkgLTEzMFQzODIgLTEzMFQzNzIgLTEzMVEzNDEgLTEzMSAzNDEgLTExMVEzNDEgLTEwNyAzNDggLTgyVDM2MiAtMThUMzY5IDYyVjcwSDMxOVY2NlEzMTkgNTcgMzE0IDQ0VDI5NyAxNlQyNTcgLTEwVDE5MSAtMjFIMTgxJyxcbiAgICAweDI2NjE6ICc1NSA0OTBRNTUgNTU3IDcxIDYwNFQxMTQgNjc0VDE2NyA3MDZUMjIyIDcxNlEyNzkgNzE2IDMyMiA2ODRUMzg5IDYwNVEzOTEgNjEwIDM5NSA2MTdUNDE0IDY0M1Q0NDcgNjc3VDQ5NCA3MDRUNTU1IDcxNlE2NDIgNzE2IDY4MiA2NTJUNzIzIDQ5MFE3MjMgNDU1IDcxOCA0MjZUNjg0IDM0MlQ2MDIgMjI3UTU3MyAxOTYgNTM3IDE2MVQ0ODUgMTEwVDQ0OSA2M1Q0MTIgLThRNDA4IC0yMiA0MDQgLTI3VDM4OSAtMzNRMzgyIC0zMyAzNzkgLTMxVDM3MiAtMjNUMzY2IC04VDM1NSAxOFQzMzUgNTRRMzE5IDgxIDI5OCAxMDRUMjM5IDE2M1QxNzYgMjI3UTEwMiAzMTAgNzkgMzcxVDU1IDQ5MFpNMTk4IDY3NFExNDMgNjY0IDExOSA2MTNUOTUgNDkxUTk1IDQxNSAxMzcgMzQ2UTE3NCAyODIgMjY1IDE5NFQzODQgNDhMMzg5IDM5UTM5MSA0MiAzOTcgNTRUNDA2IDcxVDQxNSA4NlQ0MjcgMTA0VDQ0MiAxMjJUNDY0IDE0NlQ0OTEgMTcyUTU3MSAyNDkgNjEzIDMwM1E2ODMgMzk2IDY4MyA0ODdRNjgzIDU4MSA2NDkgNjMxUTYxMyA2NzYgNTU2IDY3NlE0OTUgNjc2IDQ1NyA2MzRUNDEwIDUzOFE0MDcgNTE0IDM5MCA1MTRRMzg2IDUxNCAzODAgNTE3UTM3MiA1MjAgMzY5IDUzNlQzNTUgNTgxVDMxOSA2MzVRMjc3IDY3NSAyMjMgNjc1SDIxN0gyMDhMMjA0IDY3NFEyMDAgNjc0IDE5OCA2NzQnLFxuICAgIDB4MjY2MjogJzM3MCA3MTRRMzcwIDcxNyAzNzUgNzIyVDM4OCA3MjdRMzk4IDcyNyA0MDMgNzIxVDQxNyA2OTdRNDIwIDY5MiA0MjEgNjg5UTUzNiA0NjUgNzA5IDMwNFE3MjMgMjkxIDcyMyAyODJUNzA5IDI2MFE1MjkgOTMgNDA2IC0xNTNRNDAyIC0xNjIgMzkwIC0xNjJIMzg5UTM3OSAtMTYyIDM3NiAtMTU4VDM1NyAtMTI1UTI0NyA4OSA4OSAyNDFMNjQgMjY1UTU1IDI3MiA1NSAyODJRNTUgMjg3IDU3IDI5MFQ2NCAzMDBUNzcgMzEyVDk4IDMzMVQxMjcgMzYxUTE5NyA0MzUgMjU4IDUyM1QzNDQgNjYzTDM3MCA3MTRaTTY1NSAyOTlRNTY4IDM4NCA1MDggNDcwVDM4OSA2NjJMMzc2IDYzOFEzNjIgNjEzIDM0MSA1NzdUMjg5IDQ5N1QyMTUgMzk5VDEyMyAyOTlMMTA1IDI4MkwxMjMgMjY1UTIxMCAxODAgMjcwIDk0VDM4OSAtOThMNDAyIC03NFE0MTYgLTQ5IDQzNyAtMTNUNDg5IDY3VDU2MyAxNjVUNjU1IDI2NUw2NzMgMjgyTDY1NSAyOTknLFxuICAgIDB4MjY2MzogJzIxMyA1MzJRMjEzIDYxNSAyNjUgNjcwVDM4OSA3MjZRNDYxIDcyNiA1MTMgNjcxVDU2NSA1MzJRNTY1IDUxMSA1NjIgNDkyVDU1MyA0NThUNTQxIDQzMlQ1MjYgNDA5VDUxMiAzOTNUNDk4IDM3OUw0OTAgMzcxTDUxMSAzMjZRNTEyIDMyNiA1MTYgMzMwVDUyOCAzNDFUNTQ2IDM1M1Q1NzIgMzYzVDYwNiAzNjhRNjY0IDM2OCA3MDcgMzE1VDc1MCAxNzRRNzUwIDg3IDY5OSAzM1Q1NzkgLTIyUTU2NyAtMjIgNTUzIC0yMFQ1MTcgLTEwVDQ3OSAxNlQ0NTkgNjNWNzBINDA5VjYyUTQwOSAyMiA0MTYgLTE3VDQzMCAtODJUNDM3IC0xMTJRNDM3IC0xMzEgNDA3IC0xMzFRNDAzIC0xMzEgMzk3IC0xMzFUMzg5IC0xMzBUMzgyIC0xMzBUMzcyIC0xMzFRMzQxIC0xMzEgMzQxIC0xMTFRMzQxIC0xMDcgMzQ4IC04MlQzNjIgLTE4VDM2OSA2MlY3MEgzMTlWNjNRMzE1IDI1IDI4MSAyVDE5NyAtMjJRMTMyIC0yMiA4MCAzMlQyOCAxNzRRMjggMjU1IDY5IDMxMVQxNzUgMzY4UTE5MiAzNjggMjA3IDM2NFQyMzIgMzUzVDI1MCAzNDFUMjYyIDMzMVQyNjcgMzI2TDI4OCAzNzFMMjgwIDM3OFEyNzIgMzg1IDI2NyAzOTFUMjUzIDQwN1QyMzggNDMwVDIyNiA0NTdUMjE3IDQ5MlQyMTMgNTMyJyxcbiAgICAweDI2NkQ6ICcyMDAgNDY3UTI1NCA0NjcgMjkzIDQyOFQzMzIgMzIxUTMzMiAxNDcgMTA0IC0xMUw4OCAtMjJINzVRNjIgLTIyIDU2IC0xNkw1NSAzNjJWNjQ3UTU1IDc0MyA2MCA3NDhRNjMgNzUwIDc2IDc1MEg4M1E4NyA3NTAgOTUgNzQ0VjQzNEwxMDQgNDQwUTE0NCA0NjcgMjAwIDQ2N1pNMjM3IDMyMlEyMzcgMzYwIDIyNSAzODhUMTgzIDQxN1ExNTggNDE3IDEzNCA0MDdUMTAxIDM3OFE5NiAzNzAgOTYgMzQ5VDk1IDE5N1YzNFExNTIgOTEgMTk0IDE2N1QyMzcgMzIyJyxcbiAgICAweDI2NkU6ICc2NSA3MjFRNzggNzM0IDk0IDczNFExMDAgNzM0IDEwNCA3MjdWNDQ0TDExNiA0NDlRMTI5IDQ1NCAxNTcgNDY1VDIwOCA0ODZRMzEzIDUyNyAzMTQgNTI3UTMxOCA1MjcgMzI0IDUyMVYtMjEwUTMwNiAtMjIzIDI5NCAtMjIzUTI4OSAtMjIzIDI4NCAtMjE2Vi0xM0wyNzAgLTE4UTI1NyAtMjQgMjMxIC0zNFQxODAgLTU0UTc3IC05NiA3NCAtOTZUNjUgLTkwVjcyMVpNMTA0IDEzUTI4MiA4NCAyODMgODVRMjg0IDg1IDI4NCAyNTJRMjg0IDQxOCAyODMgNDE4TDIzMCAzOTZMMTQwIDM2MEwxMDQgMzQ2VjEzJyxcbiAgICAweDI2NkY6ICcxMDEgLTIyM1E5NCAtMjIzIDkzIC0yMTdUOTEgLTE4OFYtMTUxUTkxIC04OCA5MCAtODhRODcgLTg4IDgwIC05MlQ2OCAtOTZRNjIgLTk2IDU2IC05MEw1NSAtNTBWLTIyUTU1IC04IDU4IC00VDc4IDVMOTEgMTBWMTc3UTkxIDM0MyA5MCAzNDNRODcgMzQzIDgwIDMzOVQ2OCAzMzVRNjIgMzM1IDU2IDM0MUw1NSAzODFWNDA5UTU1IDQyMyA1OCA0MjdUNzggNDM2TDkxIDQ0MVY1NDNWNjE2UTkxIDY0MyA5MyA2NDhUMTA2IDY1NlExMTkgNjYyIDEyNiA2NTlRMTMwIDY1NyAxMzAgNjQ1VDEzMSA1NTRWNDU2TDI1NyA1MDNWNjA3TDI1OCA3MTBMMjYwIDcxMlEyNjEgNzE1IDI3MiA3MTlUMjg2IDcyM1EyOTMgNzIzIDI5NSA3MTVUMjk3IDY3MVY2MTdRMjk3IDUxOSAyOTggNTE5UTMwMSA1MTkgMzA3IDUyMlQzMTkgNTI2UTMyNyA1MjYgMzMzIDUyMVY0MzdMMzMwIDQzNVEzMjggNDMyIDMxMiA0MjdMMjk3IDQyMVYyNTRRMjk3IDg4IDI5OCA4OFEzMDEgODggMzA3IDkxVDMxOSA5NVEzMjcgOTUgMzMzIDkwVjZMMzMwIDRRMzI4IDEgMzEyIC00TDI5NyAtMTBWLTc4Vi0xMjJRMjk3IC0xNDUgMjk1IC0xNDlUMjgyIC0xNTZRMjc0IC0xNjAgMjY4IC0xNjBRMjU3IC0xNjAgMjU3IC0xMzBWLTg5Vi0yNUwxMzEgLTcyVi0yMTBRMTIzIC0yMTUgMTE2IC0yMThUMTA0IC0yMjJMMTAxIC0yMjNaTTI1NyA3MlY0MDZMMTMxIDM1OVYyNUwyNTcgNzInLFxuICAgIDB4MjcxMzogJzg0IDIzMVE4NCAyNDQgMTE0IDI2NFQxNzAgMjg1UTE3NiAyODUgMTgzIDI3NFQyMjQgMjA1UTI2NyAxMjkgMjY4IDEyOVEyNzEgMTQxIDI3OSAxNjNUMzE4IDI1MFQzODkgMzc4VDUwMiA1MjNUNjYyIDY3M1E3MDIgNzA2IDczMiA3MDZINzM0UTc0OSA3MDYgNzQ5IDY5NVE3NDkgNjgyIDczMCA2NjZUNjYwIDYwN1Q1NTkgNTA1UTM4NyAyOTkgMzI4IDI5UTMyNCAwIDI5NSAtMTdUMjQ1IC0zNEgyNDFRMjM0IC0zNCAyMjUgLTIxVDE4NSA0NlExNjYgNzkgMTU0IDEwMVE4NCAyMjMgODQgMjMxJyxcbiAgICAweDI3MjA6ICcxOTUgNzAyVDE5NSA3MDZUMjAxIDcxNkg2MzJRNjM4IDcxMCA2MzggNzA2VDYzNiA3MDBUNjIxIDY5MFE0MzYgNTgxIDQyNyAzNzRWMzU3SDQzMFE1NTQgMzU3IDY0NSA0MjFRNjgyIDQ0NyA3MTEgNDgzVDc1NSA1NDJUNzcwIDU2N1E3NzUgNTcyIDc4NiA1NjNWMTMxUTc3NyAxMjUgNzc0IDEyNVQ3NjIgMTM5UTcwOSAyMjggNjQyIDI3NFQ0ODIgMzMzUTQ1MiAzMzcgNDMwIDMzN0g0MjdWMzIwUTQzMCAyNzkgNDM3IDI0N1Q0NjIgMTcwVDUyMSA4MlQ2MjEgNFE2MzAgLTIgNjMzIC00VDYzNyAtN1Q2MzggLTEyUTYzOCAtMTYgNjMyIC0yMkgyMDFRMTk1IC0xNiAxOTUgLTEyVDE5NyAtNlQyMTIgNFEzOTcgMTEzIDQwNiAzMjBWMzM3SDQwM1EyNzkgMzM3IDE4OCAyNzNRMTUxIDI0NyAxMjIgMjExVDc4IDE1MlQ2MyAxMjdRNTggMTIyIDQ4IDEzMVY1NjNRNTQgNTY5IDU5IDU2OVE2MiA1NjkgNzEgNTU1UTEyNCA0NjYgMTkxIDQyMFQzNTEgMzYxUTM4MSAzNTcgNDAzIDM1N0g0MDZWMzc0UTQwMyA0MTUgMzk2IDQ0N1QzNzEgNTI1VDMxMiA2MTNUMjEyIDY5MFExOTkgNjk3IDE5NyA2OTknLFxuICAgIDB4Mjc1ODogJzEzOSAtMjQ5SDEzN1ExMjUgLTI0OSAxMTkgLTIzNVYyNTFMMTIwIDczN1ExMzAgNzUwIDEzOSA3NTBRMTUyIDc1MCAxNTkgNzM1Vi0yMzVRMTUxIC0yNDkgMTQxIC0yNDlIMTM5JyxcbiAgICAweDI3RTg6ICczMzMgLTIzMlEzMzIgLTIzOSAzMjcgLTI0NFQzMTMgLTI1MFEzMDMgLTI1MCAyOTYgLTI0MFEyOTMgLTIzMyAyMDIgNlQxMTAgMjUwVDIwMSA0OTRUMjk2IDc0MFEyOTkgNzQ1IDMwNiA3NDlMMzA5IDc1MFEzMTIgNzUwIDMxMyA3NTBRMzMxIDc1MCAzMzMgNzMyUTMzMyA3MjcgMjQzIDQ4OVExNTIgMjUyIDE1MiAyNTBUMjQzIDExUTMzMyAtMjI3IDMzMyAtMjMyJyxcbiAgICAweDI3RTk6ICc1NSA3MzJRNTYgNzM5IDYxIDc0NFQ3NSA3NTBRODUgNzUwIDkyIDc0MFE5NSA3MzMgMTg2IDQ5NFQyNzggMjUwVDE4NyA2VDkyIC0yNDBRODUgLTI1MCA3NSAtMjUwUTY3IC0yNTAgNjIgLTI0NVQ1NSAtMjMyUTU1IC0yMjcgMTQ1IDExUTIzNiAyNDggMjM2IDI1MFQxNDUgNDg5UTU1IDcyNyA1NSA3MzInLFxuICAgIDB4MjdFRTogJzM1NyA3NDFWNzI2UTM1NyA3MjAgMzQ5IDcxNVEyNjEgNjU1IDI0MiA1MzlRMjQwIDUyNiAyNDAgMzk0VjMzMVEyNDAgMjU5IDIzOSAyNTBRMjQwIDI0MiAyNDAgMTE5VjQ5UTI0MCAtNDIgMjU0IC04NVEyNjMgLTExMSAyNzUgLTEzNFQzMDEgLTE3MlQzMjYgLTE5N1QzNDYgLTIxM1QzNTYgLTIyMVQzNTcgLTIzMlYtMjQxTDM1NCAtMjQ0SDMzNFEyNjQgLTIwOSAyMjIgLTE0NlQxNzQgLTEyUTE3MyAtNiAxNzMgOTVRMTczIDEzNCAxNzMgMTkxVDE3NCAyNTBRMTczIDI2MCAxNzMgMzc2VjQ2MFExNzMgNTE1IDE3OCA1NDVUMjAxIDYxMVEyNDQgNjk1IDMyNyA3NDFMMzM0IDc0NEgzNTRMMzU3IDc0MScsXG4gICAgMHgyN0VGOiAnNzggNzQ0UTE1MyA3MDYgMTk2IDY0MFQyMzkgNDkyVjM3NlEyMzkgMzM5IDIzOSAzMTFUMjM4IDI2OVQyMzggMjUyUTI0MCAyMzYgMjQwIDEyNFY0MFEyNDAgLTE4IDIzMyAtNTNUMjAyIC0xMzBRMTU2IC0yMDYgNzkgLTI0NEg3MEg2NVE1OCAtMjQ0IDU3IC0yNDJUNTYgLTIzMVQ1NyAtMjIwVDY0IC0yMTVRMTUzIC0xNTQgMTcwIC0zOVExNzMgLTE4IDE3NCAxMTlWMjQ3UTE3MyAyNDkgMTczIDM4MlY0NTFRMTczIDU0MiAxNTkgNTg1UTE0NSA2MjYgMTIwIDY1OFQ3NSA3MDZUNTYgNzIzVjczMVE1NiA3NDEgNTcgNzQyVDY2IDc0NEg3OCcsXG4gICAgMHgyN0Y1OiAnMTY1IDI3MEgxNTEwUTE1MjUgMjYyIDE1MjUgMjUwVDE1MTAgMjMwSDE2NVExNjcgMjI4IDE4MiAyMTZUMjExIDE4OVQyNDQgMTUyVDI3NyA5NlQzMDMgMjVRMzA4IDcgMzA4IDBRMzA4IC0xMSAyODggLTExUTI4MSAtMTEgMjc4IC0xMVQyNzIgLTdUMjY3IDJUMjYzIDIxUTI0NSA5NCAxOTUgMTUxVDczIDIzNlE1OCAyNDIgNTUgMjQ3UTU1IDI1NCA1OSAyNTdUNzMgMjY0UTEyMSAyODMgMTU4IDMxNFQyMTUgMzc1VDI0NyA0MzRUMjY0IDQ4MEwyNjcgNDk3UTI2OSA1MDMgMjcwIDUwNVQyNzUgNTA5VDI4OCA1MTFRMzA4IDUxMSAzMDggNTAwUTMwOCA0OTMgMzAzIDQ3NVEyOTMgNDM4IDI3OCA0MDZUMjQ2IDM1MlQyMTUgMzE1VDE4NSAyODdUMTY1IDI3MCcsXG4gICAgMHgyN0Y2OiAnODQgMjM3VDg0IDI1MFQ5OCAyNzBIMTQ0NFExMzI4IDM1NyAxMzAxIDQ5M1ExMzAxIDQ5NCAxMzAxIDQ5NlQxMzAwIDQ5OVExMzAwIDUxMSAxMzE3IDUxMUgxMzIwUTEzMjkgNTExIDEzMzIgNTEwVDEzMzggNTA2VDEzNDEgNDk3VDEzNDQgNDgxVDEzNTIgNDU2UTEzNzQgMzg5IDE0MjUgMzM2VDE1NDQgMjYxUTE1NTMgMjU4IDE1NTMgMjUwUTE1NTMgMjQ0IDE1NDggMjQxVDE1MjQgMjMxVDE0ODYgMjEyUTE0NDUgMTg2IDE0MTUgMTUyVDEzNzAgODVUMTM0OSAzNVQxMzQxIDRRMTMzOSAtNiAxMzM2IC04VDEzMjAgLTExUTEzMDAgLTExIDEzMDAgMFExMzAwIDcgMTMwNSAyNVExMzM3IDE1MSAxNDQ0IDIzMEg5OFE4NCAyMzcgODQgMjUwJyxcbiAgICAweDI3Rjc6ICcxNjUgMjcwSDE2OTRRMTU3OCAzNTcgMTU1MSA0OTNRMTU1MSA0OTQgMTU1MSA0OTZUMTU1MCA0OTlRMTU1MCA1MTEgMTU2NyA1MTFIMTU3MFExNTc5IDUxMSAxNTgyIDUxMFQxNTg4IDUwNlQxNTkxIDQ5N1QxNTk0IDQ4MVQxNjAyIDQ1NlExNjI0IDM4OSAxNjc1IDMzNlQxNzk0IDI2MVExODAzIDI1OCAxODAzIDI1MFExODAzIDI0NCAxNzk4IDI0MVQxNzc0IDIzMVQxNzM2IDIxMlExNjk1IDE4NiAxNjY1IDE1MlQxNjIwIDg1VDE1OTkgMzVUMTU5MSA0UTE1ODkgLTYgMTU4NiAtOFQxNTcwIC0xMVExNTUwIC0xMSAxNTUwIDBRMTU1MCA3IDE1NTUgMjVRMTU4NyAxNTEgMTY5NCAyMzBIMTY1UTE2NyAyMjggMTgyIDIxNlQyMTEgMTg5VDI0NCAxNTJUMjc3IDk2VDMwMyAyNVEzMDggNyAzMDggMFEzMDggLTExIDI4OCAtMTFRMjgxIC0xMSAyNzggLTExVDI3MiAtN1QyNjcgMlQyNjMgMjFRMjQ1IDk0IDE5NSAxNTFUNzMgMjM2UTU4IDI0MiA1NSAyNDdRNTUgMjU0IDU5IDI1N1Q3MyAyNjRRMTIxIDI4MyAxNTggMzE0VDIxNSAzNzVUMjQ3IDQzNFQyNjQgNDgwTDI2NyA0OTdRMjY5IDUwMyAyNzAgNTA1VDI3NSA1MDlUMjg4IDUxMVEzMDggNTExIDMwOCA1MDBRMzA4IDQ5MyAzMDMgNDc1UTI5MyA0MzggMjc4IDQwNlQyNDYgMzUyVDIxNSAzMTVUMTg1IDI4N1QxNjUgMjcwJyxcbiAgICAweDI3Rjg6ICcyNzQgMTczSDE1MzlRMTU0MCAxNzIgMTU0MiAxNzFUMTU0NSAxNjlUMTU0NyAxNjdUMTU1MCAxNjRUMTU1MSAxNjJUMTU1MiAxNThUMTU1MyAxNTNRMTU1MyAxNDAgMTUzOCAxMzNIMzE4TDMyOCAxMjNRMzc5IDY5IDQxNCAwUTQxOSAtMTMgNDE5IC0xN1E0MTkgLTI0IDM5OSAtMjRRMzg4IC0yNCAzODUgLTIzVDM3NyAtMTJRMzMyIDc3IDI1MyAxNDRUNzIgMjM3UTYyIDI0MCA1OSAyNDJUNTYgMjUwVDU5IDI1N1Q3MCAyNjJUODkgMjY4VDExOSAyNzhUMTYwIDI5NlEzMDMgMzY2IDM3NyA1MTJRMzgyIDUyMiAzODUgNTIzVDQwMSA1MjVRNDE5IDUyNCA0MTkgNTE1UTQxOSA1MTAgNDE0IDUwMFEzNzkgNDMxIDMyOCAzNzdMMzE4IDM2N0gxNTM4UTE1NTMgMzU5IDE1NTMgMzQ3UTE1NTMgMzM2IDE1MzkgMzI4TDEyMjEgMzI3SDkwM0w5MDAgMzI4TDYwMiAzMjdIMjc0TDI2NCAzMTlRMjI1IDI4OSAxNDcgMjUwUTE0OCAyNDkgMTY1IDI0MVQyMTAgMjE3VDI2NCAxODFMMjc0IDE3MycsXG4gICAgMHgyN0Y5OiAnMTIxOCA1MTRRMTIxOCA1MjUgMTIzNCA1MjVRMTIzOSA1MjUgMTI0MiA1MjVUMTI0NyA1MjVUMTI1MSA1MjRUMTI1MyA1MjNUMTI1NSA1MjBUMTI1NyA1MTdUMTI2MCA1MTJRMTI5NyA0MzggMTM1OCAzODFUMTQ2OSAzMDBUMTU2NSAyNjNRMTU4MiAyNTggMTU4MiAyNTBUMTU3MyAyMzlUMTUzNiAyMjhUMTQ3OCAyMDRRMTMzNCAxMzQgMTI2MCAtMTJRMTI1NiAtMjEgMTI1MyAtMjJUMTIzOCAtMjRRMTIxOCAtMjQgMTIxOCAtMTdRMTIxOCAtMTMgMTIyMyAwUTEyNTggNjkgMTMwOSAxMjNMMTMxOSAxMzNINzBRNTYgMTQwIDU2IDE1M1E1NiAxNjggNzIgMTczSDEzNjNMMTM3MyAxODFRMTQxMiAyMTEgMTQ5MCAyNTBRMTQ4OSAyNTEgMTQ3MiAyNTlUMTQyNyAyODNUMTM3MyAzMTlMMTM2MyAzMjdINzEwTDcwNyAzMjhMMzkwIDMyN0g3MlE1NiAzMzIgNTYgMzQ3UTU2IDM2MCA3MCAzNjdIMTMxOUwxMzA5IDM3N1ExMjc2IDQxMiAxMjQ3IDQ1OFQxMjE4IDUxNCcsXG4gICAgMHgyN0ZBOiAnMTQzOCA1MTRRMTQzOCA1MjUgMTQ1NCA1MjVRMTQ1OSA1MjUgMTQ2MiA1MjVUMTQ2NyA1MjVUMTQ3MSA1MjRUMTQ3MyA1MjNUMTQ3NSA1MjBUMTQ3NyA1MTdUMTQ4MCA1MTJRMTUxNyA0MzggMTU3OCAzODFUMTY4OSAzMDBUMTc4NSAyNjNRMTgwMiAyNTggMTgwMiAyNTBUMTc5MyAyMzlUMTc1NiAyMjhUMTY5OCAyMDRRMTU1NCAxMzQgMTQ4MCAtMTJRMTQ3NiAtMjEgMTQ3MyAtMjJUMTQ1OCAtMjRRMTQzOCAtMjQgMTQzOCAtMTdRMTQzOCAtMTMgMTQ0MyAwUTE0NzggNjkgMTUyOSAxMjNMMTUzOSAxMzNIMzE4TDMyOCAxMjNRMzc5IDY5IDQxNCAwUTQxOSAtMTMgNDE5IC0xN1E0MTkgLTI0IDM5OSAtMjRRMzg4IC0yNCAzODUgLTIzVDM3NyAtMTJRMzMyIDc3IDI1MyAxNDRUNzIgMjM3UTYyIDI0MCA1OSAyNDJUNTYgMjUwVDU5IDI1N1Q3MCAyNjJUODkgMjY4VDExOSAyNzhUMTYwIDI5NlEzMDMgMzY2IDM3NyA1MTJRMzgyIDUyMiAzODUgNTIzVDQwMSA1MjVRNDE5IDUyNCA0MTkgNTE1UTQxOSA1MTAgNDE0IDUwMFEzNzkgNDMxIDMyOCAzNzdMMzE4IDM2N0gxNTM5TDE1MjkgMzc3UTE0OTYgNDEyIDE0NjcgNDU4VDE0MzggNTE0Wk0yNzQgMTczSDE1ODNMMTU5MyAxODFRMTYzMiAyMTEgMTcxMCAyNTBRMTcwOSAyNTEgMTY5MiAyNTlUMTY0NyAyODNUMTU5MyAzMTlMMTU4MyAzMjdIOTMwTDkyNyAzMjhMNjAyIDMyN0gyNzRMMjY0IDMxOVEyMjUgMjg5IDE0NyAyNTBRMTQ4IDI0OSAxNjUgMjQxVDIxMCAyMTdUMjY0IDE4MUwyNzQgMTczJyxcbiAgICAweDI3RkM6ICc5NSAxNTVWMTA5UTk1IDgzIDkyIDczVDc1IDYzUTYxIDYzIDU4IDc0VDU0IDEzMFE1NCAxNDAgNTQgMTgwVDU1IDI1MFE1NSA0MjEgNTcgNDI1UTYxIDQzNyA3NSA0MzdRODggNDM3IDkxIDQyOFQ5NSAzOTNWMzQ1VjI3MEgxNDQ0UTEzMjggMzU3IDEzMDEgNDkzUTEzMDEgNDk0IDEzMDEgNDk2VDEzMDAgNDk5UTEzMDAgNTExIDEzMTcgNTExSDEzMjBRMTMyOSA1MTEgMTMzMiA1MTBUMTMzOCA1MDZUMTM0MSA0OTdUMTM0NCA0ODFUMTM1MiA0NTZRMTM3NCAzODkgMTQyNSAzMzZUMTU0NCAyNjFRMTU1MyAyNTggMTU1MyAyNTBRMTU1MyAyNDQgMTU0OCAyNDFUMTUyNCAyMzFUMTQ4NiAyMTJRMTQ0NSAxODYgMTQxNSAxNTJUMTM3MCA4NVQxMzQ5IDM1VDEzNDEgNFExMzM5IC02IDEzMzYgLThUMTMyMCAtMTFRMTMwMCAtMTEgMTMwMCAwUTEzMDAgNyAxMzA1IDI1UTEzMzcgMTUxIDE0NDQgMjMwSDk1VjE1NScsXG4gICAgMHgyOUVCOiAnMzE4IDcwOVEzMjUgNzE2IDMzMiA3MTZRMzQwIDcxNiAzNDQgNzEzVDQ3NCA1MTFRNjExIDI5OCA2MTEgMjkyUTYxMSAyODUgNTI2IDE1MlE0OTQgMTAzIDQ3NCA3MlEzNDcgLTEyOCAzNDQgLTEzMFEzNDAgLTEzMiAzMzMgLTEzMlQzMjIgLTEzMFEzMTkgLTEyOCAyNTcgLTMxVDEzMSAxNjlUNjAgMjc4UTU2IDI4NSA1NiAyOTJRNTYgMjk4IDYwIDMwNVE3MyAzMjYgMTk0IDUxNlQzMTggNzA5JyxcbiAgICAweDI5Rjg6ICcxNjYgLTIxNVQxNTkgLTIxNVQxNDcgLTIxMlQxNDEgLTIwNFQxMzkgLTE5N1ExMzkgLTE5MCAxNDQgLTE4M1ExNTcgLTE1NyAzNzggMjc0VDYwMiA3MDdRNjA1IDcxNiA2MTggNzE2UTYyNSA3MTYgNjMwIDcxMlQ2MzYgNzAzVDYzOCA2OTZRNjM4IDY5MSA0MDYgMjQxVDE3MCAtMjEyUTE2NiAtMjE1IDE1OSAtMjE1JyxcbiAgICAweDJBMDA6ICc1NTUgLTI1MFE0MjAgLTI1MCAzMDYgLTE4NVQxMjQgLTRUNTYgMjUwUTU2IDQ1MyAxOTMgNTk1VDUyNiA3NDlRNTI4IDc1MCA1MzkgNzUwUTU1NCA3NTAgNTYyIDc0OVE2ODggNzQ5IDgwMCA2ODdUOTgzIDUwOFQxMDU0IDI1MFExMDU0IDExMiA5ODcgLTNUODA2IC0xODRUNTU1IC0yNTBaTTU1NSAtMTY1UTY3MiAtMTY1IDc2NyAtMTA4VDkxNiA0NFQ5NzAgMjUwUTk3MCA0MTggODYxIDUzMlQ2MDAgNjY0UTU5MSA2NjUgNTQ4IDY2NVE0NDYgNjY1IDM1MyA2MTRUMjAwIDQ2NlQxNDAgMjUwVjI0M1ExNDAgODggMjQ4IC0zMFEyNjIgLTQ2IDI4MCAtNjJUMzM4IC0xMDVUNDM0IC0xNDhUNTU1IC0xNjVaTTQ3OCAyNTBRNDc4IDI4OCA1MDMgMzA3VDU1MSAzMjZRNTg2IDMyNiA2MDkgMzA1VDYzMiAyNTBRNjMyIDIxNyA2MTAgMTk2VDU1NSAxNzRUNTAwIDE5NlQ0NzggMjUwJyxcbiAgICAweDJBMDE6ICc1NTUgLTI1MFE0MjAgLTI1MCAzMDYgLTE4NVQxMjQgLTRUNTYgMjUwUTU2IDQ1MyAxOTMgNTk1VDUyNiA3NDlRNTI4IDc1MCA1MzkgNzUwUTU1NCA3NTAgNTYyIDc0OVE2ODggNzQ5IDgwMCA2ODdUOTgzIDUwOFQxMDU0IDI1MFExMDU0IDExMiA5ODcgLTNUODA2IC0xODRUNTU1IC0yNTBaTTUxMyA0NzhRNTEzIDY2NCA1MTIgNjY0UTUwNCA2NjQgNDgxIDY2MFQ0MDYgNjM3VDMxMyA1ODhRMjgxIDU2NCAyNTUgNTM3VDIxMSA0ODNUMTgxIDQzMVQxNjEgMzgyVDE1MCAzNDJUMTQ0IDMxMFQxNDEgMjkySDUxM1Y0NzhaTTc5OCA1ODhRNzU4IDYxNiA3MTEgNjM0VDYzOSA2NThUNjAyIDY2M0w1OTcgNjY0VjI5Mkg5NjlROTY5IDI5MyA5NjcgMzA5VDk2MCAzNDFUOTQ5IDM4MVQ5MzAgNDMwVDkwMCA0ODJUODU2IDUzN1Q3OTggNTg4Wk01MTMgLTE2NFYyMDhIMTQxUTE0MiAyMDUgMTQ0IDE4OVQxNDkgMTYwVDE1OCAxMjVUMTczIDgzVDE5NiAzOVQyMjkgLTlRMjQ5IC0zNCAyNzMgLTU1VDMxOCAtOTJUMzYzIC0xMTlUNDA1IC0xMzhUNDQ0IC0xNTBUNDc1IC0xNThUNDk5IC0xNjJUNTEzIC0xNjRaTTc3NSAtMTAzUTgwMSAtODcgODIzIC02OFQ4NjMgLTMwVDg5NCAxMFQ5MTkgNDlUOTM3IDg4VDk1MCAxMjNUOTU5IDE1NFQ5NjQgMTgwVDk2OCAxOThMOTY5IDIwOEg1OTdWLTE2NFE1OTkgLTE2MyA2MTYgLTE2MVQ2NDcgLTE1NVQ2ODMgLTE0NVQ3MjggLTEyOFQ3NzUgLTEwMycsXG4gICAgMHgyQTAyOiAnNTU1IC0yNTBRNDIwIC0yNTAgMzA2IC0xODVUMTI0IC00VDU2IDI1MFE1NiA0NTMgMTkzIDU5NVQ1MjYgNzQ5UTUyOCA3NTAgNTM5IDc1MFE1NTQgNzUwIDU2MiA3NDlRNjg4IDc0OSA4MDAgNjg3VDk4MyA1MDhUMTA1NCAyNTBRMTA1NCAxMTIgOTg3IC0zVDgwNiAtMTg0VDU1NSAtMjUwWk02MDAgNjY0UTU5MSA2NjUgNTQ4IDY2NVE0MTQgNjY1IDMwNiA1ODNMMjkyIDU3M0w0MjMgNDQxTDU1NSAzMTBMNjg3IDQ0MUw4MTggNTczTDgwNCA1ODNRNzE0IDY1MCA2MDAgNjY0Wk0zNjQgMTE4TDQ5NSAyNTBMMzY0IDM4MkwyMzIgNTEzTDIyMyA1MDBRMTQwIDM5MSAxNDAgMjUwUTE0MCAxMDcgMjIzIDBMMjMyIC0xM0wzNjQgMTE4Wk05NzAgMjUwUTk3MCAzODkgODg3IDUwMUw4NzggNTEyUTg3OCA1MTMgODYxIDQ5NlQ4MTIgNDQ3VDc0NiAzODFMNjE1IDI1MEw3NDYgMTE4TDg3OCAtMTNMODg3IDBROTcwIDEwOSA5NzAgMjUwWk02ODcgNTlMNTU1IDE5MEw0MjMgNTlMMjkyIC03M0wzMDYgLTgzUTQxNiAtMTY2IDU1NSAtMTY2VDgwNCAtODNMODE4IC03M0w2ODcgNTknLFxuICAgIDB4MkEwNDogJzk2IDc1MFExMDMgNzUwIDEwOSA3NDhUMTIwIDc0NFQxMjcgNzM3VDEzMyA3MzBUMTM3IDcyM1QxMzkgNzE4VjM5NUwxNDAgNzNMMTQyIDYwUTE1OSAtNDMgMjM3IC0xMDRUNDE2IC0xNjZRNTIxIC0xNjYgNTk3IC0xMDNUNjkwIDYwTDY5MiA3M0w2OTQgNzE4UTcwOCA3NDkgNzM1IDc0OVE3NjUgNzQ5IDc3NSA3MjBRNzc3IDcxNCA3NzcgMzk4UTc3NyA3OCA3NzYgNzFRNzY2IC01MSA2ODAgLTE0MFE1NzEgLTI0OSA0MTYgLTI0OUg0MTFRMjYxIC0yNDkgMTUyIC0xNDBRNjYgLTUxIDU2IDcxUTU1IDc4IDU1IDM5OFE1NSA3MTQgNTcgNzIwUTYwIDczNCA3MCA3NDBRODAgNzUwIDk2IDc1MFpNMjIzIDI3NlEyMjMgMjgyIDIyNCAyODdUMjI3IDI5NlQyMzIgMzAyVDIzOCAzMDhUMjQzIDMxM1QyNTAgMzE2TDI1NCAzMTlIMzc0VjM3NlY0MDZRMzc0IDQzOCAzODIgNDU0VDQxOCA0NzBRNDQzIDQ2NyA0NTAgNDUzVDQ1OCA0MTBWMzc2VjMxOUg1NzlRNTgwIDMxOSA1ODMgMzE3VDU4OSAzMTNUNTk0IDMwOFQ2MDAgMzAyVDYwNCAyOTVUNjA4IDI4N1Q2MDkgMjc2UTYwOSAyNTMgNTg3IDI0MVE1NzcgMjM1IDUxMyAyMzVINDU4VjE3OFE0NTggMTc2IDQ1OCAxNjZUNDU5IDE0OFE0NTkgODQgNDE1IDg0UTQwMSA4NCAzOTAgOTNUMzc1IDExN1EzNzQgMTIwIDM3NCAxNzhWMjM1SDMxOVEzMTcgMjM1IDMwNyAyMzVUMjkwIDIzNFEyMjMgMjM0IDIyMyAyNzYnLFxuICAgIDB4MkEwNjogJzc3NyAtMjE3UTc2NiAtMjQ0IDc0NSAtMjQ5SDg4UTY0IC0yNDIgNTcgLTIyMFE1NSAtMjE0IDU1IDI1MFQ1NyA3MjBRNjAgNzM0IDcwIDc0MFE4MCA3NTAgOTYgNzUwUTEyNyA3NTAgMTM3IDcyMFExMzkgNzE0IDEzOSAyNzRWLTE2Nkg2OTNWMjc0UTY5MyA3MTQgNjk1IDcyMFE3MDUgNzQ5IDczNSA3NDlRNzY2IDc0OSA3NzUgNzE5UTc3NyA3MTMgNzc3IDI0OFYtMjE3JyxcbiAgICAweDJBMkY6ICc2MzAgMjlRNjMwIDkgNjA5IDlRNjA0IDkgNTg3IDI1VDQ5MyAxMThMMzg5IDIyMkwyODQgMTE3UTE3OCAxMyAxNzUgMTFRMTcxIDkgMTY4IDlRMTYwIDkgMTU0IDE1VDE0NyAyOVExNDcgMzYgMTYxIDUxVDI1NSAxNDZMMzU5IDI1MEwyNTUgMzU0UTE3NCA0MzUgMTYxIDQ0OVQxNDcgNDcxUTE0NyA0ODAgMTUzIDQ4NVQxNjggNDkwUTE3MyA0OTAgMTc1IDQ4OVExNzggNDg3IDI4NCAzODNMMzg5IDI3OEw0OTMgMzgyUTU3MCA0NTkgNTg3IDQ3NVQ2MDkgNDkxUTYzMCA0OTEgNjMwIDQ3MVE2MzAgNDY0IDYyMCA0NTNUNTIyIDM1NUw0MTggMjUwTDUyMiAxNDVRNjA2IDYxIDYxOCA0OFQ2MzAgMjknLFxuICAgIDB4MkEzRjogJzI4IDY2MFEyOCA2NzYgMzEgNjc5VDQ2IDY4M0g1MFE4NyA2ODEgMTgyIDY4MVEyMTcgNjgxIDI0NyA2ODFUMjk0IDY4MlQzMTUgNjgyUTMyMSA2ODIgMzIzIDY4MlQzMjggNjc5VDMzMSA2NzNUMzMyIDY2MFEzMzIgNjQzIDMyOCA2NDBUMzA0IDYzN1EyMzkgNjM3IDIzMSA2MjZRMjI5IDYyMCAyMjkgMzM0VjQ2SDUyMFYzMzRRNTIwIDYyMCA1MTggNjI2UTUxMCA2MzcgNDQ1IDYzN1E0MjYgNjM3IDQyMiA2NDBUNDE3IDY2MFE0MTcgNjc1IDQyMCA2NzhUNDMyIDY4Mkg0MzVRNDM3IDY4MiA0NjcgNjgyVDU2OSA2ODFUNjcxIDY4MVQ3MDMgNjgyUTcxNCA2ODIgNzE3IDY3OVQ3MjEgNjYwUTcyMSA2NDMgNzE3IDY0MFQ2OTMgNjM3UTYyOCA2MzcgNjIwIDYyNlE2MTkgNjIzIDYxOSAzNDJRNjE5IDYwIDYyMCA1N1E2MjggNDYgNjkzIDQ2UTcxNCA0NiA3MTcgNDNUNzIxIDIzUTcyMSA1IDcxNSAxUTcxMyAwIDM3NCAwUTM2IDAgMzQgMVEyOCA1IDI4IDIzUTI4IDQwIDMxIDQzVDU2IDQ2UTEyMSA0NiAxMjkgNTdRMTMxIDYzIDEzMSAzNDJRMTMxIDYyMCAxMjkgNjI2UTEyMSA2MzcgNTYgNjM3UTM1IDYzNyAzMiA2NDBUMjggNjYwJyxcbiAgICAweDJBNUU6ICc1NSA3OTVRNTYgODA2IDcwIDgxM0g1NDBRNTU0IDgwNiA1NTUgNzk1UTU1NSA3OTEgNTU0IDc4OFQ1NTIgNzgzVDU0OSA3NzlUNTQ2IDc3N1Q1NDIgNzc1VDUzOSA3NzNINzFRNzAgNzczIDY4IDc3NFQ2NSA3NzZUNjEgNzc5VDU4IDc4M1Q1NiA3ODhUNTUgNzk1Wk01NSA2MDFRNTYgNjEyIDcwIDYxOUg1NDBRNTU0IDYxMiA1NTUgNjAxUTU1NSA1OTcgNTU0IDU5NFQ1NTIgNTg5VDU0OSA1ODVUNTQ2IDU4M1Q1NDIgNTgxVDUzOSA1NzlINzFRNzAgNTc5IDY4IDU4MFQ2NSA1ODJUNjEgNTg1VDU4IDU4OVQ1NiA1OTRUNTUgNjAxWk03NSAtOTdRNjcgLTk3IDYxIC05MVQ1NSAtODFRNTUgLTcxIDE2OSAxNjZUMjg1IDQxMFEyOTUgNDI1IDMwNSA0MjVRMzExIDQyNSAzMTYgNDIyVDMyMyA0MTRMMzI1IDQxMFEzMjcgNDA0IDQ0MSAxNjdUNTU1IC04MVE1NTUgLTg1IDU0OSAtOTFUNTM1IC05N1Q1MjAgLTkwUTUxOSAtODkgNTA2IC02MVQ0NjMgMjdUNDExIDEzNkwzMDUgMzU4TDE5OSAxMzZRMTY3IDcxIDEyOSAtMTBROTggLTc1IDkyIC04NlQ3NSAtOTcnLFxuICAgIDB4MkE3RDogJzY3NCA2MzZRNjgyIDYzNiA2ODggNjMwVDY5NCA2MTVUNjg3IDYwMVE2ODYgNjAwIDQxNyA0NzJMMTUxIDM0NkwzOTkgMjI4UTY4NyA5MiA2OTEgODdRNjk0IDgxIDY5NCA3NlE2OTQgNTggNjc2IDU2SDY3MEwzODIgMTkyUTkyIDMyOSA5MCAzMzFRODMgMzM2IDgzIDM0OFE4NCAzNTkgOTYgMzY1UTEwNCAzNjkgMzgyIDUwMFQ2NjUgNjM0UTY2OSA2MzYgNjc0IDYzNlpNOTQgMTcwUTEwMiAxNzIgMTA0IDE3MlExMTAgMTcxIDI1NCAxMDNUNTM1IC0zMFQ2NzggLTk4UTY5NCAtMTA2IDY5NCAtMTE4UTY5NCAtMTM2IDY3NiAtMTM4SDY3MEwzODIgLTJROTIgMTM1IDkwIDEzN1E4MyAxNDIgODMgMTU0UTg0IDE2NCA5NCAxNzAnLFxuICAgIDB4MkE3RTogJzgzIDYxNlE4MyA2MjQgODkgNjMwVDk5IDYzNlExMDcgNjM2IDI1MyA1NjhUNTQzIDQzMVQ2ODcgMzYxUTY5NCAzNTYgNjk0IDM0NlQ2ODcgMzMxUTY4NSAzMjkgMzk1IDE5MkwxMDcgNTZIMTAxUTgzIDU4IDgzIDc2UTgzIDc3IDgzIDc5UTgyIDg2IDk4IDk1UTExNyAxMDUgMjQ4IDE2N1EzMjYgMjA0IDM3OCAyMjhMNjI2IDM0NkwzNjAgNDcyUTI5MSA1MDUgMjAwIDU0OFExMTIgNTg5IDk4IDU5N1Q4MyA2MTZaTTY3NCAxNzJRNjkyIDE3MiA2OTQgMTU0UTY5NCAxNDIgNjg3IDEzN1E2ODUgMTM1IDM5NSAtMkwxMDcgLTEzOEgxMDFRODMgLTEzNiA4MyAtMTE4UTgzIC0xMDYgOTYgLTEwMFExMDAgLTk4IDM4MCAzNVQ2NjUgMTcwVDY3NCAxNzInLFxuICAgIDB4MkE4NTogJzY2NyA3NjFRNjY5IDc2MiA2NzMgNzYyUTY4MiA3NjIgNjg4IDc1NlQ2OTQgNzQxUTY5NCA3MzEgNjg3IDcyN1E2ODQgNzI0IDQyMCA2MTNMMTU2IDUwMkw0MTYgMzkyUTQ3NiAzNjcgNTQ0IDMzOFQ2NDcgMjk1VDY4MiAyODBRNjk0IDI3NCA2OTQgMjYyUTY5NCAyNDQgNjc2IDI0MlE2NzAgMjQyIDUyNCAzMDNUMjM1IDQyNVQ5MCA0ODdRODMgNDkzIDgzIDUwMVE4MyA1MTQgOTQgNTE5UTk3IDUyMCAzNzggNjM5VDY2NyA3NjFaTTU1IC0yM1E1NSA0MyAxMDMgOTBUMjIzIDEzOFEyNjUgMTM4IDMxNiAxMTRRMzQyIDEwMCAzOTMgNjhMNDQzIDM2UTUwMiAwIDU1NCAwUTYwOSAwIDY1MCAzMlQ2OTQgMTA5UTY5NCAxMzggNzA4IDEzOFE3MTAgMTM4IDcxMyAxMzZUNzE5IDEyN1Q3MjIgMTA4UTcyMiAzNyA2NzMgLTlUNTU3IC01NlE1MTQgLTU2IDQ2OCAtMzVUMzg3IDEzVDMwOCA2MFQyMjMgODJRMTY3IDgyIDEyNyA1MFQ4MyAtMjdRODEgLTU2IDY5IC01NlE1NSAtNTYgNTUgLTIzWk01NSAtMjU3UTU1IC0xOTEgMTAzIC0xNDRUMjIzIC05NlEyNjUgLTk2IDMxNiAtMTIwUTM0MiAtMTM0IDM5MyAtMTY2TDQ0MyAtMTk4UTUwMiAtMjM0IDU1NCAtMjM0UTYwOSAtMjM0IDY1MCAtMjAyVDY5NCAtMTI1UTY5NCAtOTYgNzA4IC05NlE3MTAgLTk2IDcxMyAtOThUNzE5IC0xMDdUNzIyIC0xMjZRNzIyIC0xOTcgNjczIC0yNDNUNTU3IC0yOTBRNTE0IC0yOTAgNDY4IC0yNjlUMzg3IC0yMjFUMzA4IC0xNzRUMjIzIC0xNTJRMTY3IC0xNTIgMTI3IC0xODRUODMgLTI2MVE4MCAtMjkwIDY5IC0yOTBRNTUgLTI5MCA1NSAtMjU3JyxcbiAgICAweDJBODY6ICc5MCA3MjdRODMgNzM0IDgzIDc0M1E4MyA3NTEgODkgNzU2VDEwNCA3NjJRMTExIDc2MCAzOTYgNjQxUTY4NiA1MTggNjg3IDUxN1E2OTQgNTEyIDY5NCA1MDJUNjg3IDQ4N1E2ODYgNDg2IDU0MyA0MjVUMjUzIDMwM1QxMDEgMjQyUTgzIDI0NCA4MyAyNjJRODMgMjc0IDk1IDI4MFE5NiAyODAgMTMwIDI5NFQyMzIgMzM4VDM2MSAzOTJMNjIxIDUwMkwzNTcgNjEzUTkzIDcyNCA5MCA3MjdaTTU1IC0yM1E1NSA0MyAxMDMgOTBUMjIzIDEzOFEyNjUgMTM4IDMxNiAxMTRRMzQyIDEwMCAzOTMgNjhMNDQzIDM2UTUwMiAwIDU1NCAwUTYwOSAwIDY1MCAzMlQ2OTQgMTA5UTY5NCAxMzggNzA4IDEzOFE3MTAgMTM4IDcxMyAxMzZUNzE5IDEyN1Q3MjIgMTA4UTcyMiAzNyA2NzMgLTlUNTU3IC01NlE1MTQgLTU2IDQ2OCAtMzVUMzg3IDEzVDMwOCA2MFQyMjMgODJRMTY3IDgyIDEyNyA1MFQ4MyAtMjdRODEgLTU2IDY5IC01NlE1NSAtNTYgNTUgLTIzWk01NSAtMjU3UTU1IC0xOTEgMTAzIC0xNDRUMjIzIC05NlEyNjUgLTk2IDMxNiAtMTIwUTM0MiAtMTM0IDM5MyAtMTY2TDQ0MyAtMTk4UTUwMiAtMjM0IDU1NCAtMjM0UTYwOSAtMjM0IDY1MCAtMjAyVDY5NCAtMTI1UTY5NCAtOTYgNzA4IC05NlE3MTAgLTk2IDcxMyAtOThUNzE5IC0xMDdUNzIyIC0xMjZRNzIyIC0xOTcgNjczIC0yNDNUNTU3IC0yOTBRNTE0IC0yOTAgNDY4IC0yNjlUMzg3IC0yMjFUMzA4IC0xNzRUMjIzIC0xNTJRMTY3IC0xNTIgMTI3IC0xODRUODMgLTI2MVE4MCAtMjkwIDY5IC0yOTBRNTUgLTI5MCA1NSAtMjU3JyxcbiAgICAweDJBODc6ICczODAgNDk3UTQ0NSA1MjggNTIyIDU2NFQ2MzYgNjE4VDY3MyA2MzVRNjgwIDYzNSA2ODYgNjI4VDY5MyA2MTVUNjg5IDYwM1E2ODYgNTk5IDQxOCA0NzJMMTUxIDM0M0w0MTggMjE1UTY4NiA4OCA2ODkgODNRNjkzIDc5IDY5MyA3MlQ2ODcgNTlUNjc1IDUyUTY2OSA1MiAzODEgMTg5VDg2IDMzMlE4MiAzMzcgODIgMzQ0UTgyIDM1MCA4NiAzNTVROTEgMzU5IDM4MCA0OTdaTTgyIC0xMzBUODIgLTEyNFQ5NSAtMTAzSDM4MEw0MzEgLTU0UTQ3NiAtNiA0ODYgLTZRNDkxIC02IDQ5OCAtMTJUNTA1IC0yN1E1MDUgLTI4IDUwNSAtMjlUNTA0IC0zMlE1MDMgLTMzIDQ5OCAtMzhUNDg1IC01M1Q0NjkgLTcwTDQzOCAtMTAzSDY4MFE2ODIgLTEwNiA2ODYgLTExMFQ2OTEgLTExNlQ2OTMgLTEyM1E2OTMgLTEzMCA2ODAgLTE0M0gzOThMMzQ2IC0xOTJRMzAwIC0yNDEgMjkxIC0yNDFRMjcxIC0yNDEgMjcxIC0yMjFRMjcxIC0yMDkgMzA2IC0xNzlMMzQwIC0xNDNIOTVRODIgLTEzMCA4MiAtMTI0JyxcbiAgICAweDJBODg6ICc4MiA2MTRRODIgNjIwIDg2IDYyNVQ5NCA2MzJUMTAwIDYzNVExMDYgNjM1IDM5NCA0OThUNjg5IDM1NVE2OTMgMzQ5IDY5MyAzNDNRNjkzIDMzOCA2ODkgMzMyUTY4MyAzMjcgMzk1IDE5MFQxMDAgNTJROTUgNTIgODkgNThUODIgNzJRODIgODAgOTUgODhRMTE0IDk5IDM1OCAyMTVMNjI0IDM0M0wzNTggNDcyUTg5IDU5OSA4NiA2MDNRODIgNjA3IDgyIDYxNFpNODIgLTEzMFQ4MiAtMTI0VDk1IC0xMDNIMzgwTDQzMSAtNTRRNDc2IC02IDQ4NiAtNlE0OTEgLTYgNDk4IC0xMlQ1MDUgLTI3UTUwNSAtMjggNTA1IC0yOVQ1MDQgLTMyUTUwMyAtMzMgNDk4IC0zOFQ0ODUgLTUzVDQ2OSAtNzBMNDM4IC0xMDNINjgwUTY4MiAtMTA2IDY4NiAtMTEwVDY5MSAtMTE2VDY5MyAtMTIzUTY5MyAtMTMwIDY4MCAtMTQzSDM5OEwzNDYgLTE5MlEzMDAgLTI0MSAyOTEgLTI0MVEyNzEgLTI0MSAyNzEgLTIyMVEyNzEgLTIwOSAzMDYgLTE3OUwzNDAgLTE0M0g5NVE4MiAtMTMwIDgyIC0xMjQnLFxuICAgIDB4MkE4OTogJzg2IDUxMlE5MyA1MTggMzgxIDYzOVQ2NzMgNzYxUTY4MCA3NjEgNjg2IDc1NVQ2OTMgNzQxUTY5MyA3MzMgNjg4IDczMFE2ODUgNzIzIDQxOSA2MTJMMTU1IDUwMUw0MTkgMzkwUTY4NSAyNzcgNjg4IDI3MlE2OTMgMjY5IDY5MyAyNjFRNjkzIDI1NCA2ODcgMjQ4VDY3NSAyNDFRNjY5IDI0MSAzODEgMzYyVDg2IDQ5MFE3NCA1MDAgODYgNTEyWk03MCAtNTlRNTcgLTU5IDU3IC0yNFE1NyA0MCAxMDQgODdRMTE2IDEwMiAxNDYgMTE4UTE4NiAxMzYgMjMxIDEzNlEyMzIgMTM2IDI0MiAxMzVUMjU4IDEzM1QyNzYgMTI4VDMwMiAxMThUMzM0IDEwMVQzNzcgNzRRMzg2IDY5IDM5NiA2M1Q0MTEgNTNUNDE3IDUwUTQzNSA4NyA0NTMgMTM0UTQ5MSAyMjMgNDk1IDIyN1E0OTggMjMwIDUwNSAyMzBRNTEzIDIzMCA1MTkgMjI1VDUyNiAyMTJRNTI2IDIwMyA0OTEgMTE4VDQ1MyAzMFE0NTMgMjIgNDg5IDEwVDU1MyAtM1E1ODkgLTMgNjIyIDE0UTY1MyAyOCA2NjkgNTBUNjg4IDkwVDY5NCAxMjJUNzA2IDEzNlE3MTggMTM2IDcxOCAxMTRRNzE4IDExMyA3MTggMTA5VDcxNyAxMDNRNzE3IDMxIDY2OCAtMTRUNTU0IC02MFE1MjkgLTYwIDQ5OSAtNTBUNDUxIC0zMlQ0MzMgLTI0UTQzMSAtMjQgNDA0IC05MFQzNzUgLTE1N1EzNzUgLTE1OSA0MDIgLTE3OFQ0NzMgLTIxOFQ1NTMgLTIzOVE1OTkgLTIzOSA2NDEgLTIxMVQ2OTEgLTEzMFE2OTQgLTk5IDcwNiAtOTlUNzE4IC0xMjJRNzE4IC0xMjMgNzE4IC0xMjdUNzE3IC0xMzNRNzE3IC0yMDQgNjY4IC0yNDlUNTU5IC0yOTVRNTEyIC0yOTUgNDcwIC0yNzVUMzU1IC0yMDZMMzIyIC0yOTBRMzEzIC0zMTAgMzA0IC0zMzJUMjg5IC0zNjdUMjgyIC0zODJRMjc3IC0zODcgMjcwIC0zODdRMjYyIC0zODcgMjU1IC0zODJUMjQ4IC0zNjhRMjQ4IC0zNjEgMzIyIC0xODZRMzExIC0xNzcgMjgwIC0xNjZUMjIyIC0xNTVRMTg5IC0xNTUgMTUzIC0xNzNRMTIyIC0xODYgMTA2IC0yMDhUODcgLTI0OFQ4MiAtMjgwVDcxIC0yOTRRNTcgLTI5NCA1NyAtMjU5UTU3IC0xOTUgMTA0IC0xNDhRMTIyIC0xMjYgMTU1IC0xMTNUMjIwIC05OVEyNDUgLTk5IDI3NiAtMTA5VDMyNCAtMTI3VDM0MiAtMTM1UTM5NyAtMiAzOTcgMVEzODYgMTAgMzY3IDIzVDMwMiA1OFQyMjIgODBRMTc1IDgwIDEzMiA1MlQ4NCAtMjhRODIgLTU5IDcwIC01OScsXG4gICAgMHgyQThBOiAnODYgNzMwUTgxIDczNCA4MSA3NDBRODEgNzQ3IDg4IDc1NFQ5OSA3NjFRMTAzIDc2MSAzOTIgNjQwVDY4OCA1MTJRNjkzIDUwOSA2OTMgNTAxVDY4OCA0OTBRNjgyIDQ4NCAzOTQgMzYzVDk5IDI0MVE5NCAyNDEgODggMjQ4VDgyIDI2MVE4MiAyNjggODYgMjcyUTg5IDI3NyAzNTUgMzkwTDYxOSA1MDFMMzU1IDYxMlE4OSA3MjMgODYgNzMwWk03MCAtNTlRNTcgLTU5IDU3IC0yNFE1NyA0MCAxMDQgODdRMTE2IDEwMiAxNDYgMTE4UTE4NiAxMzYgMjMxIDEzNlEyMzIgMTM2IDI0MiAxMzVUMjU4IDEzM1QyNzYgMTI4VDMwMiAxMThUMzM0IDEwMVQzNzcgNzRRMzg2IDY5IDM5NiA2M1Q0MTEgNTNUNDE3IDUwUTQzNSA4NyA0NTMgMTM0UTQ5MSAyMjMgNDk1IDIyN1E0OTggMjMwIDUwNSAyMzBRNTEzIDIzMCA1MTkgMjI1VDUyNiAyMTJRNTI2IDIwMyA0OTEgMTE4VDQ1MyAzMFE0NTMgMjIgNDg5IDEwVDU1MyAtM1E1ODkgLTMgNjIyIDE0UTY1MyAyOCA2NjkgNTBUNjg4IDkwVDY5NCAxMjJUNzA2IDEzNlE3MTggMTM2IDcxOCAxMTRRNzE4IDExMyA3MTggMTA5VDcxNyAxMDNRNzE3IDMxIDY2OCAtMTRUNTU0IC02MFE1MjkgLTYwIDQ5OSAtNTBUNDUxIC0zMlQ0MzMgLTI0UTQzMSAtMjQgNDA0IC05MFQzNzUgLTE1N1EzNzUgLTE1OSA0MDIgLTE3OFQ0NzMgLTIxOFQ1NTMgLTIzOVE1OTkgLTIzOSA2NDEgLTIxMVQ2OTEgLTEzMFE2OTQgLTk5IDcwNiAtOTlUNzE4IC0xMjJRNzE4IC0xMjMgNzE4IC0xMjdUNzE3IC0xMzNRNzE3IC0yMDQgNjY4IC0yNDlUNTU5IC0yOTVRNTEyIC0yOTUgNDcwIC0yNzVUMzU1IC0yMDZMMzIyIC0yOTBRMzEzIC0zMTAgMzA0IC0zMzJUMjg5IC0zNjdUMjgyIC0zODJRMjc3IC0zODcgMjcwIC0zODdRMjYyIC0zODcgMjU1IC0zODJUMjQ4IC0zNjhRMjQ4IC0zNjEgMzIyIC0xODZRMzExIC0xNzcgMjgwIC0xNjZUMjIyIC0xNTVRMTg5IC0xNTUgMTUzIC0xNzNRMTIyIC0xODYgMTA2IC0yMDhUODcgLTI0OFQ4MiAtMjgwVDcxIC0yOTRRNTcgLTI5NCA1NyAtMjU5UTU3IC0xOTUgMTA0IC0xNDhRMTIyIC0xMjYgMTU1IC0xMTNUMjIwIC05OVEyNDUgLTk5IDI3NiAtMTA5VDMyNCAtMTI3VDM0MiAtMTM1UTM5NyAtMiAzOTcgMVEzODYgMTAgMzY3IDIzVDMwMiA1OFQyMjIgODBRMTc1IDgwIDEzMiA1MlQ4NCAtMjhRODIgLTU5IDcwIC01OScsXG4gICAgMHgyQThCOiAnNjc0IDEwMDNRNjgxIDEwMDMgNjg3IDk5OVQ2OTQgOTgzUTY5NCA5NzMgNjgzIDk2N1E2NjkgOTU5IDQyMCA4NjhMMTYyIDc3Mkw0MjIgNjc2UTY4MyA1NzkgNjg1IDU3N1E2OTQgNTcxIDY5NCA1NjBRNjk0IDU1MCA2ODcgNTQ2VDY3MyA1NDFRNjY5IDU0MiAzODQgNjQ3VDkzIDc1NVE4MyA3NjAgODMgNzcyUTgzIDc4MyA5MSA3ODhROTggNzkxIDM4MyA4OTdUNjc0IDEwMDNaTTg0IDM1NFQ4NCAzNjdUOTggMzg3SDY3OVE2OTQgMzc5IDY5NCAzNjdRNjk0IDM1NCA2NzkgMzQ3SDk4UTg0IDM1NCA4NCAzNjdaTTg0IDE2MFQ4NCAxNzNUOTggMTkzSDY3OVE2OTQgMTg1IDY5NCAxNzNRNjk0IDE2MCA2NzkgMTUzSDk4UTg0IDE2MCA4NCAxNzNaTTk0IC0zUTEwMiAtMSAxMDQgLTFRMTA3IC0yIDM5MiAtMTA3VDY4NCAtMjE1UTY5NCAtMjE5IDY5NCAtMjMyUTY5NCAtMjQxIDY4NyAtMjQ3UTY4NiAtMjQ4IDM5NSAtMzU3UTEwNiAtNDYzIDEwMSAtNDYzUTgzIC00NjEgODMgLTQ0M1E4MyAtNDMxIDk0IC00MjZROTcgLTQyMyAzNTcgLTMyOEw2MTUgLTIzMkwzNTUgLTEzNlE5NCAtMzkgOTIgLTM3UTgzIC0zMSA4MyAtMjFRODMgLTkgOTQgLTMnLFxuICAgIDB4MkE4QzogJzEwNCA1NDFROTggNTQxIDkxIDU0NVQ4MyA1NjBRODMgNTcxIDkyIDU3N1E5NCA1NzkgMzU1IDY3Nkw2MTUgNzcyTDM1NyA4NjhRMTA4IDk1OSA5NCA5NjdRODMgOTczIDgzIDk4M1E4MyA5ODkgODcgOTk2VDEwNCAxMDAzUTEwOSAxMDAyIDM5NiA4OTZUNjg3IDc4N1E2OTQgNzgxIDY5NCA3NzJRNjk0IDc1OSA2ODQgNzU1UTY3OCA3NTIgMzkzIDY0N1QxMDQgNTQxWk04NCAzNjdRODQgMzgwIDk4IDM4N0g2NzlRNjk0IDM3OSA2OTQgMzY3UTY5NCAzNTYgNjgwIDM0OEwzOTAgMzQ3SDEwMFE4NCAzNTIgODQgMzY3Wk04NCAxNzNRODQgMTg4IDEwMCAxOTNINjgwUTY5NCAxODMgNjk0IDE3M1E2OTQgMTYwIDY3OSAxNTNIOThRODQgMTYwIDg0IDE3M1pNNjc0IC0xUTY4MiAtMSA2ODggLTZUNjk0IC0yMFE2OTQgLTMxIDY4NSAtMzdRNjgzIC0zOSA0MjIgLTEzNkwxNjIgLTIzMkw0MjAgLTMyOFE2ODAgLTQyMyA2ODMgLTQyNlE2OTQgLTQzMSA2OTQgLTQ0M1E2OTQgLTQ2MSA2NzYgLTQ2M1E2NzEgLTQ2MyAzODIgLTM1N1E5MSAtMjQ4IDkwIC0yNDdRODMgLTI0MiA4MyAtMjMyUTgzIC0yMjAgOTMgLTIxNVE2NjcgLTEgNjc0IC0xJyxcbiAgICAweDJBOTU6ICc2NzQgNjM2UTY4MiA2MzYgNjg4IDYzMVQ2OTQgNjE2UTY5NCA2MDUgNjg3IDYwMVE2ODUgNTk5IDM5NSA0NjJMMTA3IDMyNkgxMDFRODMgMzI4IDgzIDM0NVE4MyAzNTggOTYgMzY1UTEwMiAzNjcgMzgyIDUwMFQ2NjUgNjM0UTY3MSA2MzYgNjc0IDYzNlpNNjc0IDQ0MlE2OTIgNDQyIDY5NCA0MjRRNjk0IDQxMiA2ODcgNDA3UTY4NiA0MDYgNDE3IDI3OEwxNTEgMTUyTDM5OSAzNFE2ODcgLTEwMiA2OTEgLTEwN1E2OTQgLTExMyA2OTQgLTExOFE2OTQgLTEzNiA2NzYgLTEzOEg2NzBMMzgyIC0yUTkyIDEzNSA5MCAxMzdRODMgMTQyIDgzIDE1NFE4NCAxNjUgOTYgMTcxUTEwNCAxNzUgMzgyIDMwNlQ2NjUgNDQwUTY2OSA0NDIgNjc0IDQ0MicsXG4gICAgMHgyQTk2OiAnODMgNjE2UTgzIDYyNCA4OSA2MzBUOTkgNjM2UTEwNyA2MzYgMjUzIDU2OFQ1NDMgNDMxVDY4NyAzNjFRNjk0IDM1NCA2OTQgMzQ2UTY5NCAzMjggNjc2IDMyNkg2NzBMMzgyIDQ2MlEzMTcgNDkzIDIyNiA1MzVRMTE5IDU4NSAxMDEgNTk1VDgzIDYxNlpNOTQgNDQwUTEwMiA0NDIgMTA0IDQ0MlExMTAgNDQxIDI1NCAzNzNUNTM1IDI0MFQ2NzggMTcyUTY3OSAxNzIgNjgwIDE3MVE2OTQgMTY0IDY5NCAxNTNUNjg3IDEzN1E2ODUgMTM1IDM5NSAtMkwxMDcgLTEzOEgxMDFRODMgLTEzNiA4MyAtMTE4UTgzIC0xMDYgOTMgLTEwMUwxMjggLTg0UTE2MyAtNjggMjMwIC0zNlQzNjEgMjZMNjI2IDE1MkwzNjAgMjc4UTkxIDQwNiA5MCA0MDdRODMgNDEyIDgzIDQyNFE4NCA0MzQgOTQgNDQwJyxcbiAgICAweDJBQUY6ICc4NCAzNDZRODQgMzU5IDkxIDM2M1QxMTcgMzY3UTEyMCAzNjcgMTI2IDM2N1QxMzcgMzY2UTM4OCAzNzAgNTEyIDQzMFQ2NTMgNjA5UTY1NyA2MzYgNjc2IDYzNlE2ODUgNjM1IDY4OSA2MjlUNjk0IDYxOFY2MTJRNjg5IDU2NiA2NzIgNTI4VDYyNiA0NjNUNTY5IDQxN1Q1MDAgMzgzVDQzNSAzNjJUMzczIDM0NlEzNzkgMzQ1IDQwNCAzMzlUNDQwIDMzMFQ0NzcgMzE4VDUzMyAyOTZRNTkyIDI2NiA2MzAgMjIzVDY4MSAxNDVUNjk0IDc4UTY5NCA1NyA2NzQgNTdRNjYyIDU3IDY1NyA2N1Q2NTIgOTJUNjQwIDEzNVQ2MDYgMTkxUTUwMCAzMjAgMTM3IDMyNkgxMTRRMTA0IDMyNiA5OCAzMjdUODggMzMyVDg0IDM0NlpNODQgLTEzMVQ4NCAtMTE4VDk4IC05OEg2NzlRNjk0IC0xMDYgNjk0IC0xMThUNjc5IC0xMzhIOThRODQgLTEzMSA4NCAtMTE4JyxcbiAgICAweDJBQjA6ICc4NCA2MTRRODQgNjM2IDEwMiA2MzZRMTE1IDYzNiAxMTkgNjI2VDEyNSA2MDBUMTM3IDU1NlQxNzEgNTAxUTI3NyAzNzIgNjQwIDM2Nkg2NjFRNjk0IDM2NiA2OTQgMzQ2VDY2MSAzMjZINjQwUTU3OCAzMjUgNTI2IDMyMVQ0MTUgMzA3VDMwOSAyODBUMjIyIDIzN1QxNTYgMTcyVDEyNCA4M1ExMjIgNjYgMTE4IDYyVDEwMyA1N1ExMDAgNTcgOTggNTdUOTUgNThUOTMgNTlUOTAgNjJUODUgNjdRODMgNzEgODMgODBRODggMTI2IDEwNSAxNjRUMTUxIDIyOVQyMDggMjc1VDI3NyAzMDlUMzQyIDMzMFQ0MDQgMzQ2UTQwMSAzNDcgMzgwIDM1MVQzNDUgMzYwVDMwMiAzNzNUMjQ1IDM5NlExMjUgNDU1IDkyIDU2NVE4NCA1OTkgODQgNjE0Wk04NCAtMTMxVDg0IC0xMThUOTggLTk4SDY3OVE2OTQgLTEwNiA2OTQgLTExOFQ2NzkgLTEzOEg5OFE4NCAtMTMxIDg0IC0xMTgnLFxuICAgIDB4MkFCNTogJzY1MyA3MzRRNjUzIDczOCA2NjAgNzQ1VDY3MyA3NTJUNjg2IDc0NVQ2OTMgNzIzUTY3MiA1NTUgNDY2IDQ4NVEzOTAgNDYzIDM3OCA0NjNRMzczIDQ2MyAzNzMgNDYxUTM3MyA0NTggMzc4IDQ1OFEzOTAgNDU4IDQ2NiA0MzZRNTYyIDQwNCA2MjAgMzUwUTY4MiAyODMgNjkzIDE5OFE2OTMgMTgzIDY4NiAxNzZRNjgxIDE3MCA2NzQgMTcwVDY2MCAxNzZUNjUzIDE4N1E2NTMgMTkyIDY1MiAyMDBUNjQ2IDIyOFQ2MzEgMjY1VDYwMiAzMDdUNTU1IDM1MFE0MzUgNDMxIDE1MSA0NDFIOTVRODIgNDU0IDgyIDQ2MFQ5NSA0ODFIMTUxUTE2NSA0ODIgMTk3IDQ4M1QyMzggNDg1UTQyNyA1MDAgNTI4IDU1NFQ2NDkgNzA3UTY1MyA3MjkgNjUzIDczNFpNODIgMzNRODIgMzcgODMgNDBUODkgNDdUOTUgNTRINDczTDUyMCAxMDVRNTY5IDE1NiA1NzEgMTU2UTU3MyAxNTcgNTc4IDE1N1E1ODYgMTU3IDU5MiAxNTFUNTk4IDEzNlE1OTggMTMwIDU2MiA5Mkw1MjYgNTZMNjA0IDU0SDY4MlE2OTMgNDMgNjkzIDM1UTY5MyAzMSA2OTIgMjhUNjg2IDIxVDY4MCAxNEg0ODlMMzQyIC0xMzlMNTEzIC0xNDJINjgyUTY5MyAtMTQ4IDY5MyAtMTYwUTY5MyAtMTY3IDY4MCAtMTgySDMwNEwyNTggLTIzMFEyNDggLTI0MCAyMzcgLTI1MVQyMjEgLTI2OFQyMTEgLTI3OFQyMDMgLTI4NFQxOTcgLTI4NlExODkgLTI4NiAxODQgLTI4MFQxNzggLTI2NFExNzggLTI1NyAyMTMgLTIxOUwyNDkgLTE4MkgxNzFMOTMgLTE3OUw4NiAtMTc1UTgyIC0xNzAgODIgLTE2M1E4MiAtMTU1IDk1IC0xNDJIMjg5TDM2MCAtNjRMNDMzIDE0SDI2Mkw5MyAxNlE4MiAyMyA4MiAzMycsXG4gICAgMHgyQUI2OiAnNjkzIDQ2NlQ2OTMgNDYwVDY4MCA0NDFINjI0UTYwOCA0MzkgNTc3IDQzOFQ1MzggNDM2UTM0OSA0MjEgMjQ4IDM2N1QxMjYgMjE0UTEyMiAxOTIgMTIyIDE4N1ExMjIgMTgzIDExNiAxNzdUMTAyIDE3MFE5NSAxNzAgODkgMTc2UTgyIDE4MyA4MiAxOThROTMgMjgzIDE1NSAzNTBRMjEzIDQwNCAzMDkgNDM2UTM4NSA0NTggMzk4IDQ1OFE0MDIgNDU4IDQwMiA0NjFRNDAyIDQ2MyAzOTggNDYzUTM4NSA0NjMgMzA5IDQ4NVExMDMgNTU1IDgyIDcyM1E4MiA3MzggODkgNzQ1VDEwMiA3NTJUMTE1IDc0NVQxMjIgNzM0UTEyMiA3MjEgMTI2IDcwMVQxNTUgNjQwVDIyMCA1NzJRMzQwIDQ5MCA2MjQgNDgxSDY4MFE2OTMgNDY2IDY5MyA0NjBaTTgyIDMzUTgyIDM3IDgzIDQwVDg5IDQ3VDk1IDU0SDQ3M0w1MjAgMTA1UTU2OSAxNTYgNTcxIDE1NlE1NzMgMTU3IDU3OCAxNTdRNTg2IDE1NyA1OTIgMTUxVDU5OCAxMzZRNTk4IDEzMCA1NjIgOTJMNTI2IDU2TDYwNCA1NEg2ODJRNjkzIDQzIDY5MyAzNVE2OTMgMzEgNjkyIDI4VDY4NiAyMVQ2ODAgMTRINDg5TDM0MiAtMTM5TDUxMyAtMTQySDY4MlE2OTMgLTE0OCA2OTMgLTE2MFE2OTMgLTE2NyA2ODAgLTE4MkgzMDRMMjU4IC0yMzBRMjQ4IC0yNDAgMjM3IC0yNTFUMjIxIC0yNjhUMjExIC0yNzhUMjAzIC0yODRUMTk3IC0yODZRMTg5IC0yODYgMTg0IC0yODBUMTc4IC0yNjRRMTc4IC0yNTcgMjEzIC0yMTlMMjQ5IC0xODJIMTcxTDkzIC0xNzlMODYgLTE3NVE4MiAtMTcwIDgyIC0xNjNRODIgLTE1NSA5NSAtMTQySDI4OUwzNjAgLTY0TDQzMyAxNEgyNjJMOTMgMTZRODIgMjMgODIgMzMnLFxuICAgIDB4MkFCNzogJzgyIDQ5NFQ4MiA1MDFUOTUgNTIxSDE3MVE0MDUgNTI3IDUxMSA1NjlRNjMwIDYxOCA2NTEgNzMyUTY1MiA3MzQgNjUzIDc0MFQ2NTUgNzQ4VDY1OCA3NTRUNjYzIDc1OVQ2NzIgNzYxTDY4NiA3NTRRNjkzIDc0NyA2OTMgNzM0UTY4NCA2NjggNjQ4IDYyM1E2MjcgNTkxIDU3MyA1NTdUNDQyIDUwN0w0MTcgNTAxUTQyOCA0OTYgNDQyIDQ5NFE1MjAgNDc4IDU3MyA0NDRUNjQ4IDM3OFE2ODQgMzMzIDY5MyAyNjdRNjkzIDI1NCA2ODYgMjQ3UTY3MyAyMzQgNjU5IDI0NVE2NTcgMjQ3IDY1MSAyNjlRNjMwIDM4MyA1MTEgNDMyUTQwNiA0NzQgMTcxIDQ4MUg5NVE4MiA0OTQgODIgNTAxWk03MCAtNTlRNTcgLTU5IDU3IC0yNlE1NyAzMCA5MCA3M1QxNzcgMTMyUTE5MSAxMzYgMjI2IDEzNlEyMjggMTM2IDIzOSAxMzZUMjUzIDEzNVQyNjcgMTMyVDI4NyAxMjVUMzExIDExM1QzNDYgOTVUMzkxIDY3UTQ2MiAyMCA1MDIgNVE1MTkgMSA1NTMgMVE1ODYgMSA2MDIgNVE2NDEgMTggNjY0IDQ1VDY5MSAxMDdRNjk0IDEzNiA3MDQgMTM2UTcxNyAxMzYgNzE3IDExNVYxMDVRNzE3IDM5IDY3MSAtOVQ1NTQgLTU4UTUxOCAtNTggNDgxIC00M1QzODIgMTRRMzAyIDYzIDI3MyA3NFEyNTUgNzggMjIyIDc4UTE4OCA3OCAxNzMgNzRROTAgNDYgODQgLTI4UTgyIC01OSA3MCAtNTlaTTcxIC0yOTRRNTcgLTI5NCA1NyAtMjYyUTU3IC0yMDUgOTAgLTE2MlQxNzcgLTEwNFExOTEgLTk5IDIyNiAtOTlRMjY2IC0xMDMgMjc3IC0xMDZRMzEwIC0xMTkgMzkxIC0xNjhRNDU1IC0yMTIgNTAyIC0yMzFRNTE5IC0yMzUgNTUzIC0yMzVRNTg2IC0yMzUgNjAyIC0yMzFRNjQwIC0yMTggNjYxIC0xOTVUNjg2IC0xNTFUNjkzIC0xMTVUNzA0IC05OVE3MTcgLTk5IDcxNyAtMTIxVi0xMzFRNzE3IC0xOTggNjcxIC0yNDZUNTU2IC0yOTRRNTE5IC0yOTQgNDgyIC0yNzlUMzgyIC0yMjJRMzA3IC0xNzUgMjczIC0xNjJRMjU1IC0xNTcgMjIyIC0xNTdRMTg4IC0xNTcgMTczIC0xNjJRMTMzIC0xNzUgMTEwIC0yMDFUODQgLTI2NFE4MiAtMjk0IDcxIC0yOTQnLFxuICAgIDB4MkFCODogJzY5MyA1MDFRNjkzIDQ5MyA2NzkgNDgxSDYwNFEzNjkgNDc0IDI2NCA0MzJRMTQzIDM4MiAxMjQgMjY5UTExNiAyNDYgMTE1IDI0NVExMDEgMjM0IDg4IDI0N1E4MiAyNTQgODIgMjY3UTg5IDMyOSAxMjYgMzc4UTE0NyA0MTAgMjAxIDQ0NFQzMzMgNDk0TDM1NyA1MDFRMzU0IDUwMiAzNDAgNTA1VDMxOCA1MTBUMjk1IDUxNlQyNjkgNTI1VDI0MyA1MzVUMjE1IDU0OFQxODggNTY1UTE0MiA1OTkgMTI2IDYyM1E4OSA2NzIgODIgNzM0UTgyIDc2MSAxMDIgNzYxTDExNSA3NTZRMTE2IDc1NSAxMjQgNzMyUTE0MyA2MTkgMjY0IDU2OVEzNzEgNTI3IDYwNCA1MjFINjc5UTY5MyA1MDcgNjkzIDUwMVpNNzAgLTU5UTU3IC01OSA1NyAtMjZRNTcgMzAgOTAgNzNUMTc3IDEzMlExOTEgMTM2IDIyNiAxMzZRMjI4IDEzNiAyMzkgMTM2VDI1MyAxMzVUMjY3IDEzMlQyODcgMTI1VDMxMSAxMTNUMzQ2IDk1VDM5MSA2N1E0NjIgMjAgNTAyIDVRNTE5IDEgNTUzIDFRNTg2IDEgNjAyIDVRNjQxIDE4IDY2NCA0NVQ2OTEgMTA3UTY5NCAxMzYgNzA0IDEzNlE3MTcgMTM2IDcxNyAxMTVWMTA1UTcxNyAzOSA2NzEgLTlUNTU0IC01OFE1MTggLTU4IDQ4MSAtNDNUMzgyIDE0UTMwMiA2MyAyNzMgNzRRMjU1IDc4IDIyMiA3OFExODggNzggMTczIDc0UTkwIDQ2IDg0IC0yOFE4MiAtNTkgNzAgLTU5Wk03MSAtMjk0UTU3IC0yOTQgNTcgLTI2MlE1NyAtMjA1IDkwIC0xNjJUMTc3IC0xMDRRMTkxIC05OSAyMjYgLTk5UTI2NiAtMTAzIDI3NyAtMTA2UTMxMCAtMTE5IDM5MSAtMTY4UTQ1NSAtMjEyIDUwMiAtMjMxUTUxOSAtMjM1IDU1MyAtMjM1UTU4NiAtMjM1IDYwMiAtMjMxUTY0MCAtMjE4IDY2MSAtMTk1VDY4NiAtMTUxVDY5MyAtMTE1VDcwNCAtOTlRNzE3IC05OSA3MTcgLTEyMVYtMTMxUTcxNyAtMTk4IDY3MSAtMjQ2VDU1NiAtMjk0UTUxOSAtMjk0IDQ4MiAtMjc5VDM4MiAtMjIyUTMwNyAtMTc1IDI3MyAtMTYyUTI1NSAtMTU3IDIyMiAtMTU3UTE4OCAtMTU3IDE3MyAtMTYyUTEzMyAtMTc1IDExMCAtMjAxVDg0IC0yNjRRODIgLTI5NCA3MSAtMjk0JyxcbiAgICAweDJBQjk6ICc4MiA0OTRUODIgNTAxVDk1IDUyMUgxNzFRMjU2IDUyMyAzMTcgNTI4VDQ0MSA1NDhUNTQzIDU4NFQ2MTMgNjQ0VDY1MSA3MzJRNjUyIDczNCA2NTMgNzQwVDY1NSA3NDhUNjU4IDc1NFQ2NjMgNzU5VDY3MiA3NjFMNjg2IDc1NFE2OTMgNzQ3IDY5MyA3MzRRNjg2IDY4NiA2NjQgNjQ3VDYxNSA1ODZUNTQ4IDU0NVQ0ODIgNTE4VDQxNyA1MDFRNDE5IDUwMCA0NTEgNDkzVDUxNyA0NzFUNTkwIDQzNFQ2NTcgMzY3VDY5MyAyNjdRNjkzIDI0MSA2NzMgMjQxUTY2NCAyNDEgNjU5IDI0NVE2NTYgMjQ5IDY1MCAyNzNUNjM1IDMyM1Q1OTMgMzgwVDUxMSA0MzJRNDA2IDQ3NCAxNzEgNDgxSDk1UTgyIDQ5NCA4MiA1MDFaTTU3IC0yNlE1NyAzOSAxMDEgODdUMjE5IDEzNlEyNTQgMTM2IDI3NyAxMzBRMzIwIDExNCAzODIgNzJRNDE5IDUwIDQyNCA0NVE0MjYgNDUgNDU5IDExMFE0OTYgMTc4IDQ5NyAxNzlRNTAwIDE4MCA1MDQgMTgwUTUwOSAxODAgNTE3IDE3NVQ1MjYgMTYxUTUyNiAxNTggNDk1IDkwTDQ2MiAyNVE0NjIgMjEgNTAyIDVRNTE5IDEgNTUzIDFRNTg2IDEgNjAyIDVRNjQxIDE4IDY2NCA0NVQ2OTEgMTA3UTY5NCAxMzYgNzA2IDEzNlQ3MTggMTE1UTcxOCAxMTQgNzE4IDExMVQ3MTcgMTA1UTcxNyAzOSA2NzEgLTlUNTU0IC01OEw0NTkgLTMzUTQ1MCAtMjkgNDQ0IC0yN1Q0MzcgLTI2TDM3MSAtMTU1TDM5MSAtMTY4UTQ4NSAtMjM1IDUzOCAtMjM1SDU1M1E1ODYgLTIzNSA2MDIgLTIzMFE2ODMgLTIwNCA2OTEgLTEyOFE2OTQgLTk5IDcwNiAtOTlUNzE4IC0xMjBRNzE4IC0xMjEgNzE4IC0xMjRUNzE3IC0xMzBRNzE3IC0xOTkgNjcwIC0yNDZUNTU3IC0yOTRUMzkzIC0yMjhRMzUzIC0yMDUgMzUxIC0yMDFRMzQ4IC0yMDEgMzE1IC0yNjZRMjk0IC0zMTAgMjg1IC0zMjNUMjY4IC0zMzdRMjU5IC0zMzcgMjU0IC0zMzFUMjQ4IC0zMTdRMjQ4IC0zMDUgMjgyIC0yNDZMMzEzIC0xODFRMzEzIC0xNzcgMjczIC0xNjFRMjU1IC0xNTcgMjIyIC0xNTdRMTg4IC0xNTcgMTczIC0xNjFRMTM0IC0xNzQgMTEzIC0xOThUODggLTI0MlQ4MiAtMjc4VDcxIC0yOTRRNTcgLTI5NCA1NyAtMjYxUTU3IC0yMDQgOTEgLTE2MVQxNzkgLTEwNFExOTUgLTk5IDIyOCAtOTlRMjc0IC0xMDIgMzE1IC0xMjRRMzM3IC0xMzIgMzM3IC0xMzBMNDA0IC0xTDM4NCAxMlEzMTkgNTggMjczIDc0UTI1NSA3OSAyMjIgNzlRMTg4IDc5IDE3MyA3NFExMzMgNjEgMTEyIDM3VDg4IC03VDgyIC00M1Q3MCAtNTlRNTcgLTU5IDU3IC0yNicsXG4gICAgMHgyQUJBOiAnNjkzIDUwMVE2OTMgNDkzIDY3OSA0ODFINjA0UTU0OCA0NzkgNTA5IDQ3N1Q0MTggNDY5VDMzMSA0NTRUMjU3IDQyOVQxOTQgMzkyVDE1MCAzNDBUMTI0IDI3MFExMTcgMjQ3IDExNSAyNDVRMTAxIDIzNiA4OCAyNDdRODIgMjU0IDgyIDI2N1E4OSAzMzAgMTI2IDM3OVExNDcgNDExIDIwMiA0NDRUMzMzIDQ5NEwzNTcgNTAxUTIzOSA1MzEgMTg4IDU2NVExNDIgNTk5IDEyNiA2MjNRODkgNjcyIDgyIDczNFE4MiA3NjEgMTAyIDc2MUwxMTUgNzU2UTExNiA3NTUgMTI0IDczMlExMzMgNjc4IDE2NiA2NDBUMjQxIDU3OVQzNDkgNTQ0VDQ3MCA1MjdUNjA0IDUyMUg2NzlRNjkzIDUwNyA2OTMgNTAxWk01NyAtMjZRNTcgMzkgMTAxIDg3VDIxOSAxMzZRMjU0IDEzNiAyNzcgMTMwUTMyMCAxMTQgMzgyIDcyUTQxOSA1MCA0MjQgNDVRNDI2IDQ1IDQ1OSAxMTBRNDk2IDE3OCA0OTcgMTc5UTUwMCAxODAgNTA0IDE4MFE1MDkgMTgwIDUxNyAxNzVUNTI2IDE2MVE1MjYgMTU4IDQ5NSA5MEw0NjIgMjVRNDYyIDIxIDUwMiA1UTUxOSAxIDU1MyAxUTU4NiAxIDYwMiA1UTY0MSAxOCA2NjQgNDVUNjkxIDEwN1E2OTQgMTM2IDcwNiAxMzZUNzE4IDExNVE3MTggMTE0IDcxOCAxMTFUNzE3IDEwNVE3MTcgMzkgNjcxIC05VDU1NCAtNThMNDU5IC0zM1E0NTAgLTI5IDQ0NCAtMjdUNDM3IC0yNkwzNzEgLTE1NUwzOTEgLTE2OFE0ODUgLTIzNSA1MzggLTIzNUg1NTNRNTg2IC0yMzUgNjAyIC0yMzBRNjgzIC0yMDQgNjkxIC0xMjhRNjk0IC05OSA3MDYgLTk5VDcxOCAtMTIwUTcxOCAtMTIxIDcxOCAtMTI0VDcxNyAtMTMwUTcxNyAtMTk5IDY3MCAtMjQ2VDU1NyAtMjk0VDM5MyAtMjI4UTM1MyAtMjA1IDM1MSAtMjAxUTM0OCAtMjAxIDMxNSAtMjY2UTI5NCAtMzEwIDI4NSAtMzIzVDI2OCAtMzM3UTI1OSAtMzM3IDI1NCAtMzMxVDI0OCAtMzE3UTI0OCAtMzA1IDI4MiAtMjQ2TDMxMyAtMTgxUTMxMyAtMTc3IDI3MyAtMTYxUTI1NSAtMTU3IDIyMiAtMTU3UTE4OCAtMTU3IDE3MyAtMTYxUTEzNCAtMTc0IDExMyAtMTk4VDg4IC0yNDJUODIgLTI3OFQ3MSAtMjk0UTU3IC0yOTQgNTcgLTI2MVE1NyAtMjA0IDkxIC0xNjFUMTc5IC0xMDRRMTk1IC05OSAyMjggLTk5UTI3NCAtMTAyIDMxNSAtMTI0UTMzNyAtMTMyIDMzNyAtMTMwTDQwNCAtMUwzODQgMTJRMzE5IDU4IDI3MyA3NFEyNTUgNzkgMjIyIDc5UTE4OCA3OSAxNzMgNzRRMTMzIDYxIDExMiAzN1Q4OCAtN1Q4MiAtNDNUNzAgLTU5UTU3IC01OSA1NyAtMjYnLFxuICAgIDB4MkFDNTogJzg0IDQ2M1E4NCA1ODUgMTY2IDY2M1QzNjAgNzUyUTM2MSA3NTIgMzcwIDc1MlQzOTUgNzUyVDQzMCA3NTJUNDc1IDc1M1Q1MjQgNzUzSDY3OVE2OTQgNzQ2IDY5NCA3MzNRNjk0IDcyNCA2ODEgNzE0TDUyMiA3MTNINDcwSDQ0MVEzNjYgNzEzIDMzOCA3MDlUMjY2IDY4NVEyNDQgNjc0IDIyNCA2NTlUMTc5IDYxN1QxMzkgNTUwVDEyNCA0NjNWNDU4UTEyNCAzNzAgMTg1IDMwMlEyNDQgMjM4IDMyOCAyMjBRMzQ4IDIxNSAzNjYgMjE1VDUyMiAyMTNINjgxUTY5NCAyMDMgNjk0IDE5M1E2OTQgMTgwIDY3OSAxNzNINTI2UTUxMCAxNzMgNDgwIDE3M1Q0MzQgMTcyUTM1MCAxNzIgMjg5IDE4OFQxNzIgMjU4UTg0IDM0MCA4NCA0NjNaTTg0IC0xNFQ4NCAtMVQ5OCAxOUg2NzlRNjk0IDExIDY5NCAtMVE2OTQgLTE0IDY3OSAtMjFIOThRODQgLTE0IDg0IC0xWk04NCAtMjA4VDg0IC0xOTVUOTggLTE3NUg2NzlRNjk0IC0xODMgNjk0IC0xOTVRNjk0IC0yMDggNjc5IC0yMTVIOThRODQgLTIwOCA4NCAtMTk1JyxcbiAgICAweDJBQzY6ICc4MyA3MzNRODMgNzQ2IDk4IDc1M0gyNTFRMjY3IDc1MyAyOTcgNzUzVDM0MyA3NTRRNDI3IDc1NCA0ODggNzM4VDYwNSA2NjhRNjkzIDU4NyA2OTMgNDYzUTY5MyAzNzggNjUwIDMxMlQ1NDUgMjEzVDQxNSAxNzRRNDA3IDE3MyAyNTEgMTczSDk4UTgzIDE4MCA4MyAxOTNRODMgMjAzIDk2IDIxM0gyNTVIMzA4SDMzN1E0MTIgMjEzIDQzOSAyMTdUNTEyIDI0MVE1MzMgMjUyIDU1MyAyNjdUNTk5IDMwOVQ2MzkgMzc2VDY1NCA0NjNRNjU0IDU1NCA1OTIgNjI0UTU1NyA2NjIgNTEyIDY4NVE0NjggNzA0IDQzOSA3MDhUMzM1IDcxM0gzMDZIMjU1TDk2IDcxNFE4MyA3MjQgODMgNzMzWk04NCAtMTRUODQgLTFUOTggMTlINjc5UTY5NCAxMSA2OTQgLTFRNjk0IC0xNCA2NzkgLTIxSDk4UTg0IC0xNCA4NCAtMVpNODQgLTIwOFQ4NCAtMTk1VDk4IC0xNzVINjc5UTY5NCAtMTgzIDY5NCAtMTk1UTY5NCAtMjA4IDY3OSAtMjE1SDk4UTg0IC0yMDggODQgLTE5NScsXG4gICAgMHgyQUNCOiAnNjkzIDIyMVE2OTMgMjE0IDY4MCAyMDFINTI0UTM5OCAyMDEgMzY3IDIwMlQzMDkgMjEyUTIzNiAyMzAgMTgwIDI4MFQ5OCAzOThRODQgNDM4IDg0IDQ5MlQ5OCA1ODVRMTI2IDY2MyAxOTMgNzE2VDM0NiA3ODFRMzQ3IDc4MSAzNzMgNzgxVDQ0MCA3ODJUNTIwIDc4M0g2ODBRNjgyIDc4MCA2ODYgNzc2VDY5MSA3NzBUNjkzIDc2M1Q2ODAgNzQzSDUyNlEzNjQgNzQzIDM1MyA3NDFRMjc5IDczMCAyMjEgNjg3VDEzOCA1NzhRMTI0IDU0MCAxMjQgNDkyVDEzOCA0MDVRMTYzIDM0MCAyMjEgMjk3VDM1MyAyNDNRMzY0IDI0MSA1MjYgMjQxSDY4MFE2ODIgMjM4IDY4NiAyMzRUNjkxIDIyOFQ2OTMgMjIxWk04MiAtNDhUODIgLTQxVDk1IC0xOUg0NjJMNTEzIDQxTDU2OSAxMDVRNTc0IDExMCA1ODIgMTEwVDU5NiAxMDRUNjAyIDkwUTYwMiA4NyA2MDAgODNRNjAwIDc3IDU1NSAzMEw1MTUgLTE3TDYwMCAtMTlINjgyUTY5MyAtMzAgNjkzIC0zOFQ2ODAgLTU5SDQ4MEw0MTUgLTEzN0wzNDkgLTIxM0w1MTUgLTIxNUg2ODJRNjkzIC0yMjYgNjkzIC0yMzNUNjgwIC0yNTVIMzEzTDI2MCAtMzE3UTIyNCAtMzYwIDIxMiAtMzcyVDE5MiAtMzg1UTE4NCAtMzg1IDE3OSAtMzc3VDE3MyAtMzYyUTE3NCAtMzYxIDIxOCAtMzA2TDI2MCAtMjU1SDE3OEw5MyAtMjUzTDg2IC0yNDhRODIgLTI0MyA4MiAtMjM1UTgyIC0yMjYgOTMgLTIxNUgxOTVMMjk1IC0yMTNMMzYyIC0xMzdMNDI2IC01OUgyNjBMOTMgLTU3TDg2IC01M1E4MiAtNDggODIgLTQxJyxcbiAgICAweDJBQ0M6ICc4MiA3NTlUODIgNzYzVDgzIDc2OVQ4OSA3NzZUOTUgNzgzSDI1MVEzNzggNzgzIDQwOSA3ODJUNDY5IDc3MlE1NDAgNzUzIDU5NiA3MDNUNjc4IDU4NVE2OTEgNTQ2IDY5MSA0OTJUNjc4IDM5OFE2NDkgMzIwIDU4MSAyNjdUNDI2IDIwM1E0MTUgMjAxIDI1MSAyMDFIOTVRODIgMjE0IDgyIDIyMVE4MiAyMjUgODMgMjI3VDg5IDIzNFQ5NSAyNDFIMjQ5UTQxMSAyNDEgNDIyIDI0M1E0OTYgMjUzIDU1NCAyOTZUNjM4IDQwNVE2NTEgNDQ0IDY1MSA0OTJRNjUxIDUzOSA2MzggNTc4UTYxMyA2NDMgNTU1IDY4NlQ0MjIgNzQxUTQxMSA3NDMgMjQ5IDc0M0g5NVE4MiA3NTkgODIgNzYzWk04MiAtNDhUODIgLTQxVDk1IC0xOUg0NjJMNTEzIDQxTDU2OSAxMDVRNTc0IDExMCA1ODIgMTEwVDU5NiAxMDRUNjAyIDkwUTYwMiA4NyA2MDAgODNRNjAwIDc3IDU1NSAzMEw1MTUgLTE3TDYwMCAtMTlINjgyUTY5MyAtMzAgNjkzIC0zOFQ2ODAgLTU5SDQ4MEw0MTUgLTEzN0wzNDkgLTIxM0w1MTUgLTIxNUg2ODJRNjkzIC0yMjYgNjkzIC0yMzNUNjgwIC0yNTVIMzEzTDI2MCAtMzE3UTIyNCAtMzYwIDIxMiAtMzcyVDE5MiAtMzg1UTE4NCAtMzg1IDE3OSAtMzc3VDE3MyAtMzYyUTE3NCAtMzYxIDIxOCAtMzA2TDI2MCAtMjU1SDE3OEw5MyAtMjUzTDg2IC0yNDhRODIgLTI0MyA4MiAtMjM1UTgyIC0yMjYgOTMgLTIxNUgxOTVMMjk1IC0yMTNMMzYyIC0xMzdMNDI2IC01OUgyNjBMOTMgLTU3TDg2IC01M1E4MiAtNDggODIgLTQxJyxcbiAgICAweDMwMDg6ICczMzMgLTIzMlEzMzIgLTIzOSAzMjcgLTI0NFQzMTMgLTI1MFEzMDMgLTI1MCAyOTYgLTI0MFEyOTMgLTIzMyAyMDIgNlQxMTAgMjUwVDIwMSA0OTRUMjk2IDc0MFEyOTkgNzQ1IDMwNiA3NDlMMzA5IDc1MFEzMTIgNzUwIDMxMyA3NTBRMzMxIDc1MCAzMzMgNzMyUTMzMyA3MjcgMjQzIDQ4OVExNTIgMjUyIDE1MiAyNTBUMjQzIDExUTMzMyAtMjI3IDMzMyAtMjMyJyxcbiAgICAweDMwMDk6ICc1NSA3MzJRNTYgNzM5IDYxIDc0NFQ3NSA3NTBRODUgNzUwIDkyIDc0MFE5NSA3MzMgMTg2IDQ5NFQyNzggMjUwVDE4NyA2VDkyIC0yNDBRODUgLTI1MCA3NSAtMjUwUTY3IC0yNTAgNjIgLTI0NVQ1NSAtMjMyUTU1IC0yMjcgMTQ1IDExUTIzNiAyNDggMjM2IDI1MFQxNDUgNDg5UTU1IDcyNyA1NSA3MzInLFxuICAgIDB4RTAwNjogJzkxIDQxN1ExMDQgNDMwIDExMSA0MzBUMTMxIDQxN1YzMDFMMTcxIDM0MVEyMDEgMzczIDIwNyAzNzhUMjIwIDM4NFEyMjcgMzg0IDIzMyAzNzdUMjQwIDM2NlEyNDAgMzU3IDE4NyAyOTlMMTMxIDI0NFYtMTBRMTE2IC0yMyAxMTEgLTIzVDkxIC0xMFYyMDFMNDkgMTU3UTIwIDEyNyAxNCAxMjFUMCAxMTVRLTggMTE1IC0xNCAxMjFULTIwIDEzMlEtMjAgMTM5IDE3IDE3OFEyOSAxOTEgMzYgMTk5TDkxIDI1N1Y0MTcnLFxuICAgIDB4RTAwNzogJzU2IDQxN1E2OCA0MzEgNzYgNDMxTDg5IDQyNkw5NiA0MTlWMzE3TDk4IDIxNUwxOTMgMjczTDI5MSAzMzBWMzc1TDI5MyA0MTlRMzAxIDQzMSAzMTEgNDMxUTMzMSA0MzEgMzMxIDM4OEwzMzMgMzU1TDM1NiAzNzBRMzgxIDM4NCAzODggMzg0UTM5NCAzODQgNDAwIDM3N1Q0MDcgMzYzUTQwNyAzNTQgMzY3IDMyOEwzMzEgMzA4Vi0xMFEzMTYgLTIzIDMxMCAtMjNRMzAwIC0yMyAyOTMgLTEyTDI5MSAxMzVWMjg0TDk4IDE2OEw5NiA3N1YtMTJRODQgLTI0IDc2IC0yNEw2MiAtMTlMNTggLTEyTDU2IDY2VjE0NEwzMSAxMjhRNSAxMTQgLTIgMTE0US04IDExNCAtMTQgMTIxVC0yMCAxMzZRLTIwIDE0MiAtMTQgMTQ3VDIwIDE3MEw1NiAxOTBWNDE3JyxcbiAgICAweEUwMDg6ICc0NzcgMjYxUTQ3NyAyNTcgNDczIDI1NlQ0NTUgMjUzVDQxNyAyNTFUMzQ4IDI1MEgyMzVMMTU1IC03N0wxNDYgLTgyUTEzNyAtODUgMTA5IC04NVE1NSAtODUgNTUgLTc3TDEzOSAyNjFRMjI0IDU5NiAyMjYgNTk4UTIyOSA2MDMgMjM5IDYwM1EyNDAgNjAzIDI1NCA2MDNUMjkwIDYwM1QzNDEgNjA0VDQwNSA2MDVUNDc3IDYwNVE2NTYgNjAzIDY4NyA2MDJUNzE5IDU5NlE3MTkgNTg5IDY5MiA1ODhUNTEzIDU4NUgzMTlMMjgyIDQyN0wyNDIgMjcyUTI0MiAyNzAgMzUxIDI3MFEzODggMjcwIDQxMCAyNzBUNDQ0IDI2OVQ0NjAgMjY3VDQ2OSAyNjVUNDc3IDI2MScsXG4gICAgMHhFMDA5OiAnMjI4IDMyNVExNzAgMzIyIDE1NiAzMTZUMTI3IDMwOVExMDggMzA5IDEwNCAzMTRROTkgMzE5IDk5IDMyMlQxMDggMzQxUTEyNSAzNzYgMTcxIDQwMFQyNjggNDI1SDI3MVEzMDIgNDI1IDMxOSAzOTZRMzI4IDM3NyAzMjggMzU4UTMyOCAzMzIgMzI0IDMxNFEzMTEgMjcwIDI4NiAyMjFRMjc0IDE5NCAyNzQgMTkySDI3NVEzMzkgMjM0IDQ4NCAzMjVUNjM5IDQyMVE2NjkgNDM0IDY5MSA0MzRUNzIzIDQyNVQ3MzQgNDA2UTczNCAzOTQgNzE5IDM4MVE3MTUgMzc2IDY0NCAzMzBMNTc1IDI4N0w1NjYgMjY3UTU0MyAyMzMgNTI2IDE3NlE1MjAgMTYwIDUxNSAxNDNUNTA4IDExNVQ1MDYgMTA1UTUwNiAxMDMgNTMzIDEwM1E1ODUgMTAzIDYwNyAxMTBUNjQxIDExOFE2NzAgMTE4IDY3MCAxMDdRNjcwIDEwMCA2NjEgODVRNjQzIDUwIDU5OCAyN1Q1MDQgM1E0NjUgMyA0NTAgMzZRNDQxIDUxIDQ0MSA3M1E0NDEgODQgNDQ0IDk2UTQ1MiAxNDYgNDg0IDIwNUw0OTcgMjM2TDMyNCAxMjVRMTQzIDEyIDEzNSAxMFExMDMgLTYgNzcgLTZRNjEgLTYgNDkgMlQzNyAyMVEzNyAzNiA0OSA0NlQxMjQgOTZMMTk1IDE0MUwyMDQgMTU2UTIxOSAxNzkgMjQzIDI0OFQyNjQgMzIzUTI2NCAzMjUgMjI4IDMyNScsXG4gICAgMHhFMDBDOiAnODYgNDcyUTkzIDQ3NyAzODEgNjE0VDY3MyA3NTJRNjgwIDc1MiA2ODYgNzQ2VDY5MyA3MzJUNjg5IDcyMVE2ODYgNzE1IDQxOCA1OTBMMTUxIDQ2MUw0MTggMzMyUTY4NCAyMDcgNjg5IDIwMVE2OTMgMTk1IDY5MyAxOTBRNjkzIDE4MyA2ODcgMTc3VDY3NSAxNzBRNjY4IDE3MCAzODAgMzA3VDg2IDQ1MFE4MiA0NTQgODIgNDYxUTgyIDQ2NyA4NiA0NzJaTTM2OSAxMDFWMTI2UTM2OSAxNTYgMzgyIDE1NkgzODRRMzg1IDE1NyAzODYgMTU3UTQwOSAxNTcgNDA5IDExNVY5OFY1NEg2ODBRNjkzIDM5IDY5MyAzNFQ2ODAgMTRINDA5Vi0xNDJINjgwUTY5MyAtMTU1IDY5MyAtMTYyUTY5MyAtMTY3IDY4MCAtMTgySDQwOVYtMjczUTM5NiAtMjg0IDM4OCAtMjg0UTM4MiAtMjg0IDM2OSAtMjc1Vi0xODJIOTVRODIgLTE2NyA4MiAtMTYyUTgyIC0xNTUgOTUgLTE0MkgzNjlWMTRIOTVROTMgMTcgODkgMjFUODQgMjdUODIgMzRUODMgNDBUODkgNDdUOTUgNTRIMzY5VjEwMScsXG4gICAgMHhFMDBEOiAnODkgNzQ1UTk1IDc1MiAxMDAgNzUyUTEwNiA3NTIgMzk0IDYxNVQ2ODkgNDcyUTY5MyA0NjggNjkzIDQ2MVQ2ODkgNDUwUTY4NCA0NDUgMzk2IDMwOFQxMDAgMTcwUTk1IDE3MCA4OSAxNzZUODIgMTkwUTgyIDE5NSA4NiAyMDFROTEgMjA4IDM1OCAzMzJMNjI0IDQ2MUwzNTggNTkwUTkwIDcxNSA4NiA3MjFRODIgNzI1IDgyIDczMVE4MiA3MzkgODkgNzQ1Wk0zNjkgMTAxVjEyNlEzNjkgMTU2IDM4MiAxNTZIMzg0UTM4NSAxNTcgMzg2IDE1N1E0MDkgMTU3IDQwOSAxMTVWOThWNTRINjgwUTY5MyAzOSA2OTMgMzRUNjgwIDE0SDQwOVYtMTQySDY4MFE2OTMgLTE1NSA2OTMgLTE2MlE2OTMgLTE2NyA2ODAgLTE4Mkg0MDlWLTI3M1EzOTYgLTI4NCAzODggLTI4NFEzODIgLTI4NCAzNjkgLTI3NVYtMTgySDk1UTgyIC0xNjcgODIgLTE2MlE4MiAtMTU1IDk1IC0xNDJIMzY5VjE0SDk1UTkzIDE3IDg5IDIxVDg0IDI3VDgyIDM0VDgzIDQwVDg5IDQ3VDk1IDU0SDM2OVYxMDEnLFxuICAgIDB4RTAwRTogJzk3IDE3MlE4MiAxNzIgODIgMTkwUTgyIDE5NyA4NiAyMDFROTQgMjA5IDE3MyAyNDZUMzI3IDMxOVQ0MDIgMzU3UTQwNSAzNjAgNDM0IDQ0OFQ0NjIgNTM5TDI3OCA2MjhROTYgNzEzIDg2IDcyMVE4MiA3MjUgODIgNzMyVDg4IDc0NVQxMDIgNzUyUTEwMyA3NTIgMTI1IDc0MlQxOTggNzA5VDI5MyA2NjZRMzQyIDY0MiAzODUgNjIyVDQ1MyA1OTBUNDc4IDU3OVE0NzkgNTc5IDUwNiA2NTlUNTYyIDgyNFQ1OTggOTE1UTYwMiA5MTkgNjA5IDkxOVQ2MjIgOTEzVDYyOSA5MDFRNjI5IDg5OCA1NzEgNzI4UTU0NiA2NTYgNTMxIDYwOFQ1MTggNTU5UTU1NSA1MzkgNjAyIDUxOVE2NjQgNDg4IDY3OSA0NzlUNjk0IDQ2MVE2OTQgNDU3IDY4OSA0NTBRNjgwIDQ0MyA2MTYgNDEzVDQ5NCAzNTZUNDM1IDMyNkwzODkgMTkwTDM0MiA1N0w1MTMgNTVINjgyUTY5NCA0MyA2OTQgMzRRNjk0IDI4IDY4OSAyMUw2ODIgMTdMNTA2IDE1SDMyOUwzMjIgLThRMzIwIC0xMyAzMTAgLTQxVDI5NSAtODVMMjc1IC0xNDFINjgwUTY4MiAtMTQzIDY4NCAtMTQ2VDY4OCAtMTUxVDY5MSAtMTU2VDY5MyAtMTYyUTY5MyAtMTcyIDY4MiAtMTc5TDQ3MyAtMTgxSDI2MkwyMjAgLTMwM1ExOTIgLTM4OCAxODUgLTQwNFQxNjYgLTQyMVExNjAgLTQyMSAxNTMgLTQxNVQxNDYgLTQwM1ExNDYgLTQwMCAxNzkgLTMwMlQyMjAgLTE4NVEyMjAgLTE4MSAxNTggLTE4MUw5MyAtMTc5TDg2IC0xNzRRODIgLTE2OSA4MiAtMTYxUTgyIC0xNTIgOTMgLTE0MUgxNjRMMjMzIC0xMzlMMjYwIC02M0wyODYgMTVIMTg5TDkzIDE3TDg2IDIxUTgyIDI2IDgyIDM0UTgyIDQ0IDkzIDU1SDE5OEwzMDAgNTdMMzQyIDE3OVEzNTAgMjA0IDM2MSAyMzhUMzc4IDI4NlQzODIgMzAxTDI0NiAyMzdRMTExIDE3MiA5NyAxNzJaTTYyNCA0NjFRNjIxIDQ2NCA1NjAgNDkyUTUxMiA1MTggNTAzIDUxOFE1MDAgNTE4IDUwMCA1MTdRNDk5IDUxMyA0ODggNDc5VDQ2NSA0MTNUNDUzIDM3OUw2MjQgNDYxJyxcbiAgICAweEUwMEY6ICc5NyA1NFE4MiA1NCA4MiA3MlE4MiA3OSA4NiA4NFE5NSA5MSAyMjIgMTUzTDM1MSAyMTVMMzk4IDMyNEw0NDIgNDMzTDI1OCA1MTlROTUgNTk3IDg3IDYwNFE4MiA2MDggODIgNjE1VDg4IDYyOFQxMDIgNjM1UTEwNyA2MzUgNDI0IDQ4NEw0NTggNDY4TDUyNCA2MzBRNTkzIDc4OSA1OTcgNzk1UTYwMSA4MDEgNjA5IDgwMVE2MTYgODAxIDYyMiA3OTVUNjI5IDc4MUw1NjIgNjE1TDQ5MyA0NTBMNTg5IDQwNlE2NjUgMzcxIDY3OSAzNjJUNjk0IDM0NFE2OTQgMzM5IDY5MyAzMzdUNjc3IDMyNlQ2MzEgMzAyVDUzOCAyNTdRNTA0IDI0MSA0NjUgMjIzVDQwNiAxOTVUMzg2IDE4NlEzODMgMTg1IDM0NCA5MlQzMDYgLTNMNDg2IDgxUTY2MiAxNjggNjczIDE2OFE2ODAgMTY4IDY4NiAxNjJUNjkzIDE0OFQ2ODkgMTM3UTY4OCAxMzYgNDgyIDM1TDI4MCAtNTlMMjMzIC0xNzZRMTg0IC0yOTEgMTc4IC0yOTlRMTcyIC0zMDMgMTY2IC0zMDNUMTUzIC0yOTdUMTQ2IC0yODNRMTQ2IC0yNzkgMTg1IC0xODZUMjI0IC05MFEyMjUgLTg4IDIyMyAtODhRMjE5IC04OCAxOTMgLTEwMVExMDkgLTE0MyA5OCAtMTQzUTgyIC0xMzggODIgLTEyMlE4MiAtMTE2IDg1IC0xMTNUMTA4IC05OFQxNzEgLTY3TDI0OSAtMzBMMjg5IDYxUTI5NyA4MSAzMDcgMTA3VDMyMSAxNDRUMzI2IDE1N0wyMTggMTA2UTEwOSA1NCA5NyA1NFpNNTUzIDM3OVE0ODAgNDEyIDQ4MCA0MTVRNDc5IDQxNSA0NjAgMzcyVDQyMyAyODVUNDA2IDI0MVE0MDggMjQwIDUxNiAyOTFUNjI0IDM0NEw1NTMgMzc5JyxcbiAgICAweEUwMTA6ICcxMDIgMTY4UTEwMyAxNjggMTUxIDE0NlQyNDcgMTAyVDI5NSA4MVEyOTkgODUgMzIyIDE0NFQzNDQgMjA2TDIxOCAyNjhRMTUzIDI5NyAxMjMgMzEzVDg3IDMzM1Q4MiAzNDRUODYgMzU1UTEwNCAzNjkgMjkxIDQ1NVE0OTEgNTUyIDQ5MSA1NTNMNTQyIDY3M1E1ODEgNzY3IDU5MCA3ODRUNjA5IDgwMVE2MTYgODAxIDYyMiA3OTVUNjI5IDc4MVE2MjkgNzczIDU4NiA2NzdRNTQ2IDU4MSA1NDYgNTc3TDYwOSA2MDZRNjY5IDYzNSA2NzMgNjM1UTY4MCA2MzUgNjg2IDYyOVQ2OTMgNjE1UTY5MyA2MTAgNjkyIDYwOFQ2NzAgNTkzVDYwNCA1NjFMNTI0IDUyMUw0MDAgMjI2TDU0MiAxNTdRNjE3IDEyMyA2NDkgMTA3VDY4NyA4NVQ2OTQgNzJRNjk0IDY2IDY5MCA2MFQ2NzkgNTRRNjY1IDU0IDUyNiAxMTlRMzk0IDE4NiAzODYgMTg2UTM4NSAxODYgMzQyIDg4TDMzMSA2MUw1MDkgLTIzUTY4MCAtMTA1IDY4OCAtMTExUTY5MyAtMTE1IDY5MyAtMTIyVDY4OCAtMTM1VDY3NSAtMTQxSDY3M1E2NjQgLTE0MSA0OTEgLTU5UTMyMCAyMSAzMTYgMjFIMzE1TDI0OSAtMTM2UTE4MyAtMjkzIDE3OCAtMjk5UTE3MiAtMzAzIDE2NiAtMzAzVDE1MyAtMjk3VDE0NiAtMjgzUTE0NiAtMjgyIDE1NCAtMjYxVDE4MSAtMTk3VDIxMyAtMTE5TDI4MCA0MVEyODAgNDYgMTg2IDg2UTE1NyAxMDEgMTIxIDExOVE5MiAxMzMgODcgMTM2VDgyIDE0OFE4MiAxNTUgODggMTYxVDEwMiAxNjhaTTQxOCAzNzBMNDY2IDQ5NVE0NjQgNDk1IDMwOCA0MjBUMTUxIDM0NFQyMDQgMzE3VDMxMSAyNjdUMzY0IDI0NFEzNjQgMjQ3IDQxOCAzNzAnLFxuICAgIDB4RTAxMTogJzgyIDM0UTgyIDQ0IDkzIDU1SDE5OEwzMDAgNTdMMzQyIDE3OVEzNTEgMjA3IDM2MiAyMzhUMzc4IDI4NlQzODQgMzAzVDIzOCAzNzdRMTA5IDQzNSA4NiA0NTBRODIgNDU0IDgyIDQ2MFQ4NiA0NzJROTAgNDc2IDMwMiA1NzlMNTExIDY3OVE1MTIgNjc5IDU1MyA3OTVRNTY5IDg0MiA1NzcgODY2VDU5MiA5MDNUNjAwIDkxN1Q2MDggOTE5UTYxNSA5MTkgNjIyIDkxMlQ2MjkgOTAxUTYyOSA4OTkgNTk1IDc5OVE1ODkgNzc3IDU4MSA3NTNUNTY5IDcxN1Q1NjQgNzAzTDYxOCA3MjhRNjY2IDc1MiA2NzMgNzUyVDY4NiA3NDZUNjkzIDczMlE2OTMgNzIzIDY4MyA3MTdUNjE1IDY4M0w1NDYgNjUwTDQ5MSA0ODhRNDY0IDQxMCA0NTAgMzY4VDQzOCAzMjZRNDkzIDI5NyA1NjIgMjY2UTY2MCAyMTkgNjc3IDIwOVQ2OTQgMTkwUTY5NCAxODMgNjkwIDE3N1Q2NzggMTcxUTY2NCAxNzEgNTQ2IDIyOEw0MjQgMjg2UTQyMiAyODYgMzgyIDE3MkwzNDIgNTdMNTEzIDU1SDY4MlE2OTQgNDMgNjk0IDM0UTY5NCAyOCA2ODkgMjFMNjgyIDE3TDUwNiAxNUgzMjlMMzIyIC04UTMyMCAtMTMgMzEwIC00MVQyOTUgLTg1TDI3NSAtMTQxSDY4MFE2ODIgLTE0MyA2ODQgLTE0NlQ2ODggLTE1MVQ2OTEgLTE1NlQ2OTMgLTE2MlE2OTMgLTE3MiA2ODIgLTE3OUw0NzMgLTE4MUgyNjJMMjIwIC0zMDNRMTkyIC0zODggMTg1IC00MDRUMTY2IC00MjFRMTYwIC00MjEgMTUzIC00MTVUMTQ2IC00MDNRMTQ2IC00MDAgMTc5IC0zMDJUMjIwIC0xODVRMjIwIC0xODEgMTU4IC0xODFMOTMgLTE3OUw4NiAtMTc0UTgyIC0xNjkgODIgLTE2MVE4MiAtMTUyIDkzIC0xNDFIMTY0TDIzMyAtMTM5TDI2MCAtNjNMMjg2IDE1SDE4OUw5MyAxN0w4NiAyMVE4MiAyNiA4MiAzNFpNNDk1IDYyM1E0OTUgNjI2IDQ5MyA2MjZUMzIxIDU0NFQxNTEgNDYxTDM5OCAzNDNRMzk5IDM0MyA0MDUgMzYwVDQyMyA0MTVUNDQ2IDQ4M1E0NTcgNTEzIDQ2OSA1NTFUNDg4IDYwNlQ0OTUgNjIzJyxcbiAgICAweEUwMTY6ICc4MiAtNlE4MiAxIDk1IDE0SDI2MkwyOTUgOTRRMzMxIDE3MSAzMzEgMTc0UTMyNCAxNzUgMzEyIDE3OFQyNjcgMTk0VDIwNiAyMjdUMTQ2IDI4M1Q5OCAzNjhRODQgNDA2IDg0IDQ2MVQ5OCA1NTRRMTI2IDYzMiAxOTQgNjg1VDM0OSA3NTBRMzYwIDc1MiA0ODAgNzUySDU5MUw2MDQgNzgzUTYyMCA4MTkgNjI0IDgyMVE2MzEgODI4IDY0MCA4MjhRNjUzIDgyNSA2NTggODEwUTY1OCA4MDggNjQ2IDc4MUw2MzUgNzU0UTYzNSA3NTIgNjU4IDc1MlE2ODAgNzUyIDY4NiA3NDZRNjkzIDczOSA2OTMgNzMyUTY5MyA3MjggNjkyIDcyNlQ2ODYgNzE5VDY4MCA3MTJINjE1TDUwNiA0NjZRNDc5IDQwNyA0NTEgMzQ0VDQwOCAyNDhUMzkzIDIxNFEzOTMgMjEwIDUzNSAyMTBINjgwUTY5MyAxOTQgNjkzIDE5MFQ2ODAgMTcwSDM3M0wzNDAgOTJMMzA0IDE0SDY4MFE2OTMgMSA2OTMgLTZRNjkzIC0xMSA2ODAgLTI2SDI4NkwyNTMgLTEwM0wyMTggLTE3OUw0NTEgLTE4MUg2ODJRNjk0IC0xOTMgNjk0IC0yMDFRNjk0IC0yMTIgNjgyIC0yMTlMNDQwIC0yMjFIMjAwTDE3OCAtMjcwUTE2MCAtMzA5IDE1NCAtMzE5VDEzOSAtMzMwUTEyMiAtMzMwIDExOCAtMzEyTDE1NSAtMjIzUTE1NSAtMjIxIDEyNiAtMjIxSDk1UTgyIC0yMDYgODIgLTIwMVQ5NSAtMTgxSDE3NUwyMDYgLTEwOFEyMzcgLTM1IDI0MiAtMzBRMjQyIC0yNiAxNjkgLTI2SDk1UTgyIC0xMSA4MiAtNlpNNTcxIDcxMFE1NzEgNzEyIDQ2OSA3MTJRNDQzIDcxMiA0MTYgNzEyVDM3MSA3MTFUMzUxIDcxMFEyNzkgNzAwIDIyMSA2NTZUMTM4IDU0OFExMjQgNTA4IDEyNCA0NjFUMTM4IDM3NFExODYgMjQ1IDM1MSAyMTJMNDYwIDQ1OVE1NzEgNzA5IDU3MSA3MTAnLFxuICAgIDB4RTAxNzogJzgyIC0xNFQ4MiAtN1Q5NSAxNUg0MzFMNTI5IDE3MEg0MzVRMzQxIDE3MCAzMzMgMTc1UTE0OSAyMTggOTggMzY4UTg0IDQwNiA4NCA0NjFRODQgNTE1IDk4IDU1NVExMjYgNjMzIDE5MyA2ODZUMzQ2IDc1MFEzNDcgNzUwIDM3MyA3NTBUNDQwIDc1MVQ1MjAgNzUySDY4MFE2OTMgNzM5IDY5MyA3MzJRNjkzIDcyNyA2ODAgNzEySDUyNlEzNjQgNzEyIDM1MyA3MTBRMjY4IDcwMCAyMDcgNjQ2VDEyNiA1MTJRMTIzIDQ5NiAxMjMgNDYxVDEyNiA0MTBRMTQxIDM1MCAxODAgMzA0VDI4MCAyMzJRMzEyIDIxNyAzNDQgMjE0VDQ2NCAyMTBINTU1TDU4OSAyNjFRNjEzIDMwMSA2MjAgMzExVDYzNSAzMjFRNjQ0IDMyMSA2NTAgMzE1VDY1NyAzMDFRNjU3IDI5NiA2NTEgMjg2VDYzMCAyNTJUNjA0IDIxMlE2MDQgMjEwIDY0MiAyMTBINjgwUTY5MyAxOTcgNjkzIDE5MFE2OTMgMTg2IDY5MiAxODRUNjg2IDE3N1Q2ODAgMTcwSDU3OEw1MjYgOTJMNDc4IDE3TDU4MCAxNUg2ODJRNjkzIDQgNjkzIC00VDY4MCAtMjVINDUxTDM1MyAtMTc5TDUxOCAtMTgxSDY4MlE2OTQgLTE5MyA2OTQgLTIwMVE2OTQgLTIxMSA2ODIgLTIxOUw1MDQgLTIyMUgzMjZMMjkzIC0yNzJRMjU3IC0zMzIgMjQ2IC0zMzJRMjM4IC0zMzIgMjMyIC0zMjZUMjI1IC0zMTNRMjI1IC0zMTAgMjI2IC0zMDhRMjI2IC0zMDUgMjUxIC0yNjVUMjc4IC0yMjNRMjc4IC0yMjEgMTg2IC0yMjFIOTVROTMgLTIxOCA4OSAtMjE0VDg0IC0yMDhUODIgLTIwMVQ5NSAtMTgxSDMwNkw0MDQgLTI1SDI0OUw5MyAtMjNMODYgLTE5UTgyIC0xNCA4MiAtNycsXG4gICAgMHhFMDE4OiAnODIgNzMyUTgyIDczOSA5NSA3NTJIMjUxSDM0OFE0MjAgNzUyIDQ2MCA3NDRUNTUxIDcwOFE1NjYgNjk3IDU2NiA3MDFRNjE4IDgxNSA2MjQgODIxUTYzMSA4MjggNjQwIDgyOFE2NTMgODI1IDY1OCA4MTBMNjAwIDY3N1E2MDAgNjcxIDYxNSA2NTZUNjUzIDYwNVQ2ODkgNTE3UTY5MiA0OTYgNjkyIDQ2MVQ2ODkgNDA2UTY2OCAzMjUgNjE1IDI2NlE1NzIgMjIxIDUxMyAxOTZUMzkxIDE3MEgzNzNMMzQwIDkyTDMwNCAxNEg2ODBRNjkzIDEgNjkzIC02UTY5MyAtMTEgNjgwIC0yNkgyODZMMjUzIC0xMDNMMjE4IC0xNzlMNDUxIC0xODFINjgyUTY5NCAtMTkzIDY5NCAtMjAxUTY5NCAtMjEyIDY4MiAtMjE5TDQ0MCAtMjIxSDIwMEwxNzggLTI3MFExNjAgLTMwOSAxNTQgLTMxOVQxMzkgLTMzMFExMjIgLTMzMCAxMTggLTMxMkwxNTUgLTIyM1ExNTUgLTIyMSAxMjYgLTIyMUg5NVE4MiAtMjA2IDgyIC0yMDFUOTUgLTE4MUgxNzVMMjA2IC0xMDhRMjM3IC0zNSAyNDIgLTMwUTI0MiAtMjYgMTY5IC0yNkg5NVE4MiAtMTEgODIgLTZRODIgMSA5NSAxNEgyNjJMMjk1IDkyTDMzMSAxNzBIOTVROTMgMTcyIDkxIDE3NVQ4NyAxODBUODQgMTg1VDgyIDE5MVE4MiAxOTkgOTMgMjEwSDIyMEwzNDkgMjEyTDU0OSA2NTlRNTA3IDY5MiA0NjIgNzAyVDMzOCA3MTJIMjQ5SDk1UTgyIDcyNyA4MiA3MzJaTTY1MiA0NzNRNjUyIDUxMyA2MzYgNTUyVDYwMyA2MTFUNTgyIDYzMlE1ODEgNjMyIDQ4NyA0MjJUMzkzIDIxMFE0MjQgMjEwIDQ2MCAyMjBUNTM1IDI1M1Q2MDUgMzE2VDY0OSA0MTBRNjUyIDQyNyA2NTIgNDYxVjQ3MycsXG4gICAgMHhFMDE5OiAnODIgNzMyUTgyIDczOSA5NSA3NTJIMjUxUTQxNSA3NTIgNDI2IDc1MFE1MzkgNzM2IDYxNSA2NTdRNjY3IDU5OSA2ODkgNTE3UTY5MiA0OTYgNjkyIDQ2MVQ2ODkgNDA2UTY2OCAzMjUgNjE1IDI2NlE1MjIgMTcwIDM4MiAxNzBIMzU1TDMyNiA5NVEzMTkgODAgMzExIDU5VDI5OCAyOFQyOTMgMTdRMjkzIDE1IDQ4NiAxNUg2ODBRNjkzIDAgNjkzIC02VDY4MCAtMjVIMjc1TDIxMyAtMTc5TDQ0OSAtMTgxSDY4MlE2OTMgLTE5MiA2OTMgLTE5OVQ2ODAgLTIyMUgxOThMMTc4IC0yNzBRMTUzIC0zMzMgMTM5IC0zMzNRMTMyIC0zMzMgMTI2IC0zMjdUMTE5IC0zMTRUMTM1IC0yNjZUMTUzIC0yMjNRMTUzIC0yMjEgMTI0IC0yMjFIOTVRODIgLTIwNyA4MiAtMjAxVDk1IC0xODFIMTcxTDIzMyAtMjVIMTYyTDkzIC0yM0w4NiAtMTlRODIgLTE0IDgyIC03VDk1IDE1SDI1MUwzMTMgMTcwSDIwMkw5MyAxNzJMODYgMTc3UTgyIDE4MiA4MiAxOTBRODIgMTk5IDkzIDIxMEgyMTFMMzI5IDIxMkwzNDkgMjYxUTM2NiAzMDEgMzcyIDMxMVQzODYgMzIxUTM5MiAzMjEgMzk5IDMxNVQ0MDcgMzAyUTQwNyAyOTUgMzkwIDI1NFQzNzMgMjEwUTM3NCAyMDkgMzc3IDIwOVE0MTIgMjA5IDQ0NCAyMTdRNTEyIDIzMSA1NjQgMjczVDYzOCAzNzdRNjUxIDQxNCA2NTEgNDYxUTY1MSA1MDkgNjM4IDU0OFE2MTMgNjEzIDU1NSA2NTZUNDIyIDcxMFE0MTEgNzEyIDI0OSA3MTJIOTVRODIgNzI3IDgyIDczMicsXG4gICAgMHhFMDFBOiAnNjkzIC0xMTVUNjkzIC0xMjJUNjgwIC0xNDRIMzE1TDI2OSAtMTk5UTIyMSAtMjU1IDIxMyAtMjU1SDIxMlEyMDMgLTI1NSAxOTcgLTI0OFQxOTMgLTIzMVExOTUgLTIyNSAyMjkgLTE4NEwyNjIgLTE0NEgxODZMMTEzIC0xNDJMMTA2IC0xMzdRMTAyIC0xMzAgMTAyIC0xMjVRMTAyIC0xMTkgMTE1IC0xMDRIMjk4TDQyNiA1MkgzODZRMzQyIDU0IDMwOSA2M1EyMzYgNzkgMTgwIDEyOVQ5OCAyNDlRODQgMjg5IDg0IDM0M1E4NCAzOTggOTggNDM2UTEyNiA1MTQgMTkzIDU2N1QzNDYgNjMyUTM0NyA2MzIgMzczIDYzMlQ0NDAgNjMzVDUyMCA2MzRINjgwUTY4MiA2MzEgNjg2IDYyN1Q2OTEgNjIxVDY5MyA2MTRUNjgwIDU5NEg1MjZRMzY0IDU5NCAzNTMgNTkyUTI2OCA1ODEgMjA3IDUyOFQxMjYgMzk0UTEyMyAzNzggMTIzIDM0M1QxMjYgMjkyUTE0MSAyMzEgMTgxIDE4NVQyODAgMTE0UTMyOSA5MiA0MTUgOTJINDYyTDUwNiAxNDdRNTU0IDIwMyA1NjIgMjAzSDU2M1E1NzIgMjAzIDU3OCAxOTZUNTgyIDE3OFE1NzkgMTczIDU0NiAxMzJMNTEzIDk0TDU5OCA5Mkg2ODJRNjkzIDgxIDY5MyA3M1Q2ODAgNTJINDgwTDM0OSAtMTAyTDUxNSAtMTA0SDY4MlE2OTMgLTExNSA2OTMgLTEyMicsXG4gICAgMHhFMDFCOiAnODIgNjEwVDgyIDYxNFQ4MyA2MjBUODkgNjI3VDk1IDYzNEgyNTFRMzc4IDYzNCA0MDkgNjMzVDQ2OSA2MjNRNTQwIDYwNCA1OTYgNTU0VDY3OCA0MzZRNjkxIDM5NyA2OTEgMzQzVDY3OCAyNDlRNjUzIDE4MSA1OTcgMTMxVDQ2OSA2M1E0MjcgNTIgMzYyIDUySDMxNUwyMTMgLTEwMkw0MzggLTEwNEg2NjJRNjczIC0xMTUgNjczIC0xMjNRNjczIC0xMjkgNjYwIC0xNDRIMTg2TDE1MSAtMTk3UTExNCAtMjUwIDEwOSAtMjUzUTEwNiAtMjU0IDEwNCAtMjU0UTEwMCAtMjU0IDk4IC0yNTNROTEgLTI1MyA4NyAtMjQ4VDgyIC0yMzVRODIgLTIzMCAxMDkgLTE4NkwxMzggLTE0NEgxMTVRODIgLTE0NCA4MiAtMTI1UTgyIC0xMTkgOTUgLTEwNEgxNjZMMjY2IDQ5UTI2NiA1MiAxODIgNTJIOTVRODIgNjUgODIgNzJRODIgNzYgODMgNzhUODkgODVUOTUgOTJIMjk1TDMyOSAxNDNRMzY1IDE5NSAzNjkgMTk4UTM3MiAyMDMgMzgwIDIwM1EzODUgMjAzIDM5MSAxOTdUMzk4IDE4NVEzOTggMTg0IDM5OCAxODRMMzk5IDE4MlEzOTkgMTc1IDM2OSAxMjlMMzQ0IDk0UTM0NCA5MiAzNzYgOTJRNDAyIDkyIDQyMiA5NFE0OTYgMTA0IDU1NCAxNDdUNjM4IDI1NlE2NTEgMjk1IDY1MSAzNDNRNjUxIDM5MCA2MzggNDI5UTYxMyA0OTQgNTU1IDUzN1Q0MjIgNTkyUTQxMSA1OTQgMjQ5IDU5NEg5NVE4MiA2MTAgODIgNjE0JyxcbiAgICAweDFENDAwOiAnMjk2IDBRMjc4IDMgMTY0IDNRNTggMyA0OSAwSDQwVjYySDkyUTE0NCA2MiAxNDQgNjRRMzg4IDY4MiAzOTcgNjg5UTQwMyA2OTggNDM0IDY5OFE0NjMgNjk4IDQ3MSA2ODlRNDc1IDY4NiA1MzggNTMwVDY2MyAyMThMNzI0IDY0UTcyNCA2MiA3NzYgNjJIODI4VjBIODE3UTc5NiAzIDY1OCAzUTUwOSAzIDQ4NSAwSDQ3MlY2Mkg1MTdRNTYxIDYyIDU2MSA2M0w1MTcgMTc1SDI2MkwyNDAgMTIwUTIxOCA2NSAyMTcgNjRRMjE3IDYyIDI2MSA2MkgzMDZWMEgyOTZaTTM5MCAyMzdMNDkyIDIzOEw0NDAgMzY1UTM5MCA0OTEgMzg4IDQ5MVEyODcgMjM5IDI4NyAyMzdIMzkwJyxcbiAgICAweDFENDAxOiAnNzIwIDUxMFE3MjAgNDc2IDcwNCA0NDhUNjY1IDQwNFQ2MTkgMzc3VDU4MCAzNjJMNTY0IDM1OUw1ODMgMzU2UTYwMiAzNTMgNjMyIDM0MlQ2OTAgMzEyUTcxMiAyOTIgNzI1IDI3NlE3NTIgMjM1IDc1MiAxODlWMTgzUTc1MiAxNjAgNzQxIDEyNVE2OTggMTggNTQ3IDJRNTQzIDEgMjg4IDBIMzlWNjJIMTQ3VjYyNEgzOVY2ODZIMjY0SDQwOVE1MDIgNjg2IDU0MiA2ODFUNjI0IDY1NVE3MjAgNjA3IDcyMCA1MTBaTTU2MyA1MTNRNTYzIDU1MyA1NDggNTc4VDUxOCA2MTFUNDg2IDYyMlE0NzkgNjI0IDM4NSA2MjRIMjkzVjM4MkgzNzVRNDU4IDM4MyA0NjcgMzg1UTU2MyA0MDUgNTYzIDUxM1pNNTkwIDE5MlE1OTAgMzA3IDUwNSAzMjlRNTA0IDMzMCA1MDMgMzMwTDM5OCAzMzFIMjkzVjYySDM5MUg0MDBINDQ0UTQ5NiA2MiA1MjggNzVUNTgwIDEzMVE1OTAgMTU1IDU5MCAxOTInLFxuICAgIDB4MUQ0MDI6ICc2NCAzNDNRNjQgNTAyIDE3NCA1OTlUNDY4IDY5N1E1MDIgNjk3IDUzMyA2OTFUNTg2IDY3NFQ2MjMgNjU1VDY0NyA2MzlUNjU3IDYzMkw2OTQgNjYzUTcwMyA2NzAgNzExIDY3N1Q3MjMgNjg3VDczMCA2OTJUNzM1IDY5NVQ3NDAgNjk2VDc0NiA2OTdRNzU5IDY5NyA3NjIgNjkyVDc2NiA2NjhWNjI3VjQ4OVY0NDlRNzY2IDQyOCA3NjIgNDI0VDc0MiA0MTlINzMySDcyMFE2OTkgNDE5IDY5NyA0MzZRNjkwIDQ5OCA2NTcgNTQ1UTYxMSA2MTggNTMyIDYzMlE1MjIgNjM0IDQ5NiA2MzRRMzU2IDYzNCAyODYgNTUzUTIzMiA0ODggMjMyIDM0M1QyODYgMTMzUTM1NSA1MiA0OTcgNTJRNTk3IDUyIDY1MCAxMTJUNzA0IDIzN1E3MDQgMjQ4IDcwOSAyNTFUNzI5IDI1NEg3MzVRNzUwIDI1NCA3NTUgMjUzVDc2MyAyNDhUNzY2IDIzNFE3NjYgMTM2IDY4MCA2M1Q0NjkgLTExUTI4NSAtMTEgMTc1IDg2VDY0IDM0MycsXG4gICAgMHgxRDQwMzogJzM5IDYyNFY2ODZIMjcwSDMxMEg0MDhRNTAwIDY4NiA1NDUgNjgwVDYzOCA2NDlRNzY4IDU4NCA4MDUgNDM4UTgxNyAzODggODE3IDMzOFE4MTcgMTcxIDcwMiA3NVE2MjggMTcgNTE1IDJRNTA0IDEgMjcwIDBIMzlWNjJIMTQ3VjYyNEgzOVpNNjU1IDMzN1E2NTUgMzcwIDY1NSAzOTBUNjUwIDQ0MlQ2MzkgNDk0VDYxNiA1NDBUNTgwIDU4MFQ1MjYgNjA3VDQ1MSA2MjNRNDQzIDYyNCAzNjggNjI0SDI5OFY2MkgzNzdIMzg3SDQwN1E0NDUgNjIgNDcyIDY1VDU0MCA4M1Q2MDYgMTI5UTYyOSAxNTYgNjQwIDE5NVQ2NTMgMjYyVDY1NSAzMzcnLFxuICAgIDB4MUQ0MDQ6ICc3MjMgMjg2UTcyMSAyODQgNzAwIDE0NVQ2NzcgM1YwSDM5VjYySDE0N1Y2MThIMzlWNjgwSDY2MFY2NzZRNjYyIDY3MCA2NzUgNTUyVDY5MSA0MjhWNDI0SDYyOVY0MjhRNjI5IDQyOSA2MjcgNDQ4VDYxOCA0OTRUNjAxIDU0MVE1NzQgNTkzIDUyNyA2MDVUMzgyIDYxOEgzNzRIMzA0VjM4NEgzMzZRMzM4IDM4NCAzNDcgMzg0VDM2MSAzODRUMzc2IDM4NlQzOTIgMzkwVDQwNyAzOTdUNDIxIDQwN1Q0MzIgNDIzUTQ0MiA0NDQgNDQzIDQ4MlY1MDFINTA1VjIwNUg0NDNWMjI0UTQ0MiAyNTggNDM1IDI3OFQ0MTEgMzA3VDM4MCAzMThUMzM2IDMyMkgzMDRWNjJIMzc1SDM5NFE0MjkgNjIgNDQ5IDYyVDQ5NyA2NlQ1NDEgNzZUNTc3IDk1VDYwOSAxMjZUNjMyIDE3MFQ2NTEgMjMyUTY2MSAyODcgNjYxIDI4OUg3MjNWMjg2JyxcbiAgICAweDFENDA1OiAnNDI1IDBMMjI4IDNRNjMgMyA1MSAwSDM5VjYySDE0N1Y2MThIMzlWNjgwSDY0NFY2NzZRNjQ3IDY3MCA2NTkgNTUyVDY3NSA0MjhWNDI0SDYxM1E2MTMgNDMzIDYwNSA0NzdRNTk5IDUxMSA1ODkgNTM1VDU2MiA1NzRUNTMwIDU5OVQ0ODggNjEyVDQ0MSA2MTdUMzg3IDYxOEgzNjhIMzA0VjM3MUgzMzNRMzg5IDM3MyA0MTEgMzkwVDQzNyA0NjhWNDg4SDQ5OVYxOTJINDM3VjIxMlE0MzYgMjQ0IDQzMCAyNjNUNDA4IDI5MlQzNzggMzA1VDMzMyAzMDlIMzA0VjYySDQzOVYwSDQyNScsXG4gICAgMHgxRDQwNjogJzQ2NSAtMTBRMjgxIC0xMCAxNzMgODhUNjQgMzQzUTY0IDQxMyA4NSA0NzFUMTQzIDU2OFQyMTcgNjMxVDI5OCA2NzBRMzcxIDY5NyA0NDkgNjk3UTQ1MiA2OTcgNDU5IDY5N1Q0NzAgNjk2UTUwMiA2OTYgNTMxIDY5MFQ1ODIgNjc1VDYxOCA2NThUNjQ0IDY0MVQ2NTYgNjMyTDczMiA2OTVRNzM0IDY5NyA3NDUgNjk3UTc1OCA2OTcgNzYxIDY5MlQ3NjUgNjY4VjYyN1Y0ODlWNDQ5UTc2NSA0MjggNzYxIDQyNFQ3NDEgNDE5SDczMUg3MjRRNzA1IDQxOSA3MDIgNDIyVDY5NSA0NDRRNjgzIDUyMCA2MzEgNTc3VDQ5NSA2MzVRMzY0IDYzNSAyOTUgNTYzUTI2MSA1MjggMjQ3IDQ3N1QyMzIgMzQzUTIzMiAyOTYgMjM2IDI2MFQyNTYgMTg1VDI5NiAxMjBUMzY2IDc2VDQ3MiA1MlE0ODEgNTEgNDk4IDUxUTU0NCA1MSA1NzMgNjdUNjA3IDEwOFE2MDggMTExIDYwOCAxNjRWMjE0SDQ2NFYyNzZINDc5UTUwNiAyNzMgNjgwIDI3M1E4MTYgMjczIDgzNCAyNzZIODQ1VjIxNEg3NjVWMTEzVjUxUTc2NSAxNiA3NjMgOFQ3NTAgMFE3NDIgMiA3MDkgMTZUNjU4IDQwTDY0OCA0NlE1OTIgLTEwIDQ2NSAtMTAnLFxuICAgIDB4MUQ0MDc6ICc0MDAgMFEzNzYgMyAyMjYgM1E3NSAzIDUxIDBIMzlWNjJIMTQ3VjYyNEgzOVY2ODZINTFRNzUgNjgzIDIyNiA2ODNRMzc2IDY4MyA0MDAgNjg2SDQxMlY2MjRIMzA0VjM4OEg1OTVWNjI0SDQ4N1Y2ODZINDk5UTUyMyA2ODMgNjczIDY4M1E4MjQgNjgzIDg0OCA2ODZIODYwVjYyNEg3NTJWNjJIODYwVjBIODQ4UTgyNCAzIDY3NCAzUTUyMyAzIDQ5OSAwSDQ4N1Y2Mkg1OTVWMzI2SDMwNFY2Mkg0MTJWMEg0MDAnLFxuICAgIDB4MUQ0MDg6ICczOTcgMFEzNzAgMyAyMTggM1E2NSAzIDM4IDBIMjVWNjJIMTM5VjYyNEgyNVY2ODZIMzhRNjUgNjgzIDIxOCA2ODNRMzcwIDY4MyAzOTcgNjg2SDQxMFY2MjRIMjk2VjYySDQxMFYwSDM5NycsXG4gICAgMHgxRDQwOTogJzE3NCAxMTRRMTc0IDk2IDE2OSA4MlQxNTkgNjNUMTQ0IDQ3TDE1NSA0NVExODMgNDAgMjAzIDQwUTI3MSA0MCAyOTAgMTA0UTI5NCAxMTggMjk0IDE1MFQyOTUgMzgwVjYyNEgxNTRWNjg2SDE2OVExOTYgNjgzIDM2NSA2ODNRNDk5IDY4MyA1MTcgNjg2SDUyN1Y2MjRINDQ2VjM3OVE0NDYgMTgzIDQ0NiAxNTNUNDQxIDEwOFE0MTMgMzIgMzE1IDJRMjY2IC0xMSAyMDggLTExUTE2MCAtMTEgMTE4IC0yVDQyIDM3VDggMTE0VjEyMlE4IDE1MCAzMCAxNzRUOTEgMTk4VDE1MiAxNzRUMTc0IDEyMlYxMTQnLFxuICAgIDB4MUQ0MEE6ICc0MDAgMFEzNzYgMyAyMjYgM1E3NSAzIDUxIDBIMzlWNjJIMTQ3VjYyNEgzOVY2ODZINTFRNzUgNjgzIDIyNiA2ODNRMzc2IDY4MyA0MDAgNjg2SDQxMlY2MjRIMzA0VjMzOEw0NzIgNDgzTDYzNCA2MjRINTY1VjY4Nkg1NzZRNTk3IDY4MyA3MjggNjgzUTgxNCA2ODMgODI5IDY4Nkg4MzZWNjI0SDczMEw2MTQgNTI0UTUwNyA0MzIgNDk3IDQyMlE0OTYgNDIyIDQ5OCA0MThUNTE0IDM5NVQ1NTMgMzQyVDYyNyAyNDFMNzU5IDYzTDgwNSA2Mkg4NTJWMEg4NDJRODMwIDMgNzAxIDNRNTUwIDMgNTI2IDBINTEzVjYySDU0OVE1ODQgNjIgNTg0IDYzUTU4MyA2NSA0ODYgMTk2VDM4OCAzMjhMMzA0IDI1NlY2Mkg0MTJWMEg0MDAnLFxuICAgIDB4MUQ0MEI6ICc2NDMgMjg1UTY0MSAyODAgNjI5IDE0OFQ2MTIgNFYwSDM5VjYySDE0N1Y2MjRIMzlWNjg2SDUxUTc1IDY4MyAyMjggNjgzUTQxNSA2ODUgNDI1IDY4Nkg0MzlWNjI0SDMwNFY2MkgzNTJIMzc4UTQ5MiA2MiA1MzkgMTM4UTU1MSAxNTYgNTU4IDE3OFQ1NjkgMjE0VDU3NiAyNTVUNTgxIDI4OUg2NDNWMjg1JyxcbiAgICAweDFENDBDOiAnMzE0IDBRMjk2IDMgMTgxIDNUNDggMEgzOVY2MkgxNDdWNjI0SDM5VjY4NkgzMDVRMzE2IDY3OSAzMjMgNjY3UTMzMCA2NTMgNDM0IDQxNEw1NDYgMTU3TDY1OCA0MTRRNzY2IDY2MiA3NzMgNjc0UTc3OCA2ODEgNzg4IDY4NkgxMDUyVjYyNEg5NDRWNjJIMTA1MlYwSDEwNDBRMTAxNiAzIDg3NCAzVDcwOCAwSDY5NlY2Mkg4MDRWMzQxTDgwMyA2MThMNzg2IDU4MFE3NzAgNTQzIDczNSA0NjJUNjcxIDMxNVE1NDAgMTMgNTM2IDlRNTI4IDEgNTA3IDFRNDg1IDEgNDc3IDlRNDcyIDE0IDQwOCAxNjJUMjgxIDQ1N1QyMTcgNjAzUTIxNSA2MDMgMjE1IDMzNFY2MkgzMjNWMEgzMTQnLFxuICAgIDB4MUQ0MEQ6ICczMTQgMFEyOTYgMyAxODEgM1Q0OCAwSDM5VjYySDE0N1Y2MjRIMzlWNjg2SDE3MUgyNjVRMjg4IDY4NiAyOTcgNjg2VDMwOSA2ODRUMzE1IDY3OVEzMTcgNjc2IDUwMCA0NTVUNjg0IDIzM1Y2MjRINTc2VjY4Nkg1ODVRNjAzIDY4MyA3MTggNjgzVDg1MSA2ODZIODYwVjYyNEg3NTJWMzE5UTc1MiAxNSA3NTAgMTFRNzQ3IDQgNzQyIDJUNzE4IDBINzEyUTcwOCAwIDcwNiAwVDcwMCAwVDY5NiAxVDY5MyAyVDY5MCA0VDY4NyA3VDY4NCAxMVQ2NzkgMTZUNjc0IDIzUTY3MSAyNyA0MzcgMzExTDIxNSA1NzlWNjJIMzIzVjBIMzE0JyxcbiAgICAweDFENDBFOiAnNjQgMzM5UTY0IDQzMSA5NiA1MDJUMTgyIDYxNFQyOTUgNjc1VDQyMCA2OTZRNDY5IDY5NiA0ODEgNjk1UTYyMCA2ODAgNzA5IDU4OVQ3OTggMzM5UTc5OCAxNzMgNjk3IDgyVDQzMiAtMTBRMjYyIC0xMCAxNjMgODVUNjQgMzM5Wk02MjUgNDU0UTYxOCA1MDIgNjAwIDUzOFQ1NjIgNTkzVDUxNSA2MjRUNDY5IDYzOVQ0MzEgNjQyUTMzMSA2NDIgMjc2IDU2M1EyMzIgNDkzIDIzMiAzNTNRMjMyIDMxNSAyMzQgMjg1VDI0NCAyMTZUMjY3IDE0OFQzMDggOTRUMzcyIDU2UTQwNSA0NiA0MzIgNDZRNTE3IDQ2IDU2NyAxMDZUNjI3IDI2N1E2MzEgMjk5IDYzMSAzNTNRNjMxIDQxOCA2MjUgNDU0JyxcbiAgICAweDFENDBGOiAnNDAwIDBRMzc2IDMgMjI2IDNRNzUgMyA1MSAwSDM5VjYySDE0N1Y2MjRIMzlWNjg2SDI1M1E0MzUgNjg2IDQ3MCA2ODVUNTM2IDY3OFE1ODUgNjY4IDYyMSA2NDhUNjc1IDYwNVQ3MDUgNTU3VDcxOCA1MTRUNzIxIDQ4M1Q3MTggNDUxVDcwNCA0MDlUNjczIDM2MlQ2MTYgMzIyVDUzMCAyOTNRNTAwIDI4OCAzOTkgMjg3SDMwNFY2Mkg0MTJWMEg0MDBaTTU1MyA0NzVRNTUzIDU1NCA1MzcgNTgyVDQ1OSA2MjJRNDUxIDYyMyAzNzMgNjI0SDI5OFYzNDNIMzcyUTQ1NyAzNDQgNDgwIDM1MFE1MjcgMzYyIDU0MCAzOTBUNTUzIDQ3NScsXG4gICAgMHgxRDQxMDogJzY0IDMzOVE2NCA0MzEgOTYgNTAyVDE4MiA2MTRUMjk1IDY3NVQ0MjAgNjk2UTQ2OSA2OTYgNDgxIDY5NVE2MjAgNjgwIDcwOSA1ODlUNzk4IDMzOVE3OTggMjU1IDc2OCAxODRRNzIwIDc3IDYxMSAyNkw2MDAgMjFRNjM1IC0yNiA2ODIgLTI2SDY5NlE3NjkgLTI2IDc2OSAwUTc2OSA3IDc3NCAxMlQ3ODcgMThRODA1IDE4IDgwNSAtN1YtMTNRODAzIC02NCA3ODUgLTEwNlQ3MzcgLTE3MVE3MjAgLTE4MyA2OTcgLTE5MVE2ODcgLTE5MyA2NjggLTE5M1E2MzYgLTE5MyA2MTMgLTE4MlQ1NzUgLTE0NFQ1NTIgLTk0VDUzMiAtMjdRNTMxIC0yMyA1MzAgLTE2VDUyOCAtNlQ1MjYgLTNMNTEyIC01UTQ5OSAtNyA0NzcgLThUNDMxIC0xMFEzOTMgLTEwIDM4MiAtOVEyMzggOCAxNTEgOTdUNjQgMzM5Wk0zMjYgODBRMzI2IDExMyAzNTYgMTM4VDQzMCAxNjNRNDkyIDE2MyA1NDIgMTAwTDU1MyA4NlE1NTQgODUgNTYxIDkxVDU3OCAxMDhRNjM3IDE3OSA2MzcgMzMwUTYzNyA0MzAgNjE5IDQ5OFQ1NDggNjA0UTUwMCA2NDEgNDI1IDY0MVE0MDggNjQxIDM5MCA2MzdUMzQ3IDYyM1QyOTkgNTkwVDI1OSA1MzVRMjI2IDQ2OSAyMjYgMzM4UTIyNiAyNDQgMjQ2IDE4MFQzMTggNzlMMzI1IDc0UTMyNiA3NCAzMjYgODBaTTUwNiA1OFE0ODAgMTEyIDQzMyAxMTJRNDEyIDExMiAzOTUgMTA0VDM3OCA3N1EzNzggNDQgNDMxIDQ0UTQ4MCA0NCA1MDYgNTgnLFxuICAgIDB4MUQ0MTE6ICczOTQgMFEzNzAgMyAyMjIgM1E3NSAzIDUxIDBIMzlWNjJIMTQ3VjYyNEgzOVY2ODZIMjM0UTI1NiA2ODYgMjk5IDY4NlQzNjIgNjg3UTQ3OSA2ODcgNTU0IDY2OVQ2ODEgNTkzUTcxNiA1NTAgNzE2IDQ5N1E3MTYgMzkwIDU2OCAzMzhRNTY5IDMzNyA1NzIgMzM2VDU3NyAzMzJRNjA1IDMxNyA2MjMgMzAwVDY1MCAyNThUNjYyIDIxOFQ2NjggMTcyUTY3OCA5OCA2ODkgNzZRNzA3IDQwIDc0OCA0MFE3NzAgNDAgNzgwIDU0VDc5NSA4OFQ4MDEgMTExUTgwNSAxMTcgODI3IDExN0g4MzFRODQ2IDExNyA4NTIgMTEzVDg1OCA5MlE4NTcgNzggODUyIDYzVDgzNCAzMFQ3OTcgMVQ3MzkgLTExUTYzMCAtMTEgNTgwIDEyVDUxMSA4N1E1MDYgMTA0IDUwNiAxNjhRNTA2IDE3MCA1MDYgMTc4VDUwNyAxOTRRNTA3IDI4OSA0MzggMzEzUTQyNCAzMTggMzU2IDMxOEgyOThWNjJINDA2VjBIMzk0Wk0zNjYgMzY5UTQ1OSAzNzAgNDkwIDM4MVE1NDggNDAyIDU0OCA0NzZWNDk4VjUxN1E1NDggNTc4IDUxMyA2MDBRNDc5IDYyNCAzOTIgNjI0SDM1OEgyOThWMzY5SDM2NicsXG4gICAgMHgxRDQxMjogJzY0IDQ5M1E2NCA1ODIgMTIwIDYzNlQyNjQgNjk2SDI3MlEyODAgNjk3IDI4NSA2OTdRMzgwIDY5NyA0NTQgNjQ1TDQ4MCA2NjlRNDg0IDY3MiA0ODggNjc2VDQ5NSA2ODNUNTAwIDY4OFQ1MDQgNjkxVDUwOCA2OTNUNTExIDY5NVQ1MTQgNjk2VDUxNyA2OTdUNTIyIDY5N1E1MzYgNjk3IDUzOSA2OTFUNTQyIDY1MlY1NzdRNTQyIDU1NyA1NDIgNTMyVDU0MyA1MDBRNTQzIDQ3MiA1NDAgNDY1VDUyNCA0NThINTExSDUwNVE0ODkgNDU4IDQ4NSA0NjFUNDc5IDQ3OFE0NzIgNTI5IDQ0OSA1NjRUMzkzIDYxNFQzMzYgNjM0VDI4NyA2MzlRMjI4IDYzOSAyMDMgNjEwVDE3NyA1NDRRMTc3IDUxNyAxOTUgNDkzVDI0NyA0NTdRMjUzIDQ1NCAzNDMgNDM2VDQ3NSAzOTFRNTc0IDMyNiA1NzQgMjA3VjIwMFE1NzQgMTYzIDU1OSAxMjBRNTE3IDEyIDM4OSAtOVEzODAgLTEwIDM0NiAtMTBRMzA4IC0xMCAyNzUgLTVUMjIxIDdUMTg0IDIyVDE2MCAzNVQxNTEgNDBMMTI2IDE3UTEyMiAxNCAxMTggMTBUMTExIDNUMTA2IC0yVDEwMiAtNVQ5OCAtN1Q5NSAtOVQ5MiAtMTBUODkgLTExVDg0IC0xMVE3MCAtMTEgNjcgLTRUNjQgMzVWMTA4UTY0IDEyOCA2NCAxNTNUNjMgMTg1UTYzIDIwMyA2MyAyMTFUNjkgMjIzVDc3IDIyN1Q5NCAyMjhIMTAwUTExOCAyMjggMTIyIDIyNVQxMjYgMjA1UTEzMCAxMjUgMTkzIDg4VDM0NSA1MVE0MDggNTEgNDM0IDgyVDQ2MCAxNTdRNDYwIDE5NiA0MzkgMjIxVDM4OCAyNTdRMzg0IDI1OSAzMDUgMjc2VDIyMSAyOTVRMTU1IDMxMyAxMTAgMzY2VDY0IDQ5MycsXG4gICAgMHgxRDQxMzogJzQxIDQyNVE0MSA0MjYgNTEgNTQ1VDYyIDY2OVY2NzVINzM3VjY2OVE3MzggNjY1IDc0OCA1NDZUNzU4IDQyNVY0MTlINjk2VjQyNVE2ODcgNTE3IDY2OSA1NTVUNTk1IDYwN1E1NzggNjEyIDUyMiA2MTNINDc4VjYySDYzMVYwSDYxNVE1ODUgMyAzOTkgM1EyMTQgMyAxODQgMEgxNjhWNjJIMzIxVjYxM0gyNzdIMjYzUTE2NCA2MTMgMTM0IDU2MVExMTMgNTI3IDEwMyA0MjVWNDE5SDQxVjQyNScsXG4gICAgMHgxRDQxNDogJzU3MCA2ODZRNTg4IDY4MyA3MDMgNjgzVDgzNiA2ODZIODQ1VjYyNEg3MzdWNDIwUTczNyAzOTAgNzM3IDM0NVQ3MzggMjg0UTczOCAyMDUgNzI5IDE2NFQ2ODkgODNRNjE0IC0xMSA0NjUgLTExUTMyMSAtMTEgMjQwIDUxVDE0OCAyMDdRMTQ3IDIxNCAxNDcgNDIxVjYyNEgzOVY2ODZINTFRNzUgNjgzIDIyNiA2ODNRMzc2IDY4MyA0MDAgNjg2SDQxMlY2MjRIMzA0VjQwNVYzNzBWMjY4UTMwNCAxODEgMzExIDE0NlQzNDYgODdRMzg3IDUyIDQ2NiA1MlE2NDIgNTIgNjY3IDE5NVE2NjggMjA0IDY2OSA0MTVWNjI0SDU2MVY2ODZINTcwJyxcbiAgICAweDFENDE1OiAnNTkyIDY4Nkg2MDRRNjE1IDY4NSA2MzEgNjg1VDY2NiA2ODRUNzAwIDY4NFQ3MjQgNjgzUTgyOSA2ODMgODM1IDY4Nkg4NDNWNjI0SDc0NEw2MTEgMzE1UTU4NCAyNTQgNTQ2IDE2NVE0OTIgNDAgNDgyIDE5VDQ2MSAtNkw0NjAgLTdINDA5UTM5OCAtNCAzOTEgOVEzODUgMjAgMjU3IDMxNUwxMjQgNjI0SDI1VjY4NkgzNlE1NyA2ODMgMTkwIDY4M1EzNDAgNjgzIDM2NCA2ODZIMzc3VjYyNEgyODlMMzg0IDQwM0w0ODAgMTg1TDQ5MiAyMTJRNTA0IDI0MCA1MjkgMjk4VDU3NSA0MDVMNjcwIDYyNEg1ODJWNjg2SDU5MicsXG4gICAgMHgxRDQxNjogJzkxNSA2ODZMMTA1MiA2ODNRMTE0MiA2ODMgMTE1NyA2ODZIMTE2NFY2MjRIMTA3M0w5NTcgMzIwUTkzMCAyNDkgOTAwIDE3MFQ4NTUgNTJUODM5IDEwUTgzNCAwIDgyNiAtNVE4MjEgLTcgNzk5IC03SDc5MlE3NzcgLTcgNzcyIC01VDc1OSAxMFE3NTkgMTEgNzQ4IDM5VDcxNiAxMjJUNjc2IDIyOEw1OTQgNDQyTDUxMiAyMjhRNDg2IDE1OSA0NTUgNzhRNDMzIDE5IDQyOCA5VDQxNiAtNVE0MTEgLTcgMzg5IC03SDM3OVEzNTYgLTcgMzQ5IDEwUTM0OSAxMiAzMzQgNTFUMjg4IDE3MFQyMzEgMzIwTDExNiA2MjRIMjRWNjg2SDM1UTQ0IDY4MyAxODMgNjgzUTMzMSA2ODMgMzU1IDY4NkgzNjhWNjI0SDMyM1EyNzggNjI0IDI3OCA2MjNMNDM3IDIwN0w0OTkgMzY5TDU2MSA1MzFMNTI2IDYyNEg0MzRWNjg2SDQ0NVE0NTQgNjgzIDU5MyA2ODNRNzQxIDY4MyA3NjUgNjg2SDc3OFY2MjRINzMzUTY4OCA2MjQgNjg4IDYyM0w4NDcgMjA3UTg0OCAyMDcgOTI3IDQxNVQxMDA2IDYyNEg5MDVWNjg2SDkxNScsXG4gICAgMHgxRDQxNzogJzMyNyAwUTMwNiAzIDE3NCAzUTUyIDMgNDMgMEgzM1Y2Mkg5OEwxNjIgNjNMMzYwIDMzM0wxNTcgNjI0SDQ4VjY4Nkg1OVE4MCA2ODMgMjE3IDY4M1EzNjggNjgzIDM5NSA2ODZINDA4VjYyNEgzMzVMMzkzIDU0MEw0NTIgNDU4TDU3MyA2MjNRNTczIDYyNCA1MjggNjI0SDQ4M1Y2ODZINDk0UTUxNSA2ODMgNjQ2IDY4M1E3NjkgNjgzIDc3OCA2ODZINzg3VjYyNEg2NThMNTc1IDUxMVE0OTMgMzk4IDQ5MyAzOTdMNTA4IDM3NlE1MjIgMzU2IDU1MyAzMTJUNjExIDIyOUw3MjcgNjJIODM1VjBIODI0UTgwMyAzIDY2NyAzUTUxNiAzIDQ4OSAwSDQ3NlY2Mkg1MTNMNTQ5IDYzTDQwMSAyNzRMMjQ3IDYzUTI0NyA2MiAyOTIgNjJIMzM4VjBIMzI3JyxcbiAgICAweDFENDE4OiAnNjA1IDBRNTgxIDMgNDM0IDNRMjg2IDMgMjYyIDBIMjUwVjYySDM1OFYyNzVMMTI2IDYyNEgxOVY2ODZIMzBRNTQgNjgzIDE4OSA2ODNRMzYxIDY4NSAzNzAgNjg2SDM4M1Y2MjRIMzA4TDMxOSA2MDhRMzMwIDU5MSAzNTMgNTU2VDM5NiA0OTFMNDg0IDM1OUw2NjAgNjIzUTY2MCA2MjQgNjIzIDYyNEg1ODVWNjg2SDU5NVE2MTMgNjgzIDcyOCA2ODNRODMyIDY4MyA4NDEgNjg2SDg0OVY2MjRINzQyTDUwOSAyNzRWNjJINjE4VjBINjA1JyxcbiAgICAweDFENDE5OiAnODAgNDMwTDkyIDY4NkgzNThRNjI0IDY4NiA2MjggNjg0UTYzOCA2NzkgNjM4IDY1NlE2MzggNjQwIDYzNyA2MzlRNjM3IDYzOCA0NDUgMzUzUTQwMSAyODggMzUxIDIxNFQyNzcgMTAzTDI1MyA2N0wyNTYgNjZRMjU4IDY2IDI2NSA2NlQyNzkgNjZUMjk4IDY2SDM0M1EzODAgNjYgNDA2IDY4VDQ2NCA4MVQ1MTggMTEwVDU1NyAxNjRUNTc5IDI1MFE1ODMgMjc4IDU4MyAyOThRNTgzIDI5OSA2MTQgMjk5SDY0NVYyOTFRNjQzIDI4MSA2MzYgMTUwVDYyNyA4VjBIMzUzUTc5IDAgNzUgMlE2NCA3IDY0IDMxUTY0IDQ4IDY2IDUyTDI1OSAzNDBMNDUxIDYyM1E0NTEgNjI0IDM4NCA2MjRRMjk0IDYyMyAyNTkgNjEyUTE1NSA1ODEgMTQzIDQ0NlExNDIgNDQwIDE0MiA0MzJWNDMwSDgwJyxcbiAgICAweDFENDFBOiAnNjQgMzQ5UTY0IDM5OSAxMDcgNDI2VDI1NSA0NTNRMzQ2IDQ1MyA0MDIgNDIzVDQ3MyAzNDFRNDc4IDMyNyA0NzggMzEwVDQ3OSAxOTZWNzdRNDkzIDYzIDUyOSA2MlE1NDkgNjIgNTUzIDU3VDU1OCAzMVE1NTggOSA1NTIgNVQ1MTQgMEg0OTdINDgxUTM3NSAwIDM2NyA1NkwzNTYgNDZRMzAwIC02IDIxMCAtNlExMzAgLTYgODEgMzBUMzIgMTIxUTMyIDE4OCAxMTEgMjI2VDMzMiAyNzJIMzUwVjI5MlEzNTAgMzEzIDM0OCAzMjdUMzM3IDM2MVQzMDYgMzkxVDI0OCA0MDJUMTk0IDM5OUgxODlRMjA0IDM3NiAyMDQgMzU0UTIwNCAzMjcgMTg3IDMwNlQxMzQgMjg0UTk3IDI4NCA4MSAzMDVUNjQgMzQ5Wk0xNjQgMTIxUTE2NCA4OSAxODYgNjdUMjM4IDQ1UTI3NCA0NSAzMDcgNjNUMzQ2IDEwOEwzNTAgMTE3VjIyNkgzNDdRMjQ4IDIxOCAyMDYgMTg5VDE2NCAxMjEnLFxuICAgIDB4MUQ0MUI6ICczMiA2ODZMMTIzIDY5MFEyMTQgNjk0IDIxNSA2OTRIMjIxVjQwOVEyODkgNDUwIDM3OCA0NTBRNDc5IDQ1MCA1MzkgMzg3VDYwMCAyMjFRNjAwIDEyMiA1MzUgNThUMzU4IC02SDM1NVEyNzIgLTYgMjAzIDUzTDE2MCAxTDEyOSAwSDk4VjMwMVE5OCAzNjIgOTggNDM1VDk5IDUyNVE5OSA1OTEgOTcgNjA0VDgzIDYyMFE2OSA2MjQgNDIgNjI0SDI5VjY4NkgzMlpNMjI3IDEwNUwyMzIgOTlRMjM3IDkzIDI0MiA4N1QyNTggNzNUMjgwIDU5VDMwNiA0OVQzMzkgNDVRMzgwIDQ1IDQxMSA2NlQ0NTEgMTMxUTQ1NyAxNjAgNDU3IDIzMFE0NTcgMjY0IDQ1NiAyODRUNDQ4IDMyOVQ0MzAgMzY3VDM5NiAzODlUMzQzIDM5OFEyODIgMzk4IDIzNSAzNTVMMjI3IDM0OFYxMDUnLFxuICAgIDB4MUQ0MUM6ICc0NDcgMTMxSDQ1OFE0NzggMTMxIDQ3OCAxMTdRNDc4IDExMiA0NzEgOTVUNDM5IDUxVDM3NyA5UTMzMCAtNiAyODYgLTZRMTk2IC02IDEzNSAzNVEzOSA5NiAzOSAyMjJRMzkgMzI0IDEwMSAzODRRMTY5IDQ1MyAyODYgNDUzUTM1OSA0NTMgNDExIDQzMVQ0NjQgMzUzUTQ2NCAzMTkgNDQ1IDMwMlQzOTUgMjg0UTM2MCAyODQgMzQzIDMwNVQzMjUgMzUzUTMyNSAzODAgMzM4IDM5NkgzMzNRMzE3IDM5OCAyOTUgMzk4SDI5MlEyODAgMzk4IDI3MSAzOTdUMjQ1IDM5MFQyMTggMzczVDE5NyAzMzhUMTgzIDI4M1ExODIgMjc1IDE4MiAyMzFRMTgyIDE5OSAxODQgMTgwVDE5MyAxMzJUMjIwIDg1VDI3MCA1N1EyODkgNTAgMzE3IDUwSDMyNlEzODUgNTAgNDE0IDExNVE0MTkgMTI3IDQyMyAxMjlUNDQ3IDEzMScsXG4gICAgMHgxRDQxRDogJzM1MSA2ODZMNDQyIDY5MFE1MzMgNjk0IDUzNCA2OTRINTQwVjM4OVE1NDAgMzI3IDU0MCAyNTNUNTM5IDE2M1E1MzkgOTcgNTQxIDgzVDU1NSA2NlE1NjkgNjIgNTk2IDYySDYwOVYzMVE2MDkgMCA2MDggMFE1ODggMCA1MTAgLTNUNDEyIC02UTQxMSAtNiA0MTEgMTZWMzhMNDAxIDMxUTMzNyAtNiAyNjUgLTZRMTU5IC02IDk5IDU4VDM4IDIyNFEzOCAyNjUgNTEgMzAzVDkyIDM3NVQxNjUgNDI5VDI3MiA0NDlRMzU5IDQ0OSA0MTcgNDEyVjUwN1Y1NTVRNDE3IDU5NyA0MTUgNjA3VDQwMiA2MjBRMzg4IDYyNCAzNjEgNjI0SDM0OFY2ODZIMzUxWk00MTEgMzUwUTM2MiAzOTkgMjkxIDM5OVEyNzggMzk5IDI1NiAzOTJUMjE4IDM3MVExOTUgMzUxIDE4OSAzMjBUMTgyIDIzOFYyMjFRMTgyIDE3OSAxODMgMTU5VDE5MSAxMTVUMjEyIDc0UTI0MSA0NiAyODggNDZRMzU4IDQ2IDQwNCAxMDBMNDExIDEwOVYzNTAnLFxuICAgIDB4MUQ0MUU6ICczMiAyMjVRMzIgMzMyIDEwMiAzOTJUMjcyIDQ1MkgyODNRMzgyIDQ1MiA0MzYgNDAxUTQ5NCAzNDMgNDk0IDI0M1E0OTQgMjI2IDQ4NiAyMjJUNDQwIDIxN1E0MzEgMjE3IDM5NCAyMTdUMzI3IDIxOEgxNzVWMjA5UTE3NSAxNzcgMTc5IDE1NFQxOTYgMTA3VDIzNiA2OVQzMDYgNTBRMzEyIDQ5IDMyMyA0OVEzNzYgNDkgNDEwIDg1UTQyMSA5OSA0MjcgMTExVDQzNCAxMjdUNDQyIDEzM1Q0NjMgMTM1SDQ2OFE0OTQgMTM1IDQ5NCAxMTdRNDk0IDExMCA0ODkgOTdUNDY4IDY2VDQzMSAzMlQzNzMgNVQyOTIgLTZRMTgxIC02IDEwNyA1NVQzMiAyMjVaTTM4MyAyNzZRMzc3IDM0NiAzNDggMzc0VDI4MCA0MDJRMjUzIDQwMiAyMzAgMzkwVDE5NSAzNTdRMTc5IDMzMSAxNzYgMjc5VjI2NkgzODNWMjc2JyxcbiAgICAweDFENDFGOiAnMzA4IDBRMjkwIDMgMTcyIDNRNTggMyA0OSAwSDQwVjYySDEwOVYzODJINDJWNDQ0SDEwOVY1MDNMMTEwIDU2MkwxMTIgNTcyUTEyNyA2MjUgMTc4IDY1OFQzMTYgNjk5UTMxOCA2OTkgMzMwIDY5OVQzNDggNzAwUTM4MSA2OTggNDA0IDY4N1Q0MzYgNjU4VDQ0OSA2MjlUNDUyIDYwNlE0NTIgNTc2IDQzMiA1NTdUMzgzIDUzN1EzNTUgNTM3IDMzNSA1NTVUMzE0IDYwNVEzMTQgNjM1IDMyOCA2NDlIMzI1UTMxMSA2NDkgMjkzIDY0NFQyNTMgNjE4VDIyNyA1NjBRMjI2IDU1NSAyMjYgNDk4VjQ0NEgzNDBWMzgySDIzMlY2MkgzMThWMEgzMDgnLFxuICAgIDB4MUQ0MjA6ICc1MCAzMDBRNTAgMzY4IDEwNSA0MDlUMjU1IDQ1MFEzMjggNDUwIDM3NiA0MjZMMzg4IDQyMFE0MzUgNDU1IDQ4OSA0NTVRNTE3IDQ1NSA1MzMgNDQxVDU1NCA0MTRUNTU4IDM4OVE1NTggMzY3IDU0NCAzNTNUNTA4IDMzOVE0ODQgMzM5IDQ3MSAzNTRUNDU4IDM4N1E0NTggMzk3IDQ2MiA0MDBRNDY0IDQwMSA0NjEgNDAwUTQ1OSA0MDAgNDU0IDM5OVE0MjkgMzkyIDQyNyAzOTBRNDU0IDM1MyA0NTkgMzI4UTQ2MSAzMTUgNDYxIDMwMFE0NjEgMjQwIDQxOSAyMDJRMzY0IDE0OSAyNDggMTQ5UTE4NSAxNDkgMTM2IDE3MlExMjkgMTU4IDEyOSAxNDhRMTI5IDEwNSAxNzAgOTNRMTc2IDkxIDI2MyA5MVEyNzMgOTEgMjk4IDkxVDMzNCA5MVQzNjYgODlUNDAwIDg1VDQzMiA3N1Q0NjYgNjRRNTQ0IDIyIDU0NCAtNjlRNTQ0IC0xMTQgNTA2IC0xNDVRNDM4IC0yMDEgMjg3IC0yMDFRMTQ5IC0yMDEgOTAgLTE2MVQzMCAtNzBRMzAgLTU4IDMzIC00N1Q0MiAtMjdUNTQgLTEzVDY5IC0xVDgyIDZUOTQgMTJUMTAxIDE1UTY2IDU3IDY2IDEwNlE2NiAxNTEgOTAgMTg3TDk3IDE5N0w4OSAyMDRRNTAgMjQzIDUwIDMwMFpNNDg1IDQwM0g0OTJRNDkxIDQwNCA0ODggNDA0TDQ4NSA0MDNWNDAzWk0yNTUgMjAwUTI3OSAyMDAgMjk1IDIwNlQzMTkgMjE5VDMzMSAyNDJUMzM1IDI2OFQzMzYgMzAwUTMzNiAzMzcgMzMzIDM1MlQzMTcgMzgwUTI5OCAzOTkgMjU1IDM5OVEyMjggMzk5IDIxMSAzOTJUMTg3IDM3MVQxNzggMzQ1VDE3NiAzMTJWMzAwVjI4OVExNzYgMjM1IDE5NCAyMTlRMjE1IDIwMCAyNTUgMjAwWk0yODcgLTE1MFEzNTcgLTE1MCA0MDAgLTEyOFQ0NDMgLTcxUTQ0MyAtNjUgNDQyIC02MVQ0MzYgLTUwVDQyMCAtMzdUMzg5IC0yN1QzMzkgLTIxTDMwOCAtMjBRMjc2IC0yMCAyNTMgLTIwUTE5MCAtMjAgMTgwIC0yMFQxNTYgLTI2UTEzMCAtMzggMTMwIC02OVExMzAgLTEwNSAxNzMgLTEyN1QyODcgLTE1MCcsXG4gICAgMHgxRDQyMTogJzQwIDY4NkwxMzEgNjkwUTIyMiA2OTQgMjIzIDY5NEgyMjlWNTMzTDIzMCAzNzJMMjM4IDM4MVEyNDggMzk0IDI2NCA0MDdUMzE3IDQzNVQzOTggNDUwUTQyOCA0NTAgNDQ4IDQ0N1Q0OTEgNDM0VDUyOSA0MDJUNTUxIDM0NlE1NTMgMzM1IDU1NCAxOThWNjJINjIzVjBINjE0UTU5NiAzIDQ4OSAzUTM3NCAzIDM2NSAwSDM1NlY2Mkg0MjVWMTk0VjI3NVE0MjUgMzQ4IDQxNiAzNzNUMzcxIDM5OVEzMjYgMzk5IDI4OCAzNzBUMjM4IDI5MFEyMzYgMjgxIDIzNSAxNzFWNjJIMzA0VjBIMjk1UTI3NyAzIDE3MSAzUTY0IDMgNDYgMEgzN1Y2MkgxMDZWMzMyUTEwNiAzODcgMTA2IDQ1M1QxMDcgNTM0UTEwNyA1OTMgMTA1IDYwNVQ5MSA2MjBRNzcgNjI0IDUwIDYyNEgzN1Y2ODZINDAnLFxuICAgIDB4MUQ0MjI6ICc3MiA2MTBRNzIgNjQ5IDk4IDY3MlQxNTkgNjk1UTE5MyA2OTMgMjE3IDY3MFQyNDEgNjEwUTI0MSA1NzIgMjE3IDU0OVQxNTcgNTI1UTEyMCA1MjUgOTYgNTQ4VDcyIDYxMFpNNDYgNDQyTDEzNiA0NDZMMjI2IDQ1MEgyMzJWNjJIMjk0VjBIMjg2UTI3MSAzIDE3MSAzUTY3IDMgNDkgMEg0MFY2MkgxMDlWMjA5UTEwOSAzNTggMTA4IDM2MlExMDMgMzgwIDU1IDM4MEg0M1Y0NDJINDYnLFxuICAgIDB4MUQ0MjM6ICcxMDQgNjEwUTEwNCA2NDkgMTMwIDY3MlQxOTEgNjk1UTIyNSA2OTMgMjQ5IDY3MFQyNzMgNjEwUTI3MyA1NzIgMjQ5IDU0OVQxODkgNTI1UTE1MiA1MjUgMTI4IDU0OFQxMDQgNjEwWk03OCA0NDJMMTczIDQ0NkwyNjggNDUwSDI3NFYxOTZRMjc0IC01IDI3NCAtMzdUMjY5IC04M1EyNTYgLTEzMiAyMDEgLTE2NlQ3MSAtMjAwUTEwIC0yMDAgLTMwIC0xNzNULTcxIC0xMDJRLTcxIC03MCAtNTEgLTUxVC0xIC0zMVEyNyAtMzEgNDggLTQ5VDY5IC0xMDBRNjkgLTEyMSA1MyAtMTQ3SDU2UTY2IC0xNDkgNzcgLTE0OUg4MFE5MCAtMTQ5IDEwMCAtMTQ2VDEyNyAtMTI1VDE0OSAtNzNRMTUxIC01NSAxNTEgMTQ5VjM2MlExNTAgMzY0IDE0OCAzNjZUMTQ1IDM3MFQxNDIgMzczVDEzOCAzNzVUMTMzIDM3N1QxMjQgMzc4VDExMyAzNzlUOTcgMzgwSDc1VjQ0Mkg3OCcsXG4gICAgMHgxRDQyNDogJzMyIDY4NkwxMjMgNjkwUTIxNCA2OTQgMjE1IDY5NEgyMjFWMjU1TDM3NyAzODJIMzQ2VjQ0NEgzNTVRMzcwIDQ0MSA0NzYgNDQxUTU0NCA0NDEgNTU2IDQ0NEg1NjJWMzgySDQ3NkwzNDcgMjc3TDUxNSA2Mkg1ODdWMEg1NzlRNTY0IDMgNDc2IDNRMzcwIDMgMzUyIDBIMzQzVjYySDM1OEwzNzMgNjNMMjYwIDIwNkwyMzcgMTg5TDIxNiAxNzJWNjJIMjg1VjBIMjc3UTI1OSAzIDE1NyAzUTQ2IDMgMzcgMEgyOVY2Mkg5OFYzMzJROTggMzg3IDk4IDQ1M1Q5OSA1MzRROTkgNTkzIDk3IDYwNVQ4MyA2MjBRNjkgNjI0IDQyIDYyNEgyOVY2ODZIMzInLFxuICAgIDB4MUQ0MjU6ICc0MyA2ODZMMTM0IDY5MFEyMjUgNjk0IDIyNiA2OTRIMjMyVjYySDMwMVYwSDI5MlEyNzQgMyAxNzAgM1E2NyAzIDQ5IDBINDBWNjJIMTA5VjMzMlExMDkgMzg3IDEwOSA0NTNUMTEwIDUzNFExMTAgNTkzIDEwOCA2MDVUOTQgNjIwUTgwIDYyNCA1MyA2MjRINDBWNjg2SDQzJyxcbiAgICAweDFENDI2OiAnNDAgNDQyUTIxNyA0NTAgMjE4IDQ1MEgyMjRWMzY1UTIyNiAzNjcgMjM1IDM3OFQyNTQgMzk3VDI3OCA0MTZUMzE0IDQzNVQzNjIgNDQ4UTM3NiA0NTAgNDAwIDQ1MEg0MDZRNTAzIDQ1MCA1MzQgMzkzUTU0NSAzNzYgNTQ1IDM3MFE1NDUgMzY4IDU1NSAzNzlRNjExIDQ1MCA3MTYgNDUwUTc3NCA0NTAgODA5IDQzNFE4NTAgNDE0IDg2MSAzNzlUODczIDI3NlYyMTNWMTk4VjYySDk0MlYwSDkzM1E5MTUgMyA4MDkgM1E3MDIgMyA2ODQgMEg2NzVWNjJINzQ0VjE5NFYyNzVRNzQ0IDM0OCA3MzUgMzczVDY5MCAzOTlRNjQ1IDM5OSA2MDcgMzcwVDU1NyAyOTBRNTU1IDI4MSA1NTQgMTcxVjYySDYyM1YwSDYxNFE1OTYgMyA0ODkgM1EzNzQgMyAzNjUgMEgzNTZWNjJINDI1VjE5NFYyNzVRNDI1IDM0OCA0MTYgMzczVDM3MSAzOTlRMzI2IDM5OSAyODggMzcwVDIzOCAyOTBRMjM2IDI4MSAyMzUgMTcxVjYySDMwNFYwSDI5NVEyNzcgMyAxNzEgM1E2NCAzIDQ2IDBIMzdWNjJIMTA2VjIxMFYzMDNRMTA2IDM1MyAxMDQgMzYzVDkxIDM3NlE3NyAzODAgNTAgMzgwSDM3VjQ0Mkg0MCcsXG4gICAgMHgxRDQyNzogJzQwIDQ0MlEyMTcgNDUwIDIxOCA0NTBIMjI0VjQwN0wyMjUgMzY1UTIzMyAzNzggMjQ1IDM5MVQyODkgNDIyVDM2MiA0NDhRMzc0IDQ1MCAzOTggNDUwUTQyOCA0NTAgNDQ4IDQ0N1Q0OTEgNDM0VDUyOSA0MDJUNTUxIDM0NlE1NTMgMzM1IDU1NCAxOThWNjJINjIzVjBINjE0UTU5NiAzIDQ4OSAzUTM3NCAzIDM2NSAwSDM1NlY2Mkg0MjVWMTk0VjI3NVE0MjUgMzQ4IDQxNiAzNzNUMzcxIDM5OVEzMjYgMzk5IDI4OCAzNzBUMjM4IDI5MFEyMzYgMjgxIDIzNSAxNzFWNjJIMzA0VjBIMjk1UTI3NyAzIDE3MSAzUTY0IDMgNDYgMEgzN1Y2MkgxMDZWMjEwVjMwM1ExMDYgMzUzIDEwNCAzNjNUOTEgMzc2UTc3IDM4MCA1MCAzODBIMzdWNDQySDQwJyxcbiAgICAweDFENDI4OiAnMjg3IC01UTIyOCAtNSAxODIgMTBUMTA5IDQ4VDYzIDEwMlQzOSAxNjFUMzIgMjE5UTMyIDI3MiA1MCAzMTRUOTQgMzgyVDE1NCA0MjNUMjE0IDQ0NlQyNjUgNDUySDI3OVEzMTkgNDUyIDMyNiA0NTFRNDI4IDQzOSA0ODUgMzc2VDU0MiAyMjFRNTQyIDE1NiA1MTQgMTA4VDQ0MiAzM1EzODQgLTUgMjg3IC01Wk0zOTkgMjMwVjI1MFEzOTkgMjgwIDM5OCAyOThUMzkxIDMzOFQzNzIgMzcyVDMzOCAzOTJUMjgyIDQwMVEyNDEgNDAxIDIxMiAzODBRMTkwIDM2MyAxODMgMzM0VDE3NSAyMzBRMTc1IDIwMiAxNzUgMTg5VDE3NyAxNTNUMTgzIDExOFQxOTUgOTFUMjE1IDY4VDI0NSA1NlQyODcgNTBRMzQ4IDUwIDM3NCA4NFEzODggMTAxIDM5MyAxMzJUMzk5IDIzMCcsXG4gICAgMHgxRDQyOTogJzMyIDQ0MkwxMjMgNDQ2UTIxNCA0NTAgMjE1IDQ1MEgyMjFWNDA5UTIyMiA0MDkgMjI5IDQxM1QyNTEgNDIzVDI4NCA0MzZUMzI4IDQ0NlQzODIgNDUwUTQ4MCA0NTAgNTQwIDM4OFQ2MDAgMjIzUTYwMCAxMjggNTM5IDYxVDM2MSAtNkgzNTRRMjkyIC02IDIzNiAyOEwyMjcgMzRWLTEzMkgyOTZWLTE5NEgyODdRMjY5IC0xOTEgMTYzIC0xOTFRNTYgLTE5MSAzOCAtMTk0SDI5Vi0xMzJIOThWMTEzVjI4NFE5OCAzMzAgOTcgMzQ4VDkzIDM3MFQ4MyAzNzZRNjkgMzgwIDQyIDM4MEgyOVY0NDJIMzJaTTQ1NyAyMjRRNDU3IDMwMyA0MjcgMzQ5VDM1MCAzOTVRMjgyIDM5NSAyMzUgMzUyTDIyNyAzNDVWMTA0TDIzMyA5N1EyNzQgNDUgMzM3IDQ1UTM4MyA0NSA0MjAgODZUNDU3IDIyNCcsXG4gICAgMHgxRDQyQTogJzM4IDIyMFEzOCAyNzMgNTQgMzE0VDk1IDM4MFQxNTIgNDIxVDIxMSA0NDNUMjY0IDQ0OVEzNjggNDQ5IDQyOSAzODZMNDM4IDM3N0w0ODQgNDUwSDU0MFYtMTMySDYwOVYtMTk0SDYwMFE1ODIgLTE5MSA0NzUgLTE5MVEzNjAgLTE5MSAzNTEgLTE5NEgzNDJWLTEzMkg0MTFWNDJRNDA5IDQxIDM5OSAzNFQzODMgMjVUMzY3IDE2VDM0NyA3VDMyNCAxVDI5NiAtNFQyNjQgLTZRMTYyIC02IDEwMCA1NlQzOCAyMjBaTTI4NyA0NlEzNjggNDYgNDE3IDEyN1YzMDFMNDEyIDMxMlEzOTggMzQ3IDM2OSAzNzFUMzAyIDM5NVEyODIgMzk1IDI2MyAzODhUMjI1IDM2MlQxOTQgMzA4VDE4MiAyMjFRMTgyIDEyNiAyMTQgODZUMjg3IDQ2JyxcbiAgICAweDFENDJCOiAnNDA1IDI5M1QzNzQgMjkzVDMyNCAzMTJUMzA1IDM2MVEzMDUgMzc4IDMxMiAzOTRRMzE1IDM5NyAzMTUgMzk5UTMwNSAzOTkgMjk0IDM5NFQyNjYgMzc1VDIzOCAzMjlUMjIyIDI0OVEyMjEgMjQxIDIyMSAxNDlWNjJIMzA4VjBIMjk4UTI4MCAzIDE2MSAzUTQ3IDMgMzggMEgyOVY2Mkg5OFYyMTBWMzAzUTk4IDM1MyA5NiAzNjNUODMgMzc2UTY5IDM4MCA0MiAzODBIMjlWNDQySDMyTDExOCA0NDZRMjA0IDQ1MCAyMDUgNDUwSDIxMFY0MTRMMjExIDM3OFEyNDcgNDQ5IDMxNSA0NDlIMzIxUTM4NCA0NDkgNDEzIDQyMlQ0NDIgMzYwUTQ0MiAzMzIgNDI0IDMxMycsXG4gICAgMHgxRDQyQzogJzM4IDMxNVEzOCAzMzkgNDUgMzYwVDcwIDQwNFQxMjcgNDQwVDIyMyA0NTNRMjczIDQ1MyAzMjAgNDM2TDMzOCA0NDVMMzU3IDQ1M0gzNjZRMzgwIDQ1MyAzODMgNDQ3VDM4NiA0MDNWMzg3VjM1NVEzODYgMzMxIDM4MyAzMjZUMzY1IDMyMUgzNTVIMzQ5UTMzMyAzMjEgMzI5IDMyNFQzMjQgMzQxUTMxNyA0MDYgMjI0IDQwNkgyMTZRMTIzIDQwNiAxMjMgMzUzUTEyMyAzMzQgMTQzIDMyMVQxODggMzA0VDI0NCAyOTRUMjg1IDI4NlEzMDUgMjgxIDMyNSAyNzNUMzczIDIzN1Q0MTIgMTcyUTQxNCAxNjIgNDE0IDE0MlE0MTQgLTYgMjMwIC02UTE1NCAtNiAxMTcgMjJMNjggLTZINThRNDQgLTYgNDEgMFQzOCA0MlY3M1EzOCA4NSAzOCAxMDFUMzcgMTIyUTM3IDE0NCA0MiAxNDhUNjggMTUzSDc1UTg3IDE1MyA5MSAxNTFUOTcgMTQ3VDEwMyAxMzJRMTMxIDQ2IDIyMCA0NkgyMzBRMjU3IDQ2IDI2NSA0N1EzMzAgNTggMzMwIDEwOFEzMzAgMTI3IDMxNiAxNDJRMzAwIDE1NiAyODQgMTYyUTI3MSAxNjggMjEyIDE3OFQxMjIgMjAyUTM4IDI0MyAzOCAzMTUnLFxuICAgIDB4MUQ0MkQ6ICcyNzIgNDlRMzIwIDQ5IDMyMCAxMzZWMTQ1VjE3N0gzODJWMTQzUTM4MiAxMDYgMzgwIDk5UTM3NCA2MiAzNDkgMzZUMjg1IC0yTDI3MiAtNUgyNDdRMTczIC01IDEzNCAyN1ExMDkgNDYgMTAyIDc0VDk0IDE2MFE5NCAxNzEgOTQgMTk5VDk1IDI0NVYzODJIMjFWNDMzSDI1UTU4IDQzMyA5MCA0NTZRMTIxIDQ3OSAxNDAgNTIzVDE2MiA2MjFWNjM1SDIyNFY0NDRIMzYzVjM4MkgyMjRWMjM5VjIwN1YxNDlRMjI0IDk4IDIyOCA4MVQyNDkgNTVRMjYxIDQ5IDI3MiA0OScsXG4gICAgMHgxRDQyRTogJzQwIDQ0MkwxMzQgNDQ2UTIyOCA0NTAgMjI5IDQ1MEgyMzVWMjczVjE2NVEyMzUgOTAgMjM4IDc0VDI1NCA1MlEyNjggNDYgMzA0IDQ2SDMxOVEzNTIgNDYgMzgwIDY3VDQxOSAxMjFMNDIwIDEyM1E0MjQgMTM1IDQyNSAxOTlRNDI1IDIwMSA0MjUgMjA3UTQyNSAyMzMgNDI1IDI0OVYzMTZRNDI1IDM1NCA0MjMgMzYzVDQxMCAzNzZRMzk2IDM4MCAzNjkgMzgwSDM1NlY0NDJMNTU0IDQ1MFYyNjdRNTU0IDg0IDU1NiA3OVE1NjEgNjIgNjEwIDYySDYyM1YzMVE2MjMgMCA2MjIgMFE2MDMgMCA1MjcgLTNUNDMyIC02UTQzMSAtNiA0MzEgMjVWNTZMNDIwIDQ1UTM3MyA2IDMzMiAtMVEzMTMgLTYgMjgxIC02UTIwOCAtNiAxNjUgMTRUMTA5IDg3TDEwNyA5OEwxMDYgMjMwUTEwNiAzNTggMTA0IDM2NlE5NiAzODAgNTAgMzgwSDM3VjQ0Mkg0MCcsXG4gICAgMHgxRDQyRjogJzQwMSA0NDRRNDEzIDQ0MSA0OTUgNDQxUTU2OCA0NDEgNTc0IDQ0NEg1ODBWMzgySDUxMEw0MDkgMTU2UTM0OCAxOCAzMzkgNlEzMzEgLTQgMzIwIC00UTMxOCAtNCAzMTMgLTRUMzAzIC0zSDI4OFEyNzMgLTMgMjY0IDEyVDIyMSAxMDJRMjA2IDEzNSAxOTcgMTU2TDk2IDM4MkgyNlY0NDRIMzRRNDkgNDQxIDE0NSA0NDFRMjUyIDQ0MSAyNzAgNDQ0SDI3OVYzODJIMjMxTDI4NCAyNjRRMzM1IDE0OSAzMzggMTQ5UTMzOCAxNTAgMzg5IDI2NFQ0NDIgMzgxUTQ0MiAzODIgNDE4IDM4MkgzOTRWNDQ0SDQwMScsXG4gICAgMHgxRDQzMDogJzYyNCA0NDRRNjM2IDQ0MSA3MjIgNDQxUTc5NyA0NDEgODAwIDQ0NEg4MDVWMzgySDc0MUw1OTMgMTFRNTkyIDEwIDU5MCA4VDU4NiA0VDU4NCAyVDU4MSAwVDU3OSAtMlQ1NzUgLTNUNTcxIC0zVDU2NyAtNFQ1NjEgLTRUNTUzIC00SDU0MlE1MjUgLTQgNTE4IDZUNDkwIDcwUTQ3NCAxMTAgNDYzIDEzN0w0MTUgMjU3TDM2NyAxMzdRMzU3IDExMSAzNDEgNzJRMzIwIDE3IDMxMyA3VDI4OSAtNEgyNzdRMjU5IC00IDI1MyAtMlQyMzggMTFMOTAgMzgySDI1VjQ0NEgzMlE0NyA0NDEgMTQwIDQ0MVEyNDMgNDQxIDI2MSA0NDRIMjcwVjM4MkgyMjJMMzEwIDE2NEwzODIgMzQyTDM2NiAzODJIMzAzVjQ0NEgzMTBRMzIyIDQ0MSA0MDcgNDQxUTUwOCA0NDEgNTIzIDQ0NEg1MzFWMzgySDUwNlE0ODEgMzgyIDQ4MSAzODBRNDgyIDM3NiA1MjkgMjU5VDU3NyAxNDJMNjc0IDM4Mkg2MTdWNDQ0SDYyNCcsXG4gICAgMHgxRDQzMTogJzIyNyAwUTIxMiAzIDEyMSAzUTQwIDMgMjggMEgyMVY2MkgxMTdMMjQ1IDIxM0wxMDkgMzgySDI2VjQ0NEgzNFE0OSA0NDEgMTQzIDQ0MVEyNDcgNDQxIDI2NSA0NDRIMjc0VjM4MkgyNDZMMjgxIDMzOVEzMTUgMjk3IDMxNiAyOTdRMzIwIDI5NyAzNTQgMzQxTDM4OSAzODJIMzUyVjQ0NEgzNjBRMzc1IDQ0MSA0NjYgNDQxUTU0NyA0NDEgNTU5IDQ0NEg1NjZWMzgySDQ3MUwzNTUgMjQ2TDUwNCA2M0w1NDUgNjJINTg2VjBINTc4UTU2MyAzIDQ2OSAzUTM2NSAzIDM0NyAwSDMzOFY2MkgzNjZRMzY2IDYzIDMyNiAxMTJUMjg1IDE2M0wxOTggNjNMMjE3IDYySDIzNVYwSDIyNycsXG4gICAgMHgxRDQzMjogJzg0IC0xMDJRODQgLTExMCA4NyAtMTE5VDEwMiAtMTM4VDEzMyAtMTQ5UTE0OCAtMTQ4IDE2MiAtMTQzVDE4NiAtMTMxVDIwNiAtMTE0VDIyMiAtOTVUMjM0IC03NlQyNDMgLTU5VDI0OSAtNDVUMjUyIC0zN0wyNjkgMEw5NiAzODJIMjZWNDQ0SDM0UTQ5IDQ0MSAxNDYgNDQxUTI1MiA0NDEgMjcwIDQ0NEgyNzlWMzgySDI1NVEyMzIgMzgyIDIzMiAzODBMMzM3IDE1MUw0NDIgMzgySDM5NFY0NDRINDAxUTQxMyA0NDEgNDk1IDQ0MVE1NjggNDQxIDU3NCA0NDRINTgwVjM4Mkg1MTBMNDA2IDE1MlEyOTggLTg0IDI5NyAtODdRMjY5IC0xMzkgMjI1IC0xNjlUMTMxIC0yMDBRODUgLTIwMCA1NCAtMTcyVDIzIC0xMDBRMjMgLTY0IDQ0IC01MFQ4NyAtMzVRMTExIC0zNSAxMzAgLTUwVDE1MiAtOTJWLTEwMEg4NFYtMTAyJyxcbiAgICAweDFENDMzOiAnNDggMjYyUTQ4IDI2NCA1NCAzNDlUNjAgNDM2VjQ0NEgyNTJRMjg5IDQ0NCAzMzYgNDQ0VDM5NCA0NDVRNDQxIDQ0NSA0NTAgNDQxVDQ1OSA0MThRNDU5IDQwNiA0NTggNDA0UTQ1NiAzOTkgMzI3IDIyOVQxOTQgNTVIMjM3UTI2MCA1NiAyNjggNTZUMjk3IDU4VDMyNSA2NVQzNDggNzdUMzcwIDk4VDM4NCAxMjhUMzk1IDE3MFE0MDAgMTk3IDQwMCAyMTZRNDAwIDIxNyA0MzEgMjE3SDQ2MlYyMTFRNDYxIDIwOCA0NTMgMTA4VDQ0NCA2VjBIMjQ1UTQ2IDAgNDMgMlEzMiA3IDMyIDI4VjMzUTMyIDQxIDQwIDUyVDg0IDExMlExMjkgMTcwIDE2NCAyMTdMMjk4IDM5M0gyNTZRMTg5IDM5MiAxNjUgMzgwUTEyNCAzNjAgMTE1IDMwM1ExMTAgMjgwIDExMCAyNTZRMTEwIDI1NCA3OSAyNTRINDhWMjYyJyxcbiAgICAweDFENDM0OiAnMjA4IDc0UTIwOCA1MCAyNTQgNDZRMjcyIDQ2IDI3MiAzNVEyNzIgMzQgMjcwIDIyUTI2NyA4IDI2NCA0VDI1MSAwUTI0OSAwIDIzOSAwVDIwNSAxVDE0MSAyUTcwIDIgNTAgMEg0MlEzNSA3IDM1IDExUTM3IDM4IDQ4IDQ2SDYyUTEzMiA0OSAxNjQgOTZRMTcwIDEwMiAzNDUgNDAxVDUyMyA3MDRRNTMwIDcxNiA1NDcgNzE2SDU1NUg1NzJRNTc4IDcwNyA1NzggNzA2TDYwNiAzODNRNjM0IDYwIDYzNiA1N1E2NDEgNDYgNzAxIDQ2UTcyNiA0NiA3MjYgMzZRNzI2IDM0IDcyMyAyMlE3MjAgNyA3MTggNFQ3MDQgMFE3MDEgMCA2OTAgMFQ2NTEgMVQ1NzggMlE0ODQgMiA0NTUgMEg0NDNRNDM3IDYgNDM3IDlUNDM5IDI3UTQ0MyA0MCA0NDUgNDNMNDQ5IDQ2SDQ2OVE1MjMgNDkgNTMzIDYzTDUyMSAyMTNIMjgzTDI0OSAxNTVRMjA4IDg2IDIwOCA3NFpNNTE2IDI2MFE1MTYgMjcxIDUwNCA0MTZUNDkwIDU2Mkw0NjMgNTE5UTQ0NyA0OTIgNDAwIDQxMkwzMTAgMjYwTDQxMyAyNTlRNTE2IDI1OSA1MTYgMjYwJyxcbiAgICAweDFENDM1OiAnMjMxIDYzN1EyMDQgNjM3IDE5OSA2MzhUMTk0IDY0OVExOTQgNjc2IDIwNSA2ODJRMjA2IDY4MyAzMzUgNjgzUTU5NCA2ODMgNjA4IDY4MVE2NzEgNjcxIDcxMyA2MzZUNzU2IDU0NFE3NTYgNDgwIDY5OCA0MjlUNTY1IDM2MEw1NTUgMzU3UTYxOSAzNDggNjYwIDMxMVQ3MDIgMjE5UTcwMiAxNDYgNjMwIDc4VDQ1MyAxUTQ0NiAwIDI0MiAwUTQyIDAgMzkgMlEzNSA1IDM1IDEwUTM1IDE3IDM3IDI0UTQyIDQzIDQ3IDQ1UTUxIDQ2IDYyIDQ2SDY4UTk1IDQ2IDEyOCA0OVExNDIgNTIgMTQ3IDYxUTE1MCA2NSAyMTkgMzM5VDI4OCA2MjhRMjg4IDYzNSAyMzEgNjM3Wk02NDkgNTQ0UTY0OSA1NzQgNjM0IDYwMFQ1ODUgNjM0UTU3OCA2MzYgNDkzIDYzN1E0NzMgNjM3IDQ1MSA2MzdUNDE2IDYzNkg0MDNRMzg4IDYzNSAzODQgNjI2UTM4MiA2MjIgMzUyIDUwNlEzNTIgNTAzIDM1MSA1MDBMMzIwIDM3NEg0MDFRNDgyIDM3NCA0OTQgMzc2UTU1NCAzODYgNjAxIDQzNFQ2NDkgNTQ0Wk01OTUgMjI5UTU5NSAyNzMgNTcyIDMwMlQ1MTIgMzM2UTUwNiAzMzcgNDI5IDMzN1EzMTEgMzM3IDMxMCAzMzZRMzEwIDMzNCAyOTMgMjYzVDI1OCAxMjJMMjQwIDUyUTI0MCA0OCAyNTIgNDhUMzMzIDQ2UTQyMiA0NiA0MjkgNDdRNDkxIDU0IDU0MyAxMDVUNTk1IDIyOScsXG4gICAgMHgxRDQzNjogJzUwIDI1MlE1MCAzNjcgMTE3IDQ3M1QyODYgNjQxVDQ5MCA3MDRRNTgwIDcwNCA2MzMgNjUzUTY0MiA2NDMgNjQ4IDYzNlQ2NTYgNjI2TDY1NyA2MjNRNjYwIDYyMyA2ODQgNjQ5UTY5MSA2NTUgNjk5IDY2M1Q3MTUgNjc5VDcyNSA2OTBMNzQwIDcwNUg3NDZRNzYwIDcwNSA3NjAgNjk4UTc2MCA2OTQgNzI4IDU2MVE2OTIgNDIyIDY5MiA0MjFRNjkwIDQxNiA2ODcgNDE1VDY2OSA0MTNINjUzUTY0NyA0MTkgNjQ3IDQyMlE2NDcgNDIzIDY0OCA0MjlUNjUwIDQ0OVQ2NTEgNDgxUTY1MSA1NTIgNjE5IDYwNVQ1MTAgNjU5UTQ4NCA2NTkgNDU0IDY1MlQzODIgNjI4VDI5OSA1NzJUMjI2IDQ3OVExOTQgNDIyIDE3NSAzNDZUMTU2IDIyMlExNTYgMTA4IDIzMiA1OFEyODAgMjQgMzUwIDI0UTQ0MSAyNCA1MTIgOTJUNjA2IDI0MFE2MTAgMjUzIDYxMiAyNTVUNjI4IDI1N1E2NDggMjU3IDY0OCAyNDhRNjQ4IDI0MyA2NDcgMjM5UTYxOCAxMzIgNTIzIDU1VDMxOSAtMjJRMjA2IC0yMiAxMjggNTNUNTAgMjUyJyxcbiAgICAweDFENDM3OiAnMjg3IDYyOFEyODcgNjM1IDIzMCA2MzdRMjA3IDYzNyAyMDAgNjM4VDE5MyA2NDdRMTkzIDY1NSAxOTcgNjY3VDIwNCA2ODJRMjA2IDY4MyA0MDMgNjgzUTU3MCA2ODIgNTkwIDY4MlQ2MzAgNjc2UTcwMiA2NTkgNzUyIDU5N1Q4MDMgNDMxUTgwMyAyNzUgNjk2IDE1MVQ0NDQgM0w0MzAgMUwyMzYgMEgxMjVINzJRNDggMCA0MSAyVDMzIDExUTMzIDEzIDM2IDI1UTQwIDQxIDQ0IDQzVDY3IDQ2UTk0IDQ2IDEyNyA0OVExNDEgNTIgMTQ2IDYxUTE0OSA2NSAyMTggMzM5VDI4NyA2MjhaTTcwMyA0NjlRNzAzIDUwNyA2OTIgNTM3VDY2NiA1ODRUNjI5IDYxM1Q1OTAgNjI5VDU1NSA2MzZRNTUzIDYzNiA1NDEgNjM2VDUxMiA2MzZUNDc5IDYzN0g0MzZRMzkyIDYzNyAzODYgNjI3UTM4NCA2MjMgMzEzIDMzOVQyNDIgNTJRMjQyIDQ4IDI1MyA0OFQzMzAgNDdRMzM1IDQ3IDM0OSA0N1QzNzMgNDZRNDk5IDQ2IDU4MSAxMjhRNjE3IDE2NCA2NDAgMjEyVDY4MyAzMzlUNzAzIDQ2OScsXG4gICAgMHgxRDQzODogJzQ5MiAyMTNRNDcyIDIxMyA0NzIgMjI2UTQ3MiAyMzAgNDc3IDI1MFQ0ODIgMjg1UTQ4MiAzMTYgNDYxIDMyM1QzNjQgMzMwSDMxMlEzMTEgMzI4IDI3NyAxOTJUMjQzIDUyUTI0MyA0OCAyNTQgNDhUMzM0IDQ2UTQyOCA0NiA0NTggNDhUNTE4IDYxUTU2NyA3NyA1OTkgMTE3VDY3MCAyNDhRNjgwIDI3MCA2ODMgMjcyUTY5MCAyNzQgNjk4IDI3NFE3MTggMjc0IDcxOCAyNjFRNjEzIDcgNjA4IDJRNjA1IDAgMzIyIDBIMTMzUTMxIDAgMzEgMTFRMzEgMTMgMzQgMjVRMzggNDEgNDIgNDNUNjUgNDZROTIgNDYgMTI1IDQ5UTEzOSA1MiAxNDQgNjFRMTQ2IDY2IDIxNSAzNDJUMjg1IDYyMlEyODUgNjI5IDI4MSA2MjlRMjczIDYzMiAyMjggNjM0SDE5N1ExOTEgNjQwIDE5MSA2NDJUMTkzIDY1OVExOTcgNjc2IDIwMyA2ODBINzU3UTc2NCA2NzYgNzY0IDY2OVE3NjQgNjY0IDc1MSA1NTdUNzM3IDQ0N1E3MzUgNDQwIDcxNyA0NDBINzA1UTY5OCA0NDUgNjk4IDQ1M0w3MDEgNDc2UTcwNCA1MDAgNzA0IDUyOFE3MDQgNTU4IDY5NyA1NzhUNjc4IDYwOVQ2NDMgNjI1VDU5NiA2MzJUNTMyIDYzNEg0ODVRMzk3IDYzMyAzOTIgNjMxUTM4OCA2MjkgMzg2IDYyMlEzODUgNjE5IDM1NSA0OTlUMzI0IDM3N1EzNDcgMzc2IDM3MiAzNzZIMzk4UTQ2NCAzNzYgNDg5IDM5MVQ1MzQgNDcyUTUzOCA0ODggNTQwIDQ5MFQ1NTcgNDkzUTU2MiA0OTMgNTY1IDQ5M1Q1NzAgNDkyVDU3MiA0OTFUNTc0IDQ4N1Q1NzcgNDgzTDU0NCAzNTFRNTExIDIxOCA1MDggMjE2UTUwNSAyMTMgNDkyIDIxMycsXG4gICAgMHgxRDQzOTogJzQ4IDFRMzEgMSAzMSAxMVEzMSAxMyAzNCAyNVEzOCA0MSA0MiA0M1Q2NSA0NlE5MiA0NiAxMjUgNDlRMTM5IDUyIDE0NCA2MVExNDYgNjYgMjE1IDM0MlQyODUgNjIyUTI4NSA2MjkgMjgxIDYyOVEyNzMgNjMyIDIyOCA2MzRIMTk3UTE5MSA2NDAgMTkxIDY0MlQxOTMgNjU5UTE5NyA2NzYgMjAzIDY4MEg3NDJRNzQ5IDY3NiA3NDkgNjY5UTc0OSA2NjQgNzM2IDU1N1Q3MjIgNDQ3UTcyMCA0NDAgNzAyIDQ0MEg2OTBRNjgzIDQ0NSA2ODMgNDUzUTY4MyA0NTQgNjg2IDQ3N1Q2ODkgNTMwUTY4OSA1NjAgNjgyIDU3OVQ2NjMgNjEwVDYyNiA2MjZUNTc1IDYzM1Q1MDMgNjM0SDQ4MFEzOTggNjMzIDM5MyA2MzFRMzg4IDYyOSAzODYgNjIzUTM4NSA2MjIgMzUyIDQ5MkwzMjAgMzYzSDM3NVEzNzggMzYzIDM5OCAzNjNUNDI2IDM2NFQ0NDggMzY3VDQ3MiAzNzRUNDg5IDM4NlE1MDIgMzk4IDUxMSA0MTlUNTI0IDQ1N1Q1MjkgNDc1UTUzMiA0ODAgNTQ4IDQ4MEg1NjBRNTY3IDQ3NSA1NjcgNDcwUTU2NyA0NjcgNTM2IDMzOVQ1MDIgMjA3UTUwMCAyMDAgNDgyIDIwMEg0NzBRNDYzIDIwNiA0NjMgMjEyUTQ2MyAyMTUgNDY4IDIzNFQ0NzMgMjc0UTQ3MyAzMDMgNDUzIDMxMFQzNjQgMzE3SDMwOUwyNzcgMTkwUTI0NSA2NiAyNDUgNjBRMjQ1IDQ2IDMzNCA0NkgzNTlRMzY1IDQwIDM2NSAzOVQzNjMgMTlRMzU5IDYgMzUzIDBIMzM2UTI5NSAyIDE4NSAyUTEyMCAyIDg2IDJUNDggMScsXG4gICAgMHgxRDQzQTogJzUwIDI1MlE1MCAzNjcgMTE3IDQ3M1QyODYgNjQxVDQ5MCA3MDRRNTgwIDcwNCA2MzMgNjUzUTY0MiA2NDMgNjQ4IDYzNlQ2NTYgNjI2TDY1NyA2MjNRNjYwIDYyMyA2ODQgNjQ5UTY5MSA2NTUgNjk5IDY2M1Q3MTUgNjc5VDcyNSA2OTBMNzQwIDcwNUg3NDZRNzYwIDcwNSA3NjAgNjk4UTc2MCA2OTQgNzI4IDU2MVE2OTIgNDIyIDY5MiA0MjFRNjkwIDQxNiA2ODcgNDE1VDY2OSA0MTNINjUzUTY0NyA0MTkgNjQ3IDQyMlE2NDcgNDIzIDY0OCA0MjlUNjUwIDQ0OVQ2NTEgNDgxUTY1MSA1NTIgNjE5IDYwNVQ1MTAgNjU5UTQ5MiA2NTkgNDcxIDY1NlQ0MTggNjQzVDM1NyA2MTVUMjk0IDU2N1QyMzYgNDk2VDE4OSAzOTRUMTU4IDI2MFExNTYgMjQyIDE1NiAyMjFRMTU2IDE3MyAxNzAgMTM2VDIwNiA3OVQyNTYgNDVUMzA4IDI4VDM1MyAyNFE0MDcgMjQgNDUyIDQ3VDUxNCAxMDZRNTE3IDExNCA1MjkgMTYxVDU0MSAyMTRRNTQxIDIyMiA1MjggMjI0VDQ2OCAyMjdINDMxUTQyNSAyMzMgNDI1IDIzNVQ0MjcgMjU0UTQzMSAyNjcgNDM3IDI3M0g0NTRRNDk0IDI3MSA1OTQgMjcxUTYzNCAyNzEgNjU5IDI3MVQ2OTUgMjcyVDcwNyAyNzJRNzIxIDI3MiA3MjEgMjYzUTcyMSAyNjEgNzE5IDI0OVE3MTQgMjMwIDcwOSAyMjhRNzA2IDIyNyA2OTQgMjI3UTY3NCAyMjcgNjUzIDIyNFE2NDYgMjIxIDY0MyAyMTVUNjI5IDE2NFE2MjAgMTMxIDYxNCAxMDhRNTg5IDYgNTg2IDNRNTg0IDEgNTgxIDFRNTcxIDEgNTUzIDIxVDUzMCA1MlE1MzAgNTMgNTI4IDUyVDUyMiA0N1E0NDggLTIyIDMyMiAtMjJRMjAxIC0yMiAxMjYgNTVUNTAgMjUyJyxcbiAgICAweDFENDNCOiAnMjI4IDYzN1ExOTQgNjM3IDE5MiA2NDFRMTkxIDY0MyAxOTEgNjQ5UTE5MSA2NzMgMjAyIDY4MlEyMDQgNjgzIDIxOSA2ODNRMjYwIDY4MSAzNTUgNjgxUTM4OSA2ODEgNDE4IDY4MVQ0NjMgNjgyVDQ4MyA2ODJRNDk5IDY4MiA0OTkgNjcyUTQ5OSA2NzAgNDk3IDY1OFE0OTIgNjQxIDQ4NyA2MzhINDg1UTQ4MyA2MzggNDgwIDYzOFQ0NzMgNjM4VDQ2NCA2MzdUNDU1IDYzN1E0MTYgNjM2IDQwNSA2MzRUMzg3IDYyM1EzODQgNjE5IDM1NSA1MDBRMzQ4IDQ3NCAzNDAgNDQyVDMyOCAzOTVMMzI0IDM4MFEzMjQgMzc4IDQ2OSAzNzhINjE0TDYxNSAzODFRNjE1IDM4NCA2NDYgNTA0UTY3NCA2MTkgNjc0IDYyN1Q2MTcgNjM3UTU5NCA2MzcgNTg3IDYzOVQ1ODAgNjQ4UTU4MCA2NTAgNTgyIDY2MFE1ODYgNjc3IDU4OCA2NzlUNjA0IDY4MlE2MDkgNjgyIDY0NiA2ODFUNzQwIDY4MFE4MDIgNjgwIDgzNSA2ODFUODcxIDY4MlE4ODggNjgyIDg4OCA2NzJRODg4IDY0NSA4NzYgNjM4SDg3NFE4NzIgNjM4IDg2OSA2MzhUODYyIDYzOFQ4NTMgNjM3VDg0NCA2MzdRODA1IDYzNiA3OTQgNjM0VDc3NiA2MjNRNzczIDYxOCA3MDQgMzQwVDYzNCA1OFE2MzQgNTEgNjM4IDUxUTY0NiA0OCA2OTIgNDZINzIzUTcyOSAzOCA3MjkgMzdUNzI2IDE5UTcyMiA2IDcxNiAwSDcwMVE2NjQgMiA1NjcgMlE1MzMgMiA1MDQgMlQ0NTggMlQ0MzcgMVE0MjAgMSA0MjAgMTBRNDIwIDE1IDQyMyAyNFE0MjggNDMgNDMzIDQ1UTQzNyA0NiA0NDggNDZINDU0UTQ4MSA0NiA1MTQgNDlRNTIwIDUwIDUyMiA1MFQ1MjggNTVUNTM0IDY0VDU0MCA4MlQ1NDcgMTEwVDU1OCAxNTNRNTY1IDE4MSA1NjkgMTk4UTYwMiAzMzAgNjAyIDMzMVQ0NTcgMzMySDMxMkwyNzkgMTk3UTI0NSA2MyAyNDUgNThRMjQ1IDUxIDI1MyA0OVQzMDMgNDZIMzM0UTM0MCAzOCAzNDAgMzdUMzM3IDE5UTMzMyA2IDMyNyAwSDMxMlEyNzUgMiAxNzggMlExNDQgMiAxMTUgMlQ2OSAyVDQ4IDFRMzEgMSAzMSAxMFEzMSAxMiAzNCAyNFEzOSA0MyA0NCA0NVE0OCA0NiA1OSA0Nkg2NVE5MiA0NiAxMjUgNDlRMTM5IDUyIDE0NCA2MVExNDcgNjUgMjE2IDMzOVQyODUgNjI4UTI4NSA2MzUgMjI4IDYzNycsXG4gICAgMHgxRDQzQzogJzQzIDFRMjYgMSAyNiAxMFEyNiAxMiAyOSAyNFEzNCA0MyAzOSA0NVE0MiA0NiA1NCA0Nkg2MFExMjAgNDYgMTM2IDUzUTEzNyA1MyAxMzggNTRRMTQzIDU2IDE0OSA3N1QxOTggMjczUTIxMCAzMTggMjE2IDM0NFEyODYgNjI0IDI4NiA2MjZRMjg0IDYzMCAyODQgNjMxUTI3NCA2MzcgMjEzIDYzN0gxOTNRMTg0IDY0MyAxODkgNjYyUTE5MyA2NzcgMTk1IDY4MFQyMDkgNjgzSDIxM1EyODUgNjgxIDM1OSA2ODFRNDgxIDY4MSA0ODcgNjgzSDQ5N1E1MDQgNjc2IDUwNCA2NzJUNTAxIDY1NVQ0OTQgNjM5UTQ5MSA2MzcgNDcxIDYzN1E0NDAgNjM3IDQwNyA2MzRRMzkzIDYzMSAzODggNjIzUTM4MSA2MDkgMzM3IDQzMlEzMjYgMzg1IDMxNSAzNDFRMjQ1IDY1IDI0NSA1OVEyNDUgNTIgMjU1IDUwVDMwNyA0NkgzMzlRMzQ1IDM4IDM0NSAzN1QzNDIgMTlRMzM4IDYgMzMyIDBIMzE2UTI3OSAyIDE3OSAyUTE0MyAyIDExMyAyVDY1IDJUNDMgMScsXG4gICAgMHgxRDQzRDogJzQ0NyA2MjVRNDQ3IDYzNyAzNTQgNjM3SDMyOVEzMjMgNjQyIDMyMyA2NDVUMzI1IDY2NFEzMjkgNjc3IDMzNSA2ODNIMzUyUTM5MyA2ODEgNDk4IDY4MVE1NDEgNjgxIDU2OCA2ODFUNjA1IDY4MlQ2MTkgNjgyUTYzMyA2ODIgNjMzIDY3MlE2MzMgNjcwIDYzMCA2NThRNjI2IDY0MiA2MjMgNjQwVDYwNCA2MzdRNTUyIDYzNyA1NDUgNjIzUTU0MSA2MTAgNDgzIDM3NlE0MjAgMTI4IDQxOSAxMjdRMzk3IDY0IDMzMyAyMVQxOTUgLTIyUTEzNyAtMjIgOTcgOFQ1NyA4OFE1NyAxMzAgODAgMTUyVDEzMiAxNzRRMTc3IDE3NCAxODIgMTMwUTE4MiA5OCAxNjQgODBUMTIzIDU2UTExNSA1NCAxMTUgNTNUMTIyIDQ0UTE0OCAxNSAxOTcgMTVRMjM1IDE1IDI3MSA0N1QzMjQgMTMwUTMyOCAxNDIgMzg3IDM4MFQ0NDcgNjI1JyxcbiAgICAweDFENDNFOiAnMjg1IDYyOFEyODUgNjM1IDIyOCA2MzdRMjA1IDYzNyAxOTggNjM4VDE5MSA2NDdRMTkxIDY0OSAxOTMgNjYxUTE5OSA2ODEgMjAzIDY4MlEyMDUgNjgzIDIxNCA2ODNIMjE5UTI2MCA2ODEgMzU1IDY4MVEzODkgNjgxIDQxOCA2ODFUNDYzIDY4MlQ0ODMgNjgyUTUwMCA2ODIgNTAwIDY3NFE1MDAgNjY5IDQ5NyA2NjBRNDk2IDY1OCA0OTYgNjU0VDQ5NSA2NDhUNDkzIDY0NFQ0OTAgNjQxVDQ4NiA2MzlUNDc5IDYzOFQ0NzAgNjM3VDQ1NiA2MzdRNDE2IDYzNiA0MDUgNjM0VDM4NyA2MjNMMzA2IDMwNVEzMDcgMzA1IDQ5MCA0NDlUNjc4IDU5N1E2OTIgNjExIDY5MiA2MjBRNjkyIDYzNSA2NjcgNjM3UTY1MSA2MzcgNjUxIDY0OFE2NTEgNjUwIDY1NCA2NjJUNjU5IDY3N1E2NjIgNjgyIDY3NiA2ODJRNjgwIDY4MiA3MTEgNjgxVDc5MSA2ODBRODE0IDY4MCA4MzkgNjgxVDg2OSA2ODJRODg5IDY4MiA4ODkgNjcyUTg4OSA2NTAgODgxIDY0MlE4NzggNjM3IDg2MiA2MzdRNzg3IDYzMiA3MjYgNTg2UTcxMCA1NzYgNjU2IDUzNFQ1NTYgNDU1TDUwOSA0MThMNTE4IDM5NlE1MjcgMzc0IDU0NiAzMjlUNTgxIDI0NFE2NTYgNjcgNjYxIDYxUTY2MyA1OSA2NjYgNTdRNjgwIDQ3IDcxNyA0Nkg3MzhRNzQ0IDM4IDc0NCAzN1Q3NDEgMTlRNzM3IDYgNzMxIDBINzIwUTY4MCAzIDYyNSAzUTUwMyAzIDQ4OCAwSDQ3OFE0NzIgNiA0NzIgOVQ0NzQgMjdRNDc4IDQwIDQ4MCA0M1Q0OTEgNDZINDk0UTU0NCA0NiA1NDQgNzFRNTQ0IDc1IDUxNyAxNDFUNDg1IDIxNkw0MjcgMzU0TDM1OSAzMDFMMjkxIDI0OEwyNjggMTU1UTI0NSA2MyAyNDUgNThRMjQ1IDUxIDI1MyA0OVQzMDMgNDZIMzM0UTM0MCAzNyAzNDAgMzVRMzQwIDE5IDMzMyA1UTMyOCAwIDMxNyAwUTMxNCAwIDI4MCAxVDE4MCAyUTExOCAyIDg1IDJUNDkgMVEzMSAxIDMxIDExUTMxIDEzIDM0IDI1UTM4IDQxIDQyIDQzVDY1IDQ2UTkyIDQ2IDEyNSA0OVExMzkgNTIgMTQ0IDYxUTE0NyA2NSAyMTYgMzM5VDI4NSA2MjgnLFxuICAgIDB4MUQ0M0Y6ICcyMjggNjM3UTE5NCA2MzcgMTkyIDY0MVExOTEgNjQzIDE5MSA2NDlRMTkxIDY3MyAyMDIgNjgyUTIwNCA2ODMgMjE3IDY4M1EyNzEgNjgwIDM0NCA2ODBRNDg1IDY4MCA1MDYgNjgzSDUxOFE1MjQgNjc3IDUyNCA2NzRUNTIyIDY1NlE1MTcgNjQxIDUxMyA2MzdINDc1UTQwNiA2MzYgMzk0IDYyOFEzODcgNjI0IDM4MCA2MDBUMzEzIDMzNlEyOTcgMjcxIDI3OSAxOThUMjUyIDg4TDI0MyA1MlEyNDMgNDggMjUyIDQ4VDMxMSA0NkgzMjhRMzYwIDQ2IDM3OSA0N1Q0MjggNTRUNDc4IDcyVDUyMiAxMDZUNTY0IDE2MVE1ODAgMTkxIDU5NCAyMjhUNjExIDI3MFE2MTYgMjczIDYyOCAyNzNINjQxUTY0NyAyNjQgNjQ3IDI2MlQ2MjcgMjAzVDU4MyA4M1Q1NTcgOVE1NTUgNCA1NTMgM1Q1MzcgMFQ0OTQgLTFRNDgzIC0xIDQxOCAtMVQyOTQgMEgxMTZRMzIgMCAzMiAxMFEzMiAxNyAzNCAyNFEzOSA0MyA0NCA0NVE0OCA0NiA1OSA0Nkg2NVE5MiA0NiAxMjUgNDlRMTM5IDUyIDE0NCA2MVExNDcgNjUgMjE2IDMzOVQyODUgNjI4UTI4NSA2MzUgMjI4IDYzNycsXG4gICAgMHgxRDQ0MDogJzI4OSA2MjlRMjg5IDYzNSAyMzIgNjM3UTIwOCA2MzcgMjAxIDYzOFQxOTQgNjQ4UTE5NCA2NDkgMTk2IDY1OVExOTcgNjYyIDE5OCA2NjZUMTk5IDY3MVQyMDEgNjc2VDIwMyA2NzlUMjA3IDY4MVQyMTIgNjgzVDIyMCA2ODNUMjMyIDY4NFEyMzggNjg0IDI2MiA2ODRUMzA3IDY4M1EzODYgNjgzIDM5OCA2ODNUNDE0IDY3OFE0MTUgNjc0IDQ1MSAzOTZMNDg3IDExN0w1MTAgMTU0UTUzNCAxOTAgNTc0IDI1NFQ2NjIgMzk0UTgzNyA2NzMgODM5IDY3NVE4NDAgNjc2IDg0MiA2NzhUODQ2IDY4MUw4NTIgNjgzSDk0OFE5NjUgNjgzIDk4OCA2ODNUMTAxNyA2ODRRMTA1MSA2ODQgMTA1MSA2NzNRMTA1MSA2NjggMTA0OCA2NTZUMTA0NSA2NDNRMTA0MSA2MzcgMTAwOCA2MzdROTY4IDYzNiA5NTcgNjM0VDkzOSA2MjNROTM2IDYxOCA4NjcgMzQwVDc5NyA1OVE3OTcgNTUgNzk4IDU0VDgwNSA1MFQ4MjIgNDhUODU1IDQ2SDg4NlE4OTIgMzcgODkyIDM1UTg5MiAxOSA4ODUgNVE4ODAgMCA4NjkgMFE4NjQgMCA4MjggMVQ3MzYgMlE2NzUgMiA2NDQgMlQ2MDkgMVE1OTIgMSA1OTIgMTFRNTkyIDEzIDU5NCAyNVE1OTggNDEgNjAyIDQzVDYyNSA0NlE2NTIgNDYgNjg1IDQ5UTY5OSA1MiA3MDQgNjFRNzA2IDY1IDc0MiAyMDdUODEzIDQ5MFQ4NDggNjMxTDY1NCAzMjJRNDU4IDEwIDQ1MyA1UTQ1MSA0IDQ0OSAzUTQ0NCAwIDQzMyAwUTQxOCAwIDQxNSA3UTQxMyAxMSAzNzQgMzE3TDMzNSA2MjRMMjY3IDM1NFEyMDAgODggMjAwIDc5UTIwNiA0NiAyNzIgNDZIMjgyUTI4OCA0MSAyODkgMzdUMjg2IDE5UTI4MiAzIDI3OCAxUTI3NCAwIDI2NyAwUTI2NSAwIDI1NSAwVDIyMSAxVDE1NyAyUTEyNyAyIDk1IDFUNTggMFE0MyAwIDM5IDJUMzUgMTFRMzUgMTMgMzggMjVUNDMgNDBRNDUgNDYgNjUgNDZRMTM1IDQ2IDE1NCA4NlExNTggOTIgMjIzIDM1NFQyODkgNjI5JyxcbiAgICAweDFENDQxOiAnMjM0IDYzN1EyMzEgNjM3IDIyNiA2MzdRMjAxIDYzNyAxOTYgNjM4VDE5MSA2NDlRMTkxIDY3NiAyMDIgNjgyUTIwNCA2ODMgMjk5IDY4M1EzNzYgNjgzIDM4NyA2ODNUNDAxIDY3N1E2MTIgMTgxIDYxNiAxNjhMNjcwIDM4MVE3MjMgNTkyIDcyMyA2MDZRNzIzIDYzMyA2NTkgNjM3UTYzNSA2MzcgNjM1IDY0OFE2MzUgNjUwIDYzNyA2NjBRNjQxIDY3NiA2NDMgNjc5VDY1MyA2ODNRNjU2IDY4MyA2ODQgNjgyVDc2NyA2ODBRODE3IDY4MCA4NDMgNjgxVDg3MyA2ODJRODg4IDY4MiA4ODggNjcyUTg4OCA2NTAgODgwIDY0MlE4NzggNjM3IDg1OCA2MzdRNzg3IDYzMyA3NjkgNTk3TDYyMCA3UTYxOCAwIDU5OSAwUTU4NSAwIDU4MiAyUTU3OSA1IDQ1MyAzMDVMMzI2IDYwNEwyNjEgMzQ0UTE5NiA4OCAxOTYgNzlRMjAxIDQ2IDI2OCA0NkgyNzhRMjg0IDQxIDI4NCAzOFQyODIgMTlRMjc4IDYgMjcyIDBIMjU5UTIyOCAyIDE1MSAyUTEyMyAyIDEwMCAyVDYzIDJUNDYgMVEzMSAxIDMxIDEwUTMxIDE0IDM0IDI2VDM5IDQwUTQxIDQ2IDYyIDQ2UTEzMCA0OSAxNTAgODVRMTU0IDkxIDIyMSAzNjJMMjg5IDYzNFEyODcgNjM1IDIzNCA2MzcnLFxuICAgIDB4MUQ0NDI6ICc3NDAgNDM1UTc0MCAzMjAgNjc2IDIxM1Q1MTEgNDJUMzA0IC0yMlEyMDcgLTIyIDEzOCAzNVQ1MSAyMDFRNTAgMjA5IDUwIDI0NFE1MCAzNDYgOTggNDM4VDIyNyA2MDFRMzUxIDcwNCA0NzYgNzA0UTUxNCA3MDQgNTI0IDcwM1E2MjEgNjg5IDY4MCA2MTdUNzQwIDQzNVpNNjM3IDQ3NlE2MzcgNTY1IDU5MSA2MTVUNDc2IDY2NVEzOTYgNjY1IDMyMiA2MDVRMjQyIDU0MiAyMDAgNDI4VDE1NyAyMTZRMTU3IDEyNiAyMDAgNzNUMzE0IDE5UTQwNCAxOSA0ODUgOThUNjA4IDMxM1E2MzcgNDA4IDYzNyA0NzYnLFxuICAgIDB4MUQ0NDM6ICcyODcgNjI4UTI4NyA2MzUgMjMwIDYzN1EyMDYgNjM3IDE5OSA2MzhUMTkyIDY0OFExOTIgNjQ5IDE5NCA2NTlRMjAwIDY3OSAyMDMgNjgxVDM5NyA2ODNRNTg3IDY4MiA2MDAgNjgwUTY2NCA2NjkgNzA3IDYzMVQ3NTEgNTMwUTc1MSA0NTMgNjg1IDM4OVE2MTYgMzIxIDUwNyAzMDNRNTAwIDMwMiA0MDIgMzAxSDMwN0wyNzcgMTgyUTI0NyA2NiAyNDcgNTlRMjQ3IDU1IDI0OCA1NFQyNTUgNTBUMjcyIDQ4VDMwNSA0NkgzMzZRMzQyIDM3IDM0MiAzNVEzNDIgMTkgMzM1IDVRMzMwIDAgMzE5IDBRMzE2IDAgMjgyIDFUMTgyIDJRMTIwIDIgODcgMlQ1MSAxUTMzIDEgMzMgMTFRMzMgMTMgMzYgMjVRNDAgNDEgNDQgNDNUNjcgNDZROTQgNDYgMTI3IDQ5UTE0MSA1MiAxNDYgNjFRMTQ5IDY1IDIxOCAzMzlUMjg3IDYyOFpNNjQ1IDU1NFE2NDUgNTY3IDY0MyA1NzVUNjM0IDU5N1Q2MDkgNjE5VDU2MCA2MzVRNTUzIDYzNiA0ODAgNjM3UTQ2MyA2MzcgNDQ1IDYzN1Q0MTYgNjM2VDQwNCA2MzZRMzkxIDYzNSAzODYgNjI3UTM4NCA2MjEgMzY3IDU1MFQzMzIgNDEyVDMxNCAzNDRRMzE0IDM0MiAzOTUgMzQySDQwN0g0MzBRNTQyIDM0MiA1OTAgMzkyUTYxNyA0MTkgNjMxIDQ3MVQ2NDUgNTU0JyxcbiAgICAweDFENDQ0OiAnMzk5IC04MFEzOTkgLTQ3IDQwMCAtMzBUNDAyIC0xMVYtN0wzODcgLTExUTM0MSAtMjIgMzAzIC0yMlEyMDggLTIyIDEzOCAzNVQ1MSAyMDFRNTAgMjA5IDUwIDI0NFE1MCAzNDYgOTggNDM4VDIyNyA2MDFRMzUxIDcwNCA0NzYgNzA0UTUxNCA3MDQgNTI0IDcwM1E2MjEgNjg5IDY4MCA2MTdUNzQwIDQzNVE3NDAgMjU1IDU5MiAxMDdRNTI5IDQ3IDQ2MSAxNkw0NDQgOFYzUTQ0NCAyIDQ0OSAtMjRUNDcwIC02NlQ1MTYgLTgyUTU1MSAtODIgNTgzIC02MFQ2MjUgLTNRNjMxIDExIDYzOCAxMVE2NDcgMTEgNjQ5IDJRNjQ5IC02IDYzOSAtMzRUNjExIC0xMDBUNTU3IC0xNjVUNDgxIC0xOTRRMzk5IC0xOTQgMzk5IC04N1YtODBaTTYzNiA0NjhRNjM2IDUyMyA2MjEgNTY0VDU4MCA2MjVUNTMwIDY1NVQ0NzcgNjY1UTQyOSA2NjUgMzc5IDY0MFEyNzcgNTkxIDIxNSA0NjRUMTUzIDIxNlExNTMgMTEwIDIwNyA1OVEyMzEgMzggMjM2IDM4VjQ2UTIzNiA4NiAyNjkgMTIwVDM0NyAxNTVRMzcyIDE1NSAzOTAgMTQ0VDQxNyAxMTRUNDI5IDgyVDQzNSA1NUw0NDggNjRRNTEyIDEwOCA1NTcgMTg1VDYxOSAzMzRUNjM2IDQ2OFpNMzE0IDE4UTM2MiAxOCA0MDQgMzlMNDAzIDQ5UTM5OSAxMDQgMzY2IDExNVEzNTQgMTE3IDM0NyAxMTdRMzQ0IDExNyAzNDEgMTE3VDMzNyAxMThRMzE3IDExOCAyOTYgOThUMjc0IDUyUTI3NCAxOCAzMTQgMTgnLFxuICAgIDB4MUQ0NDU6ICcyMzAgNjM3UTIwMyA2MzcgMTk4IDYzOFQxOTMgNjQ5UTE5MyA2NzYgMjA0IDY4MlEyMDYgNjgzIDM3OCA2ODNRNTUwIDY4MiA1NjQgNjgwUTYyMCA2NzIgNjU4IDY1MlQ3MTIgNjA2VDczMyA1NjNUNzM5IDUyOVE3MzkgNDg0IDcxMCA0NDVUNjQzIDM4NVQ1NzYgMzUxVDUzOCAzMzhMNTQ1IDMzM1E2MTIgMjk1IDYxMiAyMjNRNjEyIDIxMiA2MDcgMTYyVDYwMiA4MFY3MVE2MDIgNTMgNjAzIDQzVDYxNCAyNVQ2NDAgMTZRNjY4IDE2IDY4NiAzOFQ3MTIgODVRNzE3IDk5IDcyMCAxMDJUNzM1IDEwNVE3NTUgMTA1IDc1NSA5M1E3NTUgNzUgNzMxIDM2UTY5MyAtMjEgNjQxIC0yMUg2MzJRNTcxIC0yMSA1MzEgNFQ0ODcgODJRNDg3IDEwOSA1MDIgMTY2VDUxNyAyMzlRNTE3IDI5MCA0NzQgMzEzUTQ1OSAzMjAgNDQ5IDMyMVQzNzggMzIzSDMwOUwyNzcgMTkzUTI0NCA2MSAyNDQgNTlRMjQ0IDU1IDI0NSA1NFQyNTIgNTBUMjY5IDQ4VDMwMiA0NkgzMzNRMzM5IDM4IDMzOSAzN1QzMzYgMTlRMzMyIDYgMzI2IDBIMzExUTI3NSAyIDE4MCAyUTE0NiAyIDExNyAyVDcxIDJUNTAgMVEzMyAxIDMzIDEwUTMzIDEyIDM2IDI0UTQxIDQzIDQ2IDQ1UTUwIDQ2IDYxIDQ2SDY3UTk0IDQ2IDEyNyA0OVExNDEgNTIgMTQ2IDYxUTE0OSA2NSAyMTggMzM5VDI4NyA2MjhRMjg3IDYzNSAyMzAgNjM3Wk02MzAgNTU0UTYzMCA1ODYgNjA5IDYwOFQ1MjMgNjM2UTUyMSA2MzYgNTAwIDYzNlQ0NjIgNjM3SDQ0MFEzOTMgNjM3IDM4NiA2MjdRMzg1IDYyNCAzNTIgNDk0VDMxOSAzNjFRMzE5IDM2MCAzODggMzYwUTQ2NiAzNjEgNDkyIDM2N1E1NTYgMzc3IDU5MiA0MjZRNjA4IDQ0OSA2MTkgNDg2VDYzMCA1NTQnLFxuICAgIDB4MUQ0NDY6ICczMDggMjRRMzY3IDI0IDQxNiA3NlQ0NjYgMTk3UTQ2NiAyNjAgNDE0IDI4NFEzMDggMzExIDI3OCAzMjFUMjM2IDM0MVExNzYgMzgzIDE3NiA0NjJRMTc2IDUyMyAyMDggNTczVDI3MyA2NDhRMzAyIDY3MyAzNDMgNjg4VDQwNyA3MDRINDE4SDQyNVE1MjEgNzA0IDU2NCA2NDBRNTY1IDY0MCA1NzcgNjUzVDYwMyA2ODJUNjIzIDcwNFE2MjQgNzA0IDYyNyA3MDRUNjMyIDcwNVE2NDUgNzA1IDY0NSA2OThUNjE3IDU3N1Q1ODUgNDU5VDU2OSA0NTZRNTQ5IDQ1NiA1NDkgNDY1UTU0OSA0NzEgNTUwIDQ3NVE1NTAgNDc4IDU1MSA0OTRUNTUzIDUyMFE1NTMgNTU0IDU0NCA1NzlUNTI2IDYxNlQ1MDEgNjQxUTQ2NSA2NjIgNDE5IDY2MlEzNjIgNjYyIDMxMyA2MTZUMjYzIDUxMFEyNjMgNDgwIDI3OCA0NThUMzE5IDQyN1EzMjMgNDI1IDM4OSA0MDhUNDU2IDM5MFE0OTAgMzc5IDUyMiAzNDJUNTU0IDI0MlE1NTQgMjE2IDU0NiAxODZRNTQxIDE2NCA1MjggMTM3VDQ5MiA3OFQ0MjYgMThUMzMyIC0yMFEzMjAgLTIyIDI5OCAtMjJRMTk5IC0yMiAxNDQgMzNMMTM0IDQ0TDEwNiAxM1E4MyAtMTQgNzggLTE4VDY1IC0yMlE1MiAtMjIgNTIgLTE0UTUyIC0xMSAxMTAgMjIxUTExMiAyMjcgMTMwIDIyN0gxNDNRMTQ5IDIyMSAxNDkgMjE2UTE0OSAyMTQgMTQ4IDIwN1QxNDQgMTg2VDE0MiAxNTNRMTQ0IDExNCAxNjAgODdUMjAzIDQ3VDI1NSAyOVQzMDggMjQnLFxuICAgIDB4MUQ0NDc6ICc0MCA0MzdRMjEgNDM3IDIxIDQ0NVEyMSA0NTAgMzcgNTAxVDcxIDYwMkw4OCA2NTFROTMgNjY5IDEwMSA2NzdINTY5SDY1OVE2OTEgNjc3IDY5NyA2NzZUNzA0IDY2N1E3MDQgNjYxIDY4NyA1NTNUNjY4IDQ0NFE2NjggNDM3IDY0OSA0MzdRNjQwIDQzNyA2MzcgNDM3VDYzMSA0NDJMNjI5IDQ0NVE2MjkgNDUxIDYzNSA0OTBUNjQxIDU1MVE2NDEgNTg2IDYyOCA2MDRUNTczIDYyOVE1NjggNjMwIDUxNSA2MzFRNDY5IDYzMSA0NTcgNjMwVDQzOSA2MjJRNDM4IDYyMSAzNjggMzQzVDI5OCA2MFEyOTggNDggMzg2IDQ2UTQxOCA0NiA0MjcgNDVUNDM2IDM2UTQzNiAzMSA0MzMgMjJRNDI5IDQgNDI0IDFMNDIyIDBRNDE5IDAgNDE1IDBRNDEwIDAgMzYzIDFUMjI4IDJROTkgMiA2NCAwSDQ5UTQzIDYgNDMgOVQ0NSAyN1E0OSA0MCA1NSA0Nkg4M0g5NFExNzQgNDYgMTg5IDU1UTE5MCA1NiAxOTEgNTZRMTk2IDU5IDIwMSA3NlQyNDEgMjMzUTI1OCAzMDEgMjY5IDM0NFEzMzkgNjE5IDMzOSA2MjVRMzM5IDYzMCAzMTAgNjMwSDI3OVEyMTIgNjMwIDE5MSA2MjRRMTQ2IDYxNCAxMjEgNTgzVDY3IDQ2N1E2MCA0NDUgNTcgNDQxVDQzIDQzN0g0MCcsXG4gICAgMHgxRDQ0ODogJzEwNyA2MzdRNzMgNjM3IDcxIDY0MVE3MCA2NDMgNzAgNjQ5UTcwIDY3MyA4MSA2ODJRODMgNjgzIDk4IDY4M1ExMzkgNjgxIDIzNCA2ODFRMjY4IDY4MSAyOTcgNjgxVDM0MiA2ODJUMzYyIDY4MlEzNzggNjgyIDM3OCA2NzJRMzc4IDY3MCAzNzYgNjU4UTM3MSA2NDEgMzY2IDYzOEgzNjRRMzYyIDYzOCAzNTkgNjM4VDM1MiA2MzhUMzQzIDYzN1QzMzQgNjM3UTI5NSA2MzYgMjg0IDYzNFQyNjYgNjIzUTI2NSA2MjEgMjM4IDUxOFQxODQgMzAyVDE1NCAxNjlRMTUyIDE1NSAxNTIgMTQwUTE1MiA4NiAxODMgNTVUMjY5IDI0UTMzNiAyNCA0MDMgNjlUNTAxIDIwNUw1NTIgNDA2UTU5OSA1OTggNTk5IDYwNlE1OTkgNjMzIDUzNSA2MzdRNTExIDYzNyA1MTEgNjQ4UTUxMSA2NTAgNTEzIDY2MFE1MTcgNjc2IDUxOSA2NzlUNTI5IDY4M1E1MzIgNjgzIDU2MSA2ODJUNjQ1IDY4MFE2OTYgNjgwIDcyMyA2ODFUNzUyIDY4MlE3NjcgNjgyIDc2NyA2NzJRNzY3IDY1MCA3NTkgNjQyUTc1NiA2MzcgNzM3IDYzN1E2NjYgNjMzIDY0OCA1OTdRNjQ2IDU5MiA1OTggNDA0UTU1NyAyMzUgNTQ4IDIwNVE1MTUgMTA1IDQzMyA0MlQyNjMgLTIyUTE3MSAtMjIgMTE2IDM0VDYwIDE2N1YxODNRNjAgMjAxIDExNSA0MjFRMTY0IDYyMiAxNjQgNjI4UTE2NCA2MzUgMTA3IDYzNycsXG4gICAgMHgxRDQ0OTogJzUyIDY0OFE1MiA2NzAgNjUgNjgzSDc2UTExOCA2ODAgMTgxIDY4MFEyOTkgNjgwIDMyMCA2ODNIMzMwUTMzNiA2NzcgMzM2IDY3NFQzMzQgNjU2UTMyOSA2NDEgMzI1IDYzN0gzMDRRMjgyIDYzNSAyNzQgNjM1UTI0NSA2MzAgMjQyIDYyMFEyNDIgNjE4IDI3MSAzNjlUMzAxIDExOEwzNzQgMjM1UTQ0NyAzNTIgNTIwIDQ3MVQ1OTUgNTk0UTU5OSA2MDEgNTk5IDYwOVE1OTkgNjMzIDU1NSA2MzdRNTM3IDYzNyA1MzcgNjQ4UTUzNyA2NDkgNTM5IDY2MVE1NDIgNjc1IDU0NSA2NzlUNTU4IDY4M1E1NjAgNjgzIDU3MCA2ODNUNjA0IDY4MlQ2NjggNjgxUTczNyA2ODEgNzU1IDY4M0g3NjJRNzY5IDY3NiA3NjkgNjcyUTc2OSA2NTUgNzYwIDY0MFE3NTcgNjM3IDc0MyA2MzdRNzMwIDYzNiA3MTkgNjM1VDY5OCA2MzBUNjgyIDYyM1Q2NzAgNjE1VDY2MCA2MDhUNjUyIDU5OVQ2NDUgNTkyTDQ1MiAyODJRMjcyIC05IDI2NiAtMTZRMjYzIC0xOCAyNTkgLTIxTDI0MSAtMjJIMjM0UTIxNiAtMjIgMjE2IC0xNVEyMTMgLTkgMTc3IDMwNVExMzkgNjIzIDEzOCA2MjZRMTMzIDYzNyA3NiA2MzdINTlRNTIgNjQyIDUyIDY0OCcsXG4gICAgMHgxRDQ0QTogJzQzNiA2ODNRNDUwIDY4MyA0ODYgNjgyVDU1MyA2ODBRNjA0IDY4MCA2MzggNjgxVDY3NyA2ODJRNjk1IDY4MiA2OTUgNjc0UTY5NSA2NzAgNjkyIDY1OVE2ODcgNjQxIDY4MyA2MzlUNjYxIDYzN1E2MzYgNjM2IDYyMSA2MzJUNjAwIDYyNFQ1OTcgNjE1UTU5NyA2MDMgNjEzIDM3N1Q2MjkgMTM4TDYzMSAxNDFRNjMzIDE0NCA2MzcgMTUxVDY0OSAxNzBUNjY2IDIwMFQ2OTAgMjQxVDcyMCAyOTVUNzU5IDM2MlE4NjMgNTQ2IDg3NyA1NzJUODkyIDYwNFE4OTIgNjE5IDg3MyA2MjhUODMxIDYzN1E4MTcgNjM3IDgxNyA2NDdRODE3IDY1MCA4MTkgNjYwUTgyMyA2NzYgODI1IDY3OVQ4MzkgNjgyUTg0MiA2ODIgODU2IDY4MlQ4OTUgNjgyVDk0OSA2ODFRMTAxNSA2ODEgMTAzNCA2ODNRMTA0OCA2ODMgMTA0OCA2NzJRMTA0OCA2NjYgMTA0NSA2NTVUMTAzOCA2NDBUMTAyOCA2MzdRMTAwNiA2MzcgOTg4IDYzMVQ5NTggNjE3VDkzOSA2MDBUOTI3IDU4NEw5MjMgNTc4TDc1NCAyODJRNTg2IC0xNCA1ODUgLTE1UTU3OSAtMjIgNTYxIC0yMlE1NDYgLTIyIDU0MiAtMTdRNTM5IC0xNCA1MjMgMjI5VDUwNiA0ODBMNDk0IDQ2MlE0NzIgNDI1IDM2NiAyMzlRMjIyIC0xMyAyMjAgLTE1VDIxNSAtMTlRMjEwIC0yMiAxOTcgLTIyUTE3OCAtMjIgMTc2IC0xNVExNzYgLTEyIDE1NCAzMDRUMTMxIDYyMlExMjkgNjMxIDEyMSA2MzNUODIgNjM3SDU4UTUxIDY0NCA1MSA2NDhRNTIgNjcxIDY0IDY4M0g3NlExMTggNjgwIDE3NiA2ODBRMzAxIDY4MCAzMTMgNjgzSDMyM1EzMjkgNjc3IDMyOSA2NzRUMzI3IDY1NlEzMjIgNjQxIDMxOCA2MzdIMjk3UTIzNiA2MzQgMjMyIDYyMFEyNjIgMTYwIDI2NiAxMzZMNTAxIDU1MEw0OTkgNTg3UTQ5NiA2MjkgNDg5IDYzMlE0ODMgNjM2IDQ0NyA2MzdRNDI4IDYzNyA0MjIgNjM5VDQxNiA2NDhRNDE2IDY1MCA0MTggNjYwUTQxOSA2NjQgNDIwIDY2OVQ0MjEgNjc2VDQyNCA2ODBUNDI4IDY4MlQ0MzYgNjgzJyxcbiAgICAweDFENDRCOiAnNDIgMEg0MFEyNiAwIDI2IDExUTI2IDE1IDI5IDI3UTMzIDQxIDM2IDQzVDU1IDQ2UTE0MSA0OSAxOTAgOThRMjAwIDEwOCAzMDYgMjI0VDQxMSAzNDJRMzAyIDYyMCAyOTcgNjI1UTI4OCA2MzYgMjM0IDYzN0gyMDZRMjAwIDY0MyAyMDAgNjQ1VDIwMiA2NjRRMjA2IDY3NyAyMTIgNjgzSDIyNlEyNjAgNjgxIDM0NyA2ODFRMzgwIDY4MSA0MDggNjgxVDQ1MyA2ODJUNDczIDY4MlE0OTAgNjgyIDQ5MCA2NzFRNDkwIDY3MCA0ODggNjU4UTQ4NCA2NDMgNDgxIDY0MFQ0NjUgNjM3UTQzNCA2MzQgNDExIDYyMEw0ODggNDI2TDU0MSA0ODVRNjQ2IDU5OCA2NDYgNjEwUTY0NiA2MjggNjIyIDYzNVE2MTcgNjM1IDYwOSA2MzdRNTk0IDYzNyA1OTQgNjQ4UTU5NCA2NTAgNTk2IDY2NFE2MDAgNjc3IDYwNiA2ODNINjE4UTYxOSA2ODMgNjQzIDY4M1Q2OTcgNjgxVDczOCA2ODBRODI4IDY4MCA4MzcgNjgzSDg0NVE4NTIgNjc2IDg1MiA2NzJRODUwIDY0NyA4NDAgNjM3SDgyNFE3OTAgNjM2IDc2MyA2MjhUNzIyIDYxMVQ2OTggNTkzTDY4NyA1ODRRNjg3IDU4NSA1OTIgNDgwTDUwNSAzODRRNTA1IDM4MyA1MzYgMzA0VDYwMSAxNDJUNjM4IDU2UTY0OCA0NyA2OTkgNDZRNzM0IDQ2IDczNCAzN1E3MzQgMzUgNzMyIDIzUTcyOCA3IDcyNSA0VDcxMSAxUTcwOCAxIDY3OCAxVDU4OSAyUTUyOCAyIDQ5NiAyVDQ2MSAxUTQ0NCAxIDQ0NCAxMFE0NDQgMTEgNDQ2IDI1UTQ0OCAzNSA0NTAgMzlUNDU1IDQ0VDQ2NCA0NlQ0ODAgNDdUNTA2IDU0UTUyMyA2MiA1MjMgNjRRNTIyIDY0IDQ3NiAxODFMNDI5IDI5OVEyNDEgOTUgMjM2IDg0UTIzMiA3NiAyMzIgNzJRMjMyIDUzIDI2MSA0N1EyNjIgNDcgMjY3IDQ3VDI3MyA0NlEyNzYgNDYgMjc3IDQ2VDI4MCA0NVQyODMgNDJUMjg0IDM1UTI4NCAyNiAyODIgMTlRMjc5IDYgMjc2IDRUMjYxIDFRMjU4IDEgMjQzIDFUMjAxIDJUMTQyIDJRNjQgMiA0MiAwJyxcbiAgICAweDFENDRDOiAnNjYgNjM3UTU0IDYzNyA0OSA2MzdUMzkgNjM4VDMyIDY0MVQzMCA2NDdUMzMgNjY0VDQyIDY4MlE0NCA2ODMgNTYgNjgzUTEwNCA2ODAgMTY1IDY4MFEyODggNjgwIDMwNiA2ODNIMzE2UTMyMiA2NzcgMzIyIDY3NFQzMjAgNjU2UTMxNiA2NDMgMzEwIDYzN0gyOThRMjQyIDYzNyAyNDIgNjI0UTI0MiA2MTkgMjkyIDQ3N1QzNDMgMzMzTDM0NiAzMzZRMzUwIDM0MCAzNTggMzQ5VDM3OSAzNzNUNDExIDQxMFQ0NTQgNDYxUTU0NiA1NjggNTYxIDU4N1Q1NzcgNjE4UTU3NyA2MzQgNTQ1IDYzN1E1MjggNjM3IDUyOCA2NDdRNTI4IDY0OSA1MzAgNjYxUTUzMyA2NzYgNTM1IDY3OVQ1NDkgNjgzUTU1MSA2ODMgNTc4IDY4MlQ2NTcgNjgwUTY4NCA2ODAgNzEzIDY4MVQ3NDYgNjgyUTc2MyA2ODIgNzYzIDY3M1E3NjMgNjY5IDc2MCA2NTdUNzU1IDY0M1E3NTMgNjM3IDczNCA2MzdRNjYyIDYzMiA2MTcgNTg3UTYwOCA1NzggNDc3IDQyNEwzNDggMjczTDMyMiAxNjlRMjk1IDYyIDI5NSA1N1EyOTUgNDYgMzYzIDQ2UTM3OSA0NiAzODQgNDVUMzkwIDM1UTM5MCAzMyAzODggMjNRMzg0IDYgMzgyIDRUMzY2IDFRMzYxIDEgMzI0IDFUMjMyIDJRMTcwIDIgMTM4IDJUMTAyIDFRODQgMSA4NCA5UTg0IDE0IDg3IDI0UTg4IDI3IDg5IDMwVDkwIDM1VDkxIDM5VDkzIDQyVDk2IDQ0VDEwMSA0NVQxMDcgNDVUMTE2IDQ2VDEyOSA0NlExNjggNDcgMTgwIDUwVDE5OCA2M1EyMDEgNjggMjI3IDE3MUwyNTIgMjc0TDEyOSA2MjNRMTI4IDYyNCAxMjcgNjI1VDEyNSA2MjdUMTIyIDYyOVQxMTggNjMxVDExMyA2MzNUMTA1IDYzNFQ5NiA2MzVUODMgNjM2VDY2IDYzNycsXG4gICAgMHgxRDQ0RDogJzU4IDhRNTggMjMgNjQgMzVRNjQgMzYgMzI5IDMzNFQ1OTYgNjM1TDU4NiA2MzdRNTc1IDYzNyA1MTIgNjM3SDUwMEg0NzZRNDQyIDYzNyA0MjAgNjM1VDM2NSA2MjRUMzExIDU5OFQyNjYgNTQ4VDIyOCA0NjlRMjI3IDQ2NiAyMjYgNDYzVDIyNCA0NThUMjIzIDQ1M1QyMjIgNDUwTDIyMSA0NDhRMjE4IDQ0MyAyMDIgNDQzUTE4NSA0NDMgMTgyIDQ1M0wyMTQgNTYxUTIyOCA2MDYgMjQxIDY1MVEyNDkgNjc5IDI1MyA2ODFRMjU2IDY4MyA0ODcgNjgzSDcxOFE3MjMgNjc4IDcyMyA2NzVRNzIzIDY3MyA3MTcgNjQ5UTE4OSA1NCAxODggNTJMMTg1IDQ5SDI3NFEzNjkgNTAgMzc3IDUxUTQ1MiA2MCA1MDAgMTAwVDU3OSAyNDdRNTg3IDI3MiA1OTAgMjc3VDYwMyAyODJINjA3UTYyOCAyODIgNjI4IDI3MVE1NDcgNSA1NDEgMlE1MzggMCAzMDAgMEgxMjRRNTggMCA1OCA4JyxcbiAgICAweDFENDRFOiAnMzMgMTU3UTMzIDI1OCAxMDkgMzQ5VDI4MCA0NDFRMzMxIDQ0MSAzNzAgMzkyUTM4NiA0MjIgNDE2IDQyMlE0MjkgNDIyIDQzOSA0MTRUNDQ5IDM5NFE0NDkgMzgxIDQxMiAyMzRUMzc0IDY4UTM3NCA0MyAzODEgMzVUNDAyIDI2UTQxMSAyNyA0MjIgMzVRNDQzIDU1IDQ2MyAxMzFRNDY5IDE1MSA0NzMgMTUyUTQ3NSAxNTMgNDgzIDE1M0g0ODdRNTA2IDE1MyA1MDYgMTQ0UTUwNiAxMzggNTAxIDExN1Q0ODEgNjNUNDQ5IDEzUTQzNiAwIDQxNyAtOFE0MDkgLTEwIDM5MyAtMTBRMzU5IC0xMCAzMzYgNVQzMDYgMzZMMzAwIDUxUTI5OSA1MiAyOTYgNTBRMjk0IDQ4IDI5MiA0NlEyMzMgLTEwIDE3MiAtMTBRMTE3IC0xMCA3NSAzMFQzMyAxNTdaTTM1MSAzMjhRMzUxIDMzNCAzNDYgMzUwVDMyMyAzODVUMjc3IDQwNVEyNDIgNDA1IDIxMCAzNzRUMTYwIDI5M1ExMzEgMjE0IDExOSAxMjlRMTE5IDEyNiAxMTkgMTE4VDExOCAxMDZRMTE4IDYxIDEzNiA0NFQxNzkgMjZRMjE3IDI2IDI1NCA1OVQyOTggMTEwUTMwMCAxMTQgMzI1IDIxN1QzNTEgMzI4JyxcbiAgICAweDFENDRGOiAnNzMgNjQ3UTczIDY1NyA3NyA2NzBUODkgNjgzUTkwIDY4MyAxNjEgNjg4VDIzNCA2OTRRMjQ2IDY5NCAyNDYgNjg1VDIxMiA1NDJRMjA0IDUwOCAxOTUgNDcyVDE4MCA0MThMMTc2IDM5OVExNzYgMzk2IDE4MiA0MDJRMjMxIDQ0MiAyODMgNDQyUTM0NSA0NDIgMzgzIDM5NlQ0MjIgMjgwUTQyMiAxNjkgMzQzIDc5VDE3MyAtMTFRMTIzIC0xMSA4MiAyN1Q0MCAxNTBWMTU5UTQwIDE4MCA0OCAyMTdUOTcgNDE0UTE0NyA2MTEgMTQ3IDYyM1QxMDkgNjM3UTEwNCA2MzcgMTAxIDYzN0g5NlE4NiA2MzcgODMgNjM3VDc2IDY0MFQ3MyA2NDdaTTMzNiAzMjVWMzMxUTMzNiA0MDUgMjc1IDQwNVEyNTggNDA1IDI0MCAzOTdUMjA3IDM3NlQxODEgMzUyVDE2MyAzMzBMMTU3IDMyMkwxMzYgMjM2UTExNCAxNTAgMTE0IDExNFExMTQgNjYgMTM4IDQyUTE1NCAyNiAxNzggMjZRMjExIDI2IDI0NSA1OFEyNzAgODEgMjg1IDExNFQzMTggMjE5UTMzNiAyOTEgMzM2IDMyNScsXG4gICAgMHgxRDQ1MDogJzM0IDE1OVEzNCAyNjggMTIwIDM1NVQzMDYgNDQyUTM2MiA0NDIgMzk0IDQxOFQ0MjcgMzU1UTQyNyAzMjYgNDA4IDMwNlQzNjAgMjg1UTM0MSAyODUgMzMwIDI5NVQzMTkgMzI1VDMzMCAzNTlUMzUyIDM4MFQzNjYgMzg2SDM2N1EzNjcgMzg4IDM2MSAzOTJUMzQwIDQwMFQzMDYgNDA0UTI3NiA0MDQgMjQ5IDM5MFEyMjggMzgxIDIwNiAzNTlRMTYyIDMxNSAxNDIgMjM1VDEyMSAxMTlRMTIxIDczIDE0NyA1MFExNjkgMjYgMjA1IDI2SDIwOVEzMjEgMjYgMzk0IDExMVE0MDMgMTIxIDQwNiAxMjFRNDEwIDEyMSA0MTkgMTEyVDQyOSA5OFQ0MjAgODNUMzkxIDU1VDM0NiAyNVQyODIgMFQyMDIgLTExUTEyNyAtMTEgODEgMzdUMzQgMTU5JyxcbiAgICAweDFENDUxOiAnMzY2IDY4M1EzNjcgNjgzIDQzOCA2ODhUNTExIDY5NFE1MjMgNjk0IDUyMyA2ODZRNTIzIDY3OSA0NTAgMzg0VDM3NSA4M1QzNzQgNjhRMzc0IDI2IDQwMiAyNlE0MTEgMjcgNDIyIDM1UTQ0MyA1NSA0NjMgMTMxUTQ2OSAxNTEgNDczIDE1MlE0NzUgMTUzIDQ4MyAxNTNINDg3SDQ5MVE1MDYgMTUzIDUwNiAxNDVRNTA2IDE0MCA1MDMgMTI5UTQ5MCA3OSA0NzMgNDhUNDQ1IDhUNDE3IC04UTQwOSAtMTAgMzkzIC0xMFEzNTkgLTEwIDMzNiA1VDMwNiAzNkwzMDAgNTFRMjk5IDUyIDI5NiA1MFEyOTQgNDggMjkyIDQ2UTIzMyAtMTAgMTcyIC0xMFExMTcgLTEwIDc1IDMwVDMzIDE1N1EzMyAyMDUgNTMgMjU1VDEwMSAzNDFRMTQ4IDM5OCAxOTUgNDIwVDI4MCA0NDJRMzM2IDQ0MiAzNjQgNDAwUTM2OSAzOTQgMzY5IDM5NlEzNzAgNDAwIDM5NiA1MDVUNDI0IDYxNlE0MjQgNjI5IDQxNyA2MzJUMzc4IDYzN0gzNTdRMzUxIDY0MyAzNTEgNjQ1VDM1MyA2NjRRMzU4IDY4MyAzNjYgNjgzWk0zNTIgMzI2UTMyOSA0MDUgMjc3IDQwNVEyNDIgNDA1IDIxMCAzNzRUMTYwIDI5M1ExMzEgMjE0IDExOSAxMjlRMTE5IDEyNiAxMTkgMTE4VDExOCAxMDZRMTE4IDYxIDEzNiA0NFQxNzkgMjZRMjMzIDI2IDI5MCA5OEwyOTggMTA5TDM1MiAzMjYnLFxuICAgIDB4MUQ0NTI6ICczOSAxNjhRMzkgMjI1IDU4IDI3MlQxMDcgMzUwVDE3NCA0MDJUMjQ0IDQzM1QzMDcgNDQySDMxMFEzNTUgNDQyIDM4OCA0MjBUNDIxIDM1NVE0MjEgMjY1IDMxMCAyMzdRMjYxIDIyNCAxNzYgMjIzUTEzOSAyMjMgMTM4IDIyMVExMzggMjE5IDEzMiAxODZUMTI1IDEyOFExMjUgODEgMTQ2IDU0VDIwOSAyNlQzMDIgNDVUMzk0IDExMVE0MDMgMTIxIDQwNiAxMjFRNDEwIDEyMSA0MTkgMTEyVDQyOSA5OFQ0MjAgODJUMzkwIDU1VDM0NCAyNFQyODEgLTFUMjA1IC0xMVExMjYgLTExIDgzIDQyVDM5IDE2OFpNMzczIDM1M1EzNjcgNDA1IDMwNSA0MDVRMjcyIDQwNSAyNDQgMzkxVDE5OSAzNTdUMTcwIDMxNlQxNTQgMjgwVDE0OSAyNjFRMTQ5IDI2MCAxNjkgMjYwUTI4MiAyNjAgMzI3IDI4NFQzNzMgMzUzJyxcbiAgICAweDFENDUzOiAnMTE4IC0xNjJRMTIwIC0xNjIgMTI0IC0xNjRUMTM1IC0xNjdUMTQ3IC0xNjhRMTYwIC0xNjggMTcxIC0xNTVUMTg3IC0xMjZRMTk3IC05OSAyMjEgMjdUMjY3IDI2N1QyODkgMzgyVjM4NUgyNDJRMTk1IDM4NSAxOTIgMzg3UTE4OCAzOTAgMTg4IDM5N0wxOTUgNDI1UTE5NyA0MzAgMjAzIDQzMFQyNTAgNDMxUTI5OCA0MzEgMjk4IDQzMlEyOTggNDM0IDMwNyA0ODJUMzE5IDU0MFEzNTYgNzA1IDQ2NSA3MDVRNTAyIDcwMyA1MjYgNjgzVDU1MCA2MzBRNTUwIDU5NCA1MjkgNTc4VDQ4NyA1NjFRNDQzIDU2MSA0NDMgNjAzUTQ0MyA2MjIgNDU0IDYzNlQ0NzggNjU3TDQ4NyA2NjJRNDcxIDY2OCA0NTcgNjY4UTQ0NSA2NjggNDM0IDY1OFQ0MTkgNjMwUTQxMiA2MDEgNDAzIDU1MlQzODcgNDY5VDM4MCA0MzNRMzgwIDQzMSA0MzUgNDMxUTQ4MCA0MzEgNDg3IDQzMFQ0OTggNDI0UTQ5OSA0MjAgNDk2IDQwN1Q0OTEgMzkxUTQ4OSAzODYgNDgyIDM4NlQ0MjggMzg1SDM3MkwzNDkgMjYzUTMwMSAxNSAyODIgLTQ3UTI1NSAtMTMyIDIxMiAtMTczUTE3NSAtMjA1IDEzOSAtMjA1UTEwNyAtMjA1IDgxIC0xODZUNTUgLTEzMlE1NSAtOTUgNzYgLTc4VDExOCAtNjFRMTYyIC02MSAxNjIgLTEwM1ExNjIgLTEyMiAxNTEgLTEzNlQxMjcgLTE1N0wxMTggLTE2MicsXG4gICAgMHgxRDQ1NDogJzMxMSA0M1EyOTYgMzAgMjY3IDE1VDIwNiAwUTE0MyAwIDEwNSA0NVQ2NiAxNjBRNjYgMjY1IDE0MyAzNTNUMzE0IDQ0MlEzNjEgNDQyIDQwMSAzOTRMNDA0IDM5OFE0MDYgNDAxIDQwOSA0MDRUNDE4IDQxMlQ0MzEgNDE5VDQ0NyA0MjJRNDYxIDQyMiA0NzAgNDEzVDQ4MCAzOTRRNDgwIDM3OSA0MjMgMTUyVDM2MyAtODBRMzQ1IC0xMzQgMjg2IC0xNjlUMTUxIC0yMDVRMTAgLTIwNSAxMCAtMTM3UTEwIC0xMTEgMjggLTkxVDc0IC03MVE4OSAtNzEgMTAyIC04MFQxMTYgLTExMVExMTYgLTEyMSAxMTQgLTEzMFQxMDcgLTE0NFQ5OSAtMTU0VDkyIC0xNjJMOTAgLTE2NEg5MVExMDEgLTE2NyAxNTEgLTE2N1ExODkgLTE2NyAyMTEgLTE1NVEyMzQgLTE0NCAyNTQgLTEyMlQyODIgLTc1UTI4OCAtNTYgMjk4IC0xM1EzMTEgMzUgMzExIDQzWk0zODQgMzI4TDM4MCAzMzlRMzc3IDM1MCAzNzUgMzU0VDM2OSAzNjhUMzU5IDM4MlQzNDYgMzkzVDMyOCA0MDJUMzA2IDQwNVEyNjIgNDA1IDIyMSAzNTJRMTkxIDMxMyAxNzEgMjMzVDE1MSAxMTdRMTUxIDM4IDIxMyAzOFEyNjkgMzggMzIzIDEwOEwzMzEgMTE4TDM4NCAzMjgnLFxuICAgIDB4MUQ0NTY6ICcxODQgNjAwUTE4NCA2MjQgMjAzIDY0MlQyNDcgNjYxUTI2NSA2NjEgMjc3IDY0OVQyOTAgNjE5UTI5MCA1OTYgMjcwIDU3N1QyMjYgNTU3UTIxMSA1NTcgMTk4IDU2N1QxODQgNjAwWk0yMSAyODdRMjEgMjk1IDMwIDMxOFQ1NCAzNjlUOTggNDIwVDE1OCA0NDJRMTk3IDQ0MiAyMjMgNDE5VDI1MCAzNTdRMjUwIDM0MCAyMzYgMzAxVDE5NiAxOTZUMTU0IDgzUTE0OSA2MSAxNDkgNTFRMTQ5IDI2IDE2NiAyNlExNzUgMjYgMTg1IDI5VDIwOCA0M1QyMzUgNzhUMjYwIDEzN1EyNjMgMTQ5IDI2NSAxNTFUMjgyIDE1M1EzMDIgMTUzIDMwMiAxNDNRMzAyIDEzNSAyOTMgMTEyVDI2OCA2MVQyMjMgMTFUMTYxIC0xMVExMjkgLTExIDEwMiAxMFQ3NCA3NFE3NCA5MSA3OSAxMDZUMTIyIDIyMFExNjAgMzIxIDE2NiAzNDFUMTczIDM4MFExNzMgNDA0IDE1NiA0MDRIMTU0UTEyNCA0MDQgOTkgMzcxVDYxIDI4N1E2MCAyODYgNTkgMjg0VDU4IDI4MVQ1NiAyNzlUNTMgMjc4VDQ5IDI3OFQ0MSAyNzhIMjdRMjEgMjg0IDIxIDI4NycsXG4gICAgMHgxRDQ1NzogJzI5NyA1OTZRMjk3IDYyNyAzMTggNjQ0VDM2MSA2NjFRMzc4IDY2MSAzODkgNjUxVDQwMyA2MjNRNDAzIDU5NSAzODQgNTc2VDM0MCA1NTdRMzIyIDU1NyAzMTAgNTY3VDI5NyA1OTZaTTI4OCAzNzZRMjg4IDQwNSAyNjIgNDA1UTI0MCA0MDUgMjIwIDM5M1QxODUgMzYyVDE2MSAzMjVUMTQ0IDI5M0wxMzcgMjc5UTEzNSAyNzggMTIxIDI3OEgxMDdRMTAxIDI4NCAxMDEgMjg2VDEwNSAyOTlRMTI2IDM0OCAxNjQgMzkxVDI1MiA0NDFRMjUzIDQ0MSAyNjAgNDQxVDI3MiA0NDJRMjk2IDQ0MSAzMTYgNDMyUTM0MSA0MTggMzU0IDQwMVQzNjcgMzQ4VjMzMkwzMTggMTMzUTI2NyAtNjcgMjY0IC03NVEyNDYgLTEyNSAxOTQgLTE2NFQ3NSAtMjA0UTI1IC0yMDQgNyAtMTgzVC0xMiAtMTM3US0xMiAtMTEwIDcgLTkxVDUzIC03MVE3MCAtNzEgODIgLTgxVDk1IC0xMTJROTUgLTE0OCA2MyAtMTY3UTY5IC0xNjggNzcgLTE2OFExMTEgLTE2OCAxMzkgLTE0MFQxODIgLTc0TDE5MyAtMzJRMjA0IDExIDIxOSA3MlQyNTEgMTk3VDI3OCAzMDhUMjg5IDM2NVEyODkgMzcyIDI4OCAzNzYnLFxuICAgIDB4MUQ0NTg6ICcxMjEgNjQ3UTEyMSA2NTcgMTI1IDY3MFQxMzcgNjgzUTEzOCA2ODMgMjA5IDY4OFQyODIgNjk0UTI5NCA2OTQgMjk0IDY4NlEyOTQgNjc5IDI0NCA0NzdRMTk0IDI3OSAxOTQgMjcyUTIxMyAyODIgMjIzIDI5MVEyNDcgMzA5IDI5MiAzNTRUMzYyIDQxNVE0MDIgNDQyIDQzOCA0NDJRNDY4IDQ0MiA0ODUgNDIzVDUwMyAzNjlRNTAzIDM0NCA0OTYgMzI3VDQ3NyAzMDJUNDU2IDI5MVQ0MzggMjg4UTQxOCAyODggNDA2IDI5OVQzOTQgMzI4UTM5NCAzNTMgNDEwIDM2OVQ0NDIgMzkwTDQ1OCAzOTNRNDQ2IDQwNSA0MzQgNDA1SDQzMFEzOTggNDAyIDM2NyAzODBUMjk0IDMxNlQyMjggMjU1UTIzMCAyNTQgMjQzIDI1MlQyNjcgMjQ2VDI5MyAyMzhUMzIwIDIyNFQzNDIgMjA2VDM1OSAxODBUMzY1IDE0N1EzNjUgMTMwIDM2MCAxMDZUMzU0IDY2UTM1NCAyNiAzODEgMjZRNDI5IDI2IDQ1OSAxNDVRNDYxIDE1MyA0NzkgMTUzSDQ4M1E0OTkgMTUzIDQ5OSAxNDRRNDk5IDEzOSA0OTYgMTMwUTQ1NSAtMTEgMzc4IC0xMVEzMzMgLTExIDMwNSAxNVQyNzcgOTBRMjc3IDEwOCAyODAgMTIxVDI4MyAxNDVRMjgzIDE2NyAyNjkgMTgzVDIzNCAyMDZUMjAwIDIxN1QxODIgMjIwSDE4MFExNjggMTc4IDE1OSAxMzlUMTQ1IDgxVDEzNiA0NFQxMjkgMjBUMTIyIDdUMTExIC0yUTk4IC0xMSA4MyAtMTFRNjYgLTExIDU3IC0xVDQ4IDE2UTQ4IDI2IDg1IDE3NlQxNTggNDcxTDE5NSA2MTZRMTk2IDYyOSAxODggNjMyVDE0OSA2MzdIMTQ0UTEzNCA2MzcgMTMxIDYzN1QxMjQgNjQwVDEyMSA2NDcnLFxuICAgIDB4MUQ0NTk6ICcxMTcgNTlRMTE3IDI2IDE0MiAyNlExNzkgMjYgMjA1IDEzMVEyMTEgMTUxIDIxNSAxNTJRMjE3IDE1MyAyMjUgMTUzSDIyOVEyMzggMTUzIDI0MSAxNTNUMjQ2IDE1MVQyNDggMTQ0UTI0NyAxMzggMjQ1IDEyOFQyMzQgOTBUMjE0IDQzVDE4MyA2VDEzNyAtMTFRMTAxIC0xMSA3MCAxMVQzOCA4NVEzOCA5NyAzOSAxMDJMMTA0IDM2MFExNjcgNjE1IDE2NyA2MjNRMTY3IDYyNiAxNjYgNjI4VDE2MiA2MzJUMTU3IDYzNFQxNDkgNjM1VDE0MSA2MzZUMTMyIDYzN1QxMjIgNjM3UTExMiA2MzcgMTA5IDYzN1QxMDEgNjM4VDk1IDY0MVQ5NCA2NDdROTQgNjQ5IDk2IDY2MVExMDEgNjgwIDEwNyA2ODJUMTc5IDY4OFExOTQgNjg5IDIxMyA2OTBUMjQzIDY5M1QyNTQgNjk0UTI2NiA2OTQgMjY2IDY4NlEyNjYgNjc1IDE5MyAzODZUMTE4IDgzUTExOCA4MSAxMTggNzVUMTE3IDY1VjU5JyxcbiAgICAweDFENDVBOiAnMjEgMjg3UTIyIDI5MyAyNCAzMDNUMzYgMzQxVDU2IDM4OFQ4OCA0MjVUMTMyIDQ0MlQxNzUgNDM1VDIwNSA0MTdUMjIxIDM5NVQyMjkgMzc2TDIzMSAzNjlRMjMxIDM2NyAyMzIgMzY3TDI0MyAzNzhRMzAzIDQ0MiAzODQgNDQyUTQwMSA0NDIgNDE1IDQ0MFQ0NDEgNDMzVDQ2MCA0MjNUNDc1IDQxMVQ0ODUgMzk4VDQ5MyAzODVUNDk3IDM3M1Q1MDAgMzY0VDUwMiAzNTdMNTEwIDM2N1E1NzMgNDQyIDY1OSA0NDJRNzEzIDQ0MiA3NDYgNDE1VDc4MCAzMzZRNzgwIDI4NSA3NDIgMTc4VDcwNCA1MFE3MDUgMzYgNzA5IDMxVDcyNCAyNlE3NTIgMjYgNzc2IDU2VDgxNSAxMzhRODE4IDE0OSA4MjEgMTUxVDgzNyAxNTNRODU3IDE1MyA4NTcgMTQ1UTg1NyAxNDQgODUzIDEzMFE4NDUgMTAxIDgzMSA3M1Q3ODUgMTdUNzE2IC0xMFE2NjkgLTEwIDY0OCAxN1Q2MjcgNzNRNjI3IDkyIDY2MyAxOTNUNzAwIDM0NVE3MDAgNDA0IDY1NiA0MDRINjUxUTU2NSA0MDQgNTA2IDMwM0w0OTkgMjkxTDQ2NiAxNTdRNDMzIDI2IDQyOCAxNlE0MTUgLTExIDM4NSAtMTFRMzcyIC0xMSAzNjQgLTRUMzUzIDhUMzUwIDE4UTM1MCAyOSAzODQgMTYxTDQyMCAzMDdRNDIzIDMyMiA0MjMgMzQ1UTQyMyA0MDQgMzc5IDQwNEgzNzRRMjg4IDQwNCAyMjkgMzAzTDIyMiAyOTFMMTg5IDE1N1ExNTYgMjYgMTUxIDE2UTEzOCAtMTEgMTA4IC0xMVE5NSAtMTEgODcgLTVUNzYgN1Q3NCAxN1E3NCAzMCAxMTIgMTgxUTE1MSAzMzUgMTUxIDM0MlExNTQgMzU3IDE1NCAzNjlRMTU0IDQwNSAxMjkgNDA1UTEwNyA0MDUgOTIgMzc3VDY5IDMxNlQ1NyAyODBRNTUgMjc4IDQxIDI3OEgyN1EyMSAyODQgMjEgMjg3JyxcbiAgICAweDFENDVCOiAnMjEgMjg3UTIyIDI5MyAyNCAzMDNUMzYgMzQxVDU2IDM4OFQ4OSA0MjVUMTM1IDQ0MlExNzEgNDQyIDE5NSA0MjRUMjI1IDM5MFQyMzEgMzY5UTIzMSAzNjcgMjMyIDM2N0wyNDMgMzc4UTMwNCA0NDIgMzgyIDQ0MlE0MzYgNDQyIDQ2OSA0MTVUNTAzIDMzNlQ0NjUgMTc5VDQyNyA1MlE0MjcgMjYgNDQ0IDI2UTQ1MCAyNiA0NTMgMjdRNDgyIDMyIDUwNSA2NVQ1NDAgMTQ1UTU0MiAxNTMgNTYwIDE1M1E1ODAgMTUzIDU4MCAxNDVRNTgwIDE0NCA1NzYgMTMwUTU2OCAxMDEgNTU0IDczVDUwOCAxN1Q0MzkgLTEwUTM5MiAtMTAgMzcxIDE3VDM1MCA3M1EzNTAgOTIgMzg2IDE5M1Q0MjMgMzQ1UTQyMyA0MDQgMzc5IDQwNEgzNzRRMjg4IDQwNCAyMjkgMzAzTDIyMiAyOTFMMTg5IDE1N1ExNTYgMjYgMTUxIDE2UTEzOCAtMTEgMTA4IC0xMVE5NSAtMTEgODcgLTVUNzYgN1Q3NCAxN1E3NCAzMCAxMTIgMTgwVDE1MiAzNDNRMTUzIDM0OCAxNTMgMzY2UTE1MyA0MDUgMTI5IDQwNVE5MSA0MDUgNjYgMzA1UTYwIDI4NSA2MCAyODRRNTggMjc4IDQxIDI3OEgyN1EyMSAyODQgMjEgMjg3JyxcbiAgICAweDFENDVDOiAnMjAxIC0xMVExMjYgLTExIDgwIDM4VDM0IDE1NlEzNCAyMjEgNjQgMjc5VDE0NiAzODBRMjIyIDQ0MSAzMDEgNDQxUTMzMyA0NDEgMzQxIDQ0MFEzNTQgNDM3IDM2NyA0MzNUNDAyIDQxN1Q0MzggMzg3VDQ2NCAzMzhUNDc2IDI2OFE0NzYgMTYxIDM5MCA3NVQyMDEgLTExWk0xMjEgMTIwUTEyMSA3MCAxNDcgNDhUMjA2IDI2UTI1MCAyNiAyODkgNThUMzUxIDE0MlEzNjAgMTYzIDM3NCAyMTZUMzg4IDMwOFEzODggMzUyIDM3MCAzNzVRMzQ2IDQwNSAzMDYgNDA1UTI0MyA0MDUgMTk1IDM0N1ExNTggMzAzIDE0MCAyMzBUMTIxIDEyMCcsXG4gICAgMHgxRDQ1RDogJzIzIDI4N1EyNCAyOTAgMjUgMjk1VDMwIDMxN1Q0MCAzNDhUNTUgMzgxVDc1IDQxMVQxMDEgNDMzVDEzNCA0NDJRMjA5IDQ0MiAyMzAgMzc4TDI0MCAzODdRMzAyIDQ0MiAzNTggNDQyUTQyMyA0NDIgNDYwIDM5NVQ0OTcgMjgxUTQ5NyAxNzMgNDIxIDgyVDI0OSAtMTBRMjI3IC0xMCAyMTAgLTRRMTk5IDEgMTg3IDExVDE2OCAyOEwxNjEgMzZRMTYwIDM1IDEzOSAtNTFUMTE4IC0xMzhRMTE4IC0xNDQgMTI2IC0xNDVUMTYzIC0xNDhIMTg4UTE5NCAtMTU1IDE5NCAtMTU3VDE5MSAtMTc1UTE4OCAtMTg3IDE4NSAtMTkwVDE3MiAtMTk0UTE3MCAtMTk0IDE2MSAtMTk0VDEyNyAtMTkzVDY1IC0xOTJRLTUgLTE5MiAtMjQgLTE5NEgtMzJRLTM5IC0xODcgLTM5IC0xODNRLTM3IC0xNTYgLTI2IC0xNDhILTZRMjggLTE0NyAzMyAtMTM2UTM2IC0xMzAgOTQgMTAzVDE1NSAzNTBRMTU2IDM1NSAxNTYgMzY0UTE1NiA0MDUgMTMxIDQwNVExMDkgNDA1IDk0IDM3N1Q3MSAzMTZUNTkgMjgwUTU3IDI3OCA0MyAyNzhIMjlRMjMgMjg0IDIzIDI4N1pNMTc4IDEwMlEyMDAgMjYgMjUyIDI2UTI4MiAyNiAzMTAgNDlUMzU2IDEwN1EzNzQgMTQxIDM5MiAyMTVUNDExIDMyNVYzMzFRNDExIDQwNSAzNTAgNDA1UTMzOSA0MDUgMzI4IDQwMlQzMDYgMzkzVDI4NiAzODBUMjY5IDM2NVQyNTQgMzUwVDI0MyAzMzZUMjM1IDMyNkwyMzIgMzIyUTIzMiAzMjEgMjI5IDMwOFQyMTggMjY0VDIwNCAyMTJRMTc4IDEwNiAxNzggMTAyJyxcbiAgICAweDFENDVFOiAnMzMgMTU3UTMzIDI1OCAxMDkgMzQ5VDI4MCA0NDFRMzQwIDQ0MSAzNzIgMzg5UTM3MyAzOTAgMzc3IDM5NVQzODggNDA2VDQwNCA0MThRNDM4IDQ0MiA0NTAgNDQyUTQ1NCA0NDIgNDU3IDQzOVQ0NjAgNDM0UTQ2MCA0MjUgMzkxIDE0OVEzMjAgLTEzNSAzMjAgLTEzOVEzMjAgLTE0NyAzNjUgLTE0OEgzOTBRMzk2IC0xNTYgMzk2IC0xNTdUMzkzIC0xNzVRMzg5IC0xODggMzgzIC0xOTRIMzcwUTMzOSAtMTkyIDI2MiAtMTkyUTIzNCAtMTkyIDIxMSAtMTkyVDE3NCAtMTkyVDE1NyAtMTkzUTE0MyAtMTkzIDE0MyAtMTg1UTE0MyAtMTgyIDE0NSAtMTcwUTE0OSAtMTU0IDE1MiAtMTUxVDE3MiAtMTQ4UTIyMCAtMTQ4IDIzMCAtMTQxUTIzOCAtMTM2IDI1OCAtNTNUMjc5IDMyUTI3OSAzMyAyNzIgMjlRMjI0IC0xMCAxNzIgLTEwUTExNyAtMTAgNzUgMzBUMzMgMTU3Wk0zNTIgMzI2UTMyOSA0MDUgMjc3IDQwNVEyNDIgNDA1IDIxMCAzNzRUMTYwIDI5M1ExMzEgMjE0IDExOSAxMjlRMTE5IDEyNiAxMTkgMTE4VDExOCAxMDZRMTE4IDYxIDEzNiA0NFQxNzkgMjZRMjMzIDI2IDI5MCA5OEwyOTggMTA5TDM1MiAzMjYnLFxuICAgIDB4MUQ0NUY6ICcyMSAyODdRMjIgMjkwIDIzIDI5NVQyOCAzMTdUMzggMzQ4VDUzIDM4MVQ3MyA0MTFUOTkgNDMzVDEzMiA0NDJRMTYxIDQ0MiAxODMgNDMwVDIxNCA0MDhUMjI1IDM4OFEyMjcgMzgyIDIyOCAzODJUMjM2IDM4OVEyODQgNDQxIDM0NyA0NDFIMzUwUTM5OCA0NDEgNDIyIDQwMFE0MzAgMzgxIDQzMCAzNjNRNDMwIDMzMyA0MTcgMzE1VDM5MSAyOTJUMzY2IDI4OFEzNDYgMjg4IDMzNCAyOTlUMzIyIDMyOFEzMjIgMzc2IDM3OCAzOTJRMzU2IDQwNSAzNDIgNDA1UTI4NiA0MDUgMjM5IDMzMVEyMjkgMzE1IDIyNCAyOThUMTkwIDE2NVExNTYgMjUgMTUxIDE2UTEzOCAtMTEgMTA4IC0xMVE5NSAtMTEgODcgLTVUNzYgN1Q3NCAxN1E3NCAzMCAxMTQgMTg5VDE1NCAzNjZRMTU0IDQwNSAxMjggNDA1UTEwNyA0MDUgOTIgMzc3VDY4IDMxNlQ1NyAyODBRNTUgMjc4IDQxIDI3OEgyN1EyMSAyODQgMjEgMjg3JyxcbiAgICAweDFENDYwOiAnMTMxIDI4OVExMzEgMzIxIDE0NyAzNTRUMjAzIDQxNVQzMDAgNDQyUTM2MiA0NDIgMzkwIDQxNVQ0MTkgMzU1UTQxOSAzMjMgNDAyIDMwOFQzNjQgMjkyUTM1MSAyOTIgMzQwIDMwMFQzMjggMzI2UTMyOCAzNDIgMzM3IDM1NFQzNTQgMzcyVDM2NyAzNzhRMzY4IDM3OCAzNjggMzc5UTM2OCAzODIgMzYxIDM4OFQzMzYgMzk5VDI5NyA0MDVRMjQ5IDQwNSAyMjcgMzc5VDIwNCAzMjZRMjA0IDMwMSAyMjMgMjkxVDI3OCAyNzRUMzMwIDI1OVEzOTYgMjMwIDM5NiAxNjNRMzk2IDEzNSAzODUgMTA3VDM1MiA1MVQyODkgN1QxOTUgLTEwUTExOCAtMTAgODYgMTlUNTMgODdRNTMgMTI2IDc0IDE0M1QxMTggMTYwUTEzMyAxNjAgMTQ2IDE1MVQxNjAgMTIwUTE2MCA5NCAxNDIgNzZUMTExIDU4UTEwOSA1NyAxMDggNTdUMTA3IDU1UTEwOCA1MiAxMTUgNDdUMTQ2IDM0VDIwMSAyN1EyMzcgMjcgMjYzIDM4VDMwMSA2NlQzMTggOTdUMzIzIDEyMlEzMjMgMTUwIDMwMiAxNjRUMjU0IDE4MVQxOTUgMTk2VDE0OCAyMzFRMTMxIDI1NiAxMzEgMjg5JyxcbiAgICAweDFENDYxOiAnMjYgMzg1UTE5IDM5MiAxOSAzOTVRMTkgMzk5IDIyIDQxMVQyNyA0MjVRMjkgNDMwIDM2IDQzMFQ4NyA0MzFIMTQwTDE1OSA1MTFRMTYyIDUyMiAxNjYgNTQwVDE3MyA1NjZUMTc5IDU4NlQxODcgNjAzVDE5NyA2MTVUMjExIDYyNFQyMjkgNjI2UTI0NyA2MjUgMjU0IDYxNVQyNjEgNTk2UTI2MSA1ODkgMjUyIDU0OVQyMzIgNDcwTDIyMiA0MzNRMjIyIDQzMSAyNzIgNDMxSDMyM1EzMzAgNDI0IDMzMCA0MjBRMzMwIDM5OCAzMTcgMzg1SDIxMEwxNzQgMjQwUTEzNSA4MCAxMzUgNjhRMTM1IDI2IDE2MiAyNlExOTcgMjYgMjMwIDYwVDI4MyAxNDRRMjg1IDE1MCAyODggMTUxVDMwMyAxNTNIMzA3UTMyMiAxNTMgMzIyIDE0NVEzMjIgMTQyIDMxOSAxMzNRMzE0IDExNyAzMDEgOTVUMjY3IDQ4VDIxNiA2VDE1NSAtMTFRMTI1IC0xMSA5OCA0VDU5IDU2UTU3IDY0IDU3IDgzVjEwMUw5MiAyNDFRMTI3IDM4MiAxMjggMzgzUTEyOCAzODUgNzcgMzg1SDI2JyxcbiAgICAweDFENDYyOiAnMjEgMjg3UTIxIDI5NSAzMCAzMThUNTUgMzcwVDk5IDQyMFQxNTggNDQyUTIwNCA0NDIgMjI3IDQxN1QyNTAgMzU4UTI1MCAzNDAgMjE2IDI0NlQxODIgMTA1UTE4MiA2MiAxOTYgNDVUMjM4IDI3VDI5MSA0NFQzMjggNzhMMzM5IDk1UTM0MSA5OSAzNzcgMjQ3UTQwNyAzNjcgNDEzIDM4N1Q0MjcgNDE2UTQ0NCA0MzEgNDYzIDQzMVE0ODAgNDMxIDQ4OCA0MjFUNDk2IDQwMkw0MjAgODRRNDE5IDc5IDQxOSA2OFE0MTkgNDMgNDI2IDM1VDQ0NyAyNlE0NjkgMjkgNDgyIDU3VDUxMiAxNDVRNTE0IDE1MyA1MzIgMTUzUTU1MSAxNTMgNTUxIDE0NFE1NTAgMTM5IDU0OSAxMzBUNTQwIDk4VDUyMyA1NVQ0OTggMTdUNDYyIC04UTQ1NCAtMTAgNDM4IC0xMFEzNzIgLTEwIDM0NyA0NlEzNDUgNDUgMzM2IDM2VDMxOCAyMVQyOTYgNlQyNjcgLTZUMjMzIC0xMVExODkgLTExIDE1NSA3UTEwMyAzOCAxMDMgMTEzUTEwMyAxNzAgMTM4IDI2MlQxNzMgMzc5UTE3MyAzODAgMTczIDM4MVExNzMgMzkwIDE3MyAzOTNUMTY5IDQwMFQxNTggNDA0SDE1NFExMzEgNDA0IDExMiAzODVUODIgMzQ0VDY1IDMwMlQ1NyAyODBRNTUgMjc4IDQxIDI3OEgyN1EyMSAyODQgMjEgMjg3JyxcbiAgICAweDFENDYzOiAnMTczIDM4MFExNzMgNDA1IDE1NCA0MDVRMTMwIDQwNSAxMDQgMzc2VDYxIDI4N1E2MCAyODYgNTkgMjg0VDU4IDI4MVQ1NiAyNzlUNTMgMjc4VDQ5IDI3OFQ0MSAyNzhIMjdRMjEgMjg0IDIxIDI4N1EyMSAyOTQgMjkgMzE2VDUzIDM2OFQ5NyA0MTlUMTYwIDQ0MVEyMDIgNDQxIDIyNSA0MTdUMjQ5IDM2MVEyNDkgMzQ0IDI0NiAzMzVRMjQ2IDMyOSAyMzEgMjkxVDIwMCAyMDJUMTgyIDExM1ExODIgODYgMTg3IDY5UTIwMCAyNiAyNTAgMjZRMjg3IDI2IDMxOSA2MFQzNjkgMTM5VDM5OCAyMjJUNDA5IDI3N1E0MDkgMzAwIDQwMSAzMTdUMzgzIDM0M1QzNjUgMzYxVDM1NyAzODNRMzU3IDQwNSAzNzYgNDI0VDQxNyA0NDNRNDM2IDQ0MyA0NTEgNDI1VDQ2NyAzNjdRNDY3IDM0MCA0NTUgMjg0VDQxOCAxNTlUMzQ3IDQwVDI0MSAtMTFRMTc3IC0xMSAxMzkgMjJRMTAyIDU0IDEwMiAxMTdRMTAyIDE0OCAxMTAgMTgxVDE1MSAyOThRMTczIDM2MiAxNzMgMzgwJyxcbiAgICAweDFENDY0OiAnNTgwIDM4NVE1ODAgNDA2IDU5OSA0MjRUNjQxIDQ0M1E2NTkgNDQzIDY3NCA0MjVUNjkwIDM2OFE2OTAgMzM5IDY3MSAyNTNRNjU2IDE5NyA2NDQgMTYxVDYwOSA4MFQ1NTQgMTJUNDgyIC0xMVE0MzggLTExIDQwNCA1VDM1NSA0OFEzNTQgNDcgMzUyIDQ0UTMxMSAtMTEgMjUyIC0xMVEyMjYgLTExIDIwMiAtNVQxNTUgMTRUMTE4IDUzVDEwNCAxMTZRMTA0IDE3MCAxMzggMjYyVDE3MyAzNzlRMTczIDM4MCAxNzMgMzgxUTE3MyAzOTAgMTczIDM5M1QxNjkgNDAwVDE1OCA0MDRIMTU0UTEzMSA0MDQgMTEyIDM4NVQ4MiAzNDRUNjUgMzAyVDU3IDI4MFE1NSAyNzggNDEgMjc4SDI3UTIxIDI4NCAyMSAyODdRMjEgMjkzIDI5IDMxNVQ1MiAzNjZUOTYgNDE4VDE2MSA0NDFRMjA0IDQ0MSAyMjcgNDE2VDI1MCAzNThRMjUwIDM0MCAyMTcgMjUwVDE4NCAxMTFRMTg0IDY1IDIwNSA0NlQyNTggMjZRMzAxIDI2IDMzNCA4N0wzMzkgOTZWMTE5UTMzOSAxMjIgMzM5IDEyOFQzNDAgMTM2VDM0MSAxNDNUMzQyIDE1MlQzNDUgMTY1VDM0OCAxODJUMzU0IDIwNlQzNjIgMjM4VDM3MyAyODFRNDAyIDM5NSA0MDYgNDA0UTQxOSA0MzEgNDQ5IDQzMVE0NjggNDMxIDQ3NSA0MjFUNDgzIDQwMlE0ODMgMzg5IDQ1NCAyNzRUNDIyIDE0MlE0MjAgMTMxIDQyMCAxMDdWMTAwUTQyMCA4NSA0MjMgNzFUNDQyIDQyVDQ4NyAyNlE1NTggMjYgNjAwIDE0OFE2MDkgMTcxIDYyMCAyMTNUNjMyIDI3M1E2MzIgMzA2IDYxOSAzMjVUNTkzIDM1N1Q1ODAgMzg1JyxcbiAgICAweDFENDY1OiAnNTIgMjg5UTU5IDMzMSAxMDYgMzg2VDIyMiA0NDJRMjU3IDQ0MiAyODYgNDI0VDMyOSAzNzlRMzcxIDQ0MiA0MzAgNDQyUTQ2NyA0NDIgNDk0IDQyMFQ1MjIgMzYxUTUyMiAzMzIgNTA4IDMxNFQ0ODEgMjkyVDQ1OCAyODhRNDM5IDI4OCA0MjcgMjk5VDQxNSAzMjhRNDE1IDM3NCA0NjUgMzkxUTQ1NCA0MDQgNDI1IDQwNFE0MTIgNDA0IDQwNiA0MDJRMzY4IDM4NiAzNTAgMzM2UTI5MCAxMTUgMjkwIDc4UTI5MCA1MCAzMDYgMzhUMzQxIDI2UTM3OCAyNiA0MTQgNTlUNDYzIDE0MFE0NjYgMTUwIDQ2OSAxNTFUNDg1IDE1M0g0ODlRNTA0IDE1MyA1MDQgMTQ1UTUwNCAxNDQgNTAyIDEzNFE0ODYgNzcgNDQwIDMzVDMzMyAtMTFRMjYzIC0xMSAyMjcgNTJRMTg2IC0xMCAxMzMgLTEwSDEyN1E3OCAtMTAgNTcgMTZUMzUgNzFRMzUgMTAzIDU0IDEyM1Q5OSAxNDNRMTQyIDE0MyAxNDIgMTAxUTE0MiA4MSAxMzAgNjZUMTA3IDQ2VDk0IDQxTDkxIDQwUTkxIDM5IDk3IDM2VDExMyAyOVQxMzIgMjZRMTY4IDI2IDE5NCA3MVEyMDMgODcgMjE3IDEzOVQyNDUgMjQ3VDI2MSAzMTNRMjY2IDM0MCAyNjYgMzUyUTI2NiAzODAgMjUxIDM5MlQyMTcgNDA0UTE3NyA0MDQgMTQyIDM3MlQ5MyAyOTBROTEgMjgxIDg4IDI4MFQ3MiAyNzhINThRNTIgMjg0IDUyIDI4OScsXG4gICAgMHgxRDQ2NjogJzIxIDI4N1EyMSAzMDEgMzYgMzM1VDg0IDQwNlQxNTggNDQyUTE5OSA0NDIgMjI0IDQxOVQyNTAgMzU1UTI0OCAzMzYgMjQ3IDMzNFEyNDcgMzMxIDIzMSAyODhUMTk4IDE5MVQxODIgMTA1UTE4MiA2MiAxOTYgNDVUMjM4IDI3UTI2MSAyNyAyODEgMzhUMzEyIDYxVDMzOSA5NFEzMzkgOTUgMzQ0IDExNFQzNTggMTczVDM3NyAyNDdRNDE1IDM5NyA0MTkgNDA0UTQzMiA0MzEgNDYyIDQzMVE0NzUgNDMxIDQ4MyA0MjRUNDk0IDQxMlQ0OTYgNDAzUTQ5NiAzOTAgNDQ3IDE5M1QzOTEgLTIzUTM2MyAtMTA2IDI5NCAtMTU1VDE1NiAtMjA1UTExMSAtMjA1IDc3IC0xODNUNDMgLTExN1E0MyAtOTUgNTAgLTgwVDY5IC01OFQ4OSAtNDhUMTA2IC00NVExNTAgLTQ1IDE1MCAtODdRMTUwIC0xMDcgMTM4IC0xMjJUMTE1IC0xNDJUMTAyIC0xNDdMOTkgLTE0OFExMDEgLTE1MyAxMTggLTE2MFQxNTIgLTE2N0gxNjBRMTc3IC0xNjcgMTg2IC0xNjVRMjE5IC0xNTYgMjQ3IC0xMjdUMjkwIC02NVQzMTMgLTlUMzIxIDIxTDMxNSAxN1EzMDkgMTMgMjk2IDZUMjcwIC02UTI1MCAtMTEgMjMxIC0xMVExODUgLTExIDE1MCAxMVQxMDQgODJRMTAzIDg5IDEwMyAxMTNRMTAzIDE3MCAxMzggMjYyVDE3MyAzNzlRMTczIDM4MCAxNzMgMzgxUTE3MyAzOTAgMTczIDM5M1QxNjkgNDAwVDE1OCA0MDRIMTU0UTEzMSA0MDQgMTEyIDM4NVQ4MiAzNDRUNjUgMzAyVDU3IDI4MFE1NSAyNzggNDEgMjc4SDI3UTIxIDI4NCAyMSAyODcnLFxuICAgIDB4MUQ0Njc6ICczNDcgMzM4UTMzNyAzMzggMjk0IDM0OVQyMzEgMzYwUTIxMSAzNjAgMTk3IDM1NlQxNzQgMzQ2VDE2MiAzMzVUMTU1IDMyNEwxNTMgMzIwUTE1MCAzMTcgMTM4IDMxN1ExMTcgMzE3IDExNyAzMjVRMTE3IDMzMCAxMjAgMzM5UTEzMyAzNzggMTYzIDQwNlQyMjkgNDQwUTI0MSA0NDIgMjQ2IDQ0MlEyNzEgNDQyIDI5MSA0MjVUMzI5IDM5MlQzNjcgMzc1UTM4OSAzNzUgNDExIDQwOFQ0MzQgNDQxUTQzNSA0NDIgNDQ5IDQ0Mkg0NjJRNDY4IDQzNiA0NjggNDM0UTQ2OCA0MzAgNDYzIDQyMFQ0NDkgMzk5VDQzMiAzNzdUNDE4IDM1OEw0MTEgMzQ5UTM2OCAyOTggMjc1IDIxNFQxNjAgMTA2TDE0OCA5NEwxNjMgOTNRMTg1IDkzIDIyNyA4MlQyOTAgNzFRMzI4IDcxIDM2MCA5MFQ0MDIgMTQwUTQwNiAxNDkgNDA5IDE1MVQ0MjQgMTUzUTQ0MyAxNTMgNDQzIDE0M1E0NDMgMTM4IDQ0MiAxMzRRNDI1IDcyIDM3NiAzMVQyNzggLTExUTI1MiAtMTEgMjMyIDZUMTkzIDQwVDE1NSA1N1ExMTEgNTcgNzYgLTNRNzAgLTExIDU5IC0xMUg1NEg0MVEzNSAtNSAzNSAtMlEzNSAxMyA5MyA4NFExMzIgMTI5IDIyNSAyMTRUMzQwIDMyMlEzNTIgMzM4IDM0NyAzMzgnLFxuICAgIDB4MUQ0Njg6ICc2NSAwUTQ1IDAgNDUgMThRNDggNTIgNjEgNjBRNjUgNjIgODEgNjJRMTU1IDYyIDE2NSA3NFExNjYgNzQgMjY1IDIyOFQ0NjUgNTM5VDU2OSA2OTlRNTc2IDcwNyA1ODMgNzA5VDYxMSA3MTFUNjM3IDcxMFQ2NDkgNzAwUTY1MCA2OTcgNjk1IDM4MEw3NDEgNjNMNzg0IDYySDgyN1E4MzkgNTAgODM5IDQ1TDgzNSAyOVE4MzEgOSA4MjcgNVQ4MDYgMFE4MDMgMCA3OTAgMFQ3NDMgMVQ2NTcgMlE1ODUgMiA1NDcgMVQ1MDQgMFE0ODEgMCA0ODEgMTdRNDg0IDU0IDQ5NyA2MFE1MDEgNjIgNTQxIDYyUTU4MCA2MiA1ODAgNjNRNTgwIDY4IDU3MyAxMjFUNTY0IDE3OVYxODFIMzA4TDI3MSAxMjRRMjM2IDY5IDIzNiA2N1QyODMgNjJIMjg3UTMxNiA2MiAzMTYgNDZRMzE2IDI2IDMwNyA4UTMwMiAzIDI5NSAwTDI2MiAxUTI0MiAyIDE2OCAyUTExOSAyIDkzIDFUNjUgMFpNNTM3IDM3MlE1MzMgNDAyIDUyOCA0MzVUNTIxIDQ4NlQ1MTggNTA0VjUwNVE1MTcgNTA1IDQzMyAzNzVMMzQ4IDI0NEw0NTEgMjQzUTU1NSAyNDMgNTU1IDI0NEw1MzcgMzcyJyxcbiAgICAweDFENDY5OiAnMjU4IDYyNEgyMzVRMjE0IDYyNCAyMDkgNjI2VDE5OSA2MzlRMjAzIDY3OCAyMTYgNjg0UTIyMCA2ODYgNDQ5IDY4Nkg0NzdINTg2UTY4NCA2ODYgNzMzIDY3N1Q4MTcgNjM0UTg1MyA1OTggODUzIDU0N1E4NTMgNDk5IDgyNiA0NjBUNzYxIDQwMVQ2OTUgMzcxVDY1NCAzNjBINjUzTDY2MiAzNThRNjcwIDM1NyA2ODMgMzU0VDcxMiAzNDRUNzQ0IDMyN1Q3NzQgMzAzVDc5NSAyNjlUODA0IDIyNFE4MDQgMTQ4IDczMiA3OVQ1MzMgMVE1MjQgMCAyODggMEg1OFE0NyA1IDQzIDE1UTQ3IDU0IDYwIDYwUTY0IDYyIDExMyA2MkgxNjJMMzAyIDYyM1EzMDIgNjI0IDI1OCA2MjRaTTcwMyA1NTBRNzAzIDU3MSA2OTUgNTg2VDY3NSA2MDlUNjU2IDYxOVQ2NDMgNjIzTDU0NSA2MjRINDQ3TDQxNyA1MDRRMzg2IDM4NCAzODYgMzgzVDQ3MCAzODJRNTU0IDM4MyA1NjUgMzg1UTYzMiAzOTcgNjY3IDQ0N1Q3MDMgNTUwWk02NTEgMjQwUTY1MSAyNjUgNjQ1IDI4MlQ2MjYgMzA5VDYwOCAzMjJUNTkyIDMyOVE1ODcgMzMwIDQ3OSAzMzFIMzczTDM0MCAxOThRMzA3IDY1IDMwNiA2NFEzMDYgNjIgNDA2IDYyTDUwNyA2M0w1MTkgNjVRNTY1IDc2IDU5NiAxMDdUNjM5IDE3MVQ2NTEgMjQwJyxcbiAgICAweDFENDZBOiAnMzgwIC0xN1EzMzUgLTE3IDI5MyAtMTBUMjA3IDE2VDEzMCA2NVQ3NiAxNDRUNTUgMjU2UTU1IDMwNiA3MCAzNjFUMTIyIDQ3NlQyMTEgNTgyVDM0NSA2NjNUNTI1IDcwMkg1NDVRNjczIDcwMiA3MzEgNjM0TDc3NyA2NjhRNzgzIDY3MiA3ODkgNjc3VDgwMCA2ODVUODA4IDY5MVQ4MTQgNjk1VDgxOCA2OThUODIyIDcwMFQ4MjUgNzAyVDgyOCA3MDNUODMwIDcwM1Q4MzMgNzAzUTg1NSA3MDMgODU1IDY5MFE4NTUgNjg2IDgyMyA1NThUNzg5IDQyNlE3ODYgNDIxIDc4MiA0MjBUNzU2IDQxOVE3MzQgNDIwIDcyOSA0MjFUNzI0IDQzMlE3MjQgNDM0IDcyNSA0NDdUNzI2IDQ3MlE3MjYgNTUyIDY3OCA2MDRRNjQwIDY0MCA1ODYgNjQwSDU3NFE1MzMgNjQwIDQ5NCA2MzJUNDA5IDYwNFQzMjQgNTQxVDI2MCA0MzdRMjQzIDM5NyAyMjcgMzMzVDIxMCAyMTlRMjEwIDE1MiAyMzcgMTE3UTI1NSA5MCAyOTkgNjhUNDIwIDQ2SDQyOVE1MDYgNDYgNTgwIDEwMFQ2NzggMjM0UTY4MyAyNDkgNjg3IDI1MVQ3MTIgMjU0SDcyM1E3NDMgMjU0IDc0MyAyNDBRNzQzIDIzMiA3MzYgMjEzVDcxMCAxNjJUNjYzIDEwMFQ1ODYgNDBUNDc3IC01UTQzMyAtMTcgMzgwIC0xNycsXG4gICAgMHgxRDQ2QjogJzI1OCA2MjRIMjM1UTIxNCA2MjQgMjA5IDYyNlQxOTkgNjM5UTIwMyA2NzggMjE2IDY4NFEyMjAgNjg2IDQzNyA2ODZRNjU5IDY4NiA2NjggNjg1UTcyNyA2ODAgNzcyIDY2MlQ4NDIgNjIxVDg4MyA1NjhUOTA1IDUxN1Q5MTMgNDc1UTkxNCA0NjYgOTE0IDQzNFE5MTQgMzczIDg5MiAzMDdUODI4IDE3OVQ3MTIgNjlUNTQ4IDdRNTE3IDIgNDk0IDJUMjc5IDBINThRNDcgNSA0MyAxNVE0NyA1NCA2MCA2MFE2NCA2MiAxMTMgNjJIMTYyTDMwMiA2MjNRMzAyIDYyNCAyNTggNjI0Wk03NjggNDc1UTc2OCA1MTUgNzUzIDU0NFQ3MTggNTg4VDY2NiA2MTFUNjEzIDYyMlQ1NjMgNjI0SDUzOEg1MzJINDUyTDM4MiAzNDRRMzExIDY0IDMxMSA2M1QzNjMgNjJINDA1UTQ5MCA2MiA1NDUgNzZUNjU2IDE0MlE2OTYgMTg1IDcyNCAyNjVUNzYwIDM5OVQ3NjggNDc1JyxcbiAgICAweDFENDZDOiAnMjU3IDYxOEgyMzFRMTk4IDYxOCAxOTggNjM2UTIwMiA2NzIgMjE0IDY3OEwyMTkgNjgwSDgxMVE4MTcgNjc3IDgyMCA2NzNUODI0IDY2Nkw4MjUgNjY0UTgyNSA2NTkgODE0IDU0OVQ3OTkgNDMzUTc5MyA0MjQgNzcxIDQyNFE3NTIgNDI0IDc0NiA0MjdUNzQwIDQ0MVE3NDAgNDQ1IDc0MiA0NjZUNzQ0IDUwNVE3NDQgNTYxIDcyMiA1ODVUNjQ2IDYxNlE2MzkgNjE3IDU0NSA2MThINDU2UTQ1NiA2MTcgNDI3IDUwMlQzOTggMzg1UTM5OCAzODQgNDM1IDM4NFE0NjEgMzg1IDQ3MSAzODVUNDk5IDM5MVQ1MjYgNDA1VDU0NSA0MzNUNTYyIDQ3OFE1NjYgNDk0IDU3MSA0OTdUNTk1IDUwMUg2MDRRNjIyIDUwMSA2MjYgNDg2UTYyNiA0ODIgNTkzIDM0OVQ1NTcgMjEzUTU1MiAyMDUgNTMwIDIwNVE0OTkgMjA1IDQ5OSAyMTlRNDk5IDIyMiA1MDMgMjQyVDUwOCAyODFRNTA4IDMwOCA0OTEgMzE0VDQyOSAzMjJRNDI1IDMyMiA0MjMgMzIySDM4MkwzMTcgNjRRMzE3IDYyIDM5MCA2MlE0NjAgNjIgNDkzIDY0VDU2OSA4MFQ2NDAgMTI0UTY2NSAxNDkgNjg2IDE4N1Q3MTkgMjUzVDczMyAyODNRNzM5IDI4OSA3NjAgMjg5UTc5MSAyODkgNzkxIDI3NFE3OTEgMjY3IDc2MyAyMDFUNzA2IDcxTDY3OCA4UTY3NiA0IDY2NyAwSDU4UTQ3IDUgNDMgMTVRNDcgNTQgNjAgNjBRNjQgNjIgMTEzIDYySDE2MkwxNjMgNjZRMTYzIDY3IDIzMSAzNDFUMzAxIDYxNlEzMDEgNjE4IDI1NyA2MTgnLFxuICAgIDB4MUQ0NkQ6ICcyNTcgNjE4SDIzMVExOTggNjE4IDE5OCA2MzZRMjAyIDY3MiAyMTQgNjc4TDIxOSA2ODBINzk1UTgwMSA2NzcgODA0IDY3M1Q4MDggNjY2TDgwOSA2NjRRODA5IDY1OSA3OTggNTQ5VDc4MyA0MzNRNzc3IDQyNCA3NTUgNDI0UTczNiA0MjQgNzMwIDQyN1Q3MjQgNDQ0UTcyNCA0NDggNzI1IDQ2OFQ3MjcgNTA3VjUyNFE3MjcgNTQxIDcyNCA1NTRUNzEzIDU3N1Q2OTggNTk0VDY3NiA2MDVUNjUzIDYxMlQ2MjUgNjE2VDU5NyA2MTdUNTY2IDYxOFQ1MzggNjE4SDQ1Nkw0NTUgNjE0UTQ1NSA2MTEgNDI0IDQ5MUwzOTQgMzcxSDQyOVE0NTQgMzcyIDQ2MyAzNzJUNDkxIDM3OFQ1MTcgMzkyVDUzNiA0MTlUNTUyIDQ2NFE1NTYgNDgxIDU2MSA0ODRUNTg2IDQ4OFE2MDMgNDg4IDYwNyA0ODZRNjE2IDQ4MiA2MTYgNDczUTYxNiA0NjcgNTg0IDMzN1Q1NDkgMjAxUTU0MiAxOTIgNTIxIDE5MlE1MDMgMTkyIDQ5NyAxOTVUNDkwIDIwOVE0OTAgMjEyIDQ5MiAyMjRRNDk5IDI1MSA0OTkgMjY5UTQ5OSAyODggNDg5IDI5NlQ0NjUgMzA2VDQxNyAzMDhMMzc5IDMwOUwzNDggMTg4UTM0MSAxNjEgMzM0IDEyOVQzMjIgODBMMzE4IDY1TDMxNyA2MkgzNzVINDA5UTQzMCA2MiA0MzggNTlUNDQ3IDQ1UTQ0NCA4IDQzMSAyTDQyNiAwTDM3NyAxUTM0NyAyIDIzMSAyUTE1MiAyIDExMSAxVDY1IDBRNDggMCA0MyAxNVE0NyA1NCA2MCA2MFE2NCA2MiAxMTMgNjJIMTYyTDE2MyA2NlExNjMgNjcgMjMxIDM0MVQzMDEgNjE2UTMwMSA2MTggMjU3IDYxOCcsXG4gICAgMHgxRDQ2RTogJzM3OSAtMTZRMjMzIC0xNiAxNDUgNTJUNTYgMjU1UTU2IDMxMCA3MyAzNjhUMTI3IDQ4M1QyMTYgNTg2VDM0NyA2NjNUNTE4IDcwMkg1NDBRNTYyIDcwMiA1ODIgNzAwVDYxNiA2OTZUNjQ0IDY4OVQ2NjcgNjgxVDY4NiA2NzBUNzAyIDY1OVQ3MTcgNjQ3VDczMSA2MzVMNzc2IDY2OFE3ODIgNjcyIDc4OCA2NzdUNzk5IDY4NVQ4MDcgNjkxVDgxMyA2OTVUODE3IDY5OFQ4MjEgNzAwVDgyNCA3MDJUODI3IDcwM1Q4MjkgNzAzVDgzMiA3MDNRODU0IDcwMyA4NTQgNjkwUTg1NCA2ODYgODIyIDU1OFQ3ODggNDI2UTc4NSA0MjEgNzgxIDQyMFQ3NTUgNDE5UTczNCA0MjAgNzI5IDQyMlQ3MjMgNDMyUTcyMyA0MzQgNzI0IDQ0NlQ3MjUgNDY5UTcyNSA1MzEgNzAyIDU3MVQ2NDIgNjI4UTYxNiA2NDAgNTc1IDY0MFE0NjggNjQwIDM5MCA1OTNUMjcyIDQ2NFEyNDcgNDE1IDIyOSAzNDBUMjEwIDIxNFEyMTAgMTY2IDIyOCAxMzJUMjc3IDc5VDM0MyA1NFQ0MTkgNDZRNDQ1IDQ2IDQ2NSA1MFQ1MDAgNTlUNTI2IDc2VDU0NCA5NlQ1NTcgMTIzVDU2NiAxNTBUNTc0IDE4MlQ1ODEgMjE0SDUxOVE1MTEgMjE0IDQ5OCAyMTRUNDc5IDIxM1E0NDMgMjEzIDQ0MyAyMzBRNDQzIDI1MCA0NTIgMjY4UTQ1NyAyNzMgNDY0IDI3Nkw1MTQgMjc1UTU0NiAyNzQgNjU3IDI3NFE3MzUgMjc0IDc2OCAyNzVUODAzIDI3NlE4MjYgMjc2IDgyNiAyNThRODIzIDIyNCA4MTAgMjE2UTgwNiAyMTQgNzcxIDIxNEg3MzZRNzM2IDIxMSA3MTAgMTA5VDY4MyA1UTY3OCAwIDY3MSAwUTY2NiAwIDYzNyAxNFQ1OTcgMzZRNTkzIDM4IDU5MCA0MFQ1ODUgNDRUNTgyIDQ0VDU3NiA0MFE1MTEgLTE2IDM3OSAtMTYnLFxuICAgIDB4MUQ0NkY6ICcyNTggNjI0SDIzNVEyMTQgNjI0IDIwOSA2MjZUMTk5IDYzOVEyMDMgNjc4IDIxNiA2ODRRMjIwIDY4NiAyMzkgNjg2UTI5MCA2ODQgNDAzIDY4NFE0NzUgNjg0IDUxMiA2ODVUNTUzIDY4NlE1NzYgNjg2IDU3NiA2NjhRNTcyIDYzMiA1NjAgNjI2UTU1NSA2MjQgNTA2IDYyNEg0NTdMMzk5IDM4OVEzOTkgMzg4IDU0NyAzODhINjk1TDc1MyA2MjNRNzUzIDYyNCA3MDkgNjI0SDY4NlE2NjUgNjI0IDY2MCA2MjZUNjUwIDYzOVE2NTMgNjc4IDY2OCA2ODRRNjcyIDY4NiA2ODEgNjg2UTY4NSA2ODYgNzI2IDY4NVQ4NDcgNjg0UTkwMiA2ODQgOTM3IDY4NFQ5ODYgNjg1VDEwMDQgNjg2UTEwMjcgNjg2IDEwMjcgNjY4UTEwMjMgNjMyIDEwMTEgNjI2UTEwMDYgNjI0IDk1NyA2MjRIOTA4TDgzOSAzNDRRNzY4IDY0IDc2OCA2M1Q4MTIgNjJIODM5UTg3MSA2MiA4NzEgNDRRODY3IDYgODU0IDJMODUwIDBMODA4IDFRNzgyIDIgNjc1IDJRNjAwIDIgNTYwIDFUNTE2IDBRNDk5IDAgNDk0IDE1UTQ5OCA1NCA1MTEgNjBRNTE1IDYyIDU2NCA2Mkg2MTNMNjE0IDY2TDY3OSAzMjRRNjc5IDMyNiA1MzEgMzI2SDM4M0wzODIgMzIyTDMxNyA2NFEzMTcgNjIgMzYxIDYySDM4OFE0MjAgNjIgNDIwIDQ0UTQxNiA2IDQwMyAyTDM5OSAwTDM1NyAxUTMzMSAyIDIyNCAyUTE0OSAyIDEwOSAxVDY1IDBRNDggMCA0MyAxNVE0NyA1NCA2MCA2MFE2NCA2MiAxMTMgNjJIMTYyTDMwMiA2MjNRMzAyIDYyNCAyNTggNjI0JyxcbiAgICAweDFENDcwOiAnMjQ3IDYyNFEyNDIgNjI0IDIzMyA2MjRUMjIwIDYyM1ExODYgNjIzIDE4NiA2NDBRMTg2IDY0NyAxOTAgNjY0VDIwMiA2ODRRMjA2IDY4NiAyMjYgNjg2UTI3NyA2ODQgMzkzIDY4NFE0MzUgNjg0IDQ3MSA2ODRUNTI4IDY4NVQ1NTMgNjg2UTU3MyA2ODYgNTczIDY3MFE1NzMgNjUwIDU2NCA2MzJRNTU2IDYyNCA1MzcgNjI0SDUwMUg0NDlMMzgwIDM0NFEzMDkgNjQgMzA5IDYzVDM1NiA2MlEzNjEgNjIgMzcwIDYyVDM4NCA2M1E0MTcgNjMgNDE3IDQ2UTQxNyAyNiA0MDggOFE0MDMgMyAzOTYgMEwzNTIgMVEzMjUgMiAyMTYgMlQ4MiAxTDQ1IDBRMzAgNyAzMCAxNlEzMyA1MSA0NiA2MFE1MSA2MiAxMDIgNjJIMTU0TDI5NCA2MjNRMjk0IDYyNCAyNDcgNjI0JyxcbiAgICAweDFENDcxOiAnMjA1IDEzMVEyMDUgMTA1IDE5MiA4NFQxNjUgNTRMMTUyIDQ1UTE1MiA0NCAxNjAgNDJUMTgyIDM3VDIxMyAzNUgyMTZRMjU1IDM1IDI4OSA2NVEzMTQgOTAgMzI5IDEyOVEzMzEgMTM2IDM5MiAzNzhUNDUzIDYyM1E0NTMgNjI0IDM5MyA2MjRIMzMyUTMxOCA2MzEgMzE4IDY0MFEzMTggNjQ3IDMyMiA2NjRUMzM0IDY4NFEzMzggNjg2IDM1OSA2ODZRNDEzIDY4NCA1MzMgNjg0UTU2NiA2ODQgNjA1IDY4NVQ2NTIgNjg2UTY3NyA2ODYgNjg1IDY4M1Q2OTQgNjY5UTY5NCA2NjQgNjkxIDY1MlE2ODYgNjMxIDY4MSA2MjhUNjQ3IDYyNEg2MDJMNTQyIDM4MFE1MzEgMzM2IDUxOCAyODVUNTAwIDIxMlQ0ODcgMTYxVDQ3NSAxMjJUNDYzIDk3VDQ0OCA3NFQ0MjkgNTVRMzUxIC0xNyAyMTMgLTE3UTE0MiAtMTcgOTkgN1Q0MyA3MFE0MiA3NSA0MiA5M1E0MiAxNDMgNzMgMTY4VDEzOSAxOTRRMTY4IDE5NCAxODYgMTc3VDIwNSAxMzEnLFxuICAgIDB4MUQ0NzI6ICc1MzYgMFE1MjIgNiA1MjIgMThRNTIyIDM1IDUzMyA1N1E1MzkgNjIgNTU3IDYyUTU5NSA2MiA2MDEgNjVMNDcyIDMzMEwzNjUgMjU1TDM0MiAxNjBRMzE4IDY1IDMxNyA2NFEzMTcgNjIgMzYxIDYySDM4OFE0MjAgNjIgNDIwIDQ0UTQxNiA2IDQwMyAyTDM5OSAwTDM1NyAxUTMzMSAyIDIyNCAyUTE0OSAyIDEwOSAxVDY1IDBRNDggMCA0MyAxNVE0NyA1NCA2MCA2MFE2NCA2MiAxMTMgNjJIMTYyTDMwMiA2MjNRMzAyIDYyNCAyNTggNjI0SDIzNVEyMTQgNjI0IDIwOSA2MjZUMTk5IDYzOVEyMDMgNjc4IDIxNiA2ODRRMjIwIDY4NiAyMzkgNjg2UTI5MCA2ODQgNDAzIDY4NFE0NzUgNjg0IDUxMiA2ODVUNTUzIDY4NlE1NzYgNjg2IDU3NiA2NjhRNTcyIDYzMiA1NjAgNjI2UTU1NSA2MjQgNTA2IDYyNEg0NTdMNDIyIDQ4MVEzODYgMzM5IDM4NiAzMzdMNzg1IDYyMVE3NzkgNjI0IDc0OSA2MjRRNzI2IDYyNCA3MjYgNjQxUTcyNiA2NDUgNzMwIDY1OVE3MzQgNjc1IDczNiA2NzlUNzQ3IDY4Nkw3ODYgNjg1UTgxMiA2ODQgODg4IDY4NFE5MDggNjg0IDkzNCA2ODVUOTY4IDY4NlExMDAzIDY4NiAxMDAzIDY2OVExMDAzIDY0NiA5OTEgNjI5UTk4NSA2MjQgOTY3IDYyNFE5MTggNjI0IDg4OCA2MTdRODg0IDYxNyA4NzQgNjEzTDg2NSA2MDlRODY0IDYwOCA3MzIgNTE1VDU5OSA0MjBRNTk5IDQxOCA2ODYgMjQyVDc3NSA2NVE3ODQgNjIgODI5IDYyUTg0NyA2MiA4NTAgNjFUODYwIDU0UTg2MiA1MiA4NjIgNDNRODYyIDEwIDg0NSAxUTg0NCAxIDg0MiAxVDgzNiAwVDc5NyAxVDY5NCAyUTU5OSAyIDU3MyAxTDUzNiAwJyxcbiAgICAweDFENDczOiAnMjU4IDYyNEgyMzVRMjE0IDYyNCAyMDkgNjI2VDE5OSA2MzlRMjAzIDY3OCAyMTYgNjg0UTIyMCA2ODYgMjM5IDY4NlEyOTAgNjg0IDQwOSA2ODRRNDU0IDY4NCA0OTIgNjg0VDU1MiA2ODVUNTc5IDY4NlE2MDMgNjg2IDYwMyA2NjhRNTk5IDYzMiA1ODcgNjI2UTU4MyA2MjQgNTIwIDYyNEg0NTdMMzg4IDM0NFEzMTcgNjQgMzE3IDYzVDM1MyA2MkgzOTBRNDE4IDYyIDQ0MCA2NFQ0OTMgNzhUNTQ4IDExMFQ1OTggMTY5VDY0MyAyNjFRNjUxIDI4MiA2NTUgMjg1VDY4MCAyODlRNjk2IDI4OSA3MDAgMjg4VDcwOSAyNzlRNzExIDI3NCA3MTEgMjY5UTcxMCAyNjUgNjYzIDEzOFQ2MTMgOFE2MTEgNCA2MDIgMEg1OFE0NyA1IDQzIDE1UTQ3IDU0IDYwIDYwUTY0IDYyIDExMyA2MkgxNjJMMzAyIDYyM1EzMDIgNjI0IDI1OCA2MjQnLFxuICAgIDB4MUQ0NzQ6ICcyNTggNjI0SDIzMVEyMTQgNjI0IDIwOCA2MjZUMTk5IDYzOVEyMDMgNjc4IDIxNiA2ODRRMjIwIDY4NiAzNDcgNjg2SDQ3M1E0NzQgNjg1IDQ3OCA2ODJUNDg0IDY3N1E0ODcgNjczIDUzNSA0MTNMNTg0IDE1M0w2MDggMTg3UTYzMSAyMjEgNjcyIDI4MVQ3NjEgNDEwUTkzNSA2NjMgOTQzIDY3MVE5NDkgNjc4IDk2MiA2ODZIMTA4MkgxMTY2UTEyMDEgNjg2IDEyMTAgNjgzVDEyMTkgNjY4UTEyMTUgNjMyIDEyMDMgNjI2UTExOTkgNjI0IDExNDkgNjI0SDExMDBMMTAzMSAzNDRROTYwIDY0IDk2MCA2M1QxMDA0IDYySDEwMzFRMTA2MyA2MiAxMDYzIDQ0UTEwNjAgNyAxMDQ2IDJRMTA0MiAwIDEwMzQgMFExMDMwIDAgOTkwIDFUODc1IDJRODA0IDIgNzY3IDFUNzI1IDBINzIzUTcwNyAwIDcwMyAxNVE3MDcgNTQgNzIwIDYwUTcyNCA2MiA3NzMgNjJIODIyUTk2MSA2MTggOTYxIDYxOUw3NTQgMzE4UTU0NiAxNSA1NDMgMTJRNTMxIDAgNTEwIDBRNTAwIDAgNDk1IDBUNDg0IDVUNDc3IDE5UTQ3NyAyMCA0MjEgMzE1TDM2NyA2MDRMMjk5IDMzNVEyMzQgNzIgMjM0IDY4UTIzNCA2MiAzMDIgNjJRMzM0IDYyIDMzNCA0NlEzMzIgOCAzMTcgMlEzMTMgMCAzMDYgMFEzMDEgMCAyNjcgMVQxODEgMlExMjUgMiA5NiAxVDYzIDBRNDggMCA0MyAxNVE0MyAxOSA0NyAzNVE1MiA1NSA1NyA1OFQ5NCA2MlExNDcgNjQgMTY0IDY5TDIzMyAzNDVRMzAyIDYxOSAzMDIgNjIyUTMwMiA2MjQgMjU4IDYyNCcsXG4gICAgMHgxRDQ3NTogJzI1OCA2MjRIMjM1UTIxNCA2MjQgMjA5IDYyNlQxOTkgNjM5UTIwMyA2NzggMjE2IDY4NFEyMjAgNjg2IDM0NCA2ODZINDM0UTQ2NCA2ODYgNDc3IDY4MFE0ODAgNjc3IDYwNyA0NTRRNzM4IDIyNyA3MzkgMjI3UTc0MiAyMjcgNzg5IDQxOFQ4MzYgNjE4UTgzNiA2MjAgODM1IDYyMEw4MjEgNjIyUTgxMSA2MjIgNzc5IDYyNFE3NTUgNjI0IDc0OSA2MjVUNzQwIDYzMlE3MzcgNjM1IDczNyA2NDRRNzM3IDY1NiA3NDIgNjY5VDc1NCA2ODVRNzU1IDY4NSA3NTcgNjg1VDc2MyA2ODZRNzY4IDY4NiA4MDMgNjg1VDg5MCA2ODRROTI1IDY4NCA5NTEgNjg0VDk5MCA2ODVUMTAwNiA2ODZRMTAxNCA2ODYgMTAxNiA2ODRRMTAyNyA2NzkgMTAyNyA2NjhRMTAyMyA2MzIgMTAxMSA2MjZRMTAwNyA2MjQgOTc4IDYyNFE5MTIgNjIyIDkwNyA2MTdROTA3IDYxNiA4MzEgMzE0VDc1MyA4UTc0OSAwIDcyMyAwSDcxMlE2OTkgMCA2OTIgN1E2OTIgOCA2NzEgNDRUNjA3IDE1NVQ1MjYgMjk2TDM2MSA1ODBMMjk2IDMyM1EyMzQgNzQgMjM0IDY4VDMwMiA2MkgzMDdRMzM0IDYyIDMzNCA0NFEzMzAgNiAzMTcgMkwzMTMgMEwyODAgMVEyNjAgMiAxODEgMlExMjUgMiA5NiAxVDYzIDBRNDggMCA0MyAxNVE0MyAxOSA0NyAzNVE1MiA1NSA1NyA1OFQ5NCA2MlExNDcgNjQgMTY0IDY5TDIzMyAzNDVRMzAyIDYxOSAzMDIgNjIyUTMwMiA2MjQgMjU4IDYyNCcsXG4gICAgMHgxRDQ3NjogJzUzIDI0NVE1MyAyOTcgNzAgMzU2VDEyNSA0NzhUMjE2IDU5MFQzNDkgNjcxVDUyMyA3MDNRNjU2IDcwMyA3MzUgNjM3VDgxNSA0NDVRODE1IDM3OCA3OTEgMzA3UTcyNyAxMDQgNTI3IDE3UTQzNyAtMTcgMzQ0IC0xN1EyODkgLTE3IDI0MiAtNVQxNTAgMzVUNzkgMTE2VDUzIDI0NVpNNjY0IDQ4OVE2NjQgNTc1IDYxOCA2MTFUNTExIDY0OFE0NjMgNjQ4IDQxNiA2MjdUMzM0IDU3MFEyOTcgNTMxIDI3MCA0NzJUMjMwIDM1NVQyMTMgMjYxVDIwOCAyMDZRMjA4IDE3NyAyMTUgMTUxVDIzNyA5OFQyODQgNTZUMzU4IDQwUTQ0MCA0MCA1MTAgOThUNjE4IDI3MFE2NjQgNDAwIDY2NCA0ODknLFxuICAgIDB4MUQ0Nzc6ICcxNjIgNjJMMzAyIDYyM1EzMDIgNjI0IDI1OCA2MjRIMjM0UTIxNCA2MjQgMjA5IDYyNlQyMDAgNjM4UTIwMCA2NzcgMjE3IDY4NFEyMjAgNjg2IDQzOSA2ODZRNjY3IDY4NSA2ODQgNjgyUTY4NiA2ODEgNjkzIDY4MFE3MTMgNjc3IDczMyA2NzFUNzgyIDY0OVQ4MjkgNjAyVDg0NyA1MjhRODQ3IDQ1MCA3ODQgMzgyVDYwNCAyOTNRNTcxIDI4OCA0NjkgMjg3SDM3M0wzNDYgMTc2UTM0MCAxNTEgMzMzIDEyMlQzMjEgNzhMMzE3IDY0UTMxNyA2MiAzNjEgNjJIMzg3UTQyMCA2MiA0MjAgNDRRNDE3IDEwIDQwNCAyTDM5OSAwTDM1NyAxUTMzMSAyIDIyNCAyUTE0OSAyIDEwOSAxVDY1IDBRNDMgMCA0MyAxN1E0MyAyMSA0NyAzM1E1MiA1NCA1NyA1OFQ4OSA2MkgxMTNIMTYyWk02OTIgNTU4UTY5MiA2MTEgNjE3IDYyMlE2MTAgNjIzIDUyOSA2MjRINDUyTDM4MSAzNDNINDU4SDQ5MlE2MDQgMzQzIDY0MSAzODlRNjYyIDQxNCA2NzcgNDcxVDY5MiA1NTgnLFxuICAgIDB4MUQ0Nzg6ICc1MyAyNDVRNTMgMjk3IDcwIDM1NlQxMjUgNDc4VDIxNiA1OTBUMzQ5IDY3MVQ1MjMgNzAzUTY1NiA3MDMgNzM1IDYzN1Q4MTUgNDQ1UTgxNSA0MTAgODA4IDM3MFQ3ODEgMjc3VDcyOSAxNzhUNjQzIDg3VDUxOSAxNEw1MjUgNFE1NDAgLTE5IDU1MyAtMjVUNTkyIC0zMlE2MzIgLTMyIDY1NCAtMjRUNjgwIC03VDY4OSAxMFQ3MDQgMThRNzEzIDE4IDcxNyAxMlQ3MjIgMFE3MjIgLTggNzExIC0zNlQ2ODEgLTEwMVQ2MjQgLTE2NlQ1NDEgLTE5NFE1MTMgLTE5NCA0OTQgLTE4M1Q0NjUgLTE1N1Q0NTAgLTExOFQ0NDQgLTc5VDQ0MyAtNDFWLTdMNDMzIC05UTM5MSAtMTcgMzQ0IC0xN1EzMDEgLTE3IDI2MyAtMTBUMTg1IDE1VDExOCA2MlQ3MSAxMzhUNTMgMjQ1Wk02NjYgNDgyUTY2NiA1MjkgNjUyIDU2M1Q2MTQgNjE1VDU2NSA2NDBUNTEyIDY0OFE0MTIgNjQ4IDMzNSA1NzNRMjY4IDUwNiAyMzUgMzg5VDIwMSAyMDJRMjAxIDE2NCAyMTAgMTM2VDIzMCA5NVQyNTkgNjZMMjYyIDc2UTI2OSAxMDkgMzAyIDEzNVQzODIgMTYyUTQwMSAxNjIgNDE1IDE1OVQ0NDkgMTQwVDQ4NCA5Mkw0OTEgNzhMNDk2IDgyUTUwMiA4NiA1MDUgODhUNTE1IDk3VDUyOCAxMDdUNTQxIDEyMFQ1NTUgMTM3VDU3MCAxNTZUNTg1IDE3OVQ1OTkgMjA1VDYxMiAyMzVRNjI5IDI3OCA2NDcgMzUxVDY2NiA0ODJaTTQzOSA1NlE0MzkgNTggNDM5IDYyVDQzNSA3NVQ0MjYgOTJUNDEwIDEwNlQzODMgMTEyUTM1MyAxMTIgMzMyIDk2VDMxMSA2M1EzMTEgMzggMzU1IDM4SDM2NlEzOTEgMzkgNDE1IDQ1VDQzOSA1NicsXG4gICAgMHgxRDQ3OTogJzI1OCA2MjRIMjM1UTIxNCA2MjQgMjA5IDYyNlQxOTkgNjM5UTIwMyA2NzggMjE2IDY4NFEyMjAgNjg2IDQyMiA2ODZINDQ2SDUyNVE2MzQgNjg2IDY5OCA2NzRUODA2IDYyMFE4NDMgNTgzIDg0MyA1MzVRODQzIDUwNSA4MzMgNDc4VDgwNSA0MzJUNzY4IDM5NlQ3MjggMzcwVDY5MCAzNTJUNjYyIDM0Mkw2NTEgMzM4TDY1NCAzMzZRNjU4IDMzNCA2NjcgMzI3VDY4OCAzMTBRNzE5IDI3OCA3MTkgMjM3UTcxOSAyMjIgNzEwIDE2NVQ3MDEgOTRRNzAxIDM1IDc0OCAzNVE3NzUgMzUgNzkzIDU3VDgxOSAxMDFRODIyIDExMiA4MjYgMTE0VDg0MyAxMTdIODQ5UTg4MSAxMTcgODgxIDk5UTg4MSA3OCA4NTIgMzlUNzgxIC0xMVE3NjUgLTE3IDcyOCAtMTdRNTM3IC0xMyA1MzcgOTRRNTM3IDExMCA1NTIgMTY5VDU2NyAyNDNRNTY3IDI5MiA1MjkgMzA5UTUxNyAzMTYgNTA4IDMxNlQ0NDEgMzE4SDM3NUwzNzQgMzE0UTM3NCAzMTIgMzQzIDE4OVQzMTEgNjRRMzExIDYyIDM1NSA2MkgzODJRNDE0IDYyIDQxNCA0NFE0MTAgNiAzOTcgMkwzOTMgMEwzNTEgMVEzMjUgMiAyMjEgMlExNDcgMiAxMDggMVQ2NSAwUTQ4IDAgNDMgMTVRNDcgNTQgNjAgNjBRNjQgNjIgMTEzIDYySDE2MkwzMDIgNjIzUTMwMiA2MjQgMjU4IDYyNFpNNjg3IDU1NVE2ODcgNjE3IDU4OSA2MjNRNTgxIDYyNCA1MTMgNjI0SDQ1MUw0MjAgNDk4UTQxMyA0NjggNDA1IDQzNlQzOTIgMzg4TDM4OCAzNzFRMzg4IDM2OSA0NTggMzY5UTQ2NCAzNjkgNDg1IDM2OVQ1MTUgMzY5VDU0MSAzNzJUNTcwIDM3N1Q1OTYgMzg2VDYyNCA0MDBRNjQ5IDQxNyA2NjQgNDU3VDY4MyA1MjJUNjg3IDU1NScsXG4gICAgMHgxRDQ3QTogJzM1NCA0NVE0MjkgNDUgNDY3IDkxVDUwNiAxODRRNTA2IDIyNSA0NzcgMjUwUTQ2MSAyNjIgMzg0IDI3OVQyOTQgMzAwUTIzOCAzMTggMjEwIDM2MlQxODIgNDUyUTE4MiA0OTMgMjAyIDU0MFQyNTcgNjIzUTMzOCA3MDIgNDQ5IDcwMlE0OTEgNzAyIDUwMSA3MDFRNTcxIDY5MCA2MTAgNjU0UTYxNCA2NDkgNjE3IDY1MFE2MTggNjUwIDY1MCA2NzVUNjgzIDcwMlE2ODUgNzAzIDY5MiA3MDNRNzE0IDcwMyA3MTQgNjkwUTcxNCA2ODYgNjg3IDU3OFQ2NTggNDY2UTY1MyA0NTggNjI5IDQ1OFE2MDYgNDU4IDYwMiA0NjNRNjAwIDQ2NSA1OTkgNDY2UTU5OSA0NjcgNTk5IDQ2OVQ1OTggNDczUTU5OCA0NzUgNTk5IDQ4N1Q2MDAgNTExUTYwMCA1ODQgNTU3IDYxNFQ0NTQgNjQ1UTM4NiA2NDUgMzQ3IDYwNlQzMDggNTIwUTMwOCA1MDYgMzExIDQ5NlQzMjMgNDc3VDMzOCA0NjRUMzYwIDQ1NFQzODQgNDQ2VDQxMyA0MzlUNDQxIDQzM1E1MjMgNDE2IDU0OSA0MDFRNTgxIDM4NCA2MDIgMzUyUTYzMSAzMDkgNjMxIDI1NFE2MzEgMjE0IDYxNSAxNzBUNTY3IDgzVDQ3OCAxMlQzNDcgLTE2UTMyMiAtMTYgMzAwIC0xNFQyNjEgLThUMjMwIDBUMjA1IDEwVDE4NyAyMFQxNzIgMzBMMTYyIDM3TDEzMCAxMVExMjQgNyAxMTkgM1QxMTAgLTRUMTA0IC05VDEwMCAtMTNUOTYgLTE1VDkzIC0xNlQ5MSAtMTdUODggLTE3SDgyUTc2IC0xNyA3MyAtMTZUNjkgLTE0VDY2IC0xMFQ2MyAtNUw5MCAxMDdROTcgMTMzIDEwNiAxNzBRMTE2IDIxMSAxMjAgMjE5VDEzNiAyMjhIMTQ4UTE2NyAyMjggMTczIDIyN1QxNzkgMjE4UTE3OSAyMTYgMTc2IDIwMFQxNzMgMTY4UTE3MyAxMDIgMjI3IDc0VDM1NCA0NScsXG4gICAgMHgxRDQ3QjogJzQ5OCA2MlE1MTEgNTggNTExIDQzUTUxMSAxMCA0OTQgMUw0OTAgMFE0ODcgMCA0ODIgMFQ0MjQgMVQyNzEgMlEyMDEgMiAxNTcgMlQ5NCAxVDcyIDBINzBRNDYgMCA0NiAxN1E0OSA1NCA2MiA2MEw2NiA2MkgxMzdRMjA4IDYyIDIwOSA2M0wyMTggOThRMjI3IDEzNCAyNDQgMjAzVDI3OCAzMzlMMzQ3IDYxM0gzMDBRMjYyIDYxMiAyNDYgNjExVDE5OCA1OTlUMTQ2IDU2NFExMjggNTQ1IDExNCA1MTJUOTEgNDU0VDc5IDQyNVE3MyA0MTkgNTIgNDE5UTIyIDQxOSAyMiA0MzRRMjIgNDQwIDQxIDQ5OFQ4MCA2MTFMMTAwIDY2NlExMDUgNjczIDExMSA2NzVINDM0UTc1OCA2NzUgNzYyIDY3M1E3NzIgNjY4IDc3MiA2NTdRNzcyIDY1NSA3NTYgNTQ5VDczOCA0MzRRNzM1IDQxOSA3MTEgNDE5SDcwN1E2OTAgNDE5IDY4NiA0MjFRNjc3IDQyNSA2NzcgNDM0UTY3NiA0MzYgNjc4IDQ0OVQ2ODMgNDg1VDY4NiA1MjlRNjg2IDU1MyA2NzkgNTY5VDY2MiA1OTRUNjMxIDYwN1Q1OTMgNjEyVDU0NCA2MTNINTAyTDQzMyAzNDBRNDE4IDI3OSA0MDAgMjA3VDM3NCAxMDBMMzY1IDY1TDM2NCA2Mkg0OTgnLFxuICAgIDB4MUQ0N0M6ICc4NTYgNjg2UTg3NyA2ODYgODc3IDY2OFE4NzcgNjYzIDg3MyA2NDlUODY3IDYzMVE4NjEgNjI0IDgyOCA2MjRRNzYyIDYyMiA3NTcgNjE3UTc1NyA2MTMgNzA1IDQwOVQ2NTEgMjAwUTYyMCAxMTIgNTQwIDQ4VDMyOCAtMTZRMjUxIC0xNiAxOTYgMlQxMTMgNTFUNzUgMTEyVDYzIDE3NlE2MyAyMDIgNzAgMjMyVDExNyA0MjJRMTI5IDQ2OSAxNDEgNTIwVDE2MCA1OThMMTY3IDYyM1ExNjcgNjI0IDEyMyA2MjRIOTZRNzkgNjI0IDczIDYyNlQ2NCA2MzlRNjggNjc4IDgxIDY4NFE4NSA2ODYgMTA0IDY4NlExNTUgNjg0IDI2OCA2ODRRMzQwIDY4NCAzNzcgNjg1VDQxOCA2ODZRNDQxIDY4NiA0NDEgNjY4UTQzNyA2MzIgNDI1IDYyNlE0MjEgNjI0IDM3MSA2MjRIMzIyTDI3MCA0MTVRMjI0IDIzMiAyMTcgMTk4VDIwOSAxNDFRMjA5IDQ1IDMzNiA0NVEzNzIgNDUgNDA2IDUyVDQ3NSA3N1Q1NDAgMTI4VDU4NSAyMTFMNTkwIDIyOVE1OTQgMjQ3IDYwMSAyNzRUNjE3IDMzNlQ2MzYgNDA5VDY1NCA0ODJUNjcwIDU0N1Q2ODEgNTk1VDY4NiA2MThRNjg2IDYyMCA2ODUgNjIwSDY4M1E2ODEgNjIxIDY3OCA2MjFUNjcxIDYyMlE2NjAgNjIyIDYzMCA2MjRRNjE2IDYyNCA2MTAgNjI0VDU5OCA2MjZUNTg5IDYzMFQ1ODcgNjQwUTU4NyA2NDcgNTkwIDY1OVE1OTQgNjc3IDU5OCA2ODFUNjEzIDY4NlE2MTggNjg2IDY1MyA2ODVUNzQwIDY4NFE3NzUgNjg0IDgwMSA2ODRUODQwIDY4NVQ4NTYgNjg2JyxcbiAgICAweDFENDdEOiAnNDAxIDY4NlE0MTUgNjgwIDQxNSA2NjhRNDE1IDY1MSA0MDQgNjI5UTM5OCA2MjQgMzU2IDYyNFEzMTggNjI0IDMxOCA2MjNRMzE4IDYyMCAzMzcgNTA4VDM3NyAyODRMMzk3IDE3NEw0NzIgMjg1UTU0OCAzOTYgNjIzIDUwN1Q2OTkgNjIwUTY5OCA2MjEgNjUyIDYyNFE2MzQgNjI0IDYyNyA2MjdUNjE5IDY0MVE2MTkgNjQ4IDYyMiA2NThRNjI3IDY3NyA2MzEgNjgxVDY1MCA2ODZRNjU0IDY4NiA2ODYgNjg1VDc2NiA2ODRRNzk0IDY4NCA4MjMgNjg0VDg1OCA2ODVRODc0IDY4NSA4NzggNjgzVDg4NiA2NzFRODg2IDY2NyA4ODIgNjUxUTg3NyA2MzIgODczIDYyOFQ4NTAgNjI0UTgwMCA2MjQgNzc5IDYxN1E3NzQgNjE3IDc3MCA2MTNRNzY3IDYxMCA1NjAgMzA0VDM1MCAtNVEzNDYgLTkgMzMyIC0xNkgzMDZIMjkxUTI3MCAtMTYgMjY3IC0yUTI2NyAtMSAyNjAgMzdUMjM4IDE2MVQyMTAgMzEzTDE1NiA2MjRIMTE2SDk0UTYyIDYyNCA2MiA2NDJRNjYgNjc4IDc4IDY4NFE4MiA2ODYgOTkgNjg2UTE0NCA2ODQgMjQ2IDY4NFEzMzAgNjg0IDM2OCA2ODVMNDAxIDY4NicsXG4gICAgMHgxRDQ3RTogJzExMSA2MjRRMTA5IDYyNCAxMDIgNjI0VDkxIDYyM1E2MSA2MjMgNjEgNjQwUTYxIDY2MCA3MCA2NzhRNzggNjg2IDk4IDY4NlExNDAgNjg0IDIzOSA2ODRRMjc3IDY4NCAzMDkgNjg0VDM2MCA2ODVUMzgzIDY4NkgzODVRNDA3IDY4NiA0MDcgNjY4UTQwNCA2MzQgMzkxIDYyNlEzODcgNjI0IDM0OCA2MjRRMzA3IDYyNCAzMDcgNjIyUTMwNyA2MTggMzMyIDQwOVEzNTkgMTk4IDM1OSAxOTVMNTcwIDUzMkw1NjQgNTc2TDU1OCA2MjJWNjI0SDUyMkg1MDRRNDcyIDYyNCA0NzIgNjQxUTQ3NSA2NzggNDg4IDY4NEw0OTMgNjg2TDUyOSA2ODVRNTUxIDY4NCA2NDUgNjg0UTcxNiA2ODQgNzUzIDY4NVQ3OTUgNjg2UTgxOCA2ODYgODE4IDY2OVE4MTUgNjMyIDgwMiA2MjZRNzk4IDYyNCA3NTkgNjI0UTcxOCA2MjQgNzE4IDYyMlE3MTggNjE1IDc0MyA0MTBRNzcwIDE5OSA3NzAgMTk2UTc3MCAxOTUgODA2IDI1M1Q5MDMgNDA2UTEwMzUgNjE4IDEwMzUgNjE5UTEwMjUgNjI0IDk2OCA2MjRROTQzIDYyNCA5NDMgNjQxUTk0MyA2NDggOTQ2IDY1OVE5NTAgNjc1IDk1MiA2NzlUOTYzIDY4Nkw5OTggNjg1UTEwMjAgNjg0IDEwOTMgNjg0UTExMTMgNjg0IDExMzkgNjg1VDExNzMgNjg2UTEyMDcgNjg2IDEyMDcgNjY5UTEyMDcgNjY0IDEyMDQgNjUyUTExOTkgNjMxIDExOTQgNjI4VDExNjQgNjI0UTExMTMgNjIyIDExMDEgNjE1UTEwOTggNjEyIDkwNSAzMDVRNzE1IC0xIDcwOSAtN1E2OTkgLTE3IDY3MyAtMTdRNjQ1IC0xNyA2MzkgLThMNTgxIDQ0MVE1ODEgNDQ0IDQ0MiAyMjFRMzMxIDQ0IDMxNCAxOFQyODggLTE0UTI3OSAtMTcgMjYzIC0xN0gyNTRRMjI5IC0xNyAyMjcgLTVRMjI1IDIgMTg2IDMxMUwxNDcgNjIwVjYyNEgxMTEnLFxuICAgIDB4MUQ0N0Y6ICc5MzEgNjg2UTk1MyA2ODYgOTUzIDY3MFE5NTMgNjUwIDk0NCA2MzJROTM2IDYyNCA5MjQgNjI0SDkxNFE4MjMgNjI0IDgwMyA2MTFRODAwIDYwOSA2OTYgNTAzVDU5MSAzOTZRNTkxIDM5NCA2NjcgMjI5TDc0MyA2Mkg3ODdIODE0UTg0NiA2MiA4NDYgNDRRODQzIDcgODI5IDJRODI1IDAgODE3IDBRODEzIDAgNzc1IDFUNjY0IDJRNTkwIDIgNTUxIDFUNTA4IDBINTA3UTQ4NCAwIDQ4NCAxOFE0ODQgMTkgNDg4IDM3UTQ5MiA1NiA0OTcgNThUNTM0IDYyTDU2NiA2M1E1NjcgNjQgNTIwIDE2OVQ0NzEgMjc0UTQ2OSAyNzQgMzY5IDE3MlQyNjggNjdMMzE1IDYyUTMyMCA2MiAzMjggNjJMMzM1IDYxUTM0NyA1OCAzNDcgNDRRMzQ0IDEwIDMzMSAyTDMyNiAwTDI4NyAxUTI2MyAyIDE3NyAyUTk1IDIgNzggMUw1MyAwUTM4IDYgMzggMTdRMzggNDAgNTAgNTdRNTYgNjIgNzggNjJRMTY5IDYyIDE4OCA3NVExOTQgNzcgNDM1IDMyNEw0NDQgMzM0TDQzOSAzNDdRNDM3IDM1MSAzNzMgNDkyTDMxMyA2MjRIMjY4SDI0NlEyMjAgNjI0IDIxMiA2MzJRMjEwIDYzNiAyMTAgNjQyUTIxMCA2NTUgMjE1IDY2OVQyMjcgNjg0UTIzMCA2ODYgMjQ3IDY4NlEyOTUgNjg0IDM5OCA2ODRRNDM4IDY4NCA0NzIgNjg0VDUyNyA2ODVUNTUxIDY4NlE1NjcgNjg2IDU3MiA2NzFRNTcyIDY2NyA1NjggNjUxUTU2MyA2MzEgNTU4IDYyOFQ1MjMgNjI0VDQ5MiA2MjNINDg4TDUyNiA1NDBRNTYzIDQ1NyA1NjQgNDU3UTU2NCA0NTYgNTc0IDQ2NlQ2MDQgNDk2VDY0NSA1MzdMNzI0IDYxOVE3MTYgNjIyIDY3NyA2MjRINjczUTY0NSA2MjQgNjQ1IDY0MFE2NDUgNjYwIDY1NCA2NzhRNjU5IDY4MyA2NjYgNjg2TDcwNCA2ODVRNzI4IDY4NCA4MTMgNjg0UTg0NyA2ODQgODczIDY4NFQ5MTMgNjg1VDkzMSA2ODYnLFxuICAgIDB4MUQ0ODA6ICc5NyA2MjRINzNRNDAgNjI0IDQwIDY0MFE0MCA2NjAgNDkgNjc4UTU3IDY4NiA3NyA2ODZRMTIyIDY4NCAyMjggNjg0UTI2OSA2ODQgMzA0IDY4NFQzNjAgNjg1VDM4NSA2ODZRNDA2IDY4NiA0MDYgNjY4UTQwNiA2NjIgNDAzIDY1M1EzOTggNjMxIDM5MyA2MjhUMzYxIDYyNEgzNTNRMzIxIDYyNCAzMjEgNjIzVDM3NiA0OTFUNDMyIDM2MEw0NDggMzc3UTQ2NSAzOTQgNDkzIDQyNFQ1NTMgNDkwTDY3MyA2MjBRNjYyIDYyNCA2MzAgNjI0UTYwNiA2MjQgNjA2IDY0MFE2MDggNjc4IDYyMyA2ODRRNjI3IDY4NiA2MzQgNjg2UTYzOCA2ODYgNjcxIDY4NVQ3NTUgNjg0UTc3NyA2ODQgODA1IDY4NVQ4NDEgNjg2UTg2MSA2ODYgODY4IDY4M1Q4NzYgNjY5UTg3NiA2NjQgODczIDY1MlE4NjggNjMxIDg2MyA2MjhUODI5IDYyNFE3NjQgNjIyIDc0NyA2MTFRNzI3IDU5MCA1OTAgNDQxTDQzNyAyNzVMNDExIDE3MFEzODUgNjUgMzg0IDY0UTM4NCA2MiA0MjkgNjJINDUzUTQ3MyA2MiA0NzggNjBUNDg3IDQ4UTQ4OCA0NCA0ODQgMjlRNDc5IDYgNDczIDNRNDY4IDAgNDU0IDBRNDUwIDAgNDM2IDBUMzg2IDFUMjk0IDJRMjIwIDIgMTgxIDFUMTM4IDBRMTIxIDAgMTE2IDE1UTEyMCA1NCAxMzMgNjBRMTM3IDYyIDE4NyA2MkgyMzZMMjg5IDI3NUwxNDIgNjI0SDk3JyxcbiAgICAweDFENDgxOiAnMjIzIDQzMFExOTIgNDMwIDE5MiA0NDhRMTkyIDQ1MCAyMjUgNTYxVDI2MSA2NzdRMjY1IDY4MyAyNzAgNjg0UTI3MyA2ODYgNTM0IDY4NlE3OTYgNjg2IDc5NyA2ODVRODA1IDY4MiA4MDUgNjczUTgwNSA2NjggODA0IDY2MVQ4MDAgNjQ4VDc5OCA2NDFRNzk2IDYzNyA1MzEgMzUyTDI2NiA2N0wzMjkgNjZIMzY0UTQxMiA2NiA0NDYgNzBUNTIzIDk2VDU5NiAxNTdRNjE3IDE4NiA2MzAgMjIwVDY0OSAyNzNUNjYzIDI5N1E2NjcgMjk5IDY4NCAyOTlINjg4UTcxNSAyOTkgNzE1IDI4MVE3MTUgMjc4IDY3MyAxNDVUNjI4IDhRNjI2IDQgNjE3IDBIMzQ4UTI4OSAwIDIyMSAwVDEzOSAtMVExMTIgLTEgOTkgLTFUNzggMVQ2OSA1VDY4IDEyUTY4IDE2IDcxIDMxVDc3IDQ5TDg0IDU3UTkxIDY1IDEwNCA3OVQxMzMgMTEwVDE3MCAxNTFUMjEzIDE5Nkw2MTAgNjI0SDU0MFE1MzMgNjI0IDUxNCA2MjRUNDg4IDYyNFQ0NjcgNjIzVDQ0MyA2MjBUNDIyIDYxNlQzOTggNjA5VDM3MyA2MDBRMjkyIDU2MCAyNTUgNDQ5UTI1MSA0MzYgMjQ2IDQzM1QyMjMgNDMwJyxcbiAgICAweDFENDgyOiAnMjIyIC04UTE0MCAtOCA4OSAzNFQzOCAxNThRMzggMTkxIDQ4IDIyN1E3MiAzMjkgMTUxIDM5MFQzMjcgNDUyUTM2MSA0NTIgMzg1IDQ0M1Q0MjEgNDI1VDQzMyA0MTZINDM0TDQ0MSA0MjFRNDQ4IDQyNiA0NjAgNDMwVDQ4NiA0MzVRNTA5IDQzNSA1MjMgNDIyVDUzOCAzODZRNTM4IDM4MCA1MjIgMzE1VDQ4OCAxNzlUNDY3IDkzUTQ2NiA4NyA0NjYgNzJRNDY2IDQyIDQ4MyA0MlE1MDUgNDIgNTIxIDc1UTUzMSA5NCA1NDEgMTM0UTU0NiAxNTUgNTUwIDE1OFQ1NzEgMTYySDU3Nkg1ODdRNjA3IDE2MiA2MDcgMTQ4UTYwNiAxNDIgNjA0IDEzMlQ1OTAgOTRUNTY2IDQ3VDUyOCA5VDQ3NCAtOFEzOTYgLTggMzU4IDQwUTI5NSAtOCAyMjIgLThaTTQwNCAzNTFRMzgzIDQwMSAzMjQgNDAxUTMwMCA0MDEgMjcwIDM4NVQyMjEgMzMwUTIwNiAyOTYgMTg2IDIyMFExNjYgMTM2IDE2NiAxMDZRMTY2IDcyIDE4NCA1OFQyMjggNDNRMjU2IDQzIDI4NCA1N1QzMjggODRUMzQzIDEwM1EzNDMgMTA2IDM3NCAyMjhMNDA0IDM1MScsXG4gICAgMHgxRDQ4MzogJzIyMCAtOFExNDIgLTggOTQgMzVUNDUgMTU1VjE2N1E0NSAxODcgNTIgMjE4VDEwNCA0MjZMMTUzIDYyMkgxNDlRMTQ4IDYyMiAxNDQgNjIyVDEzNCA2MjNUMTIyIDYyNFQxMTEgNjI0VDEwMSA2MjRUOTYgNjI1UTg0IDYyOCA4NCA2NDJRODQgNjQ3IDg4IDY2MVQ5NCA2NzlROTggNjg0IDEwOSA2ODVUMTg1IDY5MFEyNTggNjk0IDI3MiA2OTRRMjg5IDY5NCAyOTMgNjc5UTI5MyA2NzYgMjYzIDU1M0wyMzIgNDI5TDI0NCA0MzRRMjU2IDQ0MCAyODEgNDQ2VDMzMSA0NTJRNDE3IDQ1MiA0NjUgNDA3VDUxMyAyODVRNTEzIDIzNSA0OTQgMTg0VDQzOSA5MFQzNDYgMjBUMjIwIC04Wk0zODUgMzM3UTM4NSA0MDAgMzE4IDQwMFEyNjkgNDAwIDIyNiAzNjBRMjE0IDM0OSAyMTEgMzQxVDE5MSAyNjhRMTYyIDE0OSAxNjIgMTEzUTE2MiA0NCAyMjYgNDRRMjY5IDQ0IDI5OSA3NlQzMzkgMTM1VDM2MiAyMTVRMzY0IDIyMiAzNjUgMjI2UTM4NSAzMDMgMzg1IDMzNycsXG4gICAgMHgxRDQ4NDogJzM2MiAzMjVRMzYyIDM0NCAzNzEgMzYxVDM5MCAzODZMMzk5IDM5NFEzOTAgNDAxIDM1NSA0MDFRMjc2IDQwMSAyMzEgMzM4UTIwNyAzMDEgMTg5IDIzMFQxNzAgMTIyUTE3MCA0MyAyNjQgNDNRMzkyIDQzIDQ1NyAxMDVRNDcyIDEyMCA0ODAgMTE3UTQ4NiAxMTQgNDk3IDEwMlQ1MDkgODNRNTA5IDc5IDUwMiA3MFQ0NzcgNDdUNDMyIDIxVDM2MCAxVDI1OSAtOFExOTQgLTggMTQ4IDlUODAgNTRUNDkgMTA5VDQwIDE2N1E0MCAyODAgMTI5IDM2NVQzNTIgNDUxUTM5MCA0NTEgMzk2IDQ1MFE0NDggNDQyIDQ3MyA0MTZUNDk5IDM1OFQ0NzcgMzAyVDQyMSAyNzRINDE3UTM5MyAyNzQgMzc4IDI4OFQzNjIgMzI1JyxcbiAgICAweDFENDg1OiAnMjIyIC04UTE0MCAtOCA4OSAzNFQzOCAxNThRMzggMjIwIDY4IDI4NVQxNTEgMzkxUTIzMCA0NTIgMzI5IDQ1MlEzODIgNDUyIDQxNiA0MjhMNDIyIDQyNFE0MjMgNDI0IDQ0NyA1MjNMNDcyIDYyMkg0NjhRNDY3IDYyMiA0NjMgNjIyVDQ1MyA2MjNUNDQxIDYyNFQ0MzAgNjI0VDQyMCA2MjRUNDE1IDYyNVE0MDMgNjI4IDQwMyA2NDJRNDAzIDY0NyA0MDcgNjYxVDQxMyA2NzlRNDE3IDY4NCA0MjggNjg1VDUwNCA2OTBRNTc3IDY5NCA1OTEgNjk0UTYwOCA2OTQgNjEyIDY3OUw0NjcgOTFRNDY2IDg3IDQ2NiA3MlE0NjYgNDMgNDgzIDQzUTUxOCA0MyA1NDEgMTM0UTU0NiAxNTUgNTUwIDE1OFQ1NzEgMTYySDU3Nkg1ODdRNjA3IDE2MiA2MDcgMTQ4UTYwNiAxNDIgNjA0IDEzMlQ1OTAgOTRUNTY2IDQ3VDUyOCA5VDQ3NCAtOFEzOTYgLTggMzU4IDQwUTI5NSAtOCAyMjIgLThaTTQwNCAzNTFRMzgzIDQwMSAzMjQgNDAxUTMwMCA0MDEgMjcwIDM4NVQyMjEgMzMwUTIwNiAyOTYgMTg2IDIyMFExNjYgMTM2IDE2NiAxMDZRMTY2IDcyIDE4NCA1OFQyMjggNDNRMjU2IDQzIDI4NCA1N1QzMjggODRUMzQzIDEwM1EzNDMgMTA2IDM3NCAyMjhMNDA0IDM1MScsXG4gICAgMHgxRDQ4NjogJzI2MCAtOFExOTYgLTggMTUxIDlUODMgNTRUNTIgMTExVDQyIDE2OVE0MiAxODggNDQgMjEwUTUwIDI0MCA1OCAyNjZRMTI3IDQzNCAzMzUgNDUxTDMzOCA0NTJRMzQyIDQ1MiAzNDUgNDUyUTM0NyA0NTIgMzUzIDQ1MlQzNjMgNDUxUTQyNiA0NTEgNDY0IDQyNFQ1MDIgMzUyUTUwMiAyODkgNDQyIDI1MFEzODEgMjExIDIyMiAyMTFIMTg0UTE4NCAyMTAgMTgxIDE5NlQxNzUgMTYyVDE3MSAxMjZRMTcxIDQzIDI2NCA0M1EzOTEgNDMgNDU3IDEwNVE0NzIgMTIwIDQ4MCAxMTdRNDg2IDExNCA0OTcgMTAyVDUwOSA4M1E1MDkgNzkgNTAyIDcwVDQ3NyA0N1Q0MzIgMjFUMzYwIDFUMjYwIC04Wk0yMzcgMjYyUTQyNyAyNjYgNDI3IDM0OVE0MjcgMzY4IDQwOSAzODRUMzU0IDQwMVEzMTYgNDAxIDI4NyAzODhUMjQyIDM1NFQyMTYgMzE0VDIwMiAyNzhMMTk3IDI2M1ExOTcgMjYyIDIzNyAyNjInLFxuICAgIDB4MUQ0ODc6ICc1ODQgNDQ0UTU5NyA0MzkgNTk3IDQyNlE1OTcgNDA5IDU4NiAzODdRNTgwIDM4MiA1MDUgMzgySDQzNFYzODBRNDMyIDM3OCA0MjEgMzE0VDM5NSAxNjJUMzY4IDMwUTMyNCAtMTY0IDIwMyAtMTk5UTE5NCAtMjAxIDE3NSAtMjAxUTEyMyAtMjAxIDk0IC0xNzdUNjQgLTExN1Q4OCAtNThUMTQ1IC0zM1ExNjkgLTMzIDE4NCAtNDdUMjAwIC04NFEyMDAgLTEyMiAxNjYgLTE1MEwxNzQgLTE1MUgxODVRMjAyIC0xNDggMjE3IC0xMTJRMjIyIC05NCAyNDAgOVEyNDYgNDAgMjYyIDEzMlQyOTMgMzAzVDMwNyAzODJIMjQ3SDIxMFExOTAgMzgyIDE4MiAzODVUMTczIDQwMFExNzcgNDM2IDE4OSA0NDJRMTkzIDQ0NCAyNTYgNDQ0SDMxOEwzMTkgNDQ2UTMzNyA1NjUgMzU1IDYwMlEzNzMgNjQwIDQwNCA2NjRUNDU4IDY5NFQ1MDMgNzAxUTU2OSA3MDEgNTk2IDY3NlQ2MjQgNjE3UTYyNCA1ODEgNTk5IDU1N1Q1NDQgNTMzUTUyMCA1MzMgNTA0IDU0N1Q0ODggNTg1UTQ4OCA1OTYgNDkxIDYwNlQ0OTkgNjI0VDUwOCA2MzdUNTE2IDY0Nkw1MjAgNjUwUTUxNSA2NTAgNTA5IDY1MVE0NTkgNjUxIDQ1OSA1NjFWNTU0TDQ1OCA1MThMNDUyIDQ4NFE0NDYgNDQ4IDQ0NSA0NDdWNDQ0SDU4NCcsXG4gICAgMHgxRDQ4ODogJzIyNyAwUTE0MiAwIDkzIDQzVDQzIDE2NlE0MyAyMDcgNTggMjUyVDEwNCAzNDFUMTg4IDQxNFQzMTAgNDUxTDMxMyA0NTJRMzE2IDQ1MiAzMTkgNDUyUTMyMSA0NTIgMzI2IDQ1MlQzMzUgNDUxUTM2NyA0NTEgMzkwIDQ0M1Q0MjUgNDI1TDQzNiA0MTZMNDQzIDQyMVE0NTAgNDI2IDQ2MiA0MzBUNDg4IDQzNVE1MTEgNDM1IDUyNSA0MjJUNTQwIDM4NlE1NDAgMzc4IDQ4MyAxNTFUNDI0IC04MlE0MDEgLTEzOSAzMzUgLTE3MFQxNjcgLTIwMlE3MiAtMjAyIDM2IC0xODNUMCAtMTI1UTAgLTkwIDI0IC02N1Q4MSAtNDNRMTAzIC00MyAxMTkgLTU2VDEzNiAtOTlRMTMzIC0xMjQgMTE0IC0xNDlMMTIzIC0xNTBIMTgzUTIyMiAtMTUwIDI1NCAtMTI3VDI5OSAtNzRRMzAwIC03MSAzMDYgLTQ3VDMxOCAtMVQzMjQgMjNRMzIzIDIzIDMxMCAxOFQyNzQgNlQyMjcgMFpNNDA3IDM1M1E0MDYgMzU0IDQwNCAzNThUNDAwIDM2NVQzOTUgMzcxVDM4OCAzNzlUMzgxIDM4NVQzNzEgMzkxVDM2MCAzOTZUMzQ2IDQwMFQzMjkgNDAxUTMwMCA0MDEgMjc3IDM4OVQyNDAgMzU1VDIxOSAzMTdUMjA1IDI4MFExNzEgMTQ4IDE3MSAxMDlRMTcxIDc3IDE5MCA2NFQyMzUgNTFUMjk2IDY3UTMyMiA4MiAzMzcgOThMMzQ1IDEwNkw0MDcgMzUzJyxcbiAgICAweDFENDg5OiAnNDc3IDU2UTQ3NyA0OCA0NzkgNDZUNDkwIDQzUTUyMiA0NSA1NDQgNzVUNTc3IDE0MFE1ODIgMTU2IDU4NSAxNTlUNjA1IDE2Mkg2MTFINjIyUTY0MiAxNjIgNjQyIDE0OFE2NDIgMTM4IDYzMiAxMTRUNjAyIDYyVDU1MCAxM1Q0NzggLThRNDI5IC04IDM5NCAxN1QzNTggODNRMzU4IDk1IDM5NSAxOTlUNDMzIDM1MFE0MzMgNDAwIDM5NCA0MDBIMzg4SDM4M1EzMzUgNDAwIDI5MSAzNjNRMjU2IDMzMiAyMzYgMjk4UTIzMyAyOTMgMjAyIDE3MFQxNjkgNDBRMTYwIDE4IDE0MSA1VDk5IC04UTcwIC04IDU4IDlUNDUgMzlRNDUgNTEgMTE2IDMzNkwxODggNjIySDE4NFExODMgNjIyIDE3OSA2MjJUMTY5IDYyM1QxNTcgNjI0VDE0NiA2MjRUMTM2IDYyNFQxMzEgNjI1UTExOSA2MjggMTE5IDY0MlExMTkgNjQ3IDEyMyA2NjFUMTI5IDY3OVExMzMgNjg0IDE0NCA2ODVUMjIwIDY5MFEyOTMgNjk0IDMwNyA2OTRRMzI0IDY5NCAzMjggNjc5UTMyOCA2NzIgMjk0IDU0MFEyODYgNTA3IDI3OCA0NzNUMjY0IDQyMEwyNjAgNDAzUTI2MCA0MDAgMjY5IDQwOFEzMjcgNDUxIDM5MyA0NTFINDAxSDQxMFE0MjUgNDUxIDQzOSA0NTBUNDc2IDQ0MlQ1MTUgNDI0VDU0NCAzOTFUNTU2IDMzN1E1NTYgMjg2IDUxNyAxNzlUNDc3IDU2JyxcbiAgICAweDFENDhBOiAnMjA1IDYxNVEyMDUgNjQ2IDIyOSA2NzBUMjgzIDY5NFEzMTAgNjk0IDMyNCA2NzlUMzM5IDY0MVEzMzkgNjEwIDMxNSA1ODZUMjU4IDU2MlEyMzUgNTYyIDIyMCA1NzdUMjA1IDYxNVpNMjQgMjk2UTI0IDMwNSAzNCAzMjhUNjMgMzgwVDExNSA0MzBUMTg3IDQ1MlEyMDUgNDUyIDIyMyA0NDhUMjYyIDQzNVQyOTUgNDA2VDMwOCAzNjBRMzA4IDM0NSAyODcgMjkwVDI0MCAxNzBUMjA3IDg3UTIwMiA2NyAyMDIgNTdRMjAyIDQyIDIxNSA0MlEyMzUgNDIgMjU3IDY0UTI4OCA5MiAzMDIgMTQwUTMwNyAxNTYgMzEwIDE1OVQzMzAgMTYySDMzNkgzNDdRMzY3IDE2MiAzNjcgMTQ4UTM2NyAxNDAgMzU3IDExN1QzMjkgNjVUMjc2IDE0VDIwMSAtOFExNTggLTggMTIxIDE1VDgzIDg0UTgzIDEwNCAxMzMgMjI5VDE4NCAzNThRMTg5IDM3NiAxODkgMzg4UTE4OSA0MDIgMTc3IDQwMlExNTYgNDAyIDEzNCAzODBRMTAzIDM1MiA4OSAzMDRRODQgMjg4IDgxIDI4NVQ2MSAyODJINTVINDRRMjQgMjgyIDI0IDI5NicsXG4gICAgMHgxRDQ4QjogJzMyMSA2MTZRMzIxIDY0OCAzNDYgNjcxVDQwMCA2OTRRNDI1IDY5NCA0NDAgNjgwVDQ1NiA2NDBRNDU2IDYwOSA0MzEgNTg2VDM3NiA1NjJRMzUzIDU2MiAzMzcgNTc3VDMyMSA2MTZaTTI5NyAzNjBUMjk3IDM3M1QyOTQgMzkyVDI4OCA0MDBUMjc4IDQwMUgyNzZRMjQxIDM5OSAyMTAgMzcyVDE1OCAzMDNRMTUxIDI4NyAxNDggMjg1VDEyOSAyODJIMTIzSDExNlExMDIgMjgyIDk3IDI4NFQ5MiAyOThROTYgMzMxIDE1MyAzOTFUMjc5IDQ1MVEzNTcgNDUxIDM4OCA0MjJUNDIwIDM1NFYzMzlMMzcxIDE0MlEzNjMgMTExIDM1MyA3MVQzMzkgMTNUMzI5IC0zMFQzMTggLTY0VDMwOCAtODhUMjk2IC0xMDlUMjgzIC0xMjVUMjY0IC0xNDJRMTkwIC0yMDIgODggLTIwMlE0NCAtMjAyIDE2IC0xODFULTEyIC0xMjVRLTEyIC05MyAxMSAtNjhUNjggLTQzUTkyIC00MyAxMDggLTU4VDEyNCAtOTNRMTI0IC0xMjEgMTA2IC0xNDRRMTAxIC0xNTAgMTAzIC0xNTBRMTIwIC0xNTAgMTQ3IC0xMjhUMTkxIC02NFExOTQgLTU3IDI0MiAxMzZUMjk0IDM0NVEyOTcgMzYwIDI5NyAzNzMnLFxuICAgIDB4MUQ0OEM6ICc5OSAtOFE3MSAtOCA1OCA5VDQ1IDM5UTQ1IDUxIDExNiAzMzZMMTg4IDYyMkgxODRRMTgzIDYyMiAxNzkgNjIyVDE2OSA2MjNUMTU3IDYyNFQxNDYgNjI0VDEzNiA2MjRUMTMxIDYyNVExMTkgNjI4IDExOSA2NDJRMTE5IDY0NyAxMjMgNjYxVDEyOSA2NzlRMTMzIDY4NCAxNDQgNjg1VDIyMCA2OTBRMjkzIDY5NCAzMDcgNjk0UTMyNCA2OTQgMzI4IDY3OVEzMjggNjc0IDI4MCA0ODJRMjMxIDI5MCAyMzEgMjg3UTIzMSAyODUgMjM0IDI4NlEyNTkgMzAyIDI5NCAzMzRUMzU2IDM5MFQ0MjAgNDMzVDQ5MyA0NTJRNTI4IDQ1MiA1NDYgNDI3VDU2NCAzNjRRNTY0IDMwOCA1MzggMjgyVDQ4MCAyNTZRNDU2IDI1NiA0NDEgMjY5VDQyNSAzMDhRNDI1IDMzOSA0NDQgMzU5VDQ4MyAzODRMNTAyIDM4OVE1MDIgMzk1IDQ5NiAzOThRNDkzIDQwMCA0ODMgNDAwUTQ2NSA0MDAgNDQ5IDM5NVQ0MDkgMzc0VDM3MyAzNDdUMzIzIDMwNVQyNjggMjU3UTI3NCAyNTYgMjgyIDI1NlEzMTIgMjUxIDMyOSAyNDdUMzcxIDIzMlQ0MTEgMjAyUTQzMSAxODEgNDMxIDE0NlE0MzEgMTMyIDQyNyAxMTBUNDIyIDczUTQyMiA0NCA0NDAgNDRINDQyUTQ2MiA0NCA0NzggNjRUNTAyIDEwMlQ1MTQgMTQxUTUxOCAxNTcgNTIyIDE1OVQ1NDcgMTYySDU1OFE1NzggMTYyIDU3OCAxNDhRNTc4IDExOCA1MzcgNTZUNDQwIC03SDQzMlEzNzQgLTcgMzM3IDIxVDI5OSA5NFEyOTkgMTAzIDMwMSAxMTZUMzA0IDEzOVEzMDQgMTY0IDI4MSAxODFUMjM1IDIwMkwyMTIgMjA2SDIxMVExNzYgNDcgMTYwIDI0UTEzNyAtOCA5OSAtOCcsXG4gICAgMHgxRDQ4RDogJzE1NyAtOFExMzggLTggMTE4IC00VDc3IDExVDQxIDQyVDI3IDkxVjEwNkwxNTYgNjIySDE1MlExNTEgNjIyIDE0NyA2MjJUMTM3IDYyM1QxMjUgNjI0VDExNCA2MjRUMTA0IDYyNFQ5OSA2MjVRODcgNjI4IDg3IDY0MlE4NyA2NDcgOTEgNjYxVDk3IDY3OVExMDEgNjg0IDExMiA2ODVUMTg4IDY5MFEyNjEgNjk0IDI3NSA2OTRRMjkyIDY5NCAyOTYgNjc5TDE1MSA5MVExNTAgODUgMTUwIDcxUTE1MCA0MiAxNjcgNDJRMTg2IDQyIDIwNSA3NVEyMTYgOTYgMjI1IDEzNFEyMzAgMTU1IDIzNCAxNThUMjU1IDE2MkgyNjBIMjcxUTI5MSAxNjIgMjkxIDE0OFEyOTAgMTQ1IDI4OSAxNDBUMjgzIDExOFQyNzEgODdUMjU0IDU0VDIyOSAyM1QxOTcgMVQxNTcgLTgnLFxuICAgIDB4MUQ0OEU6ICcyNCAyOTZRMjUgMzAyIDI3IDMxMlQ0MSAzNTBUNjUgMzk3VDEwNCA0MzVUMTU5IDQ1MlEyMDMgNDUyIDIzNCA0MzVRMjY4IDQxOSAyODUgMzg0TDI5NSAzOTJRMzA1IDQwMSAzMTcgNDEwVDM0OSA0MjlUMzg5IDQ0NVE0MTEgNDUxIDQ0NiA0NTFRNTYwIDQ1MSA1OTIgMzgzUTU5MyAzODAgNTk0IDM3OUw1OTUgMzc1TDYwNCAzODRRNjc1IDQ1MiA3NjIgNDUyUTg5MyA0NTIgOTE2IDM2N1E5MTggMzU2IDkxOCAzMzRROTE4IDI4NSA4ODEgMTgzVDg0MSA2NlE4MzggNDMgODQ5IDQzUTg3NiA0MyA5MDEgNjlUOTQwIDEzOFE5NDUgMTU2IDk0OSAxNTlUOTY5IDE2Mkg5NzVIOTg2UTEwMDYgMTYyIDEwMDYgMTQ4UTEwMDYgMTM4IDk5NiAxMTVUOTY2IDYzVDkxNCAxM1Q4NDEgLThRNzk0IC04IDc1OCAxNlQ3MjEgODJRNzIxIDk2IDc1OCAxOTlUNzk2IDM1MVE3OTYgNDAxIDc1MyA0MDFRNzAyIDQwMSA2NjIgMzY5VDU5OSAyOThRNTk3IDI5NCA1NjcgMTcyVDUzMyA0MFE1MjUgMjIgNTA2IDdUNDYyIC04UTQzNSAtOCA0MjIgOFQ0MDkgMzlRNDA5IDQ4IDQyNSAxMTRUNDU4IDI0OFQ0NzYgMzIwUTQ3OCAzMzAgNDc4IDM0OFQ0NzQgMzc3VDQ2MiAzOTNUNDQ5IDM5OVQ0MzMgNDAwSDQyOFEzODAgNDAwIDMzNiAzNjNRMzAxIDMzMiAyODEgMjk4UTI3OCAyOTMgMjQ3IDE3MFQyMTQgNDBRMjA2IDIyIDE4NyA3VDE0MyAtOFQxMDQgN1Q5MCAzOVE5MCA0NyAxMDggMTI0VDE0NiAyNzRMMTY0IDM0N1ExNjYgMzU1IDE2NiAzNzJRMTY2IDQwMSAxNDkgNDAxUTEyOSA0MDEgMTE1IDM3OVQ4OSAzMDZRODQgMjg4IDgwIDI4NVQ1NSAyODJINDRRMjQgMjgyIDI0IDI5NicsXG4gICAgMHgxRDQ4RjogJzI0IDI5NlEyNSAzMDIgMjcgMzEyVDQxIDM1MFQ2NSAzOTdUMTA0IDQzNVQxNTkgNDUyUTIwMyA0NTIgMjM0IDQzNVEyNjggNDE5IDI4NSAzODRMMjkzIDM5MVEzNjMgNDUyIDQ1NCA0NTJRNTc1IDQ0NiA1OTcgMzY3UTU5OSAzNTYgNTk5IDMzNFE1OTkgMjg1IDU2MiAxODNUNTIyIDY2UTUxOSA0MyA1MzAgNDNRNTU3IDQzIDU4MiA2OVQ2MjEgMTM4UTYyNiAxNTYgNjMwIDE1OVQ2NTAgMTYySDY1Nkg2NjdRNjg3IDE2MiA2ODcgMTQ4UTY4NyAxMzggNjc3IDExNVQ2NDcgNjNUNTk1IDEzVDUyMiAtOFE0NzUgLTggNDM5IDE2VDQwMiA4MlE0MDIgOTYgNDM5IDE5OVQ0NzcgMzUxUTQ3NyA0MDEgNDM0IDQwMVE0MjEgNDAxIDQwOSAzOThRMzQxIDM4OCAyODUgMzA1TDI3OCAyOTVMMjQ3IDE3MFEyMTYgNDYgMjE0IDQwUTIwNiAyMiAxODcgN1QxNDMgLThUMTA0IDdUOTAgMzlROTAgNDcgMTA4IDEyNFQxNDYgMjc0TDE2NCAzNDdRMTY2IDM1NSAxNjYgMzcyUTE2NiA0MDEgMTQ5IDQwMVExMjkgNDAxIDExNSAzNzlUODkgMzA2UTg0IDI4OCA4MCAyODVUNTUgMjgySDQ0UTI0IDI4MiAyNCAyOTYnLFxuICAgIDB4MUQ0OTA6ICcyNTQgLThRMTkxIC04IDE0NiA5VDgwIDU0VDQ5IDExMVQzOSAxNjlRMzkgMjA2IDUzIDI0N1Q5NiAzMjlUMTc2IDQwMlQyOTIgNDQ2UTMxNyA0NTEgMzM2IDQ1MUwzNDQgNDUyUTM1MyA0NTIgMzU5IDQ1MlE0NTcgNDUyIDUxNiA0MDhUNTc2IDI3OVE1NzYgMTY5IDQ4OCA4MVQyNTQgLThaTTM0OSA0MDBRMzIxIDQwMCAyODcgMzg1VDIzMSAzMzhRMjA2IDMwMSAxODggMjI4VDE3MCAxMjZRMTcwIDk5IDE3OCA4M1ExOTggNDQgMjYwIDQ0UTM2NyA0NCA0MDkgMTU3UTQxOSAxODUgNDMyIDIzOFQ0NDUgMzE3UTQ0NSAzMzYgNDQzIDM0OFE0MzUgMzcyIDQxNiAzODRUMzg0IDM5OFQzNDkgNDAwJyxcbiAgICAweDFENDkxOiAnMjQgMjk2UTI1IDMwMiAyNyAzMTJUNDEgMzUwVDY1IDM5N1QxMDMgNDM1VDE1NyA0NTJRMjM1IDQ1MiAyNzMgNDA0UTMzNiA0NTIgNDA5IDQ1MlE0MzQgNDUyIDQ1OCA0NDhUNTA3IDQzMlQ1NTAgNDAyVDU4MSAzNTRUNTkzIDI4NVE1OTMgMjIxIDU2NCAxNTlUNDgwIDUzUTQwMSAtOCAzMDIgLThRMjkwIC04IDI3OSAtN1QyNTkgLTNUMjQyIDNUMjI4IDlUMjE4IDE0VDIxMiAxOEwyMDkgMjBRMjA4IDE5IDE5MCAtNTVUMTcxIC0xMzFUMTk4IC0xMzJIMjEzUTI0MCAtMTMyIDI0MCAtMTUwUTIzNyAtMTg3IDIyMyAtMTkyUTIxOSAtMTk0IDIxMiAtMTk0UTIwOCAtMTk0IDE3NiAtMTkzVDk1IC0xOTJRNDggLTE5MiAyNCAtMTkzVC0zIC0xOTRRLTExIC0xOTQgLTE2IC0xOTBULTIyIC0xODJULTIzIC0xNzZRLTIwIC0xNDIgLTcgLTEzNFEtMyAtMTMyIDIwIC0xMzJINDRMMTY0IDM1NFExNjUgMzU3IDE2NSAzNzJRMTY1IDQwMSAxNDggNDAxUTExMyA0MDEgOTAgMzEwUTg1IDI4OSA4MiAyODZUNjAgMjgySDU1SDQ0UTI0IDI4MiAyNCAyOTZaTTQ2NSAzMzlRNDY1IDM3MyA0NDcgMzg3VDQwMyA0MDFRMzc1IDQwMSAzNDcgMzg3VDMwMyAzNjBUMjg4IDM0MVEyODggMzM4IDI1NyAyMTZMMjI3IDkzUTI0OCA0MyAzMDYgNDNRMzMyIDQzIDM2MSA1OVQ0MTAgMTE1UTQyNSAxNDcgNDQ1IDIyNFE0NjUgMzA5IDQ2NSAzMzknLFxuICAgIDB4MUQ0OTI6ICczOCAxNTlRMzggMjA5IDU4IDI2MFQxMTMgMzU1VDIwNSA0MjVUMzI3IDQ1MlEzMzggNDUyIDM0OCA0NTFUMzY2IDQ0OVQzODIgNDQ0VDM5NCA0NDBUNDA1IDQzNFQ0MTQgNDI5VDQyMiA0MjNUNDI5IDQxOFE0NDAgNDI5IDQ4MSA0NDBUNTMzIDQ1MlE1NDAgNDUyIDU0NSA0NDdUNTUwIDQzN1E1NTAgNDMyIDQ4MSAxNTJRNDEwIC0xMzAgNDEwIC0xMzFUNDM3IC0xMzJINDUyUTQ3OSAtMTMyIDQ3OSAtMTUwUTQ3NiAtMTg3IDQ2MiAtMTkyUTQ1OCAtMTk0IDQ1MSAtMTk0UTQ0NyAtMTk0IDQxNCAtMTkzVDMzMCAtMTkyUTI3NyAtMTkyIDI0OSAtMTkzVDIxNyAtMTk0UTIwMiAtMTk0IDE5NyAtMTc5UTE5NyAtMTc1IDIwMSAtMTU5UTIwNiAtMTM5IDIxMSAtMTM2VDI0MyAtMTMySDI4M0wzMTkgMTVMMzA3IDEwUTI5NSA0IDI3MCAtMlQyMjAgLThRMTM0IC04IDg2IDM3VDM4IDE1OVpNNDAyIDM1M1E0MDIgMzU4IDM5NSAzNjhUMzY5IDM5MFQzMjQgNDAxUTMwMSA0MDEgMjgyIDM5NFQyNDkgMzY5VDIyNiAzMzhUMjA4IDI5N1QxOTYgMjU4VDE4NiAyMThRMTY2IDE0MSAxNjYgMTA3UTE2NiA0NCAyMjkgNDRRMjY1IDQ0IDI5NCA2MVQzMzcgOTVRMzQxIDEwMCAzNzEgMjIyVDQwMiAzNTMnLFxuICAgIDB4MUQ0OTM6ICcyNCAyOTZRMjQgMjk4IDI4IDMxM1Q0MiAzNTJUNjcgMzk4VDEwNCA0MzZUMTU0IDQ1MlExOTggNDUyIDIzMCA0MzdUMjczIDQwNEwyODIgNDExUTMzNCA0NTIgMzkzIDQ1MlE0NDEgNDUyIDQ3MCA0MjNUNTAwIDM1MFE1MDAgMzAxIDQ3MyAyNzlUNDE4IDI1NlEzOTUgMjU2IDM3OSAyNzBUMzYzIDMwOFEzNjMgMzY2IDQyNCAzODZRNDI0IDM4OCA0MjAgMzkxVDQwNSAzOThUMzg1IDQwMVEzNjMgNDAxIDM0MyAzOTBRMzIxIDM4MCAyODkgMzQxTDI1MiAxOTJRMjE0IDQyIDIxMiAzOVExOTAgLTggMTQyIC04UTExNyAtOCAxMDMgN1Q4OSAzOVE4OSA1MiAxMjcgMjAyVDE2NSAzNjlRMTY1IDQwMiAxNDggNDAyUTEzOSA0MDIgMTI4IDM5M1QxMTAgMzY5UTEwMCAzNDggOTAgMzEwUTg1IDI4OSA4MiAyODZUNjAgMjgySDU1SDQ0UTI0IDI4MiAyNCAyOTYnLFxuICAgIDB4MUQ0OTQ6ICcxNDAgMjkwUTE0MCAzMTEgMTQ4IDMzNlQxNzYgMzg4VDIzNSA0MzNUMzI2IDQ1MUgzMzZRMzU1IDQ1MSAzNzMgNDQ5VDQxOCA0MzlUNDYwIDQxMlQ0NzYgMzYzUTQ3NiAzMzMgNDU2IDMxMVQ0MDYgMjg5UTM4NCAyODkgMzcxIDMwMlQzNTcgMzM1UTM1NyAzNTEgMzY0IDM2NFQzNzkgMzg0TDM4NiAzOTFRMzg2IDM5MiAzODEgMzk0VDM2MiAzOThUMzMwIDQwMFEyOTkgNDAwIDI3OCAzOTNUMjQ3IDM3M1QyMzUgMzUyVDIzMiAzMzVRMjMyIDMyMiAyNDIgMzEyUTI1OCAyOTkgMzE1IDI5MFQ0MDMgMjYwUTQ1NyAyMjQgNDU3IDE2N1E0NTcgMTUyIDQ1MyAxMzRUNDM1IDkwVDM5NyA0M1QzMzAgN1QyMjkgLThRMTMzIC04IDk1IDIyVDU3IDkxUTU3IDEyNyA4MSAxNTJUMTM5IDE3N1ExNjEgMTc3IDE3NyAxNjRUMTk0IDEyMVExODkgODAgMTUzIDU2UTE3OSA0MyAyMzYgNDNRMjc1IDQzIDMwMyA1MlQzNDMgNzVUMzYxIDEwMVQzNjYgMTI0UTM2NiAxNDggMzM4IDE2MVQyNzIgMTgwVDIzMiAxODZRMTg3IDE5OCAxNjQgMjI3VDE0MCAyOTAnLFxuICAgIDB4MUQ0OTU6ICc4MiAzODJINTVRMjEgMzgyIDIxIDM5OVEyMSA0MjIgMzMgNDM5UTM5IDQ0NCA5MyA0NDRIMTQ0TDE2MiA1MTdRMTYzIDUyMiAxNjcgNTQxVDE3NCA1NjdUMTgxIDU4OVQxOTIgNjExVDIwNiA2MjdUMjI2IDYzOVQyNTMgNjQzUTI3NiA2NDMgMjkxIDYzMFQzMDYgNTk0UTMwNiA1ODYgMjg4IDUxNFEyODQgNDk5IDI4MCA0ODFUMjczIDQ1NEwyNzEgNDQ1UTI3MSA0NDQgMzE3IDQ0NFEzMjIgNDQ0IDMzMSA0NDRUMzQ1IDQ0NVEzNzcgNDQ1IDM3NyA0MjhRMzc3IDQwOCAzNjggMzkwUTM2MCAzODIgMzQxIDM4MkgzMDZIMjU1UTE4MiA4NiAxODIgNzVRMTgyIDQzIDIwMSA0M0gyMDRRMjQyIDQ2IDI3OSA4MVEyOTggMTAxIDMwOSAxMTlUMzIzIDE0NVQzMzAgMTU3VDM1MCAxNjJIMzU2SDM2M1EzNzcgMTYyIDM4MiAxNjBUMzg3IDE0NlEzODUgMTM2IDM3MiAxMTRUMzM3IDY0VDI3NSAxNFQxOTIgLTdRMTMxIC03IDk1IDE5VDU5IDkwVjEwNUwxMjggMzgxUTEyOCAzODIgODIgMzgyJyxcbiAgICAweDFENDk2OiAnMTg5IDM4OVExODkgMzk3IDE4NyAzOTlUMTc2IDQwMVExNTAgMzk5IDEyNiAzNzJUODkgMzA0UTg0IDI4OCA4MSAyODVUNjEgMjgySDU1SDQ0UTI0IDI4MiAyNCAyOTZRMjQgMzA3IDM1IDMzMVQ2NSAzODNUMTE3IDQzMVQxODcgNDUyUTIzNyA0NTIgMjcyIDQyN1QzMDggMzYyUTMwOCAzNDcgMjczIDI1NFQyMzggMTExUTIzOCA0MyAyOTEgNDNRMzE5IDQzIDM0NCA1OFQzODAgODZUMzkxIDEwM1Q0MjYgMjQ3VDQ2NCAzOTZRNDcyIDQxNCA0OTEgNDI5VDUzNSA0NDRUNTc0IDQyOVQ1ODggMzk3UTU4OCAzOTAgNTcwIDMxNVQ1MzQgMTY4TDUxNiA5N1E1MTQgODkgNTE0IDcyUTUxNCA0MiA1MzEgNDJRNTQ0IDQyIDU1NiA1NlE1NzQgNzYgNTg5IDEzNFE1OTQgMTU1IDU5OCAxNThUNjE5IDE2Mkg2MjRINjM1UTY1NSAxNjIgNjU1IDE0OFE2NTQgMTQyIDY1MiAxMzJUNjM4IDk0VDYxNCA0N1Q1NzUgOVQ1MjAgLThRNTA5IC04IDQ5OCAtN1Q0NzggLTNUNDYxIDJUNDQ2IDhUNDM0IDE2VDQyNCAyM1Q0MTYgMjlUNDEwIDM1VDQwNiAzOUw0MDUgNDFMMzk3IDM0UTM0NyAtNyAyODggLTdIMjgxUTE0OCAtNyAxMjIgNzhRMTE2IDk1IDExNiAxMjVWMTM2UTExNiAxNzQgMTUyIDI3M1QxODkgMzg5JyxcbiAgICAweDFENDk3OiAnMzgwIDM2N1EzODAgMzk3IDQwNiA0MjVUNDY1IDQ1M1E0OTMgNDUzIDUxNiA0MzBUNTQwIDM1N1E1NDAgMzE0IDUyNCAyNTBUNDY3IDExNVQzNzMgMTNRMzM4IC04IDI5MiAtOFEyMTggLTggMTY3IDIzVDExNiAxMjlRMTE2IDE3OCAxNTIgMjc1VDE4OSAzODhRMTg5IDM5NiAxODcgMzk4VDE3NiA0MDFRMTQ4IDM5OCAxMjUgMzcyVDg5IDMwNFE4NCAyODggODEgMjg1VDYxIDI4Mkg1NUg0NFEyNCAyODIgMjQgMjk2UTI0IDMwNiAzNCAzMzBUNjQgMzgyVDExNiA0MzFUMTg5IDQ1MlEyMzEgNDUyIDI2OSA0MjlUMzA4IDM2MlEzMDggMzQ2IDI3MyAyNTVUMjM4IDExNFEyMzggNDMgMzA2IDQzUTMzNiA0MyAzNjMgNjVUNDA3IDExOFQ0MzcgMTgyVDQ1NiAyMzlUNDYyIDI2OFE0NjIgMjkwIDQxNyAzMTVRMzgwIDMzNSAzODAgMzY3JyxcbiAgICAweDFENDk4OiAnNjM2IDM2N1E2MzYgNDAwIDY2NCA0MjZUNzE5IDQ1M1E3NDggNDUzIDc3MiA0MzFUNzk2IDM1N1E3OTYgMzIxIDc4MiAyNTZUNzI3IDExMlQ2MzMgNlE2MDQgLTggNTY3IC04UTQ2NiAtOCA0MTUgNDNRNDE0IDQyIDQxMCAzOFQ0MDMgMzFUMzk2IDI1VDM4OCAxOFQzNzggMTFUMzY3IDVUMzU1IDBUMzQwIC00VDMyNCAtN1QzMDYgLThRMjQ5IC04IDIwOSA1VDE1MSA0MFQxMjUgODRUMTE3IDEyOVExMTcgMTc2IDE1MyAyNzRUMTkwIDM4OFExOTAgNDA4IDE1OCAzOTZRMTEyIDM3NiA5MCAzMDZRODUgMjg4IDgxIDI4NVQ2MSAyODJINTVINDRRMjQgMjgyIDI0IDI5NlEyNCAzMDUgMzQgMzI4VDYzIDM4MFQxMTQgNDMwVDE4NyA0NTJRMjQwIDQ1MiAyNzQgNDI3VDMwOSAzNjJRMzA5IDM0NiAyNzUgMjU1VDI0MCAxMTdRMjQwIDQzIDMxNyA0M1EzMjUgNDMgMzMzIDQ1VDM0NyA1MFQzNTkgNTdUMzY5IDY2VDM3NyA3NVQzODMgODNUMzg4IDkwTDM5MCA5NVEzOTAgOTkgMzg5IDExMFQzODcgMTI5UTM4NyAxMzkgMzkxIDE2N1EzOTMgMTc3IDQxOSAyODJUNDQ4IDM5NlE0NTYgNDE0IDQ3NSA0MjlUNTE5IDQ0NFE1NDYgNDQ0IDU1OSA0MjhUNTcyIDM5N1E1NzIgMzg0IDU0MiAyNjVUNTExIDExNFE1MTEgNDMgNTc5IDQzUTYwOCA0MyA2MzMgNjZUNjczIDEyMlQ2OTkgMTg4VDcxNCAyNDRMNzE4IDI2N1E3MTggMjkxIDY3MyAzMTVRNjM2IDMzNSA2MzYgMzY3JyxcbiAgICAweDFENDk5OiAnNzQgMjgySDYzUTQzIDI4MiA0MyAyOTZRNDMgMjk4IDQ1IDMwN1Q1NiAzMzJUNzYgMzY1VDExMCA0MDFUMTU5IDQzM1EyMDAgNDUxIDIzMyA0NTFIMjM2UTI3MyA0NTEgMjgyIDQ1MFEzNTggNDM3IDM4MiA0MDBMMzkyIDQxMFE0MzQgNDUyIDQ4MyA0NTJRNTM4IDQ1MiA1NjggNDIxVDU5OSAzNDZRNTk5IDMwMyA1NzMgMjgwVDUxNyAyNTZRNDk0IDI1NiA0NzggMjcwVDQ2MiAzMDhRNDYyIDM0MyA0ODggMzY3UTUwMSAzNzcgNTIwIDM4NVE1MjAgMzg2IDUxNiAzODlUNTAyIDM5NlQ0ODAgNDAwVDQ2MiAzOThRNDI5IDM4MyA0MTUgMzQxUTM1NCAxMTYgMzU0IDgwVDQwNSA0NFE0NDkgNDQgNDg1IDc0VDUzNSAxNDJRNTM5IDE1NiA1NDIgMTU5VDU2MiAxNjJINTY4SDU3OVE1OTkgMTYyIDU5OSAxNDhRNTk5IDEzNSA1ODYgMTExVDU1MCA2MFQ0ODUgMTJUMzk3IC04UTMxMyAtOCAyNjYgMzVMMjU4IDQ0UTIxNSAtNyAxNjEgLTdIMTU2UTk5IC03IDcxIDI1VDQzIDk1UTQzIDE0MyA3MCAxNjVUMTI1IDE4OFExNDggMTg4IDE2NCAxNzRUMTgwIDEzNlExODAgMTAxIDE1NCA3N1ExNDEgNjcgMTIyIDU5UTEyNCA1NCAxMzYgNDlUMTYxIDQzUTE4MyA0MyAyMDAgNjFUMjI2IDEwM1EyODcgMzI4IDI4NyAzNjRUMjM2IDQwMFEyMDAgNDAwIDE2NCAzNzdUMTA3IDMwMlExMDMgMjg4IDEwMCAyODVUODAgMjgySDc0JyxcbiAgICAweDFENDlBOiAnMjA2IC0xNTBRMjQwIC0xNTAgMjY4IC0xMzRUMzE0IC05NVQzNDQgLTQ4VDM2MiAtN1QzNjcgMTRRMzM5IC03IDI4MCAtN1EyMzAgLTcgMTk1IDVUMTQ0IDM5VDEyMiA3OVQxMTUgMTIyUTExNSAxNzUgMTUyIDI3NFQxODkgMzg4UTE4OSAzOTYgMTg3IDM5OFQxNzYgNDAxUTE0OCAzOTggMTI1IDM3MlQ4OSAzMDRRODQgMjg4IDgxIDI4NVQ2MSAyODJINTVINDRRMjQgMjgyIDI0IDI5NlEyNCAzMDYgMzQgMzI5VDY0IDM4MVQxMTYgNDMxVDE4OCA0NTJRMjM5IDQ1MiAyNzMgNDI3VDMwOCAzNjFRMzA4IDM0NyAyNzMgMjUzVDIzNyAxMDlRMjM3IDQzIDI5MSA0M1QzODggOThRMzg4IDk5IDQyNSAyNDZUNDYzIDM5NlE0NzEgNDE0IDQ5MCA0MjlUNTM0IDQ0NFQ1NzMgNDMwVDU4NyAzOTlRNTg3IDM4NiA1MzcgMTg2VDQ4MyAtMjVRNDYxIC04NCA0MTAgLTEyNlQyOTYgLTE4OFEyNDggLTIwMiAyMDQgLTIwMlExMjcgLTIwMiA5NiAtMTc1VDY0IC0xMTRRNjQgLTgyIDg2IC01N1QxNDQgLTMxUTE2OSAtMzEgMTg0IC00NVQxOTkgLTgzUTE5OSAtODkgMTk4IC05NFQxOTYgLTEwNFQxOTMgLTExM1QxODkgLTEyMFQxODQgLTEyOFQxNzkgLTEzNFQxNzMgLTE0MVQxNjggLTE0N1ExODkgLTE1MCAyMDYgLTE1MCcsXG4gICAgMHgxRDQ5QjogJzY2IC04SDYwUTM0IC04IDM0IDVRMzQgOSA0MiAyMlQ3MCA1OVQxMTUgMTEwUTE2MiAxNTYgMjU1IDIyOVQzODEgMzMyTDM4OSAzMzlIMzgxUTM0OCAzMzIgMjk4IDMyOVQyMTIgMzI1VDE3MiAzMjFRMTY4IDMxOCAxNTEgMzE4SDE0NlExMTYgMzE4IDExNiAzMzJRMTE2IDMzNCAxMTggMzQyUTEyOCAzNzQgMTU0IDQwMlEyMDUgNDUyIDI2NSA0NTJRMzA0IDQ1MiAzNTIgNDIyVDQyNiAzOTJRNDQxIDM5MiA0NjIgNDIxVDQ4NSA0NTFUNTA4IDQ1Mkg1MThRNTM5IDQ1MiA1MzkgNDM4UTUzOSA0MzEgNTE2IDQwMVQ0NTggMzM0UTQxMiAyODkgMzEyIDIxMFEyMjkgMTQ2IDE5MSAxMTFMMTgzIDEwM0gxOTVRMjAzIDEwMyAyMTMgMTA0VDI0MCAxMDdUMjY4IDExMFEzMDEgMTE0IDMzNyAxMTZUMzkxIDExOVQ0MjggMTIzVDQ1NSAxMzRUNDY5IDE1N1E0NzMgMTY2IDQ5NSAxNjZRNTIxIDE2NiA1MjUgMTYxUTUzMiAxNTYgNTI4IDE0MVE1MTAgODEgNDU2IDM3VDMzNyAtN1EyOTcgLTcgMjUxIDIyVDE3NyA1MlExNTQgNTIgMTM0IDM4VDEwMCA4TDg4IC03UTg2IC04IDY2IC04JyxcbiAgICAweDFENDlDOiAnNzYgNjBRODMgMjkgMTM1IDI5UTE5MCAyOSAyNjQgODFRMjgwIDkzIDI4MCA5NVQyNzcgOTlUMjY1IDEwNlQyNDggMTE4UTE4OSAxNjYgMTg5IDIzN1ExODkgMzA3IDI0NSAzODhRMjY3IDQyMSAyOTkgNDM2UTMzNiA0NTUgMzg2IDQ1NVE0ODggNDU1IDU1MCA0MDNMNTU5IDM5NUw1NzEgNDA1UTcyNyA1NDQgOTQ0IDY3OUw5NTcgNjg3TDk2NiA3MDFROTY4IDcwNCA5NzAgNzA3VDk3MyA3MTJUOTc1IDcxNFQ5NzggNzE2VDk4MiA3MTdUOTg5IDcxN0g5OTVRMTAwNCA3MTcgMTAwNyA3MTdUMTAxMyA3MTRUMTAxNiA3MDhRMTAxNiA3MDUgODI5IDQwM0w2MzYgOTJMNjMwIDgzUTY1OSA5MyA2ODUgMTEwVDcyOCAxNDNMNzQ1IDE1OFE3NTggMTU4IDc1MiAxMzhMNzQ4IDEyN0w3NDAgMTE5UTY3NiA1OCA2MDUgNDJMNTkzIDIyUTU5MCAxNyA1ODcgMTJUNTgzIDZUNTc5IDJUNTczIDBUNTY0IDBINTMwSDQ4NFE0ODAgMyA0ODAgOFE0ODAgMTUgNDg5IDI2VDQ5OCAzOVQ0OTcgNDBRNDc3IDQwIDQyMyA0OVQzMjcgNzRMMzE2IDc4TDMwMiA2OFEyMDAgLTggMTIxIC04UTg1IC04IDYwIDdUMzUgNTNUNjAgMTEzVDEyMyAxNDRRMTQ0IDE0NCAxNTMgMTMyVDE2MiAxMDZRMTYyIDg5IDE0MyA3NVQ5OSA2MVE5MCA2MSA3NiA2NVY2MFpNOTA0IDYxNEw5MDUgNjE1UTkwMSA2MTUgODQwIDU3M1Q3MDAgNDY5VDU4MSAzNjlMNTg3IDM1OVE2MDAgMzQwIDYwOCAzMTVUNjE4IDI3M1Q2MjIgMjM4VDYyNCAyMTZMNzY0IDQxNFE5MDQgNjEyIDkwNCA2MTRaTTUyNSAzNjNRNDkzIDQwNSAzNzkgNDE4SDM3NVEzNDIgNDE4IDMwOSAzNzhRMjUxIDMwMCAyNTEgMjM0UTI1MSAxNzQgMzA2IDEzN1EzMTggMTI4IDMyMiAxMzFRMzIzIDEzMiAzMjkgMTM5UTM1MSAxNjEgMzYyIDE4MFE0MzAgMjczIDUwOSAzNDhMNTI1IDM2M1pNNTc5IDIwNVE1NzkgMjQ1IDU3MSAyNzhUNTU2IDMyM1Q1NDYgMzM3TDUyMSAzMTFRNDYxIDI0OCA0MjIgMTk2VDM2MiAxMjFMMzUzIDExMVE0MjcgODUgNDk5IDc5UTUxNyA3NyA1MjAgNzdMNTI1IDc2TDU0OSAxMTFRNTUxIDExNCA1NTYgMTIxVDU2MyAxMzFUNTY4IDEzOFQ1NzMgMTQ3VDU3NSAxNTdUNTc3IDE2OVQ1NzggMTg1VDU3OSAyMDUnLFxuICAgIDB4MUQ0OUU6ICczNjcgODlRMzY3IDg0IDM1MyA3N1QzMzQgNzBRMzI1IDcwIDMxMiA4M1QyOTggMTIwUTI5OCAxNjkgMzY0IDIzM1Q0OTYgMjk4UTUzOCAyOTggNTYzIDI3NVQ1ODggMjIwVjIxM1E1ODggMTMyIDUwMSA1M1QzMDYgLTI2UTI1MSAtMjYgMjExIDZUMTcwIDExNFExNzEgMTQ4IDE4MSAxODRUMjA1IDI0OFQyMzIgMjk4VDI1NSAzMzRUMjY1IDM0OVQyNDYgMzUwUTEyNyAzNTAgNzcgMzkwVDI2IDQ4MFEyNiA1MzMgNzEgNTgxVDE3OCA2NTZUMjk1IDY4M1EzMTIgNjgzIDMxMiA2NzZRMzEyIDY3NCAzMTEgNjcyTDMwMiA2NjBRMjk0IDY0OCAyOTIgNjQ3TDI4NiA2NDZRMjgwIDY0NiAyNzYgNjQ2UTE5NyA2NDEgMTQ1IDU4M1Q5MyA0NzZROTMgMzg3IDI2NSAzODdRMjcxIDM4NyAyNzcgMzg3VDI4NyAzODhUMjkyIDM4OFQzMTMgNDE0VDM3MyA0ODNUNDUxIDU2MlE2MTggNzEyIDczMiA3MjdRNzMzIDcyNyA3NDAgNzI3VDc1MyA3MjhRNzkwIDcyNyA4MDQgNzA4VDgxOSA2NjVRODE5IDY0MyA4MTAgNjE3VDc3MyA1NTNUNjk5IDQ4MVQ1NzIgNDE0VDM4NSAzNjFRMzgxIDM2MSAzNjcgMzQxUTI0NyAxNzIgMjQ3IDg2UTI0NyAxMSAzMjUgMTFRNDA0IDExIDQ2NSA5NVE1MTggMTY1IDUyOCAyMDhRNTI5IDIxMiA1MjkgMjIwUTUyOSAyMzcgNTE4IDI0OVQ0ODAgMjYxUTQzMSAyNjEgMzg3IDIwOVQzNDMgMTI2UTM0MyAxMTEgMzU1IDEwMVQzNjcgODlaTTc3NyA2NThRNzc3IDY5MSA3MzggNjkxUTcwNCA2OTEgNjU4IDY2MlQ1NzAgNTkwVDQ5MSA1MDRUNDMyIDQzMlQ0MTAgNDAwSDQxMVE0MTYgNDAwIDQ0MCA0MDVUNTA1IDQyM1Q1ODkgNDU1VDY3NSA1MDZUNzQzIDU3NlE3NzcgNjI3IDc3NyA2NTgnLFxuICAgIDB4MUQ0OUY6ICcyNTEgMjcyUTE5OSAyNzIgMTY4IDI5OFQxMzYgMzc0UTEzNiA0MzIgMTc1IDQ5NlQyNjcgNjAzUTMyMSA2NDUgMzk1IDY3NlQ1NTIgNzA4UTYxMCA3MDggNjU1IDY5NFQ3MjQgNjU5VDc2MyA2MThUNzg0IDU4NEw3OTAgNTY5UTc5MiA1NjkgODAwIDU3MlQ4MTkgNTc2VDg0MCA1NzhRODU1IDU3OCA4NTUgNTcxUTg1NSA1NjYgODQ2IDU1NFQ4MjkgNTQxUTgyNCA1NDEgODE3IDUzOVQ4MDQgNTMzVDc5OSA1MjlRODAyIDUxNyA4MDIgNDgzUTgwMiAzNzYgNzQyIDI1NlQ1ODUgNTNUMzkyIC0zMVEzNTMgLTMxIDMwMCAtN0wyODkgLTJMMjc3IC02UTI0MiAtMTcgMTkyIC0xN1ExNDEgLTE3IDExMyAtMTNUNzcgLTNUNjggMTRRNjggMjAgNzMgMjhUOTMgNDVUMTMxIDU4UTE1MiA2MiAxOTcgNjJRMjQxIDYyIDI3MiA0OEwyODIgNDRRMzA4IDY1IDMzNCA5M1EzODAgMTQ1IDQ2NyAyNjZUNjIyIDQ1NFE2NDQgNDc2IDY2NCA0OTNUNjk0IDUxN1Q3MjAgNTM0VDc0MCA1NDdRNjk5IDY3MSA1NDAgNjcxUTQ2MSA2NzEgMzg1IDYyNVQyNzYgNTM0UTI2NSA1MjAgMjUxIDQ5OVQyMTkgNDM4VDIwMiAzNjhRMjAyIDMwOSAyNjcgMzA5UTMyNSAzMDkgMzk2IDM4M1Q0OTEgNTQ1UTQ5MiA1NDggNDkzIDU1MlE0OTQgNTU4IDQ5NiA1NTlUNTExIDU2NFE1MTMgNTY1IDUxNCA1NjVRNTIzIDU2OCA1MjcgNTY4UTUzNCA1NjggNTM0IDU2MFE1MzQgNTU0IDUyOSA1MzdRNTA3IDQ0MiA0MjAgMzU3VDI1MSAyNzJaTTMzMiAyMFEzMzIgMTkgMzQxIDE1VDM2OCA2VDQwMCAyUTQyNSAyIDQ1NyAxM1Q1MzEgNDlUNjE0IDEyNVQ2OTAgMjQ4UTc1MCAzNzYgNzUwIDQ3NlY0OTBMNzM4IDQ3OVE2OTggNDM2IDY0NiAzNjZUNTU0IDIzOVQ0NTUgMTIxVDMzMiAyMFpNMjI2IDIwUTIyNiAyNSAxODYgMjVRMTgxIDI1IDE3NCAyNEgxNjZRMTYxIDI0IDE1OCAyM0gxNTJRMTcwIDIxIDE5NyAyMVEyMDUgMjEgMjEzIDIxVDIyMyAyMEgyMjYnLFxuICAgIDB4MUQ0QTI6ICcyMDYgMzE4TDI0OSAzMjBRMjQ5IDMyNyAyNTkgMzUyVDI4MiAzOTlRMzEyIDQ0NyAzNjYgNTEwVDQ2NSA2MTBRNTg4IDcxNyA2NjEgNzE3UTY5NSA3MTcgNzE2IDcwMVQ3MzggNjUzVDcwNCA1NzdRNjYzIDUyMiA2MTAgNDc0VDUxMiAzOTdUNDI0IDM0NlQzNTkgMzE1VDMzMyAzMDZRMzMxIDMwNCAzMjcgMjkwVDMyMyAyNjdRMzIzIDIyOSAzNjggMjI5UTQwMiAyMjkgNDM5IDI1NFQ1MDUgMzEyVDU3MSAzODJUNjM4IDQzNVE2NDIgNDM3IDY0NCA0MzdRNjU4IDQzNyA2NTggNDA5UTY1NSA0MDMgNjQ3IDM5OVQ2MjQgMzc5VDU5NSAzMjZRNTgzIDI5NiA1NjQgMjY3VDUyMyAxNzlRNTA0IDEyNiA0ODMgOTFUNDIzIDI3UTMzNSAtMzcgMjMxIC0zN1ExOTEgLTM3IDE1NyAtMzBUOTUgLTJUNjcgNTNRNjcgODkgOTQgMTIzVDE1OSAxNThRMTgwIDE1OCAxOTAgMTQ2VDIwMCAxMTlRMjAwIDEwMiAxNzggODlUMTM2IDc1UTEyOCA3NSAxMjAgNzhUMTEwIDgxUTEwNSA4MSAxMDUgNjJRMTA1IDM4IDEyOSAyNFQxODAgNVQyMzggMUgyNDRRMjgyIDEgMzE5IDMyUTM0OSA1NSAzNzEgODVUNDM2IDE5MEw0NjUgMjM5UTQxMyAxOTIgMzU0IDE5MlEzMDAgMTkyIDI3NCAyMTdUMjQ1IDI3NlEyNDUgMjg0IDI0MiAyODRRMjIwIDI4MCAxODcgMjgwUTEwNiAyODAgNTkgMzE1VDEyIDQwOVExMiA0NTcgNDMgNTA4VDExOCA1OTdUMjEwIDY1OVQyOTUgNjgzUTMwOCA2ODMgMzA4IDY3NVEzMDggNjcwIDI5OSA2NThUMjgyIDY0NlEyNjYgNjQ2IDI0MCA2MzNRMTgyIDYwNiAxMTggNTExUTc2IDQ0OCA3NiA0MDBRNzYgMzY4IDEwNSAzNDNUMjA2IDMxOFpNNjc3IDY2MFE2NzcgNjgwIDY0NiA2ODBRNjE2IDY4MCA1NjUgNjI5UTUzNyA2MDEgNTE0IDU3MVE0OTMgNTQ0IDQ1NSA0OTJUMzg5IDM5OFQzNjAgMzU1UTM2NiAzNTcgMzg2IDM2N1E0NjMgNDA2IDUzNCA0NzNUNjQxIDU5MVQ2NzcgNjYwJyxcbiAgICAweDFENEE1OiAnODI5IDE0OFE4NDUgMTQ4IDg0NSAxNDNUODQxIDEzMFQ4MjMgMTA5VDc4OCA4M1Q3MzAgNTRUNjQ0IDIyUTYzNyAyMCA2MzQgMTlUNjI3IDE2VDYyMiAxM1Q2MTggMTBUNjEyIDNUNjA0IC02UTUxMCAtMTEyIDM5NiAtMjAzVDIwMSAtMzEyUTE5MCAtMzE0IDE3MSAtMzE0SDE2NlExNTYgLTMxNCAxNDcgLTMxMlQxMjMgLTMwNFQxMDEgLTI4M1Q5MiAtMjQ1UTkyIC0yMDMgMTE3IC0xNjBUMTc1IC05M1EyMTQgLTY1IDI4MCAtNDFUMzkwIC02VDUwOSAyMkw1MzIgMjdMNTQ3IDQ3UTY3MyAyMTkgNjczIDIyNUw2NjUgMjI4UTY1NyAyMzEgNjQ4IDIzNVQ2MjcgMjQ5VDYwNiAyNzBUNTkxIDMwMFQ1ODQgMzQxUTU4NCAzODkgNjE0IDQ0N1Q2ODYgNTQ0UTczNSA1ODggNzk5IDYxNVQ5NTkgNjY3VDExMDggNzEzUTExMTggNzE3IDExMTkgNzE3UTExMjUgNzE3IDExMjkgNzA1VDExMzMgNjg5UTExMzMgNjg2IDExMTUgNjczUTEwNTEgNjI3IDEwMDEgNTc5VDkxOCA0ODFUODY3IDQwM1Q4MjggMzI4VDgwNSAyNzdRODAyIDI3MSA4MDEgMjY3VDc5OCAyNjFUNzk4IDI1OVE4NDkgMjcwIDkwMCAzMTdROTU2IDM3MSA5NTYgNDIxUTk1NiA0MzggOTUzIDQ1N1Q5NTAgNDgwUTk1MCA0ODEgOTUwIDQ4Mkw5NTEgNDg0UTk1MyA0ODcgOTY2IDQ5MlQ5ODUgNDk4UTk4OSA0OTggOTk0IDQ3M1ExMDAwIDQ0MSAxMDAwIDQyM1ExMDAwIDM2MiA5MzQgMzAyVDc5MCAyMjNMNzc1IDIyMEw3NjcgMjA3UTc1NyAxOTEgNzMxIDE1OFQ2ODUgOThUNjYyIDYzUTY2MiA2MSA2OTAgNzBUNzU1IDk5VDgxMSAxNDJMODE2IDE0OEg4MjlaTTY0NiAzMzJRNjQ2IDMwOCA2NTkgMjkxVDY4NSAyNjhMNjk4IDI2M0w3MzUgMzIwUTgyOCA0NjUgODY1IDUxMVE5MjMgNTgyIDEwMDMgNjQzTDEwMDUgNjQ1UTEwMDQgNjQ1IDkyNCA2MjBRNzc1IDU3MiA3MTYgNDkyUTY0NiA0MDEgNjQ2IDMzMlpNMTg0IC0yNzhRMjMzIC0yNzggMzExIC0yMTJUNDQ0IC04MEw0OTggLTE1SDQ5NlE0NjggLTIwIDQyNCAtMzBUMjkzIC03MFQxNzQgLTEzM1ExNjcgLTE0MCAxNTggLTE1M1QxMzggLTE5MFQxMjcgLTIzMlExMjcgLTI3OCAxODQgLTI3OCcsXG4gICAgMHgxRDRBNjogJzUyMSA1MDZRNTIxIDQ5MyA1NDkgNDkzUTYwOCA0OTMgNjYwIDUyN1E2NjcgNTMxIDY5MCA1NTVMNzM2IDYwNFE3NTAgNjE5IDc3NyA2NDZUODI1IDY5NFQ4NDggNzE2VDg1MiA3MTdRODU3IDcxNyA4NjAgNzExVDg2NSA2OTdMODY2IDY5MFE4NjYgNjg3IDgxMiA2MTVRNjU0IDQwNCA2NTQgNDAxUTY1NSA0MDEgNjU2IDQwMVQ2NTkgNDAyVDY2NSA0MDNUNjgwIDQwNFE3MTggNDA0IDczNCAzNzRRNzM1IDM3MCA3NDMgMzc2UTc0NSAzNzcgNzUyIDM4MlE4MDYgNDE2IDg1MiA0NjZUOTMzIDU2M1Q5ODIgNjIzUTEwMjggNjY2IDEwNzUgNjg2VDExNTUgNzA2UTExNjUgNzA2IDExNzMgNzA1VDExODYgNzAzVDExOTQgNjk5VDExOTkgNjk1VDEyMDEgNjkyVDEyMDIgNjg4VjY4N0wxMjA0IDY3N1ExMjA0IDY2NyAxMTkxIDY3MFExMTg5IDY3MCAxMTgzIDY3MFQxMTc0IDY3MVExMTM3IDY3MSAxMDg2IDY0M1QxMDAxIDU2NFE5NzAgNTE3IDg5OSA0NDlUNzQ5IDMzOUw3MzkgMzMzTDczNiAzMjJRNzMwIDI5NSA3MDMgMjUzVDY1MiAxNjVUNjI4IDc3UTYyOCAyMSA2ODEgMjFRNjkyIDIxIDY5OCAyM1E3NTEgNDYgODE3IDEzNEw4MjcgMTQ4SDg0NFE4NjEgMTQ4IDg2NCAxNDZRODY5IDE0MCA4NTkgMTI3UTgxOCA3NSA3NjEgMjlUNjY1IC0xN1E2NDkgLTE3IDYzMyAtMTJUNTk4IDRUNTY5IDQwVDU1OCAxMDBRNTU4IDEyOCA1NjMgMTUyVDU4NSAyMDVUNjA5IDI0NVQ2NDMgMjk0UTY0NyAzMDAgNjQ1IDMwMFE2MzMgMjk3IDYxNSAyOTdRNjA3IDI5NyA2MDAgMjk4VDU4OSAzMDBUNTg0IDMwMVE1ODEgMzAxIDU2OSAyODRUNTM2IDIzNlQ0ODggMTcxVDQxOCA5N1QzMzEgMjhRMjMzIC0zNyAxNTUgLTM3UTEwNCAtMzcgNjggLTE3VDI5IDQ0UTI5IDgyIDU1IDEyMFQxMjMgMTU4UTE0NCAxNTggMTU0IDE0NlQxNjQgMTE5UTE2NCAxMDIgMTQzIDg5VDEwMCA3NVE5MiA3NSA4NiA3NlQ3NyA4MFQ3MiA4MlE2OCA4MiA2OCA1OVE2OCAzNyA4NSAyM1QxMjMgNVQxNjcgMFEyMDMgMCAyMzggMjFUMzExIDg1VDM4MiAxNzRUNDY4IDI4OFQ1NjMgNDEwUTU3NiA0MjYgNTg4IDQ0MFQ2MDcgNDYyVDYxNSA0NzJMNjA1IDQ2OFE1NjggNDU2IDUzMyA0NTZINTI3UTQ5MCA0NTYgNDYzIDQ4M1E0NTEgNDk2IDQ1MSA1MDhUNDY4IDU0NVQ0ODYgNTgxUTQ4NiA1OTMgNDY1IDU5M1E0NDggNTkzIDQyNSA1NjhUMzg0IDUxOFQzNjQgNDkzUTM2NCA0OTIgMzQ3IDQ5MlEzMjYgNDkyIDMyNiA0OTlUMzUxIDUzN1Q0MTQgNTk5VDQ3NyA2MzBRNTA5IDYzMCA1MjggNjE1VDU0NyA1NzZRNTQ3IDU1NiA1MzQgNTMzVDUyMSA1MDZaTTY3NSAzNTdRNjc1IDM2OCA2NjUgMzY4UTY1NiAzNjggNjQ0IDM2M1E2MzEgMzU1IDYxNiAzMzNINjI4UTY0MCAzMzQgNjcyIDM0MVE2NzUgMzU0IDY3NSAzNTcnLFxuICAgIDB4MUQ0QTk6ICc3NjQgNTEzUTc2NCA0ODIgNzcyIDQyM1Q3ODAgMzMwUTc4MCAzMDQgNzc4IDI4NVQ3NzUgMjU2VDc3MyAyNDVRNzc4IDI1MiA4MjYgMzI4VDkzMiA0ODRUMTA0MiA2MTdRMTA3NyA2NTIgMTExNCA2NzhUMTE3MyA3MTVUMTIwMCA3MjZRMTIwOCA3MjYgMTIwOCA3MTdRMTIwOCA3MTEgMTIwNiA2OTVMMTIwMyA2NzlMMTE5OSA2NzVRMTE5NyA2NzUgMTE4NyA2NzBUMTE2MSA2NTdUMTEzMyA2MzlRMTA1MCA1ODMgOTU5IDQ1NlE5MDYgMzgxIDg1OCAzMDdUNzc5IDE3OVQ3MjUgODNUNjkxIDE4VDY3OSAtNlE2NzcgLTggNjYwIC04SDY1NlE2MzkgLTggNjM5IC0xUTYzOSA0IDY0NiAxN1E2ODUgOTMgNjg1IDE3M1YxOTZRNjg1IDIzMyA2ODEgMjg4VDY3NiAzODBRNjc2IDQzOCA2ODcgNDg3TDY2NCA0NTRRNTA1IDIzMCA0NTQgMTcwUTM2NiA2NCAyOTAgMTRUMTYzIC0zNkgxNTJRODcgLTM2IDU4IC0xMVQyOSA0NlEyOSA4MiA1NSAxMjBUMTIzIDE1OFExNDQgMTU4IDE1NCAxNDZUMTY0IDExOVExNjQgMTAyIDE0MyA4OVQxMDAgNzVROTIgNzUgODYgNzZUNzcgODBUNzIgODJRNjcgODIgNjcgNTlRNjcgMzcgODkgMTlUMTY3IDFRMTg3IDEgMTk3IDNRMjIxIDkgMjQ2IDIyVDI5MiA1MlQzMzYgOTFUMzc1IDEzMlQ0MTEgMTc0VDQ0MCAyMTJUNDYzIDI0NVQ0NzggMjY2UTc3OSA2OTUgNzg0IDY5OFE3ODYgNzAwIDgwMiA3MDBIODE4UTgyNCA2OTQgODI0IDY5MlQ4MDkgNjY4VDc3OSA2MDRUNzY0IDUxMycsXG4gICAgMHgxRDRBQTogJzI1OSAtOFEyMzAgLTcgMjA1IDBUMTUzIDI0VDExMiA3NFQ5NiAxNTNROTYgMjU0IDE3NCAzNzlUMzc0IDU5OVQ2MDcgNzA3SDYyMVE3MzIgNzA3IDc3OCA2NjFRODA1IDYzNCA4MDUgNTk4UTgwNSA1NTggNzc1IDUxN1Q2OTYgNDUyTDY4NCA0NDdWNDQxUTY4NCAzNzggNjI2IDI3M1Q0ODQgOTdRMzc5IDcgMjg4IC03UTI3OSAtOCAyNTkgLThaTTc2MCA1OTRRNzYwIDY3MCA2MDggNjcwUTU2MiA2NzAgNDkzIDYyMlQzNDcgNDcyUTE3NCAyNDAgMTc0IDEzMVExNzQgNzYgMjA1IDUzVDI3OSAyOVEyOTQgMjkgMzA2IDMyUTQwNSA2MCA1MDcgMjA1UTU5MiAzMjUgNjE2IDQwMVE2MjUgNDI2IDYyNSA0MzVRNjI1IDQzNiA2MjEgNDM2VDYwMyA0NDBUNTY5IDQ0OVE1MjQgNDY2IDUxNSA0NzVRNTEzIDQ3NyA1MTMgNDgxVDUyNSA0OTZUNTQxIDUwOEw1NDggNTA0UTU1NSA1MDEgNTY1IDQ5N1Q1ODcgNDg4VDYwOSA0ODBUNjI1IDQ3NlE2MjcgNDc2IDYyNiA0ODFRNjI2IDQ4NiA2MjMgNDk0VDYxMyA1MTNUNTg5IDUzM1Q1NDggNTQxUTQ5NSA1NDEgNDEzIDQ1NFQyODYgMjgxUTI2NSAyNDEgMjU0IDIwMVQyNDAgMTQxVDIzNSAxMjBRMjM0IDExOCAyMTcgMTExVDE5NyAxMDRRMTk1IDEwNCAxOTIgMTA3VDE4OSAxMTJRMTkwIDEyNSAxOTMgMTQ3VDIyMCAyMzFUMjgwIDM0OFEzMzUgNDI4IDQwNyA0OTNUNTM5IDU3NlE1NDggNTc4IDU2MyA1NzhRNTk0IDU3OCA2MTcgNTY4VDY1MyA1NDZUNjcyIDUxOFQ2ODEgNDk0VDY4MyA0ODJRNjgzIDQ4MSA2ODQgNDgxUTY5MCA0ODEgNzA3IDQ5NVQ3NDIgNTM4VDc2MCA1OTQnLFxuICAgIDB4MUQ0QUI6ICc1NzEgMzQ1UTU3MSAzODQgNjEyIDQxOFQ2ODcgNDUyUTY5OCA0NTIgNjk4IDQ0NVE2OTggNDM2IDY3OSA0MTdRNjc3IDQxNSA2NzAgNDE1UTY1MCA0MTIgNjMzIDM4OVQ2MTUgMzUwUTYxNSAzNDAgNjIxIDMzMVQ2MzQgMzE5VDY0MyAzMTVMNjYzIDM0MlE3NTEgNDYyIDgxNyA1MzZRODczIDU5NSA4OTYgNjE0TDkwNyA2MjVRODQzIDY4MCA3MDEgNjgwUTU5NCA2ODAgNDk5IDYzMlQzNDQgNTE2UTMxNyA0ODYgMjk2IDQ0OVQyNjcgMzg0UTI2MiAzNjYgMjYyIDM1NFEyNjIgMzMyIDI3NiAzMTZUMzI2IDI5OUgzMjdRMzc0IDI5OSA0MjYgMzM4UTQ4MSAzNzYgNTM3IDQ1NlQ1OTcgNTk4UTU5NyA2MTYgNTk5IDYxN1E2MDEgNjE5IDYxNCA2MjRUNjMwIDYzMFE2MzkgNjMwIDYzOSA2MDRWNTg3VjU4MVE2MzkgNTE5IDU5NyA0NTZRNTQ0IDM3NyA0NjIgMzIwVDMxOCAyNjJRMjc4IDI2MiAyNTAgMjgyVDIyMiAzNTBRMjIyIDQxOCAyODUgNTA0UTM2MCA1OTcgNDgwIDY1NlQ3MDIgNzE2UTc3MyA3MTYgODI1IDcwN1Q4OTggNjg4VDk1MSA2NjBROTYyIDY3MCA5ODUgNjg1VDEwMTIgNzAwUTEwMTggNzAwIDEwMjIgNjkwVDEwMjYgNjczUTEwMjYgNjcwIDEwMTkgNjY0UTk4OCA2MzMgOTg4IDYzMVE5ODggNjMwIDk5OSA2MThUMTAyMCA1ODBUMTAzMSA1MjJRMTAzMSA0NzEgMTAwMyA0MTlUOTI4IDMzMFE4NTQgMjc1IDc2NSAyNjRRNzU3IDI2MiA3MzMgMjYySDcxNEw3MDEgMjQ1UTYxNSAxMjEgNDczIDQyVDIxOCAtMzdRMTU5IC0zNyAxMjUgLTE1VDkwIDQ2UTkwIDgyIDExNiAxMjBUMTg1IDE1OFEyMDMgMTU4IDIxMyAxNDdUMjI0IDEyMVEyMjQgMTEwIDIxOSAxMDJRMTk4IDc1IDE1OSA3NVExNTQgNzUgMTQ5IDc2VDE0MyA3N1QxNDAgNzdRMTM3IDcyIDEzNyA1M1ExMzggMzcgMTQ5IDI2VDE3NyA5VDIwNSAyVDIyOCAwUTMxMyAwIDQxOSA3NFQ2MDIgMjU3TDYyMCAyODFMNjE0IDI4NVE2MDcgMjg5IDYwMSAyOTRUNTg3IDMwNlQ1NzYgMzIzVDU3MSAzNDVaTTk1MCA1MjlROTUwIDU3NiA5NDMgNTc2UTk0MCA1NzYgODQwIDQzOVQ3NDEgMjk5SDc1MVE4MDQgMzAwIDg0NSAzMzRUOTI0IDQzOFE5NDkgNDkwIDk1MCA1MjknLFxuICAgIDB4MUQ0QUM6ICczMzAgMzg3UTMzMCAzMzEgNDAyIDMzMVE0NjMgMzMxIDUxNCAzNzFUNTg5IDQ1OVQ2MTMgNTQyUTYxMyA1NTkgNjA4IDU3MFQ1OTggNTg4VDU5MyA1OTZRNTkzIDYwMSA2MTcgNjEwUTYzMiA2MTcgNjM2IDYxNlE2NzUgNTg1IDY3NSA1MjdRNjc1IDQ2NCA2MjkgNDA5VDUxNiAzMjRUMzg3IDI5NFEyNzEgMjk0IDI3MSAzOTRWNDAyUTI3MSA0MzggMjkyIDQ3OFEzNDQgNTgyIDQ1NyA2NDlUNjcyIDcxN1E3NjUgNzE3IDgyNSA2NzVUODg1IDU0OFE4ODUgNDMzIDc3MSAyOThUNDk4IDc2UTQ5MyA3MyA0OTEgNzJUNDg2IDY5VDQ4NCA2N1Q0ODUgNjZRNTM5IDQxIDYwNyA0MVE2NTUgNDEgNzAzIDcxVDc4MCAxMzlMNzg3IDE0OEg4MDRRODA2IDE0OCA4MDkgMTQ4UTgyNiAxNDkgODI2IDE0MFE4MjYgMTI4IDc4NiA5MVQ2ODcgMTlUNTg5IC0xNkg1NzZRNTAzIC0xNiA0MTQgMjBMMzk2IDI3UTI3OSAtMTcgMTkyIC0xN1ExMzAgLTE3IDkyIDJUNTQgNTNRNTQgOTIgMTA3IDEyM1QyMjIgMTU1UTMwMyAxNTUgNDAxIDEwNkw0MzEgOTFMNDQxIDk3UTQ3NiAxMTggNTI3IDE1N1E2MjIgMjM2IDcxMSAzNjFUODAxIDU3M1E4MDEgNTkxIDc5NSA2MDdUNzc1IDY0MVQ3MzIgNjY4VDY2MCA2NzlRNTkyIDY3OSA1MjggNjQ0VDQyMiA1NjBUMzU1IDQ2NFQzMzAgMzg3Wk0yMDEgMjBRMjMyIDIwIDI2NyAyN1QzMjIgNDBUMzQyIDQ5UTM0MiA1MiAzMTUgNjBUMjQzIDc3VDE2MCA4NlExNTAgODggMTQ0IDg4UTEzMCA4OCAxMjIgNzlUMTEyIDYyTDExMSA1M1ExMTEgMjAgMjAxIDIwJyxcbiAgICAweDFENEFFOiAnMzQ2IDQ2M1EzNDYgNDE5IDQwNiAzODZUNTc2IDM1Mkg1ODhMNjEzIDM4NEw2ODEgNDc2UTc2NyA1OTQgODQyIDY1MVQ5NzMgNzA4UTEwMTYgNzA4IDEwMTYgNjYxUTEwMTYgNjIxIDk4NyA1NjJUODk0IDQ0OVE4MDIgMzc1IDY5NiAzMzhMNjgyIDMzNEw2NjUgMzEyUTYzOCAyNzkgNjA1IDIzM1Q1NDcgMTU4VDQ4MiA5N1E0MTggNDYgMzMyIDVUMTU4IC0zNlE4NyAtMzYgNTggLTExVDI5IDQ4UTI5IDgyIDU1IDEyMFQxMjMgMTU4UTE0NCAxNTggMTU0IDE0NlQxNjQgMTE5UTE2NCAxMDIgMTQzIDg5VDEwMCA3NVE5MiA3NSA4NiA3NlQ3NyA4MFQ3MiA4MlE2NyA4MiA2NyA1OVE2NyAyOCA5OCAxNFQxNjYgMFEyMzIgMCAzMjAgNTVUNDkxIDIyNlE1MzAgMjc5IDU1MSAzMDVMNTU4IDMxNFE1NTggMzE1IDU0MyAzMTVRNDE3IDMyMSAzNTMgMzY1VDI4OSA0NjBRMjg5IDU2NiA0ODggNjMyUTU3OCA2NjIgNjYwIDY2NUg2NzlRNjg1IDY2MCA2ODUgNjU3VDY3NiA2NDJRNjcwIDYzMyA2NjYgNjI5TDY2NCA2MjhRNjYzIDYyOCA2NjEgNjI4VDY1NSA2MjhRNjA2IDYyOCA1NDYgNjE1VDQyNiA1NjhUMzUwIDQ4NlEzNDYgNDc1IDM0NiA0NjNaTTk3NiA2NTNROTc2IDY3MSA5NTkgNjcxUTkzOCA2NzEgOTE5IDY2MVQ4ODMgNjI5VDg1OCA1OTNUODM1IDU1NFE4MzIgNTQ4IDgzMCA1NDVRODAyIDQ5NSA3NzUgNDU1VDczNCA0MDBUNzIxIDM4Mkw3MzYgMzg4UTg3NiA0NDkgOTQ2IDU2OFE5NDggNTcyIDk0OSA1NzNROTc2IDYyMiA5NzYgNjUzJyxcbiAgICAweDFENEFGOiAnMzU0IDM1MFEyNjQgMzUwIDI2NCA0MjZRMjY0IDQ0MiAyNjUgNDQ4UTI3OSA1MTQgMzQ3IDU4MlQ1MDMgNjkyVDY2MiA3MzVRNzE5IDczNSA3NzQgNzE0VDg4MiA2NzJUOTgzIDY1MVE5OTYgNjUxIDk5NiA2NDRROTk2IDYzOSA5NzcgNjEyVDk1NCA1ODFROTUzIDU4MCA5MzggNTgwUTkwOSA1ODIgODg0IDU4N0w4NjkgNTkxTDg3MCA1ODdRODcwIDU4MyA4NDkgNTU3VDc5NiA0OTFUNzQ4IDQyMlE3MjkgMzkxIDY5MiAzMTNUNjIwIDE4OFE1NTUgMTA1IDQ1NCAzNFQyNTMgLTM3UTIxNCAtMzcgMTgxIC0zMFQxMjAgLTJUOTIgNTNROTIgODkgMTE5IDEyM1QxODQgMTU4UTIwNSAxNTggMjE1IDE0NlQyMjUgMTE5UTIyNSAxMDIgMjAzIDg5VDE2MSA3NVExNTMgNzUgMTQ1IDc4VDEzNSA4MVExMzAgODEgMTMwIDYyUTEzMCAzOSAxNTMgMjRUMjA0IDVUMjY3IDBRMzExIDAgMzU4IDI5VDQ1NCAxMTdUNTM5IDIyNlQ2MjkgMzU4VDcxMCA0NzZRNzI2IDQ5NiA3NDQgNTE2VDc3OCA1NTFUODA3IDU3N1Q4MjggNTk1TDgzNiA2MDFMNzg1IDYyM1E3NDMgNjQyIDcxMyA2NTFUNjY4IDY2MVQ2MjYgNjYzUTU2NCA2NjMgNTA5IDY0NFQ0MTggNTk2VDM1NiA1MzVUMzE3IDQ3NVQzMDUgNDMxUTMwNSA0MTYgMzEyIDQwOFEzMjMgMzg4IDM2OSAzODhRNDI5IDM4OCA0NjUgNDExVDUzMCA0ODBRNTU3IDUyNiA1NTcgNTY1UTU1NyA1NzMgNTU2IDU3OVQ1NTUgNTg3VDU1NSA1OTBRNTU1IDU5MSA1NjggNjAwVDU4NCA2MTFRNTg4IDYxMiA2MDAgNjAzUTYyMiA1ODEgNjIyIDU0OVE2MjIgNTE2IDYwMCA0NzVUNTM2IDQwNVE0NTQgMzUwIDM1NCAzNTAnLFxuICAgIDB4MUQ0QjA6ICc1NSAzNzdRNTUgNDQzIDEyMiA1MjNUMjkwIDY2MFQ0NzggNzE3UTUzMyA3MTcgNTc1IDY4OVQ2MTggNTk0UTYxOCA1NjUgNjExIDUzOFQ1ODUgNDc3VDU1MiA0MjJUNTA2IDM1NVQ0NTggMjg4TDM1NyAxNDZRMzA3IDY4IDMwNyAzMVEzMDcgMjAgMzE4IDIwUTMyNiAyMCAzMzEgMjFRMzY3IDI3IDQxMSA1N1Q0OTAgMTI4TDc2NyA1MDBMODYxIDYxN0g5MDhIOTM5UTk1MyA2MTcgOTU2IDYxNlQ5NjAgNjA5UTk2MCA2MDUgOTI4IDU2NlQ4MTYgNDIzVDY0OCAxOThRNTg3IDExMyA1NzEgODZRNTQwIDM0IDU0MCAyMVE1NDAgMjAgNTQ1IDIwUTU4MCAyNSA2MjMgNTVUNjk2IDEyNFE3MDIgMTMyIDcwNCAxMzNUNzIyIDEzNEg3MzlRNzQ0IDEzMCA3NDQgMTI3VDczNSAxMTNRNzEzIDgwIDY1NSAzOFQ1NDggLTE0UTUyNyAtMTcgNTI0IC0xN1E0NzUgLTE3IDQ3MyA0N1Y2M0w0NjIgNTVRMzY0IC0xNyAzMDIgLTE3UTIzNSAtMTcgMjM1IDY5UTIzNSA4OCAyMzkgMTA1VDI0OCAxMzVUMjY4IDE3MVQyOTIgMjA1VDMyOCAyNTFUMzY5IDMwNFEzNzYgMzEzIDM5NSAzMzhUNDIzIDM3NFQ0NTAgNDA4VDQ3NiA0NDVUNDk5IDQ3OVQ1MTkgNTE0VDUzNCA1NDZUNTQ1IDU3OVQ1NDggNjA4UTU0OCA2NDcgNTIyIDY2M1Q0NjAgNjgwUTM1NSA2ODAgMjQzIDU5MVQ5OSA0MDZROTcgMzk5IDk3IDM4M1YzNzdROTcgMzM5IDE1MyAzMzlRMTY5IDMzOSAxNzUgMzQwUTIxNSAzNTAgMjQxIDM3M1QyOTggNDQ0UTMzMyA0OTYgMzQ5IDUzNVQzNjcgNTg4VDM3NCA2MDNRNDAyIDYxNiA0MDggNjE2UTQxNiA2MTYgNDE2IDYwOFE0MTYgNTYzIDM5MyA0OTJUMzIwIDM3OFEyMzMgMzAyIDE0MCAzMDJIMTMyUTc1IDMwMiA1NyAzNTNRNTUgMzYxIDU1IDM3NycsXG4gICAgMHgxRDRCMTogJzU0MCA3MTdRNTQyIDcxNyA1NDUgNzE3UTU2MiA3MTcgNTYyIDcxMFE1NjIgNzA4IDU1NyA3MDJUNTQxIDY3OFQ1MTcgNjMyVDQ4NSA1NDRUNDQ4IDQwN1E0NDcgNDA1IDQ0MyAzODhUNDM4IDM2NlQ0MzMgMzQ1VDQyNyAzMjFUNDIwIDI5OVQ0MTEgMjc0VDQwMCAyNTBUMzg3IDIyM1QzNzIgMTk3UTM2MyAxODEgMzY0IDE4MUwzODggMjAzUTQ3NiAyODQgNTI3IDM1NFQ2MjAgNDkwVDcxOCA2MTJRNzU0IDY0NyA3OTAgNjczVDgzNSA3MDBRODM5IDcwMCA4NDIgNjkxVDg0OCA2NzJMODUwIDY2MlE4NTAgNjU3IDg0MiA2NTNRODAzIDYzMCA3NjggNjAwVDY5OSA1MjdUNjUzIDQ2N1Q2MTAgNDA1UTU1NCAzMjIgNTE4IDI4MlQzNjggMTM4UTMwNyA4NCAyNzMgNTFUMjMxIDlUMjE4IC01TDIwNyAtMTdIMTc1UTE2OSAtMTEgMTY5IC05UTE2OSAtNCAxODMgMTBRMjI3IDU2IDI1OCAxMjBUMzAyIDIzNFQzMzAgMzUwVDM1NiA0NDVRMzU3IDQ1MCAzNjAgNDU4TDM2MiA0NjRRMzE3IDQzNCAyNzYgNDM0UTIyMSA0MzcgMjIxIDQ3OVEyMjEgNDk4IDI0MCA1MjFUMjU5IDU1MlEyNTkgNTY1IDIzNSA1NjVRMjA5IDU2NSAxNzQgNTQ2VDEwNSA0ODJRMTAzIDQ4MCAxMDIgNDc4VDk5IDQ3NFQ5NyA0NzJUOTUgNDcwVDkzIDQ2OFQ5MCA0NjdUODYgNDY3VDgxIDQ2N0g3NVE1NiA0NjcgNTYgNDc1UTU2IDQ4MiA4MiA1MTFUMTU2IDU3MFQyNTMgNjAxUTI4OSA2MDEgMzExIDU5MFQzMzQgNTU3UTMzNCA1NDMgMzEyIDUxN1QyODkgNDc4UTI4OSA0NzEgMjk3IDQ3MVEzMjcgNDcxIDM3OCA1MTRRMzg0IDUxOSAzOTAgNTMxVDQxMiA1NzFUNDUxIDYzMlE0ODIgNjc1IDUyNCA3MTdINTQwJyxcbiAgICAweDFENEIyOiAnMjMyIDUwNFEyMzIgNDkyIDI2MyA0OTJRMzA0IDQ5MiAzNTYgNTE1TDM2NyA1MjBMMzc5IDUzN1E0NDMgNjMyIDUxNSA3MDVMNTI3IDcxN0g1NDNINTUyUTU2NCA3MTcgNTY0IDcwOVE1NjQgNzA1IDU2MiA3MDNUNTU0IDY5NFQ1NDAgNjc3VDUxOCA2NDNUNDg4IDU4OVQ0NDggNTA0VDM5OCAzODVRMzY4IDMwOSAzNTMgMjgxTDM0OSAyNzBMNTIzIDQ3Mkw2NjkgNjM0UTcyNiA2OTUgNzM3IDcwNlQ3NTcgNzE3SDc2NVE3ODYgNzE3IDc4NiA3MTBRNzg2IDcwNCA3NzYgNjkxVDczOCA2MjdUNjc1IDQ5N1E2MzAgMzk0IDYwOSAzNTRUNTQxIDI0NFE0NTYgMTIwIDQ0OSAxMTFMNDQ3IDEwN0w0NDggMTA4UTYzMCAyNDAgNzAwIDMyN1E3MzQgMzY4IDc4OCA0NjNRODIxIDUyMCA4NDEgNTUwVDg5OCA2MTlUOTgwIDY4M1ExMDEwIDcwMCAxMDE4IDcwMFExMDIwIDcwMCAxMDIzIDY5N1QxMDI2IDY5MlExMDI2IDY4OCAxMDI0IDY3MVQxMDIwIDY1MlExMDE4IDY1MCAxMDA3IDY0NVQ5ODggNjM1UTk0MCA2MDkgOTAyIDU2NVQ4NDIgNDc3VDc4MSAzNzRUNjk5IDI3MlE2NTMgMjI2IDUzNSAxMzNRNDIzIDQ3IDM3MyAtMkwzNTggLTE3SDM0MlEzMjAgLTE3IDMyMCAtMTFRMzIwIC03IDMyOCA1VDM1NCA0NlQzOTAgMTEyUTQxNiAxNjEgNDM5IDIxN1Q0ODggMzI2VDU2NCA0NTNMNTg5IDQ5MFE1ODcgNDkwIDUyMyA0MTRUMzUyIDIxN1QxNjYgMTRRMTM4IC0xNiAxMzcgLTE2UTEzNiAtMTcgMTIwIC0xN1ExMDYgLTE3IDEwMyAtMTZUOTkgLTlROTkgLTUgMTAwIC0zVDEwNiAzVDExNiAxNFQxMzIgMzVUMTU0IDcyVDE4NCAxMjlUMjIyIDIxMlQyNzAgMzI3UTMxMCA0MjYgMzM3IDQ3MUwzMjYgNDY3UTI3OCA0NTUgMjQzIDQ1NVEyMDkgNDU1IDE4OCA0NjJUMTYxIDQ3OFQxNTUgNDk2UTE1NSA1MDggMTc2IDUzM1QxOTggNTc2UTE5OCA1NzkgMTk4IDU4MVQxOTIgNTg4VDE3OCA1OTNRMTUxIDU5MyAxMDAgNTE5UTg5IDUwNCA4NiA1MDJUNzUgNDk5SDY4UTQ2IDQ5OSA0NiA1MDZRNDYgNTEwIDYzIDUzNFQxMTIgNTg3VDE3MCA2MjdRMTc4IDYyOSAxOTUgNjI5UTIzNSA2MjkgMjUyIDYxM1QyNzAgNTc3UTI3MCA1NTYgMjUxIDUzMlQyMzIgNTA0JyxcbiAgICAweDFENEIzOiAnMzUxIDM1MVEzMDggMzUxIDI5MCAzNzNUMjcyIDQyNlEyNzIgNDg3IDMyOSA1NjZUNDc4IDY4OFE1MzggNzE3IDU4NCA3MTdRNjM1IDcxNyA2ODEgNjk2VDc0NSA2MjBRNzUyIDU5OCA3NTIgNTY0VDc0NSA0OThMNzQxIDQ4NVE3NDIgNDg2IDc2OSA1MTZUODI1IDU3M1Q4ODkgNjM0VDk2MiA2ODlUMTAyNyA3MTZRMTAzNSA3MTcgMTA2MCA3MTdRMTA4MyA3MTYgMTA5NiA3MTRUMTEyMCA3MDVUMTEzMSA2ODZRMTEzMSA2NjggMTEwOSA2NDdUMTA1NSA2MjZRMTAzNSA2MjYgMTAyNiA2MzhUMTAxNiA2NjNRMTAxNiA2NjcgMTAyMCA2NzlIMTAxNVE5NzEgNjcxIDg4NiA1ODlUNzI4IDQxM0w2ODggMzYwUTY4OCAzNTkgNzI1IDM1OUg3NTBRNzYyIDM1OSA3NjYgMzU3VDc3MCAzNDhRNzY5IDM0NSA3NjEgMzM1VDc1MCAzMjJRNzQ4IDMyMSA3MDQgMzIxSDY2MFE2NTEgMzExIDYzMiAyODJUNTg5IDE5OVQ1NjUgMTA3UTU2NSAyNSA2NTMgMjBRNjg0IDIwIDcyMCA0NFQ3NzkgOTVUODI2IDE1MlQ4NTAgMTgzTDg1NiAxODRRODYxIDE4NCA4NjUgMTg0UTg4OCAxODQgODg4IDE3M1E4ODMgMTYzIDg0NSAxMTdRNzcwIDM3IDcyMyAxMFQ2MzggLTE3UTU4NCAtMTQgNTU0IDE3VDUyMyAxMDFRNTIzIDE0NyA1MzQgMTY3TDUzMiAxNjZRNTMwIDE2NCA1MjYgMTYwVDUxOCAxNTNRMzc4IDE1IDI1NiAtMTVRMjUwIC0xNiAyMjYgLTE2UTE2MSAtMTYgMTMyIDdUMTAzIDU5UTEwMyA5MyAxMjkgMTI1VDE5NCAxNThRMjMyIDE1OCAyMzIgMTIxUTIzMyAxMTggMjMzIDExM1QyMjEgOTZUMTg4IDc3UTE4MiA3NSAxNjggNzVUMTUwIDc4VjcwUTE1MCA0MyAxNzggMzJUMjQxIDIwUTM0MCAyMCA1MjcgMjg2TDU1MiAzMjFINTI0UTQ4OSAzMjEgNDg5IDMzMFE0ODkgMzMzIDQ5NyAzNDRUNTA5IDM1OFE1MTEgMzU5IDU0NSAzNTlINTc5UTU4MCAzNjIgNTk3IDM4OVQ2MzEgNDQ1VDY2MSA1MTRUNjc1IDU4NlE2NzUgNjM3IDY0NSA2NThUNTcyIDY4MFE1MDYgNjgwIDQ0NCA2MzJUMzQ4IDUyN1QzMTQgNDM0UTMxNCAzODggMzYxIDM4OEgzNjRIMzY2UTM4MCAzODggMzg5IDM5MFQ0MTYgNDA4VDQ1NyA0NTRRNDg3IDQ5NyA1MDUgNTM2VDUyNiA1OTRMNTI5IDYxM1E1MzEgNjE1IDU0NSA2MjJUNTYwIDYzMFE1NjggNjMwIDU3MyA2MTNUNTc4IDU3N1E1NzggNTE4IDUzMiA0NTVRNTA0IDQxMyA0NTMgMzgyVDM1MSAzNTEnLFxuICAgIDB4MUQ0QjQ6ICcxNTUgMjgwUTExNiAyODAgODcgMzAwVDU3IDM2OFE1NyA0MDkgODcgNDY2VDE5MiA1ODlRMjY5IDY1MyAzNDUgNjg0VDQ3MiA3MTZRNTcyIDcxNiA2MTMgNjc1UTY0NCA2NDQgNjQ0IDU5OVE2NDQgNTg1IDY0MyA1NzRUNjM3IDU1MFQ2MjkgNTI5VDYxNiA1MDVUNjAwIDQ4MVQ1NzggNDUwVDU1NCA0MTZRNDk0IDMzMCA0OTMgMzI4TDQ4MCAzMDZRNDY2IDI3OCA0NjYgMjU2UTQ2NiAyMjcgNDkyIDIyN0g0OTZRNTE0IDIyNyA1MzQgMjM0UTU0MSAyMzcgNTQ0IDI0MVQ1NzEgMjc5TDc2MiA1NTlRNzc3IDU3OSA3OTIgNTk1UTgxOCA2MjAgODU2IDY0NlQ5MTkgNjg2VDk0NiA3MDBROTUxIDcwMCA5NTUgNjkyVDk1OSA2NzdROTU5IDY3MyA5NDcgNjY1VDkxMSA2MzlUODY2IDU5NVE4MTYgNTM4IDc0OSA0MDhUNjQwIDIyNVE1NzQgMTM4IDQ2NCA2MVQyNDggLTE3UTE5MCAtMTcgMTQ0IDFUOTggNjJROTggODEgMTA5IDEwMlQxMzEgMTM1UTE1NiAxNTYgMTgzIDE1OFEyMjYgMTU4IDIyNiAxMjFRMjI2IDExMSAyMjQgMTA3UTIxNSA5MyAxOTYgODRUMTYyIDc0UTE1NCA3NCAxNDcgNzdIMTQ0VjcwUTE0NiA0MSAxODUgMzFUMjYzIDIwUTM2MyAyMCA0OTMgMTc1TDUwNyAxOTJINTA0UTUwMCAxOTEgNDk4IDE5MVE0ODQgMTg5IDQ3NiAxODlRNDMwIDE4OSA0MDUgMjE5VDM3OSAyODdRMzc5IDI5NCAzNzkgMjk5VDM4MiAzMTFUMzg1IDMyMlQzOTEgMzM1VDM5OCAzNDdUNDA4IDM2M1Q0MjAgMzc5VDQzNCAzOTlUNDUwIDQyMlE0NTUgNDI5IDQ2OSA0NDlUNDg4IDQ3NVQ1MDQgNDk5VDUyMCA1MjNUNTMzIDU0M1Q1NDQgNTY1VDU1MiA1ODNUNTU3IDYwM1Q1NTkgNjIwUTU1OSA2ODAgNDY3IDY4MFE0MDIgNjgwIDMzMyA2NDZUMjEzIDU2M1QxMzEgNDYyVDk4IDM3M1E5OCAzNDMgMTE5IDMzMFQxNjkgMzE3UTE4NyAzMTcgMjEyIDMzM1EyNDIgMzU0IDI5MSA0MjNUMzUyIDU1NVEzNTQgNTYyIDM1NSA1ODhRMzU1IDYxMiAzNTYgNjEyUTM1NyA2MTQgMzcxIDYyMlQzODcgNjMwUTM5MSA2MzAgMzk3IDYyM1Q0MDkgNTk3VDQxNSA1NTZRNDE1IDUwNyAzODAgNDQ4VDI5NCAzNDRRMjE2IDI4MCAxNTUgMjgwJyxcbiAgICAweDFENEI1OiAnMjIxIDQyOFEyMjEgNDg3IDI4MCA1NTVUNDI1IDY3MFQ1ODMgNzE3SDU4N1E2NDEgNzE3IDY2NSA2OTVUNjg5IDY0NlE2ODkgNjI1IDY3NCA2MDBUNjU4IDU2NFE2NTggNTUwIDY3MSA1NDFUNjk1IDUzMFQ3MTAgNTI4TDcxOCA1MzlRNzc5IDYxMyA4MjEgNjQ2UTg5NCA3MDcgOTY0IDcwN0g5NzBRMTAxMCA3MDcgMTAyNSA2NzVRMTAzMiA2NjEgMTAzMiA2NDVRMTAzMiA2MjYgMTAyMiA2MDdRMTAwOCA1NzkgOTgwIDU2MFQ4OTcgNTIyUTg2NyA1MTIgODM2IDUwNVQ3ODggNDk2TDc3MSA0OTNRNzY4IDQ5MyA3NjAgNDc3VDczNiA0MjlUNzAyIDM3MFE3MDAgMzY3IDY5OCAzNjNRNjk2IDM2MCA2OTYgMzU5SDgwNVE4MDkgMzU1IDgwOSAzNTBRODA5IDM0MCA3OTEgMzIyUTc4OSAzMjEgNzI4IDMyMUg2NjhRNTYyIDE3OSA0MzMgODhMNDE5IDc4TDQzNCA3M1E1MDUgNTQgNTU0IDU0UTYwOSA1NCA2NTQgODJUNzIwIDE0MEg3NTJRNzU4IDEzNCA3NTggMTMyUTc1OCAxMjggNzQ3IDExM1E3MTEgNjcgNjU3IDMyVDU1MiAtMTRRNTQwIC0xNiA1MTcgLTE2VDQ4MCAtMTVUNDM5IC0zVDM3NSAyN0wzNTQgMzhMMzM4IDMwUTI1NyAtOCAxOTEgLThIMTg0UTE1NCAtOCAxMzMgLTVUMTAzIDFUODggMTBUODMgMTlUODMgMjlRODMgMzUgODYgNDRUMTAwIDY1VDEyNyA4OFQxNzMgMTA1VDI0MSAxMTJRMjg2IDExMiAzNDIgOTlMMzYwIDk1TDM3MiAxMDVRNDM0IDE1NyA1MjMgMjcwTDU2MCAzMjBRNTYwIDMyMSA1MzMgMzIxTDUwNyAzMjJRNTAyIDMyNSA1MDIgMzMwUTUwMiAzMzkgNTIxIDM1OFE1MjMgMzU5IDU1NiAzNTlINTg4TDY2OSA0NzRMNjgyIDQ5MVE2NzYgNDkyIDY2NSA0OTRUNjQ3IDQ5OFQ2MzIgNTAzVDYxNCA1MTBUNTk2IDUyMVE1NTYgNTQ3IDU1NiA1NzBRNTU2IDU4NSA1NzkgNjE4VDYwMyA2NjNRNjAzIDY3OSA1NjggNjc5UTUxMCA2NzkgNDUyIDY1MFQzNTQgNTgxVDI4OCA1MDBUMjYyIDQzMVEyNjIgNDA3IDI4MCAzOTdUMzIxIDM4N1EzMzEgMzg3IDM0MSAzOTBUMzYwIDM5OFQzNzYgNDA5VDM5MCA0MjNUNDAwIDQzNVQ0MDkgNDQ3TDQxNCA0NTRRNDU3IDUxNCA0NjAgNTYyUTQ2MCA1NzUgNDYxIDU3NlE0NjEgNTc3IDQ3NSA1ODZUNDkyIDU5NVE0OTYgNTk1IDUwMyA1ODhUNTE0IDU3MlE1MjAgNTU5IDUyMCA1MzlRNTIwIDQ3MyA0NTIgNDEyVDMwOCAzNTFRMjY5IDM1MSAyNDUgMzcwVDIyMSA0MjhaTTk4OSA2NDJROTg5IDY2NyA5NTMgNjcxUTkwNSA2NzEgODcxIDY0NFE4NTMgNjMyIDgzMiA2MDRUNzk5IDU1NFQ3ODcgNTMxSDc4OFE4MDEgNTMxIDg0MiA1MzlUOTE2IDU2MVE5ODkgNTkyIDk4OSA2NDJaTTE5OCAyOVEyMzAgMjkgMjU3IDM2VDI5NSA1MkwzMDYgNTlRMzA2IDYzIDI1OSA3M1EyNTEgNzQgMjA5IDc0UTE3NyA3NCAxNTggNjZUMTM0IDQ4TDEzMCA0MFExMzAgMjkgMTk4IDI5JyxcbiAgICAweDFENTA0OiAnMjIgNTA1UTIyIDU2MyA5NCA2MjRUMjcxIDY4NUgyODBRNDE2IDY4NSA0NDMgNTYwUTQ0NyA1MzUgNDQ3IDUwNFE0NDQgNDE0IDQwNSAzMzBMMzk5IDMxOUwyMjkgMTU1UTIzMyAxNTQgMjQxIDE1M1QyNTMgMTUwVDI2NSAxNDVUMjgxIDEzNVQzMDEgMTE5VDMyOCA5M0wzNTcgNjRMNDAyIDkyUTQzOCAxMTYgNDczIDEzN0w1MDAgMTU0VjMzOVE1MDAgNTI4IDQ5NSA1OTNWNjAxTDU1OSA2NDlRNjIxIDY5NiA2MjQgNjk2TDYzOCA2ODZMNjI5IDY3N1E1OTkgNjUwIDU5MyA2MzhRNTgyIDYxNCA1ODEgNTA0UTU4MCA0OTAgNTgwIDQ0M1E1ODAgMzE0IDU4NCAyMzhRNTg0IDIzNSA1ODQgMjI0VDU4NCAyMTBUNTg1IDE5OVQ1ODYgMTg3VDU4OCAxNzZUNTkxIDE2NFQ1OTUgMTUyVDYwMSAxMzdUNjA5IDEyMVE2MzAgNzcgNjQwIDc3UTY2MSA3NyA3MDMgMTAxUTcwNCA5NSA3MDYgOTBMNzA3IDg2Vjg0TDYzNiAyOVE2MTggMTUgNjAxIDJUNTc0IC0xOVQ1NjQgLTI1TDUwMCAxMjFRNDk5IDEyMSAzOTkgNDhMMjk5IC0yNlEyOTggLTI2IDI5MSAtMTVUMjcyIDExVDI0NSA0MlQyMDkgNjlUMTY1IDgwUTEyMCA4MCA1OCA0M0w0OCAzN0w0MCA0MkwzMiA0OEwxMjIgMTE3UTE5NiAxNzMgMjQxIDIxMVEzMTkgMjgwIDM0MyAzMjdUMzY4IDQ0N1EzNjggNTM1IDMxNyA1ODJRMjY0IDYzMyAxOTkgNjMzUTE1NSA2MzMgMTIyIDYwNVQ4NiA1NDJRODYgNTE4IDEzMyA0NjdUMTgxIDM4N1ExODEgMzQ4IDE0MCAzMDlRMTEzIDI4MSA3MyAyNjBMNjQgMjU1TDUwIDI2NUw1OSAyNzNRMTEyIDMwNyAxMTIgMzQ1UTExMiAzNjMgOTAgMzg3VDQ1IDQ0MVQyMiA1MDUnLFxuICAgIDB4MUQ1MDU6ICc0OCA1MDZRNDggNTY4IDEyMCA2MjlUMjY4IDY5MVEzNjIgNjkxIDQyNSA1OTRMNDMxIDU4NUw0NDEgNTk0UTQ3OCA2MjggNTI4IDY1N1Q2MjkgNjg2UTY2NSA2ODYgNjg3IDY3MFE3MDMgNjU4IDcxOCA1ODRUNzUzIDUwNlE3NTYgNTA1IDc2MyA1MDVRNzc4IDUwNSA4MDQgNTEyTDgxNSA1MTZMODIwIDQ5NlE4MjAgNDk0IDgwOCA0OTBUNzc0IDQ3NlQ3MzIgNDU0UTcyMCA0NDUgNzA4IDQzN0w2NzUgNDE1TDY0MCAzOTRMNjI1IDM4M1E2MjYgMzgyIDYzNSAzODJRNjUyIDM4MiA2NzAgMzc5VDcxMiAzNjRUNzU0IDMzNlQ3ODQgMjg5VDc5NyAyMjBRNzk3IDE3MiA3NzYgMTIyUTc2OSAxMDYgNzY2IDEwMlQ3NDUgODRRNjU0IDExIDYxOSAtOFQ1MzggLTI3UTQ4MyAtMjcgMzg3IDEwVDI0OSA0N1EyMTggNDcgMTg2IDM0VDEzMyA4VDExMiAtNVQxMDQgN1Q5NyAyMUwxOTYgODJRMjU5IDEyMCAyODQgMTQwUTMzMyAxODEgMzUxIDIxNFEzNjggMjUxIDM2OCAzNTNRMzY4IDU4OCAyMjggNjIwUTIyMiA2MjEgMjA1IDYyMVExNjAgNjIxIDEzOSA1OTZRMTE3IDU2OSAxMTcgNTQ4UTExNyA1MjYgMTYyIDQ3MFQyMDggMzg3UTIwOCAzNTIgMTc5IDMyMFQxMDQgMjY0UTg4IDI1NiA4NiAyNTZRODMgMjU2IDcwIDI2Nkw4MiAyNzRRMTM0IDMwOSAxMzQgMzQzUTEzNCAzNTIgMTMwIDM1OVExMTggMzc3IDEwMCA0MDFUNzIgNDM5VDU2IDQ3MFQ0OCA1MDZaTTQ1MyA1MjhRNDU3IDQ5NiA0NTcgNDE5TDQ1OCAzNTdMNDg4IDM2N1E1NTQgMzkwIDYyMiA0MjVRNjczIDQ0OSA2NzMgNDUzTDY3MSA0NTRRNjY5IDQ1NiA2NjUgNDYwVDY1NyA0NzNUNjQ4IDQ5OFQ2MzkgNTQxUTYyOSA1OTcgNjE2IDYxM1E1OTkgNjMzIDU2NyA2MzNRNTM0IDYzMyA0OTMgNTk5UTQ3MSA1NzcgNDU3IDU0MEw0NTMgNTI4Wk03MTMgMTc2UTcxMyAyNTIgNjYxIDI5NVQ1MjggMzM5UTUxMiAzMzkgNDk0IDMzNlQ0NjYgMzMwVDQ1NSAzMjVRNDU0IDMyNSA0NTIgMzExVDQ0NCAyNzBUNDI1IDIxN0w0MjAgMjA3TDMwNCAxMThMMzE5IDExNlEzODEgMTExIDQ3NSA3NFQ2MDIgMzdRNjU1IDM3IDY4NCA3OVQ3MTMgMTc2JyxcbiAgICAweDFENTA3OiAnMzQ2IDYxMVEzMDAgNjExIDI2MSA2MDRUMTk0IDU4NFQxNDQgNTU1VDEwNyA1MTlUODIgNDgxVDY1IDQ0M1Q1NSA0MTBUNTAgMzgzVDQ4IDM2N0wzNyAzNzJMMjcgMzc4VjM5M1EzMyA1MjQgMTE1IDYwM1ExNjAgNjQ4IDIzMCA2NjZUMzY1IDY4NVE0MjMgNjg1IDQzNCA2ODRRNzQ1IDY1MyA3NDUgNDA1UTc0NSAyODEgNjk0IDE1MUw2ODcgMTMzTDY1NyAxMDNRNTI0IC0yNyA0NzAgLTI3UTQ1NiAtMjcgMzMxIDE4VDE1NyA2NFExMjIgNjQgODQgMjhRNjcgOSA1NyAtNkw1MCAtMTZMNDMgLThMMzUgMFEzNSAzIDQ2IDIyVDgzIDc0VDE0MSAxMzNIMTU0UTIwOCAxMzYgMjUzIDE2MVQyOTkgMjMwUTI5OSAyNTkgMjc3IDI5MFQyMzIgMzQ4VDIwOSAzOTJRMjA5IDQzNCAyNTQgNDc5VDM1OCA1NTZMMzY4IDU2MUwzODIgNTUwUTM4MiA1NDkgMzgxIDU0OFQzNzcgNTQ1VDM3MSA1NDFRMzUzIDUyNyAzMjYgNDk2VDI5OCA0NDRRMjk4IDQzMCAzNDMgMzY1VDM4OSAyNzdRMzg5IDI0MCAzNTMgMjAyVDI2NyAxMzZMMjUyIDEyN1EzMDQgMTE4IDQwMCA4M1Q1MTMgNDdRNTQ4IDQ3IDU4MiA3OVQ2MzUgMTQ1UTY3MSAyMDggNjcxIDMyM1E2NzEgMzkwIDY1MSA0NDFUNTk5IDUyNFQ1MjMgNTc2VDQzNiA2MDNUMzQ2IDYxMScsXG4gICAgMHgxRDUwODogJzMwMSA1NjRRMjQwIDU2NCAyMDMgNTA3VDE2NSAzNjFRMTY1IDI4MCAxOTAgMjE4VDI2MCAxMTlUMzU4IDY0VDQ3NCA0NlE0OTEgNDYgNDk5IDQ3TDUxMSA0OEw2MjggMTA2VjgwTDQ5OSAtNVE0OTggLTYgNDk3IC03VDQ5NCAtMTBUNDkwIC0xMlQ0ODUgLTE1VDQ3OCAtMTdUNDY4IC0xOVQ0NTYgLTIxVDQzOSAtMjJUNDE4IC0yM1QzOTIgLTI0UTI1MiAtMjAgMTY5IDY3VDg2IDMxNVE4NiA0MDkgMTI0IDQ5MVExMjggNTAwIDEzOSA1MDhRMjExIDU2MCAyNzIgNTkxTDI5MyA2MDFMMzI1IDU4NUwzMzggNTk0UTM3NCA2MTcgNDIyIDYzOVQ1MDIgNjc0TDUzMiA2ODVRNTMzIDY4NSA1NDAgNjYzVDU1NyA2MTRUNTc0IDU4MVE1ODAgNTc1IDU5MSA1NzVRNjAwIDU3NSA2MTYgNTgwVDYzNCA1ODVWNTY0TDYyMyA1NTlRNTcyIDUzNSA1MzIgNTI5TDUyMiA1MjdRNDkxIDU0NyA0NDIgNjI3UTQ0MiA2MjggNDQwIDYyN1Q0MzUgNjI0VDQyOCA2MjBRNDEwIDYxMCA0MDUgNTk3VDM5OSA1NTlWNTUzUTM5OSA1MzQgNDA5IDQ4N1E0MTkgNDMxIDQyNyAzNjlMNDc2IDQwMFE1MjYgNDMxIDUyNiA0MzJRNTMxIDQyNiA1MzcgNDIwUTU2NSAzODIgNjAyIDM1OVE2MTEgMzUzIDYxMCAzNTJRNjA5IDM1MSA1NzUgMzMyVDUzNyAzMTJRNTM2IDMxMiA1MDUgMzM1VDQ2MyAzNThRNDUxIDM1OCA0MzkgMzUyVDQyNSAzMzdRMzk0IDI0MyAyNjMgMjIzTDI1MSAyMjFMMjQzIDIyOUwyMzUgMjM2TDI0NSAyMzlRMjc0IDI0NyAzMDMgMjY2UTMyMCAyNzcgMzI1IDI5MFQzMzAgMzM2UTMzMCAzOTQgMzE1IDQ1MVQzMDAgNTMxUTMwMCA1NDkgMzAzIDU2MVEzMDMgNTY0IDMwMSA1NjQnLFxuICAgIDB4MUQ1MDk6ICcxOTggNjE3UTE3NyA2MTcgMTU5IDYwOVQxMjggNTg3VDEwNiA1NTdUOTEgNTI0VDgyIDQ5NFQ3NiA0NzJMNzUgNDYzUTc0IDQ2MyA2NyA0NjhUNTkgNDc0UTU5IDQ4OCA2MyA1MTBUODAgNTY0VDExNCA2MjJUMTcwIDY2N1QyNTMgNjg2UTI3MiA2ODYgMjk1IDY4MFEzMzAgNjcyIDM4NCA2NDVUNDY4IDU5OFE0OTggNTgwIDUyNCA1ODBRNTQ5IDU4MCA1OTUgNjI2TDYxMiA2NDNWNjE2TDU5OSA1OTlRNTIyIDUwMCA0ODIgNTAwUTQ2NiA1MDAgNDM1IDUxNEw0MjAgNTIxUTM4OCA1MTYgMzQ5IDQ4NlQzMDkgNDE1UTMwOSAzOTYgMzIzIDM2NlQzNTIgMzE1VDM2NyAyOTRRMzY3IDI5MyAzNzUgMzAxVDM5OCAzMjJUNDI5IDM1Mkw0OTAgNDEwUTUzNyAzNTUgNTQyIDMzMlE1NDIgMzMwIDUzMSAzMTVUNTEwIDI4Nkw0OTkgMjczUTQ3OSAzMTMgNDQ5IDMxM1E0MzcgMzEzIDQxOSAzMDNUMzkwIDI4MkwzNzggMjcxTDM5NCAyNTBRNDQ0IDE4MyA0NzAgMTI5UTQ4NCA5NiA0ODQgNzFRNDg0IC0xOSA0MDIgLTg2VDIyMyAtMTUzSDIyMFExNzUgLTE1MyAxMzcgLTEyMFExMDMgLTg5IDEwMyAtOFExMDMgMTIgMTA2IDQwVDEwOSA5NlExMDkgMTMyIDEwMyAxNDZUNzIgMTYxUTQ2IDE2MSAxNiAxNDNMMTQgMTU0TDExIDE2NVE4OCAyMTkgMTQzIDIxOVExNjMgMjE5IDE3NyAxOTdUMTkyIDEyN1ExOTIgMTAyIDE4NiA2NVQxNzkgNFExNzkgLTYwIDIxMCAtODhUMjcyIC0xMTdRMzE5IC0xMTcgMzYyIC03NVQ0MDUgMzNRNDA1IDcyIDM2MyAxMzlUMjc4IDI3MVQyMzUgMzY4UTIzNSAzODUgMjQzIDQwNFQyNjQgNDM5VDI5MiA0NzJUMzI0IDUwMFQzNTMgNTIyVDM3NCA1MzhMMzgyIDU0M1EzODIgNTQ0IDM1MSA1NjJUMjc0IDU5OFQxOTggNjE3JyxcbiAgICAweDFENTBBOiAnMzczIDU2MFEzNzMgNTQzIDM3OCA1MDlUMzg4IDQ0OFQzOTQgNDIxUTM5NiA0MjEgNDE2IDQzM1Q0NzQgNDc0VDU0OCA1MzdMNTM4IDU0M1E0ODEgNTcwIDQ1MiA2MjhMNDg3IDY1OVE1MjEgNjkwIDUyMiA2OTBMNTI2IDY4NFE1MjkgNjc3IDUzNSA2NjdUNTUxIDY0NlQ1NzUgNjI1VDYwNyA2MDhRNjE3IDYwNiA2MjEgNjA2UTY0NCA2MDYgNjYwIDYyMkw2NjQgNjAwTDQ5NyA0NTVRNDk1IDQ1MyA1MjcgNDUzSDU0NlE2MjggNDUzIDY2NSA0MDdMNjY2IDQwNlE3MTAgMzU3IDcxMCAyOTdRNzEwIDE5NiA2MzEgMTA5TDYyMSA5OEw1NzcgNjlRNDcxIC03IDQ1MiAtMTVRNDEzIC0yNiAzNzAgLTI2UTIzOSAtMjYgMTU1IDU5UTY2IDE0OCA2NiAzMTlRNjYgNDQyIDExMyA1MDVMMTkxIDU1MlEyNjkgNjAwIDI3MCA2MDBIMjcxUTI3MyA2MDAgMjgwIDU5NlQyOTMgNTg5VDI5OSA1ODZRMzAwIDU4NiAzNTcgNjIzUTQxMyA2NTkgNDE1IDY1OUw0MjYgNjQ5UTM3MyA2MDQgMzczIDU2MFpNMjE5IDIyOFEzMDUgMjYyIDMwNSAzMjlWMzQzUTMwNSAzODQgMjk0IDQzNFQyODIgNTE5UTI4MiA1NjIgMjg3IDU2N1EyODcgNTY5IDI4NiA1NjlRMjIyIDU1NiAxOTEgNTIwUTE0NCA0NjQgMTQ0IDM2MlExNDQgMjEzIDIyOCAxMjhUNDIwIDQyUTUxNCA0MiA1NjggMTAzVDYyMiAyNTVWMjYwUTYyMiAzMjAgNTc4IDM1N1E1MjYgNDAwIDQ1MyA0MDBRNDM0IDQwMCA0MTAgMzk2TDM5OSAzOTRMNDAwIDM3OFYzNzJRNDAwIDMzMCAzODggMzAxVDM0OCAyNTRUMzA1IDIzMlQyNTIgMjE3UTI0NSAyMTUgMjQyIDIxNEwyMzQgMjEzTDIyNiAyMjBMMjE5IDIyOCcsXG4gICAgMHgxRDUwRDogJzE5NCA2MDFRMTc1IDYwMSAxNTUgNTkwVDEyMSA1NjRUOTUgNTMzVDc2IDUwNkw2OSA0OTVRNTUgNTAzIDU1IDUwN1E1NSA1MDkgNjAgNTIxUTg3IDU4NiAxMzIgNjM2VDIyMiA2ODZRMjUxIDY4NiAyODkgNjYwVDM2MyA2MDdUNDIyIDU4MFE0NDIgNTgwIDQ2NiA1ODhUNTA2IDYwNEw1MjIgNjEyVjU5MUw0ODcgNTc0UTM3MSA1MTcgMzU5IDUxN0gzNTdRMzMyIDUyMiAyODAgNTYxVDE5NCA2MDFaTTM4MyAzOVEzODMgOTYgMzU2IDIwM1QzMjkgMzYxUTMyOSAzNjQgMzI5IDM3MFQzMzAgMzc4TDMzMSAzODhMMzM5IDM5OVEzNjIgNDI5IDM5NCA0NjJUNDQ2IDUxM1Q0NjkgNTMxUTQ3MCA1MzEgNDc3IDUyN1Q0ODQgNTIxTDQ3NCA1MDlRNDExIDQzNCA0MTEgMzc5UTQxMSAzNDEgNDM0IDIyM1Q0NTggODJRNDU4IDEgMzkwIC02OVQyMzkgLTEzOVExOTEgLTEzOSAxNjIgLTEyM1QxMjMgLTgzVDEwOCAtMzBUMTAxIDIzVDg4IDY0VDUyIDgwUTI3IDgwIC00IDY0TC0xMCA4MFEtNSA4NSAxMyA5OFQ2MyAxMjhUMTE4IDE0NFExNDkgMTQ0IDE2MyAxMjlUMTc5IDkzVDE4MiAzOFQxODcgLTE5UTE5OSAtOTYgMjc4IC05NlEyOTQgLTk2IDMwOSAtOTFUMzQzIC03M1QzNzIgLTMxVDM4MyAzOScsXG4gICAgMHgxRDUwRTogJzE1NCAzN1EyMTkgNDEgMjE5IDE0MlEyMTkgMjAzIDE5MCAzMDJUMTYwIDQzNFExNjAgNDQ1IDE3MiA0NzJUMjA5IDUzNFQyNjkgNjAyVDM1NCA2NTdUNDYwIDY4MEg0NzJRNTc2IDY4MCA2MTggNjE3VjU5OVE2MTggNTc4IDYxNSA1NTVUNjA4IDUxN1Q2MDIgNTAxUTU5NiA0OTUgNTg3IDQ5NVE1ODYgNDk1IDU4NiA0OTlRNTg2IDUwMCA1ODYgNTA1VDU4NSA1MTNRNTY3IDYyOCA0MTUgNjI4UTM4NCA2MjggMzU2IDYyMVQzMDIgNTk2VDI2MCA1NDZUMjQ0IDQ2NlEyNDQgNDE2IDI1OCAzNzdMMjYxIDM2N0wyNzYgMzgyUTI5NCA0MDEgMzE3IDQyMlQzODYgNDcxVDQ2OCA1MDBRNTAwIDUwMCA1MTggNDc3VDU0NCA0MjJUNTU0IDM4NlE1NTUgMzgyIDU2MCAzNzZUNTc2IDM2NFQ2MDEgMzU3UTYxMiAzNTcgNjIzIDM2MVE2MjMgMzYwIDYyMSAzNTFUNjE3IDM0MEw1NDEgMzA1TDQ2NSAyNzJRNDY5IDI3MSA0NzYgMjcwVDQ4OCAyNjZUNTAyIDI2MEw1MTIgMjU1TDUxOSAyNDJRNTMzIDIxMSA1NDYgMTU3VDU2NCA5M1E1ODQgNTMgNjE3IDUzUTY0OSA1MyA2ODIgNzRWNTRMNjc1IDQ2UTY0NiAxNyA2MTIgLTVUNTU0IC0yN1E1NDYgLTI3IDUzOCAtMjNUNTE3IC05VDQ5NCAyOFQ0NzggOTFRNDY1IDE3MiA0NDggMjAwVDM3OCAyMjhRMzM3IDIyOCAyODkgMjA3TDI4OCAxOTZRMjg4IDE2MCAyODQgMTM4UTI4MyAxMjUgMjYyIDk4UTE4NSAxIDExMiAtMjRMMTAyIC0yN0w5MSAtMjVRNDcgLTEzIDE3IDMxUTE3IDMzIDQ5IDY5TDgwIDEwNlExMTEgMzcgMTU0IDM3Wk00MjEgNDM0UTQxMSA0MzYgNDA1IDQzNlEzNzAgNDM2IDMzNiA0MDdUMjc1IDMzN0wyNjcgMzI1TDI3MSAzMTNRMjg4IDI1NyAyODggMjM0UTI4OSAyMzQgMzk1IDI3NlQ1MDIgMzE5UTUwMSAzMjAgNDk5IDMyM1Q0OTMgMzMwVDQ4NSAzNDVUNDc1IDM3MVE0NzMgMzc4IDQ2OCAzODhUNDQ5IDQxNlQ0MjEgNDM0JyxcbiAgICAweDFENTBGOiAnMjUxIDIzMVEyNTEgMjU0IDIwNiAzNDFUMTYwIDQ2OFExNjAgNTI5IDIzOCA2MDVRMzEzIDY3NyA0MjUgNjg1TDQzMiA2ODZRNDQwIDY4NiA0NDUgNjg2UTUyMCA2ODYgNTQ1IDY1N1Q1NzEgNTc2UTU3MSA1NDggNTY4IDUxN1Q1NjQgNDgwUTU2NCA0NjYgNTcyIDQ2MFQ2MDggNDUySDYyM1Y0MzFMNjE5IDQzMFE2MTggNDMwIDYxMSA0MjhUNTkxIDQyM1Q1NjYgNDE3TDUxNiA0MDRRNDk3IDQxNSA0OTEgNDE5VDQ4MCA0MzNUNDc1IDQ2MVE0NzUgNDcwIDQ3NyA0OThUNDgwIDU0NlE0ODAgNTYxIDQ4MCA1NjlUNDc0IDU5MlQ0NTkgNjE1VDQyOSA2MzFUMzc5IDYzOFEzMjIgNjM4IDI4MyA2MDZUMjM5IDUyNlEyMzcgNDgwIDI4MCAzOTRRMzE5IDMxMCAzMjAgMjY4VjI1MFEzMDggMjM1IDI0NCAxNjlMMjAzIDEyOEgyMTBRMjE1IDEyOCAyNTYgMTEyVDM1NyA4MFQ0NjYgNjRRNTI2IDY0IDU2NCA4OFQ2MjUgMTg2TDYyOSAxOTZRNjQzIDE4NyA2NDQgMTg2UTYxOCA3MCA2MDQgNDFRNTc3IC0xNSA1MTMgLTI0UTQ5NiAtMjYgNDc2IC0yNlE0MTggLTI2IDM0NCAtM1QyMTEgNDVUMTMzIDY5UTExNSA2OSA5NyA1MFQ2NSA3VDQ5IC0yMEw0NSAtMTZRNDEgLTExIDM3IC02VDMzIDBRMzMgOCA2NiA2OVQxMTEgMTM0UTI1MSAxNTYgMjUxIDIzMScsXG4gICAgMHgxRDUxMDogJzY4NyA1NzhRNjkwIDU4NiA3MTkgNjEyVDc5NCA2NjVUODc3IDY5MlE5MDkgNjkyIDkyNiA2NzBUOTUzIDYxNFQ5NzMgNTcwUTk4MyA1NjEgMTAwMCA1NjBRMTAyMyA1NjAgMTA0OCA1NjlWNTUzTDEwMzQgNTQ2UTEwMDMgNTI4IDk3MiA1MDRUOTMzIDQ2NlE5MDUgNDAzIDkwNSAyNjRROTA1IDIwNSA5MDkgMTcyVDkyMCAxMjZUOTQwIDkxUTk1MSA3NCA5NTkgNzRUOTk3IDg3TDEwMjcgMTAwVjc5TDk1NiAyN1E5NDAgMTUgOTIyIDJUODk0IC0xOUw4ODUgLTI2UTg4MyAtMjYgODU0IDI3TDgyNSA4MFYxOTJRODI2IDMxNCA4MzAgMzQxUTgzMSAzNDUgODMzIDM1NlE4NDAgMzk4IDg0NCA0MDRRODcxIDQ0NCA5MjAgNDg5TDkxNyA0OTFROTE0IDQ5MyA5MTEgNDk1VDkwMyA1MDFUODk4IDUwOFE4OTMgNTE2IDg3NyA1NjJUODUyIDYxNlE4NDAgNjI4IDgxOCA2MjhRNzUxIDYyOCA3MDIgNTQxTDY5NyA1MzJMNzAwIDUxNVE3MDggNDY3IDcwOCA0MTlRNzA2IDM0OCA2OTAgMjc2VDY2MiAxNjlUNjQzIDEyNkw2MzQgMTE2UTYyNiAxMDUgNjExIDg3VDU4MSA1MUw1MjIgLTIyTDUxNCAtMTVRNDcwIDIxIDQ1MiAyMVE0MzEgMjEgMzk0IC0xNkwzODQgNUwzODYgOUw0MjYgNjBRNDQ5IDg3IDQ2MCA5NVQ0ODYgMTA0UTQ4NyAxMDQgNDkxIDEwNFQ0OTcgMTAzUTUxNCA5OSA1NDEgODFMNTU5IDY5UTU5NSA5NiA2MDYgMTY5VDYxOCAzNTBRNjE4IDQ4NiA1OTggNTQzVDUxNyA2MDFRNDg0IDYwMSA0NTggNTcwVDQzMiA1MjNRNDMyIDUxNiA0MzQgNDkyVDQzNiA0NDNRNDM2IDI1MCAzNjkgMTMzTDM2MyAxMjJMMjgwIDUwUTIwNyAtMTYgMTkyIC0yN0wxODIgLTE4UTEzNiAyNiAxMDYgMjZRODMgMjYgNjIgOVQzNyAtMTZMMjcgMEwzMyAxMFE0MSAyMiA1NCAzOVQ5NCA4MVQxNDMgMTA2UTE3OCAxMDYgMjI1IDYyTDIzNSA1M1EyODMgODIgMzA3IDExN1EzNTIgMTkwIDM1MiAzNTlRMzUyIDQwOCAzNDUgNDUxVDMyMCA1MzRUMjY3IDU5N1QxODMgNjIxUTE1OSA2MjEgMTQ3IDYxN1QxMjAgNTk4UTk3IDU3NCA5NiA1NTZROTYgNTI4IDE0MyA0NjlUMTkxIDM3N1QxNjEgMzExVDEwMiAyNjJUNzAgMjQ1UTY5IDI0NSA1OSAyNTJUNDkgMjYwTDU2IDI2NFE2MyAyNjggNzMgMjc1VDk0IDI5MVQxMTEgMzEyVDExOCAzMzhRMTE4IDM1NSA5NSAzODRUNTAgNDQ2VDI3IDUwNlEzMSA1NjcgMTAxIDYyNlQyNTUgNjg2UTI5NyA2ODYgMzMwIDY3MVQzODIgNjMyVDQwOSA1OTVUNDIxIDU3MlY1NzFMNDMwIDU4MFE0NTQgNjEwIDQ5NiA2MzRUNTg4IDY1OUg1OTBRNjU1IDY1OSA2ODMgNTg1TDY4NyA1NzgnLFxuICAgIDB4MUQ1MTE6ICcxMTIgMzM0UTExMiAzNTYgNzAgNDEwVDI3IDQ5N1EyNyA1NTMgOTQgNjE5VDIyOSA2ODVRMjMwIDY4NSAyMzYgNjg1VDI0NiA2ODZRMzAzIDY4NiAzNDkgNjU0UTM3MyA2MzYgMzkyIDYwN1Q0MTkgNTU4TDQyNiA1MzhMNDU0IDU3NlE0NzQgNjA0IDQ4NiA2MThUNTIwIDY1MVQ1NjkgNjc4VDYzMyA2ODZRNjY4IDY4NCA2ODcgNjczVDcxMyA2NTFUNzMwIDYwOVE3MzAgNjA4IDczMiA2MDBUNzM2IDU4OFQ3NDEgNTc4VDc0NyA1NjhUNzU0IDU2MVQ3NjUgNTU1VDc3OSA1NTNRNzg5IDU1MyA4MTcgNTYyUTgxOSA1NTcgODE5IDU1NVY1NDdMNzkwIDUyNlE3NDMgNDkyIDczMCA0NzlUNzEyIDQ0N1E2OTcgMzY5IDY5NyAyODFRNjk3IDE2NiA3MjYgMTA4UTc0MSA3NiA3NTUgNjhRNzU5IDY2IDc2NyA2NlE3ODkgNjYgODI1IDkzVjgyUTgyNSA3MSA4MjIgNzBRODIxIDY5IDc2MyAyN1Q3MDEgLTE4TDY5MiAtMjVMNjY4IDE1UTY2MiAyNSA2NTAgNDVUNjM1IDcwTDYyNyA4NVYxMDdRNjI3IDEyMiA2MjYgMTYyVDYyNCAyODVRNjI0IDM4MSA2MzIgMzk4UTYzOCA0MDkgNjUxIDQyNVQ2NzUgNDU0VDY5NiA0NzdUNzA3IDQ4OUg2OTZRNjgzIDQ5MCA2NzkgNDkyVDY2OSA1MDdUNjUzIDU1MVE2NDIgNTg4IDYyNyA2MDhUNTg0IDYyOFE1NzIgNjI4IDU2MCA2MjVUNTM4IDYxNlQ1MTkgNjAyVDUwMiA1ODZUNDg2IDU2OFQ0NzMgNTQ5VDQ2MyA1MzJUNDU0IDUxN1Q0NDggNTA0TDQ0NSA0OTdRNDM3IDQ4MCA0MzcgNDc0UTQzNyA0NzIgNDM5IDQ2MVQ0NDQgNDIxVDQ0NiAzNDhRNDQ2IDIwNSA0MDUgMTI0UTM5NiAxMDUgMzkyIDEwMFQzNjggNzhRMzEyIDMyIDI3OCA5VDIzNSAtMThUMjE0IC0yMlExOTEgLTIyIDE3MCAtMTBUMTM5IDEyVDEyOSAyNVQxNjAgNjZUMTkyIDEwNVExOTMgMTAyIDE5NCA5OFQyMDAgODNUMjEzIDY0VDIzMyA0OVQyNjEgNDJRMzAzIDQyIDMzOSA5MFEzNzMgMTM0IDM3MyAyNjhRMzczIDM5NyAzMzkgNDkzVDIzNSA2MThRMjE1IDYyOCAxOTEgNjI4UTE1NSA2MjggMTI2IDYwNFQ5NyA1NDhROTcgNTI0IDEyMCA0OTNUMTY4IDQzMVQxOTIgMzgxUTE5MiAzNDYgMTY0IDMxOFQ4NiAyNjBMNzAgMjUwTDU0IDI2Nkw2MyAyNzJRMTEyIDMwMCAxMTIgMzM0JyxcbiAgICAweDFENTEyOiAnNDI4IDU5NlE0MTIgNTk2IDM4NiA1OTVUMzUwIDU5M1EyODkgNTkzIDI3MCA2MjVRMjY3IDYzMiAyNjcgNjQwUTI2NyA2NTYgMjgwIDY3MlQzMTIgNzA1VDMzNiA3MjlIMzQzUTM1MSA3MjkgMzUxIDcyOFEzNDIgNzEwIDM0MiA3MDNRMzQyIDY4MyAzODIgNjc2VDQ5MyA2NjJUNjA0IDY0M1E2NDggNjI3IDY3NyA1OTlUNzIwIDUzNVQ3MzkgNDY2VDc0NCAzOTJRNzQ0IDMxNyA3MzIgMjYwVDY5NiAxNjZUNjU5IDExNlQ2MjEgODNRNjE3IDgwIDYxNSA3OFE0ODUgLTI3IDM3NyAtMjdRMzIwIC0yNSAyNzIgLTlUMTg3IDIxVDEyMiAzNkgxMTZRNjUgMzYgMjkgLTEzTDI3IC0xNUwxMiAwUTEyIDEgMzIgMjZUNzYgNzhUMTA5IDEwOVExNDUgMTIzIDE2NiAxNTBUMTg3IDIwN1ExODcgMjQ0IDEzNCAzMThUODAgNDEyUTgwIDQ1NCAxMTIgNDk4VDE3NiA1NjZUMjEzIDU5MFEyMTYgNTkwIDIyNCA1ODVMMjM0IDU4MEwyMjUgNTczUTIxNiA1NjYgMjA3IDU1N1QxODggNTM2VDE3MiA1MTFUMTY1IDQ4NFExNjUgNDQ4IDIxMyAzNjhUMjYxIDI1OVEyNjEgMjQxIDI1MiAyMTlUMjI4IDE3OVQyMDAgMTQ2VDE3NiAxMjJMMTY3IDExMlExNzAgMTExIDE3NCAxMTFRMTg4IDExMCAyMzMgOTFUMzM5IDU1VDQ1MyAzN1E1MDggMzcgNTU2IDY4VDYyNiAxNTJRNjU1IDIxOSA2NTUgMzI4UTY1NSA1NDMgNTMyIDU4MlE0ODQgNTk2IDQyOCA1OTYnLFxuICAgIDB4MUQ1MTM6ICcxMTIgMzM5UTExMiAzNTQgOTEgMzgwVDQ5IDQzOFQyOCA0OTdRMjggNTY1IDk1IDYyOFQyNDIgNjkyUTI2MSA2OTIgMjc3IDY4OVQzMDcgNjgyVDMzMSA2NzBUMzUxIDY1NVQzNjcgNjM3VDM3OSA2MTlUMzg4IDYwMFQzOTUgNTgyVDQwMSA1NjVUNDA1IDU1MFE0MDkgNTU0IDQyMiA1NzBUNDUzIDYwM1Q1MDAgNjQxUTU3MyA2OTIgNjM3IDY5MlE2NTYgNjkyIDY3MCA2ODZUNjkyIDY3MlQ3MDUgNjQ3VDcxMyA2MThUNzE4IDU4NFE3MjAgNTY4IDcyMSA1NjJUNzI4IDU0NlQ3NDIgNTM0VDc2OCA1MzBRNzc2IDUzMSA3ODIgNTMyVDc5MSA1MzVUNzk2IDUzNlE3OTkgNTM2IDgwNCA1MjFRODAxIDUxOSA3ODkgNTEzVDc2NCA0OTlUNzM4IDQ4MFE2OTcgNDQ3IDY4MCA0MTRRNjc3IDQwNyA2NzcgMzk2UTY3NyAzNzAgNzEzIDMxMlQ3NTAgMjEwUTc1MCAxMjUgNjg2IDU3VDU2MCAtMTFRNTQwIC0xMSA0NzUgMTNMNDEwIDM3VjMxUTQxMCAtOSA0MTIgLTUwVDQxNyAtMTE4VDQyMCAtMTUwUTQxOSAtMTUwIDM3MyAtMTg0VDMyNiAtMjE4TDMwNSAtMjA4UTMwNSAtMjA3IDMwNyAtMTk2VDMxNCAtMTY1VDMyMiAtMTE2VDMyOCAtNDZUMzMxIDQzVjYzTDMxOCA2NlEyNzAgODAgMjUwIDgwUTIzMyA4MCAyMTMgNzBRMTgzIDU3IDEzOCAtM0wxMjggLTE2TDExOCA1TDEyNSAyMFExOTMgMTU0IDI4MiAxNTRRMzA5IDE1NCAzMzEgMTQ2VjI4N1EzMzEgNDQ0IDMyNyA0NjlRMzIxIDUyMiAzMDEgNTYwUTI4NCA1OTAgMjUxIDYxMVQxODQgNjMzUTE0NiA2MzMgMTE5IDYwN1Q5MiA1NTBROTIgNTM5IDk0IDUzNFExMDAgNTE2IDE0MyA0NjBUMTg2IDM4NlExODYgMzY2IDE3MCAzMzZUMTE5IDI4MVExMDIgMjY0IDcwIDI1MEw0OSAyNjBMNTYgMjY2UTY0IDI3MSA3MiAyNzhUOTAgMjk2VDEwNiAzMTdUMTEyIDMzOVpNNjAyIDM0NVE2MDIgMzU3IDYwOCAzNzFUNjIyIDM5N1Q2NDIgNDIxVDY2MSA0NDFUNjc4IDQ1Nkw2ODYgNDYyUTY2MyA0NzMgNjUyIDQ4NlQ2MzkgNTEyVDYzNCA1NTNRNjMxIDU5NCA2MjQgNjA4VDU5MyA2MzFRNTg3IDYzMiA1NjcgNjMyUTUzOSA2MzIgNDk3IDYwMFQ0MTYgNDk3TDQxMCA0ODRWMTIyTDQ2NyAxMDNRNDgxIDk5IDUwMiA5MlQ1MzMgODJUNTU3IDc1VDU3OCA2OVQ1OTQgNjZUNjEwIDY0UTY0NyA2NCA2NzIgODdUNjk3IDE0NFE2OTcgMTgwIDY1MCAyNTBUNjAyIDM0NScsXG4gICAgMHgxRDUxNDogJzQyOCA1OTZRNDEyIDU5NiAzODYgNTk1VDM1MCA1OTNRMzEzIDU5MyAyOTEgNjA1VDI2OCA2MzhRMjY4IDY0NCAyNjkgNjQ4VDI3NCA2NThUMjg0IDY2OVQzMDEgNjg5VDMyNiA3MThMMzM2IDcyOUgzNDNRMzUxIDcyOSAzNTEgNzI4UTM0MiA3MTAgMzQyIDcwM1EzNDIgNjgzIDM4MiA2NzZUNDkzIDY2MlQ2MDQgNjQzUTc0NCA1OTIgNzQ0IDM5OFE3NDQgMjk5IDcwOCAyMTNUNjQ2IDEwNEw2MDMgNjhMNjE0IDU1UTY3MCAtNSA3MTAgLTVRNzI2IC01IDc0NCAxVDc3MiAxNEw3ODEgMjBRNzgyIDIwIDc4MiA3Vi02TDc3MSAtMTNRNjczIC02OSA2NjUgLTY5TDY0NyAtNjNRNTUyIC0zMCA1MTQgOEg1MTJRNTA5IDggNTAwIDNUNDcxIC05VDQyOCAtMjNRNDA1IC0yNyAzNzcgLTI3UTMwNSAtMjQgMjI4IDZUMTI0IDM2UTY5IDM2IDI3IC0xNlEyMyAtMTMgMTkgLThMMTEgMEwyNyAyMFE5MyAxMDIgMTA5IDEwOVExNDUgMTIzIDE2NiAxNTBUMTg3IDIwN1ExODcgMjQ0IDEzNCAzMThUODAgNDEyUTgwIDQ1NCAxMTIgNDk4VDE3NiA1NjZUMjEzIDU5MFEyMTYgNTkwIDIyNCA1ODVMMjM0IDU4MEwyMjUgNTczUTIxNiA1NjYgMjA3IDU1N1QxODggNTM2VDE3MiA1MTFUMTY1IDQ4NFExNjUgNDQ4IDIxMyAzNjhUMjYxIDI1OVEyNjEgMjQxIDI1MiAyMTlUMjI4IDE3OVQyMDAgMTQ2VDE3NiAxMjJMMTY3IDExMlExNzAgMTExIDE3NCAxMTFRMTg4IDExMCAyMzMgOTFUMzM5IDU1VDQ1MyAzN1E1MDggMzcgNTU2IDY4VDYyNiAxNTJRNjU1IDIxOSA2NTUgMzI4UTY1NSA1NDMgNTMyIDU4MlE0ODQgNTk2IDQyOCA1OTYnLFxuICAgIDB4MUQ1MTY6ICc3NTAgMjc2UTc1MCAxNDEgNjQ1IDU3VDM3OCAtMjdRMjI0IC0yNyAxNDYgNjdRNjYgMTYzIDY2IDMwN1E2NiAzNjEgODAgNDEyVDEyNyA1MTVUMjE3IDYwOVQzNTYgNjc2TDM4OCA2ODRMNDIwIDY5Mkw0NDIgNjgxUTU0NSA2MjUgNTg2IDYwOFQ2NTQgNTkxUTY4OCA1OTEgNzEwIDYwOVQ3MzcgNjQ2TDc0MiA2NjVRNzQyIDY2NSA3NTYgNjU0TDc1MiA2NDJRNzM2IDU5NCA3MDYgNTY2VDYyMSA1MTVMNjA3IDUxMFE1ODAgNTEzIDUyOCA1NDJUNDIxIDU5OVQzMzUgNjI3UTI3MiA2MjcgMjE0IDU2OVExMzkgNTAwIDEzOSAzNzNRMTM5IDMwOCAxNTkgMjQ3VDIxNyAxMzZUMzE2IDU2VDQ1NSAyNlE1MjAgMjYgNTY2IDQzVDYzNCA5MFQ2NjYgMTQ4VDY3NiAyMDdRNjc2IDI2NCA2NDkgMjk3VDU4MCAzMzhRNTc0IDMzOSA1NTIgMzM5UTUxNiAzMzkgNDQyIDMyNVQzMjcgMzEwSDMyNFEzMDMgMzEwIDI5MCAzMTJUMjU5IDMyOFQyMzIgMzY5UTIzMCAzNzUgMjMwIDM5MFEyMzAgNDI2IDI1OSA0NjFRMjg2IDQ4OCAzMzggNTA3UTM1MSA0OTggMzUxIDQ5NUwzNDYgNDkyUTM0MiA0OTAgMzM5IDQ4OFQzMzAgNDgyVDMyMCA0NzNUMzEyIDQ2MlQzMDUgNDQ3VDMwMyA0MjhRMzAzIDM2OCAzNjYgMzY4UTM5MyAzNjggNDg3IDM4OFQ2MTMgNDA5UTY1NiA0MDkgNjk2IDM4NVQ3NDggMzA2UTc1MCAyOTQgNzUwIDI3NicsXG4gICAgMHgxRDUxNzogJzI4OSA2ODZRMzM4IDY4NiA0MzkgNjY4VDU2NSA2NDlRNjA2IDY0OSA2NDEgNjcyUTY1NiA2ODMgNjY0IDY5MFQ2NzQgNzAwTDY3NSA3MDFRNjc2IDY5OCA2NzYgNjkyVjY4MUw2NDEgNjM2UTYwOCA1OTEgNjAyIDU4OFE1NzcgNTc1IDUyOCA1NzVRNDkwIDU3NSA0MzggNTgzTDQyNiA1ODVMNDE2IDU3OFEzMzUgNTIwIDMzNSA0NjVRMzM1IDQzNyAzOTMgMzY2VDQ1MiAyNTlRNDUyIDIyNiA0MDYgMTcxUTM4NyAxNDYgMzUxIDExNUwzNDEgMTA2TDM1OCA5N1E0MzggNTggNDc1IDU4UTUyNSA1OCA1OTggMTI0TDYwOCAxMzNRNjE3IDExOSA2MTcgMTE4UTYxNyAxMTQgNjA2IDEwM1E1MTMgMCA0NDggLTI3TDQzOCAtMjVRNDAxIC0xOSAzMzcgMTRUMjM0IDQ4UTE4NiA0OCAxMjIgLTNMMTEyIC0xMUwxMDYgLTNMMTAxIDVMMTEwIDE1UTE2MCA2MyAyMDkgMTA1TDIyNCAxMTdIMzEwUTM4NCAxNjMgMzg0IDIxMFEzODQgMjM4IDMyOSAzMDNUMjYzIDM5OFEyNjIgNDAwIDI2MiA0MDRRMjYyIDQyNyAyOTAgNDc2VDM2OCA1ODBRMzgzIDU5NiAzODEgNTk2UTMxNSA2MjIgMjI4IDYyMlExNTkgNjIyIDExOCA1OTNUNzYgNTE2UTc2IDQ4MiA5NiA0NjFUMTM5IDQzMUwxMDcgMzk5TDc1IDM2N1EzNCA0MDMgMzQgNDcyUTM0IDUyNSA2NCA1NzJUMTQ4IDY1MlEyMDcgNjg2IDI4OSA2ODYnLFxuICAgIDB4MUQ1MTg6ICcxNjAgMjQ3UTE2MCAyOTEgMTEwIDM4MlQ1OSA1MDVRNTkgNTQyIDEwNiA1OTdUMjA3IDY5MEwyMTggNjk3TDIyOSA2ODJRMjI5IDY4MCAyMTYgNjY5VDE4NyA2NDRUMTU4IDYwNFQxNDQgNTUyUTE0NCA1MjYgMTY1IDQ4MlQyMDcgMzg3VDIyOCAyOTFRMjI4IDI3NyAyMjggMjY3VDIyNCAyNDdUMjE5IDIzMlQyMTAgMjE3VDE5OSAyMDJUMTg0IDE4NFQxNjYgMTYzTDExOCAxMDdRMTI0IDEwNSAxMzIgMTA1VDE2MCA5OFQyMjAgNzdRMjk4IDQ3IDMxNyA0N1EzNTQgNDcgNDA5IDEwNVE0NDQgMTQyIDQ1MSAxNjFUNDU4IDI0NFYyNzdRNDU4IDMzOSA0NTUgNDU3VDQ0NyA1OTZMNTc1IDY4Nkw1OTEgNjc2TDU4MyA2NjhRNTUwIDYzMiA1NDEgNTg3VDUzMiA0NDlWMzcyVjI5OFE1MzIgMTk4IDU1MCAxNDdRNTcyIDc5IDYwNSA3OVE2MTcgNzkgNjMxIDg0VDY1NiA5NUw2NjUgMTAwVjc5TDU5NSAyN1E1NzggMTUgNTYwIDJUNTMyIC0xOUw1MjMgLTI2UTUyMiAtMjYgNDkwIDQyTDQ1OCAxMTFMMzk3IDUwUTM4OSA0MiAzNzQgMjdUMzU1IDhUMzQwIC01VDMyNSAtMTZUMzExIC0yMlQyOTQgLTI2VDI3NCAtMjdRMjMyIC0yNSAxNTIgNlQzNSAzN1EyOCAzNiAxOSAzMFQ0IDE4VC04IDRULTE2IC01US0yNSAxMCAtMjUgMTFULTIwIDE4US01IDM0IDE1IDU3TDU0IDEwMVE3MCAxMDMgODYgMTE2UTk0IDEyMSAxMTMgMTQwVDEzNyAxNjZRMTYwIDIwMSAxNjAgMjQ3JyxcbiAgICAweDFENTE5OiAnNTQgMjY2UTExOCAzMDcgMTE4IDMzOVExMTggMzYwIDc0IDQxM1QyNyA0OTNRMjYgNTMwIDU5IDU3OFQxMzMgNjUxUTE4NyA2ODYgMjU2IDY4NlEyOTkgNjg2IDMzMiA2NzNUMzgyIDY0MFQ0MDkgNjAwVDQyNCA1NjdUNDI5IDU1M1E0MzEgNTUzIDQ2MyA1ODZUNTQyIDY1M1Q2MjQgNjg2UTY2MyA2ODYgNzE1IDY1MlQ3OTggNjE3UTgxMiA2MTcgODI1IDYyMlY2MDZMODE1IDU5OVE3ODUgNTc2IDc2MiA1NDZRNzI0IDQ5NSA3MjQgNDMyUTcyNCAzOTcgNzM3IDMxN1Q3NTAgMjE3UTc1MCAxNDggNzExIDk2UTY5NyA3NSA2MzkgMzRUNTc4IC0xMFE1NjMgLTIxIDU1NSAtMjNUNTIyIC0yNlE0NTggLTI2IDM2MyAyOVEyNTMgODkgMjExIDg5UTE5MiA4OSAxNzMgODNUMTM5IDY3VDExNCA0OVQ5NiAzNEw5MCAyN0w4MCA0M0w5NSA1OVExMjEgODcgMTQ4IDExMFQxOTEgMTQzVDIxMyAxNTRRMjYxIDE1NCAzMDAgMTk1UTMyOCAyMjIgMzQwIDI2N1QzNTIgNDA2UTM1MiA1NjIgMjU1IDYxMVEyMjIgNjI3IDE4NyA2MjdIMTgyUTE0MyA2MjcgMTE1IDU5OFE5NiA1NzkgOTYgNTU5UTk2IDUyOCAxNDQgNDcwVDE5MiAzODFRMTkyIDM0OCAxNTYgMzE0VDgwIDI1Nkw3MCAyNTBMNTQgMjY2Wk03MjcgNTQ4UTcwMSA1NTAgNjUwIDU4M1Q1NjcgNjE3UTU2MCA2MTcgNTU0IDYxNVE1MzIgNjEwIDUwMSA1ODBUNDQ1IDUwMUw0MzcgNDg1VjQ2NVE0MzIgMzI2IDM3OCAyMjNMMjk0IDE1MFEzMjEgMTQzIDQyMSA4N1Q1NjAgMzFRNjA4IDMxIDYzNCA2NFE2NjAgMTAyIDY2MCAxOThRNjYwIDIyNiA2NTUgMjkyVDY1MCAzODdRNjUwIDQxOCA2NTggNDUyTDY2MCA0NjJMNzM1IDU0OEg3MjdaTTI2NCAxNTBRMjY1IDE1MSAyNjMgMTUxSDI2MVEyNjEgMTUwIDI2NCAxNTBaTTI4MCAxNTBIMjc2VjE0OVEyODAgMTQ5IDI4MCAxNTAnLFxuICAgIDB4MUQ1MUE6ICczMiA1MDFRMzUgNTY0IDEwMyA2MjVUMjY0IDY4NlEzMjYgNjg2IDM2NSA2NTJRNDAyIDYxOCA0MjAgNTY0TDQ0MSA1ODVRNDg2IDYzMCA1MzkgNjcwTDU1OSA2ODZMNTcyIDY3MlE2MzcgNjA2IDY2NSA1NTlMNjgyIDU3NlE3ODcgNjg2IDg0NSA2ODZRODc3IDY4NiA5MjkgNjU2VDk5MiA2MjNROTk5IDYyMSAxMDE2IDYyMVExMDQxIDYyMSAxMDU0IDYyOEwxMDUxIDYxN0wxMDQ3IDYwNlExMDQyIDYwMiAxMDM3IDU5N1E5ODMgNTU3IDk2OSA1MjJUOTU0IDQzNFE5NTQgMzk0IDk2MSAzMzZUOTY4IDIyMVE5NjggMjAxIDk2NiAxODRUOTYzIDE1NVQ5NTYgMTMxVDk0OCAxMTNUOTM2IDk2VDkyMyA4MlQ5MDYgNjZUODg3IDUwTDgxNiAtMlE4MTUgLTMgODEwIC02VDgwMSAtMTFUNzkxIC0xNlQ3NzcgLTIwVDc1OSAtMjNUNzM1IC0yNVE2OTEgLTI1IDYxOSA0VDUwNSAzN0g0OTZMNDYzIDIxUTQyMCAwIDM4OSAtMjBMMzc4IC0yN0gzNjJRMzE2IC0yNyAyNzUgLTlUMjAyIDI4VDE1MCA0NkgxNDZRMTE0IDQ2IDU5IC01TDQ4IC0xNkw0MSAtNlE0MCAtNCAzOCAtMlQzNCAyTDMzIDRRMzMgOCA3NyA1NFExMTEgODcgMTQyIDExMkwxNTQgMTIySDE2NlEyMzkgMTI3IDI4OCAxODJRMzQ2IDI0NCAzNDYgNDA2UTM0NiA0ODkgMzI2IDUzN1QyNTkgNjEwUTIyNyA2MjggMTk1IDYyOFExNTUgNjI4IDEyOCA2MDZUMTAxIDU0OVExMDEgNTE3IDE0NiA0NjVUMTkyIDM4MlExOTIgMzQ4IDE1NiAzMTBUODUgMjU0TDc1IDI1MEw2NCAyNThMNTUgMjY2UTU2IDI2NyA3NCAyNzZUMTA1IDMwMVQxMTggMzM5UTExOCAzNjIgNzUgNDEzVDMyIDUwMVpNOTUyIDU0N1E5MjcgNTU1IDg3NyA1ODZUNzk2IDYxN1E3NDQgNjE3IDY4MiA1MjVMNjc2IDUxNkw2NzcgNDk4UTY3OCA0ODYgNjc4IDQyNVE2NzggMzAxIDY1MiAyMDZRNjQ5IDE5NSA2MTMgMTUxVDU3NyAxMDJRNTc3IDEwMCA1ODIgMTAwUTYxOCAxMDAgNzIwIDUxUTc2MSAzMiA3OTAgMzJINzk0UTg0MyAzMiA4NjkgODNRODg0IDExMCA4ODQgMTg5UTg4NCAyMzMgODc5IDI5NFQ4NzMgNDAwUTg3NCA0MzMgODc5IDQ1MVQ4ODkgNDc4VDkxNSA1MDdUOTUyIDU0N1pNMjQxIDEwNVEyNDkgOTggMjYzIDg4VDMxNyA2MFQzOTMgNDJRNDc4IDQyIDU0NyAxMDlRNjA3IDE3MSA2MDcgMzU4UTYwNyAzNzEgNjA3IDM4MFQ2MDQgNDE3VDU5NSA0NjdUNTc3IDUxN1Q1NDYgNTY2VDUwMCA2MDFMNDc5IDU4MFE0NDkgNTUwIDQzMyA1MjZMNDI2IDUxNlY1MDNRNDI2IDMxMSAzNTcgMjAwTDM1MiAxOTFMMjk2IDE0OVEyNDEgMTA3IDI0MSAxMDUnLFxuICAgIDB4MUQ1MUI6ICc5NiA1MTFMNzggNTI3TDE0OSA2MDNRMjA3IDY2NiAyMjcgNjg2TDIzNyA2ODVRMjc4IDY4MCAzMDYgNjY3VDM1MSA2MzFUMzc2IDU4OFQzOTUgNTMzTDQwMCA1MTZMNDA2IDUyN1E0MzkgNjAwIDUyMyA2NTNRNTM4IDY2NCA1ODcgNjg4UTU4OSA2ODggNTk2IDY3MlQ2MTMgNjM1VDYyOSA2MDZRNjQzIDU4OCA2NjUgNTg4UTY3NyA1ODggNjkzIDU5Nkw3MDkgNjAzVjU4NUw2MDcgNTI2UTU4MyA1MzYgNTU0IDU2NFQ1MTIgNjE0UTQ2MSA1NzEgNDM1IDUwN1Q0MDUgMzgxVjM2N0g1ODFMNTYzIDM0N1E1NjEgMzQ0IDU1OCAzNDFUNTUzIDMzNVQ1NDkgMzMwVDU0NiAzMjZMNTQ1IDMyNUg1NDFRNTM3IDMyNSA0ODggMzI5VDQxMSAzMzRINDA1VjMyNVE0MDUgMTk4IDQ1NCAxMjNRNDk3IDU0IDU2OCA1NFE1OTQgNTQgNjE5IDY0VDY2MCA4NEw2NzYgOTVWNzRMNTY1IC0xNkw1NTMgLTIwUTUyOCAtMjcgNTEyIC0yN1E0OTIgLTI3IDQ3NSAtMjFUNDQ0IC01VDQxOCAxOVQzOTggNDdUMzgyIDc3VDM3MSAxMDVUMzYzIDEyOFQzNTggMTQ1TDM1NyAxNTFRMzU0IDE1MSAzMzkgMTM2VDI5NCA5MVQyMzIgMzdRMTUyIC0yMiAxMTMgLTIyUTkwIC0yMiA2OSAtOVQzOCAxN1QyOCAzMlEyOCAzMyA1OCA2OEw4NiAxMDFROTQgODEgMTE1IDY0VDE2NSA0N1EyMDYgNDcgMjQ5IDg0UTMwMiAxMjggMzI1IDIyMlEzMzQgMjYzIDMzNiAzMTJWMzM0SDMxMlExOTggMzM0IDE2MyAzMjRIMTYxUTE2MiAzMjYgMTgyIDM0OEwxOTggMzY3SDMzNlYzOThRMzMzIDUwOCAzMDggNTUwUTI5NSA1NzAgMjc0IDU4NVQyMjcgNjAxUTIwNCA2MDEgMTgxIDU4OVQxNDUgNTY1VDExNSA1MzNUOTYgNTExJyxcbiAgICAweDFENTFDOiAnMTIzIDM0NVExMjMgMzU4IDc1IDQxNVQyNyA0OTZRMjcgNTMzIDYzIDU3OFQxMjEgNjM5UTE4MSA2ODUgMjU2IDY4NVEzMDUgNjg1IDMzMiA2NzZUMzg0IDYzNVE0MTkgNTg4IDQyNSA1NDJRNDY4IDU4NSA1MjYgNjI4VDYxOCA2ODZRNjMyIDY2NyA2NTggNjQ1VDcwNCA2MDlUNzI0IDU5NFE3NDAgNTEyIDc0MCAzODVWMzc1VjM2MVE3NDAgMTI4IDY4MiAtM1E2NTYgLTY0IDU1NCAtMTQxVDM2MSAtMjE4UTMxOSAtMjE4IDI4NyAtMjAzVDI0MyAtMTczVDIzMCAtMTUwUTIzMCAtMTQ4IDI2NyAtMTA5TDMwNCAtNjlRMzExIC0xMTUgMzQxIC0xNDJUNDExIC0xNzBRNDc0IC0xNzAgNTM0IC0xMTlUNjI0IDExUTY2MCAxMTEgNjYwIDMxMlE2NjAgNDQ3IDYzMyA1MjhMNjEyIDU0OVE1NzggNTgzIDU1MiA1OTZMNTQzIDYwMUw1MjggNTkyUTUwMSA1NzQgNDgzIDU1OFE0NTQgNTI4IDQzNiA0OTRMNDMxIDQ4NFY0NzNRNDMxIDMzMCAzNzYgMjMwUTM2NiAyMTMgMzU5IDIwNlQzMDYgMTU5TDI1MCAxMTJRMjc4IDEwNSAzMjcgODJUMzk5IDU4UTQyMSA1OCA0NDAgNjlUNDcxIDkyVDQ4NCAxMDRINDg1TDQ5MyA5MEw0ODAgNzNRNDUzIDM5IDQyOSAxM1EzOTMgLTIyIDM3MiAtMjJRMzQyIC0yMiAyNjAgMTVUMTUzIDUzUTk3IDUzIDQ4IC0xNkwzOCA1UTQ2IDIyIDc0IDU0VDEyOCAxMDhMMTQzIDEyMkgxNTVRMjI2IDEyNyAyNzUgMTY4UTM1MiAyMzYgMzUyIDM5OVEzNTIgNTAxIDMwOSA1NjRUMTk3IDYyOFExNTYgNjI4IDEyOSA2MDdUMTAyIDU1M1ExMDIgNTE3IDE0NyA0NjNUMTkyIDM4M1ExOTIgMzIzIDc1IDI1MEw1OSAyNjZRMTIzIDMxNCAxMjMgMzQ1JyxcbiAgICAweDFENTFFOiAnODYgMzYzUTg2IDM2NSAxMjggMzkxVDIxMiA0NDRMMjU1IDQ3MFEyNTYgNDcwIDI2MyA0NjVUMjgzIDQ1M1QzMDggNDQyUTMzOCA0MzEgMzQ2IDQzMVEzNTAgNDMxIDM1OCA0MzZMNDE0IDQ2NUw0MjEgNDU5TDQxOCA0MzRRNDA0IDMzOSA0MDQgMjYyUTQwNCAxNDcgNDA4IDExOUw0MjUgOTdRNDQzIDc0IDQ0NCA3NEw0NjcgODZMNDkxIDk3UTQ5MiA5NyA0OTcgODNMNDM2IDI4UTM3NyAtMjYgMzc0IC0yNkwzMzEgNDZMMzI5IDkxTDE1NSAtMzVRMTUyIC0zNSAxMTQgMTBUNjggNjVMNjcgODZRNjYgMTAwIDY2IDE1NlE2NiAxNzcgNjYgMTk4VDY4IDIzNlQ3MSAyNjhUNzQgMjk2VDc3IDMyMFQ4MCAzMzhUODMgMzUxVDg2IDM2MFYzNjNaTTMxNCAzNjVRMjg1IDM2NyAyNTUgMzc0VDIwNiAzODZMMTg3IDM5MlExODEgMzkyIDE3MiAzNzZUMTU0IDMxMVQxNDUgMTk3UTE0NSAxMjQgMTUxIDExOFExNTYgMTEwIDE4NyA3OEwyMDggNTZIMjE0UTIyMSA1NyAyNTMgNzZMMzA4IDEwOUwzMjkgMTIzVjEzNlEzMjggMTQzIDMyOCAyNTdWMzY1SDMxNCcsXG4gICAgMHgxRDUxRjogJzE3NyA0MjdRMTc3IDM2NCAxODEgMzY0UTE4NCAzNjQgMTkyIDM3MFQyMjMgMzk1VDI3MSA0MzNRMzE3IDQ2OSAzMjMgNDY5UTMyNSA0NjkgMzM4IDQ2MlQzNzcgNDQwVDQzMiA0MTNMNDQwIDQwOUw0NDEgMzk2UTQ0MSAzOTQgNDQxIDM3MlQ0NDIgMzM0UTQ0MiAyMDMgNDI1IDEwOEw0MjMgOTdMNDAwIDgzUTM0NyA0OSAyOTYgMjFUMjIyIC0xOVQxOTYgLTMxUTE5MiAtMjkgMTQ5IDEyVDg3IDcxTDg5IDg5UTEwMCAxNTUgMTAwIDMxOVExMDAgNTAwIDk0IDYyN1E5NCA2MzIgOTQgNjM4VDk0IDY0OFQ5NCA2NTZUOTMgNjYyVjY2NFE5MyA2NjggOTcgNjY5VDEwNiA2NzBIMTEwUTExNCA2NTMgMTE4IDYzM0wxMjcgNTk2UTEyNyA1OTUgMTMyIDU5N1ExMzYgNTk5IDE5NSA2NDJMMjU1IDY4NUwyNzIgNjczUTI2OSA2NzAgMjU2IDY1OVQyMzMgNjM3VDIxMSA2MDlUMTkwIDU2NVQxNzkgNTA4UTE3NyA0OTQgMTc3IDQyN1pNMjk1IDM3N0wyNzQgMzg1UTI3MyAzODUgMjY0IDM4MVQyNDIgMzcwVDIyMyAzNjFRMjEzIDM1NSAxODggMzQwTDE3OCAzMzNWMTIzTDE5OCAxMDNRMjU5IDQyIDI4NSA0MlEyOTkgNDIgMzE0IDU1VDMzOSA4NVEzNjMgMTMyIDM2MyAyMzJRMzYzIDMxMCAzNTggMzQzVjM0OUwzNDUgMzU1UTMzMCAzNjMgMjk1IDM3NycsXG4gICAgMHgxRDUyMDogJzcyIDIwOFE3MiAzMjMgODQgMzYxUTg0IDM2MyAxNjcgNDE0UTI0OCA0NjYgMjUwIDQ2NlEyNTUgNDY1IDI2MCA0NjVRMjgzIDQ2MCAzMDcgNDUwVDM0NCA0MzBMMzU3IDQyMkwzMDYgMzQzTDMwMSAzNDJMMjk2IDM0MFEyNjcgMzYyIDI0NyAzNzJUMjE2IDM4NFQxNzcgMzkwUTE1NCAzNDkgMTU0IDIzOFExNTQgMjIwIDE1NiAxNThWMTQ1TDE2OCAxMzJRMTc5IDEyMSAyMDggOTNUMjQ0IDU5UTI0NSA1OCAyNDYgNThRMjU1IDU4IDMwMiA4M1QzNTAgMTA4TDM1MiAxMDRRMzU1IDEwMCAzNTYgOTZMMzU4IDkyUTM1OCA5MSAyNzQgMzJUMTg3IC0yOUwxNzcgLTIwUTE2MCAtNiAxMjAgMzZUNzcgODRRNzcgODcgNzUgMTE4VDcyIDIwOCcsXG4gICAgMHgxRDUyMTogJzEzIDU0MlExMyA1NDQgNzcgNTc2VDE0NyA2MDlRMTU0IDYwOSAxODUgNTk4VDI4MyA1NTFUNDE0IDQ2NEw0MjcgNDU0VjQ0MFE0MjcgNDM2IDQyNyA0MTJUNDI4IDM3MlE0MjggMzE1IDQyNiAyNzBUNDE4IDE5N1Q0MDkgMTUyVDQwMCAxMjFUMzk0IDEwM0wzMDQgMzVRMjg1IDIxIDI2MSAyVDIyNSAtMjVMMjE0IC0zM1ExNDkgNyA5NyA1OUw3NiA4MEw3NSA5MVYxNzFRNzUgMjIxIDc2IDI1NFQ3OSAyOTlUODAgMzEzUTgwIDMxNSA3OCAzMjFRNzggMzIzIDc4IDMyNkw3NyAzMzBRNzkgMzM2IDEzMiAzODRUMjExIDQ0N0wyMTkgNDQ1UTIyMSA0NDUgMjI0IDQ0NEwyMjggNDQzUTIyOSA0NDMgMjI4IDQ0MVQyMjEgNDMyVDIwNiA0MTVMMTkxIDM5NVExNzUgMzc4IDE2MiAzMzlRMTUyIDMwNiAxNTIgMjUwUTE1MiAyMTcgMTU5IDE0MFYxMzRMMTcxIDEyMVExOTQgOTkgMjM1IDc0VDI4NCA0OFEyOTYgNDggMzEwIDc1VDMzNyAxNTZUMzQ5IDI2N1EzNDkgMzQ2IDMzNiA0MDBMMzE1IDQyMFEyNDYgNDg5IDE3NiA1MjVRMTI3IDU0NSA5NCA1NDVINzNMMjcgNTI3TDEzIDU0MicsXG4gICAgMHgxRDUyMjogJzM1MyAxMDNRMzUzIDk3IDM1OCA4N0wzMzcgNzFRMjkzIDM4IDI0NyA2UTE5MSAtMzAgMTg5IC0zMFExODggLTMwIDE3MyAtMTZUMTMwIDI2VDc2IDg1TDc0IDk5UTcwIDEzOSA3MCAxOTBRNzAgMjI4IDczIDI3MVQ3OSAzMzhUODQgMzY1TDk0IDM3MlExMDUgMzc4IDEyNiAzOTJUMTY2IDQxN0wyNDYgNDY3UTI4MyA0MTcgMzQ5IDM2OUwzNjQgMzU4TDM1NSAzNDlRMjQ5IDI0OSAxNjkgMTgwTDE1MSAxNjZMMTUyIDE1MlYxMzlMMTY1IDEyNlExODYgMTA1IDIxNSA4NFQyNjAgNjJRMjY3IDYyIDMwOSA4MkwzNTMgMTAzWk0yNjcgMzIzUTI0NiAzMzcgMjMwIDM1MFQyMDQgMzcxVDE4OSAzODVUMTc5IDM5NFQxNzQgMzk3UTE0OSAzODEgMTQ5IDIxOVYyMTFRMTUxIDIxMSAxNzEgMjIzVDIyMCAyNThUMjY4IDI5OUwyODIgMzEzTDI2NyAzMjMnLFxuICAgIDB4MUQ1MjM6ICcxMjggMzg3UTEyOCAzOTEgMTEyIDQ1NlQ5MiA1NDZWNTU1TDEwMSA1NjhRMTMzIDYxNyAxODMgNjcwTDE5MyA2ODFMMjA0IDY3M1EyMzggNjQ4IDI2MiA2NDhRMjc2IDY0OCAyOTIgNjU2TDMwMiA2NjFMMzA4IDY1M1EzMDggNjUyIDI3OCA2MThMMjQ5IDU4NUgyMzRRMTk0IDU4NyAxNTkgNTk1UTE1OCA1OTUgMTU2IDU5NkgxNTNMMTUwIDU5N1ExNTEgNTkzIDE1MiA1ODFUMTU0IDU2NFQxNTcgNTQ3VDE2NCA1MjRUMTc2IDQ5NFExOTkgNDM2IDIwMyA0MDBWMzkySDIwN0wzMjMgMzg2UTMyMyAzODQgMzA5IDM2OEwyOTYgMzUxSDIwM1YxNzZRMjAxIC05IDE5OCAtMzJRMTk0IC02MSAxNjYgLTExNFExNTggLTEyOSAxNTMgLTEzOFExMTQgLTIxNCAxMTAgLTIyMVExMDUgLTIyMSA5OCAtMjIwTDg3IC0yMTlWLTIxNlE4OCAtMjE1IDEwNiAtMTUwVDEyNCAtODJRMTI4IC03MyAxMjkgMTU1VjM1MUgzMEw2NCAzODZIOTZRMTI4IDM4NiAxMjggMzg3JyxcbiAgICAweDFENTI0OiAnMjcgLTE0NEwxNyAtMTMxTDgyIC03NUwxNDYgLTIwTDEyNiA2UTk5IDM3IDkyIDQ4TDc4IDY1TDc3IDc5UTc1IDEwMyA3NSAxNThRNzUgMjE3IDc4IDI2OFQ4NiAzNDNUOTEgMzY4UTkyIDM3MCAxMDkgMzgyVDE1NyA0MTNUMjIyIDQ1MlEyNDAgNDY1IDI0OSA0NjlMMjUxIDQ3MFEyOTYgNDQzIDM1MCA0MjhMMzY1IDQyNEw0MzcgNDY1TDQ0MiA0NTlRNDQyIDQ1NiA0NDEgNDUzVDQzNyA0NDRUNDMyIDQyNFQ0MjcgMzg1VDQyMyAzMTdUNDIxIDIxNVYxMzNMNDIzIDExOVE0MjMgMTExIDQ1NSAtMTdRNDU1IC0yMSAzODAgLTEwOFQyOTAgLTIwMVEyOTAgLTIwMiAyODQgLTIwNFQyNjkgLTIwN1QyNTIgLTIwOVExNzIgLTIwOSA3NSAtMTM1TDYyIC0xMjZRNjAgLTEyNiA0NCAtMTM1TDI3IC0xNDRaTTM0OSAzNTFRMjY3IDM1OSAxNzggMzg5UTE3NyAzODcgMTczIDM3NlQxNjYgMzU4VDE2MSAzMzdUMTU3IDMwM1QxNTUgMjU5UTE1NSAxOTUgMTU5IDEzNUwxNjAgMTI0TDE3MCAxMTJRMTgwIDEwMSAyMDQgNzdUMjMwIDUzUTIzMSA1MyAyODYgODhMMzQwIDEyM1YxNDFRMzQwIDIzNSAzNDggMzI5UTM0OCAzMzQgMzQ4IDMzOVQzNDggMzQ4TDM0OSAzNTFaTTM2NCAtNTlRMzY0IC0zNyAzNTggLTFUMzQ3IDY0VDM0MSA5M1EzMzYgOTMgMjUyIDI4VDE0OSAtNTdRMjI2IC0xMzQgMjkzIC0xMzRRMzI1IC0xMzQgMzQ0IC0xMThUMzY0IC02OVYtNTknLFxuICAgIDB4MUQ1MjU6ICc4OCA0MjdRODggNDg2IDg3IDU0NVQ4NCA2MzRUODEgNjY3UTgxIDY3MyA4MiA2NzNUODkgNjc2SDk0TDExNyA2MDBMMjAwIDY2MVEyMDggNjY3IDIxOCA2NzRUMjMzIDY4NEwyMzggNjg4TDI1NCA2NzhRMjIyIDY0NiAyMTYgNjM3UTE2NCA1NzIgMTY0IDQ4M1Y0NDJWMzcxUTE4NyAzOTAgMjQ0IDQzMVQzMTIgNDc4UTM0NCA0NDYgNDExIDQyM0w0MjggNDE3TDQyOSAzOTZRNDM0IDI5NyA0MzQgMjE4UTQzMCA4IDQwNiAtMzRRMzQ2IC0xMTEgMjYyIC0xOTVMMjUxIC0yMDVMMjQ5IC0yMDNRMjQ4IC0yMDMgMjQ0IC0xOTlUMjM2IC0xOTNRMjI2IC0xODMgMjI3IC0xODJRMjI4IC0xODIgMjQ0IC0xNjlUMjc4IC0xNDBUMzAxIC0xMjFRMzMwIC04OSAzNDAgLTIyUTM1NSA2MCAzNTUgMTcxUTM1NSAyMDAgMzUzIDI0NFQzNDggMzIxVDM0NCAzNTRRMzMzIDM2MyAzMDcgMzc2VDI2MCAzOTBRMjQxIDM5MCAxNzkgMzUwTDE2NCAzNDFWMTIxUTE4MCA5NiAyMDEgNjZMMjEzIDUwUTIxMCA0NiAxNzIgMTFUMTMxIC0yNFExMzAgLTI0IDEyMyAtMTFUMTAyIDI1VDc3IDY1Vjc4UTgwIDEwNCA4NCAyMjdUODggNDI3JyxcbiAgICAweDFENTI2OiAnNzIgNjE3UTcyIDYxOCAxMDIgNjQ1VDEzMyA2NzNIMTM0UTEzNCA2NjggMTc1IDYyN0wxODcgNjE1TDEzMCA1NTVMMTE2IDU2OFE3MiA2MTUgNzIgNjE3Wk0yNyAzNjlRMjEgMzc2IDE0IDM4MkwyNiAzOTJRODMgNDQwIDExOSA0NzRRMTU4IDQzNSAxNjkgNDI3TDE3OSA0MjBMMTc2IDM5NVExNjYgMzAyIDE2NiAyMjdRMTY2IDE3MSAxNzQgMTM5UTE3OCAxMTkgMTg2IDEwM1QyMDIgODFMMjA4IDc1UTI1NSAxMDAgMjYxIDEwMFEyNjIgMTAwIDI2NCA5MlQyNjcgODNRMjY3IDgwIDIwOCAzMFQxNDUgLTIwUTE0MyAtMjAgMTE4IDE3TDkxIDU1UTk4IDExNyA5OCAxOTNROTggMzM5IDg4IDM2OVE3MSAzOTAgNjggMzkwUTYzIDM5MCAzOSAzNzZMMjcgMzY5JyxcbiAgICAweDFENTI3OiAnMTAxIDY0NEwxMzIgNjcyTDE0NSA2NTdRMTU1IDY0MiAxNjkgNjI4TDE4MiA2MTRMMTY5IDYwMFExNDggNTc5IDE0MCA1NzBMMTI1IDU1NUwxMTIgNTY4UTEwOSA1NzAgOTEgNTkyVDcyIDYxNVE3MiA2MTcgMTAxIDY0NFpNMTkgLTIwOFEtOSAtMTg1IC05IC0xODNRNTcgLTEzNCA4MCAtMTA2UTEwMyAtODEgMTEwIC0xOVQxMTggMTc5UTExOCAyOTQgMTEzIDMyOVQ4NiAzODNRNzggMzg5IDc2IDM4OVE3MyAzODkgNTcgMzc5TDM5IDM2N1EyNiAzODAgMjYgMzgxTDMzIDM4N1E0MCAzOTMgNTMgNDA1VDc5IDQyOEwxMzAgNDc0UTE0NyA0NTcgMTg2IDQyOEwxOTUgNDIyTDE5NiAzNzZRMTk2IDEzMCAxOTIgNThUMTc0IC0zNVExNzIgLTM5IDEwNCAtMTE0VDE5IC0yMDgnLFxuICAgIDB4MUQ1Mjg6ICc5MyAzNDhROTMgMzc5IDkwIDUwM1Q4NyA2NThWNjcwUTg3IDY3MSA5NCA2NzFMMTAwIDY3MkwxMTIgNjM2UTEyNCA2MDMgMTI0IDYwMEwxNDQgNjE2UTE5NiA2NTkgMjM0IDY4MkwyNDYgNjg5UTI1MiA2ODYgMjU2IDY4NVQyNjggNjgwTDI1NCA2NjdRMjI1IDY0MSAyMTEgNjI2VDE4NCA1NzlUMTY4IDUwNVY0OTdMMTc4IDUwNFEyMDMgNTIzIDIzNyA1NDRMMzAwIDU4NEwzMTAgNTczUTM1OSA1MjIgMzU5IDQ4MVEzNTkgNDc2IDM1OSA0NzJUMzU4IDQ2NFQzNTUgNDU2VDM1MSA0NDhUMzQ2IDQ0MFQzNDAgNDMzVDMzMiA0MjRUMzIzIDQxNFQzMTIgNDAyVDI5OSAzODlMMjU1IDM0M0wzMDAgMzQySDM0NkwzMjAgMzA5SDE3N1YxMjhMMTkzIDExM1EyMTQgOTIgMjQ0IDY4TDI1NCA2MEwzMDMgODRRMzUxIDEwOCAzNTIgMTA4TDM2MiA5NlEzNTUgODUgMjc3IDMwVDE5NCAtMjVMMTcwIC00UTE0NiAxOCAxMjAgNDFUODkgNjhROTQgODUgOTQgMTY4UTk0IDE4NCA5NCAyMThUOTMgMjY4VjMwOUg1OEwyNCAzMTBMNTEgMzQySDkzVjM0OFpNMTcyIDM0MlEyMTcgMzQyIDI1MiAzNzRUMjg3IDQ0NVEyODcgNDcyIDI1NSA1MDRRMjQyIDUxNyAyNDEgNTE3UTIwMiA0OTggMTg3IDQ2OFQxNjggMzY1VjM0MkgxNzInLFxuICAgIDB4MUQ1Mjk6ICcyMjEgNzZMMjY3IDk5UTI2OCA5OCAyNjkgOTZUMjcxIDg4VDI3MCA4MkwyNjIgNzZRMjU1IDY5IDI0MSA1N1QyMTQgMzRMMTQ4IC0yMEw5OCA1Nkw5OSA4OVExMDcgMjQ3IDEwNyAzNzNRMTA3IDQ5NCAxMDEgNjIxUTEwMSA2NTMgOTkgNjU5VjY2NUwxMDYgNjY4TDExMyA2NzJMMTE4IDY1NVExMjIgNjQyIDEzMSA2MTdMMTM4IDU5N1ExNDAgNTk3IDE1NyA2MTFMMjQwIDY3MEwyNjQgNjg1UTI2NSA2ODUgMjcwIDY4MFQyNzYgNjc0VDI2OSA2NjdUMjQ3IDY0N1QyMTkgNjE3UTE5NyA1ODcgMTg2IDU1MVQxNzMgNDkzVDE3MSA0MzhRMTcxIDM3NiAxNzUgMjgyVDE3OSAxNDdWMTE3UTE4NCAxMDkgMjAxIDkzVDIyMSA3NicsXG4gICAgMHgxRDUyQTogJzIwIDM2N0w4IDM3OVE5IDM4MCA2MyA0MjVUMTE4IDQ3MVExMzAgNDYwIDE0MyA0NDZMMTY4IDQyMVYzOThMMTY5IDM3NkwyOTUgNDc1UTM2MiA0MzMgNDE1IDQxOFYzOTlRNDE1IDM4MCA0MTYgMzgwVDQzNyAzOTRUNDg0IDQyOFQ1MjkgNDYyTDU0NCA0NzRMNTU2IDQ2N1E1OTAgNDQ5IDYxNCA0MzhUNjQ2IDQyNEw2NTMgNDIxTDY2NSA0MTdMNjY0IDQxMlE2NjQgNDExIDY2NCA0MDdUNjY0IDM5N1Q2NjMgMzg0UTY2MCAzNDIgNjYwIDMzNVE2NTggMzAzIDY1OCAyNDVRNjU4IDE4NiA2NjAgMTUyTDY2MSAxMjZMNjY5IDExNVE2ODAgOTYgNjk3IDc5TDcwNyA4M1E3MTYgODcgNzIzIDkwVDczNSA5NlQ3NDEgMTAwVDc0NiAxMDJMNzQ3IDEwM1YxMDJMNzUwIDk1UTc1MyA4OCA3NTMgODdMNjMxIC0xOFE2MzAgLTE3IDYyMiAtM1Q1ODkgNDNMNTc2IDYwTDU3OSA3MlE1OTIgMTQ2IDU5MiAyMThRNTkyIDI2NSA1ODQgMzIxUTU4MSAzNDUgNTc4IDM1MFQ1NjAgMzYzUTUzNSAzNzYgNDk2IDM4Nkw0ODEgMzkwUTQ3NSAzODcgNDI1IDM1OEw0MTUgMzUxVjIzOFYxNTdRNDE1IDE0MiA0MTUgMTM1VDQxNyAxMjBUNDIxIDExMFQ0MzAgOThUNDQxIDgxTDQ2NSA0N1E0NjIgNDQgNDU4IDQxVDQ0MyAyOFQ0MjAgOEwzODAgLTI2TDMzMyA0N0wzMzYgNjJRMzM5IDc3IDM0MiAxMDlUMzQ1IDE4NFEzNDUgMjIzIDM0MSAyODVUMzMzIDM0OFEzMjIgMzY0IDI1OCAzODJMMjQwIDM4OEwxNjkgMzQ3TDE2OCAyNDBRMTY4IDExOCAxNzEgMTEwTDE3NCAxMDZRMTc4IDEwMSAxODMgOTNUMTk1IDc4TDIxNyA0OFEyMTcgNDcgMTk2IDMwVDE1NCAtNVQxMzMgLTIxTDEzMCAtMTZRMTI3IC0xMCAxMjIgMFQxMTEgMTlRODkgNTYgODkgNjBROTUgNzYgOTUgMTUzUTk1IDIzOSA4OCAzMzdWMzY1TDYyIDM5MUwyMCAzNjcnLFxuICAgIDB4MUQ1MkI6ICczMSAzNjhRMjAgMzc5IDIwIDM4MFQ3MiA0MjdMMTIxIDQ3MEwxMjkgNDYzUTEzNyA0NTUgMTU1IDQ0MVQxNzYgNDI1VjM2N0wzMjAgNDc1TDMyOSA0NjlRMzUxIDQ1NCAzODUgNDM3VDQzNCA0MTdMNDMyIDQwMlE0MjkgMzYyIDQyOSAyMzFWMTI4TDQzOSAxMTFRNDQyIDEwNyA0NDUgMTAyVDQ0OSA5NVQ0NTMgOTBUNDU2IDg2VDQ1OSA4NFQ0NjMgODJUNDY3IDgyUTQ2OCA4MiA0ODkgOTNUNTExIDEwNVQ1MTQgOTVWODhMMzk1IC0xOEwzNDAgNjVMMzQxIDc3UTM0NyAxMTEgMzQ4IDE3OFEzNDggMzQzIDM0MyAzNTNWMzU4TDMzMiAzNjNRMjk4IDM3NyAyNjQgMzgyUTI2MCAzODIgMjU0IDM4MkwyNDkgMzgzUTI0NyAzODMgMjExIDM2MkwxNzYgMzQxVjIyOVYxNDdRMTc2IDEzNCAxNzYgMTI3VDE3NyAxMTVUMTc5IDEwNlQxODMgOTlUMTg5IDkxVDE5NyA4MVEyMDEgNzYgMjA2IDY5VDIxNCA1N0wyMTcgNTNRMjE3IDUyIDE3NSAxNVQxMzIgLTIyUTEzMiAtMjAgMTE0IDVUODggNDFRODQgNDUgODQgNTBROTQgMTE2IDk0IDIwM1E5NCAyMjcgOTMgMjYzVDkyIDMyNEw5MCAzNjRMNjcgMzg4TDUwIDM3OFEzMiAzNjggMzEgMzY4JyxcbiAgICAweDFENTJDOiAnNjcgMTIxUTcwIDI2NSA4NCAzNTlWMzY0TDk3IDM3MVExMzcgMzk0IDE3NyA0MjFUMjM4IDQ2NFQyNjAgNDgwTDI3OCA0NjhRMjk1IDQ1NyAzMjcgNDQyVDM5NCA0MThMNDA2IDQxNFE0MTIgMzg4IDQxMiAzMDBRNDEyIDI2MyA0MTAgMjI4VDQwNSAxNzBUMzk5IDEzMFQzOTMgMTAzVDM5MSA5MkwzODEgODZRMjc0IDE5IDE2NSAtMjhMMTYxIC0yNFExNTcgLTIxIDE1MSAtMTVUMTM2IC0yVDExOCAxNFQxMDEgMzBUODYgNDZUNzQgNjBMNjcgNjhWMTIxWk0zMzUgMjc4UTMzNSAyODYgMzM1IDMwM1QzMzQgMzM1TDMzMyAzNDlWMzU2SDMyNlEyODggMzYwIDIwOCAzODhMMTgzIDM5N1ExNzggMzkzIDE3MiAzODNUMTU0IDMzM1QxNDIgMjM5UTE0MiAxOTIgMTUxIDEzNFExNTIgMTI0IDE1NSAxMjBUMTc1IDk5UTE5NyA3NyAyMTkgNjRUMjUxIDQ3VDI2NyA0NFQyODEgNTJUMzAyIDgwVDMyMCAxMjRRMzM1IDE4MiAzMzUgMjc4JyxcbiAgICAweDFENTJEOiAnMjMgMjVRMTUgMzMgMTIgMzhMMzUgNTlRODIgMTAyIDg3IDEwNVYzNTFMNjggMzc4UTQyIDQxNCA0MiA0MjJRNDIgNDM3IDY3IDQ3MlQxMTQgNTMwTDEyNSA1NDFRMTI2IDU0MSAxMzIgNTM3VDEzOCA1MzJRMTIxIDUwNyAxMjEgNDg4UTEyMSA0NTMgMTYwIDQxM0wxNjcgNDA1TDE2NiAzOTBMMTY1IDM3MlExNjkgMzcyIDIzMyA0MjFUMzA1IDQ3OFEzMDcgNDc5IDMxNSA0NzJRMzk1IDQyMSA0MjMgNDE1UTQyNCA0MTUgNDI0IDQxNVQ0MjUgNDE0TDQyNiA0MTBRNDI2IDQwNyA0MjYgNDAxVDQyNiAzODhRNDMwIDMzNSA0MzAgMjcyUTQzMCAxMzkgNDA4IDgwUTQwNyA3OCAzNDAgMjJMMjczIC0zM1EyMDAgMjMgMTY1IDIzUTE2NCAyMyAxNjQgLTMyUTE2NSAtODkgMTY4IC0xNTVWLTE3MEw5MyAtMjEyTDc4IC0yMDNRODUgLTQ4IDg3IDE2VjQ3SDc5UTUzIDQ0IDIzIDI1Wk0zMTkgNDFRMzQ2IDk0IDM0OSAyMTJRMzQ5IDI3OCAzNDMgMzQzVjM1MUwzMzAgMzU3UTMxOCAzNjMgMjcwIDM4MUwyNTUgMzg3TDI0NSAzODNRMjEyIDM3MCAxNzggMzQ1TDE2NiAzMzZWMjg3UTE2NSAyNjAgMTY1IDE2NlY5NEgxNzVRMjE5IDkwIDI5OSA1MUwzMTkgNDFaTTEzMiA1N0wxMjkgNjBRMTMwIDU4IDEzMiA1N1pNMTU4IDI5UTE1OSAyOSAxNTUgMzRUMTQ1IDQ1VDEzOCA1MFExNTUgMjkgMTU4IDI5JyxcbiAgICAweDFENTJFOiAnMzk5IDE5UTM5OSAtMTIzIDQwNyAtMTc0Vi0xNzlMMzMyIC0yMTlMMzIyIC0yMTBMMzEyIC0yMDJMMzE0IC0xODVRMzIwIC04MyAzMjMgNTRWOTVMMzExIDg1UTI1NSA0MCAxNjIgLTE5UTE0NiAtMjkgMTQ1IC0yN1ExNDAgLTIyIDEwMyAyMEw2MyA2NVY3M1E2MSA4MyA2MSAxMTVRNjEgMTIyIDYxIDEzNVQ2MCAxNTRRNjAgMjYzIDc5IDM1M0w4MyAzNjhMOTQgMzc1UTEyMyAzOTEgMTQ3IDQwNVQxODYgNDI5VDIxMiA0NDZUMjI5IDQ1OFQyMzggNDY2VDI0MyA0NzBUMjQ3IDQ3MUwyNjAgNDY0UTI3NCA0NTcgMjk1IDQ0OFQzMzAgNDM0TDM0MSA0MzJMNDEwIDQ3OUw0MTIgNDc4UTQxNCA0NzYgNDE2IDQ3NVQ0MTkgNDczTDQxNyA0NjFRMzk5IDM1OCAzOTkgMTlaTTMxNiAzNjdRMjg3IDM3MCAyNTIgMzc3VDE5NiAzOTFMMTc2IDM5N0gxNzVRMTczIDM5NyAxNjYgMzgyVDE0OSAzMTRUMTM5IDE4N1YxNThRMTM5IDEzOCAxNDEgMTMyVDE1NSAxMTRRMTU4IDExMSAxNjAgMTA5UTIxMCA1OCAyMTEgNThMMjE4IDYyUTIyNiA2NyAyNDAgNzVUMjY2IDkxTDMxOSAxMjRWMTk2UTMxOSAzMzQgMzI1IDM2MVYzNjdIMzE2JyxcbiAgICAweDFENTJGOiAnMzU3IDM5OFEzNjQgMzk4IDM3NSA0MDNMMzg2IDQwOFEzODYgNDA0IDM4NyA0MDBWMzkzTDM2OSAzNzdRMzYxIDM3MCAzNTAgMzYwVDMzNiAzNDdUMzI3IDM0MFQzMTYgMzM2VDMwMyAzMzVRMjcwIDMzNSAyMzQgMzcxTDIyNCAzNzlRMjIwIDM3NSAyMTQgMzcwVDE5OCAzNTVMMTgyIDM0MFYyNDNRMTgyIDE2NCAxODMgMTUyVDE4OSAxMjlRMTk1IDExNyAyMTEgMTAwVDIzOSA3MlQyNTQgNjBUMjk4IDgxUTM0MiAxMDEgMzQzIDEwMVEzNDQgMTAwIDM0NSA5MlQzNDYgODJMMjAwIC0yMVExNzQgLTUgMTE3IDU1TDk3IDc1TDk5IDkyUTEwNiAxNDcgMTA2IDE5NlExMDYgMjE2IDEwNCAyODJUOTcgMzU1UTk1IDM1OSA5NSAzNjFROTUgMzY0IDc3IDM3OEw2NSAzODdMNDggMzgwUTMwIDM3MiAyOSAzNzJRMjggMzcxIDIzIDM3NVQxNyAzODBRMTcgMzg0IDUwIDQxNVQxMDcgNDY3TDExNSA0NzRMMTI4IDQ2MVExNzEgNDIxIDE4MiA0MTRWMzgyTDIzNSA0MjVRMjQ3IDQzNSAyNjEgNDQ2VDI4MyA0NjJMMjkwIDQ2OEwyOTUgNDYwUTMzNSAzOTggMzU3IDM5OCcsXG4gICAgMHgxRDUzMDogJzI3MiAzM1EyODQgMzMgMjkwIDcwVDI5NiAxMzhRMjk2IDE4MSAyOTAgMTk4VDI2MiAyMzBRMjU3IDIzMiAyNDYgMjMyUTIzMSAyMzIgMjE4IDIyN1QxNTYgMTk0TDEwOCAxNjdMMTAxIDE3NlE5MCAxOTIgNzUgMjE5TDY5IDIzMFYyODRRNjkgMzQ2IDcwIDM1N1YzNzdMMTQ2IDQyN1ExODEgNDUwIDIwMiA0NjRUMjIzIDQ3N0wyMjUgNDc2UTIyNyA0NzUgMjI5IDQ3NFEyMzEgNDcyIDI0MiA0NjZUMjcwIDQ1MFQyOTYgNDMxUTMwOSA0MTggMzI2IDQxOFEzNDIgNDE4IDM2MSA0MjlUMzkyIDQ1MFQ0MDMgNDU5UTQwNiA0NDUgNDA2IDQ0MlE0MDYgNDQwIDM4NCA0MjFUMzM4IDM4MkwzMTYgMzYzUTMxNSAzNjIgMzEwIDM2MlEyOTIgMzYyIDI1MSAzNzFUMTczIDM5NlExNTYgNDAzIDE1NSA0MDNRMTQzIDM4NiAxNDMgMzQyUTE0MyAzMDUgMTUwIDI3OFQxNjggMjQ0UTE3MSAyNDIgMTgxIDI0MkwxOTAgMjQzTDMxNSAzMDBRMzMwIDI5NSAzNTcgMjc0UTM1OCAyNzMgMzYyIDI3MFQzNjYgMjY2VDM2OSAyNjFUMzcyIDI1M1QzNzMgMjM5VDM3NCAyMTdUMzc0IDE4NVEzNzQgMTU3IDM3MiAxMzNUMzY4IDk4VDM2MyA3MVQzNTggNTBMMzM2IDQwUTI4OCAyMCAyNTUgMlQyMTEgLTIyVDE5OCAtMjlMMTkwIC0yMlExODEgLTE0IDE2OCAtM1QxMzggMTlUMTA0IDM4VDcwIDQ2UTUwIDQ2IDMyIDM3VDMgMjBULTkgMTFMLTE4IDIzTC0xIDQxUTQ2IDg5IDYyIDk5VDExMiAxMTBRMTQxIDExMCAxNTcgMTAzVDIyNSA2MlEyNjggMzMgMjcyIDMzJyxcbiAgICAweDFENTMxOiAnMjI4IDY0MEwyNDIgNjI3TDIyNyA2MTNRMjEzIDU5OSAyMTEgNTkzVDIwMyA1NTNRMTk3IDUwMCAxOTYgNDM1VjM4OUgzMDFMMjcyIDM1M0gxOTVWMjc0UTE5NSAxNzggMTk2IDE1OUwxOTcgMTIzUTI0OSA3MSAyNzMgNjhIMjgwTDMxMiA4M1EzNDQgOTkgMzQ1IDk5UTM0OCA5OSAzNDggNzhRMzQ4IDc2IDMxNCA1MlQyNDYgNEwyMTIgLTIwUTIxMSAtMjAgMTY0IDE5VDExMiA2MlExMTIgMTIyIDExMyAxOTZRMTEzIDIyOCAxMTMgMjYyVDExNCAzMThUMTE0IDM0MVYzNTNIMjdMNjIgMzg5SDExNkwxMTcgNDMxVjU1OEwyMjggNjQwJyxcbiAgICAweDFENTMyOiAnMTcxIDMxNVExNzEgMjUyIDE2NSAxOTlUMTUzIDEyNEwxNDcgMTAzUTE0NyAxMDIgMTk2IDgwTDI0NCA1N0wzMzUgMTA3VjExNlEzMzkgMTYxIDMzOSAyNjhRMzM5IDMxNSAzMzggMzUxVDMzNyA0MTJWNDI0TDQyMCA0NjhRNDI0IDQ2NSA0MjcgNDYxTDQyNCA0MzVRNDEyIDMzMSA0MTIgMjI2UTQxMiAxNzAgNDE1IDE0NVQ0MzQgOTZRNDQyIDg0IDQ1MiA4M1E0NjEgODMgNDkyIDk2TDUwNiAxMDJRNTA3IDEwMiA1MTAgOTZUNTEzIDg4TDQ5MyA3MVE0NDUgMzIgNDAxIC05UTM5MiAtMTggMzg4IC0xN0wzODQgLTE2UTM1OCAzOSAzNTUgNDRRMzM2IDc3IDMzMyA3N1EyNjEgNDUgMjAzIC05UTE4NiAtMjMgMTgxIC0yM1ExNzcgLTIzIDE2MiAtMTFUMTIxIDE4VDY5IDQ0TDU3IDQ4TDYxIDU0UTY1IDYwIDcxIDczVDgyIDEwMlExMDAgMTU2IDEwMCAyNjJRMTAwIDMwNSA5MyAzMzVUODAgMzczVDYyIDM5NkwyMyAzNzZRMTggMzc3IDkgMzg2TDExOSA0NzRRMTQ5IDQzNyAxNzEgNDIxVjMzOVYzMTUnLFxuICAgIDB4MUQ1MzM6ICc1NSA0MThRNTUgNDQzIDEwMCA1MDNRMTIxIDUzMCAxMjMgNTMwUTEyNSA1MjggMTI3IDUyOFQxMzEgNTI4VDEzNCA1MjhUMTM1IDUyNFQxMzEgNTE2UTEyMyA0OTkgMTIzIDQ4NlExMjMgNDU3IDE1OSA0MTZMMTY5IDQwNUwxNzAgMzg4TDE3MSAzNzJRMTcxIDM3MSAyNDQgNDI0TDMxNyA0NzdMMzM0IDQ2NlEzOTQgNDI4IDQzMiA0MTZMNDMzIDQwMlE0MzMgNDAwIDQzMyAzNzdUNDM0IDMzNlYzMDVRNDM0IDE5NSA0MjAgMTMxUTQxMyA5NCA0MDYgODdRNDAzIDg0IDI5OCAyOUwxOTIgLTI4TDE3MiAtOFExMzkgMjUgMTA2IDUyTDkyIDY0VjcwUTk1IDk3IDk1IDE5OFE5NSAyOTMgOTQgMzE4TDkyIDM1NUw4NCAzNjdRNTUgNDA2IDU1IDQxOFpNMTc0IDMwNlExNzQgMjk3IDE3MyAyNTVUMTcxIDE4NFExNzEgMTUzIDE3NSAxMzZUMTk4IDEwMFEyMDcgOTQgMjI0IDgwVDI1NSA1N1QyODIgNDlRMzA0IDQ5IDMyOCA4MFEzNTkgMTI5IDM1OSAyNDNRMzU5IDI4NCAzNTIgMzQ1UTM1MSAzNTggMzQ4IDM2MFEzMzMgMzczIDMwNCAzODRUMjY1IDM5NkwyNTEgMzkwUTIxNSAzNzIgMTg2IDM1MUwxNzUgMzQ0VjMzN1ExNzUgMzE5IDE3NCAzMDYnLFxuICAgIDB4MUQ1MzQ6ICc0NSA0MjVRNDUgNDM5IDgyIDQ4NVQxMjYgNTMyUTEyNyA1MzIgMTI4IDUzMlQxMzEgNTMxVDEzNyA1MjlMMTMyIDUxOVExMjEgNDk5IDEyMSA0ODNRMTIxIDQ3MyAxMzEgNDU0VDE1NiA0MTlMMTY3IDQwOEwxNjkgMzc2TDE4NSAzODhRMjM3IDQyNSAyOTEgNDczTDMwMSA0NjZRMzM3IDQ0MyAzOTQgNDE2TDQxOSA0MDVMNDE4IDM4N1YzNjlRNDE5IDM2OSA0ODcgNDE4VDU2MCA0NzFMNTgxIDQ1OVE1OTcgNDUwIDYyMSA0MzdUNjY0IDQxNVQ2ODQgNDA2UTY4OCA0MDYgNjg4IDMyM1E2ODggMjU0IDY3OSAxOTNUNjYyIDEwM1Q2NDggNzFRNjQ3IDcwIDU1NCAyMEw0NjQgLTI4TDQ0MyAtMTVRNDE2IDEgMzg2IDE3VDM0MyA0MFQzMzEgNDlRMzMxIDUyIDMzMyA3M1QzMzcgMTMzVDMzOSAyMTZRMzM5IDMwOSAzMzQgMzM5UTMzMyAzNDEgMzE2IDM1M1QyNzcgMzc3VDI0NiAzODlRMjM1IDM4OSAyMDEgMzY5VDE2NiAzNDZRMTY2IDM0NSAxNjQgMjQ3UTE2NCAyMzIgMTY0IDIxMFQxNjMgMTc5UTE2MyAxMzkgMTcwIDExNlQyMDUgNTdMMjEyIDQ4TDEzNiAtMjdRMTE1IDE2IDg3IDQ0TDc4IDUzTDgwIDY3UTg4IDEyNCA4OCAyMTFRODggMjgyIDg3IDMxNVQ4MyAzNTZUNzQgMzcxUTQ1IDQxMCA0NSA0MjVaTTU5MSAzNTJRNTgwIDM1OSA1NjUgMzY1VDU0MCAzNzRUNTE3IDM4MVQ1MDQgMzg1TDQxOCAzNDJMNDE3IDMxOFYyMjBRNDE3IDIxMiA0MTcgMTk0VDQxNyAxNzBUNDE4IDE1MlQ0MjAgMTM0VDQyNCAxMjBUNDMxIDEwNlQ0NDAgOTVUNDU0IDgzUTUwOCA0NCA1NDQgNDRRNTY2IDQ0IDU4MyA3N1E2MDMgMTIwIDYwNSAyMzVRNjA1IDI4OSA2MDAgMzIyUTU5OCAzNDMgNTk3IDM0NVQ1OTEgMzUyJyxcbiAgICAweDFENTM1OiAnMTQgMzc3UTYzIDQyOCAxMTcgNDcyUTEzMCA0NjIgMTQ0IDQ0OUwxOTMgNDA4VjM5MlYzNzZMMjQ3IDQyMFEzMDAgNDY0IDMwMSA0NjRMMzEwIDQ1MVEzMzEgNDE3IDM2MyAzOTBMMzMzIDM2NVEzMDMgMzQwIDMwMSAzNDBRMjkzIDM0MyAyNzcgMzY0VDI1MCAzODZRMjQxIDM4NiAyMTUgMzYxTDE5NSAzNDFRMTk0IDMzMyAxOTMgMzI3VDE5MSAzMThUMTkwIDMwNFQxODggMjY5UTE4OCAyMjAgMTkyIDE0OFExOTMgMTIyIDE5NSAxMThUMjEwIDEwMVEyNTUgNjAgMjcxIDYwUTI3NiA2MCAyNzggNjFMMzE4IDgyUTMyNyA4NiAzMzYgOTFUMzUxIDk4TDM1NiAxMDFRMzU5IDgyIDM1NiA3OVEzNTQgNzcgMjgzIDI3VDIxMCAtMjRMMTkyIC03UTE2MCAyMyAxMzcgNDBMMTI2IDQ5TDExNiA0MFE2NiAtMTMgNjYgLTU0UTY2IC0xMTcgMTY3IC0xNDBMMTc5IC0xNDJWLTE0N0wxODAgLTE1MkwxMjMgLTE4OEwxMTIgLTE4NVE1OCAtMTcwIDMxIC0xNDVRMTAgLTEyMiAxMCAtOTZRMTAgLTgwIDIyIC01M1E0NCAtMTAgOTUgNDlROTcgNTEgMTAwIDU0VDEwNCA1OVQxMDcgNjRUMTA5IDcxVDExMSA4MVQxMTIgOTdUMTEzIDExOVQxMTQgMTQ5VDExNCAxODhRMTE0IDI4NCAxMDggMzQ3VjM1NEw5NiAzNjVRNzYgMzg1IDY3IDM4NVE2MiAzODUgNDUgMzc3TDI3IDM2OEwxNCAzNzcnLFxuICAgIDB4MUQ1MzY6ICc3NCA1OFE4OSAxMjQgODkgMjQxUTg5IDI2NSA4OSAyNzhUODkgMzA1VDg4IDMyNFQ4NyAzMzZUODQgMzQ2VDgxIDM1MlQ3NyAzNTlUNzEgMzY4UTU3IDM4OCA1MiAzOThMNDUgNDA5UTYyIDQ1NCA5OCA1MDdMMTEzIDUyOFExMjggNTI4IDEyOCA1MjRRMTI4IDUyMyAxMjUgNTE4VDEyMCA1MDNUMTE3IDQ4M1Y0NzFRMTIzIDQ1NiAxMzAgNDQ1UTEzNSA0MzggMTQwIDQzMlQxNDggNDIyVDE1MyA0MTVUMTU3IDQwOVQxNjAgNDA1VDE2MiA0MDJUMTYzIDM5OVQxNjMgMzk1VjM4NFYzNjVRMTY1IDM2NSAyMzcgNDE5TDMxMSA0NzNRMzgzIDQzMCA0MjAgNDE2UTQyNiA0MTQgNDI2IDQxMVY0MDRRNDI2IDM5OCA0MjYgMzg4VDQyNyAzNjdRNDMxIDIzMyA0MzEgMjAxUTQzMSAtMyAzOTEgLTUyUTM4NyAtNTggMzA1IC0xMzhUMjIxIC0yMThMMjE4IC0yMTdRMjE2IC0yMTYgMjExIC0yMTRUMjAyIC0yMTBMMTg0IC0yMDJMMTk5IC0xOTRRMjU5IC0xNjIgMjg4IC0xMjdUMzM0IC0xOVQzNTAgMTg0UTM1MCAyNTcgMzQyIDMyOEwzNDAgMzU2UTI4MiAzOTAgMjYyIDM5MFEyNDggMzkwIDE3OCAzNDZMMTYzIDMzNlYxMTFMMjE2IDQ1TDEzMSAtMjZMMTI0IC0xNVExMTQgMyA4NSA0NEw3NCA1OCcsXG4gICAgMHgxRDUzNzogJzQ3IDMzNUwzNiAzNDdMNTIgMzYyUTExMiA0MjEgMTY3IDQ2MUwxODEgNDcxTDE5MiA0NjVRMjM2IDQ0NCAyNjAgNDE3VDI4NCAzNjlRMjg0IDM1NSAyNzYgMzQzVDIzMyAyOTFRMTk1IDI0NiAxOTUgMjQ1VDIwNSAyNDJUMjQxIDIyOFQzMDAgMTk4TDMwMiAxODdRMzE0IDEzOCAzMTQgNzRRMzE0IC0yNCAyOTEgLTk1UTI5MCAtMTAwIDIyMiAtMTU3TDE1NCAtMjE0SDE0NVExMDIgLTIxNCA1MyAtMTg5VC03IC0xMTdRNDEgLTIxIDE4MyAxMjJMMjA3IDE0N1EyMDUgMTQ5IDE4NiAxNTdUMTQwIDE3MlQxMDAgMTgwSDk3VjE5MkwxNDAgMjMxUTE5MiAyODAgMTk5IDI5M1EyMDUgMzAzIDIwNSAzMTVRMjA1IDMzOSAxODUgMzYzVDEzNyAzODhRMTE5IDM4OCA2MyAzNDdMNDcgMzM1Wk0xNzkgLTE1M1EyMTIgLTE1MyAyMjYgLTExM1QyNDAgMTRRMjQwIDY3IDIzMyA5OFQyMjMgMTMyVDIxMSAxNDNMMjIyIDEzMFEyMTYgMTI1IDIwNiAxMTZUMTcwIDgyVDEyNCAzM1Q4OCAtMjBUNzIgLTcwUTcyIC05OSAxMDUgLTEyNlQxNzkgLTE1MycsXG4gICAgMHgxRDUzODogJzEzMCAtMUg2M1EzNCAtMSAyNiAyVDE3IDE3UTE3IDI0IDIyIDI5VDM1IDM1UTQ5IDM1IDY0IDQ0VDg4IDY2UTEwMSA5MyAyMTAgMzgzUTMzMSA2OTMgMzM1IDY5N1QzNDYgNzAxVDM1NyA2OTdRMzU4IDY5NiA0OTMgMzk5UTYyMSAxMDQgNjMzIDgzUTY1NiAzNSA2ODYgMzVRNjkzIDM1IDY5OCAzMFQ3MDMgMTdRNzAzIDUgNjkzIDJUNjQzIC0xSDU0MVEzODggLTEgMzg2IDFRMzc4IDYgMzc4IDE2UTM3OCAyNCAzODMgMjlUMzk3IDM1UTQxMiAzNSA0MzQgNDVUNDU2IDY1UTQ1NiA5MyA0MjggMTcwTDQxOSAxOTdIMTk3TDE5NSAxNzlRMTg0IDEzNCAxODQgOTdRMTg0IDgyIDE4NiA3MVQxOTAgNTVUMTk4IDQ1VDIwNSAzOVQyMTQgMzZMMjE5IDM1UTI0MSAzMSAyNDEgMTdRMjQxIDUgMjMzIDJUMTk2IC0xSDEzMFpNNDkzIDY4UTQ5MyA1MSA0ODEgMzVINjE5UTYwNCA1NiA1MTUgMjU2UTQ4NiAzMjEgNDY4IDM2MUwzNDggNjM3UTM0NyA2MzcgMzMwIDU5MlQzMTMgNTQzUTMxMyA1MzggMzU4IDQzNlQ0NDggMjE5VDQ5MyA2OFpNNDA0IDIzNVE0MDQgMjM5IDM1NSAzNTVUMjk1IDQ4OEwyNzUgNDMwUTI0MSAzNDggMjA4IDIzMkgzMDZRNDA0IDIzMiA0MDQgMjM1Wk0xNTUgNDhRMTUxIDU1IDE0OCA4OFYxMTdMMTM1IDg2UTExOCA0NyAxMTcgNDZMMTEwIDM3TDEzNSAzNUgxNTlRMTU3IDQxIDE1NSA0OCcsXG4gICAgMHgxRDUzOTogJzExIDY2NVExMSA2NzIgMjIgNjgzSDIxM1E0MDcgNjgxIDQzMSA2NzdRNTgyIDY0OSA1ODIgNTE1UTU4MiA0ODggNTczIDQ2OFE1NTQgNDEzIDQ4NCAzNzJMNDc0IDM2Nkg0NzVRNjIwIDMxNyA2MjAgMTc4UTYyMCAxMTUgNTY4IDY5VDQyMCA2UTM5MyAxIDIwNyAtMUgyMlExMSAxMCAxMSAxOFExMSAzNSA1MSAzNVE3OSAzNyA4OCAzOVQxMDIgNTJRMTA3IDcwIDEwNyAzNDFUMTAyIDYzMFE5NyA2NDAgODggNjQzVDUxIDY0OEg0NlExMSA2NDggMTEgNjY1Wk0xNDIgMzQxUTE0MiAxMjkgMTQxIDg4VDEzNCAzN1ExMzMgMzYgMTMzIDM1SDI0MEwyMzMgNDhMMjI5IDYxVjYyM0wyMzMgNjM1TDI0MCA2NDhIMTMzTDEzOCA2MzlRMTQyIDYyMSAxNDIgMzQxWk0yODQgMzcwUTM2NSAzNzggMzkxIDQxMVQ0MTcgNTA4UTQxNyA1NTEgNDA2IDU4MVQzNzggNjI0VDM0NyA2NDNUMzIwIDY0OFEyOTggNjQ4IDI3OCA2MzVRMjY3IDYyOCAyNjYgNjExVDI2NCA0OTJWMzcwSDI4NFpNNTQ2IDUxNVE1NDYgNTUxIDUzMSA1NzdUNDk0IDYxN1Q0NTQgNjM1VDQyMiA2NDFMNDExIDY0M0w0MjAgNjMwUTQzOSA2MDQgNDQ1IDU3OVQ0NTIgNTEwVjUwNFE0NTIgNDgxIDQ1MSA0NjdUNDQxIDQzMFQ0MTUgMzgzUTQyMCAzODMgNDM5IDM5MVQ0ODMgNDEzVDUyNyA0NTVUNTQ2IDUxNVpNNTg1IDE4NVE1ODUgMjIxIDU3MCAyNDlUNTM0IDI5NFQ0OTAgMzIwVDQ1MyAzMzRUNDM2IDMzN0w0MzUgMzM2TDQ0MCAzMzBRNDQ1IDMyNSA0NTIgMzE1VDQ2NyAyODhUNDc5IDI0NlQ0ODQgMTg4UTQ4NCAxNDUgNDc0IDExMFQ0NTQgNjJUNDQyIDQ4UTQ0MiA0NyA0NDQgNDdRNDUwIDQ3IDQ3MCA1NFQ1MTcgNzVUNTY0IDExOVQ1ODUgMTg1Wk00NDkgMTg0UTQ0OSAzMTYgMzU4IDMzMlEzNTUgMzMyIDMzNSAzMzNUMzAyIDMzNUgyNjRWMTk5UTI2NiA2OCAyNzAgNTdRMjc1IDUwIDI4OSA0M1EzMDAgMzcgMzI0IDM3UTQ0OSAzNyA0NDkgMTg0JyxcbiAgICAweDFENTNCOiAnMTYgNjY2UTE2IDY3NSAyOCA2ODNIMTkzUTMyOSA2ODMgMzY0IDY4MlQ0MzAgNjcyUTUzNCA2NTAgNjAwIDU4NVQ2ODYgNDIzUTY4OCA0MDYgNjg4IDM1MlE2ODggMjc0IDY3MyAyMjZRNjQxIDEzMCA1NjUgNzJUMzgxIDFRMzY4IC0xIDE5NSAtMUgyOFExNiA1IDE2IDE2UTE2IDM1IDUzIDM1UTY4IDM2IDc1IDM3VDg3IDQyVDk1IDUyUTk4IDYxIDk4IDM0MVQ5NSA2MzBROTEgNjQwIDgzIDY0M1Q1MyA2NDhRMTYgNjQ4IDE2IDY2NlpNMjM3IDY0NlEyMzcgNjQ4IDE4NCA2NDhIMTI4UTEyOCA2NDcgMTMzIDYzMlExMzYgNjIwIDEzNiAzNDFRMTM2IDY0IDEzMyA1MEwxMjggMzVIMjM3TDIzMCA0OEwyMjYgNjFWMzQzUTIyOCA2MjAgMjMxIDYzM1EyMzIgNjM2IDIzNyA2NDZaTTI2NCA2MVEyNzggNDAgMzEwIDM1UTM2MyAzNSA0MDEgNTVUNDYxIDExMlQ0OTYgMTkzVDUxMyAyOTVRNTE1IDMzMyA1MTUgMzQ5UTUxNSA0MTEgNTA0IDQ1OVE0ODEgNTk4IDM3MyA2NDFRMzUxIDY0OCAzMjEgNjQ4UTMwNCA2NDggMjkyIDY0M1QyNzcgNjM1VDI2NCA2MjFWNjFaTTQ2MSA2MjhRNDYyIDYyNyA0NzEgNjE2VDQ4OSA1OTRUNTA5IDU1OVQ1MjkgNTA5VDU0NCA0NDFUNTUwIDM1MlE1NTAgMTY1IDQ3OSA3NUw0NjggNTlRNDc0IDYxIDQ4NCA2NVQ1MjIgODdUNTczIDEyOFQ2MTggMTk1VDY1MCAyOTBRNjU0IDMyMiA2NTQgMzU0UTY1NCA0MTggNjM4IDQ2NFQ1ODEgNTUyUTU1OSA1NzYgNTI5IDU5NVQ0ODAgNjIxTDQ2MSA2MjgnLFxuICAgIDB4MUQ1M0M6ICcxMiA2NjZRMTIgNjc1IDI0IDY4M0g1ODJRNTkwIDY4MCA1OTMgNjcyVjU4OFE1OTMgNTE0IDU5MSA1MDJUNTc1IDQ5MFE1NjcgNDkwIDU2MyA0OTVUNTU1IDUxN1E1NTIgNTU2IDUxNyA1OTBRNDg2IDYyMyA0NDUgNjM0VDM0MCA2NDhIMjgyUTI2NiA2MzYgMjY0IDYyMFQyNjAgNDkyVjM3MEgyNzdRMzI5IDM3NSAzNTggMzkxVDQwNCA0MzlRNDIwIDQ4MCA0MjAgNTA2UTQyMCA1MjkgNDM2IDUyOVE0NDUgNTI5IDQ1MSA1MjFRNDU1IDUxNyA0NTUgMzYxUTQ1NSAzMzMgNDU1IDI5OFQ0NTYgMjUzUTQ1NiAyMTcgNDUzIDIwN1Q0MzcgMTk3UTQyMCAxOTYgNDIwIDIxN1E0MjAgMjQwIDQwNiAyNzBRMzc3IDMyOCAyODQgMzM1SDI2MFYyMDFRMjYxIDE3NCAyNjEgMTM0UTI2MiA3MyAyNjQgNjFUMjc4IDM4UTI4MSAzNiAyODIgMzVIMzMxUTQwMCAzNSA0NDkgNTBRNTcxIDkzIDYwMiAxNzlRNjA1IDIwMyA2MjIgMjAzUTYyOSAyMDMgNjM0IDE5N1Q2NDAgMTgzUTYzOCAxODEgNjI0IDk1VDYwNCAzTDYwMCAtMUgyNFExMiA1IDEyIDE2UTEyIDM1IDUxIDM1UTkyIDM4IDk3IDUyUTEwMiA2MCAxMDIgMzQxVDk3IDYzMlE5MSA2NDUgNTEgNjQ4UTEyIDY0OCAxMiA2NjZaTTEzNyAzNDFRMTM3IDEzMSAxMzYgODlUMTMwIDM3UTEyOSAzNiAxMjkgMzVIMjM1UTIzMyA0MSAyMzEgNDhMMjI2IDYxVjYyM0wyMzEgNjM1TDIzNSA2NDhIMTI5UTEzMiA2NDEgMTMzIDYzOFQxMzUgNjAzVDEzNyA1MTdUMTM3IDM0MVpNNTU3IDYwM1Y2NDhINTA0UTUwNCA2NDYgNTE1IDYzOVE1MjcgNjM0IDU0MiA2MTlMNTU3IDYwM1pNNDIwIDMxN1YzOTdMNDA2IDM4M1EzOTQgMzcwIDM4MCAzNjNMMzY2IDM1NVEzNzMgMzUwIDM4MiAzNDZRNDAwIDMzMyA0MDkgMzI4TDQyMCAzMTdaTTU4MiA2MUw1ODYgODhRNTg1IDg4IDU4MiA4M1E1NTcgNjEgNTI2IDQ2TDUxMSAzN0w1NDIgMzVINTc3UTU3NyAzNiA1NzggMzlUNTgwIDQ5VDU4MiA2MScsXG4gICAgMHgxRDUzRDogJzU4NCA0OTlRNTY5IDQ5MCA1NjYgNDkwUTU1OCA0OTAgNTUyIDQ5N1Q1NDYgNTE1UTU0NiA1MzUgNTMzIDU1OVE1MjYgNTc0IDUwNiA1OTNUNDY5IDYyMVE0MTUgNjQ4IDMyNiA2NDhRMjkzIDY0OCAyODcgNjQ3VDI3NSA2NDFRMjY0IDYzMCAyNjMgNjE3UTI2MiA2MDkgMjYwIDQ5MlYzNzBMMjc1IDM3MlEzMjMgMzc2IDM1MCAzOTJUMzkzIDQ0MVE0MDkgNDczIDQwOSA1MDZRNDA5IDUyOSA0MjcgNTI5UTQzNyA1MjkgNDQyIDUxOVE0NDQgNTExIDQ0NCAzNjJRNDQ0IDIxMiA0NDIgMjA2UTQzNiAxOTcgNDI2IDE5N1E0MDkgMTk3IDQwOSAyMTdRNDA5IDI2NSAzNzUgMjk5UTM0NiAzMjggMjgwIDMzNUgyNjBWMjA2UTI2MCA3MCAyNjIgNjNRMjY1IDQ2IDI3NiA0MVQzMjYgMzVRMzYyIDM1IDM2NiAyOFEzNzcgMTcgMzY2IDNMMzYwIC0xSDI0UTEyIDUgMTIgMTZRMTIgMzUgNTEgMzVROTIgMzggOTcgNTJRMTAyIDYwIDEwMiAzNDFUOTcgNjMyUTkxIDY0NSA1MSA2NDhRMTIgNjQ4IDEyIDY2NlExMiA2NzUgMjQgNjgzSDU3M1E1NzYgNjc4IDU4NCA2NzBWNDk5Wk0xMzcgMzQxUTEzNyAxMzEgMTM2IDg5VDEzMCAzN1ExMjkgMzYgMTI5IDM1SDE4MlEyMzMgMzUgMjMzIDM5UTIyNiA1NCAyMjUgOTJUMjI0IDM0NkwyMjYgNjIzTDIzMSA2MzVMMjM1IDY0OEgxMjlRMTMyIDY0MSAxMzMgNjM4VDEzNSA2MDNUMTM3IDUxN1QxMzcgMzQxWk01NDkgNjAzVjY0OEg0OTVMNTA2IDY0MVE1MzEgNjIxIDUzMyA2MTlMNTQ5IDYwM1pNNDA5IDMxN1YzOTVMNDAwIDM4NlEzOTAgMzc2IDM3NSAzNjZMMzU3IDM1NUwzNzMgMzQ2UTM5NCAzMzEgMzk3IDMyOEw0MDkgMzE3JyxcbiAgICAweDFENTNFOiAnNzM3IDI4NVE3NDkgMjc3IDc0OSAyNjhRNzQ5IDI2MCA3NDQgMjU1VDczMCAyNTBRNjk1IDI1MCA2NzcgMjE3UTY2NiAxOTUgNjY2IDExOVE2NjYgNTIgNjY0IDUwUTY1NiAzNiA1NTUgM1E0ODMgLTE2IDQxNSAtMTlRMzY0IC0xOSAzNDggLTE3UTIyNiAtMyAxNDYgNzBUNDQgMjYxUTM5IDI4MyAzOSAzNDFUNDQgNDIxUTY2IDUzOCAxNDMgNjExVDM0MSA2OTlRMzQ0IDY5OSAzNjQgNzAwVDM5NSA3MDFRNDQ5IDY5OCA1MDMgNjc3VDU4NSA2NTVRNjAzIDY1NSA2MTEgNjYyVDYyMCA2NzhUNjI1IDY5NFQ2MzkgNzAyUTY1MCA3MDIgNjU3IDY5MFY0ODFMNjUzIDQ3NFE2NDAgNDY3IDYyOCA0NzJRNjI0IDQ3NiA2MTggNDk2VDU5NSA1NDFRNTYyIDU4NyA1MDcgNjI1VDM5MCA2NjNIMzgxUTMzNyA2NjMgMjk5IDYyNVEyMTMgNTQ3IDIxMyAzMzdRMjEzIDc1IDM0MSAyM1EzNTcgMTkgMzk3IDE5UTQ0MCAxOSA0NjIgMjJUNDkyIDMwVDUxMyA0NVYxMTlRNTEzIDE4NCA1MDYgMjAzUTQ5MSAyMzcgNDM1IDI1MFE0MjEgMjUwIDQxNSAyNTdRNDA0IDI2NyA0MTUgMjgxTDQyMSAyODVINzM3Wk0yNTAgNDNRMjUwIDQ1IDI0MyA1NVQyMjUgODdUMjAzIDEzOVQxODUgMjI0VDE3NyAzNDNWMzYxUTE4NCA1MzMgMjUwIDYyNVEyNjQgNjQzIDI2MSA2NDNRMjM4IDYzNSAyMTQgNjIwVDE2MSA1NzlUMTEwIDUxMFQ3OSA0MTRRNzQgMzg0IDc0IDM0MVQ3OSAyNjhRMTA2IDExNyAyMzAgNTJMMjUwIDQzWk02MjEgNTY1VjYyNVE2MTcgNjIzIDYxMyA2MjNRNjAzIDYxOSA1OTAgNjE5SDU3NUw1ODggNjA1UTYwOCA1ODMgNjEwIDU3OUw2MjEgNTY1Wk02NTUgMjUwSDUxN0w1MjQgMjQxUTU0OCAyMTMgNTQ4IDE0OVYxMTRWMzlRNTQ5IDM5IDU2MiA0NFQ1OTIgNTVUNjE1IDYzTDYzMCA3MFYxMzRRNjMyIDE5MCA2MzQgMjA0VDY0OCAyMzdRNjU1IDI0NSA2NTUgMjUwJyxcbiAgICAweDFENTQwOiAnMjAgNjY2UTIwIDY3NiAzMSA2ODNIMzU4UTM2OSA2NzYgMzY5IDY2NlEzNjkgNjQ4IDMzMSA2NDhRMjg4IDY0NSAyODIgNjMyUTI3OCA2MjYgMjc4IDM0MVEyNzggNTcgMjgyIDUwUTI4NiA0MiAyOTUgNDBUMzMxIDM1UTM2OSAzNSAzNjkgMTZRMzY5IDYgMzU4IC0xSDMxUTIwIDQgMjAgMTZRMjAgMzUgNTggMzVRODQgMzcgOTMgMzlUMTA3IDUwUTExMyA2MCAxMTMgMzQxUTExMyA2MjMgMTA3IDYzMlExMDEgNjQ1IDU4IDY0OFEyMCA2NDggMjAgNjY2Wk0yNDkgMzVRMjQ2IDQwIDI0NiA0MVQyNDQgNTRUMjQyIDgzVDI0MiAxMzlWMzQxUTI0MiA2MzIgMjQ0IDYzOUwyNDkgNjQ4SDE0MFExNDYgNjM0IDE0NyA1OTZUMTQ5IDM0MVExNDkgMTI0IDE0OCA4NlQxNDAgMzVIMjQ5JyxcbiAgICAweDFENTQxOiAnNzkgMTAzUTEwOCAxMDMgMTI5IDgzVDE1MSAzOFExNTEgOSAxMzAgLTE1UTExNiAtMzQgMTMwIC0zN1ExMzMgLTM5IDE1NyAtMzlRMjA4IC0zOSAyMTkgLThMMjI2IDNWMzA1UTIyNiA2MTIgMjI0IDYyMVEyMjAgNjM2IDIxMSA2NDFUMTY2IDY0N1ExMzcgNjQ3IDEyOCA2NTRRMTE5IDY2NSAxMjggNjc5TDEzNSA2ODNINDY2UTQ3OCA2NzcgNDc4IDY2NlE0NzggNjQ3IDQzOSA2NDdRMzk5IDY0NCAzOTMgNjMyUTM4OCA2MjAgMzg4IDM0N1EzODYgNjkgMzg0IDU5UTM2NCAtNiAzMTYgLTM5VDE4NCAtNzdIMTcyUTEwMiAtNzcgNTYgLTQ4VDYgMzBRNiA2MiAyNiA4MlQ3OSAxMDNaTTM1MyAzNTRRMzUzIDU1NiAzNTQgNTk2VDM2MSA2NDVRMzYyIDY0NiAzNjIgNjQ3SDI1M1EyNTcgNjM5IDI1OCA2MjhUMjYxIDU0N1QyNjIgMzEyVi00TDI1NSAtMTdRMjQ4IC0yOSAyNTAgLTI5UTI1MyAtMjkgMjU4IC0yOFQyNzcgLTIwVDMwMiAtNVQzMjcgMjJUMzQ4IDY1UTM1MCA3NCAzNTMgMzU0Wk0xMTUgMzZRMTE1IDQ3IDEwNSA1N1Q3OSA2N1E3MyA2NyA2NyA2NlQ1MiA1NlQ0NCAzNFE0NCA5IDYyIC04UTY2IC0xMSA3MSAtMTVUODEgLTIyVDg2IC0yNEw5MCAtMTNRMTAwIDMgMTAyIDVRMTE1IDIyIDExNSAzNicsXG4gICAgMHgxRDU0MjogJzIyIDY2NlEyMiA2NzYgMzMgNjgzSDM1MUwzNTggNjc5UTM2OCA2NjUgMzU4IDY1NVEzNTEgNjQ4IDMyNCA2NDhRMjg4IDY0NSAyODAgNjM3UTI3NSA2MzEgMjc0IDYwNVQyNzMgNDc3TDI3NSAzNDNMMzgyIDQ0NlE0NzMgNTMwIDQ5MiA1NTNUNTEyIDU5OVE1MTIgNjE3IDUwMiA2MzFUNDc1IDY0OFE0NTUgNjUxIDQ1NSA2NjZRNDU1IDY3NyA0NjUgNjgwVDUxMCA2ODNINTkzSDcyMFE3MzIgNjc2IDczMiA2NjZRNzMyIDY1OSA3MjcgNjU0VDcxMyA2NDhRNjcwIDY0OCA1ODkgNTgxUTU2NyA1NjIgNDkwIDQ4OVQ0MTMgNDE1UTQxMyA0MTMgNTU0IDI0NVQ3MTEgNjFRNzM3IDM1IDc1MSAzNVE3NTggMzUgNzYzIDI5VDc2OCAxNVE3NjggNiA3NTggLTFINjI0UTQ5MSAtMSA0ODYgM1E0ODAgMTAgNDgwIDE3UTQ4MCAyNSA0ODcgMzBUNTA2IDM1UTUxOCAzNiA1MjAgMzhUNTIwIDQ4TDQwMCAxOTVMMzAyIDMxMEwyODYgMjk3TDI3MyAyODNWMTcwUTI3NSA2NSAyNzcgNTdRMjgwIDQxIDMwMCAzOFEzMDIgMzcgMzI0IDM1UTM0OSAzNSAzNTggMjhRMzY3IDE3IDM1OCAzTDM1MSAtMUgzM1EyMiA0IDIyIDE2UTIyIDM1IDYwIDM1UTEwMSAzOCAxMDYgNTJRMTExIDYwIDExMSAzNDFUMTA2IDYzMlExMDAgNjQ1IDYwIDY0OFEyMiA2NDggMjIgNjY2Wk0yNDAgMzQxVjU1M1EyNDAgNjM1IDI0NiA2NDhIMTM4UTE0MSA2NDEgMTQyIDYzOFQxNDQgNjAzVDE0NiA1MTdUMTQ2IDM0MVExNDYgMTMxIDE0NSA4OVQxMzkgMzdRMTM4IDM2IDEzOCAzNUgyNDZRMjQwIDQ3IDI0MCAxMjlWMzQxWk01OTUgNjMyTDYxNSA2NDhINTM1TDU0MiA2MzdRNTQyIDYzNiA1NDQgNjI1VDU0OSA2MTBWNTk1TDU2MiA2MDZRNTY1IDYwOCA1NzcgNjE4VDU5NSA2MzJaTTUyNCAyMjZMMzg2IDM4OFEzODYgMzg5IDM3OCAzODJUMzU4IDM2MVEzMzAgMzM4IDMzMCAzMzNRMzMwIDMzMiAzMzAgMzMyTDMzMSAzMzBMNTMzIDkwUTU1OCA1NSA1NTggNDFWMzVINjg0TDY3MSA1MFE2NjcgNTQgNTI0IDIyNicsXG4gICAgMHgxRDU0MzogJzEyIDY2NlExMiA2NzUgMjQgNjgzSDMzM0wzNDAgNjc5UTM1MCA2NjUgMzQwIDY1NVEzMzMgNjQ4IDMwOSA2NDhRMjg3IDY0NiAyNzkgNjQzVDI2NiA2MzBRMjY0IDYyMyAyNjQgMzQ2UTI2NCA2OCAyNjYgNTdRMjc0IDQwIDI4NCAzNUgzNDBRNDEzIDM3IDQ2MCA1NVE1MTQgNzggNTUzIDExN1Q2MDIgMTk3UTYwNSAyMjEgNjIyIDIyMVE2MjkgMjIxIDYzNCAyMTVUNjQwIDIwMVE2MzggMTk0IDYyNSAxMDVUNjExIDEyUTYxMSA2IDYwMCAtMUgyNFExMiA1IDEyIDE2UTEyIDM1IDUxIDM1UTkyIDM4IDk3IDUyUTEwMiA2MCAxMDIgMzQxVDk3IDYzMlE5MSA2NDUgNTEgNjQ4UTEyIDY0OCAxMiA2NjZaTTEzNyAzNDFRMTM3IDEzMSAxMzYgODlUMTMwIDM3UTEyOSAzNiAxMjkgMzVIMjM3UTIzNSA0MSAyMzMgNDhMMjI5IDYxTDIyNiAzMzlRMjI2IDYyMSAyMjkgNjI4UTIzMCA2MzAgMjMxIDYzNlQyMzMgNjQzVjY0OEgxMjlRMTMyIDY0MSAxMzMgNjM4VDEzNSA2MDNUMTM3IDUxN1QxMzcgMzQxWk01ODAgNDhRNTgwIDU5IDU4MyA3NFQ1ODYgOTdRNTg2IDk4IDU4NSA5N1Q1NzkgOTJUNTcxIDg2UTU0OSA2NCA1MTMgNDNMNTAwIDM1SDU3N0w1ODAgNDgnLFxuICAgIDB4MUQ1NDQ6ICcxOCA2NjZRMTggNjc3IDI3IDY4MFQ3MyA2ODNIMTQ2UTI2MSA2ODMgMjY2IDY3OUw0NjUgMjE1UTQ2OSAyMTUgNTY2IDQ0M1E2NjMgNjc2IDY2OCA2ODFRNjczIDY4MyA3OTAgNjgzSDkwOEw5MTUgNjc5UTkyNCA2NjQgOTE1IDY1NVE5MTIgNjQ4IDg5NyA2NDhRODUxIDYzOSA4MzUgNjA2TDgzMyAzNDZRODMzIDg2IDgzNSA3OVE4MzggNjkgODQ5IDU4VDg3MyA0MVE4NzcgNDAgODg3IDM4VDkwMSAzNVE5MjYgMzUgOTI2IDE2UTkyNiA2IDkxNSAtMUg2MDRMNTk3IDNRNTg4IDE5IDU5NyAyOFE2MDAgMzUgNjE1IDM1UTY2MCA0MiA2NzMgNjhMNjc5IDc5VjMzOVE2NzkgNDA5IDY3OSA0NDNUNjc5IDUyMFQ2NzkgNTgwVDY3NyA1OTdRNjQ2IDUyMSA1ODQgMzc1VDQ3MyAxMTdUNDI0IDNRNDE2IC0xIDQxMCAtMVQ0MDEgMVEzOTkgMyAyNzMgMzAxTDE0OCA1OTlMMTQ2IDM0M1ExNDYgODYgMTQ4IDc5UTE1MiA2OSAxNjMgNThUMTg2IDQxUTE5MCA0MCAyMDAgMzhUMjE1IDM1UTIyNiAzNSAyMzUgMjhRMjQ0IDE3IDIzNSAzTDIyOCAtMUgyOFExNyA0IDE3IDE3UTE3IDM1IDM5IDM1UTg0IDQyIDk3IDY4TDEwNCA3OVY2MzlMODggNjQxUTcyIDY0NCA1MyA2NDhRMzQgNjQ4IDI2IDY1MVQxOCA2NjZaTTQ1NyAxNjZRNDUxIDE2OSA0NDkgMTcxVDQzNSAxOThUNDA0IDI2OFQzNDQgNDEyTDI0NCA2NDhIMTU3TDE2NiA2MzdRMTY5IDYzMyAyOTMgMzQ2TDQxMyA2NlE0MjQgODggNDM1IDExN0w0NTcgMTY2Wk04MTcgNjQ2UTgxNyA2NDggNzY2IDY0OEg3MTVWNzJMNzA4IDU3UTcwMSA0NSA2OTcgNDFMNjk1IDM3UTY5NSAzNSA3NTcgMzVIODE5TDgxMyA0NlE4MDIgNjEgODAwIDc2UTc5NyAxMDUgNzk3IDM0Nkw3OTkgNjEyTDgwNCA2MjZRODEyIDYzOCA4MTUgNjQxTDgxNyA2NDZaTTEyNCA0MlExMTkgNDIgMTE5IDM4UTExOSAzNSAxMjggMzVRMTMyIDM1IDEzMiAzNlExMjUgNDIgMTI0IDQyJyxcbiAgICAweDFENTQ2OiAnMTMxIDYwMVExODAgNjUyIDI0OSA2NzZUMzg3IDcwMVE0ODUgNzAxIDU2MiA2NjFRNjI4IDYyOSA2NzEgNTc1VDczMSA0NDhRNzQyIDQxMCA3NDIgMzQxVDczMSAyMzRRNzA3IDE0MCA2NDYgODFRNTQ5IC0xOSAzODkgLTE5UTIyOCAtMTkgMTMxIDgxUTU3IDE1NSAzNyAyNzRRMzQgMjkyIDM0IDM0MVEzNCAzOTIgMzcgNDEwUTU4IDUyOCAxMzEgNjAxWk01NjggMzQxUTU2OCA2MTMgNDM3IDY1OVE0MDYgNjY0IDM5NSA2NjVRMzI5IDY2NSAyODYgNjI1UTIzMiA1NzEgMjEzIDQzOVEyMTAgNDA4IDIxMCAzNDFRMjEwIDI3NSAyMTMgMjQ1UTIzMiAxMTEgMjg2IDU3UTMwOSAzNyAzNDIgMjNRMzU3IDE5IDM4OSAxOVE0MjAgMTkgNDM3IDIzUTQ2OSAzOCA0OTEgNTdRNTY4IDEzMiA1NjggMzQxWk0xNzQgMzQxUTE3NCA0MDMgMTc3IDQ0MVQxOTcgNTM1VDI0OSA2MzlRMjQ2IDYzOSAyMjQgNjI3VDE5MyA2MDhRMTg5IDYwNiAxODMgNjAxVDE2OSA1ODlUMTU1IDU3N1E2OSA0ODggNjkgMzQ0UTY5IDEzMyAyMzEgNTJRMjQ0IDQ1IDI0NiA0NVEyNDggNDUgMjQ2IDQ4UTIzMSA2OSAyMjIgODVUMjAwIDE0MVQxNzcgMjM5UTE3NCAyNjkgMTc0IDM0MVpNNzA4IDM0MVE3MDggNDE1IDY4NCA0NzVUNjM1IDU2M1Q1ODIgNjEwUTU3OCA2MTIgNTY1IDYxOVQ1NDYgNjMwUTUzMyA2MzcgNTMxIDYzN1E1MzAgNjM3IDUzMCA2MzZWNjM1TDUzMSA2MzRRNTYyIDU5MSA1NzcgNTQzUTYwMiA0NzEgNjAyIDM0MVYzMTZRNjAyIDI2NCA1OTkgMjMwVDU4MCAxNDRUNTMxIDQ4TDUzMCA0N1Y0NlE1MzAgNDUgNTMxIDQ1UTUzMyA0NSA1NDcgNTJUNTgzIDc1VDYyMiAxMDVRNzA4IDE5NSA3MDggMzQxJyxcbiAgICAweDFENTRBOiAnNTQgMjM4UTcyIDIzOCA3MiAyMTJRNzIgMTc0IDEwNiAxMjFRMTEzIDExMCAxMzIgOTBUMTY2IDU5UTIyMSAyMyAyNjQgMjNRMzE1IDIzIDM0OCA0MVEzNjggNTAgMzg0IDc5UTM5MyAxMDIgMzkzIDEyOVEzOTMgMTgxIDM1NiAyMTlUMjIxIDI5OVExMjAgMzQzIDc0IDM5MFQyOCA1MDFRMjggNTYxIDU1IDYxMFE5OCA2ODIgMjEyIDY5OVEyMTQgNjk5IDIzMSA3MDBUMjYxIDcwMVEzMDkgNjk4IDM0MCA2ODdUNDA4IDY3NVE0MzEgNjc4IDQ0NSA2OTBUNDY1IDcwMlE0NzQgNzAyIDQ4MSA2OTBWNDk3TDQ3NyA0OTBRNDY0IDQ4MSA0NTAgNDkwUTQ0NiA1MDAgNDQ2IDUwMVE0NDYgNTQ2IDM4NiA2MDZUMjYwIDY2NlEyMTUgNjY2IDE4MiA2MzlUMTQ4IDU2NVExNDggNTI4IDE4NiA0OTZUMzE5IDQyOFEzNTIgNDE0IDM3MCA0MDVUNDE4IDM3OVQ0NjggMzM4VDUwNiAyODRRNTI4IDIzOSA1MjggMTkxUTUyOCAxMDIgNDU2IDQ2VDI2NiAtMTBRMjExIC0xMCAxNzYgMlQxMTAgMTVRODYgOSA3MyAtMVQ1MyAtMTJRNDQgLTEyIDM3IC0xVjExMlYxODJRMzcgMjE0IDQwIDIyNlQ1NCAyMzhaTTQ0NiA2MTlRNDQ2IDY0OCA0NDQgNjQ4UTQzOSA2NDYgNDM1IDY0NFE0MjUgNjQ0IDQxNSA2MzlINDA0TDQxNyA2MjRRNDM1IDYwNiA0MzkgNjAxTDQ0NiA1OTJWNjE5Wk0xMjQgNjE5TDEyOCA2MzVRMTI2IDYzNSAxMDggNjE3UTY0IDU3NiA2NCA1MDJRNjQgNDg5IDY1IDQ3OVQ3NiA0NDlUMTAyIDQxNFQxNTAgMzc2VDIyOCAzMzVRMzM1IDI5MSAzODEgMjQ1VDQyNyAxMjhRNDI3IDk0IDQxOSA3NUw0MTUgNjFRNDIxIDYxIDQ0OCA4OFE0OTAgMTI3IDQ5MCAxOTBRNDkwIDIzMyA0NzUgMjY0UTQ1NiAyOTkgNDMwIDMyMVE0MDIgMzQ5IDM2OSAzNjdUMjg3IDQwNFQyMDQgNDQxUTEzOCA0ODEgMTE5IDUyNlExMTMgNTQ0IDExMyA1NjVRMTEzIDU5NiAxMjQgNjE5Wk03NSA0M1E3NiA0MyA5MCA0NlQxMTAgNTBIMTE5TDEwNiA2NEw3NCAxMDFRNzIgMTAxIDcyIDcyVDc1IDQzJyxcbiAgICAweDFENTRCOiAnMzMgNjcyUTM2IDY4MCA0NCA2ODNINjI0UTYzMiA2ODAgNjM1IDY3MlY0OTBMNjMxIDQ4M1E2MjEgNDc5IDYxNyA0NzlRNjExIDQ3OSA2MDYgNDg1VDYwMCA0OTlRNjAwIDUyNSA1ODQgNTUyUTU3NyA1NjcgNTU4IDU4OFQ1MjQgNjE3UTQ3OSA2NDIgNDI2IDY0Nkw0MTUgNjQ4VjM1NVE0MTUgNjIgNDIyIDUyUTQyNSA0MiA0MzQgNDBUNDczIDM1UTUwMCAzNSA1MDkgMjhRNTE4IDE3IDUwOSAzTDUwMiAtMUgxNjZMMTYwIDNRMTQ5IDE3IDE2MCAyOFExNjcgMzUgMTk1IDM1UTIyNCAzNyAyMzQgMzlUMjQ5IDUyUTI1MyA2NiAyNTMgMzU1VjY0OEwyNDIgNjQ2UTE5MiA2NDIgMTQ0IDYxN1ExMjkgNjA5IDExMCA1ODhUODQgNTUyUTY5IDUyNyA2OSA0OTlRNjkgNDkwIDY0IDQ4NFQ1MCA0NzhRMzkgNDc4IDMzIDQ5MFY2NzJaTTExMyA2MzlMMTI2IDY0OEg2OVY1OTdMODQgNjEyUTkzIDYyMyAxMTMgNjM5Wk0zODkgMzVRMzgyIDQ2IDM4MSA4NlEzODAgMTM0IDM4MCAzNTBWNjQ4SDI4OVYzNTBRMjg5IDE5OSAyODggMTMxVDI4NiA1M1QyODAgMzVIMzg5Wk02MDAgNTk3VjY0OEg1NDJMNTU1IDYzOVE1NzUgNjIzIDU4NCA2MTJMNjAwIDU5NycsXG4gICAgMHgxRDU0QzogJzE2IDY2NlExNiA2NzcgMjggNjgzSDM0MUwzNDggNjc5UTM1OSA2NjUgMzQ4IDY1NFEzNDIgNjQ4IDMxNSA2NDhRMjcwIDY0NCAyNjYgNjMyUTI2MiA2MjcgMjYyIDU5OFQyNjEgMzk5UTI2MSAzNzIgMjYxIDMyNVQyNjAgMjYwUTI2MCAxNDkgMjc0IDk5VDMzOSAzMFEzNTUgMjUgMzkzIDI1UTQzMCAyNSA0NTcgMzNUNDk0IDQ5VDUxOSA3MlE1NjIgMTE1IDU3NSAyMDVRNTc2IDIxOSA1NzYgMzc5UTU3NiA1MzggNTc1IDU1MFE1NjggNTk3IDU1MCA2MjJUNTA2IDY0OFE0OTggNjQ4IDQ5MyA2NTRUNDg3IDY2N1Q0OTkgNjgzSDY5N1E3MDkgNjc1IDcwOSA2NjdUNzA0IDY1NFQ2OTAgNjQ4UTY1MyA2NDggNjMzIDU5N1E2MjQgNTczIDYyMiA1NDZUNjE5IDM3N1E2MTcgMTkzIDYxMyAxNzRRNTk2IDk1IDU0NCA0MVE0NzcgLTE5IDM1NSAtMTlIMzQ0UTI3NSAtMTYgMjI2IDVUMTUzIDU3VDEyMCAxMTBUMTA2IDE1NFExMDEgMTcyIDk5IDM5OVE5OSA2MTggOTUgNjMyUTg4IDY0NCA1MyA2NDhRMTYgNjQ4IDE2IDY2NlpNMjI4IDYzOUwyMzMgNjQ4SDEyOFExMjggNjQ3IDEzMyA2MzJRMTM1IDYyMSAxMzUgNDEyUTEzNSAxOTcgMTM3IDE4NVExNDggMTE1IDE4MSA3OVEyMDkgNTEgMjM1IDQxUTI0MiAzNiAyNTggMzFUMjc3IDI1UTI3NiAyNyAyNjggMzhUMjU0IDU5VDI0MSA5MlQyMjggMTQ1UTIyNiAxNjEgMjI2IDM5OVEyMjYgNjMyIDIyOCA2MzlaTTYwNCA2MjFRNjA2IDYyNiA2MTkgNjQ4SDU3N0w1ODYgNjM0UTU4NyA2MzIgNTkxIDYyNVQ1OTUgNjE0TDU5NyA2MDhMNjA0IDYyMScsXG4gICAgMHgxRDU0RDogJzMxNiA2ODNRMzI3IDY3NiAzMjcgNjY2UTMyNyA2NDggMzAyIDY0OFEyNzIgNjQyIDI1OCA2MjhRMjQ5IDYyMSAyNDkgNjA4UTI1MiA1ODkgMjYzIDU1NlQyODkgNDg1VDMyMiA0MDZUMzU3IDMyNVQzODggMjU2VDQxMSAyMDVMNDIwIDE4NVE0MjMgMTg1IDQ3MyAzMTdRNTQ3IDQ5NyA1NDcgNTkwUTU0NyA2MjEgNTQxIDYzMlQ1MTYgNjQ4UTUwMSA2NDggNDk4IDY1NFE0ODggNjY0IDQ5OCA2NzlMNTA0IDY4M0g2MDdINjYwUTY5NSA2ODMgNzA3IDY4MFQ3MTkgNjY3UTcxOSA2NjAgNzE0IDY1NFQ3MDAgNjQ4UTY3OCA2NDggNjU4IDYyOEw2NDIgNjE0TDUxMyAzMDFRNDg0IDIzMSA0NDkgMTQ4VDM5NyAyNVQzODAgLTE1UTM3MyAtMjAgMzY4IC0yMFEzNjEgLTIwIDM1OCAtMTVRMzU0IC0xMyAyODcgMTM1VDE0OSA0MzhUNjcgNjEwUTQ1IDY0OCAxOCA2NDhRMTEgNjQ4IDYgNjUzVDAgNjY2UTAgNjc3IDkgNjgwVDU5IDY4M0gxNjRIMzE2Wk0yMTYgNjE0UTIxNiA2MjAgMjE2IDYyMlQyMTYgNjI4VDIxNiA2MzNUMjE3IDYzNVQyMTggNjM4VDIxOSA2NDBUMjIxIDY0NFQyMjQgNjQ4SDg0TDk2IDYzMlExMTggNTkyIDIzNiAzMzBMMzY3IDQzTDM4NyA4OEw0MDQgMTMyTDM4MCAxODVRMjUwIDQ2OCAyMjIgNTY4UTIxNiA1OTAgMjE2IDYxNFpNNTc2IDY0NVE1ODQgNjI4IDU4NCA1OTdMNTg3IDU2OEw1OTggNTk3UTYwOSA2MjQgNjE4IDYzN0w2MjQgNjQ4SDYwMFE1NzYgNjQ4IDU3NiA2NDUnLFxuICAgIDB4MUQ1NEU6ICc3ODUgNjY0UTc4NSA2NzAgNzk1IDY4M0g5ODJROTk0IDY3NSA5OTQgNjY1UTk5NCA2NTAgOTc1IDY0OFE5NTMgNjQzIDkzOSA2MTlROTMxIDU5MyA4MjMgMjkyVDcxMCAtMTVRNzA2IC0xOSA2OTkgLTE5VDY4OCAtMTVRNjgyIC02IDYzOSAxMDdUNTU1IDMyOFQ1MTMgNDM3UTUxMyA0MzggNTAwIDQwOVQ0NjIgMzI1VDQxMyAyMTJRMzE1IC0xNCAzMTAgLTE3UTMwOCAtMTkgMzAyIC0xOVQyODggLTE1TDU3IDYxOVE0NSA2NDMgMjQgNjQ4UTUgNjUwIDUgNjY1UTUgNjc3IDE3IDY4M0gxNDZIMjAwUTI1NiA2ODMgMjcwIDY4MVQyODUgNjY2UTI4NSA2NTkgMjgwIDY1NFQyNjggNjQ4UTI1MyA2NDggMjM5IDYzNFEyMzAgNjMwIDIzMCA2MTlRMjMwIDU5OCAyNjQgNDgxTDM2MiAxOTJRMzYzIDE5MyA0MjggMzQxVDQ5MyA0OTJRNDkzIDQ5NiA0NzMgNTQ2VDQ0NiA2MDhRNDI2IDY0OCAzOTkgNjQ4UTM5MiA2NDggMzg3IDY1M1QzODIgNjY3UTM4MiA2NzggMzkzIDY4M0g2NzlRNjkwIDY3MCA2OTAgNjY1UTY5MCA2NjIgNjg1IDY1NVQ2NzMgNjQ4UTY1MyA2NDggNjMzIDYzMkw2MjIgNjI1VjYxMFE2MjYgNTc2IDY1NyA0NzlUNzE5IDMwMFQ3NTEgMjE4UTc1NCAyMTggNzc5IDI5NFE4NDcgNDkyIDg0NyA1ODFRODQ3IDY0OCA4MDIgNjQ4UTc5NiA2NDggNzkxIDY1MlQ3ODUgNjY0Wk0xOTQgNjIzUTE5NCA2MzAgMTk5IDY0OEg4Mkw5MCA2MzJROTkgNjE2IDE5OSAzMzJMMzAyIDUwUTMwMyA1MCAzMjIgOTRUMzQyIDE0MVEzNDIgMTQyIDMwNSAyNDVUMjMxIDQ2N1QxOTQgNjIzWk01ODUgNjIwUTU4NSA2MzQgNTkzIDY0OEg1MzBRNDY2IDY0OCA0NjYgNjQ1UTQ3OSA2MzIgNTk1IDMyM0w2OTkgNTRRNzAxIDU2IDcxOCAxMDNUNzM1IDE1NEw3MDIgMjQ1UTU4NSA1NjIgNTg1IDYyMFpNODg0IDU3Mkw4OTAgNTg3UTg5NiA2MDIgOTAzIDYyMFQ5MTUgNjQ1UTkxNSA2NDggODkzIDY0OEg4NjhMODc1IDYzNFE4ODMgNTk4IDg4MyA1NzZRODgzIDU3MiA4ODQgNTcyJyxcbiAgICAweDFENTRGOiAnMjIgNjY2UTIyIDY3NyAzMSA2ODBUODAgNjgzSDE4NEgzMzVRMzQ2IDY3NSAzNDYgNjY3UTM0NiA2NjAgMzQxIDY1NVEzMzUgNjQ4IDMxNSA2NDhRMjgwIDY0NCAyNzMgNjM3UTI3MyA2MzAgMzAwIDU4M1QzNTYgNDkyVDM4NiA0NDhRNDMwIDUwNCA0NTAgNTM1VDQ3NCA1NzdUNDc4IDYwMVE0NzggNjIwIDQ2OSA2MzRUNDQ0IDY0OFE0MjggNjQ4IDQyOCA2NjZRNDI4IDY3OCA0MzYgNjgwVDQ4OCA2ODNINTU5SDYzMFE2NzMgNjgzIDY4MSA2ODFUNjkwIDY2NlE2OTAgNjQ4IDY3MyA2NDhRNjUyIDY0OCA2MTkgNjM3UTU3MSA2MTUgNTE3IDU1MFE0OTAgNTE3IDQ1MCA0NjRUNDEwIDQwOFE0MTUgMzk5IDUwMSAyNzNUNjE3IDEwNlE2NDggNjEgNjYxIDQ4VDY4OCAzNVE3MDUgMzUgNzA1IDE2UTcwNSA1IDY5NSAtMUg1MzlRMzg0IC0xIDM3OSAzUTM3MyAxMCAzNzMgMTdRMzczIDI3IDM4MCAzMVQ0MDggMzVRNDU5IDQwIDQ1OSA0OVE0NTkgNTkgNDE4IDEyOVQzMzUgMjU5UTMzNCAyNjAgMzMyIDI2MFEzMjggMjYwIDI3MyAxOTdRMjEwIDEyNyAyMDggMTE3UTE5OSAxMDQgMTk5IDgyUTE5OSA1NyAyMTMgNDZUMjM5IDM1UTI0NyAzNSAyNTIgMjlUMjU3IDE1UTI1NyAxMCAyNTYgN1QyNTMgM1QyNDggMEwyNDYgLTFIMjhRMTYgNyAxNiAxNVQyMSAyOVQzNSAzNVE2MSAzNSAxMTcgODhRMjg5IDI3OSAzMDQgMjk3UTMwNyAzMDMgMjU1IDM3N1ExMTcgNTg2IDc5IDYyNlE2MCA2NDggMzkgNjQ4UTMyIDY0OCAyNyA2NTNUMjIgNjY2Wk0yMzcgNjM5VjY0OEgxNzNRMTEzIDY0NyAxMTMgNjQ2UTExMyA2NDIgMTM3IDYxMlExODYgNTQ2IDMwMiAzNzNUNDUzIDEzOVE0OTcgNjMgNDk3IDQzUTQ5NyAzOSA0OTUgMzVINTU5UTYyMiAzNSA2MjIgMzdRNjIyIDM4IDU4MyA5NFQ0ODYgMjMzVDM3MyAzOTlUMjc3IDU1MlQyMzcgNjM5Wk01NTMgNjM3TDU2NiA2NDhINTA0TDUwOCA2MzdRNTEwIDYzMCA1MTUgNjE1VjYwM0w1MjggNjE1UTUyOSA2MTYgNTM5IDYyNVQ1NTMgNjM3Wk0xNzAgNDZRMTY5IDQ5IDE2NyA1OFQxNjQgNzBWODNMMTM3IDU5TDExMyAzNUgxNzVRMTc1IDM4IDE3MCA0NicsXG4gICAgMHgxRDU1MDogJzE2IDY1OVQxNiA2NjdUMjggNjgzSDI5NVEzMDYgNjc2IDMwNiA2NjZRMzA2IDY0OCAyODQgNjQ4UTI1OCA2NDggMjU1IDY0MVEyNTUgNjM0IDI2NSA2MTVUMzM5IDQ3OVE0MTggMzM5IDQyMSAzMzlMNDU1IDM5NFE0ODkgNDQ4IDUyMyA1MDJMNTU3IDU1N1E1NjAgNTY2IDU2MCA1ODJRNTYwIDYzNyA1MDQgNjQ4UTQ4OSA2NDggNDg2IDY1NVE0NzUgNjY0IDQ4NiA2NzlMNDkzIDY4M0g2OTNRNzA0IDY3NSA3MDQgNjY3UTcwNCA2NTAgNjg0IDY0OFE2NzIgNjQ1IDY1MyA2MjNRNjMzIDYwNCA2MTQgNTc2VDUxNyA0MjZMNDM5IDMwMVYxODNRNDQyIDYyIDQ0NCA1OVE0NDkgMzUgNTA0IDM1UTUyMSAzNSA1MjggMzBRNTM4IDE2IDUyOCAzTDUyMSAtMUgxOTVMMTg4IDNRMTc4IDE2IDE4OCAzMFExOTUgMzUgMjEzIDM1UTI2NiAzNSAyNzMgNTlRMjc0IDYxIDI3NyAxNjNWMjYxTDc1IDYyMVE2NCA2MzggNTggNjQzVDM3IDY0OFEyOCA2NDggMjIgNjUzWk0yMTkgNjM3VjY0OEgxMDFRMTEwIDYzNCAyMTUgNDQ2TDMxMyAyNzBWMTY2UTMxMCA1OSAzMDYgNDhMMzAxIDM1SDQxNUw0MTAgNDhRNDA0IDY1IDQwNCAxNzVWMjkwTDMxNyA0NDNRMjMwIDYwMSAyMjYgNjEyUTIxOSA2MjUgMjE5IDYzN1pNNjA4IDYzMEw2MjQgNjQ4SDU3NVE1ODQgNjMyIDU4OCA2MjNMNTk1IDYxMEw2MDggNjMwJyxcbiAgICAweDFENTZDOiAnODIxIDk3UTgyMiA5NyA4MjQgODhUODI3IDc3TDc5MyA1M1E2NzYgLTI1IDY3MCAtMjhRNjY5IC0yOSA2NTYgLTI3TDU4MyAxMjNRNTgzIDEyNCA0NjcgNDZMMzUyIC0zMUwzNDEgLTIwUTMwNSAxOCAyNjQgNDdUMTkyIDc3UTE2MSA3NyA2MCAzMkw0OSA0MFEzNyA0NyAzOCA0OVEzOSA0OSA5MyA4M1QyMTIgMTYwVDI5NyAyMTlRNDExIDMxMiA0MTEgNDUyUTQxMSA1MTkgMzYwIDU3MVQyMzMgNjI0UTE4MCA2MjQgMTU3IDYwMVQxMzMgNTQ4UTEzMyA1MjQgMTYwIDQ5NlQyMTQgNDQxVDI0MSAzOTNRMjQxIDM1NiAxOTkgMzIxVDEwMCAyNTZMODYgMjQ5TDc3IDI1NlE2OCAyNjMgNjcgMjYzTDg0IDI3NFExMDEgMjg2IDExOCAzMDRUMTM1IDMzOVQxMDkgMzg0VDU2IDQ0NlQyOSA1MDRRMjkgNTY2IDExOCA2MjRRMjA3IDY4NiAzMDkgNjg2UTM0OSA2ODYgMzYwIDY4NVE0MDUgNjc4IDQzOSA2NjFUNDkxIDYyNVQ1MjAgNTgzVDUzNCA1NDNUNTM3IDUxMVE1MzcgNDM2IDQ5MSAzNDRMNDc4IDMxOEw0NTUgMjk5UTQyMCAyNzIgMzA4IDE3OUwyODQgMTYwTDI5NCAxNThRMzQ4IDE1NCA0MjYgODlMNDM3IDc5UTUxMyAxMTAgNTc5IDE1M1YxNzVRNTc5IDE4MyA1NzkgMjI3VDU4MCAzMzBUNTgxIDQ0NlQ1ODIgNTQyTDU4MyA1ODJMNjY0IDYzMFE2ODEgNjQwIDcwMyA2NTNUNzM0IDY3M0w3NDQgNjc5UTc1MCA2NzggNzU2IDY3Nkw3NjcgNjc0TDcxNiA2MjNWNTg1UTcxNiA1NjggNzEyIDQ2M1Q3MDggMjg5VjI1MFE3MDggMjM3IDcwOSAyMThUNzEwIDE5NUw3MTEgMTgwTDczOSAxMzBRNzY4IDc5IDc3MSA3OVE3NzUgNzkgNzk2IDg4VDgyMSA5NycsXG4gICAgMHgxRDU2RDogJzE2MCAzNDVRMTYwIDM1NyAxNDQgMzc2VDEwOSA0MTNUNzMgNDU4VDU3IDUwOVE1NyA1NDQgOTUgNTg0UTE0MiA2MzEgMjA1IDY1N1QzMzEgNjg0UTM4MiA2ODQgNDI3IDY1OFQ1MDAgNTg1TDUwNSA1NzdMNTIxIDU4OFE1MzcgNTk5IDU2MiA2MTRUNjE2IDY0NlQ2NzkgNjczVDczOCA2ODRRNzkwIDY4NCA4MDcgNjY2VDg0MCA1ODdRODUwIDU1MiA4NjMgNTMyVDg4OCA1MDhRODk0IDUwNSA5MDYgNTA1UTkxNyA1MDUgOTMwIDUwN1Q5NTMgNTEyVDk2MyA1MTRMOTY0IDUwNFE5NjUgNDk1IDk2NSA0OTRUOTE0IDQ2N1Q4MDggNDEzVDc0NSAzODRINzUxUTc4MiAzODAgODAyIDM3N1Q4NTQgMzYyVDkwNCAzMzRUOTM3IDI4N1Q5NTEgMjE3UTk1MSAxNzggOTM3IDE0M1Q5MDggOTFROTAzIDg2IDgyMCAzNEw3MzQgLTIxTDcxOCAtMjRRNjc5IC0zMSA2MzkgLTMxUTU2MSAtMzEgNDUxIDRUMjcxIDQwUTE5MCA0MCAxMTkgLTJMOTkgLTEzTDkxIDFMODQgMTVMODYgMTZRODggMTggMTMyIDQyVDIzMyAxMDBUMzE1IDE1MlEzNzcgMTk5IDM4NiAyMzNRMzg4IDI0MCAzOTMgMjk3VDM5OSAzNjNRMzk5IDQ4NyAzNTMgNTUxUTMzNyA1NzMgMzA2IDU5N1QyMzggNjIyUTIwMSA2MjIgMTc5IDYwMlQxNTcgNTU3VDIxNCA0NzZUMjcyIDM5NlEyNzIgMzcxIDIyOSAzMzRUMTQzIDI3MlQ5NiAyNDZROTUgMjQ2IDg1IDI1MlQ3NCAyNTlUOTUgMjczVDEzOCAzMDZUMTYwIDM0NVpNNTI5IDQ0M1E1MjkgNDA5IDUyOCAzODVUNTI2IDM1M0w1MjUgMzQ2UTUyNiAzNDYgNjQ5IDM5MFQ3NzMgNDM1UTc0OSA0NTEgNzQyIDQ2NFQ3MjcgNTE4UTcyNyA1MTkgNzI1IDUzMlQ3MjEgNTQ4VDcxNyA1NjJUNzEyIDU3N1Q3MDYgNTg5VDY5OCA2MDFUNjg4IDYwOFQ2NzUgNjE0VDY1OCA2MTZRNjI2IDYxNiA1NzYgNTgyVDUyNSA1MjhRNTI1IDUyNyA1MjYgNTE4VDUyOCA0ODlUNTI5IDQ0M1pNNzcyIDU3UTc3NCA1NyA3NzggNThUNzkyIDY0VDgwOCA3N1Q4MjEgMTAzVDgyNyAxNDRRODI3IDIyMiA3ODQgMjY2VDY2MCAzMjJRNjUyIDMyMyA2MTEgMzIzSDU5NlE1NzcgMzIzIDUzNSAzMTZMNTIzIDMxNFE1MjAgMjkxIDUwNSAyNTVMNTAwIDI0MUwzNTYgMTM4TDM2NiAxMzdRNDQzIDEzMSA1MTggMTEwVDY1MCA3MlQ3NDggNTRRNzYzIDU0IDc3MiA1NycsXG4gICAgMHgxRDU2RTogJzQ2MCAtMzJRMzczIC0zMiAzMDUgLTExVDE5MyA0NVQxMjIgMTI0VDgzIDIxNFQ3MiAzMDNRNzIgMzk1IDExNCA0NzZMMTE5IDQ4NkwzMTMgNTkyTDMzOCA1NjhMMzU5IDU4MFE0MTggNjE1IDQ3OSA2MzhUNTY4IDY2OFQ2MDYgNjc1UTYwNyA2NzUgNjA4IDY3Nkg2MTBRNjEyIDY3NiA2MTUgNjYxVDYzMCA2MjFUNjYwIDU3OFE2NzMgNTY4IDY5NCA1NjhRNzE3IDU2OCA3MjEgNTcwSDcyNlE3MjQgNTY1IDcyMiA1NTlMNzE3IDU0OUw3MDYgNTQ1UTYwOCA1MTMgNTgzIDUxM1E1NjggNTE3IDU1OSA1MjJUNTMzIDU0NlQ0OTMgNjAzTDQ5MCA2MDlRNDUyIDU5OSA0NTIgNTU4UTQ1MiA1MzcgNDY5IDQ4MVQ0ODYgMzkzUTQ4NiAzNTMgNDc0IDMzMVQ0MjIgMjg1VDI5NiAyMzFMMjcyIDIyM0wyNjIgMjMwTDI1MyAyMzdRMjc5IDI0NiAzMTQgMjc0VDM1MSAzMzhRMzUxIDM3NiAzMzQgNDQyVDMxNiA1MzJRMzE2IDU0NiAzMTkgNTUyUTMxOSA1NTQgMzE2IDU1NFEzMDQgNTU0IDI4OCA1NDdUMjUwIDUyM1QyMTQgNDY2VDE5OSAzNzFRMTk5IDIxOCAyOTkgMTMzVDU0MSA0N1E1NzEgNDcgNTg1IDUxVDY1MiA4MUw3MTIgMTA4UTcxNiAxMDQgNzE2IDgxTDcwNiA3NFE2OTUgNjggNjczIDU0VDYzMyAyOUw1NTAgLTIyTDU0MCAtMjRRNDkyIC0zMiA0NjAgLTMyJyxcbiAgICAweDFENTZGOiAnMzgwIDU5NlEzMDcgNTk2IDI1MCA1ODJUMTU4IDU0NlQxMDAgNDkzVDY3IDQzM1Q1NiAzNzNWMzYxUTU1IDM2MSA0MyAzNjZMMzEgMzcyVjM4NFEzMSA0NTUgNjkgNTIzVDE3MyA2MjdRMjEzIDY1MCAyODQgNjY2VDQ0NCA2ODNINDUyUTYyOSA2ODMgNzM1IDYyOVE4OTYgNTQ4IDg5NiAzNjlRODk2IDI2MyA4MzkgMTYzUTgzNSAxNTUgODE4IDE0MFE3NDYgODIgNjYyIDI3VDU2MyAtMjlRNTI1IC0yOSAzODYgMTZUMTgzIDYyUTE0NyA2MiAxMjcgNTJUNjMgMUw0OCAtMTRMNDAgLTRMMzEgNVE4MyA3MyAxNzIgMTQ5TDE4NiAxNjFIMTk5UTI5MSAxNjEgMzI5IDE4MVEzNTcgMTk5IDM1NyAyMzFRMzU3IDI1OCAzMDEgMzE2VDI0NSAzOTZRMjQ1IDQyMyAyODIgNDU4VDM0OSA1MTJUNDAzIDU0M0w0MTMgNTQ4TDQyNSA1NDVMNDM4IDU0MVEzNzMgNDkxIDM3MyA0NjJRMzczIDQ0NiAzOTkgNDE1VDQ1MyAzNDlUNDgwIDI4OFE0ODAgMjUxIDQzMyAyMTJRMzk0IDE4MCAzNDggMTU2TDMzNCAxNDhMMzUzIDE0NVE0MDggMTM0IDUxMyAxMDVUNjU0IDc2UTcxMSA3NiA3NDUgMTMyVDc4MCAyNzdRNzgwIDQzNCA2NzYgNTE3UTYzNyA1NDkgNTYyIDU3MlQzODAgNTk2JyxcbiAgICAweDFENTcwOiAnNTI3IDU1UTU3NCA1NSA2MTkgNjlUNjkxIDk3TDcxNyAxMTFWODVMNTYyIC0xOFE1MjAgLTI5IDQ0MyAtMjlRMzc5IC0yOSAzMjUgLTE1VDIzNSAyMVQxODAgNjFUMTQ2IDk4UTc0IDE4NiA3NCAzMDdRNzQgMzk1IDEwOSA0NzJRMTEzIDQ4MiAxMjMgNDg5VDE5MCA1MzNRMjUxIDU2OCAyOTUgNTkxTDMwOCA1OThMMzUwIDU4MEwzNjEgNTg2UTQwMyA2MTIgNDY0IDYzNlQ1NjQgNjczVDYwOSA2ODZRNjEwIDY4NiA2MTAgNjg1UTYxMiA2ODMgNjE2IDY3MFQ2MjcgNjM2VDY0NiA2MDFRNjY2IDU3MiA2ODYgNTcySDY5MlE3MTMgNTcyIDcyNiA1NzZINzI4TDcyNSA1NjVMNzIzIDU1NEw2OTIgNTQ0UTY2MCA1MzUgNjI5IDUyNlQ1OTUgNTE2UTU4NSA1MTQgNTc0IDUxOVE1NjMgNTI3IDU0MyA1NTJUNTA3IDU5N1Q0OTAgNjE3UTQ2NyA2MDQgNDU2IDU3OVY1NjRRNDU2IDUzNSA0NzMgNDcxVDQ5MiAzOTNMNDk0IDM4MUw2MTMgNDYwTDYyMiA0NDZRNjMwIDQzMyA2NTAgNDExVDY5NiAzNzFMNzAzIDM2NUw2MTQgMzEySDU5Nkw1ODAgMzIyUTU2OCAzMjkgNTUzIDM0MFQ1MjggMzU1VDUxMCAzNjBRNDk2IDM1OCA0OTEgMzU0VDQ4NCAzNDVUNDcxIDMyNlQ0MzUgMjk3UTQwOCAyNzggMzcwIDI2MVQzMDcgMjM1VDI3NyAyMjdRMjczIDIyNyAyNjYgMjM0TDI1NiAyNDBMMjY3IDI0NVEyODAgMjUxIDI5NCAyNThUMzMwIDI4OFQzNTMgMzM2UTM1MyAzNzMgMzM1IDQ0NFQzMTYgNTMwVjUzN1EzMTYgNTQ5IDMyMiA1NjdRMjcwIDU1NCAyMzMgNDk5VDE5NiAzNzBRMTk2IDI1MyAyODcgMTU3UTM5MiA1NSA1MjcgNTUnLFxuICAgIDB4MUQ1NzE6ICc0MjQgNTIyUTI2NSA1OTYgMjA4IDU5NlExOTMgNTk2IDE4MCA1OTNUMTUwIDU3OVQxMTYgNTQyVDg5IDQ3NFE4NiA0NjUgODYgNDYzTDU5IDQ4MUw2MyA0OTRRODcgNTc4IDEzNyA2MjdRMTkxIDY4NCAyODUgNjg0UTMzNCA2ODQgNDA2IDY1OFQ1MzggNjA3VDYyMSA1ODFRNjQ0IDU4MSA3MDYgNjI5TDcyMSA2NDBRNzIyIDY0MCA3MjUgNjMwTDcyNyA2MjBRNzAxIDU5MiA2NTQgNTQ4VDU4MiA0ODZMNTY5IDQ4N1E1MzMgNDkwIDQ4NSA1MDRMNDY4IDUwOFE0NDkgNTAzIDQyOSA0OTVUMzg3IDQ2NlQzNjUgNDIyUTM2NSAzNzMgNDM5IDI5OUw0NTMgMzEwUTQ3MyAzMjUgNTI4IDM3MEw1ODggNDE4UTYxNCAzOTggNjQyIDM2OFQ2NjggMzMxUTY2NyAzMzEgNjI4IDI5Nkw1OTAgMjYyTDU4MiAyNzRRNTU3IDMxMSA1MjYgMzExUTUxMSAzMTEgNDg3IDI5N1Q0NjIgMjc4UTQ2MiAyNzcgNDkyIDI0NFQ1NTEgMTY2VDU4MSA4OFE1ODEgNTQgNTcwIDI1VDUzNiAtMjdUNTA1IC01NlQ0NzggLTc2UTM3NiAtMTQ2IDI3NCAtMTQ2SDI3MFExOTkgLTE0NiAxNjIgLTExOFQxMjQgLTE1UTEyNCAxMiAxMjggMzBUMTMyIDk2VjEwN1ExMzIgMTQ0IDExNyAxNTdRMTAyIDE2OSA4NSAxNjlRNzQgMTY5IDU5IDE2NVQzMiAxNTZUMjAgMTUxUTIwIDE1MiAxOSAxNThUMTcgMTY3UTE3IDE2OCAxNyAxNjhUMTcgMTY5VDE5IDE3MFQyMiAxNzJUMjcgMTc1VDM1IDE3OVExMzEgMjMwIDE5NSAyMzBRMjMxIDIzMCAyNTkgMjAyUTI3MCAxOTAgMjcwIDE3MVEyNjkgMTUwIDI1MyA4N1QyMzYgLTE2UTIzNiAtNjcgMjYxIC04N1QzMjIgLTEwN1EzODAgLTEwNyA0MjggLTY4UTQ2NyAtMzUgNDY3IDMwUTQ2NyA2MCA0NDcgOTFUMzgzIDE3MVQzMTYgMjUxUTI5MCAyODYgMjc4IDMwOFQyNjMgMzM5VDI2MSAzNTlRMjYxIDM4NCAyODQgNDE4UTMyMiA0NjkgNDI0IDUyMicsXG4gICAgMHgxRDU3MjogJzc0MiA2MTFRNzg0IDYxMSA4MTIgNjMxVjYxMVE4MDcgNjA3IDc4MyA1OTFUNzE4IDU0NFQ2MjkgNDc2TDYwNiA0NThRNjA4IDQ1OCA2MjggNDU3VDY2NyA0NTNUNzEzIDQ0M1Q3NjIgNDIzVDgwNCAzODhUODM2IDMzNVE4NDQgMzEzIDg0NCAyODlRODQ0IDIzMSA4MTQgMTgyVDc0NiAxMDNRNzIwIDgyIDY1NSA0OFQ1NDYgLTE4TDUyMCAtMjFRNDU2IC0yOSA0MzIgLTI5UTMxMyAtMjkgMjIzIDMzUTIwNCA0NSAxODMgNjVUMTM1IDExOVQ5MSAyMDdUNzQgMzIwUTc0IDQyOCAxMDkgNDgwUTExNiA0OTEgMTI3IDQ5N1QyMTUgNTQ2TDMwOCA1OTVMMzQzIDU4M0wzNTUgNTkxUTM4NyA2MTMgNDMzIDYzNlQ0ODggNjYwSDQ4OUw0OTEgNjU5UTQ5MyA2NTggNDk1IDY1N1Q1MDAgNjU1TDUwOSA2NTBMNTAwIDY0NVE0NzkgNjM1IDQ2MCA2MTJUNDQxIDU1MlE0NDEgNTM1IDQ0NyA0OThUNDU5IDQzM1Q0NjYgNDA1TDYyNSA1MTNMNjQzIDUyNlE2MjAgNTMwIDU4NSA1NDZUNTM1IDU4NlE1MzUgNTg3IDUzMiA1OTJUNTI3IDYwMlQ1MjUgNjEwUTUyNSA2MTMgNTc3IDY0OUw2MzAgNjg3UTYzMiA2ODcgNjM4IDY3NVQ2NTMgNjQ5VDY4NiA2MjNUNzQyIDYxMVpNMzQ5IDMxM1EzNDkgMzI4IDMyNyA0MTNUMzA1IDUxMFY1MTZRMzA1IDUzMSAzMDggNTQyVDMxNCA1NTlUMzE3IDU2NlQzMTUgNTY3UTI5NyA1NjcgMjcwIDU0OFEyMzMgNTI0IDIxMiA0OTBUMTkxIDM5MlExOTEgMzM3IDIwNiAyODhUMjQ0IDIwN1QyODQgMTU2VDMxNiAxMjhRNDEwIDUxIDUzNSA1MVE2MzIgNTEgNjc1IDEwMlQ3MTggMjE3UTcxOCAyNjkgNjkwIDMxNFQ1OTkgMzc1UTU3NCAzODEgNTM1IDM4MVE1MDEgMzgxIDQ3NyAzNzdMNDY2IDM3NlE0NjkgMzY0IDQ2OSAzNDlRNDY5IDMxNCA0NTcgMjk1VDQwOCAyNThRMzY2IDIzNiAzMDggMjE5TDI4OCAyMTNMMjc5IDIyMEwyNzAgMjI3UTI4NCAyMzIgMjk0IDIzNlQzMDkgMjQzVDMyMCAyNTJUMzI2IDI2MFQzMzEgMjcwVDMzNiAyODFRMzQ5IDMxMCAzNDkgMzEzJyxcbiAgICAweDFENTczOiAnMjg4IDEzOVEyODggMTcyIDI1NSAyMjRUMTg5IDMzNVQxNTYgNDQyUTE1NiA0OTUgMjQyIDU3OVEyODkgNjI1IDM2MSA2NjhRMzY0IDY3MSAzNjggNjczVDM3NiA2NzhUMzgwIDY4MUwzODQgNjgzTDM5MiA2NzZRNDAxIDY3MCA0MTQgNjYxVDQ0MyA2NDJUNDc3IDYyNlQ1MDkgNjE5UTU0MyA2MTkgNjE4IDY2OFE2MjUgNjcyIDYyOCA2NzRUNjMxIDY3NVE2MzIgNjczIDYzMyA2NjNUNjMzIDY1MUw1NjQgNTk1UTU1NiA1ODkgNTQ1IDU4MFQ1MjggNTY2VDUxNiA1NTZUNTA1IDU0OFQ0OTcgNTQzVDQ4OCA1MzlUNDgxIDUzN1Q0NzIgNTM1VDQ2MyA1MzRUNDUxIDUzNEg0NDJRMzg1IDUzNCAzMDQgNTgxTDI5MSA1ODlRMjkwIDU4OCAyODUgNTgzVDI3NyA1NzVUMjY5IDU2NlQyNjIgNTU1VDI1NyA1NDNUMjU1IDUyOVY1MjJRMjU1IDUwNyAyNjAgNDg3VDI3NiA0NDZUMjkzIDQwOVQzMTEgMzc2TDMyMSAzNTlRMzIxIDM1OCAzMjIgMzU4VDMyNCAzNTlUMzI3IDM2MVQzMzMgMzY2UTM4NiA0MDkgNDgxIDQ2MEw1MDMgNDcyTDU0MyA0NzFRNTg2IDQ3MSA1OTkgNDcwUTY5MiA0NTkgNzE0IDQzMFE3MjUgNDE2IDczOCAzNjBUNzUyIDI0NVE3NTIgMTg0IDc0MiAxMjdUNzI1IDUxVDcwMyAtOFE3MDAgLTEzIDYxOSAtNjRUNTE4IC0xMjNRNTA4IC0xMjYgNDkzIC0xMjZRNDM4IC0xMjYgMzk4IC04Nkw0MjcgLTUyUTQ1NiAtMTcgNDU3IC0xN1E0NjAgLTE3IDQ2NSAtMTZINDczUTQ3NCAtMjEgNDgxIC0zMlQ1MDQgLTU2VDUzOSAtNjlRNTcyIC02OSA1OTkgLTM0UTYyNSA0IDYyNSAxNThRNjI1IDI2NCA2MDkgMzExVDUzMiAzNzhRNTA4IDM4NiA0ODQgMzg2UTQ1NSAzODYgNDE5IDM3MlQzNjAgMzQ1VDMzNyAzMzBMMzQ2IDMxM1EzNzUgMjYzIDM4NiAyMjdRMzg5IDIxNSAzODkgMjAyUTM4OSAxOTIgMzg4IDE4NFQzODQgMTY4VDM3NiAxNTJUMzY1IDEzOFQzNTAgMTIxVDMzMSAxMDNUMzA3IDgxVDI3OCA1NEwxOTQgLTI0UTEzMCAzMCA5OSAzMFE4NSAzMCA2NCAyMFQzMSAxVDE2IC0xMFExNSAtMTEgMTMgLTdRMTIgLTYgMTEgLTNROCA0IDYgOEwzMiAzNVE4OCA4OCAxMTcgMTA3VDE2OSAxMjZRMTc3IDEyNiAxODIgMTI1UTIxOCAxMTggMjUyIDg0TDI2MyA3M1EyODggMTEzIDI4OCAxMzknLFxuICAgIDB4MUQ1NzQ6ICc1MDAgNjE1UTUyMyA2MTUgNTUwIDYyOFQ1OTUgNjU1VDYxNCA2NjhMNjIzIDY1NEw2MDcgNjQyUTUxMiA1NjkgNDQwIDUzNEw0MjcgNTI3TDQxMyA1MjlRMzg0IDUzNSAzNDAgNTQ3VDI2NSA1NjVUMjA5IDU3MlExNzMgNTcyIDE0NSA1NTZUMTAxIDUyMlQ2MCA0NjVRNTggNDYwIDU0IDQ2MFQ0MSA0NjhMMzIgNDc3TDM3IDQ4N1E5NiA1OTkgMTM5IDY0MFExODcgNjgxIDI0NyA2ODFRMjc1IDY4MSAyODMgNjgwUTMxMyA2NzQgMzk4IDY0NVQ1MDAgNjE1Wk00MTggMTcwUTQxOCAxODYgNDEwIDI2MFQ0MDEgMzgyUTQwMyA0MTggNDAzIDQyNEw0MDUgNDMzTDQxNSA0NDRRNDgyIDUxNSA1NzEgNTcxTDU4MiA1NzhRNTkxIDU3MyA2MDcgNTY4TDU5NyA1NjBRNTIyIDUwNCA1MjIgNDUwUTUyMiA0MjcgNTMzIDM1N1Q1NDUgMjQxVjIyOFE1NDUgMTkwIDUzNiAxNTlUNTA4IDEwNlQ0NzggNzNUNDQ2IDQ4UTM0MyAtMjUgMjM4IC0yNVExNzkgLTI1IDExOCAxNUwxMDcgMjJMNzkgNVE1MSAtMTIgNTEgLTEyTDM4IDJMNTUgMThRMTA2IDY3IDE3NSAxMjJMMTkyIDEzNlEyMDIgMTMwIDIwNiAxMjNRMjIzIDkxIDI1MiA2MVEyNjMgNTAgMjY2IDQ4VDI3OCAzOVQyOTcgMzJUMzIwIDMwUTM1NyAzMCAzODkgNjhRNDE1IDEwMiA0MTggMTcwJyxcbiAgICAweDFENTc1OiAnNjUgNTEwUTY4IDUxNyA3NCA1MjhUMTAxIDU2OVQxNDQgNjIwVDIwMiA2NjFUMjc0IDY4MFEzMDggNjgwIDM4OSA2MjhUNTAzIDU3NlE1MzAgNTc2IDU5NiA2MDBRNjE1IDYwNyA2MTYgNjA3UTYxNiA2MDIgNjE1IDU5NlY1ODVRNjA1IDU4MSA1NzYgNTY4VDUzMSA1NDhUNDg1IDUzMVQ0MTggNTA5TDQwMCA1MDNMMzU4IDUyMlEzNDcgNTI3IDMyNyA1MzdUMjk5IDU1MFQyNzcgNTYwVDI1NyA1NjhUMjM5IDU3M1QyMjAgNTc3VDIwMSA1NzhIMTk2UTE4MSA1NzggMTY5IDU3NVQxMzUgNTU0VDg4IDUwMkw4MyA0OTZRODIgNDk2IDc0IDUwMlQ2NSA1MTBaTTQyNCA0UTQyNCA1MCAzOTUgMTUxVDM2NSAzMTNWMzIwUTM2NSAzNTIgMzY5IDM2MVQ0MDUgNDAzUTQzMSA0MzIgNDY1IDQ2MlQ1MjEgNTA4VDU0NyA1MjVMNTQ5IDUyNFE1NTEgNTI0IDU1NCA1MjNUNTYwIDUyMUw1NzEgNTE3TDU1MiA0OThRNTE1IDQ2MSA0OTkgNDMwUTQ4NSAzOTkgNDg1IDM2NlE0ODUgMzI2IDUxMiAyMzFUNTM5IDg0UTUzOSAtMTQgNDYwIC03N1QyNzMgLTE0MVEyNDggLTE0MSAyMzQgLTE0MFQxOTggLTEzMVQxNjAgLTEwNlQxMzQgLTU5UTEyOCAtNDAgMTI0IC0xNlQxMTcgMjJUMTA4IDQ5VDkxIDY5VDU5IDc1VDE1IDY1TDEgNTlRLTggNzYgLTcgNzdRNCA4NSAyMiA5N1Q4OCAxMjlUMTcwIDE0OVEyMTggMTQ5IDIzNCAxMjVRMjQyIDExMiAyNDIgNDNWMjFRMjQyIC0xNyAyNDggLTQxVDI3NCAtODVUMzIyIC0xMDVIMzI1SDMzMFEzNjMgLTEwNSAzOTYgLTc1UTQyNCAtNDcgNDI0IDQnLFxuICAgIDB4MUQ1NzY6ICcyMzQgMTA5UTIzNCAxNDQgMTk0IDI0NVQxNTMgNDA0UTE1MyA0NDUgMTgwIDQ5MFEyMzIgNTcyIDMyNSA2MjZUNTE3IDY4MUg1MjRRNjEyIDY4MSA2NjEgNjU4UTY4MyA2NDcgNjk5IDYzMlQ3MTcgNjA0UTcxNyA2MDAgNzA4IDU0NUw2OTkgNDkwTDY5MCA0ODlRNjgxIDQ4OCA2NzkgNDg4UTY3NSA0ODggNjY5IDUwNFQ2NDAgNTQ2VDU3NyA1OTJRNTIwIDYyMCA0NDYgNjIwUTQxNSA2MjAgMzg2IDYxNFQzMjcgNTk0VDI4MCA1NTNUMjYyIDQ4N1EyNjIgNDY4IDI2NSA0NDdUMjcxIDQxM1QyNzkgMzg0VDI4NSAzNjJMMjk1IDM3MVEzMjAgMzk2IDM1MiA0MjFUNDM5IDQ3NFQ1MzggNTAyUTU3NyA1MDIgNTk2IDQ4NFQ2MjcgNDI4UTY0MiAzODYgNjUxIDM3M1Q2NzcgMzYwSDY4MlE2OTggMzYwIDcyNyAzNjlMNzI0IDM1N1E3MjQgMzU0IDcyNCAzNTFUNzIyIDM0NlYzNDRRNTU5IDI4OSA1MzkgMjgzUTU4MiAyNzIgNTg5IDI3MUw2MTUgMjY1TDYzNyAxODlRNjYyIDEwOSA2NjMgMTA4UTY2OCA5NyA2ODIgODRRNjk4IDY4IDcyMiA2OEg3MzBINzM4UTc2MiA2OCA3OTkgOTFMODAzIDgwTDgwNiA3MFE3OTUgNTkgNzcwIDQwVDcwMyAtM1Q2MzEgLTI2UTU5OCAtMjYgNTc4IC04UTU0OCAyNCA1MzYgOTJRNTI0IDE1NCA1MDkgMTgzVDQ3NyAyMThUNDI4IDIyNFE0MDkgMjI0IDM4NSAyMjBUMzQ2IDIxMkwzMzEgMjA3UTMzMCAyMDUgMzMwIDIwMVQzMzEgMTg5VDMzMiAxNzhRMzMyIDE1OCAzMjUgMTE2TDMwNSA5NlEyNjkgNjAgMjQwIDM4UTE3MSAtMjEgMTIzIC0yMVE3MiAtMjEgMzMgMThMMjAgMzJMNjIgNzRROTYgMTA3IDEwMiAxMTJUMTE2IDExOFExMjAgMTE4IDEyMiAxMTNUMTMxIDk1VDE1MCA2OVExNzEgNDggMTkwIDQ4UTE5OCA0OCAyMDYgNTFUMjI0IDY5VDIzNCAxMDlaTTUxOSAzNjdRNDk3IDQzMiA0NTAgNDMyUTM3OSA0MzIgMzEzIDMzM0wzMDAgMzE0TDMwNCAyOTlRMzA2IDI5NCAzMDkgMjgwVDMxNSAyNjBMMzIxIDIzNUw1NDIgMzEzUTUzMCAzMjUgNTE5IDM2NycsXG4gICAgMHgxRDU3NzogJzI3NyAyMjZRMjc3IDI0OCAyNTMgMjg2VDIwMyAzNjlUMTc4IDQ0OVExNzggNDkwIDIxMiA1MzNUMjg0IDYwN1EzODAgNjgzIDUzMiA2ODNRNjEwIDY4MyA2MzkgNjYwVDY2OCA1ODNRNjY4IDU2OCA2NjYgNTQ2VDY2MyA1MDlRNjYzIDQ3OCA2ODMgNDYwUTY5MSA0NTIgNzE5IDQ1Mkw3MzggNDUwUTczMiA0MzcgNzI5IDQzN1E3MjggNDM3IDY1MiA0MTZUNTczIDM5NFE1NTQgMzk0IDU0MSA0MDlUNTI3IDQ0NFE1MjcgNDQ5IDUzMiA0ODdUNTM4IDU0MlE1MzYgNTg0IDUwMSA2MDZUNDE4IDYyOFEzODkgNjI4IDM2NCA2MjBUMzE3IDU4N1QyOTUgNTIzUTI5NSA0NzggMzMzIDQwMVQzNzIgMjc2UTM3MiAyNjkgMzcxIDI2N1EzNzEgMjY0IDMxOCAyMDZMMjY0IDE0OVEyODQgMTQxIDMxNyAxMzBUNDMzIDEwMVQ1NzcgODJRNjE5IDgyIDY1MiA5NVQ3MDEgMTI3VDcyOCAxNjRUNzQyIDE5Nkw3NDQgMjA5UTc0NCAyMTAgNzQ5IDIwOFQ3NTkgMjAzVDc2NCAxOTlUNzYwIDE4NVQ3NTEgMTU0VDc0NCAxMjlRNzE0IDQyIDY4MCAxM1E2MjggLTI4IDU2NiAtMjhRNDkwIC0yOCA0MDMgLTVUMjQ5IDQyVDE1MyA2NlQxMDYgNTNUNzAgMTVUNDcgLTE2UTQ2IC0xNyAzMCAtNUwzOSAxM1E4NSAxMDAgMTM4IDE0OEwxNDcgMTU2TDE2MSAxNTdRMjE4IDE2NSAyNDYgMTc5VDI3NyAyMjYnLFxuICAgIDB4MUQ1Nzg6ICcxMzQgMzM4UTEzNCAzNTcgODEgNDE3VDI3IDUwNFEyNyA1MTYgMzQgNTMwUTU1IDU2OCAxMTAgNjE1UTE5MCA2ODMgMzA1IDY4M0gzMTRRNDQ1IDY4MyA0OTUgNTgwTDUwMSA1NjlMNTEyIDU3N1E2MDggNjQ2IDY4MSA2NDZRNzU5IDY0NiA4MDEgNTg1TDgwOCA1NzZMODE2IDU4M1E4NjAgNjE5IDkyMSA2NTBUMTA0MSA2ODJRMTA2MyA2ODIgMTA3NyA2NzVUMTA5NiA2NjBUMTExMiA2MzFUMTEzMiA1OTZRMTE2MCA1NTUgMTE4OCA1NTVRMTIwNCA1NTUgMTIyOCA1NjRRMTIzMCA1NjUgMTIzMSA1NjJRMTIzMSA1NjAgMTIzMiA1NTRWNTQ3TDEyMTUgNTM4UTExNzkgNTIxIDExMTQgNDc1UTExMTIgNDc0IDExMDYgNDcwVDEwOTkgNDY0VDEwOTMgNDU5VDEwODggNDUyVDEwODUgNDQxVDEwODIgNDI1VDEwODEgNDA0VDEwNzkgMzc2VDEwNzkgMzM5UTEwNzkgMjgyIDEwODQgMjM2VDEwOTggMTYwVDExMTcgMTEyVDExMzggODVUMTE1OSA3N1ExMTY2IDc3IDExODAgODFUMTIwNyA5MEwxMjE5IDk0UTEyMjAgOTQgMTIyMSA4NlQxMjIyIDc2TDEwNDUgLTMyUTEwNDQgLTMyIDEwMDQgMTVMOTY0IDY0VjE2N1E5NjUgMzM0IDk3MCAzNzJWMzc4TDk5NCA0MDJRMTAzMiA0NDAgMTA1NyA0NjBRMTA2MSA0NjMgMTA2NiA0NjdRMTA3MCA0NjkgMTA3MCA0NzBUMTA2OCA0NzFUMTA2MCA0NzRUMTA1MCA0ODFRMTA0MCA0ODggMTAyMSA1MzFUOTk2IDU4M1E5NzkgNjA5IDk0NyA2MDlROTIyIDYwOSA4ODcgNTkyVDgyMCA1MzdMODIxIDUyNFE4MjUgNDg0IDgyNSA0NDhRODI1IDI2OCA3NjggMTU1TDc1OSAxMzdMNTg5IC0yOEw1NzkgLTIwUTUzMyAxNyA1MDcgMTdRNDc1IDE3IDQ0OSAtN0w0MzYgLTE4TDQyNCAyTDQ0MSAyMFE0NDYgMjUgNDU2IDM2VDQ3MSA1MlQ0ODQgNjVUNDk3IDc5VDUwOSA5MFQ1MjIgOTlUNTM0IDEwNlQ1NDggMTEyVDU2MSAxMTVUNTc2IDExN1E2MDIgMTE3IDYzOSA4NlE2NDggODEgNjQ4IDgxUTY1MCA4MiA2NTcgOTRUNjY4IDExMlE3MTEgMjAyIDcxMSAzNzNRNzExIDQ4NCA2NzcgNTMzVDYwMCA1ODNRNTkyIDU4MyA1ODMgNTgxVDU2OSA1NzdUNTU0IDU2OFQ1NDIgNTYwVDUyOCA1NDlUNTE2IDUzOUw1MTkgNTIzUTUyNyA0ODUgNTI3IDQ2MVE1MjcgNDQ0IDUyMiA0MDdRNTA2IDI2NiA0NDcgMTUwTDQzNyAxMzBMMjE3IC0yNUwyMDggLTE1UTE2NSAyOCAxMjYgMjhRODkgMjggNjIgMVE0NyAtMTQgNDMgLTE0UTQyIC0xNCAzNiAtOEwyOCAwTDQ0IDE3UTk2IDczIDEyMCA5MlQxNjYgMTE3UTE4MiAxMjMgMjA0IDEyM1EyMzkgMTIzIDI4NCA3OEwyOTUgNjdRMzA3IDcyIDMzNyAxMDJRNDAwIDE3OCA0MDAgMzQ2UTQwMCA1MDggMzI1IDU3MVEyNzAgNjE4IDIwOCA2MThRMTgwIDYxOCAxNjggNjE0VDE0MCA1OTRRMTI0IDU3OCAxMjQgNTY0UTEyNCA1NDAgMTgyIDQ4MFQyNDAgMzk2UTI0MCAzNTkgMTk3IDMyMVExNTQgMjg1IDk0IDI1Mkw4MCAyNDVMNzYgMjQ4TDY3IDI1N0w2MSAyNjJMNzEgMjY4UTgyIDI3NSA5NCAyODRUMTIwIDMwOVQxMzQgMzM4JyxcbiAgICAweDFENTc5OiAnNTIyIDQ5MlE1MjEgNDkyIDUxNyA1MDJUNTEyIDUxM1E1NDIgNDQ0IDU0MiAzMzNRNTQyIDIyNiA1MDMgMTM3TDQ5OCAxMjVMMzk2IDUzUTMwOCAtOCAyOTIgLTE3VDI2MCAtMjdRMjI2IC0yNyAxOTEgLTlUMTM2IDI5TDE0NSAzOVExNjIgNTYgMTkyIDg5TDIzMCAxMjlMMjM1IDEyOEgyNDFRMjc2IDU3IDMzMiA1N1EzNTggNTcgMzkxIDgwUTQwMyA4OSA0MDkgMTAwVDQyMiAxNDNUNDI4IDIyN1E0MjggMzI5IDQwNiA0MDhUMzQ3IDUzMFQyNzIgNTk0VDE5NiA2MTVRMTUyIDYxNSAxMzUgNTk2VDExOCA1NThRMTE4IDUzNSAxNDYgNTAyVDIwMyA0MzhUMjMyIDM4NVEyMzIgMzU3IDE5NSAzMjJUMTIyIDI2NVQ4MyAyNDNRODIgMjQyIDcyIDI0OVQ2MSAyNThMNjYgMjYyUTcyIDI2NSA4MiAyNzNUMTAzIDI5MlExMjUgMzE0IDEyNSAzMzNRMTI1IDM1MSAxMDEgMzc2VDUxIDQzMlQyNiA0OTJRMjYgNTQ5IDEwOCA2MTRUMjkwIDY3OVEzMjYgNjc5IDMzNSA2NzhRMzUzIDY3NSAzNzAgNjcwVDQwMCA2NThUNDI1IDY0MlQ0NDUgNjI1VDQ2MyA2MDZUNDc3IDU4OFQ0ODcgNTcxVDQ5NSA1NTZUNTAwIDU0M0w1MDQgNTM1TDUyMyA1NTNRNTUzIDU4MSA1NjkgNTk1VDYxOSA2MzJUNjg2IDY2N1Q3NTcgNjc4UTc3OCA2NzggNzkzIDY3NVQ4MTkgNjY0VDgzMyA2NTFUODQ0IDYzM1Q4NTIgNjE3UTg4NCA1NDggOTEwIDU0OEg5MTZROTM4IDU0OCA5NjIgNTU2TDk2NyA1NDJROTY3IDU0MCA5NDcgNTMxUTkwOSA1MDkgODgzIDQ5MlQ4NDcgNDY3VDgzOCA0NThRODI1IDQxOSA4MjUgMzI4UTgyNSAyMzQgODMzIDE5MVQ4NTggMTIxUTg3NSA5NCA4OTIgNzdRODk4IDcxIDkwNyA3MVE5MTIgNzEgOTI4IDc2VDk1NyA4N1Q5NzEgOTFMOTcyIDg4UTk3MiA4NCA5NzIgODFMOTczIDczTDk1NyA2M1E4OTEgMjEgODA2IC0yM0w3OTQgLTMwTDc4MyAtMTRRNzY2IDEzIDcyOCA2MEw3MTMgNzlWMzcyTDcyNCAzODRRNzQzIDQwNiA3NjUgNDI3VDgwMCA0NjBMODEzIDQ3MVE4MDkgNDcyIDgwNiA0NzJRNzgzIDQ3OSA3NjYgNTAzVDc0MSA1NTFUNzE1IDU5NFQ2NzIgNjE0UTY0NCA2MTQgNjIyIDU5NVE1OTcgNTc2IDU3MiA1NTBUNTM0IDUwOEw1MjIgNDkyJyxcbiAgICAweDFENTdBOiAnMjU0IDU5NVEyNjkgNTgzIDI2OSA1ODFMMjYyIDU3N1EyNTYgNTczIDI0NyA1NjZUMjI4IDU0OVQyMTIgNTI3VDIwNSA1MDJRMjA1IDQ4MCAyNjYgMzg2VDMyOCAyNzdRMzI4IDIzNCAyMzkgMTUwTDIyMSAxMzRMMjMxIDEzM1EyNjQgMTMxIDM3NiA5OVQ1MTYgNjJRNTY3IDUwIDYwNCA1MFE2MTQgNTAgNjI2IDUyUTY0MyA1NyA2NjIgNzFUNzAzIDExNVQ3MzkgMTk4VDc1MyAzMjNRNzUzIDQ1NCA2OTIgNTE3UTY1MiA1NTUgNTg0IDU2NVQzODIgNTc3UTM2NSA1NzcgMzU3IDU3N0gzMDhMMzAwIDU5MUwyOTIgNjA2UTI5MiA2MDggMzQyIDY2NUwzOTIgNzI0TDQwMyA3MjVRNDA2IDcyNSA0MTEgNzI2SDQxNkw0MTcgNzI1TDQxMiA3MTVRNDA4IDcwNSA0MDggNjk4UTQwOCA2ODQgNDIzIDY3OVE0MzEgNjc3IDUxNiA2NzJUNjYzIDY1NVE3NTcgNjM0IDgwNiA1OTNUODczIDQ2M1E4ODEgNDIxIDg4MSAzODBRODgxIDM0MCA4NzQgMzA2UTg1OSAyMjMgODA5IDE0N1E4MDEgMTM0IDc4OSAxMjRRNTk1IC0zMCA0NTYgLTMwUTM5NSAtMzAgMjg5IDNUMTQ3IDM2UTEzNCAzNiAxMjEgMzNUOTggMjZUNzYgMTVUNTkgNFQ0NCAtOFQzMiAtMTdMMjIgLTdMMTIgNEw1NiA1OUwxMDAgMTE0TDExNiAxMThRMjE3IDE0MiAyMTcgMTk5UTIxNyAyMzAgMTg1IDI3NlQxMjAgMzY1VDg3IDQzMFE4NyA0MzUgMTA5IDQ2NFQxNzIgNTM0VDI1NCA1OTUnLFxuICAgIDB4MUQ1N0I6ICcyNDcgMzk4UTI0NyAzNzIgMjA2IDMzNFQxMjYgMjcyVDgzIDI0N1E4MiAyNDcgNzIgMjUzVDYxIDI2MVE2MCAyNjEgNjEgMjYyVDY2IDI2NVExMjcgMzA2IDEyNyAzNDNRMTI3IDM2NCA2MyA0MzBRNDIgNDUxIDM4IDQ1OFQzMyA0ODBWNDkwVjQ5N1EzMyA1MjYgNjMgNTY3UTExMiA2MzIgMTcwIDY2MFQyODIgNjg4UTM0MSA2ODggMzg0IDY2N1E0NTQgNjMzIDQ4MiA1NjZRNDgzIDU2NSA0ODQgNTY2VDQ5NiA1NzRRNTYyIDYyMyA2MzAgNjUzUTY5OSA2ODEgNzUxIDY4MVE3NzggNjgxIDc5NyA2NzNRODE4IDY2MiA4MzAgNjA5UTgzNSA1ODAgODQzIDU2NFE4NjMgNTI0IDg5NSA1MjRIOTAxUTkxNyA1MjQgOTMyIDUyOFE5MzYgNTIyIDkzOCA1MThUOTQyIDUxM1Q5NDIgNTExUTg3MyA0ODAgODM2IDQ1NFE3ODkgNDIzIDc4OSAzOTVRNzg5IDM2MiA4MzQgMjk4VDg4MCAyMDBRODgwIDE3MCA4NjcgMTQ1VDgyMCA4MVE3MzMgLTIwIDY0NyAtMjBRNTgxIC0yMCA0OTkgMjFWOVE0OTkgLTE2IDUwMiAtNTNUNTA5IC0xMTZMNTEyIC0xNDFMMzcwIC0yMjNMMzU3IC0yMTZRMzQ0IC0yMDkgMzQ0IC0yMDhMMzQ4IC0xOTZRMzcwIC0xMTMgMzcwIDMzVjUyTDM1NSA1OFEzMDcgNzYgMjg0IDc2UTI1OCA3NiAyMjggNjBUMTgzIDI5VDE0MSAtMTFRMTM3IC03IDEzMyAtMkwxMjYgN0wxMzQgMThRMTgxIDg5IDIxMCAxMjFUMjc4IDE3MFEzMDQgMTc5IDMyOCAxNzlRMzM2IDE3OSAzNTggMTc3TDM3MCAxNzVRMzY4IDI2OCAzNjcgMzU5UTM2NyA0MTYgMzYzIDQzNFEzNjIgNDM4IDM2MiA0NDFRMzQ4IDUyNyAzMDIgNTc0VDIwMyA2MjFRMTY5IDYyMSAxNDggNTk5VDEyNyA1NTdRMTI3IDUzNSAxODcgNDc2VDI0NyAzOThaTTY3MyAzMTVRNjczIDM1NyA3ODYgNDQyUTc4NiA0NDMgNzc2IDQ0NFQ3NTAgNDQ5VDcyNyA0NjJRNzE5IDQ3MSA3MTYgNDg0VjQ5NlE3MTUgNTA3IDcxNSA1MTVRNzE1IDU3MSA2OTggNTg4UTY4MCA2MTEgNjQzIDYxMVE1OTIgNjExIDU0NyA1NzFRNTM0IDU1OCA1MTEgNTIyTDQ5OSA1MDVWMTM5TDU0MyAxMjNRNzAyIDY0IDc0NCA2NFE3NzAgNjQgNzgxIDc5VDc5MyAxMTJRNzkzIDE0MyA3MzMgMjE3VDY3MyAzMTUnLFxuICAgIDB4MUQ1N0M6ICcyNTQgNTk1UTI2OSA1ODMgMjY5IDU4MUwyNjIgNTc3UTI1NiA1NzMgMjQ3IDU2NlQyMjggNTQ5VDIxMiA1MjdUMjA1IDUwMlEyMDUgNDgwIDI2NiAzODZUMzI4IDI3N1EzMjggMjM0IDIzOSAxNTBMMjIxIDEzNEwyMzEgMTMzUTI2NCAxMzEgMzc2IDk5VDUxNiA2MlE1NjcgNTAgNjA0IDUwUTYxNCA1MCA2MjYgNTJRNjQzIDU3IDY2MiA3MVQ3MDMgMTE1VDczOSAxOThUNzUzIDMyM1E3NTMgNDU0IDY5MiA1MTdRNjUyIDU1NSA1ODQgNTY1VDM4MiA1NzdRMzY1IDU3NyAzNTcgNTc3SDMwOEwzMDAgNTkxTDI5MiA2MDZRMjkyIDYwOCAzNDIgNjY1TDM5MiA3MjRMNDAzIDcyNVE0MDYgNzI1IDQxMSA3MjZINDE2TDQxNyA3MjVMNDEyIDcxNVE0MDggNzA1IDQwOCA2OThRNDA4IDY4NCA0MjMgNjc5UTQzMSA2NzcgNTE2IDY3MlQ2NjMgNjU1UTc1NyA2MzQgODA2IDU5M1Q4NzMgNDYzUTg4MSA0MjEgODgxIDM4MFE4ODEgMzQwIDg3NCAzMDZRODY0IDI1MCA4MzggMTk2VDc5MSAxMjZRNzQ4IDkzIDczMyA4Mkw3MTUgNjlRNzE0IDY4IDcyMyA2MFQ3NDggNDBUNzc0IDIzUTgwNiAyIDgzMiAyUTg0OSAyIDg3MCA2VDkwNCAxNEw5MTcgMTdROTE3IDEyIDkxOCA2Vi0zTDg4MiAtMjJRODA2IC02MCA3NzggLTczTDc1NSAtODNRNjQwIC0zNiA1OTYgLTdMNTg2IDBMNTc2IC00UTUxMyAtMzAgNDU3IC0zMFEzOTQgLTMwIDI4OSAyVDE0OSAzNVExMTkgMzUgOTMgMjJUNTIgLTRUMzYgLTE3VDI0IC03VDEyIDRMNTYgNTlMMTAwIDExNEwxMTYgMTE4UTIxNyAxNDIgMjE3IDE5OVEyMTcgMjMwIDE4NSAyNzZUMTIwIDM2NVQ4NyA0MzBRODcgNDM1IDEwOSA0NjRUMTcyIDUzNFQyNTQgNTk1JyxcbiAgICAweDFENTdEOiAnMzEgNDk4UTM0IDU0MSA3NiA1ODZUMTc2IDY1OVQyNzkgNjg4SDI5MFEzNzcgNjg4IDQyOSA2NTNUNTA2IDU2OUw1MTEgNTU4TDUyNiA1NzJRNjIwIDY2MyA3MDcgNjgyUTcyMiA2ODUgNzM3IDY4NVE3ODEgNjg1IDgwNCA2NjVUODMwIDYxOVQ4MzggNTY1VDg1NCA1MjVRODY2IDUxMSA4OTcgNTExUTkxNyA1MTEgOTI1IDUxM0w5MzcgNTE1UTkzOCA1MTUgOTQxIDUwOVQ5NDQgNTAxVDkyNSA0OTNUODcwIDQ3MFQ4MDMgNDM4UTczNSA0MDYgNzM1IDQwMVE3MzUgNDAwIDc0MSAzOTlUNzY3IDM5MFQ4MTQgMzc0TDgyOCAzNjdMODI5IDMwN1E4MjkgMjMzIDgzMyAyMDJUODUyIDE0NFE4NzMgMTA5IDg5NiA5MFE5MDYgODIgOTI4IDgyVDk3NiA5NVY5MlE5NzYgODggOTc4IDcyTDgwNyAtMjhRNzY4IDM5IDczMyA4N0w3MTggMTA4VjE0OVE3MTggMjMwIDcxNCAyNTdUNjkzIDI5OFE2NTQgMzMzIDU4MCAzMzNRNTI0IDMzMyA1MjAgMzI5UTUyMCAzMDAgNDg5IDIyNFQ0NDMgMTMzUTQ0MSAxMzEgMzMzIDUzVDIyMyAtMjdRMjIxIC0yNiAyMDQgLTExVDE2OSAxNlQxMzYgMjhRMTEwIDI4IDY2IC04TDU2IC0xNlE1MiAtMTMgNDAgLTFMNDggN1ExNjUgMTI0IDIxMSAxMjRRMjMyIDEyNCAyODcgNzdMMjk4IDY3UTMwOSA3MyAzMzcgOTdRMzk3IDE1MCAzOTcgMzQ3UTM5NyA0MTkgMzc5IDQ3NFQzMzAgNTYwVDI2OSA2MDRUMjA3IDYxOVExNzcgNjE5IDE1MiA2MDFUMTI2IDU2M1ExMjYgNTQwIDE4NSA0NzlUMjQ0IDM4N1EyNDAgMzM2IDE2MCAyODlRMTQ0IDI3OCA5OCAyNTVMODAgMjQ2TDYyIDI2MUw3OSAyNzJROTYgMjgzIDExMyAzMDFUMTMwIDMzN1ExMzAgMzUzIDExNSAzNzNUODEgNDEwVDQ3IDQ1MVQzMSA0OThaTTUyNCAzNThRNTM3IDM1OCA2NTcgNDA1VDc3NyA0NTdRNzc3IDQ1OSA3NjggNDU5UTc0OSA0NjIgNzM4IDQ3NFQ3MjMgNDk5VDcxNCA1MzlRNzA2IDU4NSA2OTcgNTk5UTY4MSA2MTggNjU3IDYxOFE2MzIgNjE4IDU5NyA1OTVUNTMyIDUxNUw1MjUgNTAyTDUyNCA0NDFRNTI0IDM3NSA1MjMgMzY5UTUyMyAzNTggNTI0IDM1OCcsXG4gICAgMHgxRDU3RTogJzQ1NyAtMzFRMzU2IC0zMSAyNzIgNlQxMzUgMTIwVDgyIDMwNFE4MiAzNzIgMTA2IDQzMFQxNzAgNTI3VDI0MSA1ODhUMzA1IDYyNlEzNDEgNjQzIDM4NiA2NTdUNDYwIDY3OFQ0OTUgNjg1VDU1NCA2NjBUNjc0IDYwOVQ3NzggNTg0UTgwMCA1ODQgODE4IDU5MVQ4NDggNjEwVDg2NiA2MzNUODc4IDY1MVQ4ODMgNjU5TDg5MyA2NDlMOTAxIDYzOVE4NzkgNTc0IDgwMyA1MzJUNjY2IDQ5MFE2NjEgNDkwIDY1NyA0OTBUNjUwIDQ5MVQ2NDEgNDkyVDYzMyA0OTVUNjIyIDUwMFQ2MTAgNTA1VDU5NSA1MTNUNTc3IDUyMlQ1NTQgNTMzVDUyNyA1NDdRNDM2IDU5NCA0MTUgNjAyUTM5MyA2MDggMzc0IDYwOFEzMDMgNjA4IDI1MyA1NDVUMjAyIDM4NlEyMDIgMjI5IDMwNyAxMzVUNTY4IDQxUTY3NCA0MSA3NDggODVUODIyIDE5OFE4MjIgMjQ0IDc3OSAyODNUNjM5IDMyMlE1OTUgMzIyIDQ5OSAzMDNUMzgzIDI4M1EzNTggMjgzIDMzNSAyOTBUMjkxIDMxOFQyNzAgMzc0UTI3MCA0MTggMzEzIDQ2MFQ0MjQgNTEwSDQzMUw0MzUgNTA1TDQ0MCA1MDBRNDI1IDQ5NiA0MDMgNDc1VDM4MCA0MjdRMzgwIDM4MiA0MzEgMzczUTQzNyAzNzIgNDc1IDM3MlE1NDMgMzcyIDYyNiAzODhUNzQyIDQwNFE4MzEgNDA0IDg2OCAzNjJUOTA1IDI2MFE5MDUgMTgyIDgzMSAxMDhRNjkyIC0zMSA0NTcgLTMxJyxcbiAgICAweDFENTdGOiAnNjY2IDY0MVE3MzcgNjQxIDc5NCA2ODZMODAyIDY2MlE3OTAgNjQ4IDczNCA1OTZMNjc3IDU0MUw2NjQgNTM4UTYzMCA1MjggNTgzIDUyOFE1NDAgNTI4IDQ4MiA1MzdMNDYxIDU0MVE0MDIgNTEyIDQwMiA0NTZRNDAyIDQyNyA0MzkgMzg3VDUxMiAzMTFUNTQ5IDI1M1E1NDkgMjIwIDQ1NSAxMzlMNDQwIDEyNlE1NDEgNzUgNTg2IDc1UTYwMCA3NSA2MTkgODBUNjU0IDk0VDY4NSAxMTBUNzA5IDEyNFQ3MTkgMTMwUTcyMiAxMjUgNzI1IDExOUw3MzAgMTA4UTcwMCA3MiA1NjggLTE4UTU1MSAtMzAgNTQyIC0zMFE0OTUgLTMwIDQwNCA2VDI3MCA0MkgyNjNRMjEzIDQyIDE0MiAtMTFMMTMxIC0xOUwxMjkgLThRMTI2IDEgMTI2IDRRMjE4IDg0IDMwMSAxMjZMMzE2IDEzNEg0MDZMNDEzIDE0MlE0MzYgMTY1IDQzNiAxODlRNDM2IDIwMiA0MjEgMjIxVDM2NCAyODFRMzM2IDMwNyAzMTggMzI4VDI5NiAzNTZUMjgzIDM4MUwyOTAgMzk0UTMzOCA0NzggNDEwIDU0MFE0MTkgNTQ5IDQxNyA1NDlRNDE1IDU1MCAzNjkgNTU4VDI2OCA1NzVUMTk1IDU4NFExNTMgNTg0IDEyNyA1NjdUMTAwIDUyM1ExMDAgNDk5IDExNiA0NzlUMTUxIDQ0N1QxNzAgNDMzUTE3MCA0MjkgMTcxIDQyOFExNzEgNDI3IDEzMSAzOTRUODggMzU5UTgyIDM2MyA3MyAzNzBUNDcgNDAzVDMxIDQ1N1EzMSA1MTMgNzkgNTY1VDE5NyA2NDhUMzMyIDY3OVEzNjkgNjc5IDQ5MCA2NjBUNjY2IDY0MScsXG4gICAgMHgxRDU4MDogJzI3MyAyNDRRMjczIDI4MSAyNDQgMzMxVDE4NiA0MjhUMTU1IDUwMlExNTUgNTI0IDE2NSA1MzZRMjM5IDYzNCAzMzMgNjg4UTMzOCA2ODQgMzQ1IDY4MEwzNTYgNjcyTDM0NCA2NjRRMzEwIDY0MiAyOTUgNjI0VDI4MCA1ODJRMjgwIDU1MCAzMDMgNTA1VDM0OCA0MDdUMzcxIDMwMFEzNzEgMjcwIDM2MiAyNDhMMjQ3IDEyM0wzNTggOTJRNDUyIDY0IDQ4NCA2NFE1MDcgNjQgNTIzIDcyUTU1MyA4NyA1NzMgMTA5UTU4MyAxMjEgNTg2IDE0NlQ1OTMgMjgzUTU5NCAzMDMgNTk0IDM0NFE1OTQgNDAxIDU5MSA0NjFUNTg0IDU1OEw1ODEgNTk1UTU5OCA2MDAgNjIzIDYxMVQ2NzIgNjM0VDcxOSA2NTlUNzU0IDY3OEw3NjggNjg2UTc3MCA2ODYgNzg0IDY3M0w3ODIgNjcwUTc4MSA2NjggNzc3IDY2NFQ3NjggNjU1UTc0NyA2MzUgNzM4IDYxNlQ3MjEgNTM1VDcxNCAzNTlRNzE0IDIwNSA3MjMgMTc2UTcyNyAxNjQgNzQ0IDEzM1Q3NzEgODlRNzgwIDc1IDgwNCA3NVE4MTQgNzUgODUzIDg3TDg2NyA5Mkw4NzEgNzNMNjcxIC0zOUw2NTQgLTEwUTYzNiAyMCA2MTkgNTBUNjAwIDgzUTYwMCA4NCA1ODkgNzVUNTM5IDM0UTQ3OCAtMTYgNDc1IC0xOVE0NjkgLTIyIDQ0OSAtMjhUNDE0IC0zNFE0MTAgLTM0IDM5NCAtMzJRMzU2IC0yOCAyODIgLTJMMjM3IDE1UTE2OSAzOCAxMjYgMzhRMTA2IDM4IDg1IDI3VDUxIDRUMzcgLThUMjcgLTFUMTggOFExOCAxMCA3MCA2M1QxMjQgMTE2UTE1NCAxMjMgMTc2IDEzMVQyMjMgMTU0VDI2MCAxOTFUMjczIDI0NCcsXG4gICAgMHgxRDU4MTogJzEzMyAzNDNRMTMzIDM2MCA3OSA0MTZUMjUgNDk2UTI1IDUyMyA1OCA1NjNUMTE4IDYyNFExOTcgNjg1IDI5MyA2ODVRMzMxIDY4NSAzMzkgNjg0UTQ1MyA2NjUgNDg5IDU1OEw0OTMgNTQ2UTUyMSA1NzAgNTUzIDU5NlQ2NDAgNjUzVDcyNSA2ODRRNzUzIDY4NCA3ODMgNjcyVDg0NCA2NDFUODg5IDYxOFE4OTUgNjE2IDkxMiA2MTZROTI0IDYxNiA5MzYgNjE3VDk1NiA2MjBUOTY1IDYyMlQ5NjYgNjEyVjYwNEw5NTIgNTk1UTkyNCA1NzYgODk1IDU0OVE4NjQgNTE3IDg1NiA0OTZUODQ3IDQ0OFY0MzRRODQ3IDM5NSA4NDggMzg4TDg1OSAzMjNRODc0IDI0MSA4NzQgMjEyUTg3NCAxNDIgODMwIDk2UTc5NiA2MiA3MjQgMTRRNjYxIC0yOSA2MDMgLTI5UTU1NSAtMjkgNDIxIDI4VDI0MiA4NlExODIgODYgMTEwIDMxUTEwNSAyOCAxMDIgMjZUOTkgMjVRODggMzYgODggNDJROTUgNTQgMjIyIDE0MlEyNTIgMTYzIDI2MiAxNjVRMzE5IDE4MyAzNDQgMjE4UTM3OCAyNjYgMzc4IDM3N1EzNzggNDQ0IDM2MiA0OTRUMzE5IDU3MVQyNjYgNjEwVDIxMiA2MjNRMTgxIDYyMyAxNTYgNjAzVDEzMSA1NjJRMTMxIDUzOSAxNTQgNTEyVDIwNiA0NThUMjQzIDQxNlEyNDYgNDA5IDI0NiAzOTlRMjQ2IDM4NyAyNDIgMzc3VDIyNSAzNTFUMTc4IDMxMVQ5NCAyNTlMNzkgMjUxUTcyIDI1NiA2OCAyNjFUNjIgMjY4TDYxIDI3MEw3MCAyNzdRMTMxIDMxOCAxMzMgMzQzWk04MjIgNTI2UTc3OCA1MzEgNzE5IDU2NFQ2MjggNTk3UTYxMSA1OTcgNTc5IDU3NFE1NDMgNTQzIDUxMyA1MDZMNTA1IDQ5NUw1MDYgNDczUTUwNiA0NjkgNTA2IDQ2MVQ1MDcgNDQ5UTUwNyAzNDggNDY3IDI3MUw0NjIgMjYxTDQwNCAyMThMMzQ4IDE3NFEzNDkgMTczIDM1NiAxNzNRMzg0IDE2OSA0NTAgMTQ0TDU0NiAxMDVRNjY1IDU2IDcwOCA1NlE3MzcgNTYgNzQ2IDcyVDc1NiAxMThRNzU2IDEyOSA3NTUgMTM1TDc0MSAyMTlRNzI1IDMxNCA3MjUgMzM0VjM0NFE3MjUgNDE2IDczNiA0MzFRNzQ4IDQ1MCA4MTUgNTEwTDgzMiA1MjZIODIyJyxcbiAgICAweDFENTgyOiAnMTMzIDMxN1QxMzMgMzM4VDgwIDQxM1QyNiA0OTZRMjYgNTMyIDgzIDU5MVExMDAgNjA4IDExMSA2MTZUMTUxIDY0NFQyMTkgNjcyVDMwNCA2ODJRMzgxIDY4MiA0MzQgNjQ2VDUwNiA1NjRMNTEwIDU1N1E1MTMgNTU3IDUzNCA1NzNMNjc3IDY2NUw3MDcgNjgzTDc5MCA1NjFMODAzIDU3MlE5MzMgNjgyIDEwMDEgNjgyUTEwMzcgNjgyIDEwOTggNjUwVDExOTMgNjE2UTEyMDggNjE2IDEyMjIgNjE5TDEyMzUgNjIyUTEyMzkgNjIyIDEyMzkgNjE2UTEyMzkgNjExIDEyNDAgNjA5UTEyNDAgNjA4IDEyMDYgNTc3VDExMzggNTAzVDExMDQgNDMwUTExMDQgNDA5IDExMjMgMzMwVDExNDIgMjA4UTExNDIgMTgzIDExMzYgMTQ3UTExMjcgMTE4IDExMTcgMTA2UTExMTQgMTAzIDEwMzEgNDhUOTM1IC0xNFE5MzAgLTE4IDkwOCAtMjJUODYyIC0yN1E4MjYgLTI3IDc1OSAtNlQ2NDcgMjZRNTk3IDM4IDU3OCAzOFE1NzMgMzggNTYxIDMzVDUzMyAyMFQ1MDUgNFQ0ODAgLTEwTDQ2OSAtMTZMNDUyIC0yNkw0MzkgLTI4UTQyMyAtMzAgNDExIC0zMFEzNTggLTMwIDI3OSA3VDE2OSA0NVExMjUgNDUgNTggLTVMNDcgLTE0TDQxIC00TDM1IDhRMzUgMTEgNTYgMjlUMTEzIDc1VDE4MSAxMjVMMjAwIDEzOUgyMTdRMjc5IDE0MyAzMjAgMTgwVDM3NyAyNzBUMzk0IDM5M1EzOTQgNDUzIDM3OCA0OThUMzM0IDU2OFQyNzcgNjA1VDIxMyA2MTdRMTc3IDYxNyAxNTUgNjA3UTE0MCA2MDAgMTMwIDU4N1QxMTkgNTYwUTExOSA1NDUgMTM3IDUyMlQxNzcgNDc5VDIxNyA0MzRUMjM2IDM5M1EyMzYgMzI0IDk4IDI1MUw4OSAyNDZMNzYgMjUzTDYzIDI2MVE5MSAyNzUgMTEyIDI5NlpNMTA4OCA1MjZRMTA2NiA1MjYgMTAwNCA1NTZUOTA5IDU4NlE4NjMgNTg2IDgxNiA1MzlMODAyIDUyNkw4MDQgNTE0UTgxNCA0NjEgODE0IDQxMVE4MTQgMzE5IDc4MSAyMzhRNzcyIDIxNCA3NjAgMTk4VDczMCAxNjVUNzAyIDEzNkw3MTUgMTMzUTc1OSAxMjIgODQ4IDkwVDk3MyA1N1ExMDAzIDU3IDEwMTcgODBRMTAyMiA5MyAxMDIyIDExNlExMDIyIDE1MiAxMDAzIDI0MVQ5ODMgMzc3VjM5MVE5ODMgNDA1IDk4NSA0MDlUMTAwMiA0MjlRMTAxOSA0NTAgMTA0NSA0NzVUMTA5MCA1MTRMMTEwNyA1MjhRMTEwNCA1MjcgMTEwMiA1MjdUMTA5NiA1MjdUMTA4OCA1MjZaTTY5OSAzNThRNjk5IDM5MSA2OTYgNDE5VDY4OCA0NjdUNjc1IDUwM1Q2NjAgNTMwVDY0MiA1NTBUNjI2IDU2M1Q2MDggNTc0VDU5MyA1ODJRNTgxIDU3NSA1NTkgNTU0VDUyNCA1MTJRNTIzIDUxMCA1MjMgNDc3UTUyMyAzMTUgNDQ0IDIxOEw0MzUgMjA3TDM2OCAxNjlRMzAxIDEzMiAzMDEgMTMxUTMwNyAxMjggMzE1IDEyNUwzNzcgOTlRNDc2IDU3IDUxNSA1N1E1MzQgNTcgNjA4IDk0TDYyNyAxMDJMNjM2IDExMVE2OTkgMTg3IDY5OSAzNTgnLFxuICAgIDB4MUQ1ODM6ICcyNzMgNjc5UTM1NCA2NzQgNDA4IDYzM1Q0NzcgNTI1TDQ4NCA1MzNRNDk2IDU0OCA1MjQgNTc0VDU3MSA2MTVRNTk0IDYzMyA2MjUgNjQ5VDY3NSA2NzNUNjk5IDY4MVE3MjQgNjMyIDc0NyA2MDdRNzU0IDYwMSA3NTYgNTk5VDc2NSA1OTRUNzc3IDU5MVQ3OTQgNTkwUTgxOCA1OTAgODM0IDU5NFY1ODVMODM1IDU3N0w3MDQgNTEzTDY5MyA1MThRNjU3IDUzNCA2MzEgNTYwVDU5NyA1OTlRNTk2IDYwMSA1ODEgNTg0UTQ5NSA0OTAgNDg5IDM3OVYzNjZINTYyTDY4MSAzNjlRNjgyIDM2OSA2NzkgMzY2VDY2OCAzNTVUNjUxIDM0MUw2MjAgMzE0SDQ4NVYyOTVRNDkwIDE5MCA1NDMgMTI1VDY4NiA2MFE3MjAgNjAgNzg5IDg4TDgwMSA5M1Y4OVE3OTggODMgNzk4IDY2UTc4MSA1OSA2ODUgLTEwTDY2NSAtMjVMNjM0IC0zMFE1OTYgLTM1IDU5NCAtMzVRNTcwIC0zNSA1MzYgLTIzVDQ3NyAxOVE0NjEgMzcgNDQ1IDY3VDQxOCAxMThMNDA5IDEzOFE0MDEgMTMxIDM4OCAxMjBUMzQwIDc5VDI3MyAyOFQyMDYgLTEyVDE1MSAtMzFRMTI5IC0zMSA5MCAtMTJUMzIgMjJMMTEzIDEwMVExMTQgMTAxIDEyMCA5NlQxMzYgODRUMTYwIDY5VDE4OSA1NlQyMjEgNTFRMjU2IDUxIDMwNSA5MFEzNzYgMTQ5IDM3NiAzMDFWMzE1SDI5M1EyNzYgMzE1IDI1MSAzMTVUMjEwIDMxNFQxOTAgMzEzTDE2OCAzMTJRMTY4IDMxMyAyMDAgMzQwTDIzMSAzNjhMMjM4IDM2N1EyNzUgMzY3IDMxMSAzNjZIMzc4VjM4N1EzNzYgNDcwIDM1NSA1MTJUMjkxIDU3MlEyNzQgNTc5IDI1MiA1NzlRMjIzIDU3OSAxOTcgNTY4VDE1NiA1NDRUMTMxIDUxOVQxMTcgNTA4UTExMiA1MTIgMTA4IDUxOEw5OSA1MjdMMTE3IDU0NVExNzcgNjA0IDI1NSA2NjVMMjczIDY3OScsXG4gICAgMHgxRDU4NDogJzM0IDQ5NlEzNCA1MTggNTMgNTQ5VDEwNyA2MTBUMTk1IDY2MVQzMTAgNjgyUTM1NyA2ODIgMzk4IDY2M1Q0NjAgNjExUTQ2NyA2MDAgNDc1IDU4M1Q0ODkgNTU0VDQ5NSA1NDJRNDk1IDU0NCA1MzEgNTcwVDYxNyA2MjlUNzAwIDY3Nkw3MjQgNjg4UTc0MiA2NzAgNzU2IDY1N1Q3ODQgNjM1VDgwNiA2MjFUODMwIDYwNlQ4NTYgNTkyUTg3OCA0MTYgODc4IDM0MFE4NzggMTU0IDgwNSAtM0w3OTggLTIwTDc3OSAtNDBRNzA2IC0xMTMgNjEzIC0xNjNUNDIxIC0yMTRRMzU5IC0yMTQgMzE3IC0xOTZUMjU2IC0xNjBMMzA2IC02M0wzMTMgLTY0TDMyMCAtNjZMMzI2IC03OVEzMzcgLTEwNCAzNDkgLTEyMFQzOTIgLTE1MVQ0NzAgLTE2NlE1NzYgLTE2NiA2NDQgLTEwMVE3NTAgNyA3NTAgMjkyUTc1MCA0MjYgNzIxIDQ5NVQ2MTcgNTY1SDYxMVE1NjMgNTY1IDUxMyA1MDlMNTA2IDUwMUw1MDggNDkzUTUwOCA0OTAgNTA5IDQ3NVQ1MTAgNDQ1UTUxMCAzMTkgNDU4IDIzNkw0NTEgMjI1TDQzNiAyMTZRNDA2IDE5OCAzNjUgMTY5VDMxOCAxMzRMMzMyIDEyN1EzMzYgMTI2IDM5NyAxMDNUNDg5IDgwSDQ5M1E1MjcgODAgNTkzIDEyOUw2MDQgMTM3TDYwNyAxMjdRNjEwIDExOSA2MTAgMTE2UTYxMCAxMTQgNTkyIDk1VDU0MyA0NlQ0ODQgLTRRNDUwIC0yNyA0NDYgLTI3UTQ0MSAtMjcgNDAyIC0xOFEzNjUgLTkgMjkwIDIwVDE4OCA1MFExMzUgNTAgNjQgLTdMNTIgLTE3TDQzIC03TDM0IDJMNTEgMTlRMTE4IDg3IDE3NyAxMzJMMTkyIDE0M0gyMTVRMjU5IDE0NSAyODkgMTU1VDMzNSAxODRUMzU1IDIxNFQzNjYgMjQ1UTM4MiAzMDYgMzgyIDM4OFEzODIgNDI2IDM4MSA0MzZRMzY4IDUyMCAzMTggNTcwVDIxNCA2MjFRMTg0IDYyMSAxNjUgNjA4VDE0MiA1ODNUMTM3IDU2MlExMzcgNTQxIDE2MyA1MDhMMjAxIDQ2OVEyNDUgNDI1IDI1MSA0MDhRMjUzIDQwMyAyNTMgMzk4UTI1MyAzODMgMjQwIDM2NlQyMTIgMzM1VDE2MSAyOTVRMTI4IDI3MSA5OSAyNTNMODkgMjQ3TDc3IDI1Nkw2NSAyNjZMNzYgMjczUTEyNSAzMDEgMTM0IDMyOVExMzYgMzM0IDEzNiAzNDJRMTM2IDM1NyAxMjQgMzcyVDg4IDQxMFQ0OSA0NTVRMzQgNDc5IDM0IDQ5NicsXG4gICAgMHgxRDU4NTogJzI3OCA2MDFRMjQyIDYwMSAyMTIgNTkxVDE2NyA1NzBUMTIxIDUzM1ExMTQgNTI4IDExMSA1MjVMOTMgNTUwUTIyMyA2NjEgMjQ0IDY2N1EyOTkgNjc3IDM1NiA2NzdRNDE1IDY3NyA0NTYgNjY2VDUxNSA2MzRUNTQxIDU5NlQ1NDkgNTU1UTU0OSA1MTMgNTI5IDQ3OFQ0ODAgNDIxVDQyNCAzODhUMzc3IDM3MlEzNjUgMzcwIDM2NSAzNjdRMzY1IDM2NSAzODkgMzY1VDQ1MCAzNThUNTIzIDMzN1Q1ODggMjgyVDYyMyAxODNRNjI0IDE3NyA2MjQgMTYxUTYyNCAyMCA1MjQgLTYwUTQxNSAtMTQ4IDI4NSAtMTQ4UTI0MiAtMTQ4IDIxMyAtMTM5UTE4MSAtMTMxIDE1OSAtMTA5UTEzNiAtODcgMTI3IC01NlQxMTQgNlQxMDQgNDlROTQgNjkgNTcgNjlRMzggNjkgMTMgNThMMSA1M1ExIDU1IDAgNTlULTMgNjhULTQgNzZRNzggMTMwIDEzOCAxNDJRMTUwIDE0NCAxNjIgMTQ0UTIxMyAxNDQgMjI3IDEyMFQyNDIgMzFRMjQyIC0zMCAyNjMgLTY2VDM0NSAtMTAyUTM5NyAtMTAyIDQ0NCAtNTJUNDkxIDEwN1E0OTEgMTcyIDQ3MSAyMTFUNDI4IDI2NVEzOTIgMjg4IDMwNiAyODhRMjY5IDI4OCAyMzMgMjg0TDIxOCAyODJRMjA4IDI4OSAyMDggMjkxTDIyOSAzMjRMMjUxIDM1OVEyNTAgMzYwIDI0OCAzNjBRMjM5IDM2MCAyNDggMzcxTDI1NiAzODFIMjczUTM0NCAzODUgMzc4IDQwOVQ0MTMgNDk1UTQxMyA1MzcgMzg0IDU2OVQyNzggNjAxJyxcbiAgICAweDFENTg2OiAnODAgMTI5VjE1MVE4MCAyNDEgOTkgMzYzUTk5IDM2NyAxMTEgMzcyVDE3MiA0MDFUMjg1IDQ2NUwyOTcgNDcyUTM0MCA0NTUgNDA1IDQ0M0w0MjMgNDQwTDQ1NSA0NTNRNDg2IDQ2NyA0ODkgNDY3TDQ5NyA0NjFMNDk0IDQ1MVE0ODAgMzkwIDQ4MCAyOTJWMjgzUTQ4MCAyMDcgNDgzIDE1NUw0ODQgMTQzTDUzNSA4MEw1NTggOTBMNTgyIDk5UTU4NiA5NSA1ODYgODNRNTg2IDgxIDUxMyAyNUw0NDMgLTI5UTQxMCAxNiAzODYgNDBMMzcxIDU1VjYxUTM3MSA2MyAzNzEgNjdUMzcwIDc0VjgwTDI3OCAyNVExODYgLTI5IDE4NCAtMzFRMTgyIC0zMiAxNjAgLTEyVDExMiAzNVQ4MCA3NVYxMjlaTTM1OSAzNjZRMzM0IDM2NiAzMDAgMzcxVDI0MyAzODJMMjIxIDM4OFEyMTggMzg4IDIxMiAzNzVUMjAwIDMyM1QxOTQgMjI4UTE5NCAxOTEgMTk3IDE1MkwxOTggMTM5TDIxNyAxMjBRMjQ1IDkyIDI2OSA3NEwyNzkgNjZMMzA0IDc4UTMzOCA5NSAzNDkgMTAwTDM2OSAxMTBWMTUyUTM2OCAxNjQgMzY4IDIxMFQzNjcgMjc1UTM2NyAzNTggMzY2IDM2MVYzNjZIMzU5JyxcbiAgICAweDFENTg3OiAnOTkgMzk4UTk5IDYxMCA4NiA2NjJRODYgNjY1IDk1IDY2OVQxMDYgNjc0TDEwOCA2NjlRMTA5IDY2NCAxMTIgNjU0VDExOSA2MzVRMTIyIDYyNiAxMjUgNjE2VDEzMCA2MDFMMTMxIDU5NlEyMTQgNjQ5IDI3MyA2NzhRMjk1IDY5MCAyOTggNjkwUTI5OSA2OTAgMzA0IDY4OFQzMTMgNjgyTDMxNyA2NzlRMjc1IDY1MyAyNDAgNjEyUTIxMCA1NjkgMjEwIDQ2OVY0NTlRMjEwIDQ1MCAyMTAgNDMyVDIxMSA0MDZMMjEyIDM3OEwyODUgNDI1UTMwMSA0MzUgMzIxIDQ0N1QzNTAgNDY2TDM2MCA0NzJRMzYwIDQ3MyAzNjEgNDczVDM2OCA0NzFUNDAxIDQ1NlQ0NjUgNDI5TDUwMSA0MTRWNDA4UTUwNCAzODYgNTA0IDMwOVE1MDQgMjU1IDUwMCAyMDNUNDkxIDEyNVQ0ODUgOTdRNDg1IDk1IDQ0NSA3NFQzNDMgMjNUMjM3IC0yNEwyMTQgLTMyUTE5NyAtMjIgMTY1IDNUMTA5IDQ5VDg3IDczUTk5IDE2OSA5OSAzOThaTTM4NiAyNTFRMzg2IDMyMCAzODAgMzQ3VjM1MEwzMDUgMzc0TDI4MiAzODJMMjE0IDM0OEwyMTMgMjc0UTIxMyAxODQgMjE0IDE2NVYxMzFMMjMwIDExOVEyODggNzYgMzQ5IDU0UTM4NiAxMzcgMzg2IDI1MScsXG4gICAgMHgxRDU4ODogJzIyNyAzOTNRMjE1IDM5MyAyMTAgMzUxVDIwNSAyNjlRMjA1IDE2MSAyMTMgMTUzUTIyMCAxNDUgMjQ0IDEyNVQyOTAgODhMMzEyIDcyTDM2NSA5MlE0MTQgMTEzIDQxOCAxMTNWOTNMMzY1IDYwUTI1NSAtOSAyMjEgLTI2TDIxMSAtMThRMTU4IDIxIDkxIDg4TDkwIDEwN1E4NyAxNjcgODcgMjI1UTg3IDI2NyA5MCAzMDJUOTYgMzUxVDEwMCAzNjZMMjk1IDQ3M0wzMTEgNDcwUTM0MCA0NjQgMzY4IDQ1NFQ0MTAgNDM3VDQyNCA0MjlMMzQ3IDMzNEwzNDIgMzMzSDMzN0wzMjUgMzQyUTI5OSAzNjMgMjcxIDM3OFQyMjggMzkzSDIyNycsXG4gICAgMHgxRDU4OTogJzg4IDExN1E4OCAxNzcgOTEgMjMxVDk3IDMxMFQxMDIgMzQxUTEwMiAzNDMgMTE4IDM1N1QxNjggMzk3VDIzOSA0NDdMMjU3IDQ1OUwyNjggNDU0TDI3OCA0NDlRMjQyIDQxNiAyMzggNDEyTDIxOSAzOTRRMjE5IDM5MSAyMTYgMzc4VDIxMSAzNDlUMjA2IDMwN1QyMDMgMjQ5UTIwMyAyMTEgMjA2IDE2NkwyMDggMTQ4UTIyNCAxMzIgMjYxIDEwOFQzMzMgNzBRMzQxIDY2IDM0MiA2N1QzNTAgNzlRMzkzIDE1NyAzOTMgMzAyUTM5MyAzNjggMzg4IDQwNlY0MTFMMzcxIDQyNFExOTkgNTU4IDEwMSA1NThRNjkgNTU4IDI4IDU0NUwxOCA1NDJMOCA1NDlMLTEgNTU3TDI0IDU2OVE2MSA1ODcgMTQ3IDYyMUwxNzcgNjMyUTE3OSA2MzEgMTk0IDYyN1QyMTYgNjIxVDI0MCA2MTNUMjY5IDYwMlQzMDIgNTg5VDM0MCA1NzFUMzgyIDU0OVQ0MzEgNTIyVDQ4NCA0ODhRNTA0IDQ3NSA1MDQgNDcyUTUxMSA0NDkgNTExIDM2NVE1MTEgMjQ4IDQ3NCAxMjlMNDY4IDEwOEw0NTEgOTZRNDI3IDc3IDM0NyAyOFQyNTQgLTI4UTIzNSAtMjAgMTc0IDIxVDg5IDg2TDg4IDExNycsXG4gICAgMHgxRDU4QTogJzMwOSA2OVEzOTEgOTggNDE2IDEwOFE0MTggMTA2IDQyMiAxMDBUNDI1IDkyUTQxOSA4NiAzMjYgMzBUMjI5IC0yN1EyMjggLTI3IDIwNyAtMTNUMTU0IDI3VDk3IDc2TDg1IDg3TDg0IDEwNlE4MSAxNTIgODEgMTk0UTgxIDI5NSA5MyAzNTlMOTUgMzY5TDI4NiA0NzFMMzEzIDQ0OVEzNzYgMzk3IDQxNCAzNzJMNDI4IDM2MlE0MjggMzYwIDM3NSAzMThMMTg4IDE4MVYxNzBRMTg4IDE1NiAxODkgMTUzVjE0OEwyMDMgMTM4UTIyOCAxMTkgMjY2IDk0VDMwOSA2OVpNMjA5IDM4OVEyMDggMzg4IDIwNCAzNjZUMTk0IDMwN1QxODcgMjQ0UTE4NyAyMjUgMTg4IDIyNVQyMDEgMjMzTDI0NSAyNjFRMjgzIDI4NCAyOTEgMjkxUTMyNCAzMTMgMzI0IDMxNkwyOTYgMzM0UTI4MCAzNDMgMjU5IDM1N1QyMjQgMzgwTDIxMCAzOTBRMjA5IDM5MCAyMDkgMzg5JyxcbiAgICAweDFENThCOiAnMTI4IDQwMFExMjcgNDAxIDEyMSA0MjJUMTA4IDQ3OFQ5OSA1NDBWNTU1TDExMSA1NjlRMTM1IDU5NyAxNjUgNjI2VDIxNCA2NzFUMjM1IDY4N0wyNDkgNjc4UTI2MyA2NjggMjgyIDY1OVQzMTUgNjUwUTMzNSA2NTAgMzYyIDY2NkwzNzIgNjU0TDI4NiA1NjlIMjcxUTIwNSA1NzYgMTczIDU4NlY1ODNRMTczIDU1OCAyMDggNDkyVDI1MiA0MDFRMjUzIDM5OSAzMTAgMzk5VDM2NyAzOThMMzMyIDM1NUgyNTRWMzExUTI1MSAxNjAgMjM1IDE2UTIzMCAtMjggMjI2IC0zNlEyMjUgLTM4IDIyMSAtNDVRMTcxIC0xNDAgMTIxIC0yMTFMMTEzIC0yMjJIMTA0UTk0IC0yMjIgOTQgLTIyMFE5NCAtMjE1IDEwNSAtMTg3TDEyMSAtMTQ1UTEzOSAtODAgMTM5IDM1VjkzUTEzOSAyMjIgMTM1IDMxNEwxMzQgMzU0UTEzNCAzNTUgODQgMzU1SDM1TDg0IDM5OUgxMDZRMTI4IDM5OSAxMjggNDAwJyxcbiAgICAweDFENThDOiAnOTIgNzFROTIgNzQgOTEgODhUODggMTI4VDg2IDE4M1E4NiAyMzAgOTEgMjc1VDEwMiAzNDJUMTA5IDM2NlExMTUgMzcyIDIwNyA0MjJUMzA1IDQ3MlE0MDcgNDI2IDQzMSA0MjZRNDM1IDQyNiA0NzYgNDQ1TDUxOSA0NjVMNTI1IDQ2M0w1MzIgNDYxUTQ5NyAzOTIgNDk3IDI2OFE0OTYgMjU1IDQ5NiAyMzNRNDk2IDE3OSA1MTYgOTJUNTM5IC0xMEw1NDEgLTIyTDUyNiAtMzhRNDQxIC0xMjYgMzU1IC0xOTRMMzM5IC0yMDZMMzI3IC0yMDdRMzI0IC0yMDcgMzE5IC0yMDdUMzEwIC0yMDhRMjQyIC0yMDggMTcxIC0xNzlUNzMgLTEzMUw1NiAtMTQxUTQwIC0xNTAgMzggLTE1MFExNyAtMTQwIDE3IC0xMzdRMTcgLTEzNiAxOCAtMTM2VDk4IC03OUwxNzYgLTIzUTE3NCAtMjEgMTM0IDI0VDkyIDcxWk0yMjYgMzkzUTIyNCAzOTMgMjIxIDM3MlQyMTQgMzEyVDIxMCAyMzVRMjEwIDE4MiAyMTQgMTQ0TDIxNSAxMzJMMjMwIDExOFEyODEgNzAgMzAxIDY2UTMwNCA2NiAzMzEgODBUMzczIDEwNUwzODQgMTEyTDM4MyAxNjVRMzgzIDIyNCAzODcgMzA5UTM4NyAzMTQgMzg3IDMxOVQzODcgMzI5VDM4OCAzMzZUMzg4IDM0MVYzNDNRMzg4IDM0NCAzODEgMzQ0VDMzOSAzNTRUMjQ5IDM4NFEyNDYgMzg1IDI0MyAzODZUMjM2IDM4OVQyMzEgMzkxVDIyOCAzOTJMMjI2IDM5M1pNNDE0IC04MFE0MTQgLTY0IDQxMSAtNDNUNDAzIC0xVDM5NCAzN1QzODYgNjZUMzgyIDc5UTM4MSA3OSAyODYgMTVUMTg5IC01MlEzMTIgLTEyNSAzNjUgLTEyNVEzOTcgLTEyNSA0MDUgLTExNVQ0MTQgLTgwJyxcbiAgICAweDFENThEOiAnOTUgNjYxUTk1IDY2MiAxMDMgNjY3VDExMyA2NzJMMTI2IDYzNEwxMzcgNTk2TDE0NyA2MDJRMjM1IDY1NiAyNzUgNjc3TDI5MiA2ODdMMzAzIDY4MFEzMDUgNjc5IDMwNyA2NzdUMzEyIDY3NEwzMTMgNjcyTDMxMCA2NzBRMzA3IDY2OSAzMDEgNjY3VDI4OSA2NjBUMjc0IDY0OVQyNTkgNjM0UTI1MCA2MjIgMjQ0IDYxMVQyMzMgNTg1VDIyNiA1NjBUMjIyIDUyOFQyMjEgNDk3VDIyMCA0NTZUMjE5IDQxM1YzNzdMMjMyIDM4NFEyNDQgMzkxIDI3MSA0MDlUMzM5IDQ1NUwzNjIgNDcxTDM4MyA0NjFRNDI1IDQ0MCA0OTEgNDE1TDUwNCA0MTBWNDA2UTUwNyAzOTkgNTA3IDI2OVE1MDcgNzYgNDg2IC0yMVE0ODUgLTMwIDQ4MyAtMzNUNDYxIC01N1EzODIgLTEzOSAyOTkgLTIwN0wyODEgLTE5N0wyNjMgLTE4NkwyNjYgLTE4NVEyNjggLTE4NCAyODAgLTE3N1QzMTIgLTE1NVEzNDQgLTEzMCAzNTMgLTExNlEzOTQgLTU5IDM5NCAxMTdRMzk0IDE2MiAzOTEgMjE2VDM4NiAzMDFUMzgyIDMzNVEzODIgMzM4IDM2NSAzNDZUMzIzIDM2NFQyODEgMzc2TDI1MCAzNjJRMjIwIDM0NyAyMTkgMzQ3UTIxMyAzMzYgMjEzIDIzMlEyMTMgMTc3IDIxNyAxNDRMMjE4IDEyOEwyMjQgMTE5UTI0NCA5MiAyNjMgNzFMMjcyIDYwUTIwNiAyMSAxNTcgLTI0UTE1NiAtMjQgMTUxIC0xNlQxMzIgMTFUOTggNTJMODkgNjJMOTEgMTAzUTEwNCAyODkgMTA0IDQzNlExMDQgNDcxIDEwMyA1MDZUMTAxIDU2OFQ5OSA2MTZUOTYgNjQ5TDk1IDY2MScsXG4gICAgMHgxRDU4RTogJzczIDYxM0wxNjQgNjg2TDE4NCA2NjZRMjAwIDY1MCAyMTQgNjM3VDIzNSA2MjBUMjQyIDYxNFQyMDMgNTc3VDE2MiA1NDBRMTU4IDU0MCAxMjIgNTcwVDczIDYxM1pNOTIgNThROTIgNjMgOTQgODNUOTggMTQyVDEwMSAyMzRRMTAxIDMxOCA5NyAzNThWMzY2TDU5IDM4N0w0MCAzNzlMMjEgMzcxUTIwIDM3MSAxMiAzNzZUMyAzODJMMzggNDA2UTc4IDQzMSAxMjUgNDY2TDEzOCA0NzdRMTQ5IDQ2OCAxODYgNDQ0TDIxOSA0MjJWMzg5UTIxNSAzMjQgMjE1IDI0N1EyMTUgMTM2IDIyMiAxMjNRMjI2IDExMyAyMzggOThUMjU4IDgzUTI2MyA4MyAyOTIgOTRMMzIyIDEwNFEzMjIgMTAzIDMyNCA5N1QzMjcgODlRMzI3IDg4IDMxNyA4MlQyNzIgNTJUMTkwIC03UTE2NiAtMjUgMTY0IC0yNUwxMTIgMzVROTIgNTUgOTIgNTgnLFxuICAgIDB4MUQ1OEY6ICc3NCA2MTFMMTU1IDY4MlExNzIgNjY2IDE4NiA2NTVUMjA4IDYzNkwyMzUgNjE0UTIyNyA2MDYgMTkxIDU3NEwxNTQgNTQwTDEzNSA1NTZRMTAxIDU4MiA4NCA2MDFMNzQgNjExWk0xMCAzNzdMMTQ0IDQ3N1ExNDUgNDc2IDE4NCA0NTNUMjI5IDQyOEwyMzMgNDI1VjQxNlEyMzggMzQ2IDIzOCAyNTJRMjM4IDkzIDIxNSAtMTZMMjEzIC0zMEwxODUgLTU3UTI5IC0yMDMgMTkgLTIwM1ExNyAtMjAzIC0xOSAtMTg5TC05IC0xODNRNTIgLTE0NiA3OCAtMTE2VDExNCAtMzdRMTIwIDMxIDEyMCAxOTJWMjM3UTEyMCAzMjcgMTEzIDM1MVQ3MiAzODBMNTMgMzcyUTM0IDM2MiAzMiAzNjRMMTAgMzc3JyxcbiAgICAweDFENTkwOiAnMTA2IDcyUTExMCAxMDUgMTExIDE5M1QxMTQgMjk0VjMwOEg3NEwzNCAzMDlMODMgMzQ2SDExNVY0MzBRMTE0IDU5MSAxMDYgNjUyUTEwNSA2NjIgMTA3IDY2NVQxMTQgNjY4VDEyMyA2NzJRMTI1IDY3MiAxMzkgNjM1TDE1MiA1OTdMMTU0IDU5OFExNTYgNjAwIDE2MCA2MDJUMTY3IDYwN1ExOTMgNjI1IDIyNiA2NDRUMjc5IDY3MlQzMDIgNjgyTDMxMiA2NzZMMzIxIDY3MEwzMTIgNjY1UTI4MSA2NDkgMjYzIDYyNlQyNDEgNTg3VDIzMyA1NDdRMjMyIDU0MSAyMzEgNTMwVDIzMCA1MTBUMjMwIDUwMVEyMzEgNTAxIDI2NSA1MjJUMzM0IDU2NFQzNjkgNTgzTDM4MCA1NzBRNDI4IDUwOSA0MjggNDgxUTQyOCA0NzUgNDI3IDQ3MFQ0MjMgNDU5VDQxNiA0NDhUNDA0IDQzNFQzODkgNDE4VDM2OSAzOTdUMzQ0IDM3MUwzMjEgMzQ3TDM2NSAzNDZINDA5TDM3MiAzMDhIMjI3VjI5NFEyMjcgMjcyIDIzMCAyMDhUMjM0IDEzOFEyMzQgMTM2IDI1NiAxMTlUMzAyIDg0TDMyNCA2OEwzNzIgODhRNDIxIDEwOCA0MjIgMTA4VDQzMiA5MEw0MjEgODNRMzczIDUzIDI3MCAtNUwyMzQgLTI1TDIwNCAtMVExNzIgMjUgMTI0IDYwTDEwNiA3MlpNMzM2IDQzNFEzMzYgNDUyIDMyNyA0NzJUMzA4IDUwM1QyOTcgNTE0UTI5NiA1MTQgMjkwIDUxMFQyNzUgNDk5VDI2NCA0OTBRMjMwIDQ1OCAyMzAgMzU4VjM0NkgyNDdRMjY4IDM0NiAyNzYgMzUwVDMwMiAzNzJRMzI4IDM5OCAzMzUgNDIzUTMzNSA0MjQgMzM1IDQyOFQzMzYgNDM0JyxcbiAgICAweDFENTkxOiAnMTExIDI3NVExMTEgNDA2IDEwOCA1MThUMTA0IDY1MFY2NTdRMTA1IDY1NyAxMDkgNjYwVDExNyA2NjVUMTIyIDY2NkwxMzMgNjI5TDE0NCA1OTRMMTYxIDYwNlEyMTggNjQyIDI3MiA2NzBMMjk0IDY4MVEyOTUgNjgxIDMwMCA2NzdUMzA2IDY3MkwzMDIgNjY5UTI5OCA2NjYgMjkyIDY2MlQyNzggNjUxVDI2MyA2MzdUMjUxIDYyMVEyMzIgNTg3IDIyNyA1MzBUMjIyIDM0M1EyMjIgMjI2IDIzMCAxMjVMMjMxIDExMkwyNDQgOThMMjU4IDgzUTI3MSA4NyAyODUgOTJMMzEyIDEwMlY4NFEyOTcgNzIgMjMxIDI0VDE2MyAtMjNMMTAwIDU1UTExMCAxNDEgMTExIDI3NScsXG4gICAgMHgxRDU5MjogJzExNSAyMDNRMTE1IDI1NyAxMTQgMjkxVDExMiAzMzhUMTExIDM1NVExMTEgMzU3IDkzIDM3MEw3NSAzODRMNTQgMzc1UTMyIDM2NiAzMSAzNjVRMjcgMzY1IDE2IDM3OFEyNSAzODMgODkgNDMwTDE1MiA0NzZRMTc1IDQ1MyAyMjggNDIwUTIyOSA0MjAgMjI5IDQxOFQyMjkgNDEwVDIyNyAzOTRMMjI1IDM2OVEyNzkgNDAwIDMxNSA0MjVUMzYzIDQ2MVQzNzYgNDcxUTQ4MCA0MjQgNTE0IDQxNlY0MTJRNTE0IDQxMSA1MTQgNDA0VDUxMyAzOTJMNTExIDM3Nkw1MjAgMzgyUTUyOSAzODcgNTQ4IDM5OVQ1ODQgNDIyUTU5OSA0MzIgNjE4IDQ0NFQ2NDggNDYzTDY1NyA0NjlINjU4UTY2MSA0NjkgNjgxIDQ2MVQ3MzUgNDQwVDc5NiA0MjBRODAzIDQxOCA4MDMgNDE2UTgwMSA0MTQgNzk4IDM5MFQ3OTEgMzI1VDc4OCAyNDdRNzg4IDIyMCA3OTAgMTcyVDc5NCAxMjNRNzk5IDExNSA4MTQgOTdUODM1IDc4SDgzOFE4NDEgNzggODY3IDg5TDg5NSAxMDFRODk2IDEwMSA4OTYgMTAwVDg5NyA5MlQ5MDAgNzhMODczIDYyUTgxMCAyMyA3NjEgLTEyTDczNiAtMzBRNzM1IC0zMCA3MjkgLTIyVDcwNyA3VDY3MSA0OEw2NjEgNTlRNjc0IDkzIDY3NCAyMDdWMjE5UTY3NCAzNDEgNjcwIDM0NFE2NTUgMzUzIDU5MSAzNzJMNTc2IDM3Nkw1NDQgMzY0UTUxMSAzNTEgNTEwIDM1MVE1MDcgMzQ5IDUwNyAyMjRWMTMyTDUzNSA5NVE1NDEgODcgNTQ4IDc4VDU2MCA2M0w1NjMgNThRNTYzIDU3IDUwNCAxNVQ0NDQgLTI4TDM4NSA1M0wzODcgNjdRMzk2IDExNCAzOTYgMjA2UTM5NiAyODkgMzkzIDMzNFEzOTMgMzQ2IDM5MCAzNDhRMzY5IDM1OCAzMDYgMzczUTMwMSAzNzMgMjY1IDM2MUwyMjggMzQ5VjMzNVEyMjcgMzIyIDIyNyAyODRRMjI3IDIwNiAyMzEgMTU3UTIzMSAxNTEgMjMxIDE0NFQyMzIgMTMzVjEyOVEyMzIgMTI1IDI1OSA5MFEyODYgNTYgMjg2IDUzUTI4NyA1MyAyODQgNTFUMjczIDQzVDI1OCAzMUwxNzMgLTMxTDE2NiAtMjBRMTYwIC0xMSAxNDUgN1QxMTkgMzhUMTA4IDU5UTEwOCA2MiAxMTAgODFUMTEzIDEzM1QxMTUgMjAzJyxcbiAgICAweDFENTkzOiAnNjA4IDg4UTU3MiA2NSA1MzUgMzdUNDc3IC04VDQ1NSAtMjVRNDMyIDcgMzg5IDUzTDM3NSA2OEwzNzggODJRMzg2IDE2MCAzODYgMTk1VjIyMVEzODYgMjg0IDM4NSAzMDdMMzg0IDM0NFEzNTIgMzU5IDMwNiAzNzNMMjg2IDM3OUwyMTMgMzUzVjI3M1EyMTQgMjI5IDIxNCAxNjFWMTI5TDI3NSA2MkwxNjMgLTI4TDE1MCAtMTRRMTM2IDAgMTIxIDE2VDkxIDQ0UTg2IDQ4IDg2IDUwUTk1IDgzIDk2IDE0OFE5NiAyMjQgODkgMzQwTDg4IDM2Nkw3OSAzNzRRNjkgMzg0IDY3IDM4NUw2NCAzODhMNTUgMzgzUTUyIDM4MiA0NCAzNzhUMzMgMzczTDIxIDM2N0wxMyAzNzRRNSAzNzkgNSAzODFRNSAzODQgNjkgNDI4TDEzMyA0NzNRMTM1IDQ3MyAxNDcgNDY0VDE3OSA0NDNUMjE1IDQyNEwyMTQgNDAwVjM3NlEyNzEgNDA0IDM0MiA0NTdMMzYzIDQ3MlEzNjMgNDczIDM2NCA0NzNRMzY2IDQ3MyAzNzUgNDY5VDQxOCA0NDlUNTAyIDQxNEw1MTIgNDExVjQwN1E1MDIgMzMwIDUwMiAyMTdWMTk3VjEzMkw1MjMgMTA5UTUyNyAxMDQgNTMzIDk3VDU0MyA4N1Q1NDcgODNMNTUwIDgwTDU3OCA5MlE2MDMgMTAzIDYwNCAxMDNRNjA2IDEwMyA2MDggODgnLFxuICAgIDB4MUQ1OTQ6ICcxMDcgMTAyUTEwNyAxNzggMTEyIDI0MlQxMjMgMzM0VDEyOSAzNjJRMTI5IDM2MyAxNDAgMzY4VDE5OSA0MDBUMzE1IDQ2OUwzMzYgNDgyTDM0NiA0NzZRNDA5IDQzOSA0OTggNDE0TDUxNCA0MTBMNTE1IDM4OVE1MTUgMjA4IDUwMiAxNDFRNDk0IDEwMSA0OTEgOTRRNDkwIDg5IDQ3OCA4MVE0MzAgNTEgMzc1IDIzVDI4OCAtMjBUMjU0IC0zNFEyNTAgLTM0IDIwMCAtMVQxMTkgNTZMMTA4IDY1TDEwNyA3NlYxMDJaTTM4OSAzNTVRMzY3IDM1OCAzNDYgMzYzVDMwOSAzNzJUMjgyIDM4MVQyNjQgMzg4TDI1NyAzOTBIMjU2UTI1NCAzOTAgMjQ5IDM4MVQyMzggMzQ4VDIyNyAyOTNRMjI2IDI4MCAyMjYgMjM3UTIyNiAxODMgMjMxIDE0NkwyMzIgMTMxTDI0NCAxMjJRMjg1IDkxIDMyMyA3NFQzNzQgNTdIMzc3TDM4MCA2OFE0MDUgMTU0IDQwNSAyNjdRNDA1IDMxNSA0MDEgMzQ5VjM1NEwzODkgMzU1JyxcbiAgICAweDFENTk1OiAnNjYgNDM1UTY2IDQ0NSAxMTcgNTAxVDE3MyA1NTdRMTc0IDU1NyAxODMgNTU1VDE5MyA1NTFRMTc0IDUyNiAxNzQgNTA5UTE3NCA0OTYgMTkwIDQ3MlQyMzMgNDI4VjM4NkwzNzcgNDgyTDM5OSA0NzFRNDUwIDQ0NSA1MDkgNDI1UTUxOSA0MjEgNTE5IDQyMEw1MTggNDE5UTUxOCA0MTggNTE4IDQxNlQ1MTcgNDEwUTUxNyA0MDUgNTE4IDM4MVQ1MTkgMzM1UTUxOSAyMjIgNTAxIDEzN1E0OTIgODQgNDg5IDg0TDQ3MyA3NVE0NTcgNjYgNDIzIDQ0VDM1NCAtNkwzMzggLTE5TDMyOSAtMTNRMzIwIC04IDMxMyAtNFQyOTcgNFQyODQgMTBUMjcwIDE0VDI1OCAxN1QyNDUgMjBUMjMzIDIyVjEyTDI0MSAtMTYxTDIxNCAtMTcyUTE4NyAtMTg0IDE2MCAtMTk1VDEzMSAtMjA3UTEyNyAtMjA3IDExMiAtMjAyTDExMyAtMTg4UTExMyAtMTgyIDExNSAtNzdUMTE4IDMxUTExOCAzMiAxMDkgMzJRNjMgMjcgMjMgMEwxMCAtOVE1IC00IC0xIDhRMSAxMyA1MiA1N1QxMTQgMTAxSDExNUwxMTcgMTIzUTExNyAxNDEgMTE3IDIzMFYzNTlMMTEwIDM2N1E4NSAzOTQgNzEgNDIxUTY2IDQzMyA2NiA0MzVaTTM4NCA4M1EzODYgODMgMzg5IDExMFQzOTYgMTgwVDQwMCAyNTRRNDAwIDI5NCAzOTUgMzM5TDM5NCAzNDlMMzc5IDM1NVEzMDggMzgzIDI5NCAzODNRMjkwIDM4MyAyNjMgMzcyTDIzNCAzNjBMMjMzIDI0NVYxMzBRMjcwIDEyNSAzMDUgMTEzVDM2MSA5MlQzODQgODMnLFxuICAgIDB4MUQ1OTY6ICczNjIgLTE5NlEzNzUgLTkyIDM3NSA0N1Y3OEwyODIgMjRRMTg5IC0yOSAxODggLTMwUTE4NyAtMzAgMTM5IDIxVDkwIDc1UTg3IDg0IDg3IDE1OFE4OCAyMDYgOTQgMjU5VDEwNyAzNDJMMTEzIDM3MkwzMDggNDc4TDMyMiA0NzNRMzc0IDQ1MiA0MjEgNDQ0TDQzMyA0NDJMNTAzIDQ4NVE1MTUgNDc5IDUxNSA0NzdRNDg1IDM3OCA0ODUgNTZRNDg1IC0xMDAgNDk0IC0xNjRWLTE3MUwzODEgLTIxMUwzNzEgLTIwN0wzNjIgLTIwMlYtMTk2Wk0yODAgNzJRMzAxIDc3IDMyMyA4NlQzNTggMTAxVDM3MiAxMTBRMzcyIDI2OCAzNzcgMzQ2TDM3OCAzNThIMzc0UTM2OCAzNjAgMzU4IDM2MFQzMjMgMzY1VDI1NyAzODBMMjM0IDM4NlEyMzEgMzg2IDIyOSAzNzlRMjE1IDM1MyAyMTEgMzEwVDIwNyAxODBRMjA3IDE1MiAyMDggMTUwUTIxMCAxNDIgMjM1IDExNFQyODAgNzInLFxuICAgIDB4MUQ1OTc6ICcyMyAzNjdRMjEgMzcwIDE4IDM3NFQxNCAzODBMMTMgMzgyTDE1MSA0NzJMMjM2IDQxMUwyMzggMzgxTDI5MCA0MjZRMjk4IDQzMiAzMDcgNDM5VDMyMiA0NTJUMzMzIDQ2MVQzNDIgNDY3TDM0NCA0NjlRMzgyIDQxMCA0MDQgMzk5UTQxMCAzOTcgNDE2IDM5N1E0MjMgMzk3IDQzMiAzOTlUNDQ2IDQwM0w0NTEgNDA1UTQ1MyA0MDUgNDUzIDM5OVYzOTNRNDMwIDM3NCA0MDQgMzU2VDM2NCAzMjhUMzUwIDMxOEwzNDkgMzE3UTMyMSAzMjAgMjc2IDM1NlEyNTcgMzcxIDI1NiAzNzFRMjUzIDM3NCAyNDkgMzY2VDI0MiAzNTFRMjMyIDMyMSAyMzIgMjM2UTIzMiAyMTQgMjMyIDIwNVQyMzIgMTgyVDIzMyAxNjJUMjM1IDE0OFQyMzggMTM3VDI0MiAxMjlUMjQ5IDEyMFQyNTcgMTE0VDI2OCAxMDVUMjgxIDk1UTMxMyA3MCAzMTQgNzBMMzU4IDg1UTM3NyA5MiAzODkgOTZUNDAyIDEwMFY5MEw0MDMgODBMMjI5IC0yNkwyMjEgLTE4UTE5NSA2IDE2NiAyOVQxMjEgNjNUMTA1IDc2VDEwNiA4MlQxMTAgOTdUMTE0IDEyMVQxMTcgMTU4VDExOSAyMDhRMTE5IDI2OSAxMTQgMzI5TDExMyAzNDFMMTAzIDM1MFE5MCAzNjIgNjcgMzgwTDQ1IDM3NEwyMyAzNjcnLFxuICAgIDB4MUQ1OTg6ICcxODkgMzMxUTE5MCAzMDQgMTk2IDI4MlQyMDcgMjUyVDIxNCAyNDRRMjM5IDI0NCAzNDggMjkyTDM3MSAzMDJMMzgyIDI5N1EzOTggMjkwIDQxNSAyNzlUNDMzIDI2NVE0NDIgMjM4IDQ0MiAxNjZRNDQyIDEwMyA0MjMgNDVRNDE2IDQyIDM4MCAyOVQzMTAgM1QyNDQgLTI2TDIyNyAtMzRRMTM5IDQwIDczIDQwUTYxIDQwIDQ4IDM3VDI0IDMwVDYgMjJULTggMTRMLTEzIDExUS0xNCAxMSAtMTggMThULTIzIDI2VDM4IDc1VDEwMiAxMjVRMTA3IDEyOCAxNDYgMTMxSDE1M1ExOTIgMTMxIDI5NiA1NlEzMTggNDAgMzE4IDQzUTMyMyA0OCAzMjMgMTE0UTMyMyAxNTcgMzIxIDE3N0wzMTkgMTk0UTMwOCAyMDggMjkxIDIxNlQyNjEgMjI1UTIzOSAyMjUgMTYwIDE4NUwxMjMgMTY3UTg1IDIwNSA3OSAyMjdRNzggMjMwIDc4IDMwNFYzNzdMMTcxIDQyOFEyNjQgNDc5IDI2NSA0NzhRMjY4IDQ3OCAyODcgNDY1VDMzNCA0NDBUMzg0IDQyN1E0MjMgNDI3IDQ3NSA0NjNMNDc4IDQ1M1E0ODEgNDQ2IDQ4MSA0NDJRNDgxIDQzOSA0MTAgMzkxTDMzOSAzNDJIMzMxUTMwOSAzNDUgMjc3IDM2MVQyMjIgMzkxVDE5OCA0MDZUMTk1IDM5OVQxOTEgMzcyVDE4OSAzMzEnLFxuICAgIDB4MUQ1OTk6ICczMjggNjlRNDAxIDEwMiA0MDMgMTAyUTQwNCAxMDIgNDA1IDk0VDQwNiA4NFE0MDYgODMgMzE4IDI4TDIzMCAtMjdRMjIzIC0yMSAyMDYgLTVUMTcxIDI1VDEzMiA1NEwxMjQgNjBWNzFRMTI5IDE1NCAxMjkgMjk3VjM1OUg0M0w0NCAzNjNRNDQgMzY1IDQ0IDM2N0w0NSAzNjlMNDggMzcyUTUxIDM3NCA1NyAzNzhUNjggMzg3TDkwIDQwNUgxMjlWNTUzTDI4NSA2NDhRMzA0IDY0MSAzMDYgNjQwTDI2MCA1OThWNTkyUTI1OSA1ODkgMjU1IDUwNVQyNDkgNDEzVjQwNUgzNTNWNDAyUTM1MyAzOTkgMzI4IDM3OUwzMDMgMzYwSDI0NVYzMTlRMjQ1IDE1MCAyNTMgMTI1UTI1NyAxMTUgMjc2IDEwMVQzMTEgNzhUMzI4IDY5JyxcbiAgICAweDFENTlBOiAnNDQ0IC0zMVE0NDQgLTI5IDM4NCA2NlEzODIgNjYgMzY0IDU4VDMwOSAzMFQyMzEgLTE3UTIxNCAtMjkgMjEyIC0yOUwxOTcgLTIwUTE3MiAtNCAxNDAgMTFUODggMzRMNjggNDJRNjggNDMgNzMgNDlUODUgNjdUMTAwIDk4VDExMyAxNDlUMTE4IDIyMVExMTggMjcyIDEwNSAzMzJMMTAwIDM1Nkw1OCAzODNMMjMgMzY1TDkgMzc5TDc2IDQyNVExNDEgNDcyIDE0NCA0NzJRMTQ0IDQ3MSAxODMgNDQzTDIyMSA0MTRWNDA0UTIyNCAzNjUgMjI0IDI3NVYyNTNRMjI0IDE1OSAxOTYgMTEzUTE5MSAxMDQgMTkzIDEwNFEyMDMgMTA0IDI4NSA3MkwzMDggNjJMMzc0IDg5TDM3NSAxMDZRMzc1IDI2NiAzNzMgMzQwUTM3MyAzNjQgMzcxIDM5NlY0MjRMNDMwIDQ0NUw0OTEgNDY3UTQ5MyA0NjcgNDk5IDQ2M1Q1MDUgNDU3UTUwNSA0NTYgNTAzIDQ0MlE0ODggMzM1IDQ4OCAxODdWMTU4TDUyOSA4MUw1MzQgODBRNTQxIDgwIDU2OCA5MEw1OTggMTAxUTYwNSA5NCA2MDIgODdMNTI0IDI3UTQ0NSAtMzIgNDQ0IC0zMScsXG4gICAgMHgxRDU5QjogJzk1IDY3UTEwNCA4MCAxMDQgMTkzUTEwNCAyNjEgMTAwIDMyMUw5OCAzNTVMOTEgMzYzUTU2IDQwMiA1NiA0MjFRNTYgNDQxIDgyIDQ3MlQxMzIgNTI0VDE1OSA1NDZRMTc0IDU0MiAxNzUgNTQyUTE1OSA1MjAgMTU5IDUwMVExNTkgNDgxIDIwNSA0MzJMMjIxIDQxNUwyMjAgNDAxUTIxOSAzOTQgMjE5IDM4N0wyODggNDI5UTMwOSA0NDEgMzI1IDQ1MVQzNDcgNDY1VDM1OCA0NzJUMzY1IDQ3Nkw1MDQgNDE1VjQwOVE1MDQgNDA4IDUwNSAzNzRUNTA3IDMxOFE1MDcgMTU1IDQ3NCA5MUw0NjkgODBMMzQzIDI2UTMxNCAxNCAyODEgMFQyMzIgLTIwTDIxNiAtMjdMMjAyIC0xNVExOTIgLTUgMTUyIDI4UTE0MSAzNSAxMjYgNDVUMTAzIDYwVDk1IDY3Wk0zODYgMzQ5UTMwMiAzODkgMjg3IDM4OVEyNzEgMzgzIDI1MyAzNzVMMjIwIDM2MVYxMzZRMjI2IDEyMCAyNTYgMTAwVDMxMiA2OFQzNDIgNTZRMzU1IDU2IDM2MCA2OFEzODkgMTM0IDM4OSAyNThRMzg5IDMxMCAzODYgMzQxVjM0OScsXG4gICAgMHgxRDU5QzogJzkwIDU4VDkwIDU5VDkyIDY0VDk3IDc4VDEwMiAxMDVUMTA3IDE1MFQxMDkgMjE4UTEwOSAyOTAgMTAzIDM1MFYzNTZMODMgMzc3UTU1IDQwNyA1NSA0MjVRNTUgNDQ1IDEzOCA1MjhRMTU4IDU0OSAxNjIgNTQ5TDE2NCA1NDhRMTY1IDU0OCAxNjcgNTQ4VDE3MCA1NDdMMTc1IDU0NkwxNzIgNTQwUTE2OCA1MzMgMTY1IDUyM1QxNjEgNTAyUTE2MSA0NzkgMjE2IDQzMEwyMjkgNDE5VjM4MlEyMzIgMzgyIDM2NiA0NzFRNDA3IDQ0NSA1MDAgNDA4TDUxMSA0MDRWMzg3TDUxMiAzNzBMNTk1IDQyMFE2NzggNDY5IDY3OSA0NjlMNjkzIDQ2MlE3NTYgNDMxIDc5NSA0MTdMODE1IDQwOUw4MTQgMzgwUTgxMiAxODcgNzgyIDk2UTc3NCA3MSA3NjYgNjJUNzQ0IDQ4VDY4NCAyNVQ1NzcgLTIzTDU1NyAtMzJMNTQ2IC0yNlE1MzYgLTE5IDUxOSAtMTBUNDgxIDEwVDQzNiAzMVQzOTMgNDdRMzg0IDUwIDM4MCA1MFEzODAgNTIgMzgxIDU4VDM4NCA3N1QzODcgMTA0UTM5MSAxNzQgMzkxIDI1NlYyOTJMMzkwIDMzM0wzNzcgMzQwUTM1MCAzNTcgMzA0IDM3M0wyOTQgMzc2TDIyNyAzNTVWMzQ4UTIyNCAzMjIgMjI0IDI0M1EyMjggMTE3IDIzMiAxMTJMMjM1IDEwOFEyMzggMTAzIDI0NSA5NVQyNTcgODBMMjgxIDUwUTI4MSA0OSAyMjcgMTBUMTcyIC0yOUwxNTkgLTEzUTEzMyAxOSAxMTYgMzZUOTQgNTZaTTY1MiA2NFE2NTggNjQgNjY3IDg0VDY4NSAxNjJUNjk3IDMwM1YzMzZMNjg2IDM0MVE2NTMgMzU2IDYxOSAzNjdMNTkxIDM3NlE1OTAgMzc2IDU1MyAzNjFUNTE0IDM0NFQ1MTIgMzI0VDUxMCAyNzVUNTA4IDIyMVE1MDggMTY3IDUxMCAxNTJUNTIxIDEyNlE1MzcgMTEyIDU5MCA4OFQ2NTIgNjQnLFxuICAgIDB4MUQ1OUQ6ICc4IC05MFE4IC02OCAxMyAtNjNRMTMgLTU2IDUzIC04VDEyMCA2M0wxMjggNzFMMTI5IDg1UTEzMyAxMjAgMTM0IDE4MlExMzQgMzA4IDEzMSAzMzFUMTA2IDM2NVExMDAgMzY3IDk3IDM2OUw3NSAzODFMMzUgMzY1TDIwIDM3N1EyMCAzNzggNDcgMzk3VDExMCA0NDBUMTYxIDQ3MUwyNTMgNDEzVjM5NlEyNTMgMzc4IDI1NCAzNzhMMzA5IDQyMlEzNjQgNDY2IDM2NSA0NjZRMzY1IDQ2NyAzNjYgNDY2VDM3MCA0NjFUMzc2IDQ1NFE0MDMgNDE5IDQyNiAzOTZMNDQxIDM4MEw0MzggMzc3UTQzOCAzNzYgNDMzIDM3MlQ0MjAgMzU5VDQwNCAzNDRMMzcyIDMxNFEzNTEgMzIwIDMzOCAzMjdUMzEwIDM0NFQyNzcgMzY0UTI2MSAzNjQgMjUyIDMxNlEyNTEgMzA2IDI1MSAyMzVRMjUxIDEzNiAyNTUgMTI5UTI1NyAxMjcgMjU4IDEyNFQyNjggMTEzVDI5OCA5MlEzMzQgNjggMzM1IDY4UTM0MCA3MCAzNDkgNzNUMzc3IDg0VDQwOCA5NVQ0MjEgOTlRNDIyIDk5IDQyMiA5MEw0MjMgODJMMzM0IDI2UTI0NiAtMjggMjQzIC0yOEwyMDAgOFExNTYgNDMgMTQ4IDQzUTE0NCA0MyAxMzAgMzZUOTkgOVQ4MyAtMzZRODMgLTY3IDEyMSAtODlUMTk4IC0xMThMMjM3IC0xMjRWLTEyOUwyMzggLTEzM0wxOTMgLTE2MFExODMgLTE2NiAxNzEgLTE3M1QxNTIgLTE4NEwxNDYgLTE4OFExNDAgLTE4NyAxMzEgLTE4NVQ5OCAtMTczVDU2IC0xNTRUMjMgLTEyN1Q4IC05MCcsXG4gICAgMHgxRDU5RTogJzI4MCA1M1EyNzIgNDcgMjQ2IDI3VDE5OSAtMTBUMTc2IC0yN0wxNjcgLTE4UTEzNyAxNyAxMDcgNDRMOTAgNjBMOTMgNzFRMTA4IDEzMCAxMDkgMjkwVjMzMVExMDkgMzM5IDEwOSAzNDRUMTA4IDM1M1QxMDcgMzU5VDEwNSAzNjRUMTAyIDM2OVQ5NyAzNzRUOTEgMzgxUTYwIDQxMiA2MCA0MzJRNjAgNDQ4IDg2IDQ3OVQxMzggNTM0TDE2NCA1NTdRMTY4IDU1MyAxODAgNTUzUTE2MyA1MzIgMTYzIDUxMVExNjUgNDkxIDE4NiA0NjhRMjA2IDQ0MyAyMzEgNDIzVjQwNEwyMzIgMzg1TDM3MSA0NzdMMzg5IDQ2OFE0MzkgNDQxIDQ5OCA0MThMNTEyIDQxMlYzODZRNTEyIDM2MCA1MDcgMTkwVDUwMCAxNFE0ODggLTI2IDQ0NSAtNjdRNDAxIC0xMTEgMzU1IC0xNDhUMjgyIC0yMDNUMjQ5IC0yMjFRMjQ3IC0yMjAgMjMwIC0yMTBUMjEzIC0xOTlUMjI5IC0xOTFUMjY5IC0xNzJUMzA2IC0xNTFRMzYxIC0xMjAgMzc5IDE0UTM5MSA5MiAzOTEgMTgyUTM5MSAyMTggMzg2IDMwNVEzODQgMzM5IDM4MCAzNDFRMzYzIDM1MyAzMzAgMzY2VDI4OCAzNzlRMjgyIDM3OSAyNTggMzY4TDIzMCAzNTZWMTgxVjE0MVEyMzAgMTI3IDIzMiAxMjBUMjM2IDEwOFQyNTEgODlUMjc1IDU5TDI4MCA1MycsXG4gICAgMHgxRDU5RjogJzE1MyAzNzFRMTQxIDM3MSAxMjYgMzY1VDEwMCAzNTRUNzggMzQwTDY1IDMzMUw1NyAzMzhMNTAgMzQ2TDYyIDM1NlExMzMgNDE5IDIyMiA0NzFRMjc0IDQ1MyAzMDYgNDIyVDMzOCAzNjZRMzM4IDM1NiAzMjkgMzQ2VDI4MyAzMDFMMjQzIDI2NEwyNjIgMjU3UTI5OCAyNDYgMzYxIDIxNFEzNzggMTU0IDM3OCA3M1EzNzggMzMgMzcxIC05VDM1NiAtNzRUMzQ1IC0xMDRRMzQwIC0xMDYgMjY3IC0xNjBMMTkxIC0yMTRIMTc3UTYwIC0yMTQgMTMgLTE1MFEtNyAtMTIyIC03IC0xMTVRLTcgLTExMiAxOSAtNzdUMTA2IDI1VDI0MSAxNDlRMjQxIDE1MiAyMjcgMTU4VDE4MSAxNzNUMTA5IDE4NVYxOTBMMTA4IDE5NEwxNTggMjI5UTIxMiAyNjcgMjIzIDI3OFQyMzQgMzA2UTIzNCAzMjkgMjA4IDM1MFQxNTMgMzcxWk0yNTggMVEyNTggNDIgMjU3IDY4VDI1NCAxMDVUMjUyIDExOFEyMzUgMTA1IDIxMCA4NVQxNDQgMjJUMTAyIC00NVExMDIgLTc5IDE0NiAtMTA2VDIzNCAtMTMzSDIzOFEyNDggLTEyOCAyNTQgLTgwUTI1OCAtNTggMjU4IDEnLFxuICAgIDB4MUQ1QTA6ICcxODMgMTgxUTE4MyAxNzkgMTUyIDkxVDExOCAwSDI4TDE1NCAzNDZMMjgwIDY5M1EyODEgNjk0IDMzMyA2OTRIMzg1TDUxMSAzNDlRNjM2IDQgNjM4IDJRNjM4IDAgNTg0IDBINTMwTDQ2NCAxODNIMTg0TDE4MyAxODFaTTMyNCA2MDZRMzE5IDU3OCAyOTIgNDkyVDIzOCAzMzJUMjEwIDI1NlEyMTAgMjU0IDMyNCAyNTRUNDM4IDI1NUw0MjkgMjgxTDQxOSAzMDhRNDA5IDMzNiAzOTUgMzc4VDM2NSA0NjVUMzM5IDU1MVQzMjQgNjExVjYwNicsXG4gICAgMHgxRDVBMTogJzQyNSAzNjNRNDM4IDM2MyA0NjUgMzUzVDUyNiAzMjRUNTg1IDI3MFQ2MTAgMTkyUTYxMCAxMzIgNTYxIDc4VDQyNiA3UTQwNCAyIDM4NyAyVDI0MCAwSDkwVjY5NEgyMjdRMzczIDY5MyAzOTYgNjg5UTQ4NCA2NzMgNTMzIDYyM1Q1ODMgNTE3UTU4MyA0OTQgNTc0IDQ3M1Q1NTEgNDM3VDUyMCA0MDlUNDg3IDM4OFQ0NTYgMzc0VDQzMyAzNjZMNDI1IDM2M1pNNDkwIDUxNlE0OTAgNTI3IDQ4NSA1MzlUNDY3IDU2OFQ0MjMgNTk5VDM0NyA2MjFRMzQwIDYyMiAyNjIgNjIzSDE4OFYzOTlIMjYxSDI4NlE0MzIgMzk5IDQ3OCA0NzVRNDkwIDQ5NiA0OTAgNTE2Wk01MTQgMTkwUTUxNCAyNDUgNDYyIDI4MFQzNDMgMzIyUTMzNiAzMjMgMjU5IDMyM0gxODhWNzFIMjc0UTM2NSA3MiAzODggNzdRNDQ1IDg4IDQ3OSAxMjFUNTE0IDE5MCcsXG4gICAgMHgxRDVBMjogJzU5IDM0N1E1OSA0NDAgMTAwIDUyMVQyMTggNjU0VDM5MiA3MDVRNDczIDcwNSA1NTAgNjgwUTU3NyA2NzAgNTc3IDY2N1E1NzYgNjY2IDU3MiA2NDJUNTY0IDU5NVQ1NTkgNTcxUTUxNSA2MDEgNDc5IDYxM1QzOTIgNjI2UTMwMCA2MjYgMjMyIDU0OVQxNjQgMzQ3UTE2NCAyMzEgMjI5IDE1MFQzOTcgNjhRNDUzIDY4IDQ4OSA4MFQ1NjggMTIwTDU4MSAxMjlMNTgyIDExMFE1ODQgOTEgNTg1IDcxVDU4NyA0NlE1ODAgNDAgNTY2IDMxVDUwMiA1VDM5NiAtMTFRMjk2IC0xMSAyMTggNDFUOTkgMTc0VDU5IDM0NycsXG4gICAgMHgxRDVBMzogJzg4IDBWNjk0SDIzN0gyNThIMzE2UTM4MyA2OTQgNDI1IDY4NlQ1MTEgNjQ4UTU3OCA2MDQgNjIyIDUyNVQ2NjYgMzQzUTY2NiAxOTAgNTY0IDg2UTQ5NCAxOCA0MDAgM1EzODcgMSAyMzcgMEg4OFpNNTY1IDM0MVE1NjUgNDA5IDU0NiA0NjNUNDk1IDU1MFQ0MjkgNjAwVDM1OSA2MjFRMzQ4IDYyMyAyNjcgNjIzSDE4OVY3MUgyNjdRMjcyIDcxIDI4NiA3MVQzMTAgNzBRNDYxIDcwIDUyNyAxODRRNTY1IDI1MSA1NjUgMzQxJyxcbiAgICAweDFENUE0OiAnODYgMFY2OTFINTQxVjYxMUgzNjZMMTkwIDYxMlYzOTdINTEzVjMyMUgxOTBWODVIMzcyTDU1NCA4NlYwSDg2JyxcbiAgICAweDFENUE1OiAnODYgMFY2OTFINTI2VjYxMUgzNThMMTkwIDYxMlYzODRINDg1VjMwOEgxOTBWMEg4NicsXG4gICAgMHgxRDVBNjogJzU5IDM0NlE1OSA0OTkgMTU3IDYwMVQzODQgNzA0UTQzNiA3MDQgNDY2IDcwMFQ1NDEgNjc5UTU1MSA2NzQgNTYwIDY3MFQ1NzUgNjY0VDU4MyA2NjBUNTg4IDY1OFQ1OTAgNjU2UTU5MCA2NTIgNTgyIDYwNVQ1NzMgNTU3TDU2NCA1NjRRNDg5IDYyNiAzOTIgNjI2UTMwMSA2MjYgMjMzIDU0OVQxNjQgMzQ3VDIzMyAxNDVUMzkyIDY4UTQ0MSA2OCA1MDYgODRWMjIzSDM4OFYyOTlINTk5VjM4TDU4OCAzM1E0OTQgLTExIDM5MyAtMTFRMjk2IC0xMSAyMTkgNDBUMTAwIDE3MlQ1OSAzNDYnLFxuICAgIDB4MUQ1QTc6ICc4NiAwVjY5NEgxOTBWMzk5SDUxN1Y2OTRINjIxVjBINTE3VjMyM0gxOTBWMEg4NicsXG4gICAgMHgxRDVBODogJzg3IDBWNjk0SDE5MVYwSDg3JyxcbiAgICAweDFENUE5OiAnMTgxIDUzUTIwMCA1MyAyMTUgNTZUMjQxIDY2VDI1OSA3OVQyNzIgOTVUMjgwIDEwOVQyODUgMTIyTDI4NyAxMjlWNjk0SDM4OFY0MTVWMjI5UTM4OCAxMzUgMzg1IDExMlQzNjkgNjNRMzY0IDUxIDM1NSAzOVQzMjggMTJUMjgwIC0xMlQyMTIgLTIyUTE3MiAtMjIgMTMwIC0xMlQ2NiA4VDQzIDIwTDQ2IDQyUTUwIDY1IDU0IDg4TDU4IDExMFE1OCAxMTEgNjUgMTA0UTEwNyA1MyAxODEgNTMnLFxuICAgIDB4MUQ1QUE6ICc4OCAwVjY5NEgxODhWNTE5TDE4OSAzNDNMNTI1IDY5NEg2MzhMMzc1IDQxOUw2NTEgMEg1NDFMMzA5IDM1MUwxODggMjI1VjBIODgnLFxuICAgIDB4MUQ1QUI6ICc4NyAwVjY5NEgxOTFWNzlMMjk3IDgwSDQ1MUw0OTkgODFWMEg4NycsXG4gICAgMHgxRDVBQzogJzkyIDBWNjk0SDIyOEwyMzMgNjgwUTIzNiA2NzUgMjg0IDU0N1QzODIgMjc1VDQzNiAxMDZRNDQ2IDE0OSA0OTcgMjkyVDU5NCA1NThMNjQwIDY4MEw2NDUgNjk0SDc4MlYwSDY4OVYzMDVMNjg4IDYwNlE2ODggNTc3IDUwMCA3OEw0NzkgMjNIMzkyTDM2NCA5NlEzNjQgOTcgMzQyIDE1NlQyOTYgMjgwVDI0NiA0MThUMjAzIDU0NFQxODYgNjA5VjU4OFExODUgNTY4IDE4NSA1MTdUMTg1IDQyN1QxODUgMzA1VjBIOTInLFxuICAgIDB4MUQ1QUQ6ICc4OCAwVjY5NEgyMzVMMjUyIDY1OVEyNjEgNjM5IDM2NCA0MjhUNTI2IDg0VjY5NEg2MTlWMEg0NzJMNDU1IDM1UTQ1MyAzOSAzMzAgMjk0VDE4NSA2MDFMMTgxIDYxMVYwSDg4JyxcbiAgICAweDFENUFFOiAnNTUgMzQ1UTU1IDUwNCAxNDkgNjA5VDM2MSA3MTVRMzg2IDcxNSA0MDYgNzEzUTUyMSA2OTYgNjAwIDU5MlQ2ODAgMzQ0UTY4MCAxOTMgNTkwIDg2VDM2OCAtMjJRMjM5IC0yMiAxNDcgODRUNTUgMzQ1Wk0yNzYgNTlUMzY4IDU5VDUxOCAxNDZUNTc2IDM2MFE1NzYgNDczIDUyNSA1NDVUNDAxIDYzNFEzNzEgNjM3IDM2MiA2MzdRMjg0IDYzNyAyMjIgNTYyVDE1OSAzNjBUMjE3IDE0NycsXG4gICAgMHgxRDVBRjogJzg4IDBWNjk0SDIzMFEzNDcgNjkzIDM3MCA2OTJUNDEwIDY4NlE0ODcgNjY3IDUzNSA2MTFUNTgzIDQ4NVE1ODMgNDA5IDUyNyAzNDhUMzc5IDI3NlEzNjkgMjc0IDI3OSAyNzRIMTkyVjBIODhaTTQ4NiA0ODVRNDg2IDUyMyA0NzEgNTUxVDQzMiA1OTNUMzkxIDYxMlQzNTcgNjIxUTM1MCA2MjIgMjY4IDYyM0gxODlWMzQ3SDI2OFEzNTAgMzQ4IDM1NyAzNDlRMzcwIDM1MSAzODMgMzU0VDQxNiAzNjhUNDUwIDM5MVQ0NzUgNDI5VDQ4NiA0ODUnLFxuICAgIDB4MUQ1QjA6ICc1NSAzNDVRNTUgNTA0IDE0OSA2MDlUMzYxIDcxNVEzODYgNzE1IDQwNiA3MTNRNTIxIDY5NiA2MDAgNTkyVDY4MCAzNDRRNjgwIDI4NCA2NjUgMjMxVDYyOSAxNDNUNTg3IDg1VDU1MSA0OEw1MzYgMzVMNjQ4IC0xMjBMNjUyIC0xMjVINTMxTDQ1MiAtOEw0NDAgLTEyUTQwNyAtMjIgMzY5IC0yMlEyMzkgLTIyIDE0NyA4NVQ1NSAzNDVaTTU3OSAzNDVRNTc5IDQ3MyA1MTcgNTU1VDM2OSA2MzdRMjc5IDYzNyAyMTggNTU0VDE1NiAzNDVRMTU2IDIyMyAyMTUgMTQxVDM2OCA1OFEzNzYgNTggMzgyIDU4VDM5MiA1OFQzOTcgNTlUNDAxIDYwVDQwMyA2MUg0MDRRNDA0IDYzIDM2MCAxMjhUMzE1IDE5NEg0MjFMNDUzIDE1MFE0ODUgMTA1IDQ4NiAxMDVRNDkwIDEwOCA0OTYgMTEzVDUxNyAxMzhUNTQ1IDE4MlQ1NjcgMjQ3VDU3OSAzMzRWMzQ1JyxcbiAgICAweDFENUIxOiAnODggMFY2OTRIMjI3SDI1OUgzMDJRMzY1IDY5NCAzOTkgNjg5VDQ3NCA2NjNRNTI4IDYzNyA1NTggNTk1VDU4OSA1MDRRNTg5IDQ4MiA1ODQgNDYyVDU2OSA0MjZUNTQ3IDM5NlQ1MjIgMzcyVDQ5NSAzNTNUNDcwIDMzOFQ0NDkgMzI4VDQzNCAzMjJMNDI5IDMyMEw0NDAgMzAwUTQ1MiAyODAgNDc3IDIzOFQ1MjMgMTYwTDYxNyAxTDU2NSAwUTUxMyAwIDUxMiAxUTUxMiAyIDQyNCAxNTZMMzM3IDMwOUgxODlWMEg4OFpNNDkyIDUwNFE0OTIgNjAwIDM2NyA2MjBRMzU0IDYyMiAyNzEgNjIzSDE4OVYzODVIMjcxUTM2MyAzODYgMzg4IDM5MlE0MzIgNDAyIDQ2MiA0MzBUNDkyIDUwNCcsXG4gICAgMHgxRDVCMjogJzU1IDUxNFE1NSA1ODkgMTE1IDY1MlQyODMgNzE2UTMxNSA3MTYgMzQ1IDcxMVQzOTYgNjk5VDQzMiA2ODVUNDU3IDY3MlQ0NjcgNjY3UTQ2NyA2NjYgNDU5IDYxOFQ0NDkgNTY4UTM4MyA2MzQgMjgyIDYzNFEyMTQgNjM0IDE4MiA2MDBUMTUwIDUyNVExNTAgNTA3IDE1NSA0OTJUMTcyIDQ2NVQxOTQgNDQ2VDIyMiA0MzJUMjQ3IDQyM1QyNzIgNDE2VDI4OSA0MTJRMzUzIDM5NiAzNzggMzg0UTQzMiAzNTggNDY2IDMwN1Q1MDAgMTk0UTUwMCAxMTAgNDM4IDQ0VDI3MiAtMjJRMjE1IC0yMiAxNTkgLTVUNzMgMjhUNDQgNTBRNDUgNTEgNDkgNzVUNTcgMTIyVDYyIDE0Nkw2NSAxNDNRNjggMTQwIDc0IDEzNlQ4OCAxMjVUMTA3IDExMVQxMzEgOThUMTYwIDg1VDE5NCA3NFQyMzIgNjZUMjc0IDYzSDI4NlEzMjcgNjMgMzY2IDk2VDQwNiAxODJRNDA2IDI0NSAzNTIgMjgwUTMyOSAyOTYgMjY1IDMxMFQxNzMgMzM5UTEyNCAzNjMgOTAgNDA5VDU1IDUxNCcsXG4gICAgMHgxRDVCMzogJzM2IDYwOFY2ODhINjQ0VjYwOEg1MThMMzkyIDYwOVYwSDI4OFY2MDlMMTYyIDYwOEgzNicsXG4gICAgMHgxRDVCNDogJzg3IDQ1MFY2OTRIMTkxVjQ0OVExOTIgMjAzIDE5MyAxOTRRMjAwIDE0OCAyMjAgMTE3VDI2NiA3MlQzMTEgNTRUMzQ3IDQ5UTQwNCA0OSA0NDYgODRUNTAxIDE3OFE1MDUgMTk1IDUwNSAyMThUNTA3IDQ0OVY2OTRINjAwVjQ1MFE2MDAgNDE0IDYwMCAzNTZRNTk5IDE5OCA1OTUgMTgxUTU5NCAxNzggNTk0IDE3N1E1NzUgODkgNTA1IDM0VDM0NSAtMjJRMjU4IC0yMiAxODQgMzRUODkgMTk2UTg4IDIwNSA4NyA0NTAnLFxuICAgIDB4MUQ1QjU6ICcxNCA2OTJRMTQgNjk0IDY4IDY5NEgxMjJMMTQ2IDYzM1EzMjUgMTY1IDMzOSA5MFEzNDAgODcgMzQxIDg3UTM0MSAxMjQgNTMwIDYxOUw1NTggNjk0SDYwNVE2NTIgNjk0IDY1MiA2OTJRNjUwIDY5MCA1MjMgMzU0VDM5MCAxMEwzODcgMEgyNzlMMjc2IDEwUTI3MSAxOCAxNDQgMzU0VDE0IDY5MicsXG4gICAgMHgxRDVCNjogJzExNSA2OTRRMTE1IDY5MyAxNTYgNTUwVDIzMyAyNjZUMjcwIDkwTDI3MSA4NVEyNzIgODYgMjcyIDkyUTI3MiAxNTMgNDA1IDYxNkw0MjcgNjk0SDUyNEw1NTMgNTkwUTY3MiAxNzQgNjgxIDk1TDY4MiA4NEw2ODQgOTVRNjg5IDEzOCA3MjggMjg3VDgwMyA1NjNUODQxIDY5MlE4NDEgNjk0IDg4NSA2OTRUOTI5IDY5M1E5MjkgNjkxIDgyOSAzNDZMNzMwIDBINjc5TDYyOCAxTDYwNiA3NVE0NzggNTI0IDQ3MCA2MDBMNDY5IDYxMUw0NjcgNjAwUTQ1OCA1MTggMzM4IDEwMUwzMTAgMEgyMTNMMTE0IDM0NlExNCA2OTEgMTQgNjkzUTE0IDY5NCA2NCA2OTRIMTE1JyxcbiAgICAweDFENUI3OiAnMTQgMFExNiA1IDE0NCAxODRUMjc1IDM2N0wxNTMgNTI4UTEyMSA1NzEgODggNjE1VDQyIDY3NFQyOCA2OTRIMTUwTDIyOCA1ODRRMzE1IDQ2MyAzMTYgNDYxTDMyNiA0NDhMNDk3IDY5NEg2MTBMNjA5IDY5MlE2MDYgNjg5IDQ5MiA1MjhRNDQwIDQ1NCA0MDkgNDEwVDM3OCAzNjZRMzc4IDM2NSA1MTUgMTgyTDY1MiAwSDUzMUwzMjYgMjkyUTMyNiAyOTMgMjk5IDI1NFQyMjYgMTQ2TDEyOCAwSDE0JyxcbiAgICAweDFENUI4OiAnNCA2OTNMNjQgNjk0SDEyNUwxNzQgNjIxUTMzNSAzNzggMzQwIDM2NEwzNDEgMzYyUTM2MSAzOTggMzk1IDQ1MEw1NTggNjk0SDY2M0wzODMgMjc3VjBIMjgyVjI3OEwxNDMgNDg1UTExMiA1MzEgNzUgNTg2VDIxIDY2OEw0IDY5MycsXG4gICAgMHgxRDVCOTogJzY5IDYxN1Y2OTRINTU1VjY0M0wzNzMgMzYyUTE5MCA4MSAxOTAgNzlIMjM0UTI0NCA3OSAyNzIgNzlUMzQ0IDgwVDQxOSA4MUg1NjBWMEg1NVY1M0wyMzcgMzM0UTQyMCA2MTUgNDIwIDYxN1E0MTMgNjE4IDM4NyA2MThRMzgwIDYxOCAzMzQgNjE4VDI0NSA2MTdINjknLFxuICAgIDB4MUQ1QkE6ICcyMzYgMzg3UTIwOSAzODcgMTg0IDM4MlQxNDEgMzcwVDExMSAzNTVUOTEgMzQyVDgzIDMzN0w4MiAzNTVRODAgMzczIDc5IDM5M1Q3NyA0MTdRNzcgNDE5IDgxIDQyMVE4NiA0MjMgOTEgNDI2UTE1NSA0NjAgMjI3IDQ2MEgyMzhRMzE5IDQ2MCAzNjggNDAwUTM5MyAzNzEgNDAwIDM0MVQ0MDggMjUyUTQwOCAyNDAgNDA4IDIwN1Q0MDcgMTUyVjBIMzE3VjM5TDMwNiAzMlEyNDQgLTEwIDE1OSAtMTBIMTUyUTEwOSAtMTAgNzcgMjJRMzggNjEgMzggMTI2UTM4IDE0MiAzOSAxNDZRNTUgMTk5IDEzMCAyMjNUMjk1IDI1MkgzMTRWMjc3UTMxNCAzMDUgMzEzIDMxMFEzMDggMzQyIDI4NyAzNjRUMjM2IDM4N1pNMzAzIDE4NlExMjQgMTgwIDEyNCAxMjZRMTI0IDEwNSAxNDQgODZUMjA4IDY2UTI4NCA2NiAzMDkgMTI0UTMxNCAxMzcgMzE0IDE2NlYxODZIMzAzJyxcbiAgICAweDFENUJCOiAnMzAzIC0xMVEyODAgLTExIDI1OSAtNlQyMjIgNlQxOTQgMjFUMTc2IDMzVDE2OCAzOFYwSDc1VjY5NEgxNjVWNTUwTDE2NiA0MDVRMjQ3IDQ1NSAzMzYgNDU1UTM5NyA0NTUgNDM5IDM4OVQ0ODIgMjI2UTQ4MiAxMTUgNDI4IDUyVDMwMyAtMTFaTTM5MCAyMjFRMzkwIDI4MyAzNjEgMzMxVDI2NSAzNzlRMjE0IDM3OSAxNzcgMzQyTDE2OCAzMzRWMTE4UTIwMyA2NiAyNTggNjZRMzE2IDY2IDM1MyAxMDZUMzkwIDIyMScsXG4gICAgMHgxRDVCQzogJzM0IDIyM1EzNCAzMjcgOTkgMzkzVDI0NSA0NjBRMjkwIDQ2MCAzMDEgNDU5UTMyOCA0NTUgMzU0IDQ0NVQzOTUgNDI3VDQxMCA0MTVMMzk2IDMzOEwzODYgMzQ0UTM3NyAzNDkgMzYyIDM1N1QzMzUgMzcwUTMwNSAzODEgMjU4IDM4MUgyNTJRMTgyIDM4MSAxNDYgMzE1UTEyNiAyNzUgMTI2IDIyNFExMjYgMTU4IDE1OSAxMTNUMjU1IDY4UTMyOSA2OCAzOTQgMTA2TDQwOCAxMTRMNDEwIDkzUTQxMSA3MiA0MTIgNTJMNDE0IDMyUTQwNyAyNyAzOTQgMjBUMzM4IDJUMjUyIC0xMFExNTYgLTEwIDk1IDU4VDM0IDIyMycsXG4gICAgMHgxRDVCRDogJzMzIDIyNFEzMyAzMjEgODEgMzg4VDE5NyA0NTVRMjc3IDQ1NSAzNDIgNDE0TDM1MSA0MDhWNjk0SDQ0MVYwSDM0OFY0NEwzMzggMzdRMjc4IC0xMCAxOTggLTEwUTE3NyAtMTAgMTY4IC04UTk5IDExIDYyIDkwUTMzIDE0OCAzMyAyMjRaTTM0OCAzMzdRMzA3IDM3OCAyNjMgMzc4UTI2MCAzNzggMjU2IDM3OFQyNTEgMzc5UTIzOSAzNzkgMjIzIDM3NFQxODIgMzU1VDE0MiAzMDVUMTI2IDIyMFExMjYgOTAgMjI1IDY3UTIzMSA2NiAyNTAgNjZIMjU1UTMwNiA2NiAzNDIgMTE1TDM0OCAxMjRWMzM3JyxcbiAgICAweDFENUJFOiAnMjggMjI2UTI4IDMyOSA5MSAzOTVUMjM1IDQ2MVEyNTggNDYxIDI3OSA0NTZUMzI1IDQzNlQzNjggMzk3VDM5OSAzMzJUNDE1IDIzOFYyMTlIMTEzVjIxNVExMTMgMTYzIDE1MSAxMTRUMjQ4IDY1UTI3MyA2NSAyOTggNzBUMzQxIDgyVDM3MyA5NlQzOTYgMTA4TDQwMyAxMTNRNDAzIDEwNiA0MDYgNzZUNDA5IDM4UTQwOSAzNCA0MDggMzNUMzkzIDI0UTMyNSAtMTAgMjUyIC0xMFExNTUgLTEwIDkyIDU5VDI4IDIyNlpNMzQwIDI4OUwzMzggMjk3UTMzNSAzMDUgMzMzIDMxMFQzMjcgMzI2VDMxNyAzNDNUMzA0IDM1OFQyODYgMzcyVDI2MyAzODFUMjMzIDM4NVEyMTIgMzg1IDE5MyAzNzZUMTYyIDM1M1QxNDAgMzI1VDEyNyAzMDFUMTIzIDI4OUgzNDAnLFxuICAgIDB4MUQ1QkY6ICcyNjIgNzA1SDI2N1EzMDAgNzA1IDM0NyA2OTRWNjEyTDMzNiA2MTZRMzAzIDYyOCAyNzQgNjI4SDI2NlEyMjQgNjI4IDE5OSA2MDVRMTg3IDU5MCAxODQgNTc5VDE4MSA1NDFWNTA3VjQ0NEgyODdWMzcxSDE4NFYwSDk0VjM3MUgyN1Y0NDRIOTRWNDkyUTk0IDU0NCA5NSA1NTBRMTAyIDYxNyAxNTEgNjYxVDI2MiA3MDUnLFxuICAgIDB4MUQ1QzA6ICc1NSAyODZRNTUgMzU3IDEwNSA0MDZUMjI0IDQ1NVEyODAgNDU1IDMyMyA0MjFMMzIyIDQyM0wzMTggNDI3UTMxOCA0MjggMzM5IDQzNFQzOTYgNDQ4VDQ2NSA0NTVINDcxTDQ3OCA0MTZMNDg1IDM3N1E0ODQgMzc3IDQ3NCAzNzlUNDQ1IDM4M1Q0MDEgMzg1UTM5NyAzODUgMzkxIDM4NVQzODEgMzg0TDM2MiAzODNMMzU3IDM4N1EzNTggMzg2IDM2NCAzNzVUMzc1IDM1NFQzODQgMzI1VDM4OSAyODdRMzg5IDIxNyAzNDAgMTY4VDIyMSAxMTlRMTc4IDExOSAxMzggMTQyUTEzMyAxNDUgMTMxIDE0M1ExMjUgMTMxIDEyNSAxMTdRMTI1IDgyIDE1NSA3MkwyMjcgNzFRMjMwIDcxIDI1MSA3MVQyODAgNzFUMzEwIDY5VDM0MyA2NVQzNzMgNTdUNDAzIDQ2VDQyOCAzMFQ0NDkgN1E0NzEgLTI2IDQ3MSAtNjJWLTcxUTQ3MSAtMTM2IDM4NCAtMTc4UTMyNiAtMjA2IDI1MCAtMjA2UTE1OSAtMjA2IDEwMiAtMTcyVDMwIC05MlEyOCAtODQgMjggLTY4VDMxIC0zN1Q0MCAtMTJUNTIgN1Q2NCAyMVQ3NSAzMVQ4MiAzOFE2MCA2OCA2MCAxMDZRNjAgMTQ1IDgwIDE4MEw4NiAxODlMODAgMTk5UTU1IDI0MCA1NSAyODZaTTMwNCAyMzNUMzA0IDI4N1QyNzkgMzYyVDIyMCAzODNRMTg5IDM4MyAxNjUgMzYxVDE0MCAyODdRMTQwIDI0MyAxNjEgMjE3VDIyMCAxOTFRMjUzIDE5MSAyNzggMjEyWk0yNTAgLTEzNFEyOTggLTEzNCAzMzEgLTEyMlQzNzUgLTk2VDM4NyAtNjlRMzg3IC0yMSAzMDYgLTdRMjg4IC01IDIxNiAtNVExNjEgLTUgMTUzIC03UTE0NiAtOSAxMzkgLTEzVDEyMiAtMzFUMTEzIC02NlExMTMgLTc1IDExMyAtODBUMTI3IC05N1QxNjYgLTEyMVEyMDMgLTEzNCAyNTAgLTEzNCcsXG4gICAgMHgxRDVDMTogJzE2MyAzOTVRMjIzIDQ1NSAzMDcgNDU1UTQxNyA0NTUgNDM4IDM1NFE0NDIgMzMxIDQ0MyAxNjRWMEgzNTBWMTU3UTM0OSAzMTUgMzQ4IDMyMFEzMzQgMzc4IDI1OSAzNzhIMjUzUTIyNCAzNzggMjA0IDM1OFExODAgMzM0IDE3MyAzMDFUMTY1IDIwOVExNjUgMTk4IDE2NSAxNzJUMTY2IDEyOVYwSDczVjY5NEgxNjNWMzk1JyxcbiAgICAweDFENUMyOiAnNjcgNTc2VjY4MEgxNzFWNTc2SDY3Wk03NCAwVjQ0NEgxNjRWMEg3NCcsXG4gICAgMHgxRDVDMzogJzg4IDU3NlY2ODBIMTkyVjU3Nkg4OFpNMzEgLTEyNlE0MCAtMTI2IDQ4IC0xMjVUNjIgLTEyMlQ3MyAtMTE3VDgyIC0xMTFUODkgLTEwNVQ5NCAtOTlUOTggLTkyTDEwMiAtODZWNDQ0SDE5MlYxODBRMTkxIC00NSAxOTEgLTcwVDE4NCAtMTEzUTE3MSAtMTUyIDE0MCAtMTc4VDYzIC0yMDVRMzQgLTIwNSA0IC0xOTdULTQzIC0xODFULTU5IC0xNzFULTUxIC0xMzNULTQxIC05NkwtMzggLTk5US0zNCAtMTAyIC0yOCAtMTA2VC0xMyAtMTE1VDcgLTEyM1QzMSAtMTI2JyxcbiAgICAweDFENUM0OiAnNzYgMFY2OTRIMTYzVjI1N0wzNDAgNDQ0SDQ0OUwyODYgMjcyTDI5MiAyNjNRMjk2IDI1OSAzNzggMTM4VDQ2MyAxMkw0NzEgMEgzNzJMMzA5IDkyUTI5NCAxMTQgMjc3IDEzOVQyNTAgMTc5VDIzNyAxOThMMjI4IDIxMUwxNjAgMTM5VjBINzYnLFxuICAgIDB4MUQ1QzU6ICc3NCAwVjY5NEgxNjRWMEg3NCcsXG4gICAgMHgxRDVDNjogJzE2MCAzOTJRMjIzIDQ1NSAzMDQgNDU1UTM1OSA0NTUgMzg2IDQzNlQ0MzAgMzgzTDQzNyAzOTFRNDk1IDQ1NSA1ODQgNDU1UTY5NCA0NTUgNzE1IDM1NFE3MTkgMzMxIDcyMCAxNjRWMEg2MjdWMTU3UTYyNiAzMTUgNjI1IDMyMFE2MTEgMzc4IDUzNiAzNzhINTMwUTUwMSAzNzggNDgxIDM1OFE0NTcgMzM0IDQ1MCAzMDFUNDQyIDIwOVE0NDIgMTk4IDQ0MiAxNzJUNDQzIDEyOVYwSDM1MFYxNTdRMzQ5IDMxNSAzNDggMzIwUTMzNCAzNzggMjU5IDM3OEgyNTNRMjI0IDM3OCAyMDQgMzU4UTE4MCAzMzQgMTczIDMwMVQxNjUgMjA5UTE2NSAxOTggMTY1IDE3MlQxNjYgMTI5VjBINzNWNDUwSDE2MFYzOTInLFxuICAgIDB4MUQ1Qzc6ICcxNjAgMzkyUTIxNCA0NDYgMjgzIDQ1NFEyODUgNDU0IDI5MiA0NTRUMzAzIDQ1NUgzMDZRNDE3IDQ1NSA0MzggMzU0UTQ0MiAzMzEgNDQzIDE2NFYwSDM1MFYxNTdRMzQ5IDMxNSAzNDggMzIwUTMzNCAzNzggMjU5IDM3OEgyNTNRMjI0IDM3OCAyMDQgMzU4UTE4MCAzMzQgMTczIDMwMVQxNjUgMjA5UTE2NSAxOTggMTY1IDE3MlQxNjYgMTI5VjBINzNWNDUwSDE2MFYzOTInLFxuICAgIDB4MUQ1Qzg6ICcyOCAyMjJRMjggMzIzIDk1IDM5MVQyNDQgNDYwUTI3NSA0NjAgMjgxIDQ1OVEzNjQgNDQ1IDQxNyAzNzdUNDcxIDIxOVE0NzEgMTI0IDQwOCA1N1QyNTAgLTEwUTE1OCAtMTAgOTMgNTdUMjggMjIyWk0zNzcgMjMwUTM3NyAyNzcgMzY0IDMxMFQzMjggMzU4VDI4NyAzNzlUMjQ4IDM4NVEyMzMgMzg1IDIxOSAzODJUMTg2IDM2OVQxNTUgMzQyVDEzMiAyOTdUMTIyIDIzMFExMjIgMTQ2IDE1OSAxMDhUMjUwIDY5SDI1M1EyNjMgNjkgMjc0IDcwVDMwNSA4MVQzMzkgMTA2VDM2NSAxNTRUMzc3IDIzMCcsXG4gICAgMHgxRDVDOTogJzE2NiA0MDRRMTk0IDQyNCAyNDEgNDM5VDMzNyA0NTVIMzQxUTQxMCA0NTUgNDUxIDM3MFE0ODMgMzA3IDQ4MyAyMjJRNDgzIDEyOCA0MzMgNTlUMzA2IC0xMFEyODIgLTEwIDI2MCAtNVQyMjIgN1QxOTQgMjFUMTc2IDMzVDE2OCAzOFYtMTk0SDc1VjQ0NEgxNjVWNDI0TDE2NiA0MDRaTTM5MCAyMjJRMzkwIDI4NyAzNTQgMzMxVDI2NiAzNzZUMTc3IDM0MEwxNjggMzMyVjExOFEyMDAgNjYgMjU3IDY2UTMxMyA2NiAzNTEgMTEyVDM5MCAyMjInLFxuICAgIDB4MUQ1Q0E6ICczMyAyMjBRMzMgMzI1IDg3IDM4OVQyMDYgNDU0UTI4NiA0NTQgMzQxIDQwNkwzNTEgMzk4VjQ1NUg0NDFWLTE5NEgzNDhWNDFMMzM4IDM1UTI3NiAtOCAxOTggLTExUTE3MSAtMTEgMTU0IC01UTEwMiAxMiA2OCA3NFQzMyAyMjBaTTEyNiAyMjBRMTI2IDE2MCAxNjEgMTEzVDI1MSA2NVEzMDUgNjUgMzUxIDEyM1YyOThMMzUwIDMwMVEzNDkgMzA0IDM0NyAzMDhUMzQyIDMxOVQzMzYgMzMxVDMyNyAzNDNUMzE1IDM1NVQzMDAgMzY1VDI4MyAzNzNRMjczIDM3NSAyNTYgMzc1UTIwOCAzNzUgMTY3IDMzMlQxMjYgMjIwJyxcbiAgICAweDFENUNCOiAnMTcxIDM4OVEyMzcgNDU1IDMyMCA0NTVIMzI3VjM3M0gzMTdRMjYyIDM2OSAyMjAgMzM2VDE2NyAyNDhRMTY1IDIzOSAxNjQgMTE5VjBINzRWNDUwSDE1OVYzNzdMMTcxIDM4OScsXG4gICAgMHgxRDVDQzogJzMzIDMyNlEzMyAzNzYgNjAgNDA4VDExNyA0NTBUMTc1IDQ2MEgxOTBRMjQ1IDQ2MCAyNzIgNDU0VDM0NSA0MjlRMzQ1IDQyOCAzMzggMzg4TDMzMSAzNDlRMjc4IDM4NiAxODggMzg2SDE4M1ExMTkgMzg2IDExOSAzMzZRMTE5IDMwNyAxNDIgMjk1VDIxMCAyNzZUMjc4IDI1NlEzNjAgMjEzIDM2MCAxMzBRMzYwIDEwOCAzNTQgODhUMzMyIDQzVDI4MSA1VDE5NSAtMTBRMTUyIC0xMCAxMTEgMVQ0OSAyMlQyOCAzNVEyOSAzNiAzMiA1NlQzOSA5NVQ0MyAxMTVUNTEgMTEwVDcyIDk5VDEwMiA4NVQxNDMgNzNUMTkzIDY4UTI3NCA2OCAyNzQgMTIzUTI3NCAxNTIgMjQ4IDE2N1EyMzQgMTc4IDE4NyAxODZUMTE1IDIwN1E2NiAyMjkgNDYgMjczUTMzIDI5OCAzMyAzMjYnLFxuICAgIDB4MUQ1Q0Q6ICczMzMgMjdRMzMzIDI0IDMxNCAxNlQyNTcgLTFUMTg0IC0xMEgxNzJRMTQ2IC0xMCAxMjggMTRUMTA1IDU4VDk5IDkxUTk1IDExMyA5NSAyNTFWMzcxSDE4VjQ0NEg5OFY1NzFIMTgyVjQ0NEgzMTZWMzcxSDE4MlYyNTNRMTgzIDEyOCAxODkgMTA0UTE5OSA2OCAyMzQgNjhRMjc3IDcyIDMxNCA5OFEzMTUgOTMgMzIzIDYxVDMzMyAyNycsXG4gICAgMHgxRDVDRTogJzM1MyAzOVEzNTIgMzggMzQ0IDM0VDMzMSAyN1QzMTUgMTlUMjk1IDExVDI3MCAzVDI0MSAtM1QyMDcgLThUMTY4IC0xMEgxNjJRMTQ4IC0xMCAxMzcgLThUMTExIDJUODcgMzBUNzQgODFRNzMgODkgNzMgMjY4VjQ0NEgxNjZWMjY4TDE2NyA5MlExNzEgNzkgMTc0IDc0VDE5MiA2NFQyMzggNTlRMzE3IDU5IDM0NCAxMTZRMzQ5IDEyOCAzNDkgMTQ4VDM1MCAyOTFWNDQ0SDQ0M1YwSDM1M1YzOScsXG4gICAgMHgxRDVDRjogJzE3OCAwUTE1IDQ0MSAxNCA0NDJRMTQgNDQ0IDYwIDQ0NFExMDcgNDQ0IDEwNyA0NDJRMTA4IDQ0MSAxMzYgMzY0VDE5NiAxOTRUMjMyIDY3UTIzMyA5OCAyODAgMjM0VDM1NiA0NDJRMzU2IDQ0NCA0MDEgNDQ0VDQ0NiA0NDJMMjgyIDBIMTc4JyxcbiAgICAweDFENUQwOiAnMTQgNDQ0SDEwNUwxMDggNDM0UTE5MiAxNjAgMjAwIDc0VjY1TDIwMSA3NVEyMDYgMTQ0IDI4MiAzOTlMMjk2IDQ0NEgzODFMMzk5IDM4MVE0ODAgMTEyIDQ4MCA2OUw0ODEgNzBRNDgxIDExMyA1NjIgMzg2TDU4MCA0NDRINjY4TDUzNCAxTDQ4MyAwSDQzMkw0MjkgMTBRMzQzIDI5NCAzMzggMzY3TDMzNyAzNzdRMzM2IDM3NSAzMzYgMzcwUTMzNiAzNDAgMzEzIDI1MFQyNjkgODhUMjQ1IDExTDI0MiAwSDE5NUwxNDggMUwxNCA0NDQnLFxuICAgIDB4MUQ1RDE6ICcxODcgMjI5TDYgNDQ0SDEwN0wyMjcgMjk0TDM0NCA0NDRIMzkzTDQ0MiA0NDNRNDM5IDQzNyAyOTkgMjY4TDI2NyAyMjlMNDYwIDBIMzU5TDI5NCA4OFEyODAgMTA3IDI2MiAxMzFUMjM2IDE2NkwyMjcgMTc3TDEwMCAwSDBRMSAxIDQ3IDU4VDE0MCAxNzFUMTg3IDIyOScsXG4gICAgMHgxRDVEMjogJzExMyAtMjA0UTgzIC0yMDQgNjMgLTIwMEw0MyAtMTk3UTQzIC0xOTYgNDAgLTE1N1QzNiAtMTE3TDQ4IC0xMjFRNzkgLTEzMyAxMTQgLTEzM1ExMjQgLTEzMyAxMzAgLTEzMlQxNDUgLTEyMVQxNjMgLTk0UTE2OSAtODIgMTg0IC00MlQyMDAgMUwxODggMjlRMTc2IDU3IDE1MiAxMTVUMTA3IDIyM1Q2MiAzMzBUMjYgNDE2TDE0IDQ0M1ExNCA0NDQgNjEgNDQ0SDEwOUwxMjIgNDExUTIzMCAxNTUgMjM2IDc1TDIzNyA2NVY3NFEyNDUgMTYxIDM0OCA0MjRMMzU2IDQ0NEg0MDFRNDQ2IDQ0NCA0NDYgNDQzTDM5NiAzMTNRMzQ1IDE4MyAyOTMgNDlUMjM2IC05M1ExOTEgLTIwNCAxMjMgLTIwNEgxMTMnLFxuICAgIDB4MUQ1RDM6ICc0MiAzNzBWNDQ0SDQwMFYzOTVMMTU2IDc2TDI3OSA3N0g0MDJWMEgyOFY1MUwyNzMgMzcxTDE1NyAzNzBINDInLFxuICAgIDB4MUQ1RDQ6ICcxMTAgMEg4NlE0MiAwIDQyIDI3UTQyIDM3IDE0OCAzNTBUMjU4IDY2N1EyNjkgNjg3IDI5MSA2OTJRMjk1IDY5NCAzNjYgNjk0SDM5OVE0MzIgNjk0IDQ0OCA2ODlUNDc0IDY2N1E0NzcgNjYzIDU4MyAzNTBUNjkwIDI3UTY5MCAwIDY0MiAwSDYxN0g1OTJRNTgyIDAgNTc1IDFUNTYxIDJUNTQ5IDZUNTQxIDExVDUzMyAxOFQ1MjcgMjZUNTIyIDM3VDUxNyA0OVQ1MTIgNjRUNTA2IDgxTDQ5MCAxMzBIMjI1UTIyNSAxMjggMjA4IDc5VDE4OSAyN1ExODUgMTkgMTgwIDE0VDE3MCA3VDE1NiAzVDE0MyAxVDEyNyAwVDExMCAwWk00MzkgMjc5UTM1OSA1MjQgMzU5IDU0N0wzNTcgNTU1TDM1NSA1NDNRMzQ3IDUwMyAyNzAgMjYzTDI1OSAyMzFIMzU3UTQ1NSAyMzEgNDU1IDIzMkw0MzkgMjc5JyxcbiAgICAweDFENUQ1OiAnMTE5IDFROTggNSA5MiAyOFY2NjdROTggNjg2IDExOCA2OTNRMTIxIDY5NCAyNzIgNjk0SDI4OUgzNDZRNDM5IDY5NCA1MDAgNjgxVDYwMCA2MjVRNjQwIDU4MCA2NDAgNTEzUTY0MCA0NTEgNjAxIDQxNFQ1MDQgMzY0TDUxOCAzNjFRNTY4IDM1MSA2MDIgMzI5VDY0OSAyODBUNjY2IDIzNVQ2NzEgMTk3UTY3MSAxNzIgNjY1IDE0N1Q2NDIgOTFUNTg2IDM3VDQ4OCA1UTQ1NiAxIDI4MiAxSDExOVpNNDg5IDUwOVE0ODkgNTMyIDQ3OSA1NDhUNDUwIDU3M1Q0MjEgNTg1VDM5NCA1OTFRMzg3IDU5MiAzMTUgNTkzSDI0N1Y0MDRIMjk4SDMyNVE0MzIgNDA0IDQ2NiA0NDRRNDg5IDQ3MCA0ODkgNTA5Wk01MTcgMTk0UTUxNyAyMzUgNTAyIDI2MVQ0NTggMjk5VDQwNyAzMTNUMzUzIDMxN0gzMjlIMzIySDI0N1YxMDFIMzE5SDM1N1EzODcgMTAxIDQwNyAxMDNUNDUyIDExMVQ0OTIgMTMzVDUxNCAxNzFRNTE2IDE3NiA1MTcgMTk0JyxcbiAgICAweDFENUQ2OiAnNDIzIC0xMVEzMzkgLTExIDI3NSA5VDE3MSA2MlQxMDYgMTQzVDcxIDI0MFQ2MSAzNDdRNjEgNDUwIDkzIDUyN1ExNTcgNjY0IDMxMyA2OTRRMzU3IDcwNCA0MTYgNzA0UTQ3OSA3MDQgNTE3IDY5OVQ2MDggNjc2UTYzNCA2NjcgNjM1IDY2MFE2MzUgNjUzIDYyNCA1OTJMNjEyIDUyOEw2MDkgNTI0UTYwNCA1MjEgNjAxIDUyMVE1OTUgNTIxIDU4MyA1MzFUNTU1IDU1NVQ1MDUgNTc4VDQyOCA1ODlINDI0UTI5OCA1ODkgMjUwIDQ5NFEyMjQgNDM4IDIyNCAzNDdRMjI0IDI5MiAyMzMgMjUxVDI2NSAxNzVUMzI5IDEyMlQ0MzIgMTA0UTQ4OCAxMDQgNTI0IDExNVQ2MDQgMTU4UTYwNyAxNjAgNjEwIDE2MlQ2MTUgMTY1VDYxOSAxNjhMNjIxIDE3MFE2MjUgMTcyIDYzMCAxNzBUNjM3IDE2M1E2MzggMTYwIDY0MiAxMDlUNjQ3IDU0UTY0NiA0OSA2MjUgMzdUNTY4IDExVDQ5OSAtN1E0NjMgLTExIDQyMyAtMTEnLFxuICAgIDB4MUQ1RDc6ICcxMTkgMVE5OCA1IDkyIDI4VjY2N1E5OCA2ODYgMTE4IDY5M0gxMjRRMTMxIDY5MyAxNDIgNjkzVDE2OCA2OTRUMjAwIDY5NFQyMzcgNjk0SDI5NlE0MTYgNjk0IDQ1MCA2OTJUNTI1IDY3N1E3MzIgNjE3IDczMiAzNDJRNzMyIDE2OSA2NDQgODFRNTkzIDMyIDUyOCAxNlQzNzIgMFEzNTYgMCAzMjQgMFQyNzYgMUgxMTlaTTU3MyAzNDlRNTczIDM4NyA1NzEgNDEzVDU1OSA0NzNUNTMyIDUyN1Q0ODIgNTY3VDQwMyA1OTFRMzk1IDU5MiAzMjAgNTkzSDI1MFYxMDFIMzIxUTQxOCAxMDIgNDU2IDExNFE1NTMgMTQ0IDU2OSAyNjNRNTczIDMwMyA1NzMgMzQ5JyxcbiAgICAweDFENUQ4OiAnMjc3IDEyMlEyODAgMTIyIDM4MCAxMjNUNTQ0IDEyNVE1NTIgMTI1IDU1NyAxMjVUNTY1IDEyNFQ1NjkgMTI0UTU5NSAxMTUgNTk1IDc1VjYyVjQ3UTU5NSA5IDU2OSAyUTU2NCAwIDM0MSAwTDExOSAxUTk5IDcgOTIgMjhWNjY0UTk4IDY4MyAxMTggNjkwUTEyMSA2OTEgMzM1IDY5MVQ1NTQgNjg5UTU4MCA2ODIgNTgwIDY0NFY2MzJWNjE4UTU4MCA1ODIgNTU0IDU3M1E1NTMgNTczIDU1MSA1NzNUNTQyIDU3MlQ1MjcgNTcyUTQ2NCA1NzIgMzY0IDU3M1QyNjAgNTc1SDI1M1Y0MTJIMzg1SDQ1OVE1MjQgNDEyIDUzNiA0MDRUNTQ5IDM1N1E1NDkgMzQxIDU0OSAzMzRUNTQyIDMxOFQ1MjMgMzA1UTUxOCAzMDMgMzg1IDMwM0gyNTNWMTIySDI3NycsXG4gICAgMHgxRDVEOTogJzUxMiA1NzJRNDUxIDU3MiAzNTYgNTczVDI1OCA1NzVIMjUzVjQwMEgzNzBINDMxUTQ5NCA0MDAgNTA2IDM5MlQ1MTggMzQ1UTUxOCAzMDcgNTA3IDI5OVQ0MzcgMjkxSDM3MEgyNTNWMTYxUTI1MyAxNDEgMjUzIDExM1QyNTQgNzVRMjU0IDIzIDI0NSAxMlQxOTUgMEgxNzBMMTE5IDFROTkgNyA5MiAyOFY2NjRROTggNjgzIDExOCA2OTBRMTIxIDY5MSAzMjcgNjkxVDUzOCA2ODlRNTY0IDY4MiA1NjQgNjQ0VjYzMlY2MThRNTY0IDU4MiA1MzggNTczUTUzNyA1NzMgNTM1IDU3M1Q1MjYgNTcyVDUxMiA1NzInLFxuICAgIDB4MUQ1REE6ICc2MSAzNDdRNjEgNDA1IDcwIDQ1NFQxMDUgNTUwVDE3MSA2MzFUMjc2IDY4NVQ0MjYgNzA1UTQ4MyA3MDUgNTM3IDY5M1Q2MjAgNjY4VDY1MCA2NDZRNjUwIDY0NSA2NDkgNjM3VDY0NSA2MTJUNjM5IDU3OEw2MjcgNTE0TDYyNCA1MTBRNjIwIDUwNyA2MTUgNTA3VDU5NyA1MjBUNTY2IDU0OFQ1MTIgNTc3VDQzMCA1OTBRMjIzIDU5MCAyMjMgMzQ3VDQzMSAxMDRRNDc4IDEwNCA1MDYgMTEyUTUwOCAxMTIgNTA4IDE2NFYyMTVINDcxTDQzNCAyMTZMNDI4IDIyMkw0MjcgMjY4UTQyNyAzMTUgNDI5IDMxOFE0MzIgMzIzIDQ0NCAzMjNUNTQ0IDMyNEg2NTJRNjU1IDMyMCA2NTkgMzE3VjQ1TDY1NiA0M1E2NTQgMzkgNjI0IDI3VDUzNiAyVDQyNCAtMTFRMzY2IC0xMSAzMTcgLTJUMjE5IDMzVDEzNyA5N1Q4MiAyMDBUNjEgMzQ3JyxcbiAgICAweDFENURCOiAnOTIgNjY3UTEwMSA2OTQgMTQzIDY5NEgxNzJIMTk4UTI0NCA2OTQgMjUxIDY2OVEyNTMgNjYzIDI1MyA1MzlWNDE1SDU0MFY1MzlRNTQwIDU1OCA1NDAgNTg1VDUzOSA2MjFRNTM5IDY3MyA1NTAgNjgzVDYxMSA2OTRINjIxSDY0NlE2NzEgNjk0IDY4MyA2OTBUNzAwIDY2OVE3MDIgNjYzIDcwMiAzNDdUNzAwIDI1UTY5NiA5IDY4NCA1VDY0NiAwSDYyMUg2MDZRNTYwIDAgNTUwIDExVDUzOSA3NlE1MzkgODUgNTM5IDExNlQ1NDAgMTY5VjMwNkgyNTNWMTY5UTI1MyAxNDcgMjUzIDExNlQyNTQgNzVRMjU0IDIzIDI0NSAxMlQxOTQgMEgxNzBMMTE5IDFROTkgNyA5MiAyOFY2NjcnLFxuICAgIDB4MUQ1REM6ICc4NSA2NjdROTQgNjk0IDEzNiA2OTRIMTY1SDE5MVEyMzcgNjk0IDI0NCA2NjlRMjQ2IDY2MyAyNDYgMzQ3VDI0NCAyNVEyMzUgMCAxOTIgMEgxNjNMMTEyIDFROTIgNyA4NSAyOFY2NjcnLFxuICAgIDB4MUQ1REQ6ICcyMzYgLTIyUTE5MCAtMjIgMTQ0IC0xMVQ3MiAxMlQ0NiAyOVE2MyAxNDcgNjkgMTUzUTgwIDE2NCA5MiAxNDZRMTI0IDkxIDE5MSA5MVEyMjIgOTEgMjQyIDEwMlQyNjcgMTM0UTI2OCAxMzkgMjY4IDQwMlEyNjggNjYzIDI3MCA2NjlRMjc1IDY4NyAyOTQgNjkyUTI5OCA2OTQgMzQ3IDY5NEgzNjdRMzkzIDY5NCA0MDYgNjkwVDQyNSA2NjlRNDI3IDY2MyA0MjcgMzk5UTQyNyAxMzIgNDI2IDEyNVE0MjEgODcgNDA0IDU4VDM2NiAxNVQzMTggLTlUMjczIC0yMFQyMzYgLTIyJyxcbiAgICAweDFENURFOiAnOTIgNjY3UTEwMSA2OTQgMTM5IDY5NEgxNjNIMTg2UTIyNSA2OTQgMjM0IDY3MVEyMzYgNjYzIDIzNiA1MjlMMjM3IDM5Mkw1MzMgNjgyUTU1MCA2OTQgNTkwIDY5NEg2MjNINjgxUTY5NSA2ODAgNjk1IDY3MlE2OTUgNjcwIDY5MyA2NjRRNjg4IDY1NyA1NjEgNTMzTDQzMSA0MDVMNjk4IDMzUTcwMSAyOCA3MDEgMjNRNzAxIDcgNjgzIDBINjI2SDYwNFE1NzEgMCA1NjQgMlQ1NDUgMTNRNTQ0IDE0IDUzMCAzM1Q0ODkgOTBUNDM3IDE2MkwzMzIgMzA3UTMzMSAzMDcgMjg0IDI2MEwyMzYgMjE0VjEyMlY2NVEyMzYgMzIgMjMxIDE5VDIxMCAyUTIwNSAwIDE2MSAwTDExOSAxUTk5IDcgOTIgMjhWNjY3JyxcbiAgICAweDFENURGOiAnOTIgNjY3UTk4IDY4NCAxMDkgNjg5VDE0MiA2OTRIMTcySDE5OFEyNDQgNjk0IDI1MSA2NjlRMjUzIDY2MyAyNTMgMzg5VjExNkwyNzggMTE3UTQxMCAxMTkgNDkwIDExOUg0OTVRNTExIDExOSA1MTcgMTE1VDUzNCA5M1Y2M1Y0OFE1MzQgOSA1MDggMlE1MDMgMCAzMTAgMEwxMTkgMVE5OSA3IDkyIDI4VjY2NycsXG4gICAgMHgxRDVFMDogJzkyIDY2N1E5OCA2ODQgMTA5IDY4OVQxNDYgNjk1UTE1MiA2OTUgMTY3IDY5NVQxOTIgNjk0UTIwMCA2OTQgMjE0IDY5NFQyMzQgNjk1UTI5MSA2OTUgMzA1IDY2NFEzMTMgNjUxIDQwMCA0MTlUNDg3IDE2NVE0ODcgMTYyIDQ4OCAxNjJUNDg5IDE2NVE0ODkgMTg3IDU3NCA0MTNUNjcxIDY2NFE2NzkgNjgwIDY5NSA2ODhRNzA4IDY5NCA3ODUgNjk0SDgyOFE4NTUgNjk0IDg2NyA2ODlUODg0IDY2OVE4ODYgNjYzIDg4NiAzNDdUODg0IDI1UTg3NiAwIDgzMiAwSDgxN0g4MDJRNzU4IDAgNzUwIDI1UTc0OCAzMSA3NDggMjkzVjU1NUw3NDYgNTQ0UTczNyA1MDkgNjkyIDM4NlQ2MDYgMTYwVDU2NCA1MlE1NDggMjIgNTAyIDIySDQ4N0g0NzJRNDIzIDIyIDQxMCA1MlE0MDcgNTkgMzY3IDE2MFQyODMgMzg1VDIzMSA1NDZMMjMwIDU0OFEyMjkgNTQ4IDIyOSAyOTNRMjI5IDMxIDIyNyAyNVEyMjIgOSAyMTEgNVQxNzYgMEgxNThMMTE5IDFROTkgNyA5MiAyOFY2NjcnLFxuICAgIDB4MUQ1RTE6ICc5MiA2NjdROTggNjg0IDEwOSA2ODlUMTQ2IDY5NEgxODVRMjczIDY5NCAyNzkgNjkyUTMwMSA2ODkgMzE1IDY2OVEzMjIgNjYwIDQxOSA0NTNMNTU0IDE2M0w1NjIgMTQzUTU2NCAxNDMgNTY0IDQwMVE1NjQgNjYzIDU2NiA2NjlRNTc0IDY5NCA2MTggNjk0SDYzM0g2NDhRNjkyIDY5NCA3MDAgNjY5UTcwMiA2NjMgNzAyIDM0N1Q3MDAgMjVRNjk2IDEwIDY4MyA1VDY0MiAwSDU5Nkg1NTFRNTIwIDAgNTA1IDRUNDc4IDI1UTQ3MSAzNCAzNzQgMjQxTDIzOSA1MzJRMjMxIDU1MCAyMzEgNTUyTDIyOSA0NzlRMjI5IDQ0MCAyMjkgMjkzUTIyOSAzMSAyMjcgMjVRMjIyIDkgMjExIDVUMTc2IDBIMTU4TDExOSAxUTk5IDcgOTIgMjhWNjY3JyxcbiAgICAweDFENUUyOiAnMzYyIDcxNVEzNjQgNzE1IDM3NiA3MTVUMzk0IDcxNkg0MDBRNTQyIDcxNiA2MjYgNjQzVDcyNyA0MjZRNzMxIDM5NSA3MzEgMzQyUTczMSAyNzEgNzIyIDIyNVE2NzQgLTIyIDM5NiAtMjJRMzIwIC0yMiAyNTkgLTNUMTQ4IDY4VDc3IDIwMVE2MiAyNTcgNjIgMzQyUTYyIDQ0NyA4NiA1MjJUMTczIDY0OVEyNDUgNzA3IDM2MiA3MTVaTTU2OCA0MzNRNTUxIDYyMyAzOTYgNjIzUTM4MyA2MjMgMzcwIDYyMlQzMzMgNjEyVDI5MiA1OTFUMjU3IDU1MFQyMzMgNDg1UTIyMyA0NDIgMjIzIDM1MFEyMjMgMjc2IDIzMiAyMjdUMjY3IDEzN1EzMDkgNzQgMzk3IDc0UTQzMyA3NCA0NjEgODVUNTA3IDExM1Q1MzcgMTU2VDU1NiAyMDVUNTY2IDI2MFQ1NjkgMzEwVDU3MCAzNTdRNTcwIDQwOSA1NjggNDMzJyxcbiAgICAweDFENUUzOiAnNjQxIDQ3MFE2NDEgNDI2IDYzMCAzOTFUNjAzIDMzNFQ1NjEgMjk1VDUxMyAyNzFUNDU5IDI1OVQ0MDggMjU0VDM2MSAyNTNIMzUwSDMzN0gyNTNWMTQyUTI1MyAxMjUgMjUzIDEwMFQyNTQgNjdRMjU0IDMyIDI0OSAxOVQyMjcgMlEyMjIgMCAxNzAgMEwxMTkgMVE5OSA3IDkyIDI4VjY2N1E5OCA2ODYgMTE4IDY5M1ExMjEgNjk0IDI3MSA2OTRRNDI4IDY5MyA0NjIgNjg4UTY0MSA2NTYgNjQxIDQ3MFpNNDg3IDQ2N1E0ODcgNDk1IDQ4NSA1MTBUNDc0IDU0NlQ0NDIgNTc4VDM4MiA1OTJRMzc1IDU5MyAzMTAgNTkzSDI1MFYzNDdIMzA5SDMzOVEzNjQgMzQ3IDM4MCAzNDhUNDE4IDM1NFQ0NTEgMzY4VDQ3NCAzOTVUNDg2IDQzOFE0ODcgNDQ0IDQ4NyA0NjcnLFxuICAgIDB4MUQ1RTQ6ICc0NTAgLTIwUTQ0NCAtMjAgNDI5IC0yMVQzOTYgLTIyUTMyMCAtMjIgMjU5IC0zVDE0OCA2OFQ3NyAyMDFRNjIgMjU3IDYyIDM0MlE2MiA0NDcgODYgNTIyVDE3MyA2NDlRMjQ1IDcwNyAzNjIgNzE1UTM2NCA3MTUgMzc2IDcxNVQzOTQgNzE2UTczMiA3MTYgNzMyIDM0MFE3MzIgMjY4IDcxOSAyMTBUNjg2IDEyMFQ2NDcgNjhUNjE1IDM5VDYwMSAyOVQ2MzggLTIyVDY3NiAtNzNRNjc5IC03OCA2NzkgLTgzUTY3OSAtOTggNjYxIC0xMDZINTkzUTUyNiAtMTA2IDUyMSAtMTA0UTUxNCAtMTAzIDUwNyAtOTdUNDk2IC04NFQ0NzcgLTU1TDQ1NCAtMTlMNDUwIC0yMFpNNTU0IDUwOVE1MTYgNjIyIDM5MSA2MjJRMjk0IDYyMiAyNTAgNTM1UTIyMCA0NzUgMjIwIDM0NVEyMjAgMjk5IDIyMiAyNjZUMjM0IDE5OFQyNTggMTQwVDI5OSA5OVQzNjMgNzRRMzc4IDcxIDM5MyA3MUgzOTVMMzgxIDkyUTM2NyAxMTQgMzUzIDEzNlQzMzggMTYxUTMzNiAxNjUgMzM2IDE3MFEzMzYgMTg2IDM1MiAxOTNMMzYxIDE5NFEzNzAgMTk0IDM4NCAxOTRUNDEyIDE5NEg0NTJRNDU3IDE5NCA0NjAgMTk0VDQ2NiAxOTRUNDcxIDE5MlQ0NzYgMTkxVDQ4MCAxODhUNDgzIDE4NVQ0ODcgMTgwVDQ5MiAxNzRUNDk3IDE2N1Q1MDQgMTU4TDUyNiAxMjlRNTMyIDEyNyA1NTIgMTc1UTU3MyAyMzEgNTczIDM0OFE1NzMgNDU1IDU1NCA1MDknLFxuICAgIDB4MUQ1RTU6ICc2NTQgMjRRNjU0IDkgNjQ0IDVUNjEyIDBINTc3TDUyMSAxUTUwOSA1IDUwMyAxM1E0OTggMjAgNDIxIDE2MEwzNDMgMzA0SDI1MFYxNjhRMjUwIDE0NyAyNTAgMTE4VDI1MSA3OFEyNTEgMjQgMjQyIDEyVDE5MiAwSDE2OEwxMTkgMVE5OSA3IDkyIDI4VjY2N1E5OCA2ODYgMTE4IDY5M0gxMjRRMTMxIDY5MyAxNDEgNjkzVDE2NSA2OTRUMTk1IDY5NFQyMjkgNjk0VDI4MCA2OTRUMzMyIDY5NVEzODkgNjk1IDQyOCA2OTFUNTEwIDY3NVQ1ODIgNjM3VDYyNyA1NjlRNjQxIDUzMiA2NDEgNDkzUTY0MSAzNzcgNTM3IDMzMUw0OTcgMzE3TDQ5MyAzMTZMNTcxIDE3N1E2NTMgMjggNjU0IDI0Wk00ODcgNDcyVDQ4NyA0OTJUNDg1IDUyNVQ0NzYgNTUzVDQ1MCA1NzdUNDA0IDU5MVEzOTggNTkyIDMyMiA1OTNIMjUwVjM5MUgzMjFRMzI3IDM5MSAzNTMgMzkxVDM4NSAzOTJUNDEyIDM5NVQ0MzggNDAxVDQ1NyA0MTJUNDc0IDQzMFQ0ODMgNDU2JyxcbiAgICAweDFENUU2OiAnNjEgNTAzUTYxIDU0NyA3MiA1ODNUMTEwIDY1MFQxODYgNjk4VDMwNSA3MTZRNDA1IDcxNiA0OTYgNjcxUTUxMyA2NjQgNTE0IDY1N1E1MTQgNjU2IDUxMyA2NDhUNTA5IDYyM1Q1MDMgNTg5TDQ5MSA1MjVMNDg4IDUyMVE0ODQgNTE4IDQ3OSA1MThINDc1TDQ2MSA1MzJRNDMwIDU2NSAzOTUgNTgxVDMwNSA1OThRMjAxIDU5OCAyMDEgNTIzUTIwMSA0ODAgMjQwIDQ2MlQzNDUgNDMxVDQ0MyAzOTRRNTQ5IDMyNCA1NDkgMjA0UTU0OSAxNjAgNTM4IDEyM1Q1MDIgNTFUNDI3IC0yVDMwOCAtMjJRMTgwIC0yMiA2OSA0MVE1MCA1MiA0OSA1N1E0OSA1OCA1MCA2NlQ1NCA5MVQ2MCAxMjVMNzIgMTg5TDc1IDE5M1E4MCAxOTYgODQgMTk2UTg3IDE5NiAxMDQgMTgyVDE0NSAxNDlUMjEyIDExN1QzMDQgMTAyUTQwOCAxMDIgNDA4IDE4OFE0MDggMjE1IDM5NiAyMzRUMzYyIDI2M1QzMTkgMjc4VDI2NyAyOTBUMjE5IDMwMlExNDkgMzI0IDEwNSAzODBUNjEgNTAzJyxcbiAgICAweDFENUU3OiAnNjcgNjg3UTcwIDY4OCAzNjYgNjg4UTY2MSA2ODggNjY2IDY4NlE2OTIgNjgwIDY5MiA2NDFWNjI5VjYxNVE2OTIgNTc5IDY2NiA1NzBINjYwUTY1NSA1NjkgNjQ4IDU2OVE2NDUgNTY5IDYyNCA1NjlUNTgxIDU3MFE1MDUgNTcwIDQ3NSA1NzJINDQ3VjMwMlE0NDcgMzEgNDQ1IDI1UTQzNiAwIDM5MyAwSDM2NEwzMTMgMVEyOTMgNyAyODYgMjhMMjg1IDMwMFY1NzJIMjU3UTIyNyA1NzAgMTUxIDU3MFExMzAgNTcwIDEwOSA1NzBUODQgNTY5UTc3IDU2OSA3MiA1NzBINjZRNDggNTc3IDQ0IDU4OFQ0MCA2MzFMNDEgNjYxUTQ3IDY4MCA2NyA2ODcnLFxuICAgIDB4MUQ1RTg6ICc5MiA2NjdRMTAxIDY5NCAxNDMgNjk0SDE3MkgyMDBRMjQyIDY5NCAyNTEgNjcxUTI1MyA2NjMgMjUzIDQzMFEyNTQgMTg5IDI1NSAxODVRMjYyIDEzNCAyODggMTA3VDM4NCA3OVE0OTggNzkgNTE2IDE2OFE1MjAgMTkxIDUyMSA0MzFRNTIxIDY2MyA1MjMgNjcxUTUzMiA2OTQgNTcyIDY5NEg1OTZINjE4UTYzOSA2OTQgNjQ4IDY5MlQ2NjUgNjc5UTY3MSA2NzIgNjcxIDY1M1E2NzIgNjMyIDY3MiA1NTVWNDMyUTY3MSAyMDAgNjcwIDE5MFE2NTIgNzkgNTgxIDI5VDM4MyAtMjJRMTM3IC0yMiA5OCAxNjZROTIgMTk1IDkyIDMwM1Y2NjcnLFxuICAgIDB4MUQ1RTk6ICcyNyA2NjdRMjcgNjgzIDM5IDY4OFQ3NSA2OTRIMTAxUTE1NSA2OTQgMTU5IDY5MlExODIgNjg3IDE5NCA2NjVRMjAyIDY1MiAyODMgNDE5VDM3NCAxNDJRMzc2IDE2NSA0NzMgNDQ1UTU1MiA2NjQgNTUzIDY2NlE1NjggNjk0IDYxOCA2OTRINjM5SDY1OFE2ODEgNjk0IDY5MyA2ODlUNzA1IDY2N1E3MDUgNjYwIDU5MiAzNDdRNDgxIDMyIDQ3NyAyOFE0NjYgNyA0NDEgMUgyOTJRMjY2IDcgMjU1IDI4UTI1MSAzMiAxNDAgMzQ3UTI3IDY2MCAyNyA2NjcnLFxuICAgIDB4MUQ1RUE6ICc5OTQgNjk0UTEwMTIgNjgzIDEwMTQgNjY4UTEwMTQgNjYxIDk3NyA1MTlUODk2IDIxN1Q4NDUgMjZRODMxIDAgNzgzIDBINzQ3SDcxMVE2ODUgMCA2NzIgNVQ2NDkgMjZRNjQ0IDM2IDU4MyAyNzJUNTE3IDU0OFE1MTYgNTUyIDUxNiA1NTFRNTAzIDQ3OSA0MzcgMjI3UTM4OSAzNyAzODMgMjZRMzY3IDAgMzIzIDBIMjg4SDI1NFEyMDcgMCAxOTMgMjZRMTkxIDMyIDEwOCAzNDZUMjQgNjY1UTI0IDY4NSA0NCA2OTNRNDcgNjk0IDk4IDY5NEgxMTVRMTUyIDY5NCAxNjggNjY4UTE3NCA2NTcgMjM1IDQxN1QyOTcgMTQ0UTI5NyAxMzQgMzAwIDE1M1EzMDcgMjA0IDM2MiA0MjFUNDI3IDY2OFE0NDEgNjk0IDQ4OCA2OTRINTIzUTU4NiA2OTQgNTk3IDY4OFE2MTIgNjgzIDYyMCA2NjFUNjUxIDU0OVE2NjQgNDk2IDY3MyA0NjJRNzQ0IDE5NCA3NTAgMTQ2VjE0MFE3NjcgMjIzIDgwMCAzNTRUODU3IDU3NlQ4ODMgNjY4UTg5NyA2OTQgOTM4IDY5NEg5NThIOTk0JyxcbiAgICAweDFENUVCOiAnNTIgMVEzNyAxMSAzNyAyM1EzNyAyNiAzOSAzMlEzOSAzNCAxNTggMjAyTDI3NSAzNjlRMjc1IDM3MCAyMjEgNDQxVDExMiA1ODZUNTUgNjYzUTUzIDY2OSA1MyA2NzJRNTMgNjg3IDY4IDY5M0g3MlE3NyA2OTMgODQgNjkzVDk5IDY5NFQxMTggNjk0VDEzOSA2OTRIMTc2UTIwMyA2OTQgMjEyIDY5MlQyMzAgNjgyUTIzMSA2ODEgMjM5IDY2OVQyNjUgNjM0VDI5NiA1OTFMMzU4IDUwNEw0MTggNTkxUTQ4MSA2ODIgNDg2IDY4NlE0OTEgNjkxIDQ5OSA2OTJRNTA1IDY5NCA1NjkgNjk0SDYzMlE2NTAgNjg1IDY1MCA2NzJRNjUwIDY2NyA2NDYgNjYwUTY0MyA2NTQgNTkyIDU4MlQ0OTEgNDQwVDQ0MSAzNjlUNTY2IDIwMVQ2OTMgMjlRNjk0IDI3IDY5NCAyM1E2OTQgMTEgNjc3IDBINjA3TDUzNyAxUTUyMyA2IDUxOSAxMFQ0MzcgMTMxUTQyMiAxNTMgNDExIDE3MFQzOTAgMjAwVDM3NSAyMjJUMzY1IDIzN1QzNTkgMjQ1TDM1NyAyNDdMMzQ4IDIzMlEzMzkgMjE4IDMxOSAxODhUMjgzIDEzMVEyMjIgMzcgMjExIDIyVDE4NiAxSDUyJyxcbiAgICAweDFENUVDOiAnNjM1IDY5NEg2NjhRNjg4IDY5NCA2OTggNjkwVDcwOCA2NzBRNzA4IDY2NCA3MDQgNjU4TDQ0NiAyNzhMNDQ1IDE1MlYyN1E0NDIgMjAgNDQwIDE3VDQzMyA5VDQxOSAxTDM2OCAwSDMzOVEzMTYgMCAzMDUgNVQyODggMjZRMjg2IDMxIDI4NiAxNTRWMjc4TDE1NyA0NjhRMTM1IDUwMCAxMDEgNTUwUTQzIDYzNSAzNCA2NTBUMjQgNjcxUTI0IDY4NiAzOSA2OTNRNDIgNjk0IDEwNSA2OTRIMTIySDEzMlExNjMgNjk0IDE4MCA2ODlUMjE0IDY2NlEyMjUgNjU0IDMzNiA0ODVRMzczIDQyNSAzNzMgNDIwTDM3NCA0MThRMzc1IDQxOSAzNzUgNDIxUTM3OCA0MzIgNDE4IDQ5M1Q0OTYgNjA5VDUzNiA2NjdRNTQzIDY3NiA1NTEgNjgxVDU3MiA2ODlUNTkxIDY5M1Q2MTUgNjk0VDYzNSA2OTQnLFxuICAgIDB4MUQ1RUQ6ICc0MTEgNTg0UTI0MyA1ODEgMTMxIDU4MVExMjIgNTgxIDExNiA1ODFUMTA2IDU4MlQxMDIgNTgyUTg0IDU4OSA4MCA2MDBUNzYgNjQwTDc3IDY2N1E4MyA2ODYgMTAzIDY5M1ExMDYgNjk0IDM0MyA2OTRRNTc5IDY5NCA1ODQgNjkyUTU5MiA2OTEgNTk5IDY4NFQ2MDkgNjY4UTYxMCA2NjUgNjEwIDY0NlE2MTAgNjE0IDYwOCA2MDhRNjA1IDYwMyA0MzQgMzYxTDI2MSAxMTZRMzQwIDExNyA0MDIgMTE4VDQ5MCAxMTlUNTMzIDEyMFQ1NjAgMTIwSDU3MlE2MDUgMTIwIDYxNCA5NVE2MTYgODkgNjE2IDYwVjQ2UTYxNiA5IDU5MCAyUTU4NSAwIDMzOSAwUTkyIDAgODcgMlE3OSAzIDcyIDEwVDYyIDI2UTYxIDI5IDYxIDQ5UTYxIDg0IDYzIDkwUTY1IDk0IDE1MiAyMTdUMzI1IDQ2MVQ0MTEgNTg0JyxcbiAgICAweDFENUVFOiAnMjU1IDM5NFEyMTggMzk0IDE4NiAzODNUMTM4IDM1OFQxMDkgMzMzVDk0IDMyMUg5MVE4OCAzMjEgODYgMzIyVDgzIDMyNVQ4MCAzMzFUNzkgMzM5VDc4IDM0OVQ3NyAzNjJUNzUgMzc3UTcyIDQxMCA3MiA0MjBRNzIgNDIzIDcyIDQyNVQ3MyA0MjlUNzQgNDMxVDc3IDQzM1Q4MCA0MzVUODUgNDM3UTE2NiA0NzUgMjYyIDQ3NVEzNjAgNDc1IDQxMyA0NDBRNDYyIDQwNiA0NzEgMzQxUTQ3MiAzMzIgNDcyIDE4MVE0NzIgMTU1IDQ3MiAxMTlUNDczIDczUTQ3MyAyMCA0NjIgMTBUMzk4IDBIMzgwUTM0OSAwIDMzNyA4VDMyNCA0OFY2NVEyOTggMzAgMjU3IDEwVDE3MiAtMTFRMTA5IC0xMSA3MCAzN1QzMSAxNDVRMzEgMjc2IDMwNyAyODlIMzIxVjMwOVEzMjEgMzM3IDMxOCAzNTJUMzAwIDM4MVQyNTUgMzk0Wk0xNzYgMTQ2UTE3NiAxMTYgMTkwIDk3VDIzMSA3N1EyNTEgNzcgMjY2IDg1UTMyMiAxMTAgMzIyIDE4NVEzMjIgMTg5IDMyMiAxOTJUMzIyIDE5OEwzMjEgMjAxVjIzNEwzMDggMjMyUTE3NiAyMjAgMTc2IDE0NicsXG4gICAgMHgxRDVFRjogJzU0IDY2N1E2MyA2OTQgMTAyIDY5NEgxMjdIMTUxUTE5MCA2OTQgMTk5IDY3MVEyMDEgNjYzIDIwMSA1NDRMMjAyIDQyMkwyMTEgNDI4UTI3MCA0NjggMzU1IDQ2OFE1MjMgNDY4IDUyMyAyMzFRNTIzIC0xMCAzMjEgLTEwUTI4NiAtMTAgMjYxIC0yVDIwNCAzM1ExOTcgMTEgMTg3IDZUMTQyIDBIMTI2TDgxIDFRNjEgNyA1NCAyOFY2NjdaTTM3MiAyMzBRMzcyIDMxNyAzNTUgMzQ5VDI4MCAzODJRMjUxIDM4MiAyMDQgMzU2VjEwN1EyMzUgNzYgMjc0IDc2UTMwMSA3NiAzMjAgODRUMzQ5IDEwNVQzNjQgMTM5VDM3MSAxODBUMzcyIDIzMCcsXG4gICAgMHgxRDVGMDogJzE4OCAyMzNRMTg4IDE5OSAxOTAgMTc3VDIwMCAxMzFUMjI1IDk1VDI3MSA4M0gyODFRMzU2IDgzIDQyMSAxMzBRNDMzIDEzOCA0MzQgMTM5UTQ0NiAxNDEgNDQ4IDEzMVE0NDkgMTI4IDQ1MyA4NFQ0NTcgMzZRNDU1IDMwIDQzMiAyMFQzNjQgLTFUMjczIC0xMVEzNyAtMTEgMzcgMjMyUTM3IDQ1NiAyNDQgNDc0UTI0NiA0NzQgMjU3IDQ3NFQyNzYgNDc1UTM0OSA0NzUgNDAwIDQ1NVE0NDMgNDM2IDQ0OCA0MzFMNDUxIDQyNVE0NTEgNDE5IDQ0MyAzNzdRNDQyIDM3MiA0NDEgMzY2VDQzOSAzNTZUNDM4IDM0OFQ0MzYgMzQwVDQzNSAzMzRUNDMzIDMzMFQ0MzEgMzI3VDQyOSAzMjVUNDI2IDMyNFE0MjAgMzI0IDQwNiAzMzZRMzc2IDM2MiAzNTAgMzcyVDI4MSAzODJRMjU0IDM4MiAyMzYgMzczVDIwOCAzNTJUMTk0IDMxN1QxODkgMjc4VDE4OCAyMzMnLFxuICAgIDB4MUQ1RjE6ICcyMjUgLTExUTE5MiAtMTEgMTY0IC0zVDEwNCAyOVQ1NSAxMDJUMzcgMjI3UTM3IDMyMSA2MyAzNzZRMTExIDQ2OSAyMjMgNDY5UTI5MiA0NjkgMzQ5IDQzM0wzNTkgNDI2VjU0NlEzNTkgNTY0IDM1OSA1ODlUMzU4IDYyM1EzNTggNjc1IDM2OSA2ODRUNDMzIDY5NEg0NTFRNDk3IDY5NCA1MDUgNjY5UTUwNyA2NjMgNTA3IDM0N1Q1MDUgMjVRNTAwIDkgNDg3IDVUNDUwIDBINDMySDQxM1EzNTYgMCAzNTYgMzZWNDBRMjk4IC0xMSAyMjUgLTExWk0zNTYgMzU5UTMyNiAzODIgMjg2IDM4MlEyMzkgMzgyIDIxNSAzNThRMTg5IDMzMCAxODkgMjU2VjIyOVYyMDNWMTk1UTE4OSAxMDIgMjMxIDg2UTI1MSA3NiAyNzQgNzZRMzE4IDc2IDM1NiAxMTRWMzU5JyxcbiAgICAweDFENUYyOiAnMzAgMjMxUTMwIDMwMSA1MSAzNTFUMTA3IDQyNlQxODEgNDYzVDI2MiA0NzRIMjY4UTI5MyA0NzQgMzEyIDQ3MlQzNjYgNDU5VDQyMiA0MjdUNDYyIDM2M1Q0ODAgMjYwUTQ4MCAyMzAgNDY2IDIyMlQ0MDUgMjEzUTM5NSAyMTMgMzY0IDIxM1QzMTEgMjE0SDE3M1YyMTFRMTczIDE4MyAxODMgMTQ4VDIxNiA5NlEyNDQgNzYgMjg3IDc2UTMxOSA3NiAzNTAgODVUMzk5IDEwNFQ0MzMgMTI1VDQ1MSAxMzZRNDYzIDEzOCA0NjUgMTI4UTQ2NiAxMjUgNDY5IDg0VDQ3MyAzOVE0NzEgMjkgNDIzIDEzVDMzMCAtOVEzMjEgLTEwIDI4NiAtMTBRMjEzIC0xMCAxNjEgMTFUODEgNjhUNDIgMTQ0VDMwIDIzMVpNMzUzIDI5MlEzNTAgMzI0IDM0MiAzNDRUMzIwIDM3M1QyOTQgMzg0VDI2NCAzODdRMTkxIDM4NyAxNzUgMjg2VjI4MkgzNTNWMjkyJyxcbiAgICAweDFENUYzOiAnNjcgNDU4SDc4VjUwMlY1MDlRNzggNTM4IDc5IDU1NlQ5MCA2MDRUMTE3IDY1MVQxNjkgNjg1VDI1MyA3MDRRMjU0IDcwNCAyNTggNzA0VDI2NSA3MDVUMjc1IDcwNVQyODcgNzA0UTM2NCA3MDQgMzgxIDY4N1Y2MzhWNjA3UTM4MSA1OTEgMzc4IDU4NVQzNjYgNTc5UTM2MiA1ODEgMzUxIDU5MVQzMjMgNjEwVDI4MiA2MThRMjM4IDYxOCAyMjYgNTg3UTIyNCA1ODEgMjIzIDUxOVY0NThIMjUzUTI4OCA0NTggMjk4IDQ1M1EzMTUgNDQxIDMxNSA0MTVRMzE1IDM5OSAzMTIgMzkwVDI5OSAzNzdUMjgyIDM3MlQyNTkgMzcxSDI1NUgyMjZWMjAxUTIyNiAzMSAyMjQgMjVRMjE1IDAgMTc0IDBIMTUwTDEwNiAxUTg2IDcgNzkgMjhMNzggMTk5VjM3MUg2OVEyOSAzNzEgMjkgNDEyUTI5IDQyNSAzMCA0MzFUNDAgNDQ3VDY3IDQ1OCcsXG4gICAgMHgxRDVGNDogJzYzIDEwOFE2MyAxNDIgODMgMTc2TDc2IDE4NFEzNSAyMjcgMzUgMzAwUTM1IDQ2OSAyNDMgNDY5UTMzMCA0NjkgMzg1IDQzN0wzOTcgNDQzUTQ1MSA0NjkgNTA4IDQ2OVE1MTUgNDY4IDUxNyA0NjZUNTIyIDQ1NlQ1MjggNDI1UTUzNCAzOTIgNTM0IDM4NlE1MzIgMzc5IDUyMyAzNzdRNTIwIDM3NyA1MDkgMzgxVDQ3NyAzOTBUNDMxIDM5OEw0MjUgMzk5UTQ1MyAzNjIgNDUzIDI5N1E0NTMgMjY4IDQ0NSAyNDJUNDE3IDE4OVQzNTEgMTQ2VDI0MiAxMzBRMTY5IDEzMCAxMTkgMTUzUTExNyAxNDEgMTE3IDEzNlExMTcgOTUgMTU1IDgzUTE2MSA4MSAyNTIgODFRMzU0IDgwIDM2MiA3OVE0MzcgNzEgNDc1IDQ4VDUyNiAtMjRRNTMyIC00MiA1MzIgLTY1UTUzMiAtMTE2IDQ4OSAtMTU2VDM0MSAtMjA0UTMyMyAtMjA2IDI3NCAtMjA2SDI1NlEzOSAtMjA2IDE4IC04NFExNyAtNzkgMTcgLTY4UTE3IDE1IDgyIDQyTDc2IDUzUTYzIDc5IDYzIDEwOFpNMzEwIDMwMFEzMTAgMzU5IDI5OCAzNzdUMjM4IDM5NlEyMTcgMzk2IDIwNCAzOTBUMTg2IDM2OFQxNzkgMzM5VDE3OCAzMDBRMTc4IDI0NSAxODkgMjI0VDI0NCAyMDNUMjk5IDIyNFQzMTAgMzAwWk00MTQgLTY2UTQxNCAtNTUgNDExIC00N1Q0MDEgLTMyVDM4NyAtMjFUMzY4IC0xNFQzNDYgLTEwVDMyMiAtN1QyOTcgLTZUMjcxIC02VDI0NiAtNkgxOTNRMTYzIC02IDE1NCAtMTBUMTQwIC0zMFExMzUgLTQ1IDEzNSAtNjJRMTM1IC0xMzQgMjc0IC0xMzRRNDE0IC0xMzQgNDE0IC02NicsXG4gICAgMHgxRDVGNTogJzUzIDY2N1E2MiA2OTQgMTAxIDY5NEgxMjZIMTQ4UTE5MSA2OTQgMTk4IDY2OVEyMDAgNjYzIDIwMCA1MjZWMzkwUTI2MyA0NjkgMzYxIDQ2OVEzOTAgNDY5IDQxMiA0NjVUNDU2IDQ0OVQ0OTEgNDEzVDUwNyAzNTFRNTA4IDM0MiA1MDggMTg1UTUwOCAzMSA1MDYgMjVRNDk4IDAgNDUwIDBINDMySDQxM1EzNjggMCAzNTkgMjNRMzU3IDMxIDM1NyAxODZRMzU2IDM0NSAzNTUgMzUwUTM0OSAzNjkgMzM2IDM3NlEzMjQgMzgxIDMwMSAzODFIMjk4UTI2OSAzODEgMjQyIDM2MlEyMTcgMzQyIDIxMCAzMTZUMjAyIDIzOVEyMDIgMjI5IDIwMiAyMDJUMjAzIDE1N1Y4MlEyMDMgMjQgMTk1IDEyVDE0NiAwSDEyNUw4MCAxUTYwIDcgNTMgMjhWNjY3JyxcbiAgICAweDFENUY2OiAnNzIgNTc0UTU1IDU4MyA1MSA1OTFUNDYgNjE5VjYzNkw0NyA2NzBMNDggNjczUTUwIDY3NiA1MiA2NzhUNTYgNjg0VDYzIDY5MFQ3MyA2OTRIODFRODkgNjk0IDEwMiA2OTRUMTI5IDY5NUgxODFRMTkzIDY4NyAxOTYgNjg1VDIwMyA2NzZUMjA3IDY2MVQyMDggNjM0UTIwOCA2MDMgMjA0IDU5M1QxODEgNTc0SDcyWk01NCA0MzFRNjMgNDU4IDEwMiA0NThIMTI3SDE0OVExOTIgNDU4IDE5OSA0MzNRMjAxIDQyNyAyMDEgMjI5VDE5OSAyNVExOTAgMCAxNDkgMEgxMjVMODEgMVE2MSA3IDU0IDI4VjQzMScsXG4gICAgMHgxRDVGNzogJzcwIDYzNFY2NDhRNzAgNjg2IDk2IDY5M1ExMDAgNjk1IDE1MSA2OTVIMTc2UTIwMSA2OTUgMjEzIDY5MVQyMzAgNjcwUTIzMiA2NjUgMjMyIDYzNFY2MjBRMjMyIDU4MiAyMDYgNTc1UTIwMiA1NzMgMTUxIDU3M0gxMjZRMTAxIDU3MyA4OSA1NzdUNzIgNTk4UTcwIDYwMyA3MCA2MzRaTS00MSAtODRRLTEgLTEwNSAyOCAtMTA1UTY3IC0xMDUgNzggLTg1UTgzIC03NyA4MyAtNDhUODQgMTgwUTg0IDQyNyA4NiA0MzNROTMgNDU4IDEzNiA0NThIMTU4SDE4MFEyMDEgNDU4IDIwOSA0NTZUMjI1IDQ0M1EyMzAgNDM2IDIzMSA0MThRMjMyIDM5NyAyMzIgMzEzVjE4M1YxMjRWNDBRMjMyIC01NSAyMjggLTg3VDIwMyAtMTQ3UTE2NiAtMjA1IDc4IC0yMDVRMzEgLTIwNSAtMjAgLTE4OVQtNzEgLTE1OVEtNzEgLTE1NiAtNjIgLTEyNFQtNTIgLTg5US00OSAtODQgLTQxIC04NCcsXG4gICAgMHgxRDVGODogJzQ5NiAyM1E0OTYgOSA0ODcgNVQ0NTcgMEg0MjdIMzk4UTM2NyAwIDM1NCAxMVEzNTIgMTIgMjg4IDk5TDIyNiAxODNMMTkxIDE1MFY5MFY1NFExOTEgMzAgMTg2IDE4VDE2NSAyUTE2MCAwIDEyNCAwTDkwIDFRNzAgNyA2MyAyOFY2NjdRNzIgNjk0IDEwOCA2OTRIMTI4SDE0NlExODMgNjk0IDE5MiA2NzFRMTk0IDY2MyAxOTQgNDk2TDE5NSAzMjVMMjU0IDM4M1EyNjYgMzk0IDI4MSA0MDlUMzAxIDQyOVQzMTYgNDQxVDMyOSA0NTBUMzQxIDQ1NVQzNTcgNDU4VDM3NiA0NThINDA5SDQzNlE0NjEgNDU4IDQ3MCA0NTRUNDgwIDQzN1E0ODAgNDMwIDQ3NyA0MjdUNDQ1IDM5NVE0MTcgMzY4IDM5NiAzNDdMMzE5IDI3MVEzMTkgMjcwIDM1OCAyMTdUNDQyIDEwM1Q0OTQgMzJRNDk2IDMwIDQ5NiAyMycsXG4gICAgMHgxRDVGOTogJzU0IDY2N1E2MyA2OTQgMTAyIDY5NEgxMjdIMTQ5UTE5MiA2OTQgMTk5IDY2OVEyMDEgNjYzIDIwMSAzNDdUMTk5IDI1UTE5MCAwIDE0OSAwSDEyNUw4MSAxUTYxIDcgNTQgMjhWNjY3JyxcbiAgICAweDFENUZBOiAnMTk3IDM4NlEyNTYgNDY4IDM2NiA0NjhRNDA0IDQ2OCA0MzAgNDYxVDQ3MSA0MzhUNDkxIDQxM1Q1MDMgMzg1UTU2MyA0NjkgNjY2IDQ2OVE3MzEgNDY5IDc2OSA0NDZUODE0IDM1MFE4MTUgMzQzIDgxNSAxODVRODE1IDMxIDgxMyAyNVE4MDggOSA3OTYgNVQ3NTggMEg3MzdMNjkyIDFRNjcyIDcgNjY1IDI4TDY2NCAxODZWMjA2VjI5MFE2NjQgMzQ5IDY1NSAzNjVUNjEwIDM4MVE1ODEgMzgxIDU2MCAzNzBUNTI5IDM0MVQ1MTUgMzExVDUxMCAyOTFRNTA5IDI4NiA1MDkgMTU3VjgyUTUwOSAyNCA1MDEgMTJUNDUyIDBINDMxTDM4NiAxUTM2NiA3IDM1OSAyOEwzNTggMTg2VjIwNlYyOTBRMzU4IDM0OSAzNDkgMzY1VDMwNCAzODFRMjc1IDM4MSAyNTQgMzcwVDIyMyAzNDFUMjA5IDMxMVQyMDQgMjkxUTIwMyAyODYgMjAzIDE1N1Y4MlEyMDMgMjQgMTk1IDEyVDE0NiAwSDEyNUw4MCAxUTYwIDcgNTMgMjhWNDM3UTU4IDQ1MyA4MCA0NjRIMTIySDE0MlExNjcgNDY0IDE3OCA0NjBUMTk1IDQzOVExOTcgNDM0IDE5NyA0MDlWMzg2JyxcbiAgICAweDFENUZCOiAnMTk3IDM4NlEyNjQgNDY4IDM1MCA0NjhRMzc1IDQ2OCAzOTAgNDY3VDQyOSA0NjBUNDY2IDQ0M1Q0OTIgNDA4VDUwNyAzNTFRNTA4IDM0MiA1MDggMTg1UTUwOCAzMSA1MDYgMjVRNDk4IDAgNDUwIDBINDMySDQxM1EzNjggMCAzNTkgMjNRMzU3IDMxIDM1NyAxODZRMzU2IDM0NSAzNTUgMzUwUTM0OSAzNjkgMzM2IDM3NlEzMjQgMzgxIDMwMSAzODFIMjk4UTI2OSAzODEgMjQyIDM2MlEyMTcgMzQyIDIxMCAzMTZUMjAyIDIzOVEyMDIgMjI5IDIwMiAyMDJUMjAzIDE1N1Y4MlEyMDMgMjQgMTk1IDEyVDE0NiAwSDEyNUw4MCAxUTYwIDcgNTMgMjhWNDM3UTU4IDQ1MyA4MCA0NjRIMTIySDE0MlExNjcgNDY0IDE3OCA0NjBUMTk1IDQzOVExOTcgNDM0IDE5NyA0MDlWMzg2JyxcbiAgICAweDFENUZDOiAnMjc0IC0xMVEzMiAtMTEgMzIgMjI1UTMyIDM0NiA4NSA0MDZUMjQ5IDQ3NEgyNjZIMjcxUTMwMiA0NzQgMzI1IDQ3MVQzODUgNDU4VDQ1MSA0MTlUNDk4IDM0NlE1MTggMzAwIDUxOCAyMjVRNTE4IC0xMSAyNzQgLTExWk0zNjcgMjMzUTM2NyAzMjIgMzUwIDM1NFQyNzAgMzg3UTI0MCAzODcgMjIyIDM3N1QxOTUgMzQ0VDE4NCAyOThUMTgyIDIzM1ExODIgMTUxIDE5OCAxMTdUMjc1IDgzSDI4MlEzMTggODMgMzM5IDEwNFEzNTUgMTE5IDM2MSAxNDZUMzY3IDIzMycsXG4gICAgMHgxRDVGRDogJzEyNSA0NThIMTM5UTE3NCA0NTggMTg1IDQ1MlQyMDIgNDIwTDIxMSA0MjZRMjQ1IDQ0OCAyODggNDU4VDM1NCA0NjlRMzU2IDQ2OSAzNjEgNDY5VDM2OSA0NjhRNDQzIDQ2OCA0ODEgNDEyUTUyMyAzNTUgNTIzIDIyM1E1MjMgMTY0IDUwOSAxMjBUNDczIDUxVDQyMyAxMlQzNzEgLTdUMzIzIC0xMVEyNjAgLTExIDIwNCAzM1YtNjVRMjA0IC04MCAyMDQgLTEwMlQyMDUgLTEzMVEyMDUgLTE2MiAyMDAgLTE3NVQxNzggLTE5MlExNzMgLTE5NCAxMjYgLTE5NEw4MSAtMTkzUTYxIC0xODcgNTQgLTE2NlY0MzFRNTggNDQ3IDgxIDQ1OEgxMjVaTTM3MiAyMzBRMzcyIDM3NiAyODIgMzc2UTI0NyAzNzYgMjA0IDM1MlYxMDdMMjA4IDEwM1EyMTMgOTkgMjE4IDk1VDIzMiA4N1QyNTEgNzlUMjc0IDc2UTMyMyA3NiAzNDkgMTE2UTM3MiAxNTMgMzcyIDIzMCcsXG4gICAgMHgxRDVGRTogJzIyNiAtMTFRMzcgLTExIDM3IDIzNlEzNyAyOTQgNTEgMzM4VDg2IDQwN1QxMzUgNDQ1VDE4NiA0NjRUMjMzIDQ2OUgyMzVRMzAwIDQ2OSAzNDkgNDIyTDM1OSA0MTNWNDI1UTM1OSA0NTIgMzc2IDQ2NFEzODQgNDY5IDQzMyA0NjlINDU1UTQ5OCA0NjkgNTA1IDQ0NFE1MDcgNDM4IDUwNyAxMzdRNTA3IC0xNjMgNTA1IC0xNjlRNTAwIC0xODUgNDg3IC0xODlUNDUwIC0xOTRINDMySDQxM1EzNjcgLTE5NCAzNTggLTE3MVEzNTYgLTE2MyAzNTYgLTYzVjQwTDM0OCAzM1EyOTYgLTExIDIzMSAtMTFIMjI2Wk0yODEgMzc1UTE4OCAzNzUgMTg4IDIyOFExODggNzcgMjc1IDc3UTMyMiA3NyAzNTkgMTIwVjMyOFEzMzggMzU3IDMyNCAzNjZUMjgxIDM3NScsXG4gICAgMHgxRDVGRjogJzU0IDQzN1E1OCA0NTMgODEgNDY0SDEyMkgxNDdRMTg2IDQ2NCAxOTQgNDM5UTE5NiA0MzQgMTk2IDQwNVYzNzdMMjAzIDM4N1EyNDUgNDU2IDMyNCA0NjhRMzI1IDQ2OCAzMzEgNDY4VDM0MCA0NjlRMzQ3IDQ2OSAzNTYgNDYyVjM2MFEzNTAgMzU1IDM0NiAzNTRUMzM5IDM1M1QzMjYgMzUzVDMwMCAzNDdRMjYwIDMzNyAyMzQgMzExVDIwMiAyNTJRMjAxIDI0NyAyMDEgMTM4UTIwMSAxMjIgMjAxIDk4VDIwMiA2NlEyMDIgMzMgMTk3IDIwVDE3NSAyUTE3MCAwIDEyNSAwTDgxIDFRNjEgNyA1NCAyOFY0MzcnLFxuICAgIDB4MUQ2MDA6ICczNyAzMjhRMzcgMzkyIDc1IDQzM1QyMDMgNDc0UTI1NCA0NzQgMjY1IDQ3M1EzMTkgNDY1IDM3MCA0NDJRMzc4IDQzOSAzODAgNDMyUTM4MCA0MjYgMzcyIDM4NFEzNjQgMzM2IDM1OSAzMzNRMzU4IDMzMSAzNTUgMzMxUTM0OCAzMzEgMzM3IDM0MVEyODIgMzg4IDIxNiAzODhIMjA4UTE5MCAzODggMTgwIDM4N1QxNjEgMzc3VDE1MSAzNTFRMTUxIDMzMyAxNjQgMzIzVDIyNCAzMDZMMjY3IDI5N1EzMTQgMjg1IDM1NSAyNDZUMzk2IDE0NFEzOTYgMTcgMjgyIC01UTI2MCAtMTAgMjE4IC0xMFExNzAgLTEwIDEyNCAyVDU1IDI2VDMwIDQ0UTMwIDQ4IDM5IDk5VDQ5IDE1M1E1MiAxNTkgNjAgMTU5UTY2IDE1OSA3MCAxNTNRMTAwIDEyMCAxMzMgMTAxVDIxOCA4MlEyMzEgODIgMjM4IDgzVDI1OCA4N1QyNzcgMTAxVDI4MyAxMjZRMjgzIDE0OSAyNjAgMTYwVDIwMCAxNzZUMTUzIDE4NlExMDkgMjAxIDczIDIzNlQzNyAzMjgnLFxuICAgIDB4MUQ2MDE6ICcyMjUgMjY3UTIyNSAyMDIgMjI2IDE2OVQyMzIgMTE1VDI0NCA4OFQyNjUgODJRMjk1IDg0IDMxOCAxMDBUMzQ1IDExNlEzNTIgMTE2IDM1NCAxMTBUMzY0IDc3UTM3MyA0NiAzNzMgNDNRMzczIDI4IDMxMiA5VDE5MCAtMTBRMTYwIC0xMCAxMzkgMVQxMDcgMjlUODkgNzdUODIgMTM2VDgwIDIxMFYyNThWMzcxSDY2SDU5UTM5IDM3MSAyNyAzODZRMjAgMzk0IDIwIDQxN1EyMSA0MzIgMjMgNDM3UTM1IDQ1OCA2MCA0NThINjVIODNWNTEwTDg0IDU2MlE5MyA1ODkgMTMxIDU4OUgxNTRIMTc0UTIxNiA1ODkgMjIzIDU2NFEyMjUgNTU4IDIyNSA1MDhWNDU4SDI3NFEzMzAgNDU4IDMzOCA0NTNRMzU1IDQ0MSAzNTUgNDE1UTM1NSAzODggMzM4IDM3NlEzMzAgMzcxIDI3NCAzNzFIMjI1VjI2NycsXG4gICAgMHgxRDYwMjogJzUzIDQzMVE2MiA0NTkgMTAwIDQ1OVExMDUgNDU5IDExNCA0NTlUMTI3IDQ1OEgxNTJRMTkyIDQ1OCAyMDEgNDM1UTIwMyA0MjcgMjAzIDI2MlEyMDQgODYgMjA4IDc3UTIwOSA3NCAyMTYgNzFRMjI3IDY2IDI1OCA2NkgyNjRRMzM0IDY2IDM1NCAxNDBMMzU2IDE1MEwzNTcgMjkwUTM1NyA0MjcgMzU5IDQzNVEzNjUgNDQ5IDM3NyA0NTNUNDEyIDQ1OEg0MzJINDUwUTQ5OCA0NTggNTA2IDQzM1E1MDggNDI3IDUwOCAyMjlUNTA2IDI1UTQ5OCAwIDQ1MSAwSDQzNEg0MThRMzg2IDAgMzc0IDdUMzYwIDQzVjU4TDM1MiA0OVEyOTggLTExIDE5OSAtMTFRMTM1IC05IDEwMSAxMVQ1NiA4MFE1MiAxMDAgNTIgMjczTDUzIDQzMScsXG4gICAgMHgxRDYwMzogJzI2IDQyOVQyNiA0MzVUMzIgNDQ4VDQ0IDQ1NlE0OCA0NTggODUgNDU4SDk5UTE0NSA0NTggMTYxIDQzMVExNjIgNDI5IDIwNyAyODVMMjUxIDE0NUwyOTQgMjg0UTMzMyA0MTAgMzQxIDQzMFEzNTEgNDUxIDM3NCA0NTZRMzc5IDQ1OCA0MjAgNDU4SDQzMFE0NTAgNDU4IDQ1NyA0NTZUNDcxIDQ0M1E0NzMgNDM3IDQ3MyA0MzVRNDczIDQyNiA0NDMgMzI1VDM4MSAxMjZMMzUwIDI4UTMzOSA3IDMxNiAyUTMxMiAwIDI1MCAwUTE4NyAwIDE4MyAyUTE2MCA3IDE0OSAyOEwxMzYgNjhRMTI0IDEwOSAxMDYgMTY2VDcwIDI4M1QzOSAzODUnLFxuICAgIDB4MUQ2MDQ6ICc2OTkgNDU4UTcxNyA0NDcgNzE5IDQzMlE3MTkgNDI2IDY2NiAyMzBUNjEwIDI3UTYwMiAxMCA1ODggNVQ1NDggMEg1MTJINDgyUTQzMSAwIDQyMCAxN1QzODQgMTM1UTM1NiAyNDEgMzUyIDI5OFYzMDhMMzUxIDI5NVEzNDggMjUxIDMyMiAxNDVUMjkwIDI4UTI3OSAwIDIzMyAwSDIxMkgxOTFRMTQ2IDAgMTMzIDI3UTEzMCAzMyA3NyAyMjlUMjQgNDMwUTI0IDQ0OSA0NCA0NTdRNDcgNDU4IDc5IDQ1OFExMjIgNDU4IDEyNiA0NTZRMTU0IDQ1MCAxNjMgNDE5TDIzMyAxNTNRMjQxIDE4NyAyNzIgMzA0VDMwNyA0MzFRMzE4IDQ1OCAzNjggNDU4UTM5NCA0NTggMzk4IDQ1NlE0MjEgNDUxIDQzMCA0MzFRNDM0IDQyMyA1MDkgMTQ3TDU0NyAyODZRNTgyIDQxNiA1ODggNDI5UTYwMCA0NTQgNjI0IDQ1N1E2MzIgNDU4IDY0NyA0NThINjYzSDY5OScsXG4gICAgMHgxRDYwNTogJzkyIDBRODcgMCA3NyAwVDYyIC0xUTI0IC0xIDI0IDIyUTI0IDI5IDMzIDQxVDEwNiAxMzZRMTg1IDIzNyAxODQgMjM4UTE4NCAyMzkgMTQ3IDI4NFQ3MyAzNzZUMzMgNDI3UTMxIDQzMCAzMSA0MzZRMzEgNDUxIDQ1IDQ1N1E0OCA0NTggOTYgNDU4SDEyMlExNTIgNDU4IDE2MyA0NTBUMjA4IDM5NEwyNDcgMzQ1TDI4MiAzOTRRMjg4IDQwMyAyOTcgNDE2VDMwOSA0MzRUMzE5IDQ0NFQzMjggNDUyVDMzOCA0NTVUMzUyIDQ1OFQzNzIgNDU4SDM5M0g0NDBRNDU3IDQ0OSA0NTcgNDM1UTQ1NyA0MjggNDUwIDQxOVQzNzkgMzI4UTMwOCAyMzkgMzA4IDIzN0wzODkgMTM3UTQwOSAxMTIgNDM2IDc5UTQ3NSAzMSA0NzUgMjNRNDc1IC0xIDQzNiAtMVE0MzIgLTEgNDIyIC0xVDQwNyAwUTM2MCAwIDM1MiAzUTM0MyA2IDMzNiAxNlQyOTEgODNMMjQ3IDE1MUwyNDUgMTQ4UTI0MyAxNDUgMjM5IDEzOVQyMjkgMTI0VDIxOCAxMDZUMjA0IDg0UTE2NyAyNCAxNjAgMTVUMTQxIDFMOTIgMCcsXG4gICAgMHgxRDYwNjogJzQ1NCA0NThRNDczIDQ0NiA0NzMgNDMwUTQ3MyA0MjYgMzk0IDE4NEwzMTEgLTY4UTI5MSAtMTE5IDI0NSAtMTYyVDEyMyAtMjA1UTUxIC0yMDUgNDYgLTE5MFE0NCAtMTg3IDQwIC0xNDJUMzYgLTkyUTM2IC05MCAzNiAtODhMMzcgLTg3UTQxIC04MCA0NiAtODBRNDggLTgwIDczIC05MlQxMjYgLTEwNVExNDYgLTEwNSAxNjEgLTk4VDE4NSAtNzZUMTk3IC01M1QyMDYgLTI4TDIxNSAwTDEyMiAyMTJRMjkgNDI3IDI5IDQzNVEyOSA0NDggNDYgNDU3UTQ5IDQ1OCA5MSA0NThROTMgNDU4IDEwNiA0NThUMTI1IDQ1N1QxNDAgNDU0VDE1NyA0NDZUMTcwIDQzMVExODMgNDEwIDIyNCAzMDVUMjY2IDE1OFEyNjYgMTUyIDI2NiAxNTFRMjY3IDE1MSAyNjggMTYzUTI3MSAyMDYgMzAyIDMxMFQzNDIgNDMyUTM1NCA0NTggMzk4IDQ1OEg0MThINDU0JyxcbiAgICAweDFENjA3OiAnMjY4IDM3NlEyNTAgMzc2IDE4MCAzNzVUOTIgMzc0UTY5IDM3NCA2MyAzODBRNDYgMzkwIDQ2IDQxOVE0NiA0MjggNDkgNDM3UTU3IDQ1MSA3MyA0NTdRNzYgNDU4IDI0MiA0NThUNDEzIDQ1NlE0MjAgNDU1IDQyNyA0NDhRNDM5IDQzOCA0MzkgNDEzUTQzOSAzOTIgNDMzIDM4NVE0MzIgMzgzIDMxOCAyMzZUMjA0IDg4UTIzNSA4OCAzMDYgODlUMzk1IDkwSDM5OVE0MDggOTAgNDE0IDg5VDQyNyA4NFQ0MzggNzBUNDQyIDQ1UTQ0MiA5IDQxNiAyUTQxMSAwIDIzNiAwSDEzNlE3MyAwIDYyIDFUNDEgMTJRMzEgMjMgMzEgNDdRMzEgNjggMzYgNzdRMzcgNzggNTEgOTdUOTYgMTU1VDE1MyAyMjhMMjY4IDM3NicsXG4gICAgMHgxRDYwODogJzI4IDBMNDI5IDY5NEg1MzNMNTg1IDM1MFE1OTYgMjc1IDYxMCAxODJUNjMyIDQ2TDYzOCAzVjBINTMwTDUyOCAxOFE1MjcgMjUgNTE1IDEwM1Q1MDMgMTgzSDIyM0wxMzUgMjlMMTE4IDFMNzMgMEgyOFpNNDkyIDI1NFE0OTIgMjU2IDQ3MyAzOThUNDU0IDU4OVY2MTBRNDMzIDU1MiAyOTAgMzAxTDI2NCAyNTVMMzc4IDI1NEg0OTInLFxuICAgIDB4MUQ2MDk6ICc1MDEgMzYzUTU1NyAzNTUgNjA1IDMxNlQ2NTMgMjIyUTY1MyAxNDggNTg2IDg1VDQwMyAyUTM5NCAxIDI0MCAwUTkwIDAgOTAgMUwxMDAgNDZRMTA5IDkwIDEyOCAxNzdUMTY0IDM0OEwyMzggNjk0SDM3NVE1MTggNjkzIDU0NiA2ODhRNjE0IDY3NCA2NTUgNjM1VDY5NiA1NDRRNjk2IDQ5MCA2NDggNDQxVDUxNiAzNjhMNTAxIDM2M1pNNjAxIDUzMFE2MDEgNTY4IDU2NiA1OTBUNDc5IDYyMVE0NzIgNjIyIDM5NCA2MjNIMzIwTDI5NyA1MTNRMjkyIDQ4OSAyODYgNDU5VDI3NiA0MTVMMjczIDQwMVYzOTlIMzM5SDM3MlE1MDQgMzk5IDU3MSA0NjZRNjAxIDQ5OCA2MDEgNTMwWk0yNTcgMzIyUTI1NiAzMjAgMjMwIDE5N1QyMDMgNzNRMjAzIDcxIDI4OSA3MVEzNzkgNzIgMzg3IDczUTQ1OSA4NCA1MDcgMTIyVDU1NiAyMTBRNTU2IDI1NSA1MTkgMjgzVDQyOCAzMjBRNDE1IDMyMiAzMzYgMzIzUTI1NyAzMjMgMjU3IDMyMicsXG4gICAgMHgxRDYwQTogJzEyNCAyNjZRMTI0IDM3MiAxNzkgNDczVDMzMyA2MzlUNTQ0IDcwNVE1OTIgNzA1IDYzNSA2OTdUNjk4IDY3OUw3MTggNjcwUTcxOSA2NjkgNzAxIDYyMVQ2ODEgNTcyTDY3NiA1NzZRNjcwIDU4MCA2NjEgNTg2VDY0MSA1OThUNjE0IDYxMVQ1ODMgNjIwUTU1OCA2MjUgNTI2IDYyNVE0MDYgNjI1IDMxOCA1MTZUMjMwIDI3NlEyMzAgMjM4IDIzNiAyMTJRMjUxIDE0OCAyOTQgMTA4VDQxMiA2OFE0NjkgNjggNTA4IDgwVDU5OCAxMjNRNjA4IDEyOSA2MDggMTI4UTYwNiAxMDkgNjAzIDg3TDU5OCA0NUw1NzMgMzNRNTIxIDcgNDg2IC0xVDM5NCAtMTBRMzU4IC0xMCAzNDYgLThRMjYwIDUgMjAyIDYyUTEyNCAxNDUgMTI0IDI2NicsXG4gICAgMHgxRDYwQjogJzE2MiAzNDhMMjM2IDY5NEgzODVRNTM1IDY5MyA1NDMgNjkyUTYwMCA2ODIgNjQxIDY1NFQ3MDUgNTg2VDczNyA1MDZUNzQ3IDQyNVE3NDcgMjk2IDY3MiAxODdRNjI1IDExNCA1NDggNjJUMzg0IDFRMzc2IDAgMjYyIDBRODggMCA4OCAxTDk4IDQ2UTEwNyA5MCAxMjYgMTc3VDE2MiAzNDhaTTYyMiA1MzNRNTc1IDYyNCA0NDMgNjI0UTQzNCA2MjQgNDE5IDYyNFQzOTkgNjIzSDMyMUwyNjMgMzQ4UTI0OSAyODMgMjM0IDIxM1QyMTIgMTA3TDIwNCA3MlEyMDQgNzEgMjg5IDcxUTM3NCA3MiAzODYgNzRRNTAxIDk0IDU3MyAxOTNUNjQ2IDQyMlE2NDYgNDg3IDYyMiA1MzMnLFxuICAgIDB4MUQ2MEM6ICc4NiAyUTg4IDQgMTYwIDM0NlQyMzMgNjg5UTIzMyA2OTEgNDYxIDY5MVE2ODggNjkxIDY4OCA2ODlRNjg1IDY4NiA2NzEgNjExSDQ5NUwzMjAgNjEyTDMxOSA2MDlRMzE5IDYwNyAyOTcgNTAxTDI3NCAzOTdINDM2UTU5NyAzOTcgNTk3IDM5Nkw1OTYgMzkxUTU5NSAzODYgNTkzIDM3NlQ1ODkgMzU4TDU4MSAzMjJMNDIwIDMyMVEyNTggMzIxIDI1OCAzMjBRMjA5IDg5IDIwOCA4N1EyMDggODUgMzkwIDg1UTQxNyA4NSA0NjAgODVUNTE4IDg2TDU3MiA4NVE1NTYgOCA1NTQgMlYwSDg2VjInLFxuICAgIDB4MUQ2MEQ6ICc4NiAyUTg4IDQgMTYwIDM0NlQyMzMgNjg5UTIzMyA2OTEgNDUzIDY5MVQ2NzMgNjg5UTY3MCA2ODYgNjU2IDYxMUg0ODhMMzIwIDYxMlEzMTQgNTc5IDMwMiA1MjNUMjgxIDQyN1QyNzIgMzg1UTI3MiAzODQgNDE5IDM4NEg1NjdMNTUxIDMwOEgyNTVMMjIzIDE1NlEyMTYgMTI0IDIwNyA4MlQxOTQgMjBMMTkwIDJRMTkwIDAgMTM4IDBIODZWMicsXG4gICAgMHgxRDYwRTogJzEyNSAyNjdRMTI1IDM3NSAxODIgNDc2VDMzNyA2NDFUNTQ0IDcwNVE1OTggNzA1IDY0NCA2OTNUNzEwIDY2OVQ3MzAgNjU1TDcxMiA2MDlMNjkzIDU2MEw2OTIgNTU3TDY4MSA1NjdRNjE4IDYyNiA1MjYgNjI2UTQ0NyA2MjYgMzc4IDU3M1QyNjkgNDQwVDIyOSAyNzdRMjI5IDE4NSAyNzYgMTI3VDQwNiA2OFE0MjIgNjggNDUxIDcxVDUwMiA3OFQ1MjQgODRMNTI2IDkzUTUyOCAxMDIgNTMyIDExOVQ1MzkgMTUzTDU1MyAyMjJRNTUzIDIyMyA0OTUgMjIzUTQzNiAyMjMgNDM2IDIyNFE0MzYgMjMwIDQ0NCAyNjJMNDUyIDI5OUg2NjJWMjk2UTY2MSAyOTAgNjM1IDE2NlQ2MDcgNDBRNjA2IDM3IDU3NiAyNVQ0OTIgMVQzOTEgLTExUTI3MiAtMTEgMTk5IDY2VDEyNSAyNjcnLFxuICAgIDB4MUQ2MEY6ICc1MTcgMlE1MTggMyA1NTEgMTYxVDU4NSAzMjJRNTg2IDMyMyA1NTcgMzIzVDQyMiAzMjNIMjU5TDE5MCAwSDEzOFE4NiAwIDg2IDFMOTYgNDZRMTA1IDkwIDEyNCAxNzdUMTYwIDM0OEwyMzQgNjk0SDMzN1Y2OTFRMzM2IDY5MCAzMDYgNTQ1VDI3NSAzOTlINjAyTDYwMyA0MDNRNjAzIDQwNyA2MzQgNTUxTDY2NSA2OTRINzY4VjY5MVE3NjggNjkwIDY5NSAzNDhUNjIxIDJWMEg1MTdWMicsXG4gICAgMHgxRDYxMDogJzE2MSAzNDhMMjM1IDY5NEgzMzhWNjkxUTMzOCA2OTAgMjY1IDM0OFQxOTEgMlYwSDEzOVE4NyAwIDg3IDFMOTYgNDZRMTA2IDkwIDEyNSAxNzdUMTYxIDM0OCcsXG4gICAgMHgxRDYxMTogJzM3NyA0MjRMNDM1IDY5NEg1MzVWNjkxUTUzNCA2ODUgNDc2IDQxMlQ0MTYgMTM1UTQwMSA3NCAzNTAgMjZUMjEwIC0yMlExNjUgLTIyIDEyNCAtMTFUNjUgOVQ0NiAyMUw1NCA0MVE2MiA2MSA3MCA4M1Q4MSAxMDlRODIgMTExIDg1IDEwNlE4NiAxMDUgODcgMTAzUTkzIDk0IDEwMyA4NFQxMzUgNjRUMTg1IDUzUTIzOCA1MyAyNzIgNzZUMzE3IDE0MlEzMTcgMTQ1IDMyNSAxODJUMzQ4IDI4OVQzNzcgNDI0JyxcbiAgICAweDFENjEyOiAnMjM2IDIyM1EyMzUgMjIyIDIxMyAxMTNUMTg4IDJWMEgxMzhRODggMCA4OCAxTDk4IDQ2UTEwNyA5MCAxMjYgMTc3VDE2MiAzNDhMMjM2IDY5NEgyODVRMzM1IDY5NCAzMzUgNjkzTDMzMCA2NzFRMzI2IDY0OSAzMTYgNjAzVDI5OCA1MThRMjg5IDQ3NyAyODAgNDMzVDI2NiAzNjZMMjYxIDM0M0w2NzIgNjk0SDcyOUw3ODQgNjkzTDQ2NSA0MjBMNjUxIDBINTk2TDU0MSAxTDM4NCAzNTBRMzgzIDM1MSAzMTAgMjg4VDIzNiAyMjMnLFxuICAgIDB4MUQ2MTM6ICcxNjEgMzQ4TDIzNSA2OTRIMzM4VjY5MVEzMzggNjkwIDI3MyAzODVUMjA4IDc5UTI3OCA4MCAzNjIgODBINTE2UTUwMiAxMSA0OTkgMlYwSDI5M1E4NyAwIDg3IDFMOTYgNDZRMTA2IDkwIDEyNSAxNzdUMTYxIDM0OCcsXG4gICAgMHgxRDYxNDogJzM3NSA2OTFRNDU2IDIxNSA0NTkgMTI0VjEwNlE0ODggMTc3IDc2MiA2NDFMNzkzIDY5NEg5MjlWNjkxUTkyOSA2OTAgODU2IDM0OFQ3ODIgMlYwSDY4OVYyUTY5MSA0IDc1MyAzMDRRODE3IDYwNCA4MTggNjA2UTgxOSA2MTEgODE3IDYwOFE4MTcgNjA3IDgxNSA2MDNRNzk4IDU1OSA1NDAgMTE3TDQ4NCAyMkg0NDBMMzk3IDIzTDM5MyA0MlEzOTMgNDcgMzczIDE2OVQzMzQgNDIyVDMxNSA1OTRWNjA5TDI1MCAzMDZRMTg2IDMgMTg1IDJRMTg1IDAgMTM4IDBROTIgMCA5MiAxTDEwMiA0NlExMTEgOTAgMTMwIDE3N1QxNjYgMzQ4TDI0MCA2OTRIMzc1VjY5MScsXG4gICAgMHgxRDYxNTogJzMxMSA2MDlRMzEwIDYwOCAyNDYgMzA2VDE4MSAyVjBIMTM0UTg4IDAgODggMUw5OCA0NlExMDcgOTAgMTI2IDE3N1QxNjIgMzQ4TDIzNiA2OTRIMzgyTDM4MyA2OTFRMzgzIDY4OCA0MTggNTYxVDQ5MyAyODZUNTQxIDk3TDU0NCA4NEw1NDUgODlRNTQ1IDkwIDU1MyAxMjhUNTc4IDI0NlQ2MTAgMzk0TDY3NCA2OTRINzY2VjY5MVE3NjYgNjkwIDY5MyAzNDhUNjE5IDJWMEg0NzJMNDY5IDEzUTQ2OCAxNyAzOTMgMjkzVDMxMiA2MDVMMzExIDYwOScsXG4gICAgMHgxRDYxNjogJzExOCAyNTRRMTE4IDM2NiAxNzQgNDczVDMyNCA2NDhUNTE3IDcxNlE2MjcgNzE2IDY5NSA2MzhUNzYzIDQzNVE3NjMgMzIxIDcwNiAyMTVUNTU1IDQzVDM2MiAtMjJRMjU2IC0yMiAxODcgNTZUMTE4IDI1NFpNMzgwIDU4UTQ1MiA1OCA1MTggMTE2VDYyMiAyNjNUNjYxIDQ0MlE2NjEgNDk2IDY0NiA1MzVUNjA4IDU5NFQ1NjcgNjIyVDUzNCA2MzRRNTE2IDYzNiA0OTYgNjM2UTQwMCA2MzYgMzEzIDUyOFQyMjUgMjY0UTIyNSAxNzIgMjY3IDExNVQzODAgNTgnLFxuICAgIDB4MUQ2MTc6ICcxNjIgMzQ4TDIzNiA2OTRIMzc4UTUyMiA2OTMgNTMwIDY5MlE2MDQgNjgwIDY0NyA2MzVUNjkwIDUyNFE2OTAgNDc0IDY2NSA0MzBUNjEyIDM1OVE1NTAgMjk5IDQ2NSAyODBRNDQzIDI3NSAzNDMgMjc0SDI1MFYyNzFRMjUwIDI2OSAyMzUgMjAxVDIwNiA2OFQxOTIgMlYwSDE0MFE4OCAwIDg4IDFMOTggNDZRMTA3IDkwIDEyNiAxNzdUMTYyIDM0OFpNNTk0IDUxM1E1OTQgNTYwIDU2MiA1ODhUNDc3IDYyMlE0NzAgNjIzIDM5NCA2MjNIMzIxTDI5MyA0ODdMMjYzIDM0OVYzNDdIMzQySDM0N0gzNzVRNTMwIDM0NyA1NzggNDQ5UTU5NCA0ODMgNTk0IDUxMycsXG4gICAgMHgxRDYxODogJzExOCAyNTRRMTE4IDM2NiAxNzQgNDczVDMyNCA2NDhUNTE3IDcxNlE2MjcgNzE2IDY5NSA2MzhUNzYzIDQzNVE3NjMgMzA1IDY5MyAxOTRUNTQzIDM2UTU0NyAyOSA1ODYgLTQ3VDYyNSAtMTI1SDUwNEw0NTAgLThRNDA2IC0yMiAzNjMgLTIyUTI1NiAtMjIgMTg3IDU2VDExOCAyNTRaTTY2MSA0MzdRNjYxIDUzMiA2MTYgNTg0VDUwNiA2MzZRNDI4IDYzNiAzNjEgNTc4VDI1NyA0MzNUMjIwIDI1OFEyMjAgMTY3IDI2NCAxMTNUMzgwIDU4UTM5MCA1OCAzOTcgNThUNDA4IDU5VDQxMyA2MFQ0MTcgNjFRNDE3IDYzIDM4NyAxMjdUMzU2IDE5M1EzNTYgMTk0IDQwOSAxOTRINDYyTDQ4NSAxNTBMNTA4IDEwNVE1MDkgMTAzIDUzMiAxMjVUNTY3IDE2MVE2NjEgMjc4IDY2MSA0MzcnLFxuICAgIDB4MUQ2MTk6ICcxNjIgMzQ4TDIzNiA2OTRIMzc1SDQxNEg0NDVRNTA3IDY5NCA1MzggNjkwVDYwNiA2NjhRNjk4IDYyMyA2OTggNTM0VjUyOFE2OTggNDQ3IDYwOCAzNzdRNTgyIDM1OCA1NTUgMzQ1VDUxMiAzMjZMNDk3IDMyMUw2MTcgMEg1NjVMNTEzIDFMNDAyIDMwOUgyNTVMMTg5IDBIMTM4UTg4IDAgODggMUw5OCA0NlExMDcgOTAgMTI2IDE3N1QxNjIgMzQ4Wk02MDMgNTI1UTYwMyA2MDMgNDk5IDYyMFE0ODYgNjIyIDQwMyA2MjNIMzIxTDI5NyA1MDZRMjkyIDQ4MiAyODUgNDQ5VDI3NCA0MDJMMjcxIDM4N1YzODVIMzQ2UTM1MCAzODUgMzYzIDM4NVQzODYgMzg0UTU0OCAzODQgNTkyIDQ3OVE2MDMgNTAzIDYwMyA1MjUnLFxuICAgIDB4MUQ2MUE6ICcxNjEgNDc4UTE2MSA1NjggMjQyIDY0MlQ0MzUgNzE2UTUyNyA3MTYgNTk5IDY3M0w2MDkgNjY3UTU5NSA2MzMgNTg5IDYxNUw1NzEgNTY4UTU3MCA1NjggNTY0IDU3NVQ1NDYgNTkyVDUxOCA2MTFUNDc1IDYyOFQ0MTcgNjM1UTM1MSA2MzUgMzA1IDU5NlQyNTkgNTA3UTI1OSA0NjUgMjkwIDQ0NFQzNzIgNDExVDQzMiAzOTZRNDczIDM4NSA1MDkgMzQzVDU0NSAyMzZRNTQ1IDE0MCA0NjQgNTlUMjcwIC0yMlExNTUgLTIyIDU0IDQ4TDkyIDE0NlE5MyAxNDYgMTAxIDEzOFQxMjQgMTE3VDE2MSA5MlQyMTYgNzJUMjg4IDYzUTM2MCA2MyA0MDMgMTA5VDQ0NyAyMDRRNDQ3IDIyMCA0NDQgMjMzVDQzNSAyNTZUNDIxIDI3M1Q0MDQgMjg1VDM4NSAyOTVUMzY2IDMwMVQzNDcgMzA2VDMzMSAzMTBUMzE1IDMxNFQyOTIgMzIxVDI2NSAzMzFUMjM1IDM0NlQyMDcgMzY3VDE4MyAzOTVUMTY4IDQzMVQxNjEgNDc4JyxcbiAgICAweDFENjFCOiAnMTY1IDYwOEwxODIgNjg3UTE4MiA2ODggNDg2IDY4OEg3OTBMNzg5IDY4NUw3ODEgNjQ1TDc3MyA2MDlINTIxTDQ1NyAzMDZRMzkzIDMgMzkyIDJRMzkyIDAgMzQwIDBIMjg4VjJRMjg5IDUgMzUzIDMwNFQ0MTcgNjA1VjYwOUwyOTEgNjA4SDE2NScsXG4gICAgMHgxRDYxQzogJzM0MCAtMjJRMjUxIC0yMiAxOTEgMzNUMTMxIDE3N1YxODdRMTMxIDE5MiAxMzEgMTk1VDEzMiAyMDVUMTMzIDIxNVQxMzYgMjMxVDE0MSAyNTNUMTQ3IDI4NVQxNTYgMzI4VDE2OCAzODRUMTg0IDQ1N0wyMzUgNjk0SDMzOFY2OTFRMzM4IDY5MCAyODggNDUxVDIzNiAyMTBRMjM0IDE5NCAyMzQgMTc3UTIzNCAxMzggMjQ3IDExMVQyODAgNzJUMzE5IDU0VDM1NyA0OVE0MDggNDkgNDQ5IDc0VDUxMCAxMjhRNTE2IDEzNiA1MjEgMTQzVDUzMCAxNThUNTM4IDE3NVQ1NDUgMTk0VDU1MyAyMjBUNTYwIDI1MFQ1NjkgMjg5VDU3OSAzMzZUNTkxIDM5NVQ2MDYgNDY0TDY1NSA2OTRINzQ3VjY5MVE2NTEgMjQzIDY0NSAyMTNRNjIzIDE0OSA1ODcgMTAyUTQ4MiAtMjIgMzQwIC0yMicsXG4gICAgMHgxRDYxRDogJzIyMCAzNDhMMTYxIDY5NEgyMTZRMjcwIDY5NCAyNzAgNjkzTDI4MyA2MTNRMzM0IDMxMyAzNDYgMjE1UTM1OSAxMDIgMzU5IDk2UTM1OSA4NyAzNTggODRRMzg4IDE2MiA2ODQgNjU3TDcwNiA2OTRINzUzUTc5OSA2OTQgNzk5IDY5M0wzODcgMEgzMzNRMjc5IDAgMjc5IDFMMjcyIDQ1UTI2NCA4OSAyNDkgMTc3VDIyMCAzNDgnLFxuICAgIDB4MUQ2MUU6ICc1OTYgNTQwUTU5NiA1NjIgNTk3IDU4NVQ1OTkgNjA5UTU5OSA1ODggNDM2IDI1NVE0MDIgMTg1IDM2MiAxMDRMMzEwIDBIMjEzVjNRMjEzIDYgMTg4IDM0N1QxNjEgNjk0SDI2M0wyNjUgNjY0UTI5MCAzMjcgMjkzIDE4NFEyOTMgMTEyIDI4OSA4NVEyOTAgODUgMjkwIDg3UTI5MCA5NSAzMDEgMTIzVDMzMiAxOTRUMzczIDI4MlQ0MTkgMzgwVDQ2MyA0NjlUNDk4IDU0MVQ1MTcgNTc5TDU3NCA2OTRINjcxVjY4OUw2NzQgNjQ2UTY3OCA2MDMgNjgyIDUzOFQ2OTEgNDAxVDY5OSAyNjNUNzAzIDE2MFE3MDMgMTAyIDcwMCA4N1E3MTkgMTU0IDkzMCA1NzZMOTg5IDY5NEgxMDc2UTEwNzYgNjkzIDkwMyAzNDdMNzMwIDBINjI4VjRMNjI2IDI2UTYyNCA0OCA2MjIgODVUNjE2IDE2OFQ2MDkgMjY3VDYwMyAzNjlUNTk4IDQ2NFQ1OTYgNTQwJyxcbiAgICAweDFENjFGOiAnMTQgMFExNyAzIDE4NCAxODRUMzUyIDM2N0wyNjUgNTI5UTI0NCA1NjcgMjIyIDYwOVQxODggNjcyTDE3NiA2OTJRMTc2IDY5NCAyMzYgNjk0SDI5N0wzMzggNjEyUTM4NyA1MTUgNDAwIDQ4OUw0MjEgNDQ4TDY0NSA2OTRINzU4TDcwOCA2NDBRNDgxIDM5MyA0NTYgMzY4UTQ1NSAzNjYgNTAwIDI4MVQ1OTYgMTA0VDY1MiAwSDUzMUwzODggMjkzTDEyOCAwSDE0JyxcbiAgICAweDFENjIwOiAnMTUxIDY5MlExNTEgNjk0IDIxMiA2OTRIMjcyTDQxOCAzNjJMNjk2IDY4M0w3MDUgNjk0SDc1OEw4MDkgNjkzUTgwOSA2OTIgNjMwIDQ5MFQ0NDQgMjgwUTQ0MiAyNzUgNDEzIDEzOUwzODMgMUwzMzMgMFEyODIgMCAyODIgMlEyODMgMyAzMTIgMTQxTDM0MSAyNzhMMjQ2IDQ4NEwxNTEgNjkyJyxcbiAgICAweDFENjIxOiAnNjcgNTRRNTUxIDYxNSA1NTEgNjE3UTU0MyA2MTggNTE3IDYxOFE1MTAgNjE4IDQ2MyA2MThUMzc2IDYxN1EyMDAgNjE3IDIwMCA2MThUMjA5IDY1N0wyMTYgNjk0SDQ1OVE3MDIgNjk0IDcwMiA2OTJRNzAyIDY4OSA2OTcgNjY3TDY5MiA2NDNMMjA3IDgwSDM5MlE0OTMgODEgNTc3IDgxUTU3NyA3MCA1NjAgMlYwSDU1VjJMNjcgNTQnLFxuICAgIDB4MUQ2MjI6ICczMTMgMzg2UTI4NiAzODYgMjYwIDM4MVQyMTcgMzY5VDE4NiAzNTVUMTY0IDM0MlQxNTUgMzM3UTE1NCAzMzggMTU5IDM3N1QxNjUgNDE4UTI1MSA0NjEgMzIwIDQ2MVEzMjIgNDYxIDMyOCA0NjFUMzM3IDQ2MFEzOTcgNDYwIDQzNSA0MjRUNDczIDMyOVE0NzMgMzI1IDQ3MyAzMThUNDcyIDMwOFE0MzIgMTEwIDQwNyAyVjBIMzE3VjJMMzI1IDM4UTI5NSAyMSAyNjkgMTBRMjE1IC0xMCAxNTYgLTEwSDE0OVE3NiAtMTAgNjIgNjlRNjEgNzUgNjEgOTBRNjEgMTI3IDczIDE1MFQxMTYgMTk0UTE0NiAyMTUgMjA3IDIzMVQzNDggMjUySDM2OEwzNzMgMjc3UTM3OCAzMDIgMzc4IDMxOFEzNzggMzY3IDMzOSAzODRRMzMyIDM4NiAzMTMgMzg2Wk0xNTAgMTE2UTE1MCA5MyAxNzEgNzlUMjIzIDY1UTI1OSA2NSAyOTMgODVUMzQxIDEzNVEzNDMgMTQwIDM0OCAxNjBUMzUzIDE4NFEzNTMgMTg2IDM0MiAxODZRMjk4IDE4NiAyMzEgMTc0VDE1MyAxMzRRMTUwIDEyNyAxNTAgMTE2JyxcbiAgICAweDFENjIzOiAnMzAyIC0xMVEyNjYgLTExIDIzNSAxVDE5MCAyNkwxNzYgMzhRMTcwIDggMTY4IDJWMEgxMjFRNzUgMCA3NSAxTDg0IDQ2UTk0IDkwIDExMyAxNzdUMTQ5IDM0OEwyMjMgNjk0SDI2N1EzMTIgNjk0IDMxMiA2OTNUMjgyIDU1MVQyNTEgNDA3UTI1MSA0MDYgMjU2IDQwOFQyNzEgNDE1UTM0NyA0NTQgNDMwIDQ1NEg0MzhRNTAxIDQ1NCA1MjggMzc0UTUzOSAzMzkgNTM5IDI5OVE1MzkgMTc5IDQ2NiA4NFQzMDIgLTExWk00NDMgMjc1UTQ0MyAzMTcgNDIxIDM0OFQzNDYgMzc5UTMxOCAzNzkgMjk2IDM2OVEyNjkgMzU5IDIzOCAzMzJMMTkzIDExOEwxOTggMTA5UTIyMCA2NSAyNjkgNjVRMzUwIDY1IDM5NiAxMzBUNDQzIDI3NScsXG4gICAgMHgxRDYyNDogJzc1IDE2NFE3NSAyMjYgMTAwIDI4MlQxNjUgMzc3VDI1MiA0MzdUMzQyIDQ2MEgzNDdRNDQ3IDQ2MCA0OTkgNDE3TDQ4MyAzNzhRNDY4IDMzOSA0NjggMzM4UTQ2NiAzMzggNDU1IDM0N1Q0MjQgMzY2VDM4NSAzNzhRMzU1IDM4MiAzMzQgMzgyUTI2MiAzODIgMjE1IDMxOFQxNjggMTc3UTE2OCAxMjAgMTk2IDk1VDI1OSA2OUgyNjlRMzQ1IDY5IDQyMCAxMDhRNDMyIDExNCA0MzIgMTEzVDQyNyA3Mkw0MjIgMzJMNDAyIDIyUTM4MiAxMiAzNDQgMlQyNTkgLTExUTIxNCAtMTEgMTgwIDJUMTI2IDM2VDk1IDgxVDc5IDEyNlQ3NSAxNjQnLFxuICAgIDB4MUQ2MjU6ICc3MyAxNTZRNzMgMjI0IDEwMiAyOTNUMTg0IDQwOFQyOTQgNDU1UTM3NSA0NTUgNDMyIDQxM1E0MzggNDA3IDQzOCA0MTBUNDY5IDU1M0w0OTkgNjk0SDU4OFY2OTFRNTg4IDY5MCA1MTUgMzQ4VDQ0MSAyVjBIMzQ4VjJRMzU3IDI5IDM1NyA0M0wzNTIgNDFRMzMyIDI0IDI4OCA3VDE5NiAtMTBIMTkwUTE3OCAtMTAgMTY2IC03VDEzNCA4VDk4IDQ2VDc1IDExM1E3MyAxMjkgNzMgMTU2Wk00MTkgMzM1UTQxOSAzMzkgNDEyIDM0OFQzODYgMzY4VDM0MiAzNzlRMjg0IDM3OSAyNDMgMzQzVDE4NCAyNjFUMTY3IDE2OFExNjcgMTIyIDE5MSA5NFQyNjMgNjZRMzIxIDY2IDM2NyAxMTZMMzc0IDEyNEwzOTcgMjI5UTQxOSAzMzMgNDE5IDMzNScsXG4gICAgMHgxRDYyNjogJzI0OCAtMTFRMTcwIC0xMSAxMjEgNDFUNzEgMTczUTcxIDI2NSAxMzMgMzQ5VDI4NSA0NTRRMzA1IDQ2MCAzMTggNDYwSDMyOFEzNjggNDYwIDM5OSA0NDhRNDcyIDQxNCA0NzIgMzA5UTQ3MiAyNzQgNDY0IDIzNEw0NjIgMjE5SDE1OVExNTYgMTk4IDE1NiAxODVRMTU2IDEzNyAxNzkgMTA3VDIzNyA2OFEyNDYgNjYgMjY4IDY2UTM0NSA2NiA0MjcgMTEzVjEwOVE0MjYgMTA4IDQyMiA3M1Q0MTcgMzdRNDE3IDM0IDQwOSAyOVEzMjkgLTExIDI0OCAtMTFaTTQwMSAyOTlRMzk5IDMzNyAzNzYgMzYxVDMxNiAzODVRMjkxIDM4NSAyNjYgMzcxUTIyMCAzNTAgMTg0IDI4OUg0MDFWMjk5JyxcbiAgICAweDFENjI3OiAnMzgxIDQ0M1EzODEgNDQwIDM3NCA0MDdUMzY2IDM3MUgzMTVRMjYzIDM3MSAyNjMgMzY5UTI2MiAzNjggMjI0IDE4NlEyMTUgMTQ1IDIwNSA5N1QxODkgMjVMMTg0IDJWMEg5NFYyTDk5IDI1UTEwNCA0OCAxMTQgOTZUMTM0IDE4NlExNzIgMzY4IDE3MyAzNjlRMTczIDM3MSAxMzkgMzcxSDEwNlYzNzNMMTE0IDQxMEwxMjEgNDQ0SDE1NUwxODggNDQ1TDE5MSA0NTVMMjEyIDU1MVEyMzIgNjEyIDI4OCA2NThUNDE1IDcwNVE0MzggNzA1IDQ2NCA3MDFUNDk0IDY5NFE0NzggNjE0IDQ3NyA2MTRMNDY3IDYxOFE0NTcgNjIxIDQ0MCA2MjRUNDA2IDYyOUg0MDBRMzMzIDYyOSAzMDYgNTc5UTMwMSA1NjggMjg5IDUwN0wyNzUgNDQ0SDMyOFEzODEgNDQ0IDM4MSA0NDMnLFxuICAgIDB4MUQ2Mjg6ICcxMTMgMjUyUTExMyAzMzQgMTc3IDM5NFQzMTEgNDU0UTMzMiA0NTQgMzUwIDQ1MVQzNzkgNDQyVDM5OCA0MzJUNDEwIDQyNEw0MTMgNDIxUTQxMiA0MjMgNDExIDQyNEw0MDkgNDI2UTQwOSA0MjkgNDM0IDQzNlQ0OTYgNDQ5VDU2MCA0NTVINTY4VjQ1MVE1NjggNDQ3IDU2NyA0MjlUNTY2IDM5NEw1NjUgMzc3TDU1MyAzNzlRNTIyIDM4NSA0NzkgMzg1UTQ2MyAzODUgNDU2IDM4NEw0NDMgMzgzTDQzNiAzOTJRNDU0IDM1NyA0NTQgMzI0UTQ1NCAyNDMgMzkwIDE4MlQyNDkgMTIwUTIzMyAxMjAgMjE5IDEyMlQxOTUgMTI4VDE3OCAxMzZUMTY3IDE0MkwxNjMgMTQ1UTE0OSAxMzEgMTQ5IDEwNVExNDkgNzggMTcxIDcyTDI0MiA3MVEyNDYgNzEgMjY5IDcxVDMwMyA3MVQzMzYgNjhUMzcyIDYyVDQwMyA1MVQ0MzIgMzJRNDYxIDggNDYxIC00MFE0NjEgLTExMiAzODMgLTE1OVQyMTEgLTIwNlExMjMgLTIwNiA2OCAtMTcyVDEyIC04NlExMiAtNTUgMzEgLTIzVDgyIDMyUTkwIDM4IDg5IDM5UTg5IDQwIDg3IDQ0VDgyIDU5VDgwIDgyUTgwIDEzNCAxMjYgMTg5UTExMyAyMjggMTEzIDI1MlpNMzY5IDMxOVEzNjkgMzU0IDM1MCAzNjhUMzA0IDM4M1EyNzQgMzgzIDI1MiAzNjlUMjE4IDMzM1QyMDIgMjkxVDE5NyAyNTVRMTk3IDIyMSAyMTcgMjA2VDI2MyAxOTFRMzE3IDE5MSAzNDMgMjMzVDM2OSAzMTlaTTM3MyAtNTlRMzczIC00MSAzNjIgLTMwVDMzMCAtMTNUMjkxIC03VDI0NyAtNUgyMTZRMTY3IC01IDE1OCAtNlQxMzkgLTEyUTEyMyAtMjAgMTEwIC0zOFQ5NyAtNzZROTcgLTEwMiAxMzMgLTExOFQyMjEgLTEzNFEyNDIgLTEzNCAyNjcgLTEzMFQzMTYgLTExOFQzNTcgLTk0VDM3MyAtNTknLFxuICAgIDB4MUQ2Mjk6ICc0MTYgMzIxUTQxNiAzNzkgMzM2IDM3OVEyNzYgMzc5IDIzNyAzMDJRMjI2IDI3NiAyMDkgMjAyVDE4MCA2NlQxNjYgMlYwSDExOVE3MyAwIDczIDFMODIgNDZROTIgOTAgMTExIDE3N1QxNDcgMzQ4TDIyMSA2OTRIMjY1UTMxMCA2OTQgMzEwIDY5M1QyNzkgNTQ0TDI0NyAzOTVRMzI1IDQ1NSA0MDMgNDU1UTUxMyA0NTUgNTEzIDM1OFE1MTMgMzM0IDUwOCAzMDlRNTA3IDMwNCA0NzYgMTU2VDQ0MyAyVjBIMzUwVjJMMzU3IDM0UTM2NCA2NSAzNzMgMTEwVDM5MiAyMDBUNDA5IDI4MVQ0MTYgMzIxJyxcbiAgICAweDFENjJBOiAnMTg5IDU3OFExOTAgNTc5IDE5OSA2MjdUMjExIDY3OFY2ODBIMzE1VjY3OFEzMTMgNjc1IDMwNCA2MjdUMjkzIDU3OFY1NzZIMTg5VjU3OFpNMTY4IDQ0MlQxNjggNDQzVDIxMyA0NDRUMjU4IDQ0M1QyMTIgMjI1VDE2NCAyVjBINzRWMlE3NSA3IDEyMSAyMjQnLFxuICAgIDB4MUQ2MkI6ICcyMTEgNTc3TDIzMyA2ODBIMjg0UTMzNiA2ODAgMzM2IDY3OUwzMTUgNTc2SDI2M1EyMTEgNTc2IDIxMSA1NzdaTTE5IC0yMDRRLTEyIC0yMDQgLTQwIC0xOTZULTgyIC0xNzlULTk2IC0xNzBRLTk2IC0xNjggLTc4IC0xMzJMLTYxIC05NUwtNTQgLTEwM1EtMzIgLTEyNiAzIC0xMjZRMjYgLTEyNiA1MCAtMTE2UTc2IC0xMDEgODMgLTg1UTg0IC03OSAxNDAgMTgwVDE5NiA0NDNRMTk2IDQ0NCAyNDEgNDQ0VDI4NiA0NDNRMjg2IDQ0MSAyMzIgMTg2VDE3NSAtNzVRMTYzIC0xMjAgMTIyIC0xNjJUMTkgLTIwNCcsXG4gICAgMHgxRDYyQzogJzE1MCAzNDhMMjI0IDY5NEgzMTBWNjkxUTIxOCAyNTkgMjE4IDI1OEwyMzIgMjcwUTI0NSAyODEgMjc0IDMwNlQzMjcgMzUxTDQzNSA0NDRINDg5TDU0MiA0NDNRNTQyIDQ0MiA0NDMgMzU3TDM0NCAyNzJMNDcxIDFMNDIyIDBIMzcyTDM2NiAxNFEzNTkgMjcgMzQ3IDU0VDMyMyAxMDVMMjczIDIxMFEyNzEgMjEwIDIzMSAxNzRMMTkwIDEzOUwxNjAgMEgxMThRNzYgMCA3NiAxTDg2IDQ2UTk1IDkwIDExNCAxNzdUMTUwIDM0OCcsXG4gICAgMHgxRDYyRDogJzE0OCAzNDhMMjIyIDY5NEgzMTFWNjkxUTMxMSA2OTAgMjM4IDM0OFQxNjQgMlYwSDExOVE3NCAwIDc0IDFMODQgNDZROTMgOTAgMTEyIDE3N1QxNDggMzQ4JyxcbiAgICAweDFENjJFOiAnNDE2IDMyMVE0MTYgMzc5IDMzNiAzNzlRMjc2IDM3OSAyMzcgMzAyUTIyNiAyNzYgMjA5IDIwMlQxODAgNjZUMTY2IDJWMEgxMTlRNzMgMCA3MyAyTDEyMSAyMjZMMTY5IDQ0OVExNjkgNDUwIDIxMyA0NTBIMjU2TDI0OSA0MjFRMjQ4IDQxNyAyNDcgNDEyVDI0NiA0MDRUMjQ1IDM5OFQyNDQgMzk0VDI0NCAzOTJRMjUwIDM5OCAyNjEgNDA3VDMwNyA0MzNUMzc5IDQ1NEgzOTJINDAwUTQ1MSA0NTQgNDcyIDQzOVE0ODIgNDM0IDQ4OSA0MjdUNTAwIDQxMlQ1MDYgMzk5VDUxMCAzODhMNTExIDM4NFE1MTEgMzg0IDUxNyAzODhRNTYzIDQzMSA2MjAgNDQ2UTY0OCA0NTUgNjgwIDQ1NVE3OTAgNDU1IDc5MCAzNThRNzkwIDMzNCA3ODUgMzA5UTc4NCAzMDQgNzUzIDE1NlQ3MjAgMlYwSDYyN1YyTDYzNCAzNFE2NDEgNjUgNjUwIDExMFQ2NjkgMjAwVDY4NiAyODFUNjkzIDMyMVE2OTMgMzc5IDYxMyAzNzlRNTUzIDM3OSA1MTQgMzAyUTUwMyAyNzYgNDg2IDIwMlQ0NTcgNjZUNDQzIDJWMEgzNTBWMkwzNTcgMzRRMzY0IDY1IDM3MyAxMTBUMzkyIDIwMFQ0MDkgMjgxVDQxNiAzMjEnLFxuICAgIDB4MUQ2MkY6ICc0MTYgMzIxUTQxNiAzNzkgMzM2IDM3OVEyNzYgMzc5IDIzNyAzMDJRMjI2IDI3NiAyMDkgMjAyVDE4MCA2NlQxNjYgMlYwSDExOVE3MyAwIDczIDJMMTIxIDIyNkwxNjkgNDQ5UTE2OSA0NTAgMjEzIDQ1MEgyNTZMMjQ5IDQyMVEyNDggNDE3IDI0NyA0MTJUMjQ2IDQwNFQyNDUgMzk4VDI0NCAzOTRUMjQ0IDM5MlEyNTAgMzk4IDI2MSA0MDdUMzA3IDQzM1QzNzkgNDU0SDM5MlE0MTYgNDU0IDQzMyA0NTJUNDcwIDQ0MFQ1MDIgNDExVDUxMyAzNThRNTEzIDMzNCA1MDggMzA5UTUwNyAzMDQgNDc2IDE1NlQ0NDMgMlYwSDM1MFYyTDM1NyAzNFEzNjQgNjUgMzczIDExMFQzOTIgMjAwVDQwOSAyODFUNDE2IDMyMScsXG4gICAgMHgxRDYzMDogJzY5IDE2OVE2OSAyMzggMTA3IDMwNlQyMTEgNDE3VDM0OCA0NjFRNDE5IDQ2MSA0NzEgNDEyVDUyMyAyNzFRNTIzIDE2MSA0MzggNzVUMjQ3IC0xMVExNzAgLTExIDEyMCAzOVQ2OSAxNjlaTTQzMiAyNzlRNDMyIDMzOCA0MDEgMzYxVDMzMyAzODVRMjgwIDM4NSAyNDAgMzUyVDE4MiAyNzNUMTY0IDE3OFExNjQgMTE5IDE5NSA5NFQyNjUgNjhRMzA2IDY4IDM0NCA5NFEzODAgMTE1IDQwNiAxNjlUNDMyIDI3OScsXG4gICAgMHgxRDYzMTogJzI1OSA0NDNRMjUxIDQwNSAyNTEgNDA0TDI2MCA0MDlRMjY5IDQxNCAyODYgNDIxVDMyNCA0MzZUMzc1IDQ0OVQ0MzQgNDU1UTQ4MiA0NTUgNTEwIDQxN1Q1MzggMzAzUTUzOCAxNjkgNDYzIDc5VDMwMiAtMTFRMjI2IC0xMSAxNzYgMzlWMzZRMTc1IDM1IDE1MSAtODBMMTI3IC0xOTNRMTI3IC0xOTQgODAgLTE5NEgzNFYtMTkxTDEwMiAxMjdMMTY5IDQ0M1ExNjkgNDQ0IDIxNCA0NDRUMjU5IDQ0M1pNMjY5IDY1UTMzMiA2NSAzODYgMTI0VDQ0MSAyNjJRNDQxIDMwNCA0MjIgMzM0VDM3MCAzNzNRMzU2IDM3NSAzMzkgMzc1UTI5MyAzNzUgMjM4IDMzMUwxOTMgMTE4UTIwMCAxMDMgMjA2IDk0VDIyOSA3NVQyNjkgNjUnLFxuICAgIDB4MUQ2MzI6ICc3MiAxNDlRNzIgMjcyIDE0NiAzNjNUMzA0IDQ1NVEzNDAgNDU1IDM3MSA0NDJUNDA5IDQyM1Q0MzYgMzk4UTQzOCA0MTEgNDQyIDQyN0w0NDggNDU1SDUzOEw0MDAgLTE5M1E0MDAgLTE5NCAzNTQgLTE5NFEzMDcgLTE5NCAzMDcgLTE5M0wzNTYgMzdWNDFRMzU1IDQxIDM1MCAzOFQzMzIgMjdUMzAyIDEzUTI0NyAtMTAgMTkxIC0xMEgxNzlRMTM4IC0xMCAxMDUgMzJUNzIgMTQ5Wk00MTQgMjk4UTQwMiAzNzYgMzQxIDM3NlEyNzcgMzc2IDIyMyAzMTdUMTY5IDE4MlExNjkgMTIxIDE5OCA5M1QyNjUgNjVRMzE5IDY1IDM2NSAxMTFMMzc3IDEyM0w0MTQgMjk4JyxcbiAgICAweDFENjMzOiAnMjQwIDM3N0wyNDQgMzgwUTI0OCAzODQgMjU1IDM5MFQyNzIgNDA0VDI5NiA0MTlUMzI1IDQzNFQzNjEgNDQ2VDQwMSA0NTRRNDAzIDQ1NCA0MDggNDU0VDQxNiA0NTVINDI0TDQyMSA0NDJRNDE5IDQzNSA0MTMgNDA1VDQwNiAzNzNRMzUxIDM3MyAyOTQgMzM2VDIxNiAyMzdRMjEzIDIzMSAyMDEgMTczVDE3OCA2MFQxNjQgMlYwSDExOVE3NCAwIDc0IDJMMTIyIDIyNkwxNzAgNDQ5UTE3MCA0NTAgMjEzIDQ1MEgyNTVMMjQ3IDQxNFEyNDYgNDA5IDI0NSA0MDNUMjQzIDM5M1QyNDEgMzg1VDI0MCAzNzlUMjQwIDM3NycsXG4gICAgMHgxRDYzNDogJzk5IDI5OVE5OSAzMTggMTA2IDM0MVQxMzMgMzkzVDE5NSA0NDFUMjk4IDQ2MVEzMzYgNDYxIDM3MCA0NTNUNDIwIDQzN0w0MzYgNDI5UTQzNiA0MjggNDIxIDM4OVQ0MDUgMzUwUTM1NiAzODYgMjczIDM4NkgyNjVRMjQ4IDM4NiAyMzcgMzg0VDIxMSAzNzFUMTkxIDMzN1ExODkgMzI5IDE4OSAzMjZRMTg5IDMyMCAxOTAgMzE1VDE5NCAzMDZUMjAwIDI5OVQyMDkgMjkzVDIxOCAyODlUMjI4IDI4NVQyMzkgMjgzVDI1MSAyODFUMjYzIDI3OEwyNzAgMjc2UTI3OCAyNzUgMjgzIDI3NFQyOTggMjcwVDMxNiAyNjRUMzMzIDI1NVQzNTEgMjQzVDM2NyAyMjhUMzgwIDIwOVQzODggMTg2VDM5MSAxNTdRMzkxIDk2IDM0MSA0M1QxOTMgLTExUTE3MSAtMTEgMTUwIC04VDExNCAtMVQ4NCA5VDYxIDE5VDQ1IDI4VDM1IDMzUTM1IDM2IDY3IDExNkw3NiAxMDlRMTMyIDY3IDIxMSA2N1EyNTggNjcgMjc5IDg4VDMwMSAxMzVRMzAxIDE1OSAyODAgMTcwVDIyNCAxODdUMTgwIDE5N1ExNDEgMjEyIDEyMCAyMzlUOTkgMjk5JyxcbiAgICAweDFENjM1OiAnMjQ1IDY4UTI2NyA2OCAyODkgNzVUMzIyIDkwTDMzNCA5OFEzMzggOTQgMzM4IDI4VjI0TDMyNCAxOVEyNjggLTQgMjE4IC04UTE5OCAtMTEgMTc3IC0xMVExMTggLTExIDExOCA3NVExMTggOTggMTIzIDEyN1ExMjUgMTM3IDE0OSAyNTFUMTc0IDM2OVExNzQgMzcxIDEzNSAzNzFIOTdWMzczTDEwNSA0MTBMMTEyIDQ0NEgxNTJMMTkyIDQ0NUwyMDAgNDc4UTIwOCA1MTIgMjEzIDU0MUwyMTkgNTcxSDI2MVEzMDMgNTcxIDMwMyA1NzBUMjkwIDUwNkwyNzYgNDQ0SDM0M1E0MTAgNDQ0IDQxMCA0NDNRNDEwIDQ0MCA0MDMgNDA3VDM5NSAzNzFIMzI4UTI2MSAzNzEgMjYxIDM2OVEyMTEgMTUyIDIxMSAxMThRMjExIDY4IDI0NSA2OCcsXG4gICAgMHgxRDYzNjogJzE2NiAtMTBIMTYwUTE0NiAtMTAgMTM3IC04VDExNSAwVDk3IDIyVDkwIDYzUTkwIDc5IDEzMCAyNjhMMTY3IDQ0M1ExNjcgNDQ0IDIxNCA0NDRRMjYwIDQ0NCAyNjAgNDQzTDIyNCAyNzNRMTg3IDk3IDE4NyA4NlExODcgNzAgMjAyIDY1VDI1MCA1OVEzMDMgNTkgMzM2IDgzVDM3OSAxMzlRMzgwIDE0MyA0MTIgMjkyVDQ0NCA0NDNRNDQ0IDQ0NCA0OTEgNDQ0UTUzNyA0NDQgNTM3IDQ0M1Q0OTEgMjI1VDQ0MyAyVjBIMzUzVjJMMzYxIDM4TDM1MiAzNFEzNDQgMjkgMzI2IDIyVDI4NiA3VDIzMiAtNVQxNjYgLTEwJyxcbiAgICAweDFENjM3OiAnMTc3IDZMMTA4IDQ0MlY0NDRIMjAxVjQ0MlEyMDIgNDQxIDIxMyAzNzFUMjM1IDIxM1QyNDYgOTBWNjVRMjU5IDExNyA0MjkgNDA2TDQ1MCA0NDRINDk1UTU0MCA0NDQgNTQwIDQ0M1E1MzkgNDQyIDQxMSAyMjFMMjgyIDFMMjMwIDBIMTc4TDE3NyA2JyxcbiAgICAweDFENjM4OiAnMTQ4IDVRMTQ3IDggMTI4IDIyMlQxMDkgNDQwTDEwOCA0NDRIMTk5VjQ0MlEyMDAgNDQxIDIwNCAzODVUMjE0IDI1M1QyMTkgMTQwUTIxOSAxMDggMjE1IDc2UTIxNSA3MiAyMTQgNjdWNjVMMjE1IDY2UTIxOSA5NSAyNzggMjIxTDM5MCA0NDRINDc1VjQzN1E0OTcgMjAzIDQ5NyAxMjFRNDk3IDkwIDQ5NCA3MFE0OTQgNjcgNDk0IDY3TDQ5NiA3M1E1MjAgMTQzIDY1NCA0MDVMNjc0IDQ0NEg3MThRNzYyIDQ0NCA3NjIgNDQzTDUzNCAxTDQ4MyAwSDQzMlY1UTQyOSAyOCA0MjIgMTI2VDQxMyAyODNRNDEzIDM0MyA0MTYgMzcwTDQxNyAzNzhRNDE2IDM3NyA0MTYgMzc2UTQwMSAzMDMgMjQ4IDEyTDI0MiAwSDE0OFY1JyxcbiAgICAweDFENjM5OiAnMzE3IDIyOVE0NTMgOSA0NjAgMEg0MDlMMzU5IDFMMzEyIDg4UTI2NiAxNzYgMjY1IDE3NlEyNjUgMTc3IDI1NCAxNjVUMjIzIDEzMlQxODIgODhMMTAwIDBIMUwxNSAxNFEyOSAyOCA2MSA1OVQxMTggMTE1TDIzNiAyMjlMMjI2IDI0NFExMDggNDMzIDEwMCA0NDRIMjAxTDI5MCAyOTRMNDM4IDQ0NEg1MzdMNTI4IDQzNVE1MjYgNDMyIDUxMiA0MThUNDY4IDM3NlQ0MTggMzI3TDMxNyAyMjknLFxuICAgIDB4MUQ2M0E6ICcxMSAtMTE3TDIwIC0xMjBRMjggLTEyNCA0NiAtMTI4VDg0IC0xMzJIMTAwUTEyNCAtMTIyIDE0OSAtODVRMjAwIC02IDIwMCAxUTIwMCAxNyAxNTUgMjA0VDEwOSA0NDJRMTA5IDQ0NCAxNTYgNDQ0SDIwM1EyMDMgNDQzIDIwOCA0MTlUMjIxIDM1N1QyMzUgMjc3VDI0OCAxOTBUMjU0IDExNFEyNTQgODEgMjUwIDY3VjY1UTI1MSA2NSAyNTEgNjdRMjU2IDk0IDI5NyAxNzdRMzM5IDI1OSA0MjIgMzk3TDQ1MCA0NDRINTQwUTU0MCA0NDMgMzg2IDE4NlQyMTkgLTkwUTE3OSAtMTUzIDE0NSAtMTc5VDczIC0yMDVRNTIgLTIwNSAzNCAtMjAyUTI5IC0yMDIgMjEgLTIwMVQ3IC0xOThMMSAtMTk3UTEgLTE5NiA2IC0xNTdUMTEgLTExNycsXG4gICAgMHgxRDYzQjogJzEyOSA0MDhMMTM2IDQ0NEgzMTVRNDk0IDQ0NCA0OTQgNDQzUTQ5NCA0NDEgNDg5IDQxOUw0ODQgMzk2TDE2NCA3NkwyOTEgNzdRNDE4IDc3IDQxOCA3NlQ0MTEgNDFUNDAyIDJWMEgyMTVRMjggMCAyOCAyTDM0IDI3TDM4IDUwTDM2MCAzNzFMMjQwIDM3MFExMjEgMzcwIDEyMSAzNzFRMTI0IDM4OCAxMjkgNDA4JyxcbiAgICAweDFENjcwOiAnMTkxIDc2UTIxMiA3NSAyMjAgNjhUMjI5IDM4UTIyOSAxMCAyMDggMUgxMjlIODBRNDggMSAzOCA3VDI4IDM4UTI4IDUxIDI5IDU3VDQwIDY5VDcwIDc2UTg5IDc2IDg5IDc4UTkwIDc5IDExNyAyMDVUMTczIDQ2MVQyMDUgNTk5UTIxMiA2MjMgMjUwIDYyM0gyNjJIMjczUTMxMiA2MjMgMzE5IDU5OVEzMjIgNTkxIDM1MCA0NjFUNDA2IDIwNVQ0MzUgNzhRNDM1IDc2IDQ1NCA3Nkg0NThRNDg0IDc2IDQ5MyA1OVE0OTYgNTMgNDk2IDM4UTQ5NiAxMSA0NzggM1E0NzQgMSAzOTUgMUgzMTdRMjk1IDggMjk1IDM4UTI5NSA2NSAzMTEgNzNRMzE2IDc1IDMzMyA3NkwzNDggNzdWNzhRMzQ4IDgwIDM0MSAxMTJMMzM0IDE0M0gxOTBMMTgzIDExMlExNzYgODAgMTc2IDc4UTE3NSA3NiAxNzggNzZRMTgwIDc2IDE5MSA3NlpNMzE4IDIyMVEzMTMgMjM4IDI4OCAzNjZUMjYzIDUxOVEyNjMgNTI2IDI2MiA1MjdRMjYxIDUyNyAyNjEgNTIwUTI2MSA0OTMgMjM2IDM2NVQyMDYgMjIxUTIwNiAyMTkgMjYyIDIxOVQzMTggMjIxJyxcbiAgICAweDFENjcxOiAnMzkgMVExNyAxMCAxNyAzMlYzOFY0NlExNyA2NSAzNCA3M1E0MCA3NiA2MSA3Nkg4NFY1MzVINjFINTRRMjcgNTM1IDE5IDU1M1ExNyA1NTcgMTcgNTczUTE3IDU4MyAxNyA1ODdUMjMgNTk5VDM5IDYxMFE0MCA2MTEgMTc5IDYxMVEzMjAgNjEwIDMzMiA2MDdRMzMyIDYwNyAzMzkgNjA1UTM5NCA1OTEgNDI3IDU0N1Q0NjEgNDU0UTQ2MSA0MTMgNDM2IDM3OFQzNjkgMzI1TDM1OCAzMjBRNDA1IDMxMSA0NDMgMjcwVDQ4MiAxNjlRNDgyIDExMiA0NDUgNjRUMzQ1IDNMMzM0IDFIMzlaTTMwOSA1MzNRMzAyIDUzNSAyMzQgNTM1SDE2OFYzNTZIMjMwUTI4NCAzNTcgMjk2IDM1OFQzMjMgMzY4UTM0NiAzODAgMzYxIDQwMlQzNzcgNDUyUTM3NyA0ODIgMzU4IDUwNVQzMDkgNTMzWk0zOTggMTc2UTM5NiAyMTggMzcxIDI0NlQzMTUgMjc5UTMxMCAyODAgMjM3IDI4MEgxNjhWNzZIMjM5UTMxNiA3NyAzMjcgODFRMzI5IDgyIDMzNCA4NFEzOTggMTA3IDM5OCAxNzYnLFxuICAgIDB4MUQ2NzI6ICc0MCAzMDVRNDAgNDM3IDExMCA1MjlUMjgxIDYyMlEzMTUgNjIyIDM0MyA2MTFUMzg3IDU4OVQ0MDQgNTc4UTQwOSA1ODUgNDE1IDU5NlQ0MjUgNjExVDQzNSA2MThUNDUyIDYyMlE0NzIgNjIyIDQ3OCA2MDlUNDg1IDU2NlE0ODUgNTU5IDQ4NSA1NDBUNDg0IDUwOFY0NjBRNDg0IDQxMyA0NzggNDAzVDQ0MiAzOTNRNDE3IDM5MyA0MDkgNDAyUTQwMCA0MDkgNDAwIDQyMFE0MDAgNDI4IDM5NSA0NDVUMzgwIDQ4N1QzNDcgNTI4VDI5NSA1NDZRMjM1IDU0NiAxODAgNDgzVDEyNCAzMDZRMTI0IDI0NSAxNDEgMTk3VDE4NiAxMjFUMjQxIDgwVDI5NiA2NlEzNDYgNjYgMzczIDEwM1Q0MDAgMTc4UTQwMCAyMDkgNDM1IDIwOUg0NDJINDUwUTQ4NCAyMDkgNDg0IDE3MlE0ODAgOTYgNDIxIDQzVDI4MSAtMTFRMTc3IC0xMSAxMDkgODRUNDAgMzA1JyxcbiAgICAweDFENjczOiAnMzggMVExNiA4IDE2IDM4UTE2IDYyIDMyIDczUTM5IDc2IDU4IDc2SDc4VjUzNUg1OFE0MCA1MzUgMzIgNTM4UTE2IDU0OCAxNiA1NzNRMTYgNTg3IDE3IDU5MVEyMyA2MDQgMzQgNjA3VDgzIDYxMUgxNjZIMTc2UTE4OCA2MTEgMjA5IDYxMVQyMzkgNjEyUTI5OSA2MTIgMzM3IDU5N1Q0MTUgNTMwUTQ4NSA0MzggNDg1IDMwMFE0ODUgMTgwIDQzMSAxMDBUMzAxIDNMMjkxIDFIMzhaTTQwMCAzMDFRNDAwIDM2MyAzODUgNDEwVDM0NiA0ODJUMzAzIDUxOVQyNjcgNTM0UTI2MSA1MzUgMjEwIDUzNUgxNjJWNzZIMjE0TDI2NyA3N1EzMjMgODkgMzYxIDE0OFQ0MDAgMzAxJyxcbiAgICAweDFENjc0OiAnMzc0IDI3MVEzNzQgMjQxIDM2NyAyMzJUMzMyIDIyM1EzMDcgMjIzIDI5OSAyMzFRMjkwIDI0MCAyOTAgMjYzVjI3OUgxNzNWNzZINDE4VjExOFYxNDRRNDE4IDE2NyA0MjYgMTc2VDQ2MCAxODZRNDkxIDE4NiA1MDAgMTY2UTUwMiAxNjEgNTAyIDkzVjUyUTUwMiAyNSA0OTkgMTdUNDgwIDFINDFRMTkgOSAxOSAzMlYzOFExOSA2MyAzNiA3M1E0MiA3NiA2NSA3Nkg4OVY1MzVINjVINTVRNDQgNTM1IDM4IDUzN1QyNSA1NDhUMTkgNTczUTE5IDYwMiA0MSA2MTBINDdRNTMgNjEwIDYzIDYxMFQ4OCA2MTBUMTIxIDYxMFQxNjAgNjExVDIwNCA2MTFUMjUxIDYxMUg0NThRNDYwIDYwOSA0NjUgNjA2VDQ3MSA2MDJUNDc1IDU5OFQ0NzggNTkzVDQ3OSA1ODZUNDgwIDU3NlQ0ODAgNTYyVjUyNlY0ODhRNDgwIDQ1MiA0NjIgNDQ0UTQ1OCA0NDIgNDM4IDQ0MlE0MTMgNDQyIDQwNSA0NTBRMzk4IDQ1NyAzOTcgNDYzVDM5NiA1MDFWNTM1SDE3M1YzNTVIMjkwVjM3MVEyOTAgMzk0IDI5OSA0MDNUMzMyIDQxMlEzNjMgNDEyIDM3MiAzOTJRMzc0IDM4NyAzNzQgMzE3VjI3MScsXG4gICAgMHgxRDY3NTogJzM4NCAyNjBRMzg0IDIzMCAzNzcgMjIxVDM0MiAyMTJRMzE3IDIxMiAzMDkgMjIwUTMwMCAyMjkgMzAwIDI1MlYyNjhIMTc5Vjc2SDI0OVEyNjQgNjcgMjY3IDYxVDI3MSAzOFEyNzEgMTAgMjQ5IDFINDRRMjIgOSAyMiAzMlYzOFEyMiA2MyAzOSA3M1E0NSA3NiA2OSA3Nkg5NVY1MzVINjlINTlRNDIgNTM1IDMyIDU0MlQyMiA1NzNRMjIgNjAyIDQ0IDYxMEg1MFE1NiA2MTAgNjYgNjEwVDkxIDYxMFQxMjUgNjEwVDE2NCA2MTFUMjA4IDYxMVQyNTcgNjExSDQ2OFE0NzAgNjA5IDQ3NSA2MDZUNDgxIDYwMlQ0ODUgNTk4VDQ4OCA1OTNUNDg5IDU4NlQ0OTAgNTc2VDQ5MCA1NjJWNTI2VjQ4OFE0OTAgNDUyIDQ3MiA0NDRRNDY4IDQ0MiA0NDggNDQyUTQyMyA0NDIgNDE1IDQ1MFE0MDggNDU3IDQwNyA0NjNUNDA2IDUwMVY1MzVIMTc5VjM0NEgzMDBWMzYwUTMwMCAzODMgMzA5IDM5MlQzNDIgNDAxUTM3MyA0MDEgMzgyIDM4MVEzODQgMzc2IDM4NCAzMDZWMjYwJyxcbiAgICAweDFENjc2OiAnMzggMzA2UTM4IDQ0NyAxMDUgNTM0VDI2MSA2MjJRMjgwIDYyMiAyOTggNjE4VDMyOSA2MDhUMzUwIDU5NlQzNjYgNTg1TDM3MSA1ODFRMzczIDU4MSAzNzcgNTkxVDM5MCA2MTJUNDE3IDYyMlE0MzcgNjIyIDQ0MyA2MDlUNDUwIDU2NlE0NTAgNTU5IDQ1MCA1NDBUNDQ5IDUwOFY0NjBRNDQ5IDQxMyA0NDMgNDAzVDQwNyAzOTNRMzkyIDM5MyAzODYgMzk0VDM3MyA0MDJUMzY0IDQyNlEzNjAgNDcyIDMzNSA1MDlUMjcxIDU0NlEyMTQgNTQ2IDE2OCA0NzdUMTIxIDMwOFExMjEgMjEwIDE2NCAxMzhUMjcxIDY1UTI5MyA2NSAzMTAgNzhUMzM3IDEwOVQzNTIgMTQ3VDM2MCAxODBUMzYyIDE5NVEzNjIgMTk2IDMzMyAxOTZMMzA0IDE5N1EyODIgMjA0IDI4MiAyMjdWMjM0UTI4MiAyNDcgMjgyIDI1MVQyODggMjYxVDMwNCAyNzJINDc0UTQ4OCAyNjMgNDkyIDI1NlQ0OTYgMjM0UTQ5NiAyMTEgNDc5IDE5OVE0NzUgMTk3IDQ2MSAxOTZINDQ5VjIxUTQ0MSA2IDQzNCAzVDQxMiAtMUg0MDdINDAyUTM4NSAtMSAzNzkgM1QzNjQgMjhRMzUwIDE0IDMyMiAyVDI2MCAtMTFRMTczIC0xMSAxMDYgNzZUMzggMzA2JyxcbiAgICAweDFENjc3OiAnMTYgNTcxUTE2IDU5NyAyNyA2MDRUNzQgNjExSDEyNUgyMDhRMjIzIDYwMiAyMjYgNTk2VDIzMCA1NzNRMjMwIDU1OSAyMjcgNTUxVDIxNyA1NDBUMjA0IDUzNlQxODYgNTM1SDE2NVYzNTZIMzU5VjUzNUgzMzhIMzMzUTMwNiA1MzUgMjk3IDU1MlEyOTUgNTU2IDI5NSA1NzNRMjk1IDU4NiAyOTUgNTkwVDMwMSA2MDBUMzE3IDYxMUg0ODZRNTAxIDYwMiA1MDQgNTk2VDUwOCA1NzNRNTA4IDU1OSA1MDUgNTUxVDQ5NSA1NDBUNDgyIDUzNlQ0NjQgNTM1SDQ0M1Y3Nkg0NjRINDcwUTQ4MiA3NiA0ODkgNzVUNTAyIDY0VDUwOCAzOFE1MDggMTAgNDg2IDFIMzE3UTMwNiA1IDMwMSAxMVQyOTYgMjFUMjk1IDM4VjQ0UTI5NSA2NiAzMTEgNzNRMzE4IDc2IDMzOCA3NkgzNTlWMjgwSDE2NVY3NkgxODZIMTkyUTIwNCA3NiAyMTEgNzVUMjI0IDY0VDIzMCAzOFEyMzAgMTAgMjA4IDFIMzlRMjggNSAyMyAxMVQxOCAyMVQxNyAzOFY0NFExNyA2NiAzMyA3M1E0MCA3NiA2MCA3Nkg4MVY1MzVINjBRNDUgNTM1IDM4IDUzNlQyNCA1NDVUMTYgNTcxJyxcbiAgICAweDFENjc4OiAnNDAwIDc2UTQzMSA3NiA0NDEgNjlUNDUyIDM4UTQ1MiAyOSA0NTIgMjZUNDUwIDE4VDQ0MyA5VDQzMCAxSDk1UTg0IDYgNzkgMTJUNzMgMjNUNzIgMzhRNzIgNjUgOTAgNzNROTYgNzYgMTU3IDc2SDIyMFY1MzVIMTU3SDEyNFE5MyA1MzUgODMgNTQyVDcyIDU3M1E3MiA2MDMgOTMgNjEwUTk3IDYxMSAyNjQgNjExSDQzMFE0MzIgNjA5IDQzNiA2MDdUNDQ0IDYwMlQ0NDkgNTk0UTQ1MiA1ODggNDUyIDU3M1E0NTIgNTQ2IDQzNCA1MzhRNDI4IDUzNSAzNjcgNTM1SDMwNFY3NkgzNjdINDAwJyxcbiAgICAweDFENjc5OiAnMjAyIDU0M1QyMDIgNTczVDIyNCA2MTBIMjI4UTIzMSA2MTAgMjM3IDYxMFQyNTEgNjEwVDI2OSA2MTBUMjkxIDYxMVQzMTUgNjExVDM0MiA2MTFINDU3UTQ3MSA2MDIgNDc1IDU5NVQ0NzkgNTczUTQ3OSA1NDkgNDYyIDUzOFE0NTQgNTM1IDQzMiA1MzVINDA4VjMyOFE0MDggMTU5IDQwOCAxMzNUNDAyIDkzUTM4NiA0OCAzNDAgMTlUMjI5IC0xMVExNTggLTExIDEwOCAxNlQ1NyAxMDBRNTcgMTI5IDczIDE0MVQxMDggMTU0UTEyOCAxNTQgMTQzIDE0MFQxNTkgMTAyUTE1OSA5MyAxNTUgNzlRMTg4IDY1IDIyOCA2NUgyMzBRMjkwIDY1IDMxOCAxMDZRMzIzIDExNSAzMjMgMTM5VDMyNCAzMjlWNTM1SDI3NEwyMjQgNTM2UTIwMiA1NDMgMjAyIDU3MycsXG4gICAgMHgxRDY3QTogJzE4IDU0OVQxOCA1NzNUMjkgNjA0VDcwIDYxMUgxMThIMTkzUTIwNyA2MDMgMjEwIDU5NlQyMTQgNTczUTIxNCA1NDkgMTk4IDUzOFExOTEgNTM1IDE3MiA1MzVIMTUyVjQyMVExNTIgMzQ0IDE1MiAzMjZUMTUzIDMwOUwyNDIgNDIyTDMyOSA1MzRRMzI3IDUzNSAzMjIgNTM2VDMxNCA1MzhUMzA4IDU0MlQzMDMgNTQ4VDMwMCA1NThUMjk4IDU3M1EyOTggNjAwIDMxNiA2MDhRMzIyIDYxMSAzOTIgNjExSDQ2M1E0NzcgNjAyIDQ4MSA1OTVUNDg1IDU3M1E0ODUgNTM1IDQ0NiA1MzVINDQxSDQyMEwyODEgMzU3TDQzNiA3N0w0NTQgNzZRNDczIDc1IDQ3OCA3M1E0OTUgNjIgNDk1IDM4UTQ5NSAxMCA0NzMgMUgzNDVRMzM0IDUgMzI5IDExVDMyNCAyMVQzMjMgMzhRMzIzIDUxIDMyNCA1NlQzMzIgNjhUMzU1IDc3TDIzMyAyOTZMMTUyIDE5MlY3NkgxNzJRMTkxIDc2IDE5OCA3M1EyMTQgNjMgMjE0IDM4UTIxNCA5IDE5MyAxSDQxUTE4IDggMTggMzhRMTggNjEgMzUgNzNRNDIgNzYgNjEgNzZIODFWNTM1SDYxUTQyIDUzNSAzNSA1MzhRMTggNTQ5IDE4IDU3MycsXG4gICAgMHgxRDY3QjogJzI3IDU5NFEzNCA2MDUgNDMgNjA4VDg0IDYxMUgxNTRIMjEzUTI1OCA2MTEgMjY5IDYwNVQyODEgNTczUTI4MSA1NDYgMjYzIDUzOFEyNTcgNTM1IDIyMiA1MzVIMTg1Vjc2SDQwNFYxMThWMTQ1UTQwNCAxNjggNDExIDE3N1Q0NDYgMTg2SDQ1M1E0NzggMTg2IDQ4NiAxNjdRNDg4IDE2MSA0ODggOTNWNTBRNDg4IDI0IDQ4NSAxN1Q0NjYgMUwyNTggMEgxNDdIOTlRNDcgMCAzNiA2VDI1IDM4UTI1IDU5IDM1IDY5UTQ0IDc2IDc2IDc2SDEwMVY1MzVINzZINjRRMzYgNTM1IDI3IDU1MlEyNSA1NTcgMjUgNTczVDI3IDU5NCcsXG4gICAgMHgxRDY3QzogJzUwIDUzNVEzNyA1MzYgMzEgNTM3VDE4IDU0N1QxMiA1NzNRMTIgNTk4IDIyIDYwNFQ2MiA2MTFIOTFIMTIxUTE0NyA2MTEgMTU4IDYwN1QxNzggNTg3UTE4MyA1NzkgMjIyIDQ0NlQyNjEgMjkzUTI2MSAyODkgMjYyIDI4OFEyNjMgMjg4IDI2MyAyOTJRMjYzIDMxMSAyOTggNDM0VDM0NiA1ODhRMzUzIDYwMyAzNjUgNjA3VDQwMiA2MTFINDM1SDQ1MFE0ODggNjExIDUwMCA2MDVUNTEyIDU3M1E1MTIgNTU2IDUwNiA1NDdUNDkzIDUzN1Q0NzQgNTM1SDQ1OVY3Nkg0NzRRNDg3IDc1IDQ5MyA3NFQ1MDUgNjRUNTEyIDM4UTUxMiAxMSA0OTQgM1E0OTAgMSA0MjQgMUgzODZRMzU1IDEgMzQ1IDdUMzM1IDM4UTMzNSA1NSAzNDEgNjRUMzU0IDc0VDM3MyA3NkgzODhWMzAyUTM4OCA1MTIgMzg3IDUxOVEzODIgNDgyIDM0NiAzNTlUMzA0IDIyOFEyOTIgMjA0IDI2MiAyMDRUMjIwIDIyOFEyMTUgMjM3IDE3OSAzNTlUMTM3IDUxOVExMzYgNTEyIDEzNiAzMDJWNzZIMTUxUTE2NCA3NSAxNzAgNzRUMTgyIDY0VDE4OSAzOFExODkgMTEgMTcxIDNRMTY3IDEgMTAxIDFINjNRMzIgMSAyMiA3VDEyIDM4UTEyIDU1IDE4IDY0VDMxIDc0VDUwIDc2SDY1VjUzNUg1MCcsXG4gICAgMHgxRDY3RDogJzIwIDU3MVEyMCA1OTggMzAgNjA0VDczIDYxMUgxMDVIMTM2UTE1MiA2MTEgMTYwIDYxMVQxNzcgNjA3VDE4OSA2MDFUMTk4IDU4N1QyMDYgNTY4VDIxNyA1MzdUMjMxIDQ5N1EzNTQgMTQyIDM2NSA5NUwzNjggODRWNTM1SDM0N0gzNDJRMzE0IDUzNSAzMDYgNTUyUTMwNCA1NTYgMzA0IDU3M1EzMDQgNTg2IDMwNCA1OTBUMzEwIDYwMFQzMjYgNjExSDQ4MlE0OTcgNjAyIDUwMCA1OTZUNTA0IDU3M1E1MDQgNTU5IDUwMSA1NTFUNDkxIDU0MFQ0NzggNTM2VDQ2MCA1MzVINDM5VjI1UTQzMiA3IDQyNCA0VDM4OSAwSDM3NFEzMzQgMCAzMjIgMzFMMjkzIDExNVExNzEgNDY4IDE1OSA1MTdMMTU2IDUyOFY3NkgxNzdIMTgzUTE5NSA3NiAyMDIgNzVUMjE1IDY0VDIyMSAzOFEyMjEgMTAgMTk5IDFINDNRMzIgNSAyNyAxMVQyMiAyMVQyMSAzOFY0NFEyMSA2NiAzNyA3M1E0NCA3NiA2NCA3Nkg4NVY1MzVINjRRNDkgNTM1IDQyIDUzNlQyOCA1NDVUMjAgNTcxJyxcbiAgICAweDFENjdFOiAnMTAyIDU4OFExNDAgNjIxIDI0MCA2MjFRMzIzIDYyMSAzMzUgNjIwUTM5MyA2MTMgNDIyIDU4OFE0NTAgNTYwIDQ1OSA0OTNUNDY4IDMwNlE0NjggMTg1IDQ2MCAxMThUNDIyIDIzUTM4MiAtMTAgMjg5IC0xMEgyNjJIMjM1UTE0MiAtMTAgMTAyIDIzUTc0IDUwIDY1IDExOFQ1NiAzMDZRNTYgNDI3IDY0IDQ5NFQxMDIgNTg4Wk0zNjMgNTEzUTM1NyA1MjMgMzQ3IDUzMFQzMjQgNTQwVDMwMiA1NDRUMjgwIDU0NkgyNjhRMTkyIDU0NiAxNjcgNTIxUTE1MCA1MDEgMTQ1IDQ1MlQxNDAgMzAwUTE0MCAyMzUgMTQyIDE5N1QxNTEgMTMwVDE3MiA4OVQyMDcgNzFUMjYyIDY1UTMxNyA2NSAzNDEgODFUMzc0IDE0NFQzODQgMzAwUTM4NCA0NzQgMzYzIDUxMycsXG4gICAgMHgxRDY3RjogJzQxIDFRMTkgOSAxOSAzMlYzOFExOSA2MyAzNiA3M1E0MiA3NiA2NSA3Nkg4OVY1MzVINjVINTVRMzggNTM1IDI5IDU0M1QxOSA1NzZRMTkgNjAzIDQxIDYxMEg0OVE1NyA2MTAgNzAgNjEwVDEwMCA2MTBUMTM2IDYxMVQxNzUgNjExUTE5MCA2MTEgMjE2IDYxMVQyNTUgNjEyUTMyMSA2MTIgMzYzIDU5OFQ0NDEgNTM3UTQ4MCA0ODYgNDgwIDQyN1Y0MjFRNDgwIDM1NCA0NDcgMzExVDM3OCAyNTFRMzM5IDIzMCAyNzUgMjMwSDIzOUgxNzNWNzZIMTk3UTIyMCA3NiAyMjcgNzNRMjQ0IDYyIDI0NCAzOFEyNDQgMTAgMjIyIDFINDFaTTM5NiA0MjFRMzk2IDQ2MSAzNjkgNDkxVDMwMCA1MzNRMjk0IDUzNCAyMzMgNTM1SDE3M1YzMDZIMjMzUTI5NCAzMDcgMzAwIDMwOFEzNDUgMzE5IDM3MCAzNTJUMzk2IDQyMScsXG4gICAgMHgxRDY4MDogJzU2IDMwNlE1NiAzODAgNTggNDI2VDY4IDUxMFQ4NyA1NjhUMTIwIDYwMFQxNzAgNjE3VDI0MCA2MjFRMzIzIDYyMSAzMzUgNjIwUTM5MyA2MTMgNDIyIDU4OFE0NTAgNTYwIDQ1OSA0OTNUNDY4IDMwNlE0NjggMTI0IDQ0NyA2NlE0MzMgMjMgMzk0IDZMNDI0IC01M1E0NTQgLTExMiA0NTQgLTExOFE0NTQgLTEyOCA0NDEgLTEzOEgzNzdRMzY3IC0xMzUgMzYzIC0xMjlUMzMzIC02OUwzMDQgLTExSDI1NFEyMDUgLTEwIDE4MCAtOFQxMjggNlQ5MSAzNlQ3MCA5MlQ1OCAxNzhUNTYgMzA2Wk0yMjcgMTUxUTIyNyAxNzEgMjYyIDE3MUgyNzZIMjgxUTI5MiAxNzEgMjk2IDE3MVQzMDUgMTcwVDMxMyAxNjVUMzE3IDE1OFQzMjMgMTQ1VDMzMiAxMjdMMzUzIDg4UTM1NiA4OCAzNjEgOTVUMzcyIDEzMVQzODIgMjAyUTM4NCAyMjggMzg0IDMwNlEzODQgNDUyIDM3MSA0OTJUMzA0IDU0NFEyOTYgNTQ1IDI1MSA1NDVRMjMwIDU0NSAyMTUgNTQzVDE4OCA1MzRUMTY5IDUyMFQxNTUgNDk3VDE0NyA0NjZUMTQzIDQyM1QxNDEgMzcxVDE0MCAzMDZRMTQwIDI0OCAxNDEgMjE3VDE0NiAxNTRUMTU3IDEwOVQxNzggODNUMjEyIDY4VDI2MiA2NUgyNjZMMjY0IDcwUTI2MSA3NSAyNTYgODVUMjQ3IDEwNVEyMjcgMTQ1IDIyNyAxNTEnLFxuICAgIDB4MUQ2ODE6ICcxNiA1NzFRMTYgNTk4IDI3IDYwNVQ3NiA2MTJRODQgNjEyIDEwOCA2MTJUMTQ4IDYxMVEyNjggNjExIDI5NCA2MDVRMzQ2IDU5MiAzODkgNTUwVDQzMiA0NDBRNDMyIDM5NCA0MTAgMzU5UTM5MyAzMjkgMzY2IDMxMEwzNTggMzAzUTM4NyAyNzMgMzk5IDIzOVE0MDUgMjE5IDQwNSAxNzhUNDA4IDEwNlQ0MjEgNjhRNDI2IDY1IDQyOCA2NVE0MzMgNjUgNDM1IDc0VDQzOCA5NlQ0NDEgMTEyUTQ1MCAxMzAgNDgwIDEzMEg0ODVRNTE5IDEzMCA1MjIgMTAwUTUyMiA3OSA1MTYgNTZUNDg4IDExVDQzNCAtMTFRNDIxIC0xMSA0MDggLThUMzc3IDVUMzQ0IDM3VDMyNCA5M1EzMjIgMTAxIDMyMiAxNTRMMzIxIDIwOVEzMDQgMjU3IDI1NyAyNjdRMjUyIDI2OCAyMDcgMjY4SDE2NVY3NkgxODZIMTkyUTIwNCA3NiAyMTEgNzVUMjI0IDY0VDIzMCAzOFEyMzAgMTAgMjA4IDFIMzlRMjggNSAyMyAxMVQxOCAyMVQxNyAzOFY0NFExNyA2NiAzMyA3M1E0MCA3NiA2MCA3Nkg4MVY1MzVINjBRNDUgNTM1IDM4IDUzNlQyNCA1NDVUMTYgNTcxWk0zNDggNDQwUTM0OCA0NzggMzIxIDUwMlQyNjAgNTMyUTI1MiA1MzQgMjA4IDUzNUgxNjVWMzQ0SDIwOFEyMTIgMzQ0IDIyMyAzNDRUMjM5IDM0NVQyNTIgMzQ2VDI2NiAzNDhUMjc4IDM1MVQyOTMgMzU4UTM0OCAzODcgMzQ4IDQ0MCcsXG4gICAgMHgxRDY4MjogJzUyIDQ1NFE1MiA1MjQgMTA3IDU3MlQyMjkgNjIxUTI2NiA2MjEgMjc0IDYyMFEzMjYgNjEwIDM2MCA1ODhMMzcxIDU4MVEzNzcgNTk0IDM3OSA1OThUMzg2IDYxMFQzOTcgNjE5VDQxMiA2MjJRNDMzIDYyMiA0MzkgNjEwVDQ0NiA1NzBRNDQ2IDU2MyA0NDYgNTQ1VDQ0NSA1MTVWNDc5UTQ0NSA0NDEgNDQ0IDQzMlQ0MzYgNDE3UTQyOCA0MDggNDAzIDQwOFQzNzAgNDE3UTM2MSA0MjQgMzYxIDQzNFEzNjEgNDM5IDM2MCA0NDhUMzUxIDQ3NlQzMzEgNTA5VDI5NSA1MzVUMjM4IDU0NlExOTQgNTQ2IDE2MyA1MjJUMTMyIDQ1OFExMzIgNDM1IDE0OCA0MTJRMTU1IDQwMSAxNjYgMzkzVDE5MiAzODBUMjE4IDM3MVQyNDcgMzY0VDI3MCAzNTlRMzQxIDM0MiAzNDkgMzM5UTM4OSAzMjUgNDE4IDI5NlQ0NjEgMjI5UTQ3MiAyMDEgNDcyIDE2NFE0NjkgOTIgNDE3IDQxVDI4NyAtMTFRMjQwIC0xMSAyMDAgLTFUMTQzIDE5TDEyNiAyOVExMTcgNiAxMDkgLTJRMTAwIC0xMSA4NCAtMTFRNjQgLTExIDU4IDFUNTEgNDJRNTEgNDkgNTEgNjZUNTIgOTVWMTM1UTUyIDE3MyA1MyAxODBUNjEgMTk0UTcwIDIwMyA5NSAyMDNRMTE5IDIwMyAxMjcgMTk0UTEzNiAxODYgMTM2IDE2OFExNDMgNjYgMjg0IDY2SDI5MFEzMjUgNjYgMzUwIDg1UTM5MSAxMTUgMzkxIDE2NVEzOTEgMjA0IDM2OSAyMjhUMzIyIDI2MFEzMjAgMjYwIDI1NSAyNzVUMTg1IDI5M1ExMjMgMzA5IDg4IDM1NVQ1MiA0NTQnLFxuICAgIDB4MUQ2ODM6ICcxMjkgMzhRMTI5IDUxIDEyOSA1NVQxMzUgNjVUMTUxIDc2SDIyMFY1MzVIMTEwVjUwMVExMTAgNDcwIDEwOSA0NjRUMTAxIDQ1MFE5MyA0NDIgNjggNDQySDYwUTM3IDQ0MiAyOCA0NjFRMjYgNDY2IDI2IDUyN0wyNyA1ODlRMzYgNjA3IDQ5IDYxMEg1NVE2MSA2MTAgNzIgNjEwVDk3IDYxMFQxMzEgNjEwVDE3MCA2MTFUMjE1IDYxMVQyNjQgNjExSDQ3NlE0NzggNjA5IDQ4MyA2MDZUNDg5IDYwMlQ0OTMgNTk4VDQ5NiA1OTNUNDk3IDU4NlQ0OTggNTc2VDQ5OCA1NjJWNTI2VjQ4OFE0OTggNDUyIDQ4MCA0NDRRNDc2IDQ0MiA0NTYgNDQyUTQzMSA0NDIgNDIzIDQ1MFE0MTYgNDU3IDQxNSA0NjNUNDE0IDUwMVY1MzVIMzA0Vjc2SDM3NFEzODkgNjcgMzkyIDYxVDM5NiAzOFEzOTYgMTAgMzc0IDFIMTUxUTE0MCA1IDEzNSAxMVQxMzAgMjFUMTI5IDM4JyxcbiAgICAweDFENjg0OiAnLTMgNTczUS0zIDU5NyA4IDYwNFQ1MCA2MTJRNTcgNjEyIDc3IDYxMlQxMTEgNjExSDIwMFEyMTQgNjAyIDIxOCA1OTVUMjIyIDU3M1EyMjIgNTQ5IDIwNSA1MzhRMTk4IDUzNSAxNzUgNTM1SDE1MVYzNTlRMTUxIDMzMyAxNTEgMjkxUTE1MiAxNzcgMTU2IDE2MlExNTcgMTYwIDE1NyAxNTlRMTY1IDEyMyAxOTMgOTVUMjYyIDY2UTMwMyA2NiAzMzAgOTRUMzY3IDE1OVEzNzEgMTc1IDM3MSAxOTFUMzczIDM1OVY1MzVIMzQ5SDMzOVEzMjggNTM1IDMyMiA1MzdUMzA5IDU0OFQzMDMgNTczVDMwNiA1OTVUMzI1IDYxMUg1MDZRNTIwIDYwMiA1MjQgNTk1VDUyOCA1NzNRNTI4IDU0OSA1MTEgNTM4UTUwNCA1MzUgNDgxIDUzNUg0NTdWMzY0UTQ1NyAxODkgNDU2IDE4MlE0NDggMTAxIDM5NCA0NVQyNjIgLTExUTE4OSAtMTEgMTMyIDQzVDY4IDE4MlE2NyAxODkgNjcgMzY0VjUzNUg0M0gzM1EyMiA1MzUgMTYgNTM3VDMgNTQ4VC0zIDU3MycsXG4gICAgMHgxRDY4NTogJzE5IDU3OFExOSA1ODUgMjAgNTkwVDIzIDU5OFQyOSA2MDRUMzggNjA4VDQ4IDYxMFQ2MiA2MTFUNzggNjEyVDk3IDYxMVQxMTkgNjExSDE5NVEyMTAgNjAyIDIxMyA1OTZUMjE3IDU3M1EyMTcgNTYxIDIxNiA1NTVUMjA2IDU0MlQxNzkgNTM1SDE2NFExNjYgNTI5IDE4OCA0MzVUMjM1IDIzMVQyNjEgOTRMMjYyIDg0Vjg4UTI2MyA5MSAyNjMgOTRRMjY1IDEyMSAyODkgMjMxVDMzNiA0MzhMMzYwIDUzNUgzNDVRMzA4IDUzNSAzMDggNTY2VjU3M1EzMDggNTg2IDMwOCA1OTBUMzE0IDYwMFQzMzAgNjExSDQ4NFE0OTkgNjAyIDUwMiA1OTVUNTA1IDU3M1E1MDUgNTYwIDUwNCA1NTRUNDkzIDU0MVQ0NjUgNTM1SDQ0N0wzODQgMjc4UTMyMSAxOSAzMTkgMTRRMzA5IC03IDI3OCAtN0gyNjJIMjQ2UTIxNSAtNyAyMDUgMTRRMjAzIDE5IDE0MCAyNzhMNzggNTM1SDU5UTQ1IDUzNSAzOCA1MzZUMjUgNTQ3VDE5IDU3M1Y1NzgnLFxuICAgIDB4MUQ2ODY6ICc0NTkgNjExUTQ5MSA2MTEgNTAxIDYwNVQ1MTIgNTczUTUxMiA1MzggNDgyIDUzNUg0NzRMNDM5IDI3NlE0MDYgMjYgNDAyIDExUTM5OCAyIDM4OSAtM1EzODcgLTMgMzg2IC00TDM4MCAtN0gzNTlIMzQ5UTMyNCAtNyAzMTMgMTNRMzA3IDI5IDI4NSAxMzlUMjYzIDI3NVEyNjMgMjgzIDI2MiAyODNRMjYxIDI4MiAyNjEgMjc0UTI2MSAyNDggMjM5IDEzN1QyMTEgMTNRMjAwIC03IDE3NSAtN0gxNjVIMTQ0UTEzNiAtMyAxMjcgM1ExMjEgMTAgMTE3IDM2VDg1IDI3Nkw1MCA1MzVINDJRMjYgNTM2IDE5IDU0NVQxMiA1NjRWNTczUTEyIDYwMyAzMyA2MTBRMzcgNjExIDEwMSA2MTFIMTM0UTE2NSA2MTEgMTc1IDYwNFQxODYgNTczUTE4NiA1NjMgMTg2IDU1OVQxODIgNTQ3VDE2OSA1MzhUMTQzIDUzNUgxMjJWNTMxUTEyNCA1MTcgMTMzIDQ0NlQxNTUgMjY2VDE3MiA5NlY4NEwxNzMgMTAyUTE3NiAxNTcgMTkyIDI0M1QyMTUgMzQ2UTIyNyAzNjcgMjU5IDM2N0gyNjJIMjY1UTI5NyAzNjcgMzA5IDM0NlEzMTYgMzI5IDMzMiAyNDNUMzUxIDEwMkwzNTIgODRWOTZRMzU2IDE2MSAzNjggMjY2VDM5MCA0NDRUNDAyIDUzMVY1MzVIMzgxUTM2NiA1MzUgMzU5IDUzNlQzNDUgNTQ3VDMzOCA1NzNRMzM4IDYwMCAzNTYgNjA4UTM2MiA2MTEgNDI1IDYxMUg0NTknLFxuICAgIDB4MUQ2ODc6ICczOSA1NzFRMzkgNTk3IDQ5IDYwNFQ5MyA2MTFIMTQxSDIxOFEyMzMgNjAyIDIzNiA1OTVUMjM5IDU3M1EyMzkgNTM4IDIxMCA1MzVRMjAyIDUzNSAyMDIgNTM0VDIxNSA1MDdUMjQzIDQ1NEwyNTcgNDI4TDMwNyA1MzVIMjk4UTI2NiA1MzggMjY2IDU3M1EyNjYgNTg0IDI2NyA1ODhUMjczIDU5OFQyODkgNjExSDM2Nkg0MDFRNDQyIDYxMSA0NTQgNjA1VDQ2NiA1NzNRNDY2IDU0NiA0NDggNTM4UTQ0MiA1MzUgNDIxIDUzNUgzOThMMjk5IDMyN1EyOTkgMzIzIDM2MiAyMDFMNDI2IDc3TDQ0OSA3NlE0NjcgNzYgNDc1IDc1VDQ4OSA2NVQ0OTUgMzhRNDk1IDExIDQ3NyAzUTQ3MyAxIDM5NSAxSDMxN1EyOTUgOCAyOTUgMzhRMjk1IDczIDMyNSA3NkwzMzQgNzdRMzMzIDc4IDMxNCAxMTdUMjc2IDE5NkwyNTcgMjM1TDIzOSAxOTZRMjIxIDE1NyAyMDQgMTE4VDE4NiA3N1ExOTAgNzYgMTk2IDc2UTIxMSA3NCAyMTggNjdUMjI3IDU1VDIyOCAzOFEyMjggMjggMjI3IDI0VDIyMSAxM1QyMDYgMUg1MFEyOCA5IDI4IDMyVjM4UTI4IDYzIDQ1IDczUTUxIDc2IDczIDc2SDk2TDIxNCAzMjRRMjE1IDMyNyAxNjIgNDMxTDEwOCA1MzVIODVINzlRNjcgNTM1IDYwIDUzNlQ0NiA1NDZUMzkgNTcxJyxcbiAgICAweDFENjg4OiAnMjAgNTczUTIwIDU5NyAzMCA2MDRUNzIgNjExSDEyMUgxOThRMjEyIDYwMiAyMTYgNTk1VDIyMCA1NzNRMjIwIDU2OCAyMTkgNTYzVDIxNyA1NTVUMjE0IDU0OVQyMTEgNTQ0VDIwNyA1NDFUMjAzIDUzOFQxOTggNTM3VDE5NCA1MzZUMTkwIDUzNkwxODggNTM1UTE3OSA1MzUgMTc5IDUzNEwxODggNTE2UTE5NiA0OTcgMjA4IDQ3MFQyMzIgNDE1VDI1MiAzNjNUMjYxIDMzMlEyNjEgMzI5IDI2MiAzMjlUMjYzIDMzMlEyNjMgMzU0IDMzMyA1MDhMMzQ1IDUzNFEzNDUgNTM1IDMzNiA1MzVRMzA1IDUzOCAzMDUgNTY3VjU3M1EzMDUgNTg5IDMwOCA1OTVUMzI3IDYxMUg0ODNRNTA1IDU5OCA1MDUgNTczUTUwNSA1NDkgNDg4IDUzOFE0ODEgNTM1IDQ2MCA1MzVINDM4TDMwNCAyNDVWNzZIMzI1SDMzMVEzNDMgNzYgMzUwIDc1VDM2MyA2NFQzNjkgMzhRMzY5IDEwIDM0NyAxSDE3OFExNjcgNSAxNjIgMTFUMTU3IDIxVDE1NiAzOFY0NFExNTYgNjYgMTcyIDczUTE4MCA3NiAxOTkgNzZIMjIwVjI0NUw4NiA1MzVINjRRNDQgNTM1IDM2IDUzOFEyMCA1NDggMjAgNTczJyxcbiAgICAweDFENjg5OiAnNzEgMVE2MCA1IDU1IDExVDQ5IDIzVDQ4IDM5VjQ2UTQ4IDU2IDU4IDczVDEzMSAxODNRMTcxIDI0MiAxOTcgMjgyTDM2NiA1MzVIMTQ0VjUwMVExNDQgNDcwIDE0MyA0NjRUMTM1IDQ1MFExMjcgNDQyIDEwMiA0NDJIOTRRNzEgNDQyIDYyIDQ2MVE2MCA0NjYgNjAgNTI3TDYxIDU4OVE3MCA2MDcgODMgNjEwSDg4UTkzIDYxMCAxMDIgNjEwVDEyNCA2MTBUMTU0IDYxMFQxODggNjExVDIyNyA2MTFUMjcwIDYxMUg0NTRRNDU2IDYwOSA0NjEgNjA2VDQ2NyA2MDFUNDcxIDU5N1Q0NzQgNTkxVDQ3NSA1ODRUNDc2IDU3MlY1NjVRNDc2IDU1NSA0NjYgNTM4VDM5MyA0MjhRMzUzIDM2OSAzMjcgMzI5TDE1OCA3NkgzOTdWMTIwVjE0NlEzOTcgMTY5IDQwNSAxNzlUNDM5IDE4OVE0NzAgMTg5IDQ3OSAxNjlRNDgxIDE2NCA0ODEgOTVWNDhRNDgxIDI0IDQ3OCAxNlQ0NTkgMUg3MScsXG4gICAgMHgxRDY4QTogJzEyNiAzMDZRMTA1IDMwNiA5MCAzMjFUNzQgMzU5UTc0IDQzOSAyMTEgNDM5UTI2OCA0MzkgMjc2IDQzOFEzNDMgNDI2IDM4MyAzOTBUNDMwIDMwNlE0MzEgMzAxIDQzMSAxOTBWODFRNDQ2IDc5IDQ2NSA3OFQ0OTIgNzZUNTA5IDcyVDUyMSA2MFQ1MjQgMzhRNTI0IDExIDUwNiAzUTUwMiAxIDQ2NiAxUTQyNiAxIDQwNiA1VDM3OSAxNFQzNTUgMzZMMzQ1IDMwUTI4NCAtNiAyMDUgLTZRMTM1IC02IDkyIDM5VDQ4IDE0MVE0OCAxODIgNzkgMjEyVDE1OCAyNTZUMjUyIDI3OFQzNDIgMjg1SDM0N1YyOTBRMzQ3IDMxNSAzMjUgMzM1VDI2NyAzNjJRMjU4IDM2MyAyMjQgMzYzUTE4OSAzNjMgMTg1IDM2MkgxNzlMMTc4IDM1OFExNzggMzUzIDE3OCAzNTJUMTc2IDM0NVQxNzQgMzM3VDE3MCAzMzBUMTY1IDMyMlQxNTggMzE2VDE1MCAzMTFUMTM5IDMwOFQxMjYgMzA2Wk0xMzIgMTQwUTEzMiAxMTUgMTU3IDkzVDIyNCA3MFEyNjkgNzAgMzAyIDg3VDM0NCAxMzNRMzQ2IDEzOSAzNDcgMTc1VjIxMUgzMzlRMjU2IDIwOSAxOTQgMTkwVDEzMiAxNDAnLFxuICAgIDB4MUQ2OEI6ICc0IDU3M1E0IDU5NiAxNSA2MDNUNTIgNjExSDkwSDEyNFExNDYgNjExIDE1NSA2MDhUMTcxIDU5MVExNzMgNTg2IDE3MyA0OTFWMzk2TDE4MiA0MDJRMjE3IDQyNCAyNTYgNDMxUTI4MCA0MzcgMzA5IDQzN1EzNzYgNDM3IDQzNCAzNzlUNDkyIDIxN1E0OTIgMTYyIDQ3MyAxMThUNDIyIDQ3VDM1OCA4VDI5MyAtNlEyMjkgLTYgMTc0IDM4UTE3MSAxMyAxNjMgN1QxMzUgMUgxMzFIMTIyUTk5IDEgOTAgMjNMODkgMjc5VjUzNUg1OEwyNyA1MzZRNCA1NDMgNCA1NzNaTTQwOSAyMTVRNDA5IDI2OSAzNzcgMzE1VDI4MyAzNjFRMjU1IDM2MSAyMjQgMzQ0VDE3NyAyOTdMMTczIDI5MFYxNjdRMTg5IDEyNCAyMTMgOTdUMjc4IDcwUTMzMCA3MCAzNjkgMTExVDQwOSAyMTUnLFxuICAgIDB4MUQ2OEM6ICcyOTEgLTZRMTk2IC02IDEzMSA2MFQ2NiAyMTZRNjYgMjk2IDExOSAzNjFRMTU0IDQwMyAyMDAgNDIxVDI3MyA0MzlRMjc1IDQ0MCAyOTMgNDQwSDMxM1E0MDAgNDQwIDQzMyA0MDlRNDU0IDM4OCA0NTQgMzU5UTQ1NCAzMzUgNDM5IDMyMVQ0MDIgMzA2UTM4MCAzMDYgMzY1IDMyMVQzNTAgMzU3VjM2MkwzNDAgMzYzUTMzOSAzNjMgMzI2IDM2M1QzMDMgMzY0UTI4MCAzNjQgMjY2IDM2MlEyMTcgMzUyIDE4NCAzMTNUMTUxIDIxNVExNTEgMTUzIDE5OSAxMTJUMzEzIDcwUTM0MSA3MCAzNTcgODVUMzgxIDExOFQzOTQgMTQwUTQwMiAxNDYgNDI0IDE0NlE0NDMgMTQ2IDQ0NyAxNDRRNDY2IDEzNyA0NjYgMTE3UTQ2NiAxMDYgNDU3IDg4VDQyOSA0N1QzNzQgMTBUMjkxIC02JyxcbiAgICAweDFENjhEOiAnMjY2IDU3M1EyNjYgNTk2IDI3NyA2MDNUMzE0IDYxMUgzNTJIMzg1UTQxMSA2MTEgNDE5IDYwN1Q0MzUgNTg2Vjc2SDQ5OFE1MTIgNjcgNTE2IDYwVDUyMCAzOFE1MjAgOSA0OTggMUg0MzZRNDI5IDEgNDE3IDFUMzk4IDBRMzc1IDAgMzYzIDdUMzUxIDM0VjQzTDM0MiAzNlEyODggLTYgMjIzIC02UTE0MyAtNiA4NyA1OFQzMSAyMTZRMzEgMzA3IDg4IDM3MlQyMzAgNDM3UTI5MiA0MzcgMzQyIDQwNUwzNTEgMzk5VjUzNUgzMjBMMjg5IDUzNlEyNjYgNTQzIDI2NiA1NzNaTTM1MSAyOTBRMzQ3IDMwMiAzMzcgMzE2VDMwMiAzNDZUMjQ0IDM2MVExOTMgMzYxIDE1NCAzMTlUMTE1IDIxNVExMTUgMTUyIDE1MiAxMTFUMjM1IDcwUTMxNCA3MCAzNTEgMTcwVjI5MCcsXG4gICAgMHgxRDY4RTogJzQ4IDIxN1E0OCAyOTUgMTAwIDM2MVQyNDggNDM5TDI1OCA0NDBRMjY4IDQ0MCAyNzQgNDQwUTMyOSA0MzggMzY5IDQxNlQ0MjggMzU5VDQ1NiAyOTJUNDY0IDIyOFE0NjQgMjE1IDQ2MSAyMDhUNDU0IDE5OFQ0NDIgMTkwTDI4OCAxODlIMTM1TDEzOCAxNzlRMTUzIDEzMiAxOTkgMTAyVDMwMyA3MVEzMzYgNzEgMzUzIDg2VDM4MCAxMjBUMzk4IDE0M1E0MDQgMTQ2IDQyMiAxNDZRNDUzIDE0NiA0NjIgMTI2UTQ2NCAxMjAgNDY0IDExNlE0NjQgODQgNDE2IDM5VDI4NSAtNlExODcgLTYgMTE4IDU5VDQ4IDIxN1pNMzc3IDI2NFEzNzEgMjkxIDM2NSAzMDZUMzQxIDMzOFQyOTQgMzYyUTI4OCAzNjMgMjY0IDM2M1EyMjUgMzYzIDE5MCAzMzZUMTM5IDI2NEgzNzcnLFxuICAgIDB4MUQ2OEY6ICc0MyAzOTVRNDQgNDA1IDQ0IDQwOFQ0NyA0MTZUNTMgNDIzVDY2IDQzMUgxNzZWNDYxUTE3NiA1MDAgMTgyIDUxOFEyMDEgNTcwIDI1MiA1OTNUMzUzIDYxN1EzOTkgNjE0IDQxOCA1OTNUNDM3IDU0OFE0MzcgNTI4IDQyNCA1MTRUMzg3IDQ5OVEzNjUgNDk5IDM1MyA1MTFUMzM4IDUzN1Y1NDFIMzI4UTI3NSA1MzYgMjYxIDQ5NFEyNjAgNDkwIDI2MCA0NjBWNDMxSDMyN1EzMzQgNDMxIDM0NiA0MzFUMzY0IDQzMlEzOTIgNDMyIDQwNCA0MjVUNDE2IDM5M1Q0MDUgMzYyVDM2NSAzNTVIMzI3SDI2MFY3NkgzMTlRMzc1IDc2IDM4OCA3MVQ0MDEgMzhRNDAxIDI3IDQwMCAyM1QzOTUgMTJUMzc5IDFINThRNDcgNiA0MiAxMlQzNiAyM1QzNSAzOFEzNSA2NSA1MyA3M1E1OSA3NiAxMTcgNzZIMTc2VjM1NUgxMjFIOTNRNjQgMzU1IDU0IDM2MlQ0MyAzOTUnLFxuICAgIDB4MUQ2OTA6ICc2MCAyNzRRNjAgMzM3IDEwNyAzODZUMjMzIDQzNlEyNzggNDM2IDMxNiA0MTdMMzI5IDQxMEwzMzggNDE2UTM4NCA0NDIgNDI3IDQ0MlQ0ODkgNDIzVDUwOSAzODFUNDk0IDM0NVQ0NjAgMzMyUTQ0OSAzMzIgNDQwIDMzOFE0MzIgMzQxIDQyNyAzNDhUNDE5IDM2MFQ0MTUgMzY1UTQxNCAzNjQgNDEwIDM2NEwzODMgMzU1UTQwNiAzMjAgNDA2IDI3NFE0MDYgMjExIDM1OCAxNjJUMjMzIDExMlExODkgMTEyIDE1NSAxMjhMMTQ2IDEzM1ExNDIgMTI1IDE0MiAxMTVRMTQyIDk5IDE1MCA4NVQxNzUgNzFRMTgyIDcyIDE4NyA3MFExODggNzAgMTk1IDcwVDIxOCA3MFQyNTQgNjlRMjU5IDY5IDI3NSA2OVQyOTcgNjlUMzE4IDY4VDM0MCA2NlQzNjEgNjJUMzg0IDU3VDQwNSA0OVQ0MjggMzhRNDk1IC0xIDQ5NSAtNzZRNDk1IC0xNDMgNDI3IC0xODZUMjYyIC0yMjlRMTYxIC0yMjkgOTQgLTE4NVQyOSAtNzNRMzAgLTYwIDMzIC00OFQzOSAtMjZUNDcgLThUNTcgOFQ2NyAyMFQ3NyAzMFQ4NiAzOEw5MSA0M1E5MSA0NCA4NiA1M1Q3NSA4MFQ3MCAxMTdRNzAgMTQyIDg5IDE4M0w4MyAxOTRRNjAgMjMyIDYwIDI3NFpNMzIxIDI3NFEzMjEgMzEyIDI5NiAzMzdUMjMwIDM2MlExOTcgMzYyIDE3MSAzMzhUMTQ1IDI3NFExNDUgMjM1IDE3MCAyMTFUMjMzIDE4N1EyNzMgMTg3IDI5NyAyMTJUMzIxIDI3NFpNNDIyIC03OFE0MjIgLTU0IDQwOCAtMzhUMzY2IC0xNVQzMTUgLTZUMjU1IC00SDIwMFExOTggLTQgMTkzIC00VDE4MyAtM1ExNDggLTMgMTI1IC0yNlQxMDIgLTc4UTEwMiAtMTEwIDE1MSAtMTMyVDI2MSAtMTU0UTMyMSAtMTU0IDM3MSAtMTMyVDQyMiAtNzgnLFxuICAgIDB4MUQ2OTE6ICc0IDU3M1E0IDU5NiAxNSA2MDNUNTIgNjExSDkwSDEyNFExNDYgNjExIDE1NSA2MDhUMTcxIDU5MVExNzMgNTg2IDE3MyA0ODlRMTczIDM5NCAxNzUgMzk0TDE4NiA0MDJRMTk3IDQxMCAyMTkgNDIwVDI2OSA0MzRRMjc4IDQzNiAzMDYgNDM2UTM0MyA0MzYgMzcxIDQyM1E0MTEgNDAyIDQyMyAzNjVUNDM2IDI2NVE0MzYgMjU3IDQzNiAyMzlUNDM1IDIxMVYxOThWNzZINDk4UTUxMiA2NyA1MTYgNjBUNTIwIDM4UTUyMCA5IDQ5OCAxSDMwOFEyODYgMTAgMjg2IDMyVjM4VjQ2UTI4NiA2NSAzMDMgNzNRMzA5IDc2IDMyOSA3NkgzNTFWMTg4UTM1MSAyMDQgMzUxIDIzMFQzNTIgMjY2UTM1MiAzMjEgMzQxIDM0MVQyODggMzYxUTI1MyAzNjEgMjIyIDM0MVQxNzYgMjc0TDE3NCAyNjRMMTczIDE3MFY3NkgyMzZRMjUwIDY3IDI1NCA2MFQyNTggMzhRMjU4IDkgMjM2IDFIMjdRNCA4IDQgMzhRNCA1MyA4IDYwVDI3IDc2SDg5VjUzNUg1OEwyNyA1MzZRNCA1NDMgNCA1NzMnLFxuICAgIDB4MUQ2OTI6ICcyMDIgNTM4VDIwMiA1NTlUMjE4IDU5NlQyNjAgNjEyUTI4MyA2MTIgMzAwIDU5N1QzMTcgNTYwUTMxNyA1MzggMzAwIDUyM1QyNjAgNTA3UTIzNSA1MDcgMjE5IDUyMlpNNDExIDc2UTQ0MSA3NiA0NTEgNjlUNDYyIDM4UTQ2MiAyOSA0NjIgMjZUNDYwIDE4VDQ1MyA5VDQ0MCAxSDk0UTcyIDggNzIgMzNWMzhRNzIgNDYgNzIgNDlUNzQgNThUODEgNjhUOTQgNzZIMjMzVjM1NUgxNjdMMTAyIDM1NlE4MCAzNjMgODAgMzkzUTgwIDQxOCA5MSA0MjVUMTM4IDQzMlExNDUgNDMyIDE2NSA0MzJUMjAwIDQzMUgyOTVRMjk3IDQyOSAzMDMgNDI1VDMxMCA0MjBUMzE0IDQxNVQzMTcgNDA0VDMxNyAzODlUMzE4IDM2M1EzMTggMzU0IDMxOCAzMTRUMzE3IDI0MVY3NkgzNzhINDExJyxcbiAgICAweDFENjkzOiAnMjYxIDU1OVEyNjEgNTgwIDI3NyA1OTZUMzE5IDYxMlEzNDIgNjEyIDM1OSA1OTdUMzc2IDU2MFQzNjAgNTIzVDMyMCA1MDdRMjk2IDUwNyAyNzkgNTIzVDI2MSA1NTlaTTc1IC05MVQxMDAgLTkxVDEzOCAtMTA3VDE1MiAtMTQ0Vi0xNTBMMTYwIC0xNTFIMTkzSDIwM1EyNDEgLTE1MSAyNjcgLTEyMVEyODQgLTk3IDI4OCAtNzNUMjkyIDIzVjE1MVYzNTVIMjE4TDE0NSAzNTZRMTIzIDM2NSAxMjMgMzg3VjM5M1ExMjMgNDIyIDE0NSA0MzBIMTQ4UTE1MSA0MzAgMTU2IDQzMFQxNjkgNDMwVDE4NSA0MzBUMjA1IDQzMVQyMjcgNDMxVDI1MSA0MzFIMzU0UTM1NiA0MzAgMzYwIDQyN1QzNjUgNDI0VDM2OSA0MjBUMzcyIDQxNlQzNzMgNDEwVDM3NSA0MDJUMzc2IDM5MVQzNzcgMzc2VDM3NyAzNTZRMzc3IDM0NSAzNzcgMjg2VDM3NiAxNzZRMzc2IC02NyAzNzEgLTg4UTM2MiAtMTIzIDM0MiAtMTUxVDI5OSAtMTk0UTI1NCAtMjI4IDE4MCAtMjI4UTg0IC0yMjYgNTYgLTE3N1E0OSAtMTYyIDQ4IC0xNDhRNDggLTEyMiA2MSAtMTA3JyxcbiAgICAweDFENjk0OiAnMTMgNDJRMTMgNjMgMjMgNjlUNjkgNzZIMTAyVjUzNUg2OUg1NFEzNCA1MzUgMjQgNTQyVDEzIDU3M1ExMyA1ODggMTUgNTkzUTIyIDYwNSAyOSA2MDhUNTYgNjExSDk1UTExMyA2MTEgMTIyIDYxMVQxNDAgNjEwVDE1MiA2MDlUMTU5IDYwN1QxNjMgNjAzVDE2NyA1OTdUMTczIDU4OVY0MTNMMTc0IDIzN0wyOTUgMzU1SDI3NVEyNjAgMzU1IDI1MyAzNTZUMjM5IDM2N1QyMzIgMzkzUTIzMiA0MTkgMjQzIDQyNVQzMDQgNDMxSDM1OUg0NjRRNDc5IDQyMiA0ODIgNDE1VDQ4NSAzOTNRNDg1IDM2NCA0NjQgMzU2TDQzMSAzNTVIMzk4TDI5MyAyNTRMNDI3IDc2SDQ4NlE1MDEgNjcgNTA0IDYwVDUwNyAzOFE1MDcgMjggNTA3IDI0VDUwMSAxMlQ0ODYgMUgzMTRRMjkyIDggMjkyIDM4UTI5MiA2MiAzMDggNzNRMzEyIDc1IDMyNiA3NkwzMzggNzdMMjkwIDE0MFEyNzkgMTU0IDI2NyAxNzFUMjQ4IDE5NkwyNDIgMjA0TDIwNyAxNzFMMTczIDEzOVY3NkgyMDZIMjIxUTI0MSA3NiAyNTEgNjlUMjYyIDM4UTI2MiAxMSAyNDQgM1EyNDAgMSAxMzggMVExMjMgMSAxMDAgMVQ3MCAwUTMyIDAgMjMgN1QxMyA0MicsXG4gICAgMHgxRDY5NTogJzUxIDU3M1E1MSA2MDIgNzMgNjEwSDc2UTc5IDYxMCA4NCA2MTBUOTcgNjEwVDExMyA2MTBUMTMzIDYxMVQxNTUgNjExVDE3OSA2MTFIMjgyUTMwMSA1OTggMzA0IDU4NlY3Nkg0NTJRNDY2IDY3IDQ3MCA2MFQ0NzQgMzhRNDc0IDEwIDQ1MiAxSDczUTUxIDkgNTEgMzJWMzhRNTEgNTQgNTQgNjBUNzMgNzZIMjIwVjUzNUgxNDZMNzMgNTM2UTUxIDU0NSA1MSA1NjdWNTczJyxcbiAgICAweDFENjk2OiAnMTMzIDc2UTE1NiA3NCAxNjQgNjdUMTcyIDM4UTE3MiA5IDE1MSAxSDExUS0xMiA4IC0xMiAzOFEtMTIgNjEgNSA3M1ExMCA3NSAyOCA3Nkg0NVYzNTVIMjhRMTAgMzU2IDUgMzU4US0xMiAzNzAgLTEyIDM5M1EtMTIgNDE5IDExIDQzMUg1Mkg3MFE5MSA0MzEgMTAwIDQyN1QxMTYgNDA1UTE2MyA0MzYgMjAwIDQzNlEyNTUgNDM2IDI4MSAzOTBMMjg1IDM5NFEyODkgMzk4IDI5MiA0MDBUMzAxIDQwN1QzMTQgNDE1VDMyOSA0MjNUMzQ2IDQyOVQzNjYgNDM0VDM4OSA0MzZIMzkyUTQyNSA0MzYgNDQ4IDQxMVE0NjkgMzkwIDQ3NCAzNjBUNDgwIDI2OFYyMzJWMjAzVjc2SDQ5N1E1MjAgNzQgNTI4IDY3VDUzNiAzOFE1MzYgOSA1MTUgMUgzOTZRMzc0IDkgMzc0IDMyVjM4UTM3NCA3MyA0MDIgNzZINDA5VjE5MVYyNDJRNDA5IDMxNyA0MDQgMzM5VDM3NSAzNjFRMzQzIDM2MSAzMjMgMzMyVDI5OSAyNjRRMjk4IDI1OCAyOTggMTY1Vjc2SDMxNVEzMzggNzQgMzQ2IDY3VDM1NCAzOFEzNTQgOSAzMzMgMUgyMTRRMTkyIDkgMTkyIDMyVjM4UTE5MiA3MyAyMjAgNzZIMjI3VjE5MVYyNDJRMjI3IDMxNyAyMjIgMzM5VDE5MyAzNjFRMTYxIDM2MSAxNDEgMzMyVDExNyAyNjRRMTE2IDI1OCAxMTYgMTY1Vjc2SDEzMycsXG4gICAgMHgxRDY5NzogJzg5IDQzMVE5NCA0MzEgMTA1IDQzMVQxMjIgNDMyUTE3MyA0MzIgMTczIDM5OVExNzMgMzk0IDE3NSAzOTRRMTc2IDM5NCAxOTAgNDA0VDIzMyA0MjVUMjk4IDQzNlEzNDMgNDM2IDM3MSA0MjNRNDExIDQwMiA0MjMgMzY1VDQzNiAyNjVRNDM2IDI1NyA0MzYgMjM5VDQzNSAyMTFWMTk4Vjc2SDQ5OFE1MTIgNjcgNTE2IDYwVDUyMCAzOFE1MjAgOSA0OTggMUgzMDhRMjg2IDkgMjg2IDMyVjM4VjQ1UTI4NiA2NSAzMDMgNzNRMzA5IDc2IDMyOSA3NkgzNTFWMTg4UTM1MSAyMDQgMzUxIDIzMFQzNTIgMjY2UTM1MiAzMjEgMzQxIDM0MVQyODggMzYxUTI1MyAzNjEgMjIyIDM0MVQxNzYgMjc0TDE3NCAyNjRMMTczIDE3MFY3NkgyMzZRMjUwIDY3IDI1NCA2MFQyNTggMzhRMjU4IDkgMjM2IDFIMjdRNCA4IDQgMzhRNCA1MyA4IDYwVDI3IDc2SDg5VjM1NUg1OEwyNyAzNTZRNCAzNjMgNCAzOTNRNCA0MDggOCA0MTVUMjcgNDMxSDg5JyxcbiAgICAweDFENjk4OiAnNTIgMjE2UTUyIDMxOCAxMTggMzc5VDI2MSA0NDBRMzQzIDQ0MCA0MDcgMzc4VDQ3MiAyMTZRNDcyIDEyMSA0MTAgNThUMjYyIC02UTE3NiAtNiAxMTQgNThUNTIgMjE2Wk0zODggMjI1UTM4OCAyODEgMzUxIDMyMlQyNjEgMzY0UTIxMyAzNjQgMTc1IDMyNVQxMzYgMjI1UTEzNiAxNTggMTc0IDExNFQyNjIgNzBUMzUwIDExNFQzODggMjI1JyxcbiAgICAweDFENjk5OiAnODkgNDMxUTkzIDQzMSAxMDQgNDMxVDEyMSA0MzJRMTczIDQzMiAxNzMgNDAxVjM5NkwxODIgNDAyUTIzNyA0MzcgMzA1IDQzN1EzNzYgNDM3IDQzNCAzNzhUNDkyIDIxN1E0OTIgMTQ2IDQ1OSA5M1QzODIgMTdUMjkxIC02UTI2MSAtNiAyMzIgNVQxODggMjZMMTc0IDM3UTE3MyAzNyAxNzMgLTU0Vi0xNDZIMjM2UTI1MCAtMTU1IDI1NCAtMTYyVDI1OCAtMTg0UTI1OCAtMjEzIDIzNiAtMjIxSDI3UTQgLTIxNCA0IC0xODRRNCAtMTY5IDggLTE2MlQyNyAtMTQ2SDg5VjM1NUg1OEwyNyAzNTZRNCAzNjMgNCAzOTNRNCA0MDggOCA0MTVUMjcgNDMxSDg5Wk00MDkgMjE1UTQwOSAyNjkgMzc3IDMxNVQyODMgMzYxUTI1NSAzNjEgMjI0IDM0NFQxNzcgMjk3TDE3MyAyOTBWMTY3UTE4OSAxMjQgMjEzIDk3VDI3OCA3MFEzMzAgNzAgMzY5IDExMVQ0MDkgMjE1JyxcbiAgICAweDFENjlBOiAnMzQgMjE1UTM0IDMwOSA5MSAzNjhUMjIyIDQzNlEyMjQgNDM2IDIzMSA0MzZUMjQyIDQzN1EzMDkgNDM3IDM3MiAzOTBWNDAxUTM3MiA0MTkgMzgxIDQyOFQ0MTQgNDM3UTQyNiA0MzcgNDMyIDQzNlQ0NDQgNDMwVDQ1NiA0MTJWLTE0Nkg0ODlINTA0UTUyNCAtMTQ2IDUzNCAtMTUzVDU0NSAtMTg0UTU0NSAtMjExIDUyNyAtMjE5UTUyMyAtMjIxIDQxNCAtMjIxUTM5OCAtMjIxIDM3NCAtMjIxVDM0MiAtMjIyUTMwNCAtMjIyIDI5NCAtMjE2VDI4MyAtMTg0UTI4MyAtMTU3IDMwMSAtMTQ5UTMwNyAtMTQ2IDMzOSAtMTQ2SDM3MlYtNTFRMzcyIDQzIDM3MSA0M0wzNjQgMzhRMzU3IDMzIDM0NSAyNlQzMTggMTJUMjgwIC0xVDIzNiAtNlExNTUgLTYgOTUgNTVUMzQgMjE1Wk0xMTcgMjE1UTExNyAxNTIgMTU3IDExMVQyNTAgNzBRMjg5IDcwIDMxOCA5MlQzNjMgMTQ2UTM3MiAxNjMgMzcyIDE5MlYyMTVMMzcxIDI2M1EzMzkgMzYwIDI1NCAzNjBRMjA2IDM2MCAxNjIgMzIxVDExNyAyMTUnLFxuICAgIDB4MUQ2OUI6ICczMjcgNzZRMzU5IDc2IDM2OSA3MFQzODAgMzhRMzgwIDEwIDM1OSAxSDQ3UTI0IDggMjQgMzhRMjQgNTQgMjggNjFUNDcgNzZIMTQ1VjM1NUg5Nkw0NyAzNTZRMjQgMzYzIDI0IDM5M1EyNCA0MDkgMjggNDE2VDQ3IDQzMUgyMDdRMjIzIDQxOSAyMjYgNDE0VDIyOSAzOTNWMzg3VjM2OVEyOTcgNDM3IDM5NCA0MzdRNDM2IDQzNyA0NjEgNDE3VDQ4NyAzNjhRNDg3IDM0NyA0NzMgMzMyVDQzOCAzMTdRNDI4IDMxNyA0MjAgMzIwVDQwNyAzMjdUMzk4IDMzN1QzOTMgMzQ3VDM5MCAzNTZMMzg4IDM2MVEzNDggMzU2IDMyNCAzNDVRMjI4IDI5OSAyMjggMTcwUTIyOCAxNjEgMjI4IDE1MVQyMjkgMTM4Vjc2SDI5M0gzMjcnLFxuICAgIDB4MUQ2OUM6ICc3MiAzMTdRNzIgMzYxIDEwOCAzOTZUMjI5IDQzOVEyMzEgNDM5IDI0NSA0MzlUMjY4IDQ0MFEzMDMgNDM5IDMyNCA0MzVUMzUzIDQyN1QzNjMgNDIzTDM3MiA0MzJRMzgwIDQ0MCAzOTcgNDQwUTQzMCA0NDAgNDMwIDM5NVE0MzAgMzkwIDQzMCAzODBUNDI5IDM2NlYzMzVRNDI5IDMxMSA0MjIgMzAyVDM4NyAyOTNRMzY0IDI5MyAzNTUgMzAwVDM0NiAzMTZUMzQzIDMzNlQzMjUgMzUzUTMwNiAzNjQgMjU3IDM2NFEyMDkgMzY0IDE3OCAzNTFUMTQ3IDMxN1ExNDcgMjg0IDIzMSAyNzJRMzI3IDI1NiAzNTcgMjQ3UTQ1OCAyMTAgNDU4IDEyOVYxMjFRNDU4IDc0IDQxMyAzNFQyNzEgLTZRMjQ2IC02IDIyNCAtM1QxODkgNVQxNjUgMTRUMTUwIDIyVDE0NCAyNlExNDIgMjMgMTM5IDE4VDEzNSAxMVQxMzIgNlQxMjggMVQxMjQgLTJUMTE5IC00VDExMyAtNVQxMDQgLTZRODQgLTYgNzggNlQ3MSA0M1E3MSA0OCA3MSA2MFQ3MiA3OVE3MiAxMzIgNzMgMTQxVDgxIDE1N1E5MCAxNjYgMTE1IDE2NlExMzUgMTY2IDE0MiAxNjJUMTU3IDE0MFExNjggMTA4IDE5MSA5MFQyNjAgNzBRMjk3IDcwIDMyMyA3NlQzNjEgOTFUMzc5IDExMFQzODQgMTI5UTM4NCAxNTcgMzQ2IDE3MVQyNDcgMTk1VDE2NSAyMTJRMTE5IDIyOCA5NiAyNTZUNzIgMzE3JyxcbiAgICAweDFENjlEOiAnMjUgMzk1UTI2IDQwNSAyNiA0MDhUMjkgNDE2VDM1IDQyM1Q0OCA0MzFIMTQ1VjQ4MUwxNDYgNTMyUTE1NCA1NDcgMTYxIDU1MFQxODQgNTU0SDE4OVEyMTggNTU0IDIyNyA1MzRRMjI5IDUyOSAyMjkgNDgwVjQzMUg0MDVRNDA2IDQzMCA0MTEgNDI3VDQxOCA0MjJUNDIyIDQxNlQ0MjYgNDA3VDQyNyAzOTNRNDI3IDM4NyA0MjcgMzgyVDQyNCAzNzRUNDIxIDM2OFQ0MTcgMzYzVDQxMyAzNjBUNDA4IDM1OEw0MDUgMzU2TDMxNyAzNTVIMjI5VjI0OVEyMjkgMjM3IDIyOSAyMTRUMjI4IDE3OVEyMjggMTI2IDI0MSA5OFQyOTUgNzBRMzU0IDcwIDM2NSAxNDlRMzY2IDE2NyAzNzUgMTc0UTM4MyAxODIgNDA3IDE4Mkg0MTVRNDM4IDE4MiA0NDYgMTY2UTQ0OCAxNjEgNDQ4IDE0OFE0NDggODQgMzk4IDM5VDI4MiAtNlEyMjYgLTYgMTg5IDI5VDE0NiAxMjhRMTQ1IDEzNCAxNDUgMjQ3VjM1NUg5Nkg3MlE0NSAzNTUgMzUgMzYyVDI1IDM5NScsXG4gICAgMHgxRDY5RTogJzQgMzkzUTQgNDE2IDE1IDQyM1Q1MiA0MzFIOTBRMTQxIDQzMSAxNTEgNDI5VDE2OCA0MTdRMTcxIDQxMiAxNzMgNDA5VjI1NEwxNzQgMTAwUTE4MiA3MCAyNDQgNzBRMzIwIDcwIDM0NCAxMTlRMzQ5IDEzMCAzNTAgMTQ0VDM1MSAyNDhWMzU1SDMyMEwyODkgMzU2UTI2NiAzNjMgMjY2IDM5M1EyNjYgNDA4IDI3MCA0MTVUMjg5IDQzMUgzNTFIMzg2UTQwOSA0MzEgNDE4IDQyOFQ0MzMgNDExUTQzNSA0MDYgNDM1IDI0MVY3Nkg0OThRNTEyIDY3IDUxNiA2MFQ1MjAgMzhRNTIwIDkgNDk4IDFINDM2SDM5NFEzNzIgMSAzNjQgNVQzNTEgMjZMMzQyIDIxUTI5MyAtNSAyMjcgLTVRMTE4IC01IDk2IDY3UTkxIDgyIDkwIDEwMVQ4OSAyMjdWMzU1SDU4TDI3IDM1NlE0IDM2MyA0IDM5MycsXG4gICAgMHgxRDY5RjogJzI0IDM5MlEyNCA0MTcgMzYgNDI0VDc5IDQzMlE4NSA0MzIgMTAzIDQzMlQxMzIgNDMxSDIxNVEyMjkgNDIyIDIzMyA0MTVUMjM3IDM5M1EyMzcgMzU1IDE5OCAzNTVIMTkzSDE3MkwyNjIgNzdMMzUyIDM1NUgzMzFIMzIzUTI4OCAzNTUgMjg4IDM5M1EyODggNDA5IDI5MSA0MTVUMzEwIDQzMUg0NzhRNDkxIDQyMyA0OTUgNDE2VDUwMCAzOTNRNTAwIDM2NCA0NzggMzU2TDQ1MiAzNTVINDI2TDM3NCAxOTBRMzIwIDI0IDMxOCAyMFEzMDcgLTQgMjczIC00SDI2MkgyNTFRMjE3IC00IDIwNiAyMFEyMDQgMjQgMTUwIDE5MEw5OCAzNTVINzJMNDcgMzU2UTI0IDM2MyAyNCAzOTInLFxuICAgIDB4MUQ2QTA6ICc1NCAzNTVRMTYgMzU1IDE2IDM4OFYzOTNRMTYgNDIzIDM3IDQzMFE0MSA0MzEgMTI1IDQzMUgxNjJRMjA2IDQzMSAyMTggNDI1VDIzMCAzOTNRMjMwIDM2NiAyMTIgMzU4UTIwNiAzNTUgMTc0IDM1NVExNDEgMzU1IDE0MSAzNTRMMTUwIDI5NlExODEgMTEwIDE4MSA4OVY4NFExODIgODUgMTgzIDk2UTE4NSAxMTggMTk5IDE3M1QyMTggMjM3UTIyMyAyNDcgMjQ1IDI1OUgyNjRIMjY4UTI5NCAyNTkgMzA5IDI0MFEzMTUgMjI5IDMyOSAxNzRUMzQzIDkyUTM0MyA4NCAzNDQgODRWODZRMzQ0IDg4IDM0NCA5MVQzNDUgOTdRMzQ3IDEyNSAzNTYgMTg3VDM3NCAzMDFUMzgzIDM1NFEzODMgMzU1IDM1MCAzNTVIMzMzUTMxNCAzNTUgMzA0IDM2MlQyOTQgMzkzUTI5NCA0MjAgMzEyIDQyOFEzMTggNDMxIDQwMSA0MzFINDQwUTQ4NSA0MzEgNDk2IDQyNVQ1MDggMzkzUTUwOCAzODIgNTA4IDM3N1Q0OTggMzYzVDQ3MCAzNTVMNDU1IDM1NFE0NTUgMzUzIDQ0MSAyNzFUNDEzIDEwNFQzOTYgMTZRMzg0IC00IDM1NSAtNEgzNTFRMzE1IC00IDMwNSA5VDI4MCA3OVEyNzggOTAgMjc2IDk2UTI2NSAxNDkgMjY1IDE2OVEyNjUgMTc2IDI2NCAxNjlRMjYzIDE2NiAyNjMgMTYyUTI2MSAxMzAgMjQ4IDc5VDIzMCAxOFEyMjAgLTQgMTgzIC00SDE3NUwxNTEgLTNRMTM0IDUgMTI3IDE3TDExMiAxMDJROTcgMTg4IDgzIDI3MFQ2OSAzNTRRNjIgMzU1IDU0IDM1NScsXG4gICAgMHgxRDZBMTogJzM1IDM5M1EzNSA0MTcgNDYgNDI0VDg5IDQzMlE5NSA0MzIgMTEyIDQzMlQxNDEgNDMxSDIyM1EyMzggNDIyIDI0MSA0MTVUMjQ0IDM5M1EyNDQgMzg5IDI0NCAzODNUMjM3IDM2N1QyMTYgMzU1UTIwOSAzNTUgMjA5IDM1NEwyMzQgMzE5UTI1OSAyODYgMjYwIDI4NkwzMDggMzU0UTMwOCAzNTUgMzAxIDM1NVEyODUgMzU2IDI3OCAzNjVUMjcwIDM4NEwyNzEgMzkzUTI3MSA0MjAgMjg5IDQyOFEyOTUgNDMxIDM3NiA0MzFINDU5UTQ2MCA0MzAgNDY1IDQyN1Q0NzIgNDIyVDQ3NiA0MTZUNDgwIDQwN1Q0ODEgMzkzUTQ4MSAzNjggNDcwIDM2MlQ0MzQgMzU1SDQyNUgzOTJMMzQ0IDI5MFEyOTUgMjI1IDI5NSAyMjNRMjk0IDIyMyAzMDkgMjAzVDM1MCAxNDlMNDA1IDc3TDQzOSA3Nkg0NTNRNDc0IDc2IDQ4NCA2OVQ0OTUgMzhRNDk1IDEwIDQ3MyAxSDMwM1EyODEgOSAyODEgMzJWMzhRMjgxIDQ5IDI4MiA1NFQyOTAgNjdUMzEzIDc2UTMyNCA3NiAzMjQgNzdMMjU5IDE3M0wxOTcgNzdRMjAyIDc2IDIwOSA3NlEyMjUgNzUgMjMzIDY4VDI0MSA1NVQyNDIgMzhRMjQyIDI4IDI0MiAyNFQyMzYgMTJUMjIxIDFINTFRMjkgOSAyOSAzMlYzOFEyOSA0OCAyOSA1MVQzMSA1OVQzOCA2N1Q1MSA3NkgxMTdMMTcxIDE0OVEyMjQgMjIyIDIyNCAyMjNMMTI0IDM1NUg5MEg3OFE1NCAzNTUgNDUgMzYxVDM1IDM5MycsXG4gICAgMHgxRDZBMjogJzI2IDM5M1EyNiA0MTcgMzcgNDI0VDgwIDQzMUgxMzRIMjE3UTIzMiA0MjIgMjM1IDQxNlQyMzkgMzkzUTIzOSAzNzkgMjM2IDM3MVQyMjYgMzYwVDIxNCAzNTZUMTk3IDM1NUwxNzkgMzU0VjM1M0wxODggMzMwUTE5NyAzMDYgMjA5IDI3MlQyMzUgMjAxVDI1OSAxMzNUMjcxIDg5Vjg0TDI3NCA5NVEyNzkgMTIyIDI5OCAxODVUMzM1IDMwMFQzNTIgMzU0UTM1MiAzNTUgMzMxIDM1NVEzMTIgMzU1IDMwNCAzNThRMjg4IDM2OCAyODggMzkzUTI4OCA0MDggMjkxIDQxNVQzMTAgNDMxSDQ3OFE0NzkgNDMwIDQ4NCA0MjdUNDkxIDQyMlQ0OTUgNDE2VDQ5OSA0MDdUNTAwIDM5M1E1MDAgMzc2IDQ5MyAzNjdUNDc5IDM1N1Q0NTggMzU1SDQ1MlE0MjYgMzU1IDQyNSAzNTNRNDIwIDMzNyAzNTEgMTI0VDI4MCAtOTRRMjQwIC0xOTUgMTY4IC0yMjBRMTQ3IC0yMjggMTI1IC0yMjhRODkgLTIyOCA2NiAtMjAxVDQyIC0xMzlRNDIgLTExNiA1NiAtMTAyVDkzIC04N1ExMTcgLTg3IDEzMCAtMTAyVDE0NCAtMTM1Vi0xMzhIMTI2UTEyMSAtMTQ4IDEyMSAtMTUwVDEzMCAtMTUyUTE4MiAtMTQ3IDIwNyAtODdRMjExIC03OCAyMjMgLTQwVDIzNiAxUTIzMCAxMCAxMDIgMzU1SDc1TDQ5IDM1NlEyNiAzNjMgMjYgMzkzJyxcbiAgICAweDFENkEzOiAnNTYgMVE0MCA3IDM3IDE0VDM0IDQxUTM0IDU5IDM2IDY0UTM5IDY3IDQzIDczUTY1IDk1IDE5MSAyMTNUMzQxIDM1NUgxMzNWMzM0UTEzMyAzMDYgMTI0IDI5N1ExMTYgMjg5IDkxIDI4OUg4M1E2MCAyODkgNTEgMzA4UTQ5IDMxMyA0OSAzNjFMNTAgNDA5UTU5IDQyNyA3MiA0MzBINzhRODMgNDMwIDkyIDQzMFQxMTUgNDMwVDE0NCA0MzBUMTc5IDQzMVQyMTkgNDMxVDI2MiA0MzFINDUwUTQ1MiA0MzAgNDU1IDQyOFQ0NTkgNDI0VDQ2MyA0MjJUNDY2IDQxOVQ0NjggNDE2VDQ2OSA0MTNUNDcwIDQwOVQ0NzEgNDA0VDQ3MiAzOThUNDcyIDM5MVE0NzIgMzc0IDQ2OSAzNjhMNDYyIDM1OFE0NTMgMzQ5IDMxNSAyMThRMjEwIDEyMiAxNjQgNzZIMzkxVjEwM1EzOTEgMTM2IDQwMCAxNDZRNDA5IDE1NSA0MzMgMTU1UTQ2NCAxNTUgNDczIDEzNVE0NzUgMTMwIDQ3NSA3OFY0NlE0NzUgMjQgNDcyIDE2VDQ1MyAxSDU2JyxcbiAgICAweDFENkE4OiAnMjk2IDBRMjc4IDMgMTY0IDNRNTggMyA0OSAwSDQwVjYySDkyUTE0NCA2MiAxNDQgNjRRMzg4IDY4MiAzOTcgNjg5UTQwMyA2OTggNDM0IDY5OFE0NjMgNjk4IDQ3MSA2ODlRNDc1IDY4NiA1MzggNTMwVDY2MyAyMThMNzI0IDY0UTcyNCA2MiA3NzYgNjJIODI4VjBIODE3UTc5NiAzIDY1OCAzUTUwOSAzIDQ4NSAwSDQ3MlY2Mkg1MTdRNTYxIDYyIDU2MSA2M0w1MTcgMTc1SDI2MkwyNDAgMTIwUTIxOCA2NSAyMTcgNjRRMjE3IDYyIDI2MSA2MkgzMDZWMEgyOTZaTTM5MCAyMzdMNDkyIDIzOEw0NDAgMzY1UTM5MCA0OTEgMzg4IDQ5MVEyODcgMjM5IDI4NyAyMzdIMzkwJyxcbiAgICAweDFENkE5OiAnNzIwIDUxMFE3MjAgNDc2IDcwNCA0NDhUNjY1IDQwNFQ2MTkgMzc3VDU4MCAzNjJMNTY0IDM1OUw1ODMgMzU2UTYwMiAzNTMgNjMyIDM0MlQ2OTAgMzEyUTcxMiAyOTIgNzI1IDI3NlE3NTIgMjM1IDc1MiAxODlWMTgzUTc1MiAxNjAgNzQxIDEyNVE2OTggMTggNTQ3IDJRNTQzIDEgMjg4IDBIMzlWNjJIMTQ3VjYyNEgzOVY2ODZIMjY0SDQwOVE1MDIgNjg2IDU0MiA2ODFUNjI0IDY1NVE3MjAgNjA3IDcyMCA1MTBaTTU2MyA1MTNRNTYzIDU1MyA1NDggNTc4VDUxOCA2MTFUNDg2IDYyMlE0NzkgNjI0IDM4NSA2MjRIMjkzVjM4MkgzNzVRNDU4IDM4MyA0NjcgMzg1UTU2MyA0MDUgNTYzIDUxM1pNNTkwIDE5MlE1OTAgMzA3IDUwNSAzMjlRNTA0IDMzMCA1MDMgMzMwTDM5OCAzMzFIMjkzVjYySDM5MUg0MDBINDQ0UTQ5NiA2MiA1MjggNzVUNTgwIDEzMVE1OTAgMTU1IDU5MCAxOTInLFxuICAgIDB4MUQ2QUE6ICc0MjUgMEwyMjggM1E2MyAzIDUxIDBIMzlWNjJIMTQ3VjYxOEgzOVY2ODBINjEyVjY3NlE2MTQgNjcwIDYyNyA1NTJUNjQzIDQyOFY0MjRINTgxVjQyOFE1ODAgNDMwIDU3NiA0NjFUNTYyIDUyNFQ1MzIgNTc2UTUxMiA1OTYgNDgxIDYwNVQ0MjYgNjE2VDM1NyA2MThIMzA0VjYySDQzOVYwSDQyNScsXG4gICAgMHgxRDZBQjogJzkwMSAxMlE5MDEgNyA4OTIgMEg0NzlRNjUgMCA2MiAyUTU2IDYgNTYgMTFRNTYgMTQgMjQyIDM0N1Q0MzMgNjg1UTQzOCA2OTQgNDUwIDY5NlE0NTQgNjk4IDQ4MCA2OThINTA2TDUyMyA2ODdRNTI2IDY4MyA3MTEgMzU0VDg5OSAxN1E5MDEgMTMgOTAxIDEyWk02NTMgMTM3TDQyNyA1MzhMMjAyIDEzN0wzMTUgMTM2SDU0MEw2NTMgMTM3JyxcbiAgICAweDFENkFDOiAnNzIzIDI4NlE3MjEgMjg0IDcwMCAxNDVUNjc3IDNWMEgzOVY2MkgxNDdWNjE4SDM5VjY4MEg2NjBWNjc2UTY2MiA2NzAgNjc1IDU1MlQ2OTEgNDI4VjQyNEg2MjlWNDI4UTYyOSA0MjkgNjI3IDQ0OFQ2MTggNDk0VDYwMSA1NDFRNTc0IDU5MyA1MjcgNjA1VDM4MiA2MThIMzc0SDMwNFYzODRIMzM2UTMzOCAzODQgMzQ3IDM4NFQzNjEgMzg0VDM3NiAzODZUMzkyIDM5MFQ0MDcgMzk3VDQyMSA0MDdUNDMyIDQyM1E0NDIgNDQ0IDQ0MyA0ODJWNTAxSDUwNVYyMDVINDQzVjIyNFE0NDIgMjU4IDQzNSAyNzhUNDExIDMwN1QzODAgMzE4VDMzNiAzMjJIMzA0VjYySDM3NUgzOTRRNDI5IDYyIDQ0OSA2MlQ0OTcgNjZUNTQxIDc2VDU3NyA5NVQ2MDkgMTI2VDYzMiAxNzBUNjUxIDIzMlE2NjEgMjg3IDY2MSAyODlINzIzVjI4NicsXG4gICAgMHgxRDZBRDogJzgwIDQzMEw5MiA2ODZIMzU4UTYyNCA2ODYgNjI4IDY4NFE2MzggNjc5IDYzOCA2NTZRNjM4IDY0MCA2MzcgNjM5UTYzNyA2MzggNDQ1IDM1M1E0MDEgMjg4IDM1MSAyMTRUMjc3IDEwM0wyNTMgNjdMMjU2IDY2UTI1OCA2NiAyNjUgNjZUMjc5IDY2VDI5OCA2NkgzNDNRMzgwIDY2IDQwNiA2OFQ0NjQgODFUNTE4IDExMFQ1NTcgMTY0VDU3OSAyNTBRNTgzIDI3OCA1ODMgMjk4UTU4MyAyOTkgNjE0IDI5OUg2NDVWMjkxUTY0MyAyODEgNjM2IDE1MFQ2MjcgOFYwSDM1M1E3OSAwIDc1IDJRNjQgNyA2NCAzMVE2NCA0OCA2NiA1MkwyNTkgMzQwTDQ1MSA2MjNRNDUxIDYyNCAzODQgNjI0UTI5NCA2MjMgMjU5IDYxMlExNTUgNTgxIDE0MyA0NDZRMTQyIDQ0MCAxNDIgNDMyVjQzMEg4MCcsXG4gICAgMHgxRDZBRTogJzQwMCAwUTM3NiAzIDIyNiAzUTc1IDMgNTEgMEgzOVY2MkgxNDdWNjI0SDM5VjY4Nkg1MVE3NSA2ODMgMjI2IDY4M1EzNzYgNjgzIDQwMCA2ODZINDEyVjYyNEgzMDRWMzg4SDU5NVY2MjRINDg3VjY4Nkg0OTlRNTIzIDY4MyA2NzMgNjgzUTgyNCA2ODMgODQ4IDY4Nkg4NjBWNjI0SDc1MlY2Mkg4NjBWMEg4NDhRODI0IDMgNjc0IDNRNTIzIDMgNDk5IDBINDg3VjYySDU5NVYzMjZIMzA0VjYySDQxMlYwSDQwMCcsXG4gICAgMHgxRDZBRjogJzYyOSAtMTBUNDQ2IC0xMFQxNjQgODlUNjQgMzQwUTY0IDM4MCA3MSA0MjBUMTAyIDUxMFQxNjMgNTk2VDI2NiA2NjJUNDE4IDY5Nkg0MzhRNDg4IDY5NiA0OTkgNjk1UTU4MiA2ODYgNjQ0IDY1NVQ3NDEgNTg0VDc5NiA0OTVUODIzIDQwOVQ4MjkgMzM4UTgyOSAxODggNzI5IDg5Wk00MzkgNjQ1UTQxNiA2NDUgMzkwIDYzOFQzMzMgNjE1VDI3NSA1NjRUMjM2IDQ4MFEyMjEgNDIzIDIyMSAzNDFRMjIxIDI3MiAyMzAgMjI4UTI0NyAxNDQgMzAxIDk0VDQ0NyA0M1Q1OTIgOTNUNjYzIDIyOFE2NzIgMjcyIDY3MiAzNDFRNjcyIDY0NSA0MzkgNjQ1Wk0yODYgMjQyVjQ0NkgzNDhWNDEySDU0NVY0NDZINjA3VjI0Mkg1NDVWMjc2SDM0OFYyNDJIMjg2JyxcbiAgICAweDFENkIwOiAnMzk3IDBRMzcwIDMgMjE4IDNRNjUgMyAzOCAwSDI1VjYySDEzOVY2MjRIMjVWNjg2SDM4UTY1IDY4MyAyMTggNjgzUTM3MCA2ODMgMzk3IDY4Nkg0MTBWNjI0SDI5NlY2Mkg0MTBWMEgzOTcnLFxuICAgIDB4MUQ2QjE6ICc0MDAgMFEzNzYgMyAyMjYgM1E3NSAzIDUxIDBIMzlWNjJIMTQ3VjYyNEgzOVY2ODZINTFRNzUgNjgzIDIyNiA2ODNRMzc2IDY4MyA0MDAgNjg2SDQxMlY2MjRIMzA0VjMzOEw0NzIgNDgzTDYzNCA2MjRINTY1VjY4Nkg1NzZRNTk3IDY4MyA3MjggNjgzUTgxNCA2ODMgODI5IDY4Nkg4MzZWNjI0SDczMEw2MTQgNTI0UTUwNyA0MzIgNDk3IDQyMlE0OTYgNDIyIDQ5OCA0MThUNTE0IDM5NVQ1NTMgMzQyVDYyNyAyNDFMNzU5IDYzTDgwNSA2Mkg4NTJWMEg4NDJRODMwIDMgNzAxIDNRNTUwIDMgNTI2IDBINTEzVjYySDU0OVE1ODQgNjIgNTg0IDYzUTU4MyA2NSA0ODYgMTk2VDM4OCAzMjhMMzA0IDI1NlY2Mkg0MTJWMEg0MDAnLFxuICAgIDB4MUQ2QjI6ICcyODUgMFEyNjcgMyAxNTQgM1E1NiAzIDQ3IDBINDBWNjJIMTMxUTEzMSA2MyAxNjcgMTYwVDI0NCAzNjlUMzIxIDU3OFQzNTkgNjc4UTM2NiA2OTggMzkzIDY5OEg0MDRINDEzUTQzNyA2OTggNDQ2IDY3OFE0NDggNjcyIDU2MCAzNjlUNjc0IDYySDc2NVYwSDc1NFE3MzMgMyA2MDQgM1E0NTMgMyA0MjkgMEg0MTZWNjJINDYxTDUwNyA2M0wzNTUgNDcwUTM1MyA0NjggMjc5IDI2NUwyMDMgNjNMMjQ5IDYySDI5NFYwSDI4NScsXG4gICAgMHgxRDZCMzogJzMxNCAwUTI5NiAzIDE4MSAzVDQ4IDBIMzlWNjJIMTQ3VjYyNEgzOVY2ODZIMzA1UTMxNiA2NzkgMzIzIDY2N1EzMzAgNjUzIDQzNCA0MTRMNTQ2IDE1N0w2NTggNDE0UTc2NiA2NjIgNzczIDY3NFE3NzggNjgxIDc4OCA2ODZIMTA1MlY2MjRIOTQ0VjYySDEwNTJWMEgxMDQwUTEwMTYgMyA4NzQgM1Q3MDggMEg2OTZWNjJIODA0VjM0MUw4MDMgNjE4TDc4NiA1ODBRNzcwIDU0MyA3MzUgNDYyVDY3MSAzMTVRNTQwIDEzIDUzNiA5UTUyOCAxIDUwNyAxUTQ4NSAxIDQ3NyA5UTQ3MiAxNCA0MDggMTYyVDI4MSA0NTdUMjE3IDYwM1EyMTUgNjAzIDIxNSAzMzRWNjJIMzIzVjBIMzE0JyxcbiAgICAweDFENkI0OiAnMzE0IDBRMjk2IDMgMTgxIDNUNDggMEgzOVY2MkgxNDdWNjI0SDM5VjY4NkgxNzFIMjY1UTI4OCA2ODYgMjk3IDY4NlQzMDkgNjg0VDMxNSA2NzlRMzE3IDY3NiA1MDAgNDU1VDY4NCAyMzNWNjI0SDU3NlY2ODZINTg1UTYwMyA2ODMgNzE4IDY4M1Q4NTEgNjg2SDg2MFY2MjRINzUyVjMxOVE3NTIgMTUgNzUwIDExUTc0NyA0IDc0MiAyVDcxOCAwSDcxMlE3MDggMCA3MDYgMFQ3MDAgMFQ2OTYgMVQ2OTMgMlQ2OTAgNFQ2ODcgN1Q2ODQgMTFUNjc5IDE2VDY3NCAyM1E2NzEgMjcgNDM3IDMxMUwyMTUgNTc5VjYySDMyM1YwSDMxNCcsXG4gICAgMHgxRDZCNTogJzU0IDQ2NUw2MyA2NzRRNjMgNjc1IDM4MyA2NzVUNzAzIDY3NEw3MTIgNDY1UTcxMiA0NjQgNjgxIDQ2NEg2NTBWNDY3UTY1MCA0OTAgNjQ2IDUxNlQ2MzIgNTQ1UTYxMiA1NTAgMzgzIDU1MEgyODNRMTY5IDU1MCAxNDkgNTQ4VDEyNCA1MzFRMTIzIDUzMCAxMjMgNTI5UTExNiA1MDYgMTE2IDQ2N1Y0NjRIODVRNTQgNDY0IDU0IDQ2NVpNMTYwIDI1NlY0NDdIMjIyVjQxNEg1NDRWNDQ3SDYwNlYyNTZINTQ0VjI4OUgyMjJWMjU2SDE2MFpNNTcgMEw0OCAyMjJIMTEwVjIxOVExMTAgMTQ3IDEyNSAxMzNRMTI3IDEzMCAxMzAgMTI5VDE2MCAxMjdUMjM1IDEyNlQzODMgMTI2UTQ4MiAxMjYgNTMwIDEyNlQ2MDQgMTI3VDYzNSAxMjlUNjQxIDEzM1E2NTYgMTQ2IDY1NiAyMTlWMjIySDcxOEw3MDkgMEg1NycsXG4gICAgMHgxRDZCNjogJzY0IDMzOVE2NCA0MzEgOTYgNTAyVDE4MiA2MTRUMjk1IDY3NVQ0MjAgNjk2UTQ2OSA2OTYgNDgxIDY5NVE2MjAgNjgwIDcwOSA1ODlUNzk4IDMzOVE3OTggMTczIDY5NyA4MlQ0MzIgLTEwUTI2MiAtMTAgMTYzIDg1VDY0IDMzOVpNNjI1IDQ1NFE2MTggNTAyIDYwMCA1MzhUNTYyIDU5M1Q1MTUgNjI0VDQ2OSA2MzlUNDMxIDY0MlEzMzEgNjQyIDI3NiA1NjNRMjMyIDQ5MyAyMzIgMzUzUTIzMiAzMTUgMjM0IDI4NVQyNDQgMjE2VDI2NyAxNDhUMzA4IDk0VDM3MiA1NlE0MDUgNDYgNDMyIDQ2UTUxNyA0NiA1NjcgMTA2VDYyNyAyNjdRNjMxIDI5OSA2MzEgMzUzUTYzMSA0MTggNjI1IDQ1NCcsXG4gICAgMHgxRDZCNzogJzQwMCAwUTM3NiAzIDIyNiAzUTc1IDMgNTEgMEgzOVY2MkgxNDdWNjE4SDM5VjY4MEg4NjBWNjE4SDc1MlY2Mkg4NjBWMEg4NDhRODI0IDMgNjc0IDNRNTIzIDMgNDk5IDBINDg3VjYySDU5NVY2MThIMzA0VjYySDQxMlYwSDQwMCcsXG4gICAgMHgxRDZCODogJzQwMCAwUTM3NiAzIDIyNiAzUTc1IDMgNTEgMEgzOVY2MkgxNDdWNjI0SDM5VjY4NkgyNTNRNDM1IDY4NiA0NzAgNjg1VDUzNiA2NzhRNTg1IDY2OCA2MjEgNjQ4VDY3NSA2MDVUNzA1IDU1N1Q3MTggNTE0VDcyMSA0ODNUNzE4IDQ1MVQ3MDQgNDA5VDY3MyAzNjJUNjE2IDMyMlQ1MzAgMjkzUTUwMCAyODggMzk5IDI4N0gzMDRWNjJINDEyVjBINDAwWk01NTMgNDc1UTU1MyA1NTQgNTM3IDU4MlQ0NTkgNjIyUTQ1MSA2MjMgMzczIDYyNEgyOThWMzQzSDM3MlE0NTcgMzQ0IDQ4MCAzNTBRNTI3IDM2MiA1NDAgMzkwVDU1MyA0NzUnLFxuICAgIDB4MUQ2QkE6ICc3NjYgMjcxUTc2NCAyNjYgNzUwIDEzN1Q3MzUgNFYwSDQwN1E3NCAwIDcxIDRMNzAgNVE2NCA5IDY0IDE4UTY0IDI0IDgyIDQxVDIxMyAxNThMMzU5IDI4OFEzNjAgMjg4IDMyMCAzMzZUMjE0IDQ2MFE2NyA2MzMgNjYgNjM1UTY0IDYzOCA2NCA2NTVRNjQgNjc5IDc1IDY4NFE3OCA2ODYgNDA3IDY4Nkg3MzVWNjgyUTczOCA2NzYgNzUxIDU1OFQ3NjYgNDM0VjQzMEg3MzVRNzA0IDQzMCA3MDQgNDMxUTcwNCA0MzQgNzAzIDQ0NFQ2OTYgNDc3VDY4MSA1MjBUNjU0IDU2M1Q2MTMgNTk4UTU3OCA2MTUgNTI3IDYxOVQzNzEgNjI0SDI4MUwzOTYgNDg5UTUwNiAzNTggNTEzIDM1MVE1MTcgMzQyIDUxMiAzMzRRNTAzIDMyNSAzNzEgMjA4UTMzOCAxNzkgMzAzIDE0N1QyNDkgOTlMMjMxIDgzTDI0MyA4MVEyNTggODEgMzY0IDgxUTM4MiA4MSA0MTggODFUNDcwIDgyVDUxMyA4M1Q1NTQgODhUNTg3IDk2VDYxOSAxMDlUNjQ1IDEyOVE2ODkgMTczIDcwMiAyNjBMNzA0IDI3NFE3MDQgMjc1IDczNSAyNzVINzY2VjI3MScsXG4gICAgMHgxRDZCQjogJzQxIDQyNVE0MSA0MjYgNTEgNTQ1VDYyIDY2OVY2NzVINzM3VjY2OVE3MzggNjY1IDc0OCA1NDZUNzU4IDQyNVY0MTlINjk2VjQyNVE2ODcgNTE3IDY2OSA1NTVUNTk1IDYwN1E1NzggNjEyIDUyMiA2MTNINDc4VjYySDYzMVYwSDYxNVE1ODUgMyAzOTkgM1EyMTQgMyAxODQgMEgxNjhWNjJIMzIxVjYxM0gyNzdIMjYzUTE2NCA2MTMgMTM0IDU2MVExMTMgNTI3IDEwMyA0MjVWNDE5SDQxVjQyNScsXG4gICAgMHgxRDZCQzogJzY0IDU1NlE2OSA2MTkgMTE0IDY1OFQyMjQgNjk3UTI3MSA2OTcgMzEwIDY3N1QzNzUgNjIyVDQxNyA1NTRUNDQ0IDQ4NEw0NDcgNDc3VjQ3OVE0NTYgNTE2IDQ3MyA1NTFUNTE2IDYyMFQ1ODIgNjc2VDY3MCA2OTdRNzM1IDY5NyA3ODAgNjU2VDgyOSA1NTZRODI5IDUzOSA4MTggNTMySDc3MlE3NjEgNTM5IDc2MSA1NDhRNzYxIDU3MSA2ODEgNTcxUTY2NCA1NzEgNjUzIDU3MFQ2MjMgNTYyVDU4NyA1MzdUNTU1IDQ5MFE1MzYgNDQ4IDUzMSA0MTBUNTI1IDMwMFYyMTBWNjJINjYwVjBINjQ2TDQ0NyAzUTI1NyAxIDI0NyAwSDIzM1Y2MkgzNjhWMjEwVjMwMVEzNjggMzczIDM2MyA0MTBUMzM4IDQ5MFEzMjQgNTE4IDMwNyA1MzZUMjcwIDU2MVQyNDAgNTY5VDIxMiA1NzFRMTMyIDU3MSAxMzIgNTQ4UTEzMiA1MzkgMTIxIDUzMkg3NVE2NCA1MzggNjQgNTU2JyxcbiAgICAweDFENkJEOiAnNjA5IDBRNTgyIDMgNDE1IDNUMjIxIDBIMjA3VjYySDM0MlYxNjhMMzI4IDE2OVExOTMgMTgwIDExNyAyNDFRNjQgMjg2IDY0IDM0M1QxMTcgNDQ1UTE5MyA1MDYgMzI4IDUxN0wzNDIgNTE4VjYyNEgyMDdWNjg2SDIyMVEyNDggNjgzIDQxNSA2ODNUNjA5IDY4Nkg2MjNWNjI0SDQ4OFY1MThMNTAyIDUxN1E2MzcgNTA2IDcxMyA0NDVRNzY2IDQwMCA3NjYgMzQzVDcxMyAyNDFRNjM3IDE4MCA1MDIgMTY5TDQ4OCAxNjhWNjJINjIzVjBINjA5Wk0zNDIgMjE5VDM0MiAzNDNUMzQwIDQ2N1EzMjggNDY3IDMwNCA0NTlRMjc3IDQ1MSAyNjEgNDM5VDIzNyA0MDlUMjI4IDM3OFQyMjYgMzQzUTIyNiAzMTQgMjI5IDI5NlQyNTAgMjU5VDMwMSAyMjhRMzMxIDIxOSAzNDEgMjE5UTM0MiAyMTkgMzQyIDM0M1pNNjA0IDM0M1E2MDQgMzY1IDYwMiAzNzlUNTkxIDQxM1Q1NjAgNDQ2VDUwMyA0NjRMNDg5IDQ2N1E0ODggNDY3IDQ4OCAzNDNUNDg5IDIxOVE0OTkgMjE5IDUyOSAyMjhRNTU0IDIzNiA1NzAgMjQ4VDU5MyAyNzdUNjAyIDMwOFQ2MDQgMzQzJyxcbiAgICAweDFENkJFOiAnMzI3IDBRMzA2IDMgMTc0IDNRNTIgMyA0MyAwSDMzVjYySDk4TDE2MiA2M0wzNjAgMzMzTDE1NyA2MjRINDhWNjg2SDU5UTgwIDY4MyAyMTcgNjgzUTM2OCA2ODMgMzk1IDY4Nkg0MDhWNjI0SDMzNUwzOTMgNTQwTDQ1MiA0NThMNTczIDYyM1E1NzMgNjI0IDUyOCA2MjRINDgzVjY4Nkg0OTRRNTE1IDY4MyA2NDYgNjgzUTc2OSA2ODMgNzc4IDY4Nkg3ODdWNjI0SDY1OEw1NzUgNTExUTQ5MyAzOTggNDkzIDM5N0w1MDggMzc2UTUyMiAzNTYgNTUzIDMxMlQ2MTEgMjI5TDcyNyA2Mkg4MzVWMEg4MjRRODAzIDMgNjY3IDNRNTE2IDMgNDg5IDBINDc2VjYySDUxM0w1NDkgNjNMNDAxIDI3NEwyNDcgNjNRMjQ3IDYyIDI5MiA2MkgzMzhWMEgzMjcnLFxuICAgIDB4MUQ2QkY6ICc2NCA1MTVRNjQgNTMyIDcxIDUzNlQxMDQgNTQwSDEzOVEyMDAgNTQwIDIwNyA1MzhRMjI1IDUzMyAyMzYgNTIxVDI1MyA0ODlUMjYwIDQ1NFQyNjQgNDE0UTI2NCAzNDAgMjg3IDI5NlQzNDcgMjM3UTM2OSAyMjYgMzczIDIyNlEzNzQgMjI2IDM3NCA0MjVWNjI0SDIzOVY2ODZIMjUzUTI4MCA2ODMgNDQ3IDY4M1Q2NDEgNjg2SDY1NVY2MjRINTIwVjIyNkw1MjIgMjI3UTUyNSAyMjggNTMxIDIyOVQ1NTIgMjQwVDU4MCAyNjFUNjA2IDI5OFQ2MjQgMzU0UTYyNyAzNjggNjI4IDM5NFQ2MzEgNDQwVDYzNyA0ODJUNjU0IDUxOFQ2ODYgNTM4UTY5MyA1NDAgNzU0IDU0MEg3OTRRODE3IDU0MCA4MjMgNTM2VDgyOSA1MTVRODI5IDUwMCA4MjQgNDk1VDgxMSA0ODlUNzk2IDQ4M1Q3ODIgNDYxVDc3NSA0MDhRNzY3IDIxMiA1NjggMTc1UTUyNiAxNjggNTIxIDE2OFE1MjAgMTY4IDUyMCAxMTVWNjJINjU1VjBINjQxUTYxNCAzIDQ0NyAzVDI1MyAwSDIzOVY2MkgzNzRWMTY4TDM2NCAxNjlRMjkwIDE3OCAyNDMgMjAzUTEyNiAyNjEgMTE4IDQwOVExMTcgNDQzIDExMSA0NjFUOTggNDg0VDgzIDQ4OVQ3MCA0OTVUNjQgNTE1JyxcbiAgICAweDFENkMwOiAnNTk4IDY0NVQ0MTUgNjQ1VDIzMiA0NThRMjMyIDM4NSAyNzUgMjM5VDMxOCAyNlEzMTggOCAzMTEgNFQyNzIgLTFRMjY1IC0xIDI0MCAtMVQxOTYgMEg4OFYzUTg2IDUgNzAgMTA4UTUyIDIxMSA1MSAyMTJWMjE1SDExM1YyMTJRMTIzIDE0OSAxMzIgMTMzUTEzNiAxMjQgMTQ5IDEyMlQyMDIgMTE4UTI0MSAxMTggMjQxIDExOVEyNDEgMTMyIDEzMiAyNzdRNjQgMzc4IDY0IDQ1N1E2NCA1NjQgMTU4IDYzMFQ0MDMgNjk2UTQ4NyA2OTYgNTQzIDY4NVQ2NjEgNjM4UTcyMiA1OTkgNzQ0IDU0OVQ3NjYgNDU4UTc2NiA0MzQgNzYxIDQxMFQ3NDkgMzY4VDcyOSAzMjdUNzA5IDI5M1Q2ODQgMjU4VDY2MyAyMjlRNjMyIDE4NyA2MTQgMTYwVDU5MiAxMjZMNTg5IDExOVE1ODkgMTE4IDYyOCAxMThRNjY3IDExOSA2ODAgMTIxVDY5OCAxMzNRNzAyIDE0MCA3MDYgMTYwVDcxNCAxOTZMNzE3IDIxMlYyMTVINzc5VjIxMlE3NzggMjExIDc2MCAxMDhRNzQ0IDUgNzQyIDNWMEg2MzRINTYyUTUyOCAwIDUyMCA0VDUxMiAyNlE1MTIgOTIgNTU1IDIzOFQ1OTggNDU4UTU5OCA2NDUgNDE1IDY0NScsXG4gICAgMHgxRDZDMTogJzU2IDY3M1E1NiA2NzkgNjUgNjg2SDg5MlE5MDEgNjc5IDkwMSA2NzNROTAxIDY2OCA3MTQgMzMxVDUyMSAtMTVRNTE4IC0xOCA1MDYgLTI0SDQ1MlE0NDAgLTE5IDQzNiAtMTVRNDMxIC04IDMzNyAxNjJUMTUwIDUwMUw1NyA2NjlRNTcgNjcwIDU2IDY3MlY2NzNaTTUyOCAxMzZMNzU4IDU1M0gyOTdRMjk4IDU1MSA0MTQgMzQxTDUyOCAxMzYnLFxuICAgIDB4MUQ2RTI6ICcyMDggNzRRMjA4IDUwIDI1NCA0NlEyNzIgNDYgMjcyIDM1UTI3MiAzNCAyNzAgMjJRMjY3IDggMjY0IDRUMjUxIDBRMjQ5IDAgMjM5IDBUMjA1IDFUMTQxIDJRNzAgMiA1MCAwSDQyUTM1IDcgMzUgMTFRMzcgMzggNDggNDZINjJRMTMyIDQ5IDE2NCA5NlExNzAgMTAyIDM0NSA0MDFUNTIzIDcwNFE1MzAgNzE2IDU0NyA3MTZINTU1SDU3MlE1NzggNzA3IDU3OCA3MDZMNjA2IDM4M1E2MzQgNjAgNjM2IDU3UTY0MSA0NiA3MDEgNDZRNzI2IDQ2IDcyNiAzNlE3MjYgMzQgNzIzIDIyUTcyMCA3IDcxOCA0VDcwNCAwUTcwMSAwIDY5MCAwVDY1MSAxVDU3OCAyUTQ4NCAyIDQ1NSAwSDQ0M1E0MzcgNiA0MzcgOVQ0MzkgMjdRNDQzIDQwIDQ0NSA0M0w0NDkgNDZINDY5UTUyMyA0OSA1MzMgNjNMNTIxIDIxM0gyODNMMjQ5IDE1NVEyMDggODYgMjA4IDc0Wk01MTYgMjYwUTUxNiAyNzEgNTA0IDQxNlQ0OTAgNTYyTDQ2MyA1MTlRNDQ3IDQ5MiA0MDAgNDEyTDMxMCAyNjBMNDEzIDI1OVE1MTYgMjU5IDUxNiAyNjAnLFxuICAgIDB4MUQ2RTM6ICcyMzEgNjM3UTIwNCA2MzcgMTk5IDYzOFQxOTQgNjQ5UTE5NCA2NzYgMjA1IDY4MlEyMDYgNjgzIDMzNSA2ODNRNTk0IDY4MyA2MDggNjgxUTY3MSA2NzEgNzEzIDYzNlQ3NTYgNTQ0UTc1NiA0ODAgNjk4IDQyOVQ1NjUgMzYwTDU1NSAzNTdRNjE5IDM0OCA2NjAgMzExVDcwMiAyMTlRNzAyIDE0NiA2MzAgNzhUNDUzIDFRNDQ2IDAgMjQyIDBRNDIgMCAzOSAyUTM1IDUgMzUgMTBRMzUgMTcgMzcgMjRRNDIgNDMgNDcgNDVRNTEgNDYgNjIgNDZINjhROTUgNDYgMTI4IDQ5UTE0MiA1MiAxNDcgNjFRMTUwIDY1IDIxOSAzMzlUMjg4IDYyOFEyODggNjM1IDIzMSA2MzdaTTY0OSA1NDRRNjQ5IDU3NCA2MzQgNjAwVDU4NSA2MzRRNTc4IDYzNiA0OTMgNjM3UTQ3MyA2MzcgNDUxIDYzN1Q0MTYgNjM2SDQwM1EzODggNjM1IDM4NCA2MjZRMzgyIDYyMiAzNTIgNTA2UTM1MiA1MDMgMzUxIDUwMEwzMjAgMzc0SDQwMVE0ODIgMzc0IDQ5NCAzNzZRNTU0IDM4NiA2MDEgNDM0VDY0OSA1NDRaTTU5NSAyMjlRNTk1IDI3MyA1NzIgMzAyVDUxMiAzMzZRNTA2IDMzNyA0MjkgMzM3UTMxMSAzMzcgMzEwIDMzNlEzMTAgMzM0IDI5MyAyNjNUMjU4IDEyMkwyNDAgNTJRMjQwIDQ4IDI1MiA0OFQzMzMgNDZRNDIyIDQ2IDQyOSA0N1E0OTEgNTQgNTQzIDEwNVQ1OTUgMjI5JyxcbiAgICAweDFENkU0OiAnNDkgMVEzMSAxIDMxIDEwUTMxIDEyIDM0IDI0UTM5IDQzIDQ0IDQ1UTQ4IDQ2IDU5IDQ2SDY1UTkyIDQ2IDEyNSA0OVExMzkgNTIgMTQ0IDYxUTE0NiA2NiAyMTUgMzQyVDI4NSA2MjJRMjg1IDYyOSAyODEgNjI5UTI3MyA2MzIgMjI4IDYzNEgxOTdRMTkxIDY0MCAxOTEgNjQyVDE5MyA2NjFRMTk3IDY3NCAyMDMgNjgwSDcxNFE3MjEgNjc2IDcyMSA2NjlRNzIxIDY2NCA3MDggNTU3VDY5NCA0NDdRNjkyIDQ0MCA2NzQgNDQwSDY2MlE2NTUgNDQ1IDY1NSA0NTRRNjU1IDQ1NSA2NTggNDgwVDY2MSA1MzRRNjYxIDU3MiA2NTIgNTkyUTYzOCA2MTkgNjAzIDYyNlQ1MDEgNjM0SDQ3MVEzOTggNjMzIDM5MyA2MzBRMzg5IDYyOCAzODYgNjIyUTM4NSA2MTkgMzE1IDM0MVQyNDUgNjBRMjQ1IDQ2IDMzMyA0NkgzNDVRMzY2IDQ2IDM2NiAzNVEzNjYgMzMgMzYzIDIxVDM1OCA2UTM1NiAxIDMzOSAxUTMzNCAxIDI5MiAxVDE4NyAyUTEyMiAyIDg4IDJUNDkgMScsXG4gICAgMHgxRDZFNTogJzU3NCA3MTVMNTgyIDcxNlE1ODkgNzE2IDU5NSA3MTZRNjEyIDcxNiA2MTYgNzE0UTYyMSA3MTIgNjIxIDcwOVE2MjIgNzA3IDcwNSAzNTlUNzg4IDhRNzg2IDUgNzg1IDNMNzgxIDBINDE2UTUyIDAgNTAgMlQ0OCA2UTQ4IDkgMzA1IDM1OFQ1NjcgNzExUTU3MiA3MTIgNTc0IDcxNVpNNTk5IDM0Nkw1MzggNjAyTDQ0MiA0NzRRMzQ3IDM0NSAyNTIgMjE3VDE1NyA4N1Q0MDkgODZUNjYxIDg4TDY1NCAxMjBRNjQ2IDE1MSA2MjkgMjIwVDU5OSAzNDYnLFxuICAgIDB4MUQ2RTY6ICc0OTIgMjEzUTQ3MiAyMTMgNDcyIDIyNlE0NzIgMjMwIDQ3NyAyNTBUNDgyIDI4NVE0ODIgMzE2IDQ2MSAzMjNUMzY0IDMzMEgzMTJRMzExIDMyOCAyNzcgMTkyVDI0MyA1MlEyNDMgNDggMjU0IDQ4VDMzNCA0NlE0MjggNDYgNDU4IDQ4VDUxOCA2MVE1NjcgNzcgNTk5IDExN1Q2NzAgMjQ4UTY4MCAyNzAgNjgzIDI3MlE2OTAgMjc0IDY5OCAyNzRRNzE4IDI3NCA3MTggMjYxUTYxMyA3IDYwOCAyUTYwNSAwIDMyMiAwSDEzM1EzMSAwIDMxIDExUTMxIDEzIDM0IDI1UTM4IDQxIDQyIDQzVDY1IDQ2UTkyIDQ2IDEyNSA0OVExMzkgNTIgMTQ0IDYxUTE0NiA2NiAyMTUgMzQyVDI4NSA2MjJRMjg1IDYyOSAyODEgNjI5UTI3MyA2MzIgMjI4IDYzNEgxOTdRMTkxIDY0MCAxOTEgNjQyVDE5MyA2NTlRMTk3IDY3NiAyMDMgNjgwSDc1N1E3NjQgNjc2IDc2NCA2NjlRNzY0IDY2NCA3NTEgNTU3VDczNyA0NDdRNzM1IDQ0MCA3MTcgNDQwSDcwNVE2OTggNDQ1IDY5OCA0NTNMNzAxIDQ3NlE3MDQgNTAwIDcwNCA1MjhRNzA0IDU1OCA2OTcgNTc4VDY3OCA2MDlUNjQzIDYyNVQ1OTYgNjMyVDUzMiA2MzRINDg1UTM5NyA2MzMgMzkyIDYzMVEzODggNjI5IDM4NiA2MjJRMzg1IDYxOSAzNTUgNDk5VDMyNCAzNzdRMzQ3IDM3NiAzNzIgMzc2SDM5OFE0NjQgMzc2IDQ4OSAzOTFUNTM0IDQ3MlE1MzggNDg4IDU0MCA0OTBUNTU3IDQ5M1E1NjIgNDkzIDU2NSA0OTNUNTcwIDQ5MlQ1NzIgNDkxVDU3NCA0ODdUNTc3IDQ4M0w1NDQgMzUxUTUxMSAyMTggNTA4IDIxNlE1MDUgMjEzIDQ5MiAyMTMnLFxuICAgIDB4MUQ2RTc6ICc1OCA4UTU4IDIzIDY0IDM1UTY0IDM2IDMyOSAzMzRUNTk2IDYzNUw1ODYgNjM3UTU3NSA2MzcgNTEyIDYzN0g1MDBINDc2UTQ0MiA2MzcgNDIwIDYzNVQzNjUgNjI0VDMxMSA1OThUMjY2IDU0OFQyMjggNDY5UTIyNyA0NjYgMjI2IDQ2M1QyMjQgNDU4VDIyMyA0NTNUMjIyIDQ1MEwyMjEgNDQ4UTIxOCA0NDMgMjAyIDQ0M1ExODUgNDQzIDE4MiA0NTNMMjE0IDU2MVEyMjggNjA2IDI0MSA2NTFRMjQ5IDY3OSAyNTMgNjgxUTI1NiA2ODMgNDg3IDY4M0g3MThRNzIzIDY3OCA3MjMgNjc1UTcyMyA2NzMgNzE3IDY0OVExODkgNTQgMTg4IDUyTDE4NSA0OUgyNzRRMzY5IDUwIDM3NyA1MVE0NTIgNjAgNTAwIDEwMFQ1NzkgMjQ3UTU4NyAyNzIgNTkwIDI3N1Q2MDMgMjgySDYwN1E2MjggMjgyIDYyOCAyNzFRNTQ3IDUgNTQxIDJRNTM4IDAgMzAwIDBIMTI0UTU4IDAgNTggOCcsXG4gICAgMHgxRDZFODogJzIyOCA2MzdRMTk0IDYzNyAxOTIgNjQxUTE5MSA2NDMgMTkxIDY0OVExOTEgNjczIDIwMiA2ODJRMjA0IDY4MyAyMTkgNjgzUTI2MCA2ODEgMzU1IDY4MVEzODkgNjgxIDQxOCA2ODFUNDYzIDY4MlQ0ODMgNjgyUTQ5OSA2ODIgNDk5IDY3MlE0OTkgNjcwIDQ5NyA2NThRNDkyIDY0MSA0ODcgNjM4SDQ4NVE0ODMgNjM4IDQ4MCA2MzhUNDczIDYzOFQ0NjQgNjM3VDQ1NSA2MzdRNDE2IDYzNiA0MDUgNjM0VDM4NyA2MjNRMzg0IDYxOSAzNTUgNTAwUTM0OCA0NzQgMzQwIDQ0MlQzMjggMzk1TDMyNCAzODBRMzI0IDM3OCA0NjkgMzc4SDYxNEw2MTUgMzgxUTYxNSAzODQgNjQ2IDUwNFE2NzQgNjE5IDY3NCA2MjdUNjE3IDYzN1E1OTQgNjM3IDU4NyA2MzlUNTgwIDY0OFE1ODAgNjUwIDU4MiA2NjBRNTg2IDY3NyA1ODggNjc5VDYwNCA2ODJRNjA5IDY4MiA2NDYgNjgxVDc0MCA2ODBRODAyIDY4MCA4MzUgNjgxVDg3MSA2ODJRODg4IDY4MiA4ODggNjcyUTg4OCA2NDUgODc2IDYzOEg4NzRRODcyIDYzOCA4NjkgNjM4VDg2MiA2MzhUODUzIDYzN1Q4NDQgNjM3UTgwNSA2MzYgNzk0IDYzNFQ3NzYgNjIzUTc3MyA2MTggNzA0IDM0MFQ2MzQgNThRNjM0IDUxIDYzOCA1MVE2NDYgNDggNjkyIDQ2SDcyM1E3MjkgMzggNzI5IDM3VDcyNiAxOVE3MjIgNiA3MTYgMEg3MDFRNjY0IDIgNTY3IDJRNTMzIDIgNTA0IDJUNDU4IDJUNDM3IDFRNDIwIDEgNDIwIDEwUTQyMCAxNSA0MjMgMjRRNDI4IDQzIDQzMyA0NVE0MzcgNDYgNDQ4IDQ2SDQ1NFE0ODEgNDYgNTE0IDQ5UTUyMCA1MCA1MjIgNTBUNTI4IDU1VDUzNCA2NFQ1NDAgODJUNTQ3IDExMFQ1NTggMTUzUTU2NSAxODEgNTY5IDE5OFE2MDIgMzMwIDYwMiAzMzFUNDU3IDMzMkgzMTJMMjc5IDE5N1EyNDUgNjMgMjQ1IDU4UTI0NSA1MSAyNTMgNDlUMzAzIDQ2SDMzNFEzNDAgMzggMzQwIDM3VDMzNyAxOVEzMzMgNiAzMjcgMEgzMTJRMjc1IDIgMTc4IDJRMTQ0IDIgMTE1IDJUNjkgMlQ0OCAxUTMxIDEgMzEgMTBRMzEgMTIgMzQgMjRRMzkgNDMgNDQgNDVRNDggNDYgNTkgNDZINjVROTIgNDYgMTI1IDQ5UTEzOSA1MiAxNDQgNjFRMTQ3IDY1IDIxNiAzMzlUMjg1IDYyOFEyODUgNjM1IDIyOCA2MzcnLFxuICAgIDB4MUQ2RTk6ICc3NDAgNDM1UTc0MCAzMjAgNjc2IDIxM1Q1MTEgNDJUMzA0IC0yMlEyMDcgLTIyIDEzOCAzNVQ1MSAyMDFRNTAgMjA5IDUwIDI0NFE1MCAzNDYgOTggNDM4VDIyNyA2MDFRMzUxIDcwNCA0NzYgNzA0UTUxNCA3MDQgNTI0IDcwM1E2MjEgNjg5IDY4MCA2MTdUNzQwIDQzNVpNNjQwIDQ2NlE2NDAgNTIzIDYyNSA1NjVUNTgzIDYyOFQ1MzIgNjU4VDQ3OSA2NjhRMzcwIDY2OCAyNzMgNTU5VDE1MSAyNTVRMTUwIDI0NSAxNTAgMjEzUTE1MCAxNTYgMTY1IDExNlQyMDcgNTVUMjU5IDI2VDMxMyAxN1EzODUgMTcgNDUxIDYzVDU2MSAxODRRNTkwIDIzNCA2MTUgMzEyVDY0MCA0NjZaTTUxMCAyNzZRNTEwIDI3OCA1MTIgMjg4TDUxNSAyOThRNTE1IDI5OSAzODQgMjk5SDI1M0wyNTAgMjg1UTI0NiAyNzEgMjQ0IDI2OFQyMzEgMjY1SDIyN1EyMTYgMjY1IDIxNCAyNjZUMjA3IDI3NFEyMDcgMjc4IDIyMyAzNDVUMjQ0IDQxNlEyNDcgNDE5IDI2MCA0MTlIMjYzUTI4MCA0MTkgMjgwIDQwOFEyODAgNDA2IDI3OCAzOTZMMjc1IDM4NlEyNzUgMzg1IDQwNiAzODVINTM3TDU0MCAzOTlRNTQ0IDQxMyA1NDYgNDE2VDU1OSA0MTlINTYzUTU3NCA0MTkgNTc2IDQxOFQ1ODMgNDEwUTU4MyA0MDMgNTY2IDMzOVE1NDkgMjcxIDU0NCAyNjdRNTQyIDI2NSA1MzggMjY1SDUzMEg1MjdRNTEwIDI2NSA1MTAgMjc2JyxcbiAgICAweDFENkVBOiAnNDMgMVEyNiAxIDI2IDEwUTI2IDEyIDI5IDI0UTM0IDQzIDM5IDQ1UTQyIDQ2IDU0IDQ2SDYwUTEyMCA0NiAxMzYgNTNRMTM3IDUzIDEzOCA1NFExNDMgNTYgMTQ5IDc3VDE5OCAyNzNRMjEwIDMxOCAyMTYgMzQ0UTI4NiA2MjQgMjg2IDYyNlEyODQgNjMwIDI4NCA2MzFRMjc0IDYzNyAyMTMgNjM3SDE5M1ExODQgNjQzIDE4OSA2NjJRMTkzIDY3NyAxOTUgNjgwVDIwOSA2ODNIMjEzUTI4NSA2ODEgMzU5IDY4MVE0ODEgNjgxIDQ4NyA2ODNINDk3UTUwNCA2NzYgNTA0IDY3MlQ1MDEgNjU1VDQ5NCA2MzlRNDkxIDYzNyA0NzEgNjM3UTQ0MCA2MzcgNDA3IDYzNFEzOTMgNjMxIDM4OCA2MjNRMzgxIDYwOSAzMzcgNDMyUTMyNiAzODUgMzE1IDM0MVEyNDUgNjUgMjQ1IDU5UTI0NSA1MiAyNTUgNTBUMzA3IDQ2SDMzOVEzNDUgMzggMzQ1IDM3VDM0MiAxOVEzMzggNiAzMzIgMEgzMTZRMjc5IDIgMTc5IDJRMTQzIDIgMTEzIDJUNjUgMlQ0MyAxJyxcbiAgICAweDFENkVCOiAnMjg1IDYyOFEyODUgNjM1IDIyOCA2MzdRMjA1IDYzNyAxOTggNjM4VDE5MSA2NDdRMTkxIDY0OSAxOTMgNjYxUTE5OSA2ODEgMjAzIDY4MlEyMDUgNjgzIDIxNCA2ODNIMjE5UTI2MCA2ODEgMzU1IDY4MVEzODkgNjgxIDQxOCA2ODFUNDYzIDY4MlQ0ODMgNjgyUTUwMCA2ODIgNTAwIDY3NFE1MDAgNjY5IDQ5NyA2NjBRNDk2IDY1OCA0OTYgNjU0VDQ5NSA2NDhUNDkzIDY0NFQ0OTAgNjQxVDQ4NiA2MzlUNDc5IDYzOFQ0NzAgNjM3VDQ1NiA2MzdRNDE2IDYzNiA0MDUgNjM0VDM4NyA2MjNMMzA2IDMwNVEzMDcgMzA1IDQ5MCA0NDlUNjc4IDU5N1E2OTIgNjExIDY5MiA2MjBRNjkyIDYzNSA2NjcgNjM3UTY1MSA2MzcgNjUxIDY0OFE2NTEgNjUwIDY1NCA2NjJUNjU5IDY3N1E2NjIgNjgyIDY3NiA2ODJRNjgwIDY4MiA3MTEgNjgxVDc5MSA2ODBRODE0IDY4MCA4MzkgNjgxVDg2OSA2ODJRODg5IDY4MiA4ODkgNjcyUTg4OSA2NTAgODgxIDY0MlE4NzggNjM3IDg2MiA2MzdRNzg3IDYzMiA3MjYgNTg2UTcxMCA1NzYgNjU2IDUzNFQ1NTYgNDU1TDUwOSA0MThMNTE4IDM5NlE1MjcgMzc0IDU0NiAzMjlUNTgxIDI0NFE2NTYgNjcgNjYxIDYxUTY2MyA1OSA2NjYgNTdRNjgwIDQ3IDcxNyA0Nkg3MzhRNzQ0IDM4IDc0NCAzN1Q3NDEgMTlRNzM3IDYgNzMxIDBINzIwUTY4MCAzIDYyNSAzUTUwMyAzIDQ4OCAwSDQ3OFE0NzIgNiA0NzIgOVQ0NzQgMjdRNDc4IDQwIDQ4MCA0M1Q0OTEgNDZINDk0UTU0NCA0NiA1NDQgNzFRNTQ0IDc1IDUxNyAxNDFUNDg1IDIxNkw0MjcgMzU0TDM1OSAzMDFMMjkxIDI0OEwyNjggMTU1UTI0NSA2MyAyNDUgNThRMjQ1IDUxIDI1MyA0OVQzMDMgNDZIMzM0UTM0MCAzNyAzNDAgMzVRMzQwIDE5IDMzMyA1UTMyOCAwIDMxNyAwUTMxNCAwIDI4MCAxVDE4MCAyUTExOCAyIDg1IDJUNDkgMVEzMSAxIDMxIDExUTMxIDEzIDM0IDI1UTM4IDQxIDQyIDQzVDY1IDQ2UTkyIDQ2IDEyNSA0OVExMzkgNTIgMTQ0IDYxUTE0NyA2NSAyMTYgMzM5VDI4NSA2MjgnLFxuICAgIDB4MUQ2RUM6ICcxMzUgMlExMTQgMiA5MCAyVDYwIDFRMzUgMSAzNSAxMVEzNSAyOCA0MiA0MFE0NSA0NiA1NSA0NlExMTkgNDYgMTUxIDk0UTE1MyA5NyAzMjUgNDAyVDQ5OCA3MDlRNTA1IDcxNiA1MjYgNzE2UTU0MyA3MTYgNTQ5IDcxMFE1NTAgNzA5IDU2MCA1NDhUNTgwIDIyNFQ1OTEgNTdRNTk0IDUyIDU5NSA1MlE2MDMgNDcgNjM4IDQ2SDY2M1E2NzAgMzkgNjcwIDM1UTY2OSAxMiA2NTcgMEg2NDRRNjEzIDIgNTMwIDJRNDk3IDIgNDY5IDJUNDI0IDJUNDA1IDFRMzg4IDEgMzg4IDEwUTM4OCAxNSAzOTEgMjRRMzkyIDI3IDM5MyAzMlQzOTUgMzhUMzk3IDQxVDQwMSA0NFQ0MDYgNDVUNDE1IDQ2UTQ3MyA0NiA0ODcgNjRMNDcyIDMwNlE0NjggMzY1IDQ2NSA0MjZUNDU5IDUxOEw0NTcgNTUwUTQ1NiA1NTAgMzI4IDMyMlQxOTggODhRMTk2IDgwIDE5NiA3N1ExOTYgNDkgMjQzIDQ2UTI2MSA0NiAyNjEgMzVRMjYxIDM0IDI1OSAyMlEyNTYgNyAyNTQgNFQyNDAgMFEyMzcgMCAyMTEgMVQxMzUgMicsXG4gICAgMHgxRDZFRDogJzI4OSA2MjlRMjg5IDYzNSAyMzIgNjM3UTIwOCA2MzcgMjAxIDYzOFQxOTQgNjQ4UTE5NCA2NDkgMTk2IDY1OVExOTcgNjYyIDE5OCA2NjZUMTk5IDY3MVQyMDEgNjc2VDIwMyA2NzlUMjA3IDY4MVQyMTIgNjgzVDIyMCA2ODNUMjMyIDY4NFEyMzggNjg0IDI2MiA2ODRUMzA3IDY4M1EzODYgNjgzIDM5OCA2ODNUNDE0IDY3OFE0MTUgNjc0IDQ1MSAzOTZMNDg3IDExN0w1MTAgMTU0UTUzNCAxOTAgNTc0IDI1NFQ2NjIgMzk0UTgzNyA2NzMgODM5IDY3NVE4NDAgNjc2IDg0MiA2NzhUODQ2IDY4MUw4NTIgNjgzSDk0OFE5NjUgNjgzIDk4OCA2ODNUMTAxNyA2ODRRMTA1MSA2ODQgMTA1MSA2NzNRMTA1MSA2NjggMTA0OCA2NTZUMTA0NSA2NDNRMTA0MSA2MzcgMTAwOCA2MzdROTY4IDYzNiA5NTcgNjM0VDkzOSA2MjNROTM2IDYxOCA4NjcgMzQwVDc5NyA1OVE3OTcgNTUgNzk4IDU0VDgwNSA1MFQ4MjIgNDhUODU1IDQ2SDg4NlE4OTIgMzcgODkyIDM1UTg5MiAxOSA4ODUgNVE4ODAgMCA4NjkgMFE4NjQgMCA4MjggMVQ3MzYgMlE2NzUgMiA2NDQgMlQ2MDkgMVE1OTIgMSA1OTIgMTFRNTkyIDEzIDU5NCAyNVE1OTggNDEgNjAyIDQzVDYyNSA0NlE2NTIgNDYgNjg1IDQ5UTY5OSA1MiA3MDQgNjFRNzA2IDY1IDc0MiAyMDdUODEzIDQ5MFQ4NDggNjMxTDY1NCAzMjJRNDU4IDEwIDQ1MyA1UTQ1MSA0IDQ0OSAzUTQ0NCAwIDQzMyAwUTQxOCAwIDQxNSA3UTQxMyAxMSAzNzQgMzE3TDMzNSA2MjRMMjY3IDM1NFEyMDAgODggMjAwIDc5UTIwNiA0NiAyNzIgNDZIMjgyUTI4OCA0MSAyODkgMzdUMjg2IDE5UTI4MiAzIDI3OCAxUTI3NCAwIDI2NyAwUTI2NSAwIDI1NSAwVDIyMSAxVDE1NyAyUTEyNyAyIDk1IDFUNTggMFE0MyAwIDM5IDJUMzUgMTFRMzUgMTMgMzggMjVUNDMgNDBRNDUgNDYgNjUgNDZRMTM1IDQ2IDE1NCA4NlExNTggOTIgMjIzIDM1NFQyODkgNjI5JyxcbiAgICAweDFENkVFOiAnMjM0IDYzN1EyMzEgNjM3IDIyNiA2MzdRMjAxIDYzNyAxOTYgNjM4VDE5MSA2NDlRMTkxIDY3NiAyMDIgNjgyUTIwNCA2ODMgMjk5IDY4M1EzNzYgNjgzIDM4NyA2ODNUNDAxIDY3N1E2MTIgMTgxIDYxNiAxNjhMNjcwIDM4MVE3MjMgNTkyIDcyMyA2MDZRNzIzIDYzMyA2NTkgNjM3UTYzNSA2MzcgNjM1IDY0OFE2MzUgNjUwIDYzNyA2NjBRNjQxIDY3NiA2NDMgNjc5VDY1MyA2ODNRNjU2IDY4MyA2ODQgNjgyVDc2NyA2ODBRODE3IDY4MCA4NDMgNjgxVDg3MyA2ODJRODg4IDY4MiA4ODggNjcyUTg4OCA2NTAgODgwIDY0MlE4NzggNjM3IDg1OCA2MzdRNzg3IDYzMyA3NjkgNTk3TDYyMCA3UTYxOCAwIDU5OSAwUTU4NSAwIDU4MiAyUTU3OSA1IDQ1MyAzMDVMMzI2IDYwNEwyNjEgMzQ0UTE5NiA4OCAxOTYgNzlRMjAxIDQ2IDI2OCA0NkgyNzhRMjg0IDQxIDI4NCAzOFQyODIgMTlRMjc4IDYgMjcyIDBIMjU5UTIyOCAyIDE1MSAyUTEyMyAyIDEwMCAyVDYzIDJUNDYgMVEzMSAxIDMxIDEwUTMxIDE0IDM0IDI2VDM5IDQwUTQxIDQ2IDYyIDQ2UTEzMCA0OSAxNTAgODVRMTU0IDkxIDIyMSAzNjJMMjg5IDYzNFEyODcgNjM1IDIzNCA2MzcnLFxuICAgIDB4MUQ2RUY6ICcyMjIgNjY4UTIyMiA2NzAgMjI5IDY3N0g2NTRRNjc3IDY3NyA3MDUgNjc3VDc0MCA2NzhRNzY0IDY3OCA3NzAgNjc2VDc3NyA2NjdRNzc3IDY2MiA3NjQgNTk0UTc2MSA1NzkgNzU3IDU1OVQ3NTEgNTI4TDc0OSA1MTlRNzQ3IDUxMiA3MjkgNTEySDcxN1E3MTAgNTE5IDcxMCA1MjVRNzEyIDUzMiA3MTUgNTU5VDcxOSA1OTFRNzE4IDU5NSA3MTEgNTk1UTY4MiA1OTggNDg2IDU5OFEyNTIgNTk4IDI0NiA1OTJRMjM5IDU4NyAyMjggNTUyTDIxNiA1MTdRMjE0IDUxMiAxOTcgNTEySDE4NVExNzggNTE3IDE3OCA1MjJRMTc4IDUyNCAxOTggNTkxVDIyMiA2NjhaTTIyNyAyNjJRMjE4IDI2MiAyMTUgMjYyVDIwOSAyNjZMMjA3IDI3MEwyMjcgMzU2UTI0NyA0MzUgMjUwIDQzOVEyNTMgNDQzIDI2MCA0NDNIMjY3SDI4MFEyODcgNDM4IDI4NyA0MzNRMjg3IDQzMCAyODUgNDIwVDI4MCA0MDJMMjc4IDM5M1EyNzggMzkyIDQzMSAzOTJINTg1TDU5MCA0MTVRNTk1IDQzNiA1OTggNDM5VDYxMiA0NDNINjI4UTYzNSA0MzggNjM1IDQzM1E2MzUgNDMxIDYxNSAzNTFUNTk0IDI2OFE1OTIgMjYyIDU3NSAyNjJINTcyUTU1NiAyNjIgNTU2IDI3MlE1NTYgMjgwIDU2MCAyOTNMNTY1IDMxM0gyNThMMjUyIDI5MlEyNDggMjcxIDI0NSAyNjdUMjMwIDI2MkgyMjdaTTYwIDBRNTMgNCA1MyAxMVE1MyAxNCA2OCA4OVQ4NCAxNjlRODggMTc2IDk4IDE3NkgxMDRIMTE2UTEyMyAxNjkgMTIzIDE2M1ExMjIgMTYwIDExNyAxMjdUMTEyIDg4UTExMiA4MCAyNDMgODBIMzUxSDQ1NFE1NTQgODAgNTc0IDgxVDU5NyA4OFY4OVE2MDMgMTAwIDYxMCAxMjFUNjIyIDE1N1Q2MzAgMTc0UTYzMyAxNzYgNjQ2IDE3Nkg2NThRNjY1IDE3MSA2NjUgMTY2UTY2NSAxNjQgNjQzIDg5VDYxOCA3UTYxNiAyIDYwNyAxVDU0OCAwSDMzNUg2MCcsXG4gICAgMHgxRDZGMDogJzc0MCA0MzVRNzQwIDMyMCA2NzYgMjEzVDUxMSA0MlQzMDQgLTIyUTIwNyAtMjIgMTM4IDM1VDUxIDIwMVE1MCAyMDkgNTAgMjQ0UTUwIDM0NiA5OCA0MzhUMjI3IDYwMVEzNTEgNzA0IDQ3NiA3MDRRNTE0IDcwNCA1MjQgNzAzUTYyMSA2ODkgNjgwIDYxN1Q3NDAgNDM1Wk02MzcgNDc2UTYzNyA1NjUgNTkxIDYxNVQ0NzYgNjY1UTM5NiA2NjUgMzIyIDYwNVEyNDIgNTQyIDIwMCA0MjhUMTU3IDIxNlExNTcgMTI2IDIwMCA3M1QzMTQgMTlRNDA0IDE5IDQ4NSA5OFQ2MDggMzEzUTYzNyA0MDggNjM3IDQ3NicsXG4gICAgMHgxRDZGMTogJzQ4IDFRMzEgMSAzMSAxMFEzMSAxMiAzNCAyNFEzOSA0MyA0NCA0NVE0OCA0NiA1OSA0Nkg2NVE5MiA0NiAxMjUgNDlRMTM5IDUyIDE0NCA2MVExNDYgNjYgMjE1IDM0MlQyODUgNjIyUTI4NSA2MjkgMjgxIDYyOVEyNzMgNjMyIDIyOCA2MzRIMTk3UTE5MSA2NDAgMTkxIDY0MlQxOTMgNjYxUTE5NyA2NzQgMjAzIDY4MEg1NDFRNjIxIDY4MCA3MDkgNjgwVDgxMiA2ODFRODQxIDY4MSA4NTUgNjgxVDg3NyA2NzlUODg2IDY3NlQ4ODcgNjcwUTg4NyA2NjMgODg1IDY1NlE4ODAgNjM3IDg3NSA2MzVRODcxIDYzNCA4NjAgNjM0SDg1NFE4MjcgNjM0IDc5NCA2MzFRNzgwIDYyOCA3NzUgNjE5UTc3MyA2MTQgNzA0IDMzOFQ2MzQgNThRNjM0IDUxIDYzOCA1MVE2NDYgNDggNjkyIDQ2SDcyM1E3MjkgMzggNzI5IDM3VDcyNiAxOVE3MjIgNiA3MTYgMEg3MDFRNjY0IDIgNTY3IDJRNTMzIDIgNTA0IDJUNDU4IDJUNDM3IDFRNDIwIDEgNDIwIDEwUTQyMCAxNSA0MjMgMjRRNDI4IDQzIDQzMyA0NVE0MzcgNDYgNDQ4IDQ2SDQ1NFE0ODEgNDYgNTE0IDQ5UTUyOCA1MiA1MzMgNjFRNTM2IDY3IDU3MiAyMDlUNjQyIDQ5MVQ2NzggNjMyUTY3OCA2MzQgNTMzIDYzNEgzODhRMzg3IDYzMSAzMTYgMzQ3VDI0NSA1OVEyNDUgNTUgMjQ2IDU0VDI1MyA1MFQyNzAgNDhUMzAzIDQ2SDMzNFEzNDAgMzggMzQwIDM3VDMzNyAxOVEzMzMgNiAzMjcgMEgzMTJRMjc1IDIgMTc4IDJRMTQ0IDIgMTE1IDJUNjkgMlQ0OCAxJyxcbiAgICAweDFENkYyOiAnMjg3IDYyOFEyODcgNjM1IDIzMCA2MzdRMjA2IDYzNyAxOTkgNjM4VDE5MiA2NDhRMTkyIDY0OSAxOTQgNjU5UTIwMCA2NzkgMjAzIDY4MVQzOTcgNjgzUTU4NyA2ODIgNjAwIDY4MFE2NjQgNjY5IDcwNyA2MzFUNzUxIDUzMFE3NTEgNDUzIDY4NSAzODlRNjE2IDMyMSA1MDcgMzAzUTUwMCAzMDIgNDAyIDMwMUgzMDdMMjc3IDE4MlEyNDcgNjYgMjQ3IDU5UTI0NyA1NSAyNDggNTRUMjU1IDUwVDI3MiA0OFQzMDUgNDZIMzM2UTM0MiAzNyAzNDIgMzVRMzQyIDE5IDMzNSA1UTMzMCAwIDMxOSAwUTMxNiAwIDI4MiAxVDE4MiAyUTEyMCAyIDg3IDJUNTEgMVEzMyAxIDMzIDExUTMzIDEzIDM2IDI1UTQwIDQxIDQ0IDQzVDY3IDQ2UTk0IDQ2IDEyNyA0OVExNDEgNTIgMTQ2IDYxUTE0OSA2NSAyMTggMzM5VDI4NyA2MjhaTTY0NSA1NTRRNjQ1IDU2NyA2NDMgNTc1VDYzNCA1OTdUNjA5IDYxOVQ1NjAgNjM1UTU1MyA2MzYgNDgwIDYzN1E0NjMgNjM3IDQ0NSA2MzdUNDE2IDYzNlQ0MDQgNjM2UTM5MSA2MzUgMzg2IDYyN1EzODQgNjIxIDM2NyA1NTBUMzMyIDQxMlQzMTQgMzQ0UTMxNCAzNDIgMzk1IDM0Mkg0MDdINDMwUTU0MiAzNDIgNTkwIDM5MlE2MTcgNDE5IDYzMSA0NzFUNjQ1IDU1NCcsXG4gICAgMHgxRDZGNDogJzY1IDBRNTggNCA1OCAxMVE1OCAxNiAxMTQgNjdRMTczIDExOSAyMjIgMTY0TDM3NyAzMDRRMzc4IDMwNSAzNDAgMzg2VDI2MSA1NTJUMjE4IDY0NFEyMTcgNjQ4IDIxOSA2NjBRMjI0IDY3OCAyMjggNjgxUTIzMSA2ODMgNTE1IDY4M0g3OTlRODA0IDY3OCA4MDYgNjc0UTgwNiA2NjcgNzkzIDU1OVQ3NzggNDQ4UTc3NCA0NDMgNzU5IDQ0M1E3NDcgNDQzIDc0MyA0NDVUNzM5IDQ1NlE3MzkgNDU4IDc0MSA0NzdUNzQzIDUxNlE3NDMgNTUyIDczNCA1NzRUNzEwIDYwOVQ2NjMgNjI3VDU5NiA2MzVUNTAyIDYzN1E0ODAgNjM3IDQ2OSA2MzdIMzM5UTM0NCA2MjcgNDExIDQ4NlQ0NzggMzQxVjMzOVE0NzcgMzM3IDQ3NyAzMzZMNDU3IDMxOFE0MzcgMzAwIDM5OCAyNjVUMzIyIDE5NkwxNjggNTdRMTY3IDU2IDE4OCA1NlQyNTggNTZIMzU5UTQyNiA1NiA0NjMgNThUNTM3IDY5VDU5NiA5N1Q2MzkgMTQ2VDY4MCAyMjVRNjg2IDI0MyA2ODkgMjQ2VDcwMiAyNTBINzA1UTcyNiAyNTAgNzI2IDIzOVE3MjYgMjM4IDY4MyAxMjNUNjM5IDVRNjM3IDEgNjEwIDFRNTc3IDAgMzQ4IDBINjUnLFxuICAgIDB4MUQ2RjU6ICc0MCA0MzdRMjEgNDM3IDIxIDQ0NVEyMSA0NTAgMzcgNTAxVDcxIDYwMkw4OCA2NTFROTMgNjY5IDEwMSA2NzdINTY5SDY1OVE2OTEgNjc3IDY5NyA2NzZUNzA0IDY2N1E3MDQgNjYxIDY4NyA1NTNUNjY4IDQ0NFE2NjggNDM3IDY0OSA0MzdRNjQwIDQzNyA2MzcgNDM3VDYzMSA0NDJMNjI5IDQ0NVE2MjkgNDUxIDYzNSA0OTBUNjQxIDU1MVE2NDEgNTg2IDYyOCA2MDRUNTczIDYyOVE1NjggNjMwIDUxNSA2MzFRNDY5IDYzMSA0NTcgNjMwVDQzOSA2MjJRNDM4IDYyMSAzNjggMzQzVDI5OCA2MFEyOTggNDggMzg2IDQ2UTQxOCA0NiA0MjcgNDVUNDM2IDM2UTQzNiAzMSA0MzMgMjJRNDI5IDQgNDI0IDFMNDIyIDBRNDE5IDAgNDE1IDBRNDEwIDAgMzYzIDFUMjI4IDJROTkgMiA2NCAwSDQ5UTQzIDYgNDMgOVQ0NSAyN1E0OSA0MCA1NSA0Nkg4M0g5NFExNzQgNDYgMTg5IDU1UTE5MCA1NiAxOTEgNTZRMTk2IDU5IDIwMSA3NlQyNDEgMjMzUTI1OCAzMDEgMjY5IDM0NFEzMzkgNjE5IDMzOSA2MjVRMzM5IDYzMCAzMTAgNjMwSDI3OVEyMTIgNjMwIDE5MSA2MjRRMTQ2IDYxNCAxMjEgNTgzVDY3IDQ2N1E2MCA0NDUgNTcgNDQxVDQzIDQzN0g0MCcsXG4gICAgMHgxRDZGNjogJzQ1IDUzNVEzNCA1MzUgMzEgNTM2VDI4IDU0NFEyOCA1NTQgMzkgNTc4VDcwIDYzMVQxMjYgNjgzVDIwNiA3MDVRMjMwIDcwNSAyNTEgNjk4VDI5NSA2NzFUMzMwIDYxMlQzNDQgNTE0UTM0NCA0NzcgMzQyIDQ3M1Y0NzJRMzQzIDQ3MiAzNDcgNDgwVDM2MSA1MDlUMzgwIDU0N1E0NzEgNzA0IDU5NiA3MDRRNjE1IDcwNCA2MjUgNzAyUTY1OSA2OTIgNjc5IDY2M1Q3MDAgNTk1UTcwMCA1NjUgNjk2IDU1MlQ2ODcgNTM3VDY3MCA1MzVRNjU2IDUzNSA2NTMgNTM2VDY0OSA1NDNRNjQ5IDU0NCA2NDkgNTUwVDY1MCA1NjJRNjUwIDU4OSA2MjkgNjA1VDU3NSA2MjFRNTAyIDYyMSA0NDggNTQ3VDM2NSAzNjFRMjkwIDcwIDI5MCA2MFEyOTAgNDYgMzc5IDQ2SDQwNFE0MTAgNDAgNDEwIDM5VDQwOCAxOVE0MDQgNiAzOTggMEgzODFRMzQwIDIgMjI1IDJRMTg0IDIgMTQ5IDJUOTQgMlQ2OSAxUTYxIDEgNTggMVQ1MyA0VDUxIDEwUTUxIDExIDUzIDIzUTU0IDI1IDU1IDMwVDU2IDM2VDU4IDQwVDYwIDQzVDYyIDQ0VDY3IDQ2VDczIDQ2VDgyIDQ2SDg5UTE0NCA0NiAxNjMgNDlUMTkwIDYyTDE5OCA5M1EyMDYgMTI0IDIxNyAxNjlUMjQxIDI2MlQyNjIgMzUwVDI3NCA0MDRRMjgxIDQ0NSAyODEgNDg2VjQ5NFEyODEgNjIxIDE4NSA2MjFRMTQ3IDYyMSAxMTYgNjAxVDc0IDU1MFE3MSA1MzkgNjYgNTM3VDQ1IDUzNScsXG4gICAgMHgxRDZGNzogJzM1NiA2MjRRMzU2IDYzNyAyNjcgNjM3SDI0M1EyMzcgNjQyIDIzNyA2NDVUMjM5IDY2NFEyNDMgNjc3IDI0OSA2ODNIMjY0UTM0MiA2ODEgNDI5IDY4MVE1NjUgNjgxIDU3MSA2ODNINTgzUTU4OSA2NzcgNTg5IDY3NFQ1ODcgNjU2UTU4MiA2NDEgNTc4IDYzN0g1NDBRNTE2IDYzNyA1MDQgNjM3VDQ3OSA2MzNUNDYzIDYzMFQ0NTQgNjIzVDQ0OCA2MTNUNDQzIDU5N1Q0MzggNTc2UTQzNiA1NjYgNDM0IDU1NlQ0MzAgNTM5TDQyOCA1MzNRNDQyIDUzMyA0NzIgNTI2VDU0MyA1MDJUNjEzIDQ1MVQ2NDIgMzczUTY0MiAzMDEgNTY3IDI0MVQzODYgMTU4TDMzNiAxNTBRMzMyIDE1MCAzMzEgMTQ2UTMxMCA2NiAzMTAgNjBRMzEwIDQ2IDM5OSA0Nkg0MjRRNDMwIDQwIDQzMCAzOVQ0MjggMTlRNDI0IDYgNDE4IDBINDAxUTM2MCAyIDI0NyAyUTIwNyAyIDE3MyAyVDExOSAyVDk1IDFRODcgMSA4NCAxVDc5IDRUNzcgMTBRNzcgMTEgNzkgMjNRODAgMjUgODEgMzBUODIgMzZUODQgNDBUODYgNDNUODggNDRUOTMgNDZUOTkgNDZUMTA4IDQ2SDExNVExNzAgNDYgMTg5IDQ5VDIxNiA2MlEyMjAgNzQgMjI4IDEwN0wyMzkgMTUwTDIyMyAxNTJRMTM5IDE2NCA4MiAyMDVUMjQgMzExUTI0IDM5NiAxMjUgNDYyUTIwNyA1MTcgMzM1IDUzM0wzNDYgNTc4UTM1NiA2MTkgMzU2IDYyNFpNMTMwIDI5MVExMzAgMjAzIDI0MSAxODhIMjQ5UTI0OSAxOTAgMjg3IDM0MkwzMjUgNDk1SDMyNFEzMTMgNDk1IDI5MSA0OTFUMjI5IDQ2NlQxNjggNDE0UTEzMCAzNTcgMTMwIDI5MVpNNTM2IDM5M1E1MzYgNDQwIDUwNyA0NjNUNDE4IDQ5NkwzNDEgMTg3TDM1MSAxODlRNDQzIDIwMSA0ODcgMjU1UTUzNiAzMTQgNTM2IDM5MycsXG4gICAgMHgxRDZGODogJzQyIDBINDBRMjYgMCAyNiAxMVEyNiAxNSAyOSAyN1EzMyA0MSAzNiA0M1Q1NSA0NlExNDEgNDkgMTkwIDk4UTIwMCAxMDggMzA2IDIyNFQ0MTEgMzQyUTMwMiA2MjAgMjk3IDYyNVEyODggNjM2IDIzNCA2MzdIMjA2UTIwMCA2NDMgMjAwIDY0NVQyMDIgNjY0UTIwNiA2NzcgMjEyIDY4M0gyMjZRMjYwIDY4MSAzNDcgNjgxUTM4MCA2ODEgNDA4IDY4MVQ0NTMgNjgyVDQ3MyA2ODJRNDkwIDY4MiA0OTAgNjcxUTQ5MCA2NzAgNDg4IDY1OFE0ODQgNjQzIDQ4MSA2NDBUNDY1IDYzN1E0MzQgNjM0IDQxMSA2MjBMNDg4IDQyNkw1NDEgNDg1UTY0NiA1OTggNjQ2IDYxMFE2NDYgNjI4IDYyMiA2MzVRNjE3IDYzNSA2MDkgNjM3UTU5NCA2MzcgNTk0IDY0OFE1OTQgNjUwIDU5NiA2NjRRNjAwIDY3NyA2MDYgNjgzSDYxOFE2MTkgNjgzIDY0MyA2ODNUNjk3IDY4MVQ3MzggNjgwUTgyOCA2ODAgODM3IDY4M0g4NDVRODUyIDY3NiA4NTIgNjcyUTg1MCA2NDcgODQwIDYzN0g4MjRRNzkwIDYzNiA3NjMgNjI4VDcyMiA2MTFUNjk4IDU5M0w2ODcgNTg0UTY4NyA1ODUgNTkyIDQ4MEw1MDUgMzg0UTUwNSAzODMgNTM2IDMwNFQ2MDEgMTQyVDYzOCA1NlE2NDggNDcgNjk5IDQ2UTczNCA0NiA3MzQgMzdRNzM0IDM1IDczMiAyM1E3MjggNyA3MjUgNFQ3MTEgMVE3MDggMSA2NzggMVQ1ODkgMlE1MjggMiA0OTYgMlQ0NjEgMVE0NDQgMSA0NDQgMTBRNDQ0IDExIDQ0NiAyNVE0NDggMzUgNDUwIDM5VDQ1NSA0NFQ0NjQgNDZUNDgwIDQ3VDUwNiA1NFE1MjMgNjIgNTIzIDY0UTUyMiA2NCA0NzYgMTgxTDQyOSAyOTlRMjQxIDk1IDIzNiA4NFEyMzIgNzYgMjMyIDcyUTIzMiA1MyAyNjEgNDdRMjYyIDQ3IDI2NyA0N1QyNzMgNDZRMjc2IDQ2IDI3NyA0NlQyODAgNDVUMjgzIDQyVDI4NCAzNVEyODQgMjYgMjgyIDE5UTI3OSA2IDI3NiA0VDI2MSAxUTI1OCAxIDI0MyAxVDIwMSAyVDE0MiAyUTY0IDIgNDIgMCcsXG4gICAgMHgxRDZGOTogJzIxNiAxNTFRNDggMTc0IDQ4IDMyOVE0OCAzNjEgNTYgNDAzVDY1IDQ1OFE2NSA0ODIgNTggNDk0VDQzIDUwN1QyOCA1MTBUMjEgNTIwUTIxIDUyOCAyMyA1MzRUMjkgNTQ0TDMyIDU0Nkg3Mkg5NFExMTAgNTQ2IDExOSA1NDRUMTM5IDUzNlQxNTQgNTE0VDE1OSA0NzZWNDY1UTE1OSA0NDUgMTQ5IDM5OVQxMzggMzE0UTE0MiAyMjkgMTk3IDIwMVEyMjMgMTg3IDIyNiAxOTBMMjMzIDIxOFEyNDAgMjQ2IDI1MyAzMDBUMjgwIDQwN1EzMzMgNjE5IDMzMyA2MjVRMzMzIDYzNyAyNDQgNjM3SDIyMFEyMTQgNjQyIDIxNCA2NDVUMjE2IDY2NFEyMjAgNjc3IDIyNiA2ODNIMjQxUTMyMSA2ODEgNDA1IDY4MVE1NDMgNjgxIDU0OSA2ODNINTYwUTU2NiA2NzcgNTY2IDY3NFQ1NjQgNjU2UTU1OSA2NDEgNTU1IDYzN0g1MTdRNDQ4IDYzNiA0MzYgNjI4UTQyOSA2MjMgNDIzIDYwMFQzNzMgNDA0TDMyMCAxOTJRMzcwIDIwMSA0MTkgMjQ4UTQ1MSAyODEgNDY5IDMxN1Q1MDAgNDAwVDUxOCA0NTdRNTI5IDQ4NiA1NDIgNTA1VDU2OSA1MzJUNTk0IDU0M1Q2MjEgNTQ2SDY0NEg2NjlRNjkyIDU0NiA2OTIgNTM2UTY5MSA1MDkgNjc2IDUwOVE2MjMgNTA5IDU5MyAzOTlRNTg3IDM3NyA1NzkgMzU1VDU1MiAzMDFUNTA5IDI0NFQ0NDYgMTk1VDM1OSAxNTlRMzI0IDE1MSAzMTQgMTUxUTMxMSAxNTEgMzEwIDE1MFQyOTggMTA2VDI4NyA2MFEyODcgNDYgMzc2IDQ2SDQwMVE0MDcgNDAgNDA3IDM5VDQwNSAxOVE0MDEgNiAzOTUgMEgzNzhRMzM3IDIgMjI0IDJRMTg0IDIgMTUwIDJUOTYgMlQ3MiAxUTY0IDEgNjEgMVQ1NiA0VDU0IDEwUTU0IDExIDU2IDIzUTU3IDI1IDU4IDMwVDU5IDM2VDYxIDQwVDYzIDQzVDY1IDQ0VDcwIDQ2VDc2IDQ2VDg1IDQ2SDkyUTE0NyA0NiAxNjYgNDlUMTkzIDYyTDIwNCAxMDZRMjE2IDE0OSAyMTYgMTUxJyxcbiAgICAweDFENkZBOiAnMTI1IDg0UTEyNyA3OCAxOTQgNzZIMjQzVjc4UTI0MyAxMjIgMjA4IDIxNVQxNjUgMzUwUTE2NCAzNTkgMTYyIDM4OVExNjIgNTIyIDI3MiA2MTBRMzI4IDY1NiAzOTYgNjgwVDUyNSA3MDRRNjI4IDcwNCA2OTggNjYxUTczNCA2MzcgNzU1IDYwMVQ3ODEgNTQ0VDc4NiA1MDRRNzg2IDQzOSA3NDcgMzc0VDYzNSAyMjZUNTM3IDEwOVE1MTggODEgNTE4IDc3UTUzNyA3NiA1NTcgNzZRNjA4IDc2IDYyMCA3OFQ2NDAgOTJRNjQ2IDEwMCA2NTYgMTE5VDY3MyAxNTVUNjgzIDE3MlE2OTAgMTczIDY5OCAxNzNRNzE4IDE3MyA3MTggMTYyUTcxOCAxNjEgNjgxIDgyVDY0MiAyUTYzOSAwIDU1MCAwSDQ2MVE0NTUgNSA0NTUgOVQ0NTggMjhRNDcyIDc4IDUxMCAxNDlUNTg0IDI3NlQ2NDggNDAyVDY3NyA1MjVRNjc3IDU5NCA2MzYgNjMxVDUzMCA2NjhRNDc2IDY2OCA0MjMgNjQxVDMzNSA1NjhRMjg0IDQ5OSAyNzEgNDAwUTI3MCAzODggMjcwIDM0OFEyNzAgMjk4IDI3NyAyMjhUMjg1IDExNVEyODUgODIgMjgwIDQ5VDI3MSA2UTI2OSAxIDI1OCAxVDE3NSAwSDg3UTgzIDMgODAgN1YxOFE4MCAyMiA4MiA5OFE4NCAxNTYgODUgMTYzVDkxIDE3MlE5NCAxNzMgMTA0IDE3M1QxMTkgMTcyUTEyNCAxNjkgMTI0IDEyNlExMjUgMTA0IDEyNSA4NCcsXG4gICAgMHgxRDZGQzogJzM0IDE1NlEzNCAyNzAgMTIwIDM1NlQzMDkgNDQyUTM3OSA0NDIgNDIxIDQwMlQ0NzggMzA0UTQ4NCAyNzUgNDg1IDIzN1YyMDhRNTM0IDI4MiA1NjAgMzc0UTU2NCAzODggNTY2IDM5MFQ1ODIgMzkzUTYwMyAzOTMgNjAzIDM4NVE2MDMgMzc2IDU5NCAzNDZUNTU4IDI2MVQ0OTcgMTYxTDQ4NiAxNDdMNDg3IDEyM1E0ODkgNjcgNDk1IDQ3VDUxNCAyNlE1MjggMjggNTQwIDM3VDU1NyA2MFE1NTkgNjcgNTYyIDY4VDU3NyA3MFE1OTcgNzAgNTk3IDYyUTU5NyA1NiA1OTEgNDNRNTc5IDE5IDU1NiA1VDUxMiAtMTBINTA1UTQzOCAtMTAgNDE0IDYyTDQxMSA2OUw0MDAgNjFRMzkwIDUzIDM3MCA0MVQzMjUgMThUMjY3IC0yVDIwMyAtMTFRMTI0IC0xMSA3OSAzOVQzNCAxNTZaTTIwOCAyNlEyNTcgMjYgMzA2IDQ3VDM3OSA5MEw0MDMgMTEyUTQwMSAyNTUgMzk2IDI5MFEzODIgNDA1IDMwNCA0MDVRMjM1IDQwNSAxODMgMzMyUTE1NiAyOTIgMTM5IDIyNFQxMjEgMTIwUTEyMSA3MSAxNDYgNDlUMjA4IDI2JyxcbiAgICAweDFENkZEOiAnMjkgLTE5NFEyMyAtMTg4IDIzIC0xODZRMjMgLTE4MyAxMDIgMTM0VDE4NiA0NjVRMjA4IDUzMyAyNDMgNTg0VDMwOSA2NThRMzY1IDcwNSA0MjkgNzA1SDQzMVE0OTMgNzA1IDUzMyA2NjdUNTczIDU3MFE1NzMgNDY1IDQ2OSAzOTZMNDgyIDM4M1E1MzMgMzMyIDUzMyAyNTJRNTMzIDEzOSA0NDggNjVUMjU3IC0xMFEyMjcgLTEwIDIwMyAtMlQxNjUgMTdUMTQzIDQwVDEzMSA1OVQxMjYgNjVMNjIgLTE4OFE2MCAtMTk0IDQyIC0xOTRIMjlaTTM1MyA0MzFRMzkyIDQzMSA0MjcgNDE5TDQzMiA0MjJRNDM2IDQyNiA0MzkgNDI5VDQ0OSA0MzlUNDYxIDQ1M1Q0NzIgNDcxVDQ4NCA0OTVUNDkzIDUyNFQ1MDEgNTYwUTUwMyA1NjkgNTAzIDU5M1E1MDMgNjExIDUwMiA2MTZRNDg3IDY2NyA0MjYgNjY3UTM4NCA2NjcgMzQ3IDY0M1QyODYgNTgyVDI0NyA1MTRUMjI0IDQ1NVEyMTkgNDM5IDE4NiAzMDhUMTUyIDE2OFExNTEgMTYzIDE1MSAxNDdRMTUxIDk5IDE3MyA2OFEyMDQgMjYgMjYwIDI2UTMwMiAyNiAzNDkgNTFUNDI1IDEzN1E0NDEgMTcxIDQ0OSAyMTRUNDU3IDI3OVE0NTcgMzM3IDQyMiAzNzJRMzgwIDM1OCAzNDcgMzU4SDMzN1EyNTggMzU4IDI1OCAzODlRMjU4IDM5NiAyNjEgNDAzUTI3NSA0MzEgMzUzIDQzMScsXG4gICAgMHgxRDZGRTogJzMxIDI0OVExMSAyNDkgMTEgMjU4UTExIDI3NSAyNiAzMDRUNjYgMzY1VDEyOSA0MThUMjA2IDQ0MVEyMzMgNDQxIDIzOSA0NDBRMjg3IDQyOSAzMTggMzg2VDM3MSAyNTVRMzg1IDE5NSAzODUgMTcwUTM4NSAxNjYgMzg2IDE2NkwzOTggMTkzUTQxOCAyNDQgNDQzIDMwMFQ0ODYgMzkxVDUwOCA0MzBRNTEwIDQzMSA1MjQgNDMxSDUzN1E1NDMgNDI1IDU0MyA0MjJRNTQzIDQxOCA1MjIgMzc4VDQ2MyAyNTFUMzkxIDcxUTM4NSA1NSAzNzggNlQzNTcgLTEwMFEzNDEgLTE2NSAzMzAgLTE5MFQzMDMgLTIxNlEyODYgLTIxNiAyODYgLTE4OFEyODYgLTEzOCAzNDAgMzJMMzQ2IDUxTDM0NyA2OVEzNDggNzkgMzQ4IDEwMFEzNDggMjU3IDI5MSAzMTdRMjUxIDM1NSAxOTYgMzU1UTE0OCAzNTUgMTA4IDMyOVQ1MSAyNjBRNDkgMjUxIDQ3IDI1MVE0NSAyNDkgMzEgMjQ5JyxcbiAgICAweDFENkZGOiAnMTk1IDYwOVExOTUgNjU2IDIyNyA2ODZUMzAyIDcxN1EzMTkgNzE2IDM1MSA3MDlUNDA3IDY5N1Q0MzMgNjkwUTQ1MSA2ODIgNDUxIDY2MlE0NTEgNjQ0IDQzOCA2MjhUNDAzIDYxMlEzODIgNjEyIDM0OCA2NDFUMjg4IDY3MVQyNDkgNjU3VDIzNSA2MjhRMjM1IDU4NCAzMzQgNDYzUTQwMSAzNzkgNDAxIDI5MlE0MDEgMTY5IDM0MCA4MFQyMDUgLTEwSDE5OFExMjcgLTEwIDgzIDM2VDM2IDE1M1EzNiAyODYgMTUxIDM4MlExOTEgNDEzIDI1MiA0MzRRMjUyIDQzNSAyNDUgNDQ5VDIzMCA0ODFUMjE0IDUyMVQyMDEgNTY2VDE5NSA2MDlaTTExMiAxMzBRMTEyIDgzIDEzNiA1NVQyMDQgMjdRMjMzIDI3IDI1NiA1MVQyOTEgMTExVDMwOSAxNzhUMzE2IDIzMlEzMTYgMjY3IDMwOSAyOThUMjk1IDM0NFQyNjkgNDAwTDI1OSAzOTZRMjE1IDM4MSAxODMgMzQyVDEzNyAyNTZUMTE4IDE3OVQxMTIgMTMwJyxcbiAgICAweDFENzAwOiAnMTkwIC0yMlExMjQgLTIyIDc2IDExVDI3IDEwN1EyNyAxNzQgOTcgMjMyTDEwNyAyMzlMOTkgMjQ4UTc2IDI3MyA3NiAzMDRRNzYgMzY0IDE0NCA0MDhUMjkwIDQ1MkgzMDJRMzYwIDQ1MiA0MDUgNDIxUTQyOCA0MDUgNDI4IDM5MlE0MjggMzgxIDQxNyAzNjlUMzkxIDM1NlEzODIgMzU2IDM3MSAzNjVUMzM4IDM4M1QyODMgMzkyUTIxNyAzOTIgMTY3IDM2OFQxMTYgMzA4UTExNiAyODkgMTMzIDI3MlExNDIgMjYzIDE0NSAyNjJUMTU3IDI2NFExODggMjc4IDIzOCAyNzhIMjQzUTMwOCAyNzggMzA4IDI0N1EzMDggMjA2IDIyMyAyMDZRMTc3IDIwNiAxNDIgMjE5TDEzMiAyMTJRNjggMTY5IDY4IDExMlE2OCAzOSAyMDEgMzlRMjUzIDM5IDI4NiA0OVQzMjggNzJUMzQ1IDk0VDM2MiAxMDVRMzc2IDEwMyAzNzYgODhRMzc2IDc5IDM2NSA2MlQzMzQgMjZUMjc1IC04VDE5MCAtMjInLFxuICAgIDB4MUQ3MDE6ICcyOTYgNjQzUTI5OCA3MDQgMzI0IDcwNFEzNDIgNzA0IDM0MiA2ODdRMzQyIDY4MiAzMzkgNjY0VDMzNiA2MzNRMzM2IDYyMyAzMzcgNjE4VDMzOCA2MTFRMzM5IDYxMiAzNDEgNjEyUTM0MyA2MTQgMzU0IDYxNlQzNzQgNjE4TDM4NCA2MTlIMzk0UTQ3MSA2MTkgNDcxIDU4NlE0NjcgNTQ4IDM4NiA1NDZIMzcyUTMzOCA1NDYgMzIwIDU2NEwzMTEgNTU4UTIzNSA1MDYgMTc1IDM5OFQxMTQgMTkwUTExNCAxNzEgMTE2IDE1NVQxMjUgMTI3VDEzNyAxMDRUMTUzIDg2VDE3MSA3MlQxOTIgNjFUMjEzIDUzVDIzNSA0NlQyNTYgMzlMMzIyIDE2UTM4OSAtMTAgMzg5IC04MFEzODkgLTExOSAzNjQgLTE1NFQzMDAgLTIwMlEyOTIgLTIwNCAyNzQgLTIwNFEyNDcgLTIwNCAyMjUgLTE5NlEyMTAgLTE5MiAxOTMgLTE4MlQxNzIgLTE2N1ExNjcgLTE1OSAxNzMgLTE0OFExODAgLTEzOSAxOTEgLTEzOVExOTUgLTEzOSAyMjEgLTE1M1QyODMgLTE2OFEyOTggLTE2NiAzMTAgLTE1MlQzMjIgLTExN1EzMjIgLTkxIDMwMiAtNzVUMjUwIC01MVQxODMgLTI5VDExNiA0VDY1IDYyVDQ0IDE2MFE0NCAyODcgMTIxIDQxMFQyOTMgNTkwTDMwMiA1OTVRMjk2IDYxMyAyOTYgNjQzJyxcbiAgICAweDFENzAyOiAnMjEgMjg3UTIyIDI5MCAyMyAyOTVUMjggMzE3VDM4IDM0OFQ1MyAzODFUNzMgNDExVDk5IDQzM1QxMzIgNDQyUTE1NiA0NDIgMTc1IDQzNVQyMDUgNDE3VDIyMSAzOTVUMjI5IDM3NkwyMzEgMzY5UTIzMSAzNjcgMjMyIDM2N0wyNDMgMzc4UTMwNCA0NDIgMzgyIDQ0MlE0MzYgNDQyIDQ2OSA0MTVUNTAzIDMzNlYzMjZRNTAzIDMwMiA0MzkgNTNRMzgxIC0xODIgMzc3IC0xODlRMzY0IC0yMTYgMzMyIC0yMTZRMzE5IC0yMTYgMzEwIC0yMDhUMjk5IC0xODZRMjk5IC0xNzcgMzU4IDU3TDQyMCAzMDdRNDIzIDMyMiA0MjMgMzQ1UTQyMyA0MDQgMzc5IDQwNEgzNzRRMjg4IDQwNCAyMjkgMzAzTDIyMiAyOTFMMTg5IDE1N1ExNTYgMjYgMTUxIDE2UTEzOCAtMTEgMTA4IC0xMVE5NSAtMTEgODcgLTVUNzYgN1Q3NCAxN1E3NCAzMCAxMTQgMTg5VDE1NCAzNjZRMTU0IDQwNSAxMjggNDA1UTEwNyA0MDUgOTIgMzc3VDY4IDMxNlQ1NyAyODBRNTUgMjc4IDQxIDI3OEgyN1EyMSAyODQgMjEgMjg3JyxcbiAgICAweDFENzAzOiAnMzUgMjAwUTM1IDMwMiA3NCA0MTVUMTgwIDYxMFQzMTkgNzA0UTMyMCA3MDQgMzI3IDcwNFQzMzkgNzA1UTM5MyA3MDEgNDIzIDY1NlE0NjIgNTk2IDQ2MiA0OTVRNDYyIDM4MCA0MTcgMjYxVDMwMiA2NlQxNjggLTEwSDE2MVExMjUgLTEwIDk5IDEwVDYwIDYzVDQxIDEzMFQzNSAyMDBaTTM4MyA1NjZRMzgzIDY2OCAzMzAgNjY4UTI5NCA2NjggMjYwIDYyM1QyMDQgNTIxVDE3MCA0MjFUMTU3IDM3MVEyMDYgMzcwIDI1NCAzNzBMMzUxIDM3MVEzNTIgMzcyIDM1OSA0MDRUMzc1IDQ4NFQzODMgNTY2Wk0xMTMgMTMyUTExMyAyNiAxNjYgMjZRMTgxIDI2IDE5OCAzNlQyMzkgNzRUMjg3IDE2MVQzMzUgMzA3TDM0MCAzMjRIMTQ1UTE0NSAzMjEgMTM2IDI4NlQxMjAgMjA4VDExMyAxMzInLFxuICAgIDB4MUQ3MDQ6ICcxMzkgLTEwUTExMSAtMTAgOTIgMFQ2NCAyNVQ1MiA1MlQ0OCA3NFE0OCA4OSA1NSAxMDlUODUgMTk5VDEzNSAzNzVMMTM3IDM4NFExMzkgMzk0IDE0MCAzOTdUMTQ1IDQwOVQxNTEgNDIyVDE2MCA0MzFUMTczIDQzOVQxOTAgNDQyUTIwMiA0NDIgMjEzIDQzNVQyMjUgNDEwUTIyNSA0MDQgMjE0IDM1OFQxODEgMjM4VDEzNyAxMDdRMTI2IDc0IDEyNiA1NFExMjYgNDMgMTI2IDM5VDEzMCAzMVQxNDIgMjdIMTQ3UTIwNiAyNyAyNTUgNzhRMjcyIDk4IDI4MSAxMTRUMjkwIDEzOFQyOTUgMTQ5VDMxMyAxNTNRMzIxIDE1MyAzMjQgMTUzVDMyOSAxNTJUMzMyIDE0OVQzMzIgMTQzUTMzMiAxMDYgMjc2IDQ4VDE0NSAtMTBIMTM5JyxcbiAgICAweDFENzA1OiAnODMgLTExUTcwIC0xMSA2MiAtNFQ1MSA4VDQ5IDE3UTQ5IDMwIDk2IDIxN1QxNDcgNDE0UTE2MCA0NDIgMTkzIDQ0MlEyMDUgNDQxIDIxMyA0MzVUMjIzIDQyMlQyMjUgNDEyUTIyNSA0MDEgMjA4IDMzN0wxOTIgMjcwUTE5MyAyNjkgMjA4IDI3N1QyMzUgMjkyUTI1MiAzMDQgMzA2IDM0OVQzOTYgNDEyVDQ2NyA0MzFRNDg5IDQzMSA1MDAgNDIwVDUxMiAzOTFRNTEyIDM2NiA0OTQgMzQ3VDQ0OSAzMjdRNDMwIDMyNyA0MTggMzM4VDQwNSAzNjhRNDA1IDM3MCA0MDcgMzgwTDM5NyAzNzVRMzY4IDM2MCAzMTUgMzE1TDI1MyAyNjZMMjQwIDI1N0gyNDVRMjYyIDI1NyAzMDAgMjUxVDM2NiAyMzBRNDIyIDIwMyA0MjIgMTUwUTQyMiAxNDAgNDE3IDExNFQ0MTEgNjdRNDExIDI2IDQzNyAyNlE0ODQgMjYgNTEzIDEzN1E1MTYgMTQ5IDUxOSAxNTFUNTM1IDE1M1E1NTQgMTUzIDU1NCAxNDRRNTU0IDEyMSA1MjcgNjRUNDU3IC03UTQ0NyAtMTAgNDMxIC0xMFEzODYgLTEwIDM2MCAxN1QzMzMgOTBRMzMzIDEwOCAzMzYgMTIyVDMzOSAxNDZRMzM5IDE3MCAzMjAgMTg2VDI3MSAyMDlUMjIyIDIxOFQxODUgMjIxSDE4MEwxNTUgMTIyUTEyOSAyMiAxMjYgMTZRMTEzIC0xMSA4MyAtMTEnLFxuICAgIDB4MUQ3MDY6ICcxNjYgNjczUTE2NiA2ODUgMTgzIDY5NEgyMDJRMjkyIDY5MSAzMTYgNjQ0UTMyMiA2MjkgMzczIDQ4NlQ0NzQgMjA3VDUyNCA2N1E1MzEgNDcgNTM3IDM0VDU0NiAxNVQ1NTEgNlQ1NTUgMlQ1NTYgLTJUNTUwIC0xMUg0ODJRNDU3IDMgNDUwIDE4VDM5OSAxNTJMMzU0IDI3N0wzNDAgMjYyUTMyNyAyNDYgMjkzIDIwN1QyMzYgMTQxUTIxMSAxMTIgMTc0IDY5UTEyMyA5IDExMSAtMVQ4MyAtMTJRNDcgLTEyIDQ3IDIwUTQ3IDM3IDYxIDUyVDE5OSAxODdRMjI5IDIxNiAyNjYgMjUyVDMyMSAzMDZMMzM4IDMyMlEzMzggMzIzIDI4OCA0NjJUMjM0IDYxMlEyMTQgNjU3IDE4MyA2NTdRMTY2IDY1NyAxNjYgNjczJyxcbiAgICAweDFENzA3OiAnNTggLTIxNlE0NCAtMjE2IDM0IC0yMDhUMjMgLTE4NlEyMyAtMTc2IDk2IDExNlQxNzMgNDE0UTE4NiA0NDIgMjE5IDQ0MlEyMzEgNDQxIDIzOSA0MzVUMjQ5IDQyM1QyNTEgNDEzUTI1MSA0MDEgMjIwIDI3OVQxODcgMTQyUTE4NSAxMzEgMTg1IDEwN1Y5OVExODUgMjYgMjUyIDI2UTI2MSAyNiAyNzAgMjdUMjg3IDMxVDMwMiAzOFQzMTUgNDVUMzI3IDU1VDMzOCA2NVQzNDggNzdUMzU2IDg4VDM2NSAxMDBMMzcyIDExMEw0MDggMjUzUTQ0NCAzOTUgNDQ4IDQwNFE0NjEgNDMxIDQ5MSA0MzFRNTA0IDQzMSA1MTIgNDI0VDUyMyA0MTJUNTI1IDQwMkw0NDkgODRRNDQ4IDc5IDQ0OCA2OFE0NDggNDMgNDU1IDM1VDQ3NiAyNlE0ODUgMjcgNDk2IDM1UTUxNyA1NSA1MzcgMTMxUTU0MyAxNTEgNTQ3IDE1MlE1NDkgMTUzIDU1NyAxNTNINTYxUTU4MCAxNTMgNTgwIDE0NFE1ODAgMTM4IDU3NSAxMTdUNTU1IDYzVDUyMyAxM1E1MTAgMCA0OTEgLThRNDgzIC0xMCA0NjcgLTEwUTQ0NiAtMTAgNDI5IC00VDQwMiAxMVQzODUgMjlUMzc2IDQ0VDM3NCA1MUwzNjggNDVRMzYyIDM5IDM1MCAzMFQzMjQgMTJUMjg4IC00VDI0NiAtMTFRMTk5IC0xMSAxNTMgMTJMMTI5IC04NVExMDggLTE2NyAxMDQgLTE4MFQ5MiAtMjAyUTc2IC0yMTYgNTggLTIxNicsXG4gICAgMHgxRDcwODogJzc0IDQzMVE3NSA0MzEgMTQ2IDQzNlQyMTkgNDQyUTIzMSA0NDIgMjMxIDQzNFEyMzEgNDI4IDE4NSAyNDFMMTM3IDUxSDE0MEwxNTAgNTVRMTYxIDU5IDE3NyA2N1QyMTQgODZUMjYxIDExOVQzMTIgMTY1UTQxMCAyNjQgNDQ1IDM5NFE0NTggNDQyIDQ5NiA0NDJRNTA5IDQ0MiA1MTkgNDM0VDUzMCA0MTFRNTMwIDM5MCA1MTYgMzUyVDQ2OSAyNjJUMzg4IDE2MlQyNjcgNzBUMTA2IDVRODEgLTIgNzEgLTJRNjYgLTIgNTkgLTFUNTEgMVE0NSA1IDQ1IDExUTQ1IDEzIDg4IDE4OEwxMzIgMzY0UTEzMyAzNzcgMTI1IDM4MFQ4NiAzODVINjVRNTkgMzkxIDU5IDM5M1Q2MSA0MTJRNjUgNDMxIDc0IDQzMScsXG4gICAgMHgxRDcwOTogJzI2OCA2MzJRMjY4IDcwNCAyOTYgNzA0UTMxNCA3MDQgMzE0IDY4N1EzMTQgNjgyIDMxMSA2NjRUMzA4IDYzNVQzMDkgNjIwVjYxNkgzMTVRMzQyIDYxOSAzNjAgNjE5UTQ0MyA2MTkgNDQzIDU4NlE0MzkgNTQ4IDM1OCA1NDZIMzQ0UTMyNiA1NDYgMzE3IDU0OVQyOTAgNTY2UTI1NyA1NTAgMjI2IDUwNVQxOTUgNDA1UTE5NSAzODEgMjAxIDM2NFQyMTEgMzQyVDIxOCAzMzdRMjY2IDM0NyAyOTggMzQ3UTM3NSAzNDcgMzc1IDMxNFEzNzQgMjk3IDM1OSAyODhUMzI3IDI3N1QyODAgMjc1UTIzNCAyNzUgMjA4IDI4M0wxOTUgMjg2UTE0OSAyNjAgMTE5IDIxNFQ4OCAxMzBRODggMTE2IDkwIDEwOFExMDEgNzkgMTI5IDYzVDIyOSAyMFEyMzggMTcgMjQzIDE1UTMzNyAtMjEgMzU0IC0zM1EzODMgLTUzIDM4MyAtOTRRMzgzIC0xMzcgMzUxIC0xNzFUMjczIC0yMDVRMjQwIC0yMDUgMjAyIC0xOTBUMTU4IC0xNjdRMTU2IC0xNjMgMTU2IC0xNTlRMTU2IC0xNTEgMTYxIC0xNDZUMTc2IC0xNDBRMTgyIC0xNDAgMTg5IC0xNDNRMjMyIC0xNjggMjc0IC0xNjhRMjg2IC0xNjggMjkyIC0xNjVRMzEzIC0xNTEgMzEzIC0xMjlRMzEzIC0xMTIgMzAxIC0xMDRUMjMyIC03NVEyMTQgLTY4IDIwNCAtNjRRMTk4IC02MiAxNzEgLTUyVDEzNiAtMzhUMTA3IC0yNFQ3OCAtOFQ1NiAxMlQzNiAzN1QyNiA2NlQyMSAxMDNRMjEgMTQ5IDU1IDIwNlQxNDUgMzAxTDE1NCAzMDdMMTQ4IDMxM1ExNDEgMzE5IDEzNiAzMjNUMTI0IDMzOFQxMTEgMzU4VDEwMyAzODJUOTkgNDEzUTk5IDQ3MSAxNDMgNTI0VDI1OSA2MDJMMjcxIDYwN1EyNjggNjE4IDI2OCA2MzInLFxuICAgIDB4MUQ3MEE6ICcyMDEgLTExUTEyNiAtMTEgODAgMzhUMzQgMTU2UTM0IDIyMSA2NCAyNzlUMTQ2IDM4MFEyMjIgNDQxIDMwMSA0NDFRMzMzIDQ0MSAzNDEgNDQwUTM1NCA0MzcgMzY3IDQzM1Q0MDIgNDE3VDQzOCAzODdUNDY0IDMzOFQ0NzYgMjY4UTQ3NiAxNjEgMzkwIDc1VDIwMSAtMTFaTTEyMSAxMjBRMTIxIDcwIDE0NyA0OFQyMDYgMjZRMjUwIDI2IDI4OSA1OFQzNTEgMTQyUTM2MCAxNjMgMzc0IDIxNlQzODggMzA4UTM4OCAzNTIgMzcwIDM3NVEzNDYgNDA1IDMwNiA0MDVRMjQzIDQwNSAxOTUgMzQ3UTE1OCAzMDMgMTQwIDIzMFQxMjEgMTIwJyxcbiAgICAweDFENzBCOiAnMTMyIC0xMVE5OCAtMTEgOTggMjJWMzNMMTExIDYxUTE4NiAyMTkgMjIwIDMzNEwyMjggMzU4SDE5NlExNTggMzU4IDE0MiAzNTVUMTAzIDMzNlE5MiAzMjkgODEgMzE4VDYyIDI5N1Q1MyAyODVRNTEgMjg0IDM4IDI4NFExOSAyODQgMTkgMjk0UTE5IDMwMCAzOCAzMjlUOTMgMzkxVDE2NCA0MjlRMTcxIDQzMSAzODkgNDMxUTU0OSA0MzEgNTUzIDQzMFE1NzMgNDIzIDU3MyA0MDJRNTczIDM3MSA1NDEgMzYwUTUzNSAzNTggNDcyIDM1OEg0MDhMNDA1IDM0MVEzOTMgMjY5IDM5MyAyMjJRMzkzIDE3MCA0MDIgMTI5VDQyMSA2NVQ0MzEgMzdRNDMxIDIwIDQxNyA1VDM4MSAtMTBRMzcwIC0xMCAzNjMgLTdUMzQ3IDE3VDMzMSA3N1EzMzAgODYgMzMwIDEyMVEzMzAgMTcwIDMzOSAyMjZUMzU3IDMxOFQzNjcgMzU4SDI2OUwyNjggMzU0UTI2OCAzNTEgMjQ5IDI3NVQyMDYgMTE0VDE3NSAxN1ExNjQgLTExIDEzMiAtMTEnLFxuICAgIDB4MUQ3MEM6ICc1OCAtMjE2UTI1IC0yMTYgMjMgLTE4NlEyMyAtMTc2IDczIDI2VDEyNyAyMzRRMTQzIDI4OSAxODIgMzQxUTI1MiA0MjcgMzQxIDQ0MVEzNDMgNDQxIDM0OSA0NDFUMzU5IDQ0MlE0MzIgNDQyIDQ3MSAzOTRUNTEwIDI3NlE1MTAgMjE5IDQ4NiAxNjVUNDI1IDc0VDM0NSAxM1QyNjYgLTEwSDI1NUgyNDhRMTk3IC0xMCAxNjUgMzVMMTYwIDQxTDEzMyAtNzFRMTA4IC0xNjggMTA0IC0xODFUOTIgLTIwMlE3NiAtMjE2IDU4IC0yMTZaTTQyNCAzMjJRNDI0IDM1OSA0MDcgMzgyVDM1NyA0MDVRMzIyIDQwNSAyODcgMzc2VDIzMSAzMDBRMjE3IDI2OSAxOTMgMTcwTDE3NiAxMDJRMTkzIDI2IDI2MCAyNlEyOTggMjYgMzM0IDYyUTM2NyA5MiAzODkgMTU4VDQxOCAyNjZUNDI0IDMyMicsXG4gICAgMHgxRDcwRDogJzMxIDIwN1EzMSAzMDYgMTE1IDM3NFQzMDIgNDQyUTM0MSA0NDIgMzczIDQzMFQ0MDUgNDAwUTQwNSAzOTIgMzk5IDM4M1QzNzkgMzc0UTM3MyAzNzUgMzQ4IDM5MFQyOTYgNDA1UTIyMiA0MDUgMTYwIDM1N1Q5OCAyNDlROTggMjMyIDEwMyAyMThUMTEyIDE5NVQxMzIgMTc1VDE1NCAxNTlUMTg2IDE0MVQyMTkgMTIyUTIzNCAxMTQgMjU1IDEwMlQyODYgODVUMjk5IDc4TDMwMiA3NFEzMDYgNzEgMzA4IDY5VDMxNSA2MVQzMjIgNTFUMzI4IDQwVDMzMiAyNVQzMzQgOFEzMzQgLTMxIDMwNSAtNjlUMjI0IC0xMDdRMTk0IC0xMDcgMTYzIC05MlExNTYgLTg4IDE1NiAtODBRMTU2IC03MyAxNjIgLTY3VDE3OCAtNjFRMTg2IC02MSAxOTAgLTYzUTIwOSAtNzEgMjI0IC03MVEyNDQgLTcxIDI1MyAtNTlUMjYzIC0zMFEyNjMgLTI1IDI2MyAtMjFUMjYwIC0xMlQyNTUgLTRUMjQ4IDNUMjM5IDlUMjI3IDE3VDIxMyAyNVQxOTUgMzRUMTc0IDQ2UTE3MCA0OCAxNTAgNThUMTIyIDc0VDk3IDkwVDcwIDExMlQ1MSAxMzdUMzYgMTY5VDMxIDIwNycsXG4gICAgMHgxRDcwRTogJzE4NCAtMTFRMTE2IC0xMSA3NCAzNFQzMSAxNDdRMzEgMjQ3IDEwNCAzMzNUMjc0IDQzMFEyNzUgNDMxIDQxNCA0MzFINTUyUTU1MyA0MzAgNTU1IDQyOVQ1NTkgNDI3VDU2MiA0MjVUNTY1IDQyMlQ1NjcgNDIwVDU2OSA0MTZUNTcwIDQxMlQ1NzEgNDA3VDU3MiA0MDFRNTcyIDM1NyA1MDcgMzU3UTUwMCAzNTcgNDkwIDM1N1Q0NzYgMzU4SDQxNkw0MjEgMzQ4UTQzOSAzMTAgNDM5IDI2M1E0MzkgMTUzIDM1OSA3MVQxODQgLTExWk0zNjEgMjc4UTM2MSAzNTggMjc2IDM1OFExNTIgMzU4IDExNSAxODRRMTE0IDE4MCAxMTQgMTc4UTEwNiAxNDEgMTA2IDExN1ExMDYgNjcgMTMxIDQ3VDE4OCAyNlEyNDIgMjYgMjg3IDczUTMxNiAxMDMgMzM0IDE1M1QzNTYgMjMzVDM2MSAyNzgnLFxuICAgIDB4MUQ3MEY6ICczOSAyODRRMTggMjg0IDE4IDI5NFExOCAzMDEgNDUgMzM4VDk5IDM5OFExMzQgNDI1IDE2NCA0MjlRMTcwIDQzMSAzMzIgNDMxUTQ5MiA0MzEgNDk3IDQyOVE1MTcgNDI0IDUxNyA0MDJRNTE3IDM4OCA1MDggMzc2VDQ4NSAzNjBRNDc5IDM1OCAzODkgMzU4VDI5OSAzNTZRMjk4IDM1NSAyODMgMjc0VDI1MSAxMDlUMjMzIDIwUTIyOCA1IDIxNSAtNFQxODYgLTEzUTE1MyAtMTMgMTUzIDIwVjMwTDIwMyAxOTJRMjE0IDIyOCAyMjcgMjcyVDI0OCAzMzZMMjU0IDM1N1EyNTQgMzU4IDIwOCAzNThRMjA2IDM1OCAxOTcgMzU4VDE4MyAzNTlRMTA1IDM1OSA2MSAyOTVRNTYgMjg3IDUzIDI4NlQzOSAyODQnLFxuICAgIDB4MUQ3MTA6ICc0MTMgMzg0UTQxMyA0MDYgNDMyIDQyNFQ0NzMgNDQzUTQ5MiA0NDMgNTA3IDQyNVQ1MjMgMzY3UTUyMyAzMzQgNTA4IDI3MFQ0NjggMTUzUTQyNCA2MyAzNzMgMjdUMjgyIC0xMEgyNjhRMjIwIC0xMCAxODYgMlQxMzUgMzZUMTExIDc4VDEwNCAxMjFRMTA0IDE3MCAxMzggMjYyVDE3MyAzNzlRMTczIDM4MCAxNzMgMzgxUTE3MyAzOTAgMTczIDM5M1QxNjkgNDAwVDE1OCA0MDRIMTU0UTEzMSA0MDQgMTEyIDM4NVQ4MiAzNDRUNjUgMzAyVDU3IDI4MFE1NSAyNzggNDEgMjc4SDI3UTIxIDI4NCAyMSAyODdRMjEgMjk5IDM0IDMzM1Q4MiA0MDRUMTYxIDQ0MVEyMDAgNDQxIDIyNSA0MTlUMjUwIDM1NVEyNDggMzM2IDI0NyAzMzRRMjQ3IDMzMSAyMzIgMjkxVDIwMSAxOTlUMTg1IDExOFExODUgNjggMjExIDQ3VDI3NSAyNlEzMTcgMjYgMzU1IDU3VDQxNiAxMzJUNDUyIDIxNlQ0NjUgMjc3UTQ2NSAzMDEgNDU3IDMxOFQ0MzkgMzQzVDQyMSAzNjFUNDEzIDM4NCcsXG4gICAgMHgxRDcxMTogJzkyIDIxMFE5MiAxNzYgMTA2IDE0OVQxNDIgMTA4VDE4NSA4NVQyMjAgNzJMMjM1IDcwTDIzNyA3MUwyNTAgMTEyUTI2OCAxNzAgMjgzIDIxMVQzMjIgMjk5VDM3MCAzNzVUNDI5IDQyM1Q1MDIgNDQyUTU0NyA0NDIgNTgyIDQxMFQ2MTggMzAyUTYxOCAyMjQgNTc1IDE1MlQ0NTcgMzVUMjk5IC0xMFEyNzMgLTEwIDI3MyAtMTJMMjY2IC00OFEyNjAgLTgzIDI1MiAtMTI1VDI0MSAtMTc5UTIzNiAtMjAzIDIxNSAtMjEyUTIwNCAtMjE4IDE5MCAtMjE4UTE1OSAtMjE1IDE1OSAtMTg1UTE1OSAtMTc1IDIxNCAtMkwyMDkgMFEyMDQgMiAxOTUgNVQxNzMgMTRUMTQ3IDI4VDEyMCA0NlQ5NCA3MVQ3MSAxMDNUNTYgMTQyVDUwIDE5MFE1MCAyMzggNzYgMzExVDE0OSA0MzFIMTYyUTE4MyA0MzEgMTgzIDQyM1ExODMgNDE3IDE3NSA0MDlRMTM0IDM2MSAxMTQgMzAwVDkyIDIxMFpNNTc0IDI3OFE1NzQgMzIwIDU1MCAzNDRUNDg2IDM2OVE0MzcgMzY5IDM5NCAzMjlUMzIzIDIxOFEzMDkgMTg0IDI5NSAxMDlMMjg2IDY0UTMwNCA2MiAzMDYgNjJRNDIzIDYyIDQ5OCAxMzFUNTc0IDI3OCcsXG4gICAgMHgxRDcxMjogJzU3NiAtMTI1UTU3NiAtMTQ3IDU0NyAtMTc1VDQ4NyAtMjA0SDQ3NlEzOTQgLTIwNCAzNjMgLTE1N1EzMzQgLTExNCAyOTMgMjZMMjg0IDU5UTI4MyA1OCAyNDggMTlUMTcwIC02NlQ5MiAtMTUxVDUzIC0xOTFRNDkgLTE5NCA0MyAtMTk0UTM2IC0xOTQgMzEgLTE4OVQyNSAtMTc3VDM4IC0xNTRUMTUxIC0zMEwyNzIgMTAyTDI2NSAxMzFRMTg5IDQwNSAxMzUgNDA1UTEwNCA0MDUgODcgMzU4UTg2IDM1MSA2OCAzNTFRNDggMzUxIDQ4IDM2MVE0OCAzNjkgNTYgMzg2VDg5IDQyM1QxNDggNDQyUTIyNCA0NDIgMjU4IDQwMFEyNzYgMzc1IDI5NyAzMjBUMzMwIDIyMkwzNDEgMTgwUTM0NCAxODAgNDU1IDMwM1Q1NzMgNDI5UTU3OSA0MzEgNTgyIDQzMVE2MDAgNDMxIDYwMCA0MTRRNjAwIDQwNyA1ODcgMzkyVDQ3NyAyNzBRMzU2IDEzOCAzNTMgMTM0TDM2MiAxMDJRMzkyIC0xMCA0MjggLTg5VDQ5MCAtMTY4UTUwNCAtMTY4IDUxNyAtMTU2VDUzNiAtMTI2UTUzOSAtMTE2IDU0MyAtMTE1VDU1NyAtMTE0VDU3MSAtMTE1UTU3NiAtMTE4IDU3NiAtMTI1JyxcbiAgICAweDFENzEzOiAnMTYxIDQ0MVEyMDIgNDQxIDIyNiA0MTdUMjUwIDM1OFEyNTAgMzM4IDIxOCAyNTJUMTg3IDEyN1ExOTAgODUgMjE0IDYxUTIzNSA0MyAyNTcgMzdRMjc1IDI5IDI4OCAyOUgyODlMMzcxIDM2MFE0NTUgNjkxIDQ1NiA2OTJRNDU5IDY5NCA0NzIgNjk0UTQ5MiA2OTQgNDkyIDY4N1E0OTIgNjc4IDQxMSAzNTZRMzI5IDI4IDMyOSAyN1QzMzUgMjZRNDIxIDI2IDQ5OCAxMTRUNTc2IDI3OFE1NzYgMzAyIDU2OCAzMTlUNTUwIDM0M1Q1MzIgMzYxVDUyNCAzODRRNTI0IDQwNSA1NDEgNDI0VDU4MyA0NDNRNjAyIDQ0MyA2MTggNDI1VDYzNCAzNjZRNjM0IDMzNyA2MjMgMjg4VDYwNSAyMjBRNTczIDEyNSA0OTIgNTdUMzI5IC0xMUgzMTlMMjk2IC0xMDRRMjcyIC0xOTggMjcyIC0xOTlRMjcwIC0yMDUgMjUyIC0yMDVIMjM5UTIzMyAtMTk5IDIzMyAtMTk3UTIzMyAtMTkyIDI1NiAtMTAyVDI3OSAtOVEyNzIgLTggMjY1IC04UTEwNiAxNCAxMDYgMTM5UTEwNiAxNzQgMTM5IDI2NFQxNzMgMzc5UTE3MyAzODAgMTczIDM4MVExNzMgMzkwIDE3MyAzOTNUMTY5IDQwMFQxNTggNDA0SDE1NFExMzEgNDA0IDExMiAzODVUODIgMzQ0VDY1IDMwMlQ1NyAyODBRNTUgMjc4IDQxIDI3OEgyN1EyMSAyODQgMjEgMjg3UTIxIDI5OSAzNCAzMzNUODIgNDA0VDE2MSA0NDEnLFxuICAgIDB4MUQ3MTQ6ICc0OTUgMzg0UTQ5NSA0MDYgNTE0IDQyNFQ1NTUgNDQzUTU3NCA0NDMgNTg5IDQyNVQ2MDQgMzY0UTYwNCAzMzQgNTkyIDI3OFQ1NTUgMTU1VDQ4MyAzOFQzNzcgLTExUTI5NyAtMTEgMjY3IDY2UTI2NiA2OCAyNjAgNjFRMjAxIC0xMSAxMjUgLTExUTE1IC0xMSAxNSAxMzlRMTUgMjMwIDU2IDMyNVQxMjMgNDM0UTEzNSA0NDEgMTQ3IDQzNlExNjAgNDI5IDE2MCA0MThRMTYwIDQwNiAxNDAgMzc5VDk0IDMwNlQ2MiAyMDhRNjEgMjAyIDYxIDE4N1E2MSAxMjQgODUgMTAwVDE0MyA3NlEyMDEgNzYgMjQ1IDEyOUwyNTMgMTM3VjE1NlEyNTggMjk3IDMxNyAyOTdRMzQ4IDI5NyAzNDggMjYxUTM0OCAyNDMgMzM4IDIxM1QzMTggMTU4TDMwOCAxMzVRMzA5IDEzMyAzMTAgMTI5VDMxOCAxMTVUMzM0IDk3VDM1OCA4M1QzOTMgNzZRNDU2IDc2IDUwMSAxNDhUNTQ2IDI3NFE1NDYgMzA1IDUzMyAzMjVUNTA4IDM1N1Q0OTUgMzg0JyxcbiAgICAweDFENzE1OiAnMjAyIDUwOFExNzkgNTA4IDE2OSA1MjBUMTU4IDU0N1ExNTggNTU3IDE2NCA1NzdUMTg1IDYyNFQyMzAgNjc1VDMwMSA3MTBMMzMzIDcxNUgzNDVRMzc4IDcxNSAzODQgNzE0UTQ0NyA3MDMgNDg5IDY2MVQ1NDkgNTY4VDU2NiA0NTdRNTY2IDM2MiA1MTkgMjQwVDQwMiA1M1EzMjEgLTIyIDIyMyAtMjJRMTIzIC0yMiA3MyA1NlE0MiAxMDIgNDIgMTQ4VjE1OVE0MiAyNzYgMTI5IDM3MFQzMjIgNDY1UTM4MyA0NjUgNDE0IDQzNFQ0NTUgMzY3TDQ1OCAzNzhRNDc4IDQ2MSA0NzggNTE1UTQ3OCA2MDMgNDM3IDYzOVQzNDQgNjc2UTI2NiA2NzYgMjIzIDYxMlEyNjQgNjA2IDI2NCA1NzJRMjY0IDU0NyAyNDYgNTI4VDIwMiA1MDhaTTQzMCAzMDZRNDMwIDM3MiA0MDEgNDAwVDMzMyA0MjhRMjcwIDQyOCAyMjIgMzgyUTE5NyAzNTQgMTgzIDMyM1QxNTAgMjIxUTEzMiAxNDkgMTMyIDExNlExMzIgMjEgMjMyIDIxUTI0NCAyMSAyNTAgMjJRMzI3IDM1IDM3NCAxMTJRMzg5IDEzNyA0MDkgMTk2VDQzMCAzMDYnLFxuICAgIDB4MUQ3MTY6ICcyMjcgLTExUTE0OSAtMTEgOTUgNDFUNDAgMTc0UTQwIDI2MiA4NyAzMjJRMTIxIDM2NyAxNzMgMzk2VDI4NyA0MzBRMjg5IDQzMSAzMjkgNDMxSDM2N1EzODIgNDI2IDM4MiA0MTFRMzgyIDM4NSAzNDEgMzg1SDMyNUgzMTJRMTkxIDM4NSAxNTQgMjc3TDE1MCAyNjVIMzI3UTM0MCAyNTYgMzQwIDI0NlEzNDAgMjI4IDMyMCAyMTlIMTM4VjIxN1ExMjggMTg3IDEyOCAxNDNRMTI4IDc3IDE2MCA1MlQyMzEgMjZRMjU4IDI2IDI4NCAzNlQzMjYgNTdUMzQzIDY4UTM1MCA2OCAzNTQgNThUMzU4IDM5UTM1OCAzNiAzNTcgMzVRMzU0IDMxIDMzNyAyMVQyODkgMFQyMjcgLTExJyxcbiAgICAweDFENzE3OiAnNTM3IDUwMFE1MzcgNDc0IDUzMyA0MzlUNTI0IDM4M0w1MjEgMzYyUTU1OCAzNTUgNTYxIDM1MVE1NjMgMzQ5IDU2MyAzNDVRNTYzIDMyMSA1NTIgMzE4UTU0MiAzMTggNTIxIDMyM0w1MTAgMzI2UTQ5NiAyNjEgNDU5IDE4N1QzNjIgNTFUMjQxIC0xMVExMDAgLTExIDEwMCAxMDVRMTAwIDEzOSAxMjcgMjQyVDE1NCAzNjZRMTU0IDQwNSAxMjggNDA1UTEwNyA0MDUgOTIgMzc3VDY4IDMxNlQ1NyAyODBRNTUgMjc4IDQxIDI3OEgyN1EyMSAyODQgMjEgMjg3UTIxIDI5MSAyNyAzMTNUNDcgMzY4VDc5IDQxOFExMDMgNDQyIDEzNCA0NDJRMTY5IDQ0MiAyMDEgNDE5VDIzMyAzNDRRMjMyIDMzMCAyMDYgMjI4VDE4MCA5OFExODAgMjYgMjQ3IDI2UTI5MiAyNiAzMzIgOTBUNDA0IDI2MEw0MjcgMzQ5UTQyMiAzNDkgMzk4IDM1OVQzMzkgMzkyVDI4OSA0NDBRMjY1IDQ3NiAyNjUgNTIwUTI2NSA1OTAgMzEyIDY0N1Q0MTcgNzA1UTQ2MyA3MDUgNDkxIDY3MFQ1MjggNTkyVDUzNyA1MDBaTTQ2NCA1NjRRNDY0IDY2OCA0MTMgNjY4UTM3MyA2NjggMzM5IDYyMlQzMDQgNTIyUTMwNCA0OTQgMzE3IDQ3MFQzNDkgNDMxVDM4OCA0MDZUNDIxIDM5MVQ0MzUgMzg3SDQzNkw0NDMgNDE1UTQ1MCA0NDMgNDU3IDQ4NVQ0NjQgNTY0JyxcbiAgICAweDFENzE4OiAnMjI4IDMyNVExNzAgMzIyIDE1NiAzMTZUMTI3IDMwOVExMDggMzA5IDEwNCAzMTRROTkgMzE5IDk5IDMyMlQxMDggMzQxUTEyNSAzNzYgMTcxIDQwMFQyNjggNDI1SDI3MVEzMDIgNDI1IDMxOSAzOTZRMzI4IDM3NyAzMjggMzU4UTMyOCAzMzIgMzI0IDMxNFEzMTEgMjcwIDI4NiAyMjFRMjc0IDE5NCAyNzQgMTkySDI3NVEzMzkgMjM0IDQ4NCAzMjVUNjM5IDQyMVE2NjkgNDM0IDY5MSA0MzRUNzIzIDQyNVQ3MzQgNDA2UTczNCAzOTQgNzE5IDM4MVE3MTUgMzc2IDY0NCAzMzBMNTc1IDI4N0w1NjYgMjY3UTU0MyAyMzMgNTI2IDE3NlE1MjAgMTYwIDUxNSAxNDNUNTA4IDExNVQ1MDYgMTA1UTUwNiAxMDMgNTMzIDEwM1E1ODUgMTAzIDYwNyAxMTBUNjQxIDExOFE2NzAgMTE4IDY3MCAxMDdRNjcwIDEwMCA2NjEgODVRNjQzIDUwIDU5OCAyN1Q1MDQgM1E0NjUgMyA0NTAgMzZRNDQxIDUxIDQ0MSA3M1E0NDEgODQgNDQ0IDk2UTQ1MiAxNDYgNDg0IDIwNUw0OTcgMjM2TDMyNCAxMjVRMTQzIDEyIDEzNSAxMFExMDMgLTYgNzcgLTZRNjEgLTYgNDkgMlQzNyAyMVEzNyAzNiA0OSA0NlQxMjQgOTZMMTk1IDE0MUwyMDQgMTU2UTIxOSAxNzkgMjQzIDI0OFQyNjQgMzIzUTI2NCAzMjUgMjI4IDMyNScsXG4gICAgMHgxRDcxOTogJzQwOSA2ODhRNDEzIDY5NCA0MjEgNjk0SDQyOUg0NDJRNDQ4IDY4OCA0NDggNjg2UTQ0OCA2NzkgNDE4IDU2M1E0MTEgNTM1IDQwNCA1MDRUMzkyIDQ1OEwzODggNDQyUTM4OCA0NDEgMzk3IDQ0MVQ0MjkgNDM1VDQ3NyA0MThRNTIxIDM5NyA1NTAgMzU3VDU3OSAyNjBUNTQ4IDE1MVQ0NzEgNjVUMzc0IDExVDI3OSAtMTBIMjc1TDI1MSAtMTA1UTI0NSAtMTI4IDIzOCAtMTYwUTIzMCAtMTkyIDIyNyAtMTk4VDIxNSAtMjA1SDIwOVExODkgLTIwNSAxODkgLTE5OFExODkgLTE5MyAyMTEgLTEwM0wyMzQgLTExUTIzNCAtMTAgMjI2IC0xMFEyMjEgLTEwIDIwNiAtOFQxNjEgNlQxMDcgMzZUNjIgODlUNDMgMTcxUTQzIDIzMSA3NiAyODRUMTU3IDM3MFQyNTQgNDIyVDM0MiA0NDFRMzQ3IDQ0MSAzNDggNDQ1TDM3OCA1NjdRNDA5IDY4NiA0MDkgNjg4Wk0xMjIgMTUwUTEyMiAxMTYgMTM0IDkxVDE2NyA1M1QyMDMgMzVUMjM3IDI3SDI0NEwzMzcgNDA0UTMzMyA0MDQgMzI2IDQwM1QyOTcgMzk1VDI1NSAzNzlUMjExIDM1MFQxNzAgMzA0UTE1MiAyNzYgMTM3IDIzN1ExMjIgMTkxIDEyMiAxNTBaTTUwMCAyODJRNTAwIDMyMCA0ODQgMzQ3VDQ0NCAzODVUNDA1IDQwMFQzODEgNDA0SDM3OEwzMzIgMjE3TDI4NCAyOVEyODQgMjcgMjg1IDI3UTI5MyAyNyAzMTcgMzNUMzU3IDQ3UTQwMCA2NiA0MzEgMTAwVDQ3NSAxNzBUNDk0IDIzNFQ1MDAgMjgyJyxcbiAgICAweDFENzFBOiAnMjA1IC0xNzRRMTM2IC0xNzQgMTAyIC0xNTNUNjcgLTc2UTY3IC0yNSA5MSA4NVQxMjcgMjM0UTE0MyAyODkgMTgyIDM0MVEyNTIgNDI3IDM0MSA0NDFRMzQzIDQ0MSAzNDkgNDQxVDM1OSA0NDJRNDMyIDQ0MiA0NzEgMzk0VDUxMCAyNzZRNTEwIDE2OSA0MzEgODBUMjUzIC0xMFEyMjYgLTEwIDIwNCAtMlQxNjkgMTlUMTQ2IDQ0VDEzMiA2NEwxMjggNzNRMTI4IDcyIDEyNCA1M1QxMTYgNVQxMTIgLTQ0UTExMiAtNjggMTE3IC03OFQxNTAgLTk1VDIzNiAtMTAyUTMyNyAtMTAyIDM1NiAtMTExVDM4NiAtMTU0UTM4NiAtMTY2IDM4NCAtMTc4UTM4MSAtMTkwIDM3OCAtMTkyVDM2MSAtMTk0SDM0OFEzNDIgLTE4OCAzNDIgLTE3OVEzNDIgLTE2OSAzMTUgLTE2OVEyOTQgLTE2OSAyNjQgLTE3MVQyMDUgLTE3NFpNNDI0IDMyMlE0MjQgMzU5IDQwNyAzODJUMzU3IDQwNVEzMjIgNDA1IDI4NyAzNzZUMjMxIDMwMFEyMjEgMjc2IDIwNCAyMTdRMTg4IDE1MiAxODggMTE2UTE4OCA2OCAyMTAgNDdUMjU5IDI2UTI5NyAyNiAzMzQgNjJRMzY3IDkyIDM4OSAxNThUNDE4IDI2NlQ0MjQgMzIyJyxcbiAgICAweDFENzFCOiAnMjA2IC0xMFExNTggLTEwIDEzNiAyNFQxMTQgMTEwUTExNCAyMzMgMTk5IDM0OUwyMDUgMzU4SDE4NFExNDQgMzU4IDEyMSAzNDdRMTA4IDM0MCA5NSAzMzBUNzUgMzEyVDYxIDI5NVQ1MyAyODVRNTEgMjg0IDM4IDI4NFExOSAyODQgMTkgMjk0UTE5IDMwMCAzOCAzMjlUOTMgMzkxVDE2NCA0MjlRMTcxIDQzMSA1MzIgNDMxUTc5OSA0MzEgODAzIDQzMFE4MjMgNDIzIDgyMyA0MDJRODIzIDM3NyA4MDEgMzY0UTc5MCAzNTggNzY2IDM1OFE3NDggMzU4IDc0OCAzNTdRNzQ4IDM1NSA3NDkgMzQ4VDc1MiAzMjdUNzU0IDI5N1E3NTQgMjU4IDczOCAyMDdUNjkzIDEwN1Q2MTggMjRUNTIwIC0xMFE0ODggLTEwIDQ2NiAyVDQzMiAzNlQ0MTYgNzdUNDExIDEyMFE0MTEgMTI4IDQxMCAxMjhUNDA0IDEyMlEzNzMgNzEgMzIzIDMxVDIwNiAtMTBaTTcxNCAyOTZRNzE0IDMxNiA3MDcgMzU4SDI1MVEyNTAgMzU3IDI0NCAzNDhUMjMwIDMyOFQyMTIgMzAxVDE5MyAyNjdUMTc2IDIyOVQxNjQgMTg3VDE1OSAxNDRRMTU5IDYyIDIyMiA2MlEyOTAgNjIgMzQ5IDEyN1Q0MzIgMjg1UTQzMyAyODYgNDM0IDI4OFQ0MzUgMjkxVDQzNyAyOTNUNDQwIDI5NFQ0NDQgMjk0VDQ1MiAyOTRINDY2UTQ3MiAyODggNDcyIDI4NlE0NzIgMjg1IDQ2NCAyNDRUNDU2IDE3MFE0NTYgNjIgNTM0IDYyUTYwNCA2MiA2NTkgMTM5VDcxNCAyOTYnLFxuICAgIDB4MUQ3MUM6ICc2NSAwUTQ1IDAgNDUgMThRNDggNTIgNjEgNjBRNjUgNjIgODEgNjJRMTU1IDYyIDE2NSA3NFExNjYgNzQgMjY1IDIyOFQ0NjUgNTM5VDU2OSA2OTlRNTc2IDcwNyA1ODMgNzA5VDYxMSA3MTFUNjM3IDcxMFQ2NDkgNzAwUTY1MCA2OTcgNjk1IDM4MEw3NDEgNjNMNzg0IDYySDgyN1E4MzkgNTAgODM5IDQ1TDgzNSAyOVE4MzEgOSA4MjcgNVQ4MDYgMFE4MDMgMCA3OTAgMFQ3NDMgMVQ2NTcgMlE1ODUgMiA1NDcgMVQ1MDQgMFE0ODEgMCA0ODEgMTdRNDg0IDU0IDQ5NyA2MFE1MDEgNjIgNTQxIDYyUTU4MCA2MiA1ODAgNjNRNTgwIDY4IDU3MyAxMjFUNTY0IDE3OVYxODFIMzA4TDI3MSAxMjRRMjM2IDY5IDIzNiA2N1QyODMgNjJIMjg3UTMxNiA2MiAzMTYgNDZRMzE2IDI2IDMwNyA4UTMwMiAzIDI5NSAwTDI2MiAxUTI0MiAyIDE2OCAyUTExOSAyIDkzIDFUNjUgMFpNNTM3IDM3MlE1MzMgNDAyIDUyOCA0MzVUNTIxIDQ4NlQ1MTggNTA0VjUwNVE1MTcgNTA1IDQzMyAzNzVMMzQ4IDI0NEw0NTEgMjQzUTU1NSAyNDMgNTU1IDI0NEw1MzcgMzcyJyxcbiAgICAweDFENzFEOiAnMjU4IDYyNEgyMzVRMjE0IDYyNCAyMDkgNjI2VDE5OSA2MzlRMjAzIDY3OCAyMTYgNjg0UTIyMCA2ODYgNDQ5IDY4Nkg0NzdINTg2UTY4NCA2ODYgNzMzIDY3N1Q4MTcgNjM0UTg1MyA1OTggODUzIDU0N1E4NTMgNDk5IDgyNiA0NjBUNzYxIDQwMVQ2OTUgMzcxVDY1NCAzNjBINjUzTDY2MiAzNThRNjcwIDM1NyA2ODMgMzU0VDcxMiAzNDRUNzQ0IDMyN1Q3NzQgMzAzVDc5NSAyNjlUODA0IDIyNFE4MDQgMTQ4IDczMiA3OVQ1MzMgMVE1MjQgMCAyODggMEg1OFE0NyA1IDQzIDE1UTQ3IDU0IDYwIDYwUTY0IDYyIDExMyA2MkgxNjJMMzAyIDYyM1EzMDIgNjI0IDI1OCA2MjRaTTcwMyA1NTBRNzAzIDU3MSA2OTUgNTg2VDY3NSA2MDlUNjU2IDYxOVQ2NDMgNjIzTDU0NSA2MjRINDQ3TDQxNyA1MDRRMzg2IDM4NCAzODYgMzgzVDQ3MCAzODJRNTU0IDM4MyA1NjUgMzg1UTYzMiAzOTcgNjY3IDQ0N1Q3MDMgNTUwWk02NTEgMjQwUTY1MSAyNjUgNjQ1IDI4MlQ2MjYgMzA5VDYwOCAzMjJUNTkyIDMyOVE1ODcgMzMwIDQ3OSAzMzFIMzczTDM0MCAxOThRMzA3IDY1IDMwNiA2NFEzMDYgNjIgNDA2IDYyTDUwNyA2M0w1MTkgNjVRNTY1IDc2IDU5NiAxMDdUNjM5IDE3MVQ2NTEgMjQwJyxcbiAgICAweDFENzFFOiAnMjU3IDYxOEgyMzFRMTk4IDYxOCAxOTggNjM2UTIwMiA2NzIgMjE0IDY3OEwyMTkgNjgwSDc2M1E3NjkgNjc3IDc3MiA2NzNUNzc2IDY2Nkw3NzcgNjY0UTc3NyA2NTkgNzY2IDU0OVQ3NTEgNDMzUTc0NSA0MjQgNzIzIDQyNFE3MDQgNDI0IDY5OSA0MjdUNjkzIDQ0MVE2OTMgNDQ0IDY5NSA0NjdUNjk3IDUxM1E2OTcgNTQzIDY4OSA1NjNUNjcwIDU5NFQ2MzYgNjEwVDU5MiA2MTdUNTM0IDYxOEg1MTZINDU2TDQ1NSA2MTRRNDU1IDYxMyAzODcgMzM5VDMxNyA2NFEzMTcgNjIgMzc1IDYySDQxMVE0MzAgNjIgNDM4IDU5VDQ0NyA0NFE0NDQgNyA0MzAgMlE0MjYgMCA0MTYgMFE0MDkgMCAzNTkgMVQyMzEgMlExNTIgMiAxMTEgMVQ2NSAwUTQ4IDAgNDMgMTVRNDcgNTQgNjAgNjBRNjQgNjIgMTEzIDYySDE2MkwxNjMgNjZRMTYzIDY3IDIzMSAzNDFUMzAxIDYxNlEzMDEgNjE4IDI1NyA2MTgnLFxuICAgIDB4MUQ3MUY6ICc2NSAwUTU5IDYgNTkgOVQ2MSAxNlE2NCAyMCAzMzQgMzU3VDYwOCA2OThRNjE2IDcwNiA2MjkgNzEwUTYzMCA3MTAgNjM0IDcxMFQ2NDQgNzEwVDY1NiA3MTFRNjg2IDcxMSA2OTQgNzAzUTY5OCA2OTkgNzAwIDY5M1E3MDYgNjc0IDgwNSAzNDVUOTA0IDE0UTkwNCA3IDg5NCAxTDQ3OSAwSDY1Wk02MzAgMzQyTDU2NyA1NTFMMjMyIDEzNEw0NjIgMTMzSDY5M1E2OTMgMTM3IDYzMCAzNDInLFxuICAgIDB4MUQ3MjA6ICcyNTcgNjE4SDIzMVExOTggNjE4IDE5OCA2MzZRMjAyIDY3MiAyMTQgNjc4TDIxOSA2ODBIODExUTgxNyA2NzcgODIwIDY3M1Q4MjQgNjY2TDgyNSA2NjRRODI1IDY1OSA4MTQgNTQ5VDc5OSA0MzNRNzkzIDQyNCA3NzEgNDI0UTc1MiA0MjQgNzQ2IDQyN1Q3NDAgNDQxUTc0MCA0NDUgNzQyIDQ2NlQ3NDQgNTA1UTc0NCA1NjEgNzIyIDU4NVQ2NDYgNjE2UTYzOSA2MTcgNTQ1IDYxOEg0NTZRNDU2IDYxNyA0MjcgNTAyVDM5OCAzODVRMzk4IDM4NCA0MzUgMzg0UTQ2MSAzODUgNDcxIDM4NVQ0OTkgMzkxVDUyNiA0MDVUNTQ1IDQzM1Q1NjIgNDc4UTU2NiA0OTQgNTcxIDQ5N1Q1OTUgNTAxSDYwNFE2MjIgNTAxIDYyNiA0ODZRNjI2IDQ4MiA1OTMgMzQ5VDU1NyAyMTNRNTUyIDIwNSA1MzAgMjA1UTQ5OSAyMDUgNDk5IDIxOVE0OTkgMjIyIDUwMyAyNDJUNTA4IDI4MVE1MDggMzA4IDQ5MSAzMTRUNDI5IDMyMlE0MjUgMzIyIDQyMyAzMjJIMzgyTDMxNyA2NFEzMTcgNjIgMzkwIDYyUTQ2MCA2MiA0OTMgNjRUNTY5IDgwVDY0MCAxMjRRNjY1IDE0OSA2ODYgMTg3VDcxOSAyNTNUNzMzIDI4M1E3MzkgMjg5IDc2MCAyODlRNzkxIDI4OSA3OTEgMjc0UTc5MSAyNjcgNzYzIDIwMVQ3MDYgNzFMNjc4IDhRNjc2IDQgNjY3IDBINThRNDcgNSA0MyAxNVE0NyA1NCA2MCA2MFE2NCA2MiAxMTMgNjJIMTYyTDE2MyA2NlExNjMgNjcgMjMxIDM0MVQzMDEgNjE2UTMwMSA2MTggMjU3IDYxOCcsXG4gICAgMHgxRDcyMTogJzIyMyA0MzBRMTkyIDQzMCAxOTIgNDQ4UTE5MiA0NTAgMjI1IDU2MVQyNjEgNjc3UTI2NSA2ODMgMjcwIDY4NFEyNzMgNjg2IDUzNCA2ODZRNzk2IDY4NiA3OTcgNjg1UTgwNSA2ODIgODA1IDY3M1E4MDUgNjY4IDgwNCA2NjFUODAwIDY0OFQ3OTggNjQxUTc5NiA2MzcgNTMxIDM1MkwyNjYgNjdMMzI5IDY2SDM2NFE0MTIgNjYgNDQ2IDcwVDUyMyA5NlQ1OTYgMTU3UTYxNyAxODYgNjMwIDIyMFQ2NDkgMjczVDY2MyAyOTdRNjY3IDI5OSA2ODQgMjk5SDY4OFE3MTUgMjk5IDcxNSAyODFRNzE1IDI3OCA2NzMgMTQ1VDYyOCA4UTYyNiA0IDYxNyAwSDM0OFEyODkgMCAyMjEgMFQxMzkgLTFRMTEyIC0xIDk5IC0xVDc4IDFUNjkgNVQ2OCAxMlE2OCAxNiA3MSAzMVQ3NyA0OUw4NCA1N1E5MSA2NSAxMDQgNzlUMTMzIDExMFQxNzAgMTUxVDIxMyAxOTZMNjEwIDYyNEg1NDBRNTMzIDYyNCA1MTQgNjI0VDQ4OCA2MjRUNDY3IDYyM1Q0NDMgNjIwVDQyMiA2MTZUMzk4IDYwOVQzNzMgNjAwUTI5MiA1NjAgMjU1IDQ0OVEyNTEgNDM2IDI0NiA0MzNUMjIzIDQzMCcsXG4gICAgMHgxRDcyMjogJzI1OCA2MjRIMjM1UTIxNCA2MjQgMjA5IDYyNlQxOTkgNjM5UTIwMyA2NzggMjE2IDY4NFEyMjAgNjg2IDIzOSA2ODZRMjkwIDY4NCA0MDMgNjg0UTQ3NSA2ODQgNTEyIDY4NVQ1NTMgNjg2UTU3NiA2ODYgNTc2IDY2OFE1NzIgNjMyIDU2MCA2MjZRNTU1IDYyNCA1MDYgNjI0SDQ1N0wzOTkgMzg5UTM5OSAzODggNTQ3IDM4OEg2OTVMNzUzIDYyM1E3NTMgNjI0IDcwOSA2MjRINjg2UTY2NSA2MjQgNjYwIDYyNlQ2NTAgNjM5UTY1MyA2NzggNjY4IDY4NFE2NzIgNjg2IDY4MSA2ODZRNjg1IDY4NiA3MjYgNjg1VDg0NyA2ODRROTAyIDY4NCA5MzcgNjg0VDk4NiA2ODVUMTAwNCA2ODZRMTAyNyA2ODYgMTAyNyA2NjhRMTAyMyA2MzIgMTAxMSA2MjZRMTAwNiA2MjQgOTU3IDYyNEg5MDhMODM5IDM0NFE3NjggNjQgNzY4IDYzVDgxMiA2Mkg4MzlRODcxIDYyIDg3MSA0NFE4NjcgNiA4NTQgMkw4NTAgMEw4MDggMVE3ODIgMiA2NzUgMlE2MDAgMiA1NjAgMVQ1MTYgMFE0OTkgMCA0OTQgMTVRNDk4IDU0IDUxMSA2MFE1MTUgNjIgNTY0IDYySDYxM0w2MTQgNjZMNjc5IDMyNFE2NzkgMzI2IDUzMSAzMjZIMzgzTDM4MiAzMjJMMzE3IDY0UTMxNyA2MiAzNjEgNjJIMzg4UTQyMCA2MiA0MjAgNDRRNDE2IDYgNDAzIDJMMzk5IDBMMzU3IDFRMzMxIDIgMjI0IDJRMTQ5IDIgMTA5IDFUNjUgMFE0OCAwIDQzIDE1UTQ3IDU0IDYwIDYwUTY0IDYyIDExMyA2MkgxNjJMMzAyIDYyM1EzMDIgNjI0IDI1OCA2MjQnLFxuICAgIDB4MUQ3MjM6ICczNTggLTE3UTIxOCAtMTcgMTM2IDQ5VDU0IDI0M1E1NCAyOTggNzAgMzU2VDEyMyA0NzRUMjExIDU4MlQzMzggNjYzVDUwNCA3MDJINTI3UTU3OCA3MDIgNTkwIDcwMVE3MDkgNjg4IDc3NiA2MjJUODQ0IDQ0MVE4NDQgMzc5IDgyNSAzMTVUNzY1IDE5MlQ2NjggODZUNTMyIDExVDM1OCAtMTdaTTcwMCA0NzRRNzAwIDUyNSA2ODUgNTYxVDY0MiA2MTZUNTg3IDY0M1Q1MjggNjUyUTM5MCA2NTIgMzAxIDUzNFEyNTIgNDcyIDIyNSAzNzNUMTk4IDIxMFExOTggMTYwIDIxNCAxMjVUMjU2IDcxVDMxMSA0NFQzNzIgMzZRNDg0IDM2IDU3MSAxMTlRNjM5IDE4OSA2NjkgMjk5VDcwMCA0NzRaTTM2NiA0MjhRMzY2IDQyNSAzNjQgNDE5VDM2MiA0MTFINDY2TDU3MCA0MTJMNTczIDQyMlE1NzYgNDM3IDU4MSA0NDFUNjA0IDQ0NVE2MjAgNDQ1IDYyMyA0NDRRNjM2IDQ0MCA2MzYgNDI5UTYzNiA0MjMgNjE2IDM0MFQ1OTMgMjUzUTU4NiAyNDMgNTcyIDI0M0g1NjZRNTQ1IDI0MyA1MzkgMjQ5UTUzNiAyNTEgNTM1IDI1M1Q1MzQgMjU4VDUzNCAyNjNUNTM1IDI3MFQ1MzcgMjc3SDMyOUwzMjYgMjY2UTMyMyAyNTEgMzE4IDI0N1QyOTUgMjQzUTI3OSAyNDMgMjc2IDI0NFEyNjMgMjQ4IDI2MyAyNTlRMjYzIDI2NSAyODMgMzQ2UTI4OCAzNjYgMjk1IDM5NFEzMDQgNDMxIDMwOCA0MzhUMzI2IDQ0NUgzMzRIMzM4UTM2NiA0NDUgMzY2IDQyOCcsXG4gICAgMHgxRDcyNDogJzI0NyA2MjRRMjQyIDYyNCAyMzMgNjI0VDIyMCA2MjNRMTg2IDYyMyAxODYgNjQwUTE4NiA2NDcgMTkwIDY2NFQyMDIgNjg0UTIwNiA2ODYgMjI2IDY4NlEyNzcgNjg0IDM5MyA2ODRRNDM1IDY4NCA0NzEgNjg0VDUyOCA2ODVUNTUzIDY4NlE1NzMgNjg2IDU3MyA2NzBRNTczIDY1MCA1NjQgNjMyUTU1NiA2MjQgNTM3IDYyNEg1MDFINDQ5TDM4MCAzNDRRMzA5IDY0IDMwOSA2M1QzNTYgNjJRMzYxIDYyIDM3MCA2MlQzODQgNjNRNDE3IDYzIDQxNyA0NlE0MTcgMjYgNDA4IDhRNDAzIDMgMzk2IDBMMzUyIDFRMzI1IDIgMjE2IDJUODIgMUw0NSAwUTMwIDcgMzAgMTZRMzMgNTEgNDYgNjBRNTEgNjIgMTAyIDYySDE1NEwyOTQgNjIzUTI5NCA2MjQgMjQ3IDYyNCcsXG4gICAgMHgxRDcyNTogJzUzNiAwUTUyMiA2IDUyMiAxOFE1MjIgMzUgNTMzIDU3UTUzOSA2MiA1NTcgNjJRNTk1IDYyIDYwMSA2NUw0NzIgMzMwTDM2NSAyNTVMMzQyIDE2MFEzMTggNjUgMzE3IDY0UTMxNyA2MiAzNjEgNjJIMzg4UTQyMCA2MiA0MjAgNDRRNDE2IDYgNDAzIDJMMzk5IDBMMzU3IDFRMzMxIDIgMjI0IDJRMTQ5IDIgMTA5IDFUNjUgMFE0OCAwIDQzIDE1UTQ3IDU0IDYwIDYwUTY0IDYyIDExMyA2MkgxNjJMMzAyIDYyM1EzMDIgNjI0IDI1OCA2MjRIMjM1UTIxNCA2MjQgMjA5IDYyNlQxOTkgNjM5UTIwMyA2NzggMjE2IDY4NFEyMjAgNjg2IDIzOSA2ODZRMjkwIDY4NCA0MDMgNjg0UTQ3NSA2ODQgNTEyIDY4NVQ1NTMgNjg2UTU3NiA2ODYgNTc2IDY2OFE1NzIgNjMyIDU2MCA2MjZRNTU1IDYyNCA1MDYgNjI0SDQ1N0w0MjIgNDgxUTM4NiAzMzkgMzg2IDMzN0w3ODUgNjIxUTc3OSA2MjQgNzQ5IDYyNFE3MjYgNjI0IDcyNiA2NDFRNzI2IDY0NSA3MzAgNjU5UTczNCA2NzUgNzM2IDY3OVQ3NDcgNjg2TDc4NiA2ODVRODEyIDY4NCA4ODggNjg0UTkwOCA2ODQgOTM0IDY4NVQ5NjggNjg2UTEwMDMgNjg2IDEwMDMgNjY5UTEwMDMgNjQ2IDk5MSA2MjlROTg1IDYyNCA5NjcgNjI0UTkxOCA2MjQgODg4IDYxN1E4ODQgNjE3IDg3NCA2MTNMODY1IDYwOVE4NjQgNjA4IDczMiA1MTVUNTk5IDQyMFE1OTkgNDE4IDY4NiAyNDJUNzc1IDY1UTc4NCA2MiA4MjkgNjJRODQ3IDYyIDg1MCA2MVQ4NjAgNTRRODYyIDUyIDg2MiA0M1E4NjIgMTAgODQ1IDFRODQ0IDEgODQyIDFUODM2IDBUNzk3IDFUNjk0IDJRNTk5IDIgNTczIDFMNTM2IDAnLFxuICAgIDB4MUQ3MjY6ICc0MzkgMFE0MjUgNiA0MjUgMThRNDI1IDM1IDQzNiA1N1E0NDIgNjIgNDg1IDYyUTUyNSA2MiA1MjUgNjRMNDc4IDQ4M1E0NzggNDg0IDQ2NSA0NjNUNDIyIDM5NFQzNTAgMjc3UTIyMiA2OSAyMjIgNjhRMjIzIDY3IDIyNCA2N1EyMjkgNjQgMjcxIDYyUTI5MCA2MiAyOTcgNTlUMzA1IDQ1UTMwNSAzOCAzMDIgMjhRMjk3IDkgMjkzIDVUMjc0IDBRMjcwIDAgMjM4IDFUMTU5IDJRMTMzIDIgMTA1IDJUNzIgMVE1NiAxIDUyIDNUNDQgMTVRNDQgMTkgNDggMzVRNTMgNTUgNTggNThUODkgNjJRMTQyIDY0IDE1MSA3M1ExNTQgNzYgMzQ1IDM4N1Q1MzggNjk5UTU1MCA3MTEgNTcwIDcxMUg1ODBINTkyUTYxMyA3MTEgNjE4IDY5NVE2MTkgNjkyIDY1NCAzNzlUNjkwIDYzUTY5MCA2MiA3MjYgNjJINzQ2UTc3NiA2MiA3NzYgNDRRNzczIDcgNzU5IDJRNzU1IDAgNzQ3IDBRNzQzIDAgNzA3IDFUNjAwIDJRNTAyIDIgNDc2IDFMNDM5IDAnLFxuICAgIDB4MUQ3Mjc6ICcyNTggNjI0SDIzMVEyMTQgNjI0IDIwOCA2MjZUMTk5IDYzOVEyMDMgNjc4IDIxNiA2ODRRMjIwIDY4NiAzNDcgNjg2SDQ3M1E0NzQgNjg1IDQ3OCA2ODJUNDg0IDY3N1E0ODcgNjczIDUzNSA0MTNMNTg0IDE1M0w2MDggMTg3UTYzMSAyMjEgNjcyIDI4MVQ3NjEgNDEwUTkzNSA2NjMgOTQzIDY3MVE5NDkgNjc4IDk2MiA2ODZIMTA4MkgxMTY2UTEyMDEgNjg2IDEyMTAgNjgzVDEyMTkgNjY4UTEyMTUgNjMyIDEyMDMgNjI2UTExOTkgNjI0IDExNDkgNjI0SDExMDBMMTAzMSAzNDRROTYwIDY0IDk2MCA2M1QxMDA0IDYySDEwMzFRMTA2MyA2MiAxMDYzIDQ0UTEwNjAgNyAxMDQ2IDJRMTA0MiAwIDEwMzQgMFExMDMwIDAgOTkwIDFUODc1IDJRODA0IDIgNzY3IDFUNzI1IDBINzIzUTcwNyAwIDcwMyAxNVE3MDcgNTQgNzIwIDYwUTcyNCA2MiA3NzMgNjJIODIyUTk2MSA2MTggOTYxIDYxOUw3NTQgMzE4UTU0NiAxNSA1NDMgMTJRNTMxIDAgNTEwIDBRNTAwIDAgNDk1IDBUNDg0IDVUNDc3IDE5UTQ3NyAyMCA0MjEgMzE1TDM2NyA2MDRMMjk5IDMzNVEyMzQgNzIgMjM0IDY4UTIzNCA2MiAzMDIgNjJRMzM0IDYyIDMzNCA0NlEzMzIgOCAzMTcgMlEzMTMgMCAzMDYgMFEzMDEgMCAyNjcgMVQxODEgMlExMjUgMiA5NiAxVDYzIDBRNDggMCA0MyAxNVE0MyAxOSA0NyAzNVE1MiA1NSA1NyA1OFQ5NCA2MlExNDcgNjQgMTY0IDY5TDIzMyAzNDVRMzAyIDYxOSAzMDIgNjIyUTMwMiA2MjQgMjU4IDYyNCcsXG4gICAgMHgxRDcyODogJzI1OCA2MjRIMjM1UTIxNCA2MjQgMjA5IDYyNlQxOTkgNjM5UTIwMyA2NzggMjE2IDY4NFEyMjAgNjg2IDM0NCA2ODZINDM0UTQ2NCA2ODYgNDc3IDY4MFE0ODAgNjc3IDYwNyA0NTRRNzM4IDIyNyA3MzkgMjI3UTc0MiAyMjcgNzg5IDQxOFQ4MzYgNjE4UTgzNiA2MjAgODM1IDYyMEw4MjEgNjIyUTgxMSA2MjIgNzc5IDYyNFE3NTUgNjI0IDc0OSA2MjVUNzQwIDYzMlE3MzcgNjM1IDczNyA2NDRRNzM3IDY1NiA3NDIgNjY5VDc1NCA2ODVRNzU1IDY4NSA3NTcgNjg1VDc2MyA2ODZRNzY4IDY4NiA4MDMgNjg1VDg5MCA2ODRROTI1IDY4NCA5NTEgNjg0VDk5MCA2ODVUMTAwNiA2ODZRMTAxNCA2ODYgMTAxNiA2ODRRMTAyNyA2NzkgMTAyNyA2NjhRMTAyMyA2MzIgMTAxMSA2MjZRMTAwNyA2MjQgOTc4IDYyNFE5MTIgNjIyIDkwNyA2MTdROTA3IDYxNiA4MzEgMzE0VDc1MyA4UTc0OSAwIDcyMyAwSDcxMlE2OTkgMCA2OTIgN1E2OTIgOCA2NzEgNDRUNjA3IDE1NVQ1MjYgMjk2TDM2MSA1ODBMMjk2IDMyM1EyMzQgNzQgMjM0IDY4VDMwMiA2MkgzMDdRMzM0IDYyIDMzNCA0NFEzMzAgNiAzMTcgMkwzMTMgMEwyODAgMVEyNjAgMiAxODEgMlExMjUgMiA5NiAxVDYzIDBRNDggMCA0MyAxNVE0MyAxOSA0NyAzNVE1MiA1NSA1NyA1OFQ5NCA2MlExNDcgNjQgMTY0IDY5TDIzMyAzNDVRMzAyIDYxOSAzMDIgNjIyUTMwMiA2MjQgMjU4IDYyNCcsXG4gICAgMHgxRDcyOTogJzIwNiA0NjZRMTc1IDQ2NiAxNzUgNDg0UTE3NSA0ODcgMjAxIDU3NFQyMzAgNjY2UTIzNSA2NzMgMjQxIDY3NUg1NDdRODUzIDY3NSA4NTcgNjczUTg2NyA2NjggODY3IDY1N1E4NjcgNjU1IDg1MCA1NjlUODMyIDQ3OFE4MjcgNDY2IDgwOCA0NjZIODAySDc5NVE3NzMgNDY2IDc3MSA0ODFRNzcxIDQ4NiA3NzUgNTA4VDc3OSA1NDFWNTQ5SDc3NFE3NTUgNTUyIDUwNSA1NTJRMjgxIDU1MSAyNjcgNTQ4UTI2MiA1NDggMjU1IDUzM1QyNDIgNDk2VDIzMyA0NzJRMjI4IDQ2NiAyMDYgNDY2Wk0yNTkgMjU1SDI1MlEyMzEgMjU1IDIyOCAyNzBRMjI4IDI3NSAyNDggMzU1VDI3MCA0MzlRMjc3IDQ0OCAyODggNDQ4SDI5OFEzMjEgNDQ4IDMyNiA0NDBRMzMxIDQzNCAzMjYgNDE0UTMyNiA0MTMgNDg2IDQxM0g2NDdMNjUwIDQyNFE2NTQgNDQxIDY1OCA0NDRUNjc4IDQ0OEg2ODNINjkzUTcwMiA0NDggNzA1IDQ0NlQ3MTQgNDMyTDY5NCAzNDhRNjc0IDI2NyA2NjkgMjYxUTY2NCAyNTUgNjUyIDI1NUg2NDNRNjIyIDI1NSA2MTcgMjYxUTYxMyAyNjUgNjEzIDI3MlQ2MTMgMjgzVDYxNiAyODlRNjE2IDI5MCA0NTYgMjkwSDI5NUwyOTQgMjg1UTI5MyAyODAgMjkyIDI3NVQyODggMjY1VDI4MSAyNTdRMjc4IDI1NSAyNTkgMjU1Wk0xNTAgMTMxUTE1MCAxMjQgMjgxIDEyM1EzNDYgMTIzIDM5MCAxMjNRNjQwIDEyMyA2NjQgMTI2UTY2OCAxMjcgNjc1IDEyN1E2ODYgMTMxIDcwNCAxOThRNzA4IDIxMyA3MTMgMjE2VDczMyAyMjBINzM4UTc1NSAyMjAgNzU5IDIxOFE3NjggMjEzIDc2OCAyMDNRNzY4IDE5OCA3NDEgMTA1VDcxMCA4UTcwOCA0IDY5OSAwSDM4OFE3NyAwIDczIDJRNjIgNyA2MiAxOFE2MiAyNyA4MSAxMTVROTkgMjA2IDEwMiAyMTJRMTA2IDIyMCAxMjAgMjIwSDEyOVExNDAgMjIwIDE0NSAyMjBUMTU1IDIxNVQxNjAgMjAyUTE2MCAxOTYgMTU5IDE5MlExNTAgMTQ1IDE1MCAxMzEnLFxuICAgIDB4MUQ3MkE6ICc1MyAyNDVRNTMgMjk3IDcwIDM1NlQxMjUgNDc4VDIxNiA1OTBUMzQ5IDY3MVQ1MjMgNzAzUTY1NiA3MDMgNzM1IDYzN1Q4MTUgNDQ1UTgxNSAzNzggNzkxIDMwN1E3MjcgMTA0IDUyNyAxN1E0MzcgLTE3IDM0NCAtMTdRMjg5IC0xNyAyNDIgLTVUMTUwIDM1VDc5IDExNlQ1MyAyNDVaTTY2NCA0ODlRNjY0IDU3NSA2MTggNjExVDUxMSA2NDhRNDYzIDY0OCA0MTYgNjI3VDMzNCA1NzBRMjk3IDUzMSAyNzAgNDcyVDIzMCAzNTVUMjEzIDI2MVQyMDggMjA2UTIwOCAxNzcgMjE1IDE1MVQyMzcgOThUMjg0IDU2VDM1OCA0MFE0NDAgNDAgNTEwIDk4VDYxOCAyNzBRNjY0IDQwMCA2NjQgNDg5JyxcbiAgICAweDFENzJCOiAnMjU3IDYxOEgyMzFRMTk4IDYxOCAxOTggNjM2UTIwMiA2NzIgMjE0IDY3OEwyMTkgNjgwSDEwMTFRMTAyMiA2NzUgMTAyNiA2NjVRMTAyMiA2MjYgMTAwOSA2MjBRMTAwNSA2MTggOTU2IDYxOEg5MDdMOTA2IDYxNFE5MDYgNjEzIDgzOCAzMzlUNzY4IDY0UTc2OCA2MiA4MTIgNjJIODM5UTg3MSA2MiA4NzEgNDRRODY3IDYgODU0IDJMODUwIDBMODA4IDFRNzgyIDIgNjc1IDJRNjAwIDIgNTYwIDFUNTE2IDBRNDk5IDAgNDk0IDE1UTQ5OCA1NCA1MTEgNjBRNTE1IDYyIDU2NCA2Mkg2MTNMNjE0IDY2UTYxNCA2NyA2ODIgMzQxVDc1MiA2MTZRNzUyIDYxOCA2MDQgNjE4SDQ1Nkw0NTUgNjE0UTQ1NSA2MTMgMzg3IDMzOVQzMTcgNjRRMzE3IDYyIDM2MSA2MkgzODhRNDIwIDYyIDQyMCA0NFE0MTYgNiA0MDMgMkwzOTkgMEwzNTcgMVEzMzEgMiAyMjQgMlExNDkgMiAxMDkgMVQ2NSAwUTQ4IDAgNDMgMTVRNDcgNTQgNjAgNjBRNjQgNjIgMTEzIDYySDE2MkwxNjMgNjZRMTYzIDY3IDIzMSAzNDFUMzAxIDYxNlEzMDEgNjE4IDI1NyA2MTgnLFxuICAgIDB4MUQ3MkM6ICcxNjIgNjJMMzAyIDYyM1EzMDIgNjI0IDI1OCA2MjRIMjM0UTIxNCA2MjQgMjA5IDYyNlQyMDAgNjM4UTIwMCA2NzcgMjE3IDY4NFEyMjAgNjg2IDQzOSA2ODZRNjY3IDY4NSA2ODQgNjgyUTY4NiA2ODEgNjkzIDY4MFE3MTMgNjc3IDczMyA2NzFUNzgyIDY0OVQ4MjkgNjAyVDg0NyA1MjhRODQ3IDQ1MCA3ODQgMzgyVDYwNCAyOTNRNTcxIDI4OCA0NjkgMjg3SDM3M0wzNDYgMTc2UTM0MCAxNTEgMzMzIDEyMlQzMjEgNzhMMzE3IDY0UTMxNyA2MiAzNjEgNjJIMzg3UTQyMCA2MiA0MjAgNDRRNDE3IDEwIDQwNCAyTDM5OSAwTDM1NyAxUTMzMSAyIDIyNCAyUTE0OSAyIDEwOSAxVDY1IDBRNDMgMCA0MyAxN1E0MyAyMSA0NyAzM1E1MiA1NCA1NyA1OFQ4OSA2MkgxMTNIMTYyWk02OTIgNTU4UTY5MiA2MTEgNjE3IDYyMlE2MTAgNjIzIDUyOSA2MjRINDUyTDM4MSAzNDNINDU4SDQ5MlE2MDQgMzQzIDY0MSAzODlRNjYyIDQxNCA2NzcgNDcxVDY5MiA1NTgnLFxuICAgIDB4MUQ3MkU6ICc4NDcgNDMwUTgyOCA0MzAgODIzIDQzNFQ4MTcgNDUwUTgxNyA0NTQgODE3IDQ2NlQ4MTggNDg3UTgxOCA1MjYgODA5IDU1MVQ3ODQgNTkxVDczNyA2MTNUNjc1IDYyMlQ1OTAgNjI0SDUyOEg0MzBMNTEzIDQ4N1E1OTQgMzUxIDU5NiAzNDVRNTk2IDMzNSA1OTAgMzMwUTU4MyAzMjMgNDE4IDIwNEwyNTAgODFMMzYzIDgwUTUzMyA4MCA1OTEgODlUNjk0IDE0MlE3MzkgMTg1IDc2NSAyNTJRNzcyIDI2OCA3NzYgMjcxVDc5OSAyNzRRODE2IDI3NCA4MjAgMjcyUTgzMiAyNjYgODMwIDI1NFE4MjkgMjUwIDc4NCAxMzBUNzM2IDdRNzMyIDMgNzI1IDBINDA1UTg0IDAgODAgMlE2OSA3IDY5IDE4UTY5IDI2IDc1IDMyUTc2IDMyIDk4IDQ4VDE2OCAxMDBUMjU1IDE2NEw0MzIgMjkzUTQyOSAzMDAgMzI5IDQ2NVQyMjUgNjM3UTIyMyA2NzUgMjQ1IDY4Nkg4ODhROTAwIDY4MCA5MDIgNjcxUTkwMiA2NjcgODkwIDU1NlQ4NzYgNDQxUTg3MSA0MzAgODQ3IDQzMCcsXG4gICAgMHgxRDcyRjogJzQ5OCA2MlE1MTEgNTggNTExIDQzUTUxMSAxMCA0OTQgMUw0OTAgMFE0ODcgMCA0ODIgMFQ0MjQgMVQyNzEgMlEyMDEgMiAxNTcgMlQ5NCAxVDcyIDBINzBRNDYgMCA0NiAxN1E0OSA1NCA2MiA2MEw2NiA2MkgxMzdRMjA4IDYyIDIwOSA2M0wyMTggOThRMjI3IDEzNCAyNDQgMjAzVDI3OCAzMzlMMzQ3IDYxM0gzMDBRMjYyIDYxMiAyNDYgNjExVDE5OCA1OTlUMTQ2IDU2NFExMjggNTQ1IDExNCA1MTJUOTEgNDU0VDc5IDQyNVE3MyA0MTkgNTIgNDE5UTIyIDQxOSAyMiA0MzRRMjIgNDQwIDQxIDQ5OFQ4MCA2MTFMMTAwIDY2NlExMDUgNjczIDExMSA2NzVINDM0UTc1OCA2NzUgNzYyIDY3M1E3NzIgNjY4IDc3MiA2NTdRNzcyIDY1NSA3NTYgNTQ5VDczOCA0MzRRNzM1IDQxOSA3MTEgNDE5SDcwN1E2OTAgNDE5IDY4NiA0MjFRNjc3IDQyNSA2NzcgNDM0UTY3NiA0MzYgNjc4IDQ0OVQ2ODMgNDg1VDY4NiA1MjlRNjg2IDU1MyA2NzkgNTY5VDY2MiA1OTRUNjMxIDYwN1Q1OTMgNjEyVDU0NCA2MTNINTAyTDQzMyAzNDBRNDE4IDI3OSA0MDAgMjA3VDM3NCAxMDBMMzY1IDY1TDM2NCA2Mkg0OTgnLFxuICAgIDB4MUQ3MzA6ICczMiA1NDRRMzIgNTg2IDkxIDY0NFQyMjkgNzAzUTI3NyA3MDMgMzExIDY4M1QzNjMgNjI4VDM4OSA1NjBUMzk3IDQ5MVY0NzhMNDA0IDQ5MVE0NTUgNTg5IDUyNiA2NDZUNjc3IDcwM1E3MzAgNzAzIDc2NiA2NzFUODAyIDU4NFE4MDIgNTUxIDc5MyA1NDFUNzY2IDUzMUg3NTdMNzM2IDUzMkw3MzIgNTM1TDcyOSA1MzlWNTQ5UTczMSA1NjkgNzE1IDU3NVQ2NTggNTgxSDY1MFE1NDUgNTgxIDQ3NyA0NDNRNDUzIDM5MiA0NDMgMzUxUTQ0MSAzNDUgNDI0IDI3M1QzODkgMTMzVDM3MSA2NFEzNzEgNjIgNDI4IDYySDQ2MVE0ODMgNjIgNDkyIDU5VDUwMSA0NFE0OTggMTAgNDg1IDJMNDgwIDBMNDMxIDFRNDAxIDIgMjc4IDJUMTI3IDFMODUgMFE3MSA1IDcxIDE3UTcxIDI0IDc0IDMzUTc3IDQ2IDc4IDQ5VDg0IDU3VDk1IDYxVDExOCA2MkgxNTRIMjE2UTIzMiAxMjYgMjQ5IDE5M1QyNzMgMjg3VDI4NyAzNDVUMjk2IDM4OFQyOTkgNDE2VDMwMCA0NTJRMjk0IDU4MSAxOTggNTgxUTE1NCA1ODEgMTMyIDU3NVQxMDYgNTYyVDk5IDU0NlQ4NiA1MzNRODIgNTMxIDYwIDUzMUwzOSA1MzJRMzIgNTM3IDMyIDU0NCcsXG4gICAgMHgxRDczMTogJzMyMyA2MjRIMjkzUTI2NyA2MjQgMjYxIDYyNlQyNTEgNjM5UTI1NSA2NzggMjY4IDY4NFEyNzIgNjg2IDI5MyA2ODZRMzQ4IDY4NCA0NzUgNjg0UTU1NyA2ODQgNjAwIDY4NVQ2NDcgNjg2SDY0OFE2NzEgNjg2IDY3MSA2NjhRNjY3IDYzMiA2NTUgNjI2UTY1MCA2MjQgNTg4IDYyNEg1MjVMNTAwIDUyMFE1MDAgNTE5IDUyMCA1MThUNTc5IDUwN1Q2NTYgNDgwUTczNyA0NDAgNzM3IDM3MlE3MzcgMjk0IDY0OCAyMzdRNTYyIDE4MCA0MjYgMTY5TDQxMiAxNjhMMzk5IDExOFEzODYgNjYgMzg2IDY1TDM4NSA2Mkg0NDNINDc5UTQ5OCA2MiA1MDYgNTlUNTE1IDQ0UTUxMSA4IDQ5OSAyTDQ5NCAwTDQ0NyAxUTQxNyAyIDI5OCAyUTIxMiAyIDE2NyAxVDExOCAwUTEwMCAwIDk1IDE1UTk5IDU0IDExMiA2MFExMTYgNjIgMTc5IDYySDI0MVEyNDIgNjQgMjU0IDExNFQyNjYgMTY3UTI2NiAxNjggMjYyIDE2OFEyNTYgMTY4IDIzNyAxNzBUMTgwIDE4MVQxMTAgMjA1VDU0IDI0OVQyOSAzMTZRMjkgMzkxIDExMiA0NDZUMzI3IDUxNlEzNDUgNTE4IDM0OSA1MThRMzUxIDUxOCAzNTMgNTE4TDM1NSA1MTlRMzU2IDUyMCAzNjggNTcwVDM4MSA2MjNRMzgxIDYyNCAzMjMgNjI0Wk0zNDIgNDY2UTM0MSA0NjcgMzM5IDQ2N1EzMjAgNDY3IDI4MyA0NTVUMjI1IDQyMFExODEgMzYxIDE4MSAyOTZRMTgxIDI3MyAxOTMgMjU3VDIyMiAyMzNUMjU0IDIyMlQyNzcgMjE5TDI4MCAyMjBRMjgxIDIyMCAzMTEgMzQyVDM0MiA0NjZaTTU4MyAzODlRNTgzIDQwOSA1NzYgNDIzVDU1NyA0NDRUNTMzIDQ1NlQ1MDkgNDYzVDQ5MiA0NjdINDg2TDQ1NSAzNDNRNDQ0IDMwMCA0MzcgMjcxVDQyOCAyMzFUNDI2IDIxOVE0MzAgMjE5IDQ0NSAyMjJUNDgzIDIzMlQ1MjEgMjUwUTU1MSAyNjkgNTY3IDMxMFQ1ODMgMzg5JyxcbiAgICAweDFENzMyOiAnOTMxIDY4NlE5NTMgNjg2IDk1MyA2NzBROTUzIDY1MCA5NDQgNjMyUTkzNiA2MjQgOTI0IDYyNEg5MTRRODIzIDYyNCA4MDMgNjExUTgwMCA2MDkgNjk2IDUwM1Q1OTEgMzk2UTU5MSAzOTQgNjY3IDIyOUw3NDMgNjJINzg3SDgxNFE4NDYgNjIgODQ2IDQ0UTg0MyA3IDgyOSAyUTgyNSAwIDgxNyAwUTgxMyAwIDc3NSAxVDY2NCAyUTU5MCAyIDU1MSAxVDUwOCAwSDUwN1E0ODQgMCA0ODQgMThRNDg0IDE5IDQ4OCAzN1E0OTIgNTYgNDk3IDU4VDUzNCA2Mkw1NjYgNjNRNTY3IDY0IDUyMCAxNjlUNDcxIDI3NFE0NjkgMjc0IDM2OSAxNzJUMjY4IDY3TDMxNSA2MlEzMjAgNjIgMzI4IDYyTDMzNSA2MVEzNDcgNTggMzQ3IDQ0UTM0NCAxMCAzMzEgMkwzMjYgMEwyODcgMVEyNjMgMiAxNzcgMlE5NSAyIDc4IDFMNTMgMFEzOCA2IDM4IDE3UTM4IDQwIDUwIDU3UTU2IDYyIDc4IDYyUTE2OSA2MiAxODggNzVRMTk0IDc3IDQzNSAzMjRMNDQ0IDMzNEw0MzkgMzQ3UTQzNyAzNTEgMzczIDQ5MkwzMTMgNjI0SDI2OEgyNDZRMjIwIDYyNCAyMTIgNjMyUTIxMCA2MzYgMjEwIDY0MlEyMTAgNjU1IDIxNSA2NjlUMjI3IDY4NFEyMzAgNjg2IDI0NyA2ODZRMjk1IDY4NCAzOTggNjg0UTQzOCA2ODQgNDcyIDY4NFQ1MjcgNjg1VDU1MSA2ODZRNTY3IDY4NiA1NzIgNjcxUTU3MiA2NjcgNTY4IDY1MVE1NjMgNjMxIDU1OCA2MjhUNTIzIDYyNFQ0OTIgNjIzSDQ4OEw1MjYgNTQwUTU2MyA0NTcgNTY0IDQ1N1E1NjQgNDU2IDU3NCA0NjZUNjA0IDQ5NlQ2NDUgNTM3TDcyNCA2MTlRNzE2IDYyMiA2NzcgNjI0SDY3M1E2NDUgNjI0IDY0NSA2NDBRNjQ1IDY2MCA2NTQgNjc4UTY1OSA2ODMgNjY2IDY4Nkw3MDQgNjg1UTcyOCA2ODQgODEzIDY4NFE4NDcgNjg0IDg3MyA2ODRUOTEzIDY4NVQ5MzEgNjg2JyxcbiAgICAweDFENzMzOiAnMjA1IDQ3MVEyMDUgNDQ1IDE5NiA0MDNUMTg2IDMzM1ExODYgMzAzIDE5NCAyODFUMjE4IDI0OFQyNDAgMjMzVDI2MiAyMjRMMzYxIDYyM1EzNjEgNjI0IDMwMyA2MjRRMjk2IDYyNCAyODQgNjI0VDI2NiA2MjNRMjMyIDYyMyAyMzIgNjQxUTIzMiA2NDggMjM1IDY1N1EyNDAgNjc4IDI0NCA2ODJUMjY4IDY4NkgyNzNRMzI5IDY4NCA0NTcgNjg0UTUwMiA2ODQgNTQwIDY4NFQ1OTkgNjg1VDYyNiA2ODZINjI4UTY1MSA2ODYgNjUxIDY2OFE2NDkgNjMzIDYzMSA2MjRINTA1TDQwNyAyMjdRNDEwIDIyOCA0MTYgMjI5VDQzOSAyMzlUNDcyIDI1OVQ1MDcgMjk0VDUzOSAzNDVRNTQ5IDM2NSA1NjMgNDE2VDU5NyA0OThUNjQ5IDUzOFE2NTcgNTQwIDcxNyA1NDBRNzI1IDU0MCA3MzcgNTQwVDc1NSA1NDFRNzkwIDU0MSA3OTAgNTI0UTc5MCA1MTIgNzg0IDQ5N1E3ODAgNDkxIDc2NyA0OTBUNzQyIDQ3N1E3MzYgNDcxIDczMSA0NjNUNzIyIDQ0OVQ3MTUgNDMzVDcxMCA0MTlUNzA1IDQwM1Q3MDEgMzg5UTY4NiAzNDAgNjU4IDMwMlQ1OTkgMjQwVDUzMCAyMDFUNDYzIDE3OVQ0MDQgMTY5TDM5MSAxNjhMMzc5IDExNlEzNjUgNjcgMzY1IDYzUTM2NSA2MiA0MjIgNjJINDU1UTQ3NyA2MiA0ODYgNTlUNDk1IDQ0UTQ5MiAxMCA0NzkgMkw0NzQgMEw0MjcgMVEzOTcgMiAyNzggMlQxMzEgMUw5MCAwUTc2IDUgNzYgMTdRNzYgMjQgNzkgMzNRODIgNDYgODMgNDlUODkgNTdUMTAwIDYxVDEyMyA2MkgxNTlIMjIxUTI0NyAxNjIgMjQ3IDE2OEgyNDRRMjQxIDE2OSAyMzkgMTY5UTIwMiAxNzYgMTc4IDE4MlQxMjMgMjA3VDc0IDI1MlE0NiAyOTEgNDYgMzUxUTQ2IDM3NSA1MiA0MDRUNTkgNDU0UTU5IDQ4OSA0MCA0ODlRMzIgNDg5IDI3IDQ5NFQyMiA1MDdRMjIgNTM1IDM3IDUzOFE0MCA1NDAgOTkgNTQwSDEyOFExNjggNTQwIDE4NiA1MjhUMjA1IDQ3MScsXG4gICAgMHgxRDczNDogJzE2MiAxMTlRMTgxIDExNSAyMzUgMTE1TDI3MyAxMTZRMjczIDEzMyAyMzEgMjIyVDE4MCAzNDVRMTczIDM2OCAxNzMgMzkxVjQwNlY0MTRRMTczIDQ3NyAyMTQgNTQwUTI1NSA2MDAgMzE1IDYzNVEzNTMgNjYxIDQyMyA2ODJUNTg1IDcwM1E2NTYgNzAzIDcxMSA2OTBUNzk5IDY1NlQ4NTEgNjA4VDg3OSA1NTVUODg2IDUwM1E4ODYgNDQ5IDg2MCA0MDFRODQwIDM1OSA4MTAgMzIyVDcyNSAyMzBUNjQzIDE0NlE2MTkgMTE3IDYxOSAxMTZUNjUwIDExNVE3MDcgMTE1IDcyMiAxMjBRNzMwIDEyMyA3NTAgMTY1VDc3NSAyMTBRNzc5IDIxMiA3OTYgMjEyUTgyOCAyMTIgODI4IDE5NlE4MjggMTkxIDgwNyAxNDRUNzY0IDUyTDc0MyA3UTc0MCA0IDc0MCA0VDczMyAyVDcxNyAwVDY4NiAwSDYzMkg1NzNRNTM1IDAgNTI2IDNUNTE3IDE3UTUxNyA0NCA1NDQgMTAzVDYxNyAyNDNUNjcxIDM0MVE3MjkgNDU0IDcyOSA1MzVRNzI5IDU5OSA2ODYgNjI1VDU4MyA2NTJRNTQ5IDY1MiA1MTcgNjQ1VDQ1MCA2MTZUMzg4IDU2MVQzNDQgNDcwVDMyNyAzNDBRMzI3IDMwNCAzMzEgMjM3VDMzNiAxMzVRMzM2IDkzIDMzMCA1MFQzMTMgMlEzMDggMCAyMDggMEgxNDJRMTA3IDAgMTAwIDRUOTMgMjVROTMgMjggOTMgNDFUOTUgNzdUOTYgMTE4TDEwMCAxOTlRMTA1IDIwOCAxMDkgMjEwVDEzMSAyMTJRMTQ3IDIxMiAxNTEgMjEwVDE2MSAxOTlWMTYwUTE2MSAxMzEgMTYyIDEyNVYxMTknLFxuICAgIDB4MUQ3MzY6ICczOSAxNjZRMzkgMjEzIDU5IDI2MVQxMTcgMzUzVDIxOSA0MjRUMzYyIDQ1MlE0MjAgNDUyIDQ2NiA0MzNUNTM2IDM4NFQ1NzMgMzI1VDU4NiAyNjlWMjY1UTU5MyAyNzIgNjA5IDMwOFQ2MzYgMzgxUTY0MCAzOTcgNjQ0IDM5OVQ2NjkgNDAySDY4MFE3MDAgNDAyIDcwMCAzODhRNzAwIDM3OSA2OTEgMzUxVDY1OSAyNzZUNjA0IDE4OEw1OTMgMTczTDU5NSAxNTNRNjAwIDc5IDYxMiA0M0g2MThRNjM0IDQ1IDY0MiA1MVQ2NTMgNjRUNjU4IDcxUTY2MSA3MyA2ODQgNzNRNzEyIDczIDcxMiA1OVE3MTIgMzkgNjg1IDE2VDYwMyAtN1E1ODggLTcgNTc1IC01VDU1MSAyVDUzMiAxMlQ1MTYgMjRUNTAzIDM3VDQ5NCA0OVQ0ODcgNjBUNDgxIDY5TDQ2OSA2MVEzNjIgLTggMjUxIC04UTE1OSAtOCA5OSAzNlQzOSAxNjZaTTI2MCA0M1EzMTAgNDMgMzYxIDYzVDQzOCAxMDFUNDY1IDEyNFE0NTggMjQwIDQ1MyAyNzdRNDM1IDQwMSAzNTQgNDAxUTI5MSA0MDEgMjQ1IDM1NVEyMzAgMzM3IDIxNyAzMTNRMjAxIDI3OSAxODYgMjE2VDE3MCAxMjZRMTcwIDcyIDIwOCA1NFEyMzAgNDMgMjYwIDQzJyxcbiAgICAweDFENzM3OiAnNTkgLTE5NEg0OVEzMSAtMTk0IDI4IC0xODJRMjggLTE3OCAxMDcgMTM5VDE5MiA0NzNRMjEyIDUzMyAyNDggNTgwVDMyNCA2NTJUMzk1IDY4OVQ0NTAgNzAxSDQ2MVE1MTQgNzAxIDU1MSA2ODhUNjA1IDY1MlQ2MzAgNjA3VDYzNyA1NjFRNjM3IDU0NiA2MzQgNTI2VDYxMSA0NjVUNTU2IDM5M1E1NzIgMzgyIDU5MCAzNDdUNjA4IDI2MlE2MDggMTQ2IDUyMiA2OVQyOTkgLThRMjc5IC04IDI2MSAtNlQyMjggMlQyMDQgMTNUMTgzIDI2VDE2OSAzN1QxNTcgNDhMMTUwIDU2TDEyMCAtNjRRMTEzIC05MCAxMDQgLTEyOFE5MyAtMTc1IDg5IC0xODRUNzMgLTE5NEg1OVpNNTMxIDU5MlE1MzEgNjUxIDQ2MyA2NTFRMzk5IDY1MSAzNDEgNjAwVDI1MyA0NjZRMjUwIDQ1OCAyMTcgMzI3VDE4MiAxODVRMTgwIDE3NiAxODAgMTU5UTE4MCAxMDggMjEyIDc2VDMwMSA0NFEzMzAgNDQgMzU0IDUxVDM5MyA2NVQ0MjMgOTFUNDQ0IDExOFQ0NTkgMTUxVDQ2OCAxNzlUNDc1IDIwNlE0OTAgMjY0IDQ5MSAyOTZRNDkxIDMxMyA0ODkgMzI2VDQ4NCAzNDVMNDgyIDM1MFE0ODEgMzUwIDQ3NyAzNDhUNDY0IDM0NFQ0NDQgMzQwVDQxMyAzMzVUMzcyIDMzM1QzMzQgMzM0VDMwMSAzNDBUMjc0IDM1NVQyNjUgMzgwUTI2NSA0NDQgMzk3IDQ0NFE0MjUgNDQ0IDQ0NSA0NDFUNDc2IDQzNkw0ODUgNDMzUTQ4OSA0MzMgNDk5IDQ1OFE1MDkgNDgyIDUyMCA1MjdUNTMxIDU5MlpNNDI0IDM5MFE0MjQgMzkzIDM4OSAzOTNRMzgzIDM5MyAzNzQgMzkzVDM2MiAzOTJRMzQ4IDM5MiAzMzMgMzg4UTM0NSAzODQgMzc5IDM4NFE0MjQgMzg0IDQyNCAzOTAnLFxuICAgIDB4MUQ3Mzg6ICc1IDI2OVE1IDI4NSAxOSAzMTJUNTcgMzY4VDEyNCA0MjFUMjE1IDQ1MUgyNDFRMjc0IDQ1MSAzMDMgNDM5VDM1MyA0MDZUMzg5IDM2MVQ0MTYgMzExVDQzMiAyNjZUNDQyIDIzMkw0NDQgMjIwTDQ0NiAyMTZMNDUwIDIyNlE0NzMgMjc4IDUxMyAzNTdUNTYxIDQ0MVE1NjYgNDQ0IDU4NCA0NDRINTk0UTYxNyA0NDQgNjE3IDQzMFE2MTcgNDI2IDU5NiAzODlUNTM2IDI3M1Q0NjIgMTEwTDQ1MiA4NEw0NTEgNzBRNDQ3IDEyIDQyNyAtNzZUMzg4IC0xOTJRMzc1IC0yMTEgMzU1IC0yMTFRMzM5IC0yMTEgMzMyIC0xOThUMzI1IC0xNzFRMzI1IC0xMTQgMzg2IDY0TDM5MyA4NFY5OFEzOTMgMTgxIDM3MSAyNDFRMzYwIDI4MCAzMTkgMzAzVDIxMCAzMjdRMTU4IDMyNyAxMjYgMzE3VDg0IDI5NlQ2OCAyNzJUNTkgMjU4UTU1IDI1NiAzNiAyNTZRMjMgMjU2IDE4IDI1NlQ5IDI2MFQ1IDI2OScsXG4gICAgMHgxRDczOTogJzIxNiA2MTBRMjE2IDY0MCAyMjkgNjY0VDI2MiA3MDBUMjk5IDcxOVQzMjcgNzI1UTMzMCA3MjUgNDA2IDcwOVQ0ODcgNjkwUTUxMyA2ODEgNTEzIDY1MVE1MTMgNjI3IDQ5NCA2MDdUNDUwIDU4N1E0MTcgNTg3IDM3OCA2MzFRMzQ2IDY2MyAzMTQgNjYzUTI4NiA2NjMgMjcyIDYzOVEyNzEgNjM3IDI3MSA2MzRRMjcxIDYwOSAzNDQgNTM2TDM5NyA0ODRRNDM4IDQ0OCA0NTggNDEwVDQ3OCAzMTNRNDc4IDIzNCA0NDMgMTQ3VDMzOCAxOFEyOTggLTggMjQ5IC04UTIxNCAtOCAxODAgMFQxMTMgMjZUNjAgODFUMzkgMTY4UTM5IDIwMCA1MCAyMzdUODcgMzE2VDE2MCAzOTFUMjcyIDQ0MkwyNjAgNDY1UTIxNiA1NTMgMjE2IDYxMFpNMzQ4IDIzNVEzNDggMjc0IDMzNiAzMTNUMzEwIDM3MkwyOTggMzkyUTI5NSAzOTEgMjkwIDM5MFQyNjkgMzgwVDI0MSAzNTlUMjEyIDMyM1QxODUgMjY3UTE1NyAxNjggMTU3IDEzMFExNTcgODMgMTg2IDYzVDI1NSA0M1EyODAgNDMgMzAwIDY3UTMxNyA4OSAzMzIgMTM4VDM0OCAyMzUnLFxuICAgIDB4MUQ3M0E6ICcyMjQgLTE3UTEyNiAtMTcgODEgMjJUMzYgMTEyUTM2IDE3OCA4NCAyMjZMOTMgMjM2TDg4IDI0NlE3OSAyNjQgNzkgMjg5UTc5IDM0MSAxMjQgMzg4UTIwMSA0NjEgMzMzIDQ2MVE0MDIgNDYxIDQ1NSA0MjVRNDgwIDQwOSA0ODEgMzkwUTQ4MSAzNjUgNDY0IDM1MFQ0MjggMzM0UTQxNSAzMzQgMzg3IDM1MlQzMTMgMzcwUTE0MSAzNzAgMTQxIDI5M1ExNDEgMjc1IDE0NiAyNzBRMTQ3IDI3MCAxNDggMjcwVDE1NSAyNzJRMjAyIDI5MSAyNjMgMjkxSDI3MFEzNDkgMjkxIDM0OSAyNDRRMzQ5IDE5NSAyODEgMTgzUTI3NCAxODIgMjM5IDE4MlEyMDEgMTgyIDE4NCAxODVUMTM3IDIwMFExMjMgMTg4IDExMiAxNjhUMTAwIDEyOVQxMTIgOThUMTQ4IDgxVDE4OSA3NVQyMzcgNzRIMjQzSDI1MVEyODggNzQgMzEwIDc1VDM1OSA4NlQzOTggMTEyUTQwNSAxMjQgNDE3IDEyNFE0MjYgMTI0IDQzMiAxMTdUNDM5IDEwMFE0MzkgODggNDI3IDcwVDM5MCAzMlQzMjIgLTNUMjI0IC0xN1pNMjg2IDIzOFEyODYgMjQwIDI1MyAyNDBRMjQ1IDI0MCAyMzQgMjM5VDIxNiAyMzdUMjA5IDIzNVEyMDkgMjMyIDI1MCAyMzJRMjg2IDIzMiAyODYgMjM4JyxcbiAgICAweDFENzNCOiAnMzYxIDcxMVEzNzMgNzExIDM4MSA3MDNUMzg5IDY4M1EzODkgNjgxIDM4OCA2NzZUMzgzIDY1NlQzNzYgNjE4VjYxMkgzNzlRMzg1IDYxOCA0MjkgNjE4UTUyMSA2MTggNTIxIDU3MlE1MjEgNTUxIDUwNiA1MzRRNDgzIDUxMCA0MTUgNTA3UTM4NSA1MDcgMzcxIDUxMVQzMzYgNTM2TDMyNiA1MjhRMjU0IDQ3MiAyMDQgMzgxVDE1NCAyMDlRMTU0IDE5MCAxNTcgMTc3UTE1OSAxNjUgMTYyIDE1NFQxNzAgMTM1VDE4MiAxMTlUMTk1IDEwNlQyMTIgOTVUMjI5IDg2VDI0OSA3OFQyNjkgNzJUMjkwIDY2VDMxMSA2MFEzODUgMzcgMzg4IDM2UTQzNyAxNCA0NTQgLTM2UTQ1NiAtNDYgNDU2IC02NFE0NTYgLTgzIDQ1NSAtOTBRNDQ1IC0xMzIgNDEzIC0xNjdUMzMzIC0yMDJRMzAwIC0yMDIgMjU3IC0xOTFUMjA2IC0xNjlRMjAzIC0xNjQgMjAzIC0xNThRMjAzIC0xNDggMjEwIC0xNDBUMjMxIC0xMzBRMjM5IC0xMzAgMjYzIC0xMzlUMzI2IC0xNTFIMzI5UTMzNyAtMTUxIDM0MiAtMTUwVDM1MiAtMTQzVDM1NyAtMTIzUTM1NiAtMTE3IDM1NSAtMTEzVDM1MCAtMTA0VDM0NCAtOTZUMzM1IC05MFQzMjQgLTg1VDMxMCAtODBUMjk0IC03NFQyNzUgLTY4VDI1NCAtNjJRMjUzIC02MiAyMzEgLTU2VDIwNSAtNDhUMTc5IC0zOVQxNTAgLTI2VDEyNSAtMTBUMTAwIDExVDgwIDM3VDYyIDcwVDUzIDEwOVQ0OCAxNTdRNDggMjgxIDEyMyAzOTZUMzE3IDU4NlY2MTJRMzE5IDYzOCAzMjAgNjQ5VDMyNSA2NzhUMzM4IDcwM1QzNjEgNzExWk00NTQgNTY0UTQ0NSA1NjcgNDI0IDU2N1E0MDcgNTY3IDM5OCA1NjVUMzg3IDU2M1EzODcgNTU4IDQxMSA1NThRNDM0IDU1OCA0NTAgNTYyTDQ1NCA1NjQnLFxuICAgIDB4MUQ3M0M6ICcyNCAyOTZRMjUgMzAyIDI3IDMxMlQ0MSAzNTBUNjUgMzk3VDEwMyA0MzVUMTU3IDQ1MlEyMDIgNDUyIDIzMyA0MzVRMjY3IDQxOSAyODQgMzg0TDI5NCAzOTJRMzA0IDQwMSAzMTYgNDEwVDM0OCA0MjlUMzg4IDQ0NVE0MTAgNDUxIDQ0NSA0NTFINDUzUTQ2OCA0NTEgNDgyIDQ1MFQ1MTkgNDQzVDU1OCA0MjVUNTg3IDM5MVQ2MDAgMzM3VjMyN1E2MDAgMzExIDUzOCA2NFE0ODQgLTE1OCA0NzggLTE2OFE0NTcgLTIxMSA0MDkgLTIxMVEzODYgLTIxMSAzNzIgLTE5N1QzNTcgLTE2MVEzNTcgLTE1OCA0MTUgODBRNDc2IDMzMCA0NzcgMzQ4UTQ3NyAzNjYgNDczIDM3N1Q0NjEgMzkzVDQ0OCAzOTlUNDMyIDQwMEg0MjdRMzc5IDQwMCAzMzUgMzYzUTMwMCAzMzIgMjgwIDI5OFEyNzcgMjkzIDI0NiAxNzBUMjEzIDQwUTIwNSAyMiAxODYgN1QxNDIgLThUMTAzIDdUODkgMzlRODkgNDkgMTA2IDExN1QxNDIgMjYwVDE2NCAzNTFRMTY2IDM2MyAxNjYgMzcyUTE2NiA0MDIgMTQ4IDQwMlExMjYgNDAyIDExMCAzNjlRMTAwIDM1MCA5MCAzMTBRODUgMjg5IDgyIDI4NlQ2MCAyODJINTVINDRRMjQgMjgyIDI0IDI5NicsXG4gICAgMHgxRDczRDogJzIxMyAtOFExMzAgLTggODUgNTBUNDAgMjAwVjIwN1E0MCAzMDMgODMgNDI4UTEyMiA1MzUgMTg5IDYwOFEyNzkgNzAyIDM4MSA3MDJRNDEwIDcwMiA0MzcgNjkzVDQ5MiA2NjFUNTM3IDU5M1Q1NTQgNDg2UTU1NCA0MjggNTM5IDM2MlQ0OTUgMjMwVDQyNSAxMTFUMzMwIDI1VDIxMyAtOFpNNDMzIDU2MlE0MzMgNjAwIDQxOSA2MjVUMzc3IDY1MVEzNjMgNjUxIDM0OCA2NDRUMzExIDYxOVQyNjggNTU3VDIyOSA0NTNRMjI1IDQ0MSAyMTcgNDExVDIwOCAzNzhINDAxUTQzMyA1MDAgNDMzIDU2MlpNMTYxIDE0MFExNjEgNDMgMjE3IDQzUTI0OSA0MyAyODAgNzRRMzEwIDEwMyAzMzIgMTUwVDM3OCAyODdRMzg1IDMxMyAzODUgMzE1UTM4NSAzMTYgMjg5IDMxNkgxOTJRMTkxIDMwOCAxODMgMjc1VDE2OSAyMDVUMTYxIDE0MCcsXG4gICAgMHgxRDczRTogJzE2MSAtOFExMTEgLTggNzUgMTZUMzggODVRMzggOTUgNDggMTIxVDgwIDIxNFQxMjMgMzY4TDEyNCAzNzRRMTI2IDM4MSAxMjcgMzg2VDEzMiAzOTlUMTM5IDQxNFQxNDkgNDI4VDE2MiA0NDBUMTgwIDQ0OFQyMDMgNDUyUTIyNiA0NTIgMjQxIDQzOVQyNTcgNDA0UTI1NyAzODYgMjMwIDI5MFQxNzEgMTExUTE1NyA3MyAxNTcgNTdRMTU3IDQzIDE2NiA0M1EyMDkgNDMgMjU4IDY5VDMyMiAxNDRRMzI2IDE1NyAzMzAgMTU5VDM0OCAxNjJIMzU1SDM2NlEzODYgMTYyIDM4NiAxNDhRMzg2IDE0MyAzODMgMTMyVDM2NyAxMDBUMzM1IDYxUTMwMSAyNyAyNTMgMTBUMTYxIC04JyxcbiAgICAweDFENzNGOiAnMjU4IDQwNVEyNTggMzk0IDI1MSAzNjRUMjM3IDMwOFQyMzAgMjgxVDIzOCAyODRUMjcwIDMwNlQzMzAgMzQ5UTM2NSAzNzcgMzg5IDM5NFQ0NTAgNDI3VDUxOSA0NDRRNTQ1IDQ0NCA1NTkgNDMwVDU3NCAzOTFRNTc0IDM2MCA1NTEgMzM2VDQ5MSAzMTJRNDY5IDMxMiA0NTQgMzI2VDQzOSAzNjRRNDM5IDM3MiA0MzggMzcyUTQzMyAzNzIgMzk1IDM0NFQzMjAgMjg5VDI4MyAyNjBIMjg1UTI4NyAyNjAgMjkwIDI2MFQyOTcgMjU5UTQ5NSAyNDggNDk1IDE0NlE0OTUgMTMyIDQ5MSAxMTBUNDg2IDc0UTQ4NiA0MyA1MDUgNDNRNTIwIDQzIDUzMSA1M1E1NTkgNzIgNTc4IDE0MVE1ODIgMTU3IDU4NiAxNTlUNjExIDE2Mkg2MjJRNjQyIDE2MiA2NDIgMTQ4VDYyNyAxMDBUNTc4IDI5VDUwNCAtN0g0OTVRNDM1IC03IDM5OSAyMlQzNjMgOTZRMzYzIDExMSAzNjYgMTIyVDM2OSAxNDJRMzY5IDE1NSAzNjQgMTY1VDM0NyAxODJUMzI2IDE5M1QyOTggMjAwVDI2OSAyMDRUMjM4IDIwN1QyMTIgMjEwTDIxMSAyMDZMMTkwIDEyM0wxNjkgNDBRMTYxIDIyIDE0MiA3VDk4IC04VDU5IDdUNDUgMzlRNDUgNDggNjcgMTM5VDExMiAzMTdMMTM0IDQwNFExNDIgNDI0IDE2MSA0MzhUMjA0IDQ1MlEyMjYgNDUyIDI0MiA0NDBUMjU4IDQwNScsXG4gICAgMHgxRDc0MDogJzk1IC0xM1E3MCAtMTMgNTUgNFQ0MCA0MVE0MCA2NSA2MSA4OFE2NSA5MiAyMTAgMjA3VDM1NyAzMjJMMjM1IDYwMlEyMTcgNjQwIDE4NSA2NDNRMTgyIDY0MyAxNzggNjQ0VDE3MyA2NDVRMTYxIDY1MSAxNjEgNjY2UTE2MSA2NzcgMTY3IDY4NFQxODEgNjkyUTE4OSA2OTQgMjEyIDY5NFEzMzUgNjk0IDM1OCA2NjBRMzYyIDY1MyA1MDAgMzQwVDY0NyAxOFE2NTIgMTAgNjUyIDZRNjUyIC04IDYyMiAtOEg1ODlINTM4TDUyNiAtNVE1MDYgMSA1MDAgOFE0OTQgMTYgNDQ0IDEyOFE0NDIgMTMzIDQ0MCAxMzhMMzg3IDI1OUwyNjUgMTM0UTE1NiAyMCAxMzcgNFQ5NSAtMTMnLFxuICAgIDB4MUQ3NDE6ICcyOTQgLThRMjY1IC04IDI0NCAtNVQyMTMgMVQyMDEgNFEyMDAgNCAxOTIgLTMyVDE3MiAtMTExVDE1NSAtMTY4UTEzNCAtMjExIDg2IC0yMTFRNjIgLTIxMSA0OCAtMTk2VDM0IC0xNThRMzcgLTE0NCAxMDMgMTIzVDE3NCA0MDRRMTgyIDQyNCAyMDEgNDM4VDI0NCA0NTJRMjcxIDQ1MiAyODQgNDM2VDI5OCA0MDRRMjk4IDM5MiAyNjcgMjY5VDIzNSAxMTRRMjM1IDQzIDMwNSA0M1EzNDIgNDMgMzc1IDY4VDQxOCAxMTBRNDIwIDExMiA0NTUgMjUzVDQ5MiAzOTdRNTE0IDQ0NCA1NjIgNDQ0UTU4NyA0NDQgNjAxIDQyOVQ2MTUgMzk3UTYxNSAzODcgNTk5IDMyMFQ1NjMgMTc4VDU0MiA5M1E1NDAgODEgNTQwIDcyUTU0MCA0MiA1NTggNDJRNTgwIDQyIDU5NiA3NVE2MDYgOTQgNjE2IDEzNFE2MjEgMTU1IDYyNCAxNThUNjQ2IDE2Mkg2NTFINjYyUTY4MiAxNjIgNjgyIDE0OFE2ODEgMTQyIDY3OSAxMzJUNjY1IDk0VDY0MSA0N1Q2MDIgOVQ1NDggLThRNTIzIC04IDUwMiAtM1Q0NjggMTFUNDQ2IDI3VDQzMiA0MEw0MjkgNDZRMzY3IC04IDI5NCAtOCcsXG4gICAgMHgxRDc0MjogJzg4IDM4MlE3MCAzODIgNjUgMzg1VDU5IDQwMlQ2NCA0MjdUNzggNDQzUTc5IDQ0NCAxNTcgNDQ4VDI0NyA0NTJRMjU2IDQ1MiAyNjEgNDQ4VDI2NiA0NDBMMjY3IDQzN1EyNjcgNDMyIDIyMyAyNTJMMTc3IDcxTDE5MiA3N1EyOTMgMTE3IDM3MSAxOTlUNDgwIDM4OFE0ODkgNDI0IDUxMSA0MzhUNTU2IDQ1MlE1NzkgNDUyIDU5MyA0MzhUNjA4IDQwMlE2MDggMzc4IDU5MyAzNDBUNTQwIDI1MVQ0NDYgMTUyVDI5OSA2MlQ5NiAtMVE5MSAtMiA3OCAtMlEzOCAtMiAzOCAxNVEzOCAyMiA4MiAxOThMMTI3IDM3OVExMjQgMzgyIDg4IDM4MicsXG4gICAgMHgxRDc0MzogJzI4NyA2NDhRMjkxIDY3MSAyOTMgNjgwVDMwNSA3MDBUMzI5IDcxMVEzMzkgNzExIDM0NyA3MDVUMzU2IDY4N1EzNTYgNjgwIDM1MSA2NTNUMzQ1IDYxOVEzNDUgNjE1IDM0NiA2MTVRMzU4IDYxOCAzOTggNjE4UTQ5MCA2MTggNDkwIDU3MlE0OTAgNTUzIDQ3NiA1MzZUNDM0IDUxMlE0MTEgNTA4IDM3OCA1MDhIMzY2UTMzMiA1MDggMzA2IDUzNEwyOTggNTI1UTI3MSA0OTYgMjU0IDQ1NlQyMzcgMzc1UTIzNyAzMzYgMjQ0IDMzNlEyNzIgMzQ2IDMxOSAzNDZIMzI1UTM1NCAzNDYgMzcyIDM0NFQ0MDYgMzMxVDQyMiAzMDBRNDIyIDI1MiAzNTAgMjM4UTMzMiAyMzYgMzAzIDIzNlEyODYgMjM2IDI2OSAyMzhUMjQwIDI0MlQyMTggMjQ3VDIwMiAyNTJMMTk2IDI1NFExOTEgMjU0IDE3NCAyMzdUMTQxIDE5MVQxMjQgMTM5UTEyNCAxMDggMTUxIDkyVDI2NyA0NlEyODUgNDAgMjk1IDM3UTMwOCAzMyAzMzIgMjVUMzY2IDEzVDM5MiAzVDQxNSAtOFQ0MzIgLTIwVDQ0NSAtMzZUNDUxIC01NVQ0NTQgLTgwUTQ1NCAtMTE4IDQyNyAtMTUzVDM1OCAtMTk5UTM0OSAtMjAxIDMyNyAtMjAxUTMxMyAtMjAxIDI5OCAtMjAwVDI3MSAtMTk2VDI0NiAtMTkxVDIyNiAtMTg1VDIxMCAtMTgwVDIwMCAtMTc2TDE5NiAtMTc0UTE4NyAtMTcwIDE4NyAtMTU4VDE5NiAtMTM4VDIxNiAtMTMwUTIxNyAtMTMwIDI1NCAtMTQwVDMyOSAtMTUxUTM0OSAtMTUxIDM0OSAtMTM1UTM0OSAtMTI3IDM0MCAtMTIyVDI5MyAtMTA0UTI2MCAtOTMgMjM4IC04NVExMzAgLTQ4IDExNSAtNDFRNzEgLTE5IDQ3IDE1VDIzIDg4UTIzIDEyNiA0OCAxNzlUMTMwIDI3N0wxNDQgMjg4TDEzNiAyOTdROTkgMzM2IDk5IDM5MFE5OSA0NTYgMTQ4IDUxNFQyODUgNjAyVjYxOVEyODUgNjI0IDI4NiA2MzVUMjg3IDY0OFpNMzU1IDU2M1EzNjIgNTYwIDM3NiA1NThRNDI0IDU1OCA0MjMgNTY0UTQwNSA1NjcgMzkwIDU2N1EzNjkgNTY3IDM1NSA1NjNaTTI3OSAyOTJRMjk3IDI4NyAzMTUgMjg3UTM1NSAyODcgMzU1IDI5M1EzNTUgMjk2IDMyMSAyOTZRMzE2IDI5NiAzMDggMjk2TDMwMSAyOTVRMjk1IDI5NSAyODkgMjk0TDI3OSAyOTInLFxuICAgIDB4MUQ3NDQ6ICcyNTQgLThRMTkxIC04IDE0NiA5VDgwIDU0VDQ5IDExMVQzOSAxNjlRMzkgMjA2IDUzIDI0N1Q5NiAzMjlUMTc2IDQwMlQyOTIgNDQ2UTMxNyA0NTEgMzM2IDQ1MUwzNDQgNDUyUTM1MyA0NTIgMzU5IDQ1MlE0NTcgNDUyIDUxNiA0MDhUNTc2IDI3OVE1NzYgMTY5IDQ4OCA4MVQyNTQgLThaTTM0OSA0MDBRMzIxIDQwMCAyODcgMzg1VDIzMSAzMzhRMjA2IDMwMSAxODggMjI4VDE3MCAxMjZRMTcwIDk5IDE3OCA4M1ExOTggNDQgMjYwIDQ0UTM2NyA0NCA0MDkgMTU3UTQxOSAxODUgNDMyIDIzOFQ0NDUgMzE3UTQ0NSAzMzYgNDQzIDM0OFE0MzUgMzcyIDQxNiAzODRUMzg0IDM5OFQzNDkgNDAwJyxcbiAgICAweDFENzQ1OiAnNTUgMjg5SDQzUTIzIDI4OSAyMyAzMDNRMjMgMzA4IDMzIDMyMlExMTYgNDM0IDE5OSA0NDNRMjAwIDQ0NCA0MTggNDQ0UTU5MSA0NDQgNjE3IDQ0NFQ2NTIgNDM5UTY3NCA0MjYgNjc0IDQwMFE2NzQgMzc4IDY2MSAzNjBUNjI1IDMzNVE2MjEgMzM0IDU0OSAzMzNINDc5TDQ3NyAzMjFRNDc2IDMxMiA0NzYgMjc5UTQ3NiAyMTkgNDkxIDE3NFQ1MjEgMTA0VDUzNiA2NVE1MzYgMzggNTExIDE1VDQ1NyAtOFE0MDMgLTggMzg2IDk0UTM4NCAxMTAgMzg0IDEzOVEzODQgMTgxIDM5MSAyMjlUNDA2IDMwNEw0MTMgMzMxUTQxMyAzMzMgMzY1IDMzM0gzMTZMMzE1IDMyOVEzMTUgMzI4IDMxMiAzMTRUMzAxIDI3MlQyODggMjIwUTI3NCAxNjcgMjU4IDEwM1EyNDQgNDkgMjQwIDM4VDIyOCAxOFEyMjUgMTYgMjI0IDE0UTIwMCAtOCAxNzIgLThRMTQ2IC04IDEzMiA3VDExOCA0NFExMTggNTQgMTIxIDYxUTEyMiA2NSAxNDIgMTAyVDE5MCAxOTVUMjM1IDI5M1EyNTAgMzI5IDI1MCAzMzNRMTc3IDMzMyAxNjYgMzMyUTExNSAzMjggODggMzAxTDc3IDI5MEw1NSAyODknLFxuICAgIDB4MUQ3NDY6ICczMDcgLThRMjc3IC04IDI1MSAwVDIxNSAxNEwyMDUgMjBRMjAzIDE4IDE5MyAtMjVUMTcxIC0xMTRUMTU1IC0xNjhRMTM0IC0yMTEgODcgLTIxMVE2NCAtMjExIDQ5IC0xOThUMzQgLTE2MlEzNCAtMTU4IDEzNyAyNTRRMTUzIDI5OSAxNzkgMzM0VDIzMiAzOTBUMjc3IDQxOVQzMTEgNDM0UTM1NyA0NTEgNDAzIDQ1MVE0MzUgNDUxIDQ1NSA0NDlUNTA2IDQzNVQ1NjAgNDAwUTYwMyAzNTcgNjAzIDI4NVE2MDMgMTcyIDUyMCA4MlQzMDcgLThaTTQ3NCAzNDNRNDc0IDM2NCA0NTggMzgyVDQwOSA0MDBINDA2UTMzOSA0MDAgMjk5IDM0MVEyODEgMzEzIDI2NCAyNTdRMjYxIDI0OCAyNDIgMTcwVDIyMiA4OVEyMjIgODQgMjMwIDc0VDI2MCA1NFQzMDggNDNRMzM0IDQzIDM2NSA1N1Q0MTcgMTEwUTQzNyAxNDUgNDU2IDIyOFE0NzQgMjk4IDQ3NCAzMzJWMzQzJyxcbiAgICAweDFENzQ3OiAnMzMgMjA5UTMzIDI3NyA4MCAzMzRUMTk1IDQyMVQzMzAgNDUxSDM0NFE0MTAgNDUxIDQzOSA0MjlRNDU3IDQxNyA0NTcgNDAyUTQ1NyAzODYgNDQ1IDM3NVQ0MjAgMzYzUTQxNSAzNjMgNDA2IDM2OFQzODMgMzgzVDM1NCAzOThRMzQ3IDQwMCAzMzAgNDAwUTI1NiA0MDAgMTk2IDM2MVQxMzUgMjY1VjI1N1ExMzUgMjQyIDE0NyAyMjVUMTc0IDE5OUwzNTggMTA3UTQwMCA3NyA0MDAgMjhUMzYyIC02M1QyNzEgLTEwNVEyNTQgLTEwNSAyMjkgLTk5VDE5NSAtODZRMTg4IC04MiAxODggLTcxUTE4OCAtNTYgMTk3IC01MFQyMTYgLTQ0UTIyNSAtNDQgMjM3IC00OFQyNzAgLTUzSDI4MlEyOTMgLTQ0IDI5MyAtMzFRMjkzIC0xOSAyODMgLTEwUTI3OCAtNCAyMDAgMzNUMTE1IDc2UTc3IDk4IDU1IDEzM1QzMyAyMDknLFxuICAgIDB4MUQ3NDg6ICczNSAxNTFRMzUgMTkwIDUxIDIzNlQ5OSAzMjdUMTg0IDQwNFQzMDYgNDQzUTMwNyA0NDMgMzE2IDQ0M1QzNDIgNDQzVDM3OCA0NDRUNDI1IDQ0NFQ0NzYgNDQ0UTYwNiA0NDQgNjI2IDQ0NFQ2NTUgNDM5UTY3NyA0MjYgNjc3IDQwMFE2NzcgMzU4IDYzOSAzNDBRNjI1IDMzMyA1NjMgMzMzUTUxMCAzMzMgNTEwIDMzMVE1MTggMzE5IDUxOCAyNzJRNTE4IDE1NSA0MzcgNzRUMjI2IC04UTEyMyAtOCA3OSA0MVQzNSAxNTFaTTM5NiAyNzhRMzk2IDMxNCAzNzUgMzIzVDMwNSAzMzJRMjQ5IDMzMiAyMjIgMzEwVDE4MCAyNDNRMTcxIDIxOSAxNjIgMTc4VDE1MyAxMTZWMTEwUTE1MyA0MyAyMzQgNDNRMzQ3IDQzIDM4MiAxOTlRMzgzIDIwMyAzODMgMjA0UTM5NiAyNTUgMzk2IDI3OCcsXG4gICAgMHgxRDc0OTogJzU1IDI4OUg0M1EyMyAyODkgMjMgMzAzUTIzIDMwOCAzMyAzMjJRMTE2IDQzNCAxOTkgNDQzUTIwMCA0NDQgMzg2IDQ0NFE1NzEgNDQ0IDU3NyA0NDJRNTg4IDQ0MSA1OTkgNDMyVDYxMCA0MDJRNjEwIDM1OSA1NzIgMzQwUTU2MSAzMzUgNTQ3IDMzNFQ0NTIgMzMzSDM1M1YzMzFRMzUyIDMzMCAzNDIgMjYxVDMyMCAxMTlUMzA2IDQwUTMwMCAxOCAyODEgM1EyNTcgLTEzIDIzMyAtMTNRMjEwIC0xMyAxOTYgMFQxODEgMzVRMTgxIDQ0IDE4MiA0OFExODMgNTMgMjI5IDE4N1QyNzkgMzMxUTI3OSAzMzMgMjI4IDMzM0gyMDlRMTYzIDMzMyAxMzYgMzI4VDg4IDMwMUw3NyAyOTBMNTUgMjg5JyxcbiAgICAweDFENzRBOiAnMTg5IDM4OFExODkgMzk2IDE4NyAzOThUMTc2IDQwMVExNDQgMzk5IDEyMiAzNjlUODkgMzA0UTg0IDI4OCA4MSAyODVUNjEgMjgySDU1SDQ0UTI0IDI4MiAyNCAyOTZRMjQgMzA2IDM0IDMzMFQ2NCAzODJUMTE2IDQzMVQxODggNDUyUTIzMiA0NTIgMjcwIDQzMFQzMDggMzYxUTMwOCAzNDUgMjc1IDI1OFQyNDEgMTIzUTI0MSA0NCAzMzYgNDRIMzQ0UTM4MCA0NCA0MTUgNzNUNDc0IDE0MFQ1MTEgMjE0VDUyNiAyNjdRNTI2IDI4MCA1MTMgMjkyUTUwNSAzMDEgNDg2IDMxMVQ0NTYgMzMzVDQ0NCAzNjdRNDQ0IDQwMCA0NzEgNDI2VDUyOSA0NTNRNTU1IDQ1MyA1NzkgNDMxVDYwNCAzNThRNjA0IDMyNyA1OTIgMjcxVDU1NyAxNzJRNTUwIDE1NyA1NDEgMTQyVDUxMCA5N1Q0NjQgNDdUNDA0IDlUMzI4IC04UTI2NCAtOCAyMTkgNVQxNTQgNDFUMTI1IDg1VDExNyAxMzFRMTE3IDE4MiAxNTMgMjc3VDE4OSAzODgnLFxuICAgIDB4MUQ3NEI6ICcyMzggNFEyMzAgNSAyMTggOFQxNzQgMjZUMTE4IDU4VDczIDExMlQ1MyAxOTBRNTMgMjE5IDYwIDI0NlE3NyAzMTMgMTAzIDM2MlQxNDMgNDI2VDE2MyA0NDNRMTY1IDQ0NCAxODYgNDQ0UTIxNyA0NDQgMjE3IDQzMlEyMTcgNDI1IDE4OCAzOTJRMTU3IDM1MSAxMzcgMjkxVDExNiAyMDZRMTE2IDEyNyAyNjMgMTA5TDI3NiAxMDdMMjg4IDEzOVEzNDcgMzA0IDQxNCAzNzhUNTY2IDQ1MlE2MjEgNDQ5IDY2MiA0MTJUNzAzIDI4NlE2OTggMTY3IDU5OCA4MlQzNTcgLThIMzMyVi0xMVEzMzIgLTEyIDMyNyAtNDZUMzE3IC0xMTZUMzEwIC0xNTdRMzA2IC0xODAgMjg2IC0xOThUMjM0IC0yMTZRMjExIC0yMTYgMTk3IC0yMDNUMTgzIC0xNjhRMTgzIC0xNjAgMTg0IC0xNTVRMTg0IC0xNTIgMTk4IC0xMTJUMjI1IC0zNFQyMzggNFpNNjM3IDI2MFE2MzcgMzAzIDYwNyAzMjJUNTQxIDM0MVE1MDIgMzQxIDQ2NiAzMTlUNDA1IDI2NFEzNjggMjE4IDM1NiAxNTlRMzQ4IDExMSAzNDggMTA0UTM0OCAxMDMgMzYxIDEwM1E1MDIgMTAzIDU2OSAxNTJUNjM3IDI2MCcsXG4gICAgMHgxRDc0QzogJzU4IC0xOTRRMzIgLTE5NCAzMiAtMTY0UTMyIC0xNTMgNDYgLTEzOUwxNzUgLTEzUTI5NiAxMDQgMjk2IDEwNlEyNzEgMjMyIDIyNiAzMDhRMTY1IDQwMSAxNDEgNDAxUTEyOCA0MDEgMTE3IDM5MFQxMDAgMzY1UTk0IDM1MCA5MSAzNDlUNjkgMzQ2SDQ1UTM1IDM0OCAzNSAzNTlRMzUgMzgwIDYyIDQxMVQxMzMgNDUwUTE0MyA0NTIgMTY1IDQ1MlEyODYgNDUyIDMyOSA0MDJRMzQ3IDM3OSAzNjYgMzMzVDM5NCAyNTRUNDA0IDIxNVE0MDQgMjEzIDQwNSAyMTNRNDA1IDIxMiA0MjAgMjI3VDQ2MyAyNjhUNTIwIDMyNFE2MzcgNDM3IDY0MCA0MzhRNjQ3IDQ0NCA2NjEgNDQ0UTY2NyA0NDQgNjc2IDQzOFQ2ODUgNDE5UTY4NSA0MDUgNjcwIDM4OVQ1NDkgMjcxTDQyMCAxNDVRNDMzIDg1IDQ0NCA1M1E0NjYgLTI1IDUwOSAtODhUNTc1IC0xNTFRNTkwIC0xNTEgNjAwIC0xNDBUNjE3IC0xMTRUNjI2IC05OFE2MjkgLTk2IDY1MCAtOTZINjU1UTY4MSAtOTYgNjgxIC0xMDhRNjgxIC0xMTQgNjc5IC0xMTlRNjcwIC0xNDggNjQ2IC0xNjlUNTkxIC0xOTlRNTgxIC0yMDEgNTUwIC0yMDFRNDIyIC0yMDEgMzgxIC0xNDNRMzQ1IC04OCAzMTYgMjBMMzExIDM5TDIzMCAtNDBRMTQ0IC0xMjYgMTE0IC0xNTNRODUgLTE4MiA3NyAtMTg4VDU4IC0xOTQnLFxuICAgIDB4MUQ3NEQ6ICcyNDQgMTQxUTI0NCAxMTcgMjU0IDk4VDI3NyA3MFQzMDUgNTVUMzI5IDQ4VDM0MiA0N0wzNDQgNDhMNDI0IDM2NlE1MDEgNjc4IDUwNSA2ODZRNTA4IDY5MSA1MTIgNjkyVDUzMyA2OTRUNTU1IDY5M1Q1NjIgNjg4VDU2NSA2ODNRNTY1IDY3OCA0ODYgMzYyVDQwNiA0NVE0MDYgNDMgNDE1IDQzUTQ2NyA0OSA1MTQgNzhUNTkwIDE0M1Q2MzYgMjEzVDY1MyAyNjZRNjUzIDI4MiA2NDEgMjkzVDYxMyAzMTFUNTg1IDMzMlQ1NzIgMzY3UTU3MiAzOTcgNTk4IDQyNVQ2NTcgNDUzUTY4NCA0NTMgNzA4IDQzMFQ3MzIgMzU4UTczMiAzMzAgNzIzIDI4N1Q3MDYgMjI1UTY3MSAxMjQgNTc4IDU4VDQwMSAtOEgzOTNMMzcwIC0xMDFRMzQ2IC0xOTYgMzQ1IC0xOTdRMzQwIC0yMDIgMzE2IC0yMDJIMzA2UTI4NiAtMjAyIDI4NiAtMTg4UTI4NiAtMTg3IDI5NiAtMTQ0VDMxOCAtNTdUMzMxIC04UTMzMSAtNiAzMjggLTZRMjkwIC02IDIzMyAxMVQxNDggNjJRMTE5IDk3IDExOSAxNDZRMTE5IDE4MSAxNTQgMjc1VDE5MCAzODhRMTkwIDQwMSAxODEgNDAxUTE1NCA0MDEgMTI5IDM3NVQ5MCAzMDZRODUgMjg4IDgxIDI4NVQ2MSAyODJINTVINDRRMjQgMjgyIDI0IDI5NlEyNCAzMDYgMzQgMzI5VDY0IDM4MVQxMTYgNDMxVDE4OSA0NTJRMjM3IDQ1MiAyNzMgNDI4VDMwOSAzNjJRMzA5IDM0MyAyNzcgMjYwVDI0NCAxNDEnLFxuICAgIDB4MUQ3NEU6ICc1MzIgMzY3UTUzMiAzOTkgNTU5IDQyNlQ2MTggNDUzUTY0NSA0NTMgNjY4IDQzMFQ2OTEgMzU3UTY5MSAzMTkgNjc3IDI2MVQ2NDkgMTcxUTY0MCAxNDkgNjI2IDEyNVQ1ODYgNjhUNTIxIDE0VDQzOCAtN1E0MDEgLTcgMzcyIDdUMzMzIDMwVDMxMSA1N1EyNDYgLTggMTY1IC04UTExOSAtOCA4MiAxOVQzMCAxMDJRMjQgMTI2IDI0IDE2M1YxNzhRMjQgMjEwIDM3IDI1NVE2MSAzNDYgMTE4IDQyNFExNDEgNDUxIDE2MSA0NTFRMTc0IDQ1MSAxODQgNDQzVDE5NCA0MTlRMTk0IDQwMiAxNzkgMzg3UTkxIDI3MyA5MSAyMDZROTEgMTU5IDEyMiAxMzhUMTg5IDExN1QyODEgMTQ1VjE3M1EyODMgMjIzIDI5NCAyNTNRMzA0IDI3NiAzMjMgMjg5VDM2NCAzMDNRMzg2IDMwMyA0MDAgMjg3VDQxNSAyNTBRNDE1IDIxOSAzODUgMTU3TDM3OCAxNDRRMzc4IDE0MiAzODggMTM2VDQxOSAxMjRUNDYyIDExN1E1MjIgMTE3IDU2NiAxNjVUNjEwIDI1NVE2MTAgMjg4IDU2MSAzMjBRNTMyIDMzNyA1MzIgMzY3JyxcbiAgICAweDFENzRGOiAnMjMwIDQ3NVEyMDIgNDc1IDE4OSA0OTJUMTc1IDUyNlQxODYgNTcwVDIyMSA2MzFUMjg4IDY4N1QzODkgNzEwUTQzMCA3MTAgNDM4IDcwOVE0OTUgNzAxIDUzNyA2NzlUNjAxIDYyOVQ2MzcgNTY4VDY1MyA1MDlUNjU3IDQ1OVE2NTcgNDA5IDY0MCAzNDFRNjE3IDI0OCA1ODEgMTgwVDUwNyA3NVQ0MjQgMTZUMzQ4IC0xMVQyODIgLTE3UTE3MSAtMTcgMTEzIDM3UTYwIDg4IDYwIDE1OVE2MCAxOTIgNzEgMjMxUTk2IDMzNiAxODQgNDAyUTI2NCA0NjIgMzY2IDQ2MlE0MDcgNDYyIDQzOSA0NDhUNDk3IDM4OUw1MDIgMzgwUTUwMyAzODEgNTA4IDQwM1Q1MTkgNDYzVDUyNSA1MzFRNTIzIDU4MCA0OTkgNjEwVDQ0NyA2NDhUMzg3IDY1N1EzMjQgNjU3IDI4MyA2MTZRMjcxIDYwNCAyNzYgNjA0UTI3OSA2MDQgMjg2IDYwMFQzMDIgNTgzVDMxMSA1NTVRMzExIDUyMyAyODcgNDk5VDIzMCA0NzVaTTE5NiAxMTBRMTk2IDQxIDI4NyA0MVEzNTEgNDEgMzk4IDg4UTQyMiAxMTEgNDM3IDE1MVE0NzMgMjQzIDQ3MyAyOThRNDczIDM4NiA0MDkgNDA5UTQwOCA0MDkgMzgzIDQxMVEzMTYgNDExIDI3OCAzNzNRMjY1IDM2MCAyNTkgMzUxVDI0MSAzMTFUMjE3IDIyNlExOTYgMTQzIDE5NiAxMTAnLFxuICAgIDB4MUQ3NTA6ICc0MTUgODlRNDIzIDg5IDQyOSA3NFQ0MzYgNDZRNDM2IDQzIDQzNCAzOVE0MzIgMzYgNDIwIDI5VDM4MCAxMVQzMjIgLTVRMzExIC03IDI4MSAtN1EyMTYgLTcgMTY4IDEwVDk0IDU0VDU2IDExMFQ0NCAxNjdWMTgxUTQ0IDI2MiA5NCAzMjlRMTA0IDM0MyAxMTkgMzU3VDE2MiAzOTFUMjM0IDQyNVQzMjcgNDQzUTMyOCA0NDMgMzQ4IDQ0M1QzODMgNDQ0UTQzNCA0NDQgNDQyIDQzOFE0NTAgNDMwIDQ1MCA0MTZRNDQ2IDM5MiA0MjQgMzgzTDM3NiAzODJRMzA2IDM4MSAyNzggMzY5UTIzMCAzNDkgMjA4IDI5NFExOTkgMjc0IDE5OSAyNjhRMTk5IDI2NyAyOTEgMjY3UTMwNSAyNjcgMzI1IDI2N1QzNTMgMjY4UTM4MyAyNjggMzk0IDI2M1Q0MDYgMjQxUTQwNiAyMTQgMzgwIDIwNlEzNzUgMjA1IDI3OSAyMDVUMTgzIDIwM1ExNzQgMTc2IDE3NCAxNDBRMTc0IDg3IDIwOCA2NVQyOTIgNDNRMjk1IDQzIDMwMCA0M1QzMDcgNDRRMzM3IDQ5IDM3MiA2OVQ0MTUgODknLFxuICAgIDB4MUQ3NTE6ICcxMTQgMTMyUTExNCAxNTMgMTQwIDI1M1QxNjYgMzcyUTE2NiA0MDIgMTQ4IDQwMlExMjYgNDAyIDExMCAzNjlRMTAwIDM1MCA5MCAzMTBRODUgMjg5IDgyIDI4NlQ2MCAyODJINTVINDRRMjQgMjgyIDI0IDI5NlEyNSAzMDIgMjcgMzEyVDQxIDM1MFQ2NSAzOTdUMTA0IDQzNVQxNTggNDUyUTE4NCA0NTIgMjExIDQ0NVQyNjMgNDE0VDI4OCAzNTRWMzM5TDI2NSAyNDVRMjM3IDEzNCAyMzcgMTE4VjEwN1YxMDJRMjM3IDg3IDIzOSA3N1QyNTcgNTZUMzAwIDQzUTM5NSA0MyA0NTUgMjU0UTQ3OSAzNDYgNDc5IDM0N0w0NjAgMzU0UTI5NCA0MDggMjk0IDUyOFEyOTQgNjA2IDM1MCA2NTNUNDY0IDcwMVE1MzYgNzAxIDU3OSA2NTlRNjM0IDYwMSA2MzQgNDkxUTYzNCA0NjggNjMwIDQzOFQ2MjMgMzg4TDYyMCAzNzBRNjI0IDM3MCA2MzEgMzY5VDY0NyAzNjRUNjU2IDM1MlE2NTYgMzQ3IDY1MyAzMzVRNjQ3IDMxNyA2NDIgMzE2UTY0MCAzMTUgNjM3IDMxNVE2MzUgMzE1IDYxOSAzMTdRNjA2IDMxOSA2MDUgMzE2UTYwNSAzMTUgNjAzIDMwOFE1ODcgMjQ4IDU1MCAxNzdUNDU3IDU3UTM3OSAtOCAyOTMgLThRMTkyIC04IDE1MyAyM1QxMTQgMTE2VjEzMlpNNTE5IDU2NlE1MTkgNjAwIDUwNyA2MjVUNDY0IDY1MVE0MjUgNjUxIDM5MSA2MTdUMzU2IDUyOVEzNTYgNTAxIDM3MCA0NzhUNDA0IDQ0MVQ0NDMgNDE3VDQ3NyA0MDRMNDkxIDQwMFE0OTMgNDAwIDQ5OSA0MjhUNTEyIDQ5N1Q1MTkgNTY2JyxcbiAgICAweDFENzUyOiAnMjI4IDMyNVExNzAgMzIyIDE1NiAzMTZUMTI3IDMwOVExMDggMzA5IDEwNCAzMTRROTkgMzE5IDk5IDMyMlQxMDggMzQxUTEyNSAzNzYgMTcxIDQwMFQyNjggNDI1SDI3MVEzMDIgNDI1IDMxOSAzOTZRMzI4IDM3NyAzMjggMzU4UTMyOCAzMzIgMzI0IDMxNFEzMTEgMjcwIDI4NiAyMjFRMjc0IDE5NCAyNzQgMTkySDI3NVEzMzkgMjM0IDQ4NCAzMjVUNjM5IDQyMVE2NjkgNDM0IDY5MSA0MzRUNzIzIDQyNVQ3MzQgNDA2UTczNCAzOTQgNzE5IDM4MVE3MTUgMzc2IDY0NCAzMzBMNTc1IDI4N0w1NjYgMjY3UTU0MyAyMzMgNTI2IDE3NlE1MjAgMTYwIDUxNSAxNDNUNTA4IDExNVQ1MDYgMTA1UTUwNiAxMDMgNTMzIDEwM1E1ODUgMTAzIDYwNyAxMTBUNjQxIDExOFE2NzAgMTE4IDY3MCAxMDdRNjcwIDEwMCA2NjEgODVRNjQzIDUwIDU5OCAyN1Q1MDQgM1E0NjUgMyA0NTAgMzZRNDQxIDUxIDQ0MSA3M1E0NDEgODQgNDQ0IDk2UTQ1MiAxNDYgNDg0IDIwNUw0OTcgMjM2TDMyNCAxMjVRMTQzIDEyIDEzNSAxMFExMDMgLTYgNzcgLTZRNjEgLTYgNDkgMlQzNyAyMVEzNyAzNiA0OSA0NlQxMjQgOTZMMTk1IDE0MUwyMDQgMTU2UTIxOSAxNzkgMjQzIDI0OFQyNjQgMzIzUTI2NCAzMjUgMjI4IDMyNScsXG4gICAgMHgxRDc1MzogJzI3NCAtN1EyMzIgLTQgMTk1IDdUMTI1IDM4VDcxIDk0VDUxIDE3NlYxOTBRNTEgMjEzIDYwIDI0MlQ5NSAzMDdUMTU2IDM3M1QyNTUgNDI1VDM5MyA0NTFMMzk3IDQ1Mkw0MjcgNTY4UTQzNCA1OTcgNDQzIDYzNlE0NTIgNjc3IDQ1NiA2ODVUNDcyIDY5NEg0ODZINDk1UTUxNyA2OTQgNTE3IDY4MEw1MTQgNjY1UTUxMCA2NTAgNTAzIDYyMVQ0ODkgNTY0TDQ2MCA0NTFINDY5UTUyNyA0NDcgNTc0IDQzMFQ2NTcgMzcwVDY5MyAyNjZRNjkzIDE2MyA1OTkgODJUMzUwIC03SDM0NkwzMjIgLTEwMFEzMDEgLTE5MCAyOTUgLTE5N1EyOTEgLTIwMiAyODMgLTIwMkgyNjlIMjU4UTIzOCAtMjAyIDIzOCAtMTg4UTIzOCAtMTg2IDI2MCAtOTZMMjgzIC03SDI3NFpNNDQ5IDQwMFE0NDggNDAwIDQwNCAyMjVUMzU5IDQ3VDM2NiA0NVE0NjQgNTUgNTE2IDExOVE1NDIgMTQ5IDU1OCAxOTlUNTc1IDI5NVE1NzUgMzg3IDQ2MiAzOThMNDQ5IDQwMFpNMzg0IDM5OFEzODQgMzk5IDM4MSAzOTlRMzUwIDM5OSAyOTggMzc4VDIxNCAzMDhRMTY4IDIzNiAxNjggMTQ5UTE2OCA2OCAyNTkgNDlRMjgyIDQ0IDI5NCA0NEgyOTVMMzg0IDM5OCcsXG4gICAgMHgxRDc1NDogJzM3MSAtMTY4UTM1NyAtMTY4IDMyMyAtMTcxVDI0NSAtMTc1UTE0MyAtMTc1IDEwOSAtMTUwVDc1IC02NlE3NSAtNSAxMDAgMTA4VDEzNyAyNTRRMTUzIDI5OSAxNzkgMzM0VDIzMiAzOTBUMjc3IDQxOVQzMTEgNDM0UTM1NyA0NTEgNDAzIDQ1MVE0MzUgNDUxIDQ1NSA0NDlUNTA2IDQzNVQ1NjAgNDAwUTYwMyAzNTcgNjAzIDI4MlE2MDMgMjEzIDU2OSAxNDhUNDY1IDM4VDMwNCAtOFEyNzMgLTggMjQ3IC0yVDIwNCAxNFQxNzYgMzFUMTU5IDQ2VDE1MiA1M1ExNTIgNTIgMTQ4IDI3VDE0NCAtMTZRMTQ0IC0zNiAxNTAgLTQ0VDE4OSAtNThUMjkzIC02NFE0MDUgLTY1IDQzMiAtNzVRNDY2IC04OCA0NjYgLTEyN1E0NjYgLTE0MCA0NTkgLTE3MlE0NTUgLTE4OCA0NTEgLTE5MVQ0MjYgLTE5NEg0MjBRNDA1IC0xOTQgNDAwIC0xOTFUMzk1IC0xNzZRMzk2IC0xNzAgMzk0IC0xNjlUMzc4IC0xNjhRMzczIC0xNjggMzcxIC0xNjhaTTIzNiAxMTZRMjM2IDc3IDI1OCA2MFQzMTEgNDNRMzY5IDQzIDQwNyA5NFE0MjkgMTIzIDQ1MSAyMDZUNDc0IDMzMVE0NzQgNDAwIDQwOSA0MDBINDA2UTMzOSA0MDAgMjk5IDM0MVEyNzYgMzA1IDI1NiAyMjdUMjM2IDExNicsXG4gICAgMHgxRDc1NTogJzU1IDI4OUg0M1EyMyAyODkgMjMgMzAzUTIzIDMwOCAzMyAzMjJRMTE2IDQzNCAxOTkgNDQzUTIwMCA0NDQgNTYyIDQ0NFE5MjIgNDQ0IDkyOCA0NDJROTYxIDQzNCA5NjEgNDAwUTk2MSAzNzYgOTQ0IDM1NVQ4ODYgMzMzSDg3MFE4NzIgMzIyIDg3MiAyOTVWMjc5UTg3MiAyMzAgODQyIDE2NVQ3NTEgNDZUNjE4IC04UTU4MSAtOCA1NTQgNlQ1MTMgNDVUNDk0IDg0VDQ4NCAxMTlRNDg0IDEyMSA0NzggMTE0UTQ3NyAxMTMgNDc2IDExMVEzODQgLTcgMjY4IC03SDI2NVEyNTEgLTcgMjM3IC00VDE5OSAxMVQxNjIgNTRUMTQ3IDEzMlExNDcgMTQ5IDE0OSAxNjZUMTU1IDE5OFQxNjUgMjI5VDE3NiAyNTZUMTg5IDI4MVQyMDAgMzAxVDIxMSAzMTlUMjIwIDMzM0gxOTlRMTIwIDMzMyA4OCAzMDFMNzcgMjkwTDU1IDI4OVpNNjM5IDEwM1E2NzQgMTAzIDcxMiAxMjJUNzgwIDE4OFQ4MTEgMjk1UTgxMSAzMTggODA4IDMzMFYzMzNIMjg5UTI3NCAzMTggMjQ0IDI2M1QyMTQgMTY5UTIxNCAxMzMgMjM2IDExOFQyODggMTAzUTM1MSAxMDMgNDEyIDE1M1Q0OTQgMjc4UTQ5NyAyOTAgNTAyIDI5MlQ1MjkgMjk1UTU0NiAyOTUgNTUxIDI5M1Q1NTYgMjgzUTU1NiAyODEgNTUzIDI2MFQ1NTAgMjE4UTU1MCAxNTMgNTc2IDEyOFQ2MzkgMTAzJyxcbiAgICAweDFENzU2OiAnMTEwIDBIODZRNDIgMCA0MiAyN1E0MiAzNyAxNDggMzUwVDI1OCA2NjdRMjY5IDY4NyAyOTEgNjkyUTI5NSA2OTQgMzY2IDY5NEgzOTlRNDMyIDY5NCA0NDggNjg5VDQ3NCA2NjdRNDc3IDY2MyA1ODMgMzUwVDY5MCAyN1E2OTAgMCA2NDIgMEg2MTdINTkyUTU4MiAwIDU3NSAxVDU2MSAyVDU0OSA2VDU0MSAxMVQ1MzMgMThUNTI3IDI2VDUyMiAzN1Q1MTcgNDlUNTEyIDY0VDUwNiA4MUw0OTAgMTMwSDIyNVEyMjUgMTI4IDIwOCA3OVQxODkgMjdRMTg1IDE5IDE4MCAxNFQxNzAgN1QxNTYgM1QxNDMgMVQxMjcgMFQxMTAgMFpNNDM5IDI3OVEzNTkgNTI0IDM1OSA1NDdMMzU3IDU1NUwzNTUgNTQzUTM0NyA1MDMgMjcwIDI2M0wyNTkgMjMxSDM1N1E0NTUgMjMxIDQ1NSAyMzJMNDM5IDI3OScsXG4gICAgMHgxRDc1NzogJzExOSAxUTk4IDUgOTIgMjhWNjY3UTk4IDY4NiAxMTggNjkzUTEyMSA2OTQgMjcyIDY5NEgyODlIMzQ2UTQzOSA2OTQgNTAwIDY4MVQ2MDAgNjI1UTY0MCA1ODAgNjQwIDUxM1E2NDAgNDUxIDYwMSA0MTRUNTA0IDM2NEw1MTggMzYxUTU2OCAzNTEgNjAyIDMyOVQ2NDkgMjgwVDY2NiAyMzVUNjcxIDE5N1E2NzEgMTcyIDY2NSAxNDdUNjQyIDkxVDU4NiAzN1Q0ODggNVE0NTYgMSAyODIgMUgxMTlaTTQ4OSA1MDlRNDg5IDUzMiA0NzkgNTQ4VDQ1MCA1NzNUNDIxIDU4NVQzOTQgNTkxUTM4NyA1OTIgMzE1IDU5M0gyNDdWNDA0SDI5OEgzMjVRNDMyIDQwNCA0NjYgNDQ0UTQ4OSA0NzAgNDg5IDUwOVpNNTE3IDE5NFE1MTcgMjM1IDUwMiAyNjFUNDU4IDI5OVQ0MDcgMzEzVDM1MyAzMTdIMzI5SDMyMkgyNDdWMTAxSDMxOUgzNTdRMzg3IDEwMSA0MDcgMTAzVDQ1MiAxMTFUNDkyIDEzM1Q1MTQgMTcxUTUxNiAxNzYgNTE3IDE5NCcsXG4gICAgMHgxRDc1ODogJzkyIDY2NFE5OCA2ODMgMTE4IDY5MFExMjEgNjkxIDMxMiA2OTFUNTA4IDY4OVE1MzQgNjgyIDUzNCA2NDRWNjMyVjYxOFE1MzQgNTgyIDUwOCA1NzNMNTAyIDU3MlE0OTYgNTcyIDQ4OSA1NzJRNDg2IDU3MiA0NjMgNTcyVDQxNiA1NzNRMzMzIDU3MyAyOTEgNTc1SDI1M1YzMDNRMjUzIDMxIDI1MSAyNVEyNDIgMCAxOTkgMEgxNzBMMTE5IDFROTkgNyA5MiAyOFY2NjQnLFxuICAgIDB4MUQ3NTk6ICczODEgNjkyUTM4NiA2OTQgNDU4IDY5NFE1MTYgNjk0IDUyNyA2OTNUNTQ5IDY4N1E1NjQgNjgwIDU3NSA2NjNRNTc2IDY1OCA3MTUgMzQ5VDg1NiAyN1E4NTYgNiA4MzggMUg4MjZRODE1IDEgNzk1IDFUNzQ3IDFUNjg2IDFUNjE2IDBUNTM5IDBUNDU4IDBUMzc4IDBUMzAwIDBUMjMwIDBUMTY5IDFUMTIyIDFUOTAgMUg3OFE2MCA2IDYwIDI3UTYyIDM4IDIwMSAzNDlUMzQxIDY2M1EzNTYgNjg3IDM4MSA2OTJaTTYyNyAxNDhRNjI2IDE0OSA1ODEgMjUwVDQ5MiA0NTNMNDQ3IDU1NFE0NDcgNTUzIDQ0NiA1NTJRNDQ0IDU0NiAzMjYgMjc4TDI2OCAxNDhRMjY4IDE0NyA0NDggMTQ3UTYyNyAxNDcgNjI3IDE0OCcsXG4gICAgMHgxRDc1QTogJzI3NyAxMjJRMjgwIDEyMiAzODAgMTIzVDU0NCAxMjVRNTUyIDEyNSA1NTcgMTI1VDU2NSAxMjRUNTY5IDEyNFE1OTUgMTE1IDU5NSA3NVY2MlY0N1E1OTUgOSA1NjkgMlE1NjQgMCAzNDEgMEwxMTkgMVE5OSA3IDkyIDI4VjY2NFE5OCA2ODMgMTE4IDY5MFExMjEgNjkxIDMzNSA2OTFUNTU0IDY4OVE1ODAgNjgyIDU4MCA2NDRWNjMyVjYxOFE1ODAgNTgyIDU1NCA1NzNRNTUzIDU3MyA1NTEgNTczVDU0MiA1NzJUNTI3IDU3MlE0NjQgNTcyIDM2NCA1NzNUMjYwIDU3NUgyNTNWNDEySDM4NUg0NTlRNTI0IDQxMiA1MzYgNDA0VDU0OSAzNTdRNTQ5IDM0MSA1NDkgMzM0VDU0MiAzMThUNTIzIDMwNVE1MTggMzAzIDM4NSAzMDNIMjUzVjEyMkgyNzcnLFxuICAgIDB4MUQ3NUI6ICc0MTEgNTg0UTI0MyA1ODEgMTMxIDU4MVExMjIgNTgxIDExNiA1ODFUMTA2IDU4MlQxMDIgNTgyUTg0IDU4OSA4MCA2MDBUNzYgNjQwTDc3IDY2N1E4MyA2ODYgMTAzIDY5M1ExMDYgNjk0IDM0MyA2OTRRNTc5IDY5NCA1ODQgNjkyUTU5MiA2OTEgNTk5IDY4NFQ2MDkgNjY4UTYxMCA2NjUgNjEwIDY0NlE2MTAgNjE0IDYwOCA2MDhRNjA1IDYwMyA0MzQgMzYxTDI2MSAxMTZRMzQwIDExNyA0MDIgMTE4VDQ5MCAxMTlUNTMzIDEyMFQ1NjAgMTIwSDU3MlE2MDUgMTIwIDYxNCA5NVE2MTYgODkgNjE2IDYwVjQ2UTYxNiA5IDU5MCAyUTU4NSAwIDMzOSAwUTkyIDAgODcgMlE3OSAzIDcyIDEwVDYyIDI2UTYxIDI5IDYxIDQ5UTYxIDg0IDYzIDkwUTY1IDk0IDE1MiAyMTdUMzI1IDQ2MVQ0MTEgNTg0JyxcbiAgICAweDFENzVDOiAnOTIgNjY3UTEwMSA2OTQgMTQzIDY5NEgxNzJIMTk4UTI0NCA2OTQgMjUxIDY2OVEyNTMgNjYzIDI1MyA1MzlWNDE1SDU0MFY1MzlRNTQwIDU1OCA1NDAgNTg1VDUzOSA2MjFRNTM5IDY3MyA1NTAgNjgzVDYxMSA2OTRINjIxSDY0NlE2NzEgNjk0IDY4MyA2OTBUNzAwIDY2OVE3MDIgNjYzIDcwMiAzNDdUNzAwIDI1UTY5NiA5IDY4NCA1VDY0NiAwSDYyMUg2MDZRNTYwIDAgNTUwIDExVDUzOSA3NlE1MzkgODUgNTM5IDExNlQ1NDAgMTY5VjMwNkgyNTNWMTY5UTI1MyAxNDcgMjUzIDExNlQyNTQgNzVRMjU0IDIzIDI0NSAxMlQxOTQgMEgxNzBMMTE5IDFROTkgNyA5MiAyOFY2NjcnLFxuICAgIDB4MUQ3NUQ6ICc2MiAzNDBRNjIgNzE2IDQyNSA3MTZRNTExIDcxNiA1NzYgNjk2VDY4MSA2NDJUNzQ3IDU1OVQ3ODMgNDU4VDc5MyAzNDFRNzkzIDI2NCA3NzcgMjAzVDcyMSA4OVQ2MDggN1Q0MjggLTIyUTYyIC0yMiA2MiAzNDBaTTYzOCAzMzNRNjM4IDM2NSA2MzcgMzg3VDYzMiA0NDFUNjIxIDQ5NVQ2MDAgNTQyVDU2NyA1ODNUNTE4IDYxMVQ0NTEgNjI4UTQ0MyA2MjkgNDI3IDYyOVE0MDIgNjI5IDM3OCA2MjRUMzI3IDYwOFQyNzYgNTcxVDI0MCA1MTFRMjE3IDQ1MyAyMTcgMzQ1UTIxNyAyNTQgMjMxIDIwNFQyNzkgMTIwUTMzMyA2OSA0MjggNjlRNTIyIDY5IDU3NiAxMjBRNjM4IDE4MyA2MzggMzMzWk0yNzkgMzQ5VjM3M1EyNzkgNDEzIDMwNSA0MjBRMzA5IDQyMiA0MjcgNDIySDQ4N1E1NTAgNDIyIDU2MyA0MTRUNTc2IDM2OVYzNDlRNTc2IDM0NSA1NzYgMzM3VDU3NyAzMjRRNTc3IDI4NCA1NTAgMjc3UTU0NSAyNzUgNDI4IDI3NUgzNjlRMzA2IDI3NSAyOTMgMjgzVDI3OSAzMjlWMzQ5JyxcbiAgICAweDFENzVFOiAnODUgNjY3UTk0IDY5NCAxMzYgNjk0SDE2NUgxOTFRMjM3IDY5NCAyNDQgNjY5UTI0NiA2NjMgMjQ2IDM0N1QyNDQgMjVRMjM1IDAgMTkyIDBIMTYzTDExMiAxUTkyIDcgODUgMjhWNjY3JyxcbiAgICAweDFENzVGOiAnOTIgNjY3UTEwMSA2OTQgMTM5IDY5NEgxNjNIMTg2UTIyNSA2OTQgMjM0IDY3MVEyMzYgNjYzIDIzNiA1MjlMMjM3IDM5Mkw1MzMgNjgyUTU1MCA2OTQgNTkwIDY5NEg2MjNINjgxUTY5NSA2ODAgNjk1IDY3MlE2OTUgNjcwIDY5MyA2NjRRNjg4IDY1NyA1NjEgNTMzTDQzMSA0MDVMNjk4IDMzUTcwMSAyOCA3MDEgMjNRNzAxIDcgNjgzIDBINjI2SDYwNFE1NzEgMCA1NjQgMlQ1NDUgMTNRNTQ0IDE0IDUzMCAzM1Q0ODkgOTBUNDM3IDE2MkwzMzIgMzA3UTMzMSAzMDcgMjg0IDI2MEwyMzYgMjE0VjEyMlY2NVEyMzYgMzIgMjMxIDE5VDIxMCAyUTIwNSAwIDE2MSAwTDExOSAxUTk5IDcgOTIgMjhWNjY3JyxcbiAgICAweDFENzYwOiAnMTA2IDBIODNRNDEgMCA0MSAyOFE0MSAzOSAxMzMgMzQ5VDIyOSA2NjdRMjQyIDY5NCAyOTYgNjk0SDMzNUgzNzVRNDAzIDY5NCA0MTggNjg5VDQ0MiA2NjdRNDQ1IDY2MCA1MzcgMzUwVDYzMCAyOFE2MzAgMTEgNjE5IDZUNTg0IDBINTU1SDUyNlE0NzggMCA0NjUgMjdRNDYyIDMyIDQzMSAxMzZUMzY2IDM3MlQzMjUgNTU1VjU0NlEzMjAgNTAzIDI4NyAzNzZUMjIyIDE0MVQxODYgMjdRMTg0IDIyIDE3NyAxNVQxNjUgNlExNTQgMCAxMDYgMCcsXG4gICAgMHgxRDc2MTogJzkyIDY2N1E5OCA2ODQgMTA5IDY4OVQxNDYgNjk1UTE1MiA2OTUgMTY3IDY5NVQxOTIgNjk0UTIwMCA2OTQgMjE0IDY5NFQyMzQgNjk1UTI5MSA2OTUgMzA1IDY2NFEzMTMgNjUxIDQwMCA0MTlUNDg3IDE2NVE0ODcgMTYyIDQ4OCAxNjJUNDg5IDE2NVE0ODkgMTg3IDU3NCA0MTNUNjcxIDY2NFE2NzkgNjgwIDY5NSA2ODhRNzA4IDY5NCA3ODUgNjk0SDgyOFE4NTUgNjk0IDg2NyA2ODlUODg0IDY2OVE4ODYgNjYzIDg4NiAzNDdUODg0IDI1UTg3NiAwIDgzMiAwSDgxN0g4MDJRNzU4IDAgNzUwIDI1UTc0OCAzMSA3NDggMjkzVjU1NUw3NDYgNTQ0UTczNyA1MDkgNjkyIDM4NlQ2MDYgMTYwVDU2NCA1MlE1NDggMjIgNTAyIDIySDQ4N0g0NzJRNDIzIDIyIDQxMCA1MlE0MDcgNTkgMzY3IDE2MFQyODMgMzg1VDIzMSA1NDZMMjMwIDU0OFEyMjkgNTQ4IDIyOSAyOTNRMjI5IDMxIDIyNyAyNVEyMjIgOSAyMTEgNVQxNzYgMEgxNThMMTE5IDFROTkgNyA5MiAyOFY2NjcnLFxuICAgIDB4MUQ3NjI6ICc5MiA2NjdROTggNjg0IDEwOSA2ODlUMTQ2IDY5NEgxODVRMjczIDY5NCAyNzkgNjkyUTMwMSA2ODkgMzE1IDY2OVEzMjIgNjYwIDQxOSA0NTNMNTU0IDE2M0w1NjIgMTQzUTU2NCAxNDMgNTY0IDQwMVE1NjQgNjYzIDU2NiA2NjlRNTc0IDY5NCA2MTggNjk0SDYzM0g2NDhRNjkyIDY5NCA3MDAgNjY5UTcwMiA2NjMgNzAyIDM0N1Q3MDAgMjVRNjk2IDEwIDY4MyA1VDY0MiAwSDU5Nkg1NTFRNTIwIDAgNTA1IDRUNDc4IDI1UTQ3MSAzNCAzNzQgMjQxTDIzOSA1MzJRMjMxIDU1MCAyMzEgNTUyTDIyOSA0NzlRMjI5IDQ0MCAyMjkgMjkzUTIyOSAzMSAyMjcgMjVRMjIyIDkgMjExIDVUMTc2IDBIMTU4TDExOSAxUTk5IDcgOTIgMjhWNjY3JyxcbiAgICAweDFENzYzOiAnNjI3IDU1M1E2MDkgNTUzIDUxMiA1NTRUMzY2IDU1NVEzMTYgNTU1IDIyMCA1NTRUMTA1IDU1M1E5NiA1NTMgOTAgNTUzVDgyIDU1NFQ3OCA1NTRRNjEgNTYwIDU3IDU3MVQ1MiA2MDVWNjIzTDUzIDY2MVE1OSA2ODAgNzkgNjg3UTgyIDY4OCAzNjYgNjg4UTY0OSA2ODggNjU0IDY4NlE2ODAgNjc5IDY4MCA2MzlWNjIxVjYwM1E2ODAgNTYzIDY1NCA1NTRRNjUzIDU1NCA2NTEgNTU0VDY0MiA1NTRUNjI3IDU1M1pNMTQ5IDQyM1ExNTIgNDI0IDM2NiA0MjRRNTc5IDQyNCA1ODQgNDIyUTYxMCA0MTUgNjEwIDM3NlYzNThWMzQwUTYxMCAzMDAgNTg0IDI5M1E1NzkgMjkxIDM2NiAyOTFIMjMyUTE2MiAyOTEgMTUwIDI5M1QxMjkgMzA2UTEyMiAzMTUgMTIyIDM2MEwxMjMgMzk3UTEyOSA0MTYgMTQ5IDQyM1pNMTA4IDEzNVExNDMgMTM1IDIyNiAxMzRUMzYzIDEzM1E0MDcgMTMzIDUwNyAxMzRUNjMyIDEzNUg2NDVRNjc1IDEzNSA2ODQgMTEwUTY4NiAxMDQgNjg2IDY4VjQ5UTY4NiA5IDY2MCAyUTY1NSAwIDM2NCAwTDc0IDFRNTcgNyA0OSAyMUw0NyAyOEw0NiA2NVY4M1E0NiAxMjYgNzIgMTMzUTgwIDEzNSAxMDggMTM1JyxcbiAgICAweDFENzY0OiAnMzYyIDcxNVEzNjQgNzE1IDM3NiA3MTVUMzk0IDcxNkg0MDBRNTQyIDcxNiA2MjYgNjQzVDcyNyA0MjZRNzMxIDM5NSA3MzEgMzQyUTczMSAyNzEgNzIyIDIyNVE2NzQgLTIyIDM5NiAtMjJRMzIwIC0yMiAyNTkgLTNUMTQ4IDY4VDc3IDIwMVE2MiAyNTcgNjIgMzQyUTYyIDQ0NyA4NiA1MjJUMTczIDY0OVEyNDUgNzA3IDM2MiA3MTVaTTU2OCA0MzNRNTUxIDYyMyAzOTYgNjIzUTM4MyA2MjMgMzcwIDYyMlQzMzMgNjEyVDI5MiA1OTFUMjU3IDU1MFQyMzMgNDg1UTIyMyA0NDIgMjIzIDM1MFEyMjMgMjc2IDIzMiAyMjdUMjY3IDEzN1EzMDkgNzQgMzk3IDc0UTQzMyA3NCA0NjEgODVUNTA3IDExM1Q1MzcgMTU2VDU1NiAyMDVUNTY2IDI2MFQ1NjkgMzEwVDU3MCAzNTdRNTcwIDQwOSA1NjggNDMzJyxcbiAgICAweDFENzY1OiAnOTIgNjY0UTk4IDY4MyAxMTggNjkwUTEyMSA2OTEgMzk2IDY5MVQ2NzYgNjg5UTY5NSA2ODQgNzAwIDY2NlE3MDIgNjYwIDcwMiAzNDVRNzAyIDMxIDcwMCAyNVE2OTYgOSA2ODQgNVQ2NDYgMEg2MjFINTk2UTU3MSAwIDU1OSA0VDU0MiAyNVE1NDAgMzEgNTQwIDMwN1Y1ODJIMjUzVjMwN1EyNTMgMzEgMjUxIDI1UTI0MiAwIDE5OSAwSDE3MEwxMTkgMVE5OSA3IDkyIDI4VjY2NCcsXG4gICAgMHgxRDc2NjogJzY0MSA0NzBRNjQxIDQyNiA2MzAgMzkxVDYwMyAzMzRUNTYxIDI5NVQ1MTMgMjcxVDQ1OSAyNTlUNDA4IDI1NFQzNjEgMjUzSDM1MEgzMzdIMjUzVjE0MlEyNTMgMTI1IDI1MyAxMDBUMjU0IDY3UTI1NCAzMiAyNDkgMTlUMjI3IDJRMjIyIDAgMTcwIDBMMTE5IDFROTkgNyA5MiAyOFY2NjdROTggNjg2IDExOCA2OTNRMTIxIDY5NCAyNzEgNjk0UTQyOCA2OTMgNDYyIDY4OFE2NDEgNjU2IDY0MSA0NzBaTTQ4NyA0NjdRNDg3IDQ5NSA0ODUgNTEwVDQ3NCA1NDZUNDQyIDU3OFQzODIgNTkyUTM3NSA1OTMgMzEwIDU5M0gyNTBWMzQ3SDMwOUgzMzlRMzY0IDM0NyAzODAgMzQ4VDQxOCAzNTRUNDUxIDM2OFQ0NzQgMzk1VDQ4NiA0MzhRNDg3IDQ0NCA0ODcgNDY3JyxcbiAgICAweDFENzY4OiAnMzIyIDEyNFEzMjYgMTI0IDQ1NyAxMjVUNjcyIDEyN0g2ODlRNzIxIDEyNyA3MzAgMTAyUTczMiA5NiA3MzIgNjRWNDhRNzMyIDkgNzA2IDJRNzAxIDAgMzk0IDBMODkgMVE3NiA1IDY5IDEzVDYyIDI5VjM2UTYyIDM3IDYyIDM4UTYyIDQ3IDcwIDU4VDEyNiAxMjZRMTYxIDE2NyAxODUgMTk2UTMwMiAzMzUgMzAyIDMzNkwxODcgNDYzUTc0IDU4NCA2OCA1OTRRNjEgNjAzIDYxIDYzOUw2MiA2NjdRNjggNjg2IDg4IDY5M1E5MSA2OTQgMzk2IDY5NFQ3MDYgNjkyUTczMiA2ODYgNzMyIDY0N1Y2MzVWNjIxUTczMiA1ODUgNzA2IDU3NlE3MDUgNTc2IDcwMiA1NzZUNjkxIDU3NlQ2NzAgNTc1TDMwMiA1NzhRMzAyIDU3NyAzOTQgNDc1VDQ5MCAzNzFRNDk4IDM2MiA0OTggMzQ3UTQ5OCAzMzYgNDg4IDMyM1Q0MDggMjI2TDMyMiAxMjQnLFxuICAgIDB4MUQ3Njk6ICc2NyA2ODdRNzAgNjg4IDM2NiA2ODhRNjYxIDY4OCA2NjYgNjg2UTY5MiA2ODAgNjkyIDY0MVY2MjlWNjE1UTY5MiA1NzkgNjY2IDU3MEg2NjBRNjU1IDU2OSA2NDggNTY5UTY0NSA1NjkgNjI0IDU2OVQ1ODEgNTcwUTUwNSA1NzAgNDc1IDU3Mkg0NDdWMzAyUTQ0NyAzMSA0NDUgMjVRNDM2IDAgMzkzIDBIMzY0TDMxMyAxUTI5MyA3IDI4NiAyOEwyODUgMzAwVjU3MkgyNTdRMjI3IDU3MCAxNTEgNTcwUTEzMCA1NzAgMTA5IDU3MFQ4NCA1NjlRNzcgNTY5IDcyIDU3MEg2NlE0OCA1NzcgNDQgNTg4VDQwIDYzMUw0MSA2NjFRNDcgNjgwIDY3IDY4NycsXG4gICAgMHgxRDc2QTogJzYyIDU2MFE2MiA2MDcgOTQgNjQ0VDE2OSA2OThUMjUzIDcxNVEyNzMgNzE1IDI4NiA3MTNUMzIyIDcwNFQzNjMgNjc3VDM5OCA2MjVRNDEzIDU5NyA0MjMgNTU2TDQyOCA1NDBRNDI5IDU0MSA0MzYgNTY2VDQ1NCA2MjBUNDk0IDY3N1Q1NjEgNzEzUTU3MCA3MTUgNTkzIDcxNVE2ODIgNzE1IDczNyA2NjhUNzkzIDU2MFE3OTMgNTQ5IDc5MyA1NDVUNzg2IDUzM1Q3NjcgNTIwSDY3MFE2NDYgNTMyIDY0NCA1NTFUNjMyIDU3OVE2MTggNTk0IDU5MSA1OTRRNTM5IDU5NCA1MjQgNTMwVDUwOSAzMjFWMjE2UTUwOSAzMSA1MDcgMjVRNDk4IDAgNDU1IDBINDI2TDM3NSAxUTM1NSA3IDM0OCAyOEwzNDcgMjMyUTM0NiAzNDQgMzQ2IDQ0MVEzNDYgNDQyIDM0MyA0NjhUMzM1IDUyMVQzMTIgNTcxVDI2NiA1OTRRMjUyIDU5NCAyNDcgNTkzUTIyOCA1ODYgMjIwIDU3NlQyMTIgNTU3VDIwOSA1MzlUMTkxIDUyM0wxODUgNTIwSDg4UTc1IDUyNyA2OSA1MzRUNjMgNTQ1VDYyIDU2MCcsXG4gICAgMHgxRDc2QjogJzYyIDI5MlQ2MiAzNDdUODAgNDQ1VDEyNCA1MTFUMTgzIDU1MlQyNDMgNTc0VDI5MiA1ODRMMzE1IDU4N0gzMTlWNjI3TDMyMCA2NjdRMzI5IDY5NCAzNzAgNjk0SDM5N0g0MjJRNDY2IDY5NCA0NzMgNjY5UTQ3NSA2NjMgNDc1IDYyNVY1ODdINDc4UTQ3OSA1ODcgNTAwIDU4NFQ1NDggNTc1VDYwOCA1NTNUNjY4IDUxM1Q3MTMgNDQ2VDczMiAzNDdRNzMyIDI1MyA2NzQgMTg3UTY1NSAxNjcgNjI4IDE1MlQ1NzYgMTI4VDUzMCAxMTZUNDkzIDEwOUw0NzggMTA3SDQ3NVY2OVY1MFE0NzUgOSA0NDkgMlE0NDQgMCAzOTUgMEwzNDcgMVEzMjcgNyAzMjAgMjhMMzE5IDY3VjEwN0gzMTVMMjkyIDExMFEyNjkgMTE0IDI0MyAxMTlUMTg0IDE0MlQxMjQgMTgyVDgwIDI0OVpNMzE5IDE5N1QzMTkgMzQ3VDMxOCA0OTdRMzE2IDQ5NyAzMDcgNDk0VDI4NCA0ODVUMjYyIDQ3MVEyMjAgNDM4IDIyMCAzNDdRMjIwIDI4NSAyMzkgMjQ5UTI0OCAyMzQgMjYxIDIyM1QyODYgMjA4VDMwOCAyMDBMMzE3IDE5N1EzMTkgMTk3IDMxOSAzNDdaTTU3MiAzNDdWMzU3UTU3MiAzODcgNTY5IDQwN1Q1NDggNDUyVDQ5NiA0OTFRNDk1IDQ5MSA0OTQgNDkxVDQ4NyA0OTNUNDc1IDQ5N1YxOTdRNTE4IDIxMCA1NDEgMjMyVDU3MSAzMDNRNTcyIDMxMiA1NzIgMzQ3JyxcbiAgICAweDFENzZDOiAnNTIgMVEzNyAxMSAzNyAyM1EzNyAyNiAzOSAzMlEzOSAzNCAxNTggMjAyTDI3NSAzNjlRMjc1IDM3MCAyMjEgNDQxVDExMiA1ODZUNTUgNjYzUTUzIDY2OSA1MyA2NzJRNTMgNjg3IDY4IDY5M0g3MlE3NyA2OTMgODQgNjkzVDk5IDY5NFQxMTggNjk0VDEzOSA2OTRIMTc2UTIwMyA2OTQgMjEyIDY5MlQyMzAgNjgyUTIzMSA2ODEgMjM5IDY2OVQyNjUgNjM0VDI5NiA1OTFMMzU4IDUwNEw0MTggNTkxUTQ4MSA2ODIgNDg2IDY4NlE0OTEgNjkxIDQ5OSA2OTJRNTA1IDY5NCA1NjkgNjk0SDYzMlE2NTAgNjg1IDY1MCA2NzJRNjUwIDY2NyA2NDYgNjYwUTY0MyA2NTQgNTkyIDU4MlQ0OTEgNDQwVDQ0MSAzNjlUNTY2IDIwMVQ2OTMgMjlRNjk0IDI3IDY5NCAyM1E2OTQgMTEgNjc3IDBINjA3TDUzNyAxUTUyMyA2IDUxOSAxMFQ0MzcgMTMxUTQyMiAxNTMgNDExIDE3MFQzOTAgMjAwVDM3NSAyMjJUMzY1IDIzN1QzNTkgMjQ1TDM1NyAyNDdMMzQ4IDIzMlEzMzkgMjE4IDMxOSAxODhUMjgzIDEzMVEyMjIgMzcgMjExIDIyVDE4NiAxSDUyJyxcbiAgICAweDFENzZEOiAnNjEgNTg1UTYyIDU5NCA2MiA1OTdUNjQgNjA2VDczIDYxNlQ4OSA2MjZIMTM4UTE5NiA2MjYgMjA4IDYyMFEyNDMgNjAyIDI1MyA1NDZUMjYxIDQzMVQyNzEgMzA5VDMyNSAyMTlRMzQyIDIwNSAzNDkgMjA1UTM1MCAyMDUgMzUwIDQzNkwzNTEgNjY3UTM2MCA2OTQgNDAxIDY5NEg0MjhINDU0UTQ5NSA2OTQgNTA0IDY3MVE1MDYgNjYzIDUwNiA0MzZMNTA3IDIwNVE1NDIgMjIyIDU2MSAyNTFUNTg2IDMxOFQ1OTMgMzkyVDU5NSA0NzJUNjAyIDU0NlE2MTQgNjE0IDY2MSA2MjVRNjY1IDYyNiA3MDggNjI2SDczMFE3NjYgNjI2IDc4MCA2MThUNzk0IDU4MlE3OTQgNTQ4IDc2OCA1NDBRNzU1IDUzOCA3NTQgNTAxVDc1MCA0MTBUNzM2IDI5OFQ2ODAgMTkxVDU2MCAxMjBRNTUwIDExNiA1MTIgMTA5SDUwNlY3MFY1MFE1MDYgOSA0ODAgMlE0NzUgMCA0MjYgMEwzNzggMVEzNTggNyAzNTEgMjhMMzUwIDY4VjEwOUwzMzUgMTExUTI5OCAxMTcgMjY3IDEyOVQyMTQgMTU2VDE3NSAxOTFUMTQ2IDIyOVQxMjcgMjcyVDExNSAzMTRUMTA5IDM1N1QxMDYgMzk1VDEwNSA0MjlRMTA0IDUzNyA4NyA1NDBRNjYgNTQ4IDYzIDU2NVE2MSA1NzAgNjEgNTg1JyxcbiAgICAweDFENzZFOiAnMjQxIDEyMlEyMjUgMTU0IDE5MSAxOTlUMTMxIDI3OFQ4MyAzNjNUNjEgNDY0UTYxIDQ5NyA2OCA1MjdUOTQgNTkxVDE0NSA2NTBUMjI4IDY5M1QzNDkgNzE1UTM1NCA3MTUgMzcwIDcxNVQzOTYgNzE2UTUzOSA3MTYgNjIyIDY2OFE2NTggNjQ3IDY4MiA2MTdUNzE1IDU1NlQ3MjggNTA1VDczMiA0NjVRNzMyIDQxNSA3MTEgMzY1VDY2MyAyODBUNjAyIDIwMFQ1NTIgMTIySDYzMlE2NDkgMTIyIDY2OSAxMjJUNjkzIDEyM0g2OTdRNzM2IDEyMyA3NDIgOThRNzQ0IDkyIDc0NCA2MlY0N1E3NDQgOSA3MTggMlE3MTMgMCA1OTEgMEw0NzEgMVE0NTQgNyA0NDYgMjFRNDQ0IDI3IDQ0NCA0NVE0NDQgOTYgNDYzIDE1NFQ1MDYgMjU3VDU0OSAzNjBUNTY5IDQ2OVE1NjkgNTA0IDU2MyA1MzBUNTM4IDU4MFQ0ODUgNjE2VDM5NiA2MjlRMzEzIDYyOSAyNjggNTk0VDIyMyA0NjhRMjIzIDQxOSAyNDMgMzYxVDI4NiAyNThUMzMwIDE1MlQzNTAgNDFRMzUwIDE0IDMzNSA3VDI3NiAtMVEyNjcgLTEgMjQxIC0xVDE5NyAwTDc3IDFRNTcgNyA1MCAyOEw0OSA1OVY3NFE0OSAxMTQgNzUgMTIxUTgxIDEyMyAxMDAgMTIzUTEwNCAxMjMgMTI0IDEyM1QxNjEgMTIySDI0MScsXG4gICAgMHgxRDdDRTogJzI2NiA2NTRIMjgwSDI4MlE1MDAgNjU0IDUyNCA0MThRNTI5IDM3MCA1MjkgMzIwUTUyOSAxMjUgNDU2IDUyUTM5NyAtMTAgMjg3IC0xMFExMTAgLTEwIDYzIDE1NFE0NSAyMTIgNDUgMzE2UTQ1IDUwNCAxMTMgNTg1UTE0MCA2MTggMTg1IDYzNlQyNjYgNjU0Wk0zNzQgNTQ4UTM0NyA2MDQgMjg2IDYwNFEyNDcgNjA0IDIxOCA1NzVRMTk3IDU1MiAxOTMgNTExVDE4OCAzMTFRMTg4IDE1OSAxOTYgMTE2UTIwMiA4NyAyMjUgNjRUMjg3IDQxUTMzOSA0MSAzNjcgODdRMzc5IDEwNyAzODIgMTUyVDM4NiAzMjlRMzg2IDUxOCAzNzQgNTQ4JyxcbiAgICAweDFEN0NGOiAnNDgxIDBMMjk0IDNRMTM2IDMgMTA5IDBIOTZWNjJIMjI3VjMwNFEyMjcgNTQ2IDIyNSA1NDZRMTY5IDUyOSA5NyA1MjlIODBWNTkxSDk3UTIzMSA1OTEgMzA4IDY0N0wzMTkgNjU1SDMzM1EzNTUgNjU1IDM1OSA2NDRRMzYxIDY0MCAzNjEgMzUxVjYySDQ5NFYwSDQ4MScsXG4gICAgMHgxRDdEMDogJzE3NSA1ODBRMTc1IDU3OCAxODUgNTcyVDIwNSA1NTFUMjE1IDUxMFEyMTUgNDY3IDE5MSA0NDlUMTM3IDQzMFExMDcgNDMwIDgzIDQ0OFQ1OCA1MTFRNTggNTU4IDkxIDU5MlQxNjggNjQwVDI1OSA2NTRRMzI4IDY1NCAzODMgNjM3UTQ1MSA2MTAgNDg0IDU2M1Q1MTcgNDU5UTUxNyA0MDEgNDgyIDM2MFQzNjggMjYyUTM0MCAyNDMgMjY1IDE4NEwyMTAgMTQwSDI3NFE0MTYgMTQwIDQyOSAxNDVRNDM5IDE0OCA0NDcgMTg2VDQ1NSAyMzdINTE3VjIzM1E1MTYgMjMwIDUwMSAxMTlRNDg5IDkgNDg2IDRWMEg1N1YyNVE1NyA1MSA1OCA1NFE2MCA1NyAxMDkgMTA2VDIxNSAyMTRUMjg4IDI5MVEzNjQgMzc3IDM2NCA0NThRMzY0IDUxNSAzMjggNTUzVDIzMSA1OTJRMjE0IDU5MiAyMDEgNTg5VDE4MSA1ODRUMTc1IDU4MCcsXG4gICAgMHgxRDdEMTogJzgwIDUwM1E4MCA1NjUgMTMzIDYxMFQyNzQgNjU1UTM2NiA2NTUgNDIxIDYyM1Q0OTEgNTM4UTQ5MyA1MjggNDkzIDUxMFE0OTMgNDQ2IDQ1MyA0MDdUMzYxIDM0OEwzNzYgMzQ0UTQ1MiAzMjQgNDg5IDI4MVQ1MjYgMTg0UTUyNiAxNTIgNTE0IDEyMVQ0NzQgNThUMzkyIDhUMjY1IC0xMVExNzUgLTExIDExMSAzNFQ0OCAxNTJRNTAgMTg3IDcyIDIwOVQxMzIgMjMyUTE3MSAyMzIgMTkzIDIwOFQyMTYgMTQ3UTIxNiAxMzYgMjE0IDEyNlQyMDcgMTA4VDE5NyA5NFQxODcgODRUMTc4IDc3VDE3MCA3MkwxNjggNzFRMTY4IDcwIDE3OSA2NVQyMTUgNTRUMjY2IDQ4SDI3MFEzMzEgNDggMzUwIDEwNVEzNTggMTI4IDM1OCAxODVRMzU4IDIzOSAzNDggMjY4VDMwOSAzMTNRMjkyIDMyMSAyNDIgMzIyUTIwNSAzMjIgMTk4IDMyNFQxOTEgMzQxVjM0OFExOTEgMzY2IDE5NiAzNjlUMjMyIDM3NVEyMzkgMzc1IDI0NyAzNzZUMjYwIDM3N1QyNjggMzc4UTI4NCAzODMgMjk3IDM5M1QzMjYgNDM2VDM0MSA1MTdRMzQxIDUzNiAzMzkgNTQ3VDMzMSA1NzNUMzA4IDU5M1QyNjYgNjAwUTI0OCA2MDAgMjQxIDU5OVEyMTQgNTkzIDE4MyA1NzZRMjM0IDU1NiAyMzQgNTAzUTIzNCA0NjIgMjEwIDQ0NFQxNTcgNDI2UTEyNiA0MjYgMTAzIDQ0NlQ4MCA1MDMnLFxuICAgIDB4MUQ3RDI6ICc1MzEgMFE1MTAgMyAzODEgM1EyMzggMyAyMTQgMEgyMDFWNjJIMzEzVjE1NUgzMlYyMTdMMjA1IDQzNFEzNDIgNjA2IDM2MiA2MzBUMzg3IDY1NUwzOTEgNjU2UTM5NSA2NTYgNDAxIDY1NlQ0MTQgNjU2SDQyN1E0NDcgNjU2IDQ1MSA2NDVRNDUzIDY0MSA0NTMgNDI5VjIxN0g1NDJWMTU1SDQ1M1Y2Mkg1NDJWMEg1MzFaTTMyNCAyMTdWNDk0TDEwMyAyMThMMjEzIDIxN0gzMjQnLFxuICAgIDB4MUQ3RDM6ICcxMDAgNTY1VjYwNVExMDAgNjM3IDEwMiA2NDZUMTEzIDY1NVExMTYgNjU1IDEzOSA2NDdUMjAyIDYzMVQyODYgNjIzUTMzMiA2MjMgMzcyIDYzMVQ0MzQgNjQ3VDQ1OSA2NTVRNDY2IDY1NSA0NjkgNjUxVDQ3MiA2NDNUNDcyIDYyOVE0NzIgNjEzIDQ2MyA2MDFRMzcwIDQ4NyAyMTkgNDg3UTE5NSA0ODcgMTgzIDQ4OFQxNjkgNDkwVDE2OCA0MzNWMzc2UTE2OSAzNzYgMTc0IDM3OVQxODggMzg3VDIxMSAzOTdUMjQ0IDQwNVQyODggNDA5UTM5MCA0MDkgNDUzIDM1MlQ1MTcgMjAxUTUxNyAxMDYgNDQ1IDQ4VDI1MyAtMTFRMTY5IC0xMSAxMTMgMzdUNTcgMTU0UTU3IDE4NyA3OSAyMDhUMTMxIDIyOVQxODMgMjA5VDIwNiAxNTRRMjA2IDk5IDE1NSA4M1ExNTIgODIgMTU3IDc4UTE5NiA0NyAyNTMgNDdRMzQ3IDQ3IDM1OCAxMzVRMzU4IDEzNyAzNTggMTM4UTM2MCAxNTggMzYwIDIwOVEzNjAgMjc3IDM1NSAzMDFUMzM3IDMzOFEzMTUgMzU4IDI4MiAzNThRMjAyIDM1OCAxNjAgMzAzUTE1MyAyOTQgMTQ5IDI5MlQxMzAgMjkwUTEwNyAyOTAgMTAyIDMwMVExMDAgMzA0IDEwMCA0NzRWNTY1JyxcbiAgICAweDFEN0Q0OiAnNDggMzE4UTQ4IDM5NSA2OCA0NTZUMTIwIDU1M1QxOTMgNjEzVDI3MyA2NDZUMzUwIDY1NVE0MjUgNjU1IDQ2MSA2MTZUNDk3IDUyNFE0OTcgNDg1IDQ3NSA0NjhUNDI4IDQ1MVEzOTkgNDUxIDM3OCA0NzBUMzU3IDUyMVEzNTcgNTY1IDQwMyA1ODhRMzc1IDYwMSAzNTEgNjAxUTMxMyA2MDEgMjgyIDU4NFEyNDIgNTY1IDIyMiA1MjZRMTk5IDQ3MyAxOTkgMzY3UTIwMSAzNjkgMjEwIDM4MFQyMjcgMzk2VDI0NiA0MTBUMjc1IDQyMlQzMTIgNDI2UTQzOCA0MjYgNDk0IDMzMlE1MjYgMjg1IDUyNiAyMDhWMTk5UTUyNiAxMTIgNDY1IDUzUTQyOCAxNyAzODggM1QyODUgLTExUTIzNiAtMTEgMTk1IDdUMTM1IDQzVDEwNCA4MFE0OCAxNjUgNDggMzE4Wk0zNzUgMjMxVjI0NFYyNjhRMzc1IDI5NSAzNzMgMzEwVDM2NCAzNDJUMzQxIDM2NlQyOTkgMzc0SDI5N1EyMzEgMzc0IDIwOCAyODdRMjAwIDI1NyAyMDAgMTk2UTIwMSAxMjAgMjA5IDEwMFEyMzEgNDcgMjg4IDQ3UTM1MSA0NyAzNjggOTBRMzc1IDExMiAzNzUgMjMxJyxcbiAgICAweDFEN0Q1OiAnMjU2IC0xMVEyMzEgLTExIDIwOCA1VDE4NSA2NVExODUgMTA1IDE5MyAxNDZUMjEyIDIyMFQyNDEgMjg5VDI3NSAzNDlUMzEyIDQwMlQzNDYgNDQ1VDM3NyA0NzlUMzk3IDUwMkw0MDAgNTA0SDMwMVExNTYgNTAzIDE1MCA0OTdRMTQyIDQ5MSAxMzQgNDU2VDEyNiA0MDdINjRWNDExUTY1IDQxNCA4MiA1NDRUOTkgNjc1VDEzMCA2NzZIMTYxVjY3M1ExNjEgNjY5IDE2MiA2NjZUMTY3IDY2MVQxNzMgNjU3VDE4MSA2NTRUMTkwIDY1MlQyMDAgNjUxVDIxMCA2NTBUMjIwIDY0OVQyMjkgNjQ4UTIzNyA2NDggMjU0IDY0N1QyNzYgNjQ2UTI3NyA2NDYgNDI2IDY0NEg1NThWNjIwVjYwN1E1NTggNTk2IDU1MSA1ODZUNTA5IDUzN1E0ODkgNTE1IDQ3NiA1MDBRMzkwIDQwMSAzODQgMzkzUTM0OSAzMzkgMzM3IDI1OVQzMjQgMTEzVDMyMiAzOFEzMDcgLTExIDI1NiAtMTEnLFxuICAgIDB4MUQ3RDY6ICc4MCA0NzRRODAgNTYxIDEzOSA2MDdUMjc4IDY1NFEzNTcgNjU0IDQxMSA2MzJRNDkwIDU5MyA0OTQgNTA5UTQ5NCA0MjQgNDE2IDM3Nkw0MDcgMzcxTDQxOCAzNjRRNDMyIDM1NiA0NDcgMzQ1VDQ4MSAzMTJUNTEzIDI2MFQ1MjYgMTkyUTUyNiAxMDAgNDYxIDQ1VDI4NSAtMTFRMTg0IC0xMSAxMTYgMzJUNDggMTY0UTQ4IDE4MSA1MCAxOTZUNTggMjI1VDY5IDI0OVQ4NCAyNzBUMTAwIDI4NlQxMTcgMzAwVDEzNCAzMTFUMTQ5IDMyMVQxNjIgMzI5TDE1MiAzMzZRMTIwIDM2MCAxMDAgMzk3VDgwIDQ3NFpNMzQ3IDQwNFE0MDQgNDQ2IDQwNCA1MDNRNDA0IDU3OSAzMTcgNTk5UTMwOSA2MDAgMjc2IDYwMFExNzggNjAwIDE3MCA1MzhRMTcwIDUzMiAxNzEgNTI3VDE3MyA1MThUMTc4IDUwOVQxODQgNTAxVDE5NCA0OTJUMjA1IDQ4NFQyMTkgNDc2VDIzNSA0NjdUMjU0IDQ1NlQyNzUgNDQ1TDM0NyA0MDRaTTI4OSA0N1EzMjMgNDcgMzUxIDU0VDQwMiA4MlQ0MjUgMTM3UTQyNSAxNDcgNDIxIDE2MVE0MTEgMTgzIDM5MSAxOTdUMzAzIDI0OVEyMjQgMjkzIDIyMyAyOTNRMjIwIDI5MSAyMTUgMjg4VDE5NyAyNzNUMTc1IDI0OFQxNTcgMjEzVDE0OSAxNjdRMTQ5IDEwOSAxODggNzhUMjg5IDQ3JyxcbiAgICAweDFEN0Q3OiAnMTc4IDU5UTIwNiA0OCAyMzggNDhRMzExIDQ4IDM0NSAxMDJRMzcwIDEzOCAzNzUgMjU5VjI3OFEzNzQgMjc4IDM2OSAyNzFUMzUwIDI1MlQzMjIgMjMyUTI5NyAyMjAgMjU4IDIyMFExNzIgMjIwIDExMCAyNzVUNDggNDM4VjQ0NlE1NCA1NjEgMTQ2IDYxOFExOTkgNjU0IDI3OCA2NTRRMzIxIDY1NCAzMjkgNjUzUTUyNiA2MjEgNTI2IDMzMFE1MjYgMjUyIDUwNyAxOTBUNDU3IDkyVDM4OCAzMVQzMTIgLTJUMjQwIC0xMVExNjUgLTExIDEyMSAyNVQ3NyAxMjBRNzcgMTU5IDk5IDE3NlQxNDcgMTkzVDE5NCAxNzdUMjE3IDEyMlEyMTcgMTEzIDIxNiAxMDZUMjExIDkyVDIwNSA4MlQxOTggNzNUMTkxIDY3VDE4NCA2MlQxNzggNTlaTTM3NCA0NDZWNDY1UTM3NCA1MjMgMzY0IDU1MlQzMTUgNTk4UTMwOSA2MDAgMjkzIDYwMVEyMjcgNjAxIDIxMCA1NjJRMTk5IDUzOSAxOTkgNDMzUTE5OSAzNDMgMjA0IDMxOVQyMzUgMjc5UTI1MCAyNzIgMjc0IDI3MUgyODJRMjkzIDI3MSAzMDMgMjc0VDMyNyAyODhUMzUzIDMyM1QzNzEgMzg1UTM3NCA0MDMgMzc0IDQ0NicsXG4gICAgMHgxRDdFMjogJzExNyA2MjFRMTc0IDY3OCAyNDcgNjc4UTMwNSA2NzggMzUxIDY0N1EzOTYgNjE3IDQyNCA1NTdRNDYwIDQ3MiA0NjAgMzI4UTQ2MCAyNzEgNDU1IDIyNFE0NDggMTU0IDQyNyAxMDRUMzc2IDI3VDMxNCAtMTBUMjQ5IC0yMlEyMDEgLTIyIDE2MCAxVDkxIDY3UTM5IDE1NCAzOSAzMTZRMzkgNTQxIDExNyA2MjFaTTI1MCA1NVEyNzQgNTUgMjkzIDY2VDMyNCA5M1QzNDQgMTM2VDM1NyAxODVUMzY0IDI0MFQzNjYgMjkxVDM2NyAzNDBRMzY3IDM3MyAzNjcgMzkzVDM2MyA0NDlUMzUyIDUwN1QzMzIgNTUzVDI5OSA1ODlUMjUwIDYwMVEyMTcgNjAxIDE5NCA1ODRUMTU5IDU0MlQxNDEgNDc5VDEzMyA0MTFUMTMyIDM0MFYzMzFRMTMyIDI5OSAxMzMgMjc3VDEzNyAyMTlUMTQ3IDE1N1QxNjcgMTA3VDIwMSA2OFQyNTAgNTUnLFxuICAgIDB4MUQ3RTM6ICc5NCA2MTJRMTcyIDYxNiAyMTEgNjMyVDI4NCA2NzhIMzA3VjczSDQzMFYwSDg4VjczSDIxM1YzMTdRMjEzIDU2MCAyMTIgNTYwUTIxMCA1NTggMTk3IDU1NFQxNTUgNTQ2VDk2IDU0MEw4MyA1MzlWNjEySDk0JyxcbiAgICAweDFEN0U0OiAnMjIyIDU5OVExOTAgNTk5IDE2NiA1ODVUMTI4IDU1MFQxMDggNTA5VDk3IDQ3NFQ5MyA0NTlMNjcgNDkyTDQyIDUyNkw0NyA1MzlRNzIgNjA4IDEyMCA2NDJUMjI1IDY3N1EzMDQgNjc3IDM1NSA2NDRRNDQ5IDU3OSA0NDkgNDU0UTQ0OSAzNzMgMzYxIDI5MFEzNTEgMjgwIDMxNSAyNTBUMTk5IDE0NFExNTYgMTAzIDEzNyA4NUwyOTMgODZINDQ5VjBINTBWNzlMMjE2IDI0MlEyODQgMzAyIDMxNyAzNDlUMzUxIDQ1NlEzNTEgNTE3IDMxNSA1NThUMjIyIDU5OScsXG4gICAgMHgxRDdFNTogJzMzMyA1MjFRMzMzIDU1NCAzMTMgNTc5VDI0MyA2MDRRMTU0IDYwNCA5OSA1MTRMNzggNTQ2UTU2IDU3NyA1NiA1NzlRNTYgNTgwIDYyIDU4OVQ4MiA2MTFUMTE0IDYzN1QxNjIgNjYyVDIyMiA2NzdRMjI0IDY3NyAyMzEgNjc3VDI0MiA2NzhIMjQ1UTMxOCA2NzggMzc0IDYzNFQ0MzAgNTIwUTQzMCA0ODMgNDE3IDQ1MlQzODIgMzk4VDM1MSAzNjlUMzI5IDM1NEwzMjggMzUzUTM2OSAzMzMgMzczIDMzMFE0MDggMzA2IDQzMiAyNjhUNDU3IDE4NFE0NTcgMTAzIDM5NyA0MVQyNDIgLTIyUTEzMSAtMjIgNTEgNThMNDIgNjhMNDkgMTA1TDU1IDE0Mkw1OCAxMzhRNjIgMTM0IDY2IDEzMFQ3NyAxMjBUOTEgMTA4VDEwOCA5NlQxMjkgODNUMTUyIDcyVDE3OSA2M1QyMDkgNTdUMjQyIDU0UTI4NSA1NCAzMTkgODZUMzUzIDE4NFEzNTMgMjMxIDMzMSAyNjdUMjYwIDMxNUwyMTMgMzE2SDE2NlYzNTRRMTY2IDM5MiAxNjcgMzkyUTIzMyAzOTUgMjU3IDQwNVEyOTAgNDE4IDMxMSA0NTBUMzMzIDUyMScsXG4gICAgMHgxRDdFNjogJzI3MSA2NTRMMjcyIDY1NkgzODBWMjM1SDQ3MVYxNTlIMzgwVjBIMjg2VjE1OUgyOFYyMzVMMTQ5IDQ0M1EyNjkgNjUyIDI3MSA2NTRaTTI5MiAyMzVWNjA3UTI5MiA2MDQgMjkwIDU5MVQyODYgNTcxVDI4MCA1NDhUMjY5IDUxN1QyNTIgNDc2VDIyNiA0MjJUMTg5IDM1NFQxNDAgMjY3UTEzNiAyNjAgMTMyIDI1M1QxMjYgMjQwTDEyMyAyMzZRMTIzIDIzNSAyMDcgMjM1SDI5MicsXG4gICAgMHgxRDdFNzogJzI1NyAzNTBRMjM2IDM1MCAyMTggMzQyVDE4OSAzMjNUMTcxIDMwMVQxNjAgMjgxTDE1NyAyNzNRMTU3IDI3MiAxMTYgMjcySDc1VjY1Nkg0MTZWNTc3SDE2MlY0ODZRMTYyIDM5NiAxNjMgMzk2VDE3NCA0MDNUMjA3IDQxOFQyNTggNDI2UTMzOSA0MjYgMzk0IDM2MFQ0NDkgMjAzUTQ0OSAxMTMgMzg2IDQ2VDIyNiAtMjFIMjIzUTE4OCAtMjEgMTU2IC0xMVQxMDIgMTNUNjQgNDJUNDEgNjZUMzMgNzdRMzQgNzggNDQgOTVUNjQgMTI4TDczIDE0NFE5MyAxMTIgMTE3IDkzUTE2NSA1NCAyMjMgNTRRMjcwIDU0IDMwNiA4NlQzNDUgMTk3UTM0NSAzNTAgMjU3IDM1MCcsXG4gICAgMHgxRDdFODogJzQyIDMxOFE0MiAzOTYgNjEgNDYwVDEwOSA1NjRUMTczIDYyOVQyMzcgNjY2VDI4OSA2NzdIMzAxSDMxN1EzNTkgNjc3IDQwOCA2NThWNjIxUTQwOCA1ODUgNDA3IDU4NUg0MDZRMzU5IDYwNSAzMDggNjA1UTI0NiA2MDUgMjAzIDU1NlQxNDYgNDIxUTE0MyA0MDMgMTQ0IDQwM1ExNDUgNDAyIDE1MiA0MDlRMjE2IDQ2OSAyOTkgNDY5UTMzMyA0NjkgMzU3IDQ1N1Q0MDcgNDA1UTQ1NyAzMzAgNDU3IDIyNlE0NTcgMTI2IDQwMiA1N1EzNDAgLTIyIDI1MSAtMjJRMjE2IC0yMiAxODMgLTdUMTE2IDQzVDYzIDE0OVQ0MiAzMThaTTI2MCAzOTNRMjE2IDM5MyAxODggMzY1VDE1MCAzMDZUMTQxIDI0M1ExNDEgMTUzIDE3MiAxMDRRMTkyIDY4IDIzMCA1NlEyMzggNTQgMjUxIDU0UTMxMSA1NCAzNDIgMTE2UTM2MCAxNTIgMzYwIDIyNlEzNjAgMjk3IDM0NCAzMzJRMzIwIDM4MiAyNzcgMzkyUTI3NSAzOTIgMjcwIDM5MlQyNjAgMzkzJyxcbiAgICAweDFEN0U5OiAnNDIgNTcwVjY1Nkg0NTdWNTc3TDQ0NyA1NjRRMzQ1IDQzOSAyOTUgMjg5VDI0NCAwVi0xMUgxNDVWMTJRMTYwIDMzMCAzNTYgNTUwUTM2MCA1NTYgMzY1IDU2MVQzNzQgNTcxTDIwOCA1NzBINDInLFxuICAgIDB4MUQ3RUE6ICc1NSA1MDBRNTUgNTY4IDEwOSA2MjNUMjUwIDY3OFEzMjcgNjc4IDM4NSA2MjdUNDQ0IDUwMVE0NDQgNDQ1IDQxMCA0MTBUMzM2IDM1N0wzMjkgMzUzSDMzMFEzNzggMzM1IDQxNyAyOTNUNDU2IDE4NFE0NTYgOTMgMzkzIDM2VDI0OSAtMjJUMTA2IDM1VDQzIDE4NFE0MyAyNTEgODIgMjkzVDE2OSAzNTNRMTcxIDM1NCAxNjYgMzU2UTE2NSAzNTYgMTYzIDM1N1ExMTMgMzc4IDg0IDQxNlQ1NSA1MDBaTTM1OCA0OTZRMzU4IDU1NyAzMjUgNTgxVDI1MCA2MDVRMjA2IDYwNSAxNzQgNTgwVDE0MSA0OTZRMTQxIDQ0NiAxNzEgNDIwVDI1MCAzOTNRMjk4IDM5MyAzMjggNDE5VDM1OCA0OTZaTTI0NSAzMTZRMjA1IDMxNiAxNzIgMjg1VDEzOSAxODVWMTc5UTEzOSA3OSAyMjIgNTdRMjMxIDU1IDI1MCA1NUgyNTRRMjk1IDU1IDMyNyA4NFEzNjAgMTIwIDM2MCAxODhRMzYwIDI1NCAzMjYgMjg1UTI5NSAzMTYgMjQ1IDMxNicsXG4gICAgMHgxRDdFQjogJzQ0IDQ3NlE1NyA1NjEgMTE2IDYxOVQyNDUgNjc3SDI1NVEzMDggNjc3IDM0OSA2NDdRMzkyIDYxOSA0MjQgNTQ1VDQ1NyAzMzRRNDU3IDE3OCAzODIgNzhUMjA1IC0yMlExNjggLTIyIDEzNSAtMTBUODYgMTRMNzIgMjVRNzMgMjUgOTEgNThMMTEwIDkxUTEyNyA3OCAxMzYgNzJUMTYzIDYwVDIwMyA1NFEyMzggNTQgMjY1IDcxVDMwOCAxMTBUMzM1IDE2NFQzNTAgMjE0VDM1NyAyNTNWMjU3TDM0NyAyNDhRMjg0IDE4NyAyMDAgMTg3UTE2NSAxODcgMTQwIDIwMVQ4NyAyNThRNDIgMzMyIDQyIDQzMFE0MiA0NTggNDQgNDc2Wk0yNjkgNjA0UTI2NSA2MDUgMjU0IDYwNVEyMjIgNjA1IDE5OSA1OTFUMTY0IDU1NFQxNDggNTE3VDE0MSA0ODdRMTQwIDQ3OCAxNDAgNDMwVDE0MSAzNzNRMTQ2IDMzNSAxNjQgMzA3VDIwNyAyNjlRMjIzIDI2MyAyNDcgMjYzUTI5OSAyNjYgMzI4IDMwOFQzNTggNDE3UTM1OCA0MzUgMzU2IDQ1NlQzNDYgNTExVDMxOCA1NzBUMjY5IDYwNCcsXG4gICAgMHgxRDdFQzogJzI3NCAtMjJRMjI3IC0yMiAxOTAgLTlUMTI4IDI0VDg3IDc2VDYyIDEzNVQ0OSAyMDRUNDQgMjcxVDQzIDMzNlYzNDNWMzYyUTQzIDQwNyA0NSA0NDBUNTYgNTI0VDg2IDYxM1QxNDEgNjc3UTE5NyA3MTUgMjY0IDcxNVEzMTQgNzE1IDM1MyA3MDJUNDE4IDY2OVQ0NjAgNjE2VDQ4NyA1NTVUNTAwIDQ4M1Q1MDUgNDEzVDUwNiAzNDNRNTA2IDMxMCA1MDYgMjkzVDUwMyAyNDFUNDk4IDE4NVQ0ODYgMTMzVDQ2NyA4M1Q0MzcgNDJUMzk3IDhUMzQzIC0xM1QyNzQgLTIyWk0zNTUgMzU1VjQwMVEzNTUgNDQ4IDM1NCA0NzZUMzQ5IDUzN1QzMzYgNTg3VDMxMSA2MTdUMjcyIDYyOVEyNzAgNjI5IDI2NiA2MjlUMjYxIDYyOFEyMTkgNjE4IDIwNyA1NjhUMTk0IDQxOVYzNTVRMTk0IDIwMyAyMDAgMTU2VDIzMSA4NVEyNTAgNjYgMjc1IDY2UTI5OSA2NiAzMTggODVRMzQyIDEwOSAzNDggMTU2VDM1NSAzNTUnLFxuICAgIDB4MUQ3RUQ6ICcxMTggNTYwSDExNlExMDcgNTYwIDEwMCA1NjFUODUgNTcyVDc2IDYwMFE3NiA2MTIgNzcgNjE4VDgzIDYzMlQ5OSA2NDRRMTAyIDY0NSAxMzUgNjQ2VDIwNyA2NjBUMjc1IDcwMFEyOTIgNzE2IDMxMCA3MTZRMzUzIDcxNiAzNjAgNjkxUTM2MiA2ODUgMzYyIDM4NlY4N0g0NDZRNDY0IDc2IDQ2OCA2OVQ0NzMgNDRRNDczIDEyIDQ0NiAxSDExOFExMDUgNyAxMDAgMTNUOTQgMjVUOTMgNDRWNjJRMTAwIDc5IDExOSA4N0gyMTBWMzI5UTIxMCA1NzEgMjA4IDU3MVExODIgNTYwIDExOCA1NjAnLFxuICAgIDB4MUQ3RUU6ICczMzkgNDc3UTMzOSA1MDUgMzMyIDUzMVQzMDEgNTc5VDI0MiA2MDFRMTY1IDYwMSAxMzYgNTAzUTEzMyA0OTMgMTMwIDQ5MFQxMjEgNDg2UTExNiA0ODYgOTQgNTE0UTg2IDUyMyA4MiA1MjhRNDYgNTcyIDQ2IDU3N1E0NiA1OTEgNzcgNjMyVDE0NyA2OTFRMTkyIDcxNiAyNTcgNzE2UTMwNSA3MTYgMzUxIDcwMFE0MTYgNjc0IDQ1NSA2MTVUNDk0IDQ4MVE0OTQgNDIxIDQ2MyAzNzZUMzU2IDI2NlEzMjYgMjQwIDI4NyAyMDVUMjI0IDE0NlQxOTkgMTIySDMzMVEzNTkgMTIyIDM5MiAxMjJUNDMxIDEyM0g0NDVRNDg1IDEyMyA0OTIgOThRNDk0IDkyIDQ5NCA2MlY0N1E0OTQgOSA0NjggMlE0NjMgMCAyNzIgMEw4MyAxUTYzIDcgNTYgMjhMNTUgNTdWODlRNTkgOTcgMjE1IDI2MVEyNTUgMzAzIDI3NSAzMjdUMzE3IDM5NFQzMzkgNDc3JyxcbiAgICAweDFEN0VGOiAnNjEgNjI0UTYyIDYzMCA4MyA2NTBUMTUzIDY5M1QyNjIgNzE2UTMyOCA3MTYgMzczIDY5OFQ0MzggNjUwVDQ2NSA1OTNUNDczIDUzNlE0NzMgNDM4IDM3NSAzNzZMMzg3IDM3MVE0NTAgMzUwIDQ3NiAzMDVUNTAzIDIwOFE1MDMgMTY0IDQ5MiAxMjZUNDU2IDUzVDM4MCAtMlQyNjEgLTIyUTIyNCAtMjIgMTg5IC0xNVQxMzAgMlQ4NiAyNFQ1NyA0M1Q0NiA1M1E0NiA1NiA1MyA5OVQ2MiAxNDVRNjUgMTUyIDcxIDE1MlE3NiAxNTIgOTAgMTQzVDEyMyAxMjFUMTc1IDk5VDI0OCA4N1EzMDIgODcgMzIxIDExM1QzNDEgMjAyUTM0MSAyNjQgMzI5IDI5MlQyNzkgMzI5TDIzMiAzMzFMMTkwIDMzMkwxODQgMzM4VjQxMVExOTAgNDE3IDE5MiA0MTdRMTkzIDQxOCAyMDUgNDE5VDIzMiA0MjFUMjUyIDQyNFEyODAgNDMwIDI5OSA0NjFUMzE4IDUzOVY1NTFRMzE4IDU5OSAyODMgNjA5UTI3NiA2MTEgMjU3IDYxMVEyMjUgNjExIDE5OSA2MDFUMTU5IDU3N1QxMzYgNTU0VDEyMCA1NDNUMTAyIDU2MFQ3NiA1OTdUNjIgNjE4VDYxIDYyNCcsXG4gICAgMHgxRDdGMDogJzI3OCA2OTNIMjgyUTI4NSA2OTMgMjkxIDY5M1QzMDUgNjk0VDMyMiA2OTRUMzQyIDY5NEgzNzdRNDAyIDY5NCA0MTEgNjkxVDQzMCA2NzdRNDM0IDY3MCA0MzQgNjQ2VDQzNSA0NTZWMjQ5SDQ2MUg0NzJRNTA5IDI0OSA1MTYgMjI0UTUxOCAyMTkgNTE4IDE5NFE1MTggMTc4IDUxOCAxNzFUNTExIDE1NVQ0OTIgMTQyUTQ4OCAxNDAgNDYxIDE0MEg0MzVWODZWNTNRNDM1IDkgNDA5IDJRNDA1IDAgMzY2IDBIMzUxUTMwNiAwIDI5OCAyNVEyOTYgMzEgMjk2IDg2VjE0MEgxNzlIMTIzUTk5IDE0MCA4MCAxMjlUNTAgMTA2VDM3IDk1UTMxIDk1IDMxIDE2M1YyMDhRMzEgMjQ2IDMzIDI1MVEyNTEgNjczIDI2MiA2ODRRMjY4IDY5MSAyNzggNjkzWk0zMDIgMjQ5VjQxNkwzMDEgNTc2UTMwMSA1MzYgMTY1IDI3NkwxNTEgMjUwTDIyNiAyNDlIMzAyJyxcbiAgICAweDFEN0YxOiAnMTA5IDI4MlE4NyAyOTAgODMgMzEwVjY2NlE4MyA2NjcgODQgNjcwVDg3IDY3NlQ5MSA2ODJUOTggNjg4VDEwOCA2OTNRMTEyIDY5NCAyNjkgNjk0VDQzMSA2OTJRNDU3IDY4NiA0NTcgNjQ4VjYzN1Y2MjRRNDU3IDU4OCA0MzEgNTgxUTQyNiA1NzkgMzI2IDU3OUgyMjdWNTEwUTIyNyA0NDIgMjI5IDQ0MlEyNDMgNDUwIDI4OCA0NTBRMzc3IDQ1MCA0MzUgMzk5VDQ5NCAyMjJRNDk0IC0yMiAyNDEgLTIyUTIwMiAtMjIgMTY3IC0xMVQxMDkgMTZUNjkgNDlUNDUgNzlUMzcgOTRUNjkgMTUxUTkxIDE4NSA5NyAxODVRMTA1IDE4NSAxMTIgMTcwUTEyNyAxMzUgMTYwIDExMVQyNDAgODdRMjY2IDg3IDI4NCA5NFQzMTEgMTExVDMyNSAxNDJUMzMxIDE3OVQzMzIgMjI2UTMzMiAzMDcgMzI0IDMzNVQyODEgMzYzUTIyOCAzNjMgMTk3IDMwNlExODkgMjg5IDE3MiAyODJIMTA5JyxcbiAgICAweDFEN0YyOiAnNDE0IDU4OVE0MTAgNTg5IDM4OSA2MDBUMzM0IDYxMlEyNzUgNjEyIDI0MyA1NzVRMjA5IDUzOCAyMDIgNDMzVjQyMkwyMDkgNDMxUTI0MyA0ODcgMzE3IDQ4N1EzOTIgNDg3IDQ0MCA0NDJRNDc4IDQwMiA0OTAgMzU3VDUwMyAyMzZRNTAzIDExMyA0NTQgNTRRNDIxIDEzIDM4MSAtNFQyNzkgLTIyUTI2MyAtMjIgMjUwIC0yMVQyMTQgLTE1VDE3MyAxVDEzMyAzMFQ5NiA3N1Q2OCAxNDZUNTAgMjQyUTQ2IDI3OCA0NiAzMzZRNDYgNDA2IDUyIDQ0N1E4NCA2OTggMzEyIDcxNUwzMTUgNzE2UTMxOCA3MTYgMzIxIDcxNlEzMjMgNzE2IDMyOCA3MTZUMzM3IDcxNVEzOTggNzE1IDQyNSA2ODhWNTk2UTQxOSA1OTEgNDE0IDU4OVpNMjgyIDg3UTMyNCA4OSAzMzYgMTE3VDM0OCAyMzFRMzQ4IDMxMCAzNDMgMzQzVDMyNCAzODhUMjc3IDM5OVEyNDkgMzk5IDIzMSAzNzNUMjA4IDMxN1QyMDIgMjUzUTIwMiAyMDEgMjA3IDE2OFQyMjQgMTE3VDI0OSA5M1QyODIgODcnLFxuICAgIDB4MUQ3RjM6ICcxMzUgMzhRMTM1IDE5MCAxOTggMzM1VDM1MyA1NzJIMjE1UTE4NSA1NzIgMTUxIDU3MlQxMTAgNTcxSDk2UTU1IDU3MSA0OCA1OTZRNDYgNjAyIDQ2IDYzM1Y2NDhRNDYgNjg2IDcyIDY5M1E3NiA2OTUgMTI0IDY5NVExMzQgNjk1IDE4MyA2OTVUMjc0IDY5NFE0NzIgNjk0IDQ3NyA2OTJRNTAzIDY4NiA1MDMgNjQ4VjYzN1E1MDMgNjEyIDUwMiA2MDVUNDkxIDU4OFEzMDAgMzQ5IDI5MiA0NlYzNlEyOTIgLTQgMjY2IC05UTI2MiAtMTEgMjE0IC0xMUgxOTJRMTYwIC0xMSAxNDggLTNUMTM1IDM4JyxcbiAgICAweDFEN0Y0OiAnNjEgNTE4UTYxIDU3NCA3OSA2MTRUMTI4IDY3NlQxOTIgNzA2VDI2MyA3MTVIMjcwUTI5OCA3MTUgMzE4IDcxNFQzNzMgNzAxVDQzMCA2NzFUNDcwIDYxMlQ0ODggNTE3UTQ4OCA0NTkgNDU4IDQyM1QzOTAgMzc2UTM4OCAzNzUgMzkzIDM3M1EzOTUgMzcyIDM5OCAzNzFRNTAzIDMzMCA1MDMgMjA0UTUwMyAtMjIgMjc1IC0yMlEyMDkgLTIyIDE2MyAtM1Q5MiA0OVQ1NyAxMjBUNDYgMjA0UTQ2IDIzMCA1MCAyNTJUNjEgMjg5VDc3IDMxOFQ5NiAzMzlUMTE2IDM1M1QxMzQgMzYzVDE0OCAzNjlUMTU4IDM3M1QxNjAgMzc2UTExOCAzODkgOTAgNDI0VDYxIDUxOFpNMzQ0IDUzOFEzNDQgNTYzIDM0MCA1NzhUMzI2IDYwMFQzMDcgNjA5VDI3OSA2MTJRMjMyIDYxMiAyMTggNTk0VDIwNCA1MThRMjA0IDQ1OSAyMTYgNDM5VDI3NSA0MThRMzI4IDQxOCAzMzggNDUwUTM0NCA0NjQgMzQ0IDUxNVY1MzhaTTI0OCA4OFQyNzQgODhUMzE1IDk0VDMzOCAxMTdUMzQ2IDE0OVQzNDkgMTk3UTM0OSAyNjkgMzQyIDI5MFEzMzggMzA5IDMyMCAzMjBUMjc0IDMzMVEyNDYgMzMxIDIyOSAzMjBUMjA3IDI5MFEyMDAgMjY5IDIwMCAxOTdRMjAxIDE2MyAyMDIgMTQ5VDIxMCAxMThUMjMyIDk0JyxcbiAgICAweDFEN0Y1OiAnMzQ3IDI3MlEzNDYgMjcyIDM0MiAyNjZUMzMwIDI1MFQzMDkgMjMwVDI3NiAyMTRUMjMwIDIwN1ExODUgMjA3IDE1MCAyMjNRMTE2IDI0MCA5MCAyNzZUNTQgMzU3UTQ2IDM5MyA0NiA0NjhRNDYgNDY5IDQ2IDQ4NFQ0NyA1MDJUNDggNTIwVDUxIDU0MFQ1NSA1NTlUNjEgNTc5VDY5IDU5OVQ4MSA2MjBUOTYgNjQwVDExNSA2NjFRMTc0IDcxNiAyNzYgNzE2UTI5OSA3MTYgMzE3IDcxNFQzNjkgNjk4VDQyNiA2NThUNDcxIDU4MFQ0OTkgNDU2UTUwMyA0MDIgNTAzIDM0MlE1MDMgMTE1IDM5MiAyOVEzMjIgLTIyIDIzMSAtMjJRMTYzIC0yMiAxMTUgN0w4MiAzMVE3NiAzOCA4MSA0NlExMTYgMTEyIDEyNyAxMjNRMTMwIDEyNiAxMzQgMTI2VDE0OCAxMTZUMTc5IDk3VDIyNiA4N1EyODcgODcgMzE4IDEzMlEzMjMgMTM5IDMyNiAxNDZUMzMyIDE2NVQzMzcgMTgyVDM0MCAyMDRUMzQyIDIyNVQzNDUgMjQ5VDM0NyAyNzJaTTIwMSA1NDdUMjAxIDQ1NFQyMTEgMzI5VDI2MiAyOTRRMjc2IDI5NCAyODUgMjk2VDMxMCAzMTJUMzM1IDM1NVEzNDcgMzkxIDM0NyA0NDdRMzQ3IDUyMCAzNDAgNTUwVDMxNyA1OTVRMzAwIDYxMiAyNzcgNjEyUTIyNiA2MTIgMjE0IDU4MCcsXG4gICAgMHgxRDdGNjogJzQyIDMwNVE0MiA0NTAgMTExIDUzNVQyNTcgNjIxUTMzNSA2MjEgMzkwIDU2MlE0ODIgNDY4IDQ4MiAzMDZRNDgyIDE3NCA0MTggODJUMjYyIC0xMFQxMDYgODJUNDIgMzA1Wk0yNTcgNTQ1UTIwOSA1NDUgMTY4IDQ4MVQxMjYgMzIwUTEyNiAyMjAgMTYyIDE0N1EyMDQgNjUgMjYyIDY1UTMxOCA2NSAzNTggMTM5VDM5OCAzMjBWMzI4UTM5NSA0MTEgMzY0IDQ3MFQyODQgNTQzUTI3MCA1NDUgMjU3IDU0NScsXG4gICAgMHgxRDdGNzogJzk5IDQ2MVE5OSA0NzAgOTkgNDc0VDEwNCA0ODdUMTIwIDQ5OFQxNTEgNTAyUTIxMyA1MTcgMjUxIDU5NlEyNjQgNjIyIDI4MyA2MjJRMzA4IDYyMiAzMTkgNTk3Vjc2SDM3M0g0MDFRNDI4IDc2IDQzOSA2OVQ0NTAgMzhRNDUwIDExIDQyOCAxSDEyN1ExMDQgMTAgMTA0IDM4UTEwNCA2MiAxMTUgNjlUMTUzIDc2SDE4MUgyMzVWMjY5UTIzNSA0NjEgMjM0IDQ2MVExODQgNDI2IDEzNyA0MjRIMTMzUTEyNCA0MjQgMTE5IDQyNVQxMDkgNDMxVDk5IDQ0N1Y0NjEnLFxuICAgIDB4MUQ3Rjg6ICc1MiA0NjJRNTIgNTI4IDExMCA1NzVUMjQ3IDYyMkgyNTBRMzQzIDYyMiA0MDcgNTY1VDQ3MiA0MjFRNDcyIDM3MSA0NDYgMzI0VDM5MCAyNDhUMzA4IDE3OFEzMDcgMTc3IDI3NSAxNTFUMjE0IDEwMUwxODUgNzdRMTg1IDc2IDI4NiA3NkgzODhWODdRMzg4IDEwNSAzOTcgMTE0VDQzMCAxMjNUNDYzIDExNFE0NzAgMTA3IDQ3MSAxMDBUNDcyIDYxVjQyUTQ3MiAyNCA0NjggMTZUNDUwIDFINzVRNTMgMTAgNTMgMzJWMzhWNDhRNTMgNTcgNjMgNjdUMTI3IDEyMlExNTMgMTQ0IDE2OSAxNTdMMjg5IDI1NlEzODggMzQ1IDM4OCA0MTlRMzg4IDQ3MyAzNDYgNTA5VDIzMSA1NDVIMjI0UTE3NiA1NDUgMTQ2IDQ5OUwxNDQgNDk0UTE1NSA0NzYgMTU1IDQ1OVExNTQgNDU5IDE1NSA0NTVUMTU0IDQ0NFQxNDggNDMwVDEzNiA0MTdUMTE0IDQwOFExMTMgNDA4IDExMCA0MDhUMTA0IDQwN1E4MCA0MDcgNjYgNDIyVDUyIDQ2MicsXG4gICAgMHgxRDdGOTogJzI2MCA1NDZRMjMzIDU0NiAyMTEgNTQxVDE4MCA1MzFUMTcxIDUyNEwxNzQgNTE0UTE3NyA1MDUgMTc3IDQ5N1ExNzcgNDc2IDE2MiA0NjFUMTI1IDQ0NlExMDYgNDQ2IDkwIDQ1OVQ3MyA1MDRRNzYgNTQwIDk4IDU2NVQxNTAgNjAxVDIwMyA2MTZUMjM5IDYyMVEyNDEgNjIyIDI2NSA2MjJRMzIyIDYyMCAzNjIgNjAyVDQyMCA1NThUNDQ0IDUxM1Q0NTEgNDc4UTQ1MSAzODYgMzY5IDMyOUwzNzUgMzI2UTM4MSAzMjMgMzg2IDMyMFQ0MDEgMzExVDQxOSAyOThUNDM2IDI4M1Q0NTIgMjYzVDQ2NiAyNDBUNDc1IDIxMlQ0NzkgMTgwUTQ3OSA5OSA0MTYgNDRUMjU5IC0xMVQxMDUgMjhUNDQgMTMwUTQ0IDE1NCA1OSAxNjhUOTUgMTgzUTExNyAxODMgMTMyIDE2OVQxNDggMTMxUTE0OCAxMTkgMTM5IDEwMVExNzUgNjUgMjYwIDY1UTMxNiA2NSAzNTUgOTdUMzk1IDE3OVEzOTUgMjExIDM3NSAyNDBRMzM2IDI5MiAyNTMgMjkySDIzNEgyMTVRMTk0IDI5MiAxODUgMjk5VDE3NSAzMzBRMTc1IDM1MCAxODQgMzU5UTE5MiAzNjggMjM4IDM3MFQzMDkgMzg0UTMzNiAzOTggMzUxIDQyM1QzNjcgNDc0UTM2NyA0OTYgMzUwIDUxM1EzMjEgNTQ2IDI2MCA1NDYnLFxuICAgIDB4MUQ3RkE6ICcyMzUgMVEyMTMgMTAgMjEzIDMyVjM4VjQ2UTIxMyA2NSAyMzAgNzNRMjM2IDc2IDI3NCA3NkgzMTRWMTY4SDE4M0w1MiAxNjlRMzcgMTc1IDMzIDE4MlQyOSAyMDVWMjE4TDMwIDI0NFE1MyAyODMgMTU1IDQ0M1QyNjQgNjEzUTI3NiA2MjMgMjk4IDYyM0gzMjNIMzYzUTM3OCA2MTYgMzg1IDYwMVYyNDRINDI5SDQ1MFE0NzQgMjQ0IDQ4NCAyMzdUNDk1IDIwNlE0OTUgMTc5IDQ3NyAxNzFRNDcxIDE2OCA0MjkgMTY4SDM4NVY3Nkg0MjVINDQyUTQ2NiA3NiA0NzYgNjlUNDg3IDM4UTQ4NyAxMCA0NjUgMUgyMzVaTTMxNCAyNDRWNTU0TDExNyAyNDVMMjE1IDI0NEgzMTQnLFxuICAgIDB4MUQ3RkI6ICczODcgMTg5UTM4NyAyNDQgMzU0IDI3OFQyNzMgMzEzUTIzMCAzMTMgMjA1IDMwMVQxNjMgMjcxVDEzOCAyNDlIMTIwUTEwMiAyNDkgOTcgMjUxUTg1IDI1OCA4MyAyNjZUODAgMzExUTgwIDMyMCA4MCAzNTlUODEgNDMwUTgxIDU4NyA4MiA1OTFRODggNjA1IDEwMyA2MTBIMTA4UTExMiA2MTAgMTIwIDYxMFQxMzggNjEwVDE2MyA2MTBUMTkyIDYxMVQyMjUgNjExVDI2MCA2MTFINDE1UTQxNiA2MTAgNDIxIDYwN1Q0MjggNjAyVDQzMiA1OTZUNDM2IDU4N1Q0MzcgNTczUTQzNyA1NjcgNDM3IDU2MlQ0MzQgNTU0VDQzMSA1NDhUNDI3IDU0M1Q0MjMgNTQwVDQxOCA1MzhMNDE1IDUzNkwyODkgNTM1SDE2NFYzNjNMMTcwIDM2NlExNzUgMzY4IDE4NCAzNzJUMjA3IDM4MFQyMzggMzg2VDI3NiAzODlRMzU3IDM4OSA0MTQgMzMxVDQ3MiAxODdRNDcyIDExNiA0MTIgNTNUMjQ1IC0xMFEyMTggLTEwIDIwOSAtOVExMjYgNSA4OSA0OFQ1MiAxMzdRNTIgMTY0IDY4IDE3N1QxMDQgMTkxUTEzMCAxOTEgMTQzIDE3NVQxNTYgMTQxUTE1NiAxMzIgMTU0IDEyNVQxNDkgMTEzVDE0NiAxMDdRMTQ2IDEwNCAxNTUgOTVUMTg4IDc2VDI0NSA2NVEyOTggNjUgMzQyIDk4VDM4NyAxODknLFxuICAgIDB4MUQ3RkM6ICczNTcgNTM2UTM1NyA1NDYgMzE4IDU0NlEyNTggNTQ2IDIwNSA0OTdUMTMzIDM1N1YzNTNMMTQ0IDM2MVEyMTAgNDAyIDI4NSA0MDJRMzYyIDQwMiA0MTQgMzUwUTQ3OSAyODUgNDc5IDE5M1E0NzkgMTExIDQxOCA1MFQyNjMgLTExUTIzNCAtMTEgMjA3IC0zVDE0OSAyNlQ5NyA4MVQ2MCAxNzFUNDUgMzAxUTQ1IDQ0NCAxMjkgNTMzVDMxOSA2MjJRMzg4IDYyMiA0MjEgNTg5VDQ1NCA1MTBRNDU0IDQ5MSA0NDIgNDc1VDQwMiA0NThRMzczIDQ1OCAzNjIgNDc1VDM1MCA1MTBRMzUwIDUyMCAzNTQgNTI4TDM1NyA1MzZaTTMxOSAzMjZUMjY5IDMyNlQxNzkgMjk4VDEzNiAyMjNRMTM2IDIwMiAxNDMgMTc0VDE3NiAxMTJUMjM3IDY4UTI0NiA2NiAyNjUgNjZRMzE5IDY2IDM2MCAxMDdRMzk1IDE0NiAzOTUgMTk3UTM5NSAyNTAgMzU2IDI4OVEzMTkgMzI2IDI2OSAzMjYnLFxuICAgIDB4MUQ3RkQ6ICcyMDQgLTEwUTE2MiAtMTAgMTYyIDQwUTE2MiAxNDYgMTk4IDI2MVQzMTAgNDc3UTMxMSA0NzggMzIxIDQ5MVQzNDIgNTE3VDM1OCA1MzVIMTI4VjUyNFExMjggNTA2IDExOSA0OTdRMTExIDQ4OSA4NiA0ODlINzhRNTUgNDg5IDQ2IDUwOFE0NCA1MTMgNDQgNTU3VjU4MFE0NCA2MDUgNTIgNjE2VDg4IDYyN0g5M1ExMTQgNjI3IDEyNSA2MTFINDU4UTQ3NCA1OTggNDc3IDU5M1Q0ODAgNTczUTQ4MCA1NTkgNDc4IDU1M1Q0NjkgNTQzVDQ0NiA1MjFUNDA4IDQ3N1EyNTIgMjkwIDI0NiA0OVEyNDYgNDMgMjQ2IDM3VDI0NiAyN1QyNDUgMjJRMjQzIDExIDIzMyAxVDIwNCAtMTAnLFxuICAgIDB4MUQ3RkU6ICc1OCA0NjBRNTggNTIzIDExNyA1NzJUMjU0IDYyMVEyOTAgNjIxIDI5OCA2MjBRMzc2IDYwNyA0MjEgNTYwVDQ2NiA0NjBRNDY2IDQ0MSA0NjAgNDI0VDQ0MyAzOTNUNDIxIDM3MFQzOTcgMzUyVDM3NCAzNDBUMzU3IDMzMkwzNTAgMzMwTDM1NiAzMjhRMzYzIDMyNSAzNzEgMzIxVDM5MiAzMTBUNDE1IDI5NVQ0MzkgMjc0VDQ1OSAyNDlUNDczIDIxN1Q0NzkgMTc5UTQ3OSAxMDIgNDE4IDQ2VDI2MiAtMTBUMTA2IDQ2VDQ1IDE3OVE0NSAyMDIgNTIgMjIyVDcwIDI1N1Q5NiAyODRUMTIzIDMwNVQxNDggMzE5VDE2NyAzMjhMMTc0IDMzMEwxNzAgMzMyUTE2NiAzMzMgMTU5IDMzNlQxNDUgMzQzUTEwNCAzNjIgODEgMzkzVDU4IDQ2MFpNMzgyIDQ1OFEzODIgNDkxIDM0OSA1MThUMjYzIDU0NlEyMTUgNTQ2IDE3OSA1MjFUMTQyIDQ1OFExNDIgNDIxIDE3OCAzOTVUMjYyIDM2OFEzMTUgMzY4IDM0OCAzOTZUMzgyIDQ1OFpNMzk2IDE3OFEzOTYgMjIzIDM1OCAyNTdUMjYzIDI5MlEyMDYgMjkyIDE2NyAyNThUMTI4IDE3OFExMjggMTM3IDE2MyAxMDJUMjYyIDY2UTMyNCA2NiAzNjAgMTAxVDM5NiAxNzgnLFxuICAgIDB4MUQ3RkY6ICczOTIgMjU5UTMzMyAyMTAgMjM2IDIxMEgyMzNRMTYzIDIxMCAxMDkgMjYyUTQ2IDMyNSA0NiA0MTFUOTkgNTUwUTE2NCA2MjIgMjY0IDYyMlEyOTMgNjIyIDMxOSA2MTVUMzc2IDU4N1Q0MjggNTMyVDQ2NCA0NDBUNDc5IDMwNFE0NzkgMTY3IDQwMCA3OFQyMTcgLTExUTE0MCAtMTEgMTA1IDIyVDcwIDEwMVE3MCAxMjQgODQgMTM4VDEyMiAxNTNRMTUwIDE1MyAxNjIgMTM3VDE3NCAxMDFRMTc0IDkxIDE2OCA3NlExNzkgNjUgMjE2IDY1UTI2NyA2NSAzMDAgOTNRMzIyIDEwOSAzMzkgMTMwVDM2NiAxNzNUMzgwIDIxMFQzODggMjQyVDM5MiAyNTlaTTM4OCAzODlRMzg4IDQzOCAzNTcgNDkyVDI2OCA1NDZUMTg1IDUyMFExMjkgNDc5IDEyOSA0MTVRMTI5IDM4NCAxMzggMzYzUTE0NSAzNDkgMTU2IDMzNFQxOTUgMzAyVDI1NSAyODVRMzA1IDI4NSAzNDUgMzEzVDM4OCAzODknLFxufSx7XG4gICAgMHgyMDMzOiBcIlxcdTIwMzJcXHUyMDMyXCIsXG4gICAgMHgyMDM0OiBcIlxcdTIwMzJcXHUyMDMyXFx1MjAzMlwiLFxuICAgIDB4MjAzNjogXCJcXHUyMDM1XFx1MjAzNVwiLFxuICAgIDB4MjAzNzogXCJcXHUyMDM1XFx1MjAzNVxcdTIwMzVcIixcbiAgICAweDIwNTc6IFwiXFx1MjAzMlxcdTIwMzJcXHUyMDMyXFx1MjAzMlwiLFxuICAgIDB4MjIwNDogXCJcXHUyMjAzXFx1MDMzOFwiLFxuICAgIDB4MjIwQzogXCJcXHUyMjBCXFx1MDMzOFwiLFxuICAgIDB4MjI0NDogXCJcXHUyMjQzXFx1MDMzOFwiLFxuICAgIDB4MjI0OTogXCJcXHUyMjQ4XFx1MDMzOFwiLFxuICAgIDB4MjI2MjogXCJcXHUyMjYxXFx1MDMzOFwiLFxuICAgIDB4MjI2RDogXCJcXHUyMjREXFx1MDMzOFwiLFxuICAgIDB4MjI3NDogXCJcXHUyMjcyXFx1MDMzOFwiLFxuICAgIDB4MjI3NTogXCJcXHUyMjczXFx1MDMzOFwiLFxuICAgIDB4MjI3ODogXCJcXHUyMjc2XFx1MDMzOFwiLFxuICAgIDB4MjI3OTogXCJcXHUyMjc3XFx1MDMzOFwiLFxuICAgIDB4MjI4NDogXCJcXHUyMjgyXFx1MDMzOFwiLFxuICAgIDB4MjI4NTogXCJcXHUyMjgzXFx1MDMzOFwiLFxuICAgIDB4MjJFMjogXCJcXHUyMjkxXFx1MDMzOFwiLFxuICAgIDB4MjJFMzogXCJcXHUyMjkyXFx1MDMzOFwiLFxuICAgIDB4MkEwQzogXCJcXHUyMjJDXFx1MjIyQ1wiLFxufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NoYXJNYXAsIENoYXJPcHRpb25zfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5cbmV4cG9ydCBjb25zdCBzYW5zU2VyaWZCb2xkSXRhbGljOiBDaGFyTWFwPENoYXJPcHRpb25zPiA9IHtcbiAgICAweDEzMTogWy40NTgsIDAsIC4yNTZdLFxuICAgIDB4MjM3OiBbLjQ1OCwgLjIwNSwgLjI4Nl0sXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7U1ZHQ2hhck1hcCwgQWRkUGF0aHN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7c2Fuc1NlcmlmQm9sZEl0YWxpYyBhcyBmb250fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9udHMvdGV4L3NhbnMtc2VyaWYtYm9sZC1pdGFsaWMuanMnO1xuXG5leHBvcnQgY29uc3Qgc2Fuc1NlcmlmQm9sZEl0YWxpYzogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDEzMTogJzU0IDQzMVE2MyA0NTggMTAyIDQ1OEgxMjdIMTQ5UTE5MiA0NTggMTk5IDQzM1EyMDEgNDI3IDIwMSAyMjlUMTk5IDI1UTE5MCAwIDE0OSAwSDEyNUw4MSAxUTYxIDcgNTQgMjhWNDMxJyxcbiAgICAweDIzNzogJy0zOCAtODRRLTM2IC04NCAtMTQgLTk1VDMzIC0xMDZIMzhRNzAgLTEwMyA3OCAtODZRODMgLTc4IDgzIC00OVQ4NCAxODBRODQgNDI3IDg2IDQzM1E5MyA0NTggMTM2IDQ1OEgxNThIMTgwUTIwMSA0NTggMjA5IDQ1NlQyMjUgNDQzUTIzMCA0MzYgMjMxIDQxOFEyMzIgMzk3IDIzMiAzMTNWMTgzVjEyNFY0MFEyMzIgLTU1IDIyOCAtODdUMjAzIC0xNDdRMTY2IC0yMDUgNzggLTIwNVEzMSAtMjA1IC0yMCAtMTg5VC03MSAtMTU5US03MSAtMTU2IC01OSAtMTIzUS01MCAtOTYgLTQ3IC05MVQtMzggLTg0Jyxcbn0se1xufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NoYXJNYXAsIENoYXJPcHRpb25zfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5cbmV4cG9ydCBjb25zdCBzYW5zU2VyaWZCb2xkOiBDaGFyTWFwPENoYXJPcHRpb25zPiA9IHtcbiAgICAweDIxOiBbLjY5NCwgMCwgLjM2N10sXG4gICAgMHgyMjogWy42OTQsIC0wLjQ0MiwgLjU1OF0sXG4gICAgMHgyMzogWy42OTQsIC4xOTMsIC45MTddLFxuICAgIDB4MjQ6IFsuNzUsIC4wNTYsIC41NV0sXG4gICAgMHgyNTogWy43NSwgLjA1NiwgMS4wMjldLFxuICAgIDB4MjY6IFsuNzE2LCAuMDIyLCAuODMxXSxcbiAgICAweDI3OiBbLjY5NCwgLTAuNDQyLCAuMzA2XSxcbiAgICAweDI4OiBbLjc1LCAuMjQ5LCAuNDI4XSxcbiAgICAweDI5OiBbLjc1LCAuMjUsIC40MjhdLFxuICAgIDB4MkE6IFsuNzUsIC0wLjI5MywgLjU1XSxcbiAgICAweDJCOiBbLjYxNywgLjExNiwgLjg1Nl0sXG4gICAgMHgyQzogWy4xNDYsIC4xMDYsIC4zMDZdLFxuICAgIDB4MkQ6IFsuMjczLCAtMC4xODYsIC4zNjddLFxuICAgIDB4MkU6IFsuMTQ2LCAwLCAuMzA2XSxcbiAgICAweDJGOiBbLjc1LCAuMjQ5LCAuNTVdLFxuICAgIDB4M0E6IFsuNDU4LCAwLCAuMzA2XSxcbiAgICAweDNCOiBbLjQ1OCwgLjEwNiwgLjMwNl0sXG4gICAgMHgzRDogWy40MDcsIC0wLjA5NCwgLjg1Nl0sXG4gICAgMHgzRjogWy43MDUsIDAsIC41MTldLFxuICAgIDB4NDA6IFsuNzA0LCAuMDExLCAuNzMzXSxcbiAgICAweDVCOiBbLjc1LCAuMjUsIC4zNDNdLFxuICAgIDB4NUQ6IFsuNzUsIC4yNSwgLjM0M10sXG4gICAgMHg1RTogWy42OTQsIC0wLjUzNywgLjU1XSxcbiAgICAweDVGOiBbLTAuMDIzLCAuMTEsIC41NV0sXG4gICAgMHg3RTogWy4zNDQsIC0wLjE5OCwgLjU1XSxcbiAgICAweDEzMTogWy40NTgsIDAsIC4yNTZdLFxuICAgIDB4MjM3OiBbLjQ1OCwgLjIwNSwgLjI4Nl0sXG4gICAgMHgzMDA6IFsuNjk0LCAtMC41MzcsIDBdLFxuICAgIDB4MzAxOiBbLjY5NCwgLTAuNTM3LCAwXSxcbiAgICAweDMwMjogWy42OTQsIC0wLjUzNywgMF0sXG4gICAgMHgzMDM6IFsuNjk0LCAtMC41NDgsIDBdLFxuICAgIDB4MzA0OiBbLjY2LCAtMC41NiwgMF0sXG4gICAgMHgzMDY6IFsuNjk0LCAtMC41NTIsIDBdLFxuICAgIDB4MzA3OiBbLjY5NSwgLTAuNTk2LCAwXSxcbiAgICAweDMwODogWy42OTUsIC0wLjU5NSwgMF0sXG4gICAgMHgzMEE6IFsuNjk0LCAtMC41MzgsIDBdLFxuICAgIDB4MzBCOiBbLjY5NCwgLTAuNTM3LCAwXSxcbiAgICAweDMwQzogWy42NTcsIC0wLjUsIDBdLFxuICAgIDB4MjAxMzogWy4zMjcsIC0wLjI0LCAuNTVdLFxuICAgIDB4MjAxNDogWy4zMjcsIC0wLjI0LCAxLjFdLFxuICAgIDB4MjAxNTogWy4zMjcsIC0wLjI0LCAxLjFdLFxuICAgIDB4MjAxNzogWy0wLjAyMywgLjExLCAuNTVdLFxuICAgIDB4MjAxODogWy42OTQsIC0wLjQ0MywgLjMwNl0sXG4gICAgMHgyMDE5OiBbLjY5NCwgLTAuNDQyLCAuMzA2XSxcbiAgICAweDIwMUM6IFsuNjk0LCAtMC40NDMsIC41NThdLFxuICAgIDB4MjAxRDogWy42OTQsIC0wLjQ0MiwgLjU1OF0sXG4gICAgMHgyMDQ0OiBbLjc1LCAuMjQ5LCAuNTVdLFxuICAgIDB4MjIwNjogWy42OTQsIDAsIC45MTddLFxufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1NWR0NoYXJNYXAsIEFkZFBhdGhzfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge3NhbnNTZXJpZkJvbGQgYXMgZm9udH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZvbnRzL3RleC9zYW5zLXNlcmlmLWJvbGQuanMnO1xuXG5leHBvcnQgY29uc3Qgc2Fuc1NlcmlmQm9sZDogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDIxOiAnMTExIDY2OVExMTEgNjgwIDExMSA2ODJUMTEzIDY4OVQxMjEgNjkzVDEzNyA2OTRIMTg0SDI0OVEyNTUgNjg2IDI1NiA2ODFRMjQ0IDIyMCAyMzkgMjEzUTIzNiAyMDggMjI5IDIwOFQxODMgMjA3VDEzNyAyMDdUMTI3IDIxM1QxMTggNDMxVDExMSA2NjlaTTExMCA3MVY5NVExMTAgMTM3IDEzNiAxNDRRMTQwIDE0NiAxODMgMTQ2SDIwMFEyNDYgMTQ2IDI1NCAxMjFRMjU2IDExNSAyNTYgNzNWNTFRMjU2IDkgMjMwIDJRMjI1IDAgMTgxIDBMMTM4IDFRMTIxIDcgMTEzIDIxTDExMSAyOEwxMTAgNzEnLFxuICAgIDB4MjI6ICczOCA2ODdRNDIgNjkzIDQ1IDY5M1E0NiA2OTQgMTExIDY5NEgxNzZRMTc5IDY5MCAxODMgNjg3VjU1NkwxNDQgNTAxUTEzOSA0OTQgMTM0IDQ4NlQxMjYgNDc0VDEyMCA0NjVUMTE0IDQ1N1QxMTAgNDUxVDEwNiA0NDdUMTAyIDQ0NVQ5OCA0NDNUOTQgNDQzVDg5IDQ0Mkg3M0g2MlEzNyA0NDIgMzcgNDUzUTM3IDQ1OCA1NSA1MDFUNzQgNTQ2UTc0IDU0OCA1OSA1NDhMNDQgNTQ5TDM4IDU1NVY2ODdaTTI3NSA2ODdRMjc5IDY5MyAyODIgNjkzUTI4MyA2OTQgMzQ4IDY5NEg0MTNRNDE2IDY5MCA0MjAgNjg3VjU1NkwzODEgNTAxUTM3NiA0OTQgMzcxIDQ4NlQzNjMgNDc0VDM1NyA0NjVUMzUxIDQ1N1QzNDcgNDUxVDM0MyA0NDdUMzM5IDQ0NVQzMzUgNDQzVDMzMSA0NDNUMzI2IDQ0MkgzMTBIMjk5UTI3NCA0NDIgMjc0IDQ1M1EyNzQgNDU4IDI5MiA1MDFUMzExIDU0NlEzMTEgNTQ4IDI5NiA1NDhMMjgxIDU0OUwyNzUgNTU1VjY4NycsXG4gICAgMHgyMzogJzYxIDM2NVE2MSAzNzAgNjIgMzc1VDY1IDM4M1Q2OSAzOTBUNzQgMzk1VDgwIDM5OVQ4NSA0MDNUOTAgNDA2TDk0IDQwN0gzNDRMMzgxIDUzNlE0MTggNjY4IDQyNiA2ODBRNDMxIDY4NyA0NDUgNjkyUTQ1MSA2OTQgNDU3IDY5NFE0NzcgNjk0IDQ4OCA2ODJUNTAwIDY1MVE1MDAgNjQ1IDQ2NiA1MjhUNDMxIDQwOVE0MzEgNDA3IDUwNCA0MDdINTc3TDYwOSA1MjFRNjUxIDY2OCA2NTYgNjc1UTY2OSA2OTMgNjkxIDY5M1E3MTAgNjkzIDcyMSA2ODBUNzMzIDY1MVE3MzMgNjQ1IDY5OSA1MjhUNjY0IDQwOVE2NjQgNDA3IDc0MyA0MDdIODIzTDgyNyA0MDVRODMxIDQwMyA4MzQgNDAyVDg0MSAzOTdUODQ4IDM4OVQ4NTMgMzc5VDg1NSAzNjVRODU1IDMzNyA4MjMgMzI0TDczMSAzMjNINjM5TDYxOSAyNTNRNTk5IDE4MSA1OTggMTgwVjE3N0g4MjNMODI3IDE3NVE4MzEgMTczIDgzNCAxNzJUODQxIDE2N1Q4NDggMTU5VDg1MyAxNDlUODU1IDEzNVE4NTUgMTA3IDgyMyA5NEw2OTggOTNINTczTDU0MCAtMjFRNDk4IC0xNjggNDkzIC0xNzVRNDgwIC0xOTMgNDU4IC0xOTNRNDM5IC0xOTMgNDI4IC0xODBUNDE2IC0xNTFRNDE2IC0xNDQgNDUwIC0yN1Q0ODUgOTFRNDg1IDkzIDQxMiA5M0gzNDBMMzA3IC0yMVEyNjUgLTE2OCAyNjAgLTE3NVEyNDcgLTE5MyAyMjUgLTE5M1EyMDYgLTE5MyAxOTUgLTE4MFQxODMgLTE1MVExODMgLTE0NCAyMTcgLTI3VDI1MiA5MVEyNTIgOTMgMTczIDkzTDk0IDk0UTYxIDEwNSA2MSAxMzVRNjEgMTQwIDYyIDE0NVQ2NSAxNTNUNjkgMTYwVDc0IDE2NVQ4MCAxNjlUODUgMTczVDkwIDE3Nkw5NCAxNzdIMTg1TDI3NyAxNzhMMjk3IDI0OEwzMTggMzIwVjMyM0gyMDZMOTQgMzI0UTYxIDMzNSA2MSAzNjVaTTU1MSAzMjBWMzIzSDQ3OVE0MDYgMzIzIDQwNSAzMjJRNDA0IDMxOSAzODUgMjQ5VDM2NSAxNzhUNDM4IDE3N0w1MTAgMTc4TDUzMCAyNDhMNTUxIDMyMCcsXG4gICAgMHgyNDogJzIzMSA3MTJMMjMyIDcxNlEyMzIgNzE5IDIzMiA3MjJUMjM0IDcyOVQyMzkgNzM2VDI0NiA3NDNUMjU2IDc0OFQyNzEgNzUwUTMxOCA3NTAgMzE4IDcxMVY3MDNRMzkzIDY5MiA0NTEgNjU2UTQ2OSA2NDUgNDcwIDY0MFE0NzAgNjM1IDQ2MSA1ODdMNDUzIDUzN1E0NDUgNTI5IDQ0MiA1MjlRNDM4IDUyOSA0MjQgNTQwVDM4NCA1NjVUMzMwIDU4NVEzMjggNTg1IDMyNSA1ODVUMzIwIDU4NkwzMTggNTg3VjQzNFEzMjIgNDMzIDMzMyA0MjlUMzUwIDQyNFQzNjUgNDE4VDM4MiA0MDlUMzk5IDM5N1Q0MTkgMzgwUTQ4OCAzMTMgNDg4IDIxM1E0ODggMjQgMzM0IC01TDMxOCAtOFYtMTdRMzE4IC01NiAyNzkgLTU2SDI3MlEyNTMgLTU2IDI0MyAtNDZUMjMyIC0zMFQyMzEgLTE4Vi04SDIyNFExNzAgMiAxMjcgMjBUNjggNTBUNDkgNjdRNDkgNzEgNTggMTIyVDY4IDE3NlE3MSAxODIgNzkgMTgyUTgzIDE4MiA5OCAxNjlUMTQ1IDEzOFQyMTYgMTEwUTIyOCAxMDggMjI5IDEwOEgyMzFWMjg4UTE2NyAyOTkgMTE0IDM1NlQ2MSA0OTZRNjEgNTM3IDcwIDU3MFQ5NCA2MjRUMTI2IDY2MVQxNjIgNjg0VDE5NSA2OTZUMjE5IDcwMUwyMjggNzAySDIzMVY3MTJaTTIzMSA1MjFRMjMxIDU4MyAyMzAgNTgzUTIyNiA1ODIgMjIwIDU3OVQyMDQgNTYxVDE5MyA1MjFRMTkzIDQ5MSAyMTIgNDcyUTIyNiA0NTggMjMwIDQ1OFEyMzEgNDU4IDIzMSA1MjFaTTMxOCAxMTJRMzU2IDEzMSAzNTYgMTg3UTM1NiAyMzcgMzE4IDI2M1YxMTInLFxuICAgIDB4MjU6ICc2MSA1NDlRNjEgNzMzIDIxOCA3NDlRMjIwIDc0OSAyMjggNzQ5VDI0MSA3NTBRMjg2IDc1MCAzMjEgNzM1VDM2OSA3MDhUMzg5IDY4M1E0MjIgNjM0IDQyMiA1NDhWNTM4UTQyMiA1MTkgNDIwIDUwMVQ0MDggNDUzVDM4MSA0MDFUMzI4IDM2NFQyNDMgMzQ3UTYxIDM0NyA2MSA1NDlaTTI5MiA1NDlRMjkyIDY2MyAyNDIgNjYzUTIyMSA2NjMgMjExIDY0OFQxOTggNjE1VDE5NiA1NjZWNTQ4UTE5NiA0NzEgMjA2IDQ1NFEyMTggNDM0IDI0MiA0MzRRMjkyIDQzNCAyOTIgNTQ5Wk0yNDMgLTU1UTIyMyAtNTUgMjEyIC00MlQyMDEgLTEzUTIwMSAtMiAyMDcgN1EyMDkgMTEgNDgwIDM3MVQ3NTggNzM4UTc3MCA3NTAgNzg4IDc1MFE4MDUgNzUwIDgxNyA3MzhUODMwIDcwOVE4MzAgNjk0IDgyMCA2ODFMNTQ0IDMxNVEyNzMgLTQzIDI2OSAtNDdRMjU4IC01NSAyNDMgLTU1Wk02MDYgMTQ2UTYwNiAzMzAgNzYzIDM0NlE3NjQgMzQ2IDc3MyAzNDZUNzg2IDM0N1E4MzEgMzQ3IDg2NiAzMzJUOTE0IDMwNVQ5MzQgMjgwUTk2NiAyMzMgOTY2IDE0NlYxMzVROTY2IDExNSA5NjQgOTdUOTUyIDQ5VDkyNSAtMlQ4NzIgLTQwVDc4OCAtNTZRNjA2IC01NiA2MDYgMTQ2Wk03NDIgMTQ2VjEzMlE3NDIgMTA3IDc0MyA5M1Q3NDggNjJUNzYyIDM5VDc4NyAzMVE4MTkgMzEgODMyIDc5UTgzNyA5NyA4MzcgMTQ2UTgzNyAyNjAgNzg3IDI2MFE3NjcgMjYwIDc1NyAyNDZUNzQ0IDIxNFQ3NDIgMTY5VjE0NicsXG4gICAgMHgyNjogJzc1NyAxMTdRNzYyIDExNyA3NjkgMTEwVjNRNzU5IC03IDcxOCAtMTRUNjQxIC0yMlQ1NzEgLTE1VDUxOCAxVDQ3NyAxOVQ0NTMgMzFMNDM3IDIzUTM1MCAtMTkgMjU3IC0yMlExNTggLTIyIDEwMyAzMFQ0NyAxNTVRNDcgMTg4IDU3IDIxNlQ4NyAyNjNUMTE5IDI5MlQxNTEgMzEzTDE4MiAzMzNMMTg3IDMzNkwxODEgMzQ5UTE1MCA0MzEgMTUwIDUwNlExNTAgNjA1IDIxMSA2NjBUMzQ3IDcxNlE0MTcgNzE2IDQ3MSA2NjhUNTI2IDU0M1E1MjYgNTE3IDUxOCA0OTVUNDcxIDQzMlQzNjAgMzQzTDM0MiAzMzBRMzQyIDMyNyAzNTggMzA2VDQwMiAyNTBUNDU4IDE4OUw0NjcgMTgxUTUxOCAyMjUgNTU2IDI4OVQ2MDcgMzk1TDYyMCA0MzdRNjIyIDQ0MyA2MzAgNDQzUTYzMSA0NDMgNjc5IDQzMFE3MTggNDIwIDcyNSA0MThUNzMzIDQwOVE3MzMgNDAyIDcyMiAzNjVUNjcwIDI1NVQ1NzMgMTIzUTU2MiAxMTEgNTYzIDExMVE1ODkgOTQgNjQ0IDk0UTY3OCA5NCA3MDMgMTAwVDc0MCAxMTFUNzU3IDExN1pNMzk3IDU0NFEzOTcgNTczIDM4NCA2MDFUMzQ2IDYyOVEzMjAgNjI5IDI5OSA2MDdUMjc3IDUzOFEyNzcgNDg0IDI5NSA0MjlRMzAxIDQxMyAzMDEgNDEyUTMwMiA0MDkgMzA5IDQxNVEzOTcgNDc2IDM5NyA1NDRaTTIyNyAyNThRMTk3IDIyOCAxOTcgMTc3UTE5NyAxNTAgMjA3IDEyNlQyMzQgOTVRMjQyIDkzIDI1MSA5M1EyODggOTMgMzM3IDEwN0wzNDkgMTEwTDMyOCAxMzFRMjY2IDE5NiAyMzQgMjQ4TDIyNyAyNTgnLFxuICAgIDB4Mjc6ICc4MSA2ODdRODUgNjkzIDg4IDY5M1E4OSA2OTQgMTU0IDY5NEgyMTlRMjIyIDY5MCAyMjYgNjg3VjU1NkwxODcgNTAxUTE4MiA0OTQgMTc3IDQ4NlQxNjkgNDc0VDE2MyA0NjVUMTU3IDQ1N1QxNTMgNDUxVDE0OSA0NDdUMTQ1IDQ0NVQxNDEgNDQzVDEzNyA0NDNUMTMyIDQ0MkgxMTZIMTA1UTgwIDQ0MiA4MCA0NTNRODAgNDU4IDk4IDUwMVQxMTcgNTQ2UTExNyA1NDggMTAyIDU0OEw4NyA1NDlMODEgNTU1VjY4NycsXG4gICAgMHgyODogJzc5IDI1MFE3OSAzNTIgMTAwIDQ0MVQxNTIgNTg1VDIxMyA2NzhUMjY2IDczM0wyODcgNzQ5UTI4OCA3NTAgMzI0IDc1MEgzNTlRMzY2IDc0MSAzNjYgNzM4UTM2NiA3MzQgMzU2IDcyMVQzMjkgNjgyVDI5NiA2MjNUMjYyIDUzMVQyMzggNDA3UTIzMCAzNDYgMjMwIDI1MFEyMzAgMTQyIDI0NCA1NVQyNzggLTgyVDMxOCAtMTY1VDM1MiAtMjE1VDM2NiAtMjM4UTM2NiAtMjQyIDM1OSAtMjQ5SDI4NkwyNzcgLTI0MlE3OSAtNzQgNzkgMjUwJyxcbiAgICAweDI5OiAnNjEgNzM3UTYxIDc1MCA4NSA3NTBIMTA2SDE0MUwxNTAgNzQyUTM0OCA1NzQgMzQ4IDI1MFQxNTAgLTI0MkwxNDEgLTI0OUwxMDYgLTI1MEg4N1E2MSAtMjUwIDYxIC0yMzhRNjEgLTIzMyA3NCAtMjE2UTE1NyAtMTEzIDE4MyA1MVExOTcgMTMwIDE5NyAyNTBUMTgzIDQ0OVExNzQgNTA1IDE1OCA1NTRUMTI2IDYzNFQ5NSA2ODdUNzEgNzIyVDYxIDczNycsXG4gICAgMHgyQTogJzI0MSA1NzlRMjQxIDU4MiAyMjggNjM5VDIxNSA3MDJRMjE1IDcyMiAyMzMgNzM2VDI3MSA3NTBRMjk2IDc1MCAzMTUgNzM2VDMzNCA3MDJWNjk3UTMzNCA2OTMgMzI4IDY2NFQzMTQgNjA3TDMwOCA1NzlMMzUyIDYyMFEzODkgNjU0IDM5NyA2NjBUNDE3IDY2OFE0NDcgNjY4IDQ2NCA2NDdUNDgyIDYwMlE0ODIgNTkxIDQ3OSA1ODNUNDcyIDU2OVQ0NTkgNTU5VDQ0MyA1NTJUNDIxIDU0NlQzOTcgNTM4TDM0MiA1MjFMMzk3IDUwNFE0MDUgNTAxIDQyMCA0OTdUNDQyIDQ5MFQ0NTggNDgzVDQ3MiA0NzNUNDc5IDQ2MFQ0ODIgNDQwUTQ4MiA0MTYgNDY1IDM5NVQ0MTcgMzc0UTQwNiAzNzUgMzk4IDM4MVQzNTIgNDIyTDMwOCA0NjNMMzE0IDQzNVEzMjEgNDA3IDMyNyAzNzhUMzM0IDM0NVEzMzYgMzMzIDMyNyAzMTlUMjk2IDI5NVEyODggMjkzIDI3NSAyOTNRMjQxIDI5MyAyMjcgMzExVDIxNSAzNDVRMjE1IDM0OSAyMjEgMzc4VDIzNCA0MzVMMjQxIDQ2M0wxOTcgNDIyUTE2MCAzODggMTUyIDM4MlQxMzIgMzc0UTEwMiAzNzQgODUgMzk1VDY3IDQ0MFE2NyA0NTEgNzAgNDU5VDc3IDQ3M1Q5MCA0ODNUMTA2IDQ5MFQxMjggNDk2VDE1MiA1MDRMMjA3IDUyMUwxNTIgNTM4UTE0NCA1NDEgMTI5IDU0NVQxMDcgNTUyVDkxIDU1OVQ3NyA1NjlUNzAgNTgyVDY3IDYwMlE2NyA2MjYgODQgNjQ3VDEzMiA2NjhRMTQzIDY2NyAxNTEgNjYxVDE5NyA2MjBMMjQxIDU3OScsXG4gICAgMHgyQjogJzYxIDI1MFE2MSAyNzYgOTQgMjkySDM4NlY0MzZWNTM1UTM4NiA1NzcgMzg4IDU4OVQ0MDEgNjA3UTQxMSA2MTcgNDI3IDYxN1E0NTggNjE3IDQ2OCA1ODdRNDcwIDU4MSA0NzAgNDM2VjI5Mkg3NjJMNzY2IDI5MFE3NzAgMjg4IDc3MyAyODdUNzgwIDI4MlQ3ODcgMjc0VDc5MiAyNjRUNzk0IDI1MFE3OTQgMjIyIDc2MiAyMDlMNjE2IDIwOEg0NzBWNjRRNDcwIC04MSA0NjggLTg3UTQ1OCAtMTE2IDQyOCAtMTE2VDM4OCAtODdRMzg2IC04MSAzODYgNjRWMjA4SDI0MEw5NCAyMDlRNjEgMjIwIDYxIDI1MCcsXG4gICAgMHgyQzogJzgxIDEzOVE4NSAxNDUgODggMTQ1UTg5IDE0NiAxNTQgMTQ2SDIxOVEyMjIgMTQyIDIyNiAxMzlWOEwxODcgLTQ3UTE4MiAtNTQgMTc3IC02MlQxNjkgLTc0VDE2MyAtODNUMTU3IC05MVQxNTMgLTk3VDE0OSAtMTAxVDE0NSAtMTAzVDE0MSAtMTA1VDEzNyAtMTA1VDEzMiAtMTA2SDExNkgxMDVRODAgLTEwNiA4MCAtOTVRODAgLTkwIDk4IC00N1QxMTcgLTJRMTE3IDAgMTAyIDBMODcgMUw4MSA3VjEzOScsXG4gICAgMHgyRDogJzEyIDIzMFExMiAyNTcgMjYgMjY1VDgwIDI3NFE4OCAyNzQgMTE0IDI3NFQxNTggMjczVDIwMSAyNzNUMjM1IDI3NFEyNzYgMjc0IDI5MCAyNjZUMzA1IDIzMFQyOTEgMTk0VDIzNSAxODVRMjI2IDE4NSAyMDEgMTg1VDE1OSAxODZRMTQzIDE4NiAxMTkgMTg2VDg1IDE4NVE0MyAxODUgMjggMTkzVDEyIDIzMCcsXG4gICAgMHgyRTogJzIxOSAxNDZRMjIyIDE0MiAyMjYgMTM5VjdMMjIyIDRMMjE5IDFMMTU0IDBRMTAyIDAgOTQgMFQ4MiA2UTgwIDkgODAgNzRMODEgMTM5UTg1IDE0NSA4OCAxNDVRODkgMTQ2IDE1NCAxNDZIMjE5JyxcbiAgICAweDJGOiAnMTAzIC0yNDlRODEgLTI0OSA3MSAtMjM1VDYxIC0yMDdRNjEgLTIwMSA2MiAtMTk4UTY0IC0xOTIgMjM1IDI2NVQ0MDkgNzI3UTQxOCA3NTAgNDQ1IDc1MFE0NjQgNzUwIDQ3NiA3MzdUNDg4IDcwN1E0ODggNzAxIDMxMyAyMzRRMTQzIC0yMjUgMTM3IC0yMzJRMTI2IC0yNDkgMTAzIC0yNDknLFxuICAgIDB4M0E6ICcyMjYgMzE5TDIxOSAzMTNIODdMODEgMzE5TDgwIDM4NFE4MCA0MzcgODAgNDQ1VDg2IDQ1NlE4OSA0NTggMTU0IDQ1OEgyMTlRMjIyIDQ1NCAyMjYgNDUxVjMxOVpNMjE5IDE0NlEyMjIgMTQyIDIyNiAxMzlWN0wyMjIgNEwyMTkgMUwxNTQgMFExMDIgMCA5NCAwVDgyIDZRODAgOSA4MCA3NEw4MSAxMzlRODUgMTQ1IDg4IDE0NVE4OSAxNDYgMTU0IDE0NkgyMTknLFxuICAgIDB4M0I6ICcyMjYgMzE5TDIxOSAzMTNIODdMODEgMzE5TDgwIDM4NFE4MCA0MzcgODAgNDQ1VDg2IDQ1NlE4OSA0NTggMTU0IDQ1OEgyMTlRMjIyIDQ1NCAyMjYgNDUxVjMxOVpNODEgMTM5UTg1IDE0NSA4OCAxNDVRODkgMTQ2IDE1NCAxNDZIMjE5UTIyMiAxNDIgMjI2IDEzOVY4TDE4NyAtNDdRMTgyIC01NCAxNzcgLTYyVDE2OSAtNzRUMTYzIC04M1QxNTcgLTkxVDE1MyAtOTdUMTQ5IC0xMDFUMTQ1IC0xMDNUMTQxIC0xMDVUMTM3IC0xMDVUMTMyIC0xMDZIMTE2SDEwNVE4MCAtMTA2IDgwIC05NVE4MCAtOTAgOTggLTQ3VDExNyAtMlExMTcgMCAxMDIgMEw4NyAxTDgxIDdWMTM5JyxcbiAgICAweDNEOiAnOTQgMzI0UTYxIDMzNSA2MSAzNjZRNjEgMzk2IDkxIDQwNVE5NiA0MDcgNDI5IDQwN0g3NjJRNzYzIDQwNiA3NjcgNDA0VDc3NCA0MDBUNzgxIDM5NVQ3ODcgMzg3VDc5MiAzNzhUNzk0IDM2NVE3OTQgMzM4IDc2MiAzMjRIOTRaTTk0IDk0UTYxIDEwNSA2MSAxMzVRNjEgMTQ5IDY5IDE2MFQ5MiAxNzVROTcgMTc3IDQzMCAxNzdINzYyTDc2NiAxNzVRNzcwIDE3MyA3NzMgMTcyVDc4MCAxNjdUNzg3IDE1OVQ3OTIgMTQ5VDc5NCAxMzVRNzk0IDEwNyA3NjIgOTRIOTQnLFxuICAgIDB4M0Y6ICc2MSA2NDRRNjEgNjUyIDg3IDY2NlQxNTcgNjkzVDI0NCA3MDVRMzQ0IDcwNSA0MDAgNjcxVDQ1NyA1NTFRNDU3IDUxNiA0NDYgNDkwVDQyMiA0NTFUMzg3IDQyMVQzNTYgMzkxUTMzMCAzNjEgMzE4IDMzMlQzMDUgMjkyVDMwMyAyNTJRMzAzIDIxOCAzMDAgMjEzVDI5MCAyMDhUMjQ0IDIwN0gyMjBRMTk0IDIwNyAxODggMjEzUTE4NyAyMTQgMTg2IDIxNVYyNTVRMTg3IDI4MiAxODggMjk2VDE5OCAzNDVUMjI5IDQxN1QyODggNDk2UTMwNiA1MTUgMzA2IDU1OVEzMDYgNTk2IDI5NiA2MDdUMjUzIDYxOFEyMTQgNjE4IDE4NSA2MDdUMTQzIDU4M1QxMjAgNTU4VDEwMyA1NDdROTkgNTQ3IDk1IDU1MVE5MyA1NTMgNzcgNTk3VDYxIDY0NFpNMTcxIDcxVjk1UTE3MSAxMzcgMTk3IDE0NFEyMDEgMTQ2IDI0NCAxNDZIMjYxUTMwNyAxNDYgMzE1IDEyMVEzMTcgMTE1IDMxNyA3M1Y1MVEzMTcgOSAyOTEgMlEyODYgMCAyNDIgMEwxOTkgMVExODIgNyAxNzQgMjFMMTcyIDI4TDE3MSA3MScsXG4gICAgMHg0MDogJzYxIDI2NFQ2MSAzNDdUODIgNDk0VDEzNiA1OTZUMjE3IDY2MFQzMTEgNjk0VDQxMCA3MDRRNDYwIDcwNCA0NzEgNzAzUTUzNCA2OTQgNTc3IDY2NlE2MzMgNjIzIDY1MSA1NTJUNjcwIDM3MFYzNDJRNjcwIDI0OSA2MzMgMTk1UTU4MyAxMTYgNDU0IDExNlEyMzggMTE2IDIzOCAzNDdRMjM4IDQ0MyAyNzYgNDk5UTMyOCA1NzggNDU2IDU3OFE0ODggNTc4IDQ5NCA1NzdMNTA0IDU3NVE0NzUgNjE3IDQzMCA2MTdINDIxUTE5NiA2MTcgMTk2IDM0N1ExOTYgMjE1IDI1MyAxNDNRMzEwIDc2IDQyNyA3NlE0OTkgNzYgNTYxIDEwMkw1NzUgMTA3SDY2NFE2NzEgOTcgNjcxIDk0Vjg5TDY2MyA4MVE1NjYgLTExIDQyMiAtMTFRMzY1IC0xMSAzMTYgLTJUMjE5IDMzVDEzNyA5N1Q4MiAyMDBaTTQ2OSA0OTBRNDU5IDQ5MiA0NTMgNDkyUTQyOSA0OTIgNDA1IDQ3MlEzNzQgNDM5IDM3NCAzNDdRMzc0IDIzMyA0MjMgMjEwUTQzNiAyMDIgNDU0IDIwMkw0ODYgMjEwUTUzNiAyMjggNTM2IDM0N1E1MzYgNDYxIDQ4NiA0ODRRNDc2IDQ5MCA0NjkgNDkwJyxcbiAgICAweDVCOiAnMzE4IC0yMDZRMzE4IC0yMzUgMzA1IC0yNDNUMjU1IC0yNTFRMjQ4IC0yNTEgMjI5IC0yNTFUMTk4IC0yNTBIMTQzUTExMiAtMjUwIDk5IC0yNDZUODEgLTIyNVE3OSAtMjE5IDc5IDI1MFQ4MSA3MjVRODUgNzQxIDk4IDc0NVQxNDMgNzUwSDE5OFEyMTAgNzUwIDIyOSA3NTBUMjU1IDc1MVEyOTEgNzUxIDMwNCA3NDNUMzE4IDcwN1EzMTggNjgwIDMwMSA2NjhRMjkzIDY2MyAyNTUgNjYzSDIyNFYtMTYzSDI1NVEyOTMgLTE2MyAzMDEgLTE2OFEzMTggLTE4MCAzMTggLTIwNicsXG4gICAgMHg1RDogJzI0IDcwNlEyNCA3MzQgMzkgNzQyVDkwIDc1MVE5NyA3NTEgMTE0IDc1MVQxNDMgNzUwSDE5OFEyMzAgNzUwIDI0MyA3NDZUMjYxIDcyNVEyNjMgNzE5IDI2MyAyNTBUMjYxIC0yMjVRMjU3IC0yNDEgMjQ0IC0yNDVUMTk4IC0yNTBIMTQzUTEzMSAtMjUwIDExMiAtMjUwVDg2IC0yNTFRNTAgLTI1MSAzNyAtMjQzVDI0IC0yMDdRMjQgLTE4MCA0MSAtMTY4UTQ5IC0xNjMgODcgLTE2M0gxMThWNjYzSDg3SDcxUTI0IDY2MyAyNCA3MDYnLFxuICAgIDB4NUU6ICcxMDggNTUwUTEwOCA1NTQgMTM1IDU4OVQxOTAgNjU4VDIxOSA2OTJRMjIxIDY5NCAyNzUgNjk0UTMyOCA2OTQgMzMwIDY5M1EzMzEgNjkyIDM4MSA2MjlUNDM4IDU1N1E0NDEgNTUzIDQ0MSA1NDlUNDM0IDUzOEwzOTkgNTM3UTM2MyA1MzcgMzYyIDUzOFEzNjEgNTM4IDMxOCA1NzVMMjc1IDYxMVEyNzQgNjExIDIzMSA1NzVRMTg4IDUzOCAxODcgNTM4UTE4NiA1MzcgMTUwIDUzN0wxMTUgNTM4UTEwOCA1NDUgMTA4IDU1MCcsXG4gICAgMHg1RjogJzAgLTY2UTAgLTMyIDI2IC0yNVEzMCAtMjMgMjc0IC0yM1E0NjkgLTIzIDQ5NyAtMjNUNTMyIC0yOFE1NDkgLTQwIDU0OSAtNjdRNTQ5IC05MyA1MzIgLTEwNVE1MjUgLTEwOSA0OTggLTEwOVQyNzUgLTExMFEzMSAtMTEwIDI2IC0xMDhRMCAtMTAxIDAgLTY2JyxcbiAgICAweDdFOiAnOTIgMjE1UTkyIDI1OSAxMjIgMzAxVDIwNCAzNDRRMjM4IDM0NCAyNjQgMzI5VDMxMCAzMDBUMzQzIDI4NVEzNTYgMjg1IDM2MSAyOTVUMzY5IDMyMlQzNzcgMzQ0SDQ1MFE0NTcgMzM0IDQ1NyAzMzBRNDU3IDI4MSA0MjcgMjQwVDM0NCAxOThRMzEyIDE5OCAyODUgMjEzVDIzOSAyNDJUMjA2IDI1N1ExODggMjU3IDE4MiAyMzBUMTcyIDE5OUwxMzcgMTk4SDEyMFExMDIgMTk4IDk3IDIwMFQ5MiAyMTUnLFxuICAgIDB4MTMxOiAnNTQgNDMxUTYzIDQ1OCAxMDIgNDU4SDEyN0gxNDlRMTkyIDQ1OCAxOTkgNDMzUTIwMSA0MjcgMjAxIDIyOVQxOTkgMjVRMTkwIDAgMTQ5IDBIMTI1TDgxIDFRNjEgNyA1NCAyOFY0MzEnLFxuICAgIDB4MjM3OiAnLTM4IC04NFEtMzYgLTg0IC0xNCAtOTVUMzMgLTEwNkgzOFE3MCAtMTAzIDc4IC04NlE4MyAtNzggODMgLTQ5VDg0IDE4MFE4NCA0MjcgODYgNDMzUTkzIDQ1OCAxMzYgNDU4SDE1OEgxODBRMjAxIDQ1OCAyMDkgNDU2VDIyNSA0NDNRMjMwIDQzNiAyMzEgNDE4UTIzMiAzOTcgMjMyIDMxM1YxODNWMTI0VjQwUTIzMiAtNTUgMjI4IC04N1QyMDMgLTE0N1ExNjYgLTIwNSA3OCAtMjA1UTMxIC0yMDUgLTIwIC0xODlULTcxIC0xNTlRLTcxIC0xNTYgLTU5IC0xMjNRLTUwIC05NiAtNDcgLTkxVC0zOCAtODQnLFxuICAgIDB4MzAwOiAnLTQ1OCA2ODJRLTQ1OCA2OTAgLTQ1MiA2OTJULTQyNiA2OTRILTM4MUgtMzE0TC0zMTIgNjkxUS0zMTEgNjkxIC0zMDUgNjgyVC0yODcgNjU1VC0yNjMgNjIyTC0yMTggNTU1VjU0OVEtMjE4IDU0NCAtMjI0IDUzOEwtMjU5IDUzN1EtMjk1IDUzNyAtMjk2IDUzOFEtMjk4IDUzOSAtMzc2IDYwNlQtNDU2IDY3NlEtNDU4IDY4MCAtNDU4IDY4MicsXG4gICAgMHgzMDE6ICctMjkwIDUzN0gtMzEwUS0zMzQgNTM3IC0zMzQgNTQ5US0zMzQgNTUzIC0zMTEgNTg4VC0yNjQgNjU2TC0yNDEgNjkwUS0yNDAgNjkwIC0yMzkgNjkxVC0yMzYgNjkzUS0yMzUgNjk0IC0xNjcgNjk0SC0xMDBRLTkzIDY4NCAtOTMgNjgxVC05NCA2NzdRLTk1IDY3NSAtMTczIDYwN1QtMjU1IDUzOFEtMjU2IDUzNyAtMjkwIDUzNycsXG4gICAgMHgzMDI6ICctNDQyIDU1MFEtNDQyIDU1NCAtNDE1IDU4OVQtMzYwIDY1OFQtMzMxIDY5MlEtMzI5IDY5NCAtMjc1IDY5NFEtMjIyIDY5NCAtMjIwIDY5M1EtMjE5IDY5MiAtMTY5IDYyOVQtMTEyIDU1N1EtMTA5IDU1MiAtMTA5IDU0OVEtMTA5IDU0NSAtMTE2IDUzOEwtMTUxIDUzN1EtMTg3IDUzNyAtMTg4IDUzOFEtMTg5IDUzOCAtMjMyIDU3NUwtMjc1IDYxMVEtMjc2IDYxMSAtMzE5IDU3NVEtMzYyIDUzOCAtMzYzIDUzOFEtMzY0IDUzNyAtNDAwIDUzN0wtNDM1IDUzOFEtNDQyIDU0NSAtNDQyIDU1MCcsXG4gICAgMHgzMDM6ICctNDU4IDU2NVEtNDU4IDYwOSAtNDI4IDY1MVQtMzQ2IDY5NFEtMzEyIDY5NCAtMjg2IDY3OVQtMjQwIDY1MFQtMjA3IDYzNVEtMTk0IDYzNSAtMTg5IDY0NVQtMTgxIDY3MlQtMTczIDY5NEgtMTAwUS05MyA2ODQgLTkzIDY4MFEtOTMgNjMxIC0xMjMgNTkwVC0yMDYgNTQ4US0yMzggNTQ4IC0yNjUgNTYzVC0zMTEgNTkyVC0zNDQgNjA3US0zNjIgNjA3IC0zNjggNTgwVC0zNzggNTQ5TC00MTMgNTQ4SC00MzBRLTQ0OCA1NDggLTQ1MyA1NTBULTQ1OCA1NjUnLFxuICAgIDB4MzA0OiAnLTg0IDY2MFEtODEgNjU2IC03NyA2NTNWNTY3TC04MSA1NjRMLTg0IDU2MUwtMjc0IDU2MEgtMzgzUS00NjkgNTYwIC00NzEgNTY1TC00NzIgNTY2US00NzQgNTY5IC00NzQgNjExTC00NzMgNjUzUS00NjkgNjU5IC00NjYgNjU5US00NjUgNjYwIC0yNzQgNjYwSC04NCcsXG4gICAgMHgzMDY6ICctMTIzIDY5NFEtODAgNjk0IC04MCA2NTdRLTgwIDYyNiAtOTkgNjAxVC0xNjEgNTYzUS0xOTkgNTUyIC0yNzUgNTUyUS0zNTIgNTUyIC0zODkgNTYzUS00NzAgNTg2IC00NzAgNjU1US00NzAgNjY3IC00NjggNjczUS00NTcgNjk0IC00MzUgNjk0SC00MzFRLTQwOCA2OTQgLTM5NiA2ODVRLTM4NyA2NzYgLTM4NyA2NzFRLTM4NCA2NjEgLTI3NSA2NjFRLTE2NyA2NjEgLTE2NCA2NzFRLTE2NCA2NzQgLTE2MyA2NzdULTE1MSA2ODdULTEyMyA2OTQnLFxuICAgIDB4MzA3OiAnLTMyOSA1OTZRLTM0NiA2MDIgLTM1MSA2MTFULTM1NiA2MzhWNjQ2US0zNTYgNjUzIC0zNTYgNjU0VC0zNTYgNjYxVC0zNTUgNjY4VC0zNTMgNjczVC0zNTEgNjc5VC0zNDcgNjg0VC0zNDEgNjg5VC0zMzIgNjkzVC0yNzQgNjk1SC0yMjFRLTIwMiA2ODMgLTE5OCA2NzZULTE5NCA2NDVRLTE5NCA2MzIgLTE5NSA2MjVULTIwMiA2MTBULTIyMSA1OTZILTMyOScsXG4gICAgMHgzMDg6ICctMzMxIDY5NVEtMzEyIDY4MyAtMzA4IDY3NlQtMzA0IDY0NVEtMzA0IDYzMiAtMzA0IDYyNlQtMzExIDYxMFQtMzMxIDU5NkwtMzgwIDU5NUgtNDA4US00NDggNTk1IC00NTcgNjE3US00NTkgNjIxIC00NTkgNjQ1VC00NTcgNjczUS00NDggNjk2IC00MDkgNjk2US00MDUgNjk2IC0zOTYgNjk2VC0zODAgNjk1SC0zMzFaTS0yNDcgNjQ0US0yNDcgNjU4IC0yNDYgNjY1VC0yMzkgNjgwVC0yMjEgNjk0US0yMTcgNjk1IC0xNjkgNjk1SC0xNDNRLTEwMiA2OTUgLTkzIDY3MlEtOTEgNjY0IC05MSA2NDVWNjM1US05MSA2MTMgLTEwNiA2MDJRLTExMyA1OTcgLTEyMSA1OTZULTE3MSA1OTVMLTIxOSA1OTZRLTIzMiA2MDAgLTIzOCA2MDhULTI0NiA2MjJULTI0NyA2NDQnLFxuICAgIDB4MzBBOiAnLTM2NSA2MTZRLTM2NSA2NTggLTMzMSA2NzZULTI1NiA2OTRRLTI1MyA2OTQgLTI0NyA2OTRULTIzNiA2OTNRLTE2NiA2OTMgLTEzOSA2NjZRLTExOSA2NDQgLTExOSA2MTZULTEzOSA1NjVRLTE2NiA1MzggLTIzNyA1MzhILTI0MlEtMzY1IDUzOCAtMzY1IDYxNlpNLTE4MSA2MTZRLTE4MSA2NDEgLTE5NSA2NDdULTI0MiA2NTRRLTI1OCA2NTQgLTI2NiA2NTRULTI4NCA2NTBULTI5OCA2MzhULTMwMyA2MTZRLTMwMyA1OTIgLTI4OSA1ODVULTI0MiA1NzdRLTIwOSA1NzcgLTE5NSA1ODRULTE4MSA2MTYnLFxuICAgIDB4MzBCOiAnLTQyNiA2ODZRLTQyNCA2OTQgLTM5NCA2OTRILTM1MEgtMjgzUS0yNzcgNjg2IC0yNzcgNjgyUS0yNzcgNjczIC0zMTcgNjA4VC0zNjEgNTM4TC0zOTYgNTM3SC00MjBRLTQzMiA1MzcgLTQzNiA1MzlULTQ0MCA1NDhRLTQ0MCA1NjAgLTQzNCA2MTZRLTQzMiA2MzMgLTQzMCA2NTBULTQyNyA2NzdMLTQyNiA2ODZaTS0yNDMgNjg2US0yNDEgNjk0IC0yMTEgNjk0SC0xNjdILTEwMFEtOTQgNjg2IC05NCA2ODJRLTk0IDY3MyAtMTM0IDYwOFQtMTc4IDUzOEwtMjEzIDUzN0gtMjM3US0yNDkgNTM3IC0yNTMgNTM5VC0yNTcgNTQ4US0yNTcgNTYwIC0yNTEgNjE2US0yNDkgNjMzIC0yNDcgNjUwVC0yNDQgNjc3TC0yNDMgNjg2JyxcbiAgICAweDMwQzogJy00NDIgNjQ1US00NDIgNjU3IC00MTggNjU3SC0zOThRLTM5MyA2NTcgLTM4OCA2NTdULTM3OSA2NTdULTM3MSA2NTZULTM2NSA2NTZILTM2M0wtMzE5IDYyMEwtMjc2IDU4M1EtMjc1IDU4MyAtMjMyIDYxOVEtMTg5IDY1NiAtMTg4IDY1NlEtMTg3IDY1NyAtMTUxIDY1N0gtMTE2US0xMDkgNjQ5IC0xMDkgNjQ1US0xMDkgNjQyIC0xMTIgNjM3US0xMTggNjI5IC0xNjggNTY2VC0yMjAgNTAxUS0yMjIgNTAwIC0yNzUgNTAwUS0zMjkgNTAwIC0zMzEgNTAxUS00NDIgNjM0IC00NDIgNjQ1JyxcbiAgICAweDIwMTM6ICcwIDI4NFEwIDMxOCAyNiAzMjVRMzAgMzI3IDI3NCAzMjdRNDY5IDMyNyA0OTcgMzI3VDUzMiAzMjJRNTQ5IDMxMCA1NDkgMjgzUTU0OSAyNTcgNTMyIDI0NVE1MjUgMjQxIDQ5OCAyNDFUMjc1IDI0MFEzMSAyNDAgMjYgMjQyUTAgMjQ5IDAgMjg0JyxcbiAgICAweDIwMTQ6ICcwIDI4NFEwIDMxOCAyNiAzMjVRMzAgMzI3IDU0OSAzMjdUMTA3MyAzMjVRMTA5OSAzMTggMTA5OSAyODRRMTA5OSAyNDkgMTA3MyAyNDJRMTA2OCAyNDAgNTQ5IDI0MFEzMSAyNDAgMjYgMjQyUTAgMjQ5IDAgMjg0JyxcbiAgICAweDIwMTU6ICcwIDI4NFEwIDMxOCAyNiAzMjVRMzAgMzI3IDU0OSAzMjdUMTA3MyAzMjVRMTA5OSAzMTggMTA5OSAyODRRMTA5OSAyNDkgMTA3MyAyNDJRMTA2OCAyNDAgNTQ5IDI0MFEzMSAyNDAgMjYgMjQyUTAgMjQ5IDAgMjg0JyxcbiAgICAweDIwMTc6ICcwIC02NlEwIC0zMiAyNiAtMjVRMzAgLTIzIDI3NCAtMjNRNDY5IC0yMyA0OTcgLTIzVDUzMiAtMjhRNTQ5IC00MCA1NDkgLTY3UTU0OSAtOTMgNTMyIC0xMDVRNTI1IC0xMDkgNDk4IC0xMDlUMjc1IC0xMTBRMzEgLTExMCAyNiAtMTA4UTAgLTEwMSAwIC02NicsXG4gICAgMHgyMDE4OiAnODcgNDQzTDgxIDQ0OVY1ODFMMTE5IDYzNlExMjUgNjQ0IDEzMSA2NTNUMTQxIDY2N1QxNDggNjc3VDE1NCA2ODVUMTU4IDY4OVQxNjMgNjkyVDE2NyA2OTNUMTczIDY5NEgxOTBIMjAxUTIyNiA2OTQgMjI2IDY4M1EyMjYgNjc4IDIwOCA2MzVUMTg5IDU5MFExODkgNTg4IDIwNCA1ODhIMjE5UTIyMiA1ODQgMjI2IDU4MVY0NDlMMjE5IDQ0M0g4NycsXG4gICAgMHgyMDE5OiAnODEgNjg3UTg1IDY5MyA4OCA2OTNRODkgNjk0IDE1NCA2OTRIMjE5UTIyMiA2OTAgMjI2IDY4N1Y1NTZMMTg3IDUwMVExODIgNDk0IDE3NyA0ODZUMTY5IDQ3NFQxNjMgNDY1VDE1NyA0NTdUMTUzIDQ1MVQxNDkgNDQ3VDE0NSA0NDVUMTQxIDQ0M1QxMzcgNDQzVDEzMiA0NDJIMTE2SDEwNVE4MCA0NDIgODAgNDUzUTgwIDQ1OCA5OCA1MDFUMTE3IDU0NlExMTcgNTQ4IDEwMiA1NDhMODcgNTQ5TDgxIDU1NVY2ODcnLFxuICAgIDB4MjAxQzogJzE0NCA0NDNMMTM4IDQ0OVY1ODFMMTc2IDYzNlExODIgNjQ0IDE4OCA2NTNUMTk4IDY2N1QyMDUgNjc3VDIxMSA2ODVUMjE1IDY4OVQyMjAgNjkyVDIyNCA2OTNUMjMwIDY5NEgyNDdIMjU4UTI4MyA2OTQgMjgzIDY4M1EyODMgNjc4IDI2NSA2MzVUMjQ2IDU5MFEyNDYgNTg4IDI2MSA1ODhIMjc2UTI3OSA1ODQgMjgzIDU4MVY0NDlMMjc2IDQ0M0gxNDRaTTM4MSA0NDNMMzc1IDQ0OVY1ODFMNDEzIDYzNlE0MTkgNjQ0IDQyNSA2NTNUNDM1IDY2N1Q0NDIgNjc3VDQ0OCA2ODVUNDUyIDY4OVQ0NTcgNjkyVDQ2MSA2OTNUNDY3IDY5NEg0ODRINDk1UTUyMCA2OTQgNTIwIDY4M1E1MjAgNjc4IDUwMiA2MzVUNDgzIDU5MFE0ODMgNTg4IDQ5OCA1ODhINTEzUTUxNiA1ODQgNTIwIDU4MVY0NDlMNTEzIDQ0M0gzODEnLFxuICAgIDB4MjAxRDogJzM4IDY4N1E0MiA2OTMgNDUgNjkzUTQ2IDY5NCAxMTEgNjk0SDE3NlExNzkgNjkwIDE4MyA2ODdWNTU2TDE0NCA1MDFRMTM5IDQ5NCAxMzQgNDg2VDEyNiA0NzRUMTIwIDQ2NVQxMTQgNDU3VDExMCA0NTFUMTA2IDQ0N1QxMDIgNDQ1VDk4IDQ0M1Q5NCA0NDNUODkgNDQySDczSDYyUTM3IDQ0MiAzNyA0NTNRMzcgNDU4IDU1IDUwMVQ3NCA1NDZRNzQgNTQ4IDU5IDU0OEw0NCA1NDlMMzggNTU1VjY4N1pNMjc1IDY4N1EyNzkgNjkzIDI4MiA2OTNRMjgzIDY5NCAzNDggNjk0SDQxM1E0MTYgNjkwIDQyMCA2ODdWNTU2TDM4MSA1MDFRMzc2IDQ5NCAzNzEgNDg2VDM2MyA0NzRUMzU3IDQ2NVQzNTEgNDU3VDM0NyA0NTFUMzQzIDQ0N1QzMzkgNDQ1VDMzNSA0NDNUMzMxIDQ0M1QzMjYgNDQySDMxMEgyOTlRMjc0IDQ0MiAyNzQgNDUzUTI3NCA0NTggMjkyIDUwMVQzMTEgNTQ2UTMxMSA1NDggMjk2IDU0OEwyODEgNTQ5TDI3NSA1NTVWNjg3JyxcbiAgICAweDIwNDQ6ICcxMDMgLTI0OVE4MSAtMjQ5IDcxIC0yMzVUNjEgLTIwN1E2MSAtMjAxIDYyIC0xOThRNjQgLTE5MiAyMzUgMjY1VDQwOSA3MjdRNDE4IDc1MCA0NDUgNzUwUTQ2NCA3NTAgNDc2IDczN1Q0ODggNzA3UTQ4OCA3MDEgMzEzIDIzNFExNDMgLTIyNSAxMzcgLTIzMlExMjYgLTI0OSAxMDMgLTI0OScsXG4gICAgMHgyMjA2OiAnMzgxIDY5MlEzODYgNjk0IDQ1OCA2OTRRNTE2IDY5NCA1MjcgNjkzVDU0OSA2ODdRNTY0IDY4MCA1NzUgNjYzUTU3NiA2NTggNzE1IDM0OVQ4NTYgMjdRODU2IDYgODM4IDFIODI2UTgxNSAxIDc5NSAxVDc0NyAxVDY4NiAxVDYxNiAwVDUzOSAwVDQ1OCAwVDM3OCAwVDMwMCAwVDIzMCAwVDE2OSAxVDEyMiAxVDkwIDFINzhRNjAgNiA2MCAyN1E2MiAzOCAyMDEgMzQ5VDM0MSA2NjNRMzU2IDY4NyAzODEgNjkyWk02MjcgMTQ4UTYyNiAxNDkgNTgxIDI1MFQ0OTIgNDUzTDQ0NyA1NTRRNDQ3IDU1MyA0NDYgNTUyUTQ0NCA1NDYgMzI2IDI3OEwyNjggMTQ4UTI2OCAxNDcgNDQ4IDE0N1E2MjcgMTQ3IDYyNyAxNDgnLFxufSx7XG59KTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IHNhbnNTZXJpZkl0YWxpYzogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHgyMTogWy42OTQsIDAsIC4zMTksIHtpYzogLjAzNn1dLFxuICAgIDB4MjI6IFsuNjk0LCAtMC40NzEsIC41XSxcbiAgICAweDIzOiBbLjY5NCwgLjE5NCwgLjgzMywge2ljOiAuMDE4fV0sXG4gICAgMHgyNDogWy43NSwgLjA1NiwgLjUsIHtpYzogLjA2NX1dLFxuICAgIDB4MjU6IFsuNzUsIC4wNTYsIC44MzNdLFxuICAgIDB4MjY6IFsuNzE2LCAuMDIyLCAuNzU4XSxcbiAgICAweDI3OiBbLjY5NCwgLTAuNDcxLCAuMjc4LCB7aWM6IC4wNTd9XSxcbiAgICAweDI4OiBbLjc1LCAuMjUsIC4zODksIHtpYzogLjEwMn1dLFxuICAgIDB4Mjk6IFsuNzUsIC4yNSwgLjM4OV0sXG4gICAgMHgyQTogWy43NSwgLTAuMzA2LCAuNSwge2ljOiAuMDY4fV0sXG4gICAgMHgyQjogWy41ODMsIC4wODMsIC43NzhdLFxuICAgIDB4MkM6IFsuMDk4LCAuMTI1LCAuMjc4XSxcbiAgICAweDJEOiBbLjI1OSwgLTAuMTg2LCAuMzMzXSxcbiAgICAweDJFOiBbLjA5OCwgMCwgLjI3OF0sXG4gICAgMHgyRjogWy43NSwgLjI1LCAuNSwge2ljOiAuMX1dLFxuICAgIDB4MzA6IFsuNjc4LCAuMDIyLCAuNSwge2ljOiAuMDQ5fV0sXG4gICAgMHgzMTogWy42NzgsIDAsIC41XSxcbiAgICAweDMyOiBbLjY3OCwgMCwgLjUsIHtpYzogLjA1MX1dLFxuICAgIDB4MzM6IFsuNjc4LCAuMDIyLCAuNSwge2ljOiAuMDQ0fV0sXG4gICAgMHgzNDogWy42NTYsIDAsIC41LCB7aWM6IC4wMjF9XSxcbiAgICAweDM1OiBbLjY1NiwgLjAyMiwgLjUsIHtpYzogLjA1NX1dLFxuICAgIDB4MzY6IFsuNjc4LCAuMDIyLCAuNSwge2ljOiAuMDQ4fV0sXG4gICAgMHgzNzogWy42NTYsIC4wMTEsIC41LCB7aWM6IC4wOTZ9XSxcbiAgICAweDM4OiBbLjY3OCwgLjAyMiwgLjUsIHtpYzogLjA1NH1dLFxuICAgIDB4Mzk6IFsuNjc3LCAuMDIyLCAuNSwge2ljOiAuMDQ1fV0sXG4gICAgMHgzQTogWy40NDQsIDAsIC4yNzhdLFxuICAgIDB4M0I6IFsuNDQ0LCAuMTI1LCAuMjc4XSxcbiAgICAweDNEOiBbLjM3LCAtMC4xMywgLjc3OCwge2ljOiAuMDE4fV0sXG4gICAgMHgzRjogWy43MDQsIDAsIC40NzIsIHtpYzogLjA2NH1dLFxuICAgIDB4NDA6IFsuNzA1LCAuMDEsIC42NjcsIHtpYzogLjA0fV0sXG4gICAgMHg1QjogWy43NSwgLjI1LCAuMjg5LCB7aWM6IC4xMzZ9XSxcbiAgICAweDVEOiBbLjc1LCAuMjUsIC4yODksIHtpYzogLjA2NH1dLFxuICAgIDB4NUU6IFsuNjk0LCAtMC41MjcsIC41LCB7aWM6IC4wMzN9XSxcbiAgICAweDVGOiBbLTAuMDM4LCAuMTE0LCAuNSwge2ljOiAuMDY1fV0sXG4gICAgMHg3RTogWy4zMjcsIC0wLjE5MywgLjUsIHtpYzogLjA2fV0sXG4gICAgMHgxMzE6IFsuNDQ0LCAwLCAuMjM5LCB7aWM6IC4wMTl9XSxcbiAgICAweDIzNzogWy40NDQsIC4yMDQsIC4yNjcsIHtpYzogLjAxOX1dLFxuICAgIDB4MzAwOiBbLjY5NCwgLTAuNTI3LCAwXSxcbiAgICAweDMwMTogWy42OTQsIC0wLjUyNywgMCwge2ljOiAuMDYzfV0sXG4gICAgMHgzMDI6IFsuNjk0LCAtMC41MjcsIDAsIHtpYzogLjAzM31dLFxuICAgIDB4MzAzOiBbLjY3NywgLTAuNTQzLCAwLCB7aWM6IC4wNn1dLFxuICAgIDB4MzA0OiBbLjYzMSwgLTAuNTUyLCAwLCB7aWM6IC4wNjR9XSxcbiAgICAweDMwNjogWy42OTQsIC0wLjUwOCwgMCwge2ljOiAuMDczfV0sXG4gICAgMHgzMDc6IFsuNjgsIC0wLjU3NiwgMF0sXG4gICAgMHgzMDg6IFsuNjgsIC0wLjU4MiwgMCwge2ljOiAuMDR9XSxcbiAgICAweDMwQTogWy42OTMsIC0wLjUyNywgMF0sXG4gICAgMHgzMEI6IFsuNjk0LCAtMC41MjcsIDAsIHtpYzogLjA2M31dLFxuICAgIDB4MzBDOiBbLjY1NCwgLTAuNDg3LCAwLCB7aWM6IC4wNn1dLFxuICAgIDB4MzkxOiBbLjY5NCwgMCwgLjY2N10sXG4gICAgMHgzOTI6IFsuNjk0LCAwLCAuNjY3LCB7aWM6IC4wMjl9XSxcbiAgICAweDM5MzogWy42OTEsIDAsIC41NDIsIHtpYzogLjEwNH1dLFxuICAgIDB4Mzk0OiBbLjY5NCwgMCwgLjgzM10sXG4gICAgMHgzOTU6IFsuNjkxLCAwLCAuNTk3LCB7aWM6IC4wOTF9XSxcbiAgICAweDM5NjogWy42OTQsIDAsIC42MTEsIHtpYzogLjA5MX1dLFxuICAgIDB4Mzk3OiBbLjY5NCwgMCwgLjcwOCwge2ljOiAuMDZ9XSxcbiAgICAweDM5ODogWy43MTUsIC4wMjIsIC43NzgsIHtpYzogLjAyNn1dLFxuICAgIDB4Mzk5OiBbLjY5NCwgMCwgLjI3OCwge2ljOiAuMDZ9XSxcbiAgICAweDM5QTogWy42OTQsIDAsIC42OTQsIHtpYzogLjA5MX1dLFxuICAgIDB4MzlCOiBbLjY5NCwgMCwgLjYxMV0sXG4gICAgMHgzOUM6IFsuNjk0LCAwLCAuODc1LCB7aWM6IC4wNTR9XSxcbiAgICAweDM5RDogWy42OTQsIDAsIC43MDgsIHtpYzogLjA1OH1dLFxuICAgIDB4MzlFOiBbLjY4OCwgMCwgLjY2Nywge2ljOiAuMDk4fV0sXG4gICAgMHgzOUY6IFsuNzE2LCAuMDIyLCAuNzM2LCB7aWM6IC4wMjd9XSxcbiAgICAweDNBMDogWy42OTEsIDAsIC43MDgsIHtpYzogLjA2fV0sXG4gICAgMHgzQTE6IFsuNjk0LCAwLCAuNjM5LCB7aWM6IC4wNTF9XSxcbiAgICAweDNBMzogWy42OTQsIDAsIC43MjIsIHtpYzogLjA5MX1dLFxuICAgIDB4M0E0OiBbLjY4OCwgMCwgLjY4MSwge2ljOiAuMTA5fV0sXG4gICAgMHgzQTU6IFsuNzE2LCAwLCAuNzc4LCB7aWM6IC4wNjV9XSxcbiAgICAweDNBNjogWy42OTQsIDAsIC43MjIsIHtpYzogLjAyMX1dLFxuICAgIDB4M0E3OiBbLjY5NCwgMCwgLjY2Nywge2ljOiAuMDkxfV0sXG4gICAgMHgzQTg6IFsuNjk0LCAwLCAuNzc4LCB7aWM6IC4wNzZ9XSxcbiAgICAweDNBOTogWy43MTYsIDAsIC43MjIsIHtpYzogLjA0N31dLFxuICAgIDB4MjAxMzogWy4zMTIsIC0wLjIzNiwgLjUsIHtpYzogLjA2NX1dLFxuICAgIDB4MjAxNDogWy4zMTIsIC0wLjIzNiwgMSwge2ljOiAuMDY1fV0sXG4gICAgMHgyMDE1OiBbLjMxMiwgLTAuMjM2LCAxLCB7aWM6IC4wNjV9XSxcbiAgICAweDIwMTc6IFstMC4wMzgsIC4xMTQsIC41LCB7aWM6IC4wNjV9XSxcbiAgICAweDIwMTg6IFsuNjk0LCAtMC40NzEsIC4yNzgsIHtpYzogLjA1OH1dLFxuICAgIDB4MjAxOTogWy42OTQsIC0wLjQ3MSwgLjI3OCwge2ljOiAuMDU3fV0sXG4gICAgMHgyMDFDOiBbLjY5NCwgLTAuNDcxLCAuNSwge2ljOiAuMTE0fV0sXG4gICAgMHgyMDFEOiBbLjY5NCwgLTAuNDcxLCAuNV0sXG4gICAgMHgyMDQ0OiBbLjc1LCAuMjUsIC41LCB7aWM6IC4xfV0sXG4gICAgMHgyMjA2OiBbLjY5NCwgMCwgLjgzM10sXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7U1ZHQ2hhck1hcCwgQWRkUGF0aHN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7c2Fuc1NlcmlmSXRhbGljIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvc2Fucy1zZXJpZi1pdGFsaWMuanMnO1xuXG5leHBvcnQgY29uc3Qgc2Fuc1NlcmlmSXRhbGljOiBTVkdDaGFyTWFwID0gQWRkUGF0aHMoZm9udCwge1xuICAgIDB4MjE6ICcxNjAgMTg3TDI1NyA2OTRIMzA2UTM1NSA2OTQgMzU1IDY5M0wyMzggMTg2SDE5OVExNjAgMTg2IDE2MCAxODdaTTExMCAyUTExMSAzIDEyMCA0OVQxMzEgOTZRMTMxIDk4IDE4MCA5OFQyMjkgOTZMMjE5IDUwUTIwOSAzIDIwOCAyVjBIMTEwVjInLFxuICAgIDB4MjI6ICcxNzEgNjQ3TDE4MCA2OTRIMjI5UTI3OCA2OTQgMjc4IDY5M0wyNzYgNjg2UTI3NSA2ODAgMjczIDY2OFQyNjggNjQ0TDI1OCA1OTdMMTgyIDQ3MUgxNTdRMTMzIDQ3MSAxMzMgNDcyTDE4OSA1OTVRMTg5IDU5NiAxNzQgNTk2SDE2MFY1OThRMTYwIDYwMSAxNzEgNjQ3Wk0zNjUgNjQ3TDM3NCA2OTRINDIzUTQ3MiA2OTQgNDcyIDY5M0w0NzAgNjg2UTQ2OSA2ODAgNDY3IDY2OFQ0NjIgNjQ0TDQ1MiA1OTdMMzc2IDQ3MUgzNTFRMzI3IDQ3MSAzMjcgNDcyTDM4MyA1OTVRMzgzIDU5NiAzNjggNTk2SDM1NFY1OThRMzU0IDYwMSAzNjUgNjQ3JyxcbiAgICAweDIzOiAnNzkzIDE3MFE4MDkgMTYyIDgwOSAxNDlRODA5IDE0NSA4MDcgMTQxVDgwMiAxMzVUNzk2IDEzMkw3OTMgMTMwSDU0N0w0NzIgLTI3UTM5NyAtMTg0IDM5NCAtMTg3UTM4OSAtMTk0IDM3OSAtMTk0UTM2NyAtMTk0IDM2MiAtMTgzUTM1OSAtMTc5IDM1OSAtMTczUTM2MCAtMTY4IDQzMSAtMjBMNTAzIDEyOVE1MDMgMTMwIDQxMCAxMzBIMzE3TDI0MiAtMjdRMTY3IC0xODQgMTY0IC0xODdRMTU5IC0xOTQgMTQ5IC0xOTRRMTM3IC0xOTQgMTMyIC0xODNRMTI5IC0xNzkgMTI5IC0xNzNRMTMwIC0xNjggMjAxIC0xOUwyNzMgMTMwSDE4N0wxMDAgMTMxUTg3IDE0MSA4NyAxNTBRODcgMTYyIDEwMiAxNzBIMjk0TDMzMSAyNDhRMzM5IDI2NSAzNDkgMjg2VDM2NSAzMThMMzcwIDMyOFEzNzAgMzMwIDI1OCAzMzBRMTQ1IDMzMCAxNDIgMzMyUTEyOSAzMzggMTI5IDM1MVExMjkgMzYyIDE0MCAzNjhRMTQ2IDM3MCAyNjcgMzcwTDM5MSAzNzFMNDY3IDUyN1E1NDIgNjg0IDU0NCA2ODZRNTQ0IDY4OCA1NDkgNjkxVDU2MCA2OTRINTYyUTU2NSA2OTMgNTY3IDY5MlQ1NzEgNjkwVDU3NSA2ODZUNTc4IDY4MVQ1NzkgNjcyUTU3NyA2NjUgNTA3IDUyMFQ0MzYgMzczTDQzNSAzNzBINTI4TDYyMSAzNzFMNjkyIDUxOFE3NjcgNjc1IDc2OSA2NzdRNzc1IDY5NCA3ODkgNjk0UTc5OCA2OTQgODA0IDY4OFQ4MDkgNjcyUTgwNiA2NjQgNzM3IDUxOUw2NjUgMzcxTDc1MSAzNzBRODM1IDM3MCA4NDEgMzY4UTg1MSAzNjIgODUxIDM1MFE4NTEgMzM3IDg0MSAzMzRUNzk5IDMzMEg3NjVINzQxSDY0NUw2MDYgMjUwTDU2OCAxNzBINzkzWk02MDAgMzI4UTYwMCAzMzAgNTA4IDMzMEg0MTVRNDEyIDMyNiAzMzggMTcxUTMzOCAxNzAgNDMxIDE3MEg1MjRMNTYxIDI0OFE1NjkgMjY1IDU3OSAyODZUNTk1IDMxOEw2MDAgMzI4JyxcbiAgICAweDI0OiAnMjI4IDcwUTIzMyA5MiAyNDYgMTU1VDI3MCAyNjZUMjgwIDMxNlEyNzEgMzE4IDI2NSAzMjBUMjM3IDMzM1QyMDAgMzYwVDE3MiA0MDNUMTU5IDQ2OFExNTkgNTM3IDIwNSA2MDBUMzI1IDY5MVEzNTIgNzAxIDM2MCA3MDFRMzYxIDcwMSAzNjEgNzAxVDM2MiA3MDNUMzY0IDcxMVQzNjggNzI3TDM3MiA3NTBINDA5UTQ0NSA3NTAgNDQ1IDc0OUw0MzYgNzA1UTQzNiA3MDMgNDUwIDcwMlQ0OTQgNjkxVDU1NCA2NTdMNTY1IDY0OVE1NjIgNjQyIDU0OCA2MDRMNTM0IDU2OFE1MTEgNTkxIDQ4NCA2MDVUNDQwIDYyMUw0MjQgNjIzTDQxOSA2MjRMMzcyIDQwNVEzOTkgNDAwIDQyNCAzODRRNDkwIDMzOCA0OTAgMjQ3VjI0MFE0OTAgMTU2IDQzMCA4NVEzNzQgMTMgMjk0IC01TDI4NCAtN0wyODAgLTMwUTI3OSAtMzUgMjc4IC00MVQyNzUgLTUyTDI3NCAtNTVRMjc0IC01NiAyMzcgLTU2UTIwMSAtNTYgMjAxIC01NFEyMDIgLTUzIDIwNSAtMzRUMjExIC0xMVEyMTEgLTkgMjA2IC05UTE1NCAtMiAxMTUgMTlRODAgMzUgNTYgNTlMODggMTQxTDk5IDEzMVExMDkgMTIxIDExOSAxMTNUMTQxIDk5VDE2MCA4OVQxODAgODJUMTk3IDc3VDIxNCA3M1QyMjggNzBaTTMwMyA0MjZRMzA0IDQyNyAzMTMgNDcxVDMzMiA1NjRUMzQ1IDYyMEwzMzUgNjE2UTI4NyA1OTYgMjYzIDU0OVEyNTIgNTI1IDI1MiA0OTlRMjUyIDQ3MCAyNjcgNDUxVDI5OCA0MjZRMzAzIDQyNCAzMDMgNDI2Wk0zMDIgNzVRMzA1IDc1IDMxNSA4MFQzNDAgOThUMzY3IDEyNVQzOTAgMTY0VDM5OSAyMTRRMzk5IDI0NyAzODQgMjY4VDM0OSAyOTdRMzM4IDI0NyAzMjYgMTg2TDMwMiA3NScsXG4gICAgMHgyNTogJzI2OCAzNDdRMjI0IDM0NyAxOTUgMzg2VDE2NSA0ODhRMTY1IDUxNyAxNzMgNTUyUTE5MSA2MzcgMjQ2IDY5M1QzNDkgNzQ5UTM4OSA3NDkgNDE0IDcyNVQ0NDggNjczVDQ1NiA2MTRRNDU2IDUwNiAzOTYgNDI3VDI2OCAzNDdaTTM3MiA2MDRRMzcyIDY3NCAzMzkgNjc0UTMxMSA2NzQgMjkwIDYzM1QyNjEgNTQ5VDI1MyA0ODJWNDc0UTI1MyA0MzggMjcyIDQyNlEyNzcgNDI0IDI4NiA0MjRRMzE5IDQyNCAzNDUgNDg1VDM3MiA2MDRaTTE4OSAtNTZRMTc5IC01NiAxNzMgLTQ5VDE2NyAtMzdRMTY3IC0zMCAzNDcgMTk4UTQyNSAyOTYgNDc1IDM2MFE3ODAgNzQ1IDc4NSA3NDdRNzkwIDc1MCA3OTYgNzUwUTgxNCA3NDggODE0IDczMFE4MTQgNzI1IDgxMSA3MTlMMjA0IC00OVExOTggLTU2IDE4OSAtNTZaTTUyMyA4N1E1MjMgMTg0IDU4MyAyNjVUNzEzIDM0N1E3NTggMzQ3IDc4NiAzMDhUODE1IDIwN1E4MTUgMTEwIDc1NyAyOFQ2MjkgLTU1UTU3NiAtNTUgNTUwIC0xMlQ1MjMgODdaTTcyOSAyMDBRNzI5IDI3MSA2OTYgMjcxUTY3NSAyNzEgNjU4IDI0N1Q2MzEgMTg5VDYxNiAxMjVUNjExIDc2UTYxMSAyMSA2NDQgMjFINjQ3UTY3MiAyMSA3MDAgNzdUNzI5IDIwMCcsXG4gICAgMHgyNjogJzIxOSAtMjJRMTU4IC0yMiAxMTcgMTNUNzEgMTExUTcxIDEzMSA3NCAxNTBUODQgMTg1VDk4IDIxNVQxMTggMjQxVDEzNyAyNjJUMTU5IDI4MVQxNzkgMjk1VDE5OSAzMDhMMjE0IDMxOEwyNTggMzQ4TDI1NiAzNjJRMjU0IDM3MyAyNTQgNDEzVjQzNVEyNTQgNDgzIDI3MSA1MzdUMzI1IDY0MVQ0MTEgNzA4UTQyNyA3MTUgNDQxIDcxNVE0NDYgNzE2IDQ1NSA3MTZRNTA0IDcxNiA1MzQgNjgxVDU2NSA1OTBRNTY1IDUyMiA1MTkgNDY4VDM3NyAzNDdMMzU4IDMzNFEzNTkgMzMzIDM2MyAzMjBUMzc0IDI5MFQzODcgMjYyUTQwNCAyMjcgNDI4IDE4N1Q0NjAgMTM5UTUyMSAxODMgNTc0IDI1MVQ2NTEgMzYyVDY3NCA0MDlMNzEwIDM5OFE3NDYgMzg4IDc0NyAzODhRNzQ3IDM4MSA3MjAgMzMzVDYzNSAyMTNUNTE3IDk0TDUxMCA4N1E1NDIgNTcgNTk4IDU3UTY0OSA1NyA3MDggNzJRNzE2IDc1IDcxOCA3NUw3MDkgMzRMNzAxIC03UTYzNiAtMjIgNTc4IC0yMlE1MzEgLTIyIDQ5OCAtOFQ0MjggMzRMNDA4IDI1UTMxNCAtMjIgMjE5IC0yMlpNNDgwIDU3OVE0ODAgNjQwIDQzNiA2NDBRNDEwIDY0MCAzODUgNjE1VDM1MSA1NTRRMzQwIDUxMyAzNDAgNDU3UTM0MCA0MTMgMzQzIDQxMFEzNDMgNDA2IDM2MCA0MTlRNDMxIDQ3MSA0NTUgNTA1VDQ4MCA1NzlaTTI0NSA1N1EyNzkgNTkgMzExIDY3VDM1OSA4MVQzNzUgODlUMzU4IDExM1QzMTggMTc4VDI4MSAyNjBMMjc0IDI3N0wyNDUgMjU3UTE2NyAyMDUgMTY3IDEzNVExNjcgMTEwIDE3NCA5M1QxOTQgNjlUMjE3IDYwVDIzNyA1N0gyNDUnLFxuICAgIDB4Mjc6ICcyMjggNjQ3TDIzNyA2OTRIMjg2UTMzNSA2OTQgMzM1IDY5M0wzMzQgNjg2UTMzMiA2ODAgMzMwIDY2OFQzMjUgNjQ0TDMxNSA1OTdMMjM5IDQ3MUgyMTRRMTkwIDQ3MSAxOTAgNDcyTDI0NiA1OTVRMjQ2IDU5NiAyMzEgNTk2SDIxN1Y1OThRMjE3IDYwMSAyMjggNjQ3JyxcbiAgICAweDI4OiAnMTk1IDM3UTE5NSAtNyAyMDAgLTQ3VDIxMyAtMTEzVDIzMSAtMTY2VDI1MCAtMjA0VDI2OCAtMjMyVDI4MCAtMjUwSDIwNEwxOTQgLTIzOFExMDQgLTEyNCAxMDQgNTVRMTA0IDIzOCAxODEgNDMyVDQwNSA3NDBMNDE3IDc1MEg0NTRRNDkxIDc1MCA0OTEgNzQ5TDQ2OCA3MjlRNDQ2IDcwOSA0MTEgNjY3VDMzNyA1NjVUMjYyIDQwNVQyMDggMTg4UTE5NSAxMTAgMTk1IDM3JyxcbiAgICAweDI5OiAnMzAwIDQ2M1EzMDAgNjM0IDIyMiA3NDBMMjE0IDc1MEgyOTBMMjk5IDc0MFEzMDAgNzM4IDMwOSA3MjZUMzIzIDcwN1QzMzcgNjgyVDM1MyA2NTFUMzY3IDYxM1QzNzkgNTY2VDM4NyA1MTBUMzkwIDQ0NFEzOTAgMzE0IDM0NCAxNTZUMjAzIC0xMjVRMTc5IC0xNTUgMTQ1IC0xOTFRMTExIC0yMjQgODkgLTI0MUw3OCAtMjUwSDJRNCAtMjQ4IDI3IC0yMjdUNjUgLTE4OVQxMDcgLTE0MFQxNTUgLTcxVDIwMCAxNlQyNDQgMTI5VDI3OCAyNjZRMzAwIDM3MiAzMDAgNDYzJyxcbiAgICAweDJBOiAnMTkzIDYwOFExOTMgNjI4IDIxMCA2NDRUMjQ2IDY2MFEyNTAgNjYwIDI1MiA2NjBUMjU3IDY1OFQyNjQgNjU0VDI3MiA2NDhUMjg0IDYzOFQzMDIgNjIzUTM0MCA1OTAgMzQwIDU5M1EzNDEgNTk0IDM0NSA2MjNUMzU0IDY4MlQzNjAgNzE1UTM2NSA3MjkgMzc4IDczOVQ0MDcgNzUwUTQyNCA3NTAgNDMzIDc0MFQ0NDMgNzIwUTQ0MyA3MTIgNDI3IDY1Mkw0MTAgNTkxTDQ2MiA2MjNRNTA1IDY1MCA1MTQgNjU1VDUzNCA2NjBRNTQ5IDY2MCA1NTggNjUwVDU2OCA2MjVRNTY4IDYxNyA1NjcgNjExVDU2MCA1OTlUNTUxIDU5MFQ1MzYgNTgwVDUxOSA1NzFUNDk2IDU2MVQ0NzAgNTQ4TDQyOSA1MjhMNDc0IDUwMFE0ODIgNDk1IDQ5MiA0ODlUNTA2IDQ4MVQ1MTYgNDc1VDUyMyA0NjlUNTI3IDQ2NFQ1MjkgNDU4VDUzMCA0NTBRNTMwIDQzMCA1MTQgNDE0VDQ3OSAzOTdINDc1UTQ2OCAzOTcgNDYwIDQwMlQ0MjMgNDMzUTQxNCA0NDAgNDA0IDQ0OFQzODggNDYxTDM4MyA0NjVMMzY1IDM0NFEzNDggMzA2IDMxNCAzMDZRMzAyIDMwNiAyOTIgMzEzVDI4MSAzMzhRMjgxIDM0NyAyOTcgNDA0TDMxMyA0NjRMMjYwIDQzM1EyMDEgMzk3IDE5NSAzOTdIMTg5UTE3MyAzOTcgMTY1IDQwN1QxNTYgNDMyUTE1NiA0MzggMTU3IDQ0M1QxNjEgNDUyVDE2NiA0NjBUMTc1IDQ2OFQxODUgNDc1VDE5OCA0ODJUMjEyIDQ4OVQyMzAgNDk3VDI1MCA1MDZMMjk1IDUyOEwyNTAgNTU2UTIwMyA1ODIgMjAyIDU4NVExOTMgNTkxIDE5MyA2MDgnLFxuICAgIDB4MkI6ICcxMDggMjQ0VDEwOCAyNTBUMTEyIDI2MVQxMTkgMjY4VDEyNCAyNzBINDI2VjI3MlE0MjggMjc0IDQ1NyA0MTlRNDg5IDU2NSA0OTIgNTczUTQ5NyA1ODMgNTA4IDU4M1E1MTYgNTgzIDUyMiA1NzdUNTI4IDU2NVE1MjggNTUzIDQ5OCA0MTdRNDkxIDM4NCA0ODMgMzQ2VDQ3MSAyODhMNDY3IDI3MEg3NjBRNzc1IDI2MiA3NzUgMjUwVDc2MCAyMzBINDU4UTQ1NiAyMjEgNDI2IDc3VDM5NCAtNzFRMzg5IC04MyAzNzUgLTgzUTM2NyAtODMgMzYyIC03OFQzNTYgLTY0UTM1NiAtNTggMzg3IDg0UTM5NCAxMTggNDAxIDE1NVQ0MTMgMjEwTDQxNyAyMjlRNDE3IDIzMCAyNzEgMjMwSDEyNFExMjMgMjMwIDEyMCAyMzJUMTEyIDIzOScsXG4gICAgMHgyQzogJzkwIDJROTEgMyAxMDAgNDlUMTExIDk2UTExMSA5OCAxNjAgOThUMjA5IDk2TDE5OSA1MFExODkgMyAxODggMlExODggMCAxNDkgLTYzTDExMiAtMTI1SDYzTDEyMCAwSDEwNVE5MCAwIDkwIDInLFxuICAgIDB4MkQ6ICc2NiAyNTdWMjU5SDMzMlYyNTdMMzI0IDIyMEwzMTcgMTg2SDE4NFE1MSAxODYgNTEgMTg3VDU4IDIyMFQ2NiAyNTcnLFxuICAgIDB4MkU6ICc5MCAyUTkxIDMgMTAwIDQ5VDExMSA5NlExMTEgOTggMTYwIDk4VDIwOSA5NkwxOTkgNTBRMTg5IDMgMTg4IDJWMEg5MFYyJyxcbiAgICAweDJGOiAnNTY0IDc0NEw1NjggNzQ3UTU3MyA3NTAgNTc5IDc1MFE1ODggNzUwIDU5NCA3NDRUNTk5IDcyOVE1OTcgNzIxIDMyMSAyNDFUNDEgLTI0M1EzNyAtMjUwIDI3IC0yNTBRNiAtMjUwIDYgLTIzMFE2IC0yMjggOCAtMjIyUTkgLTIxOSAyODUgMjYxVDU2NCA3NDQnLFxuICAgIDB4MzA6ICcyNDUgLTIyUTIwOSAtMjIgMTgxIC0xMVQxMzUgMjBUMTA3IDY1VDkyIDExNlQ4OCAxNzFRODggMjM1IDExNCAzNTRUMTk0IDU1N1EyMjYgNjA2IDI2OSA2MzVUMzQwIDY3MVQzOTIgNjc4SDM5NVE0MjIgNjc4IDQ0NiA2NzBUNDk1IDY0M1Q1MzQgNTgyVDU0OSA0ODFRNTQ5IDQzMCA1MzQgMzUwVDQ5OSAyMTNRNDU5IDg5IDM3OSAyNVEzMTUgLTIyIDI0NyAtMjJIMjQ1Wk00MzAgNTgyUTQwOCA2MDEgMzc4IDYwMVEzMTMgNjAxIDI2OSA1MzRRMjM0IDQ3NSAyMDUgMzQxUTE4MSAyMzIgMTgxIDE3NFExODEgMTA0IDIwOSA3NlEyMzEgNTQgMjYwIDU0VDMxOCA3M1QzNjggMTI1UTQxMCAxOTQgNDQ3IDM3NVE0NjAgNDQ1IDQ2MCA0ODdRNDYwIDU1NSA0MzAgNTgyJyxcbiAgICAweDMxOiAnMjM0IDYxM1EyNzcgNjEzIDMzMSA2MjhUNDI4IDY3OEg0MzlRNDUxIDY3OCA0NTEgNjc2UTQ1MCA2NzEgMzg3IDM3M1QzMjMgNzRUMzg0IDczSDQ0NUw0MzAgMEgyNTlMODggMUwxMDQgNzNIMjI5TDMzMiA1NjBRMjc4IDU0MSAxOTggNTM5UTE5OCA1NDAgMTk4IDU0MVQxOTkgNTQ2VDIwMCA1NTRUMjAyIDU2NFQyMDUgNTc2TDIxMyA2MTJIMjE5UTIyMSA2MTIgMjI2IDYxMlQyMzQgNjEzJyxcbiAgICAweDMyOiAnMTkwIDQ2MFExODkgNDYwIDE4MSA0NzVUMTY0IDUwN1QxNTUgNTI3UTE1NSA1MzUgMTgyIDU3MVEyNTkgNjc4IDM4MCA2NzhRNDYyIDY3OCA1MDYgNjMwVDU1MSA1MTNWNTA3UTU1MSA0MTggNDg3IDM0OVE0NjkgMzI5IDQ0MSAzMDVUMzkxIDI2NVQzNDQgMjMyVDMxNiAyMTJRMTU4IDg3IDE1OCA4NlQxODggODVRMTk0IDg1IDIzNCA4NVQzMTEgODZRNDY3IDg2IDQ2NyA4NVE0NTEgOSA0NDkgMlYwSDUwUTU0IDE4IDU4IDQwTDY3IDc5TDEzMyAxMzNRMjQ2IDIyNiAyNjkgMjQzUTM2OSAzMTggNDEwIDM3M1Q0NTIgNDkyUTQ1MiA1MzUgNDMzIDU2MFQzOTMgNTkyVDM1MCA1OTlRMzExIDU5OSAyNzkgNTc4VDIzMSA1MzJUMjAzIDQ4NFQxOTAgNDYwJyxcbiAgICAweDMzOiAnNDQ2IDU0MlE0NDYgNTc2IDQyNCA1OTBUMzcyIDYwNVEzMzAgNjA1IDI4OCA1ODNUMjE2IDUyNFEyMDkgNTE1IDIwOCA1MTZRMjA3IDUxNyAxOTIgNTQ5TDE3OCA1ODBMMTg3IDU4OVEyMjQgNjI3IDI3NiA2NTJUMzg2IDY3OFE0NTYgNjc4IDUwMCA2NDJUNTQ0IDU1MFE1NDQgNTE1IDUzMCA0ODJUNDk1IDQyN1Q0NTMgMzg3VDQxOCAzNjJMNDAzIDM1M0w0MTMgMzQ4UTQ0MCAzMzUgNDYyIDMxM1E1MDAgMjcxIDUwMCAyMTdRNTAwIDEzNSA0MjMgNTdUMjM2IC0yMlQ2MyA1OUw1NiA2OEw4NSAxNDFRMTA2IDExMiAxMjUgOThRMTc3IDU0IDI1NCA1NFEzMTUgNTQgMzU1IDEwNVQzOTYgMjE4UTM5NiAyNDIgMzkzIDI1NFEzODAgMzAxIDMzNSAzMTNRMzI3IDMxNSAyODAgMzE2UTIzMyAzMTYgMjMzIDMxOEwyNDkgMzkyUTI5OCAzOTIgMzIyIDM5OVEzNzMgNDA4IDQwOSA0NTNUNDQ2IDU0MicsXG4gICAgMHgzNDogJzc4IDIzNUw0MTEgNjU2SDQ2NVE1MTkgNjU2IDUxOSA2NTVUNDc1IDQ0N1Q0MzAgMjM3VjIzNUg1MjFWMjMzTDUwNSAxNjBRNTA1IDE1OSA0NTkgMTU5SDQxNEwzODAgMEgyODZMMzIwIDE1OUg2Mkw2MyAxNjRRNjQgMTY5IDY2IDE3OVQ3MCAxOThMNzggMjM1Wk0zNDIgMjM1TDQyMSA2MDdRNDIwIDYwNyA0MTkgNjA0UTQwOSA1MzUgMTk3IDI2N1ExNzMgMjM2IDE3MyAyMzVIMzQyJyxcbiAgICAweDM1OiAnMzMwIDM1MFEyNjMgMzUwIDIxNCAyNzJIMTMzVjI3NVExMzQgMjc2IDE3NCA0NjdMMjE0IDY1NVEyMTQgNjU2IDM4NSA2NTZINTU1VjY1M1E1NTUgNjUyIDU1NCA2NDdUNTUwIDYzMVQ1NDYgNjEzTDUzOSA1NzdIMjg0TDI2NSA0ODZRMjYxIDQ2NCAyNTYgNDQxVDI0OCA0MDZMMjQ2IDM5NUwyNTAgMzk4UTI1NSA0MDEgMjY0IDQwNlQyODYgNDE1VDMxNSA0MjNUMzUwIDQyN1E0MTIgNDI3IDQ1NSAzODFUNDk4IDI1NlE0OTggMTUwIDQxNSA2NFQyMjIgLTIyUTE4NiAtMjIgMTU1IC0xMlQxMDUgMTJUNzQgNDFUNTUgNjVUNTAgNzdMNTEgNzlRNjEgODkgNzggMTEyTDEwNCAxNDVMMTA3IDEzOFExMTAgMTMwIDExNCAxMjNUMTI1IDEwNlQxNDIgODhUMTY1IDcyVDE5NiA2MFQyMzYgNTVRMjgyIDU1IDMxNiA3OVQzNjYgMTQwVDM4OSAyMDhUMzk2IDI2N1EzOTYgMzEwIDM3OCAzMzBUMzM3IDM1MEgzMzAnLFxuICAgIDB4MzY6ICc0MzcgNjA1UTM5NyA2MDUgMzYxIDU4NVQzMDEgNTM2VDI2MSA0NzdUMjM2IDQyNlQyMjggNDAxTDIzNiA0MDhRMjQ0IDQxNCAyNjAgNDI0VDI5NiA0NDVUMzQ1IDQ2MlQ0MDIgNDY5SDQwNFE0MjIgNDY5IDQzNCA0NjdUNDY1IDQ0NlQ0OTggMzk0UTUxNSAzNTEgNTE1IDMwN1E1MTUgMjU0IDQ5NyAxOTNUNDM5IDg1UTM1MiAtMjIgMjQ2IC0yMlEyMjAgLTIyIDE5NiAtMTRUMTQ4IDE1VDEwOSA3OFQ5NCAxNzlROTQgMjcyIDEyMyAzNzNRMTYzIDUwNSAyNTcgNTkxVDQ1MCA2NzhRNDc0IDY3OCA0OTggNjc0VDUzNSA2NjRUNTQ4IDY1Nkw1NDAgNjIxTDUzMiA1ODZMNTIwIDU5MFE1MDkgNTk0IDQ4NSA1OTlUNDM3IDYwNVpNMzM5IDM5MlEyODEgMzkyIDIzMyAzMzRUMTg1IDE2M1YxNThRMTg1IDg3IDIzMCA2MVEyNDQgNTQgMjYyIDU0UTMyNSA1NCAzNzEgMTIyUTM5NSAxNTggNDA3IDIxN1Q0MTkgMjk4UTQxOSAzMzcgNDAxIDM2NFQzMzkgMzkyJyxcbiAgICAweDM3OiAnMTczIDYxNEwxODEgNjU2SDM4OVE1OTYgNjU2IDU5NiA2NTVMNTk1IDY1MFE1OTQgNjQ1IDU5MiA2MzVUNTg4IDYxNkw1ODAgNTc4TDU1NCA1NTFRMzEzIDMwNyAyNDUgNEwyNDIgLTExSDE5MlExNDMgLTExIDE0MyAtMTBRMTQ0IDAgMTQ4IDE3VDE2OSA4OVQyMTIgMTk4VDI4NSAzMjdUMzkzIDQ3MFE0MjMgNTA0IDQ3MiA1NTBRNDc5IDU1NSA0ODUgNTYxVDQ5NiA1NzFMMzI5IDU3MFExNjMgNTcwIDE2MyA1NzFMMTY0IDU3N1ExNjYgNTgzIDE2OCA1OTNUMTczIDYxNCcsXG4gICAgMHgzODogJzE1OSA0NzBRMTU5IDU0NyAyMjkgNjEyVDM5NCA2NzhRNDY3IDY3OCA1MTAgNjM2VDU1NCA1MzNRNTU0IDUxMiA1NDkgNDkzVDUzNSA0NThUNTE1IDQyOVQ0OTIgNDA1VDQ2NyAzODZUNDQzIDM3MlQ0MjMgMzYyVDQwOSAzNTZMNDA0IDM1NFE0MDQgMzUzIDQwNSAzNTNRNDExIDM1MyA0MzIgMzQxVDQ3NiAyOTVUNTAwIDIxOFE1MDAgMTM0IDQyNCA1NlQyNDYgLTIyUTE3NSAtMjIgMTI2IDIyVDc3IDE0M1E3NyAyMDQgMTEwIDI1MVQxODggMzI3TDIwMiAzMzRRMjE2IDM0MCAyMjkgMzQ2VDI0MyAzNTNUMjM1IDM1OFQyMTQgMzcyVDE4OSAzOTNUMTY4IDQyNlQxNTkgNDcwWk00NjcgNTI3UTQ2NyA2MDUgMzc1IDYwNVEzMTcgNjA1IDI4MSA1NjZUMjQ0IDQ3MlEyNDQgNDI5IDI3MSA0MTFUMzM0IDM5MlEzOTIgMzkyIDQyOSA0MzBUNDY3IDUyN1pNNDA1IDIyOFE0MDUgMjYyIDM4NCAyODlUMzE1IDMxNlEyNTcgMzE2IDIxNiAyNjZUMTc0IDE0NFExNzQgOTUgMTk5IDc1VDI2MiA1NFEzMjkgNTQgMzY3IDEwOVQ0MDUgMjI4JyxcbiAgICAweDM5OiAnMjIwIDU5NFEzMDMgNjc3IDM4OSA2NzdRNTQ1IDY3NyA1NDUgNDc5UTU0NSA0MTMgNTI2IDMyN1E0OTMgMTc1IDM5OCA3N1QyMDIgLTIyUTEyNCAtMjIgNzcgMjVMMTMwIDkxTDEzNyA4M1ExNjkgNTQgMjE4IDU0UTI1NSA1NCAyOTAgNzZUMzQ3IDEyOVEzNjQgMTUxIDM4MCAxODJUNDAzIDIzMlQ0MTEgMjU2UTQxMCAyNTUgMzkwIDI0MVQzNTMgMjE3VDMwMyAxOTdUMjM2IDE4N1ExOTUgMTg3IDE3MyAyMDlRMTU1IDIyNiAxNDAgMjYzVDEyNCAzNTJRMTI0IDM5MiAxMzUgNDM1UTE1NCA1MjcgMjIwIDU5NFpNNDU1IDQ5N1E0NTUgNjA1IDM4MyA2MDVRMzQwIDYwNSAzMDUgNTc3VDI0NiA0OTJRMjIwIDQxMSAyMjAgMzYwUTIyMCAyNzggMjc5IDI2NFEyODAgMjY0IDI4NyAyNjRUMjk5IDI2M1EzNDcgMjYzIDM4NyAzMDJRNDU1IDM3NSA0NTUgNDk3JyxcbiAgICAweDNBOiAnMTc0IDM5NkwxODQgNDQ0SDIzM1EyODIgNDQ0IDI4MiA0NDNRMjc3IDQyMSAyNzIgMzk0TDI2MiAzNDZIMjEzUTE2NCAzNDYgMTY0IDM0N1ExNjkgMzY5IDE3NCAzOTZaTTkwIDJROTEgMyAxMDAgNDlUMTExIDk2UTExMSA5OCAxNjAgOThUMjA5IDk2TDE5OSA1MFExODkgMyAxODggMlYwSDkwVjInLFxuICAgIDB4M0I6ICcxNzQgMzk2TDE4NCA0NDRIMjMzUTI4MiA0NDQgMjgyIDQ0M1EyNzcgNDIxIDI3MiAzOTRMMjYyIDM0NkgyMTNRMTY0IDM0NiAxNjQgMzQ3UTE2OSAzNjkgMTc0IDM5NlpNOTAgMlE5MSAzIDEwMCA0OVQxMTEgOTZRMTExIDk4IDE2MCA5OFQyMDkgOTZMMTk5IDUwUTE4OSAzIDE4OCAyUTE4OCAwIDE0OSAtNjNMMTEyIC0xMjVINjNMMTIwIDBIMTA1UTkwIDAgOTAgMicsXG4gICAgMHgzRDogJzE0MiAzNjhRMTQ1IDM3MCA0NjMgMzcwUTc4MCAzNzAgNzg0IDM2OFE3OTYgMzY0IDc5NiAzNTBUNzg0IDMzMlE3ODAgMzMwIDQ2MyAzMzBRMTQ1IDMzMCAxNDIgMzMyUTEyOSAzMzggMTI5IDM1MVExMjkgMzYyIDE0MiAzNjhaTTg4IDEzN1Q4OCAxNTBUMTAyIDE3MEg3MzhRNzM5IDE3MCA3NDIgMTY4VDc1MCAxNjFUNzU0IDE1MFQ3NTAgMTM5VDc0MyAxMzJUNzM4IDEzMEgxMDJRODggMTM3IDg4IDE1MCcsXG4gICAgMHgzRjogJzE5NCA2NTJRMTk0IDY1NCAyMTggNjY2VDI4NCA2OTFUMzYyIDcwNFE0NDQgNzA0IDQ5MCA2NzhUNTM2IDU4M1E1MzYgNTQxIDUxNiA1MDBUNDU5IDQzM1E0MTUgNDAwIDM4NyAzNzFUMzQzIDMxM1QzMjEgMjY2VDMwNyAyMTZMMzAxIDE4NkgyNjJRMjIzIDE4NiAyMjMgMTg3UTIyNCAxOTkgMjI4IDIxOFQyNTAgMjg4VDI5NCAzNzdRMzE3IDQxMyAzNDQgNDQwVDM5MSA0ODFUNDE0IDQ5OVE0NDIgNTI3IDQ0MiA1NzRRNDQyIDU4NCA0NDEgNTkwVDQzMyA2MDdUNDA5IDYyM1QzNjIgNjI5UTMzNSA2MjkgMzEwIDYyNFQyNjcgNjEwVDIzNSA1OTVUMjE0IDU4MlQyMDUgNTc2TDIwMCA2MTRRMTk0IDY1MSAxOTQgNjUyWk0xNzMgMlExNzQgMyAxODMgNDlUMTk0IDk2UTE5NCA5OCAyNDMgOThUMjkyIDk2TDI4MiA1MFEyNzIgMyAyNzEgMlYwSDE3M1YyJyxcbiAgICAweDQwOiAnMTIwIDI2N1ExMjAgMzc3IDE3OSA0NzhUMzM2IDY0MlQ1MzggNzA1UTYxMCA3MDUgNjU4IDY2MlQ3MDcgNTEzUTcwNyA0MjUgNjgxIDMzMVE2NTggMjQxIDU5MCAxNzlUNDQ3IDExN1EzODYgMTE3IDM0MyAxNjNUMzAwIDI4OFEzMDAgMzk3IDM3NCA0ODZUNTQ0IDU3NlE1NzUgNTc2IDYwOCA1NjJRNTkwIDYyOCA1MTcgNjI4UTQwNiA2MjggMzA5IDUyMlQyMTIgMjc4UTIxMiAxNzkgMjY3IDEyMlQ0MDQgNjVUNTUwIDkxSDYzMVE1MTMgLTEwIDM5MCAtMTBRMjY1IC0xMCAxOTMgNzBUMTIwIDI2N1pNNjAwIDM5N1E2MDAgNDQxIDU4MSA0NzFUNTMwIDUwMVE0NzYgNTAxIDQzMyA0MzZUMzkwIDI5OFEzOTAgMjU0IDQwOSAyMjRUNDYyIDE5M1E1MTIgMTkzIDU1NiAyNTdUNjAwIDM5NycsXG4gICAgMHg1QjogJzE0OCAyNTJMMjUzIDc1MEgzMzlRNDI1IDc1MCA0MjUgNzQ5TDQyNCA3NDRRNDIzIDczOSA0MjEgNzI5VDQxNyA3MTFMNDA5IDY3NUwzNjcgNjc0SDMyNUwyMzUgMjUyUTE0NSAtMTY3IDE0NSAtMTcyUTE0NSAtMTc0IDE4NyAtMTc0SDIyOVYtMTc2UTIxMyAtMjQwIDIxMyAtMjUwSDEyN1E0MSAtMjUwIDQxIC0yNDhRNDEgLTI0NSAxNDggMjUyJyxcbiAgICAweDVEOiAnMzUzIDc0OVEzNTMgNzQ2IDMwMyA1MTJUMjAwIDI3VDE0MSAtMjUwSC0zMVEtMzEgLTI0MCAtMTUgLTE3NlYtMTc0SDcwTDI1MCA2NzRIMjA4TDE2NSA2NzVMMTgxIDc1MEgyNjdRMzUzIDc1MCAzNTMgNzQ5JyxcbiAgICAweDVFOiAnMTkwIDUyN0wzNjAgNjk0SDQzNEw0ODQgNjExUTUzMyA1MjggNTMzIDUyN0g0NTdMMzkwIDYzMkwzODUgNjM5TDI2NiA1MjdIMTkwJyxcbiAgICAweDVGOiAnNTkgLTc1TDY2IC0zOEgzMTZRNTY1IC0zOCA1NjUgLTM5VDU1OCAtNzVUNTQ5IC0xMTJRNTQ5IC0xMTQgMjk5IC0xMTRRNTAgLTExNCA1MCAtMTEzTDUyIC0xMDhRNTMgLTEwMyA1NSAtOTNUNTkgLTc1JyxcbiAgICAweDdFOiAnMzMwIDMyN1EzNTYgMzI2IDM4OCAyOThUNDQ2IDI2OVE0NzAgMjY5IDQ4NCAzMjdINTIyUTU2MCAzMjcgNTYwIDMyNUw1NTcgMzE2UTU1NCAzMDYgNTQ5IDI5MlQ1MzUgMjYzVDUxMiAyMzJUNDgwIDIwOFE0NTMgMTkzIDQyOSAxOTNUMzcwIDIyMlQzMTUgMjUxUTI4NSAyNTEgMjc1IDE5M0gxOTlWMTk3UTIxNCAyNTcgMjUxIDI5MlQzMzAgMzI3JyxcbiAgICAweDEzMTogJzE2OCA0NDJUMTY4IDQ0M1QyMTMgNDQ0VDI1OCA0NDNUMjEyIDIyNVQxNjQgMlYwSDc0VjJRNzUgNyAxMjEgMjI0JyxcbiAgICAweDIzNzogJy01NCAtOTZMLTQ4IC0xMDRRLTQxIC0xMTEgLTI3IC0xMThUNyAtMTI2UTYwIC0xMjYgODIgLTg3UTg1IC04MSAxNDAgMTgxTDE5NiA0NDNRMTk2IDQ0NCAyNDEgNDQ0VDI4NiA0NDNRMjg2IDQ0MSAyMzIgMTg2VDE3NSAtNzVRMTYzIC0xMjAgMTIyIC0xNjJUMTkgLTIwNFEtMTMgLTIwNCAtNDEgLTE5NlQtODMgLTE4MFQtOTYgLTE3MFEtNTUgLTk2IC01NCAtOTYnLFxuICAgIDB4MzAwOiAnLTI2MiA2ODFMLTI3MCA2OTRILTE3N0wtMTMyIDYxMlEtODkgNTMwIC04NyA1MjhRLTg3IDUyNyAtMTI1IDUyN0gtMTYzTC0yMDggNTk4US0yNTQgNjcwIC0yNjIgNjgxJyxcbiAgICAweDMwMTogJy05NiA2MjVMLTI5IDY5NEg2M1E0MiA2NzMgLTMxIDYwNUwtMTE0IDUyN0gtMTkwTC0xNzYgNTQxUS0xNjAgNTU5IC05NiA2MjUnLFxuICAgIDB4MzAyOiAnLTMxMCA1MjdMLTE0MCA2OTRILTY2TC0xNiA2MTFRMzMgNTI4IDMzIDUyN0gtNDNMLTExMCA2MzJMLTExNSA2MzlMLTIzNCA1MjdILTMxMCcsXG4gICAgMHgzMDM6ICctMTcwIDY3N1EtMTQ0IDY3NiAtMTEyIDY0OFQtNTQgNjE5US0zMCA2MTkgLTE2IDY3N0gyMlE2MCA2NzcgNjAgNjc1TDU3IDY2NlE1NCA2NTYgNDkgNjQyVDM1IDYxM1QxMiA1ODJULTIwIDU1OFEtNDcgNTQzIC03MSA1NDNULTEzMCA1NzJULTE4NSA2MDFRLTIxNSA2MDEgLTIyNSA1NDNILTMwMVY1NDdRLTI4NiA2MDcgLTI0OSA2NDJULTE3MCA2NzcnLFxuICAgIDB4MzA0OiAnLTMxNCA1NTNMLTI5NyA2MzFILTExNlE2NCA2MzEgNjQgNjMwUTYwIDYxMiA1NiA1OTFMNDcgNTUzTC0xMzMgNTUyUS0zMTQgNTUyIC0zMTQgNTUzJyxcbiAgICAweDMwNjogJy0xNDIgNTA4US0yMDUgNTA4IC0yNDQgNTQ4VC0yODQgNjUyUS0yODQgNjY2IC0yODEgNjgzTC0yODAgNjk0SC0yMDRRLTIwNSA2ODkgLTIwNSA2NzdRLTIwNSA2NTAgLTE5NiA2MzFULTE3MyA2MDRULTE0NyA1OTNULTEyNSA1OTBRLTg1IDU5MCAtNTAgNjE4VC01IDY4NkwtMiA2OTRINzNWNjkwUTUzIDYxMCAtMTAgNTU5VC0xNDIgNTA4JyxcbiAgICAweDMwNzogJy0xODAgNTc4US0xNzkgNTc5IC0xNzAgNjI3VC0xNTggNjc4VjY4MEgtNTRWNjc4US01NiA2NzUgLTY1IDYyN1QtNzYgNTc4VjU3NkgtMTgwVjU3OCcsXG4gICAgMHgzMDg6ICctMjczIDU4NFEtMjcyIDU4NSAtMjYyIDYzMkwtMjUyIDY3OFY2ODBILTE1NFY2NzhMLTE2NCA2MzJRLTE3NCA1ODUgLTE3NSA1ODRRLTE3NSA1ODIgLTIyNCA1ODJULTI3MyA1ODRaTS03OCA1ODZRLTc4IDU4NyAtNjkgNjMyVC01OCA2NzhWNjgwSDQwTDM5IDY3N1EzOSA2NzYgMzggNjcwVDM0IDY1MVQyOSA2MjhMMTkgNTgzTC0zMCA1ODJILTc5TC03OCA1ODYnLFxuICAgIDB4MzBBOiAnLTIyNyA1OTdRLTIyNyA2MzkgLTE4NiA2NjZULTEwMiA2OTNILTk3US0yOSA2OTMgLTggNjQ5US0yIDYzNyAtMiA2MjNRLTIgNTgyIC00MyA1NTVULTEzMiA1MjdRLTE3MSA1MjcgLTE5OSA1NDZULTIyNyA1OTdaTS01OSA2MTlRLTU5IDYzNSAtNjggNjQzVC0xMDQgNjUyUS0xNDIgNjUyIC0xNTYgNjM2VC0xNzEgNjAyUS0xNzEgNTY5IC0xMjMgNTY5US0xMTkgNTY5IC0xMTEgNTcwVC05OSA1NzFRLTU5IDU4MiAtNTkgNjE5JyxcbiAgICAweDMwQjogJy0yMzYgNjE5TC0xOTUgNjk0SC0xNDlRLTEwMyA2OTQgLTEwMyA2OTNMLTIxMSA1MjdILTI4N0wtMjgyIDUzNlEtMjgxIDUzOSAtMjM2IDYxOVpNLTcwIDYxOUwtMjkgNjk0SDE3UTYzIDY5NCA2MyA2OTNMLTQ1IDUyN0gtMTIxTC0xMTYgNTM2US0xMTUgNTM5IC03MCA2MTknLFxuICAgIDB4MzBDOiAnLTI4MyA2NTRILTIwN0wtMTQwIDU0OUwtMTM1IDU0MkwtMTYgNjU0SDYwTC0xMDkgNDg3SC0xNDdMLTE4NCA0ODhMLTIzNCA1NzBRLTI4MyA2NTMgLTI4MyA2NTQnLFxuICAgIDB4MzkxOiAnMjggMEw0MjkgNjk0SDUzM0w1ODUgMzUwUTU5NiAyNzUgNjEwIDE4MlQ2MzIgNDZMNjM4IDNWMEg1MzBMNTI4IDE4UTUyNyAyNSA1MTUgMTAzVDUwMyAxODNIMjIzTDEzNSAyOUwxMTggMUw3MyAwSDI4Wk00OTIgMjU0UTQ5MiAyNTYgNDczIDM5OFQ0NTQgNTg5VjYxMFE0MzMgNTUyIDI5MCAzMDFMMjY0IDI1NUwzNzggMjU0SDQ5MicsXG4gICAgMHgzOTI6ICc1MDEgMzYzUTU1NyAzNTUgNjA1IDMxNlQ2NTMgMjIyUTY1MyAxNDggNTg2IDg1VDQwMyAyUTM5NCAxIDI0MCAwUTkwIDAgOTAgMUwxMDAgNDZRMTA5IDkwIDEyOCAxNzdUMTY0IDM0OEwyMzggNjk0SDM3NVE1MTggNjkzIDU0NiA2ODhRNjE0IDY3NCA2NTUgNjM1VDY5NiA1NDRRNjk2IDQ5MCA2NDggNDQxVDUxNiAzNjhMNTAxIDM2M1pNNjAxIDUzMFE2MDEgNTY4IDU2NiA1OTBUNDc5IDYyMVE0NzIgNjIyIDM5NCA2MjNIMzIwTDI5NyA1MTNRMjkyIDQ4OSAyODYgNDU5VDI3NiA0MTVMMjczIDQwMVYzOTlIMzM5SDM3MlE1MDQgMzk5IDU3MSA0NjZRNjAxIDQ5OCA2MDEgNTMwWk0yNTcgMzIyUTI1NiAzMjAgMjMwIDE5N1QyMDMgNzNRMjAzIDcxIDI4OSA3MVEzNzkgNzIgMzg3IDczUTQ1OSA4NCA1MDcgMTIyVDU1NiAyMTBRNTU2IDI1NSA1MTkgMjgzVDQyOCAzMjBRNDE1IDMyMiAzMzYgMzIzUTI1NyAzMjMgMjU3IDMyMicsXG4gICAgMHgzOTM6ICc4NyAyUTg4IDQgMTYwIDM0NlQyMzQgNjg5UTIzNCA2OTEgNDQwIDY5MVQ2NDYgNjg5UTY0MyA2ODYgNjI5IDYxMUg0NzVMMzIxIDYxMlExOTMgNCAxOTEgMlYwSDg3VjInLFxuICAgIDB4Mzk0OiAnMjczIDM0M0w1MTAgNjk0SDYxN1E3OTAgMiA3OTAgMEg0MTZMNDIgMUwyNzMgMzQzWk01MzkgNTc2UTUzNiA1OTcgNTM2IDYwMFE1MzYgNjAyIDUzNSA2MDVRNTM0IDYwNyA1MzQgNjA3UTUyNyA1ODAgMjIyIDEzMEwyMDEgOThINjUxTDY0OCAxMTBRNjQ1IDEyMyA2MzkgMTQ5VDYyNyAxOThRNTU0IDQ4OSA1MzkgNTc2JyxcbiAgICAweDM5NTogJzg2IDJRODggNCAxNjAgMzQ2VDIzMyA2ODlRMjMzIDY5MSA0NjEgNjkxUTY4OCA2OTEgNjg4IDY4OVE2ODUgNjg2IDY3MSA2MTFINDk1TDMyMCA2MTJMMzE5IDYwOVEzMTkgNjA3IDI5NyA1MDFMMjc0IDM5N0g0MzZRNTk3IDM5NyA1OTcgMzk2TDU5NiAzOTFRNTk1IDM4NiA1OTMgMzc2VDU4OSAzNThMNTgxIDMyMkw0MjAgMzIxUTI1OCAzMjEgMjU4IDMyMFEyMDkgODkgMjA4IDg3UTIwOCA4NSAzOTAgODVRNDE3IDg1IDQ2MCA4NVQ1MTggODZMNTcyIDg1UTU1NiA4IDU1NCAyVjBIODZWMicsXG4gICAgMHgzOTY6ICc2NyA1NFE1NTEgNjE1IDU1MSA2MTdRNTQzIDYxOCA1MTcgNjE4UTUxMCA2MTggNDYzIDYxOFQzNzYgNjE3UTIwMCA2MTcgMjAwIDYxOFQyMDkgNjU3TDIxNiA2OTRINDU5UTcwMiA2OTQgNzAyIDY5MlE3MDIgNjg5IDY5NyA2NjdMNjkyIDY0M0wyMDcgODBIMzkyUTQ5MyA4MSA1NzcgODFRNTc3IDcwIDU2MCAyVjBINTVWMkw2NyA1NCcsXG4gICAgMHgzOTc6ICc1MTcgMlE1MTggMyA1NTEgMTYxVDU4NSAzMjJRNTg2IDMyMyA1NTcgMzIzVDQyMiAzMjNIMjU5TDE5MCAwSDEzOFE4NiAwIDg2IDFMOTYgNDZRMTA1IDkwIDEyNCAxNzdUMTYwIDM0OEwyMzQgNjk0SDMzN1Y2OTFRMzM2IDY5MCAzMDYgNTQ1VDI3NSAzOTlINjAyTDYwMyA0MDNRNjAzIDQwNyA2MzQgNTUxTDY2NSA2OTRINzY4VjY5MVE3NjggNjkwIDY5NSAzNDhUNjIxIDJWMEg1MTdWMicsXG4gICAgMHgzOTg6ICcxMTkgMjYwUTExOSAzNDggMTU3IDQzM1QyNTQgNTc5VDM4NyA2NzdUNTMzIDcxNVE3MDEgNzE1IDc3MiA1NzRRODA0IDUxMSA4MDQgNDMxUTgwNCAzMTUgNzQ0IDIwOVQ1ODYgNDFUMzg0IC0yMlEyNjIgLTIyIDE5MSA1OVQxMTkgMjYwWk03MDYgNDI2UTcwNiA1MjQgNjU1IDU4MlQ1MjUgNjQwUTQ1NCA2NDAgMzk1IDYwMFQyOTMgNTAyUTI1NiA0NDcgMjM3IDM4M1QyMTggMjY2UTIxOCAxNjggMjY5IDExMlQ0MDEgNTVRNTE4IDU1IDYxMiAxNjZUNzA2IDQyNlpNMjgzIDM0OUwyOTMgMzk3SDQ3M1E2NTIgMzk3IDY1MiAzOTZRNjQ3IDM3NCA2NDIgMzQ3TDYzMiAyOTlINDUyUTI3MyAyOTkgMjczIDMwMFEyNzggMzIyIDI4MyAzNDknLFxuICAgIDB4Mzk5OiAnMTYxIDM0OEwyMzUgNjk0SDMzOFY2OTFRMzM4IDY5MCAyNjUgMzQ4VDE5MSAyVjBIMTM5UTg3IDAgODcgMUw5NiA0NlExMDYgOTAgMTI1IDE3N1QxNjEgMzQ4JyxcbiAgICAweDM5QTogJzIzNiAyMjNRMjM1IDIyMiAyMTMgMTEzVDE4OCAyVjBIMTM4UTg4IDAgODggMUw5OCA0NlExMDcgOTAgMTI2IDE3N1QxNjIgMzQ4TDIzNiA2OTRIMjg1UTMzNSA2OTQgMzM1IDY5M0wzMzAgNjcxUTMyNiA2NDkgMzE2IDYwM1QyOTggNTE4UTI4OSA0NzcgMjgwIDQzM1QyNjYgMzY2TDI2MSAzNDNMNjcyIDY5NEg3MjlMNzg0IDY5M0w0NjUgNDIwTDY1MSAwSDU5Nkw1NDEgMUwzODQgMzUwUTM4MyAzNTEgMzEwIDI4OFQyMzYgMjIzJyxcbiAgICAweDM5QjogJzI4IDBMNDAxIDY5NEg1MDRWNjkwUTUwNSA2ODYgNTQzIDM0NVQ1ODIgMVE1ODIgMCA1MjggMEg0NzNWM1E0NzIgNiA0NjAgMTEzVDQzNSAzNTlUNDIyIDU1OFE0MjIgNTkzIDQyNCA2MDNMNDI1IDYxMEw0MjQgNjA4UTQxNCA1NzIgMzQzIDQzMVEyODcgMzE2IDE0MyA0OUwxMTcgMUw3MyAwSDI4JyxcbiAgICAweDM5QzogJzM3NSA2OTFRNDU2IDIxNSA0NTkgMTI0VjEwNlE0ODggMTc3IDc2MiA2NDFMNzkzIDY5NEg5MjlWNjkxUTkyOSA2OTAgODU2IDM0OFQ3ODIgMlYwSDY4OVYyUTY5MSA0IDc1MyAzMDRRODE3IDYwNCA4MTggNjA2UTgxOSA2MTEgODE3IDYwOFE4MTcgNjA3IDgxNSA2MDNRNzk4IDU1OSA1NDAgMTE3TDQ4NCAyMkg0NDBMMzk3IDIzTDM5MyA0MlEzOTMgNDcgMzczIDE2OVQzMzQgNDIyVDMxNSA1OTRWNjA5TDI1MCAzMDZRMTg2IDMgMTg1IDJRMTg1IDAgMTM4IDBROTIgMCA5MiAxTDEwMiA0NlExMTEgOTAgMTMwIDE3N1QxNjYgMzQ4TDI0MCA2OTRIMzc1VjY5MScsXG4gICAgMHgzOUQ6ICczMTEgNjA5UTMxMCA2MDggMjQ2IDMwNlQxODEgMlYwSDEzNFE4OCAwIDg4IDFMOTggNDZRMTA3IDkwIDEyNiAxNzdUMTYyIDM0OEwyMzYgNjk0SDM4MkwzODMgNjkxUTM4MyA2ODggNDE4IDU2MVQ0OTMgMjg2VDU0MSA5N0w1NDQgODRMNTQ1IDg5UTU0NSA5MCA1NTMgMTI4VDU3OCAyNDZUNjEwIDM5NEw2NzQgNjk0SDc2NlY2OTFRNzY2IDY5MCA2OTMgMzQ4VDYxOSAyVjBINDcyTDQ2OSAxM1E0NjggMTcgMzkzIDI5M1QzMTIgNjA1TDMxMSA2MDknLFxuICAgIDB4MzlFOiAnMTkzIDY4N1ExOTMgNjg4IDQ3OSA2ODhINzY1VjY4NlE3NjQgNjg1IDc1NSA2NDJMNzQ3IDYwMEg0NjFMMTc1IDYwMVExNzUgNjAyIDE4NCA2NDVMMTkzIDY4N1pNMTk2IDQwMFExOTYgNDAxIDQxOCA0MDFUNjQwIDQwMEw2MjIgMzE1UTYyMiAzMTQgNDAwIDMxNFQxNzggMzE1TDE5NiA0MDBaTTQyIDJRNDMgMyA1MSA0NFQ2MCA4N0g2NFE2OCA4NyA3NSA4N1Q5MyA4N1QxMTkgODdUMTUxIDg4VDE5MCA4OFQyMzcgODhUMjkxIDg4VDM1MiA4OEg2NDNRNjM4IDY2IDYzNCA0NFQ2MjcgMTNUNjI0IDJWMEg0MlYyJyxcbiAgICAweDM5RjogJzExOCAyNTRRMTE4IDM2NiAxNzQgNDczVDMyNCA2NDhUNTE3IDcxNlE2MjcgNzE2IDY5NSA2MzhUNzYzIDQzNVE3NjMgMzIxIDcwNiAyMTVUNTU1IDQzVDM2MiAtMjJRMjU2IC0yMiAxODcgNTZUMTE4IDI1NFpNMzgwIDU4UTQ1MiA1OCA1MTggMTE2VDYyMiAyNjNUNjYxIDQ0MlE2NjEgNDk2IDY0NiA1MzVUNjA4IDU5NFQ1NjcgNjIyVDUzNCA2MzRRNTE2IDYzNiA0OTYgNjM2UTQwMCA2MzYgMzEzIDUyOFQyMjUgMjY0UTIyNSAxNzIgMjY3IDExNVQzODAgNTgnLFxuICAgIDB4M0EwOiAnODYgMlE4OCA0IDE2MCAzNDZUMjMzIDY4OVEyMzMgNjkxIDUwMSA2OTFRNzY4IDY5MSA3NjggNjg5UTc2NiA2ODggNjk0IDM0NlQ2MjEgMlYwSDUxN1YyUTUxOCAzIDU4MiAzMDRUNjQ2IDYwOUw2NDggNjE1SDMyMUwxOTAgMEg4NlYyJyxcbiAgICAweDNBMTogJzE2MiAzNDhMMjM2IDY5NEgzNzhRNTIyIDY5MyA1MzAgNjkyUTYwNCA2ODAgNjQ3IDYzNVQ2OTAgNTI0UTY5MCA0NzQgNjY1IDQzMFQ2MTIgMzU5UTU1MCAyOTkgNDY1IDI4MFE0NDMgMjc1IDM0MyAyNzRIMjUwVjI3MVEyNTAgMjY5IDIzNSAyMDFUMjA2IDY4VDE5MiAyVjBIMTQwUTg4IDAgODggMUw5OCA0NlExMDcgOTAgMTI2IDE3N1QxNjIgMzQ4Wk01OTQgNTEzUTU5NCA1NjAgNTYyIDU4OFQ0NzcgNjIyUTQ3MCA2MjMgMzk0IDYyM0gzMjFMMjkzIDQ4N0wyNjMgMzQ5VjM0N0gzNDJIMzQ3SDM3NVE1MzAgMzQ3IDU3OCA0NDlRNTk0IDQ4MyA1OTQgNTEzJyxcbiAgICAweDNBMzogJzE5NCA2NTVMMjAyIDY5NEg1MDhRODEzIDY5NCA4MTMgNjkzUTgwOSA2NzUgODA1IDY1M0w3OTcgNjE0SDU1OUwzMjEgNjE1UTMyNyA2MDYgNDA1IDQ3OEw0ODUgMzQ3UTQ0OSAzMTEgMzQ4IDIwM1QyNDcgODZRMjQ3IDg0IDI5NCA4NFEzMDMgODQgMzU5IDg0VDQ2NSA4NUg2ODRRNjg0IDg0IDY3NSA0Mkw2NjYgMEgzNjBMNTUgMUwxOTUgMTU0UTM0NiAzMTkgMzQ3IDMyMEwzNTkgMzMzTDI3MyA0NzNRMTg3IDYxNCAxODYgNjE0TDE4NyA2MjBRMTg4IDYyNSAxOTAgNjM1VDE5NCA2NTUnLFxuICAgIDB4M0E0OiAnMTY1IDYwOEwxODIgNjg3UTE4MiA2ODggNDg2IDY4OEg3OTBMNzg5IDY4NUw3ODEgNjQ1TDc3MyA2MDlINTIxTDQ1NyAzMDZRMzkzIDMgMzkyIDJRMzkyIDAgMzQwIDBIMjg4VjJRMjg5IDUgMzUzIDMwNFQ0MTcgNjA1VjYwOUwyOTEgNjA4SDE2NScsXG4gICAgMHgzQTU6ICczNTcgNjM3UTMyMCA2MzcgMjk3IDYxMlQyNjYgNTU1SDE3M1ExNzggNTc2IDE4OCA1OThRMjE0IDY1MSAyNjUgNjgzVDM3MyA3MTZRNDk3IDcxNiA0OTcgNTQyVjUwOUw1MDQgNTI2UTU3OSA3MTUgNzExIDcxNVE3NzMgNzE1IDgwOCA2NzdUODQzIDU4OVE4NDMgNTc2IDg0MCA1NTVINzQ3TDc0OCA1NTdRNzQ4IDU1OSA3NDggNTYzVDc0OSA1NzRWNTgwUTc0OSA2MDQgNzMxIDYyMlE3MTUgNjM4IDY5MyA2MzhRNTkxIDYzOCA1NDMgNDY1UTUzMSA0MjUgNTA2IDMwOVQ0NjIgOThUNDQxIDJWMEgzMzdWMlE0MjUgNDAxIDQzNiA0ODZRNDM4IDUwNCA0MzggNTI2UTQzOCA2MzcgMzY0IDYzN0gzNTcnLFxuICAgIDB4M0E2OiAnMTI0IDMwOFExMjQgMzk5IDIwOCA0ODFUNDMzIDU4N1E0MzcgNTg3IDQzNyA1ODlRNDM4IDU5MCA0NDkgNjQzTDQ1OSA2OTRINTA4UTU1NyA2OTQgNTU3IDY5M1E1NTcgNjkxIDU0NiA2NDFUNTM1IDU4N1E1NDMgNTg3IDU2MiA1ODNUNjE0IDU2NVQ2NzQgNTMxVDcyMiA0NzJUNzQzIDM4N1E3NDMgMjg4IDY1NiAyMDlUNDQ5IDExMEw0MzMgMTA2UTQxMSAzIDQxMCAyUTQxMCAwIDM2MSAwSDMxMkwzMTMgM1EzMTMgNSAzMjQgNTZMMzM1IDEwN0gzMzFMMzIxIDEwOFEzMTEgMTEwIDI5NyAxMTRUMjY2IDEyNFQyMjggMTQxVDE5MCAxNjhRMTI0IDIyNSAxMjQgMzA4Wk0yMjcgMzE1UTIyNyAyODIgMjM5IDI1N1QyNzAgMjE4VDMwNiAxOTdUMzM4IDE4NkwzNTAgMTg0SDM1MUwzODYgMzQ2UTQyMCA1MDcgNDIwIDUwOUg0MTlRNDExIDUwOSAzOTMgNTA1VDM0MiA0ODVUMjg0IDQ0NFEyMjcgMzg3IDIyNyAzMTVaTTY0MiAzODFRNjQyIDQxMyA2MjkgNDM3VDU5OSA0NzVUNTYzIDQ5NlQ1MzMgNTA3VDUxOSA1MTBRNTE4IDUxMCA0ODQgMzQ4VDQ1MCAxODRRNTQ0IDIwMSA1OTMgMjU4VDY0MiAzODEnLFxuICAgIDB4M0E3OiAnMTQgMFExNyAzIDE4NCAxODRUMzUyIDM2N0wyNjUgNTI5UTI0NCA1NjcgMjIyIDYwOVQxODggNjcyTDE3NiA2OTJRMTc2IDY5NCAyMzYgNjk0SDI5N0wzMzggNjEyUTM4NyA1MTUgNDAwIDQ4OUw0MjEgNDQ4TDY0NSA2OTRINzU4TDcwOCA2NDBRNDgxIDM5MyA0NTYgMzY4UTQ1NSAzNjYgNTAwIDI4MVQ1OTYgMTA0VDY1MiAwSDUzMUwzODggMjkzTDEyOCAwSDE0JyxcbiAgICAweDNBODogJzMyNSA1NTZRMzI1IDUyNCAzMTAgNDQ3VDI5NCAzMzBRMjk0IDI4OSAzMDQgMjYwUTMxNCAyMzQgMzMzIDIxNlQzNjQgMTkyVDM4MCAxODdMNDg4IDY5NEg1ODVWNjkxUTU4NCA2ODkgNTMxIDQzOEw0NzggMTg4SDQ3OVE0ODUgMTg4IDUwMyAxOTVUNTU1IDIzMVQ2MTMgMzA1UTYzNyAzNTIgNjU0IDQzNVE2NjIgNDcwIDY2OSA0OTZUNjgxIDUzOFQ2OTAgNTYyVDY5OCA1NzhUNzA0IDU4N1E3MTkgNjA5IDczMyA2MTVUNzcyIDYyMUg4MDJIODU0VjYxOUw4MzggNTQ2UTgzOCA1NDUgODMyIDU0NVE3NzUgNTM5IDc0OSA0MThRNzE2IDI3NCA2MzggMTk2UTYxNiAxNzMgNTkwIDE1NlQ1NDMgMTMxVDUwMyAxMTdUNDczIDExMFQ0NjAgMTA2UTQ2MCAxMDUgNDUwIDU0VDQzOCAyVjBIMzQwVjJRMzQxIDMgMzUxIDU0VDM2MiAxMDZRMzYzIDEwNyAzNTggMTA4VDM0NCAxMTFUMzIyIDExN1QyOTUgMTI4VDI2NyAxNDVUMjM5IDE3MVQyMTYgMjA3VDIwMCAyNTZUMTk0IDMxOVExOTQgMzU2IDIwMyA0MDhUMjEzIDQ4M1EyMTMgNTE3IDIwMyA1MzBUMTgyIDU0NFQxNzEgNTQ2UTE4NCA2MDkgMTg3IDYxOVY2MjFIMjM5UTI4NiA2MjEgMjk0IDYyMFQzMDkgNjEyUTMyNSA1OTYgMzI1IDU1NicsXG4gICAgMHgzQTk6ICcxNDggNDA3UTE0OCA0NzUgMTgyIDUzNFQyNjkgNjMzVDM4NiA2OTRUNTExIDcxNlE2MjIgNzE2IDY5NSA2NThUNzY5IDUwN1E3NjkgNDYxIDc0NyA0MDlUNjk5IDMyMVQ2MjggMjI1VDU2MiAxMzZRNTMzIDkwIDUzMyA4NlE1NDIgODUgNTU3IDg1UTU2NCA4NSA1ODMgODVUNjE0IDg2UTY5NSA4NiA2OTUgODVRNjc5IDkgNjc3IDJWMEg0MjVRNDI2IDMgNDMzIDMwVDQ0NyA3MlQ0ODAgMTMxVDU0OSAyNDFMNTU0IDI0OFE1NTggMjU0IDU2MyAyNjFUNTc2IDI4MVQ1OTIgMzA2VDYwOSAzMzVUNjI1IDM2NlQ2NDAgNDAwVDY1MyA0MzRUNjYxIDQ2NlQ2NjQgNDk4UTY2NCA1NjIgNjE4IDYwMVQ0OTcgNjQwUTQxNiA2NDAgMzUxIDU5NlQyNjIgNDgyUTI1MCA0NDEgMjUwIDM5MlQyNzYgMjM3VDMwMiA3MFY1NlEzMDIgMjggMjk2IDJWMEg0NFYyTDYyIDg1UTYyIDg2IDE0MyA4NkwyMjUgODVWODhRMjI0IDg5IDIyNCA4OVQyMjQgOTFUMjI0IDk1VDIyMyAxMDFUMjIyIDExMFQyMjAgMTIzVDIxNiAxNDBUMjA5IDE2M1QyMDAgMTkxVDE4OCAyMjdRMTQ4IDM0NCAxNDggNDA3JyxcbiAgICAweDIwMTM6ICc1OSAyNzVMNjYgMzEySDMxNlE1NjUgMzEyIDU2NSAzMTFUNTU4IDI3NVQ1NDkgMjM4UTU0OSAyMzYgMjk5IDIzNlE1MCAyMzYgNTAgMjM3TDUyIDI0MlE1MyAyNDcgNTUgMjU3VDU5IDI3NScsXG4gICAgMHgyMDE0OiAnNTkgMjc1TDY2IDMxMkg1NjZRMTA2NSAzMTIgMTA2NSAzMTFUMTA1OCAyNzVUMTA0OSAyMzhRMTA0OSAyMzYgNTQ5IDIzNlE1MCAyMzYgNTAgMjM3TDUyIDI0MlE1MyAyNDcgNTUgMjU3VDU5IDI3NScsXG4gICAgMHgyMDE1OiAnNTkgMjc1TDY2IDMxMkg1NjZRMTA2NSAzMTIgMTA2NSAzMTFUMTA1OCAyNzVUMTA0OSAyMzhRMTA0OSAyMzYgNTQ5IDIzNlE1MCAyMzYgNTAgMjM3TDUyIDI0MlE1MyAyNDcgNTUgMjU3VDU5IDI3NScsXG4gICAgMHgyMDE3OiAnNTkgLTc1TDY2IC0zOEgzMTZRNTY1IC0zOCA1NjUgLTM5VDU1OCAtNzVUNTQ5IC0xMTJRNTQ5IC0xMTQgMjk5IC0xMTRRNTAgLTExNCA1MCAtMTEzTDUyIC0xMDhRNTMgLTEwMyA1NSAtOTNUNTkgLTc1JyxcbiAgICAweDIwMTg6ICczMDkgNTY3TDI5OSA1MjBRMjg5IDQ3NCAyODggNDczUTI4OCA0NzEgMjM5IDQ3MVQxOTAgNDczTDE5MiA0ODBRMTkzIDQ4NiAxOTYgNDk5VDIwMSA1MjJMMjExIDU2OUwyODcgNjk0SDMxMkwzMzUgNjkzTDMzMiA2ODVRMzI4IDY3NyAzMjEgNjYxVDMwNyA2MzBMMjc5IDU3MEwyOTQgNTY5UTMwOSA1NjkgMzA5IDU2NycsXG4gICAgMHgyMDE5OiAnMjI4IDY0N0wyMzcgNjk0SDI4NlEzMzUgNjk0IDMzNSA2OTNMMzM0IDY4NlEzMzIgNjgwIDMzMCA2NjhUMzI1IDY0NEwzMTUgNTk3TDIzOSA0NzFIMjE0UTE5MCA0NzEgMTkwIDQ3MkwyNDYgNTk1UTI0NiA1OTYgMjMxIDU5NkgyMTdWNTk4UTIxNyA2MDEgMjI4IDY0NycsXG4gICAgMHgyMDFDOiAnMzkzIDU2N0wzODMgNTIwUTM3MyA0NzQgMzcyIDQ3M1EzNzIgNDcxIDMyMyA0NzFUMjc0IDQ3M0wyNzYgNDgwUTI3NyA0ODYgMjgwIDQ5OVQyODUgNTIyTDI5NSA1NjlMMzcxIDY5NEgzOTZMNDE5IDY5M0w0MTYgNjg1UTQxMiA2NzcgNDA1IDY2MVQzOTEgNjMwTDM2MyA1NzBMMzc4IDU2OVEzOTMgNTY5IDM5MyA1NjdaTTU4NyA1NjdMNTc3IDUyMFE1NjcgNDc0IDU2NiA0NzNRNTY2IDQ3MSA1MTcgNDcxVDQ2OCA0NzNMNDcwIDQ4MFE0NzEgNDg2IDQ3NCA0OTlUNDc5IDUyMkw0ODkgNTY5TDU2NSA2OTRINTkwTDYxMyA2OTNMNjEwIDY4NVE2MDYgNjc3IDU5OSA2NjFUNTg1IDYzMEw1NTcgNTcwTDU3MiA1NjlRNTg3IDU2OSA1ODcgNTY3JyxcbiAgICAweDIwMUQ6ICcxNzEgNjQ3TDE4MCA2OTRIMjI5UTI3OCA2OTQgMjc4IDY5M0wyNzYgNjg2UTI3NSA2ODAgMjczIDY2OFQyNjggNjQ0TDI1OCA1OTdMMTgyIDQ3MUgxNTdRMTMzIDQ3MSAxMzMgNDcyTDE4OSA1OTVRMTg5IDU5NiAxNzQgNTk2SDE2MFY1OThRMTYwIDYwMSAxNzEgNjQ3Wk0zNjUgNjQ3TDM3NCA2OTRINDIzUTQ3MiA2OTQgNDcyIDY5M0w0NzAgNjg2UTQ2OSA2ODAgNDY3IDY2OFQ0NjIgNjQ0TDQ1MiA1OTdMMzc2IDQ3MUgzNTFRMzI3IDQ3MSAzMjcgNDcyTDM4MyA1OTVRMzgzIDU5NiAzNjggNTk2SDM1NFY1OThRMzU0IDYwMSAzNjUgNjQ3JyxcbiAgICAweDIwNDQ6ICc1NjQgNzQ0TDU2OCA3NDdRNTczIDc1MCA1NzkgNzUwUTU4OCA3NTAgNTk0IDc0NFQ1OTkgNzI5UTU5NyA3MjEgMzIxIDI0MVQ0MSAtMjQzUTM3IC0yNTAgMjcgLTI1MFE2IC0yNTAgNiAtMjMwUTYgLTIyOCA4IC0yMjJROSAtMjE5IDI4NSAyNjFUNTY0IDc0NCcsXG4gICAgMHgyMjA2OiAnMjczIDM0M0w1MTAgNjk0SDYxN1E3OTAgMiA3OTAgMEg0MTZMNDIgMUwyNzMgMzQzWk01MzkgNTc2UTUzNiA1OTcgNTM2IDYwMFE1MzYgNjAyIDUzNSA2MDVRNTM0IDYwNyA1MzQgNjA3UTUyNyA1ODAgMjIyIDEzMEwyMDEgOThINjUxTDY0OCAxMTBRNjQ1IDEyMyA2MzkgMTQ5VDYyNyAxOThRNTU0IDQ4OSA1MzkgNTc2Jyxcbn0se1xufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NoYXJNYXAsIENoYXJPcHRpb25zfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5cbmV4cG9ydCBjb25zdCBzYW5zU2VyaWY6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xuICAgIDB4MjE6IFsuNjk0LCAwLCAuMzE5XSxcbiAgICAweDIyOiBbLjY5NCwgLTAuNDcxLCAuNV0sXG4gICAgMHgyMzogWy42OTQsIC4xOTQsIC44MzNdLFxuICAgIDB4MjQ6IFsuNzUsIC4wNTYsIC41XSxcbiAgICAweDI1OiBbLjc1LCAuMDU2LCAuODMzXSxcbiAgICAweDI2OiBbLjcxNiwgLjAyMiwgLjc1OF0sXG4gICAgMHgyNzogWy42OTQsIC0wLjQ3MSwgLjI3OF0sXG4gICAgMHgyODogWy43NSwgLjI1LCAuMzg5XSxcbiAgICAweDI5OiBbLjc1LCAuMjUsIC4zODldLFxuICAgIDB4MkE6IFsuNzUsIC0wLjMwNiwgLjVdLFxuICAgIDB4MkI6IFsuNTgzLCAuMDgyLCAuNzc4XSxcbiAgICAweDJDOiBbLjA5OCwgLjEyNSwgLjI3OF0sXG4gICAgMHgyRDogWy4yNTksIC0wLjE4NiwgLjMzM10sXG4gICAgMHgyRTogWy4wOTgsIDAsIC4yNzhdLFxuICAgIDB4MkY6IFsuNzUsIC4yNSwgLjVdLFxuICAgIDB4M0E6IFsuNDQ0LCAwLCAuMjc4XSxcbiAgICAweDNCOiBbLjQ0NCwgLjEyNSwgLjI3OF0sXG4gICAgMHgzRDogWy4zNywgLTAuMTMsIC43NzhdLFxuICAgIDB4M0Y6IFsuNzA0LCAwLCAuNDcyXSxcbiAgICAweDQwOiBbLjcwNCwgLjAxMSwgLjY2N10sXG4gICAgMHg1QjogWy43NSwgLjI1LCAuMjg5XSxcbiAgICAweDVEOiBbLjc1LCAuMjUsIC4yODldLFxuICAgIDB4NUU6IFsuNjk0LCAtMC41MjcsIC41XSxcbiAgICAweDVGOiBbLTAuMDM4LCAuMTE0LCAuNV0sXG4gICAgMHg3RTogWy4zMjcsIC0wLjE5MywgLjVdLFxuICAgIDB4MTMxOiBbLjQ0NCwgMCwgLjIzOV0sXG4gICAgMHgyMzc6IFsuNDQ0LCAuMjA1LCAuMjY3XSxcbiAgICAweDMwMDogWy42OTQsIC0wLjUyNywgMF0sXG4gICAgMHgzMDE6IFsuNjk0LCAtMC41MjcsIDBdLFxuICAgIDB4MzAyOiBbLjY5NCwgLTAuNTI3LCAwXSxcbiAgICAweDMwMzogWy42NzcsIC0wLjU0MywgMF0sXG4gICAgMHgzMDQ6IFsuNjMxLCAtMC41NTIsIDBdLFxuICAgIDB4MzA2OiBbLjY5NCwgLTAuNTA4LCAwXSxcbiAgICAweDMwNzogWy42OCwgLTAuNTc2LCAwXSxcbiAgICAweDMwODogWy42OCwgLTAuNTgyLCAwXSxcbiAgICAweDMwQTogWy42OTQsIC0wLjUyNywgMF0sXG4gICAgMHgzMEI6IFsuNjk0LCAtMC41MjcsIDBdLFxuICAgIDB4MzBDOiBbLjY1NCwgLTAuNDg3LCAwXSxcbiAgICAweDM5MTogWy42OTQsIDAsIC42NjddLFxuICAgIDB4MzkyOiBbLjY5NCwgMCwgLjY2N10sXG4gICAgMHgzOTM6IFsuNjkxLCAwLCAuNTQyXSxcbiAgICAweDM5NDogWy42OTQsIDAsIC44MzNdLFxuICAgIDB4Mzk1OiBbLjY5MSwgMCwgLjU5N10sXG4gICAgMHgzOTY6IFsuNjk0LCAwLCAuNjExXSxcbiAgICAweDM5NzogWy42OTQsIDAsIC43MDhdLFxuICAgIDB4Mzk4OiBbLjcxNiwgLjAyMSwgLjc3OF0sXG4gICAgMHgzOTk6IFsuNjk0LCAwLCAuMjc4XSxcbiAgICAweDM5QTogWy42OTQsIDAsIC42OTRdLFxuICAgIDB4MzlCOiBbLjY5NCwgMCwgLjYxMV0sXG4gICAgMHgzOUM6IFsuNjk0LCAwLCAuODc1XSxcbiAgICAweDM5RDogWy42OTQsIDAsIC43MDhdLFxuICAgIDB4MzlFOiBbLjY4OCwgMCwgLjY2N10sXG4gICAgMHgzOUY6IFsuNzE1LCAuMDIyLCAuNzM2XSxcbiAgICAweDNBMDogWy42OTEsIDAsIC43MDhdLFxuICAgIDB4M0ExOiBbLjY5NCwgMCwgLjYzOV0sXG4gICAgMHgzQTM6IFsuNjk0LCAwLCAuNzIyXSxcbiAgICAweDNBNDogWy42ODgsIDAsIC42ODFdLFxuICAgIDB4M0E1OiBbLjcxNiwgMCwgLjc3OF0sXG4gICAgMHgzQTY6IFsuNjk0LCAwLCAuNzIyXSxcbiAgICAweDNBNzogWy42OTQsIDAsIC42NjddLFxuICAgIDB4M0E4OiBbLjY5NCwgMCwgLjc3OF0sXG4gICAgMHgzQTk6IFsuNzE2LCAwLCAuNzIyXSxcbiAgICAweDIwMTM6IFsuMzEyLCAtMC4yMzYsIC41XSxcbiAgICAweDIwMTQ6IFsuMzEyLCAtMC4yMzYsIDFdLFxuICAgIDB4MjAxNTogWy4zMTIsIC0wLjIzNiwgMV0sXG4gICAgMHgyMDE3OiBbLTAuMDM4LCAuMTE0LCAuNV0sXG4gICAgMHgyMDE4OiBbLjY5NCwgLTAuNDcxLCAuMjc4XSxcbiAgICAweDIwMTk6IFsuNjk0LCAtMC40NzEsIC4yNzhdLFxuICAgIDB4MjAxQzogWy42OTQsIC0wLjQ3MSwgLjVdLFxuICAgIDB4MjAxRDogWy42OTQsIC0wLjQ3MSwgLjVdLFxuICAgIDB4MjA0NDogWy43NSwgLjI1LCAuNV0sXG4gICAgMHgyMjA2OiBbLjY5NCwgMCwgLjgzM10sXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7U1ZHQ2hhck1hcCwgQWRkUGF0aHN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7c2Fuc1NlcmlmIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvc2Fucy1zZXJpZi5qcyc7XG5cbmV4cG9ydCBjb25zdCBzYW5zU2VyaWY6IFNWR0NoYXJNYXAgPSBBZGRQYXRocyhmb250LCB7XG4gICAgMHgyMTogJzEyMCAxODdRMTIwIDIyNSAxMTUgNDQwVDExMCA2OTNRMTEwIDY5NCAxNTkgNjk0VDIwOCA2OTNRMjA4IDY1NSAyMDMgNDQwVDE5OCAxODdRMTk4IDE4NiAxNTkgMTg2VDEyMCAxODdaTTExMCAwVjk4SDIwOFYwSDExMCcsXG4gICAgMHgyMjogJzMzIDU5NlY2OTRIMTMxVjU5N0w4MiA0NzFIMzJMNDcgNTMyUTYyIDU5MyA2MyA1OTRRNjMgNTk2IDQ4IDU5NkgzM1pNMjI3IDU5NlY2OTRIMzI1VjU5N0wyNzYgNDcxSDIyNkwyNDEgNTMyUTI1NiA1OTMgMjU3IDU5NFEyNTcgNTk2IDI0MiA1OTZIMjI3JyxcbiAgICAweDIzOiAnNTYgMzUwUTU2IDM2MyA3MCAzNzBIMTkyUTMxNCAzNzAgMzE0IDM3MUwzNTYgNTI2UTM5NiA2NzYgNDAxIDY4NVE0MDYgNjk0IDQxNiA2OTRRNDIzIDY5NCA0MjkgNjg5VDQzNiA2NzdRNDM2IDY3MyAzOTYgNTIzVDM1NSAzNzFRMzU1IDM3MCA0NDkgMzcwUTU0NCAzNzAgNTQ0IDM3MUw1ODYgNTI2UTYyOCA2ODIgNjMwIDY4NVE2MzYgNjk0IDY0NiA2OTRRNjUzIDY5NCA2NTkgNjg5VDY2NSA2NzhRNjY1IDY3MCA2NDUgNTkzVDYwNSA0NDRMNTg1IDM3MVE1ODUgMzcwIDY3MyAzNzBINzYyUTc3NyAzNjIgNzc3IDM1MFE3NzcgMzM3IDc2NyAzMzRUNzIzIDMzMEg2NjhINTczTDU2NyAzMDVRNTYwIDI4MiA1NDUgMjI2TDUzMCAxNzFMNjQ2IDE3MEg3MjFRNzU2IDE3MCA3NjYgMTY3VDc3NyAxNTBRNzc3IDEzOCA3NjIgMTMwSDY0MFE1MTggMTMwIDUxOCAxMjlMNDc2IC0yNlE0MzQgLTE4MiA0MzIgLTE4NVE0MjYgLTE5NCA0MTYgLTE5NFE0MDkgLTE5NCA0MDMgLTE4OVQzOTcgLTE3OFEzOTcgLTE3MCA0MTcgLTkzVDQ1NyA1Nkw0NzcgMTI5UTQ3NyAxMzAgMzgzIDEzMFEyODggMTMwIDI4OCAxMjlMMjQ2IC0yNlEyMDQgLTE4MiAyMDIgLTE4NVExOTYgLTE5NCAxODYgLTE5NFExNzkgLTE5NCAxNzMgLTE4OVQxNjcgLTE3OFExNjcgLTE3MCAxODcgLTk0VDIyNyA1NkwyNDcgMTI5UTI0NyAxMzAgMTU5IDEzMEg3MFE1NiAxMzcgNTYgMTUwUTU2IDE2NSA3MiAxNzBIMjU5TDI2NSAxOTVRMjczIDIyMiAyODcgMjc1TDMwMiAzMzBIMTg2TDcwIDMzMVE2MyAzMzQgNTggMzM5UTU2IDM0MyA1NiAzNTBaTTQ4OSAxNzBMNTMyIDMzMEgzNDNMMzM3IDMwNVEzMzAgMjgyIDMxNSAyMjZMMzAwIDE3MUwzOTQgMTcwSDQ4OScsXG4gICAgMHgyNDogJzU1IDUwOVE1NSA1ODUgMTAzIDYzOFQyMTMgNzAxVjc1MEgyODZWNzAzSDI4OVEzMTIgNzAzIDM1NCA2ODlRMzcyIDY4MiAzOTkgNjY2VDQyNyA2NDZMNDEzIDU2OVE0MTMgNTY4IDQwMyA1NzVRMzUyIDYxNSAyOTEgNjI0SDI4NlY0MDVRMzU3IDM4OSA0MDAgMzMxVDQ0NCAxOTlRNDQ0IDEyOCA0MDIgNjlUMjg2IC03Vi01NkgyMTNWLTlRMTY3IC0zIDEyNSAxNFQ2MyA0NFQ0NCA2MFE0NCA2MSA1MiAxMDFMNTkgMTQwTDY5IDEzMlE3OCAxMjUgODcgMTE5VDEwNyAxMDdUMTI0IDk3VDE0MSA5MFQxNTcgODRUMTczIDgwVDE4NyA3NlQyMDEgNzNUMjEzIDcwVjMxN0wyMDIgMzE5UTE0MSAzMzUgOTggMzg2VDU1IDUwOVpNMjEzIDQyNFY2MjBMMjAzIDYxNVExNDMgNTg3IDE0MyA1MjJRMTQzIDQ1NSAyMTMgNDI0Wk0zNTYgMTg3UTM1NiAyMDggMzUwIDIyN1QzMzQgMjU4VDMxNSAyODBUMjk4IDI5M1QyODcgMjk3UTI4NiAyOTcgMjg2IDE4NlY3NVEzNTYgMTEwIDM1NiAxODcnLFxuICAgIDB4MjU6ICc1NiA1NDlRNTYgNjM5IDk4IDY5NFQxOTUgNzUwUTI0OCA3NTAgMjkwIDY5NFQzMzIgNTQ4UTMzMiA0NTUgMjkwIDQwMVQxOTUgMzQ3UTE0MSAzNDcgOTkgNDAzVDU2IDU0OVpNMjQ4IDU0OVEyNDggNjAyIDIzNCA2MzhUMTk1IDY3NFExNDUgNjc0IDE0NSA1NDlRMTQ1IDQyMyAxOTUgNDIzUTIxOSA0MjMgMjMzIDQ1OVQyNDggNTQ5Wk0xOTcgLTU2UTE4NyAtNTYgMTgyIC00OVQxNzYgLTM1UTE3NiAtMzMgMTc4IC0yN1ExNzkgLTI1IDM5OSAzNTZUNjIzIDc0MVE2MjYgNzUwIDYzOSA3NTBRNjQ4IDc1MCA2NTQgNzQ0VDY1OSA3MjlRNjU3IDcyMSA0MzUgMzM2VDIwNyAtNTJRMjAzIC01NiAxOTcgLTU2Wk01MDAgMTQ2UTUwMCAyMzUgNTQyIDI5MVQ2MzkgMzQ3UTY5MiAzNDcgNzM0IDI5M1Q3NzYgMTQ2UTc3NiA1MyA3MzMgLTFUNjM5IC01NlE1ODcgLTU2IDU0NCAtMlQ1MDAgMTQ2Wk02OTIgMTQ2UTY5MiAxOTkgNjc4IDIzNVQ2MzkgMjcxUTU4OSAyNzEgNTg5IDE0NlE1ODkgMjAgNjM5IDIwUTY2MyAyMCA2NzcgNTZUNjkyIDE0NicsXG4gICAgMHgyNjogJzE1NiA1MDJRMTU2IDYwMCAxOTggNjU4VDMwMiA3MTZRMzY3IDcxNiA0MDUgNjY1VDQ0NCA1NDlRNDQ0IDUzMSA0NDIgNTIzUTQyNiA0NDYgMzA0IDM0OEwyODcgMzM0UTMwNSAyOTcgMzQwIDI0OVQ0MDIgMTcwVDQzMCAxMzlUNDQzIDE0OVQ0NzIgMTgxVDUwOSAyMzFUNTQ5IDMwM1Q1ODMgMzk0UTU4NCAzOTggNTg2IDQwNFE1ODcgNDA4IDU4NyA0MDlRNTg4IDQwOSA2MjYgMzk5VDY2NSAzODhRNjYzIDM4MSA2NjAgMzY5VDY0NCAzMjJUNjE0IDI1M1Q1NjcgMTc2VDUwMiA5OEw0OTEgODdRNTM0IDU3IDU4NCA1N1E2NTMgNTcgNzAwIDc1UTcwMiA3NSA3MDIgMzRUNzAwIC03UTY1MiAtMjIgNTg2IC0yMkg1ODBRNTA1IC0yMiA0MzQgMjZMNDIxIDM0UTQxOSAzMyA0MDUgMjVUMzc0IDExVDMzNiAtNFQyODUgLTE3VDIyNiAtMjJRMTQzIC0yMiA5MyAzMVQ0MiAxNTJRNDIgMTg0IDUxIDIxMVQ4MSAyNjBUMTExIDI5MVQxNDQgMzE3TDE4NCAzNDhMMTc4IDM2NVExNTYgNDMwIDE1NiA1MDJaTTM1OSA1NTJRMzU5IDU4OCAzNDUgNjE0VDMwMiA2NDBRMjkyIDY0MCAyODIgNjM2VDI2MCA2MjJUMjQxIDU5MFQyMzMgNTM1UTIzNiA0NzQgMjUzIDQxN0wyNTcgNDA3TDI3MSA0MTlRMzEyIDQ1NCAzMzAgNDc5UTM1OSA1MTQgMzU5IDU1MlpNMzQ1IDEwMlEyNjIgMTkwIDIxNiAyNzdRMjE1IDI3NyAyMDQgMjY3VDE4MCAyNDdUMTY1IDIzNlExMzUgMjA4IDEzNSAxNTlRMTM1IDEyMyAxNTIgOTdUMTk4IDYxUTIwNyA1OCAyMjcgNThRMjg2IDU4IDM1NyA4OUwzNDUgMTAyJyxcbiAgICAweDI3OiAnOTAgNTk2VjY5NEgxODhWNTk3TDEzOSA0NzFIODlMMTA0IDUzMlExMTkgNTkzIDEyMCA1OTRRMTIwIDU5NiAxMDUgNTk2SDkwJyxcbiAgICAweDI4OiAnNzQgMjUwUTc0IDU2NCAyNDAgNzMzTDI1NyA3NTBIMzMzTDMyMyA3MzlRMTY3IDU3MyAxNjcgMjUwVDMyMyAtMjM5TDMzMyAtMjUwSDI1N0wyNDAgLTIzM1E3NCAtNjMgNzQgMjUwJyxcbiAgICAweDI5OiAnMjIxIC03M1QyMjEgMjUwVDY1IDczOUw1NSA3NTBIMTMxTDE0OCA3MzNRMzE0IDU2NyAzMTQgMjUwVDE0OCAtMjMzTDEzMSAtMjUwSDU1TDY1IC0yMzlRMjIxIC03MyAyMjEgMjUwJyxcbiAgICAweDJBOiAnMjA4IDcxN1EyMTEgNzMxIDIyMiA3NDBUMjUwIDc1MFEyNjUgNzUwIDI3NyA3NDFUMjkxIDcxN1EyOTEgNzA2IDI5MCA2NzVUMjg2IDYxN0wyODUgNTkxTDMyOSA2MjJRMzY5IDY1MSAzNzYgNjU1VDM5MyA2NTlRNDExIDY1OSA0MjMgNjQ3VDQzNiA2MTZRNDM2IDYwOSA0MzQgNjAzVDQyOSA1OTRUNDE5IDU4NVQ0MDcgNTc3VDM4OSA1NjdUMzY4IDU1NkwzMTYgNTI4TDM2OCA1MDBRNDIxIDQ3MiA0MjkgNDY0UTQzNiA0NTUgNDM2IDQ0MFE0MzYgNDIyIDQyMyA0MDlUMzkzIDM5NlEzOTAgMzk2IDM4OCAzOTZUMzg0IDM5N1QzODAgMzk4VDM3NSA0MDFUMzY3IDQwNlQzNTggNDEzVDM0NiA0MjJUMzI5IDQzNEwyODUgNDY1UTI4NCA0NjUgMjg1IDQzOFQyODkgMzgxVDI5MSAzNDdRMjkxIDMyNyAyNzggMzE3VDI1MCAzMDZRMjM0IDMwNiAyMjIgMzE1VDIwOCAzMzlRMjA4IDM1MCAyMDkgMzgxVDIxMiA0MzlMMjE0IDQ2NUwxNzAgNDM0UTEzMCA0MDUgMTIzIDQwMVQxMDYgMzk3UTg4IDM5NyA3NiA0MDlUNjMgNDQwUTYzIDQ0NyA2NSA0NTNUNzAgNDYyVDgwIDQ3MVQ5MiA0NzlUMTEwIDQ4OVQxMzEgNTAwTDE4MyA1MjhMMTMxIDU1NlE3OCA1ODQgNzAgNTkyUTYzIDYwMSA2MyA2MTZRNjMgNjM0IDc2IDY0N1QxMDYgNjYwUTEwOSA2NjAgMTExIDY2MFQxMTUgNjU5VDExOSA2NThUMTI0IDY1NVQxMzIgNjUwVDE0MSA2NDNUMTUzIDYzNFQxNzAgNjIyTDIxNCA1OTFMMjEyIDYxN1EyMTEgNjQzIDIxMCA2NzRUMjA4IDcxNycsXG4gICAgMHgyQjogJzU2IDIzN1Q1NiAyNTBUNzAgMjcwSDM2OVY0MjBMMzcwIDU3MFEzODAgNTgzIDM4OSA1ODNRNDAyIDU4MyA0MDkgNTY4VjI3MEg3MDdRNzIyIDI2MiA3MjIgMjUwVDcwNyAyMzBINDA5Vi02OFE0MDEgLTgyIDM5MSAtODJIMzg5SDM4N1EzNzUgLTgyIDM2OSAtNjhWMjMwSDcwUTU2IDIzNyA1NiAyNTAnLFxuICAgIDB4MkM6ICc5MCAwVjk4SDE4OFYxTDEzOSAtMTI1SDg5TDEwNCAtNjRRMTE5IC0zIDEyMCAtMlExMjAgMCAxMDUgMEg5MCcsXG4gICAgMHgyRDogJzExIDE4NlYyNTlIMjc3VjE4NkgxMScsXG4gICAgMHgyRTogJzkwIDBWOThIMTg4VjBIOTAnLFxuICAgIDB4MkY6ICc0MjMgNzUwUTQzMiA3NTAgNDM4IDc0NFQ0NDQgNzMwUTQ0NCA3MjUgMjcxIDI0OFQ5MiAtMjQwUTg1IC0yNTAgNzUgLTI1MFE2OCAtMjUwIDYyIC0yNDVUNTYgLTIzMVE1NiAtMjIxIDIzMCAyNTdUNDA3IDc0MFE0MTEgNzUwIDQyMyA3NTAnLFxuICAgIDB4M0E6ICc5MCAzNDZWNDQ0SDE4OFYzNDZIOTBaTTkwIDBWOThIMTg4VjBIOTAnLFxuICAgIDB4M0I6ICc5MCAzNDZWNDQ0SDE4OFYzNDZIOTBaTTkwIDBWOThIMTg4VjFMMTM5IC0xMjVIODlMMTA0IC02NFExMTkgLTMgMTIwIC0yUTEyMCAwIDEwNSAwSDkwJyxcbiAgICAweDNEOiAnNTYgMzUwUTU2IDM2MyA3MCAzNzBINzA3UTcyMiAzNjIgNzIyIDM1MFE3MjIgMzM5IDcwOCAzMzFMMzkwIDMzMEg3MlE1NiAzMzUgNTYgMzUwWk01NiAxNTBRNTYgMTY1IDcyIDE3MEg3MDhRNzIyIDE2MCA3MjIgMTUwUTcyMiAxMzggNzA3IDEzMEg3MFE1NiAxMzcgNTYgMTUwJyxcbiAgICAweDNGOiAnNTUgNjUyUTYzIDY1OCA3NyA2NjZUMTMyIDY4OVQyMTQgNzA0VDI2NSA3MDNRMzAzIDY5OCAzMzIgNjg0VDM3NiA2NTNUNDAxIDYxNVQ0MTMgNTc4VDQxNiA1NDZRNDE2IDQ3NSAzNjAgNDI2UTMyNSAzOTYgMzAzIDM2NVQyNzMgMzAzVDI2MyAyNTZUMjYxIDIxNlYxODZIMTgzVjIyNVExODQgMjgxIDE5NCAzMjJRMjA2IDM2OCAyMzIgNDA5VDI3NiA0NjlUMzA2IDQ5NVEzMjMgNTE3IDMyMyA1NTBRMzIzIDU5NiAyOTcgNjEyVDIyMyA2MjlRMTg3IDYyOSAxNTcgNjE4UTEyMiA2MDcgOTEgNTgzTDgzIDU3Nkw1NSA2NTJaTTE3MyAwVjk4SDI3MVYwSDE3MycsXG4gICAgMHg0MDogJzQyMiA1NzZRNDQwIDU3NiA0NTYgNTczVDQ4MCA1NjZMNDg4IDU2M1E0ODggNTY1IDQ4NCA1NzFUNDcyIDU4OFQ0NTIgNjA3VDQyNCA2MjJUMzg3IDYyOVEyOTQgNjI5IDIyMCA1NTBUMTQ2IDM0N1ExNDYgMjMzIDIxMCAxNTVUMzY1IDY2UTM3NiA2NSA0MDAgNjVRNDY1IDY4IDUxNyA4Nkw1MzIgOTFINjEyTDU5OCA3NlE1MTEgLTExIDM4OCAtMTFRMjUwIC0xMSAxNTMgOTNUNTYgMzQ3UTU2IDQ1NCAxMDcgNTM4VDIzMSA2NjNUMzc4IDcwNFE0NDYgNzA0IDQ5MiA2ODBUNTY0IDYwOFQ1OTkgNTA2VDYxMSAzNzZRNjExIDMyMCA2MDcgMjk5UTU5NSAyMjcgNTQ2IDE3M1Q0MjIgMTE4UTM0MyAxMTggMjg4IDE4NVQyMzIgMzQ3UTIzMiA0NDQgMjg3IDUxMFQ0MjIgNTc2Wk01MjAgMzQ3UTUyMCA0MjkgNDg3IDQ2NVQ0MjEgNTAxUTM4NSA1MDEgMzU0IDQ2MVQzMjMgMzQ3UTMyMyAyNzAgMzU1IDIzMlQ0MjIgMTkzUTQ1NCAxOTMgNDg3IDIyOVQ1MjAgMzQ3JyxcbiAgICAweDVCOiAnOTQgLTI1MFY3NTBIMjY2VjY3NEgxODFWLTE3NEgyNjZWLTI1MEg5NCcsXG4gICAgMHg1RDogJzIyIDY3NFY3NTBIMTk0Vi0yNTBIMjJWLTE3NEgxMDdWNjc0SDIyJyxcbiAgICAweDVFOiAnMTQ2IDYxMkwyMTIgNjk0SDI4N0wzNTMgNjEyUTQxNyA1MzIgNDIwIDUyOVE0MjEgNTI4IDQxOCA1MjdRNDE0IDUyNyAzODMgNTI3SDM0NUwyNTAgNjM5UTI0NCA2MzMgMTk5IDU4MEwxNTQgNTI3SDExNlE3OSA1MjggNzkgNTI5UTgyIDUzMiAxNDYgNjEyJyxcbiAgICAweDVGOiAnMCAtMTE0Vi0zOEg0OTlWLTExNEgwJyxcbiAgICAweDdFOiAnODMgMjA0UTg2IDI1NCAxMTMgMjkwVDE4NiAzMjdRMjExIDMyNyAyNTEgMjk5VDMxMiAyNzBRMzM3IDI3MCAzNDAgMzE1VjMyN0g0MTZWMzE2UTQxMyAyNTggMzgyIDIyNlQzMTUgMTkzUTI4OSAxOTMgMjQ5IDIyMVQxODcgMjUwUTE2MiAyNTAgMTU5IDIwNVYxOTNIODNWMjA0JyxcbiAgICAweDEzMTogJzc0IDBWNDQ0SDE2NFYwSDc0JyxcbiAgICAweDIzNzogJy0zNSAtOTVRLTQgLTEyNiAzNCAtMTI2UTU4IC0xMjYgNzYgLTExNlQxMDAgLTg4UTEwMiAtODIgMTAyIDE4MVY0NDRIMTkyVjE4MFExOTEgLTQ1IDE5MSAtNzBUMTg0IC0xMTNRMTcxIC0xNTIgMTQwIC0xNzhUNjMgLTIwNVEzNCAtMjA1IDQgLTE5N1QtNDMgLTE4MVQtNTkgLTE3MUwtNDcgLTEzM0wtMzUgLTk1JyxcbiAgICAweDMwMDogJy00MTUgNjkyTC00MTcgNjk0SC0zMjRMLTI2MiA2MTJRLTI0OSA1OTQgLTIzMyA1NzJULTIwOCA1MzlMLTIwMCA1MjhMLTIzNyA1MjdILTI3NUwtMzQ0IDYwOFEtMzU5IDYyNSAtMzc4IDY0N1QtNDA2IDY4MFQtNDE1IDY5MicsXG4gICAgMHgzMDE6ICctMjM5IDYxMkwtMTc3IDY5NEgtODRMLTg2IDY5MlEtODYgNjkxIC05NSA2ODFULTEyMyA2NDhULTE1NyA2MDhMLTIyNiA1MjdILTI2NEwtMzAxIDUyOEwtMjkzIDUzOVEtMjg1IDU1MCAtMjY5IDU3MlQtMjM5IDYxMicsXG4gICAgMHgzMDI6ICctMzU0IDYxMkwtMjg4IDY5NEgtMjEzTC0xNDcgNjEyUS04MyA1MzIgLTgwIDUyOVEtNzkgNTI4IC04MiA1MjdRLTg2IDUyNyAtMTE3IDUyN0gtMTU1TC0yNTAgNjM5US0yNTYgNjMzIC0zMDEgNTgwTC0zNDYgNTI3SC0zODRRLTQyMSA1MjggLTQyMSA1MjlRLTQxOCA1MzIgLTM1NCA2MTInLFxuICAgIDB4MzAzOiAnLTQxNyA1NTRRLTQxNCA2MDQgLTM4NyA2NDBULTMxNCA2NzdRLTI4OSA2NzcgLTI0OSA2NDlULTE4OCA2MjBRLTE2MyA2MjAgLTE2MCA2NjVWNjc3SC04NFY2NjZRLTg3IDYwOCAtMTE4IDU3NlQtMTg1IDU0M1EtMjExIDU0MyAtMjUxIDU3MVQtMzEzIDYwMFEtMzM4IDYwMCAtMzQxIDU1NVY1NDNILTQxN1Y1NTQnLFxuICAgIDB4MzA0OiAnLTQzMSA1NTJWNjMxSC03MFY1NTJILTQzMScsXG4gICAgMHgzMDY6ICctMjUwIDUwOFEtMzMxIDUwOCAtMzc5IDU2N1QtNDI3IDY4OVY2OTRILTM1MVY2ODVRLTM0OCA2NDkgLTMyMSA2MjBULTI1MCA1OTFRLTIwNiA1OTEgLTE4MCA2MTlULTE1MCA2ODVWNjk0SC03NFY2ODlRLTc0IDYyNCAtMTIyIDU2NlQtMjUwIDUwOCcsXG4gICAgMHgzMDc6ICctMzAyIDU3NlY2ODBILTE5OFY1NzZILTMwMicsXG4gICAgMHgzMDg6ICctMzk3IDU4MlY2ODBILTI5OVY1ODJILTM5N1pNLTIwMiA1ODJWNjgwSC0xMDRWNTgySC0yMDInLFxuICAgIDB4MzBBOiAnLTMxOSA2MTFRLTMxOSA2NDkgLTI4NSA2NzFULTIxMSA2OTRRLTE2NCA2OTQgLTEzMiA2NzFULTk5IDYxMVEtOTkgNTcyIC0xMzMgNTUwVC0yMDkgNTI3VC0yODUgNTQ5VC0zMTkgNjExWk0tMTU1IDYxMFEtMTU1IDYzNSAtMTcxIDY0M1QtMjE1IDY1MVEtMjYzIDY1MSAtMjYzIDYxMFEtMjYzIDU3MCAtMjExIDU3MEgtMjA5SC0yMDdRLTE1NSA1NzAgLTE1NSA2MTAnLFxuICAgIDB4MzBCOiAnLTI1MCA2OTNRLTMxNyA1NDQgLTMyMyA1MjdILTM5OUwtMzQzIDY5NEgtMjk2US0yNTAgNjk0IC0yNTAgNjkzWk0tODQgNjkzUS0xNTEgNTQ0IC0xNTcgNTI3SC0yMzNMLTE3NyA2OTRILTEzMFEtODQgNjk0IC04NCA2OTMnLFxuICAgIDB4MzBDOiAnLTQyMSA2NTJRLTQyMiA2NTMgLTQxOSA2NTRRLTQxNSA2NTQgLTM4NCA2NTRILTM0NkwtMzAxIDYwMVEtMjg3IDU4NSAtMjc1IDU3MVQtMjU4IDU1MVQtMjUwIDU0MkwtMTU1IDY1NEgtMTE3US04MCA2NTMgLTgwIDY1MlEtODMgNjQ5IC0xNDcgNTY5TC0yMTMgNDg3SC0yODhMLTM1NCA1NjlRLTQxOCA2NDkgLTQyMSA2NTInLFxuICAgIDB4MzkxOiAnMTgzIDE4MVExODMgMTc5IDE1MiA5MVQxMTggMEgyOEwxNTQgMzQ2TDI4MCA2OTNRMjgxIDY5NCAzMzMgNjk0SDM4NUw1MTEgMzQ5UTYzNiA0IDYzOCAyUTYzOCAwIDU4NCAwSDUzMEw0NjQgMTgzSDE4NEwxODMgMTgxWk0zMjQgNjA2UTMxOSA1NzggMjkyIDQ5MlQyMzggMzMyVDIxMCAyNTZRMjEwIDI1NCAzMjQgMjU0VDQzOCAyNTVMNDI5IDI4MUw0MTkgMzA4UTQwOSAzMzYgMzk1IDM3OFQzNjUgNDY1VDMzOSA1NTFUMzI0IDYxMVY2MDYnLFxuICAgIDB4MzkyOiAnNDI1IDM2M1E0MzggMzYzIDQ2NSAzNTNUNTI2IDMyNFQ1ODUgMjcwVDYxMCAxOTJRNjEwIDEzMiA1NjEgNzhUNDI2IDdRNDA0IDIgMzg3IDJUMjQwIDBIOTBWNjk0SDIyN1EzNzMgNjkzIDM5NiA2ODlRNDg0IDY3MyA1MzMgNjIzVDU4MyA1MTdRNTgzIDQ5NCA1NzQgNDczVDU1MSA0MzdUNTIwIDQwOVQ0ODcgMzg4VDQ1NiAzNzRUNDMzIDM2Nkw0MjUgMzYzWk00OTAgNTE2UTQ5MCA1MjcgNDg1IDUzOVQ0NjcgNTY4VDQyMyA1OTlUMzQ3IDYyMVEzNDAgNjIyIDI2MiA2MjNIMTg4VjM5OUgyNjFIMjg2UTQzMiAzOTkgNDc4IDQ3NVE0OTAgNDk2IDQ5MCA1MTZaTTUxNCAxOTBRNTE0IDI0NSA0NjIgMjgwVDM0MyAzMjJRMzM2IDMyMyAyNTkgMzIzSDE4OFY3MUgyNzRRMzY1IDcyIDM4OCA3N1E0NDUgODggNDc5IDEyMVQ1MTQgMTkwJyxcbiAgICAweDM5MzogJzg3IDBWNjkxSDQ5OVY2MTFIMzQ1TDE5MSA2MTJWMEg4NycsXG4gICAgMHgzOTQ6ICcyMDMgMzQ4TDM2MiA2OTRINDcwTDYyOSAzNDhRNzg5IDIgNzkwIDFRNzkwIDAgNDE2IDBUNDIgMVE0MyAyIDIwMyAzNDhaTTYzMCA5OFE2MzAgMTAwIDU4NCAxOThUNDgxIDQyMlQ0MDcgNjAzTDQwNSA2MTBMNDAzIDYwMFEzODggNTQ0IDE5MSAxMjJMMTgwIDk5TDQwNSA5OEg2MzAnLFxuICAgIDB4Mzk1OiAnODYgMFY2OTFINTQxVjYxMUgzNjZMMTkwIDYxMlYzOTdINTEzVjMyMUgxOTBWODVIMzcyTDU1NCA4NlYwSDg2JyxcbiAgICAweDM5NjogJzY5IDYxN1Y2OTRINTU1VjY0M0wzNzMgMzYyUTE5MCA4MSAxOTAgNzlIMjM0UTI0NCA3OSAyNzIgNzlUMzQ0IDgwVDQxOSA4MUg1NjBWMEg1NVY1M0wyMzcgMzM0UTQyMCA2MTUgNDIwIDYxN1E0MTMgNjE4IDM4NyA2MThRMzgwIDYxOCAzMzQgNjE4VDI0NSA2MTdINjknLFxuICAgIDB4Mzk3OiAnODYgMFY2OTRIMTkwVjM5OUg1MTdWNjk0SDYyMVYwSDUxN1YzMjNIMTkwVjBIODYnLFxuICAgIDB4Mzk4OiAnNTYgMzQ0UTU2IDQzMCA4NiA1MDJUMTY0IDYxOVQyNzEgNjkwVDM4OCA3MTZRNDQ4IDcxNiA1MDYgNjkxVDYxMyA2MTlUNjkyIDUwMVQ3MjIgMzQ0UTcyMiAxODggNjI0IDg0VDM4OSAtMjFRMjUyIC0yMSAxNTQgODNUNTYgMzQ0Wk02MjQgMzQ1UTYyNCA0MjMgNTk3IDQ4OFQ1MTMgNTk2VDM4MCA2MzlRMzQzIDYzOSAzMDUgNjIxVDIzMiA1NjhUMTc1IDQ3NVQxNTMgMzQ0UTE1MyAyMTYgMjIyIDEzNlQzODggNTZRNDg3IDU2IDU1NSAxMzhUNjI0IDM0NVpNMjA5IDI5OVYzOTdINTY4VjI5OUgyMDknLFxuICAgIDB4Mzk5OiAnODcgMFY2OTRIMTkxVjBIODcnLFxuICAgIDB4MzlBOiAnODggMFY2OTRIMTg4VjUxOUwxODkgMzQzTDUyNSA2OTRINjM4TDM3NSA0MTlMNjUxIDBINTQxTDMwOSAzNTFMMTg4IDIyNVYwSDg4JyxcbiAgICAweDM5QjogJzI5NCA2MDZRMjk0IDU3NCAyNTIgNDMwVDE2MyAxNDRUMTE3IDBINzJRMjggMCAyOCAxVDE0MSAzNDhMMjU0IDY5NEgzNTdMNDY5IDM0OFE1ODIgMiA1ODIgMVQ1MjcgMEw0NzMgMUw0NjkgMTFRNDY5IDEzIDQyNyAxNDFUMzQzIDQxMVQyOTYgNTk5TDI5NCA2MTBWNjA2JyxcbiAgICAweDM5QzogJzkyIDBWNjk0SDIyOEwyMzMgNjgwUTIzNiA2NzUgMjg0IDU0N1QzODIgMjc1VDQzNiAxMDZRNDQ2IDE0OSA0OTcgMjkyVDU5NCA1NThMNjQwIDY4MEw2NDUgNjk0SDc4MlYwSDY4OVYzMDVMNjg4IDYwNlE2ODggNTc3IDUwMCA3OEw0NzkgMjNIMzkyTDM2NCA5NlEzNjQgOTcgMzQyIDE1NlQyOTYgMjgwVDI0NiA0MThUMjAzIDU0NFQxODYgNjA5VjU4OFExODUgNTY4IDE4NSA1MTdUMTg1IDQyN1QxODUgMzA1VjBIOTInLFxuICAgIDB4MzlEOiAnODggMFY2OTRIMjM1TDI1MiA2NTlRMjYxIDYzOSAzNjQgNDI4VDUyNiA4NFY2OTRINjE5VjBINDcyTDQ1NSAzNVE0NTMgMzkgMzMwIDI5NFQxODUgNjAxTDE4MSA2MTFWMEg4OCcsXG4gICAgMHgzOUU6ICc0NyA2MDBWNjg4SDYxOVY2MDBINDdaTTExMSAzMTRWNDAxSDU1NVYzMTRIMTExWk00MiAwVjg4SDYyNFYwSDQyJyxcbiAgICAweDM5RjogJzU1IDM0NVE1NSA1MDQgMTQ5IDYwOVQzNjEgNzE1UTM4NiA3MTUgNDA2IDcxM1E1MjEgNjk2IDYwMCA1OTJUNjgwIDM0NFE2ODAgMTkzIDU5MCA4NlQzNjggLTIyUTIzOSAtMjIgMTQ3IDg0VDU1IDM0NVpNMjc2IDU5VDM2OCA1OVQ1MTggMTQ2VDU3NiAzNjBRNTc2IDQ3MyA1MjUgNTQ1VDQwMSA2MzRRMzcxIDYzNyAzNjIgNjM3UTI4NCA2MzcgMjIyIDU2MlQxNTkgMzYwVDIxNyAxNDcnLFxuICAgIDB4M0EwOiAnODYgMFY2OTFINjIxVjBINTE3VjYxNUgxOTBWMEg4NicsXG4gICAgMHgzQTE6ICc4OCAwVjY5NEgyMzBRMzQ3IDY5MyAzNzAgNjkyVDQxMCA2ODZRNDg3IDY2NyA1MzUgNjExVDU4MyA0ODVRNTgzIDQwOSA1MjcgMzQ4VDM3OSAyNzZRMzY5IDI3NCAyNzkgMjc0SDE5MlYwSDg4Wk00ODYgNDg1UTQ4NiA1MjMgNDcxIDU1MVQ0MzIgNTkzVDM5MSA2MTJUMzU3IDYyMVEzNTAgNjIyIDI2OCA2MjNIMTg5VjM0N0gyNjhRMzUwIDM0OCAzNTcgMzQ5UTM3MCAzNTEgMzgzIDM1NFQ0MTYgMzY4VDQ1MCAzOTFUNDc1IDQyOVQ0ODYgNDg1JyxcbiAgICAweDNBMzogJzU1IDBRNTYgMyAxNzEgMTY3VDI4OCAzMzJRMjg4IDMzNCAxNzIgNDc0TDU1IDYxNVY2OTRINjY2VjYxNEg0MjhMMTkwIDYxNUw0MTIgMzQ3TDMyMiAyMThRMjM2IDk3IDIyOCA4NEw0NDcgODVINjY2VjBINTUnLFxuICAgIDB4M0E0OiAnMzYgNjA4VjY4OEg2NDRWNjA4SDUxOEwzOTIgNjA5VjBIMjg4VjYwOUwxNjIgNjA4SDM2JyxcbiAgICAweDNBNTogJzU1IDU2NVE1OSA2MjUgMTA1IDY3MFQyMTkgNzE2SDIyMlEzMTAgNzE2IDM1MyA2MjdRMzc2IDU4MyAzODYgNTI0TDM4OSA1MTBMMzkzIDUzMlEzOTcgNTU1IDQwNyA1ODRUNDMzIDY0NFQ0ODIgNjk1VDU1NyA3MTZRNjIxIDcxNiA2NjkgNjczVDcyMiA1NjVWNTU1SDYyOVY1NjNRNjI3IDU5MiA2MDcgNjE1VDU1NyA2MzhRNTMwIDYzOCA1MTEgNjI5VDQ3OSA1OThUNDU5IDU1M1Q0NDcgNDg4VDQ0MiA0MTFUNDQxIDMxOVYyMDJWMEgzMzdWMjAyUTMzNyA0NTMgMzMxIDQ5N1EzMTMgNjM0IDIyNiA2MzhRMTg1IDYzOCAxNjcgNjEyVDE0OCA1NjNWNTU1SDU1VjU2NScsXG4gICAgMHgzQTY6ICc2NjYgMzQ3UTY2NiAzMjYgNjYxIDMwMlQ2MzggMjQ3VDU5NCAxOTBUNTIwIDE0MFQ0MTMgMTA3SDQxMFYwSDMxMlY1NFEzMTIgMTA3IDMxMSAxMDdRMjg2IDEwNyAyMjkgMTI4VDEyNSAxOTJRNTUgMjYwIDU1IDM0N1E1NSAzOTYgNzcgNDM4VDEzMSA1MDdUMjAwIDU1MlQyNjUgNTc5VDMxMSA1ODdRMzEyIDU4NyAzMTIgNjQxVjY5NEg0MTBWNTg3SDQxM1E0NzYgNTc2IDUyNCA1NTJUNTk4IDUwMlQ2NDAgNDQ0VDY2MSAzOTBUNjY2IDM0N1pNMzEwIDUxMFEzMDUgNTEwIDI5MSA1MDdUMjUyIDQ5MlQyMDggNDY0VDE3MiA0MTZUMTU3IDM0N1QxNzEgMjc5VDIwNCAyMzNUMjQ3IDIwNVQyODYgMTkwVDMxMCAxODRIMzEyVjM0N1EzMTIgNTEwIDMxMCA1MTBaTTU2NCAzNDdRNTY0IDM4NSA1NDkgNDE2VDUxNCA0NjNUNDcwIDQ5MVQ0MzMgNTA1VDQxNCA1MDlMNDEwIDUxMFYxODRRNDEzIDE4NCA0MjYgMTg3VDQ2NCAyMDBUNTEwIDIyN1Q1NDggMjc1VDU2NCAzNDcnLFxuICAgIDB4M0E3OiAnMTQgMFExNiA1IDE0NCAxODRUMjc1IDM2N0wxNTMgNTI4UTEyMSA1NzEgODggNjE1VDQyIDY3NFQyOCA2OTRIMTUwTDIyOCA1ODRRMzE1IDQ2MyAzMTYgNDYxTDMyNiA0NDhMNDk3IDY5NEg2MTBMNjA5IDY5MlE2MDYgNjg5IDQ5MiA1MjhRNDQwIDQ1NCA0MDkgNDEwVDM3OCAzNjZRMzc4IDM2NSA1MTUgMTgyTDY1MiAwSDUzMUwzMjYgMjkyUTMyNiAyOTMgMjk5IDI1NFQyMjYgMTQ2TDEyOCAwSDE0JyxcbiAgICAweDNBODogJzM0MCAxODdWNjk0SDQzOFYxODdRNDgxIDIwNiA0OTUgMjE5UTUxOCAyMzkgNTMzIDI2N1Q1NTMgMzMyVDU2MCAzODZUNTYyIDQzNVE1NjIgNTc2IDU5MyA2MDhRNjA4IDYyMSA2MzcgNjIxSDY3MEg3MjJWNTQ1SDcxOVE3MTggNTQ1IDcxNSA1NDVUNzEwIDU0NFE2NzkgNTM2IDY2NiA0ODdRNjY0IDQ3NCA2NjIgNDI5VDY1NCAzNDRUNjMzIDI1OVQ1ODAgMTc1VDQ4NiAxMTlRNDUwIDEwOSA0MzggMTA4VjBIMzQwVjEwOEwzMjYgMTEwUTEyMiAxNDkgMTE3IDQxNVExMTYgNDYwIDExMSA0ODdROTggNTM2IDY3IDU0NFE2NSA1NDQgNjIgNTQ0VDU4IDU0NUg1NVY2MjFIMTA3UTE2MCA2MjEgMTYzIDYyMFExOTEgNjEzIDIwMiA1NzNRMjEzIDUzNiAyMTMgNDczVDIyMCAzNTFUMjU2IDI0OVEyNjIgMjM5IDI3MCAyMzBUMjg1IDIxNlQzMDEgMjA1VDMxNiAxOTdUMzI5IDE5MlQzNDAgMTg3JyxcbiAgICAweDNBOTogJzU1IDQ2MlE1NSA1NjEgMTQxIDYzOFQzNTkgNzE2UTQ5MiA3MTYgNTc5IDY0MFQ2NjYgNDYyUTY2NiA0MDcgNjQyIDM0N1Q1NzkgMjIyVDUyOSAxMjZRNTE1IDkxIDUxNSA4NlE1MTcgODUgNTI4IDg1UTUzMCA4NSA1NTIgODVUNTk2IDg2SDY3N1YwSDQyNVYxNFE0MjkgNzkgNDY1IDE2OEw0OTIgMjI4UTQ5NCAyMzIgNTA0IDI1NFQ1MTYgMjgzVDUyNyAzMTBUNTM5IDM0MFQ1NDggMzY4VDU1NiAzOTlUNTYwIDQyOFQ1NjIgNDYwUTU2MiA1MzEgNTEwIDU4NVQzNjEgNjM5UTI2MyA2MzkgMjExIDU4NVQxNTkgNDYwUTE1OSA0MjIgMTcwIDM3OFQxOTIgMzA5VDIyOSAyMjhMMjU2IDE2OFEyOTIgNzkgMjk2IDE0VjBINDRWODZIMTI1UTE0NiA4NiAxNjggODZUMTkzIDg1TDIwNiA4NlEyMDYgMTAzIDE4MyAxNDhUMTMxIDI0MVQ3OSAzNTJUNTUgNDYyJyxcbiAgICAweDIwMTM6ICcwIDIzNlYzMTJINDk5VjIzNkgwJyxcbiAgICAweDIwMTQ6ICcwIDIzNlYzMTJIOTk5VjIzNkgwJyxcbiAgICAweDIwMTU6ICcwIDIzNlYzMTJIOTk5VjIzNkgwJyxcbiAgICAweDIwMTc6ICcwIC0xMTRWLTM4SDQ5OVYtMTE0SDAnLFxuICAgIDB4MjAxODogJzkwIDU2OEwxNDAgNjk0SDE4OUwxNzQgNjMzUTE1OSA1NzIgMTU4IDU3MVExNTggNTY5IDE3MyA1NjlIMTg4VjQ3MUg5MFY1NjgnLFxuICAgIDB4MjAxOTogJzkwIDU5NlY2OTRIMTg4VjU5N0wxMzkgNDcxSDg5TDEwNCA1MzJRMTE5IDU5MyAxMjAgNTk0UTEyMCA1OTYgMTA1IDU5Nkg5MCcsXG4gICAgMHgyMDFDOiAnMTc0IDU2OEwyMjQgNjk0SDI3M0wyNTggNjMzUTI0MyA1NzIgMjQyIDU3MVEyNDIgNTY5IDI1NyA1NjlIMjcyVjQ3MUgxNzRWNTY4Wk0zNjggNTY4TDQxOCA2OTRINDY3TDQ1MiA2MzNRNDM3IDU3MiA0MzYgNTcxUTQzNiA1NjkgNDUxIDU2OUg0NjZWNDcxSDM2OFY1NjgnLFxuICAgIDB4MjAxRDogJzMzIDU5NlY2OTRIMTMxVjU5N0w4MiA0NzFIMzJMNDcgNTMyUTYyIDU5MyA2MyA1OTRRNjMgNTk2IDQ4IDU5NkgzM1pNMjI3IDU5NlY2OTRIMzI1VjU5N0wyNzYgNDcxSDIyNkwyNDEgNTMyUTI1NiA1OTMgMjU3IDU5NFEyNTcgNTk2IDI0MiA1OTZIMjI3JyxcbiAgICAweDIwNDQ6ICc0MjMgNzUwUTQzMiA3NTAgNDM4IDc0NFQ0NDQgNzMwUTQ0NCA3MjUgMjcxIDI0OFQ5MiAtMjQwUTg1IC0yNTAgNzUgLTI1MFE2OCAtMjUwIDYyIC0yNDVUNTYgLTIzMVE1NiAtMjIxIDIzMCAyNTdUNDA3IDc0MFE0MTEgNzUwIDQyMyA3NTAnLFxuICAgIDB4MjIwNjogJzIwMyAzNDhMMzYyIDY5NEg0NzBMNjI5IDM0OFE3ODkgMiA3OTAgMVE3OTAgMCA0MTYgMFQ0MiAxUTQzIDIgMjAzIDM0OFpNNjMwIDk4UTYzMCAxMDAgNTg0IDE5OFQ0ODEgNDIyVDQwNyA2MDNMNDA1IDYxMEw0MDMgNjAwUTM4OCA1NDQgMTkxIDEyMkwxODAgOTlMNDA1IDk4SDYzMCcsXG59LHtcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3Qgc2NyaXB0Qm9sZDogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmV4cG9ydCB7c2NyaXB0Qm9sZH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZvbnRzL3RleC9zY3JpcHQtYm9sZC5qcyc7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NoYXJNYXAsIENoYXJPcHRpb25zfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5cbmV4cG9ydCBjb25zdCBzY3JpcHQ6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5leHBvcnQge3NjcmlwdH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZvbnRzL3RleC9zY3JpcHQuanMnO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3Qgc21hbGxvcDogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHgyODogWy44NSwgLjM0OSwgLjQ1OF0sXG4gICAgMHgyOTogWy44NSwgLjM0OSwgLjQ1OF0sXG4gICAgMHgyRjogWy44NSwgLjM0OSwgLjU3OF0sXG4gICAgMHg1QjogWy44NSwgLjM0OSwgLjQxN10sXG4gICAgMHg1QzogWy44NSwgLjM0OSwgLjU3OF0sXG4gICAgMHg1RDogWy44NSwgLjM0OSwgLjQxN10sXG4gICAgMHg3QjogWy44NSwgLjM0OSwgLjU4M10sXG4gICAgMHg3RDogWy44NSwgLjM0OSwgLjU4M10sXG4gICAgMHgyQzY6IFsuNzQ0LCAtMC41NTEsIC41NTZdLFxuICAgIDB4MkRDOiBbLjcyMiwgLTAuNTk3LCAuNTU2XSxcbiAgICAweDMwMjogWy43NDQsIC0wLjU1MSwgMF0sXG4gICAgMHgzMDM6IFsuNzIyLCAtMC41OTcsIDBdLFxuICAgIDB4MjAxNjogWy42MDIsIDAsIC43NzhdLFxuICAgIDB4MjA0NDogWy44NSwgLjM0OSwgLjU3OF0sXG4gICAgMHgyMTkxOiBbLjYsIDAsIC42NjddLFxuICAgIDB4MjE5MzogWy42LCAwLCAuNjY3XSxcbiAgICAweDIxRDE6IFsuNTk5LCAwLCAuNzc4XSxcbiAgICAweDIxRDM6IFsuNiwgMCwgLjc3OF0sXG4gICAgMHgyMjBGOiBbLjc1LCAuMjUsIC45NDRdLFxuICAgIDB4MjIxMDogWy43NSwgLjI1LCAuOTQ0XSxcbiAgICAweDIyMTE6IFsuNzUsIC4yNSwgMS4wNTZdLFxuICAgIDB4MjIxQTogWy44NSwgLjM1LCAxLCB7aWM6IC4wMn1dLFxuICAgIDB4MjIyMzogWy42MjcsIC4wMTUsIC4zMzNdLFxuICAgIDB4MjIyNTogWy42MjcsIC4wMTUsIC41NTZdLFxuICAgIDB4MjIyQjogWy44MDUsIC4zMDYsIC40NzIsIHtpYzogLjEzOH1dLFxuICAgIDB4MjIyQzogWy44MDUsIC4zMDYsIC44MTksIHtpYzogLjEzOH1dLFxuICAgIDB4MjIyRDogWy44MDUsIC4zMDYsIDEuMTY2LCB7aWM6IC4xMzh9XSxcbiAgICAweDIyMkU6IFsuODA1LCAuMzA2LCAuNDcyLCB7aWM6IC4xMzh9XSxcbiAgICAweDIyQzA6IFsuNzUsIC4yNDksIC44MzNdLFxuICAgIDB4MjJDMTogWy43NSwgLjI0OSwgLjgzM10sXG4gICAgMHgyMkMyOiBbLjc1LCAuMjQ5LCAuODMzXSxcbiAgICAweDIyQzM6IFsuNzUsIC4yNDksIC44MzNdLFxuICAgIDB4MjMwODogWy44NSwgLjM0OSwgLjQ3Ml0sXG4gICAgMHgyMzA5OiBbLjg1LCAuMzQ5LCAuNDcyXSxcbiAgICAweDIzMEE6IFsuODUsIC4zNDksIC40NzJdLFxuICAgIDB4MjMwQjogWy44NSwgLjM0OSwgLjQ3Ml0sXG4gICAgMHgyMzI5OiBbLjg1LCAuMzUsIC40NzJdLFxuICAgIDB4MjMyQTogWy44NSwgLjM1LCAuNDcyXSxcbiAgICAweDIzRDA6IFsuNjAyLCAwLCAuNjY3XSxcbiAgICAweDI3NTg6IFsuNjI3LCAuMDE1LCAuMzMzXSxcbiAgICAweDI3RTg6IFsuODUsIC4zNSwgLjQ3Ml0sXG4gICAgMHgyN0U5OiBbLjg1LCAuMzUsIC40NzJdLFxuICAgIDB4MkEwMDogWy43NSwgLjI1LCAxLjExMV0sXG4gICAgMHgyQTAxOiBbLjc1LCAuMjUsIDEuMTExXSxcbiAgICAweDJBMDI6IFsuNzUsIC4yNSwgMS4xMTFdLFxuICAgIDB4MkEwNDogWy43NSwgLjI0OSwgLjgzM10sXG4gICAgMHgyQTA2OiBbLjc1LCAuMjQ5LCAuODMzXSxcbiAgICAweDJBMEM6IFsuODA1LCAuMzA2LCAxLjYzOCwge2ljOiAuMTM4fV0sXG4gICAgMHgzMDA4OiBbLjg1LCAuMzUsIC40NzJdLFxuICAgIDB4MzAwOTogWy44NSwgLjM1LCAuNDcyXSxcbn07XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtTVkdDaGFyTWFwLCBBZGRQYXRoc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuaW1wb3J0IHtzbWFsbG9wIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvc21hbGxvcC5qcyc7XG5cbmV4cG9ydCBjb25zdCBzbWFsbG9wOiBTVkdDaGFyTWFwID0gQWRkUGF0aHMoZm9udCwge1xuICAgIDB4Mjg6ICcxNTIgMjUxUTE1MiA2NDYgMzg4IDg1MEg0MTZRNDIyIDg0NCA0MjIgODQxUTQyMiA4MzcgNDAzIDgxNlQzNTcgNzUzVDMwMiA2NDlUMjU1IDQ4MlQyMzYgMjUwUTIzNiAxMjQgMjU1IDE5VDMwMSAtMTQ3VDM1NiAtMjUxVDQwMyAtMzE1VDQyMiAtMzQwUTQyMiAtMzQzIDQxNiAtMzQ5SDM4OFEzNTkgLTMyNSAzMzIgLTI5NlQyNzEgLTIxM1QyMTIgLTk3VDE3MCA1NlQxNTIgMjUxJyxcbiAgICAweDI5OiAnMzA1IDI1MVEzMDUgLTE0NSA2OSAtMzQ5SDU2UTQzIC0zNDkgMzkgLTM0N1QzNSAtMzM4UTM3IC0zMzMgNjAgLTMwN1QxMDggLTIzOVQxNjAgLTEzNlQyMDQgMjdUMjIxIDI1MFQyMDQgNDczVDE2MCA2MzZUMTA4IDc0MFQ2MCA4MDdUMzUgODM5UTM1IDg1MCA1MCA4NTBINTZINjlRMTk3IDc0MyAyNTYgNTY2UTMwNSA0MjUgMzA1IDI1MScsXG4gICAgMHgyRjogJzQ4MSA4MzhRNDg5IDg1MCA1MDAgODUwUTUwOCA4NTAgNTE1IDg0NFQ1MjIgODI3UTUyMSA4MjQgMzExIDI0OFQ5NiAtMzM3UTkwIC0zNDkgNzcgLTM0OVE2OCAtMzQ5IDYyIC0zNDNUNTUgLTMyNlE1NiAtMzIzIDI2NiAyNTNUNDgxIDgzOCcsXG4gICAgMHg1QjogJzIwMiAtMzQ5Vjg1MEgzOTRWODEwSDI0MlYtMzA5SDM5NFYtMzQ5SDIwMicsXG4gICAgMHg1QzogJzUyMiAtMzI2UTUyMiAtMzM3IDUxNSAtMzQzVDUwMCAtMzQ5UTQ4NyAtMzQ5IDQ4MSAtMzM3UTQ3NyAtMzI4IDI2NyAyNDhUNTUgODI3UTU0IDgzNSA2MCA4NDJUNzYgODUwUTg5IDg1MCA5NiA4MzhRMTAwIDgyOSAzMTAgMjUzVDUyMiAtMzI2JyxcbiAgICAweDVEOiAnMjIgODEwVjg1MEgyMTRWLTM0OUgyMlYtMzA5SDE3NFY4MTBIMjInLFxuICAgIDB4N0I6ICc0NzcgLTM0M0w0NzEgLTM0OUg0NThRNDMyIC0zNDkgMzY3IC0zMjVUMjczIC0yNjNRMjU4IC0yNDUgMjUwIC0yMTJMMjQ5IC01MVEyNDkgLTI3IDI0OSAxMlEyNDggMTE4IDI0NCAxMjhRMjQzIDEyOSAyNDMgMTMwUTIyMCAxODkgMTIxIDIyOFExMDkgMjMyIDEwNyAyMzVUMTA1IDI1MFExMDUgMjU2IDEwNSAyNTdUMTA1IDI2MVQxMDcgMjY1VDExMSAyNjhUMTE4IDI3MlQxMjggMjc2VDE0MiAyODNUMTYyIDI5MVEyMjQgMzI0IDI0MyAzNzFRMjQzIDM3MiAyNDQgMzczUTI0OCAzODQgMjQ5IDQ2OVEyNDkgNDc1IDI0OSA0ODlRMjQ5IDUyOCAyNDkgNTUyTDI1MCA3MTRRMjUzIDcyOCAyNTYgNzM2VDI3MSA3NjFUMjk5IDc4OVQzNDcgODE2VDQyMiA4NDNRNDQwIDg0OSA0NDEgODQ5SDQ0M1E0NDUgODQ5IDQ0NyA4NDlUNDUyIDg1MFQ0NTcgODUwSDQ3MUw0NzcgODQ0VjgzMFE0NzcgODIwIDQ3NiA4MTdUNDcwIDgxMVQ0NTkgODA3VDQzNyA4MDFUNDA0IDc4NVEzNTMgNzYwIDMzOCA3MjRRMzMzIDcxMCAzMzMgNTUwUTMzMyA1MjYgMzMzIDQ5MlQzMzQgNDQ3UTMzNCAzOTMgMzI3IDM2OFQyOTUgMzE4UTI1NyAyODAgMTgxIDI1NUwxNjkgMjUxTDE4NCAyNDVRMzE4IDE5OCAzMzIgMTEyUTMzMyAxMDYgMzMzIC00OVEzMzMgLTIwOSAzMzggLTIyM1EzNTEgLTI1NSAzOTEgLTI3N1Q0NjkgLTMwOVE0NzcgLTMxMSA0NzcgLTMyOVYtMzQzJyxcbiAgICAweDdEOiAnMTEwIDg0OUwxMTUgODUwUTEyMCA4NTAgMTI1IDg1MFExNTEgODUwIDIxNSA4MjZUMzA5IDc2NFEzMjQgNzQ3IDMzMiA3MTRMMzMzIDU1MlEzMzMgNTI4IDMzMyA0ODlRMzM0IDM4MyAzMzggMzczUTMzOSAzNzIgMzM5IDM3MVEzNTMgMzM2IDM5MSAzMTBUNDY5IDI3MVE0NzcgMjY4IDQ3NyAyNTFRNDc3IDI0MSA0NzYgMjM3VDQ3MiAyMzJUNDU2IDIyNVQ0MjggMjE0UTM1NyAxNzkgMzM5IDEzMFEzMzkgMTI5IDMzOCAxMjhRMzM0IDExNyAzMzMgMzJRMzMzIDI2IDMzMyAxMlEzMzMgLTI3IDMzMyAtNTFMMzMyIC0yMTJRMzI4IC0yMjggMzIzIC0yNDBUMzAyIC0yNzFUMjU1IC0zMDdUMTc1IC0zMzhRMTM5IC0zNDkgMTI1IC0zNDlUMTA4IC0zNDZUMTA1IC0zMjlRMTA1IC0zMTQgMTA3IC0zMTJUMTMwIC0zMDRRMjMzIC0yNzEgMjQ4IC0yMDlRMjQ5IC0yMDMgMjQ5IC00OVY1N1EyNDkgMTA2IDI1MyAxMjVUMjczIDE2N1EzMDcgMjEzIDM5OCAyNDVMNDEzIDI1MUw0MDEgMjU1UTI2NSAzMDAgMjUwIDM4OVEyNDkgMzk1IDI0OSA1NTBRMjQ5IDcxMCAyNDQgNzI0UTIyNCA3NzQgMTEyIDgxMVExMDUgODEzIDEwNSA4MzBRMTA1IDg0NSAxMTAgODQ5JyxcbiAgICAweDJDNjogJzI3OSA2NjlRMjczIDY2OSAxNDIgNjEwVDkgNTUxTDAgNTY5US04IDU4NSAtOCA1ODdRLTggNTg4IC03IDU4OEwxMiA1OThRMzAgNjA4IDY2IDYyOFQxMzYgNjY2TDI3NyA3NDRMNTY0IDU4N0w1NTUgNTY5UTU0OSA1NTYgNTQ3IDU1NFQ1NDQgNTUyUTUzOSA1NTUgNDEwIDYxMlQyNzkgNjY5JyxcbiAgICAweDJEQzogJzM3NCA1OTdRMzM3IDU5NyAyNjkgNjI3VDE2MCA2NThRMTAxIDY1OCAzNCA2MDZMMjQgNTk3TDEyIDYxMVExIDYyNCAxIDYyNlExIDYyNyAyNyA2NDhUNTUgNjcxUTEyMCA3MjIgMTgyIDcyMlEyMTkgNzIyIDI4NiA2OTJUMzk1IDY2MVE0NTQgNjYxIDUyMSA3MTNMNTMxIDcyMkw1NDMgNzA4UTU1NCA2OTUgNTU0IDY5M1E1NTQgNjkyIDUyOCA2NzFUNTAwIDY0OFE0MzQgNTk3IDM3NCA1OTcnLFxuICAgIDB4MzAyOiAnLTI3NyA2NjlRLTI4MyA2NjkgLTQxNCA2MTBULTU0NyA1NTFMLTU1NiA1NjlRLTU2NCA1ODUgLTU2NCA1ODdRLTU2NCA1ODggLTU2MyA1ODhMLTU0NCA1OThRLTUyNiA2MDggLTQ5MCA2MjhULTQyMCA2NjZMLTI3OSA3NDRMOCA1ODdMLTEgNTY5US03IDU1NiAtOSA1NTRULTEyIDU1MlEtMTcgNTU1IC0xNDYgNjEyVC0yNzcgNjY5JyxcbiAgICAweDMwMzogJy0xODIgNTk3US0yMTkgNTk3IC0yODcgNjI3VC0zOTYgNjU4US00NTUgNjU4IC01MjIgNjA2TC01MzIgNTk3TC01NDQgNjExUS01NTUgNjI0IC01NTUgNjI2US01NTUgNjI3IC01MjkgNjQ4VC01MDEgNjcxUS00MzYgNzIyIC0zNzQgNzIyUS0zMzcgNzIyIC0yNzAgNjkyVC0xNjEgNjYxUS0xMDIgNjYxIC0zNSA3MTNMLTI1IDcyMkwtMTMgNzA4US0yIDY5NSAtMiA2OTNRLTIgNjkyIC0yOCA2NzFULTU2IDY0OFEtMTIyIDU5NyAtMTgyIDU5NycsXG4gICAgMHgyMDE2OiAnMjU3IDBWNjAySDMwMFYwSDI1N1pNNDc4IDBWNjAySDUyMVYwSDQ3OCcsXG4gICAgMHgyMDQ0OiAnNDgxIDgzOFE0ODkgODUwIDUwMCA4NTBRNTA4IDg1MCA1MTUgODQ0VDUyMiA4MjdRNTIxIDgyNCAzMTEgMjQ4VDk2IC0zMzdROTAgLTM0OSA3NyAtMzQ5UTY4IC0zNDkgNjIgLTM0M1Q1NSAtMzI2UTU2IC0zMjMgMjY2IDI1M1Q0ODEgODM4JyxcbiAgICAweDIxOTE6ICcxMTIgNDIxTDEyMCA0MjRRMTI3IDQyNyAxMzYgNDMwVDE2MSA0NDFUMTkxIDQ1OFQyMjQgNDgxVDI2MCA1MTBUMjk1IDU0NlQzMjggNTkxTDMzMyA2MDBMMzQwIDU4OVEzODAgNTI3IDQzMSA0ODlUNTU1IDQyMVYzNzdMNTQzIDM4MVE0NDUgNDE4IDM2OCA0OTJMMzU1IDUwNFYwSDMxMlY1MDRMMjk5IDQ5MlEyMjIgNDE4IDEyNCAzODFMMTEyIDM3N1Y0MjEnLFxuICAgIDB4MjE5MzogJzMxMiA5NlY2MDBIMzU1Vjk2TDM2OCAxMDhRNDQ1IDE4MiA1NDMgMjE5TDU1NSAyMjNWMTc5TDU0NiAxNzZRNTM4IDE3MyA1MjkgMTY5VDUwNSAxNThUNDc1IDE0MVQ0NDIgMTE5VDQwNyA5MFQzNzIgNTNUMzM5IDlMMzM0IDBMMzI3IDExUTI4NyA3MyAyMzYgMTExVDExMiAxNzlWMjIzTDEyNCAyMTlRMjIyIDE4MiAyOTkgMTA4TDMxMiA5NicsXG4gICAgMHgyMUQxOiAnMTQyIDMyOVEzMDAgNDE5IDM4OSA1OTlRMzg5IDU5OCAzOTkgNTc5VDQyMCA1NDFUNDUyIDQ5NFQ0OTcgNDM4VDU1OCAzODNUNjM2IDMyOVQ3MDggMjk0TDcyMSAyODlWMjQ2UTcxOCAyNDYgNjk0IDI1NlQ2MjMgMjkzVDUzMiAzNTZMNTIyIDM2NEw1MjEgMTgyVjBINDc4VjQwNUw0NjYgNDE3UTQzNiA0NTAgMzg5IDUxNlEzODggNTE1IDM3OCA1MDBUMzUyIDQ2M1QzMTIgNDE3TDMwMCA0MDVWMEgyNTdWMzY0TDI0NyAzNTZRMjAyIDMyMCAxNTUgMjkzVDgyIDI1Nkw1NyAyNDZWMjg5TDcwIDI5NFExMDEgMzA1IDE0MiAzMjknLFxuICAgIDB4MjFEMzogJzI1NyAyMzZWNjAwSDMwMFYxOTVMMzEyIDE4M1EzNDIgMTUwIDM4OSA4NFEzOTAgODUgNDAwIDEwMFQ0MjYgMTM3VDQ2NiAxODNMNDc4IDE5NVY2MDBINTIxVjQxOEw1MjIgMjM2TDUzMiAyNDRRNTc2IDI4MCA2MjMgMzA3VDY5NiAzNDRMNzIxIDM1NFYzMTFMNzA4IDMwNlE2NzcgMjk1IDYzNiAyNzFRNDc4IDE4MSAzODkgMVEzODkgMiAzNzkgMjFUMzU4IDU5VDMyNiAxMDZUMjgxIDE2MlQyMjAgMjE3VDE0MiAyNzFUNzAgMzA2TDU3IDMxMVYzNTRRNjAgMzU0IDgzIDM0NVQxNTQgMzA4VDI0NyAyNDRMMjU3IDIzNicsXG4gICAgMHgyMjBGOiAnMTU4IDY1NlExNDcgNjg0IDEzMSA2OTRRMTEwIDcwNyA2OSA3MTBINTVWNzUwSDg4OFY3MTBIODc0UTg0MCA3MDggODIwIDY5OFQ3OTUgNjc4VDc4NiA2NTZWLTE1NVE3OTggLTIwNiA4NzQgLTIxMEg4ODhWLTI1MEg1NzBWLTIxMEg1ODRRNjE4IC0yMDggNjM4IC0xOTdUNjYzIC0xNzhUNjczIC0xNTVWNzEwSDI3MFYyNzdMMjcxIC0xNTVRMjgzIC0yMDYgMzU5IC0yMTBIMzczVi0yNTBINTVWLTIxMEg2OVExMDMgLTIwOCAxMjMgLTE5N1QxNDggLTE3OFQxNTggLTE1NVY2NTYnLFxuICAgIDB4MjIxMDogJzE1OCA2NTZRMTQ3IDY4NCAxMzEgNjk0UTExMCA3MDcgNjkgNzEwSDU1Vjc1MEgzNzNWNzEwSDM1OVEzMjUgNzA4IDMwNSA2OThUMjgwIDY3OFQyNzEgNjU2TDI3MCAyMjNWLTIxMEg2NzNWNjU2UTY2NiA2NzIgNjYzIDY3OVQ2MzkgNjk3VDU4NCA3MTBINTcwVjc1MEg4ODhWNzEwSDg3NFE4NDAgNzA4IDgyMCA2OThUNzk1IDY3OFQ3ODYgNjU2Vi0xNTVRNzk4IC0yMDYgODc0IC0yMTBIODg4Vi0yNTBINTVWLTIxMEg2OVExMDMgLTIwOCAxMjMgLTE5N1QxNDggLTE3OFQxNTggLTE1NVY2NTYnLFxuICAgIDB4MjIxMTogJzYxIDc0OFE2NCA3NTAgNDg5IDc1MEg5MTNMOTU0IDY0MFE5NjUgNjA5IDk3NiA1NzlUOTkzIDUzM1Q5OTkgNTE2SDk3OUw5NTkgNTE3UTkzNiA1NzkgODg2IDYyMVQ3NzcgNjgyUTcyNCA3MDAgNjU1IDcwNVQ0MzYgNzEwSDMxOVExODMgNzEwIDE4MyA3MDlRMTg2IDcwNiAzNDggNDg0VDUxMSAyNTlRNTE3IDI1MCA1MTMgMjQ0TDQ5MCAyMTZRNDY2IDE4OCA0MjAgMTM0VDMzMCAyN0wxNDkgLTE4N1ExNDkgLTE4OCAzNjIgLTE4OFEzODggLTE4OCA0MzYgLTE4OFQ1MDYgLTE4OVE2NzkgLTE4OSA3NzggLTE2MlQ5MzYgLTQzUTk0NiAtMjcgOTU5IDZIOTk5TDkxMyAtMjQ5TDQ4OSAtMjUwUTY1IC0yNTAgNjIgLTI0OFE1NiAtMjQ2IDU2IC0yMzlRNTYgLTIzNCAxMTggLTE2MVExODYgLTgxIDI0NSAtMTFMNDI4IDIwNlE0MjggMjA3IDI0MiA0NjJMNTcgNzE3TDU2IDcyOFE1NiA3NDQgNjEgNzQ4JyxcbiAgICAweDIyMUE6ICcyNjMgMjQ5UTI2NCAyNDkgMzE1IDEzMFQ0MTcgLTEwOFQ0NzAgLTIyOEw3MjUgMzAyUTk4MSA4MzcgOTgyIDgzOVE5ODkgODUwIDEwMDEgODUwUTEwMDggODUwIDEwMTMgODQ0VDEwMjAgODMyVjgyNkw3NDEgMjQzUTY0NSA0MyA1NDAgLTE3NlE0NzkgLTMwMyA0NjkgLTMyNFQ0NTMgLTM0OFE0NDkgLTM1MCA0MzYgLTM1MEw0MjQgLTM0OUwzMTUgLTk2UTIwNiAxNTYgMjA1IDE1NkwxNzEgMTMwUTEzOCAxMDQgMTM3IDEwNEwxMTEgMTMwTDI2MyAyNDknLFxuICAgIDB4MjIyMzogJzE0NiA2MTJRMTUxIDYyNyAxNjYgNjI3UTE4MiA2MjcgMTg3IDYxMlExODggNjEwIDE4OCAzMDZUMTg3IDBRMTg0IC0xNSAxNjYgLTE1UTE0OSAtMTUgMTQ2IDBWMTBRMTQ2IDE5IDE0NiAzNVQxNDYgNzNUMTQ2IDEyMlQxNDUgMTc5VDE0NSAyNDFUMTQ1IDMwNlQxNDUgMzcwVDE0NSA0MzNUMTQ1IDQ4OVQxNDYgNTM4VDE0NiA1NzZUMTQ2IDYwMlY2MTInLFxuICAgIDB4MjIyNTogJzE0NiA2MTJRMTUxIDYyNyAxNjYgNjI3UTE4MiA2MjcgMTg3IDYxMlExODggNjEwIDE4OCAzMDZUMTg3IDBRMTg0IC0xNSAxNjYgLTE1UTE0OSAtMTUgMTQ2IDBWMTBRMTQ2IDE5IDE0NiAzNVQxNDYgNzNUMTQ2IDEyMlQxNDUgMTc5VDE0NSAyNDFUMTQ1IDMwNlQxNDUgMzcwVDE0NSA0MzNUMTQ1IDQ4OVQxNDYgNTM4VDE0NiA1NzZUMTQ2IDYwMlY2MTJaTTM2OCA2MTJRMzczIDYyNyAzODggNjI3UTQwNCA2MjcgNDA5IDYxMlE0MTAgNjEwIDQxMCAzMDZUNDA5IDBRNDA2IC0xNSAzODkgLTE1UTM3MSAtMTUgMzY4IDBWMTBRMzY4IDE5IDM2OCAzNVQzNjggNzNUMzY4IDEyMlQzNjcgMTc5VDM2NyAyNDFUMzY3IDMwNlQzNjcgMzcwVDM2NyA0MzNUMzY3IDQ4OVQzNjggNTM4VDM2OCA1NzZUMzY4IDYwMlY2MTInLFxuICAgIDB4MjIyQjogJzExMyAtMjQ0UTExMyAtMjQ2IDExOSAtMjUxVDEzOSAtMjYzVDE2NyAtMjY5UTE4NiAtMjY5IDE5OSAtMjYwUTIyMCAtMjQ3IDIzMiAtMjE4VDI1MSAtMTMzVDI2MiAtMTVUMjc2IDE1NVQyOTcgMzY3UTMwMCAzOTAgMzA1IDQzOFQzMTQgNTEyVDMyNSA1ODBUMzQwIDY0N1QzNjEgNzAzVDM5MCA3NTFUNDI4IDc4NFQ0NzkgODA0UTQ4MSA4MDQgNDg4IDgwNFQ1MDEgODA1UTU1MiA4MDIgNTgxIDc2OVQ2MTAgNjk1UTYxMCA2NjkgNTk0IDY1N1Q1NjEgNjQ1UTU0MiA2NDUgNTI3IDY1OFQ1MTIgNjk0UTUxMiA3MDUgNTE2IDcxNFQ1MjYgNzI5VDUzOCA3MzdUNTQ4IDc0Mkw1NTIgNzQzUTU1MiA3NDUgNTQ1IDc1MVQ1MjUgNzYyVDQ5OCA3NjhRNDc1IDc2OCA0NjAgNzU2VDQzNCA3MTZUNDE4IDY1MlQ0MDcgNTU5VDM5OCA0NDRUMzg3IDMwMFQzNjkgMTMzUTM0OSAtMzggMzM3IC0xMDJUMzAzIC0yMDdRMjU2IC0zMDYgMTY5IC0zMDZRMTE5IC0zMDYgODcgLTI3MlQ1NSAtMTk2UTU1IC0xNzAgNzEgLTE1OFQxMDQgLTE0NlExMjMgLTE0NiAxMzggLTE1OVQxNTMgLTE5NVExNTMgLTIwNiAxNDkgLTIxNVQxMzkgLTIzMFQxMjcgLTIzOFQxMTcgLTI0MkwxMTMgLTI0NCcsXG4gICAgMHgyMjJDOiAnMTEzIC0yNDRRMTEzIC0yNDYgMTE5IC0yNTFUMTM5IC0yNjNUMTY3IC0yNjlRMTg2IC0yNjkgMTk5IC0yNjBRMjIwIC0yNDcgMjMyIC0yMThUMjUxIC0xMzNUMjYyIC0xNVQyNzYgMTU1VDI5NyAzNjdRMzAwIDM5MCAzMDUgNDM4VDMxNCA1MTJUMzI1IDU4MFQzNDAgNjQ3VDM2MSA3MDNUMzkwIDc1MVQ0MjggNzg0VDQ3OSA4MDRRNDgxIDgwNCA0ODggODA0VDUwMSA4MDVRNTUyIDgwMiA1ODEgNzY5VDYxMCA2OTVRNjEwIDY2OSA1OTQgNjU3VDU2MSA2NDVRNTQyIDY0NSA1MjcgNjU4VDUxMiA2OTRRNTEyIDcwNSA1MTYgNzE0VDUyNiA3MjlUNTM4IDczN1Q1NDggNzQyTDU1MiA3NDNRNTUyIDc0NSA1NDUgNzUxVDUyNSA3NjJUNDk4IDc2OFE0NzUgNzY4IDQ2MCA3NTZUNDM0IDcxNlQ0MTggNjUyVDQwNyA1NTlUMzk4IDQ0NFQzODcgMzAwVDM2OSAxMzNRMzQ5IC0zOCAzMzcgLTEwMlQzMDMgLTIwN1EyNTYgLTMwNiAxNjkgLTMwNlExMTkgLTMwNiA4NyAtMjcyVDU1IC0xOTZRNTUgLTE3MCA3MSAtMTU4VDEwNCAtMTQ2UTEyMyAtMTQ2IDEzOCAtMTU5VDE1MyAtMTk1UTE1MyAtMjA2IDE0OSAtMjE1VDEzOSAtMjMwVDEyNyAtMjM4VDExNyAtMjQyTDExMyAtMjQ0Wk00NjAgLTI0NFE0NjAgLTI0NiA0NjYgLTI1MVQ0ODYgLTI2M1Q1MTQgLTI2OVE1MzIgLTI2OSA1NDYgLTI2MFE1NjcgLTI0NyA1NzkgLTIxOFQ1OTggLTEzM1Q2MDkgLTE1VDYyMyAxNTVUNjQ0IDM2N1E2NDcgMzkwIDY1MiA0MzhUNjYxIDUxMlQ2NzIgNTgwVDY4NyA2NDdUNzA4IDcwM1Q3MzcgNzUxVDc3NSA3ODRUODI2IDgwNFE4MjggODA0IDgzNSA4MDRUODQ4IDgwNVE4OTkgODAyIDkyOCA3NjlUOTU3IDY5NVE5NTcgNjY5IDk0MSA2NTdUOTA4IDY0NVE4ODkgNjQ1IDg3NCA2NThUODU5IDY5NFE4NTkgNzA1IDg2MyA3MTRUODczIDcyOVQ4ODUgNzM3VDg5NSA3NDJMODk5IDc0M1E4OTkgNzQ1IDg5MiA3NTFUODcyIDc2MlQ4NDUgNzY4UTgyMiA3NjggODA3IDc1NlQ3ODEgNzE2VDc2NSA2NTJUNzU0IDU1OVQ3NDUgNDQ0VDczNCAzMDBUNzE2IDEzM1E2OTYgLTM4IDY4NCAtMTAyVDY1MCAtMjA3UTYwMyAtMzA2IDUxNiAtMzA2UTQ2NiAtMzA2IDQzNCAtMjcyVDQwMiAtMTk2UTQwMiAtMTcwIDQxOCAtMTU4VDQ1MSAtMTQ2UTQ3MCAtMTQ2IDQ4NSAtMTU5VDUwMCAtMTk1UTUwMCAtMjA2IDQ5NiAtMjE1VDQ4NiAtMjMwVDQ3NCAtMjM4VDQ2NCAtMjQyTDQ2MCAtMjQ0JyxcbiAgICAweDIyMkQ6ICcxMTMgLTI0NFExMTMgLTI0NiAxMTkgLTI1MVQxMzkgLTI2M1QxNjcgLTI2OVExODYgLTI2OSAxOTkgLTI2MFEyMjAgLTI0NyAyMzIgLTIxOFQyNTEgLTEzM1QyNjIgLTE1VDI3NiAxNTVUMjk3IDM2N1EzMDAgMzkwIDMwNSA0MzhUMzE0IDUxMlQzMjUgNTgwVDM0MCA2NDdUMzYxIDcwM1QzOTAgNzUxVDQyOCA3ODRUNDc5IDgwNFE0ODEgODA0IDQ4OCA4MDRUNTAxIDgwNVE1NTIgODAyIDU4MSA3NjlUNjEwIDY5NVE2MTAgNjY5IDU5NCA2NTdUNTYxIDY0NVE1NDIgNjQ1IDUyNyA2NThUNTEyIDY5NFE1MTIgNzA1IDUxNiA3MTRUNTI2IDcyOVQ1MzggNzM3VDU0OCA3NDJMNTUyIDc0M1E1NTIgNzQ1IDU0NSA3NTFUNTI1IDc2MlQ0OTggNzY4UTQ3NSA3NjggNDYwIDc1NlQ0MzQgNzE2VDQxOCA2NTJUNDA3IDU1OVQzOTggNDQ0VDM4NyAzMDBUMzY5IDEzM1EzNDkgLTM4IDMzNyAtMTAyVDMwMyAtMjA3UTI1NiAtMzA2IDE2OSAtMzA2UTExOSAtMzA2IDg3IC0yNzJUNTUgLTE5NlE1NSAtMTcwIDcxIC0xNThUMTA0IC0xNDZRMTIzIC0xNDYgMTM4IC0xNTlUMTUzIC0xOTVRMTUzIC0yMDYgMTQ5IC0yMTVUMTM5IC0yMzBUMTI3IC0yMzhUMTE3IC0yNDJMMTEzIC0yNDRaTTQ2MCAtMjQ0UTQ2MCAtMjQ2IDQ2NiAtMjUxVDQ4NiAtMjYzVDUxNCAtMjY5UTUzMiAtMjY5IDU0NiAtMjYwUTU2NyAtMjQ3IDU3OSAtMjE4VDU5OCAtMTMzVDYwOSAtMTVUNjIzIDE1NVQ2NDQgMzY3UTY0NyAzOTAgNjUyIDQzOFQ2NjEgNTEyVDY3MiA1ODBUNjg3IDY0N1Q3MDggNzAzVDczNyA3NTFUNzc1IDc4NFQ4MjYgODA0UTgyOCA4MDQgODM1IDgwNFQ4NDggODA1UTg5OSA4MDIgOTI4IDc2OVQ5NTcgNjk1UTk1NyA2NjkgOTQxIDY1N1Q5MDggNjQ1UTg4OSA2NDUgODc0IDY1OFQ4NTkgNjk0UTg1OSA3MDUgODYzIDcxNFQ4NzMgNzI5VDg4NSA3MzdUODk1IDc0Mkw4OTkgNzQzUTg5OSA3NDUgODkyIDc1MVQ4NzIgNzYyVDg0NSA3NjhRODIyIDc2OCA4MDcgNzU2VDc4MSA3MTZUNzY1IDY1MlQ3NTQgNTU5VDc0NSA0NDRUNzM0IDMwMFQ3MTYgMTMzUTY5NiAtMzggNjg0IC0xMDJUNjUwIC0yMDdRNjAzIC0zMDYgNTE2IC0zMDZRNDY2IC0zMDYgNDM0IC0yNzJUNDAyIC0xOTZRNDAyIC0xNzAgNDE4IC0xNThUNDUxIC0xNDZRNDcwIC0xNDYgNDg1IC0xNTlUNTAwIC0xOTVRNTAwIC0yMDYgNDk2IC0yMTVUNDg2IC0yMzBUNDc0IC0yMzhUNDY0IC0yNDJMNDYwIC0yNDRaTTgwNyAtMjQ0UTgwNyAtMjQ2IDgxMyAtMjUxVDgzMyAtMjYzVDg2MSAtMjY5UTg4MCAtMjY5IDg5MyAtMjYwUTkxNCAtMjQ3IDkyNiAtMjE4VDk0NSAtMTMzVDk1NiAtMTVUOTcwIDE1NVQ5OTEgMzY3UTk5NCAzOTAgOTk5IDQzOFQxMDA4IDUxMlQxMDE5IDU4MFQxMDM0IDY0N1QxMDU1IDcwM1QxMDg0IDc1MVQxMTIyIDc4NFQxMTczIDgwNFExMTc1IDgwNCAxMTgyIDgwNFQxMTk1IDgwNVExMjQ2IDgwMiAxMjc1IDc2OVQxMzA0IDY5NVExMzA0IDY2OSAxMjg4IDY1N1QxMjU1IDY0NVExMjM2IDY0NSAxMjIxIDY1OFQxMjA2IDY5NFExMjA2IDcwNSAxMjEwIDcxNFQxMjIwIDcyOVQxMjMyIDczN1QxMjQyIDc0MkwxMjQ2IDc0M1ExMjQ2IDc0NSAxMjM5IDc1MVQxMjE5IDc2MlQxMTkyIDc2OFExMTY5IDc2OCAxMTU0IDc1NlQxMTI4IDcxNlQxMTEyIDY1MlQxMTAxIDU1OVQxMDkyIDQ0NFQxMDgxIDMwMFQxMDYzIDEzM1ExMDQzIC0zOCAxMDMxIC0xMDJUOTk3IC0yMDdROTUwIC0zMDYgODYzIC0zMDZRODEzIC0zMDYgNzgxIC0yNzJUNzQ5IC0xOTZRNzQ5IC0xNzAgNzY1IC0xNThUNzk4IC0xNDZRODE3IC0xNDYgODMyIC0xNTlUODQ3IC0xOTVRODQ3IC0yMDYgODQzIC0yMTVUODMzIC0yMzBUODIxIC0yMzhUODExIC0yNDJMODA3IC0yNDQnLFxuICAgIDB4MjIyRTogJzI2OSA3NEwyNTYgODBRMjQ0IDg1IDIyNyA5N1QxOTEgMTI4VDE2MSAxNzlUMTQ4IDI1MFExNDggMzMyIDE5OSAzNzlUMzAyIDQzM0wzMDYgNDM0TDMwNyA0NDRRMzA5IDQ1NiAzMTMgNDk1VDMyMSA1NTNUMzMxIDYwN1QzNDUgNjY0VDM2NSA3MTJUMzkzIDc1NlQ0MzEgNzg1VDQ3OSA4MDRRNDgxIDgwNCA0ODggODA0VDUwMSA4MDVRNTUyIDgwMiA1ODEgNzY5VDYxMCA2OTVRNjEwIDY2OSA1OTQgNjU3VDU2MSA2NDVRNTQyIDY0NSA1MjcgNjU4VDUxMiA2OTRRNTEyIDcwNSA1MTYgNzE0VDUyNiA3MjlUNTM4IDczN1Q1NDggNzQyTDU1MiA3NDNRNTUyIDc0NSA1NDUgNzUxVDUyNSA3NjJUNDk4IDc2OFE0NzEgNzY4IDQ1NCA3NTJUNDI3IDY5M1Q0MTQgNjI2VDQwNiA1MzZRNDA1IDUzMCA0MDUgNTI3TDM5NyA0MjVMNDA0IDQyMlE0MTAgNDE5IDQyMSA0MTNUNDQ1IDM5OVQ0NzAgMzc2VDQ5NCAzNDVUNTExIDMwM1Q1MTggMjUwUTUxOCAyMDUgNTAyIDE2OVQ0NjAgMTEyVDQxMCA4MFQzNjQgNjZMMzYwIDY1TDM1OSA1NVEzNTcgMzggMzUzIDRUMzQ2IC00M1QzNDAgLTgxVDMzMyAtMTE4VDMyNiAtMTQ4VDMxNiAtMTc5VDMwMyAtMjA3UTI1NiAtMzA2IDE2OSAtMzA2UTExOSAtMzA2IDg3IC0yNzJUNTUgLTE5NlE1NSAtMTcwIDcxIC0xNThUMTA0IC0xNDZRMTIzIC0xNDYgMTM4IC0xNTlUMTUzIC0xOTVRMTUzIC0yMDYgMTQ5IC0yMTVUMTM5IC0yMzBUMTI3IC0yMzhUMTE3IC0yNDJMMTEzIC0yNDRRMTEzIC0yNDYgMTE5IC0yNTFUMTM5IC0yNjNUMTY3IC0yNjlRMTg2IC0yNjkgMTk5IC0yNjBRMjMxIC0yNDEgMjQyIC0xODNUMjY2IDMzTDI2OSA3NFpNMjcyIDEyMlEyNzIgMTU2IDMwMCAzOTFRMzAwIDM5MiAyOTkgMzkyUTI4NyAzOTIgMjYzIDM3OVQyMTMgMzMxVDE4NyAyNDlRMTg3IDIxMSAyMDUgMTgwVDIzOSAxMzdUMjcyIDExNlYxMjJaTTM2NiAxMDdRMzc4IDEwNyA0MDIgMTE5VDQ1MyAxNjdUNDc5IDI0OVE0NzkgMzQwIDM5NCAzODNWMzc3UTM5NCAzNzUgMzk0IDM3NFQzOTMgMzcxVDM5MyAzNjZUMzkyIDM1N1QzOTEgMzQyVDM4OSAzMjFUMzg2IDI5MVQzODIgMjUxVDM3NyAxOTlUMzY5IDEzM1EzNjYgMTEyIDM2NiAxMDcnLFxuICAgIDB4MjJDMDogJzExOSAtMjQ5VDk3IC0yNDlUNjUgLTIzNVQ1NSAtMjA3UTU1IC0yMDEgNTYgLTE5OFE1OCAtMTkwIDIxOCAyNjhUMzgwIDcyOVEzOTIgNzUwIDQxNiA3NTBRNDM4IDc1MCA0NTEgNzMyUTQ1MyA3MjggNTM0IDQ5OFQ2OTUgMzZMNzc1IC0xOTRRNzc3IC0yMDQgNzc3IC0yMDhRNzc3IC0yMjIgNzY3IC0yMzVUNzM1IC0yNDlRNzEzIC0yNDkgNzAwIC0yMzFRNjk2IC0yMjUgNTU3IDE3N0w0MTYgNTc5TDI3NiAxNzdRMTM2IC0yMjYgMTMyIC0yMzFRMTE5IC0yNDkgOTcgLTI0OScsXG4gICAgMHgyMkMxOiAnNTUgNzA4UTU1IDcyOSA2OCA3MzlUOTYgNzUwUTExOSA3NTAgMTMyIDczMVExMzYgNzI2IDI3NiAzMjNMNDE2IC03OUw1NTcgMzIzUTY5NiA3MjUgNzAwIDczMVE3MTMgNzQ5IDczNSA3NDlRNzU2IDc0OSA3NjYgNzM2VDc3NyA3MDhRNzc3IDcwMCA2OTYgNDY2VDUzMyAxVDQ1MSAtMjMyUTQzNiAtMjQ5IDQxNiAtMjQ5UTQwMiAtMjQ5IDM5MSAtMjQxUTM4NCAtMjM2IDM4MCAtMjI2UTM2OCAtMTk4IDIxOSAyMzBRNTUgNjk3IDU1IDcwOCcsXG4gICAgMHgyMkMyOiAnMTM5IC0yMTdRMTI3IC0yNDEgMTE0IC0yNDZRMTA2IC0yNDkgOTcgLTI0OVE2NyAtMjQ5IDU3IC0yMjBRNTUgLTIxNCA1NSAxMDJRNTUgMTUyIDU1IDIyMVQ1NCAzMTJRNTQgNDIyIDYwIDQ2NFQ5MSA1NTRRMTIwIDYxMiAxNjUgNjU0VDI1NyA3MTRUMzM3IDc0MVQzOTIgNzQ5UTM5MyA3NTAgNDAyIDc1MFE0MTQgNzUwIDQyMiA3NDlRNTU3IDc0OSA2NjAgNjU5VDc3NiA0MzBRNzc3IDQyMiA3NzcgMTAyUTc3NyAtMjE0IDc3NSAtMjIwUTc2NSAtMjQ5IDczNSAtMjQ5UTcxNiAtMjQ5IDcwOCAtMjQxVDY5NCAtMjE3TDY5MiA0MjhMNjkwIDQ0MVE2NzQgNTQwIDU5NyA2MDNUNDE2IDY2Nkg0MDlRMzg4IDY2NiAzNjQgNjYyVDI5NCA2MzhUMjEyIDU4MVExNTYgNTIzIDE0MiA0NDFMMTQwIDQyOEwxMzkgMTA1Vi0yMTcnLFxuICAgIDB4MjJDMzogJzk2IDc1MFExMDMgNzUwIDEwOSA3NDhUMTIwIDc0NFQxMjcgNzM3VDEzMyA3MzBUMTM3IDcyM1QxMzkgNzE4VjM5NUwxNDAgNzNMMTQyIDYwUTE1OSAtNDMgMjM3IC0xMDRUNDE2IC0xNjZRNTIxIC0xNjYgNTk3IC0xMDNUNjkwIDYwTDY5MiA3M0w2OTQgNzE4UTcwOCA3NDkgNzM1IDc0OVE3NjUgNzQ5IDc3NSA3MjBRNzc3IDcxNCA3NzcgMzk4UTc3NyA3OCA3NzYgNzFRNzY2IC01MSA2ODAgLTE0MFE1NzEgLTI0OSA0MTYgLTI0OUg0MTFRMjYxIC0yNDkgMTUyIC0xNDBRNjYgLTUxIDU2IDcxUTU1IDc4IDU1IDM5OFE1NSA3MTQgNTcgNzIwUTYwIDczNCA3MCA3NDBRODAgNzUwIDk2IDc1MCcsXG4gICAgMHgyMzA4OiAnMjAyIC0zNDlWODUwSDQ0OVY4MTBIMjQyVi0zNDlIMjAyJyxcbiAgICAweDIzMDk6ICcyMiA4MTBWODUwSDI2OVYtMzQ5SDIyOVY4MTBIMjInLFxuICAgIDB4MjMwQTogJzIwMiAtMzQ5Vjg1MEgyNDJWLTMwOUg0NDlWLTM0OUgyMDInLFxuICAgIDB4MjMwQjogJzIyOSAtMzA5Vjg1MEgyNjlWLTM0OUgyMlYtMzA5SDIyOScsXG4gICAgMHgyMzI5OiAnMzczIDg1MFEzOTIgODUwIDM5NCA4MzJRMzk0IDgyNSAyNjcgNTM4TDEzOSAyNTBMMjY3IC0zOFEzOTQgLTMyNSAzOTQgLTMzMlEzOTIgLTM1MCAzNzUgLTM1MFEzNjEgLTM1MCAzNTYgLTMzOFEzNTQgLTMzMSAyODkgLTE4NlQxNjEgMTAzVDk3IDI1MFQxNjAgMzk3VDI4OSA2ODVUMzU2IDgzOFEzNjIgODUwIDM3MyA4NTAnLFxuICAgIDB4MjMyQTogJzc3IDgzMlE3NyA4MzcgODIgODQzVDk4IDg1MFExMTAgODQ5IDExNSA4MzhRMTE3IDgzMSAxODIgNjg2VDMxMCAzOTdUMzc0IDI1MFQzMTEgMTAzVDE4MiAtMTg1VDExNSAtMzM4UTExMCAtMzUwIDk2IC0zNTBRNzkgLTM1MCA3NyAtMzMyUTc3IC0zMjUgMjA0IC0zOEwzMzIgMjUwTDIwNCA1MzhRNzcgODI1IDc3IDgzMicsXG4gICAgMHgyM0QwOiAnMzEyIDBWNjAySDM1NVYwSDMxMicsXG4gICAgMHgyNzU4OiAnMTQ2IDYxMlExNTEgNjI3IDE2NiA2MjdRMTgyIDYyNyAxODcgNjEyUTE4OCA2MTAgMTg4IDMwNlQxODcgMFExODQgLTE1IDE2NiAtMTVRMTQ5IC0xNSAxNDYgMFYxMFExNDYgMTkgMTQ2IDM1VDE0NiA3M1QxNDYgMTIyVDE0NSAxNzlUMTQ1IDI0MVQxNDUgMzA2VDE0NSAzNzBUMTQ1IDQzM1QxNDUgNDg5VDE0NiA1MzhUMTQ2IDU3NlQxNDYgNjAyVjYxMicsXG4gICAgMHgyN0U4OiAnMzczIDg1MFEzOTIgODUwIDM5NCA4MzJRMzk0IDgyNSAyNjcgNTM4TDEzOSAyNTBMMjY3IC0zOFEzOTQgLTMyNSAzOTQgLTMzMlEzOTIgLTM1MCAzNzUgLTM1MFEzNjEgLTM1MCAzNTYgLTMzOFEzNTQgLTMzMSAyODkgLTE4NlQxNjEgMTAzVDk3IDI1MFQxNjAgMzk3VDI4OSA2ODVUMzU2IDgzOFEzNjIgODUwIDM3MyA4NTAnLFxuICAgIDB4MjdFOTogJzc3IDgzMlE3NyA4MzcgODIgODQzVDk4IDg1MFExMTAgODQ5IDExNSA4MzhRMTE3IDgzMSAxODIgNjg2VDMxMCAzOTdUMzc0IDI1MFQzMTEgMTAzVDE4MiAtMTg1VDExNSAtMzM4UTExMCAtMzUwIDk2IC0zNTBRNzkgLTM1MCA3NyAtMzMyUTc3IC0zMjUgMjA0IC0zOEwzMzIgMjUwTDIwNCA1MzhRNzcgODI1IDc3IDgzMicsXG4gICAgMHgyQTAwOiAnNTU1IC0yNTBRNDIwIC0yNTAgMzA2IC0xODVUMTI0IC00VDU2IDI1MFE1NiA0NTMgMTkzIDU5NVQ1MjYgNzQ5UTUyOCA3NTAgNTM5IDc1MFE1NTQgNzUwIDU2MiA3NDlRNjg4IDc0OSA4MDAgNjg3VDk4MyA1MDhUMTA1NCAyNTBRMTA1NCAxMTIgOTg3IC0zVDgwNiAtMTg0VDU1NSAtMjUwWk01NTUgLTE2NVE2NzIgLTE2NSA3NjcgLTEwOFQ5MTYgNDRUOTcwIDI1MFE5NzAgNDE4IDg2MSA1MzJUNjAwIDY2NFE1OTEgNjY1IDU0OCA2NjVRNDQ2IDY2NSAzNTMgNjE0VDIwMCA0NjZUMTQwIDI1MFYyNDNRMTQwIDg4IDI0OCAtMzBRMjYyIC00NiAyODAgLTYyVDMzOCAtMTA1VDQzNCAtMTQ4VDU1NSAtMTY1Wk00NzggMjUwUTQ3OCAyODggNTAzIDMwN1Q1NTEgMzI2UTU4NiAzMjYgNjA5IDMwNVQ2MzIgMjUwUTYzMiAyMTcgNjEwIDE5NlQ1NTUgMTc0VDUwMCAxOTZUNDc4IDI1MCcsXG4gICAgMHgyQTAxOiAnNTU1IC0yNTBRNDIwIC0yNTAgMzA2IC0xODVUMTI0IC00VDU2IDI1MFE1NiA0NTMgMTkzIDU5NVQ1MjYgNzQ5UTUyOCA3NTAgNTM5IDc1MFE1NTQgNzUwIDU2MiA3NDlRNjg4IDc0OSA4MDAgNjg3VDk4MyA1MDhUMTA1NCAyNTBRMTA1NCAxMTIgOTg3IC0zVDgwNiAtMTg0VDU1NSAtMjUwWk01MTMgNDc4UTUxMyA2NjQgNTEyIDY2NFE1MDQgNjY0IDQ4MSA2NjBUNDA2IDYzN1QzMTMgNTg4UTI4MSA1NjQgMjU1IDUzN1QyMTEgNDgzVDE4MSA0MzFUMTYxIDM4MlQxNTAgMzQyVDE0NCAzMTBUMTQxIDI5Mkg1MTNWNDc4Wk03OTggNTg4UTc1OCA2MTYgNzExIDYzNFQ2MzkgNjU4VDYwMiA2NjNMNTk3IDY2NFYyOTJIOTY5UTk2OSAyOTMgOTY3IDMwOVQ5NjAgMzQxVDk0OSAzODFUOTMwIDQzMFQ5MDAgNDgyVDg1NiA1MzdUNzk4IDU4OFpNNTEzIC0xNjRWMjA4SDE0MVExNDIgMjA1IDE0NCAxODlUMTQ5IDE2MFQxNTggMTI1VDE3MyA4M1QxOTYgMzlUMjI5IC05UTI0OSAtMzQgMjczIC01NVQzMTggLTkyVDM2MyAtMTE5VDQwNSAtMTM4VDQ0NCAtMTUwVDQ3NSAtMTU4VDQ5OSAtMTYyVDUxMyAtMTY0Wk03NzUgLTEwM1E4MDEgLTg3IDgyMyAtNjhUODYzIC0zMFQ4OTQgMTBUOTE5IDQ5VDkzNyA4OFQ5NTAgMTIzVDk1OSAxNTRUOTY0IDE4MFQ5NjggMTk4TDk2OSAyMDhINTk3Vi0xNjRRNTk5IC0xNjMgNjE2IC0xNjFUNjQ3IC0xNTVUNjgzIC0xNDVUNzI4IC0xMjhUNzc1IC0xMDMnLFxuICAgIDB4MkEwMjogJzU1NSAtMjUwUTQyMCAtMjUwIDMwNiAtMTg1VDEyNCAtNFQ1NiAyNTBRNTYgNDUzIDE5MyA1OTVUNTI2IDc0OVE1MjggNzUwIDUzOSA3NTBRNTU0IDc1MCA1NjIgNzQ5UTY4OCA3NDkgODAwIDY4N1Q5ODMgNTA4VDEwNTQgMjUwUTEwNTQgMTEyIDk4NyAtM1Q4MDYgLTE4NFQ1NTUgLTI1MFpNNjAwIDY2NFE1OTEgNjY1IDU0OCA2NjVRNDE0IDY2NSAzMDYgNTgzTDI5MiA1NzNMNDIzIDQ0MUw1NTUgMzEwTDY4NyA0NDFMODE4IDU3M0w4MDQgNTgzUTcxNCA2NTAgNjAwIDY2NFpNMzY0IDExOEw0OTUgMjUwTDM2NCAzODJMMjMyIDUxM0wyMjMgNTAwUTE0MCAzOTEgMTQwIDI1MFExNDAgMTA3IDIyMyAwTDIzMiAtMTNMMzY0IDExOFpNOTcwIDI1MFE5NzAgMzg5IDg4NyA1MDFMODc4IDUxMlE4NzggNTEzIDg2MSA0OTZUODEyIDQ0N1Q3NDYgMzgxTDYxNSAyNTBMNzQ2IDExOEw4NzggLTEzTDg4NyAwUTk3MCAxMDkgOTcwIDI1MFpNNjg3IDU5TDU1NSAxOTBMNDIzIDU5TDI5MiAtNzNMMzA2IC04M1E0MTYgLTE2NiA1NTUgLTE2NlQ4MDQgLTgzTDgxOCAtNzNMNjg3IDU5JyxcbiAgICAweDJBMDQ6ICc5NiA3NTBRMTAzIDc1MCAxMDkgNzQ4VDEyMCA3NDRUMTI3IDczN1QxMzMgNzMwVDEzNyA3MjNUMTM5IDcxOFYzOTVMMTQwIDczTDE0MiA2MFExNTkgLTQzIDIzNyAtMTA0VDQxNiAtMTY2UTUyMSAtMTY2IDU5NyAtMTAzVDY5MCA2MEw2OTIgNzNMNjk0IDcxOFE3MDggNzQ5IDczNSA3NDlRNzY1IDc0OSA3NzUgNzIwUTc3NyA3MTQgNzc3IDM5OFE3NzcgNzggNzc2IDcxUTc2NiAtNTEgNjgwIC0xNDBRNTcxIC0yNDkgNDE2IC0yNDlINDExUTI2MSAtMjQ5IDE1MiAtMTQwUTY2IC01MSA1NiA3MVE1NSA3OCA1NSAzOThRNTUgNzE0IDU3IDcyMFE2MCA3MzQgNzAgNzQwUTgwIDc1MCA5NiA3NTBaTTIyMyAyNzZRMjIzIDI4MiAyMjQgMjg3VDIyNyAyOTZUMjMyIDMwMlQyMzggMzA4VDI0MyAzMTNUMjUwIDMxNkwyNTQgMzE5SDM3NFYzNzZWNDA2UTM3NCA0MzggMzgyIDQ1NFQ0MTggNDcwUTQ0MyA0NjcgNDUwIDQ1M1Q0NTggNDEwVjM3NlYzMTlINTc5UTU4MCAzMTkgNTgzIDMxN1Q1ODkgMzEzVDU5NCAzMDhUNjAwIDMwMlQ2MDQgMjk1VDYwOCAyODdUNjA5IDI3NlE2MDkgMjUzIDU4NyAyNDFRNTc3IDIzNSA1MTMgMjM1SDQ1OFYxNzhRNDU4IDE3NiA0NTggMTY2VDQ1OSAxNDhRNDU5IDg0IDQxNSA4NFE0MDEgODQgMzkwIDkzVDM3NSAxMTdRMzc0IDEyMCAzNzQgMTc4VjIzNUgzMTlRMzE3IDIzNSAzMDcgMjM1VDI5MCAyMzRRMjIzIDIzNCAyMjMgMjc2JyxcbiAgICAweDJBMDY6ICc3NzcgLTIxN1E3NjYgLTI0NCA3NDUgLTI0OUg4OFE2NCAtMjQyIDU3IC0yMjBRNTUgLTIxNCA1NSAyNTBUNTcgNzIwUTYwIDczNCA3MCA3NDBRODAgNzUwIDk2IDc1MFExMjcgNzUwIDEzNyA3MjBRMTM5IDcxNCAxMzkgMjc0Vi0xNjZINjkzVjI3NFE2OTMgNzE0IDY5NSA3MjBRNzA1IDc0OSA3MzUgNzQ5UTc2NiA3NDkgNzc1IDcxOVE3NzcgNzEzIDc3NyAyNDhWLTIxNycsXG4gICAgMHgzMDA4OiAnMzczIDg1MFEzOTIgODUwIDM5NCA4MzJRMzk0IDgyNSAyNjcgNTM4TDEzOSAyNTBMMjY3IC0zOFEzOTQgLTMyNSAzOTQgLTMzMlEzOTIgLTM1MCAzNzUgLTM1MFEzNjEgLTM1MCAzNTYgLTMzOFEzNTQgLTMzMSAyODkgLTE4NlQxNjEgMTAzVDk3IDI1MFQxNjAgMzk3VDI4OSA2ODVUMzU2IDgzOFEzNjIgODUwIDM3MyA4NTAnLFxuICAgIDB4MzAwOTogJzc3IDgzMlE3NyA4MzcgODIgODQzVDk4IDg1MFExMTAgODQ5IDExNSA4MzhRMTE3IDgzMSAxODIgNjg2VDMxMCAzOTdUMzc0IDI1MFQzMTEgMTAzVDE4MiAtMTg1VDExNSAtMzM4UTExMCAtMzUwIDk2IC0zNTBRNzkgLTM1MCA3NyAtMzMyUTc3IC0zMjUgMjA0IC0zOEwzMzIgMjUwTDIwNCA1MzhRNzcgODI1IDc3IDgzMicsXG59LHtcbiAgICAweDJBMEM6IFwiXFx1MjIyQ1xcdTIyMkNcIixcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3QgdGV4Q2FsbGlncmFwaGljQm9sZDogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHg0MTogWy43NTEsIC4wNDksIC45MjEsIHtpYzogLjA2OCwgc2s6IC4yMjR9XSxcbiAgICAweDQyOiBbLjcwNSwgLjAxNywgLjc0OCwge3NrOiAuMTZ9XSxcbiAgICAweDQzOiBbLjcwMywgLjAyLCAuNjEzLCB7c2s6IC4xNn1dLFxuICAgIDB4NDQ6IFsuNjg2LCAwLCAuODkyLCB7c2s6IC4wOTU4fV0sXG4gICAgMHg0NTogWy43MDMsIC4wMTYsIC42MDcsIHtpYzogLjAyLCBzazogLjEyOH1dLFxuICAgIDB4NDY6IFsuNjg2LCAuMDMsIC44MTQsIHtpYzogLjExNiwgc2s6IC4xMjh9XSxcbiAgICAweDQ3OiBbLjcwMywgLjExMywgLjY4Miwge3NrOiAuMTI4fV0sXG4gICAgMHg0ODogWy42ODYsIC4wNDgsIC45ODcsIHtzazogLjEyOH1dLFxuICAgIDB4NDk6IFsuNjg2LCAwLCAuNjQyLCB7aWM6IC4xMDQsIHNrOiAuMDMxOX1dLFxuICAgIDB4NEE6IFsuNjg2LCAuMTE0LCAuNzc5LCB7aWM6IC4xNTgsIHNrOiAuMTkyfV0sXG4gICAgMHg0QjogWy43MDMsIC4wMTcsIC44NzEsIHtzazogLjA2Mzl9XSxcbiAgICAweDRDOiBbLjcwMywgLjAxNywgLjc4OCwge3NrOiAuMTZ9XSxcbiAgICAweDREOiBbLjcwMywgLjA0OSwgMS4zNzgsIHtzazogLjE2fV0sXG4gICAgMHg0RTogWy44NCwgLjA0OSwgLjkzNywge2ljOiAuMTY4LCBzazogLjA5NTh9XSxcbiAgICAweDRGOiBbLjcwMywgLjAxNywgLjkwNiwge3NrOiAuMTI4fV0sXG4gICAgMHg1MDogWy42ODYsIC4wNjcsIC44MSwge2ljOiAuMDM2LCBzazogLjA5NTh9XSxcbiAgICAweDUxOiBbLjcwMywgLjE0NiwgLjkzOSwge3NrOiAuMTI4fV0sXG4gICAgMHg1MjogWy42ODYsIC4wMTcsIC45OSwge3NrOiAuMDk1OH1dLFxuICAgIDB4NTM6IFsuNzAzLCAuMDE2LCAuNjk2LCB7aWM6IC4wMjUsIHNrOiAuMTZ9XSxcbiAgICAweDU0OiBbLjcyLCAuMDY5LCAuNjQ0LCB7aWM6IC4zMDMsIHNrOiAuMDMxOX1dLFxuICAgIDB4NTU6IFsuNjg2LCAuMDI0LCAuNzE1LCB7aWM6IC4wNTYsIHNrOiAuMDk1OH1dLFxuICAgIDB4NTY6IFsuNjg2LCAuMDc3LCAuNzM3LCB7aWM6IC4wMzcsIHNrOiAuMDMxOX1dLFxuICAgIDB4NTc6IFsuNjg2LCAuMDc3LCAxLjE2OSwge2ljOiAuMDM3LCBzazogLjA5NTh9XSxcbiAgICAweDU4OiBbLjY4NiwgMCwgLjgxNywge2ljOiAuMDg5LCBzazogLjE2fV0sXG4gICAgMHg1OTogWy42ODYsIC4xNjQsIC43NTksIHtpYzogLjAzOCwgc2s6IC4wOTU4fV0sXG4gICAgMHg1QTogWy42ODYsIDAsIC44MTgsIHtpYzogLjAzNSwgc2s6IC4xNn1dLFxuICAgIDB4MTMxOiBbLjQ1MiwgLjAwOCwgLjM5NCwge3NrOiAuMDMxOX1dLFxuICAgIDB4MjM3OiBbLjQ1MSwgLjIwMSwgLjQzOSwge3NrOiAuMDk1OH1dLFxufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1NWR0NoYXJNYXAsIEFkZFBhdGhzfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge3RleENhbGxpZ3JhcGhpY0JvbGQgYXMgZm9udH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZvbnRzL3RleC90ZXgtY2FsbGlncmFwaGljLWJvbGQuanMnO1xuXG5leHBvcnQgY29uc3QgdGV4Q2FsbGlncmFwaGljQm9sZDogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDQxOiAnNzYxIDc1MVE3ODQgNzUxIDc4NCA3MjhWNzExUTc4NCA1NzAgNzk1IDQxN1Q4MjAgMTkxUTg0NCA3NiA4NjUgNzZRODY4IDc2IDkwMiA5M1Q5NjIgMTEySDk3M1E5ODkgMTA0IDk4OSA5NFE5ODkgOTIgOTg3IDg2UTk3OCA0NyA4NDYgLTExUTgxMiAtMjUgNzc5IC0yNlE3MjIgLTI2IDcwOCA5UTY4OCA0NyA2NjkgMTYxSDUyNEwzNzkgMTYyTDM1OSAxMzZRMjg2IDQzIDIzNCAtM1QxNDIgLTQ5VDcxIC0xOVQzOSA1NVEzOSA5MiA2MCAxMzFUMTAzIDE3NFExMTMgMTc0IDExNyAxNjdUMTI0IDE0OVQxMzYgMTI4VDE2NiAxMTBRMTgzIDEwNSAxOTAgMTA1UTIzMCAxMDUgMzQxIDI0NlE0MDEgMzIyIDQ1MyAzOTdUNTMxIDUxNFQ1ODIgNjAxVDYxMSA2NTFINjQwVjY2M1E2NDAgNjkyIDY3NiA3MThUNzQ1IDc1MFE3NDcgNzUwIDc1MiA3NTBUNzYxIDc1MVpNNjU4IDI2NlE2NTMgMzEyIDY0OSAzNzdUNjQ0IDQ4OVQ2NDEgNTQxVjU1Nkw1NTcgNDE1UTUwMCAzMjUgNDQ4IDI1M1E0NjcgMjYxIDUyNCAyNjFINTY4SDY1OFYyNjYnLFxuICAgIDB4NDI6ICc0NDEgODNRNTcxIDgzIDU3MSAxOTVRNTcxIDI0NiA1MzggMjc5VDQ2NiAzMjJUMzg2IDMzM1EzNzggMzMzIDM1NyAzMzBUMzI5IDMyN1EzMDcgMzI3IDMwNyAzNDVRMzA3IDM1NCAzMTMgMzY1VDM0NyAzOTZUNDE5IDQzMFE1NDYgNDcyIDU4MSA0OThRNTk0IDUwOCA1OTQgNTM1UTU5NCA1NzQgNTY3IDU4OVQ1MDggNjA0UTQ2OSA2MDQgNDQyIDU4M1EzOTAgNTQ2IDM0MiA0NTdUMjY1IDI1NlEyMzcgMTQ4IDE4NiA2MFExNjcgMjkgMTQ0IDEzUTEwNSAtMTUgNjggLTE3SDY1UTQwIC0xNyA0MCAxUTQwIDcgNTMgMjlUODcgMTAwVDEyNCAyMTBRMTYyIDM3MyAxOTAgNTc1UTE4OCA1NzUgMTc0IDU2N1QxMzggNTUwVDk4IDU0MlE3NSA1NDIgNzUgNTYwUTc1IDU4OCAxMjMgNjE4UTEzNSA2MjUgMjAzIDY1OVQyODEgNjk2UTI5OSA3MDMgMzE2IDcwM1EzMzkgNzAzIDMzOSA2ODVRMzM5IDY1NiAzMjggNTgzTDMzMyA1ODhRMzM4IDU5MiAzNDYgNTk5VDM2NyA2MTVUMzk0IDYzNFQ0MjggNjU0VDQ2NyA2NzRUNTExIDY5MFQ1NTkgNzAxVDYxMSA3MDVRNjUxIDcwNCA2ODEgNjg5UTczOSA2NTkgNzM5IDU5OFE3MzkgNTA3IDU5NSA0MjdMNTg0IDQyMVE1ODUgNDIwIDU5NSA0MTZUNjEwIDQxMFQ2MjYgNDAyVDY0NCAzOTJUNjYwIDM4MFQ2NzcgMzY1VDY5MSAzNDdUNzAzIDMyNVQ3MTAgMjk5VDcxNSAyNjhRNzE3IDE5MyA2NjUgMTMwUTYyMiA3MyA1MzEgMjhUMzQ4IC0xN1EyNzUgLTE3IDIyNSAxMFEyMDYgMTkgMjAwIDI0VDE5MyAzNlExOTMgNTcgMjMxIDg2VDMxMSAxMTlIMzIyUTM4NiA4MyA0NDEgODMnLFxuICAgIDB4NDM6ICcyNDMgLTIwUTEzNSAtMjAgNzggNDhUMjAgMjE4UTIwIDI4MCAzOSAzNDRUOTggNDcwVDE5MyA1ODBUMzI0IDY2MVQ0ODggNzAySDQ5MFE0OTEgNzAyIDQ5MyA3MDJUNDk4IDcwM1Q1MDcgNzAzVDUxOCA3MDJINTI2UTU5OSA3MDIgNTk5IDYzMVE1OTkgNTk3IDU3NyA1NTBUNTQxIDQ4NlE1MjMgNDYzIDQ5MCA0NDdUNDMxIDQzMFE0MjMgNDMwIDQxOSA0MzNRNDA5IDQzNyA0MDkgNDUwUTQxMCA0NTYgNDMyIDQ5OVQ0NTQgNTY3UTQ1NCA1ODYgNDQ2IDU5NFQ0MTUgNjAzUTMxNiA2MDMgMjU0IDUzMlEyMTYgNDg3IDE5MCA0MjFUMTY0IDI4NFExNjQgMjI4IDE4MSAxODZUMjI2IDEyMlQyODIgOTBUMzQwIDgwUTM3NyA4MCA0MDUgOTZUNDQ5IDEzMVQ0OTIgMTY3VDU1MyAxODdINTU1UTU4MCAxODcgNTgwIDE2OFE1ODAgMTUzIDU1MSAxMjNUNDc2IDYwVDM2NyA0VDI0MyAtMjAnLFxuICAgIDB4NDQ6ICcxMDcgMFE5MiA1IDkyIDE4UTkyIDMzIDExMyA1M1QxNjAgODZRMTcwIDkxIDE4MiA5NFQxOTcgMTAwTDIwNiAxMjBRMjQ4IDIyNiAyNzMgMzM3VDMwNCA1MDFUMzA5IDU4NVEyNzggNTg1IDIzNCA1NzdUMTc5IDU1N1ExNzIgNTUwIDE2NiA1MzJUMTU2IDUwOVExNDAgNDg0IDEwNSA0NjZUNDQgNDQ3UTIwIDQ0NyAyMCA0NjVRMjAgNDgyIDM0IDUxMFQ3NiA1NjVRMTIyIDYwOCAxNzMgNjMyUTI4MSA2ODYgNDQ3IDY4Nkg0ODBINTE3UTY5MiA2ODYgNzg0IDYzMVE4ODUgNTcxIDg4NSA0NTBRODg1IDMzOSA4MDUgMjM5VDU4NiA3NVQyODYgMVEyNzYgMCAxODcgMEgxMDdaTTc0MSAzOTFRNzQxIDQyNCA3MzEgNDUyVDY5NCA1MTBUNjEzIDU1OFQ0ODEgNTg0UTQ3NiA1ODQgNDY4IDU4NFQ0NTcgNTg1TDQ0OSA1ODZWNTc5UTQ0MSA1MDEgNDI1IDQyNFQzOTEgMjkyVDM1NyAxOTNUMzMwIDEyNVQzMTkgMTAwSDMyNFE1MTEgMTAwIDYyOCAxNzVRNjg4IDIxNSA3MTQgMjc1VDc0MSAzOTEnLFxuICAgIDB4NDU6ICc0OTUgNTE2UTQ4NSA1MTYgNDc4IDUyMFQ0NzAgNTMyUTQ3MCA1MzcgNDc2IDU1MFQ0ODIgNTcwUTQ4MiA1ODkgNDY1IDU5NlQ0MDEgNjAzUTM0NCA2MDMgMzE5IDU4MlEyOTUgNTU4IDI5NSA1MTlRMjk1IDQ5MyAzMTIgNDc0VDM1NSA0NDVUNDA3IDQzMlQ0NTUgNDI3UTQ3NyA0MjcgNDc3IDQwOVE0NzcgMzk1IDQ1MyAzNzFUMzg5IDMzM1EzODAgMzMwIDM0NSAzMjdUMjc5IDMxMlQyMjMgMjcyUTE4MSAyMjMgMTgxIDE3NlExODEgMTMxIDIyNSAxMDdUMzI0IDgzUTM2NiA4MyAzOTUgOThUNDQ4IDEzNlQ0ODcgMTY3UTUxNyAxODUgNTQ3IDE4N0g1NTFRNTc0IDE4NyA1NzQgMTcwUTU3NCAxNTEgNTM1IDExM1Q0MjEgMzZUMjcxIC0xNVEyNjAgLTE2IDIyNiAtMTZRMTgxIC0xNiAxNTIgLTlRMTA0IDQgNzEgMzNUMzcgMTExUTM3IDE0MCA1MCAxNzZUMTA2IDI2M1QyMTYgMzU2UTIxNSAzNTcgMjA3IDM2MlQxOTAgMzc0VDE3MiAzOTJUMTU2IDQxOVQxNTAgNDU2UTE1MCA1MjEgMjA4IDU4MFQzNDEgNjcwVDQ3NCA3MDJRNDc1IDcwMyA0OTkgNzAzUTUyOCA3MDMgNTQ3IDcwMVQ1ODYgNjkzVDYxNSA2NzNUNjI3IDYzN1E2MjcgNTg0IDU4MSA1NTBUNDk1IDUxNicsXG4gICAgMHg0NjogJzgxMiA1NjdRODA0IDU2NyA3OTUgNTcwVDc4NiA1NzlRNzg2IDU4NiA2NDcgNTg2SDU1OUw1NTggNTgyUTU1OCA1NzUgNTM5IDUxMFQ1MDYgNDA3TDQ5OCAzODRINzc1UTc4OCAzNzggNzkwIDM2OFE3OTAgMzI4IDc0NiAyOThUNjY1IDI2OFE2NDYgMjY4IDY0MiAyODRINDU3TDQ0NyAyNjFRMzk2IDE1MCAzNjAgOTRRMzI5IDQ2IDI3MCA4VDE0OSAtMzBRMTIzIC0zMCAxMDAgLTI0VDYzIC0xMFQzNyA5VDIyIDI2VDE3IDM2UTE3IDU5IDU2IDg4VDEzNSAxMTlRMTQ1IDExOSAxNDkgMTE3VDE2NSAxMDRRMTg3IDc4IDIyNyA3MlEyMzIgNzIgMjM0IDc2UTI0NSA5MyAyNzMgMTQ1VDM1MCAzMjNUNDI0IDU3MEw0MjggNTg2SDI3NlEyNjUgNTc1IDIzOSA1NjNUMTkwIDU1MVExODAgNTUxIDE3NCA1NTZUMTY3IDU2OVExNjcgNTgwIDE3OSA1OTdUMjEzIDYzNFQyNzggNjY4VDM3MSA2ODVRMzc0IDY4NiA2MjQgNjg2UTg2MyA2ODUgODg4IDY4MlE5MTcgNjc4IDkyNyA2NjNROTMwIDY1OCA5MzAgNjUwUTkzMCA2MjQgODg4IDU5NlQ4MTIgNTY3JyxcbiAgICAweDQ3OiAnNTAgMjc5UTUwIDM2MSA4OCA0MzhUMTkwIDU3MFQzMzUgNjYxVDUwMyA3MDJINTE0UTUyNCA3MDMgNTMyIDcwM1E2NzEgNzAzIDY3MSA2MjZRNjcxIDU4MCA2MTQgNTE0VDQ5NSA0NDdRNDcyIDQ0NyA0NzIgNDY1UTQ3MiA0NzcgNDk5IDUxMVQ1MjcgNTYyUTUyNyA1ODIgNTA3IDU5MlQ0MzMgNjAyUTM1MSA2MDIgMzAyIDU2OVEyNTIgNTM1IDIyMyA0NjlUMTk0IDM0NFExOTQgMjY2IDIzNyAyMTdUMzUyIDE2OFE0MDEgMTY4IDQ0MiAyMDVUNTA1IDMxNlE1MTUgMzQ1IDU1MSAzNjhUNjIyIDM5M0g2MjVRNjQ5IDM5MyA2NDkgMzc2UTY0OSAzNzEgNjM1IDMxOFQ2MTIgMjM3UTU4MCAxMjkgNTQwIDYyVDQ0MiAtNDlRMzUzIC0xMTQgMjY0IC0xMTRRMjU5IC0xMTQgMjUyIC0xMTRMMjQ2IC0xMTNRMTkwIC0xMTMgMTQyIC0xMDdUODEgLTk2UTcxIC05MCA3MSAtODFRNzEgLTU3IDExMCAtMzBUMTg3IDJRMTk2IDIgMjM2IC00VDMzOCAtMTRRMzcxIC0xNCAzNzcgLTlRNDEwIDI0IDQ0NiAxMTNMNDUxIDEyN1EzNTMgNjggMjUzIDY4UTE1NyA2OCAxMDQgMTI5VDUwIDI3OScsXG4gICAgMHg0ODogJzQyIDQ0N1EyMCA0NDcgMjAgNDY1UTIwIDQ4MSA0NyA1MTVUMTE5IDU4OVQyMzkgNjU3VDM5MiA2ODZRNDQzIDY4NiA0NjMgNjY0VDQ4NCA2MTZRNDg0IDU3MCA0NzMgNTA2VDQ1MiA0MDFMNDQxIDM2MFE0NDEgMzU5IDU1MCAzNTlINjYwTDY2MyAzNzBRNjg0IDQzNSA3MTYgNTIyVDc1OCA2MjRRNzcxIDY0NiA4MDYgNjY2VDg3MCA2ODZRODk0IDY4NiA4OTQgNjY4UTg5NCA2NjcgODY3IDU5N1Q4MDQgNDE2VDc1MiAyMThRNzM3IDEzNSA3MzcgOTNRNzM3IDc3IDc0NiA2NVQ3NzggNTNRNzk5IDUzIDgwMyA1NFQ4MTQgNjNRODMxIDg2IDg2NCAxMDNUOTI0IDEyMFE5NDYgMTIwIDk0NiAxMDBROTQ1IDg1IDkzMSA2M1Q4ODggMTZUODA2IC0yN1Q2ODQgLTQ4SDY4MVE2MjUgLTQ4IDYwMyAtMTBRNTkzIDQgNTkzIDI5UTU5MyA3MSA2MDMgMTMxVDYyNCAyMzBMNjM0IDI2OVE2MzIgMjY5IDYyNCAyNjZRNjEwIDI2MSA2MDAgMjYxVDUwNyAyNTlINDExTDM5OSAyMjJRMzQ0IDYyIDMyMiAyMVEzMDEgLTcgMjY4IC0yNFQyMDkgLTQxSDIwN1ExODcgLTQxIDE4NSAtMjVRMTg1IC0xNyAxOTIgMlQyMjAgNzFUMjYxIDE4NFEyODQgMjU2IDI4NCAyNThRMjg0IDI1OSAyMjcgMjU5SDE3MFExNjkgMjU5IDE2NiAyNjFUMTYyIDI2NFQxNTggMjY2VDE1NiAyNzFUMTU1IDI3N1ExNTUgMjk2IDE4NCAzMjBUMjUwIDM1NlEyNTkgMzU4IDI4NiAzNTlRMzEyIDM1OSAzMTIgMzYwUTMxNCAzNzIgMzE4IDM4NVEzMzIgNDUwIDMzOSA1MjZRMzM5IDUzMCAzMzkgNTM1VDM0MCA1NDNRMzQwIDU4NiAyOTYgNTg2UTI1NSA1ODYgMjI3IDU3NlQxODggNTUzVDE2NSA1MjNUMTQ2IDQ5N1ExMjcgNDc2IDk3IDQ2MlQ0MiA0NDcnLFxuICAgIDB4NDk6ICc1NiA0OTlRMzIgNDk5IDMyIDUxNlEzMiA1NDAgNjQgNTgwVDE2NSA2NDlRMjQxIDY4MiAzNjUgNjg1UTM2NiA2ODUgMzc2IDY4NVQ0MDUgNjg1VDQ0NSA2ODZUNDk2IDY4NlQ1NTMgNjg2SDczMlE3NDYgNjc3IDc0NiA2NjhRNzQ2IDY0NiA3MTEgNjIwVDY0MiA1ODdMNTcyIDU4Nkg1MDNRNDc5IDU0NiA0NTggNDc5VDQyNCAzNTJUMzgzIDIyNFQzMTggMTExTDMwOSAxMDFMNDEyIDEwMEg1MTRMNTIzIDEwOVE1NjcgMTUwIDYxOCAxNTNRNjQ0IDE1MyA2NDQgMTM1UTY0NCAxMzIgNjQyIDEyNFE2MjkgODYgNTgxIDUyVDQ3NiA2UTQ1NCAyIDQzMyAyVDIxNiAwUS0xMSAwIC0xNSAyUS0yNyA2IC0yNyAxOFEtMjcgMzcgMiA2MVQ1OSA5M1E3NyAxMDAgMTQyIDEwMEgxOThRMjU1IDE3NyAyOTkgMzY5UTMzNyA1MTMgMzgyIDU3NEwzOTEgNTg2SDM0OFEyNjEgNTg2IDE3NiA1NzZRMTYzIDU0MyAxMjQgNTIxVDU2IDQ5OScsXG4gICAgMHg0QTogJzI4NiAzOTBRMjYzIDM5MCAyNjMgNDA3UTI2MyA0MzIgMjkzIDQ4MVQzNjcgNTY2UTUxMSA2ODcgNzI0IDY4N1E3MzggNjg3IDc2MSA2ODdUNzkzIDY4Nkg5MjNROTM3IDY3NyA5MzcgNjY4UTkzNyA2NDggOTA1IDYyM1Q4NDIgNTg5UTgyOSA1ODcgODE3IDU4NlQ4MDIgNTg1VDc5NSA1ODNUNzg4IDU3OFE3MDkgNTA2IDYzMiAxODlRNjIyIDE1MyA2MTUgMTM0VDU4OCA4MVQ1MzcgMTdRNDgyIC0zOSA0MDQgLTc2VDI0NyAtMTE0UTE5MiAtMTE0IDE1OCAtMTAwUTUzIC02MSA1MyAzMlE1MyA1OSA1OCA3M1Q3OSAxMDJRMTI2IDE0NyAxNzcgMTQ3UTIwMCAxNDcgMjAwIDEyOFEyMDAgMTIzIDE5OCAxMTJUMTk2IDk2UTE5NiA0NyAyMzggMTdUMzQ1IC0xM1EzNjIgLTEzIDM3NyAtOVQ0MDQgMFQ0MjYgMTZUNDQ0IDM0VDQ1OSA1NVQ0NzAgNzZUNDc4IDk3VDQ4MyAxMTZUNDg4IDEzMkw0OTAgMTQxUTUxMSAyMjIgNTIwIDI1N1Q1NTQgMzY0VDYwOCA0ODZUNjc1IDU3Nkw2ODUgNTg2SDYzNEg2MTJRNTMyIDU4NiA0ODQgNTY0UTQ1MyA1NDkgNDM2IDUyNlQ0MDkgNDc4VDM5NSA0NDdRMzc4IDQyNCAzNDUgNDA3VDI4NiAzOTAnLFxuICAgIDB4NEI6ICc5OCA1NDJRNzUgNTQyIDc1IDU2MFE3NSA1ODggMTIzIDYxOFExMzIgNjI0IDE5OSA2NTdUMjc1IDY5NFEyOTEgNzAzIDMxNSA3MDNRMzI3IDcwMyAzMzIgNjk5VDMzOCA2OTBUMzM5IDY3MFEzMzkgNTk2IDMyMyA1MDVUMjgzIDMzN1QyMzcgMTk0VDE5OCA5MEwxODEgNTNRMTcwIDMxIDEzNiA4VDY4IC0xN0g2NVE0MCAtMTcgNDAgMEw3NiA5MlExMTIgMTg1IDE1MCAzMjJUMTk0IDU2NFY1NzhMMTY4IDU2NVExMjUgNTQyIDk4IDU0MlpNODM0IDE0MlE4MzQgMTI1IDgxOSAxMDBUNzc0IDQ4VDY5MiAzVDU3NiAtMTZINTYwUTU0MCAtMTYgNTA4IDZRNDY5IDMzIDQyMiAxMDhUMzQyIDI2N1QzMDkgMzk4UTMwOSA0MTEgMzEwIDQxN1QzMjAgNDQyVDM0NyA0ODJRNDAxIDU0MiA1MTcgNjE1VDcxMCA3MDJRNzEyIDcwMiA3MjEgNzAyVDczNSA3MDNRNzcyIDcwMyA3OTEgNjkwUTgxOSA2NzQgODE5IDY0NlQ3OTIgNTk3VDczMyA1NzRINzIyUTcwNCA1ODQgNzA0IDU5OVE3MDYgNjA3IDcwMCA2MTBUNjcyIDYxN0w2NjAgNjEzUTYwOSA1OTUgNTI0IDUzOFQ0MjMgNDUwVjQ0MFE0MjMgMzc2IDQ4OCAyNDdUNjA0IDgzUTYyMSA3MCA2NDAgNzBRNjc3IDcwIDcwMSA4MlE3MTMgODcgNzE4IDEwMVQ3MzcgMTMyVDc4MyAxNjBRNzkyIDE2MyA4MDcgMTYzUTgzNCAxNjMgODM0IDE0MicsXG4gICAgMHg0QzogJzYzIC0xN1E0MSAtMTcgNDEgMFE0MSAyMiA4NSA1NFExMDEgNjggMTEzIDkyVDEzMyAxNDFUMTU0IDIxOVQxODIgMzE1UTIzMCA0NjIgMzA2IDU1M1EzNDUgNTk5IDM5MSA2MzJUNDc4IDY3OFQ1NDMgNjk3VDU4MiA3MDNRNTg0IDcwMyA1ODkgNzAzVDU5OCA3MDJRNjQzIDcwMiA2NjYgNjc2VDY4OSA2MTNRNjg5IDU4OCA2ODMgNTc1UTY3NCA1NTEgNjMyIDUyNFQ1NTIgNDk2UTUzMCA0OTYgNTMwIDUxMlE1MzAgNTE3IDUzMSA1MjVUNTMzIDUzOFE1MzMgNTU5IDUyMiA1NzdUNDgwIDU5Nkg0NzZRNDYyIDU5NiA0NTEgNTg4VDQxNSA1NDRRMzUwIDQ0NyAzMTAgMjgxUTI4NCAxODEgMjYxIDEzNkwyNTUgMTI0SDI4NVEzNDIgMTIzIDQ0MSAxMDdUNTgzIDkwTDU5NiA4OVE2MDMgMTE2IDY0NyAxNDRUNzI5IDE3M1E3NTEgMTczIDc1MSAxNTdRNzUxIDExOCA2ODUgNjBUNTIzIC0xNVE1MTQgLTE2IDQ3OSAtMTZRNDIxIC0xNiAzMjAgMFQxNzEgMThIMTU1TDE0MiAxMFE5OCAtMTcgNjMgLTE3JyxcbiAgICAweDREOiAnMzggMjBRMzggNTkgNjAgOTlUMTA0IDEzOVExMDYgMTM5IDEyNiAxMjVUMTc2IDEwNkgxODFRMjAwIDEwNiAyMjEgMTM5VDI4NiAyODFRMzIyIDM3MCAzNDIgNDUxVDM2OCA1ODFUMzc2IDYzNFEzODQgNjU3IDQyMCA2ODBUNDg3IDcwM1E1MDIgNzAzIDUwNyA2OTZUNTIyIDY0OVE1MzggNTg5IDU1NCA1MzdRNTc5IDQ1MyA2MDkgMzcyVDY2MCAyNDhUNjg2IDIwMlE2ODcgMjAxIDczOSAyNDRUODMwIDMyMkwxMTY2IDY0MlExMjI1IDcwMCAxMjMwIDcwMVExMjMwIDcwMSAxMjM3IDcwM1ExMjU4IDcwMyAxMjU4IDY2N0wxMjUzIDYzN1ExMjQ4IDYwNyAxMjQxIDU1OFQxMjI3IDQ1MVQxMjE0IDMyNlQxMjA5IDIwMlExMjA5IDc3IDEyMzIgNzdRMTIzNyA3NyAxMjY5IDk0VDEzMjYgMTEySDEzMjlRMTM1MyAxMTIgMTM1MyA5NFExMzUzIDgxIDEzMzQgNjBRMTMxMSAzNyAxMjQ4IDdUMTE1MCAtMjRIMTE0MUgxMTM1UTEwODUgLTI0IDEwNzQgMjZRMTA2NCA3NSAxMDY0IDEzNFExMDY0IDIzOSAxMDg2IDQyNlExMDg3IDQzMCAxMDg3IDQzNEwxMDYxIDQxMFE4NzEgMjI3IDc4MyAxNDlMNjk0IDc2UTY1MyA0NCA2NDcgNDBUNjMxIDM0UTYyMCAzNCA2MTYgMzdUNTk0IDYzUTU0NiAxMjUgNTE0IDE5OFE0NjcgMzA3IDQyMyA0NDlMNDE4IDQ2Nkw0MTIgNDQ0UTM3NiAzMTAgMzA2IDE1M1EyNzggODggMjUxIDQ1VDIwMSAtMThUMTYzIC00M1QxMzEgLTQ5UTEwMiAtNDggNzAgLTMxVDM4IDIwJyxcbiAgICAweDRFOiAnNDcgMTM5UTgxIDEwNSAxMjIgMTA1UTEzNyAxMDUgMTQ3IDExN1ExNTkgMTM0IDE4MiAxOTlUMjM0IDM4MVQyNzQgNjEwUTI3NSA2MzQgMjg0IDY0N1EyOTcgNjY2IDMyNyA2ODRUMzg5IDcwM1E0MDMgNzAzIDQwOCA2OTVUNDI4IDY0NVE0ODAgNDkwIDU2NyAyOThRNjI4IDE2MyA2NzMgMTAzUTY3NCAxMDIgNjc0IDEwMlQ2NzUgMTA2UTczMiAzMzEgODAzIDU1MVE4NDIgNjc0IDg3NSA3MjVROTA4IDc3NSA5NjYgODA3VDEwODEgODQwSDEwODRRMTEwNSA4NDAgMTEwNSA4MDNRMTEwNSA3NjggMTA4OCA3MzNUMTA1MSA2ODlRMTA0NSA2ODYgMTAzMiA2ODZROTg2IDY4MyA5NDggNjYzVDkwMSA2MjRRODgxIDU3OSA4MzcgNDMwVDc2MCAxNTRMNzI2IDI4UTcyNSAyOCA3MjUgMjhUNzIzIDI1UTcxNiAwIDY4MiAtMjRUNjExIC00OFE2MDAgLTQ4IDU5NSAtNDVUNTc2IC0yM1E1MjIgNDQgNDgwIDEyNFE0MTcgMjQzIDMzMiA0NjNMMzI4IDQ3M0wzMjUgNDU3UTI5MSAyOTMgMjI3IDEyNFExNTkgLTQ5IDcyIC00OVEzOCAtNDkgNSAtMjhRLTI0IC04IC0yNCAyMVEtMjQgNTggLTMgOThUNDEgMTM5SDQ3JyxcbiAgICAweDRGOiAnNDMzIDcwM1E0NTYgNzAzIDQ1NiA2ODVRNDU2IDY3MiA0NDEgNjU1VDQwNyA2MjdRNDAyIDYyMyAzNzggNjExVDMyOCA1NzlUMjc2IDUyNFEyMDcgNDM0IDIwNyAzMjRRMjA3IDIyMiAyNzAgMTUzVDQ0MSA4NFE1NjYgODQgNjUxIDE3N1Q3MzcgNDAwVjQwNVE3MzcgNDk2IDY5MyA1NDlUNTc2IDYwM1E1NDIgNjAzIDUxMCA1NjBRNDkwIDUzNyA0NzIgNTAyVDQ0MiA0NTRRMzk3IDQxMiAzNDYgNDA5UTMyMCA0MDkgMzIwIDQyN1EzMjAgNDMwIDMyMiA0MzZRMzMxIDQ2NSAzNjAgNTA3VDQzMyA1OTRUNTQyIDY3MVQ2NzcgNzAzUTc3NiA3MDMgODI5IDYzNlQ4ODIgNDY4UTg4MiAzNjkgODMxIDI3N1Q3MDIgMTIyVDUyOCAyMVQzNDMgLTE3UTIxNCAtMTcgMTM5IDYxVDYzIDI1N1E2MyAzMzYgOTQgNDA5VDE3MyA1MzRUMjcyIDYyNVQzNjcgNjg0VDQzMiA3MDNINDMzJyxcbiAgICAweDUwOiAnMTcwIC02N1ExNDcgLTY3IDE0NyAtNDlRMTQ3IC00MiAxNjIgLThUMjA0IDk5VDI1MyAyNTRRMjc0IDMzMiAyODggNDE1VDMwNSA1NDJMMzA4IDU4NVEyNzcgNTg1IDIzNCA1NzdUMTc5IDU1N1ExNzIgNTUwIDE2NiA1MzJUMTU2IDUwOVExNDAgNDg0IDEwNSA0NjZUNDQgNDQ3UTIwIDQ0NyAyMCA0NjVRMjAgNDgyIDM0IDUxMFQ3NiA1NjVRMTIyIDYwOCAxNzMgNjMyUTI3OSA2ODYgNDQ4IDY4Nkg0OTVINTM3UTYyMiA2ODYgNjc4IDY3N1Q3ODQgNjM3UTg0NiA1OTggODQ2IDUzM1E4NDYgNDUyIDc3NiAzNzVUNTk3IDI1MlQzNzggMjA2SDM2NkwzNTggMTgxUTM0MSAxMzAgMzE2IDY4VDI4MiAtN1EyNjIgLTMzIDIzMCAtNTBUMTcwIC02N1pNNzAxIDQ2OFE3MDEgNTEyIDY2MSA1NDBUNTcwIDU3N1Q0NjEgNTg2SDQ0OFY1ODJRNDQ2IDU3NiA0NDMgNTQ1VDQyOCA0NDdUMzk1IDMwMUwzODkgMjgwUTM5MCAyODAgMzk4IDI4NFQ0MTkgMjk1VDQ0MSAzMDNRNDQzIDMwNCA0ODQgMzA2VDU3MiAzMjFUNjUxIDM1OVE3MDEgNDAyIDcwMSA0NjgnLFxuICAgIDB4NTE6ICc4NzQgNDUzUTg3NCAzNzIgODM2IDI5OFQ3NTAgMTc3VDYzOCA4OVQ1NDMgMzNUNDg2IDhMNDgzIDdRNDg1IDUgNTIzIC03VDYyMiAtMzJUNzI2IC00NlE3NDEgLTQ2IDc0NiAtNDVUNzU1IC00MVQ3NjIgLTI3UTc3MCAtMSA4MDYgMjNUODc4IDUwSDg5MFE5MDUgNDIgOTA1IDMzUTkwNSAtOCA4MzggLTY4VDY3MCAtMTQ1UTY2MiAtMTQ2IDYyOCAtMTQ2UTUzOCAtMTQ2IDM4OSAtMTAwVDE2NCAtNTBRMTMyIC01MCAxMzIgLTMyVDE2MiAxMVQyMjcgNDdRMjMxIDQ4IDI4NiA1MVQzOTQgNjJUNTE4IDEwMFQ2NDEgMTgwUTczMCAyNzEgNzMwIDM4N1E3MzAgNDc4IDY3MyA1NDBUNTIwIDYwMlE0MTAgNjAyIDMzNyA1MjVUMjY0IDM1NVEyNjQgMjg0IDMxMCAyNDRUNDIwIDIwM1E0NzYgMjAzIDU2OCAyMjJRNTk0IDIyMiA1OTQgMjA0UTU5NCAxODQgNTY1IDE2MVQ1MDggMTI4UTQzMyAxMDMgMzE2IDEwM1EyMjcgMTAzIDE3NCAxNTdUMTIwIDI5MFExMjAgMzgyIDE4MiA0NzFUMzQzIDYyMFQ1NDggNjk3UTU3OCA3MDMgNjAxIDcwM1E2MDQgNzAzIDYxMSA3MDNUNjIzIDcwMlE2NjMgNzAyIDY4NyA2OTZRNzYwIDY3OSA4MTcgNjE4VDg3NCA0NTMnLFxuICAgIDB4NTI6ICcxNTkgMFExNTkgNSAxNzIgMzRUMjA1IDExNFQyNDUgMjI5VDI4NCAzODZUMzA5IDU3NVY1ODVIMzA0UTMwMyA1ODUgMjk1IDU4NVQyODIgNTg0UTIzMyA1NzkgMjA3IDU3MFQxNzUgNTUzVDE2NSA1MzFUMTU2IDUwOVExNDAgNDg0IDEwNSA0NjZUNDQgNDQ3UTIwIDQ0NyAyMCA0NjVRMjAgNDgyIDM0IDUxMFQ3NiA1NjVRMTIyIDYwOCAxNzMgNjMyUTI3OSA2ODYgNDQ4IDY4Nkg1MDVINTgyUTY4MyA2ODYgNzQ1IDY3MlQ4MzQgNjExUTg0MiA1OTQgODQyIDU2NVE4NDIgNTIzIDgyNCA0ODRUNzgwIDQxOVQ3MjIgMzcwVDY2OSAzMzZUNjMyIDMxOEw2MTkgMzEyTDYyNiAzMDJRNjQwIDI3OSA2NjcgMjI3VDY5NiAxNzJRNzE3IDEzMyA3MzUgMTEyVDc2MiA4OFQ3ODQgODRRODI0IDg0IDg3MiAxMThUOTU3IDE1M1E5ODEgMTUzIDk4MSAxMzZROTgxIDExNCA5MzcgNzhUODIwIDEzVDY4NCAtMTdRNjQ2IC0xNyA2MTYgOFQ1NjkgNjZUNTI2IDE1MVQ0NzcgMjM0UTQ2MSAyNTYgNDQ2IDI2NVE0MzcgMjcyIDQyMSAyNzRRNDAwIDI3NCA0MDAgMjkxUTQwMCAzMTEgNDMwIDMzNlQ0OTUgMzcxUTQ5NiAzNzEgNTQzIDM3NFQ2MjcgMzkyVDY4MSA0MzZRNjk5IDQ2NyA2OTkgNTAzUTY5OSA1NTAgNjQ0IDU2OFQ0NzEgNTg2SDQ0OVY1ODJRNDQ5IDU4MSA0NDcgNTU5VDQzOCA0OTlUNDIyIDQxM1QzOTMgMjk4VDM0OCAxNjVRMzEzIDczIDI5NiA0NVEyODIgMjQgMjQ5IDRUMTg1IC0xN1ExNTkgLTE3IDE1OSAwJyxcbiAgICAweDUzOiAnMjA0IDQ3NlEyMDQgNTI1IDI0OCA1NzdUMzcyIDY2NlQ1MzkgNzAzVDY3NCA2ODNUNzIxIDYxMlE3MjEgNTg4IDcxNCA1NjlRNzA0IDU0NyA2NjkgNTI0VDYwMSA0OTlRNTczIDQ5OSA1NzMgNTE2UTU3MyA1MjEgNTc1IDUyN1Q1NzcgNTQzUTU3NyA1NjMgNTY4IDU3NFQ1NDggNTg4TDUzOSA1OTBRNDkwIDYwMyA0NDQgNjAzUTQxOCA2MDMgMzk0IDU5N1QzNjQgNTgzUTM0OCA1NjcgMzQ4IDUzM1EzNDggNDkzIDM4MiA0NjZUNDU5IDQyNVQ1NTUgMzg3VDYzMyAzMzBRNjYyIDI5MiA2NjIgMjQ5UTY2MiAxNTMgNTQ0IDY5VDI1NyAtMTZRMjE4IC0xNiAyMDggLTE1UTExOCAxIDY0IDQ2UTI1IDc2IDI1IDEyNlEyNSAxODUgODIgMjM1VDIwMyAyOTBIMjA3UTIyOSAyOTAgMjMxIDI3NFEyMzEgMjQzIDE4MCAyMTNRMTczIDIwOSAxNzIgMjA2VDE3MCAxODlUMTcxIDE3MFQxODMgMTUwVDIxNiAxMjFRMjczIDgzIDM1NiA4M1E0MTIgODMgNDU5IDEwMFE0OTMgMTExIDUwNyAxNDFRNTE4IDE2NSA1MTggMTg1UTUxOCAyMDggNTA2IDIyOFQ0NzggMjYyVDQzNyAyODhUMzk4IDMwNlQzNjAgMzIwUTMxNiAzMzUgMjg1IDM1MlQyMzkgMzg0VDIxNSA0MTZUMjA1IDQ0M1QyMDQgNDY3VjQ3NicsXG4gICAgMHg1NDogJzYxIDQ2Mkg1OVEzOCA0NjIgMzggNDc5UTM4IDUyOCAxMDkgNTk0VDI4OSA2ODNMMzA0IDY4NUw4MzcgNjg3TDg0NiA2OTNRODg5IDcyMCA5MjMgNzIwUTk0NyA3MjAgOTQ3IDcwMlE5NDUgNjcxIDg5MiA2MzFUNzc2IDU4M1E3NzQgNTgzIDc3MiA1ODNUNzY5IDU4MlQ3NjYgNTgyTDc2NCA1ODFINzU4UTc1MyA1ODEgNzQ0IDU4MVQ3MjIgNTgwVDY5MyA1ODBUNjYyIDU4MEg1NjNMNTE0IDM4NVE1MDcgMzU1IDQ5MyAyOTlUNDc1IDIyNVQ0NjAgMTcyVDQ0MyAxMTlUNDI2IDc2VDQwMiAyNFEzODYgLTExIDM1NSAtMzNUMzA0IC02MVQyNjYgLTY5UTI0MiAtNjkgMjQyIC01MFEyNDMgLTQ1IDI1MyAtMjVUMjc4IDMyVDMwNyAxMTVMMzY0IDM0MFE0MDUgNTExIDQxMyA1MzhUNDM2IDU4MEgyMDdRMjAyIDU3MiAyMDAgNTY4VDE5NyA1NjFUMTk1IDU1MlQxOTAgNTM3UTE3NiA1MTEgMTM1IDQ4N1Q2MSA0NjInLFxuICAgIDB4NTU6ICcxMjQgNTg2UTEwNyA1ODYgNzQgNTY5VDE1IDU1MkgxM1EtMTAgNTUyIC0xMCA1NzBRLTEwIDYwNSA3MCA2NDVUMjIyIDY4NlEyODMgNjg2IDI4MyA2MzFRMjgzIDU5MCAyNDYgNTA0VDE3MiAzMjZUMTM1IDE4MVExMzUgMTMwIDE1NyAxMDdUMjA1IDgzUTIyMSA4MyAyNTkgMTA2UTM0NyAxNjUgNDUzIDMwMVQ2MDQgNTQ4UTYwNyA1NTcgNjEyIDU2OVQ2MTkgNTg3VDYyNCA2MDBUNjI4IDYxMlQ2MzIgNjIxVDYzNyA2MjhUNjQxIDYzNFQ2NDcgNjQwVDY1NCA2NDVUNjYyIDY1MlE3MDYgNjg2IDc0OCA2ODZRNzcxIDY4NiA3NzEgNjY5UTc3MSA2NTYgNzU0IDYxNFQ3MDAgNDY3VDYzMCAyMjlRNjE1IDE2OCA2MTAgMTA1UTYxMCA4OCA2MTcgNzhMNjQxIDkwUTY4MSAxMTEgNzA2IDExMlE3MzMgMTEyIDczMyA5NVE3MzMgODIgNzE0IDYwUTY5NCA0MCA2MzMgMTBRNTY3IC0yMyA1MzIgLTI0UTUwNyAtMjQgNDk1IC0xN1E0NjYgLTQgNDY2IDMyUTQ2NiA5NiA1MDAgMjI1UTI3NyAtMTcgMTAyIC0xN1E1NiAtMTcgMjMgMTdULTEwIDExOFEtMTAgMTY0IDEzIDIzNFQ2NCAzNjNUMTE1IDQ4MVQxMzkgNTY3UTEzOSA1ODYgMTI0IDU4NicsXG4gICAgMHg1NjogJzI1IDYwOFEyNSA2MjggNjAgNjU3VDE0OCA2ODZRMTg0IDY4MyAyMTMgNjcxVDI3MyA2MjVUMzI3IDUzOFQzNjMgMzk0VDM4MCAxODRMMzgxIDEzNEwzOTkgMTQ4UTUwMyAyMjYgNTc0IDMwMlQ2NjcgNDE1VDY4OSA0NjdRNjg4IDQ3NCA2ODQgNDgyVDY3MiA1MDJUNjQ1IDUyMVQ2MDAgNTMyUTU3NiA1MzIgNTc2IDU2N1E1NzYgNjA0IDU5NyA2NDRUNjQxIDY4NUg2NDlRNzAxIDY4NSA3MzcgNjQ4VDc3NCA1NDVRNzc0IDQ1NyA3MDMgMzMzVDQ2MSA2NlEzOTcgMTMgMzMyIC0zMlQyNTUgLTc3UTIzNyAtNzcgMjM3IC0zMFYtMjNRMjQxIDIwIDI0MSAxMDlRMjQxIDQ4MyAxMTUgNTY5UTkxIDU4NiA1MCA1ODlRMjUgNTg5IDI1IDYwOCcsXG4gICAgMHg1NzogJzI1IDYwN1EyNSA2MjkgNjIgNjU3VDE0MiA2ODZRMjA1IDY4NiAyNDggNjQ3VDMxMiA1NDFUMzM5IDQxMVQzNDcgMjc1UTM0NyAyNDkgMzQ1IDIwM1YxODlRMzc1IDIxOSA0NDkgMzE2VDU4NyA1MTZRNjI5IDU4NCA2MjkgNTg3UTYyOSA1ODkgNjI2IDU5N1Q2MjIgNjA3UTYyMiA2MjkgNjU4IDY1NlQ3MzIgNjg2SDc0NFE3NTUgNjgwIDc1NyA2NzhRNzU3IDY3NyA3NjkgNjQ5VDc5OSA1NzdUODM1IDQ3NVQ4NzQgMzM5VDkwNCAxODNROTA4IDE1NyA5MTAgMTUxTDkyNSAxNjlROTk3IDI1MiAxMDU5IDM0M1QxMTIxIDQ3NFExMTIwIDQ5OCAxMTAzIDUxM1QxMDU5IDUzMlExMDM2IDUzMiAxMDM2IDU2OFExMDM2IDYwMCAxMDUzIDYzNlQxMDkwIDY4M0wxMDk3IDY4NkgxMTA5UTExNDcgNjg0IDExNzYgNjUyVDEyMDYgNTUxUTEyMDYgNDYwIDExMzEgMzIwVDg5NyA3UTg1OSAtMzMgODQwIC01MlQ4MTYgLTc0VDgwNCAtNzdRNzg4IC03NyA3ODQgLTMyUTc4MyAtMjggNzgzIC0yNlE3NzQgMTA4IDc0NCAyMzlUNjkxIDQzNlQ2NjUgNTAxUTY2NCA1MDEgNjQ5IDQ3NVQ2MDIgNDAwVDUyOCAyODlUNDIwIDE0NlQyODAgLTE1UTI0MyAtNTYgMjMxIC02NlQyMTAgLTc3UTE5MSAtNzcgMTkxIC00MFExOTEgLTM4IDE5NSAtNFQyMDQgOTFUMjA5IDIxN1EyMDkgMjkwIDIwMiAzNTFUMTc3IDQ2OVQxMjYgNTU3VDQ1IDU4OVEyNSA1ODkgMjUgNjA3JyxcbiAgICAweDU4OiAnNzYyIDU2MlE3NjIgNTc5IDczNyA1ODRUNzExIDYwNFE3MTEgNjMwIDc1MyA2NThUODM0IDY4NlE4NjQgNjg2IDg4NSA2NjlUOTA2IDYyN1E5MDYgNTgwIDgzNCA1MjJUNjE0IDM3OUw1ODQgMzYyVjM1N1E1ODUgMzU0IDU4OSAzMTVUNTk3IDIzM1Q2MDMgMTgzUTYxMCAxMzIgNjI3IDExNlQ2NzEgMTAwUTY3OCAxMDAgNzA0IDExM1Q3NTQgMTI2VDc3OCAxMDdRNzc2IDc5IDczMyA0NVQ2MjYgMlE2MTUgMSA1NzggMVE1NDIgMSA1MzUgM1E1MjEgNyA1MTAgMTVUNDkxIDMxVDQ3NyA1NFQ0NjcgNzhUNDYwIDEwOFQ0NTYgMTM3VDQ1MiAxNzBUNDQ5IDIwMVE0NDcgMjIwIDQ0NSAyNDBUNDQyIDI3MEw0NDEgMjgxUTQzNSAyODEgMzU3IDIzM1EyNDAgMTY1IDIwNiAxMzVRMjAwIDEyOCAyMDAgMTI0UTIwMCAxMTMgMjA4IDEwOFQyMjYgMTAxVDI0NCA5NlQyNTIgODJRMjUyIDYxIDIxNCAzMVQxMjkgMUgxMjBROTcgMSA3NyAxNlQ1NiA2MFE1NiAxMDUgMTMzIDE2OFQ0MTQgMzQ1UTQyOCAzNTIgNDMxIDM1NFQ0MzMgMzU5UTQyMiA0OTMgNDE0IDUyMlE0MDcgNTUxIDM5NSA1NjZUMzczIDU4M1QzNTAgNTg2SDM0MUwzMzIgNTgwUTI5MCA1NjAgMjY1IDU2MFEyNDMgNTYwIDI0MyA1NzdRMjQzIDU4NSAyNDggNTk2VDI2OSA2MjRUMzA2IDY1M1QzNjUgNjc2VDQ0NyA2ODZINDU2UTQ3MiA2ODYgNDg0IDY4M1Q1MTQgNjcxVDU0MyA2MzdUNTYyIDU3NlE1NjUgNTU3IDU3MCA1MDFMNTc3IDQzN1E1NzcgNDM2IDYxMyA0NTdUNjk0IDUwNlQ3NTYgNTUxUTc2MiA1NTggNzYyIDU2MicsXG4gICAgMHg1OTogJzczIDU1NVE0OSA1NTUgNDkgNTczUTQ5IDYwMiAxMTAgNjQ0VDIzOSA2ODZRMzE5IDY4NiAzNzYgNjI0UTQxNiA1ODQgNDQ0IDUxMVQ0ODMgMzYxVDQ5OSAyNDBUNTAzIDE3M1E1MDMgMTY1IDUwNCAxNjVRNTA2IDE2NSA1MjQgMTg0VDU1NiAyMThRNjMxIDI5NyA2NzQgMzc3VDcxOCA0ODVRNzE4IDUwNSA2OTkgNTI2UTY3MyA1NTIgNjI4IDU1MlE2MTkgNTUyIDYxMyA1NjJUNjA3IDU5MFE2MDcgNjE3IDYyMSA2NDVUNjU4IDY4NVE2NjEgNjg2IDY3MSA2ODZRNzE4IDY4NiA3NTcgNjUyVDc5NyA1NDVRNzk3IDQ3NiA3NDkgMzY5VDYwMiAxNDZRNTAwIDI5IDM3MSAtNjdUMTc2IC0xNjRRMTEyIC0xNjQgNzQgLTEyMFQzNiAtMjlRMzYgNSA1NSAzNlQ5NSA2N1ExMDQgNjcgMTA4IDU5VDExNSAzOVQxMjggMTJUMTU0IC0xMlExODMgLTMwIDIxNiAtMzBRMjM5IC0zMCAzMDUgN0wzNjEgNDRMMzY3IDQ5VjU0UTM2NyA5NSAzNjQgMTQzVDM1MSAyNzNUMzEyIDQyOVQyNDMgNTQ2UTIwNiA1ODEgMTU2IDU4OEwxNDYgNTgxUTEwOCA1NTUgNzMgNTU1JyxcbiAgICAweDVBOiAnNjIyIDU3NFE1MjIgNTc5IDQyMCA1NzlIMzk2UTM3MyA1NzkgMzY0IDU3NFQzNTEgNTUwUTMzOSA1MTYgMjk3IDQ5MFQyMTggNDYyUTE5NSA0NjIgMTk1IDQ3OVExOTUgNDg3IDE5NyA0OTJRMjE4IDU2NSAzMTMgNjI1VDUwOSA2ODVRNTY0IDY4NSA2NTAgNjgzVDc1NSA2ODBRNzg3IDY4MCA4MDcgNjgzVDgzMSA2ODZRODUzIDY4NiA4NTMgNjY5UTg1MyA2NTcgODI2IDYyNlE3NDIgNTMyIDY0MSA0MzdMNjE5IDQxNUw2MjIgNDE0UTYyNiA0MTQgNjMxIDQxNFQ2NDIgNDE0UTY5NyA0MTEgNjk3IDM4OFE2OTcgMzY3IDY3MCAzNDVUNjA3IDMyM1E2MDUgMzIzIDU5MiAzMjVUNTQ2IDMyOUg1MjJMNDkwIDMwMlE0NTcgMjc0IDQwMCAyMjZUMjg5IDEzNkwyNjAgMTEzTDMxOCAxMTJRMzQ1IDExMSA0NTIgMTA5VDU4NyAxMDZINjI3UTY1MCAxNDMgNjU2IDE3MFE2NjYgMTk3IDcxMCAyMjVUNzg4IDI1M1E4MTEgMjUzIDgxMSAyMzdRODExIDIxMSA3ODEgMTYwVDcxMCA3N1E2MTkgMCA1MTUgMFE1MDcgMCA0OTcgMFQ0ODQgMVE0MzQgMSAzMTkgM1QxNzcgNlExMjMgNiA5NSAyUTgzIDIgNzEgMEg2OFE0NiAwIDQ2IDE3UTQ2IDI4IDU4IDQ0UTY4IDU2IDEwMCA4MFQyMTAgMTY1VDM4MyAzMDdMNDA4IDMyOUgzNjFMMzE0IDMzMFEyOTcgMzM4IDI5NyAzNTBRMjk3IDM2OCAzMjAgMzg4VDM2OCA0MTNRMzc1IDQxNSA0NDEgNDE1SDUwNkw2NDcgNTU1TDY2NCA1NzRINjIyJyxcbiAgICAweDEzMTogJzI0IDI5NlEyNCAzMDUgMzQgMzI4VDYzIDM4MFQxMTUgNDMwVDE4NyA0NTJRMjA1IDQ1MiAyMjMgNDQ4VDI2MiA0MzVUMjk1IDQwNlQzMDggMzYwUTMwOCAzNDUgMjg3IDI5MFQyNDAgMTcwVDIwNyA4N1EyMDIgNjcgMjAyIDU3UTIwMiA0MiAyMTUgNDJRMjM1IDQyIDI1NyA2NFEyODggOTIgMzAyIDE0MFEzMDcgMTU2IDMxMCAxNTlUMzMwIDE2MkgzMzZIMzQ3UTM2NyAxNjIgMzY3IDE0OFEzNjcgMTQwIDM1NyAxMTdUMzI5IDY1VDI3NiAxNFQyMDEgLThRMTU4IC04IDEyMSAxNVQ4MyA4NFE4MyAxMDQgMTMzIDIyOVQxODQgMzU4UTE4OSAzNzYgMTg5IDM4OFExODkgNDAyIDE3NyA0MDJRMTU2IDQwMiAxMzQgMzgwUTEwMyAzNTIgODkgMzA0UTg0IDI4OCA4MSAyODVUNjEgMjgySDU1SDQ0UTI0IDI4MiAyNCAyOTYnLFxuICAgIDB4MjM3OiAnMjk3IDM2MFQyOTcgMzczVDI5NCAzOTJUMjg4IDQwMFQyNzggNDAxSDI3NlEyMzcgMzk4IDIwMCAzNjNRMTgxIDM0MyAxNzAgMzI1VDE1NiAyOTlUMTQ5IDI4N1QxMjkgMjgySDEyM0gxMTZRMTAyIDI4MiA5NyAyODRUOTIgMjk4UTkzIDMwMyA5OCAzMTVUMTE4IDM0OVQxNTEgMzkwVDIwMSA0MjdUMjY3IDQ1MUgyNzlRMzU3IDQ1MSAzODggNDIyVDQyMCAzNTRWMzM5TDM3MCAxMzhRMzIxIC02MCAzMTcgLTY5UTI4NyAtMTU3IDE2MyAtMTk0UTEzMyAtMjAxIDk5IC0yMDFRMzkgLTIwMSAxNCAtMTc4VC0xMiAtMTI1US0xMiAtOTQgMTEgLTY5VDY4IC00M1E5MyAtNDMgMTA4IC01N1QxMjMgLTk1UTEyMyAtMTIxIDEwMCAtMTUxSDEwNFExMzEgLTE1MSAxNTUgLTEyNVQxOTMgLTYwUTE5NSAtNTQgMjQ0IDE0MVQyOTQgMzQ1UTI5NyAzNjAgMjk3IDM3MycsXG59LHtcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3QgdGV4Q2FsbGlncmFwaGljOiBDaGFyTWFwPENoYXJPcHRpb25zPiA9IHtcbiAgICAweDQxOiBbLjcyOCwgLjA1LCAuNzk4LCB7aWM6IC4wMjEsIHNrOiAuMTk0fV0sXG4gICAgMHg0MjogWy43MDUsIC4wMjIsIC42NTcsIHtzazogLjEzOX1dLFxuICAgIDB4NDM6IFsuNzA1LCAuMDI1LCAuNTI3LCB7c2s6IC4xMzl9XSxcbiAgICAweDQ0OiBbLjY4MywgMCwgLjc3MSwge3NrOiAuMDgzM31dLFxuICAgIDB4NDU6IFsuNzA1LCAuMDIyLCAuNTI4LCB7aWM6IC4wMzYsIHNrOiAuMTExfV0sXG4gICAgMHg0NjogWy42ODMsIC4wMzIsIC43MTksIHtpYzogLjExLCBzazogLjExMX1dLFxuICAgIDB4NDc6IFsuNzA0LCAuMTE5LCAuNTk1LCB7c2s6IC4xMTF9XSxcbiAgICAweDQ4OiBbLjY4MywgLjA0OCwgLjg0NSwge3NrOiAuMTExfV0sXG4gICAgMHg0OTogWy42ODMsIDAsIC41NDUsIHtpYzogLjA5Nywgc2s6IC4wMjc4fV0sXG4gICAgMHg0QTogWy42ODMsIC4xMTksIC42NzgsIHtpYzogLjE2MSwgc2s6IC4xNjd9XSxcbiAgICAweDRCOiBbLjcwNSwgLjAyMiwgLjc2Miwge3NrOiAuMDU1Nn1dLFxuICAgIDB4NEM6IFsuNzA1LCAuMDIyLCAuNjksIHtzazogLjEzOX1dLFxuICAgIDB4NEQ6IFsuNzA1LCAuMDUsIDEuMjAxLCB7c2s6IC4xMzl9XSxcbiAgICAweDRFOiBbLjc4OSwgLjA1LCAuODIsIHtpYzogLjE1OSwgc2s6IC4wODMzfV0sXG4gICAgMHg0RjogWy43MDUsIC4wMjIsIC43OTYsIHtzazogLjExMX1dLFxuICAgIDB4NTA6IFsuNjgzLCAuMDU3LCAuNjk2LCB7aWM6IC4wMzcsIHNrOiAuMDgzM31dLFxuICAgIDB4NTE6IFsuNzA1LCAuMTMxLCAuODE3LCB7c2s6IC4xMTF9XSxcbiAgICAweDUyOiBbLjY4MiwgLjAyMiwgLjg0OCwge3NrOiAuMDgzM31dLFxuICAgIDB4NTM6IFsuNzA1LCAuMDIyLCAuNjA2LCB7aWM6IC4wMzYsIHNrOiAuMTM5fV0sXG4gICAgMHg1NDogWy43MTcsIC4wNjgsIC41NDUsIHtpYzogLjI4OCwgc2s6IC4wMjc4fV0sXG4gICAgMHg1NTogWy42ODMsIC4wMjgsIC42MjYsIHtpYzogLjA2MSwgc2s6IC4wODMzfV0sXG4gICAgMHg1NjogWy42ODMsIC4wNTIsIC42MTMsIHtpYzogLjA0NSwgc2s6IC4wMjc4fV0sXG4gICAgMHg1NzogWy42ODMsIC4wNTMsIC45ODgsIHtpYzogLjA0Niwgc2s6IC4wODMzfV0sXG4gICAgMHg1ODogWy42ODMsIDAsIC43MTMsIHtpYzogLjA5NCwgc2s6IC4xMzl9XSxcbiAgICAweDU5OiBbLjY4MywgLjE0MywgLjY2OCwge2ljOiAuMDQ2LCBzazogLjA4MzN9XSxcbiAgICAweDVBOiBbLjY4MywgMCwgLjcyNSwge2ljOiAuMDQyLCBzazogLjEzOX1dLFxufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1NWR0NoYXJNYXAsIEFkZFBhdGhzfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge3RleENhbGxpZ3JhcGhpYyBhcyBmb250fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9udHMvdGV4L3RleC1jYWxsaWdyYXBoaWMuanMnO1xuXG5leHBvcnQgY29uc3QgdGV4Q2FsbGlncmFwaGljOiBTVkdDaGFyTWFwID0gQWRkUGF0aHMoZm9udCwge1xuICAgIDB4NDE6ICc1NzYgNjY4UTU3NiA2ODggNjA2IDcwOFQ2NjAgNzI4UTY3NiA3MjggNjc1IDcxMlY1NzFRNjc1IDQwOSA2ODggMjUyUTY5NiAxMjIgNzIwIDU3UTcyMiA1MyA3MjMgNTBUNzI4IDQ2VDczMiA0M1Q3MzcgNDFUNzQzIDM5TDc1NCA0NVE3ODggNjEgODAzIDYxUTgxOSA2MSA4MTkgNDdRODE4IDQzIDgxNCAzNVE3OTkgMTUgNzU1IC03VDY3NSAtMzBRNjU5IC0zMCA2NDggLTI1VDYzMCAtOFQ2MjEgMTFUNjE0IDM0UTYwMyA3NyA1OTkgMTA2VDU5NCAxNDZUNTkxIDE2MFYxNjNINDYwTDMyOSAxNjRMMzE2IDE0NVEyNDEgMzUgMTk2IC03VDExOSAtNTBUNTkgLTI0VDMwIDQzUTMwIDc1IDQ2IDEwMFQ3NCAxMjVRODEgMTI1IDgzIDEyMFQ4OCAxMDRUOTYgODRRMTE4IDU3IDE1MSA1N1ExODkgNTcgMjc3IDE4MlE0MzIgNDAwIDU0MiA2MjVMNTU5IDY1OUg1NjdRNTc0IDY1OSA1NzUgNjYwVDU3NiA2NjhaTTU4NCAyNDlRNTc5IDMzMyA1NzcgMzg2VDU3NSA0NzNUNTc0IDUyMFY1ODFMNTYzIDU2MFE0OTcgNDI2IDQxMiAyOTBMMzcyIDIyOEwzNzAgMjI0SDM3MUwzODMgMjI4TDM5MyAyMzJINTg2TDU4NCAyNDknLFxuICAgIDB4NDI6ICczMDQgMzQyUTI5MiAzNDIgMjkyIDM1M1EyOTIgMzcyIDMyMyAzOTFRMzMxIDM5NiA0MTcgNDI4VDUzMyA0ODdRNTYzIDUxMiA1NjMgNTU1VjU2MlE1NjMgNTc1IDU1NyA1ODlUNTMwIDYxOFQ0NzUgNjM2UTQyOSA2MzYgMzk2IDYxM1QzMzAgNTM5UTI2MyA0NDYgMjEwIDIzOFExOTYgMTgzIDE3MyAxMjBRMTM1IDMxIDEyMSAxNlExMDggMSA4NSAtMTBUNDcgLTIyVDMyIC0xMFEzMiAtNSA0NCAxOFQ3NyA5M1QxMTIgMjA2UTEzNSAyOTYgMTU0IDM5NVQxODIgNTUwVDE5MSA2MTVRMTkxIDYxNiAxOTAgNjE2UTE4OCA2MTYgMTc5IDYxMVQxNTcgNjAxVDEzMSA1OTRRMTEzIDU5NCAxMTMgNjA1UTExMyA2MjMgMTQ0IDY0NFExNTQgNjUwIDIwNSA2NzZUMjY3IDcwM1EyNzcgNzA1IDI3OSA3MDVRMjk1IDcwNSAyOTUgNjkzUTI5NSA2ODYgMjg4IDYzNVQyNzggNTc1UTI3OCA1NzIgMjg3IDU4MlEzMzYgNjM1IDQwMiA2NjlUNTQwIDcwNFE2MDMgNzA0IDYzMyA2NzNUNjY0IDU5OVE2NjQgNTU5IDYzOCA1MjNUNTgwIDQ2MlE1NTMgNDQwIDUwNCA0MTNMNDkxIDQwN0w1MDQgNDAyUTU2NiAzODEgNTk2IDMzOFQ2MjcgMjQ0UTYyNyAxNzIgNTc1IDExMFQ0NDQgMTNUMjg0IC0yMlEyMDggLTIyIDE1OCAyOFExNDQgNDIgMTQ2IDUwUTE1MCA2NyAxNzggODVUMjMwIDEwM1EyMzYgMTAzIDI0NiA5NVQyNjcgNzVUMzAyIDU2VDM1NyA0N1E0MzYgNDcgNDg2IDkzUTUyNiAxMzYgNTI2IDE5OFYyMTBRNTI2IDIyOCA1MTggMjQ5VDQ5MSAyOTJUNDM2IDMzMFQzNTAgMzQ1UTMzNSAzNDUgMzIxIDM0NFQzMDQgMzQyJyxcbiAgICAweDQzOiAnMjAxIC0yNVExNjcgLTI1IDEzNiAtMTRUNzUgMjNUMjkgOTRUMTIgMjAyUTEyIDI5MCA1MCAzOTRUMTYxIDU3NFEyMjcgNjQyIDMwMyA2NzNUNDMzIDcwNFE0MzUgNzA1IDQ1NyA3MDVRNTMzIDcwMSA1MzMgNjQwUTUzMyA2MDYgNTA3IDU0OFQ0NjQgNDc0UTQzMSA0NDQgMzk2IDQ0NFEzODEgNDQ0IDM4MSA0NTNRMzgxIDQ1OSAzODggNDczVDQwNyA1MTNUNDI4IDU2M1E0MzMgNTgwIDQzMyA1OTRRNDMzIDYzNiAzODEgNjM2UTMxNCA2MzYgMjYwIDU5NFQxNzUgNDg5VDEyOCAzNjNUMTEyIDI0N1ExMTIgMTU3IDE1MyAxMDFUMjczIDQ0UTM0NyA0NCAzOTggMTIxUTQxMyAxNDQgNDM3IDE1N1Q0ODEgMTcxUTQ5NiAxNzEgNDk2IDE2MFE0OTYgMTUwIDQ3NiAxMjNRNDI2IDU2IDM1MCAxNlQyMDEgLTI1JyxcbiAgICAweDQ0OiAnMzcgNDc1UTE5IDQ3NSAxOSA0ODdRMTkgNTM2IDEwMyA2MDRUMzI3IDY4MkgzNTZRMzg2IDY4MyA0MDggNjgzSDQxOVE0NzUgNjgzIDUwNiA2ODFUNTgyIDY2OFQ2NjcgNjMzUTc2NiA1NzEgNzY2IDQ1MFE3NjYgMzY1IDcyMyAyODdUNjExIDE1MlQ0NTUgNTdUMjc5IDZRMjQ4IDEgMTYwIDBRMTQ4IDAgMTMxIDBUMTA4IC0xUTcyIC0xIDcyIDExUTcyIDI0IDkwIDQwVDEzMyA2NEwxNDQgNjhMMTUyIDg4UTI0NyAzMjggMjcyIDU4N1EyNzUgNjEzIDI3MiA2MTNRMjcyIDYxMyAyNjkgNjEzUTIyNSA2MTAgMTk1IDYwMlQxNDkgNTc5VDEyOSA1NTZUMTE5IDUzMlExMTggNTMwIDExNiA1MjVUMTEzIDUxOFExMDIgNTAyIDgwIDQ5MFQzNyA0NzVaTTY2NSA0MDdRNjY1IDU5NiA0MTIgNjEzUTQwMyA2MTQgMzgzIDYxNFEzNzAgNjE0IDM3MCA2MTJRMzcwIDU5OCAzNjMgNTQyVDMyMyAzNTdUMjQyIDEwM0wyMjggNjlIMjY1UTM5MSA3MyA0ODEgMTE5UTUzNiAxNDggNTc1IDE4OFQ2MzMgMjY4VDY1OCAzMzhUNjY1IDM5MlY0MDcnLFxuICAgIDB4NDU6ICcxNDQgNDcwUTE0NCA1NTYgMjQwIDYzMFQ0NTEgNzA1UTU2NCA3MDUgNTY0IDYzN1E1NjQgNjExIDU0MCA1NzNRNTI5IDU1OSA1MDUgNTQ3VDQ2NCA1MzRRNDQ4IDUzNCA0NDggNTQ1UTQ0OCA1NTIgNDU1IDU2MlE0NjMgNTc3IDQ2MyA1OTFRNDYzIDYwMCA0NjIgNjA0VDQ1NiA2MTZUNDM2IDYyN1Q0MDAgNjM1UTM5NiA2MzUgMzkwIDYzNVQzODAgNjM2UTI5MSA2MzYgMjU4IDU2OFEyNDUgNTQ0IDI0NSA1MTZRMjQ1IDQ2MyAyOTAgNDM4VDM5MSA0MTBRNDE1IDQxMCA0MTUgMzk4UTQxNSAzOTIgNDA3IDM4MFQzNzYgMzU2VDMyNiAzNDFRMjg4IDM0MCAyNjAgMzI3UTIxOCAzMTEgMTg3IDI3NlQxNDMgMjA4VDEzMCAxNTFRMTMwIDExMyAxNTYgODhUMjExIDU1VDI2OCA0N1EzNDkgNDcgNDAzIDEyNVE0MTUgMTQ0IDQzOSAxNTdUNDgzIDE3MVE0OTkgMTcxIDQ5OSAxNjBRNDk5IDE0OCA0NzUgMTIwVDQxMyA1OVQzMTUgM1QxOTcgLTIyUTEyNCAtMjIgNzcgMTRUMzAgMTA1UTMwIDEyNiAzOSAxNTRUNjYgMjE2VDEyMiAyODhUMjA5IDM1NEwyMjMgMzYyUTE0NCA0MDAgMTQ0IDQ3MCcsXG4gICAgMHg0NjogJzE5OSA1NzlRMTgxIDU3OSAxODEgNTkwUTE4MSA1OTggMTg4IDYxMVQyMTIgNjM5VDI2MCA2NjZUMzM1IDY4MlEzMzYgNjgyIDM0OSA2ODJUMzgzIDY4MlQ0MzEgNjgyVDQ5MyA2ODNUNTYxIDY4M1E3NzYgNjgyIDc4NCA2ODFRODI2IDY3MyA4MjkgNjQ3UTgyOSA2MjAgNzk3IDYwMFQ3NDQgNTgwUTcyOCA1ODAgNzI4IDU5NVE3MjkgNjA3IDcxMyA2MTBRNjk4IDYxMyA1OTggNjE0SDUwMEw0OTkgNjEwUTQ5OSA1OTggNDY3IDQ4NlQ0MjggMzY3UTQyOCAzNjUgNTUxIDM2NUg2NzRRNjgzIDM2MCA2ODQgMzU1UTY4NyAzNDYgNjc3IDMyOVE2NjYgMzEyIDY0MiAyOTlUNTk4IDI4NVE1ODYgMjg1IDU4MiAyOTZINDAyTDM5NCAyNzdRMzg2IDI1OCAzNzMgMjI5VDM0NiAxNjdUMzE1IDEwMlQyODYgNTFRMjY1IDIyIDIyNSAtNVQxMzMgLTMyUTEwOCAtMzIgODcgLTI1VDU0IC03VDMzIDE1VDIxIDM1VDE4IDQ3UTE4IDYwIDQ0IDgwVDk4IDEwM1ExMDggMTAzIDExMSAxMDFUMTE5IDg4UTEzMCA2NiAxNTAgNTRUMTc5IDM5VDE5NSAzN1ExOTkgMzcgMjAzIDQzUTIxNyA2NyAyNDUgMTI1VDMxOCAzMDBUMzkxIDUzMlEzOTMgNTQzIDM5OCA1NjRUNDA2IDU5OFQ0MDkgNjEzVDMzOSA2MTRIMjY5UTIyOSA1NzkgMTk5IDU3OScsXG4gICAgMHg0NzogJzIxNiA2OFExNTUgNjggMTE1IDEwMFQ1OSAxNzdUNDQgMjczUTQ0IDI5OSA1MCAzMzNUNzMgNDIxVDEzMyA1MzNUMjM5IDYzMlEzNDYgNzA0IDQ2NiA3MDRRNTA4IDcwNCA1MTUgNzAzUTU1NSA2OTYgNTc3IDY4MVQ1OTkgNjM1UTU5OSA2MDUgNTcwIDU2MFQ1MjMgNDk2UTQ5MCA0NjYgNDU1IDQ2NlE0NDAgNDY2IDQ0MCA0NzVUNDY5IDUyNlQ0OTkgNTg5UTQ5OSA2MDUgNDg5IDYxN1E0NjAgNjM2IDQwMyA2MzZRMzQzIDYzNiAyOTUgNjExVDIyMCA1NDhUMTc0IDQ2NFQxNTAgMzgyVDE0NCAzMThRMTQ0IDI0MSAxODAgMTg5VDI4NyAxMzdRMzI1IDEzNyAzNTkgMTYwUTQyOCAyMDUgNDY2IDMyMlE0NzIgMzQyIDUwMSAzNTlUNTUxIDM3NlE1NTcgMzc2IDU2MCAzNzNUNTY0IDM2OEw1NjUgMzY1UTU2MCAzNDEgNTUxIDMwMlQ1MTIgMTczVDQ1MSAzMVEzNTkgLTExOSAyMDQgLTExOVExNjMgLTExOCAxMjcgLTEwOVQ3NCAtOTFUNTMgLTc3UTUyIC03NSA1MiAtNzFRNTIgLTU0IDc5IC0zNVQxMzIgLTE0SDE0MEwxNTEgLTE5UTIxMCAtNDkgMjgxIC00OUgyODlRMzEyIC00OSAzMjkgLTMxUTM1MSAtNyAzNzIgMzZUNDA1IDEwOVQ0MTYgMTQyTDQwOCAxMzZRNDAxIDEzMSAzOTIgMTI1VDM2OSAxMTFUMzM4IDk2VDMwMyA4MlQyNjEgNzJUMjE2IDY4JyxcbiAgICAweDQ4OiAnMTggNDg3UTE4IDQ5NiAyOSA1MTdUNjcgNTY2VDEyNyA2MjFUMjE2IDY2NVQzMzAgNjgzUTM1OSA2ODMgMzc2IDY2OVQzOTcgNjQzVDQwMCA2MjJRNDAwIDU4NCAzODIgNDg4VDM0OCAzNDNRMzQ4IDM0MiA0NjcgMzQySDU4N0w1OTQgMzY2UTYxNSA0NDAgNjQ4IDUzNFQ2OTAgNjQxUTcwMSA2NTYgNzIzIDY2OVQ3NjQgNjgzUTc4MyA2ODMgNzgzIDY3Mkw3NTAgNTc4UTcxNiA0ODUgNjc3IDM0NlQ2MjUgMTAxUTYyNCA5MiA2MjMgODJUNjIyIDY1VDYyMSA1NlE2MjEgMjAgNjU4IDIwUTY2NiAyMCA3MDEgMjVRNzA5IDUyIDczNiA2OVQ3ODUgODdRODAzIDg3IDgwMyA3NVQ3OTEgNDRUNzU0IDNUNjg1IC0zM1Q1ODggLTQ4UTU2OCAtNDggNTYyIC00NlE1MjIgLTMxIDUyMiAxM1YyM1E1MzEgMTI5IDU2MiAyNTBMNTY5IDI4MUw1NjUgMjgwUTU2MSAyNzggNTU2IDI3N1Q1NDkgMjc0TDQzOCAyNzNIMzI4TDMyMSAyNDlRMzA3IDIwMiAyNzUgMTA3VDIzMiAwUTIxOSAtMTYgMTk2IC0yOFQxNTUgLTQxUTE0OSAtNDEgMTQ1IC0zOVQxNDAgLTM0VDEzOSAtMjlRMTM5IC0yNCAxNDggLTNUMTgxIDg2VDIzMyAyNDdRMjQwIDI3MCAyNDAgMjcyUTI0MCAyNzMgMTk0IDI3M0gxNjlRMTM5IDI3MyAxMzkgMjg1UTEzOSAyOTUgMTUzIDMwOFQxODcgMzMyUTIwNiAzNDEgMjM2IDM0MkwyNjAgMzQzTDI2NCAzNTlRMjc4IDQxNCAyODkgNDgyVDMwMCA1NzhRMzAwIDYxMyAyNjAgNjEzSDI1NFExOTggNjEzIDE2OSA1OTJRMTQ4IDU3OCAxMjcgNTQ0VDEwNCA1MDhRNzIgNDc4IDM3IDQ3NVExOCA0NzUgMTggNDg3JyxcbiAgICAweDQ5OiAnMTc0IDBIMzFRLTEzIDAgLTIxIDJULTMwIDEyUS0zMCAyMyAtMTcgMzZROSA2MCA0MiA2OEwxNTUgNzBRMTg3IDEwMiAyMTQgMTc5VDI1NyAzMzNUMzAyIDQ5MVQzNjYgNjEwTDM2OSA2MTRIMzA1UTIyMSA2MTEgMTg4IDYwN1QxNDUgNTk2VDEyOCA1NjlRMTE5IDU0MyA5NCA1MjlUNDcgNTEyUTI4IDUxMiAyOCA1MjRRMjggNTI3IDMyIDUzOVE1NiA2MTQgMTU5IDY1NFEyMTggNjc4IDMxMiA2ODJRMzE0IDY4MiAzMzkgNjgyVDQwNCA2ODJUNDgxIDY4M0g2MzJRNjQyIDY3OCA2NDIgNjcxUTY0MiA2NTcgNjIxIDY0MVQ1NzcgNjE3UTU3MCA2MTUgNTA3IDYxNEg0NDRRNDI3IDU5MiA0MDYgNTQyUTM4MiA0NzggMzU1IDM2NlQzMTAgMjA5UTI4MCAxMjMgMjM4IDc4TDIzMCA2OUgzMzBRNDQyIDcwIDQ0MiA3NFE0NDMgNzQgNDQzIDc3VDQ0NyA4N1Q0NjAgMTA1UTQ5MCAxMzQgNTI3IDEzN1E1NDUgMTM3IDU0NSAxMjVRNTQ1IDEyMCA1NDIgMTEyUTUzMSA3OCA0OTEgNDlUMzk5IDdRMzc5IDIgMzYwIDJUMTc0IDAnLFxuICAgIDB4NEE6ICcxNDggNzhRMTQ4IDE2IDE4OSAtMTdUMjg2IC01MFEzMTkgLTUwIDM0OCAtMzNUMzk2IDEwVDQyNiA1OVQ0NDQgMTAxTDQ3MSAyMDRRNDk4IDMwNiA1MjEgMzcyUTU3NSA1MzIgNjQ5IDYwNUw2NTkgNjE0SDU5MVE1MTcgNjEzIDQ5NCA2MDdRNDMzIDU5MSA0MDAgNTUwVDM2MCA0NzdRMzUzIDQ1NCAzMjUgNDM3VDI3NSA0MTlRMjU2IDQxOSAyNjAgNDM1UTI4MCA1MjMgMzc2IDU5N1Q1ODMgNjgxUTYwMyA2ODMgNzEzIDY4M0g4MzBRODM5IDY3NCA4MzkgNjcxUTgzOSA2NTQgODEwIDYzNFQ3NTQgNjE0UTczNSA2MTQgNzIxIDYwMVE2ODggNTcxIDY1NCA0OTVUNjAwIDM1MVQ1NjEgMjA5VDU0MSAxMzJRNTA3IDI5IDQxMiAtNDVUMjEzIC0xMTlRMTQxIC0xMTkgOTQgLTc3VDQ3IDMzUTQ3IDU1IDUwIDY5VDU4IDkwVDcxIDEwM1ExMDUgMTMxIDEzNSAxMzFRMTUyIDEzMSAxNTIgMTIwUTE1MiAxMTkgMTUxIDExNFQxNDkgOTlUMTQ4IDc4JyxcbiAgICAweDRCOiAnMTk0IDYxOFExOTMgNjE4IDE4MiA2MTNUMTU2IDYwMVQxMzEgNTk0UTExMyA1OTQgMTEzIDYwNVExMTMgNjIzIDE0NCA2NDRRMTU0IDY1MCAyMDUgNjc2VDI2NyA3MDNRMjc3IDcwNSAyNzkgNzA1UTI5NSA3MDUgMjk1IDY5MVEyOTUgNTY5IDI1MCAzOTdRMjI1IDMwNiAxOTcgMjE3VDE1MSA4MVQxMjggMjVRMTIwIDggOTQgLTdUNDcgLTIyUTMyIC0yMiAzMiAtMTBMNjQgNzZROTUgMTYzIDEzMyAyOTVUMTg1IDUzMFExOTggNjExIDE5NCA2MThaTTMzMSA0MjlRMzMxIDM4MyAzNjQgMjkwVDQ0OSAxMTdUNTQyIDM2UTU3NCAzNiA2MDcgNTFUNjUyIDEwM1E2NjAgMTI0IDY3NyAxMzNUNzA5IDE0M1E3MjcgMTQzIDcyNyAxMjhRNzI3IDExOSA3MjMgMTExUTcwNCA1NiA2MzkgMTdUNDk3IC0yMkg0OTNRNDYzIC0yMiA0MjUgMTZRNDAxIDQwIDM4MiA3MVEzMzUgMTM4IDI5NiAyNDNUMjU2IDM5OVEyNTYgNDM0IDI4OCA0NzNRMzQyIDU0MCA0NzEgNjIyVDY3MCA3MDVRNjkxIDcwNCA3MDMgNjk2UTczMiA2NzggNzMyIDY0NFE3MzIgNjEzIDcxNCA2MDBUNjc3IDU4NlE2NzEgNTg2IDY2NyA1ODdUNjYwIDU5MlQ2NTcgNjA0VjYxOVE2NTcgNjQ3IDYyOSA2NDdRNjIzIDY0NyA2MjAgNjQ2UTU3NiA2MzUgNDk1IDU4M1QzNjUgNDgyUTMzMSA0NDggMzMxIDQyOScsXG4gICAgMHg0QzogJzYyIC0yMlQ0NyAtMjJUMzIgLTExUTMyIC0xIDU2IDI0VDgzIDU1UTExMyA5NiAxMzggMTcyVDE4MCAzMjBUMjM0IDQ3M1QzMjMgNjA5UTM2NCA2NDkgNDE5IDY3N1Q1MzEgNzA1UTU1OSA3MDUgNTc4IDY5NlQ2MDQgNjcxVDYxNSA2NDVUNjE4IDYyM1Y2MTFRNjE4IDU4MiA2MTUgNTcxVDU5OCA1NDhRNTgxIDUzMSA1NTggNTIwVDUxOCA1MDlRNTAzIDUwOSA1MDMgNTIwUTUwMyA1MjMgNTA1IDUzNlQ1MDcgNTYwUTUwNyA1OTAgNDk0IDYxMFQ0NTIgNjMwUTQyMyA2MzAgNDEwIDYxN1EzNjcgNTc4IDMzMyA0OTJUMjcxIDMwMVQyMzMgMTcwUTIxMSAxMjMgMjA0IDExMkwxOTggMTAzTDIyNCAxMDJRMjgxIDEwMiAzNjkgNzlUNTA5IDUySDUyM1E1MzUgNjQgNTQ0IDg3VDU3OSAxMjhRNjE2IDE1MiA2NDEgMTUyUTY1NiAxNTIgNjU2IDE0MlE2NTYgMTAxIDU4OCA0MFQ0MzMgLTIyUTM4MSAtMjIgMjg5IDFUMTU2IDI4TDE0MSAyOUwxMzEgMjBRMTExIDAgODcgLTExJyxcbiAgICAweDREOiAnMjggOVEyOCAzNyA0MyA2M1Q3MyA5MFE3NyA5MCA4MyA4NFQxMDMgNzBUMTQxIDU3SDE0NlExNjIgNTcgMTc4IDc5VDIyMiAxNjdRMjY2IDI3OSAyOTUgMzcxVDMzNCA1MTNUMzQ5IDU5OFQzNTggNjUxVDM3MSA2NzdRMzk3IDcwNSA0MzIgNzA1UTQ0MiA3MDUgNDQ1IDY5OVQ0NTIgNjY2UTQ1MyA2NjEgNDUzIDY1OVE0NzUgNTM4IDUwOSA0MDVUNTY4IDIwN0w1NzQgMTkyUTU4MSAxNzggNTg3IDE2NFQ1OTQgMTUwUTU5NiAxNTAgNjM1IDE4OVQ2OTMgMjQ4UTc2NSAzMjQgODYzIDQzOFQxMDI0IDYyNlQxMDg5IDcwMVExMDkzIDcwNSAxMTAwIDcwNVExMTExIDcwNSAxMTExIDY4MlExMTExIDY3NSAxMTA4IDY2MFQxMDk5IDYxMVQxMDg2IDU0MFExMDQxIDI3NyAxMDQxIDE0NFExMDQxIDk4IDEwNDQgNzVUMTA1MCA0OFQxMDU5IDQyUTEwNjQgNDEgMTA3NSA0NlExMTAyIDYxIDExMjEgNjFRMTEzNyA2MSAxMTM3IDUwUTExMzcgMjggMTA4NyAwVDEwMDAgLTI5UTk4MyAtMjkgOTcyIC0yM1Q5NTUgLTlUOTQ1IDE2VDk0MiA0NVQ5NDEgODNWOTZROTQxIDE1OCA5NTIgMjU2VDk3NCA0MjJMOTg1IDQ4OVE5ODQgNDg5IDkzOSA0MzZUODIxIDMwMFQ2OTggMTY0UTY2NSAxMjggNjIwIDg1VDU2OCAzN1E1NjQgMzQgNTU4IDM0UTU1MCAzNCA1NDYgMzdUNTM1IDU0UTUxMiA5MSA0OTYgMTI3VDQ1MCAyNTlUMzg5IDQ5OEwzODQgNTE4UTM0OSAzNjcgMjk0IDIyM1QxOTggMTVRMTU1IC01MCAxMTcgLTUwUTg3IC01MCA2MSAtMzVUMzAgLTZRMjggMiAyOCA5JyxcbiAgICAweDRFOiAnMzQzIDcwNVEzNTggNzA1IDM1OCA2OThRMzYwIDY5NiAzNzAgNjU4VDQxMSA1MjRUNDg0IDMxOVE1MzYgMTc0IDU5MCA4Mkw1OTUgNzNMNjE1IDE1MlE2NDYgMjc0IDY4MyA0MDdRNzI5IDU3MSA3NTIgNjM3VDc5OSA3MjdRODUyIDc4MCA5MzcgNzg4UTkzOSA3ODggOTQ3IDc4OFQ5NTggNzg5SDk2MlE5NzkgNzg5IDk3OSA3NjVROTc5IDcyMiA5NTEgNjkyUTk0MiA2ODMgOTI0IDY4M1E4ODggNjgxIDg1OSA2NzJUODE4IDY1NFQ4MDMgNjM5UTc4NCA2MDggNzA4IDMyMlQ2MzEgMTVRNjMxIDE0IDYzMCAxNVE2MzAgMTcgNjI5IDE1UTYyOCAxNCA2MjggMTJRNjIxIC00IDYwMSAtMTdUNTYwIC0zMVE1NTAgLTMxIDU0NiAtMjhUNTMwIC03UTQ4NCA2NyA0NTggMTIzVDM5OCAyNzJRMzUyIDM5MiAzMTQgNTE0TDMwNiA1MzVWNTM0UTMwNiA1MzMgMjk2IDQ4OFQyNzIgMzc5VDIzNCAyMzlUMTg1IDEwMFQxMjcgLTdUNjEgLTUwUTM0IC01MCA0IC0zNFQtMjcgOFEtMjcgMzMgLTEyIDYxVDE4IDkwUTIxIDkwIDM2IDc3VDg3IDU3SDkyUTEwOSA1NyAxMjMgNzhUMTYyIDE3M1EyMDYgMjk5IDIzMiA0MTdUMjY1IDU5OVQyNzYgNjY3UTI4NCA2ODEgMzA0IDY5M1QzNDMgNzA1JyxcbiAgICAweDRGOiAnMzA4IDQyOFEyODkgNDI4IDI4OSA0MzhRMjg5IDQ1NyAzMTggNTA4VDM3OCA1OTNRNDE3IDYzOCA0NzUgNjcxVDU5OSA3MDVRNjg4IDcwNSA3MzIgNjQzVDc3NyA0ODNRNzc3IDM4MCA3MzMgMjg1VDYyMCAxMjNUNDY0IDE4VDI5MyAtMjJRMTg4IC0yMiAxMjMgNTFUNTggMjQ1UTU4IDMyNyA4NyA0MDNUMTU5IDUzM1QyNDkgNjI2VDMzMyA2ODVUMzg4IDcwNVE0MDQgNzA1IDQwNCA2OTNRNDA0IDY3NCAzNjMgNjQ5UTMzMyA2MzIgMzA0IDYwNlQyMzkgNTM3VDE4MSA0MjlUMTU4IDI5MFExNTggMTc5IDIxNCAxMTRUMzY0IDQ4UTQ4OSA0OCA1ODMgMTY1VDY3NyA0MzhRNjc3IDQ3MyA2NzAgNTA1VDY0OCA1NjhUNjAxIDYxN1Q1MjggNjM2UTUxOCA2MzYgNTEzIDYzNVE0ODYgNjI5IDQ2MCA2MDBUNDE5IDU0NFQzOTIgNDkwUTM4MyA0NzAgMzcyIDQ1OVEzNDEgNDMwIDMwOCA0MjgnLFxuICAgIDB4NTA6ICczNyA0NzVRMTkgNDc1IDE5IDQ4N1ExOSA1MzYgMTAzIDYwNFQzMjcgNjgyUTMyOSA2ODIgMzQ0IDY4MlQzODAgNjgyVDQyMSA2ODNINDYzUTYyNSA2ODMgNjk1IDYxNVE3MTggNTkxIDcyNiA1NjRRNzMzIDU0NyA3MzMgNTI1UTczMyA0MTIgNjA3IDMxMlQzMjEgMjA1SDMxMlEyOTMgMjA1IDI5MyAyMTdRMjkzIDIyNCAzMDIgMjM2VDMzMyAyNjBUMzg1IDI3NFE1NTggMjg3IDYxNCA0MDdRNjMzIDQ0NSA2MzMgNDc3UTYzMyA1MTUgNjEyIDU0M1Q1NTYgNTg1VDQ4MSA2MDdUMzk5IDYxNEgzNzBMMzY4IDYwM1EzNTIgNDYzIDMxMiAzMTJUMjQyIDgyVDIwMiAtMTNRMTkwIC0zMyAxNjQgLTQ1VDEyMSAtNTdRMTA4IC01NyAxMDggLTQ1UTEwOCAtNDAgMTIwIC0xMFQxNTEgNzNUMTkyIDE5MFQyMzMgMzQ5VDI2NiA1MzlRMjY3IDU0NiAyNjkgNTY1VDI3MiA1OThUMjc0IDYxM0gyNzBRMjA5IDYxMyAxNjMgNTg4UTEzMSA1NzIgMTEzIDUxOFExMDIgNTAyIDgwIDQ5MFQzNyA0NzUnLFxuICAgIDB4NTE6ICcxMTQgMjg2UTExNCAzNTggMTUxIDQzM1QyNDkgNTY5VDM5MiA2NjdUNTU4IDcwNVE2NTMgNzA1IDcxMyA2NDFUNzc0IDQ2MFE3NzQgMzg5IDc1MCAzMjJUNjg3IDIwNlQ2MDAgMTE0VDUwNCA0NlQ0MTIgNEwzOTkgLTJRNTQyIC02MiA2MzYgLTYyUTY2MCAtNjIgNjcwIC01NFQ2ODYgLTI3VDcwMCAwUTczNCAzNCA3NzAgMzRRNzg3IDM0IDc4NyAyM1E3ODcgLTE4IDcyMCAtNzRUNTYzIC0xMzFRNDg1IC0xMzEgMzUwIC04M1QxNDUgLTM0UTEyNyAtMzQgMTI3IC0yMlExMjcgLTEyIDE0NCA1VDE5MCAzMUwyMDAgMzRMMjM3IDM1UTM4NiAzOCA0NjcgNzlRNTUwIDEyMCA2MTIgMjEwVDY3NSA0MTZRNjc1IDUxMCA2MjUgNTczVDQ4NCA2MzZRNDEwIDYzNiAzNDYgNTg3VDI0OCA0NjlUMjE0IDMzM1EyMTQgMzA2IDIyMSAyODFUMjQzIDIyOVQyODggMTg4VDM2MCAxNzJRNDAzIDE3MiA0NDEgMTg4VDQ5MCAyMDVRNTEwIDIwNSA1MTAgMTkyUTUwNSAxNjIgNDMyIDEzMlQyODcgMTAyUTIwNiAxMDIgMTYwIDE1NVQxMTQgMjg2JyxcbiAgICAweDUyOiAnMzcgNDc1UTE5IDQ3NSAxOSA0ODdRMTkgNTAzIDM1IDUzMFQ4MyA1ODlUMTgwIDY0N1QzMjcgNjgySDM3NFEzODcgNjgyIDQxNyA2ODJUNDY0IDY4M1E1MTkgNjgzIDU1OSA2NzlUNjQyIDY2M1Q3MDggNjI1VDczMSA1NTdRNzMxIDQ4MSA2NjggNDExVDUwNCAzMDBRNTA2IDI5NiA1MTIgMjg2VDUyOCAyNTdUNTUzIDIwMlE1OTQgMTA1IDYxMSA4MlE2MzUgNDcgNjY1IDQ3UTcwOCA0NyA3NDIgOTNRNzU4IDExMyA3ODYgMTI4UTgwNCAxMzYgODE5IDEzN1E4MzcgMTM3IDgzNyAxMjVRODM3IDExNSA4MTggOTJUNzY3IDQzVDY4NyAtMlQ1ODkgLTIyUTU0OSAtMjIgNTE3IDIyVDQ2NyAxMjBUNDIyIDIyMVQzNjIgMjczUTM0NiAyNzMgMzQ2IDI4N1EzNDggMzAxIDM3MyAzMjBUNDM2IDM0MlE0MzcgMzQyIDQ0NiAzNDNUNDYyIDM0NVQ0ODEgMzQ4VDUwNCAzNTNUNTI3IDM2MlQ1NTMgMzc1VDU3NyAzOTNRNTk4IDQxMiA2MTQgNDQzVDYzMCA1MTFRNjMwIDU0NSA2MTMgNTY2VDU0MSA2MDBUMzkzIDYxNFEzNzAgNjE0IDM3MCA2MTNMMzY2IDU4NFEzNDkgNDQ2IDMxMSAzMDdUMjQzIDk2TDIxMyAyNVEyMDUgOCAxNzkgLTdUMTMyIC0yMlExMjUgLTIyIDEyMCAtMThUMTE3IC04UTExNyAtNSAxMzAgMjZUMTYzIDExM1QyMDUgMjM5VDI0NiA0MDhUMjc0IDYwNlY2MTRRMjczIDYxNCAyNTkgNjEzVDIzMSA2MDlUMTk4IDYwMlQxNjMgNTg4UTEzMSA1NzIgMTEzIDUxOFExMDIgNTAyIDgwIDQ5MFQzNyA0NzUnLFxuICAgIDB4NTM6ICc1NTQgNTEyUTUzNiA1MTIgNTM2IDUyMlE1MzYgNTI1IDUzOSA1MzlUNTQyIDU2NFE1NDIgNTg4IDUyOCA2MDRRNTE1IDYxNiA0ODIgNjI1VDQxMCA2MzVRMzc0IDYzNSAzNDkgNjI0VDMxMiA1OTRUMjk1IDU2MVQyOTAgNTMyUTI5MCA1MDUgMzAzIDQ4MlQzNDIgNDQyVDM3OCA0MTlUNDA5IDQwNFE0MzUgMzkxIDQ1MSAzODNUNDk0IDM1N1Q1MzUgMzIzVDU2MiAyODJUNTc0IDIzMVE1NzQgMTMzIDQ2NCA1NlQyMjAgLTIyUTEzOCAtMjIgNzggMjFUMTggMTIzUTE4IDE4NCA2MSAyMjdUMTU2IDI3NFExNzggMjc0IDE3OCAyNjNRMTc4IDI2MCAxNzcgMjU4UTE3MiAyNDcgMTY0IDIzOVQxNTEgMjI3VDEzNiAyMThMMTI3IDIxM0wxMjQgMjAyUTExOCAxODYgMTE4IDE2M1ExMjAgMTI0IDE2NSA4NlQyOTIgNDhRMzc0IDQ4IDQyMyA4NlQ0NzMgMTg2VjE5M1E0NzMgMjY3IDM0NyAzMjdRMjY4IDM2NCAyMzkgMzg5UTE5MSA0MzEgMTkxIDQ4NlExOTEgNTQ3IDI0MiA2MDBUMzU2IDY3OVQ0NzAgNzA1UTQ3MiA3MDUgNDc4IDcwNVQ0ODkgNzA0UTU1MSA3MDQgNTk2IDY4MlQ2NDIgNjEwUTY0MiA1NjYgNjIxIDU0NVE1OTIgNTE2IDU1NCA1MTInLFxuICAgIDB4NTQ6ICc0OSA0NzVRMzQgNDc1IDM0IDQ5MFEzNCA1NTIgMTA2IDYxMVQyNjEgNjgxUTI3MiA2ODMgNTA3IDY4M0g3NDJRNzkwIDcxNyA4MTYgNzE3UTgzMyA3MTcgODMzIDcwOFE4MzMgNjgyIDc5NSA2NTNUNzE0IDYxNVE2OTEgNjEwIDU4OCA2MDlRNDkwIDYwOSA0OTAgNjA3TDQ4MyA1ODBRNDc2IDU1NCA0NjIgNDk2VDQzNSAzOTJRNDEwIDI4OSAzOTUgMjMxVDM2MyAxMTZUMzM1IDM0VDMwOSAtMTVUMjc5IC00N1QyNDIgLTY0UTIzMSAtNjggMjE4IC02OFEyMDMgLTY4IDIwMyAtNTdRMjAzIC01MiAyMTEgLTM4UTIyNCAtNyAyMzQgMjBUMjUxIDY2VDI2OCAxMjNUMjgzIDE3OVQzMDQgMjYxVDMyOCAzNjBRMzQyIDQxNSAzNjAgNDg4UTM4MCA1NjcgMzg0IDU4MlQzOTcgNjA1UTQwMCA2MDcgNDAxIDYwOUgzMDJIMjQ0UTIwMCA2MDkgMTg4IDYwN1QxNjcgNTk2UTE0NSA1NzIgMTQ1IDU0MVExNDUgNTIwIDEwOSA0OThUNDkgNDc1JyxcbiAgICAweDU1OiAnOCA1OTJROCA2MTYgNzAgNjQ5VDE5MyA2ODNRMjQ2IDY4MyAyNDYgNjMxUTI0NiA1ODcgMjA1IDQ5MlQxMjQgMjk3VDgzIDE0M1E4MyAxMDEgMTAwIDc1VDE1NCA0OFEyMDIgNDggMjg3IDEzNVQ0NTAgMzQyVDU2MCA1NTNRNTg5IDYzNSA1OTMgNjQwUTYwMyA2NTYgNjI2IDY2OFQ2NjkgNjgzSDY3MFE2ODcgNjgzIDY4NyA2NzJUNjcwIDYxNlQ2MTcgNDYzVDU0NyAyMjBRNTI1IDEzNyA1MjEgNjhRNTIxIDU0IDUyMiA1MFQ1MzMgNDJMNTQzIDQ3UTU3MyA2MSA1ODggNjFRNjA0IDYxIDYwNCA0N1E1OTkgMTYgNTA2IC0yMlE0ODYgLTI4IDQ2OCAtMjhUNDM2IC0xOFQ0MjEgMThRNDIxIDkyIDQ2OCAyNThRNDY4IDI1OSA0NjcgMjU3VDQ1OSAyNDhRNDI2IDIwNiAzOTEgMTY3VDMwMyA4MVQxOTQgNlQ4MyAtMjJRNjYgLTIyIDU4IC0yMFEyNSAtMTEgNCAxOVQtMTcgOTlRLTE3IDE0NiA4IDIyMFQ2NCAzNThUMTIwIDQ4OFQxNDYgNTg2UTE0NiA2MDQgMTQxIDYwOFQxMjMgNjEzSDEyMFE5OSA2MTMgNzIgNTk3VDI1IDU4MFE4IDU4MCA4IDU5MicsXG4gICAgMHg1NjogJzI1IDYzM1EyNSA2NDcgNDcgNjY1VDEwMCA2ODNRMjkxIDY4MyAyOTEgMzA2UTI5MSAyNjQgMjg4IDIxM1QyODIgMTMyTDI3OSAxMDJRMjgxIDEwMiAzMDggMTI2VDM3OCAxOTFUNDY0IDI3OVQ1NDUgMzgxVDU5NiA0NzlRNjAwIDQ5MCA2MDAgNTAyUTYwMCA1MjcgNTgxIDU1MFQ1MjMgNTc3UTUwNSA1NzcgNTA1IDYwMVE1MDUgNjIyIDUxNiA2NDdUNTQyIDY4MVE1NDYgNjgzIDU1OCA2ODNRNjA1IDY3OSA2MzEgNjQ1VDY1OCA1NTlRNjU4IDQyMyA0ODcgMjE1UTQwOSAxMjYgMzA4IDM3VDE5MCAtNTJRMTc3IC01MiAxNzcgLTI4UTE3NyAtMjYgMTgzIDE1VDE5NiAxMjdUMjAzIDI3MFEyMDMgMzU2IDE5MiA0MjFUMTY1IDUyM1QxMjYgNTgzVDgzIDYxM1Q0MSA2MjBRMjUgNjIwIDI1IDYzMycsXG4gICAgMHg1NzogJzI1IDYzM1EyNSA2NDcgNDYgNjY1VDEwMyA2ODNRMTY4IDY4MyAyMDcgNjMyUTIyOCA2MDggMjQzIDU2OFEyNjkgNDg1IDI2OSAzNzRRMjY5IDMyNCAyNjUgMjcxVDI1NiAxODRMMjUxIDE1MEwyNTIgMTUyUTI1NCAxNTMgMjU3IDE1N1QyNjQgMTY3VDI3NCAxODBUMjg2IDE5N1EzNTkgMjkzIDQyNCAzOThUNTE5IDU1OFQ1NDkgNjE2UTU0OSA2MTggNTQ3IDYyNFQ1NDUgNjM4UTU1MCA2NTQgNTcyIDY2OFQ2MTUgNjgzUTYyNiA2ODMgNjMyIDY3MlQ2NTcgNTk1UTcyNiAzNzAgNzQxIDEyOEw3NDIgMTEwUTc1MiAxMjIgNzY3IDE0MlQ4MjMgMjE3VDg5NCAzMjFUOTUwIDQyNFQ5NzYgNTExUTk3NiA1NDQgOTU4IDU2MFQ5MTggNTc3UTkwNiA1NzcgOTA2IDYwMlE5MDYgNjI5IDkxOCA2NTFUOTQyIDY4MVE5NDggNjgzIDk1NCA2ODNROTgzIDY4MyAxMDA4IDY1OFQxMDM0IDU2OVQ5OTkgNDIxVDkxNSAyNTdUODEzIDEwOVQ3MjQgLTNUNjgxIC00OVE2NjYgLTU5IDY2MCAtNDVRNjU5IC00MSA2NTcgMzVUNjM5IDIzM1Q1OTEgNDc3UTU3MyA1NTEgNTcwIDU1MVE1NjkgNTUxIDU1NCA1MjNUNTA3IDQzOVQ0MzMgMzE1VDMyMyAxNTVUMTgyIC0yNVExNjAgLTUyIDE1MSAtNTNRMTM3IC01MyAxMzcgLTMwUTEzNyAtMjkgMTQ4IDI1VDE3MCAxNjhUMTgxIDMzOFExODEgNDI0IDE2OCA0ODNUMTMxIDU3MVQ4NyA2MDlUNDAgNjIwUTI1IDYyMCAyNSA2MzMnLFxuICAgIDB4NTg6ICczMjQgNjE0UTI5MSA1NzYgMjUwIDU3M1EyMzEgNTczIDIzMSA1ODRRMjMxIDU4OSAyMzIgNTkyUTIzNSA2MDEgMjQ0IDYxNFQyNzEgNjQzVDMyNCA2NzFUNDAwIDY4M0g0MDNRNDYyIDY4MyA0ODEgNjEwUTQ4NSA1OTQgNDkwIDU0NVQ0OTggNDU0TDUwMSA0MTNRNTA0IDQxMyA1NTEgNDQyVDY0OCA1MDlUNzA1IDU2MVE3MDcgNTY1IDcwNyA1NzhRNzA3IDYxMCA2ODIgNjE0UTY2NyA2MTQgNjY3IDYyNlE2NjcgNjQxIDY5NSA2NjJUNzU1IDY4M1E3NjUgNjgzIDc3NSA2ODBUNzk2IDY2MlQ4MDcgNjIzUTgwNyA1OTYgNzkyIDU3MlQ3MTMgNDk5VDUzMCAzNzZMNTA1IDM2MVYzNTZRNTA4IDM0NiA1MTEgMjc4VDUyNCAxNDhUNTU3IDc1UTU2OSA2OSA1ODAgNjlRNTg1IDY5IDU5MyA3N1E2MjQgMTA4IDY2MCAxMTBRNjY3IDExMCA2NzAgMTEwVDY3NiAxMDZUNjc4IDk0UTY2OCA1OSA2MjQgMzBUNTEwIDBRNDg3IDAgNDcxIDlUNDQ1IDMyVDQzMCA3MVQ0MjIgMTE3VDQxNyAxNzNRNDE2IDE4MyA0MTYgMTg4UTQxMyAyMTQgNDExIDI0NFQ0MDcgMjg2VDQwNSAyOTlRNDAzIDI5OSAzNDQgMjYzVDIyMyAxODJUMTU0IDEyMlExNTIgMTE4IDE1MiAxMDVRMTUyIDY5IDE4MCA2OVExODMgNjkgMTg3IDY2VDE5MSA2MEwxOTIgNThWNTZRMTkyIDQxIDE2MyAyMVQxMDUgMFE5NCAwIDg0IDNUNjMgMjFUNTIgNjBRNTIgNzcgNTYgOTBUODUgMTMxVDE1NSAxOTFRMTk3IDIyMyAyNTkgMjYzVDM2MiAzMjdUNDAyIDM1MkwzOTEgNDg5UTM5MSA0OTIgMzkwIDUwNVQzODcgNTI2VDM4NCA1NDdUMzc5IDU2OFQzNzIgNTg2VDM2MSA2MDJUMzQ4IDYxMVEzNDYgNjEyIDM0MSA2MTNUMzMzIDYxNEgzMjQnLFxuICAgIDB4NTk6ICc2NSA1OTlRNjUgNjE4IDEwNyA2NTBUMjA0IDY4M1EyNjcgNjgzIDMxMiA2NDNUMzgwIDUzM1Q0MTQgMzg1VDQyNCAyMTdRNDI0IDE4NiA0MjMgMTYwVDQyMiAxMjNRNDI2IDEyMyA0NjggMTcwVDU2NyAzMDRUNjUwIDQ2OVE2NjEgNTAzIDY2MSA1MTlRNjYxIDU0NiA2MzkgNTcwUTYxNSA1OTEgNTgzIDU5MVE1NjkgNTkxIDU2OSA2MTZRNTY5IDY0MCA1ODIgNjYxVDYxMyA2ODNRNjI0IDY4MyA2MzggNjc5VDY3MSA2NjRUNzAyIDYyNVQ3MTQgNTU4UTcxNCA0NzIgNjM5IDMyOVQ0MjYgNDVRMzYxIC0yMSAyODIgLTgyVDE1NCAtMTQzUTk3IC0xNDMgNjQgLTEwNFQzMSAtMjBRMzEgNCA0NCAyNVQ3MCA0NlE3OCA0NiA4MSAzOVQ4NyAxNlQ5NyAtOVExMjcgLTUxIDE4MiAtNTFRMTg0IC01MSAxODcgLTUwSDE5MFEyMzMgLTQxIDMxNCAyNVEzMzAgMzYgMzMwIDQwUTMzNiA3OSAzMzYgMTc4UTMzNiA1MDggMjIzIDU5NFExOTkgNjE0IDE1OCA2MTlMMTQ4IDYyMEwxMzkgNjExUTExMSA1ODYgODMgNTg2UTY1IDU4NiA2NSA1OTknLFxuICAgIDB4NUE6ICc2OTQgMjIwUTcwOCAyMjAgNzA4IDIxMFE3MDggMTk1IDY5NSAxNjdUNjU4IDEwNVQ1OTMgNDJUNTAyIDNRNDkyIDEgNDU4IDFRNDAwIDEgMjkzIDExVDE1MCAyMlExMTYgMjIgOTIgMTFUNTEgMFEzNyAwIDM3IDEwUTM3IDIxIDYzIDQ0VDE3OSAxNDZUMzY3IDMxOUwzOTEgMzQzSDM0M0wyOTYgMzQ0UTI4NSAzNTAgMjg1IDM1OFEyODUgMzY1IDI4OSAzNzJUMzAwIDM4M1QzMTMgMzkyVDMyNCAzOThMMzI5IDQwMEg0NTBMNTYxIDUxOFE1OTcgNTU4IDYwNyA1NzFMNjIxIDU4N0g1OTZRNTUzIDU4OSA0ODQgNTk5VDM4MyA2MDlRMzQyIDYwOSAzMjYgNTk2VDMwMSA1NTVRMjk0IDUzMyAyNjMgNTE0VDIwOCA0OTJRMTg5IDQ5MiAxODkgNTAzUTE4OSA1MTAgMTk3IDUyOFQyMTUgNTU5UTI0OSA2MDcgMzE4IDY0NVQ0NjYgNjgzUTUwNCA2ODMgNTczIDY3M1Q2NjkgNjYyTDY5MCA2NjFRNzM0IDY4MiA3NDggNjgzUTc2NyA2ODMgNzY3IDY3M1E3NjcgNjY2IDc0NiA2NDBRNjU1IDUzMSA1NTUgNDI4TDUyOSA0MDBRNTI5IDM5OSA1NDMgMzk5UTYwNCAzOTcgNjA0IDM2NlE2MDQgMzUwIDU4NyAzMzdUNTUxIDMyMlE1NDEgMzIyIDUzOSAzMjNRNTI5IDMyOCA1MjkgMzM0UTUyOSAzMzkgNDg3IDM0Mkw0NzAgMzQzTDQ0NiAzMjBRMjcyIDE1MyAyMDAgOTZMMjM1IDk1UTI5NyA5NSAzOTIgODZUNTMzIDc0SDU1NFE1ODYgMTE2IDU5NyAxNTlRNjA0IDE3OSA2MzUgMTk5VDY5NCAyMjAnLFxufSx7XG59KTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IHRleE1hdGhpdDogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHg0MTogWy43MTYsIDAsIC43NDNdLFxuICAgIDB4NDI6IFsuNjgzLCAwLCAuNzA0XSxcbiAgICAweDQzOiBbLjcwNSwgLjAyMSwgLjcxNl0sXG4gICAgMHg0NDogWy42ODMsIDAsIC43NTVdLFxuICAgIDB4NDU6IFsuNjgsIDAsIC42NzhdLFxuICAgIDB4NDY6IFsuNjgsIDAsIC42NTNdLFxuICAgIDB4NDc6IFsuNzA1LCAuMDIyLCAuNzc0XSxcbiAgICAweDQ4OiBbLjY4MywgMCwgLjc0M10sXG4gICAgMHg0OTogWy42ODMsIDAsIC4zODZdLFxuICAgIDB4NEE6IFsuNjgzLCAuMDIxLCAuNTI1XSxcbiAgICAweDRCOiBbLjY4MywgMCwgLjc2OV0sXG4gICAgMHg0QzogWy42ODMsIDAsIC42MjddLFxuICAgIDB4NEQ6IFsuNjgzLCAwLCAuODk3XSxcbiAgICAweDRFOiBbLjY4MywgMCwgLjc0M10sXG4gICAgMHg0RjogWy43MDQsIC4wMjIsIC43NjddLFxuICAgIDB4NTA6IFsuNjgzLCAwLCAuNjc4XSxcbiAgICAweDUxOiBbLjcwNCwgLjE5NCwgLjc2N10sXG4gICAgMHg1MjogWy42ODMsIC4wMjIsIC43MjldLFxuICAgIDB4NTM6IFsuNzA1LCAuMDIyLCAuNTYyXSxcbiAgICAweDU0OiBbLjY3NywgMCwgLjcxNl0sXG4gICAgMHg1NTogWy42ODMsIC4wMjIsIC43NDNdLFxuICAgIDB4NTY6IFsuNjgzLCAuMDIyLCAuNzQzXSxcbiAgICAweDU3OiBbLjY4MywgLjAyMiwgLjk5OV0sXG4gICAgMHg1ODogWy42ODMsIDAsIC43NDNdLFxuICAgIDB4NTk6IFsuNjgzLCAwLCAuNzQzXSxcbiAgICAweDVBOiBbLjY4MywgMCwgLjYxM10sXG4gICAgMHg2MTogWy40NDIsIC4wMTEsIC41MTFdLFxuICAgIDB4NjI6IFsuNjk0LCAuMDExLCAuNDZdLFxuICAgIDB4NjM6IFsuNDQxLCAuMDEsIC40Nl0sXG4gICAgMHg2NDogWy42OTQsIC4wMTEsIC41MTFdLFxuICAgIDB4NjU6IFsuNDQyLCAuMDEsIC40Nl0sXG4gICAgMHg2NjogWy43MDUsIC4yMDQsIC4zMDddLFxuICAgIDB4Njc6IFsuNDQyLCAuMjA1LCAuNDZdLFxuICAgIDB4Njg6IFsuNjk0LCAuMDExLCAuNTExXSxcbiAgICAweDY5OiBbLjY1NiwgLjAxLCAuMzA3XSxcbiAgICAweDZBOiBbLjY1NiwgLjIwNCwgLjMwN10sXG4gICAgMHg2QjogWy42OTQsIC4wMTEsIC40Nl0sXG4gICAgMHg2QzogWy42OTQsIC4wMTEsIC4yNTZdLFxuICAgIDB4NkQ6IFsuNDQyLCAuMDExLCAuODE4XSxcbiAgICAweDZFOiBbLjQ0MiwgLjAxMSwgLjU2Ml0sXG4gICAgMHg2RjogWy40NDIsIC4wMTEsIC41MTFdLFxuICAgIDB4NzA6IFsuNDQyLCAuMTk0LCAuNTExXSxcbiAgICAweDcxOiBbLjQ0MiwgLjE5NCwgLjQ2XSxcbiAgICAweDcyOiBbLjQ0MiwgLjAxMSwgLjQyMl0sXG4gICAgMHg3MzogWy40NDIsIC4wMTEsIC40MDldLFxuICAgIDB4NzQ6IFsuNjI2LCAuMDExLCAuMzMyXSxcbiAgICAweDc1OiBbLjQ0MSwgLjAxMSwgLjUzN10sXG4gICAgMHg3NjogWy40NDMsIC4wMSwgLjQ2XSxcbiAgICAweDc3OiBbLjQ0MywgLjAxMSwgLjY2NF0sXG4gICAgMHg3ODogWy40NDIsIC4wMTEsIC40NjRdLFxuICAgIDB4Nzk6IFsuNDQxLCAuMjA1LCAuNDg2XSxcbiAgICAweDdBOiBbLjQ0MiwgLjAxMSwgLjQwOV0sXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7U1ZHQ2hhck1hcCwgQWRkUGF0aHN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7dGV4TWF0aGl0IGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvdGV4LW1hdGhpdC5qcyc7XG5cbmV4cG9ydCBjb25zdCB0ZXhNYXRoaXQ6IFNWR0NoYXJNYXAgPSBBZGRQYXRocyhmb250LCB7XG4gICAgMHg0MTogJzg1IDQ2UTExMiA0OCAxMzIgNTZUMTYxIDczVDE3NiA5MlQxODUgMTA0UTE4NSAxMDYgMzUzIDQwN1Q1MjQgNzA5UTUyNyA3MTYgNTUxIDcxNlE1NjggNzE2IDU3MiA3MTJRNTczIDcxMSA1NzQgNzEwUTU3NiA3MDggNTk0IDM4NFE2MTMgNTQgNjE3IDUySDYxOFE2MjYgNDYgNjcyIDQ2SDY4OVE2OTYgNDEgNjk2IDM2UTY5NiAxMyA2ODMgMEg2NzBRNjM5IDIgNTU3IDJRNTI2IDIgNTAwIDJUNDU5IDJUNDQxIDFRNDI1IDEgNDI1IDEwUTQyNSAxMiA0MjcgMjRRNDI4IDI3IDQyOSAzMVQ0MzAgMzZUNDMyIDQwVDQzNCA0M1Q0MzcgNDVUNDQzIDQ2VDQ1MCA0NlE1MTQgNDYgNTE0IDY5UTUxNCA3NCA1MTEgMTM2TDUwNiAyMDlIMjkyTDI2MCAxNTJRMjIyIDg0IDIyMiA3NFEyMjIgNDggMjY0IDQ2UTI4MCA0NiAyODAgMzVRMjgwIDMzIDI3OCAyMVEyNzUgNyAyNzIgNFQyNTkgMFEyNTYgMCAyMzIgMVQxNTkgMlExMzUgMiAxMDkgMVQ3OCAwUTU4IDAgNTggMTBRNTggMTQgNjEgMjZUNjYgNDBRNjggNDYgODUgNDZaTTUwNCAyNjBRNTAzIDI2MyA0OTYgNDA3VDQ4NiA1NTNMNDY2IDUyMFE0NDYgNDg2IDQwMiA0MDZMMzE4IDI1NlEzMTggMjU1IDQxMSAyNTVINTA0VjI2MCcsXG4gICAgMHg0MjogJzU3IDExUTU3IDM4IDY5IDQ1TDc0IDQ2UTc4IDQ2IDg1IDQ2VDk5IDQ2UTEzNCA0NyAxNDUgNTBUMTYyIDYyUTE2NCA2NiAyMzMgMzQ0VDMwMyA2MjZRMzAzIDYyNyAzMDIgNjI5VjYzMVEyOTYgNjM3IDI0MSA2MzdIMjIzUTIxNyA2NDIgMjE3IDY0NVQyMTkgNjY0UTIyMyA2NzcgMjI5IDY4M0g0MTFMNTkzIDY4Mkw2MDUgNjgwUTYxNiA2NzggNjI4IDY3NVQ2NjAgNjYyVDY5NCA2MzlUNzIwIDYwMVQ3MzIgNTQ3UTczMiA1MTkgNzI2IDUwM1E3MTAgNDUyIDY2MiA0MTRUNTU2IDM2MEw1NDUgMzU3TDU1NiAzNTVRNjA0IDM0NiA2NDEgMzEyVDY3OCAyMjFRNjc4IDE1NSA2MjIgOTJUNDgyIDhRNDU5IDIgNDM5IDJUMjU2IDBIMTU0SDEwNVE3NCAwIDY2IDJUNTcgMTFaTTYyOSA1NDlRNjI4IDU1MCA2MjkgNTU3VDYyNyA1NzZUNjE5IDYwMFQ2MDEgNjIyVDU3MCA2MzZRNTY0IDYzNyA0OTAgNjM3UTQ3MiA2MzcgNDU0IDYzN1Q0MjQgNjM2VDQxMSA2MzZRMzk5IDYzNSAzOTUgNjIyVDM2NCA1MDBRMzMzIDM3NyAzMzIgMzc2UTMzMiAzNzQgNDA4IDM3NEw0ODUgMzc1TDQ5NSAzNzdRNTQ3IDM5MCA1ODggNDM3VDYyOSA1NDlaTTUwNCAzMzZRNTAwIDMzNyA0MTAgMzM3UTMyMyAzMzcgMzIyIDMzNlEzMjIgMzM0IDMwNSAyNjNUMjcwIDEyMlQyNTIgNTFRMjUyIDQ3IDMzNyA0NlEzNDYgNDYgMzYxIDQ2VDM4NCA0NVE0MjUgNDUgNDU1IDU1VDUxNSA5NVE1NzQgMTU2IDU3NCAyMzVRNTc0IDI3NiA1NTUgMzA0VDUwNCAzMzYnLFxuICAgIDB4NDM6ICczOTUgLTIxUTI3OSAtMjEgMjE1IDU2VDE1MCAyNDRRMTUwIDQwMiAyNjUgNTQzUTMzOSA2MzAgNDIxIDY2N1Q1NjIgNzA0UTU5NiA3MDQgNjA0IDcwM1E2MjcgNjk4IDY0NyA2ODlUNjc5IDY2OVQ2OTkgNjQ5VDcxMSA2MzNUNzE2IDYyN0w3NTMgNjY1UTc5MCA3MDQgNzkyIDcwNFE3OTMgNzA1IDc5OCA3MDVRODEyIDcwNSA4MTIgNjk4UTgxMiA2OTQgNzgwIDU2MVE3NDQgNDIyIDc0NCA0MjFRNzQyIDQxNiA3MzkgNDE1VDcyMSA0MTNINzA1UTY5OSA0MTkgNjk5IDQyNlE3MDEgNDMyIDcwMSA0NDRRNzA1IDQ2NCA3MDUgNDkzUTcwNSA1MjQgNzAwIDU1MVQ2ODEgNjA0VDY0MyA2NDRUNTgzIDY1OVE0ODAgNjU5IDM4NyA1NzBRMzIxIDUwMiAyODcgMzk3VDI1MiAyMTNRMjUyIDEyMyAyOTcgNzRRMzQ3IDI0IDQyMSAyNFE1MDAgMjQgNTY0IDg5VDY1MyAyNDBRNjU2IDI1MyA2NTkgMjU1VDY3NyAyNTdRNzAwIDI1NyA3MDAgMjQ4UTcwMCAyNDIgNjk0IDIyMlE2ODEgMTgzIDY1NiAxNDNUNTkzIDY1VDUwNCAzVDM5NSAtMjEnLFxuICAgIDB4NDQ6ICc1NiAxMVE1NiAzOCA2OCA0NUw3MiA0NlE3NyA0NiA4NCA0NlQ5OCA0NlExMzMgNDcgMTQ0IDUwVDE2MSA2MlExNjMgNjYgMjMyIDM0NFQzMDIgNjI2UTMwMiA2MjcgMzAyIDYyOUwzMDEgNjMxUTI5NSA2MzcgMjQwIDYzN0gyMjJRMjE2IDY0MiAyMTYgNjQ1VDIxOCA2NjRRMjIyIDY3NyAyMjggNjgzSDQwM1E1ODIgNjgzIDU4OSA2ODJRNjcyIDY3NCA3MjMgNjA4VDc3NSA0NDBRNzc1IDMxMiA3MDkgMjA5VDU2MiA1NFE1MDIgMTQgNDMyIDJRNDIzIDEgMjQzIDBIMTQ4SDEwMlE3MiAwIDY0IDJUNTYgMTFaTTI1NCA1MVEyNTQgNDYgMzQ4IDQ2UTM5NSA0NiA0MjIgNTBUNDg0IDcxUTU4NSAxMjEgNjMzIDI1NVE2NzkgMzk2IDY3OSA0NzdRNjc5IDUyMiA2NjUgNTU0VDYyOSA2MDNUNTg3IDYyNlQ1NDggNjM2UTU0NyA2MzYgNTM2IDYzNlQ1MTAgNjM2VDQ4MCA2MzdRNDIwIDYzNyA0MTEgNjM2VDM5OCA2MjdRMzk2IDYyMyAzMjUgMzM5VDI1NCA1MScsXG4gICAgMHg0NTogJzI0OCA2MzRRMjE2IDYzNCAyMTQgNjM4UTIxMyA2NDEgMjEzIDY0NlEyMTMgNjc0IDIyNCA2NzhRMjI2IDY4MCA0ODEgNjgwSDczNlE3NDMgNjc2IDc0MyA2NjlRNzQzIDY2NSA3MjkgNTU3VDcxMyA0NDdRNzExIDQ0MCA2OTAgNDQwSDY3NVE2NjcgNDQ1IDY2NyA0NTRRNjY3IDQ1NSA2NzEgNDgxVDY3NSA1MzZRNjc1IDU4MyA2NTggNjA0VDU5MiA2MzJRNTc0IDYzNCA0NzUgNjM0UTQzOSA2MzQgNDI0IDYzM1Q0MDUgNjMxVDM5OSA2MjVRMzk3IDYyMiAzNjcgNTAxVDMzNiAzNzdRMzM2IDM3NiAzNjcgMzc2SDM4OFE0NTEgMzc2IDQ3NyAzODlRNDkzIDM5OSA1MDMgNDE5VDUyMCA0NjJUNTI4IDQ4OVE1MzEgNDkzIDU0OSA0OTNRNTU3IDQ5MyA1NjEgNDkyVDU2NiA0OTFUNTY5IDQ4OFQ1NzIgNDgzTDUzOSAzNTFRNTA3IDIyMSA1MDMgMjE2UTUwMyAyMTYgNTAwIDIxM0g0ODRRNDY4IDIxMyA0NjUgMjE2UTQ2MSAyMTkgNDYxIDIyNVE0NjEgMjI4IDQ2NiAyNTBUNDcyIDI5MFE0NzIgMzE3IDQ1MiAzMjNUMzY4IDMzMEgzMjRRMzIzIDMyNiAyODkgMTkxVDI1NSA1MVQzMzEgNDZIMzYwUTQxMyA0NiA0NDQgNDlUNTExIDY3VDU3MCAxMTNRNTg5IDEzNyA2MDggMTc1VDYzOCAyNDJUNjUyIDI3MlE2NTYgMjc0IDY3MCAyNzRRNjkzIDI3NCA2OTMgMjYyTDY0OCAxNDhRNTkwIDQgNTg4IDJRNTg1IDAgMzIzIDBINjFRNTQgNCA1NCAxMVE1NCAyNyA2MSA0MVE2NSA0NiA5NSA0NlExMzEgNDcgMTQyIDUwVDE1OSA2MkwxOTQgMjAwUTIyOSAzMzcgMjY0IDQ3N1QyOTkgNjIzUTI5OSA2MzAgMjkyIDYzMVQyNDggNjM0JyxcbiAgICAweDQ2OiAnMjk5IDYyM1EyOTkgNjMwIDI5MiA2MzFUMjQ3IDYzNEgyMTlRMjEzIDY0MCAyMTMgNjQyVDIxNSA2NjFRMjE4IDY3MyAyMjUgNjgwSDcyNFE3MzEgNjc2IDczMSA2NjlRNzMxIDY2NSA3MTcgNTU3VDcwMSA0NDdRNjk5IDQ0MCA2NzggNDQwSDY2M1E2NTYgNDQ0IDY1NiA0NTJRNjU2IDQ1NyA2NTkgNDg1VDY2MyA1MzhRNjYzIDU4NiA2NDQgNjA3VDU2NiA2MzNRNTY0IDYzMyA1MzUgNjMzVDQ4NiA2MzRINDU4UTQwNCA2MzQgMzk5IDYyNVEzOTYgNjIwIDM2NCA0OTJMMzMyIDM2M0gzODBRNDQ2IDM2NSA0NjQgMzczUTQ5NiAzODkgNTE0IDQ1OFE1MTggNDc3IDUyMyA0NzlRNTI3IDQ4MCA1NDEgNDgwSDU1NlE1NjMgNDc1IDU2MyA0NzBRNTYzIDQ2NyA1MzIgMzM5VDQ5OCAyMDdRNDk2IDIwMCA0NzUgMjAwSDQ2MFE0NTMgMjA3IDQ1MyAyMTJRNDU0IDIxMyA0NTYgMjI1VDQ2MSAyNTRUNDY0IDI3OFE0NjQgMzA0IDQ0NSAzMTBUMzY5IDMxN0gzMjFMMjg5IDE5MFEyNTcgNjYgMjU3IDU5UTI1NyA1NCAyNjEgNTJUMjgzIDQ4VDMzNyA0NlEzNDggNDYgMzUyIDQ2VDM2MCA0NVQzNjYgNDJUMzY4IDM3UTM2OCAzMiAzNjUgMjNRMzYwIDQgMzU1IDJRMzUyIDEgMzQyIDFRMzM2IDEgMjk3IDFUMTk5IDJRMTM4IDIgMTA2IDJUNzEgMUg2OFE1NCAxIDU0IDExUTU0IDM4IDY2IDQ1TDcwIDQ2UTc1IDQ2IDgyIDQ2VDk2IDQ2UTEzMSA0NyAxNDIgNTBUMTU5IDYyTDE5NCAyMDBRMjI5IDMzNyAyNjQgNDc3VDI5OSA2MjMnLFxuICAgIDB4NDc6ICc2MzIgLTFRNjI5IC0xIDYyMiA1VDYwNCAyNVQ1ODMgNTNRNTA4IC0yMiAzOTQgLTIyUTI4NyAtMjIgMjE5IDUyVDE1MCAyNDRRMTUwIDQwMiAyNjUgNTQzUTMzOSA2MzAgNDIxIDY2N1Q1NjIgNzA0UTU5NiA3MDQgNjA0IDcwM1E2MjcgNjk4IDY0NyA2ODlUNjc5IDY2OVQ2OTkgNjQ5VDcxMSA2MzNUNzE2IDYyN0w3NTMgNjY1UTc5MCA3MDQgNzkyIDcwNFE3OTMgNzA1IDc5OCA3MDVRODEyIDcwNSA4MTIgNjk4UTgxMiA2OTQgNzgwIDU2MVE3NDQgNDIyIDc0NCA0MjFRNzQyIDQxNiA3MzkgNDE1VDcyMSA0MTNINzA1UTY5OSA0MTkgNjk5IDQyNlE3MDEgNDMyIDcwMSA0NDRRNzA1IDQ2NCA3MDUgNDkzUTcwNSA1MjQgNzAwIDU1MVQ2ODEgNjA0VDY0MyA2NDRUNTgzIDY1OVE0ODAgNjU5IDM4NyA1NzBRMzE5IDUwMSAyODYgMzk0VDI1MiAyMDhRMjUyIDE1NiAyNjkgMTE4VDMxNCA2MVQzNjkgMzNUNDI1IDI0UTQ3MCAyNCA1MDkgNDZUNTY2IDEwNFE1NzEgMTE2IDU4MyAxNjJUNTk1IDIxNFE1OTUgMjIyIDU4MyAyMjNRNTYxIDIyNyA1MTcgMjI3SDQ5NVE0ODggMjMwIDQ4OCAyMzhRNDg4IDI1NCA0OTUgMjY4UTUwMCAyNzMgNTExIDI3M1E1MTUgMjczIDUzMiAyNzNUNTgxIDI3MlQ2NDkgMjcxUTczMSAyNzEgNzUyIDI3M0g3NjFRNzY3IDI2NyA3NjcgMjY0VDc2NSAyNDZRNzYxIDIzMyA3NTUgMjI3SDc0MlE2OTggMjI3IDY5MyAyMTNMNjM5IDRRNjM2IC0xIDYzMiAtMScsXG4gICAgMHg0ODogJzYxIDBRNTQgNyA1NCAxMVE1NCAyNyA2MSA0MVE2NSA0NiA5NSA0NlExMzEgNDcgMTQyIDUwVDE1OSA2MlExNjEgNjYgMjMwIDM0NFQzMDAgNjI2UTMwMCA2MjcgMzAwIDYyOUwyOTkgNjMxUTI5MyA2MzcgMjM4IDYzN0gyMjBRMjE0IDY0MiAyMTQgNjQ1VDIxNiA2NjRRMjIwIDY3NyAyMjYgNjgzSDIzOVEzMDcgNjgxIDM3MiA2ODFRNDgwIDY4MSA0ODYgNjgzSDQ5NlE1MDIgNjc3IDUwMiA2NzRUNTAwIDY1NlE0OTYgNjQzIDQ5MCA2MzdINDcyUTQxOCA2MzcgNDA2IDYzMFE0MDAgNjI3IDM5NiA2MTJUMzY3IDUwMFEzNjAgNDc0IDM1MiA0NDJUMzQwIDM5NUwzMzYgMzgwUTMzNiAzNzggNDY2IDM3OEg1OTZRNjU3IDYyMiA2NTcgNjI2UTY1NyA2MjcgNjU2IDYyOVY2MzFRNjUwIDYzNyA1OTUgNjM3SDU3N1E1NzEgNjQyIDU3MSA2NDVUNTczIDY2NFE1NzcgNjc3IDU4MyA2ODNINTk2UTY2NCA2ODEgNzI5IDY4MVE4MzcgNjgxIDg0MyA2ODNIODUzUTg2MCA2NzYgODYwIDY3MlE4NTggNjQ3IDg0OCA2MzdIODE5UTc4MyA2MzYgNzcyIDYzNFQ3NTYgNjIzUTc1MyA2MTggNjg0IDM0MFQ2MTQgNTdRNjE0IDUwIDYyMSA0OVQ2NjYgNDZRNjk3IDQ2IDY5OSA0MFE3MDEgMzcgNjk4IDIxUTY5MyAzIDY4OSAxUTY4NiAwIDY3NyAwUTY3MyAwIDY1NyAwVDYxMSAxVDU0NiAyUTQ1MyAyIDQyOCAwSDQxOFE0MTEgNyA0MTEgMTFRNDExIDI3IDQxOCA0MVE0MjIgNDYgNDUyIDQ2UTQ4OCA0NyA0OTkgNTBUNTE2IDYyUTUxNyA2NCA1NTAgMTk2VDU4NCAzMzFRNTg0IDMzMiA0NTQgMzMySDMyNEwyOTEgMTk3UTI1NyA2NCAyNTcgNTZRMjU3IDUwIDI2NSA0OVQzMDkgNDZRMzQwIDQ2IDM0MiA0MFEzNDQgMzcgMzQxIDIxUTMzNiAzIDMzMiAxUTMyOSAwIDMyMCAwUTMxNiAwIDMwMCAwVDI1NCAxVDE4OSAyUTk2IDIgNzEgMEg2MScsXG4gICAgMHg0OTogJzIzNSA2MzdRMjE3IDYzNyAyMTMgNjM4VDIwOSA2NDlRMjA5IDY3MyAyMjAgNjgyUTIyMiA2ODMgMjM3IDY4M1EyNzggNjgxIDM2OSA2ODFRNDA0IDY4MSA0NDEgNjgyVDQ4MyA2ODNRNDk5IDY4MyA1MDMgNjgxVDUwOCA2NzJRNTA4IDY3MCA1MDUgNjU4VDUwMCA2NDNRNDk4IDYzNyA0NjQgNjM3UTQyNSA2MzUgNDE1IDYzM1QzOTggNjIxUTM5NiA2MTggMzI3IDM0MFQyNTcgNThUMjYwIDUyVDI3OCA0OFQzMjIgNDZRMzQ5IDQ2IDM0OSAzNlEzNDkgMzEgMzQ2IDIyUTM0MiA0IDMzNyAxUTMzNiAxIDMzNCAxVDMyOSAwUTMyNSAwIDMwNyAwVDI1OCAxVDE5MCAyUTk1IDIgNjcgMEg1NlE0OSA3IDQ5IDExUTUxIDM4IDYyIDQ2SDkxUTEyOSA0NyAxNDEgNTBUMTU5IDYyUTE2MSA2NiAyMzAgMzQ0VDMwMCA2MjVRMzAwIDYzNyAyMzUgNjM3JyxcbiAgICAweDRBOiAnMzYxIDYzN1EzMzMgNjM3IDMzMSA2NDFRMzMwIDY0NCAzMzAgNjQ5UTMzMCA2NzMgMzQxIDY4MlEzNDMgNjgzIDM2MCA2ODNRNDA1IDY4MSA1MDAgNjgxUTU1MSA2ODEgNTc3IDY4MVQ2MDcgNjgyUTYyMiA2ODIgNjIyIDY3M1E2MjIgNjY1IDYxNiA2NDdRNjE0IDY0MCA2MTAgNjM5VDU4NyA2MzdRNTQ3IDYzNiA1NDEgNjI0UTUzOCA2MTggNDc3IDM3NFQ0MTMgMTI0UTM5MSA2NCAzMzMgMjJUMjA3IC0yMVQxMDkgMTJUNzggODZRNzggMTMwIDEwMSAxNTBUMTQ5IDE3MFExOTMgMTcwIDE5NiAxMjlRMTk2IDEwMCAxNzggODBUMTM3IDU4TDEzMiA1N1ExMzQgNTIgMTM4IDQ2VDE2MCAyOFQyMDUgMTZRMjQyIDE2IDI3MyA0OFQzMTkgMTIyUTMyMiAxMjkgMzgzIDM3MVQ0NDQgNjI3UTQ0NCA2MzcgMzYxIDYzNycsXG4gICAgMHg0QjogJzY2OCA2MjFRNjY4IDYzNSA2NDUgNjM3UTYyOSA2MzcgNjI5IDY0OFE2MjkgNjUwIDYzMiA2NjJUNjM3IDY3N1E2NDAgNjgyIDY1MyA2ODJRNjU3IDY4MiA2ODggNjgxVDc2NCA2ODBRNzg2IDY4MCA4MTAgNjgxVDgzOSA2ODJRODU5IDY4MiA4NTkgNjcyUTg1OSA2NTUgODUyIDY0M1E4NDkgNjM3IDgzOSA2MzdRODA0IDYzNyA3NjggNjIxVDcxNyA1OTVUNjk3IDU3OFE2OTYgNTc4IDYwMCA0OTdMNTA1IDQxN0w1MDggNDA4UTU0MyAzMTEgNTc0IDIyN1Q2MTggMTA2VDYzMiA2OVE2NDUgNDcgNjg4IDQ2SDcwN1E3MTMgMzggNzEzIDM3VDcxMCAxOVE3MDYgNiA3MDAgMEg2ODhRNjU5IDIgNTg3IDJRNTU3IDIgNTMyIDJUNDkyIDJUNDc0IDFRNDU4IDEgNDU4IDEwUTQ1OCAxMyA0NjAgMjNRNDY0IDM5IDQ2NiA0MlQ0ODAgNDZRNTI2IDQ2IDUyNiA3MlE1MjYgNzUgNDc2IDIxM0w0MjcgMzUwUTQyNiAzNTAgMzk2IDMyNVQzMzQgMjcyVDMwMiAyNDJRMzAyIDI0MSAyOTkgMjMwVDI5MCAxOTRUMjc5IDE1MFEyNTcgNjEgMjU3IDU1UTI1NyA1MCAyNjUgNDlUMzA5IDQ2SDMzN1EzNDMgNDAgMzQzIDM4VDM0MSAxOVEzMzcgNiAzMzEgMEgzMTZRMjgwIDIgMTkwIDJRMTU4IDIgMTMxIDJUODkgMlQ3MCAxUTU0IDEgNTQgMTFRNTQgMzggNjYgNDVMNzAgNDZRNzUgNDYgODIgNDZUOTYgNDZRMTMxIDQ3IDE0MiA1MFQxNTkgNjJRMTYxIDY2IDIzMCAzNDRUMzAwIDYyNlEzMDAgNjI3IDMwMCA2MjlMMjk5IDYzMVEyOTMgNjM3IDIzOCA2MzdIMjIwUTIxNCA2NDIgMjE0IDY0NVQyMTYgNjY0UTIyMCA2NzcgMjI2IDY4M0gyMzlRMzA3IDY4MSAzNzIgNjgxUTM4NiA2ODEgNDE0IDY4MVQ0NjQgNjgyTDQ4NyA2ODNINDk2UTUwMiA2NzcgNTAyIDY3NFQ1MDAgNjU2UTQ5NSA2NDEgNDkxIDYzN0g0NjJRNDI2IDYzNiA0MTUgNjM0VDM5OSA2MjNRMzk2IDYxOCAzNTggNDY3TDMyMCAzMTRRMzIxIDMxNCA0ODQgNDUyUTUxMCA0NzQgNTUyIDUwOVE2MjUgNTcwIDY0NiA1OTBUNjY4IDYyMScsXG4gICAgMHg0QzogJzYxIDBRNTQgNCA1NCAxMVE1NCAyNyA2MSA0MVE2NSA0NiA5NSA0NlExMzEgNDcgMTQyIDUwVDE1OSA2MlExNjEgNjYgMjMwIDM0NFQzMDAgNjI2UTMwMCA2MjcgMzAwIDYyOUwyOTkgNjMxUTI5MyA2MzcgMjM4IDYzN0gyMjBRMjE0IDY0MiAyMTQgNjQ1VDIxNiA2NjRRMjIwIDY3NyAyMjYgNjgzSDI0MFEyNzUgNjgxIDM3MSA2ODFRNDA3IDY4MSA0MzggNjgxVDQ4NyA2ODJUNTA5IDY4MlE1MjcgNjgyIDUyNyA2NzRRNTI3IDY3MCA1MjQgNjU5UTUyMyA2NTcgNTIzIDY1NFQ1MjIgNjQ5VDUyMCA2NDVUNTE5IDY0MlQ1MTcgNjQwVDUxNSA2MzlUNTEyIDYzOFQ1MDcgNjM3VDUwMiA2MzdUNDk0IDYzN0g0NzhRNDMzIDYzNiA0MTcgNjMzVDM5NiA2MTdRMzk1IDYxNCAzMjUgMzM0VDI1NSA1MVEyNTUgNDcgMzE5IDQ3UTM4NyA0NyA0MTAgNTJRNDU5IDY1IDQ5NCA5OFQ1NDMgMTYzVDU3MCAyMjlUNTg5IDI3M0g2MjJRNjI4IDI2NCA2MjggMjYyUTYyOCAyNTkgNTg0IDEzM1Q1MzkgNVE1MzcgMSA1MTEgMVE0ODIgMCAyOTYgMEg2MScsXG4gICAgMHg0RDogJzcyIDFRNTggMSA1OCAxMVE1OCAzMyA2NiA0MVE2OCA0NiA4NyA0NlExNTAgNTAgMTY4IDg0UTE3MiA5MSAyMzggMzU2VDMwNCA2MjZRMzA0IDYyNyAzMDQgNjI5TDMwMyA2MzFRMjk3IDYzNyAyNDIgNjM3SDIyNFEyMTggNjQyIDIxOCA2NDVUMjIwIDY2NFEyMjQgNjc3IDIzMCA2ODNIMzI2SDM5NFE0MTcgNjgzIDQyMiA2ODJUNDI5IDY3Nkw0ODAgMTI3TDUwMiAxNjNRNTIzIDE5OSA1NjAgMjYyVDY0MiA0MDBRODAxIDY2OCA4MDUgNjc2TDgxNyA2ODNIMTAwM1ExMDEwIDY3OCAxMDEwIDY3MlExMDEwIDY1MCA5OTcgNjM3SDk3OVE5MTUgNjM3IDkwNiA2MjNROTAzIDYxOCA4MzQgMzQwVDc2NCA1N1E3NjQgNTAgNzcxIDQ5VDgxNyA0Nkg4NDVRODUxIDM4IDg1MSAzN1Q4NDggMTlRODQ1IDcgODM4IDBIODI0UTc4OSAyIDcwMSAyUTY3MCAyIDY0NCAyVDYwMyAyVDU4NCAxUTU2OSAxIDU2OSAxMVE1NjkgMTMgNTcxIDI1UTU3NiA0MiA1ODEgNDVMNTg2IDQ2UTU5MCA0NiA1OTcgNDZUNjExIDQ2UTY0NiA0NyA2NTcgNTBUNjc0IDYyTDgxMyA2MTZMNjM0IDMxM1E0NTMgNyA0NTIgN1E0NDYgMCA0MjggMFE0MDkgMCA0MDcgNlE0MDUgMTAgMzc5IDMwNFQzNTEgNjA0TDI4NSAzNDhRMjIwIDgzIDIyMCA4MlEyMjAgNjUgMjMzIDU3VDI3OSA0NkgyOTVRMzAxIDM4IDMwMSAzN1QyOTggMTlRMjk1IDcgMjg4IDBIMjc1UTI0NCAyIDE3MSAyUTE0NSAyIDEyMyAyVDg4IDJUNzIgMScsXG4gICAgMHg0RTogJzYzMyA2MzdRNjI0IDYzNyA2MjEgNjM5VDYxNyA2NTBRNjE3IDY3MCA2MzAgNjgzSDY0MVE2ODIgNjgwIDczNiA2ODBRODM2IDY4MCA4NDUgNjgzSDg1M1E4NjAgNjc2IDg2MCA2NzJRODU4IDY0NyA4NDggNjM3SDgzMlE3NjQgNjMzIDc1MCA1OThRNzQ2IDU5MCA2NzMgMzAwUTY1NiAyMzAgNjM4IDE1NlQ2MTAgNDRMNjAwIDdRNTk4IDAgNTc2IDBINTU5UTU1MyA2IDQ0OCAyOTdMMzQyIDU4OFEzNDEgNTg4IDI3OSAzMzZUMjE2IDgxUTIxNiA0OSAyNzQgNDZRMjkzIDQ2IDI5NSA0MFEyOTcgMzcgMjk0IDIxUTI5MyAxOSAyOTIgMTZUMjkxIDExVDI5MCA3VDI4OSA0VDI4NyAyVDI4NCAxVDI4MCAxVDI3NSAwVDI2MyAwVDIyOSAxVDE2NyAyUTkxIDIgNzAgMEg2MVE1NCA3IDU0IDExVDU3IDI3UTYxIDQxIDY0IDQzVDgzIDQ2UTE0NiA1MCAxNjQgODRRMTY3IDkwIDIzNSAzNjJMMzAzIDYzNFEzMDAgNjM1IDI1MyA2MzdIMjIwUTIxNCA2NDMgMjE0IDY0NVQyMTYgNjY0UTIyMCA2NzcgMjI2IDY4M0gzMTRRMzg2IDY4MyAzOTcgNjgzVDQxMCA2NzdRNDEyIDY3NSA1MDEgNDI4TDU5MSAxNzlRNTkxIDE3OCA1OTIgMTgwVDU5NSAxODlUNjAwIDIwOVQ2MTAgMjQ2VDYyNCAzMDNUNjQ1IDM4NVE2OTggNTk1IDY5OCA2MDZRNjk4IDYxOCA2ODMgNjI3VDYzMyA2MzcnLFxuICAgIDB4NEY6ICcxNDkgMjM3UTE0OSAzMjYgMTg2IDQxM1QyODIgNTYzVDQxMiA2NjVUNTUyIDcwNFE2MTkgNzA0IDY2NyA2NzhUNzQxIDYxMVQ3NzcgNTI4VDc4OCA0NDRRNzg4IDMyOCA3MjggMjE5VDU3MiA0NFQzNzcgLTIyUTI3NSAtMjIgMjEyIDUwVDE0OSAyMzdaTTY4OCA0ODdRNjg4IDU3MCA2NTAgNjE3VDU0OCA2NjVRNDY3IDY2NSAzOTggNTkyVDI5MSA0MTNUMjUzIDIwM1EyNTMgMTE5IDI5MCA3MFQzODcgMjBRNDQwIDIwIDQ4OSA1MlQ1NzMgMTM1VDYzNSAyNDlUNjc1IDM3M1Q2ODggNDg3JyxcbiAgICAweDUwOiAnNjIgMFE1NSA3IDU1IDExUTU1IDI3IDYyIDQxUTY2IDQ2IDk2IDQ2UTEzMiA0NyAxNDMgNTBUMTYwIDYyUTE2MiA2NiAyMzEgMzQ0VDMwMSA2MjZRMzAxIDYyNyAzMDAgNjI5VjYzMVEyOTQgNjM3IDIzOSA2MzdIMjIxUTIxNSA2NDIgMjE1IDY0NVQyMTcgNjY0UTIyMSA2NzcgMjI3IDY4M0g0MDRINDMxSDUwMlE1NzggNjgzIDYxNSA2NzVUNjg0IDYzNlE3MjkgNTk1IDcyOSA1MzFRNzI5IDQ2MiA2NzEgMzk2VDUyNCAzMDhRNDk5IDMwMiA0MDQgMzAxSDMxOEwyODggMTgyUTI1OCA2MyAyNTggNTVUMzEwIDQ2UTM0MSA0NiAzNDMgNDBRMzQ1IDM3IDM0MiAyMVEzMzcgMyAzMzMgMVEzMzAgMCAzMjEgMFEzMTcgMCAzMDEgMFQyNTUgMVQxOTAgMlE5NyAyIDcyIDBINjJaTTYyNiA1NTVWNTYyUTYyNiA2MjAgNTUyIDYzNVE1NDYgNjM2IDQ4MSA2MzdRNDY2IDYzNyA0NTAgNjM3VDQyMyA2MzZUNDEyIDYzNlE0MDEgNjM1IDM5OCA2MjdRMzk2IDYyMiAzNjEgNDg0UTM1MyA0NTIgMzQ0IDQxNlQzMzAgMzYyTDMyNSAzNDRRMzI1IDM0MiAzOTAgMzQySDQyN1E1MjMgMzQyIDU2NyAzODZRNTk2IDQxNSA2MTEgNDczVDYyNiA1NTUnLFxuICAgIDB4NTE6ICc0NjAgLTEwN1E0NjAgLTcyIDQ2NCAtNDJUNDY4IC03TDQ1NyAtMTBRNDQ2IC0xNCA0MjQgLTE4VDM3OSAtMjJRMjc2IC0yMiAyMTMgNTBUMTQ5IDIzN1ExNDkgMzI2IDE4NiA0MTNUMjgyIDU2M1Q0MTIgNjY1VDU1MiA3MDRRNjY0IDcwNCA3MjYgNjMxVDc4OCA0NDJRNzg4IDMwNSA3MDMgMTgwUTYyNyA2NCA1MTcgMTNMNTA2IDhRNTA2IDcgNTA4IC0xMlQ1MTMgLTM4VDUyMiAtNTlUNTM4IC03OVQ1NjUgLTg1UTYwNCAtODUgNjM0IC01OVQ2NzIgMFE2NzYgMTEgNjg0IDExUTY5MyAxMSA2OTUgMlE2OTUgLTEgNjkwIC0yMFQ2NzMgLTY5VDY0NCAtMTI2VDU5OSAtMTc0VDUzOCAtMTk0UTQ2NCAtMTk0IDQ2MCAtMTEwUTQ2MCAtMTA4IDQ2MCAtMTA3Wk02ODkgNDgxUTY4OSA1NzggNjQ2IDYyMVQ1NTEgNjY1UTQ2OCA2NjUgMzkxIDU4NlEzMjEgNTEyIDI4NSAzOTlUMjQ5IDIwMlEyNDkgMTA2IDI5NSA1OFEzMTAgNDEgMzE0IDQxUTMxNSA0MSAzMTUgNDZRMzE1IDgzIDM0NCAxMThUNDIwIDE1NFE0NTAgMTU0IDQ3MyAxMzVRNDkzIDExNCA1MDAgNjlMNTAyIDU4TDUxMiA2NVE1NzEgMTEwIDYxMyAxOTJUNjcyIDM0OFQ2ODkgNDgxWk00NzIgNDlRNDcyIDExOCA0MTUgMTE4UTM5MyAxMTggMzczIDk4VDM1MyA1MVEzNTMgMTggMzg2IDE4SDM4N1E0MjQgMTggNDcyIDQwVjQ5JyxcbiAgICAweDUyOiAnNjIgMFE1NSA3IDU1IDExUTU1IDI3IDYyIDQxUTY2IDQ2IDk2IDQ2UTEzMiA0NyAxNDMgNTBUMTYwIDYyUTE2MiA2NiAyMzEgMzQ0VDMwMSA2MjZRMzAxIDYyNyAzMDAgNjI5VjYzMVEyOTQgNjM3IDIzOSA2MzdIMjIxUTIxNSA2NDIgMjE1IDY0NVQyMTcgNjY0UTIyMSA2NzcgMjI3IDY4M0gzODZRNTU0IDY4MiA1NjkgNjc5UTU3MSA2NzggNTgwIDY3NlE2NDMgNjYyIDY4MCA2MjNUNzE3IDUzM1E3MTcgNDczIDY2NyA0MjBUNTI4IDMzN0w1MzggMzMwUTU2MyAzMTQgNTc4IDI4NlQ1OTQgMjI4UTU5NCAyMTIgNTg4IDE0N1Q1ODEgNjVRNTgxIDM2IDU4OSAyNlQ2MTYgMTZINjE4UTYzNyAxNiA2NTIgMzdRNjY4IDU3IDY3NyA5NFE2NzkgMTA1IDcwMSAxMDVUNzIzIDk1UTcyMyA4OSA3MTcgNzJUNjk4IDMzVDY2MiAtNVQ2MTAgLTIyUTU1NSAtMjIgNTEzIDNUNDcxIDg4UTQ3MSAxMDcgNDg2IDE2OFQ1MDIgMjQ0UTUwMiAzMDMgNDUyIDMyMFE0NDUgMzIyIDM4MiAzMjNIMzIwTDI4OCAxOTJRMjU1IDYzIDI1NSA1NVQzMDcgNDZRMzM4IDQ2IDM0MCA0MFEzNDIgMzcgMzM5IDIxUTMzNSAzIDMzMCAxUTMyNiAwIDMyMCAwUTMxNyAwIDMwNiAwVDI2NSAxVDE5MCAyUTk5IDIgNzMgMEg2MlpNNjEyIDU1OFE2MTIgNTY2IDYxMiA1NjhUNjEwIDU4MVQ2MDMgNTk3VDU5MCA2MTFUNTY3IDYyNVQ1MzIgNjM1UTUyNiA2MzYgNDcwIDYzN1E0NTggNjM3IDQ0NSA2MzdUNDIyIDYzNlQ0MTIgNjM2UTQwMiA2MzUgMzk3IDYyN0wzOTAgNTk4UTM4MyA1NzAgMzczIDUzMlQzNTQgNDU1VDMzNyAzODlUMzMwIDM2MVEzNTYgMzYwIDM4NCAzNjBINDE1UTQ4MyAzNjAgNTI3IDM4MlE1NTcgMzk5IDU3NCA0MjRUNjA0IDQ5OFE2MTIgNTMzIDYxMiA1NTgnLFxuICAgIDB4NTM6ICcxOTggNDYwUTE5OCA1NTEgMjY5IDYyOFQ0MzIgNzA1UTUxNiA3MDUgNTU3IDY0NEw1ODMgNjczUTU4OSA2NzkgNTkzIDY4NFQ2MDAgNjkzVDYwNSA2OThUNjA5IDcwMlQ2MTEgNzA0VDYxNCA3MDVUNjE4IDcwNUg2MjBRNjMzIDcwNSA2MzMgNjk4VDYwNSA1NzdUNTczIDQ1OUw1NzAgNDU2SDU1NFE1NDYgNDU2IDU0MyA0NTZUNTM2IDQ1N1Q1MzIgNDYwVDUzMSA0NjZRNTMxIDQ2OSA1MzMgNDg5VDUzNiA1MzJRNTM2IDU3MyA1MjUgNjAwVDQ5NiA2NDBUNDYyIDY1N1Q0MjcgNjYyUTM2OSA2NjIgMzI1IDYxMlQyODEgNTAzUTI4MSA0NzUgMjkwIDQ1OFQzMTggNDMwVDM1NiA0MTVUNDA3IDQwMVQ0NjMgMzgzUTUwNiAzNjAgNTIyIDMyM1Q1MzggMjU4VjI0NFE1MzggMTQxIDQ2NSA2MFQzMDAgLTIyUTE5OCAtMjIgMTUyIDQxTDE0MyAzMVExMzcgMjUgMTI2IDEyVDEwNiAtMTBUOTUgLTIxTDkyIC0yMlE4OCAtMjIgODYgLTIyUTgxIC0yMiA3OCAtMjBUNzQgLTE2Vi0xNFE3NCAtMTEgMTMyIDIyMVExMzQgMjI3IDE1NSAyMjdIMTcxUTE3NyAyMjEgMTc3IDIxNVExNzcgMjEyIDE3NSAyMDVUMTcxIDE4MlQxNjkgMTQ3UTE3MSA5OSAxOTUgNzBUMjQ2IDMzVDMwNiAyNVEzNTggMjUgNDAwIDcwVDQ1MyAxNjlRNDU1IDE4MCA0NTUgMjAzVjIxMFE0NTUgMjYzIDQxNCAyODVRNDA5IDI4OCAzNDcgMzA1UTI3MSAzMjggMjU0IDMzOVEyMzkgMzUwIDIyNCAzNzFRMTk4IDQwOSAxOTggNDYwJyxcbiAgICAweDU0OiAnMTc4IDQzN1ExNzMgNDQyIDE3MSA0NDZRMTcxIDQ1MSAyMzggNjU0UTI0MyA2NzAgMjUwIDY3N0g2ODFINzYyUTc5MiA2NzcgNzk5IDY3NlQ4MDYgNjY3UTgwNiA2NjEgNzg4IDU1M1Q3NjggNDQ0UTc2OCA0MzcgNzQ2IDQzN1E3MjcgNDM3IDcyMyA0NDVRNzIzIDQ1MCA3MjkgNDkyVDczNiA1NjJRNzM2IDU4OSA3MjggNjAyVDY5MyA2MjRRNjc1IDYzMCA2MjIgNjMwSDU5NVE1NzUgNjMwIDU3MSA2MjlUNTY0IDYyM1E1NjIgNjIxIDQ5MiAzNDJUNDIyIDU5UTQyMiA0OCA1MDIgNDZINTQyUTU0OCAzOCA1NDggMzdUNTQ1IDE5UTU0MSA2IDUzNSAwSDUxN1E0NzUgMiAzNTcgMlEzMTUgMiAyNzkgMlQyMjMgMlQxOTggMVExNzkgMSAxNzkgOVExNzkgMTQgMTgyIDI0UTE4NyA0MiAxOTAgNDRRMTk0IDQ2IDIwNiA0NkgyMzJRMjg5IDQ3IDMwMSA0OVQzMjYgNjVMMzk1IDM0NFE0NjUgNjE5IDQ2NSA2MjZRNDY1IDYyOSA0NjIgNjI5UTQ1NiA2MzEgNDExIDYzMVEzNjQgNjMxIDMzNiA2MjVUMjg4IDU5N1QyNTUgNTQ5VDIyNCA0NjdRMjE1IDQ0MiAyMTAgNDM3SDE3OCcsXG4gICAgMHg1NTogJzYzNiA2MzdRNjI3IDYzNyA2MjQgNjM5VDYyMCA2NTBRNjIwIDY3MCA2MzMgNjgzSDY0NFE3MDIgNjgxIDc1MyA2ODFRNzYwIDY4MSA3NzIgNjgxVDc5NiA2ODFUODIwIDY4MlQ4MzggNjgzSDg0NUg4NTNRODYwIDY3NiA4NjAgNjcyUTg1OCA2NDcgODQ4IDYzN0g4MzJRNzY0IDYzMyA3NTAgNTk4UTc0NSA1ODggNjk4IDQwMFQ2NDggMjA0UTYyNyAxNDAgNTg0IDg2UTQ4NCAtMjIgMzc4IC0yMlEzMDAgLTIyIDI0NyAzMVQxOTQgMTY3UTE5NCAxNzYgMTk0IDE4MlQxOTYgMTk4VDIwMCAyMThUMjA3IDI0OFQyMTcgMjg4VDIzMSAzNDZUMjUwIDQyMlEzMDAgNjE4IDMwMCA2MjZRMzAwIDYyNyAzMDAgNjI5TDI5OSA2MzFRMjkzIDYzNyAyMzggNjM3SDIyMFEyMTQgNjQyIDIxNCA2NDVUMjE2IDY2NFEyMjAgNjc3IDIyNiA2ODNIMjM5UTMwNyA2ODEgMzcyIDY4MVE0ODAgNjgxIDQ4NiA2ODNINDk2UTUwMiA2NzcgNTAyIDY3NFQ1MDAgNjU2UTQ5NiA2NDMgNDkwIDYzN0g0NzJRNDE4IDYzNyA0MDYgNjMwUTQwMCA2MjcgMzk0IDYwM1QzNDQgNDEwUTI5OSAyMzIgMjkyIDE5OFQyODQgMTM1UTI4NCAxMDIgMjk0IDc4VDMyMiA0NFQzNTUgMjlUMzg3IDI0UTQ1NSAyNCA1MTUgNzRUNjA0IDIxMVE2MDUgMjE1IDY1MyA0MDRUNzAxIDYwN1E3MDEgNjE4IDY4NiA2MjdUNjM2IDYzNycsXG4gICAgMHg1NjogJzY2NyA2MzdRNjU3IDYzNyA2NTQgNjM5VDY1MCA2NTBRNjUwIDY3MCA2NjMgNjgzSDY3NVE3MDQgNjgxIDc3MiA2ODFRNzkzIDY4MSA4MTggNjgyVDg0NyA2ODNRODY4IDY4MyA4NjggNjcyUTg2OCA2NzAgODY1IDY1OFQ4NjAgNjQzUTg1NyA2MzcgODQ4IDYzN1E3ODUgNjM3IDc0OSA1ODdMMzk0IC0xNVEzODcgLTIyIDM2NiAtMjJRMzQ2IC0yMiAzNDIgLTE2UTM0MSAtMTMgMzEzIDMwM1EyODUgNjIyIDI4NSA2MjNRMjgzIDYzMSAyNzMgNjM0VDIyOSA2MzdRMjA1IDYzNyAyMDUgNjQ4UTIwNSA2NTQgMjA4IDY2NlQyMTcgNjgyUTIxOSA2ODMgMjMwIDY4M1EyNzYgNjgwIDMyOSA2ODBRNDQ0IDY4MCA0NTYgNjgzSDQ2NlE0NzIgNjc3IDQ3MiA2NzRUNDcwIDY1NlE0NjYgNjQzIDQ2MCA2MzdINDQ4UTM4NCA2MzcgMzg0IDYxNVEzODUgNjEyIDQwNiAzNzFUNDI3IDEyNlE0MjcgMTI1IDQ5NSAyNDBUNjMyIDQ3M1Q3MDQgNTk2UTcwNyA2MDQgNzA3IDYwOVE3MDcgNjMzIDY2NyA2MzcnLFxuICAgIDB4NTc6ICcyMzQgNjM3SDIyNlEyMDUgNjM3IDIwNSA2NDhRMjA1IDY3MyAyMTYgNjgyUTIxOCA2ODMgMjMxIDY4M1EyNjUgNjgxIDM0MCA2ODFRMzcxIDY4MSA0MDQgNjgyVDQ0MyA2ODNRNDU4IDY4MyA0NjIgNjgxVDQ2NyA2NzJRNDY3IDY3MCA0NjQgNjU4VDQ1OSA2NDNRNDU3IDYzNyA0MzQgNjM3UTQwNyA2MzYgMzk0IDYzMlQzNzggNjIzVDM3NiA2MTNRMzc2IDU4OSAzODUgMzc3VDM5NCAxNDlMNTExIDM2MVE1NDIgNDE5IDU5NiA1MTlMNjEzIDU1MUw2MTIgNTg1UTYxMCA2MjEgNjEwIDYyNFE2MDggNjM3IDU1OSA2MzdINTU1UTUzNyA2MzcgNTM3IDY0N1E1MzcgNjU0IDU0MCA2NjRRNTQ0IDY3NyA1NTAgNjgzSDU2MVE2MDAgNjgwIDY1NiA2ODBRNzcxIDY4MCA3ODMgNjgzSDc5MlE3OTggNjc3IDc5OCA2NzVUNzk2IDY1OFE3OTIgNjQzIDc5MCA2NDBUNzc4IDYzN0g3NzRRNzIxIDYzNyA3MDggNjIwTDcxNyAzODVRNzI2IDE1MCA3MjcgMTQ5UTcyNyAxNDggNzUyIDE5M1Q4MTIgMzAzVDg4MiA0MzNUOTQyIDU0NlQ5NjkgNTk2UTk3MCA2MDAgOTcwIDYwNlE5NzAgNjEwIDk2OSA2MTNUOTY2IDYyMFQ5NjEgNjI1VDk1NSA2MjhUOTQ5IDYzMVQ5NDEgNjMzVDkzNCA2MzRUOTI3IDYzNlQ5MjAgNjM3UTkwMyA2MzcgOTAzIDY0OFE5MDMgNjUwIDkwNSA2NjRROTA5IDY3NyA5MTUgNjgzSDkyOFE5NjAgNjgxIDEwMzEgNjgxUTEwNTAgNjgxIDEwNzMgNjgxVDExMDEgNjgyUTExMjQgNjgyIDExMjQgNjcyUTExMjQgNjU1IDExMTcgNjQzUTExMTQgNjM3IDExMDQgNjM3UTEwODUgNjM3IDEwNjkgNjMyVDEwNDMgNjE4VDEwMjYgNjAzVDEwMTQgNTg4TDEwMDkgNTgwTDY4NyAtMTZRNjgxIC0yMiA2NjAgLTIyUTY0MyAtMjIgNjM3IC0xNlE2MzUgLTE0IDYyNyAyMjNRNjE3IDQ0MSA2MTcgNDY0TDYwMiA0NDFRNTc4IDM5NyA0ODcgMjI4UTQ1NiAxNzEgNDIzIDExMFQzNzIgMTdUMzU1IC0xNVEzNDggLTIyIDMyOCAtMjJRMzEyIC0yMiAzMDggLTIwVDMwMyAtOVEzMDMgLTUgMjkxIDMxMFQyNzcgNjI3UTI3MyA2MzYgMjM0IDYzNycsXG4gICAgMHg1ODogJzY4NCAwUTY3MCAwIDYzNCAxVDU2OSAyUTUxMiAyIDQ4MiAyVDQ0OSAxUTQzMyAxIDQzMyAxMFE0MzMgMTEgNDM1IDI1UTQzNyAzNCA0MzggMzdUNDQyIDQzVDQ0OCA0NVQ0NTkgNDZUNDc2IDQ5UTUwNiA1OCA1MDYgNjRRNTA2IDY1IDQ2NyAxNzlUNDI2IDI5NUwzODIgMjQ0UTMzOSAxOTQgMjk1IDE0MlQyNDkgODZRMjQ1IDc5IDI0NSA3MlEyNDUgNDggMjc5IDQ2UTI5MyA0NiAyOTMgMzJRMjkzIDEzIDI4MCAwSDI2OFEyMDYgMiAxNTEgMlE3MCAyIDY0IDBRNTAgMCA1MCAxMVE1MCAxNSA1MyAyN1E1NyA0MSA2MCA0M1Q3OCA0NlExNTQgNDkgMjA1IDEwMFEyMDcgMTAzIDMxMiAyMjVMNDExIDM0MUw0MDcgMzUzUTQwNCAzNjAgMzgxIDQyOFQzMzYgNTYwVDMxMCA2MjdRMzAxIDYzNiAyNTUgNjM3SDIyOVEyMjMgNjQzIDIyMyA2NDVUMjI1IDY2NFEyMjkgNjc3IDIzNSA2ODNIMjQ2UTI4OCA2ODAgMzQ2IDY4MFE0NjIgNjgwIDQ3NyA2ODNINDg3UTQ5MyA2NzcgNDkzIDY3NFQ0OTEgNjU2UTQ4OCA2NDQgNDg1IDY0MVQ0NzEgNjM3UTQ2MSA2MzUgNDU0IDYzNVE0MTkgNjI2IDQyMSA2MTlRNDIxIDYxNyA0NTMgNTI0VDQ4NiA0MzBUNTU0IDUwOVQ2MjQgNTkzUTYzMSA2MDQgNjMxIDYxMVE2MzEgNjIyIDYyMSA2MjlUNTk4IDYzN1E1ODMgNjM3IDU4MyA2NDhRNTgzIDY1MCA1ODUgNjYwUTU4OSA2NzYgNTkxIDY3OVQ2MDIgNjgzUTYwNiA2ODMgNjM3IDY4MlQ3MTUgNjgwUTc0MiA2ODAgNzcxIDY4MVQ4MDQgNjgyUTgyNSA2ODIgODI1IDY3MlE4MjUgNjUwIDgxNyA2NDJRODE0IDYzNyA3OTcgNjM3UTczOSA2MzQgNzAwIDYwOFE2ODQgNTk3IDY1OSA1NjlUNTA1IDM4OUw1MDEgMzg0TDU1NyAyMjJRNjEyIDYxIDYxNiA1N1E2MjUgNDcgNjcxIDQ2UTY5MSA0NiA2OTcgNDVUNzA0IDM2UTcwNCAzNSA3MDIgMjNRNzAxIDE5IDcwMCAxNFQ2OTkgN1Q2OTYgM1Q2OTIgMVQ2ODQgMCcsXG4gICAgMHg1OTogJzIzMiA2MzdRMTk4IDYzNyAxOTggNjQ3UTE5OCA2NTEgMjAxIDY2NFQyMTAgNjgyUTIxMiA2ODMgMjIzIDY4M1EyNjkgNjgwIDMyNSA2ODBRNDQzIDY4MCA0NTUgNjgzSDQ2NVE0NzIgNjc2IDQ3MiA2NzJRNDcyIDY1NiA0NjUgNjQyUTQ2MCA2MzcgNDQxIDYzN1EzOTUgNjM0IDM5NSA2MjNRMzk1IDYyMSA0MzggNDc4VDQ4MiAzMzRUNTgzIDQ2MFQ2ODggNTkxUTY4OCA1OTMgNjk0IDYwMVQ3MDAgNjE3UTcwMCA2MzcgNjY4IDYzN0g2NjZRNjU1IDYzNyA2NTUgNjQ4UTY1NSA2NTQgNjU4IDY2NFE2NjAgNjcyIDY2MCA2NzNUNjYzIDY3OFQ2NjggNjgyVDY3NyA2ODNRNjgwIDY4MyA3MDQgNjgyVDc3NiA2ODBRODAxIDY4MCA4MjggNjgxVDg1OCA2ODJRODc1IDY4MiA4NzUgNjczUTg3NSA2NjkgODcyIDY1N1Q4NjcgNjQzUTg2NSA2MzcgODQ4IDYzN1E3ODggNjM0IDc0OSA1OTdRNzMzIDU4MSA2MDggNDI0TDQ4NyAyNzNMNDYxIDE3MFE0NTQgMTQ1IDQ0OCAxMThUNDM4IDc2VDQzNCA2MFE0MzQgNTQgNDM2IDUyVDQ1MiA0OFQ0OTYgNDZINTE0UTUyMCA0MSA1MjAgMzhUNTE4IDE5UTUxNCA2IDUwOCAwSDQ5NVE0MjcgMiAzNjQgMlEzNTAgMiAzMjMgMlQyNzIgMEgyNTBIMjQxUTIzNCA3IDIzNCAxMVEyMzQgMjcgMjQxIDQxUTI0NSA0NiAyNzUgNDZRMzEyIDQ3IDMyMyA1MFQzNDAgNjRRMzQwIDY1IDM0NCA3OVQzNTUgMTIwVDM2OCAxNzFMMzkzIDI3NEwzNDEgNDQ4UTI4OCA2MjIgMjg2IDYyNlEyNzggNjM2IDIzMiA2MzcnLFxuICAgIDB4NUE6ICcyMDMgNDUyUTIwMyA0NTUgMjM2IDU2NVQyNzAgNjc3UTI3MCA2ODEgMjc0IDY4MVEyNzYgNjgzIDQ4OCA2ODNINjk5UTcwNCA2NzggNzA0IDY3NVE3MDQgNjYzIDY5NyA2NDlRNjk3IDY0NyA0NDkgMzQ4TDIwMSA1MEwyNjYgNDlIMzAxUTQ0MiA0OSA0OTUgMTE2UTUyNSAxNTUgNTU2IDI1MVE1NjMgMjc0IDU2NSAyNzhUNTc5IDI4Mkg1ODVRNjA5IDI4NSA2MDkgMjcxUTYwOSAyNzAgNTcwIDE0MlQ1MjggOFQ1MTggMVQ0NjYgMEgzMDNRMjUzIDAgMTk3IDBUMTMxIC0xUTExMiAtMSAxMDIgLTFUODcgMVQ4MSAzVDgwIDhRODAgMzAgODkgMzlROTAgNDEgMjA0IDE3OFQ0NDYgNDcwVDU3NSA2MjZMNTg0IDYzN0g1MTJINTA0SDQ3NVE0NDYgNjM3IDQyNiA2MzVUMzc4IDYyNFQzMzAgNTk3VDI4OSA1NDZUMjU0IDQ2N1EyNDcgNDQ2IDI0MyA0NDRRMjM5IDQ0MiAyMjYgNDQyUTIwMyA0NDIgMjAzIDQ1MicsXG4gICAgMHg2MTogJzQxOCA1M1E0MTggMjYgNDM4IDI2UTQ2NiAyNiA0OTQgMTMxUTUwMCAxNTEgNTA0IDE1MlE1MDcgMTUzIDUxNiAxNTNINTIxUTUzMSAxNTMgNTM0IDE1M1Q1NDAgMTUwVDU0MyAxNDRRNTQzIDE0MSA1NDAgMTI2VDUyOSA4OFQ1MDkgNDNUNDc3IDVUNDM0IC0xMVE0MDQgLTExIDM4MyAzVDM1NCAzMFQzNDcgNDhIMzQ2UTM0NSA0NyAzNDIgNDVUMzM3IDQwUTI4MiAtMTEgMjI4IC0xMVExNzIgLTExIDEzNyAzNFQxMDEgMTQ2UTEwMSAyNjAgMTc3IDM1MVQzMzMgNDQyUTM0MyA0NDIgMzUyIDQ0MVQzNjkgNDM3VDM4MiA0MzFUMzkzIDQyNVQ0MDIgNDE3VDQwOSA0MTBUNDE0IDQwMlQ0MTkgMzk2UTQyMyA0MDYgNDM2IDQxNFQ0NjEgNDIyUTQ3NSA0MjIgNDg0IDQxM1Q0OTQgMzk1UTQ5NCAzODQgNDU5IDI0NFQ0MjAgODhRNDE4IDgwIDQxOCA1OFY1M1pNMzk3IDMyM1EzOTcgMzQ0IDM4MiAzNzRUMzMzIDQwNVEzMDIgNDA1IDI3MSAzNzJRMjQ5IDM0OSAyMzUgMzE2VDIwMyAyMTVRMTg0IDEzNSAxODQgMTA4VjEwMFY5NFExODQgNTQgMjA3IDM1UTIxOCAyNiAyMzUgMjZRMjc5IDI2IDMzMCA5MVEzNDMgMTA5IDM0NiAxMThUMzcyIDIxN1EzOTcgMzE3IDM5NyAzMjMnLFxuICAgIDB4NjI6ICcxNTggNjgzUTE2MyA2ODMgMjIzIDY4OFQzMDAgNjk0UTMxMiA2OTQgMzEyIDY4NVQyNzkgNTQ0UTI0MyA0MDUgMjQzIDQwM0wyNTYgNDEyUTI2OCA0MjIgMjkyIDQzMlQzMzggNDQyUTM5NSA0NDIgNDMxIDM5OFQ0NjcgMjg0UTQ2NyAxNzUgMzkzIDgyVDIyOSAtMTFRMTc1IC0xMSAxNDIgMzJUMTA4IDE0MlExMDggMTc2IDExNSAyMDdUMTY2IDQxMlExNzcgNDU4IDE5MCA1MTBUMjA5IDU4OFQyMTYgNjE2UTIxNiA2MjkgMjA5IDYzMlQxNzAgNjM3SDE0OVExNDMgNjQzIDE0MyA2NDVUMTQ1IDY2NFExNTAgNjgzIDE1OCA2ODNaTTE3OCAxMDlRMTc4IDI3IDIzNCAyN1EyNDcgMjcgMjU0IDI5UTI5NSA0NCAzMjMgOTRRMzQzIDEyOSAzNjMgMjA4VDM4NCAzMzJRMzg0IDM1NCAzODIgMzYxUTM2OSA0MDUgMzMyIDQwNVEyODIgNDA1IDIyOCAzMjZMMjIyIDMxN0wyMDUgMjUwUTE3OCAxNDIgMTc4IDEwOScsXG4gICAgMHg2MzogJzI1NyAtMTBRMTgzIC0xMCAxNDMgMzdUMTAzIDE1NVExMDMgMjU3IDE3MyAzNDFUMzM3IDQ0MFEzNDEgNDQxIDM0OCA0NDFIMzU4UTQyMSA0NDEgNDQ1IDQxNVQ0NjkgMzU2UTQ2OSAzMjAgNDUwIDMwNVQ0MTAgMjg5UTM5MiAyODkgMzgxIDI5OVQzNzAgMzI1UTM3MCAzNjIgNDA0IDM3OEw0MTQgMzgzUTM5MiA0MDIgMzY1IDQwNVEzMjIgNDA1IDI4NSAzNzVUMjI3IDI5NFEyMTcgMjcxIDIwMiAyMTNUMTg3IDExOVExODcgMjcgMjYzIDI3UTI5OSAyNyAzMzAgNDBRMzYxIDUxIDM4NiA3MVQ0MjQgMTA2VDQ0MCAxMjFRNDQ0IDEyMSA0NTUgMTEwVDQ2NiA5NlE0NjYgOTIgNDU4IDgxVDQzMiA1NFQzOTAgMjRUMzMxIDBUMjU3IC0xMCcsXG4gICAgMHg2NDogJzQxOCA1NFE0MTggMjYgNDM4IDI2UTQ2NiAyNiA0OTQgMTMxUTUwMCAxNTEgNTA0IDE1MlE1MDcgMTUzIDUxNiAxNTNINTIxSDUyNlE1NDMgMTUzIDU0MyAxNDRRNTQzIDE0MyA1NDEgMTI5UTUzMSA5MSA1MjEgNjVUNDg3IDE0VDQzNCAtMTFUMzgzIDNUMzU0IDMwVDM0NyA0OEgzNDZRMzQ1IDQ3IDM0MiA0NVQzMzcgNDBRMjgyIC0xMSAyMjggLTExUTE3MiAtMTEgMTM3IDM0VDEwMSAxNDZRMTAxIDI1NSAxNzQgMzQ4VDMzNyA0NDFRMzU0IDQ0MSAzNjggNDM3VDM5MCA0MjdUNDA0IDQxNFQ0MTMgNDA0VDQxNyA0MDBMNDcxIDYxNlE0NzEgNjI5IDQ2NCA2MzJUNDI1IDYzN0g0MDRRMzk4IDY0MyAzOTggNjQ1VDQwMCA2NjRRNDA1IDY4MyA0MTMgNjgzUTQxOCA2ODMgNDc4IDY4OFQ1NTUgNjk0UTU2NyA2OTQgNTY3IDY4NlE1NjcgNjc2IDQ5NSAzODlMNDE5IDg2UTQxOCA4MCA0MTggNjFWNTRaTTM5NyAzMjNRMzk3IDMyOSAzOTQgMzQwVDM4NSAzNjdUMzY1IDM5NFQzMzMgNDA1UTMwMiA0MDUgMjcxIDM3MlEyNDkgMzQ5IDIzNSAzMTZUMjAzIDIxNVExODQgMTM1IDE4NCAxMDhWMTAwUTE4NCA3MSAxOTEgNTZRMjA0IDI2IDIzNSAyNlEyNjcgMjYgMzAwIDU3VDM0NCAxMTJRMzQ3IDExNyAzNzIgMjE3VDM5NyAzMjMnLFxuICAgIDB4NjU6ICcxMDcgMTY2UTEwNyAyMzAgMTMxIDI4M1QxOTMgMzY5VDI3MCA0MjBUMzQ1IDQ0MVEzNDYgNDQxIDM1MiA0NDFUMzYxIDQ0MkgzNjRRNDA5IDQ0MiA0MzkgNDE4VDQ3MCAzNTVRNDcwIDI3MCAzNjYgMjM5UTMwOCAyMjMgMjE4IDIyM0gyMDVRMTg5IDE2NCAxODkgMTI1UTE4OSA4MyAyMDYgNTVUMjYxIDI3UTMwOSAyNyAzNTMgNTBUNDI2IDEwOVE0MzYgMTIxIDQ0MCAxMjFUNDUzIDExMVQ0NjYgOTdRNDY5IDkyIDQ1NSA3N1E0MjQgNDEgMzcyIDE2VDI1OCAtMTBRMTg0IC0xMCAxNDYgNDFUMTA3IDE2NlpNNDE2IDMzM1Q0MTYgMzU0VDQwMSAzOTBUMzYwIDQwNVEzMjIgNDA1IDI5MiAzODRUMjQ2IDMzNlQyMjMgMjg4VDIxNSAyNjFRMjE1IDI2MCAyNDAgMjYwUTI2MiAyNjEgMjc2IDI2MlQzMTQgMjY2VDM1MyAyNzVUMzg0IDI5MVQ0MDggMzE3JyxcbiAgICAweDY2OiAnMzUxIDYwOFEzNTEgNjQyIDM4OSA2NjFRMzY4IDY2OCAzNjUgNjY4UTM1OCA2NjggMzUyIDY2NFEzNDkgNjYzIDM0NyA2NjFUMzQyIDY1NFQzMzcgNjQ3VDMzMyA2MzdUMzMwIDYyN1QzMjcgNjE0VDMyNCA2MDFUMzIxIDU4N1QzMTggNTcxTDI5MSA0MzJRMjkxIDQzMSAzNDMgNDMxSDM5NFE0MDAgNDI2IDQwMCA0MjNUMzk4IDQwNFEzOTQgMzkwIDM4OSAzODZMMzM1IDM4NUgyODJMMjU1IDI0NlEyMTIgMjAgMTg5IC01MVExMzYgLTE5OSA1OCAtMjA0UTIyIC0yMDQgMCAtMTg1VC0yMyAtMTM0US0yMyAtMTAwIC0zIC04NVQzNyAtNjlRNTQgLTY5IDY1IC04MFQ3NiAtMTA4UTc2IC0xMTUgNzUgLTExOVE3MCAtMTM0IDYxIC0xNDRUNDYgLTE1OEwzOSAtMTYxUTM5IC0xNjIgNDIgLTE2M1Q1MCAtMTY2VDYxIC0xNjhRNzcgLTE2OCA5MSAtMTQ1UTk4IC0xMjggMTA1IC05NUwxMjUgLTFRMTQ1IDkwIDE0NiA5OFExNDkgMTA5IDE2MyAxODBUMTg5IDMxN1QyMDIgMzg0VDE1OCAzODVIMTE0UTEwOCAzOTAgMTA4IDM5M1QxMTAgNDEyUTExMyA0MjQgMTIwIDQzMUgxNjVRMjExIDQzMSAyMTEgNDMzUTIxMyA0MzUgMjE5IDQ3M1QyMzcgNTYxVDI2NiA2MzlRMjgyIDY2NyAzMTAgNjg2VDM2NyA3MDVRNDAyIDcwNSA0MjYgNjg2VDQ1MCA2MzVRNDUwIDYwMCA0MzAgNTg1VDM5MCA1NjlRMzczIDU2OSAzNjIgNTgwVDM1MSA2MDgnLFxuICAgIDB4Njc6ICcxMDMgMTYzUTEwNiAyNjMgMTczIDM0N1QzMjAgNDQxUTMyMiA0NDEgMzI5IDQ0MVQzNDEgNDQyUTM4NyA0MzkgNDE5IDM5OFE0MjAgMzk5IDQyMCA0MDBRNDIxIDQwMiA0MjUgNDA2VDQ0MCA0MTZUNDY0IDQyMlE0NzYgNDIxIDQ4NSA0MTNUNDk0IDM5NlE0OTQgMzg2IDQ2NSAyNjhUNDA3IDM4VDM3NyAtNzdRMzY1IC0xMjMgMzEwIC0xNjRUMTc5IC0yMDVRNDYgLTIwNSA0NiAtMTM5UTQ2IC0xMTQgNjQgLTk3VDEwNiAtNzlRMTI3IC03OSAxMzYgLTkxVDE0NiAtMTE1UTE0NiAtMTI3IDE0MSAtMTM4VDEzMCAtMTU1VDEyNCAtMTYyVDEyNSAtMTYzUTEzMyAtMTY2IDE3MCAtMTY4UTIwMCAtMTY4IDIxNyAtMTYyUTI0MiAtMTUzIDI2NCAtMTMwVDI5NyAtNzhRMjk4IC03NCAzMDUgLTQ2VDMyMCAxMFQzMjcgMzhRMzI2IDM4IDMxNyAzMVQyOTEgMTVUMjU2IDJRMjQ5IDEgMjMxIDFRMTgyIDEgMTQzIDM4VDEwMyAxNjNaTTM5OCAzMjRRMzk4IDMzMCAzOTUgMzQ2VDM3NSAzODNUMzMyIDQwNVEzMzAgNDA1IDMyNiA0MDVUMzIwIDQwNFEyOTEgMzk2IDI2MyAzNjVRMjMwIDMyNCAyMDggMjM5VDE4NSAxMTVRMTg1IDM4IDIzOCAzOFEyNTggMzggMjc5IDUwVDMxMiA3N1QzMzYgMTA2TDM0OCAxMjJRMzQ5IDEyNSAzNzMgMjIzVDM5OCAzMjQnLFxuICAgIDB4Njg6ICczOTggNDRRMzk4IDI2IDQxNCAyNlE0MzEgMjYgNDUxIDQzUTQ3NyA3MSA0OTYgMTM2UTQ5OSAxNDggNTAxIDE1MFQ1MTUgMTUzSDUyMVE1MzEgMTUzIDUzNCAxNTNUNTQxIDE1MFQ1NDQgMTQzUTU0NCAxMzMgNTM0IDEwNVQ0OTYgNDFUNDMyIC04UTQyNCAtMTAgNDA4IC0xMFEzNzAgLTEwIDM0OCAxMlQzMjYgNzJRMzI2IDkzIDM0MiAxMzVRMzk3IDI4OCAzOTcgMzQ5UTM5NyAzNjcgMzk2IDM3MlEzODYgNDA1IDM1NyA0MDVRMjgzIDQwNSAyMjggMzEwUTIxNyAyOTAgMjEyIDI3NFQxODAgMTUyUTE1MyA0MiAxNDggMjZUMTM1IDNRMTIxIC0xMSAxMDIgLTExUTg5IC0xMSA4MCAtM1Q2OSAxOUwyMTYgNjE2UTIxNiA2MjkgMjA5IDYzMlQxNzAgNjM3SDE0OVExNDMgNjQzIDE0MyA2NDVUMTQ1IDY2NFExNTAgNjgzIDE1OCA2ODNRMTYzIDY4MyAyMjMgNjg4VDMwMCA2OTRRMzEyIDY5NCAzMTIgNjg1UTMxMiA2NzQgMjc3IDUzOVEyNDEgMzk1IDI0MSAzOTNRMjQyIDM5NCAyNDkgMzk5VDI1OSA0MDdUMjcxIDQxNVQyODUgNDI0VDMwMCA0MzFUMzE4IDQzN1QzMzggNDQwVDM2MiA0NDJRNDIzIDQ0MiA0NDkgNDEwVDQ3NSAzMzhRNDc1IDI5MCA0MzcgMTc4VDM5OCA0NCcsXG4gICAgMHg2OTogJzIzNCA1OTlRMjM0IDYyMCAyNTEgNjM4VDI5MiA2NTZRMzA2IDY1NiAzMTkgNjQ3VDMzMiA2MTdRMzMyIDU5NCAzMTMgNTc3VDI3MyA1NjBRMjYwIDU2MCAyNDcgNTY5VDIzNCA1OTlaTTc1IDI4N1E3NSAyOTIgODIgMzEzVDEwMyAzNjJUMTQyIDQxM1QxOTYgNDQxSDIxNFEyNDggNDQxIDI3MCA0MTlUMjkzIDM1N1EyOTIgMzM4IDI4OSAzMzBUMjQ1IDIwOFExOTMgNzIgMTkzIDQ2UTE5MyAyNiAyMDkgMjZRMjI4IDI2IDI0NyA0M1EyNzMgNzEgMjkyIDEzNlEyOTUgMTQ4IDI5NyAxNTBUMzExIDE1M0gzMTdRMzI3IDE1MyAzMzAgMTUzVDMzNyAxNTBUMzQwIDE0M1EzNDAgMTMzIDMzMCAxMDVUMjkyIDQxVDIyOCAtOFEyMjAgLTEwIDIwNCAtMTBRMTYwIC0xMCAxNDEgMTVUMTIyIDcxUTEyMiA5OCAxNzEgMjI3VDIyMSAzODRRMjIxIDM5NiAyMTggNDAwVDIwMyA0MDVRMTc1IDQwMyAxNTYgMzc0VDEyOCAzMTJUMTE2IDI3OVExMTUgMjc4IDk3IDI3OEg4MVE3NSAyODQgNzUgMjg3JyxcbiAgICAweDZBOiAnMjY2IDYwMFEyNjYgNjIyIDI4MyA2MzlUMzIyIDY1NlEzNDAgNjU2IDM1MiA2NDVUMzY0IDYxNlEzNjQgNTk2IDM0NyA1NzhUMzA1IDU2MFEyOTEgNTYwIDI3OSA1NjlUMjY2IDYwMFpNNzUgMjg3UTc1IDI5MyA4NiAzMTZUMTE3IDM2OVQxNjggNDIwVDIzNiA0NDJRMjgyIDQ0MiAzMDQgNDE1VDMyNyAzNThWMzMyTDI3OCAxMzRRMjY5IDk4IDI2MCA2MFQyNDYgM1QyMzYgLTM2VDIyNyAtNjZUMjIwIC04NVQyMTMgLTEwMVQyMDQgLTExNFExODEgLTE1MCAxMzkgLTE3N1Q0NiAtMjA0UTggLTIwNCAtMTIgLTE4NlQtMzIgLTE0MFEtMzIgLTExMiAtMTQgLTk2VDI3IC03OVE0OCAtNzkgNTcgLTkxVDY3IC0xMTRRNjcgLTE0NiAzOCAtMTY2UTQyIC0xNjggNDkgLTE2OFE3NSAtMTY4IDk4IC0xNDdUMTMwIC0xMDhUMTQ2IC03MVExNTAgLTU5IDE5OSAxMzhUMjUwIDM0NlEyNTMgMzU5IDI1MyAzNzNRMjUzIDQwNSAyMzAgNDA1UTIwNiA0MDUgMTg0IDM4NlQxNDkgMzQ1VDEyNiAzMDFMMTE3IDI4MFExMTUgMjc4IDk4IDI3OEg4MVE3NSAyODQgNzUgMjg3JyxcbiAgICAweDZCOiAnMTU4IDY4M1ExNjMgNjgzIDIyMyA2ODhUMzAwIDY5NFEzMTIgNjk0IDMxMiA2ODZRMzEyIDY3OSAyNjIgNDc4TDIxMSAyNzNRMjEyIDI3MiAyMTkgMjc2VDI0OCAyOTlUMjk2IDM0OVEzMTcgMzcxIDMyOCAzODJUMzYwIDQxMFQzOTkgNDM0VDQzOSA0NDJRNDYyIDQ0MiA0ODAgNDI3VDQ5OCAzNzNRNDk4IDMyOSA0NzkgMzEzVDQzNyAyOTZRNDIwIDI5NiA0MDkgMzA1VDM5OCAzMzFRMzk4IDM1NyA0MTMgMzcyVDQ0NSAzOTFRNDU0IDM5MiA0NDggMzk5UTQ0NSA0MDUgNDMxIDQwNVE0MDggNDA1IDM3NyAzODVRMzUxIDM2OCAzMTQgMzI3VDI1MCAyNjFRMjQzIDI1NyAyNDMgMjU0UTI0OSAyNTQgMjc5IDI0M1QzMjggMjIwUTM2NiAxOTIgMzY2IDE0NlEzNjYgMTMxIDM2MSAxMDlUMzU1IDYyVjU0UTM1NSAyNiAzNzYgMjZRMzc5IDI2IDM4NyAyOFE0MjAgMzYgNDQzIDEzMFE0NDkgMTUxIDQ1NCAxNTJRNDU3IDE1MyA0NjUgMTUzSDQ3MFE0ODQgMTUzIDQ4OCAxNTJUNDkyIDE0NFE0OTIgMTQxIDQ4OSAxMjZUNDc2IDg4VDQ1NCA0MlQ0MjAgNVQzNzIgLTExUTMzMSAtMTEgMzA2IDE3VDI4MCA4OFEyODAgMTAwIDI4MyAxMTlUMjg3IDE0NlEyODcgMTcyIDI2NSAxOTBUMjIxIDIxNVQxOTggMjIwUTE5NyAyMjAgMTczIDEyMVExNTIgMzcgMTQ4IDI0VDEzNSAzUTEyMSAtMTEgMTAyIC0xMVE4OSAtMTEgODAgLTNUNjkgMTlMMjE2IDYxNlEyMTYgNjI5IDIwOSA2MzJUMTcwIDYzN0gxNDlRMTQzIDY0MyAxNDMgNjQ1VDE0NSA2NjRRMTUwIDY4MyAxNTggNjgzJyxcbiAgICAweDZDOiAnMTYyIDYxUTE2MiAyNiAxODMgMjZRMjExIDI2IDIzOSAxMzFRMjQ1IDE1MSAyNDkgMTUyUTI1MiAxNTMgMjYxIDE1M0gyNjZIMjcxUTI4OCAxNTMgMjg4IDE0NFEyODggMTQzIDI4NiAxMjlRMjc2IDkxIDI2NiA2NVQyMzIgMTRUMTc5IC0xMVExNDQgLTExIDExNiAxMlQ4NyA4MVE4NyA5NiA4OCAxMDJMMjE2IDYxNlEyMTYgNjI5IDIwOSA2MzJUMTcwIDYzN0gxNDlRMTQzIDY0MyAxNDMgNjQ1VDE0NSA2NjRRMTUwIDY4MyAxNTggNjgzUTE2MyA2ODMgMjIzIDY4OFQzMDAgNjk0UTMxMiA2OTQgMzEyIDY4NlEzMTIgNjc2IDI0MCAzODlMMTY0IDg2UTE2MiA3NCAxNjIgNjEnLFxuICAgIDB4NkQ6ICc4MSAyNzhRNzUgMjg0IDc1IDI4OVE3NyAyOTkgODkgMzM4UTEwMSAzNzMgMTE0IDM5NlQxNDIgNDI4VDE2NiA0MzlUMTg2IDQ0MkgxODlRMjI1IDQ0MCAyNTEgNDE3UTI2NiA0MDEgMjcxIDM4NEwyNzUgMzc0TDI4NiAzODZRMzQyIDQ0MiA0MTQgNDQyUTQyOCA0NDIgNDQwIDQ0MFQ0NjEgNDM1VDQ3OSA0MjdUNDkzIDQxOFQ1MDMgNDA3VDUxMSAzOTdUNTE2IDM4N1Q1MjAgMzc4VDUyMyAzNzBMNTI0IDM2NlE1NDYgMzk1IDU4MyA0MThUNjY3IDQ0MlE3MjkgNDQyIDc1NSA0MTFUNzgyIDMzOFE3ODIgMjkwIDc0MyAxNzhUNzA0IDQ1UTcwNCAyNiA3MjAgMjZRNzczIDI2IDgwMiAxMzZRODA1IDE0OCA4MDcgMTUwVDgyMiAxNTNIODI4UTgzOCAxNTMgODQxIDE1M1Q4NDggMTUwVDg1MSAxNDNRODUxIDEzNyA4NDMgMTE1VDgyMSA2M1Q3NzggMTJUNzE1IC0xMFE2NzEgLTEwIDY1MiAxNlQ2MzIgNzFRNjMyIDg4IDY2OCAxOTFUNzA0IDM0OVE3MDQgMzY3IDcwMyAzNzJRNjkzIDQwNSA2NjQgNDA1UTYzNyA0MDUgNjEzIDM5M1Q1NzEgMzYwVDU0NyAzMjlUNTM0IDMwOVE1MjMgMjkwIDUxOCAyNzRUNDg3IDE1MVE0NTUgMjQgNDUyIDE2UTQzOCAtMTEgNDA4IC0xMVQzNzYgMThRMzc2IDI2IDQxMSAxNjdUNDQ3IDMxNFE0NDkgMzI1IDQ0OSAzNDZRNDQ5IDM3MiA0NDQgMzg0UTQzMSA0MDUgNDA4IDQwNVEzMzQgNDA1IDI3NiAzMDVRMjY2IDI4OSAyNjIgMjczVDIzMSAxNTFRMTk5IDI0IDE5NiAxNlExODIgLTExIDE1MiAtMTFUMTIwIDE4UTEyMCAyNiAxNTkgMTgyVDIwMCAzNDdRMjAyIDM2MSAyMDIgMzcyUTIwMiA0MDUgMTgxIDQwNVExNjggNDA1IDE1OSAzOTFRMTQ1IDM3NCAxMzIgMzI4VDExNyAyODBUOTggMjc4SDgxJyxcbiAgICAweDZFOiAnNDQ5IDQ0UTQ0OSAyNiA0NjUgMjZRNDgyIDI2IDUwMiA0M1E1MjggNzEgNTQ3IDEzNlE1NTAgMTQ4IDU1MiAxNTBUNTY2IDE1M0g1NzJRNTgyIDE1MyA1ODUgMTUzVDU5MiAxNTBUNTk1IDE0M1E1OTUgMTMzIDU4NSAxMDVUNTQ3IDQxVDQ4MyAtOFE0NzUgLTEwIDQ1OSAtMTBRNDIxIC0xMCAzOTkgMTJUMzc3IDcyUTM3NyA5MyAzOTMgMTM1UTQ0OCAyODggNDQ4IDM0OVE0NDggMzY3IDQ0NyAzNzJRNDM3IDQwNSA0MDggNDA1UTM4MSA0MDUgMzU3IDM5M1QzMTUgMzYwVDI5MSAzMjlUMjc4IDMwOVEyNjcgMjkwIDI2MiAyNzRUMjMxIDE1MVExOTkgMjQgMTk2IDE2UTE4MiAtMTEgMTUyIC0xMVQxMjAgMThRMTIwIDIzIDE1OSAxODFRMTk5IDM0MyAxOTkgMzQ2UTIwMiAzNjAgMjAyIDM3MlEyMDIgNDA2IDE4MyA0MDZRMTYzIDQwNiAxNDggMzc0UTE0MiAzNjAgMTM1IDMzOFQxMjQgMjk5VDExNyAyODBUOTggMjc4SDgxUTc1IDI4NCA3NSAyODdRNzYgMjkzIDc4IDMwM1Q5MCAzNDFUMTEwIDM4OFQxNDEgNDI1VDE4NCA0NDJRMTk1IDQ0MiAyMDQgNDQxVDIyMSA0MzZUMjM1IDQyOVQyNDcgNDIxVDI1NiA0MTJUMjYyIDQwM1QyNjcgMzk0VDI3MSAzODdUMjczIDM4MUwyNzQgMzc4VjM3NEwyODcgMzg3UTM0MiA0NDIgNDE0IDQ0MlE0NzQgNDQyIDUwMCA0MTBUNTI2IDMzOFE1MjYgMjkwIDQ4OCAxNzhUNDQ5IDQ0JyxcbiAgICAweDZGOiAnMTAzIDE1NVExMDMgMjY2IDE4NSAzNTRUMzY2IDQ0MlE0MzUgNDQyIDQ3NiAzOTRUNTE3IDI3NVE1MTcgMTY5IDQzNiA3OVQyNTUgLTExUTE5NCAtMTEgMTQ5IDMyVDEwMyAxNTVaTTE4NyAxMTlRMTg3IDY3IDIwOSA0N1QyNjAgMjZRMjkwIDI2IDMyMSA0N1EzNTQgNjggMzgwIDExM1Q0MjYgMjYwUTQzMiAyOTEgNDMyIDMxNVE0MzIgMzYxIDQwOCAzODVRMzg4IDQwNSAzNTggNDA1UTMxOSA0MDUgMjgzIDM3NFQyMjcgMjk0UTIxNyAyNzEgMjAyIDIxM1QxODcgMTE5JyxcbiAgICAweDcwOiAnODEgMjc4UTc1IDI4NCA3NSAyODdROTMgMzc5IDEzMSA0MTdRMTU0IDQ0MiAxODkgNDQyUTIyMiA0NDAgMjQzIDQyM1QyNzIgMzgyTDI4MCAzOTBRMzM1IDQ0MiAzODkgNDQyUTQ0NiA0NDIgNDgyIDM5OFQ1MTggMjg0UTUxOCAyMTIgNDgwIDEzN1QzNzUgMTlRMzIxIC0xMCAyOTEgLTEwSDI4MkgyNzhRMjM3IC0xMCAyMDQgMjhMMjAyIDMyTDE4MSAtNTFRMTYwIC0xMzUgMTYwIC0xMzlRMTYwIC0xNDcgMjA1IC0xNDhIMjMwUTIzNiAtMTU1IDIzNiAtMTU3VDIzMyAtMTc1UTIzMCAtMTg3IDIyNyAtMTkwVDIxNCAtMTk0UTIxMSAtMTk0IDIwMiAtMTk0VDE2OSAtMTkzVDEwOCAtMTkyUTQwIC0xOTIgMjEgLTE5NEgxM1E2IC0xODcgNiAtMTgzVDkgLTE2N1ExMyAtMTUzIDE2IC0xNTFUMzkgLTE0OFE3MyAtMTQ3IDc4IC0xMzZRODIgLTEyOCAxMzkgMTA0UTE5OSAzMzcgMTk5IDM0N1EyMDIgMzYyIDIwMiAzNzJRMjAyIDQwNiAxODIgNDA2UTE2OSA0MDYgMTU5IDM5MVExNDUgMzc0IDEzMiAzMjhUMTE3IDI4MFQ5OCAyNzhIODFaTTIyMSAxMTFRMjM0IDI2IDI4NiAyNlEzMDcgMjYgMzM2IDQ3VDM4NSAxMTZRMzk4IDE0NyA0MTYgMjE3VDQzNSAzMzJRNDM1IDM1NCA0MzMgMzYxUTQyMCA0MDUgMzgzIDQwNVEzMzMgNDA1IDI3OSAzMjZMMjczIDMxN0wyMjEgMTExJyxcbiAgICAweDcxOiAnMjI4IC0xMVExNzIgLTExIDEzNyAzM1QxMDEgMTQ3UTEwMSAyMDUgMTI1IDI2NlQyMDEgMzc3VDMxOCA0NDFRMzIyIDQ0MiAzMzMgNDQyUTM4OCA0NDIgNDIwIDM5NEw0MjkgNDAzUTQzOSA0MTMgNDU1IDQyM1Q0ODEgNDM3VDQ5NCA0NDJRNDk4IDQ0MiA1MDEgNDM5VDUwNCA0MzRRNTA0IDQyNSA0MzUgMTQ5UTM2NCAtMTM1IDM2NCAtMTM5UTM2NCAtMTQ3IDQwOSAtMTQ4SDQzNFE0NDAgLTE1NSA0NDAgLTE1N1Q0MzcgLTE3NVE0MzMgLTE5MSA0MjkgLTE5M1E0MjUgLTE5NCA0MTggLTE5NFE0MTYgLTE5NCA0MDYgLTE5NFQzNzIgLTE5M1QzMDkgLTE5MlEyNTkgLTE5MiAyMzMgLTE5MlQyMDQgLTE5M1ExOTAgLTE5MyAxOTAgLTE4NFExOTAgLTE4MSAxOTIgLTE2OVExOTYgLTE1MyAxOTkgLTE1MVQyMTkgLTE0OFEyNjYgLTE0OCAyNzcgLTE0MVEyODMgLTEzNyAzMDUgLTUxTDMyNSAyOUwzMTYgMjJRMjcwIC0xMSAyMjggLTExWk0zOTcgMzIzUTM5NyAzMjkgMzk0IDM0MFQzODUgMzY3VDM2NSAzOTRUMzMzIDQwNVEzMDIgNDA1IDI3MSAzNzJRMjQ5IDM0OSAyMzUgMzE2VDIwMyAyMTVRMTg0IDEzNSAxODQgMTA4VjEwMFExODQgNzEgMTkxIDU2UTIwNCAyNiAyMzUgMjZRMjY3IDI2IDMwMCA1N1QzNDQgMTEyUTM0NyAxMTcgMzcyIDIxN1QzOTcgMzIzJyxcbiAgICAweDcyOiAnODEgMjc4UTc1IDI4NCA3NSAyODlRNzcgMzAxIDg5IDMzOVExMjIgNDQyIDE4MyA0NDJRMjE5IDQ0MiAyNDEgNDI1VDI3MSAzODRMMjgzIDM5NlEzMjcgNDQyIDM4NCA0NDJRNDI0IDQ0MiA0NTQgNDIxVDQ4NCAzNjJRNDg0IDMyNyA0NjQgMzEyVDQyNCAyOTZRNDA3IDI5NiAzOTYgMzA1VDM4NSAzMzFRMzg1IDM1MiAzOTQgMzY1VDQxNCAzODRUNDI0IDM5MFE0MDkgNDA1IDM3OCA0MDVRMzIyIDQwNSAyNzYgMzE1TDI2OCAzMDBMMjM0IDE2MVEyMDAgMjUgMTk2IDE2UTE4MiAtMTEgMTUyIC0xMVQxMjAgMThRMTIwIDIzIDE1OSAxODFRMTk5IDM0MyAxOTkgMzQ2UTIwMiAzNjAgMjAyIDM3MlEyMDIgNDA1IDE4MiA0MDVRMTY0IDQwNSAxNTAgMzc3VDEyOCAzMTZUMTE3IDI4MFExMTUgMjc4IDk4IDI3OEg4MScsXG4gICAgMHg3MzogJzE1MyAyODVRMTUzIDM0OSAxOTcgMzk1VDMxMSA0NDJRMzU1IDQ0MiAzODYgNDIwVDQxOCAzNTZRNDE4IDMyMSA0MDEgMzA4VDM2NSAyOTRRMzM2IDI5NCAzMzEgMzI2UTMzMSAzMzYgMzM0IDM0NVQzNDMgMzU5VDM1MyAzNjhUMzYyIDM3NEwzNjYgMzc2UTM2NSAzNzkgMzYyIDM4M1QzNDQgMzk2VDMwOCA0MDRRMjY1IDQwNCAyNDYgMzc3VDIyNiAzMjVUMjQ0IDI4OVQyODcgMjc1VDMzOSAyNThUMzgzIDIxMlEzOTUgMTg4IDM5NSAxNjNRMzk1IDEzMiAzNzkgOTVUMzMzIDMyUTI3OSAtMTEgMjA3IC0xMVExNTQgLTExIDExNSAxM1Q3NiA4NlE3NiAxMDggODMgMTIzVDEwMiAxNDVUMTIxIDE1M1QxMzUgMTU2UTE1NCAxNTYgMTY0IDE0NVQxNzUgMTE3UTE3NSA4MiAxNDIgNjZMMTMyIDYyUTEzMSA2MiAxMzEgNjFRMTMxIDU3IDEzOSA0OVQxNjYgMzRUMjEwIDI2UTI1MCAyNiAyNzcgNDRUMzEyIDgzVDMyMSAxMjNRMzIxIDE1MyAzMDEgMTY2VDI0OCAxODVUMjA0IDE5OFExNzYgMjExIDE2MiAyNDFRMTUzIDI1OCAxNTMgMjg1JyxcbiAgICAweDc0OiAnOTQgMzg1UTg3IDM5MiA4NyAzOTVRODcgMzk5IDkwIDQxMVQ5NSA0MjVROTcgNDMwIDEwMyA0MzBUMTQ5IDQzMUgxOTZMMjE1IDUxMVEyMTggNTIxIDIyMiA1MzlUMjI4IDU2NVQyMzQgNTg1VDI0MiA2MDNUMjUxIDYxNVQyNjQgNjIzVDI4MSA2MjZRMzExIDYyNiAzMTUgNTk3UTMxNSA1OTEgMjk2IDUxM1QyNzUgNDMzUTI3NSA0MzEgMzIwIDQzMUgzNjZRMzczIDQyNCAzNzMgNDIwUTM3MyAzOTggMzYwIDM4NUgyNjNMMTg5IDg2UTE4OCA4MCAxODggNjFWNTRRMTg4IDI5IDIwMSAyN1EyMTMgMjMgMjI5IDMwUTI1MyAzNyAyNzYgNjZUMzE2IDEzOFEzMjEgMTQ5IDMyNCAxNTFUMzQyIDE1M0gzNDdRMzY0IDE1MyAzNjQgMTQ2VDM2MCAxMzBRMzMxIDYzIDI5MCAyNlQyMDIgLTExUTE1OCAtMTEgMTM1IDE4VDExMSA4MVExMTEgOTMgMTI5IDE2OFQxNjYgMzE0TDE4NCAzODNRMTg0IDM4NSAxMzkgMzg1SDk0JyxcbiAgICAweDc1OiAnNzUgMjg3UTc1IDI5OSA4OSAzMzNUMTM1IDQwNFQyMDUgNDQxUTI0NiA0NDEgMjY5IDQyMFQyOTMgMzU3UTI5MiAzMzggMjU5IDI0NVQyMjUgOTVRMjI1IDI2IDI3NCAyNlEzMDEgMjYgMzI0IDQzVDM1OCA3N1QzNjkgOTlRMzY5IDEwMiA0MDYgMjQ5VDQ0NiA0MDRRNDYwIDQzMSA0OTAgNDMxVDUyMiA0MDJRNTIyIDM5NCA0ODUgMjQ1VDQ0NiA4OVE0NDMgNzQgNDQzIDU2UTQ0MyAyOCA0NjEgMjZRNDg3IDI2IDUwNyA4NlE1MjQgMTMwIDUyNCAxNDZRNTI0IDE0NyA1MzAgMTUzSDU0N1E1NzAgMTUzIDU3MCAxNDRRNTcwIDEzOCA1NjEgMTA5VDU0NCA2MlE1MzAgMjkgNTEyIDEyUTQ5MiAtMTEgNDU0IC0xMVE0MjkgLTkgNDEwIDJUMzg1IDIzVDM3NiA0MUwzNjMgMjhRMzUwIDE2IDMyNSAzVDI2OSAtMTBRMjA0IC0xMCAxNzYgMjVUMTQ4IDEwOFExNDggMTYxIDE4NCAyNjJUMjIxIDM4M1EyMjEgNDA1IDIwNiA0MDVRMTc4IDQwNSAxNTggMzc1VDEyOCAzMTNUMTE2IDI3OVExMTUgMjc4IDk3IDI3OEg4MVE3NSAyODQgNzUgMjg3JyxcbiAgICAweDc2OiAnMzg3IDM4NlEzODcgNDA3IDQwNiA0MjVUNDQ1IDQ0M1E0NjYgNDQzIDQ3OSA0MjNUNDkyIDM3MVE0OTIgMzMwIDQ3MyAyNTNRNDExIDE4IDMwNyAtOFEyOTggLTEwIDI3OSAtMTBRMjA4IC0xMCAxNzkgMjZUMTQ5IDExNFExNDkgMTYyIDE4NSAyNjFUMjIxIDM4NFEyMjEgNDA1IDIwNiA0MDVRMTc3IDQwNSAxNTcgMzc1VDEyOCAzMTNUMTE2IDI3OVExMTUgMjc4IDk3IDI3OEg4MVE3NSAyODQgNzUgMjg3VDc5IDMwNFQ5MyAzNDJUMTE5IDM4OFQxNTggNDI1VDIxMCA0NDFIMjE4UTI0MyA0NDEgMjY4IDQyMVQyOTMgMzU3UTI5MiAzMzcgMjU5IDI0NVQyMjYgMTAyUTIyNiAyNiAyODUgMjZRMzI4IDI2IDM2MCA3MlQ0MjIgMjM3UTQyOSAyNjUgNDI5IDI5MFE0MjggMzI0IDQwOCAzNDlUMzg3IDM4NicsXG4gICAgMHg3NzogJzU5MSAzODZRNTkxIDQwNyA2MTAgNDI1VDY0OSA0NDNRNjcwIDQ0MyA2ODMgNDIzVDY5NiAzNzFRNjk2IDMyNyA2NzIgMjMyVDYyMSA4NVE1NzUgLTExIDQ5MyAtMTFRNDY5IC0xMSA0NDkgLTZUNDE4IDhUMzk4IDI0VDM4NiAzOEwzODIgNDNRMzQ3IC0xMCAyOTMgLTEwSDI4NlEyMjEgLTEwIDE4NiAyMVQxNTAgMTE1UTE1MCAxNjQgMTg1IDI2MlQyMjEgMzg0UTIyMSA0MDUgMjA2IDQwNVExNzcgNDA1IDE1NyAzNzVUMTI4IDMxM1QxMTYgMjc5UTExNSAyNzggOTcgMjc4SDgxUTc1IDI4NCA3NSAyODdUNzkgMzA0VDkzIDM0MlQxMTkgMzg4VDE1OCA0MjVUMjEwIDQ0MUgyMThRMjQzIDQ0MSAyNjggNDIxVDI5MyAzNTdRMjkyIDMzNiAyNjAgMjQ2VDIyNyAxMDhRMjI3IDI2IDI5MiAyNkgyOTVRMzMyIDI2IDM2MSA5M0wzNjYgMTAzVjExOVEzNjYgMTIyIDM2NyAxMzNUMzY5IDE1MFEzNzIgMTY3IDQwMSAyODJUNDMzIDQwNFE0NDYgNDMxIDQ3NyA0MzFRNTA3IDQzMSA1MDkgNDAyUTUwOSAzOTYgNTAwIDM1OFQ0NzQgMjU0VDQ0NiAxNDBRNDQ0IDEyNiA0NDQgMTA0VjkyUTQ0NCA2NiA0NTkgNDZUNTAyIDI2SDUwNVE1MjcgMjggNTQ1IDQzVDU3NyA4OFQ2MDIgMTQ5VDYyMyAyMjZRNjMzIDI2NSA2MzMgMjkwUTYzMiAzMjQgNjEyIDM0OVQ1OTEgMzg2JyxcbiAgICAweDc4OiAnMjc1IDM1NlEyNzUgMzgzIDI2MiAzOTRUMjMzIDQwNVExOTYgNDA1IDE2NiAzNzFUMTIxIDI4OVExMTkgMjgwIDExNiAyNzlUOTggMjc4SDgxUTc3IDI4MiA3NiAyODNUNzUgMjg4VDc4IDMwMFE4OCAzMzIgMTA5IDM2M1QxNTMgNDExUTE5NSA0NDIgMjM1IDQ0MlEzMDYgNDQyIDMzMyAzODZRMzczIDQ0MiA0MjcgNDQyUTQ2MSA0NDIgNDg3IDQyMVQ1MTMgMzY0VDQ5NCAzMTJUNDUzIDI5NlE0MzYgMjk2IDQyNSAzMDVUNDE0IDMzMVE0MTQgMzUyIDQyNCAzNjZUNDQ2IDM4Nkw0NTYgMzkwUTQ0OCA0MDQgNDIxIDQwNEg0MThRMzgyIDQwNCAzNTggMzQxUTM1NSAzMzIgMzI4IDIyN1QyOTggMTA1UTI5NSA5MCAyOTUgNzVRMjk1IDI2IDMzOSAyNlEzNjUgMjYgMzg4IDQzVDQyNCA4MlQ0NDQgMTIzVDQ1MSAxNDZMNDU3IDE1M0g0NzRRNDkwIDE1MyA0OTMgMTUyVDQ5NiAxNDRRNDk2IDEzMyA0ODYgMTEwVDQ1NiA1OFQ0MDQgMTBUMzMzIC0xMVEyNzYgLTExIDIzNyA0NVExOTcgLTExIDE0NiAtMTFRMTA4IC0xMSA4MyAxMFQ1OCA2N1E1OCA5OSA3NiAxMTdUMTE5IDEzNVExMzYgMTM1IDE0NyAxMjRUMTU4IDk2UTE1OCA4OSAxNTcgODVRMTQ5IDU3IDEyNSA0NUwxMTUgNDFRMTI1IDI2IDE1MSAyNlExNzEgMjYgMTg3IDQ1VDIxNCA5M1EyMTcgMTAyIDI0NCAyMTBUMjczIDMzMFEyNzUgMzM5IDI3NSAzNTYnLFxuICAgIDB4Nzk6ICc3NSAyODdRNzUgMjk5IDg5IDMzM1QxMzUgNDA0VDIwNSA0NDFRMjQ2IDQ0MSAyNjkgNDIwVDI5MyAzNTdRMjkyIDMzOCAyNTkgMjQ1VDIyNSA5NVEyMjUgMjYgMjc0IDI2UTMyNSAyNiAzNjcgOTNMNDA1IDI0NVE0NDIgMzkzIDQ0NiA0MDRRNDYwIDQzMSA0OTAgNDMxVDUyMiA0MDJRNTIyIDQwMCA0MTYgLTI0UTM4OSAtMTAyIDMyNyAtMTUzVDE5NiAtMjA1UTE1MiAtMjA1IDEyMiAtMTgxVDkxIC0xMTlROTEgLTg0IDExMCAtNjdUMTUyIC00OVExNzAgLTQ5IDE4MCAtNjBUMTkxIC04N1ExOTEgLTEwOCAxNzQgLTEyOFExNjcgLTEzNCAxNTcgLTEzOFQxNDYgLTE0NFExNTUgLTE1MyAxNTkgLTE1NlQxNzMgLTE2M1QxOTkgLTE2N1EyMjkgLTE2NyAyNTUgLTE0OVQyOTcgLTEwNVQzMjUgLTUyVDM0MiAtNlQzNDcgMTVRMzE1IC0xMCAyNjkgLTEwUTIwNCAtMTAgMTc2IDI1VDE0OCAxMDhRMTQ4IDE2MSAxODQgMjYyVDIyMSAzODNRMjIxIDQwNSAyMDYgNDA1UTE3OCA0MDUgMTU4IDM3NVQxMjggMzEzVDExNiAyNzlRMTE1IDI3OCA5NyAyNzhIODFRNzUgMjg0IDc1IDI4NycsXG4gICAgMHg3QTogJzE2MCAzMTdRMTU4IDMxNyAxNTUgMzE3UTEzNiAzMTcgMTM2IDMyNFExMzYgMzUxIDE3MSAzOTZUMjYwIDQ0MlEyOTIgNDQyIDMyMSA0MTBUMzY1IDM3NUgzNjlRMzg0IDM3NSA0MDQgNDA4TDQyNSA0NDFRNDI3IDQ0MiA0NDQgNDQySDQ2MFE0NjYgNDM2IDQ2NiA0MzRRNDY2IDQxOSA0MjYgMzY3UTM4NyAzMTQgMjk0IDIyMlQxNzggMTA1TDE3MCA5NUwxODEgOTRRMTk4IDkzIDIzNiA4MVQyOTUgNjhRMzI4IDY4IDM1NiA4OVQzOTUgMTQxUTM5OCAxNTAgNDAxIDE1MVQ0MTkgMTUzUTQ0MSAxNTMgNDQxIDE0NFE0NDEgMTEwIDM5NCA1MFQyODIgLTExUTI1MSAtMTEgMjIxIDIzVDE3MSA1N1ExNTcgNTcgMTQzIDQ3VDEyMSAyNlQxMDQgM1Q5NSAtMTBROTMgLTExIDc2IC0xMUg2MFE1NCAtNSA1NCAtMlE1NCAzIDYxIDE0UTEwMyA4OCAyMzMgMjE1UTM0OSAzMjkgMzQ5IDMzOEwzMDIgMzUxUTI2OSAzNjIgMjQ3IDM2MlEyMjcgMzYyIDIxMiAzNTZUMTkyIDM0MlQxODMgMzI3VDE3OCAzMjBRMTc1IDMxNyAxNjAgMzE3Jyxcbn0se1xufSk7XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge0NoYXJNYXAsIENoYXJPcHRpb25zfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5cbmV4cG9ydCBjb25zdCB0ZXhPbGRzdHlsZUJvbGQ6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xuICAgIDB4MzA6IFsuNDYsIC4wMTcsIC41NzVdLFxuICAgIDB4MzE6IFsuNDYxLCAwLCAuNTc1XSxcbiAgICAweDMyOiBbLjQ2LCAwLCAuNTc1XSxcbiAgICAweDMzOiBbLjQ2MSwgLjIxMSwgLjU3NV0sXG4gICAgMHgzNDogWy40NjksIC4xOTQsIC41NzVdLFxuICAgIDB4MzU6IFsuNDYxLCAuMjExLCAuNTc1XSxcbiAgICAweDM2OiBbLjY2LCAuMDE3LCAuNTc1XSxcbiAgICAweDM3OiBbLjQ3NiwgLjIxMSwgLjU3NV0sXG4gICAgMHgzODogWy42NjEsIC4wMTcsIC41NzVdLFxuICAgIDB4Mzk6IFsuNDYxLCAuMjEsIC41NzVdLFxuICAgIDB4NDE6IFsuNzUxLCAuMDQ5LCAuOTIxLCB7aWM6IC4wNjgsIHNrOiAuMjI0fV0sXG4gICAgMHg0MjogWy43MDUsIC4wMTcsIC43NDgsIHtzazogLjE2fV0sXG4gICAgMHg0MzogWy43MDMsIC4wMiwgLjYxMywge3NrOiAuMTZ9XSxcbiAgICAweDQ0OiBbLjY4NiwgMCwgLjg5Miwge3NrOiAuMDk1OH1dLFxuICAgIDB4NDU6IFsuNzAzLCAuMDE2LCAuNjA3LCB7aWM6IC4wMiwgc2s6IC4xMjh9XSxcbiAgICAweDQ2OiBbLjY4NiwgLjAzLCAuODE0LCB7aWM6IC4xMTYsIHNrOiAuMTI4fV0sXG4gICAgMHg0NzogWy43MDMsIC4xMTMsIC42ODIsIHtzazogLjEyOH1dLFxuICAgIDB4NDg6IFsuNjg2LCAuMDQ4LCAuOTg3LCB7c2s6IC4xMjh9XSxcbiAgICAweDQ5OiBbLjY4NiwgMCwgLjY0Miwge2ljOiAuMTA0LCBzazogLjAzMTl9XSxcbiAgICAweDRBOiBbLjY4NiwgLjExNCwgLjc3OSwge2ljOiAuMTU4LCBzazogLjE5Mn1dLFxuICAgIDB4NEI6IFsuNzAzLCAuMDE3LCAuODcxLCB7c2s6IC4wNjM5fV0sXG4gICAgMHg0QzogWy43MDMsIC4wMTcsIC43ODgsIHtzazogLjE2fV0sXG4gICAgMHg0RDogWy43MDMsIC4wNDksIDEuMzc4LCB7c2s6IC4xNn1dLFxuICAgIDB4NEU6IFsuODQsIC4wNDksIC45MzcsIHtpYzogLjE2OCwgc2s6IC4wOTU4fV0sXG4gICAgMHg0RjogWy43MDMsIC4wMTcsIC45MDYsIHtzazogLjEyOH1dLFxuICAgIDB4NTA6IFsuNjg2LCAuMDY3LCAuODEsIHtpYzogLjAzNiwgc2s6IC4wOTU4fV0sXG4gICAgMHg1MTogWy43MDMsIC4xNDYsIC45MzksIHtzazogLjEyOH1dLFxuICAgIDB4NTI6IFsuNjg2LCAuMDE3LCAuOTksIHtzazogLjA5NTh9XSxcbiAgICAweDUzOiBbLjcwMywgLjAxNiwgLjY5Niwge2ljOiAuMDI1LCBzazogLjE2fV0sXG4gICAgMHg1NDogWy43MiwgLjA2OSwgLjY0NCwge2ljOiAuMzAzLCBzazogLjAzMTl9XSxcbiAgICAweDU1OiBbLjY4NiwgLjAyNCwgLjcxNSwge2ljOiAuMDU2LCBzazogLjA5NTh9XSxcbiAgICAweDU2OiBbLjY4NiwgLjA3NywgLjczNywge2ljOiAuMDM3LCBzazogLjAzMTl9XSxcbiAgICAweDU3OiBbLjY4NiwgLjA3NywgMS4xNjksIHtpYzogLjAzNywgc2s6IC4wOTU4fV0sXG4gICAgMHg1ODogWy42ODYsIDAsIC44MTcsIHtpYzogLjA4OSwgc2s6IC4xNn1dLFxuICAgIDB4NTk6IFsuNjg2LCAuMTY0LCAuNzU5LCB7aWM6IC4wMzgsIHNrOiAuMDk1OH1dLFxuICAgIDB4NUE6IFsuNjg2LCAwLCAuODE4LCB7aWM6IC4wMzUsIHNrOiAuMTZ9XSxcbn07XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtTVkdDaGFyTWFwLCBBZGRQYXRoc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuaW1wb3J0IHt0ZXhPbGRzdHlsZUJvbGQgYXMgZm9udH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZvbnRzL3RleC90ZXgtb2xkc3R5bGUtYm9sZC5qcyc7XG5cbmV4cG9ydCBjb25zdCB0ZXhPbGRzdHlsZUJvbGQ6IFNWR0NoYXJNYXAgPSBBZGRQYXRocyhmb250LCB7XG4gICAgMHgzMDogJzI1OSA0NjBIMjc5UTM1MiA0NjAgNDAzIDQ0NFQ0OTEgMzc4UTUyOCAzMjAgNTI4IDIxOVE1MjggMTAwIDQ3NSA0NVE0MTcgLTE3IDI4NyAtMTdRMTUyIC0xNyA5OSA0NFQ0NiAyMTlRNDYgMjQ2IDQ3IDI2NVQ1NyAzMThUODIgMzc2VDEzMSA0MjJUMjEwIDQ1NFEyMzQgNDYwIDI1OSA0NjBaTTM4OSAyMjlWMjcxUTM4OSAzNTEgMzcxIDM4MFQyODAgNDA5UTIzMiA0MDkgMjA4IDM4NVExOTQgMzcxIDE5MCAzNDVUMTg1IDIyOVYyMTBRMTg1IDEwOCAxOTQgODNRMjA4IDM1IDI4NyAzNVEzMTcgMzUgMzM2IDQyUTM3MiA1NSAzODAgODVUMzg5IDIwNFYyMjknLFxuICAgIDB4MzE6ICcxMTkgNDE3UTE5MSA0MTcgMjQwIDQyOFQzMTAgNDUwVDMzOCA0NjFRMzUzIDQ2MSAzNTcgNDUyVDM2MSA0MDBRMzYxIDM4OSAzNjEgMzQyVDM2MCAyNTRWNjJINDIwSDQ1NlE0ODMgNjIgNDg4IDU4VDQ5NCAzNVYyOVE0OTQgMTMgNDkxIDdUNDczIDBRNDY4IDAgNDI0IDFUMjk1IDJUMTY3IDFUMTE3IDBRMTE0IDAgMTExIDBUMTA3IDFROTYgOCA5NiAyN1YzNVE5NiA1NCAxMDIgNThUMTQwIDYySDE3MEgyMjlWMjEzUTIyOSAzNjMgMjI4IDM2M1EyMjAgMzYwIDE5NiAzNThUMTUwIDM1NkwxMzAgMzU1SDkzUTg0IDM2MCA4MiAzNjVUODAgMzg2UTgwIDQwNCA4MSA0MDdUOTUgNDE3SDExOScsXG4gICAgMHgzMjogJzIxNCAzOTlRMjAyIDM5OSAxOTEgMzk4VDE3NSAzOTVUMTcwIDM5MkwxNzEgMzkwUTE3MiAzODkgMTc0IDM4NlQxNzggMzc5VDE4MSAzNjlUMTgyIDM1NVExODIgMzI4IDE2NSAzMTJUMTIzIDI5NlE5OSAyOTYgODIgMzEyVDY0IDM1NlE2NCAzOTcgMTA1IDQyOFQyNTMgNDYwUTMwMSA0NjAgMzM3IDQ1NlQ0MTEgNDQxVDQ3NiA0MDNUNTE0IDMzOFE1MTYgMzI4IDUxNiAzMTBWMzA0UTUxNiAyNTcgNDcwIDIyN1E0NTYgMjE3IDQyNyAyMDVUMzc2IDE4NEwzNTQgMTc2UTM1MCAxNzQgMzI1IDE2MlQyNzcgMTM5TDI1NCAxMjhRNDE0IDEyOSA0MjggMTMwSDQzOVE0NTAgMTQ4IDQ1MyAxNjZUNDYwIDE4OFQ0ODYgMTkzSDQ5M1E1MTUgMTkzIDUxNyAxNzhRNTE3IDE3MSA1MDIgOTRUNDg0IDExUTQ4MSAzIDQ3MiAyVDQxMCAwSDI2OVE2NSAwIDYyIDJRNTUgNSA1MyAxMFQ1MSAzMlE1MSA1NCA1NiA1OFE2MCA2MiAxNzMgMTMxUTI5NiAyMDcgMzE4IDIyNFEzNjggMjY0IDM2OCAzMDhRMzY4IDM0MiAzNDIgMzYzVDI4MyAzOTJUMjE0IDM5OScsXG4gICAgMHgzMzogJzgwIDMwOVE4MCAzNjcgMTMxIDQxNFQyNzYgNDYxUTM4OCA0NjEgNDQxIDQxN1Q0OTQgMzEzUTQ5NCAyNjUgNDYzIDIyM1QzNzMgMTU1TDM2MSAxNTFMMzc2IDE0N1E0MzYgMTMyIDQ4MCA5MlQ1MjUgLTE1VDQ4NyAtMTI3VDM5MyAtMTkyVDI3NCAtMjExUTE3OSAtMjExIDExNCAtMTY3VDQ4IC01M1E0OCAtMTggNjkgNVQxMjggMjlRMTY4IDI5IDE4OCA1VDIwOCAtNTBRMjA4IC01OSAyMDcgLTY3VDIwMyAtODFUMTk3IC05MlQxOTAgLTEwMVQxODMgLTEwOVQxNzcgLTExNFQxNzAgLTExOEwxNjcgLTEyMVExNjAgLTEyNSAxNjQgLTEyN1ExNjcgLTEyOSAxNzYgLTEzM1EyMTUgLTE1MiAyNjggLTE1MkgyNzNRMzM3IC0xNTIgMzU2IC05MlEzNjQgLTY5IDM2NCAtMTRRMzY0IDQ1IDM1MiA3NFQzMDMgMTIwUTI4NyAxMjUgMjQwIDEyNUgyMzBRMjAxIDEyNSAxOTYgMTI3VDE5MSAxNDZWMTUyUTE5MiAxNzAgMTk2IDE3M1QyMzMgMTc4UTIzNCAxNzggMjQxIDE3OFQyNTIgMTc5VDI2MiAxODFUMjc0IDE4M1QyODUgMTg4VDI5NyAxOTVUMzA4IDIwNVQzMTkgMjE4VDMyOCAyMzVUMzM3IDI1N1EzNDUgMjgwIDM0NSAzMjBWMzMwUTM0NSAzNDUgMzQzIDM1NVQzMzUgMzc5VDMxMiAzOTlUMjcwIDQwN1EyMjYgNDA3IDE3NyAzNzdRMjI2IDM1NiAyMjYgMzEwUTIyNiAyNzAgMjA0IDI1M1QxNTMgMjM1UTEyMyAyMzUgMTAyIDI1M1Q4MCAzMDknLFxuICAgIDB4MzQ6ICcxODAgMFExNTUgMCAxMjQgMFQ4NCAtMVE0OCAtMSA0MCAzVDMyIDI3VjM3UTMyIDU5IDM0IDYzVDIwNCAyNjVUMzc3IDQ2NVEzODAgNDY4IDM4MyA0NjhIMzg3UTM5MSA0NjggMzk4IDQ2OFQ0MTEgNDY5UTQzMiA0NjkgNDM4IDQ2OFQ0NDkgNDU5UTQ1MSA0NTUgNDUxIDI1OFY2Mkg0ODlINDk4UTUzMSA2MiA1MzYgNThUNTQyIDMxUTU0MiA5IDUzNyA1VDUwNCAwSDQ4OUg0NTFWLTEzMkg0ODlINDk4UTUzMCAtMTMyIDUzNiAtMTM2VDU0MiAtMTYzUTU0MiAtMTgxIDUzOCAtMTg3VDUyMiAtMTk0UTUxOCAtMTk0IDQ4MyAtMTkzVDM3OCAtMTkyUTI4MSAtMTkyIDI1NiAtMTkzTDIxNyAtMTk0UTIwMyAtMTg5IDIwMyAtMTY5Vi0xNjNWLTE1OFEyMDMgLTE0MCAyMDkgLTEzNlQyNDYgLTEzMkgyNjVIMzE0VjBIMTgwWk0zMjUgNjJWMzIwTDEwNSA2M0wyMTUgNjJIMzI1JyxcbiAgICAweDM1OiAnMTMxIDI5UTE1OSAyNiAxNzUgMTJUMTk0IC0xM1QxOTcgLTM1Vi00MVExOTcgLTU4IDE5NSAtNjZRMTkxIC03NiAxODUgLTg0VDE3MyAtOTdUMTYxIC0xMDVUMTUyIC0xMDlMMTQ4IC0xMTBRMTQ4IC0xMTIgMTU4IC0xMjFUMTk1IC0xNDFUMjUyIC0xNTJRMjc0IC0xNTIgMjgwIC0xNTFRMzM1IC0xMzcgMzQ5IC0xMDRUMzYzIDlRMzYzIDg1IDM1NiAxMTRUMzIyIDE1N1EzMDUgMTY2IDI4NiAxNjZRMjUxIDE2NiAyMjMgMTU0VDE4MiAxMzFUMTYyIDEwOVExNTQgOTggMTUwIDk2VDEzMCA5M1ExMDcgOTMgMTAyIDEwNFExMDAgMTA3IDEwMCAyNzlWMzcxVjQyNFExMDAgNDYxIDExMCA0NjFRMTE0IDQ2MSAxMjMgNDU4VDE0OSA0NTBUMTgzIDQ0MVEyMzQgNDI5IDI4NiA0MjlRMzEzIDQyOSAzNDAgNDMyVDM4NyA0NDBUNDIyIDQ0OVQ0NDcgNDU3VDQ1OCA0NjFRNDcyIDQ2MSA0NzIgNDM1UTQ3MiA0MjAgNDcwIDQxOFE0NjQgNDA1IDQzOCAzNzlUMzUyIDMyNVQyMjYgMjk3UTE4OSAyOTcgMTcxIDMwMUgxNjhWMTgyUTE2OSAxODIgMTc0IDE4NVQxOTAgMTk0VDIxMyAyMDVUMjQ4IDIxM1QyOTIgMjE3UTM5MSAyMTcgNDU0IDE1OVQ1MTcgNVE1MTcgLTkyIDQ0NCAtMTUxVDI1NSAtMjExUTE2NyAtMjExIDExMiAtMTYwVDU3IC00NFE1NyAtMTIgNzYgOFQxMzEgMjknLFxuICAgIDB4MzY6ICc0OCAzMTZRNDggMzk4IDcwIDQ2MlQxMjQgNTYyVDE5OCA2MjFUMjc0IDY1MlQzMzkgNjYwUTM3NyA2NjAgMzg0IDY1OVE0OTcgNjMyIDQ5NyA1MzJRNDk3IDUwNyA0ODIgNDg3VDQzMSA0NjZRMzk3IDQ2NiAzODEgNDg2VDM2NSA1MzBRMzY1IDU2OSA0MDUgNTkzUTM4MiA2MDMgMzgxIDYwM1EzNjEgNjA3IDM1MCA2MDdRMzE2IDYwNyAyNzkgNTg5VDIyMSA1MzNRMTk5IDQ4OSAxOTYgMzg1TDE5NSAzNzBRMTk2IDM3MSAyMDMgMzc5VDIxNyAzOTVUMjM3IDQxMFQyNjMgNDI0UTI4MyA0MzEgMzEzIDQzMVE0MDkgNDMxIDQ2OCAzNjhRNTI2IDMxMCA1MjYgMjA4UTUyNiAxMzEgNDkyIDgxVDQwNSA1UTM1OSAtMTcgMjg5IC0xN1EyNTYgLTE3IDIyNyAtMTFUMTYzIDE3VDEwNSA3M1Q2NSAxNzBUNDggMzE2Wk0yOTMgMzgwUTI0NCAzODAgMjIwIDMzMVQxOTYgMjEyUTE5NiAxMDQgMjE2IDgwUTI0MCA0MSAyOTIgNDFRMjk1IDQxIDMwMSA0MVQzMDkgNDJRMzM4IDQ2IDM1NSA2MlEzNzIgODEgMzc1IDEwOFQzNzkgMjMwUTM3OCAzMTQgMzcyIDMzM1EzNTggMzc1IDI5OSAzODBIMjkzJyxcbiAgICAweDM3OiAnOTUgMjEwSDg4UTY2IDIxMCA2NCAyMjVRNjQgMjI5IDgyIDM0NVQxMDIgNDY1UTEwNiA0NzYgMTI1IDQ3NkgxMzFRMTYyIDQ3NiAxNjIgNDU4UTE2MiA0NTEgMjEzIDQ0OFEyMjEgNDQ4IDIzOCA0NDdUMjYwIDQ0NlEyNjEgNDQ2IDQxMCA0NDRRNDM2IDQ0NCA0NjggNDQ0VDUwOSA0NDVRNTQ0IDQ0NSA1NTEgNDQwVDU1OCA0MTNWNDA0UTU1OCAzOTUgNTQ3IDM4MFQ0NzggMzAxTDM5MiAyMDJRMzU0IDE1MCAzMzkgODFUMzIxIC0xMDRWLTEzMlEzMjEgLTE4NyAyODYgLTIwM1EyNzMgLTIxMSAyNTUgLTIxMVEyMzYgLTIxMSAyMTcgLTE5OVQxOTAgLTE2MFExODkgLTE1MyAxODkgLTEzMFExOTQgMTcgMjgyIDE1NlEzMDkgMjAwIDM3MCAyNzBRNDA0IDMwNyA0MDAgMzA3SDI5M1ExNTEgMzA2IDE0NiAzMDNRMTQwIDMwMCAxMzIgMjU5VDEyMCAyMTVRMTE1IDIxMCA5NSAyMTAnLFxuICAgIDB4Mzg6ICc0OCAxNjRRNDggMTk5IDU5IDIyOFQ5MiAyNzdUMTI4IDMwN1QxNjMgMzI5UTE1OSAzMzIgMTU1IDMzNlExMzUgMzQ2IDExMCAzODJRODAgNDI3IDgwIDQ3N1E4MCA1NjQgMTQ3IDYyMFEyMDIgNjYwIDI2NCA2NjBRMjY2IDY2MCAyNzUgNjYwVDI5MCA2NjFRMzg0IDY2MSA0MzkgNjE5VDQ5NCA1MDZRNDk0IDQ4NiA0ODkgNDY4VDQ3NyA0MzdUNDU5IDQxM1Q0NDAgMzk1VDQyMSAzODBUNDA2IDM3MEw0MTAgMzY4UTQxNCAzNjUgNDIxIDM2MVQ0MzcgMzUxVDQ1NiAzMzVUNDc2IDMxNlQ0OTUgMjkxVDUxMSAyNjJUNTIyIDIyOFQ1MjYgMTg5UTUyNiA5MyA0NjAgMzhUMjgyIC0xN1EyNDIgLTE3IDIwNSAtOVQxMzAgMTlUNzEgNzVUNDggMTY0Wk00MDYgNTA2UTQwNiA1NDUgMzc5IDU3NlQyODMgNjA3UTIxOCA2MDYgMTkzIDU4NVQxNjggNTM2UTE2OCA1MjIgMTcyIDUxM1QxOTUgNDkwVDIyNCA0NzFUMjc1IDQ0M0wzNDYgNDAzUTQwNiA0NDYgNDA2IDUwNlpNMjkxIDQyUTM2NSA0MiAzOTUgNzBUNDI1IDEzNFYxNDFRNDI1IDE3MCA0MDEgMTkwVDMxOSAyNDJRMzA4IDI0OCAzMDIgMjUxUTI4NiAyNjAgMjY2IDI3MVQyMzUgMjg4TDIyNSAyOTRRMjIyIDI5MiAyMTcgMjg5VDE5OCAyNzRUMTc1IDI0OVQxNTcgMjEyVDE0OCAxNjNRMTQ4IDExNiAxNzkgNzlUMjkxIDQyJyxcbiAgICAweDM5OiAnMTc1IC0xNDBRMTk4IC0xNTIgMjM2IC0xNTJRMjk0IC0xNTIgMzMyIC0xMTZRMzU2IC05MSAzNjYgLTU0VDM3OSA2MlY3OEwzNzYgNzRRMzcyIDcwIDM2NiA2NFQzNTIgNTBUMzMzIDM1VDMwOCAyM1EyODkgMTcgMjYyIDE3UTE2OCAxNyAxMDggNzdUNDggMjM1UTQ4IDI3MyA1OSAzMTdRODEgMzgxIDE0MSA0MjFUMjc2IDQ2MVEyNzkgNDYxIDI4NSA0NjFUMjk1IDQ2MFEzMjYgNDYwIDM1NCA0NTRUNDE1IDQyNlQ0NzEgMzcxVDUxMCAyNzdUNTI2IDEzNlE1MjYgNDIgNTAxIC0yOFQ0MzIgLTEzNlQzNDEgLTE5MlQyNDAgLTIxMFExOTkgLTIxMCAxNjkgLTIwMVQxMjEgLTE3OFQ5NCAtMTQ2VDgwIC0xMTJUNzcgLTgyUTc3IC01MSA5NSAtMzNUMTQzIC0xNVExNzAgLTE1IDE4OSAtMzNUMjA5IC04MVEyMDkgLTExNiAxNzUgLTE0MFpNMzc3IDI0NFYyNzRRMzc3IDMwMCAzNzYgMzE2VDM2OCAzNTJUMzQ4IDM4NFQzMTIgNDA1UTMwNyA0MDYgMjgzIDQwNlEyNTcgNDA2IDIzOCAzOTZUMjEzIDM3NlQyMDUgMzYxUTE5NiAzNDEgMTk2IDI1OVYyMzNWMTgxUTE5NiAxMjIgMjExIDk2VDI3OCA2OUgyOThRMzMwIDgyIDM0NSAxMDRRMzY3IDEzNCAzNzYgMTkwUTM3NyAyMDAgMzc3IDI0NCcsXG4gICAgMHg0MTogJzc2MSA3NTFRNzg0IDc1MSA3ODQgNzI4VjcxMVE3ODQgNTcwIDc5NSA0MTdUODIwIDE5MVE4NDQgNzYgODY1IDc2UTg2OCA3NiA5MDIgOTNUOTYyIDExMkg5NzNROTg5IDEwNCA5ODkgOTRROTg5IDkyIDk4NyA4NlE5NzggNDcgODQ2IC0xMVE4MTIgLTI1IDc3OSAtMjZRNzIyIC0yNiA3MDggOVE2ODggNDcgNjY5IDE2MUg1MjRMMzc5IDE2MkwzNTkgMTM2UTI4NiA0MyAyMzQgLTNUMTQyIC00OVQ3MSAtMTlUMzkgNTVRMzkgOTIgNjAgMTMxVDEwMyAxNzRRMTEzIDE3NCAxMTcgMTY3VDEyNCAxNDlUMTM2IDEyOFQxNjYgMTEwUTE4MyAxMDUgMTkwIDEwNVEyMzAgMTA1IDM0MSAyNDZRNDAxIDMyMiA0NTMgMzk3VDUzMSA1MTRUNTgyIDYwMVQ2MTEgNjUxSDY0MFY2NjNRNjQwIDY5MiA2NzYgNzE4VDc0NSA3NTBRNzQ3IDc1MCA3NTIgNzUwVDc2MSA3NTFaTTY1OCAyNjZRNjUzIDMxMiA2NDkgMzc3VDY0NCA0ODlUNjQxIDU0MVY1NTZMNTU3IDQxNVE1MDAgMzI1IDQ0OCAyNTNRNDY3IDI2MSA1MjQgMjYxSDU2OEg2NThWMjY2JyxcbiAgICAweDQyOiAnNDQxIDgzUTU3MSA4MyA1NzEgMTk1UTU3MSAyNDYgNTM4IDI3OVQ0NjYgMzIyVDM4NiAzMzNRMzc4IDMzMyAzNTcgMzMwVDMyOSAzMjdRMzA3IDMyNyAzMDcgMzQ1UTMwNyAzNTQgMzEzIDM2NVQzNDcgMzk2VDQxOSA0MzBRNTQ2IDQ3MiA1ODEgNDk4UTU5NCA1MDggNTk0IDUzNVE1OTQgNTc0IDU2NyA1ODlUNTA4IDYwNFE0NjkgNjA0IDQ0MiA1ODNRMzkwIDU0NiAzNDIgNDU3VDI2NSAyNTZRMjM3IDE0OCAxODYgNjBRMTY3IDI5IDE0NCAxM1ExMDUgLTE1IDY4IC0xN0g2NVE0MCAtMTcgNDAgMVE0MCA3IDUzIDI5VDg3IDEwMFQxMjQgMjEwUTE2MiAzNzMgMTkwIDU3NVExODggNTc1IDE3NCA1NjdUMTM4IDU1MFQ5OCA1NDJRNzUgNTQyIDc1IDU2MFE3NSA1ODggMTIzIDYxOFExMzUgNjI1IDIwMyA2NTlUMjgxIDY5NlEyOTkgNzAzIDMxNiA3MDNRMzM5IDcwMyAzMzkgNjg1UTMzOSA2NTYgMzI4IDU4M0wzMzMgNTg4UTMzOCA1OTIgMzQ2IDU5OVQzNjcgNjE1VDM5NCA2MzRUNDI4IDY1NFQ0NjcgNjc0VDUxMSA2OTBUNTU5IDcwMVQ2MTEgNzA1UTY1MSA3MDQgNjgxIDY4OVE3MzkgNjU5IDczOSA1OThRNzM5IDUwNyA1OTUgNDI3TDU4NCA0MjFRNTg1IDQyMCA1OTUgNDE2VDYxMCA0MTBUNjI2IDQwMlQ2NDQgMzkyVDY2MCAzODBUNjc3IDM2NVQ2OTEgMzQ3VDcwMyAzMjVUNzEwIDI5OVQ3MTUgMjY4UTcxNyAxOTMgNjY1IDEzMFE2MjIgNzMgNTMxIDI4VDM0OCAtMTdRMjc1IC0xNyAyMjUgMTBRMjA2IDE5IDIwMCAyNFQxOTMgMzZRMTkzIDU3IDIzMSA4NlQzMTEgMTE5SDMyMlEzODYgODMgNDQxIDgzJyxcbiAgICAweDQzOiAnMjQzIC0yMFExMzUgLTIwIDc4IDQ4VDIwIDIxOFEyMCAyODAgMzkgMzQ0VDk4IDQ3MFQxOTMgNTgwVDMyNCA2NjFUNDg4IDcwMkg0OTBRNDkxIDcwMiA0OTMgNzAyVDQ5OCA3MDNUNTA3IDcwM1Q1MTggNzAySDUyNlE1OTkgNzAyIDU5OSA2MzFRNTk5IDU5NyA1NzcgNTUwVDU0MSA0ODZRNTIzIDQ2MyA0OTAgNDQ3VDQzMSA0MzBRNDIzIDQzMCA0MTkgNDMzUTQwOSA0MzcgNDA5IDQ1MFE0MTAgNDU2IDQzMiA0OTlUNDU0IDU2N1E0NTQgNTg2IDQ0NiA1OTRUNDE1IDYwM1EzMTYgNjAzIDI1NCA1MzJRMjE2IDQ4NyAxOTAgNDIxVDE2NCAyODRRMTY0IDIyOCAxODEgMTg2VDIyNiAxMjJUMjgyIDkwVDM0MCA4MFEzNzcgODAgNDA1IDk2VDQ0OSAxMzFUNDkyIDE2N1Q1NTMgMTg3SDU1NVE1ODAgMTg3IDU4MCAxNjhRNTgwIDE1MyA1NTEgMTIzVDQ3NiA2MFQzNjcgNFQyNDMgLTIwJyxcbiAgICAweDQ0OiAnMTA3IDBROTIgNSA5MiAxOFE5MiAzMyAxMTMgNTNUMTYwIDg2UTE3MCA5MSAxODIgOTRUMTk3IDEwMEwyMDYgMTIwUTI0OCAyMjYgMjczIDMzN1QzMDQgNTAxVDMwOSA1ODVRMjc4IDU4NSAyMzQgNTc3VDE3OSA1NTdRMTcyIDU1MCAxNjYgNTMyVDE1NiA1MDlRMTQwIDQ4NCAxMDUgNDY2VDQ0IDQ0N1EyMCA0NDcgMjAgNDY1UTIwIDQ4MiAzNCA1MTBUNzYgNTY1UTEyMiA2MDggMTczIDYzMlEyODEgNjg2IDQ0NyA2ODZINDgwSDUxN1E2OTIgNjg2IDc4NCA2MzFRODg1IDU3MSA4ODUgNDUwUTg4NSAzMzkgODA1IDIzOVQ1ODYgNzVUMjg2IDFRMjc2IDAgMTg3IDBIMTA3Wk03NDEgMzkxUTc0MSA0MjQgNzMxIDQ1MlQ2OTQgNTEwVDYxMyA1NThUNDgxIDU4NFE0NzYgNTg0IDQ2OCA1ODRUNDU3IDU4NUw0NDkgNTg2VjU3OVE0NDEgNTAxIDQyNSA0MjRUMzkxIDI5MlQzNTcgMTkzVDMzMCAxMjVUMzE5IDEwMEgzMjRRNTExIDEwMCA2MjggMTc1UTY4OCAyMTUgNzE0IDI3NVQ3NDEgMzkxJyxcbiAgICAweDQ1OiAnNDk1IDUxNlE0ODUgNTE2IDQ3OCA1MjBUNDcwIDUzMlE0NzAgNTM3IDQ3NiA1NTBUNDgyIDU3MFE0ODIgNTg5IDQ2NSA1OTZUNDAxIDYwM1EzNDQgNjAzIDMxOSA1ODJRMjk1IDU1OCAyOTUgNTE5UTI5NSA0OTMgMzEyIDQ3NFQzNTUgNDQ1VDQwNyA0MzJUNDU1IDQyN1E0NzcgNDI3IDQ3NyA0MDlRNDc3IDM5NSA0NTMgMzcxVDM4OSAzMzNRMzgwIDMzMCAzNDUgMzI3VDI3OSAzMTJUMjIzIDI3MlExODEgMjIzIDE4MSAxNzZRMTgxIDEzMSAyMjUgMTA3VDMyNCA4M1EzNjYgODMgMzk1IDk4VDQ0OCAxMzZUNDg3IDE2N1E1MTcgMTg1IDU0NyAxODdINTUxUTU3NCAxODcgNTc0IDE3MFE1NzQgMTUxIDUzNSAxMTNUNDIxIDM2VDI3MSAtMTVRMjYwIC0xNiAyMjYgLTE2UTE4MSAtMTYgMTUyIC05UTEwNCA0IDcxIDMzVDM3IDExMVEzNyAxNDAgNTAgMTc2VDEwNiAyNjNUMjE2IDM1NlEyMTUgMzU3IDIwNyAzNjJUMTkwIDM3NFQxNzIgMzkyVDE1NiA0MTlUMTUwIDQ1NlExNTAgNTIxIDIwOCA1ODBUMzQxIDY3MFQ0NzQgNzAyUTQ3NSA3MDMgNDk5IDcwM1E1MjggNzAzIDU0NyA3MDFUNTg2IDY5M1Q2MTUgNjczVDYyNyA2MzdRNjI3IDU4NCA1ODEgNTUwVDQ5NSA1MTYnLFxuICAgIDB4NDY6ICc4MTIgNTY3UTgwNCA1NjcgNzk1IDU3MFQ3ODYgNTc5UTc4NiA1ODYgNjQ3IDU4Nkg1NTlMNTU4IDU4MlE1NTggNTc1IDUzOSA1MTBUNTA2IDQwN0w0OTggMzg0SDc3NVE3ODggMzc4IDc5MCAzNjhRNzkwIDMyOCA3NDYgMjk4VDY2NSAyNjhRNjQ2IDI2OCA2NDIgMjg0SDQ1N0w0NDcgMjYxUTM5NiAxNTAgMzYwIDk0UTMyOSA0NiAyNzAgOFQxNDkgLTMwUTEyMyAtMzAgMTAwIC0yNFQ2MyAtMTBUMzcgOVQyMiAyNlQxNyAzNlExNyA1OSA1NiA4OFQxMzUgMTE5UTE0NSAxMTkgMTQ5IDExN1QxNjUgMTA0UTE4NyA3OCAyMjcgNzJRMjMyIDcyIDIzNCA3NlEyNDUgOTMgMjczIDE0NVQzNTAgMzIzVDQyNCA1NzBMNDI4IDU4NkgyNzZRMjY1IDU3NSAyMzkgNTYzVDE5MCA1NTFRMTgwIDU1MSAxNzQgNTU2VDE2NyA1NjlRMTY3IDU4MCAxNzkgNTk3VDIxMyA2MzRUMjc4IDY2OFQzNzEgNjg1UTM3NCA2ODYgNjI0IDY4NlE4NjMgNjg1IDg4OCA2ODJROTE3IDY3OCA5MjcgNjYzUTkzMCA2NTggOTMwIDY1MFE5MzAgNjI0IDg4OCA1OTZUODEyIDU2NycsXG4gICAgMHg0NzogJzUwIDI3OVE1MCAzNjEgODggNDM4VDE5MCA1NzBUMzM1IDY2MVQ1MDMgNzAySDUxNFE1MjQgNzAzIDUzMiA3MDNRNjcxIDcwMyA2NzEgNjI2UTY3MSA1ODAgNjE0IDUxNFQ0OTUgNDQ3UTQ3MiA0NDcgNDcyIDQ2NVE0NzIgNDc3IDQ5OSA1MTFUNTI3IDU2MlE1MjcgNTgyIDUwNyA1OTJUNDMzIDYwMlEzNTEgNjAyIDMwMiA1NjlRMjUyIDUzNSAyMjMgNDY5VDE5NCAzNDRRMTk0IDI2NiAyMzcgMjE3VDM1MiAxNjhRNDAxIDE2OCA0NDIgMjA1VDUwNSAzMTZRNTE1IDM0NSA1NTEgMzY4VDYyMiAzOTNINjI1UTY0OSAzOTMgNjQ5IDM3NlE2NDkgMzcxIDYzNSAzMThUNjEyIDIzN1E1ODAgMTI5IDU0MCA2MlQ0NDIgLTQ5UTM1MyAtMTE0IDI2NCAtMTE0UTI1OSAtMTE0IDI1MiAtMTE0TDI0NiAtMTEzUTE5MCAtMTEzIDE0MiAtMTA3VDgxIC05NlE3MSAtOTAgNzEgLTgxUTcxIC01NyAxMTAgLTMwVDE4NyAyUTE5NiAyIDIzNiAtNFQzMzggLTE0UTM3MSAtMTQgMzc3IC05UTQxMCAyNCA0NDYgMTEzTDQ1MSAxMjdRMzUzIDY4IDI1MyA2OFExNTcgNjggMTA0IDEyOVQ1MCAyNzknLFxuICAgIDB4NDg6ICc0MiA0NDdRMjAgNDQ3IDIwIDQ2NVEyMCA0ODEgNDcgNTE1VDExOSA1ODlUMjM5IDY1N1QzOTIgNjg2UTQ0MyA2ODYgNDYzIDY2NFQ0ODQgNjE2UTQ4NCA1NzAgNDczIDUwNlQ0NTIgNDAxTDQ0MSAzNjBRNDQxIDM1OSA1NTAgMzU5SDY2MEw2NjMgMzcwUTY4NCA0MzUgNzE2IDUyMlQ3NTggNjI0UTc3MSA2NDYgODA2IDY2NlQ4NzAgNjg2UTg5NCA2ODYgODk0IDY2OFE4OTQgNjY3IDg2NyA1OTdUODA0IDQxNlQ3NTIgMjE4UTczNyAxMzUgNzM3IDkzUTczNyA3NyA3NDYgNjVUNzc4IDUzUTc5OSA1MyA4MDMgNTRUODE0IDYzUTgzMSA4NiA4NjQgMTAzVDkyNCAxMjBROTQ2IDEyMCA5NDYgMTAwUTk0NSA4NSA5MzEgNjNUODg4IDE2VDgwNiAtMjdUNjg0IC00OEg2ODFRNjI1IC00OCA2MDMgLTEwUTU5MyA0IDU5MyAyOVE1OTMgNzEgNjAzIDEzMVQ2MjQgMjMwTDYzNCAyNjlRNjMyIDI2OSA2MjQgMjY2UTYxMCAyNjEgNjAwIDI2MVQ1MDcgMjU5SDQxMUwzOTkgMjIyUTM0NCA2MiAzMjIgMjFRMzAxIC03IDI2OCAtMjRUMjA5IC00MUgyMDdRMTg3IC00MSAxODUgLTI1UTE4NSAtMTcgMTkyIDJUMjIwIDcxVDI2MSAxODRRMjg0IDI1NiAyODQgMjU4UTI4NCAyNTkgMjI3IDI1OUgxNzBRMTY5IDI1OSAxNjYgMjYxVDE2MiAyNjRUMTU4IDI2NlQxNTYgMjcxVDE1NSAyNzdRMTU1IDI5NiAxODQgMzIwVDI1MCAzNTZRMjU5IDM1OCAyODYgMzU5UTMxMiAzNTkgMzEyIDM2MFEzMTQgMzcyIDMxOCAzODVRMzMyIDQ1MCAzMzkgNTI2UTMzOSA1MzAgMzM5IDUzNVQzNDAgNTQzUTM0MCA1ODYgMjk2IDU4NlEyNTUgNTg2IDIyNyA1NzZUMTg4IDU1M1QxNjUgNTIzVDE0NiA0OTdRMTI3IDQ3NiA5NyA0NjJUNDIgNDQ3JyxcbiAgICAweDQ5OiAnNTYgNDk5UTMyIDQ5OSAzMiA1MTZRMzIgNTQwIDY0IDU4MFQxNjUgNjQ5UTI0MSA2ODIgMzY1IDY4NVEzNjYgNjg1IDM3NiA2ODVUNDA1IDY4NVQ0NDUgNjg2VDQ5NiA2ODZUNTUzIDY4Nkg3MzJRNzQ2IDY3NyA3NDYgNjY4UTc0NiA2NDYgNzExIDYyMFQ2NDIgNTg3TDU3MiA1ODZINTAzUTQ3OSA1NDYgNDU4IDQ3OVQ0MjQgMzUyVDM4MyAyMjRUMzE4IDExMUwzMDkgMTAxTDQxMiAxMDBINTE0TDUyMyAxMDlRNTY3IDE1MCA2MTggMTUzUTY0NCAxNTMgNjQ0IDEzNVE2NDQgMTMyIDY0MiAxMjRRNjI5IDg2IDU4MSA1MlQ0NzYgNlE0NTQgMiA0MzMgMlQyMTYgMFEtMTEgMCAtMTUgMlEtMjcgNiAtMjcgMThRLTI3IDM3IDIgNjFUNTkgOTNRNzcgMTAwIDE0MiAxMDBIMTk4UTI1NSAxNzcgMjk5IDM2OVEzMzcgNTEzIDM4MiA1NzRMMzkxIDU4NkgzNDhRMjYxIDU4NiAxNzYgNTc2UTE2MyA1NDMgMTI0IDUyMVQ1NiA0OTknLFxuICAgIDB4NEE6ICcyODYgMzkwUTI2MyAzOTAgMjYzIDQwN1EyNjMgNDMyIDI5MyA0ODFUMzY3IDU2NlE1MTEgNjg3IDcyNCA2ODdRNzM4IDY4NyA3NjEgNjg3VDc5MyA2ODZIOTIzUTkzNyA2NzcgOTM3IDY2OFE5MzcgNjQ4IDkwNSA2MjNUODQyIDU4OVE4MjkgNTg3IDgxNyA1ODZUODAyIDU4NVQ3OTUgNTgzVDc4OCA1NzhRNzA5IDUwNiA2MzIgMTg5UTYyMiAxNTMgNjE1IDEzNFQ1ODggODFUNTM3IDE3UTQ4MiAtMzkgNDA0IC03NlQyNDcgLTExNFExOTIgLTExNCAxNTggLTEwMFE1MyAtNjEgNTMgMzJRNTMgNTkgNTggNzNUNzkgMTAyUTEyNiAxNDcgMTc3IDE0N1EyMDAgMTQ3IDIwMCAxMjhRMjAwIDEyMyAxOTggMTEyVDE5NiA5NlExOTYgNDcgMjM4IDE3VDM0NSAtMTNRMzYyIC0xMyAzNzcgLTlUNDA0IDBUNDI2IDE2VDQ0NCAzNFQ0NTkgNTVUNDcwIDc2VDQ3OCA5N1Q0ODMgMTE2VDQ4OCAxMzJMNDkwIDE0MVE1MTEgMjIyIDUyMCAyNTdUNTU0IDM2NFQ2MDggNDg2VDY3NSA1NzZMNjg1IDU4Nkg2MzRINjEyUTUzMiA1ODYgNDg0IDU2NFE0NTMgNTQ5IDQzNiA1MjZUNDA5IDQ3OFQzOTUgNDQ3UTM3OCA0MjQgMzQ1IDQwN1QyODYgMzkwJyxcbiAgICAweDRCOiAnOTggNTQyUTc1IDU0MiA3NSA1NjBRNzUgNTg4IDEyMyA2MThRMTMyIDYyNCAxOTkgNjU3VDI3NSA2OTRRMjkxIDcwMyAzMTUgNzAzUTMyNyA3MDMgMzMyIDY5OVQzMzggNjkwVDMzOSA2NzBRMzM5IDU5NiAzMjMgNTA1VDI4MyAzMzdUMjM3IDE5NFQxOTggOTBMMTgxIDUzUTE3MCAzMSAxMzYgOFQ2OCAtMTdINjVRNDAgLTE3IDQwIDBMNzYgOTJRMTEyIDE4NSAxNTAgMzIyVDE5NCA1NjRWNTc4TDE2OCA1NjVRMTI1IDU0MiA5OCA1NDJaTTgzNCAxNDJRODM0IDEyNSA4MTkgMTAwVDc3NCA0OFQ2OTIgM1Q1NzYgLTE2SDU2MFE1NDAgLTE2IDUwOCA2UTQ2OSAzMyA0MjIgMTA4VDM0MiAyNjdUMzA5IDM5OFEzMDkgNDExIDMxMCA0MTdUMzIwIDQ0MlQzNDcgNDgyUTQwMSA1NDIgNTE3IDYxNVQ3MTAgNzAyUTcxMiA3MDIgNzIxIDcwMlQ3MzUgNzAzUTc3MiA3MDMgNzkxIDY5MFE4MTkgNjc0IDgxOSA2NDZUNzkyIDU5N1Q3MzMgNTc0SDcyMlE3MDQgNTg0IDcwNCA1OTlRNzA2IDYwNyA3MDAgNjEwVDY3MiA2MTdMNjYwIDYxM1E2MDkgNTk1IDUyNCA1MzhUNDIzIDQ1MFY0NDBRNDIzIDM3NiA0ODggMjQ3VDYwNCA4M1E2MjEgNzAgNjQwIDcwUTY3NyA3MCA3MDEgODJRNzEzIDg3IDcxOCAxMDFUNzM3IDEzMlQ3ODMgMTYwUTc5MiAxNjMgODA3IDE2M1E4MzQgMTYzIDgzNCAxNDInLFxuICAgIDB4NEM6ICc2MyAtMTdRNDEgLTE3IDQxIDBRNDEgMjIgODUgNTRRMTAxIDY4IDExMyA5MlQxMzMgMTQxVDE1NCAyMTlUMTgyIDMxNVEyMzAgNDYyIDMwNiA1NTNRMzQ1IDU5OSAzOTEgNjMyVDQ3OCA2NzhUNTQzIDY5N1Q1ODIgNzAzUTU4NCA3MDMgNTg5IDcwM1Q1OTggNzAyUTY0MyA3MDIgNjY2IDY3NlQ2ODkgNjEzUTY4OSA1ODggNjgzIDU3NVE2NzQgNTUxIDYzMiA1MjRUNTUyIDQ5NlE1MzAgNDk2IDUzMCA1MTJRNTMwIDUxNyA1MzEgNTI1VDUzMyA1MzhRNTMzIDU1OSA1MjIgNTc3VDQ4MCA1OTZINDc2UTQ2MiA1OTYgNDUxIDU4OFQ0MTUgNTQ0UTM1MCA0NDcgMzEwIDI4MVEyODQgMTgxIDI2MSAxMzZMMjU1IDEyNEgyODVRMzQyIDEyMyA0NDEgMTA3VDU4MyA5MEw1OTYgODlRNjAzIDExNiA2NDcgMTQ0VDcyOSAxNzNRNzUxIDE3MyA3NTEgMTU3UTc1MSAxMTggNjg1IDYwVDUyMyAtMTVRNTE0IC0xNiA0NzkgLTE2UTQyMSAtMTYgMzIwIDBUMTcxIDE4SDE1NUwxNDIgMTBROTggLTE3IDYzIC0xNycsXG4gICAgMHg0RDogJzM4IDIwUTM4IDU5IDYwIDk5VDEwNCAxMzlRMTA2IDEzOSAxMjYgMTI1VDE3NiAxMDZIMTgxUTIwMCAxMDYgMjIxIDEzOVQyODYgMjgxUTMyMiAzNzAgMzQyIDQ1MVQzNjggNTgxVDM3NiA2MzRRMzg0IDY1NyA0MjAgNjgwVDQ4NyA3MDNRNTAyIDcwMyA1MDcgNjk2VDUyMiA2NDlRNTM4IDU4OSA1NTQgNTM3UTU3OSA0NTMgNjA5IDM3MlQ2NjAgMjQ4VDY4NiAyMDJRNjg3IDIwMSA3MzkgMjQ0VDgzMCAzMjJMMTE2NiA2NDJRMTIyNSA3MDAgMTIzMCA3MDFRMTIzMCA3MDEgMTIzNyA3MDNRMTI1OCA3MDMgMTI1OCA2NjdMMTI1MyA2MzdRMTI0OCA2MDcgMTI0MSA1NThUMTIyNyA0NTFUMTIxNCAzMjZUMTIwOSAyMDJRMTIwOSA3NyAxMjMyIDc3UTEyMzcgNzcgMTI2OSA5NFQxMzI2IDExMkgxMzI5UTEzNTMgMTEyIDEzNTMgOTRRMTM1MyA4MSAxMzM0IDYwUTEzMTEgMzcgMTI0OCA3VDExNTAgLTI0SDExNDFIMTEzNVExMDg1IC0yNCAxMDc0IDI2UTEwNjQgNzUgMTA2NCAxMzRRMTA2NCAyMzkgMTA4NiA0MjZRMTA4NyA0MzAgMTA4NyA0MzRMMTA2MSA0MTBRODcxIDIyNyA3ODMgMTQ5TDY5NCA3NlE2NTMgNDQgNjQ3IDQwVDYzMSAzNFE2MjAgMzQgNjE2IDM3VDU5NCA2M1E1NDYgMTI1IDUxNCAxOThRNDY3IDMwNyA0MjMgNDQ5TDQxOCA0NjZMNDEyIDQ0NFEzNzYgMzEwIDMwNiAxNTNRMjc4IDg4IDI1MSA0NVQyMDEgLTE4VDE2MyAtNDNUMTMxIC00OVExMDIgLTQ4IDcwIC0zMVQzOCAyMCcsXG4gICAgMHg0RTogJzQ3IDEzOVE4MSAxMDUgMTIyIDEwNVExMzcgMTA1IDE0NyAxMTdRMTU5IDEzNCAxODIgMTk5VDIzNCAzODFUMjc0IDYxMFEyNzUgNjM0IDI4NCA2NDdRMjk3IDY2NiAzMjcgNjg0VDM4OSA3MDNRNDAzIDcwMyA0MDggNjk1VDQyOCA2NDVRNDgwIDQ5MCA1NjcgMjk4UTYyOCAxNjMgNjczIDEwM1E2NzQgMTAyIDY3NCAxMDJUNjc1IDEwNlE3MzIgMzMxIDgwMyA1NTFRODQyIDY3NCA4NzUgNzI1UTkwOCA3NzUgOTY2IDgwN1QxMDgxIDg0MEgxMDg0UTExMDUgODQwIDExMDUgODAzUTExMDUgNzY4IDEwODggNzMzVDEwNTEgNjg5UTEwNDUgNjg2IDEwMzIgNjg2UTk4NiA2ODMgOTQ4IDY2M1Q5MDEgNjI0UTg4MSA1NzkgODM3IDQzMFQ3NjAgMTU0TDcyNiAyOFE3MjUgMjggNzI1IDI4VDcyMyAyNVE3MTYgMCA2ODIgLTI0VDYxMSAtNDhRNjAwIC00OCA1OTUgLTQ1VDU3NiAtMjNRNTIyIDQ0IDQ4MCAxMjRRNDE3IDI0MyAzMzIgNDYzTDMyOCA0NzNMMzI1IDQ1N1EyOTEgMjkzIDIyNyAxMjRRMTU5IC00OSA3MiAtNDlRMzggLTQ5IDUgLTI4US0yNCAtOCAtMjQgMjFRLTI0IDU4IC0zIDk4VDQxIDEzOUg0NycsXG4gICAgMHg0RjogJzQzMyA3MDNRNDU2IDcwMyA0NTYgNjg1UTQ1NiA2NzIgNDQxIDY1NVQ0MDcgNjI3UTQwMiA2MjMgMzc4IDYxMVQzMjggNTc5VDI3NiA1MjRRMjA3IDQzNCAyMDcgMzI0UTIwNyAyMjIgMjcwIDE1M1Q0NDEgODRRNTY2IDg0IDY1MSAxNzdUNzM3IDQwMFY0MDVRNzM3IDQ5NiA2OTMgNTQ5VDU3NiA2MDNRNTQyIDYwMyA1MTAgNTYwUTQ5MCA1MzcgNDcyIDUwMlQ0NDIgNDU0UTM5NyA0MTIgMzQ2IDQwOVEzMjAgNDA5IDMyMCA0MjdRMzIwIDQzMCAzMjIgNDM2UTMzMSA0NjUgMzYwIDUwN1Q0MzMgNTk0VDU0MiA2NzFUNjc3IDcwM1E3NzYgNzAzIDgyOSA2MzZUODgyIDQ2OFE4ODIgMzY5IDgzMSAyNzdUNzAyIDEyMlQ1MjggMjFUMzQzIC0xN1EyMTQgLTE3IDEzOSA2MVQ2MyAyNTdRNjMgMzM2IDk0IDQwOVQxNzMgNTM0VDI3MiA2MjVUMzY3IDY4NFQ0MzIgNzAzSDQzMycsXG4gICAgMHg1MDogJzE3MCAtNjdRMTQ3IC02NyAxNDcgLTQ5UTE0NyAtNDIgMTYyIC04VDIwNCA5OVQyNTMgMjU0UTI3NCAzMzIgMjg4IDQxNVQzMDUgNTQyTDMwOCA1ODVRMjc3IDU4NSAyMzQgNTc3VDE3OSA1NTdRMTcyIDU1MCAxNjYgNTMyVDE1NiA1MDlRMTQwIDQ4NCAxMDUgNDY2VDQ0IDQ0N1EyMCA0NDcgMjAgNDY1UTIwIDQ4MiAzNCA1MTBUNzYgNTY1UTEyMiA2MDggMTczIDYzMlEyNzkgNjg2IDQ0OCA2ODZINDk1SDUzN1E2MjIgNjg2IDY3OCA2NzdUNzg0IDYzN1E4NDYgNTk4IDg0NiA1MzNRODQ2IDQ1MiA3NzYgMzc1VDU5NyAyNTJUMzc4IDIwNkgzNjZMMzU4IDE4MVEzNDEgMTMwIDMxNiA2OFQyODIgLTdRMjYyIC0zMyAyMzAgLTUwVDE3MCAtNjdaTTcwMSA0NjhRNzAxIDUxMiA2NjEgNTQwVDU3MCA1NzdUNDYxIDU4Nkg0NDhWNTgyUTQ0NiA1NzYgNDQzIDU0NVQ0MjggNDQ3VDM5NSAzMDFMMzg5IDI4MFEzOTAgMjgwIDM5OCAyODRUNDE5IDI5NVQ0NDEgMzAzUTQ0MyAzMDQgNDg0IDMwNlQ1NzIgMzIxVDY1MSAzNTlRNzAxIDQwMiA3MDEgNDY4JyxcbiAgICAweDUxOiAnODc0IDQ1M1E4NzQgMzcyIDgzNiAyOThUNzUwIDE3N1Q2MzggODlUNTQzIDMzVDQ4NiA4TDQ4MyA3UTQ4NSA1IDUyMyAtN1Q2MjIgLTMyVDcyNiAtNDZRNzQxIC00NiA3NDYgLTQ1VDc1NSAtNDFUNzYyIC0yN1E3NzAgLTEgODA2IDIzVDg3OCA1MEg4OTBROTA1IDQyIDkwNSAzM1E5MDUgLTggODM4IC02OFQ2NzAgLTE0NVE2NjIgLTE0NiA2MjggLTE0NlE1MzggLTE0NiAzODkgLTEwMFQxNjQgLTUwUTEzMiAtNTAgMTMyIC0zMlQxNjIgMTFUMjI3IDQ3UTIzMSA0OCAyODYgNTFUMzk0IDYyVDUxOCAxMDBUNjQxIDE4MFE3MzAgMjcxIDczMCAzODdRNzMwIDQ3OCA2NzMgNTQwVDUyMCA2MDJRNDEwIDYwMiAzMzcgNTI1VDI2NCAzNTVRMjY0IDI4NCAzMTAgMjQ0VDQyMCAyMDNRNDc2IDIwMyA1NjggMjIyUTU5NCAyMjIgNTk0IDIwNFE1OTQgMTg0IDU2NSAxNjFUNTA4IDEyOFE0MzMgMTAzIDMxNiAxMDNRMjI3IDEwMyAxNzQgMTU3VDEyMCAyOTBRMTIwIDM4MiAxODIgNDcxVDM0MyA2MjBUNTQ4IDY5N1E1NzggNzAzIDYwMSA3MDNRNjA0IDcwMyA2MTEgNzAzVDYyMyA3MDJRNjYzIDcwMiA2ODcgNjk2UTc2MCA2NzkgODE3IDYxOFQ4NzQgNDUzJyxcbiAgICAweDUyOiAnMTU5IDBRMTU5IDUgMTcyIDM0VDIwNSAxMTRUMjQ1IDIyOVQyODQgMzg2VDMwOSA1NzVWNTg1SDMwNFEzMDMgNTg1IDI5NSA1ODVUMjgyIDU4NFEyMzMgNTc5IDIwNyA1NzBUMTc1IDU1M1QxNjUgNTMxVDE1NiA1MDlRMTQwIDQ4NCAxMDUgNDY2VDQ0IDQ0N1EyMCA0NDcgMjAgNDY1UTIwIDQ4MiAzNCA1MTBUNzYgNTY1UTEyMiA2MDggMTczIDYzMlEyNzkgNjg2IDQ0OCA2ODZINTA1SDU4MlE2ODMgNjg2IDc0NSA2NzJUODM0IDYxMVE4NDIgNTk0IDg0MiA1NjVRODQyIDUyMyA4MjQgNDg0VDc4MCA0MTlUNzIyIDM3MFQ2NjkgMzM2VDYzMiAzMThMNjE5IDMxMkw2MjYgMzAyUTY0MCAyNzkgNjY3IDIyN1Q2OTYgMTcyUTcxNyAxMzMgNzM1IDExMlQ3NjIgODhUNzg0IDg0UTgyNCA4NCA4NzIgMTE4VDk1NyAxNTNROTgxIDE1MyA5ODEgMTM2UTk4MSAxMTQgOTM3IDc4VDgyMCAxM1Q2ODQgLTE3UTY0NiAtMTcgNjE2IDhUNTY5IDY2VDUyNiAxNTFUNDc3IDIzNFE0NjEgMjU2IDQ0NiAyNjVRNDM3IDI3MiA0MjEgMjc0UTQwMCAyNzQgNDAwIDI5MVE0MDAgMzExIDQzMCAzMzZUNDk1IDM3MVE0OTYgMzcxIDU0MyAzNzRUNjI3IDM5MlQ2ODEgNDM2UTY5OSA0NjcgNjk5IDUwM1E2OTkgNTUwIDY0NCA1NjhUNDcxIDU4Nkg0NDlWNTgyUTQ0OSA1ODEgNDQ3IDU1OVQ0MzggNDk5VDQyMiA0MTNUMzkzIDI5OFQzNDggMTY1UTMxMyA3MyAyOTYgNDVRMjgyIDI0IDI0OSA0VDE4NSAtMTdRMTU5IC0xNyAxNTkgMCcsXG4gICAgMHg1MzogJzIwNCA0NzZRMjA0IDUyNSAyNDggNTc3VDM3MiA2NjZUNTM5IDcwM1Q2NzQgNjgzVDcyMSA2MTJRNzIxIDU4OCA3MTQgNTY5UTcwNCA1NDcgNjY5IDUyNFQ2MDEgNDk5UTU3MyA0OTkgNTczIDUxNlE1NzMgNTIxIDU3NSA1MjdUNTc3IDU0M1E1NzcgNTYzIDU2OCA1NzRUNTQ4IDU4OEw1MzkgNTkwUTQ5MCA2MDMgNDQ0IDYwM1E0MTggNjAzIDM5NCA1OTdUMzY0IDU4M1EzNDggNTY3IDM0OCA1MzNRMzQ4IDQ5MyAzODIgNDY2VDQ1OSA0MjVUNTU1IDM4N1Q2MzMgMzMwUTY2MiAyOTIgNjYyIDI0OVE2NjIgMTUzIDU0NCA2OVQyNTcgLTE2UTIxOCAtMTYgMjA4IC0xNVExMTggMSA2NCA0NlEyNSA3NiAyNSAxMjZRMjUgMTg1IDgyIDIzNVQyMDMgMjkwSDIwN1EyMjkgMjkwIDIzMSAyNzRRMjMxIDI0MyAxODAgMjEzUTE3MyAyMDkgMTcyIDIwNlQxNzAgMTg5VDE3MSAxNzBUMTgzIDE1MFQyMTYgMTIxUTI3MyA4MyAzNTYgODNRNDEyIDgzIDQ1OSAxMDBRNDkzIDExMSA1MDcgMTQxUTUxOCAxNjUgNTE4IDE4NVE1MTggMjA4IDUwNiAyMjhUNDc4IDI2MlQ0MzcgMjg4VDM5OCAzMDZUMzYwIDMyMFEzMTYgMzM1IDI4NSAzNTJUMjM5IDM4NFQyMTUgNDE2VDIwNSA0NDNUMjA0IDQ2N1Y0NzYnLFxuICAgIDB4NTQ6ICc2MSA0NjJINTlRMzggNDYyIDM4IDQ3OVEzOCA1MjggMTA5IDU5NFQyODkgNjgzTDMwNCA2ODVMODM3IDY4N0w4NDYgNjkzUTg4OSA3MjAgOTIzIDcyMFE5NDcgNzIwIDk0NyA3MDJROTQ1IDY3MSA4OTIgNjMxVDc3NiA1ODNRNzc0IDU4MyA3NzIgNTgzVDc2OSA1ODJUNzY2IDU4Mkw3NjQgNTgxSDc1OFE3NTMgNTgxIDc0NCA1ODFUNzIyIDU4MFQ2OTMgNTgwVDY2MiA1ODBINTYzTDUxNCAzODVRNTA3IDM1NSA0OTMgMjk5VDQ3NSAyMjVUNDYwIDE3MlQ0NDMgMTE5VDQyNiA3NlQ0MDIgMjRRMzg2IC0xMSAzNTUgLTMzVDMwNCAtNjFUMjY2IC02OVEyNDIgLTY5IDI0MiAtNTBRMjQzIC00NSAyNTMgLTI1VDI3OCAzMlQzMDcgMTE1TDM2NCAzNDBRNDA1IDUxMSA0MTMgNTM4VDQzNiA1ODBIMjA3UTIwMiA1NzIgMjAwIDU2OFQxOTcgNTYxVDE5NSA1NTJUMTkwIDUzN1ExNzYgNTExIDEzNSA0ODdUNjEgNDYyJyxcbiAgICAweDU1OiAnMTI0IDU4NlExMDcgNTg2IDc0IDU2OVQxNSA1NTJIMTNRLTEwIDU1MiAtMTAgNTcwUS0xMCA2MDUgNzAgNjQ1VDIyMiA2ODZRMjgzIDY4NiAyODMgNjMxUTI4MyA1OTAgMjQ2IDUwNFQxNzIgMzI2VDEzNSAxODFRMTM1IDEzMCAxNTcgMTA3VDIwNSA4M1EyMjEgODMgMjU5IDEwNlEzNDcgMTY1IDQ1MyAzMDFUNjA0IDU0OFE2MDcgNTU3IDYxMiA1NjlUNjE5IDU4N1Q2MjQgNjAwVDYyOCA2MTJUNjMyIDYyMVQ2MzcgNjI4VDY0MSA2MzRUNjQ3IDY0MFQ2NTQgNjQ1VDY2MiA2NTJRNzA2IDY4NiA3NDggNjg2UTc3MSA2ODYgNzcxIDY2OVE3NzEgNjU2IDc1NCA2MTRUNzAwIDQ2N1Q2MzAgMjI5UTYxNSAxNjggNjEwIDEwNVE2MTAgODggNjE3IDc4TDY0MSA5MFE2ODEgMTExIDcwNiAxMTJRNzMzIDExMiA3MzMgOTVRNzMzIDgyIDcxNCA2MFE2OTQgNDAgNjMzIDEwUTU2NyAtMjMgNTMyIC0yNFE1MDcgLTI0IDQ5NSAtMTdRNDY2IC00IDQ2NiAzMlE0NjYgOTYgNTAwIDIyNVEyNzcgLTE3IDEwMiAtMTdRNTYgLTE3IDIzIDE3VC0xMCAxMThRLTEwIDE2NCAxMyAyMzRUNjQgMzYzVDExNSA0ODFUMTM5IDU2N1ExMzkgNTg2IDEyNCA1ODYnLFxuICAgIDB4NTY6ICcyNSA2MDhRMjUgNjI4IDYwIDY1N1QxNDggNjg2UTE4NCA2ODMgMjEzIDY3MVQyNzMgNjI1VDMyNyA1MzhUMzYzIDM5NFQzODAgMTg0TDM4MSAxMzRMMzk5IDE0OFE1MDMgMjI2IDU3NCAzMDJUNjY3IDQxNVQ2ODkgNDY3UTY4OCA0NzQgNjg0IDQ4MlQ2NzIgNTAyVDY0NSA1MjFUNjAwIDUzMlE1NzYgNTMyIDU3NiA1NjdRNTc2IDYwNCA1OTcgNjQ0VDY0MSA2ODVINjQ5UTcwMSA2ODUgNzM3IDY0OFQ3NzQgNTQ1UTc3NCA0NTcgNzAzIDMzM1Q0NjEgNjZRMzk3IDEzIDMzMiAtMzJUMjU1IC03N1EyMzcgLTc3IDIzNyAtMzBWLTIzUTI0MSAyMCAyNDEgMTA5UTI0MSA0ODMgMTE1IDU2OVE5MSA1ODYgNTAgNTg5UTI1IDU4OSAyNSA2MDgnLFxuICAgIDB4NTc6ICcyNSA2MDdRMjUgNjI5IDYyIDY1N1QxNDIgNjg2UTIwNSA2ODYgMjQ4IDY0N1QzMTIgNTQxVDMzOSA0MTFUMzQ3IDI3NVEzNDcgMjQ5IDM0NSAyMDNWMTg5UTM3NSAyMTkgNDQ5IDMxNlQ1ODcgNTE2UTYyOSA1ODQgNjI5IDU4N1E2MjkgNTg5IDYyNiA1OTdUNjIyIDYwN1E2MjIgNjI5IDY1OCA2NTZUNzMyIDY4Nkg3NDRRNzU1IDY4MCA3NTcgNjc4UTc1NyA2NzcgNzY5IDY0OVQ3OTkgNTc3VDgzNSA0NzVUODc0IDMzOVQ5MDQgMTgzUTkwOCAxNTcgOTEwIDE1MUw5MjUgMTY5UTk5NyAyNTIgMTA1OSAzNDNUMTEyMSA0NzRRMTEyMCA0OTggMTEwMyA1MTNUMTA1OSA1MzJRMTAzNiA1MzIgMTAzNiA1NjhRMTAzNiA2MDAgMTA1MyA2MzZUMTA5MCA2ODNMMTA5NyA2ODZIMTEwOVExMTQ3IDY4NCAxMTc2IDY1MlQxMjA2IDU1MVExMjA2IDQ2MCAxMTMxIDMyMFQ4OTcgN1E4NTkgLTMzIDg0MCAtNTJUODE2IC03NFQ4MDQgLTc3UTc4OCAtNzcgNzg0IC0zMlE3ODMgLTI4IDc4MyAtMjZRNzc0IDEwOCA3NDQgMjM5VDY5MSA0MzZUNjY1IDUwMVE2NjQgNTAxIDY0OSA0NzVUNjAyIDQwMFQ1MjggMjg5VDQyMCAxNDZUMjgwIC0xNVEyNDMgLTU2IDIzMSAtNjZUMjEwIC03N1ExOTEgLTc3IDE5MSAtNDBRMTkxIC0zOCAxOTUgLTRUMjA0IDkxVDIwOSAyMTdRMjA5IDI5MCAyMDIgMzUxVDE3NyA0NjlUMTI2IDU1N1Q0NSA1ODlRMjUgNTg5IDI1IDYwNycsXG4gICAgMHg1ODogJzc2MiA1NjJRNzYyIDU3OSA3MzcgNTg0VDcxMSA2MDRRNzExIDYzMCA3NTMgNjU4VDgzNCA2ODZRODY0IDY4NiA4ODUgNjY5VDkwNiA2MjdROTA2IDU4MCA4MzQgNTIyVDYxNCAzNzlMNTg0IDM2MlYzNTdRNTg1IDM1NCA1ODkgMzE1VDU5NyAyMzNUNjAzIDE4M1E2MTAgMTMyIDYyNyAxMTZUNjcxIDEwMFE2NzggMTAwIDcwNCAxMTNUNzU0IDEyNlQ3NzggMTA3UTc3NiA3OSA3MzMgNDVUNjI2IDJRNjE1IDEgNTc4IDFRNTQyIDEgNTM1IDNRNTIxIDcgNTEwIDE1VDQ5MSAzMVQ0NzcgNTRUNDY3IDc4VDQ2MCAxMDhUNDU2IDEzN1Q0NTIgMTcwVDQ0OSAyMDFRNDQ3IDIyMCA0NDUgMjQwVDQ0MiAyNzBMNDQxIDI4MVE0MzUgMjgxIDM1NyAyMzNRMjQwIDE2NSAyMDYgMTM1UTIwMCAxMjggMjAwIDEyNFEyMDAgMTEzIDIwOCAxMDhUMjI2IDEwMVQyNDQgOTZUMjUyIDgyUTI1MiA2MSAyMTQgMzFUMTI5IDFIMTIwUTk3IDEgNzcgMTZUNTYgNjBRNTYgMTA1IDEzMyAxNjhUNDE0IDM0NVE0MjggMzUyIDQzMSAzNTRUNDMzIDM1OVE0MjIgNDkzIDQxNCA1MjJRNDA3IDU1MSAzOTUgNTY2VDM3MyA1ODNUMzUwIDU4NkgzNDFMMzMyIDU4MFEyOTAgNTYwIDI2NSA1NjBRMjQzIDU2MCAyNDMgNTc3UTI0MyA1ODUgMjQ4IDU5NlQyNjkgNjI0VDMwNiA2NTNUMzY1IDY3NlQ0NDcgNjg2SDQ1NlE0NzIgNjg2IDQ4NCA2ODNUNTE0IDY3MVQ1NDMgNjM3VDU2MiA1NzZRNTY1IDU1NyA1NzAgNTAxTDU3NyA0MzdRNTc3IDQzNiA2MTMgNDU3VDY5NCA1MDZUNzU2IDU1MVE3NjIgNTU4IDc2MiA1NjInLFxuICAgIDB4NTk6ICc3MyA1NTVRNDkgNTU1IDQ5IDU3M1E0OSA2MDIgMTEwIDY0NFQyMzkgNjg2UTMxOSA2ODYgMzc2IDYyNFE0MTYgNTg0IDQ0NCA1MTFUNDgzIDM2MVQ0OTkgMjQwVDUwMyAxNzNRNTAzIDE2NSA1MDQgMTY1UTUwNiAxNjUgNTI0IDE4NFQ1NTYgMjE4UTYzMSAyOTcgNjc0IDM3N1Q3MTggNDg1UTcxOCA1MDUgNjk5IDUyNlE2NzMgNTUyIDYyOCA1NTJRNjE5IDU1MiA2MTMgNTYyVDYwNyA1OTBRNjA3IDYxNyA2MjEgNjQ1VDY1OCA2ODVRNjYxIDY4NiA2NzEgNjg2UTcxOCA2ODYgNzU3IDY1MlQ3OTcgNTQ1UTc5NyA0NzYgNzQ5IDM2OVQ2MDIgMTQ2UTUwMCAyOSAzNzEgLTY3VDE3NiAtMTY0UTExMiAtMTY0IDc0IC0xMjBUMzYgLTI5UTM2IDUgNTUgMzZUOTUgNjdRMTA0IDY3IDEwOCA1OVQxMTUgMzlUMTI4IDEyVDE1NCAtMTJRMTgzIC0zMCAyMTYgLTMwUTIzOSAtMzAgMzA1IDdMMzYxIDQ0TDM2NyA0OVY1NFEzNjcgOTUgMzY0IDE0M1QzNTEgMjczVDMxMiA0MjlUMjQzIDU0NlEyMDYgNTgxIDE1NiA1ODhMMTQ2IDU4MVExMDggNTU1IDczIDU1NScsXG4gICAgMHg1QTogJzYyMiA1NzRRNTIyIDU3OSA0MjAgNTc5SDM5NlEzNzMgNTc5IDM2NCA1NzRUMzUxIDU1MFEzMzkgNTE2IDI5NyA0OTBUMjE4IDQ2MlExOTUgNDYyIDE5NSA0NzlRMTk1IDQ4NyAxOTcgNDkyUTIxOCA1NjUgMzEzIDYyNVQ1MDkgNjg1UTU2NCA2ODUgNjUwIDY4M1Q3NTUgNjgwUTc4NyA2ODAgODA3IDY4M1Q4MzEgNjg2UTg1MyA2ODYgODUzIDY2OVE4NTMgNjU3IDgyNiA2MjZRNzQyIDUzMiA2NDEgNDM3TDYxOSA0MTVMNjIyIDQxNFE2MjYgNDE0IDYzMSA0MTRUNjQyIDQxNFE2OTcgNDExIDY5NyAzODhRNjk3IDM2NyA2NzAgMzQ1VDYwNyAzMjNRNjA1IDMyMyA1OTIgMzI1VDU0NiAzMjlINTIyTDQ5MCAzMDJRNDU3IDI3NCA0MDAgMjI2VDI4OSAxMzZMMjYwIDExM0wzMTggMTEyUTM0NSAxMTEgNDUyIDEwOVQ1ODcgMTA2SDYyN1E2NTAgMTQzIDY1NiAxNzBRNjY2IDE5NyA3MTAgMjI1VDc4OCAyNTNRODExIDI1MyA4MTEgMjM3UTgxMSAyMTEgNzgxIDE2MFQ3MTAgNzdRNjE5IDAgNTE1IDBRNTA3IDAgNDk3IDBUNDg0IDFRNDM0IDEgMzE5IDNUMTc3IDZRMTIzIDYgOTUgMlE4MyAyIDcxIDBINjhRNDYgMCA0NiAxN1E0NiAyOCA1OCA0NFE2OCA1NiAxMDAgODBUMjEwIDE2NVQzODMgMzA3TDQwOCAzMjlIMzYxTDMxNCAzMzBRMjk3IDMzOCAyOTcgMzUwUTI5NyAzNjggMzIwIDM4OFQzNjggNDEzUTM3NSA0MTUgNDQxIDQxNUg1MDZMNjQ3IDU1NUw2NjQgNTc0SDYyMicsXG59LHtcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3QgdGV4T2xkc3R5bGU6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xuICAgIDB4MzA6IFsuNDUyLCAuMDIyLCAuNV0sXG4gICAgMHgzMTogWy40NTMsIDAsIC41XSxcbiAgICAweDMyOiBbLjQ1MywgMCwgLjVdLFxuICAgIDB4MzM6IFsuNDUyLCAuMjE2LCAuNV0sXG4gICAgMHgzNDogWy40NjQsIC4xOTQsIC41XSxcbiAgICAweDM1OiBbLjQ1MywgLjIxNiwgLjVdLFxuICAgIDB4MzY6IFsuNjY1LCAuMDIyLCAuNV0sXG4gICAgMHgzNzogWy40NjMsIC4yMTYsIC41XSxcbiAgICAweDM4OiBbLjY2NiwgLjAyMSwgLjVdLFxuICAgIDB4Mzk6IFsuNDUzLCAuMjE2LCAuNV0sXG4gICAgMHg0MTogWy43MjgsIC4wNSwgLjc5OCwge2ljOiAuMDIxLCBzazogLjE5NH1dLFxuICAgIDB4NDI6IFsuNzA1LCAuMDIyLCAuNjU3LCB7c2s6IC4xMzl9XSxcbiAgICAweDQzOiBbLjcwNSwgLjAyNSwgLjUyNywge3NrOiAuMTM5fV0sXG4gICAgMHg0NDogWy42ODMsIDAsIC43NzEsIHtzazogLjA4MzN9XSxcbiAgICAweDQ1OiBbLjcwNSwgLjAyMiwgLjUyOCwge2ljOiAuMDM2LCBzazogLjExMX1dLFxuICAgIDB4NDY6IFsuNjgzLCAuMDMyLCAuNzE5LCB7aWM6IC4xMSwgc2s6IC4xMTF9XSxcbiAgICAweDQ3OiBbLjcwNCwgLjExOSwgLjU5NSwge3NrOiAuMTExfV0sXG4gICAgMHg0ODogWy42ODMsIC4wNDgsIC44NDUsIHtzazogLjExMX1dLFxuICAgIDB4NDk6IFsuNjgzLCAwLCAuNTQ1LCB7aWM6IC4wOTcsIHNrOiAuMDI3OH1dLFxuICAgIDB4NEE6IFsuNjgzLCAuMTE5LCAuNjc4LCB7aWM6IC4xNjEsIHNrOiAuMTY3fV0sXG4gICAgMHg0QjogWy43MDUsIC4wMjIsIC43NjIsIHtzazogLjA1NTZ9XSxcbiAgICAweDRDOiBbLjcwNSwgLjAyMiwgLjY5LCB7c2s6IC4xMzl9XSxcbiAgICAweDREOiBbLjcwNSwgLjA1LCAxLjIwMSwge3NrOiAuMTM5fV0sXG4gICAgMHg0RTogWy43ODksIC4wNSwgLjgyLCB7aWM6IC4xNTksIHNrOiAuMDgzM31dLFxuICAgIDB4NEY6IFsuNzA1LCAuMDIyLCAuNzk2LCB7c2s6IC4xMTF9XSxcbiAgICAweDUwOiBbLjY4MywgLjA1NywgLjY5Niwge2ljOiAuMDM3LCBzazogLjA4MzN9XSxcbiAgICAweDUxOiBbLjcwNSwgLjEzMSwgLjgxNywge3NrOiAuMTExfV0sXG4gICAgMHg1MjogWy42ODIsIC4wMjIsIC44NDgsIHtzazogLjA4MzN9XSxcbiAgICAweDUzOiBbLjcwNSwgLjAyMiwgLjYwNiwge2ljOiAuMDM2LCBzazogLjEzOX1dLFxuICAgIDB4NTQ6IFsuNzE3LCAuMDY4LCAuNTQ1LCB7aWM6IC4yODgsIHNrOiAuMDI3OH1dLFxuICAgIDB4NTU6IFsuNjgzLCAuMDI4LCAuNjI2LCB7aWM6IC4wNjEsIHNrOiAuMDgzM31dLFxuICAgIDB4NTY6IFsuNjgzLCAuMDUyLCAuNjEzLCB7aWM6IC4wNDUsIHNrOiAuMDI3OH1dLFxuICAgIDB4NTc6IFsuNjgzLCAuMDUzLCAuOTg4LCB7aWM6IC4wNDYsIHNrOiAuMDgzM31dLFxuICAgIDB4NTg6IFsuNjgzLCAwLCAuNzEzLCB7aWM6IC4wOTQsIHNrOiAuMTM5fV0sXG4gICAgMHg1OTogWy42ODMsIC4xNDMsIC42NjgsIHtpYzogLjA0Niwgc2s6IC4wODMzfV0sXG4gICAgMHg1QTogWy42ODMsIDAsIC43MjUsIHtpYzogLjA0Miwgc2s6IC4xMzl9XSxcbn07XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtTVkdDaGFyTWFwLCBBZGRQYXRoc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuaW1wb3J0IHt0ZXhPbGRzdHlsZSBhcyBmb250fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9udHMvdGV4L3RleC1vbGRzdHlsZS5qcyc7XG5cbmV4cG9ydCBjb25zdCB0ZXhPbGRzdHlsZTogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDMwOiAnMzkgMjEzUTM5IDI3NCA1MyAzMTlUODkgMzg5VDEzOSA0MjlUMTkyIDQ0OFQyNDIgNDUyUTM0NyA0NTIgNDAwIDQwMFE0NjAgMzM1IDQ2MCAyMTNRNDYwIC0yMiAyNTAgLTIyUTM5IC0yMiAzOSAyMTNaTTM2NCAyNDJRMzY0IDI3OSAzNjMgMzAxVDM1NSAzNDhUMzM4IDM4NVQzMDYgNDA2VDI1NCA0MTVRMjUwIDQxNSAyNDUgNDE1VDIzOCA0MTZRMjE3IDQxNiAxOTAgNDA0VDE1MCAzNjhRMTM2IDMzOSAxMzYgMjIxUTEzNiAxMTQgMTQ2IDc4VDIwMCAyM1EyMTkgMTYgMjUwIDE2UTI4MCAxNiAyOTkgMjNRMzQxIDQxIDM1MiA3N1QzNjQgMjIxVjI0MicsXG4gICAgMHgzMTogJzExNiA0MTBRMTc2IDQxMiAyMTUgNDIzVDI2OSA0NDNUMjg4IDQ1M0gyOTFRMjkzIDQ1MyAzMDEgNDQ3VjI1NFEzMDEgNjIgMzAzIDYwUTMwNyA1MiAzMjIgNDlUMzk0IDQ2UTQxOCA0NiA0MjIgNDNUNDI2IDIzUTQyNiA4IDQyNCA0VDQxMSAwUTQwNyAwIDM2OSAxVDI1OCAyVDE0OCAxVDEwNiAwUTk2IDAgOTQgNFQ5MSAyM1E5MSA0MCA5NSA0M1QxMjMgNDZRMTgwIDQ2IDE5NSA0OVQyMTUgNjFRMjE2IDYzIDIxNiAyMjBWMzc2UTE5MiAzNjcgMTE5IDM2NEg5M0w4NiAzNzFWNDAzTDkyIDQxMEgxMTYnLFxuICAgIDB4MzI6ICc1NSAzMzRRNTUgMzg2IDEwNSA0MTlUMjM2IDQ1M1EzMzMgNDUzIDM5MCA0MTNUNDQ4IDMwN1E0NDggMjc4IDQzNyAyNTZUNDA2IDIxOFQzNjUgMTkzVDMxOCAxNzJUMjc3IDE1MUwyNDggMTM0UTIxOSAxMTggMTkxIDEwMlQxNjMgODRUMjY3IDgzTDM4MiA4NUgzOTFRMzk5IDk5IDQwNiAxMjZRNDEwIDE0MyA0MTMgMTQ1VDQyOSAxNDhRNDQwIDE0OCA0NDIgMTQ3VDQ0OSAxMzlRNDQ5IDEzNyA0MzUgNzNUNDIwIDdRNDIwIDYgNDE0IDBIMjMzUTk0IDAgNzEgMFQ0NiA1UTQ2IDUgNDYgNlE0NCA4IDQ0IDI0UTQ0IDM5IDQ2IDQxUTQ3IDQ0IDk4IDc4VDIxMiAxNTVUMjk0IDIxMlEzNDcgMjU3IDM0NyAzMDRRMzQ3IDM1NCAzMDYgMzgwVDIwMyA0MDdRMTUwIDQwNyAxMjAgMzc3UTExOCAzNzUgMTIzIDM3M1ExNDYgMzYyIDE0NiAzMzJRMTQ2IDMxNSAxMzMgMzAyVDEwMSAyODhRODUgMjg4IDcwIDI5OFQ1NSAzMzQnLFxuICAgIDB4MzM6ICc2OSAzMTJRNjkgMzc3IDEyMiA0MTRUMjMzIDQ1MlEzMzMgNDUyIDM4MSA0MDlUNDMwIDMxM1E0MzAgMjY4IDQwMiAyMjNUMzExIDE0OUwzMDEgMTQ0UTMwNyAxNDMgMzE3IDE0MFQzNTUgMTIzVDQwMiA5MlQ0MzkgNDRUNDU2IC0yNVE0NTYgLTEwMSAzOTYgLTE1OFQyNDEgLTIxNlExNTQgLTIxNiA5OCAtMTczVDQyIC02OFE0MiAtNTggNDQgLTUwVDUwIC0zNVQ1NyAtMjVUNjYgLTE3VDc1IC0xM1Q4MiAtMTBMODcgLThROTIgLTcgMTAyIC03UTEzMiAtNyAxNDcgLTI1VDE2MiAtNjZRMTYyIC0xMTIgMTE4IC0xMjVMMTEzIC0xMjZRMTEzIC0xMjkgMTI3IC0xNDBUMTczIC0xNjJUMjM5IC0xNzNRMjY4IC0xNzMgMjkyIC0xNThRMzQ1IC0xMjQgMzQ1IC0yNFEzNDUgMzMgMzI5IDY3UTI5OCAxMjUgMjI5IDEyNUgyMTBIMTcyUTE2NiAxMzEgMTY2IDE0MlExNjYgMTU5IDE3MiAxNjFRMTc4IDE2MSAyMDggMTY0VDI0NCAxNjlRMjUxIDE2OSAyNjMgMTc2VDI5MSAxOTlUMzE2IDI0NVQzMjcgMzE0UTMyNyA0MTMgMjM4IDQxM1ExODIgNDEzIDEzMCAzNjlRMTc3IDM1MCAxODEgMzEyUTE4MSAyODkgMTY2IDI3M1QxMjUgMjU3UTEwMiAyNTcgODYgMjcyVDY5IDMxMicsXG4gICAgMHgzNDogJzE2MyAwUTEzOSAwIDEwOSAwVDcxIC0xUTQzIC0xIDM2IDJUMjggMTVWMjdWNDZMMTkwIDI3MFEzMjUgNDU3IDMzMCA0NjJRMzMzIDQ2NCAzNTIgNDY0SDM3MUwzNzcgNDU4VjQ2SDQ2NEw0NzEgNDBWNkw0NjQgMEgzNzdWLTY1Vi0xMDhRMzc3IC0xMzEgMzc5IC0xMzdUMzkxIC0xNDRRNDA5IC0xNDggNDQ2IC0xNDhINDY0UTQ2OCAtMTUxIDQ3MSAtMTU1Vi0xODdMNDY0IC0xOTRINDUzUTM5NSAtMTkyIDMyNSAtMTkyUTIyMiAtMTkyIDIxMCAtMTk0SDE5OUwxOTMgLTE4OFYtMTU0TDE5OSAtMTQ4SDIyOFEyNDEgLTE0OCAyNTAgLTE0OFQyNjUgLTE0NlQyNzUgLTE0NVQyODEgLTE0M1QyODQgLTE0MVQyODYgLTEzOFQyODkgLTEzNFYwSDE2M1pNMjk1IDQ2VjM1MEw3NSA0NkgyOTUnLFxuICAgIDB4MzU6ICcxNTkgLTQ0UTE1OSAtNjYgMTQ1IC04MFQxMDkgLTk2SDEwMkwxMDcgLTEwNVExNDggLTE3MyAyMjggLTE3M1EyNTUgLTE3MyAyODAgLTE2MlEzNTEgLTEyOCAzNTEgLTZWOFEzNTEgNjcgMzQ0IDk4VDMxNiAxNTFRMjg4IDE3NiAyNTUgMTc2UTE3NSAxNzYgMTM2IDEwOVExMjkgMTAwIDExNCAxMDBROTcgMTAwIDk1IDEwNlE5MyAxMTAgOTMgMjc3VjQwM1E5MyA0NTEgOTggNDUxUTEwMCA0NTIgMTAzIDQ1MlExMDUgNDUyIDEyNCA0NDVUMTc3IDQzMVQyNTEgNDIzUTI5NCA0MjMgMzI4IDQzMFQzODAgNDQ1VDQwMSA0NTNRNDEwIDQ1MyA0MTAgNDM1VjQyMlEzMzIgMzMxIDIwMyAzMzFRMTUyIDMzMSAxNDAgMzM5UTEzOSAzMzkgMTM5IDI1NFYxNjhRMTk0IDIxNCAyNTYgMjE0UTMzMiAyMTQgMzkwIDE1NFQ0NDggMFE0NDggLTk1IDM4MSAtMTU1VDIyOSAtMjE2UTE1MyAtMjE2IDEwNCAtMTY2VDUwIC00OVE1MCAtMTUgNjYgLTFUMTA1IDEzUTEyOCAxMyAxNDMgLTNUMTU5IC00NCcsXG4gICAgMHgzNjogJzQyIDMxM1E0MiA0MDEgNjggNDcyVDEzMyA1ODNUMjE1IDY0NFQyOTYgNjY1SDMwNFEzMTcgNjY1IDMyOSA2NjRUMzYwIDY1N1QzOTMgNjQwVDQxOCA2MDhUNDMyIDU1N1E0MzIgNTMzIDQyMiA1MTlUNDAxIDUwMlQzODAgNDk4UTM1OCA0OTggMzQzIDUxMlQzMjggNTUwUTMyOCA1OTEgMzY3IDYwMUwzNzIgNjAyUTM3MiA2MDQgMzY1IDYwOVQzNDEgNjIwVDMwNyA2MjZRMjYwIDYyNiAyMjYgNjAwVDE3NCA1MzdRMTQ3IDQ4MyAxNDMgMzc2VjM1NlExOTIgNDM0IDI2NiA0MzRRMzE3IDQzNCAzNTcgNDA5UTQwNiAzNzUgNDM1IDMxN1E0NTYgMjY4IDQ1NiAyMTBWMTkyUTQ1NiAxNjkgNDUxIDE0OVE0NDAgOTAgMzg3IDM0VDI1MyAtMjJRMjI1IC0yMiAxOTkgLTE0VDE0MyAxNlQ5MiA3NVQ1NiAxNzJUNDIgMzEzWk0yNTEgMzk2UTIxMSAzOTYgMTc4IDM1NFQxNDUgMjE3UTE0NSAxNTkgMTUyIDEyMlQxNjYgNzNUMTg3IDQ3UTIxNiAyMSAyNTIgMjFRMjk0IDIxIDMyMSA0N1EzNDIgNjggMzQ5IDk5VDM1NiAyMDNWMjMyUTM1NiAyNjQgMzU0IDI4NVQzNDUgMzMxVDMyMiAzNzNUMjgwIDM5NVEyNzQgMzk2IDI1MSAzOTYnLFxuICAgIDB4Mzc6ICc3NSAyNDZRNjQgMjQ2IDYyIDI0N1Q1NSAyNTVRNTUgMjU5IDcyIDM1N1Q5MCA0NThMOTQgNDYySDk5UTEwNCA0NjMgMTA5IDQ2M0gxMjFRMTI4IDQ2MCAxMjggNDUyUTEyOCA0NDUgMTM0IDQ0MVQxNjUgNDM1VDIzMyA0MzJUMzU2IDQzMUg0NzhMNDg1IDQyNVYzOTJMNDE0IDI5OFE0MDggMjkwIDM4NSAyNjBUMzU4IDIyM1QzMzcgMTkxVDMxNyAxNTRUMzAyIDExNlQyODkgNjhUMjgyIDE0VDI3NSAtNTVUMjc0IC0xMzdRMjc0IC0xNzMgMjcyIC0xNzdRMjYyIC0yMTYgMjIzIC0yMTZRMTcwIC0yMTYgMTcwIC0xNTdWLTE0OFExNzIgLTc4IDE4OSAtMTJUMjM3IDEwOVQyODggMTk2VDMzOCAyNjZRMzQ1IDI3NSAzNDggMjc5UTM5NSAzNDAgMzk1IDM0MlEzOTYgMzQzIDM3NiAzNDNUMjc0IDM0M1ExMjIgMzQyIDExNyAzMzlUMTAzIDI5NFQ5MCAyNDhRODggMjQ2IDc1IDI0NicsXG4gICAgMHgzODogJzY5IDQ5NlE2OSA1NzAgMTI0IDYxOFQyNDcgNjY2UTMyMSA2NjYgMzc1IDYyNFQ0MjkgNTE1UTQyOSA0NjggNDA1IDQzM1QzMjAgMzYxTDM0NiAzNDRRMzg1IDMyMCA0MDMgMzAxVDQzOSAyNTBRNDU2IDIxMiA0NTYgMTgxVjE3MlYxNjBRNDU2IDE0MSA0NDkgMTE5VDQyNiA3MVQzODYgMjZUMzI2IC04VDI0NiAtMjFRMTYwIC0yMSAxMDIgMzBUNDMgMTU1UTQzIDI2NSAxNjcgMzMyTDE3NiAzMzdMMTYxIDM0N1ExMDUgMzg0IDg3IDQyM1E2OSA0NTggNjkgNDk2Wk0zNzEgNTEzUTM3MSA1NjcgMzM0IDU5NlQyNDkgNjI2UTE5OCA2MjYgMTYzIDU5OFQxMjcgNTMyUTEyNyA1MjEgMTI5IDUxMVQxMzggNDkyVDE1MCA0NzZUMTY3IDQ2MFQxODUgNDQ3VDIwNyA0MzNUMjI4IDQyMEwyODQgMzg0TDI5NCAzOTFRMzQ2IDQyNCAzNjMgNDY5UTM3MSA0ODYgMzcxIDUxM1pNMTkwIDIxVDI1MCAyMVQzNTEgNTZUMzkzIDE0MFEzOTMgMTgwIDM2MiAyMTNRMzU0IDIyMSAzMTcgMjQ2VDI0NiAyOTJMMjEyIDMxM1EyMTAgMzEzIDIwMCAzMDdUMTczIDI4N1QxNDIgMjU2VDExNyAyMTJUMTA2IDE1N1ExMDYgMTAwIDE0OCA2MScsXG4gICAgMHgzOTogJzE3MSAtMTAxUTE3MSAtMTE4IDE2MyAtMTMwVDE0NiAtMTQ2VDEzNCAtMTUxUTEzMiAtMTUxIDEzMiAtMTUyUTEzMiAtMTU0IDE0MCAtMTU5VDE2NyAtMTY4VDIwNiAtMTczUTI3NCAtMTczIDMxNyAtMTA4UTM1NiAtNTAgMzU2IDc5Vjg2TDM1MCA3N1EzMDggOSAyMzEgOVExNTAgOSA5MiA4MVE0MiAxNDEgNDIgMjI4UTQyIDI4OSA2NCAzMzNROTMgMzkwIDE0MiA0MjFUMjM1IDQ1MlEyMzcgNDUyIDI0NCA0NTJUMjU1IDQ1M1EyODkgNDUzIDMyMSA0MzlUMzg2IDM5MVQ0MzcgMjkwVDQ1NyAxMjhRNDU3IC0yOSAzODEgLTEyMlQyMDYgLTIxNlExNDggLTIxNiAxMDggLTE4N1Q2NyAtMTA0UTY3IC03NSA4NCAtNjJUMTE5IC00OVExNDEgLTQ5IDE1NiAtNjNUMTcxIC0xMDFaTTI0MiA0NlEyOTMgNDYgMzI0IDk0VDM1NSAyMjNRMzU1IDMyMyAzMzcgMzU2UTMxNiA0MDEgMjc1IDQxMFEyNjcgNDEyIDI0OCA0MTJRMjA2IDQxMiAxNzkgMzg2UTE1NSAzNjAgMTQ5IDMyOFQxNDMgMjI0UTE0MyAxMjAgMTYzIDg4UTE5MiA0NiAyNDIgNDYnLFxuICAgIDB4NDE6ICc1NzYgNjY4UTU3NiA2ODggNjA2IDcwOFQ2NjAgNzI4UTY3NiA3MjggNjc1IDcxMlY1NzFRNjc1IDQwOSA2ODggMjUyUTY5NiAxMjIgNzIwIDU3UTcyMiA1MyA3MjMgNTBUNzI4IDQ2VDczMiA0M1Q3MzcgNDFUNzQzIDM5TDc1NCA0NVE3ODggNjEgODAzIDYxUTgxOSA2MSA4MTkgNDdRODE4IDQzIDgxNCAzNVE3OTkgMTUgNzU1IC03VDY3NSAtMzBRNjU5IC0zMCA2NDggLTI1VDYzMCAtOFQ2MjEgMTFUNjE0IDM0UTYwMyA3NyA1OTkgMTA2VDU5NCAxNDZUNTkxIDE2MFYxNjNINDYwTDMyOSAxNjRMMzE2IDE0NVEyNDEgMzUgMTk2IC03VDExOSAtNTBUNTkgLTI0VDMwIDQzUTMwIDc1IDQ2IDEwMFQ3NCAxMjVRODEgMTI1IDgzIDEyMFQ4OCAxMDRUOTYgODRRMTE4IDU3IDE1MSA1N1ExODkgNTcgMjc3IDE4MlE0MzIgNDAwIDU0MiA2MjVMNTU5IDY1OUg1NjdRNTc0IDY1OSA1NzUgNjYwVDU3NiA2NjhaTTU4NCAyNDlRNTc5IDMzMyA1NzcgMzg2VDU3NSA0NzNUNTc0IDUyMFY1ODFMNTYzIDU2MFE0OTcgNDI2IDQxMiAyOTBMMzcyIDIyOEwzNzAgMjI0SDM3MUwzODMgMjI4TDM5MyAyMzJINTg2TDU4NCAyNDknLFxuICAgIDB4NDI6ICczMDQgMzQyUTI5MiAzNDIgMjkyIDM1M1EyOTIgMzcyIDMyMyAzOTFRMzMxIDM5NiA0MTcgNDI4VDUzMyA0ODdRNTYzIDUxMiA1NjMgNTU1VjU2MlE1NjMgNTc1IDU1NyA1ODlUNTMwIDYxOFQ0NzUgNjM2UTQyOSA2MzYgMzk2IDYxM1QzMzAgNTM5UTI2MyA0NDYgMjEwIDIzOFExOTYgMTgzIDE3MyAxMjBRMTM1IDMxIDEyMSAxNlExMDggMSA4NSAtMTBUNDcgLTIyVDMyIC0xMFEzMiAtNSA0NCAxOFQ3NyA5M1QxMTIgMjA2UTEzNSAyOTYgMTU0IDM5NVQxODIgNTUwVDE5MSA2MTVRMTkxIDYxNiAxOTAgNjE2UTE4OCA2MTYgMTc5IDYxMVQxNTcgNjAxVDEzMSA1OTRRMTEzIDU5NCAxMTMgNjA1UTExMyA2MjMgMTQ0IDY0NFExNTQgNjUwIDIwNSA2NzZUMjY3IDcwM1EyNzcgNzA1IDI3OSA3MDVRMjk1IDcwNSAyOTUgNjkzUTI5NSA2ODYgMjg4IDYzNVQyNzggNTc1UTI3OCA1NzIgMjg3IDU4MlEzMzYgNjM1IDQwMiA2NjlUNTQwIDcwNFE2MDMgNzA0IDYzMyA2NzNUNjY0IDU5OVE2NjQgNTU5IDYzOCA1MjNUNTgwIDQ2MlE1NTMgNDQwIDUwNCA0MTNMNDkxIDQwN0w1MDQgNDAyUTU2NiAzODEgNTk2IDMzOFQ2MjcgMjQ0UTYyNyAxNzIgNTc1IDExMFQ0NDQgMTNUMjg0IC0yMlEyMDggLTIyIDE1OCAyOFExNDQgNDIgMTQ2IDUwUTE1MCA2NyAxNzggODVUMjMwIDEwM1EyMzYgMTAzIDI0NiA5NVQyNjcgNzVUMzAyIDU2VDM1NyA0N1E0MzYgNDcgNDg2IDkzUTUyNiAxMzYgNTI2IDE5OFYyMTBRNTI2IDIyOCA1MTggMjQ5VDQ5MSAyOTJUNDM2IDMzMFQzNTAgMzQ1UTMzNSAzNDUgMzIxIDM0NFQzMDQgMzQyJyxcbiAgICAweDQzOiAnMjAxIC0yNVExNjcgLTI1IDEzNiAtMTRUNzUgMjNUMjkgOTRUMTIgMjAyUTEyIDI5MCA1MCAzOTRUMTYxIDU3NFEyMjcgNjQyIDMwMyA2NzNUNDMzIDcwNFE0MzUgNzA1IDQ1NyA3MDVRNTMzIDcwMSA1MzMgNjQwUTUzMyA2MDYgNTA3IDU0OFQ0NjQgNDc0UTQzMSA0NDQgMzk2IDQ0NFEzODEgNDQ0IDM4MSA0NTNRMzgxIDQ1OSAzODggNDczVDQwNyA1MTNUNDI4IDU2M1E0MzMgNTgwIDQzMyA1OTRRNDMzIDYzNiAzODEgNjM2UTMxNCA2MzYgMjYwIDU5NFQxNzUgNDg5VDEyOCAzNjNUMTEyIDI0N1ExMTIgMTU3IDE1MyAxMDFUMjczIDQ0UTM0NyA0NCAzOTggMTIxUTQxMyAxNDQgNDM3IDE1N1Q0ODEgMTcxUTQ5NiAxNzEgNDk2IDE2MFE0OTYgMTUwIDQ3NiAxMjNRNDI2IDU2IDM1MCAxNlQyMDEgLTI1JyxcbiAgICAweDQ0OiAnMzcgNDc1UTE5IDQ3NSAxOSA0ODdRMTkgNTM2IDEwMyA2MDRUMzI3IDY4MkgzNTZRMzg2IDY4MyA0MDggNjgzSDQxOVE0NzUgNjgzIDUwNiA2ODFUNTgyIDY2OFQ2NjcgNjMzUTc2NiA1NzEgNzY2IDQ1MFE3NjYgMzY1IDcyMyAyODdUNjExIDE1MlQ0NTUgNTdUMjc5IDZRMjQ4IDEgMTYwIDBRMTQ4IDAgMTMxIDBUMTA4IC0xUTcyIC0xIDcyIDExUTcyIDI0IDkwIDQwVDEzMyA2NEwxNDQgNjhMMTUyIDg4UTI0NyAzMjggMjcyIDU4N1EyNzUgNjEzIDI3MiA2MTNRMjcyIDYxMyAyNjkgNjEzUTIyNSA2MTAgMTk1IDYwMlQxNDkgNTc5VDEyOSA1NTZUMTE5IDUzMlExMTggNTMwIDExNiA1MjVUMTEzIDUxOFExMDIgNTAyIDgwIDQ5MFQzNyA0NzVaTTY2NSA0MDdRNjY1IDU5NiA0MTIgNjEzUTQwMyA2MTQgMzgzIDYxNFEzNzAgNjE0IDM3MCA2MTJRMzcwIDU5OCAzNjMgNTQyVDMyMyAzNTdUMjQyIDEwM0wyMjggNjlIMjY1UTM5MSA3MyA0ODEgMTE5UTUzNiAxNDggNTc1IDE4OFQ2MzMgMjY4VDY1OCAzMzhUNjY1IDM5MlY0MDcnLFxuICAgIDB4NDU6ICcxNDQgNDcwUTE0NCA1NTYgMjQwIDYzMFQ0NTEgNzA1UTU2NCA3MDUgNTY0IDYzN1E1NjQgNjExIDU0MCA1NzNRNTI5IDU1OSA1MDUgNTQ3VDQ2NCA1MzRRNDQ4IDUzNCA0NDggNTQ1UTQ0OCA1NTIgNDU1IDU2MlE0NjMgNTc3IDQ2MyA1OTFRNDYzIDYwMCA0NjIgNjA0VDQ1NiA2MTZUNDM2IDYyN1Q0MDAgNjM1UTM5NiA2MzUgMzkwIDYzNVQzODAgNjM2UTI5MSA2MzYgMjU4IDU2OFEyNDUgNTQ0IDI0NSA1MTZRMjQ1IDQ2MyAyOTAgNDM4VDM5MSA0MTBRNDE1IDQxMCA0MTUgMzk4UTQxNSAzOTIgNDA3IDM4MFQzNzYgMzU2VDMyNiAzNDFRMjg4IDM0MCAyNjAgMzI3UTIxOCAzMTEgMTg3IDI3NlQxNDMgMjA4VDEzMCAxNTFRMTMwIDExMyAxNTYgODhUMjExIDU1VDI2OCA0N1EzNDkgNDcgNDAzIDEyNVE0MTUgMTQ0IDQzOSAxNTdUNDgzIDE3MVE0OTkgMTcxIDQ5OSAxNjBRNDk5IDE0OCA0NzUgMTIwVDQxMyA1OVQzMTUgM1QxOTcgLTIyUTEyNCAtMjIgNzcgMTRUMzAgMTA1UTMwIDEyNiAzOSAxNTRUNjYgMjE2VDEyMiAyODhUMjA5IDM1NEwyMjMgMzYyUTE0NCA0MDAgMTQ0IDQ3MCcsXG4gICAgMHg0NjogJzE5OSA1NzlRMTgxIDU3OSAxODEgNTkwUTE4MSA1OTggMTg4IDYxMVQyMTIgNjM5VDI2MCA2NjZUMzM1IDY4MlEzMzYgNjgyIDM0OSA2ODJUMzgzIDY4MlQ0MzEgNjgyVDQ5MyA2ODNUNTYxIDY4M1E3NzYgNjgyIDc4NCA2ODFRODI2IDY3MyA4MjkgNjQ3UTgyOSA2MjAgNzk3IDYwMFQ3NDQgNTgwUTcyOCA1ODAgNzI4IDU5NVE3MjkgNjA3IDcxMyA2MTBRNjk4IDYxMyA1OTggNjE0SDUwMEw0OTkgNjEwUTQ5OSA1OTggNDY3IDQ4NlQ0MjggMzY3UTQyOCAzNjUgNTUxIDM2NUg2NzRRNjgzIDM2MCA2ODQgMzU1UTY4NyAzNDYgNjc3IDMyOVE2NjYgMzEyIDY0MiAyOTlUNTk4IDI4NVE1ODYgMjg1IDU4MiAyOTZINDAyTDM5NCAyNzdRMzg2IDI1OCAzNzMgMjI5VDM0NiAxNjdUMzE1IDEwMlQyODYgNTFRMjY1IDIyIDIyNSAtNVQxMzMgLTMyUTEwOCAtMzIgODcgLTI1VDU0IC03VDMzIDE1VDIxIDM1VDE4IDQ3UTE4IDYwIDQ0IDgwVDk4IDEwM1ExMDggMTAzIDExMSAxMDFUMTE5IDg4UTEzMCA2NiAxNTAgNTRUMTc5IDM5VDE5NSAzN1ExOTkgMzcgMjAzIDQzUTIxNyA2NyAyNDUgMTI1VDMxOCAzMDBUMzkxIDUzMlEzOTMgNTQzIDM5OCA1NjRUNDA2IDU5OFQ0MDkgNjEzVDMzOSA2MTRIMjY5UTIyOSA1NzkgMTk5IDU3OScsXG4gICAgMHg0NzogJzIxNiA2OFExNTUgNjggMTE1IDEwMFQ1OSAxNzdUNDQgMjczUTQ0IDI5OSA1MCAzMzNUNzMgNDIxVDEzMyA1MzNUMjM5IDYzMlEzNDYgNzA0IDQ2NiA3MDRRNTA4IDcwNCA1MTUgNzAzUTU1NSA2OTYgNTc3IDY4MVQ1OTkgNjM1UTU5OSA2MDUgNTcwIDU2MFQ1MjMgNDk2UTQ5MCA0NjYgNDU1IDQ2NlE0NDAgNDY2IDQ0MCA0NzVUNDY5IDUyNlQ0OTkgNTg5UTQ5OSA2MDUgNDg5IDYxN1E0NjAgNjM2IDQwMyA2MzZRMzQzIDYzNiAyOTUgNjExVDIyMCA1NDhUMTc0IDQ2NFQxNTAgMzgyVDE0NCAzMThRMTQ0IDI0MSAxODAgMTg5VDI4NyAxMzdRMzI1IDEzNyAzNTkgMTYwUTQyOCAyMDUgNDY2IDMyMlE0NzIgMzQyIDUwMSAzNTlUNTUxIDM3NlE1NTcgMzc2IDU2MCAzNzNUNTY0IDM2OEw1NjUgMzY1UTU2MCAzNDEgNTUxIDMwMlQ1MTIgMTczVDQ1MSAzMVEzNTkgLTExOSAyMDQgLTExOVExNjMgLTExOCAxMjcgLTEwOVQ3NCAtOTFUNTMgLTc3UTUyIC03NSA1MiAtNzFRNTIgLTU0IDc5IC0zNVQxMzIgLTE0SDE0MEwxNTEgLTE5UTIxMCAtNDkgMjgxIC00OUgyODlRMzEyIC00OSAzMjkgLTMxUTM1MSAtNyAzNzIgMzZUNDA1IDEwOVQ0MTYgMTQyTDQwOCAxMzZRNDAxIDEzMSAzOTIgMTI1VDM2OSAxMTFUMzM4IDk2VDMwMyA4MlQyNjEgNzJUMjE2IDY4JyxcbiAgICAweDQ4OiAnMTggNDg3UTE4IDQ5NiAyOSA1MTdUNjcgNTY2VDEyNyA2MjFUMjE2IDY2NVQzMzAgNjgzUTM1OSA2ODMgMzc2IDY2OVQzOTcgNjQzVDQwMCA2MjJRNDAwIDU4NCAzODIgNDg4VDM0OCAzNDNRMzQ4IDM0MiA0NjcgMzQySDU4N0w1OTQgMzY2UTYxNSA0NDAgNjQ4IDUzNFQ2OTAgNjQxUTcwMSA2NTYgNzIzIDY2OVQ3NjQgNjgzUTc4MyA2ODMgNzgzIDY3Mkw3NTAgNTc4UTcxNiA0ODUgNjc3IDM0NlQ2MjUgMTAxUTYyNCA5MiA2MjMgODJUNjIyIDY1VDYyMSA1NlE2MjEgMjAgNjU4IDIwUTY2NiAyMCA3MDEgMjVRNzA5IDUyIDczNiA2OVQ3ODUgODdRODAzIDg3IDgwMyA3NVQ3OTEgNDRUNzU0IDNUNjg1IC0zM1Q1ODggLTQ4UTU2OCAtNDggNTYyIC00NlE1MjIgLTMxIDUyMiAxM1YyM1E1MzEgMTI5IDU2MiAyNTBMNTY5IDI4MUw1NjUgMjgwUTU2MSAyNzggNTU2IDI3N1Q1NDkgMjc0TDQzOCAyNzNIMzI4TDMyMSAyNDlRMzA3IDIwMiAyNzUgMTA3VDIzMiAwUTIxOSAtMTYgMTk2IC0yOFQxNTUgLTQxUTE0OSAtNDEgMTQ1IC0zOVQxNDAgLTM0VDEzOSAtMjlRMTM5IC0yNCAxNDggLTNUMTgxIDg2VDIzMyAyNDdRMjQwIDI3MCAyNDAgMjcyUTI0MCAyNzMgMTk0IDI3M0gxNjlRMTM5IDI3MyAxMzkgMjg1UTEzOSAyOTUgMTUzIDMwOFQxODcgMzMyUTIwNiAzNDEgMjM2IDM0MkwyNjAgMzQzTDI2NCAzNTlRMjc4IDQxNCAyODkgNDgyVDMwMCA1NzhRMzAwIDYxMyAyNjAgNjEzSDI1NFExOTggNjEzIDE2OSA1OTJRMTQ4IDU3OCAxMjcgNTQ0VDEwNCA1MDhRNzIgNDc4IDM3IDQ3NVExOCA0NzUgMTggNDg3JyxcbiAgICAweDQ5OiAnMTc0IDBIMzFRLTEzIDAgLTIxIDJULTMwIDEyUS0zMCAyMyAtMTcgMzZROSA2MCA0MiA2OEwxNTUgNzBRMTg3IDEwMiAyMTQgMTc5VDI1NyAzMzNUMzAyIDQ5MVQzNjYgNjEwTDM2OSA2MTRIMzA1UTIyMSA2MTEgMTg4IDYwN1QxNDUgNTk2VDEyOCA1NjlRMTE5IDU0MyA5NCA1MjlUNDcgNTEyUTI4IDUxMiAyOCA1MjRRMjggNTI3IDMyIDUzOVE1NiA2MTQgMTU5IDY1NFEyMTggNjc4IDMxMiA2ODJRMzE0IDY4MiAzMzkgNjgyVDQwNCA2ODJUNDgxIDY4M0g2MzJRNjQyIDY3OCA2NDIgNjcxUTY0MiA2NTcgNjIxIDY0MVQ1NzcgNjE3UTU3MCA2MTUgNTA3IDYxNEg0NDRRNDI3IDU5MiA0MDYgNTQyUTM4MiA0NzggMzU1IDM2NlQzMTAgMjA5UTI4MCAxMjMgMjM4IDc4TDIzMCA2OUgzMzBRNDQyIDcwIDQ0MiA3NFE0NDMgNzQgNDQzIDc3VDQ0NyA4N1Q0NjAgMTA1UTQ5MCAxMzQgNTI3IDEzN1E1NDUgMTM3IDU0NSAxMjVRNTQ1IDEyMCA1NDIgMTEyUTUzMSA3OCA0OTEgNDlUMzk5IDdRMzc5IDIgMzYwIDJUMTc0IDAnLFxuICAgIDB4NEE6ICcxNDggNzhRMTQ4IDE2IDE4OSAtMTdUMjg2IC01MFEzMTkgLTUwIDM0OCAtMzNUMzk2IDEwVDQyNiA1OVQ0NDQgMTAxTDQ3MSAyMDRRNDk4IDMwNiA1MjEgMzcyUTU3NSA1MzIgNjQ5IDYwNUw2NTkgNjE0SDU5MVE1MTcgNjEzIDQ5NCA2MDdRNDMzIDU5MSA0MDAgNTUwVDM2MCA0NzdRMzUzIDQ1NCAzMjUgNDM3VDI3NSA0MTlRMjU2IDQxOSAyNjAgNDM1UTI4MCA1MjMgMzc2IDU5N1Q1ODMgNjgxUTYwMyA2ODMgNzEzIDY4M0g4MzBRODM5IDY3NCA4MzkgNjcxUTgzOSA2NTQgODEwIDYzNFQ3NTQgNjE0UTczNSA2MTQgNzIxIDYwMVE2ODggNTcxIDY1NCA0OTVUNjAwIDM1MVQ1NjEgMjA5VDU0MSAxMzJRNTA3IDI5IDQxMiAtNDVUMjEzIC0xMTlRMTQxIC0xMTkgOTQgLTc3VDQ3IDMzUTQ3IDU1IDUwIDY5VDU4IDkwVDcxIDEwM1ExMDUgMTMxIDEzNSAxMzFRMTUyIDEzMSAxNTIgMTIwUTE1MiAxMTkgMTUxIDExNFQxNDkgOTlUMTQ4IDc4JyxcbiAgICAweDRCOiAnMTk0IDYxOFExOTMgNjE4IDE4MiA2MTNUMTU2IDYwMVQxMzEgNTk0UTExMyA1OTQgMTEzIDYwNVExMTMgNjIzIDE0NCA2NDRRMTU0IDY1MCAyMDUgNjc2VDI2NyA3MDNRMjc3IDcwNSAyNzkgNzA1UTI5NSA3MDUgMjk1IDY5MVEyOTUgNTY5IDI1MCAzOTdRMjI1IDMwNiAxOTcgMjE3VDE1MSA4MVQxMjggMjVRMTIwIDggOTQgLTdUNDcgLTIyUTMyIC0yMiAzMiAtMTBMNjQgNzZROTUgMTYzIDEzMyAyOTVUMTg1IDUzMFExOTggNjExIDE5NCA2MThaTTMzMSA0MjlRMzMxIDM4MyAzNjQgMjkwVDQ0OSAxMTdUNTQyIDM2UTU3NCAzNiA2MDcgNTFUNjUyIDEwM1E2NjAgMTI0IDY3NyAxMzNUNzA5IDE0M1E3MjcgMTQzIDcyNyAxMjhRNzI3IDExOSA3MjMgMTExUTcwNCA1NiA2MzkgMTdUNDk3IC0yMkg0OTNRNDYzIC0yMiA0MjUgMTZRNDAxIDQwIDM4MiA3MVEzMzUgMTM4IDI5NiAyNDNUMjU2IDM5OVEyNTYgNDM0IDI4OCA0NzNRMzQyIDU0MCA0NzEgNjIyVDY3MCA3MDVRNjkxIDcwNCA3MDMgNjk2UTczMiA2NzggNzMyIDY0NFE3MzIgNjEzIDcxNCA2MDBUNjc3IDU4NlE2NzEgNTg2IDY2NyA1ODdUNjYwIDU5MlQ2NTcgNjA0VjYxOVE2NTcgNjQ3IDYyOSA2NDdRNjIzIDY0NyA2MjAgNjQ2UTU3NiA2MzUgNDk1IDU4M1QzNjUgNDgyUTMzMSA0NDggMzMxIDQyOScsXG4gICAgMHg0QzogJzYyIC0yMlQ0NyAtMjJUMzIgLTExUTMyIC0xIDU2IDI0VDgzIDU1UTExMyA5NiAxMzggMTcyVDE4MCAzMjBUMjM0IDQ3M1QzMjMgNjA5UTM2NCA2NDkgNDE5IDY3N1Q1MzEgNzA1UTU1OSA3MDUgNTc4IDY5NlQ2MDQgNjcxVDYxNSA2NDVUNjE4IDYyM1Y2MTFRNjE4IDU4MiA2MTUgNTcxVDU5OCA1NDhRNTgxIDUzMSA1NTggNTIwVDUxOCA1MDlRNTAzIDUwOSA1MDMgNTIwUTUwMyA1MjMgNTA1IDUzNlQ1MDcgNTYwUTUwNyA1OTAgNDk0IDYxMFQ0NTIgNjMwUTQyMyA2MzAgNDEwIDYxN1EzNjcgNTc4IDMzMyA0OTJUMjcxIDMwMVQyMzMgMTcwUTIxMSAxMjMgMjA0IDExMkwxOTggMTAzTDIyNCAxMDJRMjgxIDEwMiAzNjkgNzlUNTA5IDUySDUyM1E1MzUgNjQgNTQ0IDg3VDU3OSAxMjhRNjE2IDE1MiA2NDEgMTUyUTY1NiAxNTIgNjU2IDE0MlE2NTYgMTAxIDU4OCA0MFQ0MzMgLTIyUTM4MSAtMjIgMjg5IDFUMTU2IDI4TDE0MSAyOUwxMzEgMjBRMTExIDAgODcgLTExJyxcbiAgICAweDREOiAnMjggOVEyOCAzNyA0MyA2M1Q3MyA5MFE3NyA5MCA4MyA4NFQxMDMgNzBUMTQxIDU3SDE0NlExNjIgNTcgMTc4IDc5VDIyMiAxNjdRMjY2IDI3OSAyOTUgMzcxVDMzNCA1MTNUMzQ5IDU5OFQzNTggNjUxVDM3MSA2NzdRMzk3IDcwNSA0MzIgNzA1UTQ0MiA3MDUgNDQ1IDY5OVQ0NTIgNjY2UTQ1MyA2NjEgNDUzIDY1OVE0NzUgNTM4IDUwOSA0MDVUNTY4IDIwN0w1NzQgMTkyUTU4MSAxNzggNTg3IDE2NFQ1OTQgMTUwUTU5NiAxNTAgNjM1IDE4OVQ2OTMgMjQ4UTc2NSAzMjQgODYzIDQzOFQxMDI0IDYyNlQxMDg5IDcwMVExMDkzIDcwNSAxMTAwIDcwNVExMTExIDcwNSAxMTExIDY4MlExMTExIDY3NSAxMTA4IDY2MFQxMDk5IDYxMVQxMDg2IDU0MFExMDQxIDI3NyAxMDQxIDE0NFExMDQxIDk4IDEwNDQgNzVUMTA1MCA0OFQxMDU5IDQyUTEwNjQgNDEgMTA3NSA0NlExMTAyIDYxIDExMjEgNjFRMTEzNyA2MSAxMTM3IDUwUTExMzcgMjggMTA4NyAwVDEwMDAgLTI5UTk4MyAtMjkgOTcyIC0yM1Q5NTUgLTlUOTQ1IDE2VDk0MiA0NVQ5NDEgODNWOTZROTQxIDE1OCA5NTIgMjU2VDk3NCA0MjJMOTg1IDQ4OVE5ODQgNDg5IDkzOSA0MzZUODIxIDMwMFQ2OTggMTY0UTY2NSAxMjggNjIwIDg1VDU2OCAzN1E1NjQgMzQgNTU4IDM0UTU1MCAzNCA1NDYgMzdUNTM1IDU0UTUxMiA5MSA0OTYgMTI3VDQ1MCAyNTlUMzg5IDQ5OEwzODQgNTE4UTM0OSAzNjcgMjk0IDIyM1QxOTggMTVRMTU1IC01MCAxMTcgLTUwUTg3IC01MCA2MSAtMzVUMzAgLTZRMjggMiAyOCA5JyxcbiAgICAweDRFOiAnMzQzIDcwNVEzNTggNzA1IDM1OCA2OThRMzYwIDY5NiAzNzAgNjU4VDQxMSA1MjRUNDg0IDMxOVE1MzYgMTc0IDU5MCA4Mkw1OTUgNzNMNjE1IDE1MlE2NDYgMjc0IDY4MyA0MDdRNzI5IDU3MSA3NTIgNjM3VDc5OSA3MjdRODUyIDc4MCA5MzcgNzg4UTkzOSA3ODggOTQ3IDc4OFQ5NTggNzg5SDk2MlE5NzkgNzg5IDk3OSA3NjVROTc5IDcyMiA5NTEgNjkyUTk0MiA2ODMgOTI0IDY4M1E4ODggNjgxIDg1OSA2NzJUODE4IDY1NFQ4MDMgNjM5UTc4NCA2MDggNzA4IDMyMlQ2MzEgMTVRNjMxIDE0IDYzMCAxNVE2MzAgMTcgNjI5IDE1UTYyOCAxNCA2MjggMTJRNjIxIC00IDYwMSAtMTdUNTYwIC0zMVE1NTAgLTMxIDU0NiAtMjhUNTMwIC03UTQ4NCA2NyA0NTggMTIzVDM5OCAyNzJRMzUyIDM5MiAzMTQgNTE0TDMwNiA1MzVWNTM0UTMwNiA1MzMgMjk2IDQ4OFQyNzIgMzc5VDIzNCAyMzlUMTg1IDEwMFQxMjcgLTdUNjEgLTUwUTM0IC01MCA0IC0zNFQtMjcgOFEtMjcgMzMgLTEyIDYxVDE4IDkwUTIxIDkwIDM2IDc3VDg3IDU3SDkyUTEwOSA1NyAxMjMgNzhUMTYyIDE3M1EyMDYgMjk5IDIzMiA0MTdUMjY1IDU5OVQyNzYgNjY3UTI4NCA2ODEgMzA0IDY5M1QzNDMgNzA1JyxcbiAgICAweDRGOiAnMzA4IDQyOFEyODkgNDI4IDI4OSA0MzhRMjg5IDQ1NyAzMTggNTA4VDM3OCA1OTNRNDE3IDYzOCA0NzUgNjcxVDU5OSA3MDVRNjg4IDcwNSA3MzIgNjQzVDc3NyA0ODNRNzc3IDM4MCA3MzMgMjg1VDYyMCAxMjNUNDY0IDE4VDI5MyAtMjJRMTg4IC0yMiAxMjMgNTFUNTggMjQ1UTU4IDMyNyA4NyA0MDNUMTU5IDUzM1QyNDkgNjI2VDMzMyA2ODVUMzg4IDcwNVE0MDQgNzA1IDQwNCA2OTNRNDA0IDY3NCAzNjMgNjQ5UTMzMyA2MzIgMzA0IDYwNlQyMzkgNTM3VDE4MSA0MjlUMTU4IDI5MFExNTggMTc5IDIxNCAxMTRUMzY0IDQ4UTQ4OSA0OCA1ODMgMTY1VDY3NyA0MzhRNjc3IDQ3MyA2NzAgNTA1VDY0OCA1NjhUNjAxIDYxN1Q1MjggNjM2UTUxOCA2MzYgNTEzIDYzNVE0ODYgNjI5IDQ2MCA2MDBUNDE5IDU0NFQzOTIgNDkwUTM4MyA0NzAgMzcyIDQ1OVEzNDEgNDMwIDMwOCA0MjgnLFxuICAgIDB4NTA6ICczNyA0NzVRMTkgNDc1IDE5IDQ4N1ExOSA1MzYgMTAzIDYwNFQzMjcgNjgyUTMyOSA2ODIgMzQ0IDY4MlQzODAgNjgyVDQyMSA2ODNINDYzUTYyNSA2ODMgNjk1IDYxNVE3MTggNTkxIDcyNiA1NjRRNzMzIDU0NyA3MzMgNTI1UTczMyA0MTIgNjA3IDMxMlQzMjEgMjA1SDMxMlEyOTMgMjA1IDI5MyAyMTdRMjkzIDIyNCAzMDIgMjM2VDMzMyAyNjBUMzg1IDI3NFE1NTggMjg3IDYxNCA0MDdRNjMzIDQ0NSA2MzMgNDc3UTYzMyA1MTUgNjEyIDU0M1Q1NTYgNTg1VDQ4MSA2MDdUMzk5IDYxNEgzNzBMMzY4IDYwM1EzNTIgNDYzIDMxMiAzMTJUMjQyIDgyVDIwMiAtMTNRMTkwIC0zMyAxNjQgLTQ1VDEyMSAtNTdRMTA4IC01NyAxMDggLTQ1UTEwOCAtNDAgMTIwIC0xMFQxNTEgNzNUMTkyIDE5MFQyMzMgMzQ5VDI2NiA1MzlRMjY3IDU0NiAyNjkgNTY1VDI3MiA1OThUMjc0IDYxM0gyNzBRMjA5IDYxMyAxNjMgNTg4UTEzMSA1NzIgMTEzIDUxOFExMDIgNTAyIDgwIDQ5MFQzNyA0NzUnLFxuICAgIDB4NTE6ICcxMTQgMjg2UTExNCAzNTggMTUxIDQzM1QyNDkgNTY5VDM5MiA2NjdUNTU4IDcwNVE2NTMgNzA1IDcxMyA2NDFUNzc0IDQ2MFE3NzQgMzg5IDc1MCAzMjJUNjg3IDIwNlQ2MDAgMTE0VDUwNCA0NlQ0MTIgNEwzOTkgLTJRNTQyIC02MiA2MzYgLTYyUTY2MCAtNjIgNjcwIC01NFQ2ODYgLTI3VDcwMCAwUTczNCAzNCA3NzAgMzRRNzg3IDM0IDc4NyAyM1E3ODcgLTE4IDcyMCAtNzRUNTYzIC0xMzFRNDg1IC0xMzEgMzUwIC04M1QxNDUgLTM0UTEyNyAtMzQgMTI3IC0yMlExMjcgLTEyIDE0NCA1VDE5MCAzMUwyMDAgMzRMMjM3IDM1UTM4NiAzOCA0NjcgNzlRNTUwIDEyMCA2MTIgMjEwVDY3NSA0MTZRNjc1IDUxMCA2MjUgNTczVDQ4NCA2MzZRNDEwIDYzNiAzNDYgNTg3VDI0OCA0NjlUMjE0IDMzM1EyMTQgMzA2IDIyMSAyODFUMjQzIDIyOVQyODggMTg4VDM2MCAxNzJRNDAzIDE3MiA0NDEgMTg4VDQ5MCAyMDVRNTEwIDIwNSA1MTAgMTkyUTUwNSAxNjIgNDMyIDEzMlQyODcgMTAyUTIwNiAxMDIgMTYwIDE1NVQxMTQgMjg2JyxcbiAgICAweDUyOiAnMzcgNDc1UTE5IDQ3NSAxOSA0ODdRMTkgNTAzIDM1IDUzMFQ4MyA1ODlUMTgwIDY0N1QzMjcgNjgySDM3NFEzODcgNjgyIDQxNyA2ODJUNDY0IDY4M1E1MTkgNjgzIDU1OSA2NzlUNjQyIDY2M1Q3MDggNjI1VDczMSA1NTdRNzMxIDQ4MSA2NjggNDExVDUwNCAzMDBRNTA2IDI5NiA1MTIgMjg2VDUyOCAyNTdUNTUzIDIwMlE1OTQgMTA1IDYxMSA4MlE2MzUgNDcgNjY1IDQ3UTcwOCA0NyA3NDIgOTNRNzU4IDExMyA3ODYgMTI4UTgwNCAxMzYgODE5IDEzN1E4MzcgMTM3IDgzNyAxMjVRODM3IDExNSA4MTggOTJUNzY3IDQzVDY4NyAtMlQ1ODkgLTIyUTU0OSAtMjIgNTE3IDIyVDQ2NyAxMjBUNDIyIDIyMVQzNjIgMjczUTM0NiAyNzMgMzQ2IDI4N1EzNDggMzAxIDM3MyAzMjBUNDM2IDM0MlE0MzcgMzQyIDQ0NiAzNDNUNDYyIDM0NVQ0ODEgMzQ4VDUwNCAzNTNUNTI3IDM2MlQ1NTMgMzc1VDU3NyAzOTNRNTk4IDQxMiA2MTQgNDQzVDYzMCA1MTFRNjMwIDU0NSA2MTMgNTY2VDU0MSA2MDBUMzkzIDYxNFEzNzAgNjE0IDM3MCA2MTNMMzY2IDU4NFEzNDkgNDQ2IDMxMSAzMDdUMjQzIDk2TDIxMyAyNVEyMDUgOCAxNzkgLTdUMTMyIC0yMlExMjUgLTIyIDEyMCAtMThUMTE3IC04UTExNyAtNSAxMzAgMjZUMTYzIDExM1QyMDUgMjM5VDI0NiA0MDhUMjc0IDYwNlY2MTRRMjczIDYxNCAyNTkgNjEzVDIzMSA2MDlUMTk4IDYwMlQxNjMgNTg4UTEzMSA1NzIgMTEzIDUxOFExMDIgNTAyIDgwIDQ5MFQzNyA0NzUnLFxuICAgIDB4NTM6ICc1NTQgNTEyUTUzNiA1MTIgNTM2IDUyMlE1MzYgNTI1IDUzOSA1MzlUNTQyIDU2NFE1NDIgNTg4IDUyOCA2MDRRNTE1IDYxNiA0ODIgNjI1VDQxMCA2MzVRMzc0IDYzNSAzNDkgNjI0VDMxMiA1OTRUMjk1IDU2MVQyOTAgNTMyUTI5MCA1MDUgMzAzIDQ4MlQzNDIgNDQyVDM3OCA0MTlUNDA5IDQwNFE0MzUgMzkxIDQ1MSAzODNUNDk0IDM1N1Q1MzUgMzIzVDU2MiAyODJUNTc0IDIzMVE1NzQgMTMzIDQ2NCA1NlQyMjAgLTIyUTEzOCAtMjIgNzggMjFUMTggMTIzUTE4IDE4NCA2MSAyMjdUMTU2IDI3NFExNzggMjc0IDE3OCAyNjNRMTc4IDI2MCAxNzcgMjU4UTE3MiAyNDcgMTY0IDIzOVQxNTEgMjI3VDEzNiAyMThMMTI3IDIxM0wxMjQgMjAyUTExOCAxODYgMTE4IDE2M1ExMjAgMTI0IDE2NSA4NlQyOTIgNDhRMzc0IDQ4IDQyMyA4NlQ0NzMgMTg2VjE5M1E0NzMgMjY3IDM0NyAzMjdRMjY4IDM2NCAyMzkgMzg5UTE5MSA0MzEgMTkxIDQ4NlExOTEgNTQ3IDI0MiA2MDBUMzU2IDY3OVQ0NzAgNzA1UTQ3MiA3MDUgNDc4IDcwNVQ0ODkgNzA0UTU1MSA3MDQgNTk2IDY4MlQ2NDIgNjEwUTY0MiA1NjYgNjIxIDU0NVE1OTIgNTE2IDU1NCA1MTInLFxuICAgIDB4NTQ6ICc0OSA0NzVRMzQgNDc1IDM0IDQ5MFEzNCA1NTIgMTA2IDYxMVQyNjEgNjgxUTI3MiA2ODMgNTA3IDY4M0g3NDJRNzkwIDcxNyA4MTYgNzE3UTgzMyA3MTcgODMzIDcwOFE4MzMgNjgyIDc5NSA2NTNUNzE0IDYxNVE2OTEgNjEwIDU4OCA2MDlRNDkwIDYwOSA0OTAgNjA3TDQ4MyA1ODBRNDc2IDU1NCA0NjIgNDk2VDQzNSAzOTJRNDEwIDI4OSAzOTUgMjMxVDM2MyAxMTZUMzM1IDM0VDMwOSAtMTVUMjc5IC00N1QyNDIgLTY0UTIzMSAtNjggMjE4IC02OFEyMDMgLTY4IDIwMyAtNTdRMjAzIC01MiAyMTEgLTM4UTIyNCAtNyAyMzQgMjBUMjUxIDY2VDI2OCAxMjNUMjgzIDE3OVQzMDQgMjYxVDMyOCAzNjBRMzQyIDQxNSAzNjAgNDg4UTM4MCA1NjcgMzg0IDU4MlQzOTcgNjA1UTQwMCA2MDcgNDAxIDYwOUgzMDJIMjQ0UTIwMCA2MDkgMTg4IDYwN1QxNjcgNTk2UTE0NSA1NzIgMTQ1IDU0MVExNDUgNTIwIDEwOSA0OThUNDkgNDc1JyxcbiAgICAweDU1OiAnOCA1OTJROCA2MTYgNzAgNjQ5VDE5MyA2ODNRMjQ2IDY4MyAyNDYgNjMxUTI0NiA1ODcgMjA1IDQ5MlQxMjQgMjk3VDgzIDE0M1E4MyAxMDEgMTAwIDc1VDE1NCA0OFEyMDIgNDggMjg3IDEzNVQ0NTAgMzQyVDU2MCA1NTNRNTg5IDYzNSA1OTMgNjQwUTYwMyA2NTYgNjI2IDY2OFQ2NjkgNjgzSDY3MFE2ODcgNjgzIDY4NyA2NzJUNjcwIDYxNlQ2MTcgNDYzVDU0NyAyMjBRNTI1IDEzNyA1MjEgNjhRNTIxIDU0IDUyMiA1MFQ1MzMgNDJMNTQzIDQ3UTU3MyA2MSA1ODggNjFRNjA0IDYxIDYwNCA0N1E1OTkgMTYgNTA2IC0yMlE0ODYgLTI4IDQ2OCAtMjhUNDM2IC0xOFQ0MjEgMThRNDIxIDkyIDQ2OCAyNThRNDY4IDI1OSA0NjcgMjU3VDQ1OSAyNDhRNDI2IDIwNiAzOTEgMTY3VDMwMyA4MVQxOTQgNlQ4MyAtMjJRNjYgLTIyIDU4IC0yMFEyNSAtMTEgNCAxOVQtMTcgOTlRLTE3IDE0NiA4IDIyMFQ2NCAzNThUMTIwIDQ4OFQxNDYgNTg2UTE0NiA2MDQgMTQxIDYwOFQxMjMgNjEzSDEyMFE5OSA2MTMgNzIgNTk3VDI1IDU4MFE4IDU4MCA4IDU5MicsXG4gICAgMHg1NjogJzI1IDYzM1EyNSA2NDcgNDcgNjY1VDEwMCA2ODNRMjkxIDY4MyAyOTEgMzA2UTI5MSAyNjQgMjg4IDIxM1QyODIgMTMyTDI3OSAxMDJRMjgxIDEwMiAzMDggMTI2VDM3OCAxOTFUNDY0IDI3OVQ1NDUgMzgxVDU5NiA0NzlRNjAwIDQ5MCA2MDAgNTAyUTYwMCA1MjcgNTgxIDU1MFQ1MjMgNTc3UTUwNSA1NzcgNTA1IDYwMVE1MDUgNjIyIDUxNiA2NDdUNTQyIDY4MVE1NDYgNjgzIDU1OCA2ODNRNjA1IDY3OSA2MzEgNjQ1VDY1OCA1NTlRNjU4IDQyMyA0ODcgMjE1UTQwOSAxMjYgMzA4IDM3VDE5MCAtNTJRMTc3IC01MiAxNzcgLTI4UTE3NyAtMjYgMTgzIDE1VDE5NiAxMjdUMjAzIDI3MFEyMDMgMzU2IDE5MiA0MjFUMTY1IDUyM1QxMjYgNTgzVDgzIDYxM1Q0MSA2MjBRMjUgNjIwIDI1IDYzMycsXG4gICAgMHg1NzogJzI1IDYzM1EyNSA2NDcgNDYgNjY1VDEwMyA2ODNRMTY4IDY4MyAyMDcgNjMyUTIyOCA2MDggMjQzIDU2OFEyNjkgNDg1IDI2OSAzNzRRMjY5IDMyNCAyNjUgMjcxVDI1NiAxODRMMjUxIDE1MEwyNTIgMTUyUTI1NCAxNTMgMjU3IDE1N1QyNjQgMTY3VDI3NCAxODBUMjg2IDE5N1EzNTkgMjkzIDQyNCAzOThUNTE5IDU1OFQ1NDkgNjE2UTU0OSA2MTggNTQ3IDYyNFQ1NDUgNjM4UTU1MCA2NTQgNTcyIDY2OFQ2MTUgNjgzUTYyNiA2ODMgNjMyIDY3MlQ2NTcgNTk1UTcyNiAzNzAgNzQxIDEyOEw3NDIgMTEwUTc1MiAxMjIgNzY3IDE0MlQ4MjMgMjE3VDg5NCAzMjFUOTUwIDQyNFQ5NzYgNTExUTk3NiA1NDQgOTU4IDU2MFQ5MTggNTc3UTkwNiA1NzcgOTA2IDYwMlE5MDYgNjI5IDkxOCA2NTFUOTQyIDY4MVE5NDggNjgzIDk1NCA2ODNROTgzIDY4MyAxMDA4IDY1OFQxMDM0IDU2OVQ5OTkgNDIxVDkxNSAyNTdUODEzIDEwOVQ3MjQgLTNUNjgxIC00OVE2NjYgLTU5IDY2MCAtNDVRNjU5IC00MSA2NTcgMzVUNjM5IDIzM1Q1OTEgNDc3UTU3MyA1NTEgNTcwIDU1MVE1NjkgNTUxIDU1NCA1MjNUNTA3IDQzOVQ0MzMgMzE1VDMyMyAxNTVUMTgyIC0yNVExNjAgLTUyIDE1MSAtNTNRMTM3IC01MyAxMzcgLTMwUTEzNyAtMjkgMTQ4IDI1VDE3MCAxNjhUMTgxIDMzOFExODEgNDI0IDE2OCA0ODNUMTMxIDU3MVQ4NyA2MDlUNDAgNjIwUTI1IDYyMCAyNSA2MzMnLFxuICAgIDB4NTg6ICczMjQgNjE0UTI5MSA1NzYgMjUwIDU3M1EyMzEgNTczIDIzMSA1ODRRMjMxIDU4OSAyMzIgNTkyUTIzNSA2MDEgMjQ0IDYxNFQyNzEgNjQzVDMyNCA2NzFUNDAwIDY4M0g0MDNRNDYyIDY4MyA0ODEgNjEwUTQ4NSA1OTQgNDkwIDU0NVQ0OTggNDU0TDUwMSA0MTNRNTA0IDQxMyA1NTEgNDQyVDY0OCA1MDlUNzA1IDU2MVE3MDcgNTY1IDcwNyA1NzhRNzA3IDYxMCA2ODIgNjE0UTY2NyA2MTQgNjY3IDYyNlE2NjcgNjQxIDY5NSA2NjJUNzU1IDY4M1E3NjUgNjgzIDc3NSA2ODBUNzk2IDY2MlQ4MDcgNjIzUTgwNyA1OTYgNzkyIDU3MlQ3MTMgNDk5VDUzMCAzNzZMNTA1IDM2MVYzNTZRNTA4IDM0NiA1MTEgMjc4VDUyNCAxNDhUNTU3IDc1UTU2OSA2OSA1ODAgNjlRNTg1IDY5IDU5MyA3N1E2MjQgMTA4IDY2MCAxMTBRNjY3IDExMCA2NzAgMTEwVDY3NiAxMDZUNjc4IDk0UTY2OCA1OSA2MjQgMzBUNTEwIDBRNDg3IDAgNDcxIDlUNDQ1IDMyVDQzMCA3MVQ0MjIgMTE3VDQxNyAxNzNRNDE2IDE4MyA0MTYgMTg4UTQxMyAyMTQgNDExIDI0NFQ0MDcgMjg2VDQwNSAyOTlRNDAzIDI5OSAzNDQgMjYzVDIyMyAxODJUMTU0IDEyMlExNTIgMTE4IDE1MiAxMDVRMTUyIDY5IDE4MCA2OVExODMgNjkgMTg3IDY2VDE5MSA2MEwxOTIgNThWNTZRMTkyIDQxIDE2MyAyMVQxMDUgMFE5NCAwIDg0IDNUNjMgMjFUNTIgNjBRNTIgNzcgNTYgOTBUODUgMTMxVDE1NSAxOTFRMTk3IDIyMyAyNTkgMjYzVDM2MiAzMjdUNDAyIDM1MkwzOTEgNDg5UTM5MSA0OTIgMzkwIDUwNVQzODcgNTI2VDM4NCA1NDdUMzc5IDU2OFQzNzIgNTg2VDM2MSA2MDJUMzQ4IDYxMVEzNDYgNjEyIDM0MSA2MTNUMzMzIDYxNEgzMjQnLFxuICAgIDB4NTk6ICc2NSA1OTlRNjUgNjE4IDEwNyA2NTBUMjA0IDY4M1EyNjcgNjgzIDMxMiA2NDNUMzgwIDUzM1Q0MTQgMzg1VDQyNCAyMTdRNDI0IDE4NiA0MjMgMTYwVDQyMiAxMjNRNDI2IDEyMyA0NjggMTcwVDU2NyAzMDRUNjUwIDQ2OVE2NjEgNTAzIDY2MSA1MTlRNjYxIDU0NiA2MzkgNTcwUTYxNSA1OTEgNTgzIDU5MVE1NjkgNTkxIDU2OSA2MTZRNTY5IDY0MCA1ODIgNjYxVDYxMyA2ODNRNjI0IDY4MyA2MzggNjc5VDY3MSA2NjRUNzAyIDYyNVQ3MTQgNTU4UTcxNCA0NzIgNjM5IDMyOVQ0MjYgNDVRMzYxIC0yMSAyODIgLTgyVDE1NCAtMTQzUTk3IC0xNDMgNjQgLTEwNFQzMSAtMjBRMzEgNCA0NCAyNVQ3MCA0NlE3OCA0NiA4MSAzOVQ4NyAxNlQ5NyAtOVExMjcgLTUxIDE4MiAtNTFRMTg0IC01MSAxODcgLTUwSDE5MFEyMzMgLTQxIDMxNCAyNVEzMzAgMzYgMzMwIDQwUTMzNiA3OSAzMzYgMTc4UTMzNiA1MDggMjIzIDU5NFExOTkgNjE0IDE1OCA2MTlMMTQ4IDYyMEwxMzkgNjExUTExMSA1ODYgODMgNTg2UTY1IDU4NiA2NSA1OTknLFxuICAgIDB4NUE6ICc2OTQgMjIwUTcwOCAyMjAgNzA4IDIxMFE3MDggMTk1IDY5NSAxNjdUNjU4IDEwNVQ1OTMgNDJUNTAyIDNRNDkyIDEgNDU4IDFRNDAwIDEgMjkzIDExVDE1MCAyMlExMTYgMjIgOTIgMTFUNTEgMFEzNyAwIDM3IDEwUTM3IDIxIDYzIDQ0VDE3OSAxNDZUMzY3IDMxOUwzOTEgMzQzSDM0M0wyOTYgMzQ0UTI4NSAzNTAgMjg1IDM1OFEyODUgMzY1IDI4OSAzNzJUMzAwIDM4M1QzMTMgMzkyVDMyNCAzOThMMzI5IDQwMEg0NTBMNTYxIDUxOFE1OTcgNTU4IDYwNyA1NzFMNjIxIDU4N0g1OTZRNTUzIDU4OSA0ODQgNTk5VDM4MyA2MDlRMzQyIDYwOSAzMjYgNTk2VDMwMSA1NTVRMjk0IDUzMyAyNjMgNTE0VDIwOCA0OTJRMTg5IDQ5MiAxODkgNTAzUTE4OSA1MTAgMTk3IDUyOFQyMTUgNTU5UTI0OSA2MDcgMzE4IDY0NVQ0NjYgNjgzUTUwNCA2ODMgNTczIDY3M1Q2NjkgNjYyTDY5MCA2NjFRNzM0IDY4MiA3NDggNjgzUTc2NyA2ODMgNzY3IDY3M1E3NjcgNjY2IDc0NiA2NDBRNjU1IDUzMSA1NTUgNDI4TDUyOSA0MDBRNTI5IDM5OSA1NDMgMzk5UTYwNCAzOTcgNjA0IDM2NlE2MDQgMzUwIDU4NyAzMzdUNTUxIDMyMlE1NDEgMzIyIDUzOSAzMjNRNTI5IDMyOCA1MjkgMzM0UTUyOSAzMzkgNDg3IDM0Mkw0NzAgMzQzTDQ0NiAzMjBRMjcyIDE1MyAyMDAgOTZMMjM1IDk1UTI5NyA5NSAzOTIgODZUNTMzIDc0SDU1NFE1ODYgMTE2IDU5NyAxNTlRNjA0IDE3OSA2MzUgMTk5VDY5NCAyMjAnLFxufSx7XG59KTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7Q2hhck1hcCwgQ2hhck9wdGlvbnN9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IHRleFNpemUzOiBDaGFyTWFwPENoYXJPcHRpb25zPiA9IHtcbiAgICAweDI4OiBbMS40NSwgLjk0OSwgLjczNl0sXG4gICAgMHgyOTogWzEuNDUsIC45NDksIC43MzZdLFxuICAgIDB4MkY6IFsxLjQ1LCAuOTQ5LCAxLjA0NF0sXG4gICAgMHg1QjogWzEuNDUsIC45NDksIC41MjhdLFxuICAgIDB4NUM6IFsxLjQ1LCAuOTQ5LCAxLjA0NF0sXG4gICAgMHg1RDogWzEuNDUsIC45NDksIC41MjhdLFxuICAgIDB4N0I6IFsxLjQ1LCAuOTQ5LCAuNzVdLFxuICAgIDB4N0Q6IFsxLjQ1LCAuOTQ5LCAuNzVdLFxuICAgIDB4MkM2OiBbLjc3MiwgLTAuNTY0LCAxLjQ0NF0sXG4gICAgMHgyREM6IFsuNzQ5LCAtMC42MSwgMS40NDRdLFxuICAgIDB4MzAyOiBbLjc3MiwgLTAuNTY0LCAwXSxcbiAgICAweDMwMzogWy43NDksIC0wLjYxLCAwXSxcbiAgICAweDIwNDQ6IFsxLjQ1LCAuOTQ5LCAxLjA0NF0sXG4gICAgMHgyMjFBOiBbMS40NSwgLjk1LCAxLCB7aWM6IC4wMn1dLFxuICAgIDB4MjMwODogWzEuNDUsIC45NDksIC41ODNdLFxuICAgIDB4MjMwOTogWzEuNDUsIC45NDksIC41ODNdLFxuICAgIDB4MjMwQTogWzEuNDUsIC45NDksIC41ODNdLFxuICAgIDB4MjMwQjogWzEuNDUsIC45NDksIC41ODNdLFxuICAgIDB4MjMyOTogWzEuNDUsIC45NSwgLjc1XSxcbiAgICAweDIzMkE6IFsxLjQ1LCAuOTQ5LCAuNzVdLFxuICAgIDB4MjdFODogWzEuNDUsIC45NSwgLjc1XSxcbiAgICAweDI3RTk6IFsxLjQ1LCAuOTQ5LCAuNzVdLFxuICAgIDB4MzAwODogWzEuNDUsIC45NSwgLjc1XSxcbiAgICAweDMwMDk6IFsxLjQ1LCAuOTQ5LCAuNzVdLFxufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1NWR0NoYXJNYXAsIEFkZFBhdGhzfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge3RleFNpemUzIGFzIGZvbnR9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb250cy90ZXgvdGV4LXNpemUzLmpzJztcblxuZXhwb3J0IGNvbnN0IHRleFNpemUzOiBTVkdDaGFyTWFwID0gQWRkUGF0aHMoZm9udCwge1xuICAgIDB4Mjg6ICc3MDEgLTk0MFE3MDEgLTk0MyA2OTUgLTk0OUg2NjRRNjYyIC05NDcgNjM2IC05MjJUNTkxIC04NzlUNTM3IC04MThUNDc1IC03MzdUNDEyIC02MzZUMzUwIC01MTFUMjk1IC0zNjJUMjUwIC0xODZUMjIxIDE3VDIwOSAyNTFRMjA5IDk2MiA1NzMgMTM2MVE1OTYgMTM4NiA2MTYgMTQwNVQ2NDkgMTQzN1Q2NjQgMTQ1MEg2OTVRNzAxIDE0NDQgNzAxIDE0NDFRNzAxIDE0MzYgNjgxIDE0MTVUNjI5IDEzNTZUNTU3IDEyNjFUNDc2IDExMThUNDAwIDkyN1QzNDAgNjc1VDMwOCAzNTlRMzA2IDMyMSAzMDYgMjUwUTMwNiAtMTM5IDQwMCAtNDMwVDY5MCAtOTI0UTcwMSAtOTM2IDcwMSAtOTQwJyxcbiAgICAweDI5OiAnMzQgMTQzOFEzNCAxNDQ2IDM3IDE0NDhUNTAgMTQ1MEg1Nkg3MVE3MyAxNDQ4IDk5IDE0MjNUMTQ0IDEzODBUMTk4IDEzMTlUMjYwIDEyMzhUMzIzIDExMzdUMzg1IDEwMTNUNDQwIDg2NFQ0ODUgNjg4VDUxNCA0ODVUNTI2IDI1MVE1MjYgMTM0IDUxOSA1M1E0NzIgLTUxOSAxNjIgLTg2MFExMzkgLTg4NSAxMTkgLTkwNFQ4NiAtOTM2VDcxIC05NDlINTZRNDMgLTk0OSAzOSAtOTQ3VDM0IC05MzdRODggLTg4MyAxNDAgLTgxM1E0MjggLTQzMCA0MjggMjUxUTQyOCA0NTMgNDAyIDYyOFQzMzggOTIyVDI0NSAxMTQ2VDE0NSAxMzA5VDQ2IDE0MjVRNDQgMTQyNyA0MiAxNDI5VDM5IDE0MzNUMzYgMTQzNkwzNCAxNDM4JyxcbiAgICAweDJGOiAnODEgLTk0OVE3MSAtOTQ5IDYzIC05NDFUNTUgLTkyMVE1NSAtOTE3IDU2IC05MTVRNTkgLTkwNiA0OTggMjY0VDkzOSAxNDM4UTk0NSAxNDUwIDk2MCAxNDUwUTk3MiAxNDUwIDk4MCAxNDQxVDk4OCAxNDIxUTk4MiAxNDAzIDgzOSAxMDIwTDM5OCAtMTU1UTEwNyAtOTM0IDEwMyAtOTM4UTk2IC05NDkgODEgLTk0OScsXG4gICAgMHg1QjogJzI0NyAtOTQ5VjE0NTBINTE2VjEzODhIMzA5Vi04ODdINTE2Vi05NDlIMjQ3JyxcbiAgICAweDVDOiAnOTg4IC05MjJROTg4IC05MzMgOTgwIC05NDFUOTYyIC05NDlROTQ3IC05NDkgOTQwIC05MzhROTM2IC05MzQgNjQ1IC0xNTVMMjA0IDEwMjBRNTYgMTQxNiA1NiAxNDI0UTU2IDE0MzMgNjIgMTQ0MVQ4NCAxNDUwUTk3IDE0NDggMTAzIDE0MzlRMTA3IDE0MzUgMzk4IDY1Nkw4MzkgLTUxOVE5ODggLTkxOCA5ODggLTkyMicsXG4gICAgMHg1RDogJzExIDEzODhWMTQ1MEgyODBWLTk0OUgxMVYtODg3SDIxOFYxMzg4SDExJyxcbiAgICAweDdCOiAnNjE4IC05NDNMNjEyIC05NDlINTgyTDU2OCAtOTQzUTQ3MiAtOTAzIDQxMSAtODQxVDMzMiAtNzAzUTMyNyAtNjgyIDMyNyAtNjUzVDMyNSAtMzUwUTMyNCAtMjggMzIzIC0xOFEzMTcgMjQgMzAxIDYxVDI2NCAxMjRUMjIxIDE3MVQxNzkgMjA1VDE0NyAyMjVUMTMyIDIzNFExMzAgMjM4IDEzMCAyNTBRMTMwIDI1NSAxMzAgMjU4VDEzMSAyNjRUMTMyIDI2N1QxMzQgMjY5VDEzOSAyNzJUMTQ0IDI3NVEyMDcgMzA4IDI1NiAzNjdRMzEwIDQzNiAzMjMgNTE5UTMyNCA1MjkgMzI1IDg1MVEzMjYgMTEyNCAzMjYgMTE1NFQzMzIgMTIwNVEzNjkgMTM1OCA1NjYgMTQ0M0w1ODIgMTQ1MEg2MTJMNjE4IDE0NDRWMTQyOVE2MTggMTQxMyA2MTYgMTQxMUw2MDggMTQwNlE1OTkgMTQwMiA1ODUgMTM5M1Q1NTIgMTM3MlQ1MTUgMTM0M1Q0NzkgMTMwNVQ0NDkgMTI1N1Q0MjkgMTIwMFE0MjUgMTE4MCA0MjUgMTE1MlQ0MjMgODUxUTQyMiA1NzkgNDIyIDU0OVQ0MTYgNDk4UTQwNyA0NTkgMzg4IDQyNFQzNDYgMzY0VDI5NyAzMThUMjUwIDI4NFQyMTQgMjY0VDE5NyAyNTRMMTg4IDI1MUwyMDUgMjQyUTI5MCAyMDAgMzQ1IDEzOFQ0MTYgM1E0MjEgLTE4IDQyMSAtNDhUNDIzIC0zNDlRNDIzIC0zOTcgNDIzIC00NzJRNDI0IC02NzcgNDI4IC02OTRRNDI5IC02OTcgNDI5IC02OTlRNDM0IC03MjIgNDQzIC03NDNUNDY1IC03ODJUNDkxIC04MTZUNTE5IC04NDVUNTQ4IC04NjhUNTc0IC04ODZUNTk1IC04OTlUNjEwIC05MDhMNjE2IC05MTBRNjE4IC05MTIgNjE4IC05MjhWLTk0MycsXG4gICAgMHg3RDogJzEzMSAxNDE0VDEzMSAxNDI5VDEzMyAxNDQ3VDE0OCAxNDUwSDE1M0gxNjdMMTgyIDE0NDRRMjc2IDE0MDQgMzM2IDEzNDNUNDE1IDEyMDdRNDIxIDExODQgNDIxIDExNTRUNDIzIDg1MUw0MjQgNTMxTDQyNiA1MTdRNDM0IDQ2MiA0NjAgNDE1VDUxOCAzMzlUNTcxIDI5NlQ2MDggMjc0UTYxNSAyNzAgNjE2IDI2N1Q2MTggMjUxUTYxOCAyNDEgNjE4IDIzOFQ2MTUgMjMyVDYwOCAyMjdRNTQyIDE5NCA0OTEgMTMyVDQyNiAtMTVMNDI0IC0yOUw0MjMgLTM1MFE0MjIgLTYyMiA0MjIgLTY1MlQ0MTUgLTcwNlEzOTcgLTc4MCAzMzcgLTg0MVQxODIgLTk0M0wxNjcgLTk0OUgxNTNRMTM3IC05NDkgMTM0IC05NDZUMTMxIC05MjhRMTMxIC05MTQgMTMyIC05MTFUMTQ0IC05MDRRMTQ2IC05MDMgMTQ4IC05MDJRMjk5IC04MjAgMzIzIC02ODBRMzI0IC02NjMgMzI1IC0zNDlUMzI3IC0xOVEzNTUgMTQ1IDU0MSAyNDFMNTYxIDI1MEw1NDEgMjYwUTM1NiAzNTUgMzI3IDUyMFEzMjYgNTM3IDMyNSA4NTBUMzIzIDExODFRMzE1IDEyMjcgMjkzIDEyNjdUMjQ0IDEzMzJUMTkzIDEzNzRUMTUxIDE0MDFUMTMyIDE0MTNRMTMxIDE0MTQgMTMxIDE0MjknLFxuICAgIDB4MkM2OiAnMTQzOSA1NjRRMTQzNCA1NjQgMTA4MCA2MzFUNzIyIDY5OFE3MTkgNjk4IDM2MiA2MzFRNyA1NjQgNCA1NjRMMCA1ODNRLTQgNjAyIC00IDYwM0w3MjAgNzcyTDEwODMgNjg4UTE0NDYgNjAzIDE0NDcgNjAzUTE0NDcgNjAyIDE0NDMgNTgzTDE0MzkgNTY0JyxcbiAgICAweDJEQzogJzEgNjQzUTEgNjQ2IDc2IDY3MVQyNzEgNzIyVDQ3NiA3NDlRNTU1IDc0OSA2MjYgNzM2VDc0MiA3MDZUODU2IDY3NlQ5OTkgNjYyUTEwODggNjYyIDExOTIgNjg0VDEzNjMgNzI3VDE0MzIgNzQ5UTE0MzIgNzQ1IDE0MzcgNzMxVDE0NDIgNzE2UTE0NDIgNzE0IDEzODEgNjkzVDEyMTIgNjQ1VDEwMTIgNjExUTEwMDAgNjEwIDk1NSA2MTBRODUxIDYxMCA3MDEgNjUzVDQ0NCA2OTdRMzU1IDY5NyAyNTEgNjc2VDgwIDYzMlQxMSA2MTBRMTEgNjE0IDYgNjI4VDEgNjQzJyxcbiAgICAweDMwMjogJy01IDU2NFEtOSA1NjQgLTM2MyA2MzFULTcyMiA2OThRLTcyNSA2OTggLTEwODIgNjMxUS0xNDM3IDU2NCAtMTQ0MCA1NjRMLTE0NDQgNTgzUS0xNDQ4IDYwMiAtMTQ0OCA2MDNMLTcyNCA3NzJMLTM2MSA2ODhRMiA2MDMgMyA2MDNRMyA2MDIgLTEgNTgzTC01IDU2NCcsXG4gICAgMHgzMDM6ICctMTQ0MyA2NDNRLTE0NDMgNjQ2IC0xMzY4IDY3MVQtMTE3MyA3MjJULTk2OCA3NDlRLTg4OSA3NDkgLTgxOCA3MzZULTcwMiA3MDZULTU4OCA2NzZULTQ0NSA2NjJRLTM1NiA2NjIgLTI1MiA2ODRULTgxIDcyN1QtMTIgNzQ5US0xMiA3NDUgLTcgNzMxVC0yIDcxNlEtMiA3MTQgLTYzIDY5M1QtMjMyIDY0NVQtNDMyIDYxMVEtNDQ0IDYxMCAtNDg5IDYxMFEtNTkzIDYxMCAtNzQzIDY1M1QtMTAwMCA2OTdRLTEwODkgNjk3IC0xMTkzIDY3NlQtMTM2NCA2MzJULTE0MzMgNjEwUS0xNDMzIDYxNCAtMTQzOCA2MjhULTE0NDMgNjQzJyxcbiAgICAweDIwNDQ6ICc4MSAtOTQ5UTcxIC05NDkgNjMgLTk0MVQ1NSAtOTIxUTU1IC05MTcgNTYgLTkxNVE1OSAtOTA2IDQ5OCAyNjRUOTM5IDE0MzhROTQ1IDE0NTAgOTYwIDE0NTBROTcyIDE0NTAgOTgwIDE0NDFUOTg4IDE0MjFROTgyIDE0MDMgODM5IDEwMjBMMzk4IC0xNTVRMTA3IC05MzQgMTAzIC05MzhROTYgLTk0OSA4MSAtOTQ5JyxcbiAgICAweDIyMUE6ICc0MjQgLTk0OFE0MjIgLTk0NyAzMTMgLTQzNFQyMDIgODBMMTcwIDMxUTE2NSAyNCAxNTcgMTBRMTM3IC0yMSAxMzcgLTIxUTEzMSAtMTYgMTI0IC04TDExMSA1TDI2NCAyNDhMNDczIC03MjBRNDczIC03MTcgNzI3IDM1OVQ5ODMgMTQ0MFE5ODkgMTQ1MCAxMDAxIDE0NTBRMTAwNyAxNDUwIDEwMTMgMTQ0NVQxMDIwIDE0MzNRMTAyMCAxNDI1IDc0MiAyNDRUNDYwIC05NDFRNDU4IC05NTAgNDM5IC05NTBINDM2UTQyNCAtOTUwIDQyNCAtOTQ4JyxcbiAgICAweDIzMDg6ICcyNDYgLTk0OVYxNDUwSDU3MVYxMzg4SDMwOFYtOTQ5SDI0NicsXG4gICAgMHgyMzA5OiAnMTEgMTM4OFYxNDUwSDMzNlYtOTQ5SDI3NFYxMzg4SDExJyxcbiAgICAweDIzMEE6ICcyNDYgLTk0OVYxNDUwSDMwOFYtODg3SDU3MVYtOTQ5SDI0NicsXG4gICAgMHgyMzBCOiAnMjc0IC04ODdWMTQ1MEgzMzZWLTk0OUgxMVYtODg3SDI3NCcsXG4gICAgMHgyMzI5OiAnMTI2IDI0MlYyNTlMMzYxIDg0NVE1OTUgMTQzMSA1OTcgMTQzNVE2MTAgMTQ1MCA2MjQgMTQ1MFE2MzQgMTQ1MCA2NDQgMTQ0M1Q2NTQgMTQxOVYxNDExTDQyMiA4MzFRMTkwIDI1MyAxOTAgMjUwVDQyMiAtMzMxTDY1NCAtOTEwVi05MTlRNjU0IC05MzYgNjQ0IC05NDNUNjI0IC05NTBRNjEyIC05NTAgNTk3IC05MzVRNTk1IC05MzEgMzYxIC0zNDVMMTI2IDI0MicsXG4gICAgMHgyMzJBOiAnOTQgMTQyNFE5NCAxNDI2IDk3IDE0MzJUMTA3IDE0NDRUMTI0IDE0NTBRMTQxIDE0NTAgMTUyIDE0MzVRMTU0IDE0MzEgMzg4IDg0NUw2MjMgMjU5VjI0MkwzODggLTM0NVExNTMgLTkzMyAxNTIgLTkzNFExNDIgLTk0OSAxMjcgLTk0OUgxMjVROTUgLTk0OSA5NSAtOTE5Vi05MTBMMzI3IC0zMzFRNTU5IDI0NyA1NTkgMjUwVDMyNyA4MzFROTQgMTQxMSA5NCAxNDI0JyxcbiAgICAweDI3RTg6ICcxMjYgMjQyVjI1OUwzNjEgODQ1UTU5NSAxNDMxIDU5NyAxNDM1UTYxMCAxNDUwIDYyNCAxNDUwUTYzNCAxNDUwIDY0NCAxNDQzVDY1NCAxNDE5VjE0MTFMNDIyIDgzMVExOTAgMjUzIDE5MCAyNTBUNDIyIC0zMzFMNjU0IC05MTBWLTkxOVE2NTQgLTkzNiA2NDQgLTk0M1Q2MjQgLTk1MFE2MTIgLTk1MCA1OTcgLTkzNVE1OTUgLTkzMSAzNjEgLTM0NUwxMjYgMjQyJyxcbiAgICAweDI3RTk6ICc5NCAxNDI0UTk0IDE0MjYgOTcgMTQzMlQxMDcgMTQ0NFQxMjQgMTQ1MFExNDEgMTQ1MCAxNTIgMTQzNVExNTQgMTQzMSAzODggODQ1TDYyMyAyNTlWMjQyTDM4OCAtMzQ1UTE1MyAtOTMzIDE1MiAtOTM0UTE0MiAtOTQ5IDEyNyAtOTQ5SDEyNVE5NSAtOTQ5IDk1IC05MTlWLTkxMEwzMjcgLTMzMVE1NTkgMjQ3IDU1OSAyNTBUMzI3IDgzMVE5NCAxNDExIDk0IDE0MjQnLFxuICAgIDB4MzAwODogJzEyNiAyNDJWMjU5TDM2MSA4NDVRNTk1IDE0MzEgNTk3IDE0MzVRNjEwIDE0NTAgNjI0IDE0NTBRNjM0IDE0NTAgNjQ0IDE0NDNUNjU0IDE0MTlWMTQxMUw0MjIgODMxUTE5MCAyNTMgMTkwIDI1MFQ0MjIgLTMzMUw2NTQgLTkxMFYtOTE5UTY1NCAtOTM2IDY0NCAtOTQzVDYyNCAtOTUwUTYxMiAtOTUwIDU5NyAtOTM1UTU5NSAtOTMxIDM2MSAtMzQ1TDEyNiAyNDInLFxuICAgIDB4MzAwOTogJzk0IDE0MjRROTQgMTQyNiA5NyAxNDMyVDEwNyAxNDQ0VDEyNCAxNDUwUTE0MSAxNDUwIDE1MiAxNDM1UTE1NCAxNDMxIDM4OCA4NDVMNjIzIDI1OVYyNDJMMzg4IC0zNDVRMTUzIC05MzMgMTUyIC05MzRRMTQyIC05NDkgMTI3IC05NDlIMTI1UTk1IC05NDkgOTUgLTkxOVYtOTEwTDMyNyAtMzMxUTU1OSAyNDcgNTU5IDI1MFQzMjcgODMxUTk0IDE0MTEgOTQgMTQyNCcsXG59LHtcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3QgdGV4U2l6ZTQ6IENoYXJNYXA8Q2hhck9wdGlvbnM+ID0ge1xuICAgIDB4Mjg6IFsxLjc1LCAxLjI0OSwgLjc5Ml0sXG4gICAgMHgyOTogWzEuNzUsIDEuMjQ5LCAuNzkyXSxcbiAgICAweDJGOiBbMS43NSwgMS4yNDksIDEuMjc4XSxcbiAgICAweDVCOiBbMS43NSwgMS4yNDksIC41ODNdLFxuICAgIDB4NUM6IFsxLjc1LCAxLjI0OSwgMS4yNzhdLFxuICAgIDB4NUQ6IFsxLjc1LCAxLjI0OSwgLjU4M10sXG4gICAgMHg3QjogWzEuNzUsIDEuMjQ5LCAuODA2XSxcbiAgICAweDdEOiBbMS43NSwgMS4yNDksIC44MDZdLFxuICAgIDB4MkM2OiBbLjg0NSwgLTAuNTYxLCAxLjg4OSwge2ljOiAuMDEzfV0sXG4gICAgMHgyREM6IFsuODIzLCAtMC41ODMsIDEuODg5XSxcbiAgICAweDMwMjogWy44NDUsIC0wLjU2MSwgMCwge2ljOiAuMDEzfV0sXG4gICAgMHgzMDM6IFsuODIzLCAtMC41ODMsIDBdLFxuICAgIDB4MjA0NDogWzEuNzUsIDEuMjQ5LCAxLjI3OF0sXG4gICAgMHgyMjFBOiBbMS43NSwgMS4yNSwgMSwge2ljOiAuMDJ9XSxcbiAgICAweDIzMDg6IFsxLjc1LCAxLjI0OSwgLjYzOV0sXG4gICAgMHgyMzA5OiBbMS43NSwgMS4yNDksIC42MzldLFxuICAgIDB4MjMwQTogWzEuNzUsIDEuMjQ5LCAuNjM5XSxcbiAgICAweDIzMEI6IFsxLjc1LCAxLjI0OSwgLjYzOV0sXG4gICAgMHgyMzI5OiBbMS43NSwgMS4yNDgsIC44MDZdLFxuICAgIDB4MjMyQTogWzEuNzUsIDEuMjQ4LCAuODA2XSxcbiAgICAweDIzOUI6IFsxLjE1NCwgLjY1NSwgLjg3NV0sXG4gICAgMHgyMzlDOiBbLjYxLCAuMDEsIC44NzVdLFxuICAgIDB4MjM5RDogWzEuMTY1LCAuNjQ0LCAuODc1XSxcbiAgICAweDIzOUU6IFsxLjE1NCwgLjY1NSwgLjg3NV0sXG4gICAgMHgyMzlGOiBbLjYxLCAuMDEsIC44NzVdLFxuICAgIDB4MjNBMDogWzEuMTY1LCAuNjQ0LCAuODc1XSxcbiAgICAweDIzQTE6IFsxLjE1NCwgLjY0NSwgLjY2N10sXG4gICAgMHgyM0EyOiBbLjYwMiwgMCwgLjY2N10sXG4gICAgMHgyM0EzOiBbMS4xNTUsIC42NDQsIC42NjddLFxuICAgIDB4MjNBNDogWzEuMTU0LCAuNjQ1LCAuNjY3XSxcbiAgICAweDIzQTU6IFsuNjAyLCAwLCAuNjY3XSxcbiAgICAweDIzQTY6IFsxLjE1NSwgLjY0NCwgLjY2N10sXG4gICAgMHgyM0E3OiBbLjg5OSwgLjAxLCAuODg5XSxcbiAgICAweDIzQTg6IFsxLjE2LCAuNjYsIC44ODldLFxuICAgIDB4MjNBOTogWy4wMSwgLjg5OSwgLjg4OV0sXG4gICAgMHgyM0FBOiBbLjI5LCAuMDE1LCAuODg5XSxcbiAgICAweDIzQUI6IFsuODk5LCAuMDEsIC44ODldLFxuICAgIDB4MjNBQzogWzEuMTYsIC42NiwgLjg4OV0sXG4gICAgMHgyM0FEOiBbLjAxLCAuODk5LCAuODg5XSxcbiAgICAweDIzQjc6IFsuOTM1LCAuODg1LCAxLjA1Nl0sXG4gICAgMHgyN0U4OiBbMS43NSwgMS4yNDgsIC44MDZdLFxuICAgIDB4MjdFOTogWzEuNzUsIDEuMjQ4LCAuODA2XSxcbiAgICAweDMwMDg6IFsxLjc1LCAxLjI0OCwgLjgwNl0sXG4gICAgMHgzMDA5OiBbMS43NSwgMS4yNDgsIC44MDZdLFxuICAgIDB4RTAwMDogWy42MjUsIC4wMTQsIDEuMDU2XSxcbiAgICAweEUwMDE6IFsuNjA1LCAuMDE0LCAxLjA1Niwge2ljOiAuMDJ9XSxcbiAgICAweEUxNTA6IFsuMTIsIC4yMTMsIC40NSwge2ljOiAuMDF9XSxcbiAgICAweEUxNTE6IFsuMTIsIC4yMTMsIC40NSwge2ljOiAuMDI0fV0sXG4gICAgMHhFMTUyOiBbLjMzMywgMCwgLjQ1LCB7aWM6IC4wMX1dLFxuICAgIDB4RTE1MzogWy4zMzMsIDAsIC40NSwge2ljOiAuMDI0fV0sXG4gICAgMHhFMTU0OiBbLjMyLCAuMiwgLjQsIHtpYzogLjAxfV0sXG4gICAgMHhFMTU1OiBbLjMzMywgMCwgLjksIHtpYzogLjAxfV0sXG4gICAgMHhFMTU2OiBbLjEyLCAuMjEzLCAuOSwge2ljOiAuMDF9XSxcbn07XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtTVkdDaGFyTWFwLCBBZGRQYXRoc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuaW1wb3J0IHt0ZXhTaXplNCBhcyBmb250fSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9udHMvdGV4L3RleC1zaXplNC5qcyc7XG5cbmV4cG9ydCBjb25zdCB0ZXhTaXplNDogU1ZHQ2hhck1hcCA9IEFkZFBhdGhzKGZvbnQsIHtcbiAgICAweDI4OiAnNzU4IC0xMjM3VDc1OCAtMTI0MFQ3NTIgLTEyNDlINzM2UTcxOCAtMTI0OSA3MTcgLTEyNDhRNzExIC0xMjQ1IDY3MiAtMTE5OVEyMzcgLTcwNiAyMzcgMjUxVDY3MiAxNzAwUTY5NyAxNzMwIDcxNiAxNzQ5UTcxOCAxNzUwIDczNSAxNzUwSDc1MlE3NTggMTc0NCA3NTggMTc0MVE3NTggMTczNyA3NDAgMTcxM1Q2ODkgMTY0NFQ2MTkgMTUzN1Q1NDAgMTM4MFQ0NjMgMTE3NlEzNDggODAyIDM0OCAyNTFRMzQ4IC0yNDIgNDQxIC01OTlUNzQ0IC0xMjE4UTc1OCAtMTIzNyA3NTggLTEyNDAnLFxuICAgIDB4Mjk6ICczMyAxNzQxUTMzIDE3NTAgNTEgMTc1MEg2MEg2NVE3MyAxNzUwIDgxIDE3NDNUMTE5IDE3MDBRNTU0IDEyMDcgNTU0IDI1MVE1NTQgLTcwNyAxMTkgLTExOTlRNzYgLTEyNTAgNjYgLTEyNTBRNjUgLTEyNTAgNjIgLTEyNTBUNTYgLTEyNDlRNTUgLTEyNDkgNTMgLTEyNDlUNDkgLTEyNTBRMzMgLTEyNTAgMzMgLTEyMzlRMzMgLTEyMzYgNTAgLTEyMTRUOTggLTExNTBUMTYzIC0xMDUyVDIzOCAtOTEwVDMxMSAtNzI3UTQ0MyAtMzM1IDQ0MyAyNTFRNDQzIDQwMiA0MzYgNTMyVDQwNSA4MzFUMzM5IDExNDJUMjI0IDE0MzhUNTAgMTcxNlEzMyAxNzM3IDMzIDE3NDEnLFxuICAgIDB4MkY6ICcxMTY2IDE3MzhRMTE3NiAxNzUwIDExODkgMTc1MFQxMjExIDE3NDJUMTIyMSAxNzIxUTEyMjEgMTcyMCAxMjIxIDE3MThUMTIyMCAxNzE1UTEyMTkgMTcwOCA2NjYgMjM4VDExMSAtMTIzN1ExMDIgLTEyNDkgODYgLTEyNDlRNzQgLTEyNDkgNjUgLTEyNDBUNTYgLTEyMjBRNTYgLTEyMTkgNTYgLTEyMTdUNTcgLTEyMTRRNTggLTEyMDcgNjExIDI2M1QxMTY2IDE3MzgnLFxuICAgIDB4NUI6ICcyNjkgLTEyNDlWMTc1MEg1NzdWMTY3N0gzNDJWLTExNzZINTc3Vi0xMjQ5SDI2OScsXG4gICAgMHg1QzogJzU2IDE3MjBRNTYgMTczMiA2NCAxNzQxVDg1IDE3NTBRMTA0IDE3NTAgMTExIDE3MzhRMTEzIDE3MzQgNjY2IDI2NFQxMjIwIC0xMjE0UTEyMjAgLTEyMTUgMTIyMCAtMTIxN1QxMjIxIC0xMjIwUTEyMjEgLTEyMzEgMTIxMiAtMTI0MFQxMTkxIC0xMjQ5UTExNzUgLTEyNDkgMTE2NiAtMTIzN1ExMTY0IC0xMjMzIDYxMSAyMzdUNTcgMTcxNVE1NyAxNzE2IDU2IDE3MThWMTcyMCcsXG4gICAgMHg1RDogJzUgMTY3N1YxNzUwSDMxM1YtMTI0OUg1Vi0xMTc2SDI0MFYxNjc3SDUnLFxuICAgIDB4N0I6ICc2NjEgLTEyNDNMNjU1IC0xMjQ5SDYyMkw2MDQgLTEyNDBRNTAzIC0xMTkwIDQzNCAtMTEwN1QzNDggLTkwOVEzNDYgLTg5NyAzNDYgLTQ5OUwzNDUgLTk4TDM0MyAtODJRMzM1IDMgMjg3IDg3VDE1NyAyMjNRMTQ2IDIzMiAxNDUgMjM2UTE0NCAyNDAgMTQ0IDI1MFExNDQgMjY1IDE0NSAyNjhUMTU3IDI3OFEyNDIgMzMzIDI4OCA0MTdUMzQzIDU4M0wzNDUgNjAwTDM0NiAxMDAxUTM0NiAxMzk4IDM0OCAxNDEwUTM3OSAxNjIyIDYwMCAxNzM5TDYyMiAxNzUwSDY1NUw2NjEgMTc0NFYxNzI3VjE3MjFRNjYxIDE3MTIgNjYxIDE3MTBUNjU3IDE3MDVUNjQ4IDE3MDBUNjMwIDE2OTBUNjAyIDE2NjhRNTg5IDE2NTkgNTc0IDE2NDNUNTMxIDE1OTNUNDg0IDE1MDhUNDU5IDEzOThRNDU4IDEzODkgNDU4IDEwMDFRNDU4IDYxNCA0NTcgNjA1UTQ0MSA0MzUgMzAxIDMxNlEyNTQgMjc3IDIwMiAyNTFMMjUwIDIyMlEyNjAgMjE2IDMwMSAxODVRNDQzIDY2IDQ1NyAtMTA0UTQ1OCAtMTEzIDQ1OCAtNTAxUTQ1OCAtODg4IDQ1OSAtODk3UTQ2MyAtOTQ0IDQ3OCAtOTg4VDUwOSAtMTA2MFQ1NDggLTExMTRUNTgwIC0xMTQ5VDYwMiAtMTE2N1E2MjAgLTExODMgNjM0IC0xMTkyVDY1MyAtMTIwMlQ2NTkgLTEyMDdUNjYxIC0xMjIwVi0xMjI2Vi0xMjQzJyxcbiAgICAweDdEOiAnMTQ0IDE3MjdRMTQ0IDE3NDMgMTQ2IDE3NDZUMTYyIDE3NTBIMTY3SDE4M0wyMDMgMTc0MFEyNzQgMTcwNSAzMjUgMTY1OFQ0MDMgMTU2MlQ0NDAgMTQ3OFQ0NTYgMTQxMFE0NTggMTM5OCA0NTggMTAwMVE0NTkgNjYxIDQ1OSA2MjRUNDY1IDU1OFE0NzAgNTI2IDQ4MCA0OTZUNTAyIDQ0MVQ1MjkgMzk1VDU1OSAzNTZUNTg4IDMyNVQ2MTUgMzAxVDYzNyAyODRUNjU0IDI3M0w2NjAgMjY5VjI2NlE2NjAgMjYzIDY2MCAyNTlUNjYxIDI1MFYyMzlRNjYxIDIzNiA2NjEgMjM0VDY2MCAyMzJUNjU2IDIyOVQ2NDkgMjI0UTU3NyAxNzkgNTI4IDEwNVQ0NjUgLTU3UTQ2MCAtODYgNDYwIC0xMjNUNDU4IC00OTlWLTY2MVE0NTggLTg1NyA0NTcgLTg5M1Q0NDcgLTk1NVE0MjUgLTEwNDggMzU5IC0xMTIwVDIwMyAtMTIzOUwxODMgLTEyNDlIMTY4UTE1MCAtMTI0OSAxNDcgLTEyNDZUMTQ0IC0xMjI2UTE0NCAtMTIxMyAxNDUgLTEyMTBUMTUzIC0xMjAyUTE2OSAtMTE5MyAxODYgLTExODFUMjMyIC0xMTQwVDI4MiAtMTA4MVQzMjIgLTEwMDBUMzQ1IC04OTdRMzQ2IC04ODggMzQ2IC01MDFRMzQ2IC0xMTMgMzQ3IC0xMDRRMzU5IDU4IDUwMyAxODRRNTU0IDIyNiA2MDMgMjUwUTUwNCAyOTkgNDMwIDM5M1QzNDcgNjA1UTM0NiA2MTQgMzQ2IDEwMDJRMzQ2IDEzODkgMzQ1IDEzOThRMzM4IDE0OTMgMjg4IDE1NzNUMTUzIDE3MDNRMTQ2IDE3MDcgMTQ1IDE3MTBUMTQ0IDE3MjcnLFxuICAgIDB4MkM2OiAnNSA1NjFRLTQgNTYxIC05IDU4MlQtMTQgNjE4US0xNCA2MjMgLTEzIDYyNVEtMTEgNjI4IDQ2MSA3MzZUOTQzIDg0NVE5NDUgODQ1IDE0MTcgNzM4VDE4OTYgNjI4UTE5MDIgNjI4IDE5MDIgNjE4UTE5MDIgNjA3IDE4OTcgNTg0VDE4ODMgNTYxUTE4ODEgNTYxIDE0MTIgNjU0TDk0NSA3NTBMNDc2IDY1NFE2IDU2MSA1IDU2MScsXG4gICAgMHgyREM6ICcxMjEyIDU4M1ExMTI0IDU4MyAxMDQ4IDYwM1Q5MjMgNjQ3VDc5OSA2OTFUNjM1IDcxMVE1MjQgNzExIDM3NSA2NzlUMTIwIDYxNUwxNiA1ODNRMTQgNTg0IDEyIDU4N1Q5IDU5MlEtMiA2NTAgMiA2NTlRMiA2NjkgMzggNjg3UTU0IDY5NiAxNDYgNzIzVDMwOSA3NjdRNTI3IDgyMyA2NjYgODIzUTc1OSA4MjMgODM3IDgwM1Q5NjQgNzU5VDEwODggNzE1VDEyNTIgNjk1UTEzNjMgNjk1IDE1MTIgNzI3VDE3NjQgNzkxVDE4NzEgODIzUTE4NzIgODIyIDE4NzQgODE5VDE4NzggODE0UTE4ODUgNzgzIDE4ODUgNzUzUTE4ODUgNzQ4IDE4ODQgNzQ3UTE4ODQgNzM4IDE4NDkgNzE5UTE4MzYgNzEyIDE3NDAgNjgyVDE0ODQgNjE3VDEyMTIgNTgzJyxcbiAgICAweDMwMjogJy0xODg0IDU2MVEtMTg5MyA1NjEgLTE4OTggNTgyVC0xOTAzIDYxOFEtMTkwMyA2MjMgLTE5MDIgNjI1US0xOTAwIDYyOCAtMTQyOCA3MzZULTk0NiA4NDVRLTk0NCA4NDUgLTQ3MiA3MzhUNyA2MjhRMTMgNjI4IDEzIDYxOFExMyA2MDcgOCA1ODRULTYgNTYxUS04IDU2MSAtNDc3IDY1NEwtOTQ0IDc1MEwtMTQxMyA2NTRRLTE4ODMgNTYxIC0xODg0IDU2MScsXG4gICAgMHgzMDM6ICctNjc3IDU4M1EtNzY1IDU4MyAtODQxIDYwM1QtOTY2IDY0N1QtMTA5MCA2OTFULTEyNTQgNzExUS0xMzY1IDcxMSAtMTUxNCA2NzlULTE3NjggNjE1TC0xODczIDU4M1EtMTg3NSA1ODQgLTE4NzcgNTg3VC0xODgwIDU5MlEtMTg5MSA2NTAgLTE4ODcgNjU5US0xODg3IDY2OSAtMTg1MSA2ODdRLTE4MzUgNjk2IC0xNzQzIDcyM1QtMTU4MCA3NjdRLTEzNjIgODIzIC0xMjIzIDgyM1EtMTEzMCA4MjMgLTEwNTIgODAzVC05MjUgNzU5VC04MDEgNzE1VC02MzcgNjk1US01MjYgNjk1IC0zNzcgNzI3VC0xMjUgNzkxVC0xOCA4MjNRLTE3IDgyMiAtMTUgODE5VC0xMSA4MTRRLTQgNzgyIC00IDc1M1EtNCA3NDggLTUgNzQ3US01IDczOCAtNDAgNzE5US01MyA3MTIgLTE0OSA2ODJULTQwNSA2MTdULTY3NyA1ODMnLFxuICAgIDB4MjA0NDogJzExNjYgMTczOFExMTc2IDE3NTAgMTE4OSAxNzUwVDEyMTEgMTc0MlQxMjIxIDE3MjFRMTIyMSAxNzIwIDEyMjEgMTcxOFQxMjIwIDE3MTVRMTIxOSAxNzA4IDY2NiAyMzhUMTExIC0xMjM3UTEwMiAtMTI0OSA4NiAtMTI0OVE3NCAtMTI0OSA2NSAtMTI0MFQ1NiAtMTIyMFE1NiAtMTIxOSA1NiAtMTIxN1Q1NyAtMTIxNFE1OCAtMTIwNyA2MTEgMjYzVDExNjYgMTczOCcsXG4gICAgMHgyMjFBOiAnOTgzIDE3MzlROTg4IDE3NTAgMTAwMSAxNzUwUTEwMDggMTc1MCAxMDEzIDE3NDVUMTAyMCAxNzMzUTEwMjAgMTcyNiA3NDIgMjQ0VDQ2MCAtMTI0MVE0NTggLTEyNTAgNDM5IC0xMjUwSDQzNlE0MjQgLTEyNTAgNDI0IC0xMjQ4TDQxMCAtMTE2NlEzOTUgLTEwODMgMzY3IC05MjBUMzEyIC02MDFMMjAxIDQ0TDEzNyAtODNMMTExIC01N0wxODcgOTZMMjY0IDI0N1EyNjUgMjQ2IDM2OSAtMzU3UTQ3MCAtOTU4IDQ3MyAtOTYzTDcyNyAzODRROTc5IDE3MjkgOTgzIDE3MzknLFxuICAgIDB4MjMwODogJzI2OSAtMTI0OVYxNzUwSDYzM1YxNjc3SDM0MlYtMTI0OUgyNjknLFxuICAgIDB4MjMwOTogJzUgMTY3N1YxNzUwSDM2OVYtMTI0OUgyOTZWMTY3N0g1JyxcbiAgICAweDIzMEE6ICcyNjkgLTEyNDlWMTc1MEgzNDJWLTExNzZINjMzVi0xMjQ5SDI2OScsXG4gICAgMHgyMzBCOiAnMjk2IC0xMTc2VjE3NTBIMzY5Vi0xMjQ5SDVWLTExNzZIMjk2JyxcbiAgICAweDIzMjk6ICcxNDAgMjQyVjI2MEwzODYgOTk0UTYzMyAxNzI5IDYzNSAxNzMyUTY0MyAxNzQ1IDY1NyAxNzQ5UTY1OCAxNzQ5IDY2MiAxNzQ5VDY2OCAxNzUwUTY4MiAxNzQ5IDY5MiAxNzQwVDcwMiAxNzE0VjE3MDVMMjE0IDI1MUw3MDMgLTEyMDRMNzAyIC0xMjEzUTcwMiAtMTIzMCA2OTIgLTEyMzlUNjY3IC0xMjQ4SDY2NFE2NDcgLTEyNDggNjM1IC0xMjMxUTYzMyAtMTIyOCAzODYgLTQ5M0wxNDAgMjQyJyxcbiAgICAweDIzMkE6ICcxMDMgMTcxNFExMDMgMTczMiAxMTQgMTc0MVQxMzcgMTc1MFExNTcgMTc1MCAxNzAgMTczMlExNzIgMTcyOSA0MTkgOTk0TDY2NSAyNjBWMjQyTDQxOSAtNDkzUTE3MiAtMTIyOCAxNzAgLTEyMzFRMTU4IC0xMjQ4IDE0MSAtMTI0OEgxMzhRMTIzIC0xMjQ4IDExMyAtMTIzOVQxMDMgLTEyMTNWLTEyMDRMNTkxIDI1MUwxMDMgMTcwNVYxNzE0JyxcbiAgICAweDIzOUI6ICc4MzcgMTE1NFE4NDMgMTE0OCA4NDMgMTE0NVE4NDMgMTE0MSA4MTggMTEwNlQ3NTMgMTAwMlQ2NjcgODQxVDU3NCA2MDRUNDk0IDI5OVE0MTcgLTg0IDQxNyAtNjA5UTQxNyAtNjQxIDQxNiAtNjQ3VDQxMSAtNjU0UTQwOSAtNjU1IDM2NiAtNjU1UTI5OSAtNjU1IDI5NyAtNjU0UTI5MiAtNjUyIDI5MiAtNjQzVDI5MSAtNTgzUTI5MyAtNDAwIDMwNCAtMjQyVDM0NyAxMTBUNDMyIDQ3MFQ1NzQgODEzVDc4NSAxMTM2UTc4NyAxMTM5IDc5MCAxMTQyVDc5NCAxMTQ3VDc5NiAxMTUwVDc5OSAxMTUyVDgwMiAxMTUzVDgwNyAxMTU0VDgxMyAxMTU0SDgxOUg4MzcnLFxuICAgIDB4MjM5QzogJzQxMyAtOVE0MTIgLTkgNDA3IC05VDM4OCAtMTBUMzU0IC0xMFEzMDAgLTEwIDI5NyAtOVEyOTQgLTggMjkzIC01UTI5MSA1IDI5MSAxMjdWMzAwUTI5MSA2MDIgMjkyIDYwNUwyOTYgNjA5UTI5OCA2MTAgMzY2IDYxMFEzODIgNjEwIDM5MiA2MTBUNDA3IDYxMFQ0MTIgNjA5UTQxNiA2MDkgNDE2IDU5MlQ0MTcgNDczVjEyN1E0MTcgLTkgNDEzIC05JyxcbiAgICAweDIzOUQ6ICc4NDMgLTYzNVE4NDMgLTYzOCA4MzcgLTY0NEg4MjBRODAxIC02NDQgODAwIC02NDNRNzkyIC02MzUgNzg1IC02MjZRNjg0IC01MDMgNjA1IC0zNjNUNDczIC03NVQzODUgMjE2VDMzMCA1MThUMzAyIDgwOVQyOTEgMTA5M1EyOTEgMTE0NCAyOTEgMTE1M1QyOTYgMTE2NFEyOTggMTE2NSAzNjYgMTE2NVE0MDkgMTE2NSA0MTEgMTE2NFE0MTUgMTE2MyA0MTYgMTE1N1Q0MTcgMTExOVE0MTcgNTI5IDUxNyAxMDlUODMzIC02MTdRODQzIC02MzEgODQzIC02MzUnLFxuICAgIDB4MjM5RTogJzMxIDExNDNRMzEgMTE1NCA0OSAxMTU0SDU5UTcyIDExNTQgNzUgMTE1MlQ4OSAxMTM2UTE5MCAxMDEzIDI2OSA4NzNUNDAxIDU4NVQ0ODkgMjk0VDU0NCAtOFQ1NzIgLTI5OVQ1ODMgLTU4M1E1ODMgLTYzNCA1ODMgLTY0M1Q1NzcgLTY1NFE1NzUgLTY1NSA1MDggLTY1NVE0NjUgLTY1NSA0NjMgLTY1NFE0NTkgLTY1MyA0NTggLTY0N1Q0NTcgLTYwOVE0NTcgLTU4IDM3MSAzNDBUMTAwIDEwMzdRODcgMTA1OSA2MSAxMDk4VDMxIDExNDMnLFxuICAgIDB4MjM5RjogJzU3OSAtOVE1NzggLTkgNTczIC05VDU1NCAtMTBUNTIwIC0xMFE0NjYgLTEwIDQ2MyAtOVE0NjAgLTggNDU5IC01UTQ1NyA1IDQ1NyAxMjdWMzAwUTQ1NyA2MDIgNDU4IDYwNUw0NjIgNjA5UTQ2NCA2MTAgNTMyIDYxMFE1NDggNjEwIDU1OCA2MTBUNTczIDYxMFQ1NzggNjA5UTU4MiA2MDkgNTgyIDU5MlQ1ODMgNDczVjEyN1E1ODMgLTkgNTc5IC05JyxcbiAgICAweDIzQTA6ICc1NiAtNjQ0SDUwUTMxIC02NDQgMzEgLTYzNVEzMSAtNjMyIDM3IC02MjJRNjkgLTU3OSAxMDAgLTUyN1EyODYgLTIyOCAzNzEgMTcwVDQ1NyAxMTE5UTQ1NyAxMTYxIDQ2MiAxMTY0UTQ2NCAxMTY1IDUyMCAxMTY1UTU3NSAxMTY1IDU3NyAxMTY0UTU4MiAxMTYyIDU4MiAxMTUzVDU4MyAxMDkzUTU4MSA5MTAgNTcwIDc1MlQ1MjcgNDAwVDQ0MiA0MFQzMDAgLTMwM1Q4OSAtNjI2UTc4IC02NDAgNzUgLTY0MlQ2MSAtNjQ0SDU2JyxcbiAgICAweDIzQTE6ICczMTkgLTY0NVYxMTU0SDY2NlYxMDcwSDQwM1YtNjQ1SDMxOScsXG4gICAgMHgyM0EyOiAnMzE5IDBWNjAySDQwM1YwSDMxOScsXG4gICAgMHgyM0EzOiAnMzE5IC02NDRWMTE1NUg0MDNWLTU2MEg2NjZWLTY0NEgzMTknLFxuICAgIDB4MjNBNDogJzAgMTA3MFYxMTU0SDM0N1YtNjQ1SDI2M1YxMDcwSDAnLFxuICAgIDB4MjNBNTogJzI2MyAwVjYwMkgzNDdWMEgyNjMnLFxuICAgIDB4MjNBNjogJzI2MyAtNTYwVjExNTVIMzQ3Vi02NDRIMFYtNTYwSDI2MycsXG4gICAgMHgyM0E3OiAnNzEyIDg5OUw3MTggODkzVjg3NlY4NjVRNzE4IDg1NCA3MDQgODQ2UTYyNyA3OTMgNTc3IDcxMFQ1MTAgNTI1UTUxMCA1MjQgNTA5IDUyMVE1MDUgNDkzIDUwNCAzNDlRNTA0IDM0NSA1MDQgMzM0UTUwNCAyNzcgNTA0IDI0MFE1MDQgLTIgNTAzIC00UTUwMiAtOCA0OTQgLTlUNDQ0IC0xMFEzOTIgLTEwIDM5MCAtOVEzODcgLTggMzg2IC01UTM4NCA1IDM4NCAyMzBRMzg0IDI2MiAzODQgMzEyVDM4MyAzODJRMzgzIDQ4MSAzOTIgNTM1VDQzNCA2NTZRNTEwIDgwNiA2NjQgODkyTDY3NyA4OTlINzEyJyxcbiAgICAweDIzQTg6ICczODkgMTE1OVEzOTEgMTE2MCA0NTUgMTE2MFE0OTYgMTE2MCA0OTggMTE1OVE1MDEgMTE1OCA1MDIgMTE1NVE1MDQgMTE0NSA1MDQgOTI0UTUwNCA2OTEgNTAzIDY4MlE0OTQgNTQ5IDQyNSA0MzlUMjQzIDI1OUwyMjkgMjUwTDI0MyAyNDFRMzQ5IDE3NSA0MjEgNjZUNTAzIC0xODJRNTA0IC0xOTEgNTA0IC00MjRRNTA0IC02MDAgNTA0IC02MjlUNDk5IC02NTlINDk4UTQ5NiAtNjYwIDQ0NCAtNjYwVDM5MCAtNjU5UTM4NyAtNjU4IDM4NiAtNjU1UTM4NCAtNjQ1IDM4NCAtNDI1Vi0yODJRMzg0IC0xNzYgMzc3IC0xMTZUMzQyIDEwUTMyNSA1NCAzMDEgOTJUMjU1IDE1NVQyMTQgMTk2VDE4MyAyMjJUMTcxIDIzMlExNzAgMjMzIDE3MCAyNTBUMTcxIDI2OFExNzEgMjY5IDE5MSAyODRUMjQwIDMzMVQzMDAgNDA3VDM1NCA1MjRUMzgzIDY3OVEzODQgNjkxIDM4NCA5MjVRMzg0IDExNTIgMzg1IDExNTVMMzg5IDExNTknLFxuICAgIDB4MjNBOTogJzcxOCAtODkzTDcxMiAtODk5SDY3N0w2NjYgLTg5M1E1NDIgLTgyNSA0NjggLTcxNFQzODUgLTQ3NlEzODQgLTQ2NiAzODQgLTI4MlEzODQgMyAzODUgNUwzODkgOVEzOTIgMTAgNDQ0IDEwUTQ4NiAxMCA0OTQgOVQ1MDMgNFE1MDQgMiA1MDQgLTIzOVYtMzEwVi0zNjZRNTA0IC00NzAgNTA4IC01MTNUNTMwIC02MDlRNTQ2IC02NTcgNTY5IC02OThUNjE3IC03NjdUNjYxIC04MTJUNjk5IC04NDNUNzE3IC04NTZUNzE4IC04NzZWLTg5MycsXG4gICAgMHgyM0FBOiAnMzg0IDE1MFYyNjZRMzg0IDMwNCAzODkgMzA5UTM5MSAzMTAgNDU1IDMxMFE0OTYgMzEwIDQ5OCAzMDlRNTAyIDMwOCA1MDMgMjk4UTUwNCAyODMgNTA0IDE1MFE1MDQgMzIgNTA0IDEyVDQ5OSAtOUg0OThRNDk2IC0xMCA0NDQgLTEwVDM5MCAtOVEzODYgLTggMzg1IDJRMzg0IDE3IDM4NCAxNTAnLFxuICAgIDB4MjNBQjogJzE3MCA4NzVRMTcwIDg5MiAxNzIgODk1VDE4OSA4OTlIMTk0SDIxMUwyMjIgODkzUTM0NSA4MjYgNDIwIDcxNVQ1MDMgNDc2UTUwNCA0NjcgNTA0IDIzMFE1MDQgNTEgNTA0IDIxVDQ5OSAtOUg0OThRNDk2IC0xMCA0NDQgLTEwUTQwMiAtMTAgMzk0IC05VDM4NSAtNFEzODQgLTIgMzg0IDI0MFYzMTFWMzY2UTM4NCA0NjkgMzgwIDUxM1QzNTggNjA5UTM0MiA2NTcgMzE5IDY5OFQyNzEgNzY3VDIyNyA4MTJUMTg5IDg0M1QxNzEgODU2VDE3MCA4NzUnLFxuICAgIDB4MjNBQzogJzM4OSAxMTU5UTM5MSAxMTYwIDQ1NSAxMTYwUTQ5NiAxMTYwIDQ5OCAxMTU5UTUwMSAxMTU4IDUwMiAxMTU1UTUwNCAxMTQ1IDUwNCA5MjVWNzgyUTUwNCA2NzYgNTExIDYxNlQ1NDYgNDkwUTU2MyA0NDYgNTg3IDQwOFQ2MzMgMzQ1VDY3NCAzMDRUNzA1IDI3OFQ3MTcgMjY4UTcxOCAyNjcgNzE4IDI1MFQ3MTcgMjMyUTcxNyAyMzEgNjk3IDIxNlQ2NDggMTY5VDU4OCA5M1Q1MzQgLTI0VDUwNSAtMTc5UTUwNCAtMTkxIDUwNCAtNDI1UTUwNCAtNjAwIDUwNCAtNjI5VDQ5OSAtNjU5SDQ5OFE0OTYgLTY2MCA0NDQgLTY2MFQzOTAgLTY1OVEzODcgLTY1OCAzODYgLTY1NVEzODQgLTY0NSAzODQgLTQyNFEzODQgLTE5MSAzODUgLTE4MlEzOTQgLTQ5IDQ2MyA2MVQ2NDUgMjQxTDY1OSAyNTBMNjQ1IDI1OVE1MzkgMzI1IDQ2NyA0MzRUMzg1IDY4MlEzODQgNjkyIDM4NCA4NzNRMzg0IDExNTMgMzg1IDExNTVMMzg5IDExNTknLFxuICAgIDB4MjNBRDogJzM4NCAtMjM5Vi01N1EzODQgNCAzODkgOVEzOTEgMTAgNDU1IDEwUTQ5NiAxMCA0OTggOVE1MDEgOCA1MDIgNVE1MDQgLTUgNTA0IC0yMzBRNTA0IC0yNjEgNTA0IC0zMTFUNTA1IC0zODFRNTA1IC00ODYgNDkyIC01NTFUNDM1IC02OTFRMzU3IC04MjAgMjIyIC04OTNMMjExIC04OTlIMTk1UTE3NiAtODk5IDE3MyAtODk2VDE3MCAtODc0UTE3MCAtODU4IDE3MSAtODU1VDE4NCAtODQ2UTI2MiAtNzkzIDMxMiAtNzA5VDM3OCAtNTI1UTM3OCAtNTI0IDM3OSAtNTIyUTM4MyAtNDkzIDM4NCAtMzUxUTM4NCAtMzQ1IDM4NCAtMzM0UTM4NCAtMjc2IDM4NCAtMjM5JyxcbiAgICAweDIzQjc6ICc3NDIgLTg3MVE3NDAgLTg3MyA3MzcgLTg3NlQ3MzMgLTg4MFQ3MzAgLTg4MlQ3MjQgLTg4NFQ3MTQgLTg4NUg3MDJMMjIyIDU2OUwxODAgNDg0UTEzOCAzOTkgMTM3IDM5OVExMzEgNDA0IDEyNCA0MTJMMTExIDQyNUwyNjUgNzM2TDcwMiAtNTg2VjE2OEw3MDMgOTIyUTcxMyA5MzUgNzIyIDkzNVE3MzQgOTM1IDc0MiA5MjBWLTg3MScsXG4gICAgMHgyN0U4OiAnMTQwIDI0MlYyNjBMMzg2IDk5NFE2MzMgMTcyOSA2MzUgMTczMlE2NDMgMTc0NSA2NTcgMTc0OVE2NTggMTc0OSA2NjIgMTc0OVQ2NjggMTc1MFE2ODIgMTc0OSA2OTIgMTc0MFQ3MDIgMTcxNFYxNzA1TDIxNCAyNTFMNzAzIC0xMjA0TDcwMiAtMTIxM1E3MDIgLTEyMzAgNjkyIC0xMjM5VDY2NyAtMTI0OEg2NjRRNjQ3IC0xMjQ4IDYzNSAtMTIzMVE2MzMgLTEyMjggMzg2IC00OTNMMTQwIDI0MicsXG4gICAgMHgyN0U5OiAnMTAzIDE3MTRRMTAzIDE3MzIgMTE0IDE3NDFUMTM3IDE3NTBRMTU3IDE3NTAgMTcwIDE3MzJRMTcyIDE3MjkgNDE5IDk5NEw2NjUgMjYwVjI0Mkw0MTkgLTQ5M1ExNzIgLTEyMjggMTcwIC0xMjMxUTE1OCAtMTI0OCAxNDEgLTEyNDhIMTM4UTEyMyAtMTI0OCAxMTMgLTEyMzlUMTAzIC0xMjEzVi0xMjA0TDU5MSAyNTFMMTAzIDE3MDVWMTcxNCcsXG4gICAgMHgzMDA4OiAnMTQwIDI0MlYyNjBMMzg2IDk5NFE2MzMgMTcyOSA2MzUgMTczMlE2NDMgMTc0NSA2NTcgMTc0OVE2NTggMTc0OSA2NjIgMTc0OVQ2NjggMTc1MFE2ODIgMTc0OSA2OTIgMTc0MFQ3MDIgMTcxNFYxNzA1TDIxNCAyNTFMNzAzIC0xMjA0TDcwMiAtMTIxM1E3MDIgLTEyMzAgNjkyIC0xMjM5VDY2NyAtMTI0OEg2NjRRNjQ3IC0xMjQ4IDYzNSAtMTIzMVE2MzMgLTEyMjggMzg2IC00OTNMMTQwIDI0MicsXG4gICAgMHgzMDA5OiAnMTAzIDE3MTRRMTAzIDE3MzIgMTE0IDE3NDFUMTM3IDE3NTBRMTU3IDE3NTAgMTcwIDE3MzJRMTcyIDE3MjkgNDE5IDk5NEw2NjUgMjYwVjI0Mkw0MTkgLTQ5M1ExNzIgLTEyMjggMTcwIC0xMjMxUTE1OCAtMTI0OCAxNDEgLTEyNDhIMTM4UTEyMyAtMTI0OCAxMTMgLTEyMzlUMTAzIC0xMjEzVi0xMjA0TDU5MSAyNTFMMTAzIDE3MDVWMTcxNCcsXG4gICAgMHhFMDAwOiAnNzIyIC0xNEg3MjBRNzA4IC0xNCA3MDIgMFYzMDZMNzAzIDYxMlE3MTMgNjI1IDcyMiA2MjVRNzM0IDYyNSA3NDIgNjEwVjBRNzM0IC0xNCA3MjQgLTE0SDcyMicsXG4gICAgMHhFMDAxOiAnNzAyIDU4OVE3MDYgNjAxIDcxOCA2MDVIMTA2MVExMDc2IDU5NyAxMDc2IDU4NVExMDc2IDU3MiAxMDYxIDU2NUg3NDJWMFE3MzQgLTE0IDcyNCAtMTRINzIySDcyMFE3MDggLTE0IDcwMiAwVjU4OScsXG4gICAgMHhFMTUwOiAnLTE4IC0yMTNMLTI0IC0yMDdWLTE3MkwtMTYgLTE1OFE3NSAyIDI2MCA4NFEzMzQgMTEzIDQxNSAxMTlRNDE4IDExOSA0MjcgMTE5VDQ0MCAxMjBRNDU0IDEyMCA0NTcgMTE3VDQ2MCA5OFY2MFYyNVE0NjAgNyA0NTcgNFQ0NDEgMFEzMDggMCAxOTMgLTU1VDI1IC0yMDVRMjEgLTIxMSAxOCAtMjEyVC0xIC0yMTNILTE4JyxcbiAgICAweEUxNTE6ICctMTAgNjBRLTEwIDEwNCAtMTAgMTExVC01IDExOFEtMSAxMjAgMTAgMTIwUTk2IDEyMCAxOTAgODRRMzc1IDIgNDY2IC0xNThMNDc0IC0xNzJWLTIwN0w0NjggLTIxM0g0NTFINDQ3UTQzNyAtMjEzIDQzNCAtMjEzVDQyOCAtMjA5VDQyMyAtMjAyVDQxNCAtMTg3VDM5NiAtMTYzUTMzMSAtODIgMjI0IC00MVQ5IDBRLTQgMCAtNyAzVC0xMCAyNVY2MCcsXG4gICAgMHhFMTUyOiAnLTI0IDMyN0wtMTggMzMzSC0xUTExIDMzMyAxNSAzMzNUMjIgMzI5VDI3IDMyMlQzNSAzMDhUNTQgMjg0UTExNSAyMDMgMjI1IDE2MlQ0NDEgMTIwUTQ1NCAxMjAgNDU3IDExN1Q0NjAgOTVWNjBWMjhRNDYwIDggNDU3IDRUNDQyIDBRMzU1IDAgMjYwIDM2UTc1IDExOCAtMTYgMjc4TC0yNCAyOTJWMzI3JyxcbiAgICAweEUxNTM6ICctMTAgNjBWOTVRLTEwIDExMyAtNyAxMTZUOSAxMjBRMTUxIDEyMCAyNTAgMTcxVDM5NiAyODRRNDA0IDI5MyA0MTIgMzA1VDQyNCAzMjRUNDMxIDMzMVE0MzMgMzMzIDQ1MSAzMzNINDY4TDQ3NCAzMjdWMjkyTDQ2NiAyNzhRMzc1IDExOCAxOTAgMzZROTUgMCA4IDBRLTUgMCAtNyAzVC0xMCAyNFY2MCcsXG4gICAgMHhFMTU0OiAnLTEwIDBWMTIwSDQxMFYwSC0xMCcsXG59LHtcbiAgICAweEUxNTU6IFwiXFx1RTE1M1xcdUUxNTJcIixcbiAgICAweEUxNTY6IFwiXFx1RTE1MVxcdUUxNTBcIixcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtDaGFyTWFwLCBDaGFyT3B0aW9uc30gZnJvbSAnLi4vLi4vRm9udERhdGEuanMnO1xuXG5leHBvcnQgY29uc3QgdGV4VmFyaWFudDogQ2hhck1hcDxDaGFyT3B0aW9ucz4gPSB7XG4gICAgMHgyQzY6IFsuODQ1LCAtMC41NjEsIDIuMzMzLCB7aWM6IC4wMTN9XSxcbiAgICAweDJEQzogWy44OTksIC0wLjYyOCwgMi4zMzNdLFxuICAgIDB4MzAyOiBbLjg0NSwgLTAuNTYxLCAwLCB7aWM6IC4wMTN9XSxcbiAgICAweDMwMzogWy44OTksIC0wLjYyOCwgMF0sXG4gICAgMHgzRjA6IFsuNDM0LCAuMDA2LCAuNjY3LCB7aWM6IC4wNjd9XSxcbiAgICAweDIxMEY6IFsuNjk1LCAuMDEzLCAuNTQsIHtpYzogLjAyMn1dLFxuICAgIDB4MjE5MDogWy40MzcsIC0wLjA2NCwgLjVdLFxuICAgIDB4MjE5MjogWy40MzcsIC0wLjA2NCwgLjVdLFxuICAgIDB4MjFDQzogWy41MTQsIC4wMTQsIDFdLFxuICAgIDB4MjIwNDogWy44NiwgLjE2NiwgLjU1Nl0sXG4gICAgMHgyMjA1OiBbLjU4NywgMCwgLjc3OF0sXG4gICAgMHgyMjEyOiBbLjI3LCAtMC4yMywgLjVdLFxuICAgIDB4MjIxNjogWy40MywgLjAyMywgLjc3OF0sXG4gICAgMHgyMjFEOiBbLjQ3MiwgLTAuMDI4LCAuNzc4XSxcbiAgICAweDIyMjM6IFsuNDMsIC4wMjMsIC4yMjJdLFxuICAgIDB4MjIyNDogWy40MywgLjAyMywgLjIyMiwge2ljOiAuMDE4fV0sXG4gICAgMHgyMjI1OiBbLjQzMSwgLjAyMywgLjM4OV0sXG4gICAgMHgyMjI2OiBbLjQzMSwgLjAyNCwgLjM4OSwge2ljOiAuMDE4fV0sXG4gICAgMHgyMjNDOiBbLjM2NSwgLTAuMTMyLCAuNzc4XSxcbiAgICAweDIyNDg6IFsuNDgxLCAtMC4wNSwgLjc3OF0sXG4gICAgMHgyMjY4OiBbLjc1MiwgLjI4NCwgLjc3OF0sXG4gICAgMHgyMjY5OiBbLjc1MiwgLjI4NCwgLjc3OF0sXG4gICAgMHgyMjcwOiBbLjkxOSwgLjQyMSwgLjc3OF0sXG4gICAgMHgyMjcxOiBbLjkxOSwgLjQyMSwgLjc3OF0sXG4gICAgMHgyMjg4OiBbLjgyOCwgLjMzLCAuNzc4XSxcbiAgICAweDIyODk6IFsuODI4LCAuMzMsIC43NzhdLFxuICAgIDB4MjI4QTogWy42MzQsIC4yNTUsIC43NzhdLFxuICAgIDB4MjI4QjogWy42MzQsIC4yNTQsIC43NzhdLFxuICAgIDB4MjJBODogWy42OTQsIDAsIC42MTFdLFxuICAgIDB4MjJDNTogWy4xODksIDAsIC4yNzhdLFxuICAgIDB4MjMyMjogWy4zNzgsIC0wLjEyMiwgLjc3OF0sXG4gICAgMHgyMzIzOiBbLjM3OCwgLTAuMTQzLCAuNzc4XSxcbiAgICAweDI1QjM6IFsuNTc1LCAuMDIsIC43MjJdLFxuICAgIDB4MjVCRDogWy41NzYsIC4wMTksIC43MjJdLFxuICAgIDB4MkE4NzogWy44MDEsIC4zMDMsIC43NzhdLFxuICAgIDB4MkE4ODogWy44MDEsIC4zMDMsIC43NzhdLFxuICAgIDB4MkFDQjogWy43NTIsIC4zMzIsIC43NzhdLFxuICAgIDB4MkFDQzogWy43NTIsIC4zMzMsIC43NzhdLFxufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQge1NWR0NoYXJNYXAsIEFkZFBhdGhzfSBmcm9tICcuLi8uLi9Gb250RGF0YS5qcyc7XG5pbXBvcnQge3RleFZhcmlhbnQgYXMgZm9udH0gZnJvbSAnLi4vLi4vLi4vY29tbW9uL2ZvbnRzL3RleC90ZXgtdmFyaWFudC5qcyc7XG5cbmV4cG9ydCBjb25zdCB0ZXhWYXJpYW50OiBTVkdDaGFyTWFwID0gQWRkUGF0aHMoZm9udCwge1xuICAgIDB4MkM2OiAnMSA1NjFRLTMgNTYzIC02IDU3N1QtMTIgNjA0TC0xNCA2MThRLTE0IDYyNSAtNyA2MjhUMjMgNjM1UTMxIDYzNiAzNiA2MzdRNjMgNjQxIDYyMSA3NDVRMTE0OCA4NDUgMTE2NSA4NDVRMTE2NyA4NDUgMTc1MiA3MzlMMjMzOCA2MzBRMjM0NiA2MzAgMjM0NiA2MThRMjM0MCA1NjUgMjMzMiA1NjFRMjMyOSA1NjEgMTc0OSA2NTRRMTYxNyA2NzUgMTQ2NiA2OTlUMTI0MSA3MzZUMTE2NyA3NDhRMTE2NSA3NDggMTA5MyA3MzdUODY3IDcwMFQ1ODMgNjU0UTMgNTYxIDEgNTYxJyxcbiAgICAweDJEQzogJzgwNCA3ODhRNzE3IDc4OCA2MDYgNzcyVDM5NyA3MzJUMjEzIDY4NVQ3NSA2NDVUMTggNjI4UTExIDYyOCAxMSA2MzJROCA2MzcgNCA2NjhUMiA3MDRRMiA3MTMgMzYgNzMyUTU1IDczOSAyNDIgNzk1UTYyMiA4OTggODI2IDg5OFE4OTMgODk4IDk0NyA4OTVRMTAwOSA4ODcgMTA1NiA4NzJUMTE4NyA4MTlRMTI4NiA3NzYgMTM1NiA3NThUMTUyNyA3MzlRMTYxNCA3MzkgMTcyNSA3NTVUMTkzNCA3OTVUMjExOCA4NDJUMjI1NiA4ODJUMjMxMyA4OTlRMjMyMCA4OTkgMjMyMCA4OTVRMjMyMyA4OTAgMjMyNyA4NjBUMjMyOSA4MjRRMjMyOSA4MTggMjI5NiA3OTVRMjI3MyA3ODcgMjA4OSA3MzJRMTgxMCA2NTcgMTU5OCA2MzJRMTU2MiA2MjkgMTQ5MiA2MjlRMTM4OSA2MjkgMTMyMCA2NDRUMTE0NCA3MDhRMTA0OCA3NTEgOTc3IDc2OVQ4MDQgNzg4JyxcbiAgICAweDMwMjogJy0yMzMyIDU2MVEtMjMzNiA1NjMgLTIzNDAgNTc3VC0yMzQ2IDYwNEwtMjM0NyA2MThRLTIzNDcgNjI1IC0yMzQwIDYyOFQtMjMxMCA2MzVRLTIzMDIgNjM2IC0yMjk3IDYzN1EtMjI3MCA2NDEgLTE3MTIgNzQ1US0xMTg1IDg0NSAtMTE2OCA4NDVRLTExNjYgODQ1IC01ODEgNzM5TDUgNjMwUTEzIDYzMCAxMyA2MThRNyA1NjUgLTEgNTYxUS00IDU2MSAtNTg0IDY1NFEtNzE2IDY3NSAtODY3IDY5OVQtMTA5MiA3MzZULTExNjYgNzQ4US0xMTY4IDc0OCAtMTI0MCA3MzdULTE0NjYgNzAwVC0xNzUwIDY1NFEtMjMzMCA1NjEgLTIzMzIgNTYxJyxcbiAgICAweDMwMzogJy0xNTI5IDc4OFEtMTYxNiA3ODggLTE3MjcgNzcyVC0xOTM2IDczMlQtMjEyMCA2ODVULTIyNTggNjQ1VC0yMzE1IDYyOFEtMjMyMiA2MjggLTIzMjIgNjMyUS0yMzI1IDYzNyAtMjMyOSA2NjhULTIzMzEgNzA0US0yMzMxIDcxMyAtMjI5NyA3MzJRLTIyNzggNzM5IC0yMDkxIDc5NVEtMTcxMSA4OTggLTE1MDcgODk4US0xNDQwIDg5OCAtMTM4NiA4OTVRLTEzMjQgODg3IC0xMjc3IDg3MlQtMTE0NiA4MTlRLTEwNDcgNzc2IC05NzcgNzU4VC04MDYgNzM5US03MTkgNzM5IC02MDggNzU1VC0zOTkgNzk1VC0yMTUgODQyVC03NyA4ODJULTIwIDg5OVEtMTMgODk5IC0xMyA4OTVRLTEwIDg5MCAtNiA4NjBULTQgODI0US00IDgxOCAtMzcgNzk1US02MCA3ODcgLTI0NCA3MzJRLTUyMyA2NTcgLTczNSA2MzJRLTc3MSA2MjkgLTg0MSA2MjlRLTk0NCA2MjkgLTEwMTMgNjQ0VC0xMTg5IDcwOFEtMTI4NSA3NTEgLTEzNTYgNzY5VC0xNTI5IDc4OCcsXG4gICAgMHgzRjA6ICcyMjggMzI1UTE3MCAzMjIgMTU2IDMxNlQxMjcgMzA5UTEwOCAzMDkgMTA0IDMxNFE5OSAzMTkgOTkgMzIyVDEwOCAzNDFRMTI1IDM3NiAxNzEgNDAwVDI2OCA0MjVIMjcxUTMwMiA0MjUgMzE5IDM5NlEzMjggMzc3IDMyOCAzNThRMzI4IDMzMiAzMjQgMzE0UTMxMSAyNzAgMjg2IDIyMVEyNzQgMTk0IDI3NCAxOTJIMjc1UTMzOSAyMzQgNDg0IDMyNVQ2MzkgNDIxUTY2OSA0MzQgNjkxIDQzNFQ3MjMgNDI1VDczNCA0MDZRNzM0IDM5NCA3MTkgMzgxUTcxNSAzNzYgNjQ0IDMzMEw1NzUgMjg3TDU2NiAyNjdRNTQzIDIzMyA1MjYgMTc2UTUyMCAxNjAgNTE1IDE0M1Q1MDggMTE1VDUwNiAxMDVRNTA2IDEwMyA1MzMgMTAzUTU4NSAxMDMgNjA3IDExMFQ2NDEgMTE4UTY3MCAxMTggNjcwIDEwN1E2NzAgMTAwIDY2MSA4NVE2NDMgNTAgNTk4IDI3VDUwNCAzUTQ2NSAzIDQ1MCAzNlE0NDEgNTEgNDQxIDczUTQ0MSA4NCA0NDQgOTZRNDUyIDE0NiA0ODQgMjA1TDQ5NyAyMzZMMzI0IDEyNVExNDMgMTIgMTM1IDEwUTEwMyAtNiA3NyAtNlE2MSAtNiA0OSAyVDM3IDIxUTM3IDM2IDQ5IDQ2VDEyNCA5NkwxOTUgMTQxTDIwNCAxNTZRMjE5IDE3OSAyNDMgMjQ4VDI2NCAzMjNRMjY0IDMyNSAyMjggMzI1JyxcbiAgICAweDIxMEY6ICcxODIgNTk5UTE4MiA2MTEgMTc0IDYxNVQxMzMgNjE5UTExOCA2MTkgMTE0IDYyMVQxMDkgNjMwUTEwOSA2MzYgMTE0IDY1NlQxMjIgNjgxUTEyNSA2ODUgMjAyIDY4OFEyNzIgNjk1IDI4NiA2OTVRMzA0IDY5NSAzMDQgNjg0UTMwNCA2ODIgMjk1IDY0NFQyODIgNTk3UTI4MiA1OTIgMzYwIDU5MkgzOTlRNDMwIDU5MiA0NDUgNTg3VDQ2MCA1NjNRNDYwIDU1MiA0NTEgNTQxTDQ0MiA1MzVIMjY2TDI1MSA0NjhRMjQ3IDQ1MyAyNDMgNDM2VDIzNiA0MDlUMjMzIDM5OVEyMzMgMzk1IDI0NCA0MDRRMjk1IDQ0MSAzNTcgNDQxUTQwNSA0NDEgNDQ1IDQxN1Q0ODUgMzMzUTQ4NSAyODQgNDQ5IDE3OFQ0MTIgNThUNDI2IDQ0UTQ0NyA0NCA0NjYgNjhRNDg1IDg3IDUwMCAxMzBMNTA5IDE1Mkg1MzFINTQzUTU2MiAxNTIgNTYyIDE0NFE1NjIgMTI4IDU0NiA5M1Q0OTQgMjNUNDE1IC0xM1EzODUgLTEzIDM1OSAzVDMyMiA0NFEzMTggNTIgMzE4IDc3UTMxOCA5OSAzNTIgMTk2VDM4NiAzMzdRMzg2IDM4NiAzNDYgMzg2UTMxOCAzODYgMjg2IDM3MFEyNjcgMzYxIDI0NSAzMzhUMjExIDI5MlEyMDcgMjg3IDE5MyAyMzVUMTYyIDExM1QxMzggMjFRMTI4IDcgMTIyIDRRMTA1IC0xMiA4MyAtMTJRNjYgLTEyIDU0IC0yVDQyIDI2TDE2NiA1MzBRMTY2IDUzNCAxNjEgNTM0VDEyOSA1MzVRMTI3IDUzNSAxMjIgNTM1VDExMiA1MzRRNzQgNTM0IDc0IDU2MlE3NCA1NzAgNzcgNTc2VDg0IDU4NVQ5NiA1ODlUMTA5IDU5MVQxMjQgNTkyVDEzOCA1OTJMMTgyIDU5NVY1OTknLFxuICAgIDB4MjE5MDogJzI5MiA0MTlRMjkyIDQwMCAyNjEgMzQ3VDIxMSAyNzVIMzA2UTMxOSAyNzUgMzM4IDI3NVQzNjQgMjc2UTM5OSAyNzYgNDEwIDI3MVQ0MjIgMjUwVDQxMSAyMzBUMzY2IDIyNUgzMDZIMjExUTIxNCAyMjIgMjMyIDE5N1QyNzEgMTM2VDI5MiA4MlEyOTIgNzEgMjg1IDY4VDI2MiA2NEgyNTBIMjQxUTIyMSA2NCAyMTYgNjdUMjA1IDgzUTE4NiAxMjcgMTUzIDE2N1Q3OCAyMzBRNjQgMjM4IDY0IDI1MFE2NCAyNTggNjkgMjYzVDgyIDI3MlQxMDYgMjg4VDEzOSAzMThRMTYyIDM0MiAxNzcgMzY1VDE5OCA0MDJUMjA5IDQyNVQyMjMgNDM2UTIyNCA0MzcgMjUyIDQzN0gyNThRMjkyIDQzNyAyOTIgNDE5JyxcbiAgICAweDIxOTI6ICcxODggNDE3UTE4OCA0MzcgMjIxIDQzN0gyMzNRMjU2IDQzNyAyNjMgNDM0VDI3NSA0MTdRMjk0IDM3MyAzMjcgMzMzVDQwMiAyNzBRNDE3IDI2MSA0MTcgMjUwUTQxNyAyNDEgNDEwIDIzNlQzODIgMjE3VDM0MSAxODJRMzE1IDE1NSAyOTkgMTI4VDI3NSA4NVQyNjMgNjZRMjU5IDY0IDIzMSA2NEgyMTlRMTk3IDY0IDE5MSA3MlQxOTMgMTAwUTIwMiAxMjQgMjE1IDE0N1QyMzkgMTg1VDI1NyAyMTBUMjY3IDIyM0wyNjkgMjI1SDE3NEgxMTZRODAgMjI1IDY5IDIyOVQ1OCAyNTBUNzAgMjcxVDExNCAyNzZRMTIxIDI3NiAxNDAgMjc2VDE3NCAyNzVIMjY5TDI2NyAyNzdRMjY2IDI4MCAyNTcgMjkxVDIzMyAzMjVUMjA1IDM3NFExODggNDA4IDE4OCA0MTcnLFxuICAgIDB4MjFDQzogJzc1NSA1MTJRNzU1IDUxNCA3NzggNTE0SDgwMUw4MDQgNTAzUTgwNSA1MDEgODEyIDQ4NlQ4MjQgNDYyVDgzOSA0MzdUODYyIDQwOFQ4OTIgMzgxVDkzMiAzNTRMOTQ0IDM0N1YzMjdINTA3UTcwIDMyNyA2NyAzMjlRNTUgMzM1IDU1IDM0N1Q2NyAzNjVRNzAgMzY3IDQ1NCAzNjdIODM3TDgyOCAzNzZRODAzIDQwMyA3ODUgNDM3VDc2MSA0ODlUNzU1IDUxMlpNNTUgMTUzVjE3M0g0OTJROTI4IDE3MyA5MzIgMTcxUTk0NCAxNjYgOTQ0IDE1M1Q5MzIgMTM1UTkyOCAxMzMgNTQ1IDEzM0gxNjJMMTcxIDEyNFExOTggOTUgMjE2IDYxVDIzOSA4TDI0NCAtMTJRMjQ0IC0xNCAyMjEgLTE0SDE5OEwxOTUgLTRRMTYwIDk1IDY3IDE0Nkw1NSAxNTMnLFxuICAgIDB4MjIwNDogJzU1IDY3NlE1NSA2ODggNjYgNjk0SDE5OUwzMzMgNjk2TDM1MSA3NzJRMzY0IDgyNyAzNzAgODQzVDM4NiA4NjBRMzkzIDg2MCAzOTkgODU0VDQwNiA4NDFRNDA2IDgzNiAzOTEgNzY1TDM3NSA2OTZRMzc1IDY5NCA0MzEgNjk0SDQ4NFE0OTEgNjg4IDQ5NyA2ODFWMTJMNDkzIDVMNDg2IDFMMzUzIC0xSDIxOUwyMDIgLTc5UTE4NCAtMTUzIDE4MCAtMTU5UTE3NSAtMTY2IDE2NSAtMTY2UTE0NiAtMTY2IDE0NiAtMTQ4UTE0NiAtMTQxIDE2MSAtNzZUMTc3IC00UTE3NyAtMSAxMjIgLTFINjhRNTUgMTIgNTUgMjBUNjYgMzlIMTI2TDE4NiA0MUwyMTkgMTgxUTIyNiAyMTUgMjM0IDI1MVQyNDYgMzA1VDI1MSAzMjVRMjUxIDMyOCAxNjYgMzI4SDc5UTY4IDM0NSA2OCAzNDdRNjggMzUyIDc1IDM1OUw4MiAzNjhIMjYyTDI5MSA1MDVRMjk4IDUzOSAzMDYgNTc1VDMxOSA2MzBUMzI0IDY1MFY2NTRINjhRNTUgNjY5IDU1IDY3NlpNNDU3IDM2OFY2NTRINDExUTM2NiA2NTQgMzY2IDY1MlEzNjUgNjUxIDM2MSA2MzRUMzQ5IDU4MFQzMzMgNTE0UTMwMyAzNzMgMzAyIDM3MlYzNjhINDU3Wk00NTcgMzlWMzI4SDM3NVEyOTMgMzI4IDI5MyAzMjVRMjkyIDMyMiAyNjAgMTgzVDIyOCA0MVQzNDQgMzlINDU3JyxcbiAgICAweDIyMDU6ICc2MjQgNDcwUTYyNCA0NjggNjM5IDQ0NlQ2NjggMzgyVDY4MyAyOTFRNjgzIDE4MSA2MTIgOTlUNDM3IC0xUTQyNSAtMiAzODcgLTJUMzM3IC0xUTI0NSAxOCAxOTMgNzBMMTc5IDgxTDEzMSAzOVE5NiA4IDg5IDNUNzUgLTNRNTUgLTMgNTUgMTdRNTUgMjQgNjEgMzBUMTExIDczUTE1NCAxMTMgMTUxIDExM1ExNTEgMTE0IDE0MCAxMzBUMTE1IDE3N1Q5NSAyNDFROTQgMjUzIDk0IDI5MVQ5NSAzNDFRMTEyIDQzMSAxNzMgNDk1UTI2NSA1ODcgMzg1IDU4N1E0MTAgNTg3IDQzNyA1ODFRNTIyIDU3MSA1ODIgNTEzTDU5NSA1MDFMNjQyIDU0MVE2ODkgNTg2IDY5NSA1ODZRNjk2IDU4NiA2OTcgNTg2VDY5OSA1ODdRNzA2IDU4NyA3MTMgNTgzVDcyMCA1NjhRNzIwIDU2MCA3MTEgNTUxVDY2NCA1MTBRNjUxIDQ5OSA2NDIgNDkwVDYyOCA0NzVUNjI0IDQ3MFpNNTY0IDQ3N1E1MTcgNTIyIDQ0OCA1MzlRNDI4IDU0NiAzNzUgNTQ2UTI5MCA1NDYgMjI5IDQ5MlQxNDQgMzcwUTEzMyAzMzIgMTMzIDI3OVExMzYgMjI4IDE1MSAxOTVRMTU3IDE3OSAxNjggMTYwVDE4NCAxNDFRMTg2IDE0MSAzNzUgMzA3VDU2NCA0NzdaTTY0MiAyOTBRNjQyIDMxOCA2MzcgMzQzVDYyNSAzODZUNjExIDQxNlQ1OTggNDM2VDU5MyA0NDRRNTkwIDQ0NCA0MDIgMjc3VDIxMyAxMDhRMjEzIDEwNCAyMzEgODlUMjkzIDU1VDM5MiAzN1E0OTUgMzcgNTY4IDExMVQ2NDIgMjkwJyxcbiAgICAweDIyMTI6ICc4NCAyMzdUODQgMjUwVDk4IDI3MEg0MDJRNDE3IDI2MiA0MTcgMjUwVDQwMiAyMzBIOThRODQgMjM3IDg0IDI1MCcsXG4gICAgMHgyMjE2OiAnOTEgNDA0VDkxIDQxMFQ5NyA0MjNUMTExIDQzMFExMTcgNDMwIDM5NSAyMjRRNjc2IDEzIDY3OCAxMFE2ODUgMyA2ODUgLTNUNjc4IC0xNlQ2NjQgLTIzUTY1OCAtMjMgMzgwIDE4NFQ5OCAzOTdROTEgNDA0IDkxIDQxMCcsXG4gICAgMHgyMjFEOiAnNTYgMjUwUTU2IDM0NiAxMjIgNDA5VDI3NiA0NzJRMzQ5IDQ3MiA0MDcgNDMwVDQ4NiAzMjZMNDg5IDMxNlE0OTAgMzE3IDQ5MyAzMjZUNTAxIDM0NVQ1MTQgMzY3VDUzMSAzOTNRNTU3IDQyNSA2MDIgNDQ4VDY5OCA0NzJRNzIyIDQ3MiA3MjIgNDUyUTcyMiA0MzcgNzAyIDQzNVQ2NDIgNDIxVDU3MSAzNzdRNTIwIDMyMyA1MjAgMjUwUTUyMCAxNzkgNTY4IDEyNlQ2OTMgNjhRNzIyIDY2IDcyMiA0OFE3MjIgMjggNjk4IDI4UTYzNiAyOCA1NzYgNjdUNDkzIDE3NEw0OTAgMTg0UTQ4OSAxODEgNDgzIDE2N1Q0NzUgMTUwVDQ2OCAxMzZUNDU4IDEyMFQ0NDcgMTA3VDQzMiA5MFQ0MTIgNzNRMzUwIDI4IDI3NyAyOFExODggMjggMTIyIDkxVDU2IDI1MFpNMTk5IDY4VDI3OCA2OFQ0MDggMTIyVDQ1OSAyNTBRNDU5IDMyMiA0MTQgMzcwVDMwOCA0MzBRMzAyIDQzMSAyNzMgNDMxUTIwNCA0MzEgMTUwIDM4MFQ5NiAyNTBROTYgMTc2IDE0NyAxMjInLFxuICAgIDB4MjIyMzogJzkxIDQxN1ExMDQgNDMwIDExMSA0MzBUMTMxIDQxN1YtMTBRMTE2IC0yMyAxMTEgLTIzVDkxIC0xMFY0MTcnLFxuICAgIDB4MjIyNDogJzkxIDQxN1ExMDQgNDMwIDExMSA0MzBUMTMxIDQxN1YzMDFMMTcxIDM0MVEyMDEgMzczIDIwNyAzNzhUMjIwIDM4NFEyMjcgMzg0IDIzMyAzNzdUMjQwIDM2NlEyNDAgMzU3IDE4NyAyOTlMMTMxIDI0NFYtMTBRMTE2IC0yMyAxMTEgLTIzVDkxIC0xMFYyMDFMNDkgMTU3UTIwIDEyNyAxNCAxMjFUMCAxMTVRLTggMTE1IC0xNCAxMjFULTIwIDEzMlEtMjAgMTM5IDE3IDE3OFEyOSAxOTEgMzYgMTk5TDkxIDI1N1Y0MTcnLFxuICAgIDB4MjIyNTogJzU1IDQxN1E2OSA0MzEgNzYgNDMxVDk1IDQxOVYtMTJRODQgLTIzIDc2IC0yM1E3MiAtMjMgNjkgLTIyVDYyIC0xNlQ1NSAtMTBWNDE3Wk0yOTMgNDE5UTMwMCA0MzEgMzEwIDQzMUwzMjQgNDI0TDMzMSA0MTdWLTEwUTMxNiAtMjMgMzA5IC0yM0wyOTcgLTE5TDI5MyAtMTJWNDE5JyxcbiAgICAweDIyMjY6ICc1NiA0MTdRNjggNDMxIDc2IDQzMUw4OSA0MjZMOTYgNDE5VjMxN0w5OCAyMTVMMTkzIDI3M0wyOTEgMzMwVjM3NUwyOTMgNDE5UTMwMSA0MzEgMzExIDQzMVEzMzEgNDMxIDMzMSAzODhMMzMzIDM1NUwzNTYgMzcwUTM4MSAzODQgMzg4IDM4NFEzOTQgMzg0IDQwMCAzNzdUNDA3IDM2M1E0MDcgMzU0IDM2NyAzMjhMMzMxIDMwOFYtMTBRMzE2IC0yMyAzMTAgLTIzUTMwMCAtMjMgMjkzIC0xMkwyOTEgMTM1VjI4NEw5OCAxNjhMOTYgNzdWLTEyUTg0IC0yNCA3NiAtMjRMNjIgLTE5TDU4IC0xMkw1NiA2NlYxNDRMMzEgMTI4UTUgMTE0IC0yIDExNFEtOCAxMTQgLTE0IDEyMVQtMjAgMTM2US0yMCAxNDIgLTE0IDE0N1QyMCAxNzBMNTYgMTkwVjQxNycsXG4gICAgMHgyMjNDOiAnNzMgMTMyUTU1IDEzMiA1NSAxNzJRNTUgMjIwIDc5IDI3MlE5NSAzMDEgMTExIDMxOVExNDggMzUzIDE5NSAzNjNRMTk5IDM2NCAyMTIgMzY0UTI2MiAzNjQgMjk0IDM1MFQ0MDggMjcyUTQ3MiAyMjIgNTIyIDIxMlE1MzcgMjA4IDU1NSAyMDhRNjA2IDIwOCA2NDYgMjQzUTY3MSAyNjggNjgwIDI5NlQ2OTEgMzQyVDcwMiAzNjVRNzEzIDM2NSA3MTYgMzU0VDcxOSAzMTRRNzE0IDIzNiA2NjQgMTc5TDY2MCAxNzZRNjU3IDE3MyA2NTQgMTcwVDY0NCAxNjNUNjMxIDE1NFQ2MTUgMTQ2VDU5NiAxMzlUNTc0IDEzNFQ1NDkgMTMyUTUxMCAxMzIgNDY1IDE1NlQzODYgMjExVDMwNyAyNjVUMjIzIDI5MFExNjIgMjkwIDEyNCAyNDlUODYgMTY1UTg2IDE1NSA4MiAxNDRUNzMgMTMyJyxcbiAgICAweDIyNDg6ICc1NSAzMjZRNTUgMzk0IDEwMSA0MzdUMjI2IDQ4MVEyNjggNDc5IDMxMyA0NjBUMzkyIDQxOVQ0NjkgMzc5VDU1NSAzNjFRNjIyIDM2MSA2NjIgNDAxUTY4NiA0MjMgNjg4IDQ1MFE2OTMgNDc5IDcwMiA0NzlINzA1UTcxOSA0NzkgNzE5IDQ0MlE3MTkgMzY3IDY3MCAzMjdUNTU0IDI4NlE1MTIgMjg2IDQ2NiAzMDRUMzg2IDM0NVQzMDcgMzg1VDIyMCA0MDRRMTg0IDQwNCAxNTcgMzk0VDEyMCAzNzRMMTExIDM2M1E4NiAzMzkgODYgMzE3UTg2IDI4OCA3MSAyODhRNTUgMjg4IDU1IDMyNlpNNTUgOTBRNTUgMTY0IDEwNSAyMDVUMjI2IDI0NlEyNjkgMjQzIDMxNCAyMjRUMzkyIDE4M1Q0NzAgMTQ0VDU1OCAxMjZRNjIyIDEyNiA2NjIgMTY2UTY4NiAxODcgNjg4IDIxNFE2OTMgMjQ0IDcwNCAyNDRRNzE2IDI0NCA3MTkgMjEwUTcxOSAxNjUgNzAyIDEzMlQ2NTggODJUNjA1IDU4VDU1MiA1MFQ0OTggNThUNDQ3IDc3VDM4NCAxMTBRMzIyIDE0NiAzMDIgMTUyUTI2MyAxNjggMjIwIDE2OFExNzkgMTY4IDE0NCAxNTJRMTI4IDE0NyAxMDcgMTI1VDg2IDgxUTg2IDUyIDcxIDUyUTU1IDUyIDU1IDkwJyxcbiAgICAweDIyNjg6ICc4NiA0NzJROTMgNDc3IDM4MSA2MTRUNjczIDc1MlE2ODAgNzUyIDY4NiA3NDZUNjkzIDczMlQ2ODkgNzIxUTY4NiA3MTUgNDE4IDU5MEwxNTEgNDYxTDQxOCAzMzJRNjg0IDIwNyA2ODkgMjAxUTY5MyAxOTUgNjkzIDE5MFE2OTMgMTgzIDY4NyAxNzdUNjc1IDE3MFE2NjggMTcwIDM4MCAzMDdUODYgNDUwUTgyIDQ1NCA4MiA0NjFRODIgNDY3IDg2IDQ3MlpNMzY5IDEwMVYxMjZRMzY5IDE1NiAzODIgMTU2SDM4NFEzODUgMTU3IDM4NiAxNTdRNDA5IDE1NyA0MDkgMTE1Vjk4VjU0SDY4MFE2OTMgMzkgNjkzIDM0VDY4MCAxNEg0MDlWLTE0Mkg2ODBRNjkzIC0xNTUgNjkzIC0xNjJRNjkzIC0xNjcgNjgwIC0xODJINDA5Vi0yNzNRMzk2IC0yODQgMzg4IC0yODRRMzgyIC0yODQgMzY5IC0yNzVWLTE4Mkg5NVE4MiAtMTY3IDgyIC0xNjJRODIgLTE1NSA5NSAtMTQySDM2OVYxNEg5NVE5MyAxNyA4OSAyMVQ4NCAyN1Q4MiAzNFQ4MyA0MFQ4OSA0N1Q5NSA1NEgzNjlWMTAxJyxcbiAgICAweDIyNjk6ICc4OSA3NDVROTUgNzUyIDEwMCA3NTJRMTA2IDc1MiAzOTQgNjE1VDY4OSA0NzJRNjkzIDQ2OCA2OTMgNDYxVDY4OSA0NTBRNjg0IDQ0NSAzOTYgMzA4VDEwMCAxNzBROTUgMTcwIDg5IDE3NlQ4MiAxOTBRODIgMTk1IDg2IDIwMVE5MSAyMDggMzU4IDMzMkw2MjQgNDYxTDM1OCA1OTBROTAgNzE1IDg2IDcyMVE4MiA3MjUgODIgNzMxUTgyIDczOSA4OSA3NDVaTTM2OSAxMDFWMTI2UTM2OSAxNTYgMzgyIDE1NkgzODRRMzg1IDE1NyAzODYgMTU3UTQwOSAxNTcgNDA5IDExNVY5OFY1NEg2ODBRNjkzIDM5IDY5MyAzNFQ2ODAgMTRINDA5Vi0xNDJINjgwUTY5MyAtMTU1IDY5MyAtMTYyUTY5MyAtMTY3IDY4MCAtMTgySDQwOVYtMjczUTM5NiAtMjg0IDM4OCAtMjg0UTM4MiAtMjg0IDM2OSAtMjc1Vi0xODJIOTVRODIgLTE2NyA4MiAtMTYyUTgyIC0xNTUgOTUgLTE0MkgzNjlWMTRIOTVROTMgMTcgODkgMjFUODQgMjdUODIgMzRUODMgNDBUODkgNDdUOTUgNTRIMzY5VjEwMScsXG4gICAgMHgyMjcwOiAnODIgMzRRODIgNDQgOTMgNTVIMTk4TDMwMCA1N0wzNDIgMTc5UTM1MSAyMDcgMzYyIDIzOFQzNzggMjg2VDM4NCAzMDNUMjM4IDM3N1ExMDkgNDM1IDg2IDQ1MFE4MiA0NTQgODIgNDYwVDg2IDQ3MlE5MCA0NzYgMzAyIDU3OUw1MTEgNjc5UTUxMiA2NzkgNTUzIDc5NVE1NjkgODQyIDU3NyA4NjZUNTkyIDkwM1Q2MDAgOTE3VDYwOCA5MTlRNjE1IDkxOSA2MjIgOTEyVDYyOSA5MDFRNjI5IDg5OSA1OTUgNzk5UTU4OSA3NzcgNTgxIDc1M1Q1NjkgNzE3VDU2NCA3MDNMNjE4IDcyOFE2NjYgNzUyIDY3MyA3NTJUNjg2IDc0NlQ2OTMgNzMyUTY5MyA3MjMgNjgzIDcxN1Q2MTUgNjgzTDU0NiA2NTBMNDkxIDQ4OFE0NjQgNDEwIDQ1MCAzNjhUNDM4IDMyNlE0OTMgMjk3IDU2MiAyNjZRNjYwIDIxOSA2NzcgMjA5VDY5NCAxOTBRNjk0IDE4MyA2OTAgMTc3VDY3OCAxNzFRNjY0IDE3MSA1NDYgMjI4TDQyNCAyODZRNDIyIDI4NiAzODIgMTcyTDM0MiA1N0w1MTMgNTVINjgyUTY5NCA0MyA2OTQgMzRRNjk0IDI4IDY4OSAyMUw2ODIgMTdMNTA2IDE1SDMyOUwzMjIgLThRMzIwIC0xMyAzMTAgLTQxVDI5NSAtODVMMjc1IC0xNDFINjgwUTY4MiAtMTQzIDY4NCAtMTQ2VDY4OCAtMTUxVDY5MSAtMTU2VDY5MyAtMTYyUTY5MyAtMTcyIDY4MiAtMTc5TDQ3MyAtMTgxSDI2MkwyMjAgLTMwM1ExOTIgLTM4OCAxODUgLTQwNFQxNjYgLTQyMVExNjAgLTQyMSAxNTMgLTQxNVQxNDYgLTQwM1ExNDYgLTQwMCAxNzkgLTMwMlQyMjAgLTE4NVEyMjAgLTE4MSAxNTggLTE4MUw5MyAtMTc5TDg2IC0xNzRRODIgLTE2OSA4MiAtMTYxUTgyIC0xNTIgOTMgLTE0MUgxNjRMMjMzIC0xMzlMMjYwIC02M0wyODYgMTVIMTg5TDkzIDE3TDg2IDIxUTgyIDI2IDgyIDM0Wk00OTUgNjIzUTQ5NSA2MjYgNDkzIDYyNlQzMjEgNTQ0VDE1MSA0NjFMMzk4IDM0M1EzOTkgMzQzIDQwNSAzNjBUNDIzIDQxNVQ0NDYgNDgzUTQ1NyA1MTMgNDY5IDU1MVQ0ODggNjA2VDQ5NSA2MjMnLFxuICAgIDB4MjI3MTogJzk3IDE3MlE4MiAxNzIgODIgMTkwUTgyIDE5NyA4NiAyMDFROTQgMjA5IDE3MyAyNDZUMzI3IDMxOVQ0MDIgMzU3UTQwNSAzNjAgNDM0IDQ0OFQ0NjIgNTM5TDI3OCA2MjhROTYgNzEzIDg2IDcyMVE4MiA3MjUgODIgNzMyVDg4IDc0NVQxMDIgNzUyUTEwMyA3NTIgMTI1IDc0MlQxOTggNzA5VDI5MyA2NjZRMzQyIDY0MiAzODUgNjIyVDQ1MyA1OTBUNDc4IDU3OVE0NzkgNTc5IDUwNiA2NTlUNTYyIDgyNFQ1OTggOTE1UTYwMiA5MTkgNjA5IDkxOVQ2MjIgOTEzVDYyOSA5MDFRNjI5IDg5OCA1NzEgNzI4UTU0NiA2NTYgNTMxIDYwOFQ1MTggNTU5UTU1NSA1MzkgNjAyIDUxOVE2NjQgNDg4IDY3OSA0NzlUNjk0IDQ2MVE2OTQgNDU3IDY4OSA0NTBRNjgwIDQ0MyA2MTYgNDEzVDQ5NCAzNTZUNDM1IDMyNkwzODkgMTkwTDM0MiA1N0w1MTMgNTVINjgyUTY5NCA0MyA2OTQgMzRRNjk0IDI4IDY4OSAyMUw2ODIgMTdMNTA2IDE1SDMyOUwzMjIgLThRMzIwIC0xMyAzMTAgLTQxVDI5NSAtODVMMjc1IC0xNDFINjgwUTY4MiAtMTQzIDY4NCAtMTQ2VDY4OCAtMTUxVDY5MSAtMTU2VDY5MyAtMTYyUTY5MyAtMTcyIDY4MiAtMTc5TDQ3MyAtMTgxSDI2MkwyMjAgLTMwM1ExOTIgLTM4OCAxODUgLTQwNFQxNjYgLTQyMVExNjAgLTQyMSAxNTMgLTQxNVQxNDYgLTQwM1ExNDYgLTQwMCAxNzkgLTMwMlQyMjAgLTE4NVEyMjAgLTE4MSAxNTggLTE4MUw5MyAtMTc5TDg2IC0xNzRRODIgLTE2OSA4MiAtMTYxUTgyIC0xNTIgOTMgLTE0MUgxNjRMMjMzIC0xMzlMMjYwIC02M0wyODYgMTVIMTg5TDkzIDE3TDg2IDIxUTgyIDI2IDgyIDM0UTgyIDQ0IDkzIDU1SDE5OEwzMDAgNTdMMzQyIDE3OVEzNTAgMjA0IDM2MSAyMzhUMzc4IDI4NlQzODIgMzAxTDI0NiAyMzdRMTExIDE3MiA5NyAxNzJaTTYyNCA0NjFRNjIxIDQ2NCA1NjAgNDkyUTUxMiA1MTggNTAzIDUxOFE1MDAgNTE4IDUwMCA1MTdRNDk5IDUxMyA0ODggNDc5VDQ2NSA0MTNUNDUzIDM3OUw2MjQgNDYxJyxcbiAgICAweDIyODg6ICc4MiAtNlE4MiAxIDk1IDE0SDI2MkwyOTUgOTRRMzMxIDE3MSAzMzEgMTc0UTMyNCAxNzUgMzEyIDE3OFQyNjcgMTk0VDIwNiAyMjdUMTQ2IDI4M1Q5OCAzNjhRODQgNDA2IDg0IDQ2MVQ5OCA1NTRRMTI2IDYzMiAxOTQgNjg1VDM0OSA3NTBRMzYwIDc1MiA0ODAgNzUySDU5MUw2MDQgNzgzUTYyMCA4MTkgNjI0IDgyMVE2MzEgODI4IDY0MCA4MjhRNjUzIDgyNSA2NTggODEwUTY1OCA4MDggNjQ2IDc4MUw2MzUgNzU0UTYzNSA3NTIgNjU4IDc1MlE2ODAgNzUyIDY4NiA3NDZRNjkzIDczOSA2OTMgNzMyUTY5MyA3MjggNjkyIDcyNlQ2ODYgNzE5VDY4MCA3MTJINjE1TDUwNiA0NjZRNDc5IDQwNyA0NTEgMzQ0VDQwOCAyNDhUMzkzIDIxNFEzOTMgMjEwIDUzNSAyMTBINjgwUTY5MyAxOTQgNjkzIDE5MFQ2ODAgMTcwSDM3M0wzNDAgOTJMMzA0IDE0SDY4MFE2OTMgMSA2OTMgLTZRNjkzIC0xMSA2ODAgLTI2SDI4NkwyNTMgLTEwM0wyMTggLTE3OUw0NTEgLTE4MUg2ODJRNjk0IC0xOTMgNjk0IC0yMDFRNjk0IC0yMTIgNjgyIC0yMTlMNDQwIC0yMjFIMjAwTDE3OCAtMjcwUTE2MCAtMzA5IDE1NCAtMzE5VDEzOSAtMzMwUTEyMiAtMzMwIDExOCAtMzEyTDE1NSAtMjIzUTE1NSAtMjIxIDEyNiAtMjIxSDk1UTgyIC0yMDYgODIgLTIwMVQ5NSAtMTgxSDE3NUwyMDYgLTEwOFEyMzcgLTM1IDI0MiAtMzBRMjQyIC0yNiAxNjkgLTI2SDk1UTgyIC0xMSA4MiAtNlpNNTcxIDcxMFE1NzEgNzEyIDQ2OSA3MTJRNDQzIDcxMiA0MTYgNzEyVDM3MSA3MTFUMzUxIDcxMFEyNzkgNzAwIDIyMSA2NTZUMTM4IDU0OFExMjQgNTA4IDEyNCA0NjFUMTM4IDM3NFExODYgMjQ1IDM1MSAyMTJMNDYwIDQ1OVE1NzEgNzA5IDU3MSA3MTAnLFxuICAgIDB4MjI4OTogJzgyIDczMlE4MiA3MzkgOTUgNzUySDI1MUgzNDhRNDIwIDc1MiA0NjAgNzQ0VDU1MSA3MDhRNTY2IDY5NyA1NjYgNzAxUTYxOCA4MTUgNjI0IDgyMVE2MzEgODI4IDY0MCA4MjhRNjUzIDgyNSA2NTggODEwTDYwMCA2NzdRNjAwIDY3MSA2MTUgNjU2VDY1MyA2MDVUNjg5IDUxN1E2OTIgNDk2IDY5MiA0NjFUNjg5IDQwNlE2NjggMzI1IDYxNSAyNjZRNTcyIDIyMSA1MTMgMTk2VDM5MSAxNzBIMzczTDM0MCA5MkwzMDQgMTRINjgwUTY5MyAxIDY5MyAtNlE2OTMgLTExIDY4MCAtMjZIMjg2TDI1MyAtMTAzTDIxOCAtMTc5TDQ1MSAtMTgxSDY4MlE2OTQgLTE5MyA2OTQgLTIwMVE2OTQgLTIxMiA2ODIgLTIxOUw0NDAgLTIyMUgyMDBMMTc4IC0yNzBRMTYwIC0zMDkgMTU0IC0zMTlUMTM5IC0zMzBRMTIyIC0zMzAgMTE4IC0zMTJMMTU1IC0yMjNRMTU1IC0yMjEgMTI2IC0yMjFIOTVRODIgLTIwNiA4MiAtMjAxVDk1IC0xODFIMTc1TDIwNiAtMTA4UTIzNyAtMzUgMjQyIC0zMFEyNDIgLTI2IDE2OSAtMjZIOTVRODIgLTExIDgyIC02UTgyIDEgOTUgMTRIMjYyTDI5NSA5MkwzMzEgMTcwSDk1UTkzIDE3MiA5MSAxNzVUODcgMTgwVDg0IDE4NVQ4MiAxOTFRODIgMTk5IDkzIDIxMEgyMjBMMzQ5IDIxMkw1NDkgNjU5UTUwNyA2OTIgNDYyIDcwMlQzMzggNzEySDI0OUg5NVE4MiA3MjcgODIgNzMyWk02NTIgNDczUTY1MiA1MTMgNjM2IDU1MlQ2MDMgNjExVDU4MiA2MzJRNTgxIDYzMiA0ODcgNDIyVDM5MyAyMTBRNDI0IDIxMCA0NjAgMjIwVDUzNSAyNTNUNjA1IDMxNlQ2NDkgNDEwUTY1MiA0MjcgNjUyIDQ2MVY0NzMnLFxuICAgIDB4MjI4QTogJzY5MyAtMTE1VDY5MyAtMTIyVDY4MCAtMTQ0SDMxNUwyNjkgLTE5OVEyMjEgLTI1NSAyMTMgLTI1NUgyMTJRMjAzIC0yNTUgMTk3IC0yNDhUMTkzIC0yMzFRMTk1IC0yMjUgMjI5IC0xODRMMjYyIC0xNDRIMTg2TDExMyAtMTQyTDEwNiAtMTM3UTEwMiAtMTMwIDEwMiAtMTI1UTEwMiAtMTE5IDExNSAtMTA0SDI5OEw0MjYgNTJIMzg2UTM0MiA1NCAzMDkgNjNRMjM2IDc5IDE4MCAxMjlUOTggMjQ5UTg0IDI4OSA4NCAzNDNRODQgMzk4IDk4IDQzNlExMjYgNTE0IDE5MyA1NjdUMzQ2IDYzMlEzNDcgNjMyIDM3MyA2MzJUNDQwIDYzM1Q1MjAgNjM0SDY4MFE2ODIgNjMxIDY4NiA2MjdUNjkxIDYyMVQ2OTMgNjE0VDY4MCA1OTRINTI2UTM2NCA1OTQgMzUzIDU5MlEyNjggNTgxIDIwNyA1MjhUMTI2IDM5NFExMjMgMzc4IDEyMyAzNDNUMTI2IDI5MlExNDEgMjMxIDE4MSAxODVUMjgwIDExNFEzMjkgOTIgNDE1IDkySDQ2Mkw1MDYgMTQ3UTU1NCAyMDMgNTYyIDIwM0g1NjNRNTcyIDIwMyA1NzggMTk2VDU4MiAxNzhRNTc5IDE3MyA1NDYgMTMyTDUxMyA5NEw1OTggOTJINjgyUTY5MyA4MSA2OTMgNzNUNjgwIDUySDQ4MEwzNDkgLTEwMkw1MTUgLTEwNEg2ODJRNjkzIC0xMTUgNjkzIC0xMjInLFxuICAgIDB4MjI4QjogJzgyIDYxMFQ4MiA2MTRUODMgNjIwVDg5IDYyN1Q5NSA2MzRIMjUxUTM3OCA2MzQgNDA5IDYzM1Q0NjkgNjIzUTU0MCA2MDQgNTk2IDU1NFQ2NzggNDM2UTY5MSAzOTcgNjkxIDM0M1Q2NzggMjQ5UTY1MyAxODEgNTk3IDEzMVQ0NjkgNjNRNDI3IDUyIDM2MiA1MkgzMTVMMjEzIC0xMDJMNDM4IC0xMDRINjYyUTY3MyAtMTE1IDY3MyAtMTIzUTY3MyAtMTI5IDY2MCAtMTQ0SDE4NkwxNTEgLTE5N1ExMTQgLTI1MCAxMDkgLTI1M1ExMDYgLTI1NCAxMDQgLTI1NFExMDAgLTI1NCA5OCAtMjUzUTkxIC0yNTMgODcgLTI0OFQ4MiAtMjM1UTgyIC0yMzAgMTA5IC0xODZMMTM4IC0xNDRIMTE1UTgyIC0xNDQgODIgLTEyNVE4MiAtMTE5IDk1IC0xMDRIMTY2TDI2NiA0OVEyNjYgNTIgMTgyIDUySDk1UTgyIDY1IDgyIDcyUTgyIDc2IDgzIDc4VDg5IDg1VDk1IDkySDI5NUwzMjkgMTQzUTM2NSAxOTUgMzY5IDE5OFEzNzIgMjAzIDM4MCAyMDNRMzg1IDIwMyAzOTEgMTk3VDM5OCAxODVRMzk4IDE4NCAzOTggMTg0TDM5OSAxODJRMzk5IDE3NSAzNjkgMTI5TDM0NCA5NFEzNDQgOTIgMzc2IDkyUTQwMiA5MiA0MjIgOTRRNDk2IDEwNCA1NTQgMTQ3VDYzOCAyNTZRNjUxIDI5NSA2NTEgMzQzUTY1MSAzOTAgNjM4IDQyOVE2MTMgNDk0IDU1NSA1MzdUNDIyIDU5MlE0MTEgNTk0IDI0OSA1OTRIOTVRODIgNjEwIDgyIDYxNCcsXG4gICAgMHgyMkE4OiAnNTUgNjc4UTU1IDY3OSA1NiA2ODFUNTggNjg0VDYxIDY4OFQ2NSA2OTFUNzAgNjkzVDc3IDY5NFE4OCA2OTIgOTUgNjc5VjQ2NEg1NDBRNTU0IDQ1NiA1NTUgNDQ2UTU1NSA0NDIgNTU0IDQzOVQ1NTIgNDM0VDU0OSA0MzBUNTQ2IDQyOFQ1NDIgNDI2VDUzOSA0MjRIOTVWMjcwSDUzOVE1NDAgMjcwIDU0MiAyNjlUNTQ1IDI2N1Q1NDkgMjY0VDU1MiAyNjBUNTU0IDI1NVQ1NTUgMjQ4UTU1NCAyMzggNTQwIDIzMEg5NVYxNVE4OCAyIDc3IDBRNzMgMCA3MCAxVDY1IDNUNjEgNlQ1OSA5VDU3IDEzVDU1IDE2VjY3OCcsXG4gICAgMHgyMkM1OiAnNzEgMFE1OSA0IDU1IDE2Vjk2TDU2IDE3NlE1OSAxODAgNjYgMTg3TDcwIDE4OUgyMDlRMjE5IDE4MSAyMjIgMTc0VjE1UTIxOSAxMCAyMDkgMUwxNDAgMEg3MScsXG4gICAgMHgyMzIyOiAnNzcgMTIyUTY4IDEyMiA2MyAxMjZUNTcgMTM1VDU1IDE0MlE1NSAxNTEgNjggMTc2VDExMSAyMzVUMTc3IDMwMlQyNzEgMzU2VDM4OCAzNzhRNDUxIDM3OCA1MDggMzU1VDYwMiAzMDBUNjY4IDIzM1Q3MDkgMTc0VDcyMiAxNDJRNzIyIDEyNCA3MDQgMTIyUTY5MiAxMjIgNjg1IDEzNFQ2NTggMTc5VDYwNiAyNDNRNTExIDMzOCAzOTAgMzM4UTM1NCAzMzggMzIwIDMyOVEyNTEgMzEyIDE5MyAyNjNUOTcgMTQxUTg3IDEyMyA3NyAxMjInLFxuICAgIDB4MjMyMzogJzM4OSAxNDNRMzI0IDE0MyAyNjYgMTY0VDE3MSAyMTVUMTA3IDI3N1Q2NyAzMzBUNTUgMzU4VDYwIDM3MVQ3NyAzNzhRODUgMzc3IDkyIDM2N1QxMTYgMzMxVDE1OCAyODBRMjU2IDE4MiAzODkgMTgyUTQ3NSAxODIgNTUyIDIyN1Q2NzUgMzUxUTY4OCAzNzggNzA0IDM3OFE3MjIgMzc2IDcyMiAzNThRNzIyIDM1MiA3MTAgMzMwVDY3MCAyNzZUNjA1IDIxNVQ1MTEgMTY0VDM4OSAxNDMnLFxuICAgIDB4MjVCMzogJzk5IC0yMFE4NCAtMTEgODQgMFE4NCA1IDE0OCAxNDVUMjc4IDQyNEwzNDIgNTYzUTM0NyA1NzUgMzYwIDU3NVEzNjggNTc1IDM3NSA1NzBRMzc2IDU2OSA0NDEgNDMwVDU3MSAxNDhUNjM3IDBRNjM3IC0xMSA2MjIgLTIwSDk5Wk00NzYgMjYwTDM2MCA1MDlMMjQ4IDI2NlExMzcgMjQgMTM1IDIyUTEzNSAyMCAzNjAgMjBRNTg2IDIwIDU4NiAyMUw0NzYgMjYwJyxcbiAgICAweDI1QkQ6ICc4NCA1NTZRODQgNTY3IDk5IDU3Nkg2MjJRNjM3IDU2NyA2MzcgNTU2UTYzNyA1NTEgNTcyIDQwOVQ0NDEgMTI3VDM3NSAtMTRRMzY4IC0xOSAzNjAgLTE5SDM1OFEzNDkgLTE5IDM0MiAtN1QyOTYgOTJRMjQ5IDE5MyAyMTEgMjc1UTg0IDU1MCA4NCA1NTZaTTU4NiA1MzRRNTg2IDUzNiAzNjEgNTM2UTEzNSA1MzYgMTM1IDUzNUwzNTggNTJMMzYxIDQ3TDQ3MyAyOTBRNTg0IDUzMiA1ODYgNTM0JyxcbiAgICAweDJBODc6ICcxMDIgMTY4UTEwMyAxNjggMTUxIDE0NlQyNDcgMTAyVDI5NSA4MVEyOTkgODUgMzIyIDE0NFQzNDQgMjA2TDIxOCAyNjhRMTUzIDI5NyAxMjMgMzEzVDg3IDMzM1Q4MiAzNDRUODYgMzU1UTEwNCAzNjkgMjkxIDQ1NVE0OTEgNTUyIDQ5MSA1NTNMNTQyIDY3M1E1ODEgNzY3IDU5MCA3ODRUNjA5IDgwMVE2MTYgODAxIDYyMiA3OTVUNjI5IDc4MVE2MjkgNzczIDU4NiA2NzdRNTQ2IDU4MSA1NDYgNTc3TDYwOSA2MDZRNjY5IDYzNSA2NzMgNjM1UTY4MCA2MzUgNjg2IDYyOVQ2OTMgNjE1UTY5MyA2MTAgNjkyIDYwOFQ2NzAgNTkzVDYwNCA1NjFMNTI0IDUyMUw0MDAgMjI2TDU0MiAxNTdRNjE3IDEyMyA2NDkgMTA3VDY4NyA4NVQ2OTQgNzJRNjk0IDY2IDY5MCA2MFQ2NzkgNTRRNjY1IDU0IDUyNiAxMTlRMzk0IDE4NiAzODYgMTg2UTM4NSAxODYgMzQyIDg4TDMzMSA2MUw1MDkgLTIzUTY4MCAtMTA1IDY4OCAtMTExUTY5MyAtMTE1IDY5MyAtMTIyVDY4OCAtMTM1VDY3NSAtMTQxSDY3M1E2NjQgLTE0MSA0OTEgLTU5UTMyMCAyMSAzMTYgMjFIMzE1TDI0OSAtMTM2UTE4MyAtMjkzIDE3OCAtMjk5UTE3MiAtMzAzIDE2NiAtMzAzVDE1MyAtMjk3VDE0NiAtMjgzUTE0NiAtMjgyIDE1NCAtMjYxVDE4MSAtMTk3VDIxMyAtMTE5TDI4MCA0MVEyODAgNDYgMTg2IDg2UTE1NyAxMDEgMTIxIDExOVE5MiAxMzMgODcgMTM2VDgyIDE0OFE4MiAxNTUgODggMTYxVDEwMiAxNjhaTTQxOCAzNzBMNDY2IDQ5NVE0NjQgNDk1IDMwOCA0MjBUMTUxIDM0NFQyMDQgMzE3VDMxMSAyNjdUMzY0IDI0NFEzNjQgMjQ3IDQxOCAzNzAnLFxuICAgIDB4MkE4ODogJzk3IDU0UTgyIDU0IDgyIDcyUTgyIDc5IDg2IDg0UTk1IDkxIDIyMiAxNTNMMzUxIDIxNUwzOTggMzI0TDQ0MiA0MzNMMjU4IDUxOVE5NSA1OTcgODcgNjA0UTgyIDYwOCA4MiA2MTVUODggNjI4VDEwMiA2MzVRMTA3IDYzNSA0MjQgNDg0TDQ1OCA0NjhMNTI0IDYzMFE1OTMgNzg5IDU5NyA3OTVRNjAxIDgwMSA2MDkgODAxUTYxNiA4MDEgNjIyIDc5NVQ2MjkgNzgxTDU2MiA2MTVMNDkzIDQ1MEw1ODkgNDA2UTY2NSAzNzEgNjc5IDM2MlQ2OTQgMzQ0UTY5NCAzMzkgNjkzIDMzN1Q2NzcgMzI2VDYzMSAzMDJUNTM4IDI1N1E1MDQgMjQxIDQ2NSAyMjNUNDA2IDE5NVQzODYgMTg2UTM4MyAxODUgMzQ0IDkyVDMwNiAtM0w0ODYgODFRNjYyIDE2OCA2NzMgMTY4UTY4MCAxNjggNjg2IDE2MlQ2OTMgMTQ4VDY4OSAxMzdRNjg4IDEzNiA0ODIgMzVMMjgwIC01OUwyMzMgLTE3NlExODQgLTI5MSAxNzggLTI5OVExNzIgLTMwMyAxNjYgLTMwM1QxNTMgLTI5N1QxNDYgLTI4M1ExNDYgLTI3OSAxODUgLTE4NlQyMjQgLTkwUTIyNSAtODggMjIzIC04OFEyMTkgLTg4IDE5MyAtMTAxUTEwOSAtMTQzIDk4IC0xNDNRODIgLTEzOCA4MiAtMTIyUTgyIC0xMTYgODUgLTExM1QxMDggLTk4VDE3MSAtNjdMMjQ5IC0zMEwyODkgNjFRMjk3IDgxIDMwNyAxMDdUMzIxIDE0NFQzMjYgMTU3TDIxOCAxMDZRMTA5IDU0IDk3IDU0Wk01NTMgMzc5UTQ4MCA0MTIgNDgwIDQxNVE0NzkgNDE1IDQ2MCAzNzJUNDIzIDI4NVQ0MDYgMjQxUTQwOCAyNDAgNTE2IDI5MVQ2MjQgMzQ0TDU1MyAzNzknLFxuICAgIDB4MkFDQjogJzgyIC0xNFQ4MiAtN1Q5NSAxNUg0MzFMNTI5IDE3MEg0MzVRMzQxIDE3MCAzMzMgMTc1UTE0OSAyMTggOTggMzY4UTg0IDQwNiA4NCA0NjFRODQgNTE1IDk4IDU1NVExMjYgNjMzIDE5MyA2ODZUMzQ2IDc1MFEzNDcgNzUwIDM3MyA3NTBUNDQwIDc1MVQ1MjAgNzUySDY4MFE2OTMgNzM5IDY5MyA3MzJRNjkzIDcyNyA2ODAgNzEySDUyNlEzNjQgNzEyIDM1MyA3MTBRMjY4IDcwMCAyMDcgNjQ2VDEyNiA1MTJRMTIzIDQ5NiAxMjMgNDYxVDEyNiA0MTBRMTQxIDM1MCAxODAgMzA0VDI4MCAyMzJRMzEyIDIxNyAzNDQgMjE0VDQ2NCAyMTBINTU1TDU4OSAyNjFRNjEzIDMwMSA2MjAgMzExVDYzNSAzMjFRNjQ0IDMyMSA2NTAgMzE1VDY1NyAzMDFRNjU3IDI5NiA2NTEgMjg2VDYzMCAyNTJUNjA0IDIxMlE2MDQgMjEwIDY0MiAyMTBINjgwUTY5MyAxOTcgNjkzIDE5MFE2OTMgMTg2IDY5MiAxODRUNjg2IDE3N1Q2ODAgMTcwSDU3OEw1MjYgOTJMNDc4IDE3TDU4MCAxNUg2ODJRNjkzIDQgNjkzIC00VDY4MCAtMjVINDUxTDM1MyAtMTc5TDUxOCAtMTgxSDY4MlE2OTQgLTE5MyA2OTQgLTIwMVE2OTQgLTIxMSA2ODIgLTIxOUw1MDQgLTIyMUgzMjZMMjkzIC0yNzJRMjU3IC0zMzIgMjQ2IC0zMzJRMjM4IC0zMzIgMjMyIC0zMjZUMjI1IC0zMTNRMjI1IC0zMTAgMjI2IC0zMDhRMjI2IC0zMDUgMjUxIC0yNjVUMjc4IC0yMjNRMjc4IC0yMjEgMTg2IC0yMjFIOTVROTMgLTIxOCA4OSAtMjE0VDg0IC0yMDhUODIgLTIwMVQ5NSAtMTgxSDMwNkw0MDQgLTI1SDI0OUw5MyAtMjNMODYgLTE5UTgyIC0xNCA4MiAtNycsXG4gICAgMHgyQUNDOiAnODIgNzMyUTgyIDczOSA5NSA3NTJIMjUxUTQxNSA3NTIgNDI2IDc1MFE1MzkgNzM2IDYxNSA2NTdRNjY3IDU5OSA2ODkgNTE3UTY5MiA0OTYgNjkyIDQ2MVQ2ODkgNDA2UTY2OCAzMjUgNjE1IDI2NlE1MjIgMTcwIDM4MiAxNzBIMzU1TDMyNiA5NVEzMTkgODAgMzExIDU5VDI5OCAyOFQyOTMgMTdRMjkzIDE1IDQ4NiAxNUg2ODBRNjkzIDAgNjkzIC02VDY4MCAtMjVIMjc1TDIxMyAtMTc5TDQ0OSAtMTgxSDY4MlE2OTMgLTE5MiA2OTMgLTE5OVQ2ODAgLTIyMUgxOThMMTc4IC0yNzBRMTUzIC0zMzMgMTM5IC0zMzNRMTMyIC0zMzMgMTI2IC0zMjdUMTE5IC0zMTRUMTM1IC0yNjZUMTUzIC0yMjNRMTUzIC0yMjEgMTI0IC0yMjFIOTVRODIgLTIwNyA4MiAtMjAxVDk1IC0xODFIMTcxTDIzMyAtMjVIMTYyTDkzIC0yM0w4NiAtMTlRODIgLTE0IDgyIC03VDk1IDE1SDI1MUwzMTMgMTcwSDIwMkw5MyAxNzJMODYgMTc3UTgyIDE4MiA4MiAxOTBRODIgMTk5IDkzIDIxMEgyMTFMMzI5IDIxMkwzNDkgMjYxUTM2NiAzMDEgMzcyIDMxMVQzODYgMzIxUTM5MiAzMjEgMzk5IDMxNVQ0MDcgMzAyUTQwNyAyOTUgMzkwIDI1NFQzNzMgMjEwUTM3NCAyMDkgMzc3IDIwOVE0MTIgMjA5IDQ0NCAyMTdRNTEyIDIzMSA1NjQgMjczVDYzOCAzNzdRNjUxIDQxNCA2NTEgNDYxUTY1MSA1MDkgNjM4IDU0OFE2MTMgNjEzIDU1NSA2NTZUNDIyIDcxMFE0MTEgNzEyIDI0OSA3MTJIOTVRODIgNzI3IDgyIDczMicsXG59LHtcbn0pO1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHtEZWxpbWl0ZXJNYXAsIERlbGltaXRlckRhdGEsIFYsIEh9IGZyb20gJy4uLy4uL0ZvbnREYXRhLmpzJztcblxuZXhwb3J0IGNvbnN0IEhEVzEgPSBbLjc1LCAuMjUsIC44NzVdO1xuZXhwb3J0IGNvbnN0IEhEVzIgPSBbLjg1LCAuMzQ5LCAuNjY3XTtcbmV4cG9ydCBjb25zdCBIRFczID0gWy41ODMsIC4wODIsIC41XTtcbmV4cG9ydCBjb25zdCBWU0laRVMgPSBbMSwgMS4yLCAxLjgsIDIuNCwgM107XG5cbmNvbnN0IERFTElNMkYgPSB7YzogMHgyRiwgZGlyOiBWLCBzaXplczogVlNJWkVTfTtcbmNvbnN0IERFTElNQUYgPSB7YzogMHhBRiwgZGlyOiBILCBzaXplczogWy41XSwgc3RyZXRjaDogWzAsIDB4QUZdLCBIRFc6IFsuNTksIC0wLjU0NCwgLjVdfTtcbmNvbnN0IERFTElNMkM2ID0ge2M6IDB4MkM2LCBkaXI6IEgsIHNpemVzOiBbLjUsIC41NTYsIDEsIDEuNDQ0LCAxLjg4OV19O1xuY29uc3QgREVMSU0yREMgPSB7YzogMHgyREMsIGRpcjogSCwgc2l6ZXM6IFsuNSwgLjU1NiwgMSwgMS40NDQsIDEuODg5XX07XG5jb25zdCBERUxJTTIwMTMgPSB7YzogMHgyMDEzLCBkaXI6IEgsIHNpemVzOiBbLjVdLCBzdHJldGNoOiBbMCwgMHgyMDEzXSwgSERXOiBbLjI4NSwgLTAuMjQ4LCAuNV19O1xuY29uc3QgREVMSU0yMTkwID0ge2M6IDB4MjE5MCwgZGlyOiBILCBzaXplczogWzFdLCBzdHJldGNoOiBbMHgyMTkwLCAweDIyMTJdLCBIRFc6IEhEVzN9O1xuY29uc3QgREVMSU0yMTkyID0ge2M6IDB4MjE5MiwgZGlyOiBILCBzaXplczogWzFdLCBzdHJldGNoOiBbMCwgMHgyMjEyLCAweDIxOTJdLCBIRFc6IEhEVzN9O1xuY29uc3QgREVMSU0yMTk0ID0ge2M6IDB4MjE5NCwgZGlyOiBILCBzaXplczogWzFdLCBzdHJldGNoOiBbMHgyMTkwLCAweDIyMTIsIDB4MjE5Ml0sIEhEVzogSERXM307XG5jb25zdCBERUxJTTIxQTQgPSB7YzogMHgyMUE0LCBkaXI6IEgsIHN0cmV0Y2g6IFsweDIxOTAsIDB4MjIxMiwgMHgyMjIzXSwgSERXOiBIRFczLCBtaW46IDEuMjc4fTtcbmNvbnN0IERFTElNMjFBNiA9IHtjOiAweDIxQTYsIGRpcjogSCwgc2l6ZXM6IFsxXSwgc3RyZXRjaDogWzB4MjIyMywgMHgyMjEyLCAweDIxOTJdLCBIRFc6IEhEVzN9O1xuY29uc3QgREVMSU0yMUQwID0ge2M6IDB4MjFEMCwgZGlyOiBILCBzaXplczogWzFdLCBzdHJldGNoOiBbMHgyMUQwLCAweDNEXSwgSERXOiBIRFczfTtcbmNvbnN0IERFTElNMjFEMiA9IHtjOiAweDIxRDIsIGRpcjogSCwgc2l6ZXM6IFsxXSwgc3RyZXRjaDogWzAsIDB4M0QsIDB4MjFEMl0sIEhEVzogSERXM307XG5jb25zdCBERUxJTTIxRDQgPSB7YzogMHgyMUQ0LCBkaXI6IEgsIHNpemVzOiBbMV0sIHN0cmV0Y2g6IFsweDIxRDAsIDB4M0QsIDB4MjFEMl0sIEhEVzogSERXM307XG5jb25zdCBERUxJTTIyMTIgPSB7YzogMHgyMjEyLCBkaXI6IEgsIHNpemVzOiBbLjc3OF0sIHN0cmV0Y2g6IFswLCAweDIyMTJdLCBIRFc6IEhEVzN9O1xuY29uc3QgREVMSU0yMjIzID0ge2M6IDB4MjIyMywgZGlyOiBWLCBzaXplczogWzFdLCBzdHJldGNoOiBbMCwgMHgyMjIzXSwgSERXOiBbLjYyNywgLjAxNSwgLjMzM119O1xuY29uc3QgREVMSU0yM0RDID0ge2M6IDB4MjNEQywgZGlyOiBILCBzaXplczogWy43NzgsIDFdLCBzY2hhcjogWzB4MjMyMiwgMHgyMzIyXSwgdmFyaWFudHM6IFs1LCAwXSxcbiAgICAgICAgICAgICAgICAgICBzdHJldGNoOiBbMHhFMTUwLCAweEUxNTQsIDB4RTE1MV0sIEhEVzogWy4zMiwgLjIsIC41XX07XG5jb25zdCBERUxJTTIzREQgPSB7YzogMHgyM0RELCBkaXI6IEgsIHNpemVzOiBbLjc3OCwgMV0sIHNjaGFyOiBbMHgyMzIzLCAweDIzMjNdLCB2YXJpYW50czogWzUsIDBdLFxuICAgICAgICAgICAgICAgICAgIHN0cmV0Y2g6IFsweEUxNTIsIDB4RTE1NCwgMHhFMTUzXSwgSERXOiBbLjMyLCAuMiwgLjVdfTtcbmNvbnN0IERFTElNMjNERSA9IHtjOiAweDIzREUsIGRpcjogSCwgc3RyZXRjaDogWzB4RTE1MCwgMHhFMTU0LCAweEUxNTEsIDB4RTE1NV0sIEhEVzogWy4zMiwgLjIsIC41XSwgbWluOiAxLjh9O1xuY29uc3QgREVMSU0yM0RGID0ge2M6IDB4MjNERiwgZGlyOiBILCBzdHJldGNoOiBbMHhFMTUyLCAweEUxNTQsIDB4RTE1MywgMHhFMTU2XSwgSERXOiBbLjMyLCAuMiwgLjVdLCBtaW46IDEuOH07XG5jb25zdCBERUxJTTI3RTggPSB7YzogMHgyN0U4LCBkaXI6IFYsIHNpemVzOiBWU0laRVN9O1xuY29uc3QgREVMSU0yN0U5ID0ge2M6IDB4MjdFOSwgZGlyOiBWLCBzaXplczogVlNJWkVTfTtcbmNvbnN0IERFTElNMjkwNiA9IHtjOiAweDI5MDYsIGRpcjogSCwgc3RyZXRjaDogWzB4MjFEMCwgMHgzRCwgMHgyMjIzXSwgSERXOiBIRFczLCBtaW46IDEuMjc4fTtcbmNvbnN0IERFTElNMjkwNyA9IHtjOiAweDI5MDcsIGRpcjogSCwgc3RyZXRjaDogWzB4MjJBOCwgMHgzRCwgMHgyMUQyXSwgSERXOiBIRFczLCBtaW46IDEuMjc4fTtcblxuXG5leHBvcnQgY29uc3QgZGVsaW1pdGVyczogRGVsaW1pdGVyTWFwPERlbGltaXRlckRhdGE+ID0ge1xuICAweDI4OiB7ZGlyOiBWLCBzaXplczogVlNJWkVTLCBzdHJldGNoOiBbMHgyMzlCLCAweDIzOUMsIDB4MjM5RF0sIEhEVzogWy44NSwgLjM0OSwgLjg3NV19LFxuICAweDI5OiB7ZGlyOiBWLCBzaXplczogVlNJWkVTLCBzdHJldGNoOiBbMHgyMzlFLCAweDIzOUYsIDB4MjNBMF0sIEhEVzogWy44NSwgLjM0OSwgLjg3NV19LFxuICAweDJEOiBERUxJTTIyMTIsXG4gIDB4MkY6IERFTElNMkYsXG4gIDB4M0Q6IHtkaXI6IEgsIHNpemVzOiBbLjc3OF0sIHN0cmV0Y2g6IFswLCAweDNEXSwgSERXOiBIRFczfSxcbiAgMHg1Qjoge2RpcjogViwgc2l6ZXM6IFZTSVpFUywgc3RyZXRjaDogWzB4MjNBMSwgMHgyM0EyLCAweDIzQTNdLCBIRFc6IEhEVzJ9LFxuICAweDVDOiB7ZGlyOiBWLCBzaXplczogVlNJWkVTfSxcbiAgMHg1RDoge2RpcjogViwgc2l6ZXM6IFZTSVpFUywgc3RyZXRjaDogWzB4MjNBNCwgMHgyM0E1LCAweDIzQTZdLCBIRFc6IEhEVzJ9LFxuICAweDVFOiBERUxJTTJDNixcbiAgMHg1RjogREVMSU0yMDEzLFxuICAweDdCOiB7ZGlyOiBWLCBzaXplczogVlNJWkVTLCBzdHJldGNoOiBbMHgyM0E3LCAweDIzQUEsIDB4MjNBOSwgMHgyM0E4XSwgSERXOiBbLjg1LCAuMzQ5LCAuODg5XX0sXG4gIDB4N0M6IHtkaXI6IFYsIHNpemVzOiBbMV0sIHN0cmV0Y2g6IFswLCAweDIyMjNdLCBIRFc6IFsuNzUsIC4yNSwgLjMzM119LFxuICAweDdEOiB7ZGlyOiBWLCBzaXplczogVlNJWkVTLCBzdHJldGNoOiBbMHgyM0FCLCAweDIzQUEsIDB4MjNBRCwgMHgyM0FDXSwgSERXOiBbLjg1LCAuMzQ5LCAuODg5XX0sXG4gIDB4N0U6IERFTElNMkRDLFxuICAweEFGOiBERUxJTUFGLFxuICAweDJDNjogREVMSU0yQzYsXG4gIDB4MkM5OiBERUxJTUFGLFxuICAweDJEQzogREVMSU0yREMsXG4gIDB4MzAyOiBERUxJTTJDNixcbiAgMHgzMDM6IERFTElNMkRDLFxuICAweDMzMjogREVMSU0yMDEzLFxuICAweDIwMTM6IERFTElNMjAxMyxcbiAgMHgyMDE0OiBERUxJTTIwMTMsXG4gIDB4MjAxNTogREVMSU0yMDEzLFxuICAweDIwMTY6IHtkaXI6IFYsIHNpemVzOiBbLjYwMiwgMV0sIHNjaGFyOiBbMCwgMHgyMjI1XSwgdmFyaWFudHM6IFsxLCAwXSwgc3RyZXRjaDogWzAsIDB4MjIyNV0sIEhEVzogWy42MDIsIDAsIC41NTZdfSxcbiAgMHgyMDE3OiBERUxJTTIwMTMsXG4gIDB4MjAzRTogREVMSU1BRixcbiAgMHgyMEQ3OiBERUxJTTIxOTIsXG4gIDB4MjE5MDogREVMSU0yMTkwLFxuICAweDIxOTE6IHtkaXI6IFYsIHNpemVzOiBbLjg4OF0sIHN0cmV0Y2g6IFsweDIxOTEsIDB4MjNEMF0sIEhEVzogWy42LCAwLCAuNjY3XX0sXG4gIDB4MjE5MjogREVMSU0yMTkyLFxuICAweDIxOTM6IHtkaXI6IFYsIHNpemVzOiBbLjg4OF0sIHN0cmV0Y2g6IFswLCAweDIzRDAsIDB4MjE5M10sIEhEVzogWy42LCAwLCAuNjY3XX0sXG4gIDB4MjE5NDogREVMSU0yMTk0LFxuICAweDIxOTU6IHtkaXI6IFYsIHNpemVzOiBbMS4wNDRdLCBzdHJldGNoOiBbMHgyMTkxLCAweDIzRDAsIDB4MjE5M10sIEhEVzogSERXMX0sXG4gIDB4MjE5RToge2RpcjogSCwgc2l6ZXM6IFsxXSwgc3RyZXRjaDogWzB4MjE5RSwgMHgyMjEyXSwgSERXOiBIRFczfSxcbiAgMHgyMUEwOiB7ZGlyOiBILCBzaXplczogWzFdLCBzdHJldGNoOiBbMCwgMHgyMjEyLCAweDIxQTBdLCBIRFc6IEhEVzN9LFxuICAweDIxQTQ6IERFTElNMjFBNCxcbiAgMHgyMUE1OiB7ZGlyOiBWLCBzdHJldGNoOiBbMHgyMTkxLCAweDIzRDAsIDB4MjJBNV0sIEhEVzogSERXMSwgbWluOiAxLjU1NX0sXG4gIDB4MjFBNjogREVMSU0yMUE2LFxuICAweDIxQTc6IHtkaXI6IFYsIHN0cmV0Y2g6IFsweDIyQTQsIDB4MjNEMCwgMHgyMTkzXSwgSERXOiBIRFcxLCBtaW46IDEuNTU1fSxcbiAgMHgyMUIwOiB7ZGlyOiBWLCBzaXplczogWy43MjJdLCBzdHJldGNoOiBbMHgyMUIwLCAweDIzRDBdLCBIRFc6IEhEVzF9LFxuICAweDIxQjE6IHtkaXI6IFYsIHNpemVzOiBbLjcyMl0sIHN0cmV0Y2g6IFsweDIxQjEsIDB4MjNEMF0sIEhEVzogSERXMX0sXG4gIDB4MjFCQzoge2RpcjogSCwgc2l6ZXM6IFsxXSwgc3RyZXRjaDogWzB4MjFCQywgMHgyMjEyXSwgSERXOiBIRFczfSxcbiAgMHgyMUJEOiB7ZGlyOiBILCBzaXplczogWzFdLCBzdHJldGNoOiBbMHgyMUJELCAweDIyMTJdLCBIRFc6IEhEVzN9LFxuICAweDIxQkU6IHtkaXI6IFYsIHNpemVzOiBbLjg4OF0sIHN0cmV0Y2g6IFsweDIxQkUsIDB4MjNEMF0sIEhEVzogSERXMX0sXG4gIDB4MjFCRjoge2RpcjogViwgc2l6ZXM6IFsuODg4XSwgc3RyZXRjaDogWzB4MjFCRiwgMHgyM0QwXSwgSERXOiBIRFcxfSxcbiAgMHgyMUMwOiB7ZGlyOiBILCBzaXplczogWzFdLCBzdHJldGNoOiBbMCwgMHgyMjEyLCAweDIxQzBdLCBIRFc6IEhEVzN9LFxuICAweDIxQzE6IHtkaXI6IEgsIHNpemVzOiBbMV0sIHN0cmV0Y2g6IFswLCAweDIyMTIsIDB4MjFDMV0sIEhEVzogSERXM30sXG4gIDB4MjFDMjoge2RpcjogViwgc2l6ZXM6IFsuODg4XSwgc3RyZXRjaDogWzAsIDB4MjNEMCwgMHgyMUMyXSwgSERXOiBIRFcxfSxcbiAgMHgyMUMzOiB7ZGlyOiBWLCBzaXplczogWy44ODhdLCBzdHJldGNoOiBbMCwgMHgyM0QwLCAweDIxQzNdLCBIRFc6IEhEVzF9LFxuICAweDIxRDA6IERFTElNMjFEMCxcbiAgMHgyMUQxOiB7ZGlyOiBWLCBzaXplczogWy44ODhdLCBzdHJldGNoOiBbMHgyMUQxLCAweDIwMTZdLCBIRFc6IFsuNTk5LCAwLCAuNzc4XX0sXG4gIDB4MjFEMjogREVMSU0yMUQyLFxuICAweDIxRDM6IHtkaXI6IFYsIHNpemVzOiBbLjg4OF0sIHN0cmV0Y2g6IFswLCAweDIwMTYsIDB4MjFEM10sIEhEVzogWy42LCAwLCAuNzc4XX0sXG4gIDB4MjFENDogREVMSU0yMUQ0LFxuICAweDIxRDU6IHtkaXI6IFYsIHNpemVzOiBbMS4wNDRdLCBzdHJldGNoOiBbMHgyMUQxLCAweDIwMTYsIDB4MjFEM10sIEhEVzogWy43NSwgLjI1LCAuNzc4XX0sXG4gIDB4MjFEQToge2RpcjogSCwgc2l6ZXM6IFsxXSwgc3RyZXRjaDogWzB4MjFEQSwgMHgyMjYxXSwgSERXOiBbLjQ2NCwgLTAuMDM2LCAuNV19LFxuICAweDIxREI6IHtkaXI6IEgsIHNpemVzOiBbMV0sIHN0cmV0Y2g6IFswLCAweDIyNjEsIDB4MjFEQl0sIEhEVzogWy40NjQsIC0wLjAzNiwgLjVdfSxcbiAgMHgyMjEyOiBERUxJTTIyMTIsXG4gIDB4MjIxNTogREVMSU0yRixcbiAgMHgyMjFBOiB7ZGlyOiBWLCBzaXplczogVlNJWkVTLCBzdHJldGNoOiBbMHhFMDAxLCAweEUwMDAsIDB4MjNCN10sIGZ1bGxFeHQ6IFsuNjUsIDIuM10sIEhEVzogWy44NSwgLjM1LCAxLjA1Nl19LFxuICAweDIyMjM6IERFTElNMjIyMyxcbiAgMHgyMjI1OiB7ZGlyOiBWLCBzaXplczogWzFdLCBzdHJldGNoOiBbMCwgMHgyMjI1XSwgSERXOiBbLjYyNywgLjAxNSwgLjU1Nl19LFxuICAweDIzMDg6IHtkaXI6IFYsIHNpemVzOiBWU0laRVMsIHN0cmV0Y2g6IFsweDIzQTEsIDB4MjNBMl0sIEhEVzogSERXMn0sXG4gIDB4MjMwOToge2RpcjogViwgc2l6ZXM6IFZTSVpFUywgc3RyZXRjaDogWzB4MjNBNCwgMHgyM0E1XSwgSERXOiBIRFcyfSxcbiAgMHgyMzBBOiB7ZGlyOiBWLCBzaXplczogVlNJWkVTLCBzdHJldGNoOiBbMCwgMHgyM0EyLCAweDIzQTNdLCBIRFc6IEhEVzJ9LFxuICAweDIzMEI6IHtkaXI6IFYsIHNpemVzOiBWU0laRVMsIHN0cmV0Y2g6IFswLCAweDIzQTUsIDB4MjNBNl0sIEhEVzogSERXMn0sXG4gIDB4MjMxMjogREVMSU0yM0RDLFxuICAweDIzMjI6IERFTElNMjNEQyxcbiAgMHgyMzIzOiBERUxJTTIzREQsXG4gIDB4MjMyOTogREVMSU0yN0U4LFxuICAweDIzMkE6IERFTElNMjdFOSxcbiAgMHgyM0FBOiB7ZGlyOiBWLCBzaXplczogWy4zMl0sIHN0cmV0Y2g6IFsweDIzQUEsIDB4MjNBQSwgMHgyM0FBXSwgSERXOiBbLjI5LCAuMDE1LCAuODg5XX0sXG4gIDB4MjNBRjogREVMSU0yMDEzLFxuICAweDIzQjA6IHtkaXI6IFYsIHNpemVzOiBbLjk4OV0sIHN0cmV0Y2g6IFsweDIzQTcsIDB4MjNBQSwgMHgyM0FEXSwgSERXOiBbLjc1LCAuMjUsIC44ODldfSxcbiAgMHgyM0IxOiB7ZGlyOiBWLCBzaXplczogWy45ODldLCBzdHJldGNoOiBbMHgyM0FCLCAweDIzQUEsIDB4MjNBOV0sIEhEVzogWy43NSwgLjI1LCAuODg5XX0sXG4gIDB4MjNCNDoge2RpcjogSCwgc3RyZXRjaDogWzB4MjUwQywgMHgyMjEyLCAweDI1MTBdLCBIRFc6IEhEVzMsIG1pbjogMX0sXG4gIDB4MjNCNToge2RpcjogSCwgc3RyZXRjaDogWzB4MjUxNCwgMHgyMjEyLCAweDI1MThdLCBIRFc6IEhEVzMsIG1pbjogMX0sXG4gIDB4MjNEMDoge2RpcjogViwgc2l6ZXM6IFsuNjAyLCAxXSwgc2NoYXI6IFswLCAweDIyMjNdLCB2YXJpYW50czogWzEsIDBdLCBzdHJldGNoOiBbMCwgMHgyMjIzXSwgSERXOiBbLjYwMiwgMCwgLjMzM119LFxuICAweDIzREM6IERFTElNMjNEQyxcbiAgMHgyM0REOiBERUxJTTIzREQsXG4gIDB4MjNERTogREVMSU0yM0RFLFxuICAweDIzREY6IERFTElNMjNERixcbiAgMHgyM0UwOiB7ZGlyOiBILCBzdHJldGNoOiBbMHgyQ0EsIDB4MkM5LCAweDJDQl0sIEhEVzogWy41OSwgLTAuNTQ0LCAuNV0sIG1pbjogMX0sXG4gIDB4MjNFMToge2RpcjogSCwgc3RyZXRjaDogWzB4MkNCLCAweDJDOSwgMHgyQ0FdLCBIRFc6IFsuNTksIC0wLjU0NCwgLjVdLCBtaW46IDF9LFxuICAweDI1MDA6IERFTElNMjAxMyxcbiAgMHgyNzU4OiBERUxJTTIyMjMsXG4gIDB4MjdFODogREVMSU0yN0U4LFxuICAweDI3RTk6IERFTElNMjdFOSxcbiAgMHgyN0VFOiB7ZGlyOiBWLCBzaXplczogWy45ODldLCBzdHJldGNoOiBbMHgyM0E3LCAweDIzQUEsIDB4MjNBOV0sIEhEVzogWy43NSwgLjI1LCAuODg5XX0sXG4gIDB4MjdFRjoge2RpcjogViwgc2l6ZXM6IFsuOTg5XSwgc3RyZXRjaDogWzB4MjNBQiwgMHgyM0FBLCAweDIzQURdLCBIRFc6IFsuNzUsIC4yNSwgLjg4OV19LFxuICAweDI3RjU6IERFTElNMjE5MCxcbiAgMHgyN0Y2OiBERUxJTTIxOTIsXG4gIDB4MjdGNzogREVMSU0yMTk0LFxuICAweDI3Rjg6IERFTElNMjFEMCxcbiAgMHgyN0Y5OiBERUxJTTIxRDIsXG4gIDB4MjdGQTogREVMSU0yMUQ0LFxuICAweDI3RkI6IERFTElNMjFBNCxcbiAgMHgyN0ZDOiBERUxJTTIxQTYsXG4gIDB4MjdGRDogREVMSU0yOTA2LFxuICAweDI3RkU6IERFTElNMjkwNyxcbiAgMHgyOTA2OiBERUxJTTI5MDYsXG4gIDB4MjkwNzogREVMSU0yOTA3LFxuICAweDI5NEU6IHtkaXI6IEgsIHN0cmV0Y2g6IFsweDIxQkMsIDB4MjIxMiwgMHgyMUMwXSwgSERXOiBIRFczLCBtaW46IDJ9LFxuICAweDI5NEY6IHtkaXI6IFYsIHN0cmV0Y2g6IFsweDIxQkUsIDB4MjNEMCwgMHgyMUMyXSwgSERXOiBIRFcxLCBtaW46IDEuNzc2fSxcbiAgMHgyOTUwOiB7ZGlyOiBILCBzdHJldGNoOiBbMHgyMUJELCAweDIyMTIsIDB4MjFDMV0sIEhEVzogSERXMywgbWluOiAyfSxcbiAgMHgyOTUxOiB7ZGlyOiBWLCBzdHJldGNoOiBbMHgyMUJGLCAweDIzRDAsIDB4MjFDM10sIEhEVzogSERXMSwgbWluOiAuNX0sXG4gIDB4Mjk1QToge2RpcjogSCwgc3RyZXRjaDogWzB4MjFCQywgMHgyMjEyLCAweDIyMjNdLCBIRFc6IEhEVzMsIG1pbjogMS4yNzh9LFxuICAweDI5NUI6IHtkaXI6IEgsIHN0cmV0Y2g6IFsweDIyMjMsIDB4MjIxMiwgMHgyMUMwXSwgSERXOiBIRFczLCBtaW46IDEuMjc4fSxcbiAgMHgyOTVDOiB7ZGlyOiBWLCBzdHJldGNoOiBbMHgyMUJFLCAweDIzRDAsIDB4MjJBNV0sIEhEVzogSERXMSwgbWluOiAxLjU1Nn0sXG4gIDB4Mjk1RDoge2RpcjogViwgc3RyZXRjaDogWzB4MjJBNCwgMHgyM0QwLCAweDIxQzJdLCBIRFc6IEhEVzEsIG1pbjogMS41NTZ9LFxuICAweDI5NUU6IHtkaXI6IEgsIHN0cmV0Y2g6IFsweDIxQkQsIDB4MjIxMiwgMHgyMjIzXSwgSERXOiBIRFczLCBtaW46IDEuMjc4fSxcbiAgMHgyOTVGOiB7ZGlyOiBILCBzdHJldGNoOiBbMHgyMjIzLCAweDIyMTIsIDB4MjFDMV0sIEhEVzogSERXMywgbWluOiAxLjI3OH0sXG4gIDB4Mjk2MDoge2RpcjogViwgc3RyZXRjaDogWzB4MjFCRiwgMHgyM0QwLCAweDIyQTVdLCBIRFc6IEhEVzEsIG1pbjogMS43NzZ9LFxuICAweDI5NjE6IHtkaXI6IFYsIHN0cmV0Y2g6IFsweDIyQTQsIDB4MjNEMCwgMHgyMUMzXSwgSERXOiBIRFcxLCBtaW46IDEuNzc2fSxcbiAgMHgzMDA4OiBERUxJTTI3RTgsXG4gIDB4MzAwOTogREVMSU0yN0U5LFxuICAweEZFMzc6IERFTElNMjNERSxcbiAgMHhGRTM4OiBERUxJTTIzREYsXG59O1xuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBUaGUgTWF0aEpheCBUZVhGb250IG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtTVkdGb250RGF0YSwgU1ZHRm9udERhdGFDbGFzcywgU1ZHQ2hhck9wdGlvbnMsIFNWR1ZhcmlhbnREYXRhLCBTVkdEZWxpbWl0ZXJEYXRhLFxuICAgICAgICBEZWxpbWl0ZXJNYXAsIENoYXJNYXBNYXB9IGZyb20gJy4uL0ZvbnREYXRhLmpzJztcbmltcG9ydCB7Q29tbW9uVGVYRm9udE1peGlufSBmcm9tICcuLi8uLi9jb21tb24vZm9udHMvdGV4LmpzJztcbmltcG9ydCB7T3B0aW9uTGlzdH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9PcHRpb25zLmpzJztcblxuaW1wb3J0IHtib2xkSXRhbGljfSBmcm9tICcuL3RleC9ib2xkLWl0YWxpYy5qcyc7XG5pbXBvcnQge2JvbGR9IGZyb20gJy4vdGV4L2JvbGQuanMnO1xuaW1wb3J0IHtkb3VibGVTdHJ1Y2t9IGZyb20gJy4vdGV4L2RvdWJsZS1zdHJ1Y2suanMnO1xuaW1wb3J0IHtmcmFrdHVyQm9sZH0gZnJvbSAnLi90ZXgvZnJha3R1ci1ib2xkLmpzJztcbmltcG9ydCB7ZnJha3R1cn0gZnJvbSAnLi90ZXgvZnJha3R1ci5qcyc7XG5pbXBvcnQge2l0YWxpY30gZnJvbSAnLi90ZXgvaXRhbGljLmpzJztcbmltcG9ydCB7bGFyZ2VvcH0gZnJvbSAnLi90ZXgvbGFyZ2VvcC5qcyc7XG5pbXBvcnQge21vbm9zcGFjZX0gZnJvbSAnLi90ZXgvbW9ub3NwYWNlLmpzJztcbmltcG9ydCB7bm9ybWFsfSBmcm9tICcuL3RleC9ub3JtYWwuanMnO1xuaW1wb3J0IHtzYW5zU2VyaWZCb2xkSXRhbGljfSBmcm9tICcuL3RleC9zYW5zLXNlcmlmLWJvbGQtaXRhbGljLmpzJztcbmltcG9ydCB7c2Fuc1NlcmlmQm9sZH0gZnJvbSAnLi90ZXgvc2Fucy1zZXJpZi1ib2xkLmpzJztcbmltcG9ydCB7c2Fuc1NlcmlmSXRhbGljfSBmcm9tICcuL3RleC9zYW5zLXNlcmlmLWl0YWxpYy5qcyc7XG5pbXBvcnQge3NhbnNTZXJpZn0gZnJvbSAnLi90ZXgvc2Fucy1zZXJpZi5qcyc7XG5pbXBvcnQge3NjcmlwdEJvbGR9IGZyb20gJy4vdGV4L3NjcmlwdC1ib2xkLmpzJztcbmltcG9ydCB7c2NyaXB0fSBmcm9tICcuL3RleC9zY3JpcHQuanMnO1xuaW1wb3J0IHtzbWFsbG9wfSBmcm9tICcuL3RleC9zbWFsbG9wLmpzJztcbmltcG9ydCB7dGV4Q2FsbGlncmFwaGljQm9sZH0gZnJvbSAnLi90ZXgvdGV4LWNhbGxpZ3JhcGhpYy1ib2xkLmpzJztcbmltcG9ydCB7dGV4Q2FsbGlncmFwaGljfSBmcm9tICcuL3RleC90ZXgtY2FsbGlncmFwaGljLmpzJztcbmltcG9ydCB7dGV4TWF0aGl0fSBmcm9tICcuL3RleC90ZXgtbWF0aGl0LmpzJztcbmltcG9ydCB7dGV4T2xkc3R5bGVCb2xkfSBmcm9tICcuL3RleC90ZXgtb2xkc3R5bGUtYm9sZC5qcyc7XG5pbXBvcnQge3RleE9sZHN0eWxlfSBmcm9tICcuL3RleC90ZXgtb2xkc3R5bGUuanMnO1xuaW1wb3J0IHt0ZXhTaXplM30gZnJvbSAnLi90ZXgvdGV4LXNpemUzLmpzJztcbmltcG9ydCB7dGV4U2l6ZTR9IGZyb20gJy4vdGV4L3RleC1zaXplNC5qcyc7XG5pbXBvcnQge3RleFZhcmlhbnR9IGZyb20gJy4vdGV4L3RleC12YXJpYW50LmpzJztcblxuaW1wb3J0IHtkZWxpbWl0ZXJzfSBmcm9tICcuLi8uLi9jb21tb24vZm9udHMvdGV4L2RlbGltaXRlcnMuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgVGVYRm9udCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgVGVYRm9udCBleHRlbmRzXG5Db21tb25UZVhGb250TWl4aW48U1ZHQ2hhck9wdGlvbnMsIFNWR1ZhcmlhbnREYXRhLCBTVkdEZWxpbWl0ZXJEYXRhLCBTVkdGb250RGF0YUNsYXNzPihTVkdGb250RGF0YSkge1xuXG4gIC8qKlxuICAgKiAgVGhlIHN0cmV0Y2h5IGRlbGltaXRlciBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIGRlZmF1bHREZWxpbWl0ZXJzOiBEZWxpbWl0ZXJNYXA8U1ZHRGVsaW1pdGVyRGF0YT4gPSBkZWxpbWl0ZXJzO1xuXG4gIC8qKlxuICAgKiAgVGhlIGNoYXJhY3RlciBkYXRhIGJ5IHZhcmlhbnRcbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgZGVmYXVsdENoYXJzOiBDaGFyTWFwTWFwPFNWR0NoYXJPcHRpb25zPiA9IHtcbiAgICAnbm9ybWFsJzogbm9ybWFsLFxuICAgICdib2xkJzogYm9sZCxcbiAgICAnaXRhbGljJzogaXRhbGljLFxuICAgICdib2xkLWl0YWxpYyc6IGJvbGRJdGFsaWMsXG4gICAgJ2RvdWJsZS1zdHJ1Y2snOiBkb3VibGVTdHJ1Y2ssXG4gICAgJ2ZyYWt0dXInOiBmcmFrdHVyLFxuICAgICdib2xkLWZyYWt0dXInOiBmcmFrdHVyQm9sZCxcbiAgICAnc2NyaXB0Jzogc2NyaXB0LFxuICAgICdib2xkLXNjcmlwdCc6IHNjcmlwdEJvbGQsXG4gICAgJ3NhbnMtc2VyaWYnOiBzYW5zU2VyaWYsXG4gICAgJ2JvbGQtc2Fucy1zZXJpZic6IHNhbnNTZXJpZkJvbGQsXG4gICAgJ3NhbnMtc2VyaWYtaXRhbGljJzogc2Fuc1NlcmlmSXRhbGljLFxuICAgICdzYW5zLXNlcmlmLWJvbGQtaXRhbGljJzogc2Fuc1NlcmlmQm9sZEl0YWxpYyxcbiAgICAnbW9ub3NwYWNlJzogbW9ub3NwYWNlLFxuICAgICctc21hbGxvcCc6IHNtYWxsb3AsXG4gICAgJy1sYXJnZW9wJzogbGFyZ2VvcCxcbiAgICAnLXNpemUzJzogdGV4U2l6ZTMsXG4gICAgJy1zaXplNCc6IHRleFNpemU0LFxuICAgICctdGV4LWNhbGxpZ3JhcGhpYyc6IHRleENhbGxpZ3JhcGhpYyxcbiAgICAnLXRleC1ib2xkLWNhbGxpZ3JhcGhpYyc6IHRleENhbGxpZ3JhcGhpY0JvbGQsXG4gICAgJy10ZXgtbWF0aGl0JzogdGV4TWF0aGl0LFxuICAgICctdGV4LW9sZHN0eWxlJzogdGV4T2xkc3R5bGUsXG4gICAgJy10ZXgtYm9sZC1vbGRzdHlsZSc6IHRleE9sZHN0eWxlQm9sZCxcbiAgICAnLXRleC12YXJpYW50JzogdGV4VmFyaWFudFxuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgY2FjaGVJRHMgdG8gdXNlIGZvciB0aGUgdmFyaWFudHMgaW4gZm9udC1jYWNoaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIHZhcmlhbnRDYWNoZUlkczoge1tuYW1lOiBzdHJpbmddOiBzdHJpbmd9ID0ge1xuICAgICdub3JtYWwnOiAnTicsXG4gICAgJ2JvbGQnOiAnQicsXG4gICAgJ2l0YWxpYyc6ICdJJyxcbiAgICAnYm9sZC1pdGFsaWMnOiAnQkknLFxuICAgICdkb3VibGUtc3RydWNrJzogJ0QnLFxuICAgICdmcmFrdHVyJzogJ0YnLFxuICAgICdib2xkLWZyYWt0dXInOiAnQkYnLFxuICAgICdzY3JpcHQnOiAnUycsXG4gICAgJ2JvbGQtc2NyaXB0JzogJ0JTJyxcbiAgICAnc2Fucy1zZXJpZic6ICdTUycsXG4gICAgJ2JvbGQtc2Fucy1zZXJpZic6ICdCU1MnLFxuICAgICdzYW5zLXNlcmlmLWl0YWxpYyc6ICdTU0knLFxuICAgICdzYW5zLXNlcmlmLWJvbGQtaXRhbGljJzogJ1NTQkknLFxuICAgICdtb25vc3BhY2UnOiAnTScsXG4gICAgJy1zbWFsbG9wJzogJ1NPJyxcbiAgICAnLWxhcmdlb3AnOiAnTE8nLFxuICAgICctc2l6ZTMnOiAnUzMnLFxuICAgICctc2l6ZTQnOiAnUzQnLFxuICAgICctdGV4LWNhbGxpZ3JhcGhpYyc6ICdDJyxcbiAgICAnLXRleC1ib2xkLWNhbGxpZ3JhcGhpYyc6ICdCQycsXG4gICAgJy10ZXgtbWF0aGl0JzogJ01JJyxcbiAgICAnLXRleC1vbGRzdHlsZSc6ICdPUycsXG4gICAgJy10ZXgtYm9sZC1vbGRzdHlsZSc6ICdCT1MnLFxuICAgICctdGV4LXZhcmlhbnQnOiAnVidcbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25MaXN0ID0gbnVsbCkge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuICAgIC8vXG4gICAgLy8gIEFkZCB0aGUgY2FjaGVJRHMgdG8gdGhlIHZhcmlhbnRzXG4gICAgLy9cbiAgICBjb25zdCBDTEFTUyA9IHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIFRlWEZvbnQ7XG4gICAgZm9yIChjb25zdCB2YXJpYW50IG9mIE9iamVjdC5rZXlzKENMQVNTLnZhcmlhbnRDYWNoZUlkcykpIHtcbiAgICAgIHRoaXMudmFyaWFudFt2YXJpYW50XS5jYWNoZUlEID0gJ1RFWC0nICsgQ0xBU1MudmFyaWFudENhY2hlSWRzW3ZhcmlhbnRdO1xuICAgIH1cbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE5LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIEZvbnRDYWNoZSBvYmplY3QgZm9yIFNWRyBvdXRwdXRcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7U1ZHfSBmcm9tICcuLi9zdmcuanMnO1xuXG5leHBvcnQgY2xhc3MgRm9udENhY2hlPE4sIFQsIEQ+IHtcblxuICAvKipcbiAgICogVGhlIFNWRyBqYXggdGhhdCBvd3NuIHRoaXMgY2FjaGVcbiAgICovXG4gIHByb3RlY3RlZCBqYXg6IFNWRzxOLCBULCBEPjtcblxuICAvKipcbiAgICogVGhlIGNhY2hlIG9mIGZvbnQgY2hhcmFjdGVyIElEcyB0byB0aGVpciBwYXRoc1xuICAgKi9cbiAgcHJvdGVjdGVkIGNhY2hlOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gIC8qKlxuICAgKiBUaGUgU1ZHIDxkZWZzPiBlbGVtZW50IGZvciBzdG9yaW5nIHRoZSBjYWNoZVxuICAgKi9cbiAgcHJvdGVjdGVkIGRlZnM6IE4gPSBudWxsO1xuXG4gIC8qKlxuICAgKiBBIHN0cmluZyB0byB1c2UgdG8gbWFrZSBwZXItZXF1YXRpb24gY2FjaGUgSURzIHVuaXF1ZVxuICAgKi9cbiAgcHJvdGVjdGVkIGxvY2FsSUQ6IHN0cmluZyA9ICcnO1xuXG4gIC8qKlxuICAgKiBBIG51bWJlciB1c2VkIHRvIG1ha2UgbG9jYWxJRCB2YWx1ZXMgdG8gdXNlIGZvciBlYWNoIGVxdWF0aW9uXG4gICAqL1xuICBwcm90ZWN0ZWQgbmV4dElEOiBudW1iZXIgPSAwO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1NWR30gamF4ICBUaGUgU1ZHIGpheCBvd25pbmcgdGhpcyBmb250IGNhY2hlXG4gICAqL1xuICBjb25zdHJ1Y3RvcihqYXg6IFNWRzxOLCBULCBEPikge1xuICAgIHRoaXMuamF4ID0gamF4O1xuICB9XG5cbiAgLyoqXG4gICAqIENhY2hlIGEgY2hhcmFjdGVyIGZyb20gYSBwYXJ0aWN1bGFyIHZhcmlhbnQgYW5kIHJldHVybiB0aGUgY2FjaGUgSURcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhcmlhbnQgICBUaGUgdmFyaWFudCBuYW1lIGZvciB0aGUgY2hhcmFjdGVyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBDICAgICAgICAgVGhlIGNoYXJhY3RlciB0byBiZSBjYWNoZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggICAgICBUaGUgU1ZHIHBhdGggZGF0YSBmb3IgdGhlIGNoYXJhY3RlclxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgIFRoZSBpZCBmb3IgdGhlIGNhY2hlZCA8cGF0aD4gZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGNhY2hlUGF0aCh2YXJpYW50OiBzdHJpbmcsIEM6IHN0cmluZywgcGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBpZCA9ICdNSlgtJyArIHRoaXMubG9jYWxJRCArICh0aGlzLmpheC5mb250LmdldFZhcmlhbnQodmFyaWFudCkuY2FjaGVJRCB8fCAnJykgKyAnLScgKyBDO1xuICAgIGlmICghdGhpcy5jYWNoZS5oYXMoaWQpKSB7XG4gICAgICB0aGlzLmNhY2hlLnNldChpZCwgcGF0aCk7XG4gICAgICB0aGlzLmpheC5hZGFwdG9yLmFwcGVuZCh0aGlzLmRlZnMsIHRoaXMuamF4LnN2ZygncGF0aCcsIHtpZDogaWQsIGQ6IHBhdGh9KSk7XG4gICAgfVxuICAgIHJldHVybiBpZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgbG9jYWxJRCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIGNsZWFyTG9jYWxJRCgpIHtcbiAgICB0aGlzLmxvY2FsSUQgPSAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2UgYSBsb2NhbElEIChmb3IgZm9udC1zcGVjaWZpYyBjYWNoaW5nKSwgZWl0aGVyIHdpdGggYSBzcGVjaWZpYyBzdHJpbmcsXG4gICAqIG9yIGZyb20gdGhlIG5leHRJRCBudW1iZXIuXG4gICAqL1xuICBwdWJsaWMgdXNlTG9jYWxJRChpZDogc3RyaW5nID0gbnVsbCkge1xuICAgIHRoaXMubG9jYWxJRCA9IChpZCA9PSBudWxsID8gKyt0aGlzLm5leHRJRCA6IGlkKSArIChpZCA9PT0gJycgPyAnJyA6ICctJyk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGNhY2hlXG4gICAqL1xuICBwdWJsaWMgY2xlYXJDYWNoZSgpIHtcbiAgICB0aGlzLmNhY2hlID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuZGVmcyA9IHRoaXMuamF4LnN2ZygnZGVmcycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgZm9udCBjYWNoZSA8ZGVmcz4gZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGdldENhY2hlKCkge1xuICAgIHJldHVybiB0aGlzLmRlZnM7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBTVkcgT3V0cHV0SmF4IG9iamVjdFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtDb21tb25PdXRwdXRKYXgsIFVua25vd25CQm94fSBmcm9tICcuL2NvbW1vbi9PdXRwdXRKYXguanMnO1xuaW1wb3J0IHtPcHRpb25MaXN0fSBmcm9tICcuLi91dGlsL09wdGlvbnMuanMnO1xuaW1wb3J0IHtNYXRoRG9jdW1lbnR9IGZyb20gJy4uL2NvcmUvTWF0aERvY3VtZW50LmpzJztcbmltcG9ydCB7TWF0aEl0ZW19IGZyb20gJy4uL2NvcmUvTWF0aEl0ZW0uanMnO1xuaW1wb3J0IHtNbWxOb2RlfSBmcm9tICcuLi9jb3JlL01tbFRyZWUvTW1sTm9kZS5qcyc7XG5pbXBvcnQge1NWR1dyYXBwZXJ9IGZyb20gJy4vc3ZnL1dyYXBwZXIuanMnO1xuaW1wb3J0IHtTVkdXcmFwcGVyRmFjdG9yeX0gZnJvbSAnLi9zdmcvV3JhcHBlckZhY3RvcnkuanMnO1xuaW1wb3J0IHtTVkdGb250RGF0YX0gZnJvbSAnLi9zdmcvRm9udERhdGEuanMnO1xuaW1wb3J0IHtUZVhGb250fSBmcm9tICcuL3N2Zy9mb250cy90ZXguanMnO1xuaW1wb3J0IHtTdHlsZUxpc3QgYXMgQ3NzU3R5bGVMaXN0fSBmcm9tICcuLi91dGlsL1N0eWxlTGlzdC5qcyc7XG5pbXBvcnQge0ZvbnRDYWNoZX0gZnJvbSAnLi9zdmcvRm9udENhY2hlLmpzJztcbmltcG9ydCB7dW5pY29kZUNoYXJzfSBmcm9tICcuLi91dGlsL3N0cmluZy5qcyc7XG5pbXBvcnQge3BlcmNlbnR9IGZyb20gJy4uL3V0aWwvbGVuZ3Rocy5qcyc7XG5cbmV4cG9ydCBjb25zdCBTVkdOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG5leHBvcnQgY29uc3QgWExJTktOUyA9ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgQ0hUTUwgY2xhc3MgKGV4dGVuZHMgQWJzdHJhY3RPdXRwdXRKYXgpXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgU1ZHPE4sIFQsIEQ+IGV4dGVuZHNcbkNvbW1vbk91dHB1dEpheDxOLCBULCBELCBTVkdXcmFwcGVyPE4sIFQsIEQ+LCBTVkdXcmFwcGVyRmFjdG9yeTxOLCBULCBEPiwgU1ZHRm9udERhdGEsIHR5cGVvZiBTVkdGb250RGF0YT4ge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgb3V0cHV0IGpheFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBOQU1FOiBzdHJpbmcgPSAnU1ZHJztcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE9QVElPTlM6IE9wdGlvbkxpc3QgPSB7XG4gICAgLi4uQ29tbW9uT3V0cHV0SmF4Lk9QVElPTlMsXG4gICAgaW50ZXJuYWxTcGVlY2hUaXRsZXM6IHRydWUsICAgICAvLyBpbnNlcnQgPHRpdGxlPiB0YWdzIHdpdGggc3BlZWNoIGNvbnRlbnRcbiAgICB0aXRsZUlEOiAwLCAgICAgICAgICAgICAgICAgICAgIC8vIGluaXRpYWwgaWQgbnVtYmVyIHRvIHVzZSBmb3IgYXJpYS1sYWJlbGVkYnkgdGl0bGVzXG4gICAgZm9udENhY2hlOiAnbG9jYWwnLCAgICAgICAgICAgICAvLyBvciAnZ2xvYmFsJyBvciAnbm9uZSdcbiAgICBsb2NhbElEOiBudWxsLCAgICAgICAgICAgICAgICAgIC8vIElEIHRvIHVzZSBmb3IgbG9jYWwgZm9udCBjYWNoZSAoZm9yIHNpbmdsZSBlcXVhdGlvbiBwcm9jZXNzaW5nKVxuICB9O1xuXG4gIC8qKlxuICAgKiAgVGhlIGRlZmF1bHQgc3R5bGVzIGZvciBTVkdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY29tbW9uU3R5bGVzOiBDc3NTdHlsZUxpc3QgPSB7XG4gICAgJ21qeC1jb250YWluZXJbamF4PVwiU1ZHXCJdJzoge1xuICAgICAgZGlyZWN0aW9uOiAnbHRyJ1xuICAgIH0sXG4gICAgJ21qeC1jb250YWluZXJbamF4PVwiU1ZHXCJdID4gc3ZnJzoge1xuICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICAgICdtaW4taGVpZ2h0JzogJzFweCcsXG4gICAgICAnbWluLXdpZHRoJzogJzFweCdcbiAgICB9LFxuICAgICdtangtY29udGFpbmVyW2pheD1cIlNWR1wiXSA+IHN2ZyBhJzoge1xuICAgICAgZmlsbDogJ2JsdWUnLCBzdHJva2U6ICdibHVlJ1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogVGhlIElEIGZvciB0aGUgU1ZHIGVsZW1lbnQgdGhhdCBzdG9yZXMgdGhlIGNhY2hlZCBmb250IHBhdGhzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIEZPTlRDQUNIRUlEID0gJ01KWC1TVkctZ2xvYmFsLWNhY2hlJztcblxuICAvKipcbiAgICogVGhlIElEIGZvciB0aGUgc3R5bGVzaGVldCBlbGVtZW50IGZvciB0aGUgc3R5bGVzIGZvciB0aGUgU1ZHIG91dHB1dFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBTVFlMRVNIRUVUSUQgPSAnTUpYLVNWRy1zdHlsZXMnO1xuXG4gIC8qKlxuICAgKiBTdG9yZXMgdGhlIENIVE1MV3JhcHBlciBmYWN0b3J5XG4gICAqL1xuICBwdWJsaWMgZmFjdG9yeTogU1ZHV3JhcHBlckZhY3Rvcnk8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNhY2hlZCBjaGFyYWN0ZXIgZ2x5cGhzXG4gICAqL1xuICBwdWJsaWMgZm9udENhY2hlOiBGb250Q2FjaGU8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIE1pbmltdW0gd2lkdGggZm9yIHRhYmxlcyB3aXRoIGxhYmVscyxcbiAgICovXG4gIHB1YmxpYyBtaW53aWR0aDogbnVtYmVyID0gMDtcbiAgLyoqXG4gICAqIFRoZSBzaGlmdCBmb3IgdGhlIG1haW4gZXF1YXRpb25cbiAgICovXG4gIHB1YmxpYyBzaGlmdDogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogVGhlIGNvbnRhaW5lciBlbGVtZW50IGZvciB0aGUgbWF0aFxuICAgKi9cbiAgcHVibGljIGNvbnRhaW5lcjogTiA9IG51bGw7XG5cbiAgLyoqXG4gICAqIFRoZSBTVkcgc3R5bGVzaGVldCwgb25jZSBpdCBpcyBjb25zdHJ1Y3RlZFxuICAgKi9cbiAgcHVibGljIHN2Z1N0eWxlczogTiA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IE9wdGlvbkxpc3QgPSBudWxsKSB7XG4gICAgc3VwZXIob3B0aW9ucywgU1ZHV3JhcHBlckZhY3RvcnkgYXMgYW55LCBUZVhGb250KTtcbiAgICB0aGlzLmZvbnRDYWNoZSA9IG5ldyBGb250Q2FjaGUodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaW5pdGlhbGl6ZSgpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmZvbnRDYWNoZSA9PT0gJ2dsb2JhbCcpIHtcbiAgICAgIHRoaXMuZm9udENhY2hlLmNsZWFyQ2FjaGUoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgdGhlIGZvbnQgY2FjaGUgKHVzZSBmb3IgcmVzZXR0aW5nIHRoZSBnbG9iYWwgZm9udCBjYWNoZSlcbiAgICovXG4gIHB1YmxpYyBjbGVhckZvbnRDYWNoZSgpIHtcbiAgICB0aGlzLmZvbnRDYWNoZS5jbGVhckNhY2hlKCk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgdGhpcy5jbGVhckZvbnRDYWNoZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHNldFNjYWxlKG5vZGU6IE4pIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLnNjYWxlICE9PSAxKSB7XG4gICAgICB0aGlzLmFkYXB0b3Iuc2V0U3R5bGUobm9kZSwgJ2ZvbnRTaXplJywgcGVyY2VudCh0aGlzLm9wdGlvbnMuc2NhbGUpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZXNjYXBlZChtYXRoOiBNYXRoSXRlbTxOLCBULCBEPiwgaHRtbDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgdGhpcy5zZXREb2N1bWVudChodG1sKTtcbiAgICByZXR1cm4gdGhpcy5odG1sKCdzcGFuJywge30sIFt0aGlzLnRleHQobWF0aC5tYXRoKV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0eWxlU2hlZXQoaHRtbDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgaWYgKHRoaXMuc3ZnU3R5bGVzKSB7XG4gICAgICByZXR1cm4gdGhpcy5zdmdTdHlsZXM7ICAvLyBzdHlsZXNoZWV0IGlzIGFscmVhZHkgYWRkZWQgdG8gdGhlIGRvY3VtZW50XG4gICAgfVxuICAgIGNvbnN0IHNoZWV0ID0gdGhpcy5zdmdTdHlsZXMgPSBzdXBlci5zdHlsZVNoZWV0KGh0bWwpO1xuICAgIHRoaXMuYWRhcHRvci5zZXRBdHRyaWJ1dGUoc2hlZXQsICdpZCcsIFNWRy5TVFlMRVNIRUVUSUQpO1xuICAgIHJldHVybiBzaGVldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBwYWdlRWxlbWVudHMoaHRtbDogTWF0aERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5mb250Q2FjaGUgPT09ICdnbG9iYWwnICYmICF0aGlzLmZpbmRDYWNoZShodG1sKSkge1xuICAgICAgcmV0dXJuIHRoaXMuc3ZnKCdzdmcnLCB7aWQ6IFNWRy5GT05UQ0FDSEVJRCwgc3R5bGU6IHtkaXNwbGF5OiAnbm9uZSd9fSwgW3RoaXMuZm9udENhY2hlLmdldENhY2hlKCldKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGwgYXMgTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIGZvbnQtY2FjaGUgZWxlbWVudCBpbiB0aGUgcGFnZVxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gaHRtbCAgIFRoZSBkb2N1bWVudCB0byBzZWFyY2hcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICAgICAgICAgICBUcnVlIGlmIGEgZm9udCBjYWNoZSBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgcGFnZVxuICAgKi9cbiAgcHJvdGVjdGVkIGZpbmRDYWNoZShodG1sOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pOiBib29sZWFuIHtcbiAgICBjb25zdCBhZGFwdG9yID0gdGhpcy5hZGFwdG9yO1xuICAgIGNvbnN0IHN2Z3MgPSBhZGFwdG9yLnRhZ3MoYWRhcHRvci5ib2R5KGh0bWwuZG9jdW1lbnQpLCAnc3ZnJyk7XG4gICAgZm9yIChsZXQgaSA9IHN2Z3MubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIGlmICh0aGlzLmFkYXB0b3IuZ2V0QXR0cmlidXRlKHN2Z3NbaV0sICdpZCcpID09PSBTVkcuRk9OVENBQ0hFSUQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG1hdGggIFRoZSBNTUwgbm9kZSB3aG9zZSBTVkcgaXMgdG8gYmUgcHJvZHVjZWRcbiAgICogQHBhcmFtIHtOfSBwYXJlbnQgICAgICBUaGUgSFRNTCBub2RlIHRvIGNvbnRhaW4gdGhlIFNWR1xuICAgKi9cbiAgcHJvdGVjdGVkIHByb2Nlc3NNYXRoKG1hdGg6IE1tbE5vZGUsIHBhcmVudDogTikge1xuICAgIC8vXG4gICAgLy8gQ2FjaGUgdGhlIGNvbnRhaW5lciAodG9vbHRpcHMgcHJvY2VzcyBpbnRvIHNlcGFyYXRlIGNvbnRhaW5lcnMpXG4gICAgLy9cbiAgICBjb25zdCBjb250YWluZXIgPSB0aGlzLmNvbnRhaW5lcjtcbiAgICB0aGlzLmNvbnRhaW5lciA9IHBhcmVudDtcbiAgICAvL1xuICAgIC8vICBHZXQgdGhlIHdyYXBwZWQgbWF0aCBlbGVtZW50IGFuZCB0aGUgU1ZHIGNvbnRhaW5lclxuICAgIC8vICBUaGVuIHR5cGVzZXQgdGhlIG1hdGggaW50byB0aGUgU1ZHXG4gICAgLy9cbiAgICBjb25zdCB3cmFwcGVyID0gdGhpcy5mYWN0b3J5LndyYXAobWF0aCk7XG4gICAgY29uc3QgW3N2ZywgZ10gPSB0aGlzLmNyZWF0ZVJvb3Qod3JhcHBlcik7XG4gICAgdGhpcy50eXBlc2V0U1ZHKHdyYXBwZXIsIHN2ZywgZyk7XG4gICAgLy9cbiAgICAvLyAgUHV0IGJhY2sgdGhlIG9yaWdpbmFsIGNvbnRhaW5lclxuICAgIC8vXG4gICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtTVkdXcmFwcGVyfSB3cmFwcGVyICAgVGhlIHdyYXBwZWQgbWF0aCB0byBwcm9jZXNzXG4gICAqIEByZXR1cm4ge1tOLCBOXX0gICAgICAgICAgICAgIFRoZSBzdmcgYW5kIGcgbm9kZXMgZm9yIHRoZSBtYXRoXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlUm9vdCh3cmFwcGVyOiBTVkdXcmFwcGVyPE4sIFQsIEQ+KTogW04sIE5dIHtcbiAgICBjb25zdCB7dywgaCwgZCwgcHdpZHRofSA9IHdyYXBwZXIuZ2V0T3V0ZXJCQm94KCk7XG4gICAgY29uc3QgcHggPSB3cmFwcGVyLm1ldHJpY3MuZW0gLyAxMDAwO1xuICAgIGNvbnN0IFcgPSBNYXRoLm1heCh3LCBweCk7IC8vIG1ha2Ugc3VyZSB3ZSBhcmUgYXQgbGVhc3Qgb25lIHB4IHdpZGUgKG5lZWRlZCBmb3IgZS5nLiBcXGxsYXApXG4gICAgY29uc3QgSCA9IE1hdGgubWF4KGggKyBkLCBweCk7IC8vIG1ha2Ugc3VyZSB3ZSBhcmUgYXQgbGVhc3Qgb25lIHB4IHRhbGwgKG5lZWRlZCBmb3IgZS5nLiwgXFxzbWFzaClcbiAgICAvL1xuICAgIC8vICBUaGUgY29udGFpbmVyIHRoYXQgZmxpcHMgdGhlIHktYXhpcyBhbmQgc2V0cyB0aGUgY29sb3JzIHRvIGluaGVyaXQgZnJvbSB0aGUgc3Vycm91bmRpbmdzXG4gICAgLy9cbiAgICBjb25zdCBnID0gdGhpcy5zdmcoJ2cnLCB7XG4gICAgICBzdHJva2U6ICdjdXJyZW50Q29sb3InLCBmaWxsOiAnY3VycmVudENvbG9yJyxcbiAgICAgICdzdHJva2Utd2lkdGgnOiAwLCB0cmFuc2Zvcm06ICdzY2FsZSgxLC0xKSdcbiAgICB9KSBhcyBOO1xuICAgIC8vXG4gICAgLy8gIFRoZSBzdmcgZWxlbWVudCB3aXRoIGl0cyB2aWV3Qm94LCBzaXplIGFuZCBhbGlnbm1lbnRcbiAgICAvL1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3Qgc3ZnID0gYWRhcHRvci5hcHBlbmQodGhpcy5jb250YWluZXIsIHRoaXMuc3ZnKCdzdmcnLCB7XG4gICAgICB4bWxuczogU1ZHTlMsXG4gICAgICB3aWR0aDogdGhpcy5leChXKSwgaGVpZ2h0OiB0aGlzLmV4KEgpLFxuICAgICAgcm9sZTogJ2ltZycsIGZvY3VzYWJsZTogZmFsc2UsXG4gICAgICBzdHlsZTogeyd2ZXJ0aWNhbC1hbGlnbic6IHRoaXMuZXgoLWQpfSxcbiAgICAgIHZpZXdCb3g6IFswLCB0aGlzLmZpeGVkKC1oICogMTAwMCwgMSksIHRoaXMuZml4ZWQoVyAqIDEwMDAsIDEpLCB0aGlzLmZpeGVkKEggKiAxMDAwLCAxKV0uam9pbignICcpXG4gICAgfSwgW2ddKSkgYXMgTjtcbiAgICBpZiAoVyA9PT0gLjAwMSkge1xuICAgICAgYWRhcHRvci5zZXRBdHRyaWJ1dGUoc3ZnLCAncHJlc2VydmVBc3BlY3RSYXRpbycsICd4TWlkWU1pZCBzbGljZScpO1xuICAgICAgaWYgKHcgPCAwKSB7XG4gICAgICAgIGFkYXB0b3Iuc2V0U3R5bGUodGhpcy5jb250YWluZXIsICdtYXJnaW4tcmlnaHQnLCB0aGlzLmV4KHcpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHB3aWR0aCkge1xuICAgICAgLy9cbiAgICAgIC8vIFVzZSB3aWR0aCAxMDAlIHdpdGggbm8gdmlld2JveCwgYW5kIGluc3RlYWQgc2NhbGUgYW5kIHRyYW5zbGF0ZSB0byBhY2hpZXZlIHRoZSBzYW1lIHJlc3VsdFxuICAgICAgLy9cbiAgICAgIGFkYXB0b3Iuc2V0U3R5bGUoc3ZnLCAnbWluLXdpZHRoJywgdGhpcy5leChXKSk7XG4gICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZShzdmcsICd3aWR0aCcsIHB3aWR0aCk7XG4gICAgICBhZGFwdG9yLnJlbW92ZUF0dHJpYnV0ZShzdmcsICd2aWV3Qm94Jyk7XG4gICAgICBjb25zdCBzY2FsZSA9IHRoaXMuZml4ZWQod3JhcHBlci5tZXRyaWNzLmV4IC8gKHRoaXMuZm9udC5wYXJhbXMueF9oZWlnaHQgKiAxMDAwKSwgNik7XG4gICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZShnLCAndHJhbnNmb3JtJywgYHNjYWxlKCR7c2NhbGV9LC0ke3NjYWxlfSkgdHJhbnNsYXRlKDAsICR7dGhpcy5maXhlZCgtaCAqIDEwMDAsIDEpfSlgKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0aW9ucy5mb250Q2FjaGUgIT09ICdub25lJykge1xuICAgICAgYWRhcHRvci5zZXRBdHRyaWJ1dGUoc3ZnLCAneG1sbnM6eGxpbmsnLCBYTElOS05TKTtcbiAgICB9XG4gICAgcmV0dXJuIFtzdmcsIGddO1xuICB9XG5cbiAgLyoqXG4gICAqIFR5cGVzZXQgdGhlIG1hdGggYW5kIGFkZCBtaW53aWR0aCAoZnJvbSBtdGFibGVzKSwgb3Igc2V0IHRoZSBhbGlnbm1lbnQgYW5kIGluZGVudGF0aW9uXG4gICAqIG9mIHRoZSBmaW5hbGl6ZWQgZXhwcmVzc2lvbi5cbiAgICpcbiAgICogQHBhcmFtIHtTVkdXcmFwcGVyfSB3cmFwcGVyICAgVGhlIHdyYXBwZWQgbWF0aCB0byB0eXBlc2V0XG4gICAqIEBwYXJhbSB7Tn0gc3ZnICAgICAgICAgICAgICAgIFRoZSBtYWluIHN2ZyBlbGVtZW50IGZvciB0aGUgdHlwZWV0IG1hdGhcbiAgICogQHBhcmFtIHtOfSBnICAgICAgICAgICAgICAgICAgVGhlIGdyb3VwIGluIHdoaWNoIHRoZSBtYXRoIGlzIHR5cGVzZXRcbiAgICovXG4gIHByb3RlY3RlZCB0eXBlc2V0U1ZHKHdyYXBwZXI6IFNWR1dyYXBwZXI8TiwgVCwgRD4sIHN2ZzogTiwgZzogTikge1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgLy9cbiAgICAvLyAgVHlwZXNldCB0aGUgbWF0aCBhbmQgYWRkIG1pbldpZHRoIChmcm9tIG10YWJsZXMpLCBvciBzZXQgdGhlIGFsaWdubWVudCBhbmQgaW5kZW50YXRpb25cbiAgICAvLyAgICBvZiB0aGUgZmluYWxpemVkIGV4cHJlc3Npb25cbiAgICAvL1xuICAgIHRoaXMubWlud2lkdGggPSB0aGlzLnNoaWZ0ID0gMDtcbiAgICBpZiAodGhpcy5vcHRpb25zLmZvbnRDYWNoZSA9PT0gJ2xvY2FsJykge1xuICAgICAgdGhpcy5mb250Q2FjaGUuY2xlYXJDYWNoZSgpO1xuICAgICAgdGhpcy5mb250Q2FjaGUudXNlTG9jYWxJRCh0aGlzLm9wdGlvbnMubG9jYWxJRCk7XG4gICAgICBhZGFwdG9yLmluc2VydCh0aGlzLmZvbnRDYWNoZS5nZXRDYWNoZSgpLCBnKTtcbiAgICB9XG4gICAgd3JhcHBlci50b1NWRyhnKTtcbiAgICB0aGlzLmZvbnRDYWNoZS5jbGVhckxvY2FsSUQoKTtcbiAgICBpZiAodGhpcy5taW53aWR0aCkge1xuICAgICAgYWRhcHRvci5zZXRTdHlsZShzdmcsICdtaW5XaWR0aCcsIHRoaXMuZXgodGhpcy5taW53aWR0aCkpO1xuICAgICAgYWRhcHRvci5zZXRTdHlsZSh0aGlzLmNvbnRhaW5lciwgJ21pbldpZHRoJywgdGhpcy5leCh0aGlzLm1pbndpZHRoKSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnNoaWZ0KSB7XG4gICAgICBjb25zdCBhbGlnbiA9IGFkYXB0b3IuZ2V0QXR0cmlidXRlKHRoaXMuY29udGFpbmVyLCAnanVzdGlmeScpIHx8ICdjZW50ZXInO1xuICAgICAgdGhpcy5zZXRJbmRlbnQoc3ZnLCBhbGlnbiwgdGhpcy5zaGlmdCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gc3ZnICAgICAgICAgVGhlIHN2ZyBub2RlIHdob3NlIGluZGVudGF0aW9uIGlzIHRvIGJlIGFkanVzdGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBhbGlnbiAgVGhlIGFsaWdubWVudCBmb3IgdGhlIG5vZGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IHNoaWZ0ICBUaGUgaW5kZW50IChwb3NpdGl2ZSBvciBuZWdhdGl2ZSkgZm9yIHRoZSBub2RlXG4gICAqL1xuICBwcm90ZWN0ZWQgc2V0SW5kZW50KHN2ZzogTiwgYWxpZ246IHN0cmluZywgc2hpZnQ6IG51bWJlcikge1xuICAgIGlmIChhbGlnbiA9PT0gJ2NlbnRlcicgfHwgYWxpZ24gPT09ICdsZWZ0Jykge1xuICAgICAgdGhpcy5hZGFwdG9yLnNldFN0eWxlKHN2ZywgJ21hcmdpbi1sZWZ0JywgdGhpcy5leChzaGlmdCkpO1xuICAgIH1cbiAgICBpZiAoYWxpZ24gPT09ICdjZW50ZXInIHx8IGFsaWduID09PSAncmlnaHQnKSB7XG4gICAgICB0aGlzLmFkYXB0b3Iuc2V0U3R5bGUoc3ZnLCAnbWFyZ2luLXJpZ2h0JywgdGhpcy5leCgtc2hpZnQpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IG0gIEEgbnVtYmVyIHRvIGJlIHNob3duIGluIGV4XG4gICAqIEByZXR1cm4ge3N0cmluZ30gICBUaGUgbnVtYmVyIHdpdGggdW5pdHMgb2YgZXhcbiAgICovXG4gIHB1YmxpYyBleChtOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIG0gLz0gdGhpcy5mb250LnBhcmFtcy54X2hlaWdodDtcbiAgICByZXR1cm4gKE1hdGguYWJzKG0pIDwgLjAwMSA/ICcwJyA6IG0udG9GaXhlZCgzKS5yZXBsYWNlKC9cXC4/MCskLywgJycpICsgJ2V4Jyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgICAgICAgICAgICAgVGhlIGtpbmQgb2Ygbm9kZSB0byBjcmVhdGVcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBwcm9wZXJ0aWVzICAgVGhlIHByb3BlcnRpZXMgdG8gc2V0IGZvciB0aGUgZWxlbWVudFxuICAgKiBAcGFyYW0geyhOfFQpW119IGNoaWxkcmVuICAgICAgICAgICAgVGhlIGNoaWxkIG5vZGVzIGZvciB0aGlzIG5vZGVcbiAgICogQHJldHVybiB7Tn0gICAgICAgICAgICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgbm9kZSBpbiB0aGUgU1ZHIG5hbWVzcGFjZVxuICAgKi9cbiAgcHVibGljIHN2ZyhraW5kOiBzdHJpbmcsIHByb3BlcnRpZXM6IE9wdGlvbkxpc3QgPSB7fSwgY2hpbGRyZW46IChOIHwgVClbXSA9IFtdKTogTiB7XG4gICAgcmV0dXJuIHRoaXMuaHRtbChraW5kLCBwcm9wZXJ0aWVzLCBjaGlsZHJlbiwgU1ZHTlMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgVGhlIHRleHQgdG8gYmUgZGlzcGxheWVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYW50ICAgVGhlIG5hbWUgb2YgdGhlIHZhcmlhbnQgZm9yIHRoZSB0ZXh0XG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICAgICAgVGhlIHRleHQgZWxlbWVudCBjb250YWluaW5nIHRoZSB0ZXh0XG4gICAqL1xuICBwdWJsaWMgdW5rbm93blRleHQodGV4dDogc3RyaW5nLCB2YXJpYW50OiBzdHJpbmcpOiBOIHtcbiAgICBjb25zdCBtZXRyaWNzID0gdGhpcy5tYXRoLm1ldHJpY3M7XG4gICAgY29uc3Qgc2NhbGUgPSB0aGlzLmZvbnQucGFyYW1zLnhfaGVpZ2h0IC8gbWV0cmljcy5leCAqIG1ldHJpY3MuZW0gKiAxMDAwO1xuICAgIGNvbnN0IHN2ZyA9IHRoaXMuc3ZnKCd0ZXh0Jywge1xuICAgICAgJ2RhdGEtdmFyaWFudCc6IHZhcmlhbnQsXG4gICAgICB0cmFuc2Zvcm06ICdzY2FsZSgxLC0xKScsICdmb250LXNpemUnOiB0aGlzLmZpeGVkKHNjYWxlLCAxKSArICdweCdcbiAgICB9LCBbdGhpcy50ZXh0KHRleHQpXSk7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBpZiAodmFyaWFudCAhPT0gJy1leHBsaWNpdEZvbnQnKSB7XG4gICAgICBjb25zdCBjID0gdW5pY29kZUNoYXJzKHRleHQpO1xuICAgICAgaWYgKGMubGVuZ3RoICE9PSAxIHx8IGNbMF0gPCAweDFENDAwIHx8IGNbMF0gPiAweDFEN0ZGKSB7XG4gICAgICAgIGNvbnN0IFtmYW1pbHksIGl0YWxpYywgYm9sZF0gPSB0aGlzLmZvbnQuZ2V0Q3NzRm9udCh2YXJpYW50KTtcbiAgICAgICAgYWRhcHRvci5zZXRBdHRyaWJ1dGUoc3ZnLCAnZm9udC1mYW1pbHknLCBmYW1pbHkpO1xuICAgICAgICBpZiAoaXRhbGljKSB7XG4gICAgICAgICAgYWRhcHRvci5zZXRBdHRyaWJ1dGUoc3ZnLCAnZm9udC1zdHlsZScsICdpdGFsaWMnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9sZCkge1xuICAgICAgICAgIGFkYXB0b3Iuc2V0QXR0cmlidXRlKHN2ZywgJ2ZvbnQtd2VpZ2h0JywgJ2JvbGQnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc3ZnO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lYXN1cmUgdGhlIHdpZHRoIG9mIGEgdGV4dCBlbGVtZW50IGJ5IHBsYWNpbmcgaXQgaW4gdGhlIHBhZ2VcbiAgICogIGFuZCBsb29raW5nIHVwIGl0cyBzaXplIChmYWtlIHRoZSBoZWlnaHQgYW5kIGRlcHRoLCBzaW5jZSB3ZSBjYW4ndCBtZWFzdXJlIHRoYXQpXG4gICAqXG4gICAqIEBwYXJhbSB7Tn0gdGV4dCAgICAgICAgIFRoZSB0ZXh0IGVsZW1lbnQgdG8gbWVhc3VyZVxuICAgKiBAcmV0dXJuIHtPYmplY3R9ICAgICAgICBUaGUgd2lkdGgsIGhlaWdodCBhbmQgZGVwdGggZm9yIHRoZSB0ZXh0XG4gICAqL1xuICBwdWJsaWMgbWVhc3VyZVRleHROb2RlKHRleHQ6IE4pOiBVbmtub3duQkJveCB7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICB0ZXh0ID0gYWRhcHRvci5jbG9uZSh0ZXh0KTtcbiAgICBhZGFwdG9yLnJlbW92ZUF0dHJpYnV0ZSh0ZXh0LCAndHJhbnNmb3JtJyk7XG4gICAgY29uc3QgZXggPSB0aGlzLmZpeGVkKHRoaXMuZm9udC5wYXJhbXMueF9oZWlnaHQgKiAxMDAwLCAxKTtcbiAgICBjb25zdCBzdmcgPSB0aGlzLnN2Zygnc3ZnJywge1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICAgICAgd2lkdGg6ICcxZXgnLCBoZWlnaHQ6ICcxZXgnLFxuICAgICAgdmlld0JveDogWzAsIDAsIGV4LCBleF0uam9pbignICcpXG4gICAgfSwgW3RleHRdKTtcbiAgICBhZGFwdG9yLmFwcGVuZChhZGFwdG9yLmJvZHkoYWRhcHRvci5kb2N1bWVudCksIHN2Zyk7XG4gICAgbGV0IHcgPSBhZGFwdG9yLm5vZGVTaXplKHRleHQsIDEwMDAsIHRydWUpWzBdO1xuICAgIGFkYXB0b3IucmVtb3ZlKHN2Zyk7XG4gICAgcmV0dXJuIHt3OiB3LCBoOiAuNzUsIGQ6IC4yfTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIFRoZSBET01BZGFwdG9yIGludGVyZmFjZSBhbmQgYWJzdHJhY3QgY2xhc3NcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7T3B0aW9uTGlzdH0gZnJvbSAnLi4vdXRpbC9PcHRpb25zLmpzJztcblxuLyoqXG4gKiBUaGUgZGF0YSBmb3IgYW4gYXR0cmlidXRlXG4gKi9cbmV4cG9ydCB0eXBlIEF0dHJpYnV0ZURhdGEgPSB7XG4gIG5hbWU6IHN0cmluZyxcbiAgdmFsdWU6IHN0cmluZ1xufTtcblxuLyoqXG4gKiBUaGUgZGF0YSBmb3IgYW4gZWxlbWVudHMgcGFnZS1iYXNlZCBib3VuZGluZyBib3hcbiAqL1xuZXhwb3J0IHR5cGUgUGFnZUJCb3ggPSB7XG4gIGxlZnQ6IG51bWJlcixcbiAgcmlnaHQ6IG51bWJlcixcbiAgdG9wOiBudW1iZXIsXG4gIGJvdHRvbTogbnVtYmVyXG59O1xuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBpbnRlcmZhY2UgZm9yIHRoZSBET01BZGFwdG9yXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERPTUFkYXB0b3I8TiwgVCwgRD4ge1xuICAvKipcbiAgICogRG9jdW1lbnQgaW4gd2hpY2ggdGhlIG5vZGVzIGFyZSB0byBiZSBjcmVhdGVkXG4gICAqL1xuICBkb2N1bWVudDogRDtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICAgVGhlIHNlcmlhbGl6ZWQgZG9jdW1lbnQgdG8gYmUgcGFyc2VkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmb3JtYXQgIFRoZSBmb3JtYXQgKGUuZy4sICd0ZXh0L2h0bWwnIG9yICd0ZXh0L3hodG1sJylcbiAgICogQHJldHVybiB7RH0gICAgICAgICAgICAgVGhlIHBhcnNlZCBkb2N1bWVudFxuICAgKi9cbiAgcGFyc2UodGV4dDogc3RyaW5nLCBmb3JtYXQ/OiBzdHJpbmcpOiBEO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2luZCAgICAgIFRoZSB0YWcgbmFtZSBvZiB0aGUgSFRNTCBub2RlIHRvIGJlIGNyZWF0ZWRcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBkZWYgICBUaGUgcHJvcGVydGllcyB0byBzZXQgZm9yIHRoZSBjcmVhdGVkIG5vZGVcbiAgICogQHBhcmFtIHsoTnxUKVtdfSBjaGlsZHJlbiBUaGUgY2hpbGQgbm9kZXMgZm9yIHRoZSBjcmVhdGVkIEhUTUwgbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbnMgICAgICAgIFRoZSBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSBub2RlXG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCBIVE1MIHRyZWVcbiAgICovXG4gIG5vZGUoa2luZDogc3RyaW5nLCBkZWY/OiBPcHRpb25MaXN0LCBjaGlsZHJlbj86IChOIHwgVClbXSwgbnM/OiBzdHJpbmcpOiBOO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgIFRoZSB0ZXh0IGZyb20gd2hpY2ggdG8gY3JlYXRlIGFuIEhUTUwgdGV4dCBub2RlXG4gICAqIEByZXR1cm4ge1R9ICAgICAgICAgICAgVGhlIGdlbmVyYXRlZCB0ZXh0IG5vZGUgd2l0aCB0aGUgZ2l2ZW4gdGV4dFxuICAgKi9cbiAgdGV4dCh0ZXh0OiBzdHJpbmcpOiBUO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0R9IGRvYyAgIFRoZSBkb2N1bWVudCB3aG9zZSBoZWFkIGlzIHRvIGJlIG9idGFpbmVkXG4gICAqIEByZXR1cm4ge059ICAgICAgVGhlIGRvY3VtZW50LmhlYWQgZWxlbWVudFxuICAgKi9cbiAgaGVhZChkb2M6IEQpOiBOO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0R9IGRvYyAgIFRoZSBkb2N1bWVudCB3aG9zZSBib2R5IGlzIHRvIGJlIG9idGFpbmVkXG4gICAqIEByZXR1cm4ge059ICAgICAgVGhlIGRvY3VtZW50LmJvZHkgZWxlbWVudFxuICAgKi9cbiAgYm9keShkb2M6IEQpOiBOO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0R9IGRvYyAgIFRoZSBkb2N1bWVudCB3aG9zZSBkb2N1bWVudEVsZW1lbnQgaXMgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybiB7Tn0gICAgICBUaGUgZG9jdW1lbnRFbGVtZW50XG4gICAqL1xuICByb290KGRvYzogRCk6IE47XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7RH0gZG9jICAgICBUaGUgZG9jdW1lbnQgd2hvc2UgZG9jdHlwZSBpcyB0byBiZSBvYnRhaW5lZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgVGhlIERPQ1RZUEUgY29tbWVudFxuICAgKi9cbiAgZG9jdHlwZShkb2M6IEQpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgVGhlIG5vZGUgdG8gc2VhcmNoIGZvciB0YWdzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIG5hbWUgb2YgdGhlIHRhZyB0byBzZWFyY2ggZm9yXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBucyAgICAgVGhlIG5hbWVzcGFjZSB0byBzZWFyY2ggaW4gKG9yIG51bGwgZm9yIG5vIG5hbWVzcGFjZSlcbiAgICogQHJldHVybiB7TltdfSAgICAgICAgICBUaGUgbGlzdCBvZiB0YWdzIGZvdW5kXG4gICAqL1xuICB0YWdzKG5vZGU6IE4sIG5hbWU6IHN0cmluZywgbnM/OiBzdHJpbmcpOiBOW107XG5cbiAgLyoqXG4gICAqIEdldCBhIGxpc3Qgb2YgY29udGFpbmVycyAodG8gYmUgc2VhcmNoZWQgZm9yIG1hdGgpLiAgVGhlc2UgY2FuIGJlXG4gICAqICBzcGVjaWZpZWQgYnkgQ1NTIHNlbGVjdG9yLCBvciBhcyBhY3R1YWwgRE9NIGVsZW1lbnRzIG9yIGFycmF5cyBvZiBzdWNoLlxuICAgKlxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBOIHwgTltdKVtdfSBub2RlcyAgVGhlIGFycmF5IG9mIGl0ZW1zIHRvIG1ha2UgaW50byBhIGNvbnRhaW5lciBsaXN0XG4gICAqIEBwYXJhbSB7RH0gZG9jdW1lbnQgICAgICAgICAgICAgICAgICBUaGUgZG9jdW1lbnQgaW4gd2hpY2ggdG8gc2VhcmNoXG4gICAqIEByZXR1cm4ge05bXX0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgYXJyYXkgb2YgY29udGFpbmVycyB0byBzZWFyY2hcbiAgICovXG4gIGdldEVsZW1lbnRzKG5vZGVzOiAoc3RyaW5nIHwgTiB8IE5bXSlbXSwgZG9jdW1lbnQ6IEQpOiBOW107XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBpZiBhIGNvbnRhaW5lciBub2RlIGNvbnRhaW5zIGEgZ2l2ZW4gbm9kZSBzb21ld2hlcmUgaW4gaXRzIERPTSB0cmVlXG4gICAqXG4gICAqIEBwYXJhbSB7Tn0gY29udGFpbmVyICBUaGUgY29udGFpbmVyIHRvIHNlYXJjaFxuICAgKiBAcGFyYW0ge058VH0gbm9kZSAgICAgVGhlIG5vZGUgdG8gbG9vayBmb3JcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICAgIFRydWUgaWYgdGhlIG5vZGUgaXMgaW4gdGhlIGNvbnRhaW5lcidzIERPTSB0cmVlXG4gICAqL1xuICBjb250YWlucyhjb250YWluZXI6IE4sIG5vZGU6IE4gfCBUKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfFR9IG5vZGUgIFRoZSBIVE1MIG5vZGUgd2hvc2UgcGFyZW50IGlzIHRvIGJlIG9idGFpbmVkXG4gICAqIEByZXR1cm4ge059ICAgICAgICBUaGUgcGFyZW50IG5vZGUgb2YgdGhlIGdpdmVuIG9uZVxuICAgKi9cbiAgcGFyZW50KG5vZGU6IE4gfCBUKTogTjtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICBUaGUgSFRNTCBub2RlIHRvIGJlIGFwcGVuZGVkIHRvXG4gICAqIEBwYXJhbSB7TnxUfSBjaGlsZCAgVGhlIG5vZGUgb3IgdGV4dCB0byBiZSBhcHBlbmRlZFxuICAgKiBAcmV0dXJuIHtOfFR9ICAgICAgIFRoZSBhcHBlbmRlZCBub2RlXG4gICAqL1xuICBhcHBlbmQobm9kZTogTiwgY2hpbGQ6IE4gfCBUKTogTiB8IFQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TnxUfSBuY2hpbGQgIFRoZSBub2RlIG9yIHRleHQgdG8gYmUgaW5zZXJ0ZWRcbiAgICogQHBhcmFtIHtOfFR9IG9jaGlsZCAgVGhlIG5vZGUgb3IgdGV4dCB3aGVyZSB0aGUgbmV3IGNoaWxkIGlzIHRvIGJlIGFkZGVkIGJlZm9yZSBpdFxuICAgKi9cbiAgaW5zZXJ0KG5jaGlsZDogTiB8IFQsIG9jaGlsZDogTiB8IFQpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge058VH0gY2hpbGQgIFRoZSBub2RlIG9yIHRleHQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnRcbiAgICogQHJldHVybiB7TnxUfSAgICAgICBUaGUgcmVtb3ZlZCBub2RlXG4gICAqL1xuICByZW1vdmUoY2hpbGQ6IE4gfCBUKTogTiB8IFQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TnxUfSBubm9kZSAgVGhlIG5vZGUgdG8gcmVwbGFjZSB3aXRoXG4gICAqIEBwYXJhbSB7TnxUfSBvbm9kZSAgVGhlIGNoaWxkIHRvIGJlIHJlcGxhY2VkXG4gICAqIEByZXR1cm4ge058VH0gICAgICAgVGhlIHJlbW92ZWQgbm9kZVxuICAgKi9cbiAgcmVwbGFjZShubm9kZTogTiB8IFQsIG9ub2RlOiBOIHwgVCk6IE4gfCBUO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICBUaGUgSFRNTCBub2RlIHRvIGJlIGNsb25lZFxuICAgKiBAcmV0dXJuIHtOfSAgICAgICBUaGUgY29waWVkIG5vZGVcbiAgICovXG4gIGNsb25lKG5vZGU6IE4pOiBOO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1R9IG5vZGUgICAgVGhlIEhUTUwgdGV4dCBub2RlIHRvIGJlIHNwbGl0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBuICBUaGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciB3aGVyZSB0aGUgc3BsaXQgd2lsbCBvY2N1clxuICAgKi9cbiAgc3BsaXQobm9kZTogVCwgbjogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfFR9IG5vZGUgICBUaGUgSFRNTCBub2RlIHdob3NlIHNpYmxpbmcgaXMgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybiB7TnxUfSAgICAgICBUaGUgbm9kZSBmb2xsb3dpbmcgdGhlIGdpdmVuIG9uZSAob3IgbnVsbClcbiAgICovXG4gIG5leHQobm9kZTogTiB8IFQpOiBOIHwgVDtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfFR9IG5vZGUgICBUaGUgSFRNTCBub2RlIHdob3NlIHNpYmxpbmcgaXMgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybiB7TnxUfSAgICAgICBUaGUgbm9kZSBwcmVjZWRpbmcgdGhlIGdpdmVuIG9uZSAob3IgbnVsbClcbiAgICovXG4gIHByZXZpb3VzKG5vZGU6IE4gfCBUKTogTiB8IFQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgIFRoZSBIVE1MIG5vZGUgd2hvc2UgY2hpbGQgaXMgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybiB7TnxUfSAgICAgVGhlIGZpcnN0IGNoaWxkIG9mIHRoZSBnaXZlbiBub2RlIChvciBudWxsKVxuICAgKi9cbiAgZmlyc3RDaGlsZChub2RlOiBOKTogTiB8IFQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgIFRoZSBIVE1MIG5vZGUgd2hvc2UgY2hpbGQgaXMgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybiB7Tn0gICAgICAgVGhlIGxhc3QgY2hpbGQgb2YgdGhlIGdpdmVuIG5vZGUgKG9yIG51bGwpXG4gICAqL1xuICBsYXN0Q2hpbGQobm9kZTogTik6IE4gfCBUO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICAgVGhlIEhUTUwgbm9kZSB3aG9zZSBjaGlsZHJlbiBhcmUgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybiB7KE58VClbXX0gIEFycmF5IG9mIGNoaWxkcmVuIGZvciB0aGUgZ2l2ZW4gbm9kZSAobm90IGEgbGl2ZSBsaXN0KVxuICAgKi9cbiAgY2hpbGROb2Rlcyhub2RlOiBOKTogKE4gfCBUKVtdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICAgVGhlIEhUTUwgbm9kZSB3aG9zZSBjaGlsZCBpcyB0byBiZSBvYnRhaW5lZFxuICAgKiBAcGFyYW0ge251bWJlcn0gaSAgVGhlIGluZGV4IG9mIHRoZSBjaGlsZCB0byByZXR1cm5cbiAgICogQHJldHVybiB7TnxUfSAgICAgIFRoZSBpLXRoIGNoaWxkIG5vZGUgb2YgdGhlIGdpdmVuIG5vZGUgKG9yIG51bGwpXG4gICAqL1xuICBjaGlsZE5vZGUobm9kZTogTiwgaTogbnVtYmVyKTogTiB8IFQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TiB8IFR9IG5vZGUgICBUaGUgSFRNTCBub2RlIHdob3NlIHRhZyBvciBub2RlIG5hbWUgaXMgdG8gYmUgb2J0YWluZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSAgICAgIFRoZSB0YWcgb3Igbm9kZSBuYW1lIG9mIHRoZSBnaXZlbiBub2RlXG4gICAqL1xuICBraW5kKG5vZGU6IE4gfCBUKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge058VH0gbm9kZSAgVGhlIEhUTUwgbm9kZSB3aG9zZSB2YWx1ZSBpcyB0byBiZSBvYnRhaW5lZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgVGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBub2RlXG4gICAqL1xuICB2YWx1ZShub2RlOiBOIHwgVCk6IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgIFRoZSBIVE1MIG5vZGUgd2hvc2UgdGV4dCBjb250ZW50IGlzIHRvIGJlIG9idGFpbmVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICBUaGUgdGV4dCBjb250ZW50IG9mIHRoZSBnaXZlbiBub2RlXG4gICAqL1xuICB0ZXh0Q29udGVudChub2RlOiBOKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICBUaGUgSFRNTCBub2RlIHdob3NlIGlubmVyIEhUTUwgc3RyaW5nIGlzIHRvIGJlIG9idGFpbmVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIFRoZSBzZXJpYWxpemVkIGNvbnRlbnQgb2YgdGhlIG5vZGVcbiAgICovXG4gIGlubmVySFRNTChub2RlOiBOKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICBUaGUgSFRNTCBub2RlIHdob3NlIG91dGVyIEhUTUwgc3RyaW5nIGlzIHRvIGJlIG9idGFpbmVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIFRoZSBzZXJpYWxpemVkIG5vZGUgYW5kIGl0cyBjb250ZW50XG4gICAqL1xuICBvdXRlckhUTUwobm9kZTogTik6IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgVGhlIEhUTUwgbm9kZSB3aG9zZSBzZXJpYWxpemVkIHN0cmluZyBpcyB0byBiZSBvYnRhaW5lZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICBUaGUgc2VyaWFsaXplZCBub2RlIGFuZCBpdHMgY29udGVudFxuICAgKi9cbiAgc2VyaWFsaXplWE1MKG5vZGU6IE4pOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgICAgICAgIFRoZSBIVE1MIG5vZGUgd2hvc2UgYXR0cmlidXRlIGlzIHRvIGJlIHNldFxuICAgKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IG5hbWUgICBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIHNldFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmFsdWUgICAgICAgICBUaGUgbmV3IHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAgICogQHBhcmFtIHtzdHJpbmc9fSBucyAgICAgICAgICAgVGhlIG5hbWVzcGFjZSB0byB1c2UgZm9yIHRoZSBhdHRyaWJ1dGVcbiAgICovXG4gIHNldEF0dHJpYnV0ZShub2RlOiBOLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIG5zPzogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICAgICBUaGUgSFRNTCBlbGVtZW50IHdob3NlIGF0dHJpYnV0ZXMgYXJlIHRvIGJlIHNldFxuICAgKiBAcGFyYW0ge09wdGlvbkxpc3R9IGRlZiAgIFRoZSBhdHRyaWJ1dGVzIHRvIHNldCBvbiB0aGF0IG5vZGVcbiAgICovXG4gIHNldEF0dHJpYnV0ZXMobm9kZTogTiwgZGVmOiBPcHRpb25MaXN0KTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICBUaGUgSFRNTCBub2RlIHdob3NlIGF0dHJpYnV0ZSBpcyB0byBiZSBvYnRhaW5lZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gZ2V0XG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgVGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBhdHRyaWJ1dGUgb2YgdGhlIGdpdmVuIG5vZGVcbiAgICovXG4gIGdldEF0dHJpYnV0ZShub2RlOiBOLCBuYW1lOiBzdHJpbmcpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgVGhlIEhUTUwgbm9kZSB3aG9zZSBhdHRyaWJ1dGUgaXMgdG8gYmUgcmVtb3ZlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gcmVtb3ZlXG4gICAqL1xuICByZW1vdmVBdHRyaWJ1dGUobm9kZTogTiwgbmFtZTogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICBUaGUgSFRNTCBub2RlIHdob3NlIGF0dHJpYnV0ZSBpcyB0byBiZSB0ZXN0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIHRlc3RcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICAgICBUcnVlIG9mIHRoZSBub2RlIGhhcyB0aGUgZ2l2ZW4gYXR0cmlidXRlIGRlZmluZWRcbiAgICovXG4gIGhhc0F0dHJpYnV0ZShub2RlOiBOLCBuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICAgICAgICAgIFRoZSBIVE1MIG5vZGUgd2hvc2UgYXR0cmlidXRlcyBhcmUgdG8gYmUgcmV0dXJuZWRcbiAgICogQHJldHVybiB7QXR0cmlidXRlRGF0YVtdfSBUaGUgbGlzdCBvZiBhdHRyaWJ1dGVzXG4gICAqL1xuICBhbGxBdHRyaWJ1dGVzKG5vZGU6IE4pOiBBdHRyaWJ1dGVEYXRhW107XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgVGhlIEhUTUwgbm9kZSB3aG9zZSBjbGFzcyBpcyB0byBiZSBhdWdtZW50ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgY2xhc3MgdG8gYmUgYWRkZWRcbiAgICovXG4gIGFkZENsYXNzKG5vZGU6IE4sIG5hbWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgVGhlIEhUTUwgbm9kZSB3aG9zZSBjbGFzcyBpcyB0byBiZSBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIGNsYXNzIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZUNsYXNzKG5vZGU6IE4sIG5hbWU6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgVGhlIEhUTUwgbm9kZSB3aG9zZSBjbGFzcyBpcyB0byBiZSB0ZXN0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgY2xhc3MgdG8gdGVzdFxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgICAgIFRydWUgaWYgdGhlIG5vZGUgaGFzIHRoZSBnaXZlbiBjbGFzc1xuICAgKi9cbiAgaGFzQ2xhc3Mobm9kZTogTiwgbmFtZTogc3RyaW5nKTogYm9vbGVhbjtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICBUaGUgSFRNTCBub2RlIHdob3NlIGNsYXNzIGxpc3QgaXMgbmVlZGVkXG4gICAqIEByZXR1cm4ge3N0cmluZ1tdfSAgICAgQW4gYXJyYXkgb2YgdGhlIGNsYXNzIG5hbWVzIGZvciB0aGlzIG5vZGVcbiAgICovXG4gIGFsbENsYXNzZXMobm9kZTogTik6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICAgICAgIFRoZSBIVE1MIG5vZGUgd2hvc2Ugc3R5bGUgaXMgdG8gYmUgY2hhbmdlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBzdHlsZSB0byBiZSBzZXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlICBUaGUgbmV3IHZhbHVlIG9mIHRoZSBzdHlsZVxuICAgKi9cbiAgc2V0U3R5bGUobm9kZTogTiwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICBUaGUgSFRNTCBub2RlIHdob3NlIHN0eWxlIGlzIHRvIGJlIG9idGFpbmVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgVGhlIHN0eWxlIHRvIGJlIG9idGFpbmVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgVGhlIHZhbHVlIG9mIHRoZSBzdHlsZVxuICAgKi9cbiAgZ2V0U3R5bGUobm9kZTogTiwgbmFtZTogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICAgICAgIFRoZSBIVE1MIG5vZGUgd2hvc2Ugc3R5bGVzIGFyZSB0byBiZSByZXR1cm5lZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgIFRoZSBjc3NUZXh0IGZvciB0aGUgc3R5bGVzXG4gICAqL1xuICBhbGxTdHlsZXMobm9kZTogTik6IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICAgICBUaGUgc3R5bGVzaGVldCBub2RlIHdoZXJlIHRoZSBydWxlIHdpbGwgYmUgYWRkZWRcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcnVsZXMgICBUaGUgcnVsZSB0byBhZGQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3R5bGVzaGVldFxuICAgKi9cbiAgaW5zZXJ0UnVsZXMobm9kZTogTiwgcnVsZXM6IHN0cmluZ1tdKTogdm9pZDtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICBUaGUgSFRNTCBub2RlIHdob3NlIGZvbnQgc2l6ZSBpcyB0byBiZSBkZXRlcm1pbmVkXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgVGhlIGZvbnQgc2l6ZSAoaW4gcGl4ZWxzKSBvZiB0aGUgbm9kZVxuICAgKi9cbiAgZm9udFNpemUobm9kZTogTik6IG51bWJlcjtcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICBUaGUgSFRNTCBub2RlIHdob3NlIGZvbnQgZmFtaWx5IGlzIHRvIGJlIGRldGVybWluZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSAgICAgICBUaGUgZm9udCBmYW1pbHlcbiAgICovXG4gIGZvbnRGYW1pbHkobm9kZTogTik6IHN0cmluZztcblxuICAvKipcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICAgICAgVGhlIEhUTUwgbm9kZSB3aG9zZSBkaW1lbnNpb25zIGFyZSB0byBiZSBkZXRlcm1pbmVkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBlbSAgICAgICAgIFRoZSBudW1iZXIgb2YgcGl4ZWxzIGluIGFuIGVtXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9jYWwgICAgIFRydWUgaWYgbG9jYWwgY29vcmRpbmF0ZXMgYXJlIHRvIGJlIHVzZWQgaW4gU1ZHIGVsZW1lbnRzXG4gICAqIEByZXR1cm4ge1tudW1iZXIsIG51bWJlcl19IFRoZSB3aWR0aCBhbmQgaGVpZ2h0IChpbiBlbXMpIG9mIHRoZSBlbGVtZW50XG4gICAqL1xuICBub2RlU2l6ZShub2RlOiBOLCBlbT86IG51bWJlciwgbG9jYWw/OiBib29sZWFuKTogW251bWJlciwgbnVtYmVyXTtcblxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgICAgICAgICAgICBUaGUgSFRNTCBub2RlIHdob3NlIEJCb3ggaXMgdG8gYmUgZGV0ZXJtaW5lZFxuICAgKiBAcmV0dXJuIHtQYWdlQkJveH0gICAgICAgICBCQm94IGFzIHtsZWZ0LCByaWdodCwgdG9wLCBib3R0b219IHBvc2l0aW9uIG9uIHRoZSBwYWdlIChpbiBwaXhlbHMpXG4gICAqL1xuICBub2RlQkJveChub2RlOiBOKTogUGFnZUJCb3g7XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEFic3RyYWN0IERPTUFkYXB0b3IgY2xhc3MgZm9yIGNyZWF0aW5nIEhUTUwgZWxlbWVudHNcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdERPTUFkYXB0b3I8TiwgVCwgRD4gaW1wbGVtZW50cyBET01BZGFwdG9yPE4sIFQsIEQ+IHtcblxuICAvKipcbiAgICogVGhlIGRvY3VtZW50IGluIHdoaWNoIHRoZSBIVE1MIG5vZGVzIHdpbGwgYmUgY3JlYXRlZFxuICAgKi9cbiAgcHVibGljIGRvY3VtZW50OiBEO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0R9IGRvY3VtZW50ICBUaGUgZG9jdW1lbnQgaW4gd2hpY2ggdGhlIG5vZGVzIHdpbGwgYmUgY3JlYXRlZFxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKGRvY3VtZW50OiBEID0gbnVsbCkge1xuICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwYXJzZSh0ZXh0OiBzdHJpbmcsIGZvcm1hdD86IHN0cmluZyk6IEQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIG5vZGUoa2luZDogc3RyaW5nLCBkZWY6IE9wdGlvbkxpc3QgPSB7fSwgY2hpbGRyZW46IChOIHwgVClbXSA9IFtdLCBucz86IHN0cmluZykge1xuICAgIGNvbnN0IG5vZGUgPSB0aGlzLmNyZWF0ZShraW5kLCBucyk7XG4gICAgdGhpcy5zZXRBdHRyaWJ1dGVzKG5vZGUsIGRlZik7XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBjaGlsZHJlbikge1xuICAgICAgdGhpcy5hcHBlbmQobm9kZSwgY2hpbGQpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZSBhcyBOO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBraW5kICBUaGUgdHlwZSBvZiB0aGUgbm9kZSB0byBjcmVhdGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5zICAgIFRoZSBvcHRpb25hbCBuYW1lc3BhY2UgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSBub2RlXG4gICAqIEByZXR1cm4ge059ICAgICAgICAgICBUaGUgY3JlYXRlZCBub2RlXG4gICAqL1xuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlKGtpbmQ6IHN0cmluZywgbnM/OiBzdHJpbmcpOiBOO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0ZXh0KHRleHQ6IHN0cmluZyk6IFQ7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgICAgVGhlIEhUTUwgZWxlbWVudCB3aG9zZSBhdHRyaWJ1dGVzIGFyZSB0byBiZSBzZXRcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBkZWYgICBUaGUgYXR0cmlidXRlcyB0byBzZXQgb24gdGhhdCBub2RlXG4gICAqL1xuICBwdWJsaWMgc2V0QXR0cmlidXRlcyhub2RlOiBOLCBkZWY6IE9wdGlvbkxpc3QpIHtcbiAgICBpZiAoZGVmLnN0eWxlICYmIHR5cGVvZihkZWYuc3R5bGUpICE9PSAnc3RyaW5nJykge1xuICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGRlZi5zdHlsZSkpIHtcbiAgICAgICAgdGhpcy5zZXRTdHlsZShub2RlLCBrZXkucmVwbGFjZSgvLShbYS16XSkvZywgKF9tLCBjKSA9PiBjLnRvVXBwZXJDYXNlKCkpLCBkZWYuc3R5bGVba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZWYucHJvcGVydGllcykge1xuICAgICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGRlZi5wcm9wZXJ0aWVzKSkge1xuICAgICAgICAobm9kZSBhcyBPcHRpb25MaXN0KVtrZXldID0gZGVmLnByb3BlcnRpZXNba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChsZXQga2V5IG9mIE9iamVjdC5rZXlzKGRlZikpIHtcbiAgICAgIGlmICgoa2V5ICE9PSAnc3R5bGUnIHx8IHR5cGVvZihkZWYuc3R5bGUpID09PSAnc3RyaW5nJykgJiYga2V5ICE9PSAncHJvcGVydGllcycpIHtcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUobm9kZSwga2V5LCBkZWZba2V5XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGhlYWQoZG9jOiBEKTogTjtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYm9keShkb2M6IEQpOiBOO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByb290KGRvYzogRCk6IE47XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGRvY3R5cGUoZG9jOiBEKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB0YWdzKG5vZGU6IE4sIG5hbWU6IHN0cmluZywgbnM/OiBzdHJpbmcpOiBOW107XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGdldEVsZW1lbnRzKG5vZGVzOiAoc3RyaW5nIHwgTiB8IE5bXSlbXSwgZG9jdW1lbnQ6IEQpOiBOW107XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNvbnRhaW5zKGNvbnRhaW5lcjogTiwgbm9kZTogTiB8IFQpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwYXJlbnQobm9kZTogTiB8IFQpOiBOO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhcHBlbmQobm9kZTogTiwgY2hpbGQ6IE4gfCBUKTogTiB8IFQ7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGluc2VydChuY2hpbGQ6IE4gfCBULCBvY2hpbGQ6IE4gfCBUKTogdm9pZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVtb3ZlKGNoaWxkOiBOIHwgVCk6IE4gfCBUO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlKG5ub2RlOiBOIHwgVCwgb25vZGU6IE4gfCBUKSB7XG4gICAgdGhpcy5pbnNlcnQobm5vZGUsIG9ub2RlKTtcbiAgICB0aGlzLnJlbW92ZShvbm9kZSk7XG4gICAgcmV0dXJuIG9ub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGNsb25lKG5vZGU6IE4pOiAgTjtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc3BsaXQobm9kZTogVCwgbjogbnVtYmVyKTogVDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgbmV4dChub2RlOiBOIHwgVCk6IE4gfCBUO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBwcmV2aW91cyhub2RlOiBOIHwgVCk6IE4gfCBUO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBmaXJzdENoaWxkKG5vZGU6IE4pOiBOIHwgVDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgbGFzdENoaWxkKG5vZGU6IE4pOiBOIHwgVDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgY2hpbGROb2Rlcyhub2RlOiBOKTogKE4gfCBUKVtdO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjaGlsZE5vZGUobm9kZTogTiwgaTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hpbGROb2Rlcyhub2RlKVtpXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBraW5kKG5vZGU6IE4gfCBUKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCB2YWx1ZShub2RlOiBOIHwgVCk6IHN0cmluZztcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgdGV4dENvbnRlbnQobm9kZTogTik6IHN0cmluZztcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW5uZXJIVE1MKG5vZGU6IE4pOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IG91dGVySFRNTChub2RlOiBOKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBzZXJpYWxpemVYTUwobm9kZTogTik6IHN0cmluZztcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2V0QXR0cmlidXRlKG5vZGU6IE4sIG5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbnM/OiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBnZXRBdHRyaWJ1dGUobm9kZTogTiwgbmFtZTogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZW1vdmVBdHRyaWJ1dGUobm9kZTogTiwgbmFtZTogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaGFzQXR0cmlidXRlKG5vZGU6IE4sIG5hbWU6IHN0cmluZyk6IGJvb2xlYW47XG5cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYWxsQXR0cmlidXRlcyhub2RlOiBOKTogQXR0cmlidXRlRGF0YVtdO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRDbGFzcyhub2RlOiBOLCBuYW1lOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZW1vdmVDbGFzcyhub2RlOiBOLCBuYW1lOiBzdHJpbmcpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBoYXNDbGFzcyhub2RlOiBOLCBuYW1lOiBzdHJpbmcpOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhbGxDbGFzc2VzKG5vZGU6IE4pIHtcbiAgICBjb25zdCBjbGFzc2VzID0gdGhpcy5nZXRBdHRyaWJ1dGUobm9kZSwgJ2NsYXNzJyk7XG4gICAgcmV0dXJuICghY2xhc3NlcyA/IFtdIGFzIHN0cmluZ1tdIDpcbiAgICAgICAgICAgIGNsYXNzZXMucmVwbGFjZSgvICArL2csICcgJykucmVwbGFjZSgvXiAvLCAnJykucmVwbGFjZSgvICQvLCAnJykuc3BsaXQoLyAvKSk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgc2V0U3R5bGUobm9kZTogTiwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0U3R5bGUobm9kZTogTiwgbmFtZTogc3RyaW5nKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBhbGxTdHlsZXMobm9kZTogTik6IHN0cmluZztcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgaW5zZXJ0UnVsZXMobm9kZTogTiwgcnVsZXM6IHN0cmluZ1tdKTogdm9pZDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZm9udFNpemUobm9kZTogTik6IG51bWJlcjtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZm9udEZhbWlseShub2RlOiBOKTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBub2RlU2l6ZShub2RlOiBOLCBlbT86IG51bWJlciwgbG9jYWw/OiBib29sZWFuKTogW251bWJlciwgbnVtYmVyXTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3Qgbm9kZUJCb3gobm9kZTogTik6IFBhZ2VCQm94O1xuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDIyLTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgYSBtaXhpbiBmb3Igbm9kZS1iYXNlZCBhZGFwdG9ycyB0aGF0IG92ZXJyaWRlc1xuICogICAgICAgICAgICAgICAgdGhlIG1ldGhvZHMgdGhhdCBvYnRhaW4gRE9NIG5vZGUgc2l6ZXMsIHdoZW4gdGhvc2UgYXJlbid0XG4gKiAgICAgICAgICAgICAgICBhdmFpbGFibGUgZnJvbSB0aGUgRE9NIGl0c2VsZi5cbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7RE9NQWRhcHRvcn0gZnJvbSAnLi4vY29yZS9ET01BZGFwdG9yLmpzJztcbmltcG9ydCB7dXNlck9wdGlvbnMsIGRlZmF1bHRPcHRpb25zLCBPcHRpb25MaXN0fSBmcm9tICcuLi91dGlsL09wdGlvbnMuanMnO1xuXG4vKipcbiAqIEEgY29uc3RydWN0b3IgZm9yIGEgZ2l2ZW4gY2xhc3NcbiAqXG4gKiBAdGVtcGxhdGUgVCAgIFRoZSBjbGFzcyB0byBjb25zdHJ1Y3RcbiAqL1xuZXhwb3J0IHR5cGUgQ29uc3RydWN0b3I8VD4gPSAobmV3KC4uLmFyZ3M6IGFueVtdKSA9PiBUKTtcblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBhbiBBZGFwdG9yIGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIEFkYXB0b3JDb25zdHJ1Y3RvcjxOLCBULCBEPiA9IENvbnN0cnVjdG9yPERPTUFkYXB0b3I8TiwgVCwgRD4+O1xuXG4vKipcbiAqIFRoZSBvcHRpb25zIHRvIHRoZSBOb2RlTWl4aW5cbiAqL1xuZXhwb3J0IGNvbnN0IE5vZGVNaXhpbk9wdGlvbnM6IE9wdGlvbkxpc3QgPSB7XG4gIGJhZENTUzogdHJ1ZSwgICAgIC8vIGdldENvbXB1dGVkU3R5bGVzKCkgaXMgbm90IGltcGxlbWVudGVkIGluIHRoZSBET01cbiAgYmFkU2l6ZXM6IHRydWUsICAgLy8gZWxlbWVudCBzaXplcyAoZS5nLiwgQ2xpZW50V2lkdGgsIGV0Yy4pIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIERPTVxufTtcblxuLyoqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBOb2RlTWl4aW48TiwgVCwgRCwgQSBleHRlbmRzIEFkYXB0b3JDb25zdHJ1Y3RvcjxOLCBULCBEPj4oXG4gIEJhc2U6IEEsXG4gIG9wdGlvbnM6IHR5cGVvZiBOb2RlTWl4aW5PcHRpb25zID0ge31cbik6IEEge1xuXG4gIG9wdGlvbnMgPSB1c2VyT3B0aW9ucyhkZWZhdWx0T3B0aW9ucyh7fSwgTm9kZU1peGluT3B0aW9ucyksIG9wdGlvbnMpO1xuXG4gIHJldHVybiBjbGFzcyBOb2RlQWRhcHRvciBleHRlbmRzIEJhc2Uge1xuXG4gICAgLyoqXG4gICAgICogVGhlIGRlZmF1bHQgb3B0aW9uc1xuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgT1BUSU9OUzogT3B0aW9uTGlzdCA9IHtcbiAgICAgIC4uLihvcHRpb25zLmJhZENTUyA/IHtcbiAgICAgICAgZm9udFNpemU6IDE2LCAgICAgICAgICAvLyBXZSBjYW4ndCBjb21wdXRlIHRoZSBmb250IHNpemUsIHNvIGFsd2F5cyB1c2UgdGhpc1xuICAgICAgICBmb250RmFtaWx5OiAnVGltZXMnLCAgIC8vIFdlIGNhbid0IGNvbXB1dGUgdGhlIGZvbnQgZmFtaWx5LCBzbyBhbHdheXMgdXNlIHRoaXNcbiAgICAgIH0gOiB7fSksXG4gICAgICAuLi4ob3B0aW9ucy5iYWRTaXplcyA/IHtcbiAgICAgICAgY2prQ2hhcldpZHRoOiAxLCAgICAgICAvLyBXaWR0aCAoaW4gZW0gdW5pdHMpIG9mIGZ1bGwgd2lkdGggY2hhcmFjdGVyc1xuICAgICAgICB1bmtub3duQ2hhcldpZHRoOiAuNiwgIC8vIFdpZHRoIChpbiBlbSB1bml0cykgb2YgdW5rbm93biAobm9uLWZ1bGwtd2lkdGgpIGNoYXJhY3RlcnNcbiAgICAgICAgdW5rbm93bkNoYXJIZWlnaHQ6IC44LCAvLyBIZWlnaHQgKGluIGVtIHVuaXRzKSBvZiB1bmtub3duIGNoYXJhY3RlcnNcbiAgICAgIH0gOiB7fSlcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogUGF0dGVybiB0byBpZGVudGlmeSBDSksgKGkuZS4sIGZ1bGwtd2lkdGgpIGNoYXJhY3RlcnNcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGljIGNqa1BhdHRlcm4gPSBuZXcgUmVnRXhwKFtcbiAgICAgICdbJyxcbiAgICAgICdcXHUxMTAwLVxcdTExNUYnLCAvLyBIYW5ndWwgSmFtb1xuICAgICAgJ1xcdTIzMjlcXHUyMzJBJywgIC8vIExFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVCwgUklHSFQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVFxuICAgICAgJ1xcdTJFODAtXFx1MzAzRScsIC8vIENKSyBSYWRpY2FscyBTdXBwbGVtZW50IC4uLiBDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb25cbiAgICAgICdcXHUzMDQwLVxcdTMyNDcnLCAvLyBIaXJhZ2FuYSAuLi4gRW5jbG9zZWQgQ0pLIExldHRlcnMgYW5kIE1vbnRoc1xuICAgICAgJ1xcdTMyNTAtXFx1NERCRicsIC8vIEVuY2xvc2VkIENKSyBMZXR0ZXJzIGFuZCBNb250aHMgLi4uIENKSyBVbmlmaWVkIElkZW9ncmFwaHMgRXh0ZW5zaW9uIEFcbiAgICAgICdcXHU0RTAwLVxcdUE0QzYnLCAvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIC4uLiBZaSBSYWRpY2Fsc1xuICAgICAgJ1xcdUE5NjAtXFx1QTk3QycsIC8vIEhhbmd1bCBKYW1vIEV4dGVuZGVkLUFcbiAgICAgICdcXHVBQzAwLVxcdUQ3QTMnLCAvLyBIYW5ndWwgU3lsbGFibGVzXG4gICAgICAnXFx1RjkwMC1cXHVGQUZGJywgLy8gQ0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBoc1xuICAgICAgJ1xcdUZFMTAtXFx1RkUxOScsIC8vIFZlcnRpY2FsIEZvcm1zXG4gICAgICAnXFx1RkUzMC1cXHVGRTZCJywgLy8gQ0pLIENvbXBhdGliaWxpdHkgRm9ybXMgLi4uIFNtYWxsIEZvcm0gVmFyaWFudHNcbiAgICAgICdcXHVGRjAxLVxcdUZGNjBcXHVGRkUwLVxcdUZGRTYnLCAvLyBIYWxmd2lkdGggYW5kIEZ1bGx3aWR0aCBGb3Jtc1xuICAgICAgJ1xcdXsxQjAwMH0tXFx1ezFCMDAxfScsIC8vIEthbmEgU3VwcGxlbWVudFxuICAgICAgJ1xcdXsxRjIwMH0tXFx1ezFGMjUxfScsIC8vIEVuY2xvc2VkIElkZW9ncmFwaGljIFN1cHBsZW1lbnRcbiAgICAgICdcXHV7MjAwMDB9LVxcdXszRkZGRH0nLCAvLyBDSksgVW5pZmllZCBJZGVvZ3JhcGhzIEV4dGVuc2lvbiBCIC4uLiBUZXJ0aWFyeSBJZGVvZ3JhcGhpYyBQbGFuZVxuICAgICAgJ10nXG4gICAgXS5qb2luKCcnKSwgJ2d1Jyk7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgb3B0aW9ucyBmb3IgdGhlIGluc3RhbmNlXG4gICAgICovXG4gICAgcHVibGljIG9wdGlvbnM6IE9wdGlvbkxpc3Q7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge2FueX0gd2luZG93ICAgICAgICAgIFRoZSB3aW5kb3cgdG8gd29yayB3aXRoXG4gICAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICBUaGUgb3B0aW9ucyBmb3IgdGhlIGFkYXB0b3JcbiAgICAgKiBAY29uc3RydWN0b3JcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvciguLi5hcmdzOiBhbnlbXSkge1xuICAgICAgc3VwZXIoYXJnc1swXSk7XG4gICAgICBsZXQgQ0xBU1MgPSB0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBOb2RlQWRhcHRvcjtcbiAgICAgIHRoaXMub3B0aW9ucyA9IHVzZXJPcHRpb25zKGRlZmF1bHRPcHRpb25zKHt9LCBDTEFTUy5PUFRJT05TKSwgYXJnc1sxXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRm9yIERPTXMgdGhhdCBkb24ndCBoYW5kbGUgQ1NTIHdlbGwsIHVzZSB0aGUgZm9udCBzaXplIGZyb20gdGhlIG9wdGlvbnNcbiAgICAgKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBmb250U2l6ZShub2RlOiBOKSB7XG4gICAgICByZXR1cm4gKG9wdGlvbnMuYmFkQ1NTID8gdGhpcy5vcHRpb25zLmZvbnRTaXplIDogc3VwZXIuZm9udFNpemUobm9kZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvciBET01zIHRoYXQgZG9uJ3QgaGFuZGxlIENTUyB3ZWxsLCB1c2UgdGhlIGZvbnQgZmFtaWx5IGZyb20gdGhlIG9wdGlvbnNcbiAgICAgKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBmb250RmFtaWx5KG5vZGU6IE4pIHtcbiAgICAgIHJldHVybiAob3B0aW9ucy5iYWRDU1MgPyB0aGlzLm9wdGlvbnMuZm9udEZhbWlseSA6IHN1cGVyLmZvbnRGYW1pbHkobm9kZSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBub2RlU2l6ZShub2RlOiBOLCBlbTogbnVtYmVyID0gMSwgbG9jYWw6IGJvb2xlYW4gPSBudWxsKSB7XG4gICAgICBpZiAoIW9wdGlvbnMuYmFkU2l6ZXMpIHtcbiAgICAgICAgcmV0dXJuIHN1cGVyLm5vZGVTaXplKG5vZGUsIGVtLCBsb2NhbCk7XG4gICAgICB9XG4gICAgICBjb25zdCB0ZXh0ID0gdGhpcy50ZXh0Q29udGVudChub2RlKTtcbiAgICAgIGNvbnN0IG5vbiA9IEFycmF5LmZyb20odGV4dC5yZXBsYWNlKE5vZGVBZGFwdG9yLmNqa1BhdHRlcm4sICcnKSkubGVuZ3RoOyAgLy8gIyBvZiBub24tQ0pLIGNoYXJzXG4gICAgICBjb25zdCBDSksgPSBBcnJheS5mcm9tKHRleHQpLmxlbmd0aCAtIG5vbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICMgb2YgY2prIGNoYXJzXG4gICAgICByZXR1cm4gW1xuICAgICAgICBDSksgKiB0aGlzLm9wdGlvbnMuY2prQ2hhcldpZHRoICsgbm9uICogdGhpcy5vcHRpb25zLnVua25vd25DaGFyV2lkdGgsXG4gICAgICAgIHRoaXMub3B0aW9ucy51bmtub3duQ2hhckhlaWdodFxuICAgICAgXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBub2RlQkJveChub2RlOiBOKSB7XG4gICAgICByZXR1cm4gKG9wdGlvbnMuYmFkU2l6ZXMgPyB7bGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiAwfSA6IHN1cGVyLm5vZGVCQm94KG5vZGUpKTtcbiAgICB9XG5cbiAgfTtcblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIGEgbGlnaHR3ZWlnaHQgSFRNTCBFbGVtZW50IHJlcGxhY2VtZW50XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge09wdGlvbkxpc3R9IGZyb20gJy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5pbXBvcnQge1N0eWxlc30gZnJvbSAnLi4vLi4vdXRpbC9TdHlsZXMuanMnO1xuaW1wb3J0IHtMaXRlVGV4dH0gZnJvbSAnLi9UZXh0LmpzJztcblxuLyoqXG4gKiBUeXBlIGZvciBhdHRyaWJ1dGUgbGlzdHNcbiAqL1xuZXhwb3J0IHR5cGUgTGl0ZUF0dHJpYnV0ZUxpc3QgPSBPcHRpb25MaXN0O1xuXG4vKipcbiAqIFR5cGUgZm9yIGdlbmVyaWMgbm9kZXMgaW4gTGl0ZUFkYXB0b3JcbiAqL1xuZXhwb3J0IHR5cGUgTGl0ZU5vZGUgPSBMaXRlRWxlbWVudCB8IExpdGVUZXh0O1xuXG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEltcGxlbWVudHMgYSBsaWdodHdlaWdodCBIVE1MIGVsZW1lbnQgcmVwbGFjZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIExpdGVFbGVtZW50IHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGVsZW1lbnQgKHRhZyBuYW1lKVxuICAgKi9cbiAgcHVibGljIGtpbmQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVsZW1lbnQncyBhdHRyaWJ1dGUgbGlzdFxuICAgKi9cbiAgcHVibGljIGF0dHJpYnV0ZXM6IExpdGVBdHRyaWJ1dGVMaXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgZWxlbWVudCdzIGNoaWxkcmVuXG4gICAqL1xuICBwdWJsaWMgY2hpbGRyZW46IExpdGVOb2RlW107XG5cbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50J3MgcGFyZW50XG4gICAqL1xuICBwdWJsaWMgcGFyZW50OiBMaXRlRWxlbWVudDtcblxuICAvKipcbiAgICogVGhlIHN0eWxlcyBmb3IgdGhlIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBzdHlsZXM6IFN0eWxlcztcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgIFRoZSB0eXBlIG9mIG5vZGUgdG8gY3JlYXRlXG4gICAqIEBwYXJhbSB7TGl0ZUF0dHJpYnV0ZUxpc3R9IGF0dHJpYnV0ZXMgIFRoZSBsaXN0IG9mIGF0dHJpYnV0ZXMgdG8gc2V0IChpZiBhbnkpXG4gICAqIEBwYXJhbSB7TGl0ZU5vZGVbXX0gY2hpbGRyZW4gIFRoZSBjaGlsZHJlbiBmb3IgdGhlIG5vZGUgKGlmIGFueSlcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihraW5kOiBzdHJpbmcsIGF0dHJpYnV0ZXM6IExpdGVBdHRyaWJ1dGVMaXN0ID0ge30sIGNoaWxkcmVuOiBMaXRlTm9kZVtdID0gW10pIHtcbiAgICB0aGlzLmtpbmQgPSBraW5kO1xuICAgIHRoaXMuYXR0cmlidXRlcyA9IHsuLi5hdHRyaWJ1dGVzfTtcbiAgICB0aGlzLmNoaWxkcmVuID0gWy4uLmNoaWxkcmVuXTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLnBhcmVudCA9IHRoaXM7XG4gICAgfVxuICAgIHRoaXMuc3R5bGVzID0gbnVsbDtcbiAgfVxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIGEgbGlnaHR3ZWlnaHQgRE9NIGFkYXB0b3JcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7TGl0ZUVsZW1lbnR9IGZyb20gJy4vRWxlbWVudC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEltcGxlbWVudHMgYSBsaWdodHdlaWdodCBEb2N1bWVudCByZXBsYWNlbWVudFxuICovXG5leHBvcnQgY2xhc3MgTGl0ZURvY3VtZW50IHtcbiAgLyoqXG4gICAqIFRoZSBkb2N1bWVudCdzIDxodG1sPiBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgcm9vdDogTGl0ZUVsZW1lbnQ7XG4gIC8qKlxuICAgKiBUaGUgZG9jdW1lbnQncyA8aGVhZD4gZWxlbWVudFxuICAgKi9cbiAgcHVibGljIGhlYWQ6IExpdGVFbGVtZW50O1xuICAvKipcbiAgICogVGhlIGRvY3VtZW50J3MgPGJvZHk+IGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBib2R5OiBMaXRlRWxlbWVudDtcblxuICAvKipcbiAgICogdGhlIERPQ1RZUEUgY29tbWVudFxuICAgKi9cbiAgcHVibGljIHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGtpbmQgaXMgYWx3YXlzICNkb2N1bWVudFxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnI2RvY3VtZW50JztcbiAgfVxuXG4gIC8qKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMucm9vdCA9IG5ldyBMaXRlRWxlbWVudCgnaHRtbCcsIHt9LCBbXG4gICAgICB0aGlzLmhlYWQgPSBuZXcgTGl0ZUVsZW1lbnQoJ2hlYWQnKSxcbiAgICAgIHRoaXMuYm9keSA9IG5ldyBMaXRlRWxlbWVudCgnYm9keScpXG4gICAgXSk7XG4gICAgdGhpcy50eXBlID0gJyc7XG4gIH1cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyBhIGxpZ2h0d2VpZ2h0IFRleHQgZWxlbWVudCByZXBsYWNlbWVudFxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtMaXRlRWxlbWVudH0gZnJvbSAnLi9FbGVtZW50LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogSW1wbGVtZW50cyBhIGxpZ2h0d2VpZ2h0IFRleHQgbm9kZSByZXBsYWNlbWVudFxuICovXG5leHBvcnQgY2xhc3MgTGl0ZVRleHQge1xuICAvKipcbiAgICogVGhlIHRleHQgc3RvcmVkIGluIHRoZSBub2RlXG4gICAqL1xuICBwdWJsaWMgdmFsdWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcmVudCBob2xkaW5nIHRoaXMgdGV4dFxuICAgKi9cbiAgcHVibGljIHBhcmVudDogTGl0ZUVsZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIG5vZGUgaXMgI3RleHRcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJyN0ZXh0JztcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgVGhlIHRleHQgZm9yIHRoZSBub2RlXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IodGV4dDogc3RyaW5nID0gJycpIHtcbiAgICB0aGlzLnZhbHVlID0gdGV4dDtcbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBJbXBsZW1lbnRzIGEgbGlnaHR3ZWlnaHQgQ29tbWVudCBub2RlIHJlcGxhY2VtZW50XG4gKi9cbmV4cG9ydCBjbGFzcyBMaXRlQ29tbWVudCBleHRlbmRzIExpdGVUZXh0IHtcbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnI2NvbW1lbnQnO1xuICB9XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE4LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgYSBsaWdodHdlaWdodCBET00gYWRhcHRvclxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtMaXRlTm9kZX0gZnJvbSAnLi9FbGVtZW50LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogSW1wbGVtZW50cyBhIGxpZ2h0d2VpZ2h0IERvY3VtZW50RnJhZ21lbnQgb3IgTm9kZUxpc3QgcmVwbGFjZW1lbnRcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIExpdGVMaXN0PE4+IHtcbiAgLyoqXG4gICAqIFRoZSBub2RlcyBoZWxkIGluIHRoZSBmcmFnbWVudFxuICAgKi9cbiAgcHVibGljIG5vZGVzOiBOW10gPSBbXTtcblxuICAvKipcbiAgICogQHBhcmFtIHtOW119IGNoaWxkcmVuICBUaGUgY2hpbGRyZW4gZm9yIHRoZSBmcmFnbWVudFxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKGNoaWxkcmVuOiBOW10pIHtcbiAgICB0aGlzLm5vZGVzID0gWy4uLmNoaWxkcmVuXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IG5vZGUgIEEgbm9kZSB0byBhcHBlbmQgdG8gdGhlIGZyYWdtZW50XG4gICAqL1xuICBwdWJsaWMgYXBwZW5kKG5vZGU6IE4pIHtcbiAgICB0aGlzLm5vZGVzLnB1c2gobm9kZSk7XG4gIH1cblxuICAvKipcbiAgICogTWFrZSB0aGlzIGNsYXNzIGl0ZXJhYmxlIChzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIEFycmF5LmZyb20oKSlcbiAgICovXG4gIHB1YmxpYyBbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYXRvcjxMaXRlTm9kZT4ge1xuICAgIGxldCBpID0gMDtcbiAgICByZXR1cm4ge1xuICAgICAgLyoqXG4gICAgICAgKiBAcmV0dXJuIHtJdGVyYXRvclJlc3VsdDxMaXRlTm9kZT59XG4gICAgICAgKi9cbiAgICAgIG5leHQoKTogSXRlcmF0b3JSZXN1bHQ8TGl0ZU5vZGU+IHtcbiAgICAgICAgcmV0dXJuIChpID09PSB0aGlzLm5vZGVzLmxlbmd0aCA/XG4gICAgICAgICAgICAgICAge3ZhbHVlOiBudWxsLCBkb25lOiB0cnVlfSA6XG4gICAgICAgICAgICAgICAge3ZhbHVlOiB0aGlzLm5vZGVzW2krK10sIGRvbmU6IGZhbHNlfSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG59XG4iLCAiXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyBhIGxpZ2h0d2VpZ2h0IERPTSBhZGFwdG9yXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0F0dHJpYnV0ZURhdGF9IGZyb20gJy4uLy4uL2NvcmUvRE9NQWRhcHRvci5qcyc7XG5pbXBvcnQge01pbkRPTVBhcnNlcn0gZnJvbSAnLi4vSFRNTEFkYXB0b3IuanMnO1xuaW1wb3J0ICogYXMgRW50aXRpZXMgZnJvbSAnLi4vLi4vdXRpbC9FbnRpdGllcy5qcyc7XG5pbXBvcnQge0xpdGVEb2N1bWVudH0gZnJvbSAnLi9Eb2N1bWVudC5qcyc7XG5pbXBvcnQge0xpdGVFbGVtZW50fSBmcm9tICcuL0VsZW1lbnQuanMnO1xuaW1wb3J0IHtMaXRlVGV4dCwgTGl0ZUNvbW1lbnR9IGZyb20gJy4vVGV4dC5qcyc7XG5pbXBvcnQge0xpdGVBZGFwdG9yfSBmcm9tICcuLi9saXRlQWRhcHRvci5qcyc7XG5cbi8qKlxuICogUGF0dGVybnMgdXNlZCBpbiBwYXJzaW5nIHNlcmlhbGl6ZWQgSFRNTFxuICovXG5leHBvcnQgbmFtZXNwYWNlIFBBVFRFUk5TIHtcbiAgZXhwb3J0IGNvbnN0IFRBR05BTUUgPSAnW2Etel1bXlxcXFxzXFxcXG4+XSonO1xuICBleHBvcnQgY29uc3QgQVRUTkFNRSA9ICdbYS16XVteXFxcXHNcXFxcbj49XSonO1xuICBleHBvcnQgY29uc3QgVkFMVUUgPSAgYCg/OidbXiddKid8XCJbXlwiXSpcInxbXlxcXFxzXFxcXG5dKylgO1xuICBleHBvcnQgY29uc3QgVkFMVUVTUExJVCA9ICBgKD86JyhbXiddKiknfFwiKFteXCJdKilcInwoW15cXFxcc1xcXFxuXSspKWA7XG4gIGV4cG9ydCBjb25zdCBTUEFDRSA9ICcoPzpcXFxcc3xcXFxcbikrJztcbiAgZXhwb3J0IGNvbnN0IE9QVElPTkFMU1BBQ0UgPSAnKD86XFxcXHN8XFxcXG4pKic7XG4gIGV4cG9ydCBjb25zdCBBVFRSSUJVVEUgPSBBVFROQU1FICsgJyg/OicgKyBPUFRJT05BTFNQQUNFICsgJz0nICsgT1BUSU9OQUxTUEFDRSArIFZBTFVFICsgJyk/JztcbiAgZXhwb3J0IGNvbnN0IEFUVFJJQlVURVNQTElUID0gJygnICsgQVRUTkFNRSArICcpKD86JyArIE9QVElPTkFMU1BBQ0UgKyAnPScgKyBPUFRJT05BTFNQQUNFICsgVkFMVUVTUExJVCArICcpPyc7XG4gIGV4cG9ydCBjb25zdCBUQUcgPSAnKDwoPzonICsgVEFHTkFNRSArICcoPzonICsgU1BBQ0UgKyBBVFRSSUJVVEUgKyAnKSonXG4gICAgICAgICAgICAgICAgICAgICAgICsgT1BUSU9OQUxTUEFDRSArICcvP3wvJyArIFRBR05BTUUgKyAnfCEtLVteXSo/LS18IVteXSo/KSg/Oj58JCkpJztcbiAgZXhwb3J0IGNvbnN0IHRhZyA9IG5ldyBSZWdFeHAoVEFHLCAnaScpO1xuICBleHBvcnQgY29uc3QgYXR0ciA9IG5ldyBSZWdFeHAoQVRUUklCVVRFLCAnaScpO1xuICBleHBvcnQgY29uc3QgYXR0cnNwbGl0ID0gbmV3IFJlZ0V4cChBVFRSSUJVVEVTUExJVCwgJ2knKTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogSW1wbGVtZW50cyBhIGxpZ2h0d2VpZ2h0IERPTVBhcnNlciByZXBsYWNlbWVudFxuICogKE5vdCBwZXJmZWN0LCBidXQgaGFuZGxlcyBtb3N0IHdlbGwtZm9ybWVkIEhUTUwpXG4gKi9cbmV4cG9ydCBjbGFzcyBMaXRlUGFyc2VyIGltcGxlbWVudHMgTWluRE9NUGFyc2VyPExpdGVEb2N1bWVudD4ge1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBzZWxmLWNsb3NpbmcgdGFnc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBTRUxGX0NMT1NJTkc6IHtbbmFtZTogc3RyaW5nXTogYm9vbGVhbn0gPSB7XG4gICAgYXJlYTogdHJ1ZSxcbiAgICBiYXNlOiB0cnVlLFxuICAgIGJyOiB0cnVlLFxuICAgIGNvbDogdHJ1ZSxcbiAgICBjb21tYW5kOiB0cnVlLFxuICAgIGVtYmVkOiB0cnVlLFxuICAgIGhyOiB0cnVlLFxuICAgIGltZzogdHJ1ZSxcbiAgICBpbnB1dDogdHJ1ZSxcbiAgICBrZXlnZW46IHRydWUsXG4gICAgbGluazogdHJ1ZSxcbiAgICBtZW51aXRlbTogdHJ1ZSxcbiAgICBtZXRhOiB0cnVlLFxuICAgIHBhcmFtOiB0cnVlLFxuICAgIHNvdXJjZTogdHJ1ZSxcbiAgICB0cmFjazogdHJ1ZSxcbiAgICB3YnI6IHRydWVcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdGFncyBjaG9zZSBjb250ZW50IGlzIG5vdCBwYXJzZWQgKFBDREFUQSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgUENEQVRBOiB7W25hbWU6IHN0cmluZ106IGJvb2xlYW59ID0ge1xuICAgIG9wdGlvbjogdHJ1ZSxcbiAgICB0ZXh0YXJlYTogdHJ1ZSxcbiAgICBmaWVsZHNldDogdHJ1ZSxcbiAgICB0aXRsZTogdHJ1ZSxcbiAgICBzdHlsZTogdHJ1ZSxcbiAgICBzY3JpcHQ6IHRydWVcbiAgfTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgYXR0cmlidXRlcyB0aGF0IGRvbid0IGdldCBlbnRpdHkgdHJhbnNsYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgQ0RBVEFfQVRUUjoge1tuYW1lOiBzdHJpbmddOiBib29sZWFufSA9IHtcbiAgICBzdHlsZTogdHJ1ZSxcbiAgICBkYXRhZmxkOiB0cnVlLFxuICAgIGRhdGFzcmM6IHRydWUsXG4gICAgaHJlZjogdHJ1ZSxcbiAgICBzcmM6IHRydWUsXG4gICAgbG9uZ2Rlc2M6IHRydWUsXG4gICAgdXNlbWFwOiB0cnVlLFxuICAgIGNpdGU6IHRydWUsXG4gICAgZGF0ZXRpbWU6IHRydWUsXG4gICAgYWN0aW9uOiB0cnVlLFxuICAgIGF4aXM6IHRydWUsXG4gICAgcHJvZmlsZTogdHJ1ZSxcbiAgICBjb250ZW50OiB0cnVlLFxuICAgIHNjaGVtZTogdHJ1ZVxuICB9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBwYXJzZUZyb21TdHJpbmcodGV4dDogc3RyaW5nLCBfZm9ybWF0OiBzdHJpbmcgPSAndGV4dC9odG1sJywgYWRhcHRvcjogTGl0ZUFkYXB0b3IgPSBudWxsKSB7XG4gICAgY29uc3Qgcm9vdCA9IGFkYXB0b3IuY3JlYXRlRG9jdW1lbnQoKTtcbiAgICBsZXQgbm9kZSA9IGFkYXB0b3IuYm9keShyb290KTtcbiAgICAvL1xuICAgIC8vIFNwbGl0IHRoZSBIVE1MIGludG8gYW4gYXJyYXkgb2YgdGV4dCwgdGFnLCB0ZXh0LCB0YWcsIC4uLlxuICAgIC8vIFRoZW4gbG9vcCB0aHJvdWdoIHRoZW0gYW5kIGFkZCB0ZXh0IG5vZGVzIGFuZCBwcm9jZXNzIHRhZ3MuXG4gICAgLy9cbiAgICBsZXQgcGFydHMgPSB0ZXh0LnJlcGxhY2UoLzxcXD8uKj9cXD8+L2csICcnKS5zcGxpdChQQVRURVJOUy50YWcpO1xuICAgIHdoaWxlIChwYXJ0cy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBwYXJ0cy5zaGlmdCgpO1xuICAgICAgY29uc3QgdGFnID0gcGFydHMuc2hpZnQoKTtcbiAgICAgIGlmICh0ZXh0KSB7XG4gICAgICAgIHRoaXMuYWRkVGV4dChhZGFwdG9yLCBub2RlLCB0ZXh0KTtcbiAgICAgIH1cbiAgICAgIGlmICh0YWcgJiYgdGFnLmNoYXJBdCh0YWcubGVuZ3RoIC0gMSkgPT09ICc+Jykge1xuICAgICAgICBpZiAodGFnLmNoYXJBdCgxKSA9PT0gJyEnKSB7XG4gICAgICAgICAgdGhpcy5hZGRDb21tZW50KGFkYXB0b3IsIG5vZGUsIHRhZyk7XG4gICAgICAgIH0gZWxzZSBpZiAodGFnLmNoYXJBdCgxKSA9PT0gJy8nKSB7XG4gICAgICAgICAgbm9kZSA9IHRoaXMuY2xvc2VUYWcoYWRhcHRvciwgbm9kZSwgdGFnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlID0gdGhpcy5vcGVuVGFnKGFkYXB0b3IsIG5vZGUsIHRhZywgcGFydHMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2hlY2tEb2N1bWVudChhZGFwdG9yLCByb290KTtcbiAgICByZXR1cm4gcm9vdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0xpdGVBZGFwdG9yfSBhZGFwdG9yICBUaGUgYWRhcHRvciBmb3IgbWFuYWdpbmcgbm9kZXNcbiAgICogQHBhcmFtIHtMaXRlRWxlbWVudH0gbm9kZSAgICAgVGhlIG5vZGUgdG8gYWRkIGEgdGV4dCBlbGVtZW50IHRvXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICAgICAgICAgIFRoZSB0ZXh0IGZvciB0aGUgdGV4dCBub2RlXG4gICAqIEByZXR1cm4ge0xpdGVUZXh0fSAgICAgICAgICAgIFRoZSB0ZXh0IGVsZW1lbnRcbiAgICovXG4gIHByb3RlY3RlZCBhZGRUZXh0KGFkYXB0b3I6IExpdGVBZGFwdG9yLCBub2RlOiBMaXRlRWxlbWVudCwgdGV4dDogc3RyaW5nKTogTGl0ZVRleHQge1xuICAgIHRleHQgPSBFbnRpdGllcy50cmFuc2xhdGUodGV4dCk7XG4gICAgcmV0dXJuIGFkYXB0b3IuYXBwZW5kKG5vZGUsIGFkYXB0b3IudGV4dCh0ZXh0KSkgYXMgTGl0ZVRleHQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtMaXRlQWRhcHRvcn0gYWRhcHRvciAgVGhlIGFkYXB0b3IgZm9yIG1hbmFnaW5nIG5vZGVzXG4gICAqIEBwYXJhbSB7TGl0ZUVsZW1lbnR9IG5vZGUgICAgIFRoZSBub2RlIHRvIGFkZCBhIGNvbW1lbnQgdG9cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbW1lbnQgICAgICAgVGhlIHRleHQgZm9yIHRoZSBjb21tZW50IG5vZGVcbiAgICogQHJldHVybiB7TGl0ZUNvbW1lbnR9ICAgICAgICAgVGhlIGNvbW1lbnQgZWxlbWVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZENvbW1lbnQoYWRhcHRvcjogTGl0ZUFkYXB0b3IsIG5vZGU6IExpdGVFbGVtZW50LCBjb21tZW50OiBzdHJpbmcpOiBMaXRlQ29tbWVudCB7XG4gICAgcmV0dXJuIGFkYXB0b3IuYXBwZW5kKG5vZGUsIG5ldyBMaXRlQ29tbWVudChjb21tZW50KSkgYXMgTGl0ZUNvbW1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtMaXRlQWRhcHRvcn0gYWRhcHRvciAgVGhlIGFkYXB0b3IgZm9yIG1hbmFnaW5nIG5vZGVzXG4gICAqIEBwYXJhbSB7TGl0ZUVsZW1lbnR9IG5vZGUgICAgIFRoZSBub2RlIHRvIGNsb3NlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgICAgICAgICAgIFRoZSBjbG9zZSB0YWcgYmVpbmcgcHJvY2Vzc2VkXG4gICAqIEByZXR1cm4ge0xpdGVFbGVtZW50fSAgICAgICAgIFRoZSBmaXJzdCB1bmNsb3NlZCBwYXJlbnQgbm9kZVxuICAgKi9cbiAgcHJvdGVjdGVkIGNsb3NlVGFnKGFkYXB0b3I6IExpdGVBZGFwdG9yLCBub2RlOiBMaXRlRWxlbWVudCwgdGFnOiBzdHJpbmcpOiBMaXRlRWxlbWVudCB7XG4gICAgY29uc3Qga2luZCA9IHRhZy5zbGljZSgyLCB0YWcubGVuZ3RoIC0gMSkudG9Mb3dlckNhc2UoKTtcbiAgICB3aGlsZSAoYWRhcHRvci5wYXJlbnQobm9kZSkgJiYgYWRhcHRvci5raW5kKG5vZGUpICE9PSBraW5kKSB7XG4gICAgICBub2RlID0gYWRhcHRvci5wYXJlbnQobm9kZSk7XG4gICAgfVxuICAgIHJldHVybiBhZGFwdG9yLnBhcmVudChub2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0xpdGVBZGFwdG9yfSBhZGFwdG9yICBUaGUgYWRhcHRvciBmb3IgbWFuYWdpbmcgbm9kZXNcbiAgICogQHBhcmFtIHtMaXRlRWxlbWVudH0gbm9kZSAgICAgVGhlIHBhcmVudCBub2RlIGZvciB0aGUgdGFnXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgICAgICAgICAgIFRoZSB0YWcgYmVpbmcgcHJvY2Vzc2VkXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IHBhcnRzICAgICAgIFRoZSByZXN0IG9mIHRoZSB0ZXh0L3RhZyBhcnJheVxuICAgKiBAcmV0dXJuIHtMaXRlRWxlbWVudH0gICAgICAgICBUaGUgbm9kZSB0byB3aGljaCB0aGUgbmV4dCB0YWcgd2lsbCBiZSBhZGRlZFxuICAgKi9cbiAgcHJvdGVjdGVkIG9wZW5UYWcoYWRhcHRvcjogTGl0ZUFkYXB0b3IsIG5vZGU6IExpdGVFbGVtZW50LCB0YWc6IHN0cmluZywgcGFydHM6IHN0cmluZ1tdKTogTGl0ZUVsZW1lbnQge1xuICAgIGNvbnN0IFBDREFUQSA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBMaXRlUGFyc2VyKS5QQ0RBVEE7XG4gICAgY29uc3QgU0VMRl9DTE9TSU5HID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIExpdGVQYXJzZXIpLlNFTEZfQ0xPU0lORztcbiAgICAvL1xuICAgIC8vIEdldCB0aGUgY2hpbGQgdG8gYmUgYWRkZWQgdG8gdGhlIG5vZGVcbiAgICAvL1xuICAgIGNvbnN0IGtpbmQgPSB0YWcubWF0Y2goLzwoLio/KVtcXHNcXG4+XFwvXS8pWzFdLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgY2hpbGQgPSBhZGFwdG9yLm5vZGUoa2luZCkgYXMgTGl0ZUVsZW1lbnQ7XG4gICAgLy9cbiAgICAvLyBTcGxpdCBvdXQgdGhlIHRhZyBhdHRyaWJ1dGVzIGFzIGFuIGFycmF5IG9mIHNwYWNlLCBuYW1lLCB2YWx1ZTEsIHZhbHVlMywgdmFsdWUzLFxuICAgIC8vICAgd2hlcmUgdmFsdWUxLCB2YWx1ZTIsIGFuZCB2YWx1ZTMgYXJlIHRoZSB2YWx1ZSBvZiB0aGUgbm9kZSAob25seSBvbmUgaXMgZGVmaW5lZClcbiAgICAvLyAgIHRoYXQgY29tZSBmcm9tIG1hdGNoaW5nIHF1b3RlZCBzdHJpbmdzIHdpdGggJyAodmFsdWUxKSwgXCIgKHZhbHVlMikgb3Igbm8gcXVvdGVzICh2YWx1ZTMpLlxuICAgIC8vXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IHRhZy5yZXBsYWNlKC9ePC4qP1tcXHNcXG4+XS8sICcnKS5zcGxpdChQQVRURVJOUy5hdHRyc3BsaXQpO1xuICAgIC8vXG4gICAgLy8gSWYgdGhlIHRhZyB3YXMgY29tcGxldGUgKGl0IGVuZHMgd2l0aCA+IG9yIGhhcyBubyBhdHRyaWJ1dGVzKVxuICAgIC8vXG4gICAgaWYgKGF0dHJpYnV0ZXMucG9wKCkubWF0Y2goLz4kLykgfHwgYXR0cmlidXRlcy5sZW5ndGggPCA1KSB7XG4gICAgICB0aGlzLmFkZEF0dHJpYnV0ZXMoYWRhcHRvciwgY2hpbGQsIGF0dHJpYnV0ZXMpO1xuICAgICAgYWRhcHRvci5hcHBlbmQobm9kZSwgY2hpbGQpO1xuICAgICAgLy9cbiAgICAgIC8vIEZvciBub24tc2VsZi1jbG9zaW5nIHRhZ3MsXG4gICAgICAvLyAgIEZvciB0YWdzIHdob3NlIGNvbnRlbnRzIGlzIFBDREFUQSAobGlrZSA8c2NyaXB0PiksIGNvbGxlY3QgdGhlXG4gICAgICAvLyAgICAgY29udGVudCB1cCB1bnRpbCB0aGUgZW5kIHRhZywgYW5kIGNvbnRpbnVlIGFkZGluZyBuZWUgdGFnc1xuICAgICAgLy8gICAgIHRvIHRoZSBjdXJyZW50IHBhcmVudCBub2RlLlxuICAgICAgLy8gICBPdGhlcndpc2UsIHRoZSBjaGlsZCB0YWcgYmVjYW1lcyB0aGUgcGFyZW50IG5vZGUgdG8gd2hpY2hcbiAgICAgIC8vICAgICBuZXcgdGFncyBhcmUgYWRkZWRcbiAgICAgIC8vXG4gICAgICBpZiAoIVNFTEZfQ0xPU0lOR1traW5kXSAmJiAhdGFnLm1hdGNoKC9cXC8+JC8pKSB7XG4gICAgICAgIGlmIChQQ0RBVEFba2luZF0pIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZVBDREFUQShhZGFwdG9yLCBjaGlsZCwga2luZCwgcGFydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5vZGUgPSBjaGlsZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0xpdGVBZGFwdG9yfSBhZGFwdG9yICBUaGUgYWRhcHRvciBmb3IgbWFuYWdpbmcgbm9kZXNcbiAgICogQHBhcmFtIHtMaXRlRWxlbWVudH0gbm9kZSAgICAgVGhlIG5vZGUgZ2V0dGluZyB0aGUgYXR0cmlidXRlc1xuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhdHRyaWJ1dGVzICBUaGUgYXJyYXkgb2Ygc3BhY2UsIG5hbWUsIHZhbHVlMSwgdmFsdWUyLCB2YWx1ZTNcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGRlc2NyaWJlZCBhYm92ZS5cbiAgICovXG4gIHByb3RlY3RlZCBhZGRBdHRyaWJ1dGVzKGFkYXB0b3I6IExpdGVBZGFwdG9yLCBub2RlOiBMaXRlRWxlbWVudCwgYXR0cmlidXRlczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBDREFUQV9BVFRSID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIExpdGVQYXJzZXIpLkNEQVRBX0FUVFI7XG4gICAgd2hpbGUgKGF0dHJpYnV0ZXMubGVuZ3RoKSB7XG4gICAgICBsZXQgWyAsIG5hbWUsIHYxLCB2MiwgdjNdID0gYXR0cmlidXRlcy5zcGxpY2UoMCwgNSk7XG4gICAgICBsZXQgdmFsdWUgPSB2MSB8fCB2MiB8fCB2MyB8fCAnJztcbiAgICAgIGlmICghQ0RBVEFfQVRUUltuYW1lXSkge1xuICAgICAgICB2YWx1ZSA9IEVudGl0aWVzLnRyYW5zbGF0ZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TGl0ZUFkYXB0b3J9IGFkYXB0b3IgIFRoZSBhZGFwdG9yIGZvciBtYW5hZ2luZyBub2Rlc1xuICAgKiBAcGFyYW0ge0xpdGVFbGVtZW50fSBub2RlICAgICBUaGUgbm9kZSB3aG9zZSBQQ0RBVEEgY29udGVudCBpcyBiZWluZyBjb2xsZWN0ZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgICAgICAgICAgVGhlIHRhZyBuYW1lIGJlaW5nIGhhbmRsZWRcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gcGFydHMgICAgICAgVGhlIGFycmF5IG9mIHRleHQvdGFnIGRhdGEgZm9yIHRoZSBkb2N1bWVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVBDREFUQShhZGFwdG9yOiBMaXRlQWRhcHRvciwgbm9kZTogTGl0ZUVsZW1lbnQsIGtpbmQ6IHN0cmluZywgcGFydHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgcGNkYXRhID0gW10gYXMgc3RyaW5nW107XG4gICAgY29uc3QgZXRhZyA9ICc8LycgKyBraW5kICsgJz4nO1xuICAgIGxldCBwdGFnID0gJyc7XG4gICAgLy9cbiAgICAvLyAgTG9vayB0aHJvdWdoIHRoZSBwYXJ0cyB1bnRpbCB0aGUgZW5kIHRhZyBpcyBmb3VuZFxuICAgIC8vICAgIEFkZCB0aGUgdW5tYXRjaGVkIHRhZyBhbmQgdGhlIGZvbGxvd2luZyB0ZXh0XG4gICAgLy8gICAgYW5kIHRyeSB0aGUgbmV4dCB0YWcgdW50aWwgd2UgZmluZCB0aGUgZW5kIHRhZy5cbiAgICAvL1xuICAgIHdoaWxlIChwYXJ0cy5sZW5ndGggJiYgcHRhZyAhPT0gZXRhZykge1xuICAgICAgcGNkYXRhLnB1c2gocHRhZyk7XG4gICAgICBwY2RhdGEucHVzaChwYXJ0cy5zaGlmdCgpKTtcbiAgICAgIHB0YWcgPSBwYXJ0cy5zaGlmdCgpO1xuICAgIH1cbiAgICAvL1xuICAgIC8vICBBZGQgdGhlIGNvbGxlY3RlZCBjb250ZW50cyBhcyBhIHRleHQgbm9kZVxuICAgIC8vXG4gICAgYWRhcHRvci5hcHBlbmQobm9kZSwgYWRhcHRvci50ZXh0KHBjZGF0YS5qb2luKCcnKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyc2VkIGRvY3VtZW50IGFuZCBtb3ZlIGh0bWwsIGhlYWQsIGFuZCBib2R5XG4gICAqIHRhZ3MgaW50byB0aGUgZG9jdW1lbnQgc3RydWN0dXJlLiAgVGhhdCB3YXksIHlvdSBjYW4gcGFyc2UgZnJhZ21lbnRzIG9yXG4gICAqIGZ1bGwgZG9jdW1lbnRzIGFuZCBzdGlsbCBnZXQgYSB2YWxpZCBkb2N1bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtMaXRlQWRhcHRvcn0gYWRhcHRvciAgVGhlIGFkYXB0b3IgZm9yIG1hbmFnaW5nIG5vZGVzXG4gICAqIEBwYXJhbSB7TGl0ZURvY3VtZW50fSByb290ICAgIFRoZSBkb2N1bWVudCBiZWluZyBjaGVja2VkXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hlY2tEb2N1bWVudChhZGFwdG9yOiBMaXRlQWRhcHRvciwgcm9vdDogTGl0ZURvY3VtZW50KSB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLmdldE9ubHlDaGlsZChhZGFwdG9yLCBhZGFwdG9yLmJvZHkocm9vdCkpO1xuICAgIGlmICghbm9kZSkgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgYWRhcHRvci5jaGlsZE5vZGVzKGFkYXB0b3IuYm9keShyb290KSkpIHtcbiAgICAgIGlmIChjaGlsZCA9PT0gbm9kZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChjaGlsZCBpbnN0YW5jZW9mIExpdGVDb21tZW50ICYmIGNoaWxkLnZhbHVlLm1hdGNoKC9ePCFET0NUWVBFLykpIHtcbiAgICAgICAgcm9vdC50eXBlID0gY2hpbGQudmFsdWU7XG4gICAgICB9XG4gICAgfVxuICAgIHN3aXRjaCAoYWRhcHRvci5raW5kKG5vZGUpKSB7XG4gICAgY2FzZSAnaHRtbCc6XG4gICAgICAvL1xuICAgICAgLy8gIExvb2sgdGhyb3VnaCB0aGUgY2hpbGRyZW4gZm9yIHRoZSBoZWFkIGFuZCBib2R5XG4gICAgICAvL1xuICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgIHN3aXRjaCAoYWRhcHRvci5raW5kKGNoaWxkKSkge1xuICAgICAgICBjYXNlICdoZWFkJzpcbiAgICAgICAgICByb290LmhlYWQgPSBjaGlsZCBhcyBMaXRlRWxlbWVudDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAgICAgcm9vdC5ib2R5ID0gY2hpbGQgYXMgTGl0ZUVsZW1lbnQ7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICAvLyAgTWFrZSBzdXJlIHRoZSBlbGVtZW50cyBhcmUgbGlua2VkIGluIHByb3Blcmx5XG4gICAgICAvL1xuICAgICAgcm9vdC5yb290ID0gbm9kZTtcbiAgICAgIGFkYXB0b3IucmVtb3ZlKG5vZGUpO1xuICAgICAgaWYgKGFkYXB0b3IucGFyZW50KHJvb3QuYm9keSkgIT09IG5vZGUpIHtcbiAgICAgICAgYWRhcHRvci5hcHBlbmQobm9kZSwgcm9vdC5ib2R5KTtcbiAgICAgIH1cbiAgICAgIGlmIChhZGFwdG9yLnBhcmVudChyb290LmhlYWQpICE9PSBub2RlKSB7XG4gICAgICAgIGFkYXB0b3IuaW5zZXJ0KHJvb3QuaGVhZCwgcm9vdC5ib2R5KTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnaGVhZCc6XG4gICAgICByb290LmhlYWQgPSBhZGFwdG9yLnJlcGxhY2Uobm9kZSwgcm9vdC5oZWFkKSBhcyBMaXRlRWxlbWVudDtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnYm9keSc6XG4gICAgICByb290LmJvZHkgPSBhZGFwdG9yLnJlcGxhY2Uobm9kZSwgcm9vdC5ib2R5KSBhcyBMaXRlRWxlbWVudDtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGJvZHkgaGFzIG9ubHkgb25lIGVsZW1lbnQgY2hpbGQgKGFzIG9wcG9zZWQgdG8gY29tbWVudHMgb3IgdGV4dCBub2RlcylcbiAgICogYW5kIHJldHVybnMgdGhhdCBzb2xlIGVsZW1lbnQgKG9yIG51bGwgaWYgbm9uZSBvciBtb3JlIHRoYW4gb25lKVxuICAgKlxuICAgKiBAcGFyYW0ge0xpdGVBZGFwdG9yfSBhZGFwdG9yICBUaGUgYWRhcHRvciBmb3IgbWFuYWdpbmcgbm9kZXNcbiAgICogQHBhcmFtIHtMaXRlRWxlbWVudH0gYm9keSAgICAgVGhlIGJvZHkgZWxlbWVudCBiZWluZyBjaGVja2VkXG4gICAqIEByZXR1cm4ge0xpdGVFbGVtZW50fSAgICAgICAgIFRoZSBzb2xlIExpdGVFbGVtZW50IGNoaWxkIG9mIHRoZSBib2R5LCBvciBudWxsIGlmIG5vbmUgb3IgbW9yZSB0aGFuIG9uZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldE9ubHlDaGlsZChhZGFwdG9yOiBMaXRlQWRhcHRvciwgYm9keTogTGl0ZUVsZW1lbnQpOiBMaXRlRWxlbWVudCB7XG4gICAgbGV0IG5vZGU6IExpdGVFbGVtZW50ID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGFkYXB0b3IuY2hpbGROb2Rlcyhib2R5KSkge1xuICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgTGl0ZUVsZW1lbnQpIHtcbiAgICAgICAgaWYgKG5vZGUpIHJldHVybiBudWxsO1xuICAgICAgICBub2RlID0gY2hpbGQ7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TGl0ZUFkYXB0b3J9IGFkYXB0b3IgIFRoZSBhZGFwdG9yIGZvciBtYW5hZ2luZyBub2Rlc1xuICAgKiBAcGFyYW0ge0xpdGVFbGVtZW50fSBub2RlICAgICBUaGUgbm9kZSB0byBzZXJpYWxpemVcbiAgICogQHBhcmFtIHtib29sZWFufSB4bWwgICAgICAgICAgVHJ1ZSB3aGVuIHByb2R1Y2luZyBYTUwsIGZhbHNlIGZvciBIVE1MXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICAgIFRoZSBzZXJpYWxpemVkIGVsZW1lbnQgKGxpa2Ugb3V0ZXJIVE1MKVxuICAgKi9cbiAgcHVibGljIHNlcmlhbGl6ZShhZGFwdG9yOiBMaXRlQWRhcHRvciwgbm9kZTogTGl0ZUVsZW1lbnQsIHhtbDogYm9vbGVhbiA9IGZhbHNlKTogc3RyaW5nIHtcbiAgICBjb25zdCBTRUxGX0NMT1NJTkcgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgTGl0ZVBhcnNlcikuU0VMRl9DTE9TSU5HO1xuICAgIGNvbnN0IENEQVRBID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIExpdGVQYXJzZXIpLkNEQVRBX0FUVFI7XG4gICAgY29uc3QgdGFnID0gYWRhcHRvci5raW5kKG5vZGUpO1xuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSBhZGFwdG9yLmFsbEF0dHJpYnV0ZXMobm9kZSkubWFwKFxuICAgICAgKHg6IEF0dHJpYnV0ZURhdGEpID0+IHgubmFtZSArICc9XCInICsgKENEQVRBW3gubmFtZV0gPyB4LnZhbHVlIDogdGhpcy5wcm90ZWN0QXR0cmlidXRlKHgudmFsdWUpKSArICdcIidcbiAgICApLmpvaW4oJyAnKTtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5zZXJpYWxpemVJbm5lcihhZGFwdG9yLCBub2RlLCB4bWwpO1xuICAgIGNvbnN0IGh0bWwgPVxuICAgICAgJzwnICsgdGFnICsgKGF0dHJpYnV0ZXMgPyAnICcgKyBhdHRyaWJ1dGVzIDogJycpXG4gICAgICAgICAgKyAoKCF4bWwgfHwgY29udGVudCkgJiYgIVNFTEZfQ0xPU0lOR1t0YWddID8gYD4ke2NvbnRlbnR9PC8ke3RhZ30+YCA6IHhtbCA/ICcvPicgOiAnPicpO1xuICAgIHJldHVybiBodG1sO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TGl0ZUFkYXB0b3J9IGFkYXB0b3IgIFRoZSBhZGFwdG9yIGZvciBtYW5hZ2luZyBub2Rlc1xuICAgKiBAcGFyYW0ge0xpdGVFbGVtZW50fSBub2RlICAgICBUaGUgbm9kZSB3aG9zZSBpbm5lckhUTUwgaXMgbmVlZGVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICAgICAgIFRoZSBzZXJpYWxpemVkIGVsZW1lbnQgKGxpa2UgaW5uZXJIVE1MKVxuICAgKi9cbiAgcHVibGljIHNlcmlhbGl6ZUlubmVyKGFkYXB0b3I6IExpdGVBZGFwdG9yLCBub2RlOiBMaXRlRWxlbWVudCwgeG1sOiBib29sZWFuID0gZmFsc2UpOiBzdHJpbmcge1xuICAgIGNvbnN0IFBDREFUQSA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBMaXRlUGFyc2VyKS5QQ0RBVEE7XG4gICAgaWYgKFBDREFUQS5oYXNPd25Qcm9wZXJ0eShub2RlLmtpbmQpKSB7XG4gICAgICByZXR1cm4gYWRhcHRvci5jaGlsZE5vZGVzKG5vZGUpLm1hcCh4ID0+IGFkYXB0b3IudmFsdWUoeCkpLmpvaW4oJycpO1xuICAgIH1cbiAgICByZXR1cm4gYWRhcHRvci5jaGlsZE5vZGVzKG5vZGUpLm1hcCh4ID0+IHtcbiAgICAgIGNvbnN0IGtpbmQgPSBhZGFwdG9yLmtpbmQoeCk7XG4gICAgICByZXR1cm4gKGtpbmQgPT09ICcjdGV4dCcgPyB0aGlzLnByb3RlY3RIVE1MKGFkYXB0b3IudmFsdWUoeCkpIDpcbiAgICAgICAgICAgICAga2luZCA9PT0gJyNjb21tZW50JyA/ICh4IGFzIExpdGVDb21tZW50KS52YWx1ZSA6XG4gICAgICAgICAgICAgIHRoaXMuc2VyaWFsaXplKGFkYXB0b3IsIHggYXMgTGl0ZUVsZW1lbnQsIHhtbCkpO1xuICAgIH0pLmpvaW4oJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0ICBUaGUgYXR0cmlidXRlIHZhbHVlIHRvIGJlIEhUTUwgZXNjYXBlZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgVGhlIHN0cmluZyB3aXRoIFwiIHJlcGxhY2VkIGJ5IGVudGl0aWVzXG4gICAqL1xuICBwdWJsaWMgcHJvdGVjdEF0dHJpYnV0ZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICh0eXBlb2YgdGV4dCAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRleHQgPSBTdHJpbmcodGV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1wiL2csICcmcXVvdDsnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCAgVGhlIHRleHQgdG8gYmUgSFRNTCBlc2NhcGVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICBUaGUgc3RyaW5nIHdpdGggJiwgPCwgYW5kID4gcmVwbGFjZWQgYnkgZW50aXRpZXNcbiAgICovXG4gIHB1YmxpYyBwcm90ZWN0SFRNTCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoLyYvZywgJyZhbXA7JylcbiAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JylcbiAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7Jyk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIGEgbGlnaHR3ZWlnaHQgRE9NIGFkYXB0b3JcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7TGl0ZUVsZW1lbnR9IGZyb20gJy4vRWxlbWVudC5qcyc7XG5pbXBvcnQge0xpdGVEb2N1bWVudH0gZnJvbSAnLi9Eb2N1bWVudC5qcyc7XG5pbXBvcnQge0xpdGVMaXN0fSBmcm9tICcuL0xpc3QuanMnO1xuaW1wb3J0IHtMaXRlUGFyc2VyfSBmcm9tICcuL1BhcnNlci5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIEltcGxlbWVudHMgYSBsaWdodHdlaWdodCBXaW5kb3cgcmVwbGFjZW1lbnRcbiAqL1xuZXhwb3J0IGNsYXNzIExpdGVXaW5kb3cge1xuICAvKipcbiAgICogVGhlIHdpbmRvdydzIGRvY3VtZW50IGluc3RhbmNlXG4gICAqL1xuICBwdWJsaWMgZG9jdW1lbnQ6IExpdGVEb2N1bWVudDtcbiAgLyoqXG4gICAqIFRoZSBET01QYXJzZXIgY2xhc3NcbiAgICovXG4gIHB1YmxpYyBET01QYXJzZXI6IHR5cGVvZiBMaXRlUGFyc2VyID0gTGl0ZVBhcnNlcjtcbiAgLyoqXG4gICAqIFRoZSBOb2RlTGlzdCBjbGFzc1xuICAgKi9cbiAgcHVibGljIE5vZGVMaXN0OiB0eXBlb2YgTGl0ZUxpc3QgPSBMaXRlTGlzdDtcbiAgLyoqXG4gICAqIFRoZSBIVE1MQ29sbGVjdGlvbiBjbGFzc1xuICAgKi9cbiAgcHVibGljIEhUTUxDb2xsZWN0aW9uOiB0eXBlb2YgTGl0ZUxpc3QgPSBMaXRlTGlzdDtcbiAgLyoqXG4gICAqIFRoZSBIVE1MRWxlbWVudCBjbGFzc1xuICAgKi9cbiAgcHVibGljIEhUTUxFbGVtZW50OiB0eXBlb2YgTGl0ZUVsZW1lbnQgPSBMaXRlRWxlbWVudDtcbiAgLyoqXG4gICAqIFRoZSBEb2N1bWVudEZyYWdtZW50IGNsYXNzXG4gICAqL1xuICBwdWJsaWMgRG9jdW1lbnRGcmFnbWVudDogdHlwZW9mIExpdGVMaXN0ICA9IExpdGVMaXN0O1xuICAvKipcbiAgICogVGhlIERvY3VtZW50IGNsYXNzXG4gICAqL1xuICBwdWJsaWMgRG9jdW1lbnQ6IHR5cGVvZiBMaXRlRG9jdW1lbnQgID0gTGl0ZURvY3VtZW50O1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgdGhlIExpdGVXaW5kb3cgYW5kIGl0cyBMaXRlRG9jdW1lbnRcbiAgICovXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuZG9jdW1lbnQgPSBuZXcgTGl0ZURvY3VtZW50KCk7XG4gIH1cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyBhIGxpZ2h0d2VpZ2h0IERPTSBhZGFwdG9yXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0Fic3RyYWN0RE9NQWRhcHRvcn0gZnJvbSAnLi4vY29yZS9ET01BZGFwdG9yLmpzJztcbmltcG9ydCB7Tm9kZU1peGluLCBDb25zdHJ1Y3Rvcn0gZnJvbSAnLi9Ob2RlTWl4aW4uanMnO1xuaW1wb3J0IHtMaXRlRG9jdW1lbnR9IGZyb20gJy4vbGl0ZS9Eb2N1bWVudC5qcyc7XG5pbXBvcnQge0xpdGVFbGVtZW50LCBMaXRlTm9kZX0gZnJvbSAnLi9saXRlL0VsZW1lbnQuanMnO1xuaW1wb3J0IHtMaXRlVGV4dCwgTGl0ZUNvbW1lbnR9IGZyb20gJy4vbGl0ZS9UZXh0LmpzJztcbmltcG9ydCB7TGl0ZUxpc3R9IGZyb20gJy4vbGl0ZS9MaXN0LmpzJztcbmltcG9ydCB7TGl0ZVdpbmRvd30gZnJvbSAnLi9saXRlL1dpbmRvdy5qcyc7XG5pbXBvcnQge0xpdGVQYXJzZXJ9IGZyb20gJy4vbGl0ZS9QYXJzZXIuanMnO1xuaW1wb3J0IHtTdHlsZXN9IGZyb20gJy4uL3V0aWwvU3R5bGVzLmpzJztcbmltcG9ydCB7T3B0aW9uTGlzdH0gZnJvbSAnLi4vdXRpbC9PcHRpb25zLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuXG4vKipcbiAqIEltcGxlbWVudHMgYSBsaWdodHdlaWdodCBET01BZGFwdG9yIG9uIGxpdGV3ZWlnaHQgSFRNTCBlbGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgTGl0ZUJhc2UgZXh0ZW5kcyBBYnN0cmFjdERPTUFkYXB0b3I8TGl0ZUVsZW1lbnQsIExpdGVUZXh0LCBMaXRlRG9jdW1lbnQ+IHtcbiAgLyoqXG4gICAqIFRoZSBkb2N1bWVudCBpbiB3aGljaCB0aGUgSFRNTCBub2RlcyB3aWxsIGJlIGNyZWF0ZWRcbiAgICovXG4gIHB1YmxpYyBkb2N1bWVudDogTGl0ZURvY3VtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgd2luZG93IGZvciB0aGUgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyB3aW5kb3c6IExpdGVXaW5kb3c7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJzZXIgZm9yIHNlcmlhbGl6ZWQgSFRNTFxuICAgKi9cbiAgcHVibGljIHBhcnNlcjogTGl0ZVBhcnNlcjtcblxuICAvKipcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICBUaGUgb3B0aW9ucyBmb3IgdGhlIGxpdGUgYWRhcHRvciAoZS5nLiwgZm9udFNpemUpXG4gICAqIEBjb25zdHJ1Y3RvclxuICAgKi9cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLnBhcnNlciA9IG5ldyBMaXRlUGFyc2VyKCk7XG4gICAgdGhpcy53aW5kb3cgPSBuZXcgTGl0ZVdpbmRvdygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHBhcnNlKHRleHQ6IHN0cmluZywgZm9ybWF0Pzogc3RyaW5nKTogTGl0ZURvY3VtZW50IHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucGFyc2VGcm9tU3RyaW5nKHRleHQsIGZvcm1hdCwgdGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlKGtpbmQ6IHN0cmluZywgX25zOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgcmV0dXJuIG5ldyBMaXRlRWxlbWVudChraW5kKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0ZXh0KHRleHQ6IHN0cmluZykge1xuICAgIHJldHVybiBuZXcgTGl0ZVRleHQodGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICBUaGUgdGV4dCBvZiB0aGUgY29tbWVudFxuICAgKiBAcmV0dXJuIHtMaXRlQ29tbWVudH0gIFRoZSBjb21tZW50IG5vZGVcbiAgICovXG4gIHB1YmxpYyBjb21tZW50KHRleHQ6IHN0cmluZyk6IExpdGVDb21tZW50IHtcbiAgICByZXR1cm4gbmV3IExpdGVDb21tZW50KHRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge0xpdGVEb2N1bWVudH0gIEEgbmV3IGRvY3VtZW50IGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyBjcmVhdGVEb2N1bWVudCgpOiBMaXRlRG9jdW1lbnQge1xuICAgIHJldHVybiBuZXcgTGl0ZURvY3VtZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaGVhZChkb2M6IExpdGVEb2N1bWVudCkge1xuICAgIHJldHVybiBkb2MuaGVhZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBib2R5KGRvYzogTGl0ZURvY3VtZW50KSB7XG4gICAgcmV0dXJuIGRvYy5ib2R5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJvb3QoZG9jOiBMaXRlRG9jdW1lbnQpIHtcbiAgICByZXR1cm4gZG9jLnJvb3Q7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZG9jdHlwZShkb2M6IExpdGVEb2N1bWVudCkge1xuICAgIHJldHVybiBkb2MudHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0YWdzKG5vZGU6IExpdGVFbGVtZW50LCBuYW1lOiBzdHJpbmcsIG5zOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgbGV0IHN0YWNrID0gW10gYXMgTGl0ZU5vZGVbXTtcbiAgICBsZXQgdGFncyA9IFtdIGFzIExpdGVFbGVtZW50W107XG4gICAgaWYgKG5zKSB7XG4gICAgICByZXR1cm4gdGFnczsgIC8vIHdlIGRvbid0IGhhdmUgbmFtZXNwYWNlc1xuICAgIH1cbiAgICBsZXQgbjogTGl0ZU5vZGUgPSBub2RlO1xuICAgIHdoaWxlIChuKSB7XG4gICAgICBsZXQga2luZCA9IG4ua2luZDtcbiAgICAgIGlmIChraW5kICE9PSAnI3RleHQnICYmIGtpbmQgIT09ICcjY29tbWVudCcpIHtcbiAgICAgICAgbiA9IG4gYXMgTGl0ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChraW5kID09PSBuYW1lKSB7XG4gICAgICAgICAgdGFncy5wdXNoKG4pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChuLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICAgIHN0YWNrID0gbi5jaGlsZHJlbi5jb25jYXQoc3RhY2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuID0gc3RhY2suc2hpZnQoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhZ3M7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtMaXRlRWxlbWVudH0gbm9kZSAgIFRoZSBub2RlIHRvIGJlIHNlYXJjaGVkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAgICAgICAgICBUaGUgaWQgb2YgdGhlIG5vZGUgdG8gbG9vayBmb3JcbiAgICogQHJldHVybiB7TGl0ZUVsZW1lbnR9ICAgICAgIFRoZSBjaGlsZCBub2RlIGhhdmluZyB0aGUgZ2l2ZW4gaWRcbiAgICovXG4gIHB1YmxpYyBlbGVtZW50QnlJZChub2RlOiBMaXRlRWxlbWVudCwgaWQ6IHN0cmluZyk6IExpdGVFbGVtZW50IHtcbiAgICBsZXQgc3RhY2sgPSBbXSBhcyBMaXRlTm9kZVtdO1xuICAgIGxldCBuID0gbm9kZSBhcyBMaXRlTm9kZTtcbiAgICB3aGlsZSAobikge1xuICAgICAgaWYgKG4ua2luZCAhPT0gJyN0ZXh0JyAmJiBuLmtpbmQgIT09ICcjY29tbWVudCcpIHtcbiAgICAgICAgbiA9IG4gYXMgTGl0ZUVsZW1lbnQ7XG4gICAgICAgIGlmIChuLmF0dHJpYnV0ZXNbJ2lkJ10gPT09IGlkKSB7XG4gICAgICAgICAgcmV0dXJuIG47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG4uY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgc3RhY2sgPSBuLmNoaWxkcmVuLmNvbmNhdChzdGFjayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG4gPSBzdGFjay5zaGlmdCgpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge0xpdGVFbGVtZW50fSBub2RlICAgVGhlIG5vZGUgdG8gYmUgc2VhcmNoZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgICAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyB0byBmaW5kXG4gICAqIEByZXR1cm4ge0xpdGVFbGVtZW50W119ICAgICBUaGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4gY2xhc3NcbiAgICovXG4gIHB1YmxpYyBlbGVtZW50c0J5Q2xhc3Mobm9kZTogTGl0ZUVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IExpdGVFbGVtZW50W10ge1xuICAgIGxldCBzdGFjayA9IFtdIGFzIExpdGVOb2RlW107XG4gICAgbGV0IHRhZ3MgPSBbXSBhcyBMaXRlRWxlbWVudFtdO1xuICAgIGxldCBuOiBMaXRlTm9kZSA9IG5vZGU7XG4gICAgd2hpbGUgKG4pIHtcbiAgICAgIGlmIChuLmtpbmQgIT09ICcjdGV4dCcgJiYgbi5raW5kICE9PSAnI2NvbW1lbnQnKSB7XG4gICAgICAgIG4gPSBuIGFzIExpdGVFbGVtZW50O1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gKG4uYXR0cmlidXRlc1snY2xhc3MnXSB8fCAnJykudHJpbSgpLnNwbGl0KC8gKy8pO1xuICAgICAgICBpZiAoY2xhc3Nlcy5pbmNsdWRlcyhuYW1lKSkge1xuICAgICAgICAgIHRhZ3MucHVzaChuKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobi5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgICBzdGFjayA9IG4uY2hpbGRyZW4uY29uY2F0KHN0YWNrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbiA9IHN0YWNrLnNoaWZ0KCk7XG4gICAgfVxuICAgIHJldHVybiB0YWdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldEVsZW1lbnRzKG5vZGVzOiAoc3RyaW5nIHwgTGl0ZUVsZW1lbnQgfCBMaXRlRWxlbWVudFtdKVtdLCBkb2N1bWVudDogTGl0ZURvY3VtZW50KSB7XG4gICAgbGV0IGNvbnRhaW5lcnMgPSBbXSBhcyBMaXRlRWxlbWVudFtdO1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmJvZHkoZG9jdW1lbnQpO1xuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBub2Rlcykge1xuICAgICAgaWYgKHR5cGVvZihub2RlKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKG5vZGUuY2hhckF0KDApID09PSAnIycpIHtcbiAgICAgICAgICBjb25zdCBuID0gdGhpcy5lbGVtZW50QnlJZChib2R5LCBub2RlLnNsaWNlKDEpKTtcbiAgICAgICAgICBpZiAobikge1xuICAgICAgICAgICAgY29udGFpbmVycy5wdXNoKG4pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChub2RlLmNoYXJBdCgwKSA9PT0gJy4nKSB7XG4gICAgICAgICAgY29udGFpbmVycyA9IGNvbnRhaW5lcnMuY29uY2F0KHRoaXMuZWxlbWVudHNCeUNsYXNzKGJvZHksIG5vZGUuc2xpY2UoMSkpKTtcbiAgICAgICAgfSBlbHNlIGlmIChub2RlLm1hdGNoKC9eWy1hLXpdWy1hLXowLTldKiQvaSkpIHtcbiAgICAgICAgICBjb250YWluZXJzID0gY29udGFpbmVycy5jb25jYXQodGhpcy50YWdzKGJvZHksIG5vZGUpKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4gICAgICAgIGNvbnRhaW5lcnMgPSBjb250YWluZXJzLmNvbmNhdChub2RlKTtcbiAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIHRoaXMud2luZG93Lk5vZGVMaXN0IHx8IG5vZGUgaW5zdGFuY2VvZiB0aGlzLndpbmRvdy5IVE1MQ29sbGVjdGlvbikge1xuICAgICAgICBjb250YWluZXJzID0gY29udGFpbmVycy5jb25jYXQoKG5vZGUgYXMgTGl0ZUxpc3Q8TGl0ZUVsZW1lbnQ+KS5ub2Rlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250YWluZXJzLnB1c2gobm9kZSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjb250YWluZXJzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvbnRhaW5zKGNvbnRhaW5lcjogTGl0ZU5vZGUsIG5vZGU6IExpdGVOb2RlIHwgTGl0ZVRleHQpIHtcbiAgICB3aGlsZSAobm9kZSAmJiBub2RlICE9PSBjb250YWluZXIpIHtcbiAgICAgIG5vZGUgPSB0aGlzLnBhcmVudChub2RlKTtcbiAgICB9XG4gICAgcmV0dXJuICEhbm9kZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBwYXJlbnQobm9kZTogTGl0ZU5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5wYXJlbnQ7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtMaXRlTm9kZX0gbm9kZSAgVGhlIG5vZGUgd2hvc2UgaW5kZXggaXMgbmVlZGVkXG4gICAqIEByZXR1cm4ge251bWJlcn0gICAgICAgIFRoZSBpbmRleCBvZiB0aGUgbm9kZSBpdCBpdHMgcGFyZW50J3MgY2hpbGRyZW4gYXJyYXlcbiAgICovXG4gIHB1YmxpYyBjaGlsZEluZGV4KG5vZGU6IExpdGVOb2RlKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKG5vZGUucGFyZW50ID8gbm9kZS5wYXJlbnQuY2hpbGRyZW4uZmluZEluZGV4KG4gPT4gbiA9PT0gbm9kZSkgOiAtMSk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYXBwZW5kKG5vZGU6IExpdGVFbGVtZW50LCBjaGlsZDogTGl0ZU5vZGUpIHtcbiAgICBpZiAoY2hpbGQucGFyZW50KSB7XG4gICAgICB0aGlzLnJlbW92ZShjaGlsZCk7XG4gICAgfVxuICAgIG5vZGUuY2hpbGRyZW4ucHVzaChjaGlsZCk7XG4gICAgY2hpbGQucGFyZW50ID0gbm9kZTtcbiAgICByZXR1cm4gY2hpbGQ7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaW5zZXJ0KG5jaGlsZDogTGl0ZU5vZGUsIG9jaGlsZDogTGl0ZU5vZGUpIHtcbiAgICBpZiAobmNoaWxkLnBhcmVudCkge1xuICAgICAgdGhpcy5yZW1vdmUobmNoaWxkKTtcbiAgICB9XG4gICAgaWYgKG9jaGlsZCAmJiBvY2hpbGQucGFyZW50KSB7XG4gICAgICBjb25zdCBpID0gdGhpcy5jaGlsZEluZGV4KG9jaGlsZCk7XG4gICAgICBvY2hpbGQucGFyZW50LmNoaWxkcmVuLnNwbGljZShpLCAwLCBuY2hpbGQpO1xuICAgICAgbmNoaWxkLnBhcmVudCA9IG9jaGlsZC5wYXJlbnQ7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZShjaGlsZDogTGl0ZU5vZGUpIHtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZEluZGV4KGNoaWxkKTtcbiAgICBpZiAoaSA+PSAwKSB7XG4gICAgICBjaGlsZC5wYXJlbnQuY2hpbGRyZW4uc3BsaWNlKGksIDEpO1xuICAgIH1cbiAgICBjaGlsZC5wYXJlbnQgPSBudWxsO1xuICAgIHJldHVybiBjaGlsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlKG5ub2RlOiBMaXRlTm9kZSwgb25vZGU6IExpdGVOb2RlKSB7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRJbmRleChvbm9kZSk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgb25vZGUucGFyZW50LmNoaWxkcmVuW2ldID0gbm5vZGU7XG4gICAgICBubm9kZS5wYXJlbnQgPSBvbm9kZS5wYXJlbnQ7XG4gICAgICBvbm9kZS5wYXJlbnQgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gb25vZGU7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY2xvbmUobm9kZTogTGl0ZUVsZW1lbnQpIHtcbiAgICBjb25zdCBubm9kZSA9IG5ldyBMaXRlRWxlbWVudChub2RlLmtpbmQpO1xuICAgIG5ub2RlLmF0dHJpYnV0ZXMgPSB7Li4ubm9kZS5hdHRyaWJ1dGVzfTtcbiAgICBubm9kZS5jaGlsZHJlbiA9IG5vZGUuY2hpbGRyZW4ubWFwKG4gPT4ge1xuICAgICAgaWYgKG4ua2luZCA9PT0gJyN0ZXh0Jykge1xuICAgICAgICByZXR1cm4gbmV3IExpdGVUZXh0KChuIGFzIExpdGVUZXh0KS52YWx1ZSk7XG4gICAgICB9IGVsc2UgaWYgKG4ua2luZCA9PT0gJyNjb21tZW50Jykge1xuICAgICAgICByZXR1cm4gbmV3IExpdGVDb21tZW50KChuIGFzIExpdGVDb21tZW50KS52YWx1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtID0gdGhpcy5jbG9uZShuIGFzIExpdGVFbGVtZW50KTtcbiAgICAgICAgbS5wYXJlbnQgPSBubm9kZTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ub2RlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNwbGl0KG5vZGU6IExpdGVUZXh0LCBuOiBudW1iZXIpIHtcbiAgICBjb25zdCB0ZXh0ID0gbmV3IExpdGVUZXh0KG5vZGUudmFsdWUuc2xpY2UobikpO1xuICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlLnNsaWNlKDAsIG4pO1xuICAgIG5vZGUucGFyZW50LmNoaWxkcmVuLnNwbGljZSh0aGlzLmNoaWxkSW5kZXgobm9kZSkgKyAxLCAwLCB0ZXh0KTtcbiAgICB0ZXh0LnBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIG5leHQobm9kZTogTGl0ZU5vZGUpIHtcbiAgICBjb25zdCBwYXJlbnQgPSBub2RlLnBhcmVudDtcbiAgICBpZiAoIXBhcmVudCkgcmV0dXJuIG51bGw7XG4gICAgY29uc3QgaSA9IHRoaXMuY2hpbGRJbmRleChub2RlKSArIDE7XG4gICAgcmV0dXJuIChpID49IDAgJiYgaSA8IHBhcmVudC5jaGlsZHJlbi5sZW5ndGggPyBwYXJlbnQuY2hpbGRyZW5baV0gOiBudWxsKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBwcmV2aW91cyhub2RlOiBMaXRlTm9kZSkge1xuICAgIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50O1xuICAgIGlmICghcGFyZW50KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCBpID0gdGhpcy5jaGlsZEluZGV4KG5vZGUpIC0gMTtcbiAgICByZXR1cm4gKGkgPj0gMCA/IHBhcmVudC5jaGlsZHJlbltpXSA6IG51bGwpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGZpcnN0Q2hpbGQobm9kZTogTGl0ZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlblswXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBsYXN0Q2hpbGQobm9kZTogTGl0ZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gbm9kZS5jaGlsZHJlbltub2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoaWxkTm9kZXMobm9kZTogTGl0ZUVsZW1lbnQpIHtcbiAgICByZXR1cm4gWy4uLm5vZGUuY2hpbGRyZW5dO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNoaWxkTm9kZShub2RlOiBMaXRlRWxlbWVudCwgaTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5vZGUuY2hpbGRyZW5baV07XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMga2luZChub2RlOiBMaXRlTm9kZSkge1xuICAgIHJldHVybiBub2RlLmtpbmQ7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdmFsdWUobm9kZTogTGl0ZU5vZGUgfCBMaXRlVGV4dCkge1xuICAgIHJldHVybiAobm9kZS5raW5kID09PSAnI3RleHQnID8gKG5vZGUgYXMgTGl0ZVRleHQpLnZhbHVlIDpcbiAgICAgICAgICAgIG5vZGUua2luZCA9PT0gJyNjb21tZW50JyA/IChub2RlIGFzIExpdGVDb21tZW50KS52YWx1ZS5yZXBsYWNlKC9ePCEoLS0pPygoPzoufFxcbikqKVxcMT4kLywgJyQyJykgOiAnJyk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdGV4dENvbnRlbnQobm9kZTogTGl0ZUVsZW1lbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiBub2RlLmNoaWxkcmVuLnJlZHVjZSgoczogc3RyaW5nLCBuOiBMaXRlTm9kZSkgPT4ge1xuICAgICAgcmV0dXJuIHMgKyAobi5raW5kID09PSAnI3RleHQnID8gKG4gYXMgTGl0ZVRleHQpLnZhbHVlIDpcbiAgICAgICAgICAgICAgICAgIG4ua2luZCA9PT0gJyNjb21tZW50JyA/ICcnIDogdGhpcy50ZXh0Q29udGVudChuIGFzIExpdGVFbGVtZW50KSk7XG4gICAgfSwgJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGlubmVySFRNTChub2RlOiBMaXRlRWxlbWVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLnNlcmlhbGl6ZUlubmVyKHRoaXMsIG5vZGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIG91dGVySFRNTChub2RlOiBMaXRlRWxlbWVudCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VyLnNlcmlhbGl6ZSh0aGlzLCBub2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXJpYWxpemVYTUwobm9kZTogTGl0ZUVsZW1lbnQpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnBhcnNlci5zZXJpYWxpemUodGhpcywgbm9kZSwgdHJ1ZSk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgc2V0QXR0cmlidXRlKG5vZGU6IExpdGVFbGVtZW50LCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIsIG5zOiBzdHJpbmcgPSBudWxsKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKG5zKSB7XG4gICAgICBuYW1lID0gbnMucmVwbGFjZSgvLipcXC8vLCAnJykgKyAnOicgKyBuYW1lLnJlcGxhY2UoL14uKjovLCAnJyk7XG4gICAgfVxuICAgIG5vZGUuYXR0cmlidXRlc1tuYW1lXSA9IHZhbHVlO1xuICAgIGlmIChuYW1lID09PSAnc3R5bGUnKSB7XG4gICAgICBub2RlLnN0eWxlcyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldEF0dHJpYnV0ZShub2RlOiBMaXRlRWxlbWVudCwgbmFtZTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIG5vZGUuYXR0cmlidXRlc1tuYW1lXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZW1vdmVBdHRyaWJ1dGUobm9kZTogTGl0ZUVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICAgIGRlbGV0ZSBub2RlLmF0dHJpYnV0ZXNbbmFtZV07XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaGFzQXR0cmlidXRlKG5vZGU6IExpdGVFbGVtZW50LCBuYW1lOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gbm9kZS5hdHRyaWJ1dGVzLmhhc093blByb3BlcnR5KG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFsbEF0dHJpYnV0ZXMobm9kZTogTGl0ZUVsZW1lbnQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gbm9kZS5hdHRyaWJ1dGVzO1xuICAgIGNvbnN0IGxpc3QgPSBbXTtcbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICAgIGxpc3QucHVzaCh7bmFtZTogbmFtZSwgdmFsdWU6IGF0dHJpYnV0ZXNbbmFtZV0gYXMgc3RyaW5nfSk7XG4gICAgfVxuICAgIHJldHVybiBsaXN0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFkZENsYXNzKG5vZGU6IExpdGVFbGVtZW50LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbGFzc2VzID0gKG5vZGUuYXR0cmlidXRlc1snY2xhc3MnXSBhcyBzdHJpbmcgfHwgJycpLnNwbGl0KC8gLyk7XG4gICAgaWYgKCFjbGFzc2VzLmZpbmQobiA9PiBuID09PSBuYW1lKSkge1xuICAgICAgY2xhc3Nlcy5wdXNoKG5hbWUpO1xuICAgICAgbm9kZS5hdHRyaWJ1dGVzWydjbGFzcyddID0gY2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZUNsYXNzKG5vZGU6IExpdGVFbGVtZW50LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjbGFzc2VzID0gKG5vZGUuYXR0cmlidXRlc1snY2xhc3MnXSBhcyBzdHJpbmcgfHwgJycpLnNwbGl0KC8gLyk7XG4gICAgY29uc3QgaSA9IGNsYXNzZXMuZmluZEluZGV4KG4gPT4gbiA9PT0gbmFtZSk7XG4gICAgaWYgKGkgPj0gMCkge1xuICAgICAgY2xhc3Nlcy5zcGxpY2UoaSwgMSk7XG4gICAgICBub2RlLmF0dHJpYnV0ZXNbJ2NsYXNzJ10gPSBjbGFzc2VzLmpvaW4oJyAnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaGFzQ2xhc3Mobm9kZTogTGl0ZUVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICAgIGNvbnN0IGNsYXNzZXMgPSAobm9kZS5hdHRyaWJ1dGVzWydjbGFzcyddIGFzIHN0cmluZyB8fCAnJykuc3BsaXQoLyAvKTtcbiAgICByZXR1cm4gISFjbGFzc2VzLmZpbmQobiA9PiBuID09PSBuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzZXRTdHlsZShub2RlOiBMaXRlRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKCFub2RlLnN0eWxlcykge1xuICAgICAgbm9kZS5zdHlsZXMgPSBuZXcgU3R5bGVzKHRoaXMuZ2V0QXR0cmlidXRlKG5vZGUsICdzdHlsZScpKTtcbiAgICB9XG4gICAgbm9kZS5zdHlsZXMuc2V0KG5hbWUsIHZhbHVlKTtcbiAgICBub2RlLmF0dHJpYnV0ZXNbJ3N0eWxlJ10gPSBub2RlLnN0eWxlcy5jc3NUZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldFN0eWxlKG5vZGU6IExpdGVFbGVtZW50LCBuYW1lOiBzdHJpbmcpIHtcbiAgICBpZiAoIW5vZGUuc3R5bGVzKSB7XG4gICAgICBjb25zdCBzdHlsZSA9IHRoaXMuZ2V0QXR0cmlidXRlKG5vZGUsICdzdHlsZScpO1xuICAgICAgaWYgKCFzdHlsZSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICBub2RlLnN0eWxlcyA9IG5ldyBTdHlsZXMoc3R5bGUpO1xuICAgIH1cbiAgICByZXR1cm4gbm9kZS5zdHlsZXMuZ2V0KG5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGFsbFN0eWxlcyhub2RlOiBMaXRlRWxlbWVudCkge1xuICAgIHJldHVybiB0aGlzLmdldEF0dHJpYnV0ZShub2RlLCAnc3R5bGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBpbnNlcnRSdWxlcyhub2RlOiBMaXRlRWxlbWVudCwgcnVsZXM6IHN0cmluZ1tdKSB7XG4gICAgbm9kZS5jaGlsZHJlbiA9IFt0aGlzLnRleHQocnVsZXMuam9pbignXFxuXFxuJykgKyAnXFxuXFxuJyArIHRoaXMudGV4dENvbnRlbnQobm9kZSkpXTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAvKlxuICAgKiAgVGhlIG5leHQgZm91ciBtZXRob2RzIGdldCBvdmVycmlkZGVuIGJ5IHRoZSBOb2RlTWl4aW4gYmVsb3dcbiAgICovXG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGZvbnRTaXplKF9ub2RlOiBMaXRlRWxlbWVudCkge1xuICAgIHJldHVybiAwO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGZvbnRGYW1pbHkoX25vZGU6IExpdGVFbGVtZW50KSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIG5vZGVTaXplKF9ub2RlOiBMaXRlRWxlbWVudCwgX2VtOiBudW1iZXIgPSAxLCBfbG9jYWw6IGJvb2xlYW4gPSBudWxsKSB7XG4gICAgcmV0dXJuIFswLCAwXSBhcyBbbnVtYmVyLCBudW1iZXJdO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIG5vZGVCQm94KF9ub2RlOiBMaXRlRWxlbWVudCkge1xuICAgIHJldHVybiB7bGVmdDogMCwgcmlnaHQ6IDAsIHRvcDogMCwgYm90dG9tOiAwfTtcbiAgfVxuXG59XG5cbi8qKlxuICogVGhlIExpdGVBZGFwdG9yIGNsYXNzIChhZGQgaW4gdGhlIE5vZGVNaXhpbiBtZXRob2RzIGFuZCBvcHRpb25zKVxuICovXG5leHBvcnQgY2xhc3MgTGl0ZUFkYXB0b3IgZXh0ZW5kcyBOb2RlTWl4aW48TGl0ZUVsZW1lbnQsIExpdGVUZXh0LCBMaXRlRG9jdW1lbnQsIENvbnN0cnVjdG9yPExpdGVCYXNlPj4oTGl0ZUJhc2UpIHt9XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBmdW5jdGlvbiB0byBjYWxsIHRvIG9idGFpbiBhIExpdGVBZGFwdG9yXG4gKlxuICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICBUaGUgb3B0aW9ucyBmb3IgdGhlIGFkYXB0b3JcbiAqIEByZXR1cm4ge0xpdGVBZGFwdG9yfSAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgYWRhcHRvclxuICovXG5leHBvcnQgZnVuY3Rpb24gbGl0ZUFkYXB0b3Iob3B0aW9uczogT3B0aW9uTGlzdCA9IG51bGwpOiBMaXRlQWRhcHRvciB7XG4gIHJldHVybiBuZXcgTGl0ZUFkYXB0b3IobnVsbCwgb3B0aW9ucyk7XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudCBhIGdlbmVyaWMgTGlua2VkTGlzdCBvYmplY3QuXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBBIHN5bWJvbCB1c2VkIHRvIG1hcmsgdGhlIHNwZWNpYWwgbm9kZSB1c2VkIHRvIGluZGljYXRlXG4gKiAgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIGxpc3QuXG4gKi9cbmV4cG9ydCBjb25zdCBFTkQgPSBTeW1ib2woKTtcblxuLyoqXG4gKiBTaG9ydGhhbmQgdHlwZSBmb3IgdGhlIGZ1bmN0aW9ucyB1c2VkIHRvIHNvcnQgdGhlIGRhdGEgaXRlbXNcbiAqXG4gKiBAdGVtcGxhdGUgRGF0YUNsYXNzICAgVGhlIHR5cGUgb2YgZGF0YSBzdG9yZWQgaW4gdGhlIGxpc3RcbiAqL1xuZXhwb3J0IHR5cGUgU29ydEZuPERhdGFDbGFzcz4gPSAoYTogRGF0YUNsYXNzLCBiOiBEYXRhQ2xhc3MpID0+IGJvb2xlYW47XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBMaXN0SXRlbSBpbnRlcmZhY2UgKGZvciBhIHNwZWNpZmljIHR5cGUgb2YgZGF0YSBpdGVtKVxuICpcbiAqICBUaGVzZSBhcmUgdGhlIGl0ZW1zIGluIHRoZSBkb3VibHktbGlua2VkIGxpc3QuXG4gKlxuICogQHRlbXBsYXRlIERhdGFDbGFzcyAgIFRoZSB0eXBlIG9mIGRhdGEgc3RvcmVkIGluIHRoZSBsaXN0XG4gKi9cblxuZXhwb3J0IGNsYXNzIExpc3RJdGVtPERhdGFDbGFzcz4ge1xuICAvKipcbiAgICogVGhlIGRhdGEgZm9yIHRoZSBsaXN0IGl0ZW1cbiAgICovXG4gIHB1YmxpYyBkYXRhOiBEYXRhQ2xhc3MgfCBzeW1ib2w7XG5cbiAgLyoqXG4gICAqIFBvaW50ZXJzIHRvIHRoZSBuZXh0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICovXG4gIHB1YmxpYyBuZXh0OiBMaXN0SXRlbTxEYXRhQ2xhc3M+ID0gbnVsbDtcbiAgLyoqXG4gICAqIFBvaW50ZXJzIHRvIHRoZSBwcmV2aW91cyBpdGVtIGluIHRoZSBsaXN0XG4gICAqL1xuICBwdWJsaWMgcHJldjogTGlzdEl0ZW08RGF0YUNsYXNzPiA9IG51bGw7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7YW55fSBkYXRhICBUaGUgZGF0YSB0byBiZSBzdG9yZWQgaW4gdGhlIGxpc3QgaXRlbVxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKGRhdGE6IGFueSA9IG51bGwpIHtcbiAgICB0aGlzLmRhdGEgPSBkYXRhO1xuICB9XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIGdlbmVyaWMgTGlua2VkTGlzdCBjbGFzc1xuICpcbiAqIEB0ZW1wbGF0ZSBEYXRhQ2xhc3MgICBUaGUgdHlwZSBvZiBkYXRhIHN0b3JlZCBpbiB0aGUgbGlzdFxuICovXG5cbmV4cG9ydCBjbGFzcyBMaW5rZWRMaXN0PERhdGFDbGFzcz4ge1xuICAvKipcbiAgICogVGhlIGxpbmtlZCBsaXN0XG4gICAqL1xuICBwcm90ZWN0ZWQgbGlzdDogTGlzdEl0ZW08RGF0YUNsYXNzPjtcblxuICAvKipcbiAgICogIFRoaXMubGlzdCBpcyBhIHNwZWNpYWwgTGlzdEl0ZW0gd2hvc2UgbmV4dCBwcm9wZXJ0eVxuICAgKiAgICBwb2ludHMgdG8gdGhlIGhlYWQgb2YgdGhlIGxpc3QgYW5kIHdob3NlIHByZXZcbiAgICogICAgcHJvcGVydHkgcG9pbnRzIHRvIHRoZSB0YWlsLiAgVGhpcyBsZXRzIHVzIHJlbGlua1xuICAgKiAgICB0aGUgaGVhZCBhbmQgdGFpbCBpdGVtcyBpbiB0aGUgc2FtZSB3YXkgYXMgYW55IG90aGVyXG4gICAqICAgIGl0ZW0gaW4gdGhlIGxpc3QsIHdpdGhvdXQgaGF2aW5nIHRvIGhhbmRsZSBzcGVjaWFsXG4gICAqICAgIGNhc2VzLlxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGFDbGFzc1tdfSBhcmdzICBUaGUgZGF0YSBpdGVtcyB0aGF0IGZvcm0gdGhlIGluaXRpYWwgbGlzdFxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IERhdGFDbGFzc1tdKSB7XG4gICAgdGhpcy5saXN0ID0gbmV3IExpc3RJdGVtPERhdGFDbGFzcz4oRU5EKTtcbiAgICB0aGlzLmxpc3QubmV4dCA9IHRoaXMubGlzdC5wcmV2ID0gdGhpcy5saXN0O1xuICAgIHRoaXMucHVzaCguLi5hcmdzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgVXNlZCBmb3Igc29ydGluZyBhbmQgbWVyZ2luZyBsaXN0cyAoT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzKVxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGFDbGFzc30gYSAgIFRoZSBmaXJzdCBpdGVtIHRvIGNvbXBhcmVcbiAgICogQHBhcmFtIHtEYXRhQ2xhc3N9IGIgICBUaGUgc2Vjb25kIGl0ZW0gdG8gY29tcGFyZVxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgICAgIFRydWUgaWYgYSBpcyBiZWZvcmUgYiwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAqL1xuICBwdWJsaWMgaXNCZWZvcmUoYTogRGF0YUNsYXNzLCBiOiBEYXRhQ2xhc3MpOiBib29sZWFuIHtcbiAgICByZXR1cm4gYSA8IGI7XG4gIH1cblxuICAvKipcbiAgICogUHVzaCBpdGVtcyBvbiB0aGUgZW5kIG9mIHRoZSBsaXN0XG4gICAqXG4gICAqIEBwYXJhbSB7RGF0YUNsYXNzW119IGFyZ3MgICBUaGUgbGlzdCBvZiBkYXRhIGl0ZW1zIHRvIGJlIHB1c2hlZFxuICAgKiBAcmV0dXJuIHtMaW5rZWRMaXN0fSAgICAgICAgVGhlIExpbmtlZExpc3Qgb2JqZWN0IChmb3IgY2hhaW5pbmcpXG4gICAqL1xuICBwdWJsaWMgcHVzaCguLi5hcmdzOiBEYXRhQ2xhc3NbXSk6IExpbmtlZExpc3Q8RGF0YUNsYXNzPiB7XG4gICAgZm9yIChjb25zdCBkYXRhIG9mIGFyZ3MpIHtcbiAgICAgIGxldCBpdGVtID0gbmV3IExpc3RJdGVtPERhdGFDbGFzcz4oZGF0YSk7XG4gICAgICBpdGVtLm5leHQgPSB0aGlzLmxpc3Q7XG4gICAgICBpdGVtLnByZXYgPSB0aGlzLmxpc3QucHJldjtcbiAgICAgIHRoaXMubGlzdC5wcmV2ID0gaXRlbTtcbiAgICAgIGl0ZW0ucHJldi5uZXh0ID0gaXRlbTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUG9wIHRoZSBlbmQgaXRlbSBvZmYgdGhlIGxpc3QgYW5kIHJldHVybiBpdHMgZGF0YVxuICAgKlxuICAgKiBAcmV0dXJuIHtEYXRhQ2xhc3N9ICBUaGUgZGF0YSBmcm9tIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIGxpc3RcbiAgICovXG4gIHB1YmxpYyBwb3AoKTogRGF0YUNsYXNzIHtcbiAgICBsZXQgaXRlbSA9IHRoaXMubGlzdC5wcmV2O1xuICAgIGlmIChpdGVtLmRhdGEgPT09IEVORCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRoaXMubGlzdC5wcmV2ID0gaXRlbS5wcmV2O1xuICAgIGl0ZW0ucHJldi5uZXh0ID0gdGhpcy5saXN0O1xuICAgIGl0ZW0ubmV4dCA9IGl0ZW0ucHJldiA9IG51bGw7XG4gICAgcmV0dXJuIGl0ZW0uZGF0YSBhcyBEYXRhQ2xhc3M7XG4gIH1cblxuICAvKipcbiAgICogUHVzaCBpdGVtcyBhdCB0aGUgaGVhZCBvZiB0aGUgbGlzdFxuICAgKlxuICAgKiBAcGFyYW0ge0RhdGFDbGFzc1tdfSBhcmdzICAgVGhlIGxpc3Qgb2YgZGF0YSBpdGVtcyB0byBpbnNlcnRlZFxuICAgKiBAcmV0dXJuIHtMaW5rZWRMaXN0fSAgICAgICAgVGhlIExpbmtlZExpc3Qgb2JqZWN0IChmb3IgY2hhaW5pbmcpXG4gICAqL1xuICBwdWJsaWMgdW5zaGlmdCguLi5hcmdzOiBEYXRhQ2xhc3NbXSk6IExpbmtlZExpc3Q8RGF0YUNsYXNzPiB7XG4gICAgZm9yIChjb25zdCBkYXRhIG9mIGFyZ3Muc2xpY2UoMCkucmV2ZXJzZSgpKSB7XG4gICAgICBsZXQgaXRlbSA9IG5ldyBMaXN0SXRlbTxEYXRhQ2xhc3M+KGRhdGEpO1xuICAgICAgaXRlbS5uZXh0ID0gdGhpcy5saXN0Lm5leHQ7XG4gICAgICBpdGVtLnByZXYgPSB0aGlzLmxpc3Q7XG4gICAgICB0aGlzLmxpc3QubmV4dCA9IGl0ZW07XG4gICAgICBpdGVtLm5leHQucHJldiA9IGl0ZW07XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhbiBpdGVtIGZyb20gdGhlIGhlYWQgb2YgdGhlIGxpc3QgYW5kIHJldHVybiBpdHMgZGF0YVxuICAgKlxuICAgKiBAcmV0dXJuIHtEYXRhQ2xhc3N9ICBUaGUgZGF0YSBmcm9tIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0XG4gICAqL1xuICBwdWJsaWMgc2hpZnQoKTogRGF0YUNsYXNzIHtcbiAgICBsZXQgaXRlbSA9IHRoaXMubGlzdC5uZXh0O1xuICAgIGlmIChpdGVtLmRhdGEgPT09IEVORCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRoaXMubGlzdC5uZXh0ID0gaXRlbS5uZXh0O1xuICAgIGl0ZW0ubmV4dC5wcmV2ID0gdGhpcy5saXN0O1xuICAgIGl0ZW0ubmV4dCA9IGl0ZW0ucHJldiA9IG51bGw7XG4gICAgcmV0dXJuIGl0ZW0uZGF0YSBhcyBEYXRhQ2xhc3M7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIGl0ZW1zIGZyb20gdGhlIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIHtEYXRhQ2xhc3NbXX0gaXRlbXMgICBUaGUgaXRlbXMgdG8gcmVtb3ZlXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlKC4uLml0ZW1zOiBEYXRhQ2xhc3NbXSkge1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXA8RGF0YUNsYXNzLCBib29sZWFuPigpO1xuICAgIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgICAgbWFwLnNldChpdGVtLCB0cnVlKTtcbiAgICB9XG4gICAgbGV0IGl0ZW0gPSB0aGlzLmxpc3QubmV4dDtcbiAgICB3aGlsZSAoaXRlbS5kYXRhICE9PSBFTkQpIHtcbiAgICAgIGNvbnN0IG5leHQgPSBpdGVtLm5leHQ7XG4gICAgICBpZiAobWFwLmhhcyhpdGVtLmRhdGEgYXMgRGF0YUNsYXNzKSkge1xuICAgICAgICBpdGVtLnByZXYubmV4dCA9IGl0ZW0ubmV4dDtcbiAgICAgICAgaXRlbS5uZXh0LnByZXYgPSBpdGVtLnByZXY7XG4gICAgICAgIGl0ZW0ubmV4dCA9IGl0ZW0ucHJldiA9IG51bGw7XG4gICAgICB9XG4gICAgICBpdGVtID0gbmV4dDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW1wdHkgdGhlIGxpc3RcbiAgICpcbiAgICogQHJldHVybiB7TGlua2VkTGlzdH0gIFRoZSBMaW5rZWRMaXN0IG9iamVjdCAoZm9yIGNoYWluaW5nKVxuICAgKi9cbiAgcHVibGljIGNsZWFyKCk6IExpbmtlZExpc3Q8RGF0YUNsYXNzPiB7XG4gICAgdGhpcy5saXN0Lm5leHQucHJldiA9IHRoaXMubGlzdC5wcmV2Lm5leHQgPSBudWxsO1xuICAgIHRoaXMubGlzdC5uZXh0ID0gdGhpcy5saXN0LnByZXYgPSB0aGlzLmxpc3Q7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQW4gaXRlcmF0b3IgZm9yIHRoZSBsaXN0IGluIGZvcndhcmQgb3JkZXJcbiAgICpcbiAgICogQHlpZWxkIHtEYXRhQ2xhc3N9IFRoZSBuZXh0IGl0ZW0gaW4gdGhlIGl0ZXJhdGlvbiBzZXF1ZW5jZVxuICAgKi9cbiAgcHVibGljICpbU3ltYm9sLml0ZXJhdG9yXSgpOiBJdGVyYWJsZUl0ZXJhdG9yPERhdGFDbGFzcz4ge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5saXN0Lm5leHQ7XG5cbiAgICB3aGlsZSAoY3VycmVudC5kYXRhICE9PSBFTkQpIHtcbiAgICAgIHlpZWxkIGN1cnJlbnQuZGF0YSBhcyBEYXRhQ2xhc3M7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBpdGVyYXRvciBmb3IgdGhlIGxpc3QgaW4gcmV2ZXJzZSBvcmRlclxuICAgKlxuICAgKiBAeWllbGQge0RhdGFDbGFzc30gVGhlIHByZXZpb3VzIGl0ZW0gaW4gdGhlIGl0ZXJhdGlvbiBzZXF1ZW5jZVxuICAgKi9cbiAgcHVibGljICpyZXZlcnNlZCgpOiBJdGVyYWJsZUl0ZXJhdG9yPERhdGFDbGFzcz4ge1xuICAgIGxldCBjdXJyZW50ID0gdGhpcy5saXN0LnByZXY7XG5cbiAgICB3aGlsZSAoY3VycmVudC5kYXRhICE9PSBFTkQpIHtcbiAgICAgIHlpZWxkIGN1cnJlbnQuZGF0YSBhcyBEYXRhQ2xhc3M7XG4gICAgICBjdXJyZW50ID0gY3VycmVudC5wcmV2O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnNlcnQgYSBuZXcgaXRlbSBpbnRvIGEgc29ydGVkIGxpc3QgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7RGF0YUNsYXNzfSBkYXRhICAgVGhlIGRhdGEgaXRlbSB0byBhZGRcbiAgICogQHBhcmFtIHtTb3J0Rm59IGlzQmVmb3JlICAgVGhlIGZ1bmN0aW9uIHVzZWQgdG8gb3JkZXIgdGhlIGRhdGFcbiAgICogQHBhcmFtIHtMaW5rZWRMaXN0fSAgICAgICAgVGhlIExpbmtlZExpc3Qgb2JqZWN0IChmb3IgY2hhaW5pbmcpXG4gICAqL1xuICBwdWJsaWMgaW5zZXJ0KGRhdGE6IERhdGFDbGFzcywgaXNCZWZvcmU6IFNvcnRGbjxEYXRhQ2xhc3M+ID0gbnVsbCkge1xuICAgIGlmIChpc0JlZm9yZSA9PT0gbnVsbCkge1xuICAgICAgaXNCZWZvcmUgPSB0aGlzLmlzQmVmb3JlLmJpbmQodGhpcyk7XG4gICAgfVxuICAgIGxldCBpdGVtID0gbmV3IExpc3RJdGVtPERhdGFDbGFzcz4oZGF0YSk7XG4gICAgbGV0IGN1ciA9IHRoaXMubGlzdC5uZXh0O1xuICAgIHdoaWxlIChjdXIuZGF0YSAhPT0gRU5EICYmIGlzQmVmb3JlKGN1ci5kYXRhIGFzIERhdGFDbGFzcywgaXRlbS5kYXRhIGFzIERhdGFDbGFzcykpIHtcbiAgICAgIGN1ciA9IGN1ci5uZXh0O1xuICAgIH1cbiAgICBpdGVtLnByZXYgPSBjdXIucHJldjtcbiAgICBpdGVtLm5leHQgPSBjdXI7XG4gICAgY3VyLnByZXYubmV4dCA9IGN1ci5wcmV2ID0gaXRlbTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0IHRoZSBsaXN0IHVzaW5nIGFuIG9wdGlvbmFsIHNvcnQgZnVuY3Rpb25cbiAgICpcbiAgICogQHBhcmFtIHtTb3J0Rm59IGlzQmVmb3JlICBUaGUgZnVuY3Rpb24gdXNlZCB0byBvcmRlciB0aGUgZGF0YVxuICAgKiBAcmV0dXJuIHtMaW5rZWRMaXN0fSAgICAgIFRoZSBMaW5rZWRMaXN0IG9iamVjdCAoZm9yIGNoYWluaW5nKVxuICAgKi9cbiAgcHVibGljIHNvcnQoaXNCZWZvcmU6IFNvcnRGbjxEYXRhQ2xhc3M+ID0gbnVsbCk6IExpbmtlZExpc3Q8RGF0YUNsYXNzPiB7XG4gICAgaWYgKGlzQmVmb3JlID09PSBudWxsKSB7XG4gICAgICBpc0JlZm9yZSA9IHRoaXMuaXNCZWZvcmUuYmluZCh0aGlzKTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyAgTWFrZSBhbiBhcnJheSBvZiBzaW5nbGV0b24gbGlzdHNcbiAgICAvL1xuICAgIGxldCBsaXN0czogTGlua2VkTGlzdDxEYXRhQ2xhc3M+W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcykge1xuICAgICAgbGlzdHMucHVzaChuZXcgTGlua2VkTGlzdDxEYXRhQ2xhc3M+KGl0ZW0gYXMgRGF0YUNsYXNzKSk7XG4gICAgfVxuICAgIC8vXG4gICAgLy8gIENsZWFyIGN1cnJlbnQgbGlzdFxuICAgIC8vXG4gICAgdGhpcy5saXN0Lm5leHQgPSB0aGlzLmxpc3QucHJldiA9IHRoaXMubGlzdDtcbiAgICAvL1xuICAgIC8vICBNZXJnZSBwYWlycyBvZiBsaXN0cyB1bnRpbCB0aGVyZSBpcyBvbmx5IG9uZSBsZWZ0XG4gICAgLy9cbiAgICB3aGlsZSAobGlzdHMubGVuZ3RoID4gMSkge1xuICAgICAgbGV0IGwxID0gbGlzdHMuc2hpZnQoKTtcbiAgICAgIGxldCBsMiA9IGxpc3RzLnNoaWZ0KCk7XG4gICAgICBsMS5tZXJnZShsMiwgaXNCZWZvcmUpO1xuICAgICAgbGlzdHMucHVzaChsMSk7XG4gICAgfVxuICAgIC8vXG4gICAgLy8gIFVzZSB0aGUgZmluYWwgbGlzdCBhcyBvdXIgbGlzdFxuICAgIC8vXG4gICAgaWYgKGxpc3RzLmxlbmd0aCkge1xuICAgICAgdGhpcy5saXN0ID0gbGlzdHNbMF0ubGlzdDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgYSBzb3J0ZWQgbGlzdCB3aXRoIGFub3RoZXIgc29ydGVkIGxpc3RcbiAgICpcbiAgICogQHBhcmFtIHtMaW5rZWRMaXN0fSBsaXN0ICBUaGUgbGlzdCB0byBtZXJnZSBpbnRvIHRoaXMgaW5zdGFuY2UncyBsaXN0XG4gICAqIEBwYXJhbSB7U29ydEZufSBpc0JlZm9yZSAgVGhlIGZ1bmN0aW9uIHVzZWQgdG8gb3JkZXIgdGhlIGRhdGFcbiAgICogQHJldHVybiB7TGlua2VkTGlzdH0gICAgICBUaGUgTGlua2VkTGlzdCBpbnN0YW5jZSAoZm9yIGNoYWluaW5nKVxuICAgKi9cbiAgcHVibGljIG1lcmdlKGxpc3Q6IExpbmtlZExpc3Q8RGF0YUNsYXNzPiwgaXNCZWZvcmU6IFNvcnRGbjxEYXRhQ2xhc3M+ID0gbnVsbCk6IExpbmtlZExpc3Q8RGF0YUNsYXNzPiB7XG4gICAgaWYgKGlzQmVmb3JlID09PSBudWxsKSB7XG4gICAgICBpc0JlZm9yZSA9IHRoaXMuaXNCZWZvcmUuYmluZCh0aGlzKTtcbiAgICB9XG4gICAgLy9cbiAgICAvLyAgR2V0IHRoZSBoZWFkIG9mIGVhY2ggbGlzdFxuICAgIC8vXG4gICAgbGV0IGxjdXIgPSB0aGlzLmxpc3QubmV4dDtcbiAgICBsZXQgbWN1ciA9IGxpc3QubGlzdC5uZXh0O1xuICAgIC8vXG4gICAgLy8gIFdoaWxlIHRoZXJlIGlzIG1vcmUgaW4gYm90aCBsaXN0c1xuICAgIC8vXG4gICAgd2hpbGUgKGxjdXIuZGF0YSAhPT0gRU5EICYmIG1jdXIuZGF0YSAhPT0gRU5EKSB7XG4gICAgICAvL1xuICAgICAgLy8gIElmIHRoZSBtZXJnZSBpdGVtIGlzIGJlZm9yZSB0aGUgbGlzdCBpdGVtXG4gICAgICAvLyAgICAod2UgaGF2ZSBmb3VuZCB3aGVyZSB0aGUgaGVhZCBvZiB0aGUgbWVyZ2UgbGlzdCBiZWxvbmdzKVxuICAgICAgLy8gICAgTGluayB0aGUgbWVyZ2UgbGlzdCBpbnRvIHRoZSBtYWluIGxpc3QgYXQgdGhpcyBwb2ludFxuICAgICAgLy8gICAgICBhbmQgbWFrZSB0aGUgbWVyZ2UgbGlzdCBiZSB0aGUgcmVtYWluZGVyIG9mIHRoZSBvcmlnaW5hbCBsaXN0LlxuICAgICAgLy8gICAgVGhlIG1lcmdlIGNvbnRpbnVlcyBieSBsb29raW5nIGZvciB3aGVyZSB0aGUgcmVzdCBvZiB0aGUgb3JpZ2luYWxcbiAgICAgIC8vICAgICAgbGlzdCBmaXRzIGludG8gdGhlIG5ld2x5IGZvcm1lZCBtYWluIGxpc3QgKHRoZSBvbGQgbWVyZ2UgbGlzdCkuXG4gICAgICAvLyAgT3RoZXJ3aXNlXG4gICAgICAvLyAgICBHbyBvbiB0byB0aGUgbmV4dCBpdGVtIGluIHRoZSBtYWluIGxpc3RcbiAgICAgIC8vXG4gICAgICBpZiAoaXNCZWZvcmUobWN1ci5kYXRhIGFzIERhdGFDbGFzcywgbGN1ci5kYXRhIGFzIERhdGFDbGFzcykpIHtcbiAgICAgICAgW21jdXIucHJldi5uZXh0LCBsY3VyLnByZXYubmV4dF0gPSBbbGN1ciwgbWN1cl07XG4gICAgICAgIFttY3VyLnByZXYsIGxjdXIucHJldl0gPSBbbGN1ci5wcmV2LCBtY3VyLnByZXZdO1xuICAgICAgICBbdGhpcy5saXN0LnByZXYubmV4dCwgbGlzdC5saXN0LnByZXYubmV4dF0gPSBbbGlzdC5saXN0LCB0aGlzLmxpc3RdO1xuICAgICAgICBbdGhpcy5saXN0LnByZXYsIGxpc3QubGlzdC5wcmV2XSA9IFtsaXN0Lmxpc3QucHJldiwgdGhpcy5saXN0LnByZXZdO1xuICAgICAgICBbbGN1ciwgbWN1cl0gPSBbbWN1ci5uZXh0LCBsY3VyXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxjdXIgPSBsY3VyLm5leHQ7XG4gICAgICB9XG4gICAgfVxuICAgIC8vXG4gICAgLy8gIElmIHRoZXJlIGlzIG1vcmUgdG8gYmUgbWVyZ2VkIChpLmUuLCB3ZSBjYW1lIHRvIHRoZSBlbmQgb2YgdGhlIG1haW4gbGlzdCksXG4gICAgLy8gIHRoZW4gbGluayB0aGF0IGF0IHRoZSBlbmQgb2YgdGhlIG1haW4gbGlzdC5cbiAgICAvL1xuICAgIGlmIChtY3VyLmRhdGEgIT09IEVORCkge1xuICAgICAgdGhpcy5saXN0LnByZXYubmV4dCA9IGxpc3QubGlzdC5uZXh0O1xuICAgICAgbGlzdC5saXN0Lm5leHQucHJldiA9IHRoaXMubGlzdC5wcmV2O1xuICAgICAgbGlzdC5saXN0LnByZXYubmV4dCA9IHRoaXMubGlzdDtcbiAgICAgIHRoaXMubGlzdC5wcmV2ID0gbGlzdC5saXN0LnByZXY7XG4gICAgICBsaXN0Lmxpc3QubmV4dCA9IGxpc3QubGlzdC5wcmV2ID0gbGlzdC5saXN0O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBpbnRlcmZhY2UgYW5kIGFic3RyYWN0IGNsYXNzIGZvciBNYXRoTGlzdCBvYmplY3RzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0xpbmtlZExpc3R9IGZyb20gJy4uL3V0aWwvTGlua2VkTGlzdC5qcyc7XG5pbXBvcnQge01hdGhJdGVtfSBmcm9tICcuL01hdGhJdGVtLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIE1hdGhMaXN0IGludGVyZmFjZSAoZXh0ZW5kcyBMaW5rZWRMaXN0PE1hdGhJdGVtPilcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0aExpc3Q8TiwgVCwgRD4gZXh0ZW5kcyBMaW5rZWRMaXN0PE1hdGhJdGVtPE4sIFQsIEQ+PiB7XG4gIC8qKlxuICAgKiBUZXN0IGlmIG9uZSBtYXRoIGl0ZW0gaXMgYmVmb3JlIHRoZSBvdGhlciBpbiB0aGUgZG9jdW1lbnQgKGEgPCBiKVxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhJdGVtfSBhICAgVGhlIGZpcnN0IE1hdGhJdGVtXG4gICAqIEBwYXJhbSB7TWF0aEl0ZW19IGIgICBUaGUgc2Vjb25kIE1hdGhJdGVtXG4gICAqL1xuICBpc0JlZm9yZShhOiBNYXRoSXRlbTxOLCBULCBEPiwgYjogTWF0aEl0ZW08TiwgVCwgRD4pOiBib29sZWFuO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgTWF0aExpc3QgYWJzdHJhY3QgY2xhc3MgKGV4dGVuZHMgTGlua2VkTGlzdDxNYXRoSXRlbT4pXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RNYXRoTGlzdDxOLCBULCBEPiBleHRlbmRzXG5MaW5rZWRMaXN0PE1hdGhJdGVtPE4sIFQsIEQ+PiBpbXBsZW1lbnRzIE1hdGhMaXN0PE4sIFQsIEQ+IHtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaXNCZWZvcmUoYTogTWF0aEl0ZW08TiwgVCwgRD4sIGI6IE1hdGhJdGVtPE4sIFQsIEQ+KSB7XG4gICAgcmV0dXJuIChhLnN0YXJ0LmkgPCBiLnN0YXJ0LmkgfHwgKGEuc3RhcnQuaSA9PT0gYi5zdGFydC5pICYmIGEuc3RhcnQubiA8IGIuc3RhcnQubikpO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgVGhlIGdlbmVyaWMgTm9kZUZhY3RvcnkgY2xhc3MgZm9yIGNyZWF0aW5nIE5vZGUgb2JqZWN0c1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtOb2RlLCBQcm9wZXJ0eUxpc3R9IGZyb20gJy4vTm9kZS5qcyc7XG5pbXBvcnQge0ZhY3RvcnksIEZhY3RvcnlOb2RlQ2xhc3MsIEFic3RyYWN0RmFjdG9yeX0gZnJvbSAnLi9GYWN0b3J5LmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiBUaGUgTm9kZUZhY3RvcnkgaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBub2RlIHR5cGUgY3JlYXRlZCBieSB0aGUgZmFjdG9yeVxuICogQHRlbXBsYXRlIEMgIFRoZSBjbGFzcyBvZiB0aGUgbm9kZSBiZWluZyBjb25zdHJ1Y3RlZCAoZm9yIGFjY2VzcyB0byBzdGF0aWMgcHJvcGVydGllcylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb2RlRmFjdG9yeTxOIGV4dGVuZHMgTm9kZSwgQyBleHRlbmRzIEZhY3RvcnlOb2RlQ2xhc3M8Tj4+IGV4dGVuZHMgRmFjdG9yeTxOLCBDPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2luZCAgVGhlIGtpbmQgb2Ygbm9kZSB0byBjcmVhdGVcbiAgICogQHBhcmFtIHtQcm9wZXJ0eUxpc3R9IHByb3BlcnRpZXMgIFRoZSBsaXN0IG9mIGluaXRpYWwgcHJvcGVydGllcyBmb3IgdGhlIG5vZGUgKGlmIGFueSlcbiAgICogQHBhcmFtIHtOW119IGNoaWxkcmVuICBUaGUgYXJyYXkgb2YgaW5pdGlhbCBjaGlsZCBub2RlcyAoaWYgYW55KVxuICAgKiBAcmV0dXJuIHtOfSAgVGhlIG5ld2x5IGNyZWF0ZWQgbm9kZSBvZiB0aGUgZ2l2ZW4ga2luZFxuICAgKi9cbiAgY3JlYXRlKGtpbmQ6IHN0cmluZywgcHJvcGVydGllcz86IFByb3BlcnR5TGlzdCwgY2hpbGRyZW4/OiBOW10pOiBOO1xufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqIFRoZSBnZW5lcmljIE5vZGVGYWN0b3J5IGNsYXNzXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBub2RlIHR5cGUgY3JlYXRlZCBieSB0aGUgZmFjdG9yeVxuICogQHRlbXBsYXRlIEMgIFRoZSBjbGFzcyBvZiB0aGUgbm9kZSBiZWluZyBjb25zdHJ1Y3RlZCAoZm9yIGFjY2VzcyB0byBzdGF0aWMgcHJvcGVydGllcylcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0Tm9kZUZhY3Rvcnk8TiBleHRlbmRzIE5vZGUsIEMgZXh0ZW5kcyBGYWN0b3J5Tm9kZUNsYXNzPE4+PiBleHRlbmRzIEFic3RyYWN0RmFjdG9yeTxOLCBDPiB7XG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjcmVhdGUoa2luZDogc3RyaW5nLCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUxpc3QgPSB7fSwgY2hpbGRyZW46IE5bXSA9IFtdKSB7XG4gICAgcmV0dXJuIHRoaXMubm9kZVtraW5kXShwcm9wZXJ0aWVzLCBjaGlsZHJlbik7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNc3R5bGUgbm9kZVxuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHtQcm9wZXJ0eUxpc3R9IGZyb20gJy4uLy4uL1RyZWUvTm9kZS5qcyc7XG5pbXBvcnQge0Fic3RyYWN0TW1sTGF5b3V0Tm9kZSwgQXR0cmlidXRlTGlzdH0gZnJvbSAnLi4vTW1sTm9kZS5qcyc7XG5pbXBvcnQge0lOSEVSSVR9IGZyb20gJy4uL0F0dHJpYnV0ZXMuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNc3R5bGUgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxMYXlvdXROb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNc3R5bGUgZXh0ZW5kcyBBYnN0cmFjdE1tbExheW91dE5vZGUge1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZGVmYXVsdHM6IFByb3BlcnR5TGlzdCA9IHtcbiAgICAuLi5BYnN0cmFjdE1tbExheW91dE5vZGUuZGVmYXVsdHMsXG4gICAgc2NyaXB0bGV2ZWw6IElOSEVSSVQsXG4gICAgZGlzcGxheXN0eWxlOiBJTkhFUklULFxuICAgIHNjcmlwdHNpemVtdWx0aXBsaWVyOiAxIC8gTWF0aC5zcXJ0KDIpLFxuICAgIHNjcmlwdG1pbnNpemU6ICc4cHgnLCAgLy8gc2hvdWxkIGJlIDhwdCwgYnV0IHRoYXQgaXMgdG9vIGxhcmdlXG4gICAgbWF0aGJhY2tncm91bmQ6IElOSEVSSVQsXG4gICAgbWF0aGNvbG9yOiBJTkhFUklULFxuICAgIGRpcjogSU5IRVJJVCxcbiAgICBpbmZpeGxpbmVicmVha3N0eWxlOiAnYmVmb3JlJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpIHtcbiAgICByZXR1cm4gJ21zdHlsZSc7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IG5vdFBhcmVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGlsZE5vZGVzWzBdICYmIHRoaXMuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgc2NyaXB0bGV2ZWwgY2hhbmdlcywgYW5kIGFkZCBtc3R5bGUgYXR0cmlidXRlcyB0byB0aGUgb25lcyBiZWluZyBpbmhlcml0ZWQuXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHNldENoaWxkSW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVMaXN0LCBkaXNwbGF5OiBib29sZWFuLCBsZXZlbDogbnVtYmVyLCBwcmltZTogYm9vbGVhbikge1xuICAgIGxldCBzY3JpcHRsZXZlbCA9IHRoaXMuYXR0cmlidXRlcy5nZXRFeHBsaWNpdCgnc2NyaXB0bGV2ZWwnKTtcbiAgICBpZiAoc2NyaXB0bGV2ZWwgIT0gbnVsbCkge1xuICAgICAgc2NyaXB0bGV2ZWwgPSBzY3JpcHRsZXZlbC50b1N0cmluZygpO1xuICAgICAgaWYgKHNjcmlwdGxldmVsLm1hdGNoKC9eXFxzKlstK10vKSkge1xuICAgICAgICBsZXZlbCArPSBwYXJzZUludChzY3JpcHRsZXZlbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXZlbCA9IHBhcnNlSW50KHNjcmlwdGxldmVsKTtcbiAgICAgIH1cbiAgICAgIHByaW1lID0gZmFsc2U7ICAvLyBzdHlsZSBjaGFuZ2UgcmVzZXRzIHRleCBwcmltZSBzdHlsZVxuICAgIH1cbiAgICBsZXQgZGlzcGxheXN0eWxlID0gdGhpcy5hdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdkaXNwbGF5c3R5bGUnKSBhcyBib29sZWFuO1xuICAgIGlmIChkaXNwbGF5c3R5bGUgIT0gbnVsbCkge1xuICAgICAgZGlzcGxheSA9IChkaXNwbGF5c3R5bGUgPT09IHRydWUpO1xuICAgICAgcHJpbWUgPSBmYWxzZTsgIC8vIHN0eWxlIGNoYW5nZSByZXNldHMgdGV4IHByaW1lIHN0eWxlXG4gICAgfVxuICAgIGNvbnN0IGNyYW1wZWQgPSB0aGlzLmF0dHJpYnV0ZXMuZ2V0RXhwbGljaXQoJ2RhdGEtY3JhbXBlZCcpIGFzIGJvb2xlYW47ICAvLyBtYW51YWwgY29udHJvbCBvZiB0ZXggcHJpbWUgc3R5bGVcbiAgICBpZiAoY3JhbXBlZCAhPSBudWxsKSB7XG4gICAgICBwcmltZSA9IGNyYW1wZWQ7XG4gICAgfVxuICAgIGF0dHJpYnV0ZXMgPSB0aGlzLmFkZEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgdGhpcy5hdHRyaWJ1dGVzLmdldEFsbEF0dHJpYnV0ZXMoKSk7XG4gICAgdGhpcy5jaGlsZE5vZGVzWzBdLnNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgZGlzcGxheSwgbGV2ZWwsIHByaW1lKTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIE1tbE1hbGlnbmdyb3VwIG5vZGVcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtBYnN0cmFjdE1tbExheW91dE5vZGUsIEF0dHJpYnV0ZUxpc3R9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuaW1wb3J0IHtJTkhFUklUfSBmcm9tICcuLi9BdHRyaWJ1dGVzLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTW1sTWFsaWduZ3JvdXAgbm9kZSBjbGFzcyAoc3ViY2xhc3Mgb2YgQWJzdHJhY3RNbWxOb2RlKVxuICovXG5cbmV4cG9ydCBjbGFzcyBNbWxNYWxpZ25ncm91cCBleHRlbmRzIEFic3RyYWN0TW1sTGF5b3V0Tm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sTGF5b3V0Tm9kZS5kZWZhdWx0cyxcbiAgICBncm91cGFsaWduOiBJTkhFUklUXG4gIH07XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnbWFsaWduZ3JvdXAnO1xuICB9XG5cbiAgLyoqXG4gICAqIDxtYWxpZ25ncm91cD4gaXMgc3BhY2UtbGlrZVxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNTcGFjZWxpa2UoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogQ2hpbGRyZW4gY2FuIGluaGVyaXQgZnJvbSA8bWFsaWduZ3JvdXA+XG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHJvdGVjdGVkIHNldENoaWxkSW5oZXJpdGVkQXR0cmlidXRlcyhhdHRyaWJ1dGVzOiBBdHRyaWJ1dGVMaXN0LCBkaXNwbGF5OiBib29sZWFuLCBsZXZlbDogbnVtYmVyLCBwcmltZTogYm9vbGVhbikge1xuICAgIGF0dHJpYnV0ZXMgPSB0aGlzLmFkZEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgdGhpcy5hdHRyaWJ1dGVzLmdldEFsbEF0dHJpYnV0ZXMoKSk7XG4gICAgc3VwZXIuc2V0Q2hpbGRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGRpc3BsYXksIGxldmVsLCBwcmltZSk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNbWxNYWxpZ25tYXJrIG5vZGVcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtBYnN0cmFjdE1tbE5vZGV9IGZyb20gJy4uL01tbE5vZGUuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxNYWxpZ25tYXJrIG5vZGUgY2xhc3MgKHN1YmNsYXNzIG9mIEFic3RyYWN0TW1sTm9kZSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sTWFsaWdubWFyayBleHRlbmRzIEFic3RyYWN0TW1sTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sTm9kZS5kZWZhdWx0cyxcbiAgICBlZGdlOiAnbGVmdCdcbiAgfTtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGtpbmQoKSB7XG4gICAgcmV0dXJuICdtYWxpZ25tYXJrJztcbiAgfVxuXG4gIC8qKlxuICAgKiBObyBjaGlsZHJlbiBhbGxvd2VkXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBhcml0eSgpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiA8bWFsaWdubWFyaz4gaXMgc3BhY2UtbGlrZVxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXQgaXNTcGFjZWxpa2UoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxOC0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBNYXRoQ2hvaWNlIG5vZGVcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7UHJvcGVydHlMaXN0fSBmcm9tICcuLi8uLi9UcmVlL05vZGUuanMnO1xuaW1wb3J0IHtBYnN0cmFjdE1tbEJhc2VOb2RlLCBBdHRyaWJ1dGVMaXN0fSBmcm9tICcuLi9NbWxOb2RlLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgTWF0aENob2ljZSBub2RlIGNsYXNzIChzdWJjbGFzcyBvZiBBYnN0cmFjdE1tbEJhc2VOb2RlKVxuICpcbiAqICBUaGlzIGlzIHVzZWQgYnkgVGVYJ3MgXFxtYXRoY2hvaWNlIG1hY3JvLCBidXQgcmVtb3ZlcyBpdHNlbGZcbiAqICBkdXJpbmcgdGhlIHNldEluaGVyaXRlZEF0dHJpYnV0ZXMgcHJvY2Vzc1xuICovXG5cbmV4cG9ydCBjbGFzcyBNYXRoQ2hvaWNlIGV4dGVuZHMgQWJzdHJhY3RNbWxCYXNlTm9kZSB7XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0czogUHJvcGVydHlMaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TW1sQmFzZU5vZGUuZGVmYXVsdHNcbiAgfTtcblxuICAvKipcbiAgICogIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGdldCBraW5kKCkge1xuICAgIHJldHVybiAnTWF0aENob2ljZSc7XG4gIH1cblxuICAvKipcbiAgICogNCBjaGlsZHJlbiAoZGlzcGxheSwgdGV4dCwgc2NyaXB0LCBhbmQgc2NyaXB0c2NyaXB0IHN0eWxlcylcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGFyaXR5KCkge1xuICAgIHJldHVybiA0O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZWxlbWVudCBpcyBub3QgY29uc2lkZXJlZCBhIE1hdGhNTCBjb250YWluZXJcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IG5vdFBhcmVudCgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBNYXRoQ2hvaWNlIG5vZGUgd2l0aCB0aGUgc2VsZWN0ZWQgb24gYmFzZWQgb24gdGhlIGRpc3BsYXlzdHlsZSBhbmQgc2NyaXB0bGV2ZWwgc2V0dGluZ3NcbiAgICogKHNvIHRoZSBNYXRoQ2hvaWNlIG5ldmVyIGVuZHMgdXAgaW4gYSBmaW5pc2hlZCBNbWxOb2RlIHRyZWUpXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldEluaGVyaXRlZEF0dHJpYnV0ZXMoYXR0cmlidXRlczogQXR0cmlidXRlTGlzdCwgZGlzcGxheTogYm9vbGVhbiwgbGV2ZWw6IG51bWJlciwgcHJpbWU6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSAoZGlzcGxheSA/IDAgOiBNYXRoLm1heCgwLCBNYXRoLm1pbihsZXZlbCwgMikpICsgMSk7XG4gICAgY29uc3QgY2hpbGQgPSB0aGlzLmNoaWxkTm9kZXNbc2VsZWN0aW9uXSB8fCB0aGlzLmZhY3RvcnkuY3JlYXRlKCdtcm93Jyk7XG4gICAgdGhpcy5wYXJlbnQucmVwbGFjZUNoaWxkKGNoaWxkLCB0aGlzKTtcbiAgICBjaGlsZC5zZXRJbmhlcml0ZWRBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMsIGRpc3BsYXksIGxldmVsLCBwcmltZSk7XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBBbiBvYmplY3QgbGlzdGluZyBhbGwgdGhlIE1hdGhNTCBub2RlIHR5cGVzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge01tbE5vZGVDbGFzcywgVGV4dE5vZGUsIFhNTE5vZGV9IGZyb20gJy4vTW1sTm9kZS5qcyc7XG5cbmltcG9ydCB7TW1sTWF0aH0gICAgICBmcm9tICcuL01tbE5vZGVzL21hdGguanMnO1xuXG5pbXBvcnQge01tbE1pfSAgICAgICAgZnJvbSAnLi9NbWxOb2Rlcy9taS5qcyc7XG5pbXBvcnQge01tbE1ufSAgICAgICAgZnJvbSAnLi9NbWxOb2Rlcy9tbi5qcyc7XG5pbXBvcnQge01tbE1vfSAgICAgICAgZnJvbSAnLi9NbWxOb2Rlcy9tby5qcyc7XG5pbXBvcnQge01tbE10ZXh0fSAgICAgZnJvbSAnLi9NbWxOb2Rlcy9tdGV4dC5qcyc7XG5pbXBvcnQge01tbE1zcGFjZX0gICAgZnJvbSAnLi9NbWxOb2Rlcy9tc3BhY2UuanMnO1xuaW1wb3J0IHtNbWxNc30gICAgICAgIGZyb20gJy4vTW1sTm9kZXMvbXMuanMnO1xuXG5pbXBvcnQge01tbE1yb3csIE1tbEluZmVycmVkTXJvd30gZnJvbSAnLi9NbWxOb2Rlcy9tcm93LmpzJztcbmltcG9ydCB7TW1sTWZyYWN9ICAgICBmcm9tICcuL01tbE5vZGVzL21mcmFjLmpzJztcbmltcG9ydCB7TW1sTXNxcnR9ICAgICBmcm9tICcuL01tbE5vZGVzL21zcXJ0LmpzJztcbmltcG9ydCB7TW1sTXJvb3R9ICAgICBmcm9tICcuL01tbE5vZGVzL21yb290LmpzJztcbmltcG9ydCB7TW1sTXN0eWxlfSAgICBmcm9tICcuL01tbE5vZGVzL21zdHlsZS5qcyc7XG5pbXBvcnQge01tbE1lcnJvcn0gICAgZnJvbSAnLi9NbWxOb2Rlcy9tZXJyb3IuanMnO1xuaW1wb3J0IHtNbWxNcGFkZGVkfSAgIGZyb20gJy4vTW1sTm9kZXMvbXBhZGRlZC5qcyc7XG5pbXBvcnQge01tbE1waGFudG9tfSAgZnJvbSAnLi9NbWxOb2Rlcy9tcGhhbnRvbS5qcyc7XG5pbXBvcnQge01tbE1mZW5jZWR9ICAgZnJvbSAnLi9NbWxOb2Rlcy9tZmVuY2VkLmpzJztcbmltcG9ydCB7TW1sTWVuY2xvc2V9ICBmcm9tICcuL01tbE5vZGVzL21lbmNsb3NlLmpzJztcblxuaW1wb3J0IHtNbWxNYWN0aW9ufSAgIGZyb20gJy4vTW1sTm9kZXMvbWFjdGlvbi5qcyc7XG5cbmltcG9ydCB7TW1sTXN1YnN1cCwgTW1sTXN1YiwgTW1sTXN1cH0gICAgICAgZnJvbSAnLi9NbWxOb2Rlcy9tc3Vic3VwLmpzJztcbmltcG9ydCB7TW1sTXVuZGVyb3ZlciwgTW1sTXVuZGVyLCBNbWxNb3Zlcn0gZnJvbSAnLi9NbWxOb2Rlcy9tdW5kZXJvdmVyLmpzJztcbmltcG9ydCB7TW1sTW11bHRpc2NyaXB0cywgTW1sTXByZXNjcmlwdHMsIE1tbE5vbmV9IGZyb20gJy4vTW1sTm9kZXMvbW11bHRpc2NyaXB0cy5qcyc7XG5cbmltcG9ydCB7TW1sTXRhYmxlfSAgICAgIGZyb20gJy4vTW1sTm9kZXMvbXRhYmxlLmpzJztcbmltcG9ydCB7TW1sTXRyLCBNbWxNbGFiZWxlZHRyfSBmcm9tICcuL01tbE5vZGVzL210ci5qcyc7XG5pbXBvcnQge01tbE10ZH0gICAgICAgICBmcm9tICcuL01tbE5vZGVzL210ZC5qcyc7XG5pbXBvcnQge01tbE1hbGlnbmdyb3VwfSBmcm9tICcuL01tbE5vZGVzL21hbGlnbmdyb3VwLmpzJztcbmltcG9ydCB7TW1sTWFsaWdubWFya30gIGZyb20gJy4vTW1sTm9kZXMvbWFsaWdubWFyay5qcyc7XG5cbmltcG9ydCB7TW1sTWdseXBofSAgICAgIGZyb20gJy4vTW1sTm9kZXMvbWdseXBoLmpzJztcblxuaW1wb3J0IHtNbWxTZW1hbnRpY3MsIE1tbEFubm90YXRpb24sIE1tbEFubm90YXRpb25YTUx9IGZyb20gJy4vTW1sTm9kZXMvc2VtYW50aWNzLmpzJztcblxuaW1wb3J0IHtUZVhBdG9tfSBmcm9tICcuL01tbE5vZGVzL1RlWEF0b20uanMnO1xuaW1wb3J0IHtNYXRoQ2hvaWNlfSBmcm9tICcuL01tbE5vZGVzL21hdGhjaG9pY2UuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhpcyBvYmplY3QgY29sbGVjdHMgYWxsIHRoZSBNYXRoTUwgbm9kZSB0eXBlcyB0b2dldGhlciBzbyB0aGF0XG4gKiAgdGhleSBjYW4gYmUgdXNlZCB0byBzZWVkIGFuIE1tbE5vZGVGYWN0b3J5LiAgT25lIGNvdWxkIGNvcHkgdGhpc1xuICogIG9iamVjdCB0byBvdmVycmlkZSBleGlzdGluZyBjbGFzc2VzIHdpdGggc3ViY2xhc3Nlcywgb3IgdG8gYWRkIG5ld1xuICogIGNsYXNzZXMgYXMgbmVjZXNzYXJ5LlxuICovXG5cbmV4cG9ydCBsZXQgTU1MOiB7W2tpbmQ6IHN0cmluZ106IE1tbE5vZGVDbGFzc30gPSB7XG4gIFtNbWxNYXRoLnByb3RvdHlwZS5raW5kXTogTW1sTWF0aCxcblxuICBbTW1sTWkucHJvdG90eXBlLmtpbmRdOiBNbWxNaSxcbiAgW01tbE1uLnByb3RvdHlwZS5raW5kXTogTW1sTW4sXG4gIFtNbWxNby5wcm90b3R5cGUua2luZF06IE1tbE1vLFxuICBbTW1sTXRleHQucHJvdG90eXBlLmtpbmRdOiBNbWxNdGV4dCxcbiAgW01tbE1zcGFjZS5wcm90b3R5cGUua2luZF06IE1tbE1zcGFjZSxcbiAgW01tbE1zLnByb3RvdHlwZS5raW5kXTogTW1sTXMsXG5cbiAgW01tbE1yb3cucHJvdG90eXBlLmtpbmRdOiBNbWxNcm93LFxuICBbTW1sSW5mZXJyZWRNcm93LnByb3RvdHlwZS5raW5kXTogTW1sSW5mZXJyZWRNcm93LFxuICBbTW1sTWZyYWMucHJvdG90eXBlLmtpbmRdOiBNbWxNZnJhYyxcbiAgW01tbE1zcXJ0LnByb3RvdHlwZS5raW5kXTogTW1sTXNxcnQsXG4gIFtNbWxNcm9vdC5wcm90b3R5cGUua2luZF06IE1tbE1yb290LFxuICBbTW1sTXN0eWxlLnByb3RvdHlwZS5raW5kXTogTW1sTXN0eWxlLFxuICBbTW1sTWVycm9yLnByb3RvdHlwZS5raW5kXTogTW1sTWVycm9yLFxuICBbTW1sTXBhZGRlZC5wcm90b3R5cGUua2luZF06IE1tbE1wYWRkZWQsXG4gIFtNbWxNcGhhbnRvbS5wcm90b3R5cGUua2luZF06IE1tbE1waGFudG9tLFxuICBbTW1sTWZlbmNlZC5wcm90b3R5cGUua2luZF06IE1tbE1mZW5jZWQsXG4gIFtNbWxNZW5jbG9zZS5wcm90b3R5cGUua2luZF06IE1tbE1lbmNsb3NlLFxuXG4gIFtNbWxNYWN0aW9uLnByb3RvdHlwZS5raW5kXTogTW1sTWFjdGlvbixcblxuICBbTW1sTXN1Yi5wcm90b3R5cGUua2luZF06IE1tbE1zdWIsXG4gIFtNbWxNc3VwLnByb3RvdHlwZS5raW5kXTogTW1sTXN1cCxcbiAgW01tbE1zdWJzdXAucHJvdG90eXBlLmtpbmRdOiBNbWxNc3Vic3VwLFxuICBbTW1sTXVuZGVyLnByb3RvdHlwZS5raW5kXTogTW1sTXVuZGVyLFxuICBbTW1sTW92ZXIucHJvdG90eXBlLmtpbmRdOiBNbWxNb3ZlcixcbiAgW01tbE11bmRlcm92ZXIucHJvdG90eXBlLmtpbmRdOiBNbWxNdW5kZXJvdmVyLFxuICBbTW1sTW11bHRpc2NyaXB0cy5wcm90b3R5cGUua2luZF06IE1tbE1tdWx0aXNjcmlwdHMsXG4gIFtNbWxNcHJlc2NyaXB0cy5wcm90b3R5cGUua2luZF06IE1tbE1wcmVzY3JpcHRzLFxuICBbTW1sTm9uZS5wcm90b3R5cGUua2luZF06IE1tbE5vbmUsXG5cbiAgW01tbE10YWJsZS5wcm90b3R5cGUua2luZF06IE1tbE10YWJsZSxcbiAgW01tbE1sYWJlbGVkdHIucHJvdG90eXBlLmtpbmRdOiBNbWxNbGFiZWxlZHRyLFxuICBbTW1sTXRyLnByb3RvdHlwZS5raW5kXTogTW1sTXRyLFxuICBbTW1sTXRkLnByb3RvdHlwZS5raW5kXTogTW1sTXRkLFxuICBbTW1sTWFsaWduZ3JvdXAucHJvdG90eXBlLmtpbmRdOiBNbWxNYWxpZ25ncm91cCxcbiAgW01tbE1hbGlnbm1hcmsucHJvdG90eXBlLmtpbmRdOiBNbWxNYWxpZ25tYXJrLFxuXG4gIFtNbWxNZ2x5cGgucHJvdG90eXBlLmtpbmRdOiBNbWxNZ2x5cGgsXG5cbiAgW01tbFNlbWFudGljcy5wcm90b3R5cGUua2luZF06IE1tbFNlbWFudGljcyxcbiAgW01tbEFubm90YXRpb24ucHJvdG90eXBlLmtpbmRdOiBNbWxBbm5vdGF0aW9uLFxuICBbTW1sQW5ub3RhdGlvblhNTC5wcm90b3R5cGUua2luZF06IE1tbEFubm90YXRpb25YTUwsXG5cbiAgW1RlWEF0b20ucHJvdG90eXBlLmtpbmRdOiBUZVhBdG9tLFxuICBbTWF0aENob2ljZS5wcm90b3R5cGUua2luZF06IE1hdGhDaG9pY2UsXG5cbiAgW1RleHROb2RlLnByb3RvdHlwZS5raW5kXTogVGV4dE5vZGUsXG4gIFtYTUxOb2RlLnByb3RvdHlwZS5raW5kXTogWE1MTm9kZVxufTtcbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgTW1sRmFjdG9yeSB0byBjcmVhdGUgTW1sIE5vZGVzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0Fic3RyYWN0Tm9kZUZhY3Rvcnl9IGZyb20gJy4uL1RyZWUvTm9kZUZhY3RvcnkuanMnO1xuaW1wb3J0IHtNbWxOb2RlLCBNbWxOb2RlQ2xhc3N9IGZyb20gJy4vTW1sTm9kZS5qcyc7XG5pbXBvcnQge01NTH0gZnJvbSAnLi9NTUwuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBNbWxGYWN0b3J5IChzdWJjbGFzcyBvZiBOb2RlRmFjdG9yeSlcbiAqL1xuXG5leHBvcnQgY2xhc3MgTW1sRmFjdG9yeSBleHRlbmRzIEFic3RyYWN0Tm9kZUZhY3Rvcnk8TW1sTm9kZSwgTW1sTm9kZUNsYXNzPiB7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IG5vZGUtY3JlYXRpb24gZnVuY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGRlZmF1bHROb2RlcyA9IE1NTDtcblxuICAvKipcbiAgICogQHJldHVybiB7T2JqZWN0fSAgVGhlIGxpc3Qgb2Ygbm9kZS1jcmVhdGlvbiBmdW5jdGlvbnMgKHNpbWlsYXIgdG8gdGhlXG4gICAqICAgICAgICAgICAgICAgICAgIE1NTCBvYmplY3QgZnJvbSBNYXRoSmF4IHYyKS5cbiAgICovXG4gIGdldCBNTUwoKTogT2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5ub2RlO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTgtMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyBiaXQtZmllbGRzIHdpdGggZXh0ZW5kYWJsZSBmaWVsZCBuYW1lc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuZXhwb3J0IGNsYXNzIEJpdEZpZWxkIHtcblxuICAvKipcbiAgICogVGhlIGxhcmdlc3QgYml0IGF2YWlsYWJsZVxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBNQVhCSVQgPSAxIDw8IDMxO1xuXG4gIC8qKlxuICAgKiBUaGUgbmV4dCBiaXQgdG8gYmUgYWxsb2NhdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIG5leHQ6IG51bWJlciA9IDE7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXAgb2YgbmFtZXMgdG8gYml0IHBvc2l0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIHN0YXRpYyBuYW1lczogTWFwPHN0cmluZywgbnVtYmVyPiA9IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogVGhlIGJpdHMgdGhhdCBhcmUgc2V0XG4gICAqL1xuICBwcm90ZWN0ZWQgYml0czogbnVtYmVyID0gMDtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVzICAgIFRoZSBuYW1lcyBvZiB0aGUgYml0IHBvc2l0aW9ucyB0byByZXNlcnZlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFsbG9jYXRlKC4uLm5hbWVzOiBzdHJpbmdbXSkge1xuICAgIGZvciAoY29uc3QgbmFtZSBvZiBuYW1lcykge1xuICAgICAgaWYgKHRoaXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQml0IGFscmVhZHkgYWxsb2NhdGVkIGZvciAnICsgbmFtZSk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5uZXh0ID09PSBCaXRGaWVsZC5NQVhCSVQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYXhpbXVtIG51bWJlciBvZiBiaXRzIGFscmVhZHkgYWxsb2NhdGVkJyk7XG4gICAgICB9XG4gICAgICB0aGlzLm5hbWVzLnNldChuYW1lLCB0aGlzLm5leHQpO1xuICAgICAgdGhpcy5uZXh0IDw8PSAxO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIG9mIHRoZSBiaXQgdG8gY2hlY2sgZm9yIGJlaW5nIGRlZmluZWRcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gICAgICBUcnVlIGlmIHRoZSBuYW1lZCBiaXQgaXMgYWxyZWFkeSBhbGxvY2F0ZWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaGFzKG5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hbWVzLmhhcyhuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgICBUaGUgbmFtZSBvZiB0aGUgYml0IHBvc2l0aW9uIHRvIHNldFxuICAgKi9cbiAgcHVibGljIHNldChuYW1lOiBzdHJpbmcpIHtcbiAgICB0aGlzLmJpdHMgfD0gdGhpcy5nZXRCaXQobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICAgVGhlIG5hbWUgb2YgdGhlIGJpdCBwb3NpdGlvbiB0byBjbGVhclxuICAgKi9cbiAgcHVibGljIGNsZWFyKG5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuYml0cyAmPSB+dGhpcy5nZXRCaXQobmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWUgICBUaGUgbmFtZSBvZiB0aGUgYml0IHRvIGNoZWNrIGlmIHNldFxuICAgKiBAcmV0dXJuIHtib29sZWFufSAgICAgIFRydWUgaWYgdGhlIG5hbWVkIGJpdCBpcyBzZXRcbiAgICovXG4gIHB1YmxpYyBpc1NldChuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5iaXRzICYgdGhpcy5nZXRCaXQobmFtZSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIGFsbCBiaXRzXG4gICAqL1xuICBwdWJsaWMgcmVzZXQoKSB7XG4gICAgdGhpcy5iaXRzID0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSAgIFRoZSBuYW1lIHdob3NlIGJpdCBwb3NpdGlvbiBpcyBuZWVkZWQgKGVycm9yIGlmIG5vdCBkZWZpbmVkKVxuICAgKiBAcmV0dXJuIHtudW1iZXJ9ICAgICAgIFRoZSBwb3NpdGlvbiBvZiB0aGUgbmFtZWQgYml0XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0Qml0KG5hbWU6IHN0cmluZyk6IG51bWJlciB7XG4gICAgY29uc3QgYml0ID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEJpdEZpZWxkKS5uYW1lcy5nZXQobmFtZSk7XG4gICAgaWYgKCFiaXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biBiaXQtZmllbGQgbmFtZTogJyArIG5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gYml0O1xuICB9XG5cbn1cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ1tdfSBuYW1lcyAgICBUaGUgbmFtZSBvZiB0aGUgcG9zaXRpb25zIHRvIGFsbG9jYXRlIGluaXRpYWxseVxuICogQHJldHVybiB7dHlwZW9mIEFic3RyYWN0Qml0RmllbGR9ICBUaGUgYml0LWZpZWxkIGNsYXNzIHdpdGggbmFtZXMgYWxsb2NhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBCaXRGaWVsZENsYXNzKC4uLm5hbWVzOiBzdHJpbmdbXSk6IHR5cGVvZiBCaXRGaWVsZCB7XG4gIGNvbnN0IEJpdHMgPSBjbGFzcyBleHRlbmRzIEJpdEZpZWxkIHt9O1xuICBCaXRzLmFsbG9jYXRlKC4uLm5hbWVzKTtcbiAgcmV0dXJuIEJpdHM7XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEltcGxlbWVudHMgdGhlIGludGVyZmFjZSBhbmQgYWJzdHJhY3QgY2xhc3MgZm9yIE1hdGhEb2N1bWVudCBvYmplY3RzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge3VzZXJPcHRpb25zLCBkZWZhdWx0T3B0aW9ucywgT3B0aW9uTGlzdCwgZXhwYW5kYWJsZX0gZnJvbSAnLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7SW5wdXRKYXgsIEFic3RyYWN0SW5wdXRKYXh9IGZyb20gJy4vSW5wdXRKYXguanMnO1xuaW1wb3J0IHtPdXRwdXRKYXgsIEFic3RyYWN0T3V0cHV0SmF4fSBmcm9tICcuL091dHB1dEpheC5qcyc7XG5pbXBvcnQge01hdGhMaXN0LCBBYnN0cmFjdE1hdGhMaXN0fSBmcm9tICcuL01hdGhMaXN0LmpzJztcbmltcG9ydCB7TWF0aEl0ZW0sIEFic3RyYWN0TWF0aEl0ZW0sIFNUQVRFfSBmcm9tICcuL01hdGhJdGVtLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgVGV4dE5vZGV9IGZyb20gJy4vTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7TW1sRmFjdG9yeX0gZnJvbSAnLi4vY29yZS9NbWxUcmVlL01tbEZhY3RvcnkuanMnO1xuaW1wb3J0IHtET01BZGFwdG9yfSBmcm9tICcuLi9jb3JlL0RPTUFkYXB0b3IuanMnO1xuaW1wb3J0IHtCaXRGaWVsZCwgQml0RmllbGRDbGFzc30gZnJvbSAnLi4vdXRpbC9CaXRGaWVsZC5qcyc7XG5cbmltcG9ydCB7UHJpb3JpdGl6ZWRMaXN0fSBmcm9tICcuLi91dGlsL1ByaW9yaXRpemVkTGlzdC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuLyoqXG4gKiBBIGZ1bmN0aW9uIHRvIGNhbGwgd2hpbGUgcmVuZGVyaW5nIGEgZG9jdW1lbnQgKHVzdWFsbHkgY2FsbHMgYSBNYXRoRG9jdW1lbnQgbWV0aG9kKVxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyRG9jPE4sIFQsIEQ+ID0gKGRvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pID0+IGJvb2xlYW47XG5cbi8qKlxuICogQSBmdW5jdGlvbiB0byBjYWxsIHdoaWxlIHJlbmRlcmluZyBhIE1hdGhJdGVtICh1c3VhbGx5IGNhbGxzIG9uZSBvZiBpdHMgbWV0aG9kcylcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIFJlbmRlck1hdGg8TiwgVCwgRD4gPSAobWF0aDogTWF0aEl0ZW08TiwgVCwgRD4sIGRvY3VtZW50OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pID0+IGJvb2xlYW47XG5cbi8qKlxuICogVGhlIGRhdGEgZm9yIGFuIGFjdGlvbiB0byBwZXJmb3JtIGR1cmluZyByZW5kZXJpbmcgb3IgY29udmVyc2lvblxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyRGF0YTxOLCBULCBEPiA9IHtcbiAgaWQ6IHN0cmluZywgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgVGhlIG5hbWUgZm9yIHRoZSBhY3Rpb25cbiAgcmVuZGVyRG9jOiBSZW5kZXJEb2M8TiwgVCwgRD4sICAgICAgICAvLyAgVGhlIGFjdGlvbiB0byB0YWtlIGR1cmluZyBhIHJlbmRlcigpIGNhbGxcbiAgcmVuZGVyTWF0aDogUmVuZGVyTWF0aDxOLCBULCBEPiwgICAgICAvLyAgVGhlIGFjdGlvbiB0byB0YWtlIGR1cmluZyBhIHJlcmVuZGVyKCkgb3IgY29udmVydCgpIGNhbGxcbiAgY29udmVydDogYm9vbGVhbiAgICAgICAgICAgICAgICAgICAgICAvLyAgV2hldGhlciB0aGUgYWN0aW9uIGlzIHRvIGJlIHVzZWQgZHVyaW5nIGNvbnZlcnQoKVxufTtcblxuLyoqXG4gKiBUaGUgZGF0YSB1c2VkIHRvIGRlZmluZSBhIHJlbmRlciBhY3Rpb24gaW4gY29uZmlndXJhdGlvbnMgYW5kIG9wdGlvbnMgb2JqZWN0c1xuICogICAodGhlIGtleSBpcyB1c2VkIGFzIHRoZSBpZCwgdGhlIG51bWJlciBpbiB0aGUgZGF0YSBiZWxvdyBpcyB0aGUgcHJpb3JpdHksIGFuZFxuICogICAgdGhlIHJlbWFpbmluZCBkYXRhIGlzIGFzIGRlc2NyaWJlZCBiZWxvdzsgaWYgbm8gYm9vbGVhbiBpcyBnaXZlbiwgY29udmVydCA9IHRydWVcbiAqICAgIGJ5IGRlZmF1bHQpXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgdHlwZSBSZW5kZXJBY3Rpb248TiwgVCwgRD4gPVxuICBbbnVtYmVyXSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZCAoaS5lLiwga2V5KSBpcyBtZXRob2QgbmFtZSB0byB1c2VcbiAgW251bWJlciwgc3RyaW5nXSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaW5nIGlzIG1ldGhvZCB0byBjYWxsXG4gIFtudW1iZXIsIHN0cmluZywgc3RyaW5nXSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzdHJpbmdzIGFyZSBtZXRob2RzIG5hbWVzIGZvciBkb2MgYW5kIG1hdGhcbiAgW251bWJlciwgUmVuZGVyRG9jPE4sIFQsIEQ+LCBSZW5kZXJNYXRoPE4sIFQsIEQ+XSB8ICAgICAgICAgICAgLy8gZXhwbGljaXQgZnVuY3Rpb25zIGZvciBkb2MgYW5kIG1hdGhcbiAgW251bWJlciwgYm9vbGVhbl0gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2FtZSBhcyBmaXJzdCBhYm92ZSwgd2l0aCBib29sZWFuIGZvciBjb252ZXJ0XG4gIFtudW1iZXIsIHN0cmluZywgYm9vbGVhbl0gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhbWUgYXMgc2Vjb25kIGFib3ZlLCB3aXRoIGJvb2xlYW4gZm9yIGNvbnZlcnRcbiAgW251bWJlciwgc3RyaW5nLCBzdHJpbmcsIGJvb2xlYW5dIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2FtZSBhcyB0aGlyZCBhYm92ZSwgd2l0aCBib29sZWFuIGZvciBjb252ZXJ0XG4gIFtudW1iZXIsIFJlbmRlckRvYzxOLCBULCBEPiwgUmVuZGVyTWF0aDxOLCBULCBEPiwgYm9vbGVhbl07ICAgIC8vIHNhbWUgYXMgZm9ydGggYWJvdmUsIHdpdGggYm9vbGVhbiBmb3IgY29udmVydFxuXG4vKipcbiAqIEFuIG9iamVjdCByZXByZXNlbnRpbmcgYSBjb2xsZWN0aW9uIG9mIHJlbmRlcmluZyBhY3Rpb25zIChpZCdzIHRpZWQgdG8gcHJpb3JpdHktYW5kLW1ldGhvZCBkYXRhKVxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgUmVuZGVyQWN0aW9uczxOLCBULCBEPiA9IHtbaWQ6IHN0cmluZ106IFJlbmRlckFjdGlvbjxOLCBULCBEPn07XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIHByaW9yaXRpemVkIGxpc3Qgb2YgcmVuZGVyIGFjdGlvbnMuICBFeHRlbnNpb25zIGNhbiBhZGQgYWN0aW9ucyB0byB0aGUgbGlzdFxuICogICB0byBtYWtlIGl0IGVhc3kgdG8gZXh0ZW5kIHRoZSBub3JtYWwgdHlwZXNldHRpbmcgYW5kIGNvbnZlcnNpb24gb3BlcmF0aW9ucy5cbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBjbGFzcyBSZW5kZXJMaXN0PE4sIFQsIEQ+IGV4dGVuZHMgUHJpb3JpdGl6ZWRMaXN0PFJlbmRlckRhdGE8TiwgVCwgRD4+IHtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSZW5kZXJMaXN0IGZyb20gYW4gaW5pdGlhbCBsaXN0IG9mIHJlbmRlcmluZyBhY3Rpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7UmVuZGVyQWN0aW9uc30gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zIHRvIHRha2UgZHVyaW5nIHJlbmRlcigpLCByZXJlbmRlcigpLCBhbmQgY29udmVydCgpIGNhbGxzXG4gICAqIEByZXR1cm5zIHtSZW5kZXJMaXN0fSAgICBUaGUgbmV3bHkgY3JlYXRlZCBwcmlvcml0aWVkIGxpc3RcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgY3JlYXRlPE4sIFQsIEQ+KGFjdGlvbnM6IFJlbmRlckFjdGlvbnM8TiwgVCwgRD4pOiBSZW5kZXJMaXN0PE4sIFQsIEQ+IHtcbiAgICBjb25zdCBsaXN0ID0gbmV3IHRoaXM8TiwgVCwgRD4oKTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKGFjdGlvbnMpKSB7XG4gICAgICBjb25zdCBbYWN0aW9uLCBwcmlvcml0eV0gPSB0aGlzLmFjdGlvbjxOLCBULCBEPihpZCwgYWN0aW9uc1tpZF0pO1xuICAgICAgaWYgKHByaW9yaXR5KSB7XG4gICAgICAgIGxpc3QuYWRkKGFjdGlvbiwgcHJpb3JpdHkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbGlzdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXMgYSBSZW5kZXJBY3Rpb24gdG8gcHJvZHVjZSB0aGUgY29ycmVzcGluZGluZyBSZW5kZXJEYXRhIGl0ZW1cbiAgICogIChlLmcuLCB0dXJuIG1ldGhvZCBuYW1lcyBpbnRvIGFjdHVhbCBmdW5jdGlvbnMgdGhhdCBjYWxsIHRoZSBtZXRob2QpXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAgICAgICAgICAgICAgIFRoZSBpZCBvZiB0aGUgYWN0aW9uXG4gICAqIEBwYXJhbSB7UmVuZGVyQWN0aW9ufSBhY3Rpb24gICAgIFRoZSBSZW5kZXJBY3Rpb24gZGVmaW5pbmcgdGhlIGFjdGlvblxuICAgKiBAcmV0dXJucyB7W1JlbmRlckRhdGEsbnVtYmVyXX0gICBUaGUgY29ycmVzcG9uZGluZyBSZW5kZXJEYXRhIGRlZmluaXRpb24gZm9yIHRoZSBhY3Rpb24gYW5kIGl0cyBwcmlvcml0eVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhY3Rpb248TiwgVCwgRD4oaWQ6IHN0cmluZywgYWN0aW9uOiBSZW5kZXJBY3Rpb248TiwgVCwgRD4pOiBbUmVuZGVyRGF0YTxOLCBULCBEPiwgbnVtYmVyXSB7XG4gICAgbGV0IHJlbmRlckRvYywgcmVuZGVyTWF0aDtcbiAgICBsZXQgY29udmVydCA9IHRydWU7XG4gICAgbGV0IHByaW9yaXR5ID0gYWN0aW9uWzBdO1xuICAgIGlmIChhY3Rpb24ubGVuZ3RoID09PSAxIHx8IHR5cGVvZiBhY3Rpb25bMV0gPT09ICdib29sZWFuJykge1xuICAgICAgYWN0aW9uLmxlbmd0aCA9PT0gMiAmJiAoY29udmVydCA9IGFjdGlvblsxXSBhcyBib29sZWFuKTtcbiAgICAgIFtyZW5kZXJEb2MsIHJlbmRlck1hdGhdID0gdGhpcy5tZXRob2RBY3Rpb25zKGlkKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBhY3Rpb25bMV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICBpZiAodHlwZW9mIGFjdGlvblsyXSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgYWN0aW9uLmxlbmd0aCA9PT0gNCAmJiAoY29udmVydCA9IGFjdGlvblszXSBhcyBib29sZWFuKTtcbiAgICAgICAgY29uc3QgW21ldGhvZDEsIG1ldGhvZDJdID0gYWN0aW9uLnNsaWNlKDEpIGFzIFtzdHJpbmcsIHN0cmluZ107XG4gICAgICAgIFtyZW5kZXJEb2MsIHJlbmRlck1hdGhdID0gdGhpcy5tZXRob2RBY3Rpb25zKG1ldGhvZDEsIG1ldGhvZDIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aW9uLmxlbmd0aCA9PT0gMyAmJiAoY29udmVydCA9IGFjdGlvblsyXSBhcyBib29sZWFuKTtcbiAgICAgICAgW3JlbmRlckRvYywgcmVuZGVyTWF0aF0gPSB0aGlzLm1ldGhvZEFjdGlvbnMoYWN0aW9uWzFdIGFzIHN0cmluZyk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGFjdGlvbi5sZW5ndGggPT09IDQgJiYgKGNvbnZlcnQgPSBhY3Rpb25bM10gYXMgYm9vbGVhbik7XG4gICAgICBbcmVuZGVyRG9jLCByZW5kZXJNYXRoXSA9IGFjdGlvbi5zbGljZSgxKSBhcyBbUmVuZGVyRG9jPE4sIFQsIEQ+LCBSZW5kZXJNYXRoPE4sIFQsIEQ+XTtcbiAgICB9XG4gICAgcmV0dXJuIFt7aWQsIHJlbmRlckRvYywgcmVuZGVyTWF0aCwgY29udmVydH0gYXMgUmVuZGVyRGF0YTxOLCBULCBEPiwgcHJpb3JpdHldO1xuICB9XG5cbiAgLyoqXG4gICAqIFByb2R1Y2VzIHRoZSBkb2MgYW5kIG1hdGggYWN0aW9ucyBmb3IgdGhlIGdpdmVuIG1ldGhvZCBuYW1lKHMpXG4gICAqICAgKGEgYmxhbmsgbmFtZSBpcyBhIG5vLW9wKVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWV0aG9kMSAgICBUaGUgbWV0aG9kIHRvIHVzZSBmb3IgdGhlIHJlbmRlcigpIGNhbGxcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1ldGhvZDEgICAgVGhlIG1ldGhvZCB0byB1c2UgZm9yIHRoZSByZXJlbmRlcigpIGFuZCBjb252ZXJ0KCkgY2FsbHNcbiAgICovXG4gIHByb3RlY3RlZCBzdGF0aWMgbWV0aG9kQWN0aW9ucyhtZXRob2QxOiBzdHJpbmcsIG1ldGhvZDI6IHN0cmluZyA9IG1ldGhvZDEpIHtcbiAgICByZXR1cm4gW1xuICAgICAgKGRvY3VtZW50OiBhbnkpID0+IHttZXRob2QxICYmIGRvY3VtZW50W21ldGhvZDFdKCk7IHJldHVybiBmYWxzZTsgfSxcbiAgICAgIChtYXRoOiBhbnksIGRvY3VtZW50OiBhbnkpID0+IHttZXRob2QyICYmIG1hdGhbbWV0aG9kMl0oZG9jdW1lbnQpOyByZXR1cm4gZmFsc2U7IH1cbiAgICBdO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gdGhlIGRvY3VtZW50LWxldmVsIHJlbmRlcmluZyBmdW5jdGlvbnNcbiAgICpcbiAgICogQHBhcmFtIHtNYXRoRG9jdW1lbnR9IGRvY3VtZW50ICAgVGhlIE1hdGhEb2N1bWVudCB3aG9zZSBtZXRob2RzIGFyZSB0byBiZSBjYWxsZWRcbiAgICogQHBhcmFtIHtudW1iZXI9fSBzdGFydCAgICAgICAgICAgVGhlIHN0YXRlIGF0IHdoaWNoIHRvIHN0YXJ0IHJlbmRlcmluZyAoZGVmYXVsdCBpcyBVTlBST0NFU1NFRClcbiAgICovXG4gIHB1YmxpYyByZW5kZXJEb2MoZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPiwgc3RhcnQ6IG51bWJlciA9IFNUQVRFLlVOUFJPQ0VTU0VEKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgIGlmIChpdGVtLnByaW9yaXR5ID49IHN0YXJ0KSB7XG4gICAgICAgIGlmIChpdGVtLml0ZW0ucmVuZGVyRG9jKGRvY3VtZW50KSkgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBQZXJmb3JtIHRoZSBNYXRoSXRlbS1sZXZlbCByZW5kZXJpbmcgZnVuY3Rpb25zXG4gICAqXG4gICAqIEBwYXJhbSB7TWF0aEl0ZW19IG1hdGggICAgICAgICAgIFRoZSBNYXRoSXRlbSB3aG9zZSBtZXRob2RzIGFyZSB0byBiZSBjYWxsZWRcbiAgICogQHBhcmFtIHtNYXRoRG9jdW1lbnR9IGRvY3VtZW50ICAgVGhlIE1hdGhEb2N1bWVudCB0byBwYXNzIHRvIHRoZSBNYXRoSXRlbSBtZXRob2RzXG4gICAqIEBwYXJhbSB7bnVtYmVyPX0gc3RhcnQgICAgICAgICAgIFRoZSBzdGF0ZSBhdCB3aGljaCB0byBzdGFydCByZW5kZXJpbmcgKGRlZmF1bHQgaXMgVU5QUk9DRVNTRUQpXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyTWF0aChtYXRoOiBNYXRoSXRlbTxOLCBULCBEPiwgZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPiwgc3RhcnQ6IG51bWJlciA9IFNUQVRFLlVOUFJPQ0VTU0VEKSB7XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgIGlmIChpdGVtLnByaW9yaXR5ID49IHN0YXJ0KSB7XG4gICAgICAgIGlmIChpdGVtLml0ZW0ucmVuZGVyTWF0aChtYXRoLCBkb2N1bWVudCkpIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGVyZm9ybSB0aGUgTWF0aEl0ZW0tbGV2ZWwgY29udmVyc2lvbiBmdW5jdGlvbnNcbiAgICpcbiAgICogQHBhcmFtIHtNYXRoSXRlbX0gbWF0aCAgICAgICAgICAgVGhlIE1hdGhJdGVtIHdob3NlIG1ldGhvZHMgYXJlIHRvIGJlIGNhbGxlZFxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgICBUaGUgTWF0aERvY3VtZW50IHRvIHBhc3MgdG8gdGhlIE1hdGhJdGVtIG1ldGhvZHNcbiAgICogQHBhcmFtIHtudW1iZXI9fSBlbmQgICAgICAgICAgICAgVGhlIHN0YXRlIGF0IHdoaWNoIHRvIGVuZCByZW5kZXJpbmcgKGRlZmF1bHQgaXMgTEFTVClcbiAgICovXG4gIHB1YmxpYyByZW5kZXJDb252ZXJ0KG1hdGg6IE1hdGhJdGVtPE4sIFQsIEQ+LCBkb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+LCBlbmQ6IG51bWJlciA9IFNUQVRFLkxBU1QpIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgaWYgKGl0ZW0ucHJpb3JpdHkgPiBlbmQpIHJldHVybjtcbiAgICAgIGlmIChpdGVtLml0ZW0uY29udmVydCkge1xuICAgICAgICBpZiAoaXRlbS5pdGVtLnJlbmRlck1hdGgobWF0aCwgZG9jdW1lbnQpKSByZXR1cm47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYW4gZW50cnkgaW4gdGhlIGxpc3Qgd2l0aCBhIGdpdmVuIElEXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBpZCAgICAgICAgICAgIFRoZSBpZCB0byBzZWFyY2ggZm9yXG4gICAqIEByZXR1cm5zIHtSZW5kZXJEYXRhfG51bGx9ICAgVGhlIGRhdGEgZm9yIHRoZSBnaXZlbiBpZCwgaWYgZm91bmQsIG9yIG51bGxcbiAgICovXG4gIHB1YmxpYyBmaW5kSUQoaWQ6IHN0cmluZyk6IFJlbmRlckRhdGE8TiwgVCwgRD4gfCBudWxsIHtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcykge1xuICAgICAgaWYgKGl0ZW0uaXRlbS5pZCA9PT0gaWQpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qKlxuICogVGhlIHdheXMgb2Ygc3BlY2lmeWluZyBhIGNvbnRhaW5lciAoYSBzZWxlY3RvciBzdHJpbmcsIGFuIGFjdHVhbCBub2RlLFxuICogb3IgYW4gYXJyYXkgb2YgdGhvc2UgKGUuZy4sIHRoZSByZXN1bHQgb2YgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoKSlcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgQ29udGFpbmVyTGlzdDxOPiA9IHN0cmluZyB8IE4gfCAoc3RyaW5nIHwgTiB8IE5bXSlbXTtcblxuLyoqXG4gKiBUaGUgb3B0aW9ucyBhbGxvd2VkIGZvciB0aGUgcmVzZXQoKSBtZXRob2RcbiAqL1xuZXhwb3J0IHR5cGUgUmVzZXRMaXN0ID0ge1xuICBhbGw/OiBib29sZWFuLFxuICBwcm9jZXNzZWQ/OiBib29sZWFuLFxuICBpbnB1dEpheD86IGFueVtdLFxuICBvdXRwdXRKYXg/OiBhbnlbXVxufTtcblxuLyoqXG4gKiBUaGUgZGVmYXVsdCBvcHRpb24gbGlzdCBmb3IgdGhlIHJlc2V0KCkgbWV0aG9kXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldE9wdGlvbnM6IFJlc2V0TGlzdCA9IHtcbiAgYWxsOiBmYWxzZSxcbiAgcHJvY2Vzc2VkOiBmYWxzZSxcbiAgaW5wdXRKYXg6IG51bGwsXG4gIG91dHB1dEpheDogbnVsbFxufTtcblxuLyoqXG4gKiBUaGUgb3B0aW9uIGxpc3QgZm9yIHdoZW4gYWxsIG9wdGlvbnMgYXJlIHRvIGJlIHJlc2V0XG4gKi9cbmV4cG9ydCBjb25zdCByZXNldEFsbE9wdGlvbnM6IFJlc2V0TGlzdCA9IHtcbiAgYWxsOiB0cnVlLFxuICBwcm9jZXNzZWQ6IHRydWUsXG4gIGlucHV0SmF4OiBbXSxcbiAgb3V0cHV0SmF4OiBbXVxufTtcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIE1hdGhEb2N1bWVudCBpbnRlcmZhY2VcbiAqXG4gKiAgVGhlIE1hdGhEb2N1bWVudCBpcyBjcmVhdGVkIGJ5IE1hdGhKYXguRG9jdW1lbnQoKSBhbmQgaG9sZHMgdGhlXG4gKiAgZG9jdW1lbnQsIHRoZSBtYXRoIGZvdW5kIGluIGl0LCBhbmQgc28gb24uICBUaGUgbWV0aG9kcyBvZiB0aGVcbiAqICBNYXRoRG9jdW1lbnQgYWxsIHJldHVybiB0aGUgTWF0aERvY3VtZW50IGl0c2VsZiwgc28geW91IGNhblxuICogIGNoYWluIHRoZSBtZXRob2QgY2FsbHMuICBFLmcuLFxuICpcbiAqICAgIGNvbnN0IGh0bWwgPSBNYXRoSmF4LkRvY3VtZW50KCc8aHRtbD4uLi48L2h0bWw+Jyk7XG4gKiAgICBodG1sLmZpbmRNYXRoKClcbiAqICAgICAgICAuY29tcGlsZSgpXG4gKiAgICAgICAgLmdldE1ldHJpY3MoKVxuICogICAgICAgIC50eXBlc2V0KClcbiAqICAgICAgICAudXBkYXRlRG9jdW1lbnQoKTtcbiAqXG4gKiAgVGhlIE1hdGhEb2N1bWVudCBpcyB0aGUgbWFpbiBpbnRlcmZhY2UgZm9yIHBhZ2UgYXV0aG9ycyB0b1xuICogIGludGVyYWN0IHdpdGggTWF0aEpheC5cbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0aERvY3VtZW50PE4sIFQsIEQ+IHtcbiAgLyoqXG4gICAqIFRoZSBkb2N1bWVudCBiZWluZyBwcm9jZXNzZWQgKGUuZy4sIERPTSBkb2N1bWVudCwgb3IgTWFya2Rvd24gc3RyaW5nKVxuICAgKi9cbiAgZG9jdW1lbnQ6IEQ7XG5cbiAgLyoqXG4gICAqIFRoZSBraW5kIG9mIE1hdGhEb2N1bWVudCAoZS5nLiwgXCJIVE1MXCIpXG4gICAqL1xuICBraW5kOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcHRpb25zIGZvciB0aGUgZG9jdW1lbnRcbiAgICovXG4gIG9wdGlvbnM6IE9wdGlvbkxpc3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIE1hdGhJdGVtcyBmb3VuZCBpbiB0aGlzIHBhZ2VcbiAgICovXG4gIG1hdGg6IE1hdGhMaXN0PE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBhY3Rpb25zIHRvIHRha2UgZHVyaW5nIGEgcmVuZGVyKCkgb3IgY29udmVydCgpIGNhbGxcbiAgICovXG4gIHJlbmRlckFjdGlvbnM6IFJlbmRlckxpc3Q8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIFRoaXMgb2JqZWN0IHRyYWNrcyB3aGF0IG9wZXJhdGlvbnMgaGF2ZSBiZWVuIHBlcmZvcm1lZCwgc28gdGhhdCAod2hlblxuICAgKiAgYXN5bmNocm9ub3VzIG9wZXJhdGlvbnMgYXJlIHVzZWQpLCB0aGUgb25lcyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuXG4gICAqICBjb21wbGV0ZWQgd29uJ3QgYmUgcGVyZm9ybWVkIGFnYWluLlxuICAgKi9cbiAgcHJvY2Vzc2VkOiBCaXRGaWVsZDtcblxuICAvKipcbiAgICogQW4gYXJyYXkgb2YgaW5wdXQgamF4IHRvIHJ1biBvbiB0aGUgZG9jdW1lbnRcbiAgICovXG4gIGlucHV0SmF4OiBJbnB1dEpheDxOLCBULCBEPltdO1xuXG4gIC8qKlxuICAgKiBUaGUgb3V0cHV0IGpheCB0byB1c2UgZm9yIHRoZSBkb2N1bWVudFxuICAgKi9cbiAgb3V0cHV0SmF4OiBPdXRwdXRKYXg8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIFRoZSBET00gYWRhcHRvciB0byB1c2UgZm9yIGlucHV0IGFuZCBvdXRwdXRcbiAgICovXG4gIGFkYXB0b3I6IERPTUFkYXB0b3I8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIFRoZSBNbWxGYWN0b3J5IHRvIGJlIHVzZWQgZm9yIGlucHV0IGpheCBhbmQgZXJyb3IgcHJvY2Vzc2luZ1xuICAgKi9cbiAgbW1sRmFjdG9yeTogTW1sRmFjdG9yeTtcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkICAgICAgVGhlIGlkIG9mIHRoZSBhY3Rpb24gdG8gYWRkXG4gICAqIEBwYXJhbSB7YW55W119IGFjdGlvbiAgIFRoZSBSZW5kZXJBY3Rpb24gdG8gdGFrZVxuICAgKi9cbiAgYWRkUmVuZGVyQWN0aW9uKGlkOiBzdHJpbmcsIC4uLmFjdGlvbjogYW55W10pOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gaWQgICBUaGUgaWQgb2YgdGhlIGFjdGlvbiB0byByZW1vdmVcbiAgICovXG4gIHJlbW92ZVJlbmRlckFjdGlvbihpZDogc3RyaW5nKTogdm9pZDtcblxuICAvKipcbiAgICogUGVyZm9ybSB0aGUgcmVuZGVyQWN0aW9ucyBvbiB0aGUgZG9jdW1lbnRcbiAgICovXG4gIHJlbmRlcigpOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIFJlcmVuZGVyIHRoZSBNYXRoSXRlbXMgb24gdGhlIHBhZ2VcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXI9fSBzdGFydCAgICBUaGUgc3RhdGUgdG8gc3RhcnQgcmVyZW5kZXJpbmcgYXRcbiAgICogQHJldHVybiB7TWF0aERvY3VtZW50fSAgICBUaGUgbWF0aCBkb2N1bWVudCBpbnN0YW5jZVxuICAgKi9cbiAgcmVyZW5kZXIoc3RhcnQ/OiBudW1iZXIpOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBtYXRoIHN0cmluZyB0byB0aGUgZG9jdW1lbnQncyBvdXRwdXQgZm9ybWF0XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXRoICAgICAgICAgICBUaGUgbWF0aCBzdHJpbmcgdG8gY29udmVydFxuICAgKiBAcGFyYW1zIHtPcHRpb25MaXN0fSBvcHRpb25zICAgVGhlIG9wdGlvbnMgZm9yIHRoZSBjb252ZXJzaW9uIChlLmcuLCBmb3JtYXQsIGV4LCBlbSwgZXRjLilcbiAgICogQHJldHVybiB7TW1sTm9kZXxOfSAgICAgICAgICAgIFRoZSBNbWxOb2RlIG9yIE4gbm9kZSBmb3IgdGhlIGNvbnZlcnRlZCBjb250ZW50XG4gICAqL1xuICBjb252ZXJ0KG1hdGg6IHN0cmluZywgb3B0aW9ucz86IE9wdGlvbkxpc3QpOiBNbWxOb2RlIHwgTjtcblxuICAvKipcbiAgICogTG9jYXRlcyB0aGUgbWF0aCBpbiB0aGUgZG9jdW1lbnQgYW5kIGNvbnN0cnVjdHMgdGhlIE1hdGhMaXN0XG4gICAqICBmb3IgdGhlIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgIFRoZSBvcHRpb25zIGZvciBsb2NhdGluZyB0aGUgbWF0aFxuICAgKiBAcmV0dXJuIHtNYXRoRG9jdW1lbnR9ICAgICAgIFRoZSBtYXRoIGRvY3VtZW50IGluc3RhbmNlXG4gICAqL1xuICBmaW5kTWF0aChvcHRpb25zPzogT3B0aW9uTGlzdCk6IE1hdGhEb2N1bWVudDxOLCBULCBEPjtcblxuICAvKipcbiAgICogQ2FsbHMgdGhlIGlucHV0IGpheCB0byBwcm9jZXNzIHRoZSBNYXRoSXRlbXMgaW4gdGhlIE1hdGhMaXN0XG4gICAqXG4gICAqIEByZXR1cm4ge01hdGhEb2N1bWVudH0gIFRoZSBtYXRoIGRvY3VtZW50IGluc3RhbmNlXG4gICAqL1xuICBjb21waWxlKCk6IE1hdGhEb2N1bWVudDxOLCBULCBEPjtcblxuICAvKipcbiAgICogR2V0cyB0aGUgbWV0cmljIGluZm9ybWF0aW9uIGZvciB0aGUgTWF0aEl0ZW1zXG4gICAqXG4gICAqIEByZXR1cm4ge01hdGhEb2N1bWVudH0gIFRoZSBtYXRoIGRvY3VtZW50IGluc3RhbmNlXG4gICAqL1xuICBnZXRNZXRyaWNzKCk6IE1hdGhEb2N1bWVudDxOLCBULCBEPjtcblxuICAvKipcbiAgICogQ2FsbHMgdGhlIG91dHB1dCBqYXggdG8gcHJvY2VzcyB0aGUgY29tcGlsZWQgbWF0aCBpbiB0aGUgTWF0aExpc3RcbiAgICpcbiAgICogQHJldHVybiB7TWF0aERvY3VtZW50fSAgVGhlIG1hdGggZG9jdW1lbnQgaW5zdGFuY2VcbiAgICovXG4gIHR5cGVzZXQoKTogTWF0aERvY3VtZW50PE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoZSBkb2N1bWVudCB0byBpbmNsdWRlIHRoZSB0eXBlc2V0IG1hdGhcbiAgICpcbiAgICogQHJldHVybiB7TWF0aERvY3VtZW50fSAgVGhlIG1hdGggZG9jdW1lbnQgaW5zdGFuY2VcbiAgICovXG4gIHVwZGF0ZURvY3VtZW50KCk6IE1hdGhEb2N1bWVudDxOLCBULCBEPjtcblxuICAvKipcbiAgICogUmVtb3ZlcyB0aGUgdHlwZXNldCBtYXRoIGZyb20gdGhlIGRvY3VtZW50XG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gcmVzdG9yZSAgVHJ1ZSBpZiB0aGUgb3JpZ2luYWwgbWF0aCBzaG91bGQgYmUgcHV0XG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sgaW50byB0aGUgZG9jdW1lbnQgYXMgd2VsbFxuICAgKiBAcmV0dXJuIHtNYXRoRG9jdW1lbnR9ICAgIFRoZSBtYXRoIGRvY3VtZW50IGluc3RhbmNlXG4gICAqL1xuICByZW1vdmVGcm9tRG9jdW1lbnQocmVzdG9yZT86IGJvb2xlYW4pOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc3RhdGUgb2YgdGhlIGRvY3VtZW50IChhbGxvd2luZyB5b3UgdG8gcm9sbCBiYWNrXG4gICAqICB0aGUgc3RhdGUgdG8gYSBwcmV2aW91cyBvbmUsIGlmIG5lZWRlZCkuXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBzdGF0ZSAgICAgVGhlIG5ldyBzdGF0ZSBvZiB0aGUgZG9jdW1lbnRcbiAgICogQHBhcmFtIHtib29sZWFufSByZXN0b3JlICBUcnVlIGlmIHRoZSBvcmlnaW5hbCBtYXRoIHNob3VsZCBiZSBwdXRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayBpbnRvIHRoZSBkb2N1bWVudCBkdXJpbmcgdGhlIHJvbGxiYWNrXG4gICAqIEByZXR1cm4ge01hdGhEb2N1bWVudH0gICAgVGhlIG1hdGggZG9jdW1lbnQgaW5zdGFuY2VcbiAgICovXG4gIHN0YXRlKHN0YXRlOiBudW1iZXIsIHJlc3RvcmU/OiBib29sZWFuKTogTWF0aERvY3VtZW50PE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgcHJvY2Vzc2VkIHZhbHVlcyBzbyB0aGF0IHRoZSBkb2N1bWVudCBjYW4gYmUgcmVwcm9jZXNzZWRcbiAgICpcbiAgICogQHBhcmFtIHtSZXNldExpc3R9IG9wdGlvbnMgICBUaGUgdGhpbmdzIHRvIGJlIHJlc2V0XG4gICAqIEByZXR1cm4ge01hdGhEb2N1bWVudH0gICAgICAgVGhlIG1hdGggZG9jdW1lbnQgaW5zdGFuY2VcbiAgICovXG4gIHJlc2V0KG9wdGlvbnM/OiBSZXNldExpc3QpOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRoZSBwcm9jZXNzZWQgdmFsdWVzIGFuZCBjbGVhciB0aGUgTWF0aExpc3QgKHNvIHRoYXQgbmV3IG1hdGhcbiAgICogY2FuIGJlIHByb2Nlc3NlZCBpbiB0aGUgZG9jdW1lbnQpLlxuICAgKlxuICAgKiBAcmV0dXJuIHtNYXRoRG9jdW1lbnR9ICBUaGUgbWF0aCBkb2N1bWVudCBpbnN0YW5jZVxuICAgKi9cbiAgY2xlYXIoKTogTWF0aERvY3VtZW50PE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBNZXJnZXMgYSBNYXRoTGlzdCBpbnRvIHRoZSBsaXN0IGZvciB0aGlzIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge01hdGhMaXN0fSBsaXN0ICAgVGhlIE1hdGhMaXN0IHRvIGJlIG1lcmdlZCBpbnRvIHRoaXMgZG9jdW1lbnQncyBsaXN0XG4gICAqIEByZXR1cm4ge01hdGhEb2N1bWVudH0gICBUaGUgbWF0aCBkb2N1bWVudCBpbnN0YW5jZVxuICAgKi9cbiAgY29uY2F0KGxpc3Q6IE1hdGhMaXN0PE4sIFQsIEQ+KTogTWF0aERvY3VtZW50PE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgdHlwZXNldCBNYXRoSXRlbXMgdGhhdCBhcmUgd2l0aGluIHRoZSBnaXZlbiBjb250YWluZXJcbiAgICogICBmcm9tIHRoZSBkb2N1bWVudCdzIE1hdGhMaXN0LiAgKEUuZy4sIHdoZW4gdGhlIGNvbnRlbnQgb2YgdGhlXG4gICAqICAgY29udGFpbmVyIGhhcyBiZWVuIHVwZGF0ZWQgYW5kIHlvdSB3YW50IHRvIHJlbW92ZSB0aGVcbiAgICogICBhc3NvY2lhdGVkIE1hdGhJdGVtcylcbiAgICpcbiAgICogQHBhcmFtIHtDb250YWluZXJMaXN0PE4+fSBlbGVtZW50cyAgIFRoZSBjb250YWluZXIgRE9NIGVsZW1lbnRzIHdob3NlIG1hdGggaXRlbXMgYXJlIHRvIGJlIHJlbW92ZWRcbiAgICogQHJldHVybiB7TWF0aEl0ZW08TixULEQ+W119ICAgICAgICAgIFRoZSByZW1vdmVkIE1hdGhJdGVtc1xuICAgKi9cbiAgY2xlYXJNYXRoSXRlbXNXaXRoaW4oY29udGFpbmVyczogQ29udGFpbmVyTGlzdDxOPik6IE1hdGhJdGVtPE4sIFQsIEQ+W107XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdHlwZXNldCBNYXRoSXRlbXMgdGhhdCBhcmUgd2l0aGluIGEgZ2l2ZW4gY29udGFpbmVyLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbnRhaW5lckxpc3Q8Tj59IGVsZW1lbnRzICAgVGhlIGNvbnRhaW5lciBET00gZWxlbWVudHMgd2hvc2UgbWF0aCBpdGVtcyBhcmUgdG8gYmUgZm91bmRcbiAgICogQHJldHVybiB7TWF0aEl0ZW08TixULEQ+W119ICAgICAgICAgIFRoZSBsaXN0IG9mIE1hdGhJdGVtcyB3aXRoaW4gdGhhdCBjb250YWluZXJcbiAgICovXG4gIGdldE1hdGhJdGVtc1dpdGhpbihlbGVtZW50czogQ29udGFpbmVyTGlzdDxOPik6IE1hdGhJdGVtPE4sIFQsIEQ+W107XG5cbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4vKipcbiAqIERlZmF1bHRzIHVzZWQgd2hlbiBpbnB1dCBqYXggaXNuJ3Qgc3BlY2lmaWVkXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5jbGFzcyBEZWZhdWx0SW5wdXRKYXg8TiwgVCwgRD4gZXh0ZW5kcyBBYnN0cmFjdElucHV0SmF4PE4sIFQsIEQ+IHtcbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNvbXBpbGUoX21hdGg6IE1hdGhJdGVtPE4sIFQsIEQ+KSB7XG4gICAgcmV0dXJuIG51bGwgYXMgTW1sTm9kZTtcbiAgfVxufVxuXG4vKipcbiAqIERlZmF1bHRzIHVzZWQgd2hlbiBvdXB1dCBqYXggaXNuJ3Qgc3BlY2lmaWVkXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5jbGFzcyBEZWZhdWx0T3V0cHV0SmF4PE4sIFQsIEQ+IGV4dGVuZHMgQWJzdHJhY3RPdXRwdXRKYXg8TiwgVCwgRD4ge1xuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdHlwZXNldChfbWF0aDogTWF0aEl0ZW08TiwgVCwgRD4sIF9kb2N1bWVudDogTWF0aERvY3VtZW50PE4sIFQsIEQ+ID0gbnVsbCkge1xuICAgIHJldHVybiBudWxsIGFzIE47XG4gIH1cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGVzY2FwZWQoX21hdGg6IE1hdGhJdGVtPE4sIFQsIEQ+LCBfZG9jdW1lbnQ/OiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4pIHtcbiAgICByZXR1cm4gbnVsbCBhcyBOO1xuICB9XG59XG5cbi8qKlxuICogRGVmYXVsdCBmb3IgdGhlIE1hdGhMaXN0IHdoZW4gb25lIGlzbid0IHNwZWNpZmllZFxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuY2xhc3MgRGVmYXVsdE1hdGhMaXN0PE4sIFQsIEQ+IGV4dGVuZHMgQWJzdHJhY3RNYXRoTGlzdDxOLCBULCBEPiB7fVxuXG4vKipcbiAqIERlZmF1bHQgZm9yIHRoZSBNYXRoaXRlbSB3aGVuIG9uZSBpc24ndCBzcGVjaWZpZWRcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmNsYXNzIERlZmF1bHRNYXRoSXRlbTxOLCBULCBEPiBleHRlbmRzIEFic3RyYWN0TWF0aEl0ZW08TiwgVCwgRD4ge31cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgYWJzdHJhY3QgTWF0aERvY3VtZW50IGNsYXNzXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RNYXRoRG9jdW1lbnQ8TiwgVCwgRD4gaW1wbGVtZW50cyBNYXRoRG9jdW1lbnQ8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBNYXRoRG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgS0lORDogc3RyaW5nID0gJ01hdGhEb2N1bWVudCc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBkb2N1bWVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBPUFRJT05TOiBPcHRpb25MaXN0ID0ge1xuICAgIE91dHB1dEpheDogbnVsbCwgICAgICAgICAgIC8vIGluc3RhbmNlIG9mIGFuIE91dHB1dEpheCBmb3IgdGhlIGRvY3VtZW50XG4gICAgSW5wdXRKYXg6IG51bGwsICAgICAgICAgICAgLy8gaW5zdGFuY2Ugb2YgYW4gSW5wdXRKYXggb3IgYW4gYXJyYXkgb2YgdGhlbVxuICAgIE1tbEZhY3Rvcnk6IG51bGwsICAgICAgICAgIC8vIGluc3RhbmNlIG9mIGEgTW1sRmFjdG9yeSBmb3IgdGhpcyBkb2N1bWVudFxuICAgIE1hdGhMaXN0OiBEZWZhdWx0TWF0aExpc3QsIC8vIGNvbnN0cnVjdG9yIGZvciBhIE1hdGhMaXN0IHRvIHVzZSBmb3IgdGhlIGRvY3VtZW50XG4gICAgTWF0aEl0ZW06IERlZmF1bHRNYXRoSXRlbSwgLy8gY29uc3RydWN0b3IgZm9yIGEgTWF0aEl0ZW0gdG8gdXNlIGZvciB0aGUgTWF0aExpc3RcbiAgICBjb21waWxlRXJyb3I6IChkb2M6IEFic3RyYWN0TWF0aERvY3VtZW50PGFueSwgYW55LCBhbnk+LCBtYXRoOiBNYXRoSXRlbTxhbnksIGFueSwgYW55PiwgZXJyOiBFcnJvcikgPT4ge1xuICAgICAgZG9jLmNvbXBpbGVFcnJvcihtYXRoLCBlcnIpO1xuICAgIH0sXG4gICAgdHlwZXNldEVycm9yOiAoZG9jOiBBYnN0cmFjdE1hdGhEb2N1bWVudDxhbnksIGFueSwgYW55PiwgbWF0aDogTWF0aEl0ZW08YW55LCBhbnksIGFueT4sIGVycjogRXJyb3IpID0+IHtcbiAgICAgIGRvYy50eXBlc2V0RXJyb3IobWF0aCwgZXJyKTtcbiAgICB9LFxuICAgIHJlbmRlckFjdGlvbnM6IGV4cGFuZGFibGUoe1xuICAgICAgZmluZDogICAgW1NUQVRFLkZJTkRNQVRILCAnZmluZE1hdGgnLCAnJywgZmFsc2VdLFxuICAgICAgY29tcGlsZTogW1NUQVRFLkNPTVBJTEVEXSxcbiAgICAgIG1ldHJpY3M6IFtTVEFURS5NRVRSSUNTLCAnZ2V0TWV0cmljcycsICcnLCBmYWxzZV0sXG4gICAgICB0eXBlc2V0OiBbU1RBVEUuVFlQRVNFVF0sXG4gICAgICB1cGRhdGU6ICBbU1RBVEUuSU5TRVJURUQsICd1cGRhdGVEb2N1bWVudCcsIGZhbHNlXVxuICAgIH0pIGFzIFJlbmRlckFjdGlvbnM8YW55LCBhbnksIGFueT5cbiAgfTtcblxuICAvKipcbiAgICogQSBiaXQtZmllbGQgZm9yIHRoZSBhY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIHByb2Nlc3NlZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBQcm9jZXNzQml0cyA9IEJpdEZpZWxkQ2xhc3MoJ2ZpbmRNYXRoJywgJ2NvbXBpbGUnLCAnZ2V0TWV0cmljcycsICd0eXBlc2V0JywgJ3VwZGF0ZURvY3VtZW50Jyk7XG5cbiAgLyoqXG4gICAqIFRoZSBkb2N1bWVudCBtYW5hZ2VkIGJ5IHRoaXMgTWF0aERvY3VtZW50XG4gICAqL1xuICBwdWJsaWMgZG9jdW1lbnQ6IEQ7XG4gIC8qKlxuICAgKiBUaGUgYWN0dWFsIG9wdGlvbnMgZm9yIHRoaXMgZG9jdW1lbnQgKHdpdGggdXNlci1zdXBwbGllZCBvbmVzIG1lcmdlZCBpbilcbiAgICovXG4gIHB1YmxpYyBvcHRpb25zOiBPcHRpb25MaXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBNYXRoSXRlbXMgZm9yIHRoaXMgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBtYXRoOiBNYXRoTGlzdDxOLCBULCBEPjtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgcmVuZGVyIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZW5kZXJBY3Rpb25zOiBSZW5kZXJMaXN0PE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgYml0LWZpZWxkIHVzZWQgdG8gdGVsbCB3aGF0IHN0ZXBzIGhhdmUgYmVlbiB0YWtlbiBvbiB0aGUgZG9jdW1lbnQgKGZvciByZXRyaWVzKVxuICAgKi9cbiAgcHVibGljIHByb2Nlc3NlZDogQml0RmllbGQ7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIGlucHV0IGpheCBmb3IgdGhlIGRvY3VtZW50XG4gICAqL1xuICBwdWJsaWMgaW5wdXRKYXg6IElucHV0SmF4PE4sIFQsIEQ+W107XG5cbiAgLyoqXG4gICAqIFRoZSBvdXRwdXQgamF4IGZvciB0aGUgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBvdXRwdXRKYXg6IE91dHB1dEpheDxOLCBULCBEPjtcblxuICAvKipcbiAgICogVGhlIERPTSBhZGFwdG9yIGZvciB0aGUgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBhZGFwdG9yOiBET01BZGFwdG9yPE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBUaGUgTWF0aE1MIG5vZGUgZmFjdG9yeSBmb3IgdGhlIGludGVybmFsIE1hdGhNTCByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgcHVibGljIG1tbEZhY3Rvcnk6IE1tbEZhY3Rvcnk7XG5cblxuICAvKipcbiAgICogQHBhcmFtIHthbnl9IGRvY3VtZW50ICAgICAgICAgICBUaGUgZG9jdW1lbnQgKEhUTUwgc3RyaW5nLCBwYXJzZWQgRE9NLCBldGMuKSB0byBiZSBwcm9jZXNzZWRcbiAgICogQHBhcmFtIHtET01BZGFwdG9yfSBhZGFwdG9yICAgICBUaGUgRE9NIGFkYXB0b3IgZm9yIHRoaXMgZG9jdW1lbnRcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICAgICBUaGUgb3B0aW9ucyBmb3IgdGhpcyBkb2N1bWVudFxuICAgKiBAY29uc3RydWN0b3JcbiAgICovXG4gIGNvbnN0cnVjdG9yIChkb2N1bWVudDogRCwgYWRhcHRvcjogRE9NQWRhcHRvcjxOLCBULCBEPiwgb3B0aW9uczogT3B0aW9uTGlzdCkge1xuICAgIGxldCBDTEFTUyA9IHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEFic3RyYWN0TWF0aERvY3VtZW50O1xuICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSB1c2VyT3B0aW9ucyhkZWZhdWx0T3B0aW9ucyh7fSwgQ0xBU1MuT1BUSU9OUyksIG9wdGlvbnMpO1xuICAgIHRoaXMubWF0aCA9IG5ldyAodGhpcy5vcHRpb25zWydNYXRoTGlzdCddIHx8IERlZmF1bHRNYXRoTGlzdCkoKTtcbiAgICB0aGlzLnJlbmRlckFjdGlvbnMgPSBSZW5kZXJMaXN0LmNyZWF0ZTxOLCBULCBEPih0aGlzLm9wdGlvbnNbJ3JlbmRlckFjdGlvbnMnXSk7XG4gICAgdGhpcy5wcm9jZXNzZWQgPSBuZXcgQWJzdHJhY3RNYXRoRG9jdW1lbnQuUHJvY2Vzc0JpdHMoKTtcbiAgICB0aGlzLm91dHB1dEpheCA9IHRoaXMub3B0aW9uc1snT3V0cHV0SmF4J10gfHwgbmV3IERlZmF1bHRPdXRwdXRKYXg8TiwgVCwgRD4oKTtcbiAgICBsZXQgaW5wdXRKYXggPSB0aGlzLm9wdGlvbnNbJ0lucHV0SmF4J10gfHwgW25ldyBEZWZhdWx0SW5wdXRKYXg8TiwgVCwgRD4oKV07XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGlucHV0SmF4KSkge1xuICAgICAgaW5wdXRKYXggPSBbaW5wdXRKYXhdO1xuICAgIH1cbiAgICB0aGlzLmlucHV0SmF4ID0gaW5wdXRKYXg7XG4gICAgLy9cbiAgICAvLyBQYXNzIHRoZSBET00gYWRhcHRvciB0byB0aGUgamF4XG4gICAgLy9cbiAgICB0aGlzLmFkYXB0b3IgPSBhZGFwdG9yO1xuICAgIHRoaXMub3V0cHV0SmF4LnNldEFkYXB0b3IoYWRhcHRvcik7XG4gICAgdGhpcy5pbnB1dEpheC5tYXAoamF4ID0+IGpheC5zZXRBZGFwdG9yKGFkYXB0b3IpKTtcbiAgICAvL1xuICAgIC8vIFBhc3MgdGhlIE1tbEZhY3RvcnkgdG8gdGhlIGpheFxuICAgIC8vXG4gICAgdGhpcy5tbWxGYWN0b3J5ID0gdGhpcy5vcHRpb25zWydNbWxGYWN0b3J5J10gfHwgbmV3IE1tbEZhY3RvcnkoKTtcbiAgICB0aGlzLmlucHV0SmF4Lm1hcChqYXggPT4gamF4LnNldE1tbEZhY3RvcnkodGhpcy5tbWxGYWN0b3J5KSk7XG4gICAgLy9cbiAgICAvLyBEbyBhbnkgaW5pdGlhbGl6YXRpb24gdGhhdCByZXF1aXJlcyBhZGFwdG9ycyBvciBmYWN0b3JpZXNcbiAgICAvL1xuICAgIHRoaXMub3V0cHV0SmF4LmluaXRpYWxpemUoKTtcbiAgICB0aGlzLmlucHV0SmF4Lm1hcChqYXggPT4gamF4LmluaXRpYWxpemUoKSk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybiB7c3RyaW5nfSAgVGhlIGtpbmQgb2YgZG9jdW1lbnRcbiAgICovXG4gIHB1YmxpYyBnZXQga2luZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgQWJzdHJhY3RNYXRoRG9jdW1lbnQpLktJTkQ7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgYWRkUmVuZGVyQWN0aW9uKGlkOiBzdHJpbmcsIC4uLmFjdGlvbjogYW55W10pIHtcbiAgICBjb25zdCBbZm4sIHBdID0gUmVuZGVyTGlzdC5hY3Rpb248TiwgVCwgRD4oaWQsIGFjdGlvbiBhcyBSZW5kZXJBY3Rpb248TiwgVCwgRD4pO1xuICAgIHRoaXMucmVuZGVyQWN0aW9ucy5hZGQoZm4sIHApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZVJlbmRlckFjdGlvbihpZDogc3RyaW5nKSB7XG4gICAgY29uc3QgYWN0aW9uID0gdGhpcy5yZW5kZXJBY3Rpb25zLmZpbmRJRChpZCk7XG4gICAgaWYgKGFjdGlvbikge1xuICAgICAgdGhpcy5yZW5kZXJBY3Rpb25zLnJlbW92ZShhY3Rpb24pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKSB7XG4gICAgdGhpcy5yZW5kZXJBY3Rpb25zLnJlbmRlckRvYyh0aGlzKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyByZXJlbmRlcihzdGFydDogbnVtYmVyID0gU1RBVEUuUkVSRU5ERVIpIHtcbiAgICB0aGlzLnN0YXRlKHN0YXJ0IC0gMSk7XG4gICAgdGhpcy5yZW5kZXIoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjb252ZXJ0KG1hdGg6IHN0cmluZywgb3B0aW9uczogT3B0aW9uTGlzdCA9IHt9KSB7XG4gICAgbGV0IHtmb3JtYXQsIGRpc3BsYXksIGVuZCwgZXgsIGVtLCBjb250YWluZXJXaWR0aCwgbGluZVdpZHRoLCBzY2FsZSwgZmFtaWx5fSA9IHVzZXJPcHRpb25zKHtcbiAgICAgIGZvcm1hdDogdGhpcy5pbnB1dEpheFswXS5uYW1lLCBkaXNwbGF5OiB0cnVlLCBlbmQ6IFNUQVRFLkxBU1QsXG4gICAgICBlbTogMTYsIGV4OiA4LCBjb250YWluZXJXaWR0aDogbnVsbCwgbGluZVdpZHRoOiAxMDAwMDAwLCBzY2FsZTogMSwgZmFtaWx5OiAnJ1xuICAgIH0sIG9wdGlvbnMpO1xuICAgIGlmIChjb250YWluZXJXaWR0aCA9PT0gbnVsbCkge1xuICAgICAgY29udGFpbmVyV2lkdGggPSA4MCAqIGV4O1xuICAgIH1cbiAgICBjb25zdCBqYXggPSB0aGlzLmlucHV0SmF4LnJlZHVjZSgoamF4LCBpamF4KSA9PiAoaWpheC5uYW1lID09PSBmb3JtYXQgPyBpamF4IDogamF4KSwgbnVsbCk7XG4gICAgY29uc3QgbWl0ZW0gPSBuZXcgdGhpcy5vcHRpb25zLk1hdGhJdGVtKG1hdGgsIGpheCwgZGlzcGxheSk7XG4gICAgbWl0ZW0uc3RhcnQubm9kZSA9IHRoaXMuYWRhcHRvci5ib2R5KHRoaXMuZG9jdW1lbnQpO1xuICAgIG1pdGVtLnNldE1ldHJpY3MoZW0sIGV4LCBjb250YWluZXJXaWR0aCwgbGluZVdpZHRoLCBzY2FsZSk7XG4gICAgaWYgKHRoaXMub3V0cHV0SmF4Lm9wdGlvbnMubXRleHRJbmhlcml0Rm9udCkge1xuICAgICAgbWl0ZW0ub3V0cHV0RGF0YS5tdGV4dEZhbWlseSA9IGZhbWlseTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3V0cHV0SmF4Lm9wdGlvbnMubWVycm9ySW5oZXJpdEZvbnQpIHtcbiAgICAgIG1pdGVtLm91dHB1dERhdGEubWVycm9yRmFtaWx5ID0gZmFtaWx5O1xuICAgIH1cbiAgICBtaXRlbS5jb252ZXJ0KHRoaXMsIGVuZCk7XG4gICAgcmV0dXJuIChtaXRlbS50eXBlc2V0Um9vdCB8fCBtaXRlbS5yb290KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBmaW5kTWF0aChfb3B0aW9uczogT3B0aW9uTGlzdCA9IG51bGwpIHtcbiAgICB0aGlzLnByb2Nlc3NlZC5zZXQoJ2ZpbmRNYXRoJyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY29tcGlsZSgpIHtcbiAgICBpZiAoIXRoaXMucHJvY2Vzc2VkLmlzU2V0KCdjb21waWxlJykpIHtcbiAgICAgIC8vXG4gICAgICAvLyAgQ29tcGlsZSBhbGwgdGhlIG1hdGggaW4gdGhlIGxpc3RcbiAgICAgIC8vXG4gICAgICBjb25zdCByZWNvbXBpbGUgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgbWF0aCBvZiB0aGlzLm1hdGgpIHtcbiAgICAgICAgdGhpcy5jb21waWxlTWF0aChtYXRoKTtcbiAgICAgICAgaWYgKG1hdGguaW5wdXREYXRhLnJlY29tcGlsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmVjb21waWxlLnB1c2gobWF0aCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vXG4gICAgICAvLyAgSWYgYW55IHdlcmUgYWRkZWQgdG8gdGhlIHJlY29tcGlsZSBsaXN0LFxuICAgICAgLy8gICAgY29tcGlsZSB0aGVtIGFnYWluXG4gICAgICAvL1xuICAgICAgZm9yIChjb25zdCBtYXRoIG9mIHJlY29tcGlsZSkge1xuICAgICAgICBjb25zdCBkYXRhID0gbWF0aC5pbnB1dERhdGEucmVjb21waWxlO1xuICAgICAgICBtYXRoLnN0YXRlKGRhdGEuc3RhdGUpO1xuICAgICAgICBtYXRoLmlucHV0RGF0YS5yZWNvbXBpbGUgPSBkYXRhO1xuICAgICAgICB0aGlzLmNvbXBpbGVNYXRoKG1hdGgpO1xuICAgICAgfVxuICAgICAgdGhpcy5wcm9jZXNzZWQuc2V0KCdjb21waWxlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7TWF0aEl0ZW19IG1hdGggICBUaGUgaXRlbSB0byBjb21waWxlXG4gICAqL1xuICBwcm90ZWN0ZWQgY29tcGlsZU1hdGgobWF0aDogTWF0aEl0ZW08TiwgVCwgRD4pIHtcbiAgICB0cnkge1xuICAgICAgbWF0aC5jb21waWxlKHRoaXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVyci5yZXRyeSB8fCBlcnIucmVzdGFydCkge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgICB0aGlzLm9wdGlvbnNbJ2NvbXBpbGVFcnJvciddKHRoaXMsIG1hdGgsIGVycik7XG4gICAgICBtYXRoLmlucHV0RGF0YVsnZXJyb3InXSA9IGVycjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSBhbiBlcnJvciB1c2luZyBNbWxOb2Rlc1xuICAgKlxuICAgKiBAcGFyYW0ge01hdGhJdGVtfSBtYXRoICBUaGUgTWF0aEl0ZW0gcHJvZHVjaW5nIHRoZSBlcnJvclxuICAgKiBAcGFyYW0ge0Vycm9yfSBlcnIgICAgICBUaGUgRXJyb3Igb2JqZWN0IGZvciB0aGUgZXJyb3JcbiAgICovXG4gIHB1YmxpYyBjb21waWxlRXJyb3IobWF0aDogTWF0aEl0ZW08TiwgVCwgRD4sIGVycjogRXJyb3IpIHtcbiAgICBtYXRoLnJvb3QgPSB0aGlzLm1tbEZhY3RvcnkuY3JlYXRlKCdtYXRoJywgbnVsbCwgW1xuICAgICAgdGhpcy5tbWxGYWN0b3J5LmNyZWF0ZSgnbWVycm9yJywgeydkYXRhLW1qeC1lcnJvcic6IGVyci5tZXNzYWdlLCB0aXRsZTogZXJyLm1lc3NhZ2V9LCBbXG4gICAgICAgIHRoaXMubW1sRmFjdG9yeS5jcmVhdGUoJ210ZXh0JywgbnVsbCwgW1xuICAgICAgICAgICh0aGlzLm1tbEZhY3RvcnkuY3JlYXRlKCd0ZXh0JykgYXMgVGV4dE5vZGUpLnNldFRleHQoJ01hdGggaW5wdXQgZXJyb3InKVxuICAgICAgICBdKVxuICAgICAgXSlcbiAgICBdKTtcbiAgICBpZiAobWF0aC5kaXNwbGF5KSB7XG4gICAgICBtYXRoLnJvb3QuYXR0cmlidXRlcy5zZXQoJ2Rpc3BsYXknLCAnYmxvY2snKTtcbiAgICB9XG4gICAgbWF0aC5pbnB1dERhdGEuZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB0eXBlc2V0KCkge1xuICAgIGlmICghdGhpcy5wcm9jZXNzZWQuaXNTZXQoJ3R5cGVzZXQnKSkge1xuICAgICAgZm9yIChjb25zdCBtYXRoIG9mIHRoaXMubWF0aCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIG1hdGgudHlwZXNldCh0aGlzKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKGVyci5yZXRyeSB8fCBlcnIucmVzdGFydCkge1xuICAgICAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm9wdGlvbnNbJ3R5cGVzZXRFcnJvciddKHRoaXMsIG1hdGgsIGVycik7XG4gICAgICAgICAgbWF0aC5vdXRwdXREYXRhWydlcnJvciddID0gZXJyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnByb2Nlc3NlZC5zZXQoJ3R5cGVzZXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZSBhbiBlcnJvciB1c2luZyBIVE1MXG4gICAqXG4gICAqIEBwYXJhbSB7TWF0aEl0ZW19IG1hdGggIFRoZSBNYXRoSXRlbSBwcm9kdWNpbmcgdGhlIGVycm9yXG4gICAqIEBwYXJhbSB7RXJyb3J9IGVyciAgICAgIFRoZSBFcnJvciBvYmplY3QgZm9yIHRoZSBlcnJvclxuICAgKi9cbiAgcHVibGljIHR5cGVzZXRFcnJvcihtYXRoOiBNYXRoSXRlbTxOLCBULCBEPiwgZXJyOiBFcnJvcikge1xuICAgIG1hdGgudHlwZXNldFJvb3QgPSB0aGlzLmFkYXB0b3Iubm9kZSgnbWp4LWNvbnRhaW5lcicsIHtcbiAgICAgIGNsYXNzOiAnTWF0aEpheCBtangtb3V0cHV0LWVycm9yJyxcbiAgICAgIGpheDogdGhpcy5vdXRwdXRKYXgubmFtZSxcbiAgICB9LCBbXG4gICAgICB0aGlzLmFkYXB0b3Iubm9kZSgnc3BhbicsIHtcbiAgICAgICAgJ2RhdGEtbWp4LWVycm9yJzogZXJyLm1lc3NhZ2UsXG4gICAgICAgIHRpdGxlOiBlcnIubWVzc2FnZSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBjb2xvcjogJ3JlZCcsXG4gICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiAneWVsbG93JyxcbiAgICAgICAgICAnbGluZS1oZWlnaHQnOiAnbm9ybWFsJ1xuICAgICAgICB9XG4gICAgICB9LCBbXG4gICAgICAgIHRoaXMuYWRhcHRvci50ZXh0KCdNYXRoIG91dHB1dCBlcnJvcicpXG4gICAgICBdKVxuICAgIF0pO1xuICAgIGlmIChtYXRoLmRpc3BsYXkpIHtcbiAgICAgIHRoaXMuYWRhcHRvci5zZXRBdHRyaWJ1dGVzKG1hdGgudHlwZXNldFJvb3QsIHtcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgICAgIG1hcmdpbjogJzFlbSAwJyxcbiAgICAgICAgICAndGV4dC1hbGlnbic6ICdjZW50ZXInXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBtYXRoLm91dHB1dERhdGEuZXJyb3IgPSBlcnIubWVzc2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXRNZXRyaWNzKCkge1xuICAgIGlmICghdGhpcy5wcm9jZXNzZWQuaXNTZXQoJ2dldE1ldHJpY3MnKSkge1xuICAgICAgdGhpcy5vdXRwdXRKYXguZ2V0TWV0cmljcyh0aGlzKTtcbiAgICAgIHRoaXMucHJvY2Vzc2VkLnNldCgnZ2V0TWV0cmljcycpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVEb2N1bWVudCgpIHtcbiAgICBpZiAoIXRoaXMucHJvY2Vzc2VkLmlzU2V0KCd1cGRhdGVEb2N1bWVudCcpKSB7XG4gICAgICBmb3IgKGNvbnN0IG1hdGggb2YgdGhpcy5tYXRoLnJldmVyc2VkKCkpIHtcbiAgICAgICAgbWF0aC51cGRhdGVEb2N1bWVudCh0aGlzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucHJvY2Vzc2VkLnNldCgndXBkYXRlRG9jdW1lbnQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgcmVtb3ZlRnJvbURvY3VtZW50KF9yZXN0b3JlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBzdGF0ZShzdGF0ZTogbnVtYmVyLCByZXN0b3JlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBmb3IgKGNvbnN0IG1hdGggb2YgdGhpcy5tYXRoKSB7XG4gICAgICBtYXRoLnN0YXRlKHN0YXRlLCByZXN0b3JlKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlIDwgU1RBVEUuSU5TRVJURUQpIHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkLmNsZWFyKCd1cGRhdGVEb2N1bWVudCcpO1xuICAgIH1cbiAgICBpZiAoc3RhdGUgPCBTVEFURS5UWVBFU0VUKSB7XG4gICAgICB0aGlzLnByb2Nlc3NlZC5jbGVhcigndHlwZXNldCcpO1xuICAgICAgdGhpcy5wcm9jZXNzZWQuY2xlYXIoJ2dldE1ldHJpY3MnKTtcbiAgICB9XG4gICAgaWYgKHN0YXRlIDwgU1RBVEUuQ09NUElMRUQpIHtcbiAgICAgIHRoaXMucHJvY2Vzc2VkLmNsZWFyKCdjb21waWxlJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlc2V0KG9wdGlvbnM6IFJlc2V0TGlzdCA9IHtwcm9jZXNzZWQ6IHRydWV9KSB7XG4gICAgb3B0aW9ucyA9IHVzZXJPcHRpb25zKE9iamVjdC5hc3NpZ24oe30sIHJlc2V0T3B0aW9ucyksIG9wdGlvbnMpO1xuICAgIG9wdGlvbnMuYWxsICYmIE9iamVjdC5hc3NpZ24ob3B0aW9ucywgcmVzZXRBbGxPcHRpb25zKTtcbiAgICBvcHRpb25zLnByb2Nlc3NlZCAmJiB0aGlzLnByb2Nlc3NlZC5yZXNldCgpO1xuICAgIG9wdGlvbnMuaW5wdXRKYXggJiYgdGhpcy5pbnB1dEpheC5mb3JFYWNoKGpheCA9PiBqYXgucmVzZXQoLi4ub3B0aW9ucy5pbnB1dEpheCkpO1xuICAgIG9wdGlvbnMub3V0cHV0SmF4ICYmIHRoaXMub3V0cHV0SmF4LnJlc2V0KC4uLm9wdGlvbnMub3V0cHV0SmF4KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBjbGVhcigpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgdGhpcy5tYXRoLmNsZWFyKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgY29uY2F0KGxpc3Q6IE1hdGhMaXN0PE4sIFQsIEQ+KSB7XG4gICAgdGhpcy5tYXRoLm1lcmdlKGxpc3QpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNsZWFyTWF0aEl0ZW1zV2l0aGluKGNvbnRhaW5lcnM6IENvbnRhaW5lckxpc3Q8Tj4pIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZ2V0TWF0aEl0ZW1zV2l0aGluKGNvbnRhaW5lcnMpO1xuICAgIHRoaXMubWF0aC5yZW1vdmUoLi4uaXRlbXMpO1xuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBnZXRNYXRoSXRlbXNXaXRoaW4oZWxlbWVudHM6IENvbnRhaW5lckxpc3Q8Tj4pIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZWxlbWVudHMpKSB7XG4gICAgICBlbGVtZW50cyA9IFtlbGVtZW50c107XG4gICAgfVxuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgY29uc3QgaXRlbXMgPSBbXSBhcyBNYXRoSXRlbTxOLCBULCBEPltdO1xuICAgIGNvbnN0IGNvbnRhaW5lcnMgPSBhZGFwdG9yLmdldEVsZW1lbnRzKGVsZW1lbnRzLCB0aGlzLmRvY3VtZW50KTtcbiAgICBJVEVNUzpcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5tYXRoKSB7XG4gICAgICBmb3IgKGNvbnN0IGNvbnRhaW5lciBvZiBjb250YWluZXJzKSB7XG4gICAgICAgIGlmIChpdGVtLnN0YXJ0Lm5vZGUgJiYgYWRhcHRvci5jb250YWlucyhjb250YWluZXIsIGl0ZW0uc3RhcnQubm9kZSkpIHtcbiAgICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgIGNvbnRpbnVlIElURU1TO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG59XG5cbi8qKlxuICogVGhlIGNvbnN0cnVjdG9yIHR5cGUgZm9yIGEgTWF0aERvY3VtZW50XG4gKlxuICogQHRlbXBsYXRlIEQgICAgVGhlIE1hdGhEb2N1bWVudCB0eXBlIHRoaXMgY29uc3RydWN0b3IgaXMgZm9yXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0aERvY3VtZW50Q29uc3RydWN0b3I8RCBleHRlbmRzIE1hdGhEb2N1bWVudDxhbnksIGFueSwgYW55Pj4ge1xuICBLSU5EOiBzdHJpbmc7XG4gIE9QVElPTlM6IE9wdGlvbkxpc3Q7XG4gIFByb2Nlc3NCaXRzOiB0eXBlb2YgQml0RmllbGQ7XG4gIG5ldyAoLi4uYXJnczogYW55W10pOiBEO1xufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbnRlcmZhY2VzIGFuZCBhYnN0cmFjdCBjbGFzc2VzIGZvciBIYW5kbGVyIG9iamVjdHNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7TWF0aERvY3VtZW50LCBBYnN0cmFjdE1hdGhEb2N1bWVudCwgTWF0aERvY3VtZW50Q29uc3RydWN0b3J9IGZyb20gJy4vTWF0aERvY3VtZW50LmpzJztcbmltcG9ydCB7T3B0aW9uTGlzdH0gZnJvbSAnLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7RE9NQWRhcHRvcn0gZnJvbSAnLi4vY29yZS9ET01BZGFwdG9yLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgVGhlIEhhbmRsZXIgaW50ZXJmYWNlXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEhhbmRsZXI8TiwgVCwgRD4ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGhhbmRsZXIgY2xhc3NcbiAgICovXG4gIG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIERPTSBBZGFwdG9yIHRvIHVzZSBmb3IgbWFuYWdpbmcgSFRNTCBlbGVtZW50c1xuICAgKi9cbiAgYWRhcHRvcjogRE9NQWRhcHRvcjxOLCBULCBEPjtcblxuICAvKipcbiAgICogVGhlIHByaW9yaXR5IGZvciB0aGUgaGFuZGxlciB3aGVuIGhhbmRsZXJzIGFyZSBwb2xsZWRcbiAgICogICB0byBzZWUgd2hpY2ggb25lIGNhbiBwcm9jZXNzIGEgZ2l2ZW4gZG9jdW1lbnQuXG4gICAqL1xuICBwcmlvcml0eTogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgY2xhc3MgaW1wbGVtZW50aW5nIHRoZSBNYXRoRG9jdW1lbnQgZm9yIHRoaXMgaGFuZGxlclxuICAgKiAgIChzbyBpdCBjYW4gYmUgc3ViY2xhc3NlZCBieSBleHRlbnNpb25zIGFzIG5lZWRlZClcbiAgICovXG4gIGRvY3VtZW50Q2xhc3M6IE1hdGhEb2N1bWVudENvbnN0cnVjdG9yPEFic3RyYWN0TWF0aERvY3VtZW50PE4sIFQsIEQ+PjtcblxuICAvKipcbiAgICogQ2hlY2tzIHRvIHNlZSBpZiB0aGUgaGFuZGxlciBjYW4gcHJvY2VzcyBhIGdpdmVuIGRvY3VtZW50XG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBkb2N1bWVudCAgVGhlIGRvY3VtZW50IHRvIGJlIHByb2Nlc3NlZCAoc3RyaW5nLCB3aW5kb3csIGV0Yy4pXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59ICAgICAgVHJ1ZSBpZiB0aGlzIGhhbmRsZXIgY2FuIHByb2Nlc3MgdGhlIGdpdmVuIGRvY3VtZW50XG4gICAqL1xuICBoYW5kbGVzRG9jdW1lbnQoZG9jdW1lbnQ6IGFueSk6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBNYXRoRG9jdW1lbnQgZm9yIHRoZSBnaXZlbiBoYW5kbGVyXG4gICAqXG4gICAqIEBwYXJhbSB7YW55fSBkb2N1bWVudCAgICAgICAgVGhlIGRvY3VtZW50IHRvIGJlIGhhbmRsZWRcbiAgICogQHBhcmFtIHtPcHRpb25MaXN0fSBvcHRpb25zICBUaGUgb3B0aW9ucyBmb3IgdGhlIGhhbmRsaW5nIG9mIHRoZSBkb2N1bWVudFxuICAgKiBAcmV0dXJuIHtNYXRoRG9jdW1lbnR9ICAgICAgIFRoZSBNYXRoRG9jdW1lbnQgb2JqZWN0IHRoYXQgbWFuYWdlcyB0aGUgcHJvY2Vzc2luZ1xuICAgKi9cbiAgY3JlYXRlKGRvY3VtZW50OiBhbnksIG9wdGlvbnM6IE9wdGlvbkxpc3QpOiBNYXRoRG9jdW1lbnQ8TiwgVCwgRD47XG59XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBkZWZhdWx0IE1hdGhEb2N1bWVudCBjbGFzcyAoc3ViY2xhc3NlcyB1c2UgdGhlaXIgb3duKVxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuY2xhc3MgRGVmYXVsdE1hdGhEb2N1bWVudDxOLCBULCBEPiBleHRlbmRzIEFic3RyYWN0TWF0aERvY3VtZW50PE4sIFQsIEQ+IHt9XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBIYW5kbGVyIGludGVyZmFjZVxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0SGFuZGxlcjxOLCBULCBEPiBpbXBsZW1lbnRzIEhhbmRsZXI8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGlzIGNsYXNzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIE5BTUU6IHN0cmluZyA9ICdnZW5lcmljJztcblxuICAvKipcbiAgICogVGhlIERPTSBBZGFwdG9yIHRvIHVzZSBmb3IgbWFuYWdpbmcgSFRNTCBlbGVtZW50c1xuICAgKi9cbiAgcHVibGljIGFkYXB0b3I6IERPTUFkYXB0b3I8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIFRoZSBwcmlvcml0eSBmb3IgdGhpcyBoYW5kbGVyXG4gICAqL1xuICBwdWJsaWMgcHJpb3JpdHk6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIGNsYXNzIGltcGxlbWVudGluZyB0aGUgTWF0aERvY3VtZW50IGZvciB0aGlzIGhhbmRsZXJcbiAgICogICAoc28gaXQgY2FuIGJlIHN1YmNsYXNzZWQgYnkgZXh0ZW5zaW9ucyBhcyBuZWVkZWQpXG4gICAqL1xuICBwdWJsaWMgZG9jdW1lbnRDbGFzczogTWF0aERvY3VtZW50Q29uc3RydWN0b3I8QWJzdHJhY3RNYXRoRG9jdW1lbnQ8TiwgVCwgRD4+ID0gRGVmYXVsdE1hdGhEb2N1bWVudDtcblxuICAvKipcbiAgICogQHBhcmFtIHtudW1iZXJ9IHByaW9yaXR5ICBUaGUgcHJpb3JpdHkgdG8gdXNlIGZvciB0aGlzIGhhbmRsZXJcbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihhZGFwdG9yOiBET01BZGFwdG9yPE4sIFQsIEQ+LCBwcmlvcml0eTogbnVtYmVyID0gNSkge1xuICAgIHRoaXMuYWRhcHRvciA9IGFkYXB0b3I7XG4gICAgdGhpcy5wcmlvcml0eSA9IHByaW9yaXR5O1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge3N0cmluZ30gIFRoZSBuYW1lIG9mIHRoaXMgaGFuZGxlciBjbGFzc1xuICAgKi9cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBBYnN0cmFjdEhhbmRsZXIpLk5BTUU7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlc0RvY3VtZW50KF9kb2N1bWVudDogYW55KSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShkb2N1bWVudDogYW55LCBvcHRpb25zOiBPcHRpb25MaXN0KSB7XG4gICAgcmV0dXJuIG5ldyB0aGlzLmRvY3VtZW50Q2xhc3MoZG9jdW1lbnQsIHRoaXMuYWRhcHRvciwgb3B0aW9ucykgYXMgTWF0aERvY3VtZW50PE4sIFQsIEQ+O1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgSFRNTE1hdGhJdGVtIGNsYXNzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0Fic3RyYWN0TWF0aEl0ZW0sIExvY2F0aW9uLCBTVEFURX0gZnJvbSAnLi4vLi4vY29yZS9NYXRoSXRlbS5qcyc7XG5pbXBvcnQge0lucHV0SmF4fSBmcm9tICcuLi8uLi9jb3JlL0lucHV0SmF4LmpzJztcbmltcG9ydCB7SFRNTERvY3VtZW50fSBmcm9tICcuL0hUTUxEb2N1bWVudC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIEhUTUxNYXRoSXRlbSBjbGFzcyAoZXh0ZW5kcyBBYnN0cmFjdE1hdGhJdGVtKVxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIEhUTUxNYXRoSXRlbTxOLCBULCBEPiBleHRlbmRzIEFic3RyYWN0TWF0aEl0ZW08TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBFYXN5IGFjY2VzcyB0byBET00gYWRhcHRvclxuICAgKi9cbiAgZ2V0IGFkYXB0b3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXRKYXguYWRhcHRvcjtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIGNvbnN0cnVjdG9yKG1hdGg6IHN0cmluZywgamF4OiBJbnB1dEpheDxOLCBULCBEPiwgZGlzcGxheTogYm9vbGVhbiA9IHRydWUsXG4gICAgICAgICAgICAgIHN0YXJ0OiBMb2NhdGlvbjxOLCBUPiA9IHtub2RlOiBudWxsLCBuOiAwLCBkZWxpbTogJyd9LFxuICAgICAgICAgICAgICBlbmQ6IExvY2F0aW9uPE4sIFQ+ID0ge25vZGU6IG51bGwsIG46IDAsIGRlbGltOiAnJ30pIHtcbiAgICBzdXBlcihtYXRoLCBqYXgsIGRpc3BsYXksIHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEluc2VydCB0aGUgdHlwZXNldCBNYXRoSXRlbSBpbnRvIHRoZSBkb2N1bWVudCBhdCB0aGUgcmlnaHQgbG9jYXRpb25cbiAgICogICBJZiB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyBub2RlcyBhcmUgdGhlIHNhbWU6XG4gICAqICAgICBTcGxpdCB0aGUgdGV4dCB0byBpc29sYXRlIHRoZSBtYXRoIGFuZCBpdHMgZGVsaW1pdGVyc1xuICAgKiAgICAgUmVwbGFjZSB0aGUgbWF0aCBieSB0aGUgdHlwZXNldCB2ZXJzaW9uXG4gICAqICAgT3RoZXJld2lzZSAoc3ByZWFkIG92ZXIgc2V2ZXJhbCBub2RlcylcbiAgICogICAgIFNwbGl0IHRoZSBzdGFydCBub2RlLCBpZiBuZWVkZWRcbiAgICogICAgIFJlbW92ZSBub2RlcyB1bnRpbCB3ZSByZWFjaCB0aGUgZW5kIG5vZGVcbiAgICogICAgIEluc2VydCB0aGUgbWF0aCBiZWZvcmUgdGhlIGVuZCBub2RlXG4gICAqICAgICBTcGxpdCB0aGUgZW5kIG5vZGUsIGlmIG5lZWRlZFxuICAgKiAgICAgUmVtb3ZlIHRoZSBlbmQgbm9kZVxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVEb2N1bWVudChfaHRtbDogSFRNTERvY3VtZW50PE4sIFQsIEQ+KSB7XG4gICAgaWYgKHRoaXMuc3RhdGUoKSA8IFNUQVRFLklOU0VSVEVEKSB7XG4gICAgICBpZiAodGhpcy5pbnB1dEpheC5wcm9jZXNzU3RyaW5ncykge1xuICAgICAgICBsZXQgbm9kZSA9IHRoaXMuc3RhcnQubm9kZSBhcyBUO1xuICAgICAgICBpZiAobm9kZSA9PT0gdGhpcy5lbmQubm9kZSkge1xuICAgICAgICAgIGlmICh0aGlzLmVuZC5uICYmIHRoaXMuZW5kLm4gPCB0aGlzLmFkYXB0b3IudmFsdWUodGhpcy5lbmQubm9kZSkubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmFkYXB0b3Iuc3BsaXQodGhpcy5lbmQubm9kZSwgdGhpcy5lbmQubik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLnN0YXJ0Lm4pIHtcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLmFkYXB0b3Iuc3BsaXQodGhpcy5zdGFydC5ub2RlIGFzIFQsIHRoaXMuc3RhcnQubik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRhcHRvci5yZXBsYWNlKHRoaXMudHlwZXNldFJvb3QsIG5vZGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLnN0YXJ0Lm4pIHtcbiAgICAgICAgICAgIG5vZGUgPSB0aGlzLmFkYXB0b3Iuc3BsaXQobm9kZSwgdGhpcy5zdGFydC5uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgd2hpbGUgKG5vZGUgIT09IHRoaXMuZW5kLm5vZGUpIHtcbiAgICAgICAgICAgIGxldCBuZXh0ID0gdGhpcy5hZGFwdG9yLm5leHQobm9kZSkgYXMgVDtcbiAgICAgICAgICAgIHRoaXMuYWRhcHRvci5yZW1vdmUobm9kZSk7XG4gICAgICAgICAgICBub2RlID0gbmV4dDtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGFwdG9yLmluc2VydCh0aGlzLnR5cGVzZXRSb290LCBub2RlKTtcbiAgICAgICAgICBpZiAodGhpcy5lbmQubiA8IHRoaXMuYWRhcHRvci52YWx1ZShub2RlKS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuYWRhcHRvci5zcGxpdChub2RlLCB0aGlzLmVuZC5uKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGFwdG9yLnJlbW92ZShub2RlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hZGFwdG9yLnJlcGxhY2UodGhpcy50eXBlc2V0Um9vdCwgdGhpcy5zdGFydC5ub2RlKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc3RhcnQubm9kZSA9IHRoaXMuZW5kLm5vZGUgPSB0aGlzLnR5cGVzZXRSb290O1xuICAgICAgdGhpcy5zdGFydC5uID0gdGhpcy5lbmQubiA9IDA7XG4gICAgICB0aGlzLnN0YXRlKFNUQVRFLklOU0VSVEVEKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIHRoZSBzdHlsZSBzaGVldCBmb3IgYW55IGNoYW5nZXMgZHVlIHRvIHJlcmVuZGVyaW5nXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTERvY3VtZW50fSBkb2N1bWVudCAgIFRoZSBkb2N1bWVudCB3aG9zZSBzdHlsZXMgYXJlIHRvIGJlIHVwZGF0ZWRcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVTdHlsZVNoZWV0KGRvY3VtZW50OiBIVE1MRG9jdW1lbnQ8TiwgVCwgRD4pIHtcbiAgICBkb2N1bWVudC5hZGRTdHlsZVNoZWV0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSB0eXBlc2V0IG1hdGggZnJvbSB0aGUgZG9jdW1lbnQsIGFuZCBwdXQgYmFjayB0aGUgb3JpZ2luYWxcbiAgICogIGV4cHJlc3Npb24gYW5kIGl0cyBkZWxpbWl0ZXJzLCBpZiByZXF1ZXN0ZWQuXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZyb21Eb2N1bWVudChyZXN0b3JlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5zdGF0ZSgpID49IFNUQVRFLlRZUEVTRVQpIHtcbiAgICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgICBsZXQgbm9kZSA9IHRoaXMuc3RhcnQubm9kZTtcbiAgICAgIGxldCBtYXRoOiBOIHwgVCA9IGFkYXB0b3IudGV4dCgnJyk7XG4gICAgICBpZiAocmVzdG9yZSkge1xuICAgICAgICBsZXQgdGV4dCA9IHRoaXMuc3RhcnQuZGVsaW0gKyB0aGlzLm1hdGggKyB0aGlzLmVuZC5kZWxpbTtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRKYXgucHJvY2Vzc1N0cmluZ3MpIHtcbiAgICAgICAgICBtYXRoID0gYWRhcHRvci50ZXh0KHRleHQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRvYyA9IGFkYXB0b3IucGFyc2UodGV4dCwgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgIG1hdGggPSBhZGFwdG9yLmZpcnN0Q2hpbGQoYWRhcHRvci5ib2R5KGRvYykpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoYWRhcHRvci5wYXJlbnQobm9kZSkpIHtcbiAgICAgICAgYWRhcHRvci5yZXBsYWNlKG1hdGgsIG5vZGUpO1xuICAgICAgfVxuICAgICAgdGhpcy5zdGFydC5ub2RlID0gdGhpcy5lbmQubm9kZSA9IG1hdGg7XG4gICAgICB0aGlzLnN0YXJ0Lm4gPSB0aGlzLmVuZC5uID0gMDtcbiAgICB9XG4gIH1cblxufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBIVE1MTWF0aExpc3Qgb2JqZWN0XG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0Fic3RyYWN0TWF0aExpc3R9IGZyb20gJy4uLy4uL2NvcmUvTWF0aExpc3QuanMnO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnQgdGhlIEhUTUxNYXRoTGlzdCBjbGFzcyAoZXh0ZW5kcyBBYnN0cmFjdE1hdGhMaXN0KVxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIEhUTUxNYXRoTGlzdDxOLCBULCBEPiBleHRlbmRzIEFic3RyYWN0TWF0aExpc3Q8TiwgVCwgRD4ge1xufVxuIiwgIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKlxuICogIENvcHlyaWdodCAoYykgMjAxNy0yMDIyIFRoZSBNYXRoSmF4IENvbnNvcnRpdW1cbiAqXG4gKiAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuLyoqXG4gKiBAZmlsZW92ZXJ2aWV3ICBJbXBsZW1lbnRzIHRoZSBIVE1MRG9tU3RyaW5ncyBjbGFzc1xuICpcbiAqIEBhdXRob3IgZHB2Y0BtYXRoamF4Lm9yZyAoRGF2aWRlIENlcnZvbmUpXG4gKi9cblxuaW1wb3J0IHt1c2VyT3B0aW9ucywgZGVmYXVsdE9wdGlvbnMsIE9wdGlvbkxpc3QsIG1ha2VBcnJheX0gZnJvbSAnLi4vLi4vdXRpbC9PcHRpb25zLmpzJztcbmltcG9ydCB7RE9NQWRhcHRvcn0gZnJvbSAnLi4vLi4vY29yZS9ET01BZGFwdG9yLmpzJztcblxuLyoqXG4gKiAgTGlzdCBvZiBjb25zZWN1dGl2ZSB0ZXh0IG5vZGVzIGFuZCB0aGVpciB0ZXh0IGxlbmd0aHNcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIEhUTUxOb2RlTGlzdDxOLCBUPiA9IFtOIHwgVCwgbnVtYmVyXVtdO1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBUaGUgSFRNTERvY3VtZW50IGNsYXNzIChleHRlbmRzIEFic3RyYWN0TWF0aERvY3VtZW50KVxuICpcbiAqICBBIGNsYXNzIGZvciBleHRyYWN0aW5nIHRoZSB0ZXh0IGZyb20gRE9NIHRyZWVzXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgSFRNTERvbVN0cmluZ3M8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBvcHRpb25zIGZvciBzdHJpbmcgcHJvY2Vzc2luZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBPUFRJT05TOiBPcHRpb25MaXN0ID0ge1xuICAgIHNraXBIdG1sVGFnczogWydzY3JpcHQnLCAnbm9zY3JpcHQnLCAnc3R5bGUnLCAndGV4dGFyZWEnLCAncHJlJywgJ2NvZGUnLCAnYW5ub3RhdGlvbicsICdhbm5vdGF0aW9uLXhtbCddLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuYW1lcyBvZiB0aGUgdGFncyB3aG9zZSBjb250ZW50cyB3aWxsIG5vdCBiZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNjYW5uZWQgZm9yIG1hdGggZGVsaW1pdGVyc1xuXG4gICAgaW5jbHVkZUh0bWxUYWdzOiB7YnI6ICdcXG4nLCB3YnI6ICcnLCAnI2NvbW1lbnQnOiAnJ30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIHRhZ3MgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHRleHQgKGFuZCB3aGF0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIHRleHQgdG8gcmVwbGFjZSB0aGVtIHdpdGgpXG5cbiAgICBpZ25vcmVIdG1sQ2xhc3M6ICdtYXRoamF4X2lnbm9yZScsICAvLyB0aGUgY2xhc3MgbmFtZSBvZiBlbGVtZW50cyB3aG9zZSBjb250ZW50cyBzaG91bGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOT1QgYmUgcHJvY2Vzc2VkIGJ5IHRleDJqYXguICBOb3RlIHRoYXQgdGhpc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIGEgcmVndWxhciBleHByZXNzaW9uLCBzbyBiZSBzdXJlIHRvIHF1b3RlIGFueVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2V4cCBzcGVjaWFsIGNoYXJhY3RlcnNcblxuICAgIHByb2Nlc3NIdG1sQ2xhc3M6ICdtYXRoamF4X3Byb2Nlc3MnIC8vIHRoZSBjbGFzcyBuYW1lIG9mIGVsZW1lbnRzIHdob3NlIGNvbnRlbnRzIFNIT1VMRFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJlIHByb2Nlc3NlZCB3aGVuIHRoZXkgYXBwZWFyIGluc2lkZSBvbmVzIHRoYXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgaWdub3JlZC4gIE5vdGUgdGhhdCB0aGlzIGlzIGEgcmVndWxhciBleHByZXNzaW9uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIGJlIHN1cmUgdG8gcXVvdGUgYW55IHJlZ2V4cCBzcGVjaWFsIGNoYXJhY3RlcnNcbiAgfTtcblxuICAvKipcbiAgICogVGhlIG9wdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2VcbiAgICovXG4gIHByb3RlY3RlZCBvcHRpb25zOiBPcHRpb25MaXN0O1xuXG4gIC8qKlxuICAgKiBUaGUgYXJyYXkgb2Ygc3RyaW5ncyBmb3VuZCBpbiB0aGUgRE9NXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RyaW5nczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBzdHJpbmcgY3VycmVudGx5IGJlaW5nIGNvbnN0cnVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RyaW5nOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIG5vZGVzIGFuZCBsZW5ndGhzIGZvciB0aGUgc3RyaW5nIGJlaW5nIGNvbnN0cnVjdGVkXG4gICAqL1xuICBwcm90ZWN0ZWQgc25vZGVzOiBIVE1MTm9kZUxpc3Q8TiwgVD47XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIG5vZGUgbGlzdHMgY29ycmVzcG9uZGluZyB0byB0aGUgc3RyaW5ncyBpbiB0aGlzLnN0cmluZ3NcbiAgICovXG4gIHByb3RlY3RlZCBub2RlczogSFRNTE5vZGVMaXN0PE4sIFQ+W107XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgbm9kZXMgdGhhdCBhcmUgY3VycmVudGx5IGJlaW5nIHRyYXZlcnNlZCwgYW5kIHdoZXRoZXIgdGhlaXJcbiAgICogIGNvbnRlbnRzIGFyZSBiZWluZyBpZ25vcmVkIG9yIG5vdFxuICAgKi9cbiAgcHJvdGVjdGVkIHN0YWNrOiBbTiB8IFQsIGJvb2xlYW5dW107XG5cbiAgLyoqXG4gICAqIFJlZ3VsYXIgZXhwcmVzc2lvbiBmb3IgdGhlIHRhZ3MgdG8gYmUgc2tpcHBlZFxuICAgKiAgcHJvY2Vzc2luZyBvZiBtYXRoXG4gICAqL1xuICBwcm90ZWN0ZWQgc2tpcEh0bWxUYWdzOiBSZWdFeHA7XG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIHdoaWNoIGNsYXNzZXMgc2hvdWxkIHN0b3AgcHJvY2Vzc2luZyBvZiBtYXRoXG4gICAqL1xuICBwcm90ZWN0ZWQgaWdub3JlSHRtbENsYXNzOiBSZWdFeHA7XG4gIC8qKlxuICAgKiBSZWd1bGFyIGV4cHJlc3Npb24gZm9yIHdoaWNoIGNsYXNzZXMgc2hvdWxkIHN0YXJ0IHByb2Nlc3Npbmcgb2YgbWF0aFxuICAgKi9cbiAgcHJvdGVjdGVkIHByb2Nlc3NIdG1sQ2xhc3M6IFJlZ0V4cDtcblxuICAvKipcbiAgICogVGhlIERPTSBBZGFwdG9yIHRvIG1hbmFnaW5nIEhUTUwgZWxlbWVudHNcbiAgICovXG4gIHB1YmxpYyBhZGFwdG9yOiBET01BZGFwdG9yPE4sIFQsIEQ+O1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge09wdGlvbkxpc3R9IG9wdGlvbnMgIFRoZSB1c2VyLXN1cHBsaWVkIG9wdGlvbnNcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBPcHRpb25MaXN0ID0gbnVsbCkge1xuICAgIGxldCBDTEFTUyA9IHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEhUTUxEb21TdHJpbmdzO1xuICAgIHRoaXMub3B0aW9ucyA9IHVzZXJPcHRpb25zKGRlZmF1bHRPcHRpb25zKHt9LCBDTEFTUy5PUFRJT05TKSwgb3B0aW9ucyk7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgdGhpcy5nZXRQYXR0ZXJucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgaW5pdGlhbCB2YWx1ZXMgb2YgdGhlIG1haW4gcHJvcGVydGllc1xuICAgKi9cbiAgcHJvdGVjdGVkIGluaXQoKSB7XG4gICAgdGhpcy5zdHJpbmdzID0gW107XG4gICAgdGhpcy5zdHJpbmcgPSAnJztcbiAgICB0aGlzLnNub2RlcyA9IFtdO1xuICAgIHRoaXMubm9kZXMgPSBbXTtcbiAgICB0aGlzLnN0YWNrID0gW107XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBzZWFyY2ggcGF0dGVybnMgZm9yIHNraXBIdG1sVGFncywgaWdub3JlSHRtbENsYXNzLCBhbmQgcHJvY2Vzc0h0bWxDbGFzc1xuICAgKi9cbiAgcHJvdGVjdGVkIGdldFBhdHRlcm5zKCkge1xuICAgIGxldCBza2lwID0gbWFrZUFycmF5KHRoaXMub3B0aW9uc1snc2tpcEh0bWxUYWdzJ10pO1xuICAgIGxldCBpZ25vcmUgPSBtYWtlQXJyYXkodGhpcy5vcHRpb25zWydpZ25vcmVIdG1sQ2xhc3MnXSk7XG4gICAgbGV0IHByb2Nlc3MgPSBtYWtlQXJyYXkodGhpcy5vcHRpb25zWydwcm9jZXNzSHRtbENsYXNzJ10pO1xuICAgIHRoaXMuc2tpcEh0bWxUYWdzID0gbmV3IFJlZ0V4cCgnXig/OicgKyBza2lwLmpvaW4oJ3wnKSArICcpJCcsICdpJyk7XG4gICAgdGhpcy5pZ25vcmVIdG1sQ2xhc3MgPSBuZXcgUmVnRXhwKCcoPzpefCApKD86JyArIGlnbm9yZS5qb2luKCd8JykgKyAnKSg/OiB8JCknKTtcbiAgICB0aGlzLnByb2Nlc3NIdG1sQ2xhc3MgPSBuZXcgUmVnRXhwKCcoPzpefCApKD86JyArIHByb2Nlc3MgKyAnKSg/OiB8JCknKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBzdHJpbmcgdG8gdGhlIHN0cmluZyBhcnJheSBhbmQgcmVjb3JkIGl0cyBub2RlIGxpc3RcbiAgICovXG4gIHByb3RlY3RlZCBwdXNoU3RyaW5nKCkge1xuICAgIGlmICh0aGlzLnN0cmluZy5tYXRjaCgvXFxTLykpIHtcbiAgICAgIHRoaXMuc3RyaW5ncy5wdXNoKHRoaXMuc3RyaW5nKTtcbiAgICAgIHRoaXMubm9kZXMucHVzaCh0aGlzLnNub2Rlcyk7XG4gICAgfVxuICAgIHRoaXMuc3RyaW5nID0gJyc7XG4gICAgdGhpcy5zbm9kZXMgPSBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbW9yZSB0ZXh0IHRvIHRoZSBjdXJyZW50IHN0cmluZywgYW5kIHJlY29yZCB0aGVcbiAgICogbm9kZSBhbmQgaXRzIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7TnxUfSBub2RlICAgICAgICBUaGUgbm9kZSB0byBiZSBwdXNoZWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgICBUaGUgdGV4dCB0byBiZSBhZGRlZCAoaXQgbWF5IG5vdCBiZSB0aGUgYWN0dWFsIHRleHRcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIG5vZGUsIGlmIGl0IGlzIG9uZSBvZiB0aGUgbm9kZXMgdGhhdCBnZXRzXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQgdG8gdGV4dCwgbGlrZSA8YnI+IHRvIGEgbmV3bGluZSkuXG4gICAqL1xuICBwcm90ZWN0ZWQgZXh0ZW5kU3RyaW5nKG5vZGU6IE4gfCBULCB0ZXh0OiBzdHJpbmcpIHtcbiAgICB0aGlzLnNub2Rlcy5wdXNoKFtub2RlLCB0ZXh0Lmxlbmd0aF0pO1xuICAgIHRoaXMuc3RyaW5nICs9IHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGEgI3RleHQgbm9kZSAoYWRkIGl0cyB0ZXh0IHRvIHRoZSBjdXJyZW50IHN0cmluZylcbiAgICpcbiAgICogQHBhcmFtIHtUfSBub2RlICAgICAgICAgIFRoZSBUZXh0IG5vZGUgdG8gcHJvY2Vzc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlnbm9yZSAgV2hldGhlciB3ZSBhcmUgY3VycmVudGx5IGlnbm9yaW5nIGNvbnRlbnRcbiAgICogQHJldHVybiB7TiB8IFR9ICAgICAgICAgIFRoZSBuZXh0IGVsZW1lbnQgdG8gcHJvY2Vzc1xuICAgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZVRleHQobm9kZTogVCwgaWdub3JlOiBib29sZWFuKTogTiB8IFQge1xuICAgIGlmICghaWdub3JlKSB7XG4gICAgICB0aGlzLmV4dGVuZFN0cmluZyhub2RlLCB0aGlzLmFkYXB0b3IudmFsdWUobm9kZSkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hZGFwdG9yLm5leHQobm9kZSk7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGEgQlIsIFdCUiwgb3IgI2NvbW1lbnQgZWxlbWVudCAob3Igb3RoZXJzIGluIHRoZSBpbmNsdWRlSHRtbFRhZ3Mgb2JqZWN0KS5cbiAgICpcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICAgIFRoZSBub2RlIHRvIHByb2Nlc3NcbiAgICogQHBhcmFtIHtib29sZWFufSBpZ25vcmUgIFdoZXRoZXIgd2UgYXJlIGN1cnJlbnRseSBpZ25vcmluZyBjb250ZW50XG4gICAqIEByZXR1cm4ge04gfCBUfSAgICAgICAgICBUaGUgbmV4dCBlbGVtZW50IHRvIHByb2Nlc3NcbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVUYWcobm9kZTogTiwgaWdub3JlOiBib29sZWFuKTogTiB8IFQge1xuICAgIGlmICghaWdub3JlKSB7XG4gICAgICBsZXQgdGV4dCA9IHRoaXMub3B0aW9uc1snaW5jbHVkZUh0bWxUYWdzJ11bdGhpcy5hZGFwdG9yLmtpbmQobm9kZSldO1xuICAgICAgdGhpcy5leHRlbmRTdHJpbmcobm9kZSwgdGV4dCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmFkYXB0b3IubmV4dChub2RlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIYW5kbGUgYW4gYXJiaXRyYXJ5IERPTSBub2RlOlxuICAgKiAgIENoZWNrIHRoZSBjbGFzcyB0byBzZWUgaWYgaXQgbWF0Y2hlcyB0aGUgcHJvY2Vzc0h0bWxDbGFzcyByZWdleFxuICAgKiAgIElmIHRoZSBub2RlIGhhcyBhIGNoaWxkIGFuZCBpcyBub3QgbWFya2VkIGFzIGNyZWF0ZWQgYnkgTWF0aEpheCAoZGF0YS1NSlgpXG4gICAqICAgICAgIGFuZCBlaXRoZXIgaXQgaXMgbWFya2VkIGFzIHJlc3RhcnRpbmcgcHJvY2Vzc2luZyBvciBpcyBub3QgYSB0YWcgdG8gYmUgc2tpcHBlZCwgdGhlblxuICAgKiAgICAgU2F2ZSB0aGUgbmV4dCBub2RlIChpZiB0aGVyZSBpcyBvbmUpIGFuZCB3aGV0aGVyIHdlIGFyZSBjdXJyZW50bHkgaWdub3JpbmcgY29udGVudFxuICAgKiAgICAgTW92ZSB0byB0aGUgZmlyc3QgY2hpbGQgbm9kZVxuICAgKiAgICAgVXBkYXRlIHdoZXRoZXIgd2UgYXJlIGlnbm9yaW5nIGNvbnRlbnRcbiAgICogICBPdGhlcndpc2VcbiAgICogICAgIE1vdmUgb24gdG8gdGhlIG5leHQgc2libGluZ1xuICAgKiAgIFJldHVybiB0aGUgbmV4dCBub2RlIHRvIHByb2Nlc3MgYW5kIHRoZSBpZ25vcmUgc3RhdGVcbiAgICpcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICAgICAgICAgVGhlIG5vZGUgdG8gcHJvY2Vzc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlnbm9yZSAgICAgICBXaGV0aGVyIHdlIGFyZSBjdXJyZW50bHkgaWdub3JpbmcgY29udGVudFxuICAgKiBAcmV0dXJuIHtbTnxULCBib29sZWFuXX0gICAgICBUaGUgbmV4dCBlbGVtZW50IHRvIHByb2Nlc3MgYW5kIHdoZXRoZXIgdG8gaWdub3JlIGl0cyBjb250ZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlQ29udGFpbmVyKG5vZGU6IE4sIGlnbm9yZTogYm9vbGVhbik6IFtOIHwgVCwgYm9vbGVhbl0ge1xuICAgIHRoaXMucHVzaFN0cmluZygpO1xuICAgIGNvbnN0IGNuYW1lID0gdGhpcy5hZGFwdG9yLmdldEF0dHJpYnV0ZShub2RlLCAnY2xhc3MnKSB8fCAnJztcbiAgICBjb25zdCB0bmFtZSA9IHRoaXMuYWRhcHRvci5raW5kKG5vZGUpIHx8ICcnO1xuICAgIGNvbnN0IHByb2Nlc3MgPSB0aGlzLnByb2Nlc3NIdG1sQ2xhc3MuZXhlYyhjbmFtZSk7XG4gICAgbGV0IG5leHQgPSBub2RlIGFzIE4gfCBUO1xuICAgIGlmICh0aGlzLmFkYXB0b3IuZmlyc3RDaGlsZChub2RlKSAmJiAhdGhpcy5hZGFwdG9yLmdldEF0dHJpYnV0ZShub2RlLCAnZGF0YS1NSlgnKSAmJlxuICAgICAgICAocHJvY2VzcyB8fCAhdGhpcy5za2lwSHRtbFRhZ3MuZXhlYyh0bmFtZSkpKSB7XG4gICAgICBpZiAodGhpcy5hZGFwdG9yLm5leHQobm9kZSkpIHtcbiAgICAgICAgdGhpcy5zdGFjay5wdXNoKFt0aGlzLmFkYXB0b3IubmV4dChub2RlKSwgaWdub3JlXSk7XG4gICAgICB9XG4gICAgICBuZXh0ID0gdGhpcy5hZGFwdG9yLmZpcnN0Q2hpbGQobm9kZSk7XG4gICAgICBpZ25vcmUgPSAoaWdub3JlIHx8IHRoaXMuaWdub3JlSHRtbENsYXNzLmV4ZWMoY25hbWUpKSAmJiAhcHJvY2VzcztcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dCA9IHRoaXMuYWRhcHRvci5uZXh0KG5vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gW25leHQsIGlnbm9yZV07XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlIGFuIHVua25vd24gbm9kZSB0eXBlIChub2RlVHlwZSBvdGhlciB0aGFuIDEsIDMsIDgpXG4gICAqXG4gICAqIEBwYXJhbSB7Tn0gbm9kZSAgICAgICAgICAgVGhlIG5vZGUgdG8gcHJvY2Vzc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlnbm9yZSAgIFdoZXRoZXIgd2UgYXJlIGN1cnJlbnRseSBpZ25vcmluZyBjb250ZW50XG4gICAqIEByZXR1cm4ge058VH0gICAgICAgICAgICAgVGhlIG5leHQgZWxlbWVudCB0byBwcm9jZXNzXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlT3RoZXIobm9kZTogTiwgX2lnbm9yZTogYm9vbGVhbik6IE4gfCBUIHtcbiAgICB0aGlzLnB1c2hTdHJpbmcoKTtcbiAgICByZXR1cm4gdGhpcy5hZGFwdG9yLm5leHQobm9kZSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCB0aGUgc3RyaW5ncyBmb3IgYSBnaXZlbiBET00gZWxlbWVudDpcbiAgICogICBJbml0aWFsaXplIHRoZSBzdGF0ZVxuICAgKiAgIEdldCB0aGUgZWxlbWVudCB3aGVyZSB3ZSBzdG9wIHByb2Nlc3NpbmdcbiAgICogICBXaGlsZSB3ZSBzdGlsbCBoYXZlIGEgbm9kZSwgYW5kIGl0IGlzIG5vdCB0aGUgb25lIHdoZXJlIHdlIGFyZSB0byBzdG9wOlxuICAgKiAgICAgSWYgaXQgaXMgYSB0ZXh0IG5vZGUsIGhhbmRsZSBpdCBhbmQgZ2V0IHRoZSBuZXh0IG5vZGVcbiAgICogICAgIE90aGVyd2lzZSwgaWYgaXQgaXMgaW4gdGhlIGluY2x1ZGVIdG1sVGFncyBsaXN0LCBoYW5kbGUgaXQgYW5kIGdldCB0aGUgbmV4dCBub2RlXG4gICAqICAgICBPdGhlcndpc2UsIGhhbmRsZSBpdCBhcyBhIGNvbnRhaW5lciBhbmQgZ2V0IHRoZSBuZXh0IG5vZGUgYW5kIGlnbm9yZSBzdGF0dXNcbiAgICogICAgIElmIHRoZXJlIGlzIG5vIG5leHQgbm9kZSwgYW5kIHRoZXJlIGFyZSBtb3JlIG5vZGVzIG9uIHRoZSBzdGFjazpcbiAgICogICAgICAgU2F2ZSB0aGUgY3VycmVudCBzdHJpbmcsIGFuZCBwb3AgdGhlIG5vZGUgYW5kIGlnbm9yZSBzdGF0dXMgZnJvbSB0aGUgc3RhY2tcbiAgICogICBQdXNoIHRoZSBmaW5hbCBzdHJpbmdcbiAgICogICBHZXQgdGhlIHN0cmluZyBhcnJheSBhbmQgYXJyYXkgb2YgYXNzb2NpYXRlZCBET00gbm9kZXNcbiAgICogICBDbGVhciB0aGUgaW50ZXJuYWwgdmFsdWVzIChzbyB0aGUgbWVtb3J5IGNhbiBiZSBmcmVlZClcbiAgICogICBSZXR1cm4gdGhlIHN0cmluZ3MgYW5kIG5vZGUgbGlzdHNcbiAgICpcbiAgICogQHBhcmFtIHtOfSBub2RlICAgICAgICAgICAgICAgICAgICAgICBUaGUgbm9kZSB0byBzZWFyY2hcbiAgICogQHJldHVybiB7W3N0cmluZ1tdLCBIVE1MTm9kZUxpc3RbXV19ICBUaGUgYXJyYXkgb2Ygc3RyaW5ncyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBsaXN0cyBvZiBub2Rlc1xuICAgKi9cbiAgcHVibGljIGZpbmQobm9kZTogTiB8IFQpOiBbc3RyaW5nW10sIEhUTUxOb2RlTGlzdDxOLCBUPltdXSB7XG4gICAgdGhpcy5pbml0KCk7XG4gICAgbGV0IHN0b3AgPSB0aGlzLmFkYXB0b3IubmV4dChub2RlKTtcbiAgICBsZXQgaWdub3JlID0gZmFsc2U7XG4gICAgbGV0IGluY2x1ZGUgPSB0aGlzLm9wdGlvbnNbJ2luY2x1ZGVIdG1sVGFncyddO1xuXG4gICAgd2hpbGUgKG5vZGUgJiYgbm9kZSAhPT0gc3RvcCkge1xuICAgICAgY29uc3Qga2luZCA9IHRoaXMuYWRhcHRvci5raW5kKG5vZGUpO1xuICAgICAgaWYgKGtpbmQgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgbm9kZSA9IHRoaXMuaGFuZGxlVGV4dChub2RlIGFzIFQsIGlnbm9yZSk7XG4gICAgICB9IGVsc2UgaWYgKGluY2x1ZGUuaGFzT3duUHJvcGVydHkoa2luZCkpIHtcbiAgICAgICAgbm9kZSA9IHRoaXMuaGFuZGxlVGFnKG5vZGUgYXMgTiwgaWdub3JlKTtcbiAgICAgIH0gZWxzZSBpZiAoa2luZCkge1xuICAgICAgICBbbm9kZSwgaWdub3JlXSA9IHRoaXMuaGFuZGxlQ29udGFpbmVyKG5vZGUgYXMgTiwgaWdub3JlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vZGUgPSB0aGlzLmhhbmRsZU90aGVyKG5vZGUgYXMgTiwgaWdub3JlKTtcbiAgICAgIH1cbiAgICAgIGlmICghbm9kZSAmJiB0aGlzLnN0YWNrLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnB1c2hTdHJpbmcoKTtcbiAgICAgICAgW25vZGUsIGlnbm9yZV0gPSB0aGlzLnN0YWNrLnBvcCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucHVzaFN0cmluZygpO1xuICAgIGxldCByZXN1bHQgPSBbdGhpcy5zdHJpbmdzLCB0aGlzLm5vZGVzXSBhcyBbc3RyaW5nW10sIEhUTUxOb2RlTGlzdDxOLCBUPltdXTtcbiAgICB0aGlzLmluaXQoKTsgLy8gZnJlZSB1cCBtZW1vcnlcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgSFRNTERvY3VtZW50IGNsYXNzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge0Fic3RyYWN0TWF0aERvY3VtZW50fSBmcm9tICcuLi8uLi9jb3JlL01hdGhEb2N1bWVudC5qcyc7XG5pbXBvcnQge3VzZXJPcHRpb25zLCBzZXBhcmF0ZU9wdGlvbnMsIE9wdGlvbkxpc3QsIGV4cGFuZGFibGV9IGZyb20gJy4uLy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5pbXBvcnQge0hUTUxNYXRoSXRlbX0gZnJvbSAnLi9IVE1MTWF0aEl0ZW0uanMnO1xuaW1wb3J0IHtIVE1MTWF0aExpc3R9IGZyb20gJy4vSFRNTE1hdGhMaXN0LmpzJztcbmltcG9ydCB7SFRNTERvbVN0cmluZ3N9IGZyb20gJy4vSFRNTERvbVN0cmluZ3MuanMnO1xuaW1wb3J0IHtET01BZGFwdG9yfSBmcm9tICcuLi8uLi9jb3JlL0RPTUFkYXB0b3IuanMnO1xuaW1wb3J0IHtJbnB1dEpheH0gZnJvbSAnLi4vLi4vY29yZS9JbnB1dEpheC5qcyc7XG5pbXBvcnQge1NUQVRFLCBQcm90b0l0ZW0sIExvY2F0aW9ufSBmcm9tICcuLi8uLi9jb3JlL01hdGhJdGVtLmpzJztcbmltcG9ydCB7U3R5bGVMaXN0fSBmcm9tICcuLi8uLi91dGlsL1N0eWxlTGlzdC5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogTGlzdCBvZiBMaXN0cyBvZiBwYWlycyBjb25zaXN0aW5nIG9mIGEgRE9NIG5vZGUgYW5kIGl0cyB0ZXh0IGxlbmd0aFxuICpcbiAqIFRoZXNlIHJlcHJlc2VudCB0aGUgVGV4dCBlbGVtZW50cyB0aGF0IG1ha2UgdXAgYSBzaW5nbGVcbiAqIHN0cmluZyBpbiB0aGUgbGlzdCBvZiBzdHJpbmdzIHRvIGJlIHNlYXJjaGVkIGZvciBtYXRoXG4gKiAobXVsdGlwbGUgY29uc2VjdXRpdmUgVGV4dCBub2RlcyBjYW4gZm9ybSBhIHNpbmdsZSBzdHJpbmcpLlxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqL1xuZXhwb3J0IHR5cGUgSFRNTE5vZGVBcnJheTxOLCBUPiA9IFtOIHwgVCwgbnVtYmVyXVtdW107XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIFRoZSBIVE1MRG9jdW1lbnQgY2xhc3MgKGV4dGVuZHMgQWJzdHJhY3RNYXRoRG9jdW1lbnQpXG4gKlxuICogQHRlbXBsYXRlIE4gIFRoZSBIVE1MRWxlbWVudCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgVCAgVGhlIFRleHQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIEQgIFRoZSBEb2N1bWVudCBjbGFzc1xuICovXG5leHBvcnQgY2xhc3MgSFRNTERvY3VtZW50PE4sIFQsIEQ+IGV4dGVuZHMgQWJzdHJhY3RNYXRoRG9jdW1lbnQ8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBUaGUga2luZCBvZiBkb2N1bWVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBLSU5EOiBzdHJpbmcgPSAnSFRNTCc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIEhUTUxEb2N1bWVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBPUFRJT05TOiBPcHRpb25MaXN0ID0ge1xuICAgIC4uLkFic3RyYWN0TWF0aERvY3VtZW50Lk9QVElPTlMsXG4gICAgcmVuZGVyQWN0aW9uczogZXhwYW5kYWJsZSh7XG4gICAgICAuLi5BYnN0cmFjdE1hdGhEb2N1bWVudC5PUFRJT05TLnJlbmRlckFjdGlvbnMsXG4gICAgICBzdHlsZXM6IFtTVEFURS5JTlNFUlRFRCArIDEsICcnLCAndXBkYXRlU3R5bGVTaGVldCcsIGZhbHNlXSAgLy8gdXBkYXRlIHN0eWxlcyBvbiBhIHJlcmVuZGVyKCkgY2FsbFxuICAgIH0pLFxuICAgIE1hdGhMaXN0OiBIVE1MTWF0aExpc3QsICAgICAgICAgICAvLyBVc2UgdGhlIEhUTUxNYXRoTGlzdCBmb3IgTWF0aExpc3RzXG4gICAgTWF0aEl0ZW06IEhUTUxNYXRoSXRlbSwgICAgICAgICAgIC8vIFVzZSB0aGUgSFRNTE1hdGhJdGVtIGZvciBNYXRoSXRlbVxuICAgIERvbVN0cmluZ3M6IG51bGwgICAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIGRlZmF1bHQgRG9tU3RyaW5nIHBhcnNlclxuICB9O1xuXG4gIC8qKlxuICAgKiBFeHRyYSBzdHlsZXMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIGRvY3VtZW50J3Mgc3R5bGVzaGVldCAoYWRkZWQgYnkgZXh0ZW5zaW9ucylcbiAgICovXG4gIHByb3RlY3RlZCBzdHlsZXM6IFN0eWxlTGlzdFtdO1xuXG4gIC8qKlxuICAgKiBUaGUgRG9tU3RyaW5nIHBhcnNlciBmb3IgbG9jYXRpbmcgdGhlIHRleHQgaW4gRE9NIHRyZWVzXG4gICAqL1xuICBwdWJsaWMgZG9tU3RyaW5nczogSFRNTERvbVN0cmluZ3M8TiwgVCwgRD47XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQGV4dGVuZHMge0Fic3RyYWN0TWF0aERvY3VtZW50fVxuICAgKi9cbiAgY29uc3RydWN0b3IoZG9jdW1lbnQ6IGFueSwgYWRhcHRvcjogRE9NQWRhcHRvcjxOLCBULCBEPiwgb3B0aW9uczogT3B0aW9uTGlzdCkge1xuICAgIGxldCBbaHRtbCwgZG9tXSA9IHNlcGFyYXRlT3B0aW9ucyhvcHRpb25zLCBIVE1MRG9tU3RyaW5ncy5PUFRJT05TKTtcbiAgICBzdXBlcihkb2N1bWVudCwgYWRhcHRvciwgaHRtbCk7XG4gICAgdGhpcy5kb21TdHJpbmdzID0gdGhpcy5vcHRpb25zWydEb21TdHJpbmdzJ10gfHwgbmV3IEhUTUxEb21TdHJpbmdzPE4sIFQsIEQ+KGRvbSk7XG4gICAgdGhpcy5kb21TdHJpbmdzLmFkYXB0b3IgPSBhZGFwdG9yO1xuICAgIHRoaXMuc3R5bGVzID0gW107XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIExvY2F0aW9uIG9iamVjdCBmb3IgYSBkZWxpbWl0ZXIgYXQgdGhlIHBvc2l0aW9uIGdpdmVuIGJ5IGluZGV4IGluIHRoZSBOJ3Mgc3RyaW5nXG4gICAqICBvZiB0aGUgYXJyYXkgb2Ygc3RyaW5ncyBzZWFyY2hlZCBmb3IgbWF0aCwgcmVjb3ZlcmluZyB0aGUgb3JpZ2luYWwgRE9NIG5vZGUgd2hlcmUgdGhlIGRlbGltaXRlclxuICAgKiAgd2FzIGZvdW5kLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gTiAgICAgICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHN0cmluZyBpbiB0aGUgc3RyaW5nIGFycmF5XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCAgICAgICAgIFRoZSBwb3NpdGlvbiB3aXRoaW4gdGhlIE4ncyBzdHJpbmcgdGhhdCBuZWVkcyB0byBiZSBmb3VuZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVsaW0gICAgICAgICBUaGUgZGVsaW1pdGVyIGZvciB0aGlzIHBvc2l0aW9uXG4gICAqIEBwYXJhbSB7SFRNTE5vZGVBcnJheX0gbm9kZXMgIFRoZSBsaXN0IG9mIG5vZGUgbGlzdHMgcmVwcmVzZW50aW5nIHRoZSBzdHJpbmcgYXJyYXlcbiAgICogQHJldHVybiB7TG9jYXRpb259ICAgICAgICAgICAgVGhlIExvY2F0aW9uIG9iamVjdCBmb3IgdGhlIHBvc2l0aW9uIG9mIHRoZSBkZWxpbWl0ZXIgaW4gdGhlIGRvY3VtZW50XG4gICAqL1xuICBwcm90ZWN0ZWQgZmluZFBvc2l0aW9uKE46IG51bWJlciwgaW5kZXg6IG51bWJlciwgZGVsaW06IHN0cmluZywgbm9kZXM6IEhUTUxOb2RlQXJyYXk8TiwgVD4pOiBMb2NhdGlvbjxOLCBUPiB7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBmb3IgKGNvbnN0IGxpc3Qgb2Ygbm9kZXNbTl0pIHtcbiAgICAgIGxldCBbbm9kZSwgbl0gPSBsaXN0O1xuICAgICAgaWYgKGluZGV4IDw9IG4gJiYgYWRhcHRvci5raW5kKG5vZGUpID09PSAnI3RleHQnKSB7XG4gICAgICAgIHJldHVybiB7bm9kZTogbm9kZSwgbjogTWF0aC5tYXgoaW5kZXgsIDApLCBkZWxpbTogZGVsaW19O1xuICAgICAgfVxuICAgICAgaW5kZXggLT0gbjtcbiAgICB9XG4gICAgcmV0dXJuIHtub2RlOiBudWxsLCBuOiAwLCBkZWxpbTogZGVsaW19O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBQcm90b0l0ZW0gdG8gYSBNYXRoSXRlbSAoaS5lLiwgZGV0ZXJtaW5lIHRoZSBhY3R1YWwgTG9jYXRpb25cbiAgICogIG9iamVjdHMgZm9yIGl0cyBzdGFydCBhbmQgZW5kKVxuICAgKlxuICAgKiBAcGFyYW0ge1Byb3RvSXRlbX0gaXRlbSAgICAgICBUaGUgcHJvdG8gbWF0aCBpdGVtIHRvIHR1cm4gaW50byBhbiBhY3R1YWwgTWF0aEl0ZW1cbiAgICogQHBhcmFtIHtJbnB1dEpheH0gamF4ICAgICAgICAgVGhlIGlucHV0IGpheCB0byB1c2UgZm9yIHRoZSBNYXRoSXRlbVxuICAgKiBAcGFyYW0ge0hUTUxOb2RlQXJyYXl9IG5vZGVzICBUaGUgYXJyYXkgb2Ygbm9kZSBsaXN0cyB0aGF0IHByb2R1Y2VkIHRoZSBzdHJpbmcgYXJyYXlcbiAgICogQHJldHVybiB7SFRNTE1hdGhJdGVtfSAgICAgICAgVGhlIE1hdGhJdGVtIGZvciB0aGUgZ2l2ZW4gcHJvdG8gaXRlbVxuICAgKi9cbiAgcHJvdGVjdGVkIG1hdGhJdGVtKGl0ZW06IFByb3RvSXRlbTxOLCBUPiwgamF4OiBJbnB1dEpheDxOLCBULCBEPixcbiAgICAgICAgICAgICAgICAgICAgIG5vZGVzOiBIVE1MTm9kZUFycmF5PE4sIFQ+KTogSFRNTE1hdGhJdGVtPE4sIFQsIEQ+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1hdGggPSBpdGVtLm1hdGg7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBzdGFydCA9IHRoaXMuZmluZFBvc2l0aW9uKGl0ZW0ubiwgaXRlbS5zdGFydC5uLCBpdGVtLm9wZW4sIG5vZGVzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVuZCA9IHRoaXMuZmluZFBvc2l0aW9uKGl0ZW0ubiwgaXRlbS5lbmQubiwgaXRlbS5jbG9zZSwgbm9kZXMpO1xuICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IHRoaXMub3B0aW9ucy5NYXRoSXRlbShtYXRoLCBqYXgsIGl0ZW0uZGlzcGxheSwgc3RhcnQsIGVuZCkgYXMgSFRNTE1hdGhJdGVtPE4sIFQsIEQ+O1xuICAgICAgICAgICAgICAgICAgICAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIG1hdGggd2l0aGluIHRoZSBkb2N1bWVudDpcbiAgICogIEdldCB0aGUgbGlzdCBvZiBjb250YWluZXJzIChkZWZhdWx0IGlzIGRvY3VtZW50LmJvZHkpLCBhbmQgZm9yIGVhY2g6XG4gICAqICAgIEZvciBlYWNoIGlucHV0IGpheDpcbiAgICogICAgICBNYWtlIGEgbmV3IE1hdGhMaXN0IHRvIHN0b3JlIHRoZSBsb2NhdGVkIG1hdGhcbiAgICogICAgICBJZiB0aGUgaW5wdXQgamF4IHByb2Nlc3NlcyBzdHJpbmdzOlxuICAgKiAgICAgICAgSWYgd2UgaGF2ZW4ndCBhbHJlYWR5IG1hZGUgdGhlIHN0cmluZyBhcnJheSBhbmQgY29ycmVzcG9uZGluZyBub2RlIGxpc3QsIGRvIHNvXG4gICAqICAgICAgICBBc2sgdGhlIGpheCB0byBmaW5kIHRoZSBtYXRoIGluIHRoZSBzdHJpbmcgYXJyYXksIGFuZFxuICAgKiAgICAgICAgICBmb3IgZWFjaCBvbmUsIHB1c2ggaXQgb250byB0aGUgbWF0aCBsaXN0XG4gICAqICAgICAgT3RoZXJ3aXNlICh0aGUgamF4IHByb2Nlc3NlcyBET00gbm9kZXMpOlxuICAgKiAgICAgICAgQXNrIHRoZSBqYXggdG8gZmluZCB0aGUgbWF0aCBpbiB0aGUgY29udGFpbmVyLCBhbmRcbiAgICogICAgICAgICAgZm9yIGVhY2ggb25lLCBtYWtlIHRoZSByZXN1bHQgaW50byBhIE1hdGhJdGVtLCBhbmQgcHVzaCBpdCBvbiB0aGUgbGlzdFxuICAgKiAgICAgIE1lcmdlIHRoZSBuZXcgbWF0aCBsaXN0IGludG8gdGhlIGRvY3VtZW50J3MgbWF0aCBsaXN0XG4gICAqICAgICAgICAod2UgdXNlIG1lcmdlIHRvIG1haW50YWluIGEgc29ydGVkIGxpc3Qgb2YgTWF0aEl0ZW1zKVxuICAgKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyBmaW5kTWF0aChvcHRpb25zOiBPcHRpb25MaXN0KSB7XG4gICAgaWYgKCF0aGlzLnByb2Nlc3NlZC5pc1NldCgnZmluZE1hdGgnKSkge1xuICAgICAgdGhpcy5hZGFwdG9yLmRvY3VtZW50ID0gdGhpcy5kb2N1bWVudDtcbiAgICAgIG9wdGlvbnMgPSB1c2VyT3B0aW9ucyh7ZWxlbWVudHM6IHRoaXMub3B0aW9ucy5lbGVtZW50cyB8fCBbdGhpcy5hZGFwdG9yLmJvZHkodGhpcy5kb2N1bWVudCldfSwgb3B0aW9ucyk7XG4gICAgICBmb3IgKGNvbnN0IGNvbnRhaW5lciBvZiB0aGlzLmFkYXB0b3IuZ2V0RWxlbWVudHMob3B0aW9uc1snZWxlbWVudHMnXSwgdGhpcy5kb2N1bWVudCkpIHtcbiAgICAgICAgbGV0IFtzdHJpbmdzLCBub2Rlc10gPSBbbnVsbCwgbnVsbF0gYXMgW3N0cmluZ1tdLCBIVE1MTm9kZUFycmF5PE4sIFQ+XTtcbiAgICAgICAgZm9yIChjb25zdCBqYXggb2YgdGhpcy5pbnB1dEpheCkge1xuICAgICAgICAgIGxldCBsaXN0ID0gbmV3ICh0aGlzLm9wdGlvbnNbJ01hdGhMaXN0J10pKCk7XG4gICAgICAgICAgaWYgKGpheC5wcm9jZXNzU3RyaW5ncykge1xuICAgICAgICAgICAgaWYgKHN0cmluZ3MgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgW3N0cmluZ3MsIG5vZGVzXSA9IHRoaXMuZG9tU3RyaW5ncy5maW5kKGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmb3IgKGNvbnN0IG1hdGggb2YgamF4LmZpbmRNYXRoKHN0cmluZ3MpKSB7XG4gICAgICAgICAgICAgIGxpc3QucHVzaCh0aGlzLm1hdGhJdGVtKG1hdGgsIGpheCwgbm9kZXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBtYXRoIG9mIGpheC5maW5kTWF0aChjb250YWluZXIpKSB7XG4gICAgICAgICAgICAgIGxldCBpdGVtOiBIVE1MTWF0aEl0ZW08TiwgVCwgRD4gPVxuICAgICAgICAgICAgICAgIG5ldyB0aGlzLm9wdGlvbnMuTWF0aEl0ZW0obWF0aC5tYXRoLCBqYXgsIG1hdGguZGlzcGxheSwgbWF0aC5zdGFydCwgbWF0aC5lbmQpO1xuICAgICAgICAgICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubWF0aC5tZXJnZShsaXN0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5wcm9jZXNzZWQuc2V0KCdmaW5kTWF0aCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVEb2N1bWVudCgpIHtcbiAgICBpZiAoIXRoaXMucHJvY2Vzc2VkLmlzU2V0KCd1cGRhdGVEb2N1bWVudCcpKSB7XG4gICAgICB0aGlzLmFkZFBhZ2VFbGVtZW50cygpO1xuICAgICAgdGhpcy5hZGRTdHlsZVNoZWV0KCk7XG4gICAgICBzdXBlci51cGRhdGVEb2N1bWVudCgpO1xuICAgICAgdGhpcy5wcm9jZXNzZWQuc2V0KCd1cGRhdGVEb2N1bWVudCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiAgQWRkIGFueSBlbGVtZW50cyBuZWVkZWQgZm9yIHRoZSBkb2N1bWVudFxuICAgKi9cbiAgcHJvdGVjdGVkIGFkZFBhZ2VFbGVtZW50cygpIHtcbiAgICBjb25zdCBib2R5ID0gdGhpcy5hZGFwdG9yLmJvZHkodGhpcy5kb2N1bWVudCk7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZG9jdW1lbnRQYWdlRWxlbWVudHMoKTtcbiAgICBpZiAobm9kZSkge1xuICAgICAgdGhpcy5hZGFwdG9yLmFwcGVuZChib2R5LCBub2RlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBzdHlsZXNoZWV0IHRvIHRoZSBkb2N1bWVudFxuICAgKi9cbiAgcHVibGljIGFkZFN0eWxlU2hlZXQoKSB7XG4gICAgY29uc3Qgc2hlZXQgPSB0aGlzLmRvY3VtZW50U3R5bGVTaGVldCgpO1xuICAgIGNvbnN0IGFkYXB0b3IgPSB0aGlzLmFkYXB0b3I7XG4gICAgaWYgKHNoZWV0ICYmICFhZGFwdG9yLnBhcmVudChzaGVldCkpIHtcbiAgICAgIGNvbnN0IGhlYWQgPSBhZGFwdG9yLmhlYWQodGhpcy5kb2N1bWVudCk7XG4gICAgICBsZXQgc3R5bGVzID0gdGhpcy5maW5kU2hlZXQoaGVhZCwgYWRhcHRvci5nZXRBdHRyaWJ1dGUoc2hlZXQsICdpZCcpKTtcbiAgICAgIGlmIChzdHlsZXMpIHtcbiAgICAgICAgYWRhcHRvci5yZXBsYWNlKHNoZWV0LCBzdHlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWRhcHRvci5hcHBlbmQoaGVhZCwgc2hlZXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge059IGhlYWQgICAgIFRoZSBkb2N1bWVudCA8aGVhZD5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGlkICBUaGUgaWQgb2YgdGhlIHN0eWxlc2hlZXQgdG8gZmluZFxuICAgKiBAcGFyYW0ge058bnVsbH0gICAgIFRoZSBzdHlsZXNoZWV0IHdpdGggdGhlIGdpdmVuIElEXG4gICAqL1xuICBwcm90ZWN0ZWQgZmluZFNoZWV0KGhlYWQ6IE4sIGlkOiBzdHJpbmcpIHtcbiAgICBpZiAoaWQpIHtcbiAgICAgIGZvciAoY29uc3Qgc2hlZXQgb2YgdGhpcy5hZGFwdG9yLnRhZ3MoaGVhZCwgJ3N0eWxlJykpIHtcbiAgICAgICAgaWYgKHRoaXMuYWRhcHRvci5nZXRBdHRyaWJ1dGUoc2hlZXQsICdpZCcpID09PSBpZCkge1xuICAgICAgICAgIHJldHVybiBzaGVldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbCBhcyBOO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZUZyb21Eb2N1bWVudChyZXN0b3JlOiBib29sZWFuID0gZmFsc2UpIHtcbiAgICBpZiAodGhpcy5wcm9jZXNzZWQuaXNTZXQoJ3VwZGF0ZURvY3VtZW50JykpIHtcbiAgICAgIGZvciAoY29uc3QgbWF0aCBvZiB0aGlzLm1hdGgpIHtcbiAgICAgICAgaWYgKG1hdGguc3RhdGUoKSA+PSBTVEFURS5JTlNFUlRFRCkge1xuICAgICAgICAgIG1hdGguc3RhdGUoU1RBVEUuVFlQRVNFVCwgcmVzdG9yZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wcm9jZXNzZWQuY2xlYXIoJ3VwZGF0ZURvY3VtZW50Jyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZG9jdW1lbnRTdHlsZVNoZWV0KCkge1xuICAgIHJldHVybiB0aGlzLm91dHB1dEpheC5zdHlsZVNoZWV0KHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGRvY3VtZW50UGFnZUVsZW1lbnRzKCkge1xuICAgIHJldHVybiB0aGlzLm91dHB1dEpheC5wYWdlRWxlbWVudHModGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHN0eWxlcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZG9jdW1lbnQncyBzdHlsZXNoZWV0XG4gICAqXG4gICAqIEBwYXJhbSB7U3R5bGVMaXN0fSBzdHlsZXMgICBUaGUgc3R5bGVzIHRvIGluY2x1ZGVcbiAgICovXG4gIHB1YmxpYyBhZGRTdHlsZXMoc3R5bGVzOiBTdHlsZUxpc3QpIHtcbiAgICB0aGlzLnN0eWxlcy5wdXNoKHN0eWxlcyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBhcnJheSBvZiBkb2N1bWVudC1zcGVjaWZpYyBzdHlsZXNcbiAgICovXG4gIHB1YmxpYyBnZXRTdHlsZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGVzO1xuICB9XG5cbn1cbiIsICIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTctMjAyMiBUaGUgTWF0aEpheCBDb25zb3J0aXVtXG4gKlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qKlxuICogQGZpbGVvdmVydmlldyAgSW1wbGVtZW50cyB0aGUgSFRNTEhhbmRsZXIgY2xhc3NcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7QWJzdHJhY3RIYW5kbGVyfSBmcm9tICcuLi8uLi9jb3JlL0hhbmRsZXIuanMnO1xuaW1wb3J0IHtNaW5IVE1MQWRhcHRvcn0gZnJvbSAnLi4vLi4vYWRhcHRvcnMvSFRNTEFkYXB0b3IuanMnO1xuaW1wb3J0IHtIVE1MRG9jdW1lbnR9IGZyb20gJy4vSFRNTERvY3VtZW50LmpzJztcbmltcG9ydCB7T3B0aW9uTGlzdH0gZnJvbSAnLi4vLi4vdXRpbC9PcHRpb25zLmpzJztcblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgSFRNTEhhbmRsZXIgY2xhc3MgKGV4dGVuZHMgQWJzdHJhY3RIYW5kbGVyKVxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGNsYXNzIEhUTUxIYW5kbGVyPE4sIFQsIEQ+IGV4dGVuZHMgQWJzdHJhY3RIYW5kbGVyPE4sIFQsIEQ+IHtcblxuICAvKipcbiAgICogVGhlIERPTUFkYXB0b3IgZm9yIHRoZSBkb2N1bWVudCBiZWluZyBoYW5kbGVkXG4gICAqL1xuICBwdWJsaWMgYWRhcHRvcjogTWluSFRNTEFkYXB0b3I8TiwgVCwgRD47ICAvLyBkZWNsYXJlIGEgbW9yZSBzcGVjaWZpYyBhZGFwdG9yIHR5cGVcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgZG9jdW1lbnRDbGFzcyA9IEhUTUxEb2N1bWVudDtcblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgaGFuZGxlc0RvY3VtZW50KGRvY3VtZW50OiBhbnkpIHtcbiAgICBjb25zdCBhZGFwdG9yID0gdGhpcy5hZGFwdG9yO1xuICAgIGlmICh0eXBlb2YoZG9jdW1lbnQpID09PSAnc3RyaW5nJykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZG9jdW1lbnQgPSBhZGFwdG9yLnBhcnNlKGRvY3VtZW50LCAndGV4dC9odG1sJyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHt9XG4gICAgfVxuICAgIGlmIChkb2N1bWVudCBpbnN0YW5jZW9mIGFkYXB0b3Iud2luZG93LkRvY3VtZW50IHx8XG4gICAgICAgIGRvY3VtZW50IGluc3RhbmNlb2YgYWRhcHRvci53aW5kb3cuSFRNTEVsZW1lbnQgfHxcbiAgICAgICAgZG9jdW1lbnQgaW5zdGFuY2VvZiBhZGFwdG9yLndpbmRvdy5Eb2N1bWVudEZyYWdtZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBkb2N1bWVudCBpc24ndCBhbHJlYWR5IGEgRG9jdW1lbnQgb2JqZWN0LCBjcmVhdGUgb25lXG4gICAqIHVzaW5nIHRoZSBnaXZlbiBkYXRhXG4gICAqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIGNyZWF0ZShkb2N1bWVudDogYW55LCBvcHRpb25zOiBPcHRpb25MaXN0KSB7XG4gICAgY29uc3QgYWRhcHRvciA9IHRoaXMuYWRhcHRvcjtcbiAgICBpZiAodHlwZW9mKGRvY3VtZW50KSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGRvY3VtZW50ID0gYWRhcHRvci5wYXJzZShkb2N1bWVudCwgJ3RleHQvaHRtbCcpO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQgaW5zdGFuY2VvZiBhZGFwdG9yLndpbmRvdy5IVE1MRWxlbWVudCB8fFxuICAgICAgICAgICAgICAgZG9jdW1lbnQgaW5zdGFuY2VvZiBhZGFwdG9yLndpbmRvdy5Eb2N1bWVudEZyYWdtZW50KSB7XG4gICAgICBsZXQgY2hpbGQgPSBkb2N1bWVudCBhcyBOO1xuICAgICAgZG9jdW1lbnQgPSBhZGFwdG9yLnBhcnNlKCcnLCAndGV4dC9odG1sJyk7XG4gICAgICBhZGFwdG9yLmFwcGVuZChhZGFwdG9yLmJvZHkoZG9jdW1lbnQpLCBjaGlsZCk7XG4gICAgfVxuICAgIHJldHVybiBzdXBlci5jcmVhdGUoZG9jdW1lbnQsIG9wdGlvbnMpIGFzIEhUTUxEb2N1bWVudDxOLCBULCBEPjtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIFJlZ2lzdGVycyB0aGUgSFRNTCBkb2N1bWVudCB0eXBlXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge21hdGhqYXh9IGZyb20gJy4uL21hdGhqYXguanMnO1xuaW1wb3J0IHtIVE1MSGFuZGxlcn0gZnJvbSAnLi9odG1sL0hUTUxIYW5kbGVyLmpzJztcbmltcG9ydCB7RE9NQWRhcHRvcn0gZnJvbSAnLi4vY29yZS9ET01BZGFwdG9yLmpzJztcblxuLyoqXG4gKiBDcmVhdGUgdGhlIEhUTUwgaGFuZGxlciBvYmplY3QgYW5kIHJlZ2lzdGVyIGl0IHdpdGggTWF0aEpheC5cbiAqXG4gKiBAcGFyYW0ge0RPTUFkYXB0b3I8TixULEQ+fSBhZGFwdG9yICBUaGUgRE9NIGFkYXB0b3IgdG8gdXNlIHdpdGggSFRNTFxuICogQHJldHVybiB7SFRNTEhhbmRsZXJ9ICAgICAgICAgICAgICAgVGhlIG5ld2x5IGNyZWF0ZWQgaGFuZGxlclxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIFJlZ2lzdGVySFRNTEhhbmRsZXI8TiwgVCwgRD4oYWRhcHRvcjogRE9NQWRhcHRvcjxOLCBULCBEPik6IEhUTUxIYW5kbGVyPE4sIFQsIEQ+IHtcbiAgY29uc3QgaGFuZGxlciA9IG5ldyBIVE1MSGFuZGxlcjxOLCBULCBEPihhZGFwdG9yKTtcbiAgbWF0aGpheC5oYW5kbGVycy5yZWdpc3RlcihoYW5kbGVyKTtcbiAgcmV0dXJuIGhhbmRsZXI7XG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIFRoZSBnZW5lcmljIHZpc2l0b3IgY2xhc3MgZm9yIG5vZGUgdHJlZXNcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7Tm9kZSwgTm9kZUNsYXNzLCBBYnN0cmFjdE5vZGV9IGZyb20gJy4vTm9kZS5qcyc7XG5pbXBvcnQge05vZGVGYWN0b3J5fSBmcm9tICcuL05vZGVGYWN0b3J5LmpzJztcblxuLyoqXG4gKiBUaGUgdHlwZSBmb3IgdGhlIGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggZWFjaCBub2RlIGNsYXNzXG4gKi9cbmV4cG9ydCB0eXBlIFZpc2l0b3JGdW5jdGlvbiA9ICh2aXNpdG9yOiBOb2RlRmFjdG9yeTxOb2RlLCBOb2RlQ2xhc3M+LCBub2RlOiBOb2RlLCAuLi5hcmdzOiBhbnlbXSkgPT4gYW55O1xuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBWaXNpdG9yIGludGVyZmFjZVxuICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlzaXRvciB7XG5cbiAgLyoqXG4gICAqIFZpc2l0IHRoZSB0cmVlIHJvb3RlZCBhdCB0aGUgZ2l2ZW4gbm9kZSAocGFzc2luZyBhbG9uZyBhbnkgbmVlZGVkIHBhcmFtZXRlcnMpXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZX0gdHJlZSAgIFRoZSBub2RlIHRoYXQgaXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWVcbiAgICogQHBhcmFtIHthbnlbXX0gYXJncyAgVGhlIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSB2aXNpdE5vZGUgZnVuY3Rpb25zXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgIFdoYXRldmVyIHRoZSB2aXNpdE5vZGUgZnVuY3Rpb24gcmV0dXJucyBmb3IgdGhlIHJvb3QgdHJlZSBub2RlXG4gICAqL1xuICB2aXNpdFRyZWUodHJlZTogTm9kZSwgLi4uYXJnczogYW55W10pOiBhbnk7XG5cbiAgLyoqXG4gICAqIFZpc2l0IGEgbm9kZSBieSBjYWxsaW5nIHRoZSB2aXNpdG9yIGZ1bmN0aW9uIGZvciB0aGUgZ2l2ZW4gdHlwZSBvZiBub2RlXG4gICAqICAocGFzc2luZyBhbG9uZyBhbnkgbmVlZGVkIHBhcmFtZXRlcnMpXG4gICAqXG4gICAqIEBwYXJhbSB7Tm9kZX0gbm9kZSAgIFRoZSBub2RlIHRvIHZpc2l0XG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgIFRoZSBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgdmlzaXRvciBmdW5jdGlvbiBmb3IgdGhpcyBub2RlXG4gICAqIEByZXR1cm4ge2FueX0gICAgICAgIFdoYXRldmVyIHRoZSB2aXNpdG9yIGZ1bmN0aW9uIHJldHVybnMgZm9yIHRoaXMgbm9kZVxuICAgKi9cbiAgdmlzaXROb2RlKG5vZGU6IE5vZGUsIC4uLmFyZ3M6IGFueVtdKTogYW55O1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCB2aXNpdG9yIGZ1bmN0aW9uIGZvciB3aGVuIG5vIG5vZGUtc3BlY2lmaWMgZnVuY3Rpb24gaXMgZGVmaW5lZFxuICAgKlxuICAgKiBAcGFyYW0ge05vZGV9IG5vZGUgICBUaGUgbm9kZSB0byB2aXNpdFxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzICBUaGUgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIHZpc2l0b3IgZnVuY3Rpb24gZm9yIHRoaXMgbm9kZVxuICAgKiBAcmV0dXJuIHthbnl9ICAgICAgICBXaGF0ZXZlciB0aGUgdmlzaXRvciBmdW5jdGlvbiByZXR1cm5zIGZvciB0aGlzIG5vZGVcbiAgICovXG4gIHZpc2l0RGVmYXVsdChub2RlOiBOb2RlLCAuLi5hcmdzOiBhbnlbXSk6IGFueTtcblxuICAvKipcbiAgICogRGVmaW5lIGEgdmlzaXRvciBmdW5jdGlvbiBmb3IgYSBnaXZlbiBub2RlIGtpbmRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGtpbmQgIFRoZSBub2RlIGtpbmQgZm9yIHdoaWNoIHRoZSBoYW5kbGVyIGlzIGJlaW5nIGRlZmluZWRcbiAgICogQHBhcmFtIHtWaXNpdG9yRnVuY3Rpb259IGhhbmRsZXIgIFRoZSBmdW5jdGlvbiB0byBjYWxsIHRvIGhhbmRsZSBub2RlcyBvZiB0aGlzIGtpbmRcbiAgICovXG4gIHNldE5vZGVIYW5kbGVyKGtpbmQ6IHN0cmluZywgaGFuZGxlcjogVmlzaXRvckZ1bmN0aW9uKTogdm9pZDtcblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSB2aXNpdG9yIGZ1bmN0aW9uIGZvciBhIGdpdmVuIG5vZGUga2luZFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30ga2luZCAgVGhlIG5vZGUga2luZCB3aG9zZSB2aXNpdG9yIGZ1bmN0aW9uIGlzIHRvIGJlIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZU5vZGVIYW5kbGVyKGtpbmQ6IHN0cmluZyk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXJpb3VzIHZpc2l0b3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGJ5IHRoZSBzdWJjbGFzc2VzLCBhbmQgYW55IGRhdGEgdGhleSBuZWVkXG4gICAqL1xuICBbcHJvcGVydHk6IHN0cmluZ106IGFueTtcbn1cblxuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyoqXG4gKiAgSW1wbGVtZW50cyB0aGUgZ2VuZXJpYyBWaXNpdG9yIG9iamVjdFxuICovXG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFZpc2l0b3IgaW1wbGVtZW50cyBWaXNpdG9yIHtcbiAgLyoqXG4gICAqIEhvbGRzIHRoZSBtYXBwaW5nIGZyb20gbm9kZSBraW5kcyB0byB2aXNpdG9yIGZ1bmNpdG9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIG5vZGVIYW5kbGVyczogTWFwPHN0cmluZywgVmlzaXRvckZ1bmN0aW9uPiA9IG5ldyBNYXAoKTtcblxuICAvKipcbiAgICogIFZpc2l0b3IgZnVuY3Rpb25zIGFyZSBuYW1lZCBcInZpc2l0S2luZE5vZGVcIiB3aGVyZSBcIktpbmRcIiBpcyByZXBsYWNlZCBieVxuICAgKiAgICB0aGUgbm9kZSBraW5kOyBlLmcuLCB2aXNpdFRleHROb2RlIGZvciBraW5kID0gdGV4dC5cbiAgICpcbiAgICogIEBwYXJhbSB7c3RyaW5nfSBraW5kICBUaGUgbm9kZSBraW5kIHdob3NlIG1ldGhvZCBuYW1lIGlzIG5lZWRlZFxuICAgKiAgQHJldHVybiB7c3RyaW5nfSAgVGhlIG5hbWUgb2YgdGhlIHZpc2l0b3IgbWV0aG9kIGZvciB0aGUgZ2l2ZW4gbm9kZSBraW5kXG4gICAqL1xuICBwcm90ZWN0ZWQgc3RhdGljIG1ldGhvZE5hbWUoa2luZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ3Zpc2l0JyArIChraW5kLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2luZC5zdWJzdHIoMSkpLnJlcGxhY2UoL1teYS16MC05X10vaWcsICdfJykgKyAnTm9kZSc7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBub2RlIGhhbmRsZXIgbWFwIGJ5IGxvb2tpbmcgZm9yIG1ldGhvZHMgd2l0aCB0aGUgY29ycmVjdCBuYW1lc1xuICAgKiAgIGJhc2VkIG9uIHRoZSBub2RlIGtpbmRzIGF2YWlsYWJsZSBmcm9tIHRoZSBmYWN0b3J5LlxuICAgKlxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtOb2RlRmFjdG9yeX0gZmFjdG9yeSAgVGhlIG5vZGUgZmFjdG9yeSBmb3IgdGhlIGtpbmRzIG9mIG5vZGVzIHRoaXMgdmlzaXRvciBoYW5kbGVzXG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBOb2RlRmFjdG9yeTxOb2RlLCBOb2RlQ2xhc3M+KSB7XG4gICAgZm9yIChjb25zdCBraW5kIG9mIGZhY3RvcnkuZ2V0S2luZHMoKSkge1xuICAgICAgbGV0IG1ldGhvZCA9ICh0aGlzIGFzIFZpc2l0b3IpW0Fic3RyYWN0VmlzaXRvci5tZXRob2ROYW1lKGtpbmQpXSBhcyBWaXNpdG9yRnVuY3Rpb247XG4gICAgICBpZiAobWV0aG9kKSB7XG4gICAgICAgIHRoaXMubm9kZUhhbmRsZXJzLnNldChraW5kLCBtZXRob2QpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHB1YmxpYyB2aXNpdFRyZWUodHJlZTogTm9kZSwgLi4uYXJnczogYW55W10pIHtcbiAgICByZXR1cm4gdGhpcy52aXNpdE5vZGUodHJlZSwgLi4uYXJncyk7XG4gIH1cblxuICAvKipcbiAgICogQG92ZXJyaWRlXG4gICAqL1xuICBwdWJsaWMgdmlzaXROb2RlKG5vZGU6IE5vZGUsIC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgbGV0IGhhbmRsZXIgPSB0aGlzLm5vZGVIYW5kbGVycy5nZXQobm9kZS5raW5kKSB8fCB0aGlzLnZpc2l0RGVmYXVsdDtcbiAgICByZXR1cm4gaGFuZGxlci5jYWxsKHRoaXMsIG5vZGUsIC4uLmFyZ3MpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHZpc2l0RGVmYXVsdChub2RlOiBOb2RlLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChub2RlIGluc3RhbmNlb2YgQWJzdHJhY3ROb2RlKSB7XG4gICAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGROb2Rlcykge1xuICAgICAgICB0aGlzLnZpc2l0Tm9kZShjaGlsZCwgLi4uYXJncyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHNldE5vZGVIYW5kbGVyKGtpbmQ6IHN0cmluZywgaGFuZGxlcjogVmlzaXRvckZ1bmN0aW9uKSB7XG4gICAgdGhpcy5ub2RlSGFuZGxlcnMuc2V0KGtpbmQsIGhhbmRsZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvdmVycmlkZVxuICAgKi9cbiAgcHVibGljIHJlbW92ZU5vZGVIYW5kbGVyKGtpbmQ6IHN0cmluZykge1xuICAgIHRoaXMubm9kZUhhbmRsZXJzLmRlbGV0ZShraW5kKTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEEgdmlzaXRvciBjbGFzcyB0aGF0IHZpc2l0cyBNbWxOb2RlIHRyZWVzXG4gKlxuICogQGF1dGhvciBkcHZjQG1hdGhqYXgub3JnIChEYXZpZGUgQ2Vydm9uZSlcbiAqL1xuXG5pbXBvcnQge1RleHROb2RlLCBYTUxOb2RlfSBmcm9tICcuL01tbE5vZGUuanMnO1xuaW1wb3J0IHtNbWxGYWN0b3J5fSBmcm9tICcuL01tbEZhY3RvcnkuanMnO1xuaW1wb3J0IHtBYnN0cmFjdFZpc2l0b3J9IGZyb20gJy4uL1RyZWUvVmlzaXRvci5qcyc7XG5cbi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qKlxuICogIEltcGxlbWVudHMgdGhlIE1tbFZpc2l0b3IgKHN1YmNsYXNzIG9mIFZpc2l0b3IsIGFuZCBiYXNlIGNsYXNzXG4gKiAgZm9yIHZpc2l0b3JzIHRoYXQgYWNjZXB0IE1tbE5vZGUgdHJlZXMpXG4gKi9cblxuZXhwb3J0IGNsYXNzIE1tbFZpc2l0b3IgZXh0ZW5kcyBBYnN0cmFjdFZpc2l0b3Ige1xuICAvKipcbiAgICogQHBhcmFtIHtNbWxGYWN0b3J5fSBmYWN0b3J5ICBUaGUgTW1sTm9kZSBmYWN0b3J5IChkZWZhdWx0cyB0byBNbWxGYWN0b3J5IGlmIG5vdCBnaXZlbilcbiAgICpcbiAgICogQGNvbnN0cnVjdG9yXG4gICAqIEBleHRlbmRzIHtBYnN0cmFjdFZpc2l0b3J9XG4gICAqL1xuICBjb25zdHJ1Y3RvcihmYWN0b3J5OiBNbWxGYWN0b3J5ID0gbnVsbCkge1xuICAgIGlmICghZmFjdG9yeSkge1xuICAgICAgZmFjdG9yeSA9IG5ldyBNbWxGYWN0b3J5KCk7XG4gICAgfVxuICAgIHN1cGVyKGZhY3RvcnkpO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuICAvKipcbiAgICogU3R1YnMgZm9yIG92ZXJyaWRpbmcgaW4gc3ViY2xhc3Nlc1xuICAgKi9cblxuICAvKipcbiAgICogQHBhcmFtIHtUZXh0Tm9kZX0gbm9kZSAgVGhlIFRleHROb2RlIHRvIHZpc2l0XG4gICAqIEBwYXJhbSB7YW55W119IGFyZ3MgIEFueSBhcmd1bWVudHMgbmVlZGVkIGJ5IHRoZSB2aXNpdG9yXG4gICAqIEByZXR1cm4ge2FueX0gIEFueSByZXR1cm4gdmFsdWUgbmVlZGVkIGZvciB0aGUgdmlzaXRvclxuICAgKi9cbiAgcHVibGljIHZpc2l0VGV4dE5vZGUoX25vZGU6IFRleHROb2RlLCAuLi5fYXJnczogYW55W10pOiBhbnkge31cblxuICAvKipcbiAgICogQHBhcmFtIHtYTUxOb2RlfSBub2RlICBUaGUgWE1MTm9kZSB0byB2aXNpdFxuICAgKiBAcGFyYW0ge2FueVtdfSBhcmdzICBBbnkgYXJndW1lbnRzIG5lZWRlZCBieSB0aGUgdmlzaXRvclxuICAgKiBAcmV0dXJuIHthbnl9ICBBbnkgcmV0dXJuIHZhbHVlIG5lZWRlZCBmb3IgdGhlIHZpc2l0b3JcbiAgICovXG4gIHB1YmxpYyB2aXNpdFhNTE5vZGUoX25vZGU6IFhNTE5vZGUsIC4uLl9hcmdzOiBhbnlbXSk6IGFueSB7fVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE3LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIEEgdmlzaXRvciB0aGF0IHByb2R1Y2VzIGEgc2VyaWxhaWVkIE1hdGhNTCBzdHJpbmdcbiAqICAgICAgICAgICAgICAgIChyZXBsYWNlbWVudCBmb3IgdG9NYXRoTUwoKSBvdXRwdXQgZnJvbSB2MilcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7TW1sVmlzaXRvcn0gZnJvbSAnLi9NbWxWaXNpdG9yLmpzJztcbmltcG9ydCB7TW1sTm9kZSwgVGV4dE5vZGUsIFhNTE5vZGUsIFRFWENMQVNTLCBURVhDTEFTU05BTUVTfSBmcm9tICcuL01tbE5vZGUuanMnO1xuaW1wb3J0IHtNbWxNaX0gZnJvbSAnLi9NbWxOb2Rlcy9taS5qcyc7XG5cblxuZXhwb3J0IGNvbnN0IERBVEFNSlggPSAnZGF0YS1tangtJztcblxuZXhwb3J0IGNvbnN0IHRvRW50aXR5ID0gKGM6IHN0cmluZykgPT4gJyYjeCcgKyBjLmNvZGVQb2ludEF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpICsgJzsnO1xuXG50eXBlIFByb3BlcnR5TGlzdCA9IHtbbmFtZTogc3RyaW5nXTogc3RyaW5nfTtcblxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKipcbiAqICBJbXBsZW1lbnRzIHRoZSBTZXJpYWxpemVkTW1sVmlzaXRvciAoc3ViY2xhc3Mgb2YgTW1sVmlzaXRvcilcbiAqL1xuXG5leHBvcnQgY2xhc3MgU2VyaWFsaXplZE1tbFZpc2l0b3IgZXh0ZW5kcyBNbWxWaXNpdG9yIHtcblxuICAvKipcbiAgICogVHJhbnNsYXRpb25zIGZvciB0aGUgaW50ZXJuYWwgbWF0aHZhcmlhbnRzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHZhcmlhbnRzOiBQcm9wZXJ0eUxpc3QgPSB7XG4gICAgJy10ZXgtY2FsbGlncmFwaGljJzogICAgICAnc2NyaXB0JyxcbiAgICAnLXRleC1ib2xkLWNhbGxpZ3JhcGhpYyc6ICdib2xkLXNjcmlwdCcsXG4gICAgJy10ZXgtb2xkc3R5bGUnOiAgICAgICAgICAnbm9ybWFsJyxcbiAgICAnLXRleC1ib2xkLW9sZHN0eWxlJzogICAgICdib2xkJyxcbiAgICAnLXRleC1tYXRoaXQnOiAgICAgICAgICAgICdpdGFsaWMnXG4gIH07XG5cbiAgLyoqXG4gICAqIEF0dHJpYnV0ZXMgdG8gaW5jbHVkZSBvbiBldmVyeSBlbGVtZW50IG9mIGEgZ2l2ZW4ga2luZFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBkZWZhdWx0QXR0cmlidXRlczoge1traW5kOiBzdHJpbmddOiBQcm9wZXJ0eUxpc3R9ID0ge1xuICAgIG1hdGg6IHtcbiAgICAgIHhtbG5zOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCdcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIHRyZWUgcm9vdGVkIGF0IGEgcGFydGljdWxhciBub2RlIGludG8gYSBzZXJpYWxpemVkIE1hdGhNTCBzdHJpbmdcbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlICBUaGUgbm9kZSB0byB1c2UgYXMgdGhlIHJvb3Qgb2YgdGhlIHRyZWUgdG8gdHJhdmVyc2VcbiAgICogQHJldHVybiB7c3RyaW5nfSAgICAgICBUaGUgTWF0aE1MIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGludGVybmFsIHRyZWVcbiAgICovXG4gIHB1YmxpYyB2aXNpdFRyZWUobm9kZTogTW1sTm9kZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudmlzaXROb2RlKG5vZGUsICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1RleHROb2RlfSBub2RlICBUaGUgdGV4dCBub2RlIHRvIHZpc2l0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcGFjZSAgIFRoZSBhbW91bnQgb2YgaW5kZW50aW5nIGZvciB0aGlzIG5vZGVcbiAgICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgVGhlIChIVE1MLXF1b3RlZCkgdGV4dCBvZiB0aGUgbm9kZVxuICAgKi9cbiAgcHVibGljIHZpc2l0VGV4dE5vZGUobm9kZTogVGV4dE5vZGUsIF9zcGFjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdW90ZUhUTUwobm9kZS5nZXRUZXh0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7WE1MTm9kZX0gbm9kZSAgVGhlIFhNTCBub2RlIHRvIHZpc2l0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcGFjZSAgVGhlIGFtb3VudCBvZiBpbmRlbnRpbmcgZm9yIHRoaXMgbm9kZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgIFRoZSBzZXJpYWxpemF0aW9uIG9mIHRoZSBYTUwgbm9kZVxuICAgKi9cbiAgcHVibGljIHZpc2l0WE1MTm9kZShub2RlOiBYTUxOb2RlLCBzcGFjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc3BhY2UgKyBub2RlLmdldFNlcmlhbGl6ZWRYTUwoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWaXNpdCBhbiBpbmZlcnJlZCBtcm93LCBidXQgZG9uJ3QgYWRkIHRoZSBpbmZlcnJlZCByb3cgaXRzZWxmIChzaW5jZVxuICAgKiBpdCBpcyBzdXBwb3NlZCB0byBiZSBpbmZlcnJlZCkuXG4gICAqXG4gICAqIEBwYXJhbSB7TW1sTm9kZX0gbm9kZSAgVGhlIGluZmVycmVkIG1yb3cgdG8gdmlzaXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNwYWNlICBUaGUgYW1vdW50IG9mIGluZGVudGluZyBmb3IgdGhpcyBub2RlXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgVGhlIHNlcmlhbGl6ZWQgY29udGVudHMgb2YgdGhlIG1yb3csIHByb3Blcmx5IGluZGVudGVkXG4gICAqL1xuICBwdWJsaWMgdmlzaXRJbmZlcnJlZE1yb3dOb2RlKG5vZGU6IE1tbE5vZGUsIHNwYWNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBtbWwgPSBbXTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGROb2Rlcykge1xuICAgICAgbW1sLnB1c2godGhpcy52aXNpdE5vZGUoY2hpbGQsIHNwYWNlKSk7XG4gICAgfVxuICAgIHJldHVybiBtbWwuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogVmlzaXQgYSBUZVhBdG9tIG5vZGUuIEl0IGlzIHR1cm5lZCBpbnRvIGEgbXJvdyB3aXRoIHRoZSBhcHByb3ByaWF0ZSBUZVggY2xhc3NcbiAgICogaW5kaWNhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgIFRoZSBUZVhBdG9tIHRvIHZpc2l0LlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3BhY2UgIFRoZSBhbW91bnQgb2YgaW5kZW50aW5nIGZvciB0aGlzIG5vZGUuXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgVGhlIHNlcmlhbGl6ZWQgY29udGVudHMgb2YgdGhlIG1yb3csIHByb3Blcmx5IGluZGVudGVkLlxuICAgKi9cbiAgcHVibGljIHZpc2l0VGVYQXRvbU5vZGUobm9kZTogTW1sTm9kZSwgc3BhY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgbGV0IGNoaWxkcmVuID0gdGhpcy5jaGlsZE5vZGVNbWwobm9kZSwgc3BhY2UgKyAnICAnLCAnXFxuJyk7XG4gICAgbGV0IG1tbCA9IHNwYWNlICsgJzxtcm93JyArIHRoaXMuZ2V0QXR0cmlidXRlcyhub2RlKSArICc+JyArXG4gICAgICAoY2hpbGRyZW4ubWF0Y2goL1xcUy8pID8gJ1xcbicgKyBjaGlsZHJlbiArIHNwYWNlIDogJycpICsgJzwvbXJvdz4nO1xuICAgIHJldHVybiBtbWw7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlICAgIFRoZSBhbm5vdGF0aW9uIG5vZGUgdG8gdmlzaXRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNwYWNlICAgIFRoZSBudW1iZXIgb2Ygc3BhY2VzIHRvIHVzZSBmb3IgaW5kZW50YXRpb25cbiAgICogQHJldHVybiB7c3RyaW5nfSAgICAgICAgIFRoZSBzZXJpYWxpemllZCBhbm5vdGF0aW9uIGVsZW1lbnRcbiAgICovXG4gIHB1YmxpYyB2aXNpdEFubm90YXRpb25Ob2RlKG5vZGU6IE1tbE5vZGUsIHNwYWNlOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzcGFjZSArICc8YW5ub3RhdGlvbicgKyB0aGlzLmdldEF0dHJpYnV0ZXMobm9kZSkgKyAnPidcbiAgICAgICsgdGhpcy5jaGlsZE5vZGVNbWwobm9kZSwgJycsICcnKVxuICAgICAgKyAnPC9hbm5vdGF0aW9uPic7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGdlbmVyaWMgdmlzaXRpbmcgZnVuY3Rpb246XG4gICAqICAgTWFrZSB0aGUgc3RyaW5nIHZlcnNpb24gb2YgdGhlIG9wZW4gdGFnLCBwcm9wZXJseSBpbmRlbnRlZCwgd2l0aCBpdCBhdHRyaWJ1dGVzXG4gICAqICAgSW5jcmVhdGUgdGhlIGluZGVudGF0aW9uIGxldmVsXG4gICAqICAgQWRkIHRoZSBjaGlsZG5vZGVzXG4gICAqICAgQWRkIHRoZSBlbmQgdGFnIHdpdGggcHJvcGVyIHNwYWNpbmcgKGVtcHR5IHRhZ3MgaGF2ZSB0aGUgY2xvc2UgdGFnIGZvbGxvd2luZyBkaXJlY3RseSlcbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlICAgIFRoZSBub2RlIHRvIHZpc2l0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzcGFjZSAgICBUaGUgbnVtYmVyIG9mIHNwYWNlcyB0byB1c2UgZm9yIGluZGVudGF0aW9uXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgICBUaGUgc2VyaWFsaXphdGlvbiBvZiB0aGUgZ2l2ZW4gbm9kZVxuICAgKi9cbiAgcHVibGljIHZpc2l0RGVmYXVsdChub2RlOiBNbWxOb2RlLCBzcGFjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBsZXQga2luZCA9IG5vZGUua2luZDtcbiAgICBsZXQgW25sLCBlbmRzcGFjZV0gPSAobm9kZS5pc1Rva2VuIHx8IG5vZGUuY2hpbGROb2Rlcy5sZW5ndGggPT09IDAgPyBbJycsICcnXSA6IFsnXFxuJywgc3BhY2VdKTtcbiAgICBjb25zdCBjaGlsZHJlbiA9IHRoaXMuY2hpbGROb2RlTW1sKG5vZGUsIHNwYWNlICsgJyAgJywgbmwpO1xuICAgIHJldHVybiBzcGFjZSArICc8JyArIGtpbmQgKyB0aGlzLmdldEF0dHJpYnV0ZXMobm9kZSkgKyAnPidcbiAgICAgICAgICAgICAgICAgKyAoY2hpbGRyZW4ubWF0Y2goL1xcUy8pID8gbmwgKyBjaGlsZHJlbiArIGVuZHNwYWNlIDogJycpXG4gICAgICAgICAgICAgICAgICsgJzwvJyArIGtpbmQgKyAnPic7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlICAgIFRoZSBub2RlIHdob3NlIGNoaWxkcmVuIGFyZSB0byBiZSBhZGRlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30gc3BhY2UgICAgVGhlIHNwYWNlcyB0byB1c2UgZm9yIGluZGVudGF0aW9uXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBubCAgICAgICBUaGUgbmV3bGluZSBjaGFyYWN0ZXIgKG9yIGVtcHR5KVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9ICAgICAgICAgVGhlIHNlcmlhbGl6aWVkIGNoaWxkcmVuXG4gICAqL1xuICBwcm90ZWN0ZWQgY2hpbGROb2RlTW1sKG5vZGU6IE1tbE5vZGUsIHNwYWNlOiBzdHJpbmcsIG5sOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGxldCBtbWwgPSAnJztcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIG5vZGUuY2hpbGROb2Rlcykge1xuICAgICAgbW1sICs9IHRoaXMudmlzaXROb2RlKGNoaWxkLCBzcGFjZSkgKyBubDtcbiAgICB9XG4gICAgcmV0dXJuIG1tbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgIFRoZSBub2RlIHdob3NlIGF0dHJpYnV0ZXMgYXJlIHRvIGJlIHByb2R1Y2VkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgVGhlIGF0dHJpYnV0ZSBsaXN0IGFzIGEgc3RyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0QXR0cmlidXRlcyhub2RlOiBNbWxOb2RlKTogc3RyaW5nIHtcbiAgICBjb25zdCBhdHRyID0gW107XG4gICAgY29uc3QgZGVmYXVsdHMgPSAodGhpcy5jb25zdHJ1Y3RvciBhcyB0eXBlb2YgU2VyaWFsaXplZE1tbFZpc2l0b3IpLmRlZmF1bHRBdHRyaWJ1dGVzW25vZGUua2luZF0gfHwge307XG4gICAgY29uc3QgYXR0cmlidXRlcyA9IE9iamVjdC5hc3NpZ24oe30sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXREYXRhQXR0cmlidXRlcyhub2RlKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLmF0dHJpYnV0ZXMuZ2V0QWxsQXR0cmlidXRlcygpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgIGNvbnN0IHZhcmlhbnRzID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIFNlcmlhbGl6ZWRNbWxWaXNpdG9yKS52YXJpYW50cztcbiAgICBpZiAoYXR0cmlidXRlcy5oYXNPd25Qcm9wZXJ0eSgnbWF0aHZhcmlhbnQnKSAmJiB2YXJpYW50cy5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1dGVzLm1hdGh2YXJpYW50KSkge1xuICAgICAgYXR0cmlidXRlcy5tYXRodmFyaWFudCA9IHZhcmlhbnRzW2F0dHJpYnV0ZXMubWF0aHZhcmlhbnRdO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXMoYXR0cmlidXRlcykpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gU3RyaW5nKGF0dHJpYnV0ZXNbbmFtZV0pO1xuICAgICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgYXR0ci5wdXNoKG5hbWUgKyAnPVwiJyArIHRoaXMucXVvdGVIVE1MKHZhbHVlKSArICdcIicpO1xuICAgIH1cbiAgICByZXR1cm4gYXR0ci5sZW5ndGggPyAnICcgKyBhdHRyLmpvaW4oJyAnKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZSB0aGUgbGlzdCBvZiBkYXRhLW1qeC0qIGF0dHJpYnV0ZXNcbiAgICpcbiAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlICAgICAgICBUaGUgbm9kZSB3aG9zZSBkYXRhIGxpc3QgaXMgdG8gYmUgZ2VuZXJhdGVkXG4gICAqIEByZXR1cm4ge1Byb3BlcnR5TGlzdH0gICAgICAgVGhlIGZpbmFsIGNsYXNzIGF0dHJpYnV0ZSBsaXN0XG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0RGF0YUF0dHJpYnV0ZXMobm9kZTogTW1sTm9kZSk6IFByb3BlcnR5TGlzdCB7XG4gICAgY29uc3QgZGF0YSA9IHt9IGFzIFByb3BlcnR5TGlzdDtcbiAgICBjb25zdCB2YXJpYW50ID0gbm9kZS5hdHRyaWJ1dGVzLmdldEV4cGxpY2l0KCdtYXRodmFyaWFudCcpIGFzIHN0cmluZztcbiAgICBjb25zdCB2YXJpYW50cyA9ICh0aGlzLmNvbnN0cnVjdG9yIGFzIHR5cGVvZiBTZXJpYWxpemVkTW1sVmlzaXRvcikudmFyaWFudHM7XG4gICAgdmFyaWFudCAmJiB2YXJpYW50cy5oYXNPd25Qcm9wZXJ0eSh2YXJpYW50KSAmJiB0aGlzLnNldERhdGFBdHRyaWJ1dGUoZGF0YSwgJ3ZhcmlhbnQnLCB2YXJpYW50KTtcbiAgICBub2RlLmdldFByb3BlcnR5KCd2YXJpYW50Rm9ybScpICYmIHRoaXMuc2V0RGF0YUF0dHJpYnV0ZShkYXRhLCAnYWx0ZXJuYXRlJywgJzEnKTtcbiAgICBub2RlLmdldFByb3BlcnR5KCdwc2V1ZG9zY3JpcHQnKSAmJiB0aGlzLnNldERhdGFBdHRyaWJ1dGUoZGF0YSwgJ3BzZXVkb3NjcmlwdCcsICd0cnVlJyk7XG4gICAgbm9kZS5nZXRQcm9wZXJ0eSgnYXV0b09QJykgPT09IGZhbHNlICYmIHRoaXMuc2V0RGF0YUF0dHJpYnV0ZShkYXRhLCAnYXV0by1vcCcsICdmYWxzZScpO1xuICAgIGNvbnN0IHNjcmlwdGFsaWduID0gbm9kZS5nZXRQcm9wZXJ0eSgnc2NyaXB0YWxpZ24nKSBhcyBzdHJpbmc7XG4gICAgc2NyaXB0YWxpZ24gJiYgdGhpcy5zZXREYXRhQXR0cmlidXRlKGRhdGEsICdzY3JpcHQtYWxpZ24nLCBzY3JpcHRhbGlnbik7XG4gICAgY29uc3QgdGV4Y2xhc3MgPSBub2RlLmdldFByb3BlcnR5KCd0ZXhDbGFzcycpIGFzIG51bWJlcjtcbiAgICBpZiAodGV4Y2xhc3MgIT09IHVuZGVmaW5lZCkge1xuICAgICAgbGV0IHNldGNsYXNzID0gdHJ1ZTtcbiAgICAgIGlmICh0ZXhjbGFzcyA9PT0gVEVYQ0xBU1MuT1AgJiYgbm9kZS5pc0tpbmQoJ21pJykpIHtcbiAgICAgICAgY29uc3QgbmFtZSA9IChub2RlIGFzIE1tbE1pKS5nZXRUZXh0KCk7XG4gICAgICAgIHNldGNsYXNzID0gIShuYW1lLmxlbmd0aCA+IDEgJiYgbmFtZS5tYXRjaChNbWxNaS5vcGVyYXRvck5hbWUpKTtcbiAgICAgIH1cbiAgICAgIHNldGNsYXNzICYmIHRoaXMuc2V0RGF0YUF0dHJpYnV0ZShkYXRhLCAndGV4Y2xhc3MnLCB0ZXhjbGFzcyA8IDAgPyAnTk9ORScgOiBURVhDTEFTU05BTUVTW3RleGNsYXNzXSk7XG4gICAgfVxuICAgIG5vZGUuZ2V0UHJvcGVydHkoJ3NjcmlwdGxldmVsJykgJiYgbm9kZS5nZXRQcm9wZXJ0eSgndXNlSGVpZ2h0JykgPT09IGZhbHNlICYmXG4gICAgICB0aGlzLnNldERhdGFBdHRyaWJ1dGUoZGF0YSwgJ3NtYWxsbWF0cml4JywgJ3RydWUnKTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge1Byb3BlcnR5TGlzdH0gZGF0YSAgVGhlIGNsYXNzIGF0dHJpYnV0ZSBsaXN0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lICAgIFRoZSBuYW1lIGZvciB0aGUgZGF0YS1tangtbmFtZSBhdHRyaWJ1dGVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlICAgVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAgICovXG4gIHByb3RlY3RlZCBzZXREYXRhQXR0cmlidXRlKGRhdGE6IFByb3BlcnR5TGlzdCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgZGF0YVtEQVRBTUpYICsgbmFtZV0gPSB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiAgQ29udmVydCBIVE1MIHNwZWNpYWwgY2hhcmFjdGVycyB0byBlbnRpdGllcyAoJmFtcDssICZsdDssICZndDssICZxdW90OylcbiAgICogIENvbnZlcnQgbXVsdGktY2hhcmFjdGVyIFVuaWNvZGUgY2hhcmFjdGVycyB0byBlbnRpdGllc1xuICAgKiAgQ29udmVydCBub24tQVNDSUkgY2hhcmFjdGVycyB0byBlbnRpdGllcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZhbHVlICBUaGUgc3RyaW5nIHRvIGJlIG1hZGUgSFRNTCBlc2NhcGVkXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgVGhlIHN0cmluZyB3aXRoIGVzY2FwaW5nIHBlcmZvcm1lZFxuICAgKi9cbiAgcHJvdGVjdGVkIHF1b3RlSFRNTCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdmFsdWVcbiAgICAgIC5yZXBsYWNlKC8mL2csICcmYW1wOycpXG4gICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpLnJlcGxhY2UoLz4vZywgJyZndDsnKVxuICAgICAgLnJlcGxhY2UoL1xcXCIvZywgJyZxdW90OycpXG4gICAgICAucmVwbGFjZSgvW1xcdUQ4MDAtXFx1REJGRl0uL2csIHRvRW50aXR5KVxuICAgICAgLnJlcGxhY2UoL1tcXHUwMDgwLVxcdUQ3RkZcXHVFMDAwLVxcdUZGRkZdL2csIHRvRW50aXR5KTtcbiAgfVxuXG59XG4iLCAiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqXG4gKiAgQ29weXJpZ2h0IChjKSAyMDE5LTIwMjIgVGhlIE1hdGhKYXggQ29uc29ydGl1bVxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgIE1peGluIHRoYXQgYWRkcyBoaWRkZW4gTWF0aE1MIHRvIHRoZSBvdXRwdXRcbiAqXG4gKiBAYXV0aG9yIGRwdmNAbWF0aGpheC5vcmcgKERhdmlkZSBDZXJ2b25lKVxuICovXG5cbmltcG9ydCB7SGFuZGxlcn0gZnJvbSAnLi4vY29yZS9IYW5kbGVyLmpzJztcbmltcG9ydCB7TWF0aERvY3VtZW50LCBBYnN0cmFjdE1hdGhEb2N1bWVudCwgTWF0aERvY3VtZW50Q29uc3RydWN0b3J9IGZyb20gJy4uL2NvcmUvTWF0aERvY3VtZW50LmpzJztcbmltcG9ydCB7TWF0aEl0ZW0sIEFic3RyYWN0TWF0aEl0ZW0sIFNUQVRFLCBuZXdTdGF0ZX0gZnJvbSAnLi4vY29yZS9NYXRoSXRlbS5qcyc7XG5pbXBvcnQge01tbE5vZGV9IGZyb20gJy4uL2NvcmUvTW1sVHJlZS9NbWxOb2RlLmpzJztcbmltcG9ydCB7U2VyaWFsaXplZE1tbFZpc2l0b3J9IGZyb20gJy4uL2NvcmUvTW1sVHJlZS9TZXJpYWxpemVkTW1sVmlzaXRvci5qcyc7XG5pbXBvcnQge09wdGlvbkxpc3QsIGV4cGFuZGFibGV9IGZyb20gJy4uL3V0aWwvT3B0aW9ucy5qcyc7XG5pbXBvcnQge1N0eWxlTGlzdH0gZnJvbSAnLi4vdXRpbC9TdHlsZUxpc3QuanMnO1xuXG4vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ki9cblxuZXhwb3J0IGNsYXNzIExpbWl0ZWRNbWxWaXNpdG9yIGV4dGVuZHMgU2VyaWFsaXplZE1tbFZpc2l0b3Ige1xuXG4gIC8qKlxuICAgKiBAb3ZlcnJpZGVcbiAgICovXG4gIHByb3RlY3RlZCBnZXRBdHRyaWJ1dGVzKG5vZGU6IE1tbE5vZGUpOiBzdHJpbmcge1xuICAgIC8qKlxuICAgICAqIFJlbW92ZSBpZCBmcm9tIGF0dHJpYnV0ZSBvdXRwdXRcbiAgICAgKi9cbiAgICByZXR1cm4gc3VwZXIuZ2V0QXR0cmlidXRlcyhub2RlKS5yZXBsYWNlKC8gP2lkPVwiLio/XCIvLCAnJyk7XG4gIH1cblxufVxuXG4vKipcbiAqIEdlbmVyaWMgY29uc3RydWN0b3IgZm9yIE1peGluc1xuICovXG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvcjxUPiA9IG5ldyguLi5hcmdzOiBhbnlbXSkgPT4gVDtcblxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cbi8qKlxuICogQWRkIFNUQVRFIHZhbHVlIGZvciBoYXZpbmcgYXNzaXN0aXZlIE1hdGhNTCAoYWZ0ZXIgVFlQRVNFVFRJTkcpXG4gKi9cbm5ld1N0YXRlKCdBU1NJU1RJVkVNTUwnLCAxNTMpO1xuXG4vKipcbiAqIFRoZSBmdW5jdGlvbnMgYWRkZWQgdG8gTWF0aEl0ZW0gZm9yIGFzc2lzdGl2ZSBNYXRoTUxcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzaXN0aXZlTW1sTWF0aEl0ZW08TiwgVCwgRD4gZXh0ZW5kcyBNYXRoSXRlbTxOLCBULCBEPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgIFRoZSBkb2N1bWVudCB3aGVyZSBhc3Npc3RpdmUgTWF0aE1MIGlzIGJlaW5nIGFkZGVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZm9yY2UgICAgICAgICAgVHJ1ZSB0byBmb3JjZSBhc3Npc3RpdmUgTWF0aE1MIGV2ZW4gaWYgZW5hYmxlQXNzaXN0aXZlTW1sIGlzIGZhbHNlXG4gICAqL1xuICBhc3Npc3RpdmVNbWwoZG9jdW1lbnQ6IE1hdGhEb2N1bWVudDxOLCBULCBEPiwgZm9yY2U/OiBib29sZWFuKTogdm9pZDtcbn1cblxuLyoqXG4gKiBUaGUgbWl4aW4gZm9yIGFkZGluZyBhc3Npc3RpdmUgTWF0aE1MIHRvIE1hdGhJdGVtc1xuICpcbiAqIEBwYXJhbSB7Qn0gQmFzZU1hdGhJdGVtICAgICAgVGhlIE1hdGhJdGVtIGNsYXNzIHRvIGJlIGV4dGVuZGVkXG4gKiBAcmV0dXJuIHtBc3Npc3RpdmVNYXRoSXRlbX0gIFRoZSBhdWdtZW50ZWQgTWF0aEl0ZW0gY2xhc3NcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKiBAdGVtcGxhdGUgQiAgVGhlIE1hdGhJdGVtIGNsYXNzIHRvIGV4dGVuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gQXNzaXN0aXZlTW1sTWF0aEl0ZW1NaXhpbjxOLCBULCBELCBCIGV4dGVuZHMgQ29uc3RydWN0b3I8QWJzdHJhY3RNYXRoSXRlbTxOLCBULCBEPj4+KFxuICBCYXNlTWF0aEl0ZW06IEJcbik6IENvbnN0cnVjdG9yPEFzc2lzdGl2ZU1tbE1hdGhJdGVtPE4sIFQsIEQ+PiAmIEIge1xuXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIEJhc2VNYXRoSXRlbSB7XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge01hdGhEb2N1bWVudH0gZG9jdW1lbnQgICBUaGUgTWF0aERvY3VtZW50IGZvciB0aGUgTWF0aEl0ZW1cbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGZvcmNlICAgICAgICAgICBUcnVlIHRvIGZvcmNlIGFzc2lzdGl2ZSBNYXRoTUwgZXZlbmlmIGVuYWJsZUFzc2lzdGl2ZU1tbCBpcyBmYWxzZVxuICAgICAqL1xuICAgIHB1YmxpYyBhc3Npc3RpdmVNbWwoZG9jdW1lbnQ6IEFzc2lzdGl2ZU1tbE1hdGhEb2N1bWVudDxOLCBULCBEPiwgZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSkge1xuICAgICAgaWYgKHRoaXMuc3RhdGUoKSA+PSBTVEFURS5BU1NJU1RJVkVNTUwpIHJldHVybjtcbiAgICAgIGlmICghdGhpcy5pc0VzY2FwZWQgJiYgKGRvY3VtZW50Lm9wdGlvbnMuZW5hYmxlQXNzaXN0aXZlTW1sIHx8IGZvcmNlKSkge1xuICAgICAgICBjb25zdCBhZGFwdG9yID0gZG9jdW1lbnQuYWRhcHRvcjtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gR2V0IHRoZSBzZXJpYWxpemVkIE1hdGhNTFxuICAgICAgICAvL1xuICAgICAgICBjb25zdCBtbWwgPSBkb2N1bWVudC50b01NTCh0aGlzLnJvb3QpLnJlcGxhY2UoL1xcbiAqL2csICcnKS5yZXBsYWNlKC88IS0tLio/LS0+L2csICcnKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gUGFyc2UgaXMgYXMgSFRNTCBhbmQgcmV0cmlldmUgdGhlIDxtYXRoPiBlbGVtZW50XG4gICAgICAgIC8vXG4gICAgICAgIGNvbnN0IG1tbE5vZGVzID0gYWRhcHRvci5maXJzdENoaWxkKGFkYXB0b3IuYm9keShhZGFwdG9yLnBhcnNlKG1tbCwgJ3RleHQvaHRtbCcpKSk7XG4gICAgICAgIC8vXG4gICAgICAgIC8vIENyZWF0ZSBhIGNvbnRhaW5lciBmb3IgdGhlIGhpZGRlbiBNYXRoTUxcbiAgICAgICAgLy9cbiAgICAgICAgY29uc3Qgbm9kZSA9IGFkYXB0b3Iubm9kZSgnbWp4LWFzc2lzdGl2ZS1tbWwnLCB7XG4gICAgICAgICAgdW5zZWxlY3RhYmxlOiAnb24nLCBkaXNwbGF5OiAodGhpcy5kaXNwbGF5ID8gJ2Jsb2NrJyA6ICdpbmxpbmUnKVxuICAgICAgICB9LCBbbW1sTm9kZXNdKTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gSGlkZSB0aGUgdHlwZXNldCBtYXRoIGZyb20gYXNzaXN0aXZlIHRlY2hub2xvZ3kgYW5kIGFwcGVuZCB0aGUgTWF0aE1MIHRoYXQgaXMgdmlzdWFsbHlcbiAgICAgICAgLy8gICBoaWRkZW4gZnJvbSBvdGhlciB1c2Vyc1xuICAgICAgICAvL1xuICAgICAgICBhZGFwdG9yLnNldEF0dHJpYnV0ZShhZGFwdG9yLmZpcnN0Q2hpbGQodGhpcy50eXBlc2V0Um9vdCkgYXMgTiwgJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcbiAgICAgICAgYWRhcHRvci5zZXRTdHlsZSh0aGlzLnR5cGVzZXRSb290LCAncG9zaXRpb24nLCAncmVsYXRpdmUnKTtcbiAgICAgICAgYWRhcHRvci5hcHBlbmQodGhpcy50eXBlc2V0Um9vdCwgbm9kZSk7XG4gICAgICB9XG4gICAgICB0aGlzLnN0YXRlKFNUQVRFLkFTU0lTVElWRU1NTCk7XG4gICAgfVxuXG4gIH07XG5cbn1cblxuLyo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSovXG5cbi8qKlxuICogVGhlIGZ1bmN0aW9ucyBhZGRlZCB0byBNYXRoRG9jdW1lbnQgZm9yIGFzc2lzdGl2ZSBNYXRoTUxcbiAqXG4gKiBAdGVtcGxhdGUgTiAgVGhlIEhUTUxFbGVtZW50IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBUICBUaGUgVGV4dCBub2RlIGNsYXNzXG4gKiBAdGVtcGxhdGUgRCAgVGhlIERvY3VtZW50IGNsYXNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXNzaXN0aXZlTW1sTWF0aERvY3VtZW50PE4sIFQsIEQ+IGV4dGVuZHMgQWJzdHJhY3RNYXRoRG9jdW1lbnQ8TiwgVCwgRD4ge1xuXG4gIC8qKlxuICAgKiBAcGFyYW0ge01tbE5vZGV9IG5vZGUgICBUaGUgbm9kZSB0byBiZSBzZXJpYWxpemVzXG4gICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgIFRoZSBzZXJpYWxpemF0aW9uIG9mIHRoZSBub2RlXG4gICAqL1xuICB0b01NTDogKG5vZGU6IE1tbE5vZGUpID0+IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIGFzc2lzdGl2ZSBNYXRoTUwgdG8gdGhlIE1hdGhJdGVtcyBpbiB0aGUgTWF0aERvY3VtZW50XG4gICAqXG4gICAqIEByZXR1cm4ge0Fzc2lzdGl2ZU1tbE1hdGhEb2N1bWVudH0gICBUaGUgTWF0aERvY3VtZW50IChzbyBjYWxscyBjYW4gYmUgY2hhaW5lZClcbiAgICovXG4gIGFzc2lzdGl2ZU1tbCgpOiBBc3Npc3RpdmVNbWxNYXRoRG9jdW1lbnQ8TiwgVCwgRD47XG5cbn1cblxuLyoqXG4gKiBUaGUgbWl4aW4gZm9yIGFkZGluZyBhc3Npc3RpdmUgTWF0aE1MIHRvIE1hdGhEb2N1bWVudHNcbiAqXG4gKiBAcGFyYW0ge0J9IEJhc2VEb2N1bWVudCAgICAgICAgIFRoZSBNYXRoRG9jdW1lbnQgY2xhc3MgdG8gYmUgZXh0ZW5kZWRcbiAqIEByZXR1cm4ge0Fzc2lzdGl2ZU1tbE1hdGhEb2N1bWVudH0gIFRoZSBBc3Npc3RpdmUgTWF0aE1MIE1hdGhEb2N1bWVudCBjbGFzc1xuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBCICBUaGUgTWF0aERvY3VtZW50IGNsYXNzIHRvIGV4dGVuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gQXNzaXN0aXZlTW1sTWF0aERvY3VtZW50TWl4aW48TiwgVCwgRCxcbkIgZXh0ZW5kcyBNYXRoRG9jdW1lbnRDb25zdHJ1Y3RvcjxBYnN0cmFjdE1hdGhEb2N1bWVudDxOLCBULCBEPj4+KFxuICBCYXNlRG9jdW1lbnQ6IEJcbik6IE1hdGhEb2N1bWVudENvbnN0cnVjdG9yPEFzc2lzdGl2ZU1tbE1hdGhEb2N1bWVudDxOLCBULCBEPj4gJiBCIHtcblxuICByZXR1cm4gY2xhc3MgQmFzZUNsYXNzIGV4dGVuZHMgQmFzZURvY3VtZW50IHtcblxuICAgIC8qKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqL1xuICAgIHB1YmxpYyBzdGF0aWMgT1BUSU9OUzogT3B0aW9uTGlzdCA9IHtcbiAgICAgIC4uLkJhc2VEb2N1bWVudC5PUFRJT05TLFxuICAgICAgZW5hYmxlQXNzaXN0aXZlTW1sOiB0cnVlLFxuICAgICAgcmVuZGVyQWN0aW9uczogZXhwYW5kYWJsZSh7XG4gICAgICAgIC4uLkJhc2VEb2N1bWVudC5PUFRJT05TLnJlbmRlckFjdGlvbnMsXG4gICAgICAgIGFzc2lzdGl2ZU1tbDogW1NUQVRFLkFTU0lTVElWRU1NTF1cbiAgICAgIH0pXG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIHN0eWxlcyBuZWVkZWQgZm9yIHRoZSBoaWRkZW4gTWF0aE1MXG4gICAgICovXG4gICAgcHVibGljIHN0YXRpYyBhc3Npc3RpdmVTdHlsZXM6IFN0eWxlTGlzdCA9IHtcbiAgICAgICdtangtYXNzaXN0aXZlLW1tbCc6IHtcbiAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZSAhaW1wb3J0YW50JyxcbiAgICAgICAgdG9wOiAnMHB4JywgbGVmdDogJzBweCcsXG4gICAgICAgIGNsaXA6ICdyZWN0KDFweCwgMXB4LCAxcHgsIDFweCknLFxuICAgICAgICBwYWRkaW5nOiAnMXB4IDBweCAwcHggMHB4ICFpbXBvcnRhbnQnLFxuICAgICAgICBib3JkZXI6ICcwcHggIWltcG9ydGFudCcsXG4gICAgICAgIGRpc3BsYXk6ICdibG9jayAhaW1wb3J0YW50JyxcbiAgICAgICAgd2lkdGg6ICdhdXRvICFpbXBvcnRhbnQnLFxuICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbiAhaW1wb3J0YW50JyxcbiAgICAgICAgLypcbiAgICAgICAgICogIERvbid0IGFsbG93IHRoZSBhc3Npc3RpdmUgTWF0aE1MIHRvIGJlY29tZSBwYXJ0IG9mIHRoZSBzZWxlY3Rpb25cbiAgICAgICAgICovXG4gICAgICAgICctd2Via2l0LXRvdWNoLWNhbGxvdXQnOiAnbm9uZScsXG4gICAgICAgICctd2Via2l0LXVzZXItc2VsZWN0JzogJ25vbmUnLFxuICAgICAgICAnLWtodG1sLXVzZXItc2VsZWN0JzogJ25vbmUnLFxuICAgICAgICAnLW1vei11c2VyLXNlbGVjdCc6ICdub25lJyxcbiAgICAgICAgJy1tcy11c2VyLXNlbGVjdCc6ICdub25lJyxcbiAgICAgICAgJ3VzZXItc2VsZWN0JzogJ25vbmUnXG4gICAgICB9LFxuICAgICAgJ21qeC1hc3Npc3RpdmUtbW1sW2Rpc3BsYXk9XCJibG9ja1wiXSc6IHtcbiAgICAgICAgd2lkdGg6ICcxMDAlICFpbXBvcnRhbnQnXG4gICAgICB9XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIFZpc2l0b3IgdXNlZCBmb3Igc2VyaWFsaXppbmcgaW50ZXJuYWwgTWF0aE1MIG5vZGVzXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHZpc2l0b3I6IExpbWl0ZWRNbWxWaXNpdG9yO1xuXG4gICAgLyoqXG4gICAgICogQXVnbWVudCB0aGUgTWF0aEl0ZW0gY2xhc3MgdXNlZCBmb3IgdGhpcyBNYXRoRG9jdW1lbnQsIGFuZCBjcmVhdGUgdGhlIHNlcmlhbGl6YXRpb24gdmlzaXRvci5cbiAgICAgKlxuICAgICAqIEBvdmVycmlkZVxuICAgICAqIEBjb25zdHJ1Y3RvclxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgICBzdXBlciguLi5hcmdzKTtcbiAgICAgIGNvbnN0IENMQVNTID0gKHRoaXMuY29uc3RydWN0b3IgYXMgdHlwZW9mIEJhc2VDbGFzcyk7XG4gICAgICBjb25zdCBQcm9jZXNzQml0cyA9IENMQVNTLlByb2Nlc3NCaXRzO1xuICAgICAgaWYgKCFQcm9jZXNzQml0cy5oYXMoJ2Fzc2lzdGl2ZS1tbWwnKSkge1xuICAgICAgICBQcm9jZXNzQml0cy5hbGxvY2F0ZSgnYXNzaXN0aXZlLW1tbCcpO1xuICAgICAgfVxuICAgICAgdGhpcy52aXNpdG9yID0gbmV3IExpbWl0ZWRNbWxWaXNpdG9yKHRoaXMubW1sRmFjdG9yeSk7XG4gICAgICB0aGlzLm9wdGlvbnMuTWF0aEl0ZW0gPVxuICAgICAgICBBc3Npc3RpdmVNbWxNYXRoSXRlbU1peGluPE4sIFQsIEQsIENvbnN0cnVjdG9yPEFic3RyYWN0TWF0aEl0ZW08TiwgVCwgRD4+PihcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuTWF0aEl0ZW1cbiAgICAgICAgKTtcbiAgICAgIGlmICgnYWRkU3R5bGVzJyBpbiB0aGlzKSB7XG4gICAgICAgICh0aGlzIGFzIGFueSkuYWRkU3R5bGVzKENMQVNTLmFzc2lzdGl2ZVN0eWxlcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIHtNbWxOb2RlfSBub2RlICAgVGhlIG5vZGUgdG8gYmUgc2VyaWFsaXplc1xuICAgICAqIEByZXR1cm4ge3N0cmluZ30gICAgICAgIFRoZSBzZXJpYWxpemF0aW9uIG9mIHRoZSBub2RlXG4gICAgICovXG4gICAgcHVibGljIHRvTU1MKG5vZGU6IE1tbE5vZGUpOiBzdHJpbmcge1xuICAgICAgcmV0dXJuIHRoaXMudmlzaXRvci52aXNpdFRyZWUobm9kZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkIGFzc2lzdGl2ZSBNYXRoTUwgdG8gdGhlIE1hdGhJdGVtcyBpbiB0aGlzIE1hdGhEb2N1bWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhc3Npc3RpdmVNbWwoKSB7XG4gICAgICBpZiAoIXRoaXMucHJvY2Vzc2VkLmlzU2V0KCdhc3Npc3RpdmUtbW1sJykpIHtcbiAgICAgICAgZm9yIChjb25zdCBtYXRoIG9mIHRoaXMubWF0aCkge1xuICAgICAgICAgIChtYXRoIGFzIEFzc2lzdGl2ZU1tbE1hdGhJdGVtPE4sIFQsIEQ+KS5hc3Npc3RpdmVNbWwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wcm9jZXNzZWQuc2V0KCdhc3Npc3RpdmUtbW1sJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAb3ZlcnJpZGVcbiAgICAgKi9cbiAgICBwdWJsaWMgc3RhdGUoc3RhdGU6IG51bWJlciwgcmVzdG9yZTogYm9vbGVhbiA9IGZhbHNlKSB7XG4gICAgICBzdXBlci5zdGF0ZShzdGF0ZSwgcmVzdG9yZSk7XG4gICAgICBpZiAoc3RhdGUgPCBTVEFURS5BU1NJU1RJVkVNTUwpIHtcbiAgICAgICAgdGhpcy5wcm9jZXNzZWQuY2xlYXIoJ2Fzc2lzdGl2ZS1tbWwnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICB9O1xuXG59XG5cbi8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0qL1xuXG4vKipcbiAqIEFkZCBhc3NpdGl2ZSBNYXRoTUwgc3VwcG9ydCBhIEhhbmRsZXIgaW5zdGFuY2VcbiAqXG4gKiBAcGFyYW0ge0hhbmRsZXJ9IGhhbmRsZXIgICBUaGUgSGFuZGxlciBpbnN0YW5jZSB0byBlbmhhbmNlXG4gKiBAcmV0dXJuIHtIYW5kbGVyfSAgICAgICAgICBUaGUgaGFuZGxlciB0aGF0IHdhcyBtb2RpZmllZCAoZm9yIHB1cnBvc2VzIG9mIGNoYWluZ2luZyBleHRlbnNpb25zKVxuICpcbiAqIEB0ZW1wbGF0ZSBOICBUaGUgSFRNTEVsZW1lbnQgbm9kZSBjbGFzc1xuICogQHRlbXBsYXRlIFQgIFRoZSBUZXh0IG5vZGUgY2xhc3NcbiAqIEB0ZW1wbGF0ZSBEICBUaGUgRG9jdW1lbnQgY2xhc3NcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEFzc2lzdGl2ZU1tbEhhbmRsZXI8TiwgVCwgRD4oaGFuZGxlcjogSGFuZGxlcjxOLCBULCBEPik6IEhhbmRsZXI8TiwgVCwgRD4ge1xuICBoYW5kbGVyLmRvY3VtZW50Q2xhc3MgPVxuICAgIEFzc2lzdGl2ZU1tbE1hdGhEb2N1bWVudE1peGluPE4sIFQsIEQsIE1hdGhEb2N1bWVudENvbnN0cnVjdG9yPEFic3RyYWN0TWF0aERvY3VtZW50PE4sIFQsIEQ+Pj4oXG4gICAgICBoYW5kbGVyLmRvY3VtZW50Q2xhc3NcbiAgICApO1xuICByZXR1cm4gaGFuZGxlcjtcbn1cbiIsICIvKiogVHlwZXMgb2YgZWxlbWVudHMgZm91bmQgaW4gaHRtbHBhcnNlcjIncyBET00gKi9cbmV4cG9ydCB2YXIgRWxlbWVudFR5cGU7XG4oZnVuY3Rpb24gKEVsZW1lbnRUeXBlKSB7XG4gICAgLyoqIFR5cGUgZm9yIHRoZSByb290IGVsZW1lbnQgb2YgYSBkb2N1bWVudCAqL1xuICAgIEVsZW1lbnRUeXBlW1wiUm9vdFwiXSA9IFwicm9vdFwiO1xuICAgIC8qKiBUeXBlIGZvciBUZXh0ICovXG4gICAgRWxlbWVudFR5cGVbXCJUZXh0XCJdID0gXCJ0ZXh0XCI7XG4gICAgLyoqIFR5cGUgZm9yIDw/IC4uLiA/PiAqL1xuICAgIEVsZW1lbnRUeXBlW1wiRGlyZWN0aXZlXCJdID0gXCJkaXJlY3RpdmVcIjtcbiAgICAvKiogVHlwZSBmb3IgPCEtLSAuLi4gLS0+ICovXG4gICAgRWxlbWVudFR5cGVbXCJDb21tZW50XCJdID0gXCJjb21tZW50XCI7XG4gICAgLyoqIFR5cGUgZm9yIDxzY3JpcHQ+IHRhZ3MgKi9cbiAgICBFbGVtZW50VHlwZVtcIlNjcmlwdFwiXSA9IFwic2NyaXB0XCI7XG4gICAgLyoqIFR5cGUgZm9yIDxzdHlsZT4gdGFncyAqL1xuICAgIEVsZW1lbnRUeXBlW1wiU3R5bGVcIl0gPSBcInN0eWxlXCI7XG4gICAgLyoqIFR5cGUgZm9yIEFueSB0YWcgKi9cbiAgICBFbGVtZW50VHlwZVtcIlRhZ1wiXSA9IFwidGFnXCI7XG4gICAgLyoqIFR5cGUgZm9yIDwhW0NEQVRBWyAuLi4gXV0+ICovXG4gICAgRWxlbWVudFR5cGVbXCJDREFUQVwiXSA9IFwiY2RhdGFcIjtcbiAgICAvKiogVHlwZSBmb3IgPCFkb2N0eXBlIC4uLj4gKi9cbiAgICBFbGVtZW50VHlwZVtcIkRvY3R5cGVcIl0gPSBcImRvY3R5cGVcIjtcbn0pKEVsZW1lbnRUeXBlIHx8IChFbGVtZW50VHlwZSA9IHt9KSk7XG4vKipcbiAqIFRlc3RzIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBhIHRhZyBvciBub3QuXG4gKlxuICogQHBhcmFtIGVsZW0gRWxlbWVudCB0byB0ZXN0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1RhZyhlbGVtKSB7XG4gICAgcmV0dXJuIChlbGVtLnR5cGUgPT09IEVsZW1lbnRUeXBlLlRhZyB8fFxuICAgICAgICBlbGVtLnR5cGUgPT09IEVsZW1lbnRUeXBlLlNjcmlwdCB8fFxuICAgICAgICBlbGVtLnR5cGUgPT09IEVsZW1lbnRUeXBlLlN0eWxlKTtcbn1cbi8vIEV4cG9ydHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG4vKiogVHlwZSBmb3IgdGhlIHJvb3QgZWxlbWVudCBvZiBhIGRvY3VtZW50ICovXG5leHBvcnQgY29uc3QgUm9vdCA9IEVsZW1lbnRUeXBlLlJvb3Q7XG4vKiogVHlwZSBmb3IgVGV4dCAqL1xuZXhwb3J0IGNvbnN0IFRleHQgPSBFbGVtZW50VHlwZS5UZXh0O1xuLyoqIFR5cGUgZm9yIDw/IC4uLiA/PiAqL1xuZXhwb3J0IGNvbnN0IERpcmVjdGl2ZSA9IEVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbi8qKiBUeXBlIGZvciA8IS0tIC4uLiAtLT4gKi9cbmV4cG9ydCBjb25zdCBDb21tZW50ID0gRWxlbWVudFR5cGUuQ29tbWVudDtcbi8qKiBUeXBlIGZvciA8c2NyaXB0PiB0YWdzICovXG5leHBvcnQgY29uc3QgU2NyaXB0ID0gRWxlbWVudFR5cGUuU2NyaXB0O1xuLyoqIFR5cGUgZm9yIDxzdHlsZT4gdGFncyAqL1xuZXhwb3J0IGNvbnN0IFN0eWxlID0gRWxlbWVudFR5cGUuU3R5bGU7XG4vKiogVHlwZSBmb3IgQW55IHRhZyAqL1xuZXhwb3J0IGNvbnN0IFRhZyA9IEVsZW1lbnRUeXBlLlRhZztcbi8qKiBUeXBlIGZvciA8IVtDREFUQVsgLi4uIF1dPiAqL1xuZXhwb3J0IGNvbnN0IENEQVRBID0gRWxlbWVudFR5cGUuQ0RBVEE7XG4vKiogVHlwZSBmb3IgPCFkb2N0eXBlIC4uLj4gKi9cbmV4cG9ydCBjb25zdCBEb2N0eXBlID0gRWxlbWVudFR5cGUuRG9jdHlwZTtcbiIsICJpbXBvcnQgeyBFbGVtZW50VHlwZSwgaXNUYWcgYXMgaXNUYWdSYXcgfSBmcm9tIFwiZG9tZWxlbWVudHR5cGVcIjtcbi8qKlxuICogVGhpcyBvYmplY3Qgd2lsbCBiZSB1c2VkIGFzIHRoZSBwcm90b3R5cGUgZm9yIE5vZGVzIHdoZW4gY3JlYXRpbmcgYVxuICogRE9NLUxldmVsLTEtY29tcGxpYW50IHN0cnVjdHVyZS5cbiAqL1xuZXhwb3J0IGNsYXNzIE5vZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvKiogUGFyZW50IG9mIHRoZSBub2RlICovXG4gICAgICAgIHRoaXMucGFyZW50ID0gbnVsbDtcbiAgICAgICAgLyoqIFByZXZpb3VzIHNpYmxpbmcgKi9cbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICAgICAgLyoqIE5leHQgc2libGluZyAqL1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICAvKiogVGhlIHN0YXJ0IGluZGV4IG9mIHRoZSBub2RlLiBSZXF1aXJlcyBgd2l0aFN0YXJ0SW5kaWNlc2Agb24gdGhlIGhhbmRsZXIgdG8gYmUgYHRydWUuICovXG4gICAgICAgIHRoaXMuc3RhcnRJbmRleCA9IG51bGw7XG4gICAgICAgIC8qKiBUaGUgZW5kIGluZGV4IG9mIHRoZSBub2RlLiBSZXF1aXJlcyBgd2l0aEVuZEluZGljZXNgIG9uIHRoZSBoYW5kbGVyIHRvIGJlIGB0cnVlLiAqL1xuICAgICAgICB0aGlzLmVuZEluZGV4ID0gbnVsbDtcbiAgICB9XG4gICAgLy8gUmVhZC13cml0ZSBhbGlhc2VzIGZvciBwcm9wZXJ0aWVzXG4gICAgLyoqXG4gICAgICogU2FtZSBhcyB7QGxpbmsgcGFyZW50fS5cbiAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgKi9cbiAgICBnZXQgcGFyZW50Tm9kZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyZW50O1xuICAgIH1cbiAgICBzZXQgcGFyZW50Tm9kZShwYXJlbnQpIHtcbiAgICAgICAgdGhpcy5wYXJlbnQgPSBwYXJlbnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNhbWUgYXMge0BsaW5rIHByZXZ9LlxuICAgICAqIFtET00gc3BlY10oaHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnKS1jb21wYXRpYmxlIGFsaWFzLlxuICAgICAqL1xuICAgIGdldCBwcmV2aW91c1NpYmxpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXY7XG4gICAgfVxuICAgIHNldCBwcmV2aW91c1NpYmxpbmcocHJldikge1xuICAgICAgICB0aGlzLnByZXYgPSBwcmV2O1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTYW1lIGFzIHtAbGluayBuZXh0fS5cbiAgICAgKiBbRE9NIHNwZWNdKGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZyktY29tcGF0aWJsZSBhbGlhcy5cbiAgICAgKi9cbiAgICBnZXQgbmV4dFNpYmxpbmcoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5leHQ7XG4gICAgfVxuICAgIHNldCBuZXh0U2libGluZyhuZXh0KSB7XG4gICAgICAgIHRoaXMubmV4dCA9IG5leHQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENsb25lIHRoaXMgbm9kZSwgYW5kIG9wdGlvbmFsbHkgaXRzIGNoaWxkcmVuLlxuICAgICAqXG4gICAgICogQHBhcmFtIHJlY3Vyc2l2ZSBDbG9uZSBjaGlsZCBub2RlcyBhcyB3ZWxsLlxuICAgICAqIEByZXR1cm5zIEEgY2xvbmUgb2YgdGhlIG5vZGUuXG4gICAgICovXG4gICAgY2xvbmVOb2RlKHJlY3Vyc2l2ZSA9IGZhbHNlKSB7XG4gICAgICAgIHJldHVybiBjbG9uZU5vZGUodGhpcywgcmVjdXJzaXZlKTtcbiAgICB9XG59XG4vKipcbiAqIEEgbm9kZSB0aGF0IGNvbnRhaW5zIHNvbWUgZGF0YS5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFOb2RlIGV4dGVuZHMgTm9kZSB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGRhdGEgVGhlIGNvbnRlbnQgb2YgdGhlIGRhdGEgbm9kZVxuICAgICAqL1xuICAgIGNvbnN0cnVjdG9yKGRhdGEpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2FtZSBhcyB7QGxpbmsgZGF0YX0uXG4gICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICovXG4gICAgZ2V0IG5vZGVWYWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGF0YTtcbiAgICB9XG4gICAgc2V0IG5vZGVWYWx1ZShkYXRhKSB7XG4gICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gICAgfVxufVxuLyoqXG4gKiBUZXh0IHdpdGhpbiB0aGUgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBUZXh0IGV4dGVuZHMgRGF0YU5vZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBFbGVtZW50VHlwZS5UZXh0O1xuICAgIH1cbiAgICBnZXQgbm9kZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiAzO1xuICAgIH1cbn1cbi8qKlxuICogQ29tbWVudHMgd2l0aGluIHRoZSBkb2N1bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1lbnQgZXh0ZW5kcyBEYXRhTm9kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IEVsZW1lbnRUeXBlLkNvbW1lbnQ7XG4gICAgfVxuICAgIGdldCBub2RlVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIDg7XG4gICAgfVxufVxuLyoqXG4gKiBQcm9jZXNzaW5nIGluc3RydWN0aW9ucywgaW5jbHVkaW5nIGRvYyB0eXBlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBleHRlbmRzIERhdGFOb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBkYXRhKSB7XG4gICAgICAgIHN1cGVyKGRhdGEpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLnR5cGUgPSBFbGVtZW50VHlwZS5EaXJlY3RpdmU7XG4gICAgfVxuICAgIGdldCBub2RlVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxufVxuLyoqXG4gKiBBIGBOb2RlYCB0aGF0IGNhbiBoYXZlIGNoaWxkcmVuLlxuICovXG5leHBvcnQgY2xhc3MgTm9kZVdpdGhDaGlsZHJlbiBleHRlbmRzIE5vZGUge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSBjaGlsZHJlbiBDaGlsZHJlbiBvZiB0aGUgbm9kZS4gT25seSBjZXJ0YWluIG5vZGUgdHlwZXMgY2FuIGhhdmUgY2hpbGRyZW4uXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY2hpbGRyZW4pIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIH1cbiAgICAvLyBBbGlhc2VzXG4gICAgLyoqIEZpcnN0IGNoaWxkIG9mIHRoZSBub2RlLiAqL1xuICAgIGdldCBmaXJzdENoaWxkKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHJldHVybiAoX2EgPSB0aGlzLmNoaWxkcmVuWzBdKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBudWxsO1xuICAgIH1cbiAgICAvKiogTGFzdCBjaGlsZCBvZiB0aGUgbm9kZS4gKi9cbiAgICBnZXQgbGFzdENoaWxkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGggPiAwXG4gICAgICAgICAgICA/IHRoaXMuY2hpbGRyZW5bdGhpcy5jaGlsZHJlbi5sZW5ndGggLSAxXVxuICAgICAgICAgICAgOiBudWxsO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTYW1lIGFzIHtAbGluayBjaGlsZHJlbn0uXG4gICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICovXG4gICAgZ2V0IGNoaWxkTm9kZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuO1xuICAgIH1cbiAgICBzZXQgY2hpbGROb2RlcyhjaGlsZHJlbikge1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIENEQVRBIGV4dGVuZHMgTm9kZVdpdGhDaGlsZHJlbiB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMudHlwZSA9IEVsZW1lbnRUeXBlLkNEQVRBO1xuICAgIH1cbiAgICBnZXQgbm9kZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiA0O1xuICAgIH1cbn1cbi8qKlxuICogVGhlIHJvb3Qgbm9kZSBvZiB0aGUgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBjbGFzcyBEb2N1bWVudCBleHRlbmRzIE5vZGVXaXRoQ2hpbGRyZW4ge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLnR5cGUgPSBFbGVtZW50VHlwZS5Sb290O1xuICAgIH1cbiAgICBnZXQgbm9kZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiA5O1xuICAgIH1cbn1cbi8qKlxuICogQW4gZWxlbWVudCB3aXRoaW4gdGhlIERPTS5cbiAqL1xuZXhwb3J0IGNsYXNzIEVsZW1lbnQgZXh0ZW5kcyBOb2RlV2l0aENoaWxkcmVuIHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSB0YWcsIGVnLiBgZGl2YCwgYHNwYW5gLlxuICAgICAqIEBwYXJhbSBhdHRyaWJzIE9iamVjdCBtYXBwaW5nIGF0dHJpYnV0ZSBuYW1lcyB0byBhdHRyaWJ1dGUgdmFsdWVzLlxuICAgICAqIEBwYXJhbSBjaGlsZHJlbiBDaGlsZHJlbiBvZiB0aGUgbm9kZS5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihuYW1lLCBhdHRyaWJzLCBjaGlsZHJlbiA9IFtdLCB0eXBlID0gbmFtZSA9PT0gXCJzY3JpcHRcIlxuICAgICAgICA/IEVsZW1lbnRUeXBlLlNjcmlwdFxuICAgICAgICA6IG5hbWUgPT09IFwic3R5bGVcIlxuICAgICAgICAgICAgPyBFbGVtZW50VHlwZS5TdHlsZVxuICAgICAgICAgICAgOiBFbGVtZW50VHlwZS5UYWcpIHtcbiAgICAgICAgc3VwZXIoY2hpbGRyZW4pO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmF0dHJpYnMgPSBhdHRyaWJzO1xuICAgICAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIH1cbiAgICBnZXQgbm9kZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICAvLyBET00gTGV2ZWwgMSBhbGlhc2VzXG4gICAgLyoqXG4gICAgICogU2FtZSBhcyB7QGxpbmsgbmFtZX0uXG4gICAgICogW0RPTSBzcGVjXShodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcpLWNvbXBhdGlibGUgYWxpYXMuXG4gICAgICovXG4gICAgZ2V0IHRhZ05hbWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWU7XG4gICAgfVxuICAgIHNldCB0YWdOYW1lKG5hbWUpIHtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICB9XG4gICAgZ2V0IGF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLmF0dHJpYnMpLm1hcCgobmFtZSkgPT4ge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHJldHVybiAoe1xuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IHRoaXMuYXR0cmlic1tuYW1lXSxcbiAgICAgICAgICAgICAgICBuYW1lc3BhY2U6IChfYSA9IHRoaXNbXCJ4LWF0dHJpYnNOYW1lc3BhY2VcIl0pID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYVtuYW1lXSxcbiAgICAgICAgICAgICAgICBwcmVmaXg6IChfYiA9IHRoaXNbXCJ4LWF0dHJpYnNQcmVmaXhcIl0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYltuYW1lXSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICB9XG59XG4vKipcbiAqIEBwYXJhbSBub2RlIE5vZGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIG5vZGUgaXMgYSBgRWxlbWVudGAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNUYWcobm9kZSkge1xuICAgIHJldHVybiBpc1RhZ1Jhdyhub2RlKTtcbn1cbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYENEQVRBYCwgYGZhbHNlYCBvdGhlcndpc2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0NEQVRBKG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS50eXBlID09PSBFbGVtZW50VHlwZS5DREFUQTtcbn1cbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFRleHRgLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGV4dChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gRWxlbWVudFR5cGUuVGV4dDtcbn1cbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYENvbW1lbnRgLCBgZmFsc2VgIG90aGVyd2lzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ29tbWVudChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gRWxlbWVudFR5cGUuQ29tbWVudDtcbn1cbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFByb2Nlc3NpbmdJbnN0cnVjdGlvbmAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEaXJlY3RpdmUobm9kZSkge1xuICAgIHJldHVybiBub2RlLnR5cGUgPT09IEVsZW1lbnRUeXBlLkRpcmVjdGl2ZTtcbn1cbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgdGhlIHR5cGUgYFByb2Nlc3NpbmdJbnN0cnVjdGlvbmAsIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEb2N1bWVudChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUudHlwZSA9PT0gRWxlbWVudFR5cGUuUm9vdDtcbn1cbi8qKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgbm9kZSBoYXMgY2hpbGRyZW4sIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQ2hpbGRyZW4obm9kZSkge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobm9kZSwgXCJjaGlsZHJlblwiKTtcbn1cbi8qKlxuICogQ2xvbmUgYSBub2RlLCBhbmQgb3B0aW9uYWxseSBpdHMgY2hpbGRyZW4uXG4gKlxuICogQHBhcmFtIHJlY3Vyc2l2ZSBDbG9uZSBjaGlsZCBub2RlcyBhcyB3ZWxsLlxuICogQHJldHVybnMgQSBjbG9uZSBvZiB0aGUgbm9kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb25lTm9kZShub2RlLCByZWN1cnNpdmUgPSBmYWxzZSkge1xuICAgIGxldCByZXN1bHQ7XG4gICAgaWYgKGlzVGV4dChub2RlKSkge1xuICAgICAgICByZXN1bHQgPSBuZXcgVGV4dChub2RlLmRhdGEpO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0NvbW1lbnQobm9kZSkpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IENvbW1lbnQobm9kZS5kYXRhKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNUYWcobm9kZSkpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSByZWN1cnNpdmUgPyBjbG9uZUNoaWxkcmVuKG5vZGUuY2hpbGRyZW4pIDogW107XG4gICAgICAgIGNvbnN0IGNsb25lID0gbmV3IEVsZW1lbnQobm9kZS5uYW1lLCB7IC4uLm5vZGUuYXR0cmlicyB9LCBjaGlsZHJlbik7XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiAoY2hpbGQucGFyZW50ID0gY2xvbmUpKTtcbiAgICAgICAgaWYgKG5vZGUubmFtZXNwYWNlICE9IG51bGwpIHtcbiAgICAgICAgICAgIGNsb25lLm5hbWVzcGFjZSA9IG5vZGUubmFtZXNwYWNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlW1wieC1hdHRyaWJzTmFtZXNwYWNlXCJdKSB7XG4gICAgICAgICAgICBjbG9uZVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSA9IHsgLi4ubm9kZVtcIngtYXR0cmlic05hbWVzcGFjZVwiXSB9O1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlW1wieC1hdHRyaWJzUHJlZml4XCJdKSB7XG4gICAgICAgICAgICBjbG9uZVtcIngtYXR0cmlic1ByZWZpeFwiXSA9IHsgLi4ubm9kZVtcIngtYXR0cmlic1ByZWZpeFwiXSB9O1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGNsb25lO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0NEQVRBKG5vZGUpKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gcmVjdXJzaXZlID8gY2xvbmVDaGlsZHJlbihub2RlLmNoaWxkcmVuKSA6IFtdO1xuICAgICAgICBjb25zdCBjbG9uZSA9IG5ldyBDREFUQShjaGlsZHJlbik7XG4gICAgICAgIGNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiAoY2hpbGQucGFyZW50ID0gY2xvbmUpKTtcbiAgICAgICAgcmVzdWx0ID0gY2xvbmU7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICAgICAgY29uc3QgY2hpbGRyZW4gPSByZWN1cnNpdmUgPyBjbG9uZUNoaWxkcmVuKG5vZGUuY2hpbGRyZW4pIDogW107XG4gICAgICAgIGNvbnN0IGNsb25lID0gbmV3IERvY3VtZW50KGNoaWxkcmVuKTtcbiAgICAgICAgY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGQpID0+IChjaGlsZC5wYXJlbnQgPSBjbG9uZSkpO1xuICAgICAgICBpZiAobm9kZVtcIngtbW9kZVwiXSkge1xuICAgICAgICAgICAgY2xvbmVbXCJ4LW1vZGVcIl0gPSBub2RlW1wieC1tb2RlXCJdO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGNsb25lO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc0RpcmVjdGl2ZShub2RlKSkge1xuICAgICAgICBjb25zdCBpbnN0cnVjdGlvbiA9IG5ldyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obm9kZS5uYW1lLCBub2RlLmRhdGEpO1xuICAgICAgICBpZiAobm9kZVtcIngtbmFtZVwiXSAhPSBudWxsKSB7XG4gICAgICAgICAgICBpbnN0cnVjdGlvbltcIngtbmFtZVwiXSA9IG5vZGVbXCJ4LW5hbWVcIl07XG4gICAgICAgICAgICBpbnN0cnVjdGlvbltcIngtcHVibGljSWRcIl0gPSBub2RlW1wieC1wdWJsaWNJZFwiXTtcbiAgICAgICAgICAgIGluc3RydWN0aW9uW1wieC1zeXN0ZW1JZFwiXSA9IG5vZGVbXCJ4LXN5c3RlbUlkXCJdO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdCA9IGluc3RydWN0aW9uO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBOb3QgaW1wbGVtZW50ZWQgeWV0OiAke25vZGUudHlwZX1gKTtcbiAgICB9XG4gICAgcmVzdWx0LnN0YXJ0SW5kZXggPSBub2RlLnN0YXJ0SW5kZXg7XG4gICAgcmVzdWx0LmVuZEluZGV4ID0gbm9kZS5lbmRJbmRleDtcbiAgICBpZiAobm9kZS5zb3VyY2VDb2RlTG9jYXRpb24gIT0gbnVsbCkge1xuICAgICAgICByZXN1bHQuc291cmNlQ29kZUxvY2F0aW9uID0gbm9kZS5zb3VyY2VDb2RlTG9jYXRpb247XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBjbG9uZUNoaWxkcmVuKGNoaWxkcykge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gY2hpbGRzLm1hcCgoY2hpbGQpID0+IGNsb25lTm9kZShjaGlsZCwgdHJ1ZSkpO1xuICAgIGZvciAobGV0IGkgPSAxOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY2hpbGRyZW5baV0ucHJldiA9IGNoaWxkcmVuW2kgLSAxXTtcbiAgICAgICAgY2hpbGRyZW5baSAtIDFdLm5leHQgPSBjaGlsZHJlbltpXTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xufVxuIiwgImltcG9ydCB7IEVsZW1lbnRUeXBlIH0gZnJvbSBcImRvbWVsZW1lbnR0eXBlXCI7XG5pbXBvcnQgeyBFbGVtZW50LCBUZXh0LCBDb21tZW50LCBDREFUQSwgRG9jdW1lbnQsIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiwgfSBmcm9tIFwiLi9ub2RlLmpzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9ub2RlLmpzXCI7XG4vLyBEZWZhdWx0IG9wdGlvbnNcbmNvbnN0IGRlZmF1bHRPcHRzID0ge1xuICAgIHdpdGhTdGFydEluZGljZXM6IGZhbHNlLFxuICAgIHdpdGhFbmRJbmRpY2VzOiBmYWxzZSxcbiAgICB4bWxNb2RlOiBmYWxzZSxcbn07XG5leHBvcnQgY2xhc3MgRG9tSGFuZGxlciB7XG4gICAgLyoqXG4gICAgICogQHBhcmFtIGNhbGxiYWNrIENhbGxlZCBvbmNlIHBhcnNpbmcgaGFzIGNvbXBsZXRlZC5cbiAgICAgKiBAcGFyYW0gb3B0aW9ucyBTZXR0aW5ncyBmb3IgdGhlIGhhbmRsZXIuXG4gICAgICogQHBhcmFtIGVsZW1lbnRDQiBDYWxsYmFjayB3aGVuZXZlciBhIHRhZyBpcyBjbG9zZWQuXG4gICAgICovXG4gICAgY29uc3RydWN0b3IoY2FsbGJhY2ssIG9wdGlvbnMsIGVsZW1lbnRDQikge1xuICAgICAgICAvKiogVGhlIGVsZW1lbnRzIG9mIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5kb20gPSBbXTtcbiAgICAgICAgLyoqIFRoZSByb290IGVsZW1lbnQgZm9yIHRoZSBET00gKi9cbiAgICAgICAgdGhpcy5yb290ID0gbmV3IERvY3VtZW50KHRoaXMuZG9tKTtcbiAgICAgICAgLyoqIEluZGljYXRlZCB3aGV0aGVyIHBhcnNpbmcgaGFzIGJlZW4gY29tcGxldGVkLiAqL1xuICAgICAgICB0aGlzLmRvbmUgPSBmYWxzZTtcbiAgICAgICAgLyoqIFN0YWNrIG9mIG9wZW4gdGFncy4gKi9cbiAgICAgICAgdGhpcy50YWdTdGFjayA9IFt0aGlzLnJvb3RdO1xuICAgICAgICAvKiogQSBkYXRhIG5vZGUgdGhhdCBpcyBzdGlsbCBiZWluZyB3cml0dGVuIHRvLiAqL1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gbnVsbDtcbiAgICAgICAgLyoqIFJlZmVyZW5jZSB0byB0aGUgcGFyc2VyIGluc3RhbmNlLiBVc2VkIGZvciBsb2NhdGlvbiBpbmZvcm1hdGlvbi4gKi9cbiAgICAgICAgdGhpcy5wYXJzZXIgPSBudWxsO1xuICAgICAgICAvLyBNYWtlIGl0IHBvc3NpYmxlIHRvIHNraXAgYXJndW1lbnRzLCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHlcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIGVsZW1lbnRDQiA9IG9wdGlvbnM7XG4gICAgICAgICAgICBvcHRpb25zID0gZGVmYXVsdE9wdHM7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgb3B0aW9ucyA9IGNhbGxiYWNrO1xuICAgICAgICAgICAgY2FsbGJhY2sgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jYWxsYmFjayA9IGNhbGxiYWNrICE9PSBudWxsICYmIGNhbGxiYWNrICE9PSB2b2lkIDAgPyBjYWxsYmFjayA6IG51bGw7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMgIT09IG51bGwgJiYgb3B0aW9ucyAhPT0gdm9pZCAwID8gb3B0aW9ucyA6IGRlZmF1bHRPcHRzO1xuICAgICAgICB0aGlzLmVsZW1lbnRDQiA9IGVsZW1lbnRDQiAhPT0gbnVsbCAmJiBlbGVtZW50Q0IgIT09IHZvaWQgMCA/IGVsZW1lbnRDQiA6IG51bGw7XG4gICAgfVxuICAgIG9ucGFyc2VyaW5pdChwYXJzZXIpIHtcbiAgICAgICAgdGhpcy5wYXJzZXIgPSBwYXJzZXI7XG4gICAgfVxuICAgIC8vIFJlc2V0cyB0aGUgaGFuZGxlciBiYWNrIHRvIHN0YXJ0aW5nIHN0YXRlXG4gICAgb25yZXNldCgpIHtcbiAgICAgICAgdGhpcy5kb20gPSBbXTtcbiAgICAgICAgdGhpcy5yb290ID0gbmV3IERvY3VtZW50KHRoaXMuZG9tKTtcbiAgICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGFnU3RhY2sgPSBbdGhpcy5yb290XTtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgICAgIHRoaXMucGFyc2VyID0gbnVsbDtcbiAgICB9XG4gICAgLy8gU2lnbmFscyB0aGUgaGFuZGxlciB0aGF0IHBhcnNpbmcgaXMgZG9uZVxuICAgIG9uZW5kKCkge1xuICAgICAgICBpZiAodGhpcy5kb25lKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmRvbmUgPSB0cnVlO1xuICAgICAgICB0aGlzLnBhcnNlciA9IG51bGw7XG4gICAgICAgIHRoaXMuaGFuZGxlQ2FsbGJhY2sobnVsbCk7XG4gICAgfVxuICAgIG9uZXJyb3IoZXJyb3IpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVDYWxsYmFjayhlcnJvcik7XG4gICAgfVxuICAgIG9uY2xvc2V0YWcoKSB7XG4gICAgICAgIHRoaXMubGFzdE5vZGUgPSBudWxsO1xuICAgICAgICBjb25zdCBlbGVtID0gdGhpcy50YWdTdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy53aXRoRW5kSW5kaWNlcykge1xuICAgICAgICAgICAgZWxlbS5lbmRJbmRleCA9IHRoaXMucGFyc2VyLmVuZEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmVsZW1lbnRDQilcbiAgICAgICAgICAgIHRoaXMuZWxlbWVudENCKGVsZW0pO1xuICAgIH1cbiAgICBvbm9wZW50YWcobmFtZSwgYXR0cmlicykge1xuICAgICAgICBjb25zdCB0eXBlID0gdGhpcy5vcHRpb25zLnhtbE1vZGUgPyBFbGVtZW50VHlwZS5UYWcgOiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBuZXcgRWxlbWVudChuYW1lLCBhdHRyaWJzLCB1bmRlZmluZWQsIHR5cGUpO1xuICAgICAgICB0aGlzLmFkZE5vZGUoZWxlbWVudCk7XG4gICAgICAgIHRoaXMudGFnU3RhY2sucHVzaChlbGVtZW50KTtcbiAgICB9XG4gICAgb250ZXh0KGRhdGEpIHtcbiAgICAgICAgY29uc3QgeyBsYXN0Tm9kZSB9ID0gdGhpcztcbiAgICAgICAgaWYgKGxhc3ROb2RlICYmIGxhc3ROb2RlLnR5cGUgPT09IEVsZW1lbnRUeXBlLlRleHQpIHtcbiAgICAgICAgICAgIGxhc3ROb2RlLmRhdGEgKz0gZGF0YTtcbiAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aEVuZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgICBsYXN0Tm9kZS5lbmRJbmRleCA9IHRoaXMucGFyc2VyLmVuZEluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBUZXh0KGRhdGEpO1xuICAgICAgICAgICAgdGhpcy5hZGROb2RlKG5vZGUpO1xuICAgICAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG5vZGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25jb21tZW50KGRhdGEpIHtcbiAgICAgICAgaWYgKHRoaXMubGFzdE5vZGUgJiYgdGhpcy5sYXN0Tm9kZS50eXBlID09PSBFbGVtZW50VHlwZS5Db21tZW50KSB7XG4gICAgICAgICAgICB0aGlzLmxhc3ROb2RlLmRhdGEgKz0gZGF0YTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBub2RlID0gbmV3IENvbW1lbnQoZGF0YSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG5vZGU7XG4gICAgfVxuICAgIG9uY29tbWVudGVuZCgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfVxuICAgIG9uY2RhdGFzdGFydCgpIHtcbiAgICAgICAgY29uc3QgdGV4dCA9IG5ldyBUZXh0KFwiXCIpO1xuICAgICAgICBjb25zdCBub2RlID0gbmV3IENEQVRBKFt0ZXh0XSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICAgICAgdGV4dC5wYXJlbnQgPSBub2RlO1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gdGV4dDtcbiAgICB9XG4gICAgb25jZGF0YWVuZCgpIHtcbiAgICAgICAgdGhpcy5sYXN0Tm9kZSA9IG51bGw7XG4gICAgfVxuICAgIG9ucHJvY2Vzc2luZ2luc3RydWN0aW9uKG5hbWUsIGRhdGEpIHtcbiAgICAgICAgY29uc3Qgbm9kZSA9IG5ldyBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24obmFtZSwgZGF0YSk7XG4gICAgICAgIHRoaXMuYWRkTm9kZShub2RlKTtcbiAgICB9XG4gICAgaGFuZGxlQ2FsbGJhY2soZXJyb3IpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHRoaXMuY2FsbGJhY2soZXJyb3IsIHRoaXMuZG9tKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChlcnJvcikge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH1cbiAgICB9XG4gICAgYWRkTm9kZShub2RlKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudCA9IHRoaXMudGFnU3RhY2tbdGhpcy50YWdTdGFjay5sZW5ndGggLSAxXTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNTaWJsaW5nID0gcGFyZW50LmNoaWxkcmVuW3BhcmVudC5jaGlsZHJlbi5sZW5ndGggLSAxXTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy53aXRoU3RhcnRJbmRpY2VzKSB7XG4gICAgICAgICAgICBub2RlLnN0YXJ0SW5kZXggPSB0aGlzLnBhcnNlci5zdGFydEluZGV4O1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMud2l0aEVuZEluZGljZXMpIHtcbiAgICAgICAgICAgIG5vZGUuZW5kSW5kZXggPSB0aGlzLnBhcnNlci5lbmRJbmRleDtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQuY2hpbGRyZW4ucHVzaChub2RlKTtcbiAgICAgICAgaWYgKHByZXZpb3VzU2libGluZykge1xuICAgICAgICAgICAgbm9kZS5wcmV2ID0gcHJldmlvdXNTaWJsaW5nO1xuICAgICAgICAgICAgcHJldmlvdXNTaWJsaW5nLm5leHQgPSBub2RlO1xuICAgICAgICB9XG4gICAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50O1xuICAgICAgICB0aGlzLmxhc3ROb2RlID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBEb21IYW5kbGVyO1xuIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgImV4cG9ydCBjb25zdCBlbGVtZW50TmFtZXMgPSBuZXcgTWFwKFtcbiAgICBcImFsdEdseXBoXCIsXG4gICAgXCJhbHRHbHlwaERlZlwiLFxuICAgIFwiYWx0R2x5cGhJdGVtXCIsXG4gICAgXCJhbmltYXRlQ29sb3JcIixcbiAgICBcImFuaW1hdGVNb3Rpb25cIixcbiAgICBcImFuaW1hdGVUcmFuc2Zvcm1cIixcbiAgICBcImNsaXBQYXRoXCIsXG4gICAgXCJmZUJsZW5kXCIsXG4gICAgXCJmZUNvbG9yTWF0cml4XCIsXG4gICAgXCJmZUNvbXBvbmVudFRyYW5zZmVyXCIsXG4gICAgXCJmZUNvbXBvc2l0ZVwiLFxuICAgIFwiZmVDb252b2x2ZU1hdHJpeFwiLFxuICAgIFwiZmVEaWZmdXNlTGlnaHRpbmdcIixcbiAgICBcImZlRGlzcGxhY2VtZW50TWFwXCIsXG4gICAgXCJmZURpc3RhbnRMaWdodFwiLFxuICAgIFwiZmVEcm9wU2hhZG93XCIsXG4gICAgXCJmZUZsb29kXCIsXG4gICAgXCJmZUZ1bmNBXCIsXG4gICAgXCJmZUZ1bmNCXCIsXG4gICAgXCJmZUZ1bmNHXCIsXG4gICAgXCJmZUZ1bmNSXCIsXG4gICAgXCJmZUdhdXNzaWFuQmx1clwiLFxuICAgIFwiZmVJbWFnZVwiLFxuICAgIFwiZmVNZXJnZVwiLFxuICAgIFwiZmVNZXJnZU5vZGVcIixcbiAgICBcImZlTW9ycGhvbG9neVwiLFxuICAgIFwiZmVPZmZzZXRcIixcbiAgICBcImZlUG9pbnRMaWdodFwiLFxuICAgIFwiZmVTcGVjdWxhckxpZ2h0aW5nXCIsXG4gICAgXCJmZVNwb3RMaWdodFwiLFxuICAgIFwiZmVUaWxlXCIsXG4gICAgXCJmZVR1cmJ1bGVuY2VcIixcbiAgICBcImZvcmVpZ25PYmplY3RcIixcbiAgICBcImdseXBoUmVmXCIsXG4gICAgXCJsaW5lYXJHcmFkaWVudFwiLFxuICAgIFwicmFkaWFsR3JhZGllbnRcIixcbiAgICBcInRleHRQYXRoXCIsXG5dLm1hcCgodmFsKSA9PiBbdmFsLnRvTG93ZXJDYXNlKCksIHZhbF0pKTtcbmV4cG9ydCBjb25zdCBhdHRyaWJ1dGVOYW1lcyA9IG5ldyBNYXAoW1xuICAgIFwiZGVmaW5pdGlvblVSTFwiLFxuICAgIFwiYXR0cmlidXRlTmFtZVwiLFxuICAgIFwiYXR0cmlidXRlVHlwZVwiLFxuICAgIFwiYmFzZUZyZXF1ZW5jeVwiLFxuICAgIFwiYmFzZVByb2ZpbGVcIixcbiAgICBcImNhbGNNb2RlXCIsXG4gICAgXCJjbGlwUGF0aFVuaXRzXCIsXG4gICAgXCJkaWZmdXNlQ29uc3RhbnRcIixcbiAgICBcImVkZ2VNb2RlXCIsXG4gICAgXCJmaWx0ZXJVbml0c1wiLFxuICAgIFwiZ2x5cGhSZWZcIixcbiAgICBcImdyYWRpZW50VHJhbnNmb3JtXCIsXG4gICAgXCJncmFkaWVudFVuaXRzXCIsXG4gICAgXCJrZXJuZWxNYXRyaXhcIixcbiAgICBcImtlcm5lbFVuaXRMZW5ndGhcIixcbiAgICBcImtleVBvaW50c1wiLFxuICAgIFwia2V5U3BsaW5lc1wiLFxuICAgIFwia2V5VGltZXNcIixcbiAgICBcImxlbmd0aEFkanVzdFwiLFxuICAgIFwibGltaXRpbmdDb25lQW5nbGVcIixcbiAgICBcIm1hcmtlckhlaWdodFwiLFxuICAgIFwibWFya2VyVW5pdHNcIixcbiAgICBcIm1hcmtlcldpZHRoXCIsXG4gICAgXCJtYXNrQ29udGVudFVuaXRzXCIsXG4gICAgXCJtYXNrVW5pdHNcIixcbiAgICBcIm51bU9jdGF2ZXNcIixcbiAgICBcInBhdGhMZW5ndGhcIixcbiAgICBcInBhdHRlcm5Db250ZW50VW5pdHNcIixcbiAgICBcInBhdHRlcm5UcmFuc2Zvcm1cIixcbiAgICBcInBhdHRlcm5Vbml0c1wiLFxuICAgIFwicG9pbnRzQXRYXCIsXG4gICAgXCJwb2ludHNBdFlcIixcbiAgICBcInBvaW50c0F0WlwiLFxuICAgIFwicHJlc2VydmVBbHBoYVwiLFxuICAgIFwicHJlc2VydmVBc3BlY3RSYXRpb1wiLFxuICAgIFwicHJpbWl0aXZlVW5pdHNcIixcbiAgICBcInJlZlhcIixcbiAgICBcInJlZllcIixcbiAgICBcInJlcGVhdENvdW50XCIsXG4gICAgXCJyZXBlYXREdXJcIixcbiAgICBcInJlcXVpcmVkRXh0ZW5zaW9uc1wiLFxuICAgIFwicmVxdWlyZWRGZWF0dXJlc1wiLFxuICAgIFwic3BlY3VsYXJDb25zdGFudFwiLFxuICAgIFwic3BlY3VsYXJFeHBvbmVudFwiLFxuICAgIFwic3ByZWFkTWV0aG9kXCIsXG4gICAgXCJzdGFydE9mZnNldFwiLFxuICAgIFwic3RkRGV2aWF0aW9uXCIsXG4gICAgXCJzdGl0Y2hUaWxlc1wiLFxuICAgIFwic3VyZmFjZVNjYWxlXCIsXG4gICAgXCJzeXN0ZW1MYW5ndWFnZVwiLFxuICAgIFwidGFibGVWYWx1ZXNcIixcbiAgICBcInRhcmdldFhcIixcbiAgICBcInRhcmdldFlcIixcbiAgICBcInRleHRMZW5ndGhcIixcbiAgICBcInZpZXdCb3hcIixcbiAgICBcInZpZXdUYXJnZXRcIixcbiAgICBcInhDaGFubmVsU2VsZWN0b3JcIixcbiAgICBcInlDaGFubmVsU2VsZWN0b3JcIixcbiAgICBcInpvb21BbmRQYW5cIixcbl0ubWFwKCh2YWwpID0+IFt2YWwudG9Mb3dlckNhc2UoKSwgdmFsXSkpO1xuIiwgIi8qXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCAqIGFzIEVsZW1lbnRUeXBlIGZyb20gXCJkb21lbGVtZW50dHlwZVwiO1xuaW1wb3J0IHsgZW5jb2RlWE1MLCBlc2NhcGVBdHRyaWJ1dGUsIGVzY2FwZVRleHQgfSBmcm9tIFwiZW50aXRpZXNcIjtcbi8qKlxuICogTWl4ZWQtY2FzZSBTVkcgYW5kIE1hdGhNTCB0YWdzICYgYXR0cmlidXRlc1xuICogcmVjb2duaXplZCBieSB0aGUgSFRNTCBwYXJzZXIuXG4gKlxuICogQHNlZSBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9wYXJzaW5nLmh0bWwjcGFyc2luZy1tYWluLWluZm9yZWlnblxuICovXG5pbXBvcnQgeyBlbGVtZW50TmFtZXMsIGF0dHJpYnV0ZU5hbWVzIH0gZnJvbSBcIi4vZm9yZWlnbk5hbWVzLmpzXCI7XG5jb25zdCB1bmVuY29kZWRFbGVtZW50cyA9IG5ldyBTZXQoW1xuICAgIFwic3R5bGVcIixcbiAgICBcInNjcmlwdFwiLFxuICAgIFwieG1wXCIsXG4gICAgXCJpZnJhbWVcIixcbiAgICBcIm5vZW1iZWRcIixcbiAgICBcIm5vZnJhbWVzXCIsXG4gICAgXCJwbGFpbnRleHRcIixcbiAgICBcIm5vc2NyaXB0XCIsXG5dKTtcbmZ1bmN0aW9uIHJlcGxhY2VRdW90ZXModmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXCIvZywgXCImcXVvdDtcIik7XG59XG4vKipcbiAqIEZvcm1hdCBhdHRyaWJ1dGVzXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEF0dHJpYnV0ZXMoYXR0cmlidXRlcywgb3B0cykge1xuICAgIHZhciBfYTtcbiAgICBpZiAoIWF0dHJpYnV0ZXMpXG4gICAgICAgIHJldHVybjtcbiAgICBjb25zdCBlbmNvZGUgPSAoKF9hID0gb3B0cy5lbmNvZGVFbnRpdGllcykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogb3B0cy5kZWNvZGVFbnRpdGllcykgPT09IGZhbHNlXG4gICAgICAgID8gcmVwbGFjZVF1b3Rlc1xuICAgICAgICA6IG9wdHMueG1sTW9kZSB8fCBvcHRzLmVuY29kZUVudGl0aWVzICE9PSBcInV0ZjhcIlxuICAgICAgICAgICAgPyBlbmNvZGVYTUxcbiAgICAgICAgICAgIDogZXNjYXBlQXR0cmlidXRlO1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKVxuICAgICAgICAubWFwKChrZXkpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgY29uc3QgdmFsdWUgPSAoX2EgPSBhdHRyaWJ1dGVzW2tleV0pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IFwiXCI7XG4gICAgICAgIGlmIChvcHRzLnhtbE1vZGUgPT09IFwiZm9yZWlnblwiKSB7XG4gICAgICAgICAgICAvKiBGaXggdXAgbWl4ZWQtY2FzZSBhdHRyaWJ1dGUgbmFtZXMgKi9cbiAgICAgICAgICAgIGtleSA9IChfYiA9IGF0dHJpYnV0ZU5hbWVzLmdldChrZXkpKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBrZXk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFvcHRzLmVtcHR5QXR0cnMgJiYgIW9wdHMueG1sTW9kZSAmJiB2YWx1ZSA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIGtleTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCR7a2V5fT1cIiR7ZW5jb2RlKHZhbHVlKX1cImA7XG4gICAgfSlcbiAgICAgICAgLmpvaW4oXCIgXCIpO1xufVxuLyoqXG4gKiBTZWxmLWVuY2xvc2luZyB0YWdzXG4gKi9cbmNvbnN0IHNpbmdsZVRhZyA9IG5ldyBTZXQoW1xuICAgIFwiYXJlYVwiLFxuICAgIFwiYmFzZVwiLFxuICAgIFwiYmFzZWZvbnRcIixcbiAgICBcImJyXCIsXG4gICAgXCJjb2xcIixcbiAgICBcImNvbW1hbmRcIixcbiAgICBcImVtYmVkXCIsXG4gICAgXCJmcmFtZVwiLFxuICAgIFwiaHJcIixcbiAgICBcImltZ1wiLFxuICAgIFwiaW5wdXRcIixcbiAgICBcImlzaW5kZXhcIixcbiAgICBcImtleWdlblwiLFxuICAgIFwibGlua1wiLFxuICAgIFwibWV0YVwiLFxuICAgIFwicGFyYW1cIixcbiAgICBcInNvdXJjZVwiLFxuICAgIFwidHJhY2tcIixcbiAgICBcIndiclwiLFxuXSk7XG4vKipcbiAqIFJlbmRlcnMgYSBET00gbm9kZSBvciBhbiBhcnJheSBvZiBET00gbm9kZXMgdG8gYSBzdHJpbmcuXG4gKlxuICogQ2FuIGJlIHRob3VnaHQgb2YgYXMgdGhlIGVxdWl2YWxlbnQgb2YgdGhlIGBvdXRlckhUTUxgIG9mIHRoZSBwYXNzZWQgbm9kZShzKS5cbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIGJlIHJlbmRlcmVkLlxuICogQHBhcmFtIG9wdGlvbnMgQ2hhbmdlcyBzZXJpYWxpemF0aW9uIGJlaGF2aW9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXIobm9kZSwgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3Qgbm9kZXMgPSBcImxlbmd0aFwiIGluIG5vZGUgPyBub2RlIDogW25vZGVdO1xuICAgIGxldCBvdXRwdXQgPSBcIlwiO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgb3V0cHV0ICs9IHJlbmRlck5vZGUobm9kZXNbaV0sIG9wdGlvbnMpO1xuICAgIH1cbiAgICByZXR1cm4gb3V0cHV0O1xufVxuZXhwb3J0IGRlZmF1bHQgcmVuZGVyO1xuZnVuY3Rpb24gcmVuZGVyTm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgc3dpdGNoIChub2RlLnR5cGUpIHtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5Sb290OlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlcihub2RlLmNoaWxkcmVuLCBvcHRpb25zKTtcbiAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvciBXZSBkb24ndCB1c2UgYERvY3R5cGVgIHlldFxuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLkRvY3R5cGU6XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuRGlyZWN0aXZlOlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlckRpcmVjdGl2ZShub2RlKTtcbiAgICAgICAgY2FzZSBFbGVtZW50VHlwZS5Db21tZW50OlxuICAgICAgICAgICAgcmV0dXJuIHJlbmRlckNvbW1lbnQobm9kZSk7XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuQ0RBVEE6XG4gICAgICAgICAgICByZXR1cm4gcmVuZGVyQ2RhdGEobm9kZSk7XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuU2NyaXB0OlxuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLlN0eWxlOlxuICAgICAgICBjYXNlIEVsZW1lbnRUeXBlLlRhZzpcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJUYWcobm9kZSwgb3B0aW9ucyk7XG4gICAgICAgIGNhc2UgRWxlbWVudFR5cGUuVGV4dDpcbiAgICAgICAgICAgIHJldHVybiByZW5kZXJUZXh0KG5vZGUsIG9wdGlvbnMpO1xuICAgIH1cbn1cbmNvbnN0IGZvcmVpZ25Nb2RlSW50ZWdyYXRpb25Qb2ludHMgPSBuZXcgU2V0KFtcbiAgICBcIm1pXCIsXG4gICAgXCJtb1wiLFxuICAgIFwibW5cIixcbiAgICBcIm1zXCIsXG4gICAgXCJtdGV4dFwiLFxuICAgIFwiYW5ub3RhdGlvbi14bWxcIixcbiAgICBcImZvcmVpZ25PYmplY3RcIixcbiAgICBcImRlc2NcIixcbiAgICBcInRpdGxlXCIsXG5dKTtcbmNvbnN0IGZvcmVpZ25FbGVtZW50cyA9IG5ldyBTZXQoW1wic3ZnXCIsIFwibWF0aFwiXSk7XG5mdW5jdGlvbiByZW5kZXJUYWcoZWxlbSwgb3B0cykge1xuICAgIHZhciBfYTtcbiAgICAvLyBIYW5kbGUgU1ZHIC8gTWF0aE1MIGluIEhUTUxcbiAgICBpZiAob3B0cy54bWxNb2RlID09PSBcImZvcmVpZ25cIikge1xuICAgICAgICAvKiBGaXggdXAgbWl4ZWQtY2FzZSBlbGVtZW50IG5hbWVzICovXG4gICAgICAgIGVsZW0ubmFtZSA9IChfYSA9IGVsZW1lbnROYW1lcy5nZXQoZWxlbS5uYW1lKSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogZWxlbS5uYW1lO1xuICAgICAgICAvKiBFeGl0IGZvcmVpZ24gbW9kZSBhdCBpbnRlZ3JhdGlvbiBwb2ludHMgKi9cbiAgICAgICAgaWYgKGVsZW0ucGFyZW50ICYmXG4gICAgICAgICAgICBmb3JlaWduTW9kZUludGVncmF0aW9uUG9pbnRzLmhhcyhlbGVtLnBhcmVudC5uYW1lKSkge1xuICAgICAgICAgICAgb3B0cyA9IHsgLi4ub3B0cywgeG1sTW9kZTogZmFsc2UgfTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW9wdHMueG1sTW9kZSAmJiBmb3JlaWduRWxlbWVudHMuaGFzKGVsZW0ubmFtZSkpIHtcbiAgICAgICAgb3B0cyA9IHsgLi4ub3B0cywgeG1sTW9kZTogXCJmb3JlaWduXCIgfTtcbiAgICB9XG4gICAgbGV0IHRhZyA9IGA8JHtlbGVtLm5hbWV9YDtcbiAgICBjb25zdCBhdHRyaWJzID0gZm9ybWF0QXR0cmlidXRlcyhlbGVtLmF0dHJpYnMsIG9wdHMpO1xuICAgIGlmIChhdHRyaWJzKSB7XG4gICAgICAgIHRhZyArPSBgICR7YXR0cmlic31gO1xuICAgIH1cbiAgICBpZiAoZWxlbS5jaGlsZHJlbi5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgKG9wdHMueG1sTW9kZVxuICAgICAgICAgICAgPyAvLyBJbiBYTUwgbW9kZSBvciBmb3JlaWduIG1vZGUsIGFuZCB1c2VyIGhhc24ndCBleHBsaWNpdGx5IHR1cm5lZCBvZmYgc2VsZi1jbG9zaW5nIHRhZ3NcbiAgICAgICAgICAgICAgICBvcHRzLnNlbGZDbG9zaW5nVGFncyAhPT0gZmFsc2VcbiAgICAgICAgICAgIDogLy8gVXNlciBleHBsaWNpdGx5IGFza2VkIGZvciBzZWxmLWNsb3NpbmcgdGFncywgZXZlbiBpbiBIVE1MIG1vZGVcbiAgICAgICAgICAgICAgICBvcHRzLnNlbGZDbG9zaW5nVGFncyAmJiBzaW5nbGVUYWcuaGFzKGVsZW0ubmFtZSkpKSB7XG4gICAgICAgIGlmICghb3B0cy54bWxNb2RlKVxuICAgICAgICAgICAgdGFnICs9IFwiIFwiO1xuICAgICAgICB0YWcgKz0gXCIvPlwiO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGFnICs9IFwiPlwiO1xuICAgICAgICBpZiAoZWxlbS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0YWcgKz0gcmVuZGVyKGVsZW0uY2hpbGRyZW4sIG9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRzLnhtbE1vZGUgfHwgIXNpbmdsZVRhZy5oYXMoZWxlbS5uYW1lKSkge1xuICAgICAgICAgICAgdGFnICs9IGA8LyR7ZWxlbS5uYW1lfT5gO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0YWc7XG59XG5mdW5jdGlvbiByZW5kZXJEaXJlY3RpdmUoZWxlbSkge1xuICAgIHJldHVybiBgPCR7ZWxlbS5kYXRhfT5gO1xufVxuZnVuY3Rpb24gcmVuZGVyVGV4dChlbGVtLCBvcHRzKSB7XG4gICAgdmFyIF9hO1xuICAgIGxldCBkYXRhID0gZWxlbS5kYXRhIHx8IFwiXCI7XG4gICAgLy8gSWYgZW50aXRpZXMgd2VyZW4ndCBkZWNvZGVkLCBubyBuZWVkIHRvIGVuY29kZSB0aGVtIGJhY2tcbiAgICBpZiAoKChfYSA9IG9wdHMuZW5jb2RlRW50aXRpZXMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IG9wdHMuZGVjb2RlRW50aXRpZXMpICE9PSBmYWxzZSAmJlxuICAgICAgICAhKCFvcHRzLnhtbE1vZGUgJiZcbiAgICAgICAgICAgIGVsZW0ucGFyZW50ICYmXG4gICAgICAgICAgICB1bmVuY29kZWRFbGVtZW50cy5oYXMoZWxlbS5wYXJlbnQubmFtZSkpKSB7XG4gICAgICAgIGRhdGEgPVxuICAgICAgICAgICAgb3B0cy54bWxNb2RlIHx8IG9wdHMuZW5jb2RlRW50aXRpZXMgIT09IFwidXRmOFwiXG4gICAgICAgICAgICAgICAgPyBlbmNvZGVYTUwoZGF0YSlcbiAgICAgICAgICAgICAgICA6IGVzY2FwZVRleHQoZGF0YSk7XG4gICAgfVxuICAgIHJldHVybiBkYXRhO1xufVxuZnVuY3Rpb24gcmVuZGVyQ2RhdGEoZWxlbSkge1xuICAgIHJldHVybiBgPCFbQ0RBVEFbJHtlbGVtLmNoaWxkcmVuWzBdLmRhdGF9XV0+YDtcbn1cbmZ1bmN0aW9uIHJlbmRlckNvbW1lbnQoZWxlbSkge1xuICAgIHJldHVybiBgPCEtLSR7ZWxlbS5kYXRhfS0tPmA7XG59XG4iLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsLCAiaW1wb3J0IHR5cGUgeyBEb21IYW5kbGVyT3B0aW9ucyB9IGZyb20gJ2RvbWhhbmRsZXInO1xuaW1wb3J0IHR5cGUgeyBQYXJzZXJPcHRpb25zIGFzIEhUTUxQYXJzZXIyUGFyc2VyT3B0aW9ucyB9IGZyb20gJ2h0bWxwYXJzZXIyJztcbmltcG9ydCB0eXBlIHsgUGFyc2VyT3B0aW9ucyBhcyBQYXJzZTVQYXJzZXJPcHRpb25zIH0gZnJvbSAncGFyc2U1JztcbmltcG9ydCB0eXBlIHsgSHRtbHBhcnNlcjJUcmVlQWRhcHRlck1hcCB9IGZyb20gJ3BhcnNlNS1odG1scGFyc2VyMi10cmVlLWFkYXB0ZXInO1xuaW1wb3J0IHR5cGUgeyBPcHRpb25zIGFzIFNlbGVjdE9wdGlvbnMgfSBmcm9tICdjaGVlcmlvLXNlbGVjdCc7XG5cbi8qKlxuICogT3B0aW9ucyBhY2NlcHRlZCBieSBodG1scGFyc2VyMiwgdGhlIGRlZmF1bHQgcGFyc2VyIGZvciBYTUwuXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmI1NS9odG1scGFyc2VyMi93aWtpL1BhcnNlci1vcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSFRNTFBhcnNlcjJPcHRpb25zXG4gIGV4dGVuZHMgRG9tSGFuZGxlck9wdGlvbnMsXG4gICAgSFRNTFBhcnNlcjJQYXJzZXJPcHRpb25zIHt9XG5cbi8qKlxuICogT3B0aW9ucyBhY2NlcHRlZCBieSBDaGVlcmlvLlxuICpcbiAqIFBsZWFzZSBub3RlIHRoYXQgcGFyc2VyLXNwZWNpZmljIG9wdGlvbnMgYXJlIF9vbmx5IHJlY29nbml6ZWRfIGlmIHRoZVxuICogcmVsZXZhbnQgcGFyc2VyIGlzIHVzZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlZXJpb09wdGlvbnNcbiAgZXh0ZW5kcyBQYXJzZTVQYXJzZXJPcHRpb25zPEh0bWxwYXJzZXIyVHJlZUFkYXB0ZXJNYXA+IHtcbiAgLyoqXG4gICAqIFJlY29tbWVuZGVkIHdheSBvZiBjb25maWd1cmluZyBodG1scGFyc2VyMiB3aGVuIHdhbnRpbmcgdG8gcGFyc2UgWE1MLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgc3dpdGNoIENoZWVyaW8gdG8gdXNlIGh0bWxwYXJzZXIyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgeG1sPzogSFRNTFBhcnNlcjJPcHRpb25zIHwgYm9vbGVhbjtcblxuICAvKipcbiAgICogRW5hYmxlIHhtbCBtb2RlLCB3aGljaCB3aWxsIHN3aXRjaCBDaGVlcmlvIHRvIHVzZSBodG1scGFyc2VyMi5cbiAgICpcbiAgICogQGRlcHJlY2F0ZWQgUGxlYXNlIHVzZSB0aGUgYHhtbGAgb3B0aW9uIGluc3RlYWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICB4bWxNb2RlPzogYm9vbGVhbjtcblxuICAvKiogVGhlIGJhc2UgVVJJIGZvciB0aGUgZG9jdW1lbnQuIFVzZWQgdG8gcmVzb2x2ZSB0aGUgYGhyZWZgIGFuZCBgc3JjYCBwcm9wcy4gKi9cbiAgYmFzZVVSST86IHN0cmluZyB8IFVSTDtcblxuICAvKipcbiAgICogSXMgdGhlIGRvY3VtZW50IGluIHF1aXJrcyBtb2RlP1xuICAgKlxuICAgKiBUaGlzIHdpbGwgbGVhZCB0byBgLmNsYXNzTmFtZWAgYW5kIGAjaWRgIGJlaW5nIGNhc2UtaW5zZW5zaXRpdmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBxdWlya3NNb2RlPzogU2VsZWN0T3B0aW9uc1sncXVpcmtzTW9kZSddO1xuICAvKipcbiAgICogRXh0ZW5zaW9uIHBvaW50IGZvciBwc2V1ZG8tY2xhc3Nlcy5cbiAgICpcbiAgICogTWFwcyBmcm9tIG5hbWVzIHRvIGVpdGhlciBzdHJpbmdzIG9mIGZ1bmN0aW9ucy5cbiAgICpcbiAgICogLSBBIHN0cmluZyB2YWx1ZSBpcyBhIHNlbGVjdG9yIHRoYXQgdGhlIGVsZW1lbnQgbXVzdCBtYXRjaCB0byBiZSBzZWxlY3RlZC5cbiAgICogLSBBIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aXRoIHRoZSBlbGVtZW50IGFzIGl0cyBmaXJzdCBhcmd1bWVudCwgYW5kIG9wdGlvbmFsXG4gICAqICAgcGFyYW1ldGVycyBzZWNvbmQuIElmIGl0IHJldHVybnMgdHJ1ZSwgdGhlIGVsZW1lbnQgaXMgc2VsZWN0ZWQuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGNvbnN0ICQgPSBjaGVlcmlvLmxvYWQoXG4gICAqICAgJzxkaXYgY2xhc3M9XCJmb29cIj48L2Rpdj48ZGl2IGRhdGEtYmFyPVwiYm9vXCI+PC9kaXY+JyxcbiAgICogICB7XG4gICAqICAgICBwc2V1ZG9zOiB7XG4gICAqICAgICAgIC8vIGA6Zm9vYCBpcyBhbiBhbGlhcyBmb3IgYGRpdi5mb29gXG4gICAqICAgICAgIGZvbzogJ2Rpdi5mb28nLFxuICAgKiAgICAgICAvLyBgOmJhcih2YWwpYCBpcyBlcXVpdmFsZW50IHRvIGBbZGF0YS1iYXI9dmFsIHNdYFxuICAgKiAgICAgICBiYXI6IChlbCwgdmFsKSA9PiBlbC5hdHRyaWJzWydkYXRhLWJhciddID09PSB2YWwsXG4gICAqICAgICB9LFxuICAgKiAgIH0sXG4gICAqICk7XG4gICAqXG4gICAqICQoJzpmb28nKS5sZW5ndGg7IC8vIDFcbiAgICogJCgnZGl2OmJhcihib28pJykubGVuZ3RoOyAvLyAxXG4gICAqICQoJ2RpdjpiYXIoYmF6KScpLmxlbmd0aDsgLy8gMFxuICAgKiBgYGBcbiAgICovXG4gIHBzZXVkb3M/OiBTZWxlY3RPcHRpb25zWydwc2V1ZG9zJ107XG59XG5cbi8qKiBJbnRlcm5hbCBvcHRpb25zIGZvciBDaGVlcmlvLiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5hbE9wdGlvbnNcbiAgZXh0ZW5kcyBIVE1MUGFyc2VyMk9wdGlvbnMsXG4gICAgT21pdDxDaGVlcmlvT3B0aW9ucywgJ3htbCc+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gdXNlIGh0bWxwYXJzZXIyLlxuICAgKlxuICAgKiBUaGlzIGlzIHNldCB0byB0cnVlIGlmIGB4bWxgIGlzIHNldCB0byB0cnVlLlxuICAgKi9cbiAgX3VzZUh0bWxQYXJzZXIyPzogYm9vbGVhbjtcbn1cblxuY29uc3QgZGVmYXVsdE9wdHM6IEludGVybmFsT3B0aW9ucyA9IHtcbiAgX3VzZUh0bWxQYXJzZXIyOiBmYWxzZSxcbn07XG5cbi8qKlxuICogRmxhdHRlbiB0aGUgb3B0aW9ucyBmb3IgQ2hlZXJpby5cbiAqXG4gKiBUaGlzIHdpbGwgc2V0IGBfdXNlSHRtbFBhcnNlcjJgIHRvIHRydWUgaWYgYHhtbGAgaXMgc2V0IHRvIHRydWUuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9ucyB0byBmbGF0dGVuLlxuICogQHBhcmFtIGJhc2VPcHRpb25zIC0gVGhlIGJhc2Ugb3B0aW9ucyB0byB1c2UuXG4gKiBAcmV0dXJucyBUaGUgZmxhdHRlbmVkIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmbGF0dGVuT3B0aW9ucyhcbiAgb3B0aW9ucz86IENoZWVyaW9PcHRpb25zIHwgbnVsbCxcbiAgYmFzZU9wdGlvbnM/OiBJbnRlcm5hbE9wdGlvbnMsXG4pOiBJbnRlcm5hbE9wdGlvbnMge1xuICBpZiAoIW9wdGlvbnMpIHtcbiAgICByZXR1cm4gYmFzZU9wdGlvbnMgPz8gZGVmYXVsdE9wdHM7XG4gIH1cblxuICBjb25zdCBvcHRzOiBJbnRlcm5hbE9wdGlvbnMgPSB7XG4gICAgX3VzZUh0bWxQYXJzZXIyOiAhIW9wdGlvbnMueG1sTW9kZSxcbiAgICAuLi5iYXNlT3B0aW9ucyxcbiAgICAuLi5vcHRpb25zLFxuICB9O1xuXG4gIGlmIChvcHRpb25zLnhtbCkge1xuICAgIG9wdHMuX3VzZUh0bWxQYXJzZXIyID0gdHJ1ZTtcbiAgICBvcHRzLnhtbE1vZGUgPSB0cnVlO1xuXG4gICAgaWYgKG9wdGlvbnMueG1sICE9PSB0cnVlKSB7XG4gICAgICBPYmplY3QuYXNzaWduKG9wdHMsIG9wdGlvbnMueG1sKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAob3B0aW9ucy54bWxNb2RlKSB7XG4gICAgb3B0cy5fdXNlSHRtbFBhcnNlcjIgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIG9wdHM7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBCYXNpY0FjY2VwdGVkRWxlbXMgfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgQ2hlZXJpb0FQSSB9IGZyb20gJy4vbG9hZC5qcyc7XG5pbXBvcnQgdHlwZSB7IENoZWVyaW8gfSBmcm9tICcuL2NoZWVyaW8uanMnO1xuaW1wb3J0IHR5cGUgeyBBbnlOb2RlLCBEb2N1bWVudCB9IGZyb20gJ2RvbWhhbmRsZXInO1xuaW1wb3J0IHsgdGV4dENvbnRlbnQgfSBmcm9tICdkb211dGlscyc7XG5pbXBvcnQge1xuICB0eXBlIEludGVybmFsT3B0aW9ucyxcbiAgdHlwZSBDaGVlcmlvT3B0aW9ucyxcbiAgZmxhdHRlbk9wdGlvbnMgYXMgZmxhdHRlbk9wdGlvbnMsXG59IGZyb20gJy4vb3B0aW9ucy5qcyc7XG5pbXBvcnQgdHlwZSB7IEV4dHJhY3RlZE1hcCwgRXh0cmFjdE1hcCB9IGZyb20gJy4vYXBpL2V4dHJhY3QuanMnO1xuXG4vKipcbiAqIEhlbHBlciBmdW5jdGlvbiB0byByZW5kZXIgYSBET00uXG4gKlxuICogQHBhcmFtIHRoYXQgLSBDaGVlcmlvIGluc3RhbmNlIHRvIHJlbmRlci5cbiAqIEBwYXJhbSBkb20gLSBUaGUgRE9NIHRvIHJlbmRlci4gRGVmYXVsdHMgdG8gYHRoYXRgJ3Mgcm9vdC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgcmVuZGVyaW5nLlxuICogQHJldHVybnMgVGhlIHJlbmRlcmVkIGRvY3VtZW50LlxuICovXG5mdW5jdGlvbiByZW5kZXIoXG4gIHRoYXQ6IENoZWVyaW9BUEksXG4gIGRvbTogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+IHwgdW5kZWZpbmVkLFxuICBvcHRpb25zOiBJbnRlcm5hbE9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBpZiAoIXRoYXQpIHJldHVybiAnJztcblxuICByZXR1cm4gdGhhdChkb20gPz8gdGhhdC5fcm9vdC5jaGlsZHJlbiwgbnVsbCwgdW5kZWZpbmVkLCBvcHRpb25zKS50b1N0cmluZygpO1xufVxuXG4vKipcbiAqIENoZWNrcyBpZiBhIHBhc3NlZCBvYmplY3QgaXMgYW4gb3B0aW9ucyBvYmplY3QuXG4gKlxuICogQHBhcmFtIGRvbSAtIE9iamVjdCB0byBjaGVjayBpZiBpdCBpcyBhbiBvcHRpb25zIG9iamVjdC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBvYmplY3QuXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBvYmplY3QgaXMgYW4gb3B0aW9ucyBvYmplY3QuXG4gKi9cbmZ1bmN0aW9uIGlzT3B0aW9ucyhcbiAgZG9tPzogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+IHwgQ2hlZXJpb09wdGlvbnMgfCBudWxsLFxuICBvcHRpb25zPzogQ2hlZXJpb09wdGlvbnMsXG4pOiBkb20gaXMgQ2hlZXJpb09wdGlvbnMge1xuICByZXR1cm4gKFxuICAgICFvcHRpb25zICYmXG4gICAgdHlwZW9mIGRvbSA9PT0gJ29iamVjdCcgJiZcbiAgICBkb20gIT0gbnVsbCAmJlxuICAgICEoJ2xlbmd0aCcgaW4gZG9tKSAmJlxuICAgICEoJ3R5cGUnIGluIGRvbSlcbiAgKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBkb2N1bWVudC5cbiAqXG4gKiBAY2F0ZWdvcnkgU3RhdGljXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSByZW5kZXJlci5cbiAqIEByZXR1cm5zIFRoZSByZW5kZXJlZCBkb2N1bWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGh0bWwodGhpczogQ2hlZXJpb0FQSSwgb3B0aW9ucz86IENoZWVyaW9PcHRpb25zKTogc3RyaW5nO1xuLyoqXG4gKiBSZW5kZXJzIHRoZSBkb2N1bWVudC5cbiAqXG4gKiBAY2F0ZWdvcnkgU3RhdGljXG4gKiBAcGFyYW0gZG9tIC0gRWxlbWVudCB0byByZW5kZXIuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgZm9yIHRoZSByZW5kZXJlci5cbiAqIEByZXR1cm5zIFRoZSByZW5kZXJlZCBkb2N1bWVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGh0bWwoXG4gIHRoaXM6IENoZWVyaW9BUEksXG4gIGRvbT86IEJhc2ljQWNjZXB0ZWRFbGVtczxBbnlOb2RlPixcbiAgb3B0aW9ucz86IENoZWVyaW9PcHRpb25zLFxuKTogc3RyaW5nO1xuZXhwb3J0IGZ1bmN0aW9uIGh0bWwoXG4gIHRoaXM6IENoZWVyaW9BUEksXG4gIGRvbT86IEJhc2ljQWNjZXB0ZWRFbGVtczxBbnlOb2RlPiB8IENoZWVyaW9PcHRpb25zLFxuICBvcHRpb25zPzogQ2hlZXJpb09wdGlvbnMsXG4pOiBzdHJpbmcge1xuICAvKlxuICAgKiBCZSBmbGV4aWJsZSBhYm91dCBwYXJhbWV0ZXJzLCBzb21ldGltZXMgd2UgY2FsbCBodG1sKCksXG4gICAqIHdpdGggb3B0aW9ucyBhcyBvbmx5IHBhcmFtZXRlclxuICAgKiBjaGVjayBkb20gYXJndW1lbnQgZm9yIGRvbSBlbGVtZW50IHNwZWNpZmljIHByb3BlcnRpZXNcbiAgICogYXNzdW1lIHRoZXJlIGlzIG5vICdsZW5ndGgnIG9yICd0eXBlJyBwcm9wZXJ0aWVzIGluIHRoZSBvcHRpb25zIG9iamVjdFxuICAgKi9cbiAgY29uc3QgdG9SZW5kZXIgPSBpc09wdGlvbnMoZG9tKSA/ICgob3B0aW9ucyA9IGRvbSksIHVuZGVmaW5lZCkgOiBkb207XG5cbiAgLypcbiAgICogU29tZXRpbWVzIGAkLmh0bWwoKWAgaXMgdXNlZCB3aXRob3V0IHByZWxvYWRpbmcgaHRtbCxcbiAgICogc28gZmFsbGJhY2sgbm9uLWV4aXN0aW5nIG9wdGlvbnMgdG8gdGhlIGRlZmF1bHQgb25lcy5cbiAgICovXG4gIGNvbnN0IG9wdHMgPSB7XG4gICAgLi4udGhpcz8uX29wdGlvbnMsXG4gICAgLi4uZmxhdHRlbk9wdGlvbnMob3B0aW9ucyksXG4gIH07XG5cbiAgcmV0dXJuIHJlbmRlcih0aGlzLCB0b1JlbmRlciwgb3B0cyk7XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBkb2N1bWVudCBhcyBYTUwuXG4gKlxuICogQGNhdGVnb3J5IFN0YXRpY1xuICogQHBhcmFtIGRvbSAtIEVsZW1lbnQgdG8gcmVuZGVyLlxuICogQHJldHVybnMgVEhlIHJlbmRlcmVkIGRvY3VtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24geG1sKFxuICB0aGlzOiBDaGVlcmlvQVBJLFxuICBkb20/OiBCYXNpY0FjY2VwdGVkRWxlbXM8QW55Tm9kZT4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBvcHRpb25zID0geyAuLi50aGlzLl9vcHRpb25zLCB4bWxNb2RlOiB0cnVlIH07XG5cbiAgcmV0dXJuIHJlbmRlcih0aGlzLCBkb20sIG9wdGlvbnMpO1xufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgZG9jdW1lbnQgYXMgdGV4dC5cbiAqXG4gKiBUaGlzIHJldHVybnMgdGhlIGB0ZXh0Q29udGVudGAgb2YgdGhlIHBhc3NlZCBlbGVtZW50cy4gVGhlIHJlc3VsdCB3aWxsXG4gKiBpbmNsdWRlIHRoZSBjb250ZW50cyBvZiBgPHNjcmlwdD5gIGFuZCBgPHN0eWxlPmAgZWxlbWVudHMuIFRvIGF2b2lkIHRoaXMsIHVzZVxuICogYC5wcm9wKCdpbm5lclRleHQnKWAgaW5zdGVhZC5cbiAqXG4gKiBAY2F0ZWdvcnkgU3RhdGljXG4gKiBAcGFyYW0gZWxlbWVudHMgLSBFbGVtZW50cyB0byByZW5kZXIuXG4gKiBAcmV0dXJucyBUaGUgcmVuZGVyZWQgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0ZXh0KFxuICB0aGlzOiBDaGVlcmlvQVBJIHwgdm9pZCxcbiAgZWxlbWVudHM/OiBBcnJheUxpa2U8QW55Tm9kZT4sXG4pOiBzdHJpbmcge1xuICBjb25zdCBlbGVtcyA9IGVsZW1lbnRzID8/ICh0aGlzID8gdGhpcy5yb290KCkgOiBbXSk7XG5cbiAgbGV0IHJldCA9ICcnO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZWxlbXMubGVuZ3RoOyBpKyspIHtcbiAgICByZXQgKz0gdGV4dENvbnRlbnQoZWxlbXNbaV0pO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBQYXJzZXMgYSBzdHJpbmcgaW50byBhbiBhcnJheSBvZiBET00gbm9kZXMuIFRoZSBgY29udGV4dGAgYXJndW1lbnQgaGFzIG5vXG4gKiBtZWFuaW5nIGZvciBDaGVlcmlvLCBidXQgaXQgaXMgbWFpbnRhaW5lZCBmb3IgQVBJIGNvbXBhdGliaWxpdHkgd2l0aCBqUXVlcnkuXG4gKlxuICogQGNhdGVnb3J5IFN0YXRpY1xuICogQHBhcmFtIGRhdGEgLSBNYXJrdXAgdGhhdCB3aWxsIGJlIHBhcnNlZC5cbiAqIEBwYXJhbSBjb250ZXh0IC0gV2lsbCBiZSBpZ25vcmVkLiBJZiBpdCBpcyBhIGJvb2xlYW4gaXQgd2lsbCBiZSB1c2VkIGFzIHRoZVxuICogICB2YWx1ZSBvZiBga2VlcFNjcmlwdHNgLlxuICogQHBhcmFtIGtlZXBTY3JpcHRzIC0gSWYgZmFsc2UgYWxsIHNjcmlwdHMgd2lsbCBiZSByZW1vdmVkLlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBET00uXG4gKiBAYWxpYXMgQ2hlZXJpby5wYXJzZUhUTUxcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20valF1ZXJ5LnBhcnNlSFRNTC99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUhUTUwoXG4gIHRoaXM6IENoZWVyaW9BUEksXG4gIGRhdGE6IHN0cmluZyxcbiAgY29udGV4dD86IHVua25vd24gfCBib29sZWFuLFxuICBrZWVwU2NyaXB0cz86IGJvb2xlYW4sXG4pOiBBbnlOb2RlW107XG5leHBvcnQgZnVuY3Rpb24gcGFyc2VIVE1MKHRoaXM6IENoZWVyaW9BUEksIGRhdGE/OiAnJyB8IG51bGwpOiBudWxsO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlSFRNTChcbiAgdGhpczogQ2hlZXJpb0FQSSxcbiAgZGF0YT86IHN0cmluZyB8IG51bGwsXG4gIGNvbnRleHQ/OiB1bmtub3duIHwgYm9vbGVhbixcbiAga2VlcFNjcmlwdHMgPSB0eXBlb2YgY29udGV4dCA9PT0gJ2Jvb2xlYW4nID8gY29udGV4dCA6IGZhbHNlLFxuKTogQW55Tm9kZVtdIHwgbnVsbCB7XG4gIGlmICghZGF0YSB8fCB0eXBlb2YgZGF0YSAhPT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY29udGV4dCA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAga2VlcFNjcmlwdHMgPSBjb250ZXh0O1xuICB9XG5cbiAgY29uc3QgcGFyc2VkID0gdGhpcy5sb2FkKGRhdGEsIHRoaXMuX29wdGlvbnMsIGZhbHNlKTtcbiAgaWYgKCFrZWVwU2NyaXB0cykge1xuICAgIHBhcnNlZCgnc2NyaXB0JykucmVtb3ZlKCk7XG4gIH1cblxuICAvKlxuICAgKiBUaGUgYGNoaWxkcmVuYCBhcnJheSBpcyB1c2VkIGJ5IENoZWVyaW8gaW50ZXJuYWxseSB0byBncm91cCBlbGVtZW50cyB0aGF0XG4gICAqIHNoYXJlIHRoZSBzYW1lIHBhcmVudHMuIFdoZW4gbm9kZXMgY3JlYXRlZCB0aHJvdWdoIGBwYXJzZUhUTUxgIGFyZVxuICAgKiBpbnNlcnRlZCBpbnRvIHByZXZpb3VzbHktZXhpc3RpbmcgRE9NIHN0cnVjdHVyZXMsIHRoZXkgd2lsbCBiZSByZW1vdmVkXG4gICAqIGZyb20gdGhlIGBjaGlsZHJlbmAgYXJyYXkuIFRoZSByZXN1bHRzIG9mIGBwYXJzZUhUTUxgIHNob3VsZCByZW1haW5cbiAgICogY29uc3RhbnQgYWNyb3NzIHRoZXNlIG9wZXJhdGlvbnMsIHNvIGEgc2hhbGxvdyBjb3B5IHNob3VsZCBiZSByZXR1cm5lZC5cbiAgICovXG4gIHJldHVybiBbLi4ucGFyc2VkLnJvb3QoKVswXS5jaGlsZHJlbl07XG59XG5cbi8qKlxuICogU29tZXRpbWVzIHlvdSBuZWVkIHRvIHdvcmsgd2l0aCB0aGUgdG9wLWxldmVsIHJvb3QgZWxlbWVudC4gVG8gcXVlcnkgaXQsIHlvdVxuICogY2FuIHVzZSBgJC5yb290KClgLlxuICpcbiAqIEBjYXRlZ29yeSBTdGF0aWNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQucm9vdCgpLmFwcGVuZCgnPHVsIGlkPVwidmVnZXRhYmxlc1wiPjwvdWw+JykuaHRtbCgpO1xuICogLy89PiA8dWwgaWQ9XCJmcnVpdHNcIj4uLi48L3VsPjx1bCBpZD1cInZlZ2V0YWJsZXNcIj48L3VsPlxuICogYGBgXG4gKlxuICogQHJldHVybnMgQ2hlZXJpbyBpbnN0YW5jZSB3cmFwcGluZyB0aGUgcm9vdCBub2RlLlxuICogQGFsaWFzIENoZWVyaW8ucm9vdFxuICovXG5leHBvcnQgZnVuY3Rpb24gcm9vdCh0aGlzOiBDaGVlcmlvQVBJKTogQ2hlZXJpbzxEb2N1bWVudD4ge1xuICByZXR1cm4gdGhpcyh0aGlzLl9yb290KTtcbn1cblxuLyoqXG4gKiBDaGVja3MgdG8gc2VlIGlmIHRoZSBgY29udGFpbmVkYCBET00gZWxlbWVudCBpcyBhIGRlc2NlbmRhbnQgb2YgdGhlXG4gKiBgY29udGFpbmVyYCBET00gZWxlbWVudC5cbiAqXG4gKiBAY2F0ZWdvcnkgU3RhdGljXG4gKiBAcGFyYW0gY29udGFpbmVyIC0gUG90ZW50aWFsIHBhcmVudCBub2RlLlxuICogQHBhcmFtIGNvbnRhaW5lZCAtIFBvdGVudGlhbCBjaGlsZCBub2RlLlxuICogQHJldHVybnMgSW5kaWNhdGVzIGlmIHRoZSBub2RlcyBjb250YWluIG9uZSBhbm90aGVyLlxuICogQGFsaWFzIENoZWVyaW8uY29udGFpbnNcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20valF1ZXJ5LmNvbnRhaW5zL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbnRhaW5zKGNvbnRhaW5lcjogQW55Tm9kZSwgY29udGFpbmVkOiBBbnlOb2RlKTogYm9vbGVhbiB7XG4gIC8vIEFjY29yZGluZyB0byB0aGUgalF1ZXJ5IEFQSSwgYW4gZWxlbWVudCBkb2VzIG5vdCBcImNvbnRhaW5cIiBpdHNlbGZcbiAgaWYgKGNvbnRhaW5lZCA9PT0gY29udGFpbmVyKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLypcbiAgICogU3RlcCB1cCB0aGUgZGVzY2VuZGFudHMsIHN0b3BwaW5nIHdoZW4gdGhlIHJvb3QgZWxlbWVudCBpcyByZWFjaGVkXG4gICAqIChzaWduYWxlZCBieSBgLnBhcmVudGAgcmV0dXJuaW5nIGEgcmVmZXJlbmNlIHRvIHRoZSBzYW1lIG9iamVjdClcbiAgICovXG4gIGxldCBuZXh0OiBBbnlOb2RlIHwgbnVsbCA9IGNvbnRhaW5lZDtcbiAgd2hpbGUgKG5leHQgJiYgbmV4dCAhPT0gbmV4dC5wYXJlbnQpIHtcbiAgICBuZXh0ID0gbmV4dC5wYXJlbnQ7XG4gICAgaWYgKG5leHQgPT09IGNvbnRhaW5lcikge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgbXVsdGlwbGUgdmFsdWVzIGZyb20gYSBkb2N1bWVudCwgYW5kIHN0b3JlIHRoZW0gaW4gYW4gb2JqZWN0LlxuICpcbiAqIEBjYXRlZ29yeSBTdGF0aWNcbiAqIEBwYXJhbSBtYXAgLSBBbiBvYmplY3QgY29udGFpbmluZyBrZXktdmFsdWUgcGFpcnMuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2ZcbiAqICAgdGhlIHByb3BlcnRpZXMgdG8gYmUgY3JlYXRlZCBvbiB0aGUgb2JqZWN0LCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlXG4gKiAgIHNlbGVjdG9ycyB0byBiZSB1c2VkIHRvIGV4dHJhY3QgdGhlIHZhbHVlcy5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBleHRyYWN0ZWQgdmFsdWVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdDxNIGV4dGVuZHMgRXh0cmFjdE1hcD4oXG4gIHRoaXM6IENoZWVyaW9BUEksXG4gIG1hcDogTSxcbik6IEV4dHJhY3RlZE1hcDxNPiB7XG4gIHJldHVybiB0aGlzLnJvb3QoKS5leHRyYWN0KG1hcCk7XG59XG5cbnR5cGUgV3JpdGFibGU8VD4gPSB7IC1yZWFkb25seSBbUCBpbiBrZXlvZiBUXTogVFtQXSB9O1xuXG4vKipcbiAqICQubWVyZ2UoKS5cbiAqXG4gKiBAY2F0ZWdvcnkgU3RhdGljXG4gKiBAcGFyYW0gYXJyMSAtIEZpcnN0IGFycmF5LlxuICogQHBhcmFtIGFycjIgLSBTZWNvbmQgYXJyYXkuXG4gKiBAcmV0dXJucyBgYXJyMWAsIHdpdGggZWxlbWVudHMgb2YgYGFycjJgIGluc2VydGVkLlxuICogQGFsaWFzIENoZWVyaW8ubWVyZ2VcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20valF1ZXJ5Lm1lcmdlL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlPFQ+KFxuICBhcnIxOiBXcml0YWJsZTxBcnJheUxpa2U8VD4+LFxuICBhcnIyOiBBcnJheUxpa2U8VD4sXG4pOiBBcnJheUxpa2U8VD4gfCB1bmRlZmluZWQge1xuICBpZiAoIWlzQXJyYXlMaWtlKGFycjEpIHx8ICFpc0FycmF5TGlrZShhcnIyKSkge1xuICAgIHJldHVybjtcbiAgfVxuICBsZXQgbmV3TGVuZ3RoID0gYXJyMS5sZW5ndGg7XG4gIGNvbnN0IGxlbiA9ICthcnIyLmxlbmd0aDtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJyMVtuZXdMZW5ndGgrK10gPSBhcnIyW2ldO1xuICB9XG4gIGFycjEubGVuZ3RoID0gbmV3TGVuZ3RoO1xuICByZXR1cm4gYXJyMTtcbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgYW4gb2JqZWN0IGlzIGFycmF5LWxpa2UuXG4gKlxuICogQGNhdGVnb3J5IFN0YXRpY1xuICogQHBhcmFtIGl0ZW0gLSBJdGVtIHRvIGNoZWNrLlxuICogQHJldHVybnMgSW5kaWNhdGVzIGlmIHRoZSBpdGVtIGlzIGFycmF5LWxpa2UuXG4gKi9cbmZ1bmN0aW9uIGlzQXJyYXlMaWtlKGl0ZW06IHVua25vd24pOiBpdGVtIGlzIEFycmF5TGlrZTx1bmtub3duPiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoXG4gICAgdHlwZW9mIGl0ZW0gIT09ICdvYmplY3QnIHx8XG4gICAgaXRlbSA9PT0gbnVsbCB8fFxuICAgICEoJ2xlbmd0aCcgaW4gaXRlbSkgfHxcbiAgICB0eXBlb2YgaXRlbS5sZW5ndGggIT09ICdudW1iZXInIHx8XG4gICAgaXRlbS5sZW5ndGggPCAwXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghKGkgaW4gaXRlbSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG4iLCAiaW1wb3J0IHR5cGUgeyBBbnlOb2RlIH0gZnJvbSAnZG9taGFuZGxlcic7XG5pbXBvcnQgdHlwZSB7IENoZWVyaW8gfSBmcm9tICcuL2NoZWVyaW8uanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhbiBvYmplY3QgaXMgYSBDaGVlcmlvIGluc3RhbmNlLlxuICpcbiAqIEBjYXRlZ29yeSBVdGlsc1xuICogQHBhcmFtIG1heWJlQ2hlZXJpbyAtIFRoZSBvYmplY3QgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBvYmplY3QgaXMgYSBDaGVlcmlvIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNDaGVlcmlvPFQ+KG1heWJlQ2hlZXJpbzogYW55KTogbWF5YmVDaGVlcmlvIGlzIENoZWVyaW88VD4ge1xuICByZXR1cm4gbWF5YmVDaGVlcmlvLmNoZWVyaW8gIT0gbnVsbDtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIHRvIGNhbWVsIGNhc2Ugbm90YXRpb24uXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBVdGlsc1xuICogQHBhcmFtIHN0ciAtIFRoZSBzdHJpbmcgdG8gYmUgY29udmVydGVkLlxuICogQHJldHVybnMgU3RyaW5nIGluIGNhbWVsIGNhc2Ugbm90YXRpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW1lbENhc2Uoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gc3RyLnJlcGxhY2UoL1suXy1dKFxcd3wkKS9nLCAoXywgeCkgPT4geC50b1VwcGVyQ2FzZSgpKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgc3RyaW5nIGZyb20gY2FtZWwgY2FzZSB0byBcIkNTUyBjYXNlXCIsIHdoZXJlIHdvcmQgYm91bmRhcmllcyBhcmVcbiAqIGRlc2NyaWJlZCBieSBoeXBoZW5zIChcIi1cIikgYW5kIGFsbCBjaGFyYWN0ZXJzIGFyZSBsb3dlci1jYXNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgVXRpbHNcbiAqIEBwYXJhbSBzdHIgLSBUaGUgc3RyaW5nIHRvIGJlIGNvbnZlcnRlZC5cbiAqIEByZXR1cm5zIFN0cmluZyBpbiBcIkNTUyBjYXNlXCIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjc3NDYXNlKHN0cjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bQS1aXS9nLCAnLSQmJykudG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlIG92ZXIgZWFjaCBET00gZWxlbWVudCB3aXRob3V0IGNyZWF0aW5nIGludGVybWVkaWFyeSBDaGVlcmlvXG4gKiBpbnN0YW5jZXMuXG4gKlxuICogVGhpcyBpcyBpbmRlbnRlZCBmb3IgdXNlIGludGVybmFsbHkgdG8gYXZvaWQgb3RoZXJ3aXNlIHVubmVjZXNzYXJ5IG1lbW9yeVxuICogcHJlc3N1cmUgaW50cm9kdWNlZCBieSBfbWFrZS5cbiAqXG4gKiBAY2F0ZWdvcnkgVXRpbHNcbiAqIEBwYXJhbSBhcnJheSAtIFRoZSBhcnJheSB0byBpdGVyYXRlIG92ZXIuXG4gKiBAcGFyYW0gZm4gLSBGdW5jdGlvbiB0byBjYWxsLlxuICogQHJldHVybnMgVGhlIG9yaWdpbmFsIGluc3RhbmNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZG9tRWFjaDxcbiAgVCBleHRlbmRzIEFueU5vZGUsXG4gIEFyciBleHRlbmRzIEFycmF5TGlrZTxUPiA9IENoZWVyaW88VD4sXG4+KGFycmF5OiBBcnIsIGZuOiAoZWxlbTogVCwgaW5kZXg6IG51bWJlcikgPT4gdm9pZCk6IEFyciB7XG4gIGNvbnN0IGxlbiA9IGFycmF5Lmxlbmd0aDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykgZm4oYXJyYXlbaV0sIGkpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbmNvbnN0IGVudW0gQ2hhcmFjdGVyQ29kZXMge1xuICBMb3dlckEgPSA5NyxcbiAgTG93ZXJaID0gMTIyLFxuICBVcHBlckEgPSA2NSxcbiAgVXBwZXJaID0gOTAsXG4gIEV4Y2xhbWF0aW9uID0gMzMsXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgc3RyaW5nIGlzIEhUTUwuXG4gKlxuICogVGVzdHMgZm9yIGEgYDxgIHdpdGhpbiBhIHN0cmluZywgaW1tZWRpYXRlIGZvbGxvd2VkIGJ5IGEgbGV0dGVyIGFuZFxuICogZXZlbnR1YWxseSBmb2xsb3dlZCBieSBhIGA+YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNhdGVnb3J5IFV0aWxzXG4gKiBAcGFyYW0gc3RyIC0gVGhlIHN0cmluZyB0byBjaGVjay5cbiAqIEByZXR1cm5zIEluZGljYXRlcyBpZiBgc3RyYCBpcyBIVE1MLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNIdG1sKHN0cjogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGNvbnN0IHRhZ1N0YXJ0ID0gc3RyLmluZGV4T2YoJzwnKTtcblxuICBpZiAodGFnU3RhcnQgPCAwIHx8IHRhZ1N0YXJ0ID4gc3RyLmxlbmd0aCAtIDMpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCB0YWdDaGFyID0gc3RyLmNoYXJDb2RlQXQodGFnU3RhcnQgKyAxKTtcblxuICByZXR1cm4gKFxuICAgICgodGFnQ2hhciA+PSBDaGFyYWN0ZXJDb2Rlcy5Mb3dlckEgJiYgdGFnQ2hhciA8PSBDaGFyYWN0ZXJDb2Rlcy5Mb3dlclopIHx8XG4gICAgICAodGFnQ2hhciA+PSBDaGFyYWN0ZXJDb2Rlcy5VcHBlckEgJiYgdGFnQ2hhciA8PSBDaGFyYWN0ZXJDb2Rlcy5VcHBlclopIHx8XG4gICAgICB0YWdDaGFyID09PSBDaGFyYWN0ZXJDb2Rlcy5FeGNsYW1hdGlvbikgJiZcbiAgICBzdHIuaW5jbHVkZXMoJz4nLCB0YWdTdGFydCArIDIpXG4gICk7XG59XG4iLCAiLyoqXG4gKiBNZXRob2RzIGZvciBnZXR0aW5nIGFuZCBtb2RpZnlpbmcgYXR0cmlidXRlcy5cbiAqXG4gKiBAbW9kdWxlIGNoZWVyaW8vYXR0cmlidXRlc1xuICovXG5cbmltcG9ydCB7IHRleHQgfSBmcm9tICcuLi9zdGF0aWMuanMnO1xuaW1wb3J0IHsgZG9tRWFjaCwgY2FtZWxDYXNlLCBjc3NDYXNlIH0gZnJvbSAnLi4vdXRpbHMuanMnO1xuaW1wb3J0IHsgaXNUYWcsIHR5cGUgQW55Tm9kZSwgdHlwZSBFbGVtZW50IH0gZnJvbSAnZG9taGFuZGxlcic7XG5pbXBvcnQgdHlwZSB7IENoZWVyaW8gfSBmcm9tICcuLi9jaGVlcmlvLmpzJztcbmltcG9ydCB7IGlubmVyVGV4dCwgdGV4dENvbnRlbnQgfSBmcm9tICdkb211dGlscyc7XG5jb25zdCBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuY29uc3QgcnNwYWNlID0gL1xccysvO1xuY29uc3QgZGF0YUF0dHJQcmVmaXggPSAnZGF0YS0nO1xuXG4vLyBBdHRyaWJ1dGVzIHRoYXQgYXJlIGJvb2xlYW5zXG5jb25zdCByYm9vbGVhbiA9XG4gIC9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pO1xuLy8gTWF0Y2hlcyBzdHJpbmdzIHRoYXQgbG9vayBsaWtlIEpTT04gb2JqZWN0cyBvciBhcnJheXNcbmNvbnN0IHJicmFjZSA9IC9ee1teXSp9JHxeXFxbW15dKl0kLztcblxuLyoqXG4gKiBHZXRzIGEgbm9kZSdzIGF0dHJpYnV0ZS4gRm9yIGJvb2xlYW4gYXR0cmlidXRlcywgaXQgd2lsbCByZXR1cm4gdGhlIHZhbHVlJ3NcbiAqIG5hbWUgc2hvdWxkIGl0IGJlIHNldC5cbiAqXG4gKiBBbHNvIHN1cHBvcnRzIGdldHRpbmcgdGhlIGB2YWx1ZWAgb2Ygc2V2ZXJhbCBmb3JtIGVsZW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQHBhcmFtIGVsZW0gLSBFbGVtZW50IHRvIGdldCB0aGUgYXR0cmlidXRlIG9mLlxuICogQHBhcmFtIG5hbWUgLSBOYW1lIG9mIHRoZSBhdHRyaWJ1dGUuXG4gKiBAcGFyYW0geG1sTW9kZSAtIERpc2FibGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBIVE1MIGF0dHJpYnV0ZXMuXG4gKiBAcmV0dXJucyBUaGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldEF0dHIoXG4gIGVsZW06IEFueU5vZGUsXG4gIG5hbWU6IHVuZGVmaW5lZCxcbiAgeG1sTW9kZT86IGJvb2xlYW4sXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkO1xuZnVuY3Rpb24gZ2V0QXR0cihcbiAgZWxlbTogQW55Tm9kZSxcbiAgbmFtZTogc3RyaW5nLFxuICB4bWxNb2RlPzogYm9vbGVhbixcbik6IHN0cmluZyB8IHVuZGVmaW5lZDtcbmZ1bmN0aW9uIGdldEF0dHIoXG4gIGVsZW06IEFueU5vZGUsXG4gIG5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgeG1sTW9kZT86IGJvb2xlYW4sXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFlbGVtIHx8ICFpc1RhZyhlbGVtKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICBlbGVtLmF0dHJpYnMgPz89IHt9O1xuXG4gIC8vIFJldHVybiB0aGUgZW50aXJlIGF0dHJpYnMgb2JqZWN0IGlmIG5vIGF0dHJpYnV0ZSBzcGVjaWZpZWRcbiAgaWYgKCFuYW1lKSB7XG4gICAgcmV0dXJuIGVsZW0uYXR0cmlicztcbiAgfVxuXG4gIGlmIChoYXNPd24uY2FsbChlbGVtLmF0dHJpYnMsIG5hbWUpKSB7XG4gICAgLy8gR2V0IHRoZSAoZGVjb2RlZCkgYXR0cmlidXRlXG4gICAgcmV0dXJuICF4bWxNb2RlICYmIHJib29sZWFuLnRlc3QobmFtZSkgPyBuYW1lIDogZWxlbS5hdHRyaWJzW25hbWVdO1xuICB9XG5cbiAgLy8gTWltaWMgdGhlIERPTSBhbmQgcmV0dXJuIHRleHQgY29udGVudCBhcyB2YWx1ZSBmb3IgYG9wdGlvbidzYFxuICBpZiAoZWxlbS5uYW1lID09PSAnb3B0aW9uJyAmJiBuYW1lID09PSAndmFsdWUnKSB7XG4gICAgcmV0dXJuIHRleHQoZWxlbS5jaGlsZHJlbik7XG4gIH1cblxuICAvLyBNaW1pYyBET00gd2l0aCBkZWZhdWx0IHZhbHVlIGZvciByYWRpb3MvY2hlY2tib3hlc1xuICBpZiAoXG4gICAgZWxlbS5uYW1lID09PSAnaW5wdXQnICYmXG4gICAgKGVsZW0uYXR0cmlic1sndHlwZSddID09PSAncmFkaW8nIHx8IGVsZW0uYXR0cmlic1sndHlwZSddID09PSAnY2hlY2tib3gnKSAmJlxuICAgIG5hbWUgPT09ICd2YWx1ZSdcbiAgKSB7XG4gICAgcmV0dXJuICdvbic7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS4gVGhlIGF0dHJpYnV0ZSB3aWxsIGJlIGRlbGV0ZWQgaWYgdGhlIHZhbHVlIGlzXG4gKiBgbnVsbGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIHNldCB0aGUgYXR0cmlidXRlIG9uLlxuICogQHBhcmFtIG5hbWUgLSBUaGUgYXR0cmlidXRlJ3MgbmFtZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBhdHRyaWJ1dGUncyB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc2V0QXR0cihlbDogRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVsbCkge1xuICBpZiAodmFsdWUgPT09IG51bGwpIHtcbiAgICByZW1vdmVBdHRyaWJ1dGUoZWwsIG5hbWUpO1xuICB9IGVsc2Uge1xuICAgIGVsLmF0dHJpYnNbbmFtZV0gPSBgJHt2YWx1ZX1gO1xuICB9XG59XG5cbi8qKlxuICogTWV0aG9kIGZvciBnZXR0aW5nIGF0dHJpYnV0ZXMuIEdldHMgdGhlIGF0dHJpYnV0ZSB2YWx1ZSBmb3Igb25seSB0aGUgZmlyc3RcbiAqIGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LlxuICpcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCd1bCcpLmF0dHIoJ2lkJyk7XG4gKiAvLz0+IGZydWl0c1xuICogYGBgXG4gKlxuICogQHBhcmFtIG5hbWUgLSBOYW1lIG9mIHRoZSBhdHRyaWJ1dGUuXG4gKiBAcmV0dXJucyBUaGUgYXR0cmlidXRlJ3MgdmFsdWUuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2F0dHIvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cjxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU6IHN0cmluZyxcbik6IHN0cmluZyB8IHVuZGVmaW5lZDtcbi8qKlxuICogTWV0aG9kIGZvciBnZXR0aW5nIGFsbCBhdHRyaWJ1dGVzIGFuZCB0aGVpciB2YWx1ZXMgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW5cbiAqIHRoZSBtYXRjaGVkIHNldC5cbiAqXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgndWwnKS5hdHRyKCk7XG4gKiAvLz0+IHsgaWQ6ICdmcnVpdHMnIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIFRoZSBhdHRyaWJ1dGUncyB2YWx1ZXMuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2F0dHIvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0cjxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBNZXRob2QgZm9yIHNldHRpbmcgYXR0cmlidXRlcy4gU2V0cyB0aGUgYXR0cmlidXRlIHZhbHVlIGZvciBvbmx5IHRoZSBmaXJzdFxuICogZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuIElmIHlvdSBzZXQgYW4gYXR0cmlidXRlJ3MgdmFsdWUgdG8gYG51bGxgLCB5b3VcbiAqIHJlbW92ZSB0aGF0IGF0dHJpYnV0ZS4gWW91IG1heSBhbHNvIHBhc3MgYSBgbWFwYCBhbmQgYGZ1bmN0aW9uYC5cbiAqXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnLmFwcGxlJykuYXR0cignaWQnLCAnZmF2b3JpdGUnKS5odG1sKCk7XG4gKiAvLz0+IDxsaSBjbGFzcz1cImFwcGxlXCIgaWQ9XCJmYXZvcml0ZVwiPkFwcGxlPC9saT5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgYXR0cmlidXRlLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIG5ldyB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vYXR0ci99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdHRyPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgbmFtZTogc3RyaW5nLFxuICB2YWx1ZT86XG4gICAgfCBzdHJpbmdcbiAgICB8IG51bGxcbiAgICB8ICgodGhpczogRWxlbWVudCwgaTogbnVtYmVyLCBhdHRyaWI6IHN0cmluZykgPT4gc3RyaW5nIHwgbnVsbCksXG4pOiBDaGVlcmlvPFQ+O1xuLyoqXG4gKiBNZXRob2QgZm9yIHNldHRpbmcgbXVsdGlwbGUgYXR0cmlidXRlcyBhdCBvbmNlLiBTZXRzIHRoZSBhdHRyaWJ1dGUgdmFsdWUgZm9yXG4gKiBvbmx5IHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC4gSWYgeW91IHNldCBhbiBhdHRyaWJ1dGUncyB2YWx1ZSB0b1xuICogYG51bGxgLCB5b3UgcmVtb3ZlIHRoYXQgYXR0cmlidXRlLlxuICpcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcuYXBwbGUnKS5hdHRyKHsgaWQ6ICdmYXZvcml0ZScgfSkuaHRtbCgpO1xuICogLy89PiA8bGkgY2xhc3M9XCJhcHBsZVwiIGlkPVwiZmF2b3JpdGVcIj5BcHBsZTwvbGk+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdmFsdWVzIC0gTWFwIG9mIGF0dHJpYnV0ZSBuYW1lcyBhbmQgdmFsdWVzLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vYXR0ci99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhdHRyPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgdmFsdWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsPixcbik6IENoZWVyaW88VD47XG5leHBvcnQgZnVuY3Rpb24gYXR0cjxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU/OiBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBudWxsPixcbiAgdmFsdWU/OlxuICAgIHwgc3RyaW5nXG4gICAgfCBudWxsXG4gICAgfCAoKHRoaXM6IEVsZW1lbnQsIGk6IG51bWJlciwgYXR0cmliOiBzdHJpbmcpID0+IHN0cmluZyB8IG51bGwpLFxuKTogc3RyaW5nIHwgQ2hlZXJpbzxUPiB8IHVuZGVmaW5lZCB8IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xuICAvLyBTZXQgdGhlIHZhbHVlICh3aXRoIGF0dHIgbWFwIHN1cHBvcnQpXG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcgfHwgdmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQmFkIGNvbWJpbmF0aW9uIG9mIGFyZ3VtZW50cy4nKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGRvbUVhY2godGhpcywgKGVsLCBpKSA9PiB7XG4gICAgICAgIGlmIChpc1RhZyhlbCkpIHNldEF0dHIoZWwsIG5hbWUsIHZhbHVlLmNhbGwoZWwsIGksIGVsLmF0dHJpYnNbbmFtZV0pKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwpID0+IHtcbiAgICAgIGlmICghaXNUYWcoZWwpKSByZXR1cm47XG5cbiAgICAgIGlmICh0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yIChjb25zdCBvYmpOYW1lIG9mIE9iamVjdC5rZXlzKG5hbWUpKSB7XG4gICAgICAgICAgY29uc3Qgb2JqVmFsdWUgPSBuYW1lW29iak5hbWVdO1xuICAgICAgICAgIHNldEF0dHIoZWwsIG9iak5hbWUsIG9ialZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0QXR0cihlbCwgbmFtZSBhcyBzdHJpbmcsIHZhbHVlIGFzIHN0cmluZyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICByZXR1cm4gYXJndW1lbnRzLmxlbmd0aCA+IDFcbiAgICA/IHRoaXNcbiAgICA6IGdldEF0dHIodGhpc1swXSwgbmFtZSBhcyBzdHJpbmcsIHRoaXMub3B0aW9ucy54bWxNb2RlKTtcbn1cblxuLyoqXG4gKiBHZXRzIGEgbm9kZSdzIHByb3AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAcGFyYW0gZWwgLSBFbGVtZW50IHRvIGdldCB0aGUgcHJvcCBvZi5cbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgcHJvcC5cbiAqIEBwYXJhbSB4bWxNb2RlIC0gRGlzYWJsZSBoYW5kbGluZyBvZiBzcGVjaWFsIEhUTUwgYXR0cmlidXRlcy5cbiAqIEByZXR1cm5zIFRoZSBwcm9wJ3MgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFByb3AoXG4gIGVsOiBFbGVtZW50LFxuICBuYW1lOiBzdHJpbmcsXG4gIHhtbE1vZGU/OiBib29sZWFuLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgRWxlbWVudFtrZXlvZiBFbGVtZW50XSB7XG4gIHJldHVybiBuYW1lIGluIGVsXG4gICAgPyAvLyBAdHMtZXhwZWN0LWVycm9yIFRTIGRvZXNuJ3QgbGlrZSB1cyBhY2Nlc3NpbmcgdGhlIHZhbHVlIGRpcmVjdGx5IGhlcmUuXG4gICAgICBlbFtuYW1lXVxuICAgIDogIXhtbE1vZGUgJiYgcmJvb2xlYW4udGVzdChuYW1lKVxuICAgICAgPyBnZXRBdHRyKGVsLCBuYW1lLCBmYWxzZSkgIT09IHVuZGVmaW5lZFxuICAgICAgOiBnZXRBdHRyKGVsLCBuYW1lLCB4bWxNb2RlKTtcbn1cblxuLyoqXG4gKiBTZXRzIHRoZSB2YWx1ZSBvZiBhIHByb3AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBlbCAtIFRoZSBlbGVtZW50IHRvIHNldCB0aGUgcHJvcCBvbi5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIHByb3AncyBuYW1lLlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHByb3AncyB2YWx1ZS5cbiAqIEBwYXJhbSB4bWxNb2RlIC0gRGlzYWJsZSBoYW5kbGluZyBvZiBzcGVjaWFsIEhUTUwgYXR0cmlidXRlcy5cbiAqL1xuZnVuY3Rpb24gc2V0UHJvcChlbDogRWxlbWVudCwgbmFtZTogc3RyaW5nLCB2YWx1ZTogdW5rbm93biwgeG1sTW9kZT86IGJvb2xlYW4pIHtcbiAgaWYgKG5hbWUgaW4gZWwpIHtcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIE92ZXJyaWRpbmcgdmFsdWVcbiAgICBlbFtuYW1lXSA9IHZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHNldEF0dHIoXG4gICAgICBlbCxcbiAgICAgIG5hbWUsXG4gICAgICAheG1sTW9kZSAmJiByYm9vbGVhbi50ZXN0KG5hbWUpID8gKHZhbHVlID8gJycgOiBudWxsKSA6IGAke3ZhbHVlfWAsXG4gICAgKTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgU3R5bGVQcm9wIHtcbiAgbGVuZ3RoOiBudW1iZXI7XG4gIFtrZXk6IHN0cmluZ106IHN0cmluZyB8IG51bWJlcjtcbiAgW2luZGV4OiBudW1iZXJdOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0aG9kIGZvciBnZXR0aW5nIGFuZCBzZXR0aW5nIHByb3BlcnRpZXMuIEdldHMgdGhlIHByb3BlcnR5IHZhbHVlIGZvciBvbmx5XG4gKiB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgbWF0Y2hlZCBzZXQuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScpLnByb3AoJ2NoZWNrZWQnKTtcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiAkKCdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSkudmFsKCk7XG4gKiAvLz0+IG9rXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gbmFtZSAtIE5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICogQHJldHVybnMgSWYgYHZhbHVlYCBpcyBzcGVjaWZpZWQgdGhlIGluc3RhbmNlIGl0c2VsZiwgb3RoZXJ3aXNlIHRoZSBwcm9wJ3NcbiAqICAgdmFsdWUuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3Byb3AvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU6ICd0YWdOYW1lJyB8ICdub2RlTmFtZScsXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5leHBvcnQgZnVuY3Rpb24gcHJvcDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU6ICdpbm5lckhUTUwnIHwgJ291dGVySFRNTCcgfCAnaW5uZXJUZXh0JyB8ICd0ZXh0Q29udGVudCcsXG4pOiBzdHJpbmcgfCBudWxsO1xuLyoqXG4gKiBHZXQgYSBwYXJzZWQgQ1NTIHN0eWxlIG9iamVjdC5cbiAqXG4gKiBAcGFyYW0gbmFtZSAtIE5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICogQHJldHVybnMgVGhlIHN0eWxlIG9iamVjdCwgb3IgYHVuZGVmaW5lZGAgaWYgdGhlIGVsZW1lbnQgaGFzIG5vIGBzdHlsZWBcbiAqICAgYXR0cmlidXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU6ICdzdHlsZScsXG4pOiBTdHlsZVByb3AgfCB1bmRlZmluZWQ7XG4vKipcbiAqIFJlc29sdmUgYGhyZWZgIG9yIGBzcmNgIG9mIHN1cHBvcnRlZCBlbGVtZW50cy4gUmVxdWlyZXMgdGhlIGBiYXNlVVJJYCBvcHRpb25cbiAqIHRvIGJlIHNldCwgYW5kIGEgZ2xvYmFsIGBVUkxgIG9iamVjdCB0byBiZSBwYXJ0IG9mIHRoZSBlbnZpcm9ubWVudC5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIGBiYXNlVVJJYCBzZXQgdG8gYCdodHRwczovL2V4YW1wbGUuY29tJ2A6XG4gKlxuICogYGBganNcbiAqICQoJzxpbWcgc3JjPVwiaW1hZ2UucG5nXCI+JykucHJvcCgnc3JjJyk7XG4gKiAvLz0+ICdodHRwczovL2V4YW1wbGUuY29tL2ltYWdlLnBuZydcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKiBAcmV0dXJucyBUaGUgcmVzb2x2ZWQgVVJMLCBvciBgdW5kZWZpbmVkYCBpZiB0aGUgZWxlbWVudCBpcyBub3Qgc3VwcG9ydGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU6ICdocmVmJyB8ICdzcmMnLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBHZXQgYSBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKiBAcmV0dXJucyBUaGUgcHJvcGVydHkncyB2YWx1ZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3A8VCBleHRlbmRzIEFueU5vZGUsIEsgZXh0ZW5kcyBrZXlvZiBFbGVtZW50PihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgbmFtZTogSyxcbik6IEVsZW1lbnRbS107XG4vKipcbiAqIFNldCBhIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBOYW1lIG9mIHRoZSBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIHNldCB0aGUgcHJvcGVydHkgdG8uXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvcDxUIGV4dGVuZHMgQW55Tm9kZSwgSyBleHRlbmRzIGtleW9mIEVsZW1lbnQ+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBuYW1lOiBLLFxuICB2YWx1ZTpcbiAgICB8IEVsZW1lbnRbS11cbiAgICB8ICgodGhpczogRWxlbWVudCwgaTogbnVtYmVyLCBwcm9wOiBLKSA9PiBFbGVtZW50W2tleW9mIEVsZW1lbnRdKSxcbik6IENoZWVyaW88VD47XG4vKipcbiAqIFNldCBtdWx0aXBsZSBwcm9wZXJ0aWVzIG9mIGFuIGVsZW1lbnQuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJykucHJvcCh7XG4gKiAgIGNoZWNrZWQ6IHRydWUsXG4gKiAgIGRpc2FibGVkOiBmYWxzZSxcbiAqIH0pO1xuICogYGBgXG4gKlxuICogQHBhcmFtIG1hcCAtIE9iamVjdCBvZiBwcm9wZXJ0aWVzIHRvIHNldC5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBpdHNlbGYuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBFbGVtZW50W2tleW9mIEVsZW1lbnRdIHwgYm9vbGVhbj4sXG4pOiBDaGVlcmlvPFQ+O1xuLyoqXG4gKiBTZXQgYSBwcm9wZXJ0eSBvZiBhbiBlbGVtZW50LlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKiBAcGFyYW0gdmFsdWUgLSBWYWx1ZSB0byBzZXQgdGhlIHByb3BlcnR5IHRvLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3A8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBuYW1lOiBzdHJpbmcsXG4gIHZhbHVlOlxuICAgIHwgc3RyaW5nXG4gICAgfCBib29sZWFuXG4gICAgfCBudWxsXG4gICAgfCAoKHRoaXM6IEVsZW1lbnQsIGk6IG51bWJlciwgcHJvcDogc3RyaW5nKSA9PiBzdHJpbmcgfCBib29sZWFuKSxcbik6IENoZWVyaW88VD47XG4vKipcbiAqIEdldCBhIHByb3BlcnR5IG9mIGFuIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIG5hbWUgLSBUaGUgcHJvcGVydHkncyBuYW1lLlxuICogQHJldHVybnMgVGhlIHByb3BlcnR5J3MgdmFsdWUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9wPFQgZXh0ZW5kcyBBbnlOb2RlPih0aGlzOiBDaGVlcmlvPFQ+LCBuYW1lOiBzdHJpbmcpOiBzdHJpbmc7XG5leHBvcnQgZnVuY3Rpb24gcHJvcDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU6IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IEVsZW1lbnRba2V5b2YgRWxlbWVudF0gfCBib29sZWFuPixcbiAgdmFsdWU/OlxuICAgIHwgKChcbiAgICAgICAgdGhpczogRWxlbWVudCxcbiAgICAgICAgaTogbnVtYmVyLFxuICAgICAgICBwcm9wOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICApID0+IHN0cmluZyB8IEVsZW1lbnRba2V5b2YgRWxlbWVudF0gfCBib29sZWFuKVxuICAgIHwgdW5rbm93bixcbik6IENoZWVyaW88VD4gfCBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHwgRWxlbWVudFtrZXlvZiBFbGVtZW50XSB8IFN0eWxlUHJvcCB7XG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnN0IGVsID0gdGhpc1swXTtcblxuICAgIGlmICghZWwgfHwgIWlzVGFnKGVsKSkgcmV0dXJuIHVuZGVmaW5lZDtcblxuICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgY2FzZSAnc3R5bGUnOiB7XG4gICAgICAgIGNvbnN0IHByb3BlcnR5ID0gdGhpcy5jc3MoKSBhcyBTdHlsZVByb3A7XG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhwcm9wZXJ0eSk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHByb3BlcnR5W2ldID0ga2V5c1tpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIHByb3BlcnR5Lmxlbmd0aCA9IGtleXMubGVuZ3RoO1xuXG4gICAgICAgIHJldHVybiBwcm9wZXJ0eTtcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3RhZ05hbWUnOlxuICAgICAgY2FzZSAnbm9kZU5hbWUnOiB7XG4gICAgICAgIHJldHVybiBlbC5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2hyZWYnOlxuICAgICAgY2FzZSAnc3JjJzoge1xuICAgICAgICBjb25zdCBwcm9wID0gZWwuYXR0cmlicz8uW25hbWVdO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICB0eXBlb2YgVVJMICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICAgICgobmFtZSA9PT0gJ2hyZWYnICYmIChlbC50YWdOYW1lID09PSAnYScgfHwgZWwudGFnTmFtZSA9PT0gJ2xpbmsnKSkgfHxcbiAgICAgICAgICAgIChuYW1lID09PSAnc3JjJyAmJlxuICAgICAgICAgICAgICAoZWwudGFnTmFtZSA9PT0gJ2ltZycgfHxcbiAgICAgICAgICAgICAgICBlbC50YWdOYW1lID09PSAnaWZyYW1lJyB8fFxuICAgICAgICAgICAgICAgIGVsLnRhZ05hbWUgPT09ICdhdWRpbycgfHxcbiAgICAgICAgICAgICAgICBlbC50YWdOYW1lID09PSAndmlkZW8nIHx8XG4gICAgICAgICAgICAgICAgZWwudGFnTmFtZSA9PT0gJ3NvdXJjZScpKSkgJiZcbiAgICAgICAgICBwcm9wICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICB0aGlzLm9wdGlvbnMuYmFzZVVSSVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gbmV3IFVSTChwcm9wLCB0aGlzLm9wdGlvbnMuYmFzZVVSSSkuaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwcm9wO1xuICAgICAgfVxuXG4gICAgICBjYXNlICdpbm5lclRleHQnOiB7XG4gICAgICAgIHJldHVybiBpbm5lclRleHQoZWwpO1xuICAgICAgfVxuXG4gICAgICBjYXNlICd0ZXh0Q29udGVudCc6IHtcbiAgICAgICAgcmV0dXJuIHRleHRDb250ZW50KGVsKTtcbiAgICAgIH1cblxuICAgICAgY2FzZSAnb3V0ZXJIVE1MJzoge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9uZSgpLndyYXAoJzxjb250YWluZXIgLz4nKS5wYXJlbnQoKS5odG1sKCk7XG4gICAgICB9XG5cbiAgICAgIGNhc2UgJ2lubmVySFRNTCc6IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHRtbCgpO1xuICAgICAgfVxuXG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiBnZXRQcm9wKGVsLCBuYW1lLCB0aGlzLm9wdGlvbnMueG1sTW9kZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0JyB8fCB2YWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0Jykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCYWQgY29tYmluYXRpb24gb2YgYXJndW1lbnRzLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRvbUVhY2godGhpcywgKGVsLCBpKSA9PiB7XG4gICAgICAgIGlmIChpc1RhZyhlbCkpIHtcbiAgICAgICAgICBzZXRQcm9wKFxuICAgICAgICAgICAgZWwsXG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgdmFsdWUuY2FsbChlbCwgaSwgZ2V0UHJvcChlbCwgbmFtZSwgdGhpcy5vcHRpb25zLnhtbE1vZGUpKSxcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy54bWxNb2RlLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBkb21FYWNoKHRoaXMsIChlbCkgPT4ge1xuICAgICAgaWYgKCFpc1RhZyhlbCkpIHJldHVybjtcblxuICAgICAgaWYgKHR5cGVvZiBuYW1lID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhuYW1lKSkge1xuICAgICAgICAgIGNvbnN0IHZhbCA9IG5hbWVba2V5XTtcbiAgICAgICAgICBzZXRQcm9wKGVsLCBrZXksIHZhbCwgdGhpcy5vcHRpb25zLnhtbE1vZGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRQcm9wKGVsLCBuYW1lLCB2YWx1ZSwgdGhpcy5vcHRpb25zLnhtbE1vZGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBBbiBlbGVtZW50IHdpdGggYSBkYXRhIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5pbnRlcmZhY2UgRGF0YUVsZW1lbnQgZXh0ZW5kcyBFbGVtZW50IHtcbiAgLyoqIFRoZSBkYXRhIGF0dHJpYnV0ZS4gKi9cbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFNldHMgdGhlIHZhbHVlIG9mIGEgZGF0YSBhdHRyaWJ1dGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSBlbGVtIC0gVGhlIGVsZW1lbnQgdG8gc2V0IHRoZSBkYXRhIGF0dHJpYnV0ZSBvbi5cbiAqIEBwYXJhbSBuYW1lIC0gVGhlIGRhdGEgYXR0cmlidXRlJ3MgbmFtZS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBkYXRhIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICovXG5mdW5jdGlvbiBzZXREYXRhKFxuICBlbGVtOiBEYXRhRWxlbWVudCxcbiAgbmFtZTogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHZhbHVlPzogdW5rbm93bixcbikge1xuICBlbGVtLmRhdGEgPz89IHt9O1xuXG4gIGlmICh0eXBlb2YgbmFtZSA9PT0gJ29iamVjdCcpIE9iamVjdC5hc3NpZ24oZWxlbS5kYXRhLCBuYW1lKTtcbiAgZWxzZSBpZiAodHlwZW9mIG5hbWUgPT09ICdzdHJpbmcnICYmIHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbGVtLmRhdGFbbmFtZV0gPSB2YWx1ZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWQgX2FsbF8gSFRNTDUgYGRhdGEtKmAgYXR0cmlidXRlcyBmcm9tIHRoZSBlcXVpdmFsZW50IEhUTUw1IGBkYXRhLSpgXG4gKiBhdHRyaWJ1dGUsIGFuZCBjYWNoZSB0aGUgdmFsdWUgaW4gdGhlIG5vZGUncyBpbnRlcm5hbCBkYXRhIHN0b3JlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQHBhcmFtIGVsIC0gRWxlbWVudCB0byBnZXQgdGhlIGRhdGEgYXR0cmlidXRlIG9mLlxuICogQHJldHVybnMgQSBtYXAgd2l0aCBhbGwgb2YgdGhlIGRhdGEgYXR0cmlidXRlcy5cbiAqL1xuZnVuY3Rpb24gcmVhZEFsbERhdGEoZWw6IERhdGFFbGVtZW50KTogdW5rbm93biB7XG4gIGZvciAoY29uc3QgZG9tTmFtZSBvZiBPYmplY3Qua2V5cyhlbC5hdHRyaWJzKSkge1xuICAgIGlmICghZG9tTmFtZS5zdGFydHNXaXRoKGRhdGFBdHRyUHJlZml4KSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QganNOYW1lID0gY2FtZWxDYXNlKGRvbU5hbWUuc2xpY2UoZGF0YUF0dHJQcmVmaXgubGVuZ3RoKSk7XG5cbiAgICBpZiAoIWhhc093bi5jYWxsKGVsLmRhdGEsIGpzTmFtZSkpIHtcbiAgICAgIGVsLmRhdGEhW2pzTmFtZV0gPSBwYXJzZURhdGFWYWx1ZShlbC5hdHRyaWJzW2RvbU5hbWVdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZWwuZGF0YTtcbn1cblxuLyoqXG4gKiBSZWFkIHRoZSBzcGVjaWZpZWQgYXR0cmlidXRlIGZyb20gdGhlIGVxdWl2YWxlbnQgSFRNTDUgYGRhdGEtKmAgYXR0cmlidXRlLFxuICogYW5kIChpZiBwcmVzZW50KSBjYWNoZSB0aGUgdmFsdWUgaW4gdGhlIG5vZGUncyBpbnRlcm5hbCBkYXRhIHN0b3JlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQHBhcmFtIGVsIC0gRWxlbWVudCB0byBnZXQgdGhlIGRhdGEgYXR0cmlidXRlIG9mLlxuICogQHBhcmFtIG5hbWUgLSBOYW1lIG9mIHRoZSBkYXRhIGF0dHJpYnV0ZS5cbiAqIEByZXR1cm5zIFRoZSBkYXRhIGF0dHJpYnV0ZSdzIHZhbHVlLlxuICovXG5mdW5jdGlvbiByZWFkRGF0YShlbDogRGF0YUVsZW1lbnQsIG5hbWU6IHN0cmluZyk6IHVua25vd24ge1xuICBjb25zdCBkb21OYW1lID0gZGF0YUF0dHJQcmVmaXggKyBjc3NDYXNlKG5hbWUpO1xuICBjb25zdCBkYXRhID0gZWwuZGF0YSE7XG5cbiAgaWYgKGhhc093bi5jYWxsKGRhdGEsIG5hbWUpKSB7XG4gICAgcmV0dXJuIGRhdGFbbmFtZV07XG4gIH1cblxuICBpZiAoaGFzT3duLmNhbGwoZWwuYXR0cmlicywgZG9tTmFtZSkpIHtcbiAgICByZXR1cm4gKGRhdGFbbmFtZV0gPSBwYXJzZURhdGFWYWx1ZShlbC5hdHRyaWJzW2RvbU5hbWVdKSk7XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIENvZXJjZSBzdHJpbmcgZGF0YS0qIGF0dHJpYnV0ZXMgdG8gdGhlaXIgY29ycmVzcG9uZGluZyBKYXZhU2NyaXB0IHByaW1pdGl2ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgdmFsdWUgdG8gcGFyc2UuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHZhbHVlLlxuICovXG5mdW5jdGlvbiBwYXJzZURhdGFWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdW5rbm93biB7XG4gIGlmICh2YWx1ZSA9PT0gJ251bGwnKSByZXR1cm4gbnVsbDtcbiAgaWYgKHZhbHVlID09PSAndHJ1ZScpIHJldHVybiB0cnVlO1xuICBpZiAodmFsdWUgPT09ICdmYWxzZScpIHJldHVybiBmYWxzZTtcbiAgY29uc3QgbnVtID0gTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBTdHJpbmcobnVtKSkgcmV0dXJuIG51bTtcbiAgaWYgKHJicmFjZS50ZXN0KHZhbHVlKSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZSh2YWx1ZSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAvKiBJZ25vcmUgKi9cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG4vKipcbiAqIE1ldGhvZCBmb3IgZ2V0dGluZyBkYXRhIGF0dHJpYnV0ZXMsIGZvciBvbmx5IHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBtYXRjaGVkXG4gKiBzZXQuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJzxkaXYgZGF0YS1hcHBsZS1jb2xvcj1cInJlZFwiPjwvZGl2PicpLmRhdGEoJ2FwcGxlLWNvbG9yJyk7XG4gKiAvLz0+ICdyZWQnXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gbmFtZSAtIE5hbWUgb2YgdGhlIGRhdGEgYXR0cmlidXRlLlxuICogQHJldHVybnMgVGhlIGRhdGEgYXR0cmlidXRlJ3MgdmFsdWUsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3RcbiAqICAgZXhpc3QuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2RhdGEvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YTxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU6IHN0cmluZyxcbik6IHVua25vd24gfCB1bmRlZmluZWQ7XG4vKipcbiAqIE1ldGhvZCBmb3IgZ2V0dGluZyBhbGwgb2YgYW4gZWxlbWVudCdzIGRhdGEgYXR0cmlidXRlcywgZm9yIG9ubHkgdGhlIGZpcnN0XG4gKiBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cbiAqXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnPGRpdiBkYXRhLWFwcGxlLWNvbG9yPVwicmVkXCI+PC9kaXY+JykuZGF0YSgpO1xuICogLy89PiB7IGFwcGxlQ29sb3I6ICdyZWQnIH1cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIEEgbWFwIHdpdGggYWxsIG9mIHRoZSBkYXRhIGF0dHJpYnV0ZXMuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2RhdGEvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGF0YTxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbi8qKlxuICogTWV0aG9kIGZvciBzZXR0aW5nIGRhdGEgYXR0cmlidXRlcywgZm9yIG9ubHkgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWRcbiAqIHNldC5cbiAqXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYXBwbGUgPSAkKCcuYXBwbGUnKS5kYXRhKCdraW5kJywgJ21hYycpO1xuICpcbiAqIGFwcGxlLmRhdGEoJ2tpbmQnKTtcbiAqIC8vPT4gJ21hYydcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgZGF0YSBhdHRyaWJ1dGUuXG4gKiBAcGFyYW0gdmFsdWUgLSBUaGUgbmV3IHZhbHVlLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vZGF0YS99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkYXRhPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgbmFtZTogc3RyaW5nLFxuICB2YWx1ZTogdW5rbm93bixcbik6IENoZWVyaW88VD47XG4vKipcbiAqIE1ldGhvZCBmb3Igc2V0dGluZyBtdWx0aXBsZSBkYXRhIGF0dHJpYnV0ZXMgYXQgb25jZSwgZm9yIG9ubHkgdGhlIGZpcnN0XG4gKiBlbGVtZW50IGluIHRoZSBtYXRjaGVkIHNldC5cbiAqXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgYXBwbGUgPSAkKCcuYXBwbGUnKS5kYXRhKHsga2luZDogJ21hYycgfSk7XG4gKlxuICogYXBwbGUuZGF0YSgna2luZCcpO1xuICogLy89PiAnbWFjJ1xuICogYGBgXG4gKlxuICogQHBhcmFtIHZhbHVlcyAtIE1hcCBvZiBuYW1lcyB0byB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9kYXRhL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRhdGE8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogQ2hlZXJpbzxUPjtcbmV4cG9ydCBmdW5jdGlvbiBkYXRhPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgbmFtZT86IHN0cmluZyB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICB2YWx1ZT86IHVua25vd24sXG4pOiB1bmtub3duIHwgQ2hlZXJpbzxUPiB8IHVuZGVmaW5lZCB8IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgY29uc3QgZWxlbSA9IHRoaXNbMF07XG5cbiAgaWYgKCFlbGVtIHx8ICFpc1RhZyhlbGVtKSkgcmV0dXJuO1xuXG4gIGNvbnN0IGRhdGFFbDogRGF0YUVsZW1lbnQgPSBlbGVtO1xuICBkYXRhRWwuZGF0YSA/Pz0ge307XG5cbiAgLy8gUmV0dXJuIHRoZSBlbnRpcmUgZGF0YSBvYmplY3QgaWYgbm8gZGF0YSBzcGVjaWZpZWRcbiAgaWYgKG5hbWUgPT0gbnVsbCkge1xuICAgIHJldHVybiByZWFkQWxsRGF0YShkYXRhRWwpO1xuICB9XG5cbiAgLy8gU2V0IHRoZSB2YWx1ZSAod2l0aCBhdHRyIG1hcCBzdXBwb3J0KVxuICBpZiAodHlwZW9mIG5hbWUgPT09ICdvYmplY3QnIHx8IHZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICBkb21FYWNoKHRoaXMsIChlbCkgPT4ge1xuICAgICAgaWYgKGlzVGFnKGVsKSkge1xuICAgICAgICBpZiAodHlwZW9mIG5hbWUgPT09ICdvYmplY3QnKSBzZXREYXRhKGVsLCBuYW1lKTtcbiAgICAgICAgZWxzZSBzZXREYXRhKGVsLCBuYW1lLCB2YWx1ZSBhcyB1bmtub3duKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIHJldHVybiByZWFkRGF0YShkYXRhRWwsIG5hbWUpO1xufVxuXG4vKipcbiAqIE1ldGhvZCBmb3IgZ2V0dGluZyB0aGUgdmFsdWUgb2YgaW5wdXQsIHNlbGVjdCwgYW5kIHRleHRhcmVhLiBOb3RlOiBTdXBwb3J0XG4gKiBmb3IgYG1hcGAsIGFuZCBgZnVuY3Rpb25gIGhhcyBub3QgYmVlbiBhZGRlZCB5ZXQuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJ2lucHV0W3R5cGU9XCJ0ZXh0XCJdJykudmFsKCk7XG4gKiAvLz0+IGlucHV0X3RleHRcbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIFRoZSB2YWx1ZS5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vdmFsL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHZhbDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4pOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBzdHJpbmdbXTtcbi8qKlxuICogTWV0aG9kIGZvciBzZXR0aW5nIHRoZSB2YWx1ZSBvZiBpbnB1dCwgc2VsZWN0LCBhbmQgdGV4dGFyZWEuIE5vdGU6IFN1cHBvcnRcbiAqIGZvciBgbWFwYCwgYW5kIGBmdW5jdGlvbmAgaGFzIG5vdCBiZWVuIGFkZGVkIHlldC5cbiAqXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnaW5wdXRbdHlwZT1cInRleHRcIl0nKS52YWwoJ3Rlc3QnKS5odG1sKCk7XG4gKiAvLz0+IDxpbnB1dCB0eXBlPVwidGV4dFwiIHZhbHVlPVwidGVzdFwiLz5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIFRoZSBuZXcgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS92YWwvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdmFsPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgdmFsdWU6IHN0cmluZyB8IHN0cmluZ1tdLFxuKTogQ2hlZXJpbzxUPjtcbmV4cG9ydCBmdW5jdGlvbiB2YWw8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICB2YWx1ZT86IHN0cmluZyB8IHN0cmluZ1tdLFxuKTogc3RyaW5nIHwgc3RyaW5nW10gfCBDaGVlcmlvPFQ+IHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcXVlcnlpbmcgPSBhcmd1bWVudHMubGVuZ3RoID09PSAwO1xuICBjb25zdCBlbGVtZW50ID0gdGhpc1swXTtcblxuICBpZiAoIWVsZW1lbnQgfHwgIWlzVGFnKGVsZW1lbnQpKSByZXR1cm4gcXVlcnlpbmcgPyB1bmRlZmluZWQgOiB0aGlzO1xuXG4gIHN3aXRjaCAoZWxlbWVudC5uYW1lKSB7XG4gICAgY2FzZSAndGV4dGFyZWEnOiB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KHZhbHVlIGFzIHN0cmluZyk7XG4gICAgfVxuICAgIGNhc2UgJ3NlbGVjdCc6IHtcbiAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuZmluZCgnb3B0aW9uOnNlbGVjdGVkJyk7XG4gICAgICBpZiAoIXF1ZXJ5aW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmF0dHIoJ211bHRpcGxlJykgPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZpbmQoJ29wdGlvbicpLnJlbW92ZUF0dHIoJ3NlbGVjdGVkJyk7XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyA/IHZhbHVlIDogW3ZhbHVlXTtcbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgdGhpcy5maW5kKGBvcHRpb25bdmFsdWU9XCIke3ZhbH1cIl1gKS5hdHRyKCdzZWxlY3RlZCcsICcnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5hdHRyKCdtdWx0aXBsZScpXG4gICAgICAgID8gb3B0aW9uLnRvQXJyYXkoKS5tYXAoKGVsKSA9PiB0ZXh0KGVsLmNoaWxkcmVuKSlcbiAgICAgICAgOiBvcHRpb24uYXR0cigndmFsdWUnKTtcbiAgICB9XG4gICAgY2FzZSAnaW5wdXQnOlxuICAgIGNhc2UgJ29wdGlvbic6IHtcbiAgICAgIHJldHVybiBxdWVyeWluZ1xuICAgICAgICA/IHRoaXMuYXR0cigndmFsdWUnKVxuICAgICAgICA6IHRoaXMuYXR0cigndmFsdWUnLCB2YWx1ZSBhcyBzdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbi8qKlxuICogUmVtb3ZlIGFuIGF0dHJpYnV0ZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIGVsZW0gLSBOb2RlIHRvIHJlbW92ZSBhdHRyaWJ1dGUgZnJvbS5cbiAqIEBwYXJhbSBuYW1lIC0gTmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIHJlbW92ZS5cbiAqL1xuZnVuY3Rpb24gcmVtb3ZlQXR0cmlidXRlKGVsZW06IEVsZW1lbnQsIG5hbWU6IHN0cmluZykge1xuICBpZiAoIWVsZW0uYXR0cmlicyB8fCAhaGFzT3duLmNhbGwoZWxlbS5hdHRyaWJzLCBuYW1lKSkgcmV0dXJuO1xuXG4gIGRlbGV0ZSBlbGVtLmF0dHJpYnNbbmFtZV07XG59XG5cbi8qKlxuICogU3BsaXRzIGEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgbmFtZXMgdG8gaW5kaXZpZHVhbCBuYW1lcy5cbiAqXG4gKiBAY2F0ZWdvcnkgQXR0cmlidXRlc1xuICogQHBhcmFtIG5hbWVzIC0gTmFtZXMgdG8gc3BsaXQuXG4gKiBAcmV0dXJucyAtIFNwbGl0IG5hbWVzLlxuICovXG5mdW5jdGlvbiBzcGxpdE5hbWVzKG5hbWVzPzogc3RyaW5nKTogc3RyaW5nW10ge1xuICByZXR1cm4gbmFtZXMgPyBuYW1lcy50cmltKCkuc3BsaXQocnNwYWNlKSA6IFtdO1xufVxuXG4vKipcbiAqIE1ldGhvZCBmb3IgcmVtb3ZpbmcgYXR0cmlidXRlcyBieSBgbmFtZWAuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5wZWFyJykucmVtb3ZlQXR0cignY2xhc3MnKS5odG1sKCk7XG4gKiAvLz0+IDxsaT5QZWFyPC9saT5cbiAqXG4gKiAkKCcuYXBwbGUnKS5hdHRyKCdpZCcsICdmYXZvcml0ZScpO1xuICogJCgnLmFwcGxlJykucmVtb3ZlQXR0cignaWQgY2xhc3MnKS5odG1sKCk7XG4gKiAvLz0+IDxsaT5BcHBsZTwvbGk+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gbmFtZSAtIE5hbWUgb2YgdGhlIGF0dHJpYnV0ZS5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBpdHNlbGYuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3JlbW92ZUF0dHIvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQXR0cjxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWU6IHN0cmluZyxcbik6IENoZWVyaW88VD4ge1xuICBjb25zdCBhdHRyTmFtZXMgPSBzcGxpdE5hbWVzKG5hbWUpO1xuXG4gIGZvciAoY29uc3QgYXR0ck5hbWUgb2YgYXR0ck5hbWVzKSB7XG4gICAgZG9tRWFjaCh0aGlzLCAoZWxlbSkgPT4ge1xuICAgICAgaWYgKGlzVGFnKGVsZW0pKSByZW1vdmVBdHRyaWJ1dGUoZWxlbSwgYXR0ck5hbWUpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogQ2hlY2sgdG8gc2VlIGlmIF9hbnlfIG9mIHRoZSBtYXRjaGVkIGVsZW1lbnRzIGhhdmUgdGhlIGdpdmVuIGBjbGFzc05hbWVgLlxuICpcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcucGVhcicpLmhhc0NsYXNzKCdwZWFyJyk7XG4gKiAvLz0+IHRydWVcbiAqXG4gKiAkKCdhcHBsZScpLmhhc0NsYXNzKCdmcnVpdCcpO1xuICogLy89PiBmYWxzZVxuICpcbiAqICQoJ2xpJykuaGFzQ2xhc3MoJ3BlYXInKTtcbiAqIC8vPT4gdHJ1ZVxuICogYGBgXG4gKlxuICogQHBhcmFtIGNsYXNzTmFtZSAtIE5hbWUgb2YgdGhlIGNsYXNzLlxuICogQHJldHVybnMgSW5kaWNhdGVzIGlmIGFuIGVsZW1lbnQgaGFzIHRoZSBnaXZlbiBgY2xhc3NOYW1lYC5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vaGFzQ2xhc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaGFzQ2xhc3M8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBjbGFzc05hbWU6IHN0cmluZyxcbik6IGJvb2xlYW4ge1xuICByZXR1cm4gdGhpcy50b0FycmF5KCkuc29tZSgoZWxlbSkgPT4ge1xuICAgIGNvbnN0IGNsYXp6ID0gaXNUYWcoZWxlbSkgJiYgZWxlbS5hdHRyaWJzWydjbGFzcyddO1xuICAgIGxldCBpZHggPSAtMTtcblxuICAgIGlmIChjbGF6eiAmJiBjbGFzc05hbWUubGVuZ3RoID4gMCkge1xuICAgICAgd2hpbGUgKChpZHggPSBjbGF6ei5pbmRleE9mKGNsYXNzTmFtZSwgaWR4ICsgMSkpID4gLTEpIHtcbiAgICAgICAgY29uc3QgZW5kID0gaWR4ICsgY2xhc3NOYW1lLmxlbmd0aDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgKGlkeCA9PT0gMCB8fCByc3BhY2UudGVzdChjbGF6eltpZHggLSAxXSkpICYmXG4gICAgICAgICAgKGVuZCA9PT0gY2xhenoubGVuZ3RoIHx8IHJzcGFjZS50ZXN0KGNsYXp6W2VuZF0pKVxuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59XG5cbi8qKlxuICogQWRkcyBjbGFzcyhlcykgdG8gYWxsIG9mIHRoZSBtYXRjaGVkIGVsZW1lbnRzLiBBbHNvIGFjY2VwdHMgYSBgZnVuY3Rpb25gLlxuICpcbiAqIEBjYXRlZ29yeSBBdHRyaWJ1dGVzXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcucGVhcicpLmFkZENsYXNzKCdmcnVpdCcpLmh0bWwoKTtcbiAqIC8vPT4gPGxpIGNsYXNzPVwicGVhciBmcnVpdFwiPlBlYXI8L2xpPlxuICpcbiAqICQoJy5hcHBsZScpLmFkZENsYXNzKCdmcnVpdCByZWQnKS5odG1sKCk7XG4gKiAvLz0+IDxsaSBjbGFzcz1cImFwcGxlIGZydWl0IHJlZFwiPkFwcGxlPC9saT5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB2YWx1ZSAtIE5hbWUgb2YgbmV3IGNsYXNzLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vYWRkQ2xhc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gYWRkQ2xhc3M8VCBleHRlbmRzIEFueU5vZGUsIFIgZXh0ZW5kcyBBcnJheUxpa2U8VD4+KFxuICB0aGlzOiBSLFxuICB2YWx1ZT86XG4gICAgfCBzdHJpbmdcbiAgICB8ICgodGhpczogRWxlbWVudCwgaTogbnVtYmVyLCBjbGFzc05hbWU6IHN0cmluZykgPT4gc3RyaW5nIHwgdW5kZWZpbmVkKSxcbik6IFIge1xuICAvLyBTdXBwb3J0IGZ1bmN0aW9uc1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRvbUVhY2godGhpcywgKGVsLCBpKSA9PiB7XG4gICAgICBpZiAoaXNUYWcoZWwpKSB7XG4gICAgICAgIGNvbnN0IGNsYXNzTmFtZSA9IGVsLmF0dHJpYnNbJ2NsYXNzJ10gfHwgJyc7XG4gICAgICAgIGFkZENsYXNzLmNhbGwoW2VsXSwgdmFsdWUuY2FsbChlbCwgaSwgY2xhc3NOYW1lKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZXR1cm4gaWYgbm8gdmFsdWUgb3Igbm90IGEgc3RyaW5nIG9yIGZ1bmN0aW9uXG4gIGlmICghdmFsdWUgfHwgdHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykgcmV0dXJuIHRoaXM7XG5cbiAgY29uc3QgY2xhc3NOYW1lcyA9IHZhbHVlLnNwbGl0KHJzcGFjZSk7XG4gIGNvbnN0IG51bUVsZW1lbnRzID0gdGhpcy5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1FbGVtZW50czsgaSsrKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzW2ldO1xuICAgIC8vIElmIHNlbGVjdGVkIGVsZW1lbnQgaXNuJ3QgYSB0YWcsIG1vdmUgb25cbiAgICBpZiAoIWlzVGFnKGVsKSkgY29udGludWU7XG5cbiAgICAvLyBJZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgY2xhc3NlcyBcdTIwMTQgYWx3YXlzIHNldCB4bWxNb2RlIHRvIGZhbHNlIGhlcmUsIGFzIGl0IGRvZXNuJ3QgbWF0dGVyIGZvciBjbGFzc2VzXG4gICAgY29uc3QgY2xhc3NOYW1lID0gZ2V0QXR0cihlbCwgJ2NsYXNzJywgZmFsc2UpO1xuXG4gICAgaWYgKGNsYXNzTmFtZSkge1xuICAgICAgbGV0IHNldENsYXNzID0gYCAke2NsYXNzTmFtZX0gYDtcblxuICAgICAgLy8gQ2hlY2sgaWYgY2xhc3MgYWxyZWFkeSBleGlzdHNcbiAgICAgIGZvciAoY29uc3QgY24gb2YgY2xhc3NOYW1lcykge1xuICAgICAgICBjb25zdCBhcHBlbmRDbGFzcyA9IGAke2NufSBgO1xuICAgICAgICBpZiAoIXNldENsYXNzLmluY2x1ZGVzKGAgJHthcHBlbmRDbGFzc31gKSkgc2V0Q2xhc3MgKz0gYXBwZW5kQ2xhc3M7XG4gICAgICB9XG5cbiAgICAgIHNldEF0dHIoZWwsICdjbGFzcycsIHNldENsYXNzLnRyaW0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNldEF0dHIoZWwsICdjbGFzcycsIGNsYXNzTmFtZXMuam9pbignICcpLnRyaW0oKSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogUmVtb3ZlcyBvbmUgb3IgbW9yZSBzcGFjZS1zZXBhcmF0ZWQgY2xhc3NlcyBmcm9tIHRoZSBzZWxlY3RlZCBlbGVtZW50cy4gSWYgbm9cbiAqIGBjbGFzc05hbWVgIGlzIGRlZmluZWQsIGFsbCBjbGFzc2VzIHdpbGwgYmUgcmVtb3ZlZC4gQWxzbyBhY2NlcHRzIGFcbiAqIGBmdW5jdGlvbmAuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5wZWFyJykucmVtb3ZlQ2xhc3MoJ3BlYXInKS5odG1sKCk7XG4gKiAvLz0+IDxsaSBjbGFzcz1cIlwiPlBlYXI8L2xpPlxuICpcbiAqICQoJy5hcHBsZScpLmFkZENsYXNzKCdyZWQnKS5yZW1vdmVDbGFzcygpLmh0bWwoKTtcbiAqIC8vPT4gPGxpIGNsYXNzPVwiXCI+QXBwbGU8L2xpPlxuICogYGBgXG4gKlxuICogQHBhcmFtIG5hbWUgLSBOYW1lIG9mIHRoZSBjbGFzcy4gSWYgbm90IHNwZWNpZmllZCwgcmVtb3ZlcyBhbGwgZWxlbWVudHMuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9yZW1vdmVDbGFzcy99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVDbGFzczxUIGV4dGVuZHMgQW55Tm9kZSwgUiBleHRlbmRzIEFycmF5TGlrZTxUPj4oXG4gIHRoaXM6IFIsXG4gIG5hbWU/OlxuICAgIHwgc3RyaW5nXG4gICAgfCAoKHRoaXM6IEVsZW1lbnQsIGk6IG51bWJlciwgY2xhc3NOYW1lOiBzdHJpbmcpID0+IHN0cmluZyB8IHVuZGVmaW5lZCksXG4pOiBSIHtcbiAgLy8gSGFuZGxlIGlmIHZhbHVlIGlzIGEgZnVuY3Rpb25cbiAgaWYgKHR5cGVvZiBuYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGRvbUVhY2godGhpcywgKGVsLCBpKSA9PiB7XG4gICAgICBpZiAoaXNUYWcoZWwpKSB7XG4gICAgICAgIHJlbW92ZUNsYXNzLmNhbGwoW2VsXSwgbmFtZS5jYWxsKGVsLCBpLCBlbC5hdHRyaWJzWydjbGFzcyddIHx8ICcnKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBjbGFzc2VzID0gc3BsaXROYW1lcyhuYW1lKTtcbiAgY29uc3QgbnVtQ2xhc3NlcyA9IGNsYXNzZXMubGVuZ3RoO1xuICBjb25zdCByZW1vdmVBbGwgPSBhcmd1bWVudHMubGVuZ3RoID09PSAwO1xuXG4gIHJldHVybiBkb21FYWNoKHRoaXMsIChlbCkgPT4ge1xuICAgIGlmICghaXNUYWcoZWwpKSByZXR1cm47XG5cbiAgICBpZiAocmVtb3ZlQWxsKSB7XG4gICAgICAvLyBTaG9ydCBjaXJjdWl0IHRoZSByZW1vdmUgYWxsIGNhc2UgYXMgdGhpcyBpcyB0aGUgbmljZSBvbmVcbiAgICAgIGVsLmF0dHJpYnNbJ2NsYXNzJ10gPSAnJztcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZWxDbGFzc2VzID0gc3BsaXROYW1lcyhlbC5hdHRyaWJzWydjbGFzcyddKTtcbiAgICAgIGxldCBjaGFuZ2VkID0gZmFsc2U7XG5cbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtQ2xhc3NlczsgaisrKSB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gZWxDbGFzc2VzLmluZGV4T2YoY2xhc3Nlc1tqXSk7XG5cbiAgICAgICAgaWYgKGluZGV4ID49IDApIHtcbiAgICAgICAgICBlbENsYXNzZXMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTtcblxuICAgICAgICAgIC8qXG4gICAgICAgICAgICogV2UgaGF2ZSB0byBkbyBhbm90aGVyIHBhc3MgdG8gZW5zdXJlIHRoYXQgdGhlcmUgYXJlIG5vdCBkdXBsaWNhdGVcbiAgICAgICAgICAgKiBjbGFzc2VzIGxpc3RlZFxuICAgICAgICAgICAqL1xuICAgICAgICAgIGotLTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgICAgZWwuYXR0cmlic1snY2xhc3MnXSA9IGVsQ2xhc3Nlcy5qb2luKCcgJyk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cblxuLyoqXG4gKiBBZGQgb3IgcmVtb3ZlIGNsYXNzKGVzKSBmcm9tIHRoZSBtYXRjaGVkIGVsZW1lbnRzLCBkZXBlbmRpbmcgb24gZWl0aGVyIHRoZVxuICogY2xhc3MncyBwcmVzZW5jZSBvciB0aGUgdmFsdWUgb2YgdGhlIHN3aXRjaCBhcmd1bWVudC4gQWxzbyBhY2NlcHRzIGFcbiAqIGBmdW5jdGlvbmAuXG4gKlxuICogQGNhdGVnb3J5IEF0dHJpYnV0ZXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5hcHBsZS5ncmVlbicpLnRvZ2dsZUNsYXNzKCdmcnVpdCBncmVlbiByZWQnKS5odG1sKCk7XG4gKiAvLz0+IDxsaSBjbGFzcz1cImFwcGxlIGZydWl0IHJlZFwiPkFwcGxlPC9saT5cbiAqXG4gKiAkKCcuYXBwbGUuZ3JlZW4nKS50b2dnbGVDbGFzcygnZnJ1aXQgZ3JlZW4gcmVkJywgdHJ1ZSkuaHRtbCgpO1xuICogLy89PiA8bGkgY2xhc3M9XCJhcHBsZSBncmVlbiBmcnVpdCByZWRcIj5BcHBsZTwvbGk+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdmFsdWUgLSBOYW1lIG9mIHRoZSBjbGFzcy4gQ2FuIGFsc28gYmUgYSBmdW5jdGlvbi5cbiAqIEBwYXJhbSBzdGF0ZVZhbCAtIElmIHNwZWNpZmllZCB0aGUgc3RhdGUgb2YgdGhlIGNsYXNzLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vdG9nZ2xlQ2xhc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9nZ2xlQ2xhc3M8VCBleHRlbmRzIEFueU5vZGUsIFIgZXh0ZW5kcyBBcnJheUxpa2U8VD4+KFxuICB0aGlzOiBSLFxuICB2YWx1ZT86XG4gICAgfCBzdHJpbmdcbiAgICB8ICgoXG4gICAgICAgIHRoaXM6IEVsZW1lbnQsXG4gICAgICAgIGk6IG51bWJlcixcbiAgICAgICAgY2xhc3NOYW1lOiBzdHJpbmcsXG4gICAgICAgIHN0YXRlVmFsPzogYm9vbGVhbixcbiAgICAgICkgPT4gc3RyaW5nKSxcbiAgc3RhdGVWYWw/OiBib29sZWFuLFxuKTogUiB7XG4gIC8vIFN1cHBvcnQgZnVuY3Rpb25zXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwsIGkpID0+IHtcbiAgICAgIGlmIChpc1RhZyhlbCkpIHtcbiAgICAgICAgdG9nZ2xlQ2xhc3MuY2FsbChcbiAgICAgICAgICBbZWxdLFxuICAgICAgICAgIHZhbHVlLmNhbGwoZWwsIGksIGVsLmF0dHJpYnNbJ2NsYXNzJ10gfHwgJycsIHN0YXRlVmFsKSxcbiAgICAgICAgICBzdGF0ZVZhbCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJldHVybiBpZiBubyB2YWx1ZSBvciBub3QgYSBzdHJpbmcgb3IgZnVuY3Rpb25cbiAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gdGhpcztcblxuICBjb25zdCBjbGFzc05hbWVzID0gdmFsdWUuc3BsaXQocnNwYWNlKTtcbiAgY29uc3QgbnVtQ2xhc3NlcyA9IGNsYXNzTmFtZXMubGVuZ3RoO1xuICBjb25zdCBzdGF0ZSA9IHR5cGVvZiBzdGF0ZVZhbCA9PT0gJ2Jvb2xlYW4nID8gKHN0YXRlVmFsID8gMSA6IC0xKSA6IDA7XG4gIGNvbnN0IG51bUVsZW1lbnRzID0gdGhpcy5sZW5ndGg7XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1FbGVtZW50czsgaSsrKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzW2ldO1xuICAgIC8vIElmIHNlbGVjdGVkIGVsZW1lbnQgaXNuJ3QgYSB0YWcsIG1vdmUgb25cbiAgICBpZiAoIWlzVGFnKGVsKSkgY29udGludWU7XG5cbiAgICBjb25zdCBlbGVtZW50Q2xhc3NlcyA9IHNwbGl0TmFtZXMoZWwuYXR0cmlic1snY2xhc3MnXSk7XG5cbiAgICAvLyBDaGVjayBpZiBjbGFzcyBhbHJlYWR5IGV4aXN0c1xuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbnVtQ2xhc3NlczsgaisrKSB7XG4gICAgICAvLyBDaGVjayBpZiB0aGUgY2xhc3MgbmFtZSBpcyBjdXJyZW50bHkgZGVmaW5lZFxuICAgICAgY29uc3QgaW5kZXggPSBlbGVtZW50Q2xhc3Nlcy5pbmRleE9mKGNsYXNzTmFtZXNbal0pO1xuXG4gICAgICAvLyBBZGQgaWYgc3RhdGVWYWx1ZSA9PT0gdHJ1ZSBvciB3ZSBhcmUgdG9nZ2xpbmcgYW5kIHRoZXJlIGlzIG5vIHZhbHVlXG4gICAgICBpZiAoc3RhdGUgPj0gMCAmJiBpbmRleCA8IDApIHtcbiAgICAgICAgZWxlbWVudENsYXNzZXMucHVzaChjbGFzc05hbWVzW2pdKTtcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPD0gMCAmJiBpbmRleCA+PSAwKSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSByZW1vdmUgYnV0IG9ubHkgaWYgdGhlIGl0ZW0gZXhpc3RzXG4gICAgICAgIGVsZW1lbnRDbGFzc2VzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZWwuYXR0cmlic1snY2xhc3MnXSA9IGVsZW1lbnRDbGFzc2VzLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzO1xufVxuIiwgImV4cG9ydCB2YXIgU2VsZWN0b3JUeXBlO1xuKGZ1bmN0aW9uIChTZWxlY3RvclR5cGUpIHtcbiAgICBTZWxlY3RvclR5cGVbXCJBdHRyaWJ1dGVcIl0gPSBcImF0dHJpYnV0ZVwiO1xuICAgIFNlbGVjdG9yVHlwZVtcIlBzZXVkb1wiXSA9IFwicHNldWRvXCI7XG4gICAgU2VsZWN0b3JUeXBlW1wiUHNldWRvRWxlbWVudFwiXSA9IFwicHNldWRvLWVsZW1lbnRcIjtcbiAgICBTZWxlY3RvclR5cGVbXCJUYWdcIl0gPSBcInRhZ1wiO1xuICAgIFNlbGVjdG9yVHlwZVtcIlVuaXZlcnNhbFwiXSA9IFwidW5pdmVyc2FsXCI7XG4gICAgLy8gVHJhdmVyc2Fsc1xuICAgIFNlbGVjdG9yVHlwZVtcIkFkamFjZW50XCJdID0gXCJhZGphY2VudFwiO1xuICAgIFNlbGVjdG9yVHlwZVtcIkNoaWxkXCJdID0gXCJjaGlsZFwiO1xuICAgIFNlbGVjdG9yVHlwZVtcIkRlc2NlbmRhbnRcIl0gPSBcImRlc2NlbmRhbnRcIjtcbiAgICBTZWxlY3RvclR5cGVbXCJQYXJlbnRcIl0gPSBcInBhcmVudFwiO1xuICAgIFNlbGVjdG9yVHlwZVtcIlNpYmxpbmdcIl0gPSBcInNpYmxpbmdcIjtcbiAgICBTZWxlY3RvclR5cGVbXCJDb2x1bW5Db21iaW5hdG9yXCJdID0gXCJjb2x1bW4tY29tYmluYXRvclwiO1xufSkoU2VsZWN0b3JUeXBlIHx8IChTZWxlY3RvclR5cGUgPSB7fSkpO1xuLyoqXG4gKiBNb2RlcyBmb3IgaWdub3JlIGNhc2UuXG4gKlxuICogVGhpcyBjb3VsZCBiZSB1cGRhdGVkIHRvIGFuIGVudW0sIGFuZCB0aGUgb2JqZWN0IGlzXG4gKiB0aGUgY3VycmVudCBzdGFuZC1pbiB0aGF0IHdpbGwgYWxsb3cgY29kZSB0byBiZSB1cGRhdGVkXG4gKiB3aXRob3V0IGJpZyBjaGFuZ2VzLlxuICovXG5leHBvcnQgY29uc3QgSWdub3JlQ2FzZU1vZGUgPSB7XG4gICAgVW5rbm93bjogbnVsbCxcbiAgICBRdWlya3NNb2RlOiBcInF1aXJrc1wiLFxuICAgIElnbm9yZUNhc2U6IHRydWUsXG4gICAgQ2FzZVNlbnNpdGl2ZTogZmFsc2UsXG59O1xuZXhwb3J0IHZhciBBdHRyaWJ1dGVBY3Rpb247XG4oZnVuY3Rpb24gKEF0dHJpYnV0ZUFjdGlvbikge1xuICAgIEF0dHJpYnV0ZUFjdGlvbltcIkFueVwiXSA9IFwiYW55XCI7XG4gICAgQXR0cmlidXRlQWN0aW9uW1wiRWxlbWVudFwiXSA9IFwiZWxlbWVudFwiO1xuICAgIEF0dHJpYnV0ZUFjdGlvbltcIkVuZFwiXSA9IFwiZW5kXCI7XG4gICAgQXR0cmlidXRlQWN0aW9uW1wiRXF1YWxzXCJdID0gXCJlcXVhbHNcIjtcbiAgICBBdHRyaWJ1dGVBY3Rpb25bXCJFeGlzdHNcIl0gPSBcImV4aXN0c1wiO1xuICAgIEF0dHJpYnV0ZUFjdGlvbltcIkh5cGhlblwiXSA9IFwiaHlwaGVuXCI7XG4gICAgQXR0cmlidXRlQWN0aW9uW1wiTm90XCJdID0gXCJub3RcIjtcbiAgICBBdHRyaWJ1dGVBY3Rpb25bXCJTdGFydFwiXSA9IFwic3RhcnRcIjtcbn0pKEF0dHJpYnV0ZUFjdGlvbiB8fCAoQXR0cmlidXRlQWN0aW9uID0ge30pKTtcbiIsICJpbXBvcnQgeyBTZWxlY3RvclR5cGUsIEF0dHJpYnV0ZUFjdGlvbiwgfSBmcm9tIFwiLi90eXBlc1wiO1xuY29uc3QgcmVOYW1lID0gL15bXlxcXFwjXT8oPzpcXFxcKD86W1xcZGEtZl17MSw2fVxccz98Lil8W1xcd1xcLVxcdTAwYjAtXFx1RkZGRl0pKy87XG5jb25zdCByZUVzY2FwZSA9IC9cXFxcKFtcXGRhLWZdezEsNn1cXHM/fChcXHMpfC4pL2dpO1xuY29uc3QgYWN0aW9uVHlwZXMgPSBuZXcgTWFwKFtcbiAgICBbMTI2IC8qIFRpbGRlICovLCBBdHRyaWJ1dGVBY3Rpb24uRWxlbWVudF0sXG4gICAgWzk0IC8qIENpcmN1bWZsZXggKi8sIEF0dHJpYnV0ZUFjdGlvbi5TdGFydF0sXG4gICAgWzM2IC8qIERvbGxhciAqLywgQXR0cmlidXRlQWN0aW9uLkVuZF0sXG4gICAgWzQyIC8qIEFzdGVyaXNrICovLCBBdHRyaWJ1dGVBY3Rpb24uQW55XSxcbiAgICBbMzMgLyogRXhjbGFtYXRpb25NYXJrICovLCBBdHRyaWJ1dGVBY3Rpb24uTm90XSxcbiAgICBbMTI0IC8qIFBpcGUgKi8sIEF0dHJpYnV0ZUFjdGlvbi5IeXBoZW5dLFxuXSk7XG4vLyBQc2V1ZG9zLCB3aG9zZSBkYXRhIHByb3BlcnR5IGlzIHBhcnNlZCBhcyB3ZWxsLlxuY29uc3QgdW5wYWNrUHNldWRvcyA9IG5ldyBTZXQoW1xuICAgIFwiaGFzXCIsXG4gICAgXCJub3RcIixcbiAgICBcIm1hdGNoZXNcIixcbiAgICBcImlzXCIsXG4gICAgXCJ3aGVyZVwiLFxuICAgIFwiaG9zdFwiLFxuICAgIFwiaG9zdC1jb250ZXh0XCIsXG5dKTtcbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBzcGVjaWZpYyBzZWxlY3RvciBpcyBhIHRyYXZlcnNhbC5cbiAqIFRoaXMgaXMgdXNlZnVsIGVnLiBpbiBzd2FwcGluZyB0aGUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdFxuICogYXJlIG5vdCB0cmF2ZXJzYWxzLlxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciBTZWxlY3RvciB0byBjaGVjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVHJhdmVyc2FsKHNlbGVjdG9yKSB7XG4gICAgc3dpdGNoIChzZWxlY3Rvci50eXBlKSB7XG4gICAgICAgIGNhc2UgU2VsZWN0b3JUeXBlLkFkamFjZW50OlxuICAgICAgICBjYXNlIFNlbGVjdG9yVHlwZS5DaGlsZDpcbiAgICAgICAgY2FzZSBTZWxlY3RvclR5cGUuRGVzY2VuZGFudDpcbiAgICAgICAgY2FzZSBTZWxlY3RvclR5cGUuUGFyZW50OlxuICAgICAgICBjYXNlIFNlbGVjdG9yVHlwZS5TaWJsaW5nOlxuICAgICAgICBjYXNlIFNlbGVjdG9yVHlwZS5Db2x1bW5Db21iaW5hdG9yOlxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuY29uc3Qgc3RyaXBRdW90ZXNGcm9tUHNldWRvcyA9IG5ldyBTZXQoW1wiY29udGFpbnNcIiwgXCJpY29udGFpbnNcIl0pO1xuLy8gVW5lc2NhcGUgZnVuY3Rpb24gdGFrZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L3NpenpsZS9ibG9iL21hc3Rlci9zcmMvc2l6emxlLmpzI0wxNTJcbmZ1bmN0aW9uIGZ1bmVzY2FwZShfLCBlc2NhcGVkLCBlc2NhcGVkV2hpdGVzcGFjZSkge1xuICAgIGNvbnN0IGhpZ2ggPSBwYXJzZUludChlc2NhcGVkLCAxNikgLSAweDEwMDAwO1xuICAgIC8vIE5hTiBtZWFucyBub24tY29kZXBvaW50XG4gICAgcmV0dXJuIGhpZ2ggIT09IGhpZ2ggfHwgZXNjYXBlZFdoaXRlc3BhY2VcbiAgICAgICAgPyBlc2NhcGVkXG4gICAgICAgIDogaGlnaCA8IDBcbiAgICAgICAgICAgID8gLy8gQk1QIGNvZGVwb2ludFxuICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoaGlnaCArIDB4MTAwMDApXG4gICAgICAgICAgICA6IC8vIFN1cHBsZW1lbnRhbCBQbGFuZSBjb2RlcG9pbnQgKHN1cnJvZ2F0ZSBwYWlyKVxuICAgICAgICAgICAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoKGhpZ2ggPj4gMTApIHwgMHhkODAwLCAoaGlnaCAmIDB4M2ZmKSB8IDB4ZGMwMCk7XG59XG5mdW5jdGlvbiB1bmVzY2FwZUNTUyhzdHIpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UocmVFc2NhcGUsIGZ1bmVzY2FwZSk7XG59XG5mdW5jdGlvbiBpc1F1b3RlKGMpIHtcbiAgICByZXR1cm4gYyA9PT0gMzkgLyogU2luZ2xlUXVvdGUgKi8gfHwgYyA9PT0gMzQgLyogRG91YmxlUXVvdGUgKi87XG59XG5mdW5jdGlvbiBpc1doaXRlc3BhY2UoYykge1xuICAgIHJldHVybiAoYyA9PT0gMzIgLyogU3BhY2UgKi8gfHxcbiAgICAgICAgYyA9PT0gOSAvKiBUYWIgKi8gfHxcbiAgICAgICAgYyA9PT0gMTAgLyogTmV3TGluZSAqLyB8fFxuICAgICAgICBjID09PSAxMiAvKiBGb3JtRmVlZCAqLyB8fFxuICAgICAgICBjID09PSAxMyAvKiBDYXJyaWFnZVJldHVybiAqLyk7XG59XG4vKipcbiAqIFBhcnNlcyBgc2VsZWN0b3JgLCBvcHRpb25hbGx5IHdpdGggdGhlIHBhc3NlZCBgb3B0aW9uc2AuXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIFNlbGVjdG9yIHRvIHBhcnNlLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgcGFyc2luZy5cbiAqIEByZXR1cm5zIFJldHVybnMgYSB0d28tZGltZW5zaW9uYWwgYXJyYXkuXG4gKiBUaGUgZmlyc3QgZGltZW5zaW9uIHJlcHJlc2VudHMgc2VsZWN0b3JzIHNlcGFyYXRlZCBieSBjb21tYXMgKGVnLiBgc3ViMSwgc3ViMmApLFxuICogdGhlIHNlY29uZCBjb250YWlucyB0aGUgcmVsZXZhbnQgdG9rZW5zIGZvciB0aGF0IHNlbGVjdG9yLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uoc2VsZWN0b3IpIHtcbiAgICBjb25zdCBzdWJzZWxlY3RzID0gW107XG4gICAgY29uc3QgZW5kSW5kZXggPSBwYXJzZVNlbGVjdG9yKHN1YnNlbGVjdHMsIGAke3NlbGVjdG9yfWAsIDApO1xuICAgIGlmIChlbmRJbmRleCA8IHNlbGVjdG9yLmxlbmd0aCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVubWF0Y2hlZCBzZWxlY3RvcjogJHtzZWxlY3Rvci5zbGljZShlbmRJbmRleCl9YCk7XG4gICAgfVxuICAgIHJldHVybiBzdWJzZWxlY3RzO1xufVxuZnVuY3Rpb24gcGFyc2VTZWxlY3RvcihzdWJzZWxlY3RzLCBzZWxlY3Rvciwgc2VsZWN0b3JJbmRleCkge1xuICAgIGxldCB0b2tlbnMgPSBbXTtcbiAgICBmdW5jdGlvbiBnZXROYW1lKG9mZnNldCkge1xuICAgICAgICBjb25zdCBtYXRjaCA9IHNlbGVjdG9yLnNsaWNlKHNlbGVjdG9ySW5kZXggKyBvZmZzZXQpLm1hdGNoKHJlTmFtZSk7XG4gICAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgbmFtZSwgZm91bmQgJHtzZWxlY3Rvci5zbGljZShzZWxlY3RvckluZGV4KX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBbbmFtZV0gPSBtYXRjaDtcbiAgICAgICAgc2VsZWN0b3JJbmRleCArPSBvZmZzZXQgKyBuYW1lLmxlbmd0aDtcbiAgICAgICAgcmV0dXJuIHVuZXNjYXBlQ1NTKG5hbWUpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBzdHJpcFdoaXRlc3BhY2Uob2Zmc2V0KSB7XG4gICAgICAgIHNlbGVjdG9ySW5kZXggKz0gb2Zmc2V0O1xuICAgICAgICB3aGlsZSAoc2VsZWN0b3JJbmRleCA8IHNlbGVjdG9yLmxlbmd0aCAmJlxuICAgICAgICAgICAgaXNXaGl0ZXNwYWNlKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkpKSB7XG4gICAgICAgICAgICBzZWxlY3RvckluZGV4Kys7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcmVhZFZhbHVlV2l0aFBhcmVudGhlc2lzKCkge1xuICAgICAgICBzZWxlY3RvckluZGV4ICs9IDE7XG4gICAgICAgIGNvbnN0IHN0YXJ0ID0gc2VsZWN0b3JJbmRleDtcbiAgICAgICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgICAgICBmb3IgKDsgY291bnRlciA+IDAgJiYgc2VsZWN0b3JJbmRleCA8IHNlbGVjdG9yLmxlbmd0aDsgc2VsZWN0b3JJbmRleCsrKSB7XG4gICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSA9PT1cbiAgICAgICAgICAgICAgICA0MCAvKiBMZWZ0UGFyZW50aGVzaXMgKi8gJiZcbiAgICAgICAgICAgICAgICAhaXNFc2NhcGVkKHNlbGVjdG9ySW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgY291bnRlcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSA9PT1cbiAgICAgICAgICAgICAgICA0MSAvKiBSaWdodFBhcmVudGhlc2lzICovICYmXG4gICAgICAgICAgICAgICAgIWlzRXNjYXBlZChzZWxlY3RvckluZGV4KSkge1xuICAgICAgICAgICAgICAgIGNvdW50ZXItLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoY291bnRlcikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGFyZW50aGVzaXMgbm90IG1hdGNoZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHVuZXNjYXBlQ1NTKHNlbGVjdG9yLnNsaWNlKHN0YXJ0LCBzZWxlY3RvckluZGV4IC0gMSkpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpc0VzY2FwZWQocG9zKSB7XG4gICAgICAgIGxldCBzbGFzaENvdW50ID0gMDtcbiAgICAgICAgd2hpbGUgKHNlbGVjdG9yLmNoYXJDb2RlQXQoLS1wb3MpID09PSA5MiAvKiBCYWNrU2xhc2ggKi8pXG4gICAgICAgICAgICBzbGFzaENvdW50Kys7XG4gICAgICAgIHJldHVybiAoc2xhc2hDb3VudCAmIDEpID09PSAxO1xuICAgIH1cbiAgICBmdW5jdGlvbiBlbnN1cmVOb3RUcmF2ZXJzYWwoKSB7XG4gICAgICAgIGlmICh0b2tlbnMubGVuZ3RoID4gMCAmJiBpc1RyYXZlcnNhbCh0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRGlkIG5vdCBleHBlY3Qgc3VjY2Vzc2l2ZSB0cmF2ZXJzYWxzLlwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBhZGRUcmF2ZXJzYWwodHlwZSkge1xuICAgICAgICBpZiAodG9rZW5zLmxlbmd0aCA+IDAgJiZcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9PT0gU2VsZWN0b3JUeXBlLkRlc2NlbmRhbnQpIHtcbiAgICAgICAgICAgIHRva2Vuc1t0b2tlbnMubGVuZ3RoIC0gMV0udHlwZSA9IHR5cGU7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZW5zdXJlTm90VHJhdmVyc2FsKCk7XG4gICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZSB9KTtcbiAgICB9XG4gICAgZnVuY3Rpb24gYWRkU3BlY2lhbEF0dHJpYnV0ZShuYW1lLCBhY3Rpb24pIHtcbiAgICAgICAgdG9rZW5zLnB1c2goe1xuICAgICAgICAgICAgdHlwZTogU2VsZWN0b3JUeXBlLkF0dHJpYnV0ZSxcbiAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICBhY3Rpb24sXG4gICAgICAgICAgICB2YWx1ZTogZ2V0TmFtZSgxKSxcbiAgICAgICAgICAgIG5hbWVzcGFjZTogbnVsbCxcbiAgICAgICAgICAgIGlnbm9yZUNhc2U6IFwicXVpcmtzXCIsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBXZSBoYXZlIGZpbmlzaGVkIHBhcnNpbmcgdGhlIGN1cnJlbnQgcGFydCBvZiB0aGUgc2VsZWN0b3IuXG4gICAgICpcbiAgICAgKiBSZW1vdmUgZGVzY2VuZGFudCB0b2tlbnMgYXQgdGhlIGVuZCBpZiB0aGV5IGV4aXN0LFxuICAgICAqIGFuZCByZXR1cm4gdGhlIGxhc3QgaW5kZXgsIHNvIHRoYXQgcGFyc2luZyBjYW4gYmVcbiAgICAgKiBwaWNrZWQgdXAgZnJvbSBoZXJlLlxuICAgICAqL1xuICAgIGZ1bmN0aW9uIGZpbmFsaXplU3Vic2VsZWN0b3IoKSB7XG4gICAgICAgIGlmICh0b2tlbnMubGVuZ3RoICYmXG4gICAgICAgICAgICB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdLnR5cGUgPT09IFNlbGVjdG9yVHlwZS5EZXNjZW5kYW50KSB7XG4gICAgICAgICAgICB0b2tlbnMucG9wKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVtcHR5IHN1Yi1zZWxlY3RvclwiKTtcbiAgICAgICAgfVxuICAgICAgICBzdWJzZWxlY3RzLnB1c2godG9rZW5zKTtcbiAgICB9XG4gICAgc3RyaXBXaGl0ZXNwYWNlKDApO1xuICAgIGlmIChzZWxlY3Rvci5sZW5ndGggPT09IHNlbGVjdG9ySW5kZXgpIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdG9ySW5kZXg7XG4gICAgfVxuICAgIGxvb3A6IHdoaWxlIChzZWxlY3RvckluZGV4IDwgc2VsZWN0b3IubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGZpcnN0Q2hhciA9IHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCk7XG4gICAgICAgIHN3aXRjaCAoZmlyc3RDaGFyKSB7XG4gICAgICAgICAgICAvLyBXaGl0ZXNwYWNlXG4gICAgICAgICAgICBjYXNlIDMyIC8qIFNwYWNlICovOlxuICAgICAgICAgICAgY2FzZSA5IC8qIFRhYiAqLzpcbiAgICAgICAgICAgIGNhc2UgMTAgLyogTmV3TGluZSAqLzpcbiAgICAgICAgICAgIGNhc2UgMTIgLyogRm9ybUZlZWQgKi86XG4gICAgICAgICAgICBjYXNlIDEzIC8qIENhcnJpYWdlUmV0dXJuICovOiB7XG4gICAgICAgICAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDAgfHxcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5zWzBdLnR5cGUgIT09IFNlbGVjdG9yVHlwZS5EZXNjZW5kYW50KSB7XG4gICAgICAgICAgICAgICAgICAgIGVuc3VyZU5vdFRyYXZlcnNhbCgpO1xuICAgICAgICAgICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IFNlbGVjdG9yVHlwZS5EZXNjZW5kYW50IH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBUcmF2ZXJzYWxzXG4gICAgICAgICAgICBjYXNlIDYyIC8qIEdyZWF0ZXJUaGFuICovOiB7XG4gICAgICAgICAgICAgICAgYWRkVHJhdmVyc2FsKFNlbGVjdG9yVHlwZS5DaGlsZCk7XG4gICAgICAgICAgICAgICAgc3RyaXBXaGl0ZXNwYWNlKDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA2MCAvKiBMZXNzVGhhbiAqLzoge1xuICAgICAgICAgICAgICAgIGFkZFRyYXZlcnNhbChTZWxlY3RvclR5cGUuUGFyZW50KTtcbiAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIDEyNiAvKiBUaWxkZSAqLzoge1xuICAgICAgICAgICAgICAgIGFkZFRyYXZlcnNhbChTZWxlY3RvclR5cGUuU2libGluZyk7XG4gICAgICAgICAgICAgICAgc3RyaXBXaGl0ZXNwYWNlKDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA0MyAvKiBQbHVzICovOiB7XG4gICAgICAgICAgICAgICAgYWRkVHJhdmVyc2FsKFNlbGVjdG9yVHlwZS5BZGphY2VudCk7XG4gICAgICAgICAgICAgICAgc3RyaXBXaGl0ZXNwYWNlKDEpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU3BlY2lhbCBhdHRyaWJ1dGUgc2VsZWN0b3JzOiAuY2xhc3MsICNpZFxuICAgICAgICAgICAgY2FzZSA0NiAvKiBQZXJpb2QgKi86IHtcbiAgICAgICAgICAgICAgICBhZGRTcGVjaWFsQXR0cmlidXRlKFwiY2xhc3NcIiwgQXR0cmlidXRlQWN0aW9uLkVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBIYXNoICovOiB7XG4gICAgICAgICAgICAgICAgYWRkU3BlY2lhbEF0dHJpYnV0ZShcImlkXCIsIEF0dHJpYnV0ZUFjdGlvbi5FcXVhbHMpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA5MSAvKiBMZWZ0U3F1YXJlQnJhY2tldCAqLzoge1xuICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgxKTtcbiAgICAgICAgICAgICAgICAvLyBEZXRlcm1pbmUgYXR0cmlidXRlIG5hbWUgYW5kIG5hbWVzcGFjZVxuICAgICAgICAgICAgICAgIGxldCBuYW1lO1xuICAgICAgICAgICAgICAgIGxldCBuYW1lc3BhY2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpID09PSAxMjQgLyogUGlwZSAqLykge1xuICAgICAgICAgICAgICAgICAgICAvLyBFcXVpdmFsZW50IHRvIG5vIG5hbWVzcGFjZVxuICAgICAgICAgICAgICAgICAgICBuYW1lID0gZ2V0TmFtZSgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2VsZWN0b3Iuc3RhcnRzV2l0aChcIip8XCIsIHNlbGVjdG9ySW5kZXgpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZSA9IFwiKlwiO1xuICAgICAgICAgICAgICAgICAgICBuYW1lID0gZ2V0TmFtZSgyKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBnZXROYW1lKDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSA9PT0gMTI0IC8qIFBpcGUgKi8gJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCArIDEpICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYxIC8qIEVxdWFsICovKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lc3BhY2UgPSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGdldE5hbWUoMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3RyaXBXaGl0ZXNwYWNlKDApO1xuICAgICAgICAgICAgICAgIC8vIERldGVybWluZSBjb21wYXJpc29uIG9wZXJhdGlvblxuICAgICAgICAgICAgICAgIGxldCBhY3Rpb24gPSBBdHRyaWJ1dGVBY3Rpb24uRXhpc3RzO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBvc3NpYmxlQWN0aW9uID0gYWN0aW9uVHlwZXMuZ2V0KHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkpO1xuICAgICAgICAgICAgICAgIGlmIChwb3NzaWJsZUFjdGlvbikge1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBwb3NzaWJsZUFjdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCArIDEpICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgNjEgLyogRXF1YWwgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkV4cGVjdGVkIGA9YFwiKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkgPT09IDYxIC8qIEVxdWFsICovKSB7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IEF0dHJpYnV0ZUFjdGlvbi5FcXVhbHM7XG4gICAgICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHZhbHVlXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlID0gXCJcIjtcbiAgICAgICAgICAgICAgICBsZXQgaWdub3JlQ2FzZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKGFjdGlvbiAhPT0gXCJleGlzdHNcIikge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNRdW90ZShzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcXVvdGUgPSBzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlY3Rpb25FbmQgPSBzZWxlY3RvckluZGV4ICsgMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzZWN0aW9uRW5kIDwgc2VsZWN0b3IubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VjdGlvbkVuZCkgIT09IHF1b3RlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRXNjYXBlZChzZWN0aW9uRW5kKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uRW5kICs9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWN0aW9uRW5kKSAhPT0gcXVvdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdHRyaWJ1dGUgdmFsdWUgZGlkbid0IGVuZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdW5lc2NhcGVDU1Moc2VsZWN0b3Iuc2xpY2Uoc2VsZWN0b3JJbmRleCArIDEsIHNlY3Rpb25FbmQpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ySW5kZXggPSBzZWN0aW9uRW5kICsgMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlU3RhcnQgPSBzZWxlY3RvckluZGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHNlbGVjdG9ySW5kZXggPCBzZWxlY3Rvci5sZW5ndGggJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCFpc1doaXRlc3BhY2Uoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSAhPT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkzIC8qIFJpZ2h0U3F1YXJlQnJhY2tldCAqLykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNFc2NhcGVkKHNlbGVjdG9ySW5kZXgpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ySW5kZXggKz0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdW5lc2NhcGVDU1Moc2VsZWN0b3Iuc2xpY2UodmFsdWVTdGFydCwgc2VsZWN0b3JJbmRleCkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHdlIGhhdmUgYSBmb3JjZSBpZ25vcmUgZmxhZ1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmb3JjZUlnbm9yZSA9IHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkgfCAweDIwO1xuICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZm9yY2VJZ25vcmUgZmxhZyBpcyBzZXQgKGVpdGhlciBgaWAgb3IgYHNgKSwgdXNlIHRoYXQgdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZvcmNlSWdub3JlID09PSAxMTUgLyogTG93ZXJTICovKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9yY2VJZ25vcmUgPT09IDEwNSAvKiBMb3dlckkgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZUNhc2UgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBXaGl0ZXNwYWNlKDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpICE9PVxuICAgICAgICAgICAgICAgICAgICA5MyAvKiBSaWdodFNxdWFyZUJyYWNrZXQgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQXR0cmlidXRlIHNlbGVjdG9yIGRpZG4ndCB0ZXJtaW5hdGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNlbGVjdG9ySW5kZXggKz0gMTtcbiAgICAgICAgICAgICAgICBjb25zdCBhdHRyaWJ1dGVTZWxlY3RvciA9IHtcbiAgICAgICAgICAgICAgICAgICAgdHlwZTogU2VsZWN0b3JUeXBlLkF0dHJpYnV0ZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlLFxuICAgICAgICAgICAgICAgICAgICBpZ25vcmVDYXNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goYXR0cmlidXRlU2VsZWN0b3IpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA1OCAvKiBDb2xvbiAqLzoge1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXggKyAxKSA9PT0gNTggLyogQ29sb24gKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogU2VsZWN0b3JUeXBlLlBzZXVkb0VsZW1lbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZXROYW1lKDIpLnRvTG93ZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiBzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQwIC8qIExlZnRQYXJlbnRoZXNpcyAqL1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcmVhZFZhbHVlV2l0aFBhcmVudGhlc2lzKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgbmFtZSA9IGdldE5hbWUoMSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCkgPT09XG4gICAgICAgICAgICAgICAgICAgIDQwIC8qIExlZnRQYXJlbnRoZXNpcyAqLykge1xuICAgICAgICAgICAgICAgICAgICBpZiAodW5wYWNrUHNldWRvcy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1F1b3RlKHNlbGVjdG9yLmNoYXJDb2RlQXQoc2VsZWN0b3JJbmRleCArIDEpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgUHNldWRvLXNlbGVjdG9yICR7bmFtZX0gY2Fubm90IGJlIHF1b3RlZGApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFtdO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JJbmRleCA9IHBhcnNlU2VsZWN0b3IoZGF0YSwgc2VsZWN0b3IsIHNlbGVjdG9ySW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXgpICE9PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQxIC8qIFJpZ2h0UGFyZW50aGVzaXMgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgY2xvc2luZyBwYXJlbnRoZXNpcyBpbiA6JHtuYW1lfSAoJHtzZWxlY3Rvcn0pYCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvckluZGV4ICs9IDE7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gcmVhZFZhbHVlV2l0aFBhcmVudGhlc2lzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyaXBRdW90ZXNGcm9tUHNldWRvcy5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBxdW90ID0gZGF0YS5jaGFyQ29kZUF0KDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdW90ID09PSBkYXRhLmNoYXJDb2RlQXQoZGF0YS5sZW5ndGggLSAxKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1F1b3RlKHF1b3QpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhLnNsaWNlKDEsIC0xKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gdW5lc2NhcGVDU1MoZGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiBTZWxlY3RvclR5cGUuUHNldWRvLCBuYW1lLCBkYXRhIH0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSA0NCAvKiBDb21tYSAqLzoge1xuICAgICAgICAgICAgICAgIGZpbmFsaXplU3Vic2VsZWN0b3IoKTtcbiAgICAgICAgICAgICAgICB0b2tlbnMgPSBbXTtcbiAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdG9yLnN0YXJ0c1dpdGgoXCIvKlwiLCBzZWxlY3RvckluZGV4KSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBlbmRJbmRleCA9IHNlbGVjdG9yLmluZGV4T2YoXCIqL1wiLCBzZWxlY3RvckluZGV4ICsgMik7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlbmRJbmRleCA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbW1lbnQgd2FzIG5vdCB0ZXJtaW5hdGVkXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHNlbGVjdG9ySW5kZXggPSBlbmRJbmRleCArIDI7XG4gICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBsZWFkaW5nIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2Vucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlwV2hpdGVzcGFjZSgwKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGV0IG5hbWVzcGFjZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWU7XG4gICAgICAgICAgICAgICAgaWYgKGZpcnN0Q2hhciA9PT0gNDIgLyogQXN0ZXJpc2sgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3JJbmRleCArPSAxO1xuICAgICAgICAgICAgICAgICAgICBuYW1lID0gXCIqXCI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGZpcnN0Q2hhciA9PT0gMTI0IC8qIFBpcGUgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXggKyAxKSA9PT0gMTI0IC8qIFBpcGUgKi8pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZFRyYXZlcnNhbChTZWxlY3RvclR5cGUuQ29sdW1uQ29tYmluYXRvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHJpcFdoaXRlc3BhY2UoMik7XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChyZU5hbWUudGVzdChzZWxlY3Rvci5zbGljZShzZWxlY3RvckluZGV4KSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGdldE5hbWUoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBicmVhayBsb29wO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4KSA9PT0gMTI0IC8qIFBpcGUgKi8gJiZcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuY2hhckNvZGVBdChzZWxlY3RvckluZGV4ICsgMSkgIT09IDEyNCAvKiBQaXBlICovKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWVzcGFjZSA9IG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5jaGFyQ29kZUF0KHNlbGVjdG9ySW5kZXggKyAxKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIDQyIC8qIEFzdGVyaXNrICovKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gXCIqXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RvckluZGV4ICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gZ2V0TmFtZSgxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b2tlbnMucHVzaChuYW1lID09PSBcIipcIlxuICAgICAgICAgICAgICAgICAgICA/IHsgdHlwZTogU2VsZWN0b3JUeXBlLlVuaXZlcnNhbCwgbmFtZXNwYWNlIH1cbiAgICAgICAgICAgICAgICAgICAgOiB7IHR5cGU6IFNlbGVjdG9yVHlwZS5UYWcsIG5hbWUsIG5hbWVzcGFjZSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBmaW5hbGl6ZVN1YnNlbGVjdG9yKCk7XG4gICAgcmV0dXJuIHNlbGVjdG9ySW5kZXg7XG59XG4iLCAiZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCB7IGlzVHJhdmVyc2FsLCBwYXJzZSB9IGZyb20gXCIuL3BhcnNlXCI7XG5leHBvcnQgeyBzdHJpbmdpZnkgfSBmcm9tIFwiLi9zdHJpbmdpZnlcIjtcbiIsICJtb2R1bGUuZXhwb3J0cyA9IHtcblx0dHJ1ZUZ1bmM6IGZ1bmN0aW9uIHRydWVGdW5jKCl7XG5cdFx0cmV0dXJuIHRydWU7XG5cdH0sXG5cdGZhbHNlRnVuYzogZnVuY3Rpb24gZmFsc2VGdW5jKCl7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59OyIsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwsICIvKipcbiAqIE1ldGhvZHMgZm9yIHRyYXZlcnNpbmcgdGhlIERPTSBzdHJ1Y3R1cmUuXG4gKlxuICogQG1vZHVsZSBjaGVlcmlvL3RyYXZlcnNpbmdcbiAqL1xuXG5pbXBvcnQge1xuICBpc1RhZyxcbiAgdHlwZSBBbnlOb2RlLFxuICB0eXBlIEVsZW1lbnQsXG4gIGhhc0NoaWxkcmVuLFxuICBpc0RvY3VtZW50LFxuICB0eXBlIERvY3VtZW50LFxufSBmcm9tICdkb21oYW5kbGVyJztcbmltcG9ydCB0eXBlIHsgQ2hlZXJpbyB9IGZyb20gJy4uL2NoZWVyaW8uanMnO1xuaW1wb3J0ICogYXMgc2VsZWN0IGZyb20gJ2NoZWVyaW8tc2VsZWN0JztcbmltcG9ydCB7IGRvbUVhY2gsIGlzQ2hlZXJpbyB9IGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCB7IGNvbnRhaW5zIH0gZnJvbSAnLi4vc3RhdGljLmpzJztcbmltcG9ydCB7XG4gIGdldENoaWxkcmVuLFxuICBnZXRTaWJsaW5ncyxcbiAgbmV4dEVsZW1lbnRTaWJsaW5nLFxuICBwcmV2RWxlbWVudFNpYmxpbmcsXG4gIHVuaXF1ZVNvcnQsXG59IGZyb20gJ2RvbXV0aWxzJztcbmltcG9ydCB0eXBlIHsgRmlsdGVyRnVuY3Rpb24sIEFjY2VwdGVkRmlsdGVycyB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmNvbnN0IHJlU2libGluZ1NlbGVjdG9yID0gL15cXHMqWyt+XS87XG5cbi8qKlxuICogR2V0IHRoZSBkZXNjZW5kYW50cyBvZiBlYWNoIGVsZW1lbnQgaW4gdGhlIGN1cnJlbnQgc2V0IG9mIG1hdGNoZWQgZWxlbWVudHMsXG4gKiBmaWx0ZXJlZCBieSBhIHNlbGVjdG9yLCBqUXVlcnkgb2JqZWN0LCBvciBlbGVtZW50LlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcjZnJ1aXRzJykuZmluZCgnbGknKS5sZW5ndGg7XG4gKiAvLz0+IDNcbiAqICQoJyNmcnVpdHMnKS5maW5kKCQoJy5hcHBsZScpKS5sZW5ndGg7XG4gKiAvLz0+IDFcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzZWxlY3Rvck9ySGF5c3RhY2sgLSBFbGVtZW50IHRvIGxvb2sgZm9yLlxuICogQHJldHVybnMgVGhlIGZvdW5kIGVsZW1lbnRzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9maW5kL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmQ8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvck9ySGF5c3RhY2s/OiBzdHJpbmcgfCBDaGVlcmlvPEVsZW1lbnQ+IHwgRWxlbWVudCxcbik6IENoZWVyaW88RWxlbWVudD4ge1xuICBpZiAoIXNlbGVjdG9yT3JIYXlzdGFjaykge1xuICAgIHJldHVybiB0aGlzLl9tYWtlKFtdKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygc2VsZWN0b3JPckhheXN0YWNrICE9PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGhheXN0YWNrID0gaXNDaGVlcmlvKHNlbGVjdG9yT3JIYXlzdGFjaylcbiAgICAgID8gc2VsZWN0b3JPckhheXN0YWNrLnRvQXJyYXkoKVxuICAgICAgOiBbc2VsZWN0b3JPckhheXN0YWNrXTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLnRvQXJyYXkoKTtcblxuICAgIHJldHVybiB0aGlzLl9tYWtlKFxuICAgICAgaGF5c3RhY2suZmlsdGVyKChlbGVtKSA9PiBjb250ZXh0LnNvbWUoKG5vZGUpID0+IGNvbnRhaW5zKG5vZGUsIGVsZW0pKSksXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiB0aGlzLl9maW5kQnlTZWxlY3RvcihzZWxlY3Rvck9ySGF5c3RhY2ssIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSk7XG59XG5cbi8qKlxuICogRmluZCBlbGVtZW50cyBieSBhIHNwZWNpZmljIHNlbGVjdG9yLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQHBhcmFtIHNlbGVjdG9yIC0gU2VsZWN0b3IgdG8gZmlsdGVyIGJ5LlxuICogQHBhcmFtIGxpbWl0IC0gTWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgdG8gbWF0Y2guXG4gKiBAcmV0dXJucyBUaGUgZm91bmQgZWxlbWVudHMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBfZmluZEJ5U2VsZWN0b3I8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvcjogc3RyaW5nLFxuICBsaW1pdDogbnVtYmVyLFxuKTogQ2hlZXJpbzxFbGVtZW50PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB0aGlzLnRvQXJyYXkoKTtcblxuICBjb25zdCBlbGVtcyA9IHJlU2libGluZ1NlbGVjdG9yLnRlc3Qoc2VsZWN0b3IpXG4gICAgPyBjb250ZXh0XG4gICAgOiB0aGlzLmNoaWxkcmVuKCkudG9BcnJheSgpO1xuXG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgY29udGV4dCxcbiAgICByb290OiB0aGlzLl9yb290Py5bMF0sXG5cbiAgICAvLyBQYXNzIG9wdGlvbnMgdGhhdCBhcmUgcmVjb2duaXplZCBieSBgY2hlZXJpby1zZWxlY3RgXG4gICAgeG1sTW9kZTogdGhpcy5vcHRpb25zLnhtbE1vZGUsXG4gICAgbG93ZXJDYXNlVGFnczogdGhpcy5vcHRpb25zLmxvd2VyQ2FzZVRhZ3MsXG4gICAgbG93ZXJDYXNlQXR0cmlidXRlTmFtZXM6IHRoaXMub3B0aW9ucy5sb3dlckNhc2VBdHRyaWJ1dGVOYW1lcyxcbiAgICBwc2V1ZG9zOiB0aGlzLm9wdGlvbnMucHNldWRvcyxcbiAgICBxdWlya3NNb2RlOiB0aGlzLm9wdGlvbnMucXVpcmtzTW9kZSxcbiAgfTtcblxuICByZXR1cm4gdGhpcy5fbWFrZShzZWxlY3Quc2VsZWN0KHNlbGVjdG9yLCBlbGVtcywgb3B0aW9ucywgbGltaXQpKTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgbWF0Y2hlciwgdXNpbmcgYSBwYXJ0aWN1bGFyIG1hcHBpbmcgZnVuY3Rpb24uIE1hdGNoZXJzIHByb3ZpZGUgYVxuICogZnVuY3Rpb24gdGhhdCBmaW5kcyBlbGVtZW50cyB1c2luZyBhIGdlbmVyYXRpbmcgZnVuY3Rpb24sIHN1cHBvcnRpbmdcbiAqIGZpbHRlcmluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIG1hdGNoTWFwIC0gTWFwcGluZyBmdW5jdGlvbi5cbiAqIEByZXR1cm5zIC0gRnVuY3Rpb24gZm9yIHdyYXBwaW5nIGdlbmVyYXRpbmcgZnVuY3Rpb25zLlxuICovXG5mdW5jdGlvbiBfZ2V0TWF0Y2hlcjxQPihcbiAgbWF0Y2hNYXA6IChmbjogKGVsZW06IEFueU5vZGUpID0+IFAsIGVsZW1zOiBDaGVlcmlvPEFueU5vZGU+KSA9PiBFbGVtZW50W10sXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChcbiAgICBmbjogKGVsZW06IEFueU5vZGUpID0+IFAsXG4gICAgLi4ucG9zdEZuczogKChlbGVtczogRWxlbWVudFtdKSA9PiBFbGVtZW50W10pW11cbiAgKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gICAgICB0aGlzOiBDaGVlcmlvPFQ+LFxuICAgICAgc2VsZWN0b3I/OiBBY2NlcHRlZEZpbHRlcnM8RWxlbWVudD4sXG4gICAgKTogQ2hlZXJpbzxFbGVtZW50PiB7XG4gICAgICBsZXQgbWF0Y2hlZDogRWxlbWVudFtdID0gbWF0Y2hNYXAoZm4sIHRoaXMpO1xuXG4gICAgICBpZiAoc2VsZWN0b3IpIHtcbiAgICAgICAgbWF0Y2hlZCA9IGZpbHRlckFycmF5KFxuICAgICAgICAgIG1hdGNoZWQsXG4gICAgICAgICAgc2VsZWN0b3IsXG4gICAgICAgICAgdGhpcy5vcHRpb25zLnhtbE1vZGUsXG4gICAgICAgICAgdGhpcy5fcm9vdD8uWzBdLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fbWFrZShcbiAgICAgICAgLy8gUG9zdCBwcm9jZXNzaW5nIGlzIG9ubHkgbmVjZXNzYXJ5IGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgZWxlbWVudC5cbiAgICAgICAgdGhpcy5sZW5ndGggPiAxICYmIG1hdGNoZWQubGVuZ3RoID4gMVxuICAgICAgICAgID8gcG9zdEZucy5yZWR1Y2UoKGVsZW1zLCBmbikgPT4gZm4oZWxlbXMpLCBtYXRjaGVkKVxuICAgICAgICAgIDogbWF0Y2hlZCxcbiAgICAgICk7XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqIE1hdGNoZXIgdGhhdCBhZGRzIG11bHRpcGxlIGVsZW1lbnRzIGZvciBlYWNoIGVudHJ5IGluIHRoZSBpbnB1dC4gKi9cbmNvbnN0IF9tYXRjaGVyID0gX2dldE1hdGNoZXIoKGZuOiAoZWxlbTogQW55Tm9kZSkgPT4gRWxlbWVudFtdLCBlbGVtcykgPT4ge1xuICBsZXQgcmV0OiBFbGVtZW50W10gPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdmFsdWUgPSBmbihlbGVtc1tpXSk7XG4gICAgaWYgKHZhbHVlLmxlbmd0aCA+IDApIHJldCA9IHJldC5jb25jYXQodmFsdWUpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn0pO1xuXG4vKiogTWF0Y2hlciB0aGF0IGFkZHMgYXQgbW9zdCBvbmUgZWxlbWVudCBmb3IgZWFjaCBlbnRyeSBpbiB0aGUgaW5wdXQuICovXG5jb25zdCBfc2luZ2xlTWF0Y2hlciA9IF9nZXRNYXRjaGVyKFxuICAoZm46IChlbGVtOiBBbnlOb2RlKSA9PiBFbGVtZW50IHwgbnVsbCwgZWxlbXMpID0+IHtcbiAgICBjb25zdCByZXQ6IEVsZW1lbnRbXSA9IFtdO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgdmFsdWUgPSBmbihlbGVtc1tpXSk7XG4gICAgICBpZiAodmFsdWUgIT09IG51bGwpIHtcbiAgICAgICAgcmV0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuKTtcblxuLyoqXG4gKiBNYXRjaGVyIHRoYXQgc3VwcG9ydHMgdHJhdmVyc2luZyB1bnRpbCBhIGNvbmRpdGlvbiBpcyBtZXQuXG4gKlxuICogQHBhcmFtIG5leHRFbGVtIC0gRnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IGVsZW1lbnQuXG4gKiBAcGFyYW0gcG9zdEZucyAtIFBvc3QgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHVzYWJsZSBmb3IgYCpVbnRpbGAgbWV0aG9kcy5cbiAqL1xuZnVuY3Rpb24gX21hdGNoVW50aWwoXG4gIG5leHRFbGVtOiAoZWxlbTogQW55Tm9kZSkgPT4gRWxlbWVudCB8IG51bGwsXG4gIC4uLnBvc3RGbnM6ICgoZWxlbXM6IEVsZW1lbnRbXSkgPT4gRWxlbWVudFtdKVtdXG4pIHtcbiAgLy8gV2UgdXNlIGEgdmFyaWFibGUgaGVyZSB0aGF0IGlzIHVzZWQgZnJvbSB3aXRoaW4gdGhlIG1hdGNoZXIuXG4gIGxldCBtYXRjaGVzOiAoKGVsOiBFbGVtZW50LCBpOiBudW1iZXIpID0+IGJvb2xlYW4pIHwgbnVsbCA9IG51bGw7XG5cbiAgY29uc3QgaW5uZXJNYXRjaGVyID0gX2dldE1hdGNoZXIoXG4gICAgKG5leHRFbGVtOiAoZWxlbTogQW55Tm9kZSkgPT4gRWxlbWVudCB8IG51bGwsIGVsZW1zKSA9PiB7XG4gICAgICBjb25zdCBtYXRjaGVkOiBFbGVtZW50W10gPSBbXTtcblxuICAgICAgZG9tRWFjaChlbGVtcywgKGVsZW0pID0+IHtcbiAgICAgICAgZm9yIChsZXQgbmV4dDsgKG5leHQgPSBuZXh0RWxlbShlbGVtKSk7IGVsZW0gPSBuZXh0KSB7XG4gICAgICAgICAgLy8gRklYTUU6IGBtYXRjaGVkYCBtaWdodCBjb250YWluIGR1cGxpY2F0ZXMgaGVyZSBhbmQgdGhlIGluZGV4IGlzIHRvbyBsYXJnZS5cbiAgICAgICAgICBpZiAobWF0Y2hlcz8uKG5leHQsIG1hdGNoZWQubGVuZ3RoKSkgYnJlYWs7XG4gICAgICAgICAgbWF0Y2hlZC5wdXNoKG5leHQpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG1hdGNoZWQ7XG4gICAgfSxcbiAgKShuZXh0RWxlbSwgLi4ucG9zdEZucyk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gICAgdGhpczogQ2hlZXJpbzxUPixcbiAgICBzZWxlY3Rvcj86IEFjY2VwdGVkRmlsdGVyczxFbGVtZW50PiB8IG51bGwsXG4gICAgZmlsdGVyU2VsZWN0b3I/OiBBY2NlcHRlZEZpbHRlcnM8RWxlbWVudD4sXG4gICk6IENoZWVyaW88RWxlbWVudD4ge1xuICAgIC8vIE92ZXJyaWRlIGBtYXRjaGVzYCB2YXJpYWJsZSB3aXRoIHRoZSBuZXcgdGFyZ2V0LlxuICAgIG1hdGNoZXMgPVxuICAgICAgdHlwZW9mIHNlbGVjdG9yID09PSAnc3RyaW5nJ1xuICAgICAgICA/IChlbGVtOiBFbGVtZW50KSA9PiBzZWxlY3QuaXMoZWxlbSwgc2VsZWN0b3IsIHRoaXMub3B0aW9ucylcbiAgICAgICAgOiBzZWxlY3RvclxuICAgICAgICAgID8gZ2V0RmlsdGVyRm4oc2VsZWN0b3IpXG4gICAgICAgICAgOiBudWxsO1xuXG4gICAgY29uc3QgcmV0ID0gaW5uZXJNYXRjaGVyLmNhbGwodGhpcywgZmlsdGVyU2VsZWN0b3IpO1xuXG4gICAgLy8gU2V0IGBtYXRjaGVzYCB0byBgbnVsbGAsIHNvIHdlIGRvbid0IHdhc3RlIG1lbW9yeS5cbiAgICBtYXRjaGVzID0gbnVsbDtcblxuICAgIHJldHVybiByZXQ7XG4gIH07XG59XG5cbmZ1bmN0aW9uIF9yZW1vdmVEdXBsaWNhdGVzPFQgZXh0ZW5kcyBBbnlOb2RlPihlbGVtczogVFtdKTogVFtdIHtcbiAgcmV0dXJuIGVsZW1zLmxlbmd0aCA+IDEgPyBBcnJheS5mcm9tKG5ldyBTZXQ8VD4oZWxlbXMpKSA6IGVsZW1zO1xufVxuXG4vKipcbiAqIEdldCB0aGUgcGFyZW50IG9mIGVhY2ggZWxlbWVudCBpbiB0aGUgY3VycmVudCBzZXQgb2YgbWF0Y2hlZCBlbGVtZW50cyxcbiAqIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgYSBzZWxlY3Rvci5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnLnBlYXInKS5wYXJlbnQoKS5hdHRyKCdpZCcpO1xuICogLy89PiBmcnVpdHNcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciAtIElmIHNwZWNpZmllZCBmaWx0ZXIgZm9yIHBhcmVudC5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnRzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9wYXJlbnQvfVxuICovXG5leHBvcnQgY29uc3QgcGFyZW50OiA8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvcj86IEFjY2VwdGVkRmlsdGVyczxFbGVtZW50PixcbikgPT4gQ2hlZXJpbzxFbGVtZW50PiA9IF9zaW5nbGVNYXRjaGVyKFxuICAoeyBwYXJlbnQgfSkgPT4gKHBhcmVudCAmJiAhaXNEb2N1bWVudChwYXJlbnQpID8gKHBhcmVudCBhcyBFbGVtZW50KSA6IG51bGwpLFxuICBfcmVtb3ZlRHVwbGljYXRlcyxcbik7XG5cbi8qKlxuICogR2V0IGEgc2V0IG9mIHBhcmVudHMgZmlsdGVyZWQgYnkgYHNlbGVjdG9yYCBvZiBlYWNoIGVsZW1lbnQgaW4gdGhlIGN1cnJlbnRcbiAqIHNldCBvZiBtYXRjaCBlbGVtZW50cy5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnLm9yYW5nZScpLnBhcmVudHMoKS5sZW5ndGg7XG4gKiAvLz0+IDJcbiAqICQoJy5vcmFuZ2UnKS5wYXJlbnRzKCcjZnJ1aXRzJykubGVuZ3RoO1xuICogLy89PiAxXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3IgLSBJZiBzcGVjaWZpZWQgZmlsdGVyIGZvciBwYXJlbnRzLlxuICogQHJldHVybnMgVGhlIHBhcmVudHMuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3BhcmVudHMvfVxuICovXG5leHBvcnQgY29uc3QgcGFyZW50czogPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgc2VsZWN0b3I/OiBBY2NlcHRlZEZpbHRlcnM8RWxlbWVudD4sXG4pID0+IENoZWVyaW88RWxlbWVudD4gPSBfbWF0Y2hlcihcbiAgKGVsZW0pID0+IHtcbiAgICBjb25zdCBtYXRjaGVkID0gW107XG4gICAgd2hpbGUgKGVsZW0ucGFyZW50ICYmICFpc0RvY3VtZW50KGVsZW0ucGFyZW50KSkge1xuICAgICAgbWF0Y2hlZC5wdXNoKGVsZW0ucGFyZW50IGFzIEVsZW1lbnQpO1xuICAgICAgZWxlbSA9IGVsZW0ucGFyZW50O1xuICAgIH1cbiAgICByZXR1cm4gbWF0Y2hlZDtcbiAgfSxcbiAgdW5pcXVlU29ydCxcbiAgKGVsZW1zKSA9PiBlbGVtcy5yZXZlcnNlKCksXG4pO1xuXG4vKipcbiAqIEdldCB0aGUgYW5jZXN0b3JzIG9mIGVhY2ggZWxlbWVudCBpbiB0aGUgY3VycmVudCBzZXQgb2YgbWF0Y2hlZCBlbGVtZW50cywgdXBcbiAqIHRvIGJ1dCBub3QgaW5jbHVkaW5nIHRoZSBlbGVtZW50IG1hdGNoZWQgYnkgdGhlIHNlbGVjdG9yLCBET00gbm9kZSwgb3JcbiAqIGNoZWVyaW8gb2JqZWN0LlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcub3JhbmdlJykucGFyZW50c1VudGlsKCcjZm9vZCcpLmxlbmd0aDtcbiAqIC8vPT4gMVxuICogYGBgXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIC0gU2VsZWN0b3IgZm9yIGVsZW1lbnQgdG8gc3RvcCBhdC5cbiAqIEBwYXJhbSBmaWx0ZXJTZWxlY3RvciAtIE9wdGlvbmFsIGZpbHRlciBmb3IgcGFyZW50cy5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnRzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9wYXJlbnRzVW50aWwvfVxuICovXG5leHBvcnQgY29uc3QgcGFyZW50c1VudGlsOiA8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvcj86IEFjY2VwdGVkRmlsdGVyczxFbGVtZW50PiB8IG51bGwsXG4gIGZpbHRlclNlbGVjdG9yPzogQWNjZXB0ZWRGaWx0ZXJzPEVsZW1lbnQ+LFxuKSA9PiBDaGVlcmlvPEVsZW1lbnQ+ID0gX21hdGNoVW50aWwoXG4gICh7IHBhcmVudCB9KSA9PiAocGFyZW50ICYmICFpc0RvY3VtZW50KHBhcmVudCkgPyAocGFyZW50IGFzIEVsZW1lbnQpIDogbnVsbCksXG4gIHVuaXF1ZVNvcnQsXG4gIChlbGVtcykgPT4gZWxlbXMucmV2ZXJzZSgpLFxuKTtcblxuLyoqXG4gKiBGb3IgZWFjaCBlbGVtZW50IGluIHRoZSBzZXQsIGdldCB0aGUgZmlyc3QgZWxlbWVudCB0aGF0IG1hdGNoZXMgdGhlIHNlbGVjdG9yXG4gKiBieSB0ZXN0aW5nIHRoZSBlbGVtZW50IGl0c2VsZiBhbmQgdHJhdmVyc2luZyB1cCB0aHJvdWdoIGl0cyBhbmNlc3RvcnMgaW4gdGhlXG4gKiBET00gdHJlZS5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnLm9yYW5nZScpLmNsb3Nlc3QoKTtcbiAqIC8vPT4gW11cbiAqXG4gKiAkKCcub3JhbmdlJykuY2xvc2VzdCgnLmFwcGxlJyk7XG4gKiAvLyA9PiBbXVxuICpcbiAqICQoJy5vcmFuZ2UnKS5jbG9zZXN0KCdsaScpO1xuICogLy89PiBbPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT5dXG4gKlxuICogJCgnLm9yYW5nZScpLmNsb3Nlc3QoJyNmcnVpdHMnKTtcbiAqIC8vPT4gWzx1bCBpZD1cImZydWl0c1wiPiAuLi4gPC91bD5dXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3IgLSBTZWxlY3RvciBmb3IgdGhlIGVsZW1lbnQgdG8gZmluZC5cbiAqIEByZXR1cm5zIFRoZSBjbG9zZXN0IG5vZGVzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9jbG9zZXN0L31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsb3Nlc3Q8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvcj86IEFjY2VwdGVkRmlsdGVyczxFbGVtZW50Pixcbik6IENoZWVyaW88QW55Tm9kZT4ge1xuICBjb25zdCBzZXQ6IEFueU5vZGVbXSA9IFtdO1xuXG4gIGlmICghc2VsZWN0b3IpIHtcbiAgICByZXR1cm4gdGhpcy5fbWFrZShzZXQpO1xuICB9XG5cbiAgY29uc3Qgc2VsZWN0T3B0cyA9IHtcbiAgICB4bWxNb2RlOiB0aGlzLm9wdGlvbnMueG1sTW9kZSxcbiAgICByb290OiB0aGlzLl9yb290Py5bMF0sXG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0Rm4gPVxuICAgIHR5cGVvZiBzZWxlY3RvciA9PT0gJ3N0cmluZydcbiAgICAgID8gKGVsZW06IEVsZW1lbnQpID0+IHNlbGVjdC5pcyhlbGVtLCBzZWxlY3Rvciwgc2VsZWN0T3B0cylcbiAgICAgIDogZ2V0RmlsdGVyRm4oc2VsZWN0b3IpO1xuXG4gIGRvbUVhY2godGhpcywgKGVsZW06IEFueU5vZGUgfCBudWxsKSA9PiB7XG4gICAgaWYgKGVsZW0gJiYgIWlzRG9jdW1lbnQoZWxlbSkgJiYgIWlzVGFnKGVsZW0pKSB7XG4gICAgICBlbGVtID0gZWxlbS5wYXJlbnQ7XG4gICAgfVxuICAgIHdoaWxlIChlbGVtICYmIGlzVGFnKGVsZW0pKSB7XG4gICAgICBpZiAoc2VsZWN0Rm4oZWxlbSwgMCkpIHtcbiAgICAgICAgLy8gRG8gbm90IGFkZCBkdXBsaWNhdGUgZWxlbWVudHMgdG8gdGhlIHNldFxuICAgICAgICBpZiAoIXNldC5pbmNsdWRlcyhlbGVtKSkge1xuICAgICAgICAgIHNldC5wdXNoKGVsZW0pO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZWxlbSA9IGVsZW0ucGFyZW50O1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHRoaXMuX21ha2Uoc2V0KTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBuZXh0IHNpYmxpbmcgb2YgZWFjaCBzZWxlY3RlZCBlbGVtZW50LCBvcHRpb25hbGx5IGZpbHRlcmVkIGJ5IGFcbiAqIHNlbGVjdG9yLlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcuYXBwbGUnKS5uZXh0KCkuaGFzQ2xhc3MoJ29yYW5nZScpO1xuICogLy89PiB0cnVlXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3IgLSBJZiBzcGVjaWZpZWQgZmlsdGVyIGZvciBzaWJsaW5nLlxuICogQHJldHVybnMgVGhlIG5leHQgbm9kZXMuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL25leHQvfVxuICovXG5leHBvcnQgY29uc3QgbmV4dDogPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgc2VsZWN0b3I/OiBBY2NlcHRlZEZpbHRlcnM8RWxlbWVudD4sXG4pID0+IENoZWVyaW88RWxlbWVudD4gPSBfc2luZ2xlTWF0Y2hlcigoZWxlbSkgPT4gbmV4dEVsZW1lbnRTaWJsaW5nKGVsZW0pKTtcblxuLyoqXG4gKiBHZXRzIGFsbCB0aGUgZm9sbG93aW5nIHNpYmxpbmdzIG9mIHRoZSBlYWNoIHNlbGVjdGVkIGVsZW1lbnQsIG9wdGlvbmFsbHlcbiAqIGZpbHRlcmVkIGJ5IGEgc2VsZWN0b3IuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5hcHBsZScpLm5leHRBbGwoKTtcbiAqIC8vPT4gWzxsaSBjbGFzcz1cIm9yYW5nZVwiPk9yYW5nZTwvbGk+LCA8bGkgY2xhc3M9XCJwZWFyXCI+UGVhcjwvbGk+XVxuICogJCgnLmFwcGxlJykubmV4dEFsbCgnLm9yYW5nZScpO1xuICogLy89PiBbPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT5dXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3IgLSBJZiBzcGVjaWZpZWQgZmlsdGVyIGZvciBzaWJsaW5ncy5cbiAqIEByZXR1cm5zIFRoZSBuZXh0IG5vZGVzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9uZXh0QWxsL31cbiAqL1xuZXhwb3J0IGNvbnN0IG5leHRBbGw6IDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIHNlbGVjdG9yPzogQWNjZXB0ZWRGaWx0ZXJzPEVsZW1lbnQ+LFxuKSA9PiBDaGVlcmlvPEVsZW1lbnQ+ID0gX21hdGNoZXIoKGVsZW0pID0+IHtcbiAgY29uc3QgbWF0Y2hlZCA9IFtdO1xuICB3aGlsZSAoZWxlbS5uZXh0KSB7XG4gICAgZWxlbSA9IGVsZW0ubmV4dDtcbiAgICBpZiAoaXNUYWcoZWxlbSkpIG1hdGNoZWQucHVzaChlbGVtKTtcbiAgfVxuICByZXR1cm4gbWF0Y2hlZDtcbn0sIF9yZW1vdmVEdXBsaWNhdGVzKTtcblxuLyoqXG4gKiBHZXRzIGFsbCB0aGUgZm9sbG93aW5nIHNpYmxpbmdzIHVwIHRvIGJ1dCBub3QgaW5jbHVkaW5nIHRoZSBlbGVtZW50IG1hdGNoZWRcbiAqIGJ5IHRoZSBzZWxlY3Rvciwgb3B0aW9uYWxseSBmaWx0ZXJlZCBieSBhbm90aGVyIHNlbGVjdG9yLlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcuYXBwbGUnKS5uZXh0VW50aWwoJy5wZWFyJyk7XG4gKiAvLz0+IFs8bGkgY2xhc3M9XCJvcmFuZ2VcIj5PcmFuZ2U8L2xpPl1cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciAtIFNlbGVjdG9yIGZvciBlbGVtZW50IHRvIHN0b3AgYXQuXG4gKiBAcGFyYW0gZmlsdGVyU2VsZWN0b3IgLSBJZiBzcGVjaWZpZWQgZmlsdGVyIGZvciBzaWJsaW5ncy5cbiAqIEByZXR1cm5zIFRoZSBuZXh0IG5vZGVzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9uZXh0VW50aWwvfVxuICovXG5leHBvcnQgY29uc3QgbmV4dFVudGlsOiA8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvcj86IEFjY2VwdGVkRmlsdGVyczxFbGVtZW50PiB8IG51bGwsXG4gIGZpbHRlclNlbGVjdG9yPzogQWNjZXB0ZWRGaWx0ZXJzPEVsZW1lbnQ+LFxuKSA9PiBDaGVlcmlvPEVsZW1lbnQ+ID0gX21hdGNoVW50aWwoXG4gIChlbCkgPT4gbmV4dEVsZW1lbnRTaWJsaW5nKGVsKSxcbiAgX3JlbW92ZUR1cGxpY2F0ZXMsXG4pO1xuXG4vKipcbiAqIEdldHMgdGhlIHByZXZpb3VzIHNpYmxpbmcgb2YgZWFjaCBzZWxlY3RlZCBlbGVtZW50IG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgYVxuICogc2VsZWN0b3IuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5vcmFuZ2UnKS5wcmV2KCkuaGFzQ2xhc3MoJ2FwcGxlJyk7XG4gKiAvLz0+IHRydWVcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciAtIElmIHNwZWNpZmllZCBmaWx0ZXIgZm9yIHNpYmxpbmdzLlxuICogQHJldHVybnMgVGhlIHByZXZpb3VzIG5vZGVzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9wcmV2L31cbiAqL1xuZXhwb3J0IGNvbnN0IHByZXY6IDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIHNlbGVjdG9yPzogQWNjZXB0ZWRGaWx0ZXJzPEVsZW1lbnQ+LFxuKSA9PiBDaGVlcmlvPEVsZW1lbnQ+ID0gX3NpbmdsZU1hdGNoZXIoKGVsZW0pID0+IHByZXZFbGVtZW50U2libGluZyhlbGVtKSk7XG5cbi8qKlxuICogR2V0cyBhbGwgdGhlIHByZWNlZGluZyBzaWJsaW5ncyBvZiBlYWNoIHNlbGVjdGVkIGVsZW1lbnQsIG9wdGlvbmFsbHkgZmlsdGVyZWRcbiAqIGJ5IGEgc2VsZWN0b3IuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5wZWFyJykucHJldkFsbCgpO1xuICogLy89PiBbPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT4sIDxsaSBjbGFzcz1cImFwcGxlXCI+QXBwbGU8L2xpPl1cbiAqXG4gKiAkKCcucGVhcicpLnByZXZBbGwoJy5vcmFuZ2UnKTtcbiAqIC8vPT4gWzxsaSBjbGFzcz1cIm9yYW5nZVwiPk9yYW5nZTwvbGk+XVxuICogYGBgXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIC0gSWYgc3BlY2lmaWVkIGZpbHRlciBmb3Igc2libGluZ3MuXG4gKiBAcmV0dXJucyBUaGUgcHJldmlvdXMgbm9kZXMuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3ByZXZBbGwvfVxuICovXG5leHBvcnQgY29uc3QgcHJldkFsbDogPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgc2VsZWN0b3I/OiBBY2NlcHRlZEZpbHRlcnM8RWxlbWVudD4sXG4pID0+IENoZWVyaW88RWxlbWVudD4gPSBfbWF0Y2hlcigoZWxlbSkgPT4ge1xuICBjb25zdCBtYXRjaGVkID0gW107XG4gIHdoaWxlIChlbGVtLnByZXYpIHtcbiAgICBlbGVtID0gZWxlbS5wcmV2O1xuICAgIGlmIChpc1RhZyhlbGVtKSkgbWF0Y2hlZC5wdXNoKGVsZW0pO1xuICB9XG4gIHJldHVybiBtYXRjaGVkO1xufSwgX3JlbW92ZUR1cGxpY2F0ZXMpO1xuXG4vKipcbiAqIEdldHMgYWxsIHRoZSBwcmVjZWRpbmcgc2libGluZ3MgdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcgdGhlIGVsZW1lbnQgbWF0Y2hlZFxuICogYnkgdGhlIHNlbGVjdG9yLCBvcHRpb25hbGx5IGZpbHRlcmVkIGJ5IGFub3RoZXIgc2VsZWN0b3IuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5wZWFyJykucHJldlVudGlsKCcuYXBwbGUnKTtcbiAqIC8vPT4gWzxsaSBjbGFzcz1cIm9yYW5nZVwiPk9yYW5nZTwvbGk+XVxuICogYGBgXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIC0gU2VsZWN0b3IgZm9yIGVsZW1lbnQgdG8gc3RvcCBhdC5cbiAqIEBwYXJhbSBmaWx0ZXJTZWxlY3RvciAtIElmIHNwZWNpZmllZCBmaWx0ZXIgZm9yIHNpYmxpbmdzLlxuICogQHJldHVybnMgVGhlIHByZXZpb3VzIG5vZGVzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9wcmV2VW50aWwvfVxuICovXG5leHBvcnQgY29uc3QgcHJldlVudGlsOiA8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvcj86IEFjY2VwdGVkRmlsdGVyczxFbGVtZW50PiB8IG51bGwsXG4gIGZpbHRlclNlbGVjdG9yPzogQWNjZXB0ZWRGaWx0ZXJzPEVsZW1lbnQ+LFxuKSA9PiBDaGVlcmlvPEVsZW1lbnQ+ID0gX21hdGNoVW50aWwoXG4gIChlbCkgPT4gcHJldkVsZW1lbnRTaWJsaW5nKGVsKSxcbiAgX3JlbW92ZUR1cGxpY2F0ZXMsXG4pO1xuXG4vKipcbiAqIEdldCB0aGUgc2libGluZ3Mgb2YgZWFjaCBlbGVtZW50IChleGNsdWRpbmcgdGhlIGVsZW1lbnQpIGluIHRoZSBzZXQgb2ZcbiAqIG1hdGNoZWQgZWxlbWVudHMsIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgYSBzZWxlY3Rvci5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnLnBlYXInKS5zaWJsaW5ncygpLmxlbmd0aDtcbiAqIC8vPT4gMlxuICpcbiAqICQoJy5wZWFyJykuc2libGluZ3MoJy5vcmFuZ2UnKS5sZW5ndGg7XG4gKiAvLz0+IDFcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciAtIElmIHNwZWNpZmllZCBmaWx0ZXIgZm9yIHNpYmxpbmdzLlxuICogQHJldHVybnMgVGhlIHNpYmxpbmdzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9zaWJsaW5ncy99XG4gKi9cbmV4cG9ydCBjb25zdCBzaWJsaW5nczogPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgc2VsZWN0b3I/OiBBY2NlcHRlZEZpbHRlcnM8RWxlbWVudD4sXG4pID0+IENoZWVyaW88RWxlbWVudD4gPSBfbWF0Y2hlcihcbiAgKGVsZW0pID0+XG4gICAgZ2V0U2libGluZ3MoZWxlbSkuZmlsdGVyKChlbCk6IGVsIGlzIEVsZW1lbnQgPT4gaXNUYWcoZWwpICYmIGVsICE9PSBlbGVtKSxcbiAgdW5pcXVlU29ydCxcbik7XG5cbi8qKlxuICogR2V0cyB0aGUgZWxlbWVudCBjaGlsZHJlbiBvZiBlYWNoIGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzLlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcjZnJ1aXRzJykuY2hpbGRyZW4oKS5sZW5ndGg7XG4gKiAvLz0+IDNcbiAqXG4gKiAkKCcjZnJ1aXRzJykuY2hpbGRyZW4oJy5wZWFyJykudGV4dCgpO1xuICogLy89PiBQZWFyXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3IgLSBJZiBzcGVjaWZpZWQgZmlsdGVyIGZvciBjaGlsZHJlbi5cbiAqIEByZXR1cm5zIFRoZSBjaGlsZHJlbi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vY2hpbGRyZW4vfVxuICovXG5leHBvcnQgY29uc3QgY2hpbGRyZW46IDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIHNlbGVjdG9yPzogQWNjZXB0ZWRGaWx0ZXJzPEVsZW1lbnQ+LFxuKSA9PiBDaGVlcmlvPEVsZW1lbnQ+ID0gX21hdGNoZXIoXG4gIChlbGVtKSA9PiBnZXRDaGlsZHJlbihlbGVtKS5maWx0ZXIoaXNUYWcpLFxuICBfcmVtb3ZlRHVwbGljYXRlcyxcbik7XG5cbi8qKlxuICogR2V0cyB0aGUgY2hpbGRyZW4gb2YgZWFjaCBlbGVtZW50IGluIHRoZSBzZXQgb2YgbWF0Y2hlZCBlbGVtZW50cywgaW5jbHVkaW5nXG4gKiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzLlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcjZnJ1aXRzJykuY29udGVudHMoKS5sZW5ndGg7XG4gKiAvLz0+IDNcbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIFRoZSBjaGlsZHJlbi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vY29udGVudHMvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY29udGVudHM8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuKTogQ2hlZXJpbzxBbnlOb2RlPiB7XG4gIGNvbnN0IGVsZW1zID0gdGhpcy50b0FycmF5KCkucmVkdWNlPEFueU5vZGVbXT4oXG4gICAgKG5ld0VsZW1zLCBlbGVtKSA9PlxuICAgICAgaGFzQ2hpbGRyZW4oZWxlbSkgPyBuZXdFbGVtcy5jb25jYXQoZWxlbS5jaGlsZHJlbikgOiBuZXdFbGVtcyxcbiAgICBbXSxcbiAgKTtcbiAgcmV0dXJuIHRoaXMuX21ha2UoZWxlbXMpO1xufVxuXG4vKipcbiAqIEl0ZXJhdGVzIG92ZXIgYSBjaGVlcmlvIG9iamVjdCwgZXhlY3V0aW5nIGEgZnVuY3Rpb24gZm9yIGVhY2ggbWF0Y2hlZFxuICogZWxlbWVudC4gV2hlbiB0aGUgY2FsbGJhY2sgaXMgZmlyZWQsIHRoZSBmdW5jdGlvbiBpcyBmaXJlZCBpbiB0aGUgY29udGV4dCBvZlxuICogdGhlIERPTSBlbGVtZW50LCBzbyBgdGhpc2AgcmVmZXJzIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQsIHdoaWNoIGlzIGVxdWl2YWxlbnRcbiAqIHRvIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIgYGVsZW1lbnRgLiBUbyBicmVhayBvdXQgb2YgdGhlIGBlYWNoYCBsb29wIGVhcmx5LFxuICogcmV0dXJuIHdpdGggYGZhbHNlYC5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgZnJ1aXRzID0gW107XG4gKlxuICogJCgnbGknKS5lYWNoKGZ1bmN0aW9uIChpLCBlbGVtKSB7XG4gKiAgIGZydWl0c1tpXSA9ICQodGhpcykudGV4dCgpO1xuICogfSk7XG4gKlxuICogZnJ1aXRzLmpvaW4oJywgJyk7XG4gKiAvLz0+IEFwcGxlLCBPcmFuZ2UsIFBlYXJcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBmbiAtIEZ1bmN0aW9uIHRvIGV4ZWN1dGUuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLCB1c2VmdWwgZm9yIGNoYWluaW5nLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9lYWNoL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVhY2g8VD4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIGZuOiAodGhpczogVCwgaTogbnVtYmVyLCBlbDogVCkgPT4gdm9pZCB8IGJvb2xlYW4sXG4pOiBDaGVlcmlvPFQ+IHtcbiAgbGV0IGkgPSAwO1xuICBjb25zdCBsZW4gPSB0aGlzLmxlbmd0aDtcbiAgd2hpbGUgKGkgPCBsZW4gJiYgZm4uY2FsbCh0aGlzW2ldLCBpLCB0aGlzW2ldKSAhPT0gZmFsc2UpICsraTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogUGFzcyBlYWNoIGVsZW1lbnQgaW4gdGhlIGN1cnJlbnQgbWF0Y2hlZCBzZXQgdGhyb3VnaCBhIGZ1bmN0aW9uLCBwcm9kdWNpbmcgYVxuICogbmV3IENoZWVyaW8gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJldHVybiB2YWx1ZXMuIFRoZSBmdW5jdGlvbiBjYW4gcmV0dXJuIGFuXG4gKiBpbmRpdmlkdWFsIGRhdGEgaXRlbSBvciBhbiBhcnJheSBvZiBkYXRhIGl0ZW1zIHRvIGJlIGluc2VydGVkIGludG8gdGhlXG4gKiByZXN1bHRpbmcgc2V0LiBJZiBhbiBhcnJheSBpcyByZXR1cm5lZCwgdGhlIGVsZW1lbnRzIGluc2lkZSB0aGUgYXJyYXkgYXJlXG4gKiBpbnNlcnRlZCBpbnRvIHRoZSBzZXQuIElmIHRoZSBmdW5jdGlvbiByZXR1cm5zIG51bGwgb3IgdW5kZWZpbmVkLCBubyBlbGVtZW50XG4gKiB3aWxsIGJlIGluc2VydGVkLlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCdsaScpXG4gKiAgIC5tYXAoZnVuY3Rpb24gKGksIGVsKSB7XG4gKiAgICAgLy8gdGhpcyA9PT0gZWxcbiAqICAgICByZXR1cm4gJCh0aGlzKS50ZXh0KCk7XG4gKiAgIH0pXG4gKiAgIC50b0FycmF5KClcbiAqICAgLmpvaW4oJyAnKTtcbiAqIC8vPT4gXCJhcHBsZSBvcmFuZ2UgcGVhclwiXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gZm4gLSBGdW5jdGlvbiB0byBleGVjdXRlLlxuICogQHJldHVybnMgVGhlIG1hcHBlZCBlbGVtZW50cywgd3JhcHBlZCBpbiBhIENoZWVyaW8gY29sbGVjdGlvbi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vbWFwL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcDxULCBNPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgZm46ICh0aGlzOiBULCBpOiBudW1iZXIsIGVsOiBUKSA9PiBNW10gfCBNIHwgbnVsbCB8IHVuZGVmaW5lZCxcbik6IENoZWVyaW88TT4ge1xuICBsZXQgZWxlbXM6IE1bXSA9IFtdO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBlbCA9IHRoaXNbaV07XG4gICAgY29uc3QgdmFsID0gZm4uY2FsbChlbCwgaSwgZWwpO1xuICAgIGlmICh2YWwgIT0gbnVsbCkge1xuICAgICAgZWxlbXMgPSBlbGVtcy5jb25jYXQodmFsKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRoaXMuX21ha2UoZWxlbXMpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0byB0ZXN0IGlmIGEgZmlsdGVyIGlzIG1hdGNoZWQuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gQSBmaWx0ZXIuXG4gKiBAcmV0dXJucyBBIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyBpZiBhIGZpbHRlciBoYXMgYmVlbiBtYXRjaGVkLlxuICovXG5mdW5jdGlvbiBnZXRGaWx0ZXJGbjxUPihcbiAgbWF0Y2g6IEZpbHRlckZ1bmN0aW9uPFQ+IHwgQ2hlZXJpbzxUPiB8IFQsXG4pOiAoZWw6IFQsIGk6IG51bWJlcikgPT4gYm9vbGVhbiB7XG4gIGlmICh0eXBlb2YgbWF0Y2ggPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gKGVsLCBpKSA9PiAobWF0Y2ggYXMgRmlsdGVyRnVuY3Rpb248VD4pLmNhbGwoZWwsIGksIGVsKTtcbiAgfVxuICBpZiAoaXNDaGVlcmlvPFQ+KG1hdGNoKSkge1xuICAgIHJldHVybiAoZWwpID0+IEFycmF5LnByb3RvdHlwZS5pbmNsdWRlcy5jYWxsKG1hdGNoLCBlbCk7XG4gIH1cbiAgcmV0dXJuIGZ1bmN0aW9uIChlbCkge1xuICAgIHJldHVybiBtYXRjaCA9PT0gZWw7XG4gIH07XG59XG5cbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBhIGNoZWVyaW8gb2JqZWN0LCByZWR1Y2luZyB0aGUgc2V0IG9mIHNlbGVjdG9yIGVsZW1lbnRzIHRvXG4gKiB0aG9zZSB0aGF0IG1hdGNoIHRoZSBzZWxlY3RvciBvciBwYXNzIHRoZSBmdW5jdGlvbidzIHRlc3QuXG4gKlxuICogVGhpcyBpcyB0aGUgZGVmaW5pdGlvbiBmb3IgdXNpbmcgdHlwZSBndWFyZHM7IGhhdmUgYSBsb29rIGJlbG93IGZvciBvdGhlclxuICogd2F5cyB0byBpbnZva2UgdGhpcyBtZXRob2QuIFRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGVcbiAqIHNlbGVjdGVkIGVsZW1lbnQsIHNvIGB0aGlzYCByZWZlcnMgdG8gdGhlIGN1cnJlbnQgZWxlbWVudC5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGUgPGNhcHRpb24+RnVuY3Rpb248L2NhcHRpb24+XG4gKlxuICogYGBganNcbiAqICQoJ2xpJylcbiAqICAgLmZpbHRlcihmdW5jdGlvbiAoaSwgZWwpIHtcbiAqICAgICAvLyB0aGlzID09PSBlbFxuICogICAgIHJldHVybiAkKHRoaXMpLmF0dHIoJ2NsYXNzJykgPT09ICdvcmFuZ2UnO1xuICogICB9KVxuICogICAuYXR0cignY2xhc3MnKTsgLy89PiBvcmFuZ2VcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIFZhbHVlIHRvIGxvb2sgZm9yLCBmb2xsb3dpbmcgdGhlIHJ1bGVzIGFib3ZlLlxuICogQHJldHVybnMgVGhlIGZpbHRlcmVkIGNvbGxlY3Rpb24uXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2ZpbHRlci99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXI8VCwgUyBleHRlbmRzIFQ+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBtYXRjaDogKHRoaXM6IFQsIGluZGV4OiBudW1iZXIsIHZhbHVlOiBUKSA9PiB2YWx1ZSBpcyBTLFxuKTogQ2hlZXJpbzxTPjtcbi8qKlxuICogSXRlcmF0ZXMgb3ZlciBhIGNoZWVyaW8gb2JqZWN0LCByZWR1Y2luZyB0aGUgc2V0IG9mIHNlbGVjdG9yIGVsZW1lbnRzIHRvXG4gKiB0aG9zZSB0aGF0IG1hdGNoIHRoZSBzZWxlY3RvciBvciBwYXNzIHRoZSBmdW5jdGlvbidzIHRlc3QuXG4gKlxuICogLSBXaGVuIGEgQ2hlZXJpbyBzZWxlY3Rpb24gaXMgc3BlY2lmaWVkLCByZXR1cm4gb25seSB0aGUgZWxlbWVudHMgY29udGFpbmVkIGluXG4gKiAgIHRoYXQgc2VsZWN0aW9uLlxuICogLSBXaGVuIGFuIGVsZW1lbnQgaXMgc3BlY2lmaWVkLCByZXR1cm4gb25seSB0aGF0IGVsZW1lbnQgKGlmIGl0IGlzIGNvbnRhaW5lZCBpblxuICogICB0aGUgb3JpZ2luYWwgc2VsZWN0aW9uKS5cbiAqIC0gSWYgdXNpbmcgdGhlIGZ1bmN0aW9uIG1ldGhvZCwgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZVxuICogICBzZWxlY3RlZCBlbGVtZW50LCBzbyBgdGhpc2AgcmVmZXJzIHRvIHRoZSBjdXJyZW50IGVsZW1lbnQuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlIDxjYXB0aW9uPlNlbGVjdG9yPC9jYXB0aW9uPlxuICpcbiAqIGBgYGpzXG4gKiAkKCdsaScpLmZpbHRlcignLm9yYW5nZScpLmF0dHIoJ2NsYXNzJyk7XG4gKiAvLz0+IG9yYW5nZVxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgPGNhcHRpb24+RnVuY3Rpb248L2NhcHRpb24+XG4gKlxuICogYGBganNcbiAqICQoJ2xpJylcbiAqICAgLmZpbHRlcihmdW5jdGlvbiAoaSwgZWwpIHtcbiAqICAgICAvLyB0aGlzID09PSBlbFxuICogICAgIHJldHVybiAkKHRoaXMpLmF0dHIoJ2NsYXNzJykgPT09ICdvcmFuZ2UnO1xuICogICB9KVxuICogICAuYXR0cignY2xhc3MnKTsgLy89PiBvcmFuZ2VcbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIFZhbHVlIHRvIGxvb2sgZm9yLCBmb2xsb3dpbmcgdGhlIHJ1bGVzIGFib3ZlLiBTZWVcbiAqICAge0BsaW5rIEFjY2VwdGVkRmlsdGVyc30uXG4gKiBAcmV0dXJucyBUaGUgZmlsdGVyZWQgY29sbGVjdGlvbi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vZmlsdGVyL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlcjxULCBTIGV4dGVuZHMgQWNjZXB0ZWRGaWx0ZXJzPFQ+PihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgbWF0Y2g6IFMsXG4pOiBDaGVlcmlvPFMgZXh0ZW5kcyBzdHJpbmcgPyBFbGVtZW50IDogVD47XG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyPFQ+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBtYXRjaDogQWNjZXB0ZWRGaWx0ZXJzPFQ+LFxuKTogQ2hlZXJpbzx1bmtub3duPiB7XG4gIHJldHVybiB0aGlzLl9tYWtlPHVua25vd24+KFxuICAgIGZpbHRlckFycmF5KHRoaXMudG9BcnJheSgpLCBtYXRjaCwgdGhpcy5vcHRpb25zLnhtbE1vZGUsIHRoaXMuX3Jvb3Q/LlswXSksXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJBcnJheTxUPihcbiAgbm9kZXM6IFRbXSxcbiAgbWF0Y2g6IEFjY2VwdGVkRmlsdGVyczxUPixcbiAgeG1sTW9kZT86IGJvb2xlYW4sXG4gIHJvb3Q/OiBEb2N1bWVudCxcbik6IEVsZW1lbnRbXSB8IFRbXSB7XG4gIHJldHVybiB0eXBlb2YgbWF0Y2ggPT09ICdzdHJpbmcnXG4gICAgPyBzZWxlY3QuZmlsdGVyKG1hdGNoLCBub2RlcyBhcyB1bmtub3duIGFzIEFueU5vZGVbXSwgeyB4bWxNb2RlLCByb290IH0pXG4gICAgOiBub2Rlcy5maWx0ZXIoZ2V0RmlsdGVyRm48VD4obWF0Y2gpKTtcbn1cblxuLyoqXG4gKiBDaGVja3MgdGhlIGN1cnJlbnQgbGlzdCBvZiBlbGVtZW50cyBhbmQgcmV0dXJucyBgdHJ1ZWAgaWYgX2FueV8gb2YgdGhlXG4gKiBlbGVtZW50cyBtYXRjaCB0aGUgc2VsZWN0b3IuIElmIHVzaW5nIGFuIGVsZW1lbnQgb3IgQ2hlZXJpbyBzZWxlY3Rpb24sXG4gKiByZXR1cm5zIGB0cnVlYCBpZiBfYW55XyBvZiB0aGUgZWxlbWVudHMgbWF0Y2guIElmIHVzaW5nIGEgcHJlZGljYXRlIGZ1bmN0aW9uLFxuICogdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBzZWxlY3RlZCBlbGVtZW50LCBzbyBgdGhpc2BcbiAqIHJlZmVycyB0byB0aGUgY3VycmVudCBlbGVtZW50LlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAcGFyYW0gc2VsZWN0b3IgLSBTZWxlY3RvciBmb3IgdGhlIHNlbGVjdGlvbi5cbiAqIEByZXR1cm5zIFdoZXRoZXIgb3Igbm90IHRoZSBzZWxlY3RvciBtYXRjaGVzIGFuIGVsZW1lbnQgb2YgdGhlIGluc3RhbmNlLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9pcy99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpczxUPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgc2VsZWN0b3I/OiBBY2NlcHRlZEZpbHRlcnM8VD4sXG4pOiBib29sZWFuIHtcbiAgY29uc3Qgbm9kZXMgPSB0aGlzLnRvQXJyYXkoKTtcbiAgcmV0dXJuIHR5cGVvZiBzZWxlY3RvciA9PT0gJ3N0cmluZydcbiAgICA/IHNlbGVjdC5zb21lKFxuICAgICAgICAobm9kZXMgYXMgdW5rbm93biBhcyBBbnlOb2RlW10pLmZpbHRlcihpc1RhZyksXG4gICAgICAgIHNlbGVjdG9yLFxuICAgICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICApXG4gICAgOiBzZWxlY3RvclxuICAgICAgPyBub2Rlcy5zb21lKGdldEZpbHRlckZuPFQ+KHNlbGVjdG9yKSlcbiAgICAgIDogZmFsc2U7XG59XG5cbi8qKlxuICogUmVtb3ZlIGVsZW1lbnRzIGZyb20gdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzLiBHaXZlbiBhIENoZWVyaW8gb2JqZWN0IHRoYXRcbiAqIHJlcHJlc2VudHMgYSBzZXQgb2YgRE9NIGVsZW1lbnRzLCB0aGUgYC5ub3QoKWAgbWV0aG9kIGNvbnN0cnVjdHMgYSBuZXdcbiAqIENoZWVyaW8gb2JqZWN0IGZyb20gYSBzdWJzZXQgb2YgdGhlIG1hdGNoaW5nIGVsZW1lbnRzLiBUaGUgc3VwcGxpZWQgc2VsZWN0b3JcbiAqIGlzIHRlc3RlZCBhZ2FpbnN0IGVhY2ggZWxlbWVudDsgdGhlIGVsZW1lbnRzIHRoYXQgZG9uJ3QgbWF0Y2ggdGhlIHNlbGVjdG9yXG4gKiB3aWxsIGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHQuXG4gKlxuICogVGhlIGAubm90KClgIG1ldGhvZCBjYW4gdGFrZSBhIGZ1bmN0aW9uIGFzIGl0cyBhcmd1bWVudCBpbiB0aGUgc2FtZSB3YXkgdGhhdFxuICogYC5maWx0ZXIoKWAgZG9lcy4gRWxlbWVudHMgZm9yIHdoaWNoIHRoZSBmdW5jdGlvbiByZXR1cm5zIGB0cnVlYCBhcmUgZXhjbHVkZWRcbiAqIGZyb20gdGhlIGZpbHRlcmVkIHNldDsgYWxsIG90aGVyIGVsZW1lbnRzIGFyZSBpbmNsdWRlZC5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGUgPGNhcHRpb24+U2VsZWN0b3I8L2NhcHRpb24+XG4gKlxuICogYGBganNcbiAqICQoJ2xpJykubm90KCcuYXBwbGUnKS5sZW5ndGg7XG4gKiAvLz0+IDJcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIDxjYXB0aW9uPkZ1bmN0aW9uPC9jYXB0aW9uPlxuICpcbiAqIGBgYGpzXG4gKiAkKCdsaScpLm5vdChmdW5jdGlvbiAoaSwgZWwpIHtcbiAqICAgLy8gdGhpcyA9PT0gZWxcbiAqICAgcmV0dXJuICQodGhpcykuYXR0cignY2xhc3MnKSA9PT0gJ29yYW5nZSc7XG4gKiB9KS5sZW5ndGg7IC8vPT4gMlxuICogYGBgXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gVmFsdWUgdG8gbG9vayBmb3IsIGZvbGxvd2luZyB0aGUgcnVsZXMgYWJvdmUuXG4gKiBAcmV0dXJucyBUaGUgZmlsdGVyZWQgY29sbGVjdGlvbi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vbm90L31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vdDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG1hdGNoOiBBY2NlcHRlZEZpbHRlcnM8VD4sXG4pOiBDaGVlcmlvPFQ+IHtcbiAgbGV0IG5vZGVzID0gdGhpcy50b0FycmF5KCk7XG5cbiAgaWYgKHR5cGVvZiBtYXRjaCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gbmV3IFNldDxBbnlOb2RlPihzZWxlY3QuZmlsdGVyKG1hdGNoLCBub2RlcywgdGhpcy5vcHRpb25zKSk7XG4gICAgbm9kZXMgPSBub2Rlcy5maWx0ZXIoKGVsKSA9PiAhbWF0Y2hlcy5oYXMoZWwpKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBmaWx0ZXJGbiA9IGdldEZpbHRlckZuKG1hdGNoKTtcbiAgICBub2RlcyA9IG5vZGVzLmZpbHRlcigoZWwsIGkpID0+ICFmaWx0ZXJGbihlbCwgaSkpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX21ha2Uobm9kZXMpO1xufVxuXG4vKipcbiAqIEZpbHRlcnMgdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzIHRvIG9ubHkgdGhvc2Ugd2hpY2ggaGF2ZSB0aGUgZ2l2ZW4gRE9NXG4gKiBlbGVtZW50IGFzIGEgZGVzY2VuZGFudCBvciB3aGljaCBoYXZlIGEgZGVzY2VuZGFudCB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuXG4gKiBzZWxlY3Rvci4gRXF1aXZhbGVudCB0byBgLmZpbHRlcignOmhhcyhzZWxlY3RvciknKWAuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlIDxjYXB0aW9uPlNlbGVjdG9yPC9jYXB0aW9uPlxuICpcbiAqIGBgYGpzXG4gKiAkKCd1bCcpLmhhcygnLnBlYXInKS5hdHRyKCdpZCcpO1xuICogLy89PiBmcnVpdHNcbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIDxjYXB0aW9uPkVsZW1lbnQ8L2NhcHRpb24+XG4gKlxuICogYGBganNcbiAqICQoJ3VsJykuaGFzKCQoJy5wZWFyJylbMF0pLmF0dHIoJ2lkJyk7XG4gKiAvLz0+IGZydWl0c1xuICogYGBgXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yT3JIYXlzdGFjayAtIEVsZW1lbnQgdG8gbG9vayBmb3IuXG4gKiBAcmV0dXJucyBUaGUgZmlsdGVyZWQgY29sbGVjdGlvbi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vaGFzL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhcyhcbiAgdGhpczogQ2hlZXJpbzxBbnlOb2RlIHwgRWxlbWVudD4sXG4gIHNlbGVjdG9yT3JIYXlzdGFjazogc3RyaW5nIHwgQ2hlZXJpbzxFbGVtZW50PiB8IEVsZW1lbnQsXG4pOiBDaGVlcmlvPEFueU5vZGUgfCBFbGVtZW50PiB7XG4gIHJldHVybiB0aGlzLmZpbHRlcihcbiAgICB0eXBlb2Ygc2VsZWN0b3JPckhheXN0YWNrID09PSAnc3RyaW5nJ1xuICAgICAgPyAvLyBVc2luZyB0aGUgYDpoYXNgIHNlbGVjdG9yIGhlcmUgc2hvcnQtY2lyY3VpdHMgc2VhcmNoZXMuXG4gICAgICAgIGA6aGFzKCR7c2VsZWN0b3JPckhheXN0YWNrfSlgXG4gICAgICA6IChfLCBlbCkgPT4gdGhpcy5fbWFrZShlbCkuZmluZChzZWxlY3Rvck9ySGF5c3RhY2spLmxlbmd0aCA+IDAsXG4gICk7XG59XG5cbi8qKlxuICogV2lsbCBzZWxlY3QgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYSBjaGVlcmlvIG9iamVjdC5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnI2ZydWl0cycpLmNoaWxkcmVuKCkuZmlyc3QoKS50ZXh0KCk7XG4gKiAvLz0+IEFwcGxlXG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBUaGUgZmlyc3QgZWxlbWVudC5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vZmlyc3QvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlyc3Q8VCBleHRlbmRzIEFueU5vZGU+KHRoaXM6IENoZWVyaW88VD4pOiBDaGVlcmlvPFQ+IHtcbiAgcmV0dXJuIHRoaXMubGVuZ3RoID4gMSA/IHRoaXMuX21ha2UodGhpc1swXSkgOiB0aGlzO1xufVxuXG4vKipcbiAqIFdpbGwgc2VsZWN0IHRoZSBsYXN0IGVsZW1lbnQgb2YgYSBjaGVlcmlvIG9iamVjdC5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnI2ZydWl0cycpLmNoaWxkcmVuKCkubGFzdCgpLnRleHQoKTtcbiAqIC8vPT4gUGVhclxuICogYGBgXG4gKlxuICogQHJldHVybnMgVGhlIGxhc3QgZWxlbWVudC5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vbGFzdC99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXN0PFQ+KHRoaXM6IENoZWVyaW88VD4pOiBDaGVlcmlvPFQ+IHtcbiAgcmV0dXJuIHRoaXMubGVuZ3RoID4gMCA/IHRoaXMuX21ha2UodGhpc1t0aGlzLmxlbmd0aCAtIDFdKSA6IHRoaXM7XG59XG5cbi8qKlxuICogUmVkdWNlIHRoZSBzZXQgb2YgbWF0Y2hlZCBlbGVtZW50cyB0byB0aGUgb25lIGF0IHRoZSBzcGVjaWZpZWQgaW5kZXguIFVzZVxuICogYC5lcSgtaSlgIHRvIGNvdW50IGJhY2t3YXJkcyBmcm9tIHRoZSBsYXN0IHNlbGVjdGVkIGVsZW1lbnQuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJ2xpJykuZXEoMCkudGV4dCgpO1xuICogLy89PiBBcHBsZVxuICpcbiAqICQoJ2xpJykuZXEoLTEpLnRleHQoKTtcbiAqIC8vPT4gUGVhclxuICogYGBgXG4gKlxuICogQHBhcmFtIGkgLSBJbmRleCBvZiB0aGUgZWxlbWVudCB0byBzZWxlY3QuXG4gKiBAcmV0dXJucyBUaGUgZWxlbWVudCBhdCB0aGUgYGlgdGggcG9zaXRpb24uXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2VxL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVxPFQ+KHRoaXM6IENoZWVyaW88VD4sIGk6IG51bWJlcik6IENoZWVyaW88VD4ge1xuICBpID0gK2k7XG5cbiAgLy8gVXNlIHRoZSBmaXJzdCBpZGVudGl0eSBvcHRpbWl6YXRpb24gaWYgcG9zc2libGVcbiAgaWYgKGkgPT09IDAgJiYgdGhpcy5sZW5ndGggPD0gMSkgcmV0dXJuIHRoaXM7XG5cbiAgaWYgKGkgPCAwKSBpID0gdGhpcy5sZW5ndGggKyBpO1xuICByZXR1cm4gdGhpcy5fbWFrZSh0aGlzW2ldID8/IFtdKTtcbn1cblxuLyoqXG4gKiBSZXRyaWV2ZSBvbmUgb2YgdGhlIGVsZW1lbnRzIG1hdGNoZWQgYnkgdGhlIENoZWVyaW8gb2JqZWN0LCBhdCB0aGUgYGlgdGhcbiAqIHBvc2l0aW9uLlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCdsaScpLmdldCgwKS50YWdOYW1lO1xuICogLy89PiBsaVxuICogYGBgXG4gKlxuICogQHBhcmFtIGkgLSBFbGVtZW50IHRvIHJldHJpZXZlLlxuICogQHJldHVybnMgVGhlIGVsZW1lbnQgYXQgdGhlIGBpYHRoIHBvc2l0aW9uLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9nZXQvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0PFQ+KHRoaXM6IENoZWVyaW88VD4sIGk6IG51bWJlcik6IFQgfCB1bmRlZmluZWQ7XG4vKipcbiAqIFJldHJpZXZlIGFsbCBlbGVtZW50cyBtYXRjaGVkIGJ5IHRoZSBDaGVlcmlvIG9iamVjdCwgYXMgYW4gYXJyYXkuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJ2xpJykuZ2V0KCkubGVuZ3RoO1xuICogLy89PiAzXG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBBbGwgZWxlbWVudHMgbWF0Y2hlZCBieSB0aGUgQ2hlZXJpbyBvYmplY3QuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2dldC99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXQ8VD4odGhpczogQ2hlZXJpbzxUPik6IFRbXTtcbmV4cG9ydCBmdW5jdGlvbiBnZXQ8VD4odGhpczogQ2hlZXJpbzxUPiwgaT86IG51bWJlcik6IFQgfCBUW10ge1xuICBpZiAoaSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHRoaXMudG9BcnJheSgpO1xuICB9XG4gIHJldHVybiB0aGlzW2kgPCAwID8gdGhpcy5sZW5ndGggKyBpIDogaV07XG59XG5cbi8qKlxuICogUmV0cmlldmUgYWxsIHRoZSBET00gZWxlbWVudHMgY29udGFpbmVkIGluIHRoZSBqUXVlcnkgc2V0IGFzIGFuIGFycmF5LlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJ2xpJykudG9BcnJheSgpO1xuICogLy89PiBbIHsuLi59LCB7Li4ufSwgey4uLn0gXVxuICogYGBgXG4gKlxuICogQHJldHVybnMgVGhlIGNvbnRhaW5lZCBpdGVtcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvQXJyYXk8VD4odGhpczogQ2hlZXJpbzxUPik6IFRbXSB7XG4gIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzKTtcbn1cblxuLyoqXG4gKiBTZWFyY2ggZm9yIGEgZ2l2ZW4gZWxlbWVudCBmcm9tIGFtb25nIHRoZSBtYXRjaGVkIGVsZW1lbnRzLlxuICpcbiAqIEBjYXRlZ29yeSBUcmF2ZXJzaW5nXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcucGVhcicpLmluZGV4KCk7XG4gKiAvLz0+IDIgJCgnLm9yYW5nZScpLmluZGV4KCdsaScpO1xuICogLy89PiAxXG4gKiAkKCcuYXBwbGUnKS5pbmRleCgkKCcjZnJ1aXQsIGxpJykpO1xuICogLy89PiAxXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3JPck5lZWRsZSAtIEVsZW1lbnQgdG8gbG9vayBmb3IuXG4gKiBAcmV0dXJucyBUaGUgaW5kZXggb2YgdGhlIGVsZW1lbnQuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2luZGV4L31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4PFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgc2VsZWN0b3JPck5lZWRsZT86IHN0cmluZyB8IENoZWVyaW88QW55Tm9kZT4gfCBBbnlOb2RlLFxuKTogbnVtYmVyIHtcbiAgbGV0ICRoYXlzdGFjazogQ2hlZXJpbzxBbnlOb2RlPjtcbiAgbGV0IG5lZWRsZTogQW55Tm9kZTtcblxuICBpZiAoc2VsZWN0b3JPck5lZWRsZSA9PSBudWxsKSB7XG4gICAgJGhheXN0YWNrID0gdGhpcy5wYXJlbnQoKS5jaGlsZHJlbigpO1xuICAgIG5lZWRsZSA9IHRoaXNbMF07XG4gIH0gZWxzZSBpZiAodHlwZW9mIHNlbGVjdG9yT3JOZWVkbGUgPT09ICdzdHJpbmcnKSB7XG4gICAgJGhheXN0YWNrID0gdGhpcy5fbWFrZTxBbnlOb2RlPihzZWxlY3Rvck9yTmVlZGxlKTtcbiAgICBuZWVkbGUgPSB0aGlzWzBdO1xuICB9IGVsc2Uge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdGhpcy1hbGlhcywgdW5pY29ybi9uby10aGlzLWFzc2lnbm1lbnRcbiAgICAkaGF5c3RhY2sgPSB0aGlzO1xuICAgIG5lZWRsZSA9IGlzQ2hlZXJpbyhzZWxlY3Rvck9yTmVlZGxlKVxuICAgICAgPyBzZWxlY3Rvck9yTmVlZGxlWzBdXG4gICAgICA6IHNlbGVjdG9yT3JOZWVkbGU7XG4gIH1cblxuICByZXR1cm4gQXJyYXkucHJvdG90eXBlLmluZGV4T2YuY2FsbCgkaGF5c3RhY2ssIG5lZWRsZSk7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgZWxlbWVudHMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCByYW5nZSAoMC1iYXNlZCBwb3NpdGlvbikuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJ2xpJykuc2xpY2UoMSkuZXEoMCkudGV4dCgpO1xuICogLy89PiAnT3JhbmdlJ1xuICpcbiAqICQoJ2xpJykuc2xpY2UoMSwgMikubGVuZ3RoO1xuICogLy89PiAxXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RhcnQgLSBBIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSBlbGVtZW50cyBiZWdpbiB0byBiZSBzZWxlY3RlZC4gSWZcbiAqICAgbmVnYXRpdmUsIGl0IGluZGljYXRlcyBhbiBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXQuXG4gKiBAcGFyYW0gZW5kIC0gQSBwb3NpdGlvbiBhdCB3aGljaCB0aGUgZWxlbWVudHMgc3RvcCBiZWluZyBzZWxlY3RlZC4gSWZcbiAqICAgbmVnYXRpdmUsIGl0IGluZGljYXRlcyBhbiBvZmZzZXQgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXQuIElmIG9taXR0ZWQsIHRoZVxuICogICByYW5nZSBjb250aW51ZXMgdW50aWwgdGhlIGVuZCBvZiB0aGUgc2V0LlxuICogQHJldHVybnMgVGhlIGVsZW1lbnRzIG1hdGNoaW5nIHRoZSBzcGVjaWZpZWQgcmFuZ2UuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3NsaWNlL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNsaWNlPFQ+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzdGFydD86IG51bWJlcixcbiAgZW5kPzogbnVtYmVyLFxuKTogQ2hlZXJpbzxUPiB7XG4gIHJldHVybiB0aGlzLl9tYWtlKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMsIHN0YXJ0LCBlbmQpKTtcbn1cblxuLyoqXG4gKiBFbmQgdGhlIG1vc3QgcmVjZW50IGZpbHRlcmluZyBvcGVyYXRpb24gaW4gdGhlIGN1cnJlbnQgY2hhaW4gYW5kIHJldHVybiB0aGVcbiAqIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzIHRvIGl0cyBwcmV2aW91cyBzdGF0ZS5cbiAqXG4gKiBAY2F0ZWdvcnkgVHJhdmVyc2luZ1xuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnbGknKS5lcSgwKS5lbmQoKS5sZW5ndGg7XG4gKiAvLz0+IDNcbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIFRoZSBwcmV2aW91cyBzdGF0ZSBvZiB0aGUgc2V0IG9mIG1hdGNoZWQgZWxlbWVudHMuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2VuZC99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBlbmQ8VD4odGhpczogQ2hlZXJpbzxUPik6IENoZWVyaW88QW55Tm9kZT4ge1xuICByZXR1cm4gdGhpcy5wcmV2T2JqZWN0ID8/IHRoaXMuX21ha2UoW10pO1xufVxuXG4vKipcbiAqIEFkZCBlbGVtZW50cyB0byB0aGUgc2V0IG9mIG1hdGNoZWQgZWxlbWVudHMuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5hcHBsZScpLmFkZCgnLm9yYW5nZScpLmxlbmd0aDtcbiAqIC8vPT4gMlxuICogYGBgXG4gKlxuICogQHBhcmFtIG90aGVyIC0gRWxlbWVudHMgdG8gYWRkLlxuICogQHBhcmFtIGNvbnRleHQgLSBPcHRpb25hbGx5IHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgc2VsZWN0aW9uLlxuICogQHJldHVybnMgVGhlIGNvbWJpbmVkIHNldC5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vYWRkL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZDxTIGV4dGVuZHMgQW55Tm9kZSwgVCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBvdGhlcjogc3RyaW5nIHwgQ2hlZXJpbzxTPiB8IFMgfCBTW10sXG4gIGNvbnRleHQ/OiBDaGVlcmlvPFM+IHwgc3RyaW5nLFxuKTogQ2hlZXJpbzxTIHwgVD4ge1xuICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLl9tYWtlKG90aGVyLCBjb250ZXh0KTtcbiAgY29uc3QgY29udGVudHMgPSB1bmlxdWVTb3J0KFsuLi50aGlzLmdldCgpLCAuLi5zZWxlY3Rpb24uZ2V0KCldKTtcbiAgcmV0dXJuIHRoaXMuX21ha2UoY29udGVudHMpO1xufVxuXG4vKipcbiAqIEFkZCB0aGUgcHJldmlvdXMgc2V0IG9mIGVsZW1lbnRzIG9uIHRoZSBzdGFjayB0byB0aGUgY3VycmVudCBzZXQsIG9wdGlvbmFsbHlcbiAqIGZpbHRlcmVkIGJ5IGEgc2VsZWN0b3IuXG4gKlxuICogQGNhdGVnb3J5IFRyYXZlcnNpbmdcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJ2xpJykuZXEoMCkuYWRkQmFjaygnLm9yYW5nZScpLmxlbmd0aDtcbiAqIC8vPT4gMlxuICogYGBgXG4gKlxuICogQHBhcmFtIHNlbGVjdG9yIC0gU2VsZWN0b3IgZm9yIHRoZSBlbGVtZW50cyB0byBhZGQuXG4gKiBAcmV0dXJucyBUaGUgY29tYmluZWQgc2V0LlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9hZGRCYWNrL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFkZEJhY2s8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvcj86IHN0cmluZyxcbik6IENoZWVyaW88QW55Tm9kZT4ge1xuICByZXR1cm4gdGhpcy5wcmV2T2JqZWN0XG4gICAgPyB0aGlzLmFkZChzZWxlY3RvciA/IHRoaXMucHJldk9iamVjdC5maWx0ZXIoc2VsZWN0b3IpIDogdGhpcy5wcmV2T2JqZWN0KVxuICAgIDogdGhpcztcbn1cbiIsICJpbXBvcnQgeyByZW1vdmVFbGVtZW50IH0gZnJvbSAnZG9tdXRpbHMnO1xuaW1wb3J0IHtcbiAgdHlwZSBBbnlOb2RlLFxuICBEb2N1bWVudCxcbiAgdHlwZSBQYXJlbnROb2RlLFxuICBpc0RvY3VtZW50IGFzIGNoZWNrSXNEb2N1bWVudCxcbn0gZnJvbSAnZG9taGFuZGxlcic7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsT3B0aW9ucyB9IGZyb20gJy4vb3B0aW9ucy5qcyc7XG5cbi8qKlxuICogR2V0IHRoZSBwYXJzZSBmdW5jdGlvbiB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHBhcmFtIHBhcnNlciAtIFRoZSBwYXJzZXIgZnVuY3Rpb24uXG4gKiBAcmV0dXJucyBUaGUgcGFyc2UgZnVuY3Rpb24gd2l0aCBvcHRpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UGFyc2UoXG4gIHBhcnNlcjogKFxuICAgIGNvbnRlbnQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiBJbnRlcm5hbE9wdGlvbnMsXG4gICAgaXNEb2N1bWVudDogYm9vbGVhbixcbiAgICBjb250ZXh0OiBQYXJlbnROb2RlIHwgbnVsbCxcbiAgKSA9PiBEb2N1bWVudCxcbikge1xuICAvKipcbiAgICogUGFyc2UgYSBIVE1MIHN0cmluZyBvciBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZW50IC0gVGhlIEhUTUwgc3RyaW5nIG9yIG5vZGUuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIHBhcnNlciBvcHRpb25zLlxuICAgKiBAcGFyYW0gaXNEb2N1bWVudCAtIElmIGBjb250ZW50YCBpcyBhIGRvY3VtZW50LlxuICAgKiBAcGFyYW0gY29udGV4dCAtIFRoZSBjb250ZXh0IG5vZGUgaW4gdGhlIERPTSB0cmVlLlxuICAgKiBAcmV0dXJucyBUaGUgcGFyc2VkIGRvY3VtZW50IG5vZGUuXG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gcGFyc2UoXG4gICAgY29udGVudDogc3RyaW5nIHwgRG9jdW1lbnQgfCBBbnlOb2RlIHwgQW55Tm9kZVtdIHwgQnVmZmVyLFxuICAgIG9wdGlvbnM6IEludGVybmFsT3B0aW9ucyxcbiAgICBpc0RvY3VtZW50OiBib29sZWFuLFxuICAgIGNvbnRleHQ6IFBhcmVudE5vZGUgfCBudWxsLFxuICApOiBEb2N1bWVudCB7XG4gICAgaWYgKHR5cGVvZiBCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIEJ1ZmZlci5pc0J1ZmZlcihjb250ZW50KSkge1xuICAgICAgY29udGVudCA9IGNvbnRlbnQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gcGFyc2VyKGNvbnRlbnQsIG9wdGlvbnMsIGlzRG9jdW1lbnQsIGNvbnRleHQpO1xuICAgIH1cblxuICAgIGNvbnN0IGRvYyA9IGNvbnRlbnQgYXMgQW55Tm9kZSB8IEFueU5vZGVbXSB8IERvY3VtZW50O1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGRvYykgJiYgY2hlY2tJc0RvY3VtZW50KGRvYykpIHtcbiAgICAgIC8vIElmIGBkb2NgIGlzIGFscmVhZHkgYSByb290LCBqdXN0IHJldHVybiBpdFxuICAgICAgcmV0dXJuIGRvYztcbiAgICB9XG5cbiAgICAvLyBBZGQgY29uZW50IHRvIG5ldyByb290IGVsZW1lbnRcbiAgICBjb25zdCByb290ID0gbmV3IERvY3VtZW50KFtdKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgRE9NIHVzaW5nIHRoZSByb290XG4gICAgdXBkYXRlKGRvYywgcm9vdCk7XG5cbiAgICByZXR1cm4gcm9vdDtcbiAgfTtcbn1cblxuLyoqXG4gKiBVcGRhdGUgdGhlIGRvbSBzdHJ1Y3R1cmUsIGZvciBvbmUgY2hhbmdlZCBsYXllci5cbiAqXG4gKiBAcGFyYW0gbmV3Q2hpbGRzIC0gVGhlIG5ldyBjaGlsZHJlbi5cbiAqIEBwYXJhbSBwYXJlbnQgLSBUaGUgbmV3IHBhcmVudC5cbiAqIEByZXR1cm5zIFRoZSBwYXJlbnQgbm9kZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVwZGF0ZShcbiAgbmV3Q2hpbGRzOiBBbnlOb2RlW10gfCBBbnlOb2RlLFxuICBwYXJlbnQ6IFBhcmVudE5vZGUgfCBudWxsLFxuKTogUGFyZW50Tm9kZSB8IG51bGwge1xuICAvLyBOb3JtYWxpemVcbiAgY29uc3QgYXJyID0gQXJyYXkuaXNBcnJheShuZXdDaGlsZHMpID8gbmV3Q2hpbGRzIDogW25ld0NoaWxkc107XG5cbiAgLy8gVXBkYXRlIHBhcmVudFxuICBpZiAocGFyZW50KSB7XG4gICAgcGFyZW50LmNoaWxkcmVuID0gYXJyO1xuICB9IGVsc2Uge1xuICAgIHBhcmVudCA9IG51bGw7XG4gIH1cblxuICAvLyBVcGRhdGUgbmVpZ2hib3JzXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qgbm9kZSA9IGFycltpXTtcblxuICAgIC8vIENsZWFubHkgcmVtb3ZlIGV4aXN0aW5nIG5vZGVzIGZyb20gdGhlaXIgcHJldmlvdXMgc3RydWN0dXJlcy5cbiAgICBpZiAobm9kZS5wYXJlbnQgJiYgbm9kZS5wYXJlbnQuY2hpbGRyZW4gIT09IGFycikge1xuICAgICAgcmVtb3ZlRWxlbWVudChub2RlKTtcbiAgICB9XG5cbiAgICBpZiAocGFyZW50KSB7XG4gICAgICBub2RlLnByZXYgPSBhcnJbaSAtIDFdIHx8IG51bGw7XG4gICAgICBub2RlLm5leHQgPSBhcnJbaSArIDFdIHx8IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUucHJldiA9IG5vZGUubmV4dCA9IG51bGw7XG4gICAgfVxuXG4gICAgbm9kZS5wYXJlbnQgPSBwYXJlbnQ7XG4gIH1cblxuICByZXR1cm4gcGFyZW50O1xufVxuIiwgIi8qKlxuICogTWV0aG9kcyBmb3IgbW9kaWZ5aW5nIHRoZSBET00gc3RydWN0dXJlLlxuICpcbiAqIEBtb2R1bGUgY2hlZXJpby9tYW5pcHVsYXRpb25cbiAqL1xuXG5pbXBvcnQge1xuICBpc1RhZyxcbiAgVGV4dCxcbiAgaGFzQ2hpbGRyZW4sXG4gIGNsb25lTm9kZSxcbiAgRG9jdW1lbnQsXG4gIHR5cGUgUGFyZW50Tm9kZSxcbiAgdHlwZSBBbnlOb2RlLFxuICB0eXBlIEVsZW1lbnQsXG59IGZyb20gJ2RvbWhhbmRsZXInO1xuaW1wb3J0IHsgdXBkYXRlIGFzIHVwZGF0ZURPTSB9IGZyb20gJy4uL3BhcnNlLmpzJztcbmltcG9ydCB7IHRleHQgYXMgc3RhdGljVGV4dCB9IGZyb20gJy4uL3N0YXRpYy5qcyc7XG5pbXBvcnQgeyBkb21FYWNoLCBpc0h0bWwsIGlzQ2hlZXJpbyB9IGZyb20gJy4uL3V0aWxzLmpzJztcbmltcG9ydCB7IHJlbW92ZUVsZW1lbnQgfSBmcm9tICdkb211dGlscyc7XG5pbXBvcnQgdHlwZSB7IENoZWVyaW8gfSBmcm9tICcuLi9jaGVlcmlvLmpzJztcbmltcG9ydCB0eXBlIHsgQmFzaWNBY2NlcHRlZEVsZW1zLCBBY2NlcHRlZEVsZW1zIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKipcbiAqIENyZWF0ZSBhbiBhcnJheSBvZiBub2RlcywgcmVjdXJzaW5nIGludG8gYXJyYXlzIGFuZCBwYXJzaW5nIHN0cmluZ3MgaWZcbiAqIG5lY2Vzc2FyeS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQHBhcmFtIGVsZW0gLSBFbGVtZW50cyB0byBtYWtlIGFuIGFycmF5IG9mLlxuICogQHBhcmFtIGNsb25lIC0gT3B0aW9uYWxseSBjbG9uZSBub2Rlcy5cbiAqIEByZXR1cm5zIFRoZSBhcnJheSBvZiBub2Rlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIF9tYWtlRG9tQXJyYXk8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBlbGVtPzogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+IHwgQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+W10sXG4gIGNsb25lPzogYm9vbGVhbixcbik6IEFueU5vZGVbXSB7XG4gIGlmIChlbGVtID09IG51bGwpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpZiAodHlwZW9mIGVsZW0gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlKGVsZW0sIHRoaXMub3B0aW9ucywgZmFsc2UsIG51bGwpLmNoaWxkcmVuLnNsaWNlKDApO1xuICB9XG5cbiAgaWYgKCdsZW5ndGgnIGluIGVsZW0pIHtcbiAgICBpZiAoZWxlbS5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiB0aGlzLl9tYWtlRG9tQXJyYXkoZWxlbVswXSwgY2xvbmUpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogQW55Tm9kZVtdID0gW107XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGVsZW0ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IGVsID0gZWxlbVtpXTtcblxuICAgICAgaWYgKHR5cGVvZiBlbCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKGVsID09IG51bGwpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghKCdsZW5ndGgnIGluIGVsKSkge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKGNsb25lID8gY2xvbmVOb2RlKGVsLCB0cnVlKSA6IGVsKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXN1bHQucHVzaCguLi50aGlzLl9tYWtlRG9tQXJyYXkoZWwsIGNsb25lKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiBbY2xvbmUgPyBjbG9uZU5vZGUoZWxlbSwgdHJ1ZSkgOiBlbGVtXTtcbn1cblxuZnVuY3Rpb24gX2luc2VydChcbiAgY29uY2F0ZW5hdG9yOiAoXG4gICAgZG9tOiBBbnlOb2RlW10sXG4gICAgY2hpbGRyZW46IEFueU5vZGVbXSxcbiAgICBwYXJlbnQ6IFBhcmVudE5vZGUsXG4gICkgPT4gdm9pZCxcbikge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgICB0aGlzOiBDaGVlcmlvPFQ+LFxuICAgIC4uLmVsZW1zOlxuICAgICAgfCBbXG4gICAgICAgICAgKFxuICAgICAgICAgICAgdGhpczogQW55Tm9kZSxcbiAgICAgICAgICAgIGk6IG51bWJlcixcbiAgICAgICAgICAgIGh0bWw6IHN0cmluZyxcbiAgICAgICAgICApID0+IEJhc2ljQWNjZXB0ZWRFbGVtczxBbnlOb2RlPixcbiAgICAgICAgXVxuICAgICAgfCBCYXNpY0FjY2VwdGVkRWxlbXM8QW55Tm9kZT5bXVxuICApIHtcbiAgICBjb25zdCBsYXN0SWR4ID0gdGhpcy5sZW5ndGggLSAxO1xuXG4gICAgcmV0dXJuIGRvbUVhY2godGhpcywgKGVsLCBpKSA9PiB7XG4gICAgICBpZiAoIWhhc0NoaWxkcmVuKGVsKSkgcmV0dXJuO1xuXG4gICAgICBjb25zdCBkb21TcmMgPVxuICAgICAgICB0eXBlb2YgZWxlbXNbMF0gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IGVsZW1zWzBdLmNhbGwoZWwsIGksIHRoaXMuX3JlbmRlcihlbC5jaGlsZHJlbikpXG4gICAgICAgICAgOiAoZWxlbXMgYXMgQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+W10pO1xuXG4gICAgICBjb25zdCBkb20gPSB0aGlzLl9tYWtlRG9tQXJyYXkoZG9tU3JjLCBpIDwgbGFzdElkeCk7XG4gICAgICBjb25jYXRlbmF0b3IoZG9tLCBlbC5jaGlsZHJlbiwgZWwpO1xuICAgIH0pO1xuICB9O1xufVxuXG4vKipcbiAqIE1vZGlmeSBhbiBhcnJheSBpbi1wbGFjZSwgcmVtb3Zpbmcgc29tZSBudW1iZXIgb2YgZWxlbWVudHMgYW5kIGFkZGluZyBuZXdcbiAqIGVsZW1lbnRzIGRpcmVjdGx5IGZvbGxvd2luZyB0aGVtLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgTWFuaXB1bGF0aW9uXG4gKiBAcGFyYW0gYXJyYXkgLSBUYXJnZXQgYXJyYXkgdG8gc3BsaWNlLlxuICogQHBhcmFtIHNwbGljZUlkeCAtIEluZGV4IGF0IHdoaWNoIHRvIGJlZ2luIGNoYW5naW5nIHRoZSBhcnJheS5cbiAqIEBwYXJhbSBzcGxpY2VDb3VudCAtIE51bWJlciBvZiBlbGVtZW50cyB0byByZW1vdmUgZnJvbSB0aGUgYXJyYXkuXG4gKiBAcGFyYW0gbmV3RWxlbXMgLSBFbGVtZW50cyB0byBpbnNlcnQgaW50byB0aGUgYXJyYXkuXG4gKiBAcGFyYW0gcGFyZW50IC0gVGhlIHBhcmVudCBvZiB0aGUgbm9kZS5cbiAqIEByZXR1cm5zIFRoZSBzcGxpY2VkIGFycmF5LlxuICovXG5mdW5jdGlvbiB1bmlxdWVTcGxpY2UoXG4gIGFycmF5OiBBbnlOb2RlW10sXG4gIHNwbGljZUlkeDogbnVtYmVyLFxuICBzcGxpY2VDb3VudDogbnVtYmVyLFxuICBuZXdFbGVtczogQW55Tm9kZVtdLFxuICBwYXJlbnQ6IFBhcmVudE5vZGUsXG4pOiBBbnlOb2RlW10ge1xuICBjb25zdCBzcGxpY2VBcmdzOiBQYXJhbWV0ZXJzPHR5cGVvZiBBcnJheS5wcm90b3R5cGUuc3BsaWNlPiA9IFtcbiAgICBzcGxpY2VJZHgsXG4gICAgc3BsaWNlQ291bnQsXG4gICAgLi4ubmV3RWxlbXMsXG4gIF07XG4gIGNvbnN0IHByZXYgPSBzcGxpY2VJZHggPT09IDAgPyBudWxsIDogYXJyYXlbc3BsaWNlSWR4IC0gMV07XG4gIGNvbnN0IG5leHQgPVxuICAgIHNwbGljZUlkeCArIHNwbGljZUNvdW50ID49IGFycmF5Lmxlbmd0aFxuICAgICAgPyBudWxsXG4gICAgICA6IGFycmF5W3NwbGljZUlkeCArIHNwbGljZUNvdW50XTtcblxuICAvKlxuICAgKiBCZWZvcmUgc3BsaWNpbmcgaW4gbmV3IGVsZW1lbnRzLCBlbnN1cmUgdGhleSBkbyBub3QgYWxyZWFkeSBhcHBlYXIgaW4gdGhlXG4gICAqIGN1cnJlbnQgYXJyYXkuXG4gICAqL1xuICBmb3IgKGxldCBpZHggPSAwOyBpZHggPCBuZXdFbGVtcy5sZW5ndGg7ICsraWR4KSB7XG4gICAgY29uc3Qgbm9kZSA9IG5ld0VsZW1zW2lkeF07XG4gICAgY29uc3Qgb2xkUGFyZW50ID0gbm9kZS5wYXJlbnQ7XG5cbiAgICBpZiAob2xkUGFyZW50KSB7XG4gICAgICBjb25zdCBvbGRTaWJsaW5nczogQW55Tm9kZVtdID0gb2xkUGFyZW50LmNoaWxkcmVuO1xuICAgICAgY29uc3QgcHJldklkeCA9IG9sZFNpYmxpbmdzLmluZGV4T2Yobm9kZSk7XG5cbiAgICAgIGlmIChwcmV2SWR4ID4gLTEpIHtcbiAgICAgICAgb2xkUGFyZW50LmNoaWxkcmVuLnNwbGljZShwcmV2SWR4LCAxKTtcbiAgICAgICAgaWYgKHBhcmVudCA9PT0gb2xkUGFyZW50ICYmIHNwbGljZUlkeCA+IHByZXZJZHgpIHtcbiAgICAgICAgICBzcGxpY2VBcmdzWzBdLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBub2RlLnBhcmVudCA9IHBhcmVudDtcblxuICAgIGlmIChub2RlLnByZXYpIHtcbiAgICAgIG5vZGUucHJldi5uZXh0ID0gbm9kZS5uZXh0ID8/IG51bGw7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUubmV4dCkge1xuICAgICAgbm9kZS5uZXh0LnByZXYgPSBub2RlLnByZXYgPz8gbnVsbDtcbiAgICB9XG5cbiAgICBub2RlLnByZXYgPSBpZHggPT09IDAgPyBwcmV2IDogbmV3RWxlbXNbaWR4IC0gMV07XG4gICAgbm9kZS5uZXh0ID0gaWR4ID09PSBuZXdFbGVtcy5sZW5ndGggLSAxID8gbmV4dCA6IG5ld0VsZW1zW2lkeCArIDFdO1xuICB9XG5cbiAgaWYgKHByZXYpIHtcbiAgICBwcmV2Lm5leHQgPSBuZXdFbGVtc1swXTtcbiAgfVxuICBpZiAobmV4dCkge1xuICAgIG5leHQucHJldiA9IG5ld0VsZW1zW25ld0VsZW1zLmxlbmd0aCAtIDFdO1xuICB9XG4gIHJldHVybiBhcnJheS5zcGxpY2UoLi4uc3BsaWNlQXJncyk7XG59XG5cbi8qKlxuICogSW5zZXJ0IGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzIHRvIHRoZSBlbmQgb2YgdGhlIHRhcmdldC5cbiAqXG4gKiBAY2F0ZWdvcnkgTWFuaXB1bGF0aW9uXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCc8bGkgY2xhc3M9XCJwbHVtXCI+UGx1bTwvbGk+JykuYXBwZW5kVG8oJyNmcnVpdHMnKTtcbiAqICQuaHRtbCgpO1xuICogLy89PiAgPHVsIGlkPVwiZnJ1aXRzXCI+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cImFwcGxlXCI+QXBwbGU8L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJvcmFuZ2VcIj5PcmFuZ2U8L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJwZWFyXCI+UGVhcjwvbGk+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cInBsdW1cIj5QbHVtPC9saT5cbiAqIC8vICAgIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gRWxlbWVudCB0byBhcHBlbmQgZWxlbWVudHMgdG8uXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9hcHBlbmRUby99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRUbzxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIHRhcmdldDogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+LFxuKTogQ2hlZXJpbzxUPiB7XG4gIGNvbnN0IGFwcGVuZFRhcmdldCA9IGlzQ2hlZXJpbzxUPih0YXJnZXQpID8gdGFyZ2V0IDogdGhpcy5fbWFrZSh0YXJnZXQpO1xuXG4gIGFwcGVuZFRhcmdldC5hcHBlbmQodGhpcyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogSW5zZXJ0IGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlXG4gKiB0YXJnZXQuXG4gKlxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPicpLnByZXBlbmRUbygnI2ZydWl0cycpO1xuICogJC5odG1sKCk7XG4gKiAvLz0+ICA8dWwgaWQ9XCJmcnVpdHNcIj5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJhcHBsZVwiPkFwcGxlPC9saT5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwicGVhclwiPlBlYXI8L2xpPlxuICogLy8gICAgPC91bD5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB0YXJnZXQgLSBFbGVtZW50IHRvIHByZXBlbmQgZWxlbWVudHMgdG8uXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9wcmVwZW5kVG8vfVxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGVuZFRvPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgdGFyZ2V0OiBCYXNpY0FjY2VwdGVkRWxlbXM8QW55Tm9kZT4sXG4pOiBDaGVlcmlvPFQ+IHtcbiAgY29uc3QgcHJlcGVuZFRhcmdldCA9IGlzQ2hlZXJpbzxUPih0YXJnZXQpID8gdGFyZ2V0IDogdGhpcy5fbWFrZSh0YXJnZXQpO1xuXG4gIHByZXBlbmRUYXJnZXQucHJlcGVuZCh0aGlzKTtcblxuICByZXR1cm4gdGhpcztcbn1cblxuLyoqXG4gKiBJbnNlcnRzIGNvbnRlbnQgYXMgdGhlIF9sYXN0XyBjaGlsZCBvZiBlYWNoIG9mIHRoZSBzZWxlY3RlZCBlbGVtZW50cy5cbiAqXG4gKiBAY2F0ZWdvcnkgTWFuaXB1bGF0aW9uXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCd1bCcpLmFwcGVuZCgnPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPicpO1xuICogJC5odG1sKCk7XG4gKiAvLz0+ICA8dWwgaWQ9XCJmcnVpdHNcIj5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwiYXBwbGVcIj5BcHBsZTwvbGk+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cIm9yYW5nZVwiPk9yYW5nZTwvbGk+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cInBlYXJcIj5QZWFyPC9saT5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPlxuICogLy8gICAgPC91bD5cbiAqIGBgYFxuICpcbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vYXBwZW5kL31cbiAqL1xuZXhwb3J0IGNvbnN0IGFwcGVuZDogPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgLi4uZWxlbXM6XG4gICAgfCBbKHRoaXM6IEFueU5vZGUsIGk6IG51bWJlciwgaHRtbDogc3RyaW5nKSA9PiBCYXNpY0FjY2VwdGVkRWxlbXM8QW55Tm9kZT5dXG4gICAgfCBCYXNpY0FjY2VwdGVkRWxlbXM8QW55Tm9kZT5bXVxuKSA9PiBDaGVlcmlvPFQ+ID0gX2luc2VydCgoZG9tLCBjaGlsZHJlbiwgcGFyZW50KSA9PiB7XG4gIHVuaXF1ZVNwbGljZShjaGlsZHJlbiwgY2hpbGRyZW4ubGVuZ3RoLCAwLCBkb20sIHBhcmVudCk7XG59KTtcblxuLyoqXG4gKiBJbnNlcnRzIGNvbnRlbnQgYXMgdGhlIF9maXJzdF8gY2hpbGQgb2YgZWFjaCBvZiB0aGUgc2VsZWN0ZWQgZWxlbWVudHMuXG4gKlxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgndWwnKS5wcmVwZW5kKCc8bGkgY2xhc3M9XCJwbHVtXCI+UGx1bTwvbGk+Jyk7XG4gKiAkLmh0bWwoKTtcbiAqIC8vPT4gIDx1bCBpZD1cImZydWl0c1wiPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJwbHVtXCI+UGx1bTwvbGk+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cImFwcGxlXCI+QXBwbGU8L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJvcmFuZ2VcIj5PcmFuZ2U8L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJwZWFyXCI+UGVhcjwvbGk+XG4gKiAvLyAgICA8L3VsPlxuICogYGBgXG4gKlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9wcmVwZW5kL31cbiAqL1xuZXhwb3J0IGNvbnN0IHByZXBlbmQ6IDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIC4uLmVsZW1zOlxuICAgIHwgWyh0aGlzOiBBbnlOb2RlLCBpOiBudW1iZXIsIGh0bWw6IHN0cmluZykgPT4gQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+XVxuICAgIHwgQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+W11cbikgPT4gQ2hlZXJpbzxUPiA9IF9pbnNlcnQoKGRvbSwgY2hpbGRyZW4sIHBhcmVudCkgPT4ge1xuICB1bmlxdWVTcGxpY2UoY2hpbGRyZW4sIDAsIDAsIGRvbSwgcGFyZW50KTtcbn0pO1xuXG5mdW5jdGlvbiBfd3JhcChcbiAgaW5zZXJ0OiAoXG4gICAgZWw6IEFueU5vZGUsXG4gICAgZWxJbnNlcnRMb2NhdGlvbjogUGFyZW50Tm9kZSxcbiAgICB3cmFwcGVyRG9tOiBQYXJlbnROb2RlW10sXG4gICkgPT4gdm9pZCxcbikge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgICB0aGlzOiBDaGVlcmlvPFQ+LFxuICAgIHdyYXBwZXI6IEFjY2VwdGVkRWxlbXM8QW55Tm9kZT4sXG4gICkge1xuICAgIGNvbnN0IGxhc3RJZHggPSB0aGlzLmxlbmd0aCAtIDE7XG4gICAgY29uc3QgbGFzdFBhcmVudCA9IHRoaXMucGFyZW50cygpLmxhc3QoKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZWwgPSB0aGlzW2ldO1xuXG4gICAgICBjb25zdCB3cmFwID1cbiAgICAgICAgdHlwZW9mIHdyYXBwZXIgPT09ICdmdW5jdGlvbidcbiAgICAgICAgICA/IHdyYXBwZXIuY2FsbChlbCwgaSwgZWwpXG4gICAgICAgICAgOiB0eXBlb2Ygd3JhcHBlciA9PT0gJ3N0cmluZycgJiYgIWlzSHRtbCh3cmFwcGVyKVxuICAgICAgICAgICAgPyBsYXN0UGFyZW50LmZpbmQod3JhcHBlcikuY2xvbmUoKVxuICAgICAgICAgICAgOiB3cmFwcGVyO1xuXG4gICAgICBjb25zdCBbd3JhcHBlckRvbV0gPSB0aGlzLl9tYWtlRG9tQXJyYXkod3JhcCwgaSA8IGxhc3RJZHgpO1xuXG4gICAgICBpZiAoIXdyYXBwZXJEb20gfHwgIWhhc0NoaWxkcmVuKHdyYXBwZXJEb20pKSBjb250aW51ZTtcblxuICAgICAgbGV0IGVsSW5zZXJ0TG9jYXRpb24gPSB3cmFwcGVyRG9tO1xuXG4gICAgICAvKlxuICAgICAgICogRmluZCB0aGUgZGVlcGVzdCBjaGlsZC4gT25seSBjb25zaWRlciB0aGUgZmlyc3QgdGFnIGNoaWxkIG9mIGVhY2ggbm9kZVxuICAgICAgICogKGlnbm9yZSB0ZXh0KTsgc3RvcCBpZiBubyBjaGlsZHJlbiBhcmUgZm91bmQuXG4gICAgICAgKi9cbiAgICAgIGxldCBqID0gMDtcblxuICAgICAgd2hpbGUgKGogPCBlbEluc2VydExvY2F0aW9uLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBjaGlsZCA9IGVsSW5zZXJ0TG9jYXRpb24uY2hpbGRyZW5bal07XG4gICAgICAgIGlmIChpc1RhZyhjaGlsZCkpIHtcbiAgICAgICAgICBlbEluc2VydExvY2F0aW9uID0gY2hpbGQ7XG4gICAgICAgICAgaiA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaisrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGluc2VydChlbCwgZWxJbnNlcnRMb2NhdGlvbiwgW3dyYXBwZXJEb21dKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGUgLndyYXAoKSBmdW5jdGlvbiBjYW4gdGFrZSBhbnkgc3RyaW5nIG9yIG9iamVjdCB0aGF0IGNvdWxkIGJlIHBhc3NlZCB0b1xuICogdGhlICQoKSBmYWN0b3J5IGZ1bmN0aW9uIHRvIHNwZWNpZnkgYSBET00gc3RydWN0dXJlLiBUaGlzIHN0cnVjdHVyZSBtYXkgYmVcbiAqIG5lc3RlZCBzZXZlcmFsIGxldmVscyBkZWVwLCBidXQgc2hvdWxkIGNvbnRhaW4gb25seSBvbmUgaW5tb3N0IGVsZW1lbnQuIEFcbiAqIGNvcHkgb2YgdGhpcyBzdHJ1Y3R1cmUgd2lsbCBiZSB3cmFwcGVkIGFyb3VuZCBlYWNoIG9mIHRoZSBlbGVtZW50cyBpbiB0aGUgc2V0XG4gKiBvZiBtYXRjaGVkIGVsZW1lbnRzLiBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBvcmlnaW5hbCBzZXQgb2YgZWxlbWVudHMgZm9yXG4gKiBjaGFpbmluZyBwdXJwb3Nlcy5cbiAqXG4gKiBAY2F0ZWdvcnkgTWFuaXB1bGF0aW9uXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCByZWRGcnVpdCA9ICQoJzxkaXYgY2xhc3M9XCJyZWQtZnJ1aXRcIj48L2Rpdj4nKTtcbiAqICQoJy5hcHBsZScpLndyYXAocmVkRnJ1aXQpO1xuICpcbiAqIC8vPT4gPHVsIGlkPVwiZnJ1aXRzXCI+XG4gKiAvLyAgICAgPGRpdiBjbGFzcz1cInJlZC1mcnVpdFwiPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJhcHBsZVwiPkFwcGxlPC9saT5cbiAqIC8vICAgICA8L2Rpdj5cbiAqIC8vICAgICA8bGkgY2xhc3M9XCJvcmFuZ2VcIj5PcmFuZ2U8L2xpPlxuICogLy8gICAgIDxsaSBjbGFzcz1cInBsdW1cIj5QbHVtPC9saT5cbiAqIC8vICAgPC91bD5cbiAqXG4gKiBjb25zdCBoZWFsdGh5ID0gJCgnPGRpdiBjbGFzcz1cImhlYWx0aHlcIj48L2Rpdj4nKTtcbiAqICQoJ2xpJykud3JhcChoZWFsdGh5KTtcbiAqXG4gKiAvLz0+IDx1bCBpZD1cImZydWl0c1wiPlxuICogLy8gICAgIDxkaXYgY2xhc3M9XCJoZWFsdGh5XCI+XG4gKiAvLyAgICAgICA8bGkgY2xhc3M9XCJhcHBsZVwiPkFwcGxlPC9saT5cbiAqIC8vICAgICA8L2Rpdj5cbiAqIC8vICAgICA8ZGl2IGNsYXNzPVwiaGVhbHRoeVwiPlxuICogLy8gICAgICAgPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT5cbiAqIC8vICAgICA8L2Rpdj5cbiAqIC8vICAgICA8ZGl2IGNsYXNzPVwiaGVhbHRoeVwiPlxuICogLy8gICAgICAgIDxsaSBjbGFzcz1cInBsdW1cIj5QbHVtPC9saT5cbiAqIC8vICAgICA8L2Rpdj5cbiAqIC8vICAgPC91bD5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB3cmFwcGVyIC0gVGhlIERPTSBzdHJ1Y3R1cmUgdG8gd3JhcCBhcm91bmQgZWFjaCBlbGVtZW50IGluIHRoZVxuICogICBzZWxlY3Rpb24uXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3dyYXAvfVxuICovXG5leHBvcnQgY29uc3Qgd3JhcDogPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgd3JhcHBlcjogQWNjZXB0ZWRFbGVtczxBbnlOb2RlPixcbikgPT4gQ2hlZXJpbzxUPiA9IF93cmFwKChlbCwgZWxJbnNlcnRMb2NhdGlvbiwgd3JhcHBlckRvbSkgPT4ge1xuICBjb25zdCB7IHBhcmVudCB9ID0gZWw7XG5cbiAgaWYgKCFwYXJlbnQpIHJldHVybjtcblxuICBjb25zdCBzaWJsaW5nczogQW55Tm9kZVtdID0gcGFyZW50LmNoaWxkcmVuO1xuICBjb25zdCBpbmRleCA9IHNpYmxpbmdzLmluZGV4T2YoZWwpO1xuXG4gIHVwZGF0ZURPTShbZWxdLCBlbEluc2VydExvY2F0aW9uKTtcbiAgLypcbiAgICogVGhlIHByZXZpb3VzIG9wZXJhdGlvbiByZW1vdmVkIHRoZSBjdXJyZW50IGVsZW1lbnQgZnJvbSB0aGUgYHNpYmxpbmdzYFxuICAgKiBhcnJheSwgc28gdGhlIGBkb21gIGFycmF5IGNhbiBiZSBpbnNlcnRlZCB3aXRob3V0IHJlbW92aW5nIGFueVxuICAgKiBhZGRpdGlvbmFsIGVsZW1lbnRzLlxuICAgKi9cbiAgdW5pcXVlU3BsaWNlKHNpYmxpbmdzLCBpbmRleCwgMCwgd3JhcHBlckRvbSwgcGFyZW50KTtcbn0pO1xuXG4vKipcbiAqIFRoZSAud3JhcElubmVyKCkgZnVuY3Rpb24gY2FuIHRha2UgYW55IHN0cmluZyBvciBvYmplY3QgdGhhdCBjb3VsZCBiZSBwYXNzZWRcbiAqIHRvIHRoZSAkKCkgZmFjdG9yeSBmdW5jdGlvbiB0byBzcGVjaWZ5IGEgRE9NIHN0cnVjdHVyZS4gVGhpcyBzdHJ1Y3R1cmUgbWF5IGJlXG4gKiBuZXN0ZWQgc2V2ZXJhbCBsZXZlbHMgZGVlcCwgYnV0IHNob3VsZCBjb250YWluIG9ubHkgb25lIGlubW9zdCBlbGVtZW50LiBUaGVcbiAqIHN0cnVjdHVyZSB3aWxsIGJlIHdyYXBwZWQgYXJvdW5kIHRoZSBjb250ZW50IG9mIGVhY2ggb2YgdGhlIGVsZW1lbnRzIGluIHRoZVxuICogc2V0IG9mIG1hdGNoZWQgZWxlbWVudHMuXG4gKlxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcmVkRnJ1aXQgPSAkKCc8ZGl2IGNsYXNzPVwicmVkLWZydWl0XCI+PC9kaXY+Jyk7XG4gKiAkKCcuYXBwbGUnKS53cmFwSW5uZXIocmVkRnJ1aXQpO1xuICpcbiAqIC8vPT4gPHVsIGlkPVwiZnJ1aXRzXCI+XG4gKiAvLyAgICAgPGxpIGNsYXNzPVwiYXBwbGVcIj5cbiAqIC8vICAgICAgIDxkaXYgY2xhc3M9XCJyZWQtZnJ1aXRcIj5BcHBsZTwvZGl2PlxuICogLy8gICAgIDwvbGk+XG4gKiAvLyAgICAgPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT5cbiAqIC8vICAgICA8bGkgY2xhc3M9XCJwZWFyXCI+UGVhcjwvbGk+XG4gKiAvLyAgIDwvdWw+XG4gKlxuICogY29uc3QgaGVhbHRoeSA9ICQoJzxkaXYgY2xhc3M9XCJoZWFsdGh5XCI+PC9kaXY+Jyk7XG4gKiAkKCdsaScpLndyYXBJbm5lcihoZWFsdGh5KTtcbiAqXG4gKiAvLz0+IDx1bCBpZD1cImZydWl0c1wiPlxuICogLy8gICAgIDxsaSBjbGFzcz1cImFwcGxlXCI+XG4gKiAvLyAgICAgICA8ZGl2IGNsYXNzPVwiaGVhbHRoeVwiPkFwcGxlPC9kaXY+XG4gKiAvLyAgICAgPC9saT5cbiAqIC8vICAgICA8bGkgY2xhc3M9XCJvcmFuZ2VcIj5cbiAqIC8vICAgICAgIDxkaXYgY2xhc3M9XCJoZWFsdGh5XCI+T3JhbmdlPC9kaXY+XG4gKiAvLyAgICAgPC9saT5cbiAqIC8vICAgICA8bGkgY2xhc3M9XCJwZWFyXCI+XG4gKiAvLyAgICAgICA8ZGl2IGNsYXNzPVwiaGVhbHRoeVwiPlBlYXI8L2Rpdj5cbiAqIC8vICAgICA8L2xpPlxuICogLy8gICA8L3VsPlxuICogYGBgXG4gKlxuICogQHBhcmFtIHdyYXBwZXIgLSBUaGUgRE9NIHN0cnVjdHVyZSB0byB3cmFwIGFyb3VuZCB0aGUgY29udGVudCBvZiBlYWNoIGVsZW1lbnRcbiAqICAgaW4gdGhlIHNlbGVjdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBpdHNlbGYsIGZvciBjaGFpbmluZy5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vd3JhcElubmVyL31cbiAqL1xuZXhwb3J0IGNvbnN0IHdyYXBJbm5lcjogPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgd3JhcHBlcjogQWNjZXB0ZWRFbGVtczxBbnlOb2RlPixcbikgPT4gQ2hlZXJpbzxUPiA9IF93cmFwKChlbCwgZWxJbnNlcnRMb2NhdGlvbiwgd3JhcHBlckRvbSkgPT4ge1xuICBpZiAoIWhhc0NoaWxkcmVuKGVsKSkgcmV0dXJuO1xuICB1cGRhdGVET00oZWwuY2hpbGRyZW4sIGVsSW5zZXJ0TG9jYXRpb24pO1xuICB1cGRhdGVET00od3JhcHBlckRvbSwgZWwpO1xufSk7XG5cbi8qKlxuICogVGhlIC51bndyYXAoKSBmdW5jdGlvbiwgcmVtb3ZlcyB0aGUgcGFyZW50cyBvZiB0aGUgc2V0IG9mIG1hdGNoZWQgZWxlbWVudHNcbiAqIGZyb20gdGhlIERPTSwgbGVhdmluZyB0aGUgbWF0Y2hlZCBlbGVtZW50cyBpbiB0aGVpciBwbGFjZS5cbiAqXG4gKiBAY2F0ZWdvcnkgTWFuaXB1bGF0aW9uXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj53aXRob3V0IHNlbGVjdG9yPC9jYXB0aW9uPlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCAkID0gY2hlZXJpby5sb2FkKFxuICogICAnPGRpdiBpZD10ZXN0PlxcbiAgPGRpdj48cD5IZWxsbzwvcD48L2Rpdj5cXG4gIDxkaXY+PHA+V29ybGQ8L3A+PC9kaXY+XFxuPC9kaXY+JyxcbiAqICk7XG4gKiAkKCcjdGVzdCBwJykudW53cmFwKCk7XG4gKlxuICogLy89PiA8ZGl2IGlkPXRlc3Q+XG4gKiAvLyAgICAgPHA+SGVsbG88L3A+XG4gKiAvLyAgICAgPHA+V29ybGQ8L3A+XG4gKiAvLyAgIDwvZGl2PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgPGNhcHRpb24+d2l0aCBzZWxlY3RvcjwvY2FwdGlvbj5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgJCA9IGNoZWVyaW8ubG9hZChcbiAqICAgJzxkaXYgaWQ9dGVzdD5cXG4gIDxwPkhlbGxvPC9wPlxcbiAgPGI+PHA+V29ybGQ8L3A+PC9iPlxcbjwvZGl2PicsXG4gKiApO1xuICogJCgnI3Rlc3QgcCcpLnVud3JhcCgnYicpO1xuICpcbiAqIC8vPT4gPGRpdiBpZD10ZXN0PlxuICogLy8gICAgIDxwPkhlbGxvPC9wPlxuICogLy8gICAgIDxwPldvcmxkPC9wPlxuICogLy8gICA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzZWxlY3RvciAtIEEgc2VsZWN0b3IgdG8gY2hlY2sgdGhlIHBhcmVudCBlbGVtZW50IGFnYWluc3QuIElmIGFuXG4gKiAgIGVsZW1lbnQncyBwYXJlbnQgZG9lcyBub3QgbWF0Y2ggdGhlIHNlbGVjdG9yLCB0aGUgZWxlbWVudCB3b24ndCBiZVxuICogICB1bndyYXBwZWQuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLCBmb3IgY2hhaW5pbmcuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3Vud3JhcC99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bndyYXA8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzZWxlY3Rvcj86IHN0cmluZyxcbik6IENoZWVyaW88VD4ge1xuICB0aGlzLnBhcmVudChzZWxlY3RvcilcbiAgICAubm90KCdib2R5JylcbiAgICAuZWFjaCgoXywgZWwpID0+IHtcbiAgICAgIHRoaXMuX21ha2UoZWwpLnJlcGxhY2VXaXRoKGVsLmNoaWxkcmVuKTtcbiAgICB9KTtcbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogVGhlIC53cmFwQWxsKCkgZnVuY3Rpb24gY2FuIHRha2UgYW55IHN0cmluZyBvciBvYmplY3QgdGhhdCBjb3VsZCBiZSBwYXNzZWQgdG9cbiAqIHRoZSAkKCkgZnVuY3Rpb24gdG8gc3BlY2lmeSBhIERPTSBzdHJ1Y3R1cmUuIFRoaXMgc3RydWN0dXJlIG1heSBiZSBuZXN0ZWRcbiAqIHNldmVyYWwgbGV2ZWxzIGRlZXAsIGJ1dCBzaG91bGQgY29udGFpbiBvbmx5IG9uZSBpbm1vc3QgZWxlbWVudC4gVGhlXG4gKiBzdHJ1Y3R1cmUgd2lsbCBiZSB3cmFwcGVkIGFyb3VuZCBhbGwgb2YgdGhlIGVsZW1lbnRzIGluIHRoZSBzZXQgb2YgbWF0Y2hlZFxuICogZWxlbWVudHMsIGFzIGEgc2luZ2xlIGdyb3VwLlxuICpcbiAqIEBjYXRlZ29yeSBNYW5pcHVsYXRpb25cbiAqIEBleGFtcGxlIDxjYXB0aW9uPldpdGggbWFya3VwIHBhc3NlZCB0byBgd3JhcEFsbGA8L2NhcHRpb24+XG4gKlxuICogYGBganNcbiAqIGNvbnN0ICQgPSBjaGVlcmlvLmxvYWQoXG4gKiAgICc8ZGl2IGNsYXNzPVwiY29udGFpbmVyXCI+PGRpdiBjbGFzcz1cImlubmVyXCI+Rmlyc3Q8L2Rpdj48ZGl2IGNsYXNzPVwiaW5uZXJcIj5TZWNvbmQ8L2Rpdj48L2Rpdj4nLFxuICogKTtcbiAqICQoJy5pbm5lcicpLndyYXBBbGwoXCI8ZGl2IGNsYXNzPSduZXcnPjwvZGl2PlwiKTtcbiAqXG4gKiAvLz0+IDxkaXYgY2xhc3M9XCJjb250YWluZXJcIj5cbiAqIC8vICAgICA8ZGl2IGNsYXNzPSduZXcnPlxuICogLy8gICAgICAgPGRpdiBjbGFzcz1cImlubmVyXCI+Rmlyc3Q8L2Rpdj5cbiAqIC8vICAgICAgIDxkaXYgY2xhc3M9XCJpbm5lclwiPlNlY29uZDwvZGl2PlxuICogLy8gICAgIDwvZGl2PlxuICogLy8gICA8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIDxjYXB0aW9uPldpdGggYW4gZXhpc3RpbmcgY2hlZXJpbyBpbnN0YW5jZTwvY2FwdGlvbj5cbiAqXG4gKiBgYGBqc1xuICogY29uc3QgJCA9IGNoZWVyaW8ubG9hZChcbiAqICAgJzxzcGFuPlNwYW4gMTwvc3Bhbj48c3Ryb25nPlN0cm9uZzwvc3Ryb25nPjxzcGFuPlNwYW4gMjwvc3Bhbj4nLFxuICogKTtcbiAqIGNvbnN0IHdyYXAgPSAkKCc8ZGl2PjxwPjxlbT48Yj48L2I+PC9lbT48L3A+PC9kaXY+Jyk7XG4gKiAkKCdzcGFuJykud3JhcEFsbCh3cmFwKTtcbiAqXG4gKiAvLz0+IDxkaXY+XG4gKiAvLyAgICAgPHA+XG4gKiAvLyAgICAgICA8ZW0+XG4gKiAvLyAgICAgICAgIDxiPlxuICogLy8gICAgICAgICAgIDxzcGFuPlNwYW4gMTwvc3Bhbj5cbiAqIC8vICAgICAgICAgICA8c3Bhbj5TcGFuIDI8L3NwYW4+XG4gKiAvLyAgICAgICAgIDwvYj5cbiAqIC8vICAgICAgIDwvZW0+XG4gKiAvLyAgICAgPC9wPlxuICogLy8gICA8L2Rpdj5cbiAqIC8vICAgPHN0cm9uZz5TdHJvbmc8L3N0cm9uZz5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSB3cmFwcGVyIC0gVGhlIERPTSBzdHJ1Y3R1cmUgdG8gd3JhcCBhcm91bmQgYWxsIG1hdGNoZWQgZWxlbWVudHMgaW4gdGhlXG4gKiAgIHNlbGVjdGlvbi5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBpdHNlbGYuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3dyYXBBbGwvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gd3JhcEFsbDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIHdyYXBwZXI6IEFjY2VwdGVkRWxlbXM8VD4sXG4pOiBDaGVlcmlvPFQ+IHtcbiAgY29uc3QgZWwgPSB0aGlzWzBdO1xuICBpZiAoZWwpIHtcbiAgICBjb25zdCB3cmFwOiBDaGVlcmlvPEFueU5vZGU+ID0gdGhpcy5fbWFrZShcbiAgICAgIHR5cGVvZiB3cmFwcGVyID09PSAnZnVuY3Rpb24nID8gd3JhcHBlci5jYWxsKGVsLCAwLCBlbCkgOiB3cmFwcGVyLFxuICAgICkuaW5zZXJ0QmVmb3JlKGVsKTtcblxuICAgIC8vIElmIGh0bWwgaXMgZ2l2ZW4gYXMgd3JhcHBlciwgd3JhcCBtYXkgY29udGFpbiB0ZXh0IGVsZW1lbnRzXG4gICAgbGV0IGVsSW5zZXJ0TG9jYXRpb246IEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdyYXAubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh3cmFwW2ldLnR5cGUgPT09ICd0YWcnKSBlbEluc2VydExvY2F0aW9uID0gd3JhcFtpXSBhcyBFbGVtZW50O1xuICAgIH1cblxuICAgIGxldCBqID0gMDtcblxuICAgIC8qXG4gICAgICogRmluZCB0aGUgZGVlcGVzdCBjaGlsZC4gT25seSBjb25zaWRlciB0aGUgZmlyc3QgdGFnIGNoaWxkIG9mIGVhY2ggbm9kZVxuICAgICAqIChpZ25vcmUgdGV4dCk7IHN0b3AgaWYgbm8gY2hpbGRyZW4gYXJlIGZvdW5kLlxuICAgICAqL1xuICAgIHdoaWxlIChlbEluc2VydExvY2F0aW9uICYmIGogPCBlbEluc2VydExvY2F0aW9uLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgY29uc3QgY2hpbGQgPSBlbEluc2VydExvY2F0aW9uLmNoaWxkcmVuW2pdO1xuICAgICAgaWYgKGNoaWxkLnR5cGUgPT09ICd0YWcnKSB7XG4gICAgICAgIGVsSW5zZXJ0TG9jYXRpb24gPSBjaGlsZCBhcyBFbGVtZW50O1xuICAgICAgICBqID0gMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGorKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZWxJbnNlcnRMb2NhdGlvbikgdGhpcy5fbWFrZShlbEluc2VydExvY2F0aW9uKS5hcHBlbmQodGhpcyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogSW5zZXJ0IGNvbnRlbnQgbmV4dCB0byBlYWNoIGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzLlxuICpcbiAqIEBjYXRlZ29yeSBNYW5pcHVsYXRpb25cbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5hcHBsZScpLmFmdGVyKCc8bGkgY2xhc3M9XCJwbHVtXCI+UGx1bTwvbGk+Jyk7XG4gKiAkLmh0bWwoKTtcbiAqIC8vPT4gIDx1bCBpZD1cImZydWl0c1wiPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJhcHBsZVwiPkFwcGxlPC9saT5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJvcmFuZ2VcIj5PcmFuZ2U8L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJwZWFyXCI+UGVhcjwvbGk+XG4gKiAvLyAgICA8L3VsPlxuICogYGBgXG4gKlxuICogQHBhcmFtIGVsZW1zIC0gSFRNTCBzdHJpbmcsIERPTSBlbGVtZW50LCBhcnJheSBvZiBET00gZWxlbWVudHMgb3IgQ2hlZXJpbyB0b1xuICogICBpbnNlcnQgYWZ0ZXIgZWFjaCBlbGVtZW50IGluIHRoZSBzZXQgb2YgbWF0Y2hlZCBlbGVtZW50cy5cbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBpdHNlbGYuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2FmdGVyL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFmdGVyPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgLi4uZWxlbXM6XG4gICAgfCBbKHRoaXM6IEFueU5vZGUsIGk6IG51bWJlciwgaHRtbDogc3RyaW5nKSA9PiBCYXNpY0FjY2VwdGVkRWxlbXM8QW55Tm9kZT5dXG4gICAgfCBCYXNpY0FjY2VwdGVkRWxlbXM8QW55Tm9kZT5bXVxuKTogQ2hlZXJpbzxUPiB7XG4gIGNvbnN0IGxhc3RJZHggPSB0aGlzLmxlbmd0aCAtIDE7XG5cbiAgcmV0dXJuIGRvbUVhY2godGhpcywgKGVsLCBpKSA9PiB7XG4gICAgaWYgKCFoYXNDaGlsZHJlbihlbCkgfHwgIWVsLnBhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNpYmxpbmdzOiBBbnlOb2RlW10gPSBlbC5wYXJlbnQuY2hpbGRyZW47XG4gICAgY29uc3QgaW5kZXggPSBzaWJsaW5ncy5pbmRleE9mKGVsKTtcblxuICAgIC8vIElmIG5vdCBmb3VuZCwgbW92ZSBvblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKGluZGV4IDwgMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgZG9tU3JjID1cbiAgICAgIHR5cGVvZiBlbGVtc1swXSA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgICA/IGVsZW1zWzBdLmNhbGwoZWwsIGksIHRoaXMuX3JlbmRlcihlbC5jaGlsZHJlbikpXG4gICAgICAgIDogKGVsZW1zIGFzIEJhc2ljQWNjZXB0ZWRFbGVtczxBbnlOb2RlPltdKTtcblxuICAgIGNvbnN0IGRvbSA9IHRoaXMuX21ha2VEb21BcnJheShkb21TcmMsIGkgPCBsYXN0SWR4KTtcblxuICAgIC8vIEFkZCBlbGVtZW50IGFmdGVyIGB0aGlzYCBlbGVtZW50XG4gICAgdW5pcXVlU3BsaWNlKHNpYmxpbmdzLCBpbmRleCArIDEsIDAsIGRvbSwgZWwucGFyZW50KTtcbiAgfSk7XG59XG5cbi8qKlxuICogSW5zZXJ0IGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzIGFmdGVyIHRoZSB0YXJnZXQuXG4gKlxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPicpLmluc2VydEFmdGVyKCcuYXBwbGUnKTtcbiAqICQuaHRtbCgpO1xuICogLy89PiAgPHVsIGlkPVwiZnJ1aXRzXCI+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cImFwcGxlXCI+QXBwbGU8L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJwbHVtXCI+UGx1bTwvbGk+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cIm9yYW5nZVwiPk9yYW5nZTwvbGk+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cInBlYXJcIj5QZWFyPC9saT5cbiAqIC8vICAgIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gdGFyZ2V0IC0gRWxlbWVudCB0byBpbnNlcnQgZWxlbWVudHMgYWZ0ZXIuXG4gKiBAcmV0dXJucyBUaGUgc2V0IG9mIG5ld2x5IGluc2VydGVkIGVsZW1lbnRzLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9pbnNlcnRBZnRlci99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRBZnRlcjxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIHRhcmdldDogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+LFxuKTogQ2hlZXJpbzxUPiB7XG4gIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnc3RyaW5nJykge1xuICAgIHRhcmdldCA9IHRoaXMuX21ha2U8QW55Tm9kZT4odGFyZ2V0KTtcbiAgfVxuXG4gIHRoaXMucmVtb3ZlKCk7XG5cbiAgY29uc3QgY2xvbmVzOiBUW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGVsIG9mIHRoaXMuX21ha2VEb21BcnJheSh0YXJnZXQpKSB7XG4gICAgY29uc3QgY2xvbmVkU2VsZiA9IHRoaXMuY2xvbmUoKS50b0FycmF5KCk7XG4gICAgY29uc3QgeyBwYXJlbnQgfSA9IGVsO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWJsaW5nczogQW55Tm9kZVtdID0gcGFyZW50LmNoaWxkcmVuO1xuICAgIGNvbnN0IGluZGV4ID0gc2libGluZ3MuaW5kZXhPZihlbCk7XG5cbiAgICAvLyBJZiBub3QgZm91bmQsIG1vdmUgb25cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChpbmRleCA8IDApIGNvbnRpbnVlO1xuXG4gICAgLy8gQWRkIGNsb25lZCBgdGhpc2AgZWxlbWVudChzKSBhZnRlciB0YXJnZXQgZWxlbWVudFxuICAgIHVuaXF1ZVNwbGljZShzaWJsaW5ncywgaW5kZXggKyAxLCAwLCBjbG9uZWRTZWxmLCBwYXJlbnQpO1xuICAgIGNsb25lcy5wdXNoKC4uLmNsb25lZFNlbGYpO1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX21ha2UoY2xvbmVzKTtcbn1cblxuLyoqXG4gKiBJbnNlcnQgY29udGVudCBwcmV2aW91cyB0byBlYWNoIGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzLlxuICpcbiAqIEBjYXRlZ29yeSBNYW5pcHVsYXRpb25cbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5hcHBsZScpLmJlZm9yZSgnPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPicpO1xuICogJC5odG1sKCk7XG4gKiAvLz0+ICA8dWwgaWQ9XCJmcnVpdHNcIj5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJhcHBsZVwiPkFwcGxlPC9saT5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwicGVhclwiPlBlYXI8L2xpPlxuICogLy8gICAgPC91bD5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBlbGVtcyAtIEhUTUwgc3RyaW5nLCBET00gZWxlbWVudCwgYXJyYXkgb2YgRE9NIGVsZW1lbnRzIG9yIENoZWVyaW8gdG9cbiAqICAgaW5zZXJ0IGJlZm9yZSBlYWNoIGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vYmVmb3JlL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJlZm9yZTxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIC4uLmVsZW1zOlxuICAgIHwgWyh0aGlzOiBBbnlOb2RlLCBpOiBudW1iZXIsIGh0bWw6IHN0cmluZykgPT4gQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+XVxuICAgIHwgQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+W11cbik6IENoZWVyaW88VD4ge1xuICBjb25zdCBsYXN0SWR4ID0gdGhpcy5sZW5ndGggLSAxO1xuXG4gIHJldHVybiBkb21FYWNoKHRoaXMsIChlbCwgaSkgPT4ge1xuICAgIGlmICghaGFzQ2hpbGRyZW4oZWwpIHx8ICFlbC5wYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaWJsaW5nczogQW55Tm9kZVtdID0gZWwucGFyZW50LmNoaWxkcmVuO1xuICAgIGNvbnN0IGluZGV4ID0gc2libGluZ3MuaW5kZXhPZihlbCk7XG5cbiAgICAvLyBJZiBub3QgZm91bmQsIG1vdmUgb25cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChpbmRleCA8IDApIHJldHVybjtcblxuICAgIGNvbnN0IGRvbVNyYyA9XG4gICAgICB0eXBlb2YgZWxlbXNbMF0gPT09ICdmdW5jdGlvbidcbiAgICAgICAgPyBlbGVtc1swXS5jYWxsKGVsLCBpLCB0aGlzLl9yZW5kZXIoZWwuY2hpbGRyZW4pKVxuICAgICAgICA6IChlbGVtcyBhcyBCYXNpY0FjY2VwdGVkRWxlbXM8QW55Tm9kZT5bXSk7XG5cbiAgICBjb25zdCBkb20gPSB0aGlzLl9tYWtlRG9tQXJyYXkoZG9tU3JjLCBpIDwgbGFzdElkeCk7XG5cbiAgICAvLyBBZGQgZWxlbWVudCBiZWZvcmUgYGVsYCBlbGVtZW50XG4gICAgdW5pcXVlU3BsaWNlKHNpYmxpbmdzLCBpbmRleCwgMCwgZG9tLCBlbC5wYXJlbnQpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBJbnNlcnQgZXZlcnkgZWxlbWVudCBpbiB0aGUgc2V0IG9mIG1hdGNoZWQgZWxlbWVudHMgYmVmb3JlIHRoZSB0YXJnZXQuXG4gKlxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPicpLmluc2VydEJlZm9yZSgnLmFwcGxlJyk7XG4gKiAkLmh0bWwoKTtcbiAqIC8vPT4gIDx1bCBpZD1cImZydWl0c1wiPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJwbHVtXCI+UGx1bTwvbGk+XG4gKiAvLyAgICAgIDxsaSBjbGFzcz1cImFwcGxlXCI+QXBwbGU8L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJvcmFuZ2VcIj5PcmFuZ2U8L2xpPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJwZWFyXCI+UGVhcjwvbGk+XG4gKiAvLyAgICA8L3VsPlxuICogYGBgXG4gKlxuICogQHBhcmFtIHRhcmdldCAtIEVsZW1lbnQgdG8gaW5zZXJ0IGVsZW1lbnRzIGJlZm9yZS5cbiAqIEByZXR1cm5zIFRoZSBzZXQgb2YgbmV3bHkgaW5zZXJ0ZWQgZWxlbWVudHMuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2luc2VydEJlZm9yZS99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRCZWZvcmU8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICB0YXJnZXQ6IEJhc2ljQWNjZXB0ZWRFbGVtczxBbnlOb2RlPixcbik6IENoZWVyaW88VD4ge1xuICBjb25zdCB0YXJnZXRBcnIgPSB0aGlzLl9tYWtlPEFueU5vZGU+KHRhcmdldCk7XG5cbiAgdGhpcy5yZW1vdmUoKTtcblxuICBjb25zdCBjbG9uZXM6IFRbXSA9IFtdO1xuXG4gIGRvbUVhY2godGFyZ2V0QXJyLCAoZWwpID0+IHtcbiAgICBjb25zdCBjbG9uZWRTZWxmID0gdGhpcy5jbG9uZSgpLnRvQXJyYXkoKTtcbiAgICBjb25zdCB7IHBhcmVudCB9ID0gZWw7XG4gICAgaWYgKCFwYXJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzaWJsaW5nczogQW55Tm9kZVtdID0gcGFyZW50LmNoaWxkcmVuO1xuICAgIGNvbnN0IGluZGV4ID0gc2libGluZ3MuaW5kZXhPZihlbCk7XG5cbiAgICAvLyBJZiBub3QgZm91bmQsIG1vdmUgb25cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIGlmIChpbmRleCA8IDApIHJldHVybjtcblxuICAgIC8vIEFkZCBjbG9uZWQgYHRoaXNgIGVsZW1lbnQocykgYWZ0ZXIgdGFyZ2V0IGVsZW1lbnRcbiAgICB1bmlxdWVTcGxpY2Uoc2libGluZ3MsIGluZGV4LCAwLCBjbG9uZWRTZWxmLCBwYXJlbnQpO1xuICAgIGNsb25lcy5wdXNoKC4uLmNsb25lZFNlbGYpO1xuICB9KTtcblxuICByZXR1cm4gdGhpcy5fbWFrZShjbG9uZXMpO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgdGhlIHNldCBvZiBtYXRjaGVkIGVsZW1lbnRzIGZyb20gdGhlIERPTSBhbmQgYWxsIHRoZWlyIGNoaWxkcmVuLlxuICogYHNlbGVjdG9yYCBmaWx0ZXJzIHRoZSBzZXQgb2YgbWF0Y2hlZCBlbGVtZW50cyB0byBiZSByZW1vdmVkLlxuICpcbiAqIEBjYXRlZ29yeSBNYW5pcHVsYXRpb25cbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5wZWFyJykucmVtb3ZlKCk7XG4gKiAkLmh0bWwoKTtcbiAqIC8vPT4gIDx1bCBpZD1cImZydWl0c1wiPlxuICogLy8gICAgICA8bGkgY2xhc3M9XCJhcHBsZVwiPkFwcGxlPC9saT5cbiAqIC8vICAgICAgPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT5cbiAqIC8vICAgIDwvdWw+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc2VsZWN0b3IgLSBPcHRpb25hbCBzZWxlY3RvciBmb3IgZWxlbWVudHMgdG8gcmVtb3ZlLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vcmVtb3ZlL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZTxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIHNlbGVjdG9yPzogc3RyaW5nLFxuKTogQ2hlZXJpbzxUPiB7XG4gIC8vIEZpbHRlciBpZiB3ZSBoYXZlIHNlbGVjdG9yXG4gIGNvbnN0IGVsZW1zID0gc2VsZWN0b3IgPyB0aGlzLmZpbHRlcihzZWxlY3RvcikgOiB0aGlzO1xuXG4gIGRvbUVhY2goZWxlbXMsIChlbCkgPT4ge1xuICAgIHJlbW92ZUVsZW1lbnQoZWwpO1xuICAgIGVsLnByZXYgPSBlbC5uZXh0ID0gZWwucGFyZW50ID0gbnVsbDtcbiAgfSk7XG5cbiAgcmV0dXJuIHRoaXM7XG59XG5cbi8qKlxuICogUmVwbGFjZXMgbWF0Y2hlZCBlbGVtZW50cyB3aXRoIGBjb250ZW50YC5cbiAqXG4gKiBAY2F0ZWdvcnkgTWFuaXB1bGF0aW9uXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwbHVtID0gJCgnPGxpIGNsYXNzPVwicGx1bVwiPlBsdW08L2xpPicpO1xuICogJCgnLnBlYXInKS5yZXBsYWNlV2l0aChwbHVtKTtcbiAqICQuaHRtbCgpO1xuICogLy89PiA8dWwgaWQ9XCJmcnVpdHNcIj5cbiAqIC8vICAgICA8bGkgY2xhc3M9XCJhcHBsZVwiPkFwcGxlPC9saT5cbiAqIC8vICAgICA8bGkgY2xhc3M9XCJvcmFuZ2VcIj5PcmFuZ2U8L2xpPlxuICogLy8gICAgIDxsaSBjbGFzcz1cInBsdW1cIj5QbHVtPC9saT5cbiAqIC8vICAgPC91bD5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gUmVwbGFjZW1lbnQgZm9yIG1hdGNoZWQgZWxlbWVudHMuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9yZXBsYWNlV2l0aC99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZXBsYWNlV2l0aDxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIGNvbnRlbnQ6IEFjY2VwdGVkRWxlbXM8QW55Tm9kZT4sXG4pOiBDaGVlcmlvPFQ+IHtcbiAgcmV0dXJuIGRvbUVhY2godGhpcywgKGVsLCBpKSA9PiB7XG4gICAgY29uc3QgeyBwYXJlbnQgfSA9IGVsO1xuICAgIGlmICghcGFyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2libGluZ3M6IEFueU5vZGVbXSA9IHBhcmVudC5jaGlsZHJlbjtcbiAgICBjb25zdCBjb250ID1cbiAgICAgIHR5cGVvZiBjb250ZW50ID09PSAnZnVuY3Rpb24nID8gY29udGVudC5jYWxsKGVsLCBpLCBlbCkgOiBjb250ZW50O1xuICAgIGNvbnN0IGRvbSA9IHRoaXMuX21ha2VEb21BcnJheShjb250KTtcblxuICAgIC8qXG4gICAgICogSW4gdGhlIGNhc2UgdGhhdCBgZG9tYCBjb250YWlucyBub2RlcyB0aGF0IGFscmVhZHkgZXhpc3QgaW4gb3RoZXJcbiAgICAgKiBzdHJ1Y3R1cmVzLCBlbnN1cmUgdGhvc2Ugbm9kZXMgYXJlIHByb3Blcmx5IHJlbW92ZWQuXG4gICAgICovXG4gICAgdXBkYXRlRE9NKGRvbSwgbnVsbCk7XG5cbiAgICBjb25zdCBpbmRleCA9IHNpYmxpbmdzLmluZGV4T2YoZWwpO1xuXG4gICAgLy8gQ29tcGxldGVseSByZW1vdmUgb2xkIGVsZW1lbnRcbiAgICB1bmlxdWVTcGxpY2Uoc2libGluZ3MsIGluZGV4LCAxLCBkb20sIHBhcmVudCk7XG5cbiAgICBpZiAoIWRvbS5pbmNsdWRlcyhlbCkpIHtcbiAgICAgIGVsLnBhcmVudCA9IGVsLnByZXYgPSBlbC5uZXh0ID0gbnVsbDtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGNoaWxkcmVuIGZyb20gZWFjaCBpdGVtIGluIHRoZSBzZWxlY3Rpb24uIFRleHQgbm9kZXMgYW5kIGNvbW1lbnRcbiAqIG5vZGVzIGFyZSBsZWZ0IGFzIGlzLlxuICpcbiAqIEBjYXRlZ29yeSBNYW5pcHVsYXRpb25cbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJ3VsJykuZW1wdHkoKTtcbiAqICQuaHRtbCgpO1xuICogLy89PiAgPHVsIGlkPVwiZnJ1aXRzXCI+PC91bD5cbiAqIGBgYFxuICpcbiAqIEByZXR1cm5zIFRoZSBpbnN0YW5jZSBpdHNlbGYuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2VtcHR5L31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGVtcHR5PFQgZXh0ZW5kcyBBbnlOb2RlPih0aGlzOiBDaGVlcmlvPFQ+KTogQ2hlZXJpbzxUPiB7XG4gIHJldHVybiBkb21FYWNoKHRoaXMsIChlbCkgPT4ge1xuICAgIGlmICghaGFzQ2hpbGRyZW4oZWwpKSByZXR1cm47XG4gICAgZm9yIChjb25zdCBjaGlsZCBvZiBlbC5jaGlsZHJlbikge1xuICAgICAgY2hpbGQubmV4dCA9IGNoaWxkLnByZXYgPSBjaGlsZC5wYXJlbnQgPSBudWxsO1xuICAgIH1cblxuICAgIGVsLmNoaWxkcmVuLmxlbmd0aCA9IDA7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldHMgYW4gSFRNTCBjb250ZW50IHN0cmluZyBmcm9tIHRoZSBmaXJzdCBzZWxlY3RlZCBlbGVtZW50LlxuICpcbiAqIEBjYXRlZ29yeSBNYW5pcHVsYXRpb25cbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5vcmFuZ2UnKS5odG1sKCk7XG4gKiAvLz0+IE9yYW5nZVxuICpcbiAqICQoJyNmcnVpdHMnKS5odG1sKCc8bGkgY2xhc3M9XCJtYW5nb1wiPk1hbmdvPC9saT4nKS5odG1sKCk7XG4gKiAvLz0+IDxsaSBjbGFzcz1cIm1hbmdvXCI+TWFuZ288L2xpPlxuICogYGBgXG4gKlxuICogQHJldHVybnMgVGhlIEhUTUwgY29udGVudCBzdHJpbmcuXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL2h0bWwvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gaHRtbDxUIGV4dGVuZHMgQW55Tm9kZT4odGhpczogQ2hlZXJpbzxUPik6IHN0cmluZyB8IG51bGw7XG4vKipcbiAqIFJlcGxhY2VzIGVhY2ggc2VsZWN0ZWQgZWxlbWVudCdzIGNvbnRlbnQgd2l0aCB0aGUgc3BlY2lmaWVkIGNvbnRlbnQuXG4gKlxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogJCgnLm9yYW5nZScpLmh0bWwoJzxsaSBjbGFzcz1cIm1hbmdvXCI+TWFuZ288L2xpPicpLmh0bWwoKTtcbiAqIC8vPT4gPGxpIGNsYXNzPVwibWFuZ29cIj5NYW5nbzwvbGk+XG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gc3RyIC0gVGhlIGNvbnRlbnQgdG8gcmVwbGFjZSBzZWxlY3Rpb24ncyBjb250ZW50cyB3aXRoLlxuICogQHJldHVybnMgVGhlIGluc3RhbmNlIGl0c2VsZi5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vaHRtbC99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBodG1sPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgc3RyOiBzdHJpbmcgfCBDaGVlcmlvPFQ+LFxuKTogQ2hlZXJpbzxUPjtcbmV4cG9ydCBmdW5jdGlvbiBodG1sPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgc3RyPzogc3RyaW5nIHwgQ2hlZXJpbzxBbnlOb2RlPixcbik6IENoZWVyaW88VD4gfCBzdHJpbmcgfCBudWxsIHtcbiAgaWYgKHN0ciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc3QgZWwgPSB0aGlzWzBdO1xuICAgIGlmICghZWwgfHwgIWhhc0NoaWxkcmVuKGVsKSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIHRoaXMuX3JlbmRlcihlbC5jaGlsZHJlbik7XG4gIH1cblxuICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwpID0+IHtcbiAgICBpZiAoIWhhc0NoaWxkcmVuKGVsKSkgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgZWwuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLm5leHQgPSBjaGlsZC5wcmV2ID0gY2hpbGQucGFyZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50ID0gaXNDaGVlcmlvKHN0cilcbiAgICAgID8gc3RyLnRvQXJyYXkoKVxuICAgICAgOiB0aGlzLl9wYXJzZShgJHtzdHJ9YCwgdGhpcy5vcHRpb25zLCBmYWxzZSwgZWwpLmNoaWxkcmVuO1xuXG4gICAgdXBkYXRlRE9NKGNvbnRlbnQsIGVsKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVHVybnMgdGhlIGNvbGxlY3Rpb24gdG8gYSBzdHJpbmcuIEFsaWFzIGZvciBgLmh0bWwoKWAuXG4gKlxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQHJldHVybnMgVGhlIHJlbmRlcmVkIGRvY3VtZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TdHJpbmc8VCBleHRlbmRzIEFueU5vZGU+KHRoaXM6IENoZWVyaW88VD4pOiBzdHJpbmcge1xuICByZXR1cm4gdGhpcy5fcmVuZGVyKHRoaXMpO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY29tYmluZWQgdGV4dCBjb250ZW50cyBvZiBlYWNoIGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkXG4gKiBlbGVtZW50cywgaW5jbHVkaW5nIHRoZWlyIGRlc2NlbmRhbnRzLlxuICpcbiAqIEBjYXRlZ29yeSBNYW5pcHVsYXRpb25cbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJy5vcmFuZ2UnKS50ZXh0KCk7XG4gKiAvLz0+IE9yYW5nZVxuICpcbiAqICQoJ3VsJykudGV4dCgpO1xuICogLy89PiAgQXBwbGVcbiAqIC8vICAgIE9yYW5nZVxuICogLy8gICAgUGVhclxuICogYGBgXG4gKlxuICogQHJldHVybnMgVGhlIHRleHQgY29udGVudHMgb2YgdGhlIGNvbGxlY3Rpb24uXG4gKiBAc2VlIHtAbGluayBodHRwczovL2FwaS5qcXVlcnkuY29tL3RleHQvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdGV4dDxUIGV4dGVuZHMgQW55Tm9kZT4odGhpczogQ2hlZXJpbzxUPik6IHN0cmluZztcbi8qKlxuICogU2V0IHRoZSBjb250ZW50IG9mIGVhY2ggZWxlbWVudCBpbiB0aGUgc2V0IG9mIG1hdGNoZWQgZWxlbWVudHMgdG8gdGhlXG4gKiBzcGVjaWZpZWQgdGV4dC5cbiAqXG4gKiBAY2F0ZWdvcnkgTWFuaXB1bGF0aW9uXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCcub3JhbmdlJykudGV4dCgnT3JhbmdlJyk7XG4gKiAvLz0+IDxkaXYgY2xhc3M9XCJvcmFuZ2VcIj5PcmFuZ2U8L2Rpdj5cbiAqIGBgYFxuICpcbiAqIEBwYXJhbSBzdHIgLSBUaGUgdGV4dCB0byBzZXQgYXMgdGhlIGNvbnRlbnQgb2YgZWFjaCBtYXRjaGVkIGVsZW1lbnQuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS90ZXh0L31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRleHQ8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzdHI6IHN0cmluZyB8ICgodGhpczogQW55Tm9kZSwgaTogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpID0+IHN0cmluZyksXG4pOiBDaGVlcmlvPFQ+O1xuZXhwb3J0IGZ1bmN0aW9uIHRleHQ8VCBleHRlbmRzIEFueU5vZGU+KFxuICB0aGlzOiBDaGVlcmlvPFQ+LFxuICBzdHI/OiBzdHJpbmcgfCAoKHRoaXM6IEFueU5vZGUsIGk6IG51bWJlciwgdGV4dDogc3RyaW5nKSA9PiBzdHJpbmcpLFxuKTogQ2hlZXJpbzxUPiB8IHN0cmluZyB7XG4gIC8vIElmIGBzdHJgIGlzIHVuZGVmaW5lZCwgYWN0IGFzIGEgXCJnZXR0ZXJcIlxuICBpZiAoc3RyID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gc3RhdGljVGV4dCh0aGlzKTtcbiAgfVxuICBpZiAodHlwZW9mIHN0ciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIC8vIEZ1bmN0aW9uIHN1cHBvcnRcbiAgICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwsIGkpID0+XG4gICAgICB0aGlzLl9tYWtlKGVsKS50ZXh0KHN0ci5jYWxsKGVsLCBpLCBzdGF0aWNUZXh0KFtlbF0pKSksXG4gICAgKTtcbiAgfVxuXG4gIC8vIEFwcGVuZCB0ZXh0IG5vZGUgdG8gZWFjaCBzZWxlY3RlZCBlbGVtZW50c1xuICByZXR1cm4gZG9tRWFjaCh0aGlzLCAoZWwpID0+IHtcbiAgICBpZiAoIWhhc0NoaWxkcmVuKGVsKSkgcmV0dXJuO1xuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgZWwuY2hpbGRyZW4pIHtcbiAgICAgIGNoaWxkLm5leHQgPSBjaGlsZC5wcmV2ID0gY2hpbGQucGFyZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0Tm9kZSA9IG5ldyBUZXh0KGAke3N0cn1gKTtcblxuICAgIHVwZGF0ZURPTSh0ZXh0Tm9kZSwgZWwpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDbG9uZSB0aGUgY2hlZXJpbyBvYmplY3QuXG4gKlxuICogQGNhdGVnb3J5IE1hbmlwdWxhdGlvblxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgbW9yZUZydWl0ID0gJCgnI2ZydWl0cycpLmNsb25lKCk7XG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBUaGUgY2xvbmVkIG9iamVjdC5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vY2xvbmUvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvbmU8VCBleHRlbmRzIEFueU5vZGU+KHRoaXM6IENoZWVyaW88VD4pOiBDaGVlcmlvPFQ+IHtcbiAgY29uc3QgY2xvbmUgPSBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwodGhpcy5nZXQoKSwgKGVsKSA9PlxuICAgIGNsb25lTm9kZShlbCwgdHJ1ZSksXG4gICkgYXMgVFtdO1xuXG4gIC8vIEFkZCBhIHJvb3Qgbm9kZSBhcm91bmQgdGhlIGNsb25lZCBub2Rlc1xuICBjb25zdCByb290ID0gbmV3IERvY3VtZW50KGNsb25lKTtcbiAgZm9yIChjb25zdCBub2RlIG9mIGNsb25lKSB7XG4gICAgbm9kZS5wYXJlbnQgPSByb290O1xuICB9XG5cbiAgcmV0dXJuIHRoaXMuX21ha2UoY2xvbmUpO1xufVxuIiwgImltcG9ydCB7IGRvbUVhY2ggfSBmcm9tICcuLi91dGlscy5qcyc7XG5pbXBvcnQgeyBpc1RhZywgdHlwZSBFbGVtZW50LCB0eXBlIEFueU5vZGUgfSBmcm9tICdkb21oYW5kbGVyJztcbmltcG9ydCB0eXBlIHsgQ2hlZXJpbyB9IGZyb20gJy4uL2NoZWVyaW8uanMnO1xuXG4vKipcbiAqIEdldCB0aGUgdmFsdWUgb2YgYSBzdHlsZSBwcm9wZXJ0eSBmb3IgdGhlIGZpcnN0IGVsZW1lbnQgaW4gdGhlIHNldCBvZiBtYXRjaGVkXG4gKiBlbGVtZW50cy5cbiAqXG4gKiBAY2F0ZWdvcnkgQ1NTXG4gKiBAcGFyYW0gbmFtZXMgLSBPcHRpb25hbGx5IHRoZSBuYW1lcyBvZiB0aGUgcHJvcGVydGllcyBvZiBpbnRlcmVzdC5cbiAqIEByZXR1cm5zIEEgbWFwIG9mIGFsbCBvZiB0aGUgc3R5bGUgcHJvcGVydGllcy5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vYXBpLmpxdWVyeS5jb20vY3NzL31cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNzczxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG5hbWVzPzogc3RyaW5nW10sXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBHZXQgdGhlIHZhbHVlIG9mIGEgc3R5bGUgcHJvcGVydHkgZm9yIHRoZSBmaXJzdCBlbGVtZW50IGluIHRoZSBzZXQgb2YgbWF0Y2hlZFxuICogZWxlbWVudHMuXG4gKlxuICogQGNhdGVnb3J5IENTU1xuICogQHBhcmFtIG5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkuXG4gKiBAcmV0dXJucyBUaGUgcHJvcGVydHkgdmFsdWUgZm9yIHRoZSBnaXZlbiBuYW1lLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9jc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3NzPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgbmFtZTogc3RyaW5nLFxuKTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuLyoqXG4gKiBTZXQgb25lIENTUyBwcm9wZXJ0eSBmb3IgZXZlcnkgbWF0Y2hlZCBlbGVtZW50LlxuICpcbiAqIEBjYXRlZ29yeSBDU1NcbiAqIEBwYXJhbSBwcm9wIC0gVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5LlxuICogQHBhcmFtIHZhbCAtIFRoZSBuZXcgdmFsdWUuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9jc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3NzPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgcHJvcDogc3RyaW5nLFxuICB2YWw6XG4gICAgfCBzdHJpbmdcbiAgICB8ICgodGhpczogRWxlbWVudCwgaTogbnVtYmVyLCBzdHlsZTogc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQpLFxuKTogQ2hlZXJpbzxUPjtcbi8qKlxuICogU2V0IG11bHRpcGxlIENTUyBwcm9wZXJ0aWVzIGZvciBldmVyeSBtYXRjaGVkIGVsZW1lbnQuXG4gKlxuICogQGNhdGVnb3J5IENTU1xuICogQHBhcmFtIG1hcCAtIEEgbWFwIG9mIHByb3BlcnR5IG5hbWVzIGFuZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9jc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3NzPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgbWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogQ2hlZXJpbzxUPjtcbi8qKlxuICogU2V0IG11bHRpcGxlIENTUyBwcm9wZXJ0aWVzIGZvciBldmVyeSBtYXRjaGVkIGVsZW1lbnQuXG4gKlxuICogQGNhdGVnb3J5IENTU1xuICogQHBhcmFtIHByb3AgLSBUaGUgbmFtZXMgb2YgdGhlIHByb3BlcnRpZXMuXG4gKiBAcGFyYW0gdmFsIC0gVGhlIG5ldyB2YWx1ZXMuXG4gKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgaXRzZWxmLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9jc3MvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3NzPFQgZXh0ZW5kcyBBbnlOb2RlPihcbiAgdGhpczogQ2hlZXJpbzxUPixcbiAgcHJvcD86IHN0cmluZyB8IHN0cmluZ1tdIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgdmFsPzpcbiAgICB8IHN0cmluZ1xuICAgIHwgKCh0aGlzOiBFbGVtZW50LCBpOiBudW1iZXIsIHN0eWxlOiBzdHJpbmcpID0+IHN0cmluZyB8IHVuZGVmaW5lZCksXG4pOiBDaGVlcmlvPFQ+IHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPiB8IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmIChcbiAgICAocHJvcCAhPSBudWxsICYmIHZhbCAhPSBudWxsKSB8fFxuICAgIC8vIFdoZW4gYHByb3BgIGlzIGEgXCJwbGFpblwiIG9iamVjdFxuICAgICh0eXBlb2YgcHJvcCA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkocHJvcCkpXG4gICkge1xuICAgIHJldHVybiBkb21FYWNoKHRoaXMsIChlbCwgaSkgPT4ge1xuICAgICAgaWYgKGlzVGFnKGVsKSkge1xuICAgICAgICAvLyBgcHJvcGAgY2FuJ3QgYmUgYW4gYXJyYXkgaGVyZSBhbnltb3JlLlxuICAgICAgICBzZXRDc3MoZWwsIHByb3AgYXMgc3RyaW5nLCB2YWwsIGkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiBnZXRDc3ModGhpc1swXSwgcHJvcCBhcyBzdHJpbmcpO1xufVxuXG4vKipcbiAqIFNldCBzdHlsZXMgb2YgYWxsIGVsZW1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0gZWwgLSBFbGVtZW50IHRvIHNldCBzdHlsZSBvZi5cbiAqIEBwYXJhbSBwcm9wIC0gTmFtZSBvZiBwcm9wZXJ0eS5cbiAqIEBwYXJhbSB2YWx1ZSAtIFZhbHVlIHRvIHNldCBwcm9wZXJ0eSB0by5cbiAqIEBwYXJhbSBpZHggLSBPcHRpb25hbCBpbmRleCB3aXRoaW4gdGhlIHNlbGVjdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2V0Q3NzKFxuICBlbDogRWxlbWVudCxcbiAgcHJvcDogc3RyaW5nIHwgUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgdmFsdWU6XG4gICAgfCBzdHJpbmdcbiAgICB8ICgodGhpczogRWxlbWVudCwgaTogbnVtYmVyLCBzdHlsZTogc3RyaW5nKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQpXG4gICAgfCB1bmRlZmluZWQsXG4gIGlkeDogbnVtYmVyLFxuKSB7XG4gIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCBzdHlsZXMgPSBnZXRDc3MoZWwpO1xuXG4gICAgY29uc3QgdmFsID1cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlLmNhbGwoZWwsIGlkeCwgc3R5bGVzW3Byb3BdKSA6IHZhbHVlO1xuXG4gICAgaWYgKHZhbCA9PT0gJycpIHtcbiAgICAgIGRlbGV0ZSBzdHlsZXNbcHJvcF07XG4gICAgfSBlbHNlIGlmICh2YWwgIT0gbnVsbCkge1xuICAgICAgc3R5bGVzW3Byb3BdID0gdmFsO1xuICAgIH1cblxuICAgIGVsLmF0dHJpYnNbJ3N0eWxlJ10gPSBzdHJpbmdpZnkoc3R5bGVzKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcCA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMocHJvcCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBrID0ga2V5c1tpXTtcbiAgICAgIHNldENzcyhlbCwgaywgcHJvcFtrXSwgaSk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogR2V0IHRoZSBwYXJzZWQgc3R5bGVzIG9mIHRoZSBmaXJzdCBlbGVtZW50LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgQ1NTXG4gKiBAcGFyYW0gZWwgLSBFbGVtZW50IHRvIGdldCBzdHlsZXMgZnJvbS5cbiAqIEBwYXJhbSBwcm9wcyAtIE9wdGlvbmFsbHkgdGhlIG5hbWVzIG9mIHRoZSBwcm9wZXJ0aWVzIG9mIGludGVyZXN0LlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBzdHlsZXMuXG4gKi9cbmZ1bmN0aW9uIGdldENzcyhlbDogQW55Tm9kZSwgcHJvcHM/OiBzdHJpbmdbXSk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4vKipcbiAqIEdldCBhIHByb3BlcnR5IGZyb20gdGhlIHBhcnNlZCBzdHlsZXMgb2YgdGhlIGZpcnN0IGVsZW1lbnQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBjYXRlZ29yeSBDU1NcbiAqIEBwYXJhbSBlbCAtIEVsZW1lbnQgdG8gZ2V0IHN0eWxlcyBmcm9tLlxuICogQHBhcmFtIHByb3AgLSBOYW1lIG9mIHRoZSBwcm9wLlxuICogQHJldHVybnMgVGhlIHZhbHVlIG9mIHRoZSBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZ2V0Q3NzKGVsOiBBbnlOb2RlLCBwcm9wOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBnZXRDc3MoXG4gIGVsOiBBbnlOb2RlLFxuICBwcm9wPzogc3RyaW5nIHwgc3RyaW5nW10sXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHwgc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCFlbCB8fCAhaXNUYWcoZWwpKSByZXR1cm47XG5cbiAgY29uc3Qgc3R5bGVzID0gcGFyc2UoZWwuYXR0cmlic1snc3R5bGUnXSk7XG4gIGlmICh0eXBlb2YgcHJvcCA9PT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gc3R5bGVzW3Byb3BdO1xuICB9XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3ApKSB7XG4gICAgY29uc3QgbmV3U3R5bGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gICAgZm9yIChjb25zdCBpdGVtIG9mIHByb3ApIHtcbiAgICAgIGlmIChzdHlsZXNbaXRlbV0gIT0gbnVsbCkge1xuICAgICAgICBuZXdTdHlsZXNbaXRlbV0gPSBzdHlsZXNbaXRlbV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdTdHlsZXM7XG4gIH1cbiAgcmV0dXJuIHN0eWxlcztcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgYG9iamAgdG8gc3R5bGVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY2F0ZWdvcnkgQ1NTXG4gKiBAcGFyYW0gb2JqIC0gT2JqZWN0IHRvIHN0cmluZ2lmeS5cbiAqIEByZXR1cm5zIFRoZSBzZXJpYWxpemVkIHN0eWxlcy5cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5KG9iajogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gIHJldHVybiBPYmplY3Qua2V5cyhvYmopLnJlZHVjZShcbiAgICAoc3RyLCBwcm9wKSA9PiBgJHtzdHJ9JHtzdHIgPyAnICcgOiAnJ30ke3Byb3B9OiAke29ialtwcm9wXX07YCxcbiAgICAnJyxcbiAgKTtcbn1cblxuLyoqXG4gKiBQYXJzZSBgc3R5bGVzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNhdGVnb3J5IENTU1xuICogQHBhcmFtIHN0eWxlcyAtIFN0eWxlcyB0byBiZSBwYXJzZWQuXG4gKiBAcmV0dXJucyBUaGUgcGFyc2VkIHN0eWxlcy5cbiAqL1xuZnVuY3Rpb24gcGFyc2Uoc3R5bGVzOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgc3R5bGVzID0gKHN0eWxlcyB8fCAnJykudHJpbSgpO1xuXG4gIGlmICghc3R5bGVzKSByZXR1cm4ge307XG5cbiAgY29uc3Qgb2JqOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgbGV0IGtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGZvciAoY29uc3Qgc3RyIG9mIHN0eWxlcy5zcGxpdCgnOycpKSB7XG4gICAgY29uc3QgbiA9IHN0ci5pbmRleE9mKCc6Jyk7XG4gICAgLy8gSWYgdGhlcmUgaXMgbm8gOiwgb3IgaWYgaXQgaXMgdGhlIGZpcnN0L2xhc3QgY2hhcmFjdGVyLCBhZGQgdG8gdGhlIHByZXZpb3VzIGl0ZW0ncyB2YWx1ZVxuICAgIGlmIChuIDwgMSB8fCBuID09PSBzdHIubGVuZ3RoIC0gMSkge1xuICAgICAgY29uc3QgdHJpbW1lZCA9IHN0ci50cmltRW5kKCk7XG4gICAgICBpZiAodHJpbW1lZC5sZW5ndGggPiAwICYmIGtleSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9ialtrZXldICs9IGA7JHt0cmltbWVkfWA7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGtleSA9IHN0ci5zbGljZSgwLCBuKS50cmltKCk7XG4gICAgICBvYmpba2V5XSA9IHN0ci5zbGljZShuICsgMSkudHJpbSgpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG4iLCAiaW1wb3J0IHsgaXNUYWcsIHR5cGUgQW55Tm9kZSB9IGZyb20gJ2RvbWhhbmRsZXInO1xuaW1wb3J0IHR5cGUgeyBDaGVlcmlvIH0gZnJvbSAnLi4vY2hlZXJpby5qcyc7XG5cbi8qXG4gKiBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iLzIuMS4zL3NyYy9tYW5pcHVsYXRpb24vdmFyL3JjaGVja2FibGVUeXBlLmpzXG4gKiBodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iLzIuMS4zL3NyYy9zZXJpYWxpemUuanNcbiAqL1xuY29uc3Qgc3VibWl0dGFibGVTZWxlY3RvciA9ICdpbnB1dCxzZWxlY3QsdGV4dGFyZWEsa2V5Z2VuJztcbmNvbnN0IHIyMCA9IC8lMjAvZztcbmNvbnN0IHJDUkxGID0gL1xccj9cXG4vZztcblxuLyoqXG4gKiBFbmNvZGUgYSBzZXQgb2YgZm9ybSBlbGVtZW50cyBhcyBhIHN0cmluZyBmb3Igc3VibWlzc2lvbi5cbiAqXG4gKiBAY2F0ZWdvcnkgRm9ybXNcbiAqIEBleGFtcGxlXG4gKlxuICogYGBganNcbiAqICQoJzxmb3JtPjxpbnB1dCBuYW1lPVwiZm9vXCIgdmFsdWU9XCJiYXJcIiAvPjwvZm9ybT4nKS5zZXJpYWxpemUoKTtcbiAqIC8vPT4gJ2Zvbz1iYXInXG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBUaGUgc2VyaWFsaXplZCBmb3JtLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9zZXJpYWxpemUvfVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplPFQgZXh0ZW5kcyBBbnlOb2RlPih0aGlzOiBDaGVlcmlvPFQ+KTogc3RyaW5nIHtcbiAgLy8gQ29udmVydCBmb3JtIGVsZW1lbnRzIGludG8gbmFtZS92YWx1ZSBvYmplY3RzXG4gIGNvbnN0IGFyciA9IHRoaXMuc2VyaWFsaXplQXJyYXkoKTtcblxuICAvLyBTZXJpYWxpemUgZWFjaCBlbGVtZW50IGludG8gYSBrZXkvdmFsdWUgc3RyaW5nXG4gIGNvbnN0IHJldEFyciA9IGFyci5tYXAoXG4gICAgKGRhdGEpID0+XG4gICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoZGF0YS5uYW1lKX09JHtlbmNvZGVVUklDb21wb25lbnQoZGF0YS52YWx1ZSl9YCxcbiAgKTtcblxuICAvLyBSZXR1cm4gdGhlIHJlc3VsdGluZyBzZXJpYWxpemF0aW9uXG4gIHJldHVybiByZXRBcnIuam9pbignJicpLnJlcGxhY2UocjIwLCAnKycpO1xufVxuXG4vKipcbiAqIEVuY29kZSBhIHNldCBvZiBmb3JtIGVsZW1lbnRzIGFzIGFuIGFycmF5IG9mIG5hbWVzIGFuZCB2YWx1ZXMuXG4gKlxuICogQGNhdGVnb3J5IEZvcm1zXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiAkKCc8Zm9ybT48aW5wdXQgbmFtZT1cImZvb1wiIHZhbHVlPVwiYmFyXCIgLz48L2Zvcm0+Jykuc2VyaWFsaXplQXJyYXkoKTtcbiAqIC8vPT4gWyB7IG5hbWU6ICdmb28nLCB2YWx1ZTogJ2JhcicgfSBdXG4gKiBgYGBcbiAqXG4gKiBAcmV0dXJucyBUaGUgc2VyaWFsaXplZCBmb3JtLlxuICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9hcGkuanF1ZXJ5LmNvbS9zZXJpYWxpemVBcnJheS99XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemVBcnJheTxUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4pOiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1bXSB7XG4gIC8vIFJlc29sdmUgYWxsIGZvcm0gZWxlbWVudHMgZnJvbSBlaXRoZXIgZm9ybXMgb3IgY29sbGVjdGlvbnMgb2YgZm9ybSBlbGVtZW50c1xuICByZXR1cm4gdGhpcy5tYXAoKF8sIGVsZW0pID0+IHtcbiAgICBjb25zdCAkZWxlbSA9IHRoaXMuX21ha2UoZWxlbSk7XG4gICAgaWYgKGlzVGFnKGVsZW0pICYmIGVsZW0ubmFtZSA9PT0gJ2Zvcm0nKSB7XG4gICAgICByZXR1cm4gJGVsZW0uZmluZChzdWJtaXR0YWJsZVNlbGVjdG9yKS50b0FycmF5KCk7XG4gICAgfVxuICAgIHJldHVybiAkZWxlbS5maWx0ZXIoc3VibWl0dGFibGVTZWxlY3RvcikudG9BcnJheSgpO1xuICB9KVxuICAgIC5maWx0ZXIoXG4gICAgICAvLyBWZXJpZnkgZWxlbWVudHMgaGF2ZSBhIG5hbWUgKGBhdHRyLm5hbWVgKSBhbmQgYXJlIG5vdCBkaXNhYmxlZCAoYDplbmFibGVkYClcbiAgICAgICdbbmFtZSE9XCJcIl06ZW5hYmxlZCcgK1xuICAgICAgICAvLyBBbmQgY2Fubm90IGJlIGNsaWNrZWQgKGBbdHlwZT1zdWJtaXRdYCkgb3IgYXJlIHVzZWQgaW4gYHgtd3d3LWZvcm0tdXJsZW5jb2RlZGAgKGBbdHlwZT1maWxlXWApXG4gICAgICAgICc6bm90KDpzdWJtaXQsIDpidXR0b24sIDppbWFnZSwgOnJlc2V0LCA6ZmlsZSknICtcbiAgICAgICAgLy8gQW5kIGFyZSBlaXRoZXIgY2hlY2tlZC9kb24ndCBoYXZlIGEgY2hlY2thYmxlIHN0YXRlXG4gICAgICAgICc6bWF0Y2hlcyhbY2hlY2tlZF0sIDpub3QoOmNoZWNrYm94LCA6cmFkaW8pKScsXG4gICAgICAvLyBDb252ZXJ0IGVhY2ggb2YgdGhlIGVsZW1lbnRzIHRvIGl0cyB2YWx1ZShzKVxuICAgIClcbiAgICAubWFwPFxuICAgICAgQW55Tm9kZSxcbiAgICAgIHtcbiAgICAgICAgbmFtZTogc3RyaW5nO1xuICAgICAgICB2YWx1ZTogc3RyaW5nO1xuICAgICAgfVxuICAgID4oKF8sIGVsZW0pID0+IHtcbiAgICAgIGNvbnN0ICRlbGVtID0gdGhpcy5fbWFrZShlbGVtKTtcbiAgICAgIGNvbnN0IG5hbWUgPSAkZWxlbS5hdHRyKCduYW1lJykgYXMgc3RyaW5nOyAvLyBXZSBoYXZlIGZpbHRlcmVkIGZvciBlbGVtZW50cyB3aXRoIGEgbmFtZSBiZWZvcmUuXG4gICAgICAvLyBJZiB0aGVyZSBpcyBubyB2YWx1ZSBzZXQgKGUuZy4gYHVuZGVmaW5lZGAsIGBudWxsYCksIHRoZW4gZGVmYXVsdCB2YWx1ZSB0byBlbXB0eVxuICAgICAgY29uc3QgdmFsdWUgPSAkZWxlbS52YWwoKSA/PyAnJztcblxuICAgICAgLy8gSWYgd2UgaGF2ZSBhbiBhcnJheSBvZiB2YWx1ZXMgKGUuZy4gYDxzZWxlY3QgbXVsdGlwbGU+YCksIHJldHVybiBhbiBhcnJheSBvZiBrZXkvdmFsdWUgcGFpcnNcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gdmFsdWUubWFwKCh2YWwpID0+XG4gICAgICAgICAgLypcbiAgICAgICAgICAgKiBXZSB0cmltIHJlcGxhY2UgYW55IGxpbmUgZW5kaW5ncyAoZS5nLiBgXFxyYCBvciBgXFxyXFxuYCB3aXRoIGBcXHJcXG5gKSB0byBndWFyYW50ZWUgY29uc2lzdGVuY3kgYWNyb3NzIHBsYXRmb3Jtc1xuICAgICAgICAgICAqIFRoZXNlIGNhbiBvY2N1ciBpbnNpZGUgb2YgYDx0ZXh0YXJlYT4nc2BcbiAgICAgICAgICAgKi9cbiAgICAgICAgICAoeyBuYW1lLCB2YWx1ZTogdmFsLnJlcGxhY2UockNSTEYsICdcXHJcXG4nKSB9KSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIC8vIE90aGVyd2lzZSAoZS5nLiBgPGlucHV0IHR5cGU9XCJ0ZXh0XCI+YCwgcmV0dXJuIG9ubHkgb25lIGtleS92YWx1ZSBwYWlyXG4gICAgICByZXR1cm4geyBuYW1lLCB2YWx1ZTogdmFsdWUucmVwbGFjZShyQ1JMRiwgJ1xcclxcbicpIH07XG4gICAgfSlcbiAgICAudG9BcnJheSgpO1xufVxuIiwgImltcG9ydCB0eXBlIHsgQW55Tm9kZSwgRWxlbWVudCB9IGZyb20gJ2RvbWhhbmRsZXInO1xuaW1wb3J0IHR5cGUgeyBDaGVlcmlvIH0gZnJvbSAnLi4vY2hlZXJpby5qcyc7XG5pbXBvcnQgdHlwZSB7IHByb3AgfSBmcm9tICcuL2F0dHJpYnV0ZXMuanMnO1xuXG50eXBlIEV4dHJhY3REZXNjcmlwdG9yRm4gPSAoXG4gIGVsOiBFbGVtZW50LFxuICBrZXk6IHN0cmluZyxcbiAgLy8gVE9ETzogVGhpcyBjb3VsZCBiZSB0eXBlZCB3aXRoIEV4dHJhY3RlZE1hcFxuICBvYmo6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKSA9PiB1bmtub3duO1xuXG5pbnRlcmZhY2UgRXh0cmFjdERlc2NyaXB0b3Ige1xuICBzZWxlY3Rvcjogc3RyaW5nO1xuICB2YWx1ZT86IHN0cmluZyB8IEV4dHJhY3REZXNjcmlwdG9yRm4gfCBFeHRyYWN0TWFwO1xufVxuXG50eXBlIEV4dHJhY3RWYWx1ZSA9IHN0cmluZyB8IEV4dHJhY3REZXNjcmlwdG9yIHwgW3N0cmluZyB8IEV4dHJhY3REZXNjcmlwdG9yXTtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRyYWN0TWFwIHtcbiAgW2tleTogc3RyaW5nXTogRXh0cmFjdFZhbHVlO1xufVxuXG50eXBlIEV4dHJhY3RlZFZhbHVlPFYgZXh0ZW5kcyBFeHRyYWN0VmFsdWUsIE0gZXh0ZW5kcyBFeHRyYWN0TWFwPiA9IFYgZXh0ZW5kcyBbXG4gIHN0cmluZyB8IEV4dHJhY3REZXNjcmlwdG9yLFxuXVxuICA/IE5vbk51bGxhYmxlPEV4dHJhY3RlZFZhbHVlPFZbMF0sIE0+PltdXG4gIDogViBleHRlbmRzIHN0cmluZ1xuICAgID8gc3RyaW5nIHwgdW5kZWZpbmVkXG4gICAgOiBWIGV4dGVuZHMgRXh0cmFjdERlc2NyaXB0b3JcbiAgICAgID8gVlsndmFsdWUnXSBleHRlbmRzIEV4dHJhY3RNYXBcbiAgICAgICAgPyBFeHRyYWN0ZWRNYXA8VlsndmFsdWUnXT4gfCB1bmRlZmluZWRcbiAgICAgICAgOiBWWyd2YWx1ZSddIGV4dGVuZHMgRXh0cmFjdERlc2NyaXB0b3JGblxuICAgICAgICAgID8gUmV0dXJuVHlwZTxWWyd2YWx1ZSddPiB8IHVuZGVmaW5lZFxuICAgICAgICAgIDogUmV0dXJuVHlwZTx0eXBlb2YgcHJvcD4gfCB1bmRlZmluZWRcbiAgICAgIDogbmV2ZXI7XG5cbmV4cG9ydCB0eXBlIEV4dHJhY3RlZE1hcDxNIGV4dGVuZHMgRXh0cmFjdE1hcD4gPSB7XG4gIFtrZXkgaW4ga2V5b2YgTV06IEV4dHJhY3RlZFZhbHVlPE1ba2V5XSwgTT47XG59O1xuXG5mdW5jdGlvbiBnZXRFeHRyYWN0RGVzY3IoXG4gIGRlc2NyOiBzdHJpbmcgfCBFeHRyYWN0RGVzY3JpcHRvcixcbik6IFJlcXVpcmVkPEV4dHJhY3REZXNjcmlwdG9yPiB7XG4gIGlmICh0eXBlb2YgZGVzY3IgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHsgc2VsZWN0b3I6IGRlc2NyLCB2YWx1ZTogJ3RleHRDb250ZW50JyB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZWxlY3RvcjogZGVzY3Iuc2VsZWN0b3IsXG4gICAgdmFsdWU6IGRlc2NyLnZhbHVlID8/ICd0ZXh0Q29udGVudCcsXG4gIH07XG59XG5cbi8qKlxuICogRXh0cmFjdCBtdWx0aXBsZSB2YWx1ZXMgZnJvbSBhIGRvY3VtZW50LCBhbmQgc3RvcmUgdGhlbSBpbiBhbiBvYmplY3QuXG4gKlxuICogQHBhcmFtIG1hcCAtIEFuIG9iamVjdCBjb250YWluaW5nIGtleS12YWx1ZSBwYWlycy4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZlxuICogICB0aGUgcHJvcGVydGllcyB0byBiZSBjcmVhdGVkIG9uIHRoZSBvYmplY3QsIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGVcbiAqICAgc2VsZWN0b3JzIHRvIGJlIHVzZWQgdG8gZXh0cmFjdCB0aGUgdmFsdWVzLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGV4dHJhY3RlZCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0PE0gZXh0ZW5kcyBFeHRyYWN0TWFwLCBUIGV4dGVuZHMgQW55Tm9kZT4oXG4gIHRoaXM6IENoZWVyaW88VD4sXG4gIG1hcDogTSxcbik6IEV4dHJhY3RlZE1hcDxNPiB7XG4gIGNvbnN0IHJldDogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fTtcblxuICBmb3IgKGNvbnN0IGtleSBpbiBtYXApIHtcbiAgICBjb25zdCBkZXNjciA9IG1hcFtrZXldO1xuICAgIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KGRlc2NyKTtcblxuICAgIGNvbnN0IHsgc2VsZWN0b3IsIHZhbHVlIH0gPSBnZXRFeHRyYWN0RGVzY3IoaXNBcnJheSA/IGRlc2NyWzBdIDogZGVzY3IpO1xuXG4gICAgY29uc3QgZm46IEV4dHJhY3REZXNjcmlwdG9yRm4gPVxuICAgICAgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nXG4gICAgICAgID8gdmFsdWVcbiAgICAgICAgOiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyAoZWw6IEVsZW1lbnQpID0+IHRoaXMuX21ha2UoZWwpLnByb3AodmFsdWUpXG4gICAgICAgICAgOiAoZWw6IEVsZW1lbnQpID0+IHRoaXMuX21ha2UoZWwpLmV4dHJhY3QodmFsdWUpO1xuXG4gICAgaWYgKGlzQXJyYXkpIHtcbiAgICAgIHJldFtrZXldID0gdGhpcy5fZmluZEJ5U2VsZWN0b3Ioc2VsZWN0b3IsIE51bWJlci5QT1NJVElWRV9JTkZJTklUWSlcbiAgICAgICAgLm1hcCgoXywgZWwpID0+IGZuKGVsLCBrZXksIHJldCkpXG4gICAgICAgIC5nZXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgJCA9IHRoaXMuX2ZpbmRCeVNlbGVjdG9yKHNlbGVjdG9yLCAxKTtcbiAgICAgIHJldFtrZXldID0gJC5sZW5ndGggPiAwID8gZm4oJFswXSwga2V5LCByZXQpIDogdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQgYXMgRXh0cmFjdGVkTWFwPE0+O1xufVxuIiwgIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtZGVjbGFyYXRpb24tbWVyZ2luZyAqL1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE9wdGlvbnMgfSBmcm9tICcuL29wdGlvbnMuanMnO1xuaW1wb3J0IHR5cGUgeyBBbnlOb2RlLCBEb2N1bWVudCwgUGFyZW50Tm9kZSB9IGZyb20gJ2RvbWhhbmRsZXInO1xuaW1wb3J0IHR5cGUgeyBCYXNpY0FjY2VwdGVkRWxlbXMgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuaW1wb3J0ICogYXMgQXR0cmlidXRlcyBmcm9tICcuL2FwaS9hdHRyaWJ1dGVzLmpzJztcbmltcG9ydCAqIGFzIFRyYXZlcnNpbmcgZnJvbSAnLi9hcGkvdHJhdmVyc2luZy5qcyc7XG5pbXBvcnQgKiBhcyBNYW5pcHVsYXRpb24gZnJvbSAnLi9hcGkvbWFuaXB1bGF0aW9uLmpzJztcbmltcG9ydCAqIGFzIENzcyBmcm9tICcuL2FwaS9jc3MuanMnO1xuaW1wb3J0ICogYXMgRm9ybXMgZnJvbSAnLi9hcGkvZm9ybXMuanMnO1xuaW1wb3J0ICogYXMgRXh0cmFjdCBmcm9tICcuL2FwaS9leHRyYWN0LmpzJztcblxudHlwZSBNZXRob2RzVHlwZSA9IHR5cGVvZiBBdHRyaWJ1dGVzICZcbiAgdHlwZW9mIFRyYXZlcnNpbmcgJlxuICB0eXBlb2YgTWFuaXB1bGF0aW9uICZcbiAgdHlwZW9mIENzcyAmXG4gIHR5cGVvZiBGb3JtcyAmXG4gIHR5cGVvZiBFeHRyYWN0O1xuXG4vKipcbiAqIFRoZSBjaGVlcmlvIGNsYXNzIGlzIHRoZSBjZW50cmFsIGNsYXNzIG9mIHRoZSBsaWJyYXJ5LiBJdCB3cmFwcyBhIHNldCBvZlxuICogZWxlbWVudHMgYW5kIHByb3ZpZGVzIGFuIEFQSSBmb3IgdHJhdmVyc2luZywgbW9kaWZ5aW5nLCBhbmQgaW50ZXJhY3Rpbmcgd2l0aFxuICogdGhlIHNldC5cbiAqXG4gKiBMb2FkaW5nIGEgZG9jdW1lbnQgd2lsbCByZXR1cm4gdGhlIENoZWVyaW8gY2xhc3MgYm91bmQgdG8gdGhlIHJvb3QgZWxlbWVudCBvZlxuICogdGhlIGRvY3VtZW50LiBUaGUgY2xhc3Mgd2lsbCBiZSBpbnN0YW50aWF0ZWQgd2hlbiBxdWVyeWluZyB0aGUgZG9jdW1lbnQgKHdoZW5cbiAqIGNhbGxpbmcgYCQoJ3NlbGVjdG9yJylgKS5cbiAqXG4gKiBAZXhhbXBsZSBUaGlzIGlzIHRoZSBIVE1MIG1hcmt1cCB3ZSB3aWxsIGJlIHVzaW5nIGluIGFsbCBvZiB0aGUgQVBJIGV4YW1wbGVzOlxuICpcbiAqIGBgYGh0bWxcbiAqIDx1bCBpZD1cImZydWl0c1wiPlxuICogICA8bGkgY2xhc3M9XCJhcHBsZVwiPkFwcGxlPC9saT5cbiAqICAgPGxpIGNsYXNzPVwib3JhbmdlXCI+T3JhbmdlPC9saT5cbiAqICAgPGxpIGNsYXNzPVwicGVhclwiPlBlYXI8L2xpPlxuICogPC91bD5cbiAqIGBgYFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2hlZXJpbzxUPiBpbXBsZW1lbnRzIEFycmF5TGlrZTxUPiB7XG4gIGxlbmd0aCA9IDA7XG4gIFtpbmRleDogbnVtYmVyXTogVDtcblxuICBvcHRpb25zOiBJbnRlcm5hbE9wdGlvbnM7XG4gIC8qKlxuICAgKiBUaGUgcm9vdCBvZiB0aGUgZG9jdW1lbnQuIENhbiBiZSBzZXQgYnkgdXNpbmcgdGhlIGByb290YCBhcmd1bWVudCBvZiB0aGVcbiAgICogY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcm9vdDogQ2hlZXJpbzxEb2N1bWVudD4gfCBudWxsO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSBvZiBjaGVlcmlvLiBNZXRob2RzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIG1vZHVsZXMuIFVzYWdlIG9mIHRoaXNcbiAgICogY29uc3RydWN0b3IgaXMgbm90IHJlY29tbWVuZGVkLiBQbGVhc2UgdXNlIGAkLmxvYWRgIGluc3RlYWQuXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSBlbGVtZW50cyAtIFRoZSBuZXcgc2VsZWN0aW9uLlxuICAgKiBAcGFyYW0gcm9vdCAtIFNldHMgdGhlIHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciB0aGUgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBlbGVtZW50czogQXJyYXlMaWtlPFQ+IHwgdW5kZWZpbmVkLFxuICAgIHJvb3Q6IENoZWVyaW88RG9jdW1lbnQ+IHwgbnVsbCxcbiAgICBvcHRpb25zOiBJbnRlcm5hbE9wdGlvbnMsXG4gICkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgdGhpcy5fcm9vdCA9IHJvb3Q7XG5cbiAgICBpZiAoZWxlbWVudHMpIHtcbiAgICAgIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVsZW1lbnRzLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgdGhpc1tpZHhdID0gZWxlbWVudHNbaWR4XTtcbiAgICAgIH1cbiAgICAgIHRoaXMubGVuZ3RoID0gZWxlbWVudHMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHByZXZPYmplY3Q6IENoZWVyaW88YW55PiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIE1ha2UgYSBjaGVlcmlvIG9iamVjdC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIGRvbSAtIFRoZSBjb250ZW50cyBvZiB0aGUgbmV3IG9iamVjdC5cbiAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCBvZiB0aGUgbmV3IG9iamVjdC5cbiAgICogQHJldHVybnMgVGhlIG5ldyBjaGVlcmlvIG9iamVjdC5cbiAgICovXG4gIGFic3RyYWN0IF9tYWtlPFQ+KFxuICAgIGRvbTogQXJyYXlMaWtlPFQ+IHwgVCB8IHN0cmluZyxcbiAgICBjb250ZXh0PzogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+LFxuICApOiBDaGVlcmlvPFQ+O1xuXG4gIC8qKlxuICAgKiBQYXJzZXMgc29tZSBjb250ZW50LlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0gY29udGVudCAtIENvbnRlbnQgdG8gcGFyc2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyBmb3IgcGFyc2luZy5cbiAgICogQHBhcmFtIGlzRG9jdW1lbnQgLSBBbGxvd3MgcGFyc2VyIHRvIGJlIHN3aXRjaGVkIHRvIGZyYWdtZW50IG1vZGUuXG4gICAqIEByZXR1cm5zIEEgZG9jdW1lbnQgY29udGFpbmluZyB0aGUgYGNvbnRlbnRgLlxuICAgKi9cbiAgYWJzdHJhY3QgX3BhcnNlKFxuICAgIGNvbnRlbnQ6IHN0cmluZyB8IERvY3VtZW50IHwgQW55Tm9kZSB8IEFueU5vZGVbXSB8IEJ1ZmZlcixcbiAgICBvcHRpb25zOiBJbnRlcm5hbE9wdGlvbnMsXG4gICAgaXNEb2N1bWVudDogYm9vbGVhbixcbiAgICBjb250ZXh0OiBQYXJlbnROb2RlIHwgbnVsbCxcbiAgKTogRG9jdW1lbnQ7XG5cbiAgLyoqXG4gICAqIFJlbmRlciBhbiBlbGVtZW50IG9yIGEgc2V0IG9mIGVsZW1lbnRzLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0gZG9tIC0gRE9NIHRvIHJlbmRlci5cbiAgICogQHJldHVybnMgVGhlIHJlbmRlcmVkIERPTS5cbiAgICovXG4gIGFic3RyYWN0IF9yZW5kZXIoZG9tOiBBbnlOb2RlIHwgQXJyYXlMaWtlPEFueU5vZGU+KTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENoZWVyaW88VD4gZXh0ZW5kcyBNZXRob2RzVHlwZSwgSXRlcmFibGU8VD4ge1xuICBjaGVlcmlvOiAnW2NoZWVyaW8gb2JqZWN0XSc7XG5cbiAgc3BsaWNlOiB0eXBlb2YgQXJyYXkucHJvdG90eXBlLnNwbGljZTtcbn1cblxuLyoqIFNldCBhIHNpZ25hdHVyZSBvZiB0aGUgb2JqZWN0LiAqL1xuQ2hlZXJpby5wcm90b3R5cGUuY2hlZXJpbyA9ICdbY2hlZXJpbyBvYmplY3RdJztcblxuLypcbiAqIE1ha2UgY2hlZXJpbyBhbiBhcnJheS1saWtlIG9iamVjdFxuICovXG5DaGVlcmlvLnByb3RvdHlwZS5zcGxpY2UgPSBBcnJheS5wcm90b3R5cGUuc3BsaWNlO1xuXG4vLyBTdXBwb3J0IGZvciAoY29uc3QgZWxlbWVudCBvZiAkKC4uLikpIGl0ZXJhdGlvbjpcbkNoZWVyaW8ucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBBcnJheS5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXTtcblxuLy8gUGx1ZyBpbiB0aGUgQVBJXG5PYmplY3QuYXNzaWduKFxuICBDaGVlcmlvLnByb3RvdHlwZSxcbiAgQXR0cmlidXRlcyxcbiAgVHJhdmVyc2luZyxcbiAgTWFuaXB1bGF0aW9uLFxuICBDc3MsXG4gIEZvcm1zLFxuICBFeHRyYWN0LFxuKTtcbiIsICJpbXBvcnQge1xuICB0eXBlIENoZWVyaW9PcHRpb25zLFxuICB0eXBlIEludGVybmFsT3B0aW9ucyxcbiAgZmxhdHRlbk9wdGlvbnMsXG59IGZyb20gJy4vb3B0aW9ucy5qcyc7XG5pbXBvcnQgKiBhcyBzdGF0aWNNZXRob2RzIGZyb20gJy4vc3RhdGljLmpzJztcbmltcG9ydCB7IENoZWVyaW8gfSBmcm9tICcuL2NoZWVyaW8uanMnO1xuaW1wb3J0IHsgaXNIdG1sLCBpc0NoZWVyaW8gfSBmcm9tICcuL3V0aWxzLmpzJztcbmltcG9ydCB0eXBlIHsgQW55Tm9kZSwgRG9jdW1lbnQsIEVsZW1lbnQsIFBhcmVudE5vZGUgfSBmcm9tICdkb21oYW5kbGVyJztcbmltcG9ydCB0eXBlIHsgU2VsZWN0b3JUeXBlLCBCYXNpY0FjY2VwdGVkRWxlbXMgfSBmcm9tICcuL3R5cGVzLmpzJztcblxudHlwZSBTdGF0aWNUeXBlID0gdHlwZW9mIHN0YXRpY01ldGhvZHM7XG5cbi8qKlxuICogQSBxdWVyeWluZyBmdW5jdGlvbiwgYm91bmQgdG8gYSBkb2N1bWVudCBjcmVhdGVkIGZyb20gdGhlIHByb3ZpZGVkIG1hcmt1cC5cbiAqXG4gKiBBbHNvIHByb3ZpZGVzIHNldmVyYWwgaGVscGVyIG1ldGhvZHMgZm9yIGRlYWxpbmcgd2l0aCB0aGUgZG9jdW1lbnQgYXMgYVxuICogd2hvbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlZXJpb0FQSSBleHRlbmRzIFN0YXRpY1R5cGUge1xuICAvKipcbiAgICogVGhpcyBzZWxlY3RvciBtZXRob2QgaXMgdGhlIHN0YXJ0aW5nIHBvaW50IGZvciB0cmF2ZXJzaW5nIGFuZCBtYW5pcHVsYXRpbmdcbiAgICogdGhlIGRvY3VtZW50LiBMaWtlIGpRdWVyeSwgaXQncyB0aGUgcHJpbWFyeSBtZXRob2QgZm9yIHNlbGVjdGluZyBlbGVtZW50c1xuICAgKiBpbiB0aGUgZG9jdW1lbnQuXG4gICAqXG4gICAqIGBzZWxlY3RvcmAgc2VhcmNoZXMgd2l0aGluIHRoZSBgY29udGV4dGAgc2NvcGUsIHdoaWNoIHNlYXJjaGVzIHdpdGhpbiB0aGVcbiAgICogYHJvb3RgIHNjb3BlLlxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKlxuICAgKiBgYGBqc1xuICAgKiAkKCd1bCAucGVhcicpLmF0dHIoJ2NsYXNzJyk7XG4gICAqIC8vPT4gcGVhclxuICAgKlxuICAgKiAkKCdsaVtjbGFzcz1vcmFuZ2VdJykuaHRtbCgpO1xuICAgKiAvLz0+IE9yYW5nZVxuICAgKlxuICAgKiAkKCcuYXBwbGUnLCAnI2ZydWl0cycpLnRleHQoKTtcbiAgICogLy89PiBBcHBsZVxuICAgKiBgYGBcbiAgICpcbiAgICogT3B0aW9uYWxseSwgeW91IGNhbiBhbHNvIGxvYWQgSFRNTCBieSBwYXNzaW5nIHRoZSBzdHJpbmcgYXMgdGhlIHNlbGVjdG9yOlxuICAgKlxuICAgKiBgYGBqc1xuICAgKiAkKCc8dWwgaWQ9XCJmcnVpdHNcIj4uLi48L3VsPicpO1xuICAgKiBgYGBcbiAgICpcbiAgICogT3IgdGhlIGNvbnRleHQ6XG4gICAqXG4gICAqIGBgYGpzXG4gICAqICQoJ3VsJywgJzx1bCBpZD1cImZydWl0c1wiPi4uLjwvdWw+Jyk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBPciBhcyB0aGUgcm9vdDpcbiAgICpcbiAgICogYGBganNcbiAgICogJCgnbGknLCAndWwnLCAnPHVsIGlkPVwiZnJ1aXRzXCI+Li4uPC91bD4nKTtcbiAgICogYGBgXG4gICAqXG4gICAqIEBwYXJhbSBzZWxlY3RvciAtIEVpdGhlciBhIHNlbGVjdG9yIHRvIGxvb2sgZm9yIHdpdGhpbiB0aGUgZG9jdW1lbnQsIG9yIHRoZVxuICAgKiAgIGNvbnRlbnRzIG9mIGEgbmV3IENoZWVyaW8gaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBjb250ZXh0IC0gRWl0aGVyIGEgc2VsZWN0b3IgdG8gbG9vayBmb3Igd2l0aGluIHRoZSByb290LCBvciB0aGVcbiAgICogICBjb250ZW50cyBvZiB0aGUgZG9jdW1lbnQgdG8gcXVlcnkuXG4gICAqIEBwYXJhbSByb290IC0gT3B0aW9uYWwgSFRNTCBkb2N1bWVudCBzdHJpbmcuXG4gICAqL1xuICA8VCBleHRlbmRzIEFueU5vZGUsIFMgZXh0ZW5kcyBzdHJpbmc+KFxuICAgIHNlbGVjdG9yPzogUyB8IEJhc2ljQWNjZXB0ZWRFbGVtczxUPixcbiAgICBjb250ZXh0PzogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+IHwgbnVsbCxcbiAgICByb290PzogQmFzaWNBY2NlcHRlZEVsZW1zPERvY3VtZW50PixcbiAgICBvcHRpb25zPzogQ2hlZXJpb09wdGlvbnMsXG4gICk6IENoZWVyaW88UyBleHRlbmRzIFNlbGVjdG9yVHlwZSA/IEVsZW1lbnQgOiBUPjtcblxuICAvKipcbiAgICogVGhlIHJvb3QgdGhlIGRvY3VtZW50IHdhcyBvcmlnaW5hbGx5IGxvYWRlZCB3aXRoLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Jvb3Q6IERvY3VtZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9ucyB0aGUgZG9jdW1lbnQgd2FzIG9yaWdpbmFsbHkgbG9hZGVkIHdpdGguXG4gICAqXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfb3B0aW9uczogSW50ZXJuYWxPcHRpb25zO1xuXG4gIC8qKiBNaW1pYyBqUXVlcnkncyBwcm90b3R5cGUgYWxpYXMgZm9yIHBsdWdpbiBhdXRob3JzLiAqL1xuICBmbjogdHlwZW9mIENoZWVyaW8ucHJvdG90eXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgYC5sb2FkYCBzdGF0aWMgbWV0aG9kIGRlZmluZWQgb24gdGhlIFwibG9hZGVkXCIgQ2hlZXJpbyBmYWN0b3J5IGZ1bmN0aW9uXG4gICAqIGlzIGRlcHJlY2F0ZWQuIFVzZXJzIGFyZSBlbmNvdXJhZ2VkIHRvIGluc3RlYWQgdXNlIHRoZSBgbG9hZGAgZnVuY3Rpb25cbiAgICogZXhwb3J0ZWQgYnkgdGhlIENoZWVyaW8gbW9kdWxlLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCBVc2UgdGhlIGBsb2FkYCBmdW5jdGlvbiBleHBvcnRlZCBieSB0aGUgQ2hlZXJpbyBtb2R1bGUuXG4gICAqIEBjYXRlZ29yeSBEZXByZWNhdGVkXG4gICAqIEBleGFtcGxlXG4gICAqXG4gICAqIGBgYGpzXG4gICAqIGNvbnN0ICQgPSBjaGVlcmlvLmxvYWQoJzxoMT5IZWxsbywgPHNwYW4+d29ybGQ8L3NwYW4+LjwvaDE+Jyk7XG4gICAqIGBgYFxuICAgKi9cbiAgbG9hZDogUmV0dXJuVHlwZTx0eXBlb2YgZ2V0TG9hZD47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRMb2FkKFxuICBwYXJzZTogdHlwZW9mIENoZWVyaW8ucHJvdG90eXBlLl9wYXJzZSxcbiAgcmVuZGVyOiAoXG4gICAgZG9tOiBBbnlOb2RlIHwgQXJyYXlMaWtlPEFueU5vZGU+LFxuICAgIG9wdGlvbnM6IEludGVybmFsT3B0aW9ucyxcbiAgKSA9PiBzdHJpbmcsXG4pIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIHF1ZXJ5aW5nIGZ1bmN0aW9uLCBib3VuZCB0byBhIGRvY3VtZW50IGNyZWF0ZWQgZnJvbSB0aGUgcHJvdmlkZWRcbiAgICogbWFya3VwLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgc2ltaWxhciB0byB3ZWIgYnJvd3NlciBjb250ZXh0cywgdGhpcyBvcGVyYXRpb24gbWF5IGludHJvZHVjZVxuICAgKiBgPGh0bWw+YCwgYDxoZWFkPmAsIGFuZCBgPGJvZHk+YCBlbGVtZW50czsgc2V0IGBpc0RvY3VtZW50YCB0byBgZmFsc2VgIHRvXG4gICAqIHN3aXRjaCB0byBmcmFnbWVudCBtb2RlIGFuZCBkaXNhYmxlIHRoaXMuXG4gICAqXG4gICAqIEBwYXJhbSBjb250ZW50IC0gTWFya3VwIHRvIGJlIGxvYWRlZC5cbiAgICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciB0aGUgY3JlYXRlZCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIGlzRG9jdW1lbnQgLSBBbGxvd3MgcGFyc2VyIHRvIGJlIHN3aXRjaGVkIHRvIGZyYWdtZW50IG1vZGUuXG4gICAqIEByZXR1cm5zIFRoZSBsb2FkZWQgZG9jdW1lbnQuXG4gICAqIEBzZWUge0BsaW5rIGh0dHBzOi8vY2hlZXJpby5qcy5vcmcjbG9hZGluZ30gZm9yIGFkZGl0aW9uYWwgdXNhZ2UgaW5mb3JtYXRpb24uXG4gICAqL1xuICByZXR1cm4gZnVuY3Rpb24gbG9hZChcbiAgICBjb250ZW50OiBzdHJpbmcgfCBBbnlOb2RlIHwgQW55Tm9kZVtdIHwgQnVmZmVyLFxuICAgIG9wdGlvbnM/OiBDaGVlcmlvT3B0aW9ucyB8IG51bGwsXG4gICAgaXNEb2N1bWVudCA9IHRydWUsXG4gICk6IENoZWVyaW9BUEkge1xuICAgIGlmICgoY29udGVudCBhcyBzdHJpbmcgfCBudWxsKSA9PSBudWxsKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NoZWVyaW8ubG9hZCgpIGV4cGVjdHMgYSBzdHJpbmcnKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnRlcm5hbE9wdHMgPSBmbGF0dGVuT3B0aW9ucyhvcHRpb25zKTtcbiAgICBjb25zdCBpbml0aWFsUm9vdCA9IHBhcnNlKGNvbnRlbnQsIGludGVybmFsT3B0cywgaXNEb2N1bWVudCwgbnVsbCk7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYW4gZXh0ZW5kZWQgY2xhc3MgaGVyZSwgc28gdGhhdCBleHRlbnNpb25zIG9ubHkgbGl2ZSBvbiBvbmVcbiAgICAgKiBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICBjbGFzcyBMb2FkZWRDaGVlcmlvPFQ+IGV4dGVuZHMgQ2hlZXJpbzxUPiB7XG4gICAgICBfbWFrZTxUPihcbiAgICAgICAgc2VsZWN0b3I/OiBBcnJheUxpa2U8VD4gfCBUIHwgc3RyaW5nLFxuICAgICAgICBjb250ZXh0PzogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+IHwgbnVsbCxcbiAgICAgICk6IENoZWVyaW88VD4ge1xuICAgICAgICBjb25zdCBjaGVlcmlvID0gaW5pdGlhbGl6ZShzZWxlY3RvciwgY29udGV4dCk7XG4gICAgICAgIGNoZWVyaW8ucHJldk9iamVjdCA9IHRoaXM7XG5cbiAgICAgICAgcmV0dXJuIGNoZWVyaW87XG4gICAgICB9XG5cbiAgICAgIF9wYXJzZShcbiAgICAgICAgY29udGVudDogc3RyaW5nIHwgRG9jdW1lbnQgfCBBbnlOb2RlIHwgQW55Tm9kZVtdIHwgQnVmZmVyLFxuICAgICAgICBvcHRpb25zOiBJbnRlcm5hbE9wdGlvbnMsXG4gICAgICAgIGlzRG9jdW1lbnQ6IGJvb2xlYW4sXG4gICAgICAgIGNvbnRleHQ6IFBhcmVudE5vZGUgfCBudWxsLFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiBwYXJzZShjb250ZW50LCBvcHRpb25zLCBpc0RvY3VtZW50LCBjb250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgX3JlbmRlcihkb206IEFueU5vZGUgfCBBcnJheUxpa2U8QW55Tm9kZT4pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gcmVuZGVyKGRvbSwgdGhpcy5vcHRpb25zKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWFsaXplPFQgPSBBbnlOb2RlLCBTIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPihcbiAgICAgIHNlbGVjdG9yPzogQXJyYXlMaWtlPFQ+IHwgVCB8IFMsXG4gICAgICBjb250ZXh0PzogQmFzaWNBY2NlcHRlZEVsZW1zPEFueU5vZGU+IHwgbnVsbCxcbiAgICAgIHJvb3Q6IEJhc2ljQWNjZXB0ZWRFbGVtczxEb2N1bWVudD4gPSBpbml0aWFsUm9vdCxcbiAgICAgIG9wdHM/OiBDaGVlcmlvT3B0aW9ucyxcbiAgICApOiBDaGVlcmlvPFMgZXh0ZW5kcyBTZWxlY3RvclR5cGUgPyBFbGVtZW50IDogVD4ge1xuICAgICAgdHlwZSBSZXN1bHQgPSBTIGV4dGVuZHMgU2VsZWN0b3JUeXBlID8gRWxlbWVudCA6IFQ7XG5cbiAgICAgIC8vICQoJClcbiAgICAgIGlmIChzZWxlY3RvciAmJiBpc0NoZWVyaW88UmVzdWx0PihzZWxlY3RvcikpIHJldHVybiBzZWxlY3RvcjtcblxuICAgICAgY29uc3Qgb3B0aW9ucyA9IGZsYXR0ZW5PcHRpb25zKG9wdHMsIGludGVybmFsT3B0cyk7XG4gICAgICBjb25zdCByID1cbiAgICAgICAgdHlwZW9mIHJvb3QgPT09ICdzdHJpbmcnXG4gICAgICAgICAgPyBbcGFyc2Uocm9vdCwgb3B0aW9ucywgZmFsc2UsIG51bGwpXVxuICAgICAgICAgIDogJ2xlbmd0aCcgaW4gcm9vdFxuICAgICAgICAgICAgPyByb290XG4gICAgICAgICAgICA6IFtyb290XTtcbiAgICAgIGNvbnN0IHJvb3RJbnN0YW5jZSA9IGlzQ2hlZXJpbzxEb2N1bWVudD4ocilcbiAgICAgICAgPyByXG4gICAgICAgIDogbmV3IExvYWRlZENoZWVyaW88RG9jdW1lbnQ+KHIsIG51bGwsIG9wdGlvbnMpO1xuICAgICAgLy8gQWRkIGEgY3ljbGljIHJlZmVyZW5jZSwgc28gdGhhdCBjYWxsaW5nIG1ldGhvZHMgb24gYF9yb290YCBuZXZlciBmYWlscy5cbiAgICAgIHJvb3RJbnN0YW5jZS5fcm9vdCA9IHJvb3RJbnN0YW5jZTtcblxuICAgICAgLy8gJCgpLCAkKG51bGwpLCAkKHVuZGVmaW5lZCksICQoZmFsc2UpXG4gICAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICAgIHJldHVybiBuZXcgTG9hZGVkQ2hlZXJpbzxSZXN1bHQ+KHVuZGVmaW5lZCwgcm9vdEluc3RhbmNlLCBvcHRpb25zKTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZWxlbWVudHM6IEFueU5vZGVbXSB8IHVuZGVmaW5lZCA9XG4gICAgICAgIHR5cGVvZiBzZWxlY3RvciA9PT0gJ3N0cmluZycgJiYgaXNIdG1sKHNlbGVjdG9yKVxuICAgICAgICAgID8gLy8gJCg8aHRtbD4pXG4gICAgICAgICAgICBwYXJzZShzZWxlY3Rvciwgb3B0aW9ucywgZmFsc2UsIG51bGwpLmNoaWxkcmVuXG4gICAgICAgICAgOiBpc05vZGUoc2VsZWN0b3IpXG4gICAgICAgICAgICA/IC8vICQoZG9tKVxuICAgICAgICAgICAgICBbc2VsZWN0b3JdXG4gICAgICAgICAgICA6IEFycmF5LmlzQXJyYXkoc2VsZWN0b3IpXG4gICAgICAgICAgICAgID8gLy8gJChbZG9tXSlcbiAgICAgICAgICAgICAgICBzZWxlY3RvclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcblxuICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgTG9hZGVkQ2hlZXJpbyhlbGVtZW50cywgcm9vdEluc3RhbmNlLCBvcHRpb25zKTtcblxuICAgICAgaWYgKGVsZW1lbnRzKSB7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZSBhcyBhbnk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2Ygc2VsZWN0b3IgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1VuZXhwZWN0ZWQgdHlwZSBvZiBzZWxlY3RvcicpO1xuICAgICAgfVxuXG4gICAgICAvLyBXZSBrbm93IHRoYXQgb3VyIHNlbGVjdG9yIGlzIGEgc3RyaW5nIG5vdy5cbiAgICAgIGxldCBzZWFyY2ggPSBzZWxlY3RvcjtcblxuICAgICAgY29uc3Qgc2VhcmNoQ29udGV4dDogQ2hlZXJpbzxBbnlOb2RlPiB8IHVuZGVmaW5lZCA9IGNvbnRleHRcbiAgICAgICAgPyAvLyBJZiB3ZSBkb24ndCBoYXZlIGEgY29udGV4dCwgbWF5YmUgd2UgaGF2ZSBhIHJvb3QsIGZyb20gbG9hZGluZ1xuICAgICAgICAgIHR5cGVvZiBjb250ZXh0ID09PSAnc3RyaW5nJ1xuICAgICAgICAgID8gaXNIdG1sKGNvbnRleHQpXG4gICAgICAgICAgICA/IC8vICQoJ2xpJywgJzx1bD4uLi48L3VsPicpXG4gICAgICAgICAgICAgIG5ldyBMb2FkZWRDaGVlcmlvPERvY3VtZW50PihcbiAgICAgICAgICAgICAgICBbcGFyc2UoY29udGV4dCwgb3B0aW9ucywgZmFsc2UsIG51bGwpXSxcbiAgICAgICAgICAgICAgICByb290SW5zdGFuY2UsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiAvLyAkKCdsaScsICd1bCcpXG4gICAgICAgICAgICAgICgoc2VhcmNoID0gYCR7Y29udGV4dH0gJHtzZWFyY2h9YCBhcyBTKSwgcm9vdEluc3RhbmNlKVxuICAgICAgICAgIDogaXNDaGVlcmlvPEFueU5vZGU+KGNvbnRleHQpXG4gICAgICAgICAgICA/IC8vICQoJ2xpJywgJClcbiAgICAgICAgICAgICAgY29udGV4dFxuICAgICAgICAgICAgOiAvLyAkKCdsaScsIG5vZGUpLCAkKCdsaScsIFtub2Rlc10pXG4gICAgICAgICAgICAgIG5ldyBMb2FkZWRDaGVlcmlvPEFueU5vZGU+KFxuICAgICAgICAgICAgICAgIEFycmF5LmlzQXJyYXkoY29udGV4dCkgPyBjb250ZXh0IDogW2NvbnRleHRdLFxuICAgICAgICAgICAgICAgIHJvb3RJbnN0YW5jZSxcbiAgICAgICAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgICAgICApXG4gICAgICAgIDogcm9vdEluc3RhbmNlO1xuXG4gICAgICAvLyBJZiB3ZSBzdGlsbCBkb24ndCBoYXZlIGEgY29udGV4dCwgcmV0dXJuXG4gICAgICBpZiAoIXNlYXJjaENvbnRleHQpIHJldHVybiBpbnN0YW5jZSBhcyBhbnk7XG5cbiAgICAgIC8qXG4gICAgICAgKiAjaWQsIC5jbGFzcywgdGFnXG4gICAgICAgKi9cbiAgICAgIHJldHVybiBzZWFyY2hDb250ZXh0LmZpbmQoc2VhcmNoKSBhcyBDaGVlcmlvPFJlc3VsdD47XG4gICAgfVxuXG4gICAgLy8gQWRkIGluIHN0YXRpYyBtZXRob2RzICYgcHJvcGVydGllc1xuICAgIE9iamVjdC5hc3NpZ24oaW5pdGlhbGl6ZSwgc3RhdGljTWV0aG9kcywge1xuICAgICAgbG9hZCxcbiAgICAgIC8vIGBfcm9vdGAgYW5kIGBfb3B0aW9uc2AgYXJlIHVzZWQgaW4gc3RhdGljIG1ldGhvZHMuXG4gICAgICBfcm9vdDogaW5pdGlhbFJvb3QsXG4gICAgICBfb3B0aW9uczogaW50ZXJuYWxPcHRzLFxuICAgICAgLy8gQWRkIGBmbmAgZm9yIHBsdWdpbnNcbiAgICAgIGZuOiBMb2FkZWRDaGVlcmlvLnByb3RvdHlwZSxcbiAgICAgIC8vIEFkZCB0aGUgcHJvdG90eXBlIGhlcmUgdG8gbWFpbnRhaW4gYGluc3RhbmNlb2ZgIGJlaGF2aW9yLlxuICAgICAgcHJvdG90eXBlOiBMb2FkZWRDaGVlcmlvLnByb3RvdHlwZSxcbiAgICB9KTtcblxuICAgIHJldHVybiBpbml0aWFsaXplIGFzIENoZWVyaW9BUEk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzTm9kZShvYmo6IGFueSk6IG9iaiBpcyBBbnlOb2RlIHtcbiAgcmV0dXJuIChcbiAgICAhIW9iai5uYW1lIHx8XG4gICAgb2JqLnR5cGUgPT09ICdyb290JyB8fFxuICAgIG9iai50eXBlID09PSAndGV4dCcgfHxcbiAgICBvYmoudHlwZSA9PT0gJ2NvbW1lbnQnXG4gICk7XG59XG4iLCAiY29uc3QgVU5ERUZJTkVEX0NPREVfUE9JTlRTID0gbmV3IFNldChbXG4gICAgNjU1MzQsIDY1NTM1LCAxMzEwNzAsIDEzMTA3MSwgMTk2NjA2LCAxOTY2MDcsIDI2MjE0MiwgMjYyMTQzLCAzMjc2NzgsIDMyNzY3OSwgMzkzMjE0LFxuICAgIDM5MzIxNSwgNDU4NzUwLCA0NTg3NTEsIDUyNDI4NiwgNTI0Mjg3LCA1ODk4MjIsIDU4OTgyMywgNjU1MzU4LCA2NTUzNTksIDcyMDg5NCxcbiAgICA3MjA4OTUsIDc4NjQzMCwgNzg2NDMxLCA4NTE5NjYsIDg1MTk2NywgOTE3NTAyLCA5MTc1MDMsIDk4MzAzOCwgOTgzMDM5LCAxMDQ4NTc0LFxuICAgIDEwNDg1NzUsIDExMTQxMTAsIDExMTQxMTEsXG5dKTtcbmV4cG9ydCBjb25zdCBSRVBMQUNFTUVOVF9DSEFSQUNURVIgPSAnXFx1RkZGRCc7XG5leHBvcnQgdmFyIENPREVfUE9JTlRTO1xuKGZ1bmN0aW9uIChDT0RFX1BPSU5UUykge1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiRU9GXCJdID0gLTFdID0gXCJFT0ZcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIk5VTExcIl0gPSAwXSA9IFwiTlVMTFwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiVEFCVUxBVElPTlwiXSA9IDldID0gXCJUQUJVTEFUSU9OXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJDQVJSSUFHRV9SRVRVUk5cIl0gPSAxM10gPSBcIkNBUlJJQUdFX1JFVFVSTlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTElORV9GRUVEXCJdID0gMTBdID0gXCJMSU5FX0ZFRURcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkZPUk1fRkVFRFwiXSA9IDEyXSA9IFwiRk9STV9GRUVEXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJTUEFDRVwiXSA9IDMyXSA9IFwiU1BBQ0VcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkVYQ0xBTUFUSU9OX01BUktcIl0gPSAzM10gPSBcIkVYQ0xBTUFUSU9OX01BUktcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIlFVT1RBVElPTl9NQVJLXCJdID0gMzRdID0gXCJRVU9UQVRJT05fTUFSS1wiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiQU1QRVJTQU5EXCJdID0gMzhdID0gXCJBTVBFUlNBTkRcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkFQT1NUUk9QSEVcIl0gPSAzOV0gPSBcIkFQT1NUUk9QSEVcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkhZUEhFTl9NSU5VU1wiXSA9IDQ1XSA9IFwiSFlQSEVOX01JTlVTXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJTT0xJRFVTXCJdID0gNDddID0gXCJTT0xJRFVTXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJESUdJVF8wXCJdID0gNDhdID0gXCJESUdJVF8wXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJESUdJVF85XCJdID0gNTddID0gXCJESUdJVF85XCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJTRU1JQ09MT05cIl0gPSA1OV0gPSBcIlNFTUlDT0xPTlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTEVTU19USEFOX1NJR05cIl0gPSA2MF0gPSBcIkxFU1NfVEhBTl9TSUdOXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJFUVVBTFNfU0lHTlwiXSA9IDYxXSA9IFwiRVFVQUxTX1NJR05cIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkdSRUFURVJfVEhBTl9TSUdOXCJdID0gNjJdID0gXCJHUkVBVEVSX1RIQU5fU0lHTlwiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiUVVFU1RJT05fTUFSS1wiXSA9IDYzXSA9IFwiUVVFU1RJT05fTUFSS1wiO1xuICAgIENPREVfUE9JTlRTW0NPREVfUE9JTlRTW1wiTEFUSU5fQ0FQSVRBTF9BXCJdID0gNjVdID0gXCJMQVRJTl9DQVBJVEFMX0FcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkxBVElOX0NBUElUQUxfWlwiXSA9IDkwXSA9IFwiTEFUSU5fQ0FQSVRBTF9aXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJSSUdIVF9TUVVBUkVfQlJBQ0tFVFwiXSA9IDkzXSA9IFwiUklHSFRfU1FVQVJFX0JSQUNLRVRcIjtcbiAgICBDT0RFX1BPSU5UU1tDT0RFX1BPSU5UU1tcIkdSQVZFX0FDQ0VOVFwiXSA9IDk2XSA9IFwiR1JBVkVfQUNDRU5UXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9TTUFMTF9BXCJdID0gOTddID0gXCJMQVRJTl9TTUFMTF9BXCI7XG4gICAgQ09ERV9QT0lOVFNbQ09ERV9QT0lOVFNbXCJMQVRJTl9TTUFMTF9aXCJdID0gMTIyXSA9IFwiTEFUSU5fU01BTExfWlwiO1xufSkoQ09ERV9QT0lOVFMgfHwgKENPREVfUE9JTlRTID0ge30pKTtcbmV4cG9ydCBjb25zdCBTRVFVRU5DRVMgPSB7XG4gICAgREFTSF9EQVNIOiAnLS0nLFxuICAgIENEQVRBX1NUQVJUOiAnW0NEQVRBWycsXG4gICAgRE9DVFlQRTogJ2RvY3R5cGUnLFxuICAgIFNDUklQVDogJ3NjcmlwdCcsXG4gICAgUFVCTElDOiAncHVibGljJyxcbiAgICBTWVNURU06ICdzeXN0ZW0nLFxufTtcbi8vU3Vycm9nYXRlc1xuZXhwb3J0IGZ1bmN0aW9uIGlzU3Vycm9nYXRlKGNwKSB7XG4gICAgcmV0dXJuIGNwID49IDU1Mjk2ICYmIGNwIDw9IDU3MzQzO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU3Vycm9nYXRlUGFpcihjcCkge1xuICAgIHJldHVybiBjcCA+PSA1NjMyMCAmJiBjcCA8PSA1NzM0Mztcbn1cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdXJyb2dhdGVQYWlyQ29kZVBvaW50KGNwMSwgY3AyKSB7XG4gICAgcmV0dXJuIChjcDEgLSA1NTI5NikgKiAxMDI0ICsgOTIxNiArIGNwMjtcbn1cbi8vTk9URTogZXhjbHVkaW5nIE5VTEwgYW5kIEFTQ0lJIHdoaXRlc3BhY2VcbmV4cG9ydCBmdW5jdGlvbiBpc0NvbnRyb2xDb2RlUG9pbnQoY3ApIHtcbiAgICByZXR1cm4gKChjcCAhPT0gMHgyMCAmJiBjcCAhPT0gMHgwYSAmJiBjcCAhPT0gMHgwZCAmJiBjcCAhPT0gMHgwOSAmJiBjcCAhPT0gMHgwYyAmJiBjcCA+PSAweDAxICYmIGNwIDw9IDB4MWYpIHx8XG4gICAgICAgIChjcCA+PSAweDdmICYmIGNwIDw9IDB4OWYpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1VuZGVmaW5lZENvZGVQb2ludChjcCkge1xuICAgIHJldHVybiAoY3AgPj0gNjQ5NzYgJiYgY3AgPD0gNjUwMDcpIHx8IFVOREVGSU5FRF9DT0RFX1BPSU5UUy5oYXMoY3ApO1xufVxuIiwgImV4cG9ydCB2YXIgRVJSO1xuKGZ1bmN0aW9uIChFUlIpIHtcbiAgICBFUlJbXCJjb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbVwiXSA9IFwiY29udHJvbC1jaGFyYWN0ZXItaW4taW5wdXQtc3RyZWFtXCI7XG4gICAgRVJSW1wibm9uY2hhcmFjdGVySW5JbnB1dFN0cmVhbVwiXSA9IFwibm9uY2hhcmFjdGVyLWluLWlucHV0LXN0cmVhbVwiO1xuICAgIEVSUltcInN1cnJvZ2F0ZUluSW5wdXRTdHJlYW1cIl0gPSBcInN1cnJvZ2F0ZS1pbi1pbnB1dC1zdHJlYW1cIjtcbiAgICBFUlJbXCJub25Wb2lkSHRtbEVsZW1lbnRTdGFydFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXNcIl0gPSBcIm5vbi12b2lkLWh0bWwtZWxlbWVudC1zdGFydC10YWctd2l0aC10cmFpbGluZy1zb2xpZHVzXCI7XG4gICAgRVJSW1wiZW5kVGFnV2l0aEF0dHJpYnV0ZXNcIl0gPSBcImVuZC10YWctd2l0aC1hdHRyaWJ1dGVzXCI7XG4gICAgRVJSW1wiZW5kVGFnV2l0aFRyYWlsaW5nU29saWR1c1wiXSA9IFwiZW5kLXRhZy13aXRoLXRyYWlsaW5nLXNvbGlkdXNcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkU29saWR1c0luVGFnXCJdID0gXCJ1bmV4cGVjdGVkLXNvbGlkdXMtaW4tdGFnXCI7XG4gICAgRVJSW1widW5leHBlY3RlZE51bGxDaGFyYWN0ZXJcIl0gPSBcInVuZXhwZWN0ZWQtbnVsbC1jaGFyYWN0ZXJcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkUXVlc3Rpb25NYXJrSW5zdGVhZE9mVGFnTmFtZVwiXSA9IFwidW5leHBlY3RlZC1xdWVzdGlvbi1tYXJrLWluc3RlYWQtb2YtdGFnLW5hbWVcIjtcbiAgICBFUlJbXCJpbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWVcIl0gPSBcImludmFsaWQtZmlyc3QtY2hhcmFjdGVyLW9mLXRhZy1uYW1lXCI7XG4gICAgRVJSW1widW5leHBlY3RlZEVxdWFsc1NpZ25CZWZvcmVBdHRyaWJ1dGVOYW1lXCJdID0gXCJ1bmV4cGVjdGVkLWVxdWFscy1zaWduLWJlZm9yZS1hdHRyaWJ1dGUtbmFtZVwiO1xuICAgIEVSUltcIm1pc3NpbmdFbmRUYWdOYW1lXCJdID0gXCJtaXNzaW5nLWVuZC10YWctbmFtZVwiO1xuICAgIEVSUltcInVuZXhwZWN0ZWRDaGFyYWN0ZXJJbkF0dHJpYnV0ZU5hbWVcIl0gPSBcInVuZXhwZWN0ZWQtY2hhcmFjdGVyLWluLWF0dHJpYnV0ZS1uYW1lXCI7XG4gICAgRVJSW1widW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlXCJdID0gXCJ1bmtub3duLW5hbWVkLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJtaXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcIm1pc3Npbmctc2VtaWNvbG9uLWFmdGVyLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJ1bmV4cGVjdGVkQ2hhcmFjdGVyQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllclwiXSA9IFwidW5leHBlY3RlZC1jaGFyYWN0ZXItYWZ0ZXItZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllclwiO1xuICAgIEVSUltcInVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWVcIl0gPSBcInVuZXhwZWN0ZWQtY2hhcmFjdGVyLWluLXVucXVvdGVkLWF0dHJpYnV0ZS12YWx1ZVwiO1xuICAgIEVSUltcImVvZkJlZm9yZVRhZ05hbWVcIl0gPSBcImVvZi1iZWZvcmUtdGFnLW5hbWVcIjtcbiAgICBFUlJbXCJlb2ZJblRhZ1wiXSA9IFwiZW9mLWluLXRhZ1wiO1xuICAgIEVSUltcIm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZVwiXSA9IFwibWlzc2luZy1hdHRyaWJ1dGUtdmFsdWVcIjtcbiAgICBFUlJbXCJtaXNzaW5nV2hpdGVzcGFjZUJldHdlZW5BdHRyaWJ1dGVzXCJdID0gXCJtaXNzaW5nLXdoaXRlc3BhY2UtYmV0d2Vlbi1hdHRyaWJ1dGVzXCI7XG4gICAgRVJSW1wibWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkXCJdID0gXCJtaXNzaW5nLXdoaXRlc3BhY2UtYWZ0ZXItZG9jdHlwZS1wdWJsaWMta2V5d29yZFwiO1xuICAgIEVSUltcIm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkRvY3R5cGVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVyc1wiXSA9IFwibWlzc2luZy13aGl0ZXNwYWNlLWJldHdlZW4tZG9jdHlwZS1wdWJsaWMtYW5kLXN5c3RlbS1pZGVudGlmaWVyc1wiO1xuICAgIEVSUltcIm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZFwiXSA9IFwibWlzc2luZy13aGl0ZXNwYWNlLWFmdGVyLWRvY3R5cGUtc3lzdGVtLWtleXdvcmRcIjtcbiAgICBFUlJbXCJtaXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllclwiXSA9IFwibWlzc2luZy1xdW90ZS1iZWZvcmUtZG9jdHlwZS1wdWJsaWMtaWRlbnRpZmllclwiO1xuICAgIEVSUltcIm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyXCJdID0gXCJtaXNzaW5nLXF1b3RlLWJlZm9yZS1kb2N0eXBlLXN5c3RlbS1pZGVudGlmaWVyXCI7XG4gICAgRVJSW1wibWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyXCJdID0gXCJtaXNzaW5nLWRvY3R5cGUtcHVibGljLWlkZW50aWZpZXJcIjtcbiAgICBFUlJbXCJtaXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJcIl0gPSBcIm1pc3NpbmctZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllclwiO1xuICAgIEVSUltcImFicnVwdERvY3R5cGVQdWJsaWNJZGVudGlmaWVyXCJdID0gXCJhYnJ1cHQtZG9jdHlwZS1wdWJsaWMtaWRlbnRpZmllclwiO1xuICAgIEVSUltcImFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyXCJdID0gXCJhYnJ1cHQtZG9jdHlwZS1zeXN0ZW0taWRlbnRpZmllclwiO1xuICAgIEVSUltcImNkYXRhSW5IdG1sQ29udGVudFwiXSA9IFwiY2RhdGEtaW4taHRtbC1jb250ZW50XCI7XG4gICAgRVJSW1wiaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50XCJdID0gXCJpbmNvcnJlY3RseS1vcGVuZWQtY29tbWVudFwiO1xuICAgIEVSUltcImVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dFwiXSA9IFwiZW9mLWluLXNjcmlwdC1odG1sLWNvbW1lbnQtbGlrZS10ZXh0XCI7XG4gICAgRVJSW1wiZW9mSW5Eb2N0eXBlXCJdID0gXCJlb2YtaW4tZG9jdHlwZVwiO1xuICAgIEVSUltcIm5lc3RlZENvbW1lbnRcIl0gPSBcIm5lc3RlZC1jb21tZW50XCI7XG4gICAgRVJSW1wiYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50XCJdID0gXCJhYnJ1cHQtY2xvc2luZy1vZi1lbXB0eS1jb21tZW50XCI7XG4gICAgRVJSW1wiZW9mSW5Db21tZW50XCJdID0gXCJlb2YtaW4tY29tbWVudFwiO1xuICAgIEVSUltcImluY29ycmVjdGx5Q2xvc2VkQ29tbWVudFwiXSA9IFwiaW5jb3JyZWN0bHktY2xvc2VkLWNvbW1lbnRcIjtcbiAgICBFUlJbXCJlb2ZJbkNkYXRhXCJdID0gXCJlb2YtaW4tY2RhdGFcIjtcbiAgICBFUlJbXCJhYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcImFic2VuY2Utb2YtZGlnaXRzLWluLW51bWVyaWMtY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcIm51bGxDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcIm51bGwtY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcInN1cnJvZ2F0ZUNoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwic3Vycm9nYXRlLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJjaGFyYWN0ZXJSZWZlcmVuY2VPdXRzaWRlVW5pY29kZVJhbmdlXCJdID0gXCJjaGFyYWN0ZXItcmVmZXJlbmNlLW91dHNpZGUtdW5pY29kZS1yYW5nZVwiO1xuICAgIEVSUltcImNvbnRyb2xDaGFyYWN0ZXJSZWZlcmVuY2VcIl0gPSBcImNvbnRyb2wtY2hhcmFjdGVyLXJlZmVyZW5jZVwiO1xuICAgIEVSUltcIm5vbmNoYXJhY3RlckNoYXJhY3RlclJlZmVyZW5jZVwiXSA9IFwibm9uY2hhcmFjdGVyLWNoYXJhY3Rlci1yZWZlcmVuY2VcIjtcbiAgICBFUlJbXCJtaXNzaW5nV2hpdGVzcGFjZUJlZm9yZURvY3R5cGVOYW1lXCJdID0gXCJtaXNzaW5nLXdoaXRlc3BhY2UtYmVmb3JlLWRvY3R5cGUtbmFtZVwiO1xuICAgIEVSUltcIm1pc3NpbmdEb2N0eXBlTmFtZVwiXSA9IFwibWlzc2luZy1kb2N0eXBlLW5hbWVcIjtcbiAgICBFUlJbXCJpbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lXCJdID0gXCJpbnZhbGlkLWNoYXJhY3Rlci1zZXF1ZW5jZS1hZnRlci1kb2N0eXBlLW5hbWVcIjtcbiAgICBFUlJbXCJkdXBsaWNhdGVBdHRyaWJ1dGVcIl0gPSBcImR1cGxpY2F0ZS1hdHRyaWJ1dGVcIjtcbiAgICBFUlJbXCJub25Db25mb3JtaW5nRG9jdHlwZVwiXSA9IFwibm9uLWNvbmZvcm1pbmctZG9jdHlwZVwiO1xuICAgIEVSUltcIm1pc3NpbmdEb2N0eXBlXCJdID0gXCJtaXNzaW5nLWRvY3R5cGVcIjtcbiAgICBFUlJbXCJtaXNwbGFjZWREb2N0eXBlXCJdID0gXCJtaXNwbGFjZWQtZG9jdHlwZVwiO1xuICAgIEVSUltcImVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50XCJdID0gXCJlbmQtdGFnLXdpdGhvdXQtbWF0Y2hpbmctb3Blbi1lbGVtZW50XCI7XG4gICAgRVJSW1wiY2xvc2luZ09mRWxlbWVudFdpdGhPcGVuQ2hpbGRFbGVtZW50c1wiXSA9IFwiY2xvc2luZy1vZi1lbGVtZW50LXdpdGgtb3Blbi1jaGlsZC1lbGVtZW50c1wiO1xuICAgIEVSUltcImRpc2FsbG93ZWRDb250ZW50SW5Ob3NjcmlwdEluSGVhZFwiXSA9IFwiZGlzYWxsb3dlZC1jb250ZW50LWluLW5vc2NyaXB0LWluLWhlYWRcIjtcbiAgICBFUlJbXCJvcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2ZcIl0gPSBcIm9wZW4tZWxlbWVudHMtbGVmdC1hZnRlci1lb2ZcIjtcbiAgICBFUlJbXCJhYmFuZG9uZWRIZWFkRWxlbWVudENoaWxkXCJdID0gXCJhYmFuZG9uZWQtaGVhZC1lbGVtZW50LWNoaWxkXCI7XG4gICAgRVJSW1wibWlzcGxhY2VkU3RhcnRUYWdGb3JIZWFkRWxlbWVudFwiXSA9IFwibWlzcGxhY2VkLXN0YXJ0LXRhZy1mb3ItaGVhZC1lbGVtZW50XCI7XG4gICAgRVJSW1wibmVzdGVkTm9zY3JpcHRJbkhlYWRcIl0gPSBcIm5lc3RlZC1ub3NjcmlwdC1pbi1oZWFkXCI7XG4gICAgRVJSW1wiZW9mSW5FbGVtZW50VGhhdENhbkNvbnRhaW5Pbmx5VGV4dFwiXSA9IFwiZW9mLWluLWVsZW1lbnQtdGhhdC1jYW4tY29udGFpbi1vbmx5LXRleHRcIjtcbn0pKEVSUiB8fCAoRVJSID0ge30pKTtcbiIsICJpbXBvcnQgeyBDT0RFX1BPSU5UUyBhcyAkLCBnZXRTdXJyb2dhdGVQYWlyQ29kZVBvaW50LCBpc0NvbnRyb2xDb2RlUG9pbnQsIGlzU3Vycm9nYXRlLCBpc1N1cnJvZ2F0ZVBhaXIsIGlzVW5kZWZpbmVkQ29kZVBvaW50LCB9IGZyb20gJy4uL2NvbW1vbi91bmljb2RlLmpzJztcbmltcG9ydCB7IEVSUiB9IGZyb20gJy4uL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyc7XG4vL0NvbnN0XG5jb25zdCBERUZBVUxUX0JVRkZFUl9XQVRFUkxJTkUgPSAxIDw8IDE2O1xuLy9QcmVwcm9jZXNzb3Jcbi8vTk9URTogSFRNTCBpbnB1dCBwcmVwcm9jZXNzaW5nXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3BhcnNpbmcuaHRtbCNwcmVwcm9jZXNzaW5nLXRoZS1pbnB1dC1zdHJlYW0pXG5leHBvcnQgY2xhc3MgUHJlcHJvY2Vzc29yIHtcbiAgICBjb25zdHJ1Y3RvcihoYW5kbGVyKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXI7XG4gICAgICAgIHRoaXMuaHRtbCA9ICcnO1xuICAgICAgICB0aGlzLnBvcyA9IC0xO1xuICAgICAgICAvLyBOT1RFOiBJbml0aWFsIGBsYXN0R2FwUG9zYCBpcyAtMiwgdG8gZW5zdXJlIGBjb2xgIG9uIGluaXRpYWxpc2F0aW9uIGlzIDBcbiAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gLTI7XG4gICAgICAgIHRoaXMuZ2FwU3RhY2sgPSBbXTtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5sYXN0Q2h1bmtXcml0dGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJ1ZmZlcldhdGVybGluZSA9IERFRkFVTFRfQlVGRkVSX1dBVEVSTElORTtcbiAgICAgICAgdGhpcy5pc0VvbCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxpbmVTdGFydFBvcyA9IDA7XG4gICAgICAgIHRoaXMuZHJvcHBlZEJ1ZmZlclNpemUgPSAwO1xuICAgICAgICB0aGlzLmxpbmUgPSAxO1xuICAgICAgICAvL05PVEU6IGF2b2lkIHJlcG9ydGluZyBlcnJvcnMgdHdpY2Ugb24gYWR2YW5jZS9yZXRyZWF0XG4gICAgICAgIHRoaXMubGFzdEVyck9mZnNldCA9IC0xO1xuICAgIH1cbiAgICAvKiogVGhlIGNvbHVtbiBvbiB0aGUgY3VycmVudCBsaW5lLiBJZiB3ZSBqdXN0IHNhdyBhIGdhcCAoZWcuIGEgc3Vycm9nYXRlIHBhaXIpLCByZXR1cm4gdGhlIGluZGV4IGJlZm9yZS4gKi9cbiAgICBnZXQgY29sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3MgLSB0aGlzLmxpbmVTdGFydFBvcyArIE51bWJlcih0aGlzLmxhc3RHYXBQb3MgIT09IHRoaXMucG9zKTtcbiAgICB9XG4gICAgZ2V0IG9mZnNldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcHBlZEJ1ZmZlclNpemUgKyB0aGlzLnBvcztcbiAgICB9XG4gICAgZ2V0RXJyb3IoY29kZSwgY3BPZmZzZXQpIHtcbiAgICAgICAgY29uc3QgeyBsaW5lLCBjb2wsIG9mZnNldCB9ID0gdGhpcztcbiAgICAgICAgY29uc3Qgc3RhcnRDb2wgPSBjb2wgKyBjcE9mZnNldDtcbiAgICAgICAgY29uc3Qgc3RhcnRPZmZzZXQgPSBvZmZzZXQgKyBjcE9mZnNldDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvZGUsXG4gICAgICAgICAgICBzdGFydExpbmU6IGxpbmUsXG4gICAgICAgICAgICBlbmRMaW5lOiBsaW5lLFxuICAgICAgICAgICAgc3RhcnRDb2wsXG4gICAgICAgICAgICBlbmRDb2w6IHN0YXJ0Q29sLFxuICAgICAgICAgICAgc3RhcnRPZmZzZXQsXG4gICAgICAgICAgICBlbmRPZmZzZXQ6IHN0YXJ0T2Zmc2V0LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfZXJyKGNvZGUpIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlci5vblBhcnNlRXJyb3IgJiYgdGhpcy5sYXN0RXJyT2Zmc2V0ICE9PSB0aGlzLm9mZnNldCkge1xuICAgICAgICAgICAgdGhpcy5sYXN0RXJyT2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25QYXJzZUVycm9yKHRoaXMuZ2V0RXJyb3IoY29kZSwgMCkpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9hZGRHYXAoKSB7XG4gICAgICAgIHRoaXMuZ2FwU3RhY2sucHVzaCh0aGlzLmxhc3RHYXBQb3MpO1xuICAgICAgICB0aGlzLmxhc3RHYXBQb3MgPSB0aGlzLnBvcztcbiAgICB9XG4gICAgX3Byb2Nlc3NTdXJyb2dhdGUoY3ApIHtcbiAgICAgICAgLy9OT1RFOiB0cnkgdG8gcGVlayBhIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICAgIGlmICh0aGlzLnBvcyAhPT0gdGhpcy5odG1sLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIGNvbnN0IG5leHRDcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zICsgMSk7XG4gICAgICAgICAgICBpZiAoaXNTdXJyb2dhdGVQYWlyKG5leHRDcCkpIHtcbiAgICAgICAgICAgICAgICAvL05PVEU6IHdlIGhhdmUgYSBzdXJyb2dhdGUgcGFpci4gUGVlayBwYWlyIGNoYXJhY3RlciBhbmQgcmVjYWxjdWxhdGUgY29kZSBwb2ludC5cbiAgICAgICAgICAgICAgICB0aGlzLnBvcysrO1xuICAgICAgICAgICAgICAgIC8vTk9URTogYWRkIGEgZ2FwIHRoYXQgc2hvdWxkIGJlIGF2b2lkZWQgZHVyaW5nIHJldHJlYXRcbiAgICAgICAgICAgICAgICB0aGlzLl9hZGRHYXAoKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U3Vycm9nYXRlUGFpckNvZGVQb2ludChjcCwgbmV4dENwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IHdlIGFyZSBhdCB0aGUgZW5kIG9mIGEgY2h1bmssIHRoZXJlZm9yZSB3ZSBjYW4ndCBpbmZlciB0aGUgc3Vycm9nYXRlIHBhaXIgeWV0LlxuICAgICAgICBlbHNlIGlmICghdGhpcy5sYXN0Q2h1bmtXcml0dGVuKSB7XG4gICAgICAgICAgICB0aGlzLmVuZE9mQ2h1bmtIaXQgPSB0cnVlO1xuICAgICAgICAgICAgcmV0dXJuICQuRU9GO1xuICAgICAgICB9XG4gICAgICAgIC8vTk9URTogaXNvbGF0ZWQgc3Vycm9nYXRlXG4gICAgICAgIHRoaXMuX2VycihFUlIuc3Vycm9nYXRlSW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIHJldHVybiBjcDtcbiAgICB9XG4gICAgd2lsbERyb3BQYXJzZWRDaHVuaygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zID4gdGhpcy5idWZmZXJXYXRlcmxpbmU7XG4gICAgfVxuICAgIGRyb3BQYXJzZWRDaHVuaygpIHtcbiAgICAgICAgaWYgKHRoaXMud2lsbERyb3BQYXJzZWRDaHVuaygpKSB7XG4gICAgICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKHRoaXMucG9zKTtcbiAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0UG9zIC09IHRoaXMucG9zO1xuICAgICAgICAgICAgdGhpcy5kcm9wcGVkQnVmZmVyU2l6ZSArPSB0aGlzLnBvcztcbiAgICAgICAgICAgIHRoaXMucG9zID0gMDtcbiAgICAgICAgICAgIHRoaXMubGFzdEdhcFBvcyA9IC0yO1xuICAgICAgICAgICAgdGhpcy5nYXBTdGFjay5sZW5ndGggPSAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIHdyaXRlKGNodW5rLCBpc0xhc3RDaHVuaykge1xuICAgICAgICBpZiAodGhpcy5odG1sLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCArPSBjaHVuaztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaHRtbCA9IGNodW5rO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9IGZhbHNlO1xuICAgICAgICB0aGlzLmxhc3RDaHVua1dyaXR0ZW4gPSBpc0xhc3RDaHVuaztcbiAgICB9XG4gICAgaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyhjaHVuaykge1xuICAgICAgICB0aGlzLmh0bWwgPSB0aGlzLmh0bWwuc3Vic3RyaW5nKDAsIHRoaXMucG9zICsgMSkgKyBjaHVuayArIHRoaXMuaHRtbC5zdWJzdHJpbmcodGhpcy5wb3MgKyAxKTtcbiAgICAgICAgdGhpcy5lbmRPZkNodW5rSGl0ID0gZmFsc2U7XG4gICAgfVxuICAgIHN0YXJ0c1dpdGgocGF0dGVybiwgY2FzZVNlbnNpdGl2ZSkge1xuICAgICAgICAvLyBDaGVjayBpZiBvdXIgYnVmZmVyIGhhcyBlbm91Z2ggY2hhcmFjdGVyc1xuICAgICAgICBpZiAodGhpcy5wb3MgKyBwYXR0ZXJuLmxlbmd0aCA+IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmh0bWwuc3RhcnRzV2l0aChwYXR0ZXJuLCB0aGlzLnBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXR0ZXJuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcCA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHRoaXMucG9zICsgaSkgfCAweDIwO1xuICAgICAgICAgICAgaWYgKGNwICE9PSBwYXR0ZXJuLmNoYXJDb2RlQXQoaSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHBlZWsob2Zmc2V0KSB7XG4gICAgICAgIGNvbnN0IHBvcyA9IHRoaXMucG9zICsgb2Zmc2V0O1xuICAgICAgICBpZiAocG9zID49IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29kZSA9IHRoaXMuaHRtbC5jaGFyQ29kZUF0KHBvcyk7XG4gICAgICAgIHJldHVybiBjb2RlID09PSAkLkNBUlJJQUdFX1JFVFVSTiA/ICQuTElORV9GRUVEIDogY29kZTtcbiAgICB9XG4gICAgYWR2YW5jZSgpIHtcbiAgICAgICAgdGhpcy5wb3MrKztcbiAgICAgICAgLy9OT1RFOiBMRiBzaG91bGQgYmUgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSBsaW5lXG4gICAgICAgIGlmICh0aGlzLmlzRW9sKSB7XG4gICAgICAgICAgICB0aGlzLmlzRW9sID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLmxpbmUrKztcbiAgICAgICAgICAgIHRoaXMubGluZVN0YXJ0UG9zID0gdGhpcy5wb3M7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucG9zID49IHRoaXMuaHRtbC5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZW5kT2ZDaHVua0hpdCA9ICF0aGlzLmxhc3RDaHVua1dyaXR0ZW47XG4gICAgICAgICAgICByZXR1cm4gJC5FT0Y7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGNwID0gdGhpcy5odG1sLmNoYXJDb2RlQXQodGhpcy5wb3MpO1xuICAgICAgICAvL05PVEU6IGFsbCBVKzAwMEQgQ0FSUklBR0UgUkVUVVJOIChDUikgY2hhcmFjdGVycyBtdXN0IGJlIGNvbnZlcnRlZCB0byBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyc1xuICAgICAgICBpZiAoY3AgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgICAgICB0aGlzLmlzRW9sID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICAgICAgICAgIHJldHVybiAkLkxJTkVfRkVFRDtcbiAgICAgICAgfVxuICAgICAgICAvL05PVEU6IGFueSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVycyB0aGF0IGltbWVkaWF0ZWx5IGZvbGxvdyBhIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gKENSKSBjaGFyYWN0ZXJcbiAgICAgICAgLy9tdXN0IGJlIGlnbm9yZWQuXG4gICAgICAgIGlmIChjcCA9PT0gJC5MSU5FX0ZFRUQpIHtcbiAgICAgICAgICAgIHRoaXMuaXNFb2wgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2tpcE5leHROZXdMaW5lKSB7XG4gICAgICAgICAgICAgICAgLy8gYGxpbmVgIHdpbGwgYmUgYnVtcGVkIGFnYWluIGluIHRoZSByZWN1cnNpdmUgY2FsbC5cbiAgICAgICAgICAgICAgICB0aGlzLmxpbmUtLTtcbiAgICAgICAgICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHRoaXMuX2FkZEdhcCgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmFkdmFuY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICBpZiAoaXNTdXJyb2dhdGUoY3ApKSB7XG4gICAgICAgICAgICBjcCA9IHRoaXMuX3Byb2Nlc3NTdXJyb2dhdGUoY3ApO1xuICAgICAgICB9XG4gICAgICAgIC8vT1BUSU1JWkFUSU9OOiBmaXJzdCBjaGVjayBpZiBjb2RlIHBvaW50IGlzIGluIHRoZSBjb21tb24gYWxsb3dlZFxuICAgICAgICAvL3JhbmdlIChBU0NJSSBhbHBoYW51bWVyaWMsIHdoaXRlc3BhY2VzLCBiaWcgY2h1bmsgb2YgQk1QKVxuICAgICAgICAvL2JlZm9yZSBnb2luZyBpbnRvIGRldGFpbGVkIHBlcmZvcm1hbmNlIGNvc3QgdmFsaWRhdGlvbi5cbiAgICAgICAgY29uc3QgaXNDb21tb25WYWxpZFJhbmdlID0gdGhpcy5oYW5kbGVyLm9uUGFyc2VFcnJvciA9PT0gbnVsbCB8fFxuICAgICAgICAgICAgKGNwID4gMHgxZiAmJiBjcCA8IDB4N2YpIHx8XG4gICAgICAgICAgICBjcCA9PT0gJC5MSU5FX0ZFRUQgfHxcbiAgICAgICAgICAgIGNwID09PSAkLkNBUlJJQUdFX1JFVFVSTiB8fFxuICAgICAgICAgICAgKGNwID4gMHg5ZiAmJiBjcCA8IDY0OTc2KTtcbiAgICAgICAgaWYgKCFpc0NvbW1vblZhbGlkUmFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX2NoZWNrRm9yUHJvYmxlbWF0aWNDaGFyYWN0ZXJzKGNwKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY3A7XG4gICAgfVxuICAgIF9jaGVja0ZvclByb2JsZW1hdGljQ2hhcmFjdGVycyhjcCkge1xuICAgICAgICBpZiAoaXNDb250cm9sQ29kZVBvaW50KGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jb250cm9sQ2hhcmFjdGVySW5JbnB1dFN0cmVhbSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoaXNVbmRlZmluZWRDb2RlUG9pbnQoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5vbmNoYXJhY3RlckluSW5wdXRTdHJlYW0pO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHJlYXQoY291bnQpIHtcbiAgICAgICAgdGhpcy5wb3MgLT0gY291bnQ7XG4gICAgICAgIHdoaWxlICh0aGlzLnBvcyA8IHRoaXMubGFzdEdhcFBvcykge1xuICAgICAgICAgICAgdGhpcy5sYXN0R2FwUG9zID0gdGhpcy5nYXBTdGFjay5wb3AoKTtcbiAgICAgICAgICAgIHRoaXMucG9zLS07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc0VvbCA9IGZhbHNlO1xuICAgIH1cbn1cbiIsICJleHBvcnQgdmFyIFRva2VuVHlwZTtcbihmdW5jdGlvbiAoVG9rZW5UeXBlKSB7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkNIQVJBQ1RFUlwiXSA9IDBdID0gXCJDSEFSQUNURVJcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiTlVMTF9DSEFSQUNURVJcIl0gPSAxXSA9IFwiTlVMTF9DSEFSQUNURVJcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiV0hJVEVTUEFDRV9DSEFSQUNURVJcIl0gPSAyXSA9IFwiV0hJVEVTUEFDRV9DSEFSQUNURVJcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiU1RBUlRfVEFHXCJdID0gM10gPSBcIlNUQVJUX1RBR1wiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJFTkRfVEFHXCJdID0gNF0gPSBcIkVORF9UQUdcIjtcbiAgICBUb2tlblR5cGVbVG9rZW5UeXBlW1wiQ09NTUVOVFwiXSA9IDVdID0gXCJDT01NRU5UXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkRPQ1RZUEVcIl0gPSA2XSA9IFwiRE9DVFlQRVwiO1xuICAgIFRva2VuVHlwZVtUb2tlblR5cGVbXCJFT0ZcIl0gPSA3XSA9IFwiRU9GXCI7XG4gICAgVG9rZW5UeXBlW1Rva2VuVHlwZVtcIkhJQkVSTkFUSU9OXCJdID0gOF0gPSBcIkhJQkVSTkFUSU9OXCI7XG59KShUb2tlblR5cGUgfHwgKFRva2VuVHlwZSA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9rZW5BdHRyKHRva2VuLCBhdHRyTmFtZSkge1xuICAgIGZvciAobGV0IGkgPSB0b2tlbi5hdHRycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICBpZiAodG9rZW4uYXR0cnNbaV0ubmFtZSA9PT0gYXR0ck5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiB0b2tlbi5hdHRyc1tpXS52YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbn1cbiIsICIvKiogQWxsIHZhbGlkIG5hbWVzcGFjZXMgaW4gSFRNTC4gKi9cbmV4cG9ydCB2YXIgTlM7XG4oZnVuY3Rpb24gKE5TKSB7XG4gICAgTlNbXCJIVE1MXCJdID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCI7XG4gICAgTlNbXCJNQVRITUxcIl0gPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUxcIjtcbiAgICBOU1tcIlNWR1wiXSA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIjtcbiAgICBOU1tcIlhMSU5LXCJdID0gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCI7XG4gICAgTlNbXCJYTUxcIl0gPSBcImh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZVwiO1xuICAgIE5TW1wiWE1MTlNcIl0gPSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvXCI7XG59KShOUyB8fCAoTlMgPSB7fSkpO1xuZXhwb3J0IHZhciBBVFRSUztcbihmdW5jdGlvbiAoQVRUUlMpIHtcbiAgICBBVFRSU1tcIlRZUEVcIl0gPSBcInR5cGVcIjtcbiAgICBBVFRSU1tcIkFDVElPTlwiXSA9IFwiYWN0aW9uXCI7XG4gICAgQVRUUlNbXCJFTkNPRElOR1wiXSA9IFwiZW5jb2RpbmdcIjtcbiAgICBBVFRSU1tcIlBST01QVFwiXSA9IFwicHJvbXB0XCI7XG4gICAgQVRUUlNbXCJOQU1FXCJdID0gXCJuYW1lXCI7XG4gICAgQVRUUlNbXCJDT0xPUlwiXSA9IFwiY29sb3JcIjtcbiAgICBBVFRSU1tcIkZBQ0VcIl0gPSBcImZhY2VcIjtcbiAgICBBVFRSU1tcIlNJWkVcIl0gPSBcInNpemVcIjtcbn0pKEFUVFJTIHx8IChBVFRSUyA9IHt9KSk7XG4vKipcbiAqIFRoZSBtb2RlIG9mIHRoZSBkb2N1bWVudC5cbiAqXG4gKiBAc2VlIHtAbGluayBodHRwczovL2RvbS5zcGVjLndoYXR3Zy5vcmcvI2NvbmNlcHQtZG9jdW1lbnQtbGltaXRlZC1xdWlya3N9XG4gKi9cbmV4cG9ydCB2YXIgRE9DVU1FTlRfTU9ERTtcbihmdW5jdGlvbiAoRE9DVU1FTlRfTU9ERSkge1xuICAgIERPQ1VNRU5UX01PREVbXCJOT19RVUlSS1NcIl0gPSBcIm5vLXF1aXJrc1wiO1xuICAgIERPQ1VNRU5UX01PREVbXCJRVUlSS1NcIl0gPSBcInF1aXJrc1wiO1xuICAgIERPQ1VNRU5UX01PREVbXCJMSU1JVEVEX1FVSVJLU1wiXSA9IFwibGltaXRlZC1xdWlya3NcIjtcbn0pKERPQ1VNRU5UX01PREUgfHwgKERPQ1VNRU5UX01PREUgPSB7fSkpO1xuZXhwb3J0IHZhciBUQUdfTkFNRVM7XG4oZnVuY3Rpb24gKFRBR19OQU1FUykge1xuICAgIFRBR19OQU1FU1tcIkFcIl0gPSBcImFcIjtcbiAgICBUQUdfTkFNRVNbXCJBRERSRVNTXCJdID0gXCJhZGRyZXNzXCI7XG4gICAgVEFHX05BTUVTW1wiQU5OT1RBVElPTl9YTUxcIl0gPSBcImFubm90YXRpb24teG1sXCI7XG4gICAgVEFHX05BTUVTW1wiQVBQTEVUXCJdID0gXCJhcHBsZXRcIjtcbiAgICBUQUdfTkFNRVNbXCJBUkVBXCJdID0gXCJhcmVhXCI7XG4gICAgVEFHX05BTUVTW1wiQVJUSUNMRVwiXSA9IFwiYXJ0aWNsZVwiO1xuICAgIFRBR19OQU1FU1tcIkFTSURFXCJdID0gXCJhc2lkZVwiO1xuICAgIFRBR19OQU1FU1tcIkJcIl0gPSBcImJcIjtcbiAgICBUQUdfTkFNRVNbXCJCQVNFXCJdID0gXCJiYXNlXCI7XG4gICAgVEFHX05BTUVTW1wiQkFTRUZPTlRcIl0gPSBcImJhc2Vmb250XCI7XG4gICAgVEFHX05BTUVTW1wiQkdTT1VORFwiXSA9IFwiYmdzb3VuZFwiO1xuICAgIFRBR19OQU1FU1tcIkJJR1wiXSA9IFwiYmlnXCI7XG4gICAgVEFHX05BTUVTW1wiQkxPQ0tRVU9URVwiXSA9IFwiYmxvY2txdW90ZVwiO1xuICAgIFRBR19OQU1FU1tcIkJPRFlcIl0gPSBcImJvZHlcIjtcbiAgICBUQUdfTkFNRVNbXCJCUlwiXSA9IFwiYnJcIjtcbiAgICBUQUdfTkFNRVNbXCJCVVRUT05cIl0gPSBcImJ1dHRvblwiO1xuICAgIFRBR19OQU1FU1tcIkNBUFRJT05cIl0gPSBcImNhcHRpb25cIjtcbiAgICBUQUdfTkFNRVNbXCJDRU5URVJcIl0gPSBcImNlbnRlclwiO1xuICAgIFRBR19OQU1FU1tcIkNPREVcIl0gPSBcImNvZGVcIjtcbiAgICBUQUdfTkFNRVNbXCJDT0xcIl0gPSBcImNvbFwiO1xuICAgIFRBR19OQU1FU1tcIkNPTEdST1VQXCJdID0gXCJjb2xncm91cFwiO1xuICAgIFRBR19OQU1FU1tcIkREXCJdID0gXCJkZFwiO1xuICAgIFRBR19OQU1FU1tcIkRFU0NcIl0gPSBcImRlc2NcIjtcbiAgICBUQUdfTkFNRVNbXCJERVRBSUxTXCJdID0gXCJkZXRhaWxzXCI7XG4gICAgVEFHX05BTUVTW1wiRElBTE9HXCJdID0gXCJkaWFsb2dcIjtcbiAgICBUQUdfTkFNRVNbXCJESVJcIl0gPSBcImRpclwiO1xuICAgIFRBR19OQU1FU1tcIkRJVlwiXSA9IFwiZGl2XCI7XG4gICAgVEFHX05BTUVTW1wiRExcIl0gPSBcImRsXCI7XG4gICAgVEFHX05BTUVTW1wiRFRcIl0gPSBcImR0XCI7XG4gICAgVEFHX05BTUVTW1wiRU1cIl0gPSBcImVtXCI7XG4gICAgVEFHX05BTUVTW1wiRU1CRURcIl0gPSBcImVtYmVkXCI7XG4gICAgVEFHX05BTUVTW1wiRklFTERTRVRcIl0gPSBcImZpZWxkc2V0XCI7XG4gICAgVEFHX05BTUVTW1wiRklHQ0FQVElPTlwiXSA9IFwiZmlnY2FwdGlvblwiO1xuICAgIFRBR19OQU1FU1tcIkZJR1VSRVwiXSA9IFwiZmlndXJlXCI7XG4gICAgVEFHX05BTUVTW1wiRk9OVFwiXSA9IFwiZm9udFwiO1xuICAgIFRBR19OQU1FU1tcIkZPT1RFUlwiXSA9IFwiZm9vdGVyXCI7XG4gICAgVEFHX05BTUVTW1wiRk9SRUlHTl9PQkpFQ1RcIl0gPSBcImZvcmVpZ25PYmplY3RcIjtcbiAgICBUQUdfTkFNRVNbXCJGT1JNXCJdID0gXCJmb3JtXCI7XG4gICAgVEFHX05BTUVTW1wiRlJBTUVcIl0gPSBcImZyYW1lXCI7XG4gICAgVEFHX05BTUVTW1wiRlJBTUVTRVRcIl0gPSBcImZyYW1lc2V0XCI7XG4gICAgVEFHX05BTUVTW1wiSDFcIl0gPSBcImgxXCI7XG4gICAgVEFHX05BTUVTW1wiSDJcIl0gPSBcImgyXCI7XG4gICAgVEFHX05BTUVTW1wiSDNcIl0gPSBcImgzXCI7XG4gICAgVEFHX05BTUVTW1wiSDRcIl0gPSBcImg0XCI7XG4gICAgVEFHX05BTUVTW1wiSDVcIl0gPSBcImg1XCI7XG4gICAgVEFHX05BTUVTW1wiSDZcIl0gPSBcImg2XCI7XG4gICAgVEFHX05BTUVTW1wiSEVBRFwiXSA9IFwiaGVhZFwiO1xuICAgIFRBR19OQU1FU1tcIkhFQURFUlwiXSA9IFwiaGVhZGVyXCI7XG4gICAgVEFHX05BTUVTW1wiSEdST1VQXCJdID0gXCJoZ3JvdXBcIjtcbiAgICBUQUdfTkFNRVNbXCJIUlwiXSA9IFwiaHJcIjtcbiAgICBUQUdfTkFNRVNbXCJIVE1MXCJdID0gXCJodG1sXCI7XG4gICAgVEFHX05BTUVTW1wiSVwiXSA9IFwiaVwiO1xuICAgIFRBR19OQU1FU1tcIklNR1wiXSA9IFwiaW1nXCI7XG4gICAgVEFHX05BTUVTW1wiSU1BR0VcIl0gPSBcImltYWdlXCI7XG4gICAgVEFHX05BTUVTW1wiSU5QVVRcIl0gPSBcImlucHV0XCI7XG4gICAgVEFHX05BTUVTW1wiSUZSQU1FXCJdID0gXCJpZnJhbWVcIjtcbiAgICBUQUdfTkFNRVNbXCJLRVlHRU5cIl0gPSBcImtleWdlblwiO1xuICAgIFRBR19OQU1FU1tcIkxBQkVMXCJdID0gXCJsYWJlbFwiO1xuICAgIFRBR19OQU1FU1tcIkxJXCJdID0gXCJsaVwiO1xuICAgIFRBR19OQU1FU1tcIkxJTktcIl0gPSBcImxpbmtcIjtcbiAgICBUQUdfTkFNRVNbXCJMSVNUSU5HXCJdID0gXCJsaXN0aW5nXCI7XG4gICAgVEFHX05BTUVTW1wiTUFJTlwiXSA9IFwibWFpblwiO1xuICAgIFRBR19OQU1FU1tcIk1BTElHTk1BUktcIl0gPSBcIm1hbGlnbm1hcmtcIjtcbiAgICBUQUdfTkFNRVNbXCJNQVJRVUVFXCJdID0gXCJtYXJxdWVlXCI7XG4gICAgVEFHX05BTUVTW1wiTUFUSFwiXSA9IFwibWF0aFwiO1xuICAgIFRBR19OQU1FU1tcIk1FTlVcIl0gPSBcIm1lbnVcIjtcbiAgICBUQUdfTkFNRVNbXCJNRVRBXCJdID0gXCJtZXRhXCI7XG4gICAgVEFHX05BTUVTW1wiTUdMWVBIXCJdID0gXCJtZ2x5cGhcIjtcbiAgICBUQUdfTkFNRVNbXCJNSVwiXSA9IFwibWlcIjtcbiAgICBUQUdfTkFNRVNbXCJNT1wiXSA9IFwibW9cIjtcbiAgICBUQUdfTkFNRVNbXCJNTlwiXSA9IFwibW5cIjtcbiAgICBUQUdfTkFNRVNbXCJNU1wiXSA9IFwibXNcIjtcbiAgICBUQUdfTkFNRVNbXCJNVEVYVFwiXSA9IFwibXRleHRcIjtcbiAgICBUQUdfTkFNRVNbXCJOQVZcIl0gPSBcIm5hdlwiO1xuICAgIFRBR19OQU1FU1tcIk5PQlJcIl0gPSBcIm5vYnJcIjtcbiAgICBUQUdfTkFNRVNbXCJOT0ZSQU1FU1wiXSA9IFwibm9mcmFtZXNcIjtcbiAgICBUQUdfTkFNRVNbXCJOT0VNQkVEXCJdID0gXCJub2VtYmVkXCI7XG4gICAgVEFHX05BTUVTW1wiTk9TQ1JJUFRcIl0gPSBcIm5vc2NyaXB0XCI7XG4gICAgVEFHX05BTUVTW1wiT0JKRUNUXCJdID0gXCJvYmplY3RcIjtcbiAgICBUQUdfTkFNRVNbXCJPTFwiXSA9IFwib2xcIjtcbiAgICBUQUdfTkFNRVNbXCJPUFRHUk9VUFwiXSA9IFwib3B0Z3JvdXBcIjtcbiAgICBUQUdfTkFNRVNbXCJPUFRJT05cIl0gPSBcIm9wdGlvblwiO1xuICAgIFRBR19OQU1FU1tcIlBcIl0gPSBcInBcIjtcbiAgICBUQUdfTkFNRVNbXCJQQVJBTVwiXSA9IFwicGFyYW1cIjtcbiAgICBUQUdfTkFNRVNbXCJQTEFJTlRFWFRcIl0gPSBcInBsYWludGV4dFwiO1xuICAgIFRBR19OQU1FU1tcIlBSRVwiXSA9IFwicHJlXCI7XG4gICAgVEFHX05BTUVTW1wiUkJcIl0gPSBcInJiXCI7XG4gICAgVEFHX05BTUVTW1wiUlBcIl0gPSBcInJwXCI7XG4gICAgVEFHX05BTUVTW1wiUlRcIl0gPSBcInJ0XCI7XG4gICAgVEFHX05BTUVTW1wiUlRDXCJdID0gXCJydGNcIjtcbiAgICBUQUdfTkFNRVNbXCJSVUJZXCJdID0gXCJydWJ5XCI7XG4gICAgVEFHX05BTUVTW1wiU1wiXSA9IFwic1wiO1xuICAgIFRBR19OQU1FU1tcIlNDUklQVFwiXSA9IFwic2NyaXB0XCI7XG4gICAgVEFHX05BTUVTW1wiU0VBUkNIXCJdID0gXCJzZWFyY2hcIjtcbiAgICBUQUdfTkFNRVNbXCJTRUNUSU9OXCJdID0gXCJzZWN0aW9uXCI7XG4gICAgVEFHX05BTUVTW1wiU0VMRUNUXCJdID0gXCJzZWxlY3RcIjtcbiAgICBUQUdfTkFNRVNbXCJTT1VSQ0VcIl0gPSBcInNvdXJjZVwiO1xuICAgIFRBR19OQU1FU1tcIlNNQUxMXCJdID0gXCJzbWFsbFwiO1xuICAgIFRBR19OQU1FU1tcIlNQQU5cIl0gPSBcInNwYW5cIjtcbiAgICBUQUdfTkFNRVNbXCJTVFJJS0VcIl0gPSBcInN0cmlrZVwiO1xuICAgIFRBR19OQU1FU1tcIlNUUk9OR1wiXSA9IFwic3Ryb25nXCI7XG4gICAgVEFHX05BTUVTW1wiU1RZTEVcIl0gPSBcInN0eWxlXCI7XG4gICAgVEFHX05BTUVTW1wiU1VCXCJdID0gXCJzdWJcIjtcbiAgICBUQUdfTkFNRVNbXCJTVU1NQVJZXCJdID0gXCJzdW1tYXJ5XCI7XG4gICAgVEFHX05BTUVTW1wiU1VQXCJdID0gXCJzdXBcIjtcbiAgICBUQUdfTkFNRVNbXCJUQUJMRVwiXSA9IFwidGFibGVcIjtcbiAgICBUQUdfTkFNRVNbXCJUQk9EWVwiXSA9IFwidGJvZHlcIjtcbiAgICBUQUdfTkFNRVNbXCJURU1QTEFURVwiXSA9IFwidGVtcGxhdGVcIjtcbiAgICBUQUdfTkFNRVNbXCJURVhUQVJFQVwiXSA9IFwidGV4dGFyZWFcIjtcbiAgICBUQUdfTkFNRVNbXCJURk9PVFwiXSA9IFwidGZvb3RcIjtcbiAgICBUQUdfTkFNRVNbXCJURFwiXSA9IFwidGRcIjtcbiAgICBUQUdfTkFNRVNbXCJUSFwiXSA9IFwidGhcIjtcbiAgICBUQUdfTkFNRVNbXCJUSEVBRFwiXSA9IFwidGhlYWRcIjtcbiAgICBUQUdfTkFNRVNbXCJUSVRMRVwiXSA9IFwidGl0bGVcIjtcbiAgICBUQUdfTkFNRVNbXCJUUlwiXSA9IFwidHJcIjtcbiAgICBUQUdfTkFNRVNbXCJUUkFDS1wiXSA9IFwidHJhY2tcIjtcbiAgICBUQUdfTkFNRVNbXCJUVFwiXSA9IFwidHRcIjtcbiAgICBUQUdfTkFNRVNbXCJVXCJdID0gXCJ1XCI7XG4gICAgVEFHX05BTUVTW1wiVUxcIl0gPSBcInVsXCI7XG4gICAgVEFHX05BTUVTW1wiU1ZHXCJdID0gXCJzdmdcIjtcbiAgICBUQUdfTkFNRVNbXCJWQVJcIl0gPSBcInZhclwiO1xuICAgIFRBR19OQU1FU1tcIldCUlwiXSA9IFwid2JyXCI7XG4gICAgVEFHX05BTUVTW1wiWE1QXCJdID0gXCJ4bXBcIjtcbn0pKFRBR19OQU1FUyB8fCAoVEFHX05BTUVTID0ge30pKTtcbi8qKlxuICogVGFnIElEcyBhcmUgbnVtZXJpYyBJRHMgZm9yIGtub3duIHRhZyBuYW1lcy5cbiAqXG4gKiBXZSB1c2UgdGFnIElEcyB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiB0YWcgbmFtZSBjb21wYXJpc29ucy5cbiAqL1xuZXhwb3J0IHZhciBUQUdfSUQ7XG4oZnVuY3Rpb24gKFRBR19JRCkge1xuICAgIFRBR19JRFtUQUdfSURbXCJVTktOT1dOXCJdID0gMF0gPSBcIlVOS05PV05cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQVwiXSA9IDFdID0gXCJBXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFERFJFU1NcIl0gPSAyXSA9IFwiQUREUkVTU1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBTk5PVEFUSU9OX1hNTFwiXSA9IDNdID0gXCJBTk5PVEFUSU9OX1hNTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBUFBMRVRcIl0gPSA0XSA9IFwiQVBQTEVUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkFSRUFcIl0gPSA1XSA9IFwiQVJFQVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJBUlRJQ0xFXCJdID0gNl0gPSBcIkFSVElDTEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQVNJREVcIl0gPSA3XSA9IFwiQVNJREVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQlwiXSA9IDhdID0gXCJCXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJBU0VcIl0gPSA5XSA9IFwiQkFTRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCQVNFRk9OVFwiXSA9IDEwXSA9IFwiQkFTRUZPTlRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQkdTT1VORFwiXSA9IDExXSA9IFwiQkdTT1VORFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCSUdcIl0gPSAxMl0gPSBcIkJJR1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJCTE9DS1FVT1RFXCJdID0gMTNdID0gXCJCTE9DS1FVT1RFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJPRFlcIl0gPSAxNF0gPSBcIkJPRFlcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQlJcIl0gPSAxNV0gPSBcIkJSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkJVVFRPTlwiXSA9IDE2XSA9IFwiQlVUVE9OXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkNBUFRJT05cIl0gPSAxN10gPSBcIkNBUFRJT05cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQ0VOVEVSXCJdID0gMThdID0gXCJDRU5URVJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiQ09ERVwiXSA9IDE5XSA9IFwiQ09ERVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJDT0xcIl0gPSAyMF0gPSBcIkNPTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJDT0xHUk9VUFwiXSA9IDIxXSA9IFwiQ09MR1JPVVBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRERcIl0gPSAyMl0gPSBcIkREXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkRFU0NcIl0gPSAyM10gPSBcIkRFU0NcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiREVUQUlMU1wiXSA9IDI0XSA9IFwiREVUQUlMU1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJESUFMT0dcIl0gPSAyNV0gPSBcIkRJQUxPR1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJESVJcIl0gPSAyNl0gPSBcIkRJUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJESVZcIl0gPSAyN10gPSBcIkRJVlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJETFwiXSA9IDI4XSA9IFwiRExcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRFRcIl0gPSAyOV0gPSBcIkRUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkVNXCJdID0gMzBdID0gXCJFTVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJFTUJFRFwiXSA9IDMxXSA9IFwiRU1CRURcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRklFTERTRVRcIl0gPSAzMl0gPSBcIkZJRUxEU0VUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkZJR0NBUFRJT05cIl0gPSAzM10gPSBcIkZJR0NBUFRJT05cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRklHVVJFXCJdID0gMzRdID0gXCJGSUdVUkVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRk9OVFwiXSA9IDM1XSA9IFwiRk9OVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGT09URVJcIl0gPSAzNl0gPSBcIkZPT1RFUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGT1JFSUdOX09CSkVDVFwiXSA9IDM3XSA9IFwiRk9SRUlHTl9PQkpFQ1RcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRk9STVwiXSA9IDM4XSA9IFwiRk9STVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJGUkFNRVwiXSA9IDM5XSA9IFwiRlJBTUVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiRlJBTUVTRVRcIl0gPSA0MF0gPSBcIkZSQU1FU0VUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkgxXCJdID0gNDFdID0gXCJIMVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJIMlwiXSA9IDQyXSA9IFwiSDJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSDNcIl0gPSA0M10gPSBcIkgzXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkg0XCJdID0gNDRdID0gXCJINFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJINVwiXSA9IDQ1XSA9IFwiSDVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSDZcIl0gPSA0Nl0gPSBcIkg2XCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkhFQURcIl0gPSA0N10gPSBcIkhFQURcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSEVBREVSXCJdID0gNDhdID0gXCJIRUFERVJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSEdST1VQXCJdID0gNDldID0gXCJIR1JPVVBcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSFJcIl0gPSA1MF0gPSBcIkhSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkhUTUxcIl0gPSA1MV0gPSBcIkhUTUxcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSVwiXSA9IDUyXSA9IFwiSVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJJTUdcIl0gPSA1M10gPSBcIklNR1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJJTUFHRVwiXSA9IDU0XSA9IFwiSU1BR0VcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiSU5QVVRcIl0gPSA1NV0gPSBcIklOUFVUXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIklGUkFNRVwiXSA9IDU2XSA9IFwiSUZSQU1FXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIktFWUdFTlwiXSA9IDU3XSA9IFwiS0VZR0VOXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIkxBQkVMXCJdID0gNThdID0gXCJMQUJFTFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJMSVwiXSA9IDU5XSA9IFwiTElcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTElOS1wiXSA9IDYwXSA9IFwiTElOS1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJMSVNUSU5HXCJdID0gNjFdID0gXCJMSVNUSU5HXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1BSU5cIl0gPSA2Ml0gPSBcIk1BSU5cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUFMSUdOTUFSS1wiXSA9IDYzXSA9IFwiTUFMSUdOTUFSS1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNQVJRVUVFXCJdID0gNjRdID0gXCJNQVJRVUVFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1BVEhcIl0gPSA2NV0gPSBcIk1BVEhcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTUVOVVwiXSA9IDY2XSA9IFwiTUVOVVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNRVRBXCJdID0gNjddID0gXCJNRVRBXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1HTFlQSFwiXSA9IDY4XSA9IFwiTUdMWVBIXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1JXCJdID0gNjldID0gXCJNSVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNT1wiXSA9IDcwXSA9IFwiTU9cIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTU5cIl0gPSA3MV0gPSBcIk1OXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk1TXCJdID0gNzJdID0gXCJNU1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJNVEVYVFwiXSA9IDczXSA9IFwiTVRFWFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTkFWXCJdID0gNzRdID0gXCJOQVZcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTk9CUlwiXSA9IDc1XSA9IFwiTk9CUlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJOT0ZSQU1FU1wiXSA9IDc2XSA9IFwiTk9GUkFNRVNcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiTk9FTUJFRFwiXSA9IDc3XSA9IFwiTk9FTUJFRFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJOT1NDUklQVFwiXSA9IDc4XSA9IFwiTk9TQ1JJUFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiT0JKRUNUXCJdID0gNzldID0gXCJPQkpFQ1RcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiT0xcIl0gPSA4MF0gPSBcIk9MXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIk9QVEdST1VQXCJdID0gODFdID0gXCJPUFRHUk9VUFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJPUFRJT05cIl0gPSA4Ml0gPSBcIk9QVElPTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJQXCJdID0gODNdID0gXCJQXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlBBUkFNXCJdID0gODRdID0gXCJQQVJBTVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJQTEFJTlRFWFRcIl0gPSA4NV0gPSBcIlBMQUlOVEVYVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJQUkVcIl0gPSA4Nl0gPSBcIlBSRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJSQlwiXSA9IDg3XSA9IFwiUkJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiUlBcIl0gPSA4OF0gPSBcIlJQXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlJUXCJdID0gODldID0gXCJSVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJSVENcIl0gPSA5MF0gPSBcIlJUQ1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJSVUJZXCJdID0gOTFdID0gXCJSVUJZXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNcIl0gPSA5Ml0gPSBcIlNcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU0NSSVBUXCJdID0gOTNdID0gXCJTQ1JJUFRcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU0VBUkNIXCJdID0gOTRdID0gXCJTRUFSQ0hcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU0VDVElPTlwiXSA9IDk1XSA9IFwiU0VDVElPTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTRUxFQ1RcIl0gPSA5Nl0gPSBcIlNFTEVDVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTT1VSQ0VcIl0gPSA5N10gPSBcIlNPVVJDRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTTUFMTFwiXSA9IDk4XSA9IFwiU01BTExcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU1BBTlwiXSA9IDk5XSA9IFwiU1BBTlwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJTVFJJS0VcIl0gPSAxMDBdID0gXCJTVFJJS0VcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU1RST05HXCJdID0gMTAxXSA9IFwiU1RST05HXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNUWUxFXCJdID0gMTAyXSA9IFwiU1RZTEVcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiU1VCXCJdID0gMTAzXSA9IFwiU1VCXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNVTU1BUllcIl0gPSAxMDRdID0gXCJTVU1NQVJZXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNVUFwiXSA9IDEwNV0gPSBcIlNVUFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUQUJMRVwiXSA9IDEwNl0gPSBcIlRBQkxFXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRCT0RZXCJdID0gMTA3XSA9IFwiVEJPRFlcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVEVNUExBVEVcIl0gPSAxMDhdID0gXCJURU1QTEFURVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJURVhUQVJFQVwiXSA9IDEwOV0gPSBcIlRFWFRBUkVBXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRGT09UXCJdID0gMTEwXSA9IFwiVEZPT1RcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVERcIl0gPSAxMTFdID0gXCJURFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUSFwiXSA9IDExMl0gPSBcIlRIXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRIRUFEXCJdID0gMTEzXSA9IFwiVEhFQURcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVElUTEVcIl0gPSAxMTRdID0gXCJUSVRMRVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJUUlwiXSA9IDExNV0gPSBcIlRSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlRSQUNLXCJdID0gMTE2XSA9IFwiVFJBQ0tcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiVFRcIl0gPSAxMTddID0gXCJUVFwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJVXCJdID0gMTE4XSA9IFwiVVwiO1xuICAgIFRBR19JRFtUQUdfSURbXCJVTFwiXSA9IDExOV0gPSBcIlVMXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlNWR1wiXSA9IDEyMF0gPSBcIlNWR1wiO1xuICAgIFRBR19JRFtUQUdfSURbXCJWQVJcIl0gPSAxMjFdID0gXCJWQVJcIjtcbiAgICBUQUdfSURbVEFHX0lEW1wiV0JSXCJdID0gMTIyXSA9IFwiV0JSXCI7XG4gICAgVEFHX0lEW1RBR19JRFtcIlhNUFwiXSA9IDEyM10gPSBcIlhNUFwiO1xufSkoVEFHX0lEIHx8IChUQUdfSUQgPSB7fSkpO1xuY29uc3QgVEFHX05BTUVfVE9fSUQgPSBuZXcgTWFwKFtcbiAgICBbVEFHX05BTUVTLkEsIFRBR19JRC5BXSxcbiAgICBbVEFHX05BTUVTLkFERFJFU1MsIFRBR19JRC5BRERSRVNTXSxcbiAgICBbVEFHX05BTUVTLkFOTk9UQVRJT05fWE1MLCBUQUdfSUQuQU5OT1RBVElPTl9YTUxdLFxuICAgIFtUQUdfTkFNRVMuQVBQTEVULCBUQUdfSUQuQVBQTEVUXSxcbiAgICBbVEFHX05BTUVTLkFSRUEsIFRBR19JRC5BUkVBXSxcbiAgICBbVEFHX05BTUVTLkFSVElDTEUsIFRBR19JRC5BUlRJQ0xFXSxcbiAgICBbVEFHX05BTUVTLkFTSURFLCBUQUdfSUQuQVNJREVdLFxuICAgIFtUQUdfTkFNRVMuQiwgVEFHX0lELkJdLFxuICAgIFtUQUdfTkFNRVMuQkFTRSwgVEFHX0lELkJBU0VdLFxuICAgIFtUQUdfTkFNRVMuQkFTRUZPTlQsIFRBR19JRC5CQVNFRk9OVF0sXG4gICAgW1RBR19OQU1FUy5CR1NPVU5ELCBUQUdfSUQuQkdTT1VORF0sXG4gICAgW1RBR19OQU1FUy5CSUcsIFRBR19JRC5CSUddLFxuICAgIFtUQUdfTkFNRVMuQkxPQ0tRVU9URSwgVEFHX0lELkJMT0NLUVVPVEVdLFxuICAgIFtUQUdfTkFNRVMuQk9EWSwgVEFHX0lELkJPRFldLFxuICAgIFtUQUdfTkFNRVMuQlIsIFRBR19JRC5CUl0sXG4gICAgW1RBR19OQU1FUy5CVVRUT04sIFRBR19JRC5CVVRUT05dLFxuICAgIFtUQUdfTkFNRVMuQ0FQVElPTiwgVEFHX0lELkNBUFRJT05dLFxuICAgIFtUQUdfTkFNRVMuQ0VOVEVSLCBUQUdfSUQuQ0VOVEVSXSxcbiAgICBbVEFHX05BTUVTLkNPREUsIFRBR19JRC5DT0RFXSxcbiAgICBbVEFHX05BTUVTLkNPTCwgVEFHX0lELkNPTF0sXG4gICAgW1RBR19OQU1FUy5DT0xHUk9VUCwgVEFHX0lELkNPTEdST1VQXSxcbiAgICBbVEFHX05BTUVTLkRELCBUQUdfSUQuRERdLFxuICAgIFtUQUdfTkFNRVMuREVTQywgVEFHX0lELkRFU0NdLFxuICAgIFtUQUdfTkFNRVMuREVUQUlMUywgVEFHX0lELkRFVEFJTFNdLFxuICAgIFtUQUdfTkFNRVMuRElBTE9HLCBUQUdfSUQuRElBTE9HXSxcbiAgICBbVEFHX05BTUVTLkRJUiwgVEFHX0lELkRJUl0sXG4gICAgW1RBR19OQU1FUy5ESVYsIFRBR19JRC5ESVZdLFxuICAgIFtUQUdfTkFNRVMuREwsIFRBR19JRC5ETF0sXG4gICAgW1RBR19OQU1FUy5EVCwgVEFHX0lELkRUXSxcbiAgICBbVEFHX05BTUVTLkVNLCBUQUdfSUQuRU1dLFxuICAgIFtUQUdfTkFNRVMuRU1CRUQsIFRBR19JRC5FTUJFRF0sXG4gICAgW1RBR19OQU1FUy5GSUVMRFNFVCwgVEFHX0lELkZJRUxEU0VUXSxcbiAgICBbVEFHX05BTUVTLkZJR0NBUFRJT04sIFRBR19JRC5GSUdDQVBUSU9OXSxcbiAgICBbVEFHX05BTUVTLkZJR1VSRSwgVEFHX0lELkZJR1VSRV0sXG4gICAgW1RBR19OQU1FUy5GT05ULCBUQUdfSUQuRk9OVF0sXG4gICAgW1RBR19OQU1FUy5GT09URVIsIFRBR19JRC5GT09URVJdLFxuICAgIFtUQUdfTkFNRVMuRk9SRUlHTl9PQkpFQ1QsIFRBR19JRC5GT1JFSUdOX09CSkVDVF0sXG4gICAgW1RBR19OQU1FUy5GT1JNLCBUQUdfSUQuRk9STV0sXG4gICAgW1RBR19OQU1FUy5GUkFNRSwgVEFHX0lELkZSQU1FXSxcbiAgICBbVEFHX05BTUVTLkZSQU1FU0VULCBUQUdfSUQuRlJBTUVTRVRdLFxuICAgIFtUQUdfTkFNRVMuSDEsIFRBR19JRC5IMV0sXG4gICAgW1RBR19OQU1FUy5IMiwgVEFHX0lELkgyXSxcbiAgICBbVEFHX05BTUVTLkgzLCBUQUdfSUQuSDNdLFxuICAgIFtUQUdfTkFNRVMuSDQsIFRBR19JRC5INF0sXG4gICAgW1RBR19OQU1FUy5INSwgVEFHX0lELkg1XSxcbiAgICBbVEFHX05BTUVTLkg2LCBUQUdfSUQuSDZdLFxuICAgIFtUQUdfTkFNRVMuSEVBRCwgVEFHX0lELkhFQURdLFxuICAgIFtUQUdfTkFNRVMuSEVBREVSLCBUQUdfSUQuSEVBREVSXSxcbiAgICBbVEFHX05BTUVTLkhHUk9VUCwgVEFHX0lELkhHUk9VUF0sXG4gICAgW1RBR19OQU1FUy5IUiwgVEFHX0lELkhSXSxcbiAgICBbVEFHX05BTUVTLkhUTUwsIFRBR19JRC5IVE1MXSxcbiAgICBbVEFHX05BTUVTLkksIFRBR19JRC5JXSxcbiAgICBbVEFHX05BTUVTLklNRywgVEFHX0lELklNR10sXG4gICAgW1RBR19OQU1FUy5JTUFHRSwgVEFHX0lELklNQUdFXSxcbiAgICBbVEFHX05BTUVTLklOUFVULCBUQUdfSUQuSU5QVVRdLFxuICAgIFtUQUdfTkFNRVMuSUZSQU1FLCBUQUdfSUQuSUZSQU1FXSxcbiAgICBbVEFHX05BTUVTLktFWUdFTiwgVEFHX0lELktFWUdFTl0sXG4gICAgW1RBR19OQU1FUy5MQUJFTCwgVEFHX0lELkxBQkVMXSxcbiAgICBbVEFHX05BTUVTLkxJLCBUQUdfSUQuTEldLFxuICAgIFtUQUdfTkFNRVMuTElOSywgVEFHX0lELkxJTktdLFxuICAgIFtUQUdfTkFNRVMuTElTVElORywgVEFHX0lELkxJU1RJTkddLFxuICAgIFtUQUdfTkFNRVMuTUFJTiwgVEFHX0lELk1BSU5dLFxuICAgIFtUQUdfTkFNRVMuTUFMSUdOTUFSSywgVEFHX0lELk1BTElHTk1BUktdLFxuICAgIFtUQUdfTkFNRVMuTUFSUVVFRSwgVEFHX0lELk1BUlFVRUVdLFxuICAgIFtUQUdfTkFNRVMuTUFUSCwgVEFHX0lELk1BVEhdLFxuICAgIFtUQUdfTkFNRVMuTUVOVSwgVEFHX0lELk1FTlVdLFxuICAgIFtUQUdfTkFNRVMuTUVUQSwgVEFHX0lELk1FVEFdLFxuICAgIFtUQUdfTkFNRVMuTUdMWVBILCBUQUdfSUQuTUdMWVBIXSxcbiAgICBbVEFHX05BTUVTLk1JLCBUQUdfSUQuTUldLFxuICAgIFtUQUdfTkFNRVMuTU8sIFRBR19JRC5NT10sXG4gICAgW1RBR19OQU1FUy5NTiwgVEFHX0lELk1OXSxcbiAgICBbVEFHX05BTUVTLk1TLCBUQUdfSUQuTVNdLFxuICAgIFtUQUdfTkFNRVMuTVRFWFQsIFRBR19JRC5NVEVYVF0sXG4gICAgW1RBR19OQU1FUy5OQVYsIFRBR19JRC5OQVZdLFxuICAgIFtUQUdfTkFNRVMuTk9CUiwgVEFHX0lELk5PQlJdLFxuICAgIFtUQUdfTkFNRVMuTk9GUkFNRVMsIFRBR19JRC5OT0ZSQU1FU10sXG4gICAgW1RBR19OQU1FUy5OT0VNQkVELCBUQUdfSUQuTk9FTUJFRF0sXG4gICAgW1RBR19OQU1FUy5OT1NDUklQVCwgVEFHX0lELk5PU0NSSVBUXSxcbiAgICBbVEFHX05BTUVTLk9CSkVDVCwgVEFHX0lELk9CSkVDVF0sXG4gICAgW1RBR19OQU1FUy5PTCwgVEFHX0lELk9MXSxcbiAgICBbVEFHX05BTUVTLk9QVEdST1VQLCBUQUdfSUQuT1BUR1JPVVBdLFxuICAgIFtUQUdfTkFNRVMuT1BUSU9OLCBUQUdfSUQuT1BUSU9OXSxcbiAgICBbVEFHX05BTUVTLlAsIFRBR19JRC5QXSxcbiAgICBbVEFHX05BTUVTLlBBUkFNLCBUQUdfSUQuUEFSQU1dLFxuICAgIFtUQUdfTkFNRVMuUExBSU5URVhULCBUQUdfSUQuUExBSU5URVhUXSxcbiAgICBbVEFHX05BTUVTLlBSRSwgVEFHX0lELlBSRV0sXG4gICAgW1RBR19OQU1FUy5SQiwgVEFHX0lELlJCXSxcbiAgICBbVEFHX05BTUVTLlJQLCBUQUdfSUQuUlBdLFxuICAgIFtUQUdfTkFNRVMuUlQsIFRBR19JRC5SVF0sXG4gICAgW1RBR19OQU1FUy5SVEMsIFRBR19JRC5SVENdLFxuICAgIFtUQUdfTkFNRVMuUlVCWSwgVEFHX0lELlJVQlldLFxuICAgIFtUQUdfTkFNRVMuUywgVEFHX0lELlNdLFxuICAgIFtUQUdfTkFNRVMuU0NSSVBULCBUQUdfSUQuU0NSSVBUXSxcbiAgICBbVEFHX05BTUVTLlNFQVJDSCwgVEFHX0lELlNFQVJDSF0sXG4gICAgW1RBR19OQU1FUy5TRUNUSU9OLCBUQUdfSUQuU0VDVElPTl0sXG4gICAgW1RBR19OQU1FUy5TRUxFQ1QsIFRBR19JRC5TRUxFQ1RdLFxuICAgIFtUQUdfTkFNRVMuU09VUkNFLCBUQUdfSUQuU09VUkNFXSxcbiAgICBbVEFHX05BTUVTLlNNQUxMLCBUQUdfSUQuU01BTExdLFxuICAgIFtUQUdfTkFNRVMuU1BBTiwgVEFHX0lELlNQQU5dLFxuICAgIFtUQUdfTkFNRVMuU1RSSUtFLCBUQUdfSUQuU1RSSUtFXSxcbiAgICBbVEFHX05BTUVTLlNUUk9ORywgVEFHX0lELlNUUk9OR10sXG4gICAgW1RBR19OQU1FUy5TVFlMRSwgVEFHX0lELlNUWUxFXSxcbiAgICBbVEFHX05BTUVTLlNVQiwgVEFHX0lELlNVQl0sXG4gICAgW1RBR19OQU1FUy5TVU1NQVJZLCBUQUdfSUQuU1VNTUFSWV0sXG4gICAgW1RBR19OQU1FUy5TVVAsIFRBR19JRC5TVVBdLFxuICAgIFtUQUdfTkFNRVMuVEFCTEUsIFRBR19JRC5UQUJMRV0sXG4gICAgW1RBR19OQU1FUy5UQk9EWSwgVEFHX0lELlRCT0RZXSxcbiAgICBbVEFHX05BTUVTLlRFTVBMQVRFLCBUQUdfSUQuVEVNUExBVEVdLFxuICAgIFtUQUdfTkFNRVMuVEVYVEFSRUEsIFRBR19JRC5URVhUQVJFQV0sXG4gICAgW1RBR19OQU1FUy5URk9PVCwgVEFHX0lELlRGT09UXSxcbiAgICBbVEFHX05BTUVTLlRELCBUQUdfSUQuVERdLFxuICAgIFtUQUdfTkFNRVMuVEgsIFRBR19JRC5USF0sXG4gICAgW1RBR19OQU1FUy5USEVBRCwgVEFHX0lELlRIRUFEXSxcbiAgICBbVEFHX05BTUVTLlRJVExFLCBUQUdfSUQuVElUTEVdLFxuICAgIFtUQUdfTkFNRVMuVFIsIFRBR19JRC5UUl0sXG4gICAgW1RBR19OQU1FUy5UUkFDSywgVEFHX0lELlRSQUNLXSxcbiAgICBbVEFHX05BTUVTLlRULCBUQUdfSUQuVFRdLFxuICAgIFtUQUdfTkFNRVMuVSwgVEFHX0lELlVdLFxuICAgIFtUQUdfTkFNRVMuVUwsIFRBR19JRC5VTF0sXG4gICAgW1RBR19OQU1FUy5TVkcsIFRBR19JRC5TVkddLFxuICAgIFtUQUdfTkFNRVMuVkFSLCBUQUdfSUQuVkFSXSxcbiAgICBbVEFHX05BTUVTLldCUiwgVEFHX0lELldCUl0sXG4gICAgW1RBR19OQU1FUy5YTVAsIFRBR19JRC5YTVBdLFxuXSk7XG5leHBvcnQgZnVuY3Rpb24gZ2V0VGFnSUQodGFnTmFtZSkge1xuICAgIHZhciBfYTtcbiAgICByZXR1cm4gKF9hID0gVEFHX05BTUVfVE9fSUQuZ2V0KHRhZ05hbWUpKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiBUQUdfSUQuVU5LTk9XTjtcbn1cbmNvbnN0ICQgPSBUQUdfSUQ7XG5leHBvcnQgY29uc3QgU1BFQ0lBTF9FTEVNRU5UUyA9IHtcbiAgICBbTlMuSFRNTF06IG5ldyBTZXQoW1xuICAgICAgICAkLkFERFJFU1MsXG4gICAgICAgICQuQVBQTEVULFxuICAgICAgICAkLkFSRUEsXG4gICAgICAgICQuQVJUSUNMRSxcbiAgICAgICAgJC5BU0lERSxcbiAgICAgICAgJC5CQVNFLFxuICAgICAgICAkLkJBU0VGT05ULFxuICAgICAgICAkLkJHU09VTkQsXG4gICAgICAgICQuQkxPQ0tRVU9URSxcbiAgICAgICAgJC5CT0RZLFxuICAgICAgICAkLkJSLFxuICAgICAgICAkLkJVVFRPTixcbiAgICAgICAgJC5DQVBUSU9OLFxuICAgICAgICAkLkNFTlRFUixcbiAgICAgICAgJC5DT0wsXG4gICAgICAgICQuQ09MR1JPVVAsXG4gICAgICAgICQuREQsXG4gICAgICAgICQuREVUQUlMUyxcbiAgICAgICAgJC5ESVIsXG4gICAgICAgICQuRElWLFxuICAgICAgICAkLkRMLFxuICAgICAgICAkLkRULFxuICAgICAgICAkLkVNQkVELFxuICAgICAgICAkLkZJRUxEU0VULFxuICAgICAgICAkLkZJR0NBUFRJT04sXG4gICAgICAgICQuRklHVVJFLFxuICAgICAgICAkLkZPT1RFUixcbiAgICAgICAgJC5GT1JNLFxuICAgICAgICAkLkZSQU1FLFxuICAgICAgICAkLkZSQU1FU0VULFxuICAgICAgICAkLkgxLFxuICAgICAgICAkLkgyLFxuICAgICAgICAkLkgzLFxuICAgICAgICAkLkg0LFxuICAgICAgICAkLkg1LFxuICAgICAgICAkLkg2LFxuICAgICAgICAkLkhFQUQsXG4gICAgICAgICQuSEVBREVSLFxuICAgICAgICAkLkhHUk9VUCxcbiAgICAgICAgJC5IUixcbiAgICAgICAgJC5IVE1MLFxuICAgICAgICAkLklGUkFNRSxcbiAgICAgICAgJC5JTUcsXG4gICAgICAgICQuSU5QVVQsXG4gICAgICAgICQuTEksXG4gICAgICAgICQuTElOSyxcbiAgICAgICAgJC5MSVNUSU5HLFxuICAgICAgICAkLk1BSU4sXG4gICAgICAgICQuTUFSUVVFRSxcbiAgICAgICAgJC5NRU5VLFxuICAgICAgICAkLk1FVEEsXG4gICAgICAgICQuTkFWLFxuICAgICAgICAkLk5PRU1CRUQsXG4gICAgICAgICQuTk9GUkFNRVMsXG4gICAgICAgICQuTk9TQ1JJUFQsXG4gICAgICAgICQuT0JKRUNULFxuICAgICAgICAkLk9MLFxuICAgICAgICAkLlAsXG4gICAgICAgICQuUEFSQU0sXG4gICAgICAgICQuUExBSU5URVhULFxuICAgICAgICAkLlBSRSxcbiAgICAgICAgJC5TQ1JJUFQsXG4gICAgICAgICQuU0VDVElPTixcbiAgICAgICAgJC5TRUxFQ1QsXG4gICAgICAgICQuU09VUkNFLFxuICAgICAgICAkLlNUWUxFLFxuICAgICAgICAkLlNVTU1BUlksXG4gICAgICAgICQuVEFCTEUsXG4gICAgICAgICQuVEJPRFksXG4gICAgICAgICQuVEQsXG4gICAgICAgICQuVEVNUExBVEUsXG4gICAgICAgICQuVEVYVEFSRUEsXG4gICAgICAgICQuVEZPT1QsXG4gICAgICAgICQuVEgsXG4gICAgICAgICQuVEhFQUQsXG4gICAgICAgICQuVElUTEUsXG4gICAgICAgICQuVFIsXG4gICAgICAgICQuVFJBQ0ssXG4gICAgICAgICQuVUwsXG4gICAgICAgICQuV0JSLFxuICAgICAgICAkLlhNUCxcbiAgICBdKSxcbiAgICBbTlMuTUFUSE1MXTogbmV3IFNldChbJC5NSSwgJC5NTywgJC5NTiwgJC5NUywgJC5NVEVYVCwgJC5BTk5PVEFUSU9OX1hNTF0pLFxuICAgIFtOUy5TVkddOiBuZXcgU2V0KFskLlRJVExFLCAkLkZPUkVJR05fT0JKRUNULCAkLkRFU0NdKSxcbiAgICBbTlMuWExJTktdOiBuZXcgU2V0KCksXG4gICAgW05TLlhNTF06IG5ldyBTZXQoKSxcbiAgICBbTlMuWE1MTlNdOiBuZXcgU2V0KCksXG59O1xuZXhwb3J0IGNvbnN0IE5VTUJFUkVEX0hFQURFUlMgPSBuZXcgU2V0KFskLkgxLCAkLkgyLCAkLkgzLCAkLkg0LCAkLkg1LCAkLkg2XSk7XG5jb25zdCBVTkVTQ0FQRURfVEVYVCA9IG5ldyBTZXQoW1xuICAgIFRBR19OQU1FUy5TVFlMRSxcbiAgICBUQUdfTkFNRVMuU0NSSVBULFxuICAgIFRBR19OQU1FUy5YTVAsXG4gICAgVEFHX05BTUVTLklGUkFNRSxcbiAgICBUQUdfTkFNRVMuTk9FTUJFRCxcbiAgICBUQUdfTkFNRVMuTk9GUkFNRVMsXG4gICAgVEFHX05BTUVTLlBMQUlOVEVYVCxcbl0pO1xuZXhwb3J0IGZ1bmN0aW9uIGhhc1VuZXNjYXBlZFRleHQodG4sIHNjcmlwdGluZ0VuYWJsZWQpIHtcbiAgICByZXR1cm4gVU5FU0NBUEVEX1RFWFQuaGFzKHRuKSB8fCAoc2NyaXB0aW5nRW5hYmxlZCAmJiB0biA9PT0gVEFHX05BTUVTLk5PU0NSSVBUKTtcbn1cbiIsICJpbXBvcnQgeyBQcmVwcm9jZXNzb3IgfSBmcm9tICcuL3ByZXByb2Nlc3Nvci5qcyc7XG5pbXBvcnQgeyBDT0RFX1BPSU5UUyBhcyAkLCBTRVFVRU5DRVMgYXMgJCQsIFJFUExBQ0VNRU5UX0NIQVJBQ1RFUiwgaXNTdXJyb2dhdGUsIGlzVW5kZWZpbmVkQ29kZVBvaW50LCBpc0NvbnRyb2xDb2RlUG9pbnQsIH0gZnJvbSAnLi4vY29tbW9uL3VuaWNvZGUuanMnO1xuaW1wb3J0IHsgVG9rZW5UeXBlLCBnZXRUb2tlbkF0dHIsIH0gZnJvbSAnLi4vY29tbW9uL3Rva2VuLmpzJztcbmltcG9ydCB7IGh0bWxEZWNvZGVUcmVlLCBFbnRpdHlEZWNvZGVyLCBEZWNvZGluZ01vZGUgfSBmcm9tICdlbnRpdGllcy9saWIvZGVjb2RlLmpzJztcbmltcG9ydCB7IEVSUiB9IGZyb20gJy4uL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyc7XG5pbXBvcnQgeyBUQUdfSUQsIGdldFRhZ0lEIH0gZnJvbSAnLi4vY29tbW9uL2h0bWwuanMnO1xuLy9TdGF0ZXNcbnZhciBTdGF0ZTtcbihmdW5jdGlvbiAoU3RhdGUpIHtcbiAgICBTdGF0ZVtTdGF0ZVtcIkRBVEFcIl0gPSAwXSA9IFwiREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkNEQVRBXCJdID0gMV0gPSBcIlJDREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkFXVEVYVFwiXSA9IDJdID0gXCJSQVdURVhUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQVwiXSA9IDNdID0gXCJTQ1JJUFRfREFUQVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUExBSU5URVhUXCJdID0gNF0gPSBcIlBMQUlOVEVYVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiVEFHX09QRU5cIl0gPSA1XSA9IFwiVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkVORF9UQUdfT1BFTlwiXSA9IDZdID0gXCJFTkRfVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlRBR19OQU1FXCJdID0gN10gPSBcIlRBR19OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQ0RBVEFfTEVTU19USEFOX1NJR05cIl0gPSA4XSA9IFwiUkNEQVRBX0xFU1NfVEhBTl9TSUdOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJSQ0RBVEFfRU5EX1RBR19PUEVOXCJdID0gOV0gPSBcIlJDREFUQV9FTkRfVEFHX09QRU5cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJDREFUQV9FTkRfVEFHX05BTUVcIl0gPSAxMF0gPSBcIlJDREFUQV9FTkRfVEFHX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJBV1RFWFRfTEVTU19USEFOX1NJR05cIl0gPSAxMV0gPSBcIlJBV1RFWFRfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlJBV1RFWFRfRU5EX1RBR19PUEVOXCJdID0gMTJdID0gXCJSQVdURVhUX0VORF9UQUdfT1BFTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiUkFXVEVYVF9FTkRfVEFHX05BTUVcIl0gPSAxM10gPSBcIlJBV1RFWFRfRU5EX1RBR19OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9MRVNTX1RIQU5fU0lHTlwiXSA9IDE0XSA9IFwiU0NSSVBUX0RBVEFfTEVTU19USEFOX1NJR05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VORF9UQUdfT1BFTlwiXSA9IDE1XSA9IFwiU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FTkRfVEFHX05BTUVcIl0gPSAxNl0gPSBcIlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFX1NUQVJUXCJdID0gMTddID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIXCJdID0gMThdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRFwiXSA9IDE5XSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9EQVNIXCJdID0gMjBdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIXCJdID0gMjFdID0gXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiXSA9IDIyXSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX09QRU5cIl0gPSAyM10gPSBcIlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJTQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfTkFNRVwiXSA9IDI0XSA9IFwiU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRcIl0gPSAyNV0gPSBcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEXCJdID0gMjZdID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSFwiXSA9IDI3XSA9IFwiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIXCJdID0gMjhdID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIX0RBU0hcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOXCJdID0gMjldID0gXCJTQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRV9FTkRcIl0gPSAzMF0gPSBcIlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRUZPUkVfQVRUUklCVVRFX05BTUVcIl0gPSAzMV0gPSBcIkJFRk9SRV9BVFRSSUJVVEVfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQVRUUklCVVRFX05BTUVcIl0gPSAzMl0gPSBcIkFUVFJJQlVURV9OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBRlRFUl9BVFRSSUJVVEVfTkFNRVwiXSA9IDMzXSA9IFwiQUZURVJfQVRUUklCVVRFX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJFRk9SRV9BVFRSSUJVVEVfVkFMVUVcIl0gPSAzNF0gPSBcIkJFRk9SRV9BVFRSSUJVVEVfVkFMVUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEXCJdID0gMzVdID0gXCJBVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URURcIl0gPSAzNl0gPSBcIkFUVFJJQlVURV9WQUxVRV9TSU5HTEVfUVVPVEVEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBVFRSSUJVVEVfVkFMVUVfVU5RVU9URURcIl0gPSAzN10gPSBcIkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRFwiXSA9IDM4XSA9IFwiQUZURVJfQVRUUklCVVRFX1ZBTFVFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiU0VMRl9DTE9TSU5HX1NUQVJUX1RBR1wiXSA9IDM5XSA9IFwiU0VMRl9DTE9TSU5HX1NUQVJUX1RBR1wiO1xuICAgIFN0YXRlW1N0YXRlW1wiQk9HVVNfQ09NTUVOVFwiXSA9IDQwXSA9IFwiQk9HVVNfQ09NTUVOVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiTUFSS1VQX0RFQ0xBUkFUSU9OX09QRU5cIl0gPSA0MV0gPSBcIk1BUktVUF9ERUNMQVJBVElPTl9PUEVOXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX1NUQVJUXCJdID0gNDJdID0gXCJDT01NRU5UX1NUQVJUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX1NUQVJUX0RBU0hcIl0gPSA0M10gPSBcIkNPTU1FTlRfU1RBUlRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVFwiXSA9IDQ0XSA9IFwiQ09NTUVOVFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTlwiXSA9IDQ1XSA9IFwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HXCJdID0gNDZdID0gXCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFOR19EQVNIXCJdID0gNDddID0gXCJDT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSFwiXSA9IDQ4XSA9IFwiQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9FTkRfREFTSFwiXSA9IDQ5XSA9IFwiQ09NTUVOVF9FTkRfREFTSFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQ09NTUVOVF9FTkRcIl0gPSA1MF0gPSBcIkNPTU1FTlRfRU5EXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDT01NRU5UX0VORF9CQU5HXCJdID0gNTFdID0gXCJDT01NRU5UX0VORF9CQU5HXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFXCJdID0gNTJdID0gXCJET0NUWVBFXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRUZPUkVfRE9DVFlQRV9OQU1FXCJdID0gNTNdID0gXCJCRUZPUkVfRE9DVFlQRV9OQU1FXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFX05BTUVcIl0gPSA1NF0gPSBcIkRPQ1RZUEVfTkFNRVwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfRE9DVFlQRV9OQU1FXCJdID0gNTVdID0gXCJBRlRFUl9ET0NUWVBFX05BTUVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRcIl0gPSA1Nl0gPSBcIkFGVEVSX0RPQ1RZUEVfUFVCTElDX0tFWVdPUkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJFRk9SRV9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCJdID0gNTddID0gXCJCRUZPUkVfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUlwiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEXCJdID0gNThdID0gXCJET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRFwiXSA9IDU5XSA9IFwiRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCJdID0gNjBdID0gXCJBRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJCRVRXRUVOX0RPQ1RZUEVfUFVCTElDX0FORF9TWVNURU1fSURFTlRJRklFUlNcIl0gPSA2MV0gPSBcIkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSU1wiO1xuICAgIFN0YXRlW1N0YXRlW1wiQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRFwiXSA9IDYyXSA9IFwiQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiQkVGT1JFX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIl0gPSA2M10gPSBcIkJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URURcIl0gPSA2NF0gPSBcIkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRFwiO1xuICAgIFN0YXRlW1N0YXRlW1wiRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEXCJdID0gNjVdID0gXCJET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URURcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIl0gPSA2Nl0gPSBcIkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkJPR1VTX0RPQ1RZUEVcIl0gPSA2N10gPSBcIkJPR1VTX0RPQ1RZUEVcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNEQVRBX1NFQ1RJT05cIl0gPSA2OF0gPSBcIkNEQVRBX1NFQ1RJT05cIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNEQVRBX1NFQ1RJT05fQlJBQ0tFVFwiXSA9IDY5XSA9IFwiQ0RBVEFfU0VDVElPTl9CUkFDS0VUXCI7XG4gICAgU3RhdGVbU3RhdGVbXCJDREFUQV9TRUNUSU9OX0VORFwiXSA9IDcwXSA9IFwiQ0RBVEFfU0VDVElPTl9FTkRcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkNIQVJBQ1RFUl9SRUZFUkVOQ0VcIl0gPSA3MV0gPSBcIkNIQVJBQ1RFUl9SRUZFUkVOQ0VcIjtcbiAgICBTdGF0ZVtTdGF0ZVtcIkFNQklHVU9VU19BTVBFUlNBTkRcIl0gPSA3Ml0gPSBcIkFNQklHVU9VU19BTVBFUlNBTkRcIjtcbn0pKFN0YXRlIHx8IChTdGF0ZSA9IHt9KSk7XG4vL1Rva2VuaXplciBpbml0aWFsIHN0YXRlcyBmb3IgZGlmZmVyZW50IG1vZGVzXG5leHBvcnQgY29uc3QgVG9rZW5pemVyTW9kZSA9IHtcbiAgICBEQVRBOiBTdGF0ZS5EQVRBLFxuICAgIFJDREFUQTogU3RhdGUuUkNEQVRBLFxuICAgIFJBV1RFWFQ6IFN0YXRlLlJBV1RFWFQsXG4gICAgU0NSSVBUX0RBVEE6IFN0YXRlLlNDUklQVF9EQVRBLFxuICAgIFBMQUlOVEVYVDogU3RhdGUuUExBSU5URVhULFxuICAgIENEQVRBX1NFQ1RJT046IFN0YXRlLkNEQVRBX1NFQ1RJT04sXG59O1xuLy9VdGlsc1xuLy9PUFRJTUlaQVRJT046IHRoZXNlIHV0aWxpdHkgZnVuY3Rpb25zIHNob3VsZCBub3QgYmUgbW92ZWQgb3V0IG9mIHRoaXMgbW9kdWxlLiBWOCBDcmFua3NoYWZ0IHdpbGwgbm90IGlubGluZVxuLy90aGlzIGZ1bmN0aW9ucyBpZiB0aGV5IHdpbGwgYmUgc2l0dWF0ZWQgaW4gYW5vdGhlciBtb2R1bGUgZHVlIHRvIGNvbnRleHQgc3dpdGNoLlxuLy9BbHdheXMgcGVyZm9ybSBpbmxpbmluZyBjaGVjayBiZWZvcmUgbW9kaWZ5aW5nIHRoaXMgZnVuY3Rpb25zICgnbm9kZSAtLXRyYWNlLWlubGluaW5nJykuXG5mdW5jdGlvbiBpc0FzY2lpRGlnaXQoY3ApIHtcbiAgICByZXR1cm4gY3AgPj0gJC5ESUdJVF8wICYmIGNwIDw9ICQuRElHSVRfOTtcbn1cbmZ1bmN0aW9uIGlzQXNjaWlVcHBlcihjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX0NBUElUQUxfQSAmJiBjcCA8PSAkLkxBVElOX0NBUElUQUxfWjtcbn1cbmZ1bmN0aW9uIGlzQXNjaWlMb3dlcihjcCkge1xuICAgIHJldHVybiBjcCA+PSAkLkxBVElOX1NNQUxMX0EgJiYgY3AgPD0gJC5MQVRJTl9TTUFMTF9aO1xufVxuZnVuY3Rpb24gaXNBc2NpaUxldHRlcihjcCkge1xuICAgIHJldHVybiBpc0FzY2lpTG93ZXIoY3ApIHx8IGlzQXNjaWlVcHBlcihjcCk7XG59XG5mdW5jdGlvbiBpc0FzY2lpQWxwaGFOdW1lcmljKGNwKSB7XG4gICAgcmV0dXJuIGlzQXNjaWlMZXR0ZXIoY3ApIHx8IGlzQXNjaWlEaWdpdChjcCk7XG59XG5mdW5jdGlvbiB0b0FzY2lpTG93ZXIoY3ApIHtcbiAgICByZXR1cm4gY3AgKyAzMjtcbn1cbmZ1bmN0aW9uIGlzV2hpdGVzcGFjZShjcCkge1xuICAgIHJldHVybiBjcCA9PT0gJC5TUEFDRSB8fCBjcCA9PT0gJC5MSU5FX0ZFRUQgfHwgY3AgPT09ICQuVEFCVUxBVElPTiB8fCBjcCA9PT0gJC5GT1JNX0ZFRUQ7XG59XG5mdW5jdGlvbiBpc1NjcmlwdERhdGFEb3VibGVFc2NhcGVTZXF1ZW5jZUVuZChjcCkge1xuICAgIHJldHVybiBpc1doaXRlc3BhY2UoY3ApIHx8IGNwID09PSAkLlNPTElEVVMgfHwgY3AgPT09ICQuR1JFQVRFUl9USEFOX1NJR047XG59XG5mdW5jdGlvbiBnZXRFcnJvckZvck51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UoY29kZSkge1xuICAgIGlmIChjb2RlID09PSAkLk5VTEwpIHtcbiAgICAgICAgcmV0dXJuIEVSUi5udWxsQ2hhcmFjdGVyUmVmZXJlbmNlO1xuICAgIH1cbiAgICBlbHNlIGlmIChjb2RlID4gMTExNDExMSkge1xuICAgICAgICByZXR1cm4gRVJSLmNoYXJhY3RlclJlZmVyZW5jZU91dHNpZGVVbmljb2RlUmFuZ2U7XG4gICAgfVxuICAgIGVsc2UgaWYgKGlzU3Vycm9nYXRlKGNvZGUpKSB7XG4gICAgICAgIHJldHVybiBFUlIuc3Vycm9nYXRlQ2hhcmFjdGVyUmVmZXJlbmNlO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc1VuZGVmaW5lZENvZGVQb2ludChjb2RlKSkge1xuICAgICAgICByZXR1cm4gRVJSLm5vbmNoYXJhY3RlckNoYXJhY3RlclJlZmVyZW5jZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNDb250cm9sQ29kZVBvaW50KGNvZGUpIHx8IGNvZGUgPT09ICQuQ0FSUklBR0VfUkVUVVJOKSB7XG4gICAgICAgIHJldHVybiBFUlIuY29udHJvbENoYXJhY3RlclJlZmVyZW5jZTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG4vL1Rva2VuaXplclxuZXhwb3J0IGNsYXNzIFRva2VuaXplciB7XG4gICAgY29uc3RydWN0b3Iob3B0aW9ucywgaGFuZGxlcikge1xuICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgICAgICB0aGlzLmhhbmRsZXIgPSBoYW5kbGVyO1xuICAgICAgICB0aGlzLnBhdXNlZCA9IGZhbHNlO1xuICAgICAgICAvKiogRW5zdXJlcyB0aGF0IHRoZSBwYXJzaW5nIGxvb3AgaXNuJ3QgcnVuIG11bHRpcGxlIHRpbWVzIGF0IG9uY2UuICovXG4gICAgICAgIHRoaXMuaW5Mb29wID0gZmFsc2U7XG4gICAgICAgIC8qKlxuICAgICAgICAgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBhZGp1c3RlZCBub2RlIGV4aXN0cywgaXMgbm90IGFuIGVsZW1lbnQgaW4gdGhlIEhUTUwgbmFtZXNwYWNlLFxuICAgICAgICAgKiBhbmQgdGhhdCBpdCBpcyBub3QgYW4gaW50ZWdyYXRpb24gcG9pbnQgZm9yIGVpdGhlciBNYXRoTUwgb3IgSFRNTC5cbiAgICAgICAgICpcbiAgICAgICAgICogQHNlZSB7QGxpbmsgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI3RyZWUtY29uc3RydWN0aW9ufVxuICAgICAgICAgKi9cbiAgICAgICAgdGhpcy5pbkZvcmVpZ25Ob2RlID0gZmFsc2U7XG4gICAgICAgIHRoaXMubGFzdFN0YXJ0VGFnTmFtZSA9ICcnO1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgIHRoaXMuZW50aXR5U3RhcnRQb3MgPSAwO1xuICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IC0xO1xuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gbnVsbDtcbiAgICAgICAgdGhpcy5jdXJyZW50QXR0ciA9IHsgbmFtZTogJycsIHZhbHVlOiAnJyB9O1xuICAgICAgICB0aGlzLnByZXByb2Nlc3NvciA9IG5ldyBQcmVwcm9jZXNzb3IoaGFuZGxlcik7XG4gICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uID0gdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oLTEpO1xuICAgICAgICB0aGlzLmVudGl0eURlY29kZXIgPSBuZXcgRW50aXR5RGVjb2RlcihodG1sRGVjb2RlVHJlZSwgKGNwLCBjb25zdW1lZCkgPT4ge1xuICAgICAgICAgICAgLy8gTm90ZTogU2V0IGBwb3NgIF9iZWZvcmVfIGZsdXNoaW5nLCBhcyBmbHVzaGluZyBtaWdodCBkcm9wXG4gICAgICAgICAgICAvLyB0aGUgY3VycmVudCBjaHVuayBhbmQgaW52YWxpZGF0ZSBgZW50aXR5U3RhcnRQb3NgLlxuICAgICAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IucG9zID0gdGhpcy5lbnRpdHlTdGFydFBvcyArIGNvbnN1bWVkIC0gMTtcbiAgICAgICAgICAgIHRoaXMuX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZShjcCk7XG4gICAgICAgIH0sIGhhbmRsZXIub25QYXJzZUVycm9yXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICBtaXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nU2VtaWNvbG9uQWZ0ZXJDaGFyYWN0ZXJSZWZlcmVuY2UsIDEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgYWJzZW5jZU9mRGlnaXRzSW5OdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlOiAoY29uc3VtZWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnNlbmNlT2ZEaWdpdHNJbk51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2UsIHRoaXMuZW50aXR5U3RhcnRQb3MgLSB0aGlzLnByZXByb2Nlc3Nvci5wb3MgKyBjb25zdW1lZCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB2YWxpZGF0ZU51bWVyaWNDaGFyYWN0ZXJSZWZlcmVuY2U6IChjb2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gZ2V0RXJyb3JGb3JOdW1lcmljQ2hhcmFjdGVyUmVmZXJlbmNlKGNvZGUpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IpXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoZXJyb3IsIDEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHVuZGVmaW5lZCk7XG4gICAgfVxuICAgIC8vRXJyb3JzXG4gICAgX2Vycihjb2RlLCBjcE9mZnNldCA9IDApIHtcbiAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgKF9iID0gKF9hID0gdGhpcy5oYW5kbGVyKS5vblBhcnNlRXJyb3IpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCB0aGlzLnByZXByb2Nlc3Nvci5nZXRFcnJvcihjb2RlLCBjcE9mZnNldCkpO1xuICAgIH1cbiAgICAvLyBOT1RFOiBgb2Zmc2V0YCBtYXkgbmV2ZXIgcnVuIGFjcm9zcyBsaW5lIGJvdW5kYXJpZXMuXG4gICAgZ2V0Q3VycmVudExvY2F0aW9uKG9mZnNldCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhcnRMaW5lOiB0aGlzLnByZXByb2Nlc3Nvci5saW5lLFxuICAgICAgICAgICAgc3RhcnRDb2w6IHRoaXMucHJlcHJvY2Vzc29yLmNvbCAtIG9mZnNldCxcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiB0aGlzLnByZXByb2Nlc3Nvci5vZmZzZXQgLSBvZmZzZXQsXG4gICAgICAgICAgICBlbmRMaW5lOiAtMSxcbiAgICAgICAgICAgIGVuZENvbDogLTEsXG4gICAgICAgICAgICBlbmRPZmZzZXQ6IC0xLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfcnVuUGFyc2luZ0xvb3AoKSB7XG4gICAgICAgIGlmICh0aGlzLmluTG9vcClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5pbkxvb3AgPSB0cnVlO1xuICAgICAgICB3aGlsZSAodGhpcy5hY3RpdmUgJiYgIXRoaXMucGF1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IDA7XG4gICAgICAgICAgICBjb25zdCBjcCA9IHRoaXMuX2NvbnN1bWUoKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhbGxTdGF0ZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbkxvb3AgPSBmYWxzZTtcbiAgICB9XG4gICAgLy9BUElcbiAgICBwYXVzZSgpIHtcbiAgICAgICAgdGhpcy5wYXVzZWQgPSB0cnVlO1xuICAgIH1cbiAgICByZXN1bWUod3JpdGVDYWxsYmFjaykge1xuICAgICAgICBpZiAoIXRoaXMucGF1c2VkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcnNlciB3YXMgYWxyZWFkeSByZXN1bWVkJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgLy8gTmVjZXNzYXJ5IGZvciBzeW5jaHJvbm91cyByZXN1bWUuXG4gICAgICAgIGlmICh0aGlzLmluTG9vcClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AoKTtcbiAgICAgICAgaWYgKCF0aGlzLnBhdXNlZCkge1xuICAgICAgICAgICAgd3JpdGVDYWxsYmFjayA9PT0gbnVsbCB8fCB3cml0ZUNhbGxiYWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiB3cml0ZUNhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgd3JpdGUoY2h1bmssIGlzTGFzdENodW5rLCB3cml0ZUNhbGxiYWNrKSB7XG4gICAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3Iud3JpdGUoY2h1bmssIGlzTGFzdENodW5rKTtcbiAgICAgICAgdGhpcy5fcnVuUGFyc2luZ0xvb3AoKTtcbiAgICAgICAgaWYgKCF0aGlzLnBhdXNlZCkge1xuICAgICAgICAgICAgd3JpdGVDYWxsYmFjayA9PT0gbnVsbCB8fCB3cml0ZUNhbGxiYWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiB3cml0ZUNhbGxiYWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5zZXJ0SHRtbEF0Q3VycmVudFBvcyhjaHVuaykge1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmluc2VydEh0bWxBdEN1cnJlbnRQb3MoY2h1bmspO1xuICAgICAgICB0aGlzLl9ydW5QYXJzaW5nTG9vcCgpO1xuICAgIH1cbiAgICAvL0hpYmVybmF0aW9uXG4gICAgX2Vuc3VyZUhpYmVybmF0aW9uKCkge1xuICAgICAgICBpZiAodGhpcy5wcmVwcm9jZXNzb3IuZW5kT2ZDaHVua0hpdCkge1xuICAgICAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IucmV0cmVhdCh0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCk7XG4gICAgICAgICAgICB0aGlzLmNvbnN1bWVkQWZ0ZXJTbmFwc2hvdCA9IDA7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvL0NvbnN1bXB0aW9uXG4gICAgX2NvbnN1bWUoKSB7XG4gICAgICAgIHRoaXMuY29uc3VtZWRBZnRlclNuYXBzaG90Kys7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXByb2Nlc3Nvci5hZHZhbmNlKCk7XG4gICAgfVxuICAgIF9hZHZhbmNlQnkoY291bnQpIHtcbiAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgKz0gY291bnQ7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuYWR2YW5jZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKHBhdHRlcm4sIGNhc2VTZW5zaXRpdmUpIHtcbiAgICAgICAgaWYgKHRoaXMucHJlcHJvY2Vzc29yLnN0YXJ0c1dpdGgocGF0dGVybiwgY2FzZVNlbnNpdGl2ZSkpIHtcbiAgICAgICAgICAgIC8vIFdlIHdpbGwgYWxyZWFkeSBoYXZlIGNvbnN1bWVkIG9uZSBjaGFyYWN0ZXIgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QuXG4gICAgICAgICAgICB0aGlzLl9hZHZhbmNlQnkocGF0dGVybi5sZW5ndGggLSAxKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy9Ub2tlbiBjcmVhdGlvblxuICAgIF9jcmVhdGVTdGFydFRhZ1Rva2VuKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuVHlwZS5TVEFSVF9UQUcsXG4gICAgICAgICAgICB0YWdOYW1lOiAnJyxcbiAgICAgICAgICAgIHRhZ0lEOiBUQUdfSUQuVU5LTk9XTixcbiAgICAgICAgICAgIHNlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGFja1NlbGZDbG9zaW5nOiBmYWxzZSxcbiAgICAgICAgICAgIGF0dHJzOiBbXSxcbiAgICAgICAgICAgIGxvY2F0aW9uOiB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigxKSxcbiAgICAgICAgfTtcbiAgICB9XG4gICAgX2NyZWF0ZUVuZFRhZ1Rva2VuKCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGU6IFRva2VuVHlwZS5FTkRfVEFHLFxuICAgICAgICAgICAgdGFnTmFtZTogJycsXG4gICAgICAgICAgICB0YWdJRDogVEFHX0lELlVOS05PV04sXG4gICAgICAgICAgICBzZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICAgICAgICBhY2tTZWxmQ2xvc2luZzogZmFsc2UsXG4gICAgICAgICAgICBhdHRyczogW10sXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oMiksXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9jcmVhdGVDb21tZW50VG9rZW4ob2Zmc2V0KSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogVG9rZW5UeXBlLkNPTU1FTlQsXG4gICAgICAgICAgICBkYXRhOiAnJyxcbiAgICAgICAgICAgIGxvY2F0aW9uOiB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbihvZmZzZXQpLFxuICAgICAgICB9O1xuICAgIH1cbiAgICBfY3JlYXRlRG9jdHlwZVRva2VuKGluaXRpYWxOYW1lKSB7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0ge1xuICAgICAgICAgICAgdHlwZTogVG9rZW5UeXBlLkRPQ1RZUEUsXG4gICAgICAgICAgICBuYW1lOiBpbml0aWFsTmFtZSxcbiAgICAgICAgICAgIGZvcmNlUXVpcmtzOiBmYWxzZSxcbiAgICAgICAgICAgIHB1YmxpY0lkOiBudWxsLFxuICAgICAgICAgICAgc3lzdGVtSWQ6IG51bGwsXG4gICAgICAgICAgICBsb2NhdGlvbjogdGhpcy5jdXJyZW50TG9jYXRpb24sXG4gICAgICAgIH07XG4gICAgfVxuICAgIF9jcmVhdGVDaGFyYWN0ZXJUb2tlbih0eXBlLCBjaGFycykge1xuICAgICAgICB0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbiA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBjaGFycyxcbiAgICAgICAgICAgIGxvY2F0aW9uOiB0aGlzLmN1cnJlbnRMb2NhdGlvbixcbiAgICAgICAgfTtcbiAgICB9XG4gICAgLy9UYWcgYXR0cmlidXRlc1xuICAgIF9jcmVhdGVBdHRyKGF0dHJOYW1lRmlyc3RDaCkge1xuICAgICAgICB0aGlzLmN1cnJlbnRBdHRyID0ge1xuICAgICAgICAgICAgbmFtZTogYXR0ck5hbWVGaXJzdENoLFxuICAgICAgICAgICAgdmFsdWU6ICcnLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKDApO1xuICAgIH1cbiAgICBfbGVhdmVBdHRyTmFtZSgpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICB2YXIgX2I7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIGlmIChnZXRUb2tlbkF0dHIodG9rZW4sIHRoaXMuY3VycmVudEF0dHIubmFtZSkgPT09IG51bGwpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzLnB1c2godGhpcy5jdXJyZW50QXR0cik7XG4gICAgICAgICAgICBpZiAodG9rZW4ubG9jYXRpb24gJiYgdGhpcy5jdXJyZW50TG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBhdHRyTG9jYXRpb25zID0gKChfYSA9IChfYiA9IHRva2VuLmxvY2F0aW9uKS5hdHRycykgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogKF9iLmF0dHJzID0gT2JqZWN0LmNyZWF0ZShudWxsKSkpO1xuICAgICAgICAgICAgICAgIGF0dHJMb2NhdGlvbnNbdGhpcy5jdXJyZW50QXR0ci5uYW1lXSA9IHRoaXMuY3VycmVudExvY2F0aW9uO1xuICAgICAgICAgICAgICAgIC8vIFNldCBlbmQgbG9jYXRpb25cbiAgICAgICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5kdXBsaWNhdGVBdHRyaWJ1dGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9sZWF2ZUF0dHJWYWx1ZSgpIHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudExvY2F0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbi5lbmRMaW5lID0gdGhpcy5wcmVwcm9jZXNzb3IubGluZTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uLmVuZENvbCA9IHRoaXMucHJlcHJvY2Vzc29yLmNvbDtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudExvY2F0aW9uLmVuZE9mZnNldCA9IHRoaXMucHJlcHJvY2Vzc29yLm9mZnNldDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1Rva2VuIGVtaXNzaW9uXG4gICAgcHJlcGFyZVRva2VuKGN0KSB7XG4gICAgICAgIHRoaXMuX2VtaXRDdXJyZW50Q2hhcmFjdGVyVG9rZW4oY3QubG9jYXRpb24pO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgICAgIGlmIChjdC5sb2NhdGlvbikge1xuICAgICAgICAgICAgY3QubG9jYXRpb24uZW5kTGluZSA9IHRoaXMucHJlcHJvY2Vzc29yLmxpbmU7XG4gICAgICAgICAgICBjdC5sb2NhdGlvbi5lbmRDb2wgPSB0aGlzLnByZXByb2Nlc3Nvci5jb2wgKyAxO1xuICAgICAgICAgICAgY3QubG9jYXRpb24uZW5kT2Zmc2V0ID0gdGhpcy5wcmVwcm9jZXNzb3Iub2Zmc2V0ICsgMTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKC0xKTtcbiAgICB9XG4gICAgZW1pdEN1cnJlbnRUYWdUb2tlbigpIHtcbiAgICAgICAgY29uc3QgY3QgPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgdGhpcy5wcmVwYXJlVG9rZW4oY3QpO1xuICAgICAgICBjdC50YWdJRCA9IGdldFRhZ0lEKGN0LnRhZ05hbWUpO1xuICAgICAgICBpZiAoY3QudHlwZSA9PT0gVG9rZW5UeXBlLlNUQVJUX1RBRykge1xuICAgICAgICAgICAgdGhpcy5sYXN0U3RhcnRUYWdOYW1lID0gY3QudGFnTmFtZTtcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vblN0YXJ0VGFnKGN0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChjdC5hdHRycy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lbmRUYWdXaXRoQXR0cmlidXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY3Quc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVuZFRhZ1dpdGhUcmFpbGluZ1NvbGlkdXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5oYW5kbGVyLm9uRW5kVGFnKGN0KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5kcm9wUGFyc2VkQ2h1bmsoKTtcbiAgICB9XG4gICAgZW1pdEN1cnJlbnRDb21tZW50KGN0KSB7XG4gICAgICAgIHRoaXMucHJlcGFyZVRva2VuKGN0KTtcbiAgICAgICAgdGhpcy5oYW5kbGVyLm9uQ29tbWVudChjdCk7XG4gICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmRyb3BQYXJzZWRDaHVuaygpO1xuICAgIH1cbiAgICBlbWl0Q3VycmVudERvY3R5cGUoY3QpIHtcbiAgICAgICAgdGhpcy5wcmVwYXJlVG9rZW4oY3QpO1xuICAgICAgICB0aGlzLmhhbmRsZXIub25Eb2N0eXBlKGN0KTtcbiAgICAgICAgdGhpcy5wcmVwcm9jZXNzb3IuZHJvcFBhcnNlZENodW5rKCk7XG4gICAgfVxuICAgIF9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKG5leHRMb2NhdGlvbikge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgICAgIC8vTk9URTogaWYgd2UgaGF2ZSBhIHBlbmRpbmcgY2hhcmFjdGVyIHRva2VuLCBtYWtlIGl0J3MgZW5kIGxvY2F0aW9uIGVxdWFsIHRvIHRoZVxuICAgICAgICAgICAgLy9jdXJyZW50IHRva2VuJ3Mgc3RhcnQgbG9jYXRpb24uXG4gICAgICAgICAgICBpZiAobmV4dExvY2F0aW9uICYmIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kTGluZSA9IG5leHRMb2NhdGlvbi5zdGFydExpbmU7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4ubG9jYXRpb24uZW5kQ29sID0gbmV4dExvY2F0aW9uLnN0YXJ0Q29sO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuLmxvY2F0aW9uLmVuZE9mZnNldCA9IG5leHRMb2NhdGlvbi5zdGFydE9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4udHlwZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLkNIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZXIub25DaGFyYWN0ZXIodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuTlVMTF9DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVyLm9uTnVsbENoYXJhY3Rlcih0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZXIub25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHRoaXMuY3VycmVudENoYXJhY3RlclRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4gPSBudWxsO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9lbWl0RU9GVG9rZW4oKSB7XG4gICAgICAgIGNvbnN0IGxvY2F0aW9uID0gdGhpcy5nZXRDdXJyZW50TG9jYXRpb24oMCk7XG4gICAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICAgICAgbG9jYXRpb24uZW5kTGluZSA9IGxvY2F0aW9uLnN0YXJ0TGluZTtcbiAgICAgICAgICAgIGxvY2F0aW9uLmVuZENvbCA9IGxvY2F0aW9uLnN0YXJ0Q29sO1xuICAgICAgICAgICAgbG9jYXRpb24uZW5kT2Zmc2V0ID0gbG9jYXRpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fZW1pdEN1cnJlbnRDaGFyYWN0ZXJUb2tlbihsb2NhdGlvbik7XG4gICAgICAgIHRoaXMuaGFuZGxlci5vbkVvZih7IHR5cGU6IFRva2VuVHlwZS5FT0YsIGxvY2F0aW9uIH0pO1xuICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgIH1cbiAgICAvL0NoYXJhY3RlcnMgZW1pc3Npb25cbiAgICAvL09QVElNSVpBVElPTjogVGhlIHNwZWNpZmljYXRpb24gdXNlcyBvbmx5IG9uZSB0eXBlIG9mIGNoYXJhY3RlciB0b2tlbiAob25lIHRva2VuIHBlciBjaGFyYWN0ZXIpLlxuICAgIC8vVGhpcyBjYXVzZXMgYSBodWdlIG1lbW9yeSBvdmVyaGVhZCBhbmQgYSBsb3Qgb2YgdW5uZWNlc3NhcnkgcGFyc2VyIGxvb3BzLiBwYXJzZTUgdXNlcyAzIGdyb3VwcyBvZiBjaGFyYWN0ZXJzLlxuICAgIC8vSWYgd2UgaGF2ZSBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdGhhdCBiZWxvbmcgdG8gdGhlIHNhbWUgZ3JvdXAsIHRoZSBwYXJzZXIgY2FuIHByb2Nlc3MgaXRcbiAgICAvL2FzIGEgc2luZ2xlIHNvbGlkIGNoYXJhY3RlciB0b2tlbi5cbiAgICAvL1NvLCB0aGVyZSBhcmUgMyB0eXBlcyBvZiBjaGFyYWN0ZXIgdG9rZW5zIGluIHBhcnNlNTpcbiAgICAvLzEpVG9rZW5UeXBlLk5VTExfQ0hBUkFDVEVSIC0gXFx1MDAwMC1jaGFyYWN0ZXIgc2VxdWVuY2VzIChlLmcuICdcXHUwMDAwXFx1MDAwMFxcdTAwMDAnKVxuICAgIC8vMilUb2tlblR5cGUuV0hJVEVTUEFDRV9DSEFSQUNURVIgLSBhbnkgd2hpdGVzcGFjZS9uZXctbGluZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIChlLmcuICdcXG4gIFxcclxcdCAgIFxcZicpXG4gICAgLy8zKVRva2VuVHlwZS5DSEFSQUNURVIgLSBhbnkgY2hhcmFjdGVyIHNlcXVlbmNlIHdoaWNoIGRvbid0IGJlbG9uZyB0byBncm91cHMgMSBhbmQgMiAoZS5nLiAnYWJjZGVmMTIzNEBAIyQlXicpXG4gICAgX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbih0eXBlLCBjaCkge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRDaGFyYWN0ZXJUb2tlbi50eXBlID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50Q2hhcmFjdGVyVG9rZW4uY2hhcnMgKz0gY2g7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TG9jYXRpb24gPSB0aGlzLmdldEN1cnJlbnRMb2NhdGlvbigwKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q3VycmVudENoYXJhY3RlclRva2VuKHRoaXMuY3VycmVudExvY2F0aW9uKTtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5kcm9wUGFyc2VkQ2h1bmsoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9jcmVhdGVDaGFyYWN0ZXJUb2tlbih0eXBlLCBjaCk7XG4gICAgfVxuICAgIF9lbWl0Q29kZVBvaW50KGNwKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBpc1doaXRlc3BhY2UoY3ApXG4gICAgICAgICAgICA/IFRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUlxuICAgICAgICAgICAgOiBjcCA9PT0gJC5OVUxMXG4gICAgICAgICAgICAgICAgPyBUb2tlblR5cGUuTlVMTF9DSEFSQUNURVJcbiAgICAgICAgICAgICAgICA6IFRva2VuVHlwZS5DSEFSQUNURVI7XG4gICAgICAgIHRoaXMuX2FwcGVuZENoYXJUb0N1cnJlbnRDaGFyYWN0ZXJUb2tlbih0eXBlLCBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCkpO1xuICAgIH1cbiAgICAvL05PVEU6IHVzZWQgd2hlbiB3ZSBlbWl0IGNoYXJhY3RlcnMgZXhwbGljaXRseS5cbiAgICAvL1RoaXMgaXMgYWx3YXlzIGZvciBub24td2hpdGVzcGFjZSBhbmQgbm9uLW51bGwgY2hhcmFjdGVycywgd2hpY2ggYWxsb3dzIHVzIHRvIGF2b2lkIGFkZGl0aW9uYWwgY2hlY2tzLlxuICAgIF9lbWl0Q2hhcnMoY2gpIHtcbiAgICAgICAgdGhpcy5fYXBwZW5kQ2hhclRvQ3VycmVudENoYXJhY3RlclRva2VuKFRva2VuVHlwZS5DSEFSQUNURVIsIGNoKTtcbiAgICB9XG4gICAgLy8gQ2hhcmFjdGVyIHJlZmVyZW5jZSBoZWxwZXJzXG4gICAgX3N0YXJ0Q2hhcmFjdGVyUmVmZXJlbmNlKCkge1xuICAgICAgICB0aGlzLnJldHVyblN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNIQVJBQ1RFUl9SRUZFUkVOQ0U7XG4gICAgICAgIHRoaXMuZW50aXR5U3RhcnRQb3MgPSB0aGlzLnByZXByb2Nlc3Nvci5wb3M7XG4gICAgICAgIHRoaXMuZW50aXR5RGVjb2Rlci5zdGFydEVudGl0eSh0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkgPyBEZWNvZGluZ01vZGUuQXR0cmlidXRlIDogRGVjb2RpbmdNb2RlLkxlZ2FjeSk7XG4gICAgfVxuICAgIF9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkge1xuICAgICAgICByZXR1cm4gKHRoaXMucmV0dXJuU3RhdGUgPT09IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEIHx8XG4gICAgICAgICAgICB0aGlzLnJldHVyblN0YXRlID09PSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRCB8fFxuICAgICAgICAgICAgdGhpcy5yZXR1cm5TdGF0ZSA9PT0gU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1VOUVVPVEVEKTtcbiAgICB9XG4gICAgX2ZsdXNoQ29kZVBvaW50Q29uc3VtZWRBc0NoYXJhY3RlclJlZmVyZW5jZShjcCkge1xuICAgICAgICBpZiAodGhpcy5faXNDaGFyYWN0ZXJSZWZlcmVuY2VJbkF0dHJpYnV0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLnZhbHVlICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENhbGxpbmcgc3RhdGVzIHRoaXMgd2F5IHR1cm5zIG91dCB0byBiZSBtdWNoIGZhc3RlciB0aGFuIGFueSBvdGhlciBhcHByb2FjaC5cbiAgICBfY2FsbFN0YXRlKGNwKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICAgICAgY2FzZSBTdGF0ZS5EQVRBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVEYXRhKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkNEQVRBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGEoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQVdURVhUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEE6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5QTEFJTlRFWFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVBsYWludGV4dChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlRBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVFbmRUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuVEFHX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVRhZ05hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQ0RBVEFfTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YUxlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJDREFUQV9FTkRfVEFHX09QRU46IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YUVuZFRhZ09wZW4oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5SQ0RBVEFfRU5EX1RBR19OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGFFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuUkFXVEVYVF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlUmF3dGV4dExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJBV1RFWFRfRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0RW5kVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlJBV1RFWFRfRU5EX1RBR19OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0RW5kVGFnTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhTGVzc1RoYW5TaWduKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRU5EX1RBR19PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRW5kVGFnT3BlbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VORF9UQUdfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ05hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVTdGFydChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSF9EQVNIOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZERhc2hEYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRMZXNzVGhhblNpZ24oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0VORF9UQUdfT1BFTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWRFbmRUYWdPcGVuKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfU1RBUlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVTdGFydChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0RBU0hfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVfRU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlRW5kKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQVRUUklCVVRFX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9WQUxVRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlQXR0cmlidXRlVmFsdWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfRE9VQkxFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQXR0cmlidXRlVmFsdWVEb3VibGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfU0lOR0xFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQXR0cmlidXRlVmFsdWVTaW5nbGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BVFRSSUJVVEVfVkFMVUVfVU5RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckF0dHJpYnV0ZVZhbHVlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuU0VMRl9DTE9TSU5HX1NUQVJUX1RBRzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlU2VsZkNsb3NpbmdTdGFydFRhZyhjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJPR1VTX0NPTU1FTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLk1BUktVUF9ERUNMQVJBVElPTl9PUEVOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVNYXJrdXBEZWNsYXJhdGlvbk9wZW4oY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX1NUQVJUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50U3RhcnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX1NUQVJUX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRTdGFydERhc2goY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFORzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmcoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX0xFU1NfVEhBTl9TSUdOX0JBTkdfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoRGFzaChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNPTU1FTlRfRU5EX0RBU0g6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRFbmREYXNoKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQ09NTUVOVF9FTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnRFbmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DT01NRU5UX0VORF9CQU5HOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50RW5kQmFuZyhjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9OQU1FOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVEb2N0eXBlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfTkFNRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX05BTUU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJlZm9yZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVEb2N0eXBlUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBZnRlckRvY3R5cGVQdWJsaWNJZGVudGlmaWVyKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQkVUV0VFTl9ET0NUWVBFX1BVQkxJQ19BTkRfU1lTVEVNX0lERU5USUZJRVJTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fS0VZV09SRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtS2V5d29yZChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJFRk9SRV9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQUZURVJfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQWZ0ZXJEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkJPR1VTX0RPQ1RZUEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNkYXRhU2VjdGlvbihjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT05fQlJBQ0tFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ2RhdGFTZWN0aW9uQnJhY2tldChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFN0YXRlLkNEQVRBX1NFQ1RJT05fRU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDZGF0YVNlY3Rpb25FbmQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBTdGF0ZS5DSEFSQUNURVJfUkVGRVJFTkNFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgU3RhdGUuQU1CSUdVT1VTX0FNUEVSU0FORDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQW1iaWd1b3VzQW1wZXJzYW5kKGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gc3RhdGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTdGF0ZSBtYWNoaW5lXG4gICAgLy8gRGF0YSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRGF0YShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuVEFHX09QRU47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQU1QRVJTQU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gIFJDREFUQSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmNkYXRhKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGFydENoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJDREFUQV9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkFXVEVYVCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmF3dGV4dChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGEoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBQTEFJTlRFWFQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVBsYWludGV4dChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyhSRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVUYWdPcGVuKGNwKSB7XG4gICAgICAgIGlmIChpc0FzY2lpTGV0dGVyKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fY3JlYXRlU3RhcnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlRBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAkLkVYQ0xBTUFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLk1BUktVUF9ERUNMQVJBVElPTl9PUEVOO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlNPTElEVVM6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkVORF9UQUdfT1BFTjtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5RVUVTVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZFF1ZXN0aW9uTWFya0luc3RlYWRPZlRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oMSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19DT01NRU5UO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mQmVmb3JlVGFnTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlRGF0YShjcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBFbmQgdGFnIG9wZW4gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9jcmVhdGVFbmRUYWdUb2tlbigpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlRBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0VuZFRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZCZWZvcmVUYWdOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkRmlyc3RDaGFyYWN0ZXJPZlRhZ05hbWUpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVDb21tZW50VG9rZW4oMik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19DT01NRU5UO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzQ29tbWVudChjcCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgIH1cbiAgICAvLyBUYWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlVGFnTmFtZShjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNFTEZfQ0xPU0lOR19TVEFSVF9UQUc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4udGFnTmFtZSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4udGFnTmFtZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChpc0FzY2lpVXBwZXIoY3ApID8gdG9Bc2NpaUxvd2VyKGNwKSA6IGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQ0RBVEEgbGVzcy10aGFuIHNpZ24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVJjZGF0YUxlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJDREFUQV9FTkRfVEFHX09QRU47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmNkYXRhRW5kVGFnT3BlbihjcCkge1xuICAgICAgICBpZiAoaXNBc2NpaUxldHRlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEFfRU5EX1RBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSY2RhdGFFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQ0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJjZGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaGFuZGxlU3BlY2lhbEVuZFRhZyhfY3ApIHtcbiAgICAgICAgaWYgKCF0aGlzLnByZXByb2Nlc3Nvci5zdGFydHNXaXRoKHRoaXMubGFzdFN0YXJ0VGFnTmFtZSwgZmFsc2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fY3JlYXRlRW5kVGFnVG9rZW4oKTtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IHRoaXMubGFzdFN0YXJ0VGFnTmFtZTtcbiAgICAgICAgY29uc3QgY3AgPSB0aGlzLnByZXByb2Nlc3Nvci5wZWVrKHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlNPTElEVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9hZHZhbmNlQnkodGhpcy5sYXN0U3RhcnRUYWdOYW1lLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNFTEZfQ0xPU0lOR19TVEFSVF9UQUc7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fYWR2YW5jZUJ5KHRoaXMubGFzdFN0YXJ0VGFnTmFtZS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gUkNEQVRBIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmNkYXRhRW5kVGFnTmFtZShjcCkge1xuICAgICAgICBpZiAodGhpcy5oYW5kbGVTcGVjaWFsRW5kVGFnKGNwKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8LycpO1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlJDREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlUmNkYXRhKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQVdURVhUIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVSYXd0ZXh0TGVzc1RoYW5TaWduKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5TT0xJRFVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVF9FTkRfVEFHX09QRU47XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQVdURVhUIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmF3dGV4dEVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuUkFXVEVYVF9FTkRfVEFHX05BTUU7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVJhd3RleHRFbmRUYWdOYW1lKGNwKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBSQVdURVhUIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlUmF3dGV4dEVuZFRhZ05hbWUoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU3BlY2lhbEVuZFRhZyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5SQVdURVhUO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVSYXd0ZXh0KGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUxlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU09MSURVUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FTkRfVEFHX09QRU47XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRVhDTEFNQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVfU1RBUlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8IScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRU5EX1RBR19OQU1FO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRW5kVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVuZCB0YWcgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YUVuZFRhZ05hbWUoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU3BlY2lhbEVuZFRhZyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQTtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YShjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlIHN0YXJ0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnQoY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLkhZUEhFTl9NSU5VUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRV9TVEFSVF9EQVNIO1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCctJyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGEoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZSBzdGFydCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlU3RhcnREYXNoKGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5IWVBIRU5fTUlOVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSDtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfREFTSDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBkYXNoIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZERhc2goY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0RBU0hfREFTSDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJy0nKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRGFzaERhc2goY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfTEVTU19USEFOX1NJR047XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc+Jyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycyhSRVBMQUNFTUVOVF9DSEFSQUNURVIpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5TY3JpcHRIdG1sQ29tbWVudExpa2VUZXh0KTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBlc2NhcGVkIGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZExlc3NUaGFuU2lnbihjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuU09MSURVUykge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRURfRU5EX1RBR19PUEVOO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwnKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX1NUQVJUO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlU3RhcnQoY3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCc8Jyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZW5kIHRhZyBvcGVuIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ09wZW4oY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlMZXR0ZXIoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRF9FTkRfVEFHX05BTUU7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkRW5kVGFnTmFtZShjcCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoJzwvJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIFNjcmlwdCBkYXRhIGVzY2FwZWQgZW5kIHRhZyBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTY3JpcHREYXRhRXNjYXBlZEVuZFRhZ05hbWUoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMuaGFuZGxlU3BlY2lhbEVuZFRhZyhjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPC8nKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9FU0NBUEVEO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRXNjYXBlZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBzdGFydCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZVN0YXJ0KGNwKSB7XG4gICAgICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5zdGFydHNXaXRoKCQkLlNDUklQVCwgZmFsc2UpICYmXG4gICAgICAgICAgICBpc1NjcmlwdERhdGFEb3VibGVFc2NhcGVTZXF1ZW5jZUVuZCh0aGlzLnByZXByb2Nlc3Nvci5wZWVrKCQkLlNDUklQVC5sZW5ndGgpKSkge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8ICQkLlNDUklQVC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDb2RlUG9pbnQodGhpcy5fY29uc3VtZSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICghdGhpcy5fZW5zdXJlSGliZXJuYXRpb24oKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZVNjcmlwdERhdGFFc2NhcGVkKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRF9EQVNIO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q2hhcnMoUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluU2NyaXB0SHRtbENvbW1lbnRMaWtlVGV4dCk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZWQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWREYXNoKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRURfREFTSF9EQVNIO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBkYXNoIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVkRGFzaERhc2goY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLScpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkxFU1NfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEX0xFU1NfVEhBTl9TSUdOO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnPicpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuU0NSSVBUX0RBVEFfRE9VQkxFX0VTQ0FQRUQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKFJFUExBQ0VNRU5UX0NIQVJBQ1RFUik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblNjcmlwdEh0bWxDb21tZW50TGlrZVRleHQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTY3JpcHQgZGF0YSBkb3VibGUgZXNjYXBlZCBsZXNzLXRoYW4gc2lnbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWRMZXNzVGhhblNpZ24oY3ApIHtcbiAgICAgICAgaWYgKGNwID09PSAkLlNPTElEVVMpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFX0VORDtcbiAgICAgICAgICAgIHRoaXMuX2VtaXRDaGFycygnLycpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0RPVUJMRV9FU0NBUEVEO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVTY3JpcHREYXRhRG91YmxlRXNjYXBlZChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gU2NyaXB0IGRhdGEgZG91YmxlIGVzY2FwZSBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZVNjcmlwdERhdGFEb3VibGVFc2NhcGVFbmQoY3ApIHtcbiAgICAgICAgaWYgKHRoaXMucHJlcHJvY2Vzc29yLnN0YXJ0c1dpdGgoJCQuU0NSSVBULCBmYWxzZSkgJiZcbiAgICAgICAgICAgIGlzU2NyaXB0RGF0YURvdWJsZUVzY2FwZVNlcXVlbmNlRW5kKHRoaXMucHJlcHJvY2Vzc29yLnBlZWsoJCQuU0NSSVBULmxlbmd0aCkpKSB7XG4gICAgICAgICAgICB0aGlzLl9lbWl0Q29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgJCQuU0NSSVBULmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludCh0aGlzLl9jb25zdW1lKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNDUklQVF9EQVRBX0VTQ0FQRUQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TQ1JJUFRfREFUQV9ET1VCTEVfRVNDQVBFRDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlU2NyaXB0RGF0YURvdWJsZUVzY2FwZWQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBhdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlQXR0cmlidXRlTmFtZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOlxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOlxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRVFVQUxTX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRFcXVhbHNTaWduQmVmb3JlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlQXR0cignPScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVBdHRyKCcnKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBdHRyaWJ1dGUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQXR0cmlidXRlTmFtZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlNPTElEVVM6XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyTmFtZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZShjcCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRVFVQUxTX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJOYW1lKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfVkFMVUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRTpcbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZENoYXJhY3RlckluQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci5uYW1lICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBdHRyLm5hbWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoaXNBc2NpaVVwcGVyKGNwKSA/IHRvQXNjaWlMb3dlcihjcCkgOiBjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgYXR0cmlidXRlIG5hbWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyQXR0cmlidXRlTmFtZShjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TT0xJRFVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLlNFTEZfQ0xPU0lOR19TVEFSVF9UQUc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRVFVQUxTX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9WQUxVRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUF0dHIoJycpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZU5hbWUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBhdHRyaWJ1dGUgdmFsdWUgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJlZm9yZUF0dHJpYnV0ZVZhbHVlKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQVRUUklCVVRFX1ZBTFVFX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdBdHRyaWJ1dGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudFRhZ1Rva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFUVFJJQlVURV9WQUxVRV9VTlFVT1RFRDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUF0dHJpYnV0ZVZhbHVlRG91YmxlUXVvdGVkKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9BVFRSSUJVVEVfVkFMVUVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFNUEVSU0FORDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0Q2hhcmFjdGVyUmVmZXJlbmNlKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEF0dHJpYnV0ZSB2YWx1ZSAoc2luZ2xlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUF0dHJpYnV0ZVZhbHVlU2luZ2xlUXVvdGVkKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0FUVFJJQlVURV9WQUxVRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQU1QRVJTQU5EOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnRDaGFyYWN0ZXJSZWZlcmVuY2UoKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQXR0cmlidXRlIHZhbHVlICh1bnF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUF0dHJpYnV0ZVZhbHVlVW5xdW90ZWQoY3ApIHtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2xlYXZlQXR0clZhbHVlKCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5BTVBFUlNBTkQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGFydENoYXJhY3RlclJlZmVyZW5jZSgpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QXR0ci52YWx1ZSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRTpcbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjpcbiAgICAgICAgICAgIGNhc2UgJC5FUVVBTFNfU0lHTjpcbiAgICAgICAgICAgIGNhc2UgJC5HUkFWRV9BQ0NFTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWRDaGFyYWN0ZXJJblVucXVvdGVkQXR0cmlidXRlVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEF0dHIudmFsdWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIGF0dHJpYnV0ZSB2YWx1ZSAocXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJBdHRyaWJ1dGVWYWx1ZVF1b3RlZChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0FUVFJJQlVURV9OQU1FO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlNPTElEVVM6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9sZWF2ZUF0dHJWYWx1ZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5TRUxGX0NMT1NJTkdfU1RBUlRfVEFHO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fbGVhdmVBdHRyVmFsdWUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50VGFnVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluVGFnKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQmV0d2VlbkF0dHJpYnV0ZXMpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfQVRUUklCVVRFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVBdHRyaWJ1dGVOYW1lKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBTZWxmLWNsb3Npbmcgc3RhcnQgdGFnIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVTZWxmQ2xvc2luZ1N0YXJ0VGFnKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgICAgICAgICAgdG9rZW4uc2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRUYWdUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5UYWcpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZFNvbGlkdXNJblRhZyk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9BVFRSSUJVVEVfTkFNRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJlZm9yZUF0dHJpYnV0ZU5hbWUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJvZ3VzIGNvbW1lbnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJvZ3VzQ29tbWVudChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50Q29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBNYXJrdXAgZGVjbGFyYXRpb24gb3BlbiBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlTWFya3VwRGVjbGFyYXRpb25PcGVuKGNwKSB7XG4gICAgICAgIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkRBU0hfREFTSCwgdHJ1ZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigkJC5EQVNIX0RBU0gubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9TVEFSVDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkRPQ1RZUEUsIGZhbHNlKSkge1xuICAgICAgICAgICAgLy8gTk9URTogRG9jdHlwZXMgdG9rZW5zIGFyZSBjcmVhdGVkIHdpdGhvdXQgZml4ZWQgb2Zmc2V0cy4gV2Uga2VlcCB0cmFjayBvZiB0aGUgbW9tZW50IGEgZG9jdHlwZSAqbWlnaHQqIHN0YXJ0IGhlcmUuXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRMb2NhdGlvbiA9IHRoaXMuZ2V0Q3VycmVudExvY2F0aW9uKCQkLkRPQ1RZUEUubGVuZ3RoICsgMSk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLkNEQVRBX1NUQVJULCB0cnVlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5Gb3JlaWduTm9kZSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DREFUQV9TRUNUSU9OO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5jZGF0YUluSHRtbENvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigkJC5DREFUQV9TVEFSVC5sZW5ndGggKyAxKTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbi5kYXRhID0gJ1tDREFUQVsnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19DT01NRU5UO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vTk9URTogU2VxdWVuY2UgbG9va3VwcyBjYW4gYmUgYWJydXB0ZWQgYnkgaGliZXJuYXRpb24uIEluIHRoYXQgY2FzZSwgbG9va3VwXG4gICAgICAgIC8vcmVzdWx0cyBhcmUgbm8gbG9uZ2VyIHZhbGlkIGFuZCB3ZSB3aWxsIG5lZWQgdG8gc3RhcnQgb3Zlci5cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2VycihFUlIuaW5jb3JyZWN0bHlPcGVuZWRDb21tZW50KTtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZUNvbW1lbnRUb2tlbigyKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19DT01NRU5UO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0NvbW1lbnQoY3ApO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgc3RhcnQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRTdGFydChjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfU1RBUlRfREFTSDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0Q2xvc2luZ09mRW1wdHlDb21tZW50KTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgc3RhcnQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudFN0YXJ0RGFzaChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfRU5EO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHRDbG9zaW5nT2ZFbXB0eUNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuSFlQSEVOX01JTlVTOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfRU5EX0RBU0g7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTEVTU19USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICc8JztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkNvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDb21tZW50IGxlc3MtdGhhbiBzaWduIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50TGVzc1RoYW5TaWduKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5FWENMQU1BVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uZGF0YSArPSAnISc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlRfTEVTU19USEFOX1NJR05fQkFORztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5MRVNTX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJzwnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBsZXNzLXRoYW4gc2lnbiBiYW5nIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDb21tZW50TGVzc1RoYW5TaWduQmFuZyhjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0g7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBsZXNzLXRoYW4gc2lnbiBiYW5nIGRhc2ggc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRMZXNzVGhhblNpZ25CYW5nRGFzaChjcCkge1xuICAgICAgICBpZiAoY3AgPT09ICQuSFlQSEVOX01JTlVTKSB7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9MRVNTX1RIQU5fU0lHTl9CQU5HX0RBU0hfREFTSDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORF9EQVNIO1xuICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50RW5kRGFzaChjcCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBsZXNzLXRoYW4gc2lnbiBiYW5nIGRhc2ggZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudExlc3NUaGFuU2lnbkJhbmdEYXNoRGFzaChjcCkge1xuICAgICAgICBpZiAoY3AgIT09ICQuR1JFQVRFUl9USEFOX1NJR04gJiYgY3AgIT09ICQuRU9GKSB7XG4gICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm5lc3RlZENvbW1lbnQpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORDtcbiAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50RW5kKGNwKTtcbiAgICB9XG4gICAgLy8gQ29tbWVudCBlbmQgZGFzaCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ29tbWVudEVuZERhc2goY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkhZUEhFTl9NSU5VUzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJy0nO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ29tbWVudChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ29tbWVudCBlbmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRFbmQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVYQ0xBTUFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVF9FTkRfQkFORztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJy0tJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ09NTUVOVDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUNvbW1lbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENvbW1lbnQgZW5kIGJhbmcgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNvbW1lbnRFbmRCYW5nKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5IWVBIRU5fTUlOVVM6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5kYXRhICs9ICctLSEnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DT01NRU5UX0VORF9EQVNIO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbmNvcnJlY3RseUNsb3NlZENvbW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnRDb21tZW50KHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluQ29tbWVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudENvbW1lbnQodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLmRhdGEgKz0gJy0tISc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNPTU1FTlQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVDb21tZW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEb2N0eXBlKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0RPQ1RZUEVfTkFNRTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9OQU1FO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQmVmb3JlRG9jdHlwZU5hbWUoY3ApO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4obnVsbCk7XG4gICAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VCZWZvcmVEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFRk9SRV9ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCZWZvcmVEb2N0eXBlTmFtZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQmVmb3JlIERPQ1RZUEUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlRG9jdHlwZU5hbWUoY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlVcHBlcihjcCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbihTdHJpbmcuZnJvbUNoYXJDb2RlKHRvQXNjaWlMb3dlcihjcCkpKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX05BTUU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4oUkVQTEFDRU1FTlRfQ0hBUkFDVEVSKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfTkFNRTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlTmFtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbihudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZURvY3R5cGVUb2tlbihudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9jcmVhdGVEb2N0eXBlVG9rZW4oU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfTkFNRTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgfVxuICAgIC8vIERPQ1RZUEUgbmFtZSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRG9jdHlwZU5hbWUoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX05BTUU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLm5hbWUgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLm5hbWUgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoaXNBc2NpaVVwcGVyKGNwKSA/IHRvQXNjaWlMb3dlcihjcCkgOiBjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBuYW1lIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBZnRlckRvY3R5cGVOYW1lKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLlBVQkxJQywgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19LRVlXT1JEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLl9jb25zdW1lU2VxdWVuY2VJZk1hdGNoKCQkLlNZU1RFTSwgZmFsc2UpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1NZU1RFTV9LRVlXT1JEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvL05PVEU6IHNlcXVlbmNlIGxvb2t1cCBjYW4gYmUgYWJydXB0ZWQgYnkgaGliZXJuYXRpb24uIEluIHRoYXQgY2FzZSBsb29rdXBcbiAgICAgICAgICAgICAgICAvL3Jlc3VsdHMgYXJlIG5vIGxvbmdlciB2YWxpZCBhbmQgd2Ugd2lsbCBuZWVkIHRvIHN0YXJ0IG92ZXIuXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuX2Vuc3VyZUhpYmVybmF0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5pbnZhbGlkQ2hhcmFjdGVyU2VxdWVuY2VBZnRlckRvY3R5cGVOYW1lKTtcbiAgICAgICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0RvY3R5cGUoY3ApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBET0NUWVBFIHB1YmxpYyBrZXl3b3JkIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBZnRlckRvY3R5cGVQdWJsaWNLZXl3b3JkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQkVGT1JFX0RPQ1RZUEVfUFVCTElDX0lERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZCk7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9ET1VCTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdXaGl0ZXNwYWNlQWZ0ZXJEb2N0eXBlUHVibGljS2V5d29yZCk7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCZWZvcmUgRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfUFVCTElDX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ0RvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1F1b3RlQmVmb3JlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQk9HVVNfRE9DVFlQRTtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGF0ZUJvZ3VzRG9jdHlwZShjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciAoZG91YmxlLXF1b3RlZCkgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZURvY3R5cGVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1BVQkxJQ19JREVOVElGSUVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdERvY3R5cGVQdWJsaWNJZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLnB1YmxpY0lkICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIHB1YmxpYyBpZGVudGlmaWVyIChzaW5nbGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRG9jdHlwZVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkFQT1NUUk9QSEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQUZURVJfRE9DVFlQRV9QVUJMSUNfSURFTlRJRklFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5OVUxMOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi51bmV4cGVjdGVkTnVsbENoYXJhY3Rlcik7XG4gICAgICAgICAgICAgICAgdG9rZW4ucHVibGljSWQgKz0gUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5hYnJ1cHREb2N0eXBlUHVibGljSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5wdWJsaWNJZCArPSBTdHJpbmcuZnJvbUNvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgRE9DVFlQRSBwdWJsaWMgaWRlbnRpZmllciBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQWZ0ZXJEb2N0eXBlUHVibGljSWRlbnRpZmllcihjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJFVFdFRU5fRE9DVFlQRV9QVUJMSUNfQU5EX1NZU1RFTV9JREVOVElGSUVSUztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VCZXR3ZWVuRG9jdHlwZVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCZXR3ZWVuIERPQ1RZUEUgcHVibGljIGFuZCBzeXN0ZW0gaWRlbnRpZmllcnMgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUJldHdlZW5Eb2N0eXBlUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnMoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIC8vIElnbm9yZSB3aGl0ZXNwYWNlXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUVVPVEFUSU9OX01BUks6IHtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfU0lOR0xFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0RvY3R5cGUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEFmdGVyIERPQ1RZUEUgc3lzdGVtIGtleXdvcmQgc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUFmdGVyRG9jdHlwZVN5c3RlbUtleXdvcmQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlNQQUNFOlxuICAgICAgICAgICAgY2FzZSAkLkxJTkVfRkVFRDpcbiAgICAgICAgICAgIGNhc2UgJC5UQUJVTEFUSU9OOlxuICAgICAgICAgICAgY2FzZSAkLkZPUk1fRkVFRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CRUZPUkVfRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX0RPVUJMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIubWlzc2luZ1doaXRlc3BhY2VBZnRlckRvY3R5cGVTeXN0ZW1LZXl3b3JkKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCA9ICcnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSX1NJTkdMRV9RVU9URUQ7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmVvZkluRG9jdHlwZSk7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuZW1pdEN1cnJlbnREb2N0eXBlKHRva2VuKTtcbiAgICAgICAgICAgICAgICB0aGlzLl9lbWl0RU9GVG9rZW4oKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLm1pc3NpbmdRdW90ZUJlZm9yZURvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkJPR1VTX0RPQ1RZUEU7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhdGVCb2d1c0RvY3R5cGUoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIEJlZm9yZSBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcihjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuU1BBQ0U6XG4gICAgICAgICAgICBjYXNlICQuTElORV9GRUVEOlxuICAgICAgICAgICAgY2FzZSAkLlRBQlVMQVRJT046XG4gICAgICAgICAgICBjYXNlICQuRk9STV9GRUVEOiB7XG4gICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2VcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5RVU9UQVRJT05fTUFSSzoge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkID0gJyc7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVJfRE9VQkxFX1FVT1RFRDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5BUE9TVFJPUEhFOiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgPSAnJztcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuRE9DVFlQRV9TWVNURU1fSURFTlRJRklFUl9TSU5HTEVfUVVPVEVEO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuREFUQTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5taXNzaW5nUXVvdGVCZWZvcmVEb2N0eXBlU3lzdGVtSWRlbnRpZmllcik7XG4gICAgICAgICAgICAgICAgdG9rZW4uZm9yY2VRdWlya3MgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIChkb3VibGUtcXVvdGVkKSBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlRG9jdHlwZVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWQoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLlFVT1RBVElPTl9NQVJLOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkFGVEVSX0RPQ1RZUEVfU1lTVEVNX0lERU5USUZJRVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuTlVMTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZE51bGxDaGFyYWN0ZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkICs9IFJFUExBQ0VNRU5UX0NIQVJBQ1RFUjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuYWJydXB0RG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkRBVEE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuRU9GOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZXJyKEVSUi5lb2ZJbkRvY3R5cGUpO1xuICAgICAgICAgICAgICAgIHRva2VuLmZvcmNlUXVpcmtzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdG9rZW4uc3lzdGVtSWQgKz0gU3RyaW5nLmZyb21Db2RlUG9pbnQoY3ApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vIERPQ1RZUEUgc3lzdGVtIGlkZW50aWZpZXIgKHNpbmdsZS1xdW90ZWQpIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVEb2N0eXBlU3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZChjcCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRoaXMuY3VycmVudFRva2VuO1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuQVBPU1RST1BIRToge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5BRlRFUl9ET0NUWVBFX1NZU1RFTV9JREVOVElGSUVSO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5zeXN0ZW1JZCArPSBSRVBMQUNFTUVOVF9DSEFSQUNURVI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuR1JFQVRFUl9USEFOX1NJR046IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLmFicnVwdERvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRva2VuLnN5c3RlbUlkICs9IFN0cmluZy5mcm9tQ29kZVBvaW50KGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBBZnRlciBET0NUWVBFIHN5c3RlbSBpZGVudGlmaWVyIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBZnRlckRvY3R5cGVTeXN0ZW1JZGVudGlmaWVyKGNwKSB7XG4gICAgICAgIGNvbnN0IHRva2VuID0gdGhpcy5jdXJyZW50VG9rZW47XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5TUEFDRTpcbiAgICAgICAgICAgIGNhc2UgJC5MSU5FX0ZFRUQ6XG4gICAgICAgICAgICBjYXNlICQuVEFCVUxBVElPTjpcbiAgICAgICAgICAgIGNhc2UgJC5GT1JNX0ZFRUQ6IHtcbiAgICAgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5Eb2N0eXBlKTtcbiAgICAgICAgICAgICAgICB0b2tlbi5mb3JjZVF1aXJrcyA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuX2VtaXRFT0ZUb2tlbigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5leHBlY3RlZENoYXJhY3RlckFmdGVyRG9jdHlwZVN5c3RlbUlkZW50aWZpZXIpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5CT0dVU19ET0NUWVBFO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQm9ndXNEb2N0eXBlKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBCb2d1cyBET0NUWVBFIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVCb2d1c0RvY3R5cGUoY3ApIHtcbiAgICAgICAgY29uc3QgdG9rZW4gPSB0aGlzLmN1cnJlbnRUb2tlbjtcbiAgICAgICAgc3dpdGNoIChjcCkge1xuICAgICAgICAgICAgY2FzZSAkLkdSRUFURVJfVEhBTl9TSUdOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5lbWl0Q3VycmVudERvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLk5VTEw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIoRVJSLnVuZXhwZWN0ZWROdWxsQ2hhcmFjdGVyKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5FT0Y6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmVtaXRDdXJyZW50RG9jdHlwZSh0b2tlbik7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENEQVRBIHNlY3Rpb24gc3RhdGVcbiAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIF9zdGF0ZUNkYXRhU2VjdGlvbihjcCkge1xuICAgICAgICBzd2l0Y2ggKGNwKSB7XG4gICAgICAgICAgICBjYXNlICQuUklHSFRfU1FVQVJFX0JSQUNLRVQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0RBVEFfU0VDVElPTl9CUkFDS0VUO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIuZW9mSW5DZGF0YSk7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdEVPRlRva2VuKCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENvZGVQb2ludChjcCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQ0RBVEEgc2VjdGlvbiBicmFja2V0IHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDZGF0YVNlY3Rpb25CcmFja2V0KGNwKSB7XG4gICAgICAgIGlmIChjcCA9PT0gJC5SSUdIVF9TUVVBUkVfQlJBQ0tFVCkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlLkNEQVRBX1NFQ1RJT05fRU5EO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCddJyk7XG4gICAgICAgICAgICB0aGlzLnN0YXRlID0gU3RhdGUuQ0RBVEFfU0VDVElPTjtcbiAgICAgICAgICAgIHRoaXMuX3N0YXRlQ2RhdGFTZWN0aW9uKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDREFUQSBzZWN0aW9uIGVuZCBzdGF0ZVxuICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgX3N0YXRlQ2RhdGFTZWN0aW9uRW5kKGNwKSB7XG4gICAgICAgIHN3aXRjaCAoY3ApIHtcbiAgICAgICAgICAgIGNhc2UgJC5HUkVBVEVSX1RIQU5fU0lHTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5EQVRBO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSAkLlJJR0hUX1NRVUFSRV9CUkFDS0VUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCddJyk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW1pdENoYXJzKCddXScpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhdGUgPSBTdGF0ZS5DREFUQV9TRUNUSU9OO1xuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXRlQ2RhdGFTZWN0aW9uKGNwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBDaGFyYWN0ZXIgcmVmZXJlbmNlIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVDaGFyYWN0ZXJSZWZlcmVuY2UoKSB7XG4gICAgICAgIGxldCBsZW5ndGggPSB0aGlzLmVudGl0eURlY29kZXIud3JpdGUodGhpcy5wcmVwcm9jZXNzb3IuaHRtbCwgdGhpcy5wcmVwcm9jZXNzb3IucG9zKTtcbiAgICAgICAgaWYgKGxlbmd0aCA8IDApIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXByb2Nlc3Nvci5sYXN0Q2h1bmtXcml0dGVuKSB7XG4gICAgICAgICAgICAgICAgbGVuZ3RoID0gdGhpcy5lbnRpdHlEZWNvZGVyLmVuZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGVudGl0eS5cbiAgICAgICAgICAgICAgICB0aGlzLmFjdGl2ZSA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIC8vIE1hcmsgdGhlIGVudGlyZSBidWZmZXIgYXMgcmVhZC5cbiAgICAgICAgICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5wb3MgPSB0aGlzLnByZXByb2Nlc3Nvci5odG1sLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdW1lZEFmdGVyU25hcHNob3QgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMucHJlcHJvY2Vzc29yLmVuZE9mQ2h1bmtIaXQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAvLyBUaGlzIHdhcyBub3QgYSB2YWxpZCBlbnRpdHkuIEdvIGJhY2sgdG8gdGhlIGJlZ2lubmluZywgYW5kXG4gICAgICAgICAgICAvLyBmaWd1cmUgb3V0IHdoYXQgdG8gZG8uXG4gICAgICAgICAgICB0aGlzLnByZXByb2Nlc3Nvci5wb3MgPSB0aGlzLmVudGl0eVN0YXJ0UG9zO1xuICAgICAgICAgICAgdGhpcy5fZmx1c2hDb2RlUG9pbnRDb25zdW1lZEFzQ2hhcmFjdGVyUmVmZXJlbmNlKCQuQU1QRVJTQU5EKTtcbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPVxuICAgICAgICAgICAgICAgICF0aGlzLl9pc0NoYXJhY3RlclJlZmVyZW5jZUluQXR0cmlidXRlKCkgJiYgaXNBc2NpaUFscGhhTnVtZXJpYyh0aGlzLnByZXByb2Nlc3Nvci5wZWVrKDEpKVxuICAgICAgICAgICAgICAgICAgICA/IFN0YXRlLkFNQklHVU9VU19BTVBFUlNBTkRcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLnJldHVyblN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgLy8gV2Ugc3VjY2Vzc2Z1bGx5IHBhcnNlZCBhbiBlbnRpdHkuIFN3aXRjaCB0byB0aGUgcmV0dXJuIHN0YXRlLlxuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IHRoaXMucmV0dXJuU3RhdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQW1iaWd1b3MgYW1wZXJzYW5kIHN0YXRlXG4gICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBfc3RhdGVBbWJpZ3VvdXNBbXBlcnNhbmQoY3ApIHtcbiAgICAgICAgaWYgKGlzQXNjaWlBbHBoYU51bWVyaWMoY3ApKSB7XG4gICAgICAgICAgICB0aGlzLl9mbHVzaENvZGVQb2ludENvbnN1bWVkQXNDaGFyYWN0ZXJSZWZlcmVuY2UoY3ApO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNwID09PSAkLlNFTUlDT0xPTikge1xuICAgICAgICAgICAgICAgIHRoaXMuX2VycihFUlIudW5rbm93bk5hbWVkQ2hhcmFjdGVyUmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhdGUgPSB0aGlzLnJldHVyblN0YXRlO1xuICAgICAgICAgICAgdGhpcy5fY2FsbFN0YXRlKGNwKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiIsICJpbXBvcnQgeyBUQUdfSUQgYXMgJCwgTlMsIE5VTUJFUkVEX0hFQURFUlMgfSBmcm9tICcuLi9jb21tb24vaHRtbC5qcyc7XG4vL0VsZW1lbnQgdXRpbHNcbmNvbnN0IElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRUQgPSBuZXcgU2V0KFskLkRELCAkLkRULCAkLkxJLCAkLk9QVEdST1VQLCAkLk9QVElPTiwgJC5QLCAkLlJCLCAkLlJQLCAkLlJULCAkLlJUQ10pO1xuY29uc3QgSU1QTElDSVRfRU5EX1RBR19SRVFVSVJFRF9USE9ST1VHSExZID0gbmV3IFNldChbXG4gICAgLi4uSU1QTElDSVRfRU5EX1RBR19SRVFVSVJFRCxcbiAgICAkLkNBUFRJT04sXG4gICAgJC5DT0xHUk9VUCxcbiAgICAkLlRCT0RZLFxuICAgICQuVEQsXG4gICAgJC5URk9PVCxcbiAgICAkLlRILFxuICAgICQuVEhFQUQsXG4gICAgJC5UUixcbl0pO1xuY29uc3QgU0NPUElOR19FTEVNRU5UU19IVE1MID0gbmV3IFNldChbXG4gICAgJC5BUFBMRVQsXG4gICAgJC5DQVBUSU9OLFxuICAgICQuSFRNTCxcbiAgICAkLk1BUlFVRUUsXG4gICAgJC5PQkpFQ1QsXG4gICAgJC5UQUJMRSxcbiAgICAkLlRELFxuICAgICQuVEVNUExBVEUsXG4gICAgJC5USCxcbl0pO1xuY29uc3QgU0NPUElOR19FTEVNRU5UU19IVE1MX0xJU1QgPSBuZXcgU2V0KFsuLi5TQ09QSU5HX0VMRU1FTlRTX0hUTUwsICQuT0wsICQuVUxdKTtcbmNvbnN0IFNDT1BJTkdfRUxFTUVOVFNfSFRNTF9CVVRUT04gPSBuZXcgU2V0KFsuLi5TQ09QSU5HX0VMRU1FTlRTX0hUTUwsICQuQlVUVE9OXSk7XG5jb25zdCBTQ09QSU5HX0VMRU1FTlRTX01BVEhNTCA9IG5ldyBTZXQoWyQuQU5OT1RBVElPTl9YTUwsICQuTUksICQuTU4sICQuTU8sICQuTVMsICQuTVRFWFRdKTtcbmNvbnN0IFNDT1BJTkdfRUxFTUVOVFNfU1ZHID0gbmV3IFNldChbJC5ERVNDLCAkLkZPUkVJR05fT0JKRUNULCAkLlRJVExFXSk7XG5jb25zdCBUQUJMRV9ST1dfQ09OVEVYVCA9IG5ldyBTZXQoWyQuVFIsICQuVEVNUExBVEUsICQuSFRNTF0pO1xuY29uc3QgVEFCTEVfQk9EWV9DT05URVhUID0gbmV3IFNldChbJC5UQk9EWSwgJC5URk9PVCwgJC5USEVBRCwgJC5URU1QTEFURSwgJC5IVE1MXSk7XG5jb25zdCBUQUJMRV9DT05URVhUID0gbmV3IFNldChbJC5UQUJMRSwgJC5URU1QTEFURSwgJC5IVE1MXSk7XG5jb25zdCBUQUJMRV9DRUxMUyA9IG5ldyBTZXQoWyQuVEQsICQuVEhdKTtcbi8vU3RhY2sgb2Ygb3BlbiBlbGVtZW50c1xuZXhwb3J0IGNsYXNzIE9wZW5FbGVtZW50U3RhY2sge1xuICAgIGdldCBjdXJyZW50VG1wbENvbnRlbnRPck5vZGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0luVGVtcGxhdGUoKSA/IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KHRoaXMuY3VycmVudCkgOiB0aGlzLmN1cnJlbnQ7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50LCB0cmVlQWRhcHRlciwgaGFuZGxlcikge1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdHJlZUFkYXB0ZXI7XG4gICAgICAgIHRoaXMuaGFuZGxlciA9IGhhbmRsZXI7XG4gICAgICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy50YWdJRHMgPSBbXTtcbiAgICAgICAgdGhpcy5zdGFja1RvcCA9IC0xO1xuICAgICAgICB0aGlzLnRtcGxDb3VudCA9IDA7XG4gICAgICAgIHRoaXMuY3VycmVudFRhZ0lkID0gJC5VTktOT1dOO1xuICAgICAgICB0aGlzLmN1cnJlbnQgPSBkb2N1bWVudDtcbiAgICB9XG4gICAgLy9JbmRleCBvZiBlbGVtZW50XG4gICAgX2luZGV4T2YoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pdGVtcy5sYXN0SW5kZXhPZihlbGVtZW50LCB0aGlzLnN0YWNrVG9wKTtcbiAgICB9XG4gICAgLy9VcGRhdGUgY3VycmVudCBlbGVtZW50XG4gICAgX2lzSW5UZW1wbGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFRhZ0lkID09PSAkLlRFTVBMQVRFICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuY3VycmVudCkgPT09IE5TLkhUTUw7XG4gICAgfVxuICAgIF91cGRhdGVDdXJyZW50RWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50ID0gdGhpcy5pdGVtc1t0aGlzLnN0YWNrVG9wXTtcbiAgICAgICAgdGhpcy5jdXJyZW50VGFnSWQgPSB0aGlzLnRhZ0lEc1t0aGlzLnN0YWNrVG9wXTtcbiAgICB9XG4gICAgLy9NdXRhdGlvbnNcbiAgICBwdXNoKGVsZW1lbnQsIHRhZ0lEKSB7XG4gICAgICAgIHRoaXMuc3RhY2tUb3ArKztcbiAgICAgICAgdGhpcy5pdGVtc1t0aGlzLnN0YWNrVG9wXSA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgICAgIHRoaXMudGFnSURzW3RoaXMuc3RhY2tUb3BdID0gdGFnSUQ7XG4gICAgICAgIHRoaXMuY3VycmVudFRhZ0lkID0gdGFnSUQ7XG4gICAgICAgIGlmICh0aGlzLl9pc0luVGVtcGxhdGUoKSkge1xuICAgICAgICAgICAgdGhpcy50bXBsQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUHVzaChlbGVtZW50LCB0YWdJRCwgdHJ1ZSk7XG4gICAgfVxuICAgIHBvcCgpIHtcbiAgICAgICAgY29uc3QgcG9wcGVkID0gdGhpcy5jdXJyZW50O1xuICAgICAgICBpZiAodGhpcy50bXBsQ291bnQgPiAwICYmIHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICB0aGlzLnRtcGxDb3VudC0tO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcbiAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgdGhpcy5oYW5kbGVyLm9uSXRlbVBvcChwb3BwZWQsIHRydWUpO1xuICAgIH1cbiAgICByZXBsYWNlKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZihvbGRFbGVtZW50KTtcbiAgICAgICAgdGhpcy5pdGVtc1tpZHhdID0gbmV3RWxlbWVudDtcbiAgICAgICAgaWYgKGlkeCA9PT0gdGhpcy5zdGFja1RvcCkge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gbmV3RWxlbWVudDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnNlcnRBZnRlcihyZWZlcmVuY2VFbGVtZW50LCBuZXdFbGVtZW50LCBuZXdFbGVtZW50SUQpIHtcbiAgICAgICAgY29uc3QgaW5zZXJ0aW9uSWR4ID0gdGhpcy5faW5kZXhPZihyZWZlcmVuY2VFbGVtZW50KSArIDE7XG4gICAgICAgIHRoaXMuaXRlbXMuc3BsaWNlKGluc2VydGlvbklkeCwgMCwgbmV3RWxlbWVudCk7XG4gICAgICAgIHRoaXMudGFnSURzLnNwbGljZShpbnNlcnRpb25JZHgsIDAsIG5ld0VsZW1lbnRJRCk7XG4gICAgICAgIHRoaXMuc3RhY2tUb3ArKztcbiAgICAgICAgaWYgKGluc2VydGlvbklkeCA9PT0gdGhpcy5zdGFja1RvcCkge1xuICAgICAgICAgICAgdGhpcy5fdXBkYXRlQ3VycmVudEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUHVzaCh0aGlzLmN1cnJlbnQsIHRoaXMuY3VycmVudFRhZ0lkLCBpbnNlcnRpb25JZHggPT09IHRoaXMuc3RhY2tUb3ApO1xuICAgIH1cbiAgICBwb3BVbnRpbFRhZ05hbWVQb3BwZWQodGFnTmFtZSkge1xuICAgICAgICBsZXQgdGFyZ2V0SWR4ID0gdGhpcy5zdGFja1RvcCArIDE7XG4gICAgICAgIGRvIHtcbiAgICAgICAgICAgIHRhcmdldElkeCA9IHRoaXMudGFnSURzLmxhc3RJbmRleE9mKHRhZ05hbWUsIHRhcmdldElkeCAtIDEpO1xuICAgICAgICB9IHdoaWxlICh0YXJnZXRJZHggPiAwICYmIHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbdGFyZ2V0SWR4XSkgIT09IE5TLkhUTUwpO1xuICAgICAgICB0aGlzLnNob3J0ZW5Ub0xlbmd0aCh0YXJnZXRJZHggPCAwID8gMCA6IHRhcmdldElkeCk7XG4gICAgfVxuICAgIHNob3J0ZW5Ub0xlbmd0aChpZHgpIHtcbiAgICAgICAgd2hpbGUgKHRoaXMuc3RhY2tUb3AgPj0gaWR4KSB7XG4gICAgICAgICAgICBjb25zdCBwb3BwZWQgPSB0aGlzLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAodGhpcy50bXBsQ291bnQgPiAwICYmIHRoaXMuX2lzSW5UZW1wbGF0ZSgpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50bXBsQ291bnQgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcbiAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICB0aGlzLmhhbmRsZXIub25JdGVtUG9wKHBvcHBlZCwgdGhpcy5zdGFja1RvcCA8IGlkeCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcG9wVW50aWxFbGVtZW50UG9wcGVkKGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZihlbGVtZW50KTtcbiAgICAgICAgdGhpcy5zaG9ydGVuVG9MZW5ndGgoaWR4IDwgMCA/IDAgOiBpZHgpO1xuICAgIH1cbiAgICBwb3BVbnRpbFBvcHBlZCh0YWdOYW1lcywgdGFyZ2V0TlMpIHtcbiAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5faW5kZXhPZlRhZ05hbWVzKHRhZ05hbWVzLCB0YXJnZXROUyk7XG4gICAgICAgIHRoaXMuc2hvcnRlblRvTGVuZ3RoKGlkeCA8IDAgPyAwIDogaWR4KTtcbiAgICB9XG4gICAgcG9wVW50aWxOdW1iZXJlZEhlYWRlclBvcHBlZCgpIHtcbiAgICAgICAgdGhpcy5wb3BVbnRpbFBvcHBlZChOVU1CRVJFRF9IRUFERVJTLCBOUy5IVE1MKTtcbiAgICB9XG4gICAgcG9wVW50aWxUYWJsZUNlbGxQb3BwZWQoKSB7XG4gICAgICAgIHRoaXMucG9wVW50aWxQb3BwZWQoVEFCTEVfQ0VMTFMsIE5TLkhUTUwpO1xuICAgIH1cbiAgICBwb3BBbGxVcFRvSHRtbEVsZW1lbnQoKSB7XG4gICAgICAgIC8vTk9URTogaGVyZSB3ZSBhc3N1bWUgdGhhdCB0aGUgcm9vdCA8aHRtbD4gZWxlbWVudCBpcyBhbHdheXMgZmlyc3QgaW4gdGhlIG9wZW4gZWxlbWVudCBzdGFjaywgc29cbiAgICAgICAgLy93ZSBwZXJmb3JtIHRoaXMgZmFzdCBzdGFjayBjbGVhbiB1cC5cbiAgICAgICAgdGhpcy50bXBsQ291bnQgPSAwO1xuICAgICAgICB0aGlzLnNob3J0ZW5Ub0xlbmd0aCgxKTtcbiAgICB9XG4gICAgX2luZGV4T2ZUYWdOYW1lcyh0YWdOYW1lcywgbmFtZXNwYWNlKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRhZ05hbWVzLmhhcyh0aGlzLnRhZ0lEc1tpXSkgJiYgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSkgPT09IG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAtMTtcbiAgICB9XG4gICAgY2xlYXJCYWNrVG8odGFnTmFtZXMsIHRhcmdldE5TKSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuX2luZGV4T2ZUYWdOYW1lcyh0YWdOYW1lcywgdGFyZ2V0TlMpO1xuICAgICAgICB0aGlzLnNob3J0ZW5Ub0xlbmd0aChpZHggKyAxKTtcbiAgICB9XG4gICAgY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKSB7XG4gICAgICAgIHRoaXMuY2xlYXJCYWNrVG8oVEFCTEVfQ09OVEVYVCwgTlMuSFRNTCk7XG4gICAgfVxuICAgIGNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpIHtcbiAgICAgICAgdGhpcy5jbGVhckJhY2tUbyhUQUJMRV9CT0RZX0NPTlRFWFQsIE5TLkhUTUwpO1xuICAgIH1cbiAgICBjbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpIHtcbiAgICAgICAgdGhpcy5jbGVhckJhY2tUbyhUQUJMRV9ST1dfQ09OVEVYVCwgTlMuSFRNTCk7XG4gICAgfVxuICAgIHJlbW92ZShlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGlkeCA9IHRoaXMuX2luZGV4T2YoZWxlbWVudCk7XG4gICAgICAgIGlmIChpZHggPj0gMCkge1xuICAgICAgICAgICAgaWYgKGlkeCA9PT0gdGhpcy5zdGFja1RvcCkge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMudGFnSURzLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgICAgIHRoaXMuc3RhY2tUb3AtLTtcbiAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVDdXJyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlci5vbkl0ZW1Qb3AoZWxlbWVudCwgZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vU2VhcmNoXG4gICAgdHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKSB7XG4gICAgICAgIC8vUHJvcGVybHkgbmVzdGVkIDxib2R5PiBlbGVtZW50IChzaG91bGQgYmUgc2Vjb25kIGVsZW1lbnQgaW4gc3RhY2spLlxuICAgICAgICByZXR1cm4gdGhpcy5zdGFja1RvcCA+PSAxICYmIHRoaXMudGFnSURzWzFdID09PSAkLkJPRFkgPyB0aGlzLml0ZW1zWzFdIDogbnVsbDtcbiAgICB9XG4gICAgY29udGFpbnMoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5kZXhPZihlbGVtZW50KSA+IC0xO1xuICAgIH1cbiAgICBnZXRDb21tb25BbmNlc3RvcihlbGVtZW50KSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRJZHggPSB0aGlzLl9pbmRleE9mKGVsZW1lbnQpIC0gMTtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnRJZHggPj0gMCA/IHRoaXMuaXRlbXNbZWxlbWVudElkeF0gOiBudWxsO1xuICAgIH1cbiAgICBpc1Jvb3RIdG1sRWxlbWVudEN1cnJlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrVG9wID09PSAwICYmIHRoaXMudGFnSURzWzBdID09PSAkLkhUTUw7XG4gICAgfVxuICAgIC8vRWxlbWVudCBpbiBzY29wZVxuICAgIGhhc0luRHluYW1pY1Njb3BlKHRhZ05hbWUsIGh0bWxTY29wZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50YWdJRHNbaV07XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5IVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0biA9PT0gdGFnTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaHRtbFNjb3BlLmhhcyh0bikpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIE5TLlNWRzoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoU0NPUElOR19FTEVNRU5UU19TVkcuaGFzKHRuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgTlMuTUFUSE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChTQ09QSU5HX0VMRU1FTlRTX01BVEhNTC5oYXModG4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc0luU2NvcGUodGFnTmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNJbkR5bmFtaWNTY29wZSh0YWdOYW1lLCBTQ09QSU5HX0VMRU1FTlRTX0hUTUwpO1xuICAgIH1cbiAgICBoYXNJbkxpc3RJdGVtU2NvcGUodGFnTmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNJbkR5bmFtaWNTY29wZSh0YWdOYW1lLCBTQ09QSU5HX0VMRU1FTlRTX0hUTUxfTElTVCk7XG4gICAgfVxuICAgIGhhc0luQnV0dG9uU2NvcGUodGFnTmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNJbkR5bmFtaWNTY29wZSh0YWdOYW1lLCBTQ09QSU5HX0VMRU1FTlRTX0hUTUxfQlVUVE9OKTtcbiAgICB9XG4gICAgaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy50YWdJRHNbaV07XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5IVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChOVU1CRVJFRF9IRUFERVJTLmhhcyh0bikpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFNDT1BJTkdfRUxFTUVOVFNfSFRNTC5oYXModG4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5TVkc6IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFNDT1BJTkdfRUxFTUVOVFNfU1ZHLmhhcyh0bikpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlIE5TLk1BVEhNTDoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoU0NPUElOR19FTEVNRU5UU19NQVRITUwuaGFzKHRuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBoYXNJblRhYmxlU2NvcGUodGFnTmFtZSkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSSh0aGlzLml0ZW1zW2ldKSAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3dpdGNoICh0aGlzLnRhZ0lEc1tpXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgdGFnTmFtZToge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRBQkxFOlxuICAgICAgICAgICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGhhc1RhYmxlQm9keUNvbnRleHRJblRhYmxlU2NvcGUoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSB0aGlzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuaXRlbXNbaV0pICE9PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKHRoaXMudGFnSURzW2ldKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICAgICAgICAgIGNhc2UgJC5USEVBRDpcbiAgICAgICAgICAgICAgICBjYXNlICQuVEZPT1Q6IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5UQUJMRTpcbiAgICAgICAgICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBoYXNJblNlbGVjdFNjb3BlKHRhZ05hbWUpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkodGhpcy5pdGVtc1tpXSkgIT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy50YWdJRHNbaV0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIHRhZ05hbWU6IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5PUFRJT046XG4gICAgICAgICAgICAgICAgY2FzZSAkLk9QVEdST1VQOiB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIC8vSW1wbGllZCBlbmQgdGFnc1xuICAgIGdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKSB7XG4gICAgICAgIHdoaWxlIChJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVELmhhcyh0aGlzLmN1cnJlbnRUYWdJZCkpIHtcbiAgICAgICAgICAgIHRoaXMucG9wKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1Rob3JvdWdobHkoKSB7XG4gICAgICAgIHdoaWxlIChJTVBMSUNJVF9FTkRfVEFHX1JFUVVJUkVEX1RIT1JPVUdITFkuaGFzKHRoaXMuY3VycmVudFRhZ0lkKSkge1xuICAgICAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbihleGNsdXNpb25JZCkge1xuICAgICAgICB3aGlsZSAodGhpcy5jdXJyZW50VGFnSWQgIT09IGV4Y2x1c2lvbklkICYmIElNUExJQ0lUX0VORF9UQUdfUkVRVUlSRURfVEhPUk9VR0hMWS5oYXModGhpcy5jdXJyZW50VGFnSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIiwgIi8vQ29uc3RcbmNvbnN0IE5PQUhfQVJLX0NBUEFDSVRZID0gMztcbmV4cG9ydCB2YXIgRW50cnlUeXBlO1xuKGZ1bmN0aW9uIChFbnRyeVR5cGUpIHtcbiAgICBFbnRyeVR5cGVbRW50cnlUeXBlW1wiTWFya2VyXCJdID0gMF0gPSBcIk1hcmtlclwiO1xuICAgIEVudHJ5VHlwZVtFbnRyeVR5cGVbXCJFbGVtZW50XCJdID0gMV0gPSBcIkVsZW1lbnRcIjtcbn0pKEVudHJ5VHlwZSB8fCAoRW50cnlUeXBlID0ge30pKTtcbmNvbnN0IE1BUktFUiA9IHsgdHlwZTogRW50cnlUeXBlLk1hcmtlciB9O1xuLy9MaXN0IG9mIGZvcm1hdHRpbmcgZWxlbWVudHNcbmV4cG9ydCBjbGFzcyBGb3JtYXR0aW5nRWxlbWVudExpc3Qge1xuICAgIGNvbnN0cnVjdG9yKHRyZWVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMudHJlZUFkYXB0ZXIgPSB0cmVlQWRhcHRlcjtcbiAgICAgICAgdGhpcy5lbnRyaWVzID0gW107XG4gICAgICAgIHRoaXMuYm9va21hcmsgPSBudWxsO1xuICAgIH1cbiAgICAvL05vYWggQXJrJ3MgY29uZGl0aW9uXG4gICAgLy9PUFRJTUlaQVRJT046IGF0IGZpcnN0IHdlIHRyeSB0byBmaW5kIHBvc3NpYmxlIGNhbmRpZGF0ZXMgZm9yIGV4Y2x1c2lvbiB1c2luZ1xuICAgIC8vbGlnaHR3ZWlnaHQgaGV1cmlzdGljcyB3aXRob3V0IHRob3JvdWdoIGF0dHJpYnV0ZXMgY2hlY2suXG4gICAgX2dldE5vYWhBcmtDb25kaXRpb25DYW5kaWRhdGVzKG5ld0VsZW1lbnQsIG5lQXR0cnMpIHtcbiAgICAgICAgY29uc3QgY2FuZGlkYXRlcyA9IFtdO1xuICAgICAgICBjb25zdCBuZUF0dHJzTGVuZ3RoID0gbmVBdHRycy5sZW5ndGg7XG4gICAgICAgIGNvbnN0IG5lVGFnTmFtZSA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShuZXdFbGVtZW50KTtcbiAgICAgICAgY29uc3QgbmVOYW1lc3BhY2VVUkkgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShuZXdFbGVtZW50KTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmVudHJpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzW2ldO1xuICAgICAgICAgICAgaWYgKGVudHJ5LnR5cGUgPT09IEVudHJ5VHlwZS5NYXJrZXIpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHsgZWxlbWVudCB9ID0gZW50cnk7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGVsZW1lbnQpID09PSBuZVRhZ05hbWUgJiZcbiAgICAgICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KSA9PT0gbmVOYW1lc3BhY2VVUkkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50QXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGlmIChlbGVtZW50QXR0cnMubGVuZ3RoID09PSBuZUF0dHJzTGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMucHVzaCh7IGlkeDogaSwgYXR0cnM6IGVsZW1lbnRBdHRycyB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZXM7XG4gICAgfVxuICAgIF9lbnN1cmVOb2FoQXJrQ29uZGl0aW9uKG5ld0VsZW1lbnQpIHtcbiAgICAgICAgaWYgKHRoaXMuZW50cmllcy5sZW5ndGggPCBOT0FIX0FSS19DQVBBQ0lUWSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbmVBdHRycyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3QobmV3RWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSB0aGlzLl9nZXROb2FoQXJrQ29uZGl0aW9uQ2FuZGlkYXRlcyhuZXdFbGVtZW50LCBuZUF0dHJzKTtcbiAgICAgICAgaWYgKGNhbmRpZGF0ZXMubGVuZ3RoIDwgTk9BSF9BUktfQ0FQQUNJVFkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIC8vTk9URTogYnVpbGQgYXR0cnMgbWFwIGZvciB0aGUgbmV3IGVsZW1lbnQsIHNvIHdlIGNhbiBwZXJmb3JtIGZhc3QgbG9va3Vwc1xuICAgICAgICBjb25zdCBuZUF0dHJzTWFwID0gbmV3IE1hcChuZUF0dHJzLm1hcCgobmVBdHRyKSA9PiBbbmVBdHRyLm5hbWUsIG5lQXR0ci52YWx1ZV0pKTtcbiAgICAgICAgbGV0IHZhbGlkQ2FuZGlkYXRlcyA9IDA7XG4gICAgICAgIC8vTk9URTogcmVtb3ZlIGJvdHRvbW1vc3QgY2FuZGlkYXRlcywgdW50aWwgTm9haCdzIEFyayBjb25kaXRpb24gd2lsbCBub3QgYmUgbWV0XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FuZGlkYXRlcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgY29uc3QgY2FuZGlkYXRlID0gY2FuZGlkYXRlc1tpXTtcbiAgICAgICAgICAgIC8vIFdlIGtub3cgdGhhdCBgY2FuZGlkYXRlLmF0dHJzLmxlbmd0aCA9PT0gbmVBdHRycy5sZW5ndGhgXG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlLmF0dHJzLmV2ZXJ5KChjQXR0cikgPT4gbmVBdHRyc01hcC5nZXQoY0F0dHIubmFtZSkgPT09IGNBdHRyLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHZhbGlkQ2FuZGlkYXRlcyArPSAxO1xuICAgICAgICAgICAgICAgIGlmICh2YWxpZENhbmRpZGF0ZXMgPj0gTk9BSF9BUktfQ0FQQUNJVFkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShjYW5kaWRhdGUuaWR4LCAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9NdXRhdGlvbnNcbiAgICBpbnNlcnRNYXJrZXIoKSB7XG4gICAgICAgIHRoaXMuZW50cmllcy51bnNoaWZ0KE1BUktFUik7XG4gICAgfVxuICAgIHB1c2hFbGVtZW50KGVsZW1lbnQsIHRva2VuKSB7XG4gICAgICAgIHRoaXMuX2Vuc3VyZU5vYWhBcmtDb25kaXRpb24oZWxlbWVudCk7XG4gICAgICAgIHRoaXMuZW50cmllcy51bnNoaWZ0KHtcbiAgICAgICAgICAgIHR5cGU6IEVudHJ5VHlwZS5FbGVtZW50LFxuICAgICAgICAgICAgZWxlbWVudCxcbiAgICAgICAgICAgIHRva2VuLFxuICAgICAgICB9KTtcbiAgICB9XG4gICAgaW5zZXJ0RWxlbWVudEFmdGVyQm9va21hcmsoZWxlbWVudCwgdG9rZW4pIHtcbiAgICAgICAgY29uc3QgYm9va21hcmtJZHggPSB0aGlzLmVudHJpZXMuaW5kZXhPZih0aGlzLmJvb2ttYXJrKTtcbiAgICAgICAgdGhpcy5lbnRyaWVzLnNwbGljZShib29rbWFya0lkeCwgMCwge1xuICAgICAgICAgICAgdHlwZTogRW50cnlUeXBlLkVsZW1lbnQsXG4gICAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgICAgdG9rZW4sXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZW1vdmVFbnRyeShlbnRyeSkge1xuICAgICAgICBjb25zdCBlbnRyeUluZGV4ID0gdGhpcy5lbnRyaWVzLmluZGV4T2YoZW50cnkpO1xuICAgICAgICBpZiAoZW50cnlJbmRleCA+PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMuc3BsaWNlKGVudHJ5SW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKlxuICAgICAqIENsZWFycyB0aGUgbGlzdCBvZiBmb3JtYXR0aW5nIGVsZW1lbnRzIHVwIHRvIHRoZSBsYXN0IG1hcmtlci5cbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvcGFyc2luZy5odG1sI2NsZWFyLXRoZS1saXN0LW9mLWFjdGl2ZS1mb3JtYXR0aW5nLWVsZW1lbnRzLXVwLXRvLXRoZS1sYXN0LW1hcmtlclxuICAgICAqL1xuICAgIGNsZWFyVG9MYXN0TWFya2VyKCkge1xuICAgICAgICBjb25zdCBtYXJrZXJJZHggPSB0aGlzLmVudHJpZXMuaW5kZXhPZihNQVJLRVIpO1xuICAgICAgICBpZiAobWFya2VySWR4ID49IDApIHtcbiAgICAgICAgICAgIHRoaXMuZW50cmllcy5zcGxpY2UoMCwgbWFya2VySWR4ICsgMSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmVudHJpZXMubGVuZ3RoID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvL1NlYXJjaFxuICAgIGdldEVsZW1lbnRFbnRyeUluU2NvcGVXaXRoVGFnTmFtZSh0YWdOYW1lKSB7XG4gICAgICAgIGNvbnN0IGVudHJ5ID0gdGhpcy5lbnRyaWVzLmZpbmQoKGVudHJ5KSA9PiBlbnRyeS50eXBlID09PSBFbnRyeVR5cGUuTWFya2VyIHx8IHRoaXMudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbnRyeS5lbGVtZW50KSA9PT0gdGFnTmFtZSk7XG4gICAgICAgIHJldHVybiBlbnRyeSAmJiBlbnRyeS50eXBlID09PSBFbnRyeVR5cGUuRWxlbWVudCA/IGVudHJ5IDogbnVsbDtcbiAgICB9XG4gICAgZ2V0RWxlbWVudEVudHJ5KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZW50cmllcy5maW5kKChlbnRyeSkgPT4gZW50cnkudHlwZSA9PT0gRW50cnlUeXBlLkVsZW1lbnQgJiYgZW50cnkuZWxlbWVudCA9PT0gZWxlbWVudCk7XG4gICAgfVxufVxuIiwgImltcG9ydCB7IERPQ1VNRU5UX01PREUgfSBmcm9tICcuLi9jb21tb24vaHRtbC5qcyc7XG5leHBvcnQgY29uc3QgZGVmYXVsdFRyZWVBZGFwdGVyID0ge1xuICAgIC8vTm9kZSBjb25zdHJ1Y3Rpb25cbiAgICBjcmVhdGVEb2N1bWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVOYW1lOiAnI2RvY3VtZW50JyxcbiAgICAgICAgICAgIG1vZGU6IERPQ1VNRU5UX01PREUuTk9fUVVJUktTLFxuICAgICAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjcmVhdGVEb2N1bWVudEZyYWdtZW50KCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnQtZnJhZ21lbnQnLFxuICAgICAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgIH07XG4gICAgfSxcbiAgICBjcmVhdGVFbGVtZW50KHRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgYXR0cnMpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5vZGVOYW1lOiB0YWdOYW1lLFxuICAgICAgICAgICAgdGFnTmFtZSxcbiAgICAgICAgICAgIGF0dHJzLFxuICAgICAgICAgICAgbmFtZXNwYWNlVVJJLFxuICAgICAgICAgICAgY2hpbGROb2RlczogW10sXG4gICAgICAgICAgICBwYXJlbnROb2RlOiBudWxsLFxuICAgICAgICB9O1xuICAgIH0sXG4gICAgY3JlYXRlQ29tbWVudE5vZGUoZGF0YSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbm9kZU5hbWU6ICcjY29tbWVudCcsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIGNyZWF0ZVRleHROb2RlKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBub2RlTmFtZTogJyN0ZXh0JyxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgcGFyZW50Tm9kZTogbnVsbCxcbiAgICAgICAgfTtcbiAgICB9LFxuICAgIC8vVHJlZSBtdXRhdGlvblxuICAgIGFwcGVuZENoaWxkKHBhcmVudE5vZGUsIG5ld05vZGUpIHtcbiAgICAgICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnB1c2gobmV3Tm9kZSk7XG4gICAgICAgIG5ld05vZGUucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7XG4gICAgfSxcbiAgICBpbnNlcnRCZWZvcmUocGFyZW50Tm9kZSwgbmV3Tm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICAgICAgICBjb25zdCBpbnNlcnRpb25JZHggPSBwYXJlbnROb2RlLmNoaWxkTm9kZXMuaW5kZXhPZihyZWZlcmVuY2VOb2RlKTtcbiAgICAgICAgcGFyZW50Tm9kZS5jaGlsZE5vZGVzLnNwbGljZShpbnNlcnRpb25JZHgsIDAsIG5ld05vZGUpO1xuICAgICAgICBuZXdOb2RlLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlO1xuICAgIH0sXG4gICAgc2V0VGVtcGxhdGVDb250ZW50KHRlbXBsYXRlRWxlbWVudCwgY29udGVudEVsZW1lbnQpIHtcbiAgICAgICAgdGVtcGxhdGVFbGVtZW50LmNvbnRlbnQgPSBjb250ZW50RWxlbWVudDtcbiAgICB9LFxuICAgIGdldFRlbXBsYXRlQ29udGVudCh0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlRWxlbWVudC5jb250ZW50O1xuICAgIH0sXG4gICAgc2V0RG9jdW1lbnRUeXBlKGRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpIHtcbiAgICAgICAgY29uc3QgZG9jdHlwZU5vZGUgPSBkb2N1bWVudC5jaGlsZE5vZGVzLmZpbmQoKG5vZGUpID0+IG5vZGUubm9kZU5hbWUgPT09ICcjZG9jdW1lbnRUeXBlJyk7XG4gICAgICAgIGlmIChkb2N0eXBlTm9kZSkge1xuICAgICAgICAgICAgZG9jdHlwZU5vZGUubmFtZSA9IG5hbWU7XG4gICAgICAgICAgICBkb2N0eXBlTm9kZS5wdWJsaWNJZCA9IHB1YmxpY0lkO1xuICAgICAgICAgICAgZG9jdHlwZU5vZGUuc3lzdGVtSWQgPSBzeXN0ZW1JZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IG5vZGUgPSB7XG4gICAgICAgICAgICAgICAgbm9kZU5hbWU6ICcjZG9jdW1lbnRUeXBlJyxcbiAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgIHB1YmxpY0lkLFxuICAgICAgICAgICAgICAgIHN5c3RlbUlkLFxuICAgICAgICAgICAgICAgIHBhcmVudE5vZGU6IG51bGwsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGVmYXVsdFRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGRvY3VtZW50LCBub2RlKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgc2V0RG9jdW1lbnRNb2RlKGRvY3VtZW50LCBtb2RlKSB7XG4gICAgICAgIGRvY3VtZW50Lm1vZGUgPSBtb2RlO1xuICAgIH0sXG4gICAgZ2V0RG9jdW1lbnRNb2RlKGRvY3VtZW50KSB7XG4gICAgICAgIHJldHVybiBkb2N1bWVudC5tb2RlO1xuICAgIH0sXG4gICAgZGV0YWNoTm9kZShub2RlKSB7XG4gICAgICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IG5vZGUucGFyZW50Tm9kZS5jaGlsZE5vZGVzLmluZGV4T2Yobm9kZSk7XG4gICAgICAgICAgICBub2RlLnBhcmVudE5vZGUuY2hpbGROb2Rlcy5zcGxpY2UoaWR4LCAxKTtcbiAgICAgICAgICAgIG5vZGUucGFyZW50Tm9kZSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9LFxuICAgIGluc2VydFRleHQocGFyZW50Tm9kZSwgdGV4dCkge1xuICAgICAgICBpZiAocGFyZW50Tm9kZS5jaGlsZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzW3BhcmVudE5vZGUuY2hpbGROb2Rlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGlmIChkZWZhdWx0VHJlZUFkYXB0ZXIuaXNUZXh0Tm9kZShwcmV2Tm9kZSkpIHtcbiAgICAgICAgICAgICAgICBwcmV2Tm9kZS52YWx1ZSArPSB0ZXh0O1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0VHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQocGFyZW50Tm9kZSwgZGVmYXVsdFRyZWVBZGFwdGVyLmNyZWF0ZVRleHROb2RlKHRleHQpKTtcbiAgICB9LFxuICAgIGluc2VydFRleHRCZWZvcmUocGFyZW50Tm9kZSwgdGV4dCwgcmVmZXJlbmNlTm9kZSkge1xuICAgICAgICBjb25zdCBwcmV2Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1twYXJlbnROb2RlLmNoaWxkTm9kZXMuaW5kZXhPZihyZWZlcmVuY2VOb2RlKSAtIDFdO1xuICAgICAgICBpZiAocHJldk5vZGUgJiYgZGVmYXVsdFRyZWVBZGFwdGVyLmlzVGV4dE5vZGUocHJldk5vZGUpKSB7XG4gICAgICAgICAgICBwcmV2Tm9kZS52YWx1ZSArPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZGVmYXVsdFRyZWVBZGFwdGVyLmluc2VydEJlZm9yZShwYXJlbnROb2RlLCBkZWZhdWx0VHJlZUFkYXB0ZXIuY3JlYXRlVGV4dE5vZGUodGV4dCksIHJlZmVyZW5jZU5vZGUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhZG9wdEF0dHJpYnV0ZXMocmVjaXBpZW50LCBhdHRycykge1xuICAgICAgICBjb25zdCByZWNpcGllbnRBdHRyc01hcCA9IG5ldyBTZXQocmVjaXBpZW50LmF0dHJzLm1hcCgoYXR0cikgPT4gYXR0ci5uYW1lKSk7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICAgIGlmICghcmVjaXBpZW50QXR0cnNNYXAuaGFzKGF0dHJzW2pdLm5hbWUpKSB7XG4gICAgICAgICAgICAgICAgcmVjaXBpZW50LmF0dHJzLnB1c2goYXR0cnNbal0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSxcbiAgICAvL1RyZWUgdHJhdmVyc2luZ1xuICAgIGdldEZpcnN0Q2hpbGQobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgIH0sXG4gICAgZ2V0Q2hpbGROb2Rlcyhub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLmNoaWxkTm9kZXM7XG4gICAgfSxcbiAgICBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50Tm9kZTtcbiAgICB9LFxuICAgIGdldEF0dHJMaXN0KGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQuYXR0cnM7XG4gICAgfSxcbiAgICAvL05vZGUgZGF0YVxuICAgIGdldFRhZ05hbWUoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC50YWdOYW1lO1xuICAgIH0sXG4gICAgZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQubmFtZXNwYWNlVVJJO1xuICAgIH0sXG4gICAgZ2V0VGV4dE5vZGVDb250ZW50KHRleHROb2RlKSB7XG4gICAgICAgIHJldHVybiB0ZXh0Tm9kZS52YWx1ZTtcbiAgICB9LFxuICAgIGdldENvbW1lbnROb2RlQ29udGVudChjb21tZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gY29tbWVudE5vZGUuZGF0YTtcbiAgICB9LFxuICAgIGdldERvY3VtZW50VHlwZU5vZGVOYW1lKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIHJldHVybiBkb2N0eXBlTm9kZS5uYW1lO1xuICAgIH0sXG4gICAgZ2V0RG9jdW1lbnRUeXBlTm9kZVB1YmxpY0lkKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIHJldHVybiBkb2N0eXBlTm9kZS5wdWJsaWNJZDtcbiAgICB9LFxuICAgIGdldERvY3VtZW50VHlwZU5vZGVTeXN0ZW1JZChkb2N0eXBlTm9kZSkge1xuICAgICAgICByZXR1cm4gZG9jdHlwZU5vZGUuc3lzdGVtSWQ7XG4gICAgfSxcbiAgICAvL05vZGUgdHlwZXNcbiAgICBpc1RleHROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjdGV4dCc7XG4gICAgfSxcbiAgICBpc0NvbW1lbnROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUubm9kZU5hbWUgPT09ICcjY29tbWVudCc7XG4gICAgfSxcbiAgICBpc0RvY3VtZW50VHlwZU5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gbm9kZS5ub2RlTmFtZSA9PT0gJyNkb2N1bWVudFR5cGUnO1xuICAgIH0sXG4gICAgaXNFbGVtZW50Tm9kZShub2RlKSB7XG4gICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobm9kZSwgJ3RhZ05hbWUnKTtcbiAgICB9LFxuICAgIC8vIFNvdXJjZSBjb2RlIGxvY2F0aW9uXG4gICAgc2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihub2RlLCBsb2NhdGlvbikge1xuICAgICAgICBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA9IGxvY2F0aW9uO1xuICAgIH0sXG4gICAgZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihub2RlKSB7XG4gICAgICAgIHJldHVybiBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbjtcbiAgICB9LFxuICAgIHVwZGF0ZU5vZGVTb3VyY2VDb2RlTG9jYXRpb24obm9kZSwgZW5kTG9jYXRpb24pIHtcbiAgICAgICAgbm9kZS5zb3VyY2VDb2RlTG9jYXRpb24gPSB7IC4uLm5vZGUuc291cmNlQ29kZUxvY2F0aW9uLCAuLi5lbmRMb2NhdGlvbiB9O1xuICAgIH0sXG59O1xuIiwgImltcG9ydCB7IERPQ1VNRU5UX01PREUgfSBmcm9tICcuL2h0bWwuanMnO1xuLy9Db25zdFxuY29uc3QgVkFMSURfRE9DVFlQRV9OQU1FID0gJ2h0bWwnO1xuY29uc3QgVkFMSURfU1lTVEVNX0lEID0gJ2Fib3V0OmxlZ2FjeS1jb21wYXQnO1xuY29uc3QgUVVJUktTX01PREVfU1lTVEVNX0lEID0gJ2h0dHA6Ly93d3cuaWJtLmNvbS9kYXRhL2R0ZC92MTEvaWJteGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnO1xuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTID0gW1xuICAgICcrLy9zaWxtYXJpbC8vZHRkIGh0bWwgcHJvIHYwcjExIDE5OTcwMTAxLy8nLFxuICAgICctLy9hcy8vZHRkIGh0bWwgMy4wIGFzd2VkaXQgKyBleHRlbnNpb25zLy8nLFxuICAgICctLy9hZHZhc29mdCBsdGQvL2R0ZCBodG1sIDMuMCBhc3dlZGl0ICsgZXh0ZW5zaW9ucy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjAgc3RyaWN0IGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDIuMCBzdHJpY3QgbGV2ZWwgMi8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wIHN0cmljdC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMi4wLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAyLjFlLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLjAvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIDMuMiBmaW5hbC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgMy4yLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAwLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAxLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBsZXZlbCAzLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMC8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0IGxldmVsIDEvLycsXG4gICAgJy0vL2lldGYvL2R0ZCBodG1sIHN0cmljdCBsZXZlbCAyLy8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbCBzdHJpY3QgbGV2ZWwgMy8vJyxcbiAgICAnLS8vaWV0Zi8vZHRkIGh0bWwgc3RyaWN0Ly8nLFxuICAgICctLy9pZXRmLy9kdGQgaHRtbC8vJyxcbiAgICAnLS8vbWV0cml1cy8vZHRkIG1ldHJpdXMgcHJlc2VudGF0aW9uYWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCBodG1sIHN0cmljdC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMi4wIGh0bWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDIuMCB0YWJsZXMvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCBodG1sIHN0cmljdC8vJyxcbiAgICAnLS8vbWljcm9zb2Z0Ly9kdGQgaW50ZXJuZXQgZXhwbG9yZXIgMy4wIGh0bWwvLycsXG4gICAgJy0vL21pY3Jvc29mdC8vZHRkIGludGVybmV0IGV4cGxvcmVyIDMuMCB0YWJsZXMvLycsXG4gICAgJy0vL25ldHNjYXBlIGNvbW0uIGNvcnAuLy9kdGQgaHRtbC8vJyxcbiAgICAnLS8vbmV0c2NhcGUgY29tbS4gY29ycC4vL2R0ZCBzdHJpY3QgaHRtbC8vJyxcbiAgICBcIi0vL28ncmVpbGx5IGFuZCBhc3NvY2lhdGVzLy9kdGQgaHRtbCAyLjAvL1wiLFxuICAgIFwiLS8vbydyZWlsbHkgYW5kIGFzc29jaWF0ZXMvL2R0ZCBodG1sIGV4dGVuZGVkIDEuMC8vXCIsXG4gICAgXCItLy9vJ3JlaWxseSBhbmQgYXNzb2NpYXRlcy8vZHRkIGh0bWwgZXh0ZW5kZWQgcmVsYXhlZCAxLjAvL1wiLFxuICAgICctLy9zcS8vZHRkIGh0bWwgMi4wIGhvdG1ldGFsICsgZXh0ZW5zaW9ucy8vJyxcbiAgICAnLS8vc29mdHF1YWQgc29mdHdhcmUvL2R0ZCBob3RtZXRhbCBwcm8gNi4wOjoxOTk5MDYwMTo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vJyxcbiAgICAnLS8vc29mdHF1YWQvL2R0ZCBob3RtZXRhbCBwcm8gNC4wOjoxOTk3MTAxMDo6ZXh0ZW5zaW9ucyB0byBodG1sIDQuMC8vJyxcbiAgICAnLS8vc3B5Z2xhc3MvL2R0ZCBodG1sIDIuMCBleHRlbmRlZC8vJyxcbiAgICAnLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8vZHRkIGhvdGphdmEgaHRtbC8vJyxcbiAgICAnLS8vc3VuIG1pY3Jvc3lzdGVtcyBjb3JwLi8vZHRkIGhvdGphdmEgc3RyaWN0IGh0bWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMyAxOTk1LTAzLTI0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMiBkcmFmdC8vJyxcbiAgICAnLS8vdzNjLy9kdGQgaHRtbCAzLjIgZmluYWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgMy4yLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDMuMnMgZHJhZnQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wIGZyYW1lc2V0Ly8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgZXhwZXJpbWVudGFsIDE5OTYwNzEyLy8nLFxuICAgICctLy93M2MvL2R0ZCBodG1sIGV4cGVyaW1lbnRhbCA5NzA0MjEvLycsXG4gICAgJy0vL3czYy8vZHRkIHczIGh0bWwvLycsXG4gICAgJy0vL3czby8vZHRkIHczIGh0bWwgMy4wLy8nLFxuICAgICctLy93ZWJ0ZWNocy8vZHRkIG1vemlsbGEgaHRtbCAyLjAvLycsXG4gICAgJy0vL3dlYnRlY2hzLy9kdGQgbW96aWxsYSBodG1sLy8nLFxuXTtcbmNvbnN0IFFVSVJLU19NT0RFX05PX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgLi4uUVVJUktTX01PREVfUFVCTElDX0lEX1BSRUZJWEVTLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLycsXG5dO1xuY29uc3QgUVVJUktTX01PREVfUFVCTElDX0lEUyA9IG5ldyBTZXQoW1xuICAgICctLy93M28vL2R0ZCB3MyBodG1sIHN0cmljdCAzLjAvL2VuLy8nLFxuICAgICctL3czYy9kdGQgaHRtbCA0LjAgdHJhbnNpdGlvbmFsL2VuJyxcbiAgICAnaHRtbCcsXG5dKTtcbmNvbnN0IExJTUlURURfUVVJUktTX1BVQkxJQ19JRF9QUkVGSVhFUyA9IFsnLS8vdzNjLy9kdGQgeGh0bWwgMS4wIGZyYW1lc2V0Ly8nLCAnLS8vdzNjLy9kdGQgeGh0bWwgMS4wIHRyYW5zaXRpb25hbC8vJ107XG5jb25zdCBMSU1JVEVEX1FVSVJLU19XSVRIX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVMgPSBbXG4gICAgLi4uTElNSVRFRF9RVUlSS1NfUFVCTElDX0lEX1BSRUZJWEVTLFxuICAgICctLy93M2MvL2R0ZCBodG1sIDQuMDEgZnJhbWVzZXQvLycsXG4gICAgJy0vL3czYy8vZHRkIGh0bWwgNC4wMSB0cmFuc2l0aW9uYWwvLycsXG5dO1xuLy9VdGlsc1xuZnVuY3Rpb24gaGFzUHJlZml4KHB1YmxpY0lkLCBwcmVmaXhlcykge1xuICAgIHJldHVybiBwcmVmaXhlcy5zb21lKChwcmVmaXgpID0+IHB1YmxpY0lkLnN0YXJ0c1dpdGgocHJlZml4KSk7XG59XG4vL0FQSVxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29uZm9ybWluZyh0b2tlbikge1xuICAgIHJldHVybiAodG9rZW4ubmFtZSA9PT0gVkFMSURfRE9DVFlQRV9OQU1FICYmXG4gICAgICAgIHRva2VuLnB1YmxpY0lkID09PSBudWxsICYmXG4gICAgICAgICh0b2tlbi5zeXN0ZW1JZCA9PT0gbnVsbCB8fCB0b2tlbi5zeXN0ZW1JZCA9PT0gVkFMSURfU1lTVEVNX0lEKSk7XG59XG5leHBvcnQgZnVuY3Rpb24gZ2V0RG9jdW1lbnRNb2RlKHRva2VuKSB7XG4gICAgaWYgKHRva2VuLm5hbWUgIT09IFZBTElEX0RPQ1RZUEVfTkFNRSkge1xuICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG4gICAgfVxuICAgIGNvbnN0IHsgc3lzdGVtSWQgfSA9IHRva2VuO1xuICAgIGlmIChzeXN0ZW1JZCAmJiBzeXN0ZW1JZC50b0xvd2VyQ2FzZSgpID09PSBRVUlSS1NfTU9ERV9TWVNURU1fSUQpIHtcbiAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgIH1cbiAgICBsZXQgeyBwdWJsaWNJZCB9ID0gdG9rZW47XG4gICAgaWYgKHB1YmxpY0lkICE9PSBudWxsKSB7XG4gICAgICAgIHB1YmxpY0lkID0gcHVibGljSWQudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFFVSVJLU19NT0RFX1BVQkxJQ19JRFMuaGFzKHB1YmxpY0lkKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuUVVJUktTO1xuICAgICAgICB9XG4gICAgICAgIGxldCBwcmVmaXhlcyA9IHN5c3RlbUlkID09PSBudWxsID8gUVVJUktTX01PREVfTk9fU1lTVEVNX0lEX1BVQkxJQ19JRF9QUkVGSVhFUyA6IFFVSVJLU19NT0RFX1BVQkxJQ19JRF9QUkVGSVhFUztcbiAgICAgICAgaWYgKGhhc1ByZWZpeChwdWJsaWNJZCwgcHJlZml4ZXMpKSB7XG4gICAgICAgICAgICByZXR1cm4gRE9DVU1FTlRfTU9ERS5RVUlSS1M7XG4gICAgICAgIH1cbiAgICAgICAgcHJlZml4ZXMgPVxuICAgICAgICAgICAgc3lzdGVtSWQgPT09IG51bGwgPyBMSU1JVEVEX1FVSVJLU19QVUJMSUNfSURfUFJFRklYRVMgOiBMSU1JVEVEX1FVSVJLU19XSVRIX1NZU1RFTV9JRF9QVUJMSUNfSURfUFJFRklYRVM7XG4gICAgICAgIGlmIChoYXNQcmVmaXgocHVibGljSWQsIHByZWZpeGVzKSkge1xuICAgICAgICAgICAgcmV0dXJuIERPQ1VNRU5UX01PREUuTElNSVRFRF9RVUlSS1M7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIERPQ1VNRU5UX01PREUuTk9fUVVJUktTO1xufVxuIiwgImltcG9ydCB7IFRBR19JRCBhcyAkLCBOUywgQVRUUlMsIGdldFRhZ0lEIH0gZnJvbSAnLi9odG1sLmpzJztcbi8vTUlNRSB0eXBlc1xuY29uc3QgTUlNRV9UWVBFUyA9IHtcbiAgICBURVhUX0hUTUw6ICd0ZXh0L2h0bWwnLFxuICAgIEFQUExJQ0FUSU9OX1hNTDogJ2FwcGxpY2F0aW9uL3hodG1sK3htbCcsXG59O1xuLy9BdHRyaWJ1dGVzXG5jb25zdCBERUZJTklUSU9OX1VSTF9BVFRSID0gJ2RlZmluaXRpb251cmwnO1xuY29uc3QgQURKVVNURURfREVGSU5JVElPTl9VUkxfQVRUUiA9ICdkZWZpbml0aW9uVVJMJztcbmNvbnN0IFNWR19BVFRSU19BREpVU1RNRU5UX01BUCA9IG5ldyBNYXAoW1xuICAgICdhdHRyaWJ1dGVOYW1lJyxcbiAgICAnYXR0cmlidXRlVHlwZScsXG4gICAgJ2Jhc2VGcmVxdWVuY3knLFxuICAgICdiYXNlUHJvZmlsZScsXG4gICAgJ2NhbGNNb2RlJyxcbiAgICAnY2xpcFBhdGhVbml0cycsXG4gICAgJ2RpZmZ1c2VDb25zdGFudCcsXG4gICAgJ2VkZ2VNb2RlJyxcbiAgICAnZmlsdGVyVW5pdHMnLFxuICAgICdnbHlwaFJlZicsXG4gICAgJ2dyYWRpZW50VHJhbnNmb3JtJyxcbiAgICAnZ3JhZGllbnRVbml0cycsXG4gICAgJ2tlcm5lbE1hdHJpeCcsXG4gICAgJ2tlcm5lbFVuaXRMZW5ndGgnLFxuICAgICdrZXlQb2ludHMnLFxuICAgICdrZXlTcGxpbmVzJyxcbiAgICAna2V5VGltZXMnLFxuICAgICdsZW5ndGhBZGp1c3QnLFxuICAgICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gICAgJ21hcmtlckhlaWdodCcsXG4gICAgJ21hcmtlclVuaXRzJyxcbiAgICAnbWFya2VyV2lkdGgnLFxuICAgICdtYXNrQ29udGVudFVuaXRzJyxcbiAgICAnbWFza1VuaXRzJyxcbiAgICAnbnVtT2N0YXZlcycsXG4gICAgJ3BhdGhMZW5ndGgnLFxuICAgICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgICAncGF0dGVyblRyYW5zZm9ybScsXG4gICAgJ3BhdHRlcm5Vbml0cycsXG4gICAgJ3BvaW50c0F0WCcsXG4gICAgJ3BvaW50c0F0WScsXG4gICAgJ3BvaW50c0F0WicsXG4gICAgJ3ByZXNlcnZlQWxwaGEnLFxuICAgICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbiAgICAncHJpbWl0aXZlVW5pdHMnLFxuICAgICdyZWZYJyxcbiAgICAncmVmWScsXG4gICAgJ3JlcGVhdENvdW50JyxcbiAgICAncmVwZWF0RHVyJyxcbiAgICAncmVxdWlyZWRFeHRlbnNpb25zJyxcbiAgICAncmVxdWlyZWRGZWF0dXJlcycsXG4gICAgJ3NwZWN1bGFyQ29uc3RhbnQnLFxuICAgICdzcGVjdWxhckV4cG9uZW50JyxcbiAgICAnc3ByZWFkTWV0aG9kJyxcbiAgICAnc3RhcnRPZmZzZXQnLFxuICAgICdzdGREZXZpYXRpb24nLFxuICAgICdzdGl0Y2hUaWxlcycsXG4gICAgJ3N1cmZhY2VTY2FsZScsXG4gICAgJ3N5c3RlbUxhbmd1YWdlJyxcbiAgICAndGFibGVWYWx1ZXMnLFxuICAgICd0YXJnZXRYJyxcbiAgICAndGFyZ2V0WScsXG4gICAgJ3RleHRMZW5ndGgnLFxuICAgICd2aWV3Qm94JyxcbiAgICAndmlld1RhcmdldCcsXG4gICAgJ3hDaGFubmVsU2VsZWN0b3InLFxuICAgICd5Q2hhbm5lbFNlbGVjdG9yJyxcbiAgICAnem9vbUFuZFBhbicsXG5dLm1hcCgoYXR0cikgPT4gW2F0dHIudG9Mb3dlckNhc2UoKSwgYXR0cl0pKTtcbmNvbnN0IFhNTF9BVFRSU19BREpVU1RNRU5UX01BUCA9IG5ldyBNYXAoW1xuICAgIFsneGxpbms6YWN0dWF0ZScsIHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAnYWN0dWF0ZScsIG5hbWVzcGFjZTogTlMuWExJTksgfV0sXG4gICAgWyd4bGluazphcmNyb2xlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdhcmNyb2xlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3hsaW5rOmhyZWYnLCB7IHByZWZpeDogJ3hsaW5rJywgbmFtZTogJ2hyZWYnLCBuYW1lc3BhY2U6IE5TLlhMSU5LIH1dLFxuICAgIFsneGxpbms6cm9sZScsIHsgcHJlZml4OiAneGxpbmsnLCBuYW1lOiAncm9sZScsIG5hbWVzcGFjZTogTlMuWExJTksgfV0sXG4gICAgWyd4bGluazpzaG93JywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICdzaG93JywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3hsaW5rOnRpdGxlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0aXRsZScsIG5hbWVzcGFjZTogTlMuWExJTksgfV0sXG4gICAgWyd4bGluazp0eXBlJywgeyBwcmVmaXg6ICd4bGluaycsIG5hbWU6ICd0eXBlJywgbmFtZXNwYWNlOiBOUy5YTElOSyB9XSxcbiAgICBbJ3htbDpsYW5nJywgeyBwcmVmaXg6ICd4bWwnLCBuYW1lOiAnbGFuZycsIG5hbWVzcGFjZTogTlMuWE1MIH1dLFxuICAgIFsneG1sOnNwYWNlJywgeyBwcmVmaXg6ICd4bWwnLCBuYW1lOiAnc3BhY2UnLCBuYW1lc3BhY2U6IE5TLlhNTCB9XSxcbiAgICBbJ3htbG5zJywgeyBwcmVmaXg6ICcnLCBuYW1lOiAneG1sbnMnLCBuYW1lc3BhY2U6IE5TLlhNTE5TIH1dLFxuICAgIFsneG1sbnM6eGxpbmsnLCB7IHByZWZpeDogJ3htbG5zJywgbmFtZTogJ3hsaW5rJywgbmFtZXNwYWNlOiBOUy5YTUxOUyB9XSxcbl0pO1xuLy9TVkcgdGFnIG5hbWVzIGFkanVzdG1lbnQgbWFwXG5leHBvcnQgY29uc3QgU1ZHX1RBR19OQU1FU19BREpVU1RNRU5UX01BUCA9IG5ldyBNYXAoW1xuICAgICdhbHRHbHlwaCcsXG4gICAgJ2FsdEdseXBoRGVmJyxcbiAgICAnYWx0R2x5cGhJdGVtJyxcbiAgICAnYW5pbWF0ZUNvbG9yJyxcbiAgICAnYW5pbWF0ZU1vdGlvbicsXG4gICAgJ2FuaW1hdGVUcmFuc2Zvcm0nLFxuICAgICdjbGlwUGF0aCcsXG4gICAgJ2ZlQmxlbmQnLFxuICAgICdmZUNvbG9yTWF0cml4JyxcbiAgICAnZmVDb21wb25lbnRUcmFuc2ZlcicsXG4gICAgJ2ZlQ29tcG9zaXRlJyxcbiAgICAnZmVDb252b2x2ZU1hdHJpeCcsXG4gICAgJ2ZlRGlmZnVzZUxpZ2h0aW5nJyxcbiAgICAnZmVEaXNwbGFjZW1lbnRNYXAnLFxuICAgICdmZURpc3RhbnRMaWdodCcsXG4gICAgJ2ZlRmxvb2QnLFxuICAgICdmZUZ1bmNBJyxcbiAgICAnZmVGdW5jQicsXG4gICAgJ2ZlRnVuY0cnLFxuICAgICdmZUZ1bmNSJyxcbiAgICAnZmVHYXVzc2lhbkJsdXInLFxuICAgICdmZUltYWdlJyxcbiAgICAnZmVNZXJnZScsXG4gICAgJ2ZlTWVyZ2VOb2RlJyxcbiAgICAnZmVNb3JwaG9sb2d5JyxcbiAgICAnZmVPZmZzZXQnLFxuICAgICdmZVBvaW50TGlnaHQnLFxuICAgICdmZVNwZWN1bGFyTGlnaHRpbmcnLFxuICAgICdmZVNwb3RMaWdodCcsXG4gICAgJ2ZlVGlsZScsXG4gICAgJ2ZlVHVyYnVsZW5jZScsXG4gICAgJ2ZvcmVpZ25PYmplY3QnLFxuICAgICdnbHlwaFJlZicsXG4gICAgJ2xpbmVhckdyYWRpZW50JyxcbiAgICAncmFkaWFsR3JhZGllbnQnLFxuICAgICd0ZXh0UGF0aCcsXG5dLm1hcCgodG4pID0+IFt0bi50b0xvd2VyQ2FzZSgpLCB0bl0pKTtcbi8vVGFncyB0aGF0IGNhdXNlcyBleGl0IGZyb20gZm9yZWlnbiBjb250ZW50XG5jb25zdCBFWElUU19GT1JFSUdOX0NPTlRFTlQgPSBuZXcgU2V0KFtcbiAgICAkLkIsXG4gICAgJC5CSUcsXG4gICAgJC5CTE9DS1FVT1RFLFxuICAgICQuQk9EWSxcbiAgICAkLkJSLFxuICAgICQuQ0VOVEVSLFxuICAgICQuQ09ERSxcbiAgICAkLkRELFxuICAgICQuRElWLFxuICAgICQuREwsXG4gICAgJC5EVCxcbiAgICAkLkVNLFxuICAgICQuRU1CRUQsXG4gICAgJC5IMSxcbiAgICAkLkgyLFxuICAgICQuSDMsXG4gICAgJC5INCxcbiAgICAkLkg1LFxuICAgICQuSDYsXG4gICAgJC5IRUFELFxuICAgICQuSFIsXG4gICAgJC5JLFxuICAgICQuSU1HLFxuICAgICQuTEksXG4gICAgJC5MSVNUSU5HLFxuICAgICQuTUVOVSxcbiAgICAkLk1FVEEsXG4gICAgJC5OT0JSLFxuICAgICQuT0wsXG4gICAgJC5QLFxuICAgICQuUFJFLFxuICAgICQuUlVCWSxcbiAgICAkLlMsXG4gICAgJC5TTUFMTCxcbiAgICAkLlNQQU4sXG4gICAgJC5TVFJPTkcsXG4gICAgJC5TVFJJS0UsXG4gICAgJC5TVUIsXG4gICAgJC5TVVAsXG4gICAgJC5UQUJMRSxcbiAgICAkLlRULFxuICAgICQuVSxcbiAgICAkLlVMLFxuICAgICQuVkFSLFxuXSk7XG4vL0NoZWNrIGV4aXQgZnJvbSBmb3JlaWduIGNvbnRlbnRcbmV4cG9ydCBmdW5jdGlvbiBjYXVzZXNFeGl0KHN0YXJ0VGFnVG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHN0YXJ0VGFnVG9rZW4udGFnSUQ7XG4gICAgY29uc3QgaXNGb250V2l0aEF0dHJzID0gdG4gPT09ICQuRk9OVCAmJlxuICAgICAgICBzdGFydFRhZ1Rva2VuLmF0dHJzLnNvbWUoKHsgbmFtZSB9KSA9PiBuYW1lID09PSBBVFRSUy5DT0xPUiB8fCBuYW1lID09PSBBVFRSUy5TSVpFIHx8IG5hbWUgPT09IEFUVFJTLkZBQ0UpO1xuICAgIHJldHVybiBpc0ZvbnRXaXRoQXR0cnMgfHwgRVhJVFNfRk9SRUlHTl9DT05URU5ULmhhcyh0bik7XG59XG4vL1Rva2VuIGFkanVzdG1lbnRzXG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VG9rZW5NYXRoTUxBdHRycyh0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKHRva2VuLmF0dHJzW2ldLm5hbWUgPT09IERFRklOSVRJT05fVVJMX0FUVFIpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBBREpVU1RFRF9ERUZJTklUSU9OX1VSTF9BVFRSO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gYWRqdXN0VG9rZW5TVkdBdHRycyh0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW4uYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgY29uc3QgYWRqdXN0ZWRBdHRyTmFtZSA9IFNWR19BVFRSU19BREpVU1RNRU5UX01BUC5nZXQodG9rZW4uYXR0cnNbaV0ubmFtZSk7XG4gICAgICAgIGlmIChhZGp1c3RlZEF0dHJOYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWUgPSBhZGp1c3RlZEF0dHJOYW1lO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGFkanVzdFRva2VuWE1MQXR0cnModG9rZW4pIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2VuLmF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGFkanVzdGVkQXR0ckVudHJ5ID0gWE1MX0FUVFJTX0FESlVTVE1FTlRfTUFQLmdldCh0b2tlbi5hdHRyc1tpXS5uYW1lKTtcbiAgICAgICAgaWYgKGFkanVzdGVkQXR0ckVudHJ5KSB7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5wcmVmaXggPSBhZGp1c3RlZEF0dHJFbnRyeS5wcmVmaXg7XG4gICAgICAgICAgICB0b2tlbi5hdHRyc1tpXS5uYW1lID0gYWRqdXN0ZWRBdHRyRW50cnkubmFtZTtcbiAgICAgICAgICAgIHRva2VuLmF0dHJzW2ldLm5hbWVzcGFjZSA9IGFkanVzdGVkQXR0ckVudHJ5Lm5hbWVzcGFjZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBhZGp1c3RUb2tlblNWR1RhZ05hbWUodG9rZW4pIHtcbiAgICBjb25zdCBhZGp1c3RlZFRhZ05hbWUgPSBTVkdfVEFHX05BTUVTX0FESlVTVE1FTlRfTUFQLmdldCh0b2tlbi50YWdOYW1lKTtcbiAgICBpZiAoYWRqdXN0ZWRUYWdOYW1lICE9IG51bGwpIHtcbiAgICAgICAgdG9rZW4udGFnTmFtZSA9IGFkanVzdGVkVGFnTmFtZTtcbiAgICAgICAgdG9rZW4udGFnSUQgPSBnZXRUYWdJRCh0b2tlbi50YWdOYW1lKTtcbiAgICB9XG59XG4vL0ludGVncmF0aW9uIHBvaW50c1xuZnVuY3Rpb24gaXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCh0biwgbnMpIHtcbiAgICByZXR1cm4gbnMgPT09IE5TLk1BVEhNTCAmJiAodG4gPT09ICQuTUkgfHwgdG4gPT09ICQuTU8gfHwgdG4gPT09ICQuTU4gfHwgdG4gPT09ICQuTVMgfHwgdG4gPT09ICQuTVRFWFQpO1xufVxuZnVuY3Rpb24gaXNIdG1sSW50ZWdyYXRpb25Qb2ludCh0biwgbnMsIGF0dHJzKSB7XG4gICAgaWYgKG5zID09PSBOUy5NQVRITUwgJiYgdG4gPT09ICQuQU5OT1RBVElPTl9YTUwpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhdHRycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGF0dHJzW2ldLm5hbWUgPT09IEFUVFJTLkVOQ09ESU5HKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhdHRyc1tpXS52YWx1ZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA9PT0gTUlNRV9UWVBFUy5URVhUX0hUTUwgfHwgdmFsdWUgPT09IE1JTUVfVFlQRVMuQVBQTElDQVRJT05fWE1MO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBucyA9PT0gTlMuU1ZHICYmICh0biA9PT0gJC5GT1JFSUdOX09CSkVDVCB8fCB0biA9PT0gJC5ERVNDIHx8IHRuID09PSAkLlRJVExFKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVncmF0aW9uUG9pbnQodG4sIG5zLCBhdHRycywgZm9yZWlnbk5TKSB7XG4gICAgcmV0dXJuICgoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5IVE1MKSAmJiBpc0h0bWxJbnRlZ3JhdGlvblBvaW50KHRuLCBucywgYXR0cnMpKSB8fFxuICAgICAgICAoKCFmb3JlaWduTlMgfHwgZm9yZWlnbk5TID09PSBOUy5NQVRITUwpICYmIGlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQodG4sIG5zKSkpO1xufVxuIiwgImltcG9ydCB7IFRva2VuaXplciwgVG9rZW5pemVyTW9kZSB9IGZyb20gJy4uL3Rva2VuaXplci9pbmRleC5qcyc7XG5pbXBvcnQgeyBPcGVuRWxlbWVudFN0YWNrIH0gZnJvbSAnLi9vcGVuLWVsZW1lbnQtc3RhY2suanMnO1xuaW1wb3J0IHsgRm9ybWF0dGluZ0VsZW1lbnRMaXN0LCBFbnRyeVR5cGUgfSBmcm9tICcuL2Zvcm1hdHRpbmctZWxlbWVudC1saXN0LmpzJztcbmltcG9ydCB7IGRlZmF1bHRUcmVlQWRhcHRlciB9IGZyb20gJy4uL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyc7XG5pbXBvcnQgKiBhcyBkb2N0eXBlIGZyb20gJy4uL2NvbW1vbi9kb2N0eXBlLmpzJztcbmltcG9ydCAqIGFzIGZvcmVpZ25Db250ZW50IGZyb20gJy4uL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanMnO1xuaW1wb3J0IHsgRVJSIH0gZnJvbSAnLi4vY29tbW9uL2Vycm9yLWNvZGVzLmpzJztcbmltcG9ydCAqIGFzIHVuaWNvZGUgZnJvbSAnLi4vY29tbW9uL3VuaWNvZGUuanMnO1xuaW1wb3J0IHsgVEFHX0lEIGFzICQsIFRBR19OQU1FUyBhcyBUTiwgTlMsIEFUVFJTLCBTUEVDSUFMX0VMRU1FTlRTLCBET0NVTUVOVF9NT0RFLCBOVU1CRVJFRF9IRUFERVJTLCBnZXRUYWdJRCwgfSBmcm9tICcuLi9jb21tb24vaHRtbC5qcyc7XG5pbXBvcnQgeyBUb2tlblR5cGUsIGdldFRva2VuQXR0ciwgfSBmcm9tICcuLi9jb21tb24vdG9rZW4uanMnO1xuLy9NaXNjIGNvbnN0YW50c1xuY29uc3QgSElEREVOX0lOUFVUX1RZUEUgPSAnaGlkZGVuJztcbi8vQWRvcHRpb24gYWdlbmN5IGxvb3BzIGl0ZXJhdGlvbiBjb3VudFxuY29uc3QgQUFfT1VURVJfTE9PUF9JVEVSID0gODtcbmNvbnN0IEFBX0lOTkVSX0xPT1BfSVRFUiA9IDM7XG4vL0luc2VydGlvbiBtb2Rlc1xudmFyIEluc2VydGlvbk1vZGU7XG4oZnVuY3Rpb24gKEluc2VydGlvbk1vZGUpIHtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTklUSUFMXCJdID0gMF0gPSBcIklOSVRJQUxcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJCRUZPUkVfSFRNTFwiXSA9IDFdID0gXCJCRUZPUkVfSFRNTFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkJFRk9SRV9IRUFEXCJdID0gMl0gPSBcIkJFRk9SRV9IRUFEXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fSEVBRFwiXSA9IDNdID0gXCJJTl9IRUFEXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fSEVBRF9OT19TQ1JJUFRcIl0gPSA0XSA9IFwiSU5fSEVBRF9OT19TQ1JJUFRcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJBRlRFUl9IRUFEXCJdID0gNV0gPSBcIkFGVEVSX0hFQURcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9CT0RZXCJdID0gNl0gPSBcIklOX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJURVhUXCJdID0gN10gPSBcIlRFWFRcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9UQUJMRVwiXSA9IDhdID0gXCJJTl9UQUJMRVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1RBQkxFX1RFWFRcIl0gPSA5XSA9IFwiSU5fVEFCTEVfVEVYVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0NBUFRJT05cIl0gPSAxMF0gPSBcIklOX0NBUFRJT05cIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9DT0xVTU5fR1JPVVBcIl0gPSAxMV0gPSBcIklOX0NPTFVNTl9HUk9VUFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1RBQkxFX0JPRFlcIl0gPSAxMl0gPSBcIklOX1RBQkxFX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9ST1dcIl0gPSAxM10gPSBcIklOX1JPV1wiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0NFTExcIl0gPSAxNF0gPSBcIklOX0NFTExcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJJTl9TRUxFQ1RcIl0gPSAxNV0gPSBcIklOX1NFTEVDVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX1NFTEVDVF9JTl9UQUJMRVwiXSA9IDE2XSA9IFwiSU5fU0VMRUNUX0lOX1RBQkxFXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiSU5fVEVNUExBVEVcIl0gPSAxN10gPSBcIklOX1RFTVBMQVRFXCI7XG4gICAgSW5zZXJ0aW9uTW9kZVtJbnNlcnRpb25Nb2RlW1wiQUZURVJfQk9EWVwiXSA9IDE4XSA9IFwiQUZURVJfQk9EWVwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIklOX0ZSQU1FU0VUXCJdID0gMTldID0gXCJJTl9GUkFNRVNFVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkFGVEVSX0ZSQU1FU0VUXCJdID0gMjBdID0gXCJBRlRFUl9GUkFNRVNFVFwiO1xuICAgIEluc2VydGlvbk1vZGVbSW5zZXJ0aW9uTW9kZVtcIkFGVEVSX0FGVEVSX0JPRFlcIl0gPSAyMV0gPSBcIkFGVEVSX0FGVEVSX0JPRFlcIjtcbiAgICBJbnNlcnRpb25Nb2RlW0luc2VydGlvbk1vZGVbXCJBRlRFUl9BRlRFUl9GUkFNRVNFVFwiXSA9IDIyXSA9IFwiQUZURVJfQUZURVJfRlJBTUVTRVRcIjtcbn0pKEluc2VydGlvbk1vZGUgfHwgKEluc2VydGlvbk1vZGUgPSB7fSkpO1xuY29uc3QgQkFTRV9MT0MgPSB7XG4gICAgc3RhcnRMaW5lOiAtMSxcbiAgICBzdGFydENvbDogLTEsXG4gICAgc3RhcnRPZmZzZXQ6IC0xLFxuICAgIGVuZExpbmU6IC0xLFxuICAgIGVuZENvbDogLTEsXG4gICAgZW5kT2Zmc2V0OiAtMSxcbn07XG5jb25zdCBUQUJMRV9TVFJVQ1RVUkVfVEFHUyA9IG5ldyBTZXQoWyQuVEFCTEUsICQuVEJPRFksICQuVEZPT1QsICQuVEhFQUQsICQuVFJdKTtcbmNvbnN0IGRlZmF1bHRQYXJzZXJPcHRpb25zID0ge1xuICAgIHNjcmlwdGluZ0VuYWJsZWQ6IHRydWUsXG4gICAgc291cmNlQ29kZUxvY2F0aW9uSW5mbzogZmFsc2UsXG4gICAgdHJlZUFkYXB0ZXI6IGRlZmF1bHRUcmVlQWRhcHRlcixcbiAgICBvblBhcnNlRXJyb3I6IG51bGwsXG59O1xuLy9QYXJzZXJcbmV4cG9ydCBjbGFzcyBQYXJzZXIge1xuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGRvY3VtZW50LCBcbiAgICAvKiogQGludGVybmFsICovXG4gICAgZnJhZ21lbnRDb250ZXh0ID0gbnVsbCwgXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIHNjcmlwdEhhbmRsZXIgPSBudWxsKSB7XG4gICAgICAgIHRoaXMuZnJhZ21lbnRDb250ZXh0ID0gZnJhZ21lbnRDb250ZXh0O1xuICAgICAgICB0aGlzLnNjcmlwdEhhbmRsZXIgPSBzY3JpcHRIYW5kbGVyO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RvcHBlZCA9IGZhbHNlO1xuICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5JVElBTDtcbiAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5JVElBTDtcbiAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICB0aGlzLmhlYWRFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICB0aGlzLmZvcm1FbGVtZW50ID0gbnVsbDtcbiAgICAgICAgLyoqIEluZGljYXRlcyB0aGF0IHRoZSBjdXJyZW50IG5vZGUgaXMgbm90IGFuIGVsZW1lbnQgaW4gdGhlIEhUTUwgbmFtZXNwYWNlICovXG4gICAgICAgIHRoaXMuY3VycmVudE5vdEluSFRNTCA9IGZhbHNlO1xuICAgICAgICAvKipcbiAgICAgICAgICogVGhlIHRlbXBsYXRlIGluc2VydGlvbiBtb2RlIHN0YWNrIGlzIG1haW50YWluZWQgZnJvbSB0aGUgbGVmdC5cbiAgICAgICAgICogSWUuIHRoZSB0b3Btb3N0IGVsZW1lbnQgd2lsbCBhbHdheXMgaGF2ZSBpbmRleCAwLlxuICAgICAgICAgKlxuICAgICAgICAgKiBAaW50ZXJuYWxcbiAgICAgICAgICovXG4gICAgICAgIHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFjayA9IFtdO1xuICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgIHRoaXMucGVuZGluZ0NoYXJhY3RlclRva2VucyA9IFtdO1xuICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgIHRoaXMuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbiA9IGZhbHNlO1xuICAgICAgICAvKiogQGludGVybmFsICovXG4gICAgICAgIHRoaXMuZnJhbWVzZXRPayA9IHRydWU7XG4gICAgICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgICAgICB0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgICAgICAgLi4uZGVmYXVsdFBhcnNlck9wdGlvbnMsXG4gICAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB9O1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyID0gdGhpcy5vcHRpb25zLnRyZWVBZGFwdGVyO1xuICAgICAgICB0aGlzLm9uUGFyc2VFcnJvciA9IHRoaXMub3B0aW9ucy5vblBhcnNlRXJyb3I7XG4gICAgICAgIC8vIEFsd2F5cyBlbmFibGUgbG9jYXRpb24gaW5mbyBpZiB3ZSByZXBvcnQgcGFyc2UgZXJyb3JzLlxuICAgICAgICBpZiAodGhpcy5vblBhcnNlRXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQgIT09IG51bGwgJiYgZG9jdW1lbnQgIT09IHZvaWQgMCA/IGRvY3VtZW50IDogdGhpcy50cmVlQWRhcHRlci5jcmVhdGVEb2N1bWVudCgpO1xuICAgICAgICB0aGlzLnRva2VuaXplciA9IG5ldyBUb2tlbml6ZXIodGhpcy5vcHRpb25zLCB0aGlzKTtcbiAgICAgICAgdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMgPSBuZXcgRm9ybWF0dGluZ0VsZW1lbnRMaXN0KHRoaXMudHJlZUFkYXB0ZXIpO1xuICAgICAgICB0aGlzLmZyYWdtZW50Q29udGV4dElEID0gZnJhZ21lbnRDb250ZXh0ID8gZ2V0VGFnSUQodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKGZyYWdtZW50Q29udGV4dCkpIDogJC5VTktOT1dOO1xuICAgICAgICB0aGlzLl9zZXRDb250ZXh0TW9kZXMoZnJhZ21lbnRDb250ZXh0ICE9PSBudWxsICYmIGZyYWdtZW50Q29udGV4dCAhPT0gdm9pZCAwID8gZnJhZ21lbnRDb250ZXh0IDogdGhpcy5kb2N1bWVudCwgdGhpcy5mcmFnbWVudENvbnRleHRJRCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzID0gbmV3IE9wZW5FbGVtZW50U3RhY2sodGhpcy5kb2N1bWVudCwgdGhpcy50cmVlQWRhcHRlciwgdGhpcyk7XG4gICAgfVxuICAgIC8vIEFQSVxuICAgIHN0YXRpYyBwYXJzZShodG1sLCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyB0aGlzKG9wdGlvbnMpO1xuICAgICAgICBwYXJzZXIudG9rZW5pemVyLndyaXRlKGh0bWwsIHRydWUpO1xuICAgICAgICByZXR1cm4gcGFyc2VyLmRvY3VtZW50O1xuICAgIH1cbiAgICBzdGF0aWMgZ2V0RnJhZ21lbnRQYXJzZXIoZnJhZ21lbnRDb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IG9wdHMgPSB7XG4gICAgICAgICAgICAuLi5kZWZhdWx0UGFyc2VyT3B0aW9ucyxcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIH07XG4gICAgICAgIC8vTk9URTogdXNlIGEgPHRlbXBsYXRlPiBlbGVtZW50IGFzIHRoZSBmcmFnbWVudCBjb250ZXh0IGlmIG5vIGNvbnRleHQgZWxlbWVudCB3YXMgcHJvdmlkZWQsXG4gICAgICAgIC8vc28gd2Ugd2lsbCBwYXJzZSBpbiBhIFwiZm9yZ2l2aW5nXCIgbWFubmVyXG4gICAgICAgIGZyYWdtZW50Q29udGV4dCAhPT0gbnVsbCAmJiBmcmFnbWVudENvbnRleHQgIT09IHZvaWQgMCA/IGZyYWdtZW50Q29udGV4dCA6IChmcmFnbWVudENvbnRleHQgPSBvcHRzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQoVE4uVEVNUExBVEUsIE5TLkhUTUwsIFtdKSk7XG4gICAgICAgIC8vTk9URTogY3JlYXRlIGEgZmFrZSBlbGVtZW50IHdoaWNoIHdpbGwgYmUgdXNlZCBhcyB0aGUgYGRvY3VtZW50YCBmb3IgZnJhZ21lbnQgcGFyc2luZy5cbiAgICAgICAgLy9UaGlzIGlzIGltcG9ydGFudCBmb3IganNkb20sIHdoZXJlIGEgbmV3IGBkb2N1bWVudGAgY2Fubm90IGJlIGNyZWF0ZWQuIFRoaXMgbGVkIHRvXG4gICAgICAgIC8vZnJhZ21lbnQgcGFyc2luZyBtZXNzaW5nIHdpdGggdGhlIG1haW4gYGRvY3VtZW50YC5cbiAgICAgICAgY29uc3QgZG9jdW1lbnRNb2NrID0gb3B0cy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KCdkb2N1bWVudG1vY2snLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIGNvbnN0IHBhcnNlciA9IG5ldyB0aGlzKG9wdHMsIGRvY3VtZW50TW9jaywgZnJhZ21lbnRDb250ZXh0KTtcbiAgICAgICAgaWYgKHBhcnNlci5mcmFnbWVudENvbnRleHRJRCA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgcGFyc2VyLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2sudW5zaGlmdChJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFKTtcbiAgICAgICAgfVxuICAgICAgICBwYXJzZXIuX2luaXRUb2tlbml6ZXJGb3JGcmFnbWVudFBhcnNpbmcoKTtcbiAgICAgICAgcGFyc2VyLl9pbnNlcnRGYWtlUm9vdEVsZW1lbnQoKTtcbiAgICAgICAgcGFyc2VyLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcGFyc2VyLl9maW5kRm9ybUluRnJhZ21lbnRDb250ZXh0KCk7XG4gICAgICAgIHJldHVybiBwYXJzZXI7XG4gICAgfVxuICAgIGdldEZyYWdtZW50KCkge1xuICAgICAgICBjb25zdCByb290RWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Rmlyc3RDaGlsZCh0aGlzLmRvY3VtZW50KTtcbiAgICAgICAgY29uc3QgZnJhZ21lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgdGhpcy5fYWRvcHROb2Rlcyhyb290RWxlbWVudCwgZnJhZ21lbnQpO1xuICAgICAgICByZXR1cm4gZnJhZ21lbnQ7XG4gICAgfVxuICAgIC8vRXJyb3JzXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIF9lcnIodG9rZW4sIGNvZGUsIGJlZm9yZVRva2VuKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKCF0aGlzLm9uUGFyc2VFcnJvcilcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbG9jID0gKF9hID0gdG9rZW4ubG9jYXRpb24pICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IEJBU0VfTE9DO1xuICAgICAgICBjb25zdCBlcnIgPSB7XG4gICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgc3RhcnRMaW5lOiBsb2Muc3RhcnRMaW5lLFxuICAgICAgICAgICAgc3RhcnRDb2w6IGxvYy5zdGFydENvbCxcbiAgICAgICAgICAgIHN0YXJ0T2Zmc2V0OiBsb2Muc3RhcnRPZmZzZXQsXG4gICAgICAgICAgICBlbmRMaW5lOiBiZWZvcmVUb2tlbiA/IGxvYy5zdGFydExpbmUgOiBsb2MuZW5kTGluZSxcbiAgICAgICAgICAgIGVuZENvbDogYmVmb3JlVG9rZW4gPyBsb2Muc3RhcnRDb2wgOiBsb2MuZW5kQ29sLFxuICAgICAgICAgICAgZW5kT2Zmc2V0OiBiZWZvcmVUb2tlbiA/IGxvYy5zdGFydE9mZnNldCA6IGxvYy5lbmRPZmZzZXQsXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMub25QYXJzZUVycm9yKGVycik7XG4gICAgfVxuICAgIC8vU3RhY2sgZXZlbnRzXG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIG9uSXRlbVB1c2gobm9kZSwgdGlkLCBpc1RvcCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLnRyZWVBZGFwdGVyKS5vbkl0ZW1QdXNoKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgbm9kZSk7XG4gICAgICAgIGlmIChpc1RvcCAmJiB0aGlzLm9wZW5FbGVtZW50cy5zdGFja1RvcCA+IDApXG4gICAgICAgICAgICB0aGlzLl9zZXRDb250ZXh0TW9kZXMobm9kZSwgdGlkKTtcbiAgICB9XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIG9uSXRlbVBvcChub2RlLCBpc1RvcCkge1xuICAgICAgICB2YXIgX2EsIF9iO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIHRoaXMuX3NldEVuZExvY2F0aW9uKG5vZGUsIHRoaXMuY3VycmVudFRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICAoX2IgPSAoX2EgPSB0aGlzLnRyZWVBZGFwdGVyKS5vbkl0ZW1Qb3ApID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBub2RlLCB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50KTtcbiAgICAgICAgaWYgKGlzVG9wKSB7XG4gICAgICAgICAgICBsZXQgY3VycmVudDtcbiAgICAgICAgICAgIGxldCBjdXJyZW50VGFnSWQ7XG4gICAgICAgICAgICBpZiAodGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPT09IDAgJiYgdGhpcy5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gdGhpcy5mcmFnbWVudENvbnRleHQ7XG4gICAgICAgICAgICAgICAgY3VycmVudFRhZ0lkID0gdGhpcy5mcmFnbWVudENvbnRleHRJRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICh7IGN1cnJlbnQsIGN1cnJlbnRUYWdJZCB9ID0gdGhpcy5vcGVuRWxlbWVudHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5fc2V0Q29udGV4dE1vZGVzKGN1cnJlbnQsIGN1cnJlbnRUYWdJZCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgX3NldENvbnRleHRNb2RlcyhjdXJyZW50LCB0aWQpIHtcbiAgICAgICAgY29uc3QgaXNIVE1MID0gY3VycmVudCA9PT0gdGhpcy5kb2N1bWVudCB8fCB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KSA9PT0gTlMuSFRNTDtcbiAgICAgICAgdGhpcy5jdXJyZW50Tm90SW5IVE1MID0gIWlzSFRNTDtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSA9ICFpc0hUTUwgJiYgIXRoaXMuX2lzSW50ZWdyYXRpb25Qb2ludCh0aWQsIGN1cnJlbnQpO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9zd2l0Y2hUb1RleHRQYXJzaW5nKGN1cnJlbnRUb2tlbiwgbmV4dFRva2VuaXplclN0YXRlKSB7XG4gICAgICAgIHRoaXMuX2luc2VydEVsZW1lbnQoY3VycmVudFRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBuZXh0VG9rZW5pemVyU3RhdGU7XG4gICAgICAgIHRoaXMub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gdGhpcy5pbnNlcnRpb25Nb2RlO1xuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLlRFWFQ7XG4gICAgfVxuICAgIHN3aXRjaFRvUGxhaW50ZXh0UGFyc2luZygpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5URVhUO1xuICAgICAgICB0aGlzLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXJNb2RlLlBMQUlOVEVYVDtcbiAgICB9XG4gICAgLy9GcmFnbWVudCBwYXJzaW5nXG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfZ2V0QWRqdXN0ZWRDdXJyZW50RWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wID09PSAwICYmIHRoaXMuZnJhZ21lbnRDb250ZXh0XG4gICAgICAgICAgICA/IHRoaXMuZnJhZ21lbnRDb250ZXh0XG4gICAgICAgICAgICA6IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgfVxuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2ZpbmRGb3JtSW5GcmFnbWVudENvbnRleHQoKSB7XG4gICAgICAgIGxldCBub2RlID0gdGhpcy5mcmFnbWVudENvbnRleHQ7XG4gICAgICAgIHdoaWxlIChub2RlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50cmVlQWRhcHRlci5nZXRUYWdOYW1lKG5vZGUpID09PSBUTi5GT1JNKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRWxlbWVudCA9IG5vZGU7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBub2RlID0gdGhpcy50cmVlQWRhcHRlci5nZXRQYXJlbnROb2RlKG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIF9pbml0VG9rZW5pemVyRm9yRnJhZ21lbnRQYXJzaW5nKCkge1xuICAgICAgICBpZiAoIXRoaXMuZnJhZ21lbnRDb250ZXh0IHx8IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHRoaXMuZnJhZ21lbnRDb250ZXh0KSAhPT0gTlMuSFRNTCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAodGhpcy5mcmFnbWVudENvbnRleHRJRCkge1xuICAgICAgICAgICAgY2FzZSAkLlRJVExFOlxuICAgICAgICAgICAgY2FzZSAkLlRFWFRBUkVBOiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXJNb2RlLlJDREFUQTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TVFlMRTpcbiAgICAgICAgICAgIGNhc2UgJC5YTVA6XG4gICAgICAgICAgICBjYXNlICQuSUZSQU1FOlxuICAgICAgICAgICAgY2FzZSAkLk5PRU1CRUQ6XG4gICAgICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgICAgICBjYXNlICQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplck1vZGUuUkFXVEVYVDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgJC5TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplck1vZGUuU0NSSVBUX0RBVEE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICQuUExBSU5URVhUOiB7XG4gICAgICAgICAgICAgICAgdGhpcy50b2tlbml6ZXIuc3RhdGUgPSBUb2tlbml6ZXJNb2RlLlBMQUlOVEVYVDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9UcmVlIG11dGF0aW9uXG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfc2V0RG9jdW1lbnRUeXBlKHRva2VuKSB7XG4gICAgICAgIGNvbnN0IG5hbWUgPSB0b2tlbi5uYW1lIHx8ICcnO1xuICAgICAgICBjb25zdCBwdWJsaWNJZCA9IHRva2VuLnB1YmxpY0lkIHx8ICcnO1xuICAgICAgICBjb25zdCBzeXN0ZW1JZCA9IHRva2VuLnN5c3RlbUlkIHx8ICcnO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldERvY3VtZW50VHlwZSh0aGlzLmRvY3VtZW50LCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpO1xuICAgICAgICBpZiAodG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGRvY3VtZW50Q2hpbGRyZW4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldENoaWxkTm9kZXModGhpcy5kb2N1bWVudCk7XG4gICAgICAgICAgICBjb25zdCBkb2NUeXBlTm9kZSA9IGRvY3VtZW50Q2hpbGRyZW4uZmluZCgobm9kZSkgPT4gdGhpcy50cmVlQWRhcHRlci5pc0RvY3VtZW50VHlwZU5vZGUobm9kZSkpO1xuICAgICAgICAgICAgaWYgKGRvY1R5cGVOb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGRvY1R5cGVOb2RlLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfYXR0YWNoRWxlbWVudFRvVHJlZShlbGVtZW50LCBsb2NhdGlvbikge1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIGNvbnN0IGxvYyA9IGxvY2F0aW9uICYmIHtcbiAgICAgICAgICAgICAgICAuLi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICBzdGFydFRhZzogbG9jYXRpb24sXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5zZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGVsZW1lbnQsIGxvYyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX3Nob3VsZEZvc3RlclBhcmVudE9uSW5zZXJ0aW9uKCkpIHtcbiAgICAgICAgICAgIHRoaXMuX2Zvc3RlclBhcmVudEVsZW1lbnQoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50VG1wbENvbnRlbnRPck5vZGU7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKHBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogRm9yIHNlbGYtY2xvc2luZyB0YWdzLiBBZGQgYW4gZWxlbWVudCB0byB0aGUgdHJlZSwgYnV0IHNraXAgYWRkaW5nIGl0XG4gICAgICogdG8gdGhlIHN0YWNrLlxuICAgICAqL1xuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2FwcGVuZEVsZW1lbnQodG9rZW4sIG5hbWVzcGFjZVVSSSkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIG5hbWVzcGFjZVVSSSwgdG9rZW4uYXR0cnMpO1xuICAgICAgICB0aGlzLl9hdHRhY2hFbGVtZW50VG9UcmVlKGVsZW1lbnQsIHRva2VuLmxvY2F0aW9uKTtcbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfaW5zZXJ0RWxlbWVudCh0b2tlbiwgbmFtZXNwYWNlVVJJKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQodG9rZW4udGFnTmFtZSwgbmFtZXNwYWNlVVJJLCB0b2tlbi5hdHRycyk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgdG9rZW4ubG9jYXRpb24pO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wdXNoKGVsZW1lbnQsIHRva2VuLnRhZ0lEKTtcbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfaW5zZXJ0RmFrZUVsZW1lbnQodGFnTmFtZSwgdGFnSUQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIHRoaXMuX2F0dGFjaEVsZW1lbnRUb1RyZWUoZWxlbWVudCwgbnVsbCk7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2goZWxlbWVudCwgdGFnSUQpO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9pbnNlcnRUZW1wbGF0ZSh0b2tlbikge1xuICAgICAgICBjb25zdCB0bXBsID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVFbGVtZW50KHRva2VuLnRhZ05hbWUsIE5TLkhUTUwsIHRva2VuLmF0dHJzKTtcbiAgICAgICAgY29uc3QgY29udGVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldFRlbXBsYXRlQ29udGVudCh0bXBsLCBjb250ZW50KTtcbiAgICAgICAgdGhpcy5fYXR0YWNoRWxlbWVudFRvVHJlZSh0bXBsLCB0b2tlbi5sb2NhdGlvbik7XG4gICAgICAgIHRoaXMub3BlbkVsZW1lbnRzLnB1c2godG1wbCwgdG9rZW4udGFnSUQpO1xuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8pXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oY29udGVudCwgbnVsbCk7XG4gICAgfVxuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2luc2VydEZha2VSb290RWxlbWVudCgpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudChUTi5IVE1MLCBOUy5IVE1MLCBbXSk7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc291cmNlQ29kZUxvY2F0aW9uSW5mbylcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuc2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihlbGVtZW50LCBudWxsKTtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZCh0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50LCBlbGVtZW50KTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucHVzaChlbGVtZW50LCAkLkhUTUwpO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcGFyZW50KSB7XG4gICAgICAgIGNvbnN0IGNvbW1lbnROb2RlID0gdGhpcy50cmVlQWRhcHRlci5jcmVhdGVDb21tZW50Tm9kZSh0b2tlbi5kYXRhKTtcbiAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChwYXJlbnQsIGNvbW1lbnROb2RlKTtcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oY29tbWVudE5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKSB7XG4gICAgICAgIGxldCBwYXJlbnQ7XG4gICAgICAgIGxldCBiZWZvcmVFbGVtZW50O1xuICAgICAgICBpZiAodGhpcy5fc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSkge1xuICAgICAgICAgICAgKHsgcGFyZW50LCBiZWZvcmVFbGVtZW50IH0gPSB0aGlzLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKSk7XG4gICAgICAgICAgICBpZiAoYmVmb3JlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dEJlZm9yZShwYXJlbnQsIHRva2VuLmNoYXJzLCBiZWZvcmVFbGVtZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dChwYXJlbnQsIHRva2VuLmNoYXJzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBhcmVudCA9IHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudE9yTm9kZTtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0VGV4dChwYXJlbnQsIHRva2VuLmNoYXJzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRva2VuLmxvY2F0aW9uKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBzaWJsaW5ncyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2RlcyhwYXJlbnQpO1xuICAgICAgICBjb25zdCB0ZXh0Tm9kZUlkeCA9IGJlZm9yZUVsZW1lbnQgPyBzaWJsaW5ncy5sYXN0SW5kZXhPZihiZWZvcmVFbGVtZW50KSA6IHNpYmxpbmdzLmxlbmd0aDtcbiAgICAgICAgY29uc3QgdGV4dE5vZGUgPSBzaWJsaW5nc1t0ZXh0Tm9kZUlkeCAtIDFdO1xuICAgICAgICAvL05PVEU6IGlmIHdlIGhhdmUgYSBsb2NhdGlvbiBhc3NpZ25lZCBieSBhbm90aGVyIHRva2VuLCB0aGVuIGp1c3QgdXBkYXRlIHRoZSBlbmQgcG9zaXRpb25cbiAgICAgICAgY29uc3QgdG5Mb2MgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24odGV4dE5vZGUpO1xuICAgICAgICBpZiAodG5Mb2MpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgZW5kTGluZSwgZW5kQ29sLCBlbmRPZmZzZXQgfSA9IHRva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci51cGRhdGVOb2RlU291cmNlQ29kZUxvY2F0aW9uKHRleHROb2RlLCB7IGVuZExpbmUsIGVuZENvbCwgZW5kT2Zmc2V0IH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHRoaXMub3B0aW9ucy5zb3VyY2VDb2RlTG9jYXRpb25JbmZvKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLnNldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24odGV4dE5vZGUsIHRva2VuLmxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9hZG9wdE5vZGVzKGRvbm9yLCByZWNpcGllbnQpIHtcbiAgICAgICAgZm9yIChsZXQgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpOyBjaGlsZDsgY2hpbGQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEZpcnN0Q2hpbGQoZG9ub3IpKSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUoY2hpbGQpO1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChyZWNpcGllbnQsIGNoaWxkKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9zZXRFbmRMb2NhdGlvbihlbGVtZW50LCBjbG9zaW5nVG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMudHJlZUFkYXB0ZXIuZ2V0Tm9kZVNvdXJjZUNvZGVMb2NhdGlvbihlbGVtZW50KSAmJiBjbG9zaW5nVG9rZW4ubG9jYXRpb24pIHtcbiAgICAgICAgICAgIGNvbnN0IGN0TG9jID0gY2xvc2luZ1Rva2VuLmxvY2F0aW9uO1xuICAgICAgICAgICAgY29uc3QgdG4gPSB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoZWxlbWVudCk7XG4gICAgICAgICAgICBjb25zdCBlbmRMb2MgPSBcbiAgICAgICAgICAgIC8vIE5PVEU6IEZvciBjYXNlcyBsaWtlIDxwPiA8cD4gPC9wPiAtIEZpcnN0ICdwJyBjbG9zZXMgd2l0aG91dCBhIGNsb3NpbmdcbiAgICAgICAgICAgIC8vIHRhZyBhbmQgZm9yIGNhc2VzIGxpa2UgPHRkPiA8cD4gPC90ZD4gLSAncCcgY2xvc2VzIHdpdGhvdXQgYSBjbG9zaW5nIHRhZy5cbiAgICAgICAgICAgIGNsb3NpbmdUb2tlbi50eXBlID09PSBUb2tlblR5cGUuRU5EX1RBRyAmJiB0biA9PT0gY2xvc2luZ1Rva2VuLnRhZ05hbWVcbiAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgZW5kVGFnOiB7IC4uLmN0TG9jIH0sXG4gICAgICAgICAgICAgICAgICAgIGVuZExpbmU6IGN0TG9jLmVuZExpbmUsXG4gICAgICAgICAgICAgICAgICAgIGVuZENvbDogY3RMb2MuZW5kQ29sLFxuICAgICAgICAgICAgICAgICAgICBlbmRPZmZzZXQ6IGN0TG9jLmVuZE9mZnNldCxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOiB7XG4gICAgICAgICAgICAgICAgICAgIGVuZExpbmU6IGN0TG9jLnN0YXJ0TGluZSxcbiAgICAgICAgICAgICAgICAgICAgZW5kQ29sOiBjdExvYy5zdGFydENvbCxcbiAgICAgICAgICAgICAgICAgICAgZW5kT2Zmc2V0OiBjdExvYy5zdGFydE9mZnNldCxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy50cmVlQWRhcHRlci51cGRhdGVOb2RlU291cmNlQ29kZUxvY2F0aW9uKGVsZW1lbnQsIGVuZExvYyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9Ub2tlbiBwcm9jZXNzaW5nXG4gICAgc2hvdWxkUHJvY2Vzc1N0YXJ0VGFnVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgIC8vIENoZWNrIHRoYXQgbmVpdGhlciBjdXJyZW50ID09PSBkb2N1bWVudCwgb3IgbnMgPT09IE5TLkhUTUxcbiAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnROb3RJbkhUTUwpXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIGxldCBjdXJyZW50O1xuICAgICAgICBsZXQgY3VycmVudFRhZ0lkO1xuICAgICAgICBpZiAodGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3AgPT09IDAgJiYgdGhpcy5mcmFnbWVudENvbnRleHQpIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPSB0aGlzLmZyYWdtZW50Q29udGV4dDtcbiAgICAgICAgICAgIGN1cnJlbnRUYWdJZCA9IHRoaXMuZnJhZ21lbnRDb250ZXh0SUQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAoeyBjdXJyZW50LCBjdXJyZW50VGFnSWQgfSA9IHRoaXMub3BlbkVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuU1ZHICYmXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUoY3VycmVudCkgPT09IFROLkFOTk9UQVRJT05fWE1MICYmXG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShjdXJyZW50KSA9PT0gTlMuTUFUSE1MKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgLy8gQ2hlY2sgdGhhdCBgY3VycmVudGAgaXMgbm90IGFuIGludGVncmF0aW9uIHBvaW50IGZvciBIVE1MIG9yIE1hdGhNTCBlbGVtZW50cy5cbiAgICAgICAgdGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSB8fFxuICAgICAgICAgICAgLy8gSWYgaXQgX2lzXyBhbiBpbnRlZ3JhdGlvbiBwb2ludCwgdGhlbiB3ZSBtaWdodCBoYXZlIHRvIGNoZWNrIHRoYXQgaXQgaXMgbm90IGFuIEhUTUxcbiAgICAgICAgICAgIC8vIGludGVncmF0aW9uIHBvaW50LlxuICAgICAgICAgICAgKCh0b2tlbi50YWdJRCA9PT0gJC5NR0xZUEggfHwgdG9rZW4udGFnSUQgPT09ICQuTUFMSUdOTUFSSykgJiZcbiAgICAgICAgICAgICAgICAhdGhpcy5faXNJbnRlZ3JhdGlvblBvaW50KGN1cnJlbnRUYWdJZCwgY3VycmVudCwgTlMuSFRNTCkpKTtcbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfcHJvY2Vzc1Rva2VuKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuQ0hBUkFDVEVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNoYXJhY3Rlcih0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5OVUxMX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25OdWxsQ2hhcmFjdGVyKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLkNPTU1FTlQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ29tbWVudCh0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5ET0NUWVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkRvY3R5cGUodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuU1RBUlRfVEFHOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5fcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLkVORF9UQUc6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uRW5kVGFnKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgVG9rZW5UeXBlLkVPRjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25Fb2YodG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBUb2tlblR5cGUuV0hJVEVTUEFDRV9DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uV2hpdGVzcGFjZUNoYXJhY3Rlcih0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9JbnRlZ3JhdGlvbiBwb2ludHNcbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9pc0ludGVncmF0aW9uUG9pbnQodGlkLCBlbGVtZW50LCBmb3JlaWduTlMpIHtcbiAgICAgICAgY29uc3QgbnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShlbGVtZW50KTtcbiAgICAgICAgY29uc3QgYXR0cnMgPSB0aGlzLnRyZWVBZGFwdGVyLmdldEF0dHJMaXN0KGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gZm9yZWlnbkNvbnRlbnQuaXNJbnRlZ3JhdGlvblBvaW50KHRpZCwgbnMsIGF0dHJzLCBmb3JlaWduTlMpO1xuICAgIH1cbiAgICAvL0FjdGl2ZSBmb3JtYXR0aW5nIGVsZW1lbnRzIHJlY29uc3RydWN0aW9uXG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKSB7XG4gICAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5lbnRyaWVzLmxlbmd0aDtcbiAgICAgICAgaWYgKGxpc3RMZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuZEluZGV4ID0gdGhpcy5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuZW50cmllcy5maW5kSW5kZXgoKGVudHJ5KSA9PiBlbnRyeS50eXBlID09PSBFbnRyeVR5cGUuTWFya2VyIHx8IHRoaXMub3BlbkVsZW1lbnRzLmNvbnRhaW5zKGVudHJ5LmVsZW1lbnQpKTtcbiAgICAgICAgICAgIGNvbnN0IHVub3BlbklkeCA9IGVuZEluZGV4IDwgMCA/IGxpc3RMZW5ndGggLSAxIDogZW5kSW5kZXggLSAxO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IHVub3BlbklkeDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IHRoaXMuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmVudHJpZXNbaV07XG4gICAgICAgICAgICAgICAgdGhpcy5faW5zZXJ0RWxlbWVudChlbnRyeS50b2tlbiwgdGhpcy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZW50cnkuZWxlbWVudCkpO1xuICAgICAgICAgICAgICAgIGVudHJ5LmVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC8vQ2xvc2UgZWxlbWVudHNcbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9jbG9zZVRhYmxlQ2VsbCgpIHtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICB0aGlzLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhYmxlQ2VsbFBvcHBlZCgpO1xuICAgICAgICB0aGlzLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfY2xvc2VQRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24oJC5QKTtcbiAgICAgICAgdGhpcy5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuUCk7XG4gICAgfVxuICAgIC8vSW5zZXJ0aW9uIG1vZGVzXG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfcmVzZXRJbnNlcnRpb25Nb2RlKCkge1xuICAgICAgICBmb3IgKGxldCBpID0gdGhpcy5vcGVuRWxlbWVudHMuc3RhY2tUb3A7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICAvL0luc2VydGlvbiBtb2RlIHJlc2V0IG1hcFxuICAgICAgICAgICAgc3dpdGNoIChpID09PSAwICYmIHRoaXMuZnJhZ21lbnRDb250ZXh0ID8gdGhpcy5mcmFnbWVudENvbnRleHRJRCA6IHRoaXMub3BlbkVsZW1lbnRzLnRhZ0lEc1tpXSkge1xuICAgICAgICAgICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRIRUFEOlxuICAgICAgICAgICAgICAgIGNhc2UgJC5URk9PVDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLkNBUFRJT046IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5DT0xHUk9VUDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuVEFCTEU6IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuQk9EWToge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0JPRFk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLkZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlNFTEVDVDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldEluc2VydGlvbk1vZGVGb3JTZWxlY3QoaSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IHRoaXMudG1wbEluc2VydGlvbk1vZGVTdGFja1swXTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuSFRNTDoge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmluc2VydGlvbk1vZGUgPSB0aGlzLmhlYWRFbGVtZW50ID8gSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEIDogSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRIOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9DRUxMO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXNlICQuSEVBRDoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fSEVBRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9yZXNldEluc2VydGlvbk1vZGVGb3JTZWxlY3Qoc2VsZWN0SWR4KSB7XG4gICAgICAgIGlmIChzZWxlY3RJZHggPiAwKSB7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gc2VsZWN0SWR4IC0gMTsgaSA+IDA7IGktLSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHRuID0gdGhpcy5vcGVuRWxlbWVudHMudGFnSURzW2ldO1xuICAgICAgICAgICAgICAgIGlmICh0biA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodG4gPT09ICQuVEFCTEUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1Q7XG4gICAgfVxuICAgIC8vRm9zdGVyIHBhcmVudGluZ1xuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2lzRWxlbWVudENhdXNlc0Zvc3RlclBhcmVudGluZyh0bikge1xuICAgICAgICByZXR1cm4gVEFCTEVfU1RSVUNUVVJFX1RBR1MuaGFzKHRuKTtcbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfc2hvdWxkRm9zdGVyUGFyZW50T25JbnNlcnRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgJiYgdGhpcy5faXNFbGVtZW50Q2F1c2VzRm9zdGVyUGFyZW50aW5nKHRoaXMub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCk7XG4gICAgfVxuICAgIC8qKiBAcHJvdGVjdGVkICovXG4gICAgX2ZpbmRGb3N0ZXJQYXJlbnRpbmdMb2NhdGlvbigpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IHRoaXMub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IDA7IGktLSkge1xuICAgICAgICAgICAgY29uc3Qgb3BlbkVsZW1lbnQgPSB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5vcGVuRWxlbWVudHMudGFnSURzW2ldKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShvcGVuRWxlbWVudCkgPT09IE5TLkhUTUwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IHBhcmVudDogdGhpcy50cmVlQWRhcHRlci5nZXRUZW1wbGF0ZUNvbnRlbnQob3BlbkVsZW1lbnQpLCBiZWZvcmVFbGVtZW50OiBudWxsIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJlbnQgPSB0aGlzLnRyZWVBZGFwdGVyLmdldFBhcmVudE5vZGUob3BlbkVsZW1lbnQpO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBwYXJlbnQsIGJlZm9yZUVsZW1lbnQ6IG9wZW5FbGVtZW50IH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgcGFyZW50OiB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1tpIC0gMV0sIGJlZm9yZUVsZW1lbnQ6IG51bGwgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHsgcGFyZW50OiB0aGlzLm9wZW5FbGVtZW50cy5pdGVtc1swXSwgYmVmb3JlRWxlbWVudDogbnVsbCB9O1xuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9mb3N0ZXJQYXJlbnRFbGVtZW50KGVsZW1lbnQpIHtcbiAgICAgICAgY29uc3QgbG9jYXRpb24gPSB0aGlzLl9maW5kRm9zdGVyUGFyZW50aW5nTG9jYXRpb24oKTtcbiAgICAgICAgaWYgKGxvY2F0aW9uLmJlZm9yZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMudHJlZUFkYXB0ZXIuaW5zZXJ0QmVmb3JlKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCwgbG9jYXRpb24uYmVmb3JlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGxvY2F0aW9uLnBhcmVudCwgZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy9TcGVjaWFsIGVsZW1lbnRzXG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfaXNTcGVjaWFsRWxlbWVudChlbGVtZW50LCBpZCkge1xuICAgICAgICBjb25zdCBucyA9IHRoaXMudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpO1xuICAgICAgICByZXR1cm4gU1BFQ0lBTF9FTEVNRU5UU1tuc10uaGFzKGlkKTtcbiAgICB9XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIG9uQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci5pbkZvcmVpZ25Ob2RlKSB7XG4gICAgICAgICAgICBjaGFyYWN0ZXJJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSW5pdGlhbE1vZGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5CZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVySGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DQVBUSU9OOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU6IHtcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIGNoYXJhY3RlckluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJBZnRlckJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgb25OdWxsQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIGlmICh0aGlzLnRva2VuaXplci5pbkZvcmVpZ25Ob2RlKSB7XG4gICAgICAgICAgICBudWxsQ2hhcmFjdGVySW5Gb3JlaWduQ29udGVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTklUSUFMOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSFRNTDoge1xuICAgICAgICAgICAgICAgIHRva2VuQmVmb3JlSHRtbCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkJlZm9yZUhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSGVhZE5vU2NyaXB0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1JPVzoge1xuICAgICAgICAgICAgICAgIGNoYXJhY3RlckluVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Db2x1bW5Hcm91cCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5BZnRlckFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBvbkNvbW1lbnQodG9rZW4pIHtcbiAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudE5vdEluSFRNTCkge1xuICAgICAgICAgICAgYXBwZW5kQ29tbWVudCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTklUSUFMOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRF9OT19TQ1JJUFQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9URU1QTEFURTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIGFwcGVuZENvbW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX1RFWFQ6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluVGFibGVUZXh0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgYXBwZW5kQ29tbWVudFRvUm9vdEh0bWxFbGVtZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgb25Eb2N0eXBlKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIGRvY3R5cGVJbkluaXRpYWxNb2RlKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLl9lcnIodG9rZW4sIEVSUi5taXNwbGFjZWREb2N0eXBlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9URVhUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBvblN0YXJ0VGFnKHRva2VuKSB7XG4gICAgICAgIHRoaXMuc2tpcE5leHROZXdMaW5lID0gZmFsc2U7XG4gICAgICAgIHRoaXMuY3VycmVudFRva2VuID0gdG9rZW47XG4gICAgICAgIHRoaXMuX3Byb2Nlc3NTdGFydFRhZyh0b2tlbik7XG4gICAgICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZyAmJiAhdG9rZW4uYWNrU2VsZkNsb3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX2Vycih0b2tlbiwgRVJSLm5vblZvaWRIdG1sRWxlbWVudFN0YXJ0VGFnV2l0aFRyYWlsaW5nU29saWR1cyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogUHJvY2Vzc2VzIGEgZ2l2ZW4gc3RhcnQgdGFnLlxuICAgICAqXG4gICAgICogYG9uU3RhcnRUYWdgIGNoZWNrcyBpZiBhIHNlbGYtY2xvc2luZyB0YWcgd2FzIHJlY29nbml6ZWQuIFdoZW4gYSB0b2tlblxuICAgICAqIGlzIG1vdmVkIGluYmV0d2VlbiBtdWx0aXBsZSBpbnNlcnRpb24gbW9kZXMsIHRoaXMgY2hlY2sgZm9yIHNlbGYtY2xvc2luZ1xuICAgICAqIGNvdWxkIGxlYWQgdG8gZmFsc2UgcG9zaXRpdmVzLiBUbyBhdm9pZCB0aGlzLCBgX3Byb2Nlc3NTdGFydFRhZ2AgaXMgdXNlZFxuICAgICAqIGZvciBuZXN0ZWQgY2FsbHMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdG9rZW4gVGhlIHRva2VuIHRvIHByb2Nlc3MuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIF9wcm9jZXNzU3RhcnRUYWcodG9rZW4pIHtcbiAgICAgICAgaWYgKHRoaXMuc2hvdWxkUHJvY2Vzc1N0YXJ0VGFnVG9rZW5JbkZvcmVpZ25Db250ZW50KHRva2VuKSkge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0VGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQHByb3RlY3RlZCAqL1xuICAgIF9zdGFydFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbikge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaW5zZXJ0aW9uTW9kZSkge1xuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOSVRJQUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkluSW5pdGlhbE1vZGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IVE1MOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdCZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnQmVmb3JlSGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fSEVBRDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEX05PX1NDUklQVDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0FmdGVySGVhZCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQk9EWToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZVRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luQ2FwdGlvbih0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJbkNvbHVtbkdyb3VwKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdJblJvdyh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0VMTDoge1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5DZWxsKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1Q6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luU2VsZWN0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEU6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luVGVtcGxhdGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0FmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luRnJhbWVzZXQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdBZnRlckZyYW1lc2V0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOiB7XG4gICAgICAgICAgICAgICAgc3RhcnRUYWdBZnRlckFmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0FmdGVyQWZ0ZXJGcmFtZXNldCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qKiBAaW50ZXJuYWwgKi9cbiAgICBvbkVuZFRhZyh0b2tlbikge1xuICAgICAgICB0aGlzLnNraXBOZXh0TmV3TGluZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmN1cnJlbnRUb2tlbiA9IHRva2VuO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50Tm90SW5IVE1MKSB7XG4gICAgICAgICAgICBlbmRUYWdJbkZvcmVpZ25Db250ZW50KHRoaXMsIHRva2VuKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEBwcm90ZWN0ZWQgKi9cbiAgICBfZW5kVGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Jbml0aWFsTW9kZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdCZWZvcmVIdG1sKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0JlZm9yZUhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5IZWFkTm9TY3JpcHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdBZnRlckhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLlRFWFQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZVRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkNhcHRpb24odGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luQ29sdW1uR3JvdXAodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblRhYmxlQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5Sb3codGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkNlbGwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luU2VsZWN0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9TRUxFQ1RfSU5fVEFCTEU6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJblNlbGVjdEluVGFibGUodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UZW1wbGF0ZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWToge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0FmdGVyQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgICAgICBlbmRUYWdJbkZyYW1lc2V0KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIGVuZFRhZ0FmdGVyRnJhbWVzZXQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0JPRFk6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkFmdGVyQWZ0ZXJCb2R5KHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqIEBpbnRlcm5hbCAqL1xuICAgIG9uRW9mKHRva2VuKSB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pbnNlcnRpb25Nb2RlKSB7XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5JVElBTDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5Jbml0aWFsTW9kZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw6IHtcbiAgICAgICAgICAgICAgICB0b2tlbkJlZm9yZUh0bWwodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkJFRk9SRV9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkhlYWQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOiB7XG4gICAgICAgICAgICAgICAgdG9rZW5JbkhlYWROb1NjcmlwdCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDoge1xuICAgICAgICAgICAgICAgIHRva2VuQWZ0ZXJIZWFkKHRoaXMsIHRva2VuKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT046XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0NFTEw6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRToge1xuICAgICAgICAgICAgICAgIGVvZkluQm9keSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuVEVYVDoge1xuICAgICAgICAgICAgICAgIGVvZkluVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHRva2VuSW5UYWJsZVRleHQodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOiB7XG4gICAgICAgICAgICAgICAgZW9mSW5UZW1wbGF0ZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0FGVEVSX0ZSQU1FU0VUOiB7XG4gICAgICAgICAgICAgICAgc3RvcFBhcnNpbmcodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICAgICAgfVxuICAgIH1cbiAgICAvKiogQGludGVybmFsICovXG4gICAgb25XaGl0ZXNwYWNlQ2hhcmFjdGVyKHRva2VuKSB7XG4gICAgICAgIGlmICh0aGlzLnNraXBOZXh0TmV3TGluZSkge1xuICAgICAgICAgICAgdGhpcy5za2lwTmV4dE5ld0xpbmUgPSBmYWxzZTtcbiAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5jaGFyQ29kZUF0KDApID09PSB1bmljb2RlLkNPREVfUE9JTlRTLkxJTkVfRkVFRCkge1xuICAgICAgICAgICAgICAgIGlmICh0b2tlbi5jaGFycy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB0b2tlbi5jaGFycyA9IHRva2VuLmNoYXJzLnN1YnN0cigxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50b2tlbml6ZXIuaW5Gb3JlaWduTm9kZSkge1xuICAgICAgICAgICAgdGhpcy5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoICh0aGlzLmluc2VydGlvbk1vZGUpIHtcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9IRUFEOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0hFQUQ6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuVEVYVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DT0xVTU5fR1JPVVA6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fU0VMRUNUOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5JTl9DRUxMOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuQUZURVJfQUZURVJfQk9EWTpcbiAgICAgICAgICAgIGNhc2UgSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9GUkFNRVNFVDoge1xuICAgICAgICAgICAgICAgIHdoaXRlc3BhY2VDaGFyYWN0ZXJJbkJvZHkodGhpcywgdG9rZW4pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFOlxuICAgICAgICAgICAgY2FzZSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk6XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fUk9XOiB7XG4gICAgICAgICAgICAgICAgY2hhcmFjdGVySW5UYWJsZSh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDoge1xuICAgICAgICAgICAgICAgIHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dCh0aGlzLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgICAgICB9XG4gICAgfVxufVxuLy9BZG9wdGlvbiBhZ2VuY3kgYWxnb3JpdGhtXG4vLyhzZWU6IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RyZWUtY29uc3RydWN0aW9uLmh0bWwjYWRvcHRpb25BZ2VuY3kpXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy9TdGVwcyA1LTggb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5Gb3JtYXR0aW5nRWxlbWVudEVudHJ5KHAsIHRva2VuKSB7XG4gICAgbGV0IGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUodG9rZW4udGFnTmFtZSk7XG4gICAgaWYgKGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICAgICAgaWYgKCFwLm9wZW5FbGVtZW50cy5jb250YWlucyhmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpKSB7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGZvcm1hdHRpbmdFbGVtZW50RW50cnkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKCFwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKHRva2VuLnRhZ0lEKSkge1xuICAgICAgICAgICAgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSA9IG51bGw7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0dGluZ0VsZW1lbnRFbnRyeTtcbn1cbi8vU3RlcHMgOSBhbmQgMTAgb2YgdGhlIGFsZ29yaXRobVxuZnVuY3Rpb24gYWFPYnRhaW5GdXJ0aGVzdEJsb2NrKHAsIGZvcm1hdHRpbmdFbGVtZW50RW50cnkpIHtcbiAgICBsZXQgZnVydGhlc3RCbG9jayA9IG51bGw7XG4gICAgbGV0IGlkeCA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wO1xuICAgIGZvciAoOyBpZHggPj0gMDsgaWR4LS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLml0ZW1zW2lkeF07XG4gICAgICAgIGlmIChlbGVtZW50ID09PSBmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwLl9pc1NwZWNpYWxFbGVtZW50KGVsZW1lbnQsIHAub3BlbkVsZW1lbnRzLnRhZ0lEc1tpZHhdKSkge1xuICAgICAgICAgICAgZnVydGhlc3RCbG9jayA9IGVsZW1lbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKCFmdXJ0aGVzdEJsb2NrKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnNob3J0ZW5Ub0xlbmd0aChpZHggPCAwID8gMCA6IGlkeCk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGZvcm1hdHRpbmdFbGVtZW50RW50cnkpO1xuICAgIH1cbiAgICByZXR1cm4gZnVydGhlc3RCbG9jaztcbn1cbi8vU3RlcCAxMyBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYUlubmVyTG9vcChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudCkge1xuICAgIGxldCBsYXN0RWxlbWVudCA9IGZ1cnRoZXN0QmxvY2s7XG4gICAgbGV0IG5leHRFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuZ2V0Q29tbW9uQW5jZXN0b3IoZnVydGhlc3RCbG9jayk7XG4gICAgZm9yIChsZXQgaSA9IDAsIGVsZW1lbnQgPSBuZXh0RWxlbWVudDsgZWxlbWVudCAhPT0gZm9ybWF0dGluZ0VsZW1lbnQ7IGkrKywgZWxlbWVudCA9IG5leHRFbGVtZW50KSB7XG4gICAgICAgIC8vTk9URTogc3RvcmUgdGhlIG5leHQgZWxlbWVudCBmb3IgdGhlIG5leHQgbG9vcCBpdGVyYXRpb24gKGl0IG1heSBiZSBkZWxldGVkIGZyb20gdGhlIHN0YWNrIGJ5IHN0ZXAgOS41KVxuICAgICAgICBuZXh0RWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmdldENvbW1vbkFuY2VzdG9yKGVsZW1lbnQpO1xuICAgICAgICBjb25zdCBlbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnkoZWxlbWVudCk7XG4gICAgICAgIGNvbnN0IGNvdW50ZXJPdmVyZmxvdyA9IGVsZW1lbnRFbnRyeSAmJiBpID49IEFBX0lOTkVSX0xPT1BfSVRFUjtcbiAgICAgICAgY29uc3Qgc2hvdWxkUmVtb3ZlRnJvbU9wZW5FbGVtZW50cyA9ICFlbGVtZW50RW50cnkgfHwgY291bnRlck92ZXJmbG93O1xuICAgICAgICBpZiAoc2hvdWxkUmVtb3ZlRnJvbU9wZW5FbGVtZW50cykge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXJPdmVyZmxvdykge1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnJlbW92ZUVudHJ5KGVsZW1lbnRFbnRyeSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlbGVtZW50ID0gYWFSZWNyZWF0ZUVsZW1lbnRGcm9tRW50cnkocCwgZWxlbWVudEVudHJ5KTtcbiAgICAgICAgICAgIGlmIChsYXN0RWxlbWVudCA9PT0gZnVydGhlc3RCbG9jaykge1xuICAgICAgICAgICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmJvb2ttYXJrID0gZWxlbWVudEVudHJ5O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcC50cmVlQWRhcHRlci5kZXRhY2hOb2RlKGxhc3RFbGVtZW50KTtcbiAgICAgICAgICAgIHAudHJlZUFkYXB0ZXIuYXBwZW5kQ2hpbGQoZWxlbWVudCwgbGFzdEVsZW1lbnQpO1xuICAgICAgICAgICAgbGFzdEVsZW1lbnQgPSBlbGVtZW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsYXN0RWxlbWVudDtcbn1cbi8vU3RlcCAxMy43IG9mIHRoZSBhbGdvcml0aG1cbmZ1bmN0aW9uIGFhUmVjcmVhdGVFbGVtZW50RnJvbUVudHJ5KHAsIGVsZW1lbnRFbnRyeSkge1xuICAgIGNvbnN0IG5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoZWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBwLnRyZWVBZGFwdGVyLmNyZWF0ZUVsZW1lbnQoZWxlbWVudEVudHJ5LnRva2VuLnRhZ05hbWUsIG5zLCBlbGVtZW50RW50cnkudG9rZW4uYXR0cnMpO1xuICAgIHAub3BlbkVsZW1lbnRzLnJlcGxhY2UoZWxlbWVudEVudHJ5LmVsZW1lbnQsIG5ld0VsZW1lbnQpO1xuICAgIGVsZW1lbnRFbnRyeS5lbGVtZW50ID0gbmV3RWxlbWVudDtcbiAgICByZXR1cm4gbmV3RWxlbWVudDtcbn1cbi8vU3RlcCAxNCBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvcihwLCBjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpIHtcbiAgICBjb25zdCB0biA9IHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShjb21tb25BbmNlc3Rvcik7XG4gICAgY29uc3QgdGlkID0gZ2V0VGFnSUQodG4pO1xuICAgIGlmIChwLl9pc0VsZW1lbnRDYXVzZXNGb3N0ZXJQYXJlbnRpbmcodGlkKSkge1xuICAgICAgICBwLl9mb3N0ZXJQYXJlbnRFbGVtZW50KGxhc3RFbGVtZW50KTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IG5zID0gcC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkoY29tbW9uQW5jZXN0b3IpO1xuICAgICAgICBpZiAodGlkID09PSAkLlRFTVBMQVRFICYmIG5zID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICBjb21tb25BbmNlc3RvciA9IHAudHJlZUFkYXB0ZXIuZ2V0VGVtcGxhdGVDb250ZW50KGNvbW1vbkFuY2VzdG9yKTtcbiAgICAgICAgfVxuICAgICAgICBwLnRyZWVBZGFwdGVyLmFwcGVuZENoaWxkKGNvbW1vbkFuY2VzdG9yLCBsYXN0RWxlbWVudCk7XG4gICAgfVxufVxuLy9TdGVwcyAxNS0xOSBvZiB0aGUgYWxnb3JpdGhtXG5mdW5jdGlvbiBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KSB7XG4gICAgY29uc3QgbnMgPSBwLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgIGNvbnN0IHsgdG9rZW4gfSA9IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG4gICAgY29uc3QgbmV3RWxlbWVudCA9IHAudHJlZUFkYXB0ZXIuY3JlYXRlRWxlbWVudCh0b2tlbi50YWdOYW1lLCBucywgdG9rZW4uYXR0cnMpO1xuICAgIHAuX2Fkb3B0Tm9kZXMoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCk7XG4gICAgcC50cmVlQWRhcHRlci5hcHBlbmRDaGlsZChmdXJ0aGVzdEJsb2NrLCBuZXdFbGVtZW50KTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRFbGVtZW50QWZ0ZXJCb29rbWFyayhuZXdFbGVtZW50LCB0b2tlbik7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucmVtb3ZlRW50cnkoZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSk7XG4gICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKGZvcm1hdHRpbmdFbGVtZW50RW50cnkuZWxlbWVudCk7XG4gICAgcC5vcGVuRWxlbWVudHMuaW5zZXJ0QWZ0ZXIoZnVydGhlc3RCbG9jaywgbmV3RWxlbWVudCwgdG9rZW4udGFnSUQpO1xufVxuLy9BbGdvcml0aG0gZW50cnkgcG9pbnRcbmZ1bmN0aW9uIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbikge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgQUFfT1VURVJfTE9PUF9JVEVSOyBpKyspIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSA9IGFhT2J0YWluRm9ybWF0dGluZ0VsZW1lbnRFbnRyeShwLCB0b2tlbik7XG4gICAgICAgIGlmICghZm9ybWF0dGluZ0VsZW1lbnRFbnRyeSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZnVydGhlc3RCbG9jayA9IGFhT2J0YWluRnVydGhlc3RCbG9jayhwLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICAgICAgaWYgKCFmdXJ0aGVzdEJsb2NrKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5ib29rbWFyayA9IGZvcm1hdHRpbmdFbGVtZW50RW50cnk7XG4gICAgICAgIGNvbnN0IGxhc3RFbGVtZW50ID0gYWFJbm5lckxvb3AocCwgZnVydGhlc3RCbG9jaywgZm9ybWF0dGluZ0VsZW1lbnRFbnRyeS5lbGVtZW50KTtcbiAgICAgICAgY29uc3QgY29tbW9uQW5jZXN0b3IgPSBwLm9wZW5FbGVtZW50cy5nZXRDb21tb25BbmNlc3Rvcihmb3JtYXR0aW5nRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLnRyZWVBZGFwdGVyLmRldGFjaE5vZGUobGFzdEVsZW1lbnQpO1xuICAgICAgICBpZiAoY29tbW9uQW5jZXN0b3IpXG4gICAgICAgICAgICBhYUluc2VydExhc3ROb2RlSW5Db21tb25BbmNlc3RvcihwLCBjb21tb25BbmNlc3RvciwgbGFzdEVsZW1lbnQpO1xuICAgICAgICBhYVJlcGxhY2VGb3JtYXR0aW5nRWxlbWVudChwLCBmdXJ0aGVzdEJsb2NrLCBmb3JtYXR0aW5nRWxlbWVudEVudHJ5KTtcbiAgICB9XG59XG4vL0dlbmVyaWMgdG9rZW4gaGFuZGxlcnNcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBhcHBlbmRDb21tZW50KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kQ29tbWVudE5vZGUodG9rZW4sIHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUbXBsQ29udGVudE9yTm9kZSk7XG59XG5mdW5jdGlvbiBhcHBlbmRDb21tZW50VG9Sb290SHRtbEVsZW1lbnQocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5vcGVuRWxlbWVudHMuaXRlbXNbMF0pO1xufVxuZnVuY3Rpb24gYXBwZW5kQ29tbWVudFRvRG9jdW1lbnQocCwgdG9rZW4pIHtcbiAgICBwLl9hcHBlbmRDb21tZW50Tm9kZSh0b2tlbiwgcC5kb2N1bWVudCk7XG59XG5mdW5jdGlvbiBzdG9wUGFyc2luZyhwLCB0b2tlbikge1xuICAgIHAuc3RvcHBlZCA9IHRydWU7XG4gICAgLy8gTk9URTogU2V0IGVuZCBsb2NhdGlvbnMgZm9yIGVsZW1lbnRzIHRoYXQgcmVtYWluIG9uIHRoZSBvcGVuIGVsZW1lbnQgc3RhY2suXG4gICAgaWYgKHRva2VuLmxvY2F0aW9uKSB7XG4gICAgICAgIC8vIE5PVEU6IElmIHdlIGFyZSBub3QgaW4gYSBmcmFnbWVudCwgYGh0bWxgIGFuZCBgYm9keWAgd2lsbCBzdGF5IG9uIHRoZSBzdGFjay5cbiAgICAgICAgLy8gVGhpcyBpcyBhIHByb2JsZW0sIGFzIHdlIG1pZ2h0IG92ZXJ3cml0ZSB0aGVpciBlbmQgcG9zaXRpb24gaGVyZS5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gcC5mcmFnbWVudENvbnRleHQgPyAwIDogMjtcbiAgICAgICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID49IHRhcmdldDsgaS0tKSB7XG4gICAgICAgICAgICBwLl9zZXRFbmRMb2NhdGlvbihwLm9wZW5FbGVtZW50cy5pdGVtc1tpXSwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIC8vIEhhbmRsZSBgaHRtbGAgYW5kIGBib2R5YFxuICAgICAgICBpZiAoIXAuZnJhZ21lbnRDb250ZXh0ICYmIHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IGh0bWxFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbMF07XG4gICAgICAgICAgICBjb25zdCBodG1sTG9jYXRpb24gPSBwLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oaHRtbEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKGh0bWxMb2NhdGlvbiAmJiAhaHRtbExvY2F0aW9uLmVuZFRhZykge1xuICAgICAgICAgICAgICAgIHAuX3NldEVuZExvY2F0aW9uKGh0bWxFbGVtZW50LCB0b2tlbik7XG4gICAgICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wID49IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1sxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9keUxvY2F0aW9uID0gcC50cmVlQWRhcHRlci5nZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKGJvZHlFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHlMb2NhdGlvbiAmJiAhYm9keUxvY2F0aW9uLmVuZFRhZykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcC5fc2V0RW5kTG9jYXRpb24oYm9keUVsZW1lbnQsIHRva2VuKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImluaXRpYWxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIGRvY3R5cGVJbkluaXRpYWxNb2RlKHAsIHRva2VuKSB7XG4gICAgcC5fc2V0RG9jdW1lbnRUeXBlKHRva2VuKTtcbiAgICBjb25zdCBtb2RlID0gdG9rZW4uZm9yY2VRdWlya3MgPyBET0NVTUVOVF9NT0RFLlFVSVJLUyA6IGRvY3R5cGUuZ2V0RG9jdW1lbnRNb2RlKHRva2VuKTtcbiAgICBpZiAoIWRvY3R5cGUuaXNDb25mb3JtaW5nKHRva2VuKSkge1xuICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5ub25Db25mb3JtaW5nRG9jdHlwZSk7XG4gICAgfVxuICAgIHAudHJlZUFkYXB0ZXIuc2V0RG9jdW1lbnRNb2RlKHAuZG9jdW1lbnQsIG1vZGUpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw7XG59XG5mdW5jdGlvbiB0b2tlbkluSW5pdGlhbE1vZGUocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIodG9rZW4sIEVSUi5taXNzaW5nRG9jdHlwZSwgdHJ1ZSk7XG4gICAgcC50cmVlQWRhcHRlci5zZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCwgRE9DVU1FTlRfTU9ERS5RVUlSS1MpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQkVGT1JFX0hUTUw7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cbi8vIFRoZSBcImJlZm9yZSBodG1sXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0JlZm9yZUh0bWwocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuSFRNTCkge1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnQmVmb3JlSHRtbChwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHRuID09PSAkLkhUTUwgfHwgdG4gPT09ICQuSEVBRCB8fCB0biA9PT0gJC5CT0RZIHx8IHRuID09PSAkLkJSKSB7XG4gICAgICAgIHRva2VuQmVmb3JlSHRtbChwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5CZWZvcmVIdG1sKHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RmFrZVJvb3RFbGVtZW50KCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5CRUZPUkVfSEVBRDtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiYmVmb3JlIGhlYWRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IRUFEOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaGVhZEVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5jdXJyZW50O1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5CZWZvcmVIZWFkKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0JlZm9yZUhlYWQocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmICh0biA9PT0gJC5IRUFEIHx8IHRuID09PSAkLkJPRFkgfHwgdG4gPT09ICQuSFRNTCB8fCB0biA9PT0gJC5CUikge1xuICAgICAgICB0b2tlbkJlZm9yZUhlYWQocCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgcC5fZXJyKHRva2VuLCBFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuQmVmb3JlSGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLkhFQUQsICQuSEVBRCk7XG4gICAgcC5oZWFkRWxlbWVudCA9IHAub3BlbkVsZW1lbnRzLmN1cnJlbnQ7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJpbiBoZWFkXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luSGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CQVNFOlxuICAgICAgICBjYXNlICQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgJC5CR1NPVU5EOlxuICAgICAgICBjYXNlICQuTElOSzpcbiAgICAgICAgY2FzZSAkLk1FVEE6IHtcbiAgICAgICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRJVExFOiB7XG4gICAgICAgICAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlJDREFUQSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgIGlmIChwLm9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCkge1xuICAgICAgICAgICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplck1vZGUuUkFXVEVYVCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0hFQURfTk9fU0NSSVBUO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PRlJBTUVTOlxuICAgICAgICBjYXNlICQuU1RZTEU6IHtcbiAgICAgICAgICAgIHAuX3N3aXRjaFRvVGV4dFBhcnNpbmcodG9rZW4sIFRva2VuaXplck1vZGUuUkFXVEVYVCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuU0NSSVBUOiB7XG4gICAgICAgICAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlNDUklQVF9EQVRBKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgcC5faW5zZXJ0VGVtcGxhdGUodG9rZW4pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuaW5zZXJ0TWFya2VyKCk7XG4gICAgICAgICAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEVNUExBVEU7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2sudW5zaGlmdChJbnNlcnRpb25Nb2RlLklOX1RFTVBMQVRFKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IRUFEOiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5taXNwbGFjZWRTdGFydFRhZ0ZvckhlYWRFbGVtZW50KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luSGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhFQUQ6IHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9IRUFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6XG4gICAgICAgIGNhc2UgJC5CUjpcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHRva2VuSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcC5fZXJyKHRva2VuLCBFUlIuZW5kVGFnV2l0aG91dE1hdGNoaW5nT3BlbkVsZW1lbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzVGhvcm91Z2hseSgpO1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkICE9PSAkLlRFTVBMQVRFKSB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5jbG9zaW5nT2ZFbGVtZW50V2l0aE9wZW5DaGlsZEVsZW1lbnRzKTtcbiAgICAgICAgfVxuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5URU1QTEFURSk7XG4gICAgICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmNsZWFyVG9MYXN0TWFya2VyKCk7XG4gICAgICAgIHAudG1wbEluc2VydGlvbk1vZGVTdGFjay5zaGlmdCgpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkluSGVhZChwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuQUZURVJfSEVBRDtcbiAgICBwLl9wcm9jZXNzVG9rZW4odG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gaGVhZCBubyBzY3JpcHRcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgJC5CR1NPVU5EOlxuICAgICAgICBjYXNlICQuSEVBRDpcbiAgICAgICAgY2FzZSAkLkxJTks6XG4gICAgICAgIGNhc2UgJC5NRVRBOlxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgIGNhc2UgJC5TVFlMRToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk5PU0NSSVBUOiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5uZXN0ZWROb3NjcmlwdEluSGVhZCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkluSGVhZE5vU2NyaXB0KHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luSGVhZE5vU2NyaXB0KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuTk9TQ1JJUFQ6IHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJSOiB7XG4gICAgICAgICAgICB0b2tlbkluSGVhZE5vU2NyaXB0KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLmVuZFRhZ1dpdGhvdXRNYXRjaGluZ09wZW5FbGVtZW50KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIHRva2VuSW5IZWFkTm9TY3JpcHQocCwgdG9rZW4pIHtcbiAgICBjb25zdCBlcnJDb2RlID0gdG9rZW4udHlwZSA9PT0gVG9rZW5UeXBlLkVPRiA/IEVSUi5vcGVuRWxlbWVudHNMZWZ0QWZ0ZXJFb2YgOiBFUlIuZGlzYWxsb3dlZENvbnRlbnRJbk5vc2NyaXB0SW5IZWFkO1xuICAgIHAuX2Vycih0b2tlbiwgZXJyQ29kZSk7XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9IRUFEO1xuICAgIHAuX3Byb2Nlc3NUb2tlbih0b2tlbik7XG59XG4vLyBUaGUgXCJhZnRlciBoZWFkXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVySGVhZChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CT0RZOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkZSQU1FU0VUOiB7XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fRlJBTUVTRVQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQkFTRTpcbiAgICAgICAgY2FzZSAkLkJBU0VGT05UOlxuICAgICAgICBjYXNlICQuQkdTT1VORDpcbiAgICAgICAgY2FzZSAkLkxJTks6XG4gICAgICAgIGNhc2UgJC5NRVRBOlxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgJC5TVFlMRTpcbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOlxuICAgICAgICBjYXNlICQuVElUTEU6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLmFiYW5kb25lZEhlYWRFbGVtZW50Q2hpbGQpO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucHVzaChwLmhlYWRFbGVtZW50LCAkLkhFQUQpO1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucmVtb3ZlKHAuaGVhZEVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkhFQUQ6IHtcbiAgICAgICAgICAgIHAuX2Vycih0b2tlbiwgRVJSLm1pc3BsYWNlZFN0YXJ0VGFnRm9ySGVhZEVsZW1lbnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnQWZ0ZXJIZWFkKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuQk9EWTpcbiAgICAgICAgY2FzZSAkLkhUTUw6XG4gICAgICAgIGNhc2UgJC5CUjoge1xuICAgICAgICAgICAgdG9rZW5BZnRlckhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBwLl9lcnIodG9rZW4sIEVSUi5lbmRUYWdXaXRob3V0TWF0Y2hpbmdPcGVuRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkFmdGVySGVhZChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLkJPRFksICQuQk9EWSk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgIG1vZGVJbkJvZHkocCwgdG9rZW4pO1xufVxuLy8gVGhlIFwiaW4gYm9keVwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gbW9kZUluQm9keShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAgICAgICBjYXNlIFRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgIGNoYXJhY3RlckluQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgd2hpdGVzcGFjZUNoYXJhY3RlckluQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFRva2VuVHlwZS5DT01NRU5UOiB7XG4gICAgICAgICAgICBhcHBlbmRDb21tZW50KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVG9rZW5UeXBlLlNUQVJUX1RBRzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBUb2tlblR5cGUuRU5EX1RBRzoge1xuICAgICAgICAgICAgZW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgVG9rZW5UeXBlLkVPRjoge1xuICAgICAgICAgICAgZW9mSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9XG59XG5mdW5jdGlvbiB3aGl0ZXNwYWNlQ2hhcmFjdGVySW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHRva2VuKTtcbn1cbmZ1bmN0aW9uIGNoYXJhY3RlckluQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0Q2hhcmFjdGVycyh0b2tlbik7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5mdW5jdGlvbiBodG1sU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKSB7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYWRvcHRBdHRyaWJ1dGVzKHAub3BlbkVsZW1lbnRzLml0ZW1zWzBdLCB0b2tlbi5hdHRycyk7XG4gICAgfVxufVxuZnVuY3Rpb24gYm9keVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgYm9keUVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy50cnlQZWVrUHJvcGVybHlOZXN0ZWRCb2R5RWxlbWVudCgpO1xuICAgIGlmIChib2R5RWxlbWVudCAmJiBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPT09IDApIHtcbiAgICAgICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuYWRvcHRBdHRyaWJ1dGVzKGJvZHlFbGVtZW50LCB0b2tlbi5hdHRycyk7XG4gICAgfVxufVxuZnVuY3Rpb24gZnJhbWVzZXRTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMudHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKTtcbiAgICBpZiAocC5mcmFtZXNldE9rICYmIGJvZHlFbGVtZW50KSB7XG4gICAgICAgIHAudHJlZUFkYXB0ZXIuZGV0YWNoTm9kZShib2R5RWxlbWVudCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcEFsbFVwVG9IdG1sRWxlbWVudCgpO1xuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9GUkFNRVNFVDtcbiAgICB9XG59XG5mdW5jdGlvbiBhZGRyZXNzU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5CdXR0b25TY29wZSgkLlApKSB7XG4gICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBudW1iZXJlZEhlYWRlclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIGlmIChOVU1CRVJFRF9IRUFERVJTLmhhcyhwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIH1cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIC8vTk9URTogSWYgdGhlIG5leHQgdG9rZW4gaXMgYSBVKzAwMEEgTElORSBGRUVEIChMRikgY2hhcmFjdGVyIHRva2VuLCB0aGVuIGlnbm9yZSB0aGF0IHRva2VuIGFuZCBtb3ZlXG4gICAgLy9vbiB0byB0aGUgbmV4dCBvbmUuIChOZXdsaW5lcyBhdCB0aGUgc3RhcnQgb2YgcHJlIGJsb2NrcyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxuICAgIHAuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGZvcm1TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IGluVGVtcGxhdGUgPSBwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwO1xuICAgIGlmICghcC5mb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgICAgIHAuX2Nsb3NlUEVsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgaWYgKCFpblRlbXBsYXRlKSB7XG4gICAgICAgICAgICBwLmZvcm1FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGxpc3RJdGVtU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGZvciAobGV0IGkgPSBwLm9wZW5FbGVtZW50cy5zdGFja1RvcDsgaSA+PSAwOyBpLS0pIHtcbiAgICAgICAgY29uc3QgZWxlbWVudElkID0gcC5vcGVuRWxlbWVudHMudGFnSURzW2ldO1xuICAgICAgICBpZiAoKHRuID09PSAkLkxJICYmIGVsZW1lbnRJZCA9PT0gJC5MSSkgfHxcbiAgICAgICAgICAgICgodG4gPT09ICQuREQgfHwgdG4gPT09ICQuRFQpICYmIChlbGVtZW50SWQgPT09ICQuREQgfHwgZWxlbWVudElkID09PSAkLkRUKSkpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3NXaXRoRXhjbHVzaW9uKGVsZW1lbnRJZCk7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoZWxlbWVudElkKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbGVtZW50SWQgIT09ICQuQUREUkVTUyAmJlxuICAgICAgICAgICAgZWxlbWVudElkICE9PSAkLkRJViAmJlxuICAgICAgICAgICAgZWxlbWVudElkICE9PSAkLlAgJiZcbiAgICAgICAgICAgIHAuX2lzU3BlY2lhbEVsZW1lbnQocC5vcGVuRWxlbWVudHMuaXRlbXNbaV0sIGVsZW1lbnRJZCkpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIHBsYWludGV4dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAudG9rZW5pemVyLnN0YXRlID0gVG9rZW5pemVyTW9kZS5QTEFJTlRFWFQ7XG59XG5mdW5jdGlvbiBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuQlVUVE9OKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzKCk7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkJVVFRPTik7XG4gICAgfVxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG59XG5mdW5jdGlvbiBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50RW50cnkgPSBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5nZXRFbGVtZW50RW50cnlJblNjb3BlV2l0aFRhZ05hbWUoVE4uQSk7XG4gICAgaWYgKGFjdGl2ZUVsZW1lbnRFbnRyeSkge1xuICAgICAgICBjYWxsQWRvcHRpb25BZ2VuY3kocCwgdG9rZW4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5yZW1vdmUoYWN0aXZlRWxlbWVudEVudHJ5LmVsZW1lbnQpO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5yZW1vdmVFbnRyeShhY3RpdmVFbGVtZW50RW50cnkpO1xuICAgIH1cbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcbn1cbmZ1bmN0aW9uIGJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMucHVzaEVsZW1lbnQocC5vcGVuRWxlbWVudHMuY3VycmVudCwgdG9rZW4pO1xufVxuZnVuY3Rpb24gbm9iclN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLk5PQlIpKSB7XG4gICAgICAgIGNhbGxBZG9wdGlvbkFnZW5jeShwLCB0b2tlbik7XG4gICAgICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLnB1c2hFbGVtZW50KHAub3BlbkVsZW1lbnRzLmN1cnJlbnQsIHRva2VuKTtcbn1cbmZ1bmN0aW9uIGFwcGxldFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIHRhYmxlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC50cmVlQWRhcHRlci5nZXREb2N1bWVudE1vZGUocC5kb2N1bWVudCkgIT09IERPQ1VNRU5UX01PREUuUVVJUktTICYmIHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG59XG5mdW5jdGlvbiBhcmVhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGlzSGlkZGVuSW5wdXQodG9rZW4pIHtcbiAgICBjb25zdCBpbnB1dFR5cGUgPSBnZXRUb2tlbkF0dHIodG9rZW4sIEFUVFJTLlRZUEUpO1xuICAgIHJldHVybiBpbnB1dFR5cGUgIT0gbnVsbCAmJiBpbnB1dFR5cGUudG9Mb3dlckNhc2UoKSA9PT0gSElEREVOX0lOUFVUX1RZUEU7XG59XG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBpZiAoIWlzSGlkZGVuSW5wdXQodG9rZW4pKSB7XG4gICAgICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIH1cbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xufVxuZnVuY3Rpb24gaHJTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJbkJ1dHRvblNjb3BlKCQuUCkpIHtcbiAgICAgICAgcC5fY2xvc2VQRWxlbWVudCgpO1xuICAgIH1cbiAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbiAgICB0b2tlbi5hY2tTZWxmQ2xvc2luZyA9IHRydWU7XG59XG5mdW5jdGlvbiBpbWFnZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgdG9rZW4udGFnTmFtZSA9IFROLklNRztcbiAgICB0b2tlbi50YWdJRCA9ICQuSU1HO1xuICAgIGFyZWFTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG59XG5mdW5jdGlvbiB0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgLy9OT1RFOiBJZiB0aGUgbmV4dCB0b2tlbiBpcyBhIFUrMDAwQSBMSU5FIEZFRUQgKExGKSBjaGFyYWN0ZXIgdG9rZW4sIHRoZW4gaWdub3JlIHRoYXQgdG9rZW4gYW5kIG1vdmVcbiAgICAvL29uIHRvIHRoZSBuZXh0IG9uZS4gKE5ld2xpbmVzIGF0IHRoZSBzdGFydCBvZiB0ZXh0YXJlYSBlbGVtZW50cyBhcmUgaWdub3JlZCBhcyBhbiBhdXRob3JpbmcgY29udmVuaWVuY2UuKVxuICAgIHAuc2tpcE5leHROZXdMaW5lID0gdHJ1ZTtcbiAgICBwLnRva2VuaXplci5zdGF0ZSA9IFRva2VuaXplck1vZGUuUkNEQVRBO1xuICAgIHAub3JpZ2luYWxJbnNlcnRpb25Nb2RlID0gcC5pbnNlcnRpb25Nb2RlO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuVEVYVDtcbn1cbmZ1bmN0aW9uIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG4gICAgfVxuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyTW9kZS5SQVdURVhUKTtcbn1cbmZ1bmN0aW9uIGlmcmFtZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5mcmFtZXNldE9rID0gZmFsc2U7XG4gICAgcC5fc3dpdGNoVG9UZXh0UGFyc2luZyh0b2tlbiwgVG9rZW5pemVyTW9kZS5SQVdURVhUKTtcbn1cbi8vTk9URTogaGVyZSB3ZSBhc3N1bWUgdGhhdCB3ZSBhbHdheXMgYWN0IGFzIGEgdXNlciBhZ2VudCB3aXRoIGVuYWJsZWQgcGx1Z2lucy9mcmFtZXMsIHNvIHdlIHBhcnNlXG4vLzxub2VtYmVkPi88bm9mcmFtZXM+IGFzIHJhd3RleHQuXG5mdW5jdGlvbiByYXdUZXh0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9zd2l0Y2hUb1RleHRQYXJzaW5nKHRva2VuLCBUb2tlbml6ZXJNb2RlLlJBV1RFWFQpO1xufVxuZnVuY3Rpb24gc2VsZWN0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRSB8fFxuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID09PSBJbnNlcnRpb25Nb2RlLklOX0NBUFRJT04gfHxcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9PT0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZIHx8XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IEluc2VydGlvbk1vZGUuSU5fUk9XIHx8XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPT09IEluc2VydGlvbk1vZGUuSU5fQ0VMTFxuICAgICAgICAgICAgPyBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVF9JTl9UQUJMRVxuICAgICAgICAgICAgOiBJbnNlcnRpb25Nb2RlLklOX1NFTEVDVDtcbn1cbmZ1bmN0aW9uIG9wdGdyb3VwU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSAkLk9QVElPTikge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICB9XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbn1cbmZ1bmN0aW9uIHJiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSgkLlJVQlkpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICB9XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBydFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5SVUJZKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLlJUQyk7XG4gICAgfVxuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xufVxuZnVuY3Rpb24gbWF0aFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlbk1hdGhNTEF0dHJzKHRva2VuKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuTUFUSE1MKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLk1BVEhNTCk7XG4gICAgfVxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgcC5fcmVjb25zdHJ1Y3RBY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMoKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR0F0dHJzKHRva2VuKTtcbiAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblhNTEF0dHJzKHRva2VuKTtcbiAgICBpZiAodG9rZW4uc2VsZkNsb3NpbmcpIHtcbiAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgTlMuU1ZHKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLlNWRyk7XG4gICAgfVxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHAuX3JlY29uc3RydWN0QWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzKCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG59XG5mdW5jdGlvbiBzdGFydFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkk6XG4gICAgICAgIGNhc2UgJC5TOlxuICAgICAgICBjYXNlICQuQjpcbiAgICAgICAgY2FzZSAkLlU6XG4gICAgICAgIGNhc2UgJC5FTTpcbiAgICAgICAgY2FzZSAkLlRUOlxuICAgICAgICBjYXNlICQuQklHOlxuICAgICAgICBjYXNlICQuQ09ERTpcbiAgICAgICAgY2FzZSAkLkZPTlQ6XG4gICAgICAgIGNhc2UgJC5TTUFMTDpcbiAgICAgICAgY2FzZSAkLlNUUklLRTpcbiAgICAgICAgY2FzZSAkLlNUUk9ORzoge1xuICAgICAgICAgICAgYlN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5BOiB7XG4gICAgICAgICAgICBhU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkgxOlxuICAgICAgICBjYXNlICQuSDI6XG4gICAgICAgIGNhc2UgJC5IMzpcbiAgICAgICAgY2FzZSAkLkg0OlxuICAgICAgICBjYXNlICQuSDU6XG4gICAgICAgIGNhc2UgJC5INjoge1xuICAgICAgICAgICAgbnVtYmVyZWRIZWFkZXJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuUDpcbiAgICAgICAgY2FzZSAkLkRMOlxuICAgICAgICBjYXNlICQuT0w6XG4gICAgICAgIGNhc2UgJC5VTDpcbiAgICAgICAgY2FzZSAkLkRJVjpcbiAgICAgICAgY2FzZSAkLkRJUjpcbiAgICAgICAgY2FzZSAkLk5BVjpcbiAgICAgICAgY2FzZSAkLk1BSU46XG4gICAgICAgIGNhc2UgJC5NRU5VOlxuICAgICAgICBjYXNlICQuQVNJREU6XG4gICAgICAgIGNhc2UgJC5DRU5URVI6XG4gICAgICAgIGNhc2UgJC5GSUdVUkU6XG4gICAgICAgIGNhc2UgJC5GT09URVI6XG4gICAgICAgIGNhc2UgJC5IRUFERVI6XG4gICAgICAgIGNhc2UgJC5IR1JPVVA6XG4gICAgICAgIGNhc2UgJC5ESUFMT0c6XG4gICAgICAgIGNhc2UgJC5ERVRBSUxTOlxuICAgICAgICBjYXNlICQuQUREUkVTUzpcbiAgICAgICAgY2FzZSAkLkFSVElDTEU6XG4gICAgICAgIGNhc2UgJC5TRUFSQ0g6XG4gICAgICAgIGNhc2UgJC5TRUNUSU9OOlxuICAgICAgICBjYXNlICQuU1VNTUFSWTpcbiAgICAgICAgY2FzZSAkLkZJRUxEU0VUOlxuICAgICAgICBjYXNlICQuQkxPQ0tRVU9URTpcbiAgICAgICAgY2FzZSAkLkZJR0NBUFRJT046IHtcbiAgICAgICAgICAgIGFkZHJlc3NTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTEk6XG4gICAgICAgIGNhc2UgJC5ERDpcbiAgICAgICAgY2FzZSAkLkRUOiB7XG4gICAgICAgICAgICBsaXN0SXRlbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CUjpcbiAgICAgICAgY2FzZSAkLklNRzpcbiAgICAgICAgY2FzZSAkLldCUjpcbiAgICAgICAgY2FzZSAkLkFSRUE6XG4gICAgICAgIGNhc2UgJC5FTUJFRDpcbiAgICAgICAgY2FzZSAkLktFWUdFTjoge1xuICAgICAgICAgICAgYXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IUjoge1xuICAgICAgICAgICAgaHJTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuUkI6XG4gICAgICAgIGNhc2UgJC5SVEM6IHtcbiAgICAgICAgICAgIHJiU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlJUOlxuICAgICAgICBjYXNlICQuUlA6IHtcbiAgICAgICAgICAgIHJ0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlBSRTpcbiAgICAgICAgY2FzZSAkLkxJU1RJTkc6IHtcbiAgICAgICAgICAgIHByZVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5YTVA6IHtcbiAgICAgICAgICAgIHhtcFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5TVkc6IHtcbiAgICAgICAgICAgIHN2Z1N0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBodG1sU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJBU0U6XG4gICAgICAgIGNhc2UgJC5MSU5LOlxuICAgICAgICBjYXNlICQuTUVUQTpcbiAgICAgICAgY2FzZSAkLlNUWUxFOlxuICAgICAgICBjYXNlICQuVElUTEU6XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgJC5CR1NPVU5EOlxuICAgICAgICBjYXNlICQuQkFTRUZPTlQ6XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6IHtcbiAgICAgICAgICAgIGJvZHlTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRk9STToge1xuICAgICAgICAgICAgZm9ybVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT0JSOiB7XG4gICAgICAgICAgICBub2JyU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk1BVEg6IHtcbiAgICAgICAgICAgIG1hdGhTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEFCTEU6IHtcbiAgICAgICAgICAgIHRhYmxlU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLklOUFVUOiB7XG4gICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5QQVJBTTpcbiAgICAgICAgY2FzZSAkLlRSQUNLOlxuICAgICAgICBjYXNlICQuU09VUkNFOiB7XG4gICAgICAgICAgICBwYXJhbVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5JTUFHRToge1xuICAgICAgICAgICAgaW1hZ2VTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQlVUVE9OOiB7XG4gICAgICAgICAgICBidXR0b25TdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQVBQTEVUOlxuICAgICAgICBjYXNlICQuT0JKRUNUOlxuICAgICAgICBjYXNlICQuTUFSUVVFRToge1xuICAgICAgICAgICAgYXBwbGV0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLklGUkFNRToge1xuICAgICAgICAgICAgaWZyYW1lU3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlNFTEVDVDoge1xuICAgICAgICAgICAgc2VsZWN0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLk9QVElPTjpcbiAgICAgICAgY2FzZSAkLk9QVEdST1VQOiB7XG4gICAgICAgICAgICBvcHRncm91cFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT0VNQkVEOlxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6IHtcbiAgICAgICAgICAgIHJhd1RleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgIGZyYW1lc2V0U3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFWFRBUkVBOiB7XG4gICAgICAgICAgICB0ZXh0YXJlYVN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT1NDUklQVDoge1xuICAgICAgICAgICAgaWYgKHAub3B0aW9ucy5zY3JpcHRpbmdFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgcmF3VGV4dFN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuUExBSU5URVhUOiB7XG4gICAgICAgICAgICBwbGFpbnRleHRTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ09MOlxuICAgICAgICBjYXNlICQuVEg6XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRSOlxuICAgICAgICBjYXNlICQuSEVBRDpcbiAgICAgICAgY2FzZSAkLkZSQU1FOlxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOlxuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgdG9rZW5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGdlbmVyaWNTdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBib2R5RW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5CT0RZKSkge1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk7XG4gICAgICAgIC8vTk9URTogPGJvZHk+IGlzIG5ldmVyIHBvcHBlZCBmcm9tIHRoZSBzdGFjaywgc28gd2UgbmVlZCB0byB1cGRhdGVkXG4gICAgICAgIC8vdGhlIGVuZCBsb2NhdGlvbiBleHBsaWNpdGx5LlxuICAgICAgICBpZiAocC5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8pIHtcbiAgICAgICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMudHJ5UGVla1Byb3Blcmx5TmVzdGVkQm9keUVsZW1lbnQoKTtcbiAgICAgICAgICAgIGlmIChib2R5RWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHAuX3NldEVuZExvY2F0aW9uKGJvZHlFbGVtZW50LCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBodG1sRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUoJC5CT0RZKSkge1xuICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLkFGVEVSX0JPRFk7XG4gICAgICAgIGVuZFRhZ0FmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gYWRkcmVzc0VuZFRhZ0luQm9keShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luU2NvcGUodG4pKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKHRuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBmb3JtRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBjb25zdCBpblRlbXBsYXRlID0gcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID4gMDtcbiAgICBjb25zdCB7IGZvcm1FbGVtZW50IH0gPSBwO1xuICAgIGlmICghaW5UZW1wbGF0ZSkge1xuICAgICAgICBwLmZvcm1FbGVtZW50ID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKChmb3JtRWxlbWVudCB8fCBpblRlbXBsYXRlKSAmJiBwLm9wZW5FbGVtZW50cy5oYXNJblNjb3BlKCQuRk9STSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBpZiAoaW5UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuRk9STSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZm9ybUVsZW1lbnQpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnJlbW92ZShmb3JtRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBwRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAoIXAub3BlbkVsZW1lbnRzLmhhc0luQnV0dG9uU2NvcGUoJC5QKSkge1xuICAgICAgICBwLl9pbnNlcnRGYWtlRWxlbWVudChUTi5QLCAkLlApO1xuICAgIH1cbiAgICBwLl9jbG9zZVBFbGVtZW50KCk7XG59XG5mdW5jdGlvbiBsaUVuZFRhZ0luQm9keShwKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luTGlzdEl0ZW1TY29wZSgkLkxJKSkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbigkLkxJKTtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuTEkpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGRkRW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFnc1dpdGhFeGNsdXNpb24odG4pO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIG51bWJlcmVkSGVhZGVyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzTnVtYmVyZWRIZWFkZXJJblNjb3BlKCkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbE51bWJlcmVkSGVhZGVyUG9wcGVkKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gYXBwbGV0RW5kVGFnSW5Cb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TY29wZSh0bikpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQodG4pO1xuICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGJyRW5kVGFnSW5Cb2R5KHApIHtcbiAgICBwLl9yZWNvbnN0cnVjdEFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cygpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLkJSLCAkLkJSKTtcbiAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICBwLmZyYW1lc2V0T2sgPSBmYWxzZTtcbn1cbmZ1bmN0aW9uIGdlbmVyaWNFbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ05hbWU7XG4gICAgY29uc3QgdGlkID0gdG9rZW4udGFnSUQ7XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcbiAgICAgICAgY29uc3QgZWxlbWVudElkID0gcC5vcGVuRWxlbWVudHMudGFnSURzW2ldO1xuICAgICAgICAvLyBDb21wYXJlIHRoZSB0YWcgbmFtZSBoZXJlLCBhcyB0aGUgdGFnIG1pZ2h0IG5vdCBiZSBhIGtub3duIHRhZyB3aXRoIGFuIElELlxuICAgICAgICBpZiAodGlkID09PSBlbGVtZW50SWQgJiYgKHRpZCAhPT0gJC5VTktOT1dOIHx8IHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KSA9PT0gdG4pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5nZW5lcmF0ZUltcGxpZWRFbmRUYWdzV2l0aEV4Y2x1c2lvbih0aWQpO1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wID49IGkpXG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuc2hvcnRlblRvTGVuZ3RoKGkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHAuX2lzU3BlY2lhbEVsZW1lbnQoZWxlbWVudCwgZWxlbWVudElkKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5BOlxuICAgICAgICBjYXNlICQuQjpcbiAgICAgICAgY2FzZSAkLkk6XG4gICAgICAgIGNhc2UgJC5TOlxuICAgICAgICBjYXNlICQuVTpcbiAgICAgICAgY2FzZSAkLkVNOlxuICAgICAgICBjYXNlICQuVFQ6XG4gICAgICAgIGNhc2UgJC5CSUc6XG4gICAgICAgIGNhc2UgJC5DT0RFOlxuICAgICAgICBjYXNlICQuRk9OVDpcbiAgICAgICAgY2FzZSAkLk5PQlI6XG4gICAgICAgIGNhc2UgJC5TTUFMTDpcbiAgICAgICAgY2FzZSAkLlNUUklLRTpcbiAgICAgICAgY2FzZSAkLlNUUk9ORzoge1xuICAgICAgICAgICAgY2FsbEFkb3B0aW9uQWdlbmN5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5QOiB7XG4gICAgICAgICAgICBwRW5kVGFnSW5Cb2R5KHApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkRMOlxuICAgICAgICBjYXNlICQuVUw6XG4gICAgICAgIGNhc2UgJC5PTDpcbiAgICAgICAgY2FzZSAkLkRJUjpcbiAgICAgICAgY2FzZSAkLkRJVjpcbiAgICAgICAgY2FzZSAkLk5BVjpcbiAgICAgICAgY2FzZSAkLlBSRTpcbiAgICAgICAgY2FzZSAkLk1BSU46XG4gICAgICAgIGNhc2UgJC5NRU5VOlxuICAgICAgICBjYXNlICQuQVNJREU6XG4gICAgICAgIGNhc2UgJC5CVVRUT046XG4gICAgICAgIGNhc2UgJC5DRU5URVI6XG4gICAgICAgIGNhc2UgJC5GSUdVUkU6XG4gICAgICAgIGNhc2UgJC5GT09URVI6XG4gICAgICAgIGNhc2UgJC5IRUFERVI6XG4gICAgICAgIGNhc2UgJC5IR1JPVVA6XG4gICAgICAgIGNhc2UgJC5ESUFMT0c6XG4gICAgICAgIGNhc2UgJC5BRERSRVNTOlxuICAgICAgICBjYXNlICQuQVJUSUNMRTpcbiAgICAgICAgY2FzZSAkLkRFVEFJTFM6XG4gICAgICAgIGNhc2UgJC5TRUFSQ0g6XG4gICAgICAgIGNhc2UgJC5TRUNUSU9OOlxuICAgICAgICBjYXNlICQuU1VNTUFSWTpcbiAgICAgICAgY2FzZSAkLkxJU1RJTkc6XG4gICAgICAgIGNhc2UgJC5GSUVMRFNFVDpcbiAgICAgICAgY2FzZSAkLkJMT0NLUVVPVEU6XG4gICAgICAgIGNhc2UgJC5GSUdDQVBUSU9OOiB7XG4gICAgICAgICAgICBhZGRyZXNzRW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5MSToge1xuICAgICAgICAgICAgbGlFbmRUYWdJbkJvZHkocCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuREQ6XG4gICAgICAgIGNhc2UgJC5EVDoge1xuICAgICAgICAgICAgZGRFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkgxOlxuICAgICAgICBjYXNlICQuSDI6XG4gICAgICAgIGNhc2UgJC5IMzpcbiAgICAgICAgY2FzZSAkLkg0OlxuICAgICAgICBjYXNlICQuSDU6XG4gICAgICAgIGNhc2UgJC5INjoge1xuICAgICAgICAgICAgbnVtYmVyZWRIZWFkZXJFbmRUYWdJbkJvZHkocCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQlI6IHtcbiAgICAgICAgICAgIGJyRW5kVGFnSW5Cb2R5KHApO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6IHtcbiAgICAgICAgICAgIGJvZHlFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIGh0bWxFbmRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkZPUk06IHtcbiAgICAgICAgICAgIGZvcm1FbmRUYWdJbkJvZHkocCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQVBQTEVUOlxuICAgICAgICBjYXNlICQuT0JKRUNUOlxuICAgICAgICBjYXNlICQuTUFSUVVFRToge1xuICAgICAgICAgICAgYXBwbGV0RW5kVGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZ2VuZXJpY0VuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlb2ZJbkJvZHkocCwgdG9rZW4pIHtcbiAgICBpZiAocC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgZW9mSW5UZW1wbGF0ZShwLCB0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdG9wUGFyc2luZyhwLCB0b2tlbik7XG4gICAgfVxufVxuLy8gVGhlIFwidGV4dFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gZW5kVGFnSW5UZXh0KHAsIHRva2VuKSB7XG4gICAgdmFyIF9hO1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gJC5TQ1JJUFQpIHtcbiAgICAgICAgKF9hID0gcC5zY3JpcHRIYW5kbGVyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChwLCBwLm9wZW5FbGVtZW50cy5jdXJyZW50KTtcbiAgICB9XG4gICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gcC5vcmlnaW5hbEluc2VydGlvbk1vZGU7XG59XG5mdW5jdGlvbiBlb2ZJblRleHQocCwgdG9rZW4pIHtcbiAgICBwLl9lcnIodG9rZW4sIEVSUi5lb2ZJbkVsZW1lbnRUaGF0Q2FuQ29udGFpbk9ubHlUZXh0KTtcbiAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBwLm9yaWdpbmFsSW5zZXJ0aW9uTW9kZTtcbiAgICBwLm9uRW9mKHRva2VuKTtcbn1cbi8vIFRoZSBcImluIHRhYmxlXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBjaGFyYWN0ZXJJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgaWYgKFRBQkxFX1NUUlVDVFVSRV9UQUdTLmhhcyhwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQpKSB7XG4gICAgICAgIHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5sZW5ndGggPSAwO1xuICAgICAgICBwLmhhc05vbldoaXRlc3BhY2VQZW5kaW5nQ2hhcmFjdGVyVG9rZW4gPSBmYWxzZTtcbiAgICAgICAgcC5vcmlnaW5hbEluc2VydGlvbk1vZGUgPSBwLmluc2VydGlvbk1vZGU7XG4gICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfVEVYVDtcbiAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5DSEFSQUNURVI6IHtcbiAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIFRva2VuVHlwZS5XSElURVNQQUNFX0NIQVJBQ1RFUjoge1xuICAgICAgICAgICAgICAgIHdoaXRlc3BhY2VDaGFyYWN0ZXJJblRhYmxlVGV4dChwLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBJZ25vcmUgbnVsbFxuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGNhcHRpb25TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuYWN0aXZlRm9ybWF0dGluZ0VsZW1lbnRzLmluc2VydE1hcmtlcigpO1xuICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ0FQVElPTjtcbn1cbmZ1bmN0aW9uIGNvbGdyb3VwU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUNvbnRleHQoKTtcbiAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDtcbn1cbmZ1bmN0aW9uIGNvbFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RmFrZUVsZW1lbnQoVE4uQ09MR1JPVVAsICQuQ09MR1JPVVApO1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQO1xuICAgIHN0YXJ0VGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbik7XG59XG5mdW5jdGlvbiB0Ym9keVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVDb250ZXh0KCk7XG4gICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xufVxuZnVuY3Rpb24gdGRTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQ29udGV4dCgpO1xuICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLlRCT0RZLCAkLlRCT0RZKTtcbiAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFX0JPRFk7XG4gICAgc3RhcnRUYWdJblRhYmxlQm9keShwLCB0b2tlbik7XG59XG5mdW5jdGlvbiB0YWJsZVN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UQUJMRSkpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuVEFCTEUpO1xuICAgICAgICBwLl9yZXNldEluc2VydGlvbk1vZGUoKTtcbiAgICAgICAgcC5fcHJvY2Vzc1N0YXJ0VGFnKHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbikge1xuICAgIGlmIChpc0hpZGRlbklucHV0KHRva2VuKSkge1xuICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgfVxuICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIGZvcm1TdGFydFRhZ0luVGFibGUocCwgdG9rZW4pIHtcbiAgICBpZiAoIXAuZm9ybUVsZW1lbnQgJiYgcC5vcGVuRWxlbWVudHMudG1wbENvdW50ID09PSAwKSB7XG4gICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICBwLmZvcm1FbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuY3VycmVudDtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgfVxufVxuZnVuY3Rpb24gc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgIGNhc2UgJC5USDpcbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICB0ZFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuU1RZTEU6XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkNPTDoge1xuICAgICAgICAgICAgY29sU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5GT1JNOiB7XG4gICAgICAgICAgICBmb3JtU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgdGFibGVTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USEVBRDoge1xuICAgICAgICAgICAgdGJvZHlTdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLklOUFVUOiB7XG4gICAgICAgICAgICBpbnB1dFN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ0FQVElPTjoge1xuICAgICAgICAgICAgY2FwdGlvblN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6IHtcbiAgICAgICAgICAgIGNvbGdyb3VwU3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIHRva2VuSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJblRhYmxlKHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuVEFCTEU6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UQUJMRSkpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5UQUJMRSk7XG4gICAgICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEVNUExBVEU6IHtcbiAgICAgICAgICAgIHRlbXBsYXRlRW5kVGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CT0RZOlxuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLkNPTDpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOlxuICAgICAgICBjYXNlICQuSFRNTDpcbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIOlxuICAgICAgICBjYXNlICQuVEhFQUQ6XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkluVGFibGUocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5JblRhYmxlKHAsIHRva2VuKSB7XG4gICAgY29uc3Qgc2F2ZWRGb3N0ZXJQYXJlbnRpbmdTdGF0ZSA9IHAuZm9zdGVyUGFyZW50aW5nRW5hYmxlZDtcbiAgICBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSB0cnVlO1xuICAgIC8vIFByb2Nlc3MgdG9rZW4gaW4gYEluIEJvZHlgIG1vZGVcbiAgICBtb2RlSW5Cb2R5KHAsIHRva2VuKTtcbiAgICBwLmZvc3RlclBhcmVudGluZ0VuYWJsZWQgPSBzYXZlZEZvc3RlclBhcmVudGluZ1N0YXRlO1xufVxuLy8gVGhlIFwiaW4gdGFibGUgdGV4dFwiIGluc2VydGlvbiBtb2RlXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gd2hpdGVzcGFjZUNoYXJhY3RlckluVGFibGVUZXh0KHAsIHRva2VuKSB7XG4gICAgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLnB1c2godG9rZW4pO1xufVxuZnVuY3Rpb24gY2hhcmFjdGVySW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICBwLnBlbmRpbmdDaGFyYWN0ZXJUb2tlbnMucHVzaCh0b2tlbik7XG4gICAgcC5oYXNOb25XaGl0ZXNwYWNlUGVuZGluZ0NoYXJhY3RlclRva2VuID0gdHJ1ZTtcbn1cbmZ1bmN0aW9uIHRva2VuSW5UYWJsZVRleHQocCwgdG9rZW4pIHtcbiAgICBsZXQgaSA9IDA7XG4gICAgaWYgKHAuaGFzTm9uV2hpdGVzcGFjZVBlbmRpbmdDaGFyYWN0ZXJUb2tlbikge1xuICAgICAgICBmb3IgKDsgaSA8IHAucGVuZGluZ0NoYXJhY3RlclRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgdG9rZW5JblRhYmxlKHAsIHAucGVuZGluZ0NoYXJhY3RlclRva2Vuc1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGZvciAoOyBpIDwgcC5wZW5kaW5nQ2hhcmFjdGVyVG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBwLl9pbnNlcnRDaGFyYWN0ZXJzKHAucGVuZGluZ0NoYXJhY3RlclRva2Vuc1tpXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcC5pbnNlcnRpb25Nb2RlID0gcC5vcmlnaW5hbEluc2VydGlvbk1vZGU7XG4gICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbn1cbi8vIFRoZSBcImluIGNhcHRpb25cIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmNvbnN0IFRBQkxFX1ZPSURfRUxFTUVOVFMgPSBuZXcgU2V0KFskLkNBUFRJT04sICQuQ09MLCAkLkNPTEdST1VQLCAkLlRCT0RZLCAkLlRELCAkLlRGT09ULCAkLlRILCAkLlRIRUFELCAkLlRSXSk7XG5mdW5jdGlvbiBzdGFydFRhZ0luQ2FwdGlvbihwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKFRBQkxFX1ZPSURfRUxFTUVOVFMuaGFzKHRuKSkge1xuICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuQ0FQVElPTikpIHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLkNBUFRJT04pO1xuICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5DYXB0aW9uKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBzd2l0Y2ggKHRuKSB7XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuVEFCTEU6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5DQVBUSU9OKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmdlbmVyYXRlSW1wbGllZEVuZFRhZ3MoKTtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5DQVBUSU9OKTtcbiAgICAgICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5jbGVhclRvTGFzdE1hcmtlcigpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICAgICAgaWYgKHRuID09PSAkLlRBQkxFKSB7XG4gICAgICAgICAgICAgICAgICAgIGVuZFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CT0RZOlxuICAgICAgICBjYXNlICQuQ09MOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5IVE1MOlxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEg6XG4gICAgICAgIGNhc2UgJC5USEVBRDpcbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgdG9rZW5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBUaGUgXCJpbiBjb2x1bW4gZ3JvdXBcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DT0w6IHtcbiAgICAgICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5Db2x1bW5Hcm91cChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSAkLkNPTEdST1VQKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgdGVtcGxhdGVFbmRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkNPTDoge1xuICAgICAgICAgICAgLy8gSWdub3JlIHRva2VuXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICB0b2tlbkluQ29sdW1uR3JvdXAocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5JbkNvbHVtbkdyb3VwKHAsIHRva2VuKSB7XG4gICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5DT0xHUk9VUCkge1xuICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgcC5fcHJvY2Vzc1Rva2VuKHRva2VuKTtcbiAgICB9XG59XG4vLyBUaGUgXCJpbiB0YWJsZSBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5USDpcbiAgICAgICAgY2FzZSAkLlREOiB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlQm9keUNvbnRleHQoKTtcbiAgICAgICAgICAgIHAuX2luc2VydEZha2VFbGVtZW50KFROLlRSLCAkLlRSKTtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fUk9XO1xuICAgICAgICAgICAgc3RhcnRUYWdJblJvdyhwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLkNPTDpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOlxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzVGFibGVCb2R5Q29udGV4dEluVGFibGVTY29wZSgpKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgICAgICBzdGFydFRhZ0luVGFibGUocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuY2xlYXJCYWNrVG9UYWJsZUJvZHlDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc1RhYmxlQm9keUNvbnRleHRJblRhYmxlU2NvcGUoKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVCb2R5Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEU7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQk9EWTpcbiAgICAgICAgY2FzZSAkLkNBUFRJT046XG4gICAgICAgIGNhc2UgJC5DT0w6XG4gICAgICAgIGNhc2UgJC5DT0xHUk9VUDpcbiAgICAgICAgY2FzZSAkLkhUTUw6XG4gICAgICAgIGNhc2UgJC5URDpcbiAgICAgICAgY2FzZSAkLlRIOlxuICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSB0b2tlblxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgZW5kVGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBUaGUgXCJpbiByb3dcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Sb3cocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5USDpcbiAgICAgICAgY2FzZSAkLlREOiB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX0NFTEw7XG4gICAgICAgICAgICBwLmFjdGl2ZUZvcm1hdHRpbmdFbGVtZW50cy5pbnNlcnRNYXJrZXIoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xuICAgICAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZUJvZHkocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luUm93KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuVFI6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5UUikpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jbGVhckJhY2tUb1RhYmxlUm93Q29udGV4dCgpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fVEFCTEVfQk9EWTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5UQUJMRToge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5UQk9EWTpcbiAgICAgICAgY2FzZSAkLlRGT09UOlxuICAgICAgICBjYXNlICQuVEhFQUQ6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG9rZW4udGFnSUQpIHx8IHAub3BlbkVsZW1lbnRzLmhhc0luVGFibGVTY29wZSgkLlRSKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLmNsZWFyQmFja1RvVGFibGVSb3dDb250ZXh0KCk7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xuICAgICAgICAgICAgICAgIGVuZFRhZ0luVGFibGVCb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5CT0RZOlxuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLkNPTDpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOlxuICAgICAgICBjYXNlICQuSFRNTDpcbiAgICAgICAgY2FzZSAkLlREOlxuICAgICAgICBjYXNlICQuVEg6IHtcbiAgICAgICAgICAgIC8vIElnbm9yZSBlbmQgdGFnXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICBlbmRUYWdJblRhYmxlKHAsIHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImluIGNlbGxcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5DZWxsKHAsIHRva2VuKSB7XG4gICAgY29uc3QgdG4gPSB0b2tlbi50YWdJRDtcbiAgICBpZiAoVEFCTEVfVk9JRF9FTEVNRU5UUy5oYXModG4pKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUoJC5URCkgfHwgcC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKCQuVEgpKSB7XG4gICAgICAgICAgICBwLl9jbG9zZVRhYmxlQ2VsbCgpO1xuICAgICAgICAgICAgc3RhcnRUYWdJblJvdyhwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJbkNlbGwocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIHN3aXRjaCAodG4pIHtcbiAgICAgICAgY2FzZSAkLlREOlxuICAgICAgICBjYXNlICQuVEg6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuZ2VuZXJhdGVJbXBsaWVkRW5kVGFncygpO1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCh0bik7XG4gICAgICAgICAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5UQUJMRTpcbiAgICAgICAgY2FzZSAkLlRCT0RZOlxuICAgICAgICBjYXNlICQuVEZPT1Q6XG4gICAgICAgIGNhc2UgJC5USEVBRDpcbiAgICAgICAgY2FzZSAkLlRSOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5UYWJsZVNjb3BlKHRuKSkge1xuICAgICAgICAgICAgICAgIHAuX2Nsb3NlVGFibGVDZWxsKCk7XG4gICAgICAgICAgICAgICAgZW5kVGFnSW5Sb3cocCwgdG9rZW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkJPRFk6XG4gICAgICAgIGNhc2UgJC5DQVBUSU9OOlxuICAgICAgICBjYXNlICQuQ09MOlxuICAgICAgICBjYXNlICQuQ09MR1JPVVA6XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICAvLyBJZ25vcmUgdG9rZW5cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICAgIGVuZFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgIH1cbiAgICB9XG59XG4vLyBUaGUgXCJpbiBzZWxlY3RcIiBpbnNlcnRpb24gbW9kZVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5TZWxlY3QocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuT1BUSU9OOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSAkLk9QVElPTikge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcC5faW5zZXJ0RWxlbWVudCh0b2tlbiwgTlMuSFRNTCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuT1BUR1JPVVA6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuT1BUSU9OKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuY3VycmVudFRhZ0lkID09PSAkLk9QVEdST1VQKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwLl9pbnNlcnRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5IUjoge1xuICAgICAgICAgICAgaWYgKHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCA9PT0gJC5PUFRJT04pIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAuX2FwcGVuZEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLklOUFVUOlxuICAgICAgICBjYXNlICQuS0VZR0VOOlxuICAgICAgICBjYXNlICQuVEVYVEFSRUE6XG4gICAgICAgIGNhc2UgJC5TRUxFQ1Q6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblNlbGVjdFNjb3BlKCQuU0VMRUNUKSkge1xuICAgICAgICAgICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlNFTEVDVCk7XG4gICAgICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICAgICAgaWYgKHRva2VuLnRhZ0lEICE9PSAkLlNFTEVDVCkge1xuICAgICAgICAgICAgICAgICAgICBwLl9wcm9jZXNzU3RhcnRUYWcodG9rZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5TQ1JJUFQ6XG4gICAgICAgIGNhc2UgJC5URU1QTEFURToge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luU2VsZWN0KHAsIHRva2VuKSB7XG4gICAgc3dpdGNoICh0b2tlbi50YWdJRCkge1xuICAgICAgICBjYXNlICQuT1BUR1JPVVA6IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5zdGFja1RvcCA+IDAgJiZcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuT1BUSU9OICYmXG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMudGFnSURzW3Aub3BlbkVsZW1lbnRzLnN0YWNrVG9wIC0gMV0gPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuT1BUR1JPVVApIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3AoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5PUFRJT046IHtcbiAgICAgICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQgPT09ICQuT1BUSU9OKSB7XG4gICAgICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuU0VMRUNUOiB7XG4gICAgICAgICAgICBpZiAocC5vcGVuRWxlbWVudHMuaGFzSW5TZWxlY3RTY29wZSgkLlNFTEVDVCkpIHtcbiAgICAgICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICAgICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLlRFTVBMQVRFOiB7XG4gICAgICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBEbyBub3RoaW5nXG4gICAgfVxufVxuLy8gVGhlIFwiaW4gc2VsZWN0IGluIHRhYmxlXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luU2VsZWN0SW5UYWJsZShwLCB0b2tlbikge1xuICAgIGNvbnN0IHRuID0gdG9rZW4udGFnSUQ7XG4gICAgaWYgKHRuID09PSAkLkNBUFRJT04gfHxcbiAgICAgICAgdG4gPT09ICQuVEFCTEUgfHxcbiAgICAgICAgdG4gPT09ICQuVEJPRFkgfHxcbiAgICAgICAgdG4gPT09ICQuVEZPT1QgfHxcbiAgICAgICAgdG4gPT09ICQuVEhFQUQgfHxcbiAgICAgICAgdG4gPT09ICQuVFIgfHxcbiAgICAgICAgdG4gPT09ICQuVEQgfHxcbiAgICAgICAgdG4gPT09ICQuVEgpIHtcbiAgICAgICAgcC5vcGVuRWxlbWVudHMucG9wVW50aWxUYWdOYW1lUG9wcGVkKCQuU0VMRUNUKTtcbiAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgIHAuX3Byb2Nlc3NTdGFydFRhZyh0b2tlbik7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBzdGFydFRhZ0luU2VsZWN0KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdJblNlbGVjdEluVGFibGUocCwgdG9rZW4pIHtcbiAgICBjb25zdCB0biA9IHRva2VuLnRhZ0lEO1xuICAgIGlmICh0biA9PT0gJC5DQVBUSU9OIHx8XG4gICAgICAgIHRuID09PSAkLlRBQkxFIHx8XG4gICAgICAgIHRuID09PSAkLlRCT0RZIHx8XG4gICAgICAgIHRuID09PSAkLlRGT09UIHx8XG4gICAgICAgIHRuID09PSAkLlRIRUFEIHx8XG4gICAgICAgIHRuID09PSAkLlRSIHx8XG4gICAgICAgIHRuID09PSAkLlREIHx8XG4gICAgICAgIHRuID09PSAkLlRIKSB7XG4gICAgICAgIGlmIChwLm9wZW5FbGVtZW50cy5oYXNJblRhYmxlU2NvcGUodG4pKSB7XG4gICAgICAgICAgICBwLm9wZW5FbGVtZW50cy5wb3BVbnRpbFRhZ05hbWVQb3BwZWQoJC5TRUxFQ1QpO1xuICAgICAgICAgICAgcC5fcmVzZXRJbnNlcnRpb25Nb2RlKCk7XG4gICAgICAgICAgICBwLm9uRW5kVGFnKHRva2VuKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgZW5kVGFnSW5TZWxlY3QocCwgdG9rZW4pO1xuICAgIH1cbn1cbi8vIFRoZSBcImluIHRlbXBsYXRlXCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luVGVtcGxhdGUocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIC8vIEZpcnN0LCBoYW5kbGUgdGFncyB0aGF0IGNhbiBzdGFydCB3aXRob3V0IGEgbW9kZSBjaGFuZ2VcbiAgICAgICAgY2FzZSAkLkJBU0U6XG4gICAgICAgIGNhc2UgJC5CQVNFRk9OVDpcbiAgICAgICAgY2FzZSAkLkJHU09VTkQ6XG4gICAgICAgIGNhc2UgJC5MSU5LOlxuICAgICAgICBjYXNlICQuTUVUQTpcbiAgICAgICAgY2FzZSAkLk5PRlJBTUVTOlxuICAgICAgICBjYXNlICQuU0NSSVBUOlxuICAgICAgICBjYXNlICQuU1RZTEU6XG4gICAgICAgIGNhc2UgJC5URU1QTEFURTpcbiAgICAgICAgY2FzZSAkLlRJVExFOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICAvLyBSZS1wcm9jZXNzIHRoZSB0b2tlbiBpbiB0aGUgYXBwcm9wcmlhdGUgbW9kZVxuICAgICAgICBjYXNlICQuQ0FQVElPTjpcbiAgICAgICAgY2FzZSAkLkNPTEdST1VQOlxuICAgICAgICBjYXNlICQuVEJPRFk6XG4gICAgICAgIGNhc2UgJC5URk9PVDpcbiAgICAgICAgY2FzZSAkLlRIRUFEOiB7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF0gPSBJbnNlcnRpb25Nb2RlLklOX1RBQkxFO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRTtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5UYWJsZShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuQ09MOiB7XG4gICAgICAgICAgICBwLnRtcGxJbnNlcnRpb25Nb2RlU3RhY2tbMF0gPSBJbnNlcnRpb25Nb2RlLklOX0NPTFVNTl9HUk9VUDtcbiAgICAgICAgICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQ09MVU1OX0dST1VQO1xuICAgICAgICAgICAgc3RhcnRUYWdJbkNvbHVtbkdyb3VwKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5UUjoge1xuICAgICAgICAgICAgcC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrWzBdID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9UQUJMRV9CT0RZO1xuICAgICAgICAgICAgc3RhcnRUYWdJblRhYmxlQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuVEQ6XG4gICAgICAgIGNhc2UgJC5USDoge1xuICAgICAgICAgICAgcC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrWzBdID0gSW5zZXJ0aW9uTW9kZS5JTl9ST1c7XG4gICAgICAgICAgICBwLmluc2VydGlvbk1vZGUgPSBJbnNlcnRpb25Nb2RlLklOX1JPVztcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Sb3cocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrWzBdID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5JTl9CT0RZO1xuICAgICAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gZW5kVGFnSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gJC5URU1QTEFURSkge1xuICAgICAgICB0ZW1wbGF0ZUVuZFRhZ0luSGVhZChwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gZW9mSW5UZW1wbGF0ZShwLCB0b2tlbikge1xuICAgIGlmIChwLm9wZW5FbGVtZW50cy50bXBsQ291bnQgPiAwKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcFVudGlsVGFnTmFtZVBvcHBlZCgkLlRFTVBMQVRFKTtcbiAgICAgICAgcC5hY3RpdmVGb3JtYXR0aW5nRWxlbWVudHMuY2xlYXJUb0xhc3RNYXJrZXIoKTtcbiAgICAgICAgcC50bXBsSW5zZXJ0aW9uTW9kZVN0YWNrLnNoaWZ0KCk7XG4gICAgICAgIHAuX3Jlc2V0SW5zZXJ0aW9uTW9kZSgpO1xuICAgICAgICBwLm9uRW9mKHRva2VuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHN0b3BQYXJzaW5nKHAsIHRva2VuKTtcbiAgICB9XG59XG4vLyBUaGUgXCJhZnRlciBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQm9keShwLCB0b2tlbikge1xuICAgIGlmICh0b2tlbi50YWdJRCA9PT0gJC5IVE1MKSB7XG4gICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdBZnRlckJvZHkocCwgdG9rZW4pIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLkhUTUwpIHtcbiAgICAgICAgaWYgKCFwLmZyYWdtZW50Q29udGV4dCkge1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9CT0RZO1xuICAgICAgICB9XG4gICAgICAgIC8vTk9URTogPGh0bWw+IGlzIG5ldmVyIHBvcHBlZCBmcm9tIHRoZSBzdGFjaywgc28gd2UgbmVlZCB0byB1cGRhdGVkXG4gICAgICAgIC8vdGhlIGVuZCBsb2NhdGlvbiBleHBsaWNpdGx5LlxuICAgICAgICBpZiAocC5vcHRpb25zLnNvdXJjZUNvZGVMb2NhdGlvbkluZm8gJiYgcC5vcGVuRWxlbWVudHMudGFnSURzWzBdID09PSAkLkhUTUwpIHtcbiAgICAgICAgICAgIHAuX3NldEVuZExvY2F0aW9uKHAub3BlbkVsZW1lbnRzLml0ZW1zWzBdLCB0b2tlbik7XG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGJvZHkgZWxlbWVudCwgaWYgaXQgZG9lc24ndCBoYXZlIGFuIGVuZCB0YWdcbiAgICAgICAgICAgIGNvbnN0IGJvZHlFbGVtZW50ID0gcC5vcGVuRWxlbWVudHMuaXRlbXNbMV07XG4gICAgICAgICAgICBpZiAoYm9keUVsZW1lbnQgJiYgISgoX2EgPSBwLnRyZWVBZGFwdGVyLmdldE5vZGVTb3VyY2VDb2RlTG9jYXRpb24oYm9keUVsZW1lbnQpKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZW5kVGFnKSkge1xuICAgICAgICAgICAgICAgIHAuX3NldEVuZExvY2F0aW9uKGJvZHlFbGVtZW50LCB0b2tlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRva2VuQWZ0ZXJCb2R5KHAsIHRva2VuKTtcbiAgICB9XG59XG5mdW5jdGlvbiB0b2tlbkFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICBtb2RlSW5Cb2R5KHAsIHRva2VuKTtcbn1cbi8vIFRoZSBcImluIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuRlJBTUVTRVQ6IHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIE5TLkhUTUwpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSAkLkZSQU1FOiB7XG4gICAgICAgICAgICBwLl9hcHBlbmRFbGVtZW50KHRva2VuLCBOUy5IVE1MKTtcbiAgICAgICAgICAgIHRva2VuLmFja1NlbGZDbG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT0ZSQU1FUzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuRlJBTUVTRVQgJiYgIXAub3BlbkVsZW1lbnRzLmlzUm9vdEh0bWxFbGVtZW50Q3VycmVudCgpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgICAgICBpZiAoIXAuZnJhZ21lbnRDb250ZXh0ICYmIHAub3BlbkVsZW1lbnRzLmN1cnJlbnRUYWdJZCAhPT0gJC5GUkFNRVNFVCkge1xuICAgICAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9GUkFNRVNFVDtcbiAgICAgICAgfVxuICAgIH1cbn1cbi8vIFRoZSBcImFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyRnJhbWVzZXQocCwgdG9rZW4pIHtcbiAgICBzd2l0Y2ggKHRva2VuLnRhZ0lEKSB7XG4gICAgICAgIGNhc2UgJC5IVE1MOiB7XG4gICAgICAgICAgICBzdGFydFRhZ0luQm9keShwLCB0b2tlbik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjYXNlICQuTk9GUkFNRVM6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5IZWFkKHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIERvIG5vdGhpbmdcbiAgICB9XG59XG5mdW5jdGlvbiBlbmRUYWdBZnRlckZyYW1lc2V0KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLkhUTUwpIHtcbiAgICAgICAgcC5pbnNlcnRpb25Nb2RlID0gSW5zZXJ0aW9uTW9kZS5BRlRFUl9BRlRFUl9GUkFNRVNFVDtcbiAgICB9XG59XG4vLyBUaGUgXCJhZnRlciBhZnRlciBib2R5XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQWZ0ZXJCb2R5KHAsIHRva2VuKSB7XG4gICAgaWYgKHRva2VuLnRhZ0lEID09PSAkLkhUTUwpIHtcbiAgICAgICAgc3RhcnRUYWdJbkJvZHkocCwgdG9rZW4pO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdG9rZW5BZnRlckFmdGVyQm9keShwLCB0b2tlbik7XG4gICAgfVxufVxuZnVuY3Rpb24gdG9rZW5BZnRlckFmdGVyQm9keShwLCB0b2tlbikge1xuICAgIHAuaW5zZXJ0aW9uTW9kZSA9IEluc2VydGlvbk1vZGUuSU5fQk9EWTtcbiAgICBtb2RlSW5Cb2R5KHAsIHRva2VuKTtcbn1cbi8vIFRoZSBcImFmdGVyIGFmdGVyIGZyYW1lc2V0XCIgaW5zZXJ0aW9uIG1vZGVcbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5mdW5jdGlvbiBzdGFydFRhZ0FmdGVyQWZ0ZXJGcmFtZXNldChwLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4udGFnSUQpIHtcbiAgICAgICAgY2FzZSAkLkhUTUw6IHtcbiAgICAgICAgICAgIHN0YXJ0VGFnSW5Cb2R5KHAsIHRva2VuKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgJC5OT0ZSQU1FUzoge1xuICAgICAgICAgICAgc3RhcnRUYWdJbkhlYWQocCwgdG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRG8gbm90aGluZ1xuICAgIH1cbn1cbi8vIFRoZSBydWxlcyBmb3IgcGFyc2luZyB0b2tlbnMgaW4gZm9yZWlnbiBjb250ZW50XG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuZnVuY3Rpb24gbnVsbENoYXJhY3RlckluRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICB0b2tlbi5jaGFycyA9IHVuaWNvZGUuUkVQTEFDRU1FTlRfQ0hBUkFDVEVSO1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xufVxuZnVuY3Rpb24gY2hhcmFjdGVySW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIHAuX2luc2VydENoYXJhY3RlcnModG9rZW4pO1xuICAgIHAuZnJhbWVzZXRPayA9IGZhbHNlO1xufVxuZnVuY3Rpb24gcG9wVW50aWxIdG1sT3JJbnRlZ3JhdGlvblBvaW50KHApIHtcbiAgICB3aGlsZSAocC50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkocC5vcGVuRWxlbWVudHMuY3VycmVudCkgIT09IE5TLkhUTUwgJiZcbiAgICAgICAgIXAuX2lzSW50ZWdyYXRpb25Qb2ludChwLm9wZW5FbGVtZW50cy5jdXJyZW50VGFnSWQsIHAub3BlbkVsZW1lbnRzLmN1cnJlbnQpKSB7XG4gICAgICAgIHAub3BlbkVsZW1lbnRzLnBvcCgpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIHN0YXJ0VGFnSW5Gb3JlaWduQ29udGVudChwLCB0b2tlbikge1xuICAgIGlmIChmb3JlaWduQ29udGVudC5jYXVzZXNFeGl0KHRva2VuKSkge1xuICAgICAgICBwb3BVbnRpbEh0bWxPckludGVncmF0aW9uUG9pbnQocCk7XG4gICAgICAgIHAuX3N0YXJ0VGFnT3V0c2lkZUZvcmVpZ25Db250ZW50KHRva2VuKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSBwLl9nZXRBZGp1c3RlZEN1cnJlbnRFbGVtZW50KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnROcyA9IHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGN1cnJlbnQpO1xuICAgICAgICBpZiAoY3VycmVudE5zID09PSBOUy5NQVRITUwpIHtcbiAgICAgICAgICAgIGZvcmVpZ25Db250ZW50LmFkanVzdFRva2VuTWF0aE1MQXR0cnModG9rZW4pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGN1cnJlbnROcyA9PT0gTlMuU1ZHKSB7XG4gICAgICAgICAgICBmb3JlaWduQ29udGVudC5hZGp1c3RUb2tlblNWR1RhZ05hbWUodG9rZW4pO1xuICAgICAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5TVkdBdHRycyh0b2tlbik7XG4gICAgICAgIH1cbiAgICAgICAgZm9yZWlnbkNvbnRlbnQuYWRqdXN0VG9rZW5YTUxBdHRycyh0b2tlbik7XG4gICAgICAgIGlmICh0b2tlbi5zZWxmQ2xvc2luZykge1xuICAgICAgICAgICAgcC5fYXBwZW5kRWxlbWVudCh0b2tlbiwgY3VycmVudE5zKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHAuX2luc2VydEVsZW1lbnQodG9rZW4sIGN1cnJlbnROcyk7XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW4uYWNrU2VsZkNsb3NpbmcgPSB0cnVlO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGVuZFRhZ0luRm9yZWlnbkNvbnRlbnQocCwgdG9rZW4pIHtcbiAgICBpZiAodG9rZW4udGFnSUQgPT09ICQuUCB8fCB0b2tlbi50YWdJRCA9PT0gJC5CUikge1xuICAgICAgICBwb3BVbnRpbEh0bWxPckludGVncmF0aW9uUG9pbnQocCk7XG4gICAgICAgIHAuX2VuZFRhZ091dHNpZGVGb3JlaWduQ29udGVudCh0b2tlbik7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZm9yIChsZXQgaSA9IHAub3BlbkVsZW1lbnRzLnN0YWNrVG9wOyBpID4gMDsgaS0tKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBwLm9wZW5FbGVtZW50cy5pdGVtc1tpXTtcbiAgICAgICAgaWYgKHAudHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKGVsZW1lbnQpID09PSBOUy5IVE1MKSB7XG4gICAgICAgICAgICBwLl9lbmRUYWdPdXRzaWRlRm9yZWlnbkNvbnRlbnQodG9rZW4pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgdGFnTmFtZSA9IHAudHJlZUFkYXB0ZXIuZ2V0VGFnTmFtZShlbGVtZW50KTtcbiAgICAgICAgaWYgKHRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gdG9rZW4udGFnTmFtZSkge1xuICAgICAgICAgICAgLy9OT1RFOiB1cGRhdGUgdGhlIHRva2VuIHRhZyBuYW1lIGZvciBgX3NldEVuZExvY2F0aW9uYC5cbiAgICAgICAgICAgIHRva2VuLnRhZ05hbWUgPSB0YWdOYW1lO1xuICAgICAgICAgICAgcC5vcGVuRWxlbWVudHMuc2hvcnRlblRvTGVuZ3RoKGkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCAiaW1wb3J0IHsgVEFHX05BTUVTIGFzICQsIE5TLCBoYXNVbmVzY2FwZWRUZXh0IH0gZnJvbSAnLi4vY29tbW9uL2h0bWwuanMnO1xuaW1wb3J0IHsgZXNjYXBlVGV4dCwgZXNjYXBlQXR0cmlidXRlIH0gZnJvbSAnZW50aXRpZXMvbGliL2VzY2FwZS5qcyc7XG5pbXBvcnQgeyBkZWZhdWx0VHJlZUFkYXB0ZXIgfSBmcm9tICcuLi90cmVlLWFkYXB0ZXJzL2RlZmF1bHQuanMnO1xuLy8gU2V0c1xuY29uc3QgVk9JRF9FTEVNRU5UUyA9IG5ldyBTZXQoW1xuICAgICQuQVJFQSxcbiAgICAkLkJBU0UsXG4gICAgJC5CQVNFRk9OVCxcbiAgICAkLkJHU09VTkQsXG4gICAgJC5CUixcbiAgICAkLkNPTCxcbiAgICAkLkVNQkVELFxuICAgICQuRlJBTUUsXG4gICAgJC5IUixcbiAgICAkLklNRyxcbiAgICAkLklOUFVULFxuICAgICQuS0VZR0VOLFxuICAgICQuTElOSyxcbiAgICAkLk1FVEEsXG4gICAgJC5QQVJBTSxcbiAgICAkLlNPVVJDRSxcbiAgICAkLlRSQUNLLFxuICAgICQuV0JSLFxuXSk7XG5mdW5jdGlvbiBpc1ZvaWRFbGVtZW50KG5vZGUsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gKG9wdGlvbnMudHJlZUFkYXB0ZXIuaXNFbGVtZW50Tm9kZShub2RlKSAmJlxuICAgICAgICBvcHRpb25zLnRyZWVBZGFwdGVyLmdldE5hbWVzcGFjZVVSSShub2RlKSA9PT0gTlMuSFRNTCAmJlxuICAgICAgICBWT0lEX0VMRU1FTlRTLmhhcyhvcHRpb25zLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobm9kZSkpKTtcbn1cbmNvbnN0IGRlZmF1bHRPcHRzID0geyB0cmVlQWRhcHRlcjogZGVmYXVsdFRyZWVBZGFwdGVyLCBzY3JpcHRpbmdFbmFibGVkOiB0cnVlIH07XG4vKipcbiAqIFNlcmlhbGl6ZXMgYW4gQVNUIG5vZGUgdG8gYW4gSFRNTCBzdHJpbmcuXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogY29uc3QgcGFyc2U1ID0gcmVxdWlyZSgncGFyc2U1Jyk7XG4gKlxuICogY29uc3QgZG9jdW1lbnQgPSBwYXJzZTUucGFyc2UoJzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT5IaSB0aGVyZSE8L2JvZHk+PC9odG1sPicpO1xuICpcbiAqIC8vIFNlcmlhbGl6ZXMgYSBkb2N1bWVudC5cbiAqIGNvbnN0IGh0bWwgPSBwYXJzZTUuc2VyaWFsaXplKGRvY3VtZW50KTtcbiAqXG4gKiAvLyBTZXJpYWxpemVzIHRoZSA8aHRtbD4gZWxlbWVudCBjb250ZW50LlxuICogY29uc3Qgc3RyID0gcGFyc2U1LnNlcmlhbGl6ZShkb2N1bWVudC5jaGlsZE5vZGVzWzFdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhzdHIpOyAvLz4gJzxoZWFkPjwvaGVhZD48Ym9keT5IaSB0aGVyZSE8L2JvZHk+J1xuICogYGBgXG4gKlxuICogQHBhcmFtIG5vZGUgTm9kZSB0byBzZXJpYWxpemUuXG4gKiBAcGFyYW0gb3B0aW9ucyBTZXJpYWxpemF0aW9uIG9wdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXJpYWxpemUobm9kZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IG9wdHMgPSB7IC4uLmRlZmF1bHRPcHRzLCAuLi5vcHRpb25zIH07XG4gICAgaWYgKGlzVm9pZEVsZW1lbnQobm9kZSwgb3B0cykpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gc2VyaWFsaXplQ2hpbGROb2Rlcyhub2RlLCBvcHRzKTtcbn1cbi8qKlxuICogU2VyaWFsaXplcyBhbiBBU1QgZWxlbWVudCBub2RlIHRvIGFuIEhUTUwgc3RyaW5nLCBpbmNsdWRpbmcgdGhlIGVsZW1lbnQgbm9kZS5cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwYXJzZTUgPSByZXF1aXJlKCdwYXJzZTUnKTtcbiAqXG4gKiBjb25zdCBkb2N1bWVudCA9IHBhcnNlNS5wYXJzZUZyYWdtZW50KCc8ZGl2PkhlbGxvLCA8Yj53b3JsZDwvYj4hPC9kaXY+Jyk7XG4gKlxuICogLy8gU2VyaWFsaXplcyB0aGUgPGRpdj4gZWxlbWVudC5cbiAqIGNvbnN0IHN0ciA9IHBhcnNlNS5zZXJpYWxpemVPdXRlcihkb2N1bWVudC5jaGlsZE5vZGVzWzBdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhzdHIpOyAvLz4gJzxkaXY+SGVsbG8sIDxiPndvcmxkPC9iPiE8L2Rpdj4nXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIHNlcmlhbGl6ZS5cbiAqIEBwYXJhbSBvcHRpb25zIFNlcmlhbGl6YXRpb24gb3B0aW9ucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZU91dGVyKG5vZGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBvcHRzID0geyAuLi5kZWZhdWx0T3B0cywgLi4ub3B0aW9ucyB9O1xuICAgIHJldHVybiBzZXJpYWxpemVOb2RlKG5vZGUsIG9wdHMpO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplQ2hpbGROb2RlcyhwYXJlbnROb2RlLCBvcHRpb25zKSB7XG4gICAgbGV0IGh0bWwgPSAnJztcbiAgICAvLyBHZXQgY29udGFpbmVyIG9mIHRoZSBjaGlsZCBub2Rlc1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IG9wdGlvbnMudHJlZUFkYXB0ZXIuaXNFbGVtZW50Tm9kZShwYXJlbnROb2RlKSAmJlxuICAgICAgICBvcHRpb25zLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUocGFyZW50Tm9kZSkgPT09ICQuVEVNUExBVEUgJiZcbiAgICAgICAgb3B0aW9ucy50cmVlQWRhcHRlci5nZXROYW1lc3BhY2VVUkkocGFyZW50Tm9kZSkgPT09IE5TLkhUTUxcbiAgICAgICAgPyBvcHRpb25zLnRyZWVBZGFwdGVyLmdldFRlbXBsYXRlQ29udGVudChwYXJlbnROb2RlKVxuICAgICAgICA6IHBhcmVudE5vZGU7XG4gICAgY29uc3QgY2hpbGROb2RlcyA9IG9wdGlvbnMudHJlZUFkYXB0ZXIuZ2V0Q2hpbGROb2Rlcyhjb250YWluZXIpO1xuICAgIGlmIChjaGlsZE5vZGVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY3VycmVudE5vZGUgb2YgY2hpbGROb2Rlcykge1xuICAgICAgICAgICAgaHRtbCArPSBzZXJpYWxpemVOb2RlKGN1cnJlbnROb2RlLCBvcHRpb25zKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaHRtbDtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZU5vZGUobm9kZSwgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zLnRyZWVBZGFwdGVyLmlzRWxlbWVudE5vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZUVsZW1lbnQobm9kZSwgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnRyZWVBZGFwdGVyLmlzVGV4dE5vZGUobm9kZSkpIHtcbiAgICAgICAgcmV0dXJuIHNlcmlhbGl6ZVRleHROb2RlKG5vZGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy50cmVlQWRhcHRlci5pc0NvbW1lbnROb2RlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVDb21tZW50Tm9kZShub2RlLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMudHJlZUFkYXB0ZXIuaXNEb2N1bWVudFR5cGVOb2RlKG5vZGUpKSB7XG4gICAgICAgIHJldHVybiBzZXJpYWxpemVEb2N1bWVudFR5cGVOb2RlKG5vZGUsIG9wdGlvbnMpO1xuICAgIH1cbiAgICAvLyBSZXR1cm4gYW4gZW1wdHkgc3RyaW5nIGZvciB1bmtub3duIG5vZGVzXG4gICAgcmV0dXJuICcnO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplRWxlbWVudChub2RlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdG4gPSBvcHRpb25zLnRyZWVBZGFwdGVyLmdldFRhZ05hbWUobm9kZSk7XG4gICAgcmV0dXJuIGA8JHt0bn0ke3NlcmlhbGl6ZUF0dHJpYnV0ZXMobm9kZSwgb3B0aW9ucyl9PiR7aXNWb2lkRWxlbWVudChub2RlLCBvcHRpb25zKSA/ICcnIDogYCR7c2VyaWFsaXplQ2hpbGROb2Rlcyhub2RlLCBvcHRpb25zKX08LyR7dG59PmB9YDtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZUF0dHJpYnV0ZXMobm9kZSwgeyB0cmVlQWRhcHRlciB9KSB7XG4gICAgbGV0IGh0bWwgPSAnJztcbiAgICBmb3IgKGNvbnN0IGF0dHIgb2YgdHJlZUFkYXB0ZXIuZ2V0QXR0ckxpc3Qobm9kZSkpIHtcbiAgICAgICAgaHRtbCArPSAnICc7XG4gICAgICAgIGlmIChhdHRyLm5hbWVzcGFjZSkge1xuICAgICAgICAgICAgc3dpdGNoIChhdHRyLm5hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIGNhc2UgTlMuWE1MOiB7XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYHhtbDoke2F0dHIubmFtZX1gO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5YTUxOUzoge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci5uYW1lICE9PSAneG1sbnMnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sICs9ICd4bWxuczonO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGh0bWwgKz0gYXR0ci5uYW1lO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY2FzZSBOUy5YTElOSzoge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IGB4bGluazoke2F0dHIubmFtZX1gO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgICAgICAgICBodG1sICs9IGAke2F0dHIucHJlZml4fToke2F0dHIubmFtZX1gO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGh0bWwgKz0gYXR0ci5uYW1lO1xuICAgICAgICB9XG4gICAgICAgIGh0bWwgKz0gYD1cIiR7ZXNjYXBlQXR0cmlidXRlKGF0dHIudmFsdWUpfVwiYDtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWw7XG59XG5mdW5jdGlvbiBzZXJpYWxpemVUZXh0Tm9kZShub2RlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgeyB0cmVlQWRhcHRlciB9ID0gb3B0aW9ucztcbiAgICBjb25zdCBjb250ZW50ID0gdHJlZUFkYXB0ZXIuZ2V0VGV4dE5vZGVDb250ZW50KG5vZGUpO1xuICAgIGNvbnN0IHBhcmVudCA9IHRyZWVBZGFwdGVyLmdldFBhcmVudE5vZGUobm9kZSk7XG4gICAgY29uc3QgcGFyZW50VG4gPSBwYXJlbnQgJiYgdHJlZUFkYXB0ZXIuaXNFbGVtZW50Tm9kZShwYXJlbnQpICYmIHRyZWVBZGFwdGVyLmdldFRhZ05hbWUocGFyZW50KTtcbiAgICByZXR1cm4gcGFyZW50VG4gJiZcbiAgICAgICAgdHJlZUFkYXB0ZXIuZ2V0TmFtZXNwYWNlVVJJKHBhcmVudCkgPT09IE5TLkhUTUwgJiZcbiAgICAgICAgaGFzVW5lc2NhcGVkVGV4dChwYXJlbnRUbiwgb3B0aW9ucy5zY3JpcHRpbmdFbmFibGVkKVxuICAgICAgICA/IGNvbnRlbnRcbiAgICAgICAgOiBlc2NhcGVUZXh0KGNvbnRlbnQpO1xufVxuZnVuY3Rpb24gc2VyaWFsaXplQ29tbWVudE5vZGUobm9kZSwgeyB0cmVlQWRhcHRlciB9KSB7XG4gICAgcmV0dXJuIGA8IS0tJHt0cmVlQWRhcHRlci5nZXRDb21tZW50Tm9kZUNvbnRlbnQobm9kZSl9LS0+YDtcbn1cbmZ1bmN0aW9uIHNlcmlhbGl6ZURvY3VtZW50VHlwZU5vZGUobm9kZSwgeyB0cmVlQWRhcHRlciB9KSB7XG4gICAgcmV0dXJuIGA8IURPQ1RZUEUgJHt0cmVlQWRhcHRlci5nZXREb2N1bWVudFR5cGVOb2RlTmFtZShub2RlKX0+YDtcbn1cbiIsICJpbXBvcnQgeyBQYXJzZXIgfSBmcm9tICcuL3BhcnNlci9pbmRleC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0VHJlZUFkYXB0ZXIgfSBmcm9tICcuL3RyZWUtYWRhcHRlcnMvZGVmYXVsdC5qcyc7XG5leHBvcnQgeyAvKiogQGludGVybmFsICovIFBhcnNlciB9IGZyb20gJy4vcGFyc2VyL2luZGV4LmpzJztcbmV4cG9ydCB7IHNlcmlhbGl6ZSwgc2VyaWFsaXplT3V0ZXIgfSBmcm9tICcuL3NlcmlhbGl6ZXIvaW5kZXguanMnO1xuZXhwb3J0IHsgRVJSIGFzIEVycm9yQ29kZXMgfSBmcm9tICcuL2NvbW1vbi9lcnJvci1jb2Rlcy5qcyc7XG4vKiogQGludGVybmFsICovXG5leHBvcnQgKiBhcyBmb3JlaWduQ29udGVudCBmcm9tICcuL2NvbW1vbi9mb3JlaWduLWNvbnRlbnQuanMnO1xuZXhwb3J0ICogYXMgaHRtbCBmcm9tICcuL2NvbW1vbi9odG1sLmpzJztcbmV4cG9ydCAqIGFzIFRva2VuIGZyb20gJy4vY29tbW9uL3Rva2VuLmpzJztcbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCB7IFRva2VuaXplciwgVG9rZW5pemVyTW9kZSB9IGZyb20gJy4vdG9rZW5pemVyL2luZGV4LmpzJztcbi8vIFNob3J0aGFuZHNcbi8qKlxuICogUGFyc2VzIGFuIEhUTUwgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSBodG1sIElucHV0IEhUTUwgc3RyaW5nLlxuICogQHBhcmFtIG9wdGlvbnMgUGFyc2luZyBvcHRpb25zLlxuICogQHJldHVybnMgRG9jdW1lbnRcbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCBwYXJzZTUgPSByZXF1aXJlKCdwYXJzZTUnKTtcbiAqXG4gKiBjb25zdCBkb2N1bWVudCA9IHBhcnNlNS5wYXJzZSgnPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5PkhpIHRoZXJlITwvYm9keT48L2h0bWw+Jyk7XG4gKlxuICogY29uc29sZS5sb2coZG9jdW1lbnQuY2hpbGROb2Rlc1sxXS50YWdOYW1lKTsgLy8+ICdodG1sJ1xuICpgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGh0bWwsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gUGFyc2VyLnBhcnNlKGh0bWwsIG9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlRnJhZ21lbnQoZnJhZ21lbnRDb250ZXh0LCBodG1sLCBvcHRpb25zKSB7XG4gICAgaWYgKHR5cGVvZiBmcmFnbWVudENvbnRleHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIG9wdGlvbnMgPSBodG1sO1xuICAgICAgICBodG1sID0gZnJhZ21lbnRDb250ZXh0O1xuICAgICAgICBmcmFnbWVudENvbnRleHQgPSBudWxsO1xuICAgIH1cbiAgICBjb25zdCBwYXJzZXIgPSBQYXJzZXIuZ2V0RnJhZ21lbnRQYXJzZXIoZnJhZ21lbnRDb250ZXh0LCBvcHRpb25zKTtcbiAgICBwYXJzZXIudG9rZW5pemVyLndyaXRlKGh0bWwsIHRydWUpO1xuICAgIHJldHVybiBwYXJzZXIuZ2V0RnJhZ21lbnQoKTtcbn1cbiIsICJpbXBvcnQgeyBodG1sIH0gZnJvbSAncGFyc2U1JztcbmltcG9ydCB7IEVsZW1lbnQsIERvY3VtZW50LCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24sIENvbW1lbnQsIFRleHQsIGlzRGlyZWN0aXZlLCBpc1RleHQsIGlzQ29tbWVudCwgaXNUYWcsIH0gZnJvbSAnZG9taGFuZGxlcic7XG5mdW5jdGlvbiBlbnF1b3RlRG9jdHlwZUlkKGlkKSB7XG4gICAgY29uc3QgcXVvdGUgPSBpZC5pbmNsdWRlcygnXCInKSA/IFwiJ1wiIDogJ1wiJztcbiAgICByZXR1cm4gcXVvdGUgKyBpZCArIHF1b3RlO1xufVxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZURvY3R5cGVDb250ZW50KG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkge1xuICAgIGxldCBzdHIgPSAnIURPQ1RZUEUgJztcbiAgICBpZiAobmFtZSkge1xuICAgICAgICBzdHIgKz0gbmFtZTtcbiAgICB9XG4gICAgaWYgKHB1YmxpY0lkKSB7XG4gICAgICAgIHN0ciArPSBgIFBVQkxJQyAke2VucXVvdGVEb2N0eXBlSWQocHVibGljSWQpfWA7XG4gICAgfVxuICAgIGVsc2UgaWYgKHN5c3RlbUlkKSB7XG4gICAgICAgIHN0ciArPSAnIFNZU1RFTSc7XG4gICAgfVxuICAgIGlmIChzeXN0ZW1JZCkge1xuICAgICAgICBzdHIgKz0gYCAke2VucXVvdGVEb2N0eXBlSWQoc3lzdGVtSWQpfWA7XG4gICAgfVxuICAgIHJldHVybiBzdHI7XG59XG5leHBvcnQgY29uc3QgYWRhcHRlciA9IHtcbiAgICAvLyBSZS1leHBvcnRzIGZyb20gZG9taGFuZGxlclxuICAgIGlzQ29tbWVudE5vZGU6IGlzQ29tbWVudCxcbiAgICBpc0VsZW1lbnROb2RlOiBpc1RhZyxcbiAgICBpc1RleHROb2RlOiBpc1RleHQsXG4gICAgLy9Ob2RlIGNvbnN0cnVjdGlvblxuICAgIGNyZWF0ZURvY3VtZW50KCkge1xuICAgICAgICBjb25zdCBub2RlID0gbmV3IERvY3VtZW50KFtdKTtcbiAgICAgICAgbm9kZVsneC1tb2RlJ10gPSBodG1sLkRPQ1VNRU5UX01PREUuTk9fUVVJUktTO1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICB9LFxuICAgIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSB7XG4gICAgICAgIHJldHVybiBuZXcgRG9jdW1lbnQoW10pO1xuICAgIH0sXG4gICAgY3JlYXRlRWxlbWVudCh0YWdOYW1lLCBuYW1lc3BhY2VVUkksIGF0dHJzKSB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBjb25zdCBhdHRyaWJzTmFtZXNwYWNlID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgY29uc3QgYXR0cmlic1ByZWZpeCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXR0cnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJOYW1lID0gYXR0cnNbaV0ubmFtZTtcbiAgICAgICAgICAgIGF0dHJpYnNbYXR0ck5hbWVdID0gYXR0cnNbaV0udmFsdWU7XG4gICAgICAgICAgICBhdHRyaWJzTmFtZXNwYWNlW2F0dHJOYW1lXSA9IGF0dHJzW2ldLm5hbWVzcGFjZTtcbiAgICAgICAgICAgIGF0dHJpYnNQcmVmaXhbYXR0ck5hbWVdID0gYXR0cnNbaV0ucHJlZml4O1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5vZGUgPSBuZXcgRWxlbWVudCh0YWdOYW1lLCBhdHRyaWJzLCBbXSk7XG4gICAgICAgIG5vZGUubmFtZXNwYWNlID0gbmFtZXNwYWNlVVJJO1xuICAgICAgICBub2RlWyd4LWF0dHJpYnNOYW1lc3BhY2UnXSA9IGF0dHJpYnNOYW1lc3BhY2U7XG4gICAgICAgIG5vZGVbJ3gtYXR0cmlic1ByZWZpeCddID0gYXR0cmlic1ByZWZpeDtcbiAgICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfSxcbiAgICBjcmVhdGVDb21tZW50Tm9kZShkYXRhKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29tbWVudChkYXRhKTtcbiAgICB9LFxuICAgIGNyZWF0ZVRleHROb2RlKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dCh2YWx1ZSk7XG4gICAgfSxcbiAgICAvL1RyZWUgbXV0YXRpb25cbiAgICBhcHBlbmRDaGlsZChwYXJlbnROb2RlLCBuZXdOb2RlKSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBwYXJlbnROb2RlLmNoaWxkcmVuW3BhcmVudE5vZGUuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICBwcmV2Lm5leHQgPSBuZXdOb2RlO1xuICAgICAgICAgICAgbmV3Tm9kZS5wcmV2ID0gcHJldjtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnROb2RlLmNoaWxkcmVuLnB1c2gobmV3Tm9kZSk7XG4gICAgICAgIG5ld05vZGUucGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICB9LFxuICAgIGluc2VydEJlZm9yZShwYXJlbnROb2RlLCBuZXdOb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgIGNvbnN0IGluc2VydGlvbklkeCA9IHBhcmVudE5vZGUuY2hpbGRyZW4uaW5kZXhPZihyZWZlcmVuY2VOb2RlKTtcbiAgICAgICAgY29uc3QgeyBwcmV2IH0gPSByZWZlcmVuY2VOb2RlO1xuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgICAgcHJldi5uZXh0ID0gbmV3Tm9kZTtcbiAgICAgICAgICAgIG5ld05vZGUucHJldiA9IHByZXY7XG4gICAgICAgIH1cbiAgICAgICAgcmVmZXJlbmNlTm9kZS5wcmV2ID0gbmV3Tm9kZTtcbiAgICAgICAgbmV3Tm9kZS5uZXh0ID0gcmVmZXJlbmNlTm9kZTtcbiAgICAgICAgcGFyZW50Tm9kZS5jaGlsZHJlbi5zcGxpY2UoaW5zZXJ0aW9uSWR4LCAwLCBuZXdOb2RlKTtcbiAgICAgICAgbmV3Tm9kZS5wYXJlbnQgPSBwYXJlbnROb2RlO1xuICAgIH0sXG4gICAgc2V0VGVtcGxhdGVDb250ZW50KHRlbXBsYXRlRWxlbWVudCwgY29udGVudEVsZW1lbnQpIHtcbiAgICAgICAgYWRhcHRlci5hcHBlbmRDaGlsZCh0ZW1wbGF0ZUVsZW1lbnQsIGNvbnRlbnRFbGVtZW50KTtcbiAgICB9LFxuICAgIGdldFRlbXBsYXRlQ29udGVudCh0ZW1wbGF0ZUVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlRWxlbWVudC5jaGlsZHJlblswXTtcbiAgICB9LFxuICAgIHNldERvY3VtZW50VHlwZShkb2N1bWVudCwgbmFtZSwgcHVibGljSWQsIHN5c3RlbUlkKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBzZXJpYWxpemVEb2N0eXBlQ29udGVudChuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpO1xuICAgICAgICBsZXQgZG9jdHlwZU5vZGUgPSBkb2N1bWVudC5jaGlsZHJlbi5maW5kKChub2RlKSA9PiBpc0RpcmVjdGl2ZShub2RlKSAmJiBub2RlLm5hbWUgPT09ICchZG9jdHlwZScpO1xuICAgICAgICBpZiAoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgICAgIGRvY3R5cGVOb2RlLmRhdGEgPSBkYXRhICE9PSBudWxsICYmIGRhdGEgIT09IHZvaWQgMCA/IGRhdGEgOiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZG9jdHlwZU5vZGUgPSBuZXcgUHJvY2Vzc2luZ0luc3RydWN0aW9uKCchZG9jdHlwZScsIGRhdGEpO1xuICAgICAgICAgICAgYWRhcHRlci5hcHBlbmRDaGlsZChkb2N1bWVudCwgZG9jdHlwZU5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGRvY3R5cGVOb2RlWyd4LW5hbWUnXSA9IG5hbWU7XG4gICAgICAgIGRvY3R5cGVOb2RlWyd4LXB1YmxpY0lkJ10gPSBwdWJsaWNJZDtcbiAgICAgICAgZG9jdHlwZU5vZGVbJ3gtc3lzdGVtSWQnXSA9IHN5c3RlbUlkO1xuICAgIH0sXG4gICAgc2V0RG9jdW1lbnRNb2RlKGRvY3VtZW50LCBtb2RlKSB7XG4gICAgICAgIGRvY3VtZW50Wyd4LW1vZGUnXSA9IG1vZGU7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudE1vZGUoZG9jdW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50Wyd4LW1vZGUnXTtcbiAgICB9LFxuICAgIGRldGFjaE5vZGUobm9kZSkge1xuICAgICAgICBpZiAobm9kZS5wYXJlbnQpIHtcbiAgICAgICAgICAgIGNvbnN0IGlkeCA9IG5vZGUucGFyZW50LmNoaWxkcmVuLmluZGV4T2Yobm9kZSk7XG4gICAgICAgICAgICBjb25zdCB7IHByZXYsIG5leHQgfSA9IG5vZGU7XG4gICAgICAgICAgICBub2RlLnByZXYgPSBudWxsO1xuICAgICAgICAgICAgbm9kZS5uZXh0ID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgICAgICAgICAgcHJldi5uZXh0ID0gbmV4dDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgICAgICAgICAgbmV4dC5wcmV2ID0gcHJldjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUucGFyZW50LmNoaWxkcmVuLnNwbGljZShpZHgsIDEpO1xuICAgICAgICAgICAgbm9kZS5wYXJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBpbnNlcnRUZXh0KHBhcmVudE5vZGUsIHRleHQpIHtcbiAgICAgICAgY29uc3QgbGFzdENoaWxkID0gcGFyZW50Tm9kZS5jaGlsZHJlbltwYXJlbnROb2RlLmNoaWxkcmVuLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAobGFzdENoaWxkICYmIGlzVGV4dChsYXN0Q2hpbGQpKSB7XG4gICAgICAgICAgICBsYXN0Q2hpbGQuZGF0YSArPSB0ZXh0O1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgYWRhcHRlci5hcHBlbmRDaGlsZChwYXJlbnROb2RlLCBhZGFwdGVyLmNyZWF0ZVRleHROb2RlKHRleHQpKTtcbiAgICAgICAgfVxuICAgIH0sXG4gICAgaW5zZXJ0VGV4dEJlZm9yZShwYXJlbnROb2RlLCB0ZXh0LCByZWZlcmVuY2VOb2RlKSB7XG4gICAgICAgIGNvbnN0IHByZXZOb2RlID0gcGFyZW50Tm9kZS5jaGlsZHJlbltwYXJlbnROb2RlLmNoaWxkcmVuLmluZGV4T2YocmVmZXJlbmNlTm9kZSkgLSAxXTtcbiAgICAgICAgaWYgKHByZXZOb2RlICYmIGlzVGV4dChwcmV2Tm9kZSkpIHtcbiAgICAgICAgICAgIHByZXZOb2RlLmRhdGEgKz0gdGV4dDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGFkYXB0ZXIuaW5zZXJ0QmVmb3JlKHBhcmVudE5vZGUsIGFkYXB0ZXIuY3JlYXRlVGV4dE5vZGUodGV4dCksIHJlZmVyZW5jZU5vZGUpO1xuICAgICAgICB9XG4gICAgfSxcbiAgICBhZG9wdEF0dHJpYnV0ZXMocmVjaXBpZW50LCBhdHRycykge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGF0dHJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBhdHRyTmFtZSA9IGF0dHJzW2ldLm5hbWU7XG4gICAgICAgICAgICBpZiAocmVjaXBpZW50LmF0dHJpYnNbYXR0ck5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZWNpcGllbnQuYXR0cmlic1thdHRyTmFtZV0gPSBhdHRyc1tpXS52YWx1ZTtcbiAgICAgICAgICAgICAgICByZWNpcGllbnRbJ3gtYXR0cmlic05hbWVzcGFjZSddW2F0dHJOYW1lXSA9IGF0dHJzW2ldLm5hbWVzcGFjZTtcbiAgICAgICAgICAgICAgICByZWNpcGllbnRbJ3gtYXR0cmlic1ByZWZpeCddW2F0dHJOYW1lXSA9IGF0dHJzW2ldLnByZWZpeDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH0sXG4gICAgLy9UcmVlIHRyYXZlcnNpbmdcbiAgICBnZXRGaXJzdENoaWxkKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW5bMF07XG4gICAgfSxcbiAgICBnZXRDaGlsZE5vZGVzKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuY2hpbGRyZW47XG4gICAgfSxcbiAgICBnZXRQYXJlbnROb2RlKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUucGFyZW50O1xuICAgIH0sXG4gICAgZ2V0QXR0ckxpc3QoZWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5hdHRyaWJ1dGVzO1xuICAgIH0sXG4gICAgLy9Ob2RlIGRhdGFcbiAgICBnZXRUYWdOYW1lKGVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQubmFtZTtcbiAgICB9LFxuICAgIGdldE5hbWVzcGFjZVVSSShlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50Lm5hbWVzcGFjZTtcbiAgICB9LFxuICAgIGdldFRleHROb2RlQ29udGVudCh0ZXh0Tm9kZSkge1xuICAgICAgICByZXR1cm4gdGV4dE5vZGUuZGF0YTtcbiAgICB9LFxuICAgIGdldENvbW1lbnROb2RlQ29udGVudChjb21tZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gY29tbWVudE5vZGUuZGF0YTtcbiAgICB9LFxuICAgIGdldERvY3VtZW50VHlwZU5vZGVOYW1lKGRvY3R5cGVOb2RlKSB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgcmV0dXJuIChfYSA9IGRvY3R5cGVOb2RlWyd4LW5hbWUnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudFR5cGVOb2RlUHVibGljSWQoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gZG9jdHlwZU5vZGVbJ3gtcHVibGljSWQnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgfSxcbiAgICBnZXREb2N1bWVudFR5cGVOb2RlU3lzdGVtSWQoZG9jdHlwZU5vZGUpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICByZXR1cm4gKF9hID0gZG9jdHlwZU5vZGVbJ3gtc3lzdGVtSWQnXSkgIT09IG51bGwgJiYgX2EgIT09IHZvaWQgMCA/IF9hIDogJyc7XG4gICAgfSxcbiAgICAvL05vZGUgdHlwZXNcbiAgICBpc0RvY3VtZW50VHlwZU5vZGUobm9kZSkge1xuICAgICAgICByZXR1cm4gaXNEaXJlY3RpdmUobm9kZSkgJiYgbm9kZS5uYW1lID09PSAnIWRvY3R5cGUnO1xuICAgIH0sXG4gICAgLy8gU291cmNlIGNvZGUgbG9jYXRpb25cbiAgICBzZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUsIGxvY2F0aW9uKSB7XG4gICAgICAgIGlmIChsb2NhdGlvbikge1xuICAgICAgICAgICAgbm9kZS5zdGFydEluZGV4ID0gbG9jYXRpb24uc3RhcnRPZmZzZXQ7XG4gICAgICAgICAgICBub2RlLmVuZEluZGV4ID0gbG9jYXRpb24uZW5kT2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uID0gbG9jYXRpb247XG4gICAgfSxcbiAgICBnZXROb2RlU291cmNlQ29kZUxvY2F0aW9uKG5vZGUpIHtcbiAgICAgICAgcmV0dXJuIG5vZGUuc291cmNlQ29kZUxvY2F0aW9uO1xuICAgIH0sXG4gICAgdXBkYXRlTm9kZVNvdXJjZUNvZGVMb2NhdGlvbihub2RlLCBlbmRMb2NhdGlvbikge1xuICAgICAgICBpZiAoZW5kTG9jYXRpb24uZW5kT2Zmc2V0ICE9IG51bGwpXG4gICAgICAgICAgICBub2RlLmVuZEluZGV4ID0gZW5kTG9jYXRpb24uZW5kT2Zmc2V0O1xuICAgICAgICBub2RlLnNvdXJjZUNvZGVMb2NhdGlvbiA9IHtcbiAgICAgICAgICAgIC4uLm5vZGUuc291cmNlQ29kZUxvY2F0aW9uLFxuICAgICAgICAgICAgLi4uZW5kTG9jYXRpb24sXG4gICAgICAgIH07XG4gICAgfSxcbn07XG4iLCAiaW1wb3J0IHtcbiAgdHlwZSBBbnlOb2RlLFxuICB0eXBlIERvY3VtZW50LFxuICB0eXBlIFBhcmVudE5vZGUsXG4gIGlzRG9jdW1lbnQsXG59IGZyb20gJ2RvbWhhbmRsZXInO1xuaW1wb3J0IHsgcGFyc2UgYXMgcGFyc2VEb2N1bWVudCwgcGFyc2VGcmFnbWVudCwgc2VyaWFsaXplT3V0ZXIgfSBmcm9tICdwYXJzZTUnO1xuaW1wb3J0IHsgYWRhcHRlciBhcyBodG1scGFyc2VyMkFkYXB0ZXIgfSBmcm9tICdwYXJzZTUtaHRtbHBhcnNlcjItdHJlZS1hZGFwdGVyJztcbmltcG9ydCB0eXBlIHsgSW50ZXJuYWxPcHRpb25zIH0gZnJvbSAnLi4vb3B0aW9ucy5qcyc7XG5cbi8qKlxuICogUGFyc2UgdGhlIGNvbnRlbnQgd2l0aCBgcGFyc2U1YCBpbiB0aGUgY29udGV4dCBvZiB0aGUgZ2l2ZW4gYFBhcmVudE5vZGVgLlxuICpcbiAqIEBwYXJhbSBjb250ZW50IC0gVGhlIGNvbnRlbnQgdG8gcGFyc2UuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEEgc2V0IG9mIG9wdGlvbnMgdG8gdXNlIHRvIHBhcnNlLlxuICogQHBhcmFtIGlzRG9jdW1lbnQgLSBXaGV0aGVyIHRvIHBhcnNlIHRoZSBjb250ZW50IGFzIGEgZnVsbCBIVE1MIGRvY3VtZW50LlxuICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCBpbiB3aGljaCB0byBwYXJzZSB0aGUgY29udGVudC5cbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgY29udGVudC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlV2l0aFBhcnNlNShcbiAgY29udGVudDogc3RyaW5nLFxuICBvcHRpb25zOiBJbnRlcm5hbE9wdGlvbnMsXG4gIGlzRG9jdW1lbnQ6IGJvb2xlYW4sXG4gIGNvbnRleHQ6IFBhcmVudE5vZGUgfCBudWxsLFxuKTogRG9jdW1lbnQge1xuICBvcHRpb25zLnRyZWVBZGFwdGVyID8/PSBodG1scGFyc2VyMkFkYXB0ZXI7XG5cbiAgaWYgKG9wdGlvbnMuc2NyaXB0aW5nRW5hYmxlZCAhPT0gZmFsc2UpIHtcbiAgICBvcHRpb25zLnNjcmlwdGluZ0VuYWJsZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGlzRG9jdW1lbnRcbiAgICA/IHBhcnNlRG9jdW1lbnQoY29udGVudCwgb3B0aW9ucylcbiAgICA6IHBhcnNlRnJhZ21lbnQoY29udGV4dCwgY29udGVudCwgb3B0aW9ucyk7XG59XG5cbmNvbnN0IHJlbmRlck9wdHMgPSB7IHRyZWVBZGFwdGVyOiBodG1scGFyc2VyMkFkYXB0ZXIgfTtcblxuLyoqXG4gKiBSZW5kZXJzIHRoZSBnaXZlbiBET00gdHJlZSB3aXRoIGBwYXJzZTVgIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSBzdHJpbmcuXG4gKlxuICogQHBhcmFtIGRvbSAtIFRoZSBET00gdHJlZSB0byByZW5kZXIuXG4gKiBAcmV0dXJucyBUaGUgcmVuZGVyZWQgZG9jdW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJXaXRoUGFyc2U1KGRvbTogQW55Tm9kZSB8IEFycmF5TGlrZTxBbnlOb2RlPik6IHN0cmluZyB7XG4gIC8qXG4gICAqIGBkb20tc2VyaWFsaXplcmAgcGFzc2VzIG92ZXIgdGhlIHNwZWNpYWwgXCJyb290XCIgbm9kZSBhbmQgcmVuZGVycyB0aGVcbiAgICogbm9kZSdzIGNoaWxkcmVuIGluIGl0cyBwbGFjZS4gVG8gbWltaWMgdGhpcyBiZWhhdmlvciB3aXRoIGBwYXJzZTVgLCBhblxuICAgKiBlcXVpdmFsZW50IG9wZXJhdGlvbiBtdXN0IGJlIGFwcGxpZWQgdG8gdGhlIGlucHV0IGFycmF5LlxuICAgKi9cbiAgY29uc3Qgbm9kZXMgPSAnbGVuZ3RoJyBpbiBkb20gPyBkb20gOiBbZG9tXTtcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG5vZGVzLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XG4gICAgaWYgKGlzRG9jdW1lbnQobm9kZSkpIHtcbiAgICAgIEFycmF5LnByb3RvdHlwZS5zcGxpY2UuY2FsbChub2RlcywgaW5kZXgsIDEsIC4uLm5vZGUuY2hpbGRyZW4pO1xuICAgIH1cbiAgfVxuXG4gIGxldCByZXN1bHQgPSAnJztcbiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IG5vZGVzLmxlbmd0aDsgaW5kZXggKz0gMSkge1xuICAgIGNvbnN0IG5vZGUgPSBub2Rlc1tpbmRleF07XG4gICAgcmVzdWx0ICs9IHNlcmlhbGl6ZU91dGVyKG5vZGUsIHJlbmRlck9wdHMpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiIsIG51bGwsIG51bGwsIG51bGwsICJpbXBvcnQgeyB0eXBlIENoZWVyaW9BUEksIGdldExvYWQgfSBmcm9tICcuL2xvYWQuanMnO1xuaW1wb3J0IHsgZ2V0UGFyc2UgfSBmcm9tICcuL3BhcnNlLmpzJztcbmltcG9ydCB7IHJlbmRlcldpdGhQYXJzZTUsIHBhcnNlV2l0aFBhcnNlNSB9IGZyb20gJy4vcGFyc2Vycy9wYXJzZTUtYWRhcHRlci5qcyc7XG5pbXBvcnQgdHlwZSB7IENoZWVyaW9PcHRpb25zIH0gZnJvbSAnLi9vcHRpb25zLmpzJztcbmltcG9ydCByZW5kZXJXaXRoSHRtbHBhcnNlcjIgZnJvbSAnZG9tLXNlcmlhbGl6ZXInO1xuaW1wb3J0IHsgcGFyc2VEb2N1bWVudCBhcyBwYXJzZVdpdGhIdG1scGFyc2VyMiB9IGZyb20gJ2h0bWxwYXJzZXIyJztcbmltcG9ydCB0eXBlIHsgQW55Tm9kZSB9IGZyb20gJ2RvbWhhbmRsZXInO1xuXG5jb25zdCBwYXJzZSA9IGdldFBhcnNlKChjb250ZW50LCBvcHRpb25zLCBpc0RvY3VtZW50LCBjb250ZXh0KSA9PlxuICBvcHRpb25zLl91c2VIdG1sUGFyc2VyMlxuICAgID8gcGFyc2VXaXRoSHRtbHBhcnNlcjIoY29udGVudCwgb3B0aW9ucylcbiAgICA6IHBhcnNlV2l0aFBhcnNlNShjb250ZW50LCBvcHRpb25zLCBpc0RvY3VtZW50LCBjb250ZXh0KSxcbik7XG5cbi8vIER1cGxpY2F0ZSBkb2NzIGR1ZSB0byBodHRwczovL2dpdGh1Yi5jb20vVHlwZVN0cm9uZy90eXBlZG9jL2lzc3Vlcy8xNjE2XG4vKipcbiAqIENyZWF0ZSBhIHF1ZXJ5aW5nIGZ1bmN0aW9uLCBib3VuZCB0byBhIGRvY3VtZW50IGNyZWF0ZWQgZnJvbSB0aGUgcHJvdmlkZWRcbiAqIG1hcmt1cC5cbiAqXG4gKiBOb3RlIHRoYXQgc2ltaWxhciB0byB3ZWIgYnJvd3NlciBjb250ZXh0cywgdGhpcyBvcGVyYXRpb24gbWF5IGludHJvZHVjZVxuICogYDxodG1sPmAsIGA8aGVhZD5gLCBhbmQgYDxib2R5PmAgZWxlbWVudHM7IHNldCBgaXNEb2N1bWVudGAgdG8gYGZhbHNlYCB0b1xuICogc3dpdGNoIHRvIGZyYWdtZW50IG1vZGUgYW5kIGRpc2FibGUgdGhpcy5cbiAqXG4gKiBAY2F0ZWdvcnkgTG9hZGluZ1xuICogQHBhcmFtIGNvbnRlbnQgLSBNYXJrdXAgdG8gYmUgbG9hZGVkLlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25zIGZvciB0aGUgY3JlYXRlZCBpbnN0YW5jZS5cbiAqIEBwYXJhbSBpc0RvY3VtZW50IC0gQWxsb3dzIHBhcnNlciB0byBiZSBzd2l0Y2hlZCB0byBmcmFnbWVudCBtb2RlLlxuICogQHJldHVybnMgVGhlIGxvYWRlZCBkb2N1bWVudC5cbiAqIEBzZWUge0BsaW5rIGh0dHBzOi8vY2hlZXJpby5qcy5vcmcjbG9hZGluZ30gZm9yIGFkZGl0aW9uYWwgdXNhZ2UgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBsb2FkOiAoXG4gIGNvbnRlbnQ6IHN0cmluZyB8IEFueU5vZGUgfCBBbnlOb2RlW10gfCBCdWZmZXIsXG4gIG9wdGlvbnM/OiBDaGVlcmlvT3B0aW9ucyB8IG51bGwsXG4gIGlzRG9jdW1lbnQ/OiBib29sZWFuLFxuKSA9PiBDaGVlcmlvQVBJID0gZ2V0TG9hZChwYXJzZSwgKGRvbSwgb3B0aW9ucykgPT5cbiAgb3B0aW9ucy5fdXNlSHRtbFBhcnNlcjJcbiAgICA/IHJlbmRlcldpdGhIdG1scGFyc2VyMihkb20sIG9wdGlvbnMpXG4gICAgOiByZW5kZXJXaXRoUGFyc2U1KGRvbSksXG4pO1xuIiwgImV4cG9ydCB0eXBlICogZnJvbSAnLi90eXBlcy5qcyc7XG5leHBvcnQgdHlwZSB7XG4gIENoZWVyaW8sXG4gIENoZWVyaW9BUEksXG4gIENoZWVyaW9PcHRpb25zLFxuICBIVE1MUGFyc2VyMk9wdGlvbnMsXG59IGZyb20gJy4vc2xpbS5qcyc7XG5leHBvcnQgeyBjb250YWlucywgbWVyZ2UgfSBmcm9tICcuL3N0YXRpYy5qcyc7XG5cbmV4cG9ydCAqIGZyb20gJy4vbG9hZC1wYXJzZS5qcyc7XG4iLCAiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gZGVidWc7XG5cbmZ1bmN0aW9uIGRlYnVnKGxhYmVsKSB7XG4gIHJldHVybiBfZGVidWcuYmluZChudWxsLCBsYWJlbCk7XG59XG5cbmZ1bmN0aW9uIF9kZWJ1ZyhsYWJlbCkge1xuICB2YXIgYXJncyA9IFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcbiAgYXJncy51bnNoaWZ0KCdbJyArIGxhYmVsICsgJ10nKTtcbiAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoYXJncy5qb2luKCcgJykgKyAnXFxuJyk7XG59IiwgInZhciBERUJVRyA9IGZhbHNlOyAvLyBgdHJ1ZWAgdG8gcHJpbnQgZGVidWdnaW5nIGluZm8uXG52YXIgVElNRVIgPSBmYWxzZTsgLy8gYHRydWVgIHRvIHRpbWUgY2FsbHMgdG8gYGxleCgpYCBhbmQgcHJpbnQgdGhlIHJlc3VsdHMuXG5cbnZhciBkZWJ1ZyA9IHJlcXVpcmUoJy4vZGVidWcnKSgnbGV4Jyk7XG5cbmV4cG9ydHMgPSBtb2R1bGUuZXhwb3J0cyA9IGxleDtcblxuLyoqXG4gKiBDb252ZXJ0IGEgQ1NTIHN0cmluZyBpbnRvIGFuIGFycmF5IG9mIGxleGljYWwgdG9rZW5zLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBjc3MgQ1NTXG4gKiBAcmV0dXJucyB7QXJyYXl9IGxleGljYWwgdG9rZW5zXG4gKi9cbmZ1bmN0aW9uIGxleChjc3MpIHtcbiAgdmFyIHN0YXJ0OyAvLyBEZWJ1ZyB0aW1lciBzdGFydC5cblxuICB2YXIgYnVmZmVyID0gJyc7ICAgICAgLy8gQ2hhcmFjdGVyIGFjY3VtdWxhdG9yXG4gIHZhciBjaDsgICAgICAgICAgICAgICAvLyBDdXJyZW50IGNoYXJhY3RlclxuICB2YXIgY29sdW1uID0gMDsgICAgICAgLy8gQ3VycmVudCBzb3VyY2UgY29sdW1uIG51bWJlclxuICB2YXIgY3Vyc29yID0gLTE7ICAgICAgLy8gQ3VycmVudCBzb3VyY2UgY3Vyc29yIHBvc2l0aW9uXG4gIHZhciBkZXB0aCA9IDA7ICAgICAgICAvLyBDdXJyZW50IG5lc3RpbmcgZGVwdGhcbiAgdmFyIGxpbmUgPSAxOyAgICAgICAgIC8vIEN1cnJlbnQgc291cmNlIGxpbmUgbnVtYmVyXG4gIHZhciBzdGF0ZSA9ICdiZWZvcmUtc2VsZWN0b3InOyAvLyBDdXJyZW50IHN0YXRlXG4gIHZhciBzdGFjayA9IFtzdGF0ZV07ICAvLyBTdGF0ZSBzdGFja1xuICB2YXIgdG9rZW4gPSB7fTsgICAgICAgLy8gQ3VycmVudCB0b2tlblxuICB2YXIgdG9rZW5zID0gW107ICAgICAgLy8gVG9rZW4gYWNjdW11bGF0b3JcblxuICAvLyBTdXBwb3J0ZWQgQC1ydWxlcywgaW4gcm91Z2hseSBkZXNjZW5kaW5nIG9yZGVyIG9mIHVzYWdlIHByb2JhYmlsaXR5LlxuICB2YXIgYXRSdWxlcyA9IFtcbiAgICAnbWVkaWEnLFxuICAgICdrZXlmcmFtZXMnLFxuICAgIHsgbmFtZTogJy13ZWJraXQta2V5ZnJhbWVzJywgdHlwZTogJ2tleWZyYW1lcycsIHByZWZpeDogJy13ZWJraXQtJyB9LFxuICAgIHsgbmFtZTogJy1tb3ota2V5ZnJhbWVzJywgdHlwZTogJ2tleWZyYW1lcycsIHByZWZpeDogJy1tb3otJyB9LFxuICAgIHsgbmFtZTogJy1tcy1rZXlmcmFtZXMnLCB0eXBlOiAna2V5ZnJhbWVzJywgcHJlZml4OiAnLW1zLScgfSxcbiAgICB7IG5hbWU6ICctby1rZXlmcmFtZXMnLCB0eXBlOiAna2V5ZnJhbWVzJywgcHJlZml4OiAnLW8tJyB9LFxuICAgICdmb250LWZhY2UnLFxuICAgIHsgbmFtZTogJ2ltcG9ydCcsIHN0YXRlOiAnYmVmb3JlLWF0LXZhbHVlJyB9LFxuICAgIHsgbmFtZTogJ2NoYXJzZXQnLCBzdGF0ZTogJ2JlZm9yZS1hdC12YWx1ZScgfSxcbiAgICAnc3VwcG9ydHMnLFxuICAgICd2aWV3cG9ydCcsXG4gICAgeyBuYW1lOiAnbmFtZXNwYWNlJywgc3RhdGU6ICdiZWZvcmUtYXQtdmFsdWUnIH0sXG4gICAgJ2RvY3VtZW50JyxcbiAgICB7IG5hbWU6ICctbW96LWRvY3VtZW50JywgdHlwZTogJ2RvY3VtZW50JywgcHJlZml4OiAnLW1vei0nIH0sXG4gICAgJ3BhZ2UnXG4gIF07XG5cbiAgLy8gLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qKlxuICAgKiBBZHZhbmNlIHRoZSBjaGFyYWN0ZXIgY3Vyc29yIGFuZCByZXR1cm4gdGhlIG5leHQgY2hhcmFjdGVyLlxuICAgKlxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgbmV4dCBjaGFyYWN0ZXIuXG4gICAqL1xuICBmdW5jdGlvbiBnZXRDaCgpIHtcbiAgICBza2lwKCk7XG4gICAgcmV0dXJuIGNzc1tjdXJzb3JdO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc3RhdGUgYXQgdGhlIGdpdmVuIGluZGV4IGluIHRoZSBzdGFjay5cbiAgICogVGhlIHN0YWNrIGlzIExJRk8gc28gaW5kZXhpbmcgaXMgZnJvbSB0aGUgcmlnaHQuXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbaW5kZXg9MF0gSW5kZXggdG8gcmV0dXJuLlxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBzdGF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0U3RhdGUoaW5kZXgpIHtcbiAgICByZXR1cm4gaW5kZXggPyBzdGFja1tzdGFjay5sZW5ndGggLSAxIC0gaW5kZXhdIDogc3RhdGU7XG4gIH1cblxuICAvKipcbiAgICogTG9vayBhaGVhZCBmb3IgYSBzdHJpbmcgYmVnaW5uaW5nIGZyb20gdGhlIG5leHQgcG9zaXRpb24uIFRoZSBzdHJpbmdcbiAgICogYmVpbmcgbG9va2VkIGZvciBtdXN0IHN0YXJ0IGF0IHRoZSBuZXh0IHBvc2l0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gc3RyIFRoZSBzdHJpbmcgdG8gbG9vayBmb3IuXG4gICAqIEByZXR1cm5zIHtCb29sZWFufSBXaGV0aGVyIHRoZSBzdHJpbmcgd2FzIGZvdW5kLlxuICAgKi9cbiAgZnVuY3Rpb24gaXNOZXh0U3RyaW5nKHN0cikge1xuICAgIHZhciBzdGFydCA9IGN1cnNvciArIDE7XG4gICAgcmV0dXJuIChzdHIgPT09IGNzcy5zbGljZShzdGFydCwgc3RhcnQgKyBzdHIubGVuZ3RoKSk7XG4gIH1cblxuICAvKipcbiAgICogRmluZCB0aGUgc3RhcnQgcG9zaXRpb24gb2YgYSBzdWJzdHJpbmcgYmVnaW5uaW5nIGZyb20gdGhlIG5leHRcbiAgICogcG9zaXRpb24uIFRoZSBzdHJpbmcgYmVpbmcgbG9va2VkIGZvciBtYXkgYmVnaW4gYW55d2hlcmUuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBzdHIgVGhlIHN1YnN0cmluZyB0byBsb29rIGZvci5cbiAgICogQHJldHVybnMge051bWJlcnxmYWxzZX0gVGhlIHBvc2l0aW9uLCBvciBgZmFsc2VgIGlmIG5vdCBmb3VuZC5cbiAgICovXG4gIGZ1bmN0aW9uIGZpbmQoc3RyKSB7XG4gICAgdmFyIHBvcyA9IGNzcy5zbGljZShjdXJzb3IpLmluZGV4T2Yoc3RyKTtcblxuICAgIHJldHVybiBwb3MgPiAwID8gcG9zIDogZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBjaGFyYWN0ZXIgaXMgbmV4dC5cbiAgICpcbiAgICogQHBhcmFtIHtTdHJpbmd9IGNoIENoYXJhY3Rlci5cbiAgICogQHJldHVybnMge0Jvb2xlYW59IFdoZXRoZXIgdGhlIGNoYXJhY3RlciBpcyBuZXh0LlxuICAgKi9cbiAgZnVuY3Rpb24gaXNOZXh0Q2hhcihjaCkge1xuICAgIHJldHVybiBjaCA9PT0gcGVlaygxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGNoYXJhY3RlciBhdCB0aGUgZ2l2ZW4gY3Vyc29yIG9mZnNldC4gVGhlIG9mZnNldCBpcyByZWxhdGl2ZVxuICAgKiB0byB0aGUgY3Vyc29yLCBzbyBuZWdhdGl2ZSB2YWx1ZXMgbW92ZSBiYWNrd2FyZHMuXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbb2Zmc2V0PTFdIEN1cnNvciBvZmZzZXQuXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IENoYXJhY3Rlci5cbiAgICovXG4gIGZ1bmN0aW9uIHBlZWsob2Zmc2V0KSB7XG4gICAgcmV0dXJuIGNzc1tjdXJzb3IgKyAob2Zmc2V0IHx8IDEpXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIGN1cnJlbnQgc3RhdGUgZnJvbSB0aGUgc3RhY2sgYW5kIHNldCB0aGUgbmV3IGN1cnJlbnQgc3RhdGUuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdHJpbmd9IFRoZSByZW1vdmVkIHN0YXRlLlxuICAgKi9cbiAgZnVuY3Rpb24gcG9wU3RhdGUoKSB7XG4gICAgdmFyIHJlbW92ZWQgPSBzdGFjay5wb3AoKTtcbiAgICBzdGF0ZSA9IHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdO1xuXG4gICAgcmV0dXJuIHJlbW92ZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IHN0YXRlIGFuZCBhZGQgaXQgdG8gdGhlIHN0YWNrLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gbmV3U3RhdGUgVGhlIG5ldyBzdGF0ZS5cbiAgICogQHJldHVybnMge051bWJlcn0gVGhlIG5ldyBzdGFjayBsZW5ndGguXG4gICAqL1xuICBmdW5jdGlvbiBwdXNoU3RhdGUobmV3U3RhdGUpIHtcbiAgICBzdGF0ZSA9IG5ld1N0YXRlO1xuICAgIHN0YWNrLnB1c2goc3RhdGUpO1xuXG4gICAgcmV0dXJuIHN0YWNrLmxlbmd0aDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIHRoZSBjdXJyZW50IHN0YXRlIHdpdGggYSBuZXcgc3RhdGUuXG4gICAqXG4gICAqIEBwYXJhbSB7U3RyaW5nfSBuZXdTdGF0ZSBUaGUgbmV3IHN0YXRlLlxuICAgKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVwbGFjZWQgc3RhdGUuXG4gICAqL1xuICBmdW5jdGlvbiByZXBsYWNlU3RhdGUobmV3U3RhdGUpIHtcbiAgICB2YXIgcHJldmlvdXNTdGF0ZSA9IHN0YXRlO1xuICAgIHN0YWNrW3N0YWNrLmxlbmd0aCAtIDFdID0gc3RhdGUgPSBuZXdTdGF0ZTtcblxuICAgIHJldHVybiBwcmV2aW91c1N0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIE1vdmUgdGhlIGNoYXJhY3RlciBjdXJzb3IuIFBvc2l0aXZlIG51bWJlcnMgbW92ZSB0aGUgY3Vyc29yIGZvcndhcmQuXG4gICAqIE5lZ2F0aXZlIG51bWJlcnMgYXJlIG5vdCBzdXBwb3J0ZWQhXG4gICAqXG4gICAqIEBwYXJhbSB7TnVtYmVyfSBbbj0xXSBOdW1iZXIgb2YgY2hhcmFjdGVycyB0byBza2lwLlxuICAgKi9cbiAgZnVuY3Rpb24gc2tpcChuKSB7XG4gICAgaWYgKChuIHx8IDEpID09IDEpIHtcbiAgICAgIGlmIChjc3NbY3Vyc29yXSA9PSAnXFxuJykge1xuICAgICAgICBsaW5lKys7XG4gICAgICAgIGNvbHVtbiA9IDE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb2x1bW4rKztcbiAgICAgIH1cbiAgICAgIGN1cnNvcisrO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgc2tpcFN0ciA9IGNzcy5zbGljZShjdXJzb3IsIGN1cnNvciArIG4pLnNwbGl0KCdcXG4nKTtcbiAgICAgIGlmIChza2lwU3RyLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgbGluZSArPSBza2lwU3RyLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbHVtbiA9IDE7XG4gICAgICB9XG4gICAgICBjb2x1bW4gKz0gc2tpcFN0cltza2lwU3RyLmxlbmd0aCAtIDFdLmxlbmd0aDtcbiAgICAgIGN1cnNvciA9IGN1cnNvciArIG47XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgY3VycmVudCB0b2tlbiB0byB0aGUgcGlsZSBhbmQgcmVzZXQgdGhlIGJ1ZmZlci5cbiAgICovXG4gIGZ1bmN0aW9uIGFkZFRva2VuKCkge1xuICAgIHRva2VuLmVuZCA9IHtcbiAgICAgIGxpbmU6IGxpbmUsXG4gICAgICBjb2w6IGNvbHVtblxuICAgIH07XG5cbiAgICBERUJVRyAmJiBkZWJ1ZygnYWRkVG9rZW46JywgSlNPTi5zdHJpbmdpZnkodG9rZW4sIG51bGwsIDIpKTtcblxuICAgIHRva2Vucy5wdXNoKHRva2VuKTtcblxuICAgIGJ1ZmZlciA9ICcnO1xuICAgIHRva2VuID0ge307XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXJyZW50IHRva2VuLlxuICAgKlxuICAgKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBUb2tlbiB0eXBlLlxuICAgKi9cbiAgZnVuY3Rpb24gaW5pdGlhbGl6ZVRva2VuKHR5cGUpIHtcbiAgICB0b2tlbiA9IHtcbiAgICAgIHR5cGU6IHR5cGUsXG4gICAgICBzdGFydDoge1xuICAgICAgICBsaW5lOiBsaW5lLFxuICAgICAgICBjb2wgOiBjb2x1bW5cbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgLy8gLS0gTWFpbiBMb29wIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8qXG4gIFRoZSBtYWluIGxvb3AgaXMgYSBzdGF0ZSBtYWNoaW5lIHRoYXQgcmVhZHMgaW4gb25lIGNoYXJhY3RlciBhdCBhIHRpbWUsXG4gIGFuZCBkZXRlcm1pbmVzIHdoYXQgdG8gZG8gYmFzZWQgb24gdGhlIGN1cnJlbnQgc3RhdGUgYW5kIGNoYXJhY3Rlci5cbiAgVGhpcyBpcyBpbXBsZW1lbnRlZCBhcyBhIHNlcmllcyBvZiBuZXN0ZWQgYHN3aXRjaGAgc3RhdGVtZW50cyBhbmQgdGhlXG4gIGNhc2Ugb3JkZXJzIGhhdmUgYmVlbiBtaWxkbHkgb3B0aW1pemVkIGJhc2VkIG9uIHJvdWdoIHByb2JhYmlsaXRpZXNcbiAgY2FsY3VsYXRlZCBieSBwcm9jZXNzaW5nIGEgc21hbGwgc2FtcGxlIG9mIHJlYWwtd29ybGQgQ1NTLlxuXG4gIEZ1cnRoZXIgb3B0aW1pemF0aW9uIChzdWNoIGFzIGEgZGlzcGF0Y2ggdGFibGUpIHNob3VsZG4ndCBiZSBuZWNlc3NhcnlcbiAgc2luY2UgdGhlIHRvdGFsIG51bWJlciBvZiBjYXNlcyBpcyB2ZXJ5IGxvdy5cbiAgKi9cblxuICBUSU1FUiAmJiAoc3RhcnQgPSBEYXRlLm5vdygpKTtcblxuICB3aGlsZSAoY2ggPSBnZXRDaCgpKSB7XG4gICAgREVCVUcgJiYgZGVidWcoY2gsIGdldFN0YXRlKCkpO1xuXG4gICAgLy8gY29sdW1uICs9IDE7XG5cbiAgICBzd2l0Y2ggKGNoKSB7XG4gICAgLy8gU3BhY2VcbiAgICBjYXNlICcgJzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnc2VsZWN0b3InOlxuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgY2FzZSAndmFsdWUtcGFyZW4nOlxuICAgICAgY2FzZSAnYXQtZ3JvdXAnOlxuICAgICAgY2FzZSAnYXQtdmFsdWUnOlxuICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICBjYXNlICdkb3VibGUtc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3NpbmdsZS1zdHJpbmcnOlxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICAvLyBOZXdsaW5lIG9yIHRhYlxuICAgIGNhc2UgJ1xcbic6XG4gICAgY2FzZSAnXFx0JzpcbiAgICBjYXNlICdcXHInOlxuICAgIGNhc2UgJ1xcZic6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgIGNhc2UgJ3ZhbHVlLXBhcmVuJzpcbiAgICAgIGNhc2UgJ2F0LWdyb3VwJzpcbiAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgY2FzZSAnc2luZ2xlLXN0cmluZyc6XG4gICAgICBjYXNlICdkb3VibGUtc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3NlbGVjdG9yJzpcbiAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYXQtdmFsdWUnOlxuICAgICAgICAvLyBUb2tlbml6ZSBhbiBALXJ1bGUgaWYgYSBzZW1pLWNvbG9uIHdhcyBvbWl0dGVkLlxuICAgICAgICBpZiAoJ1xcbicgPT09IGNoKSB7XG4gICAgICAgICAgdG9rZW4udmFsdWUgPSBidWZmZXIudHJpbSgpO1xuICAgICAgICAgIGFkZFRva2VuKCk7XG4gICAgICAgICAgcG9wU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gaWYgKCdcXG4nID09PSBjaCkge1xuICAgICAgLy8gICBjb2x1bW4gPSAwO1xuICAgICAgLy8gICBsaW5lICs9IDE7XG4gICAgICAvLyB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJzonOlxuICAgICAgc3dpdGNoIChnZXRTdGF0ZSgpKSB7XG4gICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgdG9rZW4ubmFtZSA9IGJ1ZmZlci50cmltKCk7XG4gICAgICAgIGJ1ZmZlciA9ICcnO1xuXG4gICAgICAgIHJlcGxhY2VTdGF0ZSgnYmVmb3JlLXZhbHVlJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtc2VsZWN0b3InOlxuICAgICAgICBidWZmZXIgKz0gY2g7XG5cbiAgICAgICAgaW5pdGlhbGl6ZVRva2VuKCdzZWxlY3RvcicpO1xuICAgICAgICBwdXNoU3RhdGUoJ3NlbGVjdG9yJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgICByZXBsYWNlU3RhdGUoJ3ZhbHVlJyk7XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgJzsnOlxuICAgICAgc3dpdGNoIChnZXRTdGF0ZSgpKSB7XG4gICAgICBjYXNlICduYW1lJzpcbiAgICAgIGNhc2UgJ2JlZm9yZS12YWx1ZSc6XG4gICAgICBjYXNlICd2YWx1ZSc6XG4gICAgICAgIC8vIFRva2VuaXplIGEgZGVjbGFyYXRpb25cbiAgICAgICAgLy8gaWYgdmFsdWUgaXMgZW1wdHkgc2tpcCB0aGUgZGVjbGFyYXRpb25cbiAgICAgICAgaWYgKGJ1ZmZlci50cmltKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRva2VuLnZhbHVlID0gYnVmZmVyLnRyaW0oKSxcbiAgICAgICAgICBhZGRUb2tlbigpO1xuICAgICAgICB9XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgnYmVmb3JlLW5hbWUnKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ3ZhbHVlLXBhcmVuJzpcbiAgICAgICAgLy8gSW5zaWduaWZpY2FudCBzZW1pLWNvbG9uXG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2F0LXZhbHVlJzpcbiAgICAgICAgLy8gVG9rZW5pemUgYW4gQC1ydWxlXG4gICAgICAgIHRva2VuLnZhbHVlID0gYnVmZmVyLnRyaW0oKTtcbiAgICAgICAgYWRkVG9rZW4oKTtcbiAgICAgICAgcG9wU3RhdGUoKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JlZm9yZS1uYW1lJzpcbiAgICAgICAgLy8gRXh0cmFuZW91cyBzZW1pLWNvbG9uXG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd7JzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnc2VsZWN0b3InOlxuICAgICAgICAvLyBJZiB0aGUgc2VxdWVuY2UgaXMgYFxce2AgdGhlbiBhc3N1bWUgdGhhdCB0aGUgYnJhY2Ugc2hvdWxkIGJlIGVzY2FwZWQuXG4gICAgICAgIGlmIChwZWVrKC0xKSA9PT0gJ1xcXFwnKSB7XG4gICAgICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFRva2VuaXplIGEgc2VsZWN0b3JcbiAgICAgICAgdG9rZW4udGV4dCA9IGJ1ZmZlci50cmltKCk7XG4gICAgICAgIGFkZFRva2VuKCk7XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgnYmVmb3JlLW5hbWUnKTtcbiAgICAgICAgZGVwdGggPSBkZXB0aCArIDE7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdhdC1ncm91cCc6XG4gICAgICAgIC8vIFRva2VuaXplIGFuIEAtZ3JvdXBcbiAgICAgICAgdG9rZW4ubmFtZSA9IGJ1ZmZlci50cmltKCk7XG5cbiAgICAgICAgLy8gWFhYOiBALXJ1bGVzIGFyZSBzdGFydGluZyB0byBnZXQgaGFpcnlcbiAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2ZvbnQtZmFjZSc6XG4gICAgICAgIGNhc2UgJ3ZpZXdwb3J0JyA6XG4gICAgICAgIGNhc2UgJ3BhZ2UnICAgICA6XG4gICAgICAgICAgcHVzaFN0YXRlKCdiZWZvcmUtbmFtZScpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcHVzaFN0YXRlKCdiZWZvcmUtc2VsZWN0b3InKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFkZFRva2VuKCk7XG4gICAgICAgIGRlcHRoID0gZGVwdGggKyAxO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICBjYXNlICdhdC1ydWxlJzpcbiAgICAgICAgLy8gVG9rZW5pemUgYSBkZWNsYXJhdGlvbiBvciBhbiBALXJ1bGVcbiAgICAgICAgdG9rZW4ubmFtZSA9IGJ1ZmZlci50cmltKCk7XG4gICAgICAgIGFkZFRva2VuKCk7XG4gICAgICAgIHB1c2hTdGF0ZSgnYmVmb3JlLW5hbWUnKTtcbiAgICAgICAgZGVwdGggPSBkZXB0aCArIDE7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgIGNhc2UgJ2RvdWJsZS1zdHJpbmcnOlxuICAgICAgY2FzZSAnc2luZ2xlLXN0cmluZyc6XG4gICAgICAgIC8vIElnbm9yZSBicmFjZXMgaW4gY29tbWVudHMgYW5kIHN0cmluZ3NcbiAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JlZm9yZS12YWx1ZSc6XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgndmFsdWUnKTtcbiAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICd9JzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnYmVmb3JlLW5hbWUnOlxuICAgICAgY2FzZSAnbmFtZSc6XG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICAvLyBJZiB0aGUgYnVmZmVyIGNvbnRhaW5zIGFueXRoaW5nLCBpdCBpcyBhIHZhbHVlXG4gICAgICAgIGlmIChidWZmZXIpIHtcbiAgICAgICAgICB0b2tlbi52YWx1ZSA9IGJ1ZmZlci50cmltKCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGUgY3VycmVudCB0b2tlbiBoYXMgYSBuYW1lIGFuZCBhIHZhbHVlIGl0IHNob3VsZCBiZSB0b2tlbml6ZWQuXG4gICAgICAgIGlmICh0b2tlbi5uYW1lICYmIHRva2VuLnZhbHVlKSB7XG4gICAgICAgICAgYWRkVG9rZW4oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIExlYXZlIHRoZSBibG9ja1xuICAgICAgICBpbml0aWFsaXplVG9rZW4oJ2VuZCcpO1xuICAgICAgICBhZGRUb2tlbigpO1xuICAgICAgICBwb3BTdGF0ZSgpO1xuXG4gICAgICAgIC8vIFdlIG1pZ2h0IG5lZWQgdG8gbGVhdmUgYWdhaW4uXG4gICAgICAgIC8vIFhYWDogV2hhdCBhYm91dCAzIGxldmVscyBkZWVwP1xuICAgICAgICBpZiAoJ2F0LWdyb3VwJyA9PT0gZ2V0U3RhdGUoKSkge1xuICAgICAgICAgIGluaXRpYWxpemVUb2tlbignYXQtZ3JvdXAtZW5kJyk7XG4gICAgICAgICAgYWRkVG9rZW4oKTtcbiAgICAgICAgICBwb3BTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICBpZiAoZGVwdGggPiAwKSB7XG4gICAgICAgICAgZGVwdGggPSBkZXB0aCAtIDE7XG4gICAgICAgIH1cblxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYXQtZ3JvdXAnOlxuICAgICAgY2FzZSAnYmVmb3JlLXNlbGVjdG9yJzpcbiAgICAgIGNhc2UgJ3NlbGVjdG9yJzpcbiAgICAgICAgLy8gSWYgdGhlIHNlcXVlbmNlIGlzIGBcXH1gIHRoZW4gYXNzdW1lIHRoYXQgdGhlIGJyYWNlIHNob3VsZCBiZSBlc2NhcGVkLlxuICAgICAgICBpZiAocGVlaygtMSkgPT09ICdcXFxcJykge1xuICAgICAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZGVwdGggPiAwKSB7XG4gICAgICAgICAgLy8gTGVhdmUgYmxvY2sgaWYgaW4gYW4gYXQtZ3JvdXBcbiAgICAgICAgICBpZiAoJ2F0LWdyb3VwJyA9PT0gZ2V0U3RhdGUoMSkpIHtcbiAgICAgICAgICAgIGluaXRpYWxpemVUb2tlbignYXQtZ3JvdXAtZW5kJyk7XG4gICAgICAgICAgICBhZGRUb2tlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChkZXB0aCA+IDEpIHtcbiAgICAgICAgICBwb3BTdGF0ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGRlcHRoID4gMCkge1xuICAgICAgICAgIGRlcHRoID0gZGVwdGggLSAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdkb3VibGUtc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3NpbmdsZS1zdHJpbmcnOlxuICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgIC8vIElnbm9yZSBicmFjZXMgaW4gY29tbWVudHMgYW5kIHN0cmluZ3MuXG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGJyZWFrO1xuXG4gICAgLy8gU3RyaW5nc1xuICAgIGNhc2UgJ1wiJzpcbiAgICBjYXNlIFwiJ1wiOlxuICAgICAgc3dpdGNoIChnZXRTdGF0ZSgpKSB7XG4gICAgICBjYXNlICdkb3VibGUtc3RyaW5nJzpcbiAgICAgICAgaWYgKCdcIicgPT09IGNoICYmICdcXFxcJyAhPT0gcGVlaygtMSkpIHtcbiAgICAgICAgICBwb3BTdGF0ZSgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdzaW5nbGUtc3RyaW5nJzpcbiAgICAgICAgaWYgKFwiJ1wiID09PSBjaCAmJiAnXFxcXCcgIT09IHBlZWsoLTEpKSB7XG4gICAgICAgICAgcG9wU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYmVmb3JlLWF0LXZhbHVlJzpcbiAgICAgICAgcmVwbGFjZVN0YXRlKCdhdC12YWx1ZScpO1xuICAgICAgICBwdXNoU3RhdGUoJ1wiJyA9PT0gY2ggPyAnZG91YmxlLXN0cmluZycgOiAnc2luZ2xlLXN0cmluZycpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYmVmb3JlLXZhbHVlJzpcbiAgICAgICAgcmVwbGFjZVN0YXRlKCd2YWx1ZScpO1xuICAgICAgICBwdXNoU3RhdGUoJ1wiJyA9PT0gY2ggPyAnZG91YmxlLXN0cmluZycgOiAnc2luZ2xlLXN0cmluZycpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgIC8vIElnbm9yZSBzdHJpbmdzIHdpdGhpbiBjb21tZW50cy5cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmICgnXFxcXCcgIT09IHBlZWsoLTEpKSB7XG4gICAgICAgICAgcHVzaFN0YXRlKCdcIicgPT09IGNoID8gJ2RvdWJsZS1zdHJpbmcnIDogJ3NpbmdsZS1zdHJpbmcnKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBidWZmZXIgKz0gY2g7XG4gICAgICBicmVhaztcblxuICAgIC8vIENvbW1lbnRzXG4gICAgY2FzZSAnLyc6XG4gICAgICBzd2l0Y2ggKGdldFN0YXRlKCkpIHtcbiAgICAgIGNhc2UgJ2NvbW1lbnQnOlxuICAgICAgY2FzZSAnZG91YmxlLXN0cmluZyc6XG4gICAgICBjYXNlICdzaW5nbGUtc3RyaW5nJzpcbiAgICAgICAgLy8gSWdub3JlXG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JlZm9yZS12YWx1ZSc6XG4gICAgICBjYXNlICdzZWxlY3Rvcic6XG4gICAgICBjYXNlICduYW1lJzpcbiAgICAgIGNhc2UgJ3ZhbHVlJzpcbiAgICAgICAgaWYgKGlzTmV4dENoYXIoJyonKSkge1xuICAgICAgICAgIC8vIElnbm9yZSBjb21tZW50cyBpbiBzZWxlY3RvcnMsIHByb3BlcnRpZXMgYW5kIHZhbHVlcy4gVGhleSBhcmVcbiAgICAgICAgICAvLyBkaWZmaWN1bHQgdG8gcmVwcmVzZW50IGluIHRoZSBBU1QuXG4gICAgICAgICAgdmFyIHBvcyA9IGZpbmQoJyovJyk7XG5cbiAgICAgICAgICBpZiAocG9zKSB7XG4gICAgICAgICAgICBza2lwKHBvcyArIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoZ2V0U3RhdGUoKSA9PSAnYmVmb3JlLXZhbHVlJykgcmVwbGFjZVN0YXRlKCd2YWx1ZScpO1xuICAgICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGlzTmV4dENoYXIoJyonKSkge1xuICAgICAgICAgIC8vIENyZWF0ZSBhIGNvbW1lbnQgdG9rZW5cbiAgICAgICAgICBpbml0aWFsaXplVG9rZW4oJ2NvbW1lbnQnKTtcbiAgICAgICAgICBwdXNoU3RhdGUoJ2NvbW1lbnQnKTtcbiAgICAgICAgICBza2lwKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICAvLyBDb21tZW50IGVuZCBvciB1bml2ZXJzYWwgc2VsZWN0b3JcbiAgICBjYXNlICcqJzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnY29tbWVudCc6XG4gICAgICAgIGlmIChpc05leHRDaGFyKCcvJykpIHtcbiAgICAgICAgICAvLyBUb2tlbml6ZSBhIGNvbW1lbnRcbiAgICAgICAgICB0b2tlbi50ZXh0ID0gYnVmZmVyOyAvLyBEb24ndCB0cmltKCkhXG4gICAgICAgICAgc2tpcCgpO1xuICAgICAgICAgIGFkZFRva2VuKCk7XG4gICAgICAgICAgcG9wU3RhdGUoKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBidWZmZXIgKz0gY2g7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JlZm9yZS1zZWxlY3Rvcic6XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgaW5pdGlhbGl6ZVRva2VuKCdzZWxlY3RvcicpO1xuICAgICAgICBwdXNoU3RhdGUoJ3NlbGVjdG9yJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgICByZXBsYWNlU3RhdGUoJ3ZhbHVlJyk7XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuXG4gICAgLy8gQC1ydWxlc1xuICAgIGNhc2UgJ0AnOlxuICAgICAgc3dpdGNoIChnZXRTdGF0ZSgpKSB7XG4gICAgICBjYXNlICdjb21tZW50JzpcbiAgICAgIGNhc2UgJ2RvdWJsZS1zdHJpbmcnOlxuICAgICAgY2FzZSAnc2luZ2xlLXN0cmluZyc6XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgICByZXBsYWNlU3RhdGUoJ3ZhbHVlJyk7XG4gICAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgc3VwcG9ydGVkIEAtcnVsZXMgYW5kIGF0dGVtcHQgdG8gdG9rZW5pemUgb25lLlxuICAgICAgICB2YXIgdG9rZW5pemVkID0gZmFsc2U7XG4gICAgICAgIHZhciBuYW1lO1xuICAgICAgICB2YXIgcnVsZTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMCwgbGVuID0gYXRSdWxlcy5sZW5ndGg7ICF0b2tlbml6ZWQgJiYgaiA8IGxlbjsgKytqKSB7XG4gICAgICAgICAgcnVsZSA9IGF0UnVsZXNbal07XG4gICAgICAgICAgbmFtZSA9IHJ1bGUubmFtZSB8fCBydWxlO1xuXG4gICAgICAgICAgaWYgKCFpc05leHRTdHJpbmcobmFtZSkpIHsgY29udGludWU7IH1cblxuICAgICAgICAgIHRva2VuaXplZCA9IHRydWU7XG5cbiAgICAgICAgICBpbml0aWFsaXplVG9rZW4obmFtZSk7XG4gICAgICAgICAgcHVzaFN0YXRlKHJ1bGUuc3RhdGUgfHwgJ2F0LWdyb3VwJyk7XG4gICAgICAgICAgc2tpcChuYW1lLmxlbmd0aCk7XG5cbiAgICAgICAgICBpZiAocnVsZS5wcmVmaXgpIHtcbiAgICAgICAgICAgIHRva2VuLnByZWZpeCA9IHJ1bGUucHJlZml4O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChydWxlLnR5cGUpIHtcbiAgICAgICAgICAgIHRva2VuLnR5cGUgPSBydWxlLnR5cGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF0b2tlbml6ZWQpIHtcbiAgICAgICAgICAvLyBLZWVwIG9uIHRydWNraW4nIEFtZXJpY2EhXG4gICAgICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG5cbiAgICAvLyBQYXJlbnRoZXNlcyBhcmUgdHJhY2tlZCB0byBkaXNhbWJpZ3VhdGUgc2VtaS1jb2xvbnMsIHN1Y2ggYXMgd2l0aGluIGFcbiAgICAvLyBkYXRhIFVSSS5cbiAgICBjYXNlICcoJzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAndmFsdWUnOlxuICAgICAgICBwdXNoU3RhdGUoJ3ZhbHVlLXBhcmVuJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnYmVmb3JlLXZhbHVlJzpcbiAgICAgICAgcmVwbGFjZVN0YXRlKCd2YWx1ZScpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgYnVmZmVyICs9IGNoO1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlICcpJzpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAndmFsdWUtcGFyZW4nOlxuICAgICAgICBwb3BTdGF0ZSgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2JlZm9yZS12YWx1ZSc6XG4gICAgICAgIHJlcGxhY2VTdGF0ZSgndmFsdWUnKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG5cbiAgICAgIGJ1ZmZlciArPSBjaDtcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIHN3aXRjaCAoZ2V0U3RhdGUoKSkge1xuICAgICAgY2FzZSAnYmVmb3JlLXNlbGVjdG9yJzpcbiAgICAgICAgaW5pdGlhbGl6ZVRva2VuKCdzZWxlY3RvcicpO1xuICAgICAgICBwdXNoU3RhdGUoJ3NlbGVjdG9yJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtbmFtZSc6XG4gICAgICAgIGluaXRpYWxpemVUb2tlbigncHJvcGVydHknKTtcbiAgICAgICAgcmVwbGFjZVN0YXRlKCduYW1lJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtdmFsdWUnOlxuICAgICAgICByZXBsYWNlU3RhdGUoJ3ZhbHVlJyk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlICdiZWZvcmUtYXQtdmFsdWUnOlxuICAgICAgICByZXBsYWNlU3RhdGUoJ2F0LXZhbHVlJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICBidWZmZXIgKz0gY2g7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBUSU1FUiAmJiBkZWJ1ZygncmFuIGluJywgKERhdGUubm93KCkgLSBzdGFydCkgKyAnbXMnKTtcblxuICByZXR1cm4gdG9rZW5zO1xufVxuIiwgInZhciBERUJVRyA9IGZhbHNlOyAvLyBgdHJ1ZWAgdG8gcHJpbnQgZGVidWdnaW5nIGluZm8uXG52YXIgVElNRVIgPSBmYWxzZTsgLy8gYHRydWVgIHRvIHRpbWUgY2FsbHMgdG8gYHBhcnNlKClgIGFuZCBwcmludCB0aGUgcmVzdWx0cy5cblxudmFyIGRlYnVnID0gcmVxdWlyZSgnLi9kZWJ1ZycpKCdwYXJzZScpO1xudmFyIGxleCA9IHJlcXVpcmUoJy4vbGV4ZXInKTtcblxuZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcGFyc2U7XG5cbnZhciBfY29tbWVudHM7ICAgLy8gV2hldGhlciBjb21tZW50cyBhcmUgYWxsb3dlZC5cbnZhciBfZGVwdGg7ICAgICAgLy8gQ3VycmVudCBibG9jayBuZXN0aW5nIGRlcHRoLlxudmFyIF9wb3NpdGlvbjsgICAvLyBXaGV0aGVyIHRvIGluY2x1ZGUgbGluZS9jb2x1bW4gcG9zaXRpb24uXG52YXIgX3Rva2VuczsgICAgIC8vIEFycmF5IG9mIGxleGljYWwgdG9rZW5zLlxuXG4vKipcbiAqIENvbnZlcnQgYSBDU1Mgc3RyaW5nIG9yIGFycmF5IG9mIGxleGljYWwgdG9rZW5zIGludG8gYSBgc3RyaW5naWZ5YC1hYmxlIEFTVC5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gY3NzIENTUyBzdHJpbmcgb3IgYXJyYXkgb2YgbGV4aWNhbCB0b2tlblxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5jb21tZW50cz1mYWxzZV0gYWxsb3cgY29tbWVudCBub2RlcyBpbiB0aGUgQVNUXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBgc3RyaW5naWZ5YC1hYmxlIEFTVFxuICovXG5mdW5jdGlvbiBwYXJzZShjc3MsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXJ0OyAvLyBEZWJ1ZyB0aW1lciBzdGFydC5cblxuICBvcHRpb25zIHx8IChvcHRpb25zID0ge30pO1xuICBfY29tbWVudHMgPSAhIW9wdGlvbnMuY29tbWVudHM7XG4gIF9wb3NpdGlvbiA9ICEhb3B0aW9ucy5wb3NpdGlvbjtcblxuICBfZGVwdGggPSAwO1xuXG4gIC8vIE9wZXJhdGUgb24gYSBjb3B5IG9mIHRoZSBnaXZlbiB0b2tlbnMsIG9yIHRoZSBsZXgoKSdkIENTUyBzdHJpbmcuXG4gIF90b2tlbnMgPSBBcnJheS5pc0FycmF5KGNzcykgPyBjc3Muc2xpY2UoKSA6IGxleChjc3MpO1xuXG4gIHZhciBydWxlO1xuICB2YXIgcnVsZXMgPSBbXTtcbiAgdmFyIHRva2VuO1xuXG4gIFRJTUVSICYmIChzdGFydCA9IERhdGUubm93KCkpO1xuXG4gIHdoaWxlICgodG9rZW4gPSBuZXh0KCkpKSB7XG4gICAgcnVsZSA9IHBhcnNlVG9rZW4odG9rZW4pO1xuICAgIHJ1bGUgJiYgcnVsZXMucHVzaChydWxlKTtcbiAgfVxuXG4gIFRJTUVSICYmIGRlYnVnKCdyYW4gaW4nLCAoRGF0ZS5ub3coKSAtIHN0YXJ0KSArICdtcycpO1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogXCJzdHlsZXNoZWV0XCIsXG4gICAgc3R5bGVzaGVldDoge1xuICAgICAgcnVsZXM6IHJ1bGVzXG4gICAgfVxuICB9O1xufVxuXG4vLyAtLSBGdW5jdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBCdWlsZCBhbiBBU1Qgbm9kZSBmcm9tIGEgbGV4aWNhbCB0b2tlbi5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdG9rZW4gbGV4aWNhbCB0b2tlblxuICogQHBhcmFtIHtPYmplY3R9IFtvdmVycmlkZV0gb2JqZWN0IGhhc2ggb2YgcHJvcGVydGllcyB0aGF0IG92ZXJyaWRlIHRob3NlXG4gKiAgIGFscmVhZHkgaW4gdGhlIHRva2VuLCBvciB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHRva2VuLlxuICogQHJldHVybnMge09iamVjdH0gQVNUIG5vZGVcbiAqL1xuZnVuY3Rpb24gYXN0Tm9kZSh0b2tlbiwgb3ZlcnJpZGUpIHtcbiAgb3ZlcnJpZGUgfHwgKG92ZXJyaWRlID0ge30pO1xuXG4gIHZhciBrZXk7XG4gIHZhciBrZXlzID0gWyd0eXBlJywgJ25hbWUnLCAndmFsdWUnXTtcbiAgdmFyIG5vZGUgPSB7fTtcblxuICAvLyBBdm9pZGluZyBbXS5mb3JFYWNoIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLlxuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICBrZXkgPSBrZXlzW2ldO1xuXG4gICAgaWYgKHRva2VuW2tleV0pIHtcbiAgICAgIG5vZGVba2V5XSA9IG92ZXJyaWRlW2tleV0gfHwgdG9rZW5ba2V5XTtcbiAgICB9XG4gIH1cblxuICBrZXlzID0gT2JqZWN0LmtleXMob3ZlcnJpZGUpO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgKytpKSB7XG4gICAga2V5ID0ga2V5c1tpXTtcblxuICAgIGlmICghbm9kZVtrZXldKSB7XG4gICAgICBub2RlW2tleV0gPSBvdmVycmlkZVtrZXldO1xuICAgIH1cbiAgfVxuXG4gIGlmIChfcG9zaXRpb24pIHtcbiAgICBub2RlLnBvc2l0aW9uID0ge1xuICAgICAgc3RhcnQ6IHRva2VuLnN0YXJ0LFxuICAgICAgZW5kOiB0b2tlbi5lbmRcbiAgICB9O1xuICB9XG5cbiAgREVCVUcgJiYgZGVidWcoJ2FzdE5vZGU6JywgSlNPTi5zdHJpbmdpZnkobm9kZSwgbnVsbCwgMikpO1xuXG4gIHJldHVybiBub2RlO1xufVxuXG4vKipcbiAqIFJlbW92ZSBhIGxleGljYWwgdG9rZW4gZnJvbSB0aGUgc3RhY2sgYW5kIHJldHVybiB0aGUgcmVtb3ZlZCB0b2tlbi5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBsZXhpY2FsIHRva2VuXG4gKi9cbmZ1bmN0aW9uIG5leHQoKSB7XG4gIHZhciB0b2tlbiA9IF90b2tlbnMuc2hpZnQoKTtcbiAgREVCVUcgJiYgZGVidWcoJ25leHQ6JywgSlNPTi5zdHJpbmdpZnkodG9rZW4sIG51bGwsIDIpKTtcbiAgcmV0dXJuIHRva2VuO1xufVxuXG4vLyAtLSBQYXJzZSogRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQC1ncm91cCBsZXhpY2FsIHRva2VuIHRvIGFuIEFTVCBub2RlLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSB0b2tlbiBALWdyb3VwIGxleGljYWwgdG9rZW5cbiAqIEByZXR1cm5zIHtPYmplY3R9IEAtZ3JvdXAgQVNUIG5vZGVcbiAqL1xuZnVuY3Rpb24gcGFyc2VBdEdyb3VwKHRva2VuKSB7XG4gIF9kZXB0aCA9IF9kZXB0aCArIDE7XG5cbiAgLy8gQXMgdGhlIEAtZ3JvdXAgdG9rZW4gaXMgYXNzZW1ibGVkLCByZWxldmFudCB0b2tlbiB2YWx1ZXMgYXJlIGNhcHR1cmVkIGhlcmVcbiAgLy8gdGVtcG9yYXJpbHkuIFRoZXkgd2lsbCBsYXRlciBiZSB1c2VkIGFzIGB0b2tlbml6ZSgpYCBvdmVycmlkZXMuXG4gIHZhciBvdmVycmlkZXMgPSB7fTtcblxuICBzd2l0Y2ggKHRva2VuLnR5cGUpIHtcbiAgY2FzZSAnZm9udC1mYWNlJzpcbiAgY2FzZSAndmlld3BvcnQnIDpcbiAgICBvdmVycmlkZXMuZGVjbGFyYXRpb25zID0gcGFyc2VEZWNsYXJhdGlvbnMoKTtcbiAgICBicmVhaztcblxuICBjYXNlICdwYWdlJzpcbiAgICBvdmVycmlkZXMucHJlZml4ID0gdG9rZW4ucHJlZml4O1xuICAgIG92ZXJyaWRlcy5kZWNsYXJhdGlvbnMgPSBwYXJzZURlY2xhcmF0aW9ucygpO1xuICAgIGJyZWFrO1xuXG4gIGRlZmF1bHQ6XG4gICAgb3ZlcnJpZGVzLnByZWZpeCA9IHRva2VuLnByZWZpeDtcbiAgICBvdmVycmlkZXMucnVsZXMgPSBwYXJzZVJ1bGVzKCk7XG4gIH1cblxuICByZXR1cm4gYXN0Tm9kZSh0b2tlbiwgb3ZlcnJpZGVzKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGFuIEBpbXBvcnQgbGV4aWNhbCB0b2tlbiB0byBhbiBBU1Qgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdG9rZW4gQGltcG9ydCBsZXhpY2FsIHRva2VuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBAaW1wb3J0IEFTVCBub2RlXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQXRJbXBvcnQodG9rZW4pIHtcbiAgcmV0dXJuIGFzdE5vZGUodG9rZW4pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYW4gQGNoYXJzZXQgdG9rZW4gdG8gYW4gQVNUIG5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHRva2VuIEBjaGFyc2V0IGxleGljYWwgdG9rZW5cbiAqIEByZXR1cm5zIHtPYmplY3R9IEBjaGFyc2V0IG5vZGVcbiAqL1xuZnVuY3Rpb24gcGFyc2VDaGFyc2V0KHRva2VuKSB7XG4gIHJldHVybiBhc3ROb2RlKHRva2VuKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgY29tbWVudCB0b2tlbiB0byBhbiBBU1QgTm9kZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gdG9rZW4gY29tbWVudCBsZXhpY2FsIHRva2VuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBjb21tZW50IG5vZGVcbiAqL1xuZnVuY3Rpb24gcGFyc2VDb21tZW50KHRva2VuKSB7XG4gIHJldHVybiBhc3ROb2RlKHRva2VuLCB7dGV4dDogdG9rZW4udGV4dH0pO1xufVxuXG5mdW5jdGlvbiBwYXJzZU5hbWVzcGFjZSh0b2tlbikge1xuICByZXR1cm4gYXN0Tm9kZSh0b2tlbik7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHByb3BlcnR5IGxleGljYWwgdG9rZW4gdG8gYSBwcm9wZXJ0eSBBU1Qgbm9kZS5cbiAqXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBwcm9wZXJ0eSBub2RlXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUHJvcGVydHkodG9rZW4pIHtcbiAgcmV0dXJuIGFzdE5vZGUodG9rZW4pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBzZWxlY3RvciBsZXhpY2FsIHRva2VuIHRvIGEgc2VsZWN0b3IgQVNUIG5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IHRva2VuIHNlbGVjdG9yIGxleGljYWwgdG9rZW5cbiAqIEByZXR1cm5zIHtPYmplY3R9IHNlbGVjdG9yIG5vZGVcbiAqL1xuZnVuY3Rpb24gcGFyc2VTZWxlY3Rvcih0b2tlbikge1xuICBmdW5jdGlvbiB0cmltKHN0cikge1xuICAgIHJldHVybiBzdHIudHJpbSgpO1xuICB9XG5cbiAgcmV0dXJuIGFzdE5vZGUodG9rZW4sIHtcbiAgICB0eXBlOiAncnVsZScsXG4gICAgc2VsZWN0b3JzOiB0b2tlbi50ZXh0LnNwbGl0KCcsJykubWFwKHRyaW0pLFxuICAgIGRlY2xhcmF0aW9uczogcGFyc2VEZWNsYXJhdGlvbnModG9rZW4pXG4gIH0pO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSBsZXhpY2FsIHRva2VuIHRvIGFuIEFTVCBub2RlLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R8dW5kZWZpbmVkfSBBU1Qgbm9kZVxuICovXG5mdW5jdGlvbiBwYXJzZVRva2VuKHRva2VuKSB7XG4gIHN3aXRjaCAodG9rZW4udHlwZSkge1xuICAvLyBDYXNlcyBhcmUgbGlzdGVkIGluIHJvdWdobHkgZGVzY2VuZGluZyBvcmRlciBvZiBwcm9iYWJpbGl0eS5cbiAgY2FzZSAncHJvcGVydHknOiByZXR1cm4gcGFyc2VQcm9wZXJ0eSh0b2tlbik7XG5cbiAgY2FzZSAnc2VsZWN0b3InOiByZXR1cm4gcGFyc2VTZWxlY3Rvcih0b2tlbik7XG5cbiAgY2FzZSAnYXQtZ3JvdXAtZW5kJzogX2RlcHRoID0gX2RlcHRoIC0gMTsgcmV0dXJuO1xuXG4gIGNhc2UgJ21lZGlhJyAgICAgOlxuICBjYXNlICdrZXlmcmFtZXMnIDpyZXR1cm4gcGFyc2VBdEdyb3VwKHRva2VuKTtcblxuICBjYXNlICdjb21tZW50JzogaWYgKF9jb21tZW50cykgeyByZXR1cm4gcGFyc2VDb21tZW50KHRva2VuKTsgfSBicmVhaztcblxuICBjYXNlICdjaGFyc2V0JzogcmV0dXJuIHBhcnNlQ2hhcnNldCh0b2tlbik7XG4gIGNhc2UgJ2ltcG9ydCc6IHJldHVybiBwYXJzZUF0SW1wb3J0KHRva2VuKTtcblxuICBjYXNlICduYW1lc3BhY2UnOiByZXR1cm4gcGFyc2VOYW1lc3BhY2UodG9rZW4pO1xuXG4gIGNhc2UgJ2ZvbnQtZmFjZSc6XG4gIGNhc2UgJ3N1cHBvcnRzJyA6XG4gIGNhc2UgJ3ZpZXdwb3J0JyA6XG4gIGNhc2UgJ2RvY3VtZW50JyA6XG4gIGNhc2UgJ3BhZ2UnICAgICA6IHJldHVybiBwYXJzZUF0R3JvdXAodG9rZW4pO1xuICB9XG5cbiAgREVCVUcgJiYgZGVidWcoJ3BhcnNlVG9rZW46IHVuZXhwZWN0ZWQgdG9rZW46JywgSlNPTi5zdHJpbmdpZnkodG9rZW4pKTtcbn1cblxuLy8gLS0gUGFyc2UgSGVscGVyIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLyoqXG4gKiBJdGVyYXRpdmVseSBwYXJzZXMgbGV4aWNhbCB0b2tlbnMgZnJvbSB0aGUgc3RhY2sgaW50byBBU1Qgbm9kZXMgdW50aWwgYVxuICogY29uZGl0aW9uYWwgZnVuY3Rpb24gcmV0dXJucyBgZmFsc2VgLCBhdCB3aGljaCBwb2ludCBpdGVyYXRpb24gdGVybWluYXRlc1xuICogYW5kIGFueSBBU1Qgbm9kZXMgY29sbGVjdGVkIGFyZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb25kaXRpb25GblxuICogICBAcGFyYW0ge09iamVjdH0gdG9rZW4gdGhlIGxleGljYWwgdG9rZW4gYmVpbmcgcGFyc2VkXG4gKiAgIEByZXR1cm5zIHtCb29sZWFufSBgdHJ1ZWAgaWYgdGhlIHRva2VuIHNob3VsZCBiZSBwYXJzZWQsIGBmYWxzZWAgb3RoZXJ3aXNlXG4gKiBAcmV0dXJuIHtBcnJheX0gQVNUIG5vZGVzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlVG9rZW5zV2hpbGUoY29uZGl0aW9uRm4pIHtcbiAgdmFyIG5vZGU7XG4gIHZhciBub2RlcyA9IFtdO1xuICB2YXIgdG9rZW47XG5cbiAgd2hpbGUgKCh0b2tlbiA9IG5leHQoKSkgJiYgKGNvbmRpdGlvbkZuICYmIGNvbmRpdGlvbkZuKHRva2VuKSkpIHtcbiAgICBub2RlID0gcGFyc2VUb2tlbih0b2tlbik7XG4gICAgbm9kZSAmJiBub2Rlcy5wdXNoKG5vZGUpO1xuICB9XG5cbiAgLy8gUGxhY2UgYW4gdW51c2VkIG5vbi1gZW5kYCBsZXhpY2FsIHRva2VuIGJhY2sgb250byB0aGUgc3RhY2suXG4gIGlmICh0b2tlbiAmJiB0b2tlbi50eXBlICE9PSAnZW5kJykge1xuICAgIF90b2tlbnMudW5zaGlmdCh0b2tlbik7XG4gIH1cblxuICByZXR1cm4gbm9kZXM7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHNlcmllcyBvZiB0b2tlbnMgaW50byBhIHNlcXVlbmNlIG9mIGRlY2xhcmF0aW9uIEFTVCBub2Rlcy5cbiAqXG4gKiBAcmV0dXJucyB7QXJyYXl9IGRlY2xhcmF0aW9uIG5vZGVzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlRGVjbGFyYXRpb25zKCkge1xuICByZXR1cm4gcGFyc2VUb2tlbnNXaGlsZShmdW5jdGlvbiAodG9rZW4pIHtcbiAgICByZXR1cm4gKHRva2VuLnR5cGUgPT09ICdwcm9wZXJ0eScgfHwgdG9rZW4udHlwZSA9PT0gJ2NvbW1lbnQnKTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHNlcmllcyBvZiB0b2tlbnMgaW50byBhIHNlcXVlbmNlIG9mIHJ1bGUgbm9kZXMuXG4gKlxuICogQHJldHVybnMge0FycmF5fSBydWxlIG5vZGVzXG4gKi9cbmZ1bmN0aW9uIHBhcnNlUnVsZXMoKSB7XG4gIHJldHVybiBwYXJzZVRva2Vuc1doaWxlKGZ1bmN0aW9uICgpIHsgcmV0dXJuIF9kZXB0aDsgfSk7XG59XG4iLCAidmFyIERFQlVHID0gZmFsc2U7IC8vIGB0cnVlYCB0byBwcmludCBkZWJ1Z2dpbmcgaW5mby5cbnZhciBUSU1FUiA9IGZhbHNlOyAvLyBgdHJ1ZWAgdG8gdGltZSBjYWxscyB0byBgc3RyaW5naWZ5KClgIGFuZCBwcmludCB0aGUgcmVzdWx0cy5cblxudmFyIGRlYnVnID0gcmVxdWlyZSgnLi9kZWJ1ZycpKCdzdHJpbmdpZnknKTtcblxudmFyIF9jb21tZW50czsgICAgICAvLyBXaGV0aGVyIGNvbW1lbnRzIGFyZSBhbGxvd2VkIGluIHRoZSBzdHJpbmdpZmllZCBDU1MuXG52YXIgX2NvbXByZXNzOyAgICAgIC8vIFdoZXRoZXIgdGhlIHN0cmluZ2lmaWVkIENTUyBzaG91bGQgYmUgY29tcHJlc3NlZC5cbnZhciBfaW5kZW50YXRpb247ICAgLy8gSW5kZW50YXRpb24gb3B0aW9uIHZhbHVlLlxudmFyIF9sZXZlbDsgICAgICAgICAvLyBDdXJyZW50IGluZGVudGF0aW9uIGxldmVsLlxudmFyIF9uOyAgICAgICAgICAgICAvLyBDb21wcmVzc2lvbi1hd2FyZSBuZXdsaW5lIGNoYXJhY3Rlci5cbnZhciBfczsgICAgICAgICAgICAgLy8gQ29tcHJlc3Npb24tYXdhcmUgc3BhY2UgY2hhcmFjdGVyLlxuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSBzdHJpbmdpZnk7XG5cbi8qKlxuICogQ29udmVydCBhIGBzdHJpbmdpZnlgLWFibGUgQVNUIGludG8gYSBDU1Mgc3RyaW5nLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBgc3RyaW5naWZ5YC1hYmxlIEFTVFxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zXVxuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5jb21tZW50cz1mYWxzZV0gYWxsb3cgY29tbWVudHMgaW4gdGhlIENTU1xuICogQHBhcmFtIHtCb29sZWFufSBbb3B0aW9ucy5jb21wcmVzcz1mYWxzZV0gY29tcHJlc3Mgd2hpdGVzcGFjZVxuICogQHBhcmFtIHtTdHJpbmd9IFtvcHRpb25zLmluZGVudGF0aW9uPScnXSBpbmRlbnRhdGlvbiBzZXF1ZW5jZVxuICogQHJldHVybnMge1N0cmluZ30gQ1NTXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeShhc3QsIG9wdGlvbnMpIHtcbiAgdmFyIHN0YXJ0OyAvLyBEZWJ1ZyB0aW1lciBzdGFydC5cblxuICBvcHRpb25zIHx8IChvcHRpb25zID0ge30pO1xuICBfaW5kZW50YXRpb24gPSBvcHRpb25zLmluZGVudGF0aW9uIHx8ICcnO1xuICBfY29tcHJlc3MgPSAhIW9wdGlvbnMuY29tcHJlc3M7XG4gIF9jb21tZW50cyA9ICEhb3B0aW9ucy5jb21tZW50cztcbiAgX2xldmVsID0gMTtcblxuICBpZiAoX2NvbXByZXNzKSB7XG4gICAgX24gPSBfcyA9ICcnO1xuICB9IGVsc2Uge1xuICAgIF9uID0gJ1xcbic7XG4gICAgX3MgPSAnICc7XG4gIH1cblxuICBUSU1FUiAmJiAoc3RhcnQgPSBEYXRlLm5vdygpKTtcblxuICB2YXIgY3NzID0gcmVkdWNlKGFzdC5zdHlsZXNoZWV0LnJ1bGVzLCBzdHJpbmdpZnlOb2RlKS5qb2luKCdcXG4nKS50cmltKCk7XG5cbiAgVElNRVIgJiYgZGVidWcoJ3JhbiBpbicsIChEYXRlLm5vdygpIC0gc3RhcnQpICsgJ21zJyk7XG5cbiAgcmV0dXJuIGNzcztcbn1cblxuLy8gLS0gRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8qKlxuICogTW9kaWZ5IHRoZSBpbmRlbnRhdGlvbiBsZXZlbCwgb3IgcmV0dXJuIGEgY29tcHJlc3Npb24tYXdhcmUgc2VxdWVuY2Ugb2ZcbiAqIHNwYWNlcyBlcXVhbCB0byB0aGUgY3VycmVudCBpbmRlbnRhdGlvbiBsZXZlbC5cbiAqXG4gKiBAcGFyYW0ge051bWJlcn0gW2xldmVsPXVuZGVmaW5lZF0gaW5kZW50YXRpb24gbGV2ZWwgbW9kaWZpZXJcbiAqIEByZXR1cm5zIHtTdHJpbmd9IHNlcXVlbmNlIG9mIHNwYWNlc1xuICovXG5mdW5jdGlvbiBpbmRlbnQobGV2ZWwpIHtcbiAgaWYgKGxldmVsKSB7XG4gICAgX2xldmVsICs9IGxldmVsO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChfY29tcHJlc3MpIHsgcmV0dXJuICcnOyB9XG5cbiAgcmV0dXJuIEFycmF5KF9sZXZlbCkuam9pbihfaW5kZW50YXRpb24gfHwgJycpO1xufVxuXG4vLyAtLSBTdHJpbmdpZnkgRnVuY3Rpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFN0cmluZ2lmeSBhbiBALXJ1bGUgQVNUIG5vZGUuXG4gKlxuICogVXNlIGBzdHJpbmdpZnlBdEdyb3VwKClgIHdoZW4gZGVhbGluZyB3aXRoIEAtZ3JvdXBzIHRoYXQgbWF5IGNvbnRhaW4gYmxvY2tzXG4gKiBzdWNoIGFzIEBtZWRpYS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gdHlwZSBALXJ1bGUgdHlwZS4gRS5nLiwgaW1wb3J0LCBjaGFyc2V0XG4gKiBAcmV0dXJucyB7U3RyaW5nfSBTdHJpbmdpZmllZCBALXJ1bGVcbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5QXRSdWxlKG5vZGUpIHtcbiAgcmV0dXJuICdAJyArIG5vZGUudHlwZSArICcgJyArIG5vZGUudmFsdWUgKyAnOycgKyBfbjtcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgYW4gQC1ncm91cCBBU1Qgbm9kZS5cbiAqXG4gKiBVc2UgYHN0cmluZ2lmeUF0UnVsZSgpYCB3aGVuIGRlYWxpbmcgd2l0aCBALXJ1bGVzIHRoYXQgbWF5IG5vdCBjb250YWluIGJsb2Nrc1xuICogc3VjaCBhcyBAaW1wb3J0LlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBub2RlIEAtZ3JvdXAgQVNUIG5vZGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeUF0R3JvdXAobm9kZSkge1xuICB2YXIgbGFiZWwgPSAnJztcbiAgdmFyIHByZWZpeCA9IG5vZGUucHJlZml4IHx8ICcnO1xuXG4gIGlmIChub2RlLm5hbWUpIHtcbiAgICBsYWJlbCA9ICcgJyArIG5vZGUubmFtZTtcbiAgfVxuXG4gIC8vIEZJWE1FOiBALXJ1bGUgY29uZGl0aW9uYWwgbG9naWMgaXMgbGVha2luZyBldmVyeXdoZXJlLlxuICB2YXIgY2hvbXAgPSBub2RlLnR5cGUgIT09ICdwYWdlJztcblxuICByZXR1cm4gJ0AnICsgcHJlZml4ICsgbm9kZS50eXBlICsgbGFiZWwgKyBfcyArIHN0cmluZ2lmeUJsb2NrKG5vZGUsIGNob21wKSArIF9uO1xufVxuXG4vKipcbiAqIFN0cmluZ2lmeSBhIGNvbW1lbnQgQVNUIG5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5vZGUgY29tbWVudCBBU1Qgbm9kZVxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5Q29tbWVudChub2RlKSB7XG4gIGlmICghX2NvbW1lbnRzKSB7IHJldHVybiAnJzsgfVxuXG4gIHJldHVybiAnLyonICsgKG5vZGUudGV4dCB8fCAnJykgKyAnKi8nICsgX247XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IGEgcnVsZSBBU1Qgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gbm9kZSBydWxlIEFTVCBub2RlXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5mdW5jdGlvbiBzdHJpbmdpZnlSdWxlKG5vZGUpIHtcbiAgdmFyIGxhYmVsO1xuXG4gIGlmIChub2RlLnNlbGVjdG9ycykge1xuICAgIGxhYmVsID0gbm9kZS5zZWxlY3RvcnMuam9pbignLCcgKyBfbik7XG4gIH0gZWxzZSB7XG4gICAgbGFiZWwgPSAnQCcgKyBub2RlLnR5cGU7XG4gICAgbGFiZWwgKz0gbm9kZS5uYW1lID8gJyAnICsgbm9kZS5uYW1lIDogJyc7XG4gIH1cblxuICByZXR1cm4gaW5kZW50KCkgKyBsYWJlbCArIF9zICsgc3RyaW5naWZ5QmxvY2sobm9kZSkgKyBfbjtcbn1cblxuXG4vLyAtLSBTdHJpbmdpZnkgSGVscGVyIEZ1bmN0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vKipcbiAqIFJlZHVjZSBhbiBhcnJheSBieSBhcHBseWluZyBhIGZ1bmN0aW9uIHRvIGVhY2ggaXRlbSBhbmQgcmV0YWluaW5nIHRoZSB0cnV0aHlcbiAqIHJlc3VsdHMuXG4gKlxuICogV2hlbiBgaXRlbS50eXBlYCBpcyBgJ2NvbW1lbnQnYCBgc3RyaW5naWZ5Q29tbWVudGAgd2lsbCBiZSBhcHBsaWVkIGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gaXRlbXMgYXJyYXkgdG8gcmVkdWNlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiBmdW5jdGlvbiB0byBjYWxsIGZvciBlYWNoIGl0ZW0gaW4gdGhlIGFycmF5XG4gKiAgIEByZXR1cm5zIHtNaXhlZH0gVHJ1dGh5IHZhbHVlcyB3aWxsIGJlIHJldGFpbmVkLCBmYWxzeSB2YWx1ZXMgb21pdHRlZFxuICogQHJldHVybnMge0FycmF5fSByZXRhaW5lZCByZXN1bHRzXG4gKi9cbmZ1bmN0aW9uIHJlZHVjZShpdGVtcywgZm4pIHtcbiAgcmV0dXJuIGl0ZW1zLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0cywgaXRlbSkge1xuICAgIHZhciByZXN1bHQgPSAoaXRlbS50eXBlID09PSAnY29tbWVudCcpID8gc3RyaW5naWZ5Q29tbWVudChpdGVtKSA6IGZuKGl0ZW0pO1xuICAgIHJlc3VsdCAmJiByZXN1bHRzLnB1c2gocmVzdWx0KTtcbiAgICByZXR1cm4gcmVzdWx0cztcbiAgfSwgW10pO1xufVxuXG4vKipcbiAqIFN0cmluZ2lmeSBhbiBBU1Qgbm9kZSB3aXRoIHRoZSBhc3N1bXB0aW9uIHRoYXQgaXQgcmVwcmVzZW50cyBhIGJsb2NrIG9mXG4gKiBkZWNsYXJhdGlvbnMgb3Igb3RoZXIgQC1ncm91cCBjb250ZW50cy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gbm9kZSBBU1Qgbm9kZVxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuLy8gRklYTUU6IGNob21wIHNob3VsZCBub3QgYmUgYSBtYWdpYyBib29sZWFuIHBhcmFtZXRlclxuZnVuY3Rpb24gc3RyaW5naWZ5QmxvY2sobm9kZSwgY2hvbXApIHtcbiAgdmFyIGNoaWxkcmVuID0gbm9kZS5kZWNsYXJhdGlvbnM7XG4gIHZhciBmbiA9IHN0cmluZ2lmeURlY2xhcmF0aW9uO1xuXG4gIGlmIChub2RlLnJ1bGVzKSB7XG4gICAgY2hpbGRyZW4gPSBub2RlLnJ1bGVzO1xuICAgIGZuID0gc3RyaW5naWZ5UnVsZTtcbiAgfVxuXG4gIGNoaWxkcmVuID0gc3RyaW5naWZ5Q2hpbGRyZW4oY2hpbGRyZW4sIGZuKTtcbiAgY2hpbGRyZW4gJiYgKGNoaWxkcmVuID0gX24gKyBjaGlsZHJlbiArIChjaG9tcCA/ICcnIDogX24pKTtcblxuICByZXR1cm4gJ3snICsgY2hpbGRyZW4gKyBpbmRlbnQoKSArICd9Jztcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgYW4gYXJyYXkgb2YgY2hpbGQgQVNUIG5vZGVzIGJ5IGNhbGxpbmcgdGhlIGdpdmVuIHN0cmluZ2lmeSBmdW5jdGlvblxuICogb25jZSBmb3IgZWFjaCBjaGlsZCwgYW5kIGNvbmNhdGVuYXRpbmcgdGhlIHJlc3VsdHMuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gY2hpbGRyZW4gYG5vZGUucnVsZXNgIG9yIGBub2RlLmRlY2xhcmF0aW9uc2BcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZuIHN0cmluZ2lmeSBmdW5jdGlvblxuICogQHJldHVybnMge1N0cmluZ31cbiAqL1xuZnVuY3Rpb24gc3RyaW5naWZ5Q2hpbGRyZW4oY2hpbGRyZW4sIGZuKSB7XG4gIGlmICghY2hpbGRyZW4pIHsgcmV0dXJuICcnOyB9XG5cbiAgaW5kZW50KDEpO1xuICB2YXIgcmVzdWx0cyA9IHJlZHVjZShjaGlsZHJlbiwgZm4pO1xuICBpbmRlbnQoLTEpO1xuXG4gIGlmICghcmVzdWx0cy5sZW5ndGgpIHsgcmV0dXJuICcnOyB9XG5cbiAgcmV0dXJuIHJlc3VsdHMuam9pbihfbik7XG59XG5cbi8qKlxuICogU3RyaW5naWZ5IGEgZGVjbGFyYXRpb24gQVNUIG5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5vZGUgZGVjbGFyYXRpb24gQVNUIG5vZGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeURlY2xhcmF0aW9uKG5vZGUpIHtcbiAgaWYgKG5vZGUudHlwZSA9PT0gJ3Byb3BlcnR5Jykge1xuICAgIHJldHVybiBzdHJpbmdpZnlQcm9wZXJ0eShub2RlKTtcbiAgfVxuXG4gIERFQlVHICYmIGRlYnVnKCdzdHJpbmdpZnlEZWNsYXJhdGlvbjogdW5leHBlY3RlZCBub2RlOicsIEpTT04uc3RyaW5naWZ5KG5vZGUpKTtcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgYW4gQVNUIG5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5vZGUgQVNUIG5vZGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeU5vZGUobm9kZSkge1xuICBzd2l0Y2ggKG5vZGUudHlwZSkge1xuICAvLyBDYXNlcyBhcmUgbGlzdGVkIGluIHJvdWdobHkgZGVzY2VuZGluZyBvcmRlciBvZiBwcm9iYWJpbGl0eS5cbiAgY2FzZSAncnVsZSc6IHJldHVybiBzdHJpbmdpZnlSdWxlKG5vZGUpO1xuXG4gIGNhc2UgJ21lZGlhJyAgICA6XG4gIGNhc2UgJ2tleWZyYW1lcyc6IHJldHVybiBzdHJpbmdpZnlBdEdyb3VwKG5vZGUpO1xuXG4gIGNhc2UgJ2NvbW1lbnQnOiByZXR1cm4gc3RyaW5naWZ5Q29tbWVudChub2RlKTtcblxuICBjYXNlICdpbXBvcnQnICAgOlxuICBjYXNlICdjaGFyc2V0JyAgOlxuICBjYXNlICduYW1lc3BhY2UnOiByZXR1cm4gc3RyaW5naWZ5QXRSdWxlKG5vZGUpO1xuXG4gIGNhc2UgJ2ZvbnQtZmFjZSc6XG4gIGNhc2UgJ3N1cHBvcnRzJyA6XG4gIGNhc2UgJ3ZpZXdwb3J0JyA6XG4gIGNhc2UgJ2RvY3VtZW50JyA6XG4gIGNhc2UgJ3BhZ2UnICAgICA6IHJldHVybiBzdHJpbmdpZnlBdEdyb3VwKG5vZGUpO1xuICB9XG5cbiAgREVCVUcgJiYgZGVidWcoJ3N0cmluZ2lmeU5vZGU6IHVuZXhwZWN0ZWQgbm9kZTogJyArIEpTT04uc3RyaW5naWZ5KG5vZGUpKTtcbn1cblxuLyoqXG4gKiBTdHJpbmdpZnkgYW4gQVNUIHByb3BlcnR5IG5vZGUuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IG5vZGUgQVNUIHByb3BlcnR5IG5vZGVcbiAqIEByZXR1cm5zIHtTdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHN0cmluZ2lmeVByb3BlcnR5KG5vZGUpIHtcbiAgdmFyIG5hbWUgPSBub2RlLm5hbWUgPyBub2RlLm5hbWUgKyAnOicgKyBfcyA6ICcnO1xuXG4gIHJldHVybiBpbmRlbnQoKSArIG5hbWUgKyBub2RlLnZhbHVlICsgJzsnO1xufVxuIiwgIm1vZHVsZS5leHBvcnRzID0ge1xuICAgIGxleCAgOiByZXF1aXJlKCcuL2xpYi9sZXhlcicpLFxuICAgIHBhcnNlOiByZXF1aXJlKCcuL2xpYi9wYXJzZXInKSxcbiAgICBzdHJpbmdpZnk6IHJlcXVpcmUoJy4vbGliL3N0cmluZ2lmeScpXG59O1xuIiwgIi8qXHJcblNsaWNrIFBhcnNlclxyXG4gLSBvcmlnaW5hbGx5IGNyZWF0ZWQgYnkgdGhlIGFsbWlnaHR5IFRob21hcyBBeWxvdHQgPEBzdWJ0bGVncmFkaWVudD4gKGh0dHA6Ly9zdWJ0bGVncmFkaWVudC5jb20pXHJcbiovXCJ1c2Ugc3RyaWN0XCJcclxuXHJcbi8vIE5vdGFibGUgY2hhbmdlcyBmcm9tIFNsaWNrLlBhcnNlciAxLjAueFxyXG5cclxuLy8gVGhlIHBhcnNlciBub3cgdXNlcyAyIGNsYXNzZXM6IEV4cHJlc3Npb25zIGFuZCBFeHByZXNzaW9uXHJcbi8vIGBuZXcgRXhwcmVzc2lvbnNgIHByb2R1Y2VzIGFuIGFycmF5LWxpa2Ugb2JqZWN0IGNvbnRhaW5pbmcgYSBsaXN0IG9mIEV4cHJlc3Npb24gb2JqZWN0c1xyXG4vLyAtIEV4cHJlc3Npb25zOjp0b1N0cmluZygpIHByb2R1Y2VzIGEgY2xlYW5lZCB1cCBleHByZXNzaW9ucyBzdHJpbmdcclxuLy8gYG5ldyBFeHByZXNzaW9uYCBwcm9kdWNlcyBhbiBhcnJheS1saWtlIG9iamVjdFxyXG4vLyAtIEV4cHJlc3Npb246OnRvU3RyaW5nKCkgcHJvZHVjZXMgYSBjbGVhbmVkIHVwIGV4cHJlc3Npb24gc3RyaW5nXHJcbi8vIFRoZSBvbmx5IGV4cG9zZWQgbWV0aG9kIGlzIHBhcnNlLCB3aGljaCBwcm9kdWNlcyBhIChjYWNoZWQpIGBuZXcgRXhwcmVzc2lvbnNgIGluc3RhbmNlXHJcbi8vIHBhcnNlZC5yYXcgaXMgbm8gbG9uZ2VyIHByZXNlbnQsIHVzZSAudG9TdHJpbmcoKVxyXG4vLyBwYXJzZWQuZXhwcmVzc2lvbiBpcyBub3cgdXNlbGVzcywganVzdCB1c2UgdGhlIGluZGljZXNcclxuLy8gcGFyc2VkLnJldmVyc2UoKSBoYXMgYmVlbiByZW1vdmVkIGZvciBub3csIGR1ZSB0byBpdHMgYXBwYXJlbnQgdXNlbGVzc25lc3NcclxuLy8gT3RoZXIgY2hhbmdlcyBpbiB0aGUgRXhwcmVzc2lvbnMgb2JqZWN0OlxyXG4vLyAtIGNsYXNzTmFtZXMgYXJlIG5vdyB1bmlxdWUsIGFuZCBzYXZlIGJvdGggZXNjYXBlZCBhbmQgdW5lc2NhcGVkIHZhbHVlc1xyXG4vLyAtIGF0dHJpYnV0ZXMgbm93IHNhdmUgYm90aCBlc2NhcGVkIGFuZCB1bmVzY2FwZWQgdmFsdWVzXHJcbi8vIC0gcHNldWRvcyBub3cgc2F2ZSBib3RoIGVzY2FwZWQgYW5kIHVuZXNjYXBlZCB2YWx1ZXNcclxuXHJcbnZhciBlc2NhcGVSZSAgID0gLyhbLS4qKz9eJHt9KCl8W1xcXVxcL1xcXFxdKS9nLFxyXG4gICAgdW5lc2NhcGVSZSA9IC9cXFxcL2dcclxuXHJcbnZhciBlc2NhcGUgPSBmdW5jdGlvbihzdHJpbmcpe1xyXG4gICAgLy8gWFJlZ0V4cCB2Mi4wLjAtYmV0YS0zXHJcbiAgICAvLyBcdTAwQUIgaHR0cHM6Ly9naXRodWIuY29tL3NsZXZpdGhhbi9YUmVnRXhwL2Jsb2IvbWFzdGVyL3NyYy94cmVnZXhwLmpzXHJcbiAgICByZXR1cm4gKHN0cmluZyArIFwiXCIpLnJlcGxhY2UoZXNjYXBlUmUsICdcXFxcJDEnKVxyXG59XHJcblxyXG52YXIgdW5lc2NhcGUgPSBmdW5jdGlvbihzdHJpbmcpe1xyXG4gICAgcmV0dXJuIChzdHJpbmcgKyBcIlwiKS5yZXBsYWNlKHVuZXNjYXBlUmUsICcnKVxyXG59XHJcblxyXG52YXIgc2xpY2tSZSA9IFJlZ0V4cChcclxuLypcclxuIyEvdXNyL2Jpbi9lbnYgcnVieVxyXG5wdXRzIFwiXFx0XFx0XCIgKyBEQVRBLnJlYWQuZ3N1YigvXFwoXFw/eFxcKXxcXHMrIy4qJHxcXHMrfFxcXFwkfFxcXFxuLywnJylcclxuX19FTkRfX1xyXG4gICAgXCIoP3gpXig/OlxcXHJcbiAgICAgIFxcXFxzKiAoICwgKSBcXFxccyogICAgICAgICAgICAgICAjIFNlcGFyYXRvciAgICAgICAgICBcXG5cXFxyXG4gICAgfCBcXFxccyogKCA8Y29tYmluYXRvcj4rICkgXFxcXHMqICAgIyBDb21iaW5hdG9yICAgICAgICAgXFxuXFxcclxuICAgIHwgICAgICAoIFxcXFxzKyApICAgICAgICAgICAgICAgICAjIENvbWJpbmF0b3JDaGlsZHJlbiBcXG5cXFxyXG4gICAgfCAgICAgICggPHVuaWNvZGU+KyB8IFxcXFwqICkgICAgICMgVGFnICAgICAgICAgICAgICAgIFxcblxcXHJcbiAgICB8IFxcXFwjICAoIDx1bmljb2RlPisgICAgICAgKSAgICAgIyBJRCAgICAgICAgICAgICAgICAgXFxuXFxcclxuICAgIHwgXFxcXC4gICggPHVuaWNvZGU+KyAgICAgICApICAgICAjIENsYXNzTmFtZSAgICAgICAgICBcXG5cXFxyXG4gICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEF0dHJpYnV0ZSAgICAgICAgICBcXG5cXFxyXG4gICAgXFxcXFsgIFxcXHJcbiAgICAgICAgXFxcXHMqICg8dW5pY29kZTE+KykgICg/OiAgXFxcclxuICAgICAgICAgICAgXFxcXHMqIChbKl4kIX58XT89KSAgKD86ICBcXFxyXG4gICAgICAgICAgICAgICAgXFxcXHMqICg/OlxcXHJcbiAgICAgICAgICAgICAgICAgICAgKFtcXFwiJ10/KSguKj8pXFxcXDkgXFxcclxuICAgICAgICAgICAgICAgIClcXFxyXG4gICAgICAgICAgICApICBcXFxyXG4gICAgICAgICk/ICBcXFxccyogIFxcXHJcbiAgICBcXFxcXSg/IVxcXFxdKSBcXG5cXFxyXG4gICAgfCAgIDorICggPHVuaWNvZGU+KyApKD86XFxcclxuICAgIFxcXFwoICg/OlxcXHJcbiAgICAgICAgKD86KFtcXFwiJ10pKFteXFxcXDEyXSopXFxcXDEyKXwoKD86XFxcXChbXildK1xcXFwpfFteKCldKikrKVxcXHJcbiAgICApIFxcXFwpXFxcclxuICAgICk/XFxcclxuICAgIClcIlxyXG4qL1xyXG5cIl4oPzpcXFxccyooLClcXFxccyp8XFxcXHMqKDxjb21iaW5hdG9yPispXFxcXHMqfChcXFxccyspfCg8dW5pY29kZT4rfFxcXFwqKXxcXFxcIyg8dW5pY29kZT4rKXxcXFxcLig8dW5pY29kZT4rKXxcXFxcW1xcXFxzKig8dW5pY29kZTE+KykoPzpcXFxccyooWypeJCF+fF0/PSkoPzpcXFxccyooPzooW1xcXCInXT8pKC4qPylcXFxcOSkpKT9cXFxccypcXFxcXSg/IVxcXFxdKXwoOispKDx1bmljb2RlPispKD86XFxcXCgoPzooPzooW1xcXCInXSkoW15cXFxcMTNdKilcXFxcMTMpfCgoPzpcXFxcKFteKV0rXFxcXCl8W14oKV0qKSspKVxcXFwpKT8pXCJcclxuICAgIC5yZXBsYWNlKC88Y29tYmluYXRvcj4vLCAnWycgKyBlc2NhcGUoXCI+K35gIUAkJV4mPXt9XFxcXDs8L1wiKSArICddJylcclxuICAgIC5yZXBsYWNlKC88dW5pY29kZT4vZywgJyg/OltcXFxcd1xcXFx1MDBhMS1cXFxcdUZGRkYtXXxcXFxcXFxcXFteXFxcXHMwLTlhLWZdKScpXHJcbiAgICAucmVwbGFjZSgvPHVuaWNvZGUxPi9nLCAnKD86WzpcXFxcd1xcXFx1MDBhMS1cXFxcdUZGRkYtXXxcXFxcXFxcXFteXFxcXHMwLTlhLWZdKScpXHJcbilcclxuXHJcbi8vIFBhcnRcclxuXHJcbnZhciBQYXJ0ID0gZnVuY3Rpb24gUGFydChjb21iaW5hdG9yKXtcclxuICAgIHRoaXMuY29tYmluYXRvciA9IGNvbWJpbmF0b3IgfHwgXCIgXCJcclxuICAgIHRoaXMudGFnID0gXCIqXCJcclxufVxyXG5cclxuUGFydC5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpe1xyXG5cclxuICAgIGlmICghdGhpcy5yYXcpe1xyXG5cclxuICAgICAgICB2YXIgeHByID0gXCJcIiwgaywgcGFydFxyXG5cclxuICAgICAgICB4cHIgKz0gdGhpcy50YWcgfHwgXCIqXCJcclxuICAgICAgICBpZiAodGhpcy5pZCkgeHByICs9IFwiI1wiICsgdGhpcy5pZFxyXG4gICAgICAgIGlmICh0aGlzLmNsYXNzZXMpIHhwciArPSBcIi5cIiArIHRoaXMuY2xhc3NMaXN0LmpvaW4oXCIuXCIpXHJcbiAgICAgICAgaWYgKHRoaXMuYXR0cmlidXRlcykgZm9yIChrID0gMDsgcGFydCA9IHRoaXMuYXR0cmlidXRlc1trKytdOyl7XHJcbiAgICAgICAgICAgIHhwciArPSBcIltcIiArIHBhcnQubmFtZSArIChwYXJ0Lm9wZXJhdG9yID8gcGFydC5vcGVyYXRvciArICdcIicgKyBwYXJ0LnZhbHVlICsgJ1wiJyA6ICcnKSArIFwiXVwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnBzZXVkb3MpIGZvciAoayA9IDA7IHBhcnQgPSB0aGlzLnBzZXVkb3NbaysrXTspe1xyXG4gICAgICAgICAgICB4cHIgKz0gXCI6XCIgKyBwYXJ0Lm5hbWVcclxuICAgICAgICAgICAgaWYgKHBhcnQudmFsdWUpIHhwciArPSBcIihcIiArIHBhcnQudmFsdWUgKyBcIilcIlxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yYXcgPSB4cHJcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucmF3XHJcbn1cclxuXHJcbi8vIEV4cHJlc3Npb25cclxuXHJcbnZhciBFeHByZXNzaW9uID0gZnVuY3Rpb24gRXhwcmVzc2lvbigpe1xyXG4gICAgdGhpcy5sZW5ndGggPSAwXHJcbn1cclxuXHJcbkV4cHJlc3Npb24ucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcclxuXHJcbiAgICBpZiAoIXRoaXMucmF3KXtcclxuXHJcbiAgICAgICAgdmFyIHhwciA9IFwiXCJcclxuXHJcbiAgICAgICAgZm9yICh2YXIgaiA9IDAsIGJpdDsgYml0ID0gdGhpc1tqKytdOyl7XHJcbiAgICAgICAgICAgIGlmIChqICE9PSAxKSB4cHIgKz0gXCIgXCJcclxuICAgICAgICAgICAgaWYgKGJpdC5jb21iaW5hdG9yICE9PSBcIiBcIikgeHByICs9IGJpdC5jb21iaW5hdG9yICsgXCIgXCJcclxuICAgICAgICAgICAgeHByICs9IGJpdFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yYXcgPSB4cHJcclxuXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMucmF3XHJcbn1cclxuXHJcbnZhciByZXBsYWNlciA9IGZ1bmN0aW9uKFxyXG4gICAgcmF3TWF0Y2gsXHJcblxyXG4gICAgc2VwYXJhdG9yLFxyXG4gICAgY29tYmluYXRvcixcclxuICAgIGNvbWJpbmF0b3JDaGlsZHJlbixcclxuXHJcbiAgICB0YWdOYW1lLFxyXG4gICAgaWQsXHJcbiAgICBjbGFzc05hbWUsXHJcblxyXG4gICAgYXR0cmlidXRlS2V5LFxyXG4gICAgYXR0cmlidXRlT3BlcmF0b3IsXHJcbiAgICBhdHRyaWJ1dGVRdW90ZSxcclxuICAgIGF0dHJpYnV0ZVZhbHVlLFxyXG5cclxuICAgIHBzZXVkb01hcmtlcixcclxuICAgIHBzZXVkb0NsYXNzLFxyXG4gICAgcHNldWRvUXVvdGUsXHJcbiAgICBwc2V1ZG9DbGFzc1F1b3RlZFZhbHVlLFxyXG4gICAgcHNldWRvQ2xhc3NWYWx1ZVxyXG4pe1xyXG5cclxuICAgIHZhciBleHByZXNzaW9uLCBjdXJyZW50XHJcblxyXG4gICAgaWYgKHNlcGFyYXRvciB8fCAhdGhpcy5sZW5ndGgpe1xyXG4gICAgICAgIGV4cHJlc3Npb24gPSB0aGlzW3RoaXMubGVuZ3RoKytdID0gbmV3IEV4cHJlc3Npb25cclxuICAgICAgICBpZiAoc2VwYXJhdG9yKSByZXR1cm4gJydcclxuICAgIH1cclxuXHJcbiAgICBpZiAoIWV4cHJlc3Npb24pIGV4cHJlc3Npb24gPSB0aGlzW3RoaXMubGVuZ3RoIC0gMV1cclxuXHJcbiAgICBpZiAoY29tYmluYXRvciB8fCBjb21iaW5hdG9yQ2hpbGRyZW4gfHwgIWV4cHJlc3Npb24ubGVuZ3RoKXtcclxuICAgICAgICBjdXJyZW50ID0gZXhwcmVzc2lvbltleHByZXNzaW9uLmxlbmd0aCsrXSA9IG5ldyBQYXJ0KGNvbWJpbmF0b3IpXHJcbiAgICB9XHJcblxyXG4gICAgaWYgKCFjdXJyZW50KSBjdXJyZW50ID0gZXhwcmVzc2lvbltleHByZXNzaW9uLmxlbmd0aCAtIDFdXHJcblxyXG4gICAgaWYgKHRhZ05hbWUpe1xyXG5cclxuICAgICAgICBjdXJyZW50LnRhZyA9IHVuZXNjYXBlKHRhZ05hbWUpXHJcblxyXG4gICAgfSBlbHNlIGlmIChpZCl7XHJcblxyXG4gICAgICAgIGN1cnJlbnQuaWQgPSB1bmVzY2FwZShpZClcclxuXHJcbiAgICB9IGVsc2UgaWYgKGNsYXNzTmFtZSl7XHJcblxyXG4gICAgICAgIHZhciB1bmVzY2FwZWQgPSB1bmVzY2FwZShjbGFzc05hbWUpXHJcblxyXG4gICAgICAgIHZhciBjbGFzc2VzID0gY3VycmVudC5jbGFzc2VzIHx8IChjdXJyZW50LmNsYXNzZXMgPSB7fSlcclxuICAgICAgICBpZiAoIWNsYXNzZXNbdW5lc2NhcGVkXSl7XHJcbiAgICAgICAgICAgIGNsYXNzZXNbdW5lc2NhcGVkXSA9IGVzY2FwZShjbGFzc05hbWUpXHJcbiAgICAgICAgICAgIHZhciBjbGFzc0xpc3QgPSBjdXJyZW50LmNsYXNzTGlzdCB8fCAoY3VycmVudC5jbGFzc0xpc3QgPSBbXSlcclxuICAgICAgICAgICAgY2xhc3NMaXN0LnB1c2godW5lc2NhcGVkKVxyXG4gICAgICAgICAgICBjbGFzc0xpc3Quc29ydCgpXHJcbiAgICAgICAgfVxyXG5cclxuICAgIH0gZWxzZSBpZiAocHNldWRvQ2xhc3Mpe1xyXG5cclxuICAgICAgICBwc2V1ZG9DbGFzc1ZhbHVlID0gcHNldWRvQ2xhc3NWYWx1ZSB8fCBwc2V1ZG9DbGFzc1F1b3RlZFZhbHVlXHJcblxyXG4gICAgICAgIDsoY3VycmVudC5wc2V1ZG9zIHx8IChjdXJyZW50LnBzZXVkb3MgPSBbXSkpLnB1c2goe1xyXG4gICAgICAgICAgICB0eXBlICAgICAgICAgOiBwc2V1ZG9NYXJrZXIubGVuZ3RoID09IDEgPyAnY2xhc3MnIDogJ2VsZW1lbnQnLFxyXG4gICAgICAgICAgICBuYW1lICAgICAgICAgOiB1bmVzY2FwZShwc2V1ZG9DbGFzcyksXHJcbiAgICAgICAgICAgIGVzY2FwZWROYW1lICA6IGVzY2FwZShwc2V1ZG9DbGFzcyksXHJcbiAgICAgICAgICAgIHZhbHVlICAgICAgICA6IHBzZXVkb0NsYXNzVmFsdWUgPyB1bmVzY2FwZShwc2V1ZG9DbGFzc1ZhbHVlKSA6IG51bGwsXHJcbiAgICAgICAgICAgIGVzY2FwZWRWYWx1ZSA6IHBzZXVkb0NsYXNzVmFsdWUgPyBlc2NhcGUocHNldWRvQ2xhc3NWYWx1ZSkgOiBudWxsXHJcbiAgICAgICAgfSlcclxuXHJcbiAgICB9IGVsc2UgaWYgKGF0dHJpYnV0ZUtleSl7XHJcblxyXG4gICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gYXR0cmlidXRlVmFsdWUgPyBlc2NhcGUoYXR0cmlidXRlVmFsdWUpIDogbnVsbFxyXG5cclxuICAgICAgICA7KGN1cnJlbnQuYXR0cmlidXRlcyB8fCAoY3VycmVudC5hdHRyaWJ1dGVzID0gW10pKS5wdXNoKHtcclxuICAgICAgICAgICAgb3BlcmF0b3IgICAgIDogYXR0cmlidXRlT3BlcmF0b3IsXHJcbiAgICAgICAgICAgIG5hbWUgICAgICAgICA6IHVuZXNjYXBlKGF0dHJpYnV0ZUtleSksXHJcbiAgICAgICAgICAgIGVzY2FwZWROYW1lICA6IGVzY2FwZShhdHRyaWJ1dGVLZXkpLFxyXG4gICAgICAgICAgICB2YWx1ZSAgICAgICAgOiBhdHRyaWJ1dGVWYWx1ZSA/IHVuZXNjYXBlKGF0dHJpYnV0ZVZhbHVlKSA6IG51bGwsXHJcbiAgICAgICAgICAgIGVzY2FwZWRWYWx1ZSA6IGF0dHJpYnV0ZVZhbHVlID8gZXNjYXBlKGF0dHJpYnV0ZVZhbHVlKSA6IG51bGxcclxuICAgICAgICB9KVxyXG5cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gJydcclxuXHJcbn1cclxuXHJcbi8vIEV4cHJlc3Npb25zXHJcblxyXG52YXIgRXhwcmVzc2lvbnMgPSBmdW5jdGlvbiBFeHByZXNzaW9ucyhleHByZXNzaW9uKXtcclxuICAgIHRoaXMubGVuZ3RoID0gMFxyXG5cclxuICAgIHZhciBzZWxmID0gdGhpc1xyXG5cclxuICAgIHZhciBvcmlnaW5hbCA9IGV4cHJlc3Npb24sIHJlcGxhY2VkXHJcblxyXG4gICAgd2hpbGUgKGV4cHJlc3Npb24pe1xyXG4gICAgICAgIHJlcGxhY2VkID0gZXhwcmVzc2lvbi5yZXBsYWNlKHNsaWNrUmUsIGZ1bmN0aW9uKCl7XHJcbiAgICAgICAgICAgIHJldHVybiByZXBsYWNlci5hcHBseShzZWxmLCBhcmd1bWVudHMpXHJcbiAgICAgICAgfSlcclxuICAgICAgICBpZiAocmVwbGFjZWQgPT09IGV4cHJlc3Npb24pIHRocm93IG5ldyBFcnJvcihvcmlnaW5hbCArICcgaXMgYW4gaW52YWxpZCBleHByZXNzaW9uJylcclxuICAgICAgICBleHByZXNzaW9uID0gcmVwbGFjZWRcclxuICAgIH1cclxufVxyXG5cclxuRXhwcmVzc2lvbnMucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKXtcclxuICAgIGlmICghdGhpcy5yYXcpe1xyXG4gICAgICAgIHZhciBleHByZXNzaW9ucyA9IFtdXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIGV4cHJlc3Npb247IGV4cHJlc3Npb24gPSB0aGlzW2krK107KSBleHByZXNzaW9ucy5wdXNoKGV4cHJlc3Npb24pXHJcbiAgICAgICAgdGhpcy5yYXcgPSBleHByZXNzaW9ucy5qb2luKFwiLCBcIilcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5yYXdcclxufVxyXG5cclxudmFyIGNhY2hlID0ge31cclxuXHJcbnZhciBwYXJzZSA9IGZ1bmN0aW9uKGV4cHJlc3Npb24pe1xyXG4gICAgaWYgKGV4cHJlc3Npb24gPT0gbnVsbCkgcmV0dXJuIG51bGxcclxuICAgIGV4cHJlc3Npb24gPSAoJycgKyBleHByZXNzaW9uKS5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCAnJylcclxuICAgIHJldHVybiBjYWNoZVtleHByZXNzaW9uXSB8fCAoY2FjaGVbZXhwcmVzc2lvbl0gPSBuZXcgRXhwcmVzc2lvbnMoZXhwcmVzc2lvbikpXHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gcGFyc2VcclxuIiwgIid1c2Ugc3RyaWN0JztcblxudmFyIHBhcnNlciA9IHJlcXVpcmUoJ3NsaWNrL3BhcnNlcicpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBTZWxlY3RvcjtcblxuLyoqXG4gKiBDU1Mgc2VsZWN0b3IgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHNlbGVjdG9yIHRleHRcbiAqIEBwYXJhbSB7QXJyYXl9IG9wdGlvbmFsbHksIHByZWNhbGN1bGF0ZWQgc3BlY2lmaWNpdHlcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gU2VsZWN0b3IodGV4dCwgc3R5bGVBdHRyaWJ1dGUpIHtcbiAgdGhpcy50ZXh0ID0gdGV4dDtcbiAgdGhpcy5zcGVjID0gdW5kZWZpbmVkO1xuICB0aGlzLnN0eWxlQXR0cmlidXRlID0gc3R5bGVBdHRyaWJ1dGUgfHwgZmFsc2U7XG59XG5cbi8qKlxuICogR2V0IHBhcnNlZCBzZWxlY3Rvci5cbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblNlbGVjdG9yLnByb3RvdHlwZS5wYXJzZWQgPSBmdW5jdGlvbigpIHtcbiAgaWYgKCF0aGlzLnRva2VucykgeyB0aGlzLnRva2VucyA9IHBhcnNlKHRoaXMudGV4dCk7IH1cbiAgcmV0dXJuIHRoaXMudG9rZW5zO1xufTtcblxuLyoqXG4gKiBMYXp5IHNwZWNpZmljaXR5IGdldHRlclxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuU2VsZWN0b3IucHJvdG90eXBlLnNwZWNpZmljaXR5ID0gZnVuY3Rpb24oKSB7XG4gIHZhciBzdHlsZUF0dHJpYnV0ZSA9IHRoaXMuc3R5bGVBdHRyaWJ1dGU7XG4gIGlmICghdGhpcy5zcGVjKSB7IHRoaXMuc3BlYyA9IHNwZWNpZmljaXR5KHRoaXMudGV4dCwgdGhpcy5wYXJzZWQoKSk7IH1cbiAgcmV0dXJuIHRoaXMuc3BlYztcblxuICBmdW5jdGlvbiBzcGVjaWZpY2l0eSh0ZXh0LCBwYXJzZWQpIHtcbiAgICB2YXIgZXhwcmVzc2lvbnMgPSBwYXJzZWQgfHwgcGFyc2UodGV4dCk7XG4gICAgdmFyIHNwZWMgPSBbc3R5bGVBdHRyaWJ1dGUgPyAxIDogMCwgMCwgMCwgMF07XG4gICAgdmFyIG5vdHMgPSBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwcmVzc2lvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBleHByZXNzaW9uID0gZXhwcmVzc2lvbnNbaV07XG4gICAgICB2YXIgcHNldWRvcyA9IGV4cHJlc3Npb24ucHNldWRvcztcblxuICAgICAgLy8gaWQgYXdhcmRzIGEgcG9pbnQgaW4gdGhlIHNlY29uZCBjb2x1bW5cbiAgICAgIGlmIChleHByZXNzaW9uLmlkKSB7IHNwZWNbMV0rKzsgfVxuXG4gICAgICAvLyBjbGFzc2VzIGFuZCBhdHRyaWJ1dGVzIGF3YXJkIGEgcG9pbnQgZWFjaCBpbiB0aGUgdGhpcmQgY29sdW1uXG4gICAgICBpZiAoZXhwcmVzc2lvbi5hdHRyaWJ1dGVzKSB7IHNwZWNbMl0gKz0gZXhwcmVzc2lvbi5hdHRyaWJ1dGVzLmxlbmd0aDsgfVxuICAgICAgaWYgKGV4cHJlc3Npb24uY2xhc3NMaXN0KSB7IHNwZWNbMl0gKz0gZXhwcmVzc2lvbi5jbGFzc0xpc3QubGVuZ3RoOyB9XG5cbiAgICAgIC8vIHRhZyBhd2FyZHMgYSBwb2ludCBpbiB0aGUgZm91cnRoIGNvbHVtblxuICAgICAgaWYgKGV4cHJlc3Npb24udGFnICYmIGV4cHJlc3Npb24udGFnICE9PSAnKicpIHsgc3BlY1szXSsrOyB9XG5cbiAgICAgIC8vIHBzZXVkb3MgYXdhcmQgYSBwb2ludCBlYWNoIGluIHRoZSBmb3VydGggY29sdW1uXG4gICAgICBpZiAocHNldWRvcykge1xuICAgICAgICBzcGVjWzNdICs9IHBzZXVkb3MubGVuZ3RoO1xuXG4gICAgICAgIGZvciAodmFyIHAgPSAwOyBwIDwgcHNldWRvcy5sZW5ndGg7IHArKykge1xuICAgICAgICAgIGlmIChwc2V1ZG9zW3BdLm5hbWUgPT09ICdub3QnKSB7XG4gICAgICAgICAgICBub3RzLnB1c2gocHNldWRvc1twXS52YWx1ZSk7XG4gICAgICAgICAgICBzcGVjWzNdLS07XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgaWkgPSBub3RzLmxlbmd0aDsgaWktLTspIHtcbiAgICAgIHZhciBub3QgPSBzcGVjaWZpY2l0eShub3RzW2lpXSk7XG4gICAgICBmb3IgKHZhciBqaiA9IDQ7IGpqLS07KSB7IHNwZWNbampdICs9IG5vdFtqal07IH1cbiAgICB9XG5cbiAgICByZXR1cm4gc3BlYztcbiAgfVxufTtcblxuLyoqXG4gKiBQYXJzZXMgYSBzZWxlY3RvciBhbmQgcmV0dXJucyB0aGUgdG9rZW5zLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBzZWxlY3RvclxuICogQGFwaSBwcml2YXRlLlxuICovXG5cbmZ1bmN0aW9uIHBhcnNlKHRleHQpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VyKHRleHQpWzBdO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMgPSBQcm9wZXJ0eTtcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG5cbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxuLyoqXG4gKiBDU1MgcHJvcGVydHkgY29uc3RydWN0b3IuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IHByb3BlcnR5XG4gKiBAcGFyYW0ge1N0cmluZ30gdmFsdWVcbiAqIEBwYXJhbSB7U2VsZWN0b3J9IHNlbGVjdG9yIHRoZSBwcm9wZXJ0eSBvcmlnaW5hdGVzIGZyb21cbiAqIEBwYXJhbSB7SW50ZWdlcn0gcHJpb3JpdHkgMCBmb3Igbm9ybWFsIHByb3BlcnRpZXMsIDIgZm9yICFpbXBvcnRhbnQgcHJvcGVydGllcy5cbiAqIEBwYXJhbSB7QXJyYXl9IGFkZGl0aW9uYWwgYXJyYXkgb2YgaW50ZWdlcnMgcmVwcmVzZW50aW5nIG1vcmUgZGV0YWlsZWQgcHJpb3JpdGllcyAoc29ydGluZylcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZnVuY3Rpb24gUHJvcGVydHkocHJvcCwgdmFsdWUsIHNlbGVjdG9yLCBwcmlvcml0eSwgYWRkaXRpb25hbFByaW9yaXR5KSB7XG4gIHRoaXMucHJvcCA9IHByb3A7XG4gIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICB0aGlzLnByaW9yaXR5ID0gcHJpb3JpdHkgfHwgMDtcbiAgdGhpcy5hZGRpdGlvbmFsUHJpb3JpdHkgPSBhZGRpdGlvbmFsUHJpb3JpdHkgfHwgW107XG59XG5cbi8qKlxuICogQ29tcGFyZXMgd2l0aCBhbm90aGVyIFByb3BlcnR5IGJhc2VkIG9uIFNlbGVjdG9yI3NwZWNpZmljaXR5LlxuICpcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuUHJvcGVydHkucHJvdG90eXBlLmNvbXBhcmVGdW5jID0gZnVuY3Rpb24ocHJvcGVydHkpIHtcbiAgdmFyIGEgPSBbXTtcbiAgYS5wdXNoLmFwcGx5KGEsIHRoaXMuc2VsZWN0b3Iuc3BlY2lmaWNpdHkoKSk7XG4gIGEucHVzaC5hcHBseShhLCB0aGlzLmFkZGl0aW9uYWxQcmlvcml0eSk7XG4gIGFbMF0gKz0gdGhpcy5wcmlvcml0eTtcbiAgdmFyIGIgPSBbXTtcbiAgYi5wdXNoLmFwcGx5KGIsIHByb3BlcnR5LnNlbGVjdG9yLnNwZWNpZmljaXR5KCkpO1xuICBiLnB1c2guYXBwbHkoYiwgcHJvcGVydHkuYWRkaXRpb25hbFByaW9yaXR5KTtcbiAgYlswXSArPSBwcm9wZXJ0eS5wcmlvcml0eTtcbiAgcmV0dXJuIHV0aWxzLmNvbXBhcmVGdW5jKGEsIGIpO1xufTtcblxuUHJvcGVydHkucHJvdG90eXBlLmNvbXBhcmUgPSBmdW5jdGlvbihwcm9wZXJ0eSkge1xuICB2YXIgd2lubmVyID0gdGhpcy5jb21wYXJlRnVuYyhwcm9wZXJ0eSk7XG4gIGlmICh3aW5uZXIgPT09IDEpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICByZXR1cm4gcHJvcGVydHk7XG59O1xuXG5cbi8qKlxuICogUmV0dXJucyBDU1MgcHJvcGVydHlcbiAqXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cblByb3BlcnR5LnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gdGhpcy5wcm9wICsgJzogJyArIHRoaXMudmFsdWUucmVwbGFjZSgvWydcIl0rL2csICcnKSArICc7Jztcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1vZHVsZSBkZXBlbmRlbmNpZXMuXG4gKi9cblxudmFyIG1lbnNjaCA9IHJlcXVpcmUoJ21lbnNjaCcpO1xudmFyIFNlbGVjdG9yID0gcmVxdWlyZSgnLi9zZWxlY3RvcicpO1xudmFyIFByb3BlcnR5ID0gcmVxdWlyZSgnLi9wcm9wZXJ0eScpO1xuXG5leHBvcnRzLlNlbGVjdG9yID0gU2VsZWN0b3I7XG5leHBvcnRzLlByb3BlcnR5ID0gUHJvcGVydHk7XG5cbi8qKlxuICogUmV0dXJucyBhbiBhcnJheSBvZiB0aGUgc2VsZWN0b3JzLlxuICpcbiAqIEBsaWNlbnNlIFNpenpsZSBDU1MgU2VsZWN0b3IgRW5naW5lIC0gTUlUXG4gKiBAcGFyYW0ge1N0cmluZ30gc2VsZWN0b3JUZXh0IGZyb20gbWVuc2NoXG4gKiBAYXBpIHB1YmxpY1xuICovXG5cbmV4cG9ydHMuZXh0cmFjdCA9IGZ1bmN0aW9uIGV4dHJhY3Qoc2VsZWN0b3JUZXh0KSB7XG4gIHZhciBhdHRyID0gMDtcbiAgdmFyIHNlbHMgPSBbXTtcbiAgdmFyIHNlbCA9ICcnO1xuXG4gIGZvciAodmFyIGkgPSAwLCBsID0gc2VsZWN0b3JUZXh0Lmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHZhciBjID0gc2VsZWN0b3JUZXh0LmNoYXJBdChpKTtcblxuICAgIGlmIChhdHRyKSB7XG4gICAgICBpZiAoJ10nID09PSBjIHx8ICcpJyA9PT0gYykgeyBhdHRyLS07IH1cbiAgICAgIHNlbCArPSBjO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoJywnID09PSBjKSB7XG4gICAgICAgIHNlbHMucHVzaChzZWwpO1xuICAgICAgICBzZWwgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICgnWycgPT09IGMgfHwgJygnID09PSBjKSB7IGF0dHIrKzsgfVxuICAgICAgICBpZiAoc2VsLmxlbmd0aCB8fCAoYyAhPT0gJywnICYmIGMgIT09ICdcXG4nICYmIGMgIT09ICcgJykpIHsgc2VsICs9IGM7IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc2VsLmxlbmd0aCkge1xuICAgIHNlbHMucHVzaChzZWwpO1xuICB9XG4gIHJldHVybiBzZWxzO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIGEgcGFyc2UgdHJlZSBmb3IgYSBDU1Mgc291cmNlLlxuICogSWYgaXQgZW5jb3VudGVycyBtdWx0aXBsZSBzZWxlY3RvcnMgc2VwYXJhdGVkIGJ5IGEgY29tbWEsIGl0IHNwbGl0cyB0aGVcbiAqIHRyZWUuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IGNzcyBzb3VyY2VcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZXhwb3J0cy5wYXJzZUNTUyA9IGZ1bmN0aW9uKGNzcykge1xuICB2YXIgcGFyc2VkID0gbWVuc2NoLnBhcnNlKGNzcywge3Bvc2l0aW9uOiB0cnVlLCBjb21tZW50czogdHJ1ZX0pO1xuICB2YXIgcnVsZXMgPSB0eXBlb2YgcGFyc2VkLnN0eWxlc2hlZXQgIT0gJ3VuZGVmaW5lZCcgJiYgcGFyc2VkLnN0eWxlc2hlZXQucnVsZXMgPyBwYXJzZWQuc3R5bGVzaGVldC5ydWxlcyA6IFtdO1xuICB2YXIgcmV0ID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDAsIGwgPSBydWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAocnVsZXNbaV0udHlwZSA9PSAncnVsZScpIHtcbiAgICAgIHZhciBydWxlID0gcnVsZXNbaV07XG4gICAgICB2YXIgc2VsZWN0b3JzID0gcnVsZS5zZWxlY3RvcnM7XG5cbiAgICAgIGZvciAodmFyIGlpID0gMCwgbGwgPSBzZWxlY3RvcnMubGVuZ3RoOyBpaSA8IGxsOyBpaSsrKSB7XG4gICAgICAgIHJldC5wdXNoKFtzZWxlY3RvcnNbaWldLCBydWxlLmRlY2xhcmF0aW9uc10pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG4vKipcbiAqIFJldHVybnMgcHJlc2VydmVkIHRleHQgZm9yIGEgQ1NTIHNvdXJjZS5cbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gY3NzIHNvdXJjZVxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnNcbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZXhwb3J0cy5nZXRQcmVzZXJ2ZWRUZXh0ID0gZnVuY3Rpb24oY3NzLCBvcHRpb25zLCBpZ25vcmVkUHNldWRvcykge1xuICB2YXIgcGFyc2VkID0gbWVuc2NoLnBhcnNlKGNzcywge3Bvc2l0aW9uOiB0cnVlLCBjb21tZW50czogdHJ1ZX0pO1xuICB2YXIgcnVsZXMgPSB0eXBlb2YgcGFyc2VkLnN0eWxlc2hlZXQgIT0gJ3VuZGVmaW5lZCcgJiYgcGFyc2VkLnN0eWxlc2hlZXQucnVsZXMgPyBwYXJzZWQuc3R5bGVzaGVldC5ydWxlcyA6IFtdO1xuICB2YXIgcHJlc2VydmVkID0gW107XG4gIHZhciBsYXN0U3RhcnQgPSBudWxsO1xuXG4gIGZvciAodmFyIGkgPSBydWxlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmICgob3B0aW9ucy5mb250RmFjZXMgJiYgcnVsZXNbaV0udHlwZSA9PT0gJ2ZvbnQtZmFjZScpIHx8XG4gICAgICAgIChvcHRpb25zLm1lZGlhUXVlcmllcyAmJiBydWxlc1tpXS50eXBlID09PSAnbWVkaWEnKSB8fFxuICAgICAgICAob3B0aW9ucy5rZXlGcmFtZXMgJiYgcnVsZXNbaV0udHlwZSA9PT0gJ2tleWZyYW1lcycpIHx8XG4gICAgICAgIChvcHRpb25zLnBzZXVkb3MgJiYgcnVsZXNbaV0uc2VsZWN0b3JzICYmIHRoaXMubWF0Y2hlc1BzZXVkbyhydWxlc1tpXS5zZWxlY3RvcnNbMF0sIGlnbm9yZWRQc2V1ZG9zKSkpIHtcbiAgICAgIHByZXNlcnZlZC51bnNoaWZ0KFxuICAgICAgICBtZW5zY2guc3RyaW5naWZ5KFxuICAgICAgICAgIHsgc3R5bGVzaGVldDogeyBydWxlczogWyBydWxlc1tpXSBdIH19LFxuICAgICAgICAgIHsgY29tbWVudHM6IGZhbHNlLCBpbmRlbnRhdGlvbjogJyAgJyB9XG4gICAgICAgIClcbiAgICAgICk7XG4gICAgfVxuICAgIGxhc3RTdGFydCA9IHJ1bGVzW2ldLnBvc2l0aW9uLnN0YXJ0O1xuICB9XG5cbiAgaWYgKHByZXNlcnZlZC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuICdcXG4nICsgcHJlc2VydmVkLmpvaW4oJ1xcbicpICsgJ1xcbic7XG59O1xuXG5leHBvcnRzLm5vcm1hbGl6ZUxpbmVFbmRpbmdzID0gZnVuY3Rpb24odGV4dCkge1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKC9cXHJcXG4vZywgJ1xcbicpLnJlcGxhY2UoL1xcbi9nLCAnXFxyXFxuJyk7XG59O1xuXG5leHBvcnRzLm1hdGNoZXNQc2V1ZG8gPSBmdW5jdGlvbihuZWVkbGUsIGhheXN0YWNrKSB7XG4gIHJldHVybiBoYXlzdGFjay5maW5kKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuIG5lZWRsZS5pbmRleE9mKGVsZW1lbnQpID4gLTE7XG4gIH0pXG59XG5cbi8qKlxuICogQ29tcGFyZXMgdHdvIHNwZWNpZmljaXR5IHZlY3RvcnMsIHJldHVybmluZyB0aGUgd2lubmluZyBvbmUuXG4gKlxuICogQHBhcmFtIHtBcnJheX0gdmVjdG9yIGFcbiAqIEBwYXJhbSB7QXJyYXl9IHZlY3RvciBiXG4gKiBAcmV0dXJuIHtBcnJheX1cbiAqIEBhcGkgcHVibGljXG4gKi9cblxuZXhwb3J0cy5jb21wYXJlRnVuYyA9IGZ1bmN0aW9uKGEsIGIpIHtcbiAgdmFyIG1pbiA9IE1hdGgubWluKGEubGVuZ3RoLCBiLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbWluOyBpKyspIHtcbiAgICBpZiAoYVtpXSA9PT0gYltpXSkgeyBjb250aW51ZTsgfVxuICAgIGlmIChhW2ldID4gYltpXSkgeyByZXR1cm4gMTsgfVxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIHJldHVybiBhLmxlbmd0aCAtIGIubGVuZ3RoO1xufTtcblxuZXhwb3J0cy5jb21wYXJlID0gZnVuY3Rpb24oYSwgYikge1xuICByZXR1cm4gZXhwb3J0cy5jb21wYXJlRnVuYyhhLCBiKSA9PSAxID8gYSA6IGI7XG59O1xuXG5leHBvcnRzLmdldERlZmF1bHRPcHRpb25zID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICB2YXIgcmVzdWx0ID0gT2JqZWN0LmFzc2lnbih7XG4gICAgZXh0cmFDc3M6ICcnLFxuICAgIGluc2VydFByZXNlcnZlZEV4dHJhQ3NzOiB0cnVlLFxuICAgIGFwcGx5U3R5bGVUYWdzOiB0cnVlLFxuICAgIHJlbW92ZVN0eWxlVGFnczogdHJ1ZSxcbiAgICBwcmVzZXJ2ZU1lZGlhUXVlcmllczogdHJ1ZSxcbiAgICBwcmVzZXJ2ZUZvbnRGYWNlczogdHJ1ZSxcbiAgICBwcmVzZXJ2ZUtleUZyYW1lczogdHJ1ZSxcbiAgICBwcmVzZXJ2ZVBzZXVkb3M6IHRydWUsXG4gICAgYXBwbHlXaWR0aEF0dHJpYnV0ZXM6IHRydWUsXG4gICAgYXBwbHlIZWlnaHRBdHRyaWJ1dGVzOiB0cnVlLFxuICAgIGFwcGx5QXR0cmlidXRlc1RhYmxlRWxlbWVudHM6IHRydWUsXG4gICAgcmVzb2x2ZUNTU1ZhcmlhYmxlczogdHJ1ZSxcbiAgICB1cmw6ICcnXG4gIH0sIG9wdGlvbnMpO1xuXG4gIHJlc3VsdC53ZWJSZXNvdXJjZXMgPSByZXN1bHQud2ViUmVzb3VyY2VzIHx8IHt9O1xuXG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwgIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgZGVwZW5kZW5jaWVzLlxuICovXG52YXIgY2hlZXJpbyA9IHJlcXVpcmUoJ2NoZWVyaW8nKTtcbnZhciB1dGlscyA9IHJlcXVpcmUoJy4vdXRpbHMnKTtcblxudmFyIGNoZWVyaW9Mb2FkID0gZnVuY3Rpb24oaHRtbCwgb3B0aW9ucywgZW5jb2RlRW50aXRpZXMpIHtcbiAgY29uc3QgeyB4bWxNb2RlLCAuLi5yZXN0IH0gPSBvcHRpb25zO1xuICBvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7IHhtbDogeyBkZWNvZGVFbnRpdGllczogZmFsc2UsIHhtbE1vZGUgfSB9LCByZXN0KTtcbiAgaHRtbCA9IGVuY29kZUVudGl0aWVzKGh0bWwpO1xuICByZXR1cm4gY2hlZXJpby5sb2FkKGh0bWwsIG9wdGlvbnMpO1xufTtcblxudmFyIGNyZWF0ZUVudGl0eUNvbnZlcnRlcnMgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBjb2RlQmxvY2tMb29rdXAgPSBbXTtcblxuICB2YXIgZW5jb2RlQ29kZUJsb2NrcyA9IGZ1bmN0aW9uKGh0bWwpIHtcbiAgICB2YXIgYmxvY2tzID0gbW9kdWxlLmV4cG9ydHMuY29kZUJsb2NrcztcbiAgICBPYmplY3Qua2V5cyhibG9ja3MpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7XG4gICAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKGJsb2Nrc1trZXldLnN0YXJ0ICsgJyhbXFxcXFNcXFxcc10qPyknICsgYmxvY2tzW2tleV0uZW5kLCAnZycpO1xuICAgICAgaHRtbCA9IGh0bWwucmVwbGFjZShyZSwgZnVuY3Rpb24obWF0Y2gsIHN1Yk1hdGNoKSB7XG4gICAgICAgIGNvZGVCbG9ja0xvb2t1cC5wdXNoKG1hdGNoKTtcbiAgICAgICAgcmV0dXJuICdKVUlDRV9DT0RFX0JMT0NLXycgKyAoY29kZUJsb2NrTG9va3VwLmxlbmd0aCAtIDEpICsgJ18nO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGh0bWw7XG4gIH07XG5cbiAgdmFyIGRlY29kZUNvZGVCbG9ja3MgPSBmdW5jdGlvbihodG1sKSB7XG4gICAgZm9yKHZhciBpbmRleCA9IDA7IGluZGV4IDwgY29kZUJsb2NrTG9va3VwLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgnSlVJQ0VfQ09ERV9CTE9DS18nICsgaW5kZXggKyAnXyg9XCJcIik/JywgJ2dpJyk7XG4gICAgICBodG1sID0gaHRtbC5yZXBsYWNlKHJlLCBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNvZGVCbG9ja0xvb2t1cFtpbmRleF07XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGh0bWw7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICBlbmNvZGVFbnRpdGllczogZW5jb2RlQ29kZUJsb2NrcyxcbiAgICBkZWNvZGVFbnRpdGllczogZGVjb2RlQ29kZUJsb2NrcyxcbiAgfTtcbn07XG5cbi8qKlxuICogUGFyc2VzIHRoZSBpbnB1dCwgY2FsbHMgdGhlIGNhbGxiYWNrIG9uIHRoZSBwYXJzZWQgRE9NLCBhbmQgZ2VuZXJhdGVzIHRoZSBvdXRwdXRcbiAqXG4gKiBAcGFyYW0ge1N0cmluZ30gaHRtbCBpbnB1dCBodG1sIHRvIGJlIHByb2Nlc3NlZFxuICogQHBhcmFtIHtPYmplY3R9IG9wdGlvbnMgZm9yIHRoZSBwYXJzZXJcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gdGhlIERPTVxuICogQHBhcmFtIHtBcnJheX0gY2FsbGJhY2tFeHRyYUFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGNhbGxiYWNrXG4gKiBAcmV0dXJuIHtTdHJpbmd9IHJlc3VsdGluZyBodG1sXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaHRtbCwgb3B0aW9ucywgY2FsbGJhY2ssIGNhbGxiYWNrRXh0cmFBcmd1bWVudHMpIHtcbiAgdmFyIGVudGl0eUNvbnZlcnRlcnMgPSBjcmVhdGVFbnRpdHlDb252ZXJ0ZXJzKCk7XG5cbiAgdmFyICQgPSBjaGVlcmlvTG9hZChodG1sLCBvcHRpb25zLCBlbnRpdHlDb252ZXJ0ZXJzLmVuY29kZUVudGl0aWVzKTtcbiAgdmFyIGFyZ3MgPSBbICQgXTtcbiAgYXJncy5wdXNoLmFwcGx5KGFyZ3MsIGNhbGxiYWNrRXh0cmFBcmd1bWVudHMpO1xuICB2YXIgZG9jID0gY2FsbGJhY2suYXBwbHkodW5kZWZpbmVkLCBhcmdzKSB8fCAkO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMueG1sTW9kZSkge1xuICAgIHJldHVybiBlbnRpdHlDb252ZXJ0ZXJzLmRlY29kZUVudGl0aWVzKGRvYy54bWwoKSk7XG4gIH1cbiAgcmV0dXJuIGVudGl0eUNvbnZlcnRlcnMuZGVjb2RlRW50aXRpZXMoZG9jLmh0bWwoKSk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cy5jb2RlQmxvY2tzID0ge1xuICBFSlM6IHsgc3RhcnQ6ICc8JScsIGVuZDogJyU+JyB9LFxuICBIQlM6IHsgc3RhcnQ6ICd7eycsIGVuZDogJ319JyB9XG59O1xuIiwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRlY2ltYWwgbnVtYmVyIHRvIHJvbWFuIG51bWVyYWwuXG4gKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy85MDgzMDM3L2NvbnZlcnQtYS1udW1iZXItaW50by1hLXJvbWFuLW51bWVyYWwtaW4tamF2YXNjcmlwdFxuICpcbiAqIEBwYXJhbSB7TnVtYmVyfSBudW1iZXJcbiAqIEBhcGkgcHJpdmF0ZS5cbiAqL1xuZXhwb3J0cy5yb21hbml6ZSA9IGZ1bmN0aW9uKG51bSkge1xuICAgIGlmIChpc05hTihudW0pKVxuICAgICAgICByZXR1cm4gTmFOO1xuICAgIHZhciBkaWdpdHMgPSBTdHJpbmcoK251bSkuc3BsaXQoXCJcIiksXG4gICAgICAgIGtleSA9IFtcIlwiLFwiQ1wiLFwiQ0NcIixcIkNDQ1wiLFwiQ0RcIixcIkRcIixcIkRDXCIsXCJEQ0NcIixcIkRDQ0NcIixcIkNNXCIsXG4gICAgICAgICAgICAgICBcIlwiLFwiWFwiLFwiWFhcIixcIlhYWFwiLFwiWExcIixcIkxcIixcIkxYXCIsXCJMWFhcIixcIkxYWFhcIixcIlhDXCIsXG4gICAgICAgICAgICAgICBcIlwiLFwiSVwiLFwiSUlcIixcIklJSVwiLFwiSVZcIixcIlZcIixcIlZJXCIsXCJWSUlcIixcIlZJSUlcIixcIklYXCJdLFxuICAgICAgICByb21hbiA9IFwiXCIsXG4gICAgICAgIGkgPSAzO1xuICAgIHdoaWxlIChpLS0pXG4gICAgICAgIHJvbWFuID0gKGtleVsrZGlnaXRzLnBvcCgpICsgKGkgKiAxMCldIHx8IFwiXCIpICsgcm9tYW47XG4gICAgcmV0dXJuIEFycmF5KCtkaWdpdHMuam9pbihcIlwiKSArIDEpLmpvaW4oXCJNXCIpICsgcm9tYW47XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBkZWNpbWFsIG51bWJlciB0byBhbHBoYW51bWVyaWMgbnVtZXJhbC5cbiAqIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ1Nzg3NDU5L2NvbnZlcnQtbnVtYmVyLXRvLWFscGhhYmV0LXN0cmluZy1qYXZhc2NyaXB0XG4gKlxuICogQHBhcmFtIHtOdW1iZXJ9IG51bWJlclxuICogQGFwaSBwcml2YXRlLlxuICovXG5leHBvcnRzLmFscGhhbnVtZXJpYyA9IGZ1bmN0aW9uKG51bSkge1xuICAgIHZhciBzID0gJycsIHQ7XG5cbiAgICB3aGlsZSAobnVtID4gMCkge1xuICAgICAgdCA9IChudW0gLSAxKSAlIDI2O1xuICAgICAgcyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoNjUgKyB0KSArIHM7XG4gICAgICBudW0gPSAobnVtIC0gdCkvMjYgfCAwO1xuICAgIH1cbiAgICByZXR1cm4gcyB8fCB1bmRlZmluZWQ7XG59IiwgIid1c2Ugc3RyaWN0JztcblxuY29uc3QgdW5pcXVlU3RyaW5nID0gKHN0cmluZykgPT4ge1xuICBsZXQgc3RyID0gJyc7XG4gIGRve1xuICAgIHN0ciA9IChNYXRoLnJhbmRvbSgpICsgMSkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyKTtcblxuICB9d2hpbGUoc3RyaW5nLmluZGV4T2Yoc3RyKSAhPT0gLTEpO1xuXG4gIHJldHVybiBzdHI7XG59XG5cbi8qKlxuICogUmVwbGFjZSBjc3MgdmFyaWFibGVzIHdpdGggdGhlaXIgdmFsdWVcbiAqL1xuY29uc3QgcmVwbGFjZVZhcmlhYmxlcyA9IChlbCx2YWx1ZSkgPT4ge1xuXG4gIC8vIGZpbmQgbm9uLW5lc3RlZCBjc3MgZnVuY3Rpb24gY2FsbHNcbiAgLy8gZWc6IHJnYiguLi4pLCBkcm9wLXNoYWRvdyguLi4pXG5cdGxldCBmdW5jUmVnID0gLyhbYS16XFwtXSspXFxzKlxcKFxccyooW15cXChcXCldKj8pXFxzKig/OixcXHMqKFteXFwoXFwpXSo/KVxccyopP1xccypcXCkvaTtcbiAgbGV0IHJlcGxhY2VtZW50cyA9IFtdO1xuICBsZXQgbWF0Y2g7XG4gIGxldCB1bmlxID0gdW5pcXVlU3RyaW5nKHZhbHVlKTtcblxuXHR3aGlsZSggKG1hdGNoID0gZnVuY1JlZy5leGVjKHZhbHVlKSkgIT09IG51bGwgKXtcbiAgICBsZXQgaSA9IGAke3JlcGxhY2VtZW50cy5sZW5ndGh9YDtcblxuXG4gICAgLy8gYXR0ZW1wdCB0byByZXNvbHZlIHZhcmlhYmxlc1xuICAgIGlmKCBtYXRjaFsxXS50b0xvd2VyQ2FzZSgpID09ICd2YXInICl7XG4gICAgICBjb25zdCB2YXJWYWx1ZSA9IGZpbmRWYXJpYWJsZVZhbHVlKGVsLCBtYXRjaFsyXSk7XG4gICAgICBcbiAgICAgIC8vIGZvdW5kIHZhcmlhYmxlIHZhbHVlXG4gICAgICBpZiggdmFyVmFsdWUgKXtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG1hdGNoWzBdLHZhclZhbHVlKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIHVzZSBkZWZhdWx0IHZhbHVlXG4gICAgICAvLyB2YXIoLS1uYW1lICwgZGVmYXVsdC12YWx1ZSlcbiAgICAgIGlmKCBtYXRjaFszXSApe1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UobWF0Y2hbMF0sbWF0Y2hbM10pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgbGV0IHBsYWNlaG9sZGVyID0gYCR7dW5pcX0ke2kucGFkU3RhcnQoNSwnLScpfWA7XG4gICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKG1hdGNoWzBdLHBsYWNlaG9sZGVyKTtcbiAgICByZXBsYWNlbWVudHMucHVzaCh7cGxhY2Vob2xkZXIscmVwbGFjZTptYXRjaFswXX0pO1xuICB9XG5cbiAgZm9yKCB2YXIgaSA9IHJlcGxhY2VtZW50cy5sZW5ndGgtMTsgaSA+PTA7IGktLSl7XG4gICAgY29uc3QgcmVwbGFjZW1lbnQgPSByZXBsYWNlbWVudHNbaV07XG5cdFx0dmFsdWUgPSB2YWx1ZS5yZXBsYWNlKHJlcGxhY2VtZW50LnBsYWNlaG9sZGVyLHJlcGxhY2VtZW50LnJlcGxhY2UpO1xuICB9XG4gIFxuICByZXR1cm4gdmFsdWU7XG59XG5cbmNvbnN0IGZpbmRWYXJpYWJsZVZhbHVlID0gKGVsLCB2YXJpYWJsZSkgPT4ge1xuICB3aGlsZSAoZWwpIHtcbiAgICBpZiAoZWwuc3R5bGVQcm9wcyAmJiB2YXJpYWJsZSBpbiBlbC5zdHlsZVByb3BzKSB7XG4gICAgICByZXR1cm4gZWwuc3R5bGVQcm9wc1t2YXJpYWJsZV0udmFsdWU7XG4gICAgfVxuXG4gICAgdmFyIGVsID0gZWwucHNldWRvRWxlbWVudFBhcmVudCB8fCBlbC5wYXJlbnQ7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7IHJlcGxhY2VWYXJpYWJsZXMsIGZpbmRWYXJpYWJsZVZhbHVlIH07IiwgIid1c2Ugc3RyaWN0JztcblxudmFyIHsgZGVjb2RlIH0gPSByZXF1aXJlKCdlbnRpdGllcycpO1xuXG52YXIgdXRpbHMgPSByZXF1aXJlKCcuL3V0aWxzJyk7XG52YXIgbnVtYmVycyA9IHJlcXVpcmUoJy4vbnVtYmVycycpO1xudmFyIHZhcmlhYmxlcyA9IHJlcXVpcmUoJy4vdmFyaWFibGVzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWFrZUp1aWNlQ2xpZW50KGp1aWNlQ2xpZW50KSB7XG5cbmp1aWNlQ2xpZW50Lmlnbm9yZWRQc2V1ZG9zID0gWydob3ZlcicsICdhY3RpdmUnLCAnZm9jdXMnLCAndmlzaXRlZCcsICdsaW5rJ107XG5qdWljZUNsaWVudC53aWR0aEVsZW1lbnRzID0gWydUQUJMRScsICdURCcsICdUSCcsICdJTUcnXTtcbmp1aWNlQ2xpZW50LmhlaWdodEVsZW1lbnRzID0gWydUQUJMRScsICdURCcsICdUSCcsICdJTUcnXTtcbmp1aWNlQ2xpZW50LnRhYmxlRWxlbWVudHMgPSBbJ1RBQkxFJywgJ1RIJywgJ1RSJywgJ1REJywgJ0NBUFRJT04nLCAnQ09MR1JPVVAnLCAnQ09MJywgJ1RIRUFEJywgJ1RCT0RZJywgJ1RGT09UJ107XG5qdWljZUNsaWVudC5ub25WaXN1YWxFbGVtZW50cyA9IFsgJ0hFQUQnLCAnVElUTEUnLCAnQkFTRScsICdMSU5LJywgJ1NUWUxFJywgJ01FVEEnLCAnU0NSSVBUJywgJ05PU0NSSVBUJyBdO1xuanVpY2VDbGllbnQuc3R5bGVUb0F0dHJpYnV0ZSA9IHtcbiAgJ2JhY2tncm91bmQtY29sb3InOiAnYmdjb2xvcicsXG4gICdiYWNrZ3JvdW5kLWltYWdlJzogJ2JhY2tncm91bmQnLFxuICAndGV4dC1hbGlnbic6ICdhbGlnbicsXG4gICd2ZXJ0aWNhbC1hbGlnbic6ICd2YWxpZ24nXG59O1xuanVpY2VDbGllbnQuZXhjbHVkZWRQcm9wZXJ0aWVzID0gW107XG5cbmp1aWNlQ2xpZW50Lmp1aWNlRG9jdW1lbnQgPSBqdWljZURvY3VtZW50O1xuanVpY2VDbGllbnQuaW5saW5lRG9jdW1lbnQgPSBpbmxpbmVEb2N1bWVudDtcblxuZnVuY3Rpb24gaW5saW5lRG9jdW1lbnQoJCwgY3NzLCBvcHRpb25zKSB7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIHZhciBydWxlcyA9IHV0aWxzLnBhcnNlQ1NTKGNzcyk7XG4gIHZhciBlZGl0ZWRFbGVtZW50cyA9IFtdO1xuICB2YXIgc3R5bGVBdHRyaWJ1dGVOYW1lID0gJ3N0eWxlJztcbiAgdmFyIGNvdW50ZXJzID0ge307XG5cbiAgaWYgKG9wdGlvbnMuc3R5bGVBdHRyaWJ1dGVOYW1lKSB7XG4gICAgc3R5bGVBdHRyaWJ1dGVOYW1lID0gb3B0aW9ucy5zdHlsZUF0dHJpYnV0ZU5hbWU7XG4gIH1cblxuICBydWxlcy5mb3JFYWNoKGhhbmRsZVJ1bGUpO1xuICBlZGl0ZWRFbGVtZW50cy5mb3JFYWNoKHNldFN0eWxlQXR0cnMpO1xuXG4gIGlmIChvcHRpb25zLmlubGluZVBzZXVkb0VsZW1lbnRzKSB7XG4gICAgZWRpdGVkRWxlbWVudHMuZm9yRWFjaChpbmxpbmVQc2V1ZG9FbGVtZW50cyk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5hcHBseVdpZHRoQXR0cmlidXRlcykge1xuICAgIGVkaXRlZEVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWwpIHtcbiAgICAgIHNldERpbWVuc2lvbkF0dHJzKGVsLCAnd2lkdGgnKTtcbiAgICB9KTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmFwcGx5SGVpZ2h0QXR0cmlidXRlcykge1xuICAgIGVkaXRlZEVsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24oZWwpIHtcbiAgICAgIHNldERpbWVuc2lvbkF0dHJzKGVsLCAnaGVpZ2h0Jyk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAob3B0aW9ucy5hcHBseUF0dHJpYnV0ZXNUYWJsZUVsZW1lbnRzKSB7XG4gICAgZWRpdGVkRWxlbWVudHMuZm9yRWFjaChzZXRBdHRyaWJ1dGVzT25UYWJsZUVsZW1lbnRzKTtcbiAgfVxuXG4gIGlmIChvcHRpb25zLmluc2VydFByZXNlcnZlZEV4dHJhQ3NzICYmIG9wdGlvbnMuZXh0cmFDc3MpIHtcbiAgICB2YXIgcHJlc2VydmVkVGV4dCA9IHV0aWxzLmdldFByZXNlcnZlZFRleHQob3B0aW9ucy5leHRyYUNzcywge1xuICAgICAgbWVkaWFRdWVyaWVzOiBvcHRpb25zLnByZXNlcnZlTWVkaWFRdWVyaWVzLFxuICAgICAgZm9udEZhY2VzOiBvcHRpb25zLnByZXNlcnZlRm9udEZhY2VzLFxuICAgICAga2V5RnJhbWVzOiBvcHRpb25zLnByZXNlcnZlS2V5RnJhbWVzXG4gICAgfSk7XG4gICAgaWYgKHByZXNlcnZlZFRleHQpIHtcbiAgICAgIHZhciAkYXBwZW5kVG8gPSBudWxsO1xuICAgICAgaWYgKG9wdGlvbnMuaW5zZXJ0UHJlc2VydmVkRXh0cmFDc3MgIT09IHRydWUpIHtcbiAgICAgICAgJGFwcGVuZFRvID0gJChvcHRpb25zLmluc2VydFByZXNlcnZlZEV4dHJhQ3NzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICRhcHBlbmRUbyA9ICQoJ2hlYWQnKTtcbiAgICAgICAgaWYgKCEkYXBwZW5kVG8ubGVuZ3RoKSB7ICRhcHBlbmRUbyA9ICQoJ2JvZHknKTsgfVxuICAgICAgICBpZiAoISRhcHBlbmRUby5sZW5ndGgpIHsgJGFwcGVuZFRvID0gJC5yb290KCk7IH1cbiAgICAgIH1cblxuICAgICAgJGFwcGVuZFRvLmZpcnN0KCkuYXBwZW5kKCc8c3R5bGU+JyArIHByZXNlcnZlZFRleHQgKyAnPC9zdHlsZT4nKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVSdWxlKHJ1bGUpIHtcbiAgICB2YXIgc2VsID0gcnVsZVswXTtcbiAgICB2YXIgc3R5bGUgPSBydWxlWzFdO1xuICAgIHZhciBzZWxlY3RvciA9IG5ldyB1dGlscy5TZWxlY3RvcihzZWwpO1xuICAgIHZhciBwYXJzZWRTZWxlY3RvciA9IHNlbGVjdG9yLnBhcnNlZCgpO1xuXG4gICAgaWYgKCFwYXJzZWRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBwc2V1ZG9FbGVtZW50VHlwZSA9IGdldFBzZXVkb0VsZW1lbnRUeXBlKHBhcnNlZFNlbGVjdG9yKTtcblxuICAgIC8vIHNraXAgcnVsZSBpZiB0aGUgc2VsZWN0b3IgaGFzIGFueSBwc2V1ZG9zIHdoaWNoIGFyZSBpZ25vcmVkXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJzZWRTZWxlY3Rvci5sZW5ndGg7ICsraSkge1xuICAgICAgdmFyIHN1YlNlbCA9IHBhcnNlZFNlbGVjdG9yW2ldO1xuICAgICAgaWYgKHN1YlNlbC5wc2V1ZG9zKSB7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3ViU2VsLnBzZXVkb3MubGVuZ3RoOyArK2opIHtcbiAgICAgICAgICB2YXIgc3ViU2VsUHNldWRvID0gc3ViU2VsLnBzZXVkb3Nbal07XG4gICAgICAgICAgaWYgKGp1aWNlQ2xpZW50Lmlnbm9yZWRQc2V1ZG9zLmluZGV4T2Yoc3ViU2VsUHNldWRvLm5hbWUpID49IDApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHNldWRvRWxlbWVudFR5cGUpIHtcbiAgICAgIHZhciBsYXN0ID0gcGFyc2VkU2VsZWN0b3JbcGFyc2VkU2VsZWN0b3IubGVuZ3RoIC0gMV07XG4gICAgICB2YXIgcHNldWRvcyA9IGxhc3QucHNldWRvcztcbiAgICAgIGxhc3QucHNldWRvcyA9IGZpbHRlckVsZW1lbnRQc2V1ZG9zKGxhc3QucHNldWRvcyk7XG4gICAgICBzZWwgPSBwYXJzZWRTZWxlY3Rvci50b1N0cmluZygpO1xuICAgICAgbGFzdC5wc2V1ZG9zID0gcHNldWRvcztcbiAgICB9XG5cbiAgICB2YXIgZWxzO1xuICAgIHRyeSB7XG4gICAgICBlbHMgPSAkKHNlbCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBza2lwIGludmFsaWQgc2VsZWN0b3JcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbHMuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlbCA9IHRoaXM7XG5cbiAgICAgIGlmIChlbC5uYW1lICYmIGp1aWNlQ2xpZW50Lm5vblZpc3VhbEVsZW1lbnRzLmluZGV4T2YoZWwubmFtZS50b1VwcGVyQ2FzZSgpKSA+PSAwKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKCFlbC5jb3VudGVyUHJvcHMpIHtcbiAgICAgICAgZWwuY291bnRlclByb3BzID0gZWwucGFyZW50ICYmIGVsLnBhcmVudC5jb3VudGVyUHJvcHNcbiAgICAgICAgICA/IE9iamVjdC5jcmVhdGUoZWwucGFyZW50LmNvdW50ZXJQcm9wcylcbiAgICAgICAgICA6IHt9O1xuICAgICAgfVxuXG4gICAgICBpZiAocHNldWRvRWxlbWVudFR5cGUpIHtcbiAgICAgICAgdmFyIHBzZXVkb0VsUHJvcE5hbWUgPSAncHNldWRvJyArIHBzZXVkb0VsZW1lbnRUeXBlO1xuICAgICAgICB2YXIgcHNldWRvRWwgPSBlbFtwc2V1ZG9FbFByb3BOYW1lXTtcbiAgICAgICAgaWYgKCFwc2V1ZG9FbCkge1xuICAgICAgICAgIHBzZXVkb0VsID0gZWxbcHNldWRvRWxQcm9wTmFtZV0gPSAkKCc8c3BhbiAvPicpLmdldCgwKTtcbiAgICAgICAgICBwc2V1ZG9FbC5wc2V1ZG9FbGVtZW50VHlwZSA9IHBzZXVkb0VsZW1lbnRUeXBlO1xuICAgICAgICAgIHBzZXVkb0VsLnBzZXVkb0VsZW1lbnRQYXJlbnQgPSBlbDtcbiAgICAgICAgICBwc2V1ZG9FbC5jb3VudGVyUHJvcHMgPSBlbC5jb3VudGVyUHJvcHM7XG4gICAgICAgICAgZWxbcHNldWRvRWxQcm9wTmFtZV0gPSBwc2V1ZG9FbDtcbiAgICAgICAgfVxuICAgICAgICBlbCA9IHBzZXVkb0VsO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWVsLnN0eWxlUHJvcHMpIHtcbiAgICAgICAgZWwuc3R5bGVQcm9wcyA9IHt9O1xuXG4gICAgICAgIC8vIGlmIHRoZSBlbGVtZW50IGhhcyBpbmxpbmUgc3R5bGVzLCBmYWtlIHNlbGVjdG9yIHdpdGggdG9wbW9zdCBzcGVjaWZpY2l0eVxuICAgICAgICBpZiAoJChlbCkuYXR0cihzdHlsZUF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgICAgdmFyIHN0eWxlQXR0cmlidXRlVmFsdWUgPSAkKGVsKS5hdHRyKHN0eWxlQXR0cmlidXRlTmFtZSk7XG4gICAgICAgICAgdmFyIGNzc1N0eWxlQXR0cmlidXRlVmFsdWUgPSBvcHRpb25zLmRlY29kZVN0eWxlQXR0cmlidXRlc1xuICAgICAgICAgICAgPyBkZWNvZGUoc3R5bGVBdHRyaWJ1dGVWYWx1ZSlcbiAgICAgICAgICAgIDogc3R5bGVBdHRyaWJ1dGVWYWx1ZTtcbiAgICAgICAgICB2YXIgY3NzVGV4dCA9ICcqIHsgJyArIGNzc1N0eWxlQXR0cmlidXRlVmFsdWUgKyAnIH0gJztcbiAgICAgICAgICBhZGRQcm9wcyh1dGlscy5wYXJzZUNTUyhjc3NUZXh0KVswXVsxXSwgbmV3IHV0aWxzLlNlbGVjdG9yKCc8c3R5bGU+JywgdHJ1ZSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc3RvcmUgcmVmZXJlbmNlIHRvIGFuIGVsZW1lbnQgd2UgbmVlZCB0byBjb21waWxlIHN0eWxlPVwiXCIgYXR0ciBmb3JcbiAgICAgICAgZWRpdGVkRWxlbWVudHMucHVzaChlbCk7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHJlc2V0Q291bnRlcihlbCwgdmFsdWUpIHtcbiAgICAgICAgdmFyIHRva2VucyA9IHZhbHVlLnNwbGl0KC9cXHMrLyk7XG5cbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0b2tlbnMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICB2YXIgY291bnRlciA9IHRva2Vuc1tqXTtcbiAgICAgICAgICB2YXIgcmVzZXR2YWwgPSBwYXJzZUludCh0b2tlbnNbaisxXSwgMTApO1xuXG4gICAgICAgICAgaXNOYU4ocmVzZXR2YWwpXG4gICAgICAgICAgICA/IGVsLmNvdW50ZXJQcm9wc1tjb3VudGVyXSA9IGNvdW50ZXJzW2NvdW50ZXJdID0gMFxuICAgICAgICAgICAgOiBlbC5jb3VudGVyUHJvcHNbY291bnRlcl0gPSBjb3VudGVyc1t0b2tlbnNbaisrXV0gPSByZXNldHZhbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBpbmNyZW1lbnRDb3VudGVyKGVsLCB2YWx1ZSkge1xuICAgICAgICB2YXIgdG9rZW5zID0gdmFsdWUuc3BsaXQoL1xccysvKTtcblxuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRva2Vucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIHZhciBjb3VudGVyID0gdG9rZW5zW2pdO1xuXG4gICAgICAgICAgaWYgKGVsLmNvdW50ZXJQcm9wc1tjb3VudGVyXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB2YXIgaW5jcnZhbCA9IHBhcnNlSW50KHRva2Vuc1tqKzFdLCAxMCk7XG5cbiAgICAgICAgICBpc05hTihpbmNydmFsKVxuICAgICAgICAgICAgPyBlbC5jb3VudGVyUHJvcHNbY291bnRlcl0gPSBjb3VudGVyc1tjb3VudGVyXSArPSAxXG4gICAgICAgICAgICA6IGVsLmNvdW50ZXJQcm9wc1tjb3VudGVyXSA9IGNvdW50ZXJzW3Rva2Vuc1tqKytdXSArPSBpbmNydmFsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIGdvIHRocm91Z2ggdGhlIHByb3BlcnRpZXNcbiAgICAgIGZ1bmN0aW9uIGFkZFByb3BzKHN0eWxlLCBzZWxlY3Rvcikge1xuICAgICAgICBmb3IgKHZhciBpID0gMCwgbCA9IHN0eWxlLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGlmIChzdHlsZVtpXS50eXBlID09ICdwcm9wZXJ0eScpIHtcbiAgICAgICAgICAgIHZhciBuYW1lID0gc3R5bGVbaV0ubmFtZTtcbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlW2ldLnZhbHVlO1xuXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2NvdW50ZXItcmVzZXQnKSB7XG4gICAgICAgICAgICAgIHJlc2V0Q291bnRlcihlbCwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobmFtZSA9PT0gJ2NvdW50ZXItaW5jcmVtZW50Jykge1xuICAgICAgICAgICAgICBpbmNyZW1lbnRDb3VudGVyKGVsLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBpbXBvcnRhbnQgPSB2YWx1ZS5tYXRjaCgvIWltcG9ydGFudCQvKSAhPT0gbnVsbDtcbiAgICAgICAgICAgIGlmIChpbXBvcnRhbnQgJiYgIW9wdGlvbnMucHJlc2VydmVJbXBvcnRhbnQpIHZhbHVlID0gcmVtb3ZlSW1wb3J0YW50KHZhbHVlKTtcbiAgICAgICAgICAgIC8vIGFkZHMgbGluZSBudW1iZXIgYW5kIGNvbHVtbiBudW1iZXIgZm9yIHRoZSBwcm9wZXJ0aWVzIGFzIFwiYWRkaXRpb25hbFByaW9yaXR5XCIgdG8gdGhlXG4gICAgICAgICAgICAvLyBwcm9wZXJ0aWVzIGJlY2F1c2UgaW4gQ1NTIHRoZSBwb3NpdGlvbiBkaXJlY3RseSBhZmZlY3QgdGhlIHByaW9yaXR5LlxuICAgICAgICAgICAgdmFyIGFkZGl0aW9uYWxQcmlvcml0eSA9IFtzdHlsZVtpXS5wb3NpdGlvbi5zdGFydC5saW5lLCBzdHlsZVtpXS5wb3NpdGlvbi5zdGFydC5jb2xdO1xuICAgICAgICAgICAgdmFyIHByb3AgPSBuZXcgdXRpbHMuUHJvcGVydHkobmFtZSwgdmFsdWUsIHNlbGVjdG9yLCBpbXBvcnRhbnQgPyAyIDogMCwgYWRkaXRpb25hbFByaW9yaXR5KTtcbiAgICAgICAgICAgIHZhciBleGlzdGluZyA9IGVsLnN0eWxlUHJvcHNbbmFtZV07XG5cbiAgICAgICAgICAgIC8vIGlmIHByb3BlcnR5IG5hbWUgaXMgbm90IGluIHRoZSBleGNsdWRlZCBwcm9wZXJ0aWVzIGFycmF5XG4gICAgICAgICAgICBpZiAoanVpY2VDbGllbnQuZXhjbHVkZWRQcm9wZXJ0aWVzLmluZGV4T2YobmFtZSkgPCAwKSB7XG4gICAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiBleGlzdGluZy5jb21wYXJlKHByb3ApID09PSBwcm9wIHx8ICFleGlzdGluZykge1xuICAgICAgICAgICAgICAgIC8vIGRlbGV0aW5nIGEgcHJvcGVydHkgbGV0IHVzIGNoYW5nZSB0aGUgb3JkZXIgKG1vdmUgaXQgdG8gdGhlIGVuZCBpbiB0aGUgc2V0U3R5bGVBdHRycyBsb29wKVxuICAgICAgICAgICAgICAgIGlmIChleGlzdGluZyAmJiBleGlzdGluZy5zZWxlY3RvciAhPT0gc2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBlbC5zdHlsZVByb3BzW25hbWVdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXhpc3RpbmcpIHtcbiAgICAgICAgICAgICAgICAgIC8vIG1ha2UgXCJwcm9wXCIgYSBzcGVjaWFsIGNvbXBvc2VkIHByb3BlcnR5LlxuICAgICAgICAgICAgICAgICAgcHJvcC5uZXh0UHJvcCA9IGV4aXN0aW5nO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGVsLnN0eWxlUHJvcHNbbmFtZV0gPSBwcm9wO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZFByb3BzKHN0eWxlLCBzZWxlY3Rvcik7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBzZXRTdHlsZUF0dHJzKGVsKSB7XG4gICAgdmFyIGwgPSBPYmplY3Qua2V5cyhlbC5zdHlsZVByb3BzKS5sZW5ndGg7XG4gICAgdmFyIHByb3BzID0gW107XG4gICAgLy8gSGVyZSB3ZSBsb29wIGVhY2ggcHJvcGVydHkgYW5kIG1ha2Ugc3VyZSB0byBcImV4cGFuZFwiXG4gICAgLy8gbGlua2VkIFwibmV4dFByb3BcIiBwcm9wZXJ0aWVzIGhhcHBlbmluZyB3aGVuIHRoZSBzYW1lIHByb3BlcnR5XG4gICAgLy8gaXMgZGVjbGFyZWQgbXVsdGlwbGUgdGltZXMgaW4gdGhlIHNhbWUgc2VsZWN0b3IuXG4gICAgT2JqZWN0LmtleXMoZWwuc3R5bGVQcm9wcykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHtcbiAgICAgIHZhciBucCA9IGVsLnN0eWxlUHJvcHNba2V5XTtcbiAgICAgIHdoaWxlICh0eXBlb2YgbnAgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHByb3BzLnB1c2gobnApO1xuICAgICAgICBucCA9IG5wLm5leHRQcm9wO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8vIHNvcnQgcHJvcGVydGllcyBieSB0aGVpciBvcmlnaW5hdGluZyBzZWxlY3RvcidzIHNwZWNpZmljaXR5IHNvIHRoYXRcbiAgICAvLyBwcm9wcyBsaWtlIFwicGFkZGluZ1wiIGFuZCBcInBhZGRpbmctYm90dG9tXCIgYXJlIHJlc29sdmVkIGFzIGV4cGVjdGVkLlxuICAgIHByb3BzLnNvcnQoZnVuY3Rpb24oYSwgYikge1xuICAgICAgcmV0dXJuIGEuY29tcGFyZUZ1bmMoYik7XG4gICAgfSk7XG5cbiAgICB2YXIgc3RyaW5nID0gcHJvcHNcbiAgICAgIC5maWx0ZXIoZnVuY3Rpb24ocHJvcCkge1xuXG4gICAgICAgIC8vIGRvbid0IGFkZCBjc3MgdmFyaWFibGVzIGlmIHdlJ3JlIHJlc29sdmluZyB0aGVpciB2YWx1ZXNcbiAgICAgICAgaWYgKG9wdGlvbnMucmVzb2x2ZUNTU1ZhcmlhYmxlcyAmJiAocHJvcC5wcm9wLmluZGV4T2YoJy0tJykgPT09IDApICkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENvbnRlbnQgYmVjb21lcyB0aGUgaW5uZXJIVE1MIG9mIHBzZXVkbyBlbGVtZW50cywgbm90IHVzZWQgYXMgYVxuICAgICAgICAvLyBzdHlsZSBwcm9wZXJ0eVxuICAgICAgICByZXR1cm4gKHByb3AucHJvcCAhPT0gJ2NvbnRlbnQnKTtcbiAgICAgIH0pXG4gICAgICAubWFwKGZ1bmN0aW9uKHByb3ApIHtcbiAgICAgICAgaWYgKG9wdGlvbnMucmVzb2x2ZUNTU1ZhcmlhYmxlcykge1xuICAgICAgICAgIHByb3AudmFsdWUgPSB2YXJpYWJsZXMucmVwbGFjZVZhcmlhYmxlcyhlbCxwcm9wLnZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcHJvcC5wcm9wICsgJzogJyArIHByb3AudmFsdWUucmVwbGFjZSgvW1wiXS9nLCAnXFwnJykgKyAnOyc7XG4gICAgICB9KVxuICAgICAgLmpvaW4oJyAnKTtcbiAgICBpZiAoc3RyaW5nKSB7XG4gICAgICAkKGVsKS5hdHRyKHN0eWxlQXR0cmlidXRlTmFtZSwgc3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpbmxpbmVQc2V1ZG9FbGVtZW50cyhlbCkge1xuICAgIGlmIChlbC5wc2V1ZG9FbGVtZW50VHlwZSAmJiBlbC5zdHlsZVByb3BzLmNvbnRlbnQpIHtcbiAgICAgIHZhciBwYXJzZWQgPSBwYXJzZUNvbnRlbnQoZWwpO1xuICAgICAgaWYgKHBhcnNlZC5pbWcpIHtcbiAgICAgICAgZWwubmFtZSA9ICdpbWcnO1xuICAgICAgICAkKGVsKS5hdHRyKCdzcmMnLCBwYXJzZWQuaW1nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgICQoZWwpLnRleHQocGFyc2VkKTtcbiAgICAgIH1cbiAgICAgIHZhciBwYXJlbnQgPSBlbC5wc2V1ZG9FbGVtZW50UGFyZW50O1xuICAgICAgaWYgKGVsLnBzZXVkb0VsZW1lbnRUeXBlID09PSAnYmVmb3JlJykge1xuICAgICAgICAkKHBhcmVudCkucHJlcGVuZChlbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkKHBhcmVudCkuYXBwZW5kKGVsKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBzZXREaW1lbnNpb25BdHRycyhlbCwgZGltZW5zaW9uKSB7XG4gICAgaWYgKCFlbC5uYW1lKSB7IHJldHVybjsgfVxuICAgIHZhciBlbE5hbWUgPSBlbC5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgaWYgKGp1aWNlQ2xpZW50W2RpbWVuc2lvbiArICdFbGVtZW50cyddLmluZGV4T2YoZWxOYW1lKSA+IC0xKSB7XG4gICAgICBmb3IgKHZhciBpIGluIGVsLnN0eWxlUHJvcHMpIHtcbiAgICAgICAgaWYgKGVsLnN0eWxlUHJvcHNbaV0ucHJvcCA9PT0gZGltZW5zaW9uKSB7XG4gICAgICAgICAgdmFyIHZhbHVlID0gZWwuc3R5bGVQcm9wc1tpXS52YWx1ZTtcbiAgICAgICAgICBpZiAob3B0aW9ucy5wcmVzZXJ2ZUltcG9ydGFudCkge1xuICAgICAgICAgICAgdmFsdWUgPSByZW1vdmVJbXBvcnRhbnQodmFsdWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFsdWUubWF0Y2goLyhweHxhdXRvKS8pKSB7XG4gICAgICAgICAgICB2YXIgc2l6ZSA9IHZhbHVlLnJlcGxhY2UoJ3B4JywgJycpO1xuICAgICAgICAgICAgJChlbCkuYXR0cihkaW1lbnNpb24sIHNpemUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoanVpY2VDbGllbnQudGFibGVFbGVtZW50cy5pbmRleE9mKGVsTmFtZSkgPiAtMSAmJiB2YWx1ZS5tYXRjaCgvXFwlLykpIHtcbiAgICAgICAgICAgICQoZWwpLmF0dHIoZGltZW5zaW9uLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZXh0cmFjdEJhY2tncm91bmRVcmwodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuaW5kZXhPZigndXJsKCcpICE9PSAwXG4gICAgICA/IHZhbHVlXG4gICAgICA6IHZhbHVlLnJlcGxhY2UoL151cmxcXCgoW1wiJ10pPyhbXlwiJ10rKVxcMVxcKSQvLCAnJDInKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNPblRhYmxlRWxlbWVudHMoZWwpIHtcbiAgICBpZiAoIWVsLm5hbWUpIHsgcmV0dXJuOyB9XG4gICAgdmFyIGVsTmFtZSA9IGVsLm5hbWUudG9VcHBlckNhc2UoKTtcbiAgICB2YXIgc3R5bGVQcm9wcyA9IE9iamVjdC5rZXlzKGp1aWNlQ2xpZW50LnN0eWxlVG9BdHRyaWJ1dGUpO1xuXG4gICAgaWYgKGp1aWNlQ2xpZW50LnRhYmxlRWxlbWVudHMuaW5kZXhPZihlbE5hbWUpID4gLTEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gZWwuc3R5bGVQcm9wcykge1xuICAgICAgICBpZiAoc3R5bGVQcm9wcy5pbmRleE9mKGVsLnN0eWxlUHJvcHNbaV0ucHJvcCkgPiAtMSkge1xuICAgICAgICAgIHZhciBwcm9wID0ganVpY2VDbGllbnQuc3R5bGVUb0F0dHJpYnV0ZVtlbC5zdHlsZVByb3BzW2ldLnByb3BdO1xuICAgICAgICAgIHZhciB2YWx1ZSA9IGVsLnN0eWxlUHJvcHNbaV0udmFsdWU7XG4gICAgICAgICAgaWYgKG9wdGlvbnMucHJlc2VydmVJbXBvcnRhbnQpIHtcbiAgICAgICAgICAgIHZhbHVlID0gcmVtb3ZlSW1wb3J0YW50KHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHByb3AgPT09ICdiYWNrZ3JvdW5kJykge1xuICAgICAgICAgICAgdmFsdWUgPSBleHRyYWN0QmFja2dyb3VuZFVybCh2YWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICgvKGxpbmVhcnxyYWRpYWwpLWdyYWRpZW50XFwoL2kudGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICAkKGVsKS5hdHRyKHByb3AsIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZW1vdmVJbXBvcnRhbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1xccyohaW1wb3J0YW50JC8sICcnKVxufVxuXG5cblxuZnVuY3Rpb24gYXBwbHlDb3VudGVyU3R5bGUoY291bnRlciwgc3R5bGUpIHtcbiAgc3dpdGNoIChzdHlsZSkge1xuICAgIGNhc2UgJ2xvd2VyLXJvbWFuJzpcbiAgICAgIHJldHVybiBudW1iZXJzLnJvbWFuaXplKGNvdW50ZXIpLnRvTG93ZXJDYXNlKCk7XG4gICAgY2FzZSAndXBwZXItcm9tYW4nOlxuICAgICAgcmV0dXJuIG51bWJlcnMucm9tYW5pemUoY291bnRlcik7XG4gICAgY2FzZSAnbG93ZXItbGF0aW4nOlxuICAgIGNhc2UgJ2xvd2VyLWFscGhhJzpcbiAgICAgIHJldHVybiBudW1iZXJzLmFscGhhbnVtZXJpYyhjb3VudGVyKS50b0xvd2VyQ2FzZSgpO1xuICAgIGNhc2UgJ3VwcGVyLWxhdGluJzpcbiAgICBjYXNlICd1cHBlci1hbHBoYSc6XG4gICAgICByZXR1cm4gbnVtYmVycy5hbHBoYW51bWVyaWMoY291bnRlcik7XG4gICAgLy8gVE9ETyBzdXBwb3J0IG1vcmUgY291bnRlciBzdHlsZXNcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGNvdW50ZXIudG9TdHJpbmcoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXJzZUNvbnRlbnQoZWwpIHtcbiAgdmFyIGNvbnRlbnQgPSBlbC5zdHlsZVByb3BzLmNvbnRlbnQudmFsdWU7XG5cbiAgaWYgKGNvbnRlbnQgPT09ICdub25lJyB8fCBjb250ZW50ID09PSAnbm9ybWFsJykge1xuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHZhciBpbWFnZVVybE1hdGNoID0gY29udGVudC5tYXRjaCgvXlxccyp1cmxcXHMqXFwoXFxzKiguKj8pXFxzKlxcKVxccyokL2kpO1xuICBpZiAoaW1hZ2VVcmxNYXRjaCkge1xuICAgIHZhciB1cmwgPSBpbWFnZVVybE1hdGNoWzFdLnJlcGxhY2UoL15bJ1wiXXxbJ1wiXSQvZywgJycpO1xuICAgIHJldHVybiB7IGltZzogdXJsIH07XG4gIH1cblxuICB2YXIgcGFyc2VkID0gW107XG5cbiAgdmFyIHRva2VucyA9IGNvbnRlbnQuc3BsaXQoL1snXCJdLyk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRva2Vuc1tpXSA9PT0gJycpIGNvbnRpbnVlO1xuXG4gICAgdmFyIHZhck1hdGNoID0gdG9rZW5zW2ldLm1hdGNoKC92YXJcXHMqXFwoXFxzKiguKj8pXFxzKigsXFxzKiguKj8pXFxzKik/XFxzKlxcKS9pKTtcbiAgICBpZiAodmFyTWF0Y2gpIHtcbiAgICAgIHZhciB2YXJpYWJsZSA9IHZhcmlhYmxlcy5maW5kVmFyaWFibGVWYWx1ZShlbCwgdmFyTWF0Y2hbMV0pIHx8IHZhck1hdGNoWzJdO1xuICAgICAgcGFyc2VkLnB1c2godmFyaWFibGUucmVwbGFjZSgvXlsnXCJdfFsnXCJdJC9nLCAnJykpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGNvdW50ZXJNYXRjaCA9IHRva2Vuc1tpXS5tYXRjaCgvY291bnRlclxccypcXChcXHMqKC4qPylcXHMqKCxcXHMqKC4qPylcXHMqKT9cXHMqXFwpL2kpO1xuICAgIGlmIChjb3VudGVyTWF0Y2ggJiYgY291bnRlck1hdGNoWzFdIGluIGVsLmNvdW50ZXJQcm9wcykge1xuICAgICAgdmFyIGNvdW50ZXIgPSBlbC5jb3VudGVyUHJvcHNbY291bnRlck1hdGNoWzFdXTtcbiAgICAgIHBhcnNlZC5wdXNoKGFwcGx5Q291bnRlclN0eWxlKGNvdW50ZXIsIGNvdW50ZXJNYXRjaFszXSkpO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgdmFyIGF0dHJNYXRjaCA9IHRva2Vuc1tpXS5tYXRjaCgvYXR0clxccypcXChcXHMqKC4qPylcXHMqXFwpL2kpO1xuICAgIGlmIChhdHRyTWF0Y2gpIHtcbiAgICAgIHZhciBhdHRyID0gYXR0ck1hdGNoWzFdO1xuICAgICAgcGFyc2VkLnB1c2goZWwucHNldWRvRWxlbWVudFBhcmVudFxuICAgICAgICA/IGVsLnBzZXVkb0VsZW1lbnRQYXJlbnQuYXR0cmlic1thdHRyXVxuICAgICAgICA6IGVsLmF0dHJpYnNbYXR0cl1cbiAgICAgICk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBwYXJzZWQucHVzaCh0b2tlbnNbaV0pO1xuICB9XG5cbiAgY29udGVudCA9IHBhcnNlZC5qb2luKCcnKTtcbiAgLy8gTmFpdmUgdW5lc2NhcGUsIGFzc3VtZSBubyB1bmljb2RlIGNoYXIgY29kZXNcbiAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSgvXFxcXC9nLCAnJyk7XG4gIHJldHVybiBjb250ZW50O1xufVxuXG4vLyBSZXR1cm4gXCJiZWZvcmVcIiBvciBcImFmdGVyXCIgaWYgdGhlIGdpdmVuIHNlbGVjdG9yIGlzIGEgcHNldWRvIGVsZW1lbnQgKGUuZy4sXG4vLyBhOjphZnRlcikuXG5mdW5jdGlvbiBnZXRQc2V1ZG9FbGVtZW50VHlwZShzZWxlY3Rvcikge1xuICBpZiAoc2VsZWN0b3IubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBzZXVkb3MgPSBzZWxlY3RvcltzZWxlY3Rvci5sZW5ndGggLSAxXS5wc2V1ZG9zO1xuICBpZiAoIXBzZXVkb3MpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBzZXVkb3MubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoaXNQc2V1ZG9FbGVtZW50TmFtZShwc2V1ZG9zW2ldKSkge1xuICAgICAgcmV0dXJuIHBzZXVkb3NbaV0ubmFtZTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNQc2V1ZG9FbGVtZW50TmFtZShwc2V1ZG8pIHtcbiAgcmV0dXJuIHBzZXVkby5uYW1lID09PSAnYmVmb3JlJyB8fCBwc2V1ZG8ubmFtZSA9PT0gJ2FmdGVyJztcbn1cblxuZnVuY3Rpb24gZmlsdGVyRWxlbWVudFBzZXVkb3MocHNldWRvcykge1xuICByZXR1cm4gcHNldWRvcy5maWx0ZXIoZnVuY3Rpb24ocHNldWRvKSB7XG4gICAgcmV0dXJuICFpc1BzZXVkb0VsZW1lbnROYW1lKHBzZXVkbyk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBqdWljZURvY3VtZW50KCQsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IHV0aWxzLmdldERlZmF1bHRPcHRpb25zKG9wdGlvbnMpO1xuICB2YXIgY3NzID0gZXh0cmFjdENzc0Zyb21Eb2N1bWVudCgkLCBvcHRpb25zKTtcbiAgY3NzICs9ICdcXG4nICsgb3B0aW9ucy5leHRyYUNzcztcbiAgaW5saW5lRG9jdW1lbnQoJCwgY3NzLCBvcHRpb25zKTtcbiAgcmV0dXJuICQ7XG59XG5cbmZ1bmN0aW9uIGdldFN0eWxlc0RhdGEoJCwgb3B0aW9ucykge1xuICB2YXIgcmVzdWx0cyA9IFtdO1xuICB2YXIgc3R5bGVzTGlzdCA9ICQoJ3N0eWxlJyk7XG4gIHZhciBzdHlsZURhdGFMaXN0LCBzdHlsZURhdGEsIHN0eWxlRWxlbWVudDtcbiAgc3R5bGVzTGlzdC5lYWNoKGZ1bmN0aW9uKCkge1xuICAgIHN0eWxlRWxlbWVudCA9IHRoaXM7XG4gICAgc3R5bGVEYXRhTGlzdCA9IHN0eWxlRWxlbWVudC5jaGlsZE5vZGVzO1xuICAgIGlmIChzdHlsZURhdGFMaXN0Lmxlbmd0aCAhPT0gMSkge1xuICAgICAgaWYgKG9wdGlvbnMucmVtb3ZlU3R5bGVUYWdzKSB7XG4gICAgICAgICQoc3R5bGVFbGVtZW50KS5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3R5bGVEYXRhID0gc3R5bGVEYXRhTGlzdFswXS5kYXRhO1xuICAgIGlmIChvcHRpb25zLmFwcGx5U3R5bGVUYWdzICYmICQoc3R5bGVFbGVtZW50KS5hdHRyKCdkYXRhLWVtYmVkJykgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0cy5wdXNoKHN0eWxlRGF0YSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLnJlbW92ZVN0eWxlVGFncyAmJiAkKHN0eWxlRWxlbWVudCkuYXR0cignZGF0YS1lbWJlZCcpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciB0ZXh0ID0gc3R5bGVFbGVtZW50LmNoaWxkTm9kZXNbMF0ubm9kZVZhbHVlO1xuICAgICAgdmFyIHByZXNlcnZlZFRleHQgPSB1dGlscy5nZXRQcmVzZXJ2ZWRUZXh0KHRleHQsIHtcbiAgICAgICAgbWVkaWFRdWVyaWVzOiBvcHRpb25zLnByZXNlcnZlTWVkaWFRdWVyaWVzLFxuICAgICAgICBmb250RmFjZXM6IG9wdGlvbnMucHJlc2VydmVGb250RmFjZXMsXG4gICAgICAgIGtleUZyYW1lczogb3B0aW9ucy5wcmVzZXJ2ZUtleUZyYW1lcyxcbiAgICAgICAgcHNldWRvczogb3B0aW9ucy5wcmVzZXJ2ZVBzZXVkb3NcbiAgICAgIH0sIGp1aWNlQ2xpZW50Lmlnbm9yZWRQc2V1ZG9zKTtcbiAgICAgIGlmIChwcmVzZXJ2ZWRUZXh0KSB7XG4gICAgICAgIHN0eWxlRWxlbWVudC5jaGlsZE5vZGVzWzBdLm5vZGVWYWx1ZSA9IHByZXNlcnZlZFRleHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkKHN0eWxlRWxlbWVudCkucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfVxuICAgICQoc3R5bGVFbGVtZW50KS5yZW1vdmVBdHRyKCdkYXRhLWVtYmVkJyk7XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0cztcbn1cblxuZnVuY3Rpb24gZXh0cmFjdENzc0Zyb21Eb2N1bWVudCgkLCBvcHRpb25zKSB7XG4gIHZhciByZXN1bHRzID0gZ2V0U3R5bGVzRGF0YSgkLCBvcHRpb25zKTtcbiAgdmFyIGNzcyA9IHJlc3VsdHMuam9pbignXFxuJyk7XG4gIHJldHVybiBjc3M7XG59XG5cbnJldHVybiBqdWljZUNsaWVudDtcblxufTtcbiIsICIndXNlIHN0cmljdCc7XG5cbnZhciBjaGVlcmlvID0gcmVxdWlyZSgnLi9saWIvY2hlZXJpbycpO1xudmFyIG1ha2VKdWljZUNsaWVudCA9IHJlcXVpcmUoJy4vbGliL2lubGluZScpO1xuXG4vKipcbiAqIE5vdGUgdGhhdCBtYWtlSnVpY2VDbGllbnQgd2lsbCB0YWtlIGEgYmFzZSBvYmplY3QgKGluIHRoaXMgY2FzZSBhIGZ1bmN0aW9uKSBhbmQgZW5oYW5jZSBpdFxuICogd2l0aCBhIGxvdCBvZiB1c2VmdWwgcHJvcGVydGllcyBhbmQgZnVuY3Rpb25zLlxuICpcbiAqIFRoaXMgY2xpZW50IGFkb3B0cyBjaGVlcmlvIGFzIGEgRE9NIHBhcnNlciBhbmQgYWRkcyBhbiBcImlubGluZUNvbnRlbnRcIiBmdW5jdGlvbiB0aGF0IGxldFxuICogdXNlcnMgdG8gc3BlY2lmeSB0aGUgQ1NTIHRvIGJlIGlubGluZWQgaW5zdGVhZCBvZiBleHRyYWN0aW5nIGl0IGZyb20gdGhlIGh0bWwuXG4gKiBcbiAqIFRoZSB3ZWlyZCBcIm1ha2VKdWljZUNsaWVudFwiIGJlaGF2aW91ciBpcyB0aGVyZSBpbiBvcmRlciB0byBrZWVwIGJhY2t3YXJkIEFQSSBjb21wYXRpYmlsaXR5LlxuICovXG52YXIganVpY2VDbGllbnQgPSBtYWtlSnVpY2VDbGllbnQoZnVuY3Rpb24oaHRtbCxvcHRpb25zKSB7XG4gIHJldHVybiBjaGVlcmlvKGh0bWwsIHsgeG1sTW9kZTogb3B0aW9ucyAmJiBvcHRpb25zLnhtbE1vZGV9LCBqdWljZURvY3VtZW50LCBbb3B0aW9uc10pO1xufSk7XG5cbnZhciBqdWljZURvY3VtZW50ID0gZnVuY3Rpb24oaHRtbCwgb3B0aW9ucykge1xuICByZXR1cm4ganVpY2VDbGllbnQuanVpY2VEb2N1bWVudChodG1sLCBvcHRpb25zKTtcbn1cblxuanVpY2VDbGllbnQuaW5saW5lQ29udGVudCA9IGZ1bmN0aW9uKGh0bWwsIGNzcywgb3B0aW9ucykge1xuICByZXR1cm4gY2hlZXJpbyhodG1sLCB7IHhtbE1vZGU6IG9wdGlvbnMgJiYgb3B0aW9ucy54bWxNb2RlfSwganVpY2VDbGllbnQuaW5saW5lRG9jdW1lbnQsIFtjc3MsIG9wdGlvbnNdKTtcbn07XG5cbmp1aWNlQ2xpZW50LmNvZGVCbG9ja3MgPSBjaGVlcmlvLmNvZGVCbG9ja3M7XG5cbm1vZHVsZS5leHBvcnRzID0ganVpY2VDbGllbnQ7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmlzSGVpY1NpZ25hdHVyZUluY2x1ZGVkID0gZXhwb3J0cy5pc0F2aWZTdHJpbmdJbmNsdWRlZCA9IGV4cG9ydHMuaXNGaWxlQ29udGFpbmVKZmlmb3JFeGlmSGVhZGVyID0gZXhwb3J0cy5pc0ZsdlN0cmluZ0luY2x1ZGVkID0gZXhwb3J0cy5pc2Z0eXBTdHJpbmdJbmNsdWRlZCA9IGV4cG9ydHMuZmluZE1hdHJvc2thRG9jVHlwZUVsZW1lbnRzID0gZXhwb3J0cy5mZXRjaEZyb21PYmplY3QgPSBleHBvcnRzLmdldEZpbGVDaHVuayA9IHZvaWQgMDtcbi8qKlxuICogVGFrZXMgYSBmaWxlIGNvbnRlbnQgaW4gZGlmZmVyZW50IHR5cGVzLCBjb252ZXJ0IGl0IGludG8gYXJyYXkgb2YgbnVtYmVycyBhbmQgcmV0dXJucyBhIGNodW5rIG9mIHRoZSByZXF1aXJlZCBzaXplXG4gKlxuICogQHBhcmFtIGZpbGUgLSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKiBAcGFyYW0gZmlsZUNodW5rTGVuZ3RoIC0gUmVxdWlyZWQgZmlsZSBjaHVuayBsZW5ndGhcbiAqXG4gKiBAcmV0dXJucyB7QXJyYXk8bnVtYmVyPn0gRmlsZSBjaHVuayBvZiB0aGUgcmVxdWlyZWQgc2l6ZSByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj5cbiAqL1xuZnVuY3Rpb24gZ2V0RmlsZUNodW5rKGZpbGUsIGZpbGVDaHVua0xlbmd0aCA9IDMyIC8vIGRlZmF1bHQgbGVuZ3RoIC0gMzIgYnl0ZXNcbikge1xuICAgIGNvbnN0IGZpbGVUb0NoZWNrID0gZmlsZSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyID8gbmV3IFVpbnQ4QXJyYXkoZmlsZSkgOiBmaWxlO1xuICAgIGxldCBjaHVuayA9IFtdO1xuICAgIGlmICgoQXJyYXkuaXNBcnJheShmaWxlKSAmJiBpc0FycmF5b2ZOdW1iZXJzKGZpbGUpKSB8fFxuICAgICAgICBmaWxlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIgfHxcbiAgICAgICAgZmlsZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgY2h1bmsgPSBBcnJheS5mcm9tKGZpbGVUb0NoZWNrLnNsaWNlKDAsIGZpbGVDaHVua0xlbmd0aCkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgdGhlIFxcYGZpbGVcXGAgYXJndW1lbnQgdG8gYmUgb2YgdHlwZSBcXGBBcnJheTxudW1iZXI+XFxgLCBcXGBVaW50OEFycmF5XFxgLCBvciBcXGBBcnJheUJ1ZmZlclxcYCwgZ290IFxcYCR7dHlwZW9mIGZpbGV9XFxgYCk7XG4gICAgfVxuICAgIGlmICghaXNMZWdhbENodW5rKGNodW5rKSlcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRmlsZSBjb250ZW50IGNvbnRhaW5zIGlsbGVnYWwgdmFsdWVzYCk7XG4gICAgcmV0dXJuIGNodW5rO1xufVxuZXhwb3J0cy5nZXRGaWxlQ2h1bmsgPSBnZXRGaWxlQ2h1bms7XG4vKipcbiAqIERldGVybWluZSBpZiBhcnJheSBvZiBudW1iZXJzIGlzIGEgbGVnYWwgZmlsZSBjaHVua1xuICpcbiAqIEBwYXJhbSBmaWxlQ2h1bmsgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPlxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBmaWxlIGNvbnRlbnQgaXMgdmVyaWZpZWQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0xlZ2FsQ2h1bmsoZmlsZUNodW5rKSB7XG4gICAgcmV0dXJuIGZpbGVDaHVuay5ldmVyeSgobnVtKSA9PiB0eXBlb2YgbnVtID09PSBcIm51bWJlclwiICYmICFpc05hTihudW0pKTtcbn1cbi8qKlxuICogRmV0Y2ggYSBwcm9wZXJ0eSBvZiBhIG9iamVjdCBieSBpdHMgbmFtZVxuICpcbiAqIEBwYXJhbSBvYmogVGhlIHJlcXVpcmVkIG9iamVjdFxuICogQHBhcmFtIHByb3AgVGhlIHByb3BlcnR5IG5hbWVcbiAqXG4gKiBAcmV0dXJucyB7RmlsZUluZm99IEEgcHJvcGVydHkgb2YgdGhlIHJxdWlyZWQgb2JqZWN0XG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuZnVuY3Rpb24gZmV0Y2hGcm9tT2JqZWN0KG9iaiwgcHJvcCkge1xuICAgIGNvbnN0IF9pbmRleCA9IHByb3AuaW5kZXhPZihcIi5cIik7XG4gICAgaWYgKF9pbmRleCA+IC0xKSB7XG4gICAgICAgIHJldHVybiBmZXRjaEZyb21PYmplY3Qob2JqW3Byb3Auc2xpY2UoMCwgX2luZGV4KV0sIHByb3Auc2xpY2UoX2luZGV4ICsgMSkpO1xuICAgIH1cbiAgICByZXR1cm4gb2JqW3Byb3BdO1xufVxuZXhwb3J0cy5mZXRjaEZyb21PYmplY3QgPSBmZXRjaEZyb21PYmplY3Q7XG4vKipcbiAqIElkZW50aWZ5IHdoZXRoZXIgYSB2YWxpZCAnbWt2Jy8nd2ViJyBmaWxlIGlzICdta3YnIG9yICd3ZWJtJy5cbiAqIEJ5IGNoZWNraW5nIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIFwiRG9jVHlwZVwiIGVsZW1lbnQgaW4gdGhlICd3ZWJtJyBoZWFkZXIuXG4gKiBPciBieSBjaGVja2luZyB0aGUgcHJlc2VuY2Ugb2YgdGhlIFwiU2VnbWVudFwiIGVsZW1lbnQgaW4gdGhlICdta3YnIGhlYWRlci5cbiAqXG4gKiBAcGFyYW0gZmlsZUNodW5rIC0gQSBjaHVuayBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSBmaWxlIGNvbnRlbnQsIHJlcHJlc2VudHMgaW4gYXJyYXkgb2YgbnVtYmVyc1xuICpcbiAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9ICd3ZWJtJyBpZiBmb3VuZCB3ZWJtIHN0cmluZyBBIHByb3BlcnR5IG9mIHRoZSBycXVpcmVkIG9iamVjdFxuICovXG5mdW5jdGlvbiBmaW5kTWF0cm9za2FEb2NUeXBlRWxlbWVudHMoZmlsZUNodW5rKSB7XG4gICAgY29uc3Qgd2VibVN0cmluZyA9IFwid2VibVwiO1xuICAgIGNvbnN0IG1rdlN0cmluZyA9IFwibWF0cm9za2FcIjtcbiAgICBjb25zdCBieXRlU3RyaW5nID0gZmlsZUNodW5rLm1hcCgobnVtKSA9PiBTdHJpbmcuZnJvbUNoYXJDb2RlKG51bSkpLmpvaW4oXCJcIik7XG4gICAgaWYgKGJ5dGVTdHJpbmcuaW5jbHVkZXMod2VibVN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIFwid2VibVwiO1xuICAgIH1cbiAgICBpZiAoYnl0ZVN0cmluZy5pbmNsdWRlcyhta3ZTdHJpbmcpKSB7XG4gICAgICAgIHJldHVybiBcIm1rdlwiO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkOyAvLyBGaWxlIHR5cGUgbm90IGlkZW50aWZpZWRcbn1cbmV4cG9ydHMuZmluZE1hdHJvc2thRG9jVHlwZUVsZW1lbnRzID0gZmluZE1hdHJvc2thRG9jVHlwZUVsZW1lbnRzO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYXJyYXkgb2YgbnVtYmVycyBjb250YWlucyB0aGUgXCJmeXRwXCIgc3RyaW5nLlxuICogTTRWIGZpbGVzIHR5cGljYWxseSBoYXZlIGEgXCJmdHlwXCIgYm94IGluIHRoZSBmaXJzdCBmZXcgYnl0ZXMsIHdoaWNoIGNhbiBiZSBjaGVja2VkIGJ5IHNlYXJjaGluZyBmb3IgdGhlIHN0cmluZyBcImZ0eXBcIiBpbiB0aGUgYnVmZmVyLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2h1bmsgQSBjaHVuayBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSBmaWxlIGNvbnRlbnQsIHJlcHJlc2VudHMgaW4gYXJyYXkgb2YgbnVtYmVyc1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIHRoZSBcImZ0eXBcIiBzdHJpbmcgaW4gdGhlIGZpbGVDaHVuaywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzZnR5cFN0cmluZ0luY2x1ZGVkKGZpbGVDaHVuaykge1xuICAgIGNvbnN0IGZ0eXBTaWduYXR1cmUgPSBbMHg2NiwgMHg3NCwgMHg3OSwgMHg3MF07IC8vIFwiZnR5cFwiIHNpZ25hdHVyZVxuICAgIC8vIENoZWNrIHRoZSBmaXJzdCBmZXcgYnl0ZXMgZm9yIHRoZSBcImZ0eXBcIiBzaWduYXR1cmVcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVDaHVuay5sZW5ndGggLSBmdHlwU2lnbmF0dXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxldCBmb3VuZCA9IHRydWU7XG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZnR5cFNpZ25hdHVyZS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgaWYgKGZpbGVDaHVua1tpICsgal0gIT09IGZ0eXBTaWduYXR1cmVbal0pIHtcbiAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZXhwb3J0cy5pc2Z0eXBTdHJpbmdJbmNsdWRlZCA9IGlzZnR5cFN0cmluZ0luY2x1ZGVkO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYXJyYXkgb2YgbnVtYmVycyBjb250YWlucyB0aGUgXCJGTFZcIiBzdHJpbmcuXG4gKiBGTFYgZmlsZXMgdHlwaWNhbGx5IGhhdmUgYSBcIkZMVlwiIHN0cmluZyBpbiB0aGUgZmlyc3QgZmV3IGJ5dGVzIG9mIHRoZSBmaWxlLCB3aGljaCBjYW4gYmUgY2hlY2tlZCB1c2luZyBUZXh0RGVjb2RlciBvciBzaW1pbGFyLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2h1bmsgQSBjaHVuayBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSBmaWxlIGNvbnRlbnQsIHJlcHJlc2VudHMgaW4gYXJyYXkgb2YgbnVtYmVyc1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIHRoZSBcIkZMVlwiIHN0cmluZyBpbiB0aGUgZmlsZUNodW5rLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGbHZTdHJpbmdJbmNsdWRlZChmaWxlQ2h1bmspIHtcbiAgICBjb25zdCBzaWduYXR1cmUgPSBmaWxlQ2h1bmsuc2xpY2UoMCwgMyk7XG4gICAgY29uc3Qgc2lnbmF0dXJlU3RyaW5nID0gbmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKG5ldyBVaW50OEFycmF5KHNpZ25hdHVyZSkpO1xuICAgIHJldHVybiBzaWduYXR1cmVTdHJpbmcuaW5jbHVkZXMoXCJGTFZcIik7XG59XG5leHBvcnRzLmlzRmx2U3RyaW5nSW5jbHVkZWQgPSBpc0ZsdlN0cmluZ0luY2x1ZGVkO1xuZnVuY3Rpb24gaXNGaWxlQ29udGFpbmVKZmlmb3JFeGlmSGVhZGVyKGZpbGUpIHtcbiAgICAvLyBDaGVjayBpZiB0aGUgZm91cnRoIGJ5dGUgaXMgb25lIG9mIHRoZSBrbm93biBKRklGIG9yIEVYSUYgaGVhZGVyIG1hcmtlcnNcbiAgICBjb25zdCBoZWFkZXJNYXJrZXIgPSBmaWxlWzNdO1xuICAgIGlmIChoZWFkZXJNYXJrZXIgPT09IDB4ZTAgfHwgLy8gSkZJRlxuICAgICAgICBoZWFkZXJNYXJrZXIgPT09IDB4ZTEgLy8gRVhJRlxuICAgICkge1xuICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gSXQncyBhIEpQRUcgZmlsZVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG59XG5leHBvcnRzLmlzRmlsZUNvbnRhaW5lSmZpZm9yRXhpZkhlYWRlciA9IGlzRmlsZUNvbnRhaW5lSmZpZm9yRXhpZkhlYWRlcjtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGFycmF5IG9mIG51bWJlcnMgY29udGFpbnMgdGhlIFwiZnR5cGF2aWZcIiBzdHJpbmcuXG4gKiBBVklGIGZpbGVzIHR5cGljYWxseSBoYXZlIGEgXCJmdHlwYXZpZlwiIHN0cmluZyBhdCBieXRlcyA1LTEyIG9mIHRoZSBmaWxlLCB3aGljaCBjYW4gYmUgY2hlY2tlZCB1c2luZyBUZXh0RGVjb2RlciBvciBzaW1pbGFyLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2h1bmsgQSBjaHVuayBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSBmaWxlIGNvbnRlbnQsIHJlcHJlc2VudHMgaW4gYXJyYXkgb2YgbnVtYmVyc1xuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIHRoZSBcIkFWSUZcIiBzdHJpbmcgaW4gdGhlIGZpbGVDaHVuaywgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQXZpZlN0cmluZ0luY2x1ZGVkKGZpbGVDaHVuaykge1xuICAgIC8vIENvbnZlcnQgdGhlIHJlbGV2YW50IHNsaWNlIG9mIHRoZSBmaWxlIGNodW5rIGZyb20gaGV4YWRlY2ltYWwgdG8gY2hhcmFjdGVyc1xuICAgIGNvbnN0IHNpZ25hdHVyZSA9IGZpbGVDaHVua1xuICAgICAgICAuc2xpY2UoNCwgMTIpXG4gICAgICAgIC5tYXAoKGhleCkgPT4gU3RyaW5nLmZyb21DaGFyQ29kZShoZXgpKVxuICAgICAgICAuam9pbihcIlwiKTtcbiAgICByZXR1cm4gc2lnbmF0dXJlID09PSBcImZ0eXBhdmlmXCI7XG59XG5leHBvcnRzLmlzQXZpZlN0cmluZ0luY2x1ZGVkID0gaXNBdmlmU3RyaW5nSW5jbHVkZWQ7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbmZ1bmN0aW9uIGlzQXJyYXlvZk51bWJlcnMoYXJyKSB7XG4gICAgcmV0dXJuIGFyci5ldmVyeSgoZWxlbWVudCkgPT4gdHlwZW9mIGVsZW1lbnQgPT09IFwibnVtYmVyXCIpO1xufVxuLyoqXG4gKiBEZXRlcm1pbmUgaWYgYSBmaWxlIGNodW5rIGNvbnRhaW5zIGEgSEVJQyBmaWxlIGJveC5cbiAqIEhFSUMgZmlsZXMgdHlwaWNhbGx5IGhhdmUgYW4gJ2Z0eXAnIGJveCB3aXRoIHNwZWNpZmljIG1ham9yIGJyYW5kIHNpZ25hdHVyZXNcbiAqIHN1Y2ggYXMgJ2hlaWMnLCAnaGV2YycsICdtaWYxJywgYW5kICdtc2YxJyB3aGljaCBjYW4gYmUgY2hlY2tlZCBieSBzZWFyY2hpbmdcbiAqIGZvciB0aGVzZSBzdHJpbmdzIGluIHRoZSBmaWxlIGNodW5rLlxuICpcbiAqIEBwYXJhbSBmaWxlQ2h1bmsgQSBjaHVuayBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSBmaWxlIGNvbnRlbnQsIHJlcHJlc2VudGVkIGFzIGFuIGFycmF5IG9mIG51bWJlcnMuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIEhFSUMgc2lnbmF0dXJlIGluIHRoZSBmaWxlQ2h1bmssIG90aGVyd2lzZSBmYWxzZS5cbiAqL1xuZnVuY3Rpb24gaXNIZWljU2lnbmF0dXJlSW5jbHVkZWQoZmlsZUNodW5rKSB7XG4gICAgLy8gQ29udmVydCB0aGUgZmlyc3QgcGFydCBvZiB0aGUgZmlsZSBjaHVuayB0byBhIHN0cmluZyB0byBjaGVjayBmb3Igc2lnbmF0dXJlc1xuICAgIGNvbnN0IGJ5dGVTdHJpbmcgPSBmaWxlQ2h1bmsubWFwKChudW0pID0+IFN0cmluZy5mcm9tQ2hhckNvZGUobnVtKSkuam9pbihcIlwiKTtcbiAgICAvLyBMaXN0IG9mIHBvc3NpYmxlIEhFSUMgJ2Z0eXAnIHNpZ25hdHVyZXNcbiAgICBjb25zdCBoZWljU2lnbmF0dXJlcyA9IFtcImZ0eXBoZWljXCIsIFwiZnR5cGhldmNcIiwgXCJmdHlwbWlmMVwiLCBcImZ0eXBtc2YxXCJdO1xuICAgIC8vIENoZWNrIGlmIGFueSBvZiB0aGUgSEVJQyBzaWduYXR1cmVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgYnl0ZSBzdHJpbmdcbiAgICByZXR1cm4gaGVpY1NpZ25hdHVyZXMuc29tZSgoc2lnbmF0dXJlKSA9PiBieXRlU3RyaW5nLmluY2x1ZGVzKHNpZ25hdHVyZSkpO1xufVxuZXhwb3J0cy5pc0hlaWNTaWduYXR1cmVJbmNsdWRlZCA9IGlzSGVpY1NpZ25hdHVyZUluY2x1ZGVkO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5BdWRpb1R5cGVzID0gdm9pZCAwO1xuLyoqXG4gKiBBdWRpbyBmaWxlcyBpbmZvcm1hdGlvbiB3aXRoIHRoZWlyIHVuaXF1ZSBzaWduYXR1cmVzXG4gKi9cbmNsYXNzIEF1ZGlvVHlwZXMge1xufVxuZXhwb3J0cy5BdWRpb1R5cGVzID0gQXVkaW9UeXBlcztcbkF1ZGlvVHlwZXMuQUFDID0ge1xuICAgIGV4dGVuc2lvbjogXCJhYWNcIixcbiAgICBtaW1lVHlwZTogXCJhdWRpby9hYWNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBZHZhbmNlZCBBdWRpbyBDb2RpbmcgKEFBQykgaXMgYW4gYXVkaW8gY29kaW5nIHN0YW5kYXJkIGZvciBsb3NzeSBkaWdpdGFsIGF1ZGlvIGNvbXByZXNzaW9uXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZmYsIDB4ZjFdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTVBFRy00IEFkdmFuY2VkIEF1ZGlvIENvZGluZyAoQUFDKSBMb3cgQ29tcGxleGl0eSAoTEMpIGF1ZGlvIGZpbGVcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweGZmLCAweGY5XSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk1QRUctMiBBZHZhbmNlZCBBdWRpbyBDb2RpbmcgKEFBQykgTG93IENvbXBsZXhpdHkgKExDKSBhdWRpbyBmaWxlXCIsXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5BdWRpb1R5cGVzLkFNUiA9IHtcbiAgICBleHRlbnNpb246IFwiYW1yXCIsXG4gICAgbWltZVR5cGU6IFwiYXVkaW8vYW1yXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQWRhcHRpdmUgTXVsdGktUmF0ZSBBQ0VMUCAoQWxnZWJyYWljIENvZGUgRXhjaXRlZCBMaW5lYXIgUHJlZGljdGlvbikgQ29kZWMsIGNvbW1vbmx5IGF1ZGlvIGZvcm1hdCB3aXRoIEdTTSBjZWxsIHBob25lc1wiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDIzLCAweDIxLCAweDQxLCAweDRkLCAweDUyXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkF1ZGlvVHlwZXMuRkxBQyA9IHtcbiAgICBleHRlbnNpb246IFwiZmxhY1wiLFxuICAgIG1pbWVUeXBlOiBcImF1ZGlvL3gtZmxhY1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkZyZWUgTG9zc2xlc3MgQXVkaW8gQ29kZWMgZmlsZVwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDY2LCAweDRjLCAweDYxLCAweDQzLCAweDAwLCAweDAwLCAweDAwLCAweDIyXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkF1ZGlvVHlwZXMuTTRBID0ge1xuICAgIGV4dGVuc2lvbjogXCJtNGFcIixcbiAgICBtaW1lVHlwZTogXCJhdWRpby94LW00YVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFwcGxlIExvc3NsZXNzIEF1ZGlvIENvZGVjIGZpbGVcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg2NiwgMHg3NCwgMHg3OSwgMHg3MCwgMHg0ZCwgMHgzNCwgMHg0MSwgMHgyMF0sXG4gICAgICAgICAgICBvZmZzZXQ6IDQsXG4gICAgICAgICAgICBjb21wYXRpYmxlRXh0ZW5zaW9uczogW1wiYWFjXCJdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuQXVkaW9UeXBlcy5NUDMgPSB7XG4gICAgZXh0ZW5zaW9uOiBcIm1wM1wiLFxuICAgIG1pbWVUeXBlOiBcImF1ZGlvL21wZWdcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIGRpZ2l0YWwgYXVkaW8gZmlsZSBmb3JtYXQgdGhhdCB1c2VzIGNvbXByZXNzaW9uIHRvIHJlZHVjZSBmaWxlIHNpemUgd2hpbGUgbWFpbnRhaW5pbmcgaGlnaCBxdWFsaXR5IHNvdW5kXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZmYsIDB4ZmJdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTVBFRy0xIExheWVyIDMgZmlsZSB3aXRob3V0IGFuIElEMyB0YWcgb3Igd2l0aCBhbiBJRDN2MSB0YWcgKHdoaWNoIGlzIGFwcGVuZGVkIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUpXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHhmZiwgMHhmM10sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJNUEVHLTEgTGF5ZXIgMyBmaWxlIHdpdGhvdXQgYW4gSUQzIHRhZyBvciB3aXRoIGFuIElEM3YxIHRhZyAod2hpY2ggaXMgYXBwZW5kZWQgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZSlcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweGZmLCAweGYyXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk1QRUctMSBMYXllciAzIGZpbGUgd2l0aG91dCBhbiBJRDMgdGFnIG9yIHdpdGggYW4gSUQzdjEgdGFnICh3aGljaCBpcyBhcHBlbmRlZCBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlKVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NDksIDB4NDQsIDB4MzNdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTVAzIGZpbGUgd2l0aCBhbiBJRDN2MiBjb250YWluZXJcIixcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkF1ZGlvVHlwZXMuV0FWID0ge1xuICAgIGV4dGVuc2lvbjogXCJ3YXZcIixcbiAgICBtaW1lVHlwZTogXCJhdWRpby93YXZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJXYXZlZm9ybSBBdWRpbyBGaWxlIEZvcm1hdFwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFtcbiAgICAgICAgICAgICAgICAweDUyLCAweDQ5LCAweDQ2LCAweDQ2LCAweDU3LCAweDQxLCAweDU2LCAweDQ1LCAweDY2LCAweDZkLCAweDc0LFxuICAgICAgICAgICAgICAgIDB4MjAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc2tpcHBlZEJ5dGVzOiBbNCwgNSwgNiwgN10sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLkNvbXByZXNzZWRUeXBlcyA9IHZvaWQgMDtcbi8qKlxuICogQ29tcHJlc3NlZCBmaWxlcyBpbmZvcm1hdGlvbiB3aXRoIHRoZWlyIHVuaXF1ZSBzaWduYXR1cmVzXG4gKi9cbmNsYXNzIENvbXByZXNzZWRUeXBlcyB7XG59XG5leHBvcnRzLkNvbXByZXNzZWRUeXBlcyA9IENvbXByZXNzZWRUeXBlcztcbkNvbXByZXNzZWRUeXBlcy5fN1ogPSB7XG4gICAgZXh0ZW5zaW9uOiBcIjd6XCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24veC03ei1jb21wcmVzc2VkXCIsXG4gICAgZGVzY3JpcHRpb246IFwiNy1aaXAgY29tcHJlc3NlZCBmaWxlXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4MzcsIDB4N2EsIDB4YmMsIDB4YWYsIDB4MjcsIDB4MWNdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuQ29tcHJlc3NlZFR5cGVzLkxaSCA9IHtcbiAgICBleHRlbnNpb246IFwibHpoXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24veC1semgtY29tcHJlc3NlZFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNvbXByZXNzZWQgZmlsZSB1c2luZyBMZW1wZWwtWml2IGFuZCBIYXJ1eWFzdSAoTFpIKSBjb21wcmVzc2lvbiBhbGdvcml0aG1cIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHgyZCwgMHg2OCwgMHg2YywgMHgzMCwgMHgyZF0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMZW1wZWwgWml2IEh1ZmZtYW4gYXJjaGl2ZSBmaWxlIE1ldGhvZCAwIChObyBjb21wcmVzc2lvbilcIixcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJsaGFcIl0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHgyZCwgMHg2OCwgMHg2YywgMHgzNSwgMHgyZF0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJMZW1wZWwgWml2IEh1ZmZtYW4gYXJjaGl2ZSBmaWxlIE1ldGhvZCA1ICg4S2lCIHNsaWRpbmcgd2luZG93KVwiLFxuICAgICAgICAgICAgY29tcGF0aWJsZUV4dGVuc2lvbnM6IFtcImxoYVwiXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkNvbXByZXNzZWRUeXBlcy5SQVIgPSB7XG4gICAgZXh0ZW5zaW9uOiBcInJhclwiLFxuICAgIG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJSb3NoYWwgQVJjaGl2ZSBjb21wcmVzc2VkIGFyY2hpdmUgZmlsZVwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDUyLCAweDYxLCAweDcyLCAweDIxLCAweDFhLCAweDA3LCAweDAwXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkNvbXByZXNzZWQgYXJjaGl2ZSB2NS4wMCBvbndhcmRzXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg1MiwgMHg2MSwgMHg3MiwgMHgyMSwgMHgxYSwgMHgwNywgMHgwMSwgMHgwMF0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJDb21wcmVzc2VkIGFyY2hpdmUgdjEuNTAgb253YXJkc1wiLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuQ29tcHJlc3NlZFR5cGVzLlpJUCA9IHtcbiAgICBleHRlbnNpb246IFwiemlwXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24vemlwXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQ29tcHJlc3NlZCBhcmNoaXZlIGZpbGVcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg1NywgMHg2OSwgMHg2ZSwgMHg1YSwgMHg2OSwgMHg3MF0sXG4gICAgICAgICAgICBvZmZzZXQ6IDI5MTUyLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiV2luWmlwIGNvbXByZXNzZWQgYXJjaGl2ZVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogW1xuICAgICAgICAgICAgICAgIDB4NTAsIDB4NGIsIDB4MDMsIDB4MDQsIDB4MTQsIDB4MDAsIDB4MDEsIDB4MDAsIDB4NjMsIDB4MDAsIDB4MDAsXG4gICAgICAgICAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJaTG9jayBQcm8gZW5jcnlwdGVkIFpJUFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NTAsIDB4NGIsIDB4NGMsIDB4NDksIDB4NTQsIDB4NDVdLFxuICAgICAgICAgICAgb2Zmc2V0OiAzMCxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlBLTElURSBjb21wcmVzc2VkIFpJUCBhcmNoaXZlIChzZWUgYWxzbyBQS1pJUClcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDUwLCAweDRiLCAweDUzLCAweDcwLCAweDU4XSxcbiAgICAgICAgICAgIG9mZnNldDogNTI2LFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUEtTRlggc2VsZi1leHRyYWN0aW5nIGV4ZWN1dGFibGUgY29tcHJlc3NlZCBmaWxlIChzZWUgYWxzbyBQS1pJUClcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDUwLCAweDRiLCAweDAzLCAweDA0XSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlBLWklQIGFyY2hpdmUgZmlsZSAtIHppcCBmaWxlIGZvcm1hdCBhbmQgbXVsdGlwbGUgZm9ybWF0cyBiYXNlZCBvbiBpdFwiLFxuICAgICAgICAgICAgY29tcGF0aWJsZUV4dGVuc2lvbnM6IFtcbiAgICAgICAgICAgICAgICBcImFhclwiLFxuICAgICAgICAgICAgICAgIFwiYXBrXCIsXG4gICAgICAgICAgICAgICAgXCJkb2N4XCIsXG4gICAgICAgICAgICAgICAgXCJlcHViXCIsXG4gICAgICAgICAgICAgICAgXCJpcGFcIixcbiAgICAgICAgICAgICAgICBcImphclwiLFxuICAgICAgICAgICAgICAgIFwia216XCIsXG4gICAgICAgICAgICAgICAgXCJtYWZmXCIsXG4gICAgICAgICAgICAgICAgXCJtc2l4XCIsXG4gICAgICAgICAgICAgICAgXCJvZHBcIixcbiAgICAgICAgICAgICAgICBcIm9kc1wiLFxuICAgICAgICAgICAgICAgIFwib2R0XCIsXG4gICAgICAgICAgICAgICAgXCJwazNcIixcbiAgICAgICAgICAgICAgICBcInBrNFwiLFxuICAgICAgICAgICAgICAgIFwicHB0eFwiLFxuICAgICAgICAgICAgICAgIFwidXNkelwiLFxuICAgICAgICAgICAgICAgIFwidnNkeFwiLFxuICAgICAgICAgICAgICAgIFwieGxzeFwiLFxuICAgICAgICAgICAgICAgIFwieHBpXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NTAsIDB4NGIsIDB4MDUsIDB4MDZdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUEtaSVAgZW1wdHkgYXJjaGl2ZSBmaWxlIC0gemlwIGZpbGUgZm9ybWF0IGFuZCBtdWx0aXBsZSBmb3JtYXRzIGJhc2VkIG9uIGl0XCIsXG4gICAgICAgICAgICBjb21wYXRpYmxlRXh0ZW5zaW9uczogW1xuICAgICAgICAgICAgICAgIFwiYWFyXCIsXG4gICAgICAgICAgICAgICAgXCJhcGtcIixcbiAgICAgICAgICAgICAgICBcImRvY3hcIixcbiAgICAgICAgICAgICAgICBcImVwdWJcIixcbiAgICAgICAgICAgICAgICBcImlwYVwiLFxuICAgICAgICAgICAgICAgIFwiamFyXCIsXG4gICAgICAgICAgICAgICAgXCJrbXpcIixcbiAgICAgICAgICAgICAgICBcIm1hZmZcIixcbiAgICAgICAgICAgICAgICBcIm1zaXhcIixcbiAgICAgICAgICAgICAgICBcIm9kcFwiLFxuICAgICAgICAgICAgICAgIFwib2RzXCIsXG4gICAgICAgICAgICAgICAgXCJvZHRcIixcbiAgICAgICAgICAgICAgICBcInBrM1wiLFxuICAgICAgICAgICAgICAgIFwicGs0XCIsXG4gICAgICAgICAgICAgICAgXCJwcHR4XCIsXG4gICAgICAgICAgICAgICAgXCJ1c2R6XCIsXG4gICAgICAgICAgICAgICAgXCJ2c2R4XCIsXG4gICAgICAgICAgICAgICAgXCJ4bHN4XCIsXG4gICAgICAgICAgICAgICAgXCJ4cGlcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg1MCwgMHg0YiwgMHgwNywgMHgwOF0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQS1pJUCBtdWx0aXZvbHVtZSBhcmNoaXZlIGZpbGUgLSB6aXAgZmlsZSBmb3JtYXQgYW5kIG11bHRpcGxlIGZvcm1hdHMgYmFzZWQgb24gaXRcIixcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJhYXJcIixcbiAgICAgICAgICAgICAgICBcImFwa1wiLFxuICAgICAgICAgICAgICAgIFwiZG9jeFwiLFxuICAgICAgICAgICAgICAgIFwiZXB1YlwiLFxuICAgICAgICAgICAgICAgIFwiaXBhXCIsXG4gICAgICAgICAgICAgICAgXCJqYXJcIixcbiAgICAgICAgICAgICAgICBcImttelwiLFxuICAgICAgICAgICAgICAgIFwibWFmZlwiLFxuICAgICAgICAgICAgICAgIFwibXNpeFwiLFxuICAgICAgICAgICAgICAgIFwib2RwXCIsXG4gICAgICAgICAgICAgICAgXCJvZHNcIixcbiAgICAgICAgICAgICAgICBcIm9kdFwiLFxuICAgICAgICAgICAgICAgIFwicGszXCIsXG4gICAgICAgICAgICAgICAgXCJwazRcIixcbiAgICAgICAgICAgICAgICBcInBwdHhcIixcbiAgICAgICAgICAgICAgICBcInVzZHpcIixcbiAgICAgICAgICAgICAgICBcInZzZHhcIixcbiAgICAgICAgICAgICAgICBcInhsc3hcIixcbiAgICAgICAgICAgICAgICBcInhwaVwiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuT3RoZXJUeXBlcyA9IHZvaWQgMDtcbi8qKlxuICogT3RoZXIgZmlsZXMgaW5mb3JtYXRpb24gd2l0aCB0aGVpciB1bmlxdWUgc2lnbmF0dXJlc1xuICovXG5jbGFzcyBPdGhlclR5cGVzIHtcbn1cbmV4cG9ydHMuT3RoZXJUeXBlcyA9IE90aGVyVHlwZXM7XG5PdGhlclR5cGVzLkJMRU5EID0ge1xuICAgIGV4dGVuc2lvbjogXCJibGVuZFwiLFxuICAgIG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL3gtYmxlbmRlclwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkJsZW5kZXIgRmlsZSBGb3JtYXRcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg0MiwgMHg0YywgMHg0NSwgMHg0ZSwgMHg0NCwgMHg0NSwgMHg1Ml0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5PdGhlclR5cGVzLkRPQyA9IHtcbiAgICBleHRlbnNpb246IFwiZG9jXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24vbXN3b3JkXCIsXG4gICAgZGVzY3JpcHRpb246IFwiT2xkIE1pY3Jvc29mdCBXb3JkIGRvY3VtZW50c1wiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweGQwLCAweGNmLCAweDExLCAweGUwLCAweGExLCAweGIxLCAweDFhLCAweGUxXSxcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJ4bHNcIixcbiAgICAgICAgICAgICAgICBcInBwdFwiLFxuICAgICAgICAgICAgICAgIFwibXNpXCIsXG4gICAgICAgICAgICAgICAgXCJtc2dcIixcbiAgICAgICAgICAgICAgICBcImRvdFwiLFxuICAgICAgICAgICAgICAgIFwicHBzXCIsXG4gICAgICAgICAgICAgICAgXCJ4bGFcIixcbiAgICAgICAgICAgICAgICBcIndpelwiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkFuIE9iamVjdCBMaW5raW5nIGFuZCBFbWJlZGRpbmcgKE9MRSkgQ29tcG91bmQgRmlsZSAoQ0YpIChpLmUuLCBPTEVDRikgZmlsZSBmb3JtYXQsIGtub3duIGFzIENvbXBvdW5kIEJpbmFyeSBGaWxlIGZvcm1hdCBieSBNaWNyb3NvZnQsIHVzZWQgYnkgTWljcm9zb2Z0IE9mZmljZSA5Ny0yMDAzIGFwcGxpY2F0aW9uc1wiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZGIsIDB4YTUsIDB4MmQsIDB4MDBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTWljcm9zb2Z0IFdvcmQgMi4wIGZpbGUgZm9ybWF0XCIsXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5PdGhlclR5cGVzLkVMRiA9IHtcbiAgICBleHRlbnNpb246IFwiZWxmXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24veC1leGVjdXRhYmxlXCIsXG4gICAgZGVzY3JpcHRpb246IFwiRXhlY3V0YWJsZSBhbmQgTGlua2luZyBGb3JtYXQgZXhlY3V0YWJsZSBmaWxlIChMaW51eC9Vbml4KVwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDdmLCAweDQ1LCAweDRjLCAweDQ2XSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbk90aGVyVHlwZXMuRVhFID0ge1xuICAgIGV4dGVuc2lvbjogXCJleGVcIixcbiAgICBtaW1lVHlwZTogXCJhcHBsaWNhdGlvbi94LW1zZG93bmxvYWRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJXaW5kb3dzL0RPUyBleGVjdXRhYmxlIGZpbGUgYW5kIGl0cyBkZXNjZW5kYW50c1wiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDRkLCAweDVhXSxcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXG4gICAgICAgICAgICAgICAgXCJhY21cIixcbiAgICAgICAgICAgICAgICBcImF4XCIsXG4gICAgICAgICAgICAgICAgXCJjcGxcIixcbiAgICAgICAgICAgICAgICBcImNvbVwiLFxuICAgICAgICAgICAgICAgIFwiZGxsXCIsXG4gICAgICAgICAgICAgICAgXCJkcnZcIixcbiAgICAgICAgICAgICAgICBcImVmaVwiLFxuICAgICAgICAgICAgICAgIFwiZm9uXCIsXG4gICAgICAgICAgICAgICAgXCJpZWNcIixcbiAgICAgICAgICAgICAgICBcImltZVwiLFxuICAgICAgICAgICAgICAgIFwibXVpXCIsXG4gICAgICAgICAgICAgICAgXCJvY3hcIixcbiAgICAgICAgICAgICAgICBcIm9sYlwiLFxuICAgICAgICAgICAgICAgIFwicGlmXCIsXG4gICAgICAgICAgICAgICAgXCJxdHNcIixcbiAgICAgICAgICAgICAgICBcInF0eFwiLFxuICAgICAgICAgICAgICAgIFwicnNcIixcbiAgICAgICAgICAgICAgICBcInN5c1wiLFxuICAgICAgICAgICAgICAgIFwic2NyXCIsXG4gICAgICAgICAgICAgICAgXCJ0c3BcIixcbiAgICAgICAgICAgICAgICBcInZieFwiLFxuICAgICAgICAgICAgICAgIFwidnhkXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NWEsIDB4NGRdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRE9TIFpNIGV4ZWN1dGFibGUgKHJhcmUpXCIsXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5PdGhlclR5cGVzLklOREQgPSB7XG4gICAgZXh0ZW5zaW9uOiBcImluZGRcIixcbiAgICBtaW1lVHlwZTogXCJhcHBsaWNhdGlvbi94LWluZGVzaWduXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQWRvYmUgSW5EZXNpZ24gZG9jdW1lbnRcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbXG4gICAgICAgICAgICAgICAgMHgwNiwgMHgwNiwgMHhlZCwgMHhmNSwgMHhkOCwgMHgxZCwgMHg0NiwgMHhlNSwgMHhiZCwgMHgzMSwgMHhlZixcbiAgICAgICAgICAgICAgICAweGU3LCAweGZlLCAweDc0LCAweGI3LCAweDFkLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJpbmR0XCJdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuT3RoZXJUeXBlcy5NQUNITyA9IHtcbiAgICBleHRlbnNpb246IFwibWFjaG9cIixcbiAgICBtaW1lVHlwZTogXCJhcHBsaWNhdGlvbi94LW1hY2gtYmluYXJ5XCIsXG4gICAgZGVzY3JpcHRpb246IFwiQXBwbGUgT1MgWCBBQkkgTWFjaC1PIGJpbmFyeSBmaWxlXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZmUsIDB4ZWQsIDB4ZmEsIDB4Y2VdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiMzItYml0XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHhjZSwgMHhmYSwgMHhlZCwgMHhmZV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCIzMi1iaXQsIHdoZXJlIHRhcmdldCBzeXN0ZW0gaGFzIHJldmVyc2UgYnl0ZSBvcmRlcmluZyBmcm9tIGhvc3QgcnVubmluZyBjb21waWxlclwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZmUsIDB4ZWQsIDB4ZmEsIDB4Y2ZdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiNjQtYml0XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHhjZiwgMHhmYSwgMHhlZCwgMHhmZV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCI2NC1iaXQsIHdoZXJlIHRhcmdldCBzeXN0ZW0gaGFzIHJldmVyc2UgYnl0ZSBvcmRlcmluZyBmcm9tIGhvc3QgcnVubmluZyBjb21waWxlclwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4Y2EsIDB4ZmUsIDB4YmEsIDB4YmVdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTWFjaC1PIEZhdCBCaW5hcnlcIixcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbk90aGVyVHlwZXMuUERGID0ge1xuICAgIGV4dGVuc2lvbjogXCJwZGZcIixcbiAgICBtaW1lVHlwZTogXCJhcHBsaWNhdGlvbi9wZGZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQb3J0YWJsZSBEb2N1bWVudCBGb3JtYXRcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHgyNSwgMHg1MCwgMHg0NCwgMHg0NiwgMHgyZF0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5PdGhlclR5cGVzLk9SQyA9IHtcbiAgICBleHRlbnNpb246IFwib3JjXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24veC1vcmNcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBcGFjaGUgT1JDIChPcHRpbWl6ZWQgUm93IENvbHVtbmFyKSBmaWxlIGZvcm1hdCBmb3IgY29sdW1uYXIgc3RvcmFnZVwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDRmLCAweDUyLCAweDQzXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbk90aGVyVHlwZXMuUEFSUVVFVCA9IHtcbiAgICBleHRlbnNpb246IFwicGFycXVldFwiLFxuICAgIG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL3ZuZC5hcGFjaGUucGFycXVldFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkFwYWNoZSBQYXJxdWV0IGZpbGUgZm9ybWF0IGZvciBjb2x1bW5hciBzdG9yYWdlXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NTAsIDB4NDEsIDB4NTIsIDB4MzFdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuT3RoZXJUeXBlcy5QUyA9IHtcbiAgICBleHRlbnNpb246IFwicHNcIixcbiAgICBtaW1lVHlwZTogXCJhcHBsaWNhdGlvbi9wb3N0c2NyaXB0XCIsXG4gICAgZGVzY3JpcHRpb246IFwiUG9zdFNjcmlwdCBkb2N1bWVudFwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDI1LCAweDIxLCAweDUwLCAweDUzXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbk90aGVyVHlwZXMuUlRGID0ge1xuICAgIGV4dGVuc2lvbjogXCJydGZcIixcbiAgICBtaW1lVHlwZTogXCJhcHBsaWNhdGlvbi9ydGZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJSaWNoIFRleHQgRm9ybWF0IHdvcmQgcHJvY2Vzc2luZyBmaWxlXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4N2IsIDB4NWMsIDB4NzIsIDB4NzQsIDB4NjYsIDB4MzFdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuT3RoZXJUeXBlcy5TUUxJVEUgPSB7XG4gICAgZXh0ZW5zaW9uOiBcInNxbGl0ZVwiLFxuICAgIG1pbWVUeXBlOiBcImFwcGxpY2F0aW9uL3gtc3FsaXRlM1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlNRTGl0ZSBkYXRhYmFzZSBmaWxlXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogW1xuICAgICAgICAgICAgICAgIDB4NTMsIDB4NTEsIDB4NGMsIDB4NjksIDB4NzQsIDB4NjUsIDB4MjAsIDB4NjYsIDB4NmYsIDB4NzIsIDB4NmQsXG4gICAgICAgICAgICAgICAgMHg2MSwgMHg3NCwgMHgyMCwgMHgzMywgMHgwMCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5PdGhlclR5cGVzLlNUTCA9IHtcbiAgICBleHRlbnNpb246IFwic3RsXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24vc2xhXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQVNDSUkgU1RMIChTVGVyZW9MaXRob2dyYXBoeSkgZmlsZSBmb3IgM0QgcHJpbnRpbmdcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg3MywgMHg2ZiwgMHg2YywgMHg2OSwgMHg2NF0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5PdGhlclR5cGVzLlRURiA9IHtcbiAgICBleHRlbnNpb246IFwidHRmXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24veC1mb250LXR0ZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlRydWVUeXBlIGZvbnQgZmlsZVwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDc0LCAweDcyLCAweDc1LCAweDY1LCAweDAwXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDAwLCAweDAxLCAweDAwLCAweDAwLCAweDAwXSxcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJ0dGUsIGRmb250XCJdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuT3RoZXJUeXBlcy5QQ0FQID0ge1xuICAgIGV4dGVuc2lvbjogXCJwY2FwXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24vdm5kLnRjcGR1bXAucGNhcFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkxpYnBjYXAgRmlsZSBGb3JtYXRcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHhkNCwgMHhjMywgMHhiMiwgMHhhMV0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg0ZCwgMHgzYywgMHhiMiwgMHhhMV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJOYW5vc2Vjb25kIHJlc29sdXRpb25cIixcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuSW1hZ2VUeXBlcyA9IHZvaWQgMDtcbi8qKlxuICogSW1hZ2UgZmlsZXMgaW5mb3JtYXRpb24gd2l0aCB0aGVpciB1bmlxdWUgc2lnbmF0dXJlc1xuICovXG5jbGFzcyBJbWFnZVR5cGVzIHtcbn1cbmV4cG9ydHMuSW1hZ2VUeXBlcyA9IEltYWdlVHlwZXM7XG5JbWFnZVR5cGVzLkFWSUYgPSB7XG4gICAgZXh0ZW5zaW9uOiBcImF2aWZcIixcbiAgICBtaW1lVHlwZTogXCJpbWFnZS9hdmlmXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQWxsaWFuY2UgZm9yIE9wZW4gTWVkaWEgKEFPTWVkaWEpIFZpZGVvIDEgKEFWMSkgSW1hZ2UgRmlsZVwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDAwLCAweDAwLCAweDAwXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkltYWdlVHlwZXMuQk1QID0ge1xuICAgIGV4dGVuc2lvbjogXCJibXBcIixcbiAgICBtaW1lVHlwZTogXCJpbWFnZS9ibXBcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIGJpdG1hcCBmb3JtYXQgdXNlZCBtb3N0bHkgaW4gV2luZG93c1wiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDQyLCAweDRkXSxcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJkaWJcIl0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5JbWFnZVR5cGVzLkJQRyA9IHtcbiAgICBleHRlbnNpb246IFwiYnBnXCIsXG4gICAgbWltZVR5cGU6IFwiaW1hZ2UvYnBnXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQmV0dGVyIFBvcnRhYmxlIEdyYXBoaWNzIGltYWdlIGZvcm1hdFwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDQyLCAweDUwLCAweDQ3LCAweGZiXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkltYWdlVHlwZXMuQ1IyID0ge1xuICAgIGV4dGVuc2lvbjogXCJjcjJcIixcbiAgICBtaW1lVHlwZTogXCJpbWFnZS94LWNhbm9uLWNyMlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkNhbm9uIGRpZ2l0YWwgY2FtZXJhIFJBVyBmaWxlXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NDksIDB4NDksIDB4MmEsIDB4MDAsIDB4MTAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4NDMsIDB4NTJdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuSW1hZ2VUeXBlcy5FWFIgPSB7XG4gICAgZXh0ZW5zaW9uOiBcImV4clwiLFxuICAgIG1pbWVUeXBlOiBcImltYWdlL3gtZXhyXCIsXG4gICAgZGVzY3JpcHRpb246IFwiT3BlbkVYUiBiaXRtYXAgaW1hZ2UgZm9ybWF0XCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NzYsIDB4MmYsIDB4MzEsIDB4MDFdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuSW1hZ2VUeXBlcy5HSUYgPSB7XG4gICAgZXh0ZW5zaW9uOiBcImdpZlwiLFxuICAgIG1pbWVUeXBlOiBcImltYWdlL2dpZlwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkltYWdlIGZpbGUgZW5jb2RlZCBpbiB0aGUgR3JhcGhpY3MgSW50ZXJjaGFuZ2UgRm9ybWF0IChHSUYpXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NDcsIDB4NDksIDB4NDYsIDB4MzgsIDB4MzcsIDB4NjFdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NDcsIDB4NDksIDB4NDYsIDB4MzgsIDB4MzksIDB4NjFdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuSW1hZ2VUeXBlcy5IRUlDID0ge1xuICAgIGV4dGVuc2lvbjogXCJoZWljXCIsXG4gICAgbWltZVR5cGU6IFwiaW1hZ2UvaGVpY1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgdmFyaWFudCBvZiB0aGUgSEVJRiAoSGlnaCBFZmZpY2llbmN5IEltYWdlIEZvcm1hdCkgdGhhdCBzdG9yZSBpbWFnZXMgb24gdGhlIGxhdGVzdCBBcHBsZSBkZXZpY2VzLlwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDY2LCAweDc0LCAweDc5LCAweDcwLCAweDY4LCAweDY1LCAweDY5LCAweDYzXSxcbiAgICAgICAgICAgIG9mZnNldDogNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDY2LCAweDc0LCAweDc5LCAweDcwLCAweDZkXSxcbiAgICAgICAgICAgIG9mZnNldDogNCxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkltYWdlVHlwZXMuSUNPID0ge1xuICAgIGV4dGVuc2lvbjogXCJpY29cIixcbiAgICBtaW1lVHlwZTogXCJpbWFnZS94LWljb25cIixcbiAgICBkZXNjcmlwdGlvbjogXCJDb21wdXRlciBpY29uIGVuY29kZWQgaW4gSUNPIGZpbGUgZm9ybWF0XCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4MDAsIDB4MDAsIDB4MDEsIDB4MDBdLFxuICAgICAgICAgICAgY29tcGF0aWJsZUV4dGVuc2lvbnM6IFtcInNwbFwiXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkltYWdlVHlwZXMuSlBFRyA9IHtcbiAgICBleHRlbnNpb246IFwianBlZ1wiLFxuICAgIG1pbWVUeXBlOiBcImltYWdlL2pwZWdcIixcbiAgICBkZXNjcmlwdGlvbjogXCJKUEVHIChKb2ludCBQaG90b2dyYXBoaWMgRXhwZXJ0cyBHcm91cCkgaXMgYSB3aWRlbHkgdXNlZCBsb3NzeSBpbWFnZSBjb21wcmVzc2lvbiBmb3JtYXQuXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZmYsIDB4ZDgsIDB4ZmYsIDB4ZTEsIDB4NDUsIDB4NzgsIDB4NjksIDB4NjYsIDB4MDBdLFxuICAgICAgICAgICAgc2tpcHBlZEJ5dGVzOiBbNCwgNV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJEaWdpdGFsIGNhbWVyYSBKUEcgdXNpbmcgRXhjaGFuZ2VhYmxlIEltYWdlIEZpbGUgRm9ybWF0IChFWElGKVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZmYsIDB4ZDgsIDB4ZmYsIDB4ZTgsIDB4NTMsIDB4NTAsIDB4NDksIDB4NDYsIDB4NDYsIDB4MDBdLFxuICAgICAgICAgICAgc2tpcHBlZEJ5dGVzOiBbNCwgNV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJTdGlsbCBQaWN0dXJlIEludGVyY2hhbmdlIEZpbGUgRm9ybWF0IChTUElGRilcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFtcbiAgICAgICAgICAgICAgICAweGZmLCAweGQ4LCAweGZmLCAweGUwLCAweDAwLCAweDEwLCAweDRhLCAweDQ2LCAweDQ5LCAweDQ2LCAweDAwLFxuICAgICAgICAgICAgICAgIDB4MDAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSlBFRyByYXcgb3IgaW4gdGhlIEpGSUYgb3IgRXhpZiBmaWxlIGZvcm1hdFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZmYsIDB4ZDgsIDB4ZmYsIDB4ZWVdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSlBFRyByYXcgb3IgaW4gdGhlIEpGSUYgb3IgRXhpZiBmaWxlIGZvcm1hdFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4ZmYsIDB4ZDgsIDB4ZmYsIDB4ZTEsIDB4NDUsIDB4NzgsIDB4NjksIDB4NjYsIDB4MDAsIDB4MDBdLFxuICAgICAgICAgICAgc2tpcHBlZEJ5dGVzOiBbNCwgNV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJKUEVHIHJhdyBvciBpbiB0aGUgSkZJRiBvciBFeGlmIGZpbGUgZm9ybWF0XCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHhmZiwgMHhkOCwgMHhmZiwgMHhlMCwgMHg0YSwgMHg0NiwgMHg0OSwgMHg0NiwgMHgwMF0sXG4gICAgICAgICAgICBza2lwcGVkQnl0ZXM6IFs0LCA1XSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkpQRUcvSkZJRiBncmFwaGljcyBmaWxlXCIsXG4gICAgICAgICAgICBjb21wYXRpYmxlRXh0ZW5zaW9uczogW1wiamZpZlwiLCBcImpwZVwiXSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweGZmLCAweGQ4LCAweGZmLCAweGUwXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkpQRUcgcmF3IG9yIGluIHRoZSBKRklGIG9yIEV4aWYgZmlsZSBmb3JtYXRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweGZmLCAweGQ4XSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIkdlbmVyaWMgSlBFR2ltYWdlIGZpbGVcIixcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJqcGVcIl0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5JbWFnZVR5cGVzLlBCTSA9IHtcbiAgICBleHRlbnNpb246IFwicGJtXCIsXG4gICAgbWltZVR5cGU6IFwiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXBcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQQk0gKFBvcnRhYmxlIEJpdG1hcCkgaXMgYSBzaW1wbGUgbW9ub2Nocm9tZSBiaXRtYXAgaW1hZ2UgZm9ybWF0IHRoYXQgdXNlcyBwbGFpbiB0ZXh0IEFTQ0lJIGNoYXJhY3RlcnMgdG8gcmVwcmVzZW50IGJpbmFyeSBpbWFnZSBkYXRhXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NTAsIDB4MzEsIDB4MGFdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUG9ydGFibGUgYml0bWFwIEFTQ0lJXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg1MCwgMHgzNCwgMHgwYV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQb3J0YWJsZSBiaXRtYXAgYmluYXJ5XCIsXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5JbWFnZVR5cGVzLlBHTSA9IHtcbiAgICBleHRlbnNpb246IFwicGdtXCIsXG4gICAgbWltZVR5cGU6IFwiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFwXCIsXG4gICAgZGVzY3JpcHRpb246IFwiUEdNIChQb3J0YWJsZSBHcmF5bWFwKSBpcyBhIHNpbXBsZSBncmF5c2NhbGUgaW1hZ2UgZm9ybWF0IHRoYXQgdXNlcyBBU0NJSSB0ZXh0IGNoYXJhY3RlcnMgdG8gcmVwcmVzZW50IGJpbmFyeSBpbWFnZSBkYXRhLlwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDUwLCAweDMyLCAweDBhXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIlBvcnRhYmxlIEdyYXkgTWFwIEFTQ0lJXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg1MCwgMHgzNSwgMHgwYV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQb3J0YWJsZSBHcmF5IE1hcCBiaW5hcnlcIixcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkltYWdlVHlwZXMuUE5HID0ge1xuICAgIGV4dGVuc2lvbjogXCJwbmdcIixcbiAgICBtaW1lVHlwZTogXCJpbWFnZS9wbmdcIixcbiAgICBkZXNjcmlwdGlvbjogXCJQTkcgKFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MpIGlzIGEgbG9zc2xlc3MgaW1hZ2UgY29tcHJlc3Npb24gZm9ybWF0IHRoYXQgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGNvbG9yIGRlcHRocyBhbmQgdHJhbnNwYXJlbmN5IGFuZCBpcyB3aWRlbHkgdXNlZCBmb3IgaGlnaC1xdWFsaXR5IGdyYXBoaWNzLlwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDg5LCAweDUwLCAweDRlLCAweDQ3LCAweDBkLCAweDBhLCAweDFhLCAweDBhXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcbkltYWdlVHlwZXMuUFBNID0ge1xuICAgIGV4dGVuc2lvbjogXCJwcG1cIixcbiAgICBtaW1lVHlwZTogXCJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBQTSAoUG9ydGFibGUgUGl4bWFwKSBpcyBhIHNpbXBsZSBjb2xvciBpbWFnZSBmb3JtYXQgaW4gdGhlIFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MgKFBORykgc3VpdGUuXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NTAsIDB4MzMsIDB4MGFdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiUG9ydGFibGUgUGl4bWFwIEFTQ0lJXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg1MCwgMHgzNiwgMHgwYV0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJQb3J0YWJsZSBQaXhtYXAgYmluYXJ5XCIsXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5JbWFnZVR5cGVzLlBTRCA9IHtcbiAgICBleHRlbnNpb246IFwicHNkXCIsXG4gICAgbWltZVR5cGU6IFwiaW1hZ2Uvdm5kLmFkb2JlLnBob3Rvc2hvcFwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIlBTRCAoUGhvdG9zaG9wIERvY3VtZW50KSBpcyBhbiBBZG9iZSBQaG90b3Nob3AgaW1hZ2UgZmlsZSBmb3JtYXRcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHgzOCwgMHg0MiwgMHg1MCwgMHg1M10sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5JbWFnZVR5cGVzLldFQlAgPSB7XG4gICAgZXh0ZW5zaW9uOiBcIndlYnBcIixcbiAgICBtaW1lVHlwZTogXCJpbWFnZS93ZWJwXCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBtb2Rlcm4gaW1hZ2UgZm9ybWF0IHRoYXQgcHJvdmlkZXMgc3VwZXJpb3IgbG9zc2xlc3MgYW5kIGxvc3N5IGNvbXByZXNzaW9uIGZvciBpbWFnZXMgb24gdGhlIHdlYlwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDUyLCAweDQ5LCAweDQ2LCAweDQ2LCAweDU3LCAweDQ1LCAweDQyLCAweDUwXSxcbiAgICAgICAgICAgIHNraXBwZWRCeXRlczogWzQsIDUsIDYsIDddLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5WaWRlb1R5cGVzID0gdm9pZCAwO1xuLyoqXG4gKiBWaWRlbyBmaWxlcyBpbmZvcm1hdGlvbiB3aXRoIHRoZWlyIHVuaXF1ZSBzaWduYXR1cmVzXG4gKi9cbmNsYXNzIFZpZGVvVHlwZXMge1xufVxuZXhwb3J0cy5WaWRlb1R5cGVzID0gVmlkZW9UeXBlcztcblZpZGVvVHlwZXMuQVZJID0ge1xuICAgIGV4dGVuc2lvbjogXCJhdmlcIixcbiAgICBtaW1lVHlwZTogXCJ2aWRlby94LW1zdmlkZW9cIixcbiAgICBkZXNjcmlwdGlvbjogXCJBdWRpbyBWaWRlbyBJbnRlcmxlYXZlIHZpZGVvIGZvcm1hdFwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFtcbiAgICAgICAgICAgICAgICAweDUyLCAweDQ5LCAweDQ2LCAweDQ2LCAweDQxLCAweDU2LCAweDQ5LCAweDIwLCAweDRjLCAweDQ5LCAweDUzLFxuICAgICAgICAgICAgICAgIDB4NTQsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgc2tpcHBlZEJ5dGVzOiBbNCwgNSwgNiwgN10sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5WaWRlb1R5cGVzLkZMViA9IHtcbiAgICBleHRlbnNpb246IFwiZmx2XCIsXG4gICAgbWltZVR5cGU6IFwidmlkZW8veC1mbHZcIixcbiAgICBkZXNjcmlwdGlvbjogXCJGbGFzaCBWaWRlbyBmaWxlXCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NDYsIDB4NGMsIDB4NTYsIDB4MDFdLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NjYsIDB4NzQsIDB4NzksIDB4NzAsIDB4NGQsIDB4MzQsIDB4NTYsIDB4MjBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSVNPIE1lZGlhLCBNUEVHIHY0IHN5c3RlbSwgb3IgaVR1bmVzIEFWQy1MQyBmaWxlXCIsXG4gICAgICAgICAgICBvZmZzZXQ6IDQsXG4gICAgICAgICAgICBjb21wYXRpYmxlRXh0ZW5zaW9uczogW1wibXA0XCIsIFwibTR2XCJdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuVmlkZW9UeXBlcy5NNFYgPSB7XG4gICAgZXh0ZW5zaW9uOiBcIm00dlwiLFxuICAgIG1pbWVUeXBlOiBcInZpZGVvL3gtbTR2XCIsXG4gICAgZGVzY3JpcHRpb246IFwiQXBwbGUncyB2aWRlbyBjb250YWluZXIgZm9ybWF0LCB2ZXJ5IHNpbWlsYXIgdG8gTVA0XCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NjYsIDB4NzQsIDB4NzksIDB4NzAsIDB4NmQsIDB4NzAsIDB4MzQsIDB4MzJdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTVBFRy00IHZpZGVvIHwgUXVpY2tUaW1lIGZpbGVcIixcbiAgICAgICAgICAgIG9mZnNldDogNCxcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJtcDRcIl0sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg2NiwgMHg3NCwgMHg3OSwgMHg3MCwgMHg0ZCwgMHgzNCwgMHg1NiwgMHgyMF0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJJU08gTWVkaWEsIE1QRUcgdjQgc3lzdGVtLCBvciBpVHVuZXMgQVZDLUxDIGZpbGVcIixcbiAgICAgICAgICAgIG9mZnNldDogNCxcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJtcDRcIiwgXCJmbHZcIl0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5WaWRlb1R5cGVzLk1LViA9IHtcbiAgICBleHRlbnNpb246IFwibWt2XCIsXG4gICAgbWltZVR5cGU6IFwidmlkZW8veC1tYXRyb3NrYVwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk1LViAoTWF0cm9za2EgVmlkZW8pIGlzIGEgZmxleGlibGUsIG9wZW4tc291cmNlIG1lZGlhIGNvbnRhaW5lciBmb3JtYXQgdGhhdCBzdXBwb3J0cyBtdWx0aXBsZSBhdWRpbywgdmlkZW8sIGFuZCBzdWJ0aXRsZSBzdHJlYW1zIGluIGEgc2luZ2xlIGZpbGVcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHgxYSwgMHg0NSwgMHhkZiwgMHhhM10sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFQk1MIGlkZW50aWZpZXJcIixcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJ3ZWJtXCIsIFwibWthXCIsIFwibWtzXCIsIFwibWszZFwiXSxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcblZpZGVvVHlwZXMuTU9WID0ge1xuICAgIGV4dGVuc2lvbjogXCJtb3ZcIixcbiAgICBtaW1lVHlwZTogXCJ2aWRlby9xdWlja3RpbWVcIixcbiAgICBkZXNjcmlwdGlvbjogXCJRdWlja1RpbWUgbW92aWUgZmlsZVwiLFxuICAgIHNpZ25hdHVyZXM6IFtcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDY2LCAweDc0LCAweDc5LCAweDcwLCAweDcxLCAweDc0LCAweDIwLCAweDIwXSxcbiAgICAgICAgICAgIG9mZnNldDogNCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDZkLCAweDZmLCAweDZmLCAweDc2XSxcbiAgICAgICAgICAgIG9mZnNldDogNCxcbiAgICAgICAgfSxcbiAgICBdLFxufTtcblZpZGVvVHlwZXMuTVA0ID0ge1xuICAgIGV4dGVuc2lvbjogXCJtcDRcIixcbiAgICBtaW1lVHlwZTogXCJ2aWRlby9tcDRcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIG11bHRpbWVkaWEgY29udGFpbmVyIGZvcm1hdCB3aWRlbHkgdXNlZCBmb3Igc3RvcmluZyBhdWRpbywgdmlkZW8sIGFuZCBvdGhlciBkYXRhLCBhbmQgaXMga25vd24gZm9yIGl0cyBoaWdoIGNvbXByZXNzaW9uIGVmZmljaWVuY3kgYW5kIGNvbXBhdGliaWxpdHkgd2l0aCBtYW55IGRldmljZXNcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHg2NiwgMHg3NCwgMHg3OSwgMHg3MCwgMHg0ZCwgMHg1MywgMHg0ZSwgMHg1Nl0sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJNUEVHLTQgdmlkZW8gZmlsZVwiLFxuICAgICAgICAgICAgb2Zmc2V0OiA0LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NjYsIDB4NzQsIDB4NzksIDB4NzAsIDB4NjksIDB4NzMsIDB4NmYsIDB4NmRdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSVNPIEJhc2UgTWVkaWEgZmlsZSAoTVBFRy00KSB2MVwiLFxuICAgICAgICAgICAgb2Zmc2V0OiA0LFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NjYsIDB4NzQsIDB4NzksIDB4NzAsIDB4NGQsIDB4MzQsIDB4NTYsIDB4MjBdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiSVNPIE1lZGlhLCBNUEVHIHY0IHN5c3RlbSwgb3IgaVR1bmVzIEFWQy1MQyBmaWxlXCIsXG4gICAgICAgICAgICBvZmZzZXQ6IDQsXG4gICAgICAgICAgICBjb21wYXRpYmxlRXh0ZW5zaW9uczogW1wibTR2XCIsIFwiZmx2XCJdLFxuICAgICAgICB9LFxuICAgIF0sXG59O1xuVmlkZW9UeXBlcy5PR0cgPSB7XG4gICAgZXh0ZW5zaW9uOiBcIm9nZ1wiLFxuICAgIG1pbWVUeXBlOiBcInZpZGVvL29nZ1wiLFxuICAgIGRlc2NyaXB0aW9uOiBcIk9nZyBWb3JiaXMgQ29kZWMgY29tcHJlc3NlZCBNdWx0aW1lZGlhIGZpbGVcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbXG4gICAgICAgICAgICAgICAgMHg0ZiwgMHg2NywgMHg2NywgMHg1MywgMHgwMCwgMHgwMiwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCxcbiAgICAgICAgICAgICAgICAweDAwLCAweDAwLCAweDAwLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJvZ2FcIiwgXCJvZ3ZcIiwgXCJvZ3hcIl0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5WaWRlb1R5cGVzLlNXRiA9IHtcbiAgICBleHRlbnNpb246IFwic3dmXCIsXG4gICAgbWltZVR5cGU6IFwiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2hcIixcbiAgICBkZXNjcmlwdGlvbjogXCJTV0YgKFNob2Nrd2F2ZSBGbGFzaCkgaXMgYSBmaWxlIGZvcm1hdCBmb3IgbXVsdGltZWRpYSwgdmVjdG9yIGdyYXBoaWNzLCBhbmQgQWN0aW9uU2NyaXB0LCB1c2VkIGZvciBjcmVhdGluZyBhbmQgZGVsaXZlcmluZyBhbmltYXRpb25zLCBnYW1lcywgYW5kIG90aGVyIGludGVyYWN0aXZlIHdlYi1iYXNlZCBjb250ZW50XCIsXG4gICAgc2lnbmF0dXJlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NDMsIDB4NTcsIDB4NTNdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTWFjcm9tZWRpYSBTaG9ja3dhdmUgRmxhc2ggcGxheWVyIGZpbGUgKHpsaWIgY29tcHJlc3NlZCwgU1dGIDYgYW5kIGxhdGVyKVwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBzZXF1ZW5jZTogWzB4NDYsIDB4NTcsIDB4NTNdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiTWFjcm9tZWRpYSBTaG9ja3dhdmUgRmxhc2ggcGxheWVyIGZpbGUgKHVuY29tcHJlc3NlZClcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgc2VxdWVuY2U6IFsweDVhLCAweDU3LCAweDUzXSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcIk1hY3JvbWVkaWEgU2hvY2t3YXZlIEZsYXNoIHBsYXllciBmaWxlICh1bmNvbXByZXNzZWQpXCIsXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG5WaWRlb1R5cGVzLldFQk0gPSB7XG4gICAgZXh0ZW5zaW9uOiBcIndlYm1cIixcbiAgICBtaW1lVHlwZTogXCJ2aWRlby93ZWJtXCIsXG4gICAgZGVzY3JpcHRpb246IFwiV2ViTSBpcyBhIHJveWFsdHktZnJlZSwgb3Blbi1zb3VyY2UgbWVkaWEgZmlsZSBmb3JtYXQgb3B0aW1pemVkIGZvciB3ZWIgZGVsaXZlcnksIHVzaW5nIGVmZmljaWVudCBWUDggdmlkZW8gYW5kIFZvcmJpcyBhdWRpbyBjb2RlY3NcIixcbiAgICBzaWduYXR1cmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHNlcXVlbmNlOiBbMHgxYSwgMHg0NSwgMHhkZiwgMHhhM10sXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJFQk1MIGlkZW50aWZpZXJcIixcbiAgICAgICAgICAgIGNvbXBhdGlibGVFeHRlbnNpb25zOiBbXCJta3ZcIl0sXG4gICAgICAgIH0sXG4gICAgXSxcbn07XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmlzV0FWID0gZXhwb3J0cy5pc01QMyA9IGV4cG9ydHMuaXNNNEEgPSBleHBvcnRzLmlzRkxBQyA9IGV4cG9ydHMuaXNBTVIgPSBleHBvcnRzLmlzQUFDID0gdm9pZCAwO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIi4uL2NvcmVcIik7XG5jb25zdCB1dGlsc18xID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ2FhYycgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKiBAcGFyYW0gb3B0aW9ucyBwYXJhbWV0ZXJzIGZvciBhZGRpdGlvbmFsIGFjdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdhYWMnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQUFDKGZpbGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIGNvbnN0IGlhQWFjID0gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcImFhY1wiKTtcbiAgICBpZiAoIWlhQWFjKSB7XG4gICAgICAgIGlmIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZXhjbHVkZVNpbWlsYXJUeXBlcylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGlzTTRBKGZpbGVDaHVuayk7IC8vIHNpbmNlICdtNGEnIGlzIHZlcnkgc2ltaWxhciB0byAnYWFjJ1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydHMuaXNBQUMgPSBpc0FBQztcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdhbXInIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ2FtcicgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBTVIoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJhbXJcIik7XG59XG5leHBvcnRzLmlzQU1SID0gaXNBTVI7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnZmxhYycgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAnZmxhYycgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGTEFDKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwiZmxhY1wiKTtcbn1cbmV4cG9ydHMuaXNGTEFDID0gaXNGTEFDO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ200YScgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAnbTRhJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc000QShmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcIm00YVwiKTtcbn1cbmV4cG9ydHMuaXNNNEEgPSBpc000QTtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdtcDMnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ21wMycgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNNUDMoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJtcDNcIik7XG59XG5leHBvcnRzLmlzTVAzID0gaXNNUDM7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnd2F2JyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICd3YXYnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzV0FWKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwid2F2XCIpO1xufVxuZXhwb3J0cy5pc1dBViA9IGlzV0FWO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc1pJUCA9IGV4cG9ydHMuaXNSQVIgPSBleHBvcnRzLmlzTFpIID0gZXhwb3J0cy5pczdaID0gdm9pZCAwO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIi4uL2NvcmVcIik7XG5jb25zdCB1dGlsc18xID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJzd6JyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICc3eicgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXM3WihmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcIl83elwiKTtcbn1cbmV4cG9ydHMuaXM3WiA9IGlzN1o7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnbHpoJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdsemgnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTFpIKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwibHpoXCIpO1xufVxuZXhwb3J0cy5pc0xaSCA9IGlzTFpIO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ3JhcicgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAncmFyJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1JBUihmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcInJhclwiKTtcbn1cbmV4cG9ydHMuaXNSQVIgPSBpc1JBUjtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICd6aXAnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICogQHBhcmFtIG9wdGlvbnMgcGFyYW1ldGVycyBmb3IgYWRkaXRpb25hbCBhY3Rpb25zXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAnemlwJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1pJUChmaWxlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlLCAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmNodW5rU2l6ZSkgfHwgNjQpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwiemlwXCIpO1xufVxuZXhwb3J0cy5pc1pJUCA9IGlzWklQO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc1dFQlAgPSBleHBvcnRzLmlzUFNEID0gZXhwb3J0cy5pc1BQTSA9IGV4cG9ydHMuaXNQTkcgPSBleHBvcnRzLmlzUEdNID0gZXhwb3J0cy5pc1BCTSA9IGV4cG9ydHMuaXNKUEVHID0gZXhwb3J0cy5pc0lDTyA9IGV4cG9ydHMuaXNIRUlDID0gZXhwb3J0cy5pc0dJRiA9IGV4cG9ydHMuaXNFWFIgPSBleHBvcnRzLmlzQ1IyID0gZXhwb3J0cy5pc0JQRyA9IGV4cG9ydHMuaXNCTVAgPSBleHBvcnRzLmlzQVZJRiA9IHZvaWQgMDtcbmNvbnN0IGNvcmVfMSA9IHJlcXVpcmUoXCIuLi9jb3JlXCIpO1xuY29uc3QgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdhdmlmJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdhdmlmJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0FWSUYoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgY29uc3QgaXNBVklGID0gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcImF2aWZcIik7XG4gICAgaWYgKCFpc0FWSUYpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBTZWFyY2ggZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgXCJmdHlwYXZpZlwiIGF0IGJ5dGVzIDUtMTJcbiAgICByZXR1cm4gKDAsIHV0aWxzXzEuaXNBdmlmU3RyaW5nSW5jbHVkZWQpKGZpbGVDaHVuayk7XG59XG5leHBvcnRzLmlzQVZJRiA9IGlzQVZJRjtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdibXAnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ2JtcCcgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNCTVAoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJibXBcIik7XG59XG5leHBvcnRzLmlzQk1QID0gaXNCTVA7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnYnBnJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdicGcnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQlBHKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwiYnBnXCIpO1xufVxuZXhwb3J0cy5pc0JQRyA9IGlzQlBHO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ2NyMicgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAnY3IyJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0NSMihmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcImNyMlwiKTtcbn1cbmV4cG9ydHMuaXNDUjIgPSBpc0NSMjtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdleHInIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ2V4cicgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNFWFIoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJleHJcIik7XG59XG5leHBvcnRzLmlzRVhSID0gaXNFWFI7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnZ2lmJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdnaWYnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzR0lGKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwiZ2lmXCIpO1xufVxuZXhwb3J0cy5pc0dJRiA9IGlzR0lGO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ2hlaWMnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ2hlaWMnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzSEVJQyhmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICBjb25zdCBpc0hFSUMgPSBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwiYXZpZlwiKTtcbiAgICBpZiAoIWlzSEVJQylcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIERldGVybWluZSBpZiBhIGZpbGUgY2h1bmsgY29udGFpbnMgYSBIRUlDIGZpbGUgYm94XG4gICAgcmV0dXJuICgwLCB1dGlsc18xLmlzSGVpY1NpZ25hdHVyZUluY2x1ZGVkKShmaWxlQ2h1bmspO1xufVxuZXhwb3J0cy5pc0hFSUMgPSBpc0hFSUM7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnaWNvJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdpY28nIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzSUNPKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwiaWNvXCIpO1xufVxuZXhwb3J0cy5pc0lDTyA9IGlzSUNPO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ2pwZWcnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ2pwZWcnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzSlBFRyhmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcImpwZWdcIik7XG59XG5leHBvcnRzLmlzSlBFRyA9IGlzSlBFRztcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdwYm0nIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ3BibScgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQQk0oZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJwYm1cIik7XG59XG5leHBvcnRzLmlzUEJNID0gaXNQQk07XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAncGdtJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdwZ20nIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUEdNKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwicGdtXCIpO1xufVxuZXhwb3J0cy5pc1BHTSA9IGlzUEdNO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ3BuZycgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAncG5nJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1BORyhmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcInBuZ1wiKTtcbn1cbmV4cG9ydHMuaXNQTkcgPSBpc1BORztcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdwcG0nIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ3BwbScgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQUE0oZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJwcG1cIik7XG59XG5leHBvcnRzLmlzUFBNID0gaXNQUE07XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAncHNkJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdwc2QnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUFNEKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwicHNkXCIpO1xufVxuZXhwb3J0cy5pc1BTRCA9IGlzUFNEO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ3dlYnAnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ3dlYnAnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzV0VCUChmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcIndlYnBcIik7XG59XG5leHBvcnRzLmlzV0VCUCA9IGlzV0VCUDtcbiIsICJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNQQ0FQID0gZXhwb3J0cy5pc0RPQyA9IGV4cG9ydHMuaXNUVEYgPSBleHBvcnRzLmlzU1RMID0gZXhwb3J0cy5pc1NRTElURSA9IGV4cG9ydHMuaXNSVEYgPSBleHBvcnRzLmlzUFMgPSBleHBvcnRzLmlzUERGID0gZXhwb3J0cy5pc1BBUlFVRVQgPSBleHBvcnRzLmlzT1JDID0gZXhwb3J0cy5pc0lOREQgPSBleHBvcnRzLmlzTUFDSE8gPSBleHBvcnRzLmlzRVhFID0gZXhwb3J0cy5pc0VMRiA9IGV4cG9ydHMuaXNCTEVORCA9IHZvaWQgMDtcbmNvbnN0IGNvcmVfMSA9IHJlcXVpcmUoXCIuLi9jb3JlXCIpO1xuY29uc3QgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdibGVuZCcgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAnYmxlbmQnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQkxFTkQoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJibGVuZFwiKTtcbn1cbmV4cG9ydHMuaXNCTEVORCA9IGlzQkxFTkQ7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnZWxmJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdlbGYnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzRUxGKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwiZWxmXCIpO1xufVxuZXhwb3J0cy5pc0VMRiA9IGlzRUxGO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ2V4ZScgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAnZXhlJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0VYRShmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcImV4ZVwiKTtcbn1cbmV4cG9ydHMuaXNFWEUgPSBpc0VYRTtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdtYWNoLW8nIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ21hY2gtbycgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNNQUNITyhmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcIm1hY2hvXCIpO1xufVxuZXhwb3J0cy5pc01BQ0hPID0gaXNNQUNITztcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdpbmRkJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdpbmRkJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0lOREQoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJpbmRkXCIpO1xufVxuZXhwb3J0cy5pc0lOREQgPSBpc0lOREQ7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnb3JjJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdvcmMnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT1JDKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwib3JjXCIpO1xufVxuZXhwb3J0cy5pc09SQyA9IGlzT1JDO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ3BhcnF1ZXQnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ3BhcnF1ZXQnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzUEFSUVVFVChmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcInBhcnF1ZXRcIik7XG59XG5leHBvcnRzLmlzUEFSUVVFVCA9IGlzUEFSUVVFVDtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdwZGYnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ3BkZicgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQREYoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJwZGZcIik7XG59XG5leHBvcnRzLmlzUERGID0gaXNQREY7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAncHMnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ3BzJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1BTKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwicHNcIik7XG59XG5leHBvcnRzLmlzUFMgPSBpc1BTO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ3J0ZicgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAncnRmJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1JURihmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcInJ0ZlwiKTtcbn1cbmV4cG9ydHMuaXNSVEYgPSBpc1JURjtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdzcWxpdGUnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ3NxbGl0ZScgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNTUUxJVEUoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJzcWxpdGVcIik7XG59XG5leHBvcnRzLmlzU1FMSVRFID0gaXNTUUxJVEU7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnc3RsJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdzdGwnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU1RMKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwic3RsXCIpO1xufVxuZXhwb3J0cy5pc1NUTCA9IGlzU1RMO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ3R0ZicgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAndHRmJyBpbiBmaWxlIGNvbnRlbnQsIG90aGVyd2lzZSBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1RURihmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlKTtcbiAgICByZXR1cm4gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcInR0ZlwiKTtcbn1cbmV4cG9ydHMuaXNUVEYgPSBpc1RURjtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdkb2MnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ2RvYycgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNET0MoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJkb2NcIik7XG59XG5leHBvcnRzLmlzRE9DID0gaXNET0M7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAncGNhcCcgZmlsZSBzaWduYXR1cmVcbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSBzaWduYXR1cmUgb2YgdHlwZSAncGNhcCcgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNQQ0FQKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwicGNhcFwiKTtcbn1cbmV4cG9ydHMuaXNQQ0FQID0gaXNQQ0FQO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5pc1dFQk0gPSBleHBvcnRzLmlzU1dGID0gZXhwb3J0cy5pc09HRyA9IGV4cG9ydHMuaXNNUDQgPSBleHBvcnRzLmlzTU9WID0gZXhwb3J0cy5pc01LViA9IGV4cG9ydHMuaXNNNFYgPSBleHBvcnRzLmlzRkxWID0gZXhwb3J0cy5pc0FWSSA9IHZvaWQgMDtcbmNvbnN0IGNvcmVfMSA9IHJlcXVpcmUoXCIuLi9jb3JlXCIpO1xuY29uc3QgdXRpbHNfMSA9IHJlcXVpcmUoXCIuLi91dGlsc1wiKTtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdhdmknIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ2F2aScgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBVkkoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJhdmlcIik7XG59XG5leHBvcnRzLmlzQVZJID0gaXNBVkk7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnZmx2JyBmaWxlIHNpZ25hdHVyZS5cbiAqIFNpbmNlICdmbHYnIGFuZCAnbTR2JyBzaGFyZSB0aGUgc2FtZSBzaWduYXR1cmUgLSBhZGRpdGlvbmFsIGNoZWNrIHJlcXVpcmVkIC0gY2hlY2sgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgXCJmbHZcIiBzdHJpbmcgaW4gdGhlIGZpcnN0IGZldyBieXRlcyBvZiB0aGUgZmlsZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdmbHYnICYgXCJmbHZcIiBzdHJpbmcgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNGTFYoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgY29uc3QgaXNGbHZTaWduYXR1cmUgPSBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwiZmx2XCIpO1xuICAgIGlmICghaXNGbHZTaWduYXR1cmUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBDaGVjayBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSBcImZsdlwiIHN0cmluZ1xuICAgIHJldHVybiAoMCwgdXRpbHNfMS5pc0ZsdlN0cmluZ0luY2x1ZGVkKShmaWxlQ2h1bmspO1xufVxuZXhwb3J0cy5pc0ZMViA9IGlzRkxWO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ200dicgZmlsZSBzaWduYXR1cmUuXG4gKiBTaW5jZSAnZmx2JyBhbmQgJ200dicgc2hhcmUgdGhlIHNhbWUgc2lnbmF0dXJlIC0gYWRkaXRpb25hbCBjaGVjayByZXF1aXJlZCAtIGNoZWNrIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIFwiZnR5cFwiIHN0cmluZyBpbiB0aGUgZmlyc3QgZmV3IGJ5dGVzIG9mIHRoZSBmaWxlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ200dicgJiBcImZ0eXBcIiBzdHJpbmcgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNNNFYoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgY29uc3QgaXNNNHZTaWduYXR1cmUgPSBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwibTR2XCIpO1xuICAgIGlmICghaXNNNHZTaWduYXR1cmUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAvLyBDaGVjayBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSBcImZ0eXBcIiBzdHJpbmdcbiAgICByZXR1cm4gKDAsIHV0aWxzXzEuaXNmdHlwU3RyaW5nSW5jbHVkZWQpKGZpbGVDaHVuayk7XG59XG5leHBvcnRzLmlzTTRWID0gaXNNNFY7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnbWt2JyBmaWxlIHNpZ25hdHVyZS5cbiAqIFNpbmNlICdta3YnIGFuZCAnd2VibScgc2hhcmUgdGhlIHNhbWUgc2lnbmF0dXJlIC0gYWRkaXRpb25hbCBjaGVjayByZXF1aXJlZCAtIHNlYXJjaCBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBcIlNlZ21lbnRcIiBlbGVtZW50IGluIHRoZSBta3YgaGVhZGVyXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ21rdicgJiBcImZ0eXBcIiBzdHJpbmcgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNNS1YoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSwgNjQpOyAvLyBDaGVjayB0aGUgZmlyc3QgNjQgYnl0ZXMgb2YgdGhlIGZpbGVcbiAgICBjb25zdCBpc01rdlNpZ25hdHVyZSA9IGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJta3ZcIik7XG4gICAgaWYgKCFpc01rdlNpZ25hdHVyZSlcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIC8vIFNlYXJjaCBmb3IgdGhlIHByZXNlbmNlIG9mIHRoZSBcIlNlZ21lbnRcIiBlbGVtZW50IGluIHRoZSBta3YgaGVhZGVyXG4gICAgcmV0dXJuICgwLCB1dGlsc18xLmZpbmRNYXRyb3NrYURvY1R5cGVFbGVtZW50cykoZmlsZUNodW5rKSA9PT0gXCJta3ZcIjtcbn1cbmV4cG9ydHMuaXNNS1YgPSBpc01LVjtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdtb3YnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ21vdicgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNNT1YoZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJtb3ZcIik7XG59XG5leHBvcnRzLmlzTU9WID0gaXNNT1Y7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnbXA0JyBmaWxlIHNpZ25hdHVyZS5cbiAqXG4gKiBAcGFyYW0gZmlsZSBGaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBpbiBBcnJheTxudW1iZXI+IC8gQXJyYXlCdWZmZXIgLyBVaW50OEFycmF5XG4gKiBAcGFyYW0gb3B0aW9ucyBwYXJhbWV0ZXJzIGZvciBhZGRpdGlvbmFsIGFjdGlvbnNcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdtcDQnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzTVA0KGZpbGUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIGNvbnN0IGlzTXA0ID0gY29yZV8xLkZpbGVUeXBlcy5jaGVja0J5RmlsZVR5cGUoZmlsZUNodW5rLCBcIm1wNFwiKTtcbiAgICBpZiAoIWlzTXA0KSB7XG4gICAgICAgIGlmIChvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZXhjbHVkZVNpbWlsYXJUeXBlcylcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGlzTTRWKGZpbGVDaHVuayk7IC8vIHNpbmNlICdtNHYnIGlzIHZlcnkgc2ltaWxhciB0byAnbXA0J1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn1cbmV4cG9ydHMuaXNNUDQgPSBpc01QNDtcbi8qKlxuICogRGV0ZXJtaW5lIGlmIGZpbGUgY29udGVudCBjb250YWlucyBhIHZhbGlkICdvZ2cnIGZpbGUgc2lnbmF0dXJlXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ29nZycgaW4gZmlsZSBjb250ZW50LCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNPR0coZmlsZSkge1xuICAgIGNvbnN0IGZpbGVDaHVuayA9ICgwLCB1dGlsc18xLmdldEZpbGVDaHVuaykoZmlsZSk7XG4gICAgcmV0dXJuIGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJvZ2dcIik7XG59XG5leHBvcnRzLmlzT0dHID0gaXNPR0c7XG4vKipcbiAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCAnc3dmJyBmaWxlIHNpZ25hdHVyZVxuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiBmb3VuZCBhIHNpZ25hdHVyZSBvZiB0eXBlICdzd2YnIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU1dGKGZpbGUpIHtcbiAgICBjb25zdCBmaWxlQ2h1bmsgPSAoMCwgdXRpbHNfMS5nZXRGaWxlQ2h1bmspKGZpbGUpO1xuICAgIHJldHVybiBjb3JlXzEuRmlsZVR5cGVzLmNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIFwic3dmXCIpO1xufVxuZXhwb3J0cy5pc1NXRiA9IGlzU1dGO1xuLyoqXG4gKiBEZXRlcm1pbmUgaWYgZmlsZSBjb250ZW50IGNvbnRhaW5zIGEgdmFsaWQgJ3dlYm0nIGZpbGUgc2lnbmF0dXJlLlxuICogU2luY2UgJ21rdicgYW5kICd3ZWJtJyBzaGFyZSB0aGUgc2FtZSBzaWduYXR1cmUgLSBhZGRpdGlvbmFsIGNoZWNrIHJlcXVpcmVkIC0gc2VhcmNoIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIFwiRG9jVHlwZVwiIGVsZW1lbnQgaW4gdGhlIHdlYm0gaGVhZGVyXG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICpcbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHR5cGUgJ3dlYm0nICYgXCJmdHlwXCIgc3RyaW5nIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzV0VCTShmaWxlKSB7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlLCA2NCk7IC8vIENoZWNrIHRoZSBmaXJzdCA2NCBieXRlcyBvZiB0aGUgZmlsZVxuICAgIGNvbnN0IGlzV2VibVNpZ25hdHVyZSA9IGNvcmVfMS5GaWxlVHlwZXMuY2hlY2tCeUZpbGVUeXBlKGZpbGVDaHVuaywgXCJ3ZWJtXCIpO1xuICAgIGlmICghaXNXZWJtU2lnbmF0dXJlKVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgLy8gU2VhcmNoIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIFwiRG9jVHlwZVwiIGVsZW1lbnQgaW4gdGhlIHdlYm0gaGVhZGVyXG4gICAgcmV0dXJuICgwLCB1dGlsc18xLmZpbmRNYXRyb3NrYURvY1R5cGVFbGVtZW50cykoZmlsZUNodW5rKSA9PT0gXCJ3ZWJtXCI7XG59XG5leHBvcnRzLmlzV0VCTSA9IGlzV0VCTTtcbiIsICJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2NyZWF0ZUJpbmRpbmcgPSAodGhpcyAmJiB0aGlzLl9fY3JlYXRlQmluZGluZykgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcbiAgICBpZiAoIWRlc2MgfHwgKFwiZ2V0XCIgaW4gZGVzYyA/ICFtLl9fZXNNb2R1bGUgOiBkZXNjLndyaXRhYmxlIHx8IGRlc2MuY29uZmlndXJhYmxlKSkge1xuICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcbiAgICB9XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCBkZXNjKTtcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBvW2syXSA9IG1ba107XG59KSk7XG52YXIgX19leHBvcnRTdGFyID0gKHRoaXMgJiYgdGhpcy5fX2V4cG9ydFN0YXIpIHx8IGZ1bmN0aW9uKG0sIGV4cG9ydHMpIHtcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGV4cG9ydHMsIHApKSBfX2NyZWF0ZUJpbmRpbmcoZXhwb3J0cywgbSwgcCk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy52YWxpZGF0ZUZpbGVUeXBlID0gdm9pZCAwO1xuY29uc3QgY29yZV8xID0gcmVxdWlyZShcIi4uL2NvcmVcIik7XG5jb25zdCB1dGlsc18xID0gcmVxdWlyZShcIi4uL3V0aWxzXCIpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2F1ZGlvXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9jb21wcmVzc2VkXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9pbWFnZVwiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vb3RoZXJcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3ZpZGVvXCIpLCBleHBvcnRzKTtcbi8qKlxuICogVmFsaWRhdGVzIHRoZSByZXF1ZXN0ZWQgZmlsZSBzaWduYXR1cmUgYWdhaW5zdCBhIGxpc3Qgb2YgYWNjZXB0ZWQgZmlsZSB0eXBlc1xuICpcbiAqIEBwYXJhbSBmaWxlIEZpbGUgY29udGVudCByZXByZXNlbnRzIGluIEFycmF5PG51bWJlcj4gLyBBcnJheUJ1ZmZlciAvIFVpbnQ4QXJyYXlcbiAqIEBwYXJhbSB0eXBlcyBBIGxpc3Qgb2YgYWNjZXB0ZWQgZmlsZSB0eXBlc1xuICogQHBhcmFtIG9wdGlvbnMgcGFyYW1ldGVycyBmb3IgYWRkaXRpb25hbCBhY3Rpb25zXG4gKlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSB0eXBlIHNpZ25hdHVyZSBmcm9tIHRoZSBhY2NlcHRlZCBmaWxlIHR5cGVzLCBvdGhlcndpc2UgZmFsc2VcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVGaWxlVHlwZShmaWxlLCB0eXBlcywgb3B0aW9ucykge1xuICAgIHZhciBfYTtcbiAgICBsZXQgdHlwZUV4dGVuc2lvbnMgPSBbXTtcbiAgICBjb25zdCB1bmlxdWVUeXBlcyA9IFtcbiAgICAgICAgLi4ubmV3IFNldCh0eXBlcy5tYXAoKHR5cGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRUeXBlID0gdHlwZS5zcGxpdChcIi5cIikuam9pbihcIlwiKS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICAgICAgaWYgKG5vcm1hbGl6ZWRUeXBlID09PSBcIjdaXCIpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGBfJHtub3JtYWxpemVkVHlwZX1gO1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZWRUeXBlO1xuICAgICAgICB9KSksXG4gICAgXTtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdW5pcXVlVHlwZXMpIHtcbiAgICAgICAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY29yZV8xLkZpbGVUeXBlcywgdHlwZSkpXG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBUeXBlIFxcYCR7dHlwZS50b0xvd2VyQ2FzZSgpfVxcYCBpcyBub3Qgc3VwcG9ydGVkLiBQbGVhc2UgbWFrZSBzdXJlIHRoYXQgXFxgdHlwZXNcXGAgbGlzdCBjb25hdGlucyBvbmx5IHN1cHBvcnRlZCBmaWxlc2ApO1xuICAgICAgICB0eXBlRXh0ZW5zaW9ucy5wdXNoKHR5cGUpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucyAmJlxuICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgXCJjaHVua1NpemVcIikgJiZcbiAgICAgICAgKChfYSA9IG9wdGlvbnMgPT09IG51bGwgfHwgb3B0aW9ucyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0aW9ucy5jaHVua1NpemUpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApIDw9IDApXG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiY2h1bmtTaXplIG11c3QgYmUgYmlnZ2VyIHRoYW4gemVyb1wiKTtcbiAgICBpZiAoIW9wdGlvbnMgfHwgIShvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuZXhjbHVkZVNpbWlsYXJUeXBlcykpIHtcbiAgICAgICAgY29uc3Qgc2ltaWxhclR5cGVzID0gYWRkU2ltaWxhclR5cGVzKHR5cGVFeHRlbnNpb25zKTtcbiAgICAgICAgaWYgKHNpbWlsYXJUeXBlcy5sZW5ndGggPiAwKVxuICAgICAgICAgICAgdHlwZUV4dGVuc2lvbnMgPSB0eXBlRXh0ZW5zaW9ucy5jb25jYXQoc2ltaWxhclR5cGVzKTtcbiAgICB9XG4gICAgbGV0IGFjY2VwdGVkU2lnbmF0dXJlcyA9IFtdO1xuICAgIGNvbnN0IGZpbGVzUmVxdWlyZWRBZGRpdGlvbmFsQ2hlY2sgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHR5cGUgb2YgdHlwZUV4dGVuc2lvbnMpIHtcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uU2lnbmF0dXJlcyA9IGNvcmVfMS5GaWxlVHlwZXMuZ2V0U2lnbmF0dXJlc0J5TmFtZSh0eXBlKTtcbiAgICAgICAgYWNjZXB0ZWRTaWduYXR1cmVzID0gYWNjZXB0ZWRTaWduYXR1cmVzLmNvbmNhdChleHRlbnNpb25TaWduYXR1cmVzKTtcbiAgICAgICAgaWYgKGNvcmVfMS5GSUxFX1RZUEVTX1JFUVVJUkVEX0FERElUSU9OQUxfQ0hFQ0suaW5jbHVkZXModHlwZS50b0xvd2VyQ2FzZSgpKSkge1xuICAgICAgICAgICAgZmlsZXNSZXF1aXJlZEFkZGl0aW9uYWxDaGVjay5wdXNoKGNvcmVfMS5GaWxlVHlwZXMuZ2V0SW5mb0J5TmFtZSh0eXBlKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlLCAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmNodW5rU2l6ZSkgfHwgNjQpO1xuICAgIGNvbnN0IGRldGVjdGVkU2lnbmF0dXJlID0gY29yZV8xLkZpbGVUeXBlcy5kZXRlY3RTaWduYXR1cmUoZmlsZUNodW5rLCBhY2NlcHRlZFNpZ25hdHVyZXMpO1xuICAgIGlmICghZGV0ZWN0ZWRTaWduYXR1cmUpXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICBpZiAoZmlsZXNSZXF1aXJlZEFkZGl0aW9uYWxDaGVjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGRldGVjdGVkRmlsZXNGb3JBZGRpdGlvbmFsQ2hlY2sgPSBmaWxlc1JlcXVpcmVkQWRkaXRpb25hbENoZWNrLmZpbHRlcigoZnJhYykgPT4gZnJhYy5zaWduYXR1cmVzLmluY2x1ZGVzKGRldGVjdGVkU2lnbmF0dXJlKSk7XG4gICAgICAgIGlmIChkZXRlY3RlZEZpbGVzRm9yQWRkaXRpb25hbENoZWNrLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIC8vIFNvbWUgZmlsZXMgc2hhcmUgdGhlIHNhbWUgc2lnbmF0dXJlLiBBZGRpdGlvbmFsIGNoZWNrIHJlcXVpcmVkXG4gICAgICAgICAgICBjb25zdCBkZXRlY3RlZFR5cGUgPSBjb3JlXzEuRmlsZVR5cGVzLmRldGVjdFR5cGVCeUFkZGl0aW9uYWxDaGVjayhmaWxlQ2h1bmssIGRldGVjdGVkRmlsZXNGb3JBZGRpdGlvbmFsQ2hlY2spO1xuICAgICAgICAgICAgaWYgKCFkZXRlY3RlZFR5cGUpXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGVFeHRlbnNpb25zLnNvbWUoKGRmKSA9PiBkZi50b0xvd2VyQ2FzZSgpID09PSBkZXRlY3RlZFR5cGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufVxuZXhwb3J0cy52YWxpZGF0ZUZpbGVUeXBlID0gdmFsaWRhdGVGaWxlVHlwZTtcbmZ1bmN0aW9uIGFkZFNpbWlsYXJUeXBlcyhyZXF1aXJlZFR5cGVzKSB7XG4gICAgaWYgKHJlcXVpcmVkVHlwZXMuc29tZSgodHlwZSkgPT4gdHlwZSA9PT0gXCJNUDRcIikpXG4gICAgICAgIHJldHVybiBbXCJNNFZcIl07XG4gICAgaWYgKHJlcXVpcmVkVHlwZXMuc29tZSgodHlwZSkgPT4gdHlwZSA9PT0gXCJBQUNcIikpXG4gICAgICAgIHJldHVybiBbXCJNNEFcIl07XG4gICAgcmV0dXJuIFtdO1xufVxuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5GaWxlVHlwZXMgPSBleHBvcnRzLkZJTEVfVFlQRVNfUkVRVUlSRURfQURESVRJT05BTF9DSEVDSyA9IHZvaWQgMDtcbmNvbnN0IHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vLi4vdXRpbHNcIik7XG5jb25zdCBhdWRpb18xID0gcmVxdWlyZShcIi4vYXVkaW9cIik7XG5jb25zdCBjb21wcmVzc2VkXzEgPSByZXF1aXJlKFwiLi9jb21wcmVzc2VkXCIpO1xuY29uc3Qgb3RoZXJfMSA9IHJlcXVpcmUoXCIuL290aGVyXCIpO1xuY29uc3QgaW1hZ2VfMSA9IHJlcXVpcmUoXCIuL2ltYWdlXCIpO1xuY29uc3QgdmlkZW9fMSA9IHJlcXVpcmUoXCIuL3ZpZGVvXCIpO1xuY29uc3QgdmFsaWRhdGlvbl8xID0gcmVxdWlyZShcIi4uLy4uL3ZhbGlkYXRpb25cIik7XG5leHBvcnRzLkZJTEVfVFlQRVNfUkVRVUlSRURfQURESVRJT05BTF9DSEVDSyA9IFtcbiAgICBcIm00dlwiLFxuICAgIFwiZmx2XCIsXG4gICAgXCJtcDRcIixcbiAgICBcIm1rdlwiLFxuICAgIFwid2VibVwiLFxuICAgIFwiYXZpZlwiLFxuICAgIFwiaGVpY1wiLFxuXTtcbi8qKlxuICogQSBjbGFzcyBob2xkIGFsbCBzdXBwb3J0ZWQgZmlsZSB0eXBzIHdpdGggdGhlaXIgdW5pcXVlIHNpZ25hdHVyZXNcbiAqL1xuY2xhc3MgRmlsZVR5cGVzIHtcbiAgICAvKipcbiAgICAgKiBSZWNlaXZlIGluZm9ybWF0aW9uIG9uIGEgZmlsZSB0eXBlIGJ5IGl0cyBwcm9wZXJ0eSBuYW1lIGZyb20gRmlsZVR5cGVzIGNsYXNzXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcHJvcGVydHlOYW1lIFByb3BlcnR5IG5hbWUgZnJvbSBGaWxlVHlwZXMgY2xhc3NcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWxlSW5mb30gRmlsZSB0eXBlIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgc3RhdGljIGdldEluZm9CeU5hbWUocHJvcGVydHlOYW1lKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSAoMCwgdXRpbHNfMS5mZXRjaEZyb21PYmplY3QpKEZpbGVUeXBlcywgcHJvcGVydHlOYW1lLnRvVXBwZXJDYXNlKCkpO1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogUmVjZWl2ZSBhbiBhcnJheSBvZiBmaWxlIHR5cGUgc2lnbmF0dXJlcyBieSBpdHMgcHJvcGVydHkgbmFtZSBmcm9tIEZpbGVUeXBlcyBjbGFzc1xuICAgICAqXG4gICAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBQcm9wZXJ0eSBuYW1lIGZyb20gRmlsZVR5cGVzIGNsYXNzXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyB7QXJyYXk8RmlsZVNpZ25hdHVyZT59IEFsbCB1bmlxdWUgc2lnbmF0dXJlcyB3aXRoIHRoZWlyIGluZm9ybWF0aW9uXG4gICAgICovXG4gICAgc3RhdGljIGdldFNpZ25hdHVyZXNCeU5hbWUocHJvcGVydHlOYW1lKSB7XG4gICAgICAgIGNvbnN0IHsgc2lnbmF0dXJlcyB9ID0gKDAsIHV0aWxzXzEuZmV0Y2hGcm9tT2JqZWN0KShGaWxlVHlwZXMsIHByb3BlcnR5TmFtZS50b1VwcGVyQ2FzZSgpKTtcbiAgICAgICAgcmV0dXJuIHNpZ25hdHVyZXM7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBhIHZhbGlkIHNpZ25hdHVyZSBleGlzdCBpbiBhIGZpbGUgY2h1bmtcbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlQ2h1bmsgQSBjaHVuayBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgYSBmaWxlIGNvbnRlbnQsIHJlcHJlc2VudHMgaW4gYXJyYXkgb2YgbnVtYmVyc1xuICAgICAqIEBwYXJhbSBhY2NlcHRlZFNpZ25hdHVyZXMgVmFsaWQgc2lnbmF0dXJlcyB0byBzZWFyY2ggZm9yIGluIGZpbGVDaHVua1xuICAgICAqXG4gICAgICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgZm91bmQgYSB2YWxpZCBzaWduYXR1cmUgaW5zaWRlIHRoZSBjaHVuaywgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgc3RhdGljIGRldGVjdFNpZ25hdHVyZShmaWxlQ2h1bmssIGFjY2VwdGVkU2lnbmF0dXJlcykge1xuICAgICAgICBmb3IgKGNvbnN0IHNpZ25hdHVyZSBvZiBhY2NlcHRlZFNpZ25hdHVyZXMpIHtcbiAgICAgICAgICAgIGxldCBmb3VuZCA9IHRydWU7XG4gICAgICAgICAgICBjb25zdCBvZmZzZXQgPSBzaWduYXR1cmUub2Zmc2V0IHx8IDA7XG4gICAgICAgICAgICBsZXQgc2tpcHBlZEJ5dGVzID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2lnbmF0dXJlLnNlcXVlbmNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpZ25hdHVyZS5za2lwcGVkQnl0ZXMgJiYgc2lnbmF0dXJlLnNraXBwZWRCeXRlcy5pbmNsdWRlcyhpKSkge1xuICAgICAgICAgICAgICAgICAgICBza2lwcGVkQnl0ZXMrKztcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmaWxlQ2h1bmtbb2Zmc2V0ICsgaV0gIT09IHNpZ25hdHVyZS5zZXF1ZW5jZVtpIC0gc2tpcHBlZEJ5dGVzXSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2lnbmF0dXJlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFBlcmZvbXJzIGFuIGFkZGl0aW9uYWwgY2hlY2sgZm9yIGRldGVjdGVkIGZpbGUgdHlwZXMgYnkgdGhlaXIgdW5pcXVlIHN0cnVjdHVyZVxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVDaHVuayBBIGNodW5rIGZyb20gdGhlIGJlZ2lubmluZyBvZiBhIGZpbGUgY29udGVudCwgcmVwcmVzZW50cyBpbiBhcnJheSBvZiBudW1iZXJzXG4gICAgICogQHBhcmFtIGRldGVjdGVkRmlsZXMgQSBsaXN0IG9mIGRldGVjdGVkIGZpbGVzXG4gICAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gRmlsZSB0eXBlIGV4dGVuc2lvbiBpZiBmb3VuZCwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHN0YXRpYyBkZXRlY3RUeXBlQnlBZGRpdGlvbmFsQ2hlY2soZmlsZUNodW5rLCBkZXRlY3RlZEZpbGVzKSB7XG4gICAgICAgIGNvbnN0IGRldGVjdGVkRXh0ZW5zaW9ucyA9IGRldGVjdGVkRmlsZXMubWFwKChkZikgPT4gZGYuZXh0ZW5zaW9uKTtcbiAgICAgICAgaWYgKGRldGVjdGVkRXh0ZW5zaW9ucy5zb21lKChkZSkgPT4gW1wibTR2XCIsIFwiZmx2XCIsIFwibXA0XCIsIFwiaGVpY1wiXS5pbmNsdWRlcyhkZSkpKSB7XG4gICAgICAgICAgICBpZiAoZGV0ZWN0ZWRFeHRlbnNpb25zLmluY2x1ZGVzKFwiaGVpY1wiKSAmJiAoMCwgdmFsaWRhdGlvbl8xLmlzSEVJQykoZmlsZUNodW5rKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJoZWljXCI7XG4gICAgICAgICAgICBjb25zdCBpc0ZsdiA9ICgwLCB2YWxpZGF0aW9uXzEuaXNGTFYpKGZpbGVDaHVuayk7XG4gICAgICAgICAgICBpZiAoaXNGbHYpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwiZmx2XCI7XG4gICAgICAgICAgICBjb25zdCBpc000diA9ICgwLCB2YWxpZGF0aW9uXzEuaXNNNFYpKGZpbGVDaHVuaykgJiYgISgwLCB2YWxpZGF0aW9uXzEuaXNIRUlDKShmaWxlQ2h1bmspO1xuICAgICAgICAgICAgaWYgKGlzTTR2KVxuICAgICAgICAgICAgICAgIHJldHVybiBcIm00dlwiO1xuICAgICAgICAgICAgcmV0dXJuIFwibXA0XCI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZGV0ZWN0ZWRFeHRlbnNpb25zLnNvbWUoKGRlKSA9PiBbXCJta3ZcIiwgXCJ3ZWJtXCJdLmluY2x1ZGVzKGRlKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IG1hdHJvc2thRG9jVHlwZUVsZW1lbnQgPSAoMCwgdXRpbHNfMS5maW5kTWF0cm9za2FEb2NUeXBlRWxlbWVudHMpKGZpbGVDaHVuayk7XG4gICAgICAgICAgICBpZiAobWF0cm9za2FEb2NUeXBlRWxlbWVudCA9PT0gXCJta3ZcIiAmJiAoMCwgdmFsaWRhdGlvbl8xLmlzTUtWKShmaWxlQ2h1bmspKVxuICAgICAgICAgICAgICAgIHJldHVybiBcIm1rdlwiO1xuICAgICAgICAgICAgZWxzZSBpZiAobWF0cm9za2FEb2NUeXBlRWxlbWVudCA9PT0gXCJ3ZWJtXCIgJiYgKDAsIHZhbGlkYXRpb25fMS5pc1dFQk0pKGZpbGVDaHVuaykpXG4gICAgICAgICAgICAgICAgcmV0dXJuIFwid2VibVwiO1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChkZXRlY3RlZEV4dGVuc2lvbnMuc29tZSgoZGUpID0+IFtcImF2aWZcIl0uaW5jbHVkZXMoZGUpKSkge1xuICAgICAgICAgICAgY29uc3QgaXNBdmlmID0gKDAsIHV0aWxzXzEuaXNBdmlmU3RyaW5nSW5jbHVkZWQpKGZpbGVDaHVuayk7XG4gICAgICAgICAgICBpZiAoaXNBdmlmKVxuICAgICAgICAgICAgICAgIHJldHVybiBcImF2aWZcIjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmUgaWYgYSBmaWxlIGNodW5rIGNvbnRhaW5zIGEgdmFsaWQgc2lnbmF0dXJlIGFuZCByZXR1cm4gdGhlIGZpbGUgc2lnbmF0dXJlIGlmIGV4aXN0XG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZUNodW5rIEEgY2h1bmsgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIGEgZmlsZSBjb250ZW50LCByZXByZXNlbnRzIGluIGFycmF5IG9mIG51bWJlcnNcbiAgICAgKiBAcGFyYW0gYWNjZXB0ZWRTaWduYXR1cmVzIFZhbGlkIHNpZ25hdHVyZXMgdG8gc2VhcmNoIGZvciBpbiBmaWxlQ2h1bmtcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtGaWxlU2lnbmF0dXJlIHwgdW5kZWZpbmVkIH0gRmlsZVNpZ25hdHVyZSBpZiBmb3VuZCBhIHZhbGlkIHNpZ25hdHVyZSwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICAgICAqL1xuICAgIHN0YXRpYyBkZXRlY3RiQnlTaWduYXR1cmVzKGZpbGVDaHVuaywgYWNjZXB0ZWRTaWduYXR1cmVzKSB7XG4gICAgICAgIGZvciAoY29uc3Qgc2lnbmF0dXJlIG9mIGFjY2VwdGVkU2lnbmF0dXJlcykge1xuICAgICAgICAgICAgbGV0IHNraXBwZWRCeXRlcyA9IDA7XG4gICAgICAgICAgICBsZXQgZm91bmQgPSB0cnVlO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0ID0gc2lnbmF0dXJlLm9mZnNldCB8fCAwO1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlTGVuZ3RoID0gKHNpZ25hdHVyZSA9PT0gbnVsbCB8fCBzaWduYXR1cmUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNpZ25hdHVyZS5za2lwcGVkQnl0ZXMpXG4gICAgICAgICAgICAgICAgPyBzaWduYXR1cmUuc2VxdWVuY2UubGVuZ3RoICsgc2lnbmF0dXJlLnNraXBwZWRCeXRlcy5sZW5ndGhcbiAgICAgICAgICAgICAgICA6IHNpZ25hdHVyZS5zZXF1ZW5jZS5sZW5ndGg7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNpZ25hdHVyZUxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKHNpZ25hdHVyZS5za2lwcGVkQnl0ZXMgJiYgc2lnbmF0dXJlLnNraXBwZWRCeXRlcy5pbmNsdWRlcyhpKSkge1xuICAgICAgICAgICAgICAgICAgICBza2lwcGVkQnl0ZXMrKztcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChmaWxlQ2h1bmtbb2Zmc2V0ICsgaV0gIT09IHNpZ25hdHVyZS5zZXF1ZW5jZVtpIC0gc2tpcHBlZEJ5dGVzXSkge1xuICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZm91bmQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc2lnbmF0dXJlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIERldGVybWluZSBpZiBmaWxlIGNvbnRlbnQgY29udGFpbnMgYSB2YWxpZCBzaWduYXR1cmUgb2YgYSByZXF1aXJlZCB0eXBlXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZUNodW5rIEEgY2h1bmsgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIGEgZmlsZSBjb250ZW50LCByZXByZXNlbnRzIGluIGFycmF5IG9mIG51bWJlcnNcbiAgICAgKiBAcGFyYW0gdHlwZSBUaGUgZmlsZSB0eXBlIHRvIG1hdGNoIGFnYWluc3RcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIGZvdW5kIGEgc2lnbmF0dXJlIG9mIHRoZSB0eXBlIGluIGZpbGUgY29udGVudCwgb3RoZXJ3aXNlIGZhbHNlXG4gICAgICovXG4gICAgc3RhdGljIGNoZWNrQnlGaWxlVHlwZShmaWxlQ2h1bmssIHR5cGUpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChGaWxlVHlwZXMsIHR5cGUudG9VcHBlckNhc2UoKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjY2VwdGVkU2lnbmF0dXJlcyA9IEZpbGVUeXBlcy5nZXRTaWduYXR1cmVzQnlOYW1lKHR5cGUudG9VcHBlckNhc2UoKSk7XG4gICAgICAgICAgICBjb25zdCBkZXRlY3RlZFNpZ25hdHVyZSA9IEZpbGVUeXBlcy5kZXRlY3RTaWduYXR1cmUoZmlsZUNodW5rLCBhY2NlcHRlZFNpZ25hdHVyZXMpO1xuICAgICAgICAgICAgaWYgKGRldGVjdGVkU2lnbmF0dXJlKVxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5leHBvcnRzLkZpbGVUeXBlcyA9IEZpbGVUeXBlcztcbi8vIGF1ZGlvXG5GaWxlVHlwZXMuQUFDID0gYXVkaW9fMS5BdWRpb1R5cGVzLkFBQztcbkZpbGVUeXBlcy5BTVIgPSBhdWRpb18xLkF1ZGlvVHlwZXMuQU1SO1xuRmlsZVR5cGVzLkZMQUMgPSBhdWRpb18xLkF1ZGlvVHlwZXMuRkxBQztcbkZpbGVUeXBlcy5NNEEgPSBhdWRpb18xLkF1ZGlvVHlwZXMuTTRBO1xuRmlsZVR5cGVzLk1QMyA9IGF1ZGlvXzEuQXVkaW9UeXBlcy5NUDM7XG5GaWxlVHlwZXMuV0FWID0gYXVkaW9fMS5BdWRpb1R5cGVzLldBVjtcbi8vIGltYWdlXG5GaWxlVHlwZXMuQVZJRiA9IGltYWdlXzEuSW1hZ2VUeXBlcy5BVklGO1xuRmlsZVR5cGVzLkJNUCA9IGltYWdlXzEuSW1hZ2VUeXBlcy5CTVA7XG5GaWxlVHlwZXMuQlBHID0gaW1hZ2VfMS5JbWFnZVR5cGVzLkJQRztcbkZpbGVUeXBlcy5DUjIgPSBpbWFnZV8xLkltYWdlVHlwZXMuQ1IyO1xuRmlsZVR5cGVzLkVYUiA9IGltYWdlXzEuSW1hZ2VUeXBlcy5FWFI7XG5GaWxlVHlwZXMuR0lGID0gaW1hZ2VfMS5JbWFnZVR5cGVzLkdJRjtcbkZpbGVUeXBlcy5JQ08gPSBpbWFnZV8xLkltYWdlVHlwZXMuSUNPO1xuRmlsZVR5cGVzLkpQRUcgPSBpbWFnZV8xLkltYWdlVHlwZXMuSlBFRztcbkZpbGVUeXBlcy5QQk0gPSBpbWFnZV8xLkltYWdlVHlwZXMuUEJNO1xuRmlsZVR5cGVzLlBHTSA9IGltYWdlXzEuSW1hZ2VUeXBlcy5QR007XG5GaWxlVHlwZXMuUE5HID0gaW1hZ2VfMS5JbWFnZVR5cGVzLlBORztcbkZpbGVUeXBlcy5QUE0gPSBpbWFnZV8xLkltYWdlVHlwZXMuUFBNO1xuRmlsZVR5cGVzLlBTRCA9IGltYWdlXzEuSW1hZ2VUeXBlcy5QU0Q7XG5GaWxlVHlwZXMuV0VCUCA9IGltYWdlXzEuSW1hZ2VUeXBlcy5XRUJQO1xuRmlsZVR5cGVzLkhFSUMgPSBpbWFnZV8xLkltYWdlVHlwZXMuSEVJQztcbi8vIHZpZGVvXG5GaWxlVHlwZXMuQVZJID0gdmlkZW9fMS5WaWRlb1R5cGVzLkFWSTtcbkZpbGVUeXBlcy5GTFYgPSB2aWRlb18xLlZpZGVvVHlwZXMuRkxWO1xuRmlsZVR5cGVzLk00ViA9IHZpZGVvXzEuVmlkZW9UeXBlcy5NNFY7XG5GaWxlVHlwZXMuTUtWID0gdmlkZW9fMS5WaWRlb1R5cGVzLk1LVjtcbkZpbGVUeXBlcy5NT1YgPSB2aWRlb18xLlZpZGVvVHlwZXMuTU9WO1xuRmlsZVR5cGVzLk1QNCA9IHZpZGVvXzEuVmlkZW9UeXBlcy5NUDQ7XG5GaWxlVHlwZXMuT0dHID0gdmlkZW9fMS5WaWRlb1R5cGVzLk9HRztcbkZpbGVUeXBlcy5TV0YgPSB2aWRlb18xLlZpZGVvVHlwZXMuU1dGO1xuRmlsZVR5cGVzLldFQk0gPSB2aWRlb18xLlZpZGVvVHlwZXMuV0VCTTtcbi8vIGNvbXByZXNzZWRcbkZpbGVUeXBlcy5fN1ogPSBjb21wcmVzc2VkXzEuQ29tcHJlc3NlZFR5cGVzLl83WjtcbkZpbGVUeXBlcy5MWkggPSBjb21wcmVzc2VkXzEuQ29tcHJlc3NlZFR5cGVzLkxaSDtcbkZpbGVUeXBlcy5SQVIgPSBjb21wcmVzc2VkXzEuQ29tcHJlc3NlZFR5cGVzLlJBUjtcbkZpbGVUeXBlcy5aSVAgPSBjb21wcmVzc2VkXzEuQ29tcHJlc3NlZFR5cGVzLlpJUDtcbi8vIG90aGVyXG5GaWxlVHlwZXMuQkxFTkQgPSBvdGhlcl8xLk90aGVyVHlwZXMuQkxFTkQ7XG5GaWxlVHlwZXMuRE9DID0gb3RoZXJfMS5PdGhlclR5cGVzLkRPQztcbkZpbGVUeXBlcy5FTEYgPSBvdGhlcl8xLk90aGVyVHlwZXMuRUxGO1xuRmlsZVR5cGVzLkVYRSA9IG90aGVyXzEuT3RoZXJUeXBlcy5FWEU7XG5GaWxlVHlwZXMuSU5ERCA9IG90aGVyXzEuT3RoZXJUeXBlcy5JTkREO1xuRmlsZVR5cGVzLk1BQ0hPID0gb3RoZXJfMS5PdGhlclR5cGVzLk1BQ0hPO1xuRmlsZVR5cGVzLk9SQyA9IG90aGVyXzEuT3RoZXJUeXBlcy5PUkM7XG5GaWxlVHlwZXMuUEFSUVVFVCA9IG90aGVyXzEuT3RoZXJUeXBlcy5QQVJRVUVUO1xuRmlsZVR5cGVzLlBDQVAgPSBvdGhlcl8xLk90aGVyVHlwZXMuUENBUDtcbkZpbGVUeXBlcy5QREYgPSBvdGhlcl8xLk90aGVyVHlwZXMuUERGO1xuRmlsZVR5cGVzLlBTID0gb3RoZXJfMS5PdGhlclR5cGVzLlBTO1xuRmlsZVR5cGVzLlJURiA9IG90aGVyXzEuT3RoZXJUeXBlcy5SVEY7XG5GaWxlVHlwZXMuU1FMSVRFID0gb3RoZXJfMS5PdGhlclR5cGVzLlNRTElURTtcbkZpbGVUeXBlcy5TVEwgPSBvdGhlcl8xLk90aGVyVHlwZXMuU1RMO1xuRmlsZVR5cGVzLlRURiA9IG90aGVyXzEuT3RoZXJUeXBlcy5UVEY7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9kZXRlY3RlZC1maWxlLWluZm9cIiksIGV4cG9ydHMpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vZGV0ZWN0LWZpbGUtb3B0aW9uc1wiKSwgZXhwb3J0cyk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vdmFsaWRhdGUtZmlsZS10eXBlLW9wdGlvbnNcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL2ZpbGUtdmFsaWRhdG9yLW9wdGlvbnNcIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL3ppcC12YWxpZGF0b3Itb3B0aW9uc1wiKSwgZXhwb3J0cyk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9kdG9cIiksIGV4cG9ydHMpO1xuX19leHBvcnRTdGFyKHJlcXVpcmUoXCIuL29wdGlvbnNcIiksIGV4cG9ydHMpO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwgIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX2V4cG9ydFN0YXIgPSAodGhpcyAmJiB0aGlzLl9fZXhwb3J0U3RhcikgfHwgZnVuY3Rpb24obSwgZXhwb3J0cykge1xuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXhwb3J0cywgcCkpIF9fY3JlYXRlQmluZGluZyhleHBvcnRzLCBtLCBwKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5fX2V4cG9ydFN0YXIocmVxdWlyZShcIi4vZmlsZS1pbmZvXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9maWxlLXNpZ25hdHVyZVwiKSwgZXhwb3J0cyk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICB2YXIgZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IobSwgayk7XG4gICAgaWYgKCFkZXNjIHx8IChcImdldFwiIGluIGRlc2MgPyAhbS5fX2VzTW9kdWxlIDogZGVzYy53cml0YWJsZSB8fCBkZXNjLmNvbmZpZ3VyYWJsZSkpIHtcbiAgICAgIGRlc2MgPSB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH07XG4gICAgfVxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9maWxlLXR5cGVzXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi9pbnRlcmZhY2VzXCIpLCBleHBvcnRzKTtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwiLi90eXBlc1wiKSwgZXhwb3J0cyk7XG4iLCAiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmRldGVjdEZpbGUgPSB2b2lkIDA7XG5jb25zdCBjb3JlXzEgPSByZXF1aXJlKFwiLi4vY29yZVwiKTtcbmNvbnN0IHV0aWxzXzEgPSByZXF1aXJlKFwiLi4vdXRpbHNcIik7XG4vKipcbiAqIERldGVjdCBhIGZpbGUgYnkgc2VhcmNoaW5nIGZvciBhIHZhbGlkIGZpbGUgc2lnbmF0dXJlIGluc2lkZSB0aGUgZmlsZSBjb250ZW50XG4gKlxuICogQHBhcmFtIGZpbGUgRmlsZSBjb250ZW50IHJlcHJlc2VudHMgaW4gQXJyYXk8bnVtYmVyPiAvIEFycmF5QnVmZmVyIC8gVWludDhBcnJheVxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgYWRkaXRpb25hbCBhY3Rpb25zXG4gKlxuICogQHJldHVybnMge0RldGVjdGVkRmlsZUluZm8gfCB1bmRlZmluZWR9IERldGVjdGVkRmlsZUluZm8gaWYgZGV0ZWN0ZWQgYSB2YWxpZCBzaWduYXR1cmUgaW5zaWRlIHRoZSBmaWxlIGNvbnRlbnRvZiwgb3RoZXJ3aXNlIHVuZGVmaW5lZFxuICovXG5mdW5jdGlvbiBkZXRlY3RGaWxlKGZpbGUsIG9wdGlvbnMpIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKG9wdGlvbnMgJiZcbiAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsIFwiY2h1bmtTaXplXCIpICYmXG4gICAgICAgICgoX2EgPSBvcHRpb25zID09PSBudWxsIHx8IG9wdGlvbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9wdGlvbnMuY2h1bmtTaXplKSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwKSA8PSAwKVxuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcImNodW5rU2l6ZSBtdXN0IGJlIGJpZ2dlciB0aGFuIHplcm9cIik7XG4gICAgY29uc3QgZmlsZUNodW5rID0gKDAsIHV0aWxzXzEuZ2V0RmlsZUNodW5rKShmaWxlLCAob3B0aW9ucyA9PT0gbnVsbCB8fCBvcHRpb25zID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvcHRpb25zLmNodW5rU2l6ZSkgfHwgNjQpOyAvLyBUYWtlIGNodW5rIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgZmlsZVxuICAgIGlmIChmaWxlQ2h1bmsubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGNvbnN0IGRldGVjdGVkRmlsZXMgPSBbXTtcbiAgICBjb25zdCBmaWxlc1JlcXVpcmVkQWRkaXRpb25hbENoZWNrID0gW107XG4gICAgZm9yIChjb25zdCB0eXBlIGluIGNvcmVfMS5GaWxlVHlwZXMpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb3JlXzEuRmlsZVR5cGVzLCB0eXBlKSkge1xuICAgICAgICAgICAgY29uc3Qgc2lnbmF0dXJlcyA9IGNvcmVfMS5GaWxlVHlwZXMuZ2V0U2lnbmF0dXJlc0J5TmFtZSh0eXBlKTtcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoZWRTaWduYXR1cmUgPSBjb3JlXzEuRmlsZVR5cGVzLmRldGVjdGJCeVNpZ25hdHVyZXMoZmlsZUNodW5rLCBzaWduYXR1cmVzKTtcbiAgICAgICAgICAgIGlmIChtYXRjaGVkU2lnbmF0dXJlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZVR5cGUgPSBjb3JlXzEuRmlsZVR5cGVzLmdldEluZm9CeU5hbWUodHlwZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvcmVfMS5GSUxFX1RZUEVTX1JFUVVJUkVEX0FERElUSU9OQUxfQ0hFQ0suaW5jbHVkZXMoZmlsZVR5cGUuZXh0ZW5zaW9uKSkge1xuICAgICAgICAgICAgICAgICAgICBmaWxlc1JlcXVpcmVkQWRkaXRpb25hbENoZWNrLnB1c2goZmlsZVR5cGUuZXh0ZW5zaW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZUluZm8gPSB7XG4gICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbjogZmlsZVR5cGUuZXh0ZW5zaW9uLFxuICAgICAgICAgICAgICAgICAgICBtaW1lVHlwZTogZmlsZVR5cGUubWltZVR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBmaWxlVHlwZS5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgICAgICAgICAgc2lnbmF0dXJlOiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG1hdGNoZWRTaWduYXR1cmUpLCB7IHNlcXVlbmNlOiBtYXRjaGVkU2lnbmF0dXJlLnNlcXVlbmNlLm1hcCgobnVtKSA9PiBudW0udG9TdHJpbmcoMTYpKSB9KSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIGRldGVjdGVkRmlsZXMucHVzaChmaWxlSW5mbyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGRldGVjdGVkRmlsZXMubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChkZXRlY3RlZEZpbGVzLmxlbmd0aCA9PT0gMSAmJiBmaWxlc1JlcXVpcmVkQWRkaXRpb25hbENoZWNrLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIGRldGVjdGVkRmlsZXNbMF07XG4gICAgLy8gU29tZSBmaWxlcyBzaGFyZSB0aGUgc2FtZSBzaWduYXR1cmUuIEFkZGl0aW9uYWwgY2hlY2sgcmVxdWlyZWRcbiAgICBjb25zdCBkZXRlY3RlZFR5cGUgPSBjb3JlXzEuRmlsZVR5cGVzLmRldGVjdFR5cGVCeUFkZGl0aW9uYWxDaGVjayhmaWxlQ2h1bmssIGRldGVjdGVkRmlsZXMpO1xuICAgIGlmICghZGV0ZWN0ZWRUeXBlKVxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIHJldHVybiBkZXRlY3RlZEZpbGVzLmZpbmQoKGRmKSA9PiBkZi5leHRlbnNpb24gPT09IGRldGVjdGVkVHlwZSk7XG59XG5leHBvcnRzLmRldGVjdEZpbGUgPSBkZXRlY3RGaWxlO1xuIiwgIlwidXNlIHN0cmljdFwiO1xudmFyIF9fY3JlYXRlQmluZGluZyA9ICh0aGlzICYmIHRoaXMuX19jcmVhdGVCaW5kaW5nKSB8fCAoT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgdmFyIGRlc2MgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKG0sIGspO1xuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XG4gICAgICBkZXNjID0geyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9O1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIGRlc2MpO1xufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xuICAgIG9bazJdID0gbVtrXTtcbn0pKTtcbnZhciBfX3NldE1vZHVsZURlZmF1bHQgPSAodGhpcyAmJiB0aGlzLl9fc2V0TW9kdWxlRGVmYXVsdCkgfHwgKE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBcImRlZmF1bHRcIiwgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdiB9KTtcbn0pIDogZnVuY3Rpb24obywgdikge1xuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcbn0pO1xudmFyIF9faW1wb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19pbXBvcnRTdGFyKSB8fCBmdW5jdGlvbiAobW9kKSB7XG4gICAgaWYgKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgcmV0dXJuIG1vZDtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xuICAgIF9fc2V0TW9kdWxlRGVmYXVsdChyZXN1bHQsIG1vZCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbn07XG5jb25zdCBkZXRlY3Rpb25GdW5jdGlvbnMgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vZGV0ZWN0aW9uXCIpKTtcbmNvbnN0IHZhbGlkYXRpb25GdW5jdGlvbnMgPSBfX2ltcG9ydFN0YXIocmVxdWlyZShcIi4vdmFsaWRhdGlvblwiKSk7XG5jb25zdCBmaWxlVHlwZUNoZWNrZXIgPSBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIGRldGVjdGlvbkZ1bmN0aW9ucyksIHZhbGlkYXRpb25GdW5jdGlvbnMpO1xubW9kdWxlLmV4cG9ydHMgPSBmaWxlVHlwZUNoZWNrZXI7XG4iLCAiaW1wb3J0IHsgUGx1Z2luIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgeyBXb3JkcHJlc3NTZXR0aW5nVGFiIH0gZnJvbSAnLi9zZXR0aW5ncyc7XHJcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnLi9pY29ucyc7XHJcbmltcG9ydCB7IFdvcmRQcmVzc1Bvc3RQYXJhbXMgfSBmcm9tICcuL3dwLWNsaWVudCc7XHJcbmltcG9ydCB7IEkxOG4gfSBmcm9tICcuL2kxOG4nO1xyXG5pbXBvcnQgeyBFdmVudFR5cGUsIFdQX09BVVRIMl9SRURJUkVDVF9VUkksIFdQX09BVVRIMl9VUkxfQUNUSU9OIH0gZnJvbSAnLi9jb25zdHMnO1xyXG5pbXBvcnQgeyBPQXV0aDJDbGllbnQgfSBmcm9tICcuL29hdXRoMi1jbGllbnQnO1xyXG5pbXBvcnQgeyBDb21tZW50U3RhdHVzLCBQb3N0U3RhdHVzLCBQb3N0VHlwZUNvbnN0IH0gZnJvbSAnLi93cC1hcGknO1xyXG5pbXBvcnQgeyBvcGVuUHJvZmlsZUNob29zZXJNb2RhbCB9IGZyb20gJy4vd3AtcHJvZmlsZS1jaG9vc2VyLW1vZGFsJztcclxuaW1wb3J0IHsgQXBwU3RhdGUgfSBmcm9tICcuL2FwcC1zdGF0ZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfU0VUVElOR1MsIFNldHRpbmdzVmVyc2lvbiwgdXBncmFkZVNldHRpbmdzLCBXb3JkcHJlc3NQbHVnaW5TZXR0aW5ncyB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzJztcclxuaW1wb3J0IHsgUGFzc0NyeXB0byB9IGZyb20gJy4vcGFzcy1jcnlwdG8nO1xyXG5pbXBvcnQgeyBkb0NsaWVudFB1Ymxpc2gsIHNldHVwTWFya2Rvd25QYXJzZXIsIHNob3dFcnJvciB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV29yZHByZXNzUGx1Z2luIGV4dGVuZHMgUGx1Z2luIHtcclxuXHJcbiAgI3NldHRpbmdzOiBXb3JkcHJlc3NQbHVnaW5TZXR0aW5ncyB8IHVuZGVmaW5lZDtcclxuICBnZXQgc2V0dGluZ3MoKSB7XHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxyXG4gICAgcmV0dXJuIHRoaXMuI3NldHRpbmdzITtcclxuICB9XHJcblxyXG4gICNpMThuOiBJMThuIHwgdW5kZWZpbmVkO1xyXG4gIGdldCBpMThuKCkge1xyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRpb25cclxuICAgIHJldHVybiB0aGlzLiNpMThuITtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmliYm9uV3BJY29uOiBIVE1MRWxlbWVudCB8IG51bGwgPSBudWxsO1xyXG5cclxuICBhc3luYyBvbmxvYWQoKSB7XHJcbiAgICBjb25zb2xlLmxvZygnbG9hZGluZyBvYnNpZGlhbi13b3JkcHJlc3MgcGx1Z2luJyk7XHJcblxyXG4gICAgYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcclxuICAgIC8vIGxhbmcgc2hvdWxkIGJlIGxvYWQgZWFybHksIGJ1dCBhZnRlciBzZXR0aW5nc1xyXG4gICAgdGhpcy4jaTE4biA9IG5ldyBJMThuKHRoaXMuI3NldHRpbmdzPy5sYW5nKTtcclxuXHJcbiAgICBzZXR1cE1hcmtkb3duUGFyc2VyKHRoaXMuc2V0dGluZ3MpO1xyXG5cclxuICAgIGFkZEljb25zKCk7XHJcblxyXG4gICAgdGhpcy5yZWdpc3RlclByb3RvY29sSGFuZGxlcigpO1xyXG4gICAgdGhpcy51cGRhdGVSaWJib25JY29uKCk7XHJcblxyXG4gICAgdGhpcy5hZGRDb21tYW5kKHtcclxuICAgICAgaWQ6ICdkZWZhdWx0UHVibGlzaCcsXHJcbiAgICAgIG5hbWU6IHRoaXMuI2kxOG4udCgnY29tbWFuZF9wdWJsaXNoV2l0aERlZmF1bHQnKSxcclxuICAgICAgZWRpdG9yQ2FsbGJhY2s6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBkZWZhdWx0UHJvZmlsZSA9IHRoaXMuI3NldHRpbmdzPy5wcm9maWxlcy5maW5kKGl0ID0+IGl0LmlzRGVmYXVsdCk7XHJcbiAgICAgICAgaWYgKGRlZmF1bHRQcm9maWxlKSB7XHJcbiAgICAgICAgICBjb25zdCBwYXJhbXM6IFdvcmRQcmVzc1Bvc3RQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgIHN0YXR1czogdGhpcy4jc2V0dGluZ3M/LmRlZmF1bHRQb3N0U3RhdHVzID8/IFBvc3RTdGF0dXMuRHJhZnQsXHJcbiAgICAgICAgICAgIGNvbW1lbnRTdGF0dXM6IHRoaXMuI3NldHRpbmdzPy5kZWZhdWx0Q29tbWVudFN0YXR1cyA/PyBDb21tZW50U3RhdHVzLk9wZW4sXHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IGRlZmF1bHRQcm9maWxlLmxhc3RTZWxlY3RlZENhdGVnb3JpZXMgPz8gWyAxIF0sXHJcbiAgICAgICAgICAgIHBvc3RUeXBlOiBQb3N0VHlwZUNvbnN0LlBvc3QsXHJcbiAgICAgICAgICAgIHRhZ3M6IFtdLFxyXG4gICAgICAgICAgICB0aXRsZTogJycsXHJcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgZG9DbGllbnRQdWJsaXNoKHRoaXMsIGRlZmF1bHRQcm9maWxlLCBwYXJhbXMpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBzaG93RXJyb3IodGhpcy4jaTE4bj8udCgnZXJyb3Jfbm9EZWZhdWx0UHJvZmlsZScpID8/ICdObyBkZWZhdWx0IHByb2ZpbGUgZm91bmQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmFkZENvbW1hbmQoe1xyXG4gICAgICBpZDogJ3B1Ymxpc2gnLFxyXG4gICAgICBuYW1lOiB0aGlzLiNpMThuLnQoJ2NvbW1hbmRfcHVibGlzaCcpLFxyXG4gICAgICBlZGl0b3JDYWxsYmFjazogKCkgPT4ge1xyXG4gICAgICAgIHRoaXMub3BlblByb2ZpbGVDaG9vc2VyKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuYWRkU2V0dGluZ1RhYihuZXcgV29yZHByZXNzU2V0dGluZ1RhYih0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBvbnVubG9hZCgpIHtcclxuICB9XHJcblxyXG4gIGFzeW5jIGxvYWRTZXR0aW5ncygpIHtcclxuICAgIHRoaXMuI3NldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywgYXdhaXQgdGhpcy5sb2FkRGF0YSgpKTtcclxuICAgIGNvbnN0IHsgbmVlZFVwZ3JhZGUsIHNldHRpbmdzIH0gPSBhd2FpdCB1cGdyYWRlU2V0dGluZ3ModGhpcy4jc2V0dGluZ3MsIFNldHRpbmdzVmVyc2lvbi5WMik7XHJcbiAgICB0aGlzLiNzZXR0aW5ncyA9IHNldHRpbmdzO1xyXG4gICAgaWYgKG5lZWRVcGdyYWRlKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuc2F2ZVNldHRpbmdzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3J5cHRvID0gbmV3IFBhc3NDcnlwdG8oKTtcclxuICAgIGNvbnN0IGNvdW50ID0gdGhpcy4jc2V0dGluZ3M/LnByb2ZpbGVzLmxlbmd0aCA/PyAwO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IHByb2ZpbGUgPSB0aGlzLiNzZXR0aW5ncz8ucHJvZmlsZXNbaV07XHJcbiAgICAgIGNvbnN0IGVuUGFzcyA9IHByb2ZpbGUuZW5jcnlwdGVkUGFzc3dvcmQ7XHJcbiAgICAgIGlmIChlblBhc3MpIHtcclxuICAgICAgICBwcm9maWxlLnBhc3N3b3JkID0gYXdhaXQgY3J5cHRvLmRlY3J5cHQoZW5QYXNzLmVuY3J5cHRlZCwgZW5QYXNzLmtleSwgZW5QYXNzLnZlY3Rvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBBcHBTdGF0ZS5tYXJrZG93blBhcnNlci5zZXQoe1xyXG4gICAgICBodG1sOiB0aGlzLiNzZXR0aW5ncz8uZW5hYmxlSHRtbCA/PyBmYWxzZVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBzYXZlU2V0dGluZ3MoKSB7XHJcbiAgICBjb25zdCBzZXR0aW5ncyA9IGNsb25lRGVlcCh0aGlzLnNldHRpbmdzKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2V0dGluZ3MucHJvZmlsZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgcHJvZmlsZSA9IHNldHRpbmdzLnByb2ZpbGVzW2ldO1xyXG4gICAgICBjb25zdCBwYXNzd29yZCA9IHByb2ZpbGUucGFzc3dvcmQ7XHJcbiAgICAgIGlmIChwYXNzd29yZCkge1xyXG4gICAgICAgIGNvbnN0IGNyeXB0byA9IG5ldyBQYXNzQ3J5cHRvKCk7XHJcbiAgICAgICAgcHJvZmlsZS5lbmNyeXB0ZWRQYXNzd29yZCA9IGF3YWl0IGNyeXB0by5lbmNyeXB0KHBhc3N3b3JkKTtcclxuICAgICAgICBkZWxldGUgcHJvZmlsZS5wYXNzd29yZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5zYXZlRGF0YShzZXR0aW5ncyk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVSaWJib25JY29uKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcmliYm9uSWNvblRpdGxlID0gdGhpcy4jaTE4bj8udCgncmliYm9uX2ljb25UaXRsZScpID8/ICdXb3JkUHJlc3MnO1xyXG4gICAgaWYgKHRoaXMuI3NldHRpbmdzPy5zaG93UmliYm9uSWNvbikge1xyXG4gICAgICBpZiAoIXRoaXMucmliYm9uV3BJY29uKSB7XHJcbiAgICAgICAgdGhpcy5yaWJib25XcEljb24gPSB0aGlzLmFkZFJpYmJvbkljb24oJ3dwLWxvZ28nLCByaWJib25JY29uVGl0bGUsICgpID0+IHtcclxuICAgICAgICAgIHRoaXMub3BlblByb2ZpbGVDaG9vc2VyKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0aGlzLnJpYmJvbldwSWNvbikge1xyXG4gICAgICAgIHRoaXMucmliYm9uV3BJY29uLnJlbW92ZSgpO1xyXG4gICAgICAgIHRoaXMucmliYm9uV3BJY29uID0gbnVsbDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBvcGVuUHJvZmlsZUNob29zZXIoKSB7XHJcbiAgICBpZiAodGhpcy5zZXR0aW5ncy5wcm9maWxlcy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgZG9DbGllbnRQdWJsaXNoKHRoaXMsIHRoaXMuc2V0dGluZ3MucHJvZmlsZXNbMF0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNldHRpbmdzLnByb2ZpbGVzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgY29uc3QgcHJvZmlsZSA9IGF3YWl0IG9wZW5Qcm9maWxlQ2hvb3Nlck1vZGFsKHRoaXMpO1xyXG4gICAgICBkb0NsaWVudFB1Ymxpc2godGhpcywgcHJvZmlsZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzaG93RXJyb3IodGhpcy5pMThuLnQoJ2Vycm9yX25vUHJvZmlsZScpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZ2lzdGVyT2JzaWRpYW5Qcm90b2NvbEhhbmRsZXIoV1BfT0FVVEgyX1VSTF9BQ1RJT04sIGFzeW5jIChlKSA9PiB7XHJcbiAgICAgIGlmIChlLmFjdGlvbiA9PT0gV1BfT0FVVEgyX1VSTF9BQ1RJT04pIHtcclxuICAgICAgICBpZiAoZS5zdGF0ZSkge1xyXG4gICAgICAgICAgaWYgKGUuZXJyb3IpIHtcclxuICAgICAgICAgICAgc2hvd0Vycm9yKHRoaXMuaTE4bi50KCdlcnJvcl93cENvbUF1dGhGYWlsZWQnLCB7XHJcbiAgICAgICAgICAgICAgZXJyb3I6IGUuZXJyb3IsXHJcbiAgICAgICAgICAgICAgZGVzYzogZS5lcnJvcl9kZXNjcmlwdGlvbi5yZXBsYWNlKC9cXCsvZywnICcpXHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgQXBwU3RhdGUuZXZlbnRzLnRyaWdnZXIoRXZlbnRUeXBlLk9BVVRIMl9UT0tFTl9HT1QsIHVuZGVmaW5lZCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGUuY29kZSkge1xyXG4gICAgICAgICAgICBjb25zdCB0b2tlbiA9IGF3YWl0IE9BdXRoMkNsaWVudC5nZXRXcE9BdXRoMkNsaWVudCh0aGlzKS5nZXRUb2tlbih7XHJcbiAgICAgICAgICAgICAgY29kZTogZS5jb2RlLFxyXG4gICAgICAgICAgICAgIHJlZGlyZWN0VXJpOiBXUF9PQVVUSDJfUkVESVJFQ1RfVVJJLFxyXG4gICAgICAgICAgICAgIGNvZGVWZXJpZmllcjogQXBwU3RhdGUuY29kZVZlcmlmaWVyXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyh0b2tlbik7XHJcbiAgICAgICAgICAgIEFwcFN0YXRlLmV2ZW50cy50cmlnZ2VyKEV2ZW50VHlwZS5PQVVUSDJfVE9LRU5fR09ULCB0b2tlbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiIsICJpbXBvcnQgeyBQbHVnaW5TZXR0aW5nVGFiLCBTZXR0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7IENvbW1lbnRTdGF0dXMsIFBvc3RTdGF0dXMgfSBmcm9tICcuL3dwLWFwaSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUtleSB9IGZyb20gJy4vaTE4bic7XHJcbmltcG9ydCB7IFdwUHJvZmlsZU1hbmFnZU1vZGFsIH0gZnJvbSAnLi93cC1wcm9maWxlLW1hbmFnZS1tb2RhbCc7XHJcbmltcG9ydCB7IENvbW1lbnRDb252ZXJ0TW9kZSwgTWF0aEpheE91dHB1dFR5cGUgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IFdwUHJvZmlsZSB9IGZyb20gJy4vd3AtcHJvZmlsZSc7XHJcbmltcG9ydCB7IHNldHVwTWFya2Rvd25QYXJzZXIgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgQXBwU3RhdGUgfSBmcm9tICcuL2FwcC1zdGF0ZSc7XHJcblxyXG5cclxuZXhwb3J0IGNsYXNzIFdvcmRwcmVzc1NldHRpbmdUYWIgZXh0ZW5kcyBQbHVnaW5TZXR0aW5nVGFiIHtcclxuXHJcblx0Y29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBsdWdpbjogV29yZHByZXNzUGx1Z2luXHJcbiAgKSB7XHJcblx0XHRzdXBlcihwbHVnaW4uYXBwLCBwbHVnaW4pO1xyXG5cdH1cclxuXHJcblx0ZGlzcGxheSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHQgPSAoa2V5OiBUcmFuc2xhdGVLZXksIHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMucGx1Z2luLmkxOG4udChrZXksIHZhcnMpO1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBnZXRNYXRoSmF4T3V0cHV0VHlwZURlc2MgPSAodHlwZTogTWF0aEpheE91dHB1dFR5cGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlIE1hdGhKYXhPdXRwdXRUeXBlLlRlWDpcclxuICAgICAgICAgIHJldHVybiB0KCdzZXR0aW5nc19NYXRoSmF4T3V0cHV0VHlwZVRlWERlc2MnKTtcclxuICAgICAgICBjYXNlIE1hdGhKYXhPdXRwdXRUeXBlLlNWRzpcclxuICAgICAgICAgIHJldHVybiB0KCdzZXR0aW5nc19NYXRoSmF4T3V0cHV0VHlwZVNWR0Rlc2MnKTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZ2V0Q29tbWVudENvbnZlcnRNb2RlRGVzYyA9ICh0eXBlOiBDb21tZW50Q29udmVydE1vZGUpOiBzdHJpbmcgPT4ge1xyXG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICBjYXNlIENvbW1lbnRDb252ZXJ0TW9kZS5JZ25vcmU6XHJcbiAgICAgICAgICByZXR1cm4gdCgnc2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlSWdub3JlRGVzYycpO1xyXG4gICAgICAgIGNhc2UgQ29tbWVudENvbnZlcnRNb2RlLkhUTUw6XHJcbiAgICAgICAgICByZXR1cm4gdCgnc2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlSFRNTERlc2MnKTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG5cdFx0Y29uc3QgeyBjb250YWluZXJFbCB9ID0gdGhpcztcclxuXHJcblx0XHRjb250YWluZXJFbC5lbXB0eSgpO1xyXG5cclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdoMScsIHsgdGV4dDogdCgnc2V0dGluZ3NfdGl0bGUnKSB9KTtcclxuXHJcbiAgICBsZXQgbWF0aEpheE91dHB1dFR5cGVEZXNjID0gZ2V0TWF0aEpheE91dHB1dFR5cGVEZXNjKHRoaXMucGx1Z2luLnNldHRpbmdzLm1hdGhKYXhPdXRwdXRUeXBlKTtcclxuICAgIGxldCBjb21tZW50Q29udmVydE1vZGVEZXNjID0gZ2V0Q29tbWVudENvbnZlcnRNb2RlRGVzYyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb21tZW50Q29udmVydE1vZGUpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSh0KCdzZXR0aW5nc19wcm9maWxlcycpKVxyXG4gICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19wcm9maWxlc0Rlc2MnKSlcclxuICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgLnNldEJ1dHRvblRleHQodCgnc2V0dGluZ3NfcHJvZmlsZXNNb2RhbCcpKVxyXG4gICAgICAgIC5vbkNsaWNrKCgpID0+IHtcclxuICAgICAgICAgIG5ldyBXcFByb2ZpbGVNYW5hZ2VNb2RhbCh0aGlzLnBsdWdpbikub3BlbigpO1xyXG4gICAgICAgIH0pKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUodCgnc2V0dGluZ3Nfc2hvd1JpYmJvbkljb24nKSlcclxuICAgICAgLnNldERlc2ModCgnc2V0dGluZ3Nfc2hvd1JpYmJvbkljb25EZXNjJykpXHJcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgICB0b2dnbGVcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93UmliYm9uSWNvbilcclxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3Muc2hvd1JpYmJvbkljb24gPSB2YWx1ZTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi51cGRhdGVSaWJib25JY29uKCk7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUodCgnc2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXMnKSlcclxuICAgICAgLnNldERlc2ModCgnc2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNEZXNjJykpXHJcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbihQb3N0U3RhdHVzLkRyYWZ0LCB0KCdzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1c0RyYWZ0JykpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKFBvc3RTdGF0dXMuUHVibGlzaCwgdCgnc2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNQdWJsaXNoJykpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKFBvc3RTdGF0dXMuUHJpdmF0ZSwgdCgnc2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNQcml2YXRlJykpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVmYXVsdFBvc3RTdGF0dXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHRQb3N0U3RhdHVzID0gdmFsdWUgYXMgUG9zdFN0YXR1cztcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3NldHRpbmdzX2RlZmF1bHRQb3N0Q29tbWVudCcpKVxyXG4gICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19kZWZhdWx0UG9zdENvbW1lbnREZXNjJykpXHJcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbihDb21tZW50U3RhdHVzLk9wZW4sIHQoJ3NldHRpbmdzX2RlZmF1bHRQb3N0Q29tbWVudE9wZW4nKSlcclxuICAgICAgICAgIC5hZGRPcHRpb24oQ29tbWVudFN0YXR1cy5DbG9zZWQsIHQoJ3NldHRpbmdzX2RlZmF1bHRQb3N0Q29tbWVudENsb3NlZCcpKVxyXG4gICAgICAgICAgLy8gLmFkZE9wdGlvbihQb3N0U3RhdHVzLkZ1dHVyZSwgJ2Z1dHVyZScpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZGVmYXVsdENvbW1lbnRTdGF0dXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHRDb21tZW50U3RhdHVzID0gdmFsdWUgYXMgQ29tbWVudFN0YXR1cztcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3NldHRpbmdzX3JlbWVtYmVyTGFzdFNlbGVjdGVkQ2F0ZWdvcmllcycpKVxyXG4gICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19yZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXNEZXNjJykpXHJcbiAgICAgIC5hZGRUb2dnbGUoKHRvZ2dsZSkgPT5cclxuICAgICAgICB0b2dnbGVcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnJlbWVtYmVyTGFzdFNlbGVjdGVkQ2F0ZWdvcmllcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICBpZiAoIXZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MucHJvZmlsZXMuZm9yRWFjaCgocHJvZmlsZTogV3BQcm9maWxlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXByb2ZpbGUubGFzdFNlbGVjdGVkQ2F0ZWdvcmllcyB8fCBwcm9maWxlLmxhc3RTZWxlY3RlZENhdGVnb3JpZXMubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgIHByb2ZpbGUubGFzdFNlbGVjdGVkQ2F0ZWdvcmllcyA9IFsgMSBdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpO1xyXG4gICAgICAgICAgfSksXHJcbiAgICAgICk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGFpbmVyRWwpXHJcbiAgICAgIC5zZXROYW1lKHQoJ3NldHRpbmdzX3Nob3dXb3JkUHJlc3NFZGl0UGFnZU1vZGFsJykpXHJcbiAgICAgIC5zZXREZXNjKHQoJ3NldHRpbmdzX3Nob3dXb3JkUHJlc3NFZGl0UGFnZU1vZGFsRGVzYycpKVxyXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgICAgdG9nZ2xlXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3Muc2hvd1dvcmRQcmVzc0VkaXRDb25maXJtKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5zaG93V29yZFByZXNzRWRpdENvbmZpcm0gPSB2YWx1ZTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICB9KSxcclxuICAgICAgKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUodCgnc2V0dGluZ3NfbWF0aEpheE91dHB1dFR5cGUnKSlcclxuICAgICAgLnNldERlc2ModCgnc2V0dGluZ3NfbWF0aEpheE91dHB1dFR5cGVEZXNjJykpXHJcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbihNYXRoSmF4T3V0cHV0VHlwZS5UZVgsIHQoJ3NldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlVGVYJykpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKE1hdGhKYXhPdXRwdXRUeXBlLlNWRywgdCgnc2V0dGluZ3NfbWF0aEpheE91dHB1dFR5cGVTVkcnKSlcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnBsdWdpbi5zZXR0aW5ncy5tYXRoSmF4T3V0cHV0VHlwZSlcclxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MubWF0aEpheE91dHB1dFR5cGUgPSB2YWx1ZSBhcyBNYXRoSmF4T3V0cHV0VHlwZTtcclxuICAgICAgICAgICAgbWF0aEpheE91dHB1dFR5cGVEZXNjID0gZ2V0TWF0aEpheE91dHB1dFR5cGVEZXNjKHRoaXMucGx1Z2luLnNldHRpbmdzLm1hdGhKYXhPdXRwdXRUeXBlKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheSgpO1xyXG5cclxuICAgICAgICAgICAgc2V0dXBNYXJrZG93blBhcnNlcih0aGlzLnBsdWdpbi5zZXR0aW5ncyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICBjb250YWluZXJFbC5jcmVhdGVFbCgncCcsIHtcclxuICAgICAgdGV4dDogbWF0aEpheE91dHB1dFR5cGVEZXNjLFxyXG4gICAgICBjbHM6ICdzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb24nXHJcbiAgICB9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUodCgnc2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlJykpXHJcbiAgICAgIC5zZXREZXNjKHQoJ3NldHRpbmdzX2NvbW1lbnRDb252ZXJ0TW9kZURlc2MnKSlcclxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xyXG4gICAgICAgIGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKENvbW1lbnRDb252ZXJ0TW9kZS5JZ25vcmUsIHQoJ3NldHRpbmdzX2NvbW1lbnRDb252ZXJ0TW9kZUlnbm9yZScpKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbihDb21tZW50Q29udmVydE1vZGUuSFRNTCwgdCgnc2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlSFRNTCcpKVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLmNvbW1lbnRDb252ZXJ0TW9kZSlcclxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuY29tbWVudENvbnZlcnRNb2RlID0gdmFsdWUgYXMgQ29tbWVudENvbnZlcnRNb2RlO1xyXG4gICAgICAgICAgICBjb21tZW50Q29udmVydE1vZGVEZXNjID0gZ2V0Q29tbWVudENvbnZlcnRNb2RlRGVzYyh0aGlzLnBsdWdpbi5zZXR0aW5ncy5jb21tZW50Q29udmVydE1vZGUpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5KCk7XHJcblxyXG4gICAgICAgICAgICBzZXR1cE1hcmtkb3duUGFyc2VyKHRoaXMucGx1Z2luLnNldHRpbmdzKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIGNvbnRhaW5lckVsLmNyZWF0ZUVsKCdwJywge1xyXG4gICAgICB0ZXh0OiBjb21tZW50Q29udmVydE1vZGVEZXNjLFxyXG4gICAgICBjbHM6ICdzZXR0aW5nLWl0ZW0tZGVzY3JpcHRpb24nXHJcbiAgICB9KTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250YWluZXJFbClcclxuICAgICAgLnNldE5hbWUodCgnc2V0dGluZ3NfZW5hYmxlSHRtbCcpKVxyXG4gICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19lbmFibGVIdG1sRGVzYycpKVxyXG4gICAgICAuYWRkVG9nZ2xlKCh0b2dnbGUpID0+XHJcbiAgICAgICAgdG9nZ2xlXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wbHVnaW4uc2V0dGluZ3MuZW5hYmxlSHRtbClcclxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2V0dGluZ3MuZW5hYmxlSHRtbCA9IHZhbHVlO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuXHJcbiAgICAgICAgICAgIEFwcFN0YXRlLm1hcmtkb3duUGFyc2VyLnNldCh7XHJcbiAgICAgICAgICAgICAgaHRtbDogdGhpcy5wbHVnaW4uc2V0dGluZ3MuZW5hYmxlSHRtbFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICApO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRhaW5lckVsKVxyXG4gICAgICAuc2V0TmFtZSh0KCdzZXR0aW5nc19yZXBsYWNlTWVkaWFMaW5rcycpKVxyXG4gICAgICAuc2V0RGVzYyh0KCdzZXR0aW5nc19yZXBsYWNlTWVkaWFMaW5rc0Rlc2MnKSlcclxuICAgICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgICAgIHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucGx1Z2luLnNldHRpbmdzLnJlcGxhY2VNZWRpYUxpbmtzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbi5zZXR0aW5ncy5yZXBsYWNlTWVkaWFMaW5rcyA9IHZhbHVlO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgIH0pLFxyXG4gICAgICApO1xyXG5cdH1cclxuXHJcbn1cclxuIiwgImltcG9ydCB7IFNldHRpbmcgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuaW1wb3J0IHsgb3BlblByb2ZpbGVNb2RhbCB9IGZyb20gJy4vd3AtcHJvZmlsZS1tb2RhbCc7XHJcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuaW1wb3J0IHsgcmVuZGVyZXJQcm9maWxlIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEFic3RyYWN0TW9kYWwgfSBmcm9tICcuL2Fic3RyYWN0LW1vZGFsJztcclxuXHJcblxyXG4vKipcclxuICogV29yZFByZXNzIHByb2ZpbGVzIG1hbmFnZSBtb2RhbC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBXcFByb2ZpbGVNYW5hZ2VNb2RhbCBleHRlbmRzIEFic3RyYWN0TW9kYWwge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHByb2ZpbGVzOiBXcFByb2ZpbGVbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICByZWFkb25seSBwbHVnaW46IFdvcmRwcmVzc1BsdWdpblxyXG4gICkge1xyXG4gICAgc3VwZXIocGx1Z2luKTtcclxuXHJcbiAgICB0aGlzLnByb2ZpbGVzID0gcGx1Z2luLnNldHRpbmdzLnByb2ZpbGVzO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgY29uc3QgcmVuZGVyUHJvZmlsZXMgPSAoKTogdm9pZCA9PiB7XHJcbiAgICAgIGNvbnRlbnQuZW1wdHkoKTtcclxuICAgICAgdGhpcy5wcm9maWxlcy5mb3JFYWNoKChwcm9maWxlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmcgPSByZW5kZXJlclByb2ZpbGUocHJvZmlsZSwgY29udGVudCk7XHJcbiAgICAgICAgaWYgKCFwcm9maWxlLmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgc2V0dGluZ1xyXG4gICAgICAgICAgICAuYWRkQnV0dG9uKGJ1dHRvbiA9PiBidXR0b25cclxuICAgICAgICAgICAgICAuc2V0QnV0dG9uVGV4dCh0aGlzLnQoJ3Byb2ZpbGVzTWFuYWdlTW9kYWxfc2V0RGVmYXVsdCcpKVxyXG4gICAgICAgICAgICAgIC5vbkNsaWNrKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvZmlsZXMuZm9yRWFjaChpdCA9PiBpdC5pc0RlZmF1bHQgPSBmYWxzZSk7XHJcbiAgICAgICAgICAgICAgICBwcm9maWxlLmlzRGVmYXVsdCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICByZW5kZXJQcm9maWxlcygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCkudGhlbigpO1xyXG4gICAgICAgICAgICAgIH0pKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2V0dGluZy5hZGRCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgICAgLnNldEJ1dHRvblRleHQodGhpcy50KCdwcm9maWxlc01hbmFnZU1vZGFsX3Nob3dEZXRhaWxzJykpXHJcbiAgICAgICAgICAub25DbGljayhhc3luYyAoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgcHJvZmlsZTogbmV3UHJvZmlsZSwgYXRJbmRleCB9ID0gYXdhaXQgb3BlblByb2ZpbGVNb2RhbChcclxuICAgICAgICAgICAgICB0aGlzLnBsdWdpbixcclxuICAgICAgICAgICAgICBwcm9maWxlLFxyXG4gICAgICAgICAgICAgIGluZGV4XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCd1cGRhdGVQcm9maWxlJywgbmV3UHJvZmlsZSwgYXRJbmRleCk7XHJcbiAgICAgICAgICAgIGlmICghaXNOaWwoYXRJbmRleCkgJiYgYXRJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgaWYgKG5ld1Byb2ZpbGUuaXNEZWZhdWx0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVzLmZvckVhY2goaXQgPT4gaXQuaXNEZWZhdWx0ID0gZmFsc2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVzW2F0SW5kZXhdID0gbmV3UHJvZmlsZTtcclxuICAgICAgICAgICAgICByZW5kZXJQcm9maWxlcygpO1xyXG4gICAgICAgICAgICAgIHRoaXMucGx1Z2luLnNhdmVTZXR0aW5ncygpLnRoZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgIHNldHRpbmcuYWRkRXh0cmFCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgICAgLnNldEljb24oJ2x1Y2lkZS10cmFzaCcpXHJcbiAgICAgICAgICAuc2V0VG9vbHRpcCh0aGlzLnQoJ3Byb2ZpbGVzTWFuYWdlTW9kYWxfZGVsZXRlVG9vbHRpcCcpKVxyXG4gICAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByb2ZpbGVzLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIGlmIChwcm9maWxlLmlzRGVmYXVsdCkge1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvZmlsZXNbMF0uaXNEZWZhdWx0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmVuZGVyUHJvZmlsZXMoKTtcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCkudGhlbigpO1xyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNyZWF0ZUhlYWRlcih0aGlzLnQoJ3Byb2ZpbGVzTWFuYWdlTW9kYWxfdGl0bGUnKSk7XHJcblxyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHRoaXMudCgncHJvZmlsZXNNYW5hZ2VNb2RhbF9jcmVhdGUnKSlcclxuICAgICAgLnNldERlc2ModGhpcy50KCdwcm9maWxlc01hbmFnZU1vZGFsX2NyZWF0ZURlc2MnKSlcclxuICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgLnNldEJ1dHRvblRleHQodGhpcy50KCdwcm9maWxlc01hbmFnZU1vZGFsX2NyZWF0ZScpKVxyXG4gICAgICAgIC5zZXRDdGEoKVxyXG4gICAgICAgIC5vbkNsaWNrKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHsgcHJvZmlsZSB9ID0gYXdhaXQgb3BlblByb2ZpbGVNb2RhbChcclxuICAgICAgICAgICAgdGhpcy5wbHVnaW5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnYXBwZW5kUHJvZmlsZScsIHByb2ZpbGUpO1xyXG4gICAgICAgICAgLy8gaWYgbm8gcHJvZmlsZSwgbWFrZSB0aGUgZmlyc3Qgb25lIGRlZmF1bHRcclxuICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICBwcm9maWxlLmlzRGVmYXVsdCA9IHRydWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAocHJvZmlsZS5pc0RlZmF1bHQpIHtcclxuICAgICAgICAgICAgdGhpcy5wcm9maWxlcy5mb3JFYWNoKGl0ID0+IGl0LmlzRGVmYXVsdCA9IGZhbHNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMucHJvZmlsZXMucHVzaChwcm9maWxlKTtcclxuICAgICAgICAgIHJlbmRlclByb2ZpbGVzKCk7XHJcbiAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICB9KSk7XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRFbC5jcmVhdGVFbCgnZGl2Jyk7XHJcbiAgICByZW5kZXJQcm9maWxlcygpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG4gICAgY29udGVudEVsLmVtcHR5KCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgTm90aWNlLCBTZXR0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7IFdwUHJvZmlsZSB9IGZyb20gJy4vd3AtcHJvZmlsZSc7XHJcbmltcG9ydCB7IEV2ZW50VHlwZSwgV1BfT0FVVEgyX1JFRElSRUNUX1VSSSB9IGZyb20gJy4vY29uc3RzJztcclxuaW1wb3J0IHsgV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZSB9IGZyb20gJy4vd3AtY2xpZW50JztcclxuaW1wb3J0IHsgZ2VuZXJhdGVDb2RlVmVyaWZpZXIsIE9BdXRoMkNsaWVudCB9IGZyb20gJy4vb2F1dGgyLWNsaWVudCc7XHJcbmltcG9ydCB7IEFwcFN0YXRlIH0gZnJvbSAnLi9hcHAtc3RhdGUnO1xyXG5pbXBvcnQgeyBpc1ZhbGlkVXJsLCBzaG93RXJyb3IgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgQXBpVHlwZSB9IGZyb20gJy4vcGx1Z2luLXNldHRpbmdzJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNb2RhbCB9IGZyb20gJy4vYWJzdHJhY3QtbW9kYWwnO1xyXG5cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvcGVuUHJvZmlsZU1vZGFsKFxyXG4gIHBsdWdpbjogV29yZHByZXNzUGx1Z2luLFxyXG4gIHByb2ZpbGU6IFdwUHJvZmlsZSA9IHtcclxuICAgIG5hbWU6ICcnLFxyXG4gICAgYXBpVHlwZTogQXBpVHlwZS5YTUxfUlBDLFxyXG4gICAgZW5kcG9pbnQ6ICcnLFxyXG4gICAgeG1sUnBjUGF0aDogJy94bWxycGMucGhwJyxcclxuICAgIHNhdmVVc2VybmFtZTogZmFsc2UsXHJcbiAgICBzYXZlUGFzc3dvcmQ6IGZhbHNlLFxyXG4gICAgaXNEZWZhdWx0OiBmYWxzZSxcclxuICAgIGxhc3RTZWxlY3RlZENhdGVnb3JpZXM6IFsgMSBdLFxyXG4gIH0sXHJcbiAgYXRJbmRleCA9IC0xXHJcbik6IFByb21pc2U8eyBwcm9maWxlOiBXcFByb2ZpbGUsIGF0SW5kZXg/OiBudW1iZXIgfT4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBXcFByb2ZpbGVNb2RhbChwbHVnaW4sIChwcm9maWxlLCBhdEluZGV4KSA9PiB7XHJcbiAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgIHByb2ZpbGUsXHJcbiAgICAgICAgYXRJbmRleFxyXG4gICAgICB9KTtcclxuICAgIH0sIHByb2ZpbGUsIGF0SW5kZXgpO1xyXG4gICAgbW9kYWwub3BlbigpO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogV29yZFByZXNzIHByb2ZpbGUgbW9kYWwuXHJcbiAqL1xyXG5jbGFzcyBXcFByb2ZpbGVNb2RhbCBleHRlbmRzIEFic3RyYWN0TW9kYWwge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHByb2ZpbGVEYXRhOiBXcFByb2ZpbGU7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgdG9rZW5Hb3RSZWY7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uU3VibWl0OiAocHJvZmlsZTogV3BQcm9maWxlLCBhdEluZGV4PzogbnVtYmVyKSA9PiB2b2lkLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwcm9maWxlOiBXcFByb2ZpbGUgPSB7XHJcbiAgICAgIG5hbWU6ICcnLFxyXG4gICAgICBhcGlUeXBlOiBBcGlUeXBlLlhNTF9SUEMsXHJcbiAgICAgIGVuZHBvaW50OiAnJyxcclxuICAgICAgeG1sUnBjUGF0aDogJy94bWxycGMucGhwJyxcclxuICAgICAgc2F2ZVVzZXJuYW1lOiBmYWxzZSxcclxuICAgICAgc2F2ZVBhc3N3b3JkOiBmYWxzZSxcclxuICAgICAgaXNEZWZhdWx0OiBmYWxzZSxcclxuICAgICAgbGFzdFNlbGVjdGVkQ2F0ZWdvcmllczogWyAxIF0sXHJcbiAgICB9LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBhdEluZGV4OiBudW1iZXIgPSAtMVxyXG4gICkge1xyXG4gICAgc3VwZXIocGx1Z2luKTtcclxuXHJcbiAgICB0aGlzLnByb2ZpbGVEYXRhID0gT2JqZWN0LmFzc2lnbih7fSwgcHJvZmlsZSk7XHJcbiAgICB0aGlzLnRva2VuR290UmVmID0gQXBwU3RhdGUuZXZlbnRzLm9uKEV2ZW50VHlwZS5PQVVUSDJfVE9LRU5fR09ULCBhc3luYyB0b2tlbiA9PiB7XHJcbiAgICAgIHRoaXMucHJvZmlsZURhdGEud3BDb21PQXV0aDJUb2tlbiA9IHRva2VuO1xyXG4gICAgICBpZiAoYXRJbmRleCA+PSAwKSB7XHJcbiAgICAgICAgLy8gaWYgdG9rZW4gaXMgdW5kZWZpbmVkLCBqdXN0IHJlbW92ZSBpdFxyXG4gICAgICAgIHRoaXMucGx1Z2luLnNldHRpbmdzLnByb2ZpbGVzW2F0SW5kZXhdLndwQ29tT0F1dGgyVG9rZW4gPSB0b2tlbjtcclxuICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW4oKSB7XHJcbiAgICBjb25zdCBnZXRBcGlUeXBlRGVzYyA9IChhcGlUeXBlOiBBcGlUeXBlKTogc3RyaW5nID0+IHtcclxuICAgICAgc3dpdGNoIChhcGlUeXBlKSB7XHJcbiAgICAgICAgY2FzZSBBcGlUeXBlLlhNTF9SUEM6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50KCdzZXR0aW5nc19hcGlUeXBlWG1sUnBjRGVzYycpO1xyXG4gICAgICAgIGNhc2UgQXBpVHlwZS5SZXN0QVBJX21pbmlPcmFuZ2U6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50KCdzZXR0aW5nc19hcGlUeXBlUmVzdE1pbmlPcmFuZ2VEZXNjJyk7XHJcbiAgICAgICAgY2FzZSBBcGlUeXBlLlJlc3RBcGlfQXBwbGljYXRpb25QYXNzd29yZHM6XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy50KCdzZXR0aW5nc19hcGlUeXBlUmVzdEFwcGxpY2F0aW9uUGFzc3dvcmRzRGVzYycpO1xyXG4gICAgICAgIGNhc2UgQXBpVHlwZS5SZXN0QXBpX1dwQ29tT0F1dGgyOlxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMudCgnc2V0dGluZ3NfYXBpVHlwZVJlc3RXcENvbU9BdXRoMkRlc2MnKTtcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgbGV0IGFwaURlc2MgPSBnZXRBcGlUeXBlRGVzYyh0aGlzLnByb2ZpbGVEYXRhLmFwaVR5cGUpO1xyXG5cclxuICAgIGNvbnN0IHJlbmRlclByb2ZpbGUgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnRlbnQuZW1wdHkoKTtcclxuXHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnQpXHJcbiAgICAgICAgLnNldE5hbWUodGhpcy50KCdwcm9maWxlTW9kYWxfbmFtZScpKVxyXG4gICAgICAgIC5zZXREZXNjKHRoaXMudCgncHJvZmlsZU1vZGFsX25hbWVEZXNjJykpXHJcbiAgICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0XHJcbiAgICAgICAgICAuc2V0UGxhY2Vob2xkZXIoJ1Byb2ZpbGUgbmFtZScpXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS5uYW1lID8/ICcnKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLm5hbWUgPSB2YWx1ZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgbmV3IFNldHRpbmcoY29udGVudClcclxuICAgICAgICAuc2V0TmFtZSh0aGlzLnQoJ3NldHRpbmdzX3VybCcpKVxyXG4gICAgICAgIC5zZXREZXNjKHRoaXMudCgnc2V0dGluZ3NfdXJsRGVzYycpKVxyXG4gICAgICAgIC5hZGRUZXh0KHRleHQgPT4gdGV4dFxyXG4gICAgICAgICAgLnNldFBsYWNlaG9sZGVyKHRoaXMudCgnc2V0dGluZ3NfdXJsUGxhY2Vob2xkZXInKSlcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnByb2ZpbGVEYXRhLmVuZHBvaW50KVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5wcm9maWxlRGF0YS5lbmRwb2ludCAhPT0gdmFsdWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLmVuZHBvaW50ID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pKTtcclxuICAgICAgbmV3IFNldHRpbmcoY29udGVudClcclxuICAgICAgICAuc2V0TmFtZSh0aGlzLnQoJ3NldHRpbmdzX2FwaVR5cGUnKSlcclxuICAgICAgICAuc2V0RGVzYyh0aGlzLnQoJ3NldHRpbmdzX2FwaVR5cGVEZXNjJykpXHJcbiAgICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xyXG4gICAgICAgICAgZHJvcGRvd25cclxuICAgICAgICAgICAgLmFkZE9wdGlvbihBcGlUeXBlLlhNTF9SUEMsIHRoaXMudCgnc2V0dGluZ3NfYXBpVHlwZVhtbFJwYycpKVxyXG4gICAgICAgICAgICAuYWRkT3B0aW9uKEFwaVR5cGUuUmVzdEFQSV9taW5pT3JhbmdlLCB0aGlzLnQoJ3NldHRpbmdzX2FwaVR5cGVSZXN0TWluaU9yYW5nZScpKVxyXG4gICAgICAgICAgICAuYWRkT3B0aW9uKEFwaVR5cGUuUmVzdEFwaV9BcHBsaWNhdGlvblBhc3N3b3JkcywgdGhpcy50KCdzZXR0aW5nc19hcGlUeXBlUmVzdEFwcGxpY2F0aW9uUGFzc3dvcmRzJykpXHJcbiAgICAgICAgICAgIC5hZGRPcHRpb24oQXBpVHlwZS5SZXN0QXBpX1dwQ29tT0F1dGgyLCB0aGlzLnQoJ3NldHRpbmdzX2FwaVR5cGVSZXN0V3BDb21PQXV0aDInKSlcclxuICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZURhdGEuYXBpVHlwZSlcclxuICAgICAgICAgICAgLm9uQ2hhbmdlKGFzeW5jICh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBoYXNFcnJvciA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGxldCBuZXdBcGlUeXBlID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBBcGlUeXBlLlJlc3RBcGlfV3BDb21PQXV0aDIpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5wcm9maWxlRGF0YS5lbmRwb2ludC5pbmNsdWRlcygnd29yZHByZXNzLmNvbScpKSB7XHJcbiAgICAgICAgICAgICAgICAgIHNob3dFcnJvcih0aGlzLnQoJ2Vycm9yX25vdFdwQ29tJykpO1xyXG4gICAgICAgICAgICAgICAgICBoYXNFcnJvciA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIG5ld0FwaVR5cGUgPSB0aGlzLnByb2ZpbGVEYXRhLmFwaVR5cGU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEuYXBpVHlwZSA9IG5ld0FwaVR5cGUgYXMgQXBpVHlwZTtcclxuICAgICAgICAgICAgICBhcGlEZXNjID0gZ2V0QXBpVHlwZURlc2ModGhpcy5wcm9maWxlRGF0YS5hcGlUeXBlKTtcclxuICAgICAgICAgICAgICByZW5kZXJQcm9maWxlKCk7XHJcbiAgICAgICAgICAgICAgaWYgKCFoYXNFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlID09PSBBcGlUeXBlLlJlc3RBcGlfV3BDb21PQXV0aDIpIHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZmlsZURhdGEud3BDb21PQXV0aDJUb2tlbikge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGVuZHBvaW50VXJsID0gbmV3IFVSTCh0aGlzLnByb2ZpbGVEYXRhLmVuZHBvaW50KTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBibG9nVXJsID0gbmV3IFVSTCh0aGlzLnByb2ZpbGVEYXRhLndwQ29tT0F1dGgyVG9rZW4uYmxvZ1VybCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVuZHBvaW50VXJsLmhvc3QgIT09IGJsb2dVcmwuaG9zdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoV3BDb21Ub2tlbigpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hXcENvbVRva2VuKCk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICBjb250ZW50LmNyZWF0ZUVsKCdwJywge1xyXG4gICAgICAgIHRleHQ6IGFwaURlc2MsXHJcbiAgICAgICAgY2xzOiAnc2V0dGluZy1pdGVtLWRlc2NyaXB0aW9uJ1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKHRoaXMucHJvZmlsZURhdGEuYXBpVHlwZSA9PT0gQXBpVHlwZS5YTUxfUlBDKSB7XHJcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGVudClcclxuICAgICAgICAgIC5zZXROYW1lKHRoaXMudCgnc2V0dGluZ3NfeG1sUnBjUGF0aCcpKVxyXG4gICAgICAgICAgLnNldERlc2ModGhpcy50KCdzZXR0aW5nc194bWxScGNQYXRoRGVzYycpKVxyXG4gICAgICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0XHJcbiAgICAgICAgICAgIC5zZXRQbGFjZWhvbGRlcignL3htbHJwYy5waHAnKVxyXG4gICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS54bWxScGNQYXRoID8/ICcnKVxyXG4gICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9maWxlRGF0YS54bWxScGNQYXRoID0gdmFsdWU7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLnByb2ZpbGVEYXRhLmFwaVR5cGUgPT09IEFwaVR5cGUuUmVzdEFwaV9XcENvbU9BdXRoMikge1xyXG4gICAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnQpXHJcbiAgICAgICAgICAuc2V0TmFtZSh0aGlzLnQoJ3NldHRpbmdzX3dwQ29tT0F1dGgyUmVmcmVzaFRva2VuJykpXHJcbiAgICAgICAgICAuc2V0RGVzYyh0aGlzLnQoJ3NldHRpbmdzX3dwQ29tT0F1dGgyUmVmcmVzaFRva2VuRGVzYycpKVxyXG4gICAgICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgICAgIC5zZXRCdXR0b25UZXh0KHRoaXMudCgnc2V0dGluZ3Nfd3BDb21PQXV0aDJWYWxpZGF0ZVRva2VuQnV0dG9uVGV4dCcpKVxyXG4gICAgICAgICAgICAub25DbGljaygoKSA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMucHJvZmlsZURhdGEud3BDb21PQXV0aDJUb2tlbikge1xyXG4gICAgICAgICAgICAgICAgT0F1dGgyQ2xpZW50LmdldFdwT0F1dGgyQ2xpZW50KHRoaXMucGx1Z2luKS52YWxpZGF0ZVRva2VuKHtcclxuICAgICAgICAgICAgICAgICAgdG9rZW46IHRoaXMucHJvZmlsZURhdGEud3BDb21PQXV0aDJUb2tlbi5hY2Nlc3NUb2tlblxyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmNvZGUgPT09IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuRXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dFcnJvcihyZXN1bHQuZXJyb3I/Lm1lc3NhZ2UgKyAnJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UodGhpcy50KCdtZXNzYWdlX3dwQ29tVG9rZW5WYWxpZGF0ZWQnKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgICAgIC5zZXRCdXR0b25UZXh0KHRoaXMudCgnc2V0dGluZ3Nfd3BDb21PQXV0aDJSZWZyZXNoVG9rZW5CdXR0b25UZXh0JykpXHJcbiAgICAgICAgICAgIC5vbkNsaWNrKGFzeW5jICgpID0+IHtcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnJlZnJlc2hXcENvbVRva2VuKCk7XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMucHJvZmlsZURhdGEuYXBpVHlwZSAhPT0gQXBpVHlwZS5SZXN0QXBpX1dwQ29tT0F1dGgyKSB7XHJcbiAgICAgICAgY29uc3QgdXNlcm5hbWVTZXR0aW5nID0gbmV3IFNldHRpbmcoY29udGVudClcclxuICAgICAgICAgIC5zZXROYW1lKHRoaXMudCgncHJvZmlsZU1vZGFsX3JlbWVtYmVyVXNlcm5hbWUnKSk7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvZmlsZURhdGEuc2F2ZVVzZXJuYW1lKSB7XHJcbiAgICAgICAgICB1c2VybmFtZVNldHRpbmdcclxuICAgICAgICAgICAgLmFkZFRleHQodGV4dCA9PiB0ZXh0XHJcbiAgICAgICAgICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZURhdGEudXNlcm5hbWUgPz8gJycpXHJcbiAgICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9maWxlRGF0YS51c2VybmFtZSA9IHZhbHVlO1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHVzZXJuYW1lU2V0dGluZy5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZURhdGEuc2F2ZVVzZXJuYW1lKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKHNhdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLnNhdmVVc2VybmFtZSA9IHNhdmU7XHJcbiAgICAgICAgICAgIHJlbmRlclByb2ZpbGUoKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICBjb25zdCBwYXNzd29yZFNldHRpbmcgPSBuZXcgU2V0dGluZyhjb250ZW50KVxyXG4gICAgICAgICAgLnNldE5hbWUodGhpcy50KCdwcm9maWxlTW9kYWxfcmVtZW1iZXJQYXNzd29yZCcpKTtcclxuICAgICAgICBpZiAodGhpcy5wcm9maWxlRGF0YS5zYXZlUGFzc3dvcmQpIHtcclxuICAgICAgICAgIHBhc3N3b3JkU2V0dGluZ1xyXG4gICAgICAgICAgICAuYWRkVGV4dCh0ZXh0ID0+IHRleHRcclxuICAgICAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS5wYXNzd29yZCA/PyAnJylcclxuICAgICAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLnBhc3N3b3JkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcGFzc3dvcmRTZXR0aW5nLmFkZFRvZ2dsZSh0b2dnbGUgPT4gdG9nZ2xlXHJcbiAgICAgICAgICAuc2V0VmFsdWUodGhpcy5wcm9maWxlRGF0YS5zYXZlUGFzc3dvcmQpXHJcbiAgICAgICAgICAub25DaGFuZ2Uoc2F2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucHJvZmlsZURhdGEuc2F2ZVBhc3N3b3JkID0gc2F2ZTtcclxuICAgICAgICAgICAgcmVuZGVyUHJvZmlsZSgpO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnQpXHJcbiAgICAgICAgLnNldE5hbWUodGhpcy50KCdwcm9maWxlTW9kYWxfc2V0RGVmYXVsdCcpKVxyXG4gICAgICAgIC5hZGRUb2dnbGUodG9nZ2xlID0+IHRvZ2dsZVxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZURhdGEuaXNEZWZhdWx0KVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnByb2ZpbGVEYXRhLmlzRGVmYXVsdCA9IHZhbHVlO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgbmV3IFNldHRpbmcoY29udGVudClcclxuICAgICAgICAuYWRkQnV0dG9uKGJ1dHRvbiA9PiBidXR0b25cclxuICAgICAgICAgIC5zZXRCdXR0b25UZXh0KHRoaXMudCgncHJvZmlsZU1vZGFsX1NhdmUnKSlcclxuICAgICAgICAgIC5zZXRDdGEoKVxyXG4gICAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIWlzVmFsaWRVcmwodGhpcy5wcm9maWxlRGF0YS5lbmRwb2ludCkpIHtcclxuICAgICAgICAgICAgICBzaG93RXJyb3IodGhpcy50KCdlcnJvcl9pbnZhbGlkVXJsJykpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZURhdGEubmFtZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICBzaG93RXJyb3IodGhpcy50KCdlcnJvcl9ub1Byb2ZpbGVOYW1lJykpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJvZmlsZURhdGEuc2F2ZVVzZXJuYW1lICYmICF0aGlzLnByb2ZpbGVEYXRhLnVzZXJuYW1lKSB7XHJcbiAgICAgICAgICAgICAgc2hvd0Vycm9yKHRoaXMudCgnZXJyb3Jfbm9Vc2VybmFtZScpKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByb2ZpbGVEYXRhLnNhdmVQYXNzd29yZCAmJiAhdGhpcy5wcm9maWxlRGF0YS5wYXNzd29yZCkge1xyXG4gICAgICAgICAgICAgIHNob3dFcnJvcih0aGlzLnQoJ2Vycm9yX25vUGFzc3dvcmQnKSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCh0aGlzLnByb2ZpbGVEYXRhLCB0aGlzLmF0SW5kZXgpO1xyXG4gICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuY3JlYXRlSGVhZGVyKHRoaXMudCgncHJvZmlsZU1vZGFsX3RpdGxlJykpO1xyXG5cclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50RWwuY3JlYXRlRWwoJ2RpdicpO1xyXG4gICAgcmVuZGVyUHJvZmlsZSgpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIGlmICh0aGlzLnRva2VuR290UmVmKSB7XHJcbiAgICAgIEFwcFN0YXRlLmV2ZW50cy5vZmZyZWYodGhpcy50b2tlbkdvdFJlZik7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoV3BDb21Ub2tlbigpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIEFwcFN0YXRlLmNvZGVWZXJpZmllciA9IGdlbmVyYXRlQ29kZVZlcmlmaWVyKCk7XHJcbiAgICBhd2FpdCBPQXV0aDJDbGllbnQuZ2V0V3BPQXV0aDJDbGllbnQodGhpcy5wbHVnaW4pLmdldEF1dGhvcml6ZUNvZGUoe1xyXG4gICAgICByZWRpcmVjdFVyaTogV1BfT0FVVEgyX1JFRElSRUNUX1VSSSxcclxuICAgICAgc2NvcGU6IFsgJ3Bvc3RzJywgJ3RheG9ub215JywgJ21lZGlhJywgJ3NpdGVzJyBdLFxyXG4gICAgICBibG9nOiB0aGlzLnByb2ZpbGVEYXRhLmVuZHBvaW50LFxyXG4gICAgICBjb2RlVmVyaWZpZXI6IEFwcFN0YXRlLmNvZGVWZXJpZmllclxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiZXhwb3J0IGNvbnN0IEVSUk9SX05PVElDRV9USU1FT1VUID0gMTUwMDA7XHJcblxyXG5leHBvcnQgY29uc3QgV1BfT0FVVEgyX0NMSUVOVF9JRCA9ICc3OTA4NSc7XHJcbmV4cG9ydCBjb25zdCBXUF9PQVVUSDJfQ0xJRU5UX1NFQ1JFVCA9ICd6ZzRtS3k5TzFtYzFtbXluU2hKVFZ4czhyMWszWDRlM2cxc3Y1VVJsa3BacWxXZFVkQUE3QzJTU0JPbzAyUDdYJztcclxuZXhwb3J0IGNvbnN0IFdQX09BVVRIMl9UT0tFTl9FTkRQT0lOVCA9ICdodHRwczovL3B1YmxpYy1hcGkud29yZHByZXNzLmNvbS9vYXV0aDIvdG9rZW4nO1xyXG5leHBvcnQgY29uc3QgV1BfT0FVVEgyX0FVVEhPUklaRV9FTkRQT0lOVCA9ICdodHRwczovL3B1YmxpYy1hcGkud29yZHByZXNzLmNvbS9vYXV0aDIvYXV0aG9yaXplJztcclxuZXhwb3J0IGNvbnN0IFdQX09BVVRIMl9WQUxJREFURV9UT0tFTl9FTkRQT0lOVCA9ICdodHRwczovL3B1YmxpYy1hcGkud29yZHByZXNzLmNvbS9vYXV0aDIvdG9rZW4taW5mbyc7XHJcbmV4cG9ydCBjb25zdCBXUF9PQVVUSDJfVVJMX0FDVElPTiA9ICd3b3JkcHJlc3MtcGx1Z2luLW9hdXRoJztcclxuZXhwb3J0IGNvbnN0IFdQX09BVVRIMl9SRURJUkVDVF9VUkkgPSBgb2JzaWRpYW46Ly8ke1dQX09BVVRIMl9VUkxfQUNUSU9OfWA7XHJcblxyXG5leHBvcnQgY29uc3QgV1BfREVGQVVMVF9QUk9GSUxFX05BTUUgPSAnRGVmYXVsdCc7XHJcblxyXG5leHBvcnQgY29uc3QgZW51bSBFdmVudFR5cGUge1xyXG4gIE9BVVRIMl9UT0tFTl9HT1QgPSAnT0FVVEgyX1RPS0VOX0dPVCcsXHJcbn1cclxuIiwgImltcG9ydCB7IEFwcCwgTm90aWNlLCBTZXR0aW5nLCBURmlsZSB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuaW1wb3J0IHsgV29yZHByZXNzUGx1Z2luU2V0dGluZ3MgfSBmcm9tICcuL3BsdWdpbi1zZXR0aW5ncyc7XHJcbmltcG9ydCB7IE1hcmtkb3duSXRNYXRoSmF4M1BsdWdpbkluc3RhbmNlIH0gZnJvbSAnLi9tYXJrZG93bi1pdC1tYXRoamF4My1wbHVnaW4nO1xyXG5pbXBvcnQgeyBXb3JkUHJlc3NDbGllbnRSZXN1bHQsIFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUsIFdvcmRQcmVzc1Bvc3RQYXJhbXMgfSBmcm9tICcuL3dwLWNsaWVudCc7XHJcbmltcG9ydCB7IGdldFdvcmRQcmVzc0NsaWVudCB9IGZyb20gJy4vd3AtY2xpZW50cyc7XHJcbmltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgaXNTdHJpbmcgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBFUlJPUl9OT1RJQ0VfVElNRU9VVCB9IGZyb20gJy4vY29uc3RzJztcclxuaW1wb3J0IHsgZm9ybWF0IH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5pbXBvcnQgeyBNYXR0ZXJEYXRhIH0gZnJvbSAnLi90eXBlcyc7XHJcbmltcG9ydCB7IE1hcmtkb3duSXRDb21tZW50UGx1Z2luSW5zdGFuY2UgfSBmcm9tICcuL21hcmtkb3duLWl0LWNvbW1lbnQtcGx1Z2luJztcclxuXHJcbmV4cG9ydCB0eXBlIFNhZmVBbnkgPSBhbnk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5XaXRoQnJvd3Nlcih1cmw6IHN0cmluZywgcXVlcnlQYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVuZGVmaW5lZHxudW1iZXJ8c3RyaW5nPiA9IHt9KTogdm9pZCB7XHJcbiAgd2luZG93Lm9wZW4oYCR7dXJsfT8ke2dlbmVyYXRlUXVlcnlTdHJpbmcocXVlcnlQYXJhbXMpfWApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVRdWVyeVN0cmluZyhwYXJhbXM6IFJlY29yZDxzdHJpbmcsIHVuZGVmaW5lZHxudW1iZXJ8c3RyaW5nPik6IHN0cmluZyB7XHJcbiAgcmV0dXJuIG5ldyBVUkxTZWFyY2hQYXJhbXMoXHJcbiAgICBPYmplY3QuZnJvbUVudHJpZXMoXHJcbiAgICAgIE9iamVjdC5lbnRyaWVzKHBhcmFtcykuZmlsdGVyKCAoW2ssIHZdKSA9PiB2IT09dW5kZWZpbmVkKVxyXG4gICAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XHJcbiAgKS50b1N0cmluZygpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNQcm9taXNlRnVsZmlsbGVkUmVzdWx0PFQ+KG9iajogU2FmZUFueSk6IG9iaiBpcyBQcm9taXNlRnVsZmlsbGVkUmVzdWx0PFQ+IHtcclxuICByZXR1cm4gISFvYmogJiYgb2JqLnN0YXR1cyA9PT0gJ2Z1bGZpbGxlZCcgJiYgb2JqLnZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBNYXJrZG93blBhcnNlcihzZXR0aW5nczogV29yZHByZXNzUGx1Z2luU2V0dGluZ3MpOiB2b2lkIHtcclxuICBNYXJrZG93bkl0TWF0aEpheDNQbHVnaW5JbnN0YW5jZS51cGRhdGVPdXRwdXRUeXBlKHNldHRpbmdzLm1hdGhKYXhPdXRwdXRUeXBlKTtcclxuICBNYXJrZG93bkl0Q29tbWVudFBsdWdpbkluc3RhbmNlLnVwZGF0ZUNvbnZlcnRNb2RlKHNldHRpbmdzLmNvbW1lbnRDb252ZXJ0TW9kZSk7XHJcbn1cclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyZXJQcm9maWxlKHByb2ZpbGU6IFdwUHJvZmlsZSwgY29udGFpbmVyOiBIVE1MRWxlbWVudCk6IFNldHRpbmcge1xyXG4gIGxldCBuYW1lID0gcHJvZmlsZS5uYW1lO1xyXG4gIGlmIChwcm9maWxlLmlzRGVmYXVsdCkge1xyXG4gICAgbmFtZSArPSAnIFx1MjcxNFx1RkUwRic7XHJcbiAgfVxyXG4gIGxldCBkZXNjID0gcHJvZmlsZS5lbmRwb2ludDtcclxuICBpZiAocHJvZmlsZS53cENvbU9BdXRoMlRva2VuKSB7XHJcbiAgICBkZXNjICs9IGAgLyBcdUQ4M0NcdUREOTQgLyBcdUQ4M0RcdUREMTJgO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAocHJvZmlsZS5zYXZlVXNlcm5hbWUpIHtcclxuICAgICAgZGVzYyArPSBgIC8gXHVEODNDXHVERDk0ICR7cHJvZmlsZS51c2VybmFtZX1gO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb2ZpbGUuc2F2ZVBhc3N3b3JkKSB7XHJcbiAgICAgIGRlc2MgKz0gJyAvIFx1RDgzRFx1REQxMiAqKioqKionO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gbmV3IFNldHRpbmcoY29udGFpbmVyKVxyXG4gICAgLnNldE5hbWUobmFtZSlcclxuICAgIC5zZXREZXNjKGRlc2MpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFVybCh1cmw6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gIHRyeSB7XHJcbiAgICByZXR1cm4gQm9vbGVhbihuZXcgVVJMKHVybCkpO1xyXG4gIH0gY2F0Y2goZSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGRvQ2xpZW50UHVibGlzaChwbHVnaW46IFdvcmRwcmVzc1BsdWdpbiwgcHJvZmlsZTogV3BQcm9maWxlLCBkZWZhdWx0UG9zdFBhcmFtcz86IFdvcmRQcmVzc1Bvc3RQYXJhbXMpOiB2b2lkO1xyXG5leHBvcnQgZnVuY3Rpb24gZG9DbGllbnRQdWJsaXNoKHBsdWdpbjogV29yZHByZXNzUGx1Z2luLCBwcm9maWxlTmFtZTogc3RyaW5nLCBkZWZhdWx0UG9zdFBhcmFtcz86IFdvcmRQcmVzc1Bvc3RQYXJhbXMpOiB2b2lkO1xyXG5leHBvcnQgZnVuY3Rpb24gZG9DbGllbnRQdWJsaXNoKFxyXG4gIHBsdWdpbjogV29yZHByZXNzUGx1Z2luLFxyXG4gIHByb2ZpbGVPck5hbWU6IFdwUHJvZmlsZSB8IHN0cmluZyxcclxuICBkZWZhdWx0UG9zdFBhcmFtcz86IFdvcmRQcmVzc1Bvc3RQYXJhbXNcclxuKTogdm9pZCB7XHJcbiAgbGV0IHByb2ZpbGU6IFdwUHJvZmlsZSB8IHVuZGVmaW5lZDtcclxuICBpZiAoaXNTdHJpbmcocHJvZmlsZU9yTmFtZSkpIHtcclxuICAgIHByb2ZpbGUgPSBwbHVnaW4uc2V0dGluZ3MucHJvZmlsZXMuZmluZChpdCA9PiBpdC5uYW1lID09PSBwcm9maWxlT3JOYW1lKTtcclxuICB9IGVsc2Uge1xyXG4gICAgcHJvZmlsZSA9IHByb2ZpbGVPck5hbWU7XHJcbiAgfVxyXG4gIGlmIChwcm9maWxlKSB7XHJcbiAgICBjb25zdCBjbGllbnQgPSBnZXRXb3JkUHJlc3NDbGllbnQocGx1Z2luLCBwcm9maWxlKTtcclxuICAgIGlmIChjbGllbnQpIHtcclxuICAgICAgY2xpZW50LnB1Ymxpc2hQb3N0KGRlZmF1bHRQb3N0UGFyYW1zKS50aGVuKCk7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnN0IG5vU3VjaFByb2ZpbGVNZXNzYWdlID0gcGx1Z2luLmkxOG4udCgnZXJyb3Jfbm9TdWNoUHJvZmlsZScsIHtcclxuICAgICAgcHJvZmlsZU5hbWU6IFN0cmluZyhwcm9maWxlT3JOYW1lKVxyXG4gICAgfSk7XHJcbiAgICBzaG93RXJyb3Iobm9TdWNoUHJvZmlsZU1lc3NhZ2UpO1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKG5vU3VjaFByb2ZpbGVNZXNzYWdlKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRCb3VuZGFyeSgpOiBzdHJpbmcge1xyXG4gIHJldHVybiBgLS0tLW9ic2lkaWFuQm91bmRhcnkke2Zvcm1hdChuZXcgRGF0ZSgpLCAneXl5eU1NZGRISG1tc3MnKX1gO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2hvd0Vycm9yPFQ+KGVycm9yOiB1bmtub3duKTogV29yZFByZXNzQ2xpZW50UmVzdWx0PFQ+IHtcclxuICBsZXQgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgaWYgKGlzU3RyaW5nKGVycm9yKSkge1xyXG4gICAgZXJyb3JNZXNzYWdlID0gZXJyb3I7XHJcbiAgfSBlbHNlIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XHJcbiAgICBlcnJvck1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBlcnJvck1lc3NhZ2UgPSAoZXJyb3IgYXMgU2FmZUFueSkudG9TdHJpbmcoKTtcclxuICB9XHJcbiAgbmV3IE5vdGljZShgXHUyNzRDICR7IGVycm9yTWVzc2FnZSB9YCwgRVJST1JfTk9USUNFX1RJTUVPVVQpO1xyXG4gIHJldHVybiB7XHJcbiAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLkVycm9yIGFzIGNvbnN0LFxyXG4gICAgZXJyb3I6IHtcclxuICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcixcclxuICAgICAgbWVzc2FnZTogZXJyb3JNZXNzYWdlLFxyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRmlsZShmaWxlOiBURmlsZSwgYXBwOiBBcHApOiBQcm9taXNlPHsgY29udGVudDogc3RyaW5nLCBtYXR0ZXI6IE1hdHRlckRhdGEgfT4ge1xyXG4gIGxldCBmbSA9IGFwcC5tZXRhZGF0YUNhY2hlLmdldEZpbGVDYWNoZShmaWxlKT8uZnJvbnRtYXR0ZXI7XHJcbiAgaWYgKCFmbSkge1xyXG4gICAgYXdhaXQgYXBwLmZpbGVNYW5hZ2VyLnByb2Nlc3NGcm9udE1hdHRlcihmaWxlLCBtYXR0ZXIgPT4ge1xyXG4gICAgICBmbSA9IG1hdHRlclxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnN0IHJhdyA9IGF3YWl0IGFwcC52YXVsdC5yZWFkKGZpbGUpO1xyXG4gIHJldHVybiB7XHJcbiAgICBjb250ZW50OiByYXcucmVwbGFjZSgvXi0tLVtcXHNcXFNdKz8tLS0vLCAnJykudHJpbSgpLFxyXG4gICAgbWF0dGVyOiBmbSA/PyB7fVxyXG4gIH07XHJcbn1cclxuIiwgImltcG9ydCBNYXJrZG93bkl0IGZyb20gJ21hcmtkb3duLWl0JztcclxuaW1wb3J0IFN0YXRlSW5saW5lIGZyb20gJ21hcmtkb3duLWl0L2xpYi9ydWxlc19pbmxpbmUvc3RhdGVfaW5saW5lJztcclxuaW1wb3J0IFN0YXRlQmxvY2sgZnJvbSAnbWFya2Rvd24taXQvbGliL3J1bGVzX2Jsb2NrL3N0YXRlX2Jsb2NrJztcclxuaW1wb3J0IHsgVGVYIH0gZnJvbSAnbWF0aGpheC1mdWxsL2pzL2lucHV0L3RleCc7XHJcbmltcG9ydCB7IEFsbFBhY2thZ2VzIH0gZnJvbSAnbWF0aGpheC1mdWxsL2pzL2lucHV0L3RleC9BbGxQYWNrYWdlcyc7XHJcbmltcG9ydCB7IFNWRyB9IGZyb20gJ21hdGhqYXgtZnVsbC9qcy9vdXRwdXQvc3ZnJztcclxuaW1wb3J0IFRva2VuIGZyb20gJ21hcmtkb3duLWl0L2xpYi90b2tlbic7XHJcbmltcG9ydCB7IGxpdGVBZGFwdG9yIH0gZnJvbSAnbWF0aGpheC1mdWxsL2pzL2FkYXB0b3JzL2xpdGVBZGFwdG9yJztcclxuaW1wb3J0IHsgUmVnaXN0ZXJIVE1MSGFuZGxlciB9IGZyb20gJ21hdGhqYXgtZnVsbC9qcy9oYW5kbGVycy9odG1sJztcclxuaW1wb3J0IHsgQXNzaXN0aXZlTW1sSGFuZGxlciB9IGZyb20gJ21hdGhqYXgtZnVsbC9qcy9hMTF5L2Fzc2lzdGl2ZS1tbWwnO1xyXG5pbXBvcnQgeyBtYXRoamF4IH0gZnJvbSAnbWF0aGpheC1mdWxsL2pzL21hdGhqYXgnO1xyXG5pbXBvcnQganVpY2UgZnJvbSAnanVpY2UnO1xyXG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IE1hdGhKYXhPdXRwdXRUeXBlIH0gZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MnO1xyXG5cclxuY29uc3QgaW5saW5lVG9rZW5UeXBlID0gJ21hdGhfaW5saW5lJztcclxuY29uc3QgYmxvY2tUb2tlblR5cGUgPSAnbWF0aF9ibG9jayc7XHJcblxyXG5pbnRlcmZhY2UgTWFya2Rvd25JdE1hdGhKYXgzUGx1Z2luT3B0aW9ucyB7XHJcbiAgb3V0cHV0VHlwZTogTWF0aEpheE91dHB1dFR5cGU7XHJcbn1cclxuXHJcbmNvbnN0IHBsdWdpbk9wdGlvbnM6IE1hcmtkb3duSXRNYXRoSmF4M1BsdWdpbk9wdGlvbnMgPSB7XHJcbiAgb3V0cHV0VHlwZTogTWF0aEpheE91dHB1dFR5cGUuVGVYLFxyXG59XHJcblxyXG5pbnRlcmZhY2UgQ29udmVydE9wdGlvbnMge1xyXG4gIGRpc3BsYXk6IGJvb2xlYW5cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IE1hcmtkb3duSXRNYXRoSmF4M1BsdWdpbkluc3RhbmNlID0ge1xyXG4gIHBsdWdpbjogcGx1Z2luLFxyXG4gIHVwZGF0ZU91dHB1dFR5cGU6ICh0eXBlOiBNYXRoSmF4T3V0cHV0VHlwZSkgPT4ge1xyXG4gICAgcGx1Z2luT3B0aW9ucy5vdXRwdXRUeXBlID0gdHlwZTtcclxuICB9LFxyXG59XHJcblxyXG5mdW5jdGlvbiBwbHVnaW4obWQ6IE1hcmtkb3duSXQpOiB2b2lkIHtcclxuICAvLyBzZXQgTWF0aEpheCBhcyB0aGUgcmVuZGVyZXIgZm9yIG1hcmtkb3duLWl0LXNpbXBsZW1hdGhcclxuICBtZC5pbmxpbmUucnVsZXIuYWZ0ZXIoJ2VzY2FwZScsIGlubGluZVRva2VuVHlwZSwgbWF0aElubGluZSk7XHJcbiAgbWQuYmxvY2sucnVsZXIuYWZ0ZXIoJ2Jsb2NrcXVvdGUnLCBibG9ja1Rva2VuVHlwZSwgbWF0aEJsb2NrLCB7XHJcbiAgICBhbHQ6IFsncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJywgJ2xpc3QnXSxcclxuICB9KTtcclxuICBtZC5yZW5kZXJlci5ydWxlc1tpbmxpbmVUb2tlblR5cGVdID0gKHRva2VuczogVG9rZW5bXSwgaWR4OiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiByZW5kZXJNYXRoKHRva2Vuc1tpZHhdLmNvbnRlbnQsIHtcclxuICAgICAgZGlzcGxheTogZmFsc2VcclxuICAgIH0pO1xyXG4gIH07XHJcbiAgbWQucmVuZGVyZXIucnVsZXNbYmxvY2tUb2tlblR5cGVdID0gKHRva2VuczogVG9rZW5bXSwgaWR4OiBudW1iZXIpID0+IHtcclxuICAgIHJldHVybiByZW5kZXJNYXRoKHRva2Vuc1tpZHhdLmNvbnRlbnQsIHtcclxuICAgICAgZGlzcGxheTogdHJ1ZVxyXG4gICAgfSk7XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gcmVuZGVyTWF0aChjb250ZW50OiBzdHJpbmcsIGNvbnZlcnRPcHRpb25zOiBDb252ZXJ0T3B0aW9ucyk6IHN0cmluZyB7XHJcbiAgaWYgKHBsdWdpbk9wdGlvbnMub3V0cHV0VHlwZSA9PT0gTWF0aEpheE91dHB1dFR5cGUuU1ZHKSB7XHJcbiAgICBjb25zdCBkb2N1bWVudE9wdGlvbnMgPSB7XHJcbiAgICAgIElucHV0SmF4OiBuZXcgVGVYKHsgcGFja2FnZXM6IEFsbFBhY2thZ2VzIH0pLFxyXG4gICAgICBPdXRwdXRKYXg6IG5ldyBTVkcoeyBmb250Q2FjaGU6ICdub25lJyB9KVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGFkYXB0b3IgPSBsaXRlQWRhcHRvcigpO1xyXG4gICAgY29uc3QgaGFuZGxlciA9IFJlZ2lzdGVySFRNTEhhbmRsZXIoYWRhcHRvcik7XHJcbiAgICBBc3Npc3RpdmVNbWxIYW5kbGVyKGhhbmRsZXIpO1xyXG4gICAgY29uc3QgbWF0aERvY3VtZW50ID0gbWF0aGpheC5kb2N1bWVudChjb250ZW50LCBkb2N1bWVudE9wdGlvbnMpO1xyXG4gICAgY29uc3QgaHRtbCA9IGFkYXB0b3Iub3V0ZXJIVE1MKG1hdGhEb2N1bWVudC5jb252ZXJ0KGNvbnRlbnQsIGNvbnZlcnRPcHRpb25zKSk7XHJcbiAgICBjb25zdCBzdHlsZXNoZWV0ID0gYWRhcHRvci5vdXRlckhUTUwoZG9jdW1lbnRPcHRpb25zLk91dHB1dEpheC5zdHlsZVNoZWV0KG1hdGhEb2N1bWVudCkgYXMgU2FmZUFueSk7XHJcbiAgICByZXR1cm4ganVpY2UoaHRtbCArIHN0eWxlc2hlZXQpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAoY29udmVydE9wdGlvbnMuZGlzcGxheSkge1xyXG4gICAgICByZXR1cm4gYCQkXFxuJHtjb250ZW50fSQkXFxuYDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgJCR7Y29udGVudH0kYDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi8vIFRlc3QgaWYgcG90ZW50aWFsIG9wZW5pbmcgb3IgY2xvc2luZyBkZWxpbWl0ZXJcclxuLy8gQXNzdW1lcyB0aGF0IHRoZXJlIGlzIGEgJyQnIGF0IHN0YXRlLnNyY1twb3NdXHJcbmZ1bmN0aW9uIGlzVmFsaWREZWxpbWl0ZXIoc3RhdGU6IFN0YXRlSW5saW5lLCBwb3M6IG51bWJlcikge1xyXG4gIGNvbnN0IG1heCA9IHN0YXRlLnBvc01heDtcclxuICBsZXQgY2FuT3BlbiA9IHRydWU7XHJcbiAgbGV0IGNhbkNsb3NlID0gdHJ1ZTtcclxuXHJcbiAgY29uc3QgcHJldkNoYXIgPSBwb3MgPiAwID8gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zIC0gMSkgOiAtMTtcclxuICBjb25zdCBuZXh0Q2hhciA9IHBvcyArIDEgPD0gbWF4ID8gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zICsgMSkgOiAtMTtcclxuXHJcbiAgLy8gQ2hlY2sgbm9uLXdoaXRlc3BhY2UgY29uZGl0aW9ucyBmb3Igb3BlbmluZyBhbmQgY2xvc2luZywgYW5kXHJcbiAgLy8gY2hlY2sgdGhhdCBjbG9zaW5nIGRlbGltaXRlciBpc24ndCBmb2xsb3dlZCBieSBhIG51bWJlclxyXG4gIGlmIChwcmV2Q2hhciA9PT0gMHgyMCAvKiAnICcgKi9cclxuICAgIHx8IHByZXZDaGFyID09PSAweDA5IC8qIFxcdCAqL1xyXG4gICAgfHwgKG5leHRDaGFyID49IDB4MzAgLyogJzAnICovICYmIG5leHRDaGFyIDw9IDB4MzkpIC8qICc5JyAqL1xyXG4gICkge1xyXG4gICAgY2FuQ2xvc2UgPSBmYWxzZTtcclxuICB9XHJcbiAgaWYgKG5leHRDaGFyID09PSAweDIwIC8qICcgJyAqLyB8fCBuZXh0Q2hhciA9PT0gMHgwOSAvKiBcXHQgKi8pIHtcclxuICAgIGNhbk9wZW4gPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJldHVybiB7XHJcbiAgICBjYW5PcGVuLFxyXG4gICAgY2FuQ2xvc2VcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtYXRoSW5saW5lKHN0YXRlOiBTdGF0ZUlubGluZSwgc2lsZW50OiBib29sZWFuKSB7XHJcbiAgaWYgKHN0YXRlLnNyY1tzdGF0ZS5wb3NdICE9PSAnJCcpIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIGxldCByZXMgPSBpc1ZhbGlkRGVsaW1pdGVyKHN0YXRlLCBzdGF0ZS5wb3MpO1xyXG4gIGlmICghcmVzLmNhbk9wZW4pIHtcclxuICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgIHN0YXRlLnBlbmRpbmcgKz0gJyQnO1xyXG4gICAgfVxyXG4gICAgc3RhdGUucG9zICs9IDE7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIEZpcnN0IGNoZWNrIGZvciBhbmQgYnlwYXNzIGFsbCBwcm9wZXJseSBlc2NhcGVkIGRlbGltaXRlcnNcclxuICAvLyBUaGlzIGxvb3Agd2lsbCBhc3N1bWUgdGhhdCB0aGUgZmlyc3QgbGVhZGluZyBiYWNrdGljayBjYW4gbm90XHJcbiAgLy8gYmUgdGhlIGZpcnN0IGNoYXJhY3RlciBpbiBzdGF0ZS5zcmMsIHdoaWNoIGlzIGtub3duIHNpbmNlXHJcbiAgLy8gd2UgaGF2ZSBmb3VuZCBhbiBvcGVuaW5nIGRlbGltaXRlciBhbHJlYWR5LlxyXG4gIGNvbnN0IHN0YXJ0ID0gc3RhdGUucG9zICsgMTtcclxuICBsZXQgbWF0Y2ggPSBzdGFydDtcclxuICB3aGlsZSAoKG1hdGNoID0gc3RhdGUuc3JjLmluZGV4T2YoJyQnLCBtYXRjaCkpICE9PSAtMSkge1xyXG4gICAgLy8gRm91bmQgcG90ZW50aWFsICQsIGxvb2sgZm9yIGVzY2FwZXMsIHBvcyB3aWxsIHBvaW50IHRvXHJcbiAgICAvLyBmaXJzdCBub24gZXNjYXBlIHdoZW4gY29tcGxldGVcclxuICAgIGxldCBwb3MgPSBtYXRjaCAtIDE7XHJcbiAgICB3aGlsZSAoc3RhdGUuc3JjW3Bvc10gPT09ICdcXFxcJykge1xyXG4gICAgICBwb3MgLT0gMTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBFdmVuIG51bWJlciBvZiBlc2NhcGVzLCBwb3RlbnRpYWwgY2xvc2luZyBkZWxpbWl0ZXIgZm91bmRcclxuICAgIGlmICgobWF0Y2ggLSBwb3MpICUgMiA9PSAxKSB7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgbWF0Y2ggKz0gMTtcclxuICB9XHJcblxyXG4gIC8vIE5vIGNsb3NpbmcgZGVsaW10ZXIgZm91bmQuICBDb25zdW1lICQgYW5kIGNvbnRpbnVlLlxyXG4gIGlmIChtYXRjaCA9PT0gLTEpIHtcclxuICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgIHN0YXRlLnBlbmRpbmcgKz0gJyQnO1xyXG4gICAgfVxyXG4gICAgc3RhdGUucG9zID0gc3RhcnQ7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGlmIHdlIGhhdmUgZW1wdHkgY29udGVudCwgaWU6ICQkLiAgRG8gbm90IHBhcnNlLlxyXG4gIGlmIChtYXRjaCAtIHN0YXJ0ID09PSAwKSB7XHJcbiAgICBpZiAoIXNpbGVudCkge1xyXG4gICAgICBzdGF0ZS5wZW5kaW5nICs9ICckJCc7XHJcbiAgICB9XHJcbiAgICBzdGF0ZS5wb3MgPSBzdGFydCArIDE7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrIGZvciB2YWxpZCBjbG9zaW5nIGRlbGltaXRlclxyXG4gIHJlcyA9IGlzVmFsaWREZWxpbWl0ZXIoc3RhdGUsIG1hdGNoKTtcclxuICBpZiAoIXJlcy5jYW5DbG9zZSkge1xyXG4gICAgaWYgKCFzaWxlbnQpIHtcclxuICAgICAgc3RhdGUucGVuZGluZyArPSAnJCc7XHJcbiAgICB9XHJcbiAgICBzdGF0ZS5wb3MgPSBzdGFydDtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgaWYgKCFzaWxlbnQpIHtcclxuICAgIGNvbnN0IHRva2VuID0gc3RhdGUucHVzaChpbmxpbmVUb2tlblR5cGUsICdtYXRoJywgMCk7XHJcbiAgICB0b2tlbi5tYXJrdXAgPSAnJCc7XHJcbiAgICB0b2tlbi5jb250ZW50ID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBtYXRjaCk7XHJcbiAgfVxyXG5cclxuICBzdGF0ZS5wb3MgPSBtYXRjaCArIDE7XHJcbiAgcmV0dXJuIHRydWU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG1hdGhCbG9jayhzdGF0ZTogU3RhdGVCbG9jaywgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHNpbGVudDogYm9vbGVhbikge1xyXG4gIGxldCBuZXh0OiBudW1iZXI7XHJcbiAgbGV0IGxhc3RQb3M6IG51bWJlcjtcclxuICBsZXQgZm91bmQgPSBmYWxzZTtcclxuICBsZXQgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0XSArIHN0YXRlLnRTaGlmdFtzdGFydF07XHJcbiAgbGV0IG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydF07XHJcbiAgbGV0IGxhc3RMaW5lID0gJyc7XHJcblxyXG4gIGlmIChwb3MgKyAyID4gbWF4KSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChzdGF0ZS5zcmMuc2xpY2UocG9zLCBwb3MgKyAyKSAhPT0gJyQkJykge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcG9zICs9IDI7XHJcbiAgbGV0IGZpcnN0TGluZSA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1heCk7XHJcblxyXG4gIGlmIChzaWxlbnQpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICBpZiAoZmlyc3RMaW5lLnRyaW0oKS5zbGljZSgtMikgPT09ICckJCcpIHtcclxuICAgIC8vIFNpbmdsZSBsaW5lIGV4cHJlc3Npb25cclxuICAgIGZpcnN0TGluZSA9IGZpcnN0TGluZS50cmltKCkuc2xpY2UoMCwgLTIpO1xyXG4gICAgZm91bmQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgZm9yIChuZXh0ID0gc3RhcnQ7ICFmb3VuZDsgKSB7XHJcbiAgICBuZXh0Kys7XHJcblxyXG4gICAgaWYgKG5leHQgPj0gZW5kKSB7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG5cclxuICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0XSArIHN0YXRlLnRTaGlmdFtuZXh0XTtcclxuICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0XTtcclxuXHJcbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnRTaGlmdFtuZXh0XSA8IHN0YXRlLmJsa0luZGVudCkge1xyXG4gICAgICAvLyBub24tZW1wdHkgbGluZSB3aXRoIG5lZ2F0aXZlIGluZGVudCBzaG91bGQgc3RvcCB0aGUgbGlzdDpcclxuICAgICAgYnJlYWs7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0YXRlLnNyYy5zbGljZShwb3MsIG1heCkudHJpbSgpLnNsaWNlKC0yKSA9PT0gJyQkJykge1xyXG4gICAgICBsYXN0UG9zID0gc3RhdGUuc3JjLnNsaWNlKDAsIG1heCkubGFzdEluZGV4T2YoJyQkJyk7XHJcbiAgICAgIGxhc3RMaW5lID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgbGFzdFBvcyk7XHJcbiAgICAgIGZvdW5kID0gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHN0YXRlLmxpbmUgPSBuZXh0ICsgMTtcclxuXHJcbiAgY29uc3QgdG9rZW4gPSBzdGF0ZS5wdXNoKGJsb2NrVG9rZW5UeXBlLCAnbWF0aCcsIDApO1xyXG4gIHRva2VuLmJsb2NrID0gdHJ1ZTtcclxuICB0b2tlbi5jb250ZW50ID1cclxuICAgIChmaXJzdExpbmUgJiYgZmlyc3RMaW5lLnRyaW0oKSA/IGZpcnN0TGluZSArICdcXG4nIDogJycpICtcclxuICAgIHN0YXRlLmdldExpbmVzKHN0YXJ0ICsgMSwgbmV4dCwgc3RhdGUudFNoaWZ0W3N0YXJ0XSwgdHJ1ZSkgK1xyXG4gICAgKGxhc3RMaW5lICYmIGxhc3RMaW5lLnRyaW0oKSA/IGxhc3RMaW5lIDogJycpO1xyXG4gIHRva2VuLm1hcCA9IFtzdGFydCwgc3RhdGUubGluZV07XHJcbiAgdG9rZW4ubWFya3VwID0gJyQkJztcclxuICByZXR1cm4gdHJ1ZTtcclxufVxyXG4iLCAiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblxuZXhwb3J0IGRlZmF1bHQgZnJlZUdsb2JhbDtcbiIsICJpbXBvcnQgZnJlZUdsb2JhbCBmcm9tICcuL19mcmVlR2xvYmFsLmpzJztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAmJiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xuXG5leHBvcnQgZGVmYXVsdCByb290O1xuIiwgImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBTeW1ib2wgPSByb290LlN5bWJvbDtcblxuZXhwb3J0IGRlZmF1bHQgU3ltYm9sO1xuIiwgImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5cbiAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFyIHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlmIChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRSYXdUYWc7XG4iLCAiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RUb1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG9iamVjdFRvU3RyaW5nO1xuIiwgImltcG9ydCBTeW1ib2wgZnJvbSAnLi9fU3ltYm9sLmpzJztcbmltcG9ydCBnZXRSYXdUYWcgZnJvbSAnLi9fZ2V0UmF3VGFnLmpzJztcbmltcG9ydCBvYmplY3RUb1N0cmluZyBmcm9tICcuL19vYmplY3RUb1N0cmluZy5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVuZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAgcmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUpKVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlR2V0VGFnO1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uoe30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc09iamVjdExpa2U7XG4iLCAiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3ltYm9sYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3ltYm9sLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTeW1ib2woU3ltYm9sLml0ZXJhdG9yKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU3ltYm9sKCdhYmMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU3ltYm9sKHZhbHVlKSB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT0gJ3N5bWJvbCcgfHxcbiAgICAoaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBzeW1ib2xUYWcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1N5bWJvbDtcbiIsICIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5tYXBgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvciBpdGVyYXRlZVxuICogc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IG1hcHBlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlNYXAoYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuXG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgcmVzdWx0W2luZGV4XSA9IGl0ZXJhdGVlKGFycmF5W2luZGV4XSwgaW5kZXgsIGFycmF5KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheU1hcDtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYW4gYEFycmF5YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5KGRvY3VtZW50LmJvZHkuY2hpbGRyZW4pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoJ2FiYycpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzQXJyYXkoXy5ub29wKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FycmF5ID0gQXJyYXkuaXNBcnJheTtcblxuZXhwb3J0IGRlZmF1bHQgaXNBcnJheTtcbiIsICJpbXBvcnQgU3ltYm9sIGZyb20gJy4vX1N5bWJvbC5qcyc7XG5pbXBvcnQgYXJyYXlNYXAgZnJvbSAnLi9fYXJyYXlNYXAuanMnO1xuaW1wb3J0IGlzQXJyYXkgZnJvbSAnLi9pc0FycmF5LmpzJztcbmltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMDtcblxuLyoqIFVzZWQgdG8gY29udmVydCBzeW1ib2xzIHRvIHByaW1pdGl2ZXMgYW5kIHN0cmluZ3MuICovXG52YXIgc3ltYm9sUHJvdG8gPSBTeW1ib2wgPyBTeW1ib2wucHJvdG90eXBlIDogdW5kZWZpbmVkLFxuICAgIHN5bWJvbFRvU3RyaW5nID0gc3ltYm9sUHJvdG8gPyBzeW1ib2xQcm90by50b1N0cmluZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50b1N0cmluZ2Agd2hpY2ggZG9lc24ndCBjb252ZXJ0IG51bGxpc2hcbiAqIHZhbHVlcyB0byBlbXB0eSBzdHJpbmdzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBiYXNlVG9TdHJpbmcodmFsdWUpIHtcbiAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5ncyB0byBhdm9pZCBhIHBlcmZvcm1hbmNlIGhpdCBpbiBzb21lIGVudmlyb25tZW50cy5cbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICBpZiAoaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAvLyBSZWN1cnNpdmVseSBjb252ZXJ0IHZhbHVlcyAoc3VzY2VwdGlibGUgdG8gY2FsbCBzdGFjayBsaW1pdHMpLlxuICAgIHJldHVybiBhcnJheU1hcCh2YWx1ZSwgYmFzZVRvU3RyaW5nKSArICcnO1xuICB9XG4gIGlmIChpc1N5bWJvbCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gc3ltYm9sVG9TdHJpbmcgPyBzeW1ib2xUb1N0cmluZy5jYWxsKHZhbHVlKSA6ICcnO1xuICB9XG4gIHZhciByZXN1bHQgPSAodmFsdWUgKyAnJyk7XG4gIHJldHVybiAocmVzdWx0ID09ICcwJyAmJiAoMSAvIHZhbHVlKSA9PSAtSU5GSU5JVFkpID8gJy0wJyA6IHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVRvU3RyaW5nO1xuIiwgIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdHJpbW1lZEVuZEluZGV4O1xuIiwgImltcG9ydCB0cmltbWVkRW5kSW5kZXggZnJvbSAnLi9fdHJpbW1lZEVuZEluZGV4LmpzJztcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdcbiAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgIDogc3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVHJpbTtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHRoZVxuICogW2xhbmd1YWdlIHR5cGVdKGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1lY21hc2NyaXB0LWxhbmd1YWdlLXR5cGVzKVxuICogb2YgYE9iamVjdGAuIChlLmcuIGFycmF5cywgZnVuY3Rpb25zLCBvYmplY3RzLCByZWdleGVzLCBgbmV3IE51bWJlcigwKWAsIGFuZCBgbmV3IFN0cmluZygnJylgKVxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0KHt9KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzT2JqZWN0KFsxLCAyLCAzXSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdChfLm5vb3ApO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3QobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc09iamVjdCh2YWx1ZSkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiB2YWx1ZTtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgKHR5cGUgPT0gJ29iamVjdCcgfHwgdHlwZSA9PSAnZnVuY3Rpb24nKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNPYmplY3Q7XG4iLCAiaW1wb3J0IGJhc2VUcmltIGZyb20gJy4vX2Jhc2VUcmltLmpzJztcbmltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCBpc1N5bWJvbCBmcm9tICcuL2lzU3ltYm9sLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTkFOID0gMCAvIDA7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IGJhc2VUcmltKHZhbHVlKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvTnVtYmVyO1xuIiwgImltcG9ydCB0b051bWJlciBmcm9tICcuL3RvTnVtYmVyLmpzJztcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgSU5GSU5JVFkgPSAxIC8gMCxcbiAgICBNQVhfSU5URUdFUiA9IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4O1xuXG4vKipcbiAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBmaW5pdGUgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4xMi4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBudW1iZXIuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udG9GaW5pdGUoMy4yKTtcbiAqIC8vID0+IDMuMlxuICpcbiAqIF8udG9GaW5pdGUoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiA1ZS0zMjRcbiAqXG4gKiBfLnRvRmluaXRlKEluZmluaXR5KTtcbiAqIC8vID0+IDEuNzk3NjkzMTM0ODYyMzE1N2UrMzA4XG4gKlxuICogXy50b0Zpbml0ZSgnMy4yJyk7XG4gKiAvLyA9PiAzLjJcbiAqL1xuZnVuY3Rpb24gdG9GaW5pdGUodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gMCA/IHZhbHVlIDogMDtcbiAgfVxuICB2YWx1ZSA9IHRvTnVtYmVyKHZhbHVlKTtcbiAgaWYgKHZhbHVlID09PSBJTkZJTklUWSB8fCB2YWx1ZSA9PT0gLUlORklOSVRZKSB7XG4gICAgdmFyIHNpZ24gPSAodmFsdWUgPCAwID8gLTEgOiAxKTtcbiAgICByZXR1cm4gc2lnbiAqIE1BWF9JTlRFR0VSO1xuICB9XG4gIHJldHVybiB2YWx1ZSA9PT0gdmFsdWUgPyB2YWx1ZSA6IDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvRmluaXRlO1xuIiwgImltcG9ydCB0b0Zpbml0ZSBmcm9tICcuL3RvRmluaXRlLmpzJztcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGFuIGludGVnZXIuXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9JbnRlZ2VyYF0oaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXRvaW50ZWdlcikuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgaW50ZWdlci5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b0ludGVnZXIoMy4yKTtcbiAqIC8vID0+IDNcbiAqXG4gKiBfLnRvSW50ZWdlcihOdW1iZXIuTUlOX1ZBTFVFKTtcbiAqIC8vID0+IDBcbiAqXG4gKiBfLnRvSW50ZWdlcihJbmZpbml0eSk7XG4gKiAvLyA9PiAxLjc5NzY5MzEzNDg2MjMxNTdlKzMwOFxuICpcbiAqIF8udG9JbnRlZ2VyKCczLjInKTtcbiAqIC8vID0+IDNcbiAqL1xuZnVuY3Rpb24gdG9JbnRlZ2VyKHZhbHVlKSB7XG4gIHZhciByZXN1bHQgPSB0b0Zpbml0ZSh2YWx1ZSksXG4gICAgICByZW1haW5kZXIgPSByZXN1bHQgJSAxO1xuXG4gIHJldHVybiByZXN1bHQgPT09IHJlc3VsdCA/IChyZW1haW5kZXIgPyByZXN1bHQgLSByZW1haW5kZXIgOiByZXN1bHQpIDogMDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9JbnRlZ2VyO1xuIiwgIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZmlyc3QgYXJndW1lbnQgaXQgcmVjZWl2ZXMuXG4gKlxuICogQHN0YXRpY1xuICogQHNpbmNlIDAuMS4wXG4gKiBAbWVtYmVyT2YgX1xuICogQGNhdGVnb3J5IFV0aWxcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQW55IHZhbHVlLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgYHZhbHVlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogdmFyIG9iamVjdCA9IHsgJ2EnOiAxIH07XG4gKlxuICogY29uc29sZS5sb2coXy5pZGVudGl0eShvYmplY3QpID09PSBvYmplY3QpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpZGVudGl0eSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlkZW50aXR5O1xuIiwgImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXN5bmNUYWcgPSAnW29iamVjdCBBc3luY0Z1bmN0aW9uXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgZ2VuVGFnID0gJ1tvYmplY3QgR2VuZXJhdG9yRnVuY3Rpb25dJyxcbiAgICBwcm94eVRhZyA9ICdbb2JqZWN0IFByb3h5XSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBGdW5jdGlvbmAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZnVuY3Rpb24sIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0Z1bmN0aW9uKF8pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNGdW5jdGlvbigvYWJjLyk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Z1bmN0aW9uKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3QodmFsdWUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8vIFRoZSB1c2Ugb2YgYE9iamVjdCN0b1N0cmluZ2AgYXZvaWRzIGlzc3VlcyB3aXRoIHRoZSBgdHlwZW9mYCBvcGVyYXRvclxuICAvLyBpbiBTYWZhcmkgOSB3aGljaCByZXR1cm5zICdvYmplY3QnIGZvciB0eXBlZCBhcnJheXMgYW5kIG90aGVyIGNvbnN0cnVjdG9ycy5cbiAgdmFyIHRhZyA9IGJhc2VHZXRUYWcodmFsdWUpO1xuICByZXR1cm4gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZyB8fCB0YWcgPT0gYXN5bmNUYWcgfHwgdGFnID09IHByb3h5VGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0Z1bmN0aW9uO1xuIiwgImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3Qgb3ZlcnJlYWNoaW5nIGNvcmUtanMgc2hpbXMuICovXG52YXIgY29yZUpzRGF0YSA9IHJvb3RbJ19fY29yZS1qc19zaGFyZWRfXyddO1xuXG5leHBvcnQgZGVmYXVsdCBjb3JlSnNEYXRhO1xuIiwgImltcG9ydCBjb3JlSnNEYXRhIGZyb20gJy4vX2NvcmVKc0RhdGEuanMnO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgbWV0aG9kcyBtYXNxdWVyYWRpbmcgYXMgbmF0aXZlLiAqL1xudmFyIG1hc2tTcmNLZXkgPSAoZnVuY3Rpb24oKSB7XG4gIHZhciB1aWQgPSAvW14uXSskLy5leGVjKGNvcmVKc0RhdGEgJiYgY29yZUpzRGF0YS5rZXlzICYmIGNvcmVKc0RhdGEua2V5cy5JRV9QUk9UTyB8fCAnJyk7XG4gIHJldHVybiB1aWQgPyAoJ1N5bWJvbChzcmMpXzEuJyArIHVpZCkgOiAnJztcbn0oKSk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBmdW5jYCBoYXMgaXRzIHNvdXJjZSBtYXNrZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGBmdW5jYCBpcyBtYXNrZWQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNNYXNrZWQoZnVuYykge1xuICByZXR1cm4gISFtYXNrU3JjS2V5ICYmIChtYXNrU3JjS2V5IGluIGZ1bmMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc01hc2tlZDtcbiIsICIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKipcbiAqIENvbnZlcnRzIGBmdW5jYCB0byBpdHMgc291cmNlIGNvZGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBzb3VyY2UgY29kZS5cbiAqL1xuZnVuY3Rpb24gdG9Tb3VyY2UoZnVuYykge1xuICBpZiAoZnVuYyAhPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBmdW5jVG9TdHJpbmcuY2FsbChmdW5jKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gKGZ1bmMgKyAnJyk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRvU291cmNlO1xuIiwgImltcG9ydCBpc0Z1bmN0aW9uIGZyb20gJy4vaXNGdW5jdGlvbi5qcyc7XG5pbXBvcnQgaXNNYXNrZWQgZnJvbSAnLi9faXNNYXNrZWQuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IHRvU291cmNlIGZyb20gJy4vX3RvU291cmNlLmpzJztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoIGBSZWdFeHBgXG4gKiBbc3ludGF4IGNoYXJhY3RlcnNdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXBhdHRlcm5zKS5cbiAqL1xudmFyIHJlUmVnRXhwQ2hhciA9IC9bXFxcXF4kLiorPygpW1xcXXt9fF0vZztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IGhvc3QgY29uc3RydWN0b3JzIChTYWZhcmkpLiAqL1xudmFyIHJlSXNIb3N0Q3RvciA9IC9eXFxbb2JqZWN0IC4rP0NvbnN0cnVjdG9yXFxdJC87XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1RvU3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBkZXRlY3QgaWYgYSBtZXRob2QgaXMgbmF0aXZlLiAqL1xudmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICtcbiAgZnVuY1RvU3RyaW5nLmNhbGwoaGFzT3duUHJvcGVydHkpLnJlcGxhY2UocmVSZWdFeHBDaGFyLCAnXFxcXCQmJylcbiAgLnJlcGxhY2UoL2hhc093blByb3BlcnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4qPycpICsgJyQnXG4pO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTmF0aXZlYCB3aXRob3V0IGJhZCBzaGltIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG5hdGl2ZSBmdW5jdGlvbixcbiAqICBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc05hdGl2ZSh2YWx1ZSkge1xuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSB8fCBpc01hc2tlZCh2YWx1ZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHBhdHRlcm4gPSBpc0Z1bmN0aW9uKHZhbHVlKSA/IHJlSXNOYXRpdmUgOiByZUlzSG9zdEN0b3I7XG4gIHJldHVybiBwYXR0ZXJuLnRlc3QodG9Tb3VyY2UodmFsdWUpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzTmF0aXZlO1xuIiwgIi8qKlxuICogR2V0cyB0aGUgdmFsdWUgYXQgYGtleWAgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0XSBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgcHJvcGVydHkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGdldFZhbHVlKG9iamVjdCwga2V5KSB7XG4gIHJldHVybiBvYmplY3QgPT0gbnVsbCA/IHVuZGVmaW5lZCA6IG9iamVjdFtrZXldO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXRWYWx1ZTtcbiIsICJpbXBvcnQgYmFzZUlzTmF0aXZlIGZyb20gJy4vX2Jhc2VJc05hdGl2ZS5qcyc7XG5pbXBvcnQgZ2V0VmFsdWUgZnJvbSAnLi9fZ2V0VmFsdWUuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIG5hdGl2ZSBmdW5jdGlvbiBhdCBga2V5YCBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBtZXRob2QgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGZ1bmN0aW9uIGlmIGl0J3MgbmF0aXZlLCBlbHNlIGB1bmRlZmluZWRgLlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmUob2JqZWN0LCBrZXkpIHtcbiAgdmFyIHZhbHVlID0gZ2V0VmFsdWUob2JqZWN0LCBrZXkpO1xuICByZXR1cm4gYmFzZUlzTmF0aXZlKHZhbHVlKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZGVmYXVsdCBnZXROYXRpdmU7XG4iLCAiaW1wb3J0IGdldE5hdGl2ZSBmcm9tICcuL19nZXROYXRpdmUuanMnO1xuaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBXZWFrTWFwID0gZ2V0TmF0aXZlKHJvb3QsICdXZWFrTWFwJyk7XG5cbmV4cG9ydCBkZWZhdWx0IFdlYWtNYXA7XG4iLCAiaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RDcmVhdGUgPSBPYmplY3QuY3JlYXRlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNyZWF0ZWAgd2l0aG91dCBzdXBwb3J0IGZvciBhc3NpZ25pbmdcbiAqIHByb3BlcnRpZXMgdG8gdGhlIGNyZWF0ZWQgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcHJvdG8gVGhlIG9iamVjdCB0byBpbmhlcml0IGZyb20uXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBuZXcgb2JqZWN0LlxuICovXG52YXIgYmFzZUNyZWF0ZSA9IChmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gb2JqZWN0KCkge31cbiAgcmV0dXJuIGZ1bmN0aW9uKHByb3RvKSB7XG4gICAgaWYgKCFpc09iamVjdChwcm90bykpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgaWYgKG9iamVjdENyZWF0ZSkge1xuICAgICAgcmV0dXJuIG9iamVjdENyZWF0ZShwcm90byk7XG4gICAgfVxuICAgIG9iamVjdC5wcm90b3R5cGUgPSBwcm90bztcbiAgICB2YXIgcmVzdWx0ID0gbmV3IG9iamVjdDtcbiAgICBvYmplY3QucHJvdG90eXBlID0gdW5kZWZpbmVkO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH07XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBiYXNlQ3JlYXRlO1xuIiwgIi8qKlxuICogQSBmYXN0ZXIgYWx0ZXJuYXRpdmUgdG8gYEZ1bmN0aW9uI2FwcGx5YCwgdGhpcyBmdW5jdGlvbiBpbnZva2VzIGBmdW5jYFxuICogd2l0aCB0aGUgYHRoaXNgIGJpbmRpbmcgb2YgYHRoaXNBcmdgIGFuZCB0aGUgYXJndW1lbnRzIG9mIGBhcmdzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gaW52b2tlLlxuICogQHBhcmFtIHsqfSB0aGlzQXJnIFRoZSBgdGhpc2AgYmluZGluZyBvZiBgZnVuY2AuXG4gKiBAcGFyYW0ge0FycmF5fSBhcmdzIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIHJlc3VsdCBvZiBgZnVuY2AuXG4gKi9cbmZ1bmN0aW9uIGFwcGx5KGZ1bmMsIHRoaXNBcmcsIGFyZ3MpIHtcbiAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgIGNhc2UgMDogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnKTtcbiAgICBjYXNlIDE6IHJldHVybiBmdW5jLmNhbGwodGhpc0FyZywgYXJnc1swXSk7XG4gICAgY2FzZSAyOiByZXR1cm4gZnVuYy5jYWxsKHRoaXNBcmcsIGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmMuY2FsbCh0aGlzQXJnLCBhcmdzWzBdLCBhcmdzWzFdLCBhcmdzWzJdKTtcbiAgfVxuICByZXR1cm4gZnVuYy5hcHBseSh0aGlzQXJnLCBhcmdzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXBwbHk7XG4iLCAiLyoqXG4gKiBDb3BpZXMgdGhlIHZhbHVlcyBvZiBgc291cmNlYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBzb3VyY2UgVGhlIGFycmF5IHRvIGNvcHkgdmFsdWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBbYXJyYXk9W11dIFRoZSBhcnJheSB0byBjb3B5IHZhbHVlcyB0by5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBjb3B5QXJyYXkoc291cmNlLCBhcnJheSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHNvdXJjZS5sZW5ndGg7XG5cbiAgYXJyYXkgfHwgKGFycmF5ID0gQXJyYXkobGVuZ3RoKSk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgYXJyYXlbaW5kZXhdID0gc291cmNlW2luZGV4XTtcbiAgfVxuICByZXR1cm4gYXJyYXk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvcHlBcnJheTtcbiIsICIvKiogVXNlZCB0byBkZXRlY3QgaG90IGZ1bmN0aW9ucyBieSBudW1iZXIgb2YgY2FsbHMgd2l0aGluIGEgc3BhbiBvZiBtaWxsaXNlY29uZHMuICovXG52YXIgSE9UX0NPVU5UID0gODAwLFxuICAgIEhPVF9TUEFOID0gMTY7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVOb3cgPSBEYXRlLm5vdztcblxuLyoqXG4gKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCdsbCBzaG9ydCBvdXQgYW5kIGludm9rZSBgaWRlbnRpdHlgIGluc3RlYWRcbiAqIG9mIGBmdW5jYCB3aGVuIGl0J3MgY2FsbGVkIGBIT1RfQ09VTlRgIG9yIG1vcmUgdGltZXMgaW4gYEhPVF9TUEFOYFxuICogbWlsbGlzZWNvbmRzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byByZXN0cmljdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IHNob3J0YWJsZSBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gc2hvcnRPdXQoZnVuYykge1xuICB2YXIgY291bnQgPSAwLFxuICAgICAgbGFzdENhbGxlZCA9IDA7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIHZhciBzdGFtcCA9IG5hdGl2ZU5vdygpLFxuICAgICAgICByZW1haW5pbmcgPSBIT1RfU1BBTiAtIChzdGFtcCAtIGxhc3RDYWxsZWQpO1xuXG4gICAgbGFzdENhbGxlZCA9IHN0YW1wO1xuICAgIGlmIChyZW1haW5pbmcgPiAwKSB7XG4gICAgICBpZiAoKytjb3VudCA+PSBIT1RfQ09VTlQpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3VtZW50c1swXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY291bnQgPSAwO1xuICAgIH1cbiAgICByZXR1cm4gZnVuYy5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cyk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IHNob3J0T3V0O1xuIiwgIi8qKlxuICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBgdmFsdWVgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMi40LjBcbiAqIEBjYXRlZ29yeSBVdGlsXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXR1cm4gZnJvbSB0aGUgbmV3IGZ1bmN0aW9uLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY29uc3RhbnQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gXy50aW1lcygyLCBfLmNvbnN0YW50KHsgJ2EnOiAxIH0pKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhvYmplY3RzKTtcbiAqIC8vID0+IFt7ICdhJzogMSB9LCB7ICdhJzogMSB9XVxuICpcbiAqIGNvbnNvbGUubG9nKG9iamVjdHNbMF0gPT09IG9iamVjdHNbMV0pO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBjb25zdGFudCh2YWx1ZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb25zdGFudDtcbiIsICJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5cbnZhciBkZWZpbmVQcm9wZXJ0eSA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZnVuYyA9IGdldE5hdGl2ZShPYmplY3QsICdkZWZpbmVQcm9wZXJ0eScpO1xuICAgIGZ1bmMoe30sICcnLCB7fSk7XG4gICAgcmV0dXJuIGZ1bmM7XG4gIH0gY2F0Y2ggKGUpIHt9XG59KCkpO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmVQcm9wZXJ0eTtcbiIsICJpbXBvcnQgY29uc3RhbnQgZnJvbSAnLi9jb25zdGFudC5qcyc7XG5pbXBvcnQgZGVmaW5lUHJvcGVydHkgZnJvbSAnLi9fZGVmaW5lUHJvcGVydHkuanMnO1xuaW1wb3J0IGlkZW50aXR5IGZyb20gJy4vaWRlbnRpdHkuanMnO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBzZXRUb1N0cmluZ2Agd2l0aG91dCBzdXBwb3J0IGZvciBob3QgbG9vcCBzaG9ydGluZy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBiYXNlU2V0VG9TdHJpbmcgPSAhZGVmaW5lUHJvcGVydHkgPyBpZGVudGl0eSA6IGZ1bmN0aW9uKGZ1bmMsIHN0cmluZykge1xuICByZXR1cm4gZGVmaW5lUHJvcGVydHkoZnVuYywgJ3RvU3RyaW5nJywge1xuICAgICdjb25maWd1cmFibGUnOiB0cnVlLFxuICAgICdlbnVtZXJhYmxlJzogZmFsc2UsXG4gICAgJ3ZhbHVlJzogY29uc3RhbnQoc3RyaW5nKSxcbiAgICAnd3JpdGFibGUnOiB0cnVlXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgYmFzZVNldFRvU3RyaW5nO1xuIiwgImltcG9ydCBiYXNlU2V0VG9TdHJpbmcgZnJvbSAnLi9fYmFzZVNldFRvU3RyaW5nLmpzJztcbmltcG9ydCBzaG9ydE91dCBmcm9tICcuL19zaG9ydE91dC5qcyc7XG5cbi8qKlxuICogU2V0cyB0aGUgYHRvU3RyaW5nYCBtZXRob2Qgb2YgYGZ1bmNgIHRvIHJldHVybiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtGdW5jdGlvbn0gc3RyaW5nIFRoZSBgdG9TdHJpbmdgIHJlc3VsdC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyBgZnVuY2AuXG4gKi9cbnZhciBzZXRUb1N0cmluZyA9IHNob3J0T3V0KGJhc2VTZXRUb1N0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IHNldFRvU3RyaW5nO1xuIiwgIi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBfLmZvckVhY2hgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gaXRlcmF0ZWUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyBgYXJyYXlgLlxuICovXG5mdW5jdGlvbiBhcnJheUVhY2goYXJyYXksIGl0ZXJhdGVlKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkgPT0gbnVsbCA/IDAgOiBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoaXRlcmF0ZWUoYXJyYXlbaW5kZXhdLCBpbmRleCwgYXJyYXkpID09PSBmYWxzZSkge1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiBhcnJheTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXJyYXlFYWNoO1xuIiwgIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uZmluZEluZGV4YCBhbmQgYF8uZmluZExhc3RJbmRleGAgd2l0aG91dFxuICogc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwcmVkaWNhdGUgVGhlIGZ1bmN0aW9uIGludm9rZWQgcGVyIGl0ZXJhdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHBhcmFtIHtib29sZWFufSBbZnJvbVJpZ2h0XSBTcGVjaWZ5IGl0ZXJhdGluZyBmcm9tIHJpZ2h0IHRvIGxlZnQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBiYXNlRmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUsIGZyb21JbmRleCwgZnJvbVJpZ2h0KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICBpbmRleCA9IGZyb21JbmRleCArIChmcm9tUmlnaHQgPyAxIDogLTEpO1xuXG4gIHdoaWxlICgoZnJvbVJpZ2h0ID8gaW5kZXgtLSA6ICsraW5kZXggPCBsZW5ndGgpKSB7XG4gICAgaWYgKHByZWRpY2F0ZShhcnJheVtpbmRleF0sIGluZGV4LCBhcnJheSkpIHtcbiAgICAgIHJldHVybiBpbmRleDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlRmluZEluZGV4O1xuIiwgIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNOYU5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbnVtYmVyIG9iamVjdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYE5hTmAsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzTmFOKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gdmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc05hTjtcbiIsICIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5pbmRleE9mYCB3aGljaCBwZXJmb3JtcyBzdHJpY3QgZXF1YWxpdHlcbiAqIGNvbXBhcmlzb25zIG9mIHZhbHVlcywgaS5lLiBgPT09YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZWFyY2ggZm9yLlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBUaGUgaW5kZXggdG8gc2VhcmNoIGZyb20uXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbWF0Y2hlZCB2YWx1ZSwgZWxzZSBgLTFgLlxuICovXG5mdW5jdGlvbiBzdHJpY3RJbmRleE9mKGFycmF5LCB2YWx1ZSwgZnJvbUluZGV4KSB7XG4gIHZhciBpbmRleCA9IGZyb21JbmRleCAtIDEsXG4gICAgICBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICBpZiAoYXJyYXlbaW5kZXhdID09PSB2YWx1ZSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgfVxuICByZXR1cm4gLTE7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0cmljdEluZGV4T2Y7XG4iLCAiaW1wb3J0IGJhc2VGaW5kSW5kZXggZnJvbSAnLi9fYmFzZUZpbmRJbmRleC5qcyc7XG5pbXBvcnQgYmFzZUlzTmFOIGZyb20gJy4vX2Jhc2VJc05hTi5qcyc7XG5pbXBvcnQgc3RyaWN0SW5kZXhPZiBmcm9tICcuL19zdHJpY3RJbmRleE9mLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pbmRleE9mYCB3aXRob3V0IGBmcm9tSW5kZXhgIGJvdW5kcyBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2VhcmNoIGZvci5cbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggVGhlIGluZGV4IHRvIHNlYXJjaCBmcm9tLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUluZGV4T2YoYXJyYXksIHZhbHVlLCBmcm9tSW5kZXgpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB2YWx1ZVxuICAgID8gc3RyaWN0SW5kZXhPZihhcnJheSwgdmFsdWUsIGZyb21JbmRleClcbiAgICA6IGJhc2VGaW5kSW5kZXgoYXJyYXksIGJhc2VJc05hTiwgZnJvbUluZGV4KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUluZGV4T2Y7XG4iLCAiLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTUFYX1NBRkVfSU5URUdFUiA9IDkwMDcxOTkyNTQ3NDA5OTE7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCB1bnNpZ25lZCBpbnRlZ2VyIHZhbHVlcy4gKi9cbnZhciByZUlzVWludCA9IC9eKD86MHxbMS05XVxcZCopJC87XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBhcnJheS1saWtlIGluZGV4LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbbGVuZ3RoPU1BWF9TQUZFX0lOVEVHRVJdIFRoZSB1cHBlciBib3VuZHMgb2YgYSB2YWxpZCBpbmRleC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgaW5kZXgsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNJbmRleCh2YWx1ZSwgbGVuZ3RoKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICBsZW5ndGggPSBsZW5ndGggPT0gbnVsbCA/IE1BWF9TQUZFX0lOVEVHRVIgOiBsZW5ndGg7XG5cbiAgcmV0dXJuICEhbGVuZ3RoICYmXG4gICAgKHR5cGUgPT0gJ251bWJlcicgfHxcbiAgICAgICh0eXBlICE9ICdzeW1ib2wnICYmIHJlSXNVaW50LnRlc3QodmFsdWUpKSkgJiZcbiAgICAgICAgKHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPCBsZW5ndGgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0luZGV4O1xuIiwgImltcG9ydCBkZWZpbmVQcm9wZXJ0eSBmcm9tICcuL19kZWZpbmVQcm9wZXJ0eS5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGFzc2lnblZhbHVlYCBhbmQgYGFzc2lnbk1lcmdlVmFsdWVgIHdpdGhvdXRcbiAqIHZhbHVlIGNoZWNrcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIG1vZGlmeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgcHJvcGVydHkgdG8gYXNzaWduLlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgPT0gJ19fcHJvdG9fXycgJiYgZGVmaW5lUHJvcGVydHkpIHtcbiAgICBkZWZpbmVQcm9wZXJ0eShvYmplY3QsIGtleSwge1xuICAgICAgJ2NvbmZpZ3VyYWJsZSc6IHRydWUsXG4gICAgICAnZW51bWVyYWJsZSc6IHRydWUsXG4gICAgICAndmFsdWUnOiB2YWx1ZSxcbiAgICAgICd3cml0YWJsZSc6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmplY3Rba2V5XSA9IHZhbHVlO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VBc3NpZ25WYWx1ZTtcbiIsICIvKipcbiAqIFBlcmZvcm1zIGFcbiAqIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBjb21wYXJpc29uIGJldHdlZW4gdHdvIHZhbHVlcyB0byBkZXRlcm1pbmUgaWYgdGhleSBhcmUgZXF1aXZhbGVudC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY29tcGFyZS5cbiAqIEBwYXJhbSB7Kn0gb3RoZXIgVGhlIG90aGVyIHZhbHVlIHRvIGNvbXBhcmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgb2JqZWN0ID0geyAnYSc6IDEgfTtcbiAqIHZhciBvdGhlciA9IHsgJ2EnOiAxIH07XG4gKlxuICogXy5lcShvYmplY3QsIG9iamVjdCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcShvYmplY3QsIG90aGVyKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcSgnYScsICdhJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5lcSgnYScsIE9iamVjdCgnYScpKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5lcShOYU4sIE5hTik7XG4gKiAvLyA9PiB0cnVlXG4gKi9cbmZ1bmN0aW9uIGVxKHZhbHVlLCBvdGhlcikge1xuICByZXR1cm4gdmFsdWUgPT09IG90aGVyIHx8ICh2YWx1ZSAhPT0gdmFsdWUgJiYgb3RoZXIgIT09IG90aGVyKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZXE7XG4iLCAiaW1wb3J0IGJhc2VBc3NpZ25WYWx1ZSBmcm9tICcuL19iYXNlQXNzaWduVmFsdWUuanMnO1xuaW1wb3J0IGVxIGZyb20gJy4vZXEuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIEFzc2lnbnMgYHZhbHVlYCB0byBga2V5YCBvZiBgb2JqZWN0YCBpZiB0aGUgZXhpc3RpbmcgdmFsdWUgaXMgbm90IGVxdWl2YWxlbnRcbiAqIHVzaW5nIFtgU2FtZVZhbHVlWmVyb2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLXNhbWV2YWx1ZXplcm8pXG4gKiBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBtb2RpZnkuXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IHRvIGFzc2lnbi5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGFzc2lnbi5cbiAqL1xuZnVuY3Rpb24gYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKSB7XG4gIHZhciBvYmpWYWx1ZSA9IG9iamVjdFtrZXldO1xuICBpZiAoIShoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBlcShvYmpWYWx1ZSwgdmFsdWUpKSB8fFxuICAgICAgKHZhbHVlID09PSB1bmRlZmluZWQgJiYgIShrZXkgaW4gb2JqZWN0KSkpIHtcbiAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBhc3NpZ25WYWx1ZTtcbiIsICJpbXBvcnQgYXNzaWduVmFsdWUgZnJvbSAnLi9fYXNzaWduVmFsdWUuanMnO1xuaW1wb3J0IGJhc2VBc3NpZ25WYWx1ZSBmcm9tICcuL19iYXNlQXNzaWduVmFsdWUuanMnO1xuXG4vKipcbiAqIENvcGllcyBwcm9wZXJ0aWVzIG9mIGBzb3VyY2VgIHRvIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gc291cmNlIFRoZSBvYmplY3QgdG8gY29weSBwcm9wZXJ0aWVzIGZyb20uXG4gKiBAcGFyYW0ge0FycmF5fSBwcm9wcyBUaGUgcHJvcGVydHkgaWRlbnRpZmllcnMgdG8gY29weS5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb2JqZWN0PXt9XSBUaGUgb2JqZWN0IHRvIGNvcHkgcHJvcGVydGllcyB0by5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNvcGllZCB2YWx1ZXMuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIGBvYmplY3RgLlxuICovXG5mdW5jdGlvbiBjb3B5T2JqZWN0KHNvdXJjZSwgcHJvcHMsIG9iamVjdCwgY3VzdG9taXplcikge1xuICB2YXIgaXNOZXcgPSAhb2JqZWN0O1xuICBvYmplY3QgfHwgKG9iamVjdCA9IHt9KTtcblxuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IHByb3BzLmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHZhciBrZXkgPSBwcm9wc1tpbmRleF07XG5cbiAgICB2YXIgbmV3VmFsdWUgPSBjdXN0b21pemVyXG4gICAgICA/IGN1c3RvbWl6ZXIob2JqZWN0W2tleV0sIHNvdXJjZVtrZXldLCBrZXksIG9iamVjdCwgc291cmNlKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBpZiAobmV3VmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3VmFsdWUgPSBzb3VyY2Vba2V5XTtcbiAgICB9XG4gICAgaWYgKGlzTmV3KSB7XG4gICAgICBiYXNlQXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXNzaWduVmFsdWUob2JqZWN0LCBrZXksIG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY29weU9iamVjdDtcbiIsICJpbXBvcnQgYXBwbHkgZnJvbSAnLi9fYXBwbHkuanMnO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXg7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIGBiYXNlUmVzdGAgd2hpY2ggdHJhbnNmb3JtcyB0aGUgcmVzdCBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXBwbHkgYSByZXN0IHBhcmFtZXRlciB0by5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbc3RhcnQ9ZnVuYy5sZW5ndGgtMV0gVGhlIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSByZXN0IHBhcmFtZXRlci5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgcmVzdCBhcnJheSB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlclJlc3QoZnVuYywgc3RhcnQsIHRyYW5zZm9ybSkge1xuICBzdGFydCA9IG5hdGl2ZU1heChzdGFydCA9PT0gdW5kZWZpbmVkID8gKGZ1bmMubGVuZ3RoIC0gMSkgOiBzdGFydCwgMCk7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgYXJncyA9IGFyZ3VtZW50cyxcbiAgICAgICAgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gbmF0aXZlTWF4KGFyZ3MubGVuZ3RoIC0gc3RhcnQsIDApLFxuICAgICAgICBhcnJheSA9IEFycmF5KGxlbmd0aCk7XG5cbiAgICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgICAgYXJyYXlbaW5kZXhdID0gYXJnc1tzdGFydCArIGluZGV4XTtcbiAgICB9XG4gICAgaW5kZXggPSAtMTtcbiAgICB2YXIgb3RoZXJBcmdzID0gQXJyYXkoc3RhcnQgKyAxKTtcbiAgICB3aGlsZSAoKytpbmRleCA8IHN0YXJ0KSB7XG4gICAgICBvdGhlckFyZ3NbaW5kZXhdID0gYXJnc1tpbmRleF07XG4gICAgfVxuICAgIG90aGVyQXJnc1tzdGFydF0gPSB0cmFuc2Zvcm0oYXJyYXkpO1xuICAgIHJldHVybiBhcHBseShmdW5jLCB0aGlzLCBvdGhlckFyZ3MpO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBvdmVyUmVzdDtcbiIsICJpbXBvcnQgaWRlbnRpdHkgZnJvbSAnLi9pZGVudGl0eS5qcyc7XG5pbXBvcnQgb3ZlclJlc3QgZnJvbSAnLi9fb3ZlclJlc3QuanMnO1xuaW1wb3J0IHNldFRvU3RyaW5nIGZyb20gJy4vX3NldFRvU3RyaW5nLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5yZXN0YCB3aGljaCBkb2Vzbid0IHZhbGlkYXRlIG9yIGNvZXJjZSBhcmd1bWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGFwcGx5IGEgcmVzdCBwYXJhbWV0ZXIgdG8uXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PWZ1bmMubGVuZ3RoLTFdIFRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUgcmVzdCBwYXJhbWV0ZXIuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVJlc3QoZnVuYywgc3RhcnQpIHtcbiAgcmV0dXJuIHNldFRvU3RyaW5nKG92ZXJSZXN0KGZ1bmMsIHN0YXJ0LCBpZGVudGl0eSksIGZ1bmMgKyAnJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VSZXN0O1xuIiwgIi8qKiBVc2VkIGFzIHJlZmVyZW5jZXMgZm9yIHZhcmlvdXMgYE51bWJlcmAgY29uc3RhbnRzLiAqL1xudmFyIE1BWF9TQUZFX0lOVEVHRVIgPSA5MDA3MTk5MjU0NzQwOTkxO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgdmFsaWQgYXJyYXktbGlrZSBsZW5ndGguXG4gKlxuICogKipOb3RlOioqIFRoaXMgbWV0aG9kIGlzIGxvb3NlbHkgYmFzZWQgb25cbiAqIFtgVG9MZW5ndGhgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy10b2xlbmd0aCkuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB2YWxpZCBsZW5ndGgsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0xlbmd0aCgzKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTGVuZ3RoKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzTGVuZ3RoKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0xlbmd0aCgnMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNMZW5ndGgodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyAmJlxuICAgIHZhbHVlID4gLTEgJiYgdmFsdWUgJSAxID09IDAgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNMZW5ndGg7XG4iLCAiaW1wb3J0IGlzRnVuY3Rpb24gZnJvbSAnLi9pc0Z1bmN0aW9uLmpzJztcbmltcG9ydCBpc0xlbmd0aCBmcm9tICcuL2lzTGVuZ3RoLmpzJztcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhcnJheS1saWtlLiBBIHZhbHVlIGlzIGNvbnNpZGVyZWQgYXJyYXktbGlrZSBpZiBpdCdzXG4gKiBub3QgYSBmdW5jdGlvbiBhbmQgaGFzIGEgYHZhbHVlLmxlbmd0aGAgdGhhdCdzIGFuIGludGVnZXIgZ3JlYXRlciB0aGFuIG9yXG4gKiBlcXVhbCB0byBgMGAgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byBgTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFycmF5LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5TGlrZShbMSwgMiwgM10pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcnJheUxpa2UoZG9jdW1lbnQuYm9keS5jaGlsZHJlbik7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZSgnYWJjJyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNBcnJheUxpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhaXNGdW5jdGlvbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQXJyYXlMaWtlO1xuIiwgImltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcbmltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzQXJyYXlMaWtlLmpzJztcbmltcG9ydCBpc0luZGV4IGZyb20gJy4vX2lzSW5kZXguanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiB0aGUgZ2l2ZW4gYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHBvdGVudGlhbCBpdGVyYXRlZSB2YWx1ZSBhcmd1bWVudC5cbiAqIEBwYXJhbSB7Kn0gaW5kZXggVGhlIHBvdGVudGlhbCBpdGVyYXRlZSBpbmRleCBvciBrZXkgYXJndW1lbnQuXG4gKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgcG90ZW50aWFsIGl0ZXJhdGVlIG9iamVjdCBhcmd1bWVudC5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiB0aGUgYXJndW1lbnRzIGFyZSBmcm9tIGFuIGl0ZXJhdGVlIGNhbGwsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBpc0l0ZXJhdGVlQ2FsbCh2YWx1ZSwgaW5kZXgsIG9iamVjdCkge1xuICBpZiAoIWlzT2JqZWN0KG9iamVjdCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHR5cGUgPSB0eXBlb2YgaW5kZXg7XG4gIGlmICh0eXBlID09ICdudW1iZXInXG4gICAgICAgID8gKGlzQXJyYXlMaWtlKG9iamVjdCkgJiYgaXNJbmRleChpbmRleCwgb2JqZWN0Lmxlbmd0aCkpXG4gICAgICAgIDogKHR5cGUgPT0gJ3N0cmluZycgJiYgaW5kZXggaW4gb2JqZWN0KVxuICAgICAgKSB7XG4gICAgcmV0dXJuIGVxKG9iamVjdFtpbmRleF0sIHZhbHVlKTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSXRlcmF0ZWVDYWxsO1xuIiwgImltcG9ydCBiYXNlUmVzdCBmcm9tICcuL19iYXNlUmVzdC5qcyc7XG5pbXBvcnQgaXNJdGVyYXRlZUNhbGwgZnJvbSAnLi9faXNJdGVyYXRlZUNhbGwuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBmdW5jdGlvbiBsaWtlIGBfLmFzc2lnbmAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGFzc2lnbmVyIFRoZSBmdW5jdGlvbiB0byBhc3NpZ24gdmFsdWVzLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgYXNzaWduZXIgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFzc2lnbmVyKGFzc2lnbmVyKSB7XG4gIHJldHVybiBiYXNlUmVzdChmdW5jdGlvbihvYmplY3QsIHNvdXJjZXMpIHtcbiAgICB2YXIgaW5kZXggPSAtMSxcbiAgICAgICAgbGVuZ3RoID0gc291cmNlcy5sZW5ndGgsXG4gICAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPiAxID8gc291cmNlc1tsZW5ndGggLSAxXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgZ3VhcmQgPSBsZW5ndGggPiAyID8gc291cmNlc1syXSA6IHVuZGVmaW5lZDtcblxuICAgIGN1c3RvbWl6ZXIgPSAoYXNzaWduZXIubGVuZ3RoID4gMyAmJiB0eXBlb2YgY3VzdG9taXplciA9PSAnZnVuY3Rpb24nKVxuICAgICAgPyAobGVuZ3RoLS0sIGN1c3RvbWl6ZXIpXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGlmIChndWFyZCAmJiBpc0l0ZXJhdGVlQ2FsbChzb3VyY2VzWzBdLCBzb3VyY2VzWzFdLCBndWFyZCkpIHtcbiAgICAgIGN1c3RvbWl6ZXIgPSBsZW5ndGggPCAzID8gdW5kZWZpbmVkIDogY3VzdG9taXplcjtcbiAgICAgIGxlbmd0aCA9IDE7XG4gICAgfVxuICAgIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICAgIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgICB2YXIgc291cmNlID0gc291cmNlc1tpbmRleF07XG4gICAgICBpZiAoc291cmNlKSB7XG4gICAgICAgIGFzc2lnbmVyKG9iamVjdCwgc291cmNlLCBpbmRleCwgY3VzdG9taXplcik7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvYmplY3Q7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVBc3NpZ25lcjtcbiIsICIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGxpa2VseSBhIHByb3RvdHlwZSBvYmplY3QuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBwcm90b3R5cGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNQcm90b3R5cGUodmFsdWUpIHtcbiAgdmFyIEN0b3IgPSB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvcixcbiAgICAgIHByb3RvID0gKHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3Rvci5wcm90b3R5cGUpIHx8IG9iamVjdFByb3RvO1xuXG4gIHJldHVybiB2YWx1ZSA9PT0gcHJvdG87XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzUHJvdG90eXBlO1xuIiwgIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udGltZXNgIHdpdGhvdXQgc3VwcG9ydCBmb3IgaXRlcmF0ZWUgc2hvcnRoYW5kc1xuICogb3IgbWF4IGFycmF5IGxlbmd0aCBjaGVja3MuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7bnVtYmVyfSBuIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gaW52b2tlIGBpdGVyYXRlZWAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBpdGVyYXRlZSBUaGUgZnVuY3Rpb24gaW52b2tlZCBwZXIgaXRlcmF0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiByZXN1bHRzLlxuICovXG5mdW5jdGlvbiBiYXNlVGltZXMobiwgaXRlcmF0ZWUpIHtcbiAgdmFyIGluZGV4ID0gLTEsXG4gICAgICByZXN1bHQgPSBBcnJheShuKTtcblxuICB3aGlsZSAoKytpbmRleCA8IG4pIHtcbiAgICByZXN1bHRbaW5kZXhdID0gaXRlcmF0ZWUoaW5kZXgpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VUaW1lcztcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzQXJndW1lbnRzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FyZ3VtZW50cyh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBhcmdzVGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNBcmd1bWVudHM7XG4iLCAiaW1wb3J0IGJhc2VJc0FyZ3VtZW50cyBmcm9tICcuL19iYXNlSXNBcmd1bWVudHMuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgbGlrZWx5IGFuIGBhcmd1bWVudHNgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBgYXJndW1lbnRzYCBvYmplY3QsXG4gKiAgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzQXJndW1lbnRzKGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJndW1lbnRzOyB9KCkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNBcmd1bWVudHMoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc0FyZ3VtZW50cyA9IGJhc2VJc0FyZ3VtZW50cyhmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3VtZW50czsgfSgpKSA/IGJhc2VJc0FyZ3VtZW50cyA6IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsICdjYWxsZWUnKSAmJlxuICAgICFwcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHZhbHVlLCAnY2FsbGVlJyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBpc0FyZ3VtZW50cztcbiIsICIvKipcbiAqIFRoaXMgbWV0aG9kIHJldHVybnMgYGZhbHNlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udGltZXMoMiwgXy5zdHViRmFsc2UpO1xuICogLy8gPT4gW2ZhbHNlLCBmYWxzZV1cbiAqL1xuZnVuY3Rpb24gc3R1YkZhbHNlKCkge1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0dWJGYWxzZTtcbiIsICJpbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcbmltcG9ydCBzdHViRmFsc2UgZnJvbSAnLi9zdHViRmFsc2UuanMnO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZDtcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgZm9yIHRob3NlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBvdGhlciBgbG9kYXNoYCBtZXRob2RzLiAqL1xudmFyIG5hdGl2ZUlzQnVmZmVyID0gQnVmZmVyID8gQnVmZmVyLmlzQnVmZmVyIDogdW5kZWZpbmVkO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4zLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCdWZmZXIobmV3IEJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0J1ZmZlcihuZXcgVWludDhBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNCdWZmZXIgPSBuYXRpdmVJc0J1ZmZlciB8fCBzdHViRmFsc2U7XG5cbmV4cG9ydCBkZWZhdWx0IGlzQnVmZmVyO1xuIiwgImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzTGVuZ3RoIGZyb20gJy4vaXNMZW5ndGguanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBhcmdzVGFnID0gJ1tvYmplY3QgQXJndW1lbnRzXScsXG4gICAgYXJyYXlUYWcgPSAnW29iamVjdCBBcnJheV0nLFxuICAgIGJvb2xUYWcgPSAnW29iamVjdCBCb29sZWFuXScsXG4gICAgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJyxcbiAgICBlcnJvclRhZyA9ICdbb2JqZWN0IEVycm9yXScsXG4gICAgZnVuY1RhZyA9ICdbb2JqZWN0IEZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIG9mIHR5cGVkIGFycmF5cy4gKi9cbnZhciB0eXBlZEFycmF5VGFncyA9IHt9O1xudHlwZWRBcnJheVRhZ3NbZmxvYXQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1tmbG9hdDY0VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQ4VGFnXSA9IHR5cGVkQXJyYXlUYWdzW2ludDE2VGFnXSA9XG50eXBlZEFycmF5VGFnc1tpbnQzMlRhZ10gPSB0eXBlZEFycmF5VGFnc1t1aW50OFRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDhDbGFtcGVkVGFnXSA9IHR5cGVkQXJyYXlUYWdzW3VpbnQxNlRhZ10gPVxudHlwZWRBcnJheVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG50eXBlZEFycmF5VGFnc1thcmdzVGFnXSA9IHR5cGVkQXJyYXlUYWdzW2FycmF5VGFnXSA9XG50eXBlZEFycmF5VGFnc1thcnJheUJ1ZmZlclRhZ10gPSB0eXBlZEFycmF5VGFnc1tib29sVGFnXSA9XG50eXBlZEFycmF5VGFnc1tkYXRhVmlld1RhZ10gPSB0eXBlZEFycmF5VGFnc1tkYXRlVGFnXSA9XG50eXBlZEFycmF5VGFnc1tlcnJvclRhZ10gPSB0eXBlZEFycmF5VGFnc1tmdW5jVGFnXSA9XG50eXBlZEFycmF5VGFnc1ttYXBUYWddID0gdHlwZWRBcnJheVRhZ3NbbnVtYmVyVGFnXSA9XG50eXBlZEFycmF5VGFnc1tvYmplY3RUYWddID0gdHlwZWRBcnJheVRhZ3NbcmVnZXhwVGFnXSA9XG50eXBlZEFycmF5VGFnc1tzZXRUYWddID0gdHlwZWRBcnJheVRhZ3Nbc3RyaW5nVGFnXSA9XG50eXBlZEFycmF5VGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzVHlwZWRBcnJheWAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSB0eXBlZCBhcnJheSwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNUeXBlZEFycmF5KHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmXG4gICAgaXNMZW5ndGgodmFsdWUubGVuZ3RoKSAmJiAhIXR5cGVkQXJyYXlUYWdzW2Jhc2VHZXRUYWcodmFsdWUpXTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUlzVHlwZWRBcnJheTtcbiIsICIvKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLnVuYXJ5YCB3aXRob3V0IHN1cHBvcnQgZm9yIHN0b3JpbmcgbWV0YWRhdGEuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGNhcCBhcmd1bWVudHMgZm9yLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgY2FwcGVkIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBiYXNlVW5hcnkoZnVuYykge1xuICByZXR1cm4gZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gZnVuYyh2YWx1ZSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VVbmFyeTtcbiIsICJpbXBvcnQgZnJlZUdsb2JhbCBmcm9tICcuL19mcmVlR2xvYmFsLmpzJztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBleHBvcnRzYC4gKi9cbnZhciBmcmVlRXhwb3J0cyA9IHR5cGVvZiBleHBvcnRzID09ICdvYmplY3QnICYmIGV4cG9ydHMgJiYgIWV4cG9ydHMubm9kZVR5cGUgJiYgZXhwb3J0cztcblxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBtb2R1bGVgLiAqL1xudmFyIGZyZWVNb2R1bGUgPSBmcmVlRXhwb3J0cyAmJiB0eXBlb2YgbW9kdWxlID09ICdvYmplY3QnICYmIG1vZHVsZSAmJiAhbW9kdWxlLm5vZGVUeXBlICYmIG1vZHVsZTtcblxuLyoqIERldGVjdCB0aGUgcG9wdWxhciBDb21tb25KUyBleHRlbnNpb24gYG1vZHVsZS5leHBvcnRzYC4gKi9cbnZhciBtb2R1bGVFeHBvcnRzID0gZnJlZU1vZHVsZSAmJiBmcmVlTW9kdWxlLmV4cG9ydHMgPT09IGZyZWVFeHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHByb2Nlc3NgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlUHJvY2VzcyA9IG1vZHVsZUV4cG9ydHMgJiYgZnJlZUdsb2JhbC5wcm9jZXNzO1xuXG4vKiogVXNlZCB0byBhY2Nlc3MgZmFzdGVyIE5vZGUuanMgaGVscGVycy4gKi9cbnZhciBub2RlVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgdHJ5IHtcbiAgICAvLyBVc2UgYHV0aWwudHlwZXNgIGZvciBOb2RlLmpzIDEwKy5cbiAgICB2YXIgdHlwZXMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUucmVxdWlyZSAmJiBmcmVlTW9kdWxlLnJlcXVpcmUoJ3V0aWwnKS50eXBlcztcblxuICAgIGlmICh0eXBlcykge1xuICAgICAgcmV0dXJuIHR5cGVzO1xuICAgIH1cblxuICAgIC8vIExlZ2FjeSBgcHJvY2Vzcy5iaW5kaW5nKCd1dGlsJylgIGZvciBOb2RlLmpzIDwgMTAuXG4gICAgcmV0dXJuIGZyZWVQcm9jZXNzICYmIGZyZWVQcm9jZXNzLmJpbmRpbmcgJiYgZnJlZVByb2Nlc3MuYmluZGluZygndXRpbCcpO1xuICB9IGNhdGNoIChlKSB7fVxufSgpKTtcblxuZXhwb3J0IGRlZmF1bHQgbm9kZVV0aWw7XG4iLCAiaW1wb3J0IGJhc2VJc1R5cGVkQXJyYXkgZnJvbSAnLi9fYmFzZUlzVHlwZWRBcnJheS5qcyc7XG5pbXBvcnQgYmFzZVVuYXJ5IGZyb20gJy4vX2Jhc2VVbmFyeS5qcyc7XG5pbXBvcnQgbm9kZVV0aWwgZnJvbSAnLi9fbm9kZVV0aWwuanMnO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1R5cGVkQXJyYXkgPSBub2RlVXRpbCAmJiBub2RlVXRpbC5pc1R5cGVkQXJyYXk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIHR5cGVkIGFycmF5LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgdHlwZWQgYXJyYXksIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1R5cGVkQXJyYXkobmV3IFVpbnQ4QXJyYXkpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNUeXBlZEFycmF5KFtdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1R5cGVkQXJyYXkgPSBub2RlSXNUeXBlZEFycmF5ID8gYmFzZVVuYXJ5KG5vZGVJc1R5cGVkQXJyYXkpIDogYmFzZUlzVHlwZWRBcnJheTtcblxuZXhwb3J0IGRlZmF1bHQgaXNUeXBlZEFycmF5O1xuIiwgImltcG9ydCBiYXNlVGltZXMgZnJvbSAnLi9fYmFzZVRpbWVzLmpzJztcbmltcG9ydCBpc0FyZ3VtZW50cyBmcm9tICcuL2lzQXJndW1lbnRzLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNCdWZmZXIgZnJvbSAnLi9pc0J1ZmZlci5qcyc7XG5pbXBvcnQgaXNJbmRleCBmcm9tICcuL19pc0luZGV4LmpzJztcbmltcG9ydCBpc1R5cGVkQXJyYXkgZnJvbSAnLi9pc1R5cGVkQXJyYXkuanMnO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blByb3BlcnR5O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIGVudW1lcmFibGUgcHJvcGVydHkgbmFtZXMgb2YgdGhlIGFycmF5LWxpa2UgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGluaGVyaXRlZCBTcGVjaWZ5IHJldHVybmluZyBpbmhlcml0ZWQgcHJvcGVydHkgbmFtZXMuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBhcnJheUxpa2VLZXlzKHZhbHVlLCBpbmhlcml0ZWQpIHtcbiAgdmFyIGlzQXJyID0gaXNBcnJheSh2YWx1ZSksXG4gICAgICBpc0FyZyA9ICFpc0FyciAmJiBpc0FyZ3VtZW50cyh2YWx1ZSksXG4gICAgICBpc0J1ZmYgPSAhaXNBcnIgJiYgIWlzQXJnICYmIGlzQnVmZmVyKHZhbHVlKSxcbiAgICAgIGlzVHlwZSA9ICFpc0FyciAmJiAhaXNBcmcgJiYgIWlzQnVmZiAmJiBpc1R5cGVkQXJyYXkodmFsdWUpLFxuICAgICAgc2tpcEluZGV4ZXMgPSBpc0FyciB8fCBpc0FyZyB8fCBpc0J1ZmYgfHwgaXNUeXBlLFxuICAgICAgcmVzdWx0ID0gc2tpcEluZGV4ZXMgPyBiYXNlVGltZXModmFsdWUubGVuZ3RoLCBTdHJpbmcpIDogW10sXG4gICAgICBsZW5ndGggPSByZXN1bHQubGVuZ3RoO1xuXG4gIGZvciAodmFyIGtleSBpbiB2YWx1ZSkge1xuICAgIGlmICgoaW5oZXJpdGVkIHx8IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGtleSkpICYmXG4gICAgICAgICEoc2tpcEluZGV4ZXMgJiYgKFxuICAgICAgICAgICAvLyBTYWZhcmkgOSBoYXMgZW51bWVyYWJsZSBgYXJndW1lbnRzLmxlbmd0aGAgaW4gc3RyaWN0IG1vZGUuXG4gICAgICAgICAgIGtleSA9PSAnbGVuZ3RoJyB8fFxuICAgICAgICAgICAvLyBOb2RlLmpzIDAuMTAgaGFzIGVudW1lcmFibGUgbm9uLWluZGV4IHByb3BlcnRpZXMgb24gYnVmZmVycy5cbiAgICAgICAgICAgKGlzQnVmZiAmJiAoa2V5ID09ICdvZmZzZXQnIHx8IGtleSA9PSAncGFyZW50JykpIHx8XG4gICAgICAgICAgIC8vIFBoYW50b21KUyAyIGhhcyBlbnVtZXJhYmxlIG5vbi1pbmRleCBwcm9wZXJ0aWVzIG9uIHR5cGVkIGFycmF5cy5cbiAgICAgICAgICAgKGlzVHlwZSAmJiAoa2V5ID09ICdidWZmZXInIHx8IGtleSA9PSAnYnl0ZUxlbmd0aCcgfHwga2V5ID09ICdieXRlT2Zmc2V0JykpIHx8XG4gICAgICAgICAgIC8vIFNraXAgaW5kZXggcHJvcGVydGllcy5cbiAgICAgICAgICAgaXNJbmRleChrZXksIGxlbmd0aClcbiAgICAgICAgKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5TGlrZUtleXM7XG4iLCAiLyoqXG4gKiBDcmVhdGVzIGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0cmFuc2Zvcm1lZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IHRyYW5zZm9ybSBUaGUgYXJndW1lbnQgdHJhbnNmb3JtLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIG92ZXJBcmcoZnVuYywgdHJhbnNmb3JtKSB7XG4gIHJldHVybiBmdW5jdGlvbihhcmcpIHtcbiAgICByZXR1cm4gZnVuYyh0cmFuc2Zvcm0oYXJnKSk7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IG92ZXJBcmc7XG4iLCAiaW1wb3J0IG92ZXJBcmcgZnJvbSAnLi9fb3ZlckFyZy5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVLZXlzID0gb3ZlckFyZyhPYmplY3Qua2V5cywgT2JqZWN0KTtcblxuZXhwb3J0IGRlZmF1bHQgbmF0aXZlS2V5cztcbiIsICJpbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9faXNQcm90b3R5cGUuanMnO1xuaW1wb3J0IG5hdGl2ZUtleXMgZnJvbSAnLi9fbmF0aXZlS2V5cy5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c2Agd2hpY2ggZG9lc24ndCB0cmVhdCBzcGFyc2UgYXJyYXlzIGFzIGRlbnNlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzLlxuICovXG5mdW5jdGlvbiBiYXNlS2V5cyhvYmplY3QpIHtcbiAgaWYgKCFpc1Byb3RvdHlwZShvYmplY3QpKSB7XG4gICAgcmV0dXJuIG5hdGl2ZUtleXMob2JqZWN0KTtcbiAgfVxuICB2YXIgcmVzdWx0ID0gW107XG4gIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJiBrZXkgIT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUtleXM7XG4iLCAiaW1wb3J0IGFycmF5TGlrZUtleXMgZnJvbSAnLi9fYXJyYXlMaWtlS2V5cy5qcyc7XG5pbXBvcnQgYmFzZUtleXMgZnJvbSAnLi9fYmFzZUtleXMuanMnO1xuaW1wb3J0IGlzQXJyYXlMaWtlIGZyb20gJy4vaXNBcnJheUxpa2UuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgb2YgdGhlIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLiBTZWUgdGhlXG4gKiBbRVMgc3BlY10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LmtleXMpXG4gKiBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5cyhuZXcgRm9vKTtcbiAqIC8vID0+IFsnYScsICdiJ10gKGl0ZXJhdGlvbiBvcmRlciBpcyBub3QgZ3VhcmFudGVlZClcbiAqXG4gKiBfLmtleXMoJ2hpJyk7XG4gKiAvLyA9PiBbJzAnLCAnMSddXG4gKi9cbmZ1bmN0aW9uIGtleXMob2JqZWN0KSB7XG4gIHJldHVybiBpc0FycmF5TGlrZShvYmplY3QpID8gYXJyYXlMaWtlS2V5cyhvYmplY3QpIDogYmFzZUtleXMob2JqZWN0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQga2V5cztcbiIsICIvKipcbiAqIFRoaXMgZnVuY3Rpb24gaXMgbGlrZVxuICogW2BPYmplY3Qua2V5c2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5rZXlzKVxuICogZXhjZXB0IHRoYXQgaXQgaW5jbHVkZXMgaW5oZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydGllcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcy5cbiAqL1xuZnVuY3Rpb24gbmF0aXZlS2V5c0luKG9iamVjdCkge1xuICB2YXIgcmVzdWx0ID0gW107XG4gIGlmIChvYmplY3QgIT0gbnVsbCkge1xuICAgIGZvciAodmFyIGtleSBpbiBPYmplY3Qob2JqZWN0KSkge1xuICAgICAgcmVzdWx0LnB1c2goa2V5KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbmF0aXZlS2V5c0luO1xuIiwgImltcG9ydCBpc09iamVjdCBmcm9tICcuL2lzT2JqZWN0LmpzJztcbmltcG9ydCBpc1Byb3RvdHlwZSBmcm9tICcuL19pc1Byb3RvdHlwZS5qcyc7XG5pbXBvcnQgbmF0aXZlS2V5c0luIGZyb20gJy4vX25hdGl2ZUtleXNJbi5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ua2V5c0luYCB3aGljaCBkb2Vzbid0IHRyZWF0IHNwYXJzZSBhcnJheXMgYXMgZGVuc2UuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKi9cbmZ1bmN0aW9uIGJhc2VLZXlzSW4ob2JqZWN0KSB7XG4gIGlmICghaXNPYmplY3Qob2JqZWN0KSkge1xuICAgIHJldHVybiBuYXRpdmVLZXlzSW4ob2JqZWN0KTtcbiAgfVxuICB2YXIgaXNQcm90byA9IGlzUHJvdG90eXBlKG9iamVjdCksXG4gICAgICByZXN1bHQgPSBbXTtcblxuICBmb3IgKHZhciBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKCEoa2V5ID09ICdjb25zdHJ1Y3RvcicgJiYgKGlzUHJvdG8gfHwgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkpIHtcbiAgICAgIHJlc3VsdC5wdXNoKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VLZXlzSW47XG4iLCAiaW1wb3J0IGFycmF5TGlrZUtleXMgZnJvbSAnLi9fYXJyYXlMaWtlS2V5cy5qcyc7XG5pbXBvcnQgYmFzZUtleXNJbiBmcm9tICcuL19iYXNlS2V5c0luLmpzJztcbmltcG9ydCBpc0FycmF5TGlrZSBmcm9tICcuL2lzQXJyYXlMaWtlLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIG9mIGBvYmplY3RgLlxuICpcbiAqICoqTm90ZToqKiBOb24tb2JqZWN0IHZhbHVlcyBhcmUgY29lcmNlZCB0byBvYmplY3RzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBPYmplY3RcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgbmFtZXMuXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtcbiAqICAgdGhpcy5iID0gMjtcbiAqIH1cbiAqXG4gKiBGb28ucHJvdG90eXBlLmMgPSAzO1xuICpcbiAqIF8ua2V5c0luKG5ldyBGb28pO1xuICogLy8gPT4gWydhJywgJ2InLCAnYyddIChpdGVyYXRpb24gb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQpXG4gKi9cbmZ1bmN0aW9uIGtleXNJbihvYmplY3QpIHtcbiAgcmV0dXJuIGlzQXJyYXlMaWtlKG9iamVjdCkgPyBhcnJheUxpa2VLZXlzKG9iamVjdCwgdHJ1ZSkgOiBiYXNlS2V5c0luKG9iamVjdCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGtleXNJbjtcbiIsICJpbXBvcnQgY29weU9iamVjdCBmcm9tICcuL19jb3B5T2JqZWN0LmpzJztcbmltcG9ydCBjcmVhdGVBc3NpZ25lciBmcm9tICcuL19jcmVhdGVBc3NpZ25lci5qcyc7XG5pbXBvcnQga2V5c0luIGZyb20gJy4va2V5c0luLmpzJztcblxuLyoqXG4gKiBUaGlzIG1ldGhvZCBpcyBsaWtlIGBfLmFzc2lnbkluYCBleGNlcHQgdGhhdCBpdCBhY2NlcHRzIGBjdXN0b21pemVyYFxuICogd2hpY2ggaXMgaW52b2tlZCB0byBwcm9kdWNlIHRoZSBhc3NpZ25lZCB2YWx1ZXMuIElmIGBjdXN0b21pemVyYCByZXR1cm5zXG4gKiBgdW5kZWZpbmVkYCwgYXNzaWdubWVudCBpcyBoYW5kbGVkIGJ5IHRoZSBtZXRob2QgaW5zdGVhZC4gVGhlIGBjdXN0b21pemVyYFxuICogaXMgaW52b2tlZCB3aXRoIGZpdmUgYXJndW1lbnRzOiAob2JqVmFsdWUsIHNyY1ZhbHVlLCBrZXksIG9iamVjdCwgc291cmNlKS5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgbXV0YXRlcyBgb2JqZWN0YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAYWxpYXMgZXh0ZW5kV2l0aFxuICogQGNhdGVnb3J5IE9iamVjdFxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHsuLi5PYmplY3R9IHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gW2N1c3RvbWl6ZXJdIFRoZSBmdW5jdGlvbiB0byBjdXN0b21pemUgYXNzaWduZWQgdmFsdWVzLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqIEBzZWUgXy5hc3NpZ25XaXRoXG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIGN1c3RvbWl6ZXIob2JqVmFsdWUsIHNyY1ZhbHVlKSB7XG4gKiAgIHJldHVybiBfLmlzVW5kZWZpbmVkKG9ialZhbHVlKSA/IHNyY1ZhbHVlIDogb2JqVmFsdWU7XG4gKiB9XG4gKlxuICogdmFyIGRlZmF1bHRzID0gXy5wYXJ0aWFsUmlnaHQoXy5hc3NpZ25JbldpdGgsIGN1c3RvbWl6ZXIpO1xuICpcbiAqIGRlZmF1bHRzKHsgJ2EnOiAxIH0sIHsgJ2InOiAyIH0sIHsgJ2EnOiAzIH0pO1xuICogLy8gPT4geyAnYSc6IDEsICdiJzogMiB9XG4gKi9cbnZhciBhc3NpZ25JbldpdGggPSBjcmVhdGVBc3NpZ25lcihmdW5jdGlvbihvYmplY3QsIHNvdXJjZSwgc3JjSW5kZXgsIGN1c3RvbWl6ZXIpIHtcbiAgY29weU9iamVjdChzb3VyY2UsIGtleXNJbihzb3VyY2UpLCBvYmplY3QsIGN1c3RvbWl6ZXIpO1xufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGFzc2lnbkluV2l0aDtcbiIsICJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBuYXRpdmVDcmVhdGUgPSBnZXROYXRpdmUoT2JqZWN0LCAnY3JlYXRlJyk7XG5cbmV4cG9ydCBkZWZhdWx0IG5hdGl2ZUNyZWF0ZTtcbiIsICJpbXBvcnQgbmF0aXZlQ3JlYXRlIGZyb20gJy4vX25hdGl2ZUNyZWF0ZS5qcyc7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgY2xlYXJcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKi9cbmZ1bmN0aW9uIGhhc2hDbGVhcigpIHtcbiAgdGhpcy5fX2RhdGFfXyA9IG5hdGl2ZUNyZWF0ZSA/IG5hdGl2ZUNyZWF0ZShudWxsKSA6IHt9O1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBoYXNoQ2xlYXI7XG4iLCAiLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgaGFzaC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZGVsZXRlXG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtPYmplY3R9IGhhc2ggVGhlIGhhc2ggdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGhhc2hEZWxldGUoa2V5KSB7XG4gIHZhciByZXN1bHQgPSB0aGlzLmhhcyhrZXkpICYmIGRlbGV0ZSB0aGlzLl9fZGF0YV9fW2tleV07XG4gIHRoaXMuc2l6ZSAtPSByZXN1bHQgPyAxIDogMDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzaERlbGV0ZTtcbiIsICJpbXBvcnQgbmF0aXZlQ3JlYXRlIGZyb20gJy4vX25hdGl2ZUNyZWF0ZS5qcyc7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBHZXRzIHRoZSBoYXNoIHZhbHVlIGZvciBga2V5YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgZ2V0XG4gKiBAbWVtYmVyT2YgSGFzaFxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBnZXQuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgZW50cnkgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGhhc2hHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKG5hdGl2ZUNyZWF0ZSkge1xuICAgIHZhciByZXN1bHQgPSBkYXRhW2tleV07XG4gICAgcmV0dXJuIHJlc3VsdCA9PT0gSEFTSF9VTkRFRklORUQgPyB1bmRlZmluZWQgOiByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KSA/IGRhdGFba2V5XSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzaEdldDtcbiIsICJpbXBvcnQgbmF0aXZlQ3JlYXRlIGZyb20gJy4vX25hdGl2ZUNyZWF0ZS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGEgaGFzaCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBIYXNoXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzaEhhcyhrZXkpIHtcbiAgdmFyIGRhdGEgPSB0aGlzLl9fZGF0YV9fO1xuICByZXR1cm4gbmF0aXZlQ3JlYXRlID8gKGRhdGFba2V5XSAhPT0gdW5kZWZpbmVkKSA6IGhhc093blByb3BlcnR5LmNhbGwoZGF0YSwga2V5KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaGFzaEhhcztcbiIsICJpbXBvcnQgbmF0aXZlQ3JlYXRlIGZyb20gJy4vX25hdGl2ZUNyZWF0ZS5qcyc7XG5cbi8qKiBVc2VkIHRvIHN0YW5kLWluIGZvciBgdW5kZWZpbmVkYCBoYXNoIHZhbHVlcy4gKi9cbnZhciBIQVNIX1VOREVGSU5FRCA9ICdfX2xvZGFzaF9oYXNoX3VuZGVmaW5lZF9fJztcblxuLyoqXG4gKiBTZXRzIHRoZSBoYXNoIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIEhhc2hcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaGFzaCBpbnN0YW5jZS5cbiAqL1xuZnVuY3Rpb24gaGFzaFNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgdGhpcy5zaXplICs9IHRoaXMuaGFzKGtleSkgPyAwIDogMTtcbiAgZGF0YVtrZXldID0gKG5hdGl2ZUNyZWF0ZSAmJiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSA/IEhBU0hfVU5ERUZJTkVEIDogdmFsdWU7XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBoYXNoU2V0O1xuIiwgImltcG9ydCBoYXNoQ2xlYXIgZnJvbSAnLi9faGFzaENsZWFyLmpzJztcbmltcG9ydCBoYXNoRGVsZXRlIGZyb20gJy4vX2hhc2hEZWxldGUuanMnO1xuaW1wb3J0IGhhc2hHZXQgZnJvbSAnLi9faGFzaEdldC5qcyc7XG5pbXBvcnQgaGFzaEhhcyBmcm9tICcuL19oYXNoSGFzLmpzJztcbmltcG9ydCBoYXNoU2V0IGZyb20gJy4vX2hhc2hTZXQuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBoYXNoIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQGNvbnN0cnVjdG9yXG4gKiBAcGFyYW0ge0FycmF5fSBbZW50cmllc10gVGhlIGtleS12YWx1ZSBwYWlycyB0byBjYWNoZS5cbiAqL1xuZnVuY3Rpb24gSGFzaChlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBIYXNoYC5cbkhhc2gucHJvdG90eXBlLmNsZWFyID0gaGFzaENsZWFyO1xuSGFzaC5wcm90b3R5cGVbJ2RlbGV0ZSddID0gaGFzaERlbGV0ZTtcbkhhc2gucHJvdG90eXBlLmdldCA9IGhhc2hHZXQ7XG5IYXNoLnByb3RvdHlwZS5oYXMgPSBoYXNoSGFzO1xuSGFzaC5wcm90b3R5cGUuc2V0ID0gaGFzaFNldDtcblxuZXhwb3J0IGRlZmF1bHQgSGFzaDtcbiIsICIvKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIGxpc3QgY2FjaGUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGNsZWFyXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKi9cbmZ1bmN0aW9uIGxpc3RDYWNoZUNsZWFyKCkge1xuICB0aGlzLl9fZGF0YV9fID0gW107XG4gIHRoaXMuc2l6ZSA9IDA7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGxpc3RDYWNoZUNsZWFyO1xuIiwgImltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqXG4gKiBHZXRzIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgYGtleWAgaXMgZm91bmQgaW4gYGFycmF5YCBvZiBrZXktdmFsdWUgcGFpcnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBpbnNwZWN0LlxuICogQHBhcmFtIHsqfSBrZXkgVGhlIGtleSB0byBzZWFyY2ggZm9yLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIG1hdGNoZWQgdmFsdWUsIGVsc2UgYC0xYC5cbiAqL1xuZnVuY3Rpb24gYXNzb2NJbmRleE9mKGFycmF5LCBrZXkpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgd2hpbGUgKGxlbmd0aC0tKSB7XG4gICAgaWYgKGVxKGFycmF5W2xlbmd0aF1bMF0sIGtleSkpIHtcbiAgICAgIHJldHVybiBsZW5ndGg7XG4gICAgfVxuICB9XG4gIHJldHVybiAtMTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNzb2NJbmRleE9mO1xuIiwgImltcG9ydCBhc3NvY0luZGV4T2YgZnJvbSAnLi9fYXNzb2NJbmRleE9mLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIGFycmF5UHJvdG8gPSBBcnJheS5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHNwbGljZSA9IGFycmF5UHJvdG8uc3BsaWNlO1xuXG4vKipcbiAqIFJlbW92ZXMgYGtleWAgYW5kIGl0cyB2YWx1ZSBmcm9tIHRoZSBsaXN0IGNhY2hlLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gcmVtb3ZlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIHRoZSBlbnRyeSB3YXMgcmVtb3ZlZCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVEZWxldGUoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgaWYgKGluZGV4IDwgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgbGFzdEluZGV4ID0gZGF0YS5sZW5ndGggLSAxO1xuICBpZiAoaW5kZXggPT0gbGFzdEluZGV4KSB7XG4gICAgZGF0YS5wb3AoKTtcbiAgfSBlbHNlIHtcbiAgICBzcGxpY2UuY2FsbChkYXRhLCBpbmRleCwgMSk7XG4gIH1cbiAgLS10aGlzLnNpemU7XG4gIHJldHVybiB0cnVlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBsaXN0Q2FjaGVEZWxldGU7XG4iLCAiaW1wb3J0IGFzc29jSW5kZXhPZiBmcm9tICcuL19hc3NvY0luZGV4T2YuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBnZXRcbiAqIEBtZW1iZXJPZiBMaXN0Q2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gZ2V0LlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGVudHJ5IHZhbHVlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVHZXQoa2V5KSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyxcbiAgICAgIGluZGV4ID0gYXNzb2NJbmRleE9mKGRhdGEsIGtleSk7XG5cbiAgcmV0dXJuIGluZGV4IDwgMCA/IHVuZGVmaW5lZCA6IGRhdGFbaW5kZXhdWzFdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBsaXN0Q2FjaGVHZXQ7XG4iLCAiaW1wb3J0IGFzc29jSW5kZXhPZiBmcm9tICcuL19hc3NvY0luZGV4T2YuanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGxpc3QgY2FjaGUgdmFsdWUgZm9yIGBrZXlgIGV4aXN0cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgaGFzXG4gKiBAbWVtYmVyT2YgTGlzdENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gbGlzdENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gYXNzb2NJbmRleE9mKHRoaXMuX19kYXRhX18sIGtleSkgPiAtMTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbGlzdENhY2hlSGFzO1xuIiwgImltcG9ydCBhc3NvY0luZGV4T2YgZnJvbSAnLi9fYXNzb2NJbmRleE9mLmpzJztcblxuLyoqXG4gKiBTZXRzIHRoZSBsaXN0IGNhY2hlIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIExpc3RDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBzZXQuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBsaXN0IGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBsaXN0Q2FjaGVTZXQoa2V5LCB2YWx1ZSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICBpbmRleCA9IGFzc29jSW5kZXhPZihkYXRhLCBrZXkpO1xuXG4gIGlmIChpbmRleCA8IDApIHtcbiAgICArK3RoaXMuc2l6ZTtcbiAgICBkYXRhLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgfSBlbHNlIHtcbiAgICBkYXRhW2luZGV4XVsxXSA9IHZhbHVlO1xuICB9XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBsaXN0Q2FjaGVTZXQ7XG4iLCAiaW1wb3J0IGxpc3RDYWNoZUNsZWFyIGZyb20gJy4vX2xpc3RDYWNoZUNsZWFyLmpzJztcbmltcG9ydCBsaXN0Q2FjaGVEZWxldGUgZnJvbSAnLi9fbGlzdENhY2hlRGVsZXRlLmpzJztcbmltcG9ydCBsaXN0Q2FjaGVHZXQgZnJvbSAnLi9fbGlzdENhY2hlR2V0LmpzJztcbmltcG9ydCBsaXN0Q2FjaGVIYXMgZnJvbSAnLi9fbGlzdENhY2hlSGFzLmpzJztcbmltcG9ydCBsaXN0Q2FjaGVTZXQgZnJvbSAnLi9fbGlzdENhY2hlU2V0LmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGxpc3QgY2FjaGUgb2JqZWN0LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBMaXN0Q2FjaGUoZW50cmllcykge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGVudHJpZXMgPT0gbnVsbCA/IDAgOiBlbnRyaWVzLmxlbmd0aDtcblxuICB0aGlzLmNsZWFyKCk7XG4gIHdoaWxlICgrK2luZGV4IDwgbGVuZ3RoKSB7XG4gICAgdmFyIGVudHJ5ID0gZW50cmllc1tpbmRleF07XG4gICAgdGhpcy5zZXQoZW50cnlbMF0sIGVudHJ5WzFdKTtcbiAgfVxufVxuXG4vLyBBZGQgbWV0aG9kcyB0byBgTGlzdENhY2hlYC5cbkxpc3RDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBsaXN0Q2FjaGVDbGVhcjtcbkxpc3RDYWNoZS5wcm90b3R5cGVbJ2RlbGV0ZSddID0gbGlzdENhY2hlRGVsZXRlO1xuTGlzdENhY2hlLnByb3RvdHlwZS5nZXQgPSBsaXN0Q2FjaGVHZXQ7XG5MaXN0Q2FjaGUucHJvdG90eXBlLmhhcyA9IGxpc3RDYWNoZUhhcztcbkxpc3RDYWNoZS5wcm90b3R5cGUuc2V0ID0gbGlzdENhY2hlU2V0O1xuXG5leHBvcnQgZGVmYXVsdCBMaXN0Q2FjaGU7XG4iLCAiaW1wb3J0IGdldE5hdGl2ZSBmcm9tICcuL19nZXROYXRpdmUuanMnO1xuaW1wb3J0IHJvb3QgZnJvbSAnLi9fcm9vdC5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHRoYXQgYXJlIHZlcmlmaWVkIHRvIGJlIG5hdGl2ZS4gKi9cbnZhciBNYXAgPSBnZXROYXRpdmUocm9vdCwgJ01hcCcpO1xuXG5leHBvcnQgZGVmYXVsdCBNYXA7XG4iLCAiaW1wb3J0IEhhc2ggZnJvbSAnLi9fSGFzaC5qcyc7XG5pbXBvcnQgTGlzdENhY2hlIGZyb20gJy4vX0xpc3RDYWNoZS5qcyc7XG5pbXBvcnQgTWFwIGZyb20gJy4vX01hcC5qcyc7XG5cbi8qKlxuICogUmVtb3ZlcyBhbGwga2V5LXZhbHVlIGVudHJpZXMgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlQ2xlYXIoKSB7XG4gIHRoaXMuc2l6ZSA9IDA7XG4gIHRoaXMuX19kYXRhX18gPSB7XG4gICAgJ2hhc2gnOiBuZXcgSGFzaCxcbiAgICAnbWFwJzogbmV3IChNYXAgfHwgTGlzdENhY2hlKSxcbiAgICAnc3RyaW5nJzogbmV3IEhhc2hcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWFwQ2FjaGVDbGVhcjtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIHN1aXRhYmxlIGZvciB1c2UgYXMgdW5pcXVlIG9iamVjdCBrZXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgc3VpdGFibGUsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaXNLZXlhYmxlKHZhbHVlKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIHZhbHVlO1xuICByZXR1cm4gKHR5cGUgPT0gJ3N0cmluZycgfHwgdHlwZSA9PSAnbnVtYmVyJyB8fCB0eXBlID09ICdzeW1ib2wnIHx8IHR5cGUgPT0gJ2Jvb2xlYW4nKVxuICAgID8gKHZhbHVlICE9PSAnX19wcm90b19fJylcbiAgICA6ICh2YWx1ZSA9PT0gbnVsbCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzS2V5YWJsZTtcbiIsICJpbXBvcnQgaXNLZXlhYmxlIGZyb20gJy4vX2lzS2V5YWJsZS5qcyc7XG5cbi8qKlxuICogR2V0cyB0aGUgZGF0YSBmb3IgYG1hcGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBtYXAgVGhlIG1hcCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIHJlZmVyZW5jZSBrZXkuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgbWFwIGRhdGEuXG4gKi9cbmZ1bmN0aW9uIGdldE1hcERhdGEobWFwLCBrZXkpIHtcbiAgdmFyIGRhdGEgPSBtYXAuX19kYXRhX187XG4gIHJldHVybiBpc0tleWFibGUoa2V5KVxuICAgID8gZGF0YVt0eXBlb2Yga2V5ID09ICdzdHJpbmcnID8gJ3N0cmluZycgOiAnaGFzaCddXG4gICAgOiBkYXRhLm1hcDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0TWFwRGF0YTtcbiIsICJpbXBvcnQgZ2V0TWFwRGF0YSBmcm9tICcuL19nZXRNYXBEYXRhLmpzJztcblxuLyoqXG4gKiBSZW1vdmVzIGBrZXlgIGFuZCBpdHMgdmFsdWUgZnJvbSB0aGUgbWFwLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlRGVsZXRlKGtleSkge1xuICB2YXIgcmVzdWx0ID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpWydkZWxldGUnXShrZXkpO1xuICB0aGlzLnNpemUgLT0gcmVzdWx0ID8gMSA6IDA7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1hcENhY2hlRGVsZXRlO1xuIiwgImltcG9ydCBnZXRNYXBEYXRhIGZyb20gJy4vX2dldE1hcERhdGEuanMnO1xuXG4vKipcbiAqIEdldHMgdGhlIG1hcCB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIE1hcENhY2hlXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gbWFwQ2FjaGVHZXQoa2V5KSB7XG4gIHJldHVybiBnZXRNYXBEYXRhKHRoaXMsIGtleSkuZ2V0KGtleSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG1hcENhY2hlR2V0O1xuIiwgImltcG9ydCBnZXRNYXBEYXRhIGZyb20gJy4vX2dldE1hcERhdGEuanMnO1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIG1hcCB2YWx1ZSBmb3IgYGtleWAgZXhpc3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBoYXNcbiAqIEBtZW1iZXJPZiBNYXBDYWNoZVxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBlbnRyeSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBhbiBlbnRyeSBmb3IgYGtleWAgZXhpc3RzLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIG1hcENhY2hlSGFzKGtleSkge1xuICByZXR1cm4gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLmhhcyhrZXkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtYXBDYWNoZUhhcztcbiIsICJpbXBvcnQgZ2V0TWFwRGF0YSBmcm9tICcuL19nZXRNYXBEYXRhLmpzJztcblxuLyoqXG4gKiBTZXRzIHRoZSBtYXAgYGtleWAgdG8gYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQG5hbWUgc2V0XG4gKiBAbWVtYmVyT2YgTWFwQ2FjaGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgVGhlIGtleSBvZiB0aGUgdmFsdWUgdG8gc2V0LlxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gc2V0LlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgbWFwIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBtYXBDYWNoZVNldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gZ2V0TWFwRGF0YSh0aGlzLCBrZXkpLFxuICAgICAgc2l6ZSA9IGRhdGEuc2l6ZTtcblxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplICs9IGRhdGEuc2l6ZSA9PSBzaXplID8gMCA6IDE7XG4gIHJldHVybiB0aGlzO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtYXBDYWNoZVNldDtcbiIsICJpbXBvcnQgbWFwQ2FjaGVDbGVhciBmcm9tICcuL19tYXBDYWNoZUNsZWFyLmpzJztcbmltcG9ydCBtYXBDYWNoZURlbGV0ZSBmcm9tICcuL19tYXBDYWNoZURlbGV0ZS5qcyc7XG5pbXBvcnQgbWFwQ2FjaGVHZXQgZnJvbSAnLi9fbWFwQ2FjaGVHZXQuanMnO1xuaW1wb3J0IG1hcENhY2hlSGFzIGZyb20gJy4vX21hcENhY2hlSGFzLmpzJztcbmltcG9ydCBtYXBDYWNoZVNldCBmcm9tICcuL19tYXBDYWNoZVNldC5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIG1hcCBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBNYXBDYWNoZShlbnRyaWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gZW50cmllcyA9PSBudWxsID8gMCA6IGVudHJpZXMubGVuZ3RoO1xuXG4gIHRoaXMuY2xlYXIoKTtcbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgZW50cnkgPSBlbnRyaWVzW2luZGV4XTtcbiAgICB0aGlzLnNldChlbnRyeVswXSwgZW50cnlbMV0pO1xuICB9XG59XG5cbi8vIEFkZCBtZXRob2RzIHRvIGBNYXBDYWNoZWAuXG5NYXBDYWNoZS5wcm90b3R5cGUuY2xlYXIgPSBtYXBDYWNoZUNsZWFyO1xuTWFwQ2FjaGUucHJvdG90eXBlWydkZWxldGUnXSA9IG1hcENhY2hlRGVsZXRlO1xuTWFwQ2FjaGUucHJvdG90eXBlLmdldCA9IG1hcENhY2hlR2V0O1xuTWFwQ2FjaGUucHJvdG90eXBlLmhhcyA9IG1hcENhY2hlSGFzO1xuTWFwQ2FjaGUucHJvdG90eXBlLnNldCA9IG1hcENhY2hlU2V0O1xuXG5leHBvcnQgZGVmYXVsdCBNYXBDYWNoZTtcbiIsICJpbXBvcnQgYmFzZVRvU3RyaW5nIGZyb20gJy4vX2Jhc2VUb1N0cmluZy5qcyc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmluZy4gQW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkIGZvciBgbnVsbGBcbiAqIGFuZCBgdW5kZWZpbmVkYCB2YWx1ZXMuIFRoZSBzaWduIG9mIGAtMGAgaXMgcHJlc2VydmVkLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVydGVkIHN0cmluZy5cbiAqIEBleGFtcGxlXG4gKlxuICogXy50b1N0cmluZyhudWxsKTtcbiAqIC8vID0+ICcnXG4gKlxuICogXy50b1N0cmluZygtMCk7XG4gKiAvLyA9PiAnLTAnXG4gKlxuICogXy50b1N0cmluZyhbMSwgMiwgM10pO1xuICogLy8gPT4gJzEsMiwzJ1xuICovXG5mdW5jdGlvbiB0b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogYmFzZVRvU3RyaW5nKHZhbHVlKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdG9TdHJpbmc7XG4iLCAiLyoqXG4gKiBBcHBlbmRzIHRoZSBlbGVtZW50cyBvZiBgdmFsdWVzYCB0byBgYXJyYXlgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gbW9kaWZ5LlxuICogQHBhcmFtIHtBcnJheX0gdmFsdWVzIFRoZSB2YWx1ZXMgdG8gYXBwZW5kLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIGBhcnJheWAuXG4gKi9cbmZ1bmN0aW9uIGFycmF5UHVzaChhcnJheSwgdmFsdWVzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gdmFsdWVzLmxlbmd0aCxcbiAgICAgIG9mZnNldCA9IGFycmF5Lmxlbmd0aDtcblxuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIGFycmF5W29mZnNldCArIGluZGV4XSA9IHZhbHVlc1tpbmRleF07XG4gIH1cbiAgcmV0dXJuIGFycmF5O1xufVxuXG5leHBvcnQgZGVmYXVsdCBhcnJheVB1c2g7XG4iLCAiaW1wb3J0IG92ZXJBcmcgZnJvbSAnLi9fb3ZlckFyZy5qcyc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5leHBvcnQgZGVmYXVsdCBnZXRQcm90b3R5cGU7XG4iLCAiaW1wb3J0IGJhc2VHZXRUYWcgZnJvbSAnLi9fYmFzZUdldFRhZy5qcyc7XG5pbXBvcnQgZ2V0UHJvdG90eXBlIGZyb20gJy4vX2dldFByb3RvdHlwZS5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1Byb3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVuY3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5mZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxsYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28oKSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc1BsYWluT2JqZWN0O1xuIiwgImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5pbXBvcnQgaXNQbGFpbk9iamVjdCBmcm9tICcuL2lzUGxhaW5PYmplY3QuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZG9tRXhjVGFnID0gJ1tvYmplY3QgRE9NRXhjZXB0aW9uXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGFuIGBFcnJvcmAsIGBFdmFsRXJyb3JgLCBgUmFuZ2VFcnJvcmAsIGBSZWZlcmVuY2VFcnJvcmAsXG4gKiBgU3ludGF4RXJyb3JgLCBgVHlwZUVycm9yYCwgb3IgYFVSSUVycm9yYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAzLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gZXJyb3Igb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNFcnJvcihuZXcgRXJyb3IpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNFcnJvcihFcnJvcik7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc0Vycm9yKHZhbHVlKSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2YXIgdGFnID0gYmFzZUdldFRhZyh2YWx1ZSk7XG4gIHJldHVybiB0YWcgPT0gZXJyb3JUYWcgfHwgdGFnID09IGRvbUV4Y1RhZyB8fFxuICAgICh0eXBlb2YgdmFsdWUubWVzc2FnZSA9PSAnc3RyaW5nJyAmJiB0eXBlb2YgdmFsdWUubmFtZSA9PSAnc3RyaW5nJyAmJiAhaXNQbGFpbk9iamVjdCh2YWx1ZSkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBpc0Vycm9yO1xuIiwgImltcG9ydCBhcHBseSBmcm9tICcuL19hcHBseS5qcyc7XG5pbXBvcnQgYmFzZVJlc3QgZnJvbSAnLi9fYmFzZVJlc3QuanMnO1xuaW1wb3J0IGlzRXJyb3IgZnJvbSAnLi9pc0Vycm9yLmpzJztcblxuLyoqXG4gKiBBdHRlbXB0cyB0byBpbnZva2UgYGZ1bmNgLCByZXR1cm5pbmcgZWl0aGVyIHRoZSByZXN1bHQgb3IgdGhlIGNhdWdodCBlcnJvclxuICogb2JqZWN0LiBBbnkgYWRkaXRpb25hbCBhcmd1bWVudHMgYXJlIHByb3ZpZGVkIHRvIGBmdW5jYCB3aGVuIGl0J3MgaW52b2tlZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDMuMC4wXG4gKiBAY2F0ZWdvcnkgVXRpbFxuICogQHBhcmFtIHtGdW5jdGlvbn0gZnVuYyBUaGUgZnVuY3Rpb24gdG8gYXR0ZW1wdC5cbiAqIEBwYXJhbSB7Li4uKn0gW2FyZ3NdIFRoZSBhcmd1bWVudHMgdG8gaW52b2tlIGBmdW5jYCB3aXRoLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGBmdW5jYCByZXN1bHQgb3IgZXJyb3Igb2JqZWN0LlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBBdm9pZCB0aHJvd2luZyBlcnJvcnMgZm9yIGludmFsaWQgc2VsZWN0b3JzLlxuICogdmFyIGVsZW1lbnRzID0gXy5hdHRlbXB0KGZ1bmN0aW9uKHNlbGVjdG9yKSB7XG4gKiAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTtcbiAqIH0sICc+Xz4nKTtcbiAqXG4gKiBpZiAoXy5pc0Vycm9yKGVsZW1lbnRzKSkge1xuICogICBlbGVtZW50cyA9IFtdO1xuICogfVxuICovXG52YXIgYXR0ZW1wdCA9IGJhc2VSZXN0KGZ1bmN0aW9uKGZ1bmMsIGFyZ3MpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXBwbHkoZnVuYywgdW5kZWZpbmVkLCBhcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBpc0Vycm9yKGUpID8gZSA6IG5ldyBFcnJvcihlKTtcbiAgfVxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGF0dGVtcHQ7XG4iLCAiLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5zbGljZWAgd2l0aG91dCBhbiBpdGVyYXRlZSBjYWxsIGd1YXJkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gc2xpY2UuXG4gKiBAcGFyYW0ge251bWJlcn0gW3N0YXJ0PTBdIFRoZSBzdGFydCBwb3NpdGlvbi5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbZW5kPWFycmF5Lmxlbmd0aF0gVGhlIGVuZCBwb3NpdGlvbi5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgc2xpY2Ugb2YgYGFycmF5YC5cbiAqL1xuZnVuY3Rpb24gYmFzZVNsaWNlKGFycmF5LCBzdGFydCwgZW5kKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IC1zdGFydCA+IGxlbmd0aCA/IDAgOiAobGVuZ3RoICsgc3RhcnQpO1xuICB9XG4gIGVuZCA9IGVuZCA+IGxlbmd0aCA/IGxlbmd0aCA6IGVuZDtcbiAgaWYgKGVuZCA8IDApIHtcbiAgICBlbmQgKz0gbGVuZ3RoO1xuICB9XG4gIGxlbmd0aCA9IHN0YXJ0ID4gZW5kID8gMCA6ICgoZW5kIC0gc3RhcnQpID4+PiAwKTtcbiAgc3RhcnQgPj4+PSAwO1xuXG4gIHZhciByZXN1bHQgPSBBcnJheShsZW5ndGgpO1xuICB3aGlsZSAoKytpbmRleCA8IGxlbmd0aCkge1xuICAgIHJlc3VsdFtpbmRleF0gPSBhcnJheVtpbmRleCArIHN0YXJ0XTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlU2xpY2U7XG4iLCAiaW1wb3J0IGJhc2VTbGljZSBmcm9tICcuL19iYXNlU2xpY2UuanMnO1xuXG4vKipcbiAqIENhc3RzIGBhcnJheWAgdG8gYSBzbGljZSBpZiBpdCdzIG5lZWRlZC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gYXJyYXkgVGhlIGFycmF5IHRvIGluc3BlY3QuXG4gKiBAcGFyYW0ge251bWJlcn0gc3RhcnQgVGhlIHN0YXJ0IHBvc2l0aW9uLlxuICogQHBhcmFtIHtudW1iZXJ9IFtlbmQ9YXJyYXkubGVuZ3RoXSBUaGUgZW5kIHBvc2l0aW9uLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjYXN0IHNsaWNlLlxuICovXG5mdW5jdGlvbiBjYXN0U2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW5ndGggOiBlbmQ7XG4gIHJldHVybiAoIXN0YXJ0ICYmIGVuZCA+PSBsZW5ndGgpID8gYXJyYXkgOiBiYXNlU2xpY2UoYXJyYXksIHN0YXJ0LCBlbmQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjYXN0U2xpY2U7XG4iLCAiLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNoYXJhY3RlciBjbGFzc2VzLiAqL1xudmFyIHJzQXN0cmFsUmFuZ2UgPSAnXFxcXHVkODAwLVxcXFx1ZGZmZicsXG4gICAgcnNDb21ib01hcmtzUmFuZ2UgPSAnXFxcXHUwMzAwLVxcXFx1MDM2ZicsXG4gICAgcmVDb21ib0hhbGZNYXJrc1JhbmdlID0gJ1xcXFx1ZmUyMC1cXFxcdWZlMmYnLFxuICAgIHJzQ29tYm9TeW1ib2xzUmFuZ2UgPSAnXFxcXHUyMGQwLVxcXFx1MjBmZicsXG4gICAgcnNDb21ib1JhbmdlID0gcnNDb21ib01hcmtzUmFuZ2UgKyByZUNvbWJvSGFsZk1hcmtzUmFuZ2UgKyByc0NvbWJvU3ltYm9sc1JhbmdlLFxuICAgIHJzVmFyUmFuZ2UgPSAnXFxcXHVmZTBlXFxcXHVmZTBmJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIGNhcHR1cmUgZ3JvdXBzLiAqL1xudmFyIHJzWldKID0gJ1xcXFx1MjAwZCc7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBzdHJpbmdzIHdpdGggW3plcm8td2lkdGggam9pbmVycyBvciBjb2RlIHBvaW50cyBmcm9tIHRoZSBhc3RyYWwgcGxhbmVzXShodHRwOi8vZWV2LmVlL2Jsb2cvMjAxNS8wOS8xMi9kYXJrLWNvcm5lcnMtb2YtdW5pY29kZS8pLiAqL1xudmFyIHJlSGFzVW5pY29kZSA9IFJlZ0V4cCgnWycgKyByc1pXSiArIHJzQXN0cmFsUmFuZ2UgICsgcnNDb21ib1JhbmdlICsgcnNWYXJSYW5nZSArICddJyk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGBzdHJpbmdgIGNvbnRhaW5zIFVuaWNvZGUgc3ltYm9scy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYSBzeW1ib2wgaXMgZm91bmQsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gaGFzVW5pY29kZShzdHJpbmcpIHtcbiAgcmV0dXJuIHJlSGFzVW5pY29kZS50ZXN0KHN0cmluZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhhc1VuaWNvZGU7XG4iLCAiLyoqXG4gKiBDb252ZXJ0cyBhbiBBU0NJSSBgc3RyaW5nYCB0byBhbiBhcnJheS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGNvbnZlcnRlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXNjaWlUb0FycmF5KHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnNwbGl0KCcnKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYXNjaWlUb0FycmF5O1xuIiwgIi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjaGFyYWN0ZXIgY2xhc3Nlcy4gKi9cbnZhciByc0FzdHJhbFJhbmdlID0gJ1xcXFx1ZDgwMC1cXFxcdWRmZmYnLFxuICAgIHJzQ29tYm9NYXJrc1JhbmdlID0gJ1xcXFx1MDMwMC1cXFxcdTAzNmYnLFxuICAgIHJlQ29tYm9IYWxmTWFya3NSYW5nZSA9ICdcXFxcdWZlMjAtXFxcXHVmZTJmJyxcbiAgICByc0NvbWJvU3ltYm9sc1JhbmdlID0gJ1xcXFx1MjBkMC1cXFxcdTIwZmYnLFxuICAgIHJzQ29tYm9SYW5nZSA9IHJzQ29tYm9NYXJrc1JhbmdlICsgcmVDb21ib0hhbGZNYXJrc1JhbmdlICsgcnNDb21ib1N5bWJvbHNSYW5nZSxcbiAgICByc1ZhclJhbmdlID0gJ1xcXFx1ZmUwZVxcXFx1ZmUwZic7XG5cbi8qKiBVc2VkIHRvIGNvbXBvc2UgdW5pY29kZSBjYXB0dXJlIGdyb3Vwcy4gKi9cbnZhciByc0FzdHJhbCA9ICdbJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNDb21ibyA9ICdbJyArIHJzQ29tYm9SYW5nZSArICddJyxcbiAgICByc0ZpdHogPSAnXFxcXHVkODNjW1xcXFx1ZGZmYi1cXFxcdWRmZmZdJyxcbiAgICByc01vZGlmaWVyID0gJyg/OicgKyByc0NvbWJvICsgJ3wnICsgcnNGaXR6ICsgJyknLFxuICAgIHJzTm9uQXN0cmFsID0gJ1teJyArIHJzQXN0cmFsUmFuZ2UgKyAnXScsXG4gICAgcnNSZWdpb25hbCA9ICcoPzpcXFxcdWQ4M2NbXFxcXHVkZGU2LVxcXFx1ZGRmZl0pezJ9JyxcbiAgICByc1N1cnJQYWlyID0gJ1tcXFxcdWQ4MDAtXFxcXHVkYmZmXVtcXFxcdWRjMDAtXFxcXHVkZmZmXScsXG4gICAgcnNaV0ogPSAnXFxcXHUyMDBkJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSB1bmljb2RlIHJlZ2V4ZXMuICovXG52YXIgcmVPcHRNb2QgPSByc01vZGlmaWVyICsgJz8nLFxuICAgIHJzT3B0VmFyID0gJ1snICsgcnNWYXJSYW5nZSArICddPycsXG4gICAgcnNPcHRKb2luID0gJyg/OicgKyByc1pXSiArICcoPzonICsgW3JzTm9uQXN0cmFsLCByc1JlZ2lvbmFsLCByc1N1cnJQYWlyXS5qb2luKCd8JykgKyAnKScgKyByc09wdFZhciArIHJlT3B0TW9kICsgJykqJyxcbiAgICByc1NlcSA9IHJzT3B0VmFyICsgcmVPcHRNb2QgKyByc09wdEpvaW4sXG4gICAgcnNTeW1ib2wgPSAnKD86JyArIFtyc05vbkFzdHJhbCArIHJzQ29tYm8gKyAnPycsIHJzQ29tYm8sIHJzUmVnaW9uYWwsIHJzU3VyclBhaXIsIHJzQXN0cmFsXS5qb2luKCd8JykgKyAnKSc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIFtzdHJpbmcgc3ltYm9sc10oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2phdmFzY3JpcHQtdW5pY29kZSkuICovXG52YXIgcmVVbmljb2RlID0gUmVnRXhwKHJzRml0eiArICcoPz0nICsgcnNGaXR6ICsgJyl8JyArIHJzU3ltYm9sICsgcnNTZXEsICdnJyk7XG5cbi8qKlxuICogQ29udmVydHMgYSBVbmljb2RlIGBzdHJpbmdgIHRvIGFuIGFycmF5LlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgY29udmVydGVkIGFycmF5LlxuICovXG5mdW5jdGlvbiB1bmljb2RlVG9BcnJheShzdHJpbmcpIHtcbiAgcmV0dXJuIHN0cmluZy5tYXRjaChyZVVuaWNvZGUpIHx8IFtdO1xufVxuXG5leHBvcnQgZGVmYXVsdCB1bmljb2RlVG9BcnJheTtcbiIsICJpbXBvcnQgYXNjaWlUb0FycmF5IGZyb20gJy4vX2FzY2lpVG9BcnJheS5qcyc7XG5pbXBvcnQgaGFzVW5pY29kZSBmcm9tICcuL19oYXNVbmljb2RlLmpzJztcbmltcG9ydCB1bmljb2RlVG9BcnJheSBmcm9tICcuL191bmljb2RlVG9BcnJheS5qcyc7XG5cbi8qKlxuICogQ29udmVydHMgYHN0cmluZ2AgdG8gYW4gYXJyYXkuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmcgVGhlIHN0cmluZyB0byBjb252ZXJ0LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG4gIHJldHVybiBoYXNVbmljb2RlKHN0cmluZylcbiAgICA/IHVuaWNvZGVUb0FycmF5KHN0cmluZylcbiAgICA6IGFzY2lpVG9BcnJheShzdHJpbmcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdHJpbmdUb0FycmF5O1xuIiwgIi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8ucHJvcGVydHlPZmAgd2l0aG91dCBzdXBwb3J0IGZvciBkZWVwIHBhdGhzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyBhY2Nlc3NvciBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmFzZVByb3BlcnR5T2Yob2JqZWN0KSB7XG4gIHJldHVybiBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0ID09IG51bGwgPyB1bmRlZmluZWQgOiBvYmplY3Rba2V5XTtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZVByb3BlcnR5T2Y7XG4iLCAiaW1wb3J0IExpc3RDYWNoZSBmcm9tICcuL19MaXN0Q2FjaGUuanMnO1xuXG4vKipcbiAqIFJlbW92ZXMgYWxsIGtleS12YWx1ZSBlbnRyaWVzIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBjbGVhclxuICogQG1lbWJlck9mIFN0YWNrXG4gKi9cbmZ1bmN0aW9uIHN0YWNrQ2xlYXIoKSB7XG4gIHRoaXMuX19kYXRhX18gPSBuZXcgTGlzdENhY2hlO1xuICB0aGlzLnNpemUgPSAwO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdGFja0NsZWFyO1xuIiwgIi8qKlxuICogUmVtb3ZlcyBga2V5YCBhbmQgaXRzIHZhbHVlIGZyb20gdGhlIHN0YWNrLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAbmFtZSBkZWxldGVcbiAqIEBtZW1iZXJPZiBTdGFja1xuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSB2YWx1ZSB0byByZW1vdmUuXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGVudHJ5IHdhcyByZW1vdmVkLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIHN0YWNrRGVsZXRlKGtleSkge1xuICB2YXIgZGF0YSA9IHRoaXMuX19kYXRhX18sXG4gICAgICByZXN1bHQgPSBkYXRhWydkZWxldGUnXShrZXkpO1xuXG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RhY2tEZWxldGU7XG4iLCAiLyoqXG4gKiBHZXRzIHRoZSBzdGFjayB2YWx1ZSBmb3IgYGtleWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGdldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIGdldC5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBlbnRyeSB2YWx1ZS5cbiAqL1xuZnVuY3Rpb24gc3RhY2tHZXQoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmdldChrZXkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdGFja0dldDtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBhIHN0YWNrIHZhbHVlIGZvciBga2V5YCBleGlzdHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIGhhc1xuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIGVudHJ5IHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGFuIGVudHJ5IGZvciBga2V5YCBleGlzdHMsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gc3RhY2tIYXMoa2V5KSB7XG4gIHJldHVybiB0aGlzLl9fZGF0YV9fLmhhcyhrZXkpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzdGFja0hhcztcbiIsICJpbXBvcnQgTGlzdENhY2hlIGZyb20gJy4vX0xpc3RDYWNoZS5qcyc7XG5pbXBvcnQgTWFwIGZyb20gJy4vX01hcC5qcyc7XG5pbXBvcnQgTWFwQ2FjaGUgZnJvbSAnLi9fTWFwQ2FjaGUuanMnO1xuXG4vKiogVXNlZCBhcyB0aGUgc2l6ZSB0byBlbmFibGUgbGFyZ2UgYXJyYXkgb3B0aW1pemF0aW9ucy4gKi9cbnZhciBMQVJHRV9BUlJBWV9TSVpFID0gMjAwO1xuXG4vKipcbiAqIFNldHMgdGhlIHN0YWNrIGBrZXlgIHRvIGB2YWx1ZWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBuYW1lIHNldFxuICogQG1lbWJlck9mIFN0YWNrXG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IFRoZSBrZXkgb2YgdGhlIHZhbHVlIHRvIHNldC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHNldC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIHN0YWNrIGNhY2hlIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBzdGFja1NldChrZXksIHZhbHVlKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXztcbiAgaWYgKGRhdGEgaW5zdGFuY2VvZiBMaXN0Q2FjaGUpIHtcbiAgICB2YXIgcGFpcnMgPSBkYXRhLl9fZGF0YV9fO1xuICAgIGlmICghTWFwIHx8IChwYWlycy5sZW5ndGggPCBMQVJHRV9BUlJBWV9TSVpFIC0gMSkpIHtcbiAgICAgIHBhaXJzLnB1c2goW2tleSwgdmFsdWVdKTtcbiAgICAgIHRoaXMuc2l6ZSA9ICsrZGF0YS5zaXplO1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICAgIGRhdGEgPSB0aGlzLl9fZGF0YV9fID0gbmV3IE1hcENhY2hlKHBhaXJzKTtcbiAgfVxuICBkYXRhLnNldChrZXksIHZhbHVlKTtcbiAgdGhpcy5zaXplID0gZGF0YS5zaXplO1xuICByZXR1cm4gdGhpcztcbn1cblxuZXhwb3J0IGRlZmF1bHQgc3RhY2tTZXQ7XG4iLCAiaW1wb3J0IExpc3RDYWNoZSBmcm9tICcuL19MaXN0Q2FjaGUuanMnO1xuaW1wb3J0IHN0YWNrQ2xlYXIgZnJvbSAnLi9fc3RhY2tDbGVhci5qcyc7XG5pbXBvcnQgc3RhY2tEZWxldGUgZnJvbSAnLi9fc3RhY2tEZWxldGUuanMnO1xuaW1wb3J0IHN0YWNrR2V0IGZyb20gJy4vX3N0YWNrR2V0LmpzJztcbmltcG9ydCBzdGFja0hhcyBmcm9tICcuL19zdGFja0hhcy5qcyc7XG5pbXBvcnQgc3RhY2tTZXQgZnJvbSAnLi9fc3RhY2tTZXQuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBzdGFjayBjYWNoZSBvYmplY3QgdG8gc3RvcmUga2V5LXZhbHVlIHBhaXJzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAY29uc3RydWN0b3JcbiAqIEBwYXJhbSB7QXJyYXl9IFtlbnRyaWVzXSBUaGUga2V5LXZhbHVlIHBhaXJzIHRvIGNhY2hlLlxuICovXG5mdW5jdGlvbiBTdGFjayhlbnRyaWVzKSB7XG4gIHZhciBkYXRhID0gdGhpcy5fX2RhdGFfXyA9IG5ldyBMaXN0Q2FjaGUoZW50cmllcyk7XG4gIHRoaXMuc2l6ZSA9IGRhdGEuc2l6ZTtcbn1cblxuLy8gQWRkIG1ldGhvZHMgdG8gYFN0YWNrYC5cblN0YWNrLnByb3RvdHlwZS5jbGVhciA9IHN0YWNrQ2xlYXI7XG5TdGFjay5wcm90b3R5cGVbJ2RlbGV0ZSddID0gc3RhY2tEZWxldGU7XG5TdGFjay5wcm90b3R5cGUuZ2V0ID0gc3RhY2tHZXQ7XG5TdGFjay5wcm90b3R5cGUuaGFzID0gc3RhY2tIYXM7XG5TdGFjay5wcm90b3R5cGUuc2V0ID0gc3RhY2tTZXQ7XG5cbmV4cG9ydCBkZWZhdWx0IFN0YWNrO1xuIiwgImltcG9ydCBjb3B5T2JqZWN0IGZyb20gJy4vX2NvcHlPYmplY3QuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5hc3NpZ25gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ24ob2JqZWN0LCBzb3VyY2UpIHtcbiAgcmV0dXJuIG9iamVjdCAmJiBjb3B5T2JqZWN0KHNvdXJjZSwga2V5cyhzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlQXNzaWduO1xuIiwgImltcG9ydCBjb3B5T2JqZWN0IGZyb20gJy4vX2NvcHlPYmplY3QuanMnO1xuaW1wb3J0IGtleXNJbiBmcm9tICcuL2tleXNJbi5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uYXNzaWduSW5gIHdpdGhvdXQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc291cmNlc1xuICogb3IgYGN1c3RvbWl6ZXJgIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgZGVzdGluYXRpb24gb2JqZWN0LlxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgc291cmNlIG9iamVjdC5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgYG9iamVjdGAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VBc3NpZ25JbihvYmplY3QsIHNvdXJjZSkge1xuICByZXR1cm4gb2JqZWN0ICYmIGNvcHlPYmplY3Qoc291cmNlLCBrZXlzSW4oc291cmNlKSwgb2JqZWN0KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUFzc2lnbkluO1xuIiwgImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYGV4cG9ydHNgLiAqL1xudmFyIGZyZWVFeHBvcnRzID0gdHlwZW9mIGV4cG9ydHMgPT0gJ29iamVjdCcgJiYgZXhwb3J0cyAmJiAhZXhwb3J0cy5ub2RlVHlwZSAmJiBleHBvcnRzO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYG1vZHVsZWAuICovXG52YXIgZnJlZU1vZHVsZSA9IGZyZWVFeHBvcnRzICYmIHR5cGVvZiBtb2R1bGUgPT0gJ29iamVjdCcgJiYgbW9kdWxlICYmICFtb2R1bGUubm9kZVR5cGUgJiYgbW9kdWxlO1xuXG4vKiogRGV0ZWN0IHRoZSBwb3B1bGFyIENvbW1vbkpTIGV4dGVuc2lvbiBgbW9kdWxlLmV4cG9ydHNgLiAqL1xudmFyIG1vZHVsZUV4cG9ydHMgPSBmcmVlTW9kdWxlICYmIGZyZWVNb2R1bGUuZXhwb3J0cyA9PT0gZnJlZUV4cG9ydHM7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIEJ1ZmZlciA9IG1vZHVsZUV4cG9ydHMgPyByb290LkJ1ZmZlciA6IHVuZGVmaW5lZCxcbiAgICBhbGxvY1Vuc2FmZSA9IEJ1ZmZlciA/IEJ1ZmZlci5hbGxvY1Vuc2FmZSA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgIGBidWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdG8gY2xvbmUuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtpc0RlZXBdIFNwZWNpZnkgYSBkZWVwIGNsb25lLlxuICogQHJldHVybnMge0J1ZmZlcn0gUmV0dXJucyB0aGUgY2xvbmVkIGJ1ZmZlci5cbiAqL1xuZnVuY3Rpb24gY2xvbmVCdWZmZXIoYnVmZmVyLCBpc0RlZXApIHtcbiAgaWYgKGlzRGVlcCkge1xuICAgIHJldHVybiBidWZmZXIuc2xpY2UoKTtcbiAgfVxuICB2YXIgbGVuZ3RoID0gYnVmZmVyLmxlbmd0aCxcbiAgICAgIHJlc3VsdCA9IGFsbG9jVW5zYWZlID8gYWxsb2NVbnNhZmUobGVuZ3RoKSA6IG5ldyBidWZmZXIuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICBidWZmZXIuY29weShyZXN1bHQpO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbG9uZUJ1ZmZlcjtcbiIsICIvKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgXy5maWx0ZXJgIGZvciBhcnJheXMgd2l0aG91dCBzdXBwb3J0IGZvclxuICogaXRlcmF0ZWUgc2hvcnRoYW5kcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gW2FycmF5XSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gcHJlZGljYXRlIFRoZSBmdW5jdGlvbiBpbnZva2VkIHBlciBpdGVyYXRpb24uXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIG5ldyBmaWx0ZXJlZCBhcnJheS5cbiAqL1xuZnVuY3Rpb24gYXJyYXlGaWx0ZXIoYXJyYXksIHByZWRpY2F0ZSkge1xuICB2YXIgaW5kZXggPSAtMSxcbiAgICAgIGxlbmd0aCA9IGFycmF5ID09IG51bGwgPyAwIDogYXJyYXkubGVuZ3RoLFxuICAgICAgcmVzSW5kZXggPSAwLFxuICAgICAgcmVzdWx0ID0gW107XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGgpIHtcbiAgICB2YXIgdmFsdWUgPSBhcnJheVtpbmRleF07XG4gICAgaWYgKHByZWRpY2F0ZSh2YWx1ZSwgaW5kZXgsIGFycmF5KSkge1xuICAgICAgcmVzdWx0W3Jlc0luZGV4KytdID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFycmF5RmlsdGVyO1xuIiwgIi8qKlxuICogVGhpcyBtZXRob2QgcmV0dXJucyBhIG5ldyBlbXB0eSBhcnJheS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMTMuMFxuICogQGNhdGVnb3J5IFV0aWxcbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgbmV3IGVtcHR5IGFycmF5LlxuICogQGV4YW1wbGVcbiAqXG4gKiB2YXIgYXJyYXlzID0gXy50aW1lcygyLCBfLnN0dWJBcnJheSk7XG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzKTtcbiAqIC8vID0+IFtbXSwgW11dXG4gKlxuICogY29uc29sZS5sb2coYXJyYXlzWzBdID09PSBhcnJheXNbMV0pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gc3R1YkFycmF5KCkge1xuICByZXR1cm4gW107XG59XG5cbmV4cG9ydCBkZWZhdWx0IHN0dWJBcnJheTtcbiIsICJpbXBvcnQgYXJyYXlGaWx0ZXIgZnJvbSAnLi9fYXJyYXlGaWx0ZXIuanMnO1xuaW1wb3J0IHN0dWJBcnJheSBmcm9tICcuL3N0dWJBcnJheS5qcyc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHByb3BlcnR5SXNFbnVtZXJhYmxlID0gb2JqZWN0UHJvdG8ucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gZW51bWVyYWJsZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHN5bWJvbHMuXG4gKi9cbnZhciBnZXRTeW1ib2xzID0gIW5hdGl2ZUdldFN5bWJvbHMgPyBzdHViQXJyYXkgOiBmdW5jdGlvbihvYmplY3QpIHtcbiAgaWYgKG9iamVjdCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIG9iamVjdCA9IE9iamVjdChvYmplY3QpO1xuICByZXR1cm4gYXJyYXlGaWx0ZXIobmF0aXZlR2V0U3ltYm9scyhvYmplY3QpLCBmdW5jdGlvbihzeW1ib2wpIHtcbiAgICByZXR1cm4gcHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChvYmplY3QsIHN5bWJvbCk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0U3ltYm9scztcbiIsICJpbXBvcnQgY29weU9iamVjdCBmcm9tICcuL19jb3B5T2JqZWN0LmpzJztcbmltcG9ydCBnZXRTeW1ib2xzIGZyb20gJy4vX2dldFN5bWJvbHMuanMnO1xuXG4vKipcbiAqIENvcGllcyBvd24gc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHMoc291cmNlLCBvYmplY3QpIHtcbiAgcmV0dXJuIGNvcHlPYmplY3Qoc291cmNlLCBnZXRTeW1ib2xzKHNvdXJjZSksIG9iamVjdCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNvcHlTeW1ib2xzO1xuIiwgImltcG9ydCBhcnJheVB1c2ggZnJvbSAnLi9fYXJyYXlQdXNoLmpzJztcbmltcG9ydCBnZXRQcm90b3R5cGUgZnJvbSAnLi9fZ2V0UHJvdG90eXBlLmpzJztcbmltcG9ydCBnZXRTeW1ib2xzIGZyb20gJy4vX2dldFN5bWJvbHMuanMnO1xuaW1wb3J0IHN0dWJBcnJheSBmcm9tICcuL3N0dWJBcnJheS5qcyc7XG5cbi8qIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIGZvciB0aG9zZSB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgb3RoZXIgYGxvZGFzaGAgbWV0aG9kcy4gKi9cbnZhciBuYXRpdmVHZXRTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIHRoZSBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgYXJyYXkgb2Ygc3ltYm9scy5cbiAqL1xudmFyIGdldFN5bWJvbHNJbiA9ICFuYXRpdmVHZXRTeW1ib2xzID8gc3R1YkFycmF5IDogZnVuY3Rpb24ob2JqZWN0KSB7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgd2hpbGUgKG9iamVjdCkge1xuICAgIGFycmF5UHVzaChyZXN1bHQsIGdldFN5bWJvbHMob2JqZWN0KSk7XG4gICAgb2JqZWN0ID0gZ2V0UHJvdG90eXBlKG9iamVjdCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdldFN5bWJvbHNJbjtcbiIsICJpbXBvcnQgY29weU9iamVjdCBmcm9tICcuL19jb3B5T2JqZWN0LmpzJztcbmltcG9ydCBnZXRTeW1ib2xzSW4gZnJvbSAnLi9fZ2V0U3ltYm9sc0luLmpzJztcblxuLyoqXG4gKiBDb3BpZXMgb3duIGFuZCBpbmhlcml0ZWQgc3ltYm9scyBvZiBgc291cmNlYCB0byBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHNvdXJjZSBUaGUgb2JqZWN0IHRvIGNvcHkgc3ltYm9scyBmcm9tLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3Q9e31dIFRoZSBvYmplY3QgdG8gY29weSBzeW1ib2xzIHRvLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyBgb2JqZWN0YC5cbiAqL1xuZnVuY3Rpb24gY29weVN5bWJvbHNJbihzb3VyY2UsIG9iamVjdCkge1xuICByZXR1cm4gY29weU9iamVjdChzb3VyY2UsIGdldFN5bWJvbHNJbihzb3VyY2UpLCBvYmplY3QpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjb3B5U3ltYm9sc0luO1xuIiwgImltcG9ydCBhcnJheVB1c2ggZnJvbSAnLi9fYXJyYXlQdXNoLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGdldEFsbEtleXNgIGFuZCBgZ2V0QWxsS2V5c0luYCB3aGljaCB1c2VzXG4gKiBga2V5c0Z1bmNgIGFuZCBgc3ltYm9sc0Z1bmNgIHRvIGdldCB0aGUgZW51bWVyYWJsZSBwcm9wZXJ0eSBuYW1lcyBhbmRcbiAqIHN5bWJvbHMgb2YgYG9iamVjdGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBxdWVyeS5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGtleXNGdW5jIFRoZSBmdW5jdGlvbiB0byBnZXQgdGhlIGtleXMgb2YgYG9iamVjdGAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBzeW1ib2xzRnVuYyBUaGUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzRnVuYywgc3ltYm9sc0Z1bmMpIHtcbiAgdmFyIHJlc3VsdCA9IGtleXNGdW5jKG9iamVjdCk7XG4gIHJldHVybiBpc0FycmF5KG9iamVjdCkgPyByZXN1bHQgOiBhcnJheVB1c2gocmVzdWx0LCBzeW1ib2xzRnVuYyhvYmplY3QpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUdldEFsbEtleXM7XG4iLCAiaW1wb3J0IGJhc2VHZXRBbGxLZXlzIGZyb20gJy4vX2Jhc2VHZXRBbGxLZXlzLmpzJztcbmltcG9ydCBnZXRTeW1ib2xzIGZyb20gJy4vX2dldFN5bWJvbHMuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IG9mIG93biBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzIG9mIGBvYmplY3RgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBvYmplY3QgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7QXJyYXl9IFJldHVybnMgdGhlIGFycmF5IG9mIHByb3BlcnR5IG5hbWVzIGFuZCBzeW1ib2xzLlxuICovXG5mdW5jdGlvbiBnZXRBbGxLZXlzKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzLCBnZXRTeW1ib2xzKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0QWxsS2V5cztcbiIsICJpbXBvcnQgYmFzZUdldEFsbEtleXMgZnJvbSAnLi9fYmFzZUdldEFsbEtleXMuanMnO1xuaW1wb3J0IGdldFN5bWJvbHNJbiBmcm9tICcuL19nZXRTeW1ib2xzSW4uanMnO1xuaW1wb3J0IGtleXNJbiBmcm9tICcuL2tleXNJbi5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhcnJheSBvZiBvd24gYW5kIGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IG5hbWVzIGFuZFxuICogc3ltYm9scyBvZiBgb2JqZWN0YC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHJldHVybnMge0FycmF5fSBSZXR1cm5zIHRoZSBhcnJheSBvZiBwcm9wZXJ0eSBuYW1lcyBhbmQgc3ltYm9scy5cbiAqL1xuZnVuY3Rpb24gZ2V0QWxsS2V5c0luKG9iamVjdCkge1xuICByZXR1cm4gYmFzZUdldEFsbEtleXMob2JqZWN0LCBrZXlzSW4sIGdldFN5bWJvbHNJbik7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldEFsbEtleXNJbjtcbiIsICJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5pbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIERhdGFWaWV3ID0gZ2V0TmF0aXZlKHJvb3QsICdEYXRhVmlldycpO1xuXG5leHBvcnQgZGVmYXVsdCBEYXRhVmlldztcbiIsICJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5pbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFByb21pc2UgPSBnZXROYXRpdmUocm9vdCwgJ1Byb21pc2UnKTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbWlzZTtcbiIsICJpbXBvcnQgZ2V0TmF0aXZlIGZyb20gJy4vX2dldE5hdGl2ZS5qcyc7XG5pbXBvcnQgcm9vdCBmcm9tICcuL19yb290LmpzJztcblxuLyogQnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMgdGhhdCBhcmUgdmVyaWZpZWQgdG8gYmUgbmF0aXZlLiAqL1xudmFyIFNldCA9IGdldE5hdGl2ZShyb290LCAnU2V0Jyk7XG5cbmV4cG9ydCBkZWZhdWx0IFNldDtcbiIsICJpbXBvcnQgRGF0YVZpZXcgZnJvbSAnLi9fRGF0YVZpZXcuanMnO1xuaW1wb3J0IE1hcCBmcm9tICcuL19NYXAuanMnO1xuaW1wb3J0IFByb21pc2UgZnJvbSAnLi9fUHJvbWlzZS5qcyc7XG5pbXBvcnQgU2V0IGZyb20gJy4vX1NldC5qcyc7XG5pbXBvcnQgV2Vha01hcCBmcm9tICcuL19XZWFrTWFwLmpzJztcbmltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IHRvU291cmNlIGZyb20gJy4vX3RvU291cmNlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nLFxuICAgIHByb21pc2VUYWcgPSAnW29iamVjdCBQcm9taXNlXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJztcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG1hcHMsIHNldHMsIGFuZCB3ZWFrbWFwcy4gKi9cbnZhciBkYXRhVmlld0N0b3JTdHJpbmcgPSB0b1NvdXJjZShEYXRhVmlldyksXG4gICAgbWFwQ3RvclN0cmluZyA9IHRvU291cmNlKE1hcCksXG4gICAgcHJvbWlzZUN0b3JTdHJpbmcgPSB0b1NvdXJjZShQcm9taXNlKSxcbiAgICBzZXRDdG9yU3RyaW5nID0gdG9Tb3VyY2UoU2V0KSxcbiAgICB3ZWFrTWFwQ3RvclN0cmluZyA9IHRvU291cmNlKFdlYWtNYXApO1xuXG4vKipcbiAqIEdldHMgdGhlIGB0b1N0cmluZ1RhZ2Agb2YgYHZhbHVlYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gcXVlcnkuXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuICovXG52YXIgZ2V0VGFnID0gYmFzZUdldFRhZztcblxuLy8gRmFsbGJhY2sgZm9yIGRhdGEgdmlld3MsIG1hcHMsIHNldHMsIGFuZCB3ZWFrIG1hcHMgaW4gSUUgMTEgYW5kIHByb21pc2VzIGluIE5vZGUuanMgPCA2LlxuaWYgKChEYXRhVmlldyAmJiBnZXRUYWcobmV3IERhdGFWaWV3KG5ldyBBcnJheUJ1ZmZlcigxKSkpICE9IGRhdGFWaWV3VGFnKSB8fFxuICAgIChNYXAgJiYgZ2V0VGFnKG5ldyBNYXApICE9IG1hcFRhZykgfHxcbiAgICAoUHJvbWlzZSAmJiBnZXRUYWcoUHJvbWlzZS5yZXNvbHZlKCkpICE9IHByb21pc2VUYWcpIHx8XG4gICAgKFNldCAmJiBnZXRUYWcobmV3IFNldCkgIT0gc2V0VGFnKSB8fFxuICAgIChXZWFrTWFwICYmIGdldFRhZyhuZXcgV2Vha01hcCkgIT0gd2Vha01hcFRhZykpIHtcbiAgZ2V0VGFnID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgICB2YXIgcmVzdWx0ID0gYmFzZUdldFRhZyh2YWx1ZSksXG4gICAgICAgIEN0b3IgPSByZXN1bHQgPT0gb2JqZWN0VGFnID8gdmFsdWUuY29uc3RydWN0b3IgOiB1bmRlZmluZWQsXG4gICAgICAgIGN0b3JTdHJpbmcgPSBDdG9yID8gdG9Tb3VyY2UoQ3RvcikgOiAnJztcblxuICAgIGlmIChjdG9yU3RyaW5nKSB7XG4gICAgICBzd2l0Y2ggKGN0b3JTdHJpbmcpIHtcbiAgICAgICAgY2FzZSBkYXRhVmlld0N0b3JTdHJpbmc6IHJldHVybiBkYXRhVmlld1RhZztcbiAgICAgICAgY2FzZSBtYXBDdG9yU3RyaW5nOiByZXR1cm4gbWFwVGFnO1xuICAgICAgICBjYXNlIHByb21pc2VDdG9yU3RyaW5nOiByZXR1cm4gcHJvbWlzZVRhZztcbiAgICAgICAgY2FzZSBzZXRDdG9yU3RyaW5nOiByZXR1cm4gc2V0VGFnO1xuICAgICAgICBjYXNlIHdlYWtNYXBDdG9yU3RyaW5nOiByZXR1cm4gd2Vha01hcFRhZztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0VGFnO1xuIiwgIi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogSW5pdGlhbGl6ZXMgYW4gYXJyYXkgY2xvbmUuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7QXJyYXl9IGFycmF5IFRoZSBhcnJheSB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtBcnJheX0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZUFycmF5KGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGgsXG4gICAgICByZXN1bHQgPSBuZXcgYXJyYXkuY29uc3RydWN0b3IobGVuZ3RoKTtcblxuICAvLyBBZGQgcHJvcGVydGllcyBhc3NpZ25lZCBieSBgUmVnRXhwI2V4ZWNgLlxuICBpZiAobGVuZ3RoICYmIHR5cGVvZiBhcnJheVswXSA9PSAnc3RyaW5nJyAmJiBoYXNPd25Qcm9wZXJ0eS5jYWxsKGFycmF5LCAnaW5kZXgnKSkge1xuICAgIHJlc3VsdC5pbmRleCA9IGFycmF5LmluZGV4O1xuICAgIHJlc3VsdC5pbnB1dCA9IGFycmF5LmlucHV0O1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGluaXRDbG9uZUFycmF5O1xuIiwgImltcG9ydCByb290IGZyb20gJy4vX3Jvb3QuanMnO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBVaW50OEFycmF5ID0gcm9vdC5VaW50OEFycmF5O1xuXG5leHBvcnQgZGVmYXVsdCBVaW50OEFycmF5O1xuIiwgImltcG9ydCBVaW50OEFycmF5IGZyb20gJy4vX1VpbnQ4QXJyYXkuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgYXJyYXlCdWZmZXJgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5QnVmZmVyfSBhcnJheUJ1ZmZlciBUaGUgYXJyYXkgYnVmZmVyIHRvIGNsb25lLlxuICogQHJldHVybnMge0FycmF5QnVmZmVyfSBSZXR1cm5zIHRoZSBjbG9uZWQgYXJyYXkgYnVmZmVyLlxuICovXG5mdW5jdGlvbiBjbG9uZUFycmF5QnVmZmVyKGFycmF5QnVmZmVyKSB7XG4gIHZhciByZXN1bHQgPSBuZXcgYXJyYXlCdWZmZXIuY29uc3RydWN0b3IoYXJyYXlCdWZmZXIuYnl0ZUxlbmd0aCk7XG4gIG5ldyBVaW50OEFycmF5KHJlc3VsdCkuc2V0KG5ldyBVaW50OEFycmF5KGFycmF5QnVmZmVyKSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsb25lQXJyYXlCdWZmZXI7XG4iLCAiaW1wb3J0IGNsb25lQXJyYXlCdWZmZXIgZnJvbSAnLi9fY2xvbmVBcnJheUJ1ZmZlci5qcyc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGBkYXRhVmlld2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhVmlldyBUaGUgZGF0YSB2aWV3IHRvIGNsb25lLlxuICogQHBhcmFtIHtib29sZWFufSBbaXNEZWVwXSBTcGVjaWZ5IGEgZGVlcCBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBkYXRhIHZpZXcuXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGF0YVZpZXcoZGF0YVZpZXcsIGlzRGVlcCkge1xuICB2YXIgYnVmZmVyID0gaXNEZWVwID8gY2xvbmVBcnJheUJ1ZmZlcihkYXRhVmlldy5idWZmZXIpIDogZGF0YVZpZXcuYnVmZmVyO1xuICByZXR1cm4gbmV3IGRhdGFWaWV3LmNvbnN0cnVjdG9yKGJ1ZmZlciwgZGF0YVZpZXcuYnl0ZU9mZnNldCwgZGF0YVZpZXcuYnl0ZUxlbmd0aCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsb25lRGF0YVZpZXc7XG4iLCAiLyoqIFVzZWQgdG8gbWF0Y2ggYFJlZ0V4cGAgZmxhZ3MgZnJvbSB0aGVpciBjb2VyY2VkIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVGbGFncyA9IC9cXHcqJC87XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNsb25lIG9mIGByZWdleHBgLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge09iamVjdH0gcmVnZXhwIFRoZSByZWdleHAgdG8gY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBjbG9uZVJlZ0V4cChyZWdleHApIHtcbiAgdmFyIHJlc3VsdCA9IG5ldyByZWdleHAuY29uc3RydWN0b3IocmVnZXhwLnNvdXJjZSwgcmVGbGFncy5leGVjKHJlZ2V4cCkpO1xuICByZXN1bHQubGFzdEluZGV4ID0gcmVnZXhwLmxhc3RJbmRleDtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xvbmVSZWdFeHA7XG4iLCAiaW1wb3J0IFN5bWJvbCBmcm9tICcuL19TeW1ib2wuanMnO1xuXG4vKiogVXNlZCB0byBjb252ZXJ0IHN5bWJvbHMgdG8gcHJpbWl0aXZlcyBhbmQgc3RyaW5ncy4gKi9cbnZhciBzeW1ib2xQcm90byA9IFN5bWJvbCA/IFN5bWJvbC5wcm90b3R5cGUgOiB1bmRlZmluZWQsXG4gICAgc3ltYm9sVmFsdWVPZiA9IHN5bWJvbFByb3RvID8gc3ltYm9sUHJvdG8udmFsdWVPZiA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBDcmVhdGVzIGEgY2xvbmUgb2YgdGhlIGBzeW1ib2xgIG9iamVjdC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IHN5bWJvbCBUaGUgc3ltYm9sIG9iamVjdCB0byBjbG9uZS5cbiAqIEByZXR1cm5zIHtPYmplY3R9IFJldHVybnMgdGhlIGNsb25lZCBzeW1ib2wgb2JqZWN0LlxuICovXG5mdW5jdGlvbiBjbG9uZVN5bWJvbChzeW1ib2wpIHtcbiAgcmV0dXJuIHN5bWJvbFZhbHVlT2YgPyBPYmplY3Qoc3ltYm9sVmFsdWVPZi5jYWxsKHN5bWJvbCkpIDoge307XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsb25lU3ltYm9sO1xuIiwgImltcG9ydCBjbG9uZUFycmF5QnVmZmVyIGZyb20gJy4vX2Nsb25lQXJyYXlCdWZmZXIuanMnO1xuXG4vKipcbiAqIENyZWF0ZXMgYSBjbG9uZSBvZiBgdHlwZWRBcnJheWAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSB0eXBlZEFycmF5IFRoZSB0eXBlZCBhcnJheSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBjbG9uZWQgdHlwZWQgYXJyYXkuXG4gKi9cbmZ1bmN0aW9uIGNsb25lVHlwZWRBcnJheSh0eXBlZEFycmF5LCBpc0RlZXApIHtcbiAgdmFyIGJ1ZmZlciA9IGlzRGVlcCA/IGNsb25lQXJyYXlCdWZmZXIodHlwZWRBcnJheS5idWZmZXIpIDogdHlwZWRBcnJheS5idWZmZXI7XG4gIHJldHVybiBuZXcgdHlwZWRBcnJheS5jb25zdHJ1Y3RvcihidWZmZXIsIHR5cGVkQXJyYXkuYnl0ZU9mZnNldCwgdHlwZWRBcnJheS5sZW5ndGgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbG9uZVR5cGVkQXJyYXk7XG4iLCAiaW1wb3J0IGNsb25lQXJyYXlCdWZmZXIgZnJvbSAnLi9fY2xvbmVBcnJheUJ1ZmZlci5qcyc7XG5pbXBvcnQgY2xvbmVEYXRhVmlldyBmcm9tICcuL19jbG9uZURhdGFWaWV3LmpzJztcbmltcG9ydCBjbG9uZVJlZ0V4cCBmcm9tICcuL19jbG9uZVJlZ0V4cC5qcyc7XG5pbXBvcnQgY2xvbmVTeW1ib2wgZnJvbSAnLi9fY2xvbmVTeW1ib2wuanMnO1xuaW1wb3J0IGNsb25lVHlwZWRBcnJheSBmcm9tICcuL19jbG9uZVR5cGVkQXJyYXkuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYm9vbFRhZyA9ICdbb2JqZWN0IEJvb2xlYW5dJyxcbiAgICBkYXRlVGFnID0gJ1tvYmplY3QgRGF0ZV0nLFxuICAgIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nLFxuICAgIG51bWJlclRhZyA9ICdbb2JqZWN0IE51bWJlcl0nLFxuICAgIHJlZ2V4cFRhZyA9ICdbb2JqZWN0IFJlZ0V4cF0nLFxuICAgIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nLFxuICAgIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nLFxuICAgIHN5bWJvbFRhZyA9ICdbb2JqZWN0IFN5bWJvbF0nO1xuXG52YXIgYXJyYXlCdWZmZXJUYWcgPSAnW29iamVjdCBBcnJheUJ1ZmZlcl0nLFxuICAgIGRhdGFWaWV3VGFnID0gJ1tvYmplY3QgRGF0YVZpZXddJyxcbiAgICBmbG9hdDMyVGFnID0gJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgZmxvYXQ2NFRhZyA9ICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nLFxuICAgIGludDhUYWcgPSAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICBpbnQxNlRhZyA9ICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICBpbnQzMlRhZyA9ICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICB1aW50OFRhZyA9ICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICB1aW50OENsYW1wZWRUYWcgPSAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgIHVpbnQxNlRhZyA9ICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgdWludDMyVGFnID0gJ1tvYmplY3QgVWludDMyQXJyYXldJztcblxuLyoqXG4gKiBJbml0aWFsaXplcyBhbiBvYmplY3QgY2xvbmUgYmFzZWQgb24gaXRzIGB0b1N0cmluZ1RhZ2AuXG4gKlxuICogKipOb3RlOioqIFRoaXMgZnVuY3Rpb24gb25seSBzdXBwb3J0cyBjbG9uaW5nIHZhbHVlcyB3aXRoIHRhZ3Mgb2ZcbiAqIGBCb29sZWFuYCwgYERhdGVgLCBgRXJyb3JgLCBgTWFwYCwgYE51bWJlcmAsIGBSZWdFeHBgLCBgU2V0YCwgb3IgYFN0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgVGhlIGB0b1N0cmluZ1RhZ2Agb2YgdGhlIG9iamVjdCB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gW2lzRGVlcF0gU3BlY2lmeSBhIGRlZXAgY2xvbmUuXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBSZXR1cm5zIHRoZSBpbml0aWFsaXplZCBjbG9uZS5cbiAqL1xuZnVuY3Rpb24gaW5pdENsb25lQnlUYWcob2JqZWN0LCB0YWcsIGlzRGVlcCkge1xuICB2YXIgQ3RvciA9IG9iamVjdC5jb25zdHJ1Y3RvcjtcbiAgc3dpdGNoICh0YWcpIHtcbiAgICBjYXNlIGFycmF5QnVmZmVyVGFnOlxuICAgICAgcmV0dXJuIGNsb25lQXJyYXlCdWZmZXIob2JqZWN0KTtcblxuICAgIGNhc2UgYm9vbFRhZzpcbiAgICBjYXNlIGRhdGVUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3IoK29iamVjdCk7XG5cbiAgICBjYXNlIGRhdGFWaWV3VGFnOlxuICAgICAgcmV0dXJuIGNsb25lRGF0YVZpZXcob2JqZWN0LCBpc0RlZXApO1xuXG4gICAgY2FzZSBmbG9hdDMyVGFnOiBjYXNlIGZsb2F0NjRUYWc6XG4gICAgY2FzZSBpbnQ4VGFnOiBjYXNlIGludDE2VGFnOiBjYXNlIGludDMyVGFnOlxuICAgIGNhc2UgdWludDhUYWc6IGNhc2UgdWludDhDbGFtcGVkVGFnOiBjYXNlIHVpbnQxNlRhZzogY2FzZSB1aW50MzJUYWc6XG4gICAgICByZXR1cm4gY2xvbmVUeXBlZEFycmF5KG9iamVjdCwgaXNEZWVwKTtcblxuICAgIGNhc2UgbWFwVGFnOlxuICAgICAgcmV0dXJuIG5ldyBDdG9yO1xuXG4gICAgY2FzZSBudW1iZXJUYWc6XG4gICAgY2FzZSBzdHJpbmdUYWc6XG4gICAgICByZXR1cm4gbmV3IEN0b3Iob2JqZWN0KTtcblxuICAgIGNhc2UgcmVnZXhwVGFnOlxuICAgICAgcmV0dXJuIGNsb25lUmVnRXhwKG9iamVjdCk7XG5cbiAgICBjYXNlIHNldFRhZzpcbiAgICAgIHJldHVybiBuZXcgQ3RvcjtcblxuICAgIGNhc2Ugc3ltYm9sVGFnOlxuICAgICAgcmV0dXJuIGNsb25lU3ltYm9sKG9iamVjdCk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgaW5pdENsb25lQnlUYWc7XG4iLCAiaW1wb3J0IGJhc2VDcmVhdGUgZnJvbSAnLi9fYmFzZUNyZWF0ZS5qcyc7XG5pbXBvcnQgZ2V0UHJvdG90eXBlIGZyb20gJy4vX2dldFByb3RvdHlwZS5qcyc7XG5pbXBvcnQgaXNQcm90b3R5cGUgZnJvbSAnLi9faXNQcm90b3R5cGUuanMnO1xuXG4vKipcbiAqIEluaXRpYWxpemVzIGFuIG9iamVjdCBjbG9uZS5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNsb25lLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgaW5pdGlhbGl6ZWQgY2xvbmUuXG4gKi9cbmZ1bmN0aW9uIGluaXRDbG9uZU9iamVjdChvYmplY3QpIHtcbiAgcmV0dXJuICh0eXBlb2Ygb2JqZWN0LmNvbnN0cnVjdG9yID09ICdmdW5jdGlvbicgJiYgIWlzUHJvdG90eXBlKG9iamVjdCkpXG4gICAgPyBiYXNlQ3JlYXRlKGdldFByb3RvdHlwZShvYmplY3QpKVxuICAgIDoge307XG59XG5cbmV4cG9ydCBkZWZhdWx0IGluaXRDbG9uZU9iamVjdDtcbiIsICJpbXBvcnQgZ2V0VGFnIGZyb20gJy4vX2dldFRhZy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG1hcFRhZyA9ICdbb2JqZWN0IE1hcF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzTWFwYCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG1hcCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNNYXAodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBtYXBUYWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc01hcDtcbiIsICJpbXBvcnQgYmFzZUlzTWFwIGZyb20gJy4vX2Jhc2VJc01hcC5qcyc7XG5pbXBvcnQgYmFzZVVuYXJ5IGZyb20gJy4vX2Jhc2VVbmFyeS5qcyc7XG5pbXBvcnQgbm9kZVV0aWwgZnJvbSAnLi9fbm9kZVV0aWwuanMnO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc01hcCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzTWFwO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgTWFwYCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBtYXAsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc01hcChuZXcgTWFwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTWFwKG5ldyBXZWFrTWFwKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc01hcCA9IG5vZGVJc01hcCA/IGJhc2VVbmFyeShub2RlSXNNYXApIDogYmFzZUlzTWFwO1xuXG5leHBvcnQgZGVmYXVsdCBpc01hcDtcbiIsICJpbXBvcnQgZ2V0VGFnIGZyb20gJy4vX2dldFRhZy5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHNldFRhZyA9ICdbb2JqZWN0IFNldF0nO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmlzU2V0YCB3aXRob3V0IE5vZGUuanMgb3B0aW1pemF0aW9ucy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNldCwgZWxzZSBgZmFsc2VgLlxuICovXG5mdW5jdGlvbiBiYXNlSXNTZXQodmFsdWUpIHtcbiAgcmV0dXJuIGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgZ2V0VGFnKHZhbHVlKSA9PSBzZXRUYWc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VJc1NldDtcbiIsICJpbXBvcnQgYmFzZUlzU2V0IGZyb20gJy4vX2Jhc2VJc1NldC5qcyc7XG5pbXBvcnQgYmFzZVVuYXJ5IGZyb20gJy4vX2Jhc2VVbmFyeS5qcyc7XG5pbXBvcnQgbm9kZVV0aWwgZnJvbSAnLi9fbm9kZVV0aWwuanMnO1xuXG4vKiBOb2RlLmpzIGhlbHBlciByZWZlcmVuY2VzLiAqL1xudmFyIG5vZGVJc1NldCA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzU2V0O1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU2V0YCBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjMuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBzZXQsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc1NldChuZXcgU2V0KTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzU2V0KG5ldyBXZWFrU2V0KTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbnZhciBpc1NldCA9IG5vZGVJc1NldCA/IGJhc2VVbmFyeShub2RlSXNTZXQpIDogYmFzZUlzU2V0O1xuXG5leHBvcnQgZGVmYXVsdCBpc1NldDtcbiIsICJpbXBvcnQgU3RhY2sgZnJvbSAnLi9fU3RhY2suanMnO1xuaW1wb3J0IGFycmF5RWFjaCBmcm9tICcuL19hcnJheUVhY2guanMnO1xuaW1wb3J0IGFzc2lnblZhbHVlIGZyb20gJy4vX2Fzc2lnblZhbHVlLmpzJztcbmltcG9ydCBiYXNlQXNzaWduIGZyb20gJy4vX2Jhc2VBc3NpZ24uanMnO1xuaW1wb3J0IGJhc2VBc3NpZ25JbiBmcm9tICcuL19iYXNlQXNzaWduSW4uanMnO1xuaW1wb3J0IGNsb25lQnVmZmVyIGZyb20gJy4vX2Nsb25lQnVmZmVyLmpzJztcbmltcG9ydCBjb3B5QXJyYXkgZnJvbSAnLi9fY29weUFycmF5LmpzJztcbmltcG9ydCBjb3B5U3ltYm9scyBmcm9tICcuL19jb3B5U3ltYm9scy5qcyc7XG5pbXBvcnQgY29weVN5bWJvbHNJbiBmcm9tICcuL19jb3B5U3ltYm9sc0luLmpzJztcbmltcG9ydCBnZXRBbGxLZXlzIGZyb20gJy4vX2dldEFsbEtleXMuanMnO1xuaW1wb3J0IGdldEFsbEtleXNJbiBmcm9tICcuL19nZXRBbGxLZXlzSW4uanMnO1xuaW1wb3J0IGdldFRhZyBmcm9tICcuL19nZXRUYWcuanMnO1xuaW1wb3J0IGluaXRDbG9uZUFycmF5IGZyb20gJy4vX2luaXRDbG9uZUFycmF5LmpzJztcbmltcG9ydCBpbml0Q2xvbmVCeVRhZyBmcm9tICcuL19pbml0Q2xvbmVCeVRhZy5qcyc7XG5pbXBvcnQgaW5pdENsb25lT2JqZWN0IGZyb20gJy4vX2luaXRDbG9uZU9iamVjdC5qcyc7XG5pbXBvcnQgaXNBcnJheSBmcm9tICcuL2lzQXJyYXkuanMnO1xuaW1wb3J0IGlzQnVmZmVyIGZyb20gJy4vaXNCdWZmZXIuanMnO1xuaW1wb3J0IGlzTWFwIGZyb20gJy4vaXNNYXAuanMnO1xuaW1wb3J0IGlzT2JqZWN0IGZyb20gJy4vaXNPYmplY3QuanMnO1xuaW1wb3J0IGlzU2V0IGZyb20gJy4vaXNTZXQuanMnO1xuaW1wb3J0IGtleXMgZnJvbSAnLi9rZXlzLmpzJztcbmltcG9ydCBrZXlzSW4gZnJvbSAnLi9rZXlzSW4uanMnO1xuXG4vKiogVXNlZCB0byBjb21wb3NlIGJpdG1hc2tzIGZvciBjbG9uaW5nLiAqL1xudmFyIENMT05FX0RFRVBfRkxBRyA9IDEsXG4gICAgQ0xPTkVfRkxBVF9GTEFHID0gMixcbiAgICBDTE9ORV9TWU1CT0xTX0ZMQUcgPSA0O1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgYXJnc1RhZyA9ICdbb2JqZWN0IEFyZ3VtZW50c10nLFxuICAgIGFycmF5VGFnID0gJ1tvYmplY3QgQXJyYXldJyxcbiAgICBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nLFxuICAgIGRhdGVUYWcgPSAnW29iamVjdCBEYXRlXScsXG4gICAgZXJyb3JUYWcgPSAnW29iamVjdCBFcnJvcl0nLFxuICAgIGZ1bmNUYWcgPSAnW29iamVjdCBGdW5jdGlvbl0nLFxuICAgIGdlblRhZyA9ICdbb2JqZWN0IEdlbmVyYXRvckZ1bmN0aW9uXScsXG4gICAgbWFwVGFnID0gJ1tvYmplY3QgTWFwXScsXG4gICAgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXScsXG4gICAgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XScsXG4gICAgcmVnZXhwVGFnID0gJ1tvYmplY3QgUmVnRXhwXScsXG4gICAgc2V0VGFnID0gJ1tvYmplY3QgU2V0XScsXG4gICAgc3RyaW5nVGFnID0gJ1tvYmplY3QgU3RyaW5nXScsXG4gICAgc3ltYm9sVGFnID0gJ1tvYmplY3QgU3ltYm9sXScsXG4gICAgd2Vha01hcFRhZyA9ICdbb2JqZWN0IFdlYWtNYXBdJztcblxudmFyIGFycmF5QnVmZmVyVGFnID0gJ1tvYmplY3QgQXJyYXlCdWZmZXJdJyxcbiAgICBkYXRhVmlld1RhZyA9ICdbb2JqZWN0IERhdGFWaWV3XScsXG4gICAgZmxvYXQzMlRhZyA9ICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgIGZsb2F0NjRUYWcgPSAnW29iamVjdCBGbG9hdDY0QXJyYXldJyxcbiAgICBpbnQ4VGFnID0gJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgaW50MTZUYWcgPSAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgaW50MzJUYWcgPSAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgdWludDhUYWcgPSAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgdWludDhDbGFtcGVkVGFnID0gJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICB1aW50MTZUYWcgPSAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgIHVpbnQzMlRhZyA9ICdbb2JqZWN0IFVpbnQzMkFycmF5XSc7XG5cbi8qKiBVc2VkIHRvIGlkZW50aWZ5IGB0b1N0cmluZ1RhZ2AgdmFsdWVzIHN1cHBvcnRlZCBieSBgXy5jbG9uZWAuICovXG52YXIgY2xvbmVhYmxlVGFncyA9IHt9O1xuY2xvbmVhYmxlVGFnc1thcmdzVGFnXSA9IGNsb25lYWJsZVRhZ3NbYXJyYXlUYWddID1cbmNsb25lYWJsZVRhZ3NbYXJyYXlCdWZmZXJUYWddID0gY2xvbmVhYmxlVGFnc1tkYXRhVmlld1RhZ10gPVxuY2xvbmVhYmxlVGFnc1tib29sVGFnXSA9IGNsb25lYWJsZVRhZ3NbZGF0ZVRhZ10gPVxuY2xvbmVhYmxlVGFnc1tmbG9hdDMyVGFnXSA9IGNsb25lYWJsZVRhZ3NbZmxvYXQ2NFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tpbnQ4VGFnXSA9IGNsb25lYWJsZVRhZ3NbaW50MTZUYWddID1cbmNsb25lYWJsZVRhZ3NbaW50MzJUYWddID0gY2xvbmVhYmxlVGFnc1ttYXBUYWddID1cbmNsb25lYWJsZVRhZ3NbbnVtYmVyVGFnXSA9IGNsb25lYWJsZVRhZ3Nbb2JqZWN0VGFnXSA9XG5jbG9uZWFibGVUYWdzW3JlZ2V4cFRhZ10gPSBjbG9uZWFibGVUYWdzW3NldFRhZ10gPVxuY2xvbmVhYmxlVGFnc1tzdHJpbmdUYWddID0gY2xvbmVhYmxlVGFnc1tzeW1ib2xUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDhUYWddID0gY2xvbmVhYmxlVGFnc1t1aW50OENsYW1wZWRUYWddID1cbmNsb25lYWJsZVRhZ3NbdWludDE2VGFnXSA9IGNsb25lYWJsZVRhZ3NbdWludDMyVGFnXSA9IHRydWU7XG5jbG9uZWFibGVUYWdzW2Vycm9yVGFnXSA9IGNsb25lYWJsZVRhZ3NbZnVuY1RhZ10gPVxuY2xvbmVhYmxlVGFnc1t3ZWFrTWFwVGFnXSA9IGZhbHNlO1xuXG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBfLmNsb25lYCBhbmQgYF8uY2xvbmVEZWVwYCB3aGljaCB0cmFja3NcbiAqIHRyYXZlcnNlZCBvYmplY3RzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjbG9uZS5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gYml0bWFzayBUaGUgYml0bWFzayBmbGFncy5cbiAqICAxIC0gRGVlcCBjbG9uZVxuICogIDIgLSBGbGF0dGVuIGluaGVyaXRlZCBwcm9wZXJ0aWVzXG4gKiAgNCAtIENsb25lIHN5bWJvbHNcbiAqIEBwYXJhbSB7RnVuY3Rpb259IFtjdXN0b21pemVyXSBUaGUgZnVuY3Rpb24gdG8gY3VzdG9taXplIGNsb25pbmcuXG4gKiBAcGFyYW0ge3N0cmluZ30gW2tleV0gVGhlIGtleSBvZiBgdmFsdWVgLlxuICogQHBhcmFtIHtPYmplY3R9IFtvYmplY3RdIFRoZSBwYXJlbnQgb2JqZWN0IG9mIGB2YWx1ZWAuXG4gKiBAcGFyYW0ge09iamVjdH0gW3N0YWNrXSBUcmFja3MgdHJhdmVyc2VkIG9iamVjdHMgYW5kIHRoZWlyIGNsb25lIGNvdW50ZXJwYXJ0cy5cbiAqIEByZXR1cm5zIHsqfSBSZXR1cm5zIHRoZSBjbG9uZWQgdmFsdWUuXG4gKi9cbmZ1bmN0aW9uIGJhc2VDbG9uZSh2YWx1ZSwgYml0bWFzaywgY3VzdG9taXplciwga2V5LCBvYmplY3QsIHN0YWNrKSB7XG4gIHZhciByZXN1bHQsXG4gICAgICBpc0RlZXAgPSBiaXRtYXNrICYgQ0xPTkVfREVFUF9GTEFHLFxuICAgICAgaXNGbGF0ID0gYml0bWFzayAmIENMT05FX0ZMQVRfRkxBRyxcbiAgICAgIGlzRnVsbCA9IGJpdG1hc2sgJiBDTE9ORV9TWU1CT0xTX0ZMQUc7XG5cbiAgaWYgKGN1c3RvbWl6ZXIpIHtcbiAgICByZXN1bHQgPSBvYmplY3QgPyBjdXN0b21pemVyKHZhbHVlLCBrZXksIG9iamVjdCwgc3RhY2spIDogY3VzdG9taXplcih2YWx1ZSk7XG4gIH1cbiAgaWYgKHJlc3VsdCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBpZiAoIWlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICB2YXIgaXNBcnIgPSBpc0FycmF5KHZhbHVlKTtcbiAgaWYgKGlzQXJyKSB7XG4gICAgcmVzdWx0ID0gaW5pdENsb25lQXJyYXkodmFsdWUpO1xuICAgIGlmICghaXNEZWVwKSB7XG4gICAgICByZXR1cm4gY29weUFycmF5KHZhbHVlLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIgdGFnID0gZ2V0VGFnKHZhbHVlKSxcbiAgICAgICAgaXNGdW5jID0gdGFnID09IGZ1bmNUYWcgfHwgdGFnID09IGdlblRhZztcblxuICAgIGlmIChpc0J1ZmZlcih2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBjbG9uZUJ1ZmZlcih2YWx1ZSwgaXNEZWVwKTtcbiAgICB9XG4gICAgaWYgKHRhZyA9PSBvYmplY3RUYWcgfHwgdGFnID09IGFyZ3NUYWcgfHwgKGlzRnVuYyAmJiAhb2JqZWN0KSkge1xuICAgICAgcmVzdWx0ID0gKGlzRmxhdCB8fCBpc0Z1bmMpID8ge30gOiBpbml0Q2xvbmVPYmplY3QodmFsdWUpO1xuICAgICAgaWYgKCFpc0RlZXApIHtcbiAgICAgICAgcmV0dXJuIGlzRmxhdFxuICAgICAgICAgID8gY29weVN5bWJvbHNJbih2YWx1ZSwgYmFzZUFzc2lnbkluKHJlc3VsdCwgdmFsdWUpKVxuICAgICAgICAgIDogY29weVN5bWJvbHModmFsdWUsIGJhc2VBc3NpZ24ocmVzdWx0LCB2YWx1ZSkpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNsb25lYWJsZVRhZ3NbdGFnXSkge1xuICAgICAgICByZXR1cm4gb2JqZWN0ID8gdmFsdWUgOiB7fTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdCA9IGluaXRDbG9uZUJ5VGFnKHZhbHVlLCB0YWcsIGlzRGVlcCk7XG4gICAgfVxuICB9XG4gIC8vIENoZWNrIGZvciBjaXJjdWxhciByZWZlcmVuY2VzIGFuZCByZXR1cm4gaXRzIGNvcnJlc3BvbmRpbmcgY2xvbmUuXG4gIHN0YWNrIHx8IChzdGFjayA9IG5ldyBTdGFjayk7XG4gIHZhciBzdGFja2VkID0gc3RhY2suZ2V0KHZhbHVlKTtcbiAgaWYgKHN0YWNrZWQpIHtcbiAgICByZXR1cm4gc3RhY2tlZDtcbiAgfVxuICBzdGFjay5zZXQodmFsdWUsIHJlc3VsdCk7XG5cbiAgaWYgKGlzU2V0KHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goZnVuY3Rpb24oc3ViVmFsdWUpIHtcbiAgICAgIHJlc3VsdC5hZGQoYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBzdWJWYWx1ZSwgdmFsdWUsIHN0YWNrKSk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNNYXAodmFsdWUpKSB7XG4gICAgdmFsdWUuZm9yRWFjaChmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgICByZXN1bHQuc2V0KGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICAgIH0pO1xuICB9XG5cbiAgdmFyIGtleXNGdW5jID0gaXNGdWxsXG4gICAgPyAoaXNGbGF0ID8gZ2V0QWxsS2V5c0luIDogZ2V0QWxsS2V5cylcbiAgICA6IChpc0ZsYXQgPyBrZXlzSW4gOiBrZXlzKTtcblxuICB2YXIgcHJvcHMgPSBpc0FyciA/IHVuZGVmaW5lZCA6IGtleXNGdW5jKHZhbHVlKTtcbiAgYXJyYXlFYWNoKHByb3BzIHx8IHZhbHVlLCBmdW5jdGlvbihzdWJWYWx1ZSwga2V5KSB7XG4gICAgaWYgKHByb3BzKSB7XG4gICAgICBrZXkgPSBzdWJWYWx1ZTtcbiAgICAgIHN1YlZhbHVlID0gdmFsdWVba2V5XTtcbiAgICB9XG4gICAgLy8gUmVjdXJzaXZlbHkgcG9wdWxhdGUgY2xvbmUgKHN1c2NlcHRpYmxlIHRvIGNhbGwgc3RhY2sgbGltaXRzKS5cbiAgICBhc3NpZ25WYWx1ZShyZXN1bHQsIGtleSwgYmFzZUNsb25lKHN1YlZhbHVlLCBiaXRtYXNrLCBjdXN0b21pemVyLCBrZXksIHZhbHVlLCBzdGFjaykpO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZUNsb25lO1xuIiwgImltcG9ydCBiYXNlQ2xvbmUgZnJvbSAnLi9fYmFzZUNsb25lLmpzJztcblxuLyoqIFVzZWQgdG8gY29tcG9zZSBiaXRtYXNrcyBmb3IgY2xvbmluZy4gKi9cbnZhciBDTE9ORV9ERUVQX0ZMQUcgPSAxLFxuICAgIENMT05FX1NZTUJPTFNfRkxBRyA9IDQ7XG5cbi8qKlxuICogVGhpcyBtZXRob2QgaXMgbGlrZSBgXy5jbG9uZWAgZXhjZXB0IHRoYXQgaXQgcmVjdXJzaXZlbHkgY2xvbmVzIGB2YWx1ZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAxLjAuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHJlY3Vyc2l2ZWx5IGNsb25lLlxuICogQHJldHVybnMgeyp9IFJldHVybnMgdGhlIGRlZXAgY2xvbmVkIHZhbHVlLlxuICogQHNlZSBfLmNsb25lXG4gKiBAZXhhbXBsZVxuICpcbiAqIHZhciBvYmplY3RzID0gW3sgJ2EnOiAxIH0sIHsgJ2InOiAyIH1dO1xuICpcbiAqIHZhciBkZWVwID0gXy5jbG9uZURlZXAob2JqZWN0cyk7XG4gKiBjb25zb2xlLmxvZyhkZWVwWzBdID09PSBvYmplY3RzWzBdKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGNsb25lRGVlcCh2YWx1ZSkge1xuICByZXR1cm4gYmFzZUNsb25lKHZhbHVlLCBDTE9ORV9ERUVQX0ZMQUcgfCBDTE9ORV9TWU1CT0xTX0ZMQUcpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbG9uZURlZXA7XG4iLCAiaW1wb3J0IGJhc2VQcm9wZXJ0eU9mIGZyb20gJy4vX2Jhc2VQcm9wZXJ0eU9mLmpzJztcblxuLyoqIFVzZWQgdG8gbWFwIGNoYXJhY3RlcnMgdG8gSFRNTCBlbnRpdGllcy4gKi9cbnZhciBodG1sRXNjYXBlcyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnLFxuICBcIidcIjogJyYjMzk7J1xufTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmVzY2FwZWAgdG8gY29udmVydCBjaGFyYWN0ZXJzIHRvIEhUTUwgZW50aXRpZXMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICovXG52YXIgZXNjYXBlSHRtbENoYXIgPSBiYXNlUHJvcGVydHlPZihodG1sRXNjYXBlcyk7XG5cbmV4cG9ydCBkZWZhdWx0IGVzY2FwZUh0bWxDaGFyO1xuIiwgImltcG9ydCBlc2NhcGVIdG1sQ2hhciBmcm9tICcuL19lc2NhcGVIdG1sQ2hhci5qcyc7XG5pbXBvcnQgdG9TdHJpbmcgZnJvbSAnLi90b1N0cmluZy5qcyc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIEhUTUwgZW50aXRpZXMgYW5kIEhUTUwgY2hhcmFjdGVycy4gKi9cbnZhciByZVVuZXNjYXBlZEh0bWwgPSAvWyY8PlwiJ10vZyxcbiAgICByZUhhc1VuZXNjYXBlZEh0bWwgPSBSZWdFeHAocmVVbmVzY2FwZWRIdG1sLnNvdXJjZSk7XG5cbi8qKlxuICogQ29udmVydHMgdGhlIGNoYXJhY3RlcnMgXCImXCIsIFwiPFwiLCBcIj5cIiwgJ1wiJywgYW5kIFwiJ1wiIGluIGBzdHJpbmdgIHRvIHRoZWlyXG4gKiBjb3JyZXNwb25kaW5nIEhUTUwgZW50aXRpZXMuXG4gKlxuICogKipOb3RlOioqIE5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQuIFRvIGVzY2FwZSBhZGRpdGlvbmFsXG4gKiBjaGFyYWN0ZXJzIHVzZSBhIHRoaXJkLXBhcnR5IGxpYnJhcnkgbGlrZSBbX2hlX10oaHR0cHM6Ly9tdGhzLmJlL2hlKS5cbiAqXG4gKiBUaG91Z2ggdGhlIFwiPlwiIGNoYXJhY3RlciBpcyBlc2NhcGVkIGZvciBzeW1tZXRyeSwgY2hhcmFjdGVycyBsaWtlXG4gKiBcIj5cIiBhbmQgXCIvXCIgZG9uJ3QgbmVlZCBlc2NhcGluZyBpbiBIVE1MIGFuZCBoYXZlIG5vIHNwZWNpYWwgbWVhbmluZ1xuICogdW5sZXNzIHRoZXkncmUgcGFydCBvZiBhIHRhZyBvciB1bnF1b3RlZCBhdHRyaWJ1dGUgdmFsdWUuIFNlZVxuICogW01hdGhpYXMgQnluZW5zJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9tYXRoaWFzYnluZW5zLmJlL25vdGVzL2FtYmlndW91cy1hbXBlcnNhbmRzKVxuICogKHVuZGVyIFwic2VtaS1yZWxhdGVkIGZ1biBmYWN0XCIpIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogV2hlbiB3b3JraW5nIHdpdGggSFRNTCB5b3Ugc2hvdWxkIGFsd2F5c1xuICogW3F1b3RlIGF0dHJpYnV0ZSB2YWx1ZXNdKGh0dHA6Ly93b25rby5jb20vcG9zdC9odG1sLWVzY2FwaW5nKSB0byByZWR1Y2VcbiAqIFhTUyB2ZWN0b3JzLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgc3RyaW5nLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmVzY2FwZSgnZnJlZCwgYmFybmV5LCAmIHBlYmJsZXMnKTtcbiAqIC8vID0+ICdmcmVkLCBiYXJuZXksICZhbXA7IHBlYmJsZXMnXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZShzdHJpbmcpIHtcbiAgc3RyaW5nID0gdG9TdHJpbmcoc3RyaW5nKTtcbiAgcmV0dXJuIChzdHJpbmcgJiYgcmVIYXNVbmVzY2FwZWRIdG1sLnRlc3Qoc3RyaW5nKSlcbiAgICA/IHN0cmluZy5yZXBsYWNlKHJlVW5lc2NhcGVkSHRtbCwgZXNjYXBlSHRtbENoYXIpXG4gICAgOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGVzY2FwZTtcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc0FycmF5IGZyb20gJy4vaXNBcnJheS5qcyc7XG5pbXBvcnQgaXNPYmplY3RMaWtlIGZyb20gJy4vaXNPYmplY3RMaWtlLmpzJztcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIHN0cmluZ1RhZyA9ICdbb2JqZWN0IFN0cmluZ10nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgU3RyaW5nYCBwcmltaXRpdmUgb3Igb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgc3RyaW5nLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNTdHJpbmcoJ2FiYycpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNTdHJpbmcoMSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5mdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdzdHJpbmcnIHx8XG4gICAgKCFpc0FycmF5KHZhbHVlKSAmJiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IHN0cmluZ1RhZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzU3RyaW5nO1xuIiwgImltcG9ydCBhcnJheU1hcCBmcm9tICcuL19hcnJheU1hcC5qcyc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8udmFsdWVzYCBhbmQgYF8udmFsdWVzSW5gIHdoaWNoIGNyZWF0ZXMgYW5cbiAqIGFycmF5IG9mIGBvYmplY3RgIHByb3BlcnR5IHZhbHVlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9wZXJ0eSBuYW1lc1xuICogb2YgYHByb3BzYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtPYmplY3R9IG9iamVjdCBUaGUgb2JqZWN0IHRvIHF1ZXJ5LlxuICogQHBhcmFtIHtBcnJheX0gcHJvcHMgVGhlIHByb3BlcnR5IG5hbWVzIHRvIGdldCB2YWx1ZXMgZm9yLlxuICogQHJldHVybnMge09iamVjdH0gUmV0dXJucyB0aGUgYXJyYXkgb2YgcHJvcGVydHkgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBiYXNlVmFsdWVzKG9iamVjdCwgcHJvcHMpIHtcbiAgcmV0dXJuIGFycmF5TWFwKHByb3BzLCBmdW5jdGlvbihrZXkpIHtcbiAgICByZXR1cm4gb2JqZWN0W2tleV07XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlVmFsdWVzO1xuIiwgImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbnZhciBhcnJheUJ1ZmZlclRhZyA9ICdbb2JqZWN0IEFycmF5QnVmZmVyXSc7XG5cbi8qKlxuICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYF8uaXNBcnJheUJ1ZmZlcmAgd2l0aG91dCBOb2RlLmpzIG9wdGltaXphdGlvbnMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYW4gYXJyYXkgYnVmZmVyLCBlbHNlIGBmYWxzZWAuXG4gKi9cbmZ1bmN0aW9uIGJhc2VJc0FycmF5QnVmZmVyKHZhbHVlKSB7XG4gIHJldHVybiBpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IGFycmF5QnVmZmVyVGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNBcnJheUJ1ZmZlcjtcbiIsICJpbXBvcnQgYmFzZUlzQXJyYXlCdWZmZXIgZnJvbSAnLi9fYmFzZUlzQXJyYXlCdWZmZXIuanMnO1xuaW1wb3J0IGJhc2VVbmFyeSBmcm9tICcuL19iYXNlVW5hcnkuanMnO1xuaW1wb3J0IG5vZGVVdGlsIGZyb20gJy4vX25vZGVVdGlsLmpzJztcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNBcnJheUJ1ZmZlciA9IG5vZGVVdGlsICYmIG5vZGVVdGlsLmlzQXJyYXlCdWZmZXI7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhbiBgQXJyYXlCdWZmZXJgIG9iamVjdC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMy4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhbiBhcnJheSBidWZmZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheUJ1ZmZlcigyKSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0FycmF5QnVmZmVyKG5ldyBBcnJheSgyKSk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG52YXIgaXNBcnJheUJ1ZmZlciA9IG5vZGVJc0FycmF5QnVmZmVyID8gYmFzZVVuYXJ5KG5vZGVJc0FycmF5QnVmZmVyKSA6IGJhc2VJc0FycmF5QnVmZmVyO1xuXG5leHBvcnQgZGVmYXVsdCBpc0FycmF5QnVmZmVyO1xuIiwgImltcG9ydCBiYXNlR2V0VGFnIGZyb20gJy4vX2Jhc2VHZXRUYWcuanMnO1xuaW1wb3J0IGlzT2JqZWN0TGlrZSBmcm9tICcuL2lzT2JqZWN0TGlrZS5qcyc7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBib29sVGFnID0gJ1tvYmplY3QgQm9vbGVhbl0nO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBib29sZWFuIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgYSBib29sZWFuLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNCb29sZWFuKGZhbHNlKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzQm9vbGVhbihudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzQm9vbGVhbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT09IHRydWUgfHwgdmFsdWUgPT09IGZhbHNlIHx8XG4gICAgKGlzT2JqZWN0TGlrZSh2YWx1ZSkgJiYgYmFzZUdldFRhZyh2YWx1ZSkgPT0gYm9vbFRhZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzQm9vbGVhbjtcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgZGF0ZVRhZyA9ICdbb2JqZWN0IERhdGVdJztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy5pc0RhdGVgIHdpdGhvdXQgTm9kZS5qcyBvcHRpbWl6YXRpb25zLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUlzRGF0ZSh2YWx1ZSkge1xuICByZXR1cm4gaXNPYmplY3RMaWtlKHZhbHVlKSAmJiBiYXNlR2V0VGFnKHZhbHVlKSA9PSBkYXRlVGFnO1xufVxuXG5leHBvcnQgZGVmYXVsdCBiYXNlSXNEYXRlO1xuIiwgImltcG9ydCBiYXNlSXNEYXRlIGZyb20gJy4vX2Jhc2VJc0RhdGUuanMnO1xuaW1wb3J0IGJhc2VVbmFyeSBmcm9tICcuL19iYXNlVW5hcnkuanMnO1xuaW1wb3J0IG5vZGVVdGlsIGZyb20gJy4vX25vZGVVdGlsLmpzJztcblxuLyogTm9kZS5qcyBoZWxwZXIgcmVmZXJlbmNlcy4gKi9cbnZhciBub2RlSXNEYXRlID0gbm9kZVV0aWwgJiYgbm9kZVV0aWwuaXNEYXRlO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGNsYXNzaWZpZWQgYXMgYSBgRGF0ZWAgb2JqZWN0LlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgZGF0ZSBvYmplY3QsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0RhdGUobmV3IERhdGUpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNEYXRlKCdNb24gQXByaWwgMjMgMjAxMicpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xudmFyIGlzRGF0ZSA9IG5vZGVJc0RhdGUgPyBiYXNlVW5hcnkobm9kZUlzRGF0ZSkgOiBiYXNlSXNEYXRlO1xuXG5leHBvcnQgZGVmYXVsdCBpc0RhdGU7XG4iLCAiaW1wb3J0IHRvSW50ZWdlciBmcm9tICcuL3RvSW50ZWdlci5qcyc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYW4gaW50ZWdlci5cbiAqXG4gKiAqKk5vdGU6KiogVGhpcyBtZXRob2QgaXMgYmFzZWQgb25cbiAqIFtgTnVtYmVyLmlzSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc0ludGVnZXIpLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGFuIGludGVnZXIsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc0ludGVnZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc0ludGVnZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiBmYWxzZVxuICpcbiAqIF8uaXNJbnRlZ2VyKEluZmluaXR5KTtcbiAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc0ludGVnZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzSW50ZWdlcih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09ICdudW1iZXInICYmIHZhbHVlID09IHRvSW50ZWdlcih2YWx1ZSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzSW50ZWdlcjtcbiIsICJpbXBvcnQgYmFzZUdldFRhZyBmcm9tICcuL19iYXNlR2V0VGFnLmpzJztcbmltcG9ydCBpc09iamVjdExpa2UgZnJvbSAnLi9pc09iamVjdExpa2UuanMnO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52YXIgbnVtYmVyVGFnID0gJ1tvYmplY3QgTnVtYmVyXSc7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgY2xhc3NpZmllZCBhcyBhIGBOdW1iZXJgIHByaW1pdGl2ZSBvciBvYmplY3QuXG4gKlxuICogKipOb3RlOioqIFRvIGV4Y2x1ZGUgYEluZmluaXR5YCwgYC1JbmZpbml0eWAsIGFuZCBgTmFOYCwgd2hpY2ggYXJlXG4gKiBjbGFzc2lmaWVkIGFzIG51bWJlcnMsIHVzZSB0aGUgYF8uaXNGaW5pdGVgIG1ldGhvZC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIG51bWJlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzTnVtYmVyKDMpO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNOdW1iZXIoTnVtYmVyLk1JTl9WQUxVRSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc051bWJlcignMycpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOdW1iZXIodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PSAnbnVtYmVyJyB8fFxuICAgIChpc09iamVjdExpa2UodmFsdWUpICYmIGJhc2VHZXRUYWcodmFsdWUpID09IG51bWJlclRhZyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTnVtYmVyO1xuIiwgIi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYG51bGxgIG9yIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG51bGxpc2gsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc05pbChudWxsKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzTmlsKHZvaWQgMCk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc05pbChOYU4pO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNOaWwodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGw7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzTmlsO1xuIiwgImltcG9ydCBpc0ludGVnZXIgZnJvbSAnLi9pc0ludGVnZXIuanMnO1xuXG4vKiogVXNlZCBhcyByZWZlcmVuY2VzIGZvciB2YXJpb3VzIGBOdW1iZXJgIGNvbnN0YW50cy4gKi9cbnZhciBNQVhfU0FGRV9JTlRFR0VSID0gOTAwNzE5OTI1NDc0MDk5MTtcblxuLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlci4gQW4gaW50ZWdlciBpcyBzYWZlIGlmIGl0J3MgYW4gSUVFRS03NTRcbiAqIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVyIHdoaWNoIGlzbid0IHRoZSByZXN1bHQgb2YgYSByb3VuZGVkIHVuc2FmZSBpbnRlZ2VyLlxuICpcbiAqICoqTm90ZToqKiBUaGlzIG1ldGhvZCBpcyBiYXNlZCBvblxuICogW2BOdW1iZXIuaXNTYWZlSW50ZWdlcmBdKGh0dHBzOi8vbWRuLmlvL051bWJlci9pc1NhZmVJbnRlZ2VyKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHNhZmUgaW50ZWdlciwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoMyk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1NhZmVJbnRlZ2VyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoSW5maW5pdHkpO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzU2FmZUludGVnZXIoJzMnKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzU2FmZUludGVnZXIodmFsdWUpIHtcbiAgcmV0dXJuIGlzSW50ZWdlcih2YWx1ZSkgJiYgdmFsdWUgPj0gLU1BWF9TQUZFX0lOVEVHRVIgJiYgdmFsdWUgPD0gTUFYX1NBRkVfSU5URUdFUjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaXNTYWZlSW50ZWdlcjtcbiIsICIvKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBzaW5jZSAwLjEuMFxuICogQG1lbWJlck9mIF9cbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGB1bmRlZmluZWRgLCBlbHNlIGBmYWxzZWAuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8uaXNVbmRlZmluZWQodm9pZCAwKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBfLmlzVW5kZWZpbmVkKG51bGwpO1xuICogLy8gPT4gZmFsc2VcbiAqL1xuZnVuY3Rpb24gaXNVbmRlZmluZWQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGlzVW5kZWZpbmVkO1xuIiwgImltcG9ydCBlcSBmcm9tICcuL2VxLmpzJztcblxuLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLmRlZmF1bHRzYCB0byBjdXN0b21pemUgaXRzIGBfLmFzc2lnbkluYCB1c2UgdG8gYXNzaWduIHByb3BlcnRpZXNcbiAqIG9mIHNvdXJjZSBvYmplY3RzIHRvIHRoZSBkZXN0aW5hdGlvbiBvYmplY3QgZm9yIGFsbCBkZXN0aW5hdGlvbiBwcm9wZXJ0aWVzXG4gKiB0aGF0IHJlc29sdmUgdG8gYHVuZGVmaW5lZGAuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7Kn0gb2JqVmFsdWUgVGhlIGRlc3RpbmF0aW9uIHZhbHVlLlxuICogQHBhcmFtIHsqfSBzcmNWYWx1ZSBUaGUgc291cmNlIHZhbHVlLlxuICogQHBhcmFtIHtzdHJpbmd9IGtleSBUaGUga2V5IG9mIHRoZSBwcm9wZXJ0eSB0byBhc3NpZ24uXG4gKiBAcGFyYW0ge09iamVjdH0gb2JqZWN0IFRoZSBwYXJlbnQgb2JqZWN0IG9mIGBvYmpWYWx1ZWAuXG4gKiBAcmV0dXJucyB7Kn0gUmV0dXJucyB0aGUgdmFsdWUgdG8gYXNzaWduLlxuICovXG5mdW5jdGlvbiBjdXN0b21EZWZhdWx0c0Fzc2lnbkluKG9ialZhbHVlLCBzcmNWYWx1ZSwga2V5LCBvYmplY3QpIHtcbiAgaWYgKG9ialZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgIChlcShvYmpWYWx1ZSwgb2JqZWN0UHJvdG9ba2V5XSkgJiYgIWhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpKSkge1xuICAgIHJldHVybiBzcmNWYWx1ZTtcbiAgfVxuICByZXR1cm4gb2JqVmFsdWU7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGN1c3RvbURlZmF1bHRzQXNzaWduSW47XG4iLCAiLyoqIFVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG52YXIgc3RyaW5nRXNjYXBlcyA9IHtcbiAgJ1xcXFwnOiAnXFxcXCcsXG4gIFwiJ1wiOiBcIidcIixcbiAgJ1xcbic6ICduJyxcbiAgJ1xccic6ICdyJyxcbiAgJ1xcdTIwMjgnOiAndTIwMjgnLFxuICAnXFx1MjAyOSc6ICd1MjAyOSdcbn07XG5cbi8qKlxuICogVXNlZCBieSBgXy50ZW1wbGF0ZWAgdG8gZXNjYXBlIGNoYXJhY3RlcnMgZm9yIGluY2x1c2lvbiBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBjaHIgVGhlIG1hdGNoZWQgY2hhcmFjdGVyIHRvIGVzY2FwZS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGVzY2FwZWQgY2hhcmFjdGVyLlxuICovXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmdDaGFyKGNocikge1xuICByZXR1cm4gJ1xcXFwnICsgc3RyaW5nRXNjYXBlc1tjaHJdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlc2NhcGVTdHJpbmdDaGFyO1xuIiwgIi8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVJbnRlcnBvbGF0ZSA9IC88JT0oW1xcc1xcU10rPyklPi9nO1xuXG5leHBvcnQgZGVmYXVsdCByZUludGVycG9sYXRlO1xuIiwgIi8qKiBVc2VkIHRvIG1hdGNoIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVFc2NhcGUgPSAvPCUtKFtcXHNcXFNdKz8pJT4vZztcblxuZXhwb3J0IGRlZmF1bHQgcmVFc2NhcGU7XG4iLCAiLyoqIFVzZWQgdG8gbWF0Y2ggdGVtcGxhdGUgZGVsaW1pdGVycy4gKi9cbnZhciByZUV2YWx1YXRlID0gLzwlKFtcXHNcXFNdKz8pJT4vZztcblxuZXhwb3J0IGRlZmF1bHQgcmVFdmFsdWF0ZTtcbiIsICJpbXBvcnQgZXNjYXBlIGZyb20gJy4vZXNjYXBlLmpzJztcbmltcG9ydCByZUVzY2FwZSBmcm9tICcuL19yZUVzY2FwZS5qcyc7XG5pbXBvcnQgcmVFdmFsdWF0ZSBmcm9tICcuL19yZUV2YWx1YXRlLmpzJztcbmltcG9ydCByZUludGVycG9sYXRlIGZyb20gJy4vX3JlSW50ZXJwb2xhdGUuanMnO1xuXG4vKipcbiAqIEJ5IGRlZmF1bHQsIHRoZSB0ZW1wbGF0ZSBkZWxpbWl0ZXJzIHVzZWQgYnkgbG9kYXNoIGFyZSBsaWtlIHRob3NlIGluXG4gKiBlbWJlZGRlZCBSdWJ5IChFUkIpIGFzIHdlbGwgYXMgRVMyMDE1IHRlbXBsYXRlIHN0cmluZ3MuIENoYW5nZSB0aGVcbiAqIGZvbGxvd2luZyB0ZW1wbGF0ZSBzZXR0aW5ncyB0byB1c2UgYWx0ZXJuYXRpdmUgZGVsaW1pdGVycy5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHR5cGUge09iamVjdH1cbiAqL1xudmFyIHRlbXBsYXRlU2V0dGluZ3MgPSB7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZWN0IGBkYXRhYCBwcm9wZXJ0eSB2YWx1ZXMgdG8gYmUgSFRNTC1lc2NhcGVkLlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtSZWdFeHB9XG4gICAqL1xuICAnZXNjYXBlJzogcmVFc2NhcGUsXG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZGV0ZWN0IGNvZGUgdG8gYmUgZXZhbHVhdGVkLlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtSZWdFeHB9XG4gICAqL1xuICAnZXZhbHVhdGUnOiByZUV2YWx1YXRlLFxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGRldGVjdCBgZGF0YWAgcHJvcGVydHkgdmFsdWVzIHRvIGluamVjdC5cbiAgICpcbiAgICogQG1lbWJlck9mIF8udGVtcGxhdGVTZXR0aW5nc1xuICAgKiBAdHlwZSB7UmVnRXhwfVxuICAgKi9cbiAgJ2ludGVycG9sYXRlJzogcmVJbnRlcnBvbGF0ZSxcblxuICAvKipcbiAgICogVXNlZCB0byByZWZlcmVuY2UgdGhlIGRhdGEgb2JqZWN0IGluIHRoZSB0ZW1wbGF0ZSB0ZXh0LlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtzdHJpbmd9XG4gICAqL1xuICAndmFyaWFibGUnOiAnJyxcblxuICAvKipcbiAgICogVXNlZCB0byBpbXBvcnQgdmFyaWFibGVzIGludG8gdGhlIGNvbXBpbGVkIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAbWVtYmVyT2YgXy50ZW1wbGF0ZVNldHRpbmdzXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICAnaW1wb3J0cyc6IHtcblxuICAgIC8qKlxuICAgICAqIEEgcmVmZXJlbmNlIHRvIHRoZSBgbG9kYXNoYCBmdW5jdGlvbi5cbiAgICAgKlxuICAgICAqIEBtZW1iZXJPZiBfLnRlbXBsYXRlU2V0dGluZ3MuaW1wb3J0c1xuICAgICAqIEB0eXBlIHtGdW5jdGlvbn1cbiAgICAgKi9cbiAgICAnXyc6IHsgJ2VzY2FwZSc6IGVzY2FwZSB9XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IHRlbXBsYXRlU2V0dGluZ3M7XG4iLCAiaW1wb3J0IGFzc2lnbkluV2l0aCBmcm9tICcuL2Fzc2lnbkluV2l0aC5qcyc7XG5pbXBvcnQgYXR0ZW1wdCBmcm9tICcuL2F0dGVtcHQuanMnO1xuaW1wb3J0IGJhc2VWYWx1ZXMgZnJvbSAnLi9fYmFzZVZhbHVlcy5qcyc7XG5pbXBvcnQgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiBmcm9tICcuL19jdXN0b21EZWZhdWx0c0Fzc2lnbkluLmpzJztcbmltcG9ydCBlc2NhcGVTdHJpbmdDaGFyIGZyb20gJy4vX2VzY2FwZVN0cmluZ0NoYXIuanMnO1xuaW1wb3J0IGlzRXJyb3IgZnJvbSAnLi9pc0Vycm9yLmpzJztcbmltcG9ydCBpc0l0ZXJhdGVlQ2FsbCBmcm9tICcuL19pc0l0ZXJhdGVlQ2FsbC5qcyc7XG5pbXBvcnQga2V5cyBmcm9tICcuL2tleXMuanMnO1xuaW1wb3J0IHJlSW50ZXJwb2xhdGUgZnJvbSAnLi9fcmVJbnRlcnBvbGF0ZS5qcyc7XG5pbXBvcnQgdGVtcGxhdGVTZXR0aW5ncyBmcm9tICcuL3RlbXBsYXRlU2V0dGluZ3MuanMnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgSU5WQUxJRF9URU1QTF9WQVJfRVJST1JfVEVYVCA9ICdJbnZhbGlkIGB2YXJpYWJsZWAgb3B0aW9uIHBhc3NlZCBpbnRvIGBfLnRlbXBsYXRlYCc7XG5cbi8qKiBVc2VkIHRvIG1hdGNoIGVtcHR5IHN0cmluZyBsaXRlcmFscyBpbiBjb21waWxlZCB0ZW1wbGF0ZSBzb3VyY2UuICovXG52YXIgcmVFbXB0eVN0cmluZ0xlYWRpbmcgPSAvXFxiX19wIFxcKz0gJyc7L2csXG4gICAgcmVFbXB0eVN0cmluZ01pZGRsZSA9IC9cXGIoX19wIFxcKz0pICcnIFxcKy9nLFxuICAgIHJlRW1wdHlTdHJpbmdUcmFpbGluZyA9IC8oX19lXFwoLio/XFwpfFxcYl9fdFxcKSkgXFwrXFxuJyc7L2c7XG5cbi8qKlxuICogVXNlZCB0byB2YWxpZGF0ZSB0aGUgYHZhbGlkYXRlYCBvcHRpb24gaW4gYF8udGVtcGxhdGVgIHZhcmlhYmxlLlxuICpcbiAqIEZvcmJpZHMgY2hhcmFjdGVycyB3aGljaCBjb3VsZCBwb3RlbnRpYWxseSBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgdGhlIGZ1bmN0aW9uIGFyZ3VtZW50IGRlZmluaXRpb246XG4gKiAtIFwiKCksXCIgKG1vZGlmaWNhdGlvbiBvZiBmdW5jdGlvbiBwYXJhbWV0ZXJzKVxuICogLSBcIj1cIiAoZGVmYXVsdCB2YWx1ZSlcbiAqIC0gXCJbXXt9XCIgKGRlc3RydWN0dXJpbmcgb2YgZnVuY3Rpb24gcGFyYW1ldGVycylcbiAqIC0gXCIvXCIgKGJlZ2lubmluZyBvZiBhIGNvbW1lbnQpXG4gKiAtIHdoaXRlc3BhY2VcbiAqL1xudmFyIHJlRm9yYmlkZGVuSWRlbnRpZmllckNoYXJzID0gL1soKT0se31cXFtcXF1cXC9cXHNdLztcblxuLyoqXG4gKiBVc2VkIHRvIG1hdGNoXG4gKiBbRVMgdGVtcGxhdGUgZGVsaW1pdGVyc10oaHR0cDovL2VjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtdGVtcGxhdGUtbGl0ZXJhbC1sZXhpY2FsLWNvbXBvbmVudHMpLlxuICovXG52YXIgcmVFc1RlbXBsYXRlID0gL1xcJFxceyhbXlxcXFx9XSooPzpcXFxcLlteXFxcXH1dKikqKVxcfS9nO1xuXG4vKiogVXNlZCB0byBlbnN1cmUgY2FwdHVyaW5nIG9yZGVyIG9mIHRlbXBsYXRlIGRlbGltaXRlcnMuICovXG52YXIgcmVOb01hdGNoID0gLygkXikvO1xuXG4vKiogVXNlZCB0byBtYXRjaCB1bmVzY2FwZWQgY2hhcmFjdGVycyBpbiBjb21waWxlZCBzdHJpbmcgbGl0ZXJhbHMuICovXG52YXIgcmVVbmVzY2FwZWRTdHJpbmcgPSAvWydcXG5cXHJcXHUyMDI4XFx1MjAyOVxcXFxdL2c7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVjdHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uIHRoYXQgY2FuIGludGVycG9sYXRlIGRhdGEgcHJvcGVydGllc1xuICogaW4gXCJpbnRlcnBvbGF0ZVwiIGRlbGltaXRlcnMsIEhUTUwtZXNjYXBlIGludGVycG9sYXRlZCBkYXRhIHByb3BlcnRpZXMgaW5cbiAqIFwiZXNjYXBlXCIgZGVsaW1pdGVycywgYW5kIGV4ZWN1dGUgSmF2YVNjcmlwdCBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy4gRGF0YVxuICogcHJvcGVydGllcyBtYXkgYmUgYWNjZXNzZWQgYXMgZnJlZSB2YXJpYWJsZXMgaW4gdGhlIHRlbXBsYXRlLiBJZiBhIHNldHRpbmdcbiAqIG9iamVjdCBpcyBnaXZlbiwgaXQgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGBfLnRlbXBsYXRlU2V0dGluZ3NgIHZhbHVlcy5cbiAqXG4gKiAqKk5vdGU6KiogSW4gdGhlIGRldmVsb3BtZW50IGJ1aWxkIGBfLnRlbXBsYXRlYCB1dGlsaXplc1xuICogW3NvdXJjZVVSTHNdKGh0dHA6Ly93d3cuaHRtbDVyb2Nrcy5jb20vZW4vdHV0b3JpYWxzL2RldmVsb3BlcnRvb2xzL3NvdXJjZW1hcHMvI3RvYy1zb3VyY2V1cmwpXG4gKiBmb3IgZWFzaWVyIGRlYnVnZ2luZy5cbiAqXG4gKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBwcmVjb21waWxpbmcgdGVtcGxhdGVzIHNlZVxuICogW2xvZGFzaCdzIGN1c3RvbSBidWlsZHMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9sb2Rhc2guY29tL2N1c3RvbS1idWlsZHMpLlxuICpcbiAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIENocm9tZSBleHRlbnNpb24gc2FuZGJveGVzIHNlZVxuICogW0Nocm9tZSdzIGV4dGVuc2lvbnMgZG9jdW1lbnRhdGlvbl0oaHR0cHM6Ly9kZXZlbG9wZXIuY2hyb21lLmNvbS9leHRlbnNpb25zL3NhbmRib3hpbmdFdmFsKS5cbiAqXG4gKiBAc3RhdGljXG4gKiBAc2luY2UgMC4xLjBcbiAqIEBtZW1iZXJPZiBfXG4gKiBAY2F0ZWdvcnkgU3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gW3N0cmluZz0nJ10gVGhlIHRlbXBsYXRlIHN0cmluZy5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmVzY2FwZT1fLnRlbXBsYXRlU2V0dGluZ3MuZXNjYXBlXVxuICogIFRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtSZWdFeHB9IFtvcHRpb25zLmV2YWx1YXRlPV8udGVtcGxhdGVTZXR0aW5ncy5ldmFsdWF0ZV1cbiAqICBUaGUgXCJldmFsdWF0ZVwiIGRlbGltaXRlci5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucy5pbXBvcnRzPV8udGVtcGxhdGVTZXR0aW5ncy5pbXBvcnRzXVxuICogIEFuIG9iamVjdCB0byBpbXBvcnQgaW50byB0aGUgdGVtcGxhdGUgYXMgZnJlZSB2YXJpYWJsZXMuXG4gKiBAcGFyYW0ge1JlZ0V4cH0gW29wdGlvbnMuaW50ZXJwb2xhdGU9Xy50ZW1wbGF0ZVNldHRpbmdzLmludGVycG9sYXRlXVxuICogIFRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IFtvcHRpb25zLnNvdXJjZVVSTD0ndGVtcGxhdGVTb3VyY2VzW25dJ11cbiAqICBUaGUgc291cmNlVVJMIG9mIHRoZSBjb21waWxlZCB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBbb3B0aW9ucy52YXJpYWJsZT0nb2JqJ11cbiAqICBUaGUgZGF0YSBvYmplY3QgdmFyaWFibGUgbmFtZS5cbiAqIEBwYXJhbS0ge09iamVjdH0gW2d1YXJkXSBFbmFibGVzIHVzZSBhcyBhbiBpdGVyYXRlZSBmb3IgbWV0aG9kcyBsaWtlIGBfLm1hcGAuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIGNvbXBpbGVkIHRlbXBsYXRlIGZ1bmN0aW9uLlxuICogQGV4YW1wbGVcbiAqXG4gKiAvLyBVc2UgdGhlIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIgdG8gY3JlYXRlIGEgY29tcGlsZWQgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyA8JT0gdXNlciAlPiEnKTtcbiAqIGNvbXBpbGVkKHsgJ3VzZXInOiAnZnJlZCcgfSk7XG4gKiAvLyA9PiAnaGVsbG8gZnJlZCEnXG4gKlxuICogLy8gVXNlIHRoZSBIVE1MIFwiZXNjYXBlXCIgZGVsaW1pdGVyIHRvIGVzY2FwZSBkYXRhIHByb3BlcnR5IHZhbHVlcy5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzxiPjwlLSB2YWx1ZSAlPjwvYj4nKTtcbiAqIGNvbXBpbGVkKHsgJ3ZhbHVlJzogJzxzY3JpcHQ+JyB9KTtcbiAqIC8vID0+ICc8Yj4mbHQ7c2NyaXB0Jmd0OzwvYj4nXG4gKlxuICogLy8gVXNlIHRoZSBcImV2YWx1YXRlXCIgZGVsaW1pdGVyIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdCBhbmQgZ2VuZXJhdGUgSFRNTC5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIF8uZm9yRWFjaCh1c2VycywgZnVuY3Rpb24odXNlcikgeyAlPjxsaT48JS0gdXNlciAlPjwvbGk+PCUgfSk7ICU+Jyk7XG4gKiBjb21waWxlZCh7ICd1c2Vycyc6IFsnZnJlZCcsICdiYXJuZXknXSB9KTtcbiAqIC8vID0+ICc8bGk+ZnJlZDwvbGk+PGxpPmJhcm5leTwvbGk+J1xuICpcbiAqIC8vIFVzZSB0aGUgaW50ZXJuYWwgYHByaW50YCBmdW5jdGlvbiBpbiBcImV2YWx1YXRlXCIgZGVsaW1pdGVycy5cbiAqIHZhciBjb21waWxlZCA9IF8udGVtcGxhdGUoJzwlIHByaW50KFwiaGVsbG8gXCIgKyB1c2VyKTsgJT4hJyk7XG4gKiBjb21waWxlZCh7ICd1c2VyJzogJ2Jhcm5leScgfSk7XG4gKiAvLyA9PiAnaGVsbG8gYmFybmV5ISdcbiAqXG4gKiAvLyBVc2UgdGhlIEVTIHRlbXBsYXRlIGxpdGVyYWwgZGVsaW1pdGVyIGFzIGFuIFwiaW50ZXJwb2xhdGVcIiBkZWxpbWl0ZXIuXG4gKiAvLyBEaXNhYmxlIHN1cHBvcnQgYnkgcmVwbGFjaW5nIHRoZSBcImludGVycG9sYXRlXCIgZGVsaW1pdGVyLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gJHsgdXNlciB9IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdwZWJibGVzJyB9KTtcbiAqIC8vID0+ICdoZWxsbyBwZWJibGVzISdcbiAqXG4gKiAvLyBVc2UgYmFja3NsYXNoZXMgdG8gdHJlYXQgZGVsaW1pdGVycyBhcyBwbGFpbiB0ZXh0LlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnPCU9IFwiXFxcXDwlLSB2YWx1ZSAlXFxcXD5cIiAlPicpO1xuICogY29tcGlsZWQoeyAndmFsdWUnOiAnaWdub3JlZCcgfSk7XG4gKiAvLyA9PiAnPCUtIHZhbHVlICU+J1xuICpcbiAqIC8vIFVzZSB0aGUgYGltcG9ydHNgIG9wdGlvbiB0byBpbXBvcnQgYGpRdWVyeWAgYXMgYGpxYC5cbiAqIHZhciB0ZXh0ID0gJzwlIGpxLmVhY2godXNlcnMsIGZ1bmN0aW9uKHVzZXIpIHsgJT48bGk+PCUtIHVzZXIgJT48L2xpPjwlIH0pOyAlPic7XG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKHRleHQsIHsgJ2ltcG9ydHMnOiB7ICdqcSc6IGpRdWVyeSB9IH0pO1xuICogY29tcGlsZWQoeyAndXNlcnMnOiBbJ2ZyZWQnLCAnYmFybmV5J10gfSk7XG4gKiAvLyA9PiAnPGxpPmZyZWQ8L2xpPjxsaT5iYXJuZXk8L2xpPidcbiAqXG4gKiAvLyBVc2UgdGhlIGBzb3VyY2VVUkxgIG9wdGlvbiB0byBzcGVjaWZ5IGEgY3VzdG9tIHNvdXJjZVVSTCBmb3IgdGhlIHRlbXBsYXRlLlxuICogdmFyIGNvbXBpbGVkID0gXy50ZW1wbGF0ZSgnaGVsbG8gPCU9IHVzZXIgJT4hJywgeyAnc291cmNlVVJMJzogJy9iYXNpYy9ncmVldGluZy5qc3QnIH0pO1xuICogY29tcGlsZWQoZGF0YSk7XG4gKiAvLyA9PiBGaW5kIHRoZSBzb3VyY2Ugb2YgXCJncmVldGluZy5qc3RcIiB1bmRlciB0aGUgU291cmNlcyB0YWIgb3IgUmVzb3VyY2VzIHBhbmVsIG9mIHRoZSB3ZWIgaW5zcGVjdG9yLlxuICpcbiAqIC8vIFVzZSB0aGUgYHZhcmlhYmxlYCBvcHRpb24gdG8gZW5zdXJlIGEgd2l0aC1zdGF0ZW1lbnQgaXNuJ3QgdXNlZCBpbiB0aGUgY29tcGlsZWQgdGVtcGxhdGUuXG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoaSA8JT0gZGF0YS51c2VyICU+IScsIHsgJ3ZhcmlhYmxlJzogJ2RhdGEnIH0pO1xuICogY29tcGlsZWQuc291cmNlO1xuICogLy8gPT4gZnVuY3Rpb24oZGF0YSkge1xuICogLy8gICB2YXIgX190LCBfX3AgPSAnJztcbiAqIC8vICAgX19wICs9ICdoaSAnICsgKChfX3QgPSAoIGRhdGEudXNlciApKSA9PSBudWxsID8gJycgOiBfX3QpICsgJyEnO1xuICogLy8gICByZXR1cm4gX19wO1xuICogLy8gfVxuICpcbiAqIC8vIFVzZSBjdXN0b20gdGVtcGxhdGUgZGVsaW1pdGVycy5cbiAqIF8udGVtcGxhdGVTZXR0aW5ncy5pbnRlcnBvbGF0ZSA9IC97eyhbXFxzXFxTXSs/KX19L2c7XG4gKiB2YXIgY29tcGlsZWQgPSBfLnRlbXBsYXRlKCdoZWxsbyB7eyB1c2VyIH19IScpO1xuICogY29tcGlsZWQoeyAndXNlcic6ICdtdXN0YWNoZScgfSk7XG4gKiAvLyA9PiAnaGVsbG8gbXVzdGFjaGUhJ1xuICpcbiAqIC8vIFVzZSB0aGUgYHNvdXJjZWAgcHJvcGVydHkgdG8gaW5saW5lIGNvbXBpbGVkIHRlbXBsYXRlcyBmb3IgbWVhbmluZ2Z1bFxuICogLy8gbGluZSBudW1iZXJzIGluIGVycm9yIG1lc3NhZ2VzIGFuZCBzdGFjayB0cmFjZXMuXG4gKiBmcy53cml0ZUZpbGVTeW5jKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnanN0LmpzJyksICdcXFxuICogICB2YXIgSlNUID0ge1xcXG4gKiAgICAgXCJtYWluXCI6ICcgKyBfLnRlbXBsYXRlKG1haW5UZXh0KS5zb3VyY2UgKyAnXFxcbiAqICAgfTtcXFxuICogJyk7XG4gKi9cbmZ1bmN0aW9uIHRlbXBsYXRlKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpIHtcbiAgLy8gQmFzZWQgb24gSm9obiBSZXNpZydzIGB0bXBsYCBpbXBsZW1lbnRhdGlvblxuICAvLyAoaHR0cDovL2Vqb2huLm9yZy9ibG9nL2phdmFzY3JpcHQtbWljcm8tdGVtcGxhdGluZy8pXG4gIC8vIGFuZCBMYXVyYSBEb2t0b3JvdmEncyBkb1QuanMgKGh0dHBzOi8vZ2l0aHViLmNvbS9vbGFkby9kb1QpLlxuICB2YXIgc2V0dGluZ3MgPSB0ZW1wbGF0ZVNldHRpbmdzLmltcG9ydHMuXy50ZW1wbGF0ZVNldHRpbmdzIHx8IHRlbXBsYXRlU2V0dGluZ3M7XG5cbiAgaWYgKGd1YXJkICYmIGlzSXRlcmF0ZWVDYWxsKHN0cmluZywgb3B0aW9ucywgZ3VhcmQpKSB7XG4gICAgb3B0aW9ucyA9IHVuZGVmaW5lZDtcbiAgfVxuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICBvcHRpb25zID0gYXNzaWduSW5XaXRoKHt9LCBvcHRpb25zLCBzZXR0aW5ncywgY3VzdG9tRGVmYXVsdHNBc3NpZ25Jbik7XG5cbiAgdmFyIGltcG9ydHMgPSBhc3NpZ25JbldpdGgoe30sIG9wdGlvbnMuaW1wb3J0cywgc2V0dGluZ3MuaW1wb3J0cywgY3VzdG9tRGVmYXVsdHNBc3NpZ25JbiksXG4gICAgICBpbXBvcnRzS2V5cyA9IGtleXMoaW1wb3J0cyksXG4gICAgICBpbXBvcnRzVmFsdWVzID0gYmFzZVZhbHVlcyhpbXBvcnRzLCBpbXBvcnRzS2V5cyk7XG5cbiAgdmFyIGlzRXNjYXBpbmcsXG4gICAgICBpc0V2YWx1YXRpbmcsXG4gICAgICBpbmRleCA9IDAsXG4gICAgICBpbnRlcnBvbGF0ZSA9IG9wdGlvbnMuaW50ZXJwb2xhdGUgfHwgcmVOb01hdGNoLFxuICAgICAgc291cmNlID0gXCJfX3AgKz0gJ1wiO1xuXG4gIC8vIENvbXBpbGUgdGhlIHJlZ2V4cCB0byBtYXRjaCBlYWNoIGRlbGltaXRlci5cbiAgdmFyIHJlRGVsaW1pdGVycyA9IFJlZ0V4cChcbiAgICAob3B0aW9ucy5lc2NhcGUgfHwgcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgIGludGVycG9sYXRlLnNvdXJjZSArICd8JyArXG4gICAgKGludGVycG9sYXRlID09PSByZUludGVycG9sYXRlID8gcmVFc1RlbXBsYXRlIDogcmVOb01hdGNoKS5zb3VyY2UgKyAnfCcgK1xuICAgIChvcHRpb25zLmV2YWx1YXRlIHx8IHJlTm9NYXRjaCkuc291cmNlICsgJ3wkJ1xuICAsICdnJyk7XG5cbiAgLy8gVXNlIGEgc291cmNlVVJMIGZvciBlYXNpZXIgZGVidWdnaW5nLlxuICAvLyBUaGUgc291cmNlVVJMIGdldHMgaW5qZWN0ZWQgaW50byB0aGUgc291cmNlIHRoYXQncyBldmFsLWVkLCBzbyBiZSBjYXJlZnVsXG4gIC8vIHRvIG5vcm1hbGl6ZSBhbGwga2luZHMgb2Ygd2hpdGVzcGFjZSwgc28gZS5nLiBuZXdsaW5lcyAoYW5kIHVuaWNvZGUgdmVyc2lvbnMgb2YgaXQpIGNhbid0IHNuZWFrIGluXG4gIC8vIGFuZCBlc2NhcGUgdGhlIGNvbW1lbnQsIHRodXMgaW5qZWN0aW5nIGNvZGUgdGhhdCBnZXRzIGV2YWxlZC5cbiAgdmFyIHNvdXJjZVVSTCA9IGhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucywgJ3NvdXJjZVVSTCcpXG4gICAgPyAoJy8vIyBzb3VyY2VVUkw9JyArXG4gICAgICAgKG9wdGlvbnMuc291cmNlVVJMICsgJycpLnJlcGxhY2UoL1xccy9nLCAnICcpICtcbiAgICAgICAnXFxuJylcbiAgICA6ICcnO1xuXG4gIHN0cmluZy5yZXBsYWNlKHJlRGVsaW1pdGVycywgZnVuY3Rpb24obWF0Y2gsIGVzY2FwZVZhbHVlLCBpbnRlcnBvbGF0ZVZhbHVlLCBlc1RlbXBsYXRlVmFsdWUsIGV2YWx1YXRlVmFsdWUsIG9mZnNldCkge1xuICAgIGludGVycG9sYXRlVmFsdWUgfHwgKGludGVycG9sYXRlVmFsdWUgPSBlc1RlbXBsYXRlVmFsdWUpO1xuXG4gICAgLy8gRXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBjYW4ndCBiZSBpbmNsdWRlZCBpbiBzdHJpbmcgbGl0ZXJhbHMuXG4gICAgc291cmNlICs9IHN0cmluZy5zbGljZShpbmRleCwgb2Zmc2V0KS5yZXBsYWNlKHJlVW5lc2NhcGVkU3RyaW5nLCBlc2NhcGVTdHJpbmdDaGFyKTtcblxuICAgIC8vIFJlcGxhY2UgZGVsaW1pdGVycyB3aXRoIHNuaXBwZXRzLlxuICAgIGlmIChlc2NhcGVWYWx1ZSkge1xuICAgICAgaXNFc2NhcGluZyA9IHRydWU7XG4gICAgICBzb3VyY2UgKz0gXCInICtcXG5fX2UoXCIgKyBlc2NhcGVWYWx1ZSArIFwiKSArXFxuJ1wiO1xuICAgIH1cbiAgICBpZiAoZXZhbHVhdGVWYWx1ZSkge1xuICAgICAgaXNFdmFsdWF0aW5nID0gdHJ1ZTtcbiAgICAgIHNvdXJjZSArPSBcIic7XFxuXCIgKyBldmFsdWF0ZVZhbHVlICsgXCI7XFxuX19wICs9ICdcIjtcbiAgICB9XG4gICAgaWYgKGludGVycG9sYXRlVmFsdWUpIHtcbiAgICAgIHNvdXJjZSArPSBcIicgK1xcbigoX190ID0gKFwiICsgaW50ZXJwb2xhdGVWYWx1ZSArIFwiKSkgPT0gbnVsbCA/ICcnIDogX190KSArXFxuJ1wiO1xuICAgIH1cbiAgICBpbmRleCA9IG9mZnNldCArIG1hdGNoLmxlbmd0aDtcblxuICAgIC8vIFRoZSBKUyBlbmdpbmUgZW1iZWRkZWQgaW4gQWRvYmUgcHJvZHVjdHMgbmVlZHMgYG1hdGNoYCByZXR1cm5lZCBpblxuICAgIC8vIG9yZGVyIHRvIHByb2R1Y2UgdGhlIGNvcnJlY3QgYG9mZnNldGAgdmFsdWUuXG4gICAgcmV0dXJuIG1hdGNoO1xuICB9KTtcblxuICBzb3VyY2UgKz0gXCInO1xcblwiO1xuXG4gIC8vIElmIGB2YXJpYWJsZWAgaXMgbm90IHNwZWNpZmllZCB3cmFwIGEgd2l0aC1zdGF0ZW1lbnQgYXJvdW5kIHRoZSBnZW5lcmF0ZWRcbiAgLy8gY29kZSB0byBhZGQgdGhlIGRhdGEgb2JqZWN0IHRvIHRoZSB0b3Agb2YgdGhlIHNjb3BlIGNoYWluLlxuICB2YXIgdmFyaWFibGUgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMsICd2YXJpYWJsZScpICYmIG9wdGlvbnMudmFyaWFibGU7XG4gIGlmICghdmFyaWFibGUpIHtcbiAgICBzb3VyY2UgPSAnd2l0aCAob2JqKSB7XFxuJyArIHNvdXJjZSArICdcXG59XFxuJztcbiAgfVxuICAvLyBUaHJvdyBhbiBlcnJvciBpZiBhIGZvcmJpZGRlbiBjaGFyYWN0ZXIgd2FzIGZvdW5kIGluIGB2YXJpYWJsZWAsIHRvIHByZXZlbnRcbiAgLy8gcG90ZW50aWFsIGNvbW1hbmQgaW5qZWN0aW9uIGF0dGFja3MuXG4gIGVsc2UgaWYgKHJlRm9yYmlkZGVuSWRlbnRpZmllckNoYXJzLnRlc3QodmFyaWFibGUpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKElOVkFMSURfVEVNUExfVkFSX0VSUk9SX1RFWFQpO1xuICB9XG5cbiAgLy8gQ2xlYW51cCBjb2RlIGJ5IHN0cmlwcGluZyBlbXB0eSBzdHJpbmdzLlxuICBzb3VyY2UgPSAoaXNFdmFsdWF0aW5nID8gc291cmNlLnJlcGxhY2UocmVFbXB0eVN0cmluZ0xlYWRpbmcsICcnKSA6IHNvdXJjZSlcbiAgICAucmVwbGFjZShyZUVtcHR5U3RyaW5nTWlkZGxlLCAnJDEnKVxuICAgIC5yZXBsYWNlKHJlRW1wdHlTdHJpbmdUcmFpbGluZywgJyQxOycpO1xuXG4gIC8vIEZyYW1lIGNvZGUgYXMgdGhlIGZ1bmN0aW9uIGJvZHkuXG4gIHNvdXJjZSA9ICdmdW5jdGlvbignICsgKHZhcmlhYmxlIHx8ICdvYmonKSArICcpIHtcXG4nICtcbiAgICAodmFyaWFibGVcbiAgICAgID8gJydcbiAgICAgIDogJ29iaiB8fCAob2JqID0ge30pO1xcbidcbiAgICApICtcbiAgICBcInZhciBfX3QsIF9fcCA9ICcnXCIgK1xuICAgIChpc0VzY2FwaW5nXG4gICAgICAgPyAnLCBfX2UgPSBfLmVzY2FwZSdcbiAgICAgICA6ICcnXG4gICAgKSArXG4gICAgKGlzRXZhbHVhdGluZ1xuICAgICAgPyAnLCBfX2ogPSBBcnJheS5wcm90b3R5cGUuam9pbjtcXG4nICtcbiAgICAgICAgXCJmdW5jdGlvbiBwcmludCgpIHsgX19wICs9IF9fai5jYWxsKGFyZ3VtZW50cywgJycpIH1cXG5cIlxuICAgICAgOiAnO1xcbidcbiAgICApICtcbiAgICBzb3VyY2UgK1xuICAgICdyZXR1cm4gX19wXFxufSc7XG5cbiAgdmFyIHJlc3VsdCA9IGF0dGVtcHQoZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uKGltcG9ydHNLZXlzLCBzb3VyY2VVUkwgKyAncmV0dXJuICcgKyBzb3VyY2UpXG4gICAgICAuYXBwbHkodW5kZWZpbmVkLCBpbXBvcnRzVmFsdWVzKTtcbiAgfSk7XG5cbiAgLy8gUHJvdmlkZSB0aGUgY29tcGlsZWQgZnVuY3Rpb24ncyBzb3VyY2UgYnkgaXRzIGB0b1N0cmluZ2AgbWV0aG9kIG9yXG4gIC8vIHRoZSBgc291cmNlYCBwcm9wZXJ0eSBhcyBhIGNvbnZlbmllbmNlIGZvciBpbmxpbmluZyBjb21waWxlZCB0ZW1wbGF0ZXMuXG4gIHJlc3VsdC5zb3VyY2UgPSBzb3VyY2U7XG4gIGlmIChpc0Vycm9yKHJlc3VsdCkpIHtcbiAgICB0aHJvdyByZXN1bHQ7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdGVtcGxhdGU7XG4iLCAiaW1wb3J0IGJhc2VJbmRleE9mIGZyb20gJy4vX2Jhc2VJbmRleE9mLmpzJztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltRW5kYCB0byBnZXQgdGhlIGluZGV4IG9mIHRoZSBsYXN0IHN0cmluZyBzeW1ib2xcbiAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB1bm1hdGNoZWQgc3RyaW5nIHN5bWJvbC5cbiAqL1xuZnVuY3Rpb24gY2hhcnNFbmRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSB7XG4gIHZhciBpbmRleCA9IHN0clN5bWJvbHMubGVuZ3RoO1xuXG4gIHdoaWxlIChpbmRleC0tICYmIGJhc2VJbmRleE9mKGNoclN5bWJvbHMsIHN0clN5bWJvbHNbaW5kZXhdLCAwKSA+IC0xKSB7fVxuICByZXR1cm4gaW5kZXg7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNoYXJzRW5kSW5kZXg7XG4iLCAiaW1wb3J0IGJhc2VJbmRleE9mIGZyb20gJy4vX2Jhc2VJbmRleE9mLmpzJztcblxuLyoqXG4gKiBVc2VkIGJ5IGBfLnRyaW1gIGFuZCBgXy50cmltU3RhcnRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IHN0cmluZyBzeW1ib2xcbiAqIHRoYXQgaXMgbm90IGZvdW5kIGluIHRoZSBjaGFyYWN0ZXIgc3ltYm9scy5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtBcnJheX0gc3RyU3ltYm9scyBUaGUgc3RyaW5nIHN5bWJvbHMgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSB7QXJyYXl9IGNoclN5bWJvbHMgVGhlIGNoYXJhY3RlciBzeW1ib2xzIHRvIGZpbmQuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgdW5tYXRjaGVkIHN0cmluZyBzeW1ib2wuXG4gKi9cbmZ1bmN0aW9uIGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSB7XG4gIHZhciBpbmRleCA9IC0xLFxuICAgICAgbGVuZ3RoID0gc3RyU3ltYm9scy5sZW5ndGg7XG5cbiAgd2hpbGUgKCsraW5kZXggPCBsZW5ndGggJiYgYmFzZUluZGV4T2YoY2hyU3ltYm9scywgc3RyU3ltYm9sc1tpbmRleF0sIDApID4gLTEpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2hhcnNTdGFydEluZGV4O1xuIiwgImltcG9ydCBiYXNlVG9TdHJpbmcgZnJvbSAnLi9fYmFzZVRvU3RyaW5nLmpzJztcbmltcG9ydCBiYXNlVHJpbSBmcm9tICcuL19iYXNlVHJpbS5qcyc7XG5pbXBvcnQgY2FzdFNsaWNlIGZyb20gJy4vX2Nhc3RTbGljZS5qcyc7XG5pbXBvcnQgY2hhcnNFbmRJbmRleCBmcm9tICcuL19jaGFyc0VuZEluZGV4LmpzJztcbmltcG9ydCBjaGFyc1N0YXJ0SW5kZXggZnJvbSAnLi9fY2hhcnNTdGFydEluZGV4LmpzJztcbmltcG9ydCBzdHJpbmdUb0FycmF5IGZyb20gJy4vX3N0cmluZ1RvQXJyYXkuanMnO1xuaW1wb3J0IHRvU3RyaW5nIGZyb20gJy4vdG9TdHJpbmcuanMnO1xuXG4vKipcbiAqIFJlbW92ZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBvciBzcGVjaWZpZWQgY2hhcmFjdGVycyBmcm9tIGBzdHJpbmdgLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMy4wLjBcbiAqIEBjYXRlZ29yeSBTdHJpbmdcbiAqIEBwYXJhbSB7c3RyaW5nfSBbc3RyaW5nPScnXSBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcGFyYW0ge3N0cmluZ30gW2NoYXJzPXdoaXRlc3BhY2VdIFRoZSBjaGFyYWN0ZXJzIHRvIHRyaW0uXG4gKiBAcGFyYW0tIHtPYmplY3R9IFtndWFyZF0gRW5hYmxlcyB1c2UgYXMgYW4gaXRlcmF0ZWUgZm9yIG1ldGhvZHMgbGlrZSBgXy5tYXBgLlxuICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgdHJpbW1lZCBzdHJpbmcuXG4gKiBAZXhhbXBsZVxuICpcbiAqIF8udHJpbSgnICBhYmMgICcpO1xuICogLy8gPT4gJ2FiYydcbiAqXG4gKiBfLnRyaW0oJy1fLWFiYy1fLScsICdfLScpO1xuICogLy8gPT4gJ2FiYydcbiAqXG4gKiBfLm1hcChbJyAgZm9vICAnLCAnICBiYXIgICddLCBfLnRyaW0pO1xuICogLy8gPT4gWydmb28nLCAnYmFyJ11cbiAqL1xuZnVuY3Rpb24gdHJpbShzdHJpbmcsIGNoYXJzLCBndWFyZCkge1xuICBzdHJpbmcgPSB0b1N0cmluZyhzdHJpbmcpO1xuICBpZiAoc3RyaW5nICYmIChndWFyZCB8fCBjaGFycyA9PT0gdW5kZWZpbmVkKSkge1xuICAgIHJldHVybiBiYXNlVHJpbShzdHJpbmcpO1xuICB9XG4gIGlmICghc3RyaW5nIHx8ICEoY2hhcnMgPSBiYXNlVG9TdHJpbmcoY2hhcnMpKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgdmFyIHN0clN5bWJvbHMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyksXG4gICAgICBjaHJTeW1ib2xzID0gc3RyaW5nVG9BcnJheShjaGFycyksXG4gICAgICBzdGFydCA9IGNoYXJzU3RhcnRJbmRleChzdHJTeW1ib2xzLCBjaHJTeW1ib2xzKSxcbiAgICAgIGVuZCA9IGNoYXJzRW5kSW5kZXgoc3RyU3ltYm9scywgY2hyU3ltYm9scykgKyAxO1xuXG4gIHJldHVybiBjYXN0U2xpY2Uoc3RyU3ltYm9scywgc3RhcnQsIGVuZCkuam9pbignJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHRyaW07XG4iLCAiaW1wb3J0IHsgaXNGdW5jdGlvbiwgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5cclxuY29uc3QgQUVTX0dDTSA9ICdBRVMtR0NNJztcclxuY29uc3QgRk9STUFUX0pXSyA9ICdqd2snO1xyXG5cclxuZXhwb3J0IGNsYXNzIFBhc3NDcnlwdG8ge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICBjYW5Vc2UoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gIWlzTmlsKGNyeXB0bylcclxuICAgICAgJiYgIWlzTmlsKGNyeXB0by5zdWJ0bGUpXHJcbiAgICAgICYmIGlzRnVuY3Rpb24oY3J5cHRvLmdldFJhbmRvbVZhbHVlcylcclxuICAgICAgJiYgaXNGdW5jdGlvbihjcnlwdG8uc3VidGxlLmdlbmVyYXRlS2V5KVxyXG4gICAgICAmJiBpc0Z1bmN0aW9uKGNyeXB0by5zdWJ0bGUuZW5jcnlwdClcclxuICAgICAgJiYgaXNGdW5jdGlvbihjcnlwdG8uc3VidGxlLmRlY3J5cHQpXHJcbiAgICAgICYmIGlzRnVuY3Rpb24oY3J5cHRvLnN1YnRsZS5pbXBvcnRLZXkpXHJcbiAgICAgICYmIGlzRnVuY3Rpb24oY3J5cHRvLnN1YnRsZS5leHBvcnRLZXkpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZW5jcnlwdChtZXNzYWdlOiBzdHJpbmcpOiBQcm9taXNlPHsgZW5jcnlwdGVkOiBzdHJpbmcsIGtleT86IHN0cmluZywgdmVjdG9yPzogc3RyaW5nIH0+IHtcclxuICAgIGlmICh0aGlzLmNhblVzZSgpKSB7XHJcbiAgICAgIGNvbnN0IHZlY3RvciA9IGNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IFVpbnQ4QXJyYXkoMTIpKTtcclxuICAgICAgY29uc3Qga2V5ID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5nZW5lcmF0ZUtleSh7XHJcbiAgICAgICAgICBuYW1lOiBBRVNfR0NNLFxyXG4gICAgICAgICAgbGVuZ3RoOiAyNTZcclxuICAgICAgICB9LFxyXG4gICAgICAgIHRydWUsXHJcbiAgICAgICAgWyAnZW5jcnlwdCcsICdkZWNyeXB0JyBdKTtcclxuICAgICAgY29uc3QgZW5jcnlwdGVkID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5lbmNyeXB0KHtcclxuICAgICAgICAgIG5hbWU6IEFFU19HQ00sXHJcbiAgICAgICAgICBpdjogdmVjdG9yXHJcbiAgICAgICAgfSxcclxuICAgICAgICBrZXksXHJcbiAgICAgICAgbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKG1lc3NhZ2UpKTtcclxuICAgICAgY29uc3QgZXhwb3J0ZWRLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmV4cG9ydEtleShGT1JNQVRfSldLLCBrZXkpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGtleTogSlNPTi5zdHJpbmdpZnkoZXhwb3J0ZWRLZXkpLFxyXG4gICAgICAgIHZlY3RvcjogdGhpcy5idWZmZXJUb0Jhc2U2NCh2ZWN0b3IpLFxyXG4gICAgICAgIGVuY3J5cHRlZDogdGhpcy5idWZmZXJUb0Jhc2U2NChlbmNyeXB0ZWQpXHJcbiAgICAgIH07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGVuY3J5cHRlZDogdGhpcy5yZXZlcnNlU3RyaW5nKHRoaXMuc3RyaW5nVG9CYXNlNjQodGhpcy5yZXZlcnNlU3RyaW5nKG1lc3NhZ2UpKSlcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGRlY3J5cHQoZW5jcnlwdGVkOiBzdHJpbmcsIGtleT86IHN0cmluZywgdmVjdG9yPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGlmICh0aGlzLmNhblVzZSgpKSB7XHJcbiAgICAgIGlmIChrZXkgJiYgdmVjdG9yKSB7XHJcbiAgICAgICAgY29uc3Qga2V5T2JqZWN0ID0gSlNPTi5wYXJzZShrZXkpO1xyXG4gICAgICAgIGNvbnN0IHRoaXNLZXkgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmltcG9ydEtleShGT1JNQVRfSldLLCBrZXlPYmplY3QsIHtcclxuICAgICAgICAgICAgbmFtZTogQUVTX0dDTVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgWyAnZW5jcnlwdCcsICdkZWNyeXB0JyBdKTtcclxuICAgICAgICBjb25zdCBkZWNyeXB0ZWQgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRlY3J5cHQoe1xyXG4gICAgICAgICAgICBuYW1lOiBBRVNfR0NNLFxyXG4gICAgICAgICAgICBpdjogdGhpcy5iYXNlNjRUb0J1ZmZlcih2ZWN0b3IpXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpc0tleSxcclxuICAgICAgICAgIHRoaXMuYmFzZTY0VG9CdWZmZXIoZW5jcnlwdGVkKSk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0RGVjb2RlcigpLmRlY29kZShkZWNyeXB0ZWQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAneHgnO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHRoaXMucmV2ZXJzZVN0cmluZyh0aGlzLmJhc2U2NFRvU3RyaW5nKHRoaXMucmV2ZXJzZVN0cmluZyhlbmNyeXB0ZWQpKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1ZmZlclRvQmFzZTY0KGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHJlc3VsdCA9ICcnO1xyXG4gICAgbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKS5mb3JFYWNoKGIgPT4gcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYikpO1xyXG4gICAgcmV0dXJuIGJ0b2EocmVzdWx0KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmFzZTY0VG9CdWZmZXIoYmFzZTY0OiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XHJcbiAgICBjb25zdCBiaW5hcnlTdHJpbmcgPSBhdG9iKGJhc2U2NCk7XHJcbiAgICBjb25zdCBsZW4gPSBiaW5hcnlTdHJpbmcubGVuZ3RoO1xyXG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShsZW4pO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBieXRlc1tpXSA9IGJpbmFyeVN0cmluZy5jaGFyQ29kZUF0KGkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ5dGVzLmJ1ZmZlcjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmV2ZXJzZVN0cmluZyhzdHI6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gc3RyLnNwbGl0KCcnKS5yZXZlcnNlKCkuam9pbignJyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0cmluZ1RvQmFzZTY0KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBidG9hKHN0cik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJhc2U2NFRvU3RyaW5nKGJhc2U2NDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBhdG9iKGJhc2U2NCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgTGFuZ3VhZ2VXaXRoQXV0byB9IGZyb20gJy4vaTE4bic7XHJcbmltcG9ydCB7IFdwUHJvZmlsZSB9IGZyb20gJy4vd3AtcHJvZmlsZSc7XHJcbmltcG9ydCB7IENvbW1lbnRTdGF0dXMsIFBvc3RTdGF0dXMgfSBmcm9tICcuL3dwLWFwaSc7XHJcbmltcG9ydCB7IGlzTmlsLCBpc1VuZGVmaW5lZCB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IFNhZmVBbnkgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgUGFzc0NyeXB0byB9IGZyb20gJy4vcGFzcy1jcnlwdG8nO1xyXG5pbXBvcnQgeyBXUF9ERUZBVUxUX1BST0ZJTEVfTkFNRSB9IGZyb20gJy4vY29uc3RzJztcclxuXHJcblxyXG5leHBvcnQgY29uc3QgZW51bSBTZXR0aW5nc1ZlcnNpb24ge1xyXG4gIFYyID0gJzInXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBlbnVtIEFwaVR5cGUge1xyXG4gIFhNTF9SUEMgPSAneG1sLXJwYycsXHJcbiAgUmVzdEFQSV9taW5pT3JhbmdlID0gJ21pbmlPcmFuZ2UnLFxyXG4gIFJlc3RBcGlfQXBwbGljYXRpb25QYXNzd29yZHMgPSAnYXBwbGljYXRpb24tcGFzc3dvcmRzJyxcclxuICBSZXN0QXBpX1dwQ29tT0F1dGgyID0gJ1dwQ29tT0F1dGgyJ1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgZW51bSBNYXRoSmF4T3V0cHV0VHlwZSB7XHJcbiAgVGVYID0gJ3RleCcsXHJcbiAgU1ZHID0gJ3N2ZydcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGVudW0gQ29tbWVudENvbnZlcnRNb2RlIHtcclxuICBJZ25vcmUgPSAnaWdub3JlJyxcclxuICBIVE1MID0gJ2h0bWwnXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV29yZHByZXNzUGx1Z2luU2V0dGluZ3Mge1xyXG5cclxuICB2ZXJzaW9uPzogU2V0dGluZ3NWZXJzaW9uO1xyXG5cclxuICAvKipcclxuICAgKiBQbHVnaW4gbGFuZ3VhZ2UuXHJcbiAgICovXHJcbiAgbGFuZzogTGFuZ3VhZ2VXaXRoQXV0bztcclxuXHJcbiAgcHJvZmlsZXM6IFdwUHJvZmlsZVtdO1xyXG5cclxuICAvKipcclxuICAgKiBTaG93IHBsdWdpbiBpY29uIGluIHNpZGUuXHJcbiAgICovXHJcbiAgc2hvd1JpYmJvbkljb246IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgcG9zdCBzdGF0dXMuXHJcbiAgICovXHJcbiAgZGVmYXVsdFBvc3RTdGF0dXM6IFBvc3RTdGF0dXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIERlZmF1bHQgY29tbWVudCBzdGF0dXMuXHJcbiAgICovXHJcbiAgZGVmYXVsdENvbW1lbnRTdGF0dXM6IENvbW1lbnRTdGF0dXM7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlbWVtYmVyIGxhc3Qgc2VsZWN0ZWQgcG9zdCBjYXRlZ29yaWVzLlxyXG4gICAqL1xyXG4gIHJlbWVtYmVyTGFzdFNlbGVjdGVkQ2F0ZWdvcmllczogYm9vbGVhbjtcclxuXHJcbiAgLyoqXHJcbiAgICogSWYgV29yZFByZXNzIGVkaXQgY29uZmlybSBtb2RhbCB3aWxsIGJlIHNob3duIHdoZW4gcHVibGlzaGVkIHN1Y2Nlc3NmdWxseS5cclxuICAgKi9cclxuICBzaG93V29yZFByZXNzRWRpdENvbmZpcm06IGJvb2xlYW47XHJcblxyXG4gIG1hdGhKYXhPdXRwdXRUeXBlOiBNYXRoSmF4T3V0cHV0VHlwZTtcclxuXHJcbiAgY29tbWVudENvbnZlcnRNb2RlOiBDb21tZW50Q29udmVydE1vZGU7XHJcblxyXG4gIGVuYWJsZUh0bWw6IGJvb2xlYW47XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZXRoZXIgbWVkaWEgbGlua3Mgc2hvdWxkIGJlIHJlcGxhY2VkIGFmdGVyIHVwbG9hZGluZyB0byBXb3JkUHJlc3MuXHJcbiAgICovXHJcbiAgcmVwbGFjZU1lZGlhTGlua3M6IGJvb2xlYW47XHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFVFRJTkdTOiBXb3JkcHJlc3NQbHVnaW5TZXR0aW5ncyA9IHtcclxuICBsYW5nOiAnYXV0bycsXHJcbiAgcHJvZmlsZXM6IFtdLFxyXG4gIHNob3dSaWJib25JY29uOiBmYWxzZSxcclxuICBkZWZhdWx0UG9zdFN0YXR1czogUG9zdFN0YXR1cy5EcmFmdCxcclxuICBkZWZhdWx0Q29tbWVudFN0YXR1czogQ29tbWVudFN0YXR1cy5PcGVuLFxyXG4gIHJlbWVtYmVyTGFzdFNlbGVjdGVkQ2F0ZWdvcmllczogdHJ1ZSxcclxuICBzaG93V29yZFByZXNzRWRpdENvbmZpcm06IGZhbHNlLFxyXG4gIG1hdGhKYXhPdXRwdXRUeXBlOiBNYXRoSmF4T3V0cHV0VHlwZS5TVkcsXHJcbiAgY29tbWVudENvbnZlcnRNb2RlOiBDb21tZW50Q29udmVydE1vZGUuSWdub3JlLFxyXG4gIGVuYWJsZUh0bWw6IGZhbHNlLFxyXG4gIHJlcGxhY2VNZWRpYUxpbmtzOiB0cnVlLFxyXG59XHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdXBncmFkZVNldHRpbmdzKFxyXG4gIGV4aXN0aW5nU2V0dGluZ3M6IFNhZmVBbnksXHJcbiAgdG86IFNldHRpbmdzVmVyc2lvblxyXG4pOiBQcm9taXNlPHsgbmVlZFVwZ3JhZGU6IGJvb2xlYW4sIHNldHRpbmdzOiBXb3JkcHJlc3NQbHVnaW5TZXR0aW5ncyB9PiB7XHJcbiAgY29uc29sZS5sb2coZXhpc3RpbmdTZXR0aW5ncywgdG8pO1xyXG4gIGlmIChpc1VuZGVmaW5lZChleGlzdGluZ1NldHRpbmdzLnZlcnNpb24pKSB7XHJcbiAgICAvLyBWMVxyXG4gICAgaWYgKHRvID09PSBTZXR0aW5nc1ZlcnNpb24uVjIpIHtcclxuICAgICAgY29uc3QgbmV3U2V0dGluZ3M6IFdvcmRwcmVzc1BsdWdpblNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9TRVRUSU5HUywge1xyXG4gICAgICAgIHZlcnNpb246IFNldHRpbmdzVmVyc2lvbi5WMixcclxuICAgICAgICBsYW5nOiBleGlzdGluZ1NldHRpbmdzLmxhbmcsXHJcbiAgICAgICAgc2hvd1JpYmJvbkljb246IGV4aXN0aW5nU2V0dGluZ3Muc2hvd1JpYmJvbkljb24sXHJcbiAgICAgICAgZGVmYXVsdFBvc3RTdGF0dXM6IGV4aXN0aW5nU2V0dGluZ3MuZGVmYXVsdFBvc3RTdGF0dXMsXHJcbiAgICAgICAgZGVmYXVsdENvbW1lbnRTdGF0dXM6IGV4aXN0aW5nU2V0dGluZ3MuZGVmYXVsdENvbW1lbnRTdGF0dXMsXHJcbiAgICAgICAgZGVmYXVsdFBvc3RUeXBlOiAncG9zdCcsXHJcbiAgICAgICAgcmVtZW1iZXJMYXN0U2VsZWN0ZWRDYXRlZ29yaWVzOiBleGlzdGluZ1NldHRpbmdzLnJlbWVtYmVyTGFzdFNlbGVjdGVkQ2F0ZWdvcmllcyxcclxuICAgICAgICBzaG93V29yZFByZXNzRWRpdENvbmZpcm06IGV4aXN0aW5nU2V0dGluZ3Muc2hvd1dvcmRQcmVzc0VkaXRDb25maXJtLFxyXG4gICAgICAgIG1hdGhKYXhPdXRwdXRUeXBlOiBleGlzdGluZ1NldHRpbmdzLm1hdGhKYXhPdXRwdXRUeXBlLFxyXG4gICAgICAgIGNvbW1lbnRDb252ZXJ0TW9kZTogZXhpc3RpbmdTZXR0aW5ncy5jb21tZW50Q29udmVydE1vZGUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoZXhpc3RpbmdTZXR0aW5ncy5lbmRwb2ludCkge1xyXG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gZXhpc3RpbmdTZXR0aW5ncy5lbmRwb2ludDtcclxuICAgICAgICBjb25zdCBhcGlUeXBlID0gZXhpc3RpbmdTZXR0aW5ncy5hcGlUeXBlO1xyXG4gICAgICAgIGNvbnN0IHhtbFJwY1BhdGggPSBleGlzdGluZ1NldHRpbmdzLnhtbFJwY1BhdGg7XHJcbiAgICAgICAgY29uc3QgdXNlcm5hbWUgPSBleGlzdGluZ1NldHRpbmdzLnVzZXJuYW1lO1xyXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkID0gZXhpc3RpbmdTZXR0aW5ncy5wYXNzd29yZDtcclxuICAgICAgICBjb25zdCBsYXN0U2VsZWN0ZWRDYXRlZ29yaWVzID0gZXhpc3RpbmdTZXR0aW5ncy5sYXN0U2VsZWN0ZWRDYXRlZ29yaWVzO1xyXG4gICAgICAgIGNvbnN0IGNyeXB0byA9IG5ldyBQYXNzQ3J5cHRvKCk7XHJcbiAgICAgICAgY29uc3QgZW5jcnlwdGVkUGFzc3dvcmQgPSBhd2FpdCBjcnlwdG8uZW5jcnlwdChwYXNzd29yZCk7XHJcbiAgICAgICAgY29uc3QgcHJvZmlsZSA9IHtcclxuICAgICAgICAgIG5hbWU6IFdQX0RFRkFVTFRfUFJPRklMRV9OQU1FLFxyXG4gICAgICAgICAgYXBpVHlwZTogYXBpVHlwZSxcclxuICAgICAgICAgIGVuZHBvaW50OiBlbmRwb2ludCxcclxuICAgICAgICAgIHhtbFJwY1BhdGg6IHhtbFJwY1BhdGgsXHJcbiAgICAgICAgICBzYXZlVXNlcm5hbWU6ICFpc05pbCh1c2VybmFtZSksXHJcbiAgICAgICAgICBzYXZlUGFzc3dvcmQ6ICFpc05pbChwYXNzd29yZCksXHJcbiAgICAgICAgICBpc0RlZmF1bHQ6IHRydWUsXHJcbiAgICAgICAgICBsYXN0U2VsZWN0ZWRDYXRlZ29yaWVzOiBsYXN0U2VsZWN0ZWRDYXRlZ29yaWVzLFxyXG4gICAgICAgICAgdXNlcm5hbWU6IHVzZXJuYW1lLFxyXG4gICAgICAgICAgZW5jcnlwdGVkUGFzc3dvcmQ6IGVuY3J5cHRlZFBhc3N3b3JkXHJcbiAgICAgICAgfTtcclxuICAgICAgICBuZXdTZXR0aW5ncy5wcm9maWxlcyA9IFtcclxuICAgICAgICAgIHByb2ZpbGVcclxuICAgICAgICBdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld1NldHRpbmdzLnByb2ZpbGVzID0gW107XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBuZWVkVXBncmFkZTogdHJ1ZSxcclxuICAgICAgICBzZXR0aW5nczogbmV3U2V0dGluZ3NcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIG5lZWRVcGdyYWRlOiBmYWxzZSxcclxuICAgIHNldHRpbmdzOiBleGlzdGluZ1NldHRpbmdzXHJcbiAgfTtcclxufVxyXG4iLCAiaW1wb3J0IHsgYXJyYXlCdWZmZXJUb0Jhc2U2NCwgcmVxdWVzdCB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNBcnJheUJ1ZmZlciwgaXNCb29sZWFuLCBpc0RhdGUsIGlzTnVtYmVyLCBpc09iamVjdCwgaXNTYWZlSW50ZWdlciB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IGZvcm1hdCwgcGFyc2UgfSBmcm9tICdkYXRlLWZucyc7XHJcbmltcG9ydCB7IFNhZmVBbnkgfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmludGVyZmFjZSBYbWxScGNPcHRpb25zIHtcclxuICB1cmw6IFVSTDtcclxuICB4bWxScGNQYXRoOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBYbWxScGNDbGllbnQge1xyXG5cclxuICAvKipcclxuICAgKiBIcmVmIHdpdGhvdXQgJy8nIGF0IHRoZSB2ZXJ5IGVuZC5cclxuICAgKiBAcHJpdmF0ZVxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgaHJlZjogc3RyaW5nO1xyXG5cclxuICAvKipcclxuICAgKiBYTUwtUlBDIHBhdGggd2l0aG91dCAnLycgYXQgdGhlIGJlZ2lubmluZyBvciBlbmQuXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IHhtbFJwY1BhdGg6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlbmRwb2ludDogc3RyaW5nO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogWG1sUnBjT3B0aW9uc1xyXG4gICkge1xyXG4gICAgY29uc29sZS5sb2cob3B0aW9ucyk7XHJcblxyXG4gICAgdGhpcy5ocmVmID0gdGhpcy5vcHRpb25zLnVybC5ocmVmO1xyXG4gICAgaWYgKHRoaXMuaHJlZi5lbmRzV2l0aCgnLycpKSB7XHJcbiAgICAgIHRoaXMuaHJlZiA9IHRoaXMuaHJlZi5zdWJzdHJpbmcoMCwgdGhpcy5ocmVmLmxlbmd0aCAtIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMueG1sUnBjUGF0aCA9IHRoaXMub3B0aW9ucy54bWxScGNQYXRoID8/ICcnO1xyXG4gICAgaWYgKHRoaXMueG1sUnBjUGF0aC5zdGFydHNXaXRoKCcvJykpIHtcclxuICAgICAgdGhpcy54bWxScGNQYXRoID0gdGhpcy54bWxScGNQYXRoLnN1YnN0cmluZygxKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnhtbFJwY1BhdGguZW5kc1dpdGgoJy8nKSkge1xyXG4gICAgICB0aGlzLnhtbFJwY1BhdGggPSB0aGlzLnhtbFJwY1BhdGguc3Vic3RyaW5nKDAsIHRoaXMueG1sUnBjUGF0aC5sZW5ndGggLSAxKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmVuZHBvaW50ID0gYCR7dGhpcy5ocmVmfS8ke3RoaXMueG1sUnBjUGF0aH1gO1xyXG4gIH1cclxuXHJcbiAgbWV0aG9kQ2FsbChcclxuICAgIG1ldGhvZDogc3RyaW5nLFxyXG4gICAgcGFyYW1zOiB1bmtub3duXHJcbiAgKTogUHJvbWlzZTx1bmtub3duPiB7XHJcbiAgICBjb25zdCB4bWwgPSB0aGlzLm9iamVjdFRvWG1sKG1ldGhvZCwgcGFyYW1zKTtcclxuICAgIGNvbnNvbGUubG9nKGBFbmRwb2ludDogJHt0aGlzLmVuZHBvaW50fSwgJHttZXRob2R9LCByZXF1ZXN0OiAke3htbH1gLCBwYXJhbXMpO1xyXG4gICAgcmV0dXJuIHJlcXVlc3Qoe1xyXG4gICAgICB1cmw6IHRoaXMuZW5kcG9pbnQsXHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICd0ZXh0L3htbCcsXHJcbiAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2JzaWRpYW4ubWQnXHJcbiAgICAgIH0sXHJcbiAgICAgIGJvZHk6IHhtbFxyXG4gICAgfSlcclxuICAgICAgLnRoZW4ocmVzID0+IHRoaXMucmVzcG9uc2VYbWxUb09iamVjdChyZXMpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgb2JqZWN0VG9YbWwobWV0aG9kOiBzdHJpbmcsIC4uLm9iajogdW5rbm93bltdKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGRvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCcnLCAnJywgbnVsbCk7XHJcbiAgICBjb25zdCBtZXRob2RDYWxsID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ21ldGhvZENhbGwnKTtcclxuXHJcbiAgICBkb2MuYXBwZW5kQ2hpbGQobWV0aG9kQ2FsbCk7XHJcbiAgICBjb25zdCBwaSA9IGRvYy5jcmVhdGVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3htbCcsICd2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJVVEYtOFwiJyk7XHJcbiAgICBkb2MuaW5zZXJ0QmVmb3JlKHBpLCBkb2MuZmlyc3RDaGlsZCk7XHJcblxyXG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IGRvYy5jcmVhdGVFbGVtZW50KCdtZXRob2ROYW1lJyk7XHJcbiAgICBtZXRob2ROYW1lLmFwcGVuZFRleHQobWV0aG9kKTtcclxuICAgIGNvbnN0IHBhcmFtcyA9IGRvYy5jcmVhdGVFbGVtZW50KCdwYXJhbXMnKTtcclxuICAgIG1ldGhvZENhbGwuYXBwZW5kQ2hpbGQobWV0aG9kTmFtZSk7XHJcbiAgICBtZXRob2RDYWxsLmFwcGVuZENoaWxkKHBhcmFtcyk7XHJcbiAgICBvYmouZm9yRWFjaChpdCA9PiB0aGlzLmNyZWF0ZVBhcmFtKGl0LCBwYXJhbXMsIGRvYykpO1xyXG4gICAgcmV0dXJuIG5ldyBYTUxTZXJpYWxpemVyKCkuc2VyaWFsaXplVG9TdHJpbmcoZG9jKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUGFyYW0ob2JqOiB1bmtub3duLCBwYXJhbXM6IEhUTUxFbGVtZW50LCBkb2M6IFhNTERvY3VtZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXJhbSA9IGRvYy5jcmVhdGVFbGVtZW50KCdwYXJhbScpO1xyXG4gICAgcGFyYW1zLmFwcGVuZENoaWxkKHBhcmFtKTtcclxuICAgIHRoaXMuY3JlYXRlVmFsdWUob2JqLCBwYXJhbSwgZG9jKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlVmFsdWUoZGF0YTogdW5rbm93biwgcGFyZW50OiBIVE1MRWxlbWVudCwgZG9jOiBYTUxEb2N1bWVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgdmFsdWUgPSBkb2MuY3JlYXRlRWxlbWVudCgndmFsdWUnKTtcclxuICAgIHBhcmVudC5hcHBlbmRDaGlsZCh2YWx1ZSk7XHJcbiAgICBpZiAoaXNTYWZlSW50ZWdlcihkYXRhKSkge1xyXG4gICAgICBjb25zdCBpNCA9IGRvYy5jcmVhdGVFbGVtZW50KCdpNCcpO1xyXG4gICAgICBpNC5hcHBlbmRUZXh0KChkYXRhIGFzIFNhZmVBbnkpLnRvU3RyaW5nKCkpO1xyXG4gICAgICB2YWx1ZS5hcHBlbmRDaGlsZChpNCk7XHJcbiAgICB9IGVsc2UgaWYgKGlzTnVtYmVyKGRhdGEpKSB7XHJcbiAgICAgIGNvbnN0IGRvdWJsZSA9IGRvYy5jcmVhdGVFbGVtZW50KCdkb3VibGUnKTtcclxuICAgICAgZG91YmxlLmFwcGVuZFRleHQoKGRhdGEgYXMgU2FmZUFueSkudG9TdHJpbmcoKSk7XHJcbiAgICAgIHZhbHVlLmFwcGVuZENoaWxkKGRvdWJsZSk7XHJcbiAgICB9IGVsc2UgaWYgKGlzQm9vbGVhbihkYXRhKSkge1xyXG4gICAgICBjb25zdCBib29sZWFuID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2Jvb2xlYW4nKTtcclxuICAgICAgYm9vbGVhbi5hcHBlbmRUZXh0KGRhdGEgPyAnMScgOiAnMCcpO1xyXG4gICAgICB2YWx1ZS5hcHBlbmRDaGlsZChib29sZWFuKTtcclxuICAgIH0gZWxzZSBpZiAoaXNEYXRlKGRhdGEpKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBkb2MuY3JlYXRlRWxlbWVudCgnZGF0ZVRpbWUuaXNvODYwMScpO1xyXG4gICAgICBkYXRlLmFwcGVuZFRleHQoZm9ybWF0KGRhdGEgYXMgRGF0ZSwgXCJ5eXl5TU1kZCdUJ0hIOm1tOnNzXCIpKTtcclxuICAgICAgdmFsdWUuYXBwZW5kQ2hpbGQoZGF0ZSk7XHJcbiAgICB9IGVsc2UgaWYgKGlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgY29uc3QgYXJyYXkgPSBkb2MuY3JlYXRlRWxlbWVudCgnYXJyYXknKTtcclxuICAgICAgY29uc3QgYXJyYXlEYXRhID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2RhdGEnKTtcclxuICAgICAgYXJyYXkuYXBwZW5kQ2hpbGQoYXJyYXlEYXRhKTtcclxuICAgICAgKGRhdGEgYXMgdW5rbm93bltdKS5mb3JFYWNoKGl0ID0+IHRoaXMuY3JlYXRlVmFsdWUoaXQsIGFycmF5RGF0YSwgZG9jKSk7XHJcbiAgICAgIHZhbHVlLmFwcGVuZENoaWxkKGFycmF5KTtcclxuICAgIH0gZWxzZSBpZiAoaXNBcnJheUJ1ZmZlcihkYXRhKSkge1xyXG4gICAgICBjb25zdCBiYXNlNjQgPSBkb2MuY3JlYXRlRWxlbWVudCgnYmFzZTY0Jyk7XHJcbiAgICAgIGJhc2U2NC5zZXRUZXh0KGFycmF5QnVmZmVyVG9CYXNlNjQoZGF0YSkpO1xyXG4gICAgICB2YWx1ZS5hcHBlbmRDaGlsZChiYXNlNjQpO1xyXG4gICAgfSBlbHNlIGlmIChpc09iamVjdChkYXRhKSkge1xyXG4gICAgICBjb25zdCBzdHJ1Y3QgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3RydWN0Jyk7XHJcbiAgICAgIGZvciAoY29uc3QgWyBwcm9wTmFtZSwgcHJvcFZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhkYXRhKSkge1xyXG4gICAgICAgIGNvbnN0IG1lbWJlciA9IGRvYy5jcmVhdGVFbGVtZW50KCdtZW1iZXInKTtcclxuICAgICAgICBzdHJ1Y3QuYXBwZW5kQ2hpbGQobWVtYmVyKTtcclxuICAgICAgICBjb25zdCBtZW1iZXJOYW1lID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ25hbWUnKTtcclxuICAgICAgICBtZW1iZXJOYW1lLnNldFRleHQocHJvcE5hbWUpO1xyXG4gICAgICAgIG1lbWJlci5hcHBlbmRDaGlsZChtZW1iZXJOYW1lKTtcclxuICAgICAgICB0aGlzLmNyZWF0ZVZhbHVlKHByb3BWYWx1ZSwgbWVtYmVyLCBkb2MpO1xyXG4gICAgICB9XHJcbiAgICAgIHZhbHVlLmFwcGVuZENoaWxkKHN0cnVjdCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBzdHJpbmcgPSBkb2MuY3JlYXRlRWxlbWVudCgnc3RyaW5nJyk7XHJcbiAgICAgIGNvbnN0IGNkYXRhID0gZG9jLmNyZWF0ZUNEQVRBU2VjdGlvbigoZGF0YSBhcyBTYWZlQW55KS50b1N0cmluZygpKTtcclxuICAgICAgc3RyaW5nLmFwcGVuZENoaWxkKGNkYXRhKTtcclxuICAgICAgdmFsdWUuYXBwZW5kQ2hpbGQoc3RyaW5nKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVzcG9uc2VYbWxUb09iamVjdCh4bWw6IHN0cmluZyk6IHVua25vd24ge1xyXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IERPTVBhcnNlcigpO1xyXG4gICAgY29uc3QgZG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyh4bWwsICdhcHBsaWNhdGlvbi94bWwnKTtcclxuICAgIGNvbnN0IG1ldGhvZFJlc3BvbnNlID0gZG9jLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdtZXRob2RSZXNwb25zZScpWzBdO1xyXG4gICAgY29uc3QgZmF1bHRzID0gbWV0aG9kUmVzcG9uc2UuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2ZhdWx0Jyk7XHJcbiAgICBsZXQgcmVzcG9uc2U6IHVua25vd247XHJcbiAgICBpZiAoZmF1bHRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgZmF1bHRWYWx1ZSA9IGZhdWx0c1swXVxyXG4gICAgICAgIC5jaGlsZHJlblswXSAvLyA8dmFsdWU+XHJcbiAgICAgICAgLmNoaWxkcmVuWzBdO1xyXG4gICAgICByZXNwb25zZSA9IHRoaXMuZnJvbUVsZW1lbnQoZmF1bHRWYWx1ZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXNwb25zZVZhbHVlID0gbWV0aG9kUmVzcG9uc2VcclxuICAgICAgICAuY2hpbGRyZW5bMF0gLy8gPHBhcmFtcz5cclxuICAgICAgICAuY2hpbGRyZW5bMF0gLy8gPHBhcmFtPlxyXG4gICAgICAgIC5jaGlsZHJlblswXSAvLyA8dmFsdWU+XHJcbiAgICAgICAgLmNoaWxkcmVuWzBdO1xyXG4gICAgICByZXNwb25zZSA9IHRoaXMuZnJvbUVsZW1lbnQocmVzcG9uc2VWYWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhgcmVzcG9uc2U6ICR7eG1sfWAsIHJlc3BvbnNlKTtcclxuICAgIHJldHVybiByZXNwb25zZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZnJvbUVsZW1lbnQoZWxlbWVudDogRWxlbWVudCk6IHVua25vd24ge1xyXG4gICAgY29uc3QgdGFnTmFtZSA9IGVsZW1lbnQudGFnTmFtZTtcclxuICAgIGlmICh0YWdOYW1lID09PSAnc3RyaW5nJykge1xyXG4gICAgICByZXR1cm4gZWxlbWVudC5nZXRUZXh0KCk7XHJcbiAgICB9IGVsc2UgaWYgKHRhZ05hbWUgPT09ICdpNCcgfHwgdGFnTmFtZSA9PT0gJ2ludCcpIHtcclxuICAgICAgcmV0dXJuIGVsZW1lbnQuZ2V0VGV4dCgpO1xyXG4gICAgfSBlbHNlIGlmICh0YWdOYW1lID09PSAnZG91YmxlJykge1xyXG4gICAgICByZXR1cm4gZWxlbWVudC5nZXRUZXh0KCk7XHJcbiAgICB9IGVsc2UgaWYgKHRhZ05hbWUgPT09ICdib29sZWFuJykge1xyXG4gICAgICByZXR1cm4gZWxlbWVudC5nZXRUZXh0KCkgPT09ICcxJztcclxuICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ2RhdGVUaW1lLmlzbzg2MDEnKSB7XHJcbiAgICAgIGNvbnN0IGRhdGV0aW1lID0gZWxlbWVudC5nZXRUZXh0KCk7XHJcbiAgICAgIGlmIChkYXRldGltZSkge1xyXG4gICAgICAgIHJldHVybiBwYXJzZShkYXRldGltZSwgXCJ5eXl5TU1kZCdUJ0hIOm1tOnNzXCIsIG5ldyBEYXRlKCkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBuZXcgRGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKHRhZ05hbWUgPT09ICdhcnJheScpIHtcclxuICAgICAgY29uc3QgYXJyYXkgPSBbXTtcclxuICAgICAgY29uc3QgYXJyYXlWYWx1ZXMgPSBlbGVtZW50XHJcbiAgICAgICAgLmNoaWxkcmVuWzBdIC8vIDxkYXRhPlxyXG4gICAgICAgIC5jaGlsZHJlbjsgLy8gPHZhbHVlPnNcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcnJheVZhbHVlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGFycmF5LnB1c2godGhpcy5mcm9tRWxlbWVudChhcnJheVZhbHVlc1tpXS5jaGlsZHJlblswXSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBhcnJheTtcclxuICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ3N0cnVjdCcpIHtcclxuICAgICAgY29uc3Qgc3RydWN0OiBTYWZlQW55ID0ge307XHJcbiAgICAgIGNvbnN0IG1lbWJlcnMgPSBlbGVtZW50LmNoaWxkcmVuOyAvLyA8bWVtYmVyPnNcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtZW1iZXJzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgbWVtYmVyID0gbWVtYmVyc1tpXTtcclxuICAgICAgICBsZXQgbmFtZTtcclxuICAgICAgICBsZXQgdmFsdWU7XHJcbiAgICAgICAgZm9yIChsZXQgbWVtYmVySW5kZXggPSAwOyBtZW1iZXJJbmRleCA8IG1lbWJlci5jaGlsZHJlbi5sZW5ndGg7IG1lbWJlckluZGV4KyspIHtcclxuICAgICAgICAgIGNvbnN0IHByb3AgPSBtZW1iZXIuY2hpbGRyZW5bbWVtYmVySW5kZXhdO1xyXG4gICAgICAgICAgaWYgKHByb3AudGFnTmFtZSA9PT0gJ25hbWUnKSB7XHJcbiAgICAgICAgICAgIG5hbWUgPSBwcm9wO1xyXG4gICAgICAgICAgfSBlbHNlIGlmIChwcm9wLnRhZ05hbWUgPT09ICd2YWx1ZScpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBwcm9wLmNoaWxkcmVuWzBdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBjb25zdCBuYW1lID0gbWVtYmVyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCduYW1lJylbMF07XHJcbiAgICAgICAgLy8gY29uc3QgdmFsdWUgPSBtZW1iZXIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZhbHVlJylbMF0uY2hpbGRyZW5bMF07XHJcbiAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUpIHtcclxuICAgICAgICAgIHN0cnVjdFtuYW1lLmdldFRleHQoKV0gPSB0aGlzLmZyb21FbGVtZW50KHZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHN0cnVjdDtcclxuICAgIH1cclxuICB9XHJcblxyXG59XHJcbiIsICIvKipcbiAqIEBtb2R1bGUgY29uc3RhbnRzXG4gKiBAc3VtbWFyeSBVc2VmdWwgY29uc3RhbnRzXG4gKiBAZGVzY3JpcHRpb25cbiAqIENvbGxlY3Rpb24gb2YgdXNlZnVsIGRhdGUgY29uc3RhbnRzLlxuICpcbiAqIFRoZSBjb25zdGFudHMgY291bGQgYmUgaW1wb3J0ZWQgZnJvbSBgZGF0ZS1mbnMvY29uc3RhbnRzYDpcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgbWF4VGltZSwgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBmdW5jdGlvbiBpc0FsbG93ZWRUaW1lKHRpbWUpIHtcbiAqICAgcmV0dXJuIHRpbWUgPD0gbWF4VGltZSAmJiB0aW1lID49IG1pblRpbWU7XG4gKiB9XG4gKiBgYGBcbiAqL1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgZGF5c0luV2Vla1xuICogQHN1bW1hcnkgRGF5cyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBkYXlzSW5XZWVrID0gNztcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIGRheXNJblllYXJcbiAqIEBzdW1tYXJ5IERheXMgaW4gMSB5ZWFyLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogSG93IG1hbnkgZGF5cyBpbiBhIHllYXIuXG4gKlxuICogT25lIHllYXJzIGVxdWFscyAzNjUuMjQyNSBkYXlzIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpcbiAqXG4gKiA+IExlYXAgeWVhciBvY2N1cnMgZXZlcnkgNCB5ZWFycywgZXhjZXB0IGZvciB5ZWFycyB0aGF0IGFyZSBkaXZpc2libGUgYnkgMTAwIGFuZCBub3QgZGl2aXNpYmxlIGJ5IDQwMC5cbiAqID4gMSBtZWFuIHllYXIgPSAoMzY1KzEvNC0xLzEwMCsxLzQwMCkgZGF5cyA9IDM2NS4yNDI1IGRheXNcbiAqL1xuZXhwb3J0IGNvbnN0IGRheXNJblllYXIgPSAzNjUuMjQyNTtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1heFRpbWVcbiAqIEBzdW1tYXJ5IE1heGltdW0gYWxsb3dlZCB0aW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbXBvcnQgeyBtYXhUaW1lIH0gZnJvbSBcIi4vY29uc3RhbnRzL2RhdGUtZm5zL2NvbnN0YW50c1wiO1xuICpcbiAqIGNvbnN0IGlzVmFsaWQgPSA4NjQwMDAwMDAwMDAwMDAxIDw9IG1heFRpbWU7XG4gKiAvLz0+IGZhbHNlXG4gKlxuICogbmV3IERhdGUoODY0MDAwMDAwMDAwMDAwMSk7XG4gKiAvLz0+IEludmFsaWQgRGF0ZVxuICovXG5leHBvcnQgY29uc3QgbWF4VGltZSA9IE1hdGgucG93KDEwLCA4KSAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW5UaW1lXG4gKiBAc3VtbWFyeSBNaW5pbXVtIGFsbG93ZWQgdGltZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogaW1wb3J0IHsgbWluVGltZSB9IGZyb20gXCIuL2NvbnN0YW50cy9kYXRlLWZucy9jb25zdGFudHNcIjtcbiAqXG4gKiBjb25zdCBpc1ZhbGlkID0gLTg2NDAwMDAwMDAwMDAwMDEgPj0gbWluVGltZTtcbiAqIC8vPT4gZmFsc2VcbiAqXG4gKiBuZXcgRGF0ZSgtODY0MDAwMDAwMDAwMDAwMSlcbiAqIC8vPT4gSW52YWxpZCBEYXRlXG4gKi9cbmV4cG9ydCBjb25zdCBtaW5UaW1lID0gLW1heFRpbWU7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIHdlZWsuXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJbldlZWsgPSA2MDQ4MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgZGF5LlxuICovXG5leHBvcnQgY29uc3QgbWlsbGlzZWNvbmRzSW5EYXkgPSA4NjQwMDAwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbGxpc2Vjb25kc0luTWludXRlXG4gKiBAc3VtbWFyeSBNaWxsaXNlY29uZHMgaW4gMSBtaW51dGVcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luTWludXRlID0gNjAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IE1pbGxpc2Vjb25kcyBpbiAxIGhvdXJcbiAqL1xuZXhwb3J0IGNvbnN0IG1pbGxpc2Vjb25kc0luSG91ciA9IDM2MDAwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaWxsaXNlY29uZHNJblNlY29uZFxuICogQHN1bW1hcnkgTWlsbGlzZWNvbmRzIGluIDEgc2Vjb25kXG4gKi9cbmV4cG9ydCBjb25zdCBtaWxsaXNlY29uZHNJblNlY29uZCA9IDEwMDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5ZZWFyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJblllYXIgPSA1MjU2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Nb250aFxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIG1vbnRoLlxuICovXG5leHBvcnQgY29uc3QgbWludXRlc0luTW9udGggPSA0MzIwMDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1pbnV0ZXNJbkRheVxuICogQHN1bW1hcnkgTWludXRlcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkRheSA9IDE0NDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtaW51dGVzSW5Ib3VyXG4gKiBAc3VtbWFyeSBNaW51dGVzIGluIDEgaG91ci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1pbnV0ZXNJbkhvdXIgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIG1vbnRoc0luUXVhcnRlclxuICogQHN1bW1hcnkgTW9udGhzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IG1vbnRoc0luUXVhcnRlciA9IDM7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBtb250aHNJblllYXJcbiAqIEBzdW1tYXJ5IE1vbnRocyBpbiAxIHllYXIuXG4gKi9cbmV4cG9ydCBjb25zdCBtb250aHNJblllYXIgPSAxMjtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHF1YXJ0ZXJzSW5ZZWFyXG4gKiBAc3VtbWFyeSBRdWFydGVycyBpbiAxIHllYXJcbiAqL1xuZXhwb3J0IGNvbnN0IHF1YXJ0ZXJzSW5ZZWFyID0gNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkhvdXJcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBob3VyLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luSG91ciA9IDM2MDA7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5NaW51dGVcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtaW51dGUuXG4gKi9cbmV4cG9ydCBjb25zdCBzZWNvbmRzSW5NaW51dGUgPSA2MDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbkRheVxuICogQHN1bW1hcnkgU2Vjb25kcyBpbiAxIGRheS5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJbkRheSA9IHNlY29uZHNJbkhvdXIgKiAyNDtcblxuLyoqXG4gKiBAY29uc3RhbnRcbiAqIEBuYW1lIHNlY29uZHNJbldlZWtcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSB3ZWVrLlxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luV2VlayA9IHNlY29uZHNJbkRheSAqIDc7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5ZZWFyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgeWVhci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblllYXIgPSBzZWNvbmRzSW5EYXkgKiBkYXlzSW5ZZWFyO1xuXG4vKipcbiAqIEBjb25zdGFudFxuICogQG5hbWUgc2Vjb25kc0luTW9udGhcbiAqIEBzdW1tYXJ5IFNlY29uZHMgaW4gMSBtb250aFxuICovXG5leHBvcnQgY29uc3Qgc2Vjb25kc0luTW9udGggPSBzZWNvbmRzSW5ZZWFyIC8gMTI7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBzZWNvbmRzSW5RdWFydGVyXG4gKiBAc3VtbWFyeSBTZWNvbmRzIGluIDEgcXVhcnRlci5cbiAqL1xuZXhwb3J0IGNvbnN0IHNlY29uZHNJblF1YXJ0ZXIgPSBzZWNvbmRzSW5Nb250aCAqIDM7XG5cbi8qKlxuICogQGNvbnN0YW50XG4gKiBAbmFtZSBjb25zdHJ1Y3RGcm9tU3ltYm9sXG4gKiBAc3VtbWFyeSBTeW1ib2wgZW5hYmxpbmcgRGF0ZSBleHRlbnNpb25zIHRvIGluaGVyaXQgcHJvcGVydGllcyBmcm9tIHRoZSByZWZlcmVuY2UgZGF0ZS5cbiAqXG4gKiBUaGUgc3ltYm9sIGlzIHVzZWQgdG8gZW5hYmxlIHRoZSBgY29uc3RydWN0RnJvbWAgZnVuY3Rpb24gdG8gY29uc3RydWN0IGEgZGF0ZVxuICogdXNpbmcgYSByZWZlcmVuY2UgZGF0ZSBhbmQgYSB2YWx1ZS4gSXQgYWxsb3dzIHRvIHRyYW5zZmVyIGV4dHJhIHByb3BlcnRpZXNcbiAqIGZyb20gdGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRoZSBuZXcgZGF0ZS4gSXQncyB1c2VmdWwgZm9yIGV4dGVuc2lvbnMgbGlrZVxuICogW2BUWkRhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdHopIHRoYXQgYWNjZXB0IGEgdGltZSB6b25lIGFzXG4gKiBhIGNvbnN0cnVjdG9yIGFyZ3VtZW50LlxuICovXG5leHBvcnQgY29uc3QgY29uc3RydWN0RnJvbVN5bWJvbCA9IFN5bWJvbC5mb3IoXCJjb25zdHJ1Y3REYXRlRnJvbVwiKTtcbiIsICJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tU3ltYm9sIH0gZnJvbSBcIi4vY29uc3RhbnRzLmpzXCI7XG5cbi8qKlxuICogQG5hbWUgY29uc3RydWN0RnJvbVxuICogQGNhdGVnb3J5IEdlbmVyaWMgSGVscGVyc1xuICogQHN1bW1hcnkgQ29uc3RydWN0cyBhIGRhdGUgdXNpbmcgdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCB0aGUgdmFsdWVcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFRoZSBmdW5jdGlvbiBjb25zdHJ1Y3RzIGEgbmV3IGRhdGUgdXNpbmcgdGhlIGNvbnN0cnVjdG9yIGZyb20gdGhlIHJlZmVyZW5jZVxuICogZGF0ZSBhbmQgdGhlIGdpdmVuIHZhbHVlLiBJdCBoZWxwcyB0byBidWlsZCBnZW5lcmljIGZ1bmN0aW9ucyB0aGF0IGFjY2VwdFxuICogZGF0ZSBleHRlbnNpb25zLlxuICpcbiAqIEl0IGRlZmF1bHRzIHRvIGBEYXRlYCBpZiB0aGUgcGFzc2VkIHJlZmVyZW5jZSBkYXRlIGlzIGEgbnVtYmVyIG9yIGEgc3RyaW5nLlxuICpcbiAqIFN0YXJ0aW5nIGZyb20gdjMuNy4wLCBpdCBhbGxvd3MgdG8gY29uc3RydWN0IGEgZGF0ZSB1c2luZyBgW1N5bWJvbC5mb3IoXCJjb25zdHJ1Y3REYXRlRnJvbVwiKV1gXG4gKiBlbmFibGluZyB0byB0cmFuc2ZlciBleHRyYSBwcm9wZXJ0aWVzIGZyb20gdGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRoZSBuZXcgZGF0ZS5cbiAqIEl0J3MgdXNlZnVsIGZvciBleHRlbnNpb25zIGxpa2UgW2BUWkRhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdHopXG4gKiB0aGF0IGFjY2VwdCBhIHRpbWUgem9uZSBhcyBhIGNvbnN0cnVjdG9yIGFyZ3VtZW50LlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIHJlZmVyZW5jZSBkYXRlIHRvIHRha2UgY29uc3RydWN0b3IgZnJvbVxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNyZWF0ZSB0aGUgZGF0ZVxuICpcbiAqIEByZXR1cm5zIERhdGUgaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGdpdmVuIGRhdGUgYW5kIHZhbHVlXG4gKlxuICogQGV4YW1wbGVcbiAqIGltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tL2RhdGUtZm5zXCI7XG4gKlxuICogLy8gQSBmdW5jdGlvbiB0aGF0IGNsb25lcyBhIGRhdGUgcHJlc2VydmluZyB0aGUgb3JpZ2luYWwgdHlwZVxuICogZnVuY3Rpb24gY2xvbmVEYXRlPERhdGVUeXBlIGV4dGVuZHMgRGF0ZT4oZGF0ZTogRGF0ZVR5cGUpOiBEYXRlVHlwZSB7XG4gKiAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICogICAgIGRhdGUsIC8vIFVzZSBjb25zdHJ1Y3RvciBmcm9tIHRoZSBnaXZlbiBkYXRlXG4gKiAgICAgZGF0ZS5nZXRUaW1lKCkgLy8gVXNlIHRoZSBkYXRlIHZhbHVlIHRvIGNyZWF0ZSBhIG5ldyBkYXRlXG4gKiAgICk7XG4gKiB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb25zdHJ1Y3RGcm9tKGRhdGUsIHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgZGF0ZSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gZGF0ZSh2YWx1ZSk7XG5cbiAgaWYgKGRhdGUgJiYgdHlwZW9mIGRhdGUgPT09IFwib2JqZWN0XCIgJiYgY29uc3RydWN0RnJvbVN5bWJvbCBpbiBkYXRlKVxuICAgIHJldHVybiBkYXRlW2NvbnN0cnVjdEZyb21TeW1ib2xdKHZhbHVlKTtcblxuICBpZiAoZGF0ZSBpbnN0YW5jZW9mIERhdGUpIHJldHVybiBuZXcgZGF0ZS5jb25zdHJ1Y3Rvcih2YWx1ZSk7XG5cbiAgcmV0dXJuIG5ldyBEYXRlKHZhbHVlKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBjb25zdHJ1Y3RGcm9tO1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5cbi8qKlxuICogQG5hbWUgdG9EYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IENvbnZlcnQgdGhlIGdpdmVuIGFyZ3VtZW50IHRvIGFuIGluc3RhbmNlIG9mIERhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBDb252ZXJ0IHRoZSBnaXZlbiBhcmd1bWVudCB0byBhbiBpbnN0YW5jZSBvZiBEYXRlLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBhbiBpbnN0YW5jZSBvZiBEYXRlLCB0aGUgZnVuY3Rpb24gcmV0dXJucyBpdHMgY2xvbmUuXG4gKlxuICogSWYgdGhlIGFyZ3VtZW50IGlzIGEgbnVtYmVyLCBpdCBpcyB0cmVhdGVkIGFzIGEgdGltZXN0YW1wLlxuICpcbiAqIElmIHRoZSBhcmd1bWVudCBpcyBub25lIG9mIHRoZSBhYm92ZSwgdGhlIGZ1bmN0aW9uIHJldHVybnMgSW52YWxpZCBEYXRlLlxuICpcbiAqIFN0YXJ0aW5nIGZyb20gdjMuNy4wLCBpdCBjbG9uZXMgYSBkYXRlIHVzaW5nIGBbU3ltYm9sLmZvcihcImNvbnN0cnVjdERhdGVGcm9tXCIpXWBcbiAqIGVuYWJsaW5nIHRvIHRyYW5zZmVyIGV4dHJhIHByb3BlcnRpZXMgZnJvbSB0aGUgcmVmZXJlbmNlIGRhdGUgdG8gdGhlIG5ldyBkYXRlLlxuICogSXQncyB1c2VmdWwgZm9yIGV4dGVuc2lvbnMgbGlrZSBbYFRaRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy90eilcbiAqIHRoYXQgYWNjZXB0IGEgdGltZSB6b25lIGFzIGEgY29uc3RydWN0b3IgYXJndW1lbnQuXG4gKlxuICogKipOb3RlKio6ICphbGwqIERhdGUgYXJndW1lbnRzIHBhc3NlZCB0byBhbnkgKmRhdGUtZm5zKiBmdW5jdGlvbiBpcyBwcm9jZXNzZWQgYnkgYHRvRGF0ZWAuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBhcmd1bWVudCAtIFRoZSB2YWx1ZSB0byBjb252ZXJ0XG4gKlxuICogQHJldHVybnMgVGhlIHBhcnNlZCBkYXRlIGluIHRoZSBsb2NhbCB0aW1lIHpvbmVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ2xvbmUgdGhlIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUobmV3IERhdGUoMjAxNCwgMSwgMTEsIDExLCAzMCwgMzApKVxuICogLy89PiBUdWUgRmViIDExIDIwMTQgMTE6MzA6MzBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQ29udmVydCB0aGUgdGltZXN0YW1wIHRvIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSB0b0RhdGUoMTM5MjA5ODQzMDAwMClcbiAqIC8vPT4gVHVlIEZlYiAxMSAyMDE0IDExOjMwOjMwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b0RhdGUoYXJndW1lbnQsIGNvbnRleHQpIHtcbiAgLy8gW1RPRE9dIEdldCByaWQgb2YgYHRvRGF0ZWAgb3IgYGNvbnN0cnVjdEZyb21gP1xuICByZXR1cm4gY29uc3RydWN0RnJvbShjb250ZXh0IHx8IGFyZ3VtZW50LCBhcmd1bWVudCk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgdG9EYXRlO1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGFkZERheXN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBhZGREYXlzXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEFkZCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBkYXlzIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogQWRkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGFtb3VudCAtIFRoZSBhbW91bnQgb2YgZGF5cyB0byBiZSBhZGRlZC5cbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBuZXcgZGF0ZSB3aXRoIHRoZSBkYXlzIGFkZGVkXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEFkZCAxMCBkYXlzIHRvIDEgU2VwdGVtYmVyIDIwMTQ6XG4gKiBjb25zdCByZXN1bHQgPSBhZGREYXlzKG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAxMClcbiAqIC8vPT4gVGh1IFNlcCAxMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhZGREYXlzKGRhdGUsIGFtb3VudCwgb3B0aW9ucykge1xuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlLCBvcHRpb25zPy5pbik7XG4gIGlmIChpc05hTihhbW91bnQpKSByZXR1cm4gY29uc3RydWN0RnJvbShvcHRpb25zPy5pbiB8fCBkYXRlLCBOYU4pO1xuXG4gIC8vIElmIDAgZGF5cywgbm8tb3AgdG8gYXZvaWQgY2hhbmdpbmcgdGltZXMgaW4gdGhlIGhvdXIgYmVmb3JlIGVuZCBvZiBEU1RcbiAgaWYgKCFhbW91bnQpIHJldHVybiBfZGF0ZTtcblxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSArIGFtb3VudCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBhZGREYXlzO1xuIiwgImxldCBkZWZhdWx0T3B0aW9ucyA9IHt9O1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBkZWZhdWx0T3B0aW9ucztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldERlZmF1bHRPcHRpb25zKG5ld09wdGlvbnMpIHtcbiAgZGVmYXVsdE9wdGlvbnMgPSBuZXdPcHRpb25zO1xufVxuIiwgImltcG9ydCB7IGdldERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mV2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZXZWVrXG4gKiBAY2F0ZWdvcnkgV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgd2VlayBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICogQHR5cGVQYXJhbSBSZXN1bHREYXRlIC0gVGhlIHJlc3VsdCBgRGF0ZWAgdHlwZSwgaXQgaXMgdGhlIHR5cGUgcmV0dXJuZWQgZnJvbSB0aGUgY29udGV4dCBmdW5jdGlvbiBpZiBpdCBpcyBwYXNzZWQsIG9yIGluZmVycmVkIGZyb20gdGhlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSB3ZWVrXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gSWYgdGhlIHdlZWsgc3RhcnRzIG9uIE1vbmRheSwgdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZldlZWsobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwKSwgeyB3ZWVrU3RhcnRzT246IDEgfSlcbiAqIC8vPT4gTW9uIFNlcCAwMSAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mV2VlayhkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gZ2V0RGVmYXVsdE9wdGlvbnMoKTtcbiAgY29uc3Qgd2Vla1N0YXJ0c09uID1cbiAgICBvcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBvcHRpb25zPy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLndlZWtTdGFydHNPbiA/P1xuICAgIGRlZmF1bHRPcHRpb25zLmxvY2FsZT8ub3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgMDtcblxuICBjb25zdCBfZGF0ZSA9IHRvRGF0ZShkYXRlLCBvcHRpb25zPy5pbik7XG4gIGNvbnN0IGRheSA9IF9kYXRlLmdldERheSgpO1xuICBjb25zdCBkaWZmID0gKGRheSA8IHdlZWtTdGFydHNPbiA/IDcgOiAwKSArIGRheSAtIHdlZWtTdGFydHNPbjtcblxuICBfZGF0ZS5zZXREYXRlKF9kYXRlLmdldERhdGUoKSAtIGRpZmYpO1xuICBfZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIF9kYXRlO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZXZWVrO1xuIiwgImltcG9ydCB7IHN0YXJ0T2ZXZWVrIH0gZnJvbSBcIi4vc3RhcnRPZldlZWsuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHN0YXJ0T2ZJU09XZWVrfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZklTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIG9yaWdpbmFsIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhbiBJU08gd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYW4gSVNPIHdlZWsgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mSVNPV2VlayhuZXcgRGF0ZSgyMDE0LCA4LCAyLCAxMSwgNTUsIDApKVxuICogLy89PiBNb24gU2VwIDAxIDIwMTQgMDA6MDA6MDBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHN0YXJ0T2ZJU09XZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIHN0YXJ0T2ZXZWVrKGRhdGUsIHsgLi4ub3B0aW9ucywgd2Vla1N0YXJ0c09uOiAxIH0pO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZJU09XZWVrO1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5pbXBvcnQgeyBzdGFydE9mSVNPV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZJU09XZWVrLmpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGdldElTT1dlZWtZZWFyfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZ2V0SVNPV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBJU08gV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBvZiB0aGUgZ2l2ZW4gZGF0ZSxcbiAqIHdoaWNoIGFsd2F5cyBzdGFydHMgMyBkYXlzIGJlZm9yZSB0aGUgeWVhcidzIGZpcnN0IFRodXJzZGF5LlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKlxuICogQHJldHVybnMgVGhlIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIElTTy13ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1P1xuICogY29uc3QgcmVzdWx0ID0gZ2V0SVNPV2Vla1llYXIobmV3IERhdGUoMjAwNSwgMCwgMikpXG4gKiAvLz0+IDIwMDRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldElTT1dlZWtZZWFyKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSwgb3B0aW9ucz8uaW4pO1xuICBjb25zdCB5ZWFyID0gX2RhdGUuZ2V0RnVsbFllYXIoKTtcblxuICBjb25zdCBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyID0gY29uc3RydWN0RnJvbShfZGF0ZSwgMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mTmV4dFllYXIuc2V0RnVsbFllYXIoeWVhciArIDEsIDAsIDQpO1xuICBmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mSVNPV2Vlayhmb3VydGhPZkphbnVhcnlPZk5leHRZZWFyKTtcblxuICBjb25zdCBmb3VydGhPZkphbnVhcnlPZlRoaXNZZWFyID0gY29uc3RydWN0RnJvbShfZGF0ZSwgMCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0RnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIGNvbnN0IHN0YXJ0T2ZUaGlzWWVhciA9IHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeU9mVGhpc1llYXIpO1xuXG4gIGlmIChfZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZk5leHRZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyICsgMTtcbiAgfSBlbHNlIGlmIChfZGF0ZS5nZXRUaW1lKCkgPj0gc3RhcnRPZlRoaXNZZWFyLmdldFRpbWUoKSkge1xuICAgIHJldHVybiB5ZWFyO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB5ZWFyIC0gMTtcbiAgfVxufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldElTT1dlZWtZZWFyO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuLi90b0RhdGUuanNcIjtcblxuLyoqXG4gKiBHb29nbGUgQ2hyb21lIGFzIG9mIDY3LjAuMzM5Ni44NyBpbnRyb2R1Y2VkIHRpbWV6b25lcyB3aXRoIG9mZnNldCB0aGF0IGluY2x1ZGVzIHNlY29uZHMuXG4gKiBUaGV5IHVzdWFsbHkgYXBwZWFyIGZvciBkYXRlcyB0aGF0IGRlbm90ZSB0aW1lIGJlZm9yZSB0aGUgdGltZXpvbmVzIHdlcmUgaW50cm9kdWNlZFxuICogKGUuZy4gZm9yICdFdXJvcGUvUHJhZ3VlJyB0aW1lem9uZSB0aGUgb2Zmc2V0IGlzIEdNVCswMDo1Nzo0NCBiZWZvcmUgMSBPY3RvYmVyIDE4OTFcbiAqIGFuZCBHTVQrMDE6MDA6MDAgYWZ0ZXIgdGhhdCBkYXRlKVxuICpcbiAqIERhdGUjZ2V0VGltZXpvbmVPZmZzZXQgcmV0dXJucyB0aGUgb2Zmc2V0IGluIG1pbnV0ZXMgYW5kIHdvdWxkIHJldHVybiA1NyBmb3IgdGhlIGV4YW1wbGUgYWJvdmUsXG4gKiB3aGljaCB3b3VsZCBsZWFkIHRvIGluY29ycmVjdCBjYWxjdWxhdGlvbnMuXG4gKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSB0aW1lem9uZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzIHRoYXQgdGFrZXMgc2Vjb25kcyBpbiBhY2NvdW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUpO1xuICBjb25zdCB1dGNEYXRlID0gbmV3IERhdGUoXG4gICAgRGF0ZS5VVEMoXG4gICAgICBfZGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgICAgX2RhdGUuZ2V0TW9udGgoKSxcbiAgICAgIF9kYXRlLmdldERhdGUoKSxcbiAgICAgIF9kYXRlLmdldEhvdXJzKCksXG4gICAgICBfZGF0ZS5nZXRNaW51dGVzKCksXG4gICAgICBfZGF0ZS5nZXRTZWNvbmRzKCksXG4gICAgICBfZGF0ZS5nZXRNaWxsaXNlY29uZHMoKSxcbiAgICApLFxuICApO1xuICB1dGNEYXRlLnNldFVUQ0Z1bGxZZWFyKF9kYXRlLmdldEZ1bGxZZWFyKCkpO1xuICByZXR1cm4gK2RhdGUgLSArdXRjRGF0ZTtcbn1cbiIsICJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4uL2NvbnN0cnVjdEZyb20uanNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZURhdGVzKGNvbnRleHQsIC4uLmRhdGVzKSB7XG4gIGNvbnN0IG5vcm1hbGl6ZSA9IGNvbnN0cnVjdEZyb20uYmluZChcbiAgICBudWxsLFxuICAgIGNvbnRleHQgfHwgZGF0ZXMuZmluZCgoZGF0ZSkgPT4gdHlwZW9mIGRhdGUgPT09IFwib2JqZWN0XCIpLFxuICApO1xuICByZXR1cm4gZGF0ZXMubWFwKG5vcm1hbGl6ZSk7XG59XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mRGF5fSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZkRheVxuICogQGNhdGVnb3J5IERheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgZGF5IGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBkYXkgZm9yIHRoZSBnaXZlbiBkYXRlLlxuICogVGhlIHJlc3VsdCB3aWxsIGJlIGluIHRoZSBsb2NhbCB0aW1lem9uZS5cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0RGF0ZSAtIFRoZSByZXN1bHQgYERhdGVgIHR5cGUsIGl0IGlzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIGNvbnRleHQgZnVuY3Rpb24gaWYgaXQgaXMgcGFzc2VkLCBvciBpbmZlcnJlZCBmcm9tIHRoZSBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBzdGFydCBvZiBhIGRheVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSBkYXkgZm9yIDIgU2VwdGVtYmVyIDIwMTQgMTE6NTU6MDA6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mRGF5KG5ldyBEYXRlKDIwMTQsIDgsIDIsIDExLCA1NSwgMCkpXG4gKiAvLz0+IFR1ZSBTZXAgMDIgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZkRheShkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUsIG9wdGlvbnM/LmluKTtcbiAgX2RhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mRGF5O1xuIiwgImltcG9ydCB7IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi9fbGliL2dldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMuanNcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZURhdGVzIH0gZnJvbSBcIi4vX2xpYi9ub3JtYWxpemVEYXRlcy5qc1wiO1xuaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5EYXkgfSBmcm9tIFwiLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZEYXkgfSBmcm9tIFwiLi9zdGFydE9mRGF5LmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXN9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXNcbiAqIEBjYXRlZ29yeSBEYXkgSGVscGVyc1xuICogQHN1bW1hcnkgR2V0IHRoZSBudW1iZXIgb2YgY2FsZW5kYXIgZGF5cyBiZXR3ZWVuIHRoZSBnaXZlbiBkYXRlcy5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbnVtYmVyIG9mIGNhbGVuZGFyIGRheXMgYmV0d2VlbiB0aGUgZ2l2ZW4gZGF0ZXMuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGltZXMgYXJlIHJlbW92ZWRcbiAqIGZyb20gdGhlIGRhdGVzIGFuZCB0aGVuIHRoZSBkaWZmZXJlbmNlIGluIGRheXMgaXMgY2FsY3VsYXRlZC5cbiAqXG4gKiBAcGFyYW0gbGF0ZXJEYXRlIC0gVGhlIGxhdGVyIGRhdGVcbiAqIEBwYXJhbSBlYXJsaWVyRGF0ZSAtIFRoZSBlYXJsaWVyIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gVGhlIG9wdGlvbnMgb2JqZWN0XG4gKlxuICogQHJldHVybnMgVGhlIG51bWJlciBvZiBjYWxlbmRhciBkYXlzXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjAwOjAwIGFuZCAyIEp1bHkgMjAxMiAwMDowMDowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMiwgNiwgMiwgMCwgMCksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCAwKVxuICogKVxuICogLy89PiAzNjZcbiAqIC8vIEhvdyBtYW55IGNhbGVuZGFyIGRheXMgYXJlIGJldHdlZW5cbiAqIC8vIDIgSnVseSAyMDExIDIzOjU5OjAwIGFuZCAzIEp1bHkgMjAxMSAwMDowMTowMD9cbiAqIGNvbnN0IHJlc3VsdCA9IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cyhcbiAqICAgbmV3IERhdGUoMjAxMSwgNiwgMywgMCwgMSksXG4gKiAgIG5ldyBEYXRlKDIwMTEsIDYsIDIsIDIzLCA1OSlcbiAqIClcbiAqIC8vPT4gMVxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKGxhdGVyRGF0ZSwgZWFybGllckRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgW2xhdGVyRGF0ZV8sIGVhcmxpZXJEYXRlX10gPSBub3JtYWxpemVEYXRlcyhcbiAgICBvcHRpb25zPy5pbixcbiAgICBsYXRlckRhdGUsXG4gICAgZWFybGllckRhdGUsXG4gICk7XG5cbiAgY29uc3QgbGF0ZXJTdGFydE9mRGF5ID0gc3RhcnRPZkRheShsYXRlckRhdGVfKTtcbiAgY29uc3QgZWFybGllclN0YXJ0T2ZEYXkgPSBzdGFydE9mRGF5KGVhcmxpZXJEYXRlXyk7XG5cbiAgY29uc3QgbGF0ZXJUaW1lc3RhbXAgPVxuICAgICtsYXRlclN0YXJ0T2ZEYXkgLSBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzKGxhdGVyU3RhcnRPZkRheSk7XG4gIGNvbnN0IGVhcmxpZXJUaW1lc3RhbXAgPVxuICAgICtlYXJsaWVyU3RhcnRPZkRheSAtIGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMoZWFybGllclN0YXJ0T2ZEYXkpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2YgZGF5cyB0byB0aGUgbmVhcmVzdCBpbnRlZ2VyIGJlY2F1c2UgdGhlIG51bWJlciBvZlxuICAvLyBtaWxsaXNlY29uZHMgaW4gYSBkYXkgaXMgbm90IGNvbnN0YW50IChlLmcuIGl0J3MgZGlmZmVyZW50IGluIHRoZSB3ZWVrIG9mXG4gIC8vIHRoZSBkYXlsaWdodCBzYXZpbmcgdGltZSBjbG9jayBzaGlmdCkuXG4gIHJldHVybiBNYXRoLnJvdW5kKChsYXRlclRpbWVzdGFtcCAtIGVhcmxpZXJUaW1lc3RhbXApIC8gbWlsbGlzZWNvbmRzSW5EYXkpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGRpZmZlcmVuY2VJbkNhbGVuZGFyRGF5cztcbiIsICJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5qc1wiO1xuaW1wb3J0IHsgZ2V0SVNPV2Vla1llYXIgfSBmcm9tIFwiLi9nZXRJU09XZWVrWWVhci5qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZklTT1dlZWsgfSBmcm9tIFwiLi9zdGFydE9mSVNPV2Vlay5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc3RhcnRPZklTT1dlZWtZZWFyfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgc3RhcnRPZklTT1dlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWstTnVtYmVyaW5nIFllYXIgSGVscGVyc1xuICogQHN1bW1hcnkgUmV0dXJuIHRoZSBzdGFydCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyLFxuICogd2hpY2ggYWx3YXlzIHN0YXJ0cyAzIGRheXMgYmVmb3JlIHRoZSB5ZWFyJ3MgZmlyc3QgVGh1cnNkYXkuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyOiBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lTT193ZWVrX2RhdGVcbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0RGF0ZSAtIFRoZSByZXN1bHQgYERhdGVgIHR5cGUsIGl0IGlzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIGNvbnRleHQgZnVuY3Rpb24gaWYgaXQgaXMgcGFzc2VkLCBvciBpbmZlcnJlZCBmcm9tIHRoZSBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGFuIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhbiBJU08gd2Vlay1udW1iZXJpbmcgeWVhciBmb3IgMiBKdWx5IDIwMDU6XG4gKiBjb25zdCByZXN1bHQgPSBzdGFydE9mSVNPV2Vla1llYXIobmV3IERhdGUoMjAwNSwgNiwgMikpXG4gKiAvLz0+IE1vbiBKYW4gMDMgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZklTT1dlZWtZZWFyKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgeWVhciA9IGdldElTT1dlZWtZZWFyKGRhdGUsIG9wdGlvbnMpO1xuICBjb25zdCBmb3VydGhPZkphbnVhcnkgPSBjb25zdHJ1Y3RGcm9tKG9wdGlvbnM/LmluIHx8IGRhdGUsIDApO1xuICBmb3VydGhPZkphbnVhcnkuc2V0RnVsbFllYXIoeWVhciwgMCwgNCk7XG4gIGZvdXJ0aE9mSmFudWFyeS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIHN0YXJ0T2ZJU09XZWVrKGZvdXJ0aE9mSmFudWFyeSk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc3RhcnRPZklTT1dlZWtZZWFyO1xuIiwgIi8qKlxuICogQG5hbWUgaXNEYXRlXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IElzIHRoZSBnaXZlbiB2YWx1ZSBhIGRhdGU/XG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm5zIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGFuIGluc3RhbmNlIG9mIERhdGUuIFRoZSBmdW5jdGlvbiB3b3JrcyBmb3IgZGF0ZXMgdHJhbnNmZXJyZWQgYWNyb3NzIGlmcmFtZXMuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNoZWNrXG4gKlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgYSBkYXRlXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIEZvciBhIHZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUobmV3IERhdGUoKSlcbiAqIC8vPT4gdHJ1ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gaW52YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKG5ldyBEYXRlKE5hTikpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHNvbWUgdmFsdWU6XG4gKiBjb25zdCByZXN1bHQgPSBpc0RhdGUoJzIwMTQtMDItMzEnKVxuICogLy89PiBmYWxzZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBGb3IgYW4gb2JqZWN0OlxuICogY29uc3QgcmVzdWx0ID0gaXNEYXRlKHt9KVxuICogLy89PiBmYWxzZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlKHZhbHVlKSB7XG4gIHJldHVybiAoXG4gICAgdmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8XG4gICAgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gXCJbb2JqZWN0IERhdGVdXCIpXG4gICk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgaXNEYXRlO1xuIiwgImltcG9ydCB7IGlzRGF0ZSB9IGZyb20gXCIuL2lzRGF0ZS5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogQG5hbWUgaXNWYWxpZFxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBJcyB0aGUgZ2l2ZW4gZGF0ZSB2YWxpZD9cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybnMgZmFsc2UgaWYgYXJndW1lbnQgaXMgSW52YWxpZCBEYXRlIGFuZCB0cnVlIG90aGVyd2lzZS5cbiAqIEFyZ3VtZW50IGlzIGNvbnZlcnRlZCB0byBEYXRlIHVzaW5nIGB0b0RhdGVgLiBTZWUgW3RvRGF0ZV0oaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy90b0RhdGUpXG4gKiBJbnZhbGlkIERhdGUgaXMgYSBEYXRlLCB3aG9zZSB0aW1lIHZhbHVlIGlzIE5hTi5cbiAqXG4gKiBUaW1lIHZhbHVlIG9mIERhdGU6IGh0dHA6Ly9lczUuZ2l0aHViLmlvLyN4MTUuOS4xLjFcbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBkYXRlIHRvIGNoZWNrXG4gKlxuICogQHJldHVybnMgVGhlIGRhdGUgaXMgdmFsaWRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWxpZCBkYXRlOlxuICogY29uc3QgcmVzdWx0ID0gaXNWYWxpZChuZXcgRGF0ZSgyMDE0LCAxLCAzMSkpXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSB2YWx1ZSwgY29udmVydGlibGUgaW50byBhIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKDEzOTM4MDQ4MDAwMDApXG4gKiAvLz0+IHRydWVcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRm9yIHRoZSBpbnZhbGlkIGRhdGU6XG4gKiBjb25zdCByZXN1bHQgPSBpc1ZhbGlkKG5ldyBEYXRlKCcnKSlcbiAqIC8vPT4gZmFsc2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWQoZGF0ZSkge1xuICByZXR1cm4gISgoIWlzRGF0ZShkYXRlKSAmJiB0eXBlb2YgZGF0ZSAhPT0gXCJudW1iZXJcIikgfHwgaXNOYU4oK3RvRGF0ZShkYXRlKSkpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGlzVmFsaWQ7XG4iLCAiaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mWWVhcn0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHN0YXJ0T2ZZZWFyXG4gKiBAY2F0ZWdvcnkgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIGEgeWVhciBmb3IgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgcmVzdWx0IHdpbGwgYmUgaW4gdGhlIGxvY2FsIHRpbWV6b25lLlxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICogQHR5cGVQYXJhbSBSZXN1bHREYXRlIC0gVGhlIHJlc3VsdCBgRGF0ZWAgdHlwZSwgaXQgaXMgdGhlIHR5cGUgcmV0dXJuZWQgZnJvbSB0aGUgY29udGV4dCBmdW5jdGlvbiBpZiBpdCBpcyBwYXNzZWQsIG9yIGluZmVycmVkIGZyb20gdGhlIGFyZ3VtZW50cy5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIFRoZSBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIHN0YXJ0IG9mIGEgeWVhclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUaGUgc3RhcnQgb2YgYSB5ZWFyIGZvciAyIFNlcHRlbWJlciAyMDE0IDExOjU1OjAwOlxuICogY29uc3QgcmVzdWx0ID0gc3RhcnRPZlllYXIobmV3IERhdGUoMjAxNCwgOCwgMiwgMTEsIDU1LCAwMCkpXG4gKiAvLz0+IFdlZCBKYW4gMDEgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RhcnRPZlllYXIoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBkYXRlXyA9IHRvRGF0ZShkYXRlLCBvcHRpb25zPy5pbik7XG4gIGRhdGVfLnNldEZ1bGxZZWFyKGRhdGVfLmdldEZ1bGxZZWFyKCksIDAsIDEpO1xuICBkYXRlXy5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgcmV0dXJuIGRhdGVfO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0T2ZZZWFyO1xuIiwgImNvbnN0IGZvcm1hdERpc3RhbmNlTG9jYWxlID0ge1xuICBsZXNzVGhhblhTZWNvbmRzOiB7XG4gICAgb25lOiBcImxlc3MgdGhhbiBhIHNlY29uZFwiLFxuICAgIG90aGVyOiBcImxlc3MgdGhhbiB7e2NvdW50fX0gc2Vjb25kc1wiLFxuICB9LFxuXG4gIHhTZWNvbmRzOiB7XG4gICAgb25lOiBcIjEgc2Vjb25kXCIsXG4gICAgb3RoZXI6IFwie3tjb3VudH19IHNlY29uZHNcIixcbiAgfSxcblxuICBoYWxmQU1pbnV0ZTogXCJoYWxmIGEgbWludXRlXCIsXG5cbiAgbGVzc1RoYW5YTWludXRlczoge1xuICAgIG9uZTogXCJsZXNzIHRoYW4gYSBtaW51dGVcIixcbiAgICBvdGhlcjogXCJsZXNzIHRoYW4ge3tjb3VudH19IG1pbnV0ZXNcIixcbiAgfSxcblxuICB4TWludXRlczoge1xuICAgIG9uZTogXCIxIG1pbnV0ZVwiLFxuICAgIG90aGVyOiBcInt7Y291bnR9fSBtaW51dGVzXCIsXG4gIH0sXG5cbiAgYWJvdXRYSG91cnM6IHtcbiAgICBvbmU6IFwiYWJvdXQgMSBob3VyXCIsXG4gICAgb3RoZXI6IFwiYWJvdXQge3tjb3VudH19IGhvdXJzXCIsXG4gIH0sXG5cbiAgeEhvdXJzOiB7XG4gICAgb25lOiBcIjEgaG91clwiLFxuICAgIG90aGVyOiBcInt7Y291bnR9fSBob3Vyc1wiLFxuICB9LFxuXG4gIHhEYXlzOiB7XG4gICAgb25lOiBcIjEgZGF5XCIsXG4gICAgb3RoZXI6IFwie3tjb3VudH19IGRheXNcIixcbiAgfSxcblxuICBhYm91dFhXZWVrczoge1xuICAgIG9uZTogXCJhYm91dCAxIHdlZWtcIixcbiAgICBvdGhlcjogXCJhYm91dCB7e2NvdW50fX0gd2Vla3NcIixcbiAgfSxcblxuICB4V2Vla3M6IHtcbiAgICBvbmU6IFwiMSB3ZWVrXCIsXG4gICAgb3RoZXI6IFwie3tjb3VudH19IHdlZWtzXCIsXG4gIH0sXG5cbiAgYWJvdXRYTW9udGhzOiB7XG4gICAgb25lOiBcImFib3V0IDEgbW9udGhcIixcbiAgICBvdGhlcjogXCJhYm91dCB7e2NvdW50fX0gbW9udGhzXCIsXG4gIH0sXG5cbiAgeE1vbnRoczoge1xuICAgIG9uZTogXCIxIG1vbnRoXCIsXG4gICAgb3RoZXI6IFwie3tjb3VudH19IG1vbnRoc1wiLFxuICB9LFxuXG4gIGFib3V0WFllYXJzOiB7XG4gICAgb25lOiBcImFib3V0IDEgeWVhclwiLFxuICAgIG90aGVyOiBcImFib3V0IHt7Y291bnR9fSB5ZWFyc1wiLFxuICB9LFxuXG4gIHhZZWFyczoge1xuICAgIG9uZTogXCIxIHllYXJcIixcbiAgICBvdGhlcjogXCJ7e2NvdW50fX0geWVhcnNcIixcbiAgfSxcblxuICBvdmVyWFllYXJzOiB7XG4gICAgb25lOiBcIm92ZXIgMSB5ZWFyXCIsXG4gICAgb3RoZXI6IFwib3ZlciB7e2NvdW50fX0geWVhcnNcIixcbiAgfSxcblxuICBhbG1vc3RYWWVhcnM6IHtcbiAgICBvbmU6IFwiYWxtb3N0IDEgeWVhclwiLFxuICAgIG90aGVyOiBcImFsbW9zdCB7e2NvdW50fX0geWVhcnNcIixcbiAgfSxcbn07XG5cbmV4cG9ydCBjb25zdCBmb3JtYXREaXN0YW5jZSA9ICh0b2tlbiwgY291bnQsIG9wdGlvbnMpID0+IHtcbiAgbGV0IHJlc3VsdDtcblxuICBjb25zdCB0b2tlblZhbHVlID0gZm9ybWF0RGlzdGFuY2VMb2NhbGVbdG9rZW5dO1xuICBpZiAodHlwZW9mIHRva2VuVmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXN1bHQgPSB0b2tlblZhbHVlO1xuICB9IGVsc2UgaWYgKGNvdW50ID09PSAxKSB7XG4gICAgcmVzdWx0ID0gdG9rZW5WYWx1ZS5vbmU7XG4gIH0gZWxzZSB7XG4gICAgcmVzdWx0ID0gdG9rZW5WYWx1ZS5vdGhlci5yZXBsYWNlKFwie3tjb3VudH19XCIsIGNvdW50LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgaWYgKG9wdGlvbnM/LmFkZFN1ZmZpeCkge1xuICAgIGlmIChvcHRpb25zLmNvbXBhcmlzb24gJiYgb3B0aW9ucy5jb21wYXJpc29uID4gMCkge1xuICAgICAgcmV0dXJuIFwiaW4gXCIgKyByZXN1bHQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXN1bHQgKyBcIiBhZ29cIjtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufTtcbiIsICJleHBvcnQgZnVuY3Rpb24gYnVpbGRGb3JtYXRMb25nRm4oYXJncykge1xuICByZXR1cm4gKG9wdGlvbnMgPSB7fSkgPT4ge1xuICAgIC8vIFRPRE86IFJlbW92ZSBTdHJpbmcoKVxuICAgIGNvbnN0IHdpZHRoID0gb3B0aW9ucy53aWR0aCA/IFN0cmluZyhvcHRpb25zLndpZHRoKSA6IGFyZ3MuZGVmYXVsdFdpZHRoO1xuICAgIGNvbnN0IGZvcm1hdCA9IGFyZ3MuZm9ybWF0c1t3aWR0aF0gfHwgYXJncy5mb3JtYXRzW2FyZ3MuZGVmYXVsdFdpZHRoXTtcbiAgICByZXR1cm4gZm9ybWF0O1xuICB9O1xufVxuIiwgImltcG9ydCB7IGJ1aWxkRm9ybWF0TG9uZ0ZuIH0gZnJvbSBcIi4uLy4uL19saWIvYnVpbGRGb3JtYXRMb25nRm4uanNcIjtcblxuY29uc3QgZGF0ZUZvcm1hdHMgPSB7XG4gIGZ1bGw6IFwiRUVFRSwgTU1NTSBkbywgeVwiLFxuICBsb25nOiBcIk1NTU0gZG8sIHlcIixcbiAgbWVkaXVtOiBcIk1NTSBkLCB5XCIsXG4gIHNob3J0OiBcIk1NL2RkL3l5eXlcIixcbn07XG5cbmNvbnN0IHRpbWVGb3JtYXRzID0ge1xuICBmdWxsOiBcImg6bW06c3MgYSB6enp6XCIsXG4gIGxvbmc6IFwiaDptbTpzcyBhIHpcIixcbiAgbWVkaXVtOiBcImg6bW06c3MgYVwiLFxuICBzaG9ydDogXCJoOm1tIGFcIixcbn07XG5cbmNvbnN0IGRhdGVUaW1lRm9ybWF0cyA9IHtcbiAgZnVsbDogXCJ7e2RhdGV9fSAnYXQnIHt7dGltZX19XCIsXG4gIGxvbmc6IFwie3tkYXRlfX0gJ2F0JyB7e3RpbWV9fVwiLFxuICBtZWRpdW06IFwie3tkYXRlfX0sIHt7dGltZX19XCIsXG4gIHNob3J0OiBcInt7ZGF0ZX19LCB7e3RpbWV9fVwiLFxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdExvbmcgPSB7XG4gIGRhdGU6IGJ1aWxkRm9ybWF0TG9uZ0ZuKHtcbiAgICBmb3JtYXRzOiBkYXRlRm9ybWF0cyxcbiAgICBkZWZhdWx0V2lkdGg6IFwiZnVsbFwiLFxuICB9KSxcblxuICB0aW1lOiBidWlsZEZvcm1hdExvbmdGbih7XG4gICAgZm9ybWF0czogdGltZUZvcm1hdHMsXG4gICAgZGVmYXVsdFdpZHRoOiBcImZ1bGxcIixcbiAgfSksXG5cbiAgZGF0ZVRpbWU6IGJ1aWxkRm9ybWF0TG9uZ0ZuKHtcbiAgICBmb3JtYXRzOiBkYXRlVGltZUZvcm1hdHMsXG4gICAgZGVmYXVsdFdpZHRoOiBcImZ1bGxcIixcbiAgfSksXG59O1xuIiwgImNvbnN0IGZvcm1hdFJlbGF0aXZlTG9jYWxlID0ge1xuICBsYXN0V2VlazogXCInbGFzdCcgZWVlZSAnYXQnIHBcIixcbiAgeWVzdGVyZGF5OiBcIid5ZXN0ZXJkYXkgYXQnIHBcIixcbiAgdG9kYXk6IFwiJ3RvZGF5IGF0JyBwXCIsXG4gIHRvbW9ycm93OiBcIid0b21vcnJvdyBhdCcgcFwiLFxuICBuZXh0V2VlazogXCJlZWVlICdhdCcgcFwiLFxuICBvdGhlcjogXCJQXCIsXG59O1xuXG5leHBvcnQgY29uc3QgZm9ybWF0UmVsYXRpdmUgPSAodG9rZW4sIF9kYXRlLCBfYmFzZURhdGUsIF9vcHRpb25zKSA9PlxuICBmb3JtYXRSZWxhdGl2ZUxvY2FsZVt0b2tlbl07XG4iLCAiLyoqXG4gKiBUaGUgbG9jYWxpemUgZnVuY3Rpb24gYXJndW1lbnQgY2FsbGJhY2sgd2hpY2ggYWxsb3dzIHRvIGNvbnZlcnQgcmF3IHZhbHVlIHRvXG4gKiB0aGUgYWN0dWFsIHR5cGUuXG4gKlxuICogQHBhcmFtIHZhbHVlIC0gVGhlIHZhbHVlIHRvIGNvbnZlcnRcbiAqXG4gKiBAcmV0dXJucyBUaGUgY29udmVydGVkIHZhbHVlXG4gKi9cblxuLyoqXG4gKiBUaGUgbWFwIG9mIGxvY2FsaXplZCB2YWx1ZXMgZm9yIGVhY2ggd2lkdGguXG4gKi9cblxuLyoqXG4gKiBUaGUgaW5kZXggdHlwZSBvZiB0aGUgbG9jYWxlIHVuaXQgdmFsdWUuIEl0IHR5cGVzIGNvbnZlcnNpb24gb2YgdW5pdHMgb2ZcbiAqIHZhbHVlcyB0aGF0IGRvbid0IHN0YXJ0IGF0IDAgKGkuZS4gcXVhcnRlcnMpLlxuICovXG5cbi8qKlxuICogQ29udmVydHMgdGhlIHVuaXQgdmFsdWUgdG8gdGhlIHR1cGxlIG9mIHZhbHVlcy5cbiAqL1xuXG4vKipcbiAqIFRoZSB0dXBsZSBvZiBsb2NhbGl6ZWQgZXJhIHZhbHVlcy4gVGhlIGZpcnN0IGVsZW1lbnQgcmVwcmVzZW50cyBCQyxcbiAqIHRoZSBzZWNvbmQgZWxlbWVudCByZXByZXNlbnRzIEFELlxuICovXG5cbi8qKlxuICogVGhlIHR1cGxlIG9mIGxvY2FsaXplZCBxdWFydGVyIHZhbHVlcy4gVGhlIGZpcnN0IGVsZW1lbnQgcmVwcmVzZW50cyBRMS5cbiAqL1xuXG4vKipcbiAqIFRoZSB0dXBsZSBvZiBsb2NhbGl6ZWQgZGF5IHZhbHVlcy4gVGhlIGZpcnN0IGVsZW1lbnQgcmVwcmVzZW50cyBTdW5kYXkuXG4gKi9cblxuLyoqXG4gKiBUaGUgdHVwbGUgb2YgbG9jYWxpemVkIG1vbnRoIHZhbHVlcy4gVGhlIGZpcnN0IGVsZW1lbnQgcmVwcmVzZW50cyBKYW51YXJ5LlxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZExvY2FsaXplRm4oYXJncykge1xuICByZXR1cm4gKHZhbHVlLCBvcHRpb25zKSA9PiB7XG4gICAgY29uc3QgY29udGV4dCA9IG9wdGlvbnM/LmNvbnRleHQgPyBTdHJpbmcob3B0aW9ucy5jb250ZXh0KSA6IFwic3RhbmRhbG9uZVwiO1xuXG4gICAgbGV0IHZhbHVlc0FycmF5O1xuICAgIGlmIChjb250ZXh0ID09PSBcImZvcm1hdHRpbmdcIiAmJiBhcmdzLmZvcm1hdHRpbmdWYWx1ZXMpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRXaWR0aCA9IGFyZ3MuZGVmYXVsdEZvcm1hdHRpbmdXaWR0aCB8fCBhcmdzLmRlZmF1bHRXaWR0aDtcbiAgICAgIGNvbnN0IHdpZHRoID0gb3B0aW9ucz8ud2lkdGggPyBTdHJpbmcob3B0aW9ucy53aWR0aCkgOiBkZWZhdWx0V2lkdGg7XG5cbiAgICAgIHZhbHVlc0FycmF5ID1cbiAgICAgICAgYXJncy5mb3JtYXR0aW5nVmFsdWVzW3dpZHRoXSB8fCBhcmdzLmZvcm1hdHRpbmdWYWx1ZXNbZGVmYXVsdFdpZHRoXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGVmYXVsdFdpZHRoID0gYXJncy5kZWZhdWx0V2lkdGg7XG4gICAgICBjb25zdCB3aWR0aCA9IG9wdGlvbnM/LndpZHRoID8gU3RyaW5nKG9wdGlvbnMud2lkdGgpIDogYXJncy5kZWZhdWx0V2lkdGg7XG5cbiAgICAgIHZhbHVlc0FycmF5ID0gYXJncy52YWx1ZXNbd2lkdGhdIHx8IGFyZ3MudmFsdWVzW2RlZmF1bHRXaWR0aF07XG4gICAgfVxuICAgIGNvbnN0IGluZGV4ID0gYXJncy5hcmd1bWVudENhbGxiYWNrID8gYXJncy5hcmd1bWVudENhbGxiYWNrKHZhbHVlKSA6IHZhbHVlO1xuXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvciAtIEZvciBzb21lIHJlYXNvbiBUeXBlU2NyaXB0IGp1c3QgZG9uJ3Qgd2FudCB0byBtYXRjaCBpdCwgbm8gbWF0dGVyIGhvdyBoYXJkIHdlIHRyeS4gSSBjaGFsbGVuZ2UgeW91IHRvIHRyeSB0byByZW1vdmUgaXQhXG4gICAgcmV0dXJuIHZhbHVlc0FycmF5W2luZGV4XTtcbiAgfTtcbn1cbiIsICJpbXBvcnQgeyBidWlsZExvY2FsaXplRm4gfSBmcm9tIFwiLi4vLi4vX2xpYi9idWlsZExvY2FsaXplRm4uanNcIjtcblxuY29uc3QgZXJhVmFsdWVzID0ge1xuICBuYXJyb3c6IFtcIkJcIiwgXCJBXCJdLFxuICBhYmJyZXZpYXRlZDogW1wiQkNcIiwgXCJBRFwiXSxcbiAgd2lkZTogW1wiQmVmb3JlIENocmlzdFwiLCBcIkFubm8gRG9taW5pXCJdLFxufTtcblxuY29uc3QgcXVhcnRlclZhbHVlcyA9IHtcbiAgbmFycm93OiBbXCIxXCIsIFwiMlwiLCBcIjNcIiwgXCI0XCJdLFxuICBhYmJyZXZpYXRlZDogW1wiUTFcIiwgXCJRMlwiLCBcIlEzXCIsIFwiUTRcIl0sXG4gIHdpZGU6IFtcIjFzdCBxdWFydGVyXCIsIFwiMm5kIHF1YXJ0ZXJcIiwgXCIzcmQgcXVhcnRlclwiLCBcIjR0aCBxdWFydGVyXCJdLFxufTtcblxuLy8gTm90ZTogaW4gRW5nbGlzaCwgdGhlIG5hbWVzIG9mIGRheXMgb2YgdGhlIHdlZWsgYW5kIG1vbnRocyBhcmUgY2FwaXRhbGl6ZWQuXG4vLyBJZiB5b3UgYXJlIG1ha2luZyBhIG5ldyBsb2NhbGUgYmFzZWQgb24gdGhpcyBvbmUsIGNoZWNrIGlmIHRoZSBzYW1lIGlzIHRydWUgZm9yIHRoZSBsYW5ndWFnZSB5b3UncmUgd29ya2luZyBvbi5cbi8vIEdlbmVyYWxseSwgZm9ybWF0dGVkIGRhdGVzIHNob3VsZCBsb29rIGxpa2UgdGhleSBhcmUgaW4gdGhlIG1pZGRsZSBvZiBhIHNlbnRlbmNlLFxuLy8gZS5nLiBpbiBTcGFuaXNoIGxhbmd1YWdlIHRoZSB3ZWVrZGF5cyBhbmQgbW9udGhzIHNob3VsZCBiZSBpbiB0aGUgbG93ZXJjYXNlLlxuY29uc3QgbW9udGhWYWx1ZXMgPSB7XG4gIG5hcnJvdzogW1wiSlwiLCBcIkZcIiwgXCJNXCIsIFwiQVwiLCBcIk1cIiwgXCJKXCIsIFwiSlwiLCBcIkFcIiwgXCJTXCIsIFwiT1wiLCBcIk5cIiwgXCJEXCJdLFxuICBhYmJyZXZpYXRlZDogW1xuICAgIFwiSmFuXCIsXG4gICAgXCJGZWJcIixcbiAgICBcIk1hclwiLFxuICAgIFwiQXByXCIsXG4gICAgXCJNYXlcIixcbiAgICBcIkp1blwiLFxuICAgIFwiSnVsXCIsXG4gICAgXCJBdWdcIixcbiAgICBcIlNlcFwiLFxuICAgIFwiT2N0XCIsXG4gICAgXCJOb3ZcIixcbiAgICBcIkRlY1wiLFxuICBdLFxuXG4gIHdpZGU6IFtcbiAgICBcIkphbnVhcnlcIixcbiAgICBcIkZlYnJ1YXJ5XCIsXG4gICAgXCJNYXJjaFwiLFxuICAgIFwiQXByaWxcIixcbiAgICBcIk1heVwiLFxuICAgIFwiSnVuZVwiLFxuICAgIFwiSnVseVwiLFxuICAgIFwiQXVndXN0XCIsXG4gICAgXCJTZXB0ZW1iZXJcIixcbiAgICBcIk9jdG9iZXJcIixcbiAgICBcIk5vdmVtYmVyXCIsXG4gICAgXCJEZWNlbWJlclwiLFxuICBdLFxufTtcblxuY29uc3QgZGF5VmFsdWVzID0ge1xuICBuYXJyb3c6IFtcIlNcIiwgXCJNXCIsIFwiVFwiLCBcIldcIiwgXCJUXCIsIFwiRlwiLCBcIlNcIl0sXG4gIHNob3J0OiBbXCJTdVwiLCBcIk1vXCIsIFwiVHVcIiwgXCJXZVwiLCBcIlRoXCIsIFwiRnJcIiwgXCJTYVwiXSxcbiAgYWJicmV2aWF0ZWQ6IFtcIlN1blwiLCBcIk1vblwiLCBcIlR1ZVwiLCBcIldlZFwiLCBcIlRodVwiLCBcIkZyaVwiLCBcIlNhdFwiXSxcbiAgd2lkZTogW1xuICAgIFwiU3VuZGF5XCIsXG4gICAgXCJNb25kYXlcIixcbiAgICBcIlR1ZXNkYXlcIixcbiAgICBcIldlZG5lc2RheVwiLFxuICAgIFwiVGh1cnNkYXlcIixcbiAgICBcIkZyaWRheVwiLFxuICAgIFwiU2F0dXJkYXlcIixcbiAgXSxcbn07XG5cbmNvbnN0IGRheVBlcmlvZFZhbHVlcyA9IHtcbiAgbmFycm93OiB7XG4gICAgYW06IFwiYVwiLFxuICAgIHBtOiBcInBcIixcbiAgICBtaWRuaWdodDogXCJtaVwiLFxuICAgIG5vb246IFwiblwiLFxuICAgIG1vcm5pbmc6IFwibW9ybmluZ1wiLFxuICAgIGFmdGVybm9vbjogXCJhZnRlcm5vb25cIixcbiAgICBldmVuaW5nOiBcImV2ZW5pbmdcIixcbiAgICBuaWdodDogXCJuaWdodFwiLFxuICB9LFxuICBhYmJyZXZpYXRlZDoge1xuICAgIGFtOiBcIkFNXCIsXG4gICAgcG06IFwiUE1cIixcbiAgICBtaWRuaWdodDogXCJtaWRuaWdodFwiLFxuICAgIG5vb246IFwibm9vblwiLFxuICAgIG1vcm5pbmc6IFwibW9ybmluZ1wiLFxuICAgIGFmdGVybm9vbjogXCJhZnRlcm5vb25cIixcbiAgICBldmVuaW5nOiBcImV2ZW5pbmdcIixcbiAgICBuaWdodDogXCJuaWdodFwiLFxuICB9LFxuICB3aWRlOiB7XG4gICAgYW06IFwiYS5tLlwiLFxuICAgIHBtOiBcInAubS5cIixcbiAgICBtaWRuaWdodDogXCJtaWRuaWdodFwiLFxuICAgIG5vb246IFwibm9vblwiLFxuICAgIG1vcm5pbmc6IFwibW9ybmluZ1wiLFxuICAgIGFmdGVybm9vbjogXCJhZnRlcm5vb25cIixcbiAgICBldmVuaW5nOiBcImV2ZW5pbmdcIixcbiAgICBuaWdodDogXCJuaWdodFwiLFxuICB9LFxufTtcblxuY29uc3QgZm9ybWF0dGluZ0RheVBlcmlvZFZhbHVlcyA9IHtcbiAgbmFycm93OiB7XG4gICAgYW06IFwiYVwiLFxuICAgIHBtOiBcInBcIixcbiAgICBtaWRuaWdodDogXCJtaVwiLFxuICAgIG5vb246IFwiblwiLFxuICAgIG1vcm5pbmc6IFwiaW4gdGhlIG1vcm5pbmdcIixcbiAgICBhZnRlcm5vb246IFwiaW4gdGhlIGFmdGVybm9vblwiLFxuICAgIGV2ZW5pbmc6IFwiaW4gdGhlIGV2ZW5pbmdcIixcbiAgICBuaWdodDogXCJhdCBuaWdodFwiLFxuICB9LFxuICBhYmJyZXZpYXRlZDoge1xuICAgIGFtOiBcIkFNXCIsXG4gICAgcG06IFwiUE1cIixcbiAgICBtaWRuaWdodDogXCJtaWRuaWdodFwiLFxuICAgIG5vb246IFwibm9vblwiLFxuICAgIG1vcm5pbmc6IFwiaW4gdGhlIG1vcm5pbmdcIixcbiAgICBhZnRlcm5vb246IFwiaW4gdGhlIGFmdGVybm9vblwiLFxuICAgIGV2ZW5pbmc6IFwiaW4gdGhlIGV2ZW5pbmdcIixcbiAgICBuaWdodDogXCJhdCBuaWdodFwiLFxuICB9LFxuICB3aWRlOiB7XG4gICAgYW06IFwiYS5tLlwiLFxuICAgIHBtOiBcInAubS5cIixcbiAgICBtaWRuaWdodDogXCJtaWRuaWdodFwiLFxuICAgIG5vb246IFwibm9vblwiLFxuICAgIG1vcm5pbmc6IFwiaW4gdGhlIG1vcm5pbmdcIixcbiAgICBhZnRlcm5vb246IFwiaW4gdGhlIGFmdGVybm9vblwiLFxuICAgIGV2ZW5pbmc6IFwiaW4gdGhlIGV2ZW5pbmdcIixcbiAgICBuaWdodDogXCJhdCBuaWdodFwiLFxuICB9LFxufTtcblxuY29uc3Qgb3JkaW5hbE51bWJlciA9IChkaXJ0eU51bWJlciwgX29wdGlvbnMpID0+IHtcbiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKGRpcnR5TnVtYmVyKTtcblxuICAvLyBJZiBvcmRpbmFsIG51bWJlcnMgZGVwZW5kIG9uIGNvbnRleHQsIGZvciBleGFtcGxlLFxuICAvLyBpZiB0aGV5IGFyZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBncmFtbWF0aWNhbCBnZW5kZXJzLFxuICAvLyB1c2UgYG9wdGlvbnMudW5pdGAuXG4gIC8vXG4gIC8vIGB1bml0YCBjYW4gYmUgJ3llYXInLCAncXVhcnRlcicsICdtb250aCcsICd3ZWVrJywgJ2RhdGUnLCAnZGF5T2ZZZWFyJyxcbiAgLy8gJ2RheScsICdob3VyJywgJ21pbnV0ZScsICdzZWNvbmQnLlxuXG4gIGNvbnN0IHJlbTEwMCA9IG51bWJlciAlIDEwMDtcbiAgaWYgKHJlbTEwMCA+IDIwIHx8IHJlbTEwMCA8IDEwKSB7XG4gICAgc3dpdGNoIChyZW0xMDAgJSAxMCkge1xuICAgICAgY2FzZSAxOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgXCJzdFwiO1xuICAgICAgY2FzZSAyOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgXCJuZFwiO1xuICAgICAgY2FzZSAzOlxuICAgICAgICByZXR1cm4gbnVtYmVyICsgXCJyZFwiO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVtYmVyICsgXCJ0aFwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvY2FsaXplID0ge1xuICBvcmRpbmFsTnVtYmVyLFxuXG4gIGVyYTogYnVpbGRMb2NhbGl6ZUZuKHtcbiAgICB2YWx1ZXM6IGVyYVZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6IFwid2lkZVwiLFxuICB9KSxcblxuICBxdWFydGVyOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogcXVhcnRlclZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6IFwid2lkZVwiLFxuICAgIGFyZ3VtZW50Q2FsbGJhY2s6IChxdWFydGVyKSA9PiBxdWFydGVyIC0gMSxcbiAgfSksXG5cbiAgbW9udGg6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBtb250aFZhbHVlcyxcbiAgICBkZWZhdWx0V2lkdGg6IFwid2lkZVwiLFxuICB9KSxcblxuICBkYXk6IGJ1aWxkTG9jYWxpemVGbih7XG4gICAgdmFsdWVzOiBkYXlWYWx1ZXMsXG4gICAgZGVmYXVsdFdpZHRoOiBcIndpZGVcIixcbiAgfSksXG5cbiAgZGF5UGVyaW9kOiBidWlsZExvY2FsaXplRm4oe1xuICAgIHZhbHVlczogZGF5UGVyaW9kVmFsdWVzLFxuICAgIGRlZmF1bHRXaWR0aDogXCJ3aWRlXCIsXG4gICAgZm9ybWF0dGluZ1ZhbHVlczogZm9ybWF0dGluZ0RheVBlcmlvZFZhbHVlcyxcbiAgICBkZWZhdWx0Rm9ybWF0dGluZ1dpZHRoOiBcIndpZGVcIixcbiAgfSksXG59O1xuIiwgImV4cG9ydCBmdW5jdGlvbiBidWlsZE1hdGNoRm4oYXJncykge1xuICByZXR1cm4gKHN0cmluZywgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgY29uc3Qgd2lkdGggPSBvcHRpb25zLndpZHRoO1xuXG4gICAgY29uc3QgbWF0Y2hQYXR0ZXJuID1cbiAgICAgICh3aWR0aCAmJiBhcmdzLm1hdGNoUGF0dGVybnNbd2lkdGhdKSB8fFxuICAgICAgYXJncy5tYXRjaFBhdHRlcm5zW2FyZ3MuZGVmYXVsdE1hdGNoV2lkdGhdO1xuICAgIGNvbnN0IG1hdGNoUmVzdWx0ID0gc3RyaW5nLm1hdGNoKG1hdGNoUGF0dGVybik7XG5cbiAgICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlZFN0cmluZyA9IG1hdGNoUmVzdWx0WzBdO1xuXG4gICAgY29uc3QgcGFyc2VQYXR0ZXJucyA9XG4gICAgICAod2lkdGggJiYgYXJncy5wYXJzZVBhdHRlcm5zW3dpZHRoXSkgfHxcbiAgICAgIGFyZ3MucGFyc2VQYXR0ZXJuc1thcmdzLmRlZmF1bHRQYXJzZVdpZHRoXTtcblxuICAgIGNvbnN0IGtleSA9IEFycmF5LmlzQXJyYXkocGFyc2VQYXR0ZXJucylcbiAgICAgID8gZmluZEluZGV4KHBhcnNlUGF0dGVybnMsIChwYXR0ZXJuKSA9PiBwYXR0ZXJuLnRlc3QobWF0Y2hlZFN0cmluZykpXG4gICAgICA6IC8vIFtUT0RPXSAtLSBJIGNoYWxsZW5nZSB5b3UgdG8gZml4IHRoZSB0eXBlXG4gICAgICAgIGZpbmRLZXkocGFyc2VQYXR0ZXJucywgKHBhdHRlcm4pID0+IHBhdHRlcm4udGVzdChtYXRjaGVkU3RyaW5nKSk7XG5cbiAgICBsZXQgdmFsdWU7XG5cbiAgICB2YWx1ZSA9IGFyZ3MudmFsdWVDYWxsYmFjayA/IGFyZ3MudmFsdWVDYWxsYmFjayhrZXkpIDoga2V5O1xuICAgIHZhbHVlID0gb3B0aW9ucy52YWx1ZUNhbGxiYWNrXG4gICAgICA/IC8vIFtUT0RPXSAtLSBJIGNoYWxsZW5nZSB5b3UgdG8gZml4IHRoZSB0eXBlXG4gICAgICAgIG9wdGlvbnMudmFsdWVDYWxsYmFjayh2YWx1ZSlcbiAgICAgIDogdmFsdWU7XG5cbiAgICBjb25zdCByZXN0ID0gc3RyaW5nLnNsaWNlKG1hdGNoZWRTdHJpbmcubGVuZ3RoKTtcblxuICAgIHJldHVybiB7IHZhbHVlLCByZXN0IH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGZpbmRLZXkob2JqZWN0LCBwcmVkaWNhdGUpIHtcbiAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgaWYgKFxuICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwga2V5KSAmJlxuICAgICAgcHJlZGljYXRlKG9iamVjdFtrZXldKVxuICAgICkge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZmluZEluZGV4KGFycmF5LCBwcmVkaWNhdGUpIHtcbiAgZm9yIChsZXQga2V5ID0gMDsga2V5IDwgYXJyYXkubGVuZ3RoOyBrZXkrKykge1xuICAgIGlmIChwcmVkaWNhdGUoYXJyYXlba2V5XSkpIHtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuICB9XG4gIHJldHVybiB1bmRlZmluZWQ7XG59XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkTWF0Y2hQYXR0ZXJuRm4oYXJncykge1xuICByZXR1cm4gKHN0cmluZywgb3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgY29uc3QgbWF0Y2hSZXN1bHQgPSBzdHJpbmcubWF0Y2goYXJncy5tYXRjaFBhdHRlcm4pO1xuICAgIGlmICghbWF0Y2hSZXN1bHQpIHJldHVybiBudWxsO1xuICAgIGNvbnN0IG1hdGNoZWRTdHJpbmcgPSBtYXRjaFJlc3VsdFswXTtcblxuICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gc3RyaW5nLm1hdGNoKGFyZ3MucGFyc2VQYXR0ZXJuKTtcbiAgICBpZiAoIXBhcnNlUmVzdWx0KSByZXR1cm4gbnVsbDtcbiAgICBsZXQgdmFsdWUgPSBhcmdzLnZhbHVlQ2FsbGJhY2tcbiAgICAgID8gYXJncy52YWx1ZUNhbGxiYWNrKHBhcnNlUmVzdWx0WzBdKVxuICAgICAgOiBwYXJzZVJlc3VsdFswXTtcblxuICAgIC8vIFtUT0RPXSBJIGNoYWxsZW5nZSB5b3UgdG8gZml4IHRoZSB0eXBlXG4gICAgdmFsdWUgPSBvcHRpb25zLnZhbHVlQ2FsbGJhY2sgPyBvcHRpb25zLnZhbHVlQ2FsbGJhY2sodmFsdWUpIDogdmFsdWU7XG5cbiAgICBjb25zdCByZXN0ID0gc3RyaW5nLnNsaWNlKG1hdGNoZWRTdHJpbmcubGVuZ3RoKTtcblxuICAgIHJldHVybiB7IHZhbHVlLCByZXN0IH07XG4gIH07XG59XG4iLCAiaW1wb3J0IHsgYnVpbGRNYXRjaEZuIH0gZnJvbSBcIi4uLy4uL19saWIvYnVpbGRNYXRjaEZuLmpzXCI7XG5pbXBvcnQgeyBidWlsZE1hdGNoUGF0dGVybkZuIH0gZnJvbSBcIi4uLy4uL19saWIvYnVpbGRNYXRjaFBhdHRlcm5Gbi5qc1wiO1xuXG5jb25zdCBtYXRjaE9yZGluYWxOdW1iZXJQYXR0ZXJuID0gL14oXFxkKykodGh8c3R8bmR8cmQpPy9pO1xuY29uc3QgcGFyc2VPcmRpbmFsTnVtYmVyUGF0dGVybiA9IC9cXGQrL2k7XG5cbmNvbnN0IG1hdGNoRXJhUGF0dGVybnMgPSB7XG4gIG5hcnJvdzogL14oYnxhKS9pLFxuICBhYmJyZXZpYXRlZDogL14oYlxcLj9cXHM/Y1xcLj98YlxcLj9cXHM/Y1xcLj9cXHM/ZVxcLj98YVxcLj9cXHM/ZFxcLj98Y1xcLj9cXHM/ZVxcLj8pL2ksXG4gIHdpZGU6IC9eKGJlZm9yZSBjaHJpc3R8YmVmb3JlIGNvbW1vbiBlcmF8YW5ubyBkb21pbml8Y29tbW9uIGVyYSkvaSxcbn07XG5jb25zdCBwYXJzZUVyYVBhdHRlcm5zID0ge1xuICBhbnk6IFsvXmIvaSwgL14oYXxjKS9pXSxcbn07XG5cbmNvbnN0IG1hdGNoUXVhcnRlclBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eWzEyMzRdL2ksXG4gIGFiYnJldmlhdGVkOiAvXnFbMTIzNF0vaSxcbiAgd2lkZTogL15bMTIzNF0odGh8c3R8bmR8cmQpPyBxdWFydGVyL2ksXG59O1xuY29uc3QgcGFyc2VRdWFydGVyUGF0dGVybnMgPSB7XG4gIGFueTogWy8xL2ksIC8yL2ksIC8zL2ksIC80L2ldLFxufTtcblxuY29uc3QgbWF0Y2hNb250aFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eW2pmbWFzb25kXS9pLFxuICBhYmJyZXZpYXRlZDogL14oamFufGZlYnxtYXJ8YXByfG1heXxqdW58anVsfGF1Z3xzZXB8b2N0fG5vdnxkZWMpL2ksXG4gIHdpZGU6IC9eKGphbnVhcnl8ZmVicnVhcnl8bWFyY2h8YXByaWx8bWF5fGp1bmV8anVseXxhdWd1c3R8c2VwdGVtYmVyfG9jdG9iZXJ8bm92ZW1iZXJ8ZGVjZW1iZXIpL2ksXG59O1xuY29uc3QgcGFyc2VNb250aFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IFtcbiAgICAvXmovaSxcbiAgICAvXmYvaSxcbiAgICAvXm0vaSxcbiAgICAvXmEvaSxcbiAgICAvXm0vaSxcbiAgICAvXmovaSxcbiAgICAvXmovaSxcbiAgICAvXmEvaSxcbiAgICAvXnMvaSxcbiAgICAvXm8vaSxcbiAgICAvXm4vaSxcbiAgICAvXmQvaSxcbiAgXSxcblxuICBhbnk6IFtcbiAgICAvXmphL2ksXG4gICAgL15mL2ksXG4gICAgL15tYXIvaSxcbiAgICAvXmFwL2ksXG4gICAgL15tYXkvaSxcbiAgICAvXmp1bi9pLFxuICAgIC9eanVsL2ksXG4gICAgL15hdS9pLFxuICAgIC9ecy9pLFxuICAgIC9eby9pLFxuICAgIC9ebi9pLFxuICAgIC9eZC9pLFxuICBdLFxufTtcblxuY29uc3QgbWF0Y2hEYXlQYXR0ZXJucyA9IHtcbiAgbmFycm93OiAvXltzbXR3Zl0vaSxcbiAgc2hvcnQ6IC9eKHN1fG1vfHR1fHdlfHRofGZyfHNhKS9pLFxuICBhYmJyZXZpYXRlZDogL14oc3VufG1vbnx0dWV8d2VkfHRodXxmcml8c2F0KS9pLFxuICB3aWRlOiAvXihzdW5kYXl8bW9uZGF5fHR1ZXNkYXl8d2VkbmVzZGF5fHRodXJzZGF5fGZyaWRheXxzYXR1cmRheSkvaSxcbn07XG5jb25zdCBwYXJzZURheVBhdHRlcm5zID0ge1xuICBuYXJyb3c6IFsvXnMvaSwgL15tL2ksIC9edC9pLCAvXncvaSwgL150L2ksIC9eZi9pLCAvXnMvaV0sXG4gIGFueTogWy9ec3UvaSwgL15tL2ksIC9edHUvaSwgL153L2ksIC9edGgvaSwgL15mL2ksIC9ec2EvaV0sXG59O1xuXG5jb25zdCBtYXRjaERheVBlcmlvZFBhdHRlcm5zID0ge1xuICBuYXJyb3c6IC9eKGF8cHxtaXxufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaSxcbiAgYW55OiAvXihbYXBdXFwuP1xccz9tXFwuP3xtaWRuaWdodHxub29ufChpbiB0aGV8YXQpIChtb3JuaW5nfGFmdGVybm9vbnxldmVuaW5nfG5pZ2h0KSkvaSxcbn07XG5jb25zdCBwYXJzZURheVBlcmlvZFBhdHRlcm5zID0ge1xuICBhbnk6IHtcbiAgICBhbTogL15hL2ksXG4gICAgcG06IC9ecC9pLFxuICAgIG1pZG5pZ2h0OiAvXm1pL2ksXG4gICAgbm9vbjogL15uby9pLFxuICAgIG1vcm5pbmc6IC9tb3JuaW5nL2ksXG4gICAgYWZ0ZXJub29uOiAvYWZ0ZXJub29uL2ksXG4gICAgZXZlbmluZzogL2V2ZW5pbmcvaSxcbiAgICBuaWdodDogL25pZ2h0L2ksXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgbWF0Y2ggPSB7XG4gIG9yZGluYWxOdW1iZXI6IGJ1aWxkTWF0Y2hQYXR0ZXJuRm4oe1xuICAgIG1hdGNoUGF0dGVybjogbWF0Y2hPcmRpbmFsTnVtYmVyUGF0dGVybixcbiAgICBwYXJzZVBhdHRlcm46IHBhcnNlT3JkaW5hbE51bWJlclBhdHRlcm4sXG4gICAgdmFsdWVDYWxsYmFjazogKHZhbHVlKSA9PiBwYXJzZUludCh2YWx1ZSwgMTApLFxuICB9KSxcblxuICBlcmE6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hFcmFQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogXCJ3aWRlXCIsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VFcmFQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogXCJhbnlcIixcbiAgfSksXG5cbiAgcXVhcnRlcjogYnVpbGRNYXRjaEZuKHtcbiAgICBtYXRjaFBhdHRlcm5zOiBtYXRjaFF1YXJ0ZXJQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogXCJ3aWRlXCIsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VRdWFydGVyUGF0dGVybnMsXG4gICAgZGVmYXVsdFBhcnNlV2lkdGg6IFwiYW55XCIsXG4gICAgdmFsdWVDYWxsYmFjazogKGluZGV4KSA9PiBpbmRleCArIDEsXG4gIH0pLFxuXG4gIG1vbnRoOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoTW9udGhQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogXCJ3aWRlXCIsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VNb250aFBhdHRlcm5zLFxuICAgIGRlZmF1bHRQYXJzZVdpZHRoOiBcImFueVwiLFxuICB9KSxcblxuICBkYXk6IGJ1aWxkTWF0Y2hGbih7XG4gICAgbWF0Y2hQYXR0ZXJuczogbWF0Y2hEYXlQYXR0ZXJucyxcbiAgICBkZWZhdWx0TWF0Y2hXaWR0aDogXCJ3aWRlXCIsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VEYXlQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogXCJhbnlcIixcbiAgfSksXG5cbiAgZGF5UGVyaW9kOiBidWlsZE1hdGNoRm4oe1xuICAgIG1hdGNoUGF0dGVybnM6IG1hdGNoRGF5UGVyaW9kUGF0dGVybnMsXG4gICAgZGVmYXVsdE1hdGNoV2lkdGg6IFwiYW55XCIsXG4gICAgcGFyc2VQYXR0ZXJuczogcGFyc2VEYXlQZXJpb2RQYXR0ZXJucyxcbiAgICBkZWZhdWx0UGFyc2VXaWR0aDogXCJhbnlcIixcbiAgfSksXG59O1xuIiwgImltcG9ydCB7IGZvcm1hdERpc3RhbmNlIH0gZnJvbSBcIi4vZW4tVVMvX2xpYi9mb3JtYXREaXN0YW5jZS5qc1wiO1xuaW1wb3J0IHsgZm9ybWF0TG9uZyB9IGZyb20gXCIuL2VuLVVTL19saWIvZm9ybWF0TG9uZy5qc1wiO1xuaW1wb3J0IHsgZm9ybWF0UmVsYXRpdmUgfSBmcm9tIFwiLi9lbi1VUy9fbGliL2Zvcm1hdFJlbGF0aXZlLmpzXCI7XG5pbXBvcnQgeyBsb2NhbGl6ZSB9IGZyb20gXCIuL2VuLVVTL19saWIvbG9jYWxpemUuanNcIjtcbmltcG9ydCB7IG1hdGNoIH0gZnJvbSBcIi4vZW4tVVMvX2xpYi9tYXRjaC5qc1wiO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBMb2NhbGVzXG4gKiBAc3VtbWFyeSBFbmdsaXNoIGxvY2FsZSAoVW5pdGVkIFN0YXRlcykuXG4gKiBAbGFuZ3VhZ2UgRW5nbGlzaFxuICogQGlzby02MzktMiBlbmdcbiAqIEBhdXRob3IgU2FzaGEgS29zcyBbQGtvc3Nub2NvcnBdKGh0dHBzOi8vZ2l0aHViLmNvbS9rb3Nzbm9jb3JwKVxuICogQGF1dGhvciBMZXNoYSBLb3NzIFtAbGVzaGFrb3NzXShodHRwczovL2dpdGh1Yi5jb20vbGVzaGFrb3NzKVxuICovXG5leHBvcnQgY29uc3QgZW5VUyA9IHtcbiAgY29kZTogXCJlbi1VU1wiLFxuICBmb3JtYXREaXN0YW5jZTogZm9ybWF0RGlzdGFuY2UsXG4gIGZvcm1hdExvbmc6IGZvcm1hdExvbmcsXG4gIGZvcm1hdFJlbGF0aXZlOiBmb3JtYXRSZWxhdGl2ZSxcbiAgbG9jYWxpemU6IGxvY2FsaXplLFxuICBtYXRjaDogbWF0Y2gsXG4gIG9wdGlvbnM6IHtcbiAgICB3ZWVrU3RhcnRzT246IDAgLyogU3VuZGF5ICovLFxuICAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogMSxcbiAgfSxcbn07XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZW5VUztcbiIsICJpbXBvcnQgeyBkaWZmZXJlbmNlSW5DYWxlbmRhckRheXMgfSBmcm9tIFwiLi9kaWZmZXJlbmNlSW5DYWxlbmRhckRheXMuanNcIjtcbmltcG9ydCB7IHN0YXJ0T2ZZZWFyIH0gZnJvbSBcIi4vc3RhcnRPZlllYXIuanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZ2V0RGF5T2ZZZWFyfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZ2V0RGF5T2ZZZWFyXG4gKiBAY2F0ZWdvcnkgRGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgZGF5IG9mIHRoZSB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBkYXkgb2YgdGhlIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBkYXkgb2YgeWVhclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCBkYXkgb2YgdGhlIHllYXIgaXMgMiBKdWx5IDIwMTQ/XG4gKiBjb25zdCByZXN1bHQgPSBnZXREYXlPZlllYXIobmV3IERhdGUoMjAxNCwgNiwgMikpXG4gKiAvLz0+IDE4M1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF5T2ZZZWFyKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSwgb3B0aW9ucz8uaW4pO1xuICBjb25zdCBkaWZmID0gZGlmZmVyZW5jZUluQ2FsZW5kYXJEYXlzKF9kYXRlLCBzdGFydE9mWWVhcihfZGF0ZSkpO1xuICBjb25zdCBkYXlPZlllYXIgPSBkaWZmICsgMTtcbiAgcmV0dXJuIGRheU9mWWVhcjtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXREYXlPZlllYXI7XG4iLCAiaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5XZWVrIH0gZnJvbSBcIi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBzdGFydE9mSVNPV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZJU09XZWVrLmpzXCI7XG5pbXBvcnQgeyBzdGFydE9mSVNPV2Vla1llYXIgfSBmcm9tIFwiLi9zdGFydE9mSVNPV2Vla1llYXIuanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZ2V0SVNPV2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGdldElTT1dlZWtcbiAqIEBjYXRlZ29yeSBJU08gV2VlayBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIElTTyB3ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogR2V0IHRoZSBJU08gd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBJU08gd2Vlay1udW1iZXJpbmcgeWVhcjogaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JU09fd2Vla19kYXRlXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBUaGUgb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBJU08gd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBJU08td2VlayBudW1iZXJpbmcgeWVhciBpcyAyIEphbnVhcnkgMjAwNT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldElTT1dlZWsobmV3IERhdGUoMjAwNSwgMCwgMikpXG4gKiAvLz0+IDUzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRJU09XZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSwgb3B0aW9ucz8uaW4pO1xuICBjb25zdCBkaWZmID0gK3N0YXJ0T2ZJU09XZWVrKF9kYXRlKSAtICtzdGFydE9mSVNPV2Vla1llYXIoX2RhdGUpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2Ygd2Vla3MgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBiZWNhdXNlIHRoZSBudW1iZXIgb2ZcbiAgLy8gbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnQgKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2ZcbiAgLy8gdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KS5cbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIG1pbGxpc2Vjb25kc0luV2VlaykgKyAxO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldElTT1dlZWs7XG4iLCAiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWsgfSBmcm9tIFwiLi9zdGFydE9mV2Vlay5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBnZXRXZWVrWWVhcn0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGdldFdlZWtZZWFyXG4gKiBAY2F0ZWdvcnkgV2Vlay1OdW1iZXJpbmcgWWVhciBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKiBUaGUgZXhhY3QgY2FsY3VsYXRpb24gZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mXG4gKiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gICh3aGljaCBpcyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlaylcbiAqIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgICh3aGljaCBpcyB0aGUgZGF5IG9mIEphbnVhcnksIHdoaWNoIGlzIGFsd2F5cyBpblxuICogdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHdlZWstbnVtYmVyaW5nIHllYXIpXG4gKlxuICogV2VlayBudW1iZXJpbmc6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1dlZWsjVGhlX0lTT193ZWVrX2RhdGVfc3lzdGVtXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZ2l2ZW4gZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zLlxuICpcbiAqIEByZXR1cm5zIFRoZSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2Vla1llYXIobmV3IERhdGUoMjAwNCwgMTEsIDI2KSlcbiAqIC8vPT4gMjAwNVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDI2IERlY2VtYmVyIDIwMDQgaWYgd2VlayBzdGFydHMgb24gU2F0dXJkYXk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IHdlZWtTdGFydHNPbjogNiB9KVxuICogLy89PiAyMDA0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFdoaWNoIHdlZWsgbnVtYmVyaW5nIHllYXIgaXMgMjYgRGVjZW1iZXIgMjAwNCBpZiB0aGUgZmlyc3Qgd2VlayBjb250YWlucyA0IEphbnVhcnk/XG4gKiBjb25zdCByZXN1bHQgPSBnZXRXZWVrWWVhcihuZXcgRGF0ZSgyMDA0LCAxMSwgMjYpLCB7IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9KVxuICogLy89PiAyMDA0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWVrWWVhcihkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUsIG9wdGlvbnM/LmluKTtcbiAgY29uc3QgeWVhciA9IF9kYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSBnZXREZWZhdWx0T3B0aW9ucygpO1xuICBjb25zdCBmaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIG9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICAxO1xuXG4gIGNvbnN0IGZpcnN0V2Vla09mTmV4dFllYXIgPSBjb25zdHJ1Y3RGcm9tKG9wdGlvbnM/LmluIHx8IGRhdGUsIDApO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldEZ1bGxZZWFyKHllYXIgKyAxLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZk5leHRZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBzdGFydE9mTmV4dFllYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZk5leHRZZWFyLCBvcHRpb25zKTtcblxuICBjb25zdCBmaXJzdFdlZWtPZlRoaXNZZWFyID0gY29uc3RydWN0RnJvbShvcHRpb25zPy5pbiB8fCBkYXRlLCAwKTtcbiAgZmlyc3RXZWVrT2ZUaGlzWWVhci5zZXRGdWxsWWVhcih5ZWFyLCAwLCBmaXJzdFdlZWtDb250YWluc0RhdGUpO1xuICBmaXJzdFdlZWtPZlRoaXNZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBzdGFydE9mVGhpc1llYXIgPSBzdGFydE9mV2VlayhmaXJzdFdlZWtPZlRoaXNZZWFyLCBvcHRpb25zKTtcblxuICBpZiAoK19kYXRlID49ICtzdGFydE9mTmV4dFllYXIpIHtcbiAgICByZXR1cm4geWVhciArIDE7XG4gIH0gZWxzZSBpZiAoK19kYXRlID49ICtzdGFydE9mVGhpc1llYXIpIHtcbiAgICByZXR1cm4geWVhcjtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geWVhciAtIDE7XG4gIH1cbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBnZXRXZWVrWWVhcjtcbiIsICJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMuanNcIjtcbmltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5pbXBvcnQgeyBnZXRXZWVrWWVhciB9IGZyb20gXCIuL2dldFdlZWtZZWFyLmpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzdGFydE9mV2Vla1llYXJ9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzdGFydE9mV2Vla1llYXJcbiAqIEBjYXRlZ29yeSBXZWVrLU51bWJlcmluZyBZZWFyIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFJldHVybiB0aGUgc3RhcnQgb2YgYSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgc3RhcnQgb2YgYSBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyLlxuICogVGhlIGV4YWN0IGNhbGN1bGF0aW9uIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZlxuICogYG9wdGlvbnMud2Vla1N0YXJ0c09uYCAod2hpY2ggaXMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWspXG4gKiBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAod2hpY2ggaXMgdGhlIGRheSBvZiBKYW51YXJ5LCB3aGljaCBpcyBhbHdheXMgaW5cbiAqIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB3ZWVrLW51bWJlcmluZyB5ZWFyKVxuICpcbiAqIFdlZWsgbnVtYmVyaW5nOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XZWVrI1RoZV9JU09fd2Vla19kYXRlX3N5c3RlbVxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICogQHR5cGVQYXJhbSBSZXN1bHREYXRlIC0gVGhlIHJlc3VsdCBgRGF0ZWAgdHlwZS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgc3RhcnQgb2YgYSB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhbiBhIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1IHdpdGggZGVmYXVsdCBzZXR0aW5nczpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSlcbiAqIC8vPT4gU3VuIERlYyAyNiAyMDA0IDAwOjAwOjAwXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFRoZSBzdGFydCBvZiBhIHdlZWstbnVtYmVyaW5nIHllYXIgZm9yIDIgSnVseSAyMDA1XG4gKiAvLyBpZiBNb25kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB3ZWVrXG4gKiAvLyBhbmQgNCBKYW51YXJ5IGlzIGFsd2F5cyBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhcjpcbiAqIGNvbnN0IHJlc3VsdCA9IHN0YXJ0T2ZXZWVrWWVhcihuZXcgRGF0ZSgyMDA1LCA2LCAyKSwge1xuICogICB3ZWVrU3RhcnRzT246IDEsXG4gKiAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNFxuICogfSlcbiAqIC8vPT4gTW9uIEphbiAwMyAyMDA1IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzdGFydE9mV2Vla1llYXIoZGF0ZSwgb3B0aW9ucykge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA9XG4gICAgb3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIDE7XG5cbiAgY29uc3QgeWVhciA9IGdldFdlZWtZZWFyKGRhdGUsIG9wdGlvbnMpO1xuICBjb25zdCBmaXJzdFdlZWsgPSBjb25zdHJ1Y3RGcm9tKG9wdGlvbnM/LmluIHx8IGRhdGUsIDApO1xuICBmaXJzdFdlZWsuc2V0RnVsbFllYXIoeWVhciwgMCwgZmlyc3RXZWVrQ29udGFpbnNEYXRlKTtcbiAgZmlyc3RXZWVrLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICBjb25zdCBfZGF0ZSA9IHN0YXJ0T2ZXZWVrKGZpcnN0V2Vlaywgb3B0aW9ucyk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzdGFydE9mV2Vla1llYXI7XG4iLCAiaW1wb3J0IHsgbWlsbGlzZWNvbmRzSW5XZWVrIH0gZnJvbSBcIi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuL3N0YXJ0T2ZXZWVrLmpzXCI7XG5pbXBvcnQgeyBzdGFydE9mV2Vla1llYXIgfSBmcm9tIFwiLi9zdGFydE9mV2Vla1llYXIuanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZ2V0V2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGdldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIEdldCB0aGUgbG9jYWwgd2VlayBpbmRleCBvZiB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNUaGVfSVNPX3dlZWtfZGF0ZV9zeXN0ZW1cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBnaXZlbiBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgd2Vla1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBsb2NhbCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1IHdpdGggZGVmYXVsdCBvcHRpb25zP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0V2VlayhuZXcgRGF0ZSgyMDA1LCAwLCAyKSlcbiAqIC8vPT4gMlxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBXaGljaCB3ZWVrIG9mIHRoZSBsb2NhbCB3ZWVrIG51bWJlcmluZyB5ZWFyIGlzIDIgSmFudWFyeSAyMDA1LFxuICogLy8gaWYgTW9uZGF5IGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWssXG4gKiAvLyBhbmQgdGhlIGZpcnN0IHdlZWsgb2YgdGhlIHllYXIgYWx3YXlzIGNvbnRhaW5zIDQgSmFudWFyeT9cbiAqIGNvbnN0IHJlc3VsdCA9IGdldFdlZWsobmV3IERhdGUoMjAwNSwgMCwgMiksIHtcbiAqICAgd2Vla1N0YXJ0c09uOiAxLFxuICogICBmaXJzdFdlZWtDb250YWluc0RhdGU6IDRcbiAqIH0pXG4gKiAvLz0+IDUzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXZWVrKGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgX2RhdGUgPSB0b0RhdGUoZGF0ZSwgb3B0aW9ucz8uaW4pO1xuICBjb25zdCBkaWZmID0gK3N0YXJ0T2ZXZWVrKF9kYXRlLCBvcHRpb25zKSAtICtzdGFydE9mV2Vla1llYXIoX2RhdGUsIG9wdGlvbnMpO1xuXG4gIC8vIFJvdW5kIHRoZSBudW1iZXIgb2Ygd2Vla3MgdG8gdGhlIG5lYXJlc3QgaW50ZWdlciBiZWNhdXNlIHRoZSBudW1iZXIgb2ZcbiAgLy8gbWlsbGlzZWNvbmRzIGluIGEgd2VlayBpcyBub3QgY29uc3RhbnQgKGUuZy4gaXQncyBkaWZmZXJlbnQgaW4gdGhlIHdlZWsgb2ZcbiAgLy8gdGhlIGRheWxpZ2h0IHNhdmluZyB0aW1lIGNsb2NrIHNoaWZ0KS5cbiAgcmV0dXJuIE1hdGgucm91bmQoZGlmZiAvIG1pbGxpc2Vjb25kc0luV2VlaykgKyAxO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldFdlZWs7XG4iLCAiZXhwb3J0IGZ1bmN0aW9uIGFkZExlYWRpbmdaZXJvcyhudW1iZXIsIHRhcmdldExlbmd0aCkge1xuICBjb25zdCBzaWduID0gbnVtYmVyIDwgMCA/IFwiLVwiIDogXCJcIjtcbiAgY29uc3Qgb3V0cHV0ID0gTWF0aC5hYnMobnVtYmVyKS50b1N0cmluZygpLnBhZFN0YXJ0KHRhcmdldExlbmd0aCwgXCIwXCIpO1xuICByZXR1cm4gc2lnbiArIG91dHB1dDtcbn1cbiIsICJpbXBvcnQgeyBhZGRMZWFkaW5nWmVyb3MgfSBmcm9tIFwiLi4vYWRkTGVhZGluZ1plcm9zLmpzXCI7XG5cbi8qXG4gKiB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFVuaXQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICBhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBBKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBkICB8IERheSBvZiBtb250aCAgICAgICAgICAgICAgICAgICB8ICBEICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBoICB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICB8ICBIICB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBtICB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICBNICB8IE1vbnRoICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICBzICB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICB8ICBTICB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICB8XG4gKiB8ICB5ICB8IFllYXIgKGFicykgICAgICAgICAgICAgICAgICAgICB8ICBZICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgKiBhcmUgbm90IGltcGxlbWVudGVkIGJ1dCByZXNlcnZlZCBieSBVbmljb2RlIHN0YW5kYXJkLlxuICovXG5cbmV4cG9ydCBjb25zdCBsaWdodEZvcm1hdHRlcnMgPSB7XG4gIC8vIFllYXJcbiAgeShkYXRlLCB0b2tlbikge1xuICAgIC8vIEZyb20gaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS0zMS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9Gb3JtYXRfdG9rZW5zXG4gICAgLy8gfCBZZWFyICAgICB8ICAgICB5IHwgeXkgfCAgIHl5eSB8ICB5eXl5IHwgeXl5eXkgfFxuICAgIC8vIHwtLS0tLS0tLS0tfC0tLS0tLS18LS0tLXwtLS0tLS0tfC0tLS0tLS18LS0tLS0tLXxcbiAgICAvLyB8IEFEIDEgICAgIHwgICAgIDEgfCAwMSB8ICAgMDAxIHwgIDAwMDEgfCAwMDAwMSB8XG4gICAgLy8gfCBBRCAxMiAgICB8ICAgIDEyIHwgMTIgfCAgIDAxMiB8ICAwMDEyIHwgMDAwMTIgfFxuICAgIC8vIHwgQUQgMTIzICAgfCAgIDEyMyB8IDIzIHwgICAxMjMgfCAgMDEyMyB8IDAwMTIzIHxcbiAgICAvLyB8IEFEIDEyMzQgIHwgIDEyMzQgfCAzNCB8ICAxMjM0IHwgIDEyMzQgfCAwMTIzNCB8XG4gICAgLy8gfCBBRCAxMjM0NSB8IDEyMzQ1IHwgNDUgfCAxMjM0NSB8IDEyMzQ1IHwgMTIzNDUgfFxuXG4gICAgY29uc3Qgc2lnbmVkWWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICAvLyBSZXR1cm5zIDEgZm9yIDEgQkMgKHdoaWNoIGlzIHllYXIgMCBpbiBKYXZhU2NyaXB0KVxuICAgIGNvbnN0IHllYXIgPSBzaWduZWRZZWFyID4gMCA/IHNpZ25lZFllYXIgOiAxIC0gc2lnbmVkWWVhcjtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHRva2VuID09PSBcInl5XCIgPyB5ZWFyICUgMTAwIDogeWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBNb250aFxuICBNKGRhdGUsIHRva2VuKSB7XG4gICAgY29uc3QgbW9udGggPSBkYXRlLmdldE1vbnRoKCk7XG4gICAgcmV0dXJuIHRva2VuID09PSBcIk1cIiA/IFN0cmluZyhtb250aCArIDEpIDogYWRkTGVhZGluZ1plcm9zKG1vbnRoICsgMSwgMik7XG4gIH0sXG5cbiAgLy8gRGF5IG9mIHRoZSBtb250aFxuICBkKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldERhdGUoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBBTSBvciBQTVxuICBhKGRhdGUsIHRva2VuKSB7XG4gICAgY29uc3QgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF0ZS5nZXRIb3VycygpIC8gMTIgPj0gMSA/IFwicG1cIiA6IFwiYW1cIjtcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJhXCI6XG4gICAgICBjYXNlIFwiYWFcIjpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgY2FzZSBcImFhYVwiOlxuICAgICAgICByZXR1cm4gZGF5UGVyaW9kRW51bVZhbHVlO1xuICAgICAgY2FzZSBcImFhYWFhXCI6XG4gICAgICAgIHJldHVybiBkYXlQZXJpb2RFbnVtVmFsdWVbMF07XG4gICAgICBjYXNlIFwiYWFhYVwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGRheVBlcmlvZEVudW1WYWx1ZSA9PT0gXCJhbVwiID8gXCJhLm0uXCIgOiBcInAubS5cIjtcbiAgICB9XG4gIH0sXG5cbiAgLy8gSG91ciBbMS0xMl1cbiAgaChkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRIb3VycygpICUgMTIgfHwgMTIsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG5cbiAgLy8gSG91ciBbMC0yM11cbiAgSChkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRIb3VycygpLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIE1pbnV0ZVxuICBtKGRhdGUsIHRva2VuKSB7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhkYXRlLmdldE1pbnV0ZXMoKSwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBTZWNvbmRcbiAgcyhkYXRlLCB0b2tlbikge1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF0ZS5nZXRTZWNvbmRzKCksIHRva2VuLmxlbmd0aCk7XG4gIH0sXG5cbiAgLy8gRnJhY3Rpb24gb2Ygc2Vjb25kXG4gIFMoZGF0ZSwgdG9rZW4pIHtcbiAgICBjb25zdCBudW1iZXJPZkRpZ2l0cyA9IHRva2VuLmxlbmd0aDtcbiAgICBjb25zdCBtaWxsaXNlY29uZHMgPSBkYXRlLmdldE1pbGxpc2Vjb25kcygpO1xuICAgIGNvbnN0IGZyYWN0aW9uYWxTZWNvbmRzID0gTWF0aC50cnVuYyhcbiAgICAgIG1pbGxpc2Vjb25kcyAqIE1hdGgucG93KDEwLCBudW1iZXJPZkRpZ2l0cyAtIDMpLFxuICAgICk7XG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhmcmFjdGlvbmFsU2Vjb25kcywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcbn07XG4iLCAiaW1wb3J0IHsgZ2V0RGF5T2ZZZWFyIH0gZnJvbSBcIi4uLy4uL2dldERheU9mWWVhci5qc1wiO1xuaW1wb3J0IHsgZ2V0SVNPV2VlayB9IGZyb20gXCIuLi8uLi9nZXRJU09XZWVrLmpzXCI7XG5pbXBvcnQgeyBnZXRJU09XZWVrWWVhciB9IGZyb20gXCIuLi8uLi9nZXRJU09XZWVrWWVhci5qc1wiO1xuaW1wb3J0IHsgZ2V0V2VlayB9IGZyb20gXCIuLi8uLi9nZXRXZWVrLmpzXCI7XG5pbXBvcnQgeyBnZXRXZWVrWWVhciB9IGZyb20gXCIuLi8uLi9nZXRXZWVrWWVhci5qc1wiO1xuXG5pbXBvcnQgeyBhZGRMZWFkaW5nWmVyb3MgfSBmcm9tIFwiLi4vYWRkTGVhZGluZ1plcm9zLmpzXCI7XG5pbXBvcnQgeyBsaWdodEZvcm1hdHRlcnMgfSBmcm9tIFwiLi9saWdodEZvcm1hdHRlcnMuanNcIjtcblxuY29uc3QgZGF5UGVyaW9kRW51bSA9IHtcbiAgYW06IFwiYW1cIixcbiAgcG06IFwicG1cIixcbiAgbWlkbmlnaHQ6IFwibWlkbmlnaHRcIixcbiAgbm9vbjogXCJub29uXCIsXG4gIG1vcm5pbmc6IFwibW9ybmluZ1wiLFxuICBhZnRlcm5vb246IFwiYWZ0ZXJub29uXCIsXG4gIGV2ZW5pbmc6IFwiZXZlbmluZ1wiLFxuICBuaWdodDogXCJuaWdodFwiLFxufTtcblxuLypcbiAqIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgVW5pdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgIGEgIHwgQU0sIFBNICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEEqIHwgTWlsbGlzZWNvbmRzIGluIGRheSAgICAgICAgICAgIHxcbiAqIHwgIGIgIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgIHwgIEIgIHwgRmxleGlibGUgZGF5IHBlcmlvZCAgICAgICAgICAgIHxcbiAqIHwgIGMgIHwgU3RhbmQtYWxvbmUgbG9jYWwgZGF5IG9mIHdlZWsgIHwgIEMqIHwgTG9jYWxpemVkIGhvdXIgdy8gZGF5IHBlcmlvZCAgIHxcbiAqIHwgIGQgIHwgRGF5IG9mIG1vbnRoICAgICAgICAgICAgICAgICAgIHwgIEQgIHwgRGF5IG9mIHllYXIgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGUgIHwgTG9jYWwgZGF5IG9mIHdlZWsgICAgICAgICAgICAgIHwgIEUgIHwgRGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGYgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIEYqIHwgRGF5IG9mIHdlZWsgaW4gbW9udGggICAgICAgICAgIHxcbiAqIHwgIGcqIHwgTW9kaWZpZWQgSnVsaWFuIGRheSAgICAgICAgICAgIHwgIEcgIHwgRXJhICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGggIHwgSG91ciBbMS0xMl0gICAgICAgICAgICAgICAgICAgIHwgIEggIHwgSG91ciBbMC0yM10gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGkhIHwgSVNPIGRheSBvZiB3ZWVrICAgICAgICAgICAgICAgIHwgIEkhIHwgSVNPIHdlZWsgb2YgeWVhciAgICAgICAgICAgICAgIHxcbiAqIHwgIGoqIHwgTG9jYWxpemVkIGhvdXIgdy8gZGF5IHBlcmlvZCAgIHwgIEoqIHwgTG9jYWxpemVkIGhvdXIgdy9vIGRheSBwZXJpb2QgIHxcbiAqIHwgIGsgIHwgSG91ciBbMS0yNF0gICAgICAgICAgICAgICAgICAgIHwgIEsgIHwgSG91ciBbMC0xMV0gICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIGwqIHwgKGRlcHJlY2F0ZWQpICAgICAgICAgICAgICAgICAgIHwgIEwgIHwgU3RhbmQtYWxvbmUgbW9udGggICAgICAgICAgICAgIHxcbiAqIHwgIG0gIHwgTWludXRlICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE0gIHwgTW9udGggICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG4gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIE4gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIG8hIHwgT3JkaW5hbCBudW1iZXIgbW9kaWZpZXIgICAgICAgIHwgIE8gIHwgVGltZXpvbmUgKEdNVCkgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHAhIHwgTG9uZyBsb2NhbGl6ZWQgdGltZSAgICAgICAgICAgIHwgIFAhIHwgTG9uZyBsb2NhbGl6ZWQgZGF0ZSAgICAgICAgICAgIHxcbiAqIHwgIHEgIHwgU3RhbmQtYWxvbmUgcXVhcnRlciAgICAgICAgICAgIHwgIFEgIHwgUXVhcnRlciAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHIqIHwgUmVsYXRlZCBHcmVnb3JpYW4geWVhciAgICAgICAgIHwgIFIhIHwgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgIHxcbiAqIHwgIHMgIHwgU2Vjb25kICAgICAgICAgICAgICAgICAgICAgICAgIHwgIFMgIHwgRnJhY3Rpb24gb2Ygc2Vjb25kICAgICAgICAgICAgIHxcbiAqIHwgIHQhIHwgU2Vjb25kcyB0aW1lc3RhbXAgICAgICAgICAgICAgIHwgIFQhIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgIHxcbiAqIHwgIHUgIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgIHwgIFUqIHwgQ3ljbGljIHllYXIgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHYqIHwgVGltZXpvbmUgKGdlbmVyaWMgbm9uLWxvY2F0LikgIHwgIFYqIHwgVGltZXpvbmUgKGxvY2F0aW9uKSAgICAgICAgICAgIHxcbiAqIHwgIHcgIHwgTG9jYWwgd2VlayBvZiB5ZWFyICAgICAgICAgICAgIHwgIFcqIHwgV2VlayBvZiBtb250aCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgIHggIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgIHwgIFggIHwgVGltZXpvbmUgKElTTy04NjAxKSAgICAgICAgICAgIHxcbiAqIHwgIHkgIHwgWWVhciAoYWJzKSAgICAgICAgICAgICAgICAgICAgIHwgIFkgIHwgTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhciAgICAgIHxcbiAqIHwgIHogIHwgVGltZXpvbmUgKHNwZWNpZmljIG5vbi1sb2NhdC4pIHwgIFoqIHwgVGltZXpvbmUgKGFsaWFzZXMpICAgICAgICAgICAgIHxcbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAqIGFyZSBub3QgaW1wbGVtZW50ZWQgYnV0IHJlc2VydmVkIGJ5IFVuaWNvZGUgc3RhbmRhcmQuXG4gKlxuICogTGV0dGVycyBtYXJrZWQgYnkgISBhcmUgbm9uLXN0YW5kYXJkLCBidXQgaW1wbGVtZW50ZWQgYnkgZGF0ZS1mbnM6XG4gKiAtIGBvYCBtb2RpZmllcyB0aGUgcHJldmlvdXMgdG9rZW4gdG8gdHVybiBpdCBpbnRvIGFuIG9yZGluYWwgKHNlZSBgZm9ybWF0YCBkb2NzKVxuICogLSBgaWAgaXMgSVNPIGRheSBvZiB3ZWVrLiBGb3IgYGlgIGFuZCBgaWlgIGlzIHJldHVybnMgbnVtZXJpYyBJU08gd2VlayBkYXlzLFxuICogICBpLmUuIDcgZm9yIFN1bmRheSwgMSBmb3IgTW9uZGF5LCBldGMuXG4gKiAtIGBJYCBpcyBJU08gd2VlayBvZiB5ZWFyLCBhcyBvcHBvc2VkIHRvIGB3YCB3aGljaCBpcyBsb2NhbCB3ZWVrIG9mIHllYXIuXG4gKiAtIGBSYCBpcyBJU08gd2Vlay1udW1iZXJpbmcgeWVhciwgYXMgb3Bwb3NlZCB0byBgWWAgd2hpY2ggaXMgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhci5cbiAqICAgYFJgIGlzIHN1cHBvc2VkIHRvIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgSWAgYW5kIGBpYFxuICogICBmb3IgdW5pdmVyc2FsIElTTyB3ZWVrLW51bWJlcmluZyBkYXRlLCB3aGVyZWFzXG4gKiAgIGBZYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYHdgIGFuZCBgZWBcbiAqICAgZm9yIHdlZWstbnVtYmVyaW5nIGRhdGUgc3BlY2lmaWMgdG8gdGhlIGxvY2FsZS5cbiAqIC0gYFBgIGlzIGxvbmcgbG9jYWxpemVkIGRhdGUgZm9ybWF0XG4gKiAtIGBwYCBpcyBsb25nIGxvY2FsaXplZCB0aW1lIGZvcm1hdFxuICovXG5cbmV4cG9ydCBjb25zdCBmb3JtYXR0ZXJzID0ge1xuICAvLyBFcmFcbiAgRzogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGNvbnN0IGVyYSA9IGRhdGUuZ2V0RnVsbFllYXIoKSA+IDAgPyAxIDogMDtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBBRCwgQkNcbiAgICAgIGNhc2UgXCJHXCI6XG4gICAgICBjYXNlIFwiR0dcIjpcbiAgICAgIGNhc2UgXCJHR0dcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHsgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIiB9KTtcbiAgICAgIC8vIEEsIEJcbiAgICAgIGNhc2UgXCJHR0dHR1wiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZXJhKGVyYSwgeyB3aWR0aDogXCJuYXJyb3dcIiB9KTtcbiAgICAgIC8vIEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0XG4gICAgICBjYXNlIFwiR0dHR1wiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmVyYShlcmEsIHsgd2lkdGg6IFwid2lkZVwiIH0pO1xuICAgIH1cbiAgfSxcblxuICAvLyBZZWFyXG4gIHk6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICAvLyBPcmRpbmFsIG51bWJlclxuICAgIGlmICh0b2tlbiA9PT0gXCJ5b1wiKSB7XG4gICAgICBjb25zdCBzaWduZWRZZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgICAgLy8gUmV0dXJucyAxIGZvciAxIEJDICh3aGljaCBpcyB5ZWFyIDAgaW4gSmF2YVNjcmlwdClcbiAgICAgIGNvbnN0IHllYXIgPSBzaWduZWRZZWFyID4gMCA/IHNpZ25lZFllYXIgOiAxIC0gc2lnbmVkWWVhcjtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHllYXIsIHsgdW5pdDogXCJ5ZWFyXCIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy55KGRhdGUsIHRva2VuKTtcbiAgfSxcblxuICAvLyBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gIFk6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBzaWduZWRXZWVrWWVhciA9IGdldFdlZWtZZWFyKGRhdGUsIG9wdGlvbnMpO1xuICAgIC8vIFJldHVybnMgMSBmb3IgMSBCQyAod2hpY2ggaXMgeWVhciAwIGluIEphdmFTY3JpcHQpXG4gICAgY29uc3Qgd2Vla1llYXIgPSBzaWduZWRXZWVrWWVhciA+IDAgPyBzaWduZWRXZWVrWWVhciA6IDEgLSBzaWduZWRXZWVrWWVhcjtcblxuICAgIC8vIFR3byBkaWdpdCB5ZWFyXG4gICAgaWYgKHRva2VuID09PSBcIllZXCIpIHtcbiAgICAgIGNvbnN0IHR3b0RpZ2l0WWVhciA9IHdlZWtZZWFyICUgMTAwO1xuICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyh0d29EaWdpdFllYXIsIDIpO1xuICAgIH1cblxuICAgIC8vIE9yZGluYWwgbnVtYmVyXG4gICAgaWYgKHRva2VuID09PSBcIllvXCIpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHdlZWtZZWFyLCB7IHVuaXQ6IFwieWVhclwiIH0pO1xuICAgIH1cblxuICAgIC8vIFBhZGRpbmdcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKHdlZWtZZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG4gIFI6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbikge1xuICAgIGNvbnN0IGlzb1dlZWtZZWFyID0gZ2V0SVNPV2Vla1llYXIoZGF0ZSk7XG5cbiAgICAvLyBQYWRkaW5nXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhpc29XZWVrWWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBFeHRlbmRlZCB5ZWFyLiBUaGlzIGlzIGEgc2luZ2xlIG51bWJlciBkZXNpZ25hdGluZyB0aGUgeWVhciBvZiB0aGlzIGNhbGVuZGFyIHN5c3RlbS5cbiAgLy8gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIGxvY2FsaXplcnMgYXJlIEIuQy4geWVhcnM6XG4gIC8vIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gIC8vIHwtLS0tLS18LS0tLS18LS0tLS18XG4gIC8vIHwgQUMgMSB8ICAgMSB8ICAgMSB8XG4gIC8vIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gIC8vIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gIC8vIEFsc28gYHl5YCBhbHdheXMgcmV0dXJucyB0aGUgbGFzdCB0d28gZGlnaXRzIG9mIGEgeWVhcixcbiAgLy8gd2hpbGUgYHV1YCBwYWRzIHNpbmdsZSBkaWdpdCB5ZWFycyB0byAyIGNoYXJhY3RlcnMgYW5kIHJldHVybnMgb3RoZXIgeWVhcnMgdW5jaGFuZ2VkLlxuICB1OiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4pIHtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoeWVhciwgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBRdWFydGVyXG4gIFE6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBjb25zdCBxdWFydGVyID0gTWF0aC5jZWlsKChkYXRlLmdldE1vbnRoKCkgKyAxKSAvIDMpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIDMsIDRcbiAgICAgIGNhc2UgXCJRXCI6XG4gICAgICAgIHJldHVybiBTdHJpbmcocXVhcnRlcik7XG4gICAgICAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgY2FzZSBcIlFRXCI6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MocXVhcnRlciwgMik7XG4gICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgIGNhc2UgXCJRb1wiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihxdWFydGVyLCB7IHVuaXQ6IFwicXVhcnRlclwiIH0pO1xuICAgICAgLy8gUTEsIFEyLCBRMywgUTRcbiAgICAgIGNhc2UgXCJRUVFcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gMSwgMiwgMywgNCAobmFycm93IHF1YXJ0ZXI7IGNvdWxkIGJlIG5vdCBudW1lcmljYWwpXG4gICAgICBjYXNlIFwiUVFRUVFcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiBcIm5hcnJvd1wiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICAgIC8vIDFzdCBxdWFydGVyLCAybmQgcXVhcnRlciwgLi4uXG4gICAgICBjYXNlIFwiUVFRUVwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLnF1YXJ0ZXIocXVhcnRlciwge1xuICAgICAgICAgIHdpZHRoOiBcIndpZGVcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8vIFN0YW5kLWFsb25lIHF1YXJ0ZXJcbiAgcTogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGNvbnN0IHF1YXJ0ZXIgPSBNYXRoLmNlaWwoKGRhdGUuZ2V0TW9udGgoKSArIDEpIC8gMyk7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMSwgMiwgMywgNFxuICAgICAgY2FzZSBcInFcIjpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhxdWFydGVyKTtcbiAgICAgIC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICBjYXNlIFwicXFcIjpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhxdWFydGVyLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgY2FzZSBcInFvXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKHF1YXJ0ZXIsIHsgdW5pdDogXCJxdWFydGVyXCIgfSk7XG4gICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuICAgICAgY2FzZSBcInFxcVwiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgIGNhc2UgXCJxcXFxcVwiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJzdGFuZGFsb25lXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi5cbiAgICAgIGNhc2UgXCJxcXFxXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUucXVhcnRlcihxdWFydGVyLCB7XG4gICAgICAgICAgd2lkdGg6IFwid2lkZVwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwic3RhbmRhbG9uZVwiLFxuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gTW9udGhcbiAgTTogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJNXCI6XG4gICAgICBjYXNlIFwiTU1cIjpcbiAgICAgICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5NKGRhdGUsIHRva2VuKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgIGNhc2UgXCJNb1wiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihtb250aCArIDEsIHsgdW5pdDogXCJtb250aFwiIH0pO1xuICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG4gICAgICBjYXNlIFwiTU1NXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gSiwgRiwgLi4uLCBEXG4gICAgICBjYXNlIFwiTU1NTU1cIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgIGNhc2UgXCJNTU1NXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHsgd2lkdGg6IFwid2lkZVwiLCBjb250ZXh0OiBcImZvcm1hdHRpbmdcIiB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gU3RhbmQtYWxvbmUgbW9udGhcbiAgTDogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIDEsIDIsIC4uLiwgMTJcbiAgICAgIGNhc2UgXCJMXCI6XG4gICAgICAgIHJldHVybiBTdHJpbmcobW9udGggKyAxKTtcbiAgICAgIC8vIDAxLCAwMiwgLi4uLCAxMlxuICAgICAgY2FzZSBcIkxMXCI6XG4gICAgICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MobW9udGggKyAxLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgIGNhc2UgXCJMb1wiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihtb250aCArIDEsIHsgdW5pdDogXCJtb250aFwiIH0pO1xuICAgICAgLy8gSmFuLCBGZWIsIC4uLiwgRGVjXG4gICAgICBjYXNlIFwiTExMXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5tb250aChtb250aCwge1xuICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgY29udGV4dDogXCJzdGFuZGFsb25lXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gSiwgRiwgLi4uLCBEXG4gICAgICBjYXNlIFwiTExMTExcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLm1vbnRoKG1vbnRoLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJzdGFuZGFsb25lXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgIGNhc2UgXCJMTExMXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUubW9udGgobW9udGgsIHsgd2lkdGg6IFwid2lkZVwiLCBjb250ZXh0OiBcInN0YW5kYWxvbmVcIiB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gTG9jYWwgd2VlayBvZiB5ZWFyXG4gIHc6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCB3ZWVrID0gZ2V0V2VlayhkYXRlLCBvcHRpb25zKTtcblxuICAgIGlmICh0b2tlbiA9PT0gXCJ3b1wiKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcih3ZWVrLCB7IHVuaXQ6IFwid2Vla1wiIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3Mod2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBJU08gd2VlayBvZiB5ZWFyXG4gIEk6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBjb25zdCBpc29XZWVrID0gZ2V0SVNPV2VlayhkYXRlKTtcblxuICAgIGlmICh0b2tlbiA9PT0gXCJJb1wiKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihpc29XZWVrLCB7IHVuaXQ6IFwid2Vla1wiIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaXNvV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBEYXkgb2YgdGhlIG1vbnRoXG4gIGQ6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09IFwiZG9cIikge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXREYXRlKCksIHsgdW5pdDogXCJkYXRlXCIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5kKGRhdGUsIHRva2VuKTtcbiAgfSxcblxuICAvLyBEYXkgb2YgeWVhclxuICBEOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgY29uc3QgZGF5T2ZZZWFyID0gZ2V0RGF5T2ZZZWFyKGRhdGUpO1xuXG4gICAgaWYgKHRva2VuID09PSBcIkRvXCIpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRheU9mWWVhciwgeyB1bml0OiBcImRheU9mWWVhclwiIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoZGF5T2ZZZWFyLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIERheSBvZiB3ZWVrXG4gIEU6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBjb25zdCBkYXlPZldlZWsgPSBkYXRlLmdldERheSgpO1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIFR1ZVxuICAgICAgY2FzZSBcIkVcIjpcbiAgICAgIGNhc2UgXCJFRVwiOlxuICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gVFxuICAgICAgY2FzZSBcIkVFRUVFXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVcbiAgICAgIGNhc2UgXCJFRUVFRUVcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogXCJzaG9ydFwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgXCJFRUVFXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiBcIndpZGVcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8vIExvY2FsIGRheSBvZiB3ZWVrXG4gIGU6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBkYXlPZldlZWsgPSBkYXRlLmdldERheSgpO1xuICAgIGNvbnN0IGxvY2FsRGF5T2ZXZWVrID0gKGRheU9mV2VlayAtIG9wdGlvbnMud2Vla1N0YXJ0c09uICsgOCkgJSA3IHx8IDc7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gTnVtZXJpY2FsIHZhbHVlIChOdGggZGF5IG9mIHdlZWsgd2l0aCBjdXJyZW50IGxvY2FsZSBvciB3ZWVrU3RhcnRzT24pXG4gICAgICBjYXNlIFwiZVwiOlxuICAgICAgICByZXR1cm4gU3RyaW5nKGxvY2FsRGF5T2ZXZWVrKTtcbiAgICAgIC8vIFBhZGRlZCBudW1lcmljYWwgdmFsdWVcbiAgICAgIGNhc2UgXCJlZVwiOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGxvY2FsRGF5T2ZXZWVrLCAyKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDd0aFxuICAgICAgY2FzZSBcImVvXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGxvY2FsRGF5T2ZXZWVrLCB7IHVuaXQ6IFwiZGF5XCIgfSk7XG4gICAgICBjYXNlIFwiZWVlXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlIFwiZWVlZWVcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSBcImVlZWVlZVwiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiBcInNob3J0XCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSBcImVlZWVcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6IFwid2lkZVwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gU3RhbmQtYWxvbmUgbG9jYWwgZGF5IG9mIHdlZWtcbiAgYzogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSwgb3B0aW9ucykge1xuICAgIGNvbnN0IGRheU9mV2VlayA9IGRhdGUuZ2V0RGF5KCk7XG4gICAgY29uc3QgbG9jYWxEYXlPZldlZWsgPSAoZGF5T2ZXZWVrIC0gb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA4KSAlIDcgfHwgNztcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBOdW1lcmljYWwgdmFsdWUgKHNhbWUgYXMgaW4gYGVgKVxuICAgICAgY2FzZSBcImNcIjpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhsb2NhbERheU9mV2Vlayk7XG4gICAgICAvLyBQYWRkZWQgbnVtZXJpY2FsIHZhbHVlXG4gICAgICBjYXNlIFwiY2NcIjpcbiAgICAgICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhsb2NhbERheU9mV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDd0aFxuICAgICAgY2FzZSBcImNvXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGxvY2FsRGF5T2ZXZWVrLCB7IHVuaXQ6IFwiZGF5XCIgfSk7XG4gICAgICBjYXNlIFwiY2NjXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlIFwiY2NjY2NcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSBcImNjY2NjY1wiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiBcInNob3J0XCIsXG4gICAgICAgICAgY29udGV4dDogXCJzdGFuZGFsb25lXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSBcImNjY2NcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6IFwid2lkZVwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwic3RhbmRhbG9uZVwiLFxuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gSVNPIGRheSBvZiB3ZWVrXG4gIGk6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBjb25zdCBkYXlPZldlZWsgPSBkYXRlLmdldERheSgpO1xuICAgIGNvbnN0IGlzb0RheU9mV2VlayA9IGRheU9mV2VlayA9PT0gMCA/IDcgOiBkYXlPZldlZWs7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMlxuICAgICAgY2FzZSBcImlcIjpcbiAgICAgICAgcmV0dXJuIFN0cmluZyhpc29EYXlPZldlZWspO1xuICAgICAgLy8gMDJcbiAgICAgIGNhc2UgXCJpaVwiOlxuICAgICAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKGlzb0RheU9mV2VlaywgdG9rZW4ubGVuZ3RoKTtcbiAgICAgIC8vIDJuZFxuICAgICAgY2FzZSBcImlvXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGlzb0RheU9mV2VlaywgeyB1bml0OiBcImRheVwiIH0pO1xuICAgICAgLy8gVHVlXG4gICAgICBjYXNlIFwiaWlpXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlIFwiaWlpaWlcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheShkYXlPZldlZWssIHtcbiAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSBcImlpaWlpaVwiOlxuICAgICAgICByZXR1cm4gbG9jYWxpemUuZGF5KGRheU9mV2Vlaywge1xuICAgICAgICAgIHdpZHRoOiBcInNob3J0XCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSBcImlpaWlcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXkoZGF5T2ZXZWVrLCB7XG4gICAgICAgICAgd2lkdGg6IFwid2lkZVwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gQU0gb3IgUE1cbiAgYTogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGNvbnN0IGhvdXJzID0gZGF0ZS5nZXRIb3VycygpO1xuICAgIGNvbnN0IGRheVBlcmlvZEVudW1WYWx1ZSA9IGhvdXJzIC8gMTIgPj0gMSA/IFwicG1cIiA6IFwiYW1cIjtcblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJhXCI6XG4gICAgICBjYXNlIFwiYWFcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgXCJhYWFcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplXG4gICAgICAgICAgLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FzZSBcImFhYWFhXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSBcImFhYWFcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6IFwid2lkZVwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gQU0sIFBNLCBtaWRuaWdodCwgbm9vblxuICBiOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgY29uc3QgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gICAgbGV0IGRheVBlcmlvZEVudW1WYWx1ZTtcbiAgICBpZiAoaG91cnMgPT09IDEyKSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLm5vb247XG4gICAgfSBlbHNlIGlmIChob3VycyA9PT0gMCkge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5taWRuaWdodDtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gaG91cnMgLyAxMiA+PSAxID8gXCJwbVwiIDogXCJhbVwiO1xuICAgIH1cblxuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJiXCI6XG4gICAgICBjYXNlIFwiYmJcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgXCJiYmJcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplXG4gICAgICAgICAgLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50b0xvd2VyQ2FzZSgpO1xuICAgICAgY2FzZSBcImJiYmJiXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSBcImJiYmJcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6IFwid2lkZVwiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLy8gaW4gdGhlIG1vcm5pbmcsIGluIHRoZSBhZnRlcm5vb24sIGluIHRoZSBldmVuaW5nLCBhdCBuaWdodFxuICBCOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgY29uc3QgaG91cnMgPSBkYXRlLmdldEhvdXJzKCk7XG4gICAgbGV0IGRheVBlcmlvZEVudW1WYWx1ZTtcbiAgICBpZiAoaG91cnMgPj0gMTcpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0uZXZlbmluZztcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDEyKSB7XG4gICAgICBkYXlQZXJpb2RFbnVtVmFsdWUgPSBkYXlQZXJpb2RFbnVtLmFmdGVybm9vbjtcbiAgICB9IGVsc2UgaWYgKGhvdXJzID49IDQpIHtcbiAgICAgIGRheVBlcmlvZEVudW1WYWx1ZSA9IGRheVBlcmlvZEVudW0ubW9ybmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGF5UGVyaW9kRW51bVZhbHVlID0gZGF5UGVyaW9kRW51bS5uaWdodDtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwiQlwiOlxuICAgICAgY2FzZSBcIkJCXCI6XG4gICAgICBjYXNlIFwiQkJCXCI6XG4gICAgICAgIHJldHVybiBsb2NhbGl6ZS5kYXlQZXJpb2QoZGF5UGVyaW9kRW51bVZhbHVlLCB7XG4gICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICBjYXNlIFwiQkJCQkJcIjpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICBjYXNlIFwiQkJCQlwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGxvY2FsaXplLmRheVBlcmlvZChkYXlQZXJpb2RFbnVtVmFsdWUsIHtcbiAgICAgICAgICB3aWR0aDogXCJ3aWRlXCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICAvLyBIb3VyIFsxLTEyXVxuICBoOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSBcImhvXCIpIHtcbiAgICAgIGxldCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKSAlIDEyO1xuICAgICAgaWYgKGhvdXJzID09PSAwKSBob3VycyA9IDEyO1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaG91cnMsIHsgdW5pdDogXCJob3VyXCIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxpZ2h0Rm9ybWF0dGVycy5oKGRhdGUsIHRva2VuKTtcbiAgfSxcblxuICAvLyBIb3VyIFswLTIzXVxuICBIOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4sIGxvY2FsaXplKSB7XG4gICAgaWYgKHRva2VuID09PSBcIkhvXCIpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGRhdGUuZ2V0SG91cnMoKSwgeyB1bml0OiBcImhvdXJcIiB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLkgoZGF0ZSwgdG9rZW4pO1xuICB9LFxuXG4gIC8vIEhvdXIgWzAtMTFdXG4gIEs6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBjb25zdCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKSAlIDEyO1xuXG4gICAgaWYgKHRva2VuID09PSBcIktvXCIpIHtcbiAgICAgIHJldHVybiBsb2NhbGl6ZS5vcmRpbmFsTnVtYmVyKGhvdXJzLCB7IHVuaXQ6IFwiaG91clwiIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3MoaG91cnMsIHRva2VuLmxlbmd0aCk7XG4gIH0sXG5cbiAgLy8gSG91ciBbMS0yNF1cbiAgazogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGxldCBob3VycyA9IGRhdGUuZ2V0SG91cnMoKTtcbiAgICBpZiAoaG91cnMgPT09IDApIGhvdXJzID0gMjQ7XG5cbiAgICBpZiAodG9rZW4gPT09IFwia29cIikge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoaG91cnMsIHsgdW5pdDogXCJob3VyXCIgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFkZExlYWRpbmdaZXJvcyhob3VycywgdG9rZW4ubGVuZ3RoKTtcbiAgfSxcblxuICAvLyBNaW51dGVcbiAgbTogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBsb2NhbGl6ZSkge1xuICAgIGlmICh0b2tlbiA9PT0gXCJtb1wiKSB7XG4gICAgICByZXR1cm4gbG9jYWxpemUub3JkaW5hbE51bWJlcihkYXRlLmdldE1pbnV0ZXMoKSwgeyB1bml0OiBcIm1pbnV0ZVwiIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBsaWdodEZvcm1hdHRlcnMubShkYXRlLCB0b2tlbik7XG4gIH0sXG5cbiAgLy8gU2Vjb25kXG4gIHM6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgbG9jYWxpemUpIHtcbiAgICBpZiAodG9rZW4gPT09IFwic29cIikge1xuICAgICAgcmV0dXJuIGxvY2FsaXplLm9yZGluYWxOdW1iZXIoZGF0ZS5nZXRTZWNvbmRzKCksIHsgdW5pdDogXCJzZWNvbmRcIiB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLnMoZGF0ZSwgdG9rZW4pO1xuICB9LFxuXG4gIC8vIEZyYWN0aW9uIG9mIHNlY29uZFxuICBTOiBmdW5jdGlvbiAoZGF0ZSwgdG9rZW4pIHtcbiAgICByZXR1cm4gbGlnaHRGb3JtYXR0ZXJzLlMoZGF0ZSwgdG9rZW4pO1xuICB9LFxuXG4gIC8vIFRpbWV6b25lIChJU08tODYwMS4gSWYgb2Zmc2V0IGlzIDAsIG91dHB1dCBpcyBhbHdheXMgYCdaJ2ApXG4gIFg6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgX2xvY2FsaXplKSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXQgPSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cbiAgICBpZiAodGltZXpvbmVPZmZzZXQgPT09IDApIHtcbiAgICAgIHJldHVybiBcIlpcIjtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBIb3VycyBhbmQgb3B0aW9uYWwgbWludXRlc1xuICAgICAgY2FzZSBcIlhcIjpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lV2l0aE9wdGlvbmFsTWludXRlcyh0aW1lem9uZU9mZnNldCk7XG5cbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGhvdXQgYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYFhYYFxuICAgICAgY2FzZSBcIlhYWFhcIjpcbiAgICAgIGNhc2UgXCJYWFwiOiAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0KTtcblxuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgWFhYYFxuICAgICAgY2FzZSBcIlhYWFhYXCI6XG4gICAgICBjYXNlIFwiWFhYXCI6IC8vIEhvdXJzIGFuZCBtaW51dGVzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCBcIjpcIik7XG4gICAgfVxuICB9LFxuXG4gIC8vIFRpbWV6b25lIChJU08tODYwMS4gSWYgb2Zmc2V0IGlzIDAsIG91dHB1dCBpcyBgJyswMDowMCdgIG9yIGVxdWl2YWxlbnQpXG4gIHg6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgX2xvY2FsaXplKSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXQgPSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBIb3VycyBhbmQgb3B0aW9uYWwgbWludXRlc1xuICAgICAgY2FzZSBcInhcIjpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lV2l0aE9wdGlvbmFsTWludXRlcyh0aW1lem9uZU9mZnNldCk7XG5cbiAgICAgIC8vIEhvdXJzLCBtaW51dGVzIGFuZCBvcHRpb25hbCBzZWNvbmRzIHdpdGhvdXQgYDpgIGRlbGltaXRlclxuICAgICAgLy8gTm90ZTogbmVpdGhlciBJU08tODYwMSBub3IgSmF2YVNjcmlwdCBzdXBwb3J0cyBzZWNvbmRzIGluIHRpbWV6b25lIG9mZnNldHNcbiAgICAgIC8vIHNvIHRoaXMgdG9rZW4gYWx3YXlzIGhhcyB0aGUgc2FtZSBvdXRwdXQgYXMgYHh4YFxuICAgICAgY2FzZSBcInh4eHhcIjpcbiAgICAgIGNhc2UgXCJ4eFwiOiAvLyBIb3VycyBhbmQgbWludXRlcyB3aXRob3V0IGA6YCBkZWxpbWl0ZXJcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0KTtcblxuICAgICAgLy8gSG91cnMsIG1pbnV0ZXMgYW5kIG9wdGlvbmFsIHNlY29uZHMgd2l0aCBgOmAgZGVsaW1pdGVyXG4gICAgICAvLyBOb3RlOiBuZWl0aGVyIElTTy04NjAxIG5vciBKYXZhU2NyaXB0IHN1cHBvcnRzIHNlY29uZHMgaW4gdGltZXpvbmUgb2Zmc2V0c1xuICAgICAgLy8gc28gdGhpcyB0b2tlbiBhbHdheXMgaGFzIHRoZSBzYW1lIG91dHB1dCBhcyBgeHh4YFxuICAgICAgY2FzZSBcInh4eHh4XCI6XG4gICAgICBjYXNlIFwieHh4XCI6IC8vIEhvdXJzIGFuZCBtaW51dGVzIHdpdGggYDpgIGRlbGltaXRlclxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCBcIjpcIik7XG4gICAgfVxuICB9LFxuXG4gIC8vIFRpbWV6b25lIChHTVQpXG4gIE86IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgX2xvY2FsaXplKSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXQgPSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBTaG9ydFxuICAgICAgY2FzZSBcIk9cIjpcbiAgICAgIGNhc2UgXCJPT1wiOlxuICAgICAgY2FzZSBcIk9PT1wiOlxuICAgICAgICByZXR1cm4gXCJHTVRcIiArIGZvcm1hdFRpbWV6b25lU2hvcnQodGltZXpvbmVPZmZzZXQsIFwiOlwiKTtcbiAgICAgIC8vIExvbmdcbiAgICAgIGNhc2UgXCJPT09PXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJHTVRcIiArIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCBcIjpcIik7XG4gICAgfVxuICB9LFxuXG4gIC8vIFRpbWV6b25lIChzcGVjaWZpYyBub24tbG9jYXRpb24pXG4gIHo6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgX2xvY2FsaXplKSB7XG4gICAgY29uc3QgdGltZXpvbmVPZmZzZXQgPSBkYXRlLmdldFRpbWV6b25lT2Zmc2V0KCk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyBTaG9ydFxuICAgICAgY2FzZSBcInpcIjpcbiAgICAgIGNhc2UgXCJ6elwiOlxuICAgICAgY2FzZSBcInp6elwiOlxuICAgICAgICByZXR1cm4gXCJHTVRcIiArIGZvcm1hdFRpbWV6b25lU2hvcnQodGltZXpvbmVPZmZzZXQsIFwiOlwiKTtcbiAgICAgIC8vIExvbmdcbiAgICAgIGNhc2UgXCJ6enp6XCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gXCJHTVRcIiArIGZvcm1hdFRpbWV6b25lKHRpbWV6b25lT2Zmc2V0LCBcIjpcIik7XG4gICAgfVxuICB9LFxuXG4gIC8vIFNlY29uZHMgdGltZXN0YW1wXG4gIHQ6IGZ1bmN0aW9uIChkYXRlLCB0b2tlbiwgX2xvY2FsaXplKSB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gTWF0aC50cnVuYygrZGF0ZSAvIDEwMDApO1xuICAgIHJldHVybiBhZGRMZWFkaW5nWmVyb3ModGltZXN0YW1wLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxuXG4gIC8vIE1pbGxpc2Vjb25kcyB0aW1lc3RhbXBcbiAgVDogZnVuY3Rpb24gKGRhdGUsIHRva2VuLCBfbG9jYWxpemUpIHtcbiAgICByZXR1cm4gYWRkTGVhZGluZ1plcm9zKCtkYXRlLCB0b2tlbi5sZW5ndGgpO1xuICB9LFxufTtcblxuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmVTaG9ydChvZmZzZXQsIGRlbGltaXRlciA9IFwiXCIpIHtcbiAgY29uc3Qgc2lnbiA9IG9mZnNldCA+IDAgPyBcIi1cIiA6IFwiK1wiO1xuICBjb25zdCBhYnNPZmZzZXQgPSBNYXRoLmFicyhvZmZzZXQpO1xuICBjb25zdCBob3VycyA9IE1hdGgudHJ1bmMoYWJzT2Zmc2V0IC8gNjApO1xuICBjb25zdCBtaW51dGVzID0gYWJzT2Zmc2V0ICUgNjA7XG4gIGlmIChtaW51dGVzID09PSAwKSB7XG4gICAgcmV0dXJuIHNpZ24gKyBTdHJpbmcoaG91cnMpO1xuICB9XG4gIHJldHVybiBzaWduICsgU3RyaW5nKGhvdXJzKSArIGRlbGltaXRlciArIGFkZExlYWRpbmdaZXJvcyhtaW51dGVzLCAyKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VGltZXpvbmVXaXRoT3B0aW9uYWxNaW51dGVzKG9mZnNldCwgZGVsaW1pdGVyKSB7XG4gIGlmIChvZmZzZXQgJSA2MCA9PT0gMCkge1xuICAgIGNvbnN0IHNpZ24gPSBvZmZzZXQgPiAwID8gXCItXCIgOiBcIitcIjtcbiAgICByZXR1cm4gc2lnbiArIGFkZExlYWRpbmdaZXJvcyhNYXRoLmFicyhvZmZzZXQpIC8gNjAsIDIpO1xuICB9XG4gIHJldHVybiBmb3JtYXRUaW1lem9uZShvZmZzZXQsIGRlbGltaXRlcik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFRpbWV6b25lKG9mZnNldCwgZGVsaW1pdGVyID0gXCJcIikge1xuICBjb25zdCBzaWduID0gb2Zmc2V0ID4gMCA/IFwiLVwiIDogXCIrXCI7XG4gIGNvbnN0IGFic09mZnNldCA9IE1hdGguYWJzKG9mZnNldCk7XG4gIGNvbnN0IGhvdXJzID0gYWRkTGVhZGluZ1plcm9zKE1hdGgudHJ1bmMoYWJzT2Zmc2V0IC8gNjApLCAyKTtcbiAgY29uc3QgbWludXRlcyA9IGFkZExlYWRpbmdaZXJvcyhhYnNPZmZzZXQgJSA2MCwgMik7XG4gIHJldHVybiBzaWduICsgaG91cnMgKyBkZWxpbWl0ZXIgKyBtaW51dGVzO1xufVxuIiwgImNvbnN0IGRhdGVMb25nRm9ybWF0dGVyID0gKHBhdHRlcm4sIGZvcm1hdExvbmcpID0+IHtcbiAgc3dpdGNoIChwYXR0ZXJuKSB7XG4gICAgY2FzZSBcIlBcIjpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLmRhdGUoeyB3aWR0aDogXCJzaG9ydFwiIH0pO1xuICAgIGNhc2UgXCJQUFwiOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7IHdpZHRoOiBcIm1lZGl1bVwiIH0pO1xuICAgIGNhc2UgXCJQUFBcIjpcbiAgICAgIHJldHVybiBmb3JtYXRMb25nLmRhdGUoeyB3aWR0aDogXCJsb25nXCIgfSk7XG4gICAgY2FzZSBcIlBQUFBcIjpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcuZGF0ZSh7IHdpZHRoOiBcImZ1bGxcIiB9KTtcbiAgfVxufTtcblxuY29uc3QgdGltZUxvbmdGb3JtYXR0ZXIgPSAocGF0dGVybiwgZm9ybWF0TG9uZykgPT4ge1xuICBzd2l0Y2ggKHBhdHRlcm4pIHtcbiAgICBjYXNlIFwicFwiOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7IHdpZHRoOiBcInNob3J0XCIgfSk7XG4gICAgY2FzZSBcInBwXCI6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHsgd2lkdGg6IFwibWVkaXVtXCIgfSk7XG4gICAgY2FzZSBcInBwcFwiOlxuICAgICAgcmV0dXJuIGZvcm1hdExvbmcudGltZSh7IHdpZHRoOiBcImxvbmdcIiB9KTtcbiAgICBjYXNlIFwicHBwcFwiOlxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZm9ybWF0TG9uZy50aW1lKHsgd2lkdGg6IFwiZnVsbFwiIH0pO1xuICB9XG59O1xuXG5jb25zdCBkYXRlVGltZUxvbmdGb3JtYXR0ZXIgPSAocGF0dGVybiwgZm9ybWF0TG9uZykgPT4ge1xuICBjb25zdCBtYXRjaFJlc3VsdCA9IHBhdHRlcm4ubWF0Y2goLyhQKykocCspPy8pIHx8IFtdO1xuICBjb25zdCBkYXRlUGF0dGVybiA9IG1hdGNoUmVzdWx0WzFdO1xuICBjb25zdCB0aW1lUGF0dGVybiA9IG1hdGNoUmVzdWx0WzJdO1xuXG4gIGlmICghdGltZVBhdHRlcm4pIHtcbiAgICByZXR1cm4gZGF0ZUxvbmdGb3JtYXR0ZXIocGF0dGVybiwgZm9ybWF0TG9uZyk7XG4gIH1cblxuICBsZXQgZGF0ZVRpbWVGb3JtYXQ7XG5cbiAgc3dpdGNoIChkYXRlUGF0dGVybikge1xuICAgIGNhc2UgXCJQXCI6XG4gICAgICBkYXRlVGltZUZvcm1hdCA9IGZvcm1hdExvbmcuZGF0ZVRpbWUoeyB3aWR0aDogXCJzaG9ydFwiIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIlBQXCI6XG4gICAgICBkYXRlVGltZUZvcm1hdCA9IGZvcm1hdExvbmcuZGF0ZVRpbWUoeyB3aWR0aDogXCJtZWRpdW1cIiB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJQUFBcIjpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7IHdpZHRoOiBcImxvbmdcIiB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJQUFBQXCI6XG4gICAgZGVmYXVsdDpcbiAgICAgIGRhdGVUaW1lRm9ybWF0ID0gZm9ybWF0TG9uZy5kYXRlVGltZSh7IHdpZHRoOiBcImZ1bGxcIiB9KTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgcmV0dXJuIGRhdGVUaW1lRm9ybWF0XG4gICAgLnJlcGxhY2UoXCJ7e2RhdGV9fVwiLCBkYXRlTG9uZ0Zvcm1hdHRlcihkYXRlUGF0dGVybiwgZm9ybWF0TG9uZykpXG4gICAgLnJlcGxhY2UoXCJ7e3RpbWV9fVwiLCB0aW1lTG9uZ0Zvcm1hdHRlcih0aW1lUGF0dGVybiwgZm9ybWF0TG9uZykpO1xufTtcblxuZXhwb3J0IGNvbnN0IGxvbmdGb3JtYXR0ZXJzID0ge1xuICBwOiB0aW1lTG9uZ0Zvcm1hdHRlcixcbiAgUDogZGF0ZVRpbWVMb25nRm9ybWF0dGVyLFxufTtcbiIsICJjb25zdCBkYXlPZlllYXJUb2tlblJFID0gL15EKyQvO1xuY29uc3Qgd2Vla1llYXJUb2tlblJFID0gL15ZKyQvO1xuXG5jb25zdCB0aHJvd1Rva2VucyA9IFtcIkRcIiwgXCJERFwiLCBcIllZXCIsIFwiWVlZWVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvdGVjdGVkRGF5T2ZZZWFyVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIGRheU9mWWVhclRva2VuUkUudGVzdCh0b2tlbik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4odG9rZW4pIHtcbiAgcmV0dXJuIHdlZWtZZWFyVG9rZW5SRS50ZXN0KHRva2VuKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdhcm5PclRocm93UHJvdGVjdGVkRXJyb3IodG9rZW4sIGZvcm1hdCwgaW5wdXQpIHtcbiAgY29uc3QgX21lc3NhZ2UgPSBtZXNzYWdlKHRva2VuLCBmb3JtYXQsIGlucHV0KTtcbiAgY29uc29sZS53YXJuKF9tZXNzYWdlKTtcbiAgaWYgKHRocm93VG9rZW5zLmluY2x1ZGVzKHRva2VuKSkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoX21lc3NhZ2UpO1xufVxuXG5mdW5jdGlvbiBtZXNzYWdlKHRva2VuLCBmb3JtYXQsIGlucHV0KSB7XG4gIGNvbnN0IHN1YmplY3QgPSB0b2tlblswXSA9PT0gXCJZXCIgPyBcInllYXJzXCIgOiBcImRheXMgb2YgdGhlIG1vbnRoXCI7XG4gIHJldHVybiBgVXNlIFxcYCR7dG9rZW4udG9Mb3dlckNhc2UoKX1cXGAgaW5zdGVhZCBvZiBcXGAke3Rva2VufVxcYCAoaW4gXFxgJHtmb3JtYXR9XFxgKSBmb3IgZm9ybWF0dGluZyAke3N1YmplY3R9IHRvIHRoZSBpbnB1dCBcXGAke2lucHV0fVxcYDsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kYDtcbn1cbiIsICJpbXBvcnQgeyBkZWZhdWx0TG9jYWxlIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0TG9jYWxlLmpzXCI7XG5pbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyB9IGZyb20gXCIuL19saWIvZGVmYXVsdE9wdGlvbnMuanNcIjtcbmltcG9ydCB7IGZvcm1hdHRlcnMgfSBmcm9tIFwiLi9fbGliL2Zvcm1hdC9mb3JtYXR0ZXJzLmpzXCI7XG5pbXBvcnQgeyBsb25nRm9ybWF0dGVycyB9IGZyb20gXCIuL19saWIvZm9ybWF0L2xvbmdGb3JtYXR0ZXJzLmpzXCI7XG5pbXBvcnQge1xuICBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuLFxuICBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4sXG4gIHdhcm5PclRocm93UHJvdGVjdGVkRXJyb3IsXG59IGZyb20gXCIuL19saWIvcHJvdGVjdGVkVG9rZW5zLmpzXCI7XG5pbXBvcnQgeyBpc1ZhbGlkIH0gZnJvbSBcIi4vaXNWYWxpZC5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8vIFJleHBvcnRzIG9mIGludGVybmFsIGZvciBsaWJyYXJpZXMgdG8gdXNlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM2MzgjaXNzdWVjb21tZW50LTE4NzcwODI4NzRcbmV4cG9ydCB7IGZvcm1hdHRlcnMsIGxvbmdGb3JtYXR0ZXJzIH07XG5cbi8vIFRoaXMgUmVnRXhwIGNvbnNpc3RzIG9mIHRocmVlIHBhcnRzIHNlcGFyYXRlZCBieSBgfGA6XG4vLyAtIFt5WVFxTUx3SWREZWNpaEhLa21zXW8gbWF0Y2hlcyBhbnkgYXZhaWxhYmxlIG9yZGluYWwgbnVtYmVyIHRva2VuXG4vLyAgIChvbmUgb2YgdGhlIGNlcnRhaW4gbGV0dGVycyBmb2xsb3dlZCBieSBgb2ApXG4vLyAtIChcXHcpXFwxKiBtYXRjaGVzIGFueSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgbGV0dGVyXG4vLyAtICcnIG1hdGNoZXMgdHdvIHF1b3RlIGNoYXJhY3RlcnMgaW4gYSByb3dcbi8vIC0gJygnJ3xbXiddKSsoJ3wkKSBtYXRjaGVzIGFueXRoaW5nIHN1cnJvdW5kZWQgYnkgdHdvIHF1b3RlIGNoYXJhY3RlcnMgKCcpLFxuLy8gICBleGNlcHQgYSBzaW5nbGUgcXVvdGUgc3ltYm9sLCB3aGljaCBlbmRzIHRoZSBzZXF1ZW5jZS5cbi8vICAgVHdvIHF1b3RlIGNoYXJhY3RlcnMgZG8gbm90IGVuZCB0aGUgc2VxdWVuY2UuXG4vLyAgIElmIHRoZXJlIGlzIG5vIG1hdGNoaW5nIHNpbmdsZSBxdW90ZVxuLy8gICB0aGVuIHRoZSBzZXF1ZW5jZSB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbi8vIC0gLiBtYXRjaGVzIGFueSBzaW5nbGUgY2hhcmFjdGVyIHVubWF0Y2hlZCBieSBwcmV2aW91cyBwYXJ0cyBvZiB0aGUgUmVnRXhwc1xuY29uc3QgZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCA9XG4gIC9beVlRcU1Md0lkRGVjaWhIS2ttc11vfChcXHcpXFwxKnwnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcblxuLy8gVGhpcyBSZWdFeHAgY2F0Y2hlcyBzeW1ib2xzIGVzY2FwZWQgYnkgcXVvdGVzLCBhbmQgYWxzb1xuLy8gc2VxdWVuY2VzIG9mIHN5bWJvbHMgUCwgcCwgYW5kIHRoZSBjb21iaW5hdGlvbnMgbGlrZSBgUFBQUFBQUHBwcHBwYFxuY29uc3QgbG9uZ0Zvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPSAvUCtwK3xQK3xwK3wnJ3wnKCcnfFteJ10pKygnfCQpfC4vZztcblxuY29uc3QgZXNjYXBlZFN0cmluZ1JlZ0V4cCA9IC9eJyhbXl0qPyknPyQvO1xuY29uc3QgZG91YmxlUXVvdGVSZWdFeHAgPSAvJycvZztcbmNvbnN0IHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcblxuZXhwb3J0IHsgZm9ybWF0IGFzIGZvcm1hdERhdGUgfTtcblxuLyoqXG4gKiBUaGUge0BsaW5rIGZvcm1hdH0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIGZvcm1hdFxuICogQGFsaWFzIGZvcm1hdERhdGVcbiAqIEBjYXRlZ29yeSBDb21tb24gSGVscGVyc1xuICogQHN1bW1hcnkgRm9ybWF0IHRoZSBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gdGhlIGdpdmVuIGZvcm1hdC4gVGhlIHJlc3VsdCBtYXkgdmFyeSBieSBsb2NhbGUuXG4gKlxuICogPiBcdTI2QTBcdUZFMEYgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogPiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqIChzZWUgdGhlIGxhc3QgZXhhbXBsZSlcbiAqXG4gKiBGb3JtYXQgb2YgdGhlIHN0cmluZyBpcyBiYXNlZCBvbiBVbmljb2RlIFRlY2huaWNhbCBTdGFuZGFyZCAjMzU6XG4gKiBodHRwczovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiB3aXRoIGEgZmV3IGFkZGl0aW9ucyAoc2VlIG5vdGUgNyBiZWxvdyB0aGUgdGFibGUpLlxuICpcbiAqIEFjY2VwdGVkIHBhdHRlcm5zOlxuICogfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGF0dGVybiB8IFJlc3VsdCBleGFtcGxlcyAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18XG4gKiB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBHLi5HR0cgIHwgQUQsIEJDICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgR0dHRyAgICB8IEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEdHR0dHICAgfCBBLCBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeW8gICAgICB8IDQ0dGgsIDFzdCwgMHRoLCAxN3RoICAgICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB5eXkgICAgIHwgMDQ0LCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHl5eXl5ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUgICB8XG4gKiB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgfCBZICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCAyMDE3dGggICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBZWVkgICAgIHwgMDQ0LCAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWVlZWSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFlZWVlZICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzLDUgICB8XG4gKiB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICAgfCBSICAgICAgIHwgLTQzLCAwLCAxLCAxOTAwLCAyMDE3ICAgICAgICAgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlIgICAgICB8IC00MywgMDAsIDAxLCAxOTAwLCAyMDE3ICAgICAgICAgICB8IDUsNyAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFJSUiAgICAgfCAtMDQzLCAwMDAsIDAwMSwgMTkwMCwgMjAxNyAgICAgICAgfCA1LDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBSUlJSICAgIHwgLTAwNDMsIDAwMDAsIDAwMDEsIDE5MDAsIDIwMTcgICAgIHwgNSw3ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUlJSUlIgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNSw3IHxcbiAqIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgICB8IHUgICAgICAgfCAtNDMsIDAsIDEsIDE5MDAsIDIwMTcgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dSAgICAgIHwgLTQzLCAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdXV1ICAgICB8IC0wNDMsIDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHV1dXUgICAgfCAtMDA0MywgMDAwMSwgMTkwMCwgMjAxNyAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB1dXV1dSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw1ICAgfFxuICogfCBRdWFydGVyIChmb3JtYXR0aW5nKSAgICAgICAgICAgIHwgUSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUVFRICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFFRUVEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBRUVFRUSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBRdWFydGVyIChzdGFuZC1hbG9uZSkgICAgICAgICAgIHwgcSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcXFxICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHFxcXEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBxcXFxcSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBNb250aCAoZm9ybWF0dGluZykgICAgICAgICAgICAgIHwgTSAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1vICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTSAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTU1NICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE1NTU0gICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNTU1NTSAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNb250aCAoc3RhbmQtYWxvbmUpICAgICAgICAgICAgIHwgTCAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTCAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTExMICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IExMTEwgICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMTExMTCAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgIHwgdyAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3dyAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgIHwgSSAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IElvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJSSAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGRvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzMXN0ICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgIHwgRCAgICAgICB8IDEsIDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgICB8IDkgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IERvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzNjV0aCwgMzY2dGggICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBERCAgICAgIHwgMDEsIDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgIHwgOSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgREREICAgICB8IDAwMSwgMDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEREREQgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzICAgICB8XG4gKiB8IERheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICAgICAgfCBFLi5FRUUgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRUVFRSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEVFRUVFICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFRUVFRUUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgIHwgaSAgICAgICB8IDEsIDIsIDMsIC4uLiwgNyAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA3dGggICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaSAgICAgIHwgMDEsIDAyLCAuLi4sIDA3ICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGlpaWkgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyLDcgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpaWlpaSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaWlpaWlpICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8IDcgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICB8IGUgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWUgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBlZWVlICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZWVlZWUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVlZWVlZSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChzdGFuZC1hbG9uZSkgfCBjICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY28gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2MgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2NjYyAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNjY2NjICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjY2NjY2MgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgYS4uYWEgICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFhYSAgICAgfCBhbSwgcG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhYWFhICAgIHwgYS5tLiwgcC5tLiAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYWFhYWEgICB8IGEsIHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgQU0sIFBNLCBub29uLCBtaWRuaWdodCAgICAgICAgICB8IGIuLmJiICAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBiYmIgICAgIHwgYW0sIHBtLCBub29uLCBtaWRuaWdodCAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYmJiYiAgICB8IGEubS4sIHAubS4sIG5vb24sIG1pZG5pZ2h0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGJiYmJiICAgfCBhLCBwLCBuLCBtaSAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEZsZXhpYmxlIGRheSBwZXJpb2QgICAgICAgICAgICAgfCBCLi5CQkIgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQkJCQiAgICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEJCQkJCICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzEtMTJdICAgICAgICAgICAgICAgICAgICAgfCBoICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMTIgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaG8gICAgICB8IDFzdCwgMm5kLCAuLi4sIDExdGgsIDEydGggICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGhoICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzAtMjNdICAgICAgICAgICAgICAgICAgICAgfCBIICAgICAgIHwgMCwgMSwgMiwgLi4uLCAyMyAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgSG8gICAgICB8IDB0aCwgMXN0LCAybmQsIC4uLiwgMjNyZCAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEhIICAgICAgfCAwMCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzAtMTFdICAgICAgICAgICAgICAgICAgICAgfCBLICAgICAgIHwgMSwgMiwgLi4uLCAxMSwgMCAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgS28gICAgICB8IDFzdCwgMm5kLCAuLi4sIDExdGgsIDB0aCAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEtLICAgICAgfCAwMSwgMDIsIC4uLiwgMTEsIDAwICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEhvdXIgWzEtMjRdICAgICAgICAgICAgICAgICAgICAgfCBrICAgICAgIHwgMjQsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga28gICAgICB8IDI0dGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtrICAgICAgfCAyNCwgMDEsIDAyLCAuLi4sIDIzICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IE1pbnV0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCBtICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgbW8gICAgICB8IDB0aCwgMXN0LCAuLi4sIDU5dGggICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG1tICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IFNlY29uZCAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzICAgICAgIHwgMCwgMSwgLi4uLCA1OSAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc28gICAgICB8IDB0aCwgMXN0LCAuLi4sIDU5dGggICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNzICAgICAgfCAwMCwgMDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICAgfCBTICAgICAgIHwgMCwgMSwgLi4uLCA5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNTUyAgICAgfCAwMDAsIDAwMSwgLi4uLCA5OTkgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTU1NTICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBUaW1lem9uZSAoSVNPLTg2MDEgdy8gWikgICAgICAgIHwgWCAgICAgICB8IC0wOCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYICAgICAgfCAtMDgwMCwgKzA1MzAsIFogICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBYWFggICAgIHwgLTA4OjAwLCArMDU6MzAsIFogICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWFhYWCAgICB8IC0wODAwLCArMDUzMCwgWiwgKzEyMzQ1NiAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFhYWFhYICAgfCAtMDg6MDAsICswNTozMCwgWiwgKzEyOjM0OjU2ICAgICAgfCAgICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3L28gWikgICAgICAgfCB4ICAgICAgIHwgLTA4LCArMDUzMCwgKzAwICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHggICAgICB8IC0wODAwLCArMDUzMCwgKzAwMDAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHh4eCAgICAgfCAtMDg6MDAsICswNTozMCwgKzAwOjAwICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB4eHh4ICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCwgKzEyMzQ1NiAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgeHh4eHggICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAsICsxMjozNDo1NiB8ICAgICAgIHxcbiAqIHwgVGltZXpvbmUgKEdNVCkgICAgICAgICAgICAgICAgICB8IE8uLi5PT08gfCBHTVQtOCwgR01UKzU6MzAsIEdNVCswICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBPT09PICAgIHwgR01ULTA4OjAwLCBHTVQrMDU6MzAsIEdNVCswMDowMCAgIHwgMiAgICAgfFxuICogfCBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0LikgIHwgei4uLnp6eiB8IEdNVC04LCBHTVQrNTozMCwgR01UKzAgICAgICAgICAgICB8IDYgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHp6enogICAgfCBHTVQtMDg6MDAsIEdNVCswNTozMCwgR01UKzAwOjAwICAgfCAyLDYgICB8XG4gKiB8IFNlY29uZHMgdGltZXN0YW1wICAgICAgICAgICAgICAgfCB0ICAgICAgIHwgNTEyOTY5NTIwICAgICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdHQgICAgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMsNyAgIHxcbiAqIHwgTWlsbGlzZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICB8IFQgICAgICAgfCA1MTI5Njk1MjA5MDAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBUVCAgICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMyw3ICAgfFxuICogfCBMb25nIGxvY2FsaXplZCBkYXRlICAgICAgICAgICAgIHwgUCAgICAgICB8IDA0LzI5LzE0NTMgICAgICAgICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQICAgICAgfCBBcHIgMjksIDE0NTMgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFAgICAgIHwgQXByaWwgMjl0aCwgMTQ1MyAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBQUCAgICB8IEZyaWRheSwgQXByaWwgMjl0aCwgMTQ1MyAgICAgICAgICB8IDIsNyAgIHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgdGltZSAgICAgICAgICAgICB8IHAgICAgICAgfCAxMjowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwcCAgICAgIHwgMTI6MDA6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHBwICAgICB8IDEyOjAwOjAwIEFNIEdNVCsyICAgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBwcHAgICAgfCAxMjowMDowMCBBTSBHTVQrMDI6MDAgICAgICAgICAgICAgfCAyLDcgICB8XG4gKiB8IENvbWJpbmF0aW9uIG9mIGRhdGUgYW5kIHRpbWUgICAgfCBQcCAgICAgIHwgMDQvMjkvMTQ1MywgMTI6MDAgQU0gICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUFBwcCAgICB8IEFwciAyOSwgMTQ1MywgMTI6MDA6MDAgQU0gICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFBQUHBwcCAgfCBBcHJpbCAyOXRoLCAxNDUzIGF0IC4uLiAgICAgICAgICAgfCA3ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQUFBQcHBwcHwgRnJpZGF5LCBBcHJpbCAyOXRoLCAxNDUzIGF0IC4uLiAgIHwgMiw3ICAgfFxuICogTm90ZXM6XG4gKiAxLiBcIkZvcm1hdHRpbmdcIiB1bml0cyAoZS5nLiBmb3JtYXR0aW5nIHF1YXJ0ZXIpIGluIHRoZSBkZWZhdWx0IGVuLVVTIGxvY2FsZVxuICogICAgYXJlIHRoZSBzYW1lIGFzIFwic3RhbmQtYWxvbmVcIiB1bml0cywgYnV0IGFyZSBkaWZmZXJlbnQgaW4gc29tZSBsYW5ndWFnZXMuXG4gKiAgICBcIkZvcm1hdHRpbmdcIiB1bml0cyBhcmUgZGVjbGluZWQgYWNjb3JkaW5nIHRvIHRoZSBydWxlcyBvZiB0aGUgbGFuZ3VhZ2VcbiAqICAgIGluIHRoZSBjb250ZXh0IG9mIGEgZGF0ZS4gXCJTdGFuZC1hbG9uZVwiIHVuaXRzIGFyZSBhbHdheXMgbm9taW5hdGl2ZSBzaW5ndWxhcjpcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIExMTEwnLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIE1NTU0nLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkdSdgXG4gKlxuICogMi4gQW55IHNlcXVlbmNlIG9mIHRoZSBpZGVudGljYWwgbGV0dGVycyBpcyBhIHBhdHRlcm4sIHVubGVzcyBpdCBpcyBlc2NhcGVkIGJ5XG4gKiAgICB0aGUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgKHNlZSBiZWxvdykuXG4gKiAgICBJZiB0aGUgc2VxdWVuY2UgaXMgbG9uZ2VyIHRoYW4gbGlzdGVkIGluIHRhYmxlIChlLmcuIGBFRUVFRUVFRUVFRWApXG4gKiAgICB0aGUgb3V0cHV0IHdpbGwgYmUgdGhlIHNhbWUgYXMgZGVmYXVsdCBwYXR0ZXJuIGZvciB0aGlzIHVuaXQsIHVzdWFsbHlcbiAqICAgIHRoZSBsb25nZXN0IG9uZSAoaW4gY2FzZSBvZiBJU08gd2Vla2RheXMsIGBFRUVFYCkuIERlZmF1bHQgcGF0dGVybnMgZm9yIHVuaXRzXG4gKiAgICBhcmUgbWFya2VkIHdpdGggXCIyXCIgaW4gdGhlIGxhc3QgY29sdW1uIG9mIHRoZSB0YWJsZS5cbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTScpIC8vPT4gJ05vdidgXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICdNTU1NJykgLy89PiAnTm92ZW1iZXInYFxuICpcbiAqICAgIGBmb3JtYXQobmV3IERhdGUoMjAxNywgMTAsIDYpLCAnTU1NTU0nKSAvLz0+ICdOJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU1NTScpIC8vPT4gJ05vdmVtYmVyJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ01NTU1NTU0nKSAvLz0+ICdOb3ZlbWJlcidgXG4gKlxuICogMy4gU29tZSBwYXR0ZXJucyBjb3VsZCBiZSB1bmxpbWl0ZWQgbGVuZ3RoIChzdWNoIGFzIGB5eXl5eXl5eWApLlxuICogICAgVGhlIG91dHB1dCB3aWxsIGJlIHBhZGRlZCB3aXRoIHplcm9zIHRvIG1hdGNoIHRoZSBsZW5ndGggb2YgdGhlIHBhdHRlcm4uXG4gKlxuICogICAgYGZvcm1hdChuZXcgRGF0ZSgyMDE3LCAxMCwgNiksICd5eXl5eXl5eScpIC8vPT4gJzAwMDAyMDE3J2BcbiAqXG4gKiA0LiBgUVFRUVFgIGFuZCBgcXFxcXFgIGNvdWxkIGJlIG5vdCBzdHJpY3RseSBudW1lcmljYWwgaW4gc29tZSBsb2NhbGVzLlxuICogICAgVGhlc2UgdG9rZW5zIHJlcHJlc2VudCB0aGUgc2hvcnRlc3QgZm9ybSBvZiB0aGUgcXVhcnRlci5cbiAqXG4gKiA1LiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gYHlgIGFuZCBgdWAgcGF0dGVybnMgYXJlIEIuQy4geWVhcnM6XG4gKlxuICogICAgfCBZZWFyIHwgYHlgIHwgYHVgIHxcbiAqICAgIHwtLS0tLS18LS0tLS18LS0tLS18XG4gKiAgICB8IEFDIDEgfCAgIDEgfCAgIDEgfFxuICogICAgfCBCQyAxIHwgICAxIHwgICAwIHxcbiAqICAgIHwgQkMgMiB8ICAgMiB8ICAtMSB8XG4gKlxuICogICAgQWxzbyBgeXlgIGFsd2F5cyByZXR1cm5zIHRoZSBsYXN0IHR3byBkaWdpdHMgb2YgYSB5ZWFyLFxuICogICAgd2hpbGUgYHV1YCBwYWRzIHNpbmdsZSBkaWdpdCB5ZWFycyB0byAyIGNoYXJhY3RlcnMgYW5kIHJldHVybnMgb3RoZXIgeWVhcnMgdW5jaGFuZ2VkOlxuICpcbiAqICAgIHwgWWVhciB8IGB5eWAgfCBgdXVgIHxcbiAqICAgIHwtLS0tLS18LS0tLS0tfC0tLS0tLXxcbiAqICAgIHwgMSAgICB8ICAgMDEgfCAgIDAxIHxcbiAqICAgIHwgMTQgICB8ICAgMTQgfCAgIDE0IHxcbiAqICAgIHwgMzc2ICB8ICAgNzYgfCAgMzc2IHxcbiAqICAgIHwgMTQ1MyB8ICAgNTMgfCAxNDUzIHxcbiAqXG4gKiAgICBUaGUgc2FtZSBkaWZmZXJlbmNlIGlzIHRydWUgZm9yIGxvY2FsIGFuZCBJU08gd2Vlay1udW1iZXJpbmcgeWVhcnMgKGBZYCBhbmQgYFJgKSxcbiAqICAgIGV4Y2VwdCBsb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFycyBhcmUgZGVwZW5kZW50IG9uIGBvcHRpb25zLndlZWtTdGFydHNPbmBcbiAqICAgIGFuZCBgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGVgIChjb21wYXJlIFtnZXRJU09XZWVrWWVhcl0oaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9nZXRJU09XZWVrWWVhcilcbiAqICAgIGFuZCBbZ2V0V2Vla1llYXJdKGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3MvZ2V0V2Vla1llYXIpKS5cbiAqXG4gKiA2LiBTcGVjaWZpYyBub24tbG9jYXRpb24gdGltZXpvbmVzIGFyZSBjdXJyZW50bHkgdW5hdmFpbGFibGUgaW4gYGRhdGUtZm5zYCxcbiAqICAgIHNvIHJpZ2h0IG5vdyB0aGVzZSB0b2tlbnMgZmFsbCBiYWNrIHRvIEdNVCB0aW1lem9uZXMuXG4gKlxuICogNy4gVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBpbiB0aGUgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogICAgLSBgaWA6IElTTyBkYXkgb2Ygd2Vla1xuICogICAgLSBgSWA6IElTTyB3ZWVrIG9mIHllYXJcbiAqICAgIC0gYFJgOiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogICAgLSBgdGA6IHNlY29uZHMgdGltZXN0YW1wXG4gKiAgICAtIGBUYDogbWlsbGlzZWNvbmRzIHRpbWVzdGFtcFxuICogICAgLSBgb2A6IG9yZGluYWwgbnVtYmVyIG1vZGlmaWVyXG4gKiAgICAtIGBQYDogbG9uZyBsb2NhbGl6ZWQgZGF0ZVxuICogICAgLSBgcGA6IGxvbmcgbG9jYWxpemVkIHRpbWVcbiAqXG4gKiA4LiBgWVlgIGFuZCBgWVlZWWAgdG9rZW5zIHJlcHJlc2VudCB3ZWVrLW51bWJlcmluZyB5ZWFycyBidXQgdGhleSBhcmUgb2Z0ZW4gY29uZnVzZWQgd2l0aCB5ZWFycy5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDkuIGBEYCBhbmQgYEREYCB0b2tlbnMgcmVwcmVzZW50IGRheXMgb2YgdGhlIHllYXIgYnV0IHRoZXkgYXJlIG9mdGVuIGNvbmZ1c2VkIHdpdGggZGF5cyBvZiB0aGUgbW9udGguXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgb3JpZ2luYWwgZGF0ZVxuICogQHBhcmFtIGZvcm1hdCAtIFRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nXG4gKlxuICogQHRocm93cyBgZGF0ZWAgbXVzdCBub3QgYmUgSW52YWxpZCBEYXRlXG4gKiBAdGhyb3dzIGBvcHRpb25zLmxvY2FsZWAgbXVzdCBjb250YWluIGBsb2NhbGl6ZWAgcHJvcGVydHlcbiAqIEB0aHJvd3MgYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYGZvcm1hdExvbmdgIHByb3BlcnR5XG4gKiBAdGhyb3dzIHVzZSBgeXl5eWAgaW5zdGVhZCBvZiBgWVlZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB1c2UgYHl5YCBpbnN0ZWFkIG9mIGBZWWAgZm9yIGZvcm1hdHRpbmcgeWVhcnMgdXNpbmcgW2Zvcm1hdCBwcm92aWRlZF0gdG8gdGhlIGlucHV0IFtpbnB1dCBwcm92aWRlZF07IHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICogQHRocm93cyB1c2UgYGRgIGluc3RlYWQgb2YgYERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3MgdXNlIGBkZGAgaW5zdGVhZCBvZiBgRERgIGZvciBmb3JtYXR0aW5nIGRheXMgb2YgdGhlIG1vbnRoIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3MgZm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxMSBGZWJydWFyeSAyMDE0IGluIG1pZGRsZS1lbmRpYW4gZm9ybWF0OlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDEsIDExKSwgJ01NL2RkL3l5eXknKVxuICogLy89PiAnMDIvMTEvMjAxNCdcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gUmVwcmVzZW50IDIgSnVseSAyMDE0IGluIEVzcGVyYW50bzpcbiAqIGltcG9ydCB7IGVvTG9jYWxlIH0gZnJvbSAnZGF0ZS1mbnMvbG9jYWxlL2VvJ1xuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDYsIDIpLCBcImRvICdkZScgTU1NTSB5eXl5XCIsIHtcbiAqICAgbG9jYWxlOiBlb0xvY2FsZVxuICogfSlcbiAqIC8vPT4gJzItYSBkZSBqdWxpbyAyMDE0J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFc2NhcGUgc3RyaW5nIGJ5IHNpbmdsZSBxdW90ZSBjaGFyYWN0ZXJzOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0KG5ldyBEYXRlKDIwMTQsIDYsIDIsIDE1KSwgXCJoICdvJydjbG9jaydcIilcbiAqIC8vPT4gXCIzIG8nY2xvY2tcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0KGRhdGUsIGZvcm1hdFN0ciwgb3B0aW9ucykge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IGxvY2FsZSA9IG9wdGlvbnM/LmxvY2FsZSA/PyBkZWZhdWx0T3B0aW9ucy5sb2NhbGUgPz8gZGVmYXVsdExvY2FsZTtcblxuICBjb25zdCBmaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIG9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICAxO1xuXG4gIGNvbnN0IHdlZWtTdGFydHNPbiA9XG4gICAgb3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIDA7XG5cbiAgY29uc3Qgb3JpZ2luYWxEYXRlID0gdG9EYXRlKGRhdGUsIG9wdGlvbnM/LmluKTtcblxuICBpZiAoIWlzVmFsaWQob3JpZ2luYWxEYXRlKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCB0aW1lIHZhbHVlXCIpO1xuICB9XG5cbiAgbGV0IHBhcnRzID0gZm9ybWF0U3RyXG4gICAgLm1hdGNoKGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwKVxuICAgIC5tYXAoKHN1YnN0cmluZykgPT4ge1xuICAgICAgY29uc3QgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwicFwiIHx8IGZpcnN0Q2hhcmFjdGVyID09PSBcIlBcIikge1xuICAgICAgICBjb25zdCBsb25nRm9ybWF0dGVyID0gbG9uZ0Zvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgICAgICByZXR1cm4gbG9uZ0Zvcm1hdHRlcihzdWJzdHJpbmcsIGxvY2FsZS5mb3JtYXRMb25nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzdWJzdHJpbmc7XG4gICAgfSlcbiAgICAuam9pbihcIlwiKVxuICAgIC5tYXRjaChmb3JtYXR0aW5nVG9rZW5zUmVnRXhwKVxuICAgIC5tYXAoKHN1YnN0cmluZykgPT4ge1xuICAgICAgLy8gUmVwbGFjZSB0d28gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBvbmUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlclxuICAgICAgaWYgKHN1YnN0cmluZyA9PT0gXCInJ1wiKSB7XG4gICAgICAgIHJldHVybiB7IGlzVG9rZW46IGZhbHNlLCB2YWx1ZTogXCInXCIgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIHJldHVybiB7IGlzVG9rZW46IGZhbHNlLCB2YWx1ZTogY2xlYW5Fc2NhcGVkU3RyaW5nKHN1YnN0cmluZykgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZvcm1hdHRlcnNbZmlyc3RDaGFyYWN0ZXJdKSB7XG4gICAgICAgIHJldHVybiB7IGlzVG9rZW46IHRydWUsIHZhbHVlOiBzdWJzdHJpbmcgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGZpcnN0Q2hhcmFjdGVyLm1hdGNoKHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwKSkge1xuICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcbiAgICAgICAgICBcIkZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlciBgXCIgK1xuICAgICAgICAgICAgZmlyc3RDaGFyYWN0ZXIgK1xuICAgICAgICAgICAgXCJgXCIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7IGlzVG9rZW46IGZhbHNlLCB2YWx1ZTogc3Vic3RyaW5nIH07XG4gICAgfSk7XG5cbiAgLy8gaW52b2tlIGxvY2FsaXplIHByZXByb2Nlc3NvciAob25seSBmb3IgZnJlbmNoIGxvY2FsZXMgYXQgdGhlIG1vbWVudClcbiAgaWYgKGxvY2FsZS5sb2NhbGl6ZS5wcmVwcm9jZXNzb3IpIHtcbiAgICBwYXJ0cyA9IGxvY2FsZS5sb2NhbGl6ZS5wcmVwcm9jZXNzb3Iob3JpZ2luYWxEYXRlLCBwYXJ0cyk7XG4gIH1cblxuICBjb25zdCBmb3JtYXR0ZXJPcHRpb25zID0ge1xuICAgIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZSxcbiAgICB3ZWVrU3RhcnRzT24sXG4gICAgbG9jYWxlLFxuICB9O1xuXG4gIHJldHVybiBwYXJ0c1xuICAgIC5tYXAoKHBhcnQpID0+IHtcbiAgICAgIGlmICghcGFydC5pc1Rva2VuKSByZXR1cm4gcGFydC52YWx1ZTtcblxuICAgICAgY29uc3QgdG9rZW4gPSBwYXJ0LnZhbHVlO1xuXG4gICAgICBpZiAoXG4gICAgICAgICghb3B0aW9ucz8udXNlQWRkaXRpb25hbFdlZWtZZWFyVG9rZW5zICYmXG4gICAgICAgICAgaXNQcm90ZWN0ZWRXZWVrWWVhclRva2VuKHRva2VuKSkgfHxcbiAgICAgICAgKCFvcHRpb25zPy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zICYmXG4gICAgICAgICAgaXNQcm90ZWN0ZWREYXlPZlllYXJUb2tlbih0b2tlbikpXG4gICAgICApIHtcbiAgICAgICAgd2Fybk9yVGhyb3dQcm90ZWN0ZWRFcnJvcih0b2tlbiwgZm9ybWF0U3RyLCBTdHJpbmcoZGF0ZSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBmb3JtYXR0ZXIgPSBmb3JtYXR0ZXJzW3Rva2VuWzBdXTtcbiAgICAgIHJldHVybiBmb3JtYXR0ZXIob3JpZ2luYWxEYXRlLCB0b2tlbiwgbG9jYWxlLmxvY2FsaXplLCBmb3JtYXR0ZXJPcHRpb25zKTtcbiAgICB9KVxuICAgIC5qb2luKFwiXCIpO1xufVxuXG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgY29uc3QgbWF0Y2hlZCA9IGlucHV0Lm1hdGNoKGVzY2FwZWRTdHJpbmdSZWdFeHApO1xuXG4gIGlmICghbWF0Y2hlZCkge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuXG4gIHJldHVybiBtYXRjaGVkWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBmb3JtYXQ7XG4iLCAiaW1wb3J0IHsgYWRkTGVhZGluZ1plcm9zIH0gZnJvbSBcIi4vX2xpYi9hZGRMZWFkaW5nWmVyb3MuanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZm9ybWF0SVNPfSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZm9ybWF0SVNPXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEZvcm1hdCB0aGUgZGF0ZSBhY2NvcmRpbmcgdG8gdGhlIElTTyA4NjAxIHN0YW5kYXJkIChodHRwczovL3N1cHBvcnQuc2FzLmNvbS9kb2N1bWVudGF0aW9uL2NkbC9lbi9scmRpY3QvNjQzMTYvSFRNTC9kZWZhdWx0L3ZpZXdlci5odG0jYTAwMzE2OTgxNC5odG0pLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJuIHRoZSBmb3JtYXR0ZWQgZGF0ZSBzdHJpbmcgaW4gSVNPIDg2MDEgZm9ybWF0LiBPcHRpb25zIG1heSBiZSBwYXNzZWQgdG8gY29udHJvbCB0aGUgcGFydHMgYW5kIG5vdGF0aW9ucyBvZiB0aGUgZGF0ZS5cbiAqXG4gKiBAcGFyYW0gZGF0ZSAtIFRoZSBvcmlnaW5hbCBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBkYXRlIHN0cmluZyAoaW4gbG9jYWwgdGltZSB6b25lKVxuICpcbiAqIEB0aHJvd3MgYGRhdGVgIG11c3Qgbm90IGJlIEludmFsaWQgRGF0ZVxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEgZm9ybWF0IChsb2NhbCB0aW1lIHpvbmUgaXMgVVRDKTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTyhuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSlcbiAqIC8vPT4gJzIwMTktMDktMThUMTk6MDA6NTJaJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEsIHNob3J0IGZvcm1hdCAobG9jYWwgdGltZSB6b25lIGlzIFVUQyk6XG4gKiBjb25zdCByZXN1bHQgPSBmb3JtYXRJU08obmV3IERhdGUoMjAxOSwgOCwgMTgsIDE5LCAwLCA1MiksIHsgZm9ybWF0OiAnYmFzaWMnIH0pXG4gKiAvLz0+ICcyMDE5MDkxOFQxOTAwNTInXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFJlcHJlc2VudCAxOCBTZXB0ZW1iZXIgMjAxOSBpbiBJU08gODYwMSBmb3JtYXQsIGRhdGUgb25seTpcbiAqIGNvbnN0IHJlc3VsdCA9IGZvcm1hdElTTyhuZXcgRGF0ZSgyMDE5LCA4LCAxOCwgMTksIDAsIDUyKSwgeyByZXByZXNlbnRhdGlvbjogJ2RhdGUnIH0pXG4gKiAvLz0+ICcyMDE5LTA5LTE4J1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBSZXByZXNlbnQgMTggU2VwdGVtYmVyIDIwMTkgaW4gSVNPIDg2MDEgZm9ybWF0LCB0aW1lIG9ubHkgKGxvY2FsIHRpbWUgem9uZSBpcyBVVEMpOlxuICogY29uc3QgcmVzdWx0ID0gZm9ybWF0SVNPKG5ldyBEYXRlKDIwMTksIDgsIDE4LCAxOSwgMCwgNTIpLCB7IHJlcHJlc2VudGF0aW9uOiAndGltZScgfSlcbiAqIC8vPT4gJzE5OjAwOjUyWidcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdElTTyhkYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRhdGVfID0gdG9EYXRlKGRhdGUsIG9wdGlvbnM/LmluKTtcblxuICBpZiAoaXNOYU4oK2RhdGVfKSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiSW52YWxpZCB0aW1lIHZhbHVlXCIpO1xuICB9XG5cbiAgY29uc3QgZm9ybWF0ID0gb3B0aW9ucz8uZm9ybWF0ID8/IFwiZXh0ZW5kZWRcIjtcbiAgY29uc3QgcmVwcmVzZW50YXRpb24gPSBvcHRpb25zPy5yZXByZXNlbnRhdGlvbiA/PyBcImNvbXBsZXRlXCI7XG5cbiAgbGV0IHJlc3VsdCA9IFwiXCI7XG4gIGxldCB0ek9mZnNldCA9IFwiXCI7XG5cbiAgY29uc3QgZGF0ZURlbGltaXRlciA9IGZvcm1hdCA9PT0gXCJleHRlbmRlZFwiID8gXCItXCIgOiBcIlwiO1xuICBjb25zdCB0aW1lRGVsaW1pdGVyID0gZm9ybWF0ID09PSBcImV4dGVuZGVkXCIgPyBcIjpcIiA6IFwiXCI7XG5cbiAgLy8gUmVwcmVzZW50YXRpb24gaXMgZWl0aGVyICdkYXRlJyBvciAnY29tcGxldGUnXG4gIGlmIChyZXByZXNlbnRhdGlvbiAhPT0gXCJ0aW1lXCIpIHtcbiAgICBjb25zdCBkYXkgPSBhZGRMZWFkaW5nWmVyb3MoZGF0ZV8uZ2V0RGF0ZSgpLCAyKTtcbiAgICBjb25zdCBtb250aCA9IGFkZExlYWRpbmdaZXJvcyhkYXRlXy5nZXRNb250aCgpICsgMSwgMik7XG4gICAgY29uc3QgeWVhciA9IGFkZExlYWRpbmdaZXJvcyhkYXRlXy5nZXRGdWxsWWVhcigpLCA0KTtcblxuICAgIC8vIHl5eXlNTWRkIG9yIHl5eXktTU0tZGQuXG4gICAgcmVzdWx0ID0gYCR7eWVhcn0ke2RhdGVEZWxpbWl0ZXJ9JHttb250aH0ke2RhdGVEZWxpbWl0ZXJ9JHtkYXl9YDtcbiAgfVxuXG4gIC8vIFJlcHJlc2VudGF0aW9uIGlzIGVpdGhlciAndGltZScgb3IgJ2NvbXBsZXRlJ1xuICBpZiAocmVwcmVzZW50YXRpb24gIT09IFwiZGF0ZVwiKSB7XG4gICAgLy8gQWRkIHRoZSB0aW1lem9uZS5cbiAgICBjb25zdCBvZmZzZXQgPSBkYXRlXy5nZXRUaW1lem9uZU9mZnNldCgpO1xuXG4gICAgaWYgKG9mZnNldCAhPT0gMCkge1xuICAgICAgY29uc3QgYWJzb2x1dGVPZmZzZXQgPSBNYXRoLmFicyhvZmZzZXQpO1xuICAgICAgY29uc3QgaG91ck9mZnNldCA9IGFkZExlYWRpbmdaZXJvcyhNYXRoLnRydW5jKGFic29sdXRlT2Zmc2V0IC8gNjApLCAyKTtcbiAgICAgIGNvbnN0IG1pbnV0ZU9mZnNldCA9IGFkZExlYWRpbmdaZXJvcyhhYnNvbHV0ZU9mZnNldCAlIDYwLCAyKTtcbiAgICAgIC8vIElmIGxlc3MgdGhhbiAwLCB0aGUgc2lnbiBpcyArLCBiZWNhdXNlIGl0IGlzIGFoZWFkIG9mIHRpbWUuXG4gICAgICBjb25zdCBzaWduID0gb2Zmc2V0IDwgMCA/IFwiK1wiIDogXCItXCI7XG5cbiAgICAgIHR6T2Zmc2V0ID0gYCR7c2lnbn0ke2hvdXJPZmZzZXR9OiR7bWludXRlT2Zmc2V0fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHR6T2Zmc2V0ID0gXCJaXCI7XG4gICAgfVxuXG4gICAgY29uc3QgaG91ciA9IGFkZExlYWRpbmdaZXJvcyhkYXRlXy5nZXRIb3VycygpLCAyKTtcbiAgICBjb25zdCBtaW51dGUgPSBhZGRMZWFkaW5nWmVyb3MoZGF0ZV8uZ2V0TWludXRlcygpLCAyKTtcbiAgICBjb25zdCBzZWNvbmQgPSBhZGRMZWFkaW5nWmVyb3MoZGF0ZV8uZ2V0U2Vjb25kcygpLCAyKTtcblxuICAgIC8vIElmIHRoZXJlJ3MgYWxzbyBkYXRlLCBzZXBhcmF0ZSBpdCB3aXRoIHRpbWUgd2l0aCAnVCdcbiAgICBjb25zdCBzZXBhcmF0b3IgPSByZXN1bHQgPT09IFwiXCIgPyBcIlwiIDogXCJUXCI7XG5cbiAgICAvLyBDcmVhdGVzIGEgdGltZSBzdHJpbmcgY29uc2lzdGluZyBvZiBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQsIHNlcGFyYXRlZCBieSBkZWxpbWl0ZXJzLCBpZiBkZWZpbmVkLlxuICAgIGNvbnN0IHRpbWUgPSBbaG91ciwgbWludXRlLCBzZWNvbmRdLmpvaW4odGltZURlbGltaXRlcik7XG5cbiAgICAvLyBISG1tc3Mgb3IgSEg6bW06c3MuXG4gICAgcmVzdWx0ID0gYCR7cmVzdWx0fSR7c2VwYXJhdG9yfSR7dGltZX0ke3R6T2Zmc2V0fWA7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGZvcm1hdElTTztcbiIsICJpbXBvcnQgeyBnZXREZWZhdWx0T3B0aW9ucyBhcyBnZXRJbnRlcm5hbERlZmF1bHRPcHRpb25zIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0T3B0aW9ucy5qc1wiO1xuXG4vKipcbiAqIEBuYW1lIGdldERlZmF1bHRPcHRpb25zXG4gKiBAY2F0ZWdvcnkgQ29tbW9uIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IEdldCBkZWZhdWx0IG9wdGlvbnMuXG4gKiBAcHVyZSBmYWxzZVxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogUmV0dXJucyBhbiBvYmplY3QgdGhhdCBjb250YWlucyBkZWZhdWx0cyBmb3JcbiAqIGBvcHRpb25zLmxvY2FsZWAsIGBvcHRpb25zLndlZWtTdGFydHNPbmAgYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWBcbiAqIGFyZ3VtZW50cyBmb3IgYWxsIGZ1bmN0aW9ucy5cbiAqXG4gKiBZb3UgY2FuIGNoYW5nZSB0aGVzZSB3aXRoIFtzZXREZWZhdWx0T3B0aW9uc10oaHR0cHM6Ly9kYXRlLWZucy5vcmcvZG9jcy9zZXREZWZhdWx0T3B0aW9ucykuXG4gKlxuICogQHJldHVybnMgVGhlIGRlZmF1bHQgb3B0aW9uc1xuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCByZXN1bHQgPSBnZXREZWZhdWx0T3B0aW9ucygpXG4gKiAvLz0+IHt9XG4gKlxuICogQGV4YW1wbGVcbiAqIHNldERlZmF1bHRPcHRpb25zKHsgd2Vla1N0YXJzT246IDEsIGZpcnN0V2Vla0NvbnRhaW5zRGF0ZTogNCB9KVxuICogY29uc3QgcmVzdWx0ID0gZ2V0RGVmYXVsdE9wdGlvbnMoKVxuICogLy89PiB7IHdlZWtTdGFyc09uOiAxLCBmaXJzdFdlZWtDb250YWluc0RhdGU6IDQgfVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdE9wdGlvbnMoKSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRJbnRlcm5hbERlZmF1bHRPcHRpb25zKCkpO1xufVxuXG4vLyBGYWxsYmFjayBmb3IgbW9kdWxhcml6ZWQgaW1wb3J0czpcbmV4cG9ydCBkZWZhdWx0IGdldERlZmF1bHRPcHRpb25zO1xuIiwgImltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgZ2V0SVNPRGF5fSBmdW5jdGlvbiBvcHRpb25zLlxuICovXG5cbi8qKlxuICogQG5hbWUgZ2V0SVNPRGF5XG4gKiBAY2F0ZWdvcnkgV2Vla2RheSBIZWxwZXJzXG4gKiBAc3VtbWFyeSBHZXQgdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiBHZXQgdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgb2YgdGhlIGdpdmVuIGRhdGUsXG4gKiB3aGljaCBpcyA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSBldGMuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGdpdmVuIGRhdGVcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9uc1xuICpcbiAqIEByZXR1cm5zIFRoZSBkYXkgb2YgSVNPIHdlZWtcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gV2hpY2ggZGF5IG9mIHRoZSBJU08gd2VlayBpcyAyNiBGZWJydWFyeSAyMDEyP1xuICogY29uc3QgcmVzdWx0ID0gZ2V0SVNPRGF5KG5ldyBEYXRlKDIwMTIsIDEsIDI2KSlcbiAqIC8vPT4gN1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SVNPRGF5KGRhdGUsIG9wdGlvbnMpIHtcbiAgY29uc3QgZGF5ID0gdG9EYXRlKGRhdGUsIG9wdGlvbnM/LmluKS5nZXREYXkoKTtcbiAgcmV0dXJuIGRheSA9PT0gMCA/IDcgOiBkYXk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgZ2V0SVNPRGF5O1xuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5cbi8qKlxuICogQG5hbWUgdHJhbnNwb3NlXG4gKiBAY2F0ZWdvcnkgR2VuZXJpYyBIZWxwZXJzXG4gKiBAc3VtbWFyeSBUcmFuc3Bvc2UgdGhlIGRhdGUgdG8gdGhlIGdpdmVuIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogVGhlIGZ1bmN0aW9uIHRyYW5zcG9zZXMgdGhlIGRhdGUgdG8gdGhlIGdpdmVuIGNvbnN0cnVjdG9yLiBJdCBoZWxwcyB5b3VcbiAqIHRvIHRyYW5zcG9zZSB0aGUgZGF0ZSBpbiB0aGUgc3lzdGVtIHRpbWUgem9uZSB0byBzYXkgYFVUQ0RhdGVgIG9yIGFueSBvdGhlclxuICogZGF0ZSBleHRlbnNpb24uXG4gKlxuICogQHR5cGVQYXJhbSBJbnB1dERhdGUgLSBUaGUgaW5wdXQgYERhdGVgIHR5cGUgZGVyaXZlZCBmcm9tIHRoZSBwYXNzZWQgYXJndW1lbnQuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlIGRlcml2ZWQgZnJvbSB0aGUgcGFzc2VkIGNvbnN0cnVjdG9yLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gdXNlIHZhbHVlcyBmcm9tXG4gKiBAcGFyYW0gY29uc3RydWN0b3IgLSBUaGUgZGF0ZSBjb25zdHJ1Y3RvciB0byB1c2VcbiAqXG4gKiBAcmV0dXJucyBEYXRlIHRyYW5zcG9zZWQgdG8gdGhlIGdpdmVuIGNvbnN0cnVjdG9yXG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIENyZWF0ZSBKdWx5IDEwLCAyMDIyIDAwOjAwIGluIGxvY2FsZSB0aW1lIHpvbmVcbiAqIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDIyLCA2LCAxMClcbiAqIC8vPT4gJ1N1biBKdWwgMTAgMjAyMiAwMDowMDowMCBHTVQrMDgwMCAoU2luZ2Fwb3JlIFN0YW5kYXJkIFRpbWUpJ1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBUcmFuc3Bvc2UgdGhlIGRhdGUgdG8gSnVseSAxMCwgMjAyMiAwMDowMCBpbiBVVENcbiAqIHRyYW5zcG9zZShkYXRlLCBVVENEYXRlKVxuICogLy89PiAnU3VuIEp1bCAxMCAyMDIyIDAwOjAwOjAwIEdNVCswMDAwIChDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZSknXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc3Bvc2UoZGF0ZSwgY29uc3RydWN0b3IpIHtcbiAgY29uc3QgZGF0ZV8gPSBpc0NvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKVxuICAgID8gbmV3IGNvbnN0cnVjdG9yKDApXG4gICAgOiBjb25zdHJ1Y3RGcm9tKGNvbnN0cnVjdG9yLCAwKTtcbiAgZGF0ZV8uc2V0RnVsbFllYXIoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKTtcbiAgZGF0ZV8uc2V0SG91cnMoXG4gICAgZGF0ZS5nZXRIb3VycygpLFxuICAgIGRhdGUuZ2V0TWludXRlcygpLFxuICAgIGRhdGUuZ2V0U2Vjb25kcygpLFxuICAgIGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCksXG4gICk7XG4gIHJldHVybiBkYXRlXztcbn1cblxuZnVuY3Rpb24gaXNDb25zdHJ1Y3Rvcihjb25zdHJ1Y3Rvcikge1xuICByZXR1cm4gKFxuICAgIHR5cGVvZiBjb25zdHJ1Y3RvciA9PT0gXCJmdW5jdGlvblwiICYmXG4gICAgY29uc3RydWN0b3IucHJvdG90eXBlPy5jb25zdHJ1Y3RvciA9PT0gY29uc3RydWN0b3JcbiAgKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCB0cmFuc3Bvc2U7XG4iLCAiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuLi8uLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5pbXBvcnQgeyB0cmFuc3Bvc2UgfSBmcm9tIFwiLi4vLi4vdHJhbnNwb3NlLmpzXCI7XG5cbmNvbnN0IFRJTUVaT05FX1VOSVRfUFJJT1JJVFkgPSAxMDtcblxuZXhwb3J0IGNsYXNzIFNldHRlciB7XG4gIHN1YlByaW9yaXR5ID0gMDtcblxuICB2YWxpZGF0ZShfdXRjRGF0ZSwgX29wdGlvbnMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgVmFsdWVTZXR0ZXIgZXh0ZW5kcyBTZXR0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICB2YWx1ZSxcblxuICAgIHZhbGlkYXRlVmFsdWUsXG5cbiAgICBzZXRWYWx1ZSxcblxuICAgIHByaW9yaXR5LFxuICAgIHN1YlByaW9yaXR5LFxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUgPSB2YWxpZGF0ZVZhbHVlO1xuICAgIHRoaXMuc2V0VmFsdWUgPSBzZXRWYWx1ZTtcbiAgICB0aGlzLnByaW9yaXR5ID0gcHJpb3JpdHk7XG4gICAgaWYgKHN1YlByaW9yaXR5KSB7XG4gICAgICB0aGlzLnN1YlByaW9yaXR5ID0gc3ViUHJpb3JpdHk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoZGF0ZSwgb3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLnZhbGlkYXRlVmFsdWUoZGF0ZSwgdGhpcy52YWx1ZSwgb3B0aW9ucyk7XG4gIH1cblxuICBzZXQoZGF0ZSwgZmxhZ3MsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5zZXRWYWx1ZShkYXRlLCBmbGFncywgdGhpcy52YWx1ZSwgb3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIERhdGVUaW1lem9uZVNldHRlciBleHRlbmRzIFNldHRlciB7XG4gIHByaW9yaXR5ID0gVElNRVpPTkVfVU5JVF9QUklPUklUWTtcbiAgc3ViUHJpb3JpdHkgPSAtMTtcblxuICBjb25zdHJ1Y3Rvcihjb250ZXh0LCByZWZlcmVuY2UpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQgfHwgKChkYXRlKSA9PiBjb25zdHJ1Y3RGcm9tKHJlZmVyZW5jZSwgZGF0ZSkpO1xuICB9XG5cbiAgc2V0KGRhdGUsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzLnRpbWVzdGFtcElzU2V0KSByZXR1cm4gZGF0ZTtcbiAgICByZXR1cm4gY29uc3RydWN0RnJvbShkYXRlLCB0cmFuc3Bvc2UoZGF0ZSwgdGhpcy5jb250ZXh0KSk7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBWYWx1ZVNldHRlciB9IGZyb20gXCIuL1NldHRlci5qc1wiO1xuXG5leHBvcnQgY2xhc3MgUGFyc2VyIHtcbiAgcnVuKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMucGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHNldHRlcjogbmV3IFZhbHVlU2V0dGVyKFxuICAgICAgICByZXN1bHQudmFsdWUsXG4gICAgICAgIHRoaXMudmFsaWRhdGUsXG4gICAgICAgIHRoaXMuc2V0LFxuICAgICAgICB0aGlzLnByaW9yaXR5LFxuICAgICAgICB0aGlzLnN1YlByaW9yaXR5LFxuICAgICAgKSxcbiAgICAgIHJlc3Q6IHJlc3VsdC5yZXN0LFxuICAgIH07XG4gIH1cblxuICB2YWxpZGF0ZShfdXRjRGF0ZSwgX3ZhbHVlLCBfb3B0aW9ucykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRXJhUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSAxNDA7XG5cbiAgcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gQUQsIEJDXG4gICAgICBjYXNlIFwiR1wiOlxuICAgICAgY2FzZSBcIkdHXCI6XG4gICAgICBjYXNlIFwiR0dHXCI6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIiB9KSB8fFxuICAgICAgICAgIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIm5hcnJvd1wiIH0pXG4gICAgICAgICk7XG5cbiAgICAgIC8vIEEsIEJcbiAgICAgIGNhc2UgXCJHR0dHR1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwibmFycm93XCIgfSk7XG4gICAgICAvLyBBbm5vIERvbWluaSwgQmVmb3JlIENocmlzdFxuICAgICAgY2FzZSBcIkdHR0dcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwid2lkZVwiIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZXJhKGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIiB9KSB8fFxuICAgICAgICAgIG1hdGNoLmVyYShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIm5hcnJvd1wiIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc2V0KGRhdGUsIGZsYWdzLCB2YWx1ZSkge1xuICAgIGZsYWdzLmVyYSA9IHZhbHVlO1xuICAgIGRhdGUuc2V0RnVsbFllYXIodmFsdWUsIDAsIDEpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJSXCIsIFwidVwiLCBcInRcIiwgXCJUXCJdO1xufVxuIiwgImV4cG9ydCBjb25zdCBudW1lcmljUGF0dGVybnMgPSB7XG4gIG1vbnRoOiAvXigxWzAtMl18MD9cXGQpLywgLy8gMCB0byAxMlxuICBkYXRlOiAvXigzWzAtMV18WzAtMl0/XFxkKS8sIC8vIDAgdG8gMzFcbiAgZGF5T2ZZZWFyOiAvXigzNlswLTZdfDNbMC01XVxcZHxbMC0yXT9cXGQ/XFxkKS8sIC8vIDAgdG8gMzY2XG4gIHdlZWs6IC9eKDVbMC0zXXxbMC00XT9cXGQpLywgLy8gMCB0byA1M1xuICBob3VyMjNoOiAvXigyWzAtM118WzAtMV0/XFxkKS8sIC8vIDAgdG8gMjNcbiAgaG91cjI0aDogL14oMlswLTRdfFswLTFdP1xcZCkvLCAvLyAwIHRvIDI0XG4gIGhvdXIxMWg6IC9eKDFbMC0xXXwwP1xcZCkvLCAvLyAwIHRvIDExXG4gIGhvdXIxMmg6IC9eKDFbMC0yXXwwP1xcZCkvLCAvLyAwIHRvIDEyXG4gIG1pbnV0ZTogL15bMC01XT9cXGQvLCAvLyAwIHRvIDU5XG4gIHNlY29uZDogL15bMC01XT9cXGQvLCAvLyAwIHRvIDU5XG5cbiAgc2luZ2xlRGlnaXQ6IC9eXFxkLywgLy8gMCB0byA5XG4gIHR3b0RpZ2l0czogL15cXGR7MSwyfS8sIC8vIDAgdG8gOTlcbiAgdGhyZWVEaWdpdHM6IC9eXFxkezEsM30vLCAvLyAwIHRvIDk5OVxuICBmb3VyRGlnaXRzOiAvXlxcZHsxLDR9LywgLy8gMCB0byA5OTk5XG5cbiAgYW55RGlnaXRzU2lnbmVkOiAvXi0/XFxkKy8sXG4gIHNpbmdsZURpZ2l0U2lnbmVkOiAvXi0/XFxkLywgLy8gMCB0byA5LCAtMCB0byAtOVxuICB0d29EaWdpdHNTaWduZWQ6IC9eLT9cXGR7MSwyfS8sIC8vIDAgdG8gOTksIC0wIHRvIC05OVxuICB0aHJlZURpZ2l0c1NpZ25lZDogL14tP1xcZHsxLDN9LywgLy8gMCB0byA5OTksIC0wIHRvIC05OTlcbiAgZm91ckRpZ2l0c1NpZ25lZDogL14tP1xcZHsxLDR9LywgLy8gMCB0byA5OTk5LCAtMCB0byAtOTk5OVxufTtcblxuZXhwb3J0IGNvbnN0IHRpbWV6b25lUGF0dGVybnMgPSB7XG4gIGJhc2ljT3B0aW9uYWxNaW51dGVzOiAvXihbKy1dKShcXGR7Mn0pKFxcZHsyfSk/fFovLFxuICBiYXNpYzogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pfFovLFxuICBiYXNpY09wdGlvbmFsU2Vjb25kczogL14oWystXSkoXFxkezJ9KShcXGR7Mn0pKChcXGR7Mn0pKT98Wi8sXG4gIGV4dGVuZGVkOiAvXihbKy1dKShcXGR7Mn0pOihcXGR7Mn0pfFovLFxuICBleHRlbmRlZE9wdGlvbmFsU2Vjb25kczogL14oWystXSkoXFxkezJ9KTooXFxkezJ9KSg6KFxcZHsyfSkpP3xaLyxcbn07XG4iLCAiaW1wb3J0IHtcbiAgbWlsbGlzZWNvbmRzSW5Ib3VyLFxuICBtaWxsaXNlY29uZHNJbk1pbnV0ZSxcbiAgbWlsbGlzZWNvbmRzSW5TZWNvbmQsXG59IGZyb20gXCIuLi8uLi9jb25zdGFudHMuanNcIjtcblxuaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4vY29uc3RhbnRzLmpzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBWYWx1ZShwYXJzZUZuUmVzdWx0LCBtYXBGbikge1xuICBpZiAoIXBhcnNlRm5SZXN1bHQpIHtcbiAgICByZXR1cm4gcGFyc2VGblJlc3VsdDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdmFsdWU6IG1hcEZuKHBhcnNlRm5SZXN1bHQudmFsdWUpLFxuICAgIHJlc3Q6IHBhcnNlRm5SZXN1bHQucmVzdCxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtZXJpY1BhdHRlcm4ocGF0dGVybiwgZGF0ZVN0cmluZykge1xuICBjb25zdCBtYXRjaFJlc3VsdCA9IGRhdGVTdHJpbmcubWF0Y2gocGF0dGVybik7XG5cbiAgaWYgKCFtYXRjaFJlc3VsdCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogcGFyc2VJbnQobWF0Y2hSZXN1bHRbMF0sIDEwKSxcbiAgICByZXN0OiBkYXRlU3RyaW5nLnNsaWNlKG1hdGNoUmVzdWx0WzBdLmxlbmd0aCksXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVRpbWV6b25lUGF0dGVybihwYXR0ZXJuLCBkYXRlU3RyaW5nKSB7XG4gIGNvbnN0IG1hdGNoUmVzdWx0ID0gZGF0ZVN0cmluZy5tYXRjaChwYXR0ZXJuKTtcblxuICBpZiAoIW1hdGNoUmVzdWx0KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJbnB1dCBpcyAnWidcbiAgaWYgKG1hdGNoUmVzdWx0WzBdID09PSBcIlpcIikge1xuICAgIHJldHVybiB7XG4gICAgICB2YWx1ZTogMCxcbiAgICAgIHJlc3Q6IGRhdGVTdHJpbmcuc2xpY2UoMSksXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHNpZ24gPSBtYXRjaFJlc3VsdFsxXSA9PT0gXCIrXCIgPyAxIDogLTE7XG4gIGNvbnN0IGhvdXJzID0gbWF0Y2hSZXN1bHRbMl0gPyBwYXJzZUludChtYXRjaFJlc3VsdFsyXSwgMTApIDogMDtcbiAgY29uc3QgbWludXRlcyA9IG1hdGNoUmVzdWx0WzNdID8gcGFyc2VJbnQobWF0Y2hSZXN1bHRbM10sIDEwKSA6IDA7XG4gIGNvbnN0IHNlY29uZHMgPSBtYXRjaFJlc3VsdFs1XSA/IHBhcnNlSW50KG1hdGNoUmVzdWx0WzVdLCAxMCkgOiAwO1xuXG4gIHJldHVybiB7XG4gICAgdmFsdWU6XG4gICAgICBzaWduICpcbiAgICAgIChob3VycyAqIG1pbGxpc2Vjb25kc0luSG91ciArXG4gICAgICAgIG1pbnV0ZXMgKiBtaWxsaXNlY29uZHNJbk1pbnV0ZSArXG4gICAgICAgIHNlY29uZHMgKiBtaWxsaXNlY29uZHNJblNlY29uZCksXG4gICAgcmVzdDogZGF0ZVN0cmluZy5zbGljZShtYXRjaFJlc3VsdFswXS5sZW5ndGgpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBbnlEaWdpdHNTaWduZWQoZGF0ZVN0cmluZykge1xuICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuYW55RGlnaXRzU2lnbmVkLCBkYXRlU3RyaW5nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTkRpZ2l0cyhuLCBkYXRlU3RyaW5nKSB7XG4gIHN3aXRjaCAobikge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5zaW5nbGVEaWdpdCwgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnR3b0RpZ2l0cywgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLnRocmVlRGlnaXRzLCBkYXRlU3RyaW5nKTtcbiAgICBjYXNlIDQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZm91ckRpZ2l0cywgZGF0ZVN0cmluZyk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG5ldyBSZWdFeHAoXCJeXFxcXGR7MSxcIiArIG4gKyBcIn1cIiksIGRhdGVTdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU5EaWdpdHNTaWduZWQobiwgZGF0ZVN0cmluZykge1xuICBzd2l0Y2ggKG4pIHtcbiAgICBjYXNlIDE6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2luZ2xlRGlnaXRTaWduZWQsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgMjpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy50d29EaWdpdHNTaWduZWQsIGRhdGVTdHJpbmcpO1xuICAgIGNhc2UgMzpcbiAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy50aHJlZURpZ2l0c1NpZ25lZCwgZGF0ZVN0cmluZyk7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLmZvdXJEaWdpdHNTaWduZWQsIGRhdGVTdHJpbmcpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihuZXcgUmVnRXhwKFwiXi0/XFxcXGR7MSxcIiArIG4gKyBcIn1cIiksIGRhdGVTdHJpbmcpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkYXlQZXJpb2RFbnVtVG9Ib3VycyhkYXlQZXJpb2QpIHtcbiAgc3dpdGNoIChkYXlQZXJpb2QpIHtcbiAgICBjYXNlIFwibW9ybmluZ1wiOlxuICAgICAgcmV0dXJuIDQ7XG4gICAgY2FzZSBcImV2ZW5pbmdcIjpcbiAgICAgIHJldHVybiAxNztcbiAgICBjYXNlIFwicG1cIjpcbiAgICBjYXNlIFwibm9vblwiOlxuICAgIGNhc2UgXCJhZnRlcm5vb25cIjpcbiAgICAgIHJldHVybiAxMjtcbiAgICBjYXNlIFwiYW1cIjpcbiAgICBjYXNlIFwibWlkbmlnaHRcIjpcbiAgICBjYXNlIFwibmlnaHRcIjpcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIDA7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVR3b0RpZ2l0WWVhcih0d29EaWdpdFllYXIsIGN1cnJlbnRZZWFyKSB7XG4gIGNvbnN0IGlzQ29tbW9uRXJhID0gY3VycmVudFllYXIgPiAwO1xuICAvLyBBYnNvbHV0ZSBudW1iZXIgb2YgdGhlIGN1cnJlbnQgeWVhcjpcbiAgLy8gMSAtPiAxIEFDXG4gIC8vIDAgLT4gMSBCQ1xuICAvLyAtMSAtPiAyIEJDXG4gIGNvbnN0IGFic0N1cnJlbnRZZWFyID0gaXNDb21tb25FcmEgPyBjdXJyZW50WWVhciA6IDEgLSBjdXJyZW50WWVhcjtcblxuICBsZXQgcmVzdWx0O1xuICBpZiAoYWJzQ3VycmVudFllYXIgPD0gNTApIHtcbiAgICByZXN1bHQgPSB0d29EaWdpdFllYXIgfHwgMTAwO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHJhbmdlRW5kID0gYWJzQ3VycmVudFllYXIgKyA1MDtcbiAgICBjb25zdCByYW5nZUVuZENlbnR1cnkgPSBNYXRoLnRydW5jKHJhbmdlRW5kIC8gMTAwKSAqIDEwMDtcbiAgICBjb25zdCBpc1ByZXZpb3VzQ2VudHVyeSA9IHR3b0RpZ2l0WWVhciA+PSByYW5nZUVuZCAlIDEwMDtcbiAgICByZXN1bHQgPSB0d29EaWdpdFllYXIgKyByYW5nZUVuZENlbnR1cnkgLSAoaXNQcmV2aW91c0NlbnR1cnkgPyAxMDAgOiAwKTtcbiAgfVxuXG4gIHJldHVybiBpc0NvbW1vbkVyYSA/IHJlc3VsdCA6IDEgLSByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlYXBZZWFySW5kZXgoeWVhcikge1xuICByZXR1cm4geWVhciAlIDQwMCA9PT0gMCB8fCAoeWVhciAlIDQgPT09IDAgJiYgeWVhciAlIDEwMCAhPT0gMCk7XG59XG4iLCAiaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBtYXBWYWx1ZSwgbm9ybWFsaXplVHdvRGlnaXRZZWFyLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuLy8gRnJvbSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LTMxL3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0Zvcm1hdF9QYXR0ZXJuc1xuLy8gfCBZZWFyICAgICB8ICAgICB5IHwgeXkgfCAgIHl5eSB8ICB5eXl5IHwgeXl5eXkgfFxuLy8gfC0tLS0tLS0tLS18LS0tLS0tLXwtLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfFxuLy8gfCBBRCAxICAgICB8ICAgICAxIHwgMDEgfCAgIDAwMSB8ICAwMDAxIHwgMDAwMDEgfFxuLy8gfCBBRCAxMiAgICB8ICAgIDEyIHwgMTIgfCAgIDAxMiB8ICAwMDEyIHwgMDAwMTIgfFxuLy8gfCBBRCAxMjMgICB8ICAgMTIzIHwgMjMgfCAgIDEyMyB8ICAwMTIzIHwgMDAxMjMgfFxuLy8gfCBBRCAxMjM0ICB8ICAxMjM0IHwgMzQgfCAgMTIzNCB8ICAxMjM0IHwgMDEyMzQgfFxuLy8gfCBBRCAxMjM0NSB8IDEyMzQ1IHwgNDUgfCAxMjM0NSB8IDEyMzQ1IHwgMTIzNDUgfFxuZXhwb3J0IGNsYXNzIFllYXJQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDEzMDtcbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1wiWVwiLCBcIlJcIiwgXCJ1XCIsIFwid1wiLCBcIklcIiwgXCJpXCIsIFwiZVwiLCBcImNcIiwgXCJ0XCIsIFwiVFwiXTtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBjb25zdCB2YWx1ZUNhbGxiYWNrID0gKHllYXIpID0+ICh7XG4gICAgICB5ZWFyLFxuICAgICAgaXNUd29EaWdpdFllYXI6IHRva2VuID09PSBcInl5XCIsXG4gICAgfSk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwieVwiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKDQsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgIGNhc2UgXCJ5b1wiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUoXG4gICAgICAgICAgbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiBcInllYXJcIixcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB2YWx1ZUNhbGxiYWNrLFxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuaXNUd29EaWdpdFllYXIgfHwgdmFsdWUueWVhciA+IDA7XG4gIH1cblxuICBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlKSB7XG4gICAgY29uc3QgY3VycmVudFllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XG5cbiAgICBpZiAodmFsdWUuaXNUd29EaWdpdFllYXIpIHtcbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWRUd29EaWdpdFllYXIgPSBub3JtYWxpemVUd29EaWdpdFllYXIoXG4gICAgICAgIHZhbHVlLnllYXIsXG4gICAgICAgIGN1cnJlbnRZZWFyLFxuICAgICAgKTtcbiAgICAgIGRhdGUuc2V0RnVsbFllYXIobm9ybWFsaXplZFR3b0RpZ2l0WWVhciwgMCwgMSk7XG4gICAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgICAgcmV0dXJuIGRhdGU7XG4gICAgfVxuXG4gICAgY29uc3QgeWVhciA9XG4gICAgICAhKFwiZXJhXCIgaW4gZmxhZ3MpIHx8IGZsYWdzLmVyYSA9PT0gMSA/IHZhbHVlLnllYXIgOiAxIC0gdmFsdWUueWVhcjtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHllYXIsIDAsIDEpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cbn1cbiIsICJpbXBvcnQgeyBnZXRXZWVrWWVhciB9IGZyb20gXCIuLi8uLi8uLi9nZXRXZWVrWWVhci5qc1wiO1xuXG5pbXBvcnQgeyBzdGFydE9mV2VlayB9IGZyb20gXCIuLi8uLi8uLi9zdGFydE9mV2Vlay5qc1wiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBtYXBWYWx1ZSwgbm9ybWFsaXplVHdvRGlnaXRZZWFyLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuLy8gTG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhclxuZXhwb3J0IGNsYXNzIExvY2FsV2Vla1llYXJQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDEzMDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBjb25zdCB2YWx1ZUNhbGxiYWNrID0gKHllYXIpID0+ICh7XG4gICAgICB5ZWFyLFxuICAgICAgaXNUd29EaWdpdFllYXI6IHRva2VuID09PSBcIllZXCIsXG4gICAgfSk7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwiWVwiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKDQsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgIGNhc2UgXCJZb1wiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUoXG4gICAgICAgICAgbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiBcInllYXJcIixcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB2YWx1ZUNhbGxiYWNrLFxuICAgICAgICApO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuaXNUd29EaWdpdFllYXIgfHwgdmFsdWUueWVhciA+IDA7XG4gIH1cblxuICBzZXQoZGF0ZSwgZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgY29uc3QgY3VycmVudFllYXIgPSBnZXRXZWVrWWVhcihkYXRlLCBvcHRpb25zKTtcblxuICAgIGlmICh2YWx1ZS5pc1R3b0RpZ2l0WWVhcikge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZFR3b0RpZ2l0WWVhciA9IG5vcm1hbGl6ZVR3b0RpZ2l0WWVhcihcbiAgICAgICAgdmFsdWUueWVhcixcbiAgICAgICAgY3VycmVudFllYXIsXG4gICAgICApO1xuICAgICAgZGF0ZS5zZXRGdWxsWWVhcihcbiAgICAgICAgbm9ybWFsaXplZFR3b0RpZ2l0WWVhcixcbiAgICAgICAgMCxcbiAgICAgICAgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUsXG4gICAgICApO1xuICAgICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICAgIHJldHVybiBzdGFydE9mV2VlayhkYXRlLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBjb25zdCB5ZWFyID1cbiAgICAgICEoXCJlcmFcIiBpbiBmbGFncykgfHwgZmxhZ3MuZXJhID09PSAxID8gdmFsdWUueWVhciA6IDEgLSB2YWx1ZS55ZWFyO1xuICAgIGRhdGUuc2V0RnVsbFllYXIoeWVhciwgMCwgb3B0aW9ucy5maXJzdFdlZWtDb250YWluc0RhdGUpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIHN0YXJ0T2ZXZWVrKGRhdGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1xuICAgIFwieVwiLFxuICAgIFwiUlwiLFxuICAgIFwidVwiLFxuICAgIFwiUVwiLFxuICAgIFwicVwiLFxuICAgIFwiTVwiLFxuICAgIFwiTFwiLFxuICAgIFwiSVwiLFxuICAgIFwiZFwiLFxuICAgIFwiRFwiLFxuICAgIFwiaVwiLFxuICAgIFwidFwiLFxuICAgIFwiVFwiLFxuICBdO1xufVxuIiwgImltcG9ydCB7IHN0YXJ0T2ZJU09XZWVrIH0gZnJvbSBcIi4uLy4uLy4uL3N0YXJ0T2ZJU09XZWVrLmpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4uLy4uLy4uL2NvbnN0cnVjdEZyb20uanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgcGFyc2VORGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbi8vIElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyXG5leHBvcnQgY2xhc3MgSVNPV2Vla1llYXJQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDEzMDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgIGlmICh0b2tlbiA9PT0gXCJSXCIpIHtcbiAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQoNCwgZGF0ZVN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICBjb25zdCBmaXJzdFdlZWtPZlllYXIgPSBjb25zdHJ1Y3RGcm9tKGRhdGUsIDApO1xuICAgIGZpcnN0V2Vla09mWWVhci5zZXRGdWxsWWVhcih2YWx1ZSwgMCwgNCk7XG4gICAgZmlyc3RXZWVrT2ZZZWFyLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiBzdGFydE9mSVNPV2VlayhmaXJzdFdlZWtPZlllYXIpO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1xuICAgIFwiR1wiLFxuICAgIFwieVwiLFxuICAgIFwiWVwiLFxuICAgIFwidVwiLFxuICAgIFwiUVwiLFxuICAgIFwicVwiLFxuICAgIFwiTVwiLFxuICAgIFwiTFwiLFxuICAgIFwid1wiLFxuICAgIFwiZFwiLFxuICAgIFwiRFwiLFxuICAgIFwiZVwiLFxuICAgIFwiY1wiLFxuICAgIFwidFwiLFxuICAgIFwiVFwiLFxuICBdO1xufVxuIiwgImltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgcGFyc2VORGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBFeHRlbmRlZFllYXJQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDEzMDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgIGlmICh0b2tlbiA9PT0gXCJ1XCIpIHtcbiAgICAgIHJldHVybiBwYXJzZU5EaWdpdHNTaWduZWQoNCwgZGF0ZVN0cmluZyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlTkRpZ2l0c1NpZ25lZCh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICBkYXRlLnNldEZ1bGxZZWFyKHZhbHVlLCAwLCAxKTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1wiR1wiLCBcInlcIiwgXCJZXCIsIFwiUlwiLCBcIndcIiwgXCJJXCIsIFwiaVwiLCBcImVcIiwgXCJjXCIsIFwidFwiLCBcIlRcIl07XG59XG4iLCAiaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIFF1YXJ0ZXJQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDEyMDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAxLCAyLCAzLCA0XG4gICAgICBjYXNlIFwiUVwiOlxuICAgICAgY2FzZSBcIlFRXCI6IC8vIDAxLCAwMiwgMDMsIDA0XG4gICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAzcmQsIDR0aFxuICAgICAgY2FzZSBcIlFvXCI6XG4gICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHsgdW5pdDogXCJxdWFydGVyXCIgfSk7XG4gICAgICAvLyBRMSwgUTIsIFEzLCBRNFxuICAgICAgY2FzZSBcIlFRUVwiOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgIC8vIDEsIDIsIDMsIDQgKG5hcnJvdyBxdWFydGVyOyBjb3VsZCBiZSBub3QgbnVtZXJpY2FsKVxuICAgICAgY2FzZSBcIlFRUVFRXCI6XG4gICAgICAgIHJldHVybiBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLlxuICAgICAgY2FzZSBcIlFRUVFcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJ3aWRlXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNDtcbiAgfVxuXG4gIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgZGF0ZS5zZXRNb250aCgodmFsdWUgLSAxKSAqIDMsIDEpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXG4gICAgXCJZXCIsXG4gICAgXCJSXCIsXG4gICAgXCJxXCIsXG4gICAgXCJNXCIsXG4gICAgXCJMXCIsXG4gICAgXCJ3XCIsXG4gICAgXCJJXCIsXG4gICAgXCJkXCIsXG4gICAgXCJEXCIsXG4gICAgXCJpXCIsXG4gICAgXCJlXCIsXG4gICAgXCJjXCIsXG4gICAgXCJ0XCIsXG4gICAgXCJUXCIsXG4gIF07XG59XG4iLCAiaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSAxMjA7XG5cbiAgcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMSwgMiwgMywgNFxuICAgICAgY2FzZSBcInFcIjpcbiAgICAgIGNhc2UgXCJxcVwiOiAvLyAwMSwgMDIsIDAzLCAwNFxuICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAvLyAxc3QsIDJuZCwgM3JkLCA0dGhcbiAgICAgIGNhc2UgXCJxb1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwicXVhcnRlclwiIH0pO1xuICAgICAgLy8gUTEsIFEyLCBRMywgUTRcbiAgICAgIGNhc2UgXCJxcXFcIjpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAvLyAxLCAyLCAzLCA0IChuYXJyb3cgcXVhcnRlcjsgY291bGQgYmUgbm90IG51bWVyaWNhbClcbiAgICAgIGNhc2UgXCJxcXFxcVwiOlxuICAgICAgICByZXR1cm4gbWF0Y2gucXVhcnRlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJzdGFuZGFsb25lXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gMXN0IHF1YXJ0ZXIsIDJuZCBxdWFydGVyLCAuLi5cbiAgICAgIGNhc2UgXCJxcXFxXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwid2lkZVwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJzdGFuZGFsb25lXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICBtYXRjaC5xdWFydGVyKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLnF1YXJ0ZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDQ7XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgIGRhdGUuc2V0TW9udGgoKHZhbHVlIC0gMSkgKiAzLCAxKTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1xuICAgIFwiWVwiLFxuICAgIFwiUlwiLFxuICAgIFwiUVwiLFxuICAgIFwiTVwiLFxuICAgIFwiTFwiLFxuICAgIFwid1wiLFxuICAgIFwiSVwiLFxuICAgIFwiZFwiLFxuICAgIFwiRFwiLFxuICAgIFwiaVwiLFxuICAgIFwiZVwiLFxuICAgIFwiY1wiLFxuICAgIFwidFwiLFxuICAgIFwiVFwiLFxuICBdO1xufVxuIiwgImltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cywgcGFyc2VOdW1lcmljUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgTW9udGhQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXG4gICAgXCJZXCIsXG4gICAgXCJSXCIsXG4gICAgXCJxXCIsXG4gICAgXCJRXCIsXG4gICAgXCJMXCIsXG4gICAgXCJ3XCIsXG4gICAgXCJJXCIsXG4gICAgXCJEXCIsXG4gICAgXCJpXCIsXG4gICAgXCJlXCIsXG4gICAgXCJjXCIsXG4gICAgXCJ0XCIsXG4gICAgXCJUXCIsXG4gIF07XG5cbiAgcHJpb3JpdHkgPSAxMTA7XG5cbiAgcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgY29uc3QgdmFsdWVDYWxsYmFjayA9ICh2YWx1ZSkgPT4gdmFsdWUgLSAxO1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMSwgMiwgLi4uLCAxMlxuICAgICAgY2FzZSBcIk1cIjpcbiAgICAgICAgcmV0dXJuIG1hcFZhbHVlKFxuICAgICAgICAgIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLm1vbnRoLCBkYXRlU3RyaW5nKSxcbiAgICAgICAgICB2YWx1ZUNhbGxiYWNrLFxuICAgICAgICApO1xuICAgICAgLy8gMDEsIDAyLCAuLi4sIDEyXG4gICAgICBjYXNlIFwiTU1cIjpcbiAgICAgICAgcmV0dXJuIG1hcFZhbHVlKHBhcnNlTkRpZ2l0cygyLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAvLyAxc3QsIDJuZCwgLi4uLCAxMnRoXG4gICAgICBjYXNlIFwiTW9cIjpcbiAgICAgICAgcmV0dXJuIG1hcFZhbHVlKFxuICAgICAgICAgIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogXCJtb250aFwiLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHZhbHVlQ2FsbGJhY2ssXG4gICAgICAgICk7XG4gICAgICAvLyBKYW4sIEZlYiwgLi4uLCBEZWNcbiAgICAgIGNhc2UgXCJNTU1cIjpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIm5hcnJvd1wiLCBjb250ZXh0OiBcImZvcm1hdHRpbmdcIiB9KVxuICAgICAgICApO1xuXG4gICAgICAvLyBKLCBGLCAuLi4sIERcbiAgICAgIGNhc2UgXCJNTU1NTVwiOlxuICAgICAgICByZXR1cm4gbWF0Y2gubW9udGgoZGF0ZVN0cmluZywge1xuICAgICAgICAgIHdpZHRoOiBcIm5hcnJvd1wiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICAgIC8vIEphbnVhcnksIEZlYnJ1YXJ5LCAuLi4sIERlY2VtYmVyXG4gICAgICBjYXNlIFwiTU1NTVwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIndpZGVcIiwgY29udGV4dDogXCJmb3JtYXR0aW5nXCIgfSkgfHxcbiAgICAgICAgICBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIm5hcnJvd1wiLCBjb250ZXh0OiBcImZvcm1hdHRpbmdcIiB9KVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICBkYXRlLnNldE1vbnRoKHZhbHVlLCAxKTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG59XG4iLCAiaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBtYXBWYWx1ZSwgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBTdGFuZEFsb25lTW9udGhQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDExMDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBjb25zdCB2YWx1ZUNhbGxiYWNrID0gKHZhbHVlKSA9PiB2YWx1ZSAtIDE7XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAxLCAyLCAuLi4sIDEyXG4gICAgICBjYXNlIFwiTFwiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUoXG4gICAgICAgICAgcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMubW9udGgsIGRhdGVTdHJpbmcpLFxuICAgICAgICAgIHZhbHVlQ2FsbGJhY2ssXG4gICAgICAgICk7XG4gICAgICAvLyAwMSwgMDIsIC4uLiwgMTJcbiAgICAgIGNhc2UgXCJMTFwiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKDIsIGRhdGVTdHJpbmcpLCB2YWx1ZUNhbGxiYWNrKTtcbiAgICAgIC8vIDFzdCwgMm5kLCAuLi4sIDEydGhcbiAgICAgIGNhc2UgXCJMb1wiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUoXG4gICAgICAgICAgbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiBcIm1vbnRoXCIsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgdmFsdWVDYWxsYmFjayxcbiAgICAgICAgKTtcbiAgICAgIC8vIEphbiwgRmViLCAuLi4sIERlY1xuICAgICAgY2FzZSBcIkxMTFwiOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwibmFycm93XCIsIGNvbnRleHQ6IFwic3RhbmRhbG9uZVwiIH0pXG4gICAgICAgICk7XG5cbiAgICAgIC8vIEosIEYsIC4uLiwgRFxuICAgICAgY2FzZSBcIkxMTExMXCI6XG4gICAgICAgIHJldHVybiBtYXRjaC5tb250aChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJzdGFuZGFsb25lXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gSmFudWFyeSwgRmVicnVhcnksIC4uLiwgRGVjZW1iZXJcbiAgICAgIGNhc2UgXCJMTExMXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwid2lkZVwiLCBjb250ZXh0OiBcInN0YW5kYWxvbmVcIiB9KSB8fFxuICAgICAgICAgIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcInN0YW5kYWxvbmVcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLm1vbnRoKGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwibmFycm93XCIsIGNvbnRleHQ6IFwic3RhbmRhbG9uZVwiIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gMTE7XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgIGRhdGUuc2V0TW9udGgodmFsdWUsIDEpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXG4gICAgXCJZXCIsXG4gICAgXCJSXCIsXG4gICAgXCJxXCIsXG4gICAgXCJRXCIsXG4gICAgXCJNXCIsXG4gICAgXCJ3XCIsXG4gICAgXCJJXCIsXG4gICAgXCJEXCIsXG4gICAgXCJpXCIsXG4gICAgXCJlXCIsXG4gICAgXCJjXCIsXG4gICAgXCJ0XCIsXG4gICAgXCJUXCIsXG4gIF07XG59XG4iLCAiaW1wb3J0IHsgZ2V0V2VlayB9IGZyb20gXCIuL2dldFdlZWsuanNcIjtcbmltcG9ydCB7IHRvRGF0ZSB9IGZyb20gXCIuL3RvRGF0ZS5qc1wiO1xuXG4vKipcbiAqIFRoZSB7QGxpbmsgc2V0V2Vla30gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vKipcbiAqIEBuYW1lIHNldFdlZWtcbiAqIEBjYXRlZ29yeSBXZWVrIEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgbG9jYWwgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgbG9jYWwgd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZSwgc2F2aW5nIHRoZSB3ZWVrZGF5IG51bWJlci5cbiAqIFRoZSBleGFjdCBjYWxjdWxhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2ZcbiAqIGBvcHRpb25zLndlZWtTdGFydHNPbmAgKHdoaWNoIGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrKVxuICogYW5kIGBvcHRpb25zLmZpcnN0V2Vla0NvbnRhaW5zRGF0ZWAgKHdoaWNoIGlzIHRoZSBkYXkgb2YgSmFudWFyeSwgd2hpY2ggaXMgYWx3YXlzIGluXG4gKiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgd2Vlay1udW1iZXJpbmcgeWVhcilcbiAqXG4gKiBXZWVrIG51bWJlcmluZzogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2VlayNUaGVfSVNPX3dlZWtfZGF0ZV9zeXN0ZW1cbiAqXG4gKiBAdHlwZVBhcmFtIERhdGVUeXBlIC0gVGhlIGBEYXRlYCB0eXBlLCB0aGUgZnVuY3Rpb24gb3BlcmF0ZXMgb24uIEdldHMgaW5mZXJyZWQgZnJvbSBwYXNzZWQgYXJndW1lbnRzLiBBbGxvd3MgdG8gdXNlIGV4dGVuc2lvbnMgbGlrZSBbYFVUQ0RhdGVgXShodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvdXRjKS5cbiAqIEB0eXBlUGFyYW0gUmVzdWx0RGF0ZSAtIFRoZSByZXN1bHQgYERhdGVgIHR5cGUsIGl0IGlzIHRoZSB0eXBlIHJldHVybmVkIGZyb20gdGhlIGNvbnRleHQgZnVuY3Rpb24gaWYgaXQgaXMgcGFzc2VkLCBvciBpbmZlcnJlZCBmcm9tIHRoZSBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIGRhdGUgLSBUaGUgZGF0ZSB0byBiZSBjaGFuZ2VkXG4gKiBAcGFyYW0gd2VlayAtIFRoZSB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGxvY2FsIHdlZWsgc2V0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgMXN0IHdlZWsgdG8gMiBKYW51YXJ5IDIwMDUgd2l0aCBkZWZhdWx0IG9wdGlvbnM6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCAxKVxuICogLy89PiBTdW4gRGVjIDI2IDIwMDQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHRoZSAxc3Qgd2VlayB0byAyIEphbnVhcnkgMjAwNSxcbiAqIC8vIGlmIE1vbmRheSBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLFxuICogLy8gYW5kIHRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyIGFsd2F5cyBjb250YWlucyA0IEphbnVhcnk6XG4gKiBjb25zdCByZXN1bHQgPSBzZXRXZWVrKG5ldyBEYXRlKDIwMDUsIDAsIDIpLCAxLCB7XG4gKiAgIHdlZWtTdGFydHNPbjogMSxcbiAqICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlOiA0XG4gKiB9KVxuICogLy89PiBTdW4gSmFuIDQgMjAwNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0V2VlayhkYXRlLCB3ZWVrLCBvcHRpb25zKSB7XG4gIGNvbnN0IGRhdGVfID0gdG9EYXRlKGRhdGUsIG9wdGlvbnM/LmluKTtcbiAgY29uc3QgZGlmZiA9IGdldFdlZWsoZGF0ZV8sIG9wdGlvbnMpIC0gd2VlaztcbiAgZGF0ZV8uc2V0RGF0ZShkYXRlXy5nZXREYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiB0b0RhdGUoZGF0ZV8sIG9wdGlvbnM/LmluKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzZXRXZWVrO1xuIiwgImltcG9ydCB7IHNldFdlZWsgfSBmcm9tIFwiLi4vLi4vLi4vc2V0V2Vlay5qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZldlZWsgfSBmcm9tIFwiLi4vLi4vLi4vc3RhcnRPZldlZWsuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbi8vIExvY2FsIHdlZWsgb2YgeWVhclxuZXhwb3J0IGNsYXNzIExvY2FsV2Vla1BhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHByaW9yaXR5ID0gMTAwO1xuXG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJ3XCI6XG4gICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy53ZWVrLCBkYXRlU3RyaW5nKTtcbiAgICAgIGNhc2UgXCJ3b1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwid2Vla1wiIH0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDUzO1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gc3RhcnRPZldlZWsoc2V0V2VlayhkYXRlLCB2YWx1ZSwgb3B0aW9ucyksIG9wdGlvbnMpO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1xuICAgIFwieVwiLFxuICAgIFwiUlwiLFxuICAgIFwidVwiLFxuICAgIFwicVwiLFxuICAgIFwiUVwiLFxuICAgIFwiTVwiLFxuICAgIFwiTFwiLFxuICAgIFwiSVwiLFxuICAgIFwiZFwiLFxuICAgIFwiRFwiLFxuICAgIFwiaVwiLFxuICAgIFwidFwiLFxuICAgIFwiVFwiLFxuICBdO1xufVxuIiwgImltcG9ydCB7IGdldElTT1dlZWsgfSBmcm9tIFwiLi9nZXRJU09XZWVrLmpzXCI7XG5pbXBvcnQgeyB0b0RhdGUgfSBmcm9tIFwiLi90b0RhdGUuanNcIjtcblxuLyoqXG4gKiBUaGUge0BsaW5rIHNldElTT1dlZWt9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzZXRJU09XZWVrXG4gKiBAY2F0ZWdvcnkgSVNPIFdlZWsgSGVscGVyc1xuICogQHN1bW1hcnkgU2V0IHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgSVNPIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUsIHNhdmluZyB0aGUgd2Vla2RheSBudW1iZXIuXG4gKlxuICogSVNPIHdlZWstbnVtYmVyaW5nIHllYXI6IGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvSVNPX3dlZWtfZGF0ZVxuICpcbiAqIEB0eXBlUGFyYW0gRGF0ZVR5cGUgLSBUaGUgYERhdGVgIHR5cGUsIHRoZSBmdW5jdGlvbiBvcGVyYXRlcyBvbi4gR2V0cyBpbmZlcnJlZCBmcm9tIHBhc3NlZCBhcmd1bWVudHMuIEFsbG93cyB0byB1c2UgZXh0ZW5zaW9ucyBsaWtlIFtgVVRDRGF0ZWBdKGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy91dGMpLlxuICogQHR5cGVQYXJhbSBSZXN1bHREYXRlIC0gVGhlIGBEYXRlYCB0eXBlIG9mIHRoZSBjb250ZXh0IGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIHdlZWsgLSBUaGUgSVNPIHdlZWsgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnNcbiAqXG4gKiBAcmV0dXJucyBUaGUgbmV3IGRhdGUgd2l0aCB0aGUgSVNPIHdlZWsgc2V0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCB0aGUgNTNyZCBJU08gd2VlayB0byA3IEF1Z3VzdCAyMDA0OlxuICogY29uc3QgcmVzdWx0ID0gc2V0SVNPV2VlayhuZXcgRGF0ZSgyMDA0LCA3LCA3KSwgNTMpXG4gKiAvLz0+IFNhdCBKYW4gMDEgMjAwNSAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0SVNPV2VlayhkYXRlLCB3ZWVrLCBvcHRpb25zKSB7XG4gIGNvbnN0IF9kYXRlID0gdG9EYXRlKGRhdGUsIG9wdGlvbnM/LmluKTtcbiAgY29uc3QgZGlmZiA9IGdldElTT1dlZWsoX2RhdGUsIG9wdGlvbnMpIC0gd2VlaztcbiAgX2RhdGUuc2V0RGF0ZShfZGF0ZS5nZXREYXRlKCkgLSBkaWZmICogNyk7XG4gIHJldHVybiBfZGF0ZTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBzZXRJU09XZWVrO1xuIiwgImltcG9ydCB7IHNldElTT1dlZWsgfSBmcm9tIFwiLi4vLi4vLi4vc2V0SVNPV2Vlay5qc1wiO1xuaW1wb3J0IHsgc3RhcnRPZklTT1dlZWsgfSBmcm9tIFwiLi4vLi4vLi4vc3RhcnRPZklTT1dlZWsuanNcIjtcbmltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbi8vIElTTyB3ZWVrIG9mIHllYXJcbmV4cG9ydCBjbGFzcyBJU09XZWVrUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSAxMDA7XG5cbiAgcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBcIklcIjpcbiAgICAgICAgcmV0dXJuIHBhcnNlTnVtZXJpY1BhdHRlcm4obnVtZXJpY1BhdHRlcm5zLndlZWssIGRhdGVTdHJpbmcpO1xuICAgICAgY2FzZSBcIklvXCI6XG4gICAgICAgIHJldHVybiBtYXRjaC5vcmRpbmFsTnVtYmVyKGRhdGVTdHJpbmcsIHsgdW5pdDogXCJ3ZWVrXCIgfSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDEgJiYgdmFsdWUgPD0gNTM7XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgIHJldHVybiBzdGFydE9mSVNPV2VlayhzZXRJU09XZWVrKGRhdGUsIHZhbHVlKSk7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXG4gICAgXCJ5XCIsXG4gICAgXCJZXCIsXG4gICAgXCJ1XCIsXG4gICAgXCJxXCIsXG4gICAgXCJRXCIsXG4gICAgXCJNXCIsXG4gICAgXCJMXCIsXG4gICAgXCJ3XCIsXG4gICAgXCJkXCIsXG4gICAgXCJEXCIsXG4gICAgXCJlXCIsXG4gICAgXCJjXCIsXG4gICAgXCJ0XCIsXG4gICAgXCJUXCIsXG4gIF07XG59XG4iLCAiaW1wb3J0IHsgbnVtZXJpY1BhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQge1xuICBpc0xlYXBZZWFySW5kZXgsXG4gIHBhcnNlTkRpZ2l0cyxcbiAgcGFyc2VOdW1lcmljUGF0dGVybixcbn0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmNvbnN0IERBWVNfSU5fTU9OVEggPSBbMzEsIDI4LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMV07XG5jb25zdCBEQVlTX0lOX01PTlRIX0xFQVBfWUVBUiA9IFtcbiAgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMxLCAzMCwgMzEsIDMwLCAzMSxcbl07XG5cbi8vIERheSBvZiB0aGUgbW9udGhcbmV4cG9ydCBjbGFzcyBEYXRlUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSA5MDtcbiAgc3ViUHJpb3JpdHkgPSAxO1xuXG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJkXCI6XG4gICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5kYXRlLCBkYXRlU3RyaW5nKTtcbiAgICAgIGNhc2UgXCJkb1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwiZGF0ZVwiIH0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKGRhdGUsIHZhbHVlKSB7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpO1xuICAgIGNvbnN0IG1vbnRoID0gZGF0ZS5nZXRNb250aCgpO1xuICAgIGlmIChpc0xlYXBZZWFyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSBEQVlTX0lOX01PTlRIX0xFQVBfWUVBUlttb250aF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IERBWVNfSU5fTU9OVEhbbW9udGhdO1xuICAgIH1cbiAgfVxuXG4gIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgZGF0ZS5zZXREYXRlKHZhbHVlKTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1xuICAgIFwiWVwiLFxuICAgIFwiUlwiLFxuICAgIFwicVwiLFxuICAgIFwiUVwiLFxuICAgIFwid1wiLFxuICAgIFwiSVwiLFxuICAgIFwiRFwiLFxuICAgIFwiaVwiLFxuICAgIFwiZVwiLFxuICAgIFwiY1wiLFxuICAgIFwidFwiLFxuICAgIFwiVFwiLFxuICBdO1xufVxuIiwgImltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHtcbiAgaXNMZWFwWWVhckluZGV4LFxuICBwYXJzZU5EaWdpdHMsXG4gIHBhcnNlTnVtZXJpY1BhdHRlcm4sXG59IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgRGF5T2ZZZWFyUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSA5MDtcblxuICBzdWJwcmlvcml0eSA9IDE7XG5cbiAgcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBcIkRcIjpcbiAgICAgIGNhc2UgXCJERFwiOlxuICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuZGF5T2ZZZWFyLCBkYXRlU3RyaW5nKTtcbiAgICAgIGNhc2UgXCJEb1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwiZGF0ZVwiIH0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKGRhdGUsIHZhbHVlKSB7XG4gICAgY29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcbiAgICBjb25zdCBpc0xlYXBZZWFyID0gaXNMZWFwWWVhckluZGV4KHllYXIpO1xuICAgIGlmIChpc0xlYXBZZWFyKSB7XG4gICAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAzNjY7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDM2NTtcbiAgICB9XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgIGRhdGUuc2V0TW9udGgoMCwgdmFsdWUpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXG4gICAgXCJZXCIsXG4gICAgXCJSXCIsXG4gICAgXCJxXCIsXG4gICAgXCJRXCIsXG4gICAgXCJNXCIsXG4gICAgXCJMXCIsXG4gICAgXCJ3XCIsXG4gICAgXCJJXCIsXG4gICAgXCJkXCIsXG4gICAgXCJFXCIsXG4gICAgXCJpXCIsXG4gICAgXCJlXCIsXG4gICAgXCJjXCIsXG4gICAgXCJ0XCIsXG4gICAgXCJUXCIsXG4gIF07XG59XG4iLCAiaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9fbGliL2RlZmF1bHRPcHRpb25zLmpzXCI7XG5pbXBvcnQgeyBhZGREYXlzIH0gZnJvbSBcIi4vYWRkRGF5cy5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzZXREYXl9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzZXREYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIHRvIHRoZSBnaXZlbiBkYXRlLlxuICpcbiAqIEBkZXNjcmlwdGlvblxuICogU2V0IHRoZSBkYXkgb2YgdGhlIHdlZWsgdG8gdGhlIGdpdmVuIGRhdGUuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGRheSAtIFRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIG5ldyBkYXRlXG4gKiBAcGFyYW0gb3B0aW9ucyAtIEFuIG9iamVjdCB3aXRoIG9wdGlvbnMuXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheSBvZiB0aGUgd2VlayBzZXRcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHdlZWsgZGF5IHRvIFN1bmRheSwgd2l0aCB0aGUgZGVmYXVsdCB3ZWVrU3RhcnRzT24gb2YgU3VuZGF5OlxuICogY29uc3QgcmVzdWx0ID0gc2V0RGF5KG5ldyBEYXRlKDIwMTQsIDgsIDEpLCAwKVxuICogLy89PiBTdW4gQXVnIDMxIDIwMTQgMDA6MDA6MDBcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU2V0IHdlZWsgZGF5IHRvIFN1bmRheSwgd2l0aCBhIHdlZWtTdGFydHNPbiBvZiBNb25kYXk6XG4gKiBjb25zdCByZXN1bHQgPSBzZXREYXkobmV3IERhdGUoMjAxNCwgOCwgMSksIDAsIHsgd2Vla1N0YXJ0c09uOiAxIH0pXG4gKiAvLz0+IFN1biBTZXAgMDcgMjAxNCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gc2V0RGF5KGRhdGUsIGRheSwgb3B0aW9ucykge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IHdlZWtTdGFydHNPbiA9XG4gICAgb3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIDA7XG5cbiAgY29uc3QgZGF0ZV8gPSB0b0RhdGUoZGF0ZSwgb3B0aW9ucz8uaW4pO1xuICBjb25zdCBjdXJyZW50RGF5ID0gZGF0ZV8uZ2V0RGF5KCk7XG5cbiAgY29uc3QgcmVtYWluZGVyID0gZGF5ICUgNztcbiAgY29uc3QgZGF5SW5kZXggPSAocmVtYWluZGVyICsgNykgJSA3O1xuXG4gIGNvbnN0IGRlbHRhID0gNyAtIHdlZWtTdGFydHNPbjtcbiAgY29uc3QgZGlmZiA9XG4gICAgZGF5IDwgMCB8fCBkYXkgPiA2XG4gICAgICA/IGRheSAtICgoY3VycmVudERheSArIGRlbHRhKSAlIDcpXG4gICAgICA6ICgoZGF5SW5kZXggKyBkZWx0YSkgJSA3KSAtICgoY3VycmVudERheSArIGRlbHRhKSAlIDcpO1xuICByZXR1cm4gYWRkRGF5cyhkYXRlXywgZGlmZiwgb3B0aW9ucyk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc2V0RGF5O1xuIiwgImltcG9ydCB7IHNldERheSB9IGZyb20gXCIuLi8uLi8uLi9zZXREYXkuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuLy8gRGF5IG9mIHdlZWtcbmV4cG9ydCBjbGFzcyBEYXlQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDkwO1xuXG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIC8vIFR1ZVxuICAgICAgY2FzZSBcIkVcIjpcbiAgICAgIGNhc2UgXCJFRVwiOlxuICAgICAgY2FzZSBcIkVFRVwiOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywgeyB3aWR0aDogXCJzaG9ydFwiLCBjb250ZXh0OiBcImZvcm1hdHRpbmdcIiB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIm5hcnJvd1wiLCBjb250ZXh0OiBcImZvcm1hdHRpbmdcIiB9KVxuICAgICAgICApO1xuXG4gICAgICAvLyBUXG4gICAgICBjYXNlIFwiRUVFRUVcIjpcbiAgICAgICAgcmV0dXJuIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgLy8gVHVcbiAgICAgIGNhc2UgXCJFRUVFRUVcIjpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywgeyB3aWR0aDogXCJzaG9ydFwiLCBjb250ZXh0OiBcImZvcm1hdHRpbmdcIiB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIm5hcnJvd1wiLCBjb250ZXh0OiBcImZvcm1hdHRpbmdcIiB9KVxuICAgICAgICApO1xuXG4gICAgICAvLyBUdWVzZGF5XG4gICAgICBjYXNlIFwiRUVFRVwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywgeyB3aWR0aDogXCJ3aWRlXCIsIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcInNob3J0XCIsIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwibmFycm93XCIsIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNjtcbiAgfVxuXG4gIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlLCBvcHRpb25zKSB7XG4gICAgZGF0ZSA9IHNldERheShkYXRlLCB2YWx1ZSwgb3B0aW9ucyk7XG4gICAgZGF0ZS5zZXRIb3VycygwLCAwLCAwLCAwKTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIGluY29tcGF0aWJsZVRva2VucyA9IFtcIkRcIiwgXCJpXCIsIFwiZVwiLCBcImNcIiwgXCJ0XCIsIFwiVFwiXTtcbn1cbiIsICJpbXBvcnQgeyBzZXREYXkgfSBmcm9tIFwiLi4vLi4vLi4vc2V0RGF5LmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5cbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuLy8gTG9jYWwgZGF5IG9mIHdlZWtcbmV4cG9ydCBjbGFzcyBMb2NhbERheVBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHByaW9yaXR5ID0gOTA7XG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCwgb3B0aW9ucykge1xuICAgIGNvbnN0IHZhbHVlQ2FsbGJhY2sgPSAodmFsdWUpID0+IHtcbiAgICAgIC8vIFdlIHdhbnQgaGVyZSBmbG9vciBpbnN0ZWFkIG9mIHRydW5jLCBzbyB3ZSBnZXQgLTcgZm9yIHZhbHVlIDAgaW5zdGVhZCBvZiAwXG4gICAgICBjb25zdCB3aG9sZVdlZWtEYXlzID0gTWF0aC5mbG9vcigodmFsdWUgLSAxKSAvIDcpICogNztcbiAgICAgIHJldHVybiAoKHZhbHVlICsgb3B0aW9ucy53ZWVrU3RhcnRzT24gKyA2KSAlIDcpICsgd2hvbGVXZWVrRGF5cztcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gM1xuICAgICAgY2FzZSBcImVcIjpcbiAgICAgIGNhc2UgXCJlZVwiOiAvLyAwM1xuICAgICAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICAgICAgLy8gM3JkXG4gICAgICBjYXNlIFwiZW9cIjpcbiAgICAgICAgcmV0dXJuIG1hcFZhbHVlKFxuICAgICAgICAgIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgdW5pdDogXCJkYXlcIixcbiAgICAgICAgICB9KSxcbiAgICAgICAgICB2YWx1ZUNhbGxiYWNrLFxuICAgICAgICApO1xuICAgICAgLy8gVHVlXG4gICAgICBjYXNlIFwiZWVlXCI6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcInNob3J0XCIsIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwibmFycm93XCIsIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiIH0pXG4gICAgICAgICk7XG5cbiAgICAgIC8vIFRcbiAgICAgIGNhc2UgXCJlZWVlZVwiOlxuICAgICAgICByZXR1cm4gbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSBcImVlZWVlZVwiOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcInNob3J0XCIsIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwibmFycm93XCIsIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiIH0pXG4gICAgICAgICk7XG5cbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgXCJlZWVlXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIndpZGVcIiwgY29udGV4dDogXCJmb3JtYXR0aW5nXCIgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwic2hvcnRcIiwgY29udGV4dDogXCJmb3JtYXR0aW5nXCIgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywgeyB3aWR0aDogXCJuYXJyb3dcIiwgY29udGV4dDogXCJmb3JtYXR0aW5nXCIgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSA2O1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUsIG9wdGlvbnMpIHtcbiAgICBkYXRlID0gc2V0RGF5KGRhdGUsIHZhbHVlLCBvcHRpb25zKTtcbiAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1xuICAgIFwieVwiLFxuICAgIFwiUlwiLFxuICAgIFwidVwiLFxuICAgIFwicVwiLFxuICAgIFwiUVwiLFxuICAgIFwiTVwiLFxuICAgIFwiTFwiLFxuICAgIFwiSVwiLFxuICAgIFwiZFwiLFxuICAgIFwiRFwiLFxuICAgIFwiRVwiLFxuICAgIFwiaVwiLFxuICAgIFwiY1wiLFxuICAgIFwidFwiLFxuICAgIFwiVFwiLFxuICBdO1xufVxuIiwgImltcG9ydCB7IHNldERheSB9IGZyb20gXCIuLi8uLi8uLi9zZXREYXkuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG4vLyBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2Vla1xuZXhwb3J0IGNsYXNzIFN0YW5kQWxvbmVMb2NhbERheVBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHByaW9yaXR5ID0gOTA7XG5cbiAgcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoLCBvcHRpb25zKSB7XG4gICAgY29uc3QgdmFsdWVDYWxsYmFjayA9ICh2YWx1ZSkgPT4ge1xuICAgICAgLy8gV2Ugd2FudCBoZXJlIGZsb29yIGluc3RlYWQgb2YgdHJ1bmMsIHNvIHdlIGdldCAtNyBmb3IgdmFsdWUgMCBpbnN0ZWFkIG9mIDBcbiAgICAgIGNvbnN0IHdob2xlV2Vla0RheXMgPSBNYXRoLmZsb29yKCh2YWx1ZSAtIDEpIC8gNykgKiA3O1xuICAgICAgcmV0dXJuICgodmFsdWUgKyBvcHRpb25zLndlZWtTdGFydHNPbiArIDYpICUgNykgKyB3aG9sZVdlZWtEYXlzO1xuICAgIH07XG5cbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICAvLyAzXG4gICAgICBjYXNlIFwiY1wiOlxuICAgICAgY2FzZSBcImNjXCI6IC8vIDAzXG4gICAgICAgIHJldHVybiBtYXBWYWx1ZShwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKSwgdmFsdWVDYWxsYmFjayk7XG4gICAgICAvLyAzcmRcbiAgICAgIGNhc2UgXCJjb1wiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUoXG4gICAgICAgICAgbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB1bml0OiBcImRheVwiLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHZhbHVlQ2FsbGJhY2ssXG4gICAgICAgICk7XG4gICAgICAvLyBUdWVcbiAgICAgIGNhc2UgXCJjY2NcIjpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwic3RhbmRhbG9uZVwiLFxuICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwic2hvcnRcIiwgY29udGV4dDogXCJzdGFuZGFsb25lXCIgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywgeyB3aWR0aDogXCJuYXJyb3dcIiwgY29udGV4dDogXCJzdGFuZGFsb25lXCIgfSlcbiAgICAgICAgKTtcblxuICAgICAgLy8gVFxuICAgICAgY2FzZSBcImNjY2NjXCI6XG4gICAgICAgIHJldHVybiBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgIHdpZHRoOiBcIm5hcnJvd1wiLFxuICAgICAgICAgIGNvbnRleHQ6IFwic3RhbmRhbG9uZVwiLFxuICAgICAgICB9KTtcbiAgICAgIC8vIFR1XG4gICAgICBjYXNlIFwiY2NjY2NjXCI6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwic2hvcnRcIiwgY29udGV4dDogXCJzdGFuZGFsb25lXCIgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywgeyB3aWR0aDogXCJuYXJyb3dcIiwgY29udGV4dDogXCJzdGFuZGFsb25lXCIgfSlcbiAgICAgICAgKTtcblxuICAgICAgLy8gVHVlc2RheVxuICAgICAgY2FzZSBcImNjY2NcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHsgd2lkdGg6IFwid2lkZVwiLCBjb250ZXh0OiBcInN0YW5kYWxvbmVcIiB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJzdGFuZGFsb25lXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywgeyB3aWR0aDogXCJzaG9ydFwiLCBjb250ZXh0OiBcInN0YW5kYWxvbmVcIiB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7IHdpZHRoOiBcIm5hcnJvd1wiLCBjb250ZXh0OiBcInN0YW5kYWxvbmVcIiB9KVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDY7XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSwgb3B0aW9ucykge1xuICAgIGRhdGUgPSBzZXREYXkoZGF0ZSwgdmFsdWUsIG9wdGlvbnMpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXG4gICAgXCJ5XCIsXG4gICAgXCJSXCIsXG4gICAgXCJ1XCIsXG4gICAgXCJxXCIsXG4gICAgXCJRXCIsXG4gICAgXCJNXCIsXG4gICAgXCJMXCIsXG4gICAgXCJJXCIsXG4gICAgXCJkXCIsXG4gICAgXCJEXCIsXG4gICAgXCJFXCIsXG4gICAgXCJpXCIsXG4gICAgXCJlXCIsXG4gICAgXCJ0XCIsXG4gICAgXCJUXCIsXG4gIF07XG59XG4iLCAiaW1wb3J0IHsgYWRkRGF5cyB9IGZyb20gXCIuL2FkZERheXMuanNcIjtcbmltcG9ydCB7IGdldElTT0RheSB9IGZyb20gXCIuL2dldElTT0RheS5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbi8qKlxuICogVGhlIHtAbGluayBzZXRJU09EYXl9IGZ1bmN0aW9uIG9wdGlvbnMuXG4gKi9cblxuLyoqXG4gKiBAbmFtZSBzZXRJU09EYXlcbiAqIEBjYXRlZ29yeSBXZWVrZGF5IEhlbHBlcnNcbiAqIEBzdW1tYXJ5IFNldCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFNldCB0aGUgZGF5IG9mIHRoZSBJU08gd2VlayB0byB0aGUgZ2l2ZW4gZGF0ZS5cbiAqIElTTyB3ZWVrIHN0YXJ0cyB3aXRoIE1vbmRheS5cbiAqIDcgaXMgdGhlIGluZGV4IG9mIFN1bmRheSwgMSBpcyB0aGUgaW5kZXggb2YgTW9uZGF5LCBldGMuXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlIC0gVGhlIGRhdGUgdG8gYmUgY2hhbmdlZFxuICogQHBhcmFtIGRheSAtIFRoZSBkYXkgb2YgdGhlIElTTyB3ZWVrIG9mIHRoZSBuZXcgZGF0ZVxuICogQHBhcmFtIG9wdGlvbnMgLSBBbiBvYmplY3Qgd2l0aCBvcHRpb25zXG4gKlxuICogQHJldHVybnMgVGhlIG5ldyBkYXRlIHdpdGggdGhlIGRheSBvZiB0aGUgSVNPIHdlZWsgc2V0XG4gKlxuICogQGV4YW1wbGVcbiAqIC8vIFNldCBTdW5kYXkgdG8gMSBTZXB0ZW1iZXIgMjAxNDpcbiAqIGNvbnN0IHJlc3VsdCA9IHNldElTT0RheShuZXcgRGF0ZSgyMDE0LCA4LCAxKSwgNylcbiAqIC8vPT4gU3VuIFNlcCAwNyAyMDE0IDAwOjAwOjAwXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZXRJU09EYXkoZGF0ZSwgZGF5LCBvcHRpb25zKSB7XG4gIGNvbnN0IGRhdGVfID0gdG9EYXRlKGRhdGUsIG9wdGlvbnM/LmluKTtcbiAgY29uc3QgY3VycmVudERheSA9IGdldElTT0RheShkYXRlXywgb3B0aW9ucyk7XG4gIGNvbnN0IGRpZmYgPSBkYXkgLSBjdXJyZW50RGF5O1xuICByZXR1cm4gYWRkRGF5cyhkYXRlXywgZGlmZiwgb3B0aW9ucyk7XG59XG5cbi8vIEZhbGxiYWNrIGZvciBtb2R1bGFyaXplZCBpbXBvcnRzOlxuZXhwb3J0IGRlZmF1bHQgc2V0SVNPRGF5O1xuIiwgImltcG9ydCB7IHNldElTT0RheSB9IGZyb20gXCIuLi8uLi8uLi9zZXRJU09EYXkuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgbWFwVmFsdWUsIHBhcnNlTkRpZ2l0cyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG4vLyBJU08gZGF5IG9mIHdlZWtcbmV4cG9ydCBjbGFzcyBJU09EYXlQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDkwO1xuXG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgIGNvbnN0IHZhbHVlQ2FsbGJhY2sgPSAodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZSA9PT0gMCkge1xuICAgICAgICByZXR1cm4gNztcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICB9O1xuXG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgLy8gMlxuICAgICAgY2FzZSBcImlcIjpcbiAgICAgIGNhc2UgXCJpaVwiOiAvLyAwMlxuICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgICAvLyAybmRcbiAgICAgIGNhc2UgXCJpb1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwiZGF5XCIgfSk7XG4gICAgICAvLyBUdWVcbiAgICAgIGNhc2UgXCJpaWlcIjpcbiAgICAgICAgcmV0dXJuIG1hcFZhbHVlKFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICAgIHdpZHRoOiBcInNob3J0XCIsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgICAgfSkgfHxcbiAgICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICAgIHdpZHRoOiBcIm5hcnJvd1wiLFxuICAgICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIHZhbHVlQ2FsbGJhY2ssXG4gICAgICAgICk7XG4gICAgICAvLyBUXG4gICAgICBjYXNlIFwiaWlpaWlcIjpcbiAgICAgICAgcmV0dXJuIG1hcFZhbHVlKFxuICAgICAgICAgIG1hdGNoLmRheShkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHZhbHVlQ2FsbGJhY2ssXG4gICAgICAgICk7XG4gICAgICAvLyBUdVxuICAgICAgY2FzZSBcImlpaWlpaVwiOlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUoXG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcInNob3J0XCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgdmFsdWVDYWxsYmFjayxcbiAgICAgICAgKTtcbiAgICAgIC8vIFR1ZXNkYXlcbiAgICAgIGNhc2UgXCJpaWlpXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbWFwVmFsdWUoXG4gICAgICAgICAgbWF0Y2guZGF5KGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcIndpZGVcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgICB3aWR0aDogXCJzaG9ydFwiLFxuICAgICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgICBtYXRjaC5kYXkoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB2YWx1ZUNhbGxiYWNrLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDc7XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgIGRhdGUgPSBzZXRJU09EYXkoZGF0ZSwgdmFsdWUpO1xuICAgIGRhdGUuc2V0SG91cnMoMCwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXG4gICAgXCJ5XCIsXG4gICAgXCJZXCIsXG4gICAgXCJ1XCIsXG4gICAgXCJxXCIsXG4gICAgXCJRXCIsXG4gICAgXCJNXCIsXG4gICAgXCJMXCIsXG4gICAgXCJ3XCIsXG4gICAgXCJkXCIsXG4gICAgXCJEXCIsXG4gICAgXCJFXCIsXG4gICAgXCJlXCIsXG4gICAgXCJjXCIsXG4gICAgXCJ0XCIsXG4gICAgXCJUXCIsXG4gIF07XG59XG4iLCAiaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBkYXlQZXJpb2RFbnVtVG9Ib3VycyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgQU1QTVBhcnNlciBleHRlbmRzIFBhcnNlciB7XG4gIHByaW9yaXR5ID0gODA7XG5cbiAgcGFyc2UoZGF0ZVN0cmluZywgdG9rZW4sIG1hdGNoKSB7XG4gICAgc3dpdGNoICh0b2tlbikge1xuICAgICAgY2FzZSBcImFcIjpcbiAgICAgIGNhc2UgXCJhYVwiOlxuICAgICAgY2FzZSBcImFhYVwiOlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICBjYXNlIFwiYWFhYWFcIjpcbiAgICAgICAgcmV0dXJuIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSBcImFhYWFcIjpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcIndpZGVcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICBkYXRlLnNldEhvdXJzKGRheVBlcmlvZEVudW1Ub0hvdXJzKHZhbHVlKSwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJiXCIsIFwiQlwiLCBcIkhcIiwgXCJrXCIsIFwidFwiLCBcIlRcIl07XG59XG4iLCAiaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBkYXlQZXJpb2RFbnVtVG9Ib3VycyB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgQU1QTU1pZG5pZ2h0UGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSA4MDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwiYlwiOlxuICAgICAgY2FzZSBcImJiXCI6XG4gICAgICBjYXNlIFwiYmJiXCI6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcImFiYnJldmlhdGVkXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAgIGNhc2UgXCJiYmJiYlwiOlxuICAgICAgICByZXR1cm4gbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICB3aWR0aDogXCJuYXJyb3dcIixcbiAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgfSk7XG4gICAgICBjYXNlIFwiYmJiYlwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwid2lkZVwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcIm5hcnJvd1wiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgIGRhdGUuc2V0SG91cnMoZGF5UGVyaW9kRW51bVRvSG91cnModmFsdWUpLCAwLCAwLCAwKTtcbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIGluY29tcGF0aWJsZVRva2VucyA9IFtcImFcIiwgXCJCXCIsIFwiSFwiLCBcImtcIiwgXCJ0XCIsIFwiVFwiXTtcbn1cbiIsICJpbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5cbmltcG9ydCB7IGRheVBlcmlvZEVudW1Ub0hvdXJzIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbi8vIGluIHRoZSBtb3JuaW5nLCBpbiB0aGUgYWZ0ZXJub29uLCBpbiB0aGUgZXZlbmluZywgYXQgbmlnaHRcbmV4cG9ydCBjbGFzcyBEYXlQZXJpb2RQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDgwO1xuXG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJCXCI6XG4gICAgICBjYXNlIFwiQkJcIjpcbiAgICAgIGNhc2UgXCJCQkJcIjpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwiYWJicmV2aWF0ZWRcIixcbiAgICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICAgIH0pIHx8XG4gICAgICAgICAgbWF0Y2guZGF5UGVyaW9kKGRhdGVTdHJpbmcsIHtcbiAgICAgICAgICAgIHdpZHRoOiBcIm5hcnJvd1wiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgY2FzZSBcIkJCQkJCXCI6XG4gICAgICAgIHJldHVybiBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgIHdpZHRoOiBcIm5hcnJvd1wiLFxuICAgICAgICAgIGNvbnRleHQ6IFwiZm9ybWF0dGluZ1wiLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgXCJCQkJCXCI6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJ3aWRlXCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KSB8fFxuICAgICAgICAgIG1hdGNoLmRheVBlcmlvZChkYXRlU3RyaW5nLCB7XG4gICAgICAgICAgICB3aWR0aDogXCJhYmJyZXZpYXRlZFwiLFxuICAgICAgICAgICAgY29udGV4dDogXCJmb3JtYXR0aW5nXCIsXG4gICAgICAgICAgfSkgfHxcbiAgICAgICAgICBtYXRjaC5kYXlQZXJpb2QoZGF0ZVN0cmluZywge1xuICAgICAgICAgICAgd2lkdGg6IFwibmFycm93XCIsXG4gICAgICAgICAgICBjb250ZXh0OiBcImZvcm1hdHRpbmdcIixcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgZGF0ZS5zZXRIb3VycyhkYXlQZXJpb2RFbnVtVG9Ib3Vycyh2YWx1ZSksIDAsIDAsIDApO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1wiYVwiLCBcImJcIiwgXCJ0XCIsIFwiVFwiXTtcbn1cbiIsICJpbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5cbmltcG9ydCB7IHBhcnNlTkRpZ2l0cywgcGFyc2VOdW1lcmljUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgSG91cjF0bzEyUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSA3MDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwiaFwiOlxuICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjEyaCwgZGF0ZVN0cmluZyk7XG4gICAgICBjYXNlIFwiaG9cIjpcbiAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywgeyB1bml0OiBcImhvdXJcIiB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPj0gMSAmJiB2YWx1ZSA8PSAxMjtcbiAgfVxuXG4gIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgY29uc3QgaXNQTSA9IGRhdGUuZ2V0SG91cnMoKSA+PSAxMjtcbiAgICBpZiAoaXNQTSAmJiB2YWx1ZSA8IDEyKSB7XG4gICAgICBkYXRlLnNldEhvdXJzKHZhbHVlICsgMTIsIDAsIDAsIDApO1xuICAgIH0gZWxzZSBpZiAoIWlzUE0gJiYgdmFsdWUgPT09IDEyKSB7XG4gICAgICBkYXRlLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlLnNldEhvdXJzKHZhbHVlLCAwLCAwLCAwKTtcbiAgICB9XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJIXCIsIFwiS1wiLCBcImtcIiwgXCJ0XCIsIFwiVFwiXTtcbn1cbiIsICJpbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5cbmltcG9ydCB7IHBhcnNlTkRpZ2l0cywgcGFyc2VOdW1lcmljUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgSG91cjB0bzIzUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSA3MDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwiSFwiOlxuICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuaG91cjIzaCwgZGF0ZVN0cmluZyk7XG4gICAgICBjYXNlIFwiSG9cIjpcbiAgICAgICAgcmV0dXJuIG1hdGNoLm9yZGluYWxOdW1iZXIoZGF0ZVN0cmluZywgeyB1bml0OiBcImhvdXJcIiB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBwYXJzZU5EaWdpdHModG9rZW4ubGVuZ3RoLCBkYXRlU3RyaW5nKTtcbiAgICB9XG4gIH1cblxuICB2YWxpZGF0ZShfZGF0ZSwgdmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgPj0gMCAmJiB2YWx1ZSA8PSAyMztcbiAgfVxuXG4gIHNldChkYXRlLCBfZmxhZ3MsIHZhbHVlKSB7XG4gICAgZGF0ZS5zZXRIb3Vycyh2YWx1ZSwgMCwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJhXCIsIFwiYlwiLCBcImhcIiwgXCJLXCIsIFwia1wiLCBcInRcIiwgXCJUXCJdO1xufVxuIiwgImltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBIb3VyMFRvMTFQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDcwO1xuXG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJLXCI6XG4gICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5ob3VyMTFoLCBkYXRlU3RyaW5nKTtcbiAgICAgIGNhc2UgXCJLb1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwiaG91clwiIH0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA+PSAwICYmIHZhbHVlIDw9IDExO1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICBjb25zdCBpc1BNID0gZGF0ZS5nZXRIb3VycygpID49IDEyO1xuICAgIGlmIChpc1BNICYmIHZhbHVlIDwgMTIpIHtcbiAgICAgIGRhdGUuc2V0SG91cnModmFsdWUgKyAxMiwgMCwgMCwgMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRhdGUuc2V0SG91cnModmFsdWUsIDAsIDAsIDApO1xuICAgIH1cbiAgICByZXR1cm4gZGF0ZTtcbiAgfVxuXG4gIGluY29tcGF0aWJsZVRva2VucyA9IFtcImhcIiwgXCJIXCIsIFwia1wiLCBcInRcIiwgXCJUXCJdO1xufVxuIiwgImltcG9ydCB7IG51bWVyaWNQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgcGFyc2VORGlnaXRzLCBwYXJzZU51bWVyaWNQYXR0ZXJuIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBIb3VyMVRvMjRQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDcwO1xuXG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuLCBtYXRjaCkge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJrXCI6XG4gICAgICAgIHJldHVybiBwYXJzZU51bWVyaWNQYXR0ZXJuKG51bWVyaWNQYXR0ZXJucy5ob3VyMjRoLCBkYXRlU3RyaW5nKTtcbiAgICAgIGNhc2UgXCJrb1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwiaG91clwiIH0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHBhcnNlTkRpZ2l0cyh0b2tlbi5sZW5ndGgsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHZhbGlkYXRlKF9kYXRlLCB2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA+PSAxICYmIHZhbHVlIDw9IDI0O1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICBjb25zdCBob3VycyA9IHZhbHVlIDw9IDI0ID8gdmFsdWUgJSAyNCA6IHZhbHVlO1xuICAgIGRhdGUuc2V0SG91cnMoaG91cnMsIDAsIDAsIDApO1xuICAgIHJldHVybiBkYXRlO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gW1wiYVwiLCBcImJcIiwgXCJoXCIsIFwiSFwiLCBcIktcIiwgXCJ0XCIsIFwiVFwiXTtcbn1cbiIsICJpbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5cbmltcG9ydCB7IHBhcnNlTkRpZ2l0cywgcGFyc2VOdW1lcmljUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgTWludXRlUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSA2MDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwibVwiOlxuICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMubWludXRlLCBkYXRlU3RyaW5nKTtcbiAgICAgIGNhc2UgXCJtb1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwibWludXRlXCIgfSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNTk7XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgIGRhdGUuc2V0TWludXRlcyh2YWx1ZSwgMCwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJ0XCIsIFwiVFwiXTtcbn1cbiIsICJpbXBvcnQgeyBudW1lcmljUGF0dGVybnMgfSBmcm9tIFwiLi4vY29uc3RhbnRzLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5cbmltcG9ydCB7IHBhcnNlTkRpZ2l0cywgcGFyc2VOdW1lcmljUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgU2Vjb25kUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSA1MDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbiwgbWF0Y2gpIHtcbiAgICBzd2l0Y2ggKHRva2VuKSB7XG4gICAgICBjYXNlIFwic1wiOlxuICAgICAgICByZXR1cm4gcGFyc2VOdW1lcmljUGF0dGVybihudW1lcmljUGF0dGVybnMuc2Vjb25kLCBkYXRlU3RyaW5nKTtcbiAgICAgIGNhc2UgXCJzb1wiOlxuICAgICAgICByZXR1cm4gbWF0Y2gub3JkaW5hbE51bWJlcihkYXRlU3RyaW5nLCB7IHVuaXQ6IFwic2Vjb25kXCIgfSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGUoX2RhdGUsIHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlID49IDAgJiYgdmFsdWUgPD0gNTk7XG4gIH1cblxuICBzZXQoZGF0ZSwgX2ZsYWdzLCB2YWx1ZSkge1xuICAgIGRhdGUuc2V0U2Vjb25kcyh2YWx1ZSwgMCk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJ0XCIsIFwiVFwiXTtcbn1cbiIsICJpbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5cbmltcG9ydCB7IG1hcFZhbHVlLCBwYXJzZU5EaWdpdHMgfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuZXhwb3J0IGNsYXNzIEZyYWN0aW9uT2ZTZWNvbmRQYXJzZXIgZXh0ZW5kcyBQYXJzZXIge1xuICBwcmlvcml0eSA9IDMwO1xuXG4gIHBhcnNlKGRhdGVTdHJpbmcsIHRva2VuKSB7XG4gICAgY29uc3QgdmFsdWVDYWxsYmFjayA9ICh2YWx1ZSkgPT5cbiAgICAgIE1hdGgudHJ1bmModmFsdWUgKiBNYXRoLnBvdygxMCwgLXRva2VuLmxlbmd0aCArIDMpKTtcbiAgICByZXR1cm4gbWFwVmFsdWUocGFyc2VORGlnaXRzKHRva2VuLmxlbmd0aCwgZGF0ZVN0cmluZyksIHZhbHVlQ2FsbGJhY2spO1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICBkYXRlLnNldE1pbGxpc2Vjb25kcyh2YWx1ZSk7XG4gICAgcmV0dXJuIGRhdGU7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJ0XCIsIFwiVFwiXTtcbn1cbiIsICJpbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4uLy4uLy4uL2NvbnN0cnVjdEZyb20uanNcIjtcbmltcG9ydCB7IGdldFRpbWV6b25lT2Zmc2V0SW5NaWxsaXNlY29uZHMgfSBmcm9tIFwiLi4vLi4vLi4vX2xpYi9nZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzLmpzXCI7XG5pbXBvcnQgeyB0aW1lem9uZVBhdHRlcm5zIH0gZnJvbSBcIi4uL2NvbnN0YW50cy5qc1wiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBwYXJzZVRpbWV6b25lUGF0dGVybiB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG4vLyBUaW1lem9uZSAoSVNPLTg2MDEuICswMDowMCBpcyBgJ1onYClcbmV4cG9ydCBjbGFzcyBJU09UaW1lem9uZVdpdGhaUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSAxMDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJYXCI6XG4gICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybihcbiAgICAgICAgICB0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxNaW51dGVzLFxuICAgICAgICAgIGRhdGVTdHJpbmcsXG4gICAgICAgICk7XG4gICAgICBjYXNlIFwiWFhcIjpcbiAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWMsIGRhdGVTdHJpbmcpO1xuICAgICAgY2FzZSBcIlhYWFhcIjpcbiAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKFxuICAgICAgICAgIHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbFNlY29uZHMsXG4gICAgICAgICAgZGF0ZVN0cmluZyxcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgXCJYWFhYWFwiOlxuICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4oXG4gICAgICAgICAgdGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZE9wdGlvbmFsU2Vjb25kcyxcbiAgICAgICAgICBkYXRlU3RyaW5nLFxuICAgICAgICApO1xuICAgICAgY2FzZSBcIlhYWFwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWQsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICBpZiAoZmxhZ3MudGltZXN0YW1wSXNTZXQpIHJldHVybiBkYXRlO1xuICAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICAgICAgZGF0ZSxcbiAgICAgIGRhdGUuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSAtIHZhbHVlLFxuICAgICk7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJ0XCIsIFwiVFwiLCBcInhcIl07XG59XG4iLCAiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuLi8uLi8uLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5pbXBvcnQgeyBnZXRUaW1lem9uZU9mZnNldEluTWlsbGlzZWNvbmRzIH0gZnJvbSBcIi4uLy4uLy4uL19saWIvZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcy5qc1wiO1xuaW1wb3J0IHsgdGltZXpvbmVQYXR0ZXJucyB9IGZyb20gXCIuLi9jb25zdGFudHMuanNcIjtcbmltcG9ydCB7IFBhcnNlciB9IGZyb20gXCIuLi9QYXJzZXIuanNcIjtcblxuaW1wb3J0IHsgcGFyc2VUaW1lem9uZVBhdHRlcm4gfSBmcm9tIFwiLi4vdXRpbHMuanNcIjtcblxuLy8gVGltZXpvbmUgKElTTy04NjAxKVxuZXhwb3J0IGNsYXNzIElTT1RpbWV6b25lUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSAxMDtcblxuICBwYXJzZShkYXRlU3RyaW5nLCB0b2tlbikge1xuICAgIHN3aXRjaCAodG9rZW4pIHtcbiAgICAgIGNhc2UgXCJ4XCI6XG4gICAgICAgIHJldHVybiBwYXJzZVRpbWV6b25lUGF0dGVybihcbiAgICAgICAgICB0aW1lem9uZVBhdHRlcm5zLmJhc2ljT3B0aW9uYWxNaW51dGVzLFxuICAgICAgICAgIGRhdGVTdHJpbmcsXG4gICAgICAgICk7XG4gICAgICBjYXNlIFwieHhcIjpcbiAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuYmFzaWMsIGRhdGVTdHJpbmcpO1xuICAgICAgY2FzZSBcInh4eHhcIjpcbiAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKFxuICAgICAgICAgIHRpbWV6b25lUGF0dGVybnMuYmFzaWNPcHRpb25hbFNlY29uZHMsXG4gICAgICAgICAgZGF0ZVN0cmluZyxcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgXCJ4eHh4eFwiOlxuICAgICAgICByZXR1cm4gcGFyc2VUaW1lem9uZVBhdHRlcm4oXG4gICAgICAgICAgdGltZXpvbmVQYXR0ZXJucy5leHRlbmRlZE9wdGlvbmFsU2Vjb25kcyxcbiAgICAgICAgICBkYXRlU3RyaW5nLFxuICAgICAgICApO1xuICAgICAgY2FzZSBcInh4eFwiOlxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHBhcnNlVGltZXpvbmVQYXR0ZXJuKHRpbWV6b25lUGF0dGVybnMuZXh0ZW5kZWQsIGRhdGVTdHJpbmcpO1xuICAgIH1cbiAgfVxuXG4gIHNldChkYXRlLCBmbGFncywgdmFsdWUpIHtcbiAgICBpZiAoZmxhZ3MudGltZXN0YW1wSXNTZXQpIHJldHVybiBkYXRlO1xuICAgIHJldHVybiBjb25zdHJ1Y3RGcm9tKFxuICAgICAgZGF0ZSxcbiAgICAgIGRhdGUuZ2V0VGltZSgpIC0gZ2V0VGltZXpvbmVPZmZzZXRJbk1pbGxpc2Vjb25kcyhkYXRlKSAtIHZhbHVlLFxuICAgICk7XG4gIH1cblxuICBpbmNvbXBhdGlibGVUb2tlbnMgPSBbXCJ0XCIsIFwiVFwiLCBcIlhcIl07XG59XG4iLCAiaW1wb3J0IHsgY29uc3RydWN0RnJvbSB9IGZyb20gXCIuLi8uLi8uLi9jb25zdHJ1Y3RGcm9tLmpzXCI7XG5pbXBvcnQgeyBQYXJzZXIgfSBmcm9tIFwiLi4vUGFyc2VyLmpzXCI7XG5cbmltcG9ydCB7IHBhcnNlQW55RGlnaXRzU2lnbmVkIH0gZnJvbSBcIi4uL3V0aWxzLmpzXCI7XG5cbmV4cG9ydCBjbGFzcyBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSA0MDtcblxuICBwYXJzZShkYXRlU3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhcnNlQW55RGlnaXRzU2lnbmVkKGRhdGVTdHJpbmcpO1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICByZXR1cm4gW2NvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUgKiAxMDAwKSwgeyB0aW1lc3RhbXBJc1NldDogdHJ1ZSB9XTtcbiAgfVxuXG4gIGluY29tcGF0aWJsZVRva2VucyA9IFwiKlwiO1xufVxuIiwgImltcG9ydCB7IGNvbnN0cnVjdEZyb20gfSBmcm9tIFwiLi4vLi4vLi4vY29uc3RydWN0RnJvbS5qc1wiO1xuaW1wb3J0IHsgUGFyc2VyIH0gZnJvbSBcIi4uL1BhcnNlci5qc1wiO1xuXG5pbXBvcnQgeyBwYXJzZUFueURpZ2l0c1NpZ25lZCB9IGZyb20gXCIuLi91dGlscy5qc1wiO1xuXG5leHBvcnQgY2xhc3MgVGltZXN0YW1wTWlsbGlzZWNvbmRzUGFyc2VyIGV4dGVuZHMgUGFyc2VyIHtcbiAgcHJpb3JpdHkgPSAyMDtcblxuICBwYXJzZShkYXRlU3RyaW5nKSB7XG4gICAgcmV0dXJuIHBhcnNlQW55RGlnaXRzU2lnbmVkKGRhdGVTdHJpbmcpO1xuICB9XG5cbiAgc2V0KGRhdGUsIF9mbGFncywgdmFsdWUpIHtcbiAgICByZXR1cm4gW2NvbnN0cnVjdEZyb20oZGF0ZSwgdmFsdWUpLCB7IHRpbWVzdGFtcElzU2V0OiB0cnVlIH1dO1xuICB9XG5cbiAgaW5jb21wYXRpYmxlVG9rZW5zID0gXCIqXCI7XG59XG4iLCAiaW1wb3J0IHsgRXJhUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9FcmFQYXJzZXIuanNcIjtcbmltcG9ydCB7IFllYXJQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL1llYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IExvY2FsV2Vla1llYXJQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0xvY2FsV2Vla1llYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT1dlZWtZZWFyUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9JU09XZWVrWWVhclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRXh0ZW5kZWRZZWFyUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9FeHRlbmRlZFllYXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IFF1YXJ0ZXJQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL1F1YXJ0ZXJQYXJzZXIuanNcIjtcbmltcG9ydCB7IFN0YW5kQWxvbmVRdWFydGVyUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9TdGFuZEFsb25lUXVhcnRlclBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTW9udGhQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL01vbnRoUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lTW9udGhQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL1N0YW5kQWxvbmVNb250aFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTG9jYWxXZWVrUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9Mb2NhbFdlZWtQYXJzZXIuanNcIjtcbmltcG9ydCB7IElTT1dlZWtQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0lTT1dlZWtQYXJzZXIuanNcIjtcbmltcG9ydCB7IERhdGVQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0RhdGVQYXJzZXIuanNcIjtcbmltcG9ydCB7IERheU9mWWVhclBhcnNlciB9IGZyb20gXCIuL3BhcnNlcnMvRGF5T2ZZZWFyUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBEYXlQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0RheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgTG9jYWxEYXlQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0xvY2FsRGF5UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTdGFuZEFsb25lTG9jYWxEYXlQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL1N0YW5kQWxvbmVMb2NhbERheVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPRGF5UGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9JU09EYXlQYXJzZXIuanNcIjtcbmltcG9ydCB7IEFNUE1QYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0FNUE1QYXJzZXIuanNcIjtcbmltcG9ydCB7IEFNUE1NaWRuaWdodFBhcnNlciB9IGZyb20gXCIuL3BhcnNlcnMvQU1QTU1pZG5pZ2h0UGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBEYXlQZXJpb2RQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0RheVBlcmlvZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjF0bzEyUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9Ib3VyMXRvMTJQYXJzZXIuanNcIjtcbmltcG9ydCB7IEhvdXIwdG8yM1BhcnNlciB9IGZyb20gXCIuL3BhcnNlcnMvSG91cjB0bzIzUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBIb3VyMFRvMTFQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0hvdXIwVG8xMVBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSG91cjFUbzI0UGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9Ib3VyMVRvMjRQYXJzZXIuanNcIjtcbmltcG9ydCB7IE1pbnV0ZVBhcnNlciB9IGZyb20gXCIuL3BhcnNlcnMvTWludXRlUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBTZWNvbmRQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL1NlY29uZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgRnJhY3Rpb25PZlNlY29uZFBhcnNlciB9IGZyb20gXCIuL3BhcnNlcnMvRnJhY3Rpb25PZlNlY29uZFBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPVGltZXpvbmVXaXRoWlBhcnNlciB9IGZyb20gXCIuL3BhcnNlcnMvSVNPVGltZXpvbmVXaXRoWlBhcnNlci5qc1wiO1xuaW1wb3J0IHsgSVNPVGltZXpvbmVQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL0lTT1RpbWV6b25lUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBUaW1lc3RhbXBTZWNvbmRzUGFyc2VyIH0gZnJvbSBcIi4vcGFyc2Vycy9UaW1lc3RhbXBTZWNvbmRzUGFyc2VyLmpzXCI7XG5pbXBvcnQgeyBUaW1lc3RhbXBNaWxsaXNlY29uZHNQYXJzZXIgfSBmcm9tIFwiLi9wYXJzZXJzL1RpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlci5qc1wiO1xuXG4vKlxuICogfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfFxuICogfCAgYSAgfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgfCAgQSogfCBNaWxsaXNlY29uZHMgaW4gZGF5ICAgICAgICAgICAgfFxuICogfCAgYiAgfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgfCAgQiAgfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgfFxuICogfCAgYyAgfCBTdGFuZC1hbG9uZSBsb2NhbCBkYXkgb2Ygd2VlayAgfCAgQyogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfFxuICogfCAgZCAgfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgfCAgRCAgfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZSAgfCBMb2NhbCBkYXkgb2Ygd2VlayAgICAgICAgICAgICAgfCAgRSAgfCBEYXkgb2Ygd2VlayAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgZiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgRiogfCBEYXkgb2Ygd2VlayBpbiBtb250aCAgICAgICAgICAgfFxuICogfCAgZyogfCBNb2RpZmllZCBKdWxpYW4gZGF5ICAgICAgICAgICAgfCAgRyAgfCBFcmEgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaCAgfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgfCAgSCAgfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgaSEgfCBJU08gZGF5IG9mIHdlZWsgICAgICAgICAgICAgICAgfCAgSSEgfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgfFxuICogfCAgaiogfCBMb2NhbGl6ZWQgaG91ciB3LyBkYXkgcGVyaW9kICAgfCAgSiogfCBMb2NhbGl6ZWQgaG91ciB3L28gZGF5IHBlcmlvZCAgfFxuICogfCAgayAgfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgfCAgSyAgfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbCogfCAoZGVwcmVjYXRlZCkgICAgICAgICAgICAgICAgICAgfCAgTCAgfCBTdGFuZC1hbG9uZSBtb250aCAgICAgICAgICAgICAgfFxuICogfCAgbSAgfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTSAgfCBNb250aCAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgTiAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgbyEgfCBPcmRpbmFsIG51bWJlciBtb2RpZmllciAgICAgICAgfCAgTyogfCBUaW1lem9uZSAoR01UKSAgICAgICAgICAgICAgICAgfFxuICogfCAgcCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUCAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgcSAgfCBTdGFuZC1hbG9uZSBxdWFydGVyICAgICAgICAgICAgfCAgUSAgfCBRdWFydGVyICAgICAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgciogfCBSZWxhdGVkIEdyZWdvcmlhbiB5ZWFyICAgICAgICAgfCAgUiEgfCBJU08gd2Vlay1udW1iZXJpbmcgeWVhciAgICAgICAgfFxuICogfCAgcyAgfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgfCAgUyAgfCBGcmFjdGlvbiBvZiBzZWNvbmQgICAgICAgICAgICAgfFxuICogfCAgdCEgfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgfCAgVCEgfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgfFxuICogfCAgdSAgfCBFeHRlbmRlZCB5ZWFyICAgICAgICAgICAgICAgICAgfCAgVSogfCBDeWNsaWMgeWVhciAgICAgICAgICAgICAgICAgICAgfFxuICogfCAgdiogfCBUaW1lem9uZSAoZ2VuZXJpYyBub24tbG9jYXQuKSAgfCAgViogfCBUaW1lem9uZSAobG9jYXRpb24pICAgICAgICAgICAgfFxuICogfCAgdyAgfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgfCAgVyogfCBXZWVrIG9mIG1vbnRoICAgICAgICAgICAgICAgICAgfFxuICogfCAgeCAgfCBUaW1lem9uZSAoSVNPLTg2MDEgdy9vIFopICAgICAgfCAgWCAgfCBUaW1lem9uZSAoSVNPLTg2MDEpICAgICAgICAgICAgfFxuICogfCAgeSAgfCBZZWFyIChhYnMpICAgICAgICAgICAgICAgICAgICAgfCAgWSAgfCBMb2NhbCB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgfFxuICogfCAgeiogfCBUaW1lem9uZSAoc3BlY2lmaWMgbm9uLWxvY2F0LikgfCAgWiogfCBUaW1lem9uZSAoYWxpYXNlcykgICAgICAgICAgICAgfFxuICpcbiAqIExldHRlcnMgbWFya2VkIGJ5ICogYXJlIG5vdCBpbXBsZW1lbnRlZCBidXQgcmVzZXJ2ZWQgYnkgVW5pY29kZSBzdGFuZGFyZC5cbiAqXG4gKiBMZXR0ZXJzIG1hcmtlZCBieSAhIGFyZSBub24tc3RhbmRhcmQsIGJ1dCBpbXBsZW1lbnRlZCBieSBkYXRlLWZuczpcbiAqIC0gYG9gIG1vZGlmaWVzIHRoZSBwcmV2aW91cyB0b2tlbiB0byB0dXJuIGl0IGludG8gYW4gb3JkaW5hbCAoc2VlIGBwYXJzZWAgZG9jcylcbiAqIC0gYGlgIGlzIElTTyBkYXkgb2Ygd2Vlay4gRm9yIGBpYCBhbmQgYGlpYCBpcyByZXR1cm5zIG51bWVyaWMgSVNPIHdlZWsgZGF5cyxcbiAqICAgaS5lLiA3IGZvciBTdW5kYXksIDEgZm9yIE1vbmRheSwgZXRjLlxuICogLSBgSWAgaXMgSVNPIHdlZWsgb2YgeWVhciwgYXMgb3Bwb3NlZCB0byBgd2Agd2hpY2ggaXMgbG9jYWwgd2VlayBvZiB5ZWFyLlxuICogLSBgUmAgaXMgSVNPIHdlZWstbnVtYmVyaW5nIHllYXIsIGFzIG9wcG9zZWQgdG8gYFlgIHdoaWNoIGlzIGxvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIuXG4gKiAgIGBSYCBpcyBzdXBwb3NlZCB0byBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYElgIGFuZCBgaWBcbiAqICAgZm9yIHVuaXZlcnNhbCBJU08gd2Vlay1udW1iZXJpbmcgZGF0ZSwgd2hlcmVhc1xuICogICBgWWAgaXMgc3VwcG9zZWQgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGB3YCBhbmQgYGVgXG4gKiAgIGZvciB3ZWVrLW51bWJlcmluZyBkYXRlIHNwZWNpZmljIHRvIHRoZSBsb2NhbGUuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZXJzID0ge1xuICBHOiBuZXcgRXJhUGFyc2VyKCksXG4gIHk6IG5ldyBZZWFyUGFyc2VyKCksXG4gIFk6IG5ldyBMb2NhbFdlZWtZZWFyUGFyc2VyKCksXG4gIFI6IG5ldyBJU09XZWVrWWVhclBhcnNlcigpLFxuICB1OiBuZXcgRXh0ZW5kZWRZZWFyUGFyc2VyKCksXG4gIFE6IG5ldyBRdWFydGVyUGFyc2VyKCksXG4gIHE6IG5ldyBTdGFuZEFsb25lUXVhcnRlclBhcnNlcigpLFxuICBNOiBuZXcgTW9udGhQYXJzZXIoKSxcbiAgTDogbmV3IFN0YW5kQWxvbmVNb250aFBhcnNlcigpLFxuICB3OiBuZXcgTG9jYWxXZWVrUGFyc2VyKCksXG4gIEk6IG5ldyBJU09XZWVrUGFyc2VyKCksXG4gIGQ6IG5ldyBEYXRlUGFyc2VyKCksXG4gIEQ6IG5ldyBEYXlPZlllYXJQYXJzZXIoKSxcbiAgRTogbmV3IERheVBhcnNlcigpLFxuICBlOiBuZXcgTG9jYWxEYXlQYXJzZXIoKSxcbiAgYzogbmV3IFN0YW5kQWxvbmVMb2NhbERheVBhcnNlcigpLFxuICBpOiBuZXcgSVNPRGF5UGFyc2VyKCksXG4gIGE6IG5ldyBBTVBNUGFyc2VyKCksXG4gIGI6IG5ldyBBTVBNTWlkbmlnaHRQYXJzZXIoKSxcbiAgQjogbmV3IERheVBlcmlvZFBhcnNlcigpLFxuICBoOiBuZXcgSG91cjF0bzEyUGFyc2VyKCksXG4gIEg6IG5ldyBIb3VyMHRvMjNQYXJzZXIoKSxcbiAgSzogbmV3IEhvdXIwVG8xMVBhcnNlcigpLFxuICBrOiBuZXcgSG91cjFUbzI0UGFyc2VyKCksXG4gIG06IG5ldyBNaW51dGVQYXJzZXIoKSxcbiAgczogbmV3IFNlY29uZFBhcnNlcigpLFxuICBTOiBuZXcgRnJhY3Rpb25PZlNlY29uZFBhcnNlcigpLFxuICBYOiBuZXcgSVNPVGltZXpvbmVXaXRoWlBhcnNlcigpLFxuICB4OiBuZXcgSVNPVGltZXpvbmVQYXJzZXIoKSxcbiAgdDogbmV3IFRpbWVzdGFtcFNlY29uZHNQYXJzZXIoKSxcbiAgVDogbmV3IFRpbWVzdGFtcE1pbGxpc2Vjb25kc1BhcnNlcigpLFxufTtcbiIsICJpbXBvcnQgeyBkZWZhdWx0TG9jYWxlIH0gZnJvbSBcIi4vX2xpYi9kZWZhdWx0TG9jYWxlLmpzXCI7XG5pbXBvcnQgeyBsb25nRm9ybWF0dGVycyB9IGZyb20gXCIuL19saWIvZm9ybWF0L2xvbmdGb3JtYXR0ZXJzLmpzXCI7XG5pbXBvcnQge1xuICBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuLFxuICBpc1Byb3RlY3RlZFdlZWtZZWFyVG9rZW4sXG4gIHdhcm5PclRocm93UHJvdGVjdGVkRXJyb3IsXG59IGZyb20gXCIuL19saWIvcHJvdGVjdGVkVG9rZW5zLmpzXCI7XG5pbXBvcnQgeyBjb25zdHJ1Y3RGcm9tIH0gZnJvbSBcIi4vY29uc3RydWN0RnJvbS5qc1wiO1xuaW1wb3J0IHsgZ2V0RGVmYXVsdE9wdGlvbnMgfSBmcm9tIFwiLi9nZXREZWZhdWx0T3B0aW9ucy5qc1wiO1xuaW1wb3J0IHsgdG9EYXRlIH0gZnJvbSBcIi4vdG9EYXRlLmpzXCI7XG5cbmltcG9ydCB7IERhdGVUaW1lem9uZVNldHRlciB9IGZyb20gXCIuL3BhcnNlL19saWIvU2V0dGVyLmpzXCI7XG5pbXBvcnQgeyBwYXJzZXJzIH0gZnJvbSBcIi4vcGFyc2UvX2xpYi9wYXJzZXJzLmpzXCI7XG5cbi8vIFJleHBvcnRzIG9mIGludGVybmFsIGZvciBsaWJyYXJpZXMgdG8gdXNlLlxuLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvaXNzdWVzLzM2MzgjaXNzdWVjb21tZW50LTE4NzcwODI4NzRcbmV4cG9ydCB7IGxvbmdGb3JtYXR0ZXJzLCBwYXJzZXJzIH07XG5cbi8qKlxuICogVGhlIHtAbGluayBwYXJzZX0gZnVuY3Rpb24gb3B0aW9ucy5cbiAqL1xuXG4vLyBUaGlzIFJlZ0V4cCBjb25zaXN0cyBvZiB0aHJlZSBwYXJ0cyBzZXBhcmF0ZWQgYnkgYHxgOlxuLy8gLSBbeVlRcU1Md0lkRGVjaWhIS2ttc11vIG1hdGNoZXMgYW55IGF2YWlsYWJsZSBvcmRpbmFsIG51bWJlciB0b2tlblxuLy8gICAob25lIG9mIHRoZSBjZXJ0YWluIGxldHRlcnMgZm9sbG93ZWQgYnkgYG9gKVxuLy8gLSAoXFx3KVxcMSogbWF0Y2hlcyBhbnkgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIGxldHRlclxuLy8gLSAnJyBtYXRjaGVzIHR3byBxdW90ZSBjaGFyYWN0ZXJzIGluIGEgcm93XG4vLyAtICcoJyd8W14nXSkrKCd8JCkgbWF0Y2hlcyBhbnl0aGluZyBzdXJyb3VuZGVkIGJ5IHR3byBxdW90ZSBjaGFyYWN0ZXJzICgnKSxcbi8vICAgZXhjZXB0IGEgc2luZ2xlIHF1b3RlIHN5bWJvbCwgd2hpY2ggZW5kcyB0aGUgc2VxdWVuY2UuXG4vLyAgIFR3byBxdW90ZSBjaGFyYWN0ZXJzIGRvIG5vdCBlbmQgdGhlIHNlcXVlbmNlLlxuLy8gICBJZiB0aGVyZSBpcyBubyBtYXRjaGluZyBzaW5nbGUgcXVvdGVcbi8vICAgdGhlbiB0aGUgc2VxdWVuY2Ugd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuXG4vLyAtIC4gbWF0Y2hlcyBhbnkgc2luZ2xlIGNoYXJhY3RlciB1bm1hdGNoZWQgYnkgcHJldmlvdXMgcGFydHMgb2YgdGhlIFJlZ0V4cHNcbmNvbnN0IGZvcm1hdHRpbmdUb2tlbnNSZWdFeHAgPVxuICAvW3lZUXFNTHdJZERlY2loSEtrbXNdb3woXFx3KVxcMSp8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG5cbi8vIFRoaXMgUmVnRXhwIGNhdGNoZXMgc3ltYm9scyBlc2NhcGVkIGJ5IHF1b3RlcywgYW5kIGFsc29cbi8vIHNlcXVlbmNlcyBvZiBzeW1ib2xzIFAsIHAsIGFuZCB0aGUgY29tYmluYXRpb25zIGxpa2UgYFBQUFBQUFBwcHBwcGBcbmNvbnN0IGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwID0gL1ArcCt8UCt8cCt8Jyd8JygnJ3xbXiddKSsoJ3wkKXwuL2c7XG5cbmNvbnN0IGVzY2FwZWRTdHJpbmdSZWdFeHAgPSAvXicoW15dKj8pJz8kLztcbmNvbnN0IGRvdWJsZVF1b3RlUmVnRXhwID0gLycnL2c7XG5cbmNvbnN0IG5vdFdoaXRlc3BhY2VSZWdFeHAgPSAvXFxTLztcbmNvbnN0IHVuZXNjYXBlZExhdGluQ2hhcmFjdGVyUmVnRXhwID0gL1thLXpBLVpdLztcblxuLyoqXG4gKiBAbmFtZSBwYXJzZVxuICogQGNhdGVnb3J5IENvbW1vbiBIZWxwZXJzXG4gKiBAc3VtbWFyeSBQYXJzZSB0aGUgZGF0ZS5cbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqIFJldHVybiB0aGUgZGF0ZSBwYXJzZWQgZnJvbSBzdHJpbmcgdXNpbmcgdGhlIGdpdmVuIGZvcm1hdCBzdHJpbmcuXG4gKlxuICogPiBcdTI2QTBcdUZFMEYgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYGZvcm1hdGAgdG9rZW5zIGRpZmZlciBmcm9tIE1vbWVudC5qcyBhbmQgb3RoZXIgbGlicmFyaWVzLlxuICogPiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqXG4gKiBUaGUgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZyB3cmFwcGVkIGJldHdlZW4gdHdvIHNpbmdsZSBxdW90ZXMgY2hhcmFjdGVycyAoJykgYXJlIGVzY2FwZWQuXG4gKiBUd28gc2luZ2xlIHF1b3RlcyBpbiBhIHJvdywgd2hldGhlciBpbnNpZGUgb3Igb3V0c2lkZSBhIHF1b3RlZCBzZXF1ZW5jZSwgcmVwcmVzZW50IGEgJ3JlYWwnIHNpbmdsZSBxdW90ZS5cbiAqXG4gKiBGb3JtYXQgb2YgdGhlIGZvcm1hdCBzdHJpbmcgaXMgYmFzZWQgb24gVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogaHR0cHM6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjM1L3RyMzUtZGF0ZXMuaHRtbCNEYXRlX0ZpZWxkX1N5bWJvbF9UYWJsZVxuICogd2l0aCBhIGZldyBhZGRpdGlvbnMgKHNlZSBub3RlIDUgYmVsb3cgdGhlIHRhYmxlKS5cbiAqXG4gKiBOb3QgYWxsIHRva2VucyBhcmUgY29tcGF0aWJsZS4gQ29tYmluYXRpb25zIHRoYXQgZG9uJ3QgbWFrZSBzZW5zZSBvciBjb3VsZCBsZWFkIHRvIGJ1Z3MgYXJlIHByb2hpYml0ZWRcbiAqIGFuZCB3aWxsIHRocm93IGBSYW5nZUVycm9yYC4gRm9yIGV4YW1wbGUgdXNhZ2Ugb2YgMjQtaG91ciBmb3JtYXQgdG9rZW4gd2l0aCBBTS9QTSB0b2tlbiB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbjpcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiBwYXJzZSgnMjMgQU0nLCAnSEggYScsIG5ldyBEYXRlKCkpXG4gKiAvLz0+IFJhbmdlRXJyb3I6IFRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBgSEhgIGFuZCBgYWAgYXQgdGhlIHNhbWUgdGltZVxuICogYGBgXG4gKlxuICogU2VlIHRoZSBjb21wYXRpYmlsaXR5IHRhYmxlOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC9lLzJQQUNYLTF2UU9QVTN4VWhwbGxsNmR5b01tVlVYSEtsXzhDUkRzNl91ZUxtZXgzU29xd2h1b2xrdU4zTzA1bDRycXg1aDFkS1g4ZWI0NlVsLUNDU3JxL3B1Ymh0bWw/Z2lkPTAmc2luZ2xlPXRydWVcbiAqXG4gKiBBY2NlcHRlZCBmb3JtYXQgc3RyaW5nIHBhdHRlcm5zOlxuICogfCBVbml0ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxQcmlvcnwgUGF0dGVybiB8IFJlc3VsdCBleGFtcGxlcyAgICAgICAgICAgICAgICAgICB8IE5vdGVzIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS18LS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS18XG4gKiB8IEVyYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNDAgfCBHLi5HR0cgIHwgQUQsIEJDICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgR0dHRyAgICB8IEFubm8gRG9taW5pLCBCZWZvcmUgQ2hyaXN0ICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEdHR0dHICAgfCBBLCBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8IENhbGVuZGFyIHllYXIgICAgICAgICAgICAgICAgICAgfCAxMzAgfCB5ICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcsIDk5OTkgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCA5OTk5OTk5dGggICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5ICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB5eXkgICAgIHwgMDQ0LCAwMDEsIDEyMywgOTk5ICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeXl5eSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHl5eXl5ICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IExvY2FsIHdlZWstbnVtYmVyaW5nIHllYXIgICAgICAgfCAxMzAgfCBZICAgICAgIHwgNDQsIDEsIDE5MDAsIDIwMTcsIDkwMDAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWW8gICAgICB8IDQ0dGgsIDFzdCwgMTkwMHRoLCA5OTk5OTk5dGggICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZICAgICAgfCA0NCwgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICAgfCA0LDYgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBZWVkgICAgIHwgMDQ0LCAwMDEsIDEyMywgOTk5ICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWVlZWSAgICB8IDAwNDQsIDAwMDEsIDE5MDAsIDIwMTcgICAgICAgICAgICB8IDQsNiAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFlZWVlZICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyLDQgICB8XG4gKiB8IElTTyB3ZWVrLW51bWJlcmluZyB5ZWFyICAgICAgICAgfCAxMzAgfCBSICAgICAgIHwgLTQzLCAxLCAxOTAwLCAyMDE3LCA5OTk5LCAtOTk5OSAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlIgICAgICB8IC00MywgMDEsIDAwLCAxNyAgICAgICAgICAgICAgICAgICB8IDQsNSAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFJSUiAgICAgfCAtMDQzLCAwMDEsIDEyMywgOTk5LCAtOTk5ICAgICAgICAgfCA0LDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBSUlJSICAgIHwgLTAwNDMsIDAwMDEsIDIwMTcsIDk5OTksIC05OTk5ICAgIHwgNCw1ICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUlJSUlIgICB8IC4uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIsNCw1IHxcbiAqIHwgRXh0ZW5kZWQgeWVhciAgICAgICAgICAgICAgICAgICB8IDEzMCB8IHUgICAgICAgfCAtNDMsIDEsIDE5MDAsIDIwMTcsIDk5OTksIC05OTkgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dSAgICAgIHwgLTQzLCAwMSwgOTksIC05OSAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgdXV1ICAgICB8IC0wNDMsIDAwMSwgMTIzLCA5OTksIC05OTkgICAgICAgICB8IDQgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHV1dXUgICAgfCAtMDA0MywgMDAwMSwgMjAxNywgOTk5OSwgLTk5OTkgICAgfCA0ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB1dXV1dSAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiw0ICAgfFxuICogfCBRdWFydGVyIChmb3JtYXR0aW5nKSAgICAgICAgICAgIHwgMTIwIHwgUSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUVFRICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFFRUVEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBRUVFRUSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgNCAgICAgfFxuICogfCBRdWFydGVyIChzdGFuZC1hbG9uZSkgICAgICAgICAgIHwgMTIwIHwgcSAgICAgICB8IDEsIDIsIDMsIDQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFvICAgICAgfCAxc3QsIDJuZCwgM3JkLCA0dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcSAgICAgIHwgMDEsIDAyLCAwMywgMDQgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgcXFxICAgICB8IFExLCBRMiwgUTMsIFE0ICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHFxcXEgICAgfCAxc3QgcXVhcnRlciwgMm5kIHF1YXJ0ZXIsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBxcXFxcSAgIHwgMSwgMiwgMywgNCAgICAgICAgICAgICAgICAgICAgICAgIHwgMyAgICAgfFxuICogfCBNb250aCAoZm9ybWF0dGluZykgICAgICAgICAgICAgIHwgMTEwIHwgTSAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1vICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTSAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTU1NICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IE1NTU0gICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBNTU1NTSAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNb250aCAoc3RhbmQtYWxvbmUpICAgICAgICAgICAgIHwgMTEwIHwgTCAgICAgICB8IDEsIDIsIC4uLiwgMTIgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMnRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTCAgICAgIHwgMDEsIDAyLCAuLi4sIDEyICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgTExMICAgICB8IEphbiwgRmViLCAuLi4sIERlYyAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IExMTEwgICAgfCBKYW51YXJ5LCBGZWJydWFyeSwgLi4uLCBEZWNlbWJlciAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBMTExMTCAgIHwgSiwgRiwgLi4uLCBEICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBMb2NhbCB3ZWVrIG9mIHllYXIgICAgICAgICAgICAgIHwgMTAwIHwgdyAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHdvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB3dyAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gd2VlayBvZiB5ZWFyICAgICAgICAgICAgICAgIHwgMTAwIHwgSSAgICAgICB8IDEsIDIsIC4uLiwgNTMgICAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IElvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA1M3RoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBJSSAgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCBEYXkgb2YgbW9udGggICAgICAgICAgICAgICAgICAgIHwgIDkwIHwgZCAgICAgICB8IDEsIDIsIC4uLiwgMzEgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGRvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzMXN0ICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBkZCAgICAgIHwgMDEsIDAyLCAuLi4sIDMxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBEYXkgb2YgeWVhciAgICAgICAgICAgICAgICAgICAgIHwgIDkwIHwgRCAgICAgICB8IDEsIDIsIC4uLiwgMzY1LCAzNjYgICAgICAgICAgICAgICB8IDcgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IERvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAzNjV0aCwgMzY2dGggICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBERCAgICAgIHwgMDEsIDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICAgIHwgNyAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgREREICAgICB8IDAwMSwgMDAyLCAuLi4sIDM2NSwgMzY2ICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEREREQgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IERheSBvZiB3ZWVrIChmb3JtYXR0aW5nKSAgICAgICAgfCAgOTAgfCBFLi5FRUUgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgRUVFRSAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEVFRUVFICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBFRUVFRUUgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBJU08gZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICAgIHwgIDkwIHwgaSAgICAgICB8IDEsIDIsIDMsIC4uLiwgNyAgICAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlvICAgICAgfCAxc3QsIDJuZCwgLi4uLCA3dGggICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaSAgICAgIHwgMDEsIDAyLCAuLi4sIDA3ICAgICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpICAgICB8IE1vbiwgVHVlLCBXZWQsIC4uLiwgU3VuICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGlpaWkgICAgfCBNb25kYXksIFR1ZXNkYXksIC4uLiwgU3VuZGF5ICAgICAgfCAyLDUgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBpaWlpaSAgIHwgTSwgVCwgVywgVCwgRiwgUywgUyAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgaWlpaWlpICB8IE1vLCBUdSwgV2UsIFRoLCBGciwgU2EsIFN1ICAgICAgICB8IDUgICAgIHxcbiAqIHwgTG9jYWwgZGF5IG9mIHdlZWsgKGZvcm1hdHRpbmcpICB8ICA5MCB8IGUgICAgICAgfCAyLCAzLCA0LCAuLi4sIDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlbyAgICAgIHwgMm5kLCAzcmQsIC4uLiwgMXN0ICAgICAgICAgICAgICAgIHwgNSAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWUgICAgICB8IDAyLCAwMywgLi4uLCAwMSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZSAgICAgfCBNb24sIFR1ZSwgV2VkLCAuLi4sIFN1biAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBlZWVlICAgIHwgTW9uZGF5LCBUdWVzZGF5LCAuLi4sIFN1bmRheSAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgZWVlZWUgICB8IE0sIFQsIFcsIFQsIEYsIFMsIFMgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGVlZWVlZSAgfCBNbywgVHUsIFdlLCBUaCwgRnIsIFNhLCBTdSAgICAgICAgfCAgICAgICB8XG4gKiB8IExvY2FsIGRheSBvZiB3ZWVrIChzdGFuZC1hbG9uZSkgfCAgOTAgfCBjICAgICAgIHwgMiwgMywgNCwgLi4uLCAxICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY28gICAgICB8IDJuZCwgM3JkLCAuLi4sIDFzdCAgICAgICAgICAgICAgICB8IDUgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjICAgICAgfCAwMiwgMDMsIC4uLiwgMDEgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2MgICAgIHwgTW9uLCBUdWUsIFdlZCwgLi4uLCBTdW4gICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgY2NjYyAgICB8IE1vbmRheSwgVHVlc2RheSwgLi4uLCBTdW5kYXkgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGNjY2NjICAgfCBNLCBULCBXLCBULCBGLCBTLCBTICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBjY2NjY2MgIHwgTW8sIFR1LCBXZSwgVGgsIEZyLCBTYSwgU3UgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0gICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDgwIHwgYS4uYWFhICB8IEFNLCBQTSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGFhYWEgICAgfCBhLm0uLCBwLm0uICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBhYWFhYSAgIHwgYSwgcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBBTSwgUE0sIG5vb24sIG1pZG5pZ2h0ICAgICAgICAgIHwgIDgwIHwgYi4uYmJiICB8IEFNLCBQTSwgbm9vbiwgbWlkbmlnaHQgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGJiYmIgICAgfCBhLm0uLCBwLm0uLCBub29uLCBtaWRuaWdodCAgICAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBiYmJiYiAgIHwgYSwgcCwgbiwgbWkgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBGbGV4aWJsZSBkYXkgcGVyaW9kICAgICAgICAgICAgIHwgIDgwIHwgQi4uQkJCICB8IGF0IG5pZ2h0LCBpbiB0aGUgbW9ybmluZywgLi4uICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEJCQkIgICAgfCBhdCBuaWdodCwgaW4gdGhlIG1vcm5pbmcsIC4uLiAgICAgfCAyICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBCQkJCQiAgIHwgYXQgbmlnaHQsIGluIHRoZSBtb3JuaW5nLCAuLi4gICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTEyXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgaCAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDEyICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGhvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAxMnRoICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBoaCAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAxMiAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTIzXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgSCAgICAgICB8IDAsIDEsIDIsIC4uLiwgMjMgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEhvICAgICAgfCAwdGgsIDFzdCwgMm5kLCAuLi4sIDIzcmQgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBISCAgICAgIHwgMDAsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFswLTExXSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgSyAgICAgICB8IDEsIDIsIC4uLiwgMTEsIDAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IEtvICAgICAgfCAxc3QsIDJuZCwgLi4uLCAxMXRoLCAwdGggICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBLSyAgICAgIHwgMDEsIDAyLCAuLi4sIDExLCAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBIb3VyIFsxLTI0XSAgICAgICAgICAgICAgICAgICAgIHwgIDcwIHwgayAgICAgICB8IDI0LCAxLCAyLCAuLi4sIDIzICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IGtvICAgICAgfCAyNHRoLCAxc3QsIDJuZCwgLi4uLCAyM3JkICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBrayAgICAgIHwgMjQsIDAxLCAwMiwgLi4uLCAyMyAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBNaW51dGUgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYwIHwgbSAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IG1vICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBtbSAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUwIHwgcyAgICAgICB8IDAsIDEsIC4uLiwgNTkgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHNvICAgICAgfCAwdGgsIDFzdCwgLi4uLCA1OXRoICAgICAgICAgICAgICAgfCA1ICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBzcyAgICAgIHwgMDAsIDAxLCAuLi4sIDU5ICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBTZWNvbmRzIHRpbWVzdGFtcCAgICAgICAgICAgICAgIHwgIDQwIHwgdCAgICAgICB8IDUxMjk2OTUyMCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHR0ICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IEZyYWN0aW9uIG9mIHNlY29uZCAgICAgICAgICAgICAgfCAgMzAgfCBTICAgICAgIHwgMCwgMSwgLi4uLCA5ICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgU1MgICAgICB8IDAwLCAwMSwgLi4uLCA5OSAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFNTUyAgICAgfCAwMDAsIDAwMSwgLi4uLCA5OTkgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBTU1NTICAgIHwgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiAgICAgfFxuICogfCBNaWxsaXNlY29uZHMgdGltZXN0YW1wICAgICAgICAgIHwgIDIwIHwgVCAgICAgICB8IDUxMjk2OTUyMDkwMCAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFRUICAgICAgfCAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICAgICB8XG4gKiB8IFRpbWV6b25lIChJU08tODYwMSB3LyBaKSAgICAgICAgfCAgMTAgfCBYICAgICAgIHwgLTA4LCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFggICAgICB8IC0wODAwLCArMDUzMCwgWiAgICAgICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFhYWCAgICAgfCAtMDg6MDAsICswNTozMCwgWiAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBYWFhYICAgIHwgLTA4MDAsICswNTMwLCBaLCArMTIzNDU2ICAgICAgICAgIHwgMiAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgWFhYWFggICB8IC0wODowMCwgKzA1OjMwLCBaLCArMTI6MzQ6NTYgICAgICB8ICAgICAgIHxcbiAqIHwgVGltZXpvbmUgKElTTy04NjAxIHcvbyBaKSAgICAgICB8ICAxMCB8IHggICAgICAgfCAtMDgsICswNTMwLCArMDAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eCAgICAgIHwgLTA4MDAsICswNTMwLCArMDAwMCAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgeHh4ICAgICB8IC0wODowMCwgKzA1OjMwLCArMDA6MDAgICAgICAgICAgICB8IDIgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IHh4eHggICAgfCAtMDgwMCwgKzA1MzAsICswMDAwLCArMTIzNDU2ICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCB4eHh4eCAgIHwgLTA4OjAwLCArMDU6MzAsICswMDowMCwgKzEyOjM0OjU2IHwgICAgICAgfFxuICogfCBMb25nIGxvY2FsaXplZCBkYXRlICAgICAgICAgICAgIHwgIE5BIHwgUCAgICAgICB8IDA1LzI5LzE0NTMgICAgICAgICAgICAgICAgICAgICAgICB8IDUsOCAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQICAgICAgfCBNYXkgMjksIDE0NTMgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFAgICAgIHwgTWF5IDI5dGgsIDE0NTMgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQUCAgICB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgICAgICAgICAgICB8IDIsNSw4IHxcbiAqIHwgTG9uZyBsb2NhbGl6ZWQgdGltZSAgICAgICAgICAgICB8ICBOQSB8IHAgICAgICAgfCAxMjowMCBBTSAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1LDggICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBwcCAgICAgIHwgMTI6MDA6MDAgQU0gICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCBDb21iaW5hdGlvbiBvZiBkYXRlIGFuZCB0aW1lICAgIHwgIE5BIHwgUHAgICAgICB8IDA1LzI5LzE0NTMsIDEyOjAwIEFNICAgICAgICAgICAgICB8ICAgICAgIHxcbiAqIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICB8IFBQcHAgICAgfCBNYXkgMjksIDE0NTMsIDEyOjAwOjAwIEFNICAgICAgICAgfCAgICAgICB8XG4gKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgfCBQUFBwcCAgIHwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICAgICAgICAgIHwgICAgICAgfFxuICogfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgUFBQUHBwICB8IFN1bmRheSwgTWF5IDI5dGgsIDE0NTMgYXQgLi4uICAgICB8IDIsNSw4IHxcbiAqIE5vdGVzOlxuICogMS4gXCJGb3JtYXR0aW5nXCIgdW5pdHMgKGUuZy4gZm9ybWF0dGluZyBxdWFydGVyKSBpbiB0aGUgZGVmYXVsdCBlbi1VUyBsb2NhbGVcbiAqICAgIGFyZSB0aGUgc2FtZSBhcyBcInN0YW5kLWFsb25lXCIgdW5pdHMsIGJ1dCBhcmUgZGlmZmVyZW50IGluIHNvbWUgbGFuZ3VhZ2VzLlxuICogICAgXCJGb3JtYXR0aW5nXCIgdW5pdHMgYXJlIGRlY2xpbmVkIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxhbmd1YWdlXG4gKiAgICBpbiB0aGUgY29udGV4dCBvZiBhIGRhdGUuIFwiU3RhbmQtYWxvbmVcIiB1bml0cyBhcmUgYWx3YXlzIG5vbWluYXRpdmUgc2luZ3VsYXIuXG4gKiAgICBJbiBgZm9ybWF0YCBmdW5jdGlvbiwgdGhleSB3aWxsIHByb2R1Y2UgZGlmZmVyZW50IHJlc3VsdDpcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIExMTEwnLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkJ2BcbiAqXG4gKiAgICBgZm9ybWF0KG5ldyBEYXRlKDIwMTcsIDEwLCA2KSwgJ2RvIE1NTU0nLCB7bG9jYWxlOiBjc30pIC8vPT4gJzYuIGxpc3RvcGFkdSdgXG4gKlxuICogICAgYHBhcnNlYCB3aWxsIHRyeSB0byBtYXRjaCBib3RoIGZvcm1hdHRpbmcgYW5kIHN0YW5kLWFsb25lIHVuaXRzIGludGVyY2hhbmdlYWJseS5cbiAqXG4gKiAyLiBBbnkgc2VxdWVuY2Ugb2YgdGhlIGlkZW50aWNhbCBsZXR0ZXJzIGlzIGEgcGF0dGVybiwgdW5sZXNzIGl0IGlzIGVzY2FwZWQgYnlcbiAqICAgIHRoZSBzaW5nbGUgcXVvdGUgY2hhcmFjdGVycyAoc2VlIGJlbG93KS5cbiAqICAgIElmIHRoZSBzZXF1ZW5jZSBpcyBsb25nZXIgdGhhbiBsaXN0ZWQgaW4gdGFibGU6XG4gKiAgICAtIGZvciBudW1lcmljYWwgdW5pdHMgKGB5eXl5eXl5eWApIGBwYXJzZWAgd2lsbCB0cnkgdG8gbWF0Y2ggYSBudW1iZXJcbiAqICAgICAgYXMgd2lkZSBhcyB0aGUgc2VxdWVuY2VcbiAqICAgIC0gZm9yIHRleHQgdW5pdHMgKGBNTU1NTU1NTWApIGBwYXJzZWAgd2lsbCB0cnkgdG8gbWF0Y2ggdGhlIHdpZGVzdCB2YXJpYXRpb24gb2YgdGhlIHVuaXQuXG4gKiAgICAgIFRoZXNlIHZhcmlhdGlvbnMgYXJlIG1hcmtlZCB3aXRoIFwiMlwiIGluIHRoZSBsYXN0IGNvbHVtbiBvZiB0aGUgdGFibGUuXG4gKlxuICogMy4gYFFRUVFRYCBhbmQgYHFxcXFxYCBjb3VsZCBiZSBub3Qgc3RyaWN0bHkgbnVtZXJpY2FsIGluIHNvbWUgbG9jYWxlcy5cbiAqICAgIFRoZXNlIHRva2VucyByZXByZXNlbnQgdGhlIHNob3J0ZXN0IGZvcm0gb2YgdGhlIHF1YXJ0ZXIuXG4gKlxuICogNC4gVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIGB5YCBhbmQgYHVgIHBhdHRlcm5zIGFyZSBCLkMuIHllYXJzOlxuICpcbiAqICAgIHwgWWVhciB8IGB5YCB8IGB1YCB8XG4gKiAgICB8LS0tLS0tfC0tLS0tfC0tLS0tfFxuICogICAgfCBBQyAxIHwgICAxIHwgICAxIHxcbiAqICAgIHwgQkMgMSB8ICAgMSB8ICAgMCB8XG4gKiAgICB8IEJDIDIgfCAgIDIgfCAgLTEgfFxuICpcbiAqICAgIEFsc28gYHl5YCB3aWxsIHRyeSB0byBndWVzcyB0aGUgY2VudHVyeSBvZiB0d28gZGlnaXQgeWVhciBieSBwcm94aW1pdHkgd2l0aCBgcmVmZXJlbmNlRGF0ZWA6XG4gKlxuICogICAgYHBhcnNlKCc1MCcsICd5eScsIG5ldyBEYXRlKDIwMTgsIDAsIDEpKSAvLz0+IFNhdCBKYW4gMDEgMjA1MCAwMDowMDowMGBcbiAqXG4gKiAgICBgcGFyc2UoJzc1JywgJ3l5JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gV2VkIEphbiAwMSAxOTc1IDAwOjAwOjAwYFxuICpcbiAqICAgIHdoaWxlIGB1dWAgd2lsbCBqdXN0IGFzc2lnbiB0aGUgeWVhciBhcyBpczpcbiAqXG4gKiAgICBgcGFyc2UoJzUwJywgJ3V1JywgbmV3IERhdGUoMjAxOCwgMCwgMSkpIC8vPT4gU2F0IEphbiAwMSAwMDUwIDAwOjAwOjAwYFxuICpcbiAqICAgIGBwYXJzZSgnNzUnLCAndXUnLCBuZXcgRGF0ZSgyMDE4LCAwLCAxKSkgLy89PiBUdWUgSmFuIDAxIDAwNzUgMDA6MDA6MDBgXG4gKlxuICogICAgVGhlIHNhbWUgZGlmZmVyZW5jZSBpcyB0cnVlIGZvciBsb2NhbCBhbmQgSVNPIHdlZWstbnVtYmVyaW5nIHllYXJzIChgWWAgYW5kIGBSYCksXG4gKiAgICBleGNlcHQgbG9jYWwgd2Vlay1udW1iZXJpbmcgeWVhcnMgYXJlIGRlcGVuZGVudCBvbiBgb3B0aW9ucy53ZWVrU3RhcnRzT25gXG4gKiAgICBhbmQgYG9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlYCAoY29tcGFyZSBbc2V0SVNPV2Vla1llYXJdKGh0dHBzOi8vZGF0ZS1mbnMub3JnL2RvY3Mvc2V0SVNPV2Vla1llYXIpXG4gKiAgICBhbmQgW3NldFdlZWtZZWFyXShodHRwczovL2RhdGUtZm5zLm9yZy9kb2NzL3NldFdlZWtZZWFyKSkuXG4gKlxuICogNS4gVGhlc2UgcGF0dGVybnMgYXJlIG5vdCBpbiB0aGUgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1OlxuICogICAgLSBgaWA6IElTTyBkYXkgb2Ygd2Vla1xuICogICAgLSBgSWA6IElTTyB3ZWVrIG9mIHllYXJcbiAqICAgIC0gYFJgOiBJU08gd2Vlay1udW1iZXJpbmcgeWVhclxuICogICAgLSBgb2A6IG9yZGluYWwgbnVtYmVyIG1vZGlmaWVyXG4gKiAgICAtIGBQYDogbG9uZyBsb2NhbGl6ZWQgZGF0ZVxuICogICAgLSBgcGA6IGxvbmcgbG9jYWxpemVkIHRpbWVcbiAqXG4gKiA2LiBgWVlgIGFuZCBgWVlZWWAgdG9rZW5zIHJlcHJlc2VudCB3ZWVrLW51bWJlcmluZyB5ZWFycyBidXQgdGhleSBhcmUgb2Z0ZW4gY29uZnVzZWQgd2l0aCB5ZWFycy5cbiAqICAgIFlvdSBzaG91bGQgZW5hYmxlIGBvcHRpb25zLnVzZUFkZGl0aW9uYWxXZWVrWWVhclRva2Vuc2AgdG8gdXNlIHRoZW0uIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIDcuIGBEYCBhbmQgYEREYCB0b2tlbnMgcmVwcmVzZW50IGRheXMgb2YgdGhlIHllYXIgYnV0IHRoZXkgYXJlIG9mdGVuIGNvbmZ1c2VkIHdpdGggZGF5cyBvZiB0aGUgbW9udGguXG4gKiAgICBZb3Ugc2hvdWxkIGVuYWJsZSBgb3B0aW9ucy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zYCB0byB1c2UgdGhlbS4gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKlxuICogOC4gYFArYCB0b2tlbnMgZG8gbm90IGhhdmUgYSBkZWZpbmVkIHByaW9yaXR5IHNpbmNlIHRoZXkgYXJlIG1lcmVseSBhbGlhc2VzIHRvIG90aGVyIHRva2VucyBiYXNlZFxuICogICAgb24gdGhlIGdpdmVuIGxvY2FsZS5cbiAqXG4gKiAgICB1c2luZyBgZW4tVVNgIGxvY2FsZTogYFBgID0+IGBNTS9kZC95eXl5YFxuICogICAgdXNpbmcgYGVuLVVTYCBsb2NhbGU6IGBwYCA9PiBgaGg6bW0gYWBcbiAqICAgIHVzaW5nIGBwdC1CUmAgbG9jYWxlOiBgUGAgPT4gYGRkL01NL3l5eXlgXG4gKiAgICB1c2luZyBgcHQtQlJgIGxvY2FsZTogYHBgID0+IGBISDptbWBcbiAqXG4gKiBWYWx1ZXMgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUgZGF0ZSBpbiB0aGUgZGVzY2VuZGluZyBvcmRlciBvZiBpdHMgdW5pdCdzIHByaW9yaXR5LlxuICogVW5pdHMgb2YgYW4gZXF1YWwgcHJpb3JpdHkgb3ZlcndyaXRlIGVhY2ggb3RoZXIgaW4gdGhlIG9yZGVyIG9mIGFwcGVhcmFuY2UuXG4gKlxuICogSWYgbm8gdmFsdWVzIG9mIGhpZ2hlciBwcmlvcml0eSBhcmUgcGFyc2VkIChlLmcuIHdoZW4gcGFyc2luZyBzdHJpbmcgJ0phbnVhcnkgMXN0JyB3aXRob3V0IGEgeWVhciksXG4gKiB0aGUgdmFsdWVzIHdpbGwgYmUgdGFrZW4gZnJvbSAzcmQgYXJndW1lbnQgYHJlZmVyZW5jZURhdGVgIHdoaWNoIHdvcmtzIGFzIGEgY29udGV4dCBvZiBwYXJzaW5nLlxuICpcbiAqIGByZWZlcmVuY2VEYXRlYCBtdXN0IGJlIHBhc3NlZCBmb3IgY29ycmVjdCB3b3JrIG9mIHRoZSBmdW5jdGlvbi5cbiAqIElmIHlvdSdyZSBub3Qgc3VyZSB3aGljaCBgcmVmZXJlbmNlRGF0ZWAgdG8gc3VwcGx5LCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgRGF0ZTpcbiAqIGBwYXJzZSgnMDIvMTEvMjAxNCcsICdNTS9kZC95eXl5JywgbmV3IERhdGUoKSlgXG4gKiBJbiB0aGlzIGNhc2UgcGFyc2luZyB3aWxsIGJlIGRvbmUgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgZGF0ZS5cbiAqIElmIGByZWZlcmVuY2VEYXRlYCBpcyBgSW52YWxpZCBEYXRlYCBvciBhIHZhbHVlIG5vdCBjb252ZXJ0aWJsZSB0byB2YWxpZCBgRGF0ZWAsXG4gKiB0aGVuIGBJbnZhbGlkIERhdGVgIHdpbGwgYmUgcmV0dXJuZWQuXG4gKlxuICogVGhlIHJlc3VsdCBtYXkgdmFyeSBieSBsb2NhbGUuXG4gKlxuICogSWYgYGZvcm1hdFN0cmluZ2AgbWF0Y2hlcyB3aXRoIGBkYXRlU3RyaW5nYCBidXQgZG9lcyBub3QgcHJvdmlkZXMgdG9rZW5zLCBgcmVmZXJlbmNlRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBJZiBwYXJzaW5nIGZhaWxlZCwgYEludmFsaWQgRGF0ZWAgd2lsbCBiZSByZXR1cm5lZC5cbiAqIEludmFsaWQgRGF0ZSBpcyBhIERhdGUsIHdob3NlIHRpbWUgdmFsdWUgaXMgTmFOLlxuICogVGltZSB2YWx1ZSBvZiBEYXRlOiBodHRwOi8vZXM1LmdpdGh1Yi5pby8jeDE1LjkuMS4xXG4gKlxuICogQHR5cGVQYXJhbSBEYXRlVHlwZSAtIFRoZSBgRGF0ZWAgdHlwZSwgdGhlIGZ1bmN0aW9uIG9wZXJhdGVzIG9uLiBHZXRzIGluZmVycmVkIGZyb20gcGFzc2VkIGFyZ3VtZW50cy4gQWxsb3dzIHRvIHVzZSBleHRlbnNpb25zIGxpa2UgW2BVVENEYXRlYF0oaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL3V0YykuXG4gKiBAdHlwZVBhcmFtIFJlc3VsdERhdGUgLSBUaGUgcmVzdWx0IGBEYXRlYCB0eXBlLCBpdCBpcyB0aGUgdHlwZSByZXR1cm5lZCBmcm9tIHRoZSBjb250ZXh0IGZ1bmN0aW9uIGlmIGl0IGlzIHBhc3NlZCwgb3IgaW5mZXJyZWQgZnJvbSB0aGUgYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSBkYXRlU3RyIC0gVGhlIHN0cmluZyB0byBwYXJzZVxuICogQHBhcmFtIGZvcm1hdFN0ciAtIFRoZSBzdHJpbmcgb2YgdG9rZW5zXG4gKiBAcGFyYW0gcmVmZXJlbmNlRGF0ZSAtIGRlZmluZXMgdmFsdWVzIG1pc3NpbmcgZnJvbSB0aGUgcGFyc2VkIGRhdGVTdHJpbmdcbiAqIEBwYXJhbSBvcHRpb25zIC0gQW4gb2JqZWN0IHdpdGggb3B0aW9ucy5cbiAqICAgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiAgIHNlZTogaHR0cHM6Ly9naXRodWIuY29tL2RhdGUtZm5zL2RhdGUtZm5zL2Jsb2IvbWFzdGVyL2RvY3MvdW5pY29kZVRva2Vucy5tZFxuICpcbiAqIEByZXR1cm5zIFRoZSBwYXJzZWQgZGF0ZVxuICpcbiAqIEB0aHJvd3MgYG9wdGlvbnMubG9jYWxlYCBtdXN0IGNvbnRhaW4gYG1hdGNoYCBwcm9wZXJ0eVxuICogQHRocm93cyB1c2UgYHl5eXlgIGluc3RlYWQgb2YgYFlZWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3MgdXNlIGB5eWAgaW5zdGVhZCBvZiBgWVlgIGZvciBmb3JtYXR0aW5nIHllYXJzIHVzaW5nIFtmb3JtYXQgcHJvdmlkZWRdIHRvIHRoZSBpbnB1dCBbaW5wdXQgcHJvdmlkZWRdOyBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXRlLWZucy9kYXRlLWZucy9ibG9iL21hc3Rlci9kb2NzL3VuaWNvZGVUb2tlbnMubWRcbiAqIEB0aHJvd3MgdXNlIGBkYCBpbnN0ZWFkIG9mIGBEYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIHVzZSBgZGRgIGluc3RlYWQgb2YgYEREYCBmb3IgZm9ybWF0dGluZyBkYXlzIG9mIHRoZSBtb250aCB1c2luZyBbZm9ybWF0IHByb3ZpZGVkXSB0byB0aGUgaW5wdXQgW2lucHV0IHByb3ZpZGVkXTsgc2VlOiBodHRwczovL2dpdGh1Yi5jb20vZGF0ZS1mbnMvZGF0ZS1mbnMvYmxvYi9tYXN0ZXIvZG9jcy91bmljb2RlVG9rZW5zLm1kXG4gKiBAdGhyb3dzIGZvcm1hdCBzdHJpbmcgY29udGFpbnMgYW4gdW5lc2NhcGVkIGxhdGluIGFscGhhYmV0IGNoYXJhY3RlclxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQYXJzZSAxMSBGZWJydWFyeSAyMDE0IGZyb20gbWlkZGxlLWVuZGlhbiBmb3JtYXQ6XG4gKiB2YXIgcmVzdWx0ID0gcGFyc2UoJzAyLzExLzIwMTQnLCAnTU0vZGQveXl5eScsIG5ldyBEYXRlKCkpXG4gKiAvLz0+IFR1ZSBGZWIgMTEgMjAxNCAwMDowMDowMFxuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBQYXJzZSAyOHRoIG9mIEZlYnJ1YXJ5IGluIEVzcGVyYW50byBsb2NhbGUgaW4gdGhlIGNvbnRleHQgb2YgMjAxMCB5ZWFyOlxuICogaW1wb3J0IGVvIGZyb20gJ2RhdGUtZm5zL2xvY2FsZS9lbydcbiAqIHZhciByZXN1bHQgPSBwYXJzZSgnMjgtYSBkZSBmZWJydWFybycsIFwiZG8gJ2RlJyBNTU1NXCIsIG5ldyBEYXRlKDIwMTAsIDAsIDEpLCB7XG4gKiAgIGxvY2FsZTogZW9cbiAqIH0pXG4gKiAvLz0+IFN1biBGZWIgMjggMjAxMCAwMDowMDowMFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoZGF0ZVN0ciwgZm9ybWF0U3RyLCByZWZlcmVuY2VEYXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IGludmFsaWREYXRlID0gKCkgPT4gY29uc3RydWN0RnJvbShvcHRpb25zPy5pbiB8fCByZWZlcmVuY2VEYXRlLCBOYU4pO1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IGdldERlZmF1bHRPcHRpb25zKCk7XG4gIGNvbnN0IGxvY2FsZSA9IG9wdGlvbnM/LmxvY2FsZSA/PyBkZWZhdWx0T3B0aW9ucy5sb2NhbGUgPz8gZGVmYXVsdExvY2FsZTtcblxuICBjb25zdCBmaXJzdFdlZWtDb250YWluc0RhdGUgPVxuICAgIG9wdGlvbnM/LmZpcnN0V2Vla0NvbnRhaW5zRGF0ZSA/P1xuICAgIG9wdGlvbnM/LmxvY2FsZT8ub3B0aW9ucz8uZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMuZmlyc3RXZWVrQ29udGFpbnNEYXRlID8/XG4gICAgZGVmYXVsdE9wdGlvbnMubG9jYWxlPy5vcHRpb25zPy5maXJzdFdlZWtDb250YWluc0RhdGUgPz9cbiAgICAxO1xuXG4gIGNvbnN0IHdlZWtTdGFydHNPbiA9XG4gICAgb3B0aW9ucz8ud2Vla1N0YXJ0c09uID8/XG4gICAgb3B0aW9ucz8ubG9jYWxlPy5vcHRpb25zPy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy53ZWVrU3RhcnRzT24gPz9cbiAgICBkZWZhdWx0T3B0aW9ucy5sb2NhbGU/Lm9wdGlvbnM/LndlZWtTdGFydHNPbiA/P1xuICAgIDA7XG5cbiAgaWYgKCFmb3JtYXRTdHIpXG4gICAgcmV0dXJuIGRhdGVTdHIgPyBpbnZhbGlkRGF0ZSgpIDogdG9EYXRlKHJlZmVyZW5jZURhdGUsIG9wdGlvbnM/LmluKTtcblxuICBjb25zdCBzdWJGbk9wdGlvbnMgPSB7XG4gICAgZmlyc3RXZWVrQ29udGFpbnNEYXRlLFxuICAgIHdlZWtTdGFydHNPbixcbiAgICBsb2NhbGUsXG4gIH07XG5cbiAgLy8gSWYgdGltZXpvbmUgaXNuJ3Qgc3BlY2lmaWVkLCBpdCB3aWxsIHRyeSB0byB1c2UgdGhlIGNvbnRleHQgb3JcbiAgLy8gdGhlIHJlZmVyZW5jZSBkYXRlIGFuZCBmYWxsYmFjayB0byB0aGUgc3lzdGVtIHRpbWUgem9uZS5cbiAgY29uc3Qgc2V0dGVycyA9IFtuZXcgRGF0ZVRpbWV6b25lU2V0dGVyKG9wdGlvbnM/LmluLCByZWZlcmVuY2VEYXRlKV07XG5cbiAgY29uc3QgdG9rZW5zID0gZm9ybWF0U3RyXG4gICAgLm1hdGNoKGxvbmdGb3JtYXR0aW5nVG9rZW5zUmVnRXhwKVxuICAgIC5tYXAoKHN1YnN0cmluZykgPT4ge1xuICAgICAgY29uc3QgZmlyc3RDaGFyYWN0ZXIgPSBzdWJzdHJpbmdbMF07XG4gICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIgaW4gbG9uZ0Zvcm1hdHRlcnMpIHtcbiAgICAgICAgY29uc3QgbG9uZ0Zvcm1hdHRlciA9IGxvbmdGb3JtYXR0ZXJzW2ZpcnN0Q2hhcmFjdGVyXTtcbiAgICAgICAgcmV0dXJuIGxvbmdGb3JtYXR0ZXIoc3Vic3RyaW5nLCBsb2NhbGUuZm9ybWF0TG9uZyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3Vic3RyaW5nO1xuICAgIH0pXG4gICAgLmpvaW4oXCJcIilcbiAgICAubWF0Y2goZm9ybWF0dGluZ1Rva2Vuc1JlZ0V4cCk7XG5cbiAgY29uc3QgdXNlZFRva2VucyA9IFtdO1xuXG4gIGZvciAobGV0IHRva2VuIG9mIHRva2Vucykge1xuICAgIGlmIChcbiAgICAgICFvcHRpb25zPy51c2VBZGRpdGlvbmFsV2Vla1llYXJUb2tlbnMgJiZcbiAgICAgIGlzUHJvdGVjdGVkV2Vla1llYXJUb2tlbih0b2tlbilcbiAgICApIHtcbiAgICAgIHdhcm5PclRocm93UHJvdGVjdGVkRXJyb3IodG9rZW4sIGZvcm1hdFN0ciwgZGF0ZVN0cik7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICFvcHRpb25zPy51c2VBZGRpdGlvbmFsRGF5T2ZZZWFyVG9rZW5zICYmXG4gICAgICBpc1Byb3RlY3RlZERheU9mWWVhclRva2VuKHRva2VuKVxuICAgICkge1xuICAgICAgd2Fybk9yVGhyb3dQcm90ZWN0ZWRFcnJvcih0b2tlbiwgZm9ybWF0U3RyLCBkYXRlU3RyKTtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdENoYXJhY3RlciA9IHRva2VuWzBdO1xuICAgIGNvbnN0IHBhcnNlciA9IHBhcnNlcnNbZmlyc3RDaGFyYWN0ZXJdO1xuICAgIGlmIChwYXJzZXIpIHtcbiAgICAgIGNvbnN0IHsgaW5jb21wYXRpYmxlVG9rZW5zIH0gPSBwYXJzZXI7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShpbmNvbXBhdGlibGVUb2tlbnMpKSB7XG4gICAgICAgIGNvbnN0IGluY29tcGF0aWJsZVRva2VuID0gdXNlZFRva2Vucy5maW5kKFxuICAgICAgICAgICh1c2VkVG9rZW4pID0+XG4gICAgICAgICAgICBpbmNvbXBhdGlibGVUb2tlbnMuaW5jbHVkZXModXNlZFRva2VuLnRva2VuKSB8fFxuICAgICAgICAgICAgdXNlZFRva2VuLnRva2VuID09PSBmaXJzdENoYXJhY3RlcixcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGluY29tcGF0aWJsZVRva2VuKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICAgICAgICBgVGhlIGZvcm1hdCBzdHJpbmcgbXVzdG4ndCBjb250YWluIFxcYCR7aW5jb21wYXRpYmxlVG9rZW4uZnVsbFRva2VufVxcYCBhbmQgXFxgJHt0b2tlbn1cXGAgYXQgdGhlIHNhbWUgdGltZWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChwYXJzZXIuaW5jb21wYXRpYmxlVG9rZW5zID09PSBcIipcIiAmJiB1c2VkVG9rZW5zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXG4gICAgICAgICAgYFRoZSBmb3JtYXQgc3RyaW5nIG11c3RuJ3QgY29udGFpbiBcXGAke3Rva2VufVxcYCBhbmQgYW55IG90aGVyIHRva2VuIGF0IHRoZSBzYW1lIHRpbWVgLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB1c2VkVG9rZW5zLnB1c2goeyB0b2tlbjogZmlyc3RDaGFyYWN0ZXIsIGZ1bGxUb2tlbjogdG9rZW4gfSk7XG5cbiAgICAgIGNvbnN0IHBhcnNlUmVzdWx0ID0gcGFyc2VyLnJ1bihcbiAgICAgICAgZGF0ZVN0cixcbiAgICAgICAgdG9rZW4sXG4gICAgICAgIGxvY2FsZS5tYXRjaCxcbiAgICAgICAgc3ViRm5PcHRpb25zLFxuICAgICAgKTtcblxuICAgICAgaWYgKCFwYXJzZVJlc3VsdCkge1xuICAgICAgICByZXR1cm4gaW52YWxpZERhdGUoKTtcbiAgICAgIH1cblxuICAgICAgc2V0dGVycy5wdXNoKHBhcnNlUmVzdWx0LnNldHRlcik7XG5cbiAgICAgIGRhdGVTdHIgPSBwYXJzZVJlc3VsdC5yZXN0O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZmlyc3RDaGFyYWN0ZXIubWF0Y2godW5lc2NhcGVkTGF0aW5DaGFyYWN0ZXJSZWdFeHApKSB7XG4gICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFxuICAgICAgICAgIFwiRm9ybWF0IHN0cmluZyBjb250YWlucyBhbiB1bmVzY2FwZWQgbGF0aW4gYWxwaGFiZXQgY2hhcmFjdGVyIGBcIiArXG4gICAgICAgICAgICBmaXJzdENoYXJhY3RlciArXG4gICAgICAgICAgICBcImBcIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVwbGFjZSB0d28gc2luZ2xlIHF1b3RlIGNoYXJhY3RlcnMgd2l0aCBvbmUgc2luZ2xlIHF1b3RlIGNoYXJhY3RlclxuICAgICAgaWYgKHRva2VuID09PSBcIicnXCIpIHtcbiAgICAgICAgdG9rZW4gPSBcIidcIjtcbiAgICAgIH0gZWxzZSBpZiAoZmlyc3RDaGFyYWN0ZXIgPT09IFwiJ1wiKSB7XG4gICAgICAgIHRva2VuID0gY2xlYW5Fc2NhcGVkU3RyaW5nKHRva2VuKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ3V0IHRva2VuIGZyb20gc3RyaW5nLCBvciwgaWYgc3RyaW5nIGRvZXNuJ3QgbWF0Y2ggdGhlIHRva2VuLCByZXR1cm4gSW52YWxpZCBEYXRlXG4gICAgICBpZiAoZGF0ZVN0ci5pbmRleE9mKHRva2VuKSA9PT0gMCkge1xuICAgICAgICBkYXRlU3RyID0gZGF0ZVN0ci5zbGljZSh0b2tlbi5sZW5ndGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGludmFsaWREYXRlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hlY2sgaWYgdGhlIHJlbWFpbmluZyBpbnB1dCBjb250YWlucyBzb21ldGhpbmcgb3RoZXIgdGhhbiB3aGl0ZXNwYWNlXG4gIGlmIChkYXRlU3RyLmxlbmd0aCA+IDAgJiYgbm90V2hpdGVzcGFjZVJlZ0V4cC50ZXN0KGRhdGVTdHIpKSB7XG4gICAgcmV0dXJuIGludmFsaWREYXRlKCk7XG4gIH1cblxuICBjb25zdCB1bmlxdWVQcmlvcml0eVNldHRlcnMgPSBzZXR0ZXJzXG4gICAgLm1hcCgoc2V0dGVyKSA9PiBzZXR0ZXIucHJpb3JpdHkpXG4gICAgLnNvcnQoKGEsIGIpID0+IGIgLSBhKVxuICAgIC5maWx0ZXIoKHByaW9yaXR5LCBpbmRleCwgYXJyYXkpID0+IGFycmF5LmluZGV4T2YocHJpb3JpdHkpID09PSBpbmRleClcbiAgICAubWFwKChwcmlvcml0eSkgPT5cbiAgICAgIHNldHRlcnNcbiAgICAgICAgLmZpbHRlcigoc2V0dGVyKSA9PiBzZXR0ZXIucHJpb3JpdHkgPT09IHByaW9yaXR5KVxuICAgICAgICAuc29ydCgoYSwgYikgPT4gYi5zdWJQcmlvcml0eSAtIGEuc3ViUHJpb3JpdHkpLFxuICAgIClcbiAgICAubWFwKChzZXR0ZXJBcnJheSkgPT4gc2V0dGVyQXJyYXlbMF0pO1xuXG4gIGxldCBkYXRlID0gdG9EYXRlKHJlZmVyZW5jZURhdGUsIG9wdGlvbnM/LmluKTtcblxuICBpZiAoaXNOYU4oK2RhdGUpKSByZXR1cm4gaW52YWxpZERhdGUoKTtcblxuICBjb25zdCBmbGFncyA9IHt9O1xuICBmb3IgKGNvbnN0IHNldHRlciBvZiB1bmlxdWVQcmlvcml0eVNldHRlcnMpIHtcbiAgICBpZiAoIXNldHRlci52YWxpZGF0ZShkYXRlLCBzdWJGbk9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gaW52YWxpZERhdGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBzZXR0ZXIuc2V0KGRhdGUsIGZsYWdzLCBzdWJGbk9wdGlvbnMpO1xuICAgIC8vIFJlc3VsdCBpcyB0dXBsZSAoZGF0ZSwgZmxhZ3MpXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocmVzdWx0KSkge1xuICAgICAgZGF0ZSA9IHJlc3VsdFswXTtcbiAgICAgIE9iamVjdC5hc3NpZ24oZmxhZ3MsIHJlc3VsdFsxXSk7XG4gICAgICAvLyBSZXN1bHQgaXMgZGF0ZVxuICAgIH0gZWxzZSB7XG4gICAgICBkYXRlID0gcmVzdWx0O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBkYXRlO1xufVxuXG5mdW5jdGlvbiBjbGVhbkVzY2FwZWRTdHJpbmcoaW5wdXQpIHtcbiAgcmV0dXJuIGlucHV0Lm1hdGNoKGVzY2FwZWRTdHJpbmdSZWdFeHApWzFdLnJlcGxhY2UoZG91YmxlUXVvdGVSZWdFeHAsIFwiJ1wiKTtcbn1cblxuLy8gRmFsbGJhY2sgZm9yIG1vZHVsYXJpemVkIGltcG9ydHM6XG5leHBvcnQgZGVmYXVsdCBwYXJzZTtcbiIsICJpbXBvcnQgeyBOb3RpY2UsIFRGaWxlIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7XHJcbiAgV29yZFByZXNzQXV0aFBhcmFtcyxcclxuICBXb3JkUHJlc3NDbGllbnQsXHJcbiAgV29yZFByZXNzQ2xpZW50UmVzdWx0LFxyXG4gIFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUsXHJcbiAgV29yZFByZXNzTWVkaWFVcGxvYWRSZXN1bHQsXHJcbiAgV29yZFByZXNzUG9zdFBhcmFtcyxcclxuICBXb3JkUHJlc3NQdWJsaXNoUmVzdWx0XHJcbn0gZnJvbSAnLi93cC1jbGllbnQnO1xyXG5pbXBvcnQgeyBXcFB1Ymxpc2hNb2RhbCB9IGZyb20gJy4vd3AtcHVibGlzaC1tb2RhbCc7XHJcbmltcG9ydCB7IFBvc3RUeXBlLCBQb3N0VHlwZUNvbnN0LCBUZXJtIH0gZnJvbSAnLi93cC1hcGknO1xyXG5pbXBvcnQgeyBFUlJPUl9OT1RJQ0VfVElNRU9VVCwgV1BfREVGQVVMVF9QUk9GSUxFX05BTUUgfSBmcm9tICcuL2NvbnN0cyc7XHJcbmltcG9ydCB7IGlzUHJvbWlzZUZ1bGZpbGxlZFJlc3VsdCwgaXNWYWxpZFVybCwgb3BlbldpdGhCcm93c2VyLCBwcm9jZXNzRmlsZSwgU2FmZUFueSwgc2hvd0Vycm9yLCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyBXcFByb2ZpbGUgfSBmcm9tICcuL3dwLXByb2ZpbGUnO1xyXG5pbXBvcnQgeyBBcHBTdGF0ZSB9IGZyb20gJy4vYXBwLXN0YXRlJztcclxuaW1wb3J0IHsgQ29uZmlybUNvZGUsIG9wZW5Db25maXJtTW9kYWwgfSBmcm9tICcuL2NvbmZpcm0tbW9kYWwnO1xyXG5pbXBvcnQgZmlsZVR5cGVDaGVja2VyIGZyb20gJ2ZpbGUtdHlwZS1jaGVja2VyJztcclxuaW1wb3J0IHsgTWF0dGVyRGF0YSwgTWVkaWEgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgb3BlblBvc3RQdWJsaXNoZWRNb2RhbCB9IGZyb20gJy4vcG9zdC1wdWJsaXNoZWQtbW9kYWwnO1xyXG5pbXBvcnQgeyBvcGVuTG9naW5Nb2RhbCB9IGZyb20gJy4vd3AtbG9naW4tbW9kYWwnO1xyXG5pbXBvcnQgeyBpc0Z1bmN0aW9uIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFdvcmRQcmVzc0NsaWVudCBpbXBsZW1lbnRzIFdvcmRQcmVzc0NsaWVudCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIENsaWVudCBuYW1lLlxyXG4gICAqL1xyXG4gIG5hbWUgPSAnQWJzdHJhY3RXb3JkUHJlc3NDbGllbnQnO1xyXG5cclxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZmlsZTogV3BQcm9maWxlXHJcbiAgKSB7IH1cclxuXHJcbiAgYWJzdHJhY3QgcHVibGlzaChcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBjb250ZW50OiBzdHJpbmcsXHJcbiAgICBwb3N0UGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zLFxyXG4gICAgY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXNcclxuICApOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdDxXb3JkUHJlc3NQdWJsaXNoUmVzdWx0Pj47XHJcblxyXG4gIGFic3RyYWN0IGdldENhdGVnb3JpZXMoXHJcbiAgICBjZXJ0aWZpY2F0ZTogV29yZFByZXNzQXV0aFBhcmFtc1xyXG4gICk6IFByb21pc2U8VGVybVtdPjtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0UG9zdFR5cGVzKFxyXG4gICAgY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXNcclxuICApOiBQcm9taXNlPFBvc3RUeXBlW10+O1xyXG5cclxuICBhYnN0cmFjdCB2YWxpZGF0ZVVzZXIoXHJcbiAgICBjZXJ0aWZpY2F0ZTogV29yZFByZXNzQXV0aFBhcmFtc1xyXG4gICk6IFByb21pc2U8V29yZFByZXNzQ2xpZW50UmVzdWx0PGJvb2xlYW4+PjtcclxuXHJcbiAgYWJzdHJhY3QgZ2V0VGFnKFxyXG4gICAgbmFtZTogc3RyaW5nLFxyXG4gICAgY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXNcclxuICApOiBQcm9taXNlPFRlcm0+O1xyXG5cclxuICBhYnN0cmFjdCB1cGxvYWRNZWRpYShcclxuICAgIG1lZGlhOiBNZWRpYSxcclxuICAgIGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zXHJcbiAgKTogUHJvbWlzZTxXb3JkUHJlc3NDbGllbnRSZXN1bHQ8V29yZFByZXNzTWVkaWFVcGxvYWRSZXN1bHQ+PjtcclxuXHJcbiAgcHJvdGVjdGVkIG5lZWRMb2dpbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRBdXRoKCk6IFByb21pc2U8V29yZFByZXNzQXV0aFBhcmFtcz4ge1xyXG4gICAgbGV0IGF1dGg6IFdvcmRQcmVzc0F1dGhQYXJhbXMgPSB7XHJcbiAgICAgIHVzZXJuYW1lOiBudWxsLFxyXG4gICAgICBwYXNzd29yZDogbnVsbFxyXG4gICAgfTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGlmICh0aGlzLm5lZWRMb2dpbigpKSB7XHJcbiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBzYXZlZCB1c2VybmFtZSBhbmQgcGFzc3dvcmRcclxuICAgICAgICBpZiAodGhpcy5wcm9maWxlLnVzZXJuYW1lICYmIHRoaXMucHJvZmlsZS5wYXNzd29yZCkge1xyXG4gICAgICAgICAgYXV0aCA9IHtcclxuICAgICAgICAgICAgdXNlcm5hbWU6IHRoaXMucHJvZmlsZS51c2VybmFtZSxcclxuICAgICAgICAgICAgcGFzc3dvcmQ6IHRoaXMucHJvZmlsZS5wYXNzd29yZFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGNvbnN0IGF1dGhSZXN1bHQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlVXNlcihhdXRoKTtcclxuICAgICAgICAgIGlmIChhdXRoUmVzdWx0LmNvZGUgIT09IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuT0spIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMucGx1Z2luLmkxOG4udCgnZXJyb3JfaW52YWxpZFVzZXInKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBzaG93RXJyb3IoZXJyb3IpO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBvcGVuTG9naW5Nb2RhbCh0aGlzLnBsdWdpbiwgdGhpcy5wcm9maWxlLCBhc3luYyAoYXV0aCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGF1dGhSZXN1bHQgPSBhd2FpdCB0aGlzLnZhbGlkYXRlVXNlcihhdXRoKTtcclxuICAgICAgICByZXR1cm4gYXV0aFJlc3VsdC5jb2RlID09PSBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLk9LO1xyXG4gICAgICB9KTtcclxuICAgICAgYXV0aCA9IHJlc3VsdC5hdXRoO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGF1dGg7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNoZWNrRXhpc3RpbmdQcm9maWxlKG1hdHRlckRhdGE6IE1hdHRlckRhdGEpIHtcclxuICAgIGNvbnN0IHsgcHJvZmlsZU5hbWUgfSA9IG1hdHRlckRhdGE7XHJcbiAgICBjb25zdCBpc1Byb2ZpbGVOYW1lTWlzbWF0Y2ggPSBwcm9maWxlTmFtZSAmJiBwcm9maWxlTmFtZSAhPT0gdGhpcy5wcm9maWxlLm5hbWU7XHJcbiAgICBpZiAoaXNQcm9maWxlTmFtZU1pc21hdGNoKSB7XHJcbiAgICAgIGNvbnN0IGNvbmZpcm0gPSBhd2FpdCBvcGVuQ29uZmlybU1vZGFsKHtcclxuICAgICAgICBtZXNzYWdlOiB0aGlzLnBsdWdpbi5pMThuLnQoJ2Vycm9yX3Byb2ZpbGVOb3RNYXRjaCcpLFxyXG4gICAgICAgIGNhbmNlbFRleHQ6IHRoaXMucGx1Z2luLmkxOG4udCgncHJvZmlsZU5vdE1hdGNoX3VzZU9sZCcsIHtcclxuICAgICAgICAgIHByb2ZpbGVOYW1lOiBtYXR0ZXJEYXRhLnByb2ZpbGVOYW1lXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgY29uZmlybVRleHQ6IHRoaXMucGx1Z2luLmkxOG4udCgncHJvZmlsZU5vdE1hdGNoX3VzZU5ldycsIHtcclxuICAgICAgICAgIHByb2ZpbGVOYW1lOiB0aGlzLnByb2ZpbGUubmFtZVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0sIHRoaXMucGx1Z2luKTtcclxuICAgICAgaWYgKGNvbmZpcm0uY29kZSAhPT0gQ29uZmlybUNvZGUuQ2FuY2VsKSB7XHJcbiAgICAgICAgZGVsZXRlIG1hdHRlckRhdGEucG9zdElkO1xyXG4gICAgICAgIG1hdHRlckRhdGEuY2F0ZWdvcmllcyA9IHRoaXMucHJvZmlsZS5sYXN0U2VsZWN0ZWRDYXRlZ29yaWVzID8/IFsgMSBdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHRyeVRvUHVibGlzaChwYXJhbXM6IHtcclxuICAgIHBvc3RQYXJhbXM6IFdvcmRQcmVzc1Bvc3RQYXJhbXMsXHJcbiAgICBhdXRoOiBXb3JkUHJlc3NBdXRoUGFyYW1zLFxyXG4gICAgdXBkYXRlTWF0dGVyRGF0YT86IChtYXR0ZXI6IE1hdHRlckRhdGEpID0+IHZvaWQsXHJcbiAgfSk6IFByb21pc2U8V29yZFByZXNzQ2xpZW50UmVzdWx0PFdvcmRQcmVzc1B1Ymxpc2hSZXN1bHQ+PiB7XHJcbiAgICBjb25zdCB7IHBvc3RQYXJhbXMsIGF1dGgsIHVwZGF0ZU1hdHRlckRhdGEgfSA9IHBhcmFtcztcclxuICAgIGNvbnN0IHRhZ1Rlcm1zID0gYXdhaXQgdGhpcy5nZXRUYWdzKHBvc3RQYXJhbXMudGFncywgYXV0aCk7XHJcbiAgICBwb3N0UGFyYW1zLnRhZ3MgPSB0YWdUZXJtcy5tYXAodGVybSA9PiB0ZXJtLmlkKTtcclxuICAgIGF3YWl0IHRoaXMudXBkYXRlUG9zdEltYWdlcyh7XHJcbiAgICAgIGF1dGgsXHJcbiAgICAgIHBvc3RQYXJhbXNcclxuICAgIH0pO1xyXG4gICAgY29uc3QgaHRtbCA9IEFwcFN0YXRlLm1hcmtkb3duUGFyc2VyLnJlbmRlcihwb3N0UGFyYW1zLmNvbnRlbnQpO1xyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wdWJsaXNoKFxyXG4gICAgICBwb3N0UGFyYW1zLnRpdGxlID8/ICdBIHBvc3QgZnJvbSBPYnNpZGlhbiEnLFxyXG4gICAgICBodG1sLFxyXG4gICAgICBwb3N0UGFyYW1zLFxyXG4gICAgICBhdXRoKTtcclxuICAgIGlmIChyZXN1bHQuY29kZSA9PT0gV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcikge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5wbHVnaW4uaTE4bi50KCdlcnJvcl9wdWJsaXNoRmFpbGVkJywge1xyXG4gICAgICAgIGNvZGU6IHJlc3VsdC5lcnJvci5jb2RlIGFzIHN0cmluZyxcclxuICAgICAgICBtZXNzYWdlOiByZXN1bHQuZXJyb3IubWVzc2FnZVxyXG4gICAgICB9KSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXcgTm90aWNlKHRoaXMucGx1Z2luLmkxOG4udCgnbWVzc2FnZV9wdWJsaXNoU3VjY2Vzc2Z1bGx5JykpO1xyXG4gICAgICAvLyBwb3N0IGlkIHdpbGwgYmUgcmV0dXJuZWQgaWYgY3JlYXRpbmcsIHRydWUgaWYgZWRpdGluZ1xyXG4gICAgICBjb25zdCBwb3N0SWQgPSByZXN1bHQuZGF0YS5wb3N0SWQ7XHJcbiAgICAgIGlmIChwb3N0SWQpIHtcclxuICAgICAgICAvLyBjb25zdCBtb2RpZmllZCA9IG1hdHRlci5zdHJpbmdpZnkocG9zdFBhcmFtcy5jb250ZW50LCBtYXR0ZXJEYXRhLCBtYXR0ZXJPcHRpb25zKTtcclxuICAgICAgICAvLyB0aGlzLnVwZGF0ZUZyb250TWF0dGVyKG1vZGlmaWVkKTtcclxuICAgICAgICBjb25zdCBmaWxlID0gdGhpcy5wbHVnaW4uYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XHJcbiAgICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICAgIGF3YWl0IHRoaXMucGx1Z2luLmFwcC5maWxlTWFuYWdlci5wcm9jZXNzRnJvbnRNYXR0ZXIoZmlsZSwgZm0gPT4ge1xyXG4gICAgICAgICAgICBmbS5wcm9maWxlTmFtZSA9IHRoaXMucHJvZmlsZS5uYW1lO1xyXG4gICAgICAgICAgICBmbS5wb3N0SWQgPSBwb3N0SWQ7XHJcbiAgICAgICAgICAgIGZtLnBvc3RUeXBlID0gcG9zdFBhcmFtcy5wb3N0VHlwZTtcclxuICAgICAgICAgICAgaWYgKHBvc3RQYXJhbXMucG9zdFR5cGUgPT09IFBvc3RUeXBlQ29uc3QuUG9zdCkge1xyXG4gICAgICAgICAgICAgIGZtLmNhdGVnb3JpZXMgPSBwb3N0UGFyYW1zLmNhdGVnb3JpZXM7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb24odXBkYXRlTWF0dGVyRGF0YSkpIHtcclxuICAgICAgICAgICAgICB1cGRhdGVNYXR0ZXJEYXRhKGZtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MucmVtZW1iZXJMYXN0U2VsZWN0ZWRDYXRlZ29yaWVzKSB7XHJcbiAgICAgICAgICB0aGlzLnByb2ZpbGUubGFzdFNlbGVjdGVkQ2F0ZWdvcmllcyA9IChyZXN1bHQuZGF0YSBhcyBTYWZlQW55KS5jYXRlZ29yaWVzO1xyXG4gICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3Muc2hvd1dvcmRQcmVzc0VkaXRDb25maXJtKSB7XHJcbiAgICAgICAgICBvcGVuUG9zdFB1Ymxpc2hlZE1vZGFsKHRoaXMucGx1Z2luKVxyXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb3BlbldpdGhCcm93c2VyKGAke3RoaXMucHJvZmlsZS5lbmRwb2ludH0vd3AtYWRtaW4vcG9zdC5waHBgLCB7XHJcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdlZGl0JyxcclxuICAgICAgICAgICAgICAgIHBvc3Q6IHBvc3RJZFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVBvc3RJbWFnZXMocGFyYW1zOiB7XHJcbiAgICBwb3N0UGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zLFxyXG4gICAgYXV0aDogV29yZFByZXNzQXV0aFBhcmFtcyxcclxuICB9KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCB7IHBvc3RQYXJhbXMsIGF1dGggfSA9IHBhcmFtcztcclxuXHJcbiAgICBjb25zdCBhY3RpdmVGaWxlID0gdGhpcy5wbHVnaW4uYXBwLndvcmtzcGFjZS5nZXRBY3RpdmVGaWxlKCk7XHJcbiAgICBpZiAoYWN0aXZlRmlsZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5wbHVnaW4uaTE4bi50KCdlcnJvcl9ub0FjdGl2ZUZpbGUnKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGFjdGl2ZUVkaXRvciB9ID0gdGhpcy5wbHVnaW4uYXBwLndvcmtzcGFjZTtcclxuICAgIGlmIChhY3RpdmVFZGl0b3IgJiYgYWN0aXZlRWRpdG9yLmVkaXRvcikge1xyXG4gICAgICAvLyBwcm9jZXNzIGltYWdlc1xyXG4gICAgICBjb25zdCBpbWFnZXMgPSBnZXRJbWFnZXMocG9zdFBhcmFtcy5jb250ZW50KTtcclxuICAgICAgZm9yIChjb25zdCBpbWcgb2YgaW1hZ2VzKSB7XHJcbiAgICAgICAgaWYgKCFpbWcuc3JjSXNVcmwpIHtcclxuICAgICAgICAgIGltZy5zcmMgPSBkZWNvZGVVUkkoaW1nLnNyYyk7XHJcbiAgICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGltZy5zcmMuc3BsaXQoXCIvXCIpLnBvcCgpO1xyXG4gICAgICAgICAgaWYgKGZpbGVOYW1lID09PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgY29udGludWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpbWdGaWxlID0gdGhpcy5wbHVnaW4uYXBwLm1ldGFkYXRhQ2FjaGUuZ2V0Rmlyc3RMaW5rcGF0aERlc3QoaW1nLnNyYywgZmlsZU5hbWUpO1xyXG4gICAgICAgICAgaWYgKGltZ0ZpbGUgaW5zdGFuY2VvZiBURmlsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgdGhpcy5wbHVnaW4uYXBwLnZhdWx0LnJlYWRCaW5hcnkoaW1nRmlsZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IGZpbGVUeXBlID0gZmlsZVR5cGVDaGVja2VyLmRldGVjdEZpbGUoY29udGVudCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudXBsb2FkTWVkaWEoe1xyXG4gICAgICAgICAgICAgIG1pbWVUeXBlOiBmaWxlVHlwZT8ubWltZVR5cGUgPz8gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXHJcbiAgICAgICAgICAgICAgZmlsZU5hbWU6IGltZ0ZpbGUubmFtZSxcclxuICAgICAgICAgICAgICBjb250ZW50OiBjb250ZW50XHJcbiAgICAgICAgICAgIH0sIGF1dGgpO1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmNvZGUgPT09IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuT0spIHtcclxuICAgICAgICAgICAgICBwb3N0UGFyYW1zLmNvbnRlbnQgPSBwb3N0UGFyYW1zLmNvbnRlbnQucmVwbGFjZShpbWcub3JpZ2luYWwsIGAhWyR7aW1nRmlsZS5uYW1lfV0oJHtyZXN1bHQuZGF0YS51cmx9KWApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChyZXN1bHQuZXJyb3IuY29kZSA9PT0gV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5TZXJ2ZXJJbnRlcm5hbEVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBuZXcgTm90aWNlKHJlc3VsdC5lcnJvci5tZXNzYWdlLCBFUlJPUl9OT1RJQ0VfVElNRU9VVCk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG5ldyBOb3RpY2UodGhpcy5wbHVnaW4uaTE4bi50KCdlcnJvcl9tZWRpYVVwbG9hZEZhaWxlZCcsIHtcclxuICAgICAgICAgICAgICAgICAgbmFtZTogaW1nRmlsZS5uYW1lLFxyXG4gICAgICAgICAgICAgICAgfSksIEVSUk9SX05PVElDRV9USU1FT1VUKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gc3JjIGlzIGEgdXJsLCBza2lwIHVwbG9hZGluZ1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5wbHVnaW4uc2V0dGluZ3MucmVwbGFjZU1lZGlhTGlua3MpIHtcclxuICAgICAgICBhY3RpdmVFZGl0b3IuZWRpdG9yLnNldFZhbHVlKHBvc3RQYXJhbXMuY29udGVudCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIHB1Ymxpc2hQb3N0KGRlZmF1bHRQb3N0UGFyYW1zPzogV29yZFByZXNzUG9zdFBhcmFtcyk6IFByb21pc2U8V29yZFByZXNzQ2xpZW50UmVzdWx0PFdvcmRQcmVzc1B1Ymxpc2hSZXN1bHQ+PiB7XHJcbiAgICB0cnkge1xyXG4gICAgICBpZiAoIXRoaXMucHJvZmlsZS5lbmRwb2ludCB8fCB0aGlzLnByb2ZpbGUuZW5kcG9pbnQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMucGx1Z2luLmkxOG4udCgnZXJyb3Jfbm9FbmRwb2ludCcpKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBjb25zdCB7IGFjdGl2ZUVkaXRvciB9ID0gdGhpcy5wbHVnaW4uYXBwLndvcmtzcGFjZTtcclxuICAgICAgY29uc3QgZmlsZSA9IHRoaXMucGx1Z2luLmFwcC53b3Jrc3BhY2UuZ2V0QWN0aXZlRmlsZSgpXHJcbiAgICAgIGlmIChmaWxlID09PSBudWxsKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMucGx1Z2luLmkxOG4udCgnZXJyb3Jfbm9BY3RpdmVGaWxlJykpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBnZXQgYXV0aCBpbmZvXHJcbiAgICAgIGNvbnN0IGF1dGggPSBhd2FpdCB0aGlzLmdldEF1dGgoKTtcclxuXHJcbiAgICAgIC8vIHJlYWQgbm90ZSB0aXRsZSwgY29udGVudCBhbmQgbWF0dGVyIGRhdGFcclxuICAgICAgY29uc3QgdGl0bGUgPSBmaWxlLmJhc2VuYW1lO1xyXG4gICAgICBjb25zdCB7IGNvbnRlbnQsIG1hdHRlcjogbWF0dGVyRGF0YSB9ID0gYXdhaXQgcHJvY2Vzc0ZpbGUoZmlsZSwgdGhpcy5wbHVnaW4uYXBwKTtcclxuXHJcbiAgICAgIC8vIGNoZWNrIGlmIHByb2ZpbGUgc2VsZWN0ZWQgaXMgbWF0Y2hlZCB0byB0aGUgb25lIGluIG5vdGUgcHJvcGVydHksXHJcbiAgICAgIC8vIGlmIG5vdCwgYXNrIHdoZXRoZXIgdG8gdXBkYXRlIG9yIG5vdFxyXG4gICAgICBhd2FpdCB0aGlzLmNoZWNrRXhpc3RpbmdQcm9maWxlKG1hdHRlckRhdGEpO1xyXG5cclxuICAgICAgLy8gbm93IHdlJ3JlIHByZXBhcmluZyB0aGUgcHVibGlzaGluZyBkYXRhXHJcbiAgICAgIGxldCBwb3N0UGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zO1xyXG4gICAgICBsZXQgcmVzdWx0OiBXb3JkUHJlc3NDbGllbnRSZXN1bHQ8V29yZFByZXNzUHVibGlzaFJlc3VsdD4gfCB1bmRlZmluZWQ7XHJcbiAgICAgIGlmIChkZWZhdWx0UG9zdFBhcmFtcykge1xyXG4gICAgICAgIHBvc3RQYXJhbXMgPSB0aGlzLnJlYWRGcm9tRnJvbnRNYXR0ZXIodGl0bGUsIG1hdHRlckRhdGEsIGRlZmF1bHRQb3N0UGFyYW1zKTtcclxuICAgICAgICBwb3N0UGFyYW1zLmNvbnRlbnQgPSBjb250ZW50O1xyXG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IHRoaXMudHJ5VG9QdWJsaXNoKHtcclxuICAgICAgICAgIGF1dGgsXHJcbiAgICAgICAgICBwb3N0UGFyYW1zXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3QgY2F0ZWdvcmllcyA9IGF3YWl0IHRoaXMuZ2V0Q2F0ZWdvcmllcyhhdXRoKTtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZENhdGVnb3JpZXMgPSBtYXR0ZXJEYXRhLmNhdGVnb3JpZXMgYXMgbnVtYmVyW11cclxuICAgICAgICAgID8/IHRoaXMucHJvZmlsZS5sYXN0U2VsZWN0ZWRDYXRlZ29yaWVzXHJcbiAgICAgICAgICA/PyBbIDEgXTtcclxuICAgICAgICBjb25zdCBwb3N0VHlwZXMgPSBhd2FpdCB0aGlzLmdldFBvc3RUeXBlcyhhdXRoKTtcclxuICAgICAgICBpZiAocG9zdFR5cGVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgcG9zdFR5cGVzLnB1c2goUG9zdFR5cGVDb25zdC5Qb3N0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWRQb3N0VHlwZSA9IG1hdHRlckRhdGEucG9zdFR5cGUgPz8gUG9zdFR5cGVDb25zdC5Qb3N0O1xyXG4gICAgICAgIHJlc3VsdCA9IGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgY29uc3QgcHVibGlzaE1vZGFsID0gbmV3IFdwUHVibGlzaE1vZGFsKFxyXG4gICAgICAgICAgICB0aGlzLnBsdWdpbixcclxuICAgICAgICAgICAgeyBpdGVtczogY2F0ZWdvcmllcywgc2VsZWN0ZWQ6IHNlbGVjdGVkQ2F0ZWdvcmllcyB9LFxyXG4gICAgICAgICAgICB7IGl0ZW1zOiBwb3N0VHlwZXMsIHNlbGVjdGVkOiBzZWxlY3RlZFBvc3RUeXBlIH0sXHJcbiAgICAgICAgICAgIGFzeW5jIChwb3N0UGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zLCB1cGRhdGVNYXR0ZXJEYXRhOiAobWF0dGVyOiBNYXR0ZXJEYXRhKSA9PiB2b2lkKSA9PiB7XHJcbiAgICAgICAgICAgICAgcG9zdFBhcmFtcyA9IHRoaXMucmVhZEZyb21Gcm9udE1hdHRlcih0aXRsZSwgbWF0dGVyRGF0YSwgcG9zdFBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgcG9zdFBhcmFtcy5jb250ZW50ID0gY29udGVudDtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgciA9IGF3YWl0IHRoaXMudHJ5VG9QdWJsaXNoKHtcclxuICAgICAgICAgICAgICAgICAgYXV0aCxcclxuICAgICAgICAgICAgICAgICAgcG9zdFBhcmFtcyxcclxuICAgICAgICAgICAgICAgICAgdXBkYXRlTWF0dGVyRGF0YVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoci5jb2RlID09PSBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLk9LKSB7XHJcbiAgICAgICAgICAgICAgICAgIHB1Ymxpc2hNb2RhbC5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgICByZXNvbHZlKHIpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gc2hvd0Vycm9yKGVycm9yKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgbWF0dGVyRGF0YSk7XHJcbiAgICAgICAgICBwdWJsaXNoTW9kYWwub3BlbigpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLnBsdWdpbi5pMThuLnQoXCJtZXNzYWdlX3B1Ymxpc2hGYWlsZWRcIikpO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xyXG4gICAgICAgIHJldHVybiBzaG93RXJyb3IoZXJyb3IpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldFRhZ3ModGFnczogc3RyaW5nW10sIGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxUZXJtW10+IHtcclxuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQodGFncy5tYXAobmFtZSA9PiB0aGlzLmdldFRhZyhuYW1lLCBjZXJ0aWZpY2F0ZSkpKTtcclxuICAgIGNvbnN0IHRlcm1zOiBUZXJtW10gPSBbXTtcclxuICAgIHJlc3VsdHNcclxuICAgICAgLmZvckVhY2gocmVzdWx0ID0+IHtcclxuICAgICAgICBpZiAoaXNQcm9taXNlRnVsZmlsbGVkUmVzdWx0PFRlcm0+KHJlc3VsdCkpIHtcclxuICAgICAgICAgIHRlcm1zLnB1c2gocmVzdWx0LnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIHRlcm1zO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWFkRnJvbUZyb250TWF0dGVyKFxyXG4gICAgbm90ZVRpdGxlOiBzdHJpbmcsXHJcbiAgICBtYXR0ZXJEYXRhOiBNYXR0ZXJEYXRhLFxyXG4gICAgcGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zXHJcbiAgKTogV29yZFByZXNzUG9zdFBhcmFtcyB7XHJcbiAgICBjb25zdCBwb3N0UGFyYW1zID0geyAuLi5wYXJhbXMgfTtcclxuICAgIHBvc3RQYXJhbXMudGl0bGUgPSBub3RlVGl0bGU7XHJcbiAgICBpZiAobWF0dGVyRGF0YS50aXRsZSkge1xyXG4gICAgICBwb3N0UGFyYW1zLnRpdGxlID0gbWF0dGVyRGF0YS50aXRsZTtcclxuICAgIH1cclxuICAgIGlmIChtYXR0ZXJEYXRhLnBvc3RJZCkge1xyXG4gICAgICBwb3N0UGFyYW1zLnBvc3RJZCA9IG1hdHRlckRhdGEucG9zdElkO1xyXG4gICAgfVxyXG4gICAgcG9zdFBhcmFtcy5wcm9maWxlTmFtZSA9IG1hdHRlckRhdGEucHJvZmlsZU5hbWUgPz8gV1BfREVGQVVMVF9QUk9GSUxFX05BTUU7XHJcbiAgICBpZiAobWF0dGVyRGF0YS5wb3N0VHlwZSkge1xyXG4gICAgICBwb3N0UGFyYW1zLnBvc3RUeXBlID0gbWF0dGVyRGF0YS5wb3N0VHlwZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIGlmIHRoZXJlIGlzIG5vIHBvc3QgdHlwZSBpbiBtYXR0ZXItZGF0YSwgYXNzaWduIGl0IGFzICdwb3N0J1xyXG4gICAgICBwb3N0UGFyYW1zLnBvc3RUeXBlID0gUG9zdFR5cGVDb25zdC5Qb3N0O1xyXG4gICAgfVxyXG4gICAgaWYgKHBvc3RQYXJhbXMucG9zdFR5cGUgPT09IFBvc3RUeXBlQ29uc3QuUG9zdCkge1xyXG4gICAgICAvLyBvbmx5ICdwb3N0JyBzdXBwb3J0cyBjYXRlZ29yaWVzIGFuZCB0YWdzXHJcbiAgICAgIGlmIChtYXR0ZXJEYXRhLmNhdGVnb3JpZXMpIHtcclxuICAgICAgICBwb3N0UGFyYW1zLmNhdGVnb3JpZXMgPSBtYXR0ZXJEYXRhLmNhdGVnb3JpZXMgYXMgbnVtYmVyW10gPz8gdGhpcy5wcm9maWxlLmxhc3RTZWxlY3RlZENhdGVnb3JpZXM7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1hdHRlckRhdGEudGFncykge1xyXG4gICAgICAgIHBvc3RQYXJhbXMudGFncyA9IG1hdHRlckRhdGEudGFncyBhcyBzdHJpbmdbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBvc3RQYXJhbXM7XHJcbiAgfVxyXG5cclxufVxyXG5cclxuaW50ZXJmYWNlIEltYWdlIHtcclxuICBvcmlnaW5hbDogc3RyaW5nO1xyXG4gIHNyYzogc3RyaW5nO1xyXG4gIGFsdFRleHQ/OiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgaGVpZ2h0Pzogc3RyaW5nO1xyXG4gIHNyY0lzVXJsOiBib29sZWFuO1xyXG4gIHN0YXJ0SW5kZXg6IG51bWJlcjtcclxuICBlbmRJbmRleDogbnVtYmVyO1xyXG4gIGZpbGU/OiBURmlsZTtcclxuICBjb250ZW50PzogQXJyYXlCdWZmZXI7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEltYWdlcyhjb250ZW50OiBzdHJpbmcpOiBJbWFnZVtdIHtcclxuICBjb25zdCBwYXRoczogSW1hZ2VbXSA9IFtdO1xyXG5cclxuICAvLyBmb3IgIVtBbHQgVGV4dF0oaW1hZ2UtdXJsKVxyXG4gIGxldCByZWdleCA9IC8oIVxcWyguKj8pKD86XFx8KFxcZCspKD86eChcXGQrKSk/KT9dXFwoKC4qPylcXCkpL2c7XHJcbiAgbGV0IG1hdGNoO1xyXG4gIHdoaWxlICgobWF0Y2ggPSByZWdleC5leGVjKGNvbnRlbnQpKSAhPT0gbnVsbCkge1xyXG4gICAgcGF0aHMucHVzaCh7XHJcbiAgICAgIHNyYzogbWF0Y2hbNV0sXHJcbiAgICAgIGFsdFRleHQ6IG1hdGNoWzJdLFxyXG4gICAgICB3aWR0aDogbWF0Y2hbM10sXHJcbiAgICAgIGhlaWdodDogbWF0Y2hbNF0sXHJcbiAgICAgIG9yaWdpbmFsOiBtYXRjaFsxXSxcclxuICAgICAgc3RhcnRJbmRleDogbWF0Y2guaW5kZXgsXHJcbiAgICAgIGVuZEluZGV4OiBtYXRjaC5pbmRleCArIG1hdGNoLmxlbmd0aCxcclxuICAgICAgc3JjSXNVcmw6IGlzVmFsaWRVcmwobWF0Y2hbNV0pLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBmb3IgIVtbaW1hZ2UtbmFtZV1dXHJcbiAgcmVnZXggPSAvKCFcXFtcXFsoLio/KSg/OlxcfChcXGQrKSg/OngoXFxkKykpPyk/XV0pL2c7XHJcbiAgd2hpbGUgKChtYXRjaCA9IHJlZ2V4LmV4ZWMoY29udGVudCkpICE9PSBudWxsKSB7XHJcbiAgICBwYXRocy5wdXNoKHtcclxuICAgICAgc3JjOiBtYXRjaFsyXSxcclxuICAgICAgb3JpZ2luYWw6IG1hdGNoWzFdLFxyXG4gICAgICB3aWR0aDogbWF0Y2hbM10sXHJcbiAgICAgIGhlaWdodDogbWF0Y2hbNF0sXHJcbiAgICAgIHN0YXJ0SW5kZXg6IG1hdGNoLmluZGV4LFxyXG4gICAgICBlbmRJbmRleDogbWF0Y2guaW5kZXggKyBtYXRjaC5sZW5ndGgsXHJcbiAgICAgIHNyY0lzVXJsOiBpc1ZhbGlkVXJsKG1hdGNoWzJdKSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHBhdGhzO1xyXG59XHJcbiIsICJpbXBvcnQgeyBTZXR0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7IFdvcmRQcmVzc1Bvc3RQYXJhbXMgfSBmcm9tICcuL3dwLWNsaWVudCc7XHJcbmltcG9ydCB7IENvbW1lbnRTdGF0dXMsIFBvc3RTdGF0dXMsIFBvc3RUeXBlLCBQb3N0VHlwZUNvbnN0LCBUZXJtIH0gZnJvbSAnLi93cC1hcGknO1xyXG5pbXBvcnQgeyB0b051bWJlciB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcbmltcG9ydCB7IE1hdHRlckRhdGEgfSBmcm9tICcuL3R5cGVzJztcclxuaW1wb3J0IHsgQ29uZmlybUNvZGUsIG9wZW5Db25maXJtTW9kYWwgfSBmcm9tICcuL2NvbmZpcm0tbW9kYWwnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGFsIH0gZnJvbSAnLi9hYnN0cmFjdC1tb2RhbCc7XHJcbmltcG9ydCBJTWFzaywgeyBEeW5hbWljTWFza1R5cGUsIElucHV0TWFzayB9IGZyb20gJ2ltYXNrJztcclxuaW1wb3J0IHsgU2FmZUFueSB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyBmb3JtYXQsIHBhcnNlIH0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBXb3JkUHJlc3MgcHVibGlzaCBtb2RhbC5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBXcFB1Ymxpc2hNb2RhbCBleHRlbmRzIEFic3RyYWN0TW9kYWwge1xyXG5cclxuICBwcml2YXRlIGRhdGVJbnB1dE1hc2s6IElucHV0TWFzazxEeW5hbWljTWFza1R5cGU+IHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGVnb3JpZXM6IHtcclxuICAgICAgaXRlbXM6IFRlcm1bXSxcclxuICAgICAgc2VsZWN0ZWQ6IG51bWJlcltdXHJcbiAgICB9LFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBwb3N0VHlwZXM6IHtcclxuICAgICAgaXRlbXM6IFBvc3RUeXBlW10sXHJcbiAgICAgIHNlbGVjdGVkOiBQb3N0VHlwZVxyXG4gICAgfSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb25TdWJtaXQ6IChwYXJhbXM6IFdvcmRQcmVzc1Bvc3RQYXJhbXMsIHVwZGF0ZU1hdHRlckRhdGE6IChtYXR0ZXI6IE1hdHRlckRhdGEpID0+IHZvaWQpID0+IHZvaWQsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1hdHRlckRhdGE6IE1hdHRlckRhdGEsXHJcbiAgKSB7XHJcbiAgICBzdXBlcihwbHVnaW4pO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgY29uc3QgcGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zID0ge1xyXG4gICAgICBzdGF0dXM6IHRoaXMucGx1Z2luLnNldHRpbmdzLmRlZmF1bHRQb3N0U3RhdHVzLFxyXG4gICAgICBjb21tZW50U3RhdHVzOiB0aGlzLnBsdWdpbi5zZXR0aW5ncy5kZWZhdWx0Q29tbWVudFN0YXR1cyxcclxuICAgICAgcG9zdFR5cGU6IHRoaXMucG9zdFR5cGVzLnNlbGVjdGVkLFxyXG4gICAgICBjYXRlZ29yaWVzOiB0aGlzLmNhdGVnb3JpZXMuc2VsZWN0ZWQsXHJcbiAgICAgIHRhZ3M6IFtdLFxyXG4gICAgICB0aXRsZTogJycsXHJcbiAgICAgIGNvbnRlbnQ6ICcnXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuZGlzcGxheShwYXJhbXMpO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG4gICAgY29udGVudEVsLmVtcHR5KCk7XHJcbiAgICBpZiAodGhpcy5kYXRlSW5wdXRNYXNrKSB7XHJcbiAgICAgIHRoaXMuZGF0ZUlucHV0TWFzay5kZXN0cm95KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGRpc3BsYXkocGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuXHJcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuXHJcbiAgICB0aGlzLmNyZWF0ZUhlYWRlcih0aGlzLnQoJ3B1Ymxpc2hNb2RhbF90aXRsZScpKTtcclxuXHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHRoaXMudCgncHVibGlzaE1vZGFsX3Bvc3RTdGF0dXMnKSlcclxuICAgICAgLmFkZERyb3Bkb3duKChkcm9wZG93bikgPT4ge1xyXG4gICAgICAgIGRyb3Bkb3duXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKFBvc3RTdGF0dXMuRHJhZnQsIHRoaXMudCgncHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNEcmFmdCcpKVxyXG4gICAgICAgICAgLmFkZE9wdGlvbihQb3N0U3RhdHVzLlB1Ymxpc2gsIHRoaXMudCgncHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNQdWJsaXNoJykpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKFBvc3RTdGF0dXMuUHJpdmF0ZSwgdGhpcy50KCdwdWJsaXNoTW9kYWxfcG9zdFN0YXR1c1ByaXZhdGUnKSlcclxuICAgICAgICAgIC5hZGRPcHRpb24oUG9zdFN0YXR1cy5GdXR1cmUsIHRoaXMudCgncHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNGdXR1cmUnKSlcclxuICAgICAgICAgIC5zZXRWYWx1ZShwYXJhbXMuc3RhdHVzKVxyXG4gICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICBwYXJhbXMuc3RhdHVzID0gdmFsdWUgYXMgUG9zdFN0YXR1cztcclxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5KHBhcmFtcyk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgaWYgKHBhcmFtcy5zdGF0dXMgPT09IFBvc3RTdGF0dXMuRnV0dXJlKSB7XHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcclxuICAgICAgICAuc2V0TmFtZSh0aGlzLnQoJ3B1Ymxpc2hNb2RhbF9wb3N0RGF0ZVRpbWUnKSlcclxuICAgICAgICAuc2V0RGVzYyh0aGlzLnQoJ3B1Ymxpc2hNb2RhbF9wb3N0RGF0ZVRpbWVEZXNjJykpXHJcbiAgICAgICAgLmFkZFRleHQodGV4dCA9PiB7XHJcbiAgICAgICAgICBjb25zdCBkYXRlRm9ybWF0ID0gJ3l5eXktTU0tZGQnO1xyXG4gICAgICAgICAgY29uc3QgZGF0ZVRpbWVGb3JtYXQgPSAneXl5eS1NTS1kZCBISDptbTpzcyc7XHJcbiAgICAgICAgICBjb25zdCBkYXRlQmxvY2tzID0ge1xyXG4gICAgICAgICAgICB5eXl5OiB7XHJcbiAgICAgICAgICAgICAgbWFzazogSU1hc2suTWFza2VkUmFuZ2UsXHJcbiAgICAgICAgICAgICAgZnJvbTogMTk3MCxcclxuICAgICAgICAgICAgICB0bzogOTk5OSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgTU06IHtcclxuICAgICAgICAgICAgICBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSxcclxuICAgICAgICAgICAgICBmcm9tOiAxLFxyXG4gICAgICAgICAgICAgIHRvOiAxMixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGQ6IHtcclxuICAgICAgICAgICAgICBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSxcclxuICAgICAgICAgICAgICBmcm9tOiAxLFxyXG4gICAgICAgICAgICAgIHRvOiAzMSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBjb25zdCBkYXRlTWFzayA9IHtcclxuICAgICAgICAgICAgbWFzazogRGF0ZSxcclxuICAgICAgICAgICAgbGF6eTogZmFsc2UsXHJcbiAgICAgICAgICAgIG92ZXJ3cml0ZTogdHJ1ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRlSW5wdXRNYXNrKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUlucHV0TWFzay5kZXN0cm95KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmRhdGVJbnB1dE1hc2sgPSBJTWFzayh0ZXh0LmlucHV0RWwsIFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIC4uLmRhdGVNYXNrLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm46IGRhdGVGb3JtYXQsXHJcbiAgICAgICAgICAgICAgYmxvY2tzOiBkYXRlQmxvY2tzLFxyXG4gICAgICAgICAgICAgIGZvcm1hdDogKGRhdGU6IFNhZmVBbnkpID0+IGZvcm1hdChkYXRlLCBkYXRlRm9ybWF0KSxcclxuICAgICAgICAgICAgICBwYXJzZTogKHN0cjogc3RyaW5nKSA9PiBwYXJzZShzdHIsIGRhdGVGb3JtYXQsIG5ldyBEYXRlKCkpXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAuLi5kYXRlTWFzayxcclxuICAgICAgICAgICAgICBwYXR0ZXJuOiBkYXRlVGltZUZvcm1hdCxcclxuICAgICAgICAgICAgICBibG9ja3M6IHtcclxuICAgICAgICAgICAgICAgIC4uLmRhdGVCbG9ja3MsXHJcbiAgICAgICAgICAgICAgICBISDoge1xyXG4gICAgICAgICAgICAgICAgICBtYXNrOiBJTWFzay5NYXNrZWRSYW5nZSxcclxuICAgICAgICAgICAgICAgICAgZnJvbTogMCxcclxuICAgICAgICAgICAgICAgICAgdG86IDIzLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIG1tOiB7XHJcbiAgICAgICAgICAgICAgICAgIG1hc2s6IElNYXNrLk1hc2tlZFJhbmdlLFxyXG4gICAgICAgICAgICAgICAgICBmcm9tOiAwLFxyXG4gICAgICAgICAgICAgICAgICB0bzogNTksXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgc3M6IHtcclxuICAgICAgICAgICAgICAgICAgbWFzazogSU1hc2suTWFza2VkUmFuZ2UsXHJcbiAgICAgICAgICAgICAgICAgIGZyb206IDAsXHJcbiAgICAgICAgICAgICAgICAgIHRvOiA1OSxcclxuICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBmb3JtYXQ6IChkYXRlOiBTYWZlQW55KSA9PiBmb3JtYXQoZGF0ZSwgZGF0ZVRpbWVGb3JtYXQpLFxyXG4gICAgICAgICAgICAgIHBhcnNlOiAoc3RyOiBzdHJpbmcpID0+IHBhcnNlKHN0ciwgZGF0ZVRpbWVGb3JtYXQsIG5ldyBEYXRlKCkpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIF0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuZGF0ZUlucHV0TWFzay5vbignYWNjZXB0JywgKCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5kYXRlSW5wdXRNYXNrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0ZUlucHV0TWFzay5tYXNrZWQuaXNDb21wbGV0ZSkge1xyXG4gICAgICAgICAgICAgICAgdGV4dC5pbnB1dEVsLnN0eWxlLmJvcmRlckNvbG9yID0gJyc7XHJcbiAgICAgICAgICAgICAgICBwYXJhbXMuZGF0ZXRpbWUgPSB0aGlzLmRhdGVJbnB1dE1hc2sudHlwZWRWYWx1ZTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGV4dC5pbnB1dEVsLnN0eWxlLmJvcmRlckNvbG9yID0gJ3JlZCc7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGRlbGV0ZSBwYXJhbXMuZGF0ZXRpbWU7XHJcbiAgICB9XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgICAuc2V0TmFtZSh0aGlzLnQoJ3B1Ymxpc2hNb2RhbF9jb21tZW50U3RhdHVzJykpXHJcbiAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICBkcm9wZG93blxyXG4gICAgICAgICAgLmFkZE9wdGlvbihDb21tZW50U3RhdHVzLk9wZW4sIHRoaXMudCgncHVibGlzaE1vZGFsX2NvbW1lbnRTdGF0dXNPcGVuJykpXHJcbiAgICAgICAgICAuYWRkT3B0aW9uKENvbW1lbnRTdGF0dXMuQ2xvc2VkLCB0aGlzLnQoJ3B1Ymxpc2hNb2RhbF9jb21tZW50U3RhdHVzQ2xvc2VkJykpXHJcbiAgICAgICAgICAuc2V0VmFsdWUocGFyYW1zLmNvbW1lbnRTdGF0dXMpXHJcbiAgICAgICAgICAub25DaGFuZ2UoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHBhcmFtcy5jb21tZW50U3RhdHVzID0gdmFsdWUgYXMgQ29tbWVudFN0YXR1cztcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoIXRoaXMubWF0dGVyRGF0YT8ucG9zdElkKSB7XHJcbiAgICAgIG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcclxuICAgICAgICAuc2V0TmFtZSh0aGlzLnQoJ3B1Ymxpc2hNb2RhbF9wb3N0VHlwZScpKVxyXG4gICAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICAgIHRoaXMucG9zdFR5cGVzLml0ZW1zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICBkcm9wZG93bi5hZGRPcHRpb24oaXQsIGl0KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgZHJvcGRvd25cclxuICAgICAgICAgICAgLnNldFZhbHVlKHBhcmFtcy5wb3N0VHlwZSlcclxuICAgICAgICAgICAgLm9uQ2hhbmdlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgICAgICAgIHBhcmFtcy5wb3N0VHlwZSA9IHZhbHVlIGFzIFBvc3RUeXBlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGlzcGxheShwYXJhbXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocGFyYW1zLnBvc3RUeXBlID09PSBQb3N0VHlwZUNvbnN0LlBvc3QpIHtcclxuICAgICAgaWYgKHRoaXMuY2F0ZWdvcmllcy5pdGVtcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgICAgICAgLnNldE5hbWUodGhpcy50KCdwdWJsaXNoTW9kYWxfY2F0ZWdvcnknKSlcclxuICAgICAgICAgIC5hZGREcm9wZG93bigoZHJvcGRvd24pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jYXRlZ29yaWVzLml0ZW1zLmZvckVhY2goaXQgPT4ge1xyXG4gICAgICAgICAgICAgIGRyb3Bkb3duLmFkZE9wdGlvbihpdC5pZCwgaXQubmFtZSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBkcm9wZG93blxyXG4gICAgICAgICAgICAgIC5zZXRWYWx1ZShTdHJpbmcocGFyYW1zLmNhdGVnb3JpZXNbMF0pKVxyXG4gICAgICAgICAgICAgIC5vbkNoYW5nZSgodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlZ29yaWVzID0gWyB0b051bWJlcih2YWx1ZSkgXTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5hZGRCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgIC5zZXRCdXR0b25UZXh0KHRoaXMudCgncHVibGlzaE1vZGFsX3B1Ymxpc2hCdXR0b25UZXh0JykpXHJcbiAgICAgICAgLnNldEN0YSgpXHJcbiAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMubWF0dGVyRGF0YS5wb3N0VHlwZVxyXG4gICAgICAgICAgICAmJiB0aGlzLm1hdHRlckRhdGEucG9zdFR5cGUgIT09IFBvc3RUeXBlQ29uc3QuUG9zdFxyXG4gICAgICAgICAgICAmJiAodGhpcy5tYXR0ZXJEYXRhLnRhZ3MgfHwgdGhpcy5tYXR0ZXJEYXRhLmNhdGVnb3JpZXMpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgb3BlbkNvbmZpcm1Nb2RhbCh7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy50KCdwdWJsaXNoTW9kYWxfd3JvbmdNYXR0ZXJEYXRhRm9yUGFnZScpXHJcbiAgICAgICAgICAgIH0sIHRoaXMucGx1Z2luKVxyXG4gICAgICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmNvZGUgPT09IENvbmZpcm1Db2RlLkNvbmZpcm0pIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdChwYXJhbXMsIGZtID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZm0uY2F0ZWdvcmllcztcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgZm0udGFncztcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uU3VibWl0KHBhcmFtcywgZm0gPT4ge30pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgTW9kYWwsIFNldHRpbmcgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlS2V5IH0gZnJvbSAnLi9pMThuJztcclxuXHJcblxyXG5leHBvcnQgZW51bSBDb25maXJtQ29kZSB7XHJcbiAgQ2FuY2VsLFxyXG4gIENvbmZpcm1cclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtTW9kYWxNZXNzYWdlcyB7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIGNhbmNlbFRleHQ/OiBzdHJpbmc7XHJcbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBvcGVuQ29uZmlybU1vZGFsKFxyXG4gIG1lc3NhZ2VzOiBDb25maXJtTW9kYWxNZXNzYWdlcyxcclxuICBwbHVnaW46IFdvcmRwcmVzc1BsdWdpblxyXG4pOiBQcm9taXNlPHsgY29kZTogQ29uZmlybUNvZGUgfT4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBDb25maXJtTW9kYWwoXHJcbiAgICAgIG1lc3NhZ2VzLFxyXG4gICAgICBwbHVnaW4sXHJcbiAgICAgIChjb2RlLCBtb2RhbCkgPT4ge1xyXG4gICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgY29kZVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1vZGFsLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgbW9kYWwub3BlbigpO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogQ29uZmlybSBtb2RhbC5cclxuICovXHJcbmNsYXNzIENvbmZpcm1Nb2RhbCBleHRlbmRzIE1vZGFsIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG1lc3NhZ2VzOiBDb25maXJtTW9kYWxNZXNzYWdlcyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uQWN0aW9uOiAoY29kZTogQ29uZmlybUNvZGUsIG1vZGFsOiBNb2RhbCkgPT4gdm9pZFxyXG4gICkge1xyXG4gICAgc3VwZXIocGx1Z2luLmFwcCk7XHJcbiAgfVxyXG5cclxuICBvbk9wZW4oKSB7XHJcbiAgICBjb25zdCB0ID0gKGtleTogVHJhbnNsYXRlS2V5LCB2YXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLnBsdWdpbi5pMThuLnQoa2V5LCB2YXJzKTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcblxyXG4gICAgY29udGVudEVsLmNyZWF0ZUVsKCdoMScsIHsgdGV4dDogdCgnY29uZmlybU1vZGFsX3RpdGxlJykgfSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgICAuc2V0TmFtZSh0aGlzLm1lc3NhZ2VzLm1lc3NhZ2UpO1xyXG5cclxuICAgIG5ldyBTZXR0aW5nKGNvbnRlbnRFbClcclxuICAgICAgLmFkZEJ1dHRvbihidXR0b24gPT4gYnV0dG9uXHJcbiAgICAgICAgLnNldEJ1dHRvblRleHQodGhpcy5tZXNzYWdlcy5jYW5jZWxUZXh0ID8/IHQoJ2NvbmZpcm1Nb2RhbF9jYW5jZWwnKSlcclxuICAgICAgICAub25DbGljaygoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uQWN0aW9uKENvbmZpcm1Db2RlLkNhbmNlbCwgdGhpcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICAuYWRkQnV0dG9uKGJ1dHRvbiA9PiBidXR0b25cclxuICAgICAgICAuc2V0QnV0dG9uVGV4dCh0aGlzLm1lc3NhZ2VzLmNvbmZpcm1UZXh0ID8/IHQoJ2NvbmZpcm1Nb2RhbF9jb25maXJtJykpXHJcbiAgICAgICAgLnNldEN0YSgpXHJcbiAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vbkFjdGlvbihDb25maXJtQ29kZS5Db25maXJtLCB0aGlzKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgb25DbG9zZSgpIHtcclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG4gICAgY29udGVudEVsLmVtcHR5KCk7XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgTW9kYWwsIFBsYXRmb3JtIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUtleSB9IGZyb20gJy4vaTE4bic7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RNb2RhbCBleHRlbmRzIE1vZGFsIHtcclxuXHJcbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHBsdWdpbjogV29yZHByZXNzUGx1Z2luXHJcbiAgKSB7XHJcbiAgICBzdXBlcihwbHVnaW4uYXBwKTtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB0KGtleTogVHJhbnNsYXRlS2V5LCB2YXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5wbHVnaW4uaTE4bi50KGtleSwgdmFycyk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgY3JlYXRlSGVhZGVyKHRpdGxlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnN0IGhlYWRlckRpdiA9IGNvbnRlbnRFbC5jcmVhdGVEaXYoKTtcclxuICAgIGhlYWRlckRpdi5hZGRDbGFzcygnbW9kYWwtaGVhZGVyJyk7XHJcbiAgICBoZWFkZXJEaXYuY3JlYXRlRWwoJ2gxJywgeyB0ZXh0OiB0aXRsZSB9KTtcclxuICAgIGlmIChQbGF0Zm9ybS5pc01vYmlsZSkge1xyXG4gICAgICBjb25zdCBiYWNrQnV0dG9uID0gaGVhZGVyRGl2LmNyZWF0ZUVsKCdidXR0b24nLCB7IHRleHQ6IHRoaXMudCgnY29tbW9uX2JhY2snKSB9KTtcclxuICAgICAgYmFja0J1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuIiwgIi8qKiBDaGVja3MgaWYgdmFsdWUgaXMgc3RyaW5nICovXG5mdW5jdGlvbiBpc1N0cmluZyhzdHIpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnIHx8IHN0ciBpbnN0YW5jZW9mIFN0cmluZztcbn1cblxuLyoqIENoZWNrcyBpZiB2YWx1ZSBpcyBvYmplY3QgKi9cbmZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICB2YXIgX29iaiRjb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPSBudWxsICYmIChvYmogPT0gbnVsbCB8fCAoX29iaiRjb25zdHJ1Y3RvciA9IG9iai5jb25zdHJ1Y3RvcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9vYmokY29uc3RydWN0b3IubmFtZSkgPT09ICdPYmplY3QnO1xufVxuZnVuY3Rpb24gcGljayhvYmosIGtleXMpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoa2V5cykpIHJldHVybiBwaWNrKG9iaiwgKF8sIGspID0+IGtleXMuaW5jbHVkZXMoaykpO1xuICByZXR1cm4gT2JqZWN0LmVudHJpZXMob2JqKS5yZWR1Y2UoKGFjYywgX3JlZikgPT4ge1xuICAgIGxldCBbaywgdl0gPSBfcmVmO1xuICAgIGlmIChrZXlzKHYsIGspKSBhY2Nba10gPSB2O1xuICAgIHJldHVybiBhY2M7XG4gIH0sIHt9KTtcbn1cblxuLyoqIERpcmVjdGlvbiAqL1xuY29uc3QgRElSRUNUSU9OID0ge1xuICBOT05FOiAnTk9ORScsXG4gIExFRlQ6ICdMRUZUJyxcbiAgRk9SQ0VfTEVGVDogJ0ZPUkNFX0xFRlQnLFxuICBSSUdIVDogJ1JJR0hUJyxcbiAgRk9SQ0VfUklHSFQ6ICdGT1JDRV9SSUdIVCdcbn07XG5cbi8qKiBEaXJlY3Rpb24gKi9cblxuZnVuY3Rpb24gZm9yY2VEaXJlY3Rpb24oZGlyZWN0aW9uKSB7XG4gIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgY2FzZSBESVJFQ1RJT04uTEVGVDpcbiAgICAgIHJldHVybiBESVJFQ1RJT04uRk9SQ0VfTEVGVDtcbiAgICBjYXNlIERJUkVDVElPTi5SSUdIVDpcbiAgICAgIHJldHVybiBESVJFQ1RJT04uRk9SQ0VfUklHSFQ7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBkaXJlY3Rpb247XG4gIH1cbn1cblxuLyoqIEVzY2FwZXMgcmVndWxhciBleHByZXNzaW9uIGNvbnRyb2wgY2hhcnMgKi9cbmZ1bmN0aW9uIGVzY2FwZVJlZ0V4cChzdHIpIHtcbiAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oWy4qKz9ePSE6JHt9KCl8W1xcXS9cXFxcXSkvZywgJ1xcXFwkMScpO1xufVxuXG4vLyBjbG9uZWQgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZXBvYmVyZXpraW4vZmFzdC1kZWVwLWVxdWFsIHdpdGggc21hbGwgY2hhbmdlc1xuZnVuY3Rpb24gb2JqZWN0SW5jbHVkZXMoYiwgYSkge1xuICBpZiAoYSA9PT0gYikgcmV0dXJuIHRydWU7XG4gIGNvbnN0IGFyckEgPSBBcnJheS5pc0FycmF5KGEpLFxuICAgIGFyckIgPSBBcnJheS5pc0FycmF5KGIpO1xuICBsZXQgaTtcbiAgaWYgKGFyckEgJiYgYXJyQikge1xuICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAoaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSBpZiAoIW9iamVjdEluY2x1ZGVzKGFbaV0sIGJbaV0pKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGFyckEgIT0gYXJyQikgcmV0dXJuIGZhbHNlO1xuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgYiA9PT0gJ29iamVjdCcpIHtcbiAgICBjb25zdCBkYXRlQSA9IGEgaW5zdGFuY2VvZiBEYXRlLFxuICAgICAgZGF0ZUIgPSBiIGluc3RhbmNlb2YgRGF0ZTtcbiAgICBpZiAoZGF0ZUEgJiYgZGF0ZUIpIHJldHVybiBhLmdldFRpbWUoKSA9PSBiLmdldFRpbWUoKTtcbiAgICBpZiAoZGF0ZUEgIT0gZGF0ZUIpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCByZWdleHBBID0gYSBpbnN0YW5jZW9mIFJlZ0V4cCxcbiAgICAgIHJlZ2V4cEIgPSBiIGluc3RhbmNlb2YgUmVnRXhwO1xuICAgIGlmIChyZWdleHBBICYmIHJlZ2V4cEIpIHJldHVybiBhLnRvU3RyaW5nKCkgPT0gYi50b1N0cmluZygpO1xuICAgIGlmIChyZWdleHBBICE9IHJlZ2V4cEIpIHJldHVybiBmYWxzZTtcbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoYSk7XG4gICAgLy8gaWYgKGtleXMubGVuZ3RoICE9PSBPYmplY3Qua2V5cyhiKS5sZW5ndGgpIHJldHVybiBmYWxzZTtcblxuICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkgcmV0dXJuIGZhbHNlO1xuICAgIGZvciAoaSA9IDA7IGkgPCBrZXlzLmxlbmd0aDsgaSsrKSBpZiAoIW9iamVjdEluY2x1ZGVzKGJba2V5c1tpXV0sIGFba2V5c1tpXV0pKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBiID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGEudG9TdHJpbmcoKSA9PT0gYi50b1N0cmluZygpO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqIFNlbGVjdGlvbiByYW5nZSAqL1xuXG5leHBvcnQgeyBESVJFQ1RJT04sIGVzY2FwZVJlZ0V4cCwgZm9yY2VEaXJlY3Rpb24sIGlzT2JqZWN0LCBpc1N0cmluZywgb2JqZWN0SW5jbHVkZXMsIHBpY2sgfTtcbiIsICJpbXBvcnQgeyBESVJFQ1RJT04gfSBmcm9tICcuL3V0aWxzLmpzJztcblxuLyoqIFByb3ZpZGVzIGRldGFpbHMgb2YgY2hhbmdpbmcgaW5wdXQgKi9cbmNsYXNzIEFjdGlvbkRldGFpbHMge1xuICAvKiogQ3VycmVudCBpbnB1dCB2YWx1ZSAqL1xuXG4gIC8qKiBDdXJyZW50IGN1cnNvciBwb3NpdGlvbiAqL1xuXG4gIC8qKiBPbGQgaW5wdXQgdmFsdWUgKi9cblxuICAvKiogT2xkIHNlbGVjdGlvbiAqL1xuXG4gIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG9wdHMpO1xuXG4gICAgLy8gZG91YmxlIGNoZWNrIGlmIGxlZnQgcGFydCB3YXMgY2hhbmdlZCAoYXV0b2ZpbGxpbmcsIG90aGVyIG5vbi1zdGFuZGFyZCBpbnB1dCB0cmlnZ2VycylcbiAgICB3aGlsZSAodGhpcy52YWx1ZS5zbGljZSgwLCB0aGlzLnN0YXJ0Q2hhbmdlUG9zKSAhPT0gdGhpcy5vbGRWYWx1ZS5zbGljZSgwLCB0aGlzLnN0YXJ0Q2hhbmdlUG9zKSkge1xuICAgICAgLS10aGlzLm9sZFNlbGVjdGlvbi5zdGFydDtcbiAgICB9XG4gICAgaWYgKHRoaXMuaW5zZXJ0ZWRDb3VudCkge1xuICAgICAgLy8gZG91YmxlIGNoZWNrIHJpZ2h0IHBhcnRcbiAgICAgIHdoaWxlICh0aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yUG9zKSAhPT0gdGhpcy5vbGRWYWx1ZS5zbGljZSh0aGlzLm9sZFNlbGVjdGlvbi5lbmQpKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlLmxlbmd0aCAtIHRoaXMuY3Vyc29yUG9zIDwgdGhpcy5vbGRWYWx1ZS5sZW5ndGggLSB0aGlzLm9sZFNlbGVjdGlvbi5lbmQpICsrdGhpcy5vbGRTZWxlY3Rpb24uZW5kO2Vsc2UgKyt0aGlzLmN1cnNvclBvcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKiogU3RhcnQgY2hhbmdpbmcgcG9zaXRpb24gKi9cbiAgZ2V0IHN0YXJ0Q2hhbmdlUG9zKCkge1xuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmN1cnNvclBvcywgdGhpcy5vbGRTZWxlY3Rpb24uc3RhcnQpO1xuICB9XG5cbiAgLyoqIEluc2VydGVkIHN5bWJvbHMgY291bnQgKi9cbiAgZ2V0IGluc2VydGVkQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3Vyc29yUG9zIC0gdGhpcy5zdGFydENoYW5nZVBvcztcbiAgfVxuXG4gIC8qKiBJbnNlcnRlZCBzeW1ib2xzICovXG4gIGdldCBpbnNlcnRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHIodGhpcy5zdGFydENoYW5nZVBvcywgdGhpcy5pbnNlcnRlZENvdW50KTtcbiAgfVxuXG4gIC8qKiBSZW1vdmVkIHN5bWJvbHMgY291bnQgKi9cbiAgZ2V0IHJlbW92ZWRDb3VudCgpIHtcbiAgICAvLyBNYXRoLm1heCBmb3Igb3Bwb3NpdGUgb3BlcmF0aW9uXG4gICAgcmV0dXJuIE1hdGgubWF4KHRoaXMub2xkU2VsZWN0aW9uLmVuZCAtIHRoaXMuc3RhcnRDaGFuZ2VQb3MgfHxcbiAgICAvLyBmb3IgRGVsZXRlXG4gICAgdGhpcy5vbGRWYWx1ZS5sZW5ndGggLSB0aGlzLnZhbHVlLmxlbmd0aCwgMCk7XG4gIH1cblxuICAvKiogUmVtb3ZlZCBzeW1ib2xzICovXG4gIGdldCByZW1vdmVkKCkge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlLnN1YnN0cih0aGlzLnN0YXJ0Q2hhbmdlUG9zLCB0aGlzLnJlbW92ZWRDb3VudCk7XG4gIH1cblxuICAvKiogVW5jaGFuZ2VkIGhlYWQgc3ltYm9scyAqL1xuICBnZXQgaGVhZCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHJpbmcoMCwgdGhpcy5zdGFydENoYW5nZVBvcyk7XG4gIH1cblxuICAvKiogVW5jaGFuZ2VkIHRhaWwgc3ltYm9scyAqL1xuICBnZXQgdGFpbCgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZS5zdWJzdHJpbmcodGhpcy5zdGFydENoYW5nZVBvcyArIHRoaXMuaW5zZXJ0ZWRDb3VudCk7XG4gIH1cblxuICAvKiogUmVtb3ZlIGRpcmVjdGlvbiAqL1xuICBnZXQgcmVtb3ZlRGlyZWN0aW9uKCkge1xuICAgIGlmICghdGhpcy5yZW1vdmVkQ291bnQgfHwgdGhpcy5pbnNlcnRlZENvdW50KSByZXR1cm4gRElSRUNUSU9OLk5PTkU7XG5cbiAgICAvLyBhbGlnbiByaWdodCBpZiBkZWxldGUgYXQgcmlnaHRcbiAgICByZXR1cm4gKHRoaXMub2xkU2VsZWN0aW9uLmVuZCA9PT0gdGhpcy5jdXJzb3JQb3MgfHwgdGhpcy5vbGRTZWxlY3Rpb24uc3RhcnQgPT09IHRoaXMuY3Vyc29yUG9zKSAmJlxuICAgIC8vIGlmIG5vdCByYW5nZSByZW1vdmVkIChldmVudCB3aXRoIGJhY2tzcGFjZSlcbiAgICB0aGlzLm9sZFNlbGVjdGlvbi5lbmQgPT09IHRoaXMub2xkU2VsZWN0aW9uLnN0YXJ0ID8gRElSRUNUSU9OLlJJR0hUIDogRElSRUNUSU9OLkxFRlQ7XG4gIH1cbn1cblxuZXhwb3J0IHsgQWN0aW9uRGV0YWlscyBhcyBkZWZhdWx0IH07XG4iLCAiLyoqIEFwcGxpZXMgbWFzayBvbiBlbGVtZW50ICovXG5mdW5jdGlvbiBJTWFzayhlbCwgb3B0cykge1xuICAvLyBjdXJyZW50bHkgYXZhaWxhYmxlIG9ubHkgZm9yIGlucHV0LWxpa2UgZWxlbWVudHNcbiAgcmV0dXJuIG5ldyBJTWFzay5JbnB1dE1hc2soZWwsIG9wdHMpO1xufVxuXG5leHBvcnQgeyBJTWFzayBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IHsgaXNTdHJpbmcsIGlzT2JqZWN0LCBwaWNrIH0gZnJvbSAnLi4vY29yZS91dGlscy5qcyc7XG5pbXBvcnQgSU1hc2sgZnJvbSAnLi4vY29yZS9ob2xkZXIuanMnO1xuXG4vLyBUT0RPIGNhbid0IHVzZSBvdmVybG9hZHMgaGVyZSBiZWNhdXNlIG9mIGh0dHBzOi8vZ2l0aHViLmNvbS9taWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNTA3NTRcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiBzdHJpbmcpOiB0eXBlb2YgTWFza2VkUGF0dGVybjtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiBEYXRlQ29uc3RydWN0b3IpOiB0eXBlb2YgTWFza2VkRGF0ZTtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiBOdW1iZXJDb25zdHJ1Y3Rvcik6IHR5cGVvZiBNYXNrZWROdW1iZXI7XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogQXJyYXk8YW55PiB8IEFycmF5Q29uc3RydWN0b3IpOiB0eXBlb2YgTWFza2VkRHluYW1pYztcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiBNYXNrZWREYXRlKTogdHlwZW9mIE1hc2tlZERhdGU7XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogTWFza2VkTnVtYmVyKTogdHlwZW9mIE1hc2tlZE51bWJlcjtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiBNYXNrZWRFbnVtKTogdHlwZW9mIE1hc2tlZEVudW07XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogTWFza2VkUmFuZ2UpOiB0eXBlb2YgTWFza2VkUmFuZ2U7XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogTWFza2VkUmVnRXhwKTogdHlwZW9mIE1hc2tlZFJlZ0V4cDtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiBNYXNrZWRGdW5jdGlvbik6IHR5cGVvZiBNYXNrZWRGdW5jdGlvbjtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiBNYXNrZWRQYXR0ZXJuKTogdHlwZW9mIE1hc2tlZFBhdHRlcm47XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogTWFza2VkRHluYW1pYyk6IHR5cGVvZiBNYXNrZWREeW5hbWljO1xuLy8gZXhwb3J0IGZ1bmN0aW9uIG1hc2tlZENsYXNzKG1hc2s6IE1hc2tlZCk6IHR5cGVvZiBNYXNrZWQ7XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogdHlwZW9mIE1hc2tlZCk6IHR5cGVvZiBNYXNrZWQ7XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogdHlwZW9mIE1hc2tlZERhdGUpOiB0eXBlb2YgTWFza2VkRGF0ZTtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiB0eXBlb2YgTWFza2VkTnVtYmVyKTogdHlwZW9mIE1hc2tlZE51bWJlcjtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiB0eXBlb2YgTWFza2VkRW51bSk6IHR5cGVvZiBNYXNrZWRFbnVtO1xuLy8gZXhwb3J0IGZ1bmN0aW9uIG1hc2tlZENsYXNzKG1hc2s6IHR5cGVvZiBNYXNrZWRSYW5nZSk6IHR5cGVvZiBNYXNrZWRSYW5nZTtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiB0eXBlb2YgTWFza2VkUmVnRXhwKTogdHlwZW9mIE1hc2tlZFJlZ0V4cDtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiB0eXBlb2YgTWFza2VkRnVuY3Rpb24pOiB0eXBlb2YgTWFza2VkRnVuY3Rpb247XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogdHlwZW9mIE1hc2tlZFBhdHRlcm4pOiB0eXBlb2YgTWFza2VkUGF0dGVybjtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiB0eXBlb2YgTWFza2VkRHluYW1pYyk6IHR5cGVvZiBNYXNrZWREeW5hbWljO1xuLy8gZXhwb3J0IGZ1bmN0aW9uIG1hc2tlZENsYXNzPE1hc2sgZXh0ZW5kcyB0eXBlb2YgTWFza2VkPiAobWFzazogTWFzayk6IE1hc2s7XG4vLyBleHBvcnQgZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzazogUmVnRXhwKTogdHlwZW9mIE1hc2tlZFJlZ0V4cDtcbi8vIGV4cG9ydCBmdW5jdGlvbiBtYXNrZWRDbGFzcyhtYXNrOiAodmFsdWU6IHN0cmluZywgLi4uYXJnczogYW55W10pID0+IGJvb2xlYW4pOiB0eXBlb2YgTWFza2VkRnVuY3Rpb247XG5cbi8qKiBHZXQgTWFza2VkIGNsYXNzIGJ5IG1hc2sgdHlwZSAqL1xuZnVuY3Rpb24gbWFza2VkQ2xhc3MobWFzaykgLyogVE9ETyAqL3tcbiAgaWYgKG1hc2sgPT0gbnVsbCkgdGhyb3cgbmV3IEVycm9yKCdtYXNrIHByb3BlcnR5IHNob3VsZCBiZSBkZWZpbmVkJyk7XG4gIGlmIChtYXNrIGluc3RhbmNlb2YgUmVnRXhwKSByZXR1cm4gSU1hc2suTWFza2VkUmVnRXhwO1xuICBpZiAoaXNTdHJpbmcobWFzaykpIHJldHVybiBJTWFzay5NYXNrZWRQYXR0ZXJuO1xuICBpZiAobWFzayA9PT0gRGF0ZSkgcmV0dXJuIElNYXNrLk1hc2tlZERhdGU7XG4gIGlmIChtYXNrID09PSBOdW1iZXIpIHJldHVybiBJTWFzay5NYXNrZWROdW1iZXI7XG4gIGlmIChBcnJheS5pc0FycmF5KG1hc2spIHx8IG1hc2sgPT09IEFycmF5KSByZXR1cm4gSU1hc2suTWFza2VkRHluYW1pYztcbiAgaWYgKElNYXNrLk1hc2tlZCAmJiBtYXNrLnByb3RvdHlwZSBpbnN0YW5jZW9mIElNYXNrLk1hc2tlZCkgcmV0dXJuIG1hc2s7XG4gIGlmIChJTWFzay5NYXNrZWQgJiYgbWFzayBpbnN0YW5jZW9mIElNYXNrLk1hc2tlZCkgcmV0dXJuIG1hc2suY29uc3RydWN0b3I7XG4gIGlmIChtYXNrIGluc3RhbmNlb2YgRnVuY3Rpb24pIHJldHVybiBJTWFzay5NYXNrZWRGdW5jdGlvbjtcbiAgY29uc29sZS53YXJuKCdNYXNrIG5vdCBmb3VuZCBmb3IgbWFzaycsIG1hc2spOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgcmV0dXJuIElNYXNrLk1hc2tlZDtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZU9wdHMob3B0cykge1xuICBpZiAoIW9wdHMpIHRocm93IG5ldyBFcnJvcignT3B0aW9ucyBpbiBub3QgZGVmaW5lZCcpO1xuICBpZiAoSU1hc2suTWFza2VkKSB7XG4gICAgaWYgKG9wdHMucHJvdG90eXBlIGluc3RhbmNlb2YgSU1hc2suTWFza2VkKSByZXR1cm4ge1xuICAgICAgbWFzazogb3B0c1xuICAgIH07XG5cbiAgICAvKlxuICAgICAgaGFuZGxlIGNhc2VzIGxpa2U6XG4gICAgICAxKSBvcHRzID0gTWFza2VkXG4gICAgICAyKSBvcHRzID0geyBtYXNrOiBNYXNrZWQsIC4uLmluc3RhbmNlT3B0cyB9XG4gICAgKi9cbiAgICBjb25zdCB7XG4gICAgICBtYXNrID0gdW5kZWZpbmVkLFxuICAgICAgLi4uaW5zdGFuY2VPcHRzXG4gICAgfSA9IG9wdHMgaW5zdGFuY2VvZiBJTWFzay5NYXNrZWQgPyB7XG4gICAgICBtYXNrOiBvcHRzXG4gICAgfSA6IGlzT2JqZWN0KG9wdHMpICYmIG9wdHMubWFzayBpbnN0YW5jZW9mIElNYXNrLk1hc2tlZCA/IG9wdHMgOiB7fTtcbiAgICBpZiAobWFzaykge1xuICAgICAgY29uc3QgX21hc2sgPSBtYXNrLm1hc2s7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5waWNrKG1hc2ssIChfLCBrKSA9PiAhay5zdGFydHNXaXRoKCdfJykpLFxuICAgICAgICBtYXNrOiBtYXNrLmNvbnN0cnVjdG9yLFxuICAgICAgICBfbWFzayxcbiAgICAgICAgLi4uaW5zdGFuY2VPcHRzXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBpZiAoIWlzT2JqZWN0KG9wdHMpKSByZXR1cm4ge1xuICAgIG1hc2s6IG9wdHNcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICAuLi5vcHRzXG4gIH07XG59XG5cbi8vIFRPRE8gY2FuJ3QgdXNlIG92ZXJsb2FkcyBoZXJlIGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL21pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy81MDc1NFxuXG4vLyBGcm9tIG1hc2tlZFxuLy8gZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTWFzazxPcHRzIGV4dGVuZHMgTWFza2VkLCBSZXR1cm5NYXNrZWQ9T3B0cz4gKG9wdHM6IE9wdHMpOiBSZXR1cm5NYXNrZWQ7XG4vLyAvLyBGcm9tIG1hc2tlZCBjbGFzc1xuLy8gZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTWFzazxPcHRzIGV4dGVuZHMgTWFza2VkT3B0aW9uczx0eXBlb2YgTWFza2VkPiwgUmV0dXJuTWFza2VkIGV4dGVuZHMgTWFza2VkPUluc3RhbmNlVHlwZTxPcHRzWydtYXNrJ10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1hc2s8T3B0cyBleHRlbmRzIE1hc2tlZE9wdGlvbnM8dHlwZW9mIE1hc2tlZERhdGU+LCBSZXR1cm5NYXNrZWQgZXh0ZW5kcyBNYXNrZWREYXRlPU1hc2tlZERhdGU8T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1hc2s8T3B0cyBleHRlbmRzIE1hc2tlZE9wdGlvbnM8dHlwZW9mIE1hc2tlZE51bWJlcj4sIFJldHVybk1hc2tlZCBleHRlbmRzIE1hc2tlZE51bWJlcj1NYXNrZWROdW1iZXI8T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1hc2s8T3B0cyBleHRlbmRzIE1hc2tlZE9wdGlvbnM8dHlwZW9mIE1hc2tlZEVudW0+LCBSZXR1cm5NYXNrZWQgZXh0ZW5kcyBNYXNrZWRFbnVtPU1hc2tlZEVudW08T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1hc2s8T3B0cyBleHRlbmRzIE1hc2tlZE9wdGlvbnM8dHlwZW9mIE1hc2tlZFJhbmdlPiwgUmV0dXJuTWFza2VkIGV4dGVuZHMgTWFza2VkUmFuZ2U9TWFza2VkUmFuZ2U8T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1hc2s8T3B0cyBleHRlbmRzIE1hc2tlZE9wdGlvbnM8dHlwZW9mIE1hc2tlZFJlZ0V4cD4sIFJldHVybk1hc2tlZCBleHRlbmRzIE1hc2tlZFJlZ0V4cD1NYXNrZWRSZWdFeHA8T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1hc2s8T3B0cyBleHRlbmRzIE1hc2tlZE9wdGlvbnM8dHlwZW9mIE1hc2tlZEZ1bmN0aW9uPiwgUmV0dXJuTWFza2VkIGV4dGVuZHMgTWFza2VkRnVuY3Rpb249TWFza2VkRnVuY3Rpb248T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1hc2s8T3B0cyBleHRlbmRzIE1hc2tlZE9wdGlvbnM8dHlwZW9mIE1hc2tlZFBhdHRlcm4+LCBSZXR1cm5NYXNrZWQgZXh0ZW5kcyBNYXNrZWRQYXR0ZXJuPU1hc2tlZFBhdHRlcm48T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZU1hc2s8T3B0cyBleHRlbmRzIE1hc2tlZE9wdGlvbnM8dHlwZW9mIE1hc2tlZER5bmFtaWM+LCBSZXR1cm5NYXNrZWQgZXh0ZW5kcyBNYXNrZWREeW5hbWljPU1hc2tlZER5bmFtaWM8T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcbi8vIC8vIEZyb20gbWFzayBvcHRzXG4vLyBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVNYXNrPE9wdHMgZXh0ZW5kcyBNYXNrZWRPcHRpb25zPE1hc2tlZD4sIFJldHVybk1hc2tlZD1PcHRzIGV4dGVuZHMgTWFza2VkT3B0aW9uczxpbmZlciBNPiA/IE0gOiBuZXZlcj4gKG9wdHM6IE9wdHMpOiBSZXR1cm5NYXNrZWQ7XG4vLyBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVNYXNrPE9wdHMgZXh0ZW5kcyBNYXNrZWROdW1iZXJPcHRpb25zLCBSZXR1cm5NYXNrZWQgZXh0ZW5kcyBNYXNrZWROdW1iZXI9TWFza2VkTnVtYmVyPE9wdHNbJ3BhcmVudCddPj4gKG9wdHM6IE9wdHMpOiBSZXR1cm5NYXNrZWQ7XG4vLyBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVNYXNrPE9wdHMgZXh0ZW5kcyBNYXNrZWREYXRlRmFjdG9yeU9wdGlvbnMsIFJldHVybk1hc2tlZCBleHRlbmRzIE1hc2tlZERhdGU9TWFza2VkRGF0ZTxPcHRzWydwYXJlbnQnXT4+IChvcHRzOiBPcHRzKTogUmV0dXJuTWFza2VkO1xuLy8gZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTWFzazxPcHRzIGV4dGVuZHMgTWFza2VkRW51bU9wdGlvbnMsIFJldHVybk1hc2tlZCBleHRlbmRzIE1hc2tlZEVudW09TWFza2VkRW51bTxPcHRzWydwYXJlbnQnXT4+IChvcHRzOiBPcHRzKTogUmV0dXJuTWFza2VkO1xuLy8gZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTWFzazxPcHRzIGV4dGVuZHMgTWFza2VkUmFuZ2VPcHRpb25zLCBSZXR1cm5NYXNrZWQgZXh0ZW5kcyBNYXNrZWRSYW5nZT1NYXNrZWRSYW5nZTxPcHRzWydwYXJlbnQnXT4+IChvcHRzOiBPcHRzKTogUmV0dXJuTWFza2VkO1xuLy8gZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTWFzazxPcHRzIGV4dGVuZHMgTWFza2VkUGF0dGVybk9wdGlvbnMsIFJldHVybk1hc2tlZCBleHRlbmRzIE1hc2tlZFBhdHRlcm49TWFza2VkUGF0dGVybjxPcHRzWydwYXJlbnQnXT4+IChvcHRzOiBPcHRzKTogUmV0dXJuTWFza2VkO1xuLy8gZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTWFzazxPcHRzIGV4dGVuZHMgTWFza2VkRHluYW1pY09wdGlvbnMsIFJldHVybk1hc2tlZCBleHRlbmRzIE1hc2tlZER5bmFtaWM9TWFza2VkRHluYW1pYzxPcHRzWydwYXJlbnQnXT4+IChvcHRzOiBPcHRzKTogUmV0dXJuTWFza2VkO1xuLy8gZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlTWFzazxPcHRzIGV4dGVuZHMgTWFza2VkT3B0aW9uczxSZWdFeHA+LCBSZXR1cm5NYXNrZWQgZXh0ZW5kcyBNYXNrZWRSZWdFeHA9TWFza2VkUmVnRXhwPE9wdHNbJ3BhcmVudCddPj4gKG9wdHM6IE9wdHMpOiBSZXR1cm5NYXNrZWQ7XG4vLyBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVNYXNrPE9wdHMgZXh0ZW5kcyBNYXNrZWRPcHRpb25zPEZ1bmN0aW9uPiwgUmV0dXJuTWFza2VkIGV4dGVuZHMgTWFza2VkRnVuY3Rpb249TWFza2VkRnVuY3Rpb248T3B0c1sncGFyZW50J10+PiAob3B0czogT3B0cyk6IFJldHVybk1hc2tlZDtcblxuLyoqIENyZWF0ZXMgbmV3IHtAbGluayBNYXNrZWR9IGRlcGVuZGluZyBvbiBtYXNrIHR5cGUgKi9cbmZ1bmN0aW9uIGNyZWF0ZU1hc2sob3B0cykge1xuICBpZiAoSU1hc2suTWFza2VkICYmIG9wdHMgaW5zdGFuY2VvZiBJTWFzay5NYXNrZWQpIHJldHVybiBvcHRzO1xuICBjb25zdCBuT3B0cyA9IG5vcm1hbGl6ZU9wdHMob3B0cyk7XG4gIGNvbnN0IE1hc2tlZENsYXNzID0gbWFza2VkQ2xhc3Mobk9wdHMubWFzayk7XG4gIGlmICghTWFza2VkQ2xhc3MpIHRocm93IG5ldyBFcnJvcihcIk1hc2tlZCBjbGFzcyBpcyBub3QgZm91bmQgZm9yIHByb3ZpZGVkIG1hc2sgXCIgKyBuT3B0cy5tYXNrICsgXCIsIGFwcHJvcHJpYXRlIG1vZHVsZSBuZWVkcyB0byBiZSBpbXBvcnRlZCBtYW51YWxseSBiZWZvcmUgY3JlYXRpbmcgbWFzay5cIik7XG4gIGlmIChuT3B0cy5tYXNrID09PSBNYXNrZWRDbGFzcykgZGVsZXRlIG5PcHRzLm1hc2s7XG4gIGlmIChuT3B0cy5fbWFzaykge1xuICAgIG5PcHRzLm1hc2sgPSBuT3B0cy5fbWFzaztcbiAgICBkZWxldGUgbk9wdHMuX21hc2s7XG4gIH1cbiAgcmV0dXJuIG5ldyBNYXNrZWRDbGFzcyhuT3B0cyk7XG59XG5JTWFzay5jcmVhdGVNYXNrID0gY3JlYXRlTWFzaztcblxuZXhwb3J0IHsgY3JlYXRlTWFzayBhcyBkZWZhdWx0LCBtYXNrZWRDbGFzcywgbm9ybWFsaXplT3B0cyB9O1xuIiwgImltcG9ydCBJTWFzayBmcm9tICcuLi9jb3JlL2hvbGRlci5qcyc7XG5cbi8qKiAgR2VuZXJpYyBlbGVtZW50IEFQSSB0byB1c2Ugd2l0aCBtYXNrICovXG5jbGFzcyBNYXNrRWxlbWVudCB7XG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiBTYWZlbHkgcmV0dXJucyBzZWxlY3Rpb24gc3RhcnQgKi9cbiAgZ2V0IHNlbGVjdGlvblN0YXJ0KCkge1xuICAgIGxldCBzdGFydDtcbiAgICB0cnkge1xuICAgICAgc3RhcnQgPSB0aGlzLl91bnNhZmVTZWxlY3Rpb25TdGFydDtcbiAgICB9IGNhdGNoIHt9XG4gICAgcmV0dXJuIHN0YXJ0ICE9IG51bGwgPyBzdGFydCA6IHRoaXMudmFsdWUubGVuZ3RoO1xuICB9XG5cbiAgLyoqIFNhZmVseSByZXR1cm5zIHNlbGVjdGlvbiBlbmQgKi9cbiAgZ2V0IHNlbGVjdGlvbkVuZCgpIHtcbiAgICBsZXQgZW5kO1xuICAgIHRyeSB7XG4gICAgICBlbmQgPSB0aGlzLl91bnNhZmVTZWxlY3Rpb25FbmQ7XG4gICAgfSBjYXRjaCB7fVxuICAgIHJldHVybiBlbmQgIT0gbnVsbCA/IGVuZCA6IHRoaXMudmFsdWUubGVuZ3RoO1xuICB9XG5cbiAgLyoqIFNhZmVseSBzZXRzIGVsZW1lbnQgc2VsZWN0aW9uICovXG4gIHNlbGVjdChzdGFydCwgZW5kKSB7XG4gICAgaWYgKHN0YXJ0ID09IG51bGwgfHwgZW5kID09IG51bGwgfHwgc3RhcnQgPT09IHRoaXMuc2VsZWN0aW9uU3RhcnQgJiYgZW5kID09PSB0aGlzLnNlbGVjdGlvbkVuZCkgcmV0dXJuO1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl91bnNhZmVTZWxlY3Qoc3RhcnQsIGVuZCk7XG4gICAgfSBjYXRjaCB7fVxuICB9XG5cbiAgLyoqICovXG4gIGdldCBpc0FjdGl2ZSgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgLyoqICovXG5cbiAgLyoqICovXG5cbiAgLyoqICovXG59XG5JTWFzay5NYXNrRWxlbWVudCA9IE1hc2tFbGVtZW50O1xuXG5leHBvcnQgeyBNYXNrRWxlbWVudCBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IE1hc2tFbGVtZW50IGZyb20gJy4vbWFzay1lbGVtZW50LmpzJztcbmltcG9ydCBJTWFzayBmcm9tICcuLi9jb3JlL2hvbGRlci5qcyc7XG5cbmNvbnN0IEtFWV9aID0gOTA7XG5jb25zdCBLRVlfWSA9IDg5O1xuXG4vKiogQnJpZGdlIGJldHdlZW4gSFRNTEVsZW1lbnQgYW5kIHtAbGluayBNYXNrZWR9ICovXG5jbGFzcyBIVE1MTWFza0VsZW1lbnQgZXh0ZW5kcyBNYXNrRWxlbWVudCB7XG4gIC8qKiBIVE1MRWxlbWVudCB0byB1c2UgbWFzayBvbiAqL1xuXG4gIGNvbnN0cnVjdG9yKGlucHV0KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG4gICAgdGhpcy5fb25LZXlkb3duID0gdGhpcy5fb25LZXlkb3duLmJpbmQodGhpcyk7XG4gICAgdGhpcy5fb25JbnB1dCA9IHRoaXMuX29uSW5wdXQuYmluZCh0aGlzKTtcbiAgICB0aGlzLl9vbkJlZm9yZWlucHV0ID0gdGhpcy5fb25CZWZvcmVpbnB1dC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX29uQ29tcG9zaXRpb25FbmQgPSB0aGlzLl9vbkNvbXBvc2l0aW9uRW5kLmJpbmQodGhpcyk7XG4gIH1cbiAgZ2V0IHJvb3RFbGVtZW50KCkge1xuICAgIHZhciBfdGhpcyRpbnB1dCRnZXRSb290Tm8sIF90aGlzJGlucHV0JGdldFJvb3RObzIsIF90aGlzJGlucHV0O1xuICAgIHJldHVybiAoX3RoaXMkaW5wdXQkZ2V0Um9vdE5vID0gKF90aGlzJGlucHV0JGdldFJvb3RObzIgPSAoX3RoaXMkaW5wdXQgPSB0aGlzLmlucHV0KS5nZXRSb290Tm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJGlucHV0JGdldFJvb3RObzIuY2FsbChfdGhpcyRpbnB1dCkpICE9IG51bGwgPyBfdGhpcyRpbnB1dCRnZXRSb290Tm8gOiBkb2N1bWVudDtcbiAgfVxuXG4gIC8qKiBJcyBlbGVtZW50IGluIGZvY3VzICovXG4gIGdldCBpc0FjdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dCA9PT0gdGhpcy5yb290RWxlbWVudC5hY3RpdmVFbGVtZW50O1xuICB9XG5cbiAgLyoqIEJpbmRzIEhUTUxFbGVtZW50IGV2ZW50cyB0byBtYXNrIGludGVybmFsIGV2ZW50cyAqL1xuICBiaW5kRXZlbnRzKGhhbmRsZXJzKSB7XG4gICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5fb25LZXlkb3duKTtcbiAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2lucHV0JywgdGhpcy5fb25JbnB1dCk7XG4gICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdiZWZvcmVpbnB1dCcsIHRoaXMuX29uQmVmb3JlaW5wdXQpO1xuICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnLCB0aGlzLl9vbkNvbXBvc2l0aW9uRW5kKTtcbiAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2Ryb3AnLCBoYW5kbGVycy5kcm9wKTtcbiAgICB0aGlzLmlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlcnMuY2xpY2spO1xuICAgIHRoaXMuaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcignZm9jdXMnLCBoYW5kbGVycy5mb2N1cyk7XG4gICAgdGhpcy5pbnB1dC5hZGRFdmVudExpc3RlbmVyKCdibHVyJywgaGFuZGxlcnMuY29tbWl0KTtcbiAgICB0aGlzLl9oYW5kbGVycyA9IGhhbmRsZXJzO1xuICB9XG4gIF9vbktleWRvd24oZSkge1xuICAgIGlmICh0aGlzLl9oYW5kbGVycy5yZWRvICYmIChlLmtleUNvZGUgPT09IEtFWV9aICYmIGUuc2hpZnRLZXkgJiYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkpIHx8IGUua2V5Q29kZSA9PT0gS0VZX1kgJiYgZS5jdHJsS2V5KSkge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgcmV0dXJuIHRoaXMuX2hhbmRsZXJzLnJlZG8oZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLl9oYW5kbGVycy51bmRvICYmIGUua2V5Q29kZSA9PT0gS0VZX1ogJiYgKGUubWV0YUtleSB8fCBlLmN0cmxLZXkpKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gdGhpcy5faGFuZGxlcnMudW5kbyhlKTtcbiAgICB9XG4gICAgaWYgKCFlLmlzQ29tcG9zaW5nKSB0aGlzLl9oYW5kbGVycy5zZWxlY3Rpb25DaGFuZ2UoZSk7XG4gIH1cbiAgX29uQmVmb3JlaW5wdXQoZSkge1xuICAgIGlmIChlLmlucHV0VHlwZSA9PT0gJ2hpc3RvcnlVbmRvJyAmJiB0aGlzLl9oYW5kbGVycy51bmRvKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICByZXR1cm4gdGhpcy5faGFuZGxlcnMudW5kbyhlKTtcbiAgICB9XG4gICAgaWYgKGUuaW5wdXRUeXBlID09PSAnaGlzdG9yeVJlZG8nICYmIHRoaXMuX2hhbmRsZXJzLnJlZG8pIHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHJldHVybiB0aGlzLl9oYW5kbGVycy5yZWRvKGUpO1xuICAgIH1cbiAgfVxuICBfb25Db21wb3NpdGlvbkVuZChlKSB7XG4gICAgdGhpcy5faGFuZGxlcnMuaW5wdXQoZSk7XG4gIH1cbiAgX29uSW5wdXQoZSkge1xuICAgIGlmICghZS5pc0NvbXBvc2luZykgdGhpcy5faGFuZGxlcnMuaW5wdXQoZSk7XG4gIH1cblxuICAvKiogVW5iaW5kcyBIVE1MRWxlbWVudCBldmVudHMgdG8gbWFzayBpbnRlcm5hbCBldmVudHMgKi9cbiAgdW5iaW5kRXZlbnRzKCkge1xuICAgIHRoaXMuaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuX29uS2V5ZG93bik7XG4gICAgdGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdpbnB1dCcsIHRoaXMuX29uSW5wdXQpO1xuICAgIHRoaXMuaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmVmb3JlaW5wdXQnLCB0aGlzLl9vbkJlZm9yZWlucHV0KTtcbiAgICB0aGlzLmlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJywgdGhpcy5fb25Db21wb3NpdGlvbkVuZCk7XG4gICAgdGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdkcm9wJywgdGhpcy5faGFuZGxlcnMuZHJvcCk7XG4gICAgdGhpcy5pbnB1dC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuX2hhbmRsZXJzLmNsaWNrKTtcbiAgICB0aGlzLmlucHV0LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgdGhpcy5faGFuZGxlcnMuZm9jdXMpO1xuICAgIHRoaXMuaW5wdXQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYmx1cicsIHRoaXMuX2hhbmRsZXJzLmNvbW1pdCk7XG4gICAgdGhpcy5faGFuZGxlcnMgPSB7fTtcbiAgfVxufVxuSU1hc2suSFRNTE1hc2tFbGVtZW50ID0gSFRNTE1hc2tFbGVtZW50O1xuXG5leHBvcnQgeyBIVE1MTWFza0VsZW1lbnQgYXMgZGVmYXVsdCB9O1xuIiwgImltcG9ydCBIVE1MTWFza0VsZW1lbnQgZnJvbSAnLi9odG1sLW1hc2stZWxlbWVudC5qcyc7XG5pbXBvcnQgSU1hc2sgZnJvbSAnLi4vY29yZS9ob2xkZXIuanMnO1xuaW1wb3J0ICcuL21hc2stZWxlbWVudC5qcyc7XG5cbi8qKiBCcmlkZ2UgYmV0d2VlbiBJbnB1dEVsZW1lbnQgYW5kIHtAbGluayBNYXNrZWR9ICovXG5jbGFzcyBIVE1MSW5wdXRNYXNrRWxlbWVudCBleHRlbmRzIEhUTUxNYXNrRWxlbWVudCB7XG4gIC8qKiBJbnB1dEVsZW1lbnQgdG8gdXNlIG1hc2sgb24gKi9cblxuICBjb25zdHJ1Y3RvcihpbnB1dCkge1xuICAgIHN1cGVyKGlucHV0KTtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG4gIH1cblxuICAvKiogUmV0dXJucyBJbnB1dEVsZW1lbnQgc2VsZWN0aW9uIHN0YXJ0ICovXG4gIGdldCBfdW5zYWZlU2VsZWN0aW9uU3RhcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQgIT0gbnVsbCA/IHRoaXMuaW5wdXQuc2VsZWN0aW9uU3RhcnQgOiB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIElucHV0RWxlbWVudCBzZWxlY3Rpb24gZW5kICovXG4gIGdldCBfdW5zYWZlU2VsZWN0aW9uRW5kKCkge1xuICAgIHJldHVybiB0aGlzLmlucHV0LnNlbGVjdGlvbkVuZDtcbiAgfVxuXG4gIC8qKiBTZXRzIElucHV0RWxlbWVudCBzZWxlY3Rpb24gKi9cbiAgX3Vuc2FmZVNlbGVjdChzdGFydCwgZW5kKSB7XG4gICAgdGhpcy5pbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcbiAgfVxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQudmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5pbnB1dC52YWx1ZSA9IHZhbHVlO1xuICB9XG59XG5JTWFzay5IVE1MTWFza0VsZW1lbnQgPSBIVE1MTWFza0VsZW1lbnQ7XG5cbmV4cG9ydCB7IEhUTUxJbnB1dE1hc2tFbGVtZW50IGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgSFRNTE1hc2tFbGVtZW50IGZyb20gJy4vaHRtbC1tYXNrLWVsZW1lbnQuanMnO1xuaW1wb3J0IElNYXNrIGZyb20gJy4uL2NvcmUvaG9sZGVyLmpzJztcbmltcG9ydCAnLi9tYXNrLWVsZW1lbnQuanMnO1xuXG5jbGFzcyBIVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQgZXh0ZW5kcyBIVE1MTWFza0VsZW1lbnQge1xuICAvKiogUmV0dXJucyBIVE1MRWxlbWVudCBzZWxlY3Rpb24gc3RhcnQgKi9cbiAgZ2V0IF91bnNhZmVTZWxlY3Rpb25TdGFydCgpIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5yb290RWxlbWVudDtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbiAmJiByb290LmdldFNlbGVjdGlvbigpO1xuICAgIGNvbnN0IGFuY2hvck9mZnNldCA9IHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0O1xuICAgIGNvbnN0IGZvY3VzT2Zmc2V0ID0gc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICBpZiAoZm9jdXNPZmZzZXQgPT0gbnVsbCB8fCBhbmNob3JPZmZzZXQgPT0gbnVsbCB8fCBhbmNob3JPZmZzZXQgPCBmb2N1c09mZnNldCkge1xuICAgICAgcmV0dXJuIGFuY2hvck9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIGZvY3VzT2Zmc2V0O1xuICB9XG5cbiAgLyoqIFJldHVybnMgSFRNTEVsZW1lbnQgc2VsZWN0aW9uIGVuZCAqL1xuICBnZXQgX3Vuc2FmZVNlbGVjdGlvbkVuZCgpIHtcbiAgICBjb25zdCByb290ID0gdGhpcy5yb290RWxlbWVudDtcbiAgICBjb25zdCBzZWxlY3Rpb24gPSByb290LmdldFNlbGVjdGlvbiAmJiByb290LmdldFNlbGVjdGlvbigpO1xuICAgIGNvbnN0IGFuY2hvck9mZnNldCA9IHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0O1xuICAgIGNvbnN0IGZvY3VzT2Zmc2V0ID0gc2VsZWN0aW9uICYmIHNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICBpZiAoZm9jdXNPZmZzZXQgPT0gbnVsbCB8fCBhbmNob3JPZmZzZXQgPT0gbnVsbCB8fCBhbmNob3JPZmZzZXQgPiBmb2N1c09mZnNldCkge1xuICAgICAgcmV0dXJuIGFuY2hvck9mZnNldDtcbiAgICB9XG4gICAgcmV0dXJuIGZvY3VzT2Zmc2V0O1xuICB9XG5cbiAgLyoqIFNldHMgSFRNTEVsZW1lbnQgc2VsZWN0aW9uICovXG4gIF91bnNhZmVTZWxlY3Qoc3RhcnQsIGVuZCkge1xuICAgIGlmICghdGhpcy5yb290RWxlbWVudC5jcmVhdGVSYW5nZSkgcmV0dXJuO1xuICAgIGNvbnN0IHJhbmdlID0gdGhpcy5yb290RWxlbWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuaW5wdXQuZmlyc3RDaGlsZCB8fCB0aGlzLmlucHV0LCBzdGFydCk7XG4gICAgcmFuZ2Uuc2V0RW5kKHRoaXMuaW5wdXQubGFzdENoaWxkIHx8IHRoaXMuaW5wdXQsIGVuZCk7XG4gICAgY29uc3Qgcm9vdCA9IHRoaXMucm9vdEVsZW1lbnQ7XG4gICAgY29uc3Qgc2VsZWN0aW9uID0gcm9vdC5nZXRTZWxlY3Rpb24gJiYgcm9vdC5nZXRTZWxlY3Rpb24oKTtcbiAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBIVE1MRWxlbWVudCB2YWx1ZSAqL1xuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5wdXQudGV4dENvbnRlbnQgfHwgJyc7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5pbnB1dC50ZXh0Q29udGVudCA9IHZhbHVlO1xuICB9XG59XG5JTWFzay5IVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQgPSBIVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQ7XG5cbmV4cG9ydCB7IEhUTUxDb250ZW50ZWRpdGFibGVNYXNrRWxlbWVudCBhcyBkZWZhdWx0IH07XG4iLCAiY2xhc3MgSW5wdXRIaXN0b3J5IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdGF0ZXMgPSBbXTtcbiAgICB0aGlzLmN1cnJlbnRJbmRleCA9IDA7XG4gIH1cbiAgZ2V0IGN1cnJlbnRTdGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0ZXNbdGhpcy5jdXJyZW50SW5kZXhdO1xuICB9XG4gIGdldCBpc0VtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnN0YXRlcy5sZW5ndGggPT09IDA7XG4gIH1cbiAgcHVzaChzdGF0ZSkge1xuICAgIC8vIGlmIGN1cnJlbnQgaW5kZXggcG9pbnRzIGJlZm9yZSB0aGUgbGFzdCBlbGVtZW50IHRoZW4gcmVtb3ZlIHRoZSBmdXR1cmVcbiAgICBpZiAodGhpcy5jdXJyZW50SW5kZXggPCB0aGlzLnN0YXRlcy5sZW5ndGggLSAxKSB0aGlzLnN0YXRlcy5sZW5ndGggPSB0aGlzLmN1cnJlbnRJbmRleCArIDE7XG4gICAgdGhpcy5zdGF0ZXMucHVzaChzdGF0ZSk7XG4gICAgaWYgKHRoaXMuc3RhdGVzLmxlbmd0aCA+IElucHV0SGlzdG9yeS5NQVhfTEVOR1RIKSB0aGlzLnN0YXRlcy5zaGlmdCgpO1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gdGhpcy5zdGF0ZXMubGVuZ3RoIC0gMTtcbiAgfVxuICBnbyhzdGVwcykge1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gTWF0aC5taW4oTWF0aC5tYXgodGhpcy5jdXJyZW50SW5kZXggKyBzdGVwcywgMCksIHRoaXMuc3RhdGVzLmxlbmd0aCAtIDEpO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGF0ZTtcbiAgfVxuICB1bmRvKCkge1xuICAgIHJldHVybiB0aGlzLmdvKC0xKTtcbiAgfVxuICByZWRvKCkge1xuICAgIHJldHVybiB0aGlzLmdvKCsxKTtcbiAgfVxuICBjbGVhcigpIHtcbiAgICB0aGlzLnN0YXRlcy5sZW5ndGggPSAwO1xuICAgIHRoaXMuY3VycmVudEluZGV4ID0gMDtcbiAgfVxufVxuSW5wdXRIaXN0b3J5Lk1BWF9MRU5HVEggPSAxMDA7XG5cbmV4cG9ydCB7IElucHV0SGlzdG9yeSBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IHsgRElSRUNUSU9OIH0gZnJvbSAnLi4vY29yZS91dGlscy5qcyc7XG5pbXBvcnQgQWN0aW9uRGV0YWlscyBmcm9tICcuLi9jb3JlL2FjdGlvbi1kZXRhaWxzLmpzJztcbmltcG9ydCBjcmVhdGVNYXNrLCB7IG1hc2tlZENsYXNzIH0gZnJvbSAnLi4vbWFza2VkL2ZhY3RvcnkuanMnO1xuaW1wb3J0IE1hc2tFbGVtZW50IGZyb20gJy4vbWFzay1lbGVtZW50LmpzJztcbmltcG9ydCBIVE1MSW5wdXRNYXNrRWxlbWVudCBmcm9tICcuL2h0bWwtaW5wdXQtbWFzay1lbGVtZW50LmpzJztcbmltcG9ydCBIVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQgZnJvbSAnLi9odG1sLWNvbnRlbnRlZGl0YWJsZS1tYXNrLWVsZW1lbnQuanMnO1xuaW1wb3J0IElNYXNrIGZyb20gJy4uL2NvcmUvaG9sZGVyLmpzJztcbmltcG9ydCBJbnB1dEhpc3RvcnkgZnJvbSAnLi9pbnB1dC1oaXN0b3J5LmpzJztcbmltcG9ydCAnLi9odG1sLW1hc2stZWxlbWVudC5qcyc7XG5cbi8qKiBMaXN0ZW5zIHRvIGVsZW1lbnQgZXZlbnRzIGFuZCBjb250cm9scyBjaGFuZ2VzIGJldHdlZW4gZWxlbWVudCBhbmQge0BsaW5rIE1hc2tlZH0gKi9cbmNsYXNzIElucHV0TWFzayB7XG4gIC8qKlxuICAgIFZpZXcgZWxlbWVudFxuICAqL1xuXG4gIC8qKiBJbnRlcm5hbCB7QGxpbmsgTWFza2VkfSBtb2RlbCAqL1xuXG4gIGNvbnN0cnVjdG9yKGVsLCBvcHRzKSB7XG4gICAgdGhpcy5lbCA9IGVsIGluc3RhbmNlb2YgTWFza0VsZW1lbnQgPyBlbCA6IGVsLmlzQ29udGVudEVkaXRhYmxlICYmIGVsLnRhZ05hbWUgIT09ICdJTlBVVCcgJiYgZWwudGFnTmFtZSAhPT0gJ1RFWFRBUkVBJyA/IG5ldyBIVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQoZWwpIDogbmV3IEhUTUxJbnB1dE1hc2tFbGVtZW50KGVsKTtcbiAgICB0aGlzLm1hc2tlZCA9IGNyZWF0ZU1hc2sob3B0cyk7XG4gICAgdGhpcy5fbGlzdGVuZXJzID0ge307XG4gICAgdGhpcy5fdmFsdWUgPSAnJztcbiAgICB0aGlzLl91bm1hc2tlZFZhbHVlID0gJyc7XG4gICAgdGhpcy5fcmF3SW5wdXRWYWx1ZSA9ICcnO1xuICAgIHRoaXMuaGlzdG9yeSA9IG5ldyBJbnB1dEhpc3RvcnkoKTtcbiAgICB0aGlzLl9zYXZlU2VsZWN0aW9uID0gdGhpcy5fc2F2ZVNlbGVjdGlvbi5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX29uSW5wdXQgPSB0aGlzLl9vbklucHV0LmJpbmQodGhpcyk7XG4gICAgdGhpcy5fb25DaGFuZ2UgPSB0aGlzLl9vbkNoYW5nZS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX29uRHJvcCA9IHRoaXMuX29uRHJvcC5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX29uRm9jdXMgPSB0aGlzLl9vbkZvY3VzLmJpbmQodGhpcyk7XG4gICAgdGhpcy5fb25DbGljayA9IHRoaXMuX29uQ2xpY2suYmluZCh0aGlzKTtcbiAgICB0aGlzLl9vblVuZG8gPSB0aGlzLl9vblVuZG8uYmluZCh0aGlzKTtcbiAgICB0aGlzLl9vblJlZG8gPSB0aGlzLl9vblJlZG8uYmluZCh0aGlzKTtcbiAgICB0aGlzLmFsaWduQ3Vyc29yID0gdGhpcy5hbGlnbkN1cnNvci5iaW5kKHRoaXMpO1xuICAgIHRoaXMuYWxpZ25DdXJzb3JGcmllbmRseSA9IHRoaXMuYWxpZ25DdXJzb3JGcmllbmRseS5iaW5kKHRoaXMpO1xuICAgIHRoaXMuX2JpbmRFdmVudHMoKTtcblxuICAgIC8vIHJlZnJlc2hcbiAgICB0aGlzLnVwZGF0ZVZhbHVlKCk7XG4gICAgdGhpcy5fb25DaGFuZ2UoKTtcbiAgfVxuICBtYXNrRXF1YWxzKG1hc2spIHtcbiAgICB2YXIgX3RoaXMkbWFza2VkO1xuICAgIHJldHVybiBtYXNrID09IG51bGwgfHwgKChfdGhpcyRtYXNrZWQgPSB0aGlzLm1hc2tlZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJG1hc2tlZC5tYXNrRXF1YWxzKG1hc2spKTtcbiAgfVxuXG4gIC8qKiBNYXNrZWQgKi9cbiAgZ2V0IG1hc2soKSB7XG4gICAgcmV0dXJuIHRoaXMubWFza2VkLm1hc2s7XG4gIH1cbiAgc2V0IG1hc2sobWFzaykge1xuICAgIGlmICh0aGlzLm1hc2tFcXVhbHMobWFzaykpIHJldHVybjtcbiAgICBpZiAoIShtYXNrIGluc3RhbmNlb2YgSU1hc2suTWFza2VkKSAmJiB0aGlzLm1hc2tlZC5jb25zdHJ1Y3RvciA9PT0gbWFza2VkQ2xhc3MobWFzaykpIHtcbiAgICAgIC8vIFRPRE8gXCJhbnlcIiBubyBpZGVhXG4gICAgICB0aGlzLm1hc2tlZC51cGRhdGVPcHRpb25zKHtcbiAgICAgICAgbWFza1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IG1hc2tlZCA9IG1hc2sgaW5zdGFuY2VvZiBJTWFzay5NYXNrZWQgPyBtYXNrIDogY3JlYXRlTWFzayh7XG4gICAgICBtYXNrXG4gICAgfSk7XG4gICAgbWFza2VkLnVubWFza2VkVmFsdWUgPSB0aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlO1xuICAgIHRoaXMubWFza2VkID0gbWFza2VkO1xuICB9XG5cbiAgLyoqIFJhdyB2YWx1ZSAqL1xuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIHNldCB2YWx1ZShzdHIpIHtcbiAgICBpZiAodGhpcy52YWx1ZSA9PT0gc3RyKSByZXR1cm47XG4gICAgdGhpcy5tYXNrZWQudmFsdWUgPSBzdHI7XG4gICAgdGhpcy51cGRhdGVDb250cm9sKCdhdXRvJyk7XG4gIH1cblxuICAvKiogVW5tYXNrZWQgdmFsdWUgKi9cbiAgZ2V0IHVubWFza2VkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VubWFza2VkVmFsdWU7XG4gIH1cbiAgc2V0IHVubWFza2VkVmFsdWUoc3RyKSB7XG4gICAgaWYgKHRoaXMudW5tYXNrZWRWYWx1ZSA9PT0gc3RyKSByZXR1cm47XG4gICAgdGhpcy5tYXNrZWQudW5tYXNrZWRWYWx1ZSA9IHN0cjtcbiAgICB0aGlzLnVwZGF0ZUNvbnRyb2woJ2F1dG8nKTtcbiAgfVxuXG4gIC8qKiBSYXcgaW5wdXQgdmFsdWUgKi9cbiAgZ2V0IHJhd0lucHV0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jhd0lucHV0VmFsdWU7XG4gIH1cbiAgc2V0IHJhd0lucHV0VmFsdWUoc3RyKSB7XG4gICAgaWYgKHRoaXMucmF3SW5wdXRWYWx1ZSA9PT0gc3RyKSByZXR1cm47XG4gICAgdGhpcy5tYXNrZWQucmF3SW5wdXRWYWx1ZSA9IHN0cjtcbiAgICB0aGlzLnVwZGF0ZUNvbnRyb2woKTtcbiAgICB0aGlzLmFsaWduQ3Vyc29yKCk7XG4gIH1cblxuICAvKiogVHlwZWQgdW5tYXNrZWQgdmFsdWUgKi9cbiAgZ2V0IHR5cGVkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFza2VkLnR5cGVkVmFsdWU7XG4gIH1cbiAgc2V0IHR5cGVkVmFsdWUodmFsKSB7XG4gICAgaWYgKHRoaXMubWFza2VkLnR5cGVkVmFsdWVFcXVhbHModmFsKSkgcmV0dXJuO1xuICAgIHRoaXMubWFza2VkLnR5cGVkVmFsdWUgPSB2YWw7XG4gICAgdGhpcy51cGRhdGVDb250cm9sKCdhdXRvJyk7XG4gIH1cblxuICAvKiogRGlzcGxheSB2YWx1ZSAqL1xuICBnZXQgZGlzcGxheVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1hc2tlZC5kaXNwbGF5VmFsdWU7XG4gIH1cblxuICAvKiogU3RhcnRzIGxpc3RlbmluZyB0byBlbGVtZW50IGV2ZW50cyAqL1xuICBfYmluZEV2ZW50cygpIHtcbiAgICB0aGlzLmVsLmJpbmRFdmVudHMoe1xuICAgICAgc2VsZWN0aW9uQ2hhbmdlOiB0aGlzLl9zYXZlU2VsZWN0aW9uLFxuICAgICAgaW5wdXQ6IHRoaXMuX29uSW5wdXQsXG4gICAgICBkcm9wOiB0aGlzLl9vbkRyb3AsXG4gICAgICBjbGljazogdGhpcy5fb25DbGljayxcbiAgICAgIGZvY3VzOiB0aGlzLl9vbkZvY3VzLFxuICAgICAgY29tbWl0OiB0aGlzLl9vbkNoYW5nZSxcbiAgICAgIHVuZG86IHRoaXMuX29uVW5kbyxcbiAgICAgIHJlZG86IHRoaXMuX29uUmVkb1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFN0b3BzIGxpc3RlbmluZyB0byBlbGVtZW50IGV2ZW50cyAqL1xuICBfdW5iaW5kRXZlbnRzKCkge1xuICAgIGlmICh0aGlzLmVsKSB0aGlzLmVsLnVuYmluZEV2ZW50cygpO1xuICB9XG5cbiAgLyoqIEZpcmVzIGN1c3RvbSBldmVudCAqL1xuICBfZmlyZUV2ZW50KGV2LCBlKSB7XG4gICAgY29uc3QgbGlzdGVuZXJzID0gdGhpcy5fbGlzdGVuZXJzW2V2XTtcbiAgICBpZiAoIWxpc3RlbmVycykgcmV0dXJuO1xuICAgIGxpc3RlbmVycy5mb3JFYWNoKGwgPT4gbChlKSk7XG4gIH1cblxuICAvKiogQ3VycmVudCBzZWxlY3Rpb24gc3RhcnQgKi9cbiAgZ2V0IHNlbGVjdGlvblN0YXJ0KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJzb3JDaGFuZ2luZyA/IHRoaXMuX2NoYW5naW5nQ3Vyc29yUG9zIDogdGhpcy5lbC5zZWxlY3Rpb25TdGFydDtcbiAgfVxuXG4gIC8qKiBDdXJyZW50IGN1cnNvciBwb3NpdGlvbiAqL1xuICBnZXQgY3Vyc29yUG9zKCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJzb3JDaGFuZ2luZyA/IHRoaXMuX2NoYW5naW5nQ3Vyc29yUG9zIDogdGhpcy5lbC5zZWxlY3Rpb25FbmQ7XG4gIH1cbiAgc2V0IGN1cnNvclBvcyhwb3MpIHtcbiAgICBpZiAoIXRoaXMuZWwgfHwgIXRoaXMuZWwuaXNBY3RpdmUpIHJldHVybjtcbiAgICB0aGlzLmVsLnNlbGVjdChwb3MsIHBvcyk7XG4gICAgdGhpcy5fc2F2ZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgLyoqIFN0b3JlcyBjdXJyZW50IHNlbGVjdGlvbiAqL1xuICBfc2F2ZVNlbGVjdGlvbiggLyogZXYgKi9cbiAgKSB7XG4gICAgaWYgKHRoaXMuZGlzcGxheVZhbHVlICE9PSB0aGlzLmVsLnZhbHVlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ0VsZW1lbnQgdmFsdWUgd2FzIGNoYW5nZWQgb3V0c2lkZSBvZiBtYXNrLiBTeW5jcm9uaXplIG1hc2sgdXNpbmcgYG1hc2sudXBkYXRlVmFsdWUoKWAgdG8gd29yayBwcm9wZXJseS4nKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICAgIHRoaXMuX3NlbGVjdGlvbiA9IHtcbiAgICAgIHN0YXJ0OiB0aGlzLnNlbGVjdGlvblN0YXJ0LFxuICAgICAgZW5kOiB0aGlzLmN1cnNvclBvc1xuICAgIH07XG4gIH1cblxuICAvKiogU3luY3Jvbml6ZXMgbW9kZWwgdmFsdWUgZnJvbSB2aWV3ICovXG4gIHVwZGF0ZVZhbHVlKCkge1xuICAgIHRoaXMubWFza2VkLnZhbHVlID0gdGhpcy5lbC52YWx1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMubWFza2VkLnZhbHVlO1xuICAgIHRoaXMuX3VubWFza2VkVmFsdWUgPSB0aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlO1xuICAgIHRoaXMuX3Jhd0lucHV0VmFsdWUgPSB0aGlzLm1hc2tlZC5yYXdJbnB1dFZhbHVlO1xuICB9XG5cbiAgLyoqIFN5bmNyb25pemVzIHZpZXcgZnJvbSBtb2RlbCB2YWx1ZSwgZmlyZXMgY2hhbmdlIGV2ZW50cyAqL1xuICB1cGRhdGVDb250cm9sKGN1cnNvclBvcykge1xuICAgIGNvbnN0IG5ld1VubWFza2VkVmFsdWUgPSB0aGlzLm1hc2tlZC51bm1hc2tlZFZhbHVlO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5tYXNrZWQudmFsdWU7XG4gICAgY29uc3QgbmV3UmF3SW5wdXRWYWx1ZSA9IHRoaXMubWFza2VkLnJhd0lucHV0VmFsdWU7XG4gICAgY29uc3QgbmV3RGlzcGxheVZhbHVlID0gdGhpcy5kaXNwbGF5VmFsdWU7XG4gICAgY29uc3QgaXNDaGFuZ2VkID0gdGhpcy51bm1hc2tlZFZhbHVlICE9PSBuZXdVbm1hc2tlZFZhbHVlIHx8IHRoaXMudmFsdWUgIT09IG5ld1ZhbHVlIHx8IHRoaXMuX3Jhd0lucHV0VmFsdWUgIT09IG5ld1Jhd0lucHV0VmFsdWU7XG4gICAgdGhpcy5fdW5tYXNrZWRWYWx1ZSA9IG5ld1VubWFza2VkVmFsdWU7XG4gICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLl9yYXdJbnB1dFZhbHVlID0gbmV3UmF3SW5wdXRWYWx1ZTtcbiAgICBpZiAodGhpcy5lbC52YWx1ZSAhPT0gbmV3RGlzcGxheVZhbHVlKSB0aGlzLmVsLnZhbHVlID0gbmV3RGlzcGxheVZhbHVlO1xuICAgIGlmIChjdXJzb3JQb3MgPT09ICdhdXRvJykgdGhpcy5hbGlnbkN1cnNvcigpO2Vsc2UgaWYgKGN1cnNvclBvcyAhPSBudWxsKSB0aGlzLmN1cnNvclBvcyA9IGN1cnNvclBvcztcbiAgICBpZiAoaXNDaGFuZ2VkKSB0aGlzLl9maXJlQ2hhbmdlRXZlbnRzKCk7XG4gICAgaWYgKCF0aGlzLl9oaXN0b3J5Q2hhbmdpbmcgJiYgKGlzQ2hhbmdlZCB8fCB0aGlzLmhpc3RvcnkuaXNFbXB0eSkpIHRoaXMuaGlzdG9yeS5wdXNoKHtcbiAgICAgIHVubWFza2VkVmFsdWU6IG5ld1VubWFza2VkVmFsdWUsXG4gICAgICBzZWxlY3Rpb246IHtcbiAgICAgICAgc3RhcnQ6IHRoaXMuc2VsZWN0aW9uU3RhcnQsXG4gICAgICAgIGVuZDogdGhpcy5jdXJzb3JQb3NcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBVcGRhdGVzIG9wdGlvbnMgd2l0aCBkZWVwIGVxdWFsIGNoZWNrLCByZWNyZWF0ZXMge0BsaW5rIE1hc2tlZH0gbW9kZWwgaWYgbWFzayB0eXBlIGNoYW5nZXMgKi9cbiAgdXBkYXRlT3B0aW9ucyhvcHRzKSB7XG4gICAgY29uc3Qge1xuICAgICAgbWFzayxcbiAgICAgIC4uLnJlc3RPcHRzXG4gICAgfSA9IG9wdHM7IC8vIFRPRE8gdHlwZXMsIHllcywgbWFzayBpcyBvcHRpb25hbFxuXG4gICAgY29uc3QgdXBkYXRlTWFzayA9ICF0aGlzLm1hc2tFcXVhbHMobWFzayk7XG4gICAgY29uc3QgdXBkYXRlT3B0cyA9IHRoaXMubWFza2VkLm9wdGlvbnNJc0NoYW5nZWQocmVzdE9wdHMpO1xuICAgIGlmICh1cGRhdGVNYXNrKSB0aGlzLm1hc2sgPSBtYXNrO1xuICAgIGlmICh1cGRhdGVPcHRzKSB0aGlzLm1hc2tlZC51cGRhdGVPcHRpb25zKHJlc3RPcHRzKTsgLy8gVE9ET1xuXG4gICAgaWYgKHVwZGF0ZU1hc2sgfHwgdXBkYXRlT3B0cykgdGhpcy51cGRhdGVDb250cm9sKCk7XG4gIH1cblxuICAvKiogVXBkYXRlcyBjdXJzb3IgKi9cbiAgdXBkYXRlQ3Vyc29yKGN1cnNvclBvcykge1xuICAgIGlmIChjdXJzb3JQb3MgPT0gbnVsbCkgcmV0dXJuO1xuICAgIHRoaXMuY3Vyc29yUG9zID0gY3Vyc29yUG9zO1xuXG4gICAgLy8gYWxzbyBxdWV1ZSBjaGFuZ2UgY3Vyc29yIGZvciBtb2JpbGUgYnJvd3NlcnNcbiAgICB0aGlzLl9kZWxheVVwZGF0ZUN1cnNvcihjdXJzb3JQb3MpO1xuICB9XG5cbiAgLyoqIERlbGF5cyBjdXJzb3IgdXBkYXRlIHRvIHN1cHBvcnQgbW9iaWxlIGJyb3dzZXJzICovXG4gIF9kZWxheVVwZGF0ZUN1cnNvcihjdXJzb3JQb3MpIHtcbiAgICB0aGlzLl9hYm9ydFVwZGF0ZUN1cnNvcigpO1xuICAgIHRoaXMuX2NoYW5naW5nQ3Vyc29yUG9zID0gY3Vyc29yUG9zO1xuICAgIHRoaXMuX2N1cnNvckNoYW5naW5nID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuZWwpIHJldHVybjsgLy8gaWYgd2FzIGRlc3Ryb3llZFxuICAgICAgdGhpcy5jdXJzb3JQb3MgPSB0aGlzLl9jaGFuZ2luZ0N1cnNvclBvcztcbiAgICAgIHRoaXMuX2Fib3J0VXBkYXRlQ3Vyc29yKCk7XG4gICAgfSwgMTApO1xuICB9XG5cbiAgLyoqIEZpcmVzIGN1c3RvbSBldmVudHMgKi9cbiAgX2ZpcmVDaGFuZ2VFdmVudHMoKSB7XG4gICAgdGhpcy5fZmlyZUV2ZW50KCdhY2NlcHQnLCB0aGlzLl9pbnB1dEV2ZW50KTtcbiAgICBpZiAodGhpcy5tYXNrZWQuaXNDb21wbGV0ZSkgdGhpcy5fZmlyZUV2ZW50KCdjb21wbGV0ZScsIHRoaXMuX2lucHV0RXZlbnQpO1xuICB9XG5cbiAgLyoqIEFib3J0cyBkZWxheWVkIGN1cnNvciB1cGRhdGUgKi9cbiAgX2Fib3J0VXBkYXRlQ3Vyc29yKCkge1xuICAgIGlmICh0aGlzLl9jdXJzb3JDaGFuZ2luZykge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2N1cnNvckNoYW5naW5nKTtcbiAgICAgIGRlbGV0ZSB0aGlzLl9jdXJzb3JDaGFuZ2luZztcbiAgICB9XG4gIH1cblxuICAvKiogQWxpZ25zIGN1cnNvciB0byBuZWFyZXN0IGF2YWlsYWJsZSBwb3NpdGlvbiAqL1xuICBhbGlnbkN1cnNvcigpIHtcbiAgICB0aGlzLmN1cnNvclBvcyA9IHRoaXMubWFza2VkLm5lYXJlc3RJbnB1dFBvcyh0aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3ModGhpcy5jdXJzb3JQb3MsIERJUkVDVElPTi5MRUZUKSk7XG4gIH1cblxuICAvKiogQWxpZ25zIGN1cnNvciBvbmx5IGlmIHNlbGVjdGlvbiBpcyBlbXB0eSAqL1xuICBhbGlnbkN1cnNvckZyaWVuZGx5KCkge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvblN0YXJ0ICE9PSB0aGlzLmN1cnNvclBvcykgcmV0dXJuOyAvLyBza2lwIGlmIHJhbmdlIGlzIHNlbGVjdGVkXG4gICAgdGhpcy5hbGlnbkN1cnNvcigpO1xuICB9XG5cbiAgLyoqIEFkZHMgbGlzdGVuZXIgb24gY3VzdG9tIGV2ZW50ICovXG4gIG9uKGV2LCBoYW5kbGVyKSB7XG4gICAgaWYgKCF0aGlzLl9saXN0ZW5lcnNbZXZdKSB0aGlzLl9saXN0ZW5lcnNbZXZdID0gW107XG4gICAgdGhpcy5fbGlzdGVuZXJzW2V2XS5wdXNoKGhhbmRsZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFJlbW92ZXMgY3VzdG9tIGV2ZW50IGxpc3RlbmVyICovXG4gIG9mZihldiwgaGFuZGxlcikge1xuICAgIGlmICghdGhpcy5fbGlzdGVuZXJzW2V2XSkgcmV0dXJuIHRoaXM7XG4gICAgaWYgKCFoYW5kbGVyKSB7XG4gICAgICBkZWxldGUgdGhpcy5fbGlzdGVuZXJzW2V2XTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBjb25zdCBoSW5kZXggPSB0aGlzLl9saXN0ZW5lcnNbZXZdLmluZGV4T2YoaGFuZGxlcik7XG4gICAgaWYgKGhJbmRleCA+PSAwKSB0aGlzLl9saXN0ZW5lcnNbZXZdLnNwbGljZShoSW5kZXgsIDEpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMgdmlldyBpbnB1dCBldmVudCAqL1xuICBfb25JbnB1dChlKSB7XG4gICAgdGhpcy5faW5wdXRFdmVudCA9IGU7XG4gICAgdGhpcy5fYWJvcnRVcGRhdGVDdXJzb3IoKTtcbiAgICBjb25zdCBkZXRhaWxzID0gbmV3IEFjdGlvbkRldGFpbHMoe1xuICAgICAgLy8gbmV3IHN0YXRlXG4gICAgICB2YWx1ZTogdGhpcy5lbC52YWx1ZSxcbiAgICAgIGN1cnNvclBvczogdGhpcy5jdXJzb3JQb3MsXG4gICAgICAvLyBvbGQgc3RhdGVcbiAgICAgIG9sZFZhbHVlOiB0aGlzLmRpc3BsYXlWYWx1ZSxcbiAgICAgIG9sZFNlbGVjdGlvbjogdGhpcy5fc2VsZWN0aW9uXG4gICAgfSk7XG4gICAgY29uc3Qgb2xkUmF3VmFsdWUgPSB0aGlzLm1hc2tlZC5yYXdJbnB1dFZhbHVlO1xuICAgIGNvbnN0IG9mZnNldCA9IHRoaXMubWFza2VkLnNwbGljZShkZXRhaWxzLnN0YXJ0Q2hhbmdlUG9zLCBkZXRhaWxzLnJlbW92ZWQubGVuZ3RoLCBkZXRhaWxzLmluc2VydGVkLCBkZXRhaWxzLnJlbW92ZURpcmVjdGlvbiwge1xuICAgICAgaW5wdXQ6IHRydWUsXG4gICAgICByYXc6IHRydWVcbiAgICB9KS5vZmZzZXQ7XG5cbiAgICAvLyBmb3JjZSBhbGlnbiBpbiByZW1vdmUgZGlyZWN0aW9uIG9ubHkgaWYgbm8gaW5wdXQgY2hhcnMgd2VyZSByZW1vdmVkXG4gICAgLy8gb3RoZXJ3aXNlIHdlIHN0aWxsIG5lZWQgdG8gYWxpZ24gd2l0aCBOT05FICh0byBnZXQgb3V0IGZyb20gZml4ZWQgc3ltYm9scyBmb3IgaW5zdGFuY2UpXG4gICAgY29uc3QgcmVtb3ZlRGlyZWN0aW9uID0gb2xkUmF3VmFsdWUgPT09IHRoaXMubWFza2VkLnJhd0lucHV0VmFsdWUgPyBkZXRhaWxzLnJlbW92ZURpcmVjdGlvbiA6IERJUkVDVElPTi5OT05FO1xuICAgIGxldCBjdXJzb3JQb3MgPSB0aGlzLm1hc2tlZC5uZWFyZXN0SW5wdXRQb3MoZGV0YWlscy5zdGFydENoYW5nZVBvcyArIG9mZnNldCwgcmVtb3ZlRGlyZWN0aW9uKTtcbiAgICBpZiAocmVtb3ZlRGlyZWN0aW9uICE9PSBESVJFQ1RJT04uTk9ORSkgY3Vyc29yUG9zID0gdGhpcy5tYXNrZWQubmVhcmVzdElucHV0UG9zKGN1cnNvclBvcywgRElSRUNUSU9OLk5PTkUpO1xuICAgIHRoaXMudXBkYXRlQ29udHJvbChjdXJzb3JQb3MpO1xuICAgIGRlbGV0ZSB0aGlzLl9pbnB1dEV2ZW50O1xuICB9XG5cbiAgLyoqIEhhbmRsZXMgdmlldyBjaGFuZ2UgZXZlbnQgYW5kIGNvbW1pdHMgbW9kZWwgdmFsdWUgKi9cbiAgX29uQ2hhbmdlKCkge1xuICAgIGlmICh0aGlzLmRpc3BsYXlWYWx1ZSAhPT0gdGhpcy5lbC52YWx1ZSkgdGhpcy51cGRhdGVWYWx1ZSgpO1xuICAgIHRoaXMubWFza2VkLmRvQ29tbWl0KCk7XG4gICAgdGhpcy51cGRhdGVDb250cm9sKCk7XG4gICAgdGhpcy5fc2F2ZVNlbGVjdGlvbigpO1xuICB9XG5cbiAgLyoqIEhhbmRsZXMgdmlldyBkcm9wIGV2ZW50LCBwcmV2ZW50cyBieSBkZWZhdWx0ICovXG4gIF9vbkRyb3AoZXYpIHtcbiAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgLyoqIFJlc3RvcmUgbGFzdCBzZWxlY3Rpb24gb24gZm9jdXMgKi9cbiAgX29uRm9jdXMoZXYpIHtcbiAgICB0aGlzLmFsaWduQ3Vyc29yRnJpZW5kbHkoKTtcbiAgfVxuXG4gIC8qKiBSZXN0b3JlIGxhc3Qgc2VsZWN0aW9uIG9uIGZvY3VzICovXG4gIF9vbkNsaWNrKGV2KSB7XG4gICAgdGhpcy5hbGlnbkN1cnNvckZyaWVuZGx5KCk7XG4gIH1cbiAgX29uVW5kbygpIHtcbiAgICB0aGlzLl9hcHBseUhpc3RvcnlTdGF0ZSh0aGlzLmhpc3RvcnkudW5kbygpKTtcbiAgfVxuICBfb25SZWRvKCkge1xuICAgIHRoaXMuX2FwcGx5SGlzdG9yeVN0YXRlKHRoaXMuaGlzdG9yeS5yZWRvKCkpO1xuICB9XG4gIF9hcHBseUhpc3RvcnlTdGF0ZShzdGF0ZSkge1xuICAgIGlmICghc3RhdGUpIHJldHVybjtcbiAgICB0aGlzLl9oaXN0b3J5Q2hhbmdpbmcgPSB0cnVlO1xuICAgIHRoaXMudW5tYXNrZWRWYWx1ZSA9IHN0YXRlLnVubWFza2VkVmFsdWU7XG4gICAgdGhpcy5lbC5zZWxlY3Qoc3RhdGUuc2VsZWN0aW9uLnN0YXJ0LCBzdGF0ZS5zZWxlY3Rpb24uZW5kKTtcbiAgICB0aGlzLl9zYXZlU2VsZWN0aW9uKCk7XG4gICAgdGhpcy5faGlzdG9yeUNoYW5naW5nID0gZmFsc2U7XG4gIH1cblxuICAvKiogVW5iaW5kIHZpZXcgZXZlbnRzIGFuZCByZW1vdmVzIGVsZW1lbnQgcmVmZXJlbmNlICovXG4gIGRlc3Ryb3koKSB7XG4gICAgdGhpcy5fdW5iaW5kRXZlbnRzKCk7XG4gICAgdGhpcy5fbGlzdGVuZXJzLmxlbmd0aCA9IDA7XG4gICAgZGVsZXRlIHRoaXMuZWw7XG4gIH1cbn1cbklNYXNrLklucHV0TWFzayA9IElucHV0TWFzaztcblxuZXhwb3J0IHsgSW5wdXRNYXNrIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgSU1hc2sgZnJvbSAnLi9ob2xkZXIuanMnO1xuXG4vKiogUHJvdmlkZXMgZGV0YWlscyBvZiBjaGFuZ2luZyBtb2RlbCB2YWx1ZSAqL1xuY2xhc3MgQ2hhbmdlRGV0YWlscyB7XG4gIC8qKiBJbnNlcnRlZCBzeW1ib2xzICovXG5cbiAgLyoqIEFkZGl0aW9uYWwgb2Zmc2V0IGlmIGFueSBjaGFuZ2VzIG9jY3VycmVkIGJlZm9yZSB0YWlsICovXG5cbiAgLyoqIFJhdyBpbnNlcnRlZCBpcyB1c2VkIGJ5IGR5bmFtaWMgbWFzayAqL1xuXG4gIC8qKiBDYW4gc2tpcCBjaGFycyAqL1xuXG4gIHN0YXRpYyBub3JtYWxpemUocHJlcCkge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHByZXApID8gcHJlcCA6IFtwcmVwLCBuZXcgQ2hhbmdlRGV0YWlscygpXTtcbiAgfVxuICBjb25zdHJ1Y3RvcihkZXRhaWxzKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCB7XG4gICAgICBpbnNlcnRlZDogJycsXG4gICAgICByYXdJbnNlcnRlZDogJycsXG4gICAgICB0YWlsU2hpZnQ6IDAsXG4gICAgICBza2lwOiBmYWxzZVxuICAgIH0sIGRldGFpbHMpO1xuICB9XG5cbiAgLyoqIEFnZ3JlZ2F0ZSBjaGFuZ2VzICovXG4gIGFnZ3JlZ2F0ZShkZXRhaWxzKSB7XG4gICAgdGhpcy5pbnNlcnRlZCArPSBkZXRhaWxzLmluc2VydGVkO1xuICAgIHRoaXMucmF3SW5zZXJ0ZWQgKz0gZGV0YWlscy5yYXdJbnNlcnRlZDtcbiAgICB0aGlzLnRhaWxTaGlmdCArPSBkZXRhaWxzLnRhaWxTaGlmdDtcbiAgICB0aGlzLnNraXAgPSB0aGlzLnNraXAgfHwgZGV0YWlscy5za2lwO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqIFRvdGFsIG9mZnNldCBjb25zaWRlcmluZyBhbGwgY2hhbmdlcyAqL1xuICBnZXQgb2Zmc2V0KCkge1xuICAgIHJldHVybiB0aGlzLnRhaWxTaGlmdCArIHRoaXMuaW5zZXJ0ZWQubGVuZ3RoO1xuICB9XG4gIGdldCBjb25zdW1lZCgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0aGlzLnJhd0luc2VydGVkKSB8fCB0aGlzLnNraXA7XG4gIH1cbiAgZXF1YWxzKGRldGFpbHMpIHtcbiAgICByZXR1cm4gdGhpcy5pbnNlcnRlZCA9PT0gZGV0YWlscy5pbnNlcnRlZCAmJiB0aGlzLnRhaWxTaGlmdCA9PT0gZGV0YWlscy50YWlsU2hpZnQgJiYgdGhpcy5yYXdJbnNlcnRlZCA9PT0gZGV0YWlscy5yYXdJbnNlcnRlZCAmJiB0aGlzLnNraXAgPT09IGRldGFpbHMuc2tpcDtcbiAgfVxufVxuSU1hc2suQ2hhbmdlRGV0YWlscyA9IENoYW5nZURldGFpbHM7XG5cbmV4cG9ydCB7IENoYW5nZURldGFpbHMgYXMgZGVmYXVsdCB9O1xuIiwgIi8qKiBQcm92aWRlcyBkZXRhaWxzIG9mIGNvbnRpbnVvdXMgZXh0cmFjdGVkIHRhaWwgKi9cbmNsYXNzIENvbnRpbnVvdXNUYWlsRGV0YWlscyB7XG4gIC8qKiBUYWlsIHZhbHVlIGFzIHN0cmluZyAqL1xuXG4gIC8qKiBUYWlsIHN0YXJ0IHBvc2l0aW9uICovXG5cbiAgLyoqIFN0YXJ0IHBvc2l0aW9uICovXG5cbiAgY29uc3RydWN0b3IodmFsdWUsIGZyb20sIHN0b3ApIHtcbiAgICBpZiAodmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgdmFsdWUgPSAnJztcbiAgICB9XG4gICAgaWYgKGZyb20gPT09IHZvaWQgMCkge1xuICAgICAgZnJvbSA9IDA7XG4gICAgfVxuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZyb20gPSBmcm9tO1xuICAgIHRoaXMuc3RvcCA9IHN0b3A7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cbiAgZXh0ZW5kKHRhaWwpIHtcbiAgICB0aGlzLnZhbHVlICs9IFN0cmluZyh0YWlsKTtcbiAgfVxuICBhcHBlbmRUbyhtYXNrZWQpIHtcbiAgICByZXR1cm4gbWFza2VkLmFwcGVuZCh0aGlzLnRvU3RyaW5nKCksIHtcbiAgICAgIHRhaWw6IHRydWVcbiAgICB9KS5hZ2dyZWdhdGUobWFza2VkLl9hcHBlbmRQbGFjZWhvbGRlcigpKTtcbiAgfVxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgZnJvbTogdGhpcy5mcm9tLFxuICAgICAgc3RvcDogdGhpcy5zdG9wXG4gICAgfTtcbiAgfVxuICBzZXQgc3RhdGUoc3RhdGUpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIHN0YXRlKTtcbiAgfVxuICB1bnNoaWZ0KGJlZm9yZVBvcykge1xuICAgIGlmICghdGhpcy52YWx1ZS5sZW5ndGggfHwgYmVmb3JlUG9zICE9IG51bGwgJiYgdGhpcy5mcm9tID49IGJlZm9yZVBvcykgcmV0dXJuICcnO1xuICAgIGNvbnN0IHNoaWZ0Q2hhciA9IHRoaXMudmFsdWVbMF07XG4gICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc2xpY2UoMSk7XG4gICAgcmV0dXJuIHNoaWZ0Q2hhcjtcbiAgfVxuICBzaGlmdCgpIHtcbiAgICBpZiAoIXRoaXMudmFsdWUubGVuZ3RoKSByZXR1cm4gJyc7XG4gICAgY29uc3Qgc2hpZnRDaGFyID0gdGhpcy52YWx1ZVt0aGlzLnZhbHVlLmxlbmd0aCAtIDFdO1xuICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnNsaWNlKDAsIC0xKTtcbiAgICByZXR1cm4gc2hpZnRDaGFyO1xuICB9XG59XG5cbmV4cG9ydCB7IENvbnRpbnVvdXNUYWlsRGV0YWlscyBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IENoYW5nZURldGFpbHMgZnJvbSAnLi4vY29yZS9jaGFuZ2UtZGV0YWlscy5qcyc7XG5pbXBvcnQgQ29udGludW91c1RhaWxEZXRhaWxzIGZyb20gJy4uL2NvcmUvY29udGludW91cy10YWlsLWRldGFpbHMuanMnO1xuaW1wb3J0IHsgaXNTdHJpbmcsIERJUkVDVElPTiwgb2JqZWN0SW5jbHVkZXMsIGZvcmNlRGlyZWN0aW9uIH0gZnJvbSAnLi4vY29yZS91dGlscy5qcyc7XG5pbXBvcnQgSU1hc2sgZnJvbSAnLi4vY29yZS9ob2xkZXIuanMnO1xuXG4vKiogQXBwZW5kIGZsYWdzICovXG5cbi8qKiBFeHRyYWN0IGZsYWdzICovXG5cbi8vIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbWljcm9zb2Z0L1R5cGVTY3JpcHQvaXNzdWVzLzYyMjNcblxuLyoqIFByb3ZpZGVzIGNvbW1vbiBtYXNraW5nIHN0dWZmICovXG5jbGFzcyBNYXNrZWQge1xuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogVHJhbnNmb3JtcyB2YWx1ZSBiZWZvcmUgbWFzayBwcm9jZXNzaW5nICovXG5cbiAgLyoqIFRyYW5zZm9ybXMgZWFjaCBjaGFyIGJlZm9yZSBtYXNrIHByb2Nlc3NpbmcgKi9cblxuICAvKiogVmFsaWRhdGVzIGlmIHZhbHVlIGlzIGFjY2VwdGFibGUgKi9cblxuICAvKiogRG9lcyBhZGRpdGlvbmFsIHByb2Nlc3NpbmcgYXQgdGhlIGVuZCBvZiBlZGl0aW5nICovXG5cbiAgLyoqIEZvcm1hdCB0eXBlZCB2YWx1ZSB0byBzdHJpbmcgKi9cblxuICAvKiogUGFyc2Ugc3RyaW5nIHRvIGdldCB0eXBlZCB2YWx1ZSAqL1xuXG4gIC8qKiBFbmFibGUgY2hhcmFjdGVycyBvdmVyd3JpdGluZyAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICB0aGlzLl92YWx1ZSA9ICcnO1xuICAgIHRoaXMuX3VwZGF0ZSh7XG4gICAgICAuLi5NYXNrZWQuREVGQVVMVFMsXG4gICAgICAuLi5vcHRzXG4gICAgfSk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZWQgPSB0cnVlO1xuICB9XG5cbiAgLyoqIFNldHMgYW5kIGFwcGxpZXMgbmV3IG9wdGlvbnMgKi9cbiAgdXBkYXRlT3B0aW9ucyhvcHRzKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnNJc0NoYW5nZWQob3B0cykpIHJldHVybjtcbiAgICB0aGlzLndpdGhWYWx1ZVJlZnJlc2godGhpcy5fdXBkYXRlLmJpbmQodGhpcywgb3B0cykpO1xuICB9XG5cbiAgLyoqIFNldHMgbmV3IG9wdGlvbnMgKi9cbiAgX3VwZGF0ZShvcHRzKSB7XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBvcHRzKTtcbiAgfVxuXG4gIC8qKiBNYXNrIHN0YXRlICovXG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX3ZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgX3Jhd0lucHV0VmFsdWU6IHRoaXMucmF3SW5wdXRWYWx1ZVxuICAgIH07XG4gIH1cbiAgc2V0IHN0YXRlKHN0YXRlKSB7XG4gICAgdGhpcy5fdmFsdWUgPSBzdGF0ZS5fdmFsdWU7XG4gIH1cblxuICAvKiogUmVzZXRzIHZhbHVlICovXG4gIHJlc2V0KCkge1xuICAgIHRoaXMuX3ZhbHVlID0gJyc7XG4gIH1cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBzZXQgdmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLnJlc29sdmUodmFsdWUsIHtcbiAgICAgIGlucHV0OiB0cnVlXG4gICAgfSk7XG4gIH1cblxuICAvKiogUmVzb2x2ZSBuZXcgdmFsdWUgKi9cbiAgcmVzb2x2ZSh2YWx1ZSwgZmxhZ3MpIHtcbiAgICBpZiAoZmxhZ3MgPT09IHZvaWQgMCkge1xuICAgICAgZmxhZ3MgPSB7XG4gICAgICAgIGlucHV0OiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICB0aGlzLnJlc2V0KCk7XG4gICAgdGhpcy5hcHBlbmQodmFsdWUsIGZsYWdzLCAnJyk7XG4gICAgdGhpcy5kb0NvbW1pdCgpO1xuICB9XG4gIGdldCB1bm1hc2tlZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG4gIHNldCB1bm1hc2tlZFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5yZXNvbHZlKHZhbHVlLCB7fSk7XG4gIH1cbiAgZ2V0IHR5cGVkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFyc2UgPyB0aGlzLnBhcnNlKHRoaXMudmFsdWUsIHRoaXMpIDogdGhpcy51bm1hc2tlZFZhbHVlO1xuICB9XG4gIHNldCB0eXBlZFZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHRoaXMuZm9ybWF0KSB7XG4gICAgICB0aGlzLnZhbHVlID0gdGhpcy5mb3JtYXQodmFsdWUsIHRoaXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnVubWFza2VkVmFsdWUgPSBTdHJpbmcodmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBWYWx1ZSB0aGF0IGluY2x1ZGVzIHJhdyB1c2VyIGlucHV0ICovXG4gIGdldCByYXdJbnB1dFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmV4dHJhY3RJbnB1dCgwLCB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGgsIHtcbiAgICAgIHJhdzogdHJ1ZVxuICAgIH0pO1xuICB9XG4gIHNldCByYXdJbnB1dFZhbHVlKHZhbHVlKSB7XG4gICAgdGhpcy5yZXNvbHZlKHZhbHVlLCB7XG4gICAgICByYXc6IHRydWVcbiAgICB9KTtcbiAgfVxuICBnZXQgZGlzcGxheVZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlO1xuICB9XG4gIGdldCBpc0NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGdldCBpc0ZpbGxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5pc0NvbXBsZXRlO1xuICB9XG5cbiAgLyoqIEZpbmRzIG5lYXJlc3QgaW5wdXQgcG9zaXRpb24gaW4gZGlyZWN0aW9uICovXG4gIG5lYXJlc3RJbnB1dFBvcyhjdXJzb3JQb3MsIGRpcmVjdGlvbikge1xuICAgIHJldHVybiBjdXJzb3JQb3M7XG4gIH1cbiAgdG90YWxJbnB1dFBvc2l0aW9ucyhmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBNYXRoLm1pbih0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGgsIHRvUG9zIC0gZnJvbVBvcyk7XG4gIH1cblxuICAvKiogRXh0cmFjdHMgdmFsdWUgaW4gcmFuZ2UgY29uc2lkZXJpbmcgZmxhZ3MgKi9cbiAgZXh0cmFjdElucHV0KGZyb21Qb3MsIHRvUG9zLCBmbGFncykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmRpc3BsYXlWYWx1ZS5zbGljZShmcm9tUG9zLCB0b1Bvcyk7XG4gIH1cblxuICAvKiogRXh0cmFjdHMgdGFpbCBpbiByYW5nZSAqL1xuICBleHRyYWN0VGFpbChmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiBuZXcgQ29udGludW91c1RhaWxEZXRhaWxzKHRoaXMuZXh0cmFjdElucHV0KGZyb21Qb3MsIHRvUG9zKSwgZnJvbVBvcyk7XG4gIH1cblxuICAvKiogQXBwZW5kcyB0YWlsICovXG4gIGFwcGVuZFRhaWwodGFpbCkge1xuICAgIGlmIChpc1N0cmluZyh0YWlsKSkgdGFpbCA9IG5ldyBDb250aW51b3VzVGFpbERldGFpbHMoU3RyaW5nKHRhaWwpKTtcbiAgICByZXR1cm4gdGFpbC5hcHBlbmRUbyh0aGlzKTtcbiAgfVxuXG4gIC8qKiBBcHBlbmRzIGNoYXIgKi9cbiAgX2FwcGVuZENoYXJSYXcoY2gsIGZsYWdzKSB7XG4gICAgaWYgKCFjaCkgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgdGhpcy5fdmFsdWUgKz0gY2g7XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKHtcbiAgICAgIGluc2VydGVkOiBjaCxcbiAgICAgIHJhd0luc2VydGVkOiBjaFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEFwcGVuZHMgY2hhciAqL1xuICBfYXBwZW5kQ2hhcihjaCwgZmxhZ3MsIGNoZWNrVGFpbCkge1xuICAgIGlmIChmbGFncyA9PT0gdm9pZCAwKSB7XG4gICAgICBmbGFncyA9IHt9O1xuICAgIH1cbiAgICBjb25zdCBjb25zaXN0ZW50U3RhdGUgPSB0aGlzLnN0YXRlO1xuICAgIGxldCBkZXRhaWxzO1xuICAgIFtjaCwgZGV0YWlsc10gPSB0aGlzLmRvUHJlcGFyZUNoYXIoY2gsIGZsYWdzKTtcbiAgICBpZiAoY2gpIHtcbiAgICAgIGRldGFpbHMgPSBkZXRhaWxzLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRDaGFyUmF3KGNoLCBmbGFncykpO1xuXG4gICAgICAvLyBUT0RPIGhhbmRsZSBgc2tpcGA/XG5cbiAgICAgIC8vIHRyeSBgYXV0b2ZpeGAgbG9va2FoZWFkXG4gICAgICBpZiAoIWRldGFpbHMucmF3SW5zZXJ0ZWQgJiYgdGhpcy5hdXRvZml4ID09PSAncGFkJykge1xuICAgICAgICBjb25zdCBub0ZpeFN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnNpc3RlbnRTdGF0ZTtcbiAgICAgICAgbGV0IGZpeERldGFpbHMgPSB0aGlzLnBhZChmbGFncyk7XG4gICAgICAgIGNvbnN0IGNoRGV0YWlscyA9IHRoaXMuX2FwcGVuZENoYXJSYXcoY2gsIGZsYWdzKTtcbiAgICAgICAgZml4RGV0YWlscyA9IGZpeERldGFpbHMuYWdncmVnYXRlKGNoRGV0YWlscyk7XG5cbiAgICAgICAgLy8gaWYgZml4IHdhcyBhcHBsaWVkIG9yXG4gICAgICAgIC8vIGlmIGRldGFpbHMgYXJlIGVxdWFsIHVzZSBza2lwIHJlc3RvcmluZyBzdGF0ZSBvcHRpbWl6YXRpb25cbiAgICAgICAgaWYgKGNoRGV0YWlscy5yYXdJbnNlcnRlZCB8fCBmaXhEZXRhaWxzLmVxdWFscyhkZXRhaWxzKSkge1xuICAgICAgICAgIGRldGFpbHMgPSBmaXhEZXRhaWxzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3RhdGUgPSBub0ZpeFN0YXRlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChkZXRhaWxzLmluc2VydGVkKSB7XG4gICAgICBsZXQgY29uc2lzdGVudFRhaWw7XG4gICAgICBsZXQgYXBwZW5kZWQgPSB0aGlzLmRvVmFsaWRhdGUoZmxhZ3MpICE9PSBmYWxzZTtcbiAgICAgIGlmIChhcHBlbmRlZCAmJiBjaGVja1RhaWwgIT0gbnVsbCkge1xuICAgICAgICAvLyB2YWxpZGF0aW9uIG9rLCBjaGVjayB0YWlsXG4gICAgICAgIGNvbnN0IGJlZm9yZVRhaWxTdGF0ZSA9IHRoaXMuc3RhdGU7XG4gICAgICAgIGlmICh0aGlzLm92ZXJ3cml0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgIGNvbnNpc3RlbnRUYWlsID0gY2hlY2tUYWlsLnN0YXRlO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlscy5yYXdJbnNlcnRlZC5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY2hlY2tUYWlsLnVuc2hpZnQodGhpcy5kaXNwbGF5VmFsdWUubGVuZ3RoIC0gZGV0YWlscy50YWlsU2hpZnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgdGFpbERldGFpbHMgPSB0aGlzLmFwcGVuZFRhaWwoY2hlY2tUYWlsKTtcbiAgICAgICAgYXBwZW5kZWQgPSB0YWlsRGV0YWlscy5yYXdJbnNlcnRlZC5sZW5ndGggPT09IGNoZWNrVGFpbC50b1N0cmluZygpLmxlbmd0aDtcblxuICAgICAgICAvLyBub3Qgb2ssIHRyeSBzaGlmdFxuICAgICAgICBpZiAoIShhcHBlbmRlZCAmJiB0YWlsRGV0YWlscy5pbnNlcnRlZCkgJiYgdGhpcy5vdmVyd3JpdGUgPT09ICdzaGlmdCcpIHtcbiAgICAgICAgICB0aGlzLnN0YXRlID0gYmVmb3JlVGFpbFN0YXRlO1xuICAgICAgICAgIGNvbnNpc3RlbnRUYWlsID0gY2hlY2tUYWlsLnN0YXRlO1xuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGV0YWlscy5yYXdJbnNlcnRlZC5sZW5ndGg7ICsraSkge1xuICAgICAgICAgICAgY2hlY2tUYWlsLnNoaWZ0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRhaWxEZXRhaWxzID0gdGhpcy5hcHBlbmRUYWlsKGNoZWNrVGFpbCk7XG4gICAgICAgICAgYXBwZW5kZWQgPSB0YWlsRGV0YWlscy5yYXdJbnNlcnRlZC5sZW5ndGggPT09IGNoZWNrVGFpbC50b1N0cmluZygpLmxlbmd0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGlmIG9rLCByb2xsYmFjayBzdGF0ZSBhZnRlciB0YWlsXG4gICAgICAgIGlmIChhcHBlbmRlZCAmJiB0YWlsRGV0YWlscy5pbnNlcnRlZCkgdGhpcy5zdGF0ZSA9IGJlZm9yZVRhaWxTdGF0ZTtcbiAgICAgIH1cblxuICAgICAgLy8gcmV2ZXJ0IGFsbCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZ1xuICAgICAgaWYgKCFhcHBlbmRlZCkge1xuICAgICAgICBkZXRhaWxzID0gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgICAgICAgdGhpcy5zdGF0ZSA9IGNvbnNpc3RlbnRTdGF0ZTtcbiAgICAgICAgaWYgKGNoZWNrVGFpbCAmJiBjb25zaXN0ZW50VGFpbCkgY2hlY2tUYWlsLnN0YXRlID0gY29uc2lzdGVudFRhaWw7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBkZXRhaWxzO1xuICB9XG5cbiAgLyoqIEFwcGVuZHMgb3B0aW9uYWwgcGxhY2Vob2xkZXIgYXQgdGhlIGVuZCAqL1xuICBfYXBwZW5kUGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gIH1cblxuICAvKiogQXBwZW5kcyBvcHRpb25hbCBlYWdlciBwbGFjZWhvbGRlciBhdCB0aGUgZW5kICovXG4gIF9hcHBlbmRFYWdlcigpIHtcbiAgICByZXR1cm4gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgfVxuXG4gIC8qKiBBcHBlbmRzIHN5bWJvbHMgY29uc2lkZXJpbmcgZmxhZ3MgKi9cbiAgYXBwZW5kKHN0ciwgZmxhZ3MsIHRhaWwpIHtcbiAgICBpZiAoIWlzU3RyaW5nKHN0cikpIHRocm93IG5ldyBFcnJvcigndmFsdWUgc2hvdWxkIGJlIHN0cmluZycpO1xuICAgIGNvbnN0IGNoZWNrVGFpbCA9IGlzU3RyaW5nKHRhaWwpID8gbmV3IENvbnRpbnVvdXNUYWlsRGV0YWlscyhTdHJpbmcodGFpbCkpIDogdGFpbDtcbiAgICBpZiAoZmxhZ3MgIT0gbnVsbCAmJiBmbGFncy50YWlsKSBmbGFncy5fYmVmb3JlVGFpbFN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICBsZXQgZGV0YWlscztcbiAgICBbc3RyLCBkZXRhaWxzXSA9IHRoaXMuZG9QcmVwYXJlKHN0ciwgZmxhZ3MpO1xuICAgIGZvciAobGV0IGNpID0gMDsgY2kgPCBzdHIubGVuZ3RoOyArK2NpKSB7XG4gICAgICBjb25zdCBkID0gdGhpcy5fYXBwZW5kQ2hhcihzdHJbY2ldLCBmbGFncywgY2hlY2tUYWlsKTtcbiAgICAgIGlmICghZC5yYXdJbnNlcnRlZCAmJiAhdGhpcy5kb1NraXBJbnZhbGlkKHN0cltjaV0sIGZsYWdzLCBjaGVja1RhaWwpKSBicmVhaztcbiAgICAgIGRldGFpbHMuYWdncmVnYXRlKGQpO1xuICAgIH1cbiAgICBpZiAoKHRoaXMuZWFnZXIgPT09IHRydWUgfHwgdGhpcy5lYWdlciA9PT0gJ2FwcGVuZCcpICYmIGZsYWdzICE9IG51bGwgJiYgZmxhZ3MuaW5wdXQgJiYgc3RyKSB7XG4gICAgICBkZXRhaWxzLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRFYWdlcigpKTtcbiAgICB9XG5cbiAgICAvLyBhcHBlbmQgdGFpbCBidXQgYWdncmVnYXRlIG9ubHkgdGFpbFNoaWZ0XG4gICAgaWYgKGNoZWNrVGFpbCAhPSBudWxsKSB7XG4gICAgICBkZXRhaWxzLnRhaWxTaGlmdCArPSB0aGlzLmFwcGVuZFRhaWwoY2hlY2tUYWlsKS50YWlsU2hpZnQ7XG4gICAgICAvLyBUT0RPIGl0J3MgYSBnb29kIGlkZWEgdG8gY2xlYXIgc3RhdGUgYWZ0ZXIgYXBwZW5kaW5nIGVuZHNcbiAgICAgIC8vIGJ1dCBpdCBjYXVzZXMgYnVncyB3aGVuIG9uZSBhcHBlbmQgY2FsbHMgYW5vdGhlciAod2hlbiBkeW5hbWljIGRpc3BhdGNoIHNldCByYXdJbnB1dFZhbHVlKVxuICAgICAgLy8gdGhpcy5fcmVzZXRCZWZvcmVUYWlsU3RhdGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIGRldGFpbHM7XG4gIH1cbiAgcmVtb3ZlKGZyb21Qb3MsIHRvUG9zKSB7XG4gICAgaWYgKGZyb21Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgZnJvbVBvcyA9IDA7XG4gICAgfVxuICAgIGlmICh0b1BvcyA9PT0gdm9pZCAwKSB7XG4gICAgICB0b1BvcyA9IHRoaXMuZGlzcGxheVZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLmRpc3BsYXlWYWx1ZS5zbGljZSgwLCBmcm9tUG9zKSArIHRoaXMuZGlzcGxheVZhbHVlLnNsaWNlKHRvUG9zKTtcbiAgICByZXR1cm4gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgfVxuXG4gIC8qKiBDYWxscyBmdW5jdGlvbiBhbmQgcmVhcHBsaWVzIGN1cnJlbnQgdmFsdWUgKi9cbiAgd2l0aFZhbHVlUmVmcmVzaChmbikge1xuICAgIGlmICh0aGlzLl9yZWZyZXNoaW5nIHx8ICF0aGlzLl9pbml0aWFsaXplZCkgcmV0dXJuIGZuKCk7XG4gICAgdGhpcy5fcmVmcmVzaGluZyA9IHRydWU7XG4gICAgY29uc3QgcmF3SW5wdXQgPSB0aGlzLnJhd0lucHV0VmFsdWU7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIGNvbnN0IHJldCA9IGZuKCk7XG4gICAgdGhpcy5yYXdJbnB1dFZhbHVlID0gcmF3SW5wdXQ7XG4gICAgLy8gYXBwZW5kIGxvc3QgdHJhaWxpbmcgY2hhcnMgYXQgdGhlIGVuZFxuICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUgIT09IHZhbHVlICYmIHZhbHVlLmluZGV4T2YodGhpcy52YWx1ZSkgPT09IDApIHtcbiAgICAgIHRoaXMuYXBwZW5kKHZhbHVlLnNsaWNlKHRoaXMuZGlzcGxheVZhbHVlLmxlbmd0aCksIHt9LCAnJyk7XG4gICAgICB0aGlzLmRvQ29tbWl0KCk7XG4gICAgfVxuICAgIGRlbGV0ZSB0aGlzLl9yZWZyZXNoaW5nO1xuICAgIHJldHVybiByZXQ7XG4gIH1cbiAgcnVuSXNvbGF0ZWQoZm4pIHtcbiAgICBpZiAodGhpcy5faXNvbGF0ZWQgfHwgIXRoaXMuX2luaXRpYWxpemVkKSByZXR1cm4gZm4odGhpcyk7XG4gICAgdGhpcy5faXNvbGF0ZWQgPSB0cnVlO1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5zdGF0ZTtcbiAgICBjb25zdCByZXQgPSBmbih0aGlzKTtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgZGVsZXRlIHRoaXMuX2lzb2xhdGVkO1xuICAgIHJldHVybiByZXQ7XG4gIH1cbiAgZG9Ta2lwSW52YWxpZChjaCwgZmxhZ3MsIGNoZWNrVGFpbCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuc2tpcEludmFsaWQpO1xuICB9XG5cbiAgLyoqIFByZXBhcmVzIHN0cmluZyBiZWZvcmUgbWFzayBwcm9jZXNzaW5nICovXG4gIGRvUHJlcGFyZShzdHIsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIHJldHVybiBDaGFuZ2VEZXRhaWxzLm5vcm1hbGl6ZSh0aGlzLnByZXBhcmUgPyB0aGlzLnByZXBhcmUoc3RyLCB0aGlzLCBmbGFncykgOiBzdHIpO1xuICB9XG5cbiAgLyoqIFByZXBhcmVzIGVhY2ggY2hhciBiZWZvcmUgbWFzayBwcm9jZXNzaW5nICovXG4gIGRvUHJlcGFyZUNoYXIoc3RyLCBmbGFncykge1xuICAgIGlmIChmbGFncyA9PT0gdm9pZCAwKSB7XG4gICAgICBmbGFncyA9IHt9O1xuICAgIH1cbiAgICByZXR1cm4gQ2hhbmdlRGV0YWlscy5ub3JtYWxpemUodGhpcy5wcmVwYXJlQ2hhciA/IHRoaXMucHJlcGFyZUNoYXIoc3RyLCB0aGlzLCBmbGFncykgOiBzdHIpO1xuICB9XG5cbiAgLyoqIFZhbGlkYXRlcyBpZiB2YWx1ZSBpcyBhY2NlcHRhYmxlICovXG4gIGRvVmFsaWRhdGUoZmxhZ3MpIHtcbiAgICByZXR1cm4gKCF0aGlzLnZhbGlkYXRlIHx8IHRoaXMudmFsaWRhdGUodGhpcy52YWx1ZSwgdGhpcywgZmxhZ3MpKSAmJiAoIXRoaXMucGFyZW50IHx8IHRoaXMucGFyZW50LmRvVmFsaWRhdGUoZmxhZ3MpKTtcbiAgfVxuXG4gIC8qKiBEb2VzIGFkZGl0aW9uYWwgcHJvY2Vzc2luZyBhdCB0aGUgZW5kIG9mIGVkaXRpbmcgKi9cbiAgZG9Db21taXQoKSB7XG4gICAgaWYgKHRoaXMuY29tbWl0KSB0aGlzLmNvbW1pdCh0aGlzLnZhbHVlLCB0aGlzKTtcbiAgfVxuICBzcGxpY2Uoc3RhcnQsIGRlbGV0ZUNvdW50LCBpbnNlcnRlZCwgcmVtb3ZlRGlyZWN0aW9uLCBmbGFncykge1xuICAgIGlmIChpbnNlcnRlZCA9PT0gdm9pZCAwKSB7XG4gICAgICBpbnNlcnRlZCA9ICcnO1xuICAgIH1cbiAgICBpZiAocmVtb3ZlRGlyZWN0aW9uID09PSB2b2lkIDApIHtcbiAgICAgIHJlbW92ZURpcmVjdGlvbiA9IERJUkVDVElPTi5OT05FO1xuICAgIH1cbiAgICBpZiAoZmxhZ3MgPT09IHZvaWQgMCkge1xuICAgICAgZmxhZ3MgPSB7XG4gICAgICAgIGlucHV0OiB0cnVlXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB0YWlsUG9zID0gc3RhcnQgKyBkZWxldGVDb3VudDtcbiAgICBjb25zdCB0YWlsID0gdGhpcy5leHRyYWN0VGFpbCh0YWlsUG9zKTtcbiAgICBjb25zdCBlYWdlclJlbW92ZSA9IHRoaXMuZWFnZXIgPT09IHRydWUgfHwgdGhpcy5lYWdlciA9PT0gJ3JlbW92ZSc7XG4gICAgbGV0IG9sZFJhd1ZhbHVlO1xuICAgIGlmIChlYWdlclJlbW92ZSkge1xuICAgICAgcmVtb3ZlRGlyZWN0aW9uID0gZm9yY2VEaXJlY3Rpb24ocmVtb3ZlRGlyZWN0aW9uKTtcbiAgICAgIG9sZFJhd1ZhbHVlID0gdGhpcy5leHRyYWN0SW5wdXQoMCwgdGFpbFBvcywge1xuICAgICAgICByYXc6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBsZXQgc3RhcnRDaGFuZ2VQb3MgPSBzdGFydDtcbiAgICBjb25zdCBkZXRhaWxzID0gbmV3IENoYW5nZURldGFpbHMoKTtcblxuICAgIC8vIGlmIGl0IGlzIGp1c3QgZGVsZXRpb24gd2l0aG91dCBpbnNlcnRpb25cbiAgICBpZiAocmVtb3ZlRGlyZWN0aW9uICE9PSBESVJFQ1RJT04uTk9ORSkge1xuICAgICAgc3RhcnRDaGFuZ2VQb3MgPSB0aGlzLm5lYXJlc3RJbnB1dFBvcyhzdGFydCwgZGVsZXRlQ291bnQgPiAxICYmIHN0YXJ0ICE9PSAwICYmICFlYWdlclJlbW92ZSA/IERJUkVDVElPTi5OT05FIDogcmVtb3ZlRGlyZWN0aW9uKTtcblxuICAgICAgLy8gYWRqdXN0IHRhaWxTaGlmdCBpZiBzdGFydCB3YXMgYWxpZ25lZFxuICAgICAgZGV0YWlscy50YWlsU2hpZnQgPSBzdGFydENoYW5nZVBvcyAtIHN0YXJ0O1xuICAgIH1cbiAgICBkZXRhaWxzLmFnZ3JlZ2F0ZSh0aGlzLnJlbW92ZShzdGFydENoYW5nZVBvcykpO1xuICAgIGlmIChlYWdlclJlbW92ZSAmJiByZW1vdmVEaXJlY3Rpb24gIT09IERJUkVDVElPTi5OT05FICYmIG9sZFJhd1ZhbHVlID09PSB0aGlzLnJhd0lucHV0VmFsdWUpIHtcbiAgICAgIGlmIChyZW1vdmVEaXJlY3Rpb24gPT09IERJUkVDVElPTi5GT1JDRV9MRUZUKSB7XG4gICAgICAgIGxldCB2YWxMZW5ndGg7XG4gICAgICAgIHdoaWxlIChvbGRSYXdWYWx1ZSA9PT0gdGhpcy5yYXdJbnB1dFZhbHVlICYmICh2YWxMZW5ndGggPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGgpKSB7XG4gICAgICAgICAgZGV0YWlscy5hZ2dyZWdhdGUobmV3IENoYW5nZURldGFpbHMoe1xuICAgICAgICAgICAgdGFpbFNoaWZ0OiAtMVxuICAgICAgICAgIH0pKS5hZ2dyZWdhdGUodGhpcy5yZW1vdmUodmFsTGVuZ3RoIC0gMSkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHJlbW92ZURpcmVjdGlvbiA9PT0gRElSRUNUSU9OLkZPUkNFX1JJR0hUKSB7XG4gICAgICAgIHRhaWwudW5zaGlmdCgpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGV0YWlscy5hZ2dyZWdhdGUodGhpcy5hcHBlbmQoaW5zZXJ0ZWQsIGZsYWdzLCB0YWlsKSk7XG4gIH1cbiAgbWFza0VxdWFscyhtYXNrKSB7XG4gICAgcmV0dXJuIHRoaXMubWFzayA9PT0gbWFzaztcbiAgfVxuICBvcHRpb25zSXNDaGFuZ2VkKG9wdHMpIHtcbiAgICByZXR1cm4gIW9iamVjdEluY2x1ZGVzKHRoaXMsIG9wdHMpO1xuICB9XG4gIHR5cGVkVmFsdWVFcXVhbHModmFsdWUpIHtcbiAgICBjb25zdCB0dmFsID0gdGhpcy50eXBlZFZhbHVlO1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdHZhbCB8fCBNYXNrZWQuRU1QVFlfVkFMVUVTLmluY2x1ZGVzKHZhbHVlKSAmJiBNYXNrZWQuRU1QVFlfVkFMVUVTLmluY2x1ZGVzKHR2YWwpIHx8ICh0aGlzLmZvcm1hdCA/IHRoaXMuZm9ybWF0KHZhbHVlLCB0aGlzKSA9PT0gdGhpcy5mb3JtYXQodGhpcy50eXBlZFZhbHVlLCB0aGlzKSA6IGZhbHNlKTtcbiAgfVxuICBwYWQoZmxhZ3MpIHtcbiAgICByZXR1cm4gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgfVxufVxuTWFza2VkLkRFRkFVTFRTID0ge1xuICBza2lwSW52YWxpZDogdHJ1ZVxufTtcbk1hc2tlZC5FTVBUWV9WQUxVRVMgPSBbdW5kZWZpbmVkLCBudWxsLCAnJ107XG5JTWFzay5NYXNrZWQgPSBNYXNrZWQ7XG5cbmV4cG9ydCB7IE1hc2tlZCBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IENoYW5nZURldGFpbHMgZnJvbSAnLi4vLi4vY29yZS9jaGFuZ2UtZGV0YWlscy5qcyc7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMuanMnO1xuaW1wb3J0IENvbnRpbnVvdXNUYWlsRGV0YWlscyBmcm9tICcuLi8uLi9jb3JlL2NvbnRpbnVvdXMtdGFpbC1kZXRhaWxzLmpzJztcbmltcG9ydCBJTWFzayBmcm9tICcuLi8uLi9jb3JlL2hvbGRlci5qcyc7XG5cbmNsYXNzIENodW5rc1RhaWxEZXRhaWxzIHtcbiAgLyoqICovXG5cbiAgY29uc3RydWN0b3IoY2h1bmtzLCBmcm9tKSB7XG4gICAgaWYgKGNodW5rcyA9PT0gdm9pZCAwKSB7XG4gICAgICBjaHVua3MgPSBbXTtcbiAgICB9XG4gICAgaWYgKGZyb20gPT09IHZvaWQgMCkge1xuICAgICAgZnJvbSA9IDA7XG4gICAgfVxuICAgIHRoaXMuY2h1bmtzID0gY2h1bmtzO1xuICAgIHRoaXMuZnJvbSA9IGZyb207XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2h1bmtzLm1hcChTdHJpbmcpLmpvaW4oJycpO1xuICB9XG4gIGV4dGVuZCh0YWlsQ2h1bmspIHtcbiAgICBpZiAoIVN0cmluZyh0YWlsQ2h1bmspKSByZXR1cm47XG4gICAgdGFpbENodW5rID0gaXNTdHJpbmcodGFpbENodW5rKSA/IG5ldyBDb250aW51b3VzVGFpbERldGFpbHMoU3RyaW5nKHRhaWxDaHVuaykpIDogdGFpbENodW5rO1xuICAgIGNvbnN0IGxhc3RDaHVuayA9IHRoaXMuY2h1bmtzW3RoaXMuY2h1bmtzLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IGV4dGVuZExhc3QgPSBsYXN0Q2h1bmsgJiYgKFxuICAgIC8vIGlmIHN0b3BzIGFyZSBzYW1lIG9yIHRhaWwgaGFzIG5vIHN0b3BcbiAgICBsYXN0Q2h1bmsuc3RvcCA9PT0gdGFpbENodW5rLnN0b3AgfHwgdGFpbENodW5rLnN0b3AgPT0gbnVsbCkgJiZcbiAgICAvLyBpZiB0YWlsIGNodW5rIGdvZXMganVzdCBhZnRlciBsYXN0IGNodW5rXG4gICAgdGFpbENodW5rLmZyb20gPT09IGxhc3RDaHVuay5mcm9tICsgbGFzdENodW5rLnRvU3RyaW5nKCkubGVuZ3RoO1xuICAgIGlmICh0YWlsQ2h1bmsgaW5zdGFuY2VvZiBDb250aW51b3VzVGFpbERldGFpbHMpIHtcbiAgICAgIC8vIGNoZWNrIHRoZSBhYmlsaXR5IHRvIGV4dGVuZCBwcmV2aW91cyBjaHVua1xuICAgICAgaWYgKGV4dGVuZExhc3QpIHtcbiAgICAgICAgLy8gZXh0ZW5kIHByZXZpb3VzIGNodW5rXG4gICAgICAgIGxhc3RDaHVuay5leHRlbmQodGFpbENodW5rLnRvU3RyaW5nKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gYXBwZW5kIG5ldyBjaHVua1xuICAgICAgICB0aGlzLmNodW5rcy5wdXNoKHRhaWxDaHVuayk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0YWlsQ2h1bmsgaW5zdGFuY2VvZiBDaHVua3NUYWlsRGV0YWlscykge1xuICAgICAgaWYgKHRhaWxDaHVuay5zdG9wID09IG51bGwpIHtcbiAgICAgICAgLy8gdW53cmFwIGZsb2F0aW5nIGNodW5rcyB0byBwYXJlbnQsIGtlZXBpbmcgYGZyb21gIHBvc1xuICAgICAgICBsZXQgZmlyc3RUYWlsQ2h1bms7XG4gICAgICAgIHdoaWxlICh0YWlsQ2h1bmsuY2h1bmtzLmxlbmd0aCAmJiB0YWlsQ2h1bmsuY2h1bmtzWzBdLnN0b3AgPT0gbnVsbCkge1xuICAgICAgICAgIGZpcnN0VGFpbENodW5rID0gdGFpbENodW5rLmNodW5rcy5zaGlmdCgpOyAvLyBub3QgcG9zc2libGUgdG8gYmUgYHVuZGVmaW5lZGAgYmVjYXVzZSBsZW5ndGggd2FzIGNoZWNrZWQgYWJvdmVcbiAgICAgICAgICBmaXJzdFRhaWxDaHVuay5mcm9tICs9IHRhaWxDaHVuay5mcm9tO1xuICAgICAgICAgIHRoaXMuZXh0ZW5kKGZpcnN0VGFpbENodW5rKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBpZiB0YWlsIGNodW5rIHN0aWxsIGhhcyB2YWx1ZVxuICAgICAgaWYgKHRhaWxDaHVuay50b1N0cmluZygpKSB7XG4gICAgICAgIC8vIGlmIGNodW5rcyBjb250YWlucyBzdG9wcywgdGhlbiBwb3B1cCBzdG9wIHRvIGNvbnRhaW5lclxuICAgICAgICB0YWlsQ2h1bmsuc3RvcCA9IHRhaWxDaHVuay5ibG9ja0luZGV4O1xuICAgICAgICB0aGlzLmNodW5rcy5wdXNoKHRhaWxDaHVuayk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGFwcGVuZFRvKG1hc2tlZCkge1xuICAgIGlmICghKG1hc2tlZCBpbnN0YW5jZW9mIElNYXNrLk1hc2tlZFBhdHRlcm4pKSB7XG4gICAgICBjb25zdCB0YWlsID0gbmV3IENvbnRpbnVvdXNUYWlsRGV0YWlscyh0aGlzLnRvU3RyaW5nKCkpO1xuICAgICAgcmV0dXJuIHRhaWwuYXBwZW5kVG8obWFza2VkKTtcbiAgICB9XG4gICAgY29uc3QgZGV0YWlscyA9IG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgZm9yIChsZXQgY2kgPSAwOyBjaSA8IHRoaXMuY2h1bmtzLmxlbmd0aDsgKytjaSkge1xuICAgICAgY29uc3QgY2h1bmsgPSB0aGlzLmNodW5rc1tjaV07XG4gICAgICBjb25zdCBsYXN0QmxvY2tJdGVyID0gbWFza2VkLl9tYXBQb3NUb0Jsb2NrKG1hc2tlZC5kaXNwbGF5VmFsdWUubGVuZ3RoKTtcbiAgICAgIGNvbnN0IHN0b3AgPSBjaHVuay5zdG9wO1xuICAgICAgbGV0IGNodW5rQmxvY2s7XG4gICAgICBpZiAoc3RvcCAhPSBudWxsICYmIChcbiAgICAgIC8vIGlmIGJsb2NrIG5vdCBmb3VuZCBvciBzdG9wIGlzIGJlaGluZCBsYXN0QmxvY2tcbiAgICAgICFsYXN0QmxvY2tJdGVyIHx8IGxhc3RCbG9ja0l0ZXIuaW5kZXggPD0gc3RvcCkpIHtcbiAgICAgICAgaWYgKGNodW5rIGluc3RhbmNlb2YgQ2h1bmtzVGFpbERldGFpbHMgfHxcbiAgICAgICAgLy8gZm9yIGNvbnRpbnVvdXMgYmxvY2sgYWxzbyBjaGVjayBpZiBzdG9wIGlzIGV4aXN0XG4gICAgICAgIG1hc2tlZC5fc3RvcHMuaW5kZXhPZihzdG9wKSA+PSAwKSB7XG4gICAgICAgICAgZGV0YWlscy5hZ2dyZWdhdGUobWFza2VkLl9hcHBlbmRQbGFjZWhvbGRlcihzdG9wKSk7XG4gICAgICAgIH1cbiAgICAgICAgY2h1bmtCbG9jayA9IGNodW5rIGluc3RhbmNlb2YgQ2h1bmtzVGFpbERldGFpbHMgJiYgbWFza2VkLl9ibG9ja3Nbc3RvcF07XG4gICAgICB9XG4gICAgICBpZiAoY2h1bmtCbG9jaykge1xuICAgICAgICBjb25zdCB0YWlsRGV0YWlscyA9IGNodW5rQmxvY2suYXBwZW5kVGFpbChjaHVuayk7XG4gICAgICAgIGRldGFpbHMuYWdncmVnYXRlKHRhaWxEZXRhaWxzKTtcblxuICAgICAgICAvLyBnZXQgbm90IGluc2VydGVkIGNoYXJzXG4gICAgICAgIGNvbnN0IHJlbWFpbkNoYXJzID0gY2h1bmsudG9TdHJpbmcoKS5zbGljZSh0YWlsRGV0YWlscy5yYXdJbnNlcnRlZC5sZW5ndGgpO1xuICAgICAgICBpZiAocmVtYWluQ2hhcnMpIGRldGFpbHMuYWdncmVnYXRlKG1hc2tlZC5hcHBlbmQocmVtYWluQ2hhcnMsIHtcbiAgICAgICAgICB0YWlsOiB0cnVlXG4gICAgICAgIH0pKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRldGFpbHMuYWdncmVnYXRlKG1hc2tlZC5hcHBlbmQoY2h1bmsudG9TdHJpbmcoKSwge1xuICAgICAgICAgIHRhaWw6IHRydWVcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGV0YWlscztcbiAgfVxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNodW5rczogdGhpcy5jaHVua3MubWFwKGMgPT4gYy5zdGF0ZSksXG4gICAgICBmcm9tOiB0aGlzLmZyb20sXG4gICAgICBzdG9wOiB0aGlzLnN0b3AsXG4gICAgICBibG9ja0luZGV4OiB0aGlzLmJsb2NrSW5kZXhcbiAgICB9O1xuICB9XG4gIHNldCBzdGF0ZShzdGF0ZSkge1xuICAgIGNvbnN0IHtcbiAgICAgIGNodW5rcyxcbiAgICAgIC4uLnByb3BzXG4gICAgfSA9IHN0YXRlO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcHJvcHMpO1xuICAgIHRoaXMuY2h1bmtzID0gY2h1bmtzLm1hcChjc3RhdGUgPT4ge1xuICAgICAgY29uc3QgY2h1bmsgPSBcImNodW5rc1wiIGluIGNzdGF0ZSA/IG5ldyBDaHVua3NUYWlsRGV0YWlscygpIDogbmV3IENvbnRpbnVvdXNUYWlsRGV0YWlscygpO1xuICAgICAgY2h1bmsuc3RhdGUgPSBjc3RhdGU7XG4gICAgICByZXR1cm4gY2h1bms7XG4gICAgfSk7XG4gIH1cbiAgdW5zaGlmdChiZWZvcmVQb3MpIHtcbiAgICBpZiAoIXRoaXMuY2h1bmtzLmxlbmd0aCB8fCBiZWZvcmVQb3MgIT0gbnVsbCAmJiB0aGlzLmZyb20gPj0gYmVmb3JlUG9zKSByZXR1cm4gJyc7XG4gICAgY29uc3QgY2h1bmtTaGlmdFBvcyA9IGJlZm9yZVBvcyAhPSBudWxsID8gYmVmb3JlUG9zIC0gdGhpcy5mcm9tIDogYmVmb3JlUG9zO1xuICAgIGxldCBjaSA9IDA7XG4gICAgd2hpbGUgKGNpIDwgdGhpcy5jaHVua3MubGVuZ3RoKSB7XG4gICAgICBjb25zdCBjaHVuayA9IHRoaXMuY2h1bmtzW2NpXTtcbiAgICAgIGNvbnN0IHNoaWZ0Q2hhciA9IGNodW5rLnVuc2hpZnQoY2h1bmtTaGlmdFBvcyk7XG4gICAgICBpZiAoY2h1bmsudG9TdHJpbmcoKSkge1xuICAgICAgICAvLyBjaHVuayBzdGlsbCBjb250YWlucyB2YWx1ZVxuICAgICAgICAvLyBidXQgbm90IHNoaWZ0ZWQgLSBtZWFucyBubyBtb3JlIGF2YWlsYWJsZSBjaGFycyB0byBzaGlmdFxuICAgICAgICBpZiAoIXNoaWZ0Q2hhcikgYnJlYWs7XG4gICAgICAgICsrY2k7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjbGVhbiBpZiBjaHVuayBoYXMgbm8gdmFsdWVcbiAgICAgICAgdGhpcy5jaHVua3Muc3BsaWNlKGNpLCAxKTtcbiAgICAgIH1cbiAgICAgIGlmIChzaGlmdENoYXIpIHJldHVybiBzaGlmdENoYXI7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuICBzaGlmdCgpIHtcbiAgICBpZiAoIXRoaXMuY2h1bmtzLmxlbmd0aCkgcmV0dXJuICcnO1xuICAgIGxldCBjaSA9IHRoaXMuY2h1bmtzLmxlbmd0aCAtIDE7XG4gICAgd2hpbGUgKDAgPD0gY2kpIHtcbiAgICAgIGNvbnN0IGNodW5rID0gdGhpcy5jaHVua3NbY2ldO1xuICAgICAgY29uc3Qgc2hpZnRDaGFyID0gY2h1bmsuc2hpZnQoKTtcbiAgICAgIGlmIChjaHVuay50b1N0cmluZygpKSB7XG4gICAgICAgIC8vIGNodW5rIHN0aWxsIGNvbnRhaW5zIHZhbHVlXG4gICAgICAgIC8vIGJ1dCBub3Qgc2hpZnRlZCAtIG1lYW5zIG5vIG1vcmUgYXZhaWxhYmxlIGNoYXJzIHRvIHNoaWZ0XG4gICAgICAgIGlmICghc2hpZnRDaGFyKSBicmVhaztcbiAgICAgICAgLS1jaTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNsZWFuIGlmIGNodW5rIGhhcyBubyB2YWx1ZVxuICAgICAgICB0aGlzLmNodW5rcy5zcGxpY2UoY2ksIDEpO1xuICAgICAgfVxuICAgICAgaWYgKHNoaWZ0Q2hhcikgcmV0dXJuIHNoaWZ0Q2hhcjtcbiAgICB9XG4gICAgcmV0dXJuICcnO1xuICB9XG59XG5cbmV4cG9ydCB7IENodW5rc1RhaWxEZXRhaWxzIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgeyBESVJFQ1RJT04gfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzLmpzJztcblxuY2xhc3MgUGF0dGVybkN1cnNvciB7XG4gIGNvbnN0cnVjdG9yKG1hc2tlZCwgcG9zKSB7XG4gICAgdGhpcy5tYXNrZWQgPSBtYXNrZWQ7XG4gICAgdGhpcy5fbG9nID0gW107XG4gICAgY29uc3Qge1xuICAgICAgb2Zmc2V0LFxuICAgICAgaW5kZXhcbiAgICB9ID0gbWFza2VkLl9tYXBQb3NUb0Jsb2NrKHBvcykgfHwgKHBvcyA8IDAgP1xuICAgIC8vIGZpcnN0XG4gICAge1xuICAgICAgaW5kZXg6IDAsXG4gICAgICBvZmZzZXQ6IDBcbiAgICB9IDpcbiAgICAvLyBsYXN0XG4gICAge1xuICAgICAgaW5kZXg6IHRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoLFxuICAgICAgb2Zmc2V0OiAwXG4gICAgfSk7XG4gICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7XG4gICAgdGhpcy5pbmRleCA9IGluZGV4O1xuICAgIHRoaXMub2sgPSBmYWxzZTtcbiAgfVxuICBnZXQgYmxvY2soKSB7XG4gICAgcmV0dXJuIHRoaXMubWFza2VkLl9ibG9ja3NbdGhpcy5pbmRleF07XG4gIH1cbiAgZ2V0IHBvcygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXNrZWQuX2Jsb2NrU3RhcnRQb3ModGhpcy5pbmRleCkgKyB0aGlzLm9mZnNldDtcbiAgfVxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGluZGV4OiB0aGlzLmluZGV4LFxuICAgICAgb2Zmc2V0OiB0aGlzLm9mZnNldCxcbiAgICAgIG9rOiB0aGlzLm9rXG4gICAgfTtcbiAgfVxuICBzZXQgc3RhdGUocykge1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywgcyk7XG4gIH1cbiAgcHVzaFN0YXRlKCkge1xuICAgIHRoaXMuX2xvZy5wdXNoKHRoaXMuc3RhdGUpO1xuICB9XG4gIHBvcFN0YXRlKCkge1xuICAgIGNvbnN0IHMgPSB0aGlzLl9sb2cucG9wKCk7XG4gICAgaWYgKHMpIHRoaXMuc3RhdGUgPSBzO1xuICAgIHJldHVybiBzO1xuICB9XG4gIGJpbmRCbG9jaygpIHtcbiAgICBpZiAodGhpcy5ibG9jaykgcmV0dXJuO1xuICAgIGlmICh0aGlzLmluZGV4IDwgMCkge1xuICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgfVxuICAgIGlmICh0aGlzLmluZGV4ID49IHRoaXMubWFza2VkLl9ibG9ja3MubGVuZ3RoKSB7XG4gICAgICB0aGlzLmluZGV4ID0gdGhpcy5tYXNrZWQuX2Jsb2Nrcy5sZW5ndGggLSAxO1xuICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLmJsb2NrLmRpc3BsYXlWYWx1ZS5sZW5ndGg7IC8vIFRPRE8gdGhpcyBpcyBzdHVwaWQgdHlwZSBlcnJvciwgYGJsb2NrYCBkZXBlbmRzIG9uIGluZGV4IHRoYXQgd2FzIGNoYW5nZWQgYWJvdmVcbiAgICB9XG4gIH1cbiAgX3B1c2hMZWZ0KGZuKSB7XG4gICAgdGhpcy5wdXNoU3RhdGUoKTtcbiAgICBmb3IgKHRoaXMuYmluZEJsb2NrKCk7IDAgPD0gdGhpcy5pbmRleDsgLS10aGlzLmluZGV4LCB0aGlzLm9mZnNldCA9ICgoX3RoaXMkYmxvY2sgPSB0aGlzLmJsb2NrKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkYmxvY2suZGlzcGxheVZhbHVlLmxlbmd0aCkgfHwgMCkge1xuICAgICAgdmFyIF90aGlzJGJsb2NrO1xuICAgICAgaWYgKGZuKCkpIHJldHVybiB0aGlzLm9rID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMub2sgPSBmYWxzZTtcbiAgfVxuICBfcHVzaFJpZ2h0KGZuKSB7XG4gICAgdGhpcy5wdXNoU3RhdGUoKTtcbiAgICBmb3IgKHRoaXMuYmluZEJsb2NrKCk7IHRoaXMuaW5kZXggPCB0aGlzLm1hc2tlZC5fYmxvY2tzLmxlbmd0aDsgKyt0aGlzLmluZGV4LCB0aGlzLm9mZnNldCA9IDApIHtcbiAgICAgIGlmIChmbigpKSByZXR1cm4gdGhpcy5vayA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9rID0gZmFsc2U7XG4gIH1cbiAgcHVzaExlZnRCZWZvcmVGaWxsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3B1c2hMZWZ0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmJsb2NrLmlzRml4ZWQgfHwgIXRoaXMuYmxvY2sudmFsdWUpIHJldHVybjtcbiAgICAgIHRoaXMub2Zmc2V0ID0gdGhpcy5ibG9jay5uZWFyZXN0SW5wdXRQb3ModGhpcy5vZmZzZXQsIERJUkVDVElPTi5GT1JDRV9MRUZUKTtcbiAgICAgIGlmICh0aGlzLm9mZnNldCAhPT0gMCkgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbiAgcHVzaExlZnRCZWZvcmVJbnB1dCgpIHtcbiAgICAvLyBjYXNlczpcbiAgICAvLyBmaWxsZWQgaW5wdXQ6IDAwfFxuICAgIC8vIG9wdGlvbmFsIGVtcHR5IGlucHV0OiAwMFtdfFxuICAgIC8vIG5lc3RlZCBibG9jazogWFg8W10+fFxuICAgIHJldHVybiB0aGlzLl9wdXNoTGVmdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ibG9jay5pc0ZpeGVkKSByZXR1cm47XG4gICAgICB0aGlzLm9mZnNldCA9IHRoaXMuYmxvY2submVhcmVzdElucHV0UG9zKHRoaXMub2Zmc2V0LCBESVJFQ1RJT04uTEVGVCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICBwdXNoTGVmdEJlZm9yZVJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9wdXNoTGVmdCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5ibG9jay5pc0ZpeGVkIHx8IHRoaXMuYmxvY2suaXNPcHRpb25hbCAmJiAhdGhpcy5ibG9jay52YWx1ZSkgcmV0dXJuO1xuICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0aGlzLm9mZnNldCwgRElSRUNUSU9OLkxFRlQpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSk7XG4gIH1cbiAgcHVzaFJpZ2h0QmVmb3JlRmlsbGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9wdXNoUmlnaHQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYmxvY2suaXNGaXhlZCB8fCAhdGhpcy5ibG9jay52YWx1ZSkgcmV0dXJuO1xuICAgICAgdGhpcy5vZmZzZXQgPSB0aGlzLmJsb2NrLm5lYXJlc3RJbnB1dFBvcyh0aGlzLm9mZnNldCwgRElSRUNUSU9OLkZPUkNFX1JJR0hUKTtcbiAgICAgIGlmICh0aGlzLm9mZnNldCAhPT0gdGhpcy5ibG9jay52YWx1ZS5sZW5ndGgpIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG4gIHB1c2hSaWdodEJlZm9yZUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl9wdXNoUmlnaHQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYmxvY2suaXNGaXhlZCkgcmV0dXJuO1xuXG4gICAgICAvLyBjb25zdCBvID0gdGhpcy5vZmZzZXQ7XG4gICAgICB0aGlzLm9mZnNldCA9IHRoaXMuYmxvY2submVhcmVzdElucHV0UG9zKHRoaXMub2Zmc2V0LCBESVJFQ1RJT04uTk9ORSk7XG4gICAgICAvLyBIQUNLIGNhc2VzIGxpa2UgKFNUSUxMIERPRVMgTk9UIFdPUksgRk9SIE5FU1RFRClcbiAgICAgIC8vIGFhfFhcbiAgICAgIC8vIGFhPFh8W10+WF8gICAgLSB0aGlzIHdpbGwgbm90IHdvcmtcbiAgICAgIC8vIGlmIChvICYmIG8gPT09IHRoaXMub2Zmc2V0ICYmIHRoaXMuYmxvY2sgaW5zdGFuY2VvZiBQYXR0ZXJuSW5wdXREZWZpbml0aW9uKSBjb250aW51ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0pO1xuICB9XG4gIHB1c2hSaWdodEJlZm9yZVJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLl9wdXNoUmlnaHQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYmxvY2suaXNGaXhlZCB8fCB0aGlzLmJsb2NrLmlzT3B0aW9uYWwgJiYgIXRoaXMuYmxvY2sudmFsdWUpIHJldHVybjtcblxuICAgICAgLy8gVE9ETyBjaGVjayB8WypdWFhfXG4gICAgICB0aGlzLm9mZnNldCA9IHRoaXMuYmxvY2submVhcmVzdElucHV0UG9zKHRoaXMub2Zmc2V0LCBESVJFQ1RJT04uTk9ORSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBQYXR0ZXJuQ3Vyc29yIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgQ2hhbmdlRGV0YWlscyBmcm9tICcuLi8uLi9jb3JlL2NoYW5nZS1kZXRhaWxzLmpzJztcbmltcG9ydCB7IERJUkVDVElPTiwgaXNTdHJpbmcgfSBmcm9tICcuLi8uLi9jb3JlL3V0aWxzLmpzJztcbmltcG9ydCBDb250aW51b3VzVGFpbERldGFpbHMgZnJvbSAnLi4vLi4vY29yZS9jb250aW51b3VzLXRhaWwtZGV0YWlscy5qcyc7XG5pbXBvcnQgJy4uLy4uL2NvcmUvaG9sZGVyLmpzJztcblxuY2xhc3MgUGF0dGVybkZpeGVkRGVmaW5pdGlvbiB7XG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICBPYmplY3QuYXNzaWduKHRoaXMsIG9wdHMpO1xuICAgIHRoaXMuX3ZhbHVlID0gJyc7XG4gICAgdGhpcy5pc0ZpeGVkID0gdHJ1ZTtcbiAgfVxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG4gIGdldCB1bm1hc2tlZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmlzVW5tYXNraW5nID8gdGhpcy52YWx1ZSA6ICcnO1xuICB9XG4gIGdldCByYXdJbnB1dFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Jhd0lucHV0ID8gdGhpcy52YWx1ZSA6ICcnO1xuICB9XG4gIGdldCBkaXNwbGF5VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5faXNSYXdJbnB1dCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZhbHVlID0gJyc7XG4gIH1cbiAgcmVtb3ZlKGZyb21Qb3MsIHRvUG9zKSB7XG4gICAgaWYgKGZyb21Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgZnJvbVBvcyA9IDA7XG4gICAgfVxuICAgIGlmICh0b1BvcyA9PT0gdm9pZCAwKSB7XG4gICAgICB0b1BvcyA9IHRoaXMuX3ZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLl92YWx1ZS5zbGljZSgwLCBmcm9tUG9zKSArIHRoaXMuX3ZhbHVlLnNsaWNlKHRvUG9zKTtcbiAgICBpZiAoIXRoaXMuX3ZhbHVlKSB0aGlzLl9pc1Jhd0lucHV0ID0gZmFsc2U7XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gIH1cbiAgbmVhcmVzdElucHV0UG9zKGN1cnNvclBvcywgZGlyZWN0aW9uKSB7XG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICBkaXJlY3Rpb24gPSBESVJFQ1RJT04uTk9ORTtcbiAgICB9XG4gICAgY29uc3QgbWluUG9zID0gMDtcbiAgICBjb25zdCBtYXhQb3MgPSB0aGlzLl92YWx1ZS5sZW5ndGg7XG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcbiAgICAgIGNhc2UgRElSRUNUSU9OLkxFRlQ6XG4gICAgICBjYXNlIERJUkVDVElPTi5GT1JDRV9MRUZUOlxuICAgICAgICByZXR1cm4gbWluUG9zO1xuICAgICAgY2FzZSBESVJFQ1RJT04uTk9ORTpcbiAgICAgIGNhc2UgRElSRUNUSU9OLlJJR0hUOlxuICAgICAgY2FzZSBESVJFQ1RJT04uRk9SQ0VfUklHSFQ6XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbWF4UG9zO1xuICAgIH1cbiAgfVxuICB0b3RhbElucHV0UG9zaXRpb25zKGZyb21Qb3MsIHRvUG9zKSB7XG4gICAgaWYgKGZyb21Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgZnJvbVBvcyA9IDA7XG4gICAgfVxuICAgIGlmICh0b1BvcyA9PT0gdm9pZCAwKSB7XG4gICAgICB0b1BvcyA9IHRoaXMuX3ZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2lzUmF3SW5wdXQgPyB0b1BvcyAtIGZyb21Qb3MgOiAwO1xuICB9XG4gIGV4dHJhY3RJbnB1dChmcm9tUG9zLCB0b1BvcywgZmxhZ3MpIHtcbiAgICBpZiAoZnJvbVBvcyA9PT0gdm9pZCAwKSB7XG4gICAgICBmcm9tUG9zID0gMDtcbiAgICB9XG4gICAgaWYgKHRvUG9zID09PSB2b2lkIDApIHtcbiAgICAgIHRvUG9zID0gdGhpcy5fdmFsdWUubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoZmxhZ3MgPT09IHZvaWQgMCkge1xuICAgICAgZmxhZ3MgPSB7fTtcbiAgICB9XG4gICAgcmV0dXJuIGZsYWdzLnJhdyAmJiB0aGlzLl9pc1Jhd0lucHV0ICYmIHRoaXMuX3ZhbHVlLnNsaWNlKGZyb21Qb3MsIHRvUG9zKSB8fCAnJztcbiAgfVxuICBnZXQgaXNDb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBnZXQgaXNGaWxsZWQoKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy5fdmFsdWUpO1xuICB9XG4gIF9hcHBlbmRDaGFyKGNoLCBmbGFncykge1xuICAgIGlmIChmbGFncyA9PT0gdm9pZCAwKSB7XG4gICAgICBmbGFncyA9IHt9O1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0ZpbGxlZCkgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgY29uc3QgYXBwZW5kRWFnZXIgPSB0aGlzLmVhZ2VyID09PSB0cnVlIHx8IHRoaXMuZWFnZXIgPT09ICdhcHBlbmQnO1xuICAgIGNvbnN0IGFwcGVuZGVkID0gdGhpcy5jaGFyID09PSBjaDtcbiAgICBjb25zdCBpc1Jlc29sdmVkID0gYXBwZW5kZWQgJiYgKHRoaXMuaXNVbm1hc2tpbmcgfHwgZmxhZ3MuaW5wdXQgfHwgZmxhZ3MucmF3KSAmJiAoIWZsYWdzLnJhdyB8fCAhYXBwZW5kRWFnZXIpICYmICFmbGFncy50YWlsO1xuICAgIGNvbnN0IGRldGFpbHMgPSBuZXcgQ2hhbmdlRGV0YWlscyh7XG4gICAgICBpbnNlcnRlZDogdGhpcy5jaGFyLFxuICAgICAgcmF3SW5zZXJ0ZWQ6IGlzUmVzb2x2ZWQgPyB0aGlzLmNoYXIgOiAnJ1xuICAgIH0pO1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5jaGFyO1xuICAgIHRoaXMuX2lzUmF3SW5wdXQgPSBpc1Jlc29sdmVkICYmIChmbGFncy5yYXcgfHwgZmxhZ3MuaW5wdXQpO1xuICAgIHJldHVybiBkZXRhaWxzO1xuICB9XG4gIF9hcHBlbmRFYWdlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZW5kQ2hhcih0aGlzLmNoYXIsIHtcbiAgICAgIHRhaWw6IHRydWVcbiAgICB9KTtcbiAgfVxuICBfYXBwZW5kUGxhY2Vob2xkZXIoKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgaWYgKHRoaXMuaXNGaWxsZWQpIHJldHVybiBkZXRhaWxzO1xuICAgIHRoaXMuX3ZhbHVlID0gZGV0YWlscy5pbnNlcnRlZCA9IHRoaXMuY2hhcjtcbiAgICByZXR1cm4gZGV0YWlscztcbiAgfVxuICBleHRyYWN0VGFpbCgpIHtcbiAgICByZXR1cm4gbmV3IENvbnRpbnVvdXNUYWlsRGV0YWlscygnJyk7XG4gIH1cbiAgYXBwZW5kVGFpbCh0YWlsKSB7XG4gICAgaWYgKGlzU3RyaW5nKHRhaWwpKSB0YWlsID0gbmV3IENvbnRpbnVvdXNUYWlsRGV0YWlscyhTdHJpbmcodGFpbCkpO1xuICAgIHJldHVybiB0YWlsLmFwcGVuZFRvKHRoaXMpO1xuICB9XG4gIGFwcGVuZChzdHIsIGZsYWdzLCB0YWlsKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IHRoaXMuX2FwcGVuZENoYXIoc3RyWzBdLCBmbGFncyk7XG4gICAgaWYgKHRhaWwgIT0gbnVsbCkge1xuICAgICAgZGV0YWlscy50YWlsU2hpZnQgKz0gdGhpcy5hcHBlbmRUYWlsKHRhaWwpLnRhaWxTaGlmdDtcbiAgICB9XG4gICAgcmV0dXJuIGRldGFpbHM7XG4gIH1cbiAgZG9Db21taXQoKSB7fVxuICBnZXQgc3RhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF92YWx1ZTogdGhpcy5fdmFsdWUsXG4gICAgICBfcmF3SW5wdXRWYWx1ZTogdGhpcy5yYXdJbnB1dFZhbHVlXG4gICAgfTtcbiAgfVxuICBzZXQgc3RhdGUoc3RhdGUpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHN0YXRlLl92YWx1ZTtcbiAgICB0aGlzLl9pc1Jhd0lucHV0ID0gQm9vbGVhbihzdGF0ZS5fcmF3SW5wdXRWYWx1ZSk7XG4gIH1cbiAgcGFkKGZsYWdzKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVuZFBsYWNlaG9sZGVyKCk7XG4gIH1cbn1cblxuZXhwb3J0IHsgUGF0dGVybkZpeGVkRGVmaW5pdGlvbiBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IGNyZWF0ZU1hc2sgZnJvbSAnLi4vZmFjdG9yeS5qcyc7XG5pbXBvcnQgQ2hhbmdlRGV0YWlscyBmcm9tICcuLi8uLi9jb3JlL2NoYW5nZS1kZXRhaWxzLmpzJztcbmltcG9ydCB7IERJUkVDVElPTiB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMuanMnO1xuaW1wb3J0ICcuLi8uLi9jb3JlL2hvbGRlci5qcyc7XG5cbmNsYXNzIFBhdHRlcm5JbnB1dERlZmluaXRpb24ge1xuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgY29uc3Qge1xuICAgICAgcGFyZW50LFxuICAgICAgaXNPcHRpb25hbCxcbiAgICAgIHBsYWNlaG9sZGVyQ2hhcixcbiAgICAgIGRpc3BsYXlDaGFyLFxuICAgICAgbGF6eSxcbiAgICAgIGVhZ2VyLFxuICAgICAgLi4ubWFza09wdHNcbiAgICB9ID0gb3B0cztcbiAgICB0aGlzLm1hc2tlZCA9IGNyZWF0ZU1hc2sobWFza09wdHMpO1xuICAgIE9iamVjdC5hc3NpZ24odGhpcywge1xuICAgICAgcGFyZW50LFxuICAgICAgaXNPcHRpb25hbCxcbiAgICAgIHBsYWNlaG9sZGVyQ2hhcixcbiAgICAgIGRpc3BsYXlDaGFyLFxuICAgICAgbGF6eSxcbiAgICAgIGVhZ2VyXG4gICAgfSk7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5pc0ZpbGxlZCA9IGZhbHNlO1xuICAgIHRoaXMubWFza2VkLnJlc2V0KCk7XG4gIH1cbiAgcmVtb3ZlKGZyb21Qb3MsIHRvUG9zKSB7XG4gICAgaWYgKGZyb21Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgZnJvbVBvcyA9IDA7XG4gICAgfVxuICAgIGlmICh0b1BvcyA9PT0gdm9pZCAwKSB7XG4gICAgICB0b1BvcyA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgIH1cbiAgICBpZiAoZnJvbVBvcyA9PT0gMCAmJiB0b1BvcyA+PSAxKSB7XG4gICAgICB0aGlzLmlzRmlsbGVkID0gZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5tYXNrZWQucmVtb3ZlKGZyb21Qb3MsIHRvUG9zKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gIH1cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLm1hc2tlZC52YWx1ZSB8fCAodGhpcy5pc0ZpbGxlZCAmJiAhdGhpcy5pc09wdGlvbmFsID8gdGhpcy5wbGFjZWhvbGRlckNoYXIgOiAnJyk7XG4gIH1cbiAgZ2V0IHVubWFza2VkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFza2VkLnVubWFza2VkVmFsdWU7XG4gIH1cbiAgZ2V0IHJhd0lucHV0VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFza2VkLnJhd0lucHV0VmFsdWU7XG4gIH1cbiAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXNrZWQudmFsdWUgJiYgdGhpcy5kaXNwbGF5Q2hhciB8fCB0aGlzLnZhbHVlO1xuICB9XG4gIGdldCBpc0NvbXBsZXRlKCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMubWFza2VkLnZhbHVlKSB8fCB0aGlzLmlzT3B0aW9uYWw7XG4gIH1cbiAgX2FwcGVuZENoYXIoY2gsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIGlmICh0aGlzLmlzRmlsbGVkKSByZXR1cm4gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMubWFza2VkLnN0YXRlO1xuICAgIC8vIHNpbXVsYXRlIGlucHV0XG4gICAgbGV0IGRldGFpbHMgPSB0aGlzLm1hc2tlZC5fYXBwZW5kQ2hhcihjaCwgdGhpcy5jdXJyZW50TWFza0ZsYWdzKGZsYWdzKSk7XG4gICAgaWYgKGRldGFpbHMuaW5zZXJ0ZWQgJiYgdGhpcy5kb1ZhbGlkYXRlKGZsYWdzKSA9PT0gZmFsc2UpIHtcbiAgICAgIGRldGFpbHMgPSBuZXcgQ2hhbmdlRGV0YWlscygpO1xuICAgICAgdGhpcy5tYXNrZWQuc3RhdGUgPSBzdGF0ZTtcbiAgICB9XG4gICAgaWYgKCFkZXRhaWxzLmluc2VydGVkICYmICF0aGlzLmlzT3B0aW9uYWwgJiYgIXRoaXMubGF6eSAmJiAhZmxhZ3MuaW5wdXQpIHtcbiAgICAgIGRldGFpbHMuaW5zZXJ0ZWQgPSB0aGlzLnBsYWNlaG9sZGVyQ2hhcjtcbiAgICB9XG4gICAgZGV0YWlscy5za2lwID0gIWRldGFpbHMuaW5zZXJ0ZWQgJiYgIXRoaXMuaXNPcHRpb25hbDtcbiAgICB0aGlzLmlzRmlsbGVkID0gQm9vbGVhbihkZXRhaWxzLmluc2VydGVkKTtcbiAgICByZXR1cm4gZGV0YWlscztcbiAgfVxuICBhcHBlbmQoc3RyLCBmbGFncywgdGFpbCkge1xuICAgIC8vIFRPRE8gcHJvYmFibHkgc2hvdWxkIGJlIGRvbmUgdmlhIF9hcHBlbmRDaGFyXG4gICAgcmV0dXJuIHRoaXMubWFza2VkLmFwcGVuZChzdHIsIHRoaXMuY3VycmVudE1hc2tGbGFncyhmbGFncyksIHRhaWwpO1xuICB9XG4gIF9hcHBlbmRQbGFjZWhvbGRlcigpIHtcbiAgICBpZiAodGhpcy5pc0ZpbGxlZCB8fCB0aGlzLmlzT3B0aW9uYWwpIHJldHVybiBuZXcgQ2hhbmdlRGV0YWlscygpO1xuICAgIHRoaXMuaXNGaWxsZWQgPSB0cnVlO1xuICAgIHJldHVybiBuZXcgQ2hhbmdlRGV0YWlscyh7XG4gICAgICBpbnNlcnRlZDogdGhpcy5wbGFjZWhvbGRlckNoYXJcbiAgICB9KTtcbiAgfVxuICBfYXBwZW5kRWFnZXIoKSB7XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gIH1cbiAgZXh0cmFjdFRhaWwoZnJvbVBvcywgdG9Qb3MpIHtcbiAgICByZXR1cm4gdGhpcy5tYXNrZWQuZXh0cmFjdFRhaWwoZnJvbVBvcywgdG9Qb3MpO1xuICB9XG4gIGFwcGVuZFRhaWwodGFpbCkge1xuICAgIHJldHVybiB0aGlzLm1hc2tlZC5hcHBlbmRUYWlsKHRhaWwpO1xuICB9XG4gIGV4dHJhY3RJbnB1dChmcm9tUG9zLCB0b1BvcywgZmxhZ3MpIHtcbiAgICBpZiAoZnJvbVBvcyA9PT0gdm9pZCAwKSB7XG4gICAgICBmcm9tUG9zID0gMDtcbiAgICB9XG4gICAgaWYgKHRvUG9zID09PSB2b2lkIDApIHtcbiAgICAgIHRvUG9zID0gdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm1hc2tlZC5leHRyYWN0SW5wdXQoZnJvbVBvcywgdG9Qb3MsIGZsYWdzKTtcbiAgfVxuICBuZWFyZXN0SW5wdXRQb3MoY3Vyc29yUG9zLCBkaXJlY3Rpb24pIHtcbiAgICBpZiAoZGlyZWN0aW9uID09PSB2b2lkIDApIHtcbiAgICAgIGRpcmVjdGlvbiA9IERJUkVDVElPTi5OT05FO1xuICAgIH1cbiAgICBjb25zdCBtaW5Qb3MgPSAwO1xuICAgIGNvbnN0IG1heFBvcyA9IHRoaXMudmFsdWUubGVuZ3RoO1xuICAgIGNvbnN0IGJvdW5kUG9zID0gTWF0aC5taW4oTWF0aC5tYXgoY3Vyc29yUG9zLCBtaW5Qb3MpLCBtYXhQb3MpO1xuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlIERJUkVDVElPTi5MRUZUOlxuICAgICAgY2FzZSBESVJFQ1RJT04uRk9SQ0VfTEVGVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDb21wbGV0ZSA/IGJvdW5kUG9zIDogbWluUG9zO1xuICAgICAgY2FzZSBESVJFQ1RJT04uUklHSFQ6XG4gICAgICBjYXNlIERJUkVDVElPTi5GT1JDRV9SSUdIVDpcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNDb21wbGV0ZSA/IGJvdW5kUG9zIDogbWF4UG9zO1xuICAgICAgY2FzZSBESVJFQ1RJT04uTk9ORTpcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBib3VuZFBvcztcbiAgICB9XG4gIH1cbiAgdG90YWxJbnB1dFBvc2l0aW9ucyhmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLnZhbHVlLmxlbmd0aDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudmFsdWUuc2xpY2UoZnJvbVBvcywgdG9Qb3MpLmxlbmd0aDtcbiAgfVxuICBkb1ZhbGlkYXRlKGZsYWdzKSB7XG4gICAgcmV0dXJuIHRoaXMubWFza2VkLmRvVmFsaWRhdGUodGhpcy5jdXJyZW50TWFza0ZsYWdzKGZsYWdzKSkgJiYgKCF0aGlzLnBhcmVudCB8fCB0aGlzLnBhcmVudC5kb1ZhbGlkYXRlKHRoaXMuY3VycmVudE1hc2tGbGFncyhmbGFncykpKTtcbiAgfVxuICBkb0NvbW1pdCgpIHtcbiAgICB0aGlzLm1hc2tlZC5kb0NvbW1pdCgpO1xuICB9XG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX3ZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgX3Jhd0lucHV0VmFsdWU6IHRoaXMucmF3SW5wdXRWYWx1ZSxcbiAgICAgIG1hc2tlZDogdGhpcy5tYXNrZWQuc3RhdGUsXG4gICAgICBpc0ZpbGxlZDogdGhpcy5pc0ZpbGxlZFxuICAgIH07XG4gIH1cbiAgc2V0IHN0YXRlKHN0YXRlKSB7XG4gICAgdGhpcy5tYXNrZWQuc3RhdGUgPSBzdGF0ZS5tYXNrZWQ7XG4gICAgdGhpcy5pc0ZpbGxlZCA9IHN0YXRlLmlzRmlsbGVkO1xuICB9XG4gIGN1cnJlbnRNYXNrRmxhZ3MoZmxhZ3MpIHtcbiAgICB2YXIgX2ZsYWdzJF9iZWZvcmVUYWlsU3RhO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5mbGFncyxcbiAgICAgIF9iZWZvcmVUYWlsU3RhdGU6IChmbGFncyA9PSBudWxsIHx8IChfZmxhZ3MkX2JlZm9yZVRhaWxTdGEgPSBmbGFncy5fYmVmb3JlVGFpbFN0YXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2ZsYWdzJF9iZWZvcmVUYWlsU3RhLm1hc2tlZCkgfHwgKGZsYWdzID09IG51bGwgPyB2b2lkIDAgOiBmbGFncy5fYmVmb3JlVGFpbFN0YXRlKVxuICAgIH07XG4gIH1cbiAgcGFkKGZsYWdzKSB7XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gIH1cbn1cblBhdHRlcm5JbnB1dERlZmluaXRpb24uREVGQVVMVF9ERUZJTklUSU9OUyA9IHtcbiAgJzAnOiAvXFxkLyxcbiAgJ2EnOiAvW1xcdTAwNDEtXFx1MDA1QVxcdTAwNjEtXFx1MDA3QVxcdTAwQUFcXHUwMEI1XFx1MDBCQVxcdTAwQzAtXFx1MDBENlxcdTAwRDgtXFx1MDBGNlxcdTAwRjgtXFx1MDJDMVxcdTAyQzYtXFx1MDJEMVxcdTAyRTAtXFx1MDJFNFxcdTAyRUNcXHUwMkVFXFx1MDM3MC1cXHUwMzc0XFx1MDM3NlxcdTAzNzdcXHUwMzdBLVxcdTAzN0RcXHUwMzg2XFx1MDM4OC1cXHUwMzhBXFx1MDM4Q1xcdTAzOEUtXFx1MDNBMVxcdTAzQTMtXFx1MDNGNVxcdTAzRjctXFx1MDQ4MVxcdTA0OEEtXFx1MDUyN1xcdTA1MzEtXFx1MDU1NlxcdTA1NTlcXHUwNTYxLVxcdTA1ODdcXHUwNUQwLVxcdTA1RUFcXHUwNUYwLVxcdTA1RjJcXHUwNjIwLVxcdTA2NEFcXHUwNjZFXFx1MDY2RlxcdTA2NzEtXFx1MDZEM1xcdTA2RDVcXHUwNkU1XFx1MDZFNlxcdTA2RUVcXHUwNkVGXFx1MDZGQS1cXHUwNkZDXFx1MDZGRlxcdTA3MTBcXHUwNzEyLVxcdTA3MkZcXHUwNzRELVxcdTA3QTVcXHUwN0IxXFx1MDdDQS1cXHUwN0VBXFx1MDdGNFxcdTA3RjVcXHUwN0ZBXFx1MDgwMC1cXHUwODE1XFx1MDgxQVxcdTA4MjRcXHUwODI4XFx1MDg0MC1cXHUwODU4XFx1MDhBMFxcdTA4QTItXFx1MDhBQ1xcdTA5MDQtXFx1MDkzOVxcdTA5M0RcXHUwOTUwXFx1MDk1OC1cXHUwOTYxXFx1MDk3MS1cXHUwOTc3XFx1MDk3OS1cXHUwOTdGXFx1MDk4NS1cXHUwOThDXFx1MDk4RlxcdTA5OTBcXHUwOTkzLVxcdTA5QThcXHUwOUFBLVxcdTA5QjBcXHUwOUIyXFx1MDlCNi1cXHUwOUI5XFx1MDlCRFxcdTA5Q0VcXHUwOURDXFx1MDlERFxcdTA5REYtXFx1MDlFMVxcdTA5RjBcXHUwOUYxXFx1MEEwNS1cXHUwQTBBXFx1MEEwRlxcdTBBMTBcXHUwQTEzLVxcdTBBMjhcXHUwQTJBLVxcdTBBMzBcXHUwQTMyXFx1MEEzM1xcdTBBMzVcXHUwQTM2XFx1MEEzOFxcdTBBMzlcXHUwQTU5LVxcdTBBNUNcXHUwQTVFXFx1MEE3Mi1cXHUwQTc0XFx1MEE4NS1cXHUwQThEXFx1MEE4Ri1cXHUwQTkxXFx1MEE5My1cXHUwQUE4XFx1MEFBQS1cXHUwQUIwXFx1MEFCMlxcdTBBQjNcXHUwQUI1LVxcdTBBQjlcXHUwQUJEXFx1MEFEMFxcdTBBRTBcXHUwQUUxXFx1MEIwNS1cXHUwQjBDXFx1MEIwRlxcdTBCMTBcXHUwQjEzLVxcdTBCMjhcXHUwQjJBLVxcdTBCMzBcXHUwQjMyXFx1MEIzM1xcdTBCMzUtXFx1MEIzOVxcdTBCM0RcXHUwQjVDXFx1MEI1RFxcdTBCNUYtXFx1MEI2MVxcdTBCNzFcXHUwQjgzXFx1MEI4NS1cXHUwQjhBXFx1MEI4RS1cXHUwQjkwXFx1MEI5Mi1cXHUwQjk1XFx1MEI5OVxcdTBCOUFcXHUwQjlDXFx1MEI5RVxcdTBCOUZcXHUwQkEzXFx1MEJBNFxcdTBCQTgtXFx1MEJBQVxcdTBCQUUtXFx1MEJCOVxcdTBCRDBcXHUwQzA1LVxcdTBDMENcXHUwQzBFLVxcdTBDMTBcXHUwQzEyLVxcdTBDMjhcXHUwQzJBLVxcdTBDMzNcXHUwQzM1LVxcdTBDMzlcXHUwQzNEXFx1MEM1OFxcdTBDNTlcXHUwQzYwXFx1MEM2MVxcdTBDODUtXFx1MEM4Q1xcdTBDOEUtXFx1MEM5MFxcdTBDOTItXFx1MENBOFxcdTBDQUEtXFx1MENCM1xcdTBDQjUtXFx1MENCOVxcdTBDQkRcXHUwQ0RFXFx1MENFMFxcdTBDRTFcXHUwQ0YxXFx1MENGMlxcdTBEMDUtXFx1MEQwQ1xcdTBEMEUtXFx1MEQxMFxcdTBEMTItXFx1MEQzQVxcdTBEM0RcXHUwRDRFXFx1MEQ2MFxcdTBENjFcXHUwRDdBLVxcdTBEN0ZcXHUwRDg1LVxcdTBEOTZcXHUwRDlBLVxcdTBEQjFcXHUwREIzLVxcdTBEQkJcXHUwREJEXFx1MERDMC1cXHUwREM2XFx1MEUwMS1cXHUwRTMwXFx1MEUzMlxcdTBFMzNcXHUwRTQwLVxcdTBFNDZcXHUwRTgxXFx1MEU4MlxcdTBFODRcXHUwRTg3XFx1MEU4OFxcdTBFOEFcXHUwRThEXFx1MEU5NC1cXHUwRTk3XFx1MEU5OS1cXHUwRTlGXFx1MEVBMS1cXHUwRUEzXFx1MEVBNVxcdTBFQTdcXHUwRUFBXFx1MEVBQlxcdTBFQUQtXFx1MEVCMFxcdTBFQjJcXHUwRUIzXFx1MEVCRFxcdTBFQzAtXFx1MEVDNFxcdTBFQzZcXHUwRURDLVxcdTBFREZcXHUwRjAwXFx1MEY0MC1cXHUwRjQ3XFx1MEY0OS1cXHUwRjZDXFx1MEY4OC1cXHUwRjhDXFx1MTAwMC1cXHUxMDJBXFx1MTAzRlxcdTEwNTAtXFx1MTA1NVxcdTEwNUEtXFx1MTA1RFxcdTEwNjFcXHUxMDY1XFx1MTA2NlxcdTEwNkUtXFx1MTA3MFxcdTEwNzUtXFx1MTA4MVxcdTEwOEVcXHUxMEEwLVxcdTEwQzVcXHUxMEM3XFx1MTBDRFxcdTEwRDAtXFx1MTBGQVxcdTEwRkMtXFx1MTI0OFxcdTEyNEEtXFx1MTI0RFxcdTEyNTAtXFx1MTI1NlxcdTEyNThcXHUxMjVBLVxcdTEyNURcXHUxMjYwLVxcdTEyODhcXHUxMjhBLVxcdTEyOERcXHUxMjkwLVxcdTEyQjBcXHUxMkIyLVxcdTEyQjVcXHUxMkI4LVxcdTEyQkVcXHUxMkMwXFx1MTJDMi1cXHUxMkM1XFx1MTJDOC1cXHUxMkQ2XFx1MTJEOC1cXHUxMzEwXFx1MTMxMi1cXHUxMzE1XFx1MTMxOC1cXHUxMzVBXFx1MTM4MC1cXHUxMzhGXFx1MTNBMC1cXHUxM0Y0XFx1MTQwMS1cXHUxNjZDXFx1MTY2Ri1cXHUxNjdGXFx1MTY4MS1cXHUxNjlBXFx1MTZBMC1cXHUxNkVBXFx1MTcwMC1cXHUxNzBDXFx1MTcwRS1cXHUxNzExXFx1MTcyMC1cXHUxNzMxXFx1MTc0MC1cXHUxNzUxXFx1MTc2MC1cXHUxNzZDXFx1MTc2RS1cXHUxNzcwXFx1MTc4MC1cXHUxN0IzXFx1MTdEN1xcdTE3RENcXHUxODIwLVxcdTE4NzdcXHUxODgwLVxcdTE4QThcXHUxOEFBXFx1MThCMC1cXHUxOEY1XFx1MTkwMC1cXHUxOTFDXFx1MTk1MC1cXHUxOTZEXFx1MTk3MC1cXHUxOTc0XFx1MTk4MC1cXHUxOUFCXFx1MTlDMS1cXHUxOUM3XFx1MUEwMC1cXHUxQTE2XFx1MUEyMC1cXHUxQTU0XFx1MUFBN1xcdTFCMDUtXFx1MUIzM1xcdTFCNDUtXFx1MUI0QlxcdTFCODMtXFx1MUJBMFxcdTFCQUVcXHUxQkFGXFx1MUJCQS1cXHUxQkU1XFx1MUMwMC1cXHUxQzIzXFx1MUM0RC1cXHUxQzRGXFx1MUM1QS1cXHUxQzdEXFx1MUNFOS1cXHUxQ0VDXFx1MUNFRS1cXHUxQ0YxXFx1MUNGNVxcdTFDRjZcXHUxRDAwLVxcdTFEQkZcXHUxRTAwLVxcdTFGMTVcXHUxRjE4LVxcdTFGMURcXHUxRjIwLVxcdTFGNDVcXHUxRjQ4LVxcdTFGNERcXHUxRjUwLVxcdTFGNTdcXHUxRjU5XFx1MUY1QlxcdTFGNURcXHUxRjVGLVxcdTFGN0RcXHUxRjgwLVxcdTFGQjRcXHUxRkI2LVxcdTFGQkNcXHUxRkJFXFx1MUZDMi1cXHUxRkM0XFx1MUZDNi1cXHUxRkNDXFx1MUZEMC1cXHUxRkQzXFx1MUZENi1cXHUxRkRCXFx1MUZFMC1cXHUxRkVDXFx1MUZGMi1cXHUxRkY0XFx1MUZGNi1cXHUxRkZDXFx1MjA3MVxcdTIwN0ZcXHUyMDkwLVxcdTIwOUNcXHUyMTAyXFx1MjEwN1xcdTIxMEEtXFx1MjExM1xcdTIxMTVcXHUyMTE5LVxcdTIxMURcXHUyMTI0XFx1MjEyNlxcdTIxMjhcXHUyMTJBLVxcdTIxMkRcXHUyMTJGLVxcdTIxMzlcXHUyMTNDLVxcdTIxM0ZcXHUyMTQ1LVxcdTIxNDlcXHUyMTRFXFx1MjE4M1xcdTIxODRcXHUyQzAwLVxcdTJDMkVcXHUyQzMwLVxcdTJDNUVcXHUyQzYwLVxcdTJDRTRcXHUyQ0VCLVxcdTJDRUVcXHUyQ0YyXFx1MkNGM1xcdTJEMDAtXFx1MkQyNVxcdTJEMjdcXHUyRDJEXFx1MkQzMC1cXHUyRDY3XFx1MkQ2RlxcdTJEODAtXFx1MkQ5NlxcdTJEQTAtXFx1MkRBNlxcdTJEQTgtXFx1MkRBRVxcdTJEQjAtXFx1MkRCNlxcdTJEQjgtXFx1MkRCRVxcdTJEQzAtXFx1MkRDNlxcdTJEQzgtXFx1MkRDRVxcdTJERDAtXFx1MkRENlxcdTJERDgtXFx1MkRERVxcdTJFMkZcXHUzMDA1XFx1MzAwNlxcdTMwMzEtXFx1MzAzNVxcdTMwM0JcXHUzMDNDXFx1MzA0MS1cXHUzMDk2XFx1MzA5RC1cXHUzMDlGXFx1MzBBMS1cXHUzMEZBXFx1MzBGQy1cXHUzMEZGXFx1MzEwNS1cXHUzMTJEXFx1MzEzMS1cXHUzMThFXFx1MzFBMC1cXHUzMUJBXFx1MzFGMC1cXHUzMUZGXFx1MzQwMC1cXHU0REI1XFx1NEUwMC1cXHU5RkNDXFx1QTAwMC1cXHVBNDhDXFx1QTREMC1cXHVBNEZEXFx1QTUwMC1cXHVBNjBDXFx1QTYxMC1cXHVBNjFGXFx1QTYyQVxcdUE2MkJcXHVBNjQwLVxcdUE2NkVcXHVBNjdGLVxcdUE2OTdcXHVBNkEwLVxcdUE2RTVcXHVBNzE3LVxcdUE3MUZcXHVBNzIyLVxcdUE3ODhcXHVBNzhCLVxcdUE3OEVcXHVBNzkwLVxcdUE3OTNcXHVBN0EwLVxcdUE3QUFcXHVBN0Y4LVxcdUE4MDFcXHVBODAzLVxcdUE4MDVcXHVBODA3LVxcdUE4MEFcXHVBODBDLVxcdUE4MjJcXHVBODQwLVxcdUE4NzNcXHVBODgyLVxcdUE4QjNcXHVBOEYyLVxcdUE4RjdcXHVBOEZCXFx1QTkwQS1cXHVBOTI1XFx1QTkzMC1cXHVBOTQ2XFx1QTk2MC1cXHVBOTdDXFx1QTk4NC1cXHVBOUIyXFx1QTlDRlxcdUFBMDAtXFx1QUEyOFxcdUFBNDAtXFx1QUE0MlxcdUFBNDQtXFx1QUE0QlxcdUFBNjAtXFx1QUE3NlxcdUFBN0FcXHVBQTgwLVxcdUFBQUZcXHVBQUIxXFx1QUFCNVxcdUFBQjZcXHVBQUI5LVxcdUFBQkRcXHVBQUMwXFx1QUFDMlxcdUFBREItXFx1QUFERFxcdUFBRTAtXFx1QUFFQVxcdUFBRjItXFx1QUFGNFxcdUFCMDEtXFx1QUIwNlxcdUFCMDktXFx1QUIwRVxcdUFCMTEtXFx1QUIxNlxcdUFCMjAtXFx1QUIyNlxcdUFCMjgtXFx1QUIyRVxcdUFCQzAtXFx1QUJFMlxcdUFDMDAtXFx1RDdBM1xcdUQ3QjAtXFx1RDdDNlxcdUQ3Q0ItXFx1RDdGQlxcdUY5MDAtXFx1RkE2RFxcdUZBNzAtXFx1RkFEOVxcdUZCMDAtXFx1RkIwNlxcdUZCMTMtXFx1RkIxN1xcdUZCMURcXHVGQjFGLVxcdUZCMjhcXHVGQjJBLVxcdUZCMzZcXHVGQjM4LVxcdUZCM0NcXHVGQjNFXFx1RkI0MFxcdUZCNDFcXHVGQjQzXFx1RkI0NFxcdUZCNDYtXFx1RkJCMVxcdUZCRDMtXFx1RkQzRFxcdUZENTAtXFx1RkQ4RlxcdUZEOTItXFx1RkRDN1xcdUZERjAtXFx1RkRGQlxcdUZFNzAtXFx1RkU3NFxcdUZFNzYtXFx1RkVGQ1xcdUZGMjEtXFx1RkYzQVxcdUZGNDEtXFx1RkY1QVxcdUZGNjYtXFx1RkZCRVxcdUZGQzItXFx1RkZDN1xcdUZGQ0EtXFx1RkZDRlxcdUZGRDItXFx1RkZEN1xcdUZGREEtXFx1RkZEQ10vLFxuICAvLyBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vYS8yMjA3NTA3MFxuICAnKic6IC8uL1xufTtcblxuZXhwb3J0IHsgUGF0dGVybklucHV0RGVmaW5pdGlvbiBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IE1hc2tlZCBmcm9tICcuL2Jhc2UuanMnO1xuaW1wb3J0IElNYXNrIGZyb20gJy4uL2NvcmUvaG9sZGVyLmpzJztcbmltcG9ydCAnLi4vY29yZS9jaGFuZ2UtZGV0YWlscy5qcyc7XG5pbXBvcnQgJy4uL2NvcmUvY29udGludW91cy10YWlsLWRldGFpbHMuanMnO1xuaW1wb3J0ICcuLi9jb3JlL3V0aWxzLmpzJztcblxuLyoqIE1hc2tpbmcgYnkgUmVnRXhwICovXG5jbGFzcyBNYXNrZWRSZWdFeHAgZXh0ZW5kcyBNYXNrZWQge1xuICAvKiogKi9cblxuICAvKiogRW5hYmxlIGNoYXJhY3RlcnMgb3ZlcndyaXRpbmcgKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICB1cGRhdGVPcHRpb25zKG9wdHMpIHtcbiAgICBzdXBlci51cGRhdGVPcHRpb25zKG9wdHMpO1xuICB9XG4gIF91cGRhdGUob3B0cykge1xuICAgIGNvbnN0IG1hc2sgPSBvcHRzLm1hc2s7XG4gICAgaWYgKG1hc2spIG9wdHMudmFsaWRhdGUgPSB2YWx1ZSA9PiB2YWx1ZS5zZWFyY2gobWFzaykgPj0gMDtcbiAgICBzdXBlci5fdXBkYXRlKG9wdHMpO1xuICB9XG59XG5JTWFzay5NYXNrZWRSZWdFeHAgPSBNYXNrZWRSZWdFeHA7XG5cbmV4cG9ydCB7IE1hc2tlZFJlZ0V4cCBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IENoYW5nZURldGFpbHMgZnJvbSAnLi4vY29yZS9jaGFuZ2UtZGV0YWlscy5qcyc7XG5pbXBvcnQgSU1hc2sgZnJvbSAnLi4vY29yZS9ob2xkZXIuanMnO1xuaW1wb3J0IHsgRElSRUNUSU9OIH0gZnJvbSAnLi4vY29yZS91dGlscy5qcyc7XG5pbXBvcnQgTWFza2VkIGZyb20gJy4vYmFzZS5qcyc7XG5pbXBvcnQgY3JlYXRlTWFzaywgeyBub3JtYWxpemVPcHRzIH0gZnJvbSAnLi9mYWN0b3J5LmpzJztcbmltcG9ydCBDaHVua3NUYWlsRGV0YWlscyBmcm9tICcuL3BhdHRlcm4vY2h1bmstdGFpbC1kZXRhaWxzLmpzJztcbmltcG9ydCBQYXR0ZXJuQ3Vyc29yIGZyb20gJy4vcGF0dGVybi9jdXJzb3IuanMnO1xuaW1wb3J0IFBhdHRlcm5GaXhlZERlZmluaXRpb24gZnJvbSAnLi9wYXR0ZXJuL2ZpeGVkLWRlZmluaXRpb24uanMnO1xuaW1wb3J0IFBhdHRlcm5JbnB1dERlZmluaXRpb24gZnJvbSAnLi9wYXR0ZXJuL2lucHV0LWRlZmluaXRpb24uanMnO1xuaW1wb3J0ICcuL3JlZ2V4cC5qcyc7XG5pbXBvcnQgJy4uL2NvcmUvY29udGludW91cy10YWlsLWRldGFpbHMuanMnO1xuXG4vKiogUGF0dGVybiBtYXNrICovXG5jbGFzcyBNYXNrZWRQYXR0ZXJuIGV4dGVuZHMgTWFza2VkIHtcbiAgLyoqICovXG5cbiAgLyoqICovXG5cbiAgLyoqIFNpbmdsZSBjaGFyIGZvciBlbXB0eSBpbnB1dCAqL1xuXG4gIC8qKiBTaW5nbGUgY2hhciBmb3IgZmlsbGVkIGlucHV0ICovXG5cbiAgLyoqIFNob3cgcGxhY2Vob2xkZXIgb25seSB3aGVuIG5lZWRlZCAqL1xuXG4gIC8qKiBFbmFibGUgY2hhcmFjdGVycyBvdmVyd3JpdGluZyAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIC8qKiAqL1xuXG4gIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICBzdXBlcih7XG4gICAgICAuLi5NYXNrZWRQYXR0ZXJuLkRFRkFVTFRTLFxuICAgICAgLi4ub3B0cyxcbiAgICAgIGRlZmluaXRpb25zOiBPYmplY3QuYXNzaWduKHt9LCBQYXR0ZXJuSW5wdXREZWZpbml0aW9uLkRFRkFVTFRfREVGSU5JVElPTlMsIG9wdHMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdHMuZGVmaW5pdGlvbnMpXG4gICAgfSk7XG4gIH1cbiAgdXBkYXRlT3B0aW9ucyhvcHRzKSB7XG4gICAgc3VwZXIudXBkYXRlT3B0aW9ucyhvcHRzKTtcbiAgfVxuICBfdXBkYXRlKG9wdHMpIHtcbiAgICBvcHRzLmRlZmluaXRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5kZWZpbml0aW9ucywgb3B0cy5kZWZpbml0aW9ucyk7XG4gICAgc3VwZXIuX3VwZGF0ZShvcHRzKTtcbiAgICB0aGlzLl9yZWJ1aWxkTWFzaygpO1xuICB9XG4gIF9yZWJ1aWxkTWFzaygpIHtcbiAgICBjb25zdCBkZWZzID0gdGhpcy5kZWZpbml0aW9ucztcbiAgICB0aGlzLl9ibG9ja3MgPSBbXTtcbiAgICB0aGlzLmV4cG9zZUJsb2NrID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N0b3BzID0gW107XG4gICAgdGhpcy5fbWFza2VkQmxvY2tzID0ge307XG4gICAgY29uc3QgcGF0dGVybiA9IHRoaXMubWFzaztcbiAgICBpZiAoIXBhdHRlcm4gfHwgIWRlZnMpIHJldHVybjtcbiAgICBsZXQgdW5tYXNraW5nQmxvY2sgPSBmYWxzZTtcbiAgICBsZXQgb3B0aW9uYWxCbG9jayA9IGZhbHNlO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0dGVybi5sZW5ndGg7ICsraSkge1xuICAgICAgaWYgKHRoaXMuYmxvY2tzKSB7XG4gICAgICAgIGNvbnN0IHAgPSBwYXR0ZXJuLnNsaWNlKGkpO1xuICAgICAgICBjb25zdCBiTmFtZXMgPSBPYmplY3Qua2V5cyh0aGlzLmJsb2NrcykuZmlsdGVyKGJOYW1lID0+IHAuaW5kZXhPZihiTmFtZSkgPT09IDApO1xuICAgICAgICAvLyBvcmRlciBieSBrZXkgbGVuZ3RoXG4gICAgICAgIGJOYW1lcy5zb3J0KChhLCBiKSA9PiBiLmxlbmd0aCAtIGEubGVuZ3RoKTtcbiAgICAgICAgLy8gdXNlIGJsb2NrIG5hbWUgd2l0aCBtYXggbGVuZ3RoXG4gICAgICAgIGNvbnN0IGJOYW1lID0gYk5hbWVzWzBdO1xuICAgICAgICBpZiAoYk5hbWUpIHtcbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBleHBvc2UsXG4gICAgICAgICAgICByZXBlYXQsXG4gICAgICAgICAgICAuLi5iT3B0c1xuICAgICAgICAgIH0gPSBub3JtYWxpemVPcHRzKHRoaXMuYmxvY2tzW2JOYW1lXSk7IC8vIFRPRE8gdHlwZSBPcHRzPEFyZyAmIEV4dHJhPlxuICAgICAgICAgIGNvbnN0IGJsb2NrT3B0cyA9IHtcbiAgICAgICAgICAgIGxhenk6IHRoaXMubGF6eSxcbiAgICAgICAgICAgIGVhZ2VyOiB0aGlzLmVhZ2VyLFxuICAgICAgICAgICAgcGxhY2Vob2xkZXJDaGFyOiB0aGlzLnBsYWNlaG9sZGVyQ2hhcixcbiAgICAgICAgICAgIGRpc3BsYXlDaGFyOiB0aGlzLmRpc3BsYXlDaGFyLFxuICAgICAgICAgICAgb3ZlcndyaXRlOiB0aGlzLm92ZXJ3cml0ZSxcbiAgICAgICAgICAgIGF1dG9maXg6IHRoaXMuYXV0b2ZpeCxcbiAgICAgICAgICAgIC4uLmJPcHRzLFxuICAgICAgICAgICAgcmVwZWF0LFxuICAgICAgICAgICAgcGFyZW50OiB0aGlzXG4gICAgICAgICAgfTtcbiAgICAgICAgICBjb25zdCBtYXNrZWRCbG9jayA9IHJlcGVhdCAhPSBudWxsID8gbmV3IElNYXNrLlJlcGVhdEJsb2NrKGJsb2NrT3B0cyAvKiBUT0RPICovKSA6IGNyZWF0ZU1hc2soYmxvY2tPcHRzKTtcbiAgICAgICAgICBpZiAobWFza2VkQmxvY2spIHtcbiAgICAgICAgICAgIHRoaXMuX2Jsb2Nrcy5wdXNoKG1hc2tlZEJsb2NrKTtcbiAgICAgICAgICAgIGlmIChleHBvc2UpIHRoaXMuZXhwb3NlQmxvY2sgPSBtYXNrZWRCbG9jaztcblxuICAgICAgICAgICAgLy8gc3RvcmUgYmxvY2sgaW5kZXhcbiAgICAgICAgICAgIGlmICghdGhpcy5fbWFza2VkQmxvY2tzW2JOYW1lXSkgdGhpcy5fbWFza2VkQmxvY2tzW2JOYW1lXSA9IFtdO1xuICAgICAgICAgICAgdGhpcy5fbWFza2VkQmxvY2tzW2JOYW1lXS5wdXNoKHRoaXMuX2Jsb2Nrcy5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaSArPSBiTmFtZS5sZW5ndGggLSAxO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsZXQgY2hhciA9IHBhdHRlcm5baV07XG4gICAgICBsZXQgaXNJbnB1dCA9IChjaGFyIGluIGRlZnMpO1xuICAgICAgaWYgKGNoYXIgPT09IE1hc2tlZFBhdHRlcm4uU1RPUF9DSEFSKSB7XG4gICAgICAgIHRoaXMuX3N0b3BzLnB1c2godGhpcy5fYmxvY2tzLmxlbmd0aCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGNoYXIgPT09ICd7JyB8fCBjaGFyID09PSAnfScpIHtcbiAgICAgICAgdW5tYXNraW5nQmxvY2sgPSAhdW5tYXNraW5nQmxvY2s7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKGNoYXIgPT09ICdbJyB8fCBjaGFyID09PSAnXScpIHtcbiAgICAgICAgb3B0aW9uYWxCbG9jayA9ICFvcHRpb25hbEJsb2NrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChjaGFyID09PSBNYXNrZWRQYXR0ZXJuLkVTQ0FQRV9DSEFSKSB7XG4gICAgICAgICsraTtcbiAgICAgICAgY2hhciA9IHBhdHRlcm5baV07XG4gICAgICAgIGlmICghY2hhcikgYnJlYWs7XG4gICAgICAgIGlzSW5wdXQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGRlZiA9IGlzSW5wdXQgPyBuZXcgUGF0dGVybklucHV0RGVmaW5pdGlvbih7XG4gICAgICAgIGlzT3B0aW9uYWw6IG9wdGlvbmFsQmxvY2ssXG4gICAgICAgIGxhenk6IHRoaXMubGF6eSxcbiAgICAgICAgZWFnZXI6IHRoaXMuZWFnZXIsXG4gICAgICAgIHBsYWNlaG9sZGVyQ2hhcjogdGhpcy5wbGFjZWhvbGRlckNoYXIsXG4gICAgICAgIGRpc3BsYXlDaGFyOiB0aGlzLmRpc3BsYXlDaGFyLFxuICAgICAgICAuLi5ub3JtYWxpemVPcHRzKGRlZnNbY2hhcl0pLFxuICAgICAgICBwYXJlbnQ6IHRoaXNcbiAgICAgIH0pIDogbmV3IFBhdHRlcm5GaXhlZERlZmluaXRpb24oe1xuICAgICAgICBjaGFyLFxuICAgICAgICBlYWdlcjogdGhpcy5lYWdlcixcbiAgICAgICAgaXNVbm1hc2tpbmc6IHVubWFza2luZ0Jsb2NrXG4gICAgICB9KTtcbiAgICAgIHRoaXMuX2Jsb2Nrcy5wdXNoKGRlZik7XG4gICAgfVxuICB9XG4gIGdldCBzdGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3VwZXIuc3RhdGUsXG4gICAgICBfYmxvY2tzOiB0aGlzLl9ibG9ja3MubWFwKGIgPT4gYi5zdGF0ZSlcbiAgICB9O1xuICB9XG4gIHNldCBzdGF0ZShzdGF0ZSkge1xuICAgIGlmICghc3RhdGUpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qge1xuICAgICAgX2Jsb2NrcyxcbiAgICAgIC4uLm1hc2tlZFN0YXRlXG4gICAgfSA9IHN0YXRlO1xuICAgIHRoaXMuX2Jsb2Nrcy5mb3JFYWNoKChiLCBiaSkgPT4gYi5zdGF0ZSA9IF9ibG9ja3NbYmldKTtcbiAgICBzdXBlci5zdGF0ZSA9IG1hc2tlZFN0YXRlO1xuICB9XG4gIHJlc2V0KCkge1xuICAgIHN1cGVyLnJlc2V0KCk7XG4gICAgdGhpcy5fYmxvY2tzLmZvckVhY2goYiA9PiBiLnJlc2V0KCkpO1xuICB9XG4gIGdldCBpc0NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLmV4cG9zZUJsb2NrID8gdGhpcy5leHBvc2VCbG9jay5pc0NvbXBsZXRlIDogdGhpcy5fYmxvY2tzLmV2ZXJ5KGIgPT4gYi5pc0NvbXBsZXRlKTtcbiAgfVxuICBnZXQgaXNGaWxsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Jsb2Nrcy5ldmVyeShiID0+IGIuaXNGaWxsZWQpO1xuICB9XG4gIGdldCBpc0ZpeGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9ibG9ja3MuZXZlcnkoYiA9PiBiLmlzRml4ZWQpO1xuICB9XG4gIGdldCBpc09wdGlvbmFsKCkge1xuICAgIHJldHVybiB0aGlzLl9ibG9ja3MuZXZlcnkoYiA9PiBiLmlzT3B0aW9uYWwpO1xuICB9XG4gIGRvQ29tbWl0KCkge1xuICAgIHRoaXMuX2Jsb2Nrcy5mb3JFYWNoKGIgPT4gYi5kb0NvbW1pdCgpKTtcbiAgICBzdXBlci5kb0NvbW1pdCgpO1xuICB9XG4gIGdldCB1bm1hc2tlZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmV4cG9zZUJsb2NrID8gdGhpcy5leHBvc2VCbG9jay51bm1hc2tlZFZhbHVlIDogdGhpcy5fYmxvY2tzLnJlZHVjZSgoc3RyLCBiKSA9PiBzdHIgKz0gYi51bm1hc2tlZFZhbHVlLCAnJyk7XG4gIH1cbiAgc2V0IHVubWFza2VkVmFsdWUodW5tYXNrZWRWYWx1ZSkge1xuICAgIGlmICh0aGlzLmV4cG9zZUJsb2NrKSB7XG4gICAgICBjb25zdCB0YWlsID0gdGhpcy5leHRyYWN0VGFpbCh0aGlzLl9ibG9ja1N0YXJ0UG9zKHRoaXMuX2Jsb2Nrcy5pbmRleE9mKHRoaXMuZXhwb3NlQmxvY2spKSArIHRoaXMuZXhwb3NlQmxvY2suZGlzcGxheVZhbHVlLmxlbmd0aCk7XG4gICAgICB0aGlzLmV4cG9zZUJsb2NrLnVubWFza2VkVmFsdWUgPSB1bm1hc2tlZFZhbHVlO1xuICAgICAgdGhpcy5hcHBlbmRUYWlsKHRhaWwpO1xuICAgICAgdGhpcy5kb0NvbW1pdCgpO1xuICAgIH0gZWxzZSBzdXBlci51bm1hc2tlZFZhbHVlID0gdW5tYXNrZWRWYWx1ZTtcbiAgfVxuICBnZXQgdmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXhwb3NlQmxvY2sgPyB0aGlzLmV4cG9zZUJsb2NrLnZhbHVlIDpcbiAgICAvLyBUT0RPIHJldHVybiBfdmFsdWUgd2hlbiBub3QgaW4gY2hhbmdlP1xuICAgIHRoaXMuX2Jsb2Nrcy5yZWR1Y2UoKHN0ciwgYikgPT4gc3RyICs9IGIudmFsdWUsICcnKTtcbiAgfVxuICBzZXQgdmFsdWUodmFsdWUpIHtcbiAgICBpZiAodGhpcy5leHBvc2VCbG9jaykge1xuICAgICAgY29uc3QgdGFpbCA9IHRoaXMuZXh0cmFjdFRhaWwodGhpcy5fYmxvY2tTdGFydFBvcyh0aGlzLl9ibG9ja3MuaW5kZXhPZih0aGlzLmV4cG9zZUJsb2NrKSkgKyB0aGlzLmV4cG9zZUJsb2NrLmRpc3BsYXlWYWx1ZS5sZW5ndGgpO1xuICAgICAgdGhpcy5leHBvc2VCbG9jay52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5hcHBlbmRUYWlsKHRhaWwpO1xuICAgICAgdGhpcy5kb0NvbW1pdCgpO1xuICAgIH0gZWxzZSBzdXBlci52YWx1ZSA9IHZhbHVlO1xuICB9XG4gIGdldCB0eXBlZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmV4cG9zZUJsb2NrID8gdGhpcy5leHBvc2VCbG9jay50eXBlZFZhbHVlIDogc3VwZXIudHlwZWRWYWx1ZTtcbiAgfVxuICBzZXQgdHlwZWRWYWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLmV4cG9zZUJsb2NrKSB7XG4gICAgICBjb25zdCB0YWlsID0gdGhpcy5leHRyYWN0VGFpbCh0aGlzLl9ibG9ja1N0YXJ0UG9zKHRoaXMuX2Jsb2Nrcy5pbmRleE9mKHRoaXMuZXhwb3NlQmxvY2spKSArIHRoaXMuZXhwb3NlQmxvY2suZGlzcGxheVZhbHVlLmxlbmd0aCk7XG4gICAgICB0aGlzLmV4cG9zZUJsb2NrLnR5cGVkVmFsdWUgPSB2YWx1ZTtcbiAgICAgIHRoaXMuYXBwZW5kVGFpbCh0YWlsKTtcbiAgICAgIHRoaXMuZG9Db21taXQoKTtcbiAgICB9IGVsc2Ugc3VwZXIudHlwZWRWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIGdldCBkaXNwbGF5VmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Jsb2Nrcy5yZWR1Y2UoKHN0ciwgYikgPT4gc3RyICs9IGIuZGlzcGxheVZhbHVlLCAnJyk7XG4gIH1cbiAgYXBwZW5kVGFpbCh0YWlsKSB7XG4gICAgcmV0dXJuIHN1cGVyLmFwcGVuZFRhaWwodGFpbCkuYWdncmVnYXRlKHRoaXMuX2FwcGVuZFBsYWNlaG9sZGVyKCkpO1xuICB9XG4gIF9hcHBlbmRFYWdlcigpIHtcbiAgICB2YXIgX3RoaXMkX21hcFBvc1RvQmxvY2s7XG4gICAgY29uc3QgZGV0YWlscyA9IG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgbGV0IHN0YXJ0QmxvY2tJbmRleCA9IChfdGhpcyRfbWFwUG9zVG9CbG9jayA9IHRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy5kaXNwbGF5VmFsdWUubGVuZ3RoKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJF9tYXBQb3NUb0Jsb2NrLmluZGV4O1xuICAgIGlmIChzdGFydEJsb2NrSW5kZXggPT0gbnVsbCkgcmV0dXJuIGRldGFpbHM7XG5cbiAgICAvLyBUT0RPIHRlc3QgaWYgaXQgd29ya3MgZm9yIG5lc3RlZCBwYXR0ZXJuIG1hc2tzXG4gICAgaWYgKHRoaXMuX2Jsb2Nrc1tzdGFydEJsb2NrSW5kZXhdLmlzRmlsbGVkKSArK3N0YXJ0QmxvY2tJbmRleDtcbiAgICBmb3IgKGxldCBiaSA9IHN0YXJ0QmxvY2tJbmRleDsgYmkgPCB0aGlzLl9ibG9ja3MubGVuZ3RoOyArK2JpKSB7XG4gICAgICBjb25zdCBkID0gdGhpcy5fYmxvY2tzW2JpXS5fYXBwZW5kRWFnZXIoKTtcbiAgICAgIGlmICghZC5pbnNlcnRlZCkgYnJlYWs7XG4gICAgICBkZXRhaWxzLmFnZ3JlZ2F0ZShkKTtcbiAgICB9XG4gICAgcmV0dXJuIGRldGFpbHM7XG4gIH1cbiAgX2FwcGVuZENoYXJSYXcoY2gsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIGNvbnN0IGJsb2NrSXRlciA9IHRoaXMuX21hcFBvc1RvQmxvY2sodGhpcy5kaXNwbGF5VmFsdWUubGVuZ3RoKTtcbiAgICBjb25zdCBkZXRhaWxzID0gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgICBpZiAoIWJsb2NrSXRlcikgcmV0dXJuIGRldGFpbHM7XG4gICAgZm9yIChsZXQgYmkgPSBibG9ja0l0ZXIuaW5kZXgsIGJsb2NrOyBibG9jayA9IHRoaXMuX2Jsb2Nrc1tiaV07ICsrYmkpIHtcbiAgICAgIHZhciBfZmxhZ3MkX2JlZm9yZVRhaWxTdGE7XG4gICAgICBjb25zdCBibG9ja0RldGFpbHMgPSBibG9jay5fYXBwZW5kQ2hhcihjaCwge1xuICAgICAgICAuLi5mbGFncyxcbiAgICAgICAgX2JlZm9yZVRhaWxTdGF0ZTogKF9mbGFncyRfYmVmb3JlVGFpbFN0YSA9IGZsYWdzLl9iZWZvcmVUYWlsU3RhdGUpID09IG51bGwgfHwgKF9mbGFncyRfYmVmb3JlVGFpbFN0YSA9IF9mbGFncyRfYmVmb3JlVGFpbFN0YS5fYmxvY2tzKSA9PSBudWxsID8gdm9pZCAwIDogX2ZsYWdzJF9iZWZvcmVUYWlsU3RhW2JpXVxuICAgICAgfSk7XG4gICAgICBkZXRhaWxzLmFnZ3JlZ2F0ZShibG9ja0RldGFpbHMpO1xuICAgICAgaWYgKGJsb2NrRGV0YWlscy5jb25zdW1lZCkgYnJlYWs7IC8vIGdvIG5leHQgY2hhclxuICAgIH1cbiAgICByZXR1cm4gZGV0YWlscztcbiAgfVxuICBleHRyYWN0VGFpbChmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IGNodW5rVGFpbCA9IG5ldyBDaHVua3NUYWlsRGV0YWlscygpO1xuICAgIGlmIChmcm9tUG9zID09PSB0b1BvcykgcmV0dXJuIGNodW5rVGFpbDtcbiAgICB0aGlzLl9mb3JFYWNoQmxvY2tzSW5SYW5nZShmcm9tUG9zLCB0b1BvcywgKGIsIGJpLCBiRnJvbVBvcywgYlRvUG9zKSA9PiB7XG4gICAgICBjb25zdCBibG9ja0NodW5rID0gYi5leHRyYWN0VGFpbChiRnJvbVBvcywgYlRvUG9zKTtcbiAgICAgIGJsb2NrQ2h1bmsuc3RvcCA9IHRoaXMuX2ZpbmRTdG9wQmVmb3JlKGJpKTtcbiAgICAgIGJsb2NrQ2h1bmsuZnJvbSA9IHRoaXMuX2Jsb2NrU3RhcnRQb3MoYmkpO1xuICAgICAgaWYgKGJsb2NrQ2h1bmsgaW5zdGFuY2VvZiBDaHVua3NUYWlsRGV0YWlscykgYmxvY2tDaHVuay5ibG9ja0luZGV4ID0gYmk7XG4gICAgICBjaHVua1RhaWwuZXh0ZW5kKGJsb2NrQ2h1bmspO1xuICAgIH0pO1xuICAgIHJldHVybiBjaHVua1RhaWw7XG4gIH1cbiAgZXh0cmFjdElucHV0KGZyb21Qb3MsIHRvUG9zLCBmbGFncykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChmbGFncyA9PT0gdm9pZCAwKSB7XG4gICAgICBmbGFncyA9IHt9O1xuICAgIH1cbiAgICBpZiAoZnJvbVBvcyA9PT0gdG9Qb3MpIHJldHVybiAnJztcbiAgICBsZXQgaW5wdXQgPSAnJztcbiAgICB0aGlzLl9mb3JFYWNoQmxvY2tzSW5SYW5nZShmcm9tUG9zLCB0b1BvcywgKGIsIF8sIGZyb21Qb3MsIHRvUG9zKSA9PiB7XG4gICAgICBpbnB1dCArPSBiLmV4dHJhY3RJbnB1dChmcm9tUG9zLCB0b1BvcywgZmxhZ3MpO1xuICAgIH0pO1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICBfZmluZFN0b3BCZWZvcmUoYmxvY2tJbmRleCkge1xuICAgIGxldCBzdG9wQmVmb3JlO1xuICAgIGZvciAobGV0IHNpID0gMDsgc2kgPCB0aGlzLl9zdG9wcy5sZW5ndGg7ICsrc2kpIHtcbiAgICAgIGNvbnN0IHN0b3AgPSB0aGlzLl9zdG9wc1tzaV07XG4gICAgICBpZiAoc3RvcCA8PSBibG9ja0luZGV4KSBzdG9wQmVmb3JlID0gc3RvcDtlbHNlIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gc3RvcEJlZm9yZTtcbiAgfVxuXG4gIC8qKiBBcHBlbmRzIHBsYWNlaG9sZGVyIGRlcGVuZGluZyBvbiBsYXppbmVzcyAqL1xuICBfYXBwZW5kUGxhY2Vob2xkZXIodG9CbG9ja0luZGV4KSB7XG4gICAgY29uc3QgZGV0YWlscyA9IG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgaWYgKHRoaXMubGF6eSAmJiB0b0Jsb2NrSW5kZXggPT0gbnVsbCkgcmV0dXJuIGRldGFpbHM7XG4gICAgY29uc3Qgc3RhcnRCbG9ja0l0ZXIgPSB0aGlzLl9tYXBQb3NUb0Jsb2NrKHRoaXMuZGlzcGxheVZhbHVlLmxlbmd0aCk7XG4gICAgaWYgKCFzdGFydEJsb2NrSXRlcikgcmV0dXJuIGRldGFpbHM7XG4gICAgY29uc3Qgc3RhcnRCbG9ja0luZGV4ID0gc3RhcnRCbG9ja0l0ZXIuaW5kZXg7XG4gICAgY29uc3QgZW5kQmxvY2tJbmRleCA9IHRvQmxvY2tJbmRleCAhPSBudWxsID8gdG9CbG9ja0luZGV4IDogdGhpcy5fYmxvY2tzLmxlbmd0aDtcbiAgICB0aGlzLl9ibG9ja3Muc2xpY2Uoc3RhcnRCbG9ja0luZGV4LCBlbmRCbG9ja0luZGV4KS5mb3JFYWNoKGIgPT4ge1xuICAgICAgaWYgKCFiLmxhenkgfHwgdG9CbG9ja0luZGV4ICE9IG51bGwpIHtcbiAgICAgICAgdmFyIF9ibG9ja3MyO1xuICAgICAgICBkZXRhaWxzLmFnZ3JlZ2F0ZShiLl9hcHBlbmRQbGFjZWhvbGRlcigoX2Jsb2NrczIgPSBiLl9ibG9ja3MpID09IG51bGwgPyB2b2lkIDAgOiBfYmxvY2tzMi5sZW5ndGgpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGV0YWlscztcbiAgfVxuXG4gIC8qKiBGaW5kcyBibG9jayBpbiBwb3MgKi9cbiAgX21hcFBvc1RvQmxvY2socG9zKSB7XG4gICAgbGV0IGFjY1ZhbCA9ICcnO1xuICAgIGZvciAobGV0IGJpID0gMDsgYmkgPCB0aGlzLl9ibG9ja3MubGVuZ3RoOyArK2JpKSB7XG4gICAgICBjb25zdCBibG9jayA9IHRoaXMuX2Jsb2Nrc1tiaV07XG4gICAgICBjb25zdCBibG9ja1N0YXJ0UG9zID0gYWNjVmFsLmxlbmd0aDtcbiAgICAgIGFjY1ZhbCArPSBibG9jay5kaXNwbGF5VmFsdWU7XG4gICAgICBpZiAocG9zIDw9IGFjY1ZhbC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbmRleDogYmksXG4gICAgICAgICAgb2Zmc2V0OiBwb3MgLSBibG9ja1N0YXJ0UG9zXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIF9ibG9ja1N0YXJ0UG9zKGJsb2NrSW5kZXgpIHtcbiAgICByZXR1cm4gdGhpcy5fYmxvY2tzLnNsaWNlKDAsIGJsb2NrSW5kZXgpLnJlZHVjZSgocG9zLCBiKSA9PiBwb3MgKz0gYi5kaXNwbGF5VmFsdWUubGVuZ3RoLCAwKTtcbiAgfVxuICBfZm9yRWFjaEJsb2Nrc0luUmFuZ2UoZnJvbVBvcywgdG9Qb3MsIGZuKSB7XG4gICAgaWYgKHRvUG9zID09PSB2b2lkIDApIHtcbiAgICAgIHRvUG9zID0gdGhpcy5kaXNwbGF5VmFsdWUubGVuZ3RoO1xuICAgIH1cbiAgICBjb25zdCBmcm9tQmxvY2tJdGVyID0gdGhpcy5fbWFwUG9zVG9CbG9jayhmcm9tUG9zKTtcbiAgICBpZiAoZnJvbUJsb2NrSXRlcikge1xuICAgICAgY29uc3QgdG9CbG9ja0l0ZXIgPSB0aGlzLl9tYXBQb3NUb0Jsb2NrKHRvUG9zKTtcbiAgICAgIC8vIHByb2Nlc3MgZmlyc3QgYmxvY2tcbiAgICAgIGNvbnN0IGlzU2FtZUJsb2NrID0gdG9CbG9ja0l0ZXIgJiYgZnJvbUJsb2NrSXRlci5pbmRleCA9PT0gdG9CbG9ja0l0ZXIuaW5kZXg7XG4gICAgICBjb25zdCBmcm9tQmxvY2tTdGFydFBvcyA9IGZyb21CbG9ja0l0ZXIub2Zmc2V0O1xuICAgICAgY29uc3QgZnJvbUJsb2NrRW5kUG9zID0gdG9CbG9ja0l0ZXIgJiYgaXNTYW1lQmxvY2sgPyB0b0Jsb2NrSXRlci5vZmZzZXQgOiB0aGlzLl9ibG9ja3NbZnJvbUJsb2NrSXRlci5pbmRleF0uZGlzcGxheVZhbHVlLmxlbmd0aDtcbiAgICAgIGZuKHRoaXMuX2Jsb2Nrc1tmcm9tQmxvY2tJdGVyLmluZGV4XSwgZnJvbUJsb2NrSXRlci5pbmRleCwgZnJvbUJsb2NrU3RhcnRQb3MsIGZyb21CbG9ja0VuZFBvcyk7XG4gICAgICBpZiAodG9CbG9ja0l0ZXIgJiYgIWlzU2FtZUJsb2NrKSB7XG4gICAgICAgIC8vIHByb2Nlc3MgaW50ZXJtZWRpYXRlIGJsb2Nrc1xuICAgICAgICBmb3IgKGxldCBiaSA9IGZyb21CbG9ja0l0ZXIuaW5kZXggKyAxOyBiaSA8IHRvQmxvY2tJdGVyLmluZGV4OyArK2JpKSB7XG4gICAgICAgICAgZm4odGhpcy5fYmxvY2tzW2JpXSwgYmksIDAsIHRoaXMuX2Jsb2Nrc1tiaV0uZGlzcGxheVZhbHVlLmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBwcm9jZXNzIGxhc3QgYmxvY2tcbiAgICAgICAgZm4odGhpcy5fYmxvY2tzW3RvQmxvY2tJdGVyLmluZGV4XSwgdG9CbG9ja0l0ZXIuaW5kZXgsIDAsIHRvQmxvY2tJdGVyLm9mZnNldCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJlbW92ZShmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZURldGFpbHMgPSBzdXBlci5yZW1vdmUoZnJvbVBvcywgdG9Qb3MpO1xuICAgIHRoaXMuX2ZvckVhY2hCbG9ja3NJblJhbmdlKGZyb21Qb3MsIHRvUG9zLCAoYiwgXywgYkZyb21Qb3MsIGJUb1BvcykgPT4ge1xuICAgICAgcmVtb3ZlRGV0YWlscy5hZ2dyZWdhdGUoYi5yZW1vdmUoYkZyb21Qb3MsIGJUb1BvcykpO1xuICAgIH0pO1xuICAgIHJldHVybiByZW1vdmVEZXRhaWxzO1xuICB9XG4gIG5lYXJlc3RJbnB1dFBvcyhjdXJzb3JQb3MsIGRpcmVjdGlvbikge1xuICAgIGlmIChkaXJlY3Rpb24gPT09IHZvaWQgMCkge1xuICAgICAgZGlyZWN0aW9uID0gRElSRUNUSU9OLk5PTkU7XG4gICAgfVxuICAgIGlmICghdGhpcy5fYmxvY2tzLmxlbmd0aCkgcmV0dXJuIDA7XG4gICAgY29uc3QgY3Vyc29yID0gbmV3IFBhdHRlcm5DdXJzb3IodGhpcywgY3Vyc29yUG9zKTtcbiAgICBpZiAoZGlyZWN0aW9uID09PSBESVJFQ1RJT04uTk9ORSkge1xuICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgLy8gTk9ORSBzaG91bGQgb25seSBnbyBvdXQgZnJvbSBmaXhlZCB0byB0aGUgcmlnaHQhXG4gICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICBpZiAoY3Vyc29yLnB1c2hSaWdodEJlZm9yZUlucHV0KCkpIHJldHVybiBjdXJzb3IucG9zO1xuICAgICAgY3Vyc29yLnBvcFN0YXRlKCk7XG4gICAgICBpZiAoY3Vyc29yLnB1c2hMZWZ0QmVmb3JlSW5wdXQoKSkgcmV0dXJuIGN1cnNvci5wb3M7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwbGF5VmFsdWUubGVuZ3RoO1xuICAgIH1cblxuICAgIC8vIEZPUkNFIGlzIG9ubHkgYWJvdXQgYXwqIG90aGVyd2lzZSBpcyAwXG4gICAgaWYgKGRpcmVjdGlvbiA9PT0gRElSRUNUSU9OLkxFRlQgfHwgZGlyZWN0aW9uID09PSBESVJFQ1RJT04uRk9SQ0VfTEVGVCkge1xuICAgICAgLy8gdHJ5IHRvIGJyZWFrIGZhc3Qgd2hlbiAqfGFcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09IERJUkVDVElPTi5MRUZUKSB7XG4gICAgICAgIGN1cnNvci5wdXNoUmlnaHRCZWZvcmVGaWxsZWQoKTtcbiAgICAgICAgaWYgKGN1cnNvci5vayAmJiBjdXJzb3IucG9zID09PSBjdXJzb3JQb3MpIHJldHVybiBjdXJzb3JQb3M7XG4gICAgICAgIGN1cnNvci5wb3BTdGF0ZSgpO1xuICAgICAgfVxuXG4gICAgICAvLyBmb3J3YXJkIGZsb3dcbiAgICAgIGN1cnNvci5wdXNoTGVmdEJlZm9yZUlucHV0KCk7XG4gICAgICBjdXJzb3IucHVzaExlZnRCZWZvcmVSZXF1aXJlZCgpO1xuICAgICAgY3Vyc29yLnB1c2hMZWZ0QmVmb3JlRmlsbGVkKCk7XG5cbiAgICAgIC8vIGJhY2t3YXJkIGZsb3dcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09IERJUkVDVElPTi5MRUZUKSB7XG4gICAgICAgIGN1cnNvci5wdXNoUmlnaHRCZWZvcmVJbnB1dCgpO1xuICAgICAgICBjdXJzb3IucHVzaFJpZ2h0QmVmb3JlUmVxdWlyZWQoKTtcbiAgICAgICAgaWYgKGN1cnNvci5vayAmJiBjdXJzb3IucG9zIDw9IGN1cnNvclBvcykgcmV0dXJuIGN1cnNvci5wb3M7XG4gICAgICAgIGN1cnNvci5wb3BTdGF0ZSgpO1xuICAgICAgICBpZiAoY3Vyc29yLm9rICYmIGN1cnNvci5wb3MgPD0gY3Vyc29yUG9zKSByZXR1cm4gY3Vyc29yLnBvcztcbiAgICAgICAgY3Vyc29yLnBvcFN0YXRlKCk7XG4gICAgICB9XG4gICAgICBpZiAoY3Vyc29yLm9rKSByZXR1cm4gY3Vyc29yLnBvcztcbiAgICAgIGlmIChkaXJlY3Rpb24gPT09IERJUkVDVElPTi5GT1JDRV9MRUZUKSByZXR1cm4gMDtcbiAgICAgIGN1cnNvci5wb3BTdGF0ZSgpO1xuICAgICAgaWYgKGN1cnNvci5vaykgcmV0dXJuIGN1cnNvci5wb3M7XG4gICAgICBjdXJzb3IucG9wU3RhdGUoKTtcbiAgICAgIGlmIChjdXJzb3Iub2spIHJldHVybiBjdXJzb3IucG9zO1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb24gPT09IERJUkVDVElPTi5SSUdIVCB8fCBkaXJlY3Rpb24gPT09IERJUkVDVElPTi5GT1JDRV9SSUdIVCkge1xuICAgICAgLy8gZm9yd2FyZCBmbG93XG4gICAgICBjdXJzb3IucHVzaFJpZ2h0QmVmb3JlSW5wdXQoKTtcbiAgICAgIGN1cnNvci5wdXNoUmlnaHRCZWZvcmVSZXF1aXJlZCgpO1xuICAgICAgaWYgKGN1cnNvci5wdXNoUmlnaHRCZWZvcmVGaWxsZWQoKSkgcmV0dXJuIGN1cnNvci5wb3M7XG4gICAgICBpZiAoZGlyZWN0aW9uID09PSBESVJFQ1RJT04uRk9SQ0VfUklHSFQpIHJldHVybiB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG5cbiAgICAgIC8vIGJhY2t3YXJkIGZsb3dcbiAgICAgIGN1cnNvci5wb3BTdGF0ZSgpO1xuICAgICAgaWYgKGN1cnNvci5vaykgcmV0dXJuIGN1cnNvci5wb3M7XG4gICAgICBjdXJzb3IucG9wU3RhdGUoKTtcbiAgICAgIGlmIChjdXJzb3Iub2spIHJldHVybiBjdXJzb3IucG9zO1xuICAgICAgcmV0dXJuIHRoaXMubmVhcmVzdElucHV0UG9zKGN1cnNvclBvcywgRElSRUNUSU9OLkxFRlQpO1xuICAgIH1cbiAgICByZXR1cm4gY3Vyc29yUG9zO1xuICB9XG4gIHRvdGFsSW5wdXRQb3NpdGlvbnMoZnJvbVBvcywgdG9Qb3MpIHtcbiAgICBpZiAoZnJvbVBvcyA9PT0gdm9pZCAwKSB7XG4gICAgICBmcm9tUG9zID0gMDtcbiAgICB9XG4gICAgaWYgKHRvUG9zID09PSB2b2lkIDApIHtcbiAgICAgIHRvUG9zID0gdGhpcy5kaXNwbGF5VmFsdWUubGVuZ3RoO1xuICAgIH1cbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIHRoaXMuX2ZvckVhY2hCbG9ja3NJblJhbmdlKGZyb21Qb3MsIHRvUG9zLCAoYiwgXywgYkZyb21Qb3MsIGJUb1BvcykgPT4ge1xuICAgICAgdG90YWwgKz0gYi50b3RhbElucHV0UG9zaXRpb25zKGJGcm9tUG9zLCBiVG9Qb3MpO1xuICAgIH0pO1xuICAgIHJldHVybiB0b3RhbDtcbiAgfVxuXG4gIC8qKiBHZXQgYmxvY2sgYnkgbmFtZSAqL1xuICBtYXNrZWRCbG9jayhuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFza2VkQmxvY2tzKG5hbWUpWzBdO1xuICB9XG5cbiAgLyoqIEdldCBhbGwgYmxvY2tzIGJ5IG5hbWUgKi9cbiAgbWFza2VkQmxvY2tzKG5hbWUpIHtcbiAgICBjb25zdCBpbmRpY2VzID0gdGhpcy5fbWFza2VkQmxvY2tzW25hbWVdO1xuICAgIGlmICghaW5kaWNlcykgcmV0dXJuIFtdO1xuICAgIHJldHVybiBpbmRpY2VzLm1hcChnaSA9PiB0aGlzLl9ibG9ja3NbZ2ldKTtcbiAgfVxuICBwYWQoZmxhZ3MpIHtcbiAgICBjb25zdCBkZXRhaWxzID0gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgICB0aGlzLl9mb3JFYWNoQmxvY2tzSW5SYW5nZSgwLCB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGgsIGIgPT4gZGV0YWlscy5hZ2dyZWdhdGUoYi5wYWQoZmxhZ3MpKSk7XG4gICAgcmV0dXJuIGRldGFpbHM7XG4gIH1cbn1cbk1hc2tlZFBhdHRlcm4uREVGQVVMVFMgPSB7XG4gIC4uLk1hc2tlZC5ERUZBVUxUUyxcbiAgbGF6eTogdHJ1ZSxcbiAgcGxhY2Vob2xkZXJDaGFyOiAnXydcbn07XG5NYXNrZWRQYXR0ZXJuLlNUT1BfQ0hBUiA9ICdgJztcbk1hc2tlZFBhdHRlcm4uRVNDQVBFX0NIQVIgPSAnXFxcXCc7XG5NYXNrZWRQYXR0ZXJuLklucHV0RGVmaW5pdGlvbiA9IFBhdHRlcm5JbnB1dERlZmluaXRpb247XG5NYXNrZWRQYXR0ZXJuLkZpeGVkRGVmaW5pdGlvbiA9IFBhdHRlcm5GaXhlZERlZmluaXRpb247XG5JTWFzay5NYXNrZWRQYXR0ZXJuID0gTWFza2VkUGF0dGVybjtcblxuZXhwb3J0IHsgTWFza2VkUGF0dGVybiBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IENoYW5nZURldGFpbHMgZnJvbSAnLi4vY29yZS9jaGFuZ2UtZGV0YWlscy5qcyc7XG5pbXBvcnQgSU1hc2sgZnJvbSAnLi4vY29yZS9ob2xkZXIuanMnO1xuaW1wb3J0IE1hc2tlZFBhdHRlcm4gZnJvbSAnLi9wYXR0ZXJuLmpzJztcbmltcG9ydCAnLi4vY29yZS91dGlscy5qcyc7XG5pbXBvcnQgJy4vYmFzZS5qcyc7XG5pbXBvcnQgJy4uL2NvcmUvY29udGludW91cy10YWlsLWRldGFpbHMuanMnO1xuaW1wb3J0ICcuL2ZhY3RvcnkuanMnO1xuaW1wb3J0ICcuL3BhdHRlcm4vY2h1bmstdGFpbC1kZXRhaWxzLmpzJztcbmltcG9ydCAnLi9wYXR0ZXJuL2N1cnNvci5qcyc7XG5pbXBvcnQgJy4vcGF0dGVybi9maXhlZC1kZWZpbml0aW9uLmpzJztcbmltcG9ydCAnLi9wYXR0ZXJuL2lucHV0LWRlZmluaXRpb24uanMnO1xuaW1wb3J0ICcuL3JlZ2V4cC5qcyc7XG5cbi8qKiBQYXR0ZXJuIHdoaWNoIGFjY2VwdHMgcmFuZ2VzICovXG5jbGFzcyBNYXNrZWRSYW5nZSBleHRlbmRzIE1hc2tlZFBhdHRlcm4ge1xuICAvKipcbiAgICBPcHRpb25hbGx5IHNldHMgbWF4IGxlbmd0aCBvZiBwYXR0ZXJuLlxuICAgIFVzZWQgd2hlbiBwYXR0ZXJuIGxlbmd0aCBpcyBsb25nZXIgdGhlbiBgdG9gIHBhcmFtIGxlbmd0aC4gUGFkcyB6ZXJvcyBhdCBzdGFydCBpbiB0aGlzIGNhc2UuXG4gICovXG5cbiAgLyoqIE1pbiBib3VuZCAqL1xuXG4gIC8qKiBNYXggYm91bmQgKi9cblxuICBnZXQgX21hdGNoRnJvbSgpIHtcbiAgICByZXR1cm4gdGhpcy5tYXhMZW5ndGggLSBTdHJpbmcodGhpcy5mcm9tKS5sZW5ndGg7XG4gIH1cbiAgY29uc3RydWN0b3Iob3B0cykge1xuICAgIHN1cGVyKG9wdHMpOyAvLyBtYXNrIHdpbGwgYmUgY3JlYXRlZCBpbiBfdXBkYXRlXG4gIH1cbiAgdXBkYXRlT3B0aW9ucyhvcHRzKSB7XG4gICAgc3VwZXIudXBkYXRlT3B0aW9ucyhvcHRzKTtcbiAgfVxuICBfdXBkYXRlKG9wdHMpIHtcbiAgICBjb25zdCB7XG4gICAgICB0byA9IHRoaXMudG8gfHwgMCxcbiAgICAgIGZyb20gPSB0aGlzLmZyb20gfHwgMCxcbiAgICAgIG1heExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoIHx8IDAsXG4gICAgICBhdXRvZml4ID0gdGhpcy5hdXRvZml4LFxuICAgICAgLi4ucGF0dGVybk9wdHNcbiAgICB9ID0gb3B0cztcbiAgICB0aGlzLnRvID0gdG87XG4gICAgdGhpcy5mcm9tID0gZnJvbTtcbiAgICB0aGlzLm1heExlbmd0aCA9IE1hdGgubWF4KFN0cmluZyh0bykubGVuZ3RoLCBtYXhMZW5ndGgpO1xuICAgIHRoaXMuYXV0b2ZpeCA9IGF1dG9maXg7XG4gICAgY29uc3QgZnJvbVN0ciA9IFN0cmluZyh0aGlzLmZyb20pLnBhZFN0YXJ0KHRoaXMubWF4TGVuZ3RoLCAnMCcpO1xuICAgIGNvbnN0IHRvU3RyID0gU3RyaW5nKHRoaXMudG8pLnBhZFN0YXJ0KHRoaXMubWF4TGVuZ3RoLCAnMCcpO1xuICAgIGxldCBzYW1lQ2hhcnNDb3VudCA9IDA7XG4gICAgd2hpbGUgKHNhbWVDaGFyc0NvdW50IDwgdG9TdHIubGVuZ3RoICYmIHRvU3RyW3NhbWVDaGFyc0NvdW50XSA9PT0gZnJvbVN0cltzYW1lQ2hhcnNDb3VudF0pICsrc2FtZUNoYXJzQ291bnQ7XG4gICAgcGF0dGVybk9wdHMubWFzayA9IHRvU3RyLnNsaWNlKDAsIHNhbWVDaGFyc0NvdW50KS5yZXBsYWNlKC8wL2csICdcXFxcMCcpICsgJzAnLnJlcGVhdCh0aGlzLm1heExlbmd0aCAtIHNhbWVDaGFyc0NvdW50KTtcbiAgICBzdXBlci5fdXBkYXRlKHBhdHRlcm5PcHRzKTtcbiAgfVxuICBnZXQgaXNDb21wbGV0ZSgpIHtcbiAgICByZXR1cm4gc3VwZXIuaXNDb21wbGV0ZSAmJiBCb29sZWFuKHRoaXMudmFsdWUpO1xuICB9XG4gIGJvdW5kYXJpZXMoc3RyKSB7XG4gICAgbGV0IG1pbnN0ciA9ICcnO1xuICAgIGxldCBtYXhzdHIgPSAnJztcbiAgICBjb25zdCBbLCBwbGFjZWhvbGRlciwgbnVtXSA9IHN0ci5tYXRjaCgvXihcXEQqKShcXGQqKShcXEQqKS8pIHx8IFtdO1xuICAgIGlmIChudW0pIHtcbiAgICAgIG1pbnN0ciA9ICcwJy5yZXBlYXQocGxhY2Vob2xkZXIubGVuZ3RoKSArIG51bTtcbiAgICAgIG1heHN0ciA9ICc5Jy5yZXBlYXQocGxhY2Vob2xkZXIubGVuZ3RoKSArIG51bTtcbiAgICB9XG4gICAgbWluc3RyID0gbWluc3RyLnBhZEVuZCh0aGlzLm1heExlbmd0aCwgJzAnKTtcbiAgICBtYXhzdHIgPSBtYXhzdHIucGFkRW5kKHRoaXMubWF4TGVuZ3RoLCAnOScpO1xuICAgIHJldHVybiBbbWluc3RyLCBtYXhzdHJdO1xuICB9XG4gIGRvUHJlcGFyZUNoYXIoY2gsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIGxldCBkZXRhaWxzO1xuICAgIFtjaCwgZGV0YWlsc10gPSBzdXBlci5kb1ByZXBhcmVDaGFyKGNoLnJlcGxhY2UoL1xcRC9nLCAnJyksIGZsYWdzKTtcbiAgICBpZiAoIWNoKSBkZXRhaWxzLnNraXAgPSAhdGhpcy5pc0NvbXBsZXRlO1xuICAgIHJldHVybiBbY2gsIGRldGFpbHNdO1xuICB9XG4gIF9hcHBlbmRDaGFyUmF3KGNoLCBmbGFncykge1xuICAgIGlmIChmbGFncyA9PT0gdm9pZCAwKSB7XG4gICAgICBmbGFncyA9IHt9O1xuICAgIH1cbiAgICBpZiAoIXRoaXMuYXV0b2ZpeCB8fCB0aGlzLnZhbHVlLmxlbmd0aCArIDEgPiB0aGlzLm1heExlbmd0aCkgcmV0dXJuIHN1cGVyLl9hcHBlbmRDaGFyUmF3KGNoLCBmbGFncyk7XG4gICAgY29uc3QgZnJvbVN0ciA9IFN0cmluZyh0aGlzLmZyb20pLnBhZFN0YXJ0KHRoaXMubWF4TGVuZ3RoLCAnMCcpO1xuICAgIGNvbnN0IHRvU3RyID0gU3RyaW5nKHRoaXMudG8pLnBhZFN0YXJ0KHRoaXMubWF4TGVuZ3RoLCAnMCcpO1xuICAgIGNvbnN0IFttaW5zdHIsIG1heHN0cl0gPSB0aGlzLmJvdW5kYXJpZXModGhpcy52YWx1ZSArIGNoKTtcbiAgICBpZiAoTnVtYmVyKG1heHN0cikgPCB0aGlzLmZyb20pIHJldHVybiBzdXBlci5fYXBwZW5kQ2hhclJhdyhmcm9tU3RyW3RoaXMudmFsdWUubGVuZ3RoXSwgZmxhZ3MpO1xuICAgIGlmIChOdW1iZXIobWluc3RyKSA+IHRoaXMudG8pIHtcbiAgICAgIGlmICghZmxhZ3MudGFpbCAmJiB0aGlzLmF1dG9maXggPT09ICdwYWQnICYmIHRoaXMudmFsdWUubGVuZ3RoICsgMSA8IHRoaXMubWF4TGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiBzdXBlci5fYXBwZW5kQ2hhclJhdyhmcm9tU3RyW3RoaXMudmFsdWUubGVuZ3RoXSwgZmxhZ3MpLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBlbmRDaGFyUmF3KGNoLCBmbGFncykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHN1cGVyLl9hcHBlbmRDaGFyUmF3KHRvU3RyW3RoaXMudmFsdWUubGVuZ3RoXSwgZmxhZ3MpO1xuICAgIH1cbiAgICByZXR1cm4gc3VwZXIuX2FwcGVuZENoYXJSYXcoY2gsIGZsYWdzKTtcbiAgfVxuICBkb1ZhbGlkYXRlKGZsYWdzKSB7XG4gICAgY29uc3Qgc3RyID0gdGhpcy52YWx1ZTtcbiAgICBjb25zdCBmaXJzdE5vblplcm8gPSBzdHIuc2VhcmNoKC9bXjBdLyk7XG4gICAgaWYgKGZpcnN0Tm9uWmVybyA9PT0gLTEgJiYgc3RyLmxlbmd0aCA8PSB0aGlzLl9tYXRjaEZyb20pIHJldHVybiB0cnVlO1xuICAgIGNvbnN0IFttaW5zdHIsIG1heHN0cl0gPSB0aGlzLmJvdW5kYXJpZXMoc3RyKTtcbiAgICByZXR1cm4gdGhpcy5mcm9tIDw9IE51bWJlcihtYXhzdHIpICYmIE51bWJlcihtaW5zdHIpIDw9IHRoaXMudG8gJiYgc3VwZXIuZG9WYWxpZGF0ZShmbGFncyk7XG4gIH1cbiAgcGFkKGZsYWdzKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgaWYgKHRoaXMudmFsdWUubGVuZ3RoID09PSB0aGlzLm1heExlbmd0aCkgcmV0dXJuIGRldGFpbHM7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgIGNvbnN0IHBhZExlbmd0aCA9IHRoaXMubWF4TGVuZ3RoIC0gdGhpcy52YWx1ZS5sZW5ndGg7XG4gICAgaWYgKHBhZExlbmd0aCkge1xuICAgICAgdGhpcy5yZXNldCgpO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYWRMZW5ndGg7ICsraSkge1xuICAgICAgICBkZXRhaWxzLmFnZ3JlZ2F0ZShzdXBlci5fYXBwZW5kQ2hhclJhdygnMCcsIGZsYWdzKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIGFwcGVuZCB0YWlsXG4gICAgICB2YWx1ZS5zcGxpdCgnJykuZm9yRWFjaChjaCA9PiB0aGlzLl9hcHBlbmRDaGFyUmF3KGNoKSk7XG4gICAgfVxuICAgIHJldHVybiBkZXRhaWxzO1xuICB9XG59XG5JTWFzay5NYXNrZWRSYW5nZSA9IE1hc2tlZFJhbmdlO1xuXG5leHBvcnQgeyBNYXNrZWRSYW5nZSBhcyBkZWZhdWx0IH07XG4iLCAiaW1wb3J0IE1hc2tlZFBhdHRlcm4gZnJvbSAnLi9wYXR0ZXJuLmpzJztcbmltcG9ydCBNYXNrZWRSYW5nZSBmcm9tICcuL3JhbmdlLmpzJztcbmltcG9ydCBJTWFzayBmcm9tICcuLi9jb3JlL2hvbGRlci5qcyc7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gJy4uL2NvcmUvdXRpbHMuanMnO1xuaW1wb3J0ICcuLi9jb3JlL2NoYW5nZS1kZXRhaWxzLmpzJztcbmltcG9ydCAnLi9iYXNlLmpzJztcbmltcG9ydCAnLi4vY29yZS9jb250aW51b3VzLXRhaWwtZGV0YWlscy5qcyc7XG5pbXBvcnQgJy4vZmFjdG9yeS5qcyc7XG5pbXBvcnQgJy4vcGF0dGVybi9jaHVuay10YWlsLWRldGFpbHMuanMnO1xuaW1wb3J0ICcuL3BhdHRlcm4vY3Vyc29yLmpzJztcbmltcG9ydCAnLi9wYXR0ZXJuL2ZpeGVkLWRlZmluaXRpb24uanMnO1xuaW1wb3J0ICcuL3BhdHRlcm4vaW5wdXQtZGVmaW5pdGlvbi5qcyc7XG5pbXBvcnQgJy4vcmVnZXhwLmpzJztcblxuY29uc3QgRGVmYXVsdFBhdHRlcm4gPSAnZHsufWBtey59YFknO1xuXG4vLyBNYWtlIGZvcm1hdCBhbmQgcGFyc2UgcmVxdWlyZWQgd2hlbiBwYXR0ZXJuIGlzIHByb3ZpZGVkXG5cbi8qKiBEYXRlIG1hc2sgKi9cbmNsYXNzIE1hc2tlZERhdGUgZXh0ZW5kcyBNYXNrZWRQYXR0ZXJuIHtcbiAgc3RhdGljIGV4dHJhY3RQYXR0ZXJuT3B0aW9ucyhvcHRzKSB7XG4gICAgY29uc3Qge1xuICAgICAgbWFzayxcbiAgICAgIHBhdHRlcm4sXG4gICAgICAuLi5wYXR0ZXJuT3B0c1xuICAgIH0gPSBvcHRzO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXR0ZXJuT3B0cyxcbiAgICAgIG1hc2s6IGlzU3RyaW5nKG1hc2spID8gbWFzayA6IHBhdHRlcm5cbiAgICB9O1xuICB9XG5cbiAgLyoqIFBhdHRlcm4gbWFzayBmb3IgZGF0ZSBhY2NvcmRpbmcgdG8ge0BsaW5rIE1hc2tlZERhdGUjZm9ybWF0fSAqL1xuXG4gIC8qKiBTdGFydCBkYXRlICovXG5cbiAgLyoqIEVuZCBkYXRlICovXG5cbiAgLyoqIEZvcm1hdCB0eXBlZCB2YWx1ZSB0byBzdHJpbmcgKi9cblxuICAvKiogUGFyc2Ugc3RyaW5nIHRvIGdldCB0eXBlZCB2YWx1ZSAqL1xuXG4gIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICBzdXBlcihNYXNrZWREYXRlLmV4dHJhY3RQYXR0ZXJuT3B0aW9ucyh7XG4gICAgICAuLi5NYXNrZWREYXRlLkRFRkFVTFRTLFxuICAgICAgLi4ub3B0c1xuICAgIH0pKTtcbiAgfVxuICB1cGRhdGVPcHRpb25zKG9wdHMpIHtcbiAgICBzdXBlci51cGRhdGVPcHRpb25zKG9wdHMpO1xuICB9XG4gIF91cGRhdGUob3B0cykge1xuICAgIGNvbnN0IHtcbiAgICAgIG1hc2ssXG4gICAgICBwYXR0ZXJuLFxuICAgICAgYmxvY2tzLFxuICAgICAgLi4ucGF0dGVybk9wdHNcbiAgICB9ID0ge1xuICAgICAgLi4uTWFza2VkRGF0ZS5ERUZBVUxUUyxcbiAgICAgIC4uLm9wdHNcbiAgICB9O1xuICAgIGNvbnN0IHBhdHRlcm5CbG9ja3MgPSBPYmplY3QuYXNzaWduKHt9LCBNYXNrZWREYXRlLkdFVF9ERUZBVUxUX0JMT0NLUygpKTtcbiAgICAvLyBhZGp1c3QgeWVhciBibG9ja1xuICAgIGlmIChvcHRzLm1pbikgcGF0dGVybkJsb2Nrcy5ZLmZyb20gPSBvcHRzLm1pbi5nZXRGdWxsWWVhcigpO1xuICAgIGlmIChvcHRzLm1heCkgcGF0dGVybkJsb2Nrcy5ZLnRvID0gb3B0cy5tYXguZ2V0RnVsbFllYXIoKTtcbiAgICBpZiAob3B0cy5taW4gJiYgb3B0cy5tYXggJiYgcGF0dGVybkJsb2Nrcy5ZLmZyb20gPT09IHBhdHRlcm5CbG9ja3MuWS50bykge1xuICAgICAgcGF0dGVybkJsb2Nrcy5tLmZyb20gPSBvcHRzLm1pbi5nZXRNb250aCgpICsgMTtcbiAgICAgIHBhdHRlcm5CbG9ja3MubS50byA9IG9wdHMubWF4LmdldE1vbnRoKCkgKyAxO1xuICAgICAgaWYgKHBhdHRlcm5CbG9ja3MubS5mcm9tID09PSBwYXR0ZXJuQmxvY2tzLm0udG8pIHtcbiAgICAgICAgcGF0dGVybkJsb2Nrcy5kLmZyb20gPSBvcHRzLm1pbi5nZXREYXRlKCk7XG4gICAgICAgIHBhdHRlcm5CbG9ja3MuZC50byA9IG9wdHMubWF4LmdldERhdGUoKTtcbiAgICAgIH1cbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihwYXR0ZXJuQmxvY2tzLCB0aGlzLmJsb2NrcywgYmxvY2tzKTtcbiAgICBzdXBlci5fdXBkYXRlKHtcbiAgICAgIC4uLnBhdHRlcm5PcHRzLFxuICAgICAgbWFzazogaXNTdHJpbmcobWFzaykgPyBtYXNrIDogcGF0dGVybixcbiAgICAgIGJsb2NrczogcGF0dGVybkJsb2Nrc1xuICAgIH0pO1xuICB9XG4gIGRvVmFsaWRhdGUoZmxhZ3MpIHtcbiAgICBjb25zdCBkYXRlID0gdGhpcy5kYXRlO1xuICAgIHJldHVybiBzdXBlci5kb1ZhbGlkYXRlKGZsYWdzKSAmJiAoIXRoaXMuaXNDb21wbGV0ZSB8fCB0aGlzLmlzRGF0ZUV4aXN0KHRoaXMudmFsdWUpICYmIGRhdGUgIT0gbnVsbCAmJiAodGhpcy5taW4gPT0gbnVsbCB8fCB0aGlzLm1pbiA8PSBkYXRlKSAmJiAodGhpcy5tYXggPT0gbnVsbCB8fCBkYXRlIDw9IHRoaXMubWF4KSk7XG4gIH1cblxuICAvKiogQ2hlY2tzIGlmIGRhdGUgaXMgZXhpc3RzICovXG4gIGlzRGF0ZUV4aXN0KHN0cikge1xuICAgIHJldHVybiB0aGlzLmZvcm1hdCh0aGlzLnBhcnNlKHN0ciwgdGhpcyksIHRoaXMpLmluZGV4T2Yoc3RyKSA+PSAwO1xuICB9XG5cbiAgLyoqIFBhcnNlZCBEYXRlICovXG4gIGdldCBkYXRlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGVkVmFsdWU7XG4gIH1cbiAgc2V0IGRhdGUoZGF0ZSkge1xuICAgIHRoaXMudHlwZWRWYWx1ZSA9IGRhdGU7XG4gIH1cbiAgZ2V0IHR5cGVkVmFsdWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNDb21wbGV0ZSA/IHN1cGVyLnR5cGVkVmFsdWUgOiBudWxsO1xuICB9XG4gIHNldCB0eXBlZFZhbHVlKHZhbHVlKSB7XG4gICAgc3VwZXIudHlwZWRWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIG1hc2tFcXVhbHMobWFzaykge1xuICAgIHJldHVybiBtYXNrID09PSBEYXRlIHx8IHN1cGVyLm1hc2tFcXVhbHMobWFzayk7XG4gIH1cbiAgb3B0aW9uc0lzQ2hhbmdlZChvcHRzKSB7XG4gICAgcmV0dXJuIHN1cGVyLm9wdGlvbnNJc0NoYW5nZWQoTWFza2VkRGF0ZS5leHRyYWN0UGF0dGVybk9wdGlvbnMob3B0cykpO1xuICB9XG59XG5NYXNrZWREYXRlLkdFVF9ERUZBVUxUX0JMT0NLUyA9ICgpID0+ICh7XG4gIGQ6IHtcbiAgICBtYXNrOiBNYXNrZWRSYW5nZSxcbiAgICBmcm9tOiAxLFxuICAgIHRvOiAzMSxcbiAgICBtYXhMZW5ndGg6IDJcbiAgfSxcbiAgbToge1xuICAgIG1hc2s6IE1hc2tlZFJhbmdlLFxuICAgIGZyb206IDEsXG4gICAgdG86IDEyLFxuICAgIG1heExlbmd0aDogMlxuICB9LFxuICBZOiB7XG4gICAgbWFzazogTWFza2VkUmFuZ2UsXG4gICAgZnJvbTogMTkwMCxcbiAgICB0bzogOTk5OVxuICB9XG59KTtcbk1hc2tlZERhdGUuREVGQVVMVFMgPSB7XG4gIC4uLk1hc2tlZFBhdHRlcm4uREVGQVVMVFMsXG4gIG1hc2s6IERhdGUsXG4gIHBhdHRlcm46IERlZmF1bHRQYXR0ZXJuLFxuICBmb3JtYXQ6IChkYXRlLCBtYXNrZWQpID0+IHtcbiAgICBpZiAoIWRhdGUpIHJldHVybiAnJztcbiAgICBjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG4gICAgY29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcbiAgICBjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuICAgIHJldHVybiBbZGF5LCBtb250aCwgeWVhcl0uam9pbignLicpO1xuICB9LFxuICBwYXJzZTogKHN0ciwgbWFza2VkKSA9PiB7XG4gICAgY29uc3QgW2RheSwgbW9udGgsIHllYXJdID0gc3RyLnNwbGl0KCcuJykubWFwKE51bWJlcik7XG4gICAgcmV0dXJuIG5ldyBEYXRlKHllYXIsIG1vbnRoIC0gMSwgZGF5KTtcbiAgfVxufTtcbklNYXNrLk1hc2tlZERhdGUgPSBNYXNrZWREYXRlO1xuXG5leHBvcnQgeyBNYXNrZWREYXRlIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgeyBESVJFQ1RJT04sIG9iamVjdEluY2x1ZGVzIH0gZnJvbSAnLi4vY29yZS91dGlscy5qcyc7XG5pbXBvcnQgQ2hhbmdlRGV0YWlscyBmcm9tICcuLi9jb3JlL2NoYW5nZS1kZXRhaWxzLmpzJztcbmltcG9ydCBjcmVhdGVNYXNrLCB7IG5vcm1hbGl6ZU9wdHMgfSBmcm9tICcuL2ZhY3RvcnkuanMnO1xuaW1wb3J0IE1hc2tlZCBmcm9tICcuL2Jhc2UuanMnO1xuaW1wb3J0IElNYXNrIGZyb20gJy4uL2NvcmUvaG9sZGVyLmpzJztcbmltcG9ydCAnLi4vY29yZS9jb250aW51b3VzLXRhaWwtZGV0YWlscy5qcyc7XG5cbi8qKiBEeW5hbWljIG1hc2sgZm9yIGNob29zaW5nIGFwcHJvcHJpYXRlIG1hc2sgaW4gcnVuLXRpbWUgKi9cbmNsYXNzIE1hc2tlZER5bmFtaWMgZXh0ZW5kcyBNYXNrZWQge1xuICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uTWFza2VkRHluYW1pYy5ERUZBVUxUUyxcbiAgICAgIC4uLm9wdHNcbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRNYXNrID0gdW5kZWZpbmVkO1xuICB9XG4gIHVwZGF0ZU9wdGlvbnMob3B0cykge1xuICAgIHN1cGVyLnVwZGF0ZU9wdGlvbnMob3B0cyk7XG4gIH1cbiAgX3VwZGF0ZShvcHRzKSB7XG4gICAgc3VwZXIuX3VwZGF0ZShvcHRzKTtcbiAgICBpZiAoJ21hc2snIGluIG9wdHMpIHtcbiAgICAgIHRoaXMuZXhwb3NlTWFzayA9IHVuZGVmaW5lZDtcbiAgICAgIC8vIG1hc2sgY291bGQgYmUgdG90YWxseSBkeW5hbWljIHdpdGggb25seSBgZGlzcGF0Y2hgIG9wdGlvblxuICAgICAgdGhpcy5jb21waWxlZE1hc2tzID0gQXJyYXkuaXNBcnJheShvcHRzLm1hc2spID8gb3B0cy5tYXNrLm1hcChtID0+IHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIGV4cG9zZSxcbiAgICAgICAgICAuLi5tYXNrT3B0c1xuICAgICAgICB9ID0gbm9ybWFsaXplT3B0cyhtKTtcbiAgICAgICAgY29uc3QgbWFza2VkID0gY3JlYXRlTWFzayh7XG4gICAgICAgICAgb3ZlcndyaXRlOiB0aGlzLl9vdmVyd3JpdGUsXG4gICAgICAgICAgZWFnZXI6IHRoaXMuX2VhZ2VyLFxuICAgICAgICAgIHNraXBJbnZhbGlkOiB0aGlzLl9za2lwSW52YWxpZCxcbiAgICAgICAgICAuLi5tYXNrT3B0c1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGV4cG9zZSkgdGhpcy5leHBvc2VNYXNrID0gbWFza2VkO1xuICAgICAgICByZXR1cm4gbWFza2VkO1xuICAgICAgfSkgOiBbXTtcblxuICAgICAgLy8gdGhpcy5jdXJyZW50TWFzayA9IHRoaXMuZG9EaXNwYXRjaCgnJyk7IC8vIHByb2JhYmx5IG5vdCBuZWVkZWQgYnV0IGxldHMgc2VlXG4gICAgfVxuICB9XG4gIF9hcHBlbmRDaGFyUmF3KGNoLCBmbGFncykge1xuICAgIGlmIChmbGFncyA9PT0gdm9pZCAwKSB7XG4gICAgICBmbGFncyA9IHt9O1xuICAgIH1cbiAgICBjb25zdCBkZXRhaWxzID0gdGhpcy5fYXBwbHlEaXNwYXRjaChjaCwgZmxhZ3MpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRNYXNrKSB7XG4gICAgICBkZXRhaWxzLmFnZ3JlZ2F0ZSh0aGlzLmN1cnJlbnRNYXNrLl9hcHBlbmRDaGFyKGNoLCB0aGlzLmN1cnJlbnRNYXNrRmxhZ3MoZmxhZ3MpKSk7XG4gICAgfVxuICAgIHJldHVybiBkZXRhaWxzO1xuICB9XG4gIF9hcHBseURpc3BhdGNoKGFwcGVuZGVkLCBmbGFncywgdGFpbCkge1xuICAgIGlmIChhcHBlbmRlZCA9PT0gdm9pZCAwKSB7XG4gICAgICBhcHBlbmRlZCA9ICcnO1xuICAgIH1cbiAgICBpZiAoZmxhZ3MgPT09IHZvaWQgMCkge1xuICAgICAgZmxhZ3MgPSB7fTtcbiAgICB9XG4gICAgaWYgKHRhaWwgPT09IHZvaWQgMCkge1xuICAgICAgdGFpbCA9ICcnO1xuICAgIH1cbiAgICBjb25zdCBwcmV2VmFsdWVCZWZvcmVUYWlsID0gZmxhZ3MudGFpbCAmJiBmbGFncy5fYmVmb3JlVGFpbFN0YXRlICE9IG51bGwgPyBmbGFncy5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZSA6IHRoaXMudmFsdWU7XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IHRoaXMucmF3SW5wdXRWYWx1ZTtcbiAgICBjb25zdCBpbnNlcnRWYWx1ZSA9IGZsYWdzLnRhaWwgJiYgZmxhZ3MuX2JlZm9yZVRhaWxTdGF0ZSAhPSBudWxsID8gZmxhZ3MuX2JlZm9yZVRhaWxTdGF0ZS5fcmF3SW5wdXRWYWx1ZSA6IGlucHV0VmFsdWU7XG4gICAgY29uc3QgdGFpbFZhbHVlID0gaW5wdXRWYWx1ZS5zbGljZShpbnNlcnRWYWx1ZS5sZW5ndGgpO1xuICAgIGNvbnN0IHByZXZNYXNrID0gdGhpcy5jdXJyZW50TWFzaztcbiAgICBjb25zdCBkZXRhaWxzID0gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgICBjb25zdCBwcmV2TWFza1N0YXRlID0gcHJldk1hc2sgPT0gbnVsbCA/IHZvaWQgMCA6IHByZXZNYXNrLnN0YXRlO1xuXG4gICAgLy8gY2xvbmUgZmxhZ3MgdG8gcHJldmVudCBvdmVyd3JpdGluZyBgX2JlZm9yZVRhaWxTdGF0ZWBcbiAgICB0aGlzLmN1cnJlbnRNYXNrID0gdGhpcy5kb0Rpc3BhdGNoKGFwcGVuZGVkLCB7XG4gICAgICAuLi5mbGFnc1xuICAgIH0sIHRhaWwpO1xuXG4gICAgLy8gcmVzdG9yZSBzdGF0ZSBhZnRlciBkaXNwYXRjaFxuICAgIGlmICh0aGlzLmN1cnJlbnRNYXNrKSB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50TWFzayAhPT0gcHJldk1hc2spIHtcbiAgICAgICAgLy8gaWYgbWFzayBjaGFuZ2VkIHJlYXBwbHkgaW5wdXRcbiAgICAgICAgdGhpcy5jdXJyZW50TWFzay5yZXNldCgpO1xuICAgICAgICBpZiAoaW5zZXJ0VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLmN1cnJlbnRNYXNrLmFwcGVuZChpbnNlcnRWYWx1ZSwge1xuICAgICAgICAgICAgcmF3OiB0cnVlXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZGV0YWlscy50YWlsU2hpZnQgPSB0aGlzLmN1cnJlbnRNYXNrLnZhbHVlLmxlbmd0aCAtIHByZXZWYWx1ZUJlZm9yZVRhaWwubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0YWlsVmFsdWUpIHtcbiAgICAgICAgICBkZXRhaWxzLnRhaWxTaGlmdCArPSB0aGlzLmN1cnJlbnRNYXNrLmFwcGVuZCh0YWlsVmFsdWUsIHtcbiAgICAgICAgICAgIHJhdzogdHJ1ZSxcbiAgICAgICAgICAgIHRhaWw6IHRydWVcbiAgICAgICAgICB9KS50YWlsU2hpZnQ7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocHJldk1hc2tTdGF0ZSkge1xuICAgICAgICAvLyBEaXNwYXRjaCBjYW4gZG8gc29tZXRoaW5nIGJhZCB3aXRoIHN0YXRlLCBzb1xuICAgICAgICAvLyByZXN0b3JlIHByZXYgbWFzayBzdGF0ZVxuICAgICAgICB0aGlzLmN1cnJlbnRNYXNrLnN0YXRlID0gcHJldk1hc2tTdGF0ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGRldGFpbHM7XG4gIH1cbiAgX2FwcGVuZFBsYWNlaG9sZGVyKCkge1xuICAgIGNvbnN0IGRldGFpbHMgPSB0aGlzLl9hcHBseURpc3BhdGNoKCk7XG4gICAgaWYgKHRoaXMuY3VycmVudE1hc2spIHtcbiAgICAgIGRldGFpbHMuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2suX2FwcGVuZFBsYWNlaG9sZGVyKCkpO1xuICAgIH1cbiAgICByZXR1cm4gZGV0YWlscztcbiAgfVxuICBfYXBwZW5kRWFnZXIoKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IHRoaXMuX2FwcGx5RGlzcGF0Y2goKTtcbiAgICBpZiAodGhpcy5jdXJyZW50TWFzaykge1xuICAgICAgZGV0YWlscy5hZ2dyZWdhdGUodGhpcy5jdXJyZW50TWFzay5fYXBwZW5kRWFnZXIoKSk7XG4gICAgfVxuICAgIHJldHVybiBkZXRhaWxzO1xuICB9XG4gIGFwcGVuZFRhaWwodGFpbCkge1xuICAgIGNvbnN0IGRldGFpbHMgPSBuZXcgQ2hhbmdlRGV0YWlscygpO1xuICAgIGlmICh0YWlsKSBkZXRhaWxzLmFnZ3JlZ2F0ZSh0aGlzLl9hcHBseURpc3BhdGNoKCcnLCB7fSwgdGFpbCkpO1xuICAgIHJldHVybiBkZXRhaWxzLmFnZ3JlZ2F0ZSh0aGlzLmN1cnJlbnRNYXNrID8gdGhpcy5jdXJyZW50TWFzay5hcHBlbmRUYWlsKHRhaWwpIDogc3VwZXIuYXBwZW5kVGFpbCh0YWlsKSk7XG4gIH1cbiAgY3VycmVudE1hc2tGbGFncyhmbGFncykge1xuICAgIHZhciBfZmxhZ3MkX2JlZm9yZVRhaWxTdGEsIF9mbGFncyRfYmVmb3JlVGFpbFN0YTI7XG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmZsYWdzLFxuICAgICAgX2JlZm9yZVRhaWxTdGF0ZTogKChfZmxhZ3MkX2JlZm9yZVRhaWxTdGEgPSBmbGFncy5fYmVmb3JlVGFpbFN0YXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2ZsYWdzJF9iZWZvcmVUYWlsU3RhLmN1cnJlbnRNYXNrUmVmKSA9PT0gdGhpcy5jdXJyZW50TWFzayAmJiAoKF9mbGFncyRfYmVmb3JlVGFpbFN0YTIgPSBmbGFncy5fYmVmb3JlVGFpbFN0YXRlKSA9PSBudWxsID8gdm9pZCAwIDogX2ZsYWdzJF9iZWZvcmVUYWlsU3RhMi5jdXJyZW50TWFzaykgfHwgZmxhZ3MuX2JlZm9yZVRhaWxTdGF0ZVxuICAgIH07XG4gIH1cbiAgZG9EaXNwYXRjaChhcHBlbmRlZCwgZmxhZ3MsIHRhaWwpIHtcbiAgICBpZiAoZmxhZ3MgPT09IHZvaWQgMCkge1xuICAgICAgZmxhZ3MgPSB7fTtcbiAgICB9XG4gICAgaWYgKHRhaWwgPT09IHZvaWQgMCkge1xuICAgICAgdGFpbCA9ICcnO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChhcHBlbmRlZCwgdGhpcywgZmxhZ3MsIHRhaWwpO1xuICB9XG4gIGRvVmFsaWRhdGUoZmxhZ3MpIHtcbiAgICByZXR1cm4gc3VwZXIuZG9WYWxpZGF0ZShmbGFncykgJiYgKCF0aGlzLmN1cnJlbnRNYXNrIHx8IHRoaXMuY3VycmVudE1hc2suZG9WYWxpZGF0ZSh0aGlzLmN1cnJlbnRNYXNrRmxhZ3MoZmxhZ3MpKSk7XG4gIH1cbiAgZG9QcmVwYXJlKHN0ciwgZmxhZ3MpIHtcbiAgICBpZiAoZmxhZ3MgPT09IHZvaWQgMCkge1xuICAgICAgZmxhZ3MgPSB7fTtcbiAgICB9XG4gICAgbGV0IFtzLCBkZXRhaWxzXSA9IHN1cGVyLmRvUHJlcGFyZShzdHIsIGZsYWdzKTtcbiAgICBpZiAodGhpcy5jdXJyZW50TWFzaykge1xuICAgICAgbGV0IGN1cnJlbnREZXRhaWxzO1xuICAgICAgW3MsIGN1cnJlbnREZXRhaWxzXSA9IHN1cGVyLmRvUHJlcGFyZShzLCB0aGlzLmN1cnJlbnRNYXNrRmxhZ3MoZmxhZ3MpKTtcbiAgICAgIGRldGFpbHMgPSBkZXRhaWxzLmFnZ3JlZ2F0ZShjdXJyZW50RGV0YWlscyk7XG4gICAgfVxuICAgIHJldHVybiBbcywgZGV0YWlsc107XG4gIH1cbiAgZG9QcmVwYXJlQ2hhcihzdHIsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIGxldCBbcywgZGV0YWlsc10gPSBzdXBlci5kb1ByZXBhcmVDaGFyKHN0ciwgZmxhZ3MpO1xuICAgIGlmICh0aGlzLmN1cnJlbnRNYXNrKSB7XG4gICAgICBsZXQgY3VycmVudERldGFpbHM7XG4gICAgICBbcywgY3VycmVudERldGFpbHNdID0gc3VwZXIuZG9QcmVwYXJlQ2hhcihzLCB0aGlzLmN1cnJlbnRNYXNrRmxhZ3MoZmxhZ3MpKTtcbiAgICAgIGRldGFpbHMgPSBkZXRhaWxzLmFnZ3JlZ2F0ZShjdXJyZW50RGV0YWlscyk7XG4gICAgfVxuICAgIHJldHVybiBbcywgZGV0YWlsc107XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdmFyIF90aGlzJGN1cnJlbnRNYXNrO1xuICAgIChfdGhpcyRjdXJyZW50TWFzayA9IHRoaXMuY3VycmVudE1hc2spID09IG51bGwgfHwgX3RoaXMkY3VycmVudE1hc2sucmVzZXQoKTtcbiAgICB0aGlzLmNvbXBpbGVkTWFza3MuZm9yRWFjaChtID0+IG0ucmVzZXQoKSk7XG4gIH1cbiAgZ2V0IHZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmV4cG9zZU1hc2sgPyB0aGlzLmV4cG9zZU1hc2sudmFsdWUgOiB0aGlzLmN1cnJlbnRNYXNrID8gdGhpcy5jdXJyZW50TWFzay52YWx1ZSA6ICcnO1xuICB9XG4gIHNldCB2YWx1ZSh2YWx1ZSkge1xuICAgIGlmICh0aGlzLmV4cG9zZU1hc2spIHtcbiAgICAgIHRoaXMuZXhwb3NlTWFzay52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5jdXJyZW50TWFzayA9IHRoaXMuZXhwb3NlTWFzaztcbiAgICAgIHRoaXMuX2FwcGx5RGlzcGF0Y2goKTtcbiAgICB9IGVsc2Ugc3VwZXIudmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBnZXQgdW5tYXNrZWRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5leHBvc2VNYXNrID8gdGhpcy5leHBvc2VNYXNrLnVubWFza2VkVmFsdWUgOiB0aGlzLmN1cnJlbnRNYXNrID8gdGhpcy5jdXJyZW50TWFzay51bm1hc2tlZFZhbHVlIDogJyc7XG4gIH1cbiAgc2V0IHVubWFza2VkVmFsdWUodW5tYXNrZWRWYWx1ZSkge1xuICAgIGlmICh0aGlzLmV4cG9zZU1hc2spIHtcbiAgICAgIHRoaXMuZXhwb3NlTWFzay51bm1hc2tlZFZhbHVlID0gdW5tYXNrZWRWYWx1ZTtcbiAgICAgIHRoaXMuY3VycmVudE1hc2sgPSB0aGlzLmV4cG9zZU1hc2s7XG4gICAgICB0aGlzLl9hcHBseURpc3BhdGNoKCk7XG4gICAgfSBlbHNlIHN1cGVyLnVubWFza2VkVmFsdWUgPSB1bm1hc2tlZFZhbHVlO1xuICB9XG4gIGdldCB0eXBlZFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmV4cG9zZU1hc2sgPyB0aGlzLmV4cG9zZU1hc2sudHlwZWRWYWx1ZSA6IHRoaXMuY3VycmVudE1hc2sgPyB0aGlzLmN1cnJlbnRNYXNrLnR5cGVkVmFsdWUgOiAnJztcbiAgfVxuICBzZXQgdHlwZWRWYWx1ZSh0eXBlZFZhbHVlKSB7XG4gICAgaWYgKHRoaXMuZXhwb3NlTWFzaykge1xuICAgICAgdGhpcy5leHBvc2VNYXNrLnR5cGVkVmFsdWUgPSB0eXBlZFZhbHVlO1xuICAgICAgdGhpcy5jdXJyZW50TWFzayA9IHRoaXMuZXhwb3NlTWFzaztcbiAgICAgIHRoaXMuX2FwcGx5RGlzcGF0Y2goKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbGV0IHVubWFza2VkVmFsdWUgPSBTdHJpbmcodHlwZWRWYWx1ZSk7XG5cbiAgICAvLyBkb3VibGUgY2hlY2sgaXRcbiAgICBpZiAodGhpcy5jdXJyZW50TWFzaykge1xuICAgICAgdGhpcy5jdXJyZW50TWFzay50eXBlZFZhbHVlID0gdHlwZWRWYWx1ZTtcbiAgICAgIHVubWFza2VkVmFsdWUgPSB0aGlzLmN1cnJlbnRNYXNrLnVubWFza2VkVmFsdWU7XG4gICAgfVxuICAgIHRoaXMudW5tYXNrZWRWYWx1ZSA9IHVubWFza2VkVmFsdWU7XG4gIH1cbiAgZ2V0IGRpc3BsYXlWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50TWFzayA/IHRoaXMuY3VycmVudE1hc2suZGlzcGxheVZhbHVlIDogJyc7XG4gIH1cbiAgZ2V0IGlzQ29tcGxldGUoKSB7XG4gICAgdmFyIF90aGlzJGN1cnJlbnRNYXNrMjtcbiAgICByZXR1cm4gQm9vbGVhbigoX3RoaXMkY3VycmVudE1hc2syID0gdGhpcy5jdXJyZW50TWFzaykgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJGN1cnJlbnRNYXNrMi5pc0NvbXBsZXRlKTtcbiAgfVxuICBnZXQgaXNGaWxsZWQoKSB7XG4gICAgdmFyIF90aGlzJGN1cnJlbnRNYXNrMztcbiAgICByZXR1cm4gQm9vbGVhbigoX3RoaXMkY3VycmVudE1hc2szID0gdGhpcy5jdXJyZW50TWFzaykgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJGN1cnJlbnRNYXNrMy5pc0ZpbGxlZCk7XG4gIH1cbiAgcmVtb3ZlKGZyb21Qb3MsIHRvUG9zKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgaWYgKHRoaXMuY3VycmVudE1hc2spIHtcbiAgICAgIGRldGFpbHMuYWdncmVnYXRlKHRoaXMuY3VycmVudE1hc2sucmVtb3ZlKGZyb21Qb3MsIHRvUG9zKSlcbiAgICAgIC8vIHVwZGF0ZSB3aXRoIGRpc3BhdGNoXG4gICAgICAuYWdncmVnYXRlKHRoaXMuX2FwcGx5RGlzcGF0Y2goKSk7XG4gICAgfVxuICAgIHJldHVybiBkZXRhaWxzO1xuICB9XG4gIGdldCBzdGF0ZSgpIHtcbiAgICB2YXIgX3RoaXMkY3VycmVudE1hc2s0O1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdXBlci5zdGF0ZSxcbiAgICAgIF9yYXdJbnB1dFZhbHVlOiB0aGlzLnJhd0lucHV0VmFsdWUsXG4gICAgICBjb21waWxlZE1hc2tzOiB0aGlzLmNvbXBpbGVkTWFza3MubWFwKG0gPT4gbS5zdGF0ZSksXG4gICAgICBjdXJyZW50TWFza1JlZjogdGhpcy5jdXJyZW50TWFzayxcbiAgICAgIGN1cnJlbnRNYXNrOiAoX3RoaXMkY3VycmVudE1hc2s0ID0gdGhpcy5jdXJyZW50TWFzaykgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJGN1cnJlbnRNYXNrNC5zdGF0ZVxuICAgIH07XG4gIH1cbiAgc2V0IHN0YXRlKHN0YXRlKSB7XG4gICAgY29uc3Qge1xuICAgICAgY29tcGlsZWRNYXNrcyxcbiAgICAgIGN1cnJlbnRNYXNrUmVmLFxuICAgICAgY3VycmVudE1hc2ssXG4gICAgICAuLi5tYXNrZWRTdGF0ZVxuICAgIH0gPSBzdGF0ZTtcbiAgICBpZiAoY29tcGlsZWRNYXNrcykgdGhpcy5jb21waWxlZE1hc2tzLmZvckVhY2goKG0sIG1pKSA9PiBtLnN0YXRlID0gY29tcGlsZWRNYXNrc1ttaV0pO1xuICAgIGlmIChjdXJyZW50TWFza1JlZiAhPSBudWxsKSB7XG4gICAgICB0aGlzLmN1cnJlbnRNYXNrID0gY3VycmVudE1hc2tSZWY7XG4gICAgICB0aGlzLmN1cnJlbnRNYXNrLnN0YXRlID0gY3VycmVudE1hc2s7XG4gICAgfVxuICAgIHN1cGVyLnN0YXRlID0gbWFza2VkU3RhdGU7XG4gIH1cbiAgZXh0cmFjdElucHV0KGZyb21Qb3MsIHRvUG9zLCBmbGFncykge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRNYXNrID8gdGhpcy5jdXJyZW50TWFzay5leHRyYWN0SW5wdXQoZnJvbVBvcywgdG9Qb3MsIGZsYWdzKSA6ICcnO1xuICB9XG4gIGV4dHJhY3RUYWlsKGZyb21Qb3MsIHRvUG9zKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudE1hc2sgPyB0aGlzLmN1cnJlbnRNYXNrLmV4dHJhY3RUYWlsKGZyb21Qb3MsIHRvUG9zKSA6IHN1cGVyLmV4dHJhY3RUYWlsKGZyb21Qb3MsIHRvUG9zKTtcbiAgfVxuICBkb0NvbW1pdCgpIHtcbiAgICBpZiAodGhpcy5jdXJyZW50TWFzaykgdGhpcy5jdXJyZW50TWFzay5kb0NvbW1pdCgpO1xuICAgIHN1cGVyLmRvQ29tbWl0KCk7XG4gIH1cbiAgbmVhcmVzdElucHV0UG9zKGN1cnNvclBvcywgZGlyZWN0aW9uKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudE1hc2sgPyB0aGlzLmN1cnJlbnRNYXNrLm5lYXJlc3RJbnB1dFBvcyhjdXJzb3JQb3MsIGRpcmVjdGlvbikgOiBzdXBlci5uZWFyZXN0SW5wdXRQb3MoY3Vyc29yUG9zLCBkaXJlY3Rpb24pO1xuICB9XG4gIGdldCBvdmVyd3JpdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudE1hc2sgPyB0aGlzLmN1cnJlbnRNYXNrLm92ZXJ3cml0ZSA6IHRoaXMuX292ZXJ3cml0ZTtcbiAgfVxuICBzZXQgb3ZlcndyaXRlKG92ZXJ3cml0ZSkge1xuICAgIHRoaXMuX292ZXJ3cml0ZSA9IG92ZXJ3cml0ZTtcbiAgfVxuICBnZXQgZWFnZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudE1hc2sgPyB0aGlzLmN1cnJlbnRNYXNrLmVhZ2VyIDogdGhpcy5fZWFnZXI7XG4gIH1cbiAgc2V0IGVhZ2VyKGVhZ2VyKSB7XG4gICAgdGhpcy5fZWFnZXIgPSBlYWdlcjtcbiAgfVxuICBnZXQgc2tpcEludmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudE1hc2sgPyB0aGlzLmN1cnJlbnRNYXNrLnNraXBJbnZhbGlkIDogdGhpcy5fc2tpcEludmFsaWQ7XG4gIH1cbiAgc2V0IHNraXBJbnZhbGlkKHNraXBJbnZhbGlkKSB7XG4gICAgdGhpcy5fc2tpcEludmFsaWQgPSBza2lwSW52YWxpZDtcbiAgfVxuICBnZXQgYXV0b2ZpeCgpIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50TWFzayA/IHRoaXMuY3VycmVudE1hc2suYXV0b2ZpeCA6IHRoaXMuX2F1dG9maXg7XG4gIH1cbiAgc2V0IGF1dG9maXgoYXV0b2ZpeCkge1xuICAgIHRoaXMuX2F1dG9maXggPSBhdXRvZml4O1xuICB9XG4gIG1hc2tFcXVhbHMobWFzaykge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KG1hc2spID8gdGhpcy5jb21waWxlZE1hc2tzLmV2ZXJ5KChtLCBtaSkgPT4ge1xuICAgICAgaWYgKCFtYXNrW21pXSkgcmV0dXJuO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYXNrOiBvbGRNYXNrLFxuICAgICAgICAuLi5yZXN0T3B0c1xuICAgICAgfSA9IG1hc2tbbWldO1xuICAgICAgcmV0dXJuIG9iamVjdEluY2x1ZGVzKG0sIHJlc3RPcHRzKSAmJiBtLm1hc2tFcXVhbHMob2xkTWFzayk7XG4gICAgfSkgOiBzdXBlci5tYXNrRXF1YWxzKG1hc2spO1xuICB9XG4gIHR5cGVkVmFsdWVFcXVhbHModmFsdWUpIHtcbiAgICB2YXIgX3RoaXMkY3VycmVudE1hc2s1O1xuICAgIHJldHVybiBCb29sZWFuKChfdGhpcyRjdXJyZW50TWFzazUgPSB0aGlzLmN1cnJlbnRNYXNrKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkY3VycmVudE1hc2s1LnR5cGVkVmFsdWVFcXVhbHModmFsdWUpKTtcbiAgfVxufVxuLyoqIEN1cnJlbnRseSBjaG9zZW4gbWFzayAqL1xuLyoqIEN1cnJlbnRseSBjaG9zZW4gbWFzayAqL1xuLyoqIENvbXBsaWxlZCB7QGxpbmsgTWFza2VkfSBvcHRpb25zICovXG4vKiogQ2hvb3NlcyB7QGxpbmsgTWFza2VkfSBkZXBlbmRpbmcgb24gaW5wdXQgdmFsdWUgKi9cbk1hc2tlZER5bmFtaWMuREVGQVVMVFMgPSB7XG4gIC4uLk1hc2tlZC5ERUZBVUxUUyxcbiAgZGlzcGF0Y2g6IChhcHBlbmRlZCwgbWFza2VkLCBmbGFncywgdGFpbCkgPT4ge1xuICAgIGlmICghbWFza2VkLmNvbXBpbGVkTWFza3MubGVuZ3RoKSByZXR1cm47XG4gICAgY29uc3QgaW5wdXRWYWx1ZSA9IG1hc2tlZC5yYXdJbnB1dFZhbHVlO1xuXG4gICAgLy8gc2ltdWxhdGUgaW5wdXRcbiAgICBjb25zdCBpbnB1dHMgPSBtYXNrZWQuY29tcGlsZWRNYXNrcy5tYXAoKG0sIGluZGV4KSA9PiB7XG4gICAgICBjb25zdCBpc0N1cnJlbnQgPSBtYXNrZWQuY3VycmVudE1hc2sgPT09IG07XG4gICAgICBjb25zdCBzdGFydElucHV0UG9zID0gaXNDdXJyZW50ID8gbS5kaXNwbGF5VmFsdWUubGVuZ3RoIDogbS5uZWFyZXN0SW5wdXRQb3MobS5kaXNwbGF5VmFsdWUubGVuZ3RoLCBESVJFQ1RJT04uRk9SQ0VfTEVGVCk7XG4gICAgICBpZiAobS5yYXdJbnB1dFZhbHVlICE9PSBpbnB1dFZhbHVlKSB7XG4gICAgICAgIG0ucmVzZXQoKTtcbiAgICAgICAgbS5hcHBlbmQoaW5wdXRWYWx1ZSwge1xuICAgICAgICAgIHJhdzogdHJ1ZVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoIWlzQ3VycmVudCkge1xuICAgICAgICBtLnJlbW92ZShzdGFydElucHV0UG9zKTtcbiAgICAgIH1cbiAgICAgIG0uYXBwZW5kKGFwcGVuZGVkLCBtYXNrZWQuY3VycmVudE1hc2tGbGFncyhmbGFncykpO1xuICAgICAgbS5hcHBlbmRUYWlsKHRhaWwpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5kZXgsXG4gICAgICAgIHdlaWdodDogbS5yYXdJbnB1dFZhbHVlLmxlbmd0aCxcbiAgICAgICAgdG90YWxJbnB1dFBvc2l0aW9uczogbS50b3RhbElucHV0UG9zaXRpb25zKDAsIE1hdGgubWF4KHN0YXJ0SW5wdXRQb3MsIG0ubmVhcmVzdElucHV0UG9zKG0uZGlzcGxheVZhbHVlLmxlbmd0aCwgRElSRUNUSU9OLkZPUkNFX0xFRlQpKSlcbiAgICAgIH07XG4gICAgfSk7XG5cbiAgICAvLyBwb3AgbWFza3Mgd2l0aCBsb25nZXIgdmFsdWVzIGZpcnN0XG4gICAgaW5wdXRzLnNvcnQoKGkxLCBpMikgPT4gaTIud2VpZ2h0IC0gaTEud2VpZ2h0IHx8IGkyLnRvdGFsSW5wdXRQb3NpdGlvbnMgLSBpMS50b3RhbElucHV0UG9zaXRpb25zKTtcbiAgICByZXR1cm4gbWFza2VkLmNvbXBpbGVkTWFza3NbaW5wdXRzWzBdLmluZGV4XTtcbiAgfVxufTtcbklNYXNrLk1hc2tlZER5bmFtaWMgPSBNYXNrZWREeW5hbWljO1xuXG5leHBvcnQgeyBNYXNrZWREeW5hbWljIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgTWFza2VkUGF0dGVybiBmcm9tICcuL3BhdHRlcm4uanMnO1xuaW1wb3J0IElNYXNrIGZyb20gJy4uL2NvcmUvaG9sZGVyLmpzJztcbmltcG9ydCBDaGFuZ2VEZXRhaWxzIGZyb20gJy4uL2NvcmUvY2hhbmdlLWRldGFpbHMuanMnO1xuaW1wb3J0IHsgRElSRUNUSU9OIH0gZnJvbSAnLi4vY29yZS91dGlscy5qcyc7XG5pbXBvcnQgQ29udGludW91c1RhaWxEZXRhaWxzIGZyb20gJy4uL2NvcmUvY29udGludW91cy10YWlsLWRldGFpbHMuanMnO1xuaW1wb3J0ICcuL2Jhc2UuanMnO1xuaW1wb3J0ICcuL2ZhY3RvcnkuanMnO1xuaW1wb3J0ICcuL3BhdHRlcm4vY2h1bmstdGFpbC1kZXRhaWxzLmpzJztcbmltcG9ydCAnLi9wYXR0ZXJuL2N1cnNvci5qcyc7XG5pbXBvcnQgJy4vcGF0dGVybi9maXhlZC1kZWZpbml0aW9uLmpzJztcbmltcG9ydCAnLi9wYXR0ZXJuL2lucHV0LWRlZmluaXRpb24uanMnO1xuaW1wb3J0ICcuL3JlZ2V4cC5qcyc7XG5cbi8qKiBQYXR0ZXJuIHdoaWNoIHZhbGlkYXRlcyBlbnVtIHZhbHVlcyAqL1xuY2xhc3MgTWFza2VkRW51bSBleHRlbmRzIE1hc2tlZFBhdHRlcm4ge1xuICBjb25zdHJ1Y3RvcihvcHRzKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4uTWFza2VkRW51bS5ERUZBVUxUUyxcbiAgICAgIC4uLm9wdHNcbiAgICB9KTsgLy8gbWFzayB3aWxsIGJlIGNyZWF0ZWQgaW4gX3VwZGF0ZVxuICB9XG4gIHVwZGF0ZU9wdGlvbnMob3B0cykge1xuICAgIHN1cGVyLnVwZGF0ZU9wdGlvbnMob3B0cyk7XG4gIH1cbiAgX3VwZGF0ZShvcHRzKSB7XG4gICAgY29uc3Qge1xuICAgICAgZW51bTogZW51bV8sXG4gICAgICAuLi5lb3B0c1xuICAgIH0gPSBvcHRzO1xuICAgIGlmIChlbnVtXykge1xuICAgICAgY29uc3QgbGVuZ3RocyA9IGVudW1fLm1hcChlID0+IGUubGVuZ3RoKTtcbiAgICAgIGNvbnN0IHJlcXVpcmVkTGVuZ3RoID0gTWF0aC5taW4oLi4ubGVuZ3Rocyk7XG4gICAgICBjb25zdCBvcHRpb25hbExlbmd0aCA9IE1hdGgubWF4KC4uLmxlbmd0aHMpIC0gcmVxdWlyZWRMZW5ndGg7XG4gICAgICBlb3B0cy5tYXNrID0gJyonLnJlcGVhdChyZXF1aXJlZExlbmd0aCk7XG4gICAgICBpZiAob3B0aW9uYWxMZW5ndGgpIGVvcHRzLm1hc2sgKz0gJ1snICsgJyonLnJlcGVhdChvcHRpb25hbExlbmd0aCkgKyAnXSc7XG4gICAgICB0aGlzLmVudW0gPSBlbnVtXztcbiAgICB9XG4gICAgc3VwZXIuX3VwZGF0ZShlb3B0cyk7XG4gIH1cbiAgX2FwcGVuZENoYXJSYXcoY2gsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoRnJvbSA9IE1hdGgubWluKHRoaXMubmVhcmVzdElucHV0UG9zKDAsIERJUkVDVElPTi5GT1JDRV9SSUdIVCksIHRoaXMudmFsdWUubGVuZ3RoKTtcbiAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5lbnVtLmZpbHRlcihlID0+IHRoaXMubWF0Y2hWYWx1ZShlLCB0aGlzLnVubWFza2VkVmFsdWUgKyBjaCwgbWF0Y2hGcm9tKSk7XG4gICAgaWYgKG1hdGNoZXMubGVuZ3RoKSB7XG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgdGhpcy5fZm9yRWFjaEJsb2Nrc0luUmFuZ2UoMCwgdGhpcy52YWx1ZS5sZW5ndGgsIChiLCBiaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IG1jaCA9IG1hdGNoZXNbMF1bYmldO1xuICAgICAgICAgIGlmIChiaSA+PSB0aGlzLnZhbHVlLmxlbmd0aCB8fCBtY2ggPT09IGIudmFsdWUpIHJldHVybjtcbiAgICAgICAgICBiLnJlc2V0KCk7XG4gICAgICAgICAgYi5fYXBwZW5kQ2hhcihtY2gsIGZsYWdzKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBjb25zdCBkID0gc3VwZXIuX2FwcGVuZENoYXJSYXcobWF0Y2hlc1swXVt0aGlzLnZhbHVlLmxlbmd0aF0sIGZsYWdzKTtcbiAgICAgIGlmIChtYXRjaGVzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBtYXRjaGVzWzBdLnNsaWNlKHRoaXMudW5tYXNrZWRWYWx1ZS5sZW5ndGgpLnNwbGl0KCcnKS5mb3JFYWNoKG1jaCA9PiBkLmFnZ3JlZ2F0ZShzdXBlci5fYXBwZW5kQ2hhclJhdyhtY2gpKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKHtcbiAgICAgIHNraXA6ICF0aGlzLmlzQ29tcGxldGVcbiAgICB9KTtcbiAgfVxuICBleHRyYWN0VGFpbChmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIC8vIGp1c3QgZHJvcCB0YWlsXG4gICAgcmV0dXJuIG5ldyBDb250aW51b3VzVGFpbERldGFpbHMoJycsIGZyb21Qb3MpO1xuICB9XG4gIHJlbW92ZShmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGlmIChmcm9tUG9zID09PSB0b1BvcykgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKCk7XG4gICAgY29uc3QgbWF0Y2hGcm9tID0gTWF0aC5taW4oc3VwZXIubmVhcmVzdElucHV0UG9zKDAsIERJUkVDVElPTi5GT1JDRV9SSUdIVCksIHRoaXMudmFsdWUubGVuZ3RoKTtcbiAgICBsZXQgcG9zO1xuICAgIGZvciAocG9zID0gZnJvbVBvczsgcG9zID49IDA7IC0tcG9zKSB7XG4gICAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5lbnVtLmZpbHRlcihlID0+IHRoaXMubWF0Y2hWYWx1ZShlLCB0aGlzLnZhbHVlLnNsaWNlKG1hdGNoRnJvbSwgcG9zKSwgbWF0Y2hGcm9tKSk7XG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAxKSBicmVhaztcbiAgICB9XG4gICAgY29uc3QgZGV0YWlscyA9IHN1cGVyLnJlbW92ZShwb3MsIHRvUG9zKTtcbiAgICBkZXRhaWxzLnRhaWxTaGlmdCArPSBwb3MgLSBmcm9tUG9zO1xuICAgIHJldHVybiBkZXRhaWxzO1xuICB9XG4gIGdldCBpc0NvbXBsZXRlKCkge1xuICAgIHJldHVybiB0aGlzLmVudW0uaW5kZXhPZih0aGlzLnZhbHVlKSA+PSAwO1xuICB9XG59XG4vKiogTWF0Y2ggZW51bSB2YWx1ZSAqL1xuTWFza2VkRW51bS5ERUZBVUxUUyA9IHtcbiAgLi4uTWFza2VkUGF0dGVybi5ERUZBVUxUUyxcbiAgbWF0Y2hWYWx1ZTogKGVzdHIsIGlzdHIsIG1hdGNoRnJvbSkgPT4gZXN0ci5pbmRleE9mKGlzdHIsIG1hdGNoRnJvbSkgPT09IG1hdGNoRnJvbVxufTtcbklNYXNrLk1hc2tlZEVudW0gPSBNYXNrZWRFbnVtO1xuXG5leHBvcnQgeyBNYXNrZWRFbnVtIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgTWFza2VkIGZyb20gJy4vYmFzZS5qcyc7XG5pbXBvcnQgSU1hc2sgZnJvbSAnLi4vY29yZS9ob2xkZXIuanMnO1xuaW1wb3J0ICcuLi9jb3JlL2NoYW5nZS1kZXRhaWxzLmpzJztcbmltcG9ydCAnLi4vY29yZS9jb250aW51b3VzLXRhaWwtZGV0YWlscy5qcyc7XG5pbXBvcnQgJy4uL2NvcmUvdXRpbHMuanMnO1xuXG4vKiogTWFza2luZyBieSBjdXN0b20gRnVuY3Rpb24gKi9cbmNsYXNzIE1hc2tlZEZ1bmN0aW9uIGV4dGVuZHMgTWFza2VkIHtcbiAgLyoqICovXG5cbiAgLyoqIEVuYWJsZSBjaGFyYWN0ZXJzIG92ZXJ3cml0aW5nICovXG5cbiAgLyoqICovXG5cbiAgLyoqICovXG5cbiAgLyoqICovXG5cbiAgdXBkYXRlT3B0aW9ucyhvcHRzKSB7XG4gICAgc3VwZXIudXBkYXRlT3B0aW9ucyhvcHRzKTtcbiAgfVxuICBfdXBkYXRlKG9wdHMpIHtcbiAgICBzdXBlci5fdXBkYXRlKHtcbiAgICAgIC4uLm9wdHMsXG4gICAgICB2YWxpZGF0ZTogb3B0cy5tYXNrXG4gICAgfSk7XG4gIH1cbn1cbklNYXNrLk1hc2tlZEZ1bmN0aW9uID0gTWFza2VkRnVuY3Rpb247XG5cbmV4cG9ydCB7IE1hc2tlZEZ1bmN0aW9uIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgeyBlc2NhcGVSZWdFeHAsIERJUkVDVElPTiB9IGZyb20gJy4uL2NvcmUvdXRpbHMuanMnO1xuaW1wb3J0IENoYW5nZURldGFpbHMgZnJvbSAnLi4vY29yZS9jaGFuZ2UtZGV0YWlscy5qcyc7XG5pbXBvcnQgTWFza2VkIGZyb20gJy4vYmFzZS5qcyc7XG5pbXBvcnQgSU1hc2sgZnJvbSAnLi4vY29yZS9ob2xkZXIuanMnO1xuaW1wb3J0ICcuLi9jb3JlL2NvbnRpbnVvdXMtdGFpbC1kZXRhaWxzLmpzJztcblxudmFyIF9NYXNrZWROdW1iZXI7XG4vKiogTnVtYmVyIG1hc2sgKi9cbmNsYXNzIE1hc2tlZE51bWJlciBleHRlbmRzIE1hc2tlZCB7XG4gIC8qKiBTaW5nbGUgY2hhciAqL1xuXG4gIC8qKiBTaW5nbGUgY2hhciAqL1xuXG4gIC8qKiBBcnJheSBvZiBzaW5nbGUgY2hhcnMgKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogRGlnaXRzIGFmdGVyIHBvaW50ICovXG5cbiAgLyoqIEZsYWcgdG8gcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHplcm9zIGluIHRoZSBlbmQgb2YgZWRpdGluZyAqL1xuXG4gIC8qKiBGbGFnIHRvIHBhZCB0cmFpbGluZyB6ZXJvcyBhZnRlciBwb2ludCBpbiB0aGUgZW5kIG9mIGVkaXRpbmcgKi9cblxuICAvKiogRW5hYmxlIGNoYXJhY3RlcnMgb3ZlcndyaXRpbmcgKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogKi9cblxuICAvKiogRm9ybWF0IHR5cGVkIHZhbHVlIHRvIHN0cmluZyAqL1xuXG4gIC8qKiBQYXJzZSBzdHJpbmcgdG8gZ2V0IHR5cGVkIHZhbHVlICovXG5cbiAgY29uc3RydWN0b3Iob3B0cykge1xuICAgIHN1cGVyKHtcbiAgICAgIC4uLk1hc2tlZE51bWJlci5ERUZBVUxUUyxcbiAgICAgIC4uLm9wdHNcbiAgICB9KTtcbiAgfVxuICB1cGRhdGVPcHRpb25zKG9wdHMpIHtcbiAgICBzdXBlci51cGRhdGVPcHRpb25zKG9wdHMpO1xuICB9XG4gIF91cGRhdGUob3B0cykge1xuICAgIHN1cGVyLl91cGRhdGUob3B0cyk7XG4gICAgdGhpcy5fdXBkYXRlUmVnRXhwcygpO1xuICB9XG4gIF91cGRhdGVSZWdFeHBzKCkge1xuICAgIGNvbnN0IHN0YXJ0ID0gJ14nICsgKHRoaXMuYWxsb3dOZWdhdGl2ZSA/ICdbK3xcXFxcLV0/JyA6ICcnKTtcbiAgICBjb25zdCBtaWQgPSAnXFxcXGQqJztcbiAgICBjb25zdCBlbmQgPSAodGhpcy5zY2FsZSA/IFwiKFwiICsgZXNjYXBlUmVnRXhwKHRoaXMucmFkaXgpICsgXCJcXFxcZHswLFwiICsgdGhpcy5zY2FsZSArIFwifSk/XCIgOiAnJykgKyAnJCc7XG4gICAgdGhpcy5fbnVtYmVyUmVnRXhwID0gbmV3IFJlZ0V4cChzdGFydCArIG1pZCArIGVuZCk7XG4gICAgdGhpcy5fbWFwVG9SYWRpeFJlZ0V4cCA9IG5ldyBSZWdFeHAoXCJbXCIgKyB0aGlzLm1hcFRvUmFkaXgubWFwKGVzY2FwZVJlZ0V4cCkuam9pbignJykgKyBcIl1cIiwgJ2cnKTtcbiAgICB0aGlzLl90aG91c2FuZHNTZXBhcmF0b3JSZWdFeHAgPSBuZXcgUmVnRXhwKGVzY2FwZVJlZ0V4cCh0aGlzLnRob3VzYW5kc1NlcGFyYXRvciksICdnJyk7XG4gIH1cbiAgX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUucmVwbGFjZSh0aGlzLl90aG91c2FuZHNTZXBhcmF0b3JSZWdFeHAsICcnKTtcbiAgfVxuICBfaW5zZXJ0VGhvdXNhbmRzU2VwYXJhdG9ycyh2YWx1ZSkge1xuICAgIC8vIGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzI5MDExMDIvaG93LXRvLXByaW50LWEtbnVtYmVyLXdpdGgtY29tbWFzLWFzLXRob3VzYW5kcy1zZXBhcmF0b3JzLWluLWphdmFzY3JpcHRcbiAgICBjb25zdCBwYXJ0cyA9IHZhbHVlLnNwbGl0KHRoaXMucmFkaXgpO1xuICAgIHBhcnRzWzBdID0gcGFydHNbMF0ucmVwbGFjZSgvXFxCKD89KFxcZHszfSkrKD8hXFxkKSkvZywgdGhpcy50aG91c2FuZHNTZXBhcmF0b3IpO1xuICAgIHJldHVybiBwYXJ0cy5qb2luKHRoaXMucmFkaXgpO1xuICB9XG4gIGRvUHJlcGFyZUNoYXIoY2gsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIGNvbnN0IFtwcmVwQ2gsIGRldGFpbHNdID0gc3VwZXIuZG9QcmVwYXJlQ2hhcih0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMuc2NhbGUgJiYgdGhpcy5tYXBUb1JhZGl4Lmxlbmd0aCAmJiAoXG4gICAgLypcbiAgICAgIHJhZGl4IHNob3VsZCBiZSBtYXBwZWQgd2hlblxuICAgICAgMSkgaW5wdXQgaXMgZG9uZSBmcm9tIGtleWJvYXJkID0gZmxhZ3MuaW5wdXQgJiYgZmxhZ3MucmF3XG4gICAgICAyKSB1bm1hc2tlZCB2YWx1ZSBpcyBzZXQgPSAhZmxhZ3MuaW5wdXQgJiYgIWZsYWdzLnJhd1xuICAgICAgYW5kIHNob3VsZCBub3QgYmUgbWFwcGVkIHdoZW5cbiAgICAgIDEpIHZhbHVlIGlzIHNldCA9IGZsYWdzLmlucHV0ICYmICFmbGFncy5yYXdcbiAgICAgIDIpIHJhdyB2YWx1ZSBpcyBzZXQgPSAhZmxhZ3MuaW5wdXQgJiYgZmxhZ3MucmF3XG4gICAgKi9cbiAgICBmbGFncy5pbnB1dCAmJiBmbGFncy5yYXcgfHwgIWZsYWdzLmlucHV0ICYmICFmbGFncy5yYXcpID8gY2gucmVwbGFjZSh0aGlzLl9tYXBUb1JhZGl4UmVnRXhwLCB0aGlzLnJhZGl4KSA6IGNoKSwgZmxhZ3MpO1xuICAgIGlmIChjaCAmJiAhcHJlcENoKSBkZXRhaWxzLnNraXAgPSB0cnVlO1xuICAgIGlmIChwcmVwQ2ggJiYgIXRoaXMuYWxsb3dQb3NpdGl2ZSAmJiAhdGhpcy52YWx1ZSAmJiBwcmVwQ2ggIT09ICctJykgZGV0YWlscy5hZ2dyZWdhdGUodGhpcy5fYXBwZW5kQ2hhcignLScpKTtcbiAgICByZXR1cm4gW3ByZXBDaCwgZGV0YWlsc107XG4gIH1cbiAgX3NlcGFyYXRvcnNDb3VudCh0bywgZXh0ZW5kT25TZXBhcmF0b3JzKSB7XG4gICAgaWYgKGV4dGVuZE9uU2VwYXJhdG9ycyA9PT0gdm9pZCAwKSB7XG4gICAgICBleHRlbmRPblNlcGFyYXRvcnMgPSBmYWxzZTtcbiAgICB9XG4gICAgbGV0IGNvdW50ID0gMDtcbiAgICBmb3IgKGxldCBwb3MgPSAwOyBwb3MgPCB0bzsgKytwb3MpIHtcbiAgICAgIGlmICh0aGlzLl92YWx1ZS5pbmRleE9mKHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLCBwb3MpID09PSBwb3MpIHtcbiAgICAgICAgKytjb3VudDtcbiAgICAgICAgaWYgKGV4dGVuZE9uU2VwYXJhdG9ycykgdG8gKz0gdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cbiAgX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZShzbGljZSkge1xuICAgIGlmIChzbGljZSA9PT0gdm9pZCAwKSB7XG4gICAgICBzbGljZSA9IHRoaXMuX3ZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fc2VwYXJhdG9yc0NvdW50KHRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnMoc2xpY2UpLmxlbmd0aCwgdHJ1ZSk7XG4gIH1cbiAgZXh0cmFjdElucHV0KGZyb21Qb3MsIHRvUG9zLCBmbGFncykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIFtmcm9tUG9zLCB0b1Bvc10gPSB0aGlzLl9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzKGZyb21Qb3MsIHRvUG9zKTtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyhzdXBlci5leHRyYWN0SW5wdXQoZnJvbVBvcywgdG9Qb3MsIGZsYWdzKSk7XG4gIH1cbiAgX2FwcGVuZENoYXJSYXcoY2gsIGZsYWdzKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIGNvbnN0IHByZXZCZWZvcmVUYWlsVmFsdWUgPSBmbGFncy50YWlsICYmIGZsYWdzLl9iZWZvcmVUYWlsU3RhdGUgPyBmbGFncy5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZSA6IHRoaXMuX3ZhbHVlO1xuICAgIGNvbnN0IHByZXZCZWZvcmVUYWlsU2VwYXJhdG9yc0NvdW50ID0gdGhpcy5fc2VwYXJhdG9yc0NvdW50RnJvbVNsaWNlKHByZXZCZWZvcmVUYWlsVmFsdWUpO1xuICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLnZhbHVlKTtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgIHRoaXMuX3ZhbHVlICs9IGNoO1xuICAgIGNvbnN0IG51bSA9IHRoaXMubnVtYmVyO1xuICAgIGxldCBhY2NlcHRlZCA9ICFpc05hTihudW0pO1xuICAgIGxldCBza2lwID0gZmFsc2U7XG4gICAgaWYgKGFjY2VwdGVkKSB7XG4gICAgICBsZXQgZml4ZWROdW07XG4gICAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLm1pbiA8IDAgJiYgdGhpcy5udW1iZXIgPCB0aGlzLm1pbikgZml4ZWROdW0gPSB0aGlzLm1pbjtcbiAgICAgIGlmICh0aGlzLm1heCAhPSBudWxsICYmIHRoaXMubWF4ID4gMCAmJiB0aGlzLm51bWJlciA+IHRoaXMubWF4KSBmaXhlZE51bSA9IHRoaXMubWF4O1xuICAgICAgaWYgKGZpeGVkTnVtICE9IG51bGwpIHtcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZpeCkge1xuICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5mb3JtYXQoZml4ZWROdW0sIHRoaXMpLnJlcGxhY2UoTWFza2VkTnVtYmVyLlVOTUFTS0VEX1JBRElYLCB0aGlzLnJhZGl4KTtcbiAgICAgICAgICBza2lwIHx8IChza2lwID0gb2xkVmFsdWUgPT09IHRoaXMuX3ZhbHVlICYmICFmbGFncy50YWlsKTsgLy8gaWYgbm90IGNoYW5nZWQgb24gdGFpbCBpdCdzIHN0aWxsIG9rIHRvIHByb2NlZWRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2NlcHRlZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhY2NlcHRlZCAmJiAoYWNjZXB0ZWQgPSBCb29sZWFuKHRoaXMuX3ZhbHVlLm1hdGNoKHRoaXMuX251bWJlclJlZ0V4cCkpKTtcbiAgICB9XG4gICAgbGV0IGFwcGVuZERldGFpbHM7XG4gICAgaWYgKCFhY2NlcHRlZCkge1xuICAgICAgdGhpcy5fdmFsdWUgPSBvbGRWYWx1ZTtcbiAgICAgIGFwcGVuZERldGFpbHMgPSBuZXcgQ2hhbmdlRGV0YWlscygpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcHBlbmREZXRhaWxzID0gbmV3IENoYW5nZURldGFpbHMoe1xuICAgICAgICBpbnNlcnRlZDogdGhpcy5fdmFsdWUuc2xpY2Uob2xkVmFsdWUubGVuZ3RoKSxcbiAgICAgICAgcmF3SW5zZXJ0ZWQ6IHNraXAgPyAnJyA6IGNoLFxuICAgICAgICBza2lwXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9pbnNlcnRUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMuX3ZhbHVlKTtcbiAgICBjb25zdCBiZWZvcmVUYWlsVmFsdWUgPSBmbGFncy50YWlsICYmIGZsYWdzLl9iZWZvcmVUYWlsU3RhdGUgPyBmbGFncy5fYmVmb3JlVGFpbFN0YXRlLl92YWx1ZSA6IHRoaXMuX3ZhbHVlO1xuICAgIGNvbnN0IGJlZm9yZVRhaWxTZXBhcmF0b3JzQ291bnQgPSB0aGlzLl9zZXBhcmF0b3JzQ291bnRGcm9tU2xpY2UoYmVmb3JlVGFpbFZhbHVlKTtcbiAgICBhcHBlbmREZXRhaWxzLnRhaWxTaGlmdCArPSAoYmVmb3JlVGFpbFNlcGFyYXRvcnNDb3VudCAtIHByZXZCZWZvcmVUYWlsU2VwYXJhdG9yc0NvdW50KSAqIHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLmxlbmd0aDtcbiAgICByZXR1cm4gYXBwZW5kRGV0YWlscztcbiAgfVxuICBfZmluZFNlcGFyYXRvckFyb3VuZChwb3MpIHtcbiAgICBpZiAodGhpcy50aG91c2FuZHNTZXBhcmF0b3IpIHtcbiAgICAgIGNvbnN0IHNlYXJjaEZyb20gPSBwb3MgLSB0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGggKyAxO1xuICAgICAgY29uc3Qgc2VwYXJhdG9yUG9zID0gdGhpcy52YWx1ZS5pbmRleE9mKHRoaXMudGhvdXNhbmRzU2VwYXJhdG9yLCBzZWFyY2hGcm9tKTtcbiAgICAgIGlmIChzZXBhcmF0b3JQb3MgPD0gcG9zKSByZXR1cm4gc2VwYXJhdG9yUG9zO1xuICAgIH1cbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgX2FkanVzdFJhbmdlV2l0aFNlcGFyYXRvcnMoZnJvbSwgdG8pIHtcbiAgICBjb25zdCBzZXBhcmF0b3JBcm91bmRGcm9tUG9zID0gdGhpcy5fZmluZFNlcGFyYXRvckFyb3VuZChmcm9tKTtcbiAgICBpZiAoc2VwYXJhdG9yQXJvdW5kRnJvbVBvcyA+PSAwKSBmcm9tID0gc2VwYXJhdG9yQXJvdW5kRnJvbVBvcztcbiAgICBjb25zdCBzZXBhcmF0b3JBcm91bmRUb1BvcyA9IHRoaXMuX2ZpbmRTZXBhcmF0b3JBcm91bmQodG8pO1xuICAgIGlmIChzZXBhcmF0b3JBcm91bmRUb1BvcyA+PSAwKSB0byA9IHNlcGFyYXRvckFyb3VuZFRvUG9zICsgdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoO1xuICAgIHJldHVybiBbZnJvbSwgdG9dO1xuICB9XG4gIHJlbW92ZShmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIFtmcm9tUG9zLCB0b1Bvc10gPSB0aGlzLl9hZGp1c3RSYW5nZVdpdGhTZXBhcmF0b3JzKGZyb21Qb3MsIHRvUG9zKTtcbiAgICBjb25zdCB2YWx1ZUJlZm9yZVBvcyA9IHRoaXMudmFsdWUuc2xpY2UoMCwgZnJvbVBvcyk7XG4gICAgY29uc3QgdmFsdWVBZnRlclBvcyA9IHRoaXMudmFsdWUuc2xpY2UodG9Qb3MpO1xuICAgIGNvbnN0IHByZXZCZWZvcmVUYWlsU2VwYXJhdG9yc0NvdW50ID0gdGhpcy5fc2VwYXJhdG9yc0NvdW50KHZhbHVlQmVmb3JlUG9zLmxlbmd0aCk7XG4gICAgdGhpcy5fdmFsdWUgPSB0aGlzLl9pbnNlcnRUaG91c2FuZHNTZXBhcmF0b3JzKHRoaXMuX3JlbW92ZVRob3VzYW5kc1NlcGFyYXRvcnModmFsdWVCZWZvcmVQb3MgKyB2YWx1ZUFmdGVyUG9zKSk7XG4gICAgY29uc3QgYmVmb3JlVGFpbFNlcGFyYXRvcnNDb3VudCA9IHRoaXMuX3NlcGFyYXRvcnNDb3VudEZyb21TbGljZSh2YWx1ZUJlZm9yZVBvcyk7XG4gICAgcmV0dXJuIG5ldyBDaGFuZ2VEZXRhaWxzKHtcbiAgICAgIHRhaWxTaGlmdDogKGJlZm9yZVRhaWxTZXBhcmF0b3JzQ291bnQgLSBwcmV2QmVmb3JlVGFpbFNlcGFyYXRvcnNDb3VudCkgKiB0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGhcbiAgICB9KTtcbiAgfVxuICBuZWFyZXN0SW5wdXRQb3MoY3Vyc29yUG9zLCBkaXJlY3Rpb24pIHtcbiAgICBpZiAoIXRoaXMudGhvdXNhbmRzU2VwYXJhdG9yKSByZXR1cm4gY3Vyc29yUG9zO1xuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlIERJUkVDVElPTi5OT05FOlxuICAgICAgY2FzZSBESVJFQ1RJT04uTEVGVDpcbiAgICAgIGNhc2UgRElSRUNUSU9OLkZPUkNFX0xFRlQ6XG4gICAgICAgIHtcbiAgICAgICAgICBjb25zdCBzZXBhcmF0b3JBdExlZnRQb3MgPSB0aGlzLl9maW5kU2VwYXJhdG9yQXJvdW5kKGN1cnNvclBvcyAtIDEpO1xuICAgICAgICAgIGlmIChzZXBhcmF0b3JBdExlZnRQb3MgPj0gMCkge1xuICAgICAgICAgICAgY29uc3Qgc2VwYXJhdG9yQXRMZWZ0RW5kUG9zID0gc2VwYXJhdG9yQXRMZWZ0UG9zICsgdGhpcy50aG91c2FuZHNTZXBhcmF0b3IubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKGN1cnNvclBvcyA8IHNlcGFyYXRvckF0TGVmdEVuZFBvcyB8fCB0aGlzLnZhbHVlLmxlbmd0aCA8PSBzZXBhcmF0b3JBdExlZnRFbmRQb3MgfHwgZGlyZWN0aW9uID09PSBESVJFQ1RJT04uRk9SQ0VfTEVGVCkge1xuICAgICAgICAgICAgICByZXR1cm4gc2VwYXJhdG9yQXRMZWZ0UG9zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgY2FzZSBESVJFQ1RJT04uUklHSFQ6XG4gICAgICBjYXNlIERJUkVDVElPTi5GT1JDRV9SSUdIVDpcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IHNlcGFyYXRvckF0UmlnaHRQb3MgPSB0aGlzLl9maW5kU2VwYXJhdG9yQXJvdW5kKGN1cnNvclBvcyk7XG4gICAgICAgICAgaWYgKHNlcGFyYXRvckF0UmlnaHRQb3MgPj0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIHNlcGFyYXRvckF0UmlnaHRQb3MgKyB0aGlzLnRob3VzYW5kc1NlcGFyYXRvci5sZW5ndGg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjdXJzb3JQb3M7XG4gIH1cbiAgZG9Db21taXQoKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IG51bWJlciA9IHRoaXMubnVtYmVyO1xuICAgICAgbGV0IHZhbGlkbnVtID0gbnVtYmVyO1xuXG4gICAgICAvLyBjaGVjayBib3VuZHNcbiAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsKSB2YWxpZG51bSA9IE1hdGgubWF4KHZhbGlkbnVtLCB0aGlzLm1pbik7XG4gICAgICBpZiAodGhpcy5tYXggIT0gbnVsbCkgdmFsaWRudW0gPSBNYXRoLm1pbih2YWxpZG51bSwgdGhpcy5tYXgpO1xuICAgICAgaWYgKHZhbGlkbnVtICE9PSBudW1iZXIpIHRoaXMudW5tYXNrZWRWYWx1ZSA9IHRoaXMuZm9ybWF0KHZhbGlkbnVtLCB0aGlzKTtcbiAgICAgIGxldCBmb3JtYXR0ZWQgPSB0aGlzLnZhbHVlO1xuICAgICAgaWYgKHRoaXMubm9ybWFsaXplWmVyb3MpIGZvcm1hdHRlZCA9IHRoaXMuX25vcm1hbGl6ZVplcm9zKGZvcm1hdHRlZCk7XG4gICAgICBpZiAodGhpcy5wYWRGcmFjdGlvbmFsWmVyb3MgJiYgdGhpcy5zY2FsZSA+IDApIGZvcm1hdHRlZCA9IHRoaXMuX3BhZEZyYWN0aW9uYWxaZXJvcyhmb3JtYXR0ZWQpO1xuICAgICAgdGhpcy5fdmFsdWUgPSBmb3JtYXR0ZWQ7XG4gICAgfVxuICAgIHN1cGVyLmRvQ29tbWl0KCk7XG4gIH1cbiAgX25vcm1hbGl6ZVplcm9zKHZhbHVlKSB7XG4gICAgY29uc3QgcGFydHMgPSB0aGlzLl9yZW1vdmVUaG91c2FuZHNTZXBhcmF0b3JzKHZhbHVlKS5zcGxpdCh0aGlzLnJhZGl4KTtcblxuICAgIC8vIHJlbW92ZSBsZWFkaW5nIHplcm9zXG4gICAgcGFydHNbMF0gPSBwYXJ0c1swXS5yZXBsYWNlKC9eKFxcRCopKDAqKShcXGQqKS8sIChtYXRjaCwgc2lnbiwgemVyb3MsIG51bSkgPT4gc2lnbiArIG51bSk7XG4gICAgLy8gYWRkIGxlYWRpbmcgemVyb1xuICAgIGlmICh2YWx1ZS5sZW5ndGggJiYgIS9cXGQkLy50ZXN0KHBhcnRzWzBdKSkgcGFydHNbMF0gPSBwYXJ0c1swXSArICcwJztcbiAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgcGFydHNbMV0gPSBwYXJ0c1sxXS5yZXBsYWNlKC8wKiQvLCAnJyk7IC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvc1xuICAgICAgaWYgKCFwYXJ0c1sxXS5sZW5ndGgpIHBhcnRzLmxlbmd0aCA9IDE7IC8vIHJlbW92ZSBmcmFjdGlvbmFsXG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9pbnNlcnRUaG91c2FuZHNTZXBhcmF0b3JzKHBhcnRzLmpvaW4odGhpcy5yYWRpeCkpO1xuICB9XG4gIF9wYWRGcmFjdGlvbmFsWmVyb3ModmFsdWUpIHtcbiAgICBpZiAoIXZhbHVlKSByZXR1cm4gdmFsdWU7XG4gICAgY29uc3QgcGFydHMgPSB2YWx1ZS5zcGxpdCh0aGlzLnJhZGl4KTtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgMikgcGFydHMucHVzaCgnJyk7XG4gICAgcGFydHNbMV0gPSBwYXJ0c1sxXS5wYWRFbmQodGhpcy5zY2FsZSwgJzAnKTtcbiAgICByZXR1cm4gcGFydHMuam9pbih0aGlzLnJhZGl4KTtcbiAgfVxuICBkb1NraXBJbnZhbGlkKGNoLCBmbGFncywgY2hlY2tUYWlsKSB7XG4gICAgaWYgKGZsYWdzID09PSB2b2lkIDApIHtcbiAgICAgIGZsYWdzID0ge307XG4gICAgfVxuICAgIGNvbnN0IGRyb3BGcmFjdGlvbmFsID0gdGhpcy5zY2FsZSA9PT0gMCAmJiBjaCAhPT0gdGhpcy50aG91c2FuZHNTZXBhcmF0b3IgJiYgKGNoID09PSB0aGlzLnJhZGl4IHx8IGNoID09PSBNYXNrZWROdW1iZXIuVU5NQVNLRURfUkFESVggfHwgdGhpcy5tYXBUb1JhZGl4LmluY2x1ZGVzKGNoKSk7XG4gICAgcmV0dXJuIHN1cGVyLmRvU2tpcEludmFsaWQoY2gsIGZsYWdzLCBjaGVja1RhaWwpICYmICFkcm9wRnJhY3Rpb25hbDtcbiAgfVxuICBnZXQgdW5tYXNrZWRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVtb3ZlVGhvdXNhbmRzU2VwYXJhdG9ycyh0aGlzLl9ub3JtYWxpemVaZXJvcyh0aGlzLnZhbHVlKSkucmVwbGFjZSh0aGlzLnJhZGl4LCBNYXNrZWROdW1iZXIuVU5NQVNLRURfUkFESVgpO1xuICB9XG4gIHNldCB1bm1hc2tlZFZhbHVlKHVubWFza2VkVmFsdWUpIHtcbiAgICBzdXBlci51bm1hc2tlZFZhbHVlID0gdW5tYXNrZWRWYWx1ZTtcbiAgfVxuICBnZXQgdHlwZWRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZSh0aGlzLnVubWFza2VkVmFsdWUsIHRoaXMpO1xuICB9XG4gIHNldCB0eXBlZFZhbHVlKG4pIHtcbiAgICB0aGlzLnJhd0lucHV0VmFsdWUgPSB0aGlzLmZvcm1hdChuLCB0aGlzKS5yZXBsYWNlKE1hc2tlZE51bWJlci5VTk1BU0tFRF9SQURJWCwgdGhpcy5yYWRpeCk7XG4gIH1cblxuICAvKiogUGFyc2VkIE51bWJlciAqL1xuICBnZXQgbnVtYmVyKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGVkVmFsdWU7XG4gIH1cbiAgc2V0IG51bWJlcihudW1iZXIpIHtcbiAgICB0aGlzLnR5cGVkVmFsdWUgPSBudW1iZXI7XG4gIH1cbiAgZ2V0IGFsbG93TmVnYXRpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWluICE9IG51bGwgJiYgdGhpcy5taW4gPCAwIHx8IHRoaXMubWF4ICE9IG51bGwgJiYgdGhpcy5tYXggPCAwO1xuICB9XG4gIGdldCBhbGxvd1Bvc2l0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLm1pbiAhPSBudWxsICYmIHRoaXMubWluID4gMCB8fCB0aGlzLm1heCAhPSBudWxsICYmIHRoaXMubWF4ID4gMDtcbiAgfVxuICB0eXBlZFZhbHVlRXF1YWxzKHZhbHVlKSB7XG4gICAgLy8gaGFuZGxlICAwIC0+ICcnIGNhc2UgKHR5cGVkID0gMCBldmVuIGlmIHZhbHVlID0gJycpXG4gICAgLy8gZm9yIGRldGFpbHMgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS91Tm1Bbk5lUi9pbWFza2pzL2lzc3Vlcy8xMzRcbiAgICByZXR1cm4gKHN1cGVyLnR5cGVkVmFsdWVFcXVhbHModmFsdWUpIHx8IE1hc2tlZE51bWJlci5FTVBUWV9WQUxVRVMuaW5jbHVkZXModmFsdWUpICYmIE1hc2tlZE51bWJlci5FTVBUWV9WQUxVRVMuaW5jbHVkZXModGhpcy50eXBlZFZhbHVlKSkgJiYgISh2YWx1ZSA9PT0gMCAmJiB0aGlzLnZhbHVlID09PSAnJyk7XG4gIH1cbn1cbl9NYXNrZWROdW1iZXIgPSBNYXNrZWROdW1iZXI7XG5NYXNrZWROdW1iZXIuVU5NQVNLRURfUkFESVggPSAnLic7XG5NYXNrZWROdW1iZXIuRU1QVFlfVkFMVUVTID0gWy4uLk1hc2tlZC5FTVBUWV9WQUxVRVMsIDBdO1xuTWFza2VkTnVtYmVyLkRFRkFVTFRTID0ge1xuICAuLi5NYXNrZWQuREVGQVVMVFMsXG4gIG1hc2s6IE51bWJlcixcbiAgcmFkaXg6ICcsJyxcbiAgdGhvdXNhbmRzU2VwYXJhdG9yOiAnJyxcbiAgbWFwVG9SYWRpeDogW19NYXNrZWROdW1iZXIuVU5NQVNLRURfUkFESVhdLFxuICBtaW46IE51bWJlci5NSU5fU0FGRV9JTlRFR0VSLFxuICBtYXg6IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSLFxuICBzY2FsZTogMixcbiAgbm9ybWFsaXplWmVyb3M6IHRydWUsXG4gIHBhZEZyYWN0aW9uYWxaZXJvczogZmFsc2UsXG4gIHBhcnNlOiBOdW1iZXIsXG4gIGZvcm1hdDogbiA9PiBuLnRvTG9jYWxlU3RyaW5nKCdlbi1VUycsIHtcbiAgICB1c2VHcm91cGluZzogZmFsc2UsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyMFxuICB9KVxufTtcbklNYXNrLk1hc2tlZE51bWJlciA9IE1hc2tlZE51bWJlcjtcblxuZXhwb3J0IHsgTWFza2VkTnVtYmVyIGFzIGRlZmF1bHQgfTtcbiIsICJpbXBvcnQgY3JlYXRlTWFzayBmcm9tICcuL2ZhY3RvcnkuanMnO1xuaW1wb3J0IElNYXNrIGZyb20gJy4uL2NvcmUvaG9sZGVyLmpzJztcbmltcG9ydCAnLi4vY29yZS91dGlscy5qcyc7XG5cbi8qKiBNYXNrIHBpcGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiB0eXBlcyAqL1xuY29uc3QgUElQRV9UWVBFID0ge1xuICBNQVNLRUQ6ICd2YWx1ZScsXG4gIFVOTUFTS0VEOiAndW5tYXNrZWRWYWx1ZScsXG4gIFRZUEVEOiAndHlwZWRWYWx1ZSdcbn07XG4vKiogQ3JlYXRlcyBuZXcgcGlwZSBmdW5jdGlvbiBkZXBlbmRpbmcgb24gbWFzayB0eXBlLCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG9wdGlvbnMgKi9cbmZ1bmN0aW9uIGNyZWF0ZVBpcGUoYXJnLCBmcm9tLCB0bykge1xuICBpZiAoZnJvbSA9PT0gdm9pZCAwKSB7XG4gICAgZnJvbSA9IFBJUEVfVFlQRS5NQVNLRUQ7XG4gIH1cbiAgaWYgKHRvID09PSB2b2lkIDApIHtcbiAgICB0byA9IFBJUEVfVFlQRS5NQVNLRUQ7XG4gIH1cbiAgY29uc3QgbWFza2VkID0gY3JlYXRlTWFzayhhcmcpO1xuICByZXR1cm4gdmFsdWUgPT4gbWFza2VkLnJ1bklzb2xhdGVkKG0gPT4ge1xuICAgIG1bZnJvbV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gbVt0b107XG4gIH0pO1xufVxuXG4vKiogUGlwZXMgdmFsdWUgdGhyb3VnaCBtYXNrIGRlcGVuZGluZyBvbiBtYXNrIHR5cGUsIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gb3B0aW9ucyAqL1xuZnVuY3Rpb24gcGlwZSh2YWx1ZSwgbWFzaywgZnJvbSwgdG8pIHtcbiAgcmV0dXJuIGNyZWF0ZVBpcGUobWFzaywgZnJvbSwgdG8pKHZhbHVlKTtcbn1cbklNYXNrLlBJUEVfVFlQRSA9IFBJUEVfVFlQRTtcbklNYXNrLmNyZWF0ZVBpcGUgPSBjcmVhdGVQaXBlO1xuSU1hc2sucGlwZSA9IHBpcGU7XG5cbmV4cG9ydCB7IFBJUEVfVFlQRSwgY3JlYXRlUGlwZSwgcGlwZSB9O1xuIiwgImltcG9ydCBDaGFuZ2VEZXRhaWxzIGZyb20gJy4uL2NvcmUvY2hhbmdlLWRldGFpbHMuanMnO1xuaW1wb3J0IElNYXNrIGZyb20gJy4uL2NvcmUvaG9sZGVyLmpzJztcbmltcG9ydCBjcmVhdGVNYXNrLCB7IG5vcm1hbGl6ZU9wdHMgfSBmcm9tICcuL2ZhY3RvcnkuanMnO1xuaW1wb3J0IE1hc2tlZFBhdHRlcm4gZnJvbSAnLi9wYXR0ZXJuLmpzJztcbmltcG9ydCAnLi4vY29yZS91dGlscy5qcyc7XG5pbXBvcnQgJy4vYmFzZS5qcyc7XG5pbXBvcnQgJy4uL2NvcmUvY29udGludW91cy10YWlsLWRldGFpbHMuanMnO1xuaW1wb3J0ICcuL3BhdHRlcm4vY2h1bmstdGFpbC1kZXRhaWxzLmpzJztcbmltcG9ydCAnLi9wYXR0ZXJuL2N1cnNvci5qcyc7XG5pbXBvcnQgJy4vcGF0dGVybi9maXhlZC1kZWZpbml0aW9uLmpzJztcbmltcG9ydCAnLi9wYXR0ZXJuL2lucHV0LWRlZmluaXRpb24uanMnO1xuaW1wb3J0ICcuL3JlZ2V4cC5qcyc7XG5cbi8qKiBQYXR0ZXJuIG1hc2sgKi9cbmNsYXNzIFJlcGVhdEJsb2NrIGV4dGVuZHMgTWFza2VkUGF0dGVybiB7XG4gIGdldCByZXBlYXRGcm9tKCkge1xuICAgIHZhciBfcmVmO1xuICAgIHJldHVybiAoX3JlZiA9IEFycmF5LmlzQXJyYXkodGhpcy5yZXBlYXQpID8gdGhpcy5yZXBlYXRbMF0gOiB0aGlzLnJlcGVhdCA9PT0gSW5maW5pdHkgPyAwIDogdGhpcy5yZXBlYXQpICE9IG51bGwgPyBfcmVmIDogMDtcbiAgfVxuICBnZXQgcmVwZWF0VG8oKSB7XG4gICAgdmFyIF9yZWYyO1xuICAgIHJldHVybiAoX3JlZjIgPSBBcnJheS5pc0FycmF5KHRoaXMucmVwZWF0KSA/IHRoaXMucmVwZWF0WzFdIDogdGhpcy5yZXBlYXQpICE9IG51bGwgPyBfcmVmMiA6IEluZmluaXR5O1xuICB9XG4gIGNvbnN0cnVjdG9yKG9wdHMpIHtcbiAgICBzdXBlcihvcHRzKTtcbiAgfVxuICB1cGRhdGVPcHRpb25zKG9wdHMpIHtcbiAgICBzdXBlci51cGRhdGVPcHRpb25zKG9wdHMpO1xuICB9XG4gIF91cGRhdGUob3B0cykge1xuICAgIHZhciBfcmVmMywgX3JlZjQsIF90aGlzJF9ibG9ja3M7XG4gICAgY29uc3Qge1xuICAgICAgcmVwZWF0LFxuICAgICAgLi4uYmxvY2tPcHRzXG4gICAgfSA9IG5vcm1hbGl6ZU9wdHMob3B0cyk7IC8vIFRPRE8gdHlwZVxuICAgIHRoaXMuX2Jsb2NrT3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX2Jsb2NrT3B0cywgYmxvY2tPcHRzKTtcbiAgICBjb25zdCBibG9jayA9IGNyZWF0ZU1hc2sodGhpcy5fYmxvY2tPcHRzKTtcbiAgICB0aGlzLnJlcGVhdCA9IChfcmVmMyA9IChfcmVmNCA9IHJlcGVhdCAhPSBudWxsID8gcmVwZWF0IDogYmxvY2sucmVwZWF0KSAhPSBudWxsID8gX3JlZjQgOiB0aGlzLnJlcGVhdCkgIT0gbnVsbCA/IF9yZWYzIDogSW5maW5pdHk7IC8vIFRPRE8gdHlwZVxuXG4gICAgc3VwZXIuX3VwZGF0ZSh7XG4gICAgICBtYXNrOiAnbScucmVwZWF0KE1hdGgubWF4KHRoaXMucmVwZWF0VG8gPT09IEluZmluaXR5ICYmICgoX3RoaXMkX2Jsb2NrcyA9IHRoaXMuX2Jsb2NrcykgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJF9ibG9ja3MubGVuZ3RoKSB8fCAwLCB0aGlzLnJlcGVhdEZyb20pKSxcbiAgICAgIGJsb2Nrczoge1xuICAgICAgICBtOiBibG9ja1xuICAgICAgfSxcbiAgICAgIGVhZ2VyOiBibG9jay5lYWdlcixcbiAgICAgIG92ZXJ3cml0ZTogYmxvY2sub3ZlcndyaXRlLFxuICAgICAgc2tpcEludmFsaWQ6IGJsb2NrLnNraXBJbnZhbGlkLFxuICAgICAgbGF6eTogYmxvY2subGF6eSxcbiAgICAgIHBsYWNlaG9sZGVyQ2hhcjogYmxvY2sucGxhY2Vob2xkZXJDaGFyLFxuICAgICAgZGlzcGxheUNoYXI6IGJsb2NrLmRpc3BsYXlDaGFyXG4gICAgfSk7XG4gIH1cbiAgX2FsbG9jYXRlQmxvY2soYmkpIHtcbiAgICBpZiAoYmkgPCB0aGlzLl9ibG9ja3MubGVuZ3RoKSByZXR1cm4gdGhpcy5fYmxvY2tzW2JpXTtcbiAgICBpZiAodGhpcy5yZXBlYXRUbyA9PT0gSW5maW5pdHkgfHwgdGhpcy5fYmxvY2tzLmxlbmd0aCA8IHRoaXMucmVwZWF0VG8pIHtcbiAgICAgIHRoaXMuX2Jsb2Nrcy5wdXNoKGNyZWF0ZU1hc2sodGhpcy5fYmxvY2tPcHRzKSk7XG4gICAgICB0aGlzLm1hc2sgKz0gJ20nO1xuICAgICAgcmV0dXJuIHRoaXMuX2Jsb2Nrc1t0aGlzLl9ibG9ja3MubGVuZ3RoIC0gMV07XG4gICAgfVxuICB9XG4gIF9hcHBlbmRDaGFyUmF3KGNoLCBmbGFncykge1xuICAgIGlmIChmbGFncyA9PT0gdm9pZCAwKSB7XG4gICAgICBmbGFncyA9IHt9O1xuICAgIH1cbiAgICBjb25zdCBkZXRhaWxzID0gbmV3IENoYW5nZURldGFpbHMoKTtcbiAgICBmb3IgKGxldCBiaSA9IChfdGhpcyRfbWFwUG9zVG9CbG9jayQgPSAoX3RoaXMkX21hcFBvc1RvQmxvY2sgPSB0aGlzLl9tYXBQb3NUb0Jsb2NrKHRoaXMuZGlzcGxheVZhbHVlLmxlbmd0aCkpID09IG51bGwgPyB2b2lkIDAgOiBfdGhpcyRfbWFwUG9zVG9CbG9jay5pbmRleCkgIT0gbnVsbCA/IF90aGlzJF9tYXBQb3NUb0Jsb2NrJCA6IE1hdGgubWF4KHRoaXMuX2Jsb2Nrcy5sZW5ndGggLSAxLCAwKSwgYmxvY2ssIGFsbG9jYXRlZDtcbiAgICAvLyB0cnkgdG8gZ2V0IGEgYmxvY2sgb3JcbiAgICAvLyB0cnkgdG8gYWxsb2NhdGUgYSBuZXcgYmxvY2sgaWYgbm90IGFsbG9jYXRlZCBhbHJlYWR5XG4gICAgYmxvY2sgPSAoX3RoaXMkX2Jsb2NrcyRiaSA9IHRoaXMuX2Jsb2Nrc1tiaV0pICE9IG51bGwgPyBfdGhpcyRfYmxvY2tzJGJpIDogYWxsb2NhdGVkID0gIWFsbG9jYXRlZCAmJiB0aGlzLl9hbGxvY2F0ZUJsb2NrKGJpKTsgKytiaSkge1xuICAgICAgdmFyIF90aGlzJF9tYXBQb3NUb0Jsb2NrJCwgX3RoaXMkX21hcFBvc1RvQmxvY2ssIF90aGlzJF9ibG9ja3MkYmksIF9mbGFncyRfYmVmb3JlVGFpbFN0YTtcbiAgICAgIGNvbnN0IGJsb2NrRGV0YWlscyA9IGJsb2NrLl9hcHBlbmRDaGFyKGNoLCB7XG4gICAgICAgIC4uLmZsYWdzLFxuICAgICAgICBfYmVmb3JlVGFpbFN0YXRlOiAoX2ZsYWdzJF9iZWZvcmVUYWlsU3RhID0gZmxhZ3MuX2JlZm9yZVRhaWxTdGF0ZSkgPT0gbnVsbCB8fCAoX2ZsYWdzJF9iZWZvcmVUYWlsU3RhID0gX2ZsYWdzJF9iZWZvcmVUYWlsU3RhLl9ibG9ja3MpID09IG51bGwgPyB2b2lkIDAgOiBfZmxhZ3MkX2JlZm9yZVRhaWxTdGFbYmldXG4gICAgICB9KTtcbiAgICAgIGlmIChibG9ja0RldGFpbHMuc2tpcCAmJiBhbGxvY2F0ZWQpIHtcbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBsYXN0IGFsbG9jYXRlZCBibG9jayBhbmQgYnJlYWtcbiAgICAgICAgdGhpcy5fYmxvY2tzLnBvcCgpO1xuICAgICAgICB0aGlzLm1hc2sgPSB0aGlzLm1hc2suc2xpY2UoMSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZGV0YWlscy5hZ2dyZWdhdGUoYmxvY2tEZXRhaWxzKTtcbiAgICAgIGlmIChibG9ja0RldGFpbHMuY29uc3VtZWQpIGJyZWFrOyAvLyBnbyBuZXh0IGNoYXJcbiAgICB9XG4gICAgcmV0dXJuIGRldGFpbHM7XG4gIH1cbiAgX3RyaW1FbXB0eVRhaWwoZnJvbVBvcywgdG9Qb3MpIHtcbiAgICB2YXIgX3RoaXMkX21hcFBvc1RvQmxvY2syLCBfdGhpcyRfbWFwUG9zVG9CbG9jazM7XG4gICAgaWYgKGZyb21Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgZnJvbVBvcyA9IDA7XG4gICAgfVxuICAgIGNvbnN0IGZpcnN0QmxvY2tJbmRleCA9IE1hdGgubWF4KCgoX3RoaXMkX21hcFBvc1RvQmxvY2syID0gdGhpcy5fbWFwUG9zVG9CbG9jayhmcm9tUG9zKSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJF9tYXBQb3NUb0Jsb2NrMi5pbmRleCkgfHwgMCwgdGhpcy5yZXBlYXRGcm9tLCAwKTtcbiAgICBsZXQgbGFzdEJsb2NrSW5kZXg7XG4gICAgaWYgKHRvUG9zICE9IG51bGwpIGxhc3RCbG9ja0luZGV4ID0gKF90aGlzJF9tYXBQb3NUb0Jsb2NrMyA9IHRoaXMuX21hcFBvc1RvQmxvY2sodG9Qb3MpKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX21hcFBvc1RvQmxvY2szLmluZGV4O1xuICAgIGlmIChsYXN0QmxvY2tJbmRleCA9PSBudWxsKSBsYXN0QmxvY2tJbmRleCA9IHRoaXMuX2Jsb2Nrcy5sZW5ndGggLSAxO1xuICAgIGxldCByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yIChsZXQgYmxvY2tJbmRleCA9IGxhc3RCbG9ja0luZGV4OyBmaXJzdEJsb2NrSW5kZXggPD0gYmxvY2tJbmRleDsgLS1ibG9ja0luZGV4LCArK3JlbW92ZUNvdW50KSB7XG4gICAgICBpZiAodGhpcy5fYmxvY2tzW2Jsb2NrSW5kZXhdLnVubWFza2VkVmFsdWUpIGJyZWFrO1xuICAgIH1cbiAgICBpZiAocmVtb3ZlQ291bnQpIHtcbiAgICAgIHRoaXMuX2Jsb2Nrcy5zcGxpY2UobGFzdEJsb2NrSW5kZXggLSByZW1vdmVDb3VudCArIDEsIHJlbW92ZUNvdW50KTtcbiAgICAgIHRoaXMubWFzayA9IHRoaXMubWFzay5zbGljZShyZW1vdmVDb3VudCk7XG4gICAgfVxuICB9XG4gIHJlc2V0KCkge1xuICAgIHN1cGVyLnJlc2V0KCk7XG4gICAgdGhpcy5fdHJpbUVtcHR5VGFpbCgpO1xuICB9XG4gIHJlbW92ZShmcm9tUG9zLCB0b1Bvcykge1xuICAgIGlmIChmcm9tUG9zID09PSB2b2lkIDApIHtcbiAgICAgIGZyb21Qb3MgPSAwO1xuICAgIH1cbiAgICBpZiAodG9Qb3MgPT09IHZvaWQgMCkge1xuICAgICAgdG9Qb3MgPSB0aGlzLmRpc3BsYXlWYWx1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGNvbnN0IHJlbW92ZURldGFpbHMgPSBzdXBlci5yZW1vdmUoZnJvbVBvcywgdG9Qb3MpO1xuICAgIHRoaXMuX3RyaW1FbXB0eVRhaWwoZnJvbVBvcywgdG9Qb3MpO1xuICAgIHJldHVybiByZW1vdmVEZXRhaWxzO1xuICB9XG4gIHRvdGFsSW5wdXRQb3NpdGlvbnMoZnJvbVBvcywgdG9Qb3MpIHtcbiAgICBpZiAoZnJvbVBvcyA9PT0gdm9pZCAwKSB7XG4gICAgICBmcm9tUG9zID0gMDtcbiAgICB9XG4gICAgaWYgKHRvUG9zID09IG51bGwgJiYgdGhpcy5yZXBlYXRUbyA9PT0gSW5maW5pdHkpIHJldHVybiBJbmZpbml0eTtcbiAgICByZXR1cm4gc3VwZXIudG90YWxJbnB1dFBvc2l0aW9ucyhmcm9tUG9zLCB0b1Bvcyk7XG4gIH1cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiBzdXBlci5zdGF0ZTtcbiAgfVxuICBzZXQgc3RhdGUoc3RhdGUpIHtcbiAgICB0aGlzLl9ibG9ja3MubGVuZ3RoID0gc3RhdGUuX2Jsb2Nrcy5sZW5ndGg7XG4gICAgdGhpcy5tYXNrID0gdGhpcy5tYXNrLnNsaWNlKDAsIHRoaXMuX2Jsb2Nrcy5sZW5ndGgpO1xuICAgIHN1cGVyLnN0YXRlID0gc3RhdGU7XG4gIH1cbn1cbklNYXNrLlJlcGVhdEJsb2NrID0gUmVwZWF0QmxvY2s7XG5cbmV4cG9ydCB7IFJlcGVhdEJsb2NrIGFzIGRlZmF1bHQgfTtcbiIsICJleHBvcnQgeyBkZWZhdWx0IGFzIElucHV0TWFzayB9IGZyb20gJy4vY29udHJvbHMvaW5wdXQuanMnO1xuaW1wb3J0IElNYXNrIGZyb20gJy4vY29yZS9ob2xkZXIuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBIVE1MQ29udGVudGVkaXRhYmxlTWFza0VsZW1lbnQgfSBmcm9tICcuL2NvbnRyb2xzL2h0bWwtY29udGVudGVkaXRhYmxlLW1hc2stZWxlbWVudC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEhUTUxJbnB1dE1hc2tFbGVtZW50IH0gZnJvbSAnLi9jb250cm9scy9odG1sLWlucHV0LW1hc2stZWxlbWVudC5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEhUTUxNYXNrRWxlbWVudCB9IGZyb20gJy4vY29udHJvbHMvaHRtbC1tYXNrLWVsZW1lbnQuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXNrRWxlbWVudCB9IGZyb20gJy4vY29udHJvbHMvbWFzay1lbGVtZW50LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2hhbmdlRGV0YWlscyB9IGZyb20gJy4vY29yZS9jaGFuZ2UtZGV0YWlscy5qcyc7XG5leHBvcnQgeyBESVJFQ1RJT04sIGZvcmNlRGlyZWN0aW9uIH0gZnJvbSAnLi9jb3JlL3V0aWxzLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFza2VkIH0gZnJvbSAnLi9tYXNrZWQvYmFzZS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hc2tlZERhdGUgfSBmcm9tICcuL21hc2tlZC9kYXRlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFza2VkRHluYW1pYyB9IGZyb20gJy4vbWFza2VkL2R5bmFtaWMuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXNrZWRFbnVtIH0gZnJvbSAnLi9tYXNrZWQvZW51bS5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZU1hc2ssIG5vcm1hbGl6ZU9wdHMgfSBmcm9tICcuL21hc2tlZC9mYWN0b3J5LmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFza2VkRnVuY3Rpb24gfSBmcm9tICcuL21hc2tlZC9mdW5jdGlvbi5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hc2tlZE51bWJlciB9IGZyb20gJy4vbWFza2VkL251bWJlci5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIE1hc2tlZFBhdHRlcm4gfSBmcm9tICcuL21hc2tlZC9wYXR0ZXJuLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2h1bmtzVGFpbERldGFpbHMgfSBmcm9tICcuL21hc2tlZC9wYXR0ZXJuL2NodW5rLXRhaWwtZGV0YWlscy5qcyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIFBhdHRlcm5GaXhlZERlZmluaXRpb24gfSBmcm9tICcuL21hc2tlZC9wYXR0ZXJuL2ZpeGVkLWRlZmluaXRpb24uanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBQYXR0ZXJuSW5wdXREZWZpbml0aW9uIH0gZnJvbSAnLi9tYXNrZWQvcGF0dGVybi9pbnB1dC1kZWZpbml0aW9uLmpzJztcbmV4cG9ydCB7IFBJUEVfVFlQRSwgY3JlYXRlUGlwZSwgcGlwZSB9IGZyb20gJy4vbWFza2VkL3BpcGUuanMnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBNYXNrZWRSYW5nZSB9IGZyb20gJy4vbWFza2VkL3JhbmdlLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgTWFza2VkUmVnRXhwIH0gZnJvbSAnLi9tYXNrZWQvcmVnZXhwLmpzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUmVwZWF0QmxvY2sgfSBmcm9tICcuL21hc2tlZC9yZXBlYXQuanMnO1xuaW1wb3J0ICcuL2NvcmUvYWN0aW9uLWRldGFpbHMuanMnO1xuaW1wb3J0ICcuL2NvbnRyb2xzL2lucHV0LWhpc3RvcnkuanMnO1xuaW1wb3J0ICcuL2NvcmUvY29udGludW91cy10YWlsLWRldGFpbHMuanMnO1xuaW1wb3J0ICcuL21hc2tlZC9wYXR0ZXJuL2N1cnNvci5qcyc7XG5cbnRyeSB7XG4gIGdsb2JhbFRoaXMuSU1hc2sgPSBJTWFzaztcbn0gY2F0Y2gge31cblxuZXhwb3J0IHsgSU1hc2sgYXMgZGVmYXVsdCB9O1xuIiwgImltcG9ydCB7IEV2ZW50cyB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IE1hcmtkb3duSXQgZnJvbSAnbWFya2Rvd24taXQnO1xyXG5pbXBvcnQgeyBNYXJrZG93bkl0SW1hZ2VQbHVnaW5JbnN0YW5jZSB9IGZyb20gJy4vbWFya2Rvd24taXQtaW1hZ2UtcGx1Z2luJztcclxuaW1wb3J0IHsgTWFya2Rvd25JdENvbW1lbnRQbHVnaW5JbnN0YW5jZSB9IGZyb20gJy4vbWFya2Rvd24taXQtY29tbWVudC1wbHVnaW4nO1xyXG5pbXBvcnQgeyBNYXJrZG93bkl0TWF0aEpheDNQbHVnaW5JbnN0YW5jZSB9IGZyb20gJy4vbWFya2Rvd24taXQtbWF0aGpheDMtcGx1Z2luJztcclxuXHJcbmNsYXNzIEFwcFN0b3JlIHtcclxuXHJcbiAgbWFya2Rvd25QYXJzZXIgPSBuZXcgTWFya2Rvd25JdCgpO1xyXG5cclxuICBldmVudHMgPSBuZXcgRXZlbnRzKCk7XHJcblxyXG4gIGNvZGVWZXJpZmllcjogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG5cclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IEFwcFN0YXRlID0gbmV3IEFwcFN0b3JlKCk7XHJcblxyXG5BcHBTdGF0ZS5tYXJrZG93blBhcnNlclxyXG4gIC51c2UoTWFya2Rvd25JdENvbW1lbnRQbHVnaW5JbnN0YW5jZS5wbHVnaW4pXHJcbiAgLnVzZShNYXJrZG93bkl0TWF0aEpheDNQbHVnaW5JbnN0YW5jZS5wbHVnaW4pXHJcbiAgLnVzZShNYXJrZG93bkl0SW1hZ2VQbHVnaW5JbnN0YW5jZS5wbHVnaW4pO1xyXG4iLCAiLy8gVXRpbGl0aWVzXG4vL1xuXG5pbXBvcnQgKiBhcyBtZHVybCBmcm9tICdtZHVybCdcbmltcG9ydCAqIGFzIHVjbWljcm8gZnJvbSAndWMubWljcm8nXG5pbXBvcnQgeyBkZWNvZGVIVE1MIH0gZnJvbSAnZW50aXRpZXMnXG5cbmZ1bmN0aW9uIF9jbGFzcyAob2JqKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSB9XG5cbmZ1bmN0aW9uIGlzU3RyaW5nIChvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBTdHJpbmddJyB9XG5cbmNvbnN0IF9oYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHlcblxuZnVuY3Rpb24gaGFzIChvYmplY3QsIGtleSkge1xuICByZXR1cm4gX2hhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBrZXkpXG59XG5cbi8vIE1lcmdlIG9iamVjdHNcbi8vXG5mdW5jdGlvbiBhc3NpZ24gKG9iaiAvKiBmcm9tMSwgZnJvbTIsIGZyb20zLCAuLi4gKi8pIHtcbiAgY29uc3Qgc291cmNlcyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSlcblxuICBzb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgIGlmICghc291cmNlKSB7IHJldHVybiB9XG5cbiAgICBpZiAodHlwZW9mIHNvdXJjZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3Ioc291cmNlICsgJ211c3QgYmUgb2JqZWN0JylcbiAgICB9XG5cbiAgICBPYmplY3Qua2V5cyhzb3VyY2UpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgb2JqW2tleV0gPSBzb3VyY2Vba2V5XVxuICAgIH0pXG4gIH0pXG5cbiAgcmV0dXJuIG9ialxufVxuXG4vLyBSZW1vdmUgZWxlbWVudCBmcm9tIGFycmF5IGFuZCBwdXQgYW5vdGhlciBhcnJheSBhdCB0aG9zZSBwb3NpdGlvbi5cbi8vIFVzZWZ1bCBmb3Igc29tZSBvcGVyYXRpb25zIHdpdGggdG9rZW5zXG5mdW5jdGlvbiBhcnJheVJlcGxhY2VBdCAoc3JjLCBwb3MsIG5ld0VsZW1lbnRzKSB7XG4gIHJldHVybiBbXS5jb25jYXQoc3JjLnNsaWNlKDAsIHBvcyksIG5ld0VsZW1lbnRzLCBzcmMuc2xpY2UocG9zICsgMSkpXG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRFbnRpdHlDb2RlIChjKSB7XG4gIC8qIGVzbGludCBuby1iaXR3aXNlOjAgKi9cbiAgLy8gYnJva2VuIHNlcXVlbmNlXG4gIGlmIChjID49IDB4RDgwMCAmJiBjIDw9IDB4REZGRikgeyByZXR1cm4gZmFsc2UgfVxuICAvLyBuZXZlciB1c2VkXG4gIGlmIChjID49IDB4RkREMCAmJiBjIDw9IDB4RkRFRikgeyByZXR1cm4gZmFsc2UgfVxuICBpZiAoKGMgJiAweEZGRkYpID09PSAweEZGRkYgfHwgKGMgJiAweEZGRkYpID09PSAweEZGRkUpIHsgcmV0dXJuIGZhbHNlIH1cbiAgLy8gY29udHJvbCBjb2Rlc1xuICBpZiAoYyA+PSAweDAwICYmIGMgPD0gMHgwOCkgeyByZXR1cm4gZmFsc2UgfVxuICBpZiAoYyA9PT0gMHgwQikgeyByZXR1cm4gZmFsc2UgfVxuICBpZiAoYyA+PSAweDBFICYmIGMgPD0gMHgxRikgeyByZXR1cm4gZmFsc2UgfVxuICBpZiAoYyA+PSAweDdGICYmIGMgPD0gMHg5RikgeyByZXR1cm4gZmFsc2UgfVxuICAvLyBvdXQgb2YgcmFuZ2VcbiAgaWYgKGMgPiAweDEwRkZGRikgeyByZXR1cm4gZmFsc2UgfVxuICByZXR1cm4gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmcm9tQ29kZVBvaW50IChjKSB7XG4gIC8qIGVzbGludCBuby1iaXR3aXNlOjAgKi9cbiAgaWYgKGMgPiAweGZmZmYpIHtcbiAgICBjIC09IDB4MTAwMDBcbiAgICBjb25zdCBzdXJyb2dhdGUxID0gMHhkODAwICsgKGMgPj4gMTApXG4gICAgY29uc3Qgc3Vycm9nYXRlMiA9IDB4ZGMwMCArIChjICYgMHgzZmYpXG5cbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShzdXJyb2dhdGUxLCBzdXJyb2dhdGUyKVxuICB9XG4gIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpXG59XG5cbmNvbnN0IFVORVNDQVBFX01EX1JFICA9IC9cXFxcKFshXCIjJCUmJygpKissXFwtLi86Ozw9Pj9AW1xcXFxcXF1eX2B7fH1+XSkvZ1xuY29uc3QgRU5USVRZX1JFICAgICAgID0gLyYoW2EteiNdW2EtejAtOV17MSwzMX0pOy9naVxuY29uc3QgVU5FU0NBUEVfQUxMX1JFID0gbmV3IFJlZ0V4cChVTkVTQ0FQRV9NRF9SRS5zb3VyY2UgKyAnfCcgKyBFTlRJVFlfUkUuc291cmNlLCAnZ2knKVxuXG5jb25zdCBESUdJVEFMX0VOVElUWV9URVNUX1JFID0gL14jKCg/OnhbYS1mMC05XXsxLDh9fFswLTldezEsOH0pKSQvaVxuXG5mdW5jdGlvbiByZXBsYWNlRW50aXR5UGF0dGVybiAobWF0Y2gsIG5hbWUpIHtcbiAgaWYgKG5hbWUuY2hhckNvZGVBdCgwKSA9PT0gMHgyMy8qICMgKi8gJiYgRElHSVRBTF9FTlRJVFlfVEVTVF9SRS50ZXN0KG5hbWUpKSB7XG4gICAgY29uc3QgY29kZSA9IG5hbWVbMV0udG9Mb3dlckNhc2UoKSA9PT0gJ3gnXG4gICAgICA/IHBhcnNlSW50KG5hbWUuc2xpY2UoMiksIDE2KVxuICAgICAgOiBwYXJzZUludChuYW1lLnNsaWNlKDEpLCAxMClcblxuICAgIGlmIChpc1ZhbGlkRW50aXR5Q29kZShjb2RlKSkge1xuICAgICAgcmV0dXJuIGZyb21Db2RlUG9pbnQoY29kZSlcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hcbiAgfVxuXG4gIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVIVE1MKG1hdGNoKVxuICBpZiAoZGVjb2RlZCAhPT0gbWF0Y2gpIHtcbiAgICByZXR1cm4gZGVjb2RlZFxuICB9XG5cbiAgcmV0dXJuIG1hdGNoXG59XG5cbi8qIGZ1bmN0aW9uIHJlcGxhY2VFbnRpdGllcyhzdHIpIHtcbiAgaWYgKHN0ci5pbmRleE9mKCcmJykgPCAwKSB7IHJldHVybiBzdHI7IH1cblxuICByZXR1cm4gc3RyLnJlcGxhY2UoRU5USVRZX1JFLCByZXBsYWNlRW50aXR5UGF0dGVybik7XG59ICovXG5cbmZ1bmN0aW9uIHVuZXNjYXBlTWQgKHN0cikge1xuICBpZiAoc3RyLmluZGV4T2YoJ1xcXFwnKSA8IDApIHsgcmV0dXJuIHN0ciB9XG4gIHJldHVybiBzdHIucmVwbGFjZShVTkVTQ0FQRV9NRF9SRSwgJyQxJylcbn1cblxuZnVuY3Rpb24gdW5lc2NhcGVBbGwgKHN0cikge1xuICBpZiAoc3RyLmluZGV4T2YoJ1xcXFwnKSA8IDAgJiYgc3RyLmluZGV4T2YoJyYnKSA8IDApIHsgcmV0dXJuIHN0ciB9XG5cbiAgcmV0dXJuIHN0ci5yZXBsYWNlKFVORVNDQVBFX0FMTF9SRSwgZnVuY3Rpb24gKG1hdGNoLCBlc2NhcGVkLCBlbnRpdHkpIHtcbiAgICBpZiAoZXNjYXBlZCkgeyByZXR1cm4gZXNjYXBlZCB9XG4gICAgcmV0dXJuIHJlcGxhY2VFbnRpdHlQYXR0ZXJuKG1hdGNoLCBlbnRpdHkpXG4gIH0pXG59XG5cbmNvbnN0IEhUTUxfRVNDQVBFX1RFU1RfUkUgPSAvWyY8PlwiXS9cbmNvbnN0IEhUTUxfRVNDQVBFX1JFUExBQ0VfUkUgPSAvWyY8PlwiXS9nXG5jb25zdCBIVE1MX1JFUExBQ0VNRU5UUyA9IHtcbiAgJyYnOiAnJmFtcDsnLFxuICAnPCc6ICcmbHQ7JyxcbiAgJz4nOiAnJmd0OycsXG4gICdcIic6ICcmcXVvdDsnXG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VVbnNhZmVDaGFyIChjaCkge1xuICByZXR1cm4gSFRNTF9SRVBMQUNFTUVOVFNbY2hdXG59XG5cbmZ1bmN0aW9uIGVzY2FwZUh0bWwgKHN0cikge1xuICBpZiAoSFRNTF9FU0NBUEVfVEVTVF9SRS50ZXN0KHN0cikpIHtcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoSFRNTF9FU0NBUEVfUkVQTEFDRV9SRSwgcmVwbGFjZVVuc2FmZUNoYXIpXG4gIH1cbiAgcmV0dXJuIHN0clxufVxuXG5jb25zdCBSRUdFWFBfRVNDQVBFX1JFID0gL1suPyorXiRbXFxdXFxcXCgpe318LV0vZ1xuXG5mdW5jdGlvbiBlc2NhcGVSRSAoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZShSRUdFWFBfRVNDQVBFX1JFLCAnXFxcXCQmJylcbn1cblxuZnVuY3Rpb24gaXNTcGFjZSAoY29kZSkge1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIDB4MDk6XG4gICAgY2FzZSAweDIwOlxuICAgICAgcmV0dXJuIHRydWVcbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLy8gWnMgKHVuaWNvZGUgY2xhc3MpIHx8IFtcXHRcXGZcXHZcXHJcXG5dXG5mdW5jdGlvbiBpc1doaXRlU3BhY2UgKGNvZGUpIHtcbiAgaWYgKGNvZGUgPj0gMHgyMDAwICYmIGNvZGUgPD0gMHgyMDBBKSB7IHJldHVybiB0cnVlIH1cbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSAweDA5OiAvLyBcXHRcbiAgICBjYXNlIDB4MEE6IC8vIFxcblxuICAgIGNhc2UgMHgwQjogLy8gXFx2XG4gICAgY2FzZSAweDBDOiAvLyBcXGZcbiAgICBjYXNlIDB4MEQ6IC8vIFxcclxuICAgIGNhc2UgMHgyMDpcbiAgICBjYXNlIDB4QTA6XG4gICAgY2FzZSAweDE2ODA6XG4gICAgY2FzZSAweDIwMkY6XG4gICAgY2FzZSAweDIwNUY6XG4gICAgY2FzZSAweDMwMDA6XG4gICAgICByZXR1cm4gdHJ1ZVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5cbi8vIEN1cnJlbnRseSB3aXRob3V0IGFzdHJhbCBjaGFyYWN0ZXJzIHN1cHBvcnQuXG5mdW5jdGlvbiBpc1B1bmN0Q2hhciAoY2gpIHtcbiAgcmV0dXJuIHVjbWljcm8uUC50ZXN0KGNoKSB8fCB1Y21pY3JvLlMudGVzdChjaClcbn1cblxuLy8gTWFya2Rvd24gQVNDSUkgcHVuY3R1YXRpb24gY2hhcmFjdGVycy5cbi8vXG4vLyAhLCBcIiwgIywgJCwgJSwgJiwgJywgKCwgKSwgKiwgKywgLCwgLSwgLiwgLywgOiwgOywgPCwgPSwgPiwgPywgQCwgWywgXFwsIF0sIF4sIF8sIGAsIHssIHwsIH0sIG9yIH5cbi8vIGh0dHA6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMTUvI2FzY2lpLXB1bmN0dWF0aW9uLWNoYXJhY3RlclxuLy9cbi8vIERvbid0IGNvbmZ1c2Ugd2l0aCB1bmljb2RlIHB1bmN0dWF0aW9uICEhISBJdCBsYWNrcyBzb21lIGNoYXJzIGluIGFzY2lpIHJhbmdlLlxuLy9cbmZ1bmN0aW9uIGlzTWRBc2NpaVB1bmN0IChjaCkge1xuICBzd2l0Y2ggKGNoKSB7XG4gICAgY2FzZSAweDIxLyogISAqLzpcbiAgICBjYXNlIDB4MjIvKiBcIiAqLzpcbiAgICBjYXNlIDB4MjMvKiAjICovOlxuICAgIGNhc2UgMHgyNC8qICQgKi86XG4gICAgY2FzZSAweDI1LyogJSAqLzpcbiAgICBjYXNlIDB4MjYvKiAmICovOlxuICAgIGNhc2UgMHgyNy8qICcgKi86XG4gICAgY2FzZSAweDI4LyogKCAqLzpcbiAgICBjYXNlIDB4MjkvKiApICovOlxuICAgIGNhc2UgMHgyQS8qICogKi86XG4gICAgY2FzZSAweDJCLyogKyAqLzpcbiAgICBjYXNlIDB4MkMvKiAsICovOlxuICAgIGNhc2UgMHgyRC8qIC0gKi86XG4gICAgY2FzZSAweDJFLyogLiAqLzpcbiAgICBjYXNlIDB4MkYvKiAvICovOlxuICAgIGNhc2UgMHgzQS8qIDogKi86XG4gICAgY2FzZSAweDNCLyogOyAqLzpcbiAgICBjYXNlIDB4M0MvKiA8ICovOlxuICAgIGNhc2UgMHgzRC8qID0gKi86XG4gICAgY2FzZSAweDNFLyogPiAqLzpcbiAgICBjYXNlIDB4M0YvKiA/ICovOlxuICAgIGNhc2UgMHg0MC8qIEAgKi86XG4gICAgY2FzZSAweDVCLyogWyAqLzpcbiAgICBjYXNlIDB4NUMvKiBcXCAqLzpcbiAgICBjYXNlIDB4NUQvKiBdICovOlxuICAgIGNhc2UgMHg1RS8qIF4gKi86XG4gICAgY2FzZSAweDVGLyogXyAqLzpcbiAgICBjYXNlIDB4NjAvKiBgICovOlxuICAgIGNhc2UgMHg3Qi8qIHsgKi86XG4gICAgY2FzZSAweDdDLyogfCAqLzpcbiAgICBjYXNlIDB4N0QvKiB9ICovOlxuICAgIGNhc2UgMHg3RS8qIH4gKi86XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG4vLyBIZXBsZXIgdG8gdW5pZnkgW3JlZmVyZW5jZSBsYWJlbHNdLlxuLy9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVJlZmVyZW5jZSAoc3RyKSB7XG4gIC8vIFRyaW0gYW5kIGNvbGxhcHNlIHdoaXRlc3BhY2VcbiAgLy9cbiAgc3RyID0gc3RyLnRyaW0oKS5yZXBsYWNlKC9cXHMrL2csICcgJylcblxuICAvLyBJbiBub2RlIHYxMCAnXHUxRTlFJy50b0xvd2VyQ2FzZSgpID09PSAnXHUxRTdFJywgd2hpY2ggaXMgcHJlc3VtZWQgdG8gYmUgYSBidWdcbiAgLy8gZml4ZWQgaW4gdjEyIChjb3VsZG4ndCBmaW5kIGFueSBkZXRhaWxzKS5cbiAgLy9cbiAgLy8gU28gdHJlYXQgdGhpcyBvbmUgYXMgYSBzcGVjaWFsIGNhc2VcbiAgLy8gKHJlbW92ZSB0aGlzIHdoZW4gbm9kZSB2MTAgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCkuXG4gIC8vXG4gIGlmICgnXHUxRTlFJy50b0xvd2VyQ2FzZSgpID09PSAnXHUxRTdFJykge1xuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC9cdTFFOUUvZywgJ1x1MDBERicpXG4gIH1cblxuICAvLyAudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpIHNob3VsZCBnZXQgcmlkIG9mIGFsbCBkaWZmZXJlbmNlc1xuICAvLyBiZXR3ZWVuIGxldHRlciB2YXJpYW50cy5cbiAgLy9cbiAgLy8gU2ltcGxlIC50b0xvd2VyQ2FzZSgpIGRvZXNuJ3Qgbm9ybWFsaXplIDEyNSBjb2RlIHBvaW50cyBjb3JyZWN0bHksXG4gIC8vIGFuZCAudG9VcHBlckNhc2UgZG9lc24ndCBub3JtYWxpemUgNiBvZiB0aGVtIChsaXN0IG9mIGV4Y2VwdGlvbnM6XG4gIC8vIFx1MDEzMCwgXHUwM0Y0LCBcdTFFOUUsIFx1MjEyNiwgXHUyMTJBLCBcdTIxMkIgLSB0aG9zZSBhcmUgYWxyZWFkeSB1cHBlcmNhc2VkLCBidXQgaGF2ZSBkaWZmZXJlbnRseVxuICAvLyB1cHBlcmNhc2VkIHZlcnNpb25zKS5cbiAgLy9cbiAgLy8gSGVyZSdzIGFuIGV4YW1wbGUgc2hvd2luZyBob3cgaXQgaGFwcGVucy4gTGV0cyB0YWtlIGdyZWVrIGxldHRlciBvbWVnYTpcbiAgLy8gdXBwZXJjYXNlIFUrMDM5OCAoXHUwMzk4KSwgVSswM2Y0IChcdTAzRjQpIGFuZCBsb3dlcmNhc2UgVSswM2I4IChcdTAzQjgpLCBVKzAzZDEgKFx1MDNEMSlcbiAgLy9cbiAgLy8gVW5pY29kZSBlbnRyaWVzOlxuICAvLyAwMzk4O0dSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I4O1xuICAvLyAwM0I4O0dSRUVLIFNNQUxMIExFVFRFUiBUSEVUQTtMbDswO0w7Ozs7O047OzswMzk4OzswMzk4XG4gIC8vIDAzRDE7R1JFRUsgVEhFVEEgU1lNQk9MO0xsOzA7TDs8Y29tcGF0PiAwM0I4Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNDUklQVCBUSEVUQTs7MDM5ODs7MDM5OFxuICAvLyAwM0Y0O0dSRUVLIENBUElUQUwgVEhFVEEgU1lNQk9MO0x1OzA7TDs8Y29tcGF0PiAwMzk4Ozs7O047Ozs7MDNCODtcbiAgLy9cbiAgLy8gQ2FzZS1pbnNlbnNpdGl2ZSBjb21wYXJpc29uIHNob3VsZCB0cmVhdCBhbGwgb2YgdGhlbSBhcyBlcXVpdmFsZW50LlxuICAvL1xuICAvLyBCdXQgLnRvTG93ZXJDYXNlKCkgZG9lc24ndCBjaGFuZ2UgXHUwM0QxIChpdCdzIGFscmVhZHkgbG93ZXJjYXNlKSxcbiAgLy8gYW5kIC50b1VwcGVyQ2FzZSgpIGRvZXNuJ3QgY2hhbmdlIFx1MDNGNCAoYWxyZWFkeSB1cHBlcmNhc2UpLlxuICAvL1xuICAvLyBBcHBseWluZyBmaXJzdCBsb3dlciB0aGVuIHVwcGVyIGNhc2Ugbm9ybWFsaXplcyBhbnkgY2hhcmFjdGVyOlxuICAvLyAnXFx1MDM5OFxcdTAzZjRcXHUwM2I4XFx1MDNkMScudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpID09PSAnXFx1MDM5OFxcdTAzOThcXHUwMzk4XFx1MDM5OCdcbiAgLy9cbiAgLy8gTm90ZTogdGhpcyBpcyBlcXVpdmFsZW50IHRvIHVuaWNvZGUgY2FzZSBmb2xkaW5nOyB1bmljb2RlIG5vcm1hbGl6YXRpb25cbiAgLy8gaXMgYSBkaWZmZXJlbnQgc3RlcCB0aGF0IGlzIG5vdCByZXF1aXJlZCBoZXJlLlxuICAvL1xuICAvLyBGaW5hbCByZXN1bHQgc2hvdWxkIGJlIHVwcGVyY2FzZWQsIGJlY2F1c2UgaXQncyBsYXRlciBzdG9yZWQgaW4gYW4gb2JqZWN0XG4gIC8vICh0aGlzIGF2b2lkIGEgY29uZmxpY3Qgd2l0aCBPYmplY3QucHJvdG90eXBlIG1lbWJlcnMsXG4gIC8vIG1vc3Qgbm90YWJseSwgYF9fcHJvdG9fX2ApXG4gIC8vXG4gIHJldHVybiBzdHIudG9Mb3dlckNhc2UoKS50b1VwcGVyQ2FzZSgpXG59XG5cbi8vIFJlLWV4cG9ydCBsaWJyYXJpZXMgY29tbW9ubHkgdXNlZCBpbiBib3RoIG1hcmtkb3duLWl0IGFuZCBpdHMgcGx1Z2lucyxcbi8vIHNvIHBsdWdpbnMgd29uJ3QgaGF2ZSB0byBkZXBlbmQgb24gdGhlbSBleHBsaWNpdGx5LCB3aGljaCByZWR1Y2VzIHRoZWlyXG4vLyBidW5kbGVkIHNpemUgKGUuZy4gYSBicm93c2VyIGJ1aWxkKS5cbi8vXG5jb25zdCBsaWIgPSB7IG1kdXJsLCB1Y21pY3JvIH1cblxuZXhwb3J0IHtcbiAgbGliLFxuICBhc3NpZ24sXG4gIGlzU3RyaW5nLFxuICBoYXMsXG4gIHVuZXNjYXBlTWQsXG4gIHVuZXNjYXBlQWxsLFxuICBpc1ZhbGlkRW50aXR5Q29kZSxcbiAgZnJvbUNvZGVQb2ludCxcbiAgZXNjYXBlSHRtbCxcbiAgYXJyYXlSZXBsYWNlQXQsXG4gIGlzU3BhY2UsXG4gIGlzV2hpdGVTcGFjZSxcbiAgaXNNZEFzY2lpUHVuY3QsXG4gIGlzUHVuY3RDaGFyLFxuICBlc2NhcGVSRSxcbiAgbm9ybWFsaXplUmVmZXJlbmNlXG59XG4iLCAiaW1wb3J0IGRlY29kZSBmcm9tICcuL2xpYi9kZWNvZGUubWpzJ1xuaW1wb3J0IGVuY29kZSBmcm9tICcuL2xpYi9lbmNvZGUubWpzJ1xuaW1wb3J0IGZvcm1hdCBmcm9tICcuL2xpYi9mb3JtYXQubWpzJ1xuaW1wb3J0IHBhcnNlIGZyb20gJy4vbGliL3BhcnNlLm1qcydcblxuZXhwb3J0IHtcbiAgZGVjb2RlLFxuICBlbmNvZGUsXG4gIGZvcm1hdCxcbiAgcGFyc2Vcbn1cbiIsICIvKiBlc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5cbmNvbnN0IGRlY29kZUNhY2hlID0ge31cblxuZnVuY3Rpb24gZ2V0RGVjb2RlQ2FjaGUgKGV4Y2x1ZGUpIHtcbiAgbGV0IGNhY2hlID0gZGVjb2RlQ2FjaGVbZXhjbHVkZV1cbiAgaWYgKGNhY2hlKSB7IHJldHVybiBjYWNoZSB9XG5cbiAgY2FjaGUgPSBkZWNvZGVDYWNoZVtleGNsdWRlXSA9IFtdXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjg7IGkrKykge1xuICAgIGNvbnN0IGNoID0gU3RyaW5nLmZyb21DaGFyQ29kZShpKVxuICAgIGNhY2hlLnB1c2goY2gpXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGV4Y2x1ZGUubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBjaCA9IGV4Y2x1ZGUuY2hhckNvZGVBdChpKVxuICAgIGNhY2hlW2NoXSA9ICclJyArICgnMCcgKyBjaC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpXG4gIH1cblxuICByZXR1cm4gY2FjaGVcbn1cblxuLy8gRGVjb2RlIHBlcmNlbnQtZW5jb2RlZCBzdHJpbmcuXG4vL1xuZnVuY3Rpb24gZGVjb2RlIChzdHJpbmcsIGV4Y2x1ZGUpIHtcbiAgaWYgKHR5cGVvZiBleGNsdWRlICE9PSAnc3RyaW5nJykge1xuICAgIGV4Y2x1ZGUgPSBkZWNvZGUuZGVmYXVsdENoYXJzXG4gIH1cblxuICBjb25zdCBjYWNoZSA9IGdldERlY29kZUNhY2hlKGV4Y2x1ZGUpXG5cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKC8oJVthLWYwLTldezJ9KSsvZ2ksIGZ1bmN0aW9uIChzZXEpIHtcbiAgICBsZXQgcmVzdWx0ID0gJydcblxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gc2VxLmxlbmd0aDsgaSA8IGw7IGkgKz0gMykge1xuICAgICAgY29uc3QgYjEgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDEsIGkgKyAzKSwgMTYpXG5cbiAgICAgIGlmIChiMSA8IDB4ODApIHtcbiAgICAgICAgcmVzdWx0ICs9IGNhY2hlW2IxXVxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICBpZiAoKGIxICYgMHhFMCkgPT09IDB4QzAgJiYgKGkgKyAzIDwgbCkpIHtcbiAgICAgICAgLy8gMTEweHh4eHggMTB4eHh4eHhcbiAgICAgICAgY29uc3QgYjIgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDQsIGkgKyA2KSwgMTYpXG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgY29uc3QgY2hyID0gKChiMSA8PCA2KSAmIDB4N0MwKSB8IChiMiAmIDB4M0YpXG5cbiAgICAgICAgICBpZiAoY2hyIDwgMHg4MCkge1xuICAgICAgICAgICAgcmVzdWx0ICs9ICdcXHVmZmZkXFx1ZmZmZCdcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGkgKz0gM1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKChiMSAmIDB4RjApID09PSAweEUwICYmIChpICsgNiA8IGwpKSB7XG4gICAgICAgIC8vIDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4XG4gICAgICAgIGNvbnN0IGIyID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyA0LCBpICsgNiksIDE2KVxuICAgICAgICBjb25zdCBiMyA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNywgaSArIDkpLCAxNilcblxuICAgICAgICBpZiAoKGIyICYgMHhDMCkgPT09IDB4ODAgJiYgKGIzICYgMHhDMCkgPT09IDB4ODApIHtcbiAgICAgICAgICBjb25zdCBjaHIgPSAoKGIxIDw8IDEyKSAmIDB4RjAwMCkgfCAoKGIyIDw8IDYpICYgMHhGQzApIHwgKGIzICYgMHgzRilcblxuICAgICAgICAgIGlmIChjaHIgPCAweDgwMCB8fCAoY2hyID49IDB4RDgwMCAmJiBjaHIgPD0gMHhERkZGKSkge1xuICAgICAgICAgICAgcmVzdWx0ICs9ICdcXHVmZmZkXFx1ZmZmZFxcdWZmZmQnXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocilcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpICs9IDZcbiAgICAgICAgICBjb250aW51ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICgoYjEgJiAweEY4KSA9PT0gMHhGMCAmJiAoaSArIDkgPCBsKSkge1xuICAgICAgICAvLyAxMTExMTB4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eFxuICAgICAgICBjb25zdCBiMiA9IHBhcnNlSW50KHNlcS5zbGljZShpICsgNCwgaSArIDYpLCAxNilcbiAgICAgICAgY29uc3QgYjMgPSBwYXJzZUludChzZXEuc2xpY2UoaSArIDcsIGkgKyA5KSwgMTYpXG4gICAgICAgIGNvbnN0IGI0ID0gcGFyc2VJbnQoc2VxLnNsaWNlKGkgKyAxMCwgaSArIDEyKSwgMTYpXG5cbiAgICAgICAgaWYgKChiMiAmIDB4QzApID09PSAweDgwICYmIChiMyAmIDB4QzApID09PSAweDgwICYmIChiNCAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgbGV0IGNociA9ICgoYjEgPDwgMTgpICYgMHgxQzAwMDApIHwgKChiMiA8PCAxMikgJiAweDNGMDAwKSB8ICgoYjMgPDwgNikgJiAweEZDMCkgfCAoYjQgJiAweDNGKVxuXG4gICAgICAgICAgaWYgKGNociA8IDB4MTAwMDAgfHwgY2hyID4gMHgxMEZGRkYpIHtcbiAgICAgICAgICAgIHJlc3VsdCArPSAnXFx1ZmZmZFxcdWZmZmRcXHVmZmZkXFx1ZmZmZCdcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2hyIC09IDB4MTAwMDBcbiAgICAgICAgICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RDgwMCArIChjaHIgPj4gMTApLCAweERDMDAgKyAoY2hyICYgMHgzRkYpKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGkgKz0gOVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmVzdWx0ICs9ICdcXHVmZmZkJ1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfSlcbn1cblxuZGVjb2RlLmRlZmF1bHRDaGFycyA9ICc7Lz86QCY9KyQsIydcbmRlY29kZS5jb21wb25lbnRDaGFycyA9ICcnXG5cbmV4cG9ydCBkZWZhdWx0IGRlY29kZVxuIiwgImNvbnN0IGVuY29kZUNhY2hlID0ge31cblxuLy8gQ3JlYXRlIGEgbG9va3VwIGFycmF5IHdoZXJlIGFueXRoaW5nIGJ1dCBjaGFyYWN0ZXJzIGluIGBjaGFyc2Agc3RyaW5nXG4vLyBhbmQgYWxwaGFudW1lcmljIGNoYXJzIGlzIHBlcmNlbnQtZW5jb2RlZC5cbi8vXG5mdW5jdGlvbiBnZXRFbmNvZGVDYWNoZSAoZXhjbHVkZSkge1xuICBsZXQgY2FjaGUgPSBlbmNvZGVDYWNoZVtleGNsdWRlXVxuICBpZiAoY2FjaGUpIHsgcmV0dXJuIGNhY2hlIH1cblxuICBjYWNoZSA9IGVuY29kZUNhY2hlW2V4Y2x1ZGVdID0gW11cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IDEyODsgaSsrKSB7XG4gICAgY29uc3QgY2ggPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXG5cbiAgICBpZiAoL15bMC05YS16XSQvaS50ZXN0KGNoKSkge1xuICAgICAgLy8gYWx3YXlzIGFsbG93IHVuZW5jb2RlZCBhbHBoYW51bWVyaWMgY2hhcmFjdGVyc1xuICAgICAgY2FjaGUucHVzaChjaClcbiAgICB9IGVsc2Uge1xuICAgICAgY2FjaGUucHVzaCgnJScgKyAoJzAnICsgaS50b1N0cmluZygxNikudG9VcHBlckNhc2UoKSkuc2xpY2UoLTIpKVxuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZXhjbHVkZS5sZW5ndGg7IGkrKykge1xuICAgIGNhY2hlW2V4Y2x1ZGUuY2hhckNvZGVBdChpKV0gPSBleGNsdWRlW2ldXG4gIH1cblxuICByZXR1cm4gY2FjaGVcbn1cblxuLy8gRW5jb2RlIHVuc2FmZSBjaGFyYWN0ZXJzIHdpdGggcGVyY2VudC1lbmNvZGluZywgc2tpcHBpbmcgYWxyZWFkeVxuLy8gZW5jb2RlZCBzZXF1ZW5jZXMuXG4vL1xuLy8gIC0gc3RyaW5nICAgICAgIC0gc3RyaW5nIHRvIGVuY29kZVxuLy8gIC0gZXhjbHVkZSAgICAgIC0gbGlzdCBvZiBjaGFyYWN0ZXJzIHRvIGlnbm9yZSAoaW4gYWRkaXRpb24gdG8gYS16QS1aMC05KVxuLy8gIC0ga2VlcEVzY2FwZWQgIC0gZG9uJ3QgZW5jb2RlICclJyBpbiBhIGNvcnJlY3QgZXNjYXBlIHNlcXVlbmNlIChkZWZhdWx0OiB0cnVlKVxuLy9cbmZ1bmN0aW9uIGVuY29kZSAoc3RyaW5nLCBleGNsdWRlLCBrZWVwRXNjYXBlZCkge1xuICBpZiAodHlwZW9mIGV4Y2x1ZGUgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZW5jb2RlKHN0cmluZywga2VlcEVzY2FwZWQpXG4gICAga2VlcEVzY2FwZWQgPSBleGNsdWRlXG4gICAgZXhjbHVkZSA9IGVuY29kZS5kZWZhdWx0Q2hhcnNcbiAgfVxuXG4gIGlmICh0eXBlb2Yga2VlcEVzY2FwZWQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAga2VlcEVzY2FwZWQgPSB0cnVlXG4gIH1cblxuICBjb25zdCBjYWNoZSA9IGdldEVuY29kZUNhY2hlKGV4Y2x1ZGUpXG4gIGxldCByZXN1bHQgPSAnJ1xuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gc3RyaW5nLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGNvbnN0IGNvZGUgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgaWYgKGtlZXBFc2NhcGVkICYmIGNvZGUgPT09IDB4MjUgLyogJSAqLyAmJiBpICsgMiA8IGwpIHtcbiAgICAgIGlmICgvXlswLTlhLWZdezJ9JC9pLnRlc3Qoc3RyaW5nLnNsaWNlKGkgKyAxLCBpICsgMykpKSB7XG4gICAgICAgIHJlc3VsdCArPSBzdHJpbmcuc2xpY2UoaSwgaSArIDMpXG4gICAgICAgIGkgKz0gMlxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjb2RlIDwgMTI4KSB7XG4gICAgICByZXN1bHQgKz0gY2FjaGVbY29kZV1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPj0gMHhEODAwICYmIGNvZGUgPD0gMHhERkZGKSB7XG4gICAgICBpZiAoY29kZSA+PSAweEQ4MDAgJiYgY29kZSA8PSAweERCRkYgJiYgaSArIDEgPCBsKSB7XG4gICAgICAgIGNvbnN0IG5leHRDb2RlID0gc3RyaW5nLmNoYXJDb2RlQXQoaSArIDEpXG4gICAgICAgIGlmIChuZXh0Q29kZSA+PSAweERDMDAgJiYgbmV4dENvZGUgPD0gMHhERkZGKSB7XG4gICAgICAgICAgcmVzdWx0ICs9IGVuY29kZVVSSUNvbXBvbmVudChzdHJpbmdbaV0gKyBzdHJpbmdbaSArIDFdKVxuICAgICAgICAgIGkrK1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJlc3VsdCArPSAnJUVGJUJGJUJEJ1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICByZXN1bHQgKz0gZW5jb2RlVVJJQ29tcG9uZW50KHN0cmluZ1tpXSlcbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZW5jb2RlLmRlZmF1bHRDaGFycyA9IFwiOy8/OkAmPSskLC1fLiF+KicoKSNcIlxuZW5jb2RlLmNvbXBvbmVudENoYXJzID0gXCItXy4hfionKClcIlxuXG5leHBvcnQgZGVmYXVsdCBlbmNvZGVcbiIsICJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmb3JtYXQgKHVybCkge1xuICBsZXQgcmVzdWx0ID0gJydcblxuICByZXN1bHQgKz0gdXJsLnByb3RvY29sIHx8ICcnXG4gIHJlc3VsdCArPSB1cmwuc2xhc2hlcyA/ICcvLycgOiAnJ1xuICByZXN1bHQgKz0gdXJsLmF1dGggPyB1cmwuYXV0aCArICdAJyA6ICcnXG5cbiAgaWYgKHVybC5ob3N0bmFtZSAmJiB1cmwuaG9zdG5hbWUuaW5kZXhPZignOicpICE9PSAtMSkge1xuICAgIC8vIGlwdjYgYWRkcmVzc1xuICAgIHJlc3VsdCArPSAnWycgKyB1cmwuaG9zdG5hbWUgKyAnXSdcbiAgfSBlbHNlIHtcbiAgICByZXN1bHQgKz0gdXJsLmhvc3RuYW1lIHx8ICcnXG4gIH1cblxuICByZXN1bHQgKz0gdXJsLnBvcnQgPyAnOicgKyB1cmwucG9ydCA6ICcnXG4gIHJlc3VsdCArPSB1cmwucGF0aG5hbWUgfHwgJydcbiAgcmVzdWx0ICs9IHVybC5zZWFyY2ggfHwgJydcbiAgcmVzdWx0ICs9IHVybC5oYXNoIHx8ICcnXG5cbiAgcmV0dXJuIHJlc3VsdFxufTtcbiIsICIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy9cbi8vIENoYW5nZXMgZnJvbSBqb3llbnQvbm9kZTpcbi8vXG4vLyAxLiBObyBsZWFkaW5nIHNsYXNoIGluIHBhdGhzLFxuLy8gICAgZS5nLiBpbiBgdXJsLnBhcnNlKCdodHRwOi8vZm9vP2JhcicpYCBwYXRobmFtZSBpcyBgYCwgbm90IGAvYFxuLy9cbi8vIDIuIEJhY2tzbGFzaGVzIGFyZSBub3QgcmVwbGFjZWQgd2l0aCBzbGFzaGVzLFxuLy8gICAgc28gYGh0dHA6XFxcXGV4YW1wbGUub3JnXFxgIGlzIHRyZWF0ZWQgbGlrZSBhIHJlbGF0aXZlIHBhdGhcbi8vXG4vLyAzLiBUcmFpbGluZyBjb2xvbiBpcyB0cmVhdGVkIGxpa2UgYSBwYXJ0IG9mIHRoZSBwYXRoLFxuLy8gICAgaS5lLiBpbiBgaHR0cDovL2V4YW1wbGUub3JnOmZvb2AgcGF0aG5hbWUgaXMgYDpmb29gXG4vL1xuLy8gNC4gTm90aGluZyBpcyBVUkwtZW5jb2RlZCBpbiB0aGUgcmVzdWx0aW5nIG9iamVjdCxcbi8vICAgIChpbiBqb3llbnQvbm9kZSBzb21lIGNoYXJzIGluIGF1dGggYW5kIHBhdGhzIGFyZSBlbmNvZGVkKVxuLy9cbi8vIDUuIGB1cmwucGFyc2UoKWAgZG9lcyBub3QgaGF2ZSBgcGFyc2VRdWVyeVN0cmluZ2AgYXJndW1lbnRcbi8vXG4vLyA2LiBSZW1vdmVkIGV4dHJhbmVvdXMgcmVzdWx0IHByb3BlcnRpZXM6IGBob3N0YCwgYHBhdGhgLCBgcXVlcnlgLCBldGMuLFxuLy8gICAgd2hpY2ggY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIG90aGVyIHBhcnRzIG9mIHRoZSB1cmwuXG4vL1xuXG5mdW5jdGlvbiBVcmwgKCkge1xuICB0aGlzLnByb3RvY29sID0gbnVsbFxuICB0aGlzLnNsYXNoZXMgPSBudWxsXG4gIHRoaXMuYXV0aCA9IG51bGxcbiAgdGhpcy5wb3J0ID0gbnVsbFxuICB0aGlzLmhvc3RuYW1lID0gbnVsbFxuICB0aGlzLmhhc2ggPSBudWxsXG4gIHRoaXMuc2VhcmNoID0gbnVsbFxuICB0aGlzLnBhdGhuYW1lID0gbnVsbFxufVxuXG4vLyBSZWZlcmVuY2U6IFJGQyAzOTg2LCBSRkMgMTgwOCwgUkZDIDIzOTZcblxuLy8gZGVmaW5lIHRoZXNlIGhlcmUgc28gYXQgbGVhc3QgdGhleSBvbmx5IGhhdmUgdG8gYmVcbi8vIGNvbXBpbGVkIG9uY2Ugb24gdGhlIGZpcnN0IG1vZHVsZSBsb2FkLlxuY29uc3QgcHJvdG9jb2xQYXR0ZXJuID0gL14oW2EtejAtOS4rLV0rOikvaVxuY29uc3QgcG9ydFBhdHRlcm4gPSAvOlswLTldKiQvXG5cbi8vIFNwZWNpYWwgY2FzZSBmb3IgYSBzaW1wbGUgcGF0aCBVUkxcbi8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWVzY2FwZSAqL1xuY29uc3Qgc2ltcGxlUGF0aFBhdHRlcm4gPSAvXihcXC9cXC8/KD8hXFwvKVteXFw/XFxzXSopKFxcP1teXFxzXSopPyQvXG5cbi8vIFJGQyAyMzk2OiBjaGFyYWN0ZXJzIHJlc2VydmVkIGZvciBkZWxpbWl0aW5nIFVSTHMuXG4vLyBXZSBhY3R1YWxseSBqdXN0IGF1dG8tZXNjYXBlIHRoZXNlLlxuY29uc3QgZGVsaW1zID0gWyc8JywgJz4nLCAnXCInLCAnYCcsICcgJywgJ1xccicsICdcXG4nLCAnXFx0J11cblxuLy8gUkZDIDIzOTY6IGNoYXJhY3RlcnMgbm90IGFsbG93ZWQgZm9yIHZhcmlvdXMgcmVhc29ucy5cbmNvbnN0IHVud2lzZSA9IFsneycsICd9JywgJ3wnLCAnXFxcXCcsICdeJywgJ2AnXS5jb25jYXQoZGVsaW1zKVxuXG4vLyBBbGxvd2VkIGJ5IFJGQ3MsIGJ1dCBjYXVzZSBvZiBYU1MgYXR0YWNrcy4gIEFsd2F5cyBlc2NhcGUgdGhlc2UuXG5jb25zdCBhdXRvRXNjYXBlID0gWydcXCcnXS5jb25jYXQodW53aXNlKVxuLy8gQ2hhcmFjdGVycyB0aGF0IGFyZSBuZXZlciBldmVyIGFsbG93ZWQgaW4gYSBob3N0bmFtZS5cbi8vIE5vdGUgdGhhdCBhbnkgaW52YWxpZCBjaGFycyBhcmUgYWxzbyBoYW5kbGVkLCBidXQgdGhlc2Vcbi8vIGFyZSB0aGUgb25lcyB0aGF0IGFyZSAqZXhwZWN0ZWQqIHRvIGJlIHNlZW4sIHNvIHdlIGZhc3QtcGF0aFxuLy8gdGhlbS5cbmNvbnN0IG5vbkhvc3RDaGFycyA9IFsnJScsICcvJywgJz8nLCAnOycsICcjJ10uY29uY2F0KGF1dG9Fc2NhcGUpXG5jb25zdCBob3N0RW5kaW5nQ2hhcnMgPSBbJy8nLCAnPycsICcjJ11cbmNvbnN0IGhvc3RuYW1lTWF4TGVuID0gMjU1XG5jb25zdCBob3N0bmFtZVBhcnRQYXR0ZXJuID0gL15bK2EtejAtOUEtWl8tXXswLDYzfSQvXG5jb25zdCBob3N0bmFtZVBhcnRTdGFydCA9IC9eKFsrYS16MC05QS1aXy1dezAsNjN9KSguKikkL1xuLy8gcHJvdG9jb2xzIHRoYXQgY2FuIGFsbG93IFwidW5zYWZlXCIgYW5kIFwidW53aXNlXCIgY2hhcnMuXG4vLyBwcm90b2NvbHMgdGhhdCBuZXZlciBoYXZlIGEgaG9zdG5hbWUuXG5jb25zdCBob3N0bGVzc1Byb3RvY29sID0ge1xuICBqYXZhc2NyaXB0OiB0cnVlLFxuICAnamF2YXNjcmlwdDonOiB0cnVlXG59XG4vLyBwcm90b2NvbHMgdGhhdCBhbHdheXMgY29udGFpbiBhIC8vIGJpdC5cbmNvbnN0IHNsYXNoZWRQcm90b2NvbCA9IHtcbiAgaHR0cDogdHJ1ZSxcbiAgaHR0cHM6IHRydWUsXG4gIGZ0cDogdHJ1ZSxcbiAgZ29waGVyOiB0cnVlLFxuICBmaWxlOiB0cnVlLFxuICAnaHR0cDonOiB0cnVlLFxuICAnaHR0cHM6JzogdHJ1ZSxcbiAgJ2Z0cDonOiB0cnVlLFxuICAnZ29waGVyOic6IHRydWUsXG4gICdmaWxlOic6IHRydWVcbn1cblxuZnVuY3Rpb24gdXJsUGFyc2UgKHVybCwgc2xhc2hlc0Rlbm90ZUhvc3QpIHtcbiAgaWYgKHVybCAmJiB1cmwgaW5zdGFuY2VvZiBVcmwpIHJldHVybiB1cmxcblxuICBjb25zdCB1ID0gbmV3IFVybCgpXG4gIHUucGFyc2UodXJsLCBzbGFzaGVzRGVub3RlSG9zdClcbiAgcmV0dXJuIHVcbn1cblxuVXJsLnByb3RvdHlwZS5wYXJzZSA9IGZ1bmN0aW9uICh1cmwsIHNsYXNoZXNEZW5vdGVIb3N0KSB7XG4gIGxldCBsb3dlclByb3RvLCBoZWMsIHNsYXNoZXNcbiAgbGV0IHJlc3QgPSB1cmxcblxuICAvLyB0cmltIGJlZm9yZSBwcm9jZWVkaW5nLlxuICAvLyBUaGlzIGlzIHRvIHN1cHBvcnQgcGFyc2Ugc3R1ZmYgbGlrZSBcIiAgaHR0cDovL2Zvby5jb20gIFxcblwiXG4gIHJlc3QgPSByZXN0LnRyaW0oKVxuXG4gIGlmICghc2xhc2hlc0Rlbm90ZUhvc3QgJiYgdXJsLnNwbGl0KCcjJykubGVuZ3RoID09PSAxKSB7XG4gICAgLy8gVHJ5IGZhc3QgcGF0aCByZWdleHBcbiAgICBjb25zdCBzaW1wbGVQYXRoID0gc2ltcGxlUGF0aFBhdHRlcm4uZXhlYyhyZXN0KVxuICAgIGlmIChzaW1wbGVQYXRoKSB7XG4gICAgICB0aGlzLnBhdGhuYW1lID0gc2ltcGxlUGF0aFsxXVxuICAgICAgaWYgKHNpbXBsZVBhdGhbMl0pIHtcbiAgICAgICAgdGhpcy5zZWFyY2ggPSBzaW1wbGVQYXRoWzJdXG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpc1xuICAgIH1cbiAgfVxuXG4gIGxldCBwcm90byA9IHByb3RvY29sUGF0dGVybi5leGVjKHJlc3QpXG4gIGlmIChwcm90bykge1xuICAgIHByb3RvID0gcHJvdG9bMF1cbiAgICBsb3dlclByb3RvID0gcHJvdG8udG9Mb3dlckNhc2UoKVxuICAgIHRoaXMucHJvdG9jb2wgPSBwcm90b1xuICAgIHJlc3QgPSByZXN0LnN1YnN0cihwcm90by5sZW5ndGgpXG4gIH1cblxuICAvLyBmaWd1cmUgb3V0IGlmIGl0J3MgZ290IGEgaG9zdFxuICAvLyB1c2VyQHNlcnZlciBpcyAqYWx3YXlzKiBpbnRlcnByZXRlZCBhcyBhIGhvc3RuYW1lLCBhbmQgdXJsXG4gIC8vIHJlc29sdXRpb24gd2lsbCB0cmVhdCAvL2Zvby9iYXIgYXMgaG9zdD1mb28scGF0aD1iYXIgYmVjYXVzZSB0aGF0J3NcbiAgLy8gaG93IHRoZSBicm93c2VyIHJlc29sdmVzIHJlbGF0aXZlIFVSTHMuXG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWVzY2FwZSAqL1xuICBpZiAoc2xhc2hlc0Rlbm90ZUhvc3QgfHwgcHJvdG8gfHwgcmVzdC5tYXRjaCgvXlxcL1xcL1teQFxcL10rQFteQFxcL10rLykpIHtcbiAgICBzbGFzaGVzID0gcmVzdC5zdWJzdHIoMCwgMikgPT09ICcvLydcbiAgICBpZiAoc2xhc2hlcyAmJiAhKHByb3RvICYmIGhvc3RsZXNzUHJvdG9jb2xbcHJvdG9dKSkge1xuICAgICAgcmVzdCA9IHJlc3Quc3Vic3RyKDIpXG4gICAgICB0aGlzLnNsYXNoZXMgPSB0cnVlXG4gICAgfVxuICB9XG5cbiAgaWYgKCFob3N0bGVzc1Byb3RvY29sW3Byb3RvXSAmJlxuICAgICAgKHNsYXNoZXMgfHwgKHByb3RvICYmICFzbGFzaGVkUHJvdG9jb2xbcHJvdG9dKSkpIHtcbiAgICAvLyB0aGVyZSdzIGEgaG9zdG5hbWUuXG4gICAgLy8gdGhlIGZpcnN0IGluc3RhbmNlIG9mIC8sID8sIDssIG9yICMgZW5kcyB0aGUgaG9zdC5cbiAgICAvL1xuICAgIC8vIElmIHRoZXJlIGlzIGFuIEAgaW4gdGhlIGhvc3RuYW1lLCB0aGVuIG5vbi1ob3N0IGNoYXJzICphcmUqIGFsbG93ZWRcbiAgICAvLyB0byB0aGUgbGVmdCBvZiB0aGUgbGFzdCBAIHNpZ24sIHVubGVzcyBzb21lIGhvc3QtZW5kaW5nIGNoYXJhY3RlclxuICAgIC8vIGNvbWVzICpiZWZvcmUqIHRoZSBALXNpZ24uXG4gICAgLy8gVVJMcyBhcmUgb2Jub3hpb3VzLlxuICAgIC8vXG4gICAgLy8gZXg6XG4gICAgLy8gaHR0cDovL2FAYkBjLyA9PiB1c2VyOmFAYiBob3N0OmNcbiAgICAvLyBodHRwOi8vYUBiP0BjID0+IHVzZXI6YSBob3N0OmMgcGF0aDovP0BjXG5cbiAgICAvLyB2MC4xMiBUT0RPKGlzYWFjcyk6IFRoaXMgaXMgbm90IHF1aXRlIGhvdyBDaHJvbWUgZG9lcyB0aGluZ3MuXG4gICAgLy8gUmV2aWV3IG91ciB0ZXN0IGNhc2UgYWdhaW5zdCBicm93c2VycyBtb3JlIGNvbXByZWhlbnNpdmVseS5cblxuICAgIC8vIGZpbmQgdGhlIGZpcnN0IGluc3RhbmNlIG9mIGFueSBob3N0RW5kaW5nQ2hhcnNcbiAgICBsZXQgaG9zdEVuZCA9IC0xXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBob3N0RW5kaW5nQ2hhcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhlYyA9IHJlc3QuaW5kZXhPZihob3N0RW5kaW5nQ2hhcnNbaV0pXG4gICAgICBpZiAoaGVjICE9PSAtMSAmJiAoaG9zdEVuZCA9PT0gLTEgfHwgaGVjIDwgaG9zdEVuZCkpIHtcbiAgICAgICAgaG9zdEVuZCA9IGhlY1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGF0IHRoaXMgcG9pbnQsIGVpdGhlciB3ZSBoYXZlIGFuIGV4cGxpY2l0IHBvaW50IHdoZXJlIHRoZVxuICAgIC8vIGF1dGggcG9ydGlvbiBjYW5ub3QgZ28gcGFzdCwgb3IgdGhlIGxhc3QgQCBjaGFyIGlzIHRoZSBkZWNpZGVyLlxuICAgIGxldCBhdXRoLCBhdFNpZ25cbiAgICBpZiAoaG9zdEVuZCA9PT0gLTEpIHtcbiAgICAgIC8vIGF0U2lnbiBjYW4gYmUgYW55d2hlcmUuXG4gICAgICBhdFNpZ24gPSByZXN0Lmxhc3RJbmRleE9mKCdAJylcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gYXRTaWduIG11c3QgYmUgaW4gYXV0aCBwb3J0aW9uLlxuICAgICAgLy8gaHR0cDovL2FAYi9jQGQgPT4gaG9zdDpiIGF1dGg6YSBwYXRoOi9jQGRcbiAgICAgIGF0U2lnbiA9IHJlc3QubGFzdEluZGV4T2YoJ0AnLCBob3N0RW5kKVxuICAgIH1cblxuICAgIC8vIE5vdyB3ZSBoYXZlIGEgcG9ydGlvbiB3aGljaCBpcyBkZWZpbml0ZWx5IHRoZSBhdXRoLlxuICAgIC8vIFB1bGwgdGhhdCBvZmYuXG4gICAgaWYgKGF0U2lnbiAhPT0gLTEpIHtcbiAgICAgIGF1dGggPSByZXN0LnNsaWNlKDAsIGF0U2lnbilcbiAgICAgIHJlc3QgPSByZXN0LnNsaWNlKGF0U2lnbiArIDEpXG4gICAgICB0aGlzLmF1dGggPSBhdXRoXG4gICAgfVxuXG4gICAgLy8gdGhlIGhvc3QgaXMgdGhlIHJlbWFpbmluZyB0byB0aGUgbGVmdCBvZiB0aGUgZmlyc3Qgbm9uLWhvc3QgY2hhclxuICAgIGhvc3RFbmQgPSAtMVxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbm9uSG9zdENoYXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBoZWMgPSByZXN0LmluZGV4T2Yobm9uSG9zdENoYXJzW2ldKVxuICAgICAgaWYgKGhlYyAhPT0gLTEgJiYgKGhvc3RFbmQgPT09IC0xIHx8IGhlYyA8IGhvc3RFbmQpKSB7XG4gICAgICAgIGhvc3RFbmQgPSBoZWNcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gaWYgd2Ugc3RpbGwgaGF2ZSBub3QgaGl0IGl0LCB0aGVuIHRoZSBlbnRpcmUgdGhpbmcgaXMgYSBob3N0LlxuICAgIGlmIChob3N0RW5kID09PSAtMSkge1xuICAgICAgaG9zdEVuZCA9IHJlc3QubGVuZ3RoXG4gICAgfVxuXG4gICAgaWYgKHJlc3RbaG9zdEVuZCAtIDFdID09PSAnOicpIHsgaG9zdEVuZC0tIH1cbiAgICBjb25zdCBob3N0ID0gcmVzdC5zbGljZSgwLCBob3N0RW5kKVxuICAgIHJlc3QgPSByZXN0LnNsaWNlKGhvc3RFbmQpXG5cbiAgICAvLyBwdWxsIG91dCBwb3J0LlxuICAgIHRoaXMucGFyc2VIb3N0KGhvc3QpXG5cbiAgICAvLyB3ZSd2ZSBpbmRpY2F0ZWQgdGhhdCB0aGVyZSBpcyBhIGhvc3RuYW1lLFxuICAgIC8vIHNvIGV2ZW4gaWYgaXQncyBlbXB0eSwgaXQgaGFzIHRvIGJlIHByZXNlbnQuXG4gICAgdGhpcy5ob3N0bmFtZSA9IHRoaXMuaG9zdG5hbWUgfHwgJydcblxuICAgIC8vIGlmIGhvc3RuYW1lIGJlZ2lucyB3aXRoIFsgYW5kIGVuZHMgd2l0aCBdXG4gICAgLy8gYXNzdW1lIHRoYXQgaXQncyBhbiBJUHY2IGFkZHJlc3MuXG4gICAgY29uc3QgaXB2Nkhvc3RuYW1lID0gdGhpcy5ob3N0bmFtZVswXSA9PT0gJ1snICYmXG4gICAgICAgIHRoaXMuaG9zdG5hbWVbdGhpcy5ob3N0bmFtZS5sZW5ndGggLSAxXSA9PT0gJ10nXG5cbiAgICAvLyB2YWxpZGF0ZSBhIGxpdHRsZS5cbiAgICBpZiAoIWlwdjZIb3N0bmFtZSkge1xuICAgICAgY29uc3QgaG9zdHBhcnRzID0gdGhpcy5ob3N0bmFtZS5zcGxpdCgvXFwuLylcbiAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gaG9zdHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBjb25zdCBwYXJ0ID0gaG9zdHBhcnRzW2ldXG4gICAgICAgIGlmICghcGFydCkgeyBjb250aW51ZSB9XG4gICAgICAgIGlmICghcGFydC5tYXRjaChob3N0bmFtZVBhcnRQYXR0ZXJuKSkge1xuICAgICAgICAgIGxldCBuZXdwYXJ0ID0gJydcbiAgICAgICAgICBmb3IgKGxldCBqID0gMCwgayA9IHBhcnQubGVuZ3RoOyBqIDwgazsgaisrKSB7XG4gICAgICAgICAgICBpZiAocGFydC5jaGFyQ29kZUF0KGopID4gMTI3KSB7XG4gICAgICAgICAgICAgIC8vIHdlIHJlcGxhY2Ugbm9uLUFTQ0lJIGNoYXIgd2l0aCBhIHRlbXBvcmFyeSBwbGFjZWhvbGRlclxuICAgICAgICAgICAgICAvLyB3ZSBuZWVkIHRoaXMgdG8gbWFrZSBzdXJlIHNpemUgb2YgaG9zdG5hbWUgaXMgbm90XG4gICAgICAgICAgICAgIC8vIGJyb2tlbiBieSByZXBsYWNpbmcgbm9uLUFTQ0lJIGJ5IG5vdGhpbmdcbiAgICAgICAgICAgICAgbmV3cGFydCArPSAneCdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG5ld3BhcnQgKz0gcGFydFtqXVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyB3ZSB0ZXN0IGFnYWluIHdpdGggQVNDSUkgY2hhciBvbmx5XG4gICAgICAgICAgaWYgKCFuZXdwYXJ0Lm1hdGNoKGhvc3RuYW1lUGFydFBhdHRlcm4pKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZFBhcnRzID0gaG9zdHBhcnRzLnNsaWNlKDAsIGkpXG4gICAgICAgICAgICBjb25zdCBub3RIb3N0ID0gaG9zdHBhcnRzLnNsaWNlKGkgKyAxKVxuICAgICAgICAgICAgY29uc3QgYml0ID0gcGFydC5tYXRjaChob3N0bmFtZVBhcnRTdGFydClcbiAgICAgICAgICAgIGlmIChiaXQpIHtcbiAgICAgICAgICAgICAgdmFsaWRQYXJ0cy5wdXNoKGJpdFsxXSlcbiAgICAgICAgICAgICAgbm90SG9zdC51bnNoaWZ0KGJpdFsyXSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub3RIb3N0Lmxlbmd0aCkge1xuICAgICAgICAgICAgICByZXN0ID0gbm90SG9zdC5qb2luKCcuJykgKyByZXN0XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmhvc3RuYW1lID0gdmFsaWRQYXJ0cy5qb2luKCcuJylcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaG9zdG5hbWUubGVuZ3RoID4gaG9zdG5hbWVNYXhMZW4pIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSAnJ1xuICAgIH1cblxuICAgIC8vIHN0cmlwIFsgYW5kIF0gZnJvbSB0aGUgaG9zdG5hbWVcbiAgICAvLyB0aGUgaG9zdCBmaWVsZCBzdGlsbCByZXRhaW5zIHRoZW0sIHRob3VnaFxuICAgIGlmIChpcHY2SG9zdG5hbWUpIHtcbiAgICAgIHRoaXMuaG9zdG5hbWUgPSB0aGlzLmhvc3RuYW1lLnN1YnN0cigxLCB0aGlzLmhvc3RuYW1lLmxlbmd0aCAtIDIpXG4gICAgfVxuICB9XG5cbiAgLy8gY2hvcCBvZmYgZnJvbSB0aGUgdGFpbCBmaXJzdC5cbiAgY29uc3QgaGFzaCA9IHJlc3QuaW5kZXhPZignIycpXG4gIGlmIChoYXNoICE9PSAtMSkge1xuICAgIC8vIGdvdCBhIGZyYWdtZW50IHN0cmluZy5cbiAgICB0aGlzLmhhc2ggPSByZXN0LnN1YnN0cihoYXNoKVxuICAgIHJlc3QgPSByZXN0LnNsaWNlKDAsIGhhc2gpXG4gIH1cbiAgY29uc3QgcW0gPSByZXN0LmluZGV4T2YoJz8nKVxuICBpZiAocW0gIT09IC0xKSB7XG4gICAgdGhpcy5zZWFyY2ggPSByZXN0LnN1YnN0cihxbSlcbiAgICByZXN0ID0gcmVzdC5zbGljZSgwLCBxbSlcbiAgfVxuICBpZiAocmVzdCkgeyB0aGlzLnBhdGhuYW1lID0gcmVzdCB9XG4gIGlmIChzbGFzaGVkUHJvdG9jb2xbbG93ZXJQcm90b10gJiZcbiAgICAgIHRoaXMuaG9zdG5hbWUgJiYgIXRoaXMucGF0aG5hbWUpIHtcbiAgICB0aGlzLnBhdGhuYW1lID0gJydcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cblVybC5wcm90b3R5cGUucGFyc2VIb3N0ID0gZnVuY3Rpb24gKGhvc3QpIHtcbiAgbGV0IHBvcnQgPSBwb3J0UGF0dGVybi5leGVjKGhvc3QpXG4gIGlmIChwb3J0KSB7XG4gICAgcG9ydCA9IHBvcnRbMF1cbiAgICBpZiAocG9ydCAhPT0gJzonKSB7XG4gICAgICB0aGlzLnBvcnQgPSBwb3J0LnN1YnN0cigxKVxuICAgIH1cbiAgICBob3N0ID0gaG9zdC5zdWJzdHIoMCwgaG9zdC5sZW5ndGggLSBwb3J0Lmxlbmd0aClcbiAgfVxuICBpZiAoaG9zdCkgeyB0aGlzLmhvc3RuYW1lID0gaG9zdCB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVybFBhcnNlXG4iLCAiaW1wb3J0IEFueSBmcm9tICcuL3Byb3BlcnRpZXMvQW55L3JlZ2V4Lm1qcyc7XG5pbXBvcnQgQ2MgIGZyb20gJy4vY2F0ZWdvcmllcy9DYy9yZWdleC5tanMnO1xuaW1wb3J0IENmICBmcm9tICcuL2NhdGVnb3JpZXMvQ2YvcmVnZXgubWpzJztcbmltcG9ydCBQICAgZnJvbSAnLi9jYXRlZ29yaWVzL1AvcmVnZXgubWpzJztcbmltcG9ydCBTICAgZnJvbSAnLi9jYXRlZ29yaWVzL1MvcmVnZXgubWpzJztcbmltcG9ydCBaICAgZnJvbSAnLi9jYXRlZ29yaWVzL1ovcmVnZXgubWpzJztcblxuZXhwb3J0IHsgQW55LCBDYywgQ2YsIFAsIFMsIFogfTtcbiIsICJleHBvcnQgZGVmYXVsdCAvW1xcMC1cXHVEN0ZGXFx1RTAwMC1cXHVGRkZGXXxbXFx1RDgwMC1cXHVEQkZGXVtcXHVEQzAwLVxcdURGRkZdfFtcXHVEODAwLVxcdURCRkZdKD8hW1xcdURDMDAtXFx1REZGRl0pfCg/OlteXFx1RDgwMC1cXHVEQkZGXXxeKVtcXHVEQzAwLVxcdURGRkZdLyIsICJleHBvcnQgZGVmYXVsdCAvW1xcMC1cXHgxRlxceDdGLVxceDlGXS8iLCAiZXhwb3J0IGRlZmF1bHQgL1tcXHhBRFxcdTA2MDAtXFx1MDYwNVxcdTA2MUNcXHUwNkREXFx1MDcwRlxcdTA4OTBcXHUwODkxXFx1MDhFMlxcdTE4MEVcXHUyMDBCLVxcdTIwMEZcXHUyMDJBLVxcdTIwMkVcXHUyMDYwLVxcdTIwNjRcXHUyMDY2LVxcdTIwNkZcXHVGRUZGXFx1RkZGOS1cXHVGRkZCXXxcXHVEODA0W1xcdURDQkRcXHVEQ0NEXXxcXHVEODBEW1xcdURDMzAtXFx1REMzRl18XFx1RDgyRltcXHVEQ0EwLVxcdURDQTNdfFxcdUQ4MzRbXFx1REQ3My1cXHVERDdBXXxcXHVEQjQwW1xcdURDMDFcXHVEQzIwLVxcdURDN0ZdLyIsICJleHBvcnQgZGVmYXVsdCAvWyEtIyUtXFwqLC1cXC86O1xcP0BcXFstXFxdX1xce1xcfVxceEExXFx4QTdcXHhBQlxceEI2XFx4QjdcXHhCQlxceEJGXFx1MDM3RVxcdTAzODdcXHUwNTVBLVxcdTA1NUZcXHUwNTg5XFx1MDU4QVxcdTA1QkVcXHUwNUMwXFx1MDVDM1xcdTA1QzZcXHUwNUYzXFx1MDVGNFxcdTA2MDlcXHUwNjBBXFx1MDYwQ1xcdTA2MERcXHUwNjFCXFx1MDYxRC1cXHUwNjFGXFx1MDY2QS1cXHUwNjZEXFx1MDZENFxcdTA3MDAtXFx1MDcwRFxcdTA3RjctXFx1MDdGOVxcdTA4MzAtXFx1MDgzRVxcdTA4NUVcXHUwOTY0XFx1MDk2NVxcdTA5NzBcXHUwOUZEXFx1MEE3NlxcdTBBRjBcXHUwQzc3XFx1MEM4NFxcdTBERjRcXHUwRTRGXFx1MEU1QVxcdTBFNUJcXHUwRjA0LVxcdTBGMTJcXHUwRjE0XFx1MEYzQS1cXHUwRjNEXFx1MEY4NVxcdTBGRDAtXFx1MEZENFxcdTBGRDlcXHUwRkRBXFx1MTA0QS1cXHUxMDRGXFx1MTBGQlxcdTEzNjAtXFx1MTM2OFxcdTE0MDBcXHUxNjZFXFx1MTY5QlxcdTE2OUNcXHUxNkVCLVxcdTE2RURcXHUxNzM1XFx1MTczNlxcdTE3RDQtXFx1MTdENlxcdTE3RDgtXFx1MTdEQVxcdTE4MDAtXFx1MTgwQVxcdTE5NDRcXHUxOTQ1XFx1MUExRVxcdTFBMUZcXHUxQUEwLVxcdTFBQTZcXHUxQUE4LVxcdTFBQURcXHUxQjVBLVxcdTFCNjBcXHUxQjdEXFx1MUI3RVxcdTFCRkMtXFx1MUJGRlxcdTFDM0ItXFx1MUMzRlxcdTFDN0VcXHUxQzdGXFx1MUNDMC1cXHUxQ0M3XFx1MUNEM1xcdTIwMTAtXFx1MjAyN1xcdTIwMzAtXFx1MjA0M1xcdTIwNDUtXFx1MjA1MVxcdTIwNTMtXFx1MjA1RVxcdTIwN0RcXHUyMDdFXFx1MjA4RFxcdTIwOEVcXHUyMzA4LVxcdTIzMEJcXHUyMzI5XFx1MjMyQVxcdTI3NjgtXFx1Mjc3NVxcdTI3QzVcXHUyN0M2XFx1MjdFNi1cXHUyN0VGXFx1Mjk4My1cXHUyOTk4XFx1MjlEOC1cXHUyOURCXFx1MjlGQ1xcdTI5RkRcXHUyQ0Y5LVxcdTJDRkNcXHUyQ0ZFXFx1MkNGRlxcdTJENzBcXHUyRTAwLVxcdTJFMkVcXHUyRTMwLVxcdTJFNEZcXHUyRTUyLVxcdTJFNURcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMTFcXHUzMDE0LVxcdTMwMUZcXHUzMDMwXFx1MzAzRFxcdTMwQTBcXHUzMEZCXFx1QTRGRVxcdUE0RkZcXHVBNjBELVxcdUE2MEZcXHVBNjczXFx1QTY3RVxcdUE2RjItXFx1QTZGN1xcdUE4NzQtXFx1QTg3N1xcdUE4Q0VcXHVBOENGXFx1QThGOC1cXHVBOEZBXFx1QThGQ1xcdUE5MkVcXHVBOTJGXFx1QTk1RlxcdUE5QzEtXFx1QTlDRFxcdUE5REVcXHVBOURGXFx1QUE1Qy1cXHVBQTVGXFx1QUFERVxcdUFBREZcXHVBQUYwXFx1QUFGMVxcdUFCRUJcXHVGRDNFXFx1RkQzRlxcdUZFMTAtXFx1RkUxOVxcdUZFMzAtXFx1RkU1MlxcdUZFNTQtXFx1RkU2MVxcdUZFNjNcXHVGRTY4XFx1RkU2QVxcdUZFNkJcXHVGRjAxLVxcdUZGMDNcXHVGRjA1LVxcdUZGMEFcXHVGRjBDLVxcdUZGMEZcXHVGRjFBXFx1RkYxQlxcdUZGMUZcXHVGRjIwXFx1RkYzQi1cXHVGRjNEXFx1RkYzRlxcdUZGNUJcXHVGRjVEXFx1RkY1Ri1cXHVGRjY1XXxcXHVEODAwW1xcdUREMDAtXFx1REQwMlxcdURGOUZcXHVERkQwXXxcXHVEODAxXFx1REQ2RnxcXHVEODAyW1xcdURDNTdcXHVERDFGXFx1REQzRlxcdURFNTAtXFx1REU1OFxcdURFN0ZcXHVERUYwLVxcdURFRjZcXHVERjM5LVxcdURGM0ZcXHVERjk5LVxcdURGOUNdfFxcdUQ4MDNbXFx1REVBRFxcdURGNTUtXFx1REY1OVxcdURGODYtXFx1REY4OV18XFx1RDgwNFtcXHVEQzQ3LVxcdURDNERcXHVEQ0JCXFx1RENCQ1xcdURDQkUtXFx1RENDMVxcdURENDAtXFx1REQ0M1xcdURENzRcXHVERDc1XFx1RERDNS1cXHVEREM4XFx1RERDRFxcdUREREJcXHVERERELVxcdUREREZcXHVERTM4LVxcdURFM0RcXHVERUE5XXxcXHVEODA1W1xcdURDNEItXFx1REM0RlxcdURDNUFcXHVEQzVCXFx1REM1RFxcdURDQzZcXHVEREMxLVxcdURERDdcXHVERTQxLVxcdURFNDNcXHVERTYwLVxcdURFNkNcXHVERUI5XFx1REYzQy1cXHVERjNFXXxcXHVEODA2W1xcdURDM0JcXHVERDQ0LVxcdURENDZcXHVEREUyXFx1REUzRi1cXHVERTQ2XFx1REU5QS1cXHVERTlDXFx1REU5RS1cXHVERUEyXFx1REYwMC1cXHVERjA5XXxcXHVEODA3W1xcdURDNDEtXFx1REM0NVxcdURDNzBcXHVEQzcxXFx1REVGN1xcdURFRjhcXHVERjQzLVxcdURGNEZcXHVERkZGXXxcXHVEODA5W1xcdURDNzAtXFx1REM3NF18XFx1RDgwQltcXHVERkYxXFx1REZGMl18XFx1RDgxQVtcXHVERTZFXFx1REU2RlxcdURFRjVcXHVERjM3LVxcdURGM0JcXHVERjQ0XXxcXHVEODFCW1xcdURFOTctXFx1REU5QVxcdURGRTJdfFxcdUQ4MkZcXHVEQzlGfFxcdUQ4MzZbXFx1REU4Ny1cXHVERThCXXxcXHVEODNBW1xcdURENUVcXHVERDVGXS8iLCAiZXhwb3J0IGRlZmF1bHQgL1tcXCRcXCs8LT5cXF5gXFx8flxceEEyLVxceEE2XFx4QThcXHhBOVxceEFDXFx4QUUtXFx4QjFcXHhCNFxceEI4XFx4RDdcXHhGN1xcdTAyQzItXFx1MDJDNVxcdTAyRDItXFx1MDJERlxcdTAyRTUtXFx1MDJFQlxcdTAyRURcXHUwMkVGLVxcdTAyRkZcXHUwMzc1XFx1MDM4NFxcdTAzODVcXHUwM0Y2XFx1MDQ4MlxcdTA1OEQtXFx1MDU4RlxcdTA2MDYtXFx1MDYwOFxcdTA2MEJcXHUwNjBFXFx1MDYwRlxcdTA2REVcXHUwNkU5XFx1MDZGRFxcdTA2RkVcXHUwN0Y2XFx1MDdGRVxcdTA3RkZcXHUwODg4XFx1MDlGMlxcdTA5RjNcXHUwOUZBXFx1MDlGQlxcdTBBRjFcXHUwQjcwXFx1MEJGMy1cXHUwQkZBXFx1MEM3RlxcdTBENEZcXHUwRDc5XFx1MEUzRlxcdTBGMDEtXFx1MEYwM1xcdTBGMTNcXHUwRjE1LVxcdTBGMTdcXHUwRjFBLVxcdTBGMUZcXHUwRjM0XFx1MEYzNlxcdTBGMzhcXHUwRkJFLVxcdTBGQzVcXHUwRkM3LVxcdTBGQ0NcXHUwRkNFXFx1MEZDRlxcdTBGRDUtXFx1MEZEOFxcdTEwOUVcXHUxMDlGXFx1MTM5MC1cXHUxMzk5XFx1MTY2RFxcdTE3REJcXHUxOTQwXFx1MTlERS1cXHUxOUZGXFx1MUI2MS1cXHUxQjZBXFx1MUI3NC1cXHUxQjdDXFx1MUZCRFxcdTFGQkYtXFx1MUZDMVxcdTFGQ0QtXFx1MUZDRlxcdTFGREQtXFx1MUZERlxcdTFGRUQtXFx1MUZFRlxcdTFGRkRcXHUxRkZFXFx1MjA0NFxcdTIwNTJcXHUyMDdBLVxcdTIwN0NcXHUyMDhBLVxcdTIwOENcXHUyMEEwLVxcdTIwQzBcXHUyMTAwXFx1MjEwMVxcdTIxMDMtXFx1MjEwNlxcdTIxMDhcXHUyMTA5XFx1MjExNFxcdTIxMTYtXFx1MjExOFxcdTIxMUUtXFx1MjEyM1xcdTIxMjVcXHUyMTI3XFx1MjEyOVxcdTIxMkVcXHUyMTNBXFx1MjEzQlxcdTIxNDAtXFx1MjE0NFxcdTIxNEEtXFx1MjE0RFxcdTIxNEZcXHUyMThBXFx1MjE4QlxcdTIxOTAtXFx1MjMwN1xcdTIzMEMtXFx1MjMyOFxcdTIzMkItXFx1MjQyNlxcdTI0NDAtXFx1MjQ0QVxcdTI0OUMtXFx1MjRFOVxcdTI1MDAtXFx1Mjc2N1xcdTI3OTQtXFx1MjdDNFxcdTI3QzctXFx1MjdFNVxcdTI3RjAtXFx1Mjk4MlxcdTI5OTktXFx1MjlEN1xcdTI5REMtXFx1MjlGQlxcdTI5RkUtXFx1MkI3M1xcdTJCNzYtXFx1MkI5NVxcdTJCOTctXFx1MkJGRlxcdTJDRTUtXFx1MkNFQVxcdTJFNTBcXHUyRTUxXFx1MkU4MC1cXHUyRTk5XFx1MkU5Qi1cXHUyRUYzXFx1MkYwMC1cXHUyRkQ1XFx1MkZGMC1cXHUyRkZGXFx1MzAwNFxcdTMwMTJcXHUzMDEzXFx1MzAyMFxcdTMwMzZcXHUzMDM3XFx1MzAzRVxcdTMwM0ZcXHUzMDlCXFx1MzA5Q1xcdTMxOTBcXHUzMTkxXFx1MzE5Ni1cXHUzMTlGXFx1MzFDMC1cXHUzMUUzXFx1MzFFRlxcdTMyMDAtXFx1MzIxRVxcdTMyMkEtXFx1MzI0N1xcdTMyNTBcXHUzMjYwLVxcdTMyN0ZcXHUzMjhBLVxcdTMyQjBcXHUzMkMwLVxcdTMzRkZcXHU0REMwLVxcdTRERkZcXHVBNDkwLVxcdUE0QzZcXHVBNzAwLVxcdUE3MTZcXHVBNzIwXFx1QTcyMVxcdUE3ODlcXHVBNzhBXFx1QTgyOC1cXHVBODJCXFx1QTgzNi1cXHVBODM5XFx1QUE3Ny1cXHVBQTc5XFx1QUI1QlxcdUFCNkFcXHVBQjZCXFx1RkIyOVxcdUZCQjItXFx1RkJDMlxcdUZENDAtXFx1RkQ0RlxcdUZEQ0ZcXHVGREZDLVxcdUZERkZcXHVGRTYyXFx1RkU2NC1cXHVGRTY2XFx1RkU2OVxcdUZGMDRcXHVGRjBCXFx1RkYxQy1cXHVGRjFFXFx1RkYzRVxcdUZGNDBcXHVGRjVDXFx1RkY1RVxcdUZGRTAtXFx1RkZFNlxcdUZGRTgtXFx1RkZFRVxcdUZGRkNcXHVGRkZEXXxcXHVEODAwW1xcdUREMzctXFx1REQzRlxcdURENzktXFx1REQ4OVxcdUREOEMtXFx1REQ4RVxcdUREOTAtXFx1REQ5Q1xcdUREQTBcXHVEREQwLVxcdURERkNdfFxcdUQ4MDJbXFx1REM3N1xcdURDNzhcXHVERUM4XXxcXHVEODA1XFx1REYzRnxcXHVEODA3W1xcdURGRDUtXFx1REZGMV18XFx1RDgxQVtcXHVERjNDLVxcdURGM0ZcXHVERjQ1XXxcXHVEODJGXFx1REM5Q3xcXHVEODMzW1xcdURGNTAtXFx1REZDM118XFx1RDgzNFtcXHVEQzAwLVxcdURDRjVcXHVERDAwLVxcdUREMjZcXHVERDI5LVxcdURENjRcXHVERDZBLVxcdURENkNcXHVERDgzXFx1REQ4NFxcdUREOEMtXFx1RERBOVxcdUREQUUtXFx1RERFQVxcdURFMDAtXFx1REU0MVxcdURFNDVcXHVERjAwLVxcdURGNTZdfFxcdUQ4MzVbXFx1REVDMVxcdURFREJcXHVERUZCXFx1REYxNVxcdURGMzVcXHVERjRGXFx1REY2RlxcdURGODlcXHVERkE5XFx1REZDM118XFx1RDgzNltcXHVEQzAwLVxcdURERkZcXHVERTM3LVxcdURFM0FcXHVERTZELVxcdURFNzRcXHVERTc2LVxcdURFODNcXHVERTg1XFx1REU4Nl18XFx1RDgzOFtcXHVERDRGXFx1REVGRl18XFx1RDgzQltcXHVEQ0FDXFx1RENCMFxcdUREMkVcXHVERUYwXFx1REVGMV18XFx1RDgzQ1tcXHVEQzAwLVxcdURDMkJcXHVEQzMwLVxcdURDOTNcXHVEQ0EwLVxcdURDQUVcXHVEQ0IxLVxcdURDQkZcXHVEQ0MxLVxcdURDQ0ZcXHVEQ0QxLVxcdURDRjVcXHVERDBELVxcdUREQURcXHVEREU2LVxcdURFMDJcXHVERTEwLVxcdURFM0JcXHVERTQwLVxcdURFNDhcXHVERTUwXFx1REU1MVxcdURFNjAtXFx1REU2NVxcdURGMDAtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURFRDdcXHVERURDLVxcdURFRUNcXHVERUYwLVxcdURFRkNcXHVERjAwLVxcdURGNzZcXHVERjdCLVxcdURGRDlcXHVERkUwLVxcdURGRUJcXHVERkYwXXxcXHVEODNFW1xcdURDMDAtXFx1REMwQlxcdURDMTAtXFx1REM0N1xcdURDNTAtXFx1REM1OVxcdURDNjAtXFx1REM4N1xcdURDOTAtXFx1RENBRFxcdURDQjBcXHVEQ0IxXFx1REQwMC1cXHVERTUzXFx1REU2MC1cXHVERTZEXFx1REU3MC1cXHVERTdDXFx1REU4MC1cXHVERTg4XFx1REU5MC1cXHVERUJEXFx1REVCRi1cXHVERUM1XFx1REVDRS1cXHVERURCXFx1REVFMC1cXHVERUU4XFx1REVGMC1cXHVERUY4XFx1REYwMC1cXHVERjkyXFx1REY5NC1cXHVERkNBXS8iLCAiZXhwb3J0IGRlZmF1bHQgL1sgXFx4QTBcXHUxNjgwXFx1MjAwMC1cXHUyMDBBXFx1MjAyOFxcdTIwMjlcXHUyMDJGXFx1MjA1RlxcdTMwMDBdLyIsICIvLyBKdXN0IGEgc2hvcnRjdXQgZm9yIGJ1bGsgZXhwb3J0XG5cbmltcG9ydCBwYXJzZUxpbmtMYWJlbCBmcm9tICcuL3BhcnNlX2xpbmtfbGFiZWwubWpzJ1xuaW1wb3J0IHBhcnNlTGlua0Rlc3RpbmF0aW9uIGZyb20gJy4vcGFyc2VfbGlua19kZXN0aW5hdGlvbi5tanMnXG5pbXBvcnQgcGFyc2VMaW5rVGl0bGUgZnJvbSAnLi9wYXJzZV9saW5rX3RpdGxlLm1qcydcblxuZXhwb3J0IHtcbiAgcGFyc2VMaW5rTGFiZWwsXG4gIHBhcnNlTGlua0Rlc3RpbmF0aW9uLFxuICBwYXJzZUxpbmtUaXRsZVxufVxuIiwgIi8vIFBhcnNlIGxpbmsgbGFiZWxcbi8vXG4vLyB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBmaXJzdCBjaGFyYWN0ZXIgKFwiW1wiKSBhbHJlYWR5IG1hdGNoZXM7XG4vLyByZXR1cm5zIHRoZSBlbmQgb2YgdGhlIGxhYmVsXG4vL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZUxpbmtMYWJlbCAoc3RhdGUsIHN0YXJ0LCBkaXNhYmxlTmVzdGVkKSB7XG4gIGxldCBsZXZlbCwgZm91bmQsIG1hcmtlciwgcHJldlBvc1xuXG4gIGNvbnN0IG1heCA9IHN0YXRlLnBvc01heFxuICBjb25zdCBvbGRQb3MgPSBzdGF0ZS5wb3NcblxuICBzdGF0ZS5wb3MgPSBzdGFydCArIDFcbiAgbGV2ZWwgPSAxXG5cbiAgd2hpbGUgKHN0YXRlLnBvcyA8IG1heCkge1xuICAgIG1hcmtlciA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXRlLnBvcylcbiAgICBpZiAobWFya2VyID09PSAweDVEIC8qIF0gKi8pIHtcbiAgICAgIGxldmVsLS1cbiAgICAgIGlmIChsZXZlbCA9PT0gMCkge1xuICAgICAgICBmb3VuZCA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBwcmV2UG9zID0gc3RhdGUucG9zXG4gICAgc3RhdGUubWQuaW5saW5lLnNraXBUb2tlbihzdGF0ZSlcbiAgICBpZiAobWFya2VyID09PSAweDVCIC8qIFsgKi8pIHtcbiAgICAgIGlmIChwcmV2UG9zID09PSBzdGF0ZS5wb3MgLSAxKSB7XG4gICAgICAgIC8vIGluY3JlYXNlIGxldmVsIGlmIHdlIGZpbmQgdGV4dCBgW2AsIHdoaWNoIGlzIG5vdCBhIHBhcnQgb2YgYW55IHRva2VuXG4gICAgICAgIGxldmVsKytcbiAgICAgIH0gZWxzZSBpZiAoZGlzYWJsZU5lc3RlZCkge1xuICAgICAgICBzdGF0ZS5wb3MgPSBvbGRQb3NcbiAgICAgICAgcmV0dXJuIC0xXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IGxhYmVsRW5kID0gLTFcblxuICBpZiAoZm91bmQpIHtcbiAgICBsYWJlbEVuZCA9IHN0YXRlLnBvc1xuICB9XG5cbiAgLy8gcmVzdG9yZSBvbGQgc3RhdGVcbiAgc3RhdGUucG9zID0gb2xkUG9zXG5cbiAgcmV0dXJuIGxhYmVsRW5kXG59XG4iLCAiLy8gUGFyc2UgbGluayBkZXN0aW5hdGlvblxuLy9cblxuaW1wb3J0IHsgdW5lc2NhcGVBbGwgfSBmcm9tICcuLi9jb21tb24vdXRpbHMubWpzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZUxpbmtEZXN0aW5hdGlvbiAoc3RyLCBzdGFydCwgbWF4KSB7XG4gIGxldCBjb2RlXG4gIGxldCBwb3MgPSBzdGFydFxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBvazogZmFsc2UsXG4gICAgcG9zOiAwLFxuICAgIHN0cjogJydcbiAgfVxuXG4gIGlmIChzdHIuY2hhckNvZGVBdChwb3MpID09PSAweDNDIC8qIDwgKi8pIHtcbiAgICBwb3MrK1xuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChwb3MpXG4gICAgICBpZiAoY29kZSA9PT0gMHgwQSAvKiBcXG4gKi8pIHsgcmV0dXJuIHJlc3VsdCB9XG4gICAgICBpZiAoY29kZSA9PT0gMHgzQyAvKiA8ICovKSB7IHJldHVybiByZXN1bHQgfVxuICAgICAgaWYgKGNvZGUgPT09IDB4M0UgLyogPiAqLykge1xuICAgICAgICByZXN1bHQucG9zID0gcG9zICsgMVxuICAgICAgICByZXN1bHQuc3RyID0gdW5lc2NhcGVBbGwoc3RyLnNsaWNlKHN0YXJ0ICsgMSwgcG9zKSlcbiAgICAgICAgcmVzdWx0Lm9rID0gdHJ1ZVxuICAgICAgICByZXR1cm4gcmVzdWx0XG4gICAgICB9XG4gICAgICBpZiAoY29kZSA9PT0gMHg1QyAvKiBcXCAqLyAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgICAgIHBvcyArPSAyXG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIHBvcysrXG4gICAgfVxuXG4gICAgLy8gbm8gY2xvc2luZyAnPidcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICAvLyB0aGlzIHNob3VsZCBiZSAuLi4gfSBlbHNlIHsgLi4uIGJyYW5jaFxuXG4gIGxldCBsZXZlbCA9IDBcbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNvZGUgPSBzdHIuY2hhckNvZGVBdChwb3MpXG5cbiAgICBpZiAoY29kZSA9PT0gMHgyMCkgeyBicmVhayB9XG5cbiAgICAvLyBhc2NpaSBjb250cm9sIGNoYXJhY3RlcnNcbiAgICBpZiAoY29kZSA8IDB4MjAgfHwgY29kZSA9PT0gMHg3RikgeyBicmVhayB9XG5cbiAgICBpZiAoY29kZSA9PT0gMHg1QyAvKiBcXCAqLyAmJiBwb3MgKyAxIDwgbWF4KSB7XG4gICAgICBpZiAoc3RyLmNoYXJDb2RlQXQocG9zICsgMSkgPT09IDB4MjApIHsgYnJlYWsgfVxuICAgICAgcG9zICs9IDJcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IDB4MjggLyogKCAqLykge1xuICAgICAgbGV2ZWwrK1xuICAgICAgaWYgKGxldmVsID4gMzIpIHsgcmV0dXJuIHJlc3VsdCB9XG4gICAgfVxuXG4gICAgaWYgKGNvZGUgPT09IDB4MjkgLyogKSAqLykge1xuICAgICAgaWYgKGxldmVsID09PSAwKSB7IGJyZWFrIH1cbiAgICAgIGxldmVsLS1cbiAgICB9XG5cbiAgICBwb3MrK1xuICB9XG5cbiAgaWYgKHN0YXJ0ID09PSBwb3MpIHsgcmV0dXJuIHJlc3VsdCB9XG4gIGlmIChsZXZlbCAhPT0gMCkgeyByZXR1cm4gcmVzdWx0IH1cblxuICByZXN1bHQuc3RyID0gdW5lc2NhcGVBbGwoc3RyLnNsaWNlKHN0YXJ0LCBwb3MpKVxuICByZXN1bHQucG9zID0gcG9zXG4gIHJlc3VsdC5vayA9IHRydWVcbiAgcmV0dXJuIHJlc3VsdFxufVxuIiwgIi8vIFBhcnNlIGxpbmsgdGl0bGVcbi8vXG5cbmltcG9ydCB7IHVuZXNjYXBlQWxsIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzLm1qcydcblxuLy8gUGFyc2UgbGluayB0aXRsZSB3aXRoaW4gYHN0cmAgaW4gW3N0YXJ0LCBtYXhdIHJhbmdlLFxuLy8gb3IgY29udGludWUgcHJldmlvdXMgcGFyc2luZyBpZiBgcHJldl9zdGF0ZWAgaXMgZGVmaW5lZCAoZXF1YWwgdG8gcmVzdWx0IG9mIGxhc3QgZXhlY3V0aW9uKS5cbi8vXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwYXJzZUxpbmtUaXRsZSAoc3RyLCBzdGFydCwgbWF4LCBwcmV2X3N0YXRlKSB7XG4gIGxldCBjb2RlXG4gIGxldCBwb3MgPSBzdGFydFxuXG4gIGNvbnN0IHN0YXRlID0ge1xuICAgIC8vIGlmIGB0cnVlYCwgdGhpcyBpcyBhIHZhbGlkIGxpbmsgdGl0bGVcbiAgICBvazogZmFsc2UsXG4gICAgLy8gaWYgYHRydWVgLCB0aGlzIGxpbmsgY2FuIGJlIGNvbnRpbnVlZCBvbiB0aGUgbmV4dCBsaW5lXG4gICAgY2FuX2NvbnRpbnVlOiBmYWxzZSxcbiAgICAvLyBpZiBgb2tgLCBpdCdzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGFmdGVyIHRoZSBjbG9zaW5nIG1hcmtlclxuICAgIHBvczogMCxcbiAgICAvLyBpZiBgb2tgLCBpdCdzIHRoZSB1bmVzY2FwZWQgdGl0bGVcbiAgICBzdHI6ICcnLFxuICAgIC8vIGV4cGVjdGVkIGNsb3NpbmcgbWFya2VyIGNoYXJhY3RlciBjb2RlXG4gICAgbWFya2VyOiAwXG4gIH1cblxuICBpZiAocHJldl9zdGF0ZSkge1xuICAgIC8vIHRoaXMgaXMgYSBjb250aW51YXRpb24gb2YgYSBwcmV2aW91cyBwYXJzZUxpbmtUaXRsZSBjYWxsIG9uIHRoZSBuZXh0IGxpbmUsXG4gICAgLy8gdXNlZCBpbiByZWZlcmVuY2UgbGlua3Mgb25seVxuICAgIHN0YXRlLnN0ciA9IHByZXZfc3RhdGUuc3RyXG4gICAgc3RhdGUubWFya2VyID0gcHJldl9zdGF0ZS5tYXJrZXJcbiAgfSBlbHNlIHtcbiAgICBpZiAocG9zID49IG1heCkgeyByZXR1cm4gc3RhdGUgfVxuXG4gICAgbGV0IG1hcmtlciA9IHN0ci5jaGFyQ29kZUF0KHBvcylcbiAgICBpZiAobWFya2VyICE9PSAweDIyIC8qIFwiICovICYmIG1hcmtlciAhPT0gMHgyNyAvKiAnICovICYmIG1hcmtlciAhPT0gMHgyOCAvKiAoICovKSB7IHJldHVybiBzdGF0ZSB9XG5cbiAgICBzdGFydCsrXG4gICAgcG9zKytcblxuICAgIC8vIGlmIG9wZW5pbmcgbWFya2VyIGlzIFwiKFwiLCBzd2l0Y2ggaXQgdG8gY2xvc2luZyBtYXJrZXIgXCIpXCJcbiAgICBpZiAobWFya2VyID09PSAweDI4KSB7IG1hcmtlciA9IDB4MjkgfVxuXG4gICAgc3RhdGUubWFya2VyID0gbWFya2VyXG4gIH1cblxuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgY29kZSA9IHN0ci5jaGFyQ29kZUF0KHBvcylcbiAgICBpZiAoY29kZSA9PT0gc3RhdGUubWFya2VyKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBwb3MgKyAxXG4gICAgICBzdGF0ZS5zdHIgKz0gdW5lc2NhcGVBbGwoc3RyLnNsaWNlKHN0YXJ0LCBwb3MpKVxuICAgICAgc3RhdGUub2sgPSB0cnVlXG4gICAgICByZXR1cm4gc3RhdGVcbiAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4MjggLyogKCAqLyAmJiBzdGF0ZS5tYXJrZXIgPT09IDB4MjkgLyogKSAqLykge1xuICAgICAgcmV0dXJuIHN0YXRlXG4gICAgfSBlbHNlIGlmIChjb2RlID09PSAweDVDIC8qIFxcICovICYmIHBvcyArIDEgPCBtYXgpIHtcbiAgICAgIHBvcysrXG4gICAgfVxuXG4gICAgcG9zKytcbiAgfVxuXG4gIC8vIG5vIGNsb3NpbmcgbWFya2VyIGZvdW5kLCBidXQgdGhpcyBsaW5rIHRpdGxlIG1heSBjb250aW51ZSBvbiB0aGUgbmV4dCBsaW5lIChmb3IgcmVmZXJlbmNlcylcbiAgc3RhdGUuY2FuX2NvbnRpbnVlID0gdHJ1ZVxuICBzdGF0ZS5zdHIgKz0gdW5lc2NhcGVBbGwoc3RyLnNsaWNlKHN0YXJ0LCBwb3MpKVxuICByZXR1cm4gc3RhdGVcbn1cbiIsICIvKipcbiAqIGNsYXNzIFJlbmRlcmVyXG4gKlxuICogR2VuZXJhdGVzIEhUTUwgZnJvbSBwYXJzZWQgdG9rZW4gc3RyZWFtLiBFYWNoIGluc3RhbmNlIGhhcyBpbmRlcGVuZGVudFxuICogY29weSBvZiBydWxlcy4gVGhvc2UgY2FuIGJlIHJld3JpdHRlbiB3aXRoIGVhc2UuIEFsc28sIHlvdSBjYW4gYWRkIG5ld1xuICogcnVsZXMgaWYgeW91IGNyZWF0ZSBwbHVnaW4gYW5kIGFkZHMgbmV3IHRva2VuIHR5cGVzLlxuICoqL1xuXG5pbXBvcnQgeyBhc3NpZ24sIHVuZXNjYXBlQWxsLCBlc2NhcGVIdG1sIH0gZnJvbSAnLi9jb21tb24vdXRpbHMubWpzJ1xuXG5jb25zdCBkZWZhdWx0X3J1bGVzID0ge31cblxuZGVmYXVsdF9ydWxlcy5jb2RlX2lubGluZSA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCwgb3B0aW9ucywgZW52LCBzbGYpIHtcbiAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaWR4XVxuXG4gIHJldHVybiAgJzxjb2RlJyArIHNsZi5yZW5kZXJBdHRycyh0b2tlbikgKyAnPicgK1xuICAgICAgICAgIGVzY2FwZUh0bWwodG9rZW4uY29udGVudCkgK1xuICAgICAgICAgICc8L2NvZGU+J1xufVxuXG5kZWZhdWx0X3J1bGVzLmNvZGVfYmxvY2sgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2xmKSB7XG4gIGNvbnN0IHRva2VuID0gdG9rZW5zW2lkeF1cblxuICByZXR1cm4gICc8cHJlJyArIHNsZi5yZW5kZXJBdHRycyh0b2tlbikgKyAnPjxjb2RlPicgK1xuICAgICAgICAgIGVzY2FwZUh0bWwodG9rZW5zW2lkeF0uY29udGVudCkgK1xuICAgICAgICAgICc8L2NvZGU+PC9wcmU+XFxuJ1xufVxuXG5kZWZhdWx0X3J1bGVzLmZlbmNlID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNsZikge1xuICBjb25zdCB0b2tlbiA9IHRva2Vuc1tpZHhdXG4gIGNvbnN0IGluZm8gPSB0b2tlbi5pbmZvID8gdW5lc2NhcGVBbGwodG9rZW4uaW5mbykudHJpbSgpIDogJydcbiAgbGV0IGxhbmdOYW1lID0gJydcbiAgbGV0IGxhbmdBdHRycyA9ICcnXG5cbiAgaWYgKGluZm8pIHtcbiAgICBjb25zdCBhcnIgPSBpbmZvLnNwbGl0KC8oXFxzKykvZylcbiAgICBsYW5nTmFtZSA9IGFyclswXVxuICAgIGxhbmdBdHRycyA9IGFyci5zbGljZSgyKS5qb2luKCcnKVxuICB9XG5cbiAgbGV0IGhpZ2hsaWdodGVkXG4gIGlmIChvcHRpb25zLmhpZ2hsaWdodCkge1xuICAgIGhpZ2hsaWdodGVkID0gb3B0aW9ucy5oaWdobGlnaHQodG9rZW4uY29udGVudCwgbGFuZ05hbWUsIGxhbmdBdHRycykgfHwgZXNjYXBlSHRtbCh0b2tlbi5jb250ZW50KVxuICB9IGVsc2Uge1xuICAgIGhpZ2hsaWdodGVkID0gZXNjYXBlSHRtbCh0b2tlbi5jb250ZW50KVxuICB9XG5cbiAgaWYgKGhpZ2hsaWdodGVkLmluZGV4T2YoJzxwcmUnKSA9PT0gMCkge1xuICAgIHJldHVybiBoaWdobGlnaHRlZCArICdcXG4nXG4gIH1cblxuICAvLyBJZiBsYW5ndWFnZSBleGlzdHMsIGluamVjdCBjbGFzcyBnZW50bHksIHdpdGhvdXQgbW9kaWZ5aW5nIG9yaWdpbmFsIHRva2VuLlxuICAvLyBNYXkgYmUsIG9uZSBkYXkgd2Ugd2lsbCBhZGQgLmRlZXBDbG9uZSgpIGZvciB0b2tlbiBhbmQgc2ltcGxpZnkgdGhpcyBwYXJ0LCBidXRcbiAgLy8gbm93IHdlIHByZWZlciB0byBrZWVwIHRoaW5ncyBsb2NhbC5cbiAgaWYgKGluZm8pIHtcbiAgICBjb25zdCBpID0gdG9rZW4uYXR0ckluZGV4KCdjbGFzcycpXG4gICAgY29uc3QgdG1wQXR0cnMgPSB0b2tlbi5hdHRycyA/IHRva2VuLmF0dHJzLnNsaWNlKCkgOiBbXVxuXG4gICAgaWYgKGkgPCAwKSB7XG4gICAgICB0bXBBdHRycy5wdXNoKFsnY2xhc3MnLCBvcHRpb25zLmxhbmdQcmVmaXggKyBsYW5nTmFtZV0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRtcEF0dHJzW2ldID0gdG1wQXR0cnNbaV0uc2xpY2UoKVxuICAgICAgdG1wQXR0cnNbaV1bMV0gKz0gJyAnICsgb3B0aW9ucy5sYW5nUHJlZml4ICsgbGFuZ05hbWVcbiAgICB9XG5cbiAgICAvLyBGYWtlIHRva2VuIGp1c3QgdG8gcmVuZGVyIGF0dHJpYnV0ZXNcbiAgICBjb25zdCB0bXBUb2tlbiA9IHtcbiAgICAgIGF0dHJzOiB0bXBBdHRyc1xuICAgIH1cblxuICAgIHJldHVybiBgPHByZT48Y29kZSR7c2xmLnJlbmRlckF0dHJzKHRtcFRva2VuKX0+JHtoaWdobGlnaHRlZH08L2NvZGU+PC9wcmU+XFxuYFxuICB9XG5cbiAgcmV0dXJuIGA8cHJlPjxjb2RlJHtzbGYucmVuZGVyQXR0cnModG9rZW4pfT4ke2hpZ2hsaWdodGVkfTwvY29kZT48L3ByZT5cXG5gXG59XG5cbmRlZmF1bHRfcnVsZXMuaW1hZ2UgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHgsIG9wdGlvbnMsIGVudiwgc2xmKSB7XG4gIGNvbnN0IHRva2VuID0gdG9rZW5zW2lkeF1cblxuICAvLyBcImFsdFwiIGF0dHIgTVVTVCBiZSBzZXQsIGV2ZW4gaWYgZW1wdHkuIEJlY2F1c2UgaXQncyBtYW5kYXRvcnkgYW5kXG4gIC8vIHNob3VsZCBiZSBwbGFjZWQgb24gcHJvcGVyIHBvc2l0aW9uIGZvciB0ZXN0cy5cbiAgLy9cbiAgLy8gUmVwbGFjZSBjb250ZW50IHdpdGggYWN0dWFsIHZhbHVlXG5cbiAgdG9rZW4uYXR0cnNbdG9rZW4uYXR0ckluZGV4KCdhbHQnKV1bMV0gPVxuICAgIHNsZi5yZW5kZXJJbmxpbmVBc1RleHQodG9rZW4uY2hpbGRyZW4sIG9wdGlvbnMsIGVudilcblxuICByZXR1cm4gc2xmLnJlbmRlclRva2VuKHRva2VucywgaWR4LCBvcHRpb25zKVxufVxuXG5kZWZhdWx0X3J1bGVzLmhhcmRicmVhayA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCwgb3B0aW9ucyAvKiwgZW52ICovKSB7XG4gIHJldHVybiBvcHRpb25zLnhodG1sT3V0ID8gJzxiciAvPlxcbicgOiAnPGJyPlxcbidcbn1cbmRlZmF1bHRfcnVsZXMuc29mdGJyZWFrID0gZnVuY3Rpb24gKHRva2VucywgaWR4LCBvcHRpb25zIC8qLCBlbnYgKi8pIHtcbiAgcmV0dXJuIG9wdGlvbnMuYnJlYWtzID8gKG9wdGlvbnMueGh0bWxPdXQgPyAnPGJyIC8+XFxuJyA6ICc8YnI+XFxuJykgOiAnXFxuJ1xufVxuXG5kZWZhdWx0X3J1bGVzLnRleHQgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHggLyosIG9wdGlvbnMsIGVudiAqLykge1xuICByZXR1cm4gZXNjYXBlSHRtbCh0b2tlbnNbaWR4XS5jb250ZW50KVxufVxuXG5kZWZhdWx0X3J1bGVzLmh0bWxfYmxvY2sgPSBmdW5jdGlvbiAodG9rZW5zLCBpZHggLyosIG9wdGlvbnMsIGVudiAqLykge1xuICByZXR1cm4gdG9rZW5zW2lkeF0uY29udGVudFxufVxuZGVmYXVsdF9ydWxlcy5odG1sX2lubGluZSA9IGZ1bmN0aW9uICh0b2tlbnMsIGlkeCAvKiwgb3B0aW9ucywgZW52ICovKSB7XG4gIHJldHVybiB0b2tlbnNbaWR4XS5jb250ZW50XG59XG5cbi8qKlxuICogbmV3IFJlbmRlcmVyKClcbiAqXG4gKiBDcmVhdGVzIG5ldyBbW1JlbmRlcmVyXV0gaW5zdGFuY2UgYW5kIGZpbGwgW1tSZW5kZXJlciNydWxlc11dIHdpdGggZGVmYXVsdHMuXG4gKiovXG5mdW5jdGlvbiBSZW5kZXJlciAoKSB7XG4gIC8qKlxuICAgKiBSZW5kZXJlciNydWxlcyAtPiBPYmplY3RcbiAgICpcbiAgICogQ29udGFpbnMgcmVuZGVyIHJ1bGVzIGZvciB0b2tlbnMuIENhbiBiZSB1cGRhdGVkIGFuZCBleHRlbmRlZC5cbiAgICpcbiAgICogIyMjIyMgRXhhbXBsZVxuICAgKlxuICAgKiBgYGBqYXZhc2NyaXB0XG4gICAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JykoKTtcbiAgICpcbiAgICogbWQucmVuZGVyZXIucnVsZXMuc3Ryb25nX29wZW4gID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJzxiPic7IH07XG4gICAqIG1kLnJlbmRlcmVyLnJ1bGVzLnN0cm9uZ19jbG9zZSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICc8L2I+JzsgfTtcbiAgICpcbiAgICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcklubGluZSguLi4pO1xuICAgKiBgYGBcbiAgICpcbiAgICogRWFjaCBydWxlIGlzIGNhbGxlZCBhcyBpbmRlcGVuZGVudCBzdGF0aWMgZnVuY3Rpb24gd2l0aCBmaXhlZCBzaWduYXR1cmU6XG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogZnVuY3Rpb24gbXlfdG9rZW5fcmVuZGVyKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHJlbmRlcmVyKSB7XG4gICAqICAgLy8gLi4uXG4gICAqICAgcmV0dXJuIHJlbmRlcmVkSFRNTDtcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogU2VlIFtzb3VyY2UgY29kZV0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9yZW5kZXJlci5tanMpXG4gICAqIGZvciBtb3JlIGRldGFpbHMgYW5kIGV4YW1wbGVzLlxuICAgKiovXG4gIHRoaXMucnVsZXMgPSBhc3NpZ24oe30sIGRlZmF1bHRfcnVsZXMpXG59XG5cbi8qKlxuICogUmVuZGVyZXIucmVuZGVyQXR0cnModG9rZW4pIC0+IFN0cmluZ1xuICpcbiAqIFJlbmRlciB0b2tlbiBhdHRyaWJ1dGVzIHRvIHN0cmluZy5cbiAqKi9cblJlbmRlcmVyLnByb3RvdHlwZS5yZW5kZXJBdHRycyA9IGZ1bmN0aW9uIHJlbmRlckF0dHJzICh0b2tlbikge1xuICBsZXQgaSwgbCwgcmVzdWx0XG5cbiAgaWYgKCF0b2tlbi5hdHRycykgeyByZXR1cm4gJycgfVxuXG4gIHJlc3VsdCA9ICcnXG5cbiAgZm9yIChpID0gMCwgbCA9IHRva2VuLmF0dHJzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIHJlc3VsdCArPSAnICcgKyBlc2NhcGVIdG1sKHRva2VuLmF0dHJzW2ldWzBdKSArICc9XCInICsgZXNjYXBlSHRtbCh0b2tlbi5hdHRyc1tpXVsxXSkgKyAnXCInXG4gIH1cblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogUmVuZGVyZXIucmVuZGVyVG9rZW4odG9rZW5zLCBpZHgsIG9wdGlvbnMpIC0+IFN0cmluZ1xuICogLSB0b2tlbnMgKEFycmF5KTogbGlzdCBvZiB0b2tlbnNcbiAqIC0gaWR4IChOdW1iZWQpOiB0b2tlbiBpbmRleCB0byByZW5kZXJcbiAqIC0gb3B0aW9ucyAoT2JqZWN0KTogcGFyYW1zIG9mIHBhcnNlciBpbnN0YW5jZVxuICpcbiAqIERlZmF1bHQgdG9rZW4gcmVuZGVyZXIuIENhbiBiZSBvdmVycmlkZW4gYnkgY3VzdG9tIGZ1bmN0aW9uXG4gKiBpbiBbW1JlbmRlcmVyI3J1bGVzXV0uXG4gKiovXG5SZW5kZXJlci5wcm90b3R5cGUucmVuZGVyVG9rZW4gPSBmdW5jdGlvbiByZW5kZXJUb2tlbiAodG9rZW5zLCBpZHgsIG9wdGlvbnMpIHtcbiAgY29uc3QgdG9rZW4gPSB0b2tlbnNbaWR4XVxuICBsZXQgcmVzdWx0ID0gJydcblxuICAvLyBUaWdodCBsaXN0IHBhcmFncmFwaHNcbiAgaWYgKHRva2VuLmhpZGRlbikge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gSW5zZXJ0IGEgbmV3bGluZSBiZXR3ZWVuIGhpZGRlbiBwYXJhZ3JhcGggYW5kIHN1YnNlcXVlbnQgb3BlbmluZ1xuICAvLyBibG9jay1sZXZlbCB0YWcuXG4gIC8vXG4gIC8vIEZvciBleGFtcGxlLCBoZXJlIHdlIHNob3VsZCBpbnNlcnQgYSBuZXdsaW5lIGJlZm9yZSBibG9ja3F1b3RlOlxuICAvLyAgLSBhXG4gIC8vICAgID5cbiAgLy9cbiAgaWYgKHRva2VuLmJsb2NrICYmIHRva2VuLm5lc3RpbmcgIT09IC0xICYmIGlkeCAmJiB0b2tlbnNbaWR4IC0gMV0uaGlkZGVuKSB7XG4gICAgcmVzdWx0ICs9ICdcXG4nXG4gIH1cblxuICAvLyBBZGQgdG9rZW4gbmFtZSwgZS5nLiBgPGltZ2BcbiAgcmVzdWx0ICs9ICh0b2tlbi5uZXN0aW5nID09PSAtMSA/ICc8LycgOiAnPCcpICsgdG9rZW4udGFnXG5cbiAgLy8gRW5jb2RlIGF0dHJpYnV0ZXMsIGUuZy4gYDxpbWcgc3JjPVwiZm9vXCJgXG4gIHJlc3VsdCArPSB0aGlzLnJlbmRlckF0dHJzKHRva2VuKVxuXG4gIC8vIEFkZCBhIHNsYXNoIGZvciBzZWxmLWNsb3NpbmcgdGFncywgZS5nLiBgPGltZyBzcmM9XCJmb29cIiAvYFxuICBpZiAodG9rZW4ubmVzdGluZyA9PT0gMCAmJiBvcHRpb25zLnhodG1sT3V0KSB7XG4gICAgcmVzdWx0ICs9ICcgLydcbiAgfVxuXG4gIC8vIENoZWNrIGlmIHdlIG5lZWQgdG8gYWRkIGEgbmV3bGluZSBhZnRlciB0aGlzIHRhZ1xuICBsZXQgbmVlZExmID0gZmFsc2VcbiAgaWYgKHRva2VuLmJsb2NrKSB7XG4gICAgbmVlZExmID0gdHJ1ZVxuXG4gICAgaWYgKHRva2VuLm5lc3RpbmcgPT09IDEpIHtcbiAgICAgIGlmIChpZHggKyAxIDwgdG9rZW5zLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBuZXh0VG9rZW4gPSB0b2tlbnNbaWR4ICsgMV1cblxuICAgICAgICBpZiAobmV4dFRva2VuLnR5cGUgPT09ICdpbmxpbmUnIHx8IG5leHRUb2tlbi5oaWRkZW4pIHtcbiAgICAgICAgICAvLyBCbG9jay1sZXZlbCB0YWcgY29udGFpbmluZyBhbiBpbmxpbmUgdGFnLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgbmVlZExmID0gZmFsc2VcbiAgICAgICAgfSBlbHNlIGlmIChuZXh0VG9rZW4ubmVzdGluZyA9PT0gLTEgJiYgbmV4dFRva2VuLnRhZyA9PT0gdG9rZW4udGFnKSB7XG4gICAgICAgICAgLy8gT3BlbmluZyB0YWcgKyBjbG9zaW5nIHRhZyBvZiB0aGUgc2FtZSB0eXBlLiBFLmcuIGA8bGk+PC9saT5gLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgbmVlZExmID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJlc3VsdCArPSBuZWVkTGYgPyAnPlxcbicgOiAnPidcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogUmVuZGVyZXIucmVuZGVySW5saW5lKHRva2Vucywgb3B0aW9ucywgZW52KSAtPiBTdHJpbmdcbiAqIC0gdG9rZW5zIChBcnJheSk6IGxpc3Qgb24gYmxvY2sgdG9rZW5zIHRvIHJlbmRlclxuICogLSBvcHRpb25zIChPYmplY3QpOiBwYXJhbXMgb2YgcGFyc2VyIGluc3RhbmNlXG4gKiAtIGVudiAoT2JqZWN0KTogYWRkaXRpb25hbCBkYXRhIGZyb20gcGFyc2VkIGlucHV0IChyZWZlcmVuY2VzLCBmb3IgZXhhbXBsZSlcbiAqXG4gKiBUaGUgc2FtZSBhcyBbW1JlbmRlcmVyLnJlbmRlcl1dLCBidXQgZm9yIHNpbmdsZSB0b2tlbiBvZiBgaW5saW5lYCB0eXBlLlxuICoqL1xuUmVuZGVyZXIucHJvdG90eXBlLnJlbmRlcklubGluZSA9IGZ1bmN0aW9uICh0b2tlbnMsIG9wdGlvbnMsIGVudikge1xuICBsZXQgcmVzdWx0ID0gJydcbiAgY29uc3QgcnVsZXMgPSB0aGlzLnJ1bGVzXG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHR5cGUgPSB0b2tlbnNbaV0udHlwZVxuXG4gICAgaWYgKHR5cGVvZiBydWxlc1t0eXBlXSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHJlc3VsdCArPSBydWxlc1t0eXBlXSh0b2tlbnMsIGksIG9wdGlvbnMsIGVudiwgdGhpcylcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0ICs9IHRoaXMucmVuZGVyVG9rZW4odG9rZW5zLCBpLCBvcHRpb25zKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqIGludGVybmFsXG4gKiBSZW5kZXJlci5yZW5kZXJJbmxpbmVBc1RleHQodG9rZW5zLCBvcHRpb25zLCBlbnYpIC0+IFN0cmluZ1xuICogLSB0b2tlbnMgKEFycmF5KTogbGlzdCBvbiBibG9jayB0b2tlbnMgdG8gcmVuZGVyXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHBhcmFtcyBvZiBwYXJzZXIgaW5zdGFuY2VcbiAqIC0gZW52IChPYmplY3QpOiBhZGRpdGlvbmFsIGRhdGEgZnJvbSBwYXJzZWQgaW5wdXQgKHJlZmVyZW5jZXMsIGZvciBleGFtcGxlKVxuICpcbiAqIFNwZWNpYWwga2x1ZGdlIGZvciBpbWFnZSBgYWx0YCBhdHRyaWJ1dGVzIHRvIGNvbmZvcm0gQ29tbW9uTWFyayBzcGVjLlxuICogRG9uJ3QgdHJ5IHRvIHVzZSBpdCEgU3BlYyByZXF1aXJlcyB0byBzaG93IGBhbHRgIGNvbnRlbnQgd2l0aCBzdHJpcHBlZCBtYXJrdXAsXG4gKiBpbnN0ZWFkIG9mIHNpbXBsZSBlc2NhcGluZy5cbiAqKi9cblJlbmRlcmVyLnByb3RvdHlwZS5yZW5kZXJJbmxpbmVBc1RleHQgPSBmdW5jdGlvbiAodG9rZW5zLCBvcHRpb25zLCBlbnYpIHtcbiAgbGV0IHJlc3VsdCA9ICcnXG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIHN3aXRjaCAodG9rZW5zW2ldLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICByZXN1bHQgKz0gdG9rZW5zW2ldLmNvbnRlbnRcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgcmVzdWx0ICs9IHRoaXMucmVuZGVySW5saW5lQXNUZXh0KHRva2Vuc1tpXS5jaGlsZHJlbiwgb3B0aW9ucywgZW52KVxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnaHRtbF9pbmxpbmUnOlxuICAgICAgY2FzZSAnaHRtbF9ibG9jayc6XG4gICAgICAgIHJlc3VsdCArPSB0b2tlbnNbaV0uY29udGVudFxuICAgICAgICBicmVha1xuICAgICAgY2FzZSAnc29mdGJyZWFrJzpcbiAgICAgIGNhc2UgJ2hhcmRicmVhayc6XG4gICAgICAgIHJlc3VsdCArPSAnXFxuJ1xuICAgICAgICBicmVha1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gYWxsIG90aGVyIHRva2VucyBhcmUgc2tpcHBlZFxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBSZW5kZXJlci5yZW5kZXIodG9rZW5zLCBvcHRpb25zLCBlbnYpIC0+IFN0cmluZ1xuICogLSB0b2tlbnMgKEFycmF5KTogbGlzdCBvbiBibG9jayB0b2tlbnMgdG8gcmVuZGVyXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHBhcmFtcyBvZiBwYXJzZXIgaW5zdGFuY2VcbiAqIC0gZW52IChPYmplY3QpOiBhZGRpdGlvbmFsIGRhdGEgZnJvbSBwYXJzZWQgaW5wdXQgKHJlZmVyZW5jZXMsIGZvciBleGFtcGxlKVxuICpcbiAqIFRha2VzIHRva2VuIHN0cmVhbSBhbmQgZ2VuZXJhdGVzIEhUTUwuIFByb2JhYmx5LCB5b3Ugd2lsbCBuZXZlciBuZWVkIHRvIGNhbGxcbiAqIHRoaXMgbWV0aG9kIGRpcmVjdGx5LlxuICoqL1xuUmVuZGVyZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICh0b2tlbnMsIG9wdGlvbnMsIGVudikge1xuICBsZXQgcmVzdWx0ID0gJydcbiAgY29uc3QgcnVsZXMgPSB0aGlzLnJ1bGVzXG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHRva2Vucy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgIGNvbnN0IHR5cGUgPSB0b2tlbnNbaV0udHlwZVxuXG4gICAgaWYgKHR5cGUgPT09ICdpbmxpbmUnKSB7XG4gICAgICByZXN1bHQgKz0gdGhpcy5yZW5kZXJJbmxpbmUodG9rZW5zW2ldLmNoaWxkcmVuLCBvcHRpb25zLCBlbnYpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcnVsZXNbdHlwZV0gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICByZXN1bHQgKz0gcnVsZXNbdHlwZV0odG9rZW5zLCBpLCBvcHRpb25zLCBlbnYsIHRoaXMpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3VsdCArPSB0aGlzLnJlbmRlclRva2VuKHRva2VucywgaSwgb3B0aW9ucywgZW52KVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgUmVuZGVyZXJcbiIsICIvKipcbiAqIGNsYXNzIFJ1bGVyXG4gKlxuICogSGVscGVyIGNsYXNzLCB1c2VkIGJ5IFtbTWFya2Rvd25JdCNjb3JlXV0sIFtbTWFya2Rvd25JdCNibG9ja11dIGFuZFxuICogW1tNYXJrZG93bkl0I2lubGluZV1dIHRvIG1hbmFnZSBzZXF1ZW5jZXMgb2YgZnVuY3Rpb25zIChydWxlcyk6XG4gKlxuICogLSBrZWVwIHJ1bGVzIGluIGRlZmluZWQgb3JkZXJcbiAqIC0gYXNzaWduIHRoZSBuYW1lIHRvIGVhY2ggcnVsZVxuICogLSBlbmFibGUvZGlzYWJsZSBydWxlc1xuICogLSBhZGQvcmVwbGFjZSBydWxlc1xuICogLSBhbGxvdyBhc3NpZ24gcnVsZXMgdG8gYWRkaXRpb25hbCBuYW1lZCBjaGFpbnMgKGluIHRoZSBzYW1lKVxuICogLSBjYWNoZWluZyBsaXN0cyBvZiBhY3RpdmUgcnVsZXNcbiAqXG4gKiBZb3Ugd2lsbCBub3QgbmVlZCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSB1bnRpbCB3cml0ZSBwbHVnaW5zLiBGb3Igc2ltcGxlXG4gKiBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dLCBbW01hcmtkb3duSXQuZW5hYmxlXV0gYW5kXG4gKiBbW01hcmtkb3duSXQudXNlXV0uXG4gKiovXG5cbi8qKlxuICogbmV3IFJ1bGVyKClcbiAqKi9cbmZ1bmN0aW9uIFJ1bGVyICgpIHtcbiAgLy8gTGlzdCBvZiBhZGRlZCBydWxlcy4gRWFjaCBlbGVtZW50IGlzOlxuICAvL1xuICAvLyB7XG4gIC8vICAgbmFtZTogWFhYLFxuICAvLyAgIGVuYWJsZWQ6IEJvb2xlYW4sXG4gIC8vICAgZm46IEZ1bmN0aW9uKCksXG4gIC8vICAgYWx0OiBbIG5hbWUyLCBuYW1lMyBdXG4gIC8vIH1cbiAgLy9cbiAgdGhpcy5fX3J1bGVzX18gPSBbXVxuXG4gIC8vIENhY2hlZCBydWxlIGNoYWlucy5cbiAgLy9cbiAgLy8gRmlyc3QgbGV2ZWwgLSBjaGFpbiBuYW1lLCAnJyBmb3IgZGVmYXVsdC5cbiAgLy8gU2Vjb25kIGxldmVsIC0gZGlnaW5hbCBhbmNob3IgZm9yIGZhc3QgZmlsdGVyaW5nIGJ5IGNoYXJjb2Rlcy5cbiAgLy9cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsXG59XG5cbi8vIEhlbHBlciBtZXRob2RzLCBzaG91bGQgbm90IGJlIHVzZWQgZGlyZWN0bHlcblxuLy8gRmluZCBydWxlIGluZGV4IGJ5IG5hbWVcbi8vXG5SdWxlci5wcm90b3R5cGUuX19maW5kX18gPSBmdW5jdGlvbiAobmFtZSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuX19ydWxlc19fLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRoaXMuX19ydWxlc19fW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgIHJldHVybiBpXG4gICAgfVxuICB9XG4gIHJldHVybiAtMVxufVxuXG4vLyBCdWlsZCBydWxlcyBsb29rdXAgY2FjaGVcbi8vXG5SdWxlci5wcm90b3R5cGUuX19jb21waWxlX18gPSBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHNlbGYgPSB0aGlzXG4gIGNvbnN0IGNoYWlucyA9IFsnJ11cblxuICAvLyBjb2xsZWN0IHVuaXF1ZSBuYW1lc1xuICBzZWxmLl9fcnVsZXNfXy5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7XG4gICAgaWYgKCFydWxlLmVuYWJsZWQpIHsgcmV0dXJuIH1cblxuICAgIHJ1bGUuYWx0LmZvckVhY2goZnVuY3Rpb24gKGFsdE5hbWUpIHtcbiAgICAgIGlmIChjaGFpbnMuaW5kZXhPZihhbHROYW1lKSA8IDApIHtcbiAgICAgICAgY2hhaW5zLnB1c2goYWx0TmFtZSlcbiAgICAgIH1cbiAgICB9KVxuICB9KVxuXG4gIHNlbGYuX19jYWNoZV9fID0ge31cblxuICBjaGFpbnMuZm9yRWFjaChmdW5jdGlvbiAoY2hhaW4pIHtcbiAgICBzZWxmLl9fY2FjaGVfX1tjaGFpbl0gPSBbXVxuICAgIHNlbGYuX19ydWxlc19fLmZvckVhY2goZnVuY3Rpb24gKHJ1bGUpIHtcbiAgICAgIGlmICghcnVsZS5lbmFibGVkKSB7IHJldHVybiB9XG5cbiAgICAgIGlmIChjaGFpbiAmJiBydWxlLmFsdC5pbmRleE9mKGNoYWluKSA8IDApIHsgcmV0dXJuIH1cblxuICAgICAgc2VsZi5fX2NhY2hlX19bY2hhaW5dLnB1c2gocnVsZS5mbilcbiAgICB9KVxuICB9KVxufVxuXG4vKipcbiAqIFJ1bGVyLmF0KG5hbWUsIGZuIFssIG9wdGlvbnNdKVxuICogLSBuYW1lIChTdHJpbmcpOiBydWxlIG5hbWUgdG8gcmVwbGFjZS5cbiAqIC0gZm4gKEZ1bmN0aW9uKTogbmV3IHJ1bGUgZnVuY3Rpb24uXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IG5ldyBydWxlIG9wdGlvbnMgKG5vdCBtYW5kYXRvcnkpLlxuICpcbiAqIFJlcGxhY2UgcnVsZSBieSBuYW1lIHdpdGggbmV3IGZ1bmN0aW9uICYgb3B0aW9ucy4gVGhyb3dzIGVycm9yIGlmIG5hbWUgbm90XG4gKiBmb3VuZC5cbiAqXG4gKiAjIyMjIyBPcHRpb25zOlxuICpcbiAqIC0gX19hbHRfXyAtIGFycmF5IHdpdGggbmFtZXMgb2YgXCJhbHRlcm5hdGVcIiBjaGFpbnMuXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIFJlcGxhY2UgZXhpc3RpbmcgdHlwb2dyYXBoZXIgcmVwbGFjZW1lbnQgcnVsZSB3aXRoIG5ldyBvbmU6XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICpcbiAqIG1kLmNvcmUucnVsZXIuYXQoJ3JlcGxhY2VtZW50cycsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiAobmFtZSwgZm4sIG9wdGlvbnMpIHtcbiAgY29uc3QgaW5kZXggPSB0aGlzLl9fZmluZF9fKG5hbWUpXG4gIGNvbnN0IG9wdCA9IG9wdGlvbnMgfHwge31cblxuICBpZiAoaW5kZXggPT09IC0xKSB7IHRocm93IG5ldyBFcnJvcignUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiAnICsgbmFtZSkgfVxuXG4gIHRoaXMuX19ydWxlc19fW2luZGV4XS5mbiA9IGZuXG4gIHRoaXMuX19ydWxlc19fW2luZGV4XS5hbHQgPSBvcHQuYWx0IHx8IFtdXG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbFxufVxuXG4vKipcbiAqIFJ1bGVyLmJlZm9yZShiZWZvcmVOYW1lLCBydWxlTmFtZSwgZm4gWywgb3B0aW9uc10pXG4gKiAtIGJlZm9yZU5hbWUgKFN0cmluZyk6IG5ldyBydWxlIHdpbGwgYmUgYWRkZWQgYmVmb3JlIHRoaXMgb25lLlxuICogLSBydWxlTmFtZSAoU3RyaW5nKTogbmFtZSBvZiBhZGRlZCBydWxlLlxuICogLSBmbiAoRnVuY3Rpb24pOiBydWxlIGZ1bmN0aW9uLlxuICogLSBvcHRpb25zIChPYmplY3QpOiBydWxlIG9wdGlvbnMgKG5vdCBtYW5kYXRvcnkpLlxuICpcbiAqIEFkZCBuZXcgcnVsZSB0byBjaGFpbiBiZWZvcmUgb25lIHdpdGggZ2l2ZW4gbmFtZS4gU2VlIGFsc29cbiAqIFtbUnVsZXIuYWZ0ZXJdXSwgW1tSdWxlci5wdXNoXV0uXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogbWQuYmxvY2sucnVsZXIuYmVmb3JlKCdwYXJhZ3JhcGgnLCAnbXlfcnVsZScsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUuYmVmb3JlID0gZnVuY3Rpb24gKGJlZm9yZU5hbWUsIHJ1bGVOYW1lLCBmbiwgb3B0aW9ucykge1xuICBjb25zdCBpbmRleCA9IHRoaXMuX19maW5kX18oYmVmb3JlTmFtZSlcbiAgY29uc3Qgb3B0ID0gb3B0aW9ucyB8fCB7fVxuXG4gIGlmIChpbmRleCA9PT0gLTEpIHsgdGhyb3cgbmV3IEVycm9yKCdQYXJzZXIgcnVsZSBub3QgZm91bmQ6ICcgKyBiZWZvcmVOYW1lKSB9XG5cbiAgdGhpcy5fX3J1bGVzX18uc3BsaWNlKGluZGV4LCAwLCB7XG4gICAgbmFtZTogcnVsZU5hbWUsXG4gICAgZW5hYmxlZDogdHJ1ZSxcbiAgICBmbixcbiAgICBhbHQ6IG9wdC5hbHQgfHwgW11cbiAgfSlcblxuICB0aGlzLl9fY2FjaGVfXyA9IG51bGxcbn1cblxuLyoqXG4gKiBSdWxlci5hZnRlcihhZnRlck5hbWUsIHJ1bGVOYW1lLCBmbiBbLCBvcHRpb25zXSlcbiAqIC0gYWZ0ZXJOYW1lIChTdHJpbmcpOiBuZXcgcnVsZSB3aWxsIGJlIGFkZGVkIGFmdGVyIHRoaXMgb25lLlxuICogLSBydWxlTmFtZSAoU3RyaW5nKTogbmFtZSBvZiBhZGRlZCBydWxlLlxuICogLSBmbiAoRnVuY3Rpb24pOiBydWxlIGZ1bmN0aW9uLlxuICogLSBvcHRpb25zIChPYmplY3QpOiBydWxlIG9wdGlvbnMgKG5vdCBtYW5kYXRvcnkpLlxuICpcbiAqIEFkZCBuZXcgcnVsZSB0byBjaGFpbiBhZnRlciBvbmUgd2l0aCBnaXZlbiBuYW1lLiBTZWUgYWxzb1xuICogW1tSdWxlci5iZWZvcmVdXSwgW1tSdWxlci5wdXNoXV0uXG4gKlxuICogIyMjIyMgT3B0aW9uczpcbiAqXG4gKiAtIF9fYWx0X18gLSBhcnJheSB3aXRoIG5hbWVzIG9mIFwiYWx0ZXJuYXRlXCIgY2hhaW5zLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gKlxuICogbWQuaW5saW5lLnJ1bGVyLmFmdGVyKCd0ZXh0JywgJ215X3J1bGUnLCBmdW5jdGlvbiByZXBsYWNlKHN0YXRlKSB7XG4gKiAgIC8vLi4uXG4gKiB9KTtcbiAqIGBgYFxuICoqL1xuUnVsZXIucHJvdG90eXBlLmFmdGVyID0gZnVuY3Rpb24gKGFmdGVyTmFtZSwgcnVsZU5hbWUsIGZuLCBvcHRpb25zKSB7XG4gIGNvbnN0IGluZGV4ID0gdGhpcy5fX2ZpbmRfXyhhZnRlck5hbWUpXG4gIGNvbnN0IG9wdCA9IG9wdGlvbnMgfHwge31cblxuICBpZiAoaW5kZXggPT09IC0xKSB7IHRocm93IG5ldyBFcnJvcignUGFyc2VyIHJ1bGUgbm90IGZvdW5kOiAnICsgYWZ0ZXJOYW1lKSB9XG5cbiAgdGhpcy5fX3J1bGVzX18uc3BsaWNlKGluZGV4ICsgMSwgMCwge1xuICAgIG5hbWU6IHJ1bGVOYW1lLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgZm4sXG4gICAgYWx0OiBvcHQuYWx0IHx8IFtdXG4gIH0pXG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsXG59XG5cbi8qKlxuICogUnVsZXIucHVzaChydWxlTmFtZSwgZm4gWywgb3B0aW9uc10pXG4gKiAtIHJ1bGVOYW1lIChTdHJpbmcpOiBuYW1lIG9mIGFkZGVkIHJ1bGUuXG4gKiAtIGZuIChGdW5jdGlvbik6IHJ1bGUgZnVuY3Rpb24uXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHJ1bGUgb3B0aW9ucyAobm90IG1hbmRhdG9yeSkuXG4gKlxuICogUHVzaCBuZXcgcnVsZSB0byB0aGUgZW5kIG9mIGNoYWluLiBTZWUgYWxzb1xuICogW1tSdWxlci5iZWZvcmVdXSwgW1tSdWxlci5hZnRlcl1dLlxuICpcbiAqICMjIyMjIE9wdGlvbnM6XG4gKlxuICogLSBfX2FsdF9fIC0gYXJyYXkgd2l0aCBuYW1lcyBvZiBcImFsdGVybmF0ZVwiIGNoYWlucy5cbiAqXG4gKiAjIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICpcbiAqIG1kLmNvcmUucnVsZXIucHVzaCgnbXlfcnVsZScsIGZ1bmN0aW9uIHJlcGxhY2Uoc3RhdGUpIHtcbiAqICAgLy8uLi5cbiAqIH0pO1xuICogYGBgXG4gKiovXG5SdWxlci5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChydWxlTmFtZSwgZm4sIG9wdGlvbnMpIHtcbiAgY29uc3Qgb3B0ID0gb3B0aW9ucyB8fCB7fVxuXG4gIHRoaXMuX19ydWxlc19fLnB1c2goe1xuICAgIG5hbWU6IHJ1bGVOYW1lLFxuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgZm4sXG4gICAgYWx0OiBvcHQuYWx0IHx8IFtdXG4gIH0pXG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsXG59XG5cbi8qKlxuICogUnVsZXIuZW5hYmxlKGxpc3QgWywgaWdub3JlSW52YWxpZF0pIC0+IEFycmF5XG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBlbmFibGUuXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBFbmFibGUgcnVsZXMgd2l0aCBnaXZlbiBuYW1lcy4gSWYgYW55IHJ1bGUgbmFtZSBub3QgZm91bmQgLSB0aHJvdyBFcnJvci5cbiAqIEVycm9ycyBjYW4gYmUgZGlzYWJsZWQgYnkgc2Vjb25kIHBhcmFtLlxuICpcbiAqIFJldHVybnMgbGlzdCBvZiBmb3VuZCBydWxlIG5hbWVzIChpZiBubyBleGNlcHRpb24gaGFwcGVuZWQpLlxuICpcbiAqIFNlZSBhbHNvIFtbUnVsZXIuZGlzYWJsZV1dLCBbW1J1bGVyLmVuYWJsZU9ubHldXS5cbiAqKi9cblJ1bGVyLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAobGlzdCwgaWdub3JlSW52YWxpZCkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHsgbGlzdCA9IFtsaXN0XSB9XG5cbiAgY29uc3QgcmVzdWx0ID0gW11cblxuICAvLyBTZWFyY2ggYnkgbmFtZSBhbmQgZW5hYmxlXG4gIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMuX19maW5kX18obmFtZSlcblxuICAgIGlmIChpZHggPCAwKSB7XG4gICAgICBpZiAoaWdub3JlSW52YWxpZCkgeyByZXR1cm4gfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlcyBtYW5hZ2VyOiBpbnZhbGlkIHJ1bGUgbmFtZSAnICsgbmFtZSlcbiAgICB9XG4gICAgdGhpcy5fX3J1bGVzX19baWR4XS5lbmFibGVkID0gdHJ1ZVxuICAgIHJlc3VsdC5wdXNoKG5hbWUpXG4gIH0sIHRoaXMpXG5cbiAgdGhpcy5fX2NhY2hlX18gPSBudWxsXG4gIHJldHVybiByZXN1bHRcbn1cblxuLyoqXG4gKiBSdWxlci5lbmFibGVPbmx5KGxpc3QgWywgaWdub3JlSW52YWxpZF0pXG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBlbmFibGUgKHdoaXRlbGlzdCkuXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBFbmFibGUgcnVsZXMgd2l0aCBnaXZlbiBuYW1lcywgYW5kIGRpc2FibGUgZXZlcnl0aGluZyBlbHNlLiBJZiBhbnkgcnVsZSBuYW1lXG4gKiBub3QgZm91bmQgLSB0aHJvdyBFcnJvci4gRXJyb3JzIGNhbiBiZSBkaXNhYmxlZCBieSBzZWNvbmQgcGFyYW0uXG4gKlxuICogU2VlIGFsc28gW1tSdWxlci5kaXNhYmxlXV0sIFtbUnVsZXIuZW5hYmxlXV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZW5hYmxlT25seSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gW2xpc3RdIH1cblxuICB0aGlzLl9fcnVsZXNfXy5mb3JFYWNoKGZ1bmN0aW9uIChydWxlKSB7IHJ1bGUuZW5hYmxlZCA9IGZhbHNlIH0pXG5cbiAgdGhpcy5lbmFibGUobGlzdCwgaWdub3JlSW52YWxpZClcbn1cblxuLyoqXG4gKiBSdWxlci5kaXNhYmxlKGxpc3QgWywgaWdub3JlSW52YWxpZF0pIC0+IEFycmF5XG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IGxpc3Qgb2YgcnVsZSBuYW1lcyB0byBkaXNhYmxlLlxuICogLSBpZ25vcmVJbnZhbGlkIChCb29sZWFuKTogc2V0IGB0cnVlYCB0byBpZ25vcmUgZXJyb3JzIHdoZW4gcnVsZSBub3QgZm91bmQuXG4gKlxuICogRGlzYWJsZSBydWxlcyB3aXRoIGdpdmVuIG5hbWVzLiBJZiBhbnkgcnVsZSBuYW1lIG5vdCBmb3VuZCAtIHRocm93IEVycm9yLlxuICogRXJyb3JzIGNhbiBiZSBkaXNhYmxlZCBieSBzZWNvbmQgcGFyYW0uXG4gKlxuICogUmV0dXJucyBsaXN0IG9mIGZvdW5kIHJ1bGUgbmFtZXMgKGlmIG5vIGV4Y2VwdGlvbiBoYXBwZW5lZCkuXG4gKlxuICogU2VlIGFsc28gW1tSdWxlci5lbmFibGVdXSwgW1tSdWxlci5lbmFibGVPbmx5XV0uXG4gKiovXG5SdWxlci5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uIChsaXN0LCBpZ25vcmVJbnZhbGlkKSB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgeyBsaXN0ID0gW2xpc3RdIH1cblxuICBjb25zdCByZXN1bHQgPSBbXVxuXG4gIC8vIFNlYXJjaCBieSBuYW1lIGFuZCBkaXNhYmxlXG4gIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIGNvbnN0IGlkeCA9IHRoaXMuX19maW5kX18obmFtZSlcblxuICAgIGlmIChpZHggPCAwKSB7XG4gICAgICBpZiAoaWdub3JlSW52YWxpZCkgeyByZXR1cm4gfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlcyBtYW5hZ2VyOiBpbnZhbGlkIHJ1bGUgbmFtZSAnICsgbmFtZSlcbiAgICB9XG4gICAgdGhpcy5fX3J1bGVzX19baWR4XS5lbmFibGVkID0gZmFsc2VcbiAgICByZXN1bHQucHVzaChuYW1lKVxuICB9LCB0aGlzKVxuXG4gIHRoaXMuX19jYWNoZV9fID0gbnVsbFxuICByZXR1cm4gcmVzdWx0XG59XG5cbi8qKlxuICogUnVsZXIuZ2V0UnVsZXMoY2hhaW5OYW1lKSAtPiBBcnJheVxuICpcbiAqIFJldHVybiBhcnJheSBvZiBhY3RpdmUgZnVuY3Rpb25zIChydWxlcykgZm9yIGdpdmVuIGNoYWluIG5hbWUuIEl0IGFuYWx5emVzXG4gKiBydWxlcyBjb25maWd1cmF0aW9uLCBjb21waWxlcyBjYWNoZXMgaWYgbm90IGV4aXN0cyBhbmQgcmV0dXJucyByZXN1bHQuXG4gKlxuICogRGVmYXVsdCBjaGFpbiBuYW1lIGlzIGAnJ2AgKGVtcHR5IHN0cmluZykuIEl0IGNhbid0IGJlIHNraXBwZWQuIFRoYXQnc1xuICogZG9uZSBpbnRlbnRpb25hbGx5LCB0byBrZWVwIHNpZ25hdHVyZSBtb25vbW9ycGhpYyBmb3IgaGlnaCBzcGVlZC5cbiAqKi9cblJ1bGVyLnByb3RvdHlwZS5nZXRSdWxlcyA9IGZ1bmN0aW9uIChjaGFpbk5hbWUpIHtcbiAgaWYgKHRoaXMuX19jYWNoZV9fID09PSBudWxsKSB7XG4gICAgdGhpcy5fX2NvbXBpbGVfXygpXG4gIH1cblxuICAvLyBDaGFpbiBjYW4gYmUgZW1wdHksIGlmIHJ1bGVzIGRpc2FibGVkLiBCdXQgd2Ugc3RpbGwgaGF2ZSB0byByZXR1cm4gQXJyYXkuXG4gIHJldHVybiB0aGlzLl9fY2FjaGVfX1tjaGFpbk5hbWVdIHx8IFtdXG59XG5cbmV4cG9ydCBkZWZhdWx0IFJ1bGVyXG4iLCAiLy8gVG9rZW4gY2xhc3NcblxuLyoqXG4gKiBjbGFzcyBUb2tlblxuICoqL1xuXG4vKipcbiAqIG5ldyBUb2tlbih0eXBlLCB0YWcsIG5lc3RpbmcpXG4gKlxuICogQ3JlYXRlIG5ldyB0b2tlbiBhbmQgZmlsbCBwYXNzZWQgcHJvcGVydGllcy5cbiAqKi9cbmZ1bmN0aW9uIFRva2VuICh0eXBlLCB0YWcsIG5lc3RpbmcpIHtcbiAgLyoqXG4gICAqIFRva2VuI3R5cGUgLT4gU3RyaW5nXG4gICAqXG4gICAqIFR5cGUgb2YgdGhlIHRva2VuIChzdHJpbmcsIGUuZy4gXCJwYXJhZ3JhcGhfb3BlblwiKVxuICAgKiovXG4gIHRoaXMudHlwZSAgICAgPSB0eXBlXG5cbiAgLyoqXG4gICAqIFRva2VuI3RhZyAtPiBTdHJpbmdcbiAgICpcbiAgICogaHRtbCB0YWcgbmFtZSwgZS5nLiBcInBcIlxuICAgKiovXG4gIHRoaXMudGFnICAgICAgPSB0YWdcblxuICAvKipcbiAgICogVG9rZW4jYXR0cnMgLT4gQXJyYXlcbiAgICpcbiAgICogSHRtbCBhdHRyaWJ1dGVzLiBGb3JtYXQ6IGBbIFsgbmFtZTEsIHZhbHVlMSBdLCBbIG5hbWUyLCB2YWx1ZTIgXSBdYFxuICAgKiovXG4gIHRoaXMuYXR0cnMgICAgPSBudWxsXG5cbiAgLyoqXG4gICAqIFRva2VuI21hcCAtPiBBcnJheVxuICAgKlxuICAgKiBTb3VyY2UgbWFwIGluZm8uIEZvcm1hdDogYFsgbGluZV9iZWdpbiwgbGluZV9lbmQgXWBcbiAgICoqL1xuICB0aGlzLm1hcCAgICAgID0gbnVsbFxuXG4gIC8qKlxuICAgKiBUb2tlbiNuZXN0aW5nIC0+IE51bWJlclxuICAgKlxuICAgKiBMZXZlbCBjaGFuZ2UgKG51bWJlciBpbiB7LTEsIDAsIDF9IHNldCksIHdoZXJlOlxuICAgKlxuICAgKiAtICBgMWAgbWVhbnMgdGhlIHRhZyBpcyBvcGVuaW5nXG4gICAqIC0gIGAwYCBtZWFucyB0aGUgdGFnIGlzIHNlbGYtY2xvc2luZ1xuICAgKiAtIGAtMWAgbWVhbnMgdGhlIHRhZyBpcyBjbG9zaW5nXG4gICAqKi9cbiAgdGhpcy5uZXN0aW5nICA9IG5lc3RpbmdcblxuICAvKipcbiAgICogVG9rZW4jbGV2ZWwgLT4gTnVtYmVyXG4gICAqXG4gICAqIG5lc3RpbmcgbGV2ZWwsIHRoZSBzYW1lIGFzIGBzdGF0ZS5sZXZlbGBcbiAgICoqL1xuICB0aGlzLmxldmVsICAgID0gMFxuXG4gIC8qKlxuICAgKiBUb2tlbiNjaGlsZHJlbiAtPiBBcnJheVxuICAgKlxuICAgKiBBbiBhcnJheSBvZiBjaGlsZCBub2RlcyAoaW5saW5lIGFuZCBpbWcgdG9rZW5zKVxuICAgKiovXG4gIHRoaXMuY2hpbGRyZW4gPSBudWxsXG5cbiAgLyoqXG4gICAqIFRva2VuI2NvbnRlbnQgLT4gU3RyaW5nXG4gICAqXG4gICAqIEluIGEgY2FzZSBvZiBzZWxmLWNsb3NpbmcgdGFnIChjb2RlLCBodG1sLCBmZW5jZSwgZXRjLiksXG4gICAqIGl0IGhhcyBjb250ZW50cyBvZiB0aGlzIHRhZy5cbiAgICoqL1xuICB0aGlzLmNvbnRlbnQgID0gJydcblxuICAvKipcbiAgICogVG9rZW4jbWFya3VwIC0+IFN0cmluZ1xuICAgKlxuICAgKiAnKicgb3IgJ18nIGZvciBlbXBoYXNpcywgZmVuY2Ugc3RyaW5nIGZvciBmZW5jZSwgZXRjLlxuICAgKiovXG4gIHRoaXMubWFya3VwICAgPSAnJ1xuXG4gIC8qKlxuICAgKiBUb2tlbiNpbmZvIC0+IFN0cmluZ1xuICAgKlxuICAgKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uOlxuICAgKlxuICAgKiAtIEluZm8gc3RyaW5nIGZvciBcImZlbmNlXCIgdG9rZW5zXG4gICAqIC0gVGhlIHZhbHVlIFwiYXV0b1wiIGZvciBhdXRvbGluayBcImxpbmtfb3BlblwiIGFuZCBcImxpbmtfY2xvc2VcIiB0b2tlbnNcbiAgICogLSBUaGUgc3RyaW5nIHZhbHVlIG9mIHRoZSBpdGVtIG1hcmtlciBmb3Igb3JkZXJlZC1saXN0IFwibGlzdF9pdGVtX29wZW5cIiB0b2tlbnNcbiAgICoqL1xuICB0aGlzLmluZm8gICAgID0gJydcblxuICAvKipcbiAgICogVG9rZW4jbWV0YSAtPiBPYmplY3RcbiAgICpcbiAgICogQSBwbGFjZSBmb3IgcGx1Z2lucyB0byBzdG9yZSBhbiBhcmJpdHJhcnkgZGF0YVxuICAgKiovXG4gIHRoaXMubWV0YSAgICAgPSBudWxsXG5cbiAgLyoqXG4gICAqIFRva2VuI2Jsb2NrIC0+IEJvb2xlYW5cbiAgICpcbiAgICogVHJ1ZSBmb3IgYmxvY2stbGV2ZWwgdG9rZW5zLCBmYWxzZSBmb3IgaW5saW5lIHRva2Vucy5cbiAgICogVXNlZCBpbiByZW5kZXJlciB0byBjYWxjdWxhdGUgbGluZSBicmVha3NcbiAgICoqL1xuICB0aGlzLmJsb2NrICAgID0gZmFsc2VcblxuICAvKipcbiAgICogVG9rZW4jaGlkZGVuIC0+IEJvb2xlYW5cbiAgICpcbiAgICogSWYgaXQncyB0cnVlLCBpZ25vcmUgdGhpcyBlbGVtZW50IHdoZW4gcmVuZGVyaW5nLiBVc2VkIGZvciB0aWdodCBsaXN0c1xuICAgKiB0byBoaWRlIHBhcmFncmFwaHMuXG4gICAqKi9cbiAgdGhpcy5oaWRkZW4gICA9IGZhbHNlXG59XG5cbi8qKlxuICogVG9rZW4uYXR0ckluZGV4KG5hbWUpIC0+IE51bWJlclxuICpcbiAqIFNlYXJjaCBhdHRyaWJ1dGUgaW5kZXggYnkgbmFtZS5cbiAqKi9cblRva2VuLnByb3RvdHlwZS5hdHRySW5kZXggPSBmdW5jdGlvbiBhdHRySW5kZXggKG5hbWUpIHtcbiAgaWYgKCF0aGlzLmF0dHJzKSB7IHJldHVybiAtMSB9XG5cbiAgY29uc3QgYXR0cnMgPSB0aGlzLmF0dHJzXG5cbiAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGF0dHJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgaWYgKGF0dHJzW2ldWzBdID09PSBuYW1lKSB7IHJldHVybiBpIH1cbiAgfVxuICByZXR1cm4gLTFcbn1cblxuLyoqXG4gKiBUb2tlbi5hdHRyUHVzaChhdHRyRGF0YSlcbiAqXG4gKiBBZGQgYFsgbmFtZSwgdmFsdWUgXWAgYXR0cmlidXRlIHRvIGxpc3QuIEluaXQgYXR0cnMgaWYgbmVjZXNzYXJ5XG4gKiovXG5Ub2tlbi5wcm90b3R5cGUuYXR0clB1c2ggPSBmdW5jdGlvbiBhdHRyUHVzaCAoYXR0ckRhdGEpIHtcbiAgaWYgKHRoaXMuYXR0cnMpIHtcbiAgICB0aGlzLmF0dHJzLnB1c2goYXR0ckRhdGEpXG4gIH0gZWxzZSB7XG4gICAgdGhpcy5hdHRycyA9IFthdHRyRGF0YV1cbiAgfVxufVxuXG4vKipcbiAqIFRva2VuLmF0dHJTZXQobmFtZSwgdmFsdWUpXG4gKlxuICogU2V0IGBuYW1lYCBhdHRyaWJ1dGUgdG8gYHZhbHVlYC4gT3ZlcnJpZGUgb2xkIHZhbHVlIGlmIGV4aXN0cy5cbiAqKi9cblRva2VuLnByb3RvdHlwZS5hdHRyU2V0ID0gZnVuY3Rpb24gYXR0clNldCAobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgaWR4ID0gdGhpcy5hdHRySW5kZXgobmFtZSlcbiAgY29uc3QgYXR0ckRhdGEgPSBbbmFtZSwgdmFsdWVdXG5cbiAgaWYgKGlkeCA8IDApIHtcbiAgICB0aGlzLmF0dHJQdXNoKGF0dHJEYXRhKVxuICB9IGVsc2Uge1xuICAgIHRoaXMuYXR0cnNbaWR4XSA9IGF0dHJEYXRhXG4gIH1cbn1cblxuLyoqXG4gKiBUb2tlbi5hdHRyR2V0KG5hbWUpXG4gKlxuICogR2V0IHRoZSB2YWx1ZSBvZiBhdHRyaWJ1dGUgYG5hbWVgLCBvciBudWxsIGlmIGl0IGRvZXMgbm90IGV4aXN0LlxuICoqL1xuVG9rZW4ucHJvdG90eXBlLmF0dHJHZXQgPSBmdW5jdGlvbiBhdHRyR2V0IChuYW1lKSB7XG4gIGNvbnN0IGlkeCA9IHRoaXMuYXR0ckluZGV4KG5hbWUpXG4gIGxldCB2YWx1ZSA9IG51bGxcbiAgaWYgKGlkeCA+PSAwKSB7XG4gICAgdmFsdWUgPSB0aGlzLmF0dHJzW2lkeF1bMV1cbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLyoqXG4gKiBUb2tlbi5hdHRySm9pbihuYW1lLCB2YWx1ZSlcbiAqXG4gKiBKb2luIHZhbHVlIHRvIGV4aXN0aW5nIGF0dHJpYnV0ZSB2aWEgc3BhY2UuIE9yIGNyZWF0ZSBuZXcgYXR0cmlidXRlIGlmIG5vdFxuICogZXhpc3RzLiBVc2VmdWwgdG8gb3BlcmF0ZSB3aXRoIHRva2VuIGNsYXNzZXMuXG4gKiovXG5Ub2tlbi5wcm90b3R5cGUuYXR0ckpvaW4gPSBmdW5jdGlvbiBhdHRySm9pbiAobmFtZSwgdmFsdWUpIHtcbiAgY29uc3QgaWR4ID0gdGhpcy5hdHRySW5kZXgobmFtZSlcblxuICBpZiAoaWR4IDwgMCkge1xuICAgIHRoaXMuYXR0clB1c2goW25hbWUsIHZhbHVlXSlcbiAgfSBlbHNlIHtcbiAgICB0aGlzLmF0dHJzW2lkeF1bMV0gPSB0aGlzLmF0dHJzW2lkeF1bMV0gKyAnICcgKyB2YWx1ZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFRva2VuXG4iLCAiLy8gQ29yZSBzdGF0ZSBvYmplY3Rcbi8vXG5cbmltcG9ydCBUb2tlbiBmcm9tICcuLi90b2tlbi5tanMnXG5cbmZ1bmN0aW9uIFN0YXRlQ29yZSAoc3JjLCBtZCwgZW52KSB7XG4gIHRoaXMuc3JjID0gc3JjXG4gIHRoaXMuZW52ID0gZW52XG4gIHRoaXMudG9rZW5zID0gW11cbiAgdGhpcy5pbmxpbmVNb2RlID0gZmFsc2VcbiAgdGhpcy5tZCA9IG1kIC8vIGxpbmsgdG8gcGFyc2VyIGluc3RhbmNlXG59XG5cbi8vIHJlLWV4cG9ydCBUb2tlbiBjbGFzcyB0byB1c2UgaW4gY29yZSBydWxlc1xuU3RhdGVDb3JlLnByb3RvdHlwZS5Ub2tlbiA9IFRva2VuXG5cbmV4cG9ydCBkZWZhdWx0IFN0YXRlQ29yZVxuIiwgIi8vIE5vcm1hbGl6ZSBpbnB1dCBzdHJpbmdcblxuLy8gaHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMjkvI2xpbmUtZW5kaW5nXG5jb25zdCBORVdMSU5FU19SRSAgPSAvXFxyXFxuP3xcXG4vZ1xuY29uc3QgTlVMTF9SRSAgICAgID0gL1xcMC9nXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vcm1hbGl6ZSAoc3RhdGUpIHtcbiAgbGV0IHN0clxuXG4gIC8vIE5vcm1hbGl6ZSBuZXdsaW5lc1xuICBzdHIgPSBzdGF0ZS5zcmMucmVwbGFjZShORVdMSU5FU19SRSwgJ1xcbicpXG5cbiAgLy8gUmVwbGFjZSBOVUxMIGNoYXJhY3RlcnNcbiAgc3RyID0gc3RyLnJlcGxhY2UoTlVMTF9SRSwgJ1xcdUZGRkQnKVxuXG4gIHN0YXRlLnNyYyA9IHN0clxufVxuIiwgImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJsb2NrIChzdGF0ZSkge1xuICBsZXQgdG9rZW5cblxuICBpZiAoc3RhdGUuaW5saW5lTW9kZSkge1xuICAgIHRva2VuICAgICAgICAgID0gbmV3IHN0YXRlLlRva2VuKCdpbmxpbmUnLCAnJywgMClcbiAgICB0b2tlbi5jb250ZW50ICA9IHN0YXRlLnNyY1xuICAgIHRva2VuLm1hcCAgICAgID0gWzAsIDFdXG4gICAgdG9rZW4uY2hpbGRyZW4gPSBbXVxuICAgIHN0YXRlLnRva2Vucy5wdXNoKHRva2VuKVxuICB9IGVsc2Uge1xuICAgIHN0YXRlLm1kLmJsb2NrLnBhcnNlKHN0YXRlLnNyYywgc3RhdGUubWQsIHN0YXRlLmVudiwgc3RhdGUudG9rZW5zKVxuICB9XG59XG4iLCAiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW5saW5lIChzdGF0ZSkge1xuICBjb25zdCB0b2tlbnMgPSBzdGF0ZS50b2tlbnNcblxuICAvLyBQYXJzZSBpbmxpbmVzXG4gIGZvciAobGV0IGkgPSAwLCBsID0gdG9rZW5zLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGNvbnN0IHRvayA9IHRva2Vuc1tpXVxuICAgIGlmICh0b2sudHlwZSA9PT0gJ2lubGluZScpIHtcbiAgICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZSh0b2suY29udGVudCwgc3RhdGUubWQsIHN0YXRlLmVudiwgdG9rLmNoaWxkcmVuKVxuICAgIH1cbiAgfVxufVxuIiwgIi8vIFJlcGxhY2UgbGluay1saWtlIHRleHRzIHdpdGggbGluayBub2Rlcy5cbi8vXG4vLyBDdXJyZW50bHkgcmVzdHJpY3RlZCBieSBgbWQudmFsaWRhdGVMaW5rKClgIHRvIGh0dHAvaHR0cHMvZnRwXG4vL1xuXG5pbXBvcnQgeyBhcnJheVJlcGxhY2VBdCB9IGZyb20gJy4uL2NvbW1vbi91dGlscy5tanMnXG5cbmZ1bmN0aW9uIGlzTGlua09wZW4gKHN0cikge1xuICByZXR1cm4gL148YVs+XFxzXS9pLnRlc3Qoc3RyKVxufVxuZnVuY3Rpb24gaXNMaW5rQ2xvc2UgKHN0cikge1xuICByZXR1cm4gL148XFwvYVxccyo+L2kudGVzdChzdHIpXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpbmtpZnkgKHN0YXRlKSB7XG4gIGNvbnN0IGJsb2NrVG9rZW5zID0gc3RhdGUudG9rZW5zXG5cbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLmxpbmtpZnkpIHsgcmV0dXJuIH1cblxuICBmb3IgKGxldCBqID0gMCwgbCA9IGJsb2NrVG9rZW5zLmxlbmd0aDsgaiA8IGw7IGorKykge1xuICAgIGlmIChibG9ja1Rva2Vuc1tqXS50eXBlICE9PSAnaW5saW5lJyB8fFxuICAgICAgICAhc3RhdGUubWQubGlua2lmeS5wcmV0ZXN0KGJsb2NrVG9rZW5zW2pdLmNvbnRlbnQpKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGxldCB0b2tlbnMgPSBibG9ja1Rva2Vuc1tqXS5jaGlsZHJlblxuXG4gICAgbGV0IGh0bWxMaW5rTGV2ZWwgPSAwXG5cbiAgICAvLyBXZSBzY2FuIGZyb20gdGhlIGVuZCwgdG8ga2VlcCBwb3NpdGlvbiB3aGVuIG5ldyB0YWdzIGFkZGVkLlxuICAgIC8vIFVzZSByZXZlcnNlZCBsb2dpYyBpbiBsaW5rcyBzdGFydC9lbmQgbWF0Y2hcbiAgICBmb3IgKGxldCBpID0gdG9rZW5zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBjdXJyZW50VG9rZW4gPSB0b2tlbnNbaV1cblxuICAgICAgLy8gU2tpcCBjb250ZW50IG9mIG1hcmtkb3duIGxpbmtzXG4gICAgICBpZiAoY3VycmVudFRva2VuLnR5cGUgPT09ICdsaW5rX2Nsb3NlJykge1xuICAgICAgICBpLS1cbiAgICAgICAgd2hpbGUgKHRva2Vuc1tpXS5sZXZlbCAhPT0gY3VycmVudFRva2VuLmxldmVsICYmIHRva2Vuc1tpXS50eXBlICE9PSAnbGlua19vcGVuJykge1xuICAgICAgICAgIGktLVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFNraXAgY29udGVudCBvZiBodG1sIHRhZyBsaW5rc1xuICAgICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlID09PSAnaHRtbF9pbmxpbmUnKSB7XG4gICAgICAgIGlmIChpc0xpbmtPcGVuKGN1cnJlbnRUb2tlbi5jb250ZW50KSAmJiBodG1sTGlua0xldmVsID4gMCkge1xuICAgICAgICAgIGh0bWxMaW5rTGV2ZWwtLVxuICAgICAgICB9XG4gICAgICAgIGlmIChpc0xpbmtDbG9zZShjdXJyZW50VG9rZW4uY29udGVudCkpIHtcbiAgICAgICAgICBodG1sTGlua0xldmVsKytcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGh0bWxMaW5rTGV2ZWwgPiAwKSB7IGNvbnRpbnVlIH1cblxuICAgICAgaWYgKGN1cnJlbnRUb2tlbi50eXBlID09PSAndGV4dCcgJiYgc3RhdGUubWQubGlua2lmeS50ZXN0KGN1cnJlbnRUb2tlbi5jb250ZW50KSkge1xuICAgICAgICBjb25zdCB0ZXh0ID0gY3VycmVudFRva2VuLmNvbnRlbnRcbiAgICAgICAgbGV0IGxpbmtzID0gc3RhdGUubWQubGlua2lmeS5tYXRjaCh0ZXh0KVxuXG4gICAgICAgIC8vIE5vdyBzcGxpdCBzdHJpbmcgdG8gbm9kZXNcbiAgICAgICAgY29uc3Qgbm9kZXMgPSBbXVxuICAgICAgICBsZXQgbGV2ZWwgPSBjdXJyZW50VG9rZW4ubGV2ZWxcbiAgICAgICAgbGV0IGxhc3RQb3MgPSAwXG5cbiAgICAgICAgLy8gZm9yYmlkIGVzY2FwZSBzZXF1ZW5jZSBhdCB0aGUgc3RhcnQgb2YgdGhlIHN0cmluZyxcbiAgICAgICAgLy8gdGhpcyBhdm9pZHMgaHR0cFxcOi8vZXhhbXBsZS5jb20vIGZyb20gYmVpbmcgbGlua2lmaWVkIGFzXG4gICAgICAgIC8vIGh0dHA6PGEgaHJlZj1cIi8vZXhhbXBsZS5jb20vXCI+Ly9leGFtcGxlLmNvbS88L2E+XG4gICAgICAgIGlmIChsaW5rcy5sZW5ndGggPiAwICYmXG4gICAgICAgICAgICBsaW5rc1swXS5pbmRleCA9PT0gMCAmJlxuICAgICAgICAgICAgaSA+IDAgJiZcbiAgICAgICAgICAgIHRva2Vuc1tpIC0gMV0udHlwZSA9PT0gJ3RleHRfc3BlY2lhbCcpIHtcbiAgICAgICAgICBsaW5rcyA9IGxpbmtzLnNsaWNlKDEpXG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBsbiA9IDA7IGxuIDwgbGlua3MubGVuZ3RoOyBsbisrKSB7XG4gICAgICAgICAgY29uc3QgdXJsID0gbGlua3NbbG5dLnVybFxuICAgICAgICAgIGNvbnN0IGZ1bGxVcmwgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKHVybClcbiAgICAgICAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkgeyBjb250aW51ZSB9XG5cbiAgICAgICAgICBsZXQgdXJsVGV4dCA9IGxpbmtzW2xuXS50ZXh0XG5cbiAgICAgICAgICAvLyBMaW5raWZpZXIgbWlnaHQgc2VuZCByYXcgaG9zdG5hbWVzIGxpa2UgXCJleGFtcGxlLmNvbVwiLCB3aGVyZSB1cmxcbiAgICAgICAgICAvLyBzdGFydHMgd2l0aCBkb21haW4gbmFtZS4gU28gd2UgcHJlcGVuZCBodHRwOi8vIGluIHRob3NlIGNhc2VzLFxuICAgICAgICAgIC8vIGFuZCByZW1vdmUgaXQgYWZ0ZXJ3YXJkcy5cbiAgICAgICAgICAvL1xuICAgICAgICAgIGlmICghbGlua3NbbG5dLnNjaGVtYSkge1xuICAgICAgICAgICAgdXJsVGV4dCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KCdodHRwOi8vJyArIHVybFRleHQpLnJlcGxhY2UoL15odHRwOlxcL1xcLy8sICcnKVxuICAgICAgICAgIH0gZWxzZSBpZiAobGlua3NbbG5dLnNjaGVtYSA9PT0gJ21haWx0bzonICYmICEvXm1haWx0bzovaS50ZXN0KHVybFRleHQpKSB7XG4gICAgICAgICAgICB1cmxUZXh0ID0gc3RhdGUubWQubm9ybWFsaXplTGlua1RleHQoJ21haWx0bzonICsgdXJsVGV4dCkucmVwbGFjZSgvXm1haWx0bzovLCAnJylcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdXJsVGV4dCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybFRleHQpXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcG9zID0gbGlua3NbbG5dLmluZGV4XG5cbiAgICAgICAgICBpZiAocG9zID4gbGFzdFBvcykge1xuICAgICAgICAgICAgY29uc3QgdG9rZW4gICA9IG5ldyBzdGF0ZS5Ub2tlbigndGV4dCcsICcnLCAwKVxuICAgICAgICAgICAgdG9rZW4uY29udGVudCA9IHRleHQuc2xpY2UobGFzdFBvcywgcG9zKVxuICAgICAgICAgICAgdG9rZW4ubGV2ZWwgICA9IGxldmVsXG4gICAgICAgICAgICBub2Rlcy5wdXNoKHRva2VuKVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHRva2VuX28gICA9IG5ldyBzdGF0ZS5Ub2tlbignbGlua19vcGVuJywgJ2EnLCAxKVxuICAgICAgICAgIHRva2VuX28uYXR0cnMgICA9IFtbJ2hyZWYnLCBmdWxsVXJsXV1cbiAgICAgICAgICB0b2tlbl9vLmxldmVsICAgPSBsZXZlbCsrXG4gICAgICAgICAgdG9rZW5fby5tYXJrdXAgID0gJ2xpbmtpZnknXG4gICAgICAgICAgdG9rZW5fby5pbmZvICAgID0gJ2F1dG8nXG4gICAgICAgICAgbm9kZXMucHVzaCh0b2tlbl9vKVxuXG4gICAgICAgICAgY29uc3QgdG9rZW5fdCAgID0gbmV3IHN0YXRlLlRva2VuKCd0ZXh0JywgJycsIDApXG4gICAgICAgICAgdG9rZW5fdC5jb250ZW50ID0gdXJsVGV4dFxuICAgICAgICAgIHRva2VuX3QubGV2ZWwgICA9IGxldmVsXG4gICAgICAgICAgbm9kZXMucHVzaCh0b2tlbl90KVxuXG4gICAgICAgICAgY29uc3QgdG9rZW5fYyAgID0gbmV3IHN0YXRlLlRva2VuKCdsaW5rX2Nsb3NlJywgJ2EnLCAtMSlcbiAgICAgICAgICB0b2tlbl9jLmxldmVsICAgPSAtLWxldmVsXG4gICAgICAgICAgdG9rZW5fYy5tYXJrdXAgID0gJ2xpbmtpZnknXG4gICAgICAgICAgdG9rZW5fYy5pbmZvICAgID0gJ2F1dG8nXG4gICAgICAgICAgbm9kZXMucHVzaCh0b2tlbl9jKVxuXG4gICAgICAgICAgbGFzdFBvcyA9IGxpbmtzW2xuXS5sYXN0SW5kZXhcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdFBvcyA8IHRleHQubGVuZ3RoKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gICA9IG5ldyBzdGF0ZS5Ub2tlbigndGV4dCcsICcnLCAwKVxuICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSB0ZXh0LnNsaWNlKGxhc3RQb3MpXG4gICAgICAgICAgdG9rZW4ubGV2ZWwgICA9IGxldmVsXG4gICAgICAgICAgbm9kZXMucHVzaCh0b2tlbilcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHJlcGxhY2UgY3VycmVudCBub2RlXG4gICAgICAgIGJsb2NrVG9rZW5zW2pdLmNoaWxkcmVuID0gdG9rZW5zID0gYXJyYXlSZXBsYWNlQXQodG9rZW5zLCBpLCBub2RlcylcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsICIvLyBTaW1wbGUgdHlwb2dyYXBoaWMgcmVwbGFjZW1lbnRzXG4vL1xuLy8gKGMpIChDKSBcdTIxOTIgXHUwMEE5XG4vLyAodG0pIChUTSkgXHUyMTkyIFx1MjEyMlxuLy8gKHIpIChSKSBcdTIxOTIgXHUwMEFFXG4vLyArLSBcdTIxOTIgXHUwMEIxXG4vLyAuLi4gXHUyMTkyIFx1MjAyNiAoYWxzbyA/Li4uLiBcdTIxOTIgPy4uLCAhLi4uLiBcdTIxOTIgIS4uKVxuLy8gPz8/Pz8/Pz8gXHUyMTkyID8/PywgISEhISEgXHUyMTkyICEhISwgYCwsYCBcdTIxOTIgYCxgXG4vLyAtLSBcdTIxOTIgJm5kYXNoOywgLS0tIFx1MjE5MiAmbWRhc2g7XG4vL1xuXG4vLyBUT0RPOlxuLy8gLSBmcmFjdGlvbmFscyAxLzIsIDEvNCwgMy80IC0+IFx1MDBCRCwgXHUwMEJDLCBcdTAwQkVcbi8vIC0gbXVsdGlwbGljYXRpb25zIDIgeCA0IC0+IDIgXHUwMEQ3IDRcblxuY29uc3QgUkFSRV9SRSA9IC9cXCstfFxcLlxcLnxcXD9cXD9cXD9cXD98ISEhIXwsLHwtLS9cblxuLy8gV29ya2Fyb3VuZCBmb3IgcGhhbnRvbWpzIC0gbmVlZCByZWdleCB3aXRob3V0IC9nIGZsYWcsXG4vLyBvciByb290IGNoZWNrIHdpbGwgZmFpbCBldmVyeSBzZWNvbmQgdGltZVxuY29uc3QgU0NPUEVEX0FCQlJfVEVTVF9SRSA9IC9cXCgoY3x0bXxyKVxcKS9pXG5cbmNvbnN0IFNDT1BFRF9BQkJSX1JFID0gL1xcKChjfHRtfHIpXFwpL2lnXG5jb25zdCBTQ09QRURfQUJCUiA9IHtcbiAgYzogJ1x1MDBBOScsXG4gIHI6ICdcdTAwQUUnLFxuICB0bTogJ1x1MjEyMidcbn1cblxuZnVuY3Rpb24gcmVwbGFjZUZuIChtYXRjaCwgbmFtZSkge1xuICByZXR1cm4gU0NPUEVEX0FCQlJbbmFtZS50b0xvd2VyQ2FzZSgpXVxufVxuXG5mdW5jdGlvbiByZXBsYWNlX3Njb3BlZCAoaW5saW5lVG9rZW5zKSB7XG4gIGxldCBpbnNpZGVfYXV0b2xpbmsgPSAwXG5cbiAgZm9yIChsZXQgaSA9IGlubGluZVRva2Vucy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgIGNvbnN0IHRva2VuID0gaW5saW5lVG9rZW5zW2ldXG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ3RleHQnICYmICFpbnNpZGVfYXV0b2xpbmspIHtcbiAgICAgIHRva2VuLmNvbnRlbnQgPSB0b2tlbi5jb250ZW50LnJlcGxhY2UoU0NPUEVEX0FCQlJfUkUsIHJlcGxhY2VGbilcbiAgICB9XG5cbiAgICBpZiAodG9rZW4udHlwZSA9PT0gJ2xpbmtfb3BlbicgJiYgdG9rZW4uaW5mbyA9PT0gJ2F1dG8nKSB7XG4gICAgICBpbnNpZGVfYXV0b2xpbmstLVxuICAgIH1cblxuICAgIGlmICh0b2tlbi50eXBlID09PSAnbGlua19jbG9zZScgJiYgdG9rZW4uaW5mbyA9PT0gJ2F1dG8nKSB7XG4gICAgICBpbnNpZGVfYXV0b2xpbmsrK1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlX3JhcmUgKGlubGluZVRva2Vucykge1xuICBsZXQgaW5zaWRlX2F1dG9saW5rID0gMFxuXG4gIGZvciAobGV0IGkgPSBpbmxpbmVUb2tlbnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICBjb25zdCB0b2tlbiA9IGlubGluZVRva2Vuc1tpXVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICd0ZXh0JyAmJiAhaW5zaWRlX2F1dG9saW5rKSB7XG4gICAgICBpZiAoUkFSRV9SRS50ZXN0KHRva2VuLmNvbnRlbnQpKSB7XG4gICAgICAgIHRva2VuLmNvbnRlbnQgPSB0b2tlbi5jb250ZW50XG4gICAgICAgICAgLnJlcGxhY2UoL1xcKy0vZywgJ1x1MDBCMScpXG4gICAgICAgICAgLy8gLi4sIC4uLiwgLi4uLi4uLiAtPiBcdTIwMjZcbiAgICAgICAgICAvLyBidXQgPy4uLi4uICYgIS4uLi4uIC0+ID8uLiAmICEuLlxuICAgICAgICAgIC5yZXBsYWNlKC9cXC57Mix9L2csICdcdTIwMjYnKS5yZXBsYWNlKC8oWz8hXSlcdTIwMjYvZywgJyQxLi4nKVxuICAgICAgICAgIC5yZXBsYWNlKC8oWz8hXSl7NCx9L2csICckMSQxJDEnKS5yZXBsYWNlKC8sezIsfS9nLCAnLCcpXG4gICAgICAgICAgLy8gZW0tZGFzaFxuICAgICAgICAgIC5yZXBsYWNlKC8oXnxbXi1dKS0tLSg/PVteLV18JCkvbWcsICckMVxcdTIwMTQnKVxuICAgICAgICAgIC8vIGVuLWRhc2hcbiAgICAgICAgICAucmVwbGFjZSgvKF58XFxzKS0tKD89XFxzfCQpL21nLCAnJDFcXHUyMDEzJylcbiAgICAgICAgICAucmVwbGFjZSgvKF58W14tXFxzXSktLSg/PVteLVxcc118JCkvbWcsICckMVxcdTIwMTMnKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0b2tlbi50eXBlID09PSAnbGlua19vcGVuJyAmJiB0b2tlbi5pbmZvID09PSAnYXV0bycpIHtcbiAgICAgIGluc2lkZV9hdXRvbGluay0tXG4gICAgfVxuXG4gICAgaWYgKHRva2VuLnR5cGUgPT09ICdsaW5rX2Nsb3NlJyAmJiB0b2tlbi5pbmZvID09PSAnYXV0bycpIHtcbiAgICAgIGluc2lkZV9hdXRvbGluaysrXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlcGxhY2UgKHN0YXRlKSB7XG4gIGxldCBibGtJZHhcblxuICBpZiAoIXN0YXRlLm1kLm9wdGlvbnMudHlwb2dyYXBoZXIpIHsgcmV0dXJuIH1cblxuICBmb3IgKGJsa0lkeCA9IHN0YXRlLnRva2Vucy5sZW5ndGggLSAxOyBibGtJZHggPj0gMDsgYmxrSWR4LS0pIHtcbiAgICBpZiAoc3RhdGUudG9rZW5zW2Jsa0lkeF0udHlwZSAhPT0gJ2lubGluZScpIHsgY29udGludWUgfVxuXG4gICAgaWYgKFNDT1BFRF9BQkJSX1RFU1RfUkUudGVzdChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jb250ZW50KSkge1xuICAgICAgcmVwbGFjZV9zY29wZWQoc3RhdGUudG9rZW5zW2Jsa0lkeF0uY2hpbGRyZW4pXG4gICAgfVxuXG4gICAgaWYgKFJBUkVfUkUudGVzdChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jb250ZW50KSkge1xuICAgICAgcmVwbGFjZV9yYXJlKHN0YXRlLnRva2Vuc1tibGtJZHhdLmNoaWxkcmVuKVxuICAgIH1cbiAgfVxufVxuIiwgIi8vIENvbnZlcnQgc3RyYWlnaHQgcXVvdGF0aW9uIG1hcmtzIHRvIHR5cG9ncmFwaGljIG9uZXNcbi8vXG5cbmltcG9ydCB7IGlzV2hpdGVTcGFjZSwgaXNQdW5jdENoYXIsIGlzTWRBc2NpaVB1bmN0IH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzLm1qcydcblxuY29uc3QgUVVPVEVfVEVTVF9SRSA9IC9bJ1wiXS9cbmNvbnN0IFFVT1RFX1JFID0gL1snXCJdL2dcbmNvbnN0IEFQT1NUUk9QSEUgPSAnXFx1MjAxOScgLyogXHUyMDE5ICovXG5cbmZ1bmN0aW9uIHJlcGxhY2VBdCAoc3RyLCBpbmRleCwgY2gpIHtcbiAgcmV0dXJuIHN0ci5zbGljZSgwLCBpbmRleCkgKyBjaCArIHN0ci5zbGljZShpbmRleCArIDEpXG59XG5cbmZ1bmN0aW9uIHByb2Nlc3NfaW5saW5lcyAodG9rZW5zLCBzdGF0ZSkge1xuICBsZXQgalxuXG4gIGNvbnN0IHN0YWNrID0gW11cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2ldXG5cbiAgICBjb25zdCB0aGlzTGV2ZWwgPSB0b2tlbnNbaV0ubGV2ZWxcblxuICAgIGZvciAoaiA9IHN0YWNrLmxlbmd0aCAtIDE7IGogPj0gMDsgai0tKSB7XG4gICAgICBpZiAoc3RhY2tbal0ubGV2ZWwgPD0gdGhpc0xldmVsKSB7IGJyZWFrIH1cbiAgICB9XG4gICAgc3RhY2subGVuZ3RoID0gaiArIDFcblxuICAgIGlmICh0b2tlbi50eXBlICE9PSAndGV4dCcpIHsgY29udGludWUgfVxuXG4gICAgbGV0IHRleHQgPSB0b2tlbi5jb250ZW50XG4gICAgbGV0IHBvcyA9IDBcbiAgICBsZXQgbWF4ID0gdGV4dC5sZW5ndGhcblxuICAgIC8qIGVzbGludCBuby1sYWJlbHM6MCxibG9jay1zY29wZWQtdmFyOjAgKi9cbiAgICBPVVRFUjpcbiAgICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgICBRVU9URV9SRS5sYXN0SW5kZXggPSBwb3NcbiAgICAgIGNvbnN0IHQgPSBRVU9URV9SRS5leGVjKHRleHQpXG4gICAgICBpZiAoIXQpIHsgYnJlYWsgfVxuXG4gICAgICBsZXQgY2FuT3BlbiA9IHRydWVcbiAgICAgIGxldCBjYW5DbG9zZSA9IHRydWVcbiAgICAgIHBvcyA9IHQuaW5kZXggKyAxXG4gICAgICBjb25zdCBpc1NpbmdsZSA9ICh0WzBdID09PSBcIidcIilcblxuICAgICAgLy8gRmluZCBwcmV2aW91cyBjaGFyYWN0ZXIsXG4gICAgICAvLyBkZWZhdWx0IHRvIHNwYWNlIGlmIGl0J3MgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZVxuICAgICAgLy9cbiAgICAgIGxldCBsYXN0Q2hhciA9IDB4MjBcblxuICAgICAgaWYgKHQuaW5kZXggLSAxID49IDApIHtcbiAgICAgICAgbGFzdENoYXIgPSB0ZXh0LmNoYXJDb2RlQXQodC5pbmRleCAtIDEpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGogPSBpIC0gMTsgaiA+PSAwOyBqLS0pIHtcbiAgICAgICAgICBpZiAodG9rZW5zW2pdLnR5cGUgPT09ICdzb2Z0YnJlYWsnIHx8IHRva2Vuc1tqXS50eXBlID09PSAnaGFyZGJyZWFrJykgYnJlYWsgLy8gbGFzdENoYXIgZGVmYXVsdHMgdG8gMHgyMFxuICAgICAgICAgIGlmICghdG9rZW5zW2pdLmNvbnRlbnQpIGNvbnRpbnVlIC8vIHNob3VsZCBza2lwIGFsbCB0b2tlbnMgZXhjZXB0ICd0ZXh0JywgJ2h0bWxfaW5saW5lJyBvciAnY29kZV9pbmxpbmUnXG5cbiAgICAgICAgICBsYXN0Q2hhciA9IHRva2Vuc1tqXS5jb250ZW50LmNoYXJDb2RlQXQodG9rZW5zW2pdLmNvbnRlbnQubGVuZ3RoIC0gMSlcbiAgICAgICAgICBicmVha1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEZpbmQgbmV4dCBjaGFyYWN0ZXIsXG4gICAgICAvLyBkZWZhdWx0IHRvIHNwYWNlIGlmIGl0J3MgdGhlIGVuZCBvZiB0aGUgbGluZVxuICAgICAgLy9cbiAgICAgIGxldCBuZXh0Q2hhciA9IDB4MjBcblxuICAgICAgaWYgKHBvcyA8IG1heCkge1xuICAgICAgICBuZXh0Q2hhciA9IHRleHQuY2hhckNvZGVBdChwb3MpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGogPSBpICsgMTsgaiA8IHRva2Vucy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGlmICh0b2tlbnNbal0udHlwZSA9PT0gJ3NvZnRicmVhaycgfHwgdG9rZW5zW2pdLnR5cGUgPT09ICdoYXJkYnJlYWsnKSBicmVhayAvLyBuZXh0Q2hhciBkZWZhdWx0cyB0byAweDIwXG4gICAgICAgICAgaWYgKCF0b2tlbnNbal0uY29udGVudCkgY29udGludWUgLy8gc2hvdWxkIHNraXAgYWxsIHRva2VucyBleGNlcHQgJ3RleHQnLCAnaHRtbF9pbmxpbmUnIG9yICdjb2RlX2lubGluZSdcblxuICAgICAgICAgIG5leHRDaGFyID0gdG9rZW5zW2pdLmNvbnRlbnQuY2hhckNvZGVBdCgwKVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgaXNMYXN0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QobGFzdENoYXIpIHx8IGlzUHVuY3RDaGFyKFN0cmluZy5mcm9tQ2hhckNvZGUobGFzdENoYXIpKVxuICAgICAgY29uc3QgaXNOZXh0UHVuY3RDaGFyID0gaXNNZEFzY2lpUHVuY3QobmV4dENoYXIpIHx8IGlzUHVuY3RDaGFyKFN0cmluZy5mcm9tQ2hhckNvZGUobmV4dENoYXIpKVxuXG4gICAgICBjb25zdCBpc0xhc3RXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlKGxhc3RDaGFyKVxuICAgICAgY29uc3QgaXNOZXh0V2hpdGVTcGFjZSA9IGlzV2hpdGVTcGFjZShuZXh0Q2hhcilcblxuICAgICAgaWYgKGlzTmV4dFdoaXRlU3BhY2UpIHtcbiAgICAgICAgY2FuT3BlbiA9IGZhbHNlXG4gICAgICB9IGVsc2UgaWYgKGlzTmV4dFB1bmN0Q2hhcikge1xuICAgICAgICBpZiAoIShpc0xhc3RXaGl0ZVNwYWNlIHx8IGlzTGFzdFB1bmN0Q2hhcikpIHtcbiAgICAgICAgICBjYW5PcGVuID0gZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaXNMYXN0V2hpdGVTcGFjZSkge1xuICAgICAgICBjYW5DbG9zZSA9IGZhbHNlXG4gICAgICB9IGVsc2UgaWYgKGlzTGFzdFB1bmN0Q2hhcikge1xuICAgICAgICBpZiAoIShpc05leHRXaGl0ZVNwYWNlIHx8IGlzTmV4dFB1bmN0Q2hhcikpIHtcbiAgICAgICAgICBjYW5DbG9zZSA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5leHRDaGFyID09PSAweDIyIC8qIFwiICovICYmIHRbMF0gPT09ICdcIicpIHtcbiAgICAgICAgaWYgKGxhc3RDaGFyID49IDB4MzAgLyogMCAqLyAmJiBsYXN0Q2hhciA8PSAweDM5IC8qIDkgKi8pIHtcbiAgICAgICAgICAvLyBzcGVjaWFsIGNhc2U6IDFcIlwiIC0gY291bnQgZmlyc3QgcXVvdGUgYXMgYW4gaW5jaFxuICAgICAgICAgIGNhbkNsb3NlID0gY2FuT3BlbiA9IGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNhbk9wZW4gJiYgY2FuQ2xvc2UpIHtcbiAgICAgICAgLy8gUmVwbGFjZSBxdW90ZXMgaW4gdGhlIG1pZGRsZSBvZiBwdW5jdHVhdGlvbiBzZXF1ZW5jZSwgYnV0IG5vdFxuICAgICAgICAvLyBpbiB0aGUgbWlkZGxlIG9mIHRoZSB3b3JkcywgaS5lLjpcbiAgICAgICAgLy9cbiAgICAgICAgLy8gMS4gZm9vIFwiIGJhciBcIiBiYXogLSBub3QgcmVwbGFjZWRcbiAgICAgICAgLy8gMi4gZm9vLVwiLWJhci1cIi1iYXogLSByZXBsYWNlZFxuICAgICAgICAvLyAzLiBmb29cImJhclwiYmF6ICAgICAtIG5vdCByZXBsYWNlZFxuICAgICAgICAvL1xuICAgICAgICBjYW5PcGVuID0gaXNMYXN0UHVuY3RDaGFyXG4gICAgICAgIGNhbkNsb3NlID0gaXNOZXh0UHVuY3RDaGFyXG4gICAgICB9XG5cbiAgICAgIGlmICghY2FuT3BlbiAmJiAhY2FuQ2xvc2UpIHtcbiAgICAgICAgLy8gbWlkZGxlIG9mIHdvcmRcbiAgICAgICAgaWYgKGlzU2luZ2xlKSB7XG4gICAgICAgICAgdG9rZW4uY29udGVudCA9IHJlcGxhY2VBdCh0b2tlbi5jb250ZW50LCB0LmluZGV4LCBBUE9TVFJPUEhFKVxuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5DbG9zZSkge1xuICAgICAgICAvLyB0aGlzIGNvdWxkIGJlIGEgY2xvc2luZyBxdW90ZSwgcmV3aW5kIHRoZSBzdGFjayB0byBnZXQgYSBtYXRjaFxuICAgICAgICBmb3IgKGogPSBzdGFjay5sZW5ndGggLSAxOyBqID49IDA7IGotLSkge1xuICAgICAgICAgIGxldCBpdGVtID0gc3RhY2tbal1cbiAgICAgICAgICBpZiAoc3RhY2tbal0ubGV2ZWwgPCB0aGlzTGV2ZWwpIHsgYnJlYWsgfVxuICAgICAgICAgIGlmIChpdGVtLnNpbmdsZSA9PT0gaXNTaW5nbGUgJiYgc3RhY2tbal0ubGV2ZWwgPT09IHRoaXNMZXZlbCkge1xuICAgICAgICAgICAgaXRlbSA9IHN0YWNrW2pdXG5cbiAgICAgICAgICAgIGxldCBvcGVuUXVvdGVcbiAgICAgICAgICAgIGxldCBjbG9zZVF1b3RlXG4gICAgICAgICAgICBpZiAoaXNTaW5nbGUpIHtcbiAgICAgICAgICAgICAgb3BlblF1b3RlID0gc3RhdGUubWQub3B0aW9ucy5xdW90ZXNbMl1cbiAgICAgICAgICAgICAgY2xvc2VRdW90ZSA9IHN0YXRlLm1kLm9wdGlvbnMucXVvdGVzWzNdXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvcGVuUXVvdGUgPSBzdGF0ZS5tZC5vcHRpb25zLnF1b3Rlc1swXVxuICAgICAgICAgICAgICBjbG9zZVF1b3RlID0gc3RhdGUubWQub3B0aW9ucy5xdW90ZXNbMV1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gcmVwbGFjZSB0b2tlbi5jb250ZW50ICpiZWZvcmUqIHRva2Vuc1tpdGVtLnRva2VuXS5jb250ZW50LFxuICAgICAgICAgICAgLy8gYmVjYXVzZSwgaWYgdGhleSBhcmUgcG9pbnRpbmcgYXQgdGhlIHNhbWUgdG9rZW4sIHJlcGxhY2VBdFxuICAgICAgICAgICAgLy8gY291bGQgbWVzcyB1cCBpbmRpY2VzIHdoZW4gcXVvdGUgbGVuZ3RoICE9IDFcbiAgICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSByZXBsYWNlQXQodG9rZW4uY29udGVudCwgdC5pbmRleCwgY2xvc2VRdW90ZSlcbiAgICAgICAgICAgIHRva2Vuc1tpdGVtLnRva2VuXS5jb250ZW50ID0gcmVwbGFjZUF0KFxuICAgICAgICAgICAgICB0b2tlbnNbaXRlbS50b2tlbl0uY29udGVudCwgaXRlbS5wb3MsIG9wZW5RdW90ZSlcblxuICAgICAgICAgICAgcG9zICs9IGNsb3NlUXVvdGUubGVuZ3RoIC0gMVxuICAgICAgICAgICAgaWYgKGl0ZW0udG9rZW4gPT09IGkpIHsgcG9zICs9IG9wZW5RdW90ZS5sZW5ndGggLSAxIH1cblxuICAgICAgICAgICAgdGV4dCA9IHRva2VuLmNvbnRlbnRcbiAgICAgICAgICAgIG1heCA9IHRleHQubGVuZ3RoXG5cbiAgICAgICAgICAgIHN0YWNrLmxlbmd0aCA9IGpcbiAgICAgICAgICAgIGNvbnRpbnVlIE9VVEVSXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYW5PcGVuKSB7XG4gICAgICAgIHN0YWNrLnB1c2goe1xuICAgICAgICAgIHRva2VuOiBpLFxuICAgICAgICAgIHBvczogdC5pbmRleCxcbiAgICAgICAgICBzaW5nbGU6IGlzU2luZ2xlLFxuICAgICAgICAgIGxldmVsOiB0aGlzTGV2ZWxcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSBpZiAoY2FuQ2xvc2UgJiYgaXNTaW5nbGUpIHtcbiAgICAgICAgdG9rZW4uY29udGVudCA9IHJlcGxhY2VBdCh0b2tlbi5jb250ZW50LCB0LmluZGV4LCBBUE9TVFJPUEhFKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzbWFydHF1b3RlcyAoc3RhdGUpIHtcbiAgLyogZXNsaW50IG1heC1kZXB0aDowICovXG4gIGlmICghc3RhdGUubWQub3B0aW9ucy50eXBvZ3JhcGhlcikgeyByZXR1cm4gfVxuXG4gIGZvciAobGV0IGJsa0lkeCA9IHN0YXRlLnRva2Vucy5sZW5ndGggLSAxOyBibGtJZHggPj0gMDsgYmxrSWR4LS0pIHtcbiAgICBpZiAoc3RhdGUudG9rZW5zW2Jsa0lkeF0udHlwZSAhPT0gJ2lubGluZScgfHxcbiAgICAgICAgIVFVT1RFX1RFU1RfUkUudGVzdChzdGF0ZS50b2tlbnNbYmxrSWR4XS5jb250ZW50KSkge1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBwcm9jZXNzX2lubGluZXMoc3RhdGUudG9rZW5zW2Jsa0lkeF0uY2hpbGRyZW4sIHN0YXRlKVxuICB9XG59XG4iLCAiLy8gSm9pbiByYXcgdGV4dCB0b2tlbnMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGV4dFxuLy9cbi8vIFRoaXMgaXMgc2V0IGFzIGEgc2VwYXJhdGUgcnVsZSB0byBwcm92aWRlIGFuIG9wcG9ydHVuaXR5IGZvciBwbHVnaW5zXG4vLyB0byBydW4gdGV4dCByZXBsYWNlbWVudHMgYWZ0ZXIgdGV4dCBqb2luLCBidXQgYmVmb3JlIGVzY2FwZSBqb2luLlxuLy9cbi8vIEZvciBleGFtcGxlLCBgXFw6KWAgc2hvdWxkbid0IGJlIHJlcGxhY2VkIHdpdGggYW4gZW1vamkuXG4vL1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0ZXh0X2pvaW4gKHN0YXRlKSB7XG4gIGxldCBjdXJyLCBsYXN0XG4gIGNvbnN0IGJsb2NrVG9rZW5zID0gc3RhdGUudG9rZW5zXG4gIGNvbnN0IGwgPSBibG9ja1Rva2Vucy5sZW5ndGhcblxuICBmb3IgKGxldCBqID0gMDsgaiA8IGw7IGorKykge1xuICAgIGlmIChibG9ja1Rva2Vuc1tqXS50eXBlICE9PSAnaW5saW5lJykgY29udGludWVcblxuICAgIGNvbnN0IHRva2VucyA9IGJsb2NrVG9rZW5zW2pdLmNoaWxkcmVuXG4gICAgY29uc3QgbWF4ID0gdG9rZW5zLmxlbmd0aFxuXG4gICAgZm9yIChjdXJyID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgICBpZiAodG9rZW5zW2N1cnJdLnR5cGUgPT09ICd0ZXh0X3NwZWNpYWwnKSB7XG4gICAgICAgIHRva2Vuc1tjdXJyXS50eXBlID0gJ3RleHQnXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjdXJyID0gbGFzdCA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgICAgaWYgKHRva2Vuc1tjdXJyXS50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgICBjdXJyICsgMSA8IG1heCAmJlxuICAgICAgICAgIHRva2Vuc1tjdXJyICsgMV0udHlwZSA9PT0gJ3RleHQnKSB7XG4gICAgICAgIC8vIGNvbGxhcHNlIHR3byBhZGphY2VudCB0ZXh0IG5vZGVzXG4gICAgICAgIHRva2Vuc1tjdXJyICsgMV0uY29udGVudCA9IHRva2Vuc1tjdXJyXS5jb250ZW50ICsgdG9rZW5zW2N1cnIgKyAxXS5jb250ZW50XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoY3VyciAhPT0gbGFzdCkgeyB0b2tlbnNbbGFzdF0gPSB0b2tlbnNbY3Vycl0gfVxuXG4gICAgICAgIGxhc3QrK1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjdXJyICE9PSBsYXN0KSB7XG4gICAgICB0b2tlbnMubGVuZ3RoID0gbGFzdFxuICAgIH1cbiAgfVxufVxuIiwgIi8qKiBpbnRlcm5hbFxuICogY2xhc3MgQ29yZVxuICpcbiAqIFRvcC1sZXZlbCBydWxlcyBleGVjdXRvci4gR2x1ZXMgYmxvY2svaW5saW5lIHBhcnNlcnMgYW5kIGRvZXMgaW50ZXJtZWRpYXRlXG4gKiB0cmFuc2Zvcm1hdGlvbnMuXG4gKiovXG5cbmltcG9ydCBSdWxlciBmcm9tICcuL3J1bGVyLm1qcydcbmltcG9ydCBTdGF0ZUNvcmUgZnJvbSAnLi9ydWxlc19jb3JlL3N0YXRlX2NvcmUubWpzJ1xuXG5pbXBvcnQgcl9ub3JtYWxpemUgZnJvbSAnLi9ydWxlc19jb3JlL25vcm1hbGl6ZS5tanMnXG5pbXBvcnQgcl9ibG9jayBmcm9tICcuL3J1bGVzX2NvcmUvYmxvY2subWpzJ1xuaW1wb3J0IHJfaW5saW5lIGZyb20gJy4vcnVsZXNfY29yZS9pbmxpbmUubWpzJ1xuaW1wb3J0IHJfbGlua2lmeSBmcm9tICcuL3J1bGVzX2NvcmUvbGlua2lmeS5tanMnXG5pbXBvcnQgcl9yZXBsYWNlbWVudHMgZnJvbSAnLi9ydWxlc19jb3JlL3JlcGxhY2VtZW50cy5tanMnXG5pbXBvcnQgcl9zbWFydHF1b3RlcyBmcm9tICcuL3J1bGVzX2NvcmUvc21hcnRxdW90ZXMubWpzJ1xuaW1wb3J0IHJfdGV4dF9qb2luIGZyb20gJy4vcnVsZXNfY29yZS90ZXh0X2pvaW4ubWpzJ1xuXG5jb25zdCBfcnVsZXMgPSBbXG4gIFsnbm9ybWFsaXplJywgICAgICByX25vcm1hbGl6ZV0sXG4gIFsnYmxvY2snLCAgICAgICAgICByX2Jsb2NrXSxcbiAgWydpbmxpbmUnLCAgICAgICAgIHJfaW5saW5lXSxcbiAgWydsaW5raWZ5JywgICAgICAgIHJfbGlua2lmeV0sXG4gIFsncmVwbGFjZW1lbnRzJywgICByX3JlcGxhY2VtZW50c10sXG4gIFsnc21hcnRxdW90ZXMnLCAgICByX3NtYXJ0cXVvdGVzXSxcbiAgLy8gYHRleHRfam9pbmAgZmluZHMgYHRleHRfc3BlY2lhbGAgdG9rZW5zIChmb3IgZXNjYXBlIHNlcXVlbmNlcylcbiAgLy8gYW5kIGpvaW5zIHRoZW0gd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGV4dFxuICBbJ3RleHRfam9pbicsICAgICAgcl90ZXh0X2pvaW5dXG5dXG5cbi8qKlxuICogbmV3IENvcmUoKVxuICoqL1xuZnVuY3Rpb24gQ29yZSAoKSB7XG4gIC8qKlxuICAgKiBDb3JlI3J1bGVyIC0+IFJ1bGVyXG4gICAqXG4gICAqIFtbUnVsZXJdXSBpbnN0YW5jZS4gS2VlcCBjb25maWd1cmF0aW9uIG9mIGNvcmUgcnVsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlcigpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBfcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyLnB1c2goX3J1bGVzW2ldWzBdLCBfcnVsZXNbaV1bMV0pXG4gIH1cbn1cblxuLyoqXG4gKiBDb3JlLnByb2Nlc3Moc3RhdGUpXG4gKlxuICogRXhlY3V0ZXMgY29yZSBjaGFpbiBydWxlcy5cbiAqKi9cbkNvcmUucHJvdG90eXBlLnByb2Nlc3MgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY29uc3QgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKCcnKVxuXG4gIGZvciAobGV0IGkgPSAwLCBsID0gcnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgcnVsZXNbaV0oc3RhdGUpXG4gIH1cbn1cblxuQ29yZS5wcm90b3R5cGUuU3RhdGUgPSBTdGF0ZUNvcmVcblxuZXhwb3J0IGRlZmF1bHQgQ29yZVxuIiwgIi8vIFBhcnNlciBzdGF0ZSBjbGFzc1xuXG5pbXBvcnQgVG9rZW4gZnJvbSAnLi4vdG9rZW4ubWpzJ1xuaW1wb3J0IHsgaXNTcGFjZSB9IGZyb20gJy4uL2NvbW1vbi91dGlscy5tanMnXG5cbmZ1bmN0aW9uIFN0YXRlQmxvY2sgKHNyYywgbWQsIGVudiwgdG9rZW5zKSB7XG4gIHRoaXMuc3JjID0gc3JjXG5cbiAgLy8gbGluayB0byBwYXJzZXIgaW5zdGFuY2VcbiAgdGhpcy5tZCAgICAgPSBtZFxuXG4gIHRoaXMuZW52ID0gZW52XG5cbiAgLy9cbiAgLy8gSW50ZXJuYWwgc3RhdGUgdmFydGlhYmxlc1xuICAvL1xuXG4gIHRoaXMudG9rZW5zID0gdG9rZW5zXG5cbiAgdGhpcy5iTWFya3MgPSBbXSAgLy8gbGluZSBiZWdpbiBvZmZzZXRzIGZvciBmYXN0IGp1bXBzXG4gIHRoaXMuZU1hcmtzID0gW10gIC8vIGxpbmUgZW5kIG9mZnNldHMgZm9yIGZhc3QganVtcHNcbiAgdGhpcy50U2hpZnQgPSBbXSAgLy8gb2Zmc2V0cyBvZiB0aGUgZmlyc3Qgbm9uLXNwYWNlIGNoYXJhY3RlcnMgKHRhYnMgbm90IGV4cGFuZGVkKVxuICB0aGlzLnNDb3VudCA9IFtdICAvLyBpbmRlbnRzIGZvciBlYWNoIGxpbmUgKHRhYnMgZXhwYW5kZWQpXG5cbiAgLy8gQW4gYW1vdW50IG9mIHZpcnR1YWwgc3BhY2VzICh0YWJzIGV4cGFuZGVkKSBiZXR3ZWVuIGJlZ2lubmluZ1xuICAvLyBvZiBlYWNoIGxpbmUgKGJNYXJrcykgYW5kIHJlYWwgYmVnaW5uaW5nIG9mIHRoYXQgbGluZS5cbiAgLy9cbiAgLy8gSXQgZXhpc3RzIG9ubHkgYXMgYSBoYWNrIGJlY2F1c2UgYmxvY2txdW90ZXMgb3ZlcnJpZGUgYk1hcmtzXG4gIC8vIGxvc2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgcHJvY2Vzcy5cbiAgLy9cbiAgLy8gSXQncyB1c2VkIG9ubHkgd2hlbiBleHBhbmRpbmcgdGFicywgeW91IGNhbiB0aGluayBhYm91dCBpdCBhc1xuICAvLyBhbiBpbml0aWFsIHRhYiBsZW5ndGgsIGUuZy4gYnNDb3VudD0yMSBhcHBsaWVkIHRvIHN0cmluZyBgXFx0MTIzYFxuICAvLyBtZWFucyBmaXJzdCB0YWIgc2hvdWxkIGJlIGV4cGFuZGVkIHRvIDQtMjElNCA9PT0gMyBzcGFjZXMuXG4gIC8vXG4gIHRoaXMuYnNDb3VudCA9IFtdXG5cbiAgLy8gYmxvY2sgcGFyc2VyIHZhcmlhYmxlc1xuXG4gIC8vIHJlcXVpcmVkIGJsb2NrIGNvbnRlbnQgaW5kZW50IChmb3IgZXhhbXBsZSwgaWYgd2UgYXJlXG4gIC8vIGluc2lkZSBhIGxpc3QsIGl0IHdvdWxkIGJlIHBvc2l0aW9uZWQgYWZ0ZXIgbGlzdCBtYXJrZXIpXG4gIHRoaXMuYmxrSW5kZW50ICA9IDBcbiAgdGhpcy5saW5lICAgICAgID0gMCAvLyBsaW5lIGluZGV4IGluIHNyY1xuICB0aGlzLmxpbmVNYXggICAgPSAwIC8vIGxpbmVzIGNvdW50XG4gIHRoaXMudGlnaHQgICAgICA9IGZhbHNlICAvLyBsb29zZS90aWdodCBtb2RlIGZvciBsaXN0c1xuICB0aGlzLmRkSW5kZW50ICAgPSAtMSAvLyBpbmRlbnQgb2YgdGhlIGN1cnJlbnQgZGQgYmxvY2sgKC0xIGlmIHRoZXJlIGlzbid0IGFueSlcbiAgdGhpcy5saXN0SW5kZW50ID0gLTEgLy8gaW5kZW50IG9mIHRoZSBjdXJyZW50IGxpc3QgYmxvY2sgKC0xIGlmIHRoZXJlIGlzbid0IGFueSlcblxuICAvLyBjYW4gYmUgJ2Jsb2NrcXVvdGUnLCAnbGlzdCcsICdyb290JywgJ3BhcmFncmFwaCcgb3IgJ3JlZmVyZW5jZSdcbiAgLy8gdXNlZCBpbiBsaXN0cyB0byBkZXRlcm1pbmUgaWYgdGhleSBpbnRlcnJ1cHQgYSBwYXJhZ3JhcGhcbiAgdGhpcy5wYXJlbnRUeXBlID0gJ3Jvb3QnXG5cbiAgdGhpcy5sZXZlbCA9IDBcblxuICAvLyBDcmVhdGUgY2FjaGVzXG4gIC8vIEdlbmVyYXRlIG1hcmtlcnMuXG4gIGNvbnN0IHMgPSB0aGlzLnNyY1xuXG4gIGZvciAobGV0IHN0YXJ0ID0gMCwgcG9zID0gMCwgaW5kZW50ID0gMCwgb2Zmc2V0ID0gMCwgbGVuID0gcy5sZW5ndGgsIGluZGVudF9mb3VuZCA9IGZhbHNlOyBwb3MgPCBsZW47IHBvcysrKSB7XG4gICAgY29uc3QgY2ggPSBzLmNoYXJDb2RlQXQocG9zKVxuXG4gICAgaWYgKCFpbmRlbnRfZm91bmQpIHtcbiAgICAgIGlmIChpc1NwYWNlKGNoKSkge1xuICAgICAgICBpbmRlbnQrK1xuXG4gICAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICAgIG9mZnNldCArPSA0IC0gb2Zmc2V0ICUgNFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9mZnNldCsrXG4gICAgICAgIH1cbiAgICAgICAgY29udGludWVcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGluZGVudF9mb3VuZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2ggPT09IDB4MEEgfHwgcG9zID09PSBsZW4gLSAxKSB7XG4gICAgICBpZiAoY2ggIT09IDB4MEEpIHsgcG9zKysgfVxuICAgICAgdGhpcy5iTWFya3MucHVzaChzdGFydClcbiAgICAgIHRoaXMuZU1hcmtzLnB1c2gocG9zKVxuICAgICAgdGhpcy50U2hpZnQucHVzaChpbmRlbnQpXG4gICAgICB0aGlzLnNDb3VudC5wdXNoKG9mZnNldClcbiAgICAgIHRoaXMuYnNDb3VudC5wdXNoKDApXG5cbiAgICAgIGluZGVudF9mb3VuZCA9IGZhbHNlXG4gICAgICBpbmRlbnQgPSAwXG4gICAgICBvZmZzZXQgPSAwXG4gICAgICBzdGFydCA9IHBvcyArIDFcbiAgICB9XG4gIH1cblxuICAvLyBQdXNoIGZha2UgZW50cnkgdG8gc2ltcGxpZnkgY2FjaGUgYm91bmRzIGNoZWNrc1xuICB0aGlzLmJNYXJrcy5wdXNoKHMubGVuZ3RoKVxuICB0aGlzLmVNYXJrcy5wdXNoKHMubGVuZ3RoKVxuICB0aGlzLnRTaGlmdC5wdXNoKDApXG4gIHRoaXMuc0NvdW50LnB1c2goMClcbiAgdGhpcy5ic0NvdW50LnB1c2goMClcblxuICB0aGlzLmxpbmVNYXggPSB0aGlzLmJNYXJrcy5sZW5ndGggLSAxIC8vIGRvbid0IGNvdW50IGxhc3QgZmFrZSBsaW5lXG59XG5cbi8vIFB1c2ggbmV3IHRva2VuIHRvIFwic3RyZWFtXCIuXG4vL1xuU3RhdGVCbG9jay5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uICh0eXBlLCB0YWcsIG5lc3RpbmcpIHtcbiAgY29uc3QgdG9rZW4gPSBuZXcgVG9rZW4odHlwZSwgdGFnLCBuZXN0aW5nKVxuICB0b2tlbi5ibG9jayA9IHRydWVcblxuICBpZiAobmVzdGluZyA8IDApIHRoaXMubGV2ZWwtLSAvLyBjbG9zaW5nIHRhZ1xuICB0b2tlbi5sZXZlbCA9IHRoaXMubGV2ZWxcbiAgaWYgKG5lc3RpbmcgPiAwKSB0aGlzLmxldmVsKysgLy8gb3BlbmluZyB0YWdcblxuICB0aGlzLnRva2Vucy5wdXNoKHRva2VuKVxuICByZXR1cm4gdG9rZW5cbn1cblxuU3RhdGVCbG9jay5wcm90b3R5cGUuaXNFbXB0eSA9IGZ1bmN0aW9uIGlzRW1wdHkgKGxpbmUpIHtcbiAgcmV0dXJuIHRoaXMuYk1hcmtzW2xpbmVdICsgdGhpcy50U2hpZnRbbGluZV0gPj0gdGhpcy5lTWFya3NbbGluZV1cbn1cblxuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcEVtcHR5TGluZXMgPSBmdW5jdGlvbiBza2lwRW1wdHlMaW5lcyAoZnJvbSkge1xuICBmb3IgKGxldCBtYXggPSB0aGlzLmxpbmVNYXg7IGZyb20gPCBtYXg7IGZyb20rKykge1xuICAgIGlmICh0aGlzLmJNYXJrc1tmcm9tXSArIHRoaXMudFNoaWZ0W2Zyb21dIDwgdGhpcy5lTWFya3NbZnJvbV0pIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG4gIHJldHVybiBmcm9tXG59XG5cbi8vIFNraXAgc3BhY2VzIGZyb20gZ2l2ZW4gcG9zaXRpb24uXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwU3BhY2VzID0gZnVuY3Rpb24gc2tpcFNwYWNlcyAocG9zKSB7XG4gIGZvciAobGV0IG1heCA9IHRoaXMuc3JjLmxlbmd0aDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgIGNvbnN0IGNoID0gdGhpcy5zcmMuY2hhckNvZGVBdChwb3MpXG4gICAgaWYgKCFpc1NwYWNlKGNoKSkgeyBicmVhayB9XG4gIH1cbiAgcmV0dXJuIHBvc1xufVxuXG4vLyBTa2lwIHNwYWNlcyBmcm9tIGdpdmVuIHBvc2l0aW9uIGluIHJldmVyc2UuXG5TdGF0ZUJsb2NrLnByb3RvdHlwZS5za2lwU3BhY2VzQmFjayA9IGZ1bmN0aW9uIHNraXBTcGFjZXNCYWNrIChwb3MsIG1pbikge1xuICBpZiAocG9zIDw9IG1pbikgeyByZXR1cm4gcG9zIH1cblxuICB3aGlsZSAocG9zID4gbWluKSB7XG4gICAgaWYgKCFpc1NwYWNlKHRoaXMuc3JjLmNoYXJDb2RlQXQoLS1wb3MpKSkgeyByZXR1cm4gcG9zICsgMSB9XG4gIH1cbiAgcmV0dXJuIHBvc1xufVxuXG4vLyBTa2lwIGNoYXIgY29kZXMgZnJvbSBnaXZlbiBwb3NpdGlvblxuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcENoYXJzID0gZnVuY3Rpb24gc2tpcENoYXJzIChwb3MsIGNvZGUpIHtcbiAgZm9yIChsZXQgbWF4ID0gdGhpcy5zcmMubGVuZ3RoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgaWYgKHRoaXMuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gY29kZSkgeyBicmVhayB9XG4gIH1cbiAgcmV0dXJuIHBvc1xufVxuXG4vLyBTa2lwIGNoYXIgY29kZXMgcmV2ZXJzZSBmcm9tIGdpdmVuIHBvc2l0aW9uIC0gMVxuU3RhdGVCbG9jay5wcm90b3R5cGUuc2tpcENoYXJzQmFjayA9IGZ1bmN0aW9uIHNraXBDaGFyc0JhY2sgKHBvcywgY29kZSwgbWluKSB7XG4gIGlmIChwb3MgPD0gbWluKSB7IHJldHVybiBwb3MgfVxuXG4gIHdoaWxlIChwb3MgPiBtaW4pIHtcbiAgICBpZiAoY29kZSAhPT0gdGhpcy5zcmMuY2hhckNvZGVBdCgtLXBvcykpIHsgcmV0dXJuIHBvcyArIDEgfVxuICB9XG4gIHJldHVybiBwb3Ncbn1cblxuLy8gY3V0IGxpbmVzIHJhbmdlIGZyb20gc291cmNlLlxuU3RhdGVCbG9jay5wcm90b3R5cGUuZ2V0TGluZXMgPSBmdW5jdGlvbiBnZXRMaW5lcyAoYmVnaW4sIGVuZCwgaW5kZW50LCBrZWVwTGFzdExGKSB7XG4gIGlmIChiZWdpbiA+PSBlbmQpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGNvbnN0IHF1ZXVlID0gbmV3IEFycmF5KGVuZCAtIGJlZ2luKVxuXG4gIGZvciAobGV0IGkgPSAwLCBsaW5lID0gYmVnaW47IGxpbmUgPCBlbmQ7IGxpbmUrKywgaSsrKSB7XG4gICAgbGV0IGxpbmVJbmRlbnQgPSAwXG4gICAgY29uc3QgbGluZVN0YXJ0ID0gdGhpcy5iTWFya3NbbGluZV1cbiAgICBsZXQgZmlyc3QgPSBsaW5lU3RhcnRcbiAgICBsZXQgbGFzdFxuXG4gICAgaWYgKGxpbmUgKyAxIDwgZW5kIHx8IGtlZXBMYXN0TEYpIHtcbiAgICAgIC8vIE5vIG5lZWQgZm9yIGJvdW5kcyBjaGVjayBiZWNhdXNlIHdlIGhhdmUgZmFrZSBlbnRyeSBvbiB0YWlsLlxuICAgICAgbGFzdCA9IHRoaXMuZU1hcmtzW2xpbmVdICsgMVxuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0ID0gdGhpcy5lTWFya3NbbGluZV1cbiAgICB9XG5cbiAgICB3aGlsZSAoZmlyc3QgPCBsYXN0ICYmIGxpbmVJbmRlbnQgPCBpbmRlbnQpIHtcbiAgICAgIGNvbnN0IGNoID0gdGhpcy5zcmMuY2hhckNvZGVBdChmaXJzdClcblxuICAgICAgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAgIGlmIChjaCA9PT0gMHgwOSkge1xuICAgICAgICAgIGxpbmVJbmRlbnQgKz0gNCAtIChsaW5lSW5kZW50ICsgdGhpcy5ic0NvdW50W2xpbmVdKSAlIDRcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBsaW5lSW5kZW50KytcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChmaXJzdCAtIGxpbmVTdGFydCA8IHRoaXMudFNoaWZ0W2xpbmVdKSB7XG4gICAgICAgIC8vIHBhdGNoZWQgdFNoaWZ0IG1hc2tlZCBjaGFyYWN0ZXJzIHRvIGxvb2sgbGlrZSBzcGFjZXMgKGJsb2NrcXVvdGVzLCBsaXN0IG1hcmtlcnMpXG4gICAgICAgIGxpbmVJbmRlbnQrK1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgZmlyc3QrK1xuICAgIH1cblxuICAgIGlmIChsaW5lSW5kZW50ID4gaW5kZW50KSB7XG4gICAgICAvLyBwYXJ0aWFsbHkgZXhwYW5kaW5nIHRhYnMgaW4gY29kZSBibG9ja3MsIGUuZyAnXFx0XFx0Zm9vYmFyJ1xuICAgICAgLy8gd2l0aCBpbmRlbnQ9MiBiZWNvbWVzICcgIFxcdGZvb2JhcidcbiAgICAgIHF1ZXVlW2ldID0gbmV3IEFycmF5KGxpbmVJbmRlbnQgLSBpbmRlbnQgKyAxKS5qb2luKCcgJykgKyB0aGlzLnNyYy5zbGljZShmaXJzdCwgbGFzdClcbiAgICB9IGVsc2Uge1xuICAgICAgcXVldWVbaV0gPSB0aGlzLnNyYy5zbGljZShmaXJzdCwgbGFzdClcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcXVldWUuam9pbignJylcbn1cblxuLy8gcmUtZXhwb3J0IFRva2VuIGNsYXNzIHRvIHVzZSBpbiBibG9jayBydWxlc1xuU3RhdGVCbG9jay5wcm90b3R5cGUuVG9rZW4gPSBUb2tlblxuXG5leHBvcnQgZGVmYXVsdCBTdGF0ZUJsb2NrXG4iLCAiLy8gR0ZNIHRhYmxlLCBodHRwczovL2dpdGh1Yi5naXRodWIuY29tL2dmbS8jdGFibGVzLWV4dGVuc2lvbi1cblxuaW1wb3J0IHsgaXNTcGFjZSB9IGZyb20gJy4uL2NvbW1vbi91dGlscy5tanMnXG5cbi8vIExpbWl0IHRoZSBhbW91bnQgb2YgZW1wdHkgYXV0b2NvbXBsZXRlZCBjZWxscyBpbiBhIHRhYmxlLFxuLy8gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9pc3N1ZXMvMTAwMCxcbi8vXG4vLyBCb3RoIHB1bGxkb3duLWNtYXJrIGFuZCBjb21tb25tYXJrLWhzIGxpbWl0IHRoZSBudW1iZXIgb2YgY2VsbHMgdGhpcyB3YXkgdG8gfjIwMGsuXG4vLyBXZSBzZXQgaXQgdG8gNjVrLCB3aGljaCBjYW4gZXhwYW5kIHVzZXIgaW5wdXQgYnkgYSBmYWN0b3Igb2YgeDM3MFxuLy8gKDI1NngyNTYgc3F1YXJlIGlzIDEuOGtCIGV4cGFuZGVkIGludG8gNjUwa0IpLlxuY29uc3QgTUFYX0FVVE9DT01QTEVURURfQ0VMTFMgPSAweDEwMDAwXG5cbmZ1bmN0aW9uIGdldExpbmUgKHN0YXRlLCBsaW5lKSB7XG4gIGNvbnN0IHBvcyA9IHN0YXRlLmJNYXJrc1tsaW5lXSArIHN0YXRlLnRTaGlmdFtsaW5lXVxuICBjb25zdCBtYXggPSBzdGF0ZS5lTWFya3NbbGluZV1cblxuICByZXR1cm4gc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4KVxufVxuXG5mdW5jdGlvbiBlc2NhcGVkU3BsaXQgKHN0cikge1xuICBjb25zdCByZXN1bHQgPSBbXVxuICBjb25zdCBtYXggPSBzdHIubGVuZ3RoXG5cbiAgbGV0IHBvcyA9IDBcbiAgbGV0IGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKVxuICBsZXQgaXNFc2NhcGVkID0gZmFsc2VcbiAgbGV0IGxhc3RQb3MgPSAwXG4gIGxldCBjdXJyZW50ID0gJydcblxuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgaWYgKGNoID09PSAweDdjLyogfCAqLykge1xuICAgICAgaWYgKCFpc0VzY2FwZWQpIHtcbiAgICAgICAgLy8gcGlwZSBzZXBhcmF0aW5nIGNlbGxzLCAnfCdcbiAgICAgICAgcmVzdWx0LnB1c2goY3VycmVudCArIHN0ci5zdWJzdHJpbmcobGFzdFBvcywgcG9zKSlcbiAgICAgICAgY3VycmVudCA9ICcnXG4gICAgICAgIGxhc3RQb3MgPSBwb3MgKyAxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBlc2NhcGVkIHBpcGUsICdcXHwnXG4gICAgICAgIGN1cnJlbnQgKz0gc3RyLnN1YnN0cmluZyhsYXN0UG9zLCBwb3MgLSAxKVxuICAgICAgICBsYXN0UG9zID0gcG9zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaXNFc2NhcGVkID0gKGNoID09PSAweDVjLyogXFwgKi8pXG4gICAgcG9zKytcblxuICAgIGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKVxuICB9XG5cbiAgcmVzdWx0LnB1c2goY3VycmVudCArIHN0ci5zdWJzdHJpbmcobGFzdFBvcykpXG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0YWJsZSAoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSwgc2lsZW50KSB7XG4gIC8vIHNob3VsZCBoYXZlIGF0IGxlYXN0IHR3byBsaW5lc1xuICBpZiAoc3RhcnRMaW5lICsgMiA+IGVuZExpbmUpIHsgcmV0dXJuIGZhbHNlIH1cblxuICBsZXQgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxXG5cbiAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAvLyBpZiBpdCdzIGluZGVudGVkIG1vcmUgdGhhbiAzIHNwYWNlcywgaXQgc2hvdWxkIGJlIGEgY29kZSBibG9ja1xuICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZSB9XG5cbiAgLy8gZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBzZWNvbmQgbGluZSBzaG91bGQgYmUgJ3wnLCAnLScsICc6JyxcbiAgLy8gYW5kIG5vIG90aGVyIGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYnV0IHNwYWNlcztcbiAgLy8gYmFzaWNhbGx5LCB0aGlzIGlzIHRoZSBlcXVpdmFsZW50IG9mIC9eWy06fF1bLTp8XFxzXSokLyByZWdleHBcblxuICBsZXQgcG9zID0gc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV1cbiAgaWYgKHBvcyA+PSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgY29uc3QgZmlyc3RDaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKVxuICBpZiAoZmlyc3RDaCAhPT0gMHg3Qy8qIHwgKi8gJiYgZmlyc3RDaCAhPT0gMHgyRC8qIC0gKi8gJiYgZmlyc3RDaCAhPT0gMHgzQS8qIDogKi8pIHsgcmV0dXJuIGZhbHNlIH1cblxuICBpZiAocG9zID49IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHsgcmV0dXJuIGZhbHNlIH1cblxuICBjb25zdCBzZWNvbmRDaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKVxuICBpZiAoc2Vjb25kQ2ggIT09IDB4N0MvKiB8ICovICYmIHNlY29uZENoICE9PSAweDJELyogLSAqLyAmJiBzZWNvbmRDaCAhPT0gMHgzQS8qIDogKi8gJiYgIWlzU3BhY2Uoc2Vjb25kQ2gpKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBpZiBmaXJzdCBjaGFyYWN0ZXIgaXMgJy0nLCB0aGVuIHNlY29uZCBjaGFyYWN0ZXIgbXVzdCBub3QgYmUgYSBzcGFjZVxuICAvLyAoZHVlIHRvIHBhcnNpbmcgYW1iaWd1aXR5IHdpdGggbGlzdClcbiAgaWYgKGZpcnN0Q2ggPT09IDB4MkQvKiAtICovICYmIGlzU3BhY2Uoc2Vjb25kQ2gpKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgd2hpbGUgKHBvcyA8IHN0YXRlLmVNYXJrc1tuZXh0TGluZV0pIHtcbiAgICBjb25zdCBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcblxuICAgIGlmIChjaCAhPT0gMHg3Qy8qIHwgKi8gJiYgY2ggIT09IDB4MkQvKiAtICovICYmIGNoICE9PSAweDNBLyogOiAqLyAmJiAhaXNTcGFjZShjaCkpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAgIHBvcysrXG4gIH1cblxuICBsZXQgbGluZVRleHQgPSBnZXRMaW5lKHN0YXRlLCBzdGFydExpbmUgKyAxKVxuICBsZXQgY29sdW1ucyA9IGxpbmVUZXh0LnNwbGl0KCd8JylcbiAgY29uc3QgYWxpZ25zID0gW11cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgdCA9IGNvbHVtbnNbaV0udHJpbSgpXG4gICAgaWYgKCF0KSB7XG4gICAgICAvLyBhbGxvdyBlbXB0eSBjb2x1bW5zIGJlZm9yZSBhbmQgYWZ0ZXIgdGFibGUsIGJ1dCBub3QgaW4gYmV0d2VlbiBjb2x1bW5zO1xuICAgICAgLy8gZS5nLiBhbGxvdyBgIHwtLS18IGAsIGRpc2FsbG93IGAgLS0tfHwtLS0gYFxuICAgICAgaWYgKGkgPT09IDAgfHwgaSA9PT0gY29sdW1ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIS9eOj8tKzo/JC8udGVzdCh0KSkgeyByZXR1cm4gZmFsc2UgfVxuICAgIGlmICh0LmNoYXJDb2RlQXQodC5sZW5ndGggLSAxKSA9PT0gMHgzQS8qIDogKi8pIHtcbiAgICAgIGFsaWducy5wdXNoKHQuY2hhckNvZGVBdCgwKSA9PT0gMHgzQS8qIDogKi8gPyAnY2VudGVyJyA6ICdyaWdodCcpXG4gICAgfSBlbHNlIGlmICh0LmNoYXJDb2RlQXQoMCkgPT09IDB4M0EvKiA6ICovKSB7XG4gICAgICBhbGlnbnMucHVzaCgnbGVmdCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWducy5wdXNoKCcnKVxuICAgIH1cbiAgfVxuXG4gIGxpbmVUZXh0ID0gZ2V0TGluZShzdGF0ZSwgc3RhcnRMaW5lKS50cmltKClcbiAgaWYgKGxpbmVUZXh0LmluZGV4T2YoJ3wnKSA9PT0gLTEpIHsgcmV0dXJuIGZhbHNlIH1cbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlIH1cbiAgY29sdW1ucyA9IGVzY2FwZWRTcGxpdChsaW5lVGV4dClcbiAgaWYgKGNvbHVtbnMubGVuZ3RoICYmIGNvbHVtbnNbMF0gPT09ICcnKSBjb2x1bW5zLnNoaWZ0KClcbiAgaWYgKGNvbHVtbnMubGVuZ3RoICYmIGNvbHVtbnNbY29sdW1ucy5sZW5ndGggLSAxXSA9PT0gJycpIGNvbHVtbnMucG9wKClcblxuICAvLyBoZWFkZXIgcm93IHdpbGwgZGVmaW5lIGFuIGFtb3VudCBvZiBjb2x1bW5zIGluIHRoZSBlbnRpcmUgdGFibGUsXG4gIC8vIGFuZCBhbGlnbiByb3cgc2hvdWxkIGJlIGV4YWN0bHkgdGhlIHNhbWUgKHRoZSByZXN0IG9mIHRoZSByb3dzIGNhbiBkaWZmZXIpXG4gIGNvbnN0IGNvbHVtbkNvdW50ID0gY29sdW1ucy5sZW5ndGhcbiAgaWYgKGNvbHVtbkNvdW50ID09PSAwIHx8IGNvbHVtbkNvdW50ICE9PSBhbGlnbnMubGVuZ3RoKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZSB9XG5cbiAgY29uc3Qgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGVcbiAgc3RhdGUucGFyZW50VHlwZSA9ICd0YWJsZSdcblxuICAvLyB1c2UgJ2Jsb2NrcXVvdGUnIGxpc3RzIGZvciB0ZXJtaW5hdGlvbiBiZWNhdXNlIGl0J3NcbiAgLy8gdGhlIG1vc3Qgc2ltaWxhciB0byB0YWJsZXNcbiAgY29uc3QgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ2Jsb2NrcXVvdGUnKVxuXG4gIGNvbnN0IHRva2VuX3RvID0gc3RhdGUucHVzaCgndGFibGVfb3BlbicsICd0YWJsZScsIDEpXG4gIGNvbnN0IHRhYmxlTGluZXMgPSBbc3RhcnRMaW5lLCAwXVxuICB0b2tlbl90by5tYXAgPSB0YWJsZUxpbmVzXG5cbiAgY29uc3QgdG9rZW5fdGhvID0gc3RhdGUucHVzaCgndGhlYWRfb3BlbicsICd0aGVhZCcsIDEpXG4gIHRva2VuX3Roby5tYXAgPSBbc3RhcnRMaW5lLCBzdGFydExpbmUgKyAxXVxuXG4gIGNvbnN0IHRva2VuX2h0cm8gPSBzdGF0ZS5wdXNoKCd0cl9vcGVuJywgJ3RyJywgMSlcbiAgdG9rZW5faHRyby5tYXAgPSBbc3RhcnRMaW5lLCBzdGFydExpbmUgKyAxXVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY29sdW1ucy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHRva2VuX2hvID0gc3RhdGUucHVzaCgndGhfb3BlbicsICd0aCcsIDEpXG4gICAgaWYgKGFsaWduc1tpXSkge1xuICAgICAgdG9rZW5faG8uYXR0cnMgID0gW1snc3R5bGUnLCAndGV4dC1hbGlnbjonICsgYWxpZ25zW2ldXV1cbiAgICB9XG5cbiAgICBjb25zdCB0b2tlbl9pbCA9IHN0YXRlLnB1c2goJ2lubGluZScsICcnLCAwKVxuICAgIHRva2VuX2lsLmNvbnRlbnQgID0gY29sdW1uc1tpXS50cmltKClcbiAgICB0b2tlbl9pbC5jaGlsZHJlbiA9IFtdXG5cbiAgICBzdGF0ZS5wdXNoKCd0aF9jbG9zZScsICd0aCcsIC0xKVxuICB9XG5cbiAgc3RhdGUucHVzaCgndHJfY2xvc2UnLCAndHInLCAtMSlcbiAgc3RhdGUucHVzaCgndGhlYWRfY2xvc2UnLCAndGhlYWQnLCAtMSlcblxuICBsZXQgdGJvZHlMaW5lc1xuICBsZXQgYXV0b2NvbXBsZXRlZENlbGxzID0gMFxuXG4gIGZvciAobmV4dExpbmUgPSBzdGFydExpbmUgKyAyOyBuZXh0TGluZSA8IGVuZExpbmU7IG5leHRMaW5lKyspIHtcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkgeyBicmVhayB9XG5cbiAgICBsZXQgdGVybWluYXRlID0gZmFsc2VcbiAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGlmICh0ZXJtaW5hdG9yUnVsZXNbaV0oc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKSkge1xuICAgICAgICB0ZXJtaW5hdGUgPSB0cnVlXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRlcm1pbmF0ZSkgeyBicmVhayB9XG4gICAgbGluZVRleHQgPSBnZXRMaW5lKHN0YXRlLCBuZXh0TGluZSkudHJpbSgpXG4gICAgaWYgKCFsaW5lVGV4dCkgeyBicmVhayB9XG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyBicmVhayB9XG4gICAgY29sdW1ucyA9IGVzY2FwZWRTcGxpdChsaW5lVGV4dClcbiAgICBpZiAoY29sdW1ucy5sZW5ndGggJiYgY29sdW1uc1swXSA9PT0gJycpIGNvbHVtbnMuc2hpZnQoKVxuICAgIGlmIChjb2x1bW5zLmxlbmd0aCAmJiBjb2x1bW5zW2NvbHVtbnMubGVuZ3RoIC0gMV0gPT09ICcnKSBjb2x1bW5zLnBvcCgpXG5cbiAgICAvLyBub3RlOiBhdXRvY29tcGxldGUgY291bnQgY2FuIGJlIG5lZ2F0aXZlIGlmIHVzZXIgc3BlY2lmaWVzIG1vcmUgY29sdW1ucyB0aGFuIGhlYWRlcixcbiAgICAvLyBidXQgdGhhdCBkb2VzIG5vdCBhZmZlY3QgaW50ZW5kZWQgdXNlICh3aGljaCBpcyBsaW1pdGluZyBleHBhbnNpb24pXG4gICAgYXV0b2NvbXBsZXRlZENlbGxzICs9IGNvbHVtbkNvdW50IC0gY29sdW1ucy5sZW5ndGhcbiAgICBpZiAoYXV0b2NvbXBsZXRlZENlbGxzID4gTUFYX0FVVE9DT01QTEVURURfQ0VMTFMpIHsgYnJlYWsgfVxuXG4gICAgaWYgKG5leHRMaW5lID09PSBzdGFydExpbmUgKyAyKSB7XG4gICAgICBjb25zdCB0b2tlbl90Ym8gPSBzdGF0ZS5wdXNoKCd0Ym9keV9vcGVuJywgJ3Rib2R5JywgMSlcbiAgICAgIHRva2VuX3Riby5tYXAgPSB0Ym9keUxpbmVzID0gW3N0YXJ0TGluZSArIDIsIDBdXG4gICAgfVxuXG4gICAgY29uc3QgdG9rZW5fdHJvID0gc3RhdGUucHVzaCgndHJfb3BlbicsICd0cicsIDEpXG4gICAgdG9rZW5fdHJvLm1hcCA9IFtuZXh0TGluZSwgbmV4dExpbmUgKyAxXVxuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb2x1bW5Db3VudDsgaSsrKSB7XG4gICAgICBjb25zdCB0b2tlbl90ZG8gPSBzdGF0ZS5wdXNoKCd0ZF9vcGVuJywgJ3RkJywgMSlcbiAgICAgIGlmIChhbGlnbnNbaV0pIHtcbiAgICAgICAgdG9rZW5fdGRvLmF0dHJzICA9IFtbJ3N0eWxlJywgJ3RleHQtYWxpZ246JyArIGFsaWduc1tpXV1dXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRva2VuX2lsID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApXG4gICAgICB0b2tlbl9pbC5jb250ZW50ICA9IGNvbHVtbnNbaV0gPyBjb2x1bW5zW2ldLnRyaW0oKSA6ICcnXG4gICAgICB0b2tlbl9pbC5jaGlsZHJlbiA9IFtdXG5cbiAgICAgIHN0YXRlLnB1c2goJ3RkX2Nsb3NlJywgJ3RkJywgLTEpXG4gICAgfVxuICAgIHN0YXRlLnB1c2goJ3RyX2Nsb3NlJywgJ3RyJywgLTEpXG4gIH1cblxuICBpZiAodGJvZHlMaW5lcykge1xuICAgIHN0YXRlLnB1c2goJ3Rib2R5X2Nsb3NlJywgJ3Rib2R5JywgLTEpXG4gICAgdGJvZHlMaW5lc1sxXSA9IG5leHRMaW5lXG4gIH1cblxuICBzdGF0ZS5wdXNoKCd0YWJsZV9jbG9zZScsICd0YWJsZScsIC0xKVxuICB0YWJsZUxpbmVzWzFdID0gbmV4dExpbmVcblxuICBzdGF0ZS5wYXJlbnRUeXBlID0gb2xkUGFyZW50VHlwZVxuICBzdGF0ZS5saW5lID0gbmV4dExpbmVcbiAgcmV0dXJuIHRydWVcbn1cbiIsICIvLyBDb2RlIGJsb2NrICg0IHNwYWNlcyBwYWRkZWQpXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvZGUgKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUvKiwgc2lsZW50ICovKSB7XG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA8IDQpIHsgcmV0dXJuIGZhbHNlIH1cblxuICBsZXQgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxXG4gIGxldCBsYXN0ID0gbmV4dExpbmVcblxuICB3aGlsZSAobmV4dExpbmUgPCBlbmRMaW5lKSB7XG4gICAgaWYgKHN0YXRlLmlzRW1wdHkobmV4dExpbmUpKSB7XG4gICAgICBuZXh0TGluZSsrXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHtcbiAgICAgIG5leHRMaW5lKytcbiAgICAgIGxhc3QgPSBuZXh0TGluZVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgYnJlYWtcbiAgfVxuXG4gIHN0YXRlLmxpbmUgPSBsYXN0XG5cbiAgY29uc3QgdG9rZW4gICA9IHN0YXRlLnB1c2goJ2NvZGVfYmxvY2snLCAnY29kZScsIDApXG4gIHRva2VuLmNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIGxhc3QsIDQgKyBzdGF0ZS5ibGtJbmRlbnQsIGZhbHNlKSArICdcXG4nXG4gIHRva2VuLm1hcCAgICAgPSBbc3RhcnRMaW5lLCBzdGF0ZS5saW5lXVxuXG4gIHJldHVybiB0cnVlXG59XG4iLCAiLy8gZmVuY2VzIChgYGAgbGFuZywgfn5+IGxhbmcpXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZlbmNlIChzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgbGV0IHBvcyA9IHN0YXRlLmJNYXJrc1tzdGFydExpbmVdICsgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV1cbiAgbGV0IG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdXG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlIH1cblxuICBpZiAocG9zICsgMyA+IG1heCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGNvbnN0IG1hcmtlciA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcblxuICBpZiAobWFya2VyICE9PSAweDdFLyogfiAqLyAmJiBtYXJrZXIgIT09IDB4NjAgLyogYCAqLykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gc2NhbiBtYXJrZXIgbGVuZ3RoXG4gIGxldCBtZW0gPSBwb3NcbiAgcG9zID0gc3RhdGUuc2tpcENoYXJzKHBvcywgbWFya2VyKVxuXG4gIGxldCBsZW4gPSBwb3MgLSBtZW1cblxuICBpZiAobGVuIDwgMykgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGNvbnN0IG1hcmt1cCA9IHN0YXRlLnNyYy5zbGljZShtZW0sIHBvcylcbiAgY29uc3QgcGFyYW1zID0gc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4KVxuXG4gIGlmIChtYXJrZXIgPT09IDB4NjAgLyogYCAqLykge1xuICAgIGlmIChwYXJhbXMuaW5kZXhPZihTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcikpID49IDApIHtcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIC8vIFNpbmNlIHN0YXJ0IGlzIGZvdW5kLCB3ZSBjYW4gcmVwb3J0IHN1Y2Nlc3MgaGVyZSBpbiB2YWxpZGF0aW9uIG1vZGVcbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZSB9XG5cbiAgLy8gc2VhcmNoIGVuZCBvZiBibG9ja1xuICBsZXQgbmV4dExpbmUgPSBzdGFydExpbmVcbiAgbGV0IGhhdmVFbmRNYXJrZXIgPSBmYWxzZVxuXG4gIGZvciAoOzspIHtcbiAgICBuZXh0TGluZSsrXG4gICAgaWYgKG5leHRMaW5lID49IGVuZExpbmUpIHtcbiAgICAgIC8vIHVuY2xvc2VkIGJsb2NrIHNob3VsZCBiZSBhdXRvY2xvc2VkIGJ5IGVuZCBvZiBkb2N1bWVudC5cbiAgICAgIC8vIGFsc28gYmxvY2sgc2VlbXMgdG8gYmUgYXV0b2Nsb3NlZCBieSBlbmQgb2YgcGFyZW50XG4gICAgICBicmVha1xuICAgIH1cblxuICAgIHBvcyA9IG1lbSA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdXG4gICAgbWF4ID0gc3RhdGUuZU1hcmtzW25leHRMaW5lXVxuXG4gICAgaWYgKHBvcyA8IG1heCAmJiBzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICAvLyBub24tZW1wdHkgbGluZSB3aXRoIG5lZ2F0aXZlIGluZGVudCBzaG91bGQgc3RvcCB0aGUgbGlzdDpcbiAgICAgIC8vIC0gYGBgXG4gICAgICAvLyAgdGVzdFxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gbWFya2VyKSB7IGNvbnRpbnVlIH1cblxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHtcbiAgICAgIC8vIGNsb3NpbmcgZmVuY2Ugc2hvdWxkIGJlIGluZGVudGVkIGxlc3MgdGhhbiA0IHNwYWNlc1xuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBwb3MgPSBzdGF0ZS5za2lwQ2hhcnMocG9zLCBtYXJrZXIpXG5cbiAgICAvLyBjbG9zaW5nIGNvZGUgZmVuY2UgbXVzdCBiZSBhdCBsZWFzdCBhcyBsb25nIGFzIHRoZSBvcGVuaW5nIG9uZVxuICAgIGlmIChwb3MgLSBtZW0gPCBsZW4pIHsgY29udGludWUgfVxuXG4gICAgLy8gbWFrZSBzdXJlIHRhaWwgaGFzIHNwYWNlcyBvbmx5XG4gICAgcG9zID0gc3RhdGUuc2tpcFNwYWNlcyhwb3MpXG5cbiAgICBpZiAocG9zIDwgbWF4KSB7IGNvbnRpbnVlIH1cblxuICAgIGhhdmVFbmRNYXJrZXIgPSB0cnVlXG4gICAgLy8gZm91bmQhXG4gICAgYnJlYWtcbiAgfVxuXG4gIC8vIElmIGEgZmVuY2UgaGFzIGhlYWRpbmcgc3BhY2VzLCB0aGV5IHNob3VsZCBiZSByZW1vdmVkIGZyb20gaXRzIGlubmVyIGJsb2NrXG4gIGxlbiA9IHN0YXRlLnNDb3VudFtzdGFydExpbmVdXG5cbiAgc3RhdGUubGluZSA9IG5leHRMaW5lICsgKGhhdmVFbmRNYXJrZXIgPyAxIDogMClcblxuICBjb25zdCB0b2tlbiAgID0gc3RhdGUucHVzaCgnZmVuY2UnLCAnY29kZScsIDApXG4gIHRva2VuLmluZm8gICAgPSBwYXJhbXNcbiAgdG9rZW4uY29udGVudCA9IHN0YXRlLmdldExpbmVzKHN0YXJ0TGluZSArIDEsIG5leHRMaW5lLCBsZW4sIHRydWUpXG4gIHRva2VuLm1hcmt1cCAgPSBtYXJrdXBcbiAgdG9rZW4ubWFwICAgICA9IFtzdGFydExpbmUsIHN0YXRlLmxpbmVdXG5cbiAgcmV0dXJuIHRydWVcbn1cbiIsICIvLyBCbG9jayBxdW90ZXNcblxuaW1wb3J0IHsgaXNTcGFjZSB9IGZyb20gJy4uL2NvbW1vbi91dGlscy5tanMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJsb2NrcXVvdGUgKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICBsZXQgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXVxuICBsZXQgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV1cblxuICBjb25zdCBvbGRMaW5lTWF4ID0gc3RhdGUubGluZU1heFxuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZSB9XG5cbiAgLy8gY2hlY2sgdGhlIGJsb2NrIHF1b3RlIG1hcmtlclxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgzRS8qID4gKi8pIHsgcmV0dXJuIGZhbHNlIH1cblxuICAvLyB3ZSBrbm93IHRoYXQgaXQncyBnb2luZyB0byBiZSBhIHZhbGlkIGJsb2NrcXVvdGUsXG4gIC8vIHNvIG5vIHBvaW50IHRyeWluZyB0byBmaW5kIHRoZSBlbmQgb2YgaXQgaW4gc2lsZW50IG1vZGVcbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZSB9XG5cbiAgY29uc3Qgb2xkQk1hcmtzICA9IFtdXG4gIGNvbnN0IG9sZEJTQ291bnQgPSBbXVxuICBjb25zdCBvbGRTQ291bnQgID0gW11cbiAgY29uc3Qgb2xkVFNoaWZ0ICA9IFtdXG5cbiAgY29uc3QgdGVybWluYXRvclJ1bGVzID0gc3RhdGUubWQuYmxvY2sucnVsZXIuZ2V0UnVsZXMoJ2Jsb2NrcXVvdGUnKVxuXG4gIGNvbnN0IG9sZFBhcmVudFR5cGUgPSBzdGF0ZS5wYXJlbnRUeXBlXG4gIHN0YXRlLnBhcmVudFR5cGUgPSAnYmxvY2txdW90ZSdcbiAgbGV0IGxhc3RMaW5lRW1wdHkgPSBmYWxzZVxuICBsZXQgbmV4dExpbmVcblxuICAvLyBTZWFyY2ggdGhlIGVuZCBvZiB0aGUgYmxvY2tcbiAgLy9cbiAgLy8gQmxvY2sgZW5kcyB3aXRoIGVpdGhlcjpcbiAgLy8gIDEuIGFuIGVtcHR5IGxpbmUgb3V0c2lkZTpcbiAgLy8gICAgIGBgYFxuICAvLyAgICAgPiB0ZXN0XG4gIC8vXG4gIC8vICAgICBgYGBcbiAgLy8gIDIuIGFuIGVtcHR5IGxpbmUgaW5zaWRlOlxuICAvLyAgICAgYGBgXG4gIC8vICAgICA+XG4gIC8vICAgICB0ZXN0XG4gIC8vICAgICBgYGBcbiAgLy8gIDMuIGFub3RoZXIgdGFnOlxuICAvLyAgICAgYGBgXG4gIC8vICAgICA+IHRlc3RcbiAgLy8gICAgICAtIC0gLVxuICAvLyAgICAgYGBgXG4gIGZvciAobmV4dExpbmUgPSBzdGFydExpbmU7IG5leHRMaW5lIDwgZW5kTGluZTsgbmV4dExpbmUrKykge1xuICAgIC8vIGNoZWNrIGlmIGl0J3Mgb3V0ZGVudGVkLCBpLmUuIGl0J3MgaW5zaWRlIGxpc3QgaXRlbSBhbmQgaW5kZW50ZWRcbiAgICAvLyBsZXNzIHRoYW4gc2FpZCBsaXN0IGl0ZW06XG4gICAgLy9cbiAgICAvLyBgYGBcbiAgICAvLyAxLiBhbnl0aGluZ1xuICAgIC8vICAgID4gY3VycmVudCBibG9ja3F1b3RlXG4gICAgLy8gMi4gY2hlY2tpbmcgdGhpcyBsaW5lXG4gICAgLy8gYGBgXG4gICAgY29uc3QgaXNPdXRkZW50ZWQgPSBzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50XG5cbiAgICBwb3MgPSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdICsgc3RhdGUudFNoaWZ0W25leHRMaW5lXVxuICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV1cblxuICAgIGlmIChwb3MgPj0gbWF4KSB7XG4gICAgICAvLyBDYXNlIDE6IGxpbmUgaXMgbm90IGluc2lkZSB0aGUgYmxvY2txdW90ZSwgYW5kIHRoaXMgbGluZSBpcyBlbXB0eS5cbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKSA9PT0gMHgzRS8qID4gKi8gJiYgIWlzT3V0ZGVudGVkKSB7XG4gICAgICAvLyBUaGlzIGxpbmUgaXMgaW5zaWRlIHRoZSBibG9ja3F1b3RlLlxuXG4gICAgICAvLyBzZXQgb2Zmc2V0IHBhc3Qgc3BhY2VzIGFuZCBcIj5cIlxuICAgICAgbGV0IGluaXRpYWwgPSBzdGF0ZS5zQ291bnRbbmV4dExpbmVdICsgMVxuICAgICAgbGV0IHNwYWNlQWZ0ZXJNYXJrZXJcbiAgICAgIGxldCBhZGp1c3RUYWJcblxuICAgICAgLy8gc2tpcCBvbmUgb3B0aW9uYWwgc3BhY2UgYWZ0ZXIgJz4nXG4gICAgICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgyMCAvKiBzcGFjZSAqLykge1xuICAgICAgICAvLyAnID4gICB0ZXN0ICdcbiAgICAgICAgLy8gICAgIF4gLS0gcG9zaXRpb24gc3RhcnQgb2YgbGluZSBoZXJlOlxuICAgICAgICBwb3MrK1xuICAgICAgICBpbml0aWFsKytcbiAgICAgICAgYWRqdXN0VGFiID0gZmFsc2VcbiAgICAgICAgc3BhY2VBZnRlck1hcmtlciA9IHRydWVcbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgwOSAvKiB0YWIgKi8pIHtcbiAgICAgICAgc3BhY2VBZnRlck1hcmtlciA9IHRydWVcblxuICAgICAgICBpZiAoKHN0YXRlLmJzQ291bnRbbmV4dExpbmVdICsgaW5pdGlhbCkgJSA0ID09PSAzKSB7XG4gICAgICAgICAgLy8gJyAgPlxcdCAgdGVzdCAnXG4gICAgICAgICAgLy8gICAgICAgXiAtLSBwb3NpdGlvbiBzdGFydCBvZiBsaW5lIGhlcmUgKHRhYiBoYXMgd2lkdGg9PT0xKVxuICAgICAgICAgIHBvcysrXG4gICAgICAgICAgaW5pdGlhbCsrXG4gICAgICAgICAgYWRqdXN0VGFiID0gZmFsc2VcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyAnID5cXHQgIHRlc3QgJ1xuICAgICAgICAgIC8vICAgIF4gLS0gcG9zaXRpb24gc3RhcnQgb2YgbGluZSBoZXJlICsgc2hpZnQgYnNDb3VudCBzbGlnaHRseVxuICAgICAgICAgIC8vICAgICAgICAgdG8gbWFrZSBleHRyYSBzcGFjZSBhcHBlYXJcbiAgICAgICAgICBhZGp1c3RUYWIgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNwYWNlQWZ0ZXJNYXJrZXIgPSBmYWxzZVxuICAgICAgfVxuXG4gICAgICBsZXQgb2Zmc2V0ID0gaW5pdGlhbFxuICAgICAgb2xkQk1hcmtzLnB1c2goc3RhdGUuYk1hcmtzW25leHRMaW5lXSlcbiAgICAgIHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gPSBwb3NcblxuICAgICAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgICAgICBjb25zdCBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcblxuICAgICAgICBpZiAoaXNTcGFjZShjaCkpIHtcbiAgICAgICAgICBpZiAoY2ggPT09IDB4MDkpIHtcbiAgICAgICAgICAgIG9mZnNldCArPSA0IC0gKG9mZnNldCArIHN0YXRlLmJzQ291bnRbbmV4dExpbmVdICsgKGFkanVzdFRhYiA/IDEgOiAwKSkgJSA0XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG9mZnNldCsrXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cblxuICAgICAgICBwb3MrK1xuICAgICAgfVxuXG4gICAgICBsYXN0TGluZUVtcHR5ID0gcG9zID49IG1heFxuXG4gICAgICBvbGRCU0NvdW50LnB1c2goc3RhdGUuYnNDb3VudFtuZXh0TGluZV0pXG4gICAgICBzdGF0ZS5ic0NvdW50W25leHRMaW5lXSA9IHN0YXRlLnNDb3VudFtuZXh0TGluZV0gKyAxICsgKHNwYWNlQWZ0ZXJNYXJrZXIgPyAxIDogMClcblxuICAgICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSlcbiAgICAgIHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPSBvZmZzZXQgLSBpbml0aWFsXG5cbiAgICAgIG9sZFRTaGlmdC5wdXNoKHN0YXRlLnRTaGlmdFtuZXh0TGluZV0pXG4gICAgICBzdGF0ZS50U2hpZnRbbmV4dExpbmVdID0gcG9zIC0gc3RhdGUuYk1hcmtzW25leHRMaW5lXVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICAvLyBDYXNlIDI6IGxpbmUgaXMgbm90IGluc2lkZSB0aGUgYmxvY2txdW90ZSwgYW5kIHRoZSBsYXN0IGxpbmUgd2FzIGVtcHR5LlxuICAgIGlmIChsYXN0TGluZUVtcHR5KSB7IGJyZWFrIH1cblxuICAgIC8vIENhc2UgMzogYW5vdGhlciB0YWcgZm91bmQuXG4gICAgbGV0IHRlcm1pbmF0ZSA9IGZhbHNlXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0ZXJtaW5hdG9yUnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodGVybWluYXRvclJ1bGVzW2ldKHN0YXRlLCBuZXh0TGluZSwgZW5kTGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgdGVybWluYXRlID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0ZXJtaW5hdGUpIHtcbiAgICAgIC8vIFF1aXJrIHRvIGVuZm9yY2UgXCJoYXJkIHRlcm1pbmF0aW9uIG1vZGVcIiBmb3IgcGFyYWdyYXBocztcbiAgICAgIC8vIG5vcm1hbGx5IGlmIHlvdSBjYWxsIGB0b2tlbml6ZShzdGF0ZSwgc3RhcnRMaW5lLCBuZXh0TGluZSlgLFxuICAgICAgLy8gcGFyYWdyYXBocyB3aWxsIGxvb2sgYmVsb3cgbmV4dExpbmUgZm9yIHBhcmFncmFwaCBjb250aW51YXRpb24sXG4gICAgICAvLyBidXQgaWYgYmxvY2txdW90ZSBpcyB0ZXJtaW5hdGVkIGJ5IGFub3RoZXIgdGFnLCB0aGV5IHNob3VsZG4ndFxuICAgICAgc3RhdGUubGluZU1heCA9IG5leHRMaW5lXG5cbiAgICAgIGlmIChzdGF0ZS5ibGtJbmRlbnQgIT09IDApIHtcbiAgICAgICAgLy8gc3RhdGUuYmxrSW5kZW50IHdhcyBub24temVybywgd2Ugbm93IHNldCBpdCB0byB6ZXJvLFxuICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIHJlLWNhbGN1bGF0ZSBhbGwgb2Zmc2V0cyB0byBhcHBlYXIgYXNcbiAgICAgICAgLy8gaWYgaW5kZW50IHdhc24ndCBjaGFuZ2VkXG4gICAgICAgIG9sZEJNYXJrcy5wdXNoKHN0YXRlLmJNYXJrc1tuZXh0TGluZV0pXG4gICAgICAgIG9sZEJTQ291bnQucHVzaChzdGF0ZS5ic0NvdW50W25leHRMaW5lXSlcbiAgICAgICAgb2xkVFNoaWZ0LnB1c2goc3RhdGUudFNoaWZ0W25leHRMaW5lXSlcbiAgICAgICAgb2xkU0NvdW50LnB1c2goc3RhdGUuc0NvdW50W25leHRMaW5lXSlcbiAgICAgICAgc3RhdGUuc0NvdW50W25leHRMaW5lXSAtPSBzdGF0ZS5ibGtJbmRlbnRcbiAgICAgIH1cblxuICAgICAgYnJlYWtcbiAgICB9XG5cbiAgICBvbGRCTWFya3MucHVzaChzdGF0ZS5iTWFya3NbbmV4dExpbmVdKVxuICAgIG9sZEJTQ291bnQucHVzaChzdGF0ZS5ic0NvdW50W25leHRMaW5lXSlcbiAgICBvbGRUU2hpZnQucHVzaChzdGF0ZS50U2hpZnRbbmV4dExpbmVdKVxuICAgIG9sZFNDb3VudC5wdXNoKHN0YXRlLnNDb3VudFtuZXh0TGluZV0pXG5cbiAgICAvLyBBIG5lZ2F0aXZlIGluZGVudGF0aW9uIG1lYW5zIHRoYXQgdGhpcyBpcyBhIHBhcmFncmFwaCBjb250aW51YXRpb25cbiAgICAvL1xuICAgIHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPSAtMVxuICB9XG5cbiAgY29uc3Qgb2xkSW5kZW50ID0gc3RhdGUuYmxrSW5kZW50XG4gIHN0YXRlLmJsa0luZGVudCA9IDBcblxuICBjb25zdCB0b2tlbl9vICA9IHN0YXRlLnB1c2goJ2Jsb2NrcXVvdGVfb3BlbicsICdibG9ja3F1b3RlJywgMSlcbiAgdG9rZW5fby5tYXJrdXAgPSAnPidcbiAgY29uc3QgbGluZXMgPSBbc3RhcnRMaW5lLCAwXVxuICB0b2tlbl9vLm1hcCAgICA9IGxpbmVzXG5cbiAgc3RhdGUubWQuYmxvY2sudG9rZW5pemUoc3RhdGUsIHN0YXJ0TGluZSwgbmV4dExpbmUpXG5cbiAgY29uc3QgdG9rZW5fYyAgPSBzdGF0ZS5wdXNoKCdibG9ja3F1b3RlX2Nsb3NlJywgJ2Jsb2NrcXVvdGUnLCAtMSlcbiAgdG9rZW5fYy5tYXJrdXAgPSAnPidcblxuICBzdGF0ZS5saW5lTWF4ID0gb2xkTGluZU1heFxuICBzdGF0ZS5wYXJlbnRUeXBlID0gb2xkUGFyZW50VHlwZVxuICBsaW5lc1sxXSA9IHN0YXRlLmxpbmVcblxuICAvLyBSZXN0b3JlIG9yaWdpbmFsIHRTaGlmdDsgdGhpcyBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IHNpbmNlIHRoZSBwYXJzZXJcbiAgLy8gaGFzIGFscmVhZHkgYmVlbiBoZXJlLCBidXQganVzdCB0byBtYWtlIHN1cmUgd2UgY2FuIGRvIHRoYXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgb2xkVFNoaWZ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgc3RhdGUuYk1hcmtzW2kgKyBzdGFydExpbmVdID0gb2xkQk1hcmtzW2ldXG4gICAgc3RhdGUudFNoaWZ0W2kgKyBzdGFydExpbmVdID0gb2xkVFNoaWZ0W2ldXG4gICAgc3RhdGUuc0NvdW50W2kgKyBzdGFydExpbmVdID0gb2xkU0NvdW50W2ldXG4gICAgc3RhdGUuYnNDb3VudFtpICsgc3RhcnRMaW5lXSA9IG9sZEJTQ291bnRbaV1cbiAgfVxuICBzdGF0ZS5ibGtJbmRlbnQgPSBvbGRJbmRlbnRcblxuICByZXR1cm4gdHJ1ZVxufVxuIiwgIi8vIEhvcml6b250YWwgcnVsZVxuXG5pbXBvcnQgeyBpc1NwYWNlIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzLm1qcydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaHIgKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICBjb25zdCBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXVxuICAvLyBpZiBpdCdzIGluZGVudGVkIG1vcmUgdGhhbiAzIHNwYWNlcywgaXQgc2hvdWxkIGJlIGEgY29kZSBibG9ja1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGxldCBwb3MgPSBzdGF0ZS5iTWFya3Nbc3RhcnRMaW5lXSArIHN0YXRlLnRTaGlmdFtzdGFydExpbmVdXG4gIGNvbnN0IG1hcmtlciA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKVxuXG4gIC8vIENoZWNrIGhyIG1hcmtlclxuICBpZiAobWFya2VyICE9PSAweDJBLyogKiAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDJELyogLSAqLyAmJlxuICAgICAgbWFya2VyICE9PSAweDVGLyogXyAqLykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gbWFya2VycyBjYW4gYmUgbWl4ZWQgd2l0aCBzcGFjZXMsIGJ1dCB0aGVyZSBzaG91bGQgYmUgYXQgbGVhc3QgMyBvZiB0aGVtXG5cbiAgbGV0IGNudCA9IDFcbiAgd2hpbGUgKHBvcyA8IG1heCkge1xuICAgIGNvbnN0IGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspXG4gICAgaWYgKGNoICE9PSBtYXJrZXIgJiYgIWlzU3BhY2UoY2gpKSB7IHJldHVybiBmYWxzZSB9XG4gICAgaWYgKGNoID09PSBtYXJrZXIpIHsgY250KysgfVxuICB9XG5cbiAgaWYgKGNudCA8IDMpIHsgcmV0dXJuIGZhbHNlIH1cblxuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlIH1cblxuICBzdGF0ZS5saW5lID0gc3RhcnRMaW5lICsgMVxuXG4gIGNvbnN0IHRva2VuICA9IHN0YXRlLnB1c2goJ2hyJywgJ2hyJywgMClcbiAgdG9rZW4ubWFwICAgID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV1cbiAgdG9rZW4ubWFya3VwID0gQXJyYXkoY250ICsgMSkuam9pbihTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcikpXG5cbiAgcmV0dXJuIHRydWVcbn1cbiIsICIvLyBMaXN0c1xuXG5pbXBvcnQgeyBpc1NwYWNlIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzLm1qcydcblxuLy8gU2VhcmNoIGBbLSsqXVtcXG4gXWAsIHJldHVybnMgbmV4dCBwb3MgYWZ0ZXIgbWFya2VyIG9uIHN1Y2Nlc3Ncbi8vIG9yIC0xIG9uIGZhaWwuXG5mdW5jdGlvbiBza2lwQnVsbGV0TGlzdE1hcmtlciAoc3RhdGUsIHN0YXJ0TGluZSkge1xuICBjb25zdCBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXVxuICBsZXQgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXVxuXG4gIGNvbnN0IG1hcmtlciA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKVxuICAvLyBDaGVjayBidWxsZXRcbiAgaWYgKG1hcmtlciAhPT0gMHgyQS8qICogKi8gJiZcbiAgICAgIG1hcmtlciAhPT0gMHgyRC8qIC0gKi8gJiZcbiAgICAgIG1hcmtlciAhPT0gMHgyQi8qICsgKi8pIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuXG4gIGlmIChwb3MgPCBtYXgpIHtcbiAgICBjb25zdCBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcblxuICAgIGlmICghaXNTcGFjZShjaCkpIHtcbiAgICAgIC8vIFwiIC10ZXN0IFwiIC0gaXMgbm90IGEgbGlzdCBpdGVtXG4gICAgICByZXR1cm4gLTFcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcG9zXG59XG5cbi8vIFNlYXJjaCBgXFxkK1suKV1bXFxuIF1gLCByZXR1cm5zIG5leHQgcG9zIGFmdGVyIG1hcmtlciBvbiBzdWNjZXNzXG4vLyBvciAtMSBvbiBmYWlsLlxuZnVuY3Rpb24gc2tpcE9yZGVyZWRMaXN0TWFya2VyIChzdGF0ZSwgc3RhcnRMaW5lKSB7XG4gIGNvbnN0IHN0YXJ0ID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXVxuICBjb25zdCBtYXggPSBzdGF0ZS5lTWFya3Nbc3RhcnRMaW5lXVxuICBsZXQgcG9zID0gc3RhcnRcblxuICAvLyBMaXN0IG1hcmtlciBzaG91bGQgaGF2ZSBhdCBsZWFzdCAyIGNoYXJzIChkaWdpdCArIGRvdClcbiAgaWYgKHBvcyArIDEgPj0gbWF4KSB7IHJldHVybiAtMSB9XG5cbiAgbGV0IGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKyspXG5cbiAgaWYgKGNoIDwgMHgzMC8qIDAgKi8gfHwgY2ggPiAweDM5LyogOSAqLykgeyByZXR1cm4gLTEgfVxuXG4gIGZvciAoOzspIHtcbiAgICAvLyBFT0wgLT4gZmFpbFxuICAgIGlmIChwb3MgPj0gbWF4KSB7IHJldHVybiAtMSB9XG5cbiAgICBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcysrKVxuXG4gICAgaWYgKGNoID49IDB4MzAvKiAwICovICYmIGNoIDw9IDB4MzkvKiA5ICovKSB7XG4gICAgICAvLyBMaXN0IG1hcmtlciBzaG91bGQgaGF2ZSBubyBtb3JlIHRoYW4gOSBkaWdpdHNcbiAgICAgIC8vIChwcmV2ZW50cyBpbnRlZ2VyIG92ZXJmbG93IGluIGJyb3dzZXJzKVxuICAgICAgaWYgKHBvcyAtIHN0YXJ0ID49IDEwKSB7IHJldHVybiAtMSB9XG5cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgLy8gZm91bmQgdmFsaWQgbWFya2VyXG4gICAgaWYgKGNoID09PSAweDI5LyogKSAqLyB8fCBjaCA9PT0gMHgyZS8qIC4gKi8pIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgcmV0dXJuIC0xXG4gIH1cblxuICBpZiAocG9zIDwgbWF4KSB7XG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpXG5cbiAgICBpZiAoIWlzU3BhY2UoY2gpKSB7XG4gICAgICAvLyBcIiAxLnRlc3QgXCIgLSBpcyBub3QgYSBsaXN0IGl0ZW1cbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgfVxuICByZXR1cm4gcG9zXG59XG5cbmZ1bmN0aW9uIG1hcmtUaWdodFBhcmFncmFwaHMgKHN0YXRlLCBpZHgpIHtcbiAgY29uc3QgbGV2ZWwgPSBzdGF0ZS5sZXZlbCArIDJcblxuICBmb3IgKGxldCBpID0gaWR4ICsgMiwgbCA9IHN0YXRlLnRva2Vucy5sZW5ndGggLSAyOyBpIDwgbDsgaSsrKSB7XG4gICAgaWYgKHN0YXRlLnRva2Vuc1tpXS5sZXZlbCA9PT0gbGV2ZWwgJiYgc3RhdGUudG9rZW5zW2ldLnR5cGUgPT09ICdwYXJhZ3JhcGhfb3BlbicpIHtcbiAgICAgIHN0YXRlLnRva2Vuc1tpICsgMl0uaGlkZGVuID0gdHJ1ZVxuICAgICAgc3RhdGUudG9rZW5zW2ldLmhpZGRlbiA9IHRydWVcbiAgICAgIGkgKz0gMlxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaXN0IChzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgbGV0IG1heCwgcG9zLCBzdGFydCwgdG9rZW5cbiAgbGV0IG5leHRMaW5lID0gc3RhcnRMaW5lXG4gIGxldCB0aWdodCA9IHRydWVcblxuICAvLyBpZiBpdCdzIGluZGVudGVkIG1vcmUgdGhhbiAzIHNwYWNlcywgaXQgc2hvdWxkIGJlIGEgY29kZSBibG9ja1xuICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZSB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlOlxuICAvLyAgLSBpdGVtIDFcbiAgLy8gICAtIGl0ZW0gMlxuICAvLyAgICAtIGl0ZW0gM1xuICAvLyAgICAgLSBpdGVtIDRcbiAgLy8gICAgICAtIHRoaXMgb25lIGlzIGEgcGFyYWdyYXBoIGNvbnRpbnVhdGlvblxuICBpZiAoc3RhdGUubGlzdEluZGVudCA+PSAwICYmXG4gICAgICBzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUubGlzdEluZGVudCA+PSA0ICYmXG4gICAgICBzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBsZXQgaXNUZXJtaW5hdGluZ1BhcmFncmFwaCA9IGZhbHNlXG5cbiAgLy8gbGltaXQgY29uZGl0aW9ucyB3aGVuIGxpc3QgY2FuIGludGVycnVwdFxuICAvLyBhIHBhcmFncmFwaCAodmFsaWRhdGlvbiBtb2RlIG9ubHkpXG4gIGlmIChzaWxlbnQgJiYgc3RhdGUucGFyZW50VHlwZSA9PT0gJ3BhcmFncmFwaCcpIHtcbiAgICAvLyBOZXh0IGxpc3QgaXRlbSBzaG91bGQgc3RpbGwgdGVybWluYXRlIHByZXZpb3VzIGxpc3QgaXRlbTtcbiAgICAvL1xuICAgIC8vIFRoaXMgY29kZSBjYW4gZmFpbCBpZiBwbHVnaW5zIHVzZSBibGtJbmRlbnQgYXMgd2VsbCBhcyBsaXN0cyxcbiAgICAvLyBidXQgSSBob3BlIHRoZSBzcGVjIGdldHMgZml4ZWQgbG9uZyBiZWZvcmUgdGhhdCBoYXBwZW5zLlxuICAgIC8vXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPj0gc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICBpc1Rlcm1pbmF0aW5nUGFyYWdyYXBoID0gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIC8vIERldGVjdCBsaXN0IHR5cGUgYW5kIHBvc2l0aW9uIGFmdGVyIG1hcmtlclxuICBsZXQgaXNPcmRlcmVkXG4gIGxldCBtYXJrZXJWYWx1ZVxuICBsZXQgcG9zQWZ0ZXJNYXJrZXJcbiAgaWYgKChwb3NBZnRlck1hcmtlciA9IHNraXBPcmRlcmVkTGlzdE1hcmtlcihzdGF0ZSwgbmV4dExpbmUpKSA+PSAwKSB7XG4gICAgaXNPcmRlcmVkID0gdHJ1ZVxuICAgIHN0YXJ0ID0gc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV1cbiAgICBtYXJrZXJWYWx1ZSA9IE51bWJlcihzdGF0ZS5zcmMuc2xpY2Uoc3RhcnQsIHBvc0FmdGVyTWFya2VyIC0gMSkpXG5cbiAgICAvLyBJZiB3ZSdyZSBzdGFydGluZyBhIG5ldyBvcmRlcmVkIGxpc3QgcmlnaHQgYWZ0ZXJcbiAgICAvLyBhIHBhcmFncmFwaCwgaXQgc2hvdWxkIHN0YXJ0IHdpdGggMS5cbiAgICBpZiAoaXNUZXJtaW5hdGluZ1BhcmFncmFwaCAmJiBtYXJrZXJWYWx1ZSAhPT0gMSkgcmV0dXJuIGZhbHNlXG4gIH0gZWxzZSBpZiAoKHBvc0FmdGVyTWFya2VyID0gc2tpcEJ1bGxldExpc3RNYXJrZXIoc3RhdGUsIG5leHRMaW5lKSkgPj0gMCkge1xuICAgIGlzT3JkZXJlZCA9IGZhbHNlXG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvLyBJZiB3ZSdyZSBzdGFydGluZyBhIG5ldyB1bm9yZGVyZWQgbGlzdCByaWdodCBhZnRlclxuICAvLyBhIHBhcmFncmFwaCwgZmlyc3QgbGluZSBzaG91bGQgbm90IGJlIGVtcHR5LlxuICBpZiAoaXNUZXJtaW5hdGluZ1BhcmFncmFwaCkge1xuICAgIGlmIChzdGF0ZS5za2lwU3BhY2VzKHBvc0FmdGVyTWFya2VyKSA+PSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdKSByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIEZvciB2YWxpZGF0aW9uIG1vZGUgd2UgY2FuIHRlcm1pbmF0ZSBpbW1lZGlhdGVseVxuICBpZiAoc2lsZW50KSB7IHJldHVybiB0cnVlIH1cblxuICAvLyBXZSBzaG91bGQgdGVybWluYXRlIGxpc3Qgb24gc3R5bGUgY2hhbmdlLiBSZW1lbWJlciBmaXJzdCBvbmUgdG8gY29tcGFyZS5cbiAgY29uc3QgbWFya2VyQ2hhckNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3NBZnRlck1hcmtlciAtIDEpXG5cbiAgLy8gU3RhcnQgbGlzdFxuICBjb25zdCBsaXN0VG9rSWR4ID0gc3RhdGUudG9rZW5zLmxlbmd0aFxuXG4gIGlmIChpc09yZGVyZWQpIHtcbiAgICB0b2tlbiAgICAgICA9IHN0YXRlLnB1c2goJ29yZGVyZWRfbGlzdF9vcGVuJywgJ29sJywgMSlcbiAgICBpZiAobWFya2VyVmFsdWUgIT09IDEpIHtcbiAgICAgIHRva2VuLmF0dHJzID0gW1snc3RhcnQnLCBtYXJrZXJWYWx1ZV1dXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRva2VuICAgICAgID0gc3RhdGUucHVzaCgnYnVsbGV0X2xpc3Rfb3BlbicsICd1bCcsIDEpXG4gIH1cblxuICBjb25zdCBsaXN0TGluZXMgPSBbbmV4dExpbmUsIDBdXG4gIHRva2VuLm1hcCAgICA9IGxpc3RMaW5lc1xuICB0b2tlbi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlckNoYXJDb2RlKVxuXG4gIC8vXG4gIC8vIEl0ZXJhdGUgbGlzdCBpdGVtc1xuICAvL1xuXG4gIGxldCBwcmV2RW1wdHlFbmQgPSBmYWxzZVxuICBjb25zdCB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygnbGlzdCcpXG5cbiAgY29uc3Qgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGVcbiAgc3RhdGUucGFyZW50VHlwZSA9ICdsaXN0J1xuXG4gIHdoaWxlIChuZXh0TGluZSA8IGVuZExpbmUpIHtcbiAgICBwb3MgPSBwb3NBZnRlck1hcmtlclxuICAgIG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV1cblxuICAgIGNvbnN0IGluaXRpYWwgPSBzdGF0ZS5zQ291bnRbbmV4dExpbmVdICsgcG9zQWZ0ZXJNYXJrZXIgLSAoc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV0pXG4gICAgbGV0IG9mZnNldCA9IGluaXRpYWxcblxuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIGNvbnN0IGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKVxuXG4gICAgICBpZiAoY2ggPT09IDB4MDkpIHtcbiAgICAgICAgb2Zmc2V0ICs9IDQgLSAob2Zmc2V0ICsgc3RhdGUuYnNDb3VudFtuZXh0TGluZV0pICUgNFxuICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyMCkge1xuICAgICAgICBvZmZzZXQrK1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cblxuICAgICAgcG9zKytcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50U3RhcnQgPSBwb3NcbiAgICBsZXQgaW5kZW50QWZ0ZXJNYXJrZXJcblxuICAgIGlmIChjb250ZW50U3RhcnQgPj0gbWF4KSB7XG4gICAgICAvLyB0cmltbWluZyBzcGFjZSBpbiBcIi0gICAgXFxuICAzXCIgY2FzZSwgaW5kZW50IGlzIDEgaGVyZVxuICAgICAgaW5kZW50QWZ0ZXJNYXJrZXIgPSAxXG4gICAgfSBlbHNlIHtcbiAgICAgIGluZGVudEFmdGVyTWFya2VyID0gb2Zmc2V0IC0gaW5pdGlhbFxuICAgIH1cblxuICAgIC8vIElmIHdlIGhhdmUgbW9yZSB0aGFuIDQgc3BhY2VzLCB0aGUgaW5kZW50IGlzIDFcbiAgICAvLyAodGhlIHJlc3QgaXMganVzdCBpbmRlbnRlZCBjb2RlIGJsb2NrKVxuICAgIGlmIChpbmRlbnRBZnRlck1hcmtlciA+IDQpIHsgaW5kZW50QWZ0ZXJNYXJrZXIgPSAxIH1cblxuICAgIC8vIFwiICAtICB0ZXN0XCJcbiAgICAvLyAgXl5eXl4gLSBjYWxjdWxhdGluZyB0b3RhbCBsZW5ndGggb2YgdGhpcyB0aGluZ1xuICAgIGNvbnN0IGluZGVudCA9IGluaXRpYWwgKyBpbmRlbnRBZnRlck1hcmtlclxuXG4gICAgLy8gUnVuIHN1YnBhcnNlciAmIHdyaXRlIHRva2Vuc1xuICAgIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2xpc3RfaXRlbV9vcGVuJywgJ2xpJywgMSlcbiAgICB0b2tlbi5tYXJrdXAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlckNoYXJDb2RlKVxuICAgIGNvbnN0IGl0ZW1MaW5lcyA9IFtuZXh0TGluZSwgMF1cbiAgICB0b2tlbi5tYXAgICAgPSBpdGVtTGluZXNcbiAgICBpZiAoaXNPcmRlcmVkKSB7XG4gICAgICB0b2tlbi5pbmZvID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBwb3NBZnRlck1hcmtlciAtIDEpXG4gICAgfVxuXG4gICAgLy8gY2hhbmdlIGN1cnJlbnQgc3RhdGUsIHRoZW4gcmVzdG9yZSBpdCBhZnRlciBwYXJzZXIgc3ViY2FsbFxuICAgIGNvbnN0IG9sZFRpZ2h0ID0gc3RhdGUudGlnaHRcbiAgICBjb25zdCBvbGRUU2hpZnQgPSBzdGF0ZS50U2hpZnRbbmV4dExpbmVdXG4gICAgY29uc3Qgb2xkU0NvdW50ID0gc3RhdGUuc0NvdW50W25leHRMaW5lXVxuXG4gICAgLy8gIC0gZXhhbXBsZSBsaXN0XG4gICAgLy8gXiBsaXN0SW5kZW50IHBvc2l0aW9uIHdpbGwgYmUgaGVyZVxuICAgIC8vICAgXiBibGtJbmRlbnQgcG9zaXRpb24gd2lsbCBiZSBoZXJlXG4gICAgLy9cbiAgICBjb25zdCBvbGRMaXN0SW5kZW50ID0gc3RhdGUubGlzdEluZGVudFxuICAgIHN0YXRlLmxpc3RJbmRlbnQgPSBzdGF0ZS5ibGtJbmRlbnRcbiAgICBzdGF0ZS5ibGtJbmRlbnQgPSBpbmRlbnRcblxuICAgIHN0YXRlLnRpZ2h0ID0gdHJ1ZVxuICAgIHN0YXRlLnRTaGlmdFtuZXh0TGluZV0gPSBjb250ZW50U3RhcnQgLSBzdGF0ZS5iTWFya3NbbmV4dExpbmVdXG4gICAgc3RhdGUuc0NvdW50W25leHRMaW5lXSA9IG9mZnNldFxuXG4gICAgaWYgKGNvbnRlbnRTdGFydCA+PSBtYXggJiYgc3RhdGUuaXNFbXB0eShuZXh0TGluZSArIDEpKSB7XG4gICAgICAvLyB3b3JrYXJvdW5kIGZvciB0aGlzIGNhc2VcbiAgICAgIC8vIChsaXN0IGl0ZW0gaXMgZW1wdHksIGxpc3QgdGVybWluYXRlcyBiZWZvcmUgXCJmb29cIik6XG4gICAgICAvLyB+fn5+fn5+flxuICAgICAgLy8gICAtXG4gICAgICAvL1xuICAgICAgLy8gICAgIGZvb1xuICAgICAgLy8gfn5+fn5+fn5cbiAgICAgIHN0YXRlLmxpbmUgPSBNYXRoLm1pbihzdGF0ZS5saW5lICsgMiwgZW5kTGluZSlcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUubWQuYmxvY2sudG9rZW5pemUoc3RhdGUsIG5leHRMaW5lLCBlbmRMaW5lLCB0cnVlKVxuICAgIH1cblxuICAgIC8vIElmIGFueSBvZiBsaXN0IGl0ZW0gaXMgdGlnaHQsIG1hcmsgbGlzdCBhcyB0aWdodFxuICAgIGlmICghc3RhdGUudGlnaHQgfHwgcHJldkVtcHR5RW5kKSB7XG4gICAgICB0aWdodCA9IGZhbHNlXG4gICAgfVxuICAgIC8vIEl0ZW0gYmVjb21lIGxvb3NlIGlmIGZpbmlzaCB3aXRoIGVtcHR5IGxpbmUsXG4gICAgLy8gYnV0IHdlIHNob3VsZCBmaWx0ZXIgbGFzdCBlbGVtZW50LCBiZWNhdXNlIGl0IG1lYW5zIGxpc3QgZmluaXNoXG4gICAgcHJldkVtcHR5RW5kID0gKHN0YXRlLmxpbmUgLSBuZXh0TGluZSkgPiAxICYmIHN0YXRlLmlzRW1wdHkoc3RhdGUubGluZSAtIDEpXG5cbiAgICBzdGF0ZS5ibGtJbmRlbnQgPSBzdGF0ZS5saXN0SW5kZW50XG4gICAgc3RhdGUubGlzdEluZGVudCA9IG9sZExpc3RJbmRlbnRcbiAgICBzdGF0ZS50U2hpZnRbbmV4dExpbmVdID0gb2xkVFNoaWZ0XG4gICAgc3RhdGUuc0NvdW50W25leHRMaW5lXSA9IG9sZFNDb3VudFxuICAgIHN0YXRlLnRpZ2h0ID0gb2xkVGlnaHRcblxuICAgIHRva2VuICAgICAgICA9IHN0YXRlLnB1c2goJ2xpc3RfaXRlbV9jbG9zZScsICdsaScsIC0xKVxuICAgIHRva2VuLm1hcmt1cCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyQ2hhckNvZGUpXG5cbiAgICBuZXh0TGluZSA9IHN0YXRlLmxpbmVcbiAgICBpdGVtTGluZXNbMV0gPSBuZXh0TGluZVxuXG4gICAgaWYgKG5leHRMaW5lID49IGVuZExpbmUpIHsgYnJlYWsgfVxuXG4gICAgLy9cbiAgICAvLyBUcnkgdG8gY2hlY2sgaWYgbGlzdCBpcyB0ZXJtaW5hdGVkIG9yIGNvbnRpbnVlZC5cbiAgICAvL1xuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgc3RhdGUuYmxrSW5kZW50KSB7IGJyZWFrIH1cblxuICAgIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyBicmVhayB9XG5cbiAgICAvLyBmYWlsIGlmIHRlcm1pbmF0aW5nIGJsb2NrIGZvdW5kXG4gICAgbGV0IHRlcm1pbmF0ZSA9IGZhbHNlXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0ZXJtaW5hdG9yUnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodGVybWluYXRvclJ1bGVzW2ldKHN0YXRlLCBuZXh0TGluZSwgZW5kTGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgdGVybWluYXRlID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7IGJyZWFrIH1cblxuICAgIC8vIGZhaWwgaWYgbGlzdCBoYXMgYW5vdGhlciB0eXBlXG4gICAgaWYgKGlzT3JkZXJlZCkge1xuICAgICAgcG9zQWZ0ZXJNYXJrZXIgPSBza2lwT3JkZXJlZExpc3RNYXJrZXIoc3RhdGUsIG5leHRMaW5lKVxuICAgICAgaWYgKHBvc0FmdGVyTWFya2VyIDwgMCkgeyBicmVhayB9XG4gICAgICBzdGFydCA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdXG4gICAgfSBlbHNlIHtcbiAgICAgIHBvc0FmdGVyTWFya2VyID0gc2tpcEJ1bGxldExpc3RNYXJrZXIoc3RhdGUsIG5leHRMaW5lKVxuICAgICAgaWYgKHBvc0FmdGVyTWFya2VyIDwgMCkgeyBicmVhayB9XG4gICAgfVxuXG4gICAgaWYgKG1hcmtlckNoYXJDb2RlICE9PSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3NBZnRlck1hcmtlciAtIDEpKSB7IGJyZWFrIH1cbiAgfVxuXG4gIC8vIEZpbmFsaXplIGxpc3RcbiAgaWYgKGlzT3JkZXJlZCkge1xuICAgIHRva2VuID0gc3RhdGUucHVzaCgnb3JkZXJlZF9saXN0X2Nsb3NlJywgJ29sJywgLTEpXG4gIH0gZWxzZSB7XG4gICAgdG9rZW4gPSBzdGF0ZS5wdXNoKCdidWxsZXRfbGlzdF9jbG9zZScsICd1bCcsIC0xKVxuICB9XG4gIHRva2VuLm1hcmt1cCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyQ2hhckNvZGUpXG5cbiAgbGlzdExpbmVzWzFdID0gbmV4dExpbmVcbiAgc3RhdGUubGluZSA9IG5leHRMaW5lXG5cbiAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGVcblxuICAvLyBtYXJrIHBhcmFncmFwaHMgdGlnaHQgaWYgbmVlZGVkXG4gIGlmICh0aWdodCkge1xuICAgIG1hcmtUaWdodFBhcmFncmFwaHMoc3RhdGUsIGxpc3RUb2tJZHgpXG4gIH1cblxuICByZXR1cm4gdHJ1ZVxufVxuIiwgImltcG9ydCB7IGlzU3BhY2UsIG5vcm1hbGl6ZVJlZmVyZW5jZSB9IGZyb20gJy4uL2NvbW1vbi91dGlscy5tanMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlZmVyZW5jZSAoc3RhdGUsIHN0YXJ0TGluZSwgX2VuZExpbmUsIHNpbGVudCkge1xuICBsZXQgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXVxuICBsZXQgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV1cbiAgbGV0IG5leHRMaW5lID0gc3RhcnRMaW5lICsgMVxuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZSB9XG5cbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4NUIvKiBbICovKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgZnVuY3Rpb24gZ2V0TmV4dExpbmUgKG5leHRMaW5lKSB7XG4gICAgY29uc3QgZW5kTGluZSA9IHN0YXRlLmxpbmVNYXhcblxuICAgIGlmIChuZXh0TGluZSA+PSBlbmRMaW5lIHx8IHN0YXRlLmlzRW1wdHkobmV4dExpbmUpKSB7XG4gICAgICAvLyBlbXB0eSBsaW5lIG9yIGVuZCBvZiBpbnB1dFxuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBsZXQgaXNDb250aW51YXRpb24gPSBmYWxzZVxuXG4gICAgLy8gdGhpcyB3b3VsZCBiZSBhIGNvZGUgYmxvY2sgbm9ybWFsbHksIGJ1dCBhZnRlciBwYXJhZ3JhcGhcbiAgICAvLyBpdCdzIGNvbnNpZGVyZWQgYSBsYXp5IGNvbnRpbnVhdGlvbiByZWdhcmRsZXNzIG9mIHdoYXQncyB0aGVyZVxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID4gMykgeyBpc0NvbnRpbnVhdGlvbiA9IHRydWUgfVxuXG4gICAgLy8gcXVpcmsgZm9yIGJsb2NrcXVvdGVzLCB0aGlzIGxpbmUgc2hvdWxkIGFscmVhZHkgYmUgY2hlY2tlZCBieSB0aGF0IHJ1bGVcbiAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IDApIHsgaXNDb250aW51YXRpb24gPSB0cnVlIH1cblxuICAgIGlmICghaXNDb250aW51YXRpb24pIHtcbiAgICAgIGNvbnN0IHRlcm1pbmF0b3JSdWxlcyA9IHN0YXRlLm1kLmJsb2NrLnJ1bGVyLmdldFJ1bGVzKCdyZWZlcmVuY2UnKVxuICAgICAgY29uc3Qgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGVcbiAgICAgIHN0YXRlLnBhcmVudFR5cGUgPSAncmVmZXJlbmNlJ1xuXG4gICAgICAvLyBTb21lIHRhZ3MgY2FuIHRlcm1pbmF0ZSBwYXJhZ3JhcGggd2l0aG91dCBlbXB0eSBsaW5lLlxuICAgICAgbGV0IHRlcm1pbmF0ZSA9IGZhbHNlXG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IHRlcm1pbmF0b3JSdWxlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgICAgdGVybWluYXRlID0gdHJ1ZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3RhdGUucGFyZW50VHlwZSA9IG9sZFBhcmVudFR5cGVcbiAgICAgIGlmICh0ZXJtaW5hdGUpIHtcbiAgICAgICAgLy8gdGVybWluYXRlZCBieSBhbm90aGVyIGJsb2NrXG4gICAgICAgIHJldHVybiBudWxsXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcG9zID0gc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV1cbiAgICBjb25zdCBtYXggPSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdXG5cbiAgICAvLyBtYXggKyAxIGV4cGxpY2l0bHkgaW5jbHVkZXMgdGhlIG5ld2xpbmVcbiAgICByZXR1cm4gc3RhdGUuc3JjLnNsaWNlKHBvcywgbWF4ICsgMSlcbiAgfVxuXG4gIGxldCBzdHIgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXggKyAxKVxuXG4gIG1heCA9IHN0ci5sZW5ndGhcbiAgbGV0IGxhYmVsRW5kID0gLTFcblxuICBmb3IgKHBvcyA9IDE7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBjb25zdCBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcylcbiAgICBpZiAoY2ggPT09IDB4NUIgLyogWyAqLykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1RCAvKiBdICovKSB7XG4gICAgICBsYWJlbEVuZCA9IHBvc1xuICAgICAgYnJlYWtcbiAgICB9IGVsc2UgaWYgKGNoID09PSAweDBBIC8qIFxcbiAqLykge1xuICAgICAgY29uc3QgbGluZUNvbnRlbnQgPSBnZXROZXh0TGluZShuZXh0TGluZSlcbiAgICAgIGlmIChsaW5lQ29udGVudCAhPT0gbnVsbCkge1xuICAgICAgICBzdHIgKz0gbGluZUNvbnRlbnRcbiAgICAgICAgbWF4ID0gc3RyLmxlbmd0aFxuICAgICAgICBuZXh0TGluZSsrXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjaCA9PT0gMHg1QyAvKiBcXCAqLykge1xuICAgICAgcG9zKytcbiAgICAgIGlmIChwb3MgPCBtYXggJiYgc3RyLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgwQSkge1xuICAgICAgICBjb25zdCBsaW5lQ29udGVudCA9IGdldE5leHRMaW5lKG5leHRMaW5lKVxuICAgICAgICBpZiAobGluZUNvbnRlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICBzdHIgKz0gbGluZUNvbnRlbnRcbiAgICAgICAgICBtYXggPSBzdHIubGVuZ3RoXG4gICAgICAgICAgbmV4dExpbmUrK1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKGxhYmVsRW5kIDwgMCB8fCBzdHIuY2hhckNvZGVBdChsYWJlbEVuZCArIDEpICE9PSAweDNBLyogOiAqLykgeyByZXR1cm4gZmFsc2UgfVxuXG4gIC8vIFtsYWJlbF06ICAgZGVzdGluYXRpb24gICAndGl0bGUnXG4gIC8vICAgICAgICAgXl5eIHNraXAgb3B0aW9uYWwgd2hpdGVzcGFjZSBoZXJlXG4gIGZvciAocG9zID0gbGFiZWxFbmQgKyAyOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgY29uc3QgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpXG4gICAgaWYgKGNoID09PSAweDBBKSB7XG4gICAgICBjb25zdCBsaW5lQ29udGVudCA9IGdldE5leHRMaW5lKG5leHRMaW5lKVxuICAgICAgaWYgKGxpbmVDb250ZW50ICE9PSBudWxsKSB7XG4gICAgICAgIHN0ciArPSBsaW5lQ29udGVudFxuICAgICAgICBtYXggPSBzdHIubGVuZ3RoXG4gICAgICAgIG5leHRMaW5lKytcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGlzU3BhY2UoY2gpKSB7XG4gICAgICAvKiBlc2xpbnQgbm8tZW1wdHk6MCAqL1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIC8vIFtsYWJlbF06ICAgZGVzdGluYXRpb24gICAndGl0bGUnXG4gIC8vICAgICAgICAgICAgXl5eXl5eXl5eXl4gcGFyc2UgdGhpc1xuICBjb25zdCBkZXN0UmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdHIsIHBvcywgbWF4KVxuICBpZiAoIWRlc3RSZXMub2spIHsgcmV0dXJuIGZhbHNlIH1cblxuICBjb25zdCBocmVmID0gc3RhdGUubWQubm9ybWFsaXplTGluayhkZXN0UmVzLnN0cilcbiAgaWYgKCFzdGF0ZS5tZC52YWxpZGF0ZUxpbmsoaHJlZikpIHsgcmV0dXJuIGZhbHNlIH1cblxuICBwb3MgPSBkZXN0UmVzLnBvc1xuXG4gIC8vIHNhdmUgY3Vyc29yIHN0YXRlLCB3ZSBjb3VsZCByZXF1aXJlIHRvIHJvbGxiYWNrIGxhdGVyXG4gIGNvbnN0IGRlc3RFbmRQb3MgPSBwb3NcbiAgY29uc3QgZGVzdEVuZExpbmVObyA9IG5leHRMaW5lXG5cbiAgLy8gW2xhYmVsXTogICBkZXN0aW5hdGlvbiAgICd0aXRsZSdcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgIF5eXiBza2lwcGluZyB0aG9zZSBzcGFjZXNcbiAgY29uc3Qgc3RhcnQgPSBwb3NcbiAgZm9yICg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICBjb25zdCBjaCA9IHN0ci5jaGFyQ29kZUF0KHBvcylcbiAgICBpZiAoY2ggPT09IDB4MEEpIHtcbiAgICAgIGNvbnN0IGxpbmVDb250ZW50ID0gZ2V0TmV4dExpbmUobmV4dExpbmUpXG4gICAgICBpZiAobGluZUNvbnRlbnQgIT09IG51bGwpIHtcbiAgICAgICAgc3RyICs9IGxpbmVDb250ZW50XG4gICAgICAgIG1heCA9IHN0ci5sZW5ndGhcbiAgICAgICAgbmV4dExpbmUrK1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNTcGFjZShjaCkpIHtcbiAgICAgIC8qIGVzbGludCBuby1lbXB0eTowICovXG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgLy8gW2xhYmVsXTogICBkZXN0aW5hdGlvbiAgICd0aXRsZSdcbiAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgIF5eXl5eXl4gcGFyc2UgdGhpc1xuICBsZXQgdGl0bGVSZXMgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua1RpdGxlKHN0ciwgcG9zLCBtYXgpXG4gIHdoaWxlICh0aXRsZVJlcy5jYW5fY29udGludWUpIHtcbiAgICBjb25zdCBsaW5lQ29udGVudCA9IGdldE5leHRMaW5lKG5leHRMaW5lKVxuICAgIGlmIChsaW5lQ29udGVudCA9PT0gbnVsbCkgYnJlYWtcbiAgICBzdHIgKz0gbGluZUNvbnRlbnRcbiAgICBwb3MgPSBtYXhcbiAgICBtYXggPSBzdHIubGVuZ3RoXG4gICAgbmV4dExpbmUrK1xuICAgIHRpdGxlUmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdHIsIHBvcywgbWF4LCB0aXRsZVJlcylcbiAgfVxuICBsZXQgdGl0bGVcblxuICBpZiAocG9zIDwgbWF4ICYmIHN0YXJ0ICE9PSBwb3MgJiYgdGl0bGVSZXMub2spIHtcbiAgICB0aXRsZSA9IHRpdGxlUmVzLnN0clxuICAgIHBvcyA9IHRpdGxlUmVzLnBvc1xuICB9IGVsc2Uge1xuICAgIHRpdGxlID0gJydcbiAgICBwb3MgPSBkZXN0RW5kUG9zXG4gICAgbmV4dExpbmUgPSBkZXN0RW5kTGluZU5vXG4gIH1cblxuICAvLyBza2lwIHRyYWlsaW5nIHNwYWNlcyB1bnRpbCB0aGUgcmVzdCBvZiB0aGUgbGluZVxuICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgY29uc3QgY2ggPSBzdHIuY2hhckNvZGVBdChwb3MpXG4gICAgaWYgKCFpc1NwYWNlKGNoKSkgeyBicmVhayB9XG4gICAgcG9zKytcbiAgfVxuXG4gIGlmIChwb3MgPCBtYXggJiYgc3RyLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgwQSkge1xuICAgIGlmICh0aXRsZSkge1xuICAgICAgLy8gZ2FyYmFnZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIGFmdGVyIHRpdGxlLFxuICAgICAgLy8gYnV0IGl0IGNvdWxkIHN0aWxsIGJlIGEgdmFsaWQgcmVmZXJlbmNlIGlmIHdlIHJvbGwgYmFja1xuICAgICAgdGl0bGUgPSAnJ1xuICAgICAgcG9zID0gZGVzdEVuZFBvc1xuICAgICAgbmV4dExpbmUgPSBkZXN0RW5kTGluZU5vXG4gICAgICB3aGlsZSAocG9zIDwgbWF4KSB7XG4gICAgICAgIGNvbnN0IGNoID0gc3RyLmNoYXJDb2RlQXQocG9zKVxuICAgICAgICBpZiAoIWlzU3BhY2UoY2gpKSB7IGJyZWFrIH1cbiAgICAgICAgcG9zKytcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAocG9zIDwgbWF4ICYmIHN0ci5jaGFyQ29kZUF0KHBvcykgIT09IDB4MEEpIHtcbiAgICAvLyBnYXJiYWdlIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmVcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGxhYmVsID0gbm9ybWFsaXplUmVmZXJlbmNlKHN0ci5zbGljZSgxLCBsYWJlbEVuZCkpXG4gIGlmICghbGFiZWwpIHtcbiAgICAvLyBDb21tb25NYXJrIDAuMjAgZGlzYWxsb3dzIGVtcHR5IGxhYmVsc1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gUmVmZXJlbmNlIGNhbiBub3QgdGVybWluYXRlIGFueXRoaW5nLiBUaGlzIGNoZWNrIGlzIGZvciBzYWZldHkgb25seS5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gIGlmIChzaWxlbnQpIHsgcmV0dXJuIHRydWUgfVxuXG4gIGlmICh0eXBlb2Ygc3RhdGUuZW52LnJlZmVyZW5jZXMgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgc3RhdGUuZW52LnJlZmVyZW5jZXMgPSB7fVxuICB9XG4gIGlmICh0eXBlb2Ygc3RhdGUuZW52LnJlZmVyZW5jZXNbbGFiZWxdID09PSAndW5kZWZpbmVkJykge1xuICAgIHN0YXRlLmVudi5yZWZlcmVuY2VzW2xhYmVsXSA9IHsgdGl0bGUsIGhyZWYgfVxuICB9XG5cbiAgc3RhdGUubGluZSA9IG5leHRMaW5lXG4gIHJldHVybiB0cnVlXG59XG4iLCAiLy8gTGlzdCBvZiB2YWxpZCBodG1sIGJsb2NrcyBuYW1lcywgYWNjb3JkaW5nIHRvIGNvbW1vbm1hcmsgc3BlY1xuLy8gaHR0cHM6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMzAvI2h0bWwtYmxvY2tzXG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgJ2FkZHJlc3MnLFxuICAnYXJ0aWNsZScsXG4gICdhc2lkZScsXG4gICdiYXNlJyxcbiAgJ2Jhc2Vmb250JyxcbiAgJ2Jsb2NrcXVvdGUnLFxuICAnYm9keScsXG4gICdjYXB0aW9uJyxcbiAgJ2NlbnRlcicsXG4gICdjb2wnLFxuICAnY29sZ3JvdXAnLFxuICAnZGQnLFxuICAnZGV0YWlscycsXG4gICdkaWFsb2cnLFxuICAnZGlyJyxcbiAgJ2RpdicsXG4gICdkbCcsXG4gICdkdCcsXG4gICdmaWVsZHNldCcsXG4gICdmaWdjYXB0aW9uJyxcbiAgJ2ZpZ3VyZScsXG4gICdmb290ZXInLFxuICAnZm9ybScsXG4gICdmcmFtZScsXG4gICdmcmFtZXNldCcsXG4gICdoMScsXG4gICdoMicsXG4gICdoMycsXG4gICdoNCcsXG4gICdoNScsXG4gICdoNicsXG4gICdoZWFkJyxcbiAgJ2hlYWRlcicsXG4gICdocicsXG4gICdodG1sJyxcbiAgJ2lmcmFtZScsXG4gICdsZWdlbmQnLFxuICAnbGknLFxuICAnbGluaycsXG4gICdtYWluJyxcbiAgJ21lbnUnLFxuICAnbWVudWl0ZW0nLFxuICAnbmF2JyxcbiAgJ25vZnJhbWVzJyxcbiAgJ29sJyxcbiAgJ29wdGdyb3VwJyxcbiAgJ29wdGlvbicsXG4gICdwJyxcbiAgJ3BhcmFtJyxcbiAgJ3NlYXJjaCcsXG4gICdzZWN0aW9uJyxcbiAgJ3N1bW1hcnknLFxuICAndGFibGUnLFxuICAndGJvZHknLFxuICAndGQnLFxuICAndGZvb3QnLFxuICAndGgnLFxuICAndGhlYWQnLFxuICAndGl0bGUnLFxuICAndHInLFxuICAndHJhY2snLFxuICAndWwnXG5dXG4iLCAiLy8gUmVnZXhwcyB0byBtYXRjaCBodG1sIGVsZW1lbnRzXG5cbmNvbnN0IGF0dHJfbmFtZSAgICAgPSAnW2EtekEtWl86XVthLXpBLVowLTk6Ll8tXSonXG5cbmNvbnN0IHVucXVvdGVkICAgICAgPSAnW15cIlxcJz08PmBcXFxceDAwLVxcXFx4MjBdKydcbmNvbnN0IHNpbmdsZV9xdW90ZWQgPSBcIidbXiddKidcIlxuY29uc3QgZG91YmxlX3F1b3RlZCA9ICdcIlteXCJdKlwiJ1xuXG5jb25zdCBhdHRyX3ZhbHVlICA9ICcoPzonICsgdW5xdW90ZWQgKyAnfCcgKyBzaW5nbGVfcXVvdGVkICsgJ3wnICsgZG91YmxlX3F1b3RlZCArICcpJ1xuXG5jb25zdCBhdHRyaWJ1dGUgICA9ICcoPzpcXFxccysnICsgYXR0cl9uYW1lICsgJyg/OlxcXFxzKj1cXFxccyonICsgYXR0cl92YWx1ZSArICcpPyknXG5cbmNvbnN0IG9wZW5fdGFnICAgID0gJzxbQS1aYS16XVtBLVphLXowLTlcXFxcLV0qJyArIGF0dHJpYnV0ZSArICcqXFxcXHMqXFxcXC8/PidcblxuY29uc3QgY2xvc2VfdGFnICAgPSAnPFxcXFwvW0EtWmEtel1bQS1aYS16MC05XFxcXC1dKlxcXFxzKj4nXG5jb25zdCBjb21tZW50ICAgICA9ICc8IS0tLT8+fDwhLS0oPzpbXi1dfC1bXi1dfC0tW14+XSkqLS0+J1xuY29uc3QgcHJvY2Vzc2luZyAgPSAnPFs/XVtcXFxcc1xcXFxTXSo/Wz9dPidcbmNvbnN0IGRlY2xhcmF0aW9uID0gJzwhW0EtWmEtel1bXj5dKj4nXG5jb25zdCBjZGF0YSAgICAgICA9ICc8IVxcXFxbQ0RBVEFcXFxcW1tcXFxcc1xcXFxTXSo/XFxcXF1cXFxcXT4nXG5cbmNvbnN0IEhUTUxfVEFHX1JFID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuX3RhZyArICd8JyArIGNsb3NlX3RhZyArICd8JyArIGNvbW1lbnQgK1xuICAgICAgICAgICAgICAgICAgICAgICAgJ3wnICsgcHJvY2Vzc2luZyArICd8JyArIGRlY2xhcmF0aW9uICsgJ3wnICsgY2RhdGEgKyAnKScpXG5jb25zdCBIVE1MX09QRU5fQ0xPU0VfVEFHX1JFID0gbmV3IFJlZ0V4cCgnXig/OicgKyBvcGVuX3RhZyArICd8JyArIGNsb3NlX3RhZyArICcpJylcblxuZXhwb3J0IHsgSFRNTF9UQUdfUkUsIEhUTUxfT1BFTl9DTE9TRV9UQUdfUkUgfVxuIiwgIi8vIEhUTUwgYmxvY2tcblxuaW1wb3J0IGJsb2NrX25hbWVzIGZyb20gJy4uL2NvbW1vbi9odG1sX2Jsb2Nrcy5tanMnXG5pbXBvcnQgeyBIVE1MX09QRU5fQ0xPU0VfVEFHX1JFIH0gZnJvbSAnLi4vY29tbW9uL2h0bWxfcmUubWpzJ1xuXG4vLyBBbiBhcnJheSBvZiBvcGVuaW5nIGFuZCBjb3JyZXNwb25kaW5nIGNsb3Npbmcgc2VxdWVuY2VzIGZvciBodG1sIHRhZ3MsXG4vLyBsYXN0IGFyZ3VtZW50IGRlZmluZXMgd2hldGhlciBpdCBjYW4gdGVybWluYXRlIGEgcGFyYWdyYXBoIG9yIG5vdFxuLy9cbmNvbnN0IEhUTUxfU0VRVUVOQ0VTID0gW1xuICBbL148KHNjcmlwdHxwcmV8c3R5bGV8dGV4dGFyZWEpKD89KFxcc3w+fCQpKS9pLCAvPFxcLyhzY3JpcHR8cHJlfHN0eWxlfHRleHRhcmVhKT4vaSwgdHJ1ZV0sXG4gIFsvXjwhLS0vLCAgICAgICAgLy0tPi8sICAgdHJ1ZV0sXG4gIFsvXjxcXD8vLCAgICAgICAgIC9cXD8+LywgICB0cnVlXSxcbiAgWy9ePCFbQS1aXS8sICAgICAvPi8sICAgICB0cnVlXSxcbiAgWy9ePCFcXFtDREFUQVxcWy8sIC9cXF1cXF0+LywgdHJ1ZV0sXG4gIFtuZXcgUmVnRXhwKCdePC8/KCcgKyBibG9ja19uYW1lcy5qb2luKCd8JykgKyAnKSg/PShcXFxcc3wvPz58JCkpJywgJ2knKSwgL14kLywgdHJ1ZV0sXG4gIFtuZXcgUmVnRXhwKEhUTUxfT1BFTl9DTE9TRV9UQUdfUkUuc291cmNlICsgJ1xcXFxzKiQnKSwgIC9eJC8sIGZhbHNlXVxuXVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBodG1sX2Jsb2NrIChzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lLCBzaWxlbnQpIHtcbiAgbGV0IHBvcyA9IHN0YXRlLmJNYXJrc1tzdGFydExpbmVdICsgc3RhdGUudFNoaWZ0W3N0YXJ0TGluZV1cbiAgbGV0IG1heCA9IHN0YXRlLmVNYXJrc1tzdGFydExpbmVdXG5cbiAgLy8gaWYgaXQncyBpbmRlbnRlZCBtb3JlIHRoYW4gMyBzcGFjZXMsIGl0IHNob3VsZCBiZSBhIGNvZGUgYmxvY2tcbiAgaWYgKHN0YXRlLnNDb3VudFtzdGFydExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID49IDQpIHsgcmV0dXJuIGZhbHNlIH1cblxuICBpZiAoIXN0YXRlLm1kLm9wdGlvbnMuaHRtbCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDNDLyogPCAqLykgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGxldCBsaW5lVGV4dCA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1heClcblxuICBsZXQgaSA9IDBcbiAgZm9yICg7IGkgPCBIVE1MX1NFUVVFTkNFUy5sZW5ndGg7IGkrKykge1xuICAgIGlmIChIVE1MX1NFUVVFTkNFU1tpXVswXS50ZXN0KGxpbmVUZXh0KSkgeyBicmVhayB9XG4gIH1cbiAgaWYgKGkgPT09IEhUTUxfU0VRVUVOQ0VTLmxlbmd0aCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGlmIChzaWxlbnQpIHtcbiAgICAvLyB0cnVlIGlmIHRoaXMgc2VxdWVuY2UgY2FuIGJlIGEgdGVybWluYXRvciwgZmFsc2Ugb3RoZXJ3aXNlXG4gICAgcmV0dXJuIEhUTUxfU0VRVUVOQ0VTW2ldWzJdXG4gIH1cblxuICBsZXQgbmV4dExpbmUgPSBzdGFydExpbmUgKyAxXG5cbiAgLy8gSWYgd2UgYXJlIGhlcmUgLSB3ZSBkZXRlY3RlZCBIVE1MIGJsb2NrLlxuICAvLyBMZXQncyByb2xsIGRvd24gdGlsbCBibG9jayBlbmQuXG4gIGlmICghSFRNTF9TRVFVRU5DRVNbaV1bMV0udGVzdChsaW5lVGV4dCkpIHtcbiAgICBmb3IgKDsgbmV4dExpbmUgPCBlbmRMaW5lOyBuZXh0TGluZSsrKSB7XG4gICAgICBpZiAoc3RhdGUuc0NvdW50W25leHRMaW5lXSA8IHN0YXRlLmJsa0luZGVudCkgeyBicmVhayB9XG5cbiAgICAgIHBvcyA9IHN0YXRlLmJNYXJrc1tuZXh0TGluZV0gKyBzdGF0ZS50U2hpZnRbbmV4dExpbmVdXG4gICAgICBtYXggPSBzdGF0ZS5lTWFya3NbbmV4dExpbmVdXG4gICAgICBsaW5lVGV4dCA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1heClcblxuICAgICAgaWYgKEhUTUxfU0VRVUVOQ0VTW2ldWzFdLnRlc3QobGluZVRleHQpKSB7XG4gICAgICAgIGlmIChsaW5lVGV4dC5sZW5ndGggIT09IDApIHsgbmV4dExpbmUrKyB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc3RhdGUubGluZSA9IG5leHRMaW5lXG5cbiAgY29uc3QgdG9rZW4gICA9IHN0YXRlLnB1c2goJ2h0bWxfYmxvY2snLCAnJywgMClcbiAgdG9rZW4ubWFwICAgICA9IFtzdGFydExpbmUsIG5leHRMaW5lXVxuICB0b2tlbi5jb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCB0cnVlKVxuXG4gIHJldHVybiB0cnVlXG59XG4iLCAiLy8gaGVhZGluZyAoIywgIyMsIC4uLilcblxuaW1wb3J0IHsgaXNTcGFjZSB9IGZyb20gJy4uL2NvbW1vbi91dGlscy5tanMnXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGhlYWRpbmcgKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUsIHNpbGVudCkge1xuICBsZXQgcG9zID0gc3RhdGUuYk1hcmtzW3N0YXJ0TGluZV0gKyBzdGF0ZS50U2hpZnRbc3RhcnRMaW5lXVxuICBsZXQgbWF4ID0gc3RhdGUuZU1hcmtzW3N0YXJ0TGluZV1cblxuICAvLyBpZiBpdCdzIGluZGVudGVkIG1vcmUgdGhhbiAzIHNwYWNlcywgaXQgc2hvdWxkIGJlIGEgY29kZSBibG9ja1xuICBpZiAoc3RhdGUuc0NvdW50W3N0YXJ0TGluZV0gLSBzdGF0ZS5ibGtJbmRlbnQgPj0gNCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGxldCBjaCAgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpXG5cbiAgaWYgKGNoICE9PSAweDIzLyogIyAqLyB8fCBwb3MgPj0gbWF4KSB7IHJldHVybiBmYWxzZSB9XG5cbiAgLy8gY291bnQgaGVhZGluZyBsZXZlbFxuICBsZXQgbGV2ZWwgPSAxXG4gIGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQoKytwb3MpXG4gIHdoaWxlIChjaCA9PT0gMHgyMy8qICMgKi8gJiYgcG9zIDwgbWF4ICYmIGxldmVsIDw9IDYpIHtcbiAgICBsZXZlbCsrXG4gICAgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdCgrK3BvcylcbiAgfVxuXG4gIGlmIChsZXZlbCA+IDYgfHwgKHBvcyA8IG1heCAmJiAhaXNTcGFjZShjaCkpKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gdHJ1ZSB9XG5cbiAgLy8gTGV0J3MgY3V0IHRhaWxzIGxpa2UgJyAgICAjIyMgICcgZnJvbSB0aGUgZW5kIG9mIHN0cmluZ1xuXG4gIG1heCA9IHN0YXRlLnNraXBTcGFjZXNCYWNrKG1heCwgcG9zKVxuICBjb25zdCB0bXAgPSBzdGF0ZS5za2lwQ2hhcnNCYWNrKG1heCwgMHgyMywgcG9zKSAvLyAjXG4gIGlmICh0bXAgPiBwb3MgJiYgaXNTcGFjZShzdGF0ZS5zcmMuY2hhckNvZGVBdCh0bXAgLSAxKSkpIHtcbiAgICBtYXggPSB0bXBcbiAgfVxuXG4gIHN0YXRlLmxpbmUgPSBzdGFydExpbmUgKyAxXG5cbiAgY29uc3QgdG9rZW5fbyAgPSBzdGF0ZS5wdXNoKCdoZWFkaW5nX29wZW4nLCAnaCcgKyBTdHJpbmcobGV2ZWwpLCAxKVxuICB0b2tlbl9vLm1hcmt1cCA9ICcjIyMjIyMjIycuc2xpY2UoMCwgbGV2ZWwpXG4gIHRva2VuX28ubWFwICAgID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV1cblxuICBjb25zdCB0b2tlbl9pICAgID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApXG4gIHRva2VuX2kuY29udGVudCAgPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBtYXgpLnRyaW0oKVxuICB0b2tlbl9pLm1hcCAgICAgID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV1cbiAgdG9rZW5faS5jaGlsZHJlbiA9IFtdXG5cbiAgY29uc3QgdG9rZW5fYyAgPSBzdGF0ZS5wdXNoKCdoZWFkaW5nX2Nsb3NlJywgJ2gnICsgU3RyaW5nKGxldmVsKSwgLTEpXG4gIHRva2VuX2MubWFya3VwID0gJyMjIyMjIyMjJy5zbGljZSgwLCBsZXZlbClcblxuICByZXR1cm4gdHJ1ZVxufVxuIiwgIi8vIGxoZWFkaW5nICgtLS0sID09PSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGhlYWRpbmcgKHN0YXRlLCBzdGFydExpbmUsIGVuZExpbmUvKiwgc2lsZW50ICovKSB7XG4gIGNvbnN0IHRlcm1pbmF0b3JSdWxlcyA9IHN0YXRlLm1kLmJsb2NrLnJ1bGVyLmdldFJ1bGVzKCdwYXJhZ3JhcGgnKVxuXG4gIC8vIGlmIGl0J3MgaW5kZW50ZWQgbW9yZSB0aGFuIDMgc3BhY2VzLCBpdCBzaG91bGQgYmUgYSBjb2RlIGJsb2NrXG4gIGlmIChzdGF0ZS5zQ291bnRbc3RhcnRMaW5lXSAtIHN0YXRlLmJsa0luZGVudCA+PSA0KSB7IHJldHVybiBmYWxzZSB9XG5cbiAgY29uc3Qgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGVcbiAgc3RhdGUucGFyZW50VHlwZSA9ICdwYXJhZ3JhcGgnIC8vIHVzZSBwYXJhZ3JhcGggdG8gbWF0Y2ggdGVybWluYXRvclJ1bGVzXG5cbiAgLy8ganVtcCBsaW5lLWJ5LWxpbmUgdW50aWwgZW1wdHkgb25lIG9yIEVPRlxuICBsZXQgbGV2ZWwgPSAwXG4gIGxldCBtYXJrZXJcbiAgbGV0IG5leHRMaW5lID0gc3RhcnRMaW5lICsgMVxuXG4gIGZvciAoOyBuZXh0TGluZSA8IGVuZExpbmUgJiYgIXN0YXRlLmlzRW1wdHkobmV4dExpbmUpOyBuZXh0TGluZSsrKSB7XG4gICAgLy8gdGhpcyB3b3VsZCBiZSBhIGNvZGUgYmxvY2sgbm9ybWFsbHksIGJ1dCBhZnRlciBwYXJhZ3JhcGhcbiAgICAvLyBpdCdzIGNvbnNpZGVyZWQgYSBsYXp5IGNvbnRpbnVhdGlvbiByZWdhcmRsZXNzIG9mIHdoYXQncyB0aGVyZVxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID4gMykgeyBjb250aW51ZSB9XG5cbiAgICAvL1xuICAgIC8vIENoZWNrIGZvciB1bmRlcmxpbmUgaW4gc2V0ZXh0IGhlYWRlclxuICAgIC8vXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPj0gc3RhdGUuYmxrSW5kZW50KSB7XG4gICAgICBsZXQgcG9zID0gc3RhdGUuYk1hcmtzW25leHRMaW5lXSArIHN0YXRlLnRTaGlmdFtuZXh0TGluZV1cbiAgICAgIGNvbnN0IG1heCA9IHN0YXRlLmVNYXJrc1tuZXh0TGluZV1cblxuICAgICAgaWYgKHBvcyA8IG1heCkge1xuICAgICAgICBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpXG5cbiAgICAgICAgaWYgKG1hcmtlciA9PT0gMHgyRC8qIC0gKi8gfHwgbWFya2VyID09PSAweDNELyogPSAqLykge1xuICAgICAgICAgIHBvcyA9IHN0YXRlLnNraXBDaGFycyhwb3MsIG1hcmtlcilcbiAgICAgICAgICBwb3MgPSBzdGF0ZS5za2lwU3BhY2VzKHBvcylcblxuICAgICAgICAgIGlmIChwb3MgPj0gbWF4KSB7XG4gICAgICAgICAgICBsZXZlbCA9IChtYXJrZXIgPT09IDB4M0QvKiA9ICovID8gMSA6IDIpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHF1aXJrIGZvciBibG9ja3F1b3RlcywgdGhpcyBsaW5lIHNob3VsZCBhbHJlYWR5IGJlIGNoZWNrZWQgYnkgdGhhdCBydWxlXG4gICAgaWYgKHN0YXRlLnNDb3VudFtuZXh0TGluZV0gPCAwKSB7IGNvbnRpbnVlIH1cblxuICAgIC8vIFNvbWUgdGFncyBjYW4gdGVybWluYXRlIHBhcmFncmFwaCB3aXRob3V0IGVtcHR5IGxpbmUuXG4gICAgbGV0IHRlcm1pbmF0ZSA9IGZhbHNlXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB0ZXJtaW5hdG9yUnVsZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBpZiAodGVybWluYXRvclJ1bGVzW2ldKHN0YXRlLCBuZXh0TGluZSwgZW5kTGluZSwgdHJ1ZSkpIHtcbiAgICAgICAgdGVybWluYXRlID0gdHJ1ZVxuICAgICAgICBicmVha1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGVybWluYXRlKSB7IGJyZWFrIH1cbiAgfVxuXG4gIGlmICghbGV2ZWwpIHtcbiAgICAvLyBEaWRuJ3QgZmluZCB2YWxpZCB1bmRlcmxpbmVcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGNvbnN0IGNvbnRlbnQgPSBzdGF0ZS5nZXRMaW5lcyhzdGFydExpbmUsIG5leHRMaW5lLCBzdGF0ZS5ibGtJbmRlbnQsIGZhbHNlKS50cmltKClcblxuICBzdGF0ZS5saW5lID0gbmV4dExpbmUgKyAxXG5cbiAgY29uc3QgdG9rZW5fbyAgICA9IHN0YXRlLnB1c2goJ2hlYWRpbmdfb3BlbicsICdoJyArIFN0cmluZyhsZXZlbCksIDEpXG4gIHRva2VuX28ubWFya3VwICAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcilcbiAgdG9rZW5fby5tYXAgICAgICA9IFtzdGFydExpbmUsIHN0YXRlLmxpbmVdXG5cbiAgY29uc3QgdG9rZW5faSAgICA9IHN0YXRlLnB1c2goJ2lubGluZScsICcnLCAwKVxuICB0b2tlbl9pLmNvbnRlbnQgID0gY29udGVudFxuICB0b2tlbl9pLm1hcCAgICAgID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZSAtIDFdXG4gIHRva2VuX2kuY2hpbGRyZW4gPSBbXVxuXG4gIGNvbnN0IHRva2VuX2MgICAgPSBzdGF0ZS5wdXNoKCdoZWFkaW5nX2Nsb3NlJywgJ2gnICsgU3RyaW5nKGxldmVsKSwgLTEpXG4gIHRva2VuX2MubWFya3VwICAgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcilcblxuICBzdGF0ZS5wYXJlbnRUeXBlID0gb2xkUGFyZW50VHlwZVxuXG4gIHJldHVybiB0cnVlXG59XG4iLCAiLy8gUGFyYWdyYXBoXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHBhcmFncmFwaCAoc3RhdGUsIHN0YXJ0TGluZSwgZW5kTGluZSkge1xuICBjb25zdCB0ZXJtaW5hdG9yUnVsZXMgPSBzdGF0ZS5tZC5ibG9jay5ydWxlci5nZXRSdWxlcygncGFyYWdyYXBoJylcbiAgY29uc3Qgb2xkUGFyZW50VHlwZSA9IHN0YXRlLnBhcmVudFR5cGVcbiAgbGV0IG5leHRMaW5lID0gc3RhcnRMaW5lICsgMVxuICBzdGF0ZS5wYXJlbnRUeXBlID0gJ3BhcmFncmFwaCdcblxuICAvLyBqdW1wIGxpbmUtYnktbGluZSB1bnRpbCBlbXB0eSBvbmUgb3IgRU9GXG4gIGZvciAoOyBuZXh0TGluZSA8IGVuZExpbmUgJiYgIXN0YXRlLmlzRW1wdHkobmV4dExpbmUpOyBuZXh0TGluZSsrKSB7XG4gICAgLy8gdGhpcyB3b3VsZCBiZSBhIGNvZGUgYmxvY2sgbm9ybWFsbHksIGJ1dCBhZnRlciBwYXJhZ3JhcGhcbiAgICAvLyBpdCdzIGNvbnNpZGVyZWQgYSBsYXp5IGNvbnRpbnVhdGlvbiByZWdhcmRsZXNzIG9mIHdoYXQncyB0aGVyZVxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIC0gc3RhdGUuYmxrSW5kZW50ID4gMykgeyBjb250aW51ZSB9XG5cbiAgICAvLyBxdWlyayBmb3IgYmxvY2txdW90ZXMsIHRoaXMgbGluZSBzaG91bGQgYWxyZWFkeSBiZSBjaGVja2VkIGJ5IHRoYXQgcnVsZVxuICAgIGlmIChzdGF0ZS5zQ291bnRbbmV4dExpbmVdIDwgMCkgeyBjb250aW51ZSB9XG5cbiAgICAvLyBTb21lIHRhZ3MgY2FuIHRlcm1pbmF0ZSBwYXJhZ3JhcGggd2l0aG91dCBlbXB0eSBsaW5lLlxuICAgIGxldCB0ZXJtaW5hdGUgPSBmYWxzZVxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdGVybWluYXRvclJ1bGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgaWYgKHRlcm1pbmF0b3JSdWxlc1tpXShzdGF0ZSwgbmV4dExpbmUsIGVuZExpbmUsIHRydWUpKSB7XG4gICAgICAgIHRlcm1pbmF0ZSA9IHRydWVcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRlcm1pbmF0ZSkgeyBicmVhayB9XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gc3RhdGUuZ2V0TGluZXMoc3RhcnRMaW5lLCBuZXh0TGluZSwgc3RhdGUuYmxrSW5kZW50LCBmYWxzZSkudHJpbSgpXG5cbiAgc3RhdGUubGluZSA9IG5leHRMaW5lXG5cbiAgY29uc3QgdG9rZW5fbyAgICA9IHN0YXRlLnB1c2goJ3BhcmFncmFwaF9vcGVuJywgJ3AnLCAxKVxuICB0b2tlbl9vLm1hcCAgICAgID0gW3N0YXJ0TGluZSwgc3RhdGUubGluZV1cblxuICBjb25zdCB0b2tlbl9pICAgID0gc3RhdGUucHVzaCgnaW5saW5lJywgJycsIDApXG4gIHRva2VuX2kuY29udGVudCAgPSBjb250ZW50XG4gIHRva2VuX2kubWFwICAgICAgPSBbc3RhcnRMaW5lLCBzdGF0ZS5saW5lXVxuICB0b2tlbl9pLmNoaWxkcmVuID0gW11cblxuICBzdGF0ZS5wdXNoKCdwYXJhZ3JhcGhfY2xvc2UnLCAncCcsIC0xKVxuXG4gIHN0YXRlLnBhcmVudFR5cGUgPSBvbGRQYXJlbnRUeXBlXG5cbiAgcmV0dXJuIHRydWVcbn1cbiIsICIvKiogaW50ZXJuYWxcbiAqIGNsYXNzIFBhcnNlckJsb2NrXG4gKlxuICogQmxvY2stbGV2ZWwgdG9rZW5pemVyLlxuICoqL1xuXG5pbXBvcnQgUnVsZXIgZnJvbSAnLi9ydWxlci5tanMnXG5pbXBvcnQgU3RhdGVCbG9jayBmcm9tICcuL3J1bGVzX2Jsb2NrL3N0YXRlX2Jsb2NrLm1qcydcblxuaW1wb3J0IHJfdGFibGUgZnJvbSAnLi9ydWxlc19ibG9jay90YWJsZS5tanMnXG5pbXBvcnQgcl9jb2RlIGZyb20gJy4vcnVsZXNfYmxvY2svY29kZS5tanMnXG5pbXBvcnQgcl9mZW5jZSBmcm9tICcuL3J1bGVzX2Jsb2NrL2ZlbmNlLm1qcydcbmltcG9ydCByX2Jsb2NrcXVvdGUgZnJvbSAnLi9ydWxlc19ibG9jay9ibG9ja3F1b3RlLm1qcydcbmltcG9ydCByX2hyIGZyb20gJy4vcnVsZXNfYmxvY2svaHIubWpzJ1xuaW1wb3J0IHJfbGlzdCBmcm9tICcuL3J1bGVzX2Jsb2NrL2xpc3QubWpzJ1xuaW1wb3J0IHJfcmVmZXJlbmNlIGZyb20gJy4vcnVsZXNfYmxvY2svcmVmZXJlbmNlLm1qcydcbmltcG9ydCByX2h0bWxfYmxvY2sgZnJvbSAnLi9ydWxlc19ibG9jay9odG1sX2Jsb2NrLm1qcydcbmltcG9ydCByX2hlYWRpbmcgZnJvbSAnLi9ydWxlc19ibG9jay9oZWFkaW5nLm1qcydcbmltcG9ydCByX2xoZWFkaW5nIGZyb20gJy4vcnVsZXNfYmxvY2svbGhlYWRpbmcubWpzJ1xuaW1wb3J0IHJfcGFyYWdyYXBoIGZyb20gJy4vcnVsZXNfYmxvY2svcGFyYWdyYXBoLm1qcydcblxuY29uc3QgX3J1bGVzID0gW1xuICAvLyBGaXJzdCAyIHBhcmFtcyAtIHJ1bGUgbmFtZSAmIHNvdXJjZS4gU2Vjb25kYXJ5IGFycmF5IC0gbGlzdCBvZiBydWxlcyxcbiAgLy8gd2hpY2ggY2FuIGJlIHRlcm1pbmF0ZWQgYnkgdGhpcyBvbmUuXG4gIFsndGFibGUnLCAgICAgIHJfdGFibGUsICAgICAgWydwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJ11dLFxuICBbJ2NvZGUnLCAgICAgICByX2NvZGVdLFxuICBbJ2ZlbmNlJywgICAgICByX2ZlbmNlLCAgICAgIFsncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJywgJ2xpc3QnXV0sXG4gIFsnYmxvY2txdW90ZScsIHJfYmxvY2txdW90ZSwgWydwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnLCAnbGlzdCddXSxcbiAgWydocicsICAgICAgICAgcl9ociwgICAgICAgICBbJ3BhcmFncmFwaCcsICdyZWZlcmVuY2UnLCAnYmxvY2txdW90ZScsICdsaXN0J11dLFxuICBbJ2xpc3QnLCAgICAgICByX2xpc3QsICAgICAgIFsncGFyYWdyYXBoJywgJ3JlZmVyZW5jZScsICdibG9ja3F1b3RlJ11dLFxuICBbJ3JlZmVyZW5jZScsICByX3JlZmVyZW5jZV0sXG4gIFsnaHRtbF9ibG9jaycsIHJfaHRtbF9ibG9jaywgWydwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnXV0sXG4gIFsnaGVhZGluZycsICAgIHJfaGVhZGluZywgICAgWydwYXJhZ3JhcGgnLCAncmVmZXJlbmNlJywgJ2Jsb2NrcXVvdGUnXV0sXG4gIFsnbGhlYWRpbmcnLCAgIHJfbGhlYWRpbmddLFxuICBbJ3BhcmFncmFwaCcsICByX3BhcmFncmFwaF1cbl1cblxuLyoqXG4gKiBuZXcgUGFyc2VyQmxvY2soKVxuICoqL1xuZnVuY3Rpb24gUGFyc2VyQmxvY2sgKCkge1xuICAvKipcbiAgICogUGFyc2VyQmxvY2sjcnVsZXIgLT4gUnVsZXJcbiAgICpcbiAgICogW1tSdWxlcl1dIGluc3RhbmNlLiBLZWVwIGNvbmZpZ3VyYXRpb24gb2YgYmxvY2sgcnVsZXMuXG4gICAqKi9cbiAgdGhpcy5ydWxlciA9IG5ldyBSdWxlcigpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBfcnVsZXMubGVuZ3RoOyBpKyspIHtcbiAgICB0aGlzLnJ1bGVyLnB1c2goX3J1bGVzW2ldWzBdLCBfcnVsZXNbaV1bMV0sIHsgYWx0OiAoX3J1bGVzW2ldWzJdIHx8IFtdKS5zbGljZSgpIH0pXG4gIH1cbn1cblxuLy8gR2VuZXJhdGUgdG9rZW5zIGZvciBpbnB1dCByYW5nZVxuLy9cblBhcnNlckJsb2NrLnByb3RvdHlwZS50b2tlbml6ZSA9IGZ1bmN0aW9uIChzdGF0ZSwgc3RhcnRMaW5lLCBlbmRMaW5lKSB7XG4gIGNvbnN0IHJ1bGVzID0gdGhpcy5ydWxlci5nZXRSdWxlcygnJylcbiAgY29uc3QgbGVuID0gcnVsZXMubGVuZ3RoXG4gIGNvbnN0IG1heE5lc3RpbmcgPSBzdGF0ZS5tZC5vcHRpb25zLm1heE5lc3RpbmdcbiAgbGV0IGxpbmUgPSBzdGFydExpbmVcbiAgbGV0IGhhc0VtcHR5TGluZXMgPSBmYWxzZVxuXG4gIHdoaWxlIChsaW5lIDwgZW5kTGluZSkge1xuICAgIHN0YXRlLmxpbmUgPSBsaW5lID0gc3RhdGUuc2tpcEVtcHR5TGluZXMobGluZSlcbiAgICBpZiAobGluZSA+PSBlbmRMaW5lKSB7IGJyZWFrIH1cblxuICAgIC8vIFRlcm1pbmF0aW9uIGNvbmRpdGlvbiBmb3IgbmVzdGVkIGNhbGxzLlxuICAgIC8vIE5lc3RlZCBjYWxscyBjdXJyZW50bHkgdXNlZCBmb3IgYmxvY2txdW90ZXMgJiBsaXN0c1xuICAgIGlmIChzdGF0ZS5zQ291bnRbbGluZV0gPCBzdGF0ZS5ibGtJbmRlbnQpIHsgYnJlYWsgfVxuXG4gICAgLy8gSWYgbmVzdGluZyBsZXZlbCBleGNlZWRlZCAtIHNraXAgdGFpbCB0byB0aGUgZW5kLiBUaGF0J3Mgbm90IG9yZGluYXJ5XG4gICAgLy8gc2l0dWF0aW9uIGFuZCB3ZSBzaG91bGQgbm90IGNhcmUgYWJvdXQgY29udGVudC5cbiAgICBpZiAoc3RhdGUubGV2ZWwgPj0gbWF4TmVzdGluZykge1xuICAgICAgc3RhdGUubGluZSA9IGVuZExpbmVcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgLy8gVHJ5IGFsbCBwb3NzaWJsZSBydWxlcy5cbiAgICAvLyBPbiBzdWNjZXNzLCBydWxlIHNob3VsZDpcbiAgICAvL1xuICAgIC8vIC0gdXBkYXRlIGBzdGF0ZS5saW5lYFxuICAgIC8vIC0gdXBkYXRlIGBzdGF0ZS50b2tlbnNgXG4gICAgLy8gLSByZXR1cm4gdHJ1ZVxuICAgIGNvbnN0IHByZXZMaW5lID0gc3RhdGUubGluZVxuICAgIGxldCBvayA9IGZhbHNlXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBvayA9IHJ1bGVzW2ldKHN0YXRlLCBsaW5lLCBlbmRMaW5lLCBmYWxzZSlcbiAgICAgIGlmIChvaykge1xuICAgICAgICBpZiAocHJldkxpbmUgPj0gc3RhdGUubGluZSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcImJsb2NrIHJ1bGUgZGlkbid0IGluY3JlbWVudCBzdGF0ZS5saW5lXCIpXG4gICAgICAgIH1cbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aGlzIGNhbiBvbmx5IGhhcHBlbiBpZiB1c2VyIGRpc2FibGVzIHBhcmFncmFwaCBydWxlXG4gICAgaWYgKCFvaykgdGhyb3cgbmV3IEVycm9yKCdub25lIG9mIHRoZSBibG9jayBydWxlcyBtYXRjaGVkJylcblxuICAgIC8vIHNldCBzdGF0ZS50aWdodCBpZiB3ZSBoYWQgYW4gZW1wdHkgbGluZSBiZWZvcmUgY3VycmVudCB0YWdcbiAgICAvLyBpLmUuIGxhdGVzdCBlbXB0eSBsaW5lIHNob3VsZCBub3QgY291bnRcbiAgICBzdGF0ZS50aWdodCA9ICFoYXNFbXB0eUxpbmVzXG5cbiAgICAvLyBwYXJhZ3JhcGggbWlnaHQgXCJlYXRcIiBvbmUgbmV3bGluZSBhZnRlciBpdCBpbiBuZXN0ZWQgbGlzdHNcbiAgICBpZiAoc3RhdGUuaXNFbXB0eShzdGF0ZS5saW5lIC0gMSkpIHtcbiAgICAgIGhhc0VtcHR5TGluZXMgPSB0cnVlXG4gICAgfVxuXG4gICAgbGluZSA9IHN0YXRlLmxpbmVcblxuICAgIGlmIChsaW5lIDwgZW5kTGluZSAmJiBzdGF0ZS5pc0VtcHR5KGxpbmUpKSB7XG4gICAgICBoYXNFbXB0eUxpbmVzID0gdHJ1ZVxuICAgICAgbGluZSsrXG4gICAgICBzdGF0ZS5saW5lID0gbGluZVxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlckJsb2NrLnBhcnNlKHN0ciwgbWQsIGVudiwgb3V0VG9rZW5zKVxuICpcbiAqIFByb2Nlc3MgaW5wdXQgc3RyaW5nIGFuZCBwdXNoIGJsb2NrIHRva2VucyBpbnRvIGBvdXRUb2tlbnNgXG4gKiovXG5QYXJzZXJCbG9jay5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoc3JjLCBtZCwgZW52LCBvdXRUb2tlbnMpIHtcbiAgaWYgKCFzcmMpIHsgcmV0dXJuIH1cblxuICBjb25zdCBzdGF0ZSA9IG5ldyB0aGlzLlN0YXRlKHNyYywgbWQsIGVudiwgb3V0VG9rZW5zKVxuXG4gIHRoaXMudG9rZW5pemUoc3RhdGUsIHN0YXRlLmxpbmUsIHN0YXRlLmxpbmVNYXgpXG59XG5cblBhcnNlckJsb2NrLnByb3RvdHlwZS5TdGF0ZSA9IFN0YXRlQmxvY2tcblxuZXhwb3J0IGRlZmF1bHQgUGFyc2VyQmxvY2tcbiIsICIvLyBJbmxpbmUgcGFyc2VyIHN0YXRlXG5cbmltcG9ydCBUb2tlbiBmcm9tICcuLi90b2tlbi5tanMnXG5pbXBvcnQgeyBpc1doaXRlU3BhY2UsIGlzUHVuY3RDaGFyLCBpc01kQXNjaWlQdW5jdCB9IGZyb20gJy4uL2NvbW1vbi91dGlscy5tanMnXG5cbmZ1bmN0aW9uIFN0YXRlSW5saW5lIChzcmMsIG1kLCBlbnYsIG91dFRva2Vucykge1xuICB0aGlzLnNyYyA9IHNyY1xuICB0aGlzLmVudiA9IGVudlxuICB0aGlzLm1kID0gbWRcbiAgdGhpcy50b2tlbnMgPSBvdXRUb2tlbnNcbiAgdGhpcy50b2tlbnNfbWV0YSA9IEFycmF5KG91dFRva2Vucy5sZW5ndGgpXG5cbiAgdGhpcy5wb3MgPSAwXG4gIHRoaXMucG9zTWF4ID0gdGhpcy5zcmMubGVuZ3RoXG4gIHRoaXMubGV2ZWwgPSAwXG4gIHRoaXMucGVuZGluZyA9ICcnXG4gIHRoaXMucGVuZGluZ0xldmVsID0gMFxuXG4gIC8vIFN0b3JlcyB7IHN0YXJ0OiBlbmQgfSBwYWlycy4gVXNlZnVsIGZvciBiYWNrdHJhY2tcbiAgLy8gb3B0aW1pemF0aW9uIG9mIHBhaXJzIHBhcnNlIChlbXBoYXNpcywgc3RyaWtlcykuXG4gIHRoaXMuY2FjaGUgPSB7fVxuXG4gIC8vIExpc3Qgb2YgZW1waGFzaXMtbGlrZSBkZWxpbWl0ZXJzIGZvciBjdXJyZW50IHRhZ1xuICB0aGlzLmRlbGltaXRlcnMgPSBbXVxuXG4gIC8vIFN0YWNrIG9mIGRlbGltaXRlciBsaXN0cyBmb3IgdXBwZXIgbGV2ZWwgdGFnc1xuICB0aGlzLl9wcmV2X2RlbGltaXRlcnMgPSBbXVxuXG4gIC8vIGJhY2t0aWNrIGxlbmd0aCA9PiBsYXN0IHNlZW4gcG9zaXRpb25cbiAgdGhpcy5iYWNrdGlja3MgPSB7fVxuICB0aGlzLmJhY2t0aWNrc1NjYW5uZWQgPSBmYWxzZVxuXG4gIC8vIENvdW50ZXIgdXNlZCB0byBkaXNhYmxlIGlubGluZSBsaW5raWZ5LWl0IGV4ZWN1dGlvblxuICAvLyBpbnNpZGUgPGE+IGFuZCBtYXJrZG93biBsaW5rc1xuICB0aGlzLmxpbmtMZXZlbCA9IDBcbn1cblxuLy8gRmx1c2ggcGVuZGluZyB0ZXh0XG4vL1xuU3RhdGVJbmxpbmUucHJvdG90eXBlLnB1c2hQZW5kaW5nID0gZnVuY3Rpb24gKCkge1xuICBjb25zdCB0b2tlbiA9IG5ldyBUb2tlbigndGV4dCcsICcnLCAwKVxuICB0b2tlbi5jb250ZW50ID0gdGhpcy5wZW5kaW5nXG4gIHRva2VuLmxldmVsID0gdGhpcy5wZW5kaW5nTGV2ZWxcbiAgdGhpcy50b2tlbnMucHVzaCh0b2tlbilcbiAgdGhpcy5wZW5kaW5nID0gJydcbiAgcmV0dXJuIHRva2VuXG59XG5cbi8vIFB1c2ggbmV3IHRva2VuIHRvIFwic3RyZWFtXCIuXG4vLyBJZiBwZW5kaW5nIHRleHQgZXhpc3RzIC0gZmx1c2ggaXQgYXMgdGV4dCB0b2tlblxuLy9cblN0YXRlSW5saW5lLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKHR5cGUsIHRhZywgbmVzdGluZykge1xuICBpZiAodGhpcy5wZW5kaW5nKSB7XG4gICAgdGhpcy5wdXNoUGVuZGluZygpXG4gIH1cblxuICBjb25zdCB0b2tlbiA9IG5ldyBUb2tlbih0eXBlLCB0YWcsIG5lc3RpbmcpXG4gIGxldCB0b2tlbl9tZXRhID0gbnVsbFxuXG4gIGlmIChuZXN0aW5nIDwgMCkge1xuICAgIC8vIGNsb3NpbmcgdGFnXG4gICAgdGhpcy5sZXZlbC0tXG4gICAgdGhpcy5kZWxpbWl0ZXJzID0gdGhpcy5fcHJldl9kZWxpbWl0ZXJzLnBvcCgpXG4gIH1cblxuICB0b2tlbi5sZXZlbCA9IHRoaXMubGV2ZWxcblxuICBpZiAobmVzdGluZyA+IDApIHtcbiAgICAvLyBvcGVuaW5nIHRhZ1xuICAgIHRoaXMubGV2ZWwrK1xuICAgIHRoaXMuX3ByZXZfZGVsaW1pdGVycy5wdXNoKHRoaXMuZGVsaW1pdGVycylcbiAgICB0aGlzLmRlbGltaXRlcnMgPSBbXVxuICAgIHRva2VuX21ldGEgPSB7IGRlbGltaXRlcnM6IHRoaXMuZGVsaW1pdGVycyB9XG4gIH1cblxuICB0aGlzLnBlbmRpbmdMZXZlbCA9IHRoaXMubGV2ZWxcbiAgdGhpcy50b2tlbnMucHVzaCh0b2tlbilcbiAgdGhpcy50b2tlbnNfbWV0YS5wdXNoKHRva2VuX21ldGEpXG4gIHJldHVybiB0b2tlblxufVxuXG4vLyBTY2FuIGEgc2VxdWVuY2Ugb2YgZW1waGFzaXMtbGlrZSBtYXJrZXJzLCBhbmQgZGV0ZXJtaW5lIHdoZXRoZXJcbi8vIGl0IGNhbiBzdGFydCBhbiBlbXBoYXNpcyBzZXF1ZW5jZSBvciBlbmQgYW4gZW1waGFzaXMgc2VxdWVuY2UuXG4vL1xuLy8gIC0gc3RhcnQgLSBwb3NpdGlvbiB0byBzY2FuIGZyb20gKGl0IHNob3VsZCBwb2ludCBhdCBhIHZhbGlkIG1hcmtlcik7XG4vLyAgLSBjYW5TcGxpdFdvcmQgLSBkZXRlcm1pbmUgaWYgdGhlc2UgbWFya2VycyBjYW4gYmUgZm91bmQgaW5zaWRlIGEgd29yZFxuLy9cblN0YXRlSW5saW5lLnByb3RvdHlwZS5zY2FuRGVsaW1zID0gZnVuY3Rpb24gKHN0YXJ0LCBjYW5TcGxpdFdvcmQpIHtcbiAgY29uc3QgbWF4ID0gdGhpcy5wb3NNYXhcbiAgY29uc3QgbWFya2VyID0gdGhpcy5zcmMuY2hhckNvZGVBdChzdGFydClcblxuICAvLyB0cmVhdCBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgYXMgYSB3aGl0ZXNwYWNlXG4gIGNvbnN0IGxhc3RDaGFyID0gc3RhcnQgPiAwID8gdGhpcy5zcmMuY2hhckNvZGVBdChzdGFydCAtIDEpIDogMHgyMFxuXG4gIGxldCBwb3MgPSBzdGFydFxuICB3aGlsZSAocG9zIDwgbWF4ICYmIHRoaXMuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gbWFya2VyKSB7IHBvcysrIH1cblxuICBjb25zdCBjb3VudCA9IHBvcyAtIHN0YXJ0XG5cbiAgLy8gdHJlYXQgZW5kIG9mIHRoZSBsaW5lIGFzIGEgd2hpdGVzcGFjZVxuICBjb25zdCBuZXh0Q2hhciA9IHBvcyA8IG1heCA/IHRoaXMuc3JjLmNoYXJDb2RlQXQocG9zKSA6IDB4MjBcblxuICBjb25zdCBpc0xhc3RQdW5jdENoYXIgPSBpc01kQXNjaWlQdW5jdChsYXN0Q2hhcikgfHwgaXNQdW5jdENoYXIoU3RyaW5nLmZyb21DaGFyQ29kZShsYXN0Q2hhcikpXG4gIGNvbnN0IGlzTmV4dFB1bmN0Q2hhciA9IGlzTWRBc2NpaVB1bmN0KG5leHRDaGFyKSB8fCBpc1B1bmN0Q2hhcihTdHJpbmcuZnJvbUNoYXJDb2RlKG5leHRDaGFyKSlcblxuICBjb25zdCBpc0xhc3RXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlKGxhc3RDaGFyKVxuICBjb25zdCBpc05leHRXaGl0ZVNwYWNlID0gaXNXaGl0ZVNwYWNlKG5leHRDaGFyKVxuXG4gIGNvbnN0IGxlZnRfZmxhbmtpbmcgPVxuICAgICFpc05leHRXaGl0ZVNwYWNlICYmICghaXNOZXh0UHVuY3RDaGFyIHx8IGlzTGFzdFdoaXRlU3BhY2UgfHwgaXNMYXN0UHVuY3RDaGFyKVxuICBjb25zdCByaWdodF9mbGFua2luZyA9XG4gICAgIWlzTGFzdFdoaXRlU3BhY2UgJiYgKCFpc0xhc3RQdW5jdENoYXIgfHwgaXNOZXh0V2hpdGVTcGFjZSB8fCBpc05leHRQdW5jdENoYXIpXG5cbiAgY29uc3QgY2FuX29wZW4gID0gbGVmdF9mbGFua2luZyAgJiYgKGNhblNwbGl0V29yZCB8fCAhcmlnaHRfZmxhbmtpbmcgfHwgaXNMYXN0UHVuY3RDaGFyKVxuICBjb25zdCBjYW5fY2xvc2UgPSByaWdodF9mbGFua2luZyAmJiAoY2FuU3BsaXRXb3JkIHx8ICFsZWZ0X2ZsYW5raW5nICB8fCBpc05leHRQdW5jdENoYXIpXG5cbiAgcmV0dXJuIHsgY2FuX29wZW4sIGNhbl9jbG9zZSwgbGVuZ3RoOiBjb3VudCB9XG59XG5cbi8vIHJlLWV4cG9ydCBUb2tlbiBjbGFzcyB0byB1c2UgaW4gYmxvY2sgcnVsZXNcblN0YXRlSW5saW5lLnByb3RvdHlwZS5Ub2tlbiA9IFRva2VuXG5cbmV4cG9ydCBkZWZhdWx0IFN0YXRlSW5saW5lXG4iLCAiLy8gU2tpcCB0ZXh0IGNoYXJhY3RlcnMgZm9yIHRleHQgdG9rZW4sIHBsYWNlIHRob3NlIHRvIHBlbmRpbmcgYnVmZmVyXG4vLyBhbmQgaW5jcmVtZW50IGN1cnJlbnQgcG9zXG5cbi8vIFJ1bGUgdG8gc2tpcCBwdXJlIHRleHRcbi8vICd7fSQlQH4rPTonIHJlc2VydmVkIGZvciBleHRlbnRpb25zXG5cbi8vICEsIFwiLCAjLCAkLCAlLCAmLCAnLCAoLCApLCAqLCArLCAsLCAtLCAuLCAvLCA6LCA7LCA8LCA9LCA+LCA/LCBALCBbLCBcXCwgXSwgXiwgXywgYCwgeywgfCwgfSwgb3IgflxuXG4vLyAhISEhIERvbid0IGNvbmZ1c2Ugd2l0aCBcIk1hcmtkb3duIEFTQ0lJIFB1bmN0dWF0aW9uXCIgY2hhcnNcbi8vIGh0dHA6Ly9zcGVjLmNvbW1vbm1hcmsub3JnLzAuMTUvI2FzY2lpLXB1bmN0dWF0aW9uLWNoYXJhY3RlclxuZnVuY3Rpb24gaXNUZXJtaW5hdG9yQ2hhciAoY2gpIHtcbiAgc3dpdGNoIChjaCkge1xuICAgIGNhc2UgMHgwQS8qIFxcbiAqLzpcbiAgICBjYXNlIDB4MjEvKiAhICovOlxuICAgIGNhc2UgMHgyMy8qICMgKi86XG4gICAgY2FzZSAweDI0LyogJCAqLzpcbiAgICBjYXNlIDB4MjUvKiAlICovOlxuICAgIGNhc2UgMHgyNi8qICYgKi86XG4gICAgY2FzZSAweDJBLyogKiAqLzpcbiAgICBjYXNlIDB4MkIvKiArICovOlxuICAgIGNhc2UgMHgyRC8qIC0gKi86XG4gICAgY2FzZSAweDNBLyogOiAqLzpcbiAgICBjYXNlIDB4M0MvKiA8ICovOlxuICAgIGNhc2UgMHgzRC8qID0gKi86XG4gICAgY2FzZSAweDNFLyogPiAqLzpcbiAgICBjYXNlIDB4NDAvKiBAICovOlxuICAgIGNhc2UgMHg1Qi8qIFsgKi86XG4gICAgY2FzZSAweDVDLyogXFwgKi86XG4gICAgY2FzZSAweDVELyogXSAqLzpcbiAgICBjYXNlIDB4NUUvKiBeICovOlxuICAgIGNhc2UgMHg1Ri8qIF8gKi86XG4gICAgY2FzZSAweDYwLyogYCAqLzpcbiAgICBjYXNlIDB4N0IvKiB7ICovOlxuICAgIGNhc2UgMHg3RC8qIH0gKi86XG4gICAgY2FzZSAweDdFLyogfiAqLzpcbiAgICAgIHJldHVybiB0cnVlXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBmYWxzZVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRleHQgKHN0YXRlLCBzaWxlbnQpIHtcbiAgbGV0IHBvcyA9IHN0YXRlLnBvc1xuXG4gIHdoaWxlIChwb3MgPCBzdGF0ZS5wb3NNYXggJiYgIWlzVGVybWluYXRvckNoYXIoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSkpIHtcbiAgICBwb3MrK1xuICB9XG5cbiAgaWYgKHBvcyA9PT0gc3RhdGUucG9zKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhdGUucG9zLCBwb3MpIH1cblxuICBzdGF0ZS5wb3MgPSBwb3NcblxuICByZXR1cm4gdHJ1ZVxufVxuXG4vLyBBbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiwgZm9yIG1lbW9yeS5cbi8vXG4vLyBJdCBjb3N0cyAxMCUgb2YgcGVyZm9ybWFuY2UsIGJ1dCBhbGxvd3MgZXh0ZW5kIHRlcm1pbmF0b3JzIGxpc3QsIGlmIHBsYWNlIGl0XG4vLyB0byBgUGFyc2VySW5saW5lYCBwcm9wZXJ0eS4gUHJvYmFibHksIHdpbGwgc3dpdGNoIHRvIGl0IHNvbWV0aW1lLCBzdWNoXG4vLyBmbGV4aWJpbGl0eSByZXF1aXJlZC5cblxuLypcbnZhciBURVJNSU5BVE9SX1JFID0gL1tcXG4hIyQlJiorXFwtOjw9PkBbXFxcXFxcXV5fYHt9fl0vO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIHRleHQoc3RhdGUsIHNpbGVudCkge1xuICB2YXIgcG9zID0gc3RhdGUucG9zLFxuICAgICAgaWR4ID0gc3RhdGUuc3JjLnNsaWNlKHBvcykuc2VhcmNoKFRFUk1JTkFUT1JfUkUpO1xuXG4gIC8vIGZpcnN0IGNoYXIgaXMgdGVybWluYXRvciAtPiBlbXB0eSB0ZXh0XG4gIGlmIChpZHggPT09IDApIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgLy8gbm8gdGVybWluYXRvciAtPiB0ZXh0IHRpbGwgZW5kIG9mIHN0cmluZ1xuICBpZiAoaWR4IDwgMCkge1xuICAgIGlmICghc2lsZW50KSB7IHN0YXRlLnBlbmRpbmcgKz0gc3RhdGUuc3JjLnNsaWNlKHBvcyk7IH1cbiAgICBzdGF0ZS5wb3MgPSBzdGF0ZS5zcmMubGVuZ3RoO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKCFzaWxlbnQpIHsgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmMuc2xpY2UocG9zLCBwb3MgKyBpZHgpOyB9XG5cbiAgc3RhdGUucG9zICs9IGlkeDtcblxuICByZXR1cm4gdHJ1ZTtcbn07ICovXG4iLCAiLy8gUHJvY2VzcyBsaW5rcyBsaWtlIGh0dHBzOi8vZXhhbXBsZS5vcmcvXG5cbi8vIFJGQzM5ODY6IHNjaGVtZSA9IEFMUEhBICooIEFMUEhBIC8gRElHSVQgLyBcIitcIiAvIFwiLVwiIC8gXCIuXCIgKVxuY29uc3QgU0NIRU1FX1JFID0gLyg/Ol58W15hLXowLTkuKy1dKShbYS16XVthLXowLTkuKy1dKikkL2lcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbGlua2lmeSAoc3RhdGUsIHNpbGVudCkge1xuICBpZiAoIXN0YXRlLm1kLm9wdGlvbnMubGlua2lmeSkgcmV0dXJuIGZhbHNlXG4gIGlmIChzdGF0ZS5saW5rTGV2ZWwgPiAwKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBwb3MgPSBzdGF0ZS5wb3NcbiAgY29uc3QgbWF4ID0gc3RhdGUucG9zTWF4XG5cbiAgaWYgKHBvcyArIDMgPiBtYXgpIHJldHVybiBmYWxzZVxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgzQS8qIDogKi8pIHJldHVybiBmYWxzZVxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zICsgMSkgIT09IDB4MkYvKiAvICovKSByZXR1cm4gZmFsc2VcbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyArIDIpICE9PSAweDJGLyogLyAqLykgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5wZW5kaW5nLm1hdGNoKFNDSEVNRV9SRSlcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgcHJvdG8gPSBtYXRjaFsxXVxuXG4gIGNvbnN0IGxpbmsgPSBzdGF0ZS5tZC5saW5raWZ5Lm1hdGNoQXRTdGFydChzdGF0ZS5zcmMuc2xpY2UocG9zIC0gcHJvdG8ubGVuZ3RoKSlcbiAgaWYgKCFsaW5rKSByZXR1cm4gZmFsc2VcblxuICBsZXQgdXJsID0gbGluay51cmxcblxuICAvLyBpbnZhbGlkIGxpbmssIGJ1dCBzdGlsbCBkZXRlY3RlZCBieSBsaW5raWZ5IHNvbWVob3c7XG4gIC8vIG5lZWQgdG8gY2hlY2sgdG8gcHJldmVudCBpbmZpbml0ZSBsb29wIGJlbG93XG4gIGlmICh1cmwubGVuZ3RoIDw9IHByb3RvLmxlbmd0aCkgcmV0dXJuIGZhbHNlXG5cbiAgLy8gZGlzYWxsb3cgJyonIGF0IHRoZSBlbmQgb2YgdGhlIGxpbmsgKGNvbmZsaWN0cyB3aXRoIGVtcGhhc2lzKVxuICB1cmwgPSB1cmwucmVwbGFjZSgvXFwqKyQvLCAnJylcblxuICBjb25zdCBmdWxsVXJsID0gc3RhdGUubWQubm9ybWFsaXplTGluayh1cmwpXG4gIGlmICghc3RhdGUubWQudmFsaWRhdGVMaW5rKGZ1bGxVcmwpKSByZXR1cm4gZmFsc2VcblxuICBpZiAoIXNpbGVudCkge1xuICAgIHN0YXRlLnBlbmRpbmcgPSBzdGF0ZS5wZW5kaW5nLnNsaWNlKDAsIC1wcm90by5sZW5ndGgpXG5cbiAgICBjb25zdCB0b2tlbl9vID0gc3RhdGUucHVzaCgnbGlua19vcGVuJywgJ2EnLCAxKVxuICAgIHRva2VuX28uYXR0cnMgPSBbWydocmVmJywgZnVsbFVybF1dXG4gICAgdG9rZW5fby5tYXJrdXAgPSAnbGlua2lmeSdcbiAgICB0b2tlbl9vLmluZm8gPSAnYXV0bydcblxuICAgIGNvbnN0IHRva2VuX3QgPSBzdGF0ZS5wdXNoKCd0ZXh0JywgJycsIDApXG4gICAgdG9rZW5fdC5jb250ZW50ID0gc3RhdGUubWQubm9ybWFsaXplTGlua1RleHQodXJsKVxuXG4gICAgY29uc3QgdG9rZW5fYyA9IHN0YXRlLnB1c2goJ2xpbmtfY2xvc2UnLCAnYScsIC0xKVxuICAgIHRva2VuX2MubWFya3VwID0gJ2xpbmtpZnknXG4gICAgdG9rZW5fYy5pbmZvID0gJ2F1dG8nXG4gIH1cblxuICBzdGF0ZS5wb3MgKz0gdXJsLmxlbmd0aCAtIHByb3RvLmxlbmd0aFxuICByZXR1cm4gdHJ1ZVxufVxuIiwgIi8vIFByb2NlZXNzICdcXG4nXG5cbmltcG9ydCB7IGlzU3BhY2UgfSBmcm9tICcuLi9jb21tb24vdXRpbHMubWpzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBuZXdsaW5lIChzdGF0ZSwgc2lsZW50KSB7XG4gIGxldCBwb3MgPSBzdGF0ZS5wb3NcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgwQS8qIFxcbiAqLykgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGNvbnN0IHBtYXggPSBzdGF0ZS5wZW5kaW5nLmxlbmd0aCAtIDFcbiAgY29uc3QgbWF4ID0gc3RhdGUucG9zTWF4XG5cbiAgLy8gJyAgXFxuJyAtPiBoYXJkYnJlYWtcbiAgLy8gTG9va3VwIGluIHBlbmRpbmcgY2hhcnMgaXMgYmFkIHByYWN0aWNlISBEb24ndCBjb3B5IHRvIG90aGVyIHJ1bGVzIVxuICAvLyBQZW5kaW5nIHN0cmluZyBpcyBzdG9yZWQgaW4gY29uY2F0IG1vZGUsIGluZGV4ZWQgbG9va3VwcyB3aWxsIGNhdXNlXG4gIC8vIGNvbnZlcnRpb24gdG8gZmxhdCBtb2RlLlxuICBpZiAoIXNpbGVudCkge1xuICAgIGlmIChwbWF4ID49IDAgJiYgc3RhdGUucGVuZGluZy5jaGFyQ29kZUF0KHBtYXgpID09PSAweDIwKSB7XG4gICAgICBpZiAocG1heCA+PSAxICYmIHN0YXRlLnBlbmRpbmcuY2hhckNvZGVBdChwbWF4IC0gMSkgPT09IDB4MjApIHtcbiAgICAgICAgLy8gRmluZCB3aGl0ZXNwYWNlcyB0YWlsIG9mIHBlbmRpbmcgY2hhcnMuXG4gICAgICAgIGxldCB3cyA9IHBtYXggLSAxXG4gICAgICAgIHdoaWxlICh3cyA+PSAxICYmIHN0YXRlLnBlbmRpbmcuY2hhckNvZGVBdCh3cyAtIDEpID09PSAweDIwKSB3cy0tXG5cbiAgICAgICAgc3RhdGUucGVuZGluZyA9IHN0YXRlLnBlbmRpbmcuc2xpY2UoMCwgd3MpXG4gICAgICAgIHN0YXRlLnB1c2goJ2hhcmRicmVhaycsICdicicsIDApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5wZW5kaW5nID0gc3RhdGUucGVuZGluZy5zbGljZSgwLCAtMSlcbiAgICAgICAgc3RhdGUucHVzaCgnc29mdGJyZWFrJywgJ2JyJywgMClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucHVzaCgnc29mdGJyZWFrJywgJ2JyJywgMClcbiAgICB9XG4gIH1cblxuICBwb3MrK1xuXG4gIC8vIHNraXAgaGVhZGluZyBzcGFjZXMgZm9yIG5leHQgbGluZVxuICB3aGlsZSAocG9zIDwgbWF4ICYmIGlzU3BhY2Uoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSkpIHsgcG9zKysgfVxuXG4gIHN0YXRlLnBvcyA9IHBvc1xuICByZXR1cm4gdHJ1ZVxufVxuIiwgIi8vIFByb2Nlc3MgZXNjYXBlZCBjaGFycyBhbmQgaGFyZGJyZWFrc1xuXG5pbXBvcnQgeyBpc1NwYWNlIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzLm1qcydcblxuY29uc3QgRVNDQVBFRCA9IFtdXG5cbmZvciAobGV0IGkgPSAwOyBpIDwgMjU2OyBpKyspIHsgRVNDQVBFRC5wdXNoKDApIH1cblxuJ1xcXFwhXCIjJCUmXFwnKCkqKywuLzo7PD0+P0BbXV5fYHt8fX4tJ1xuICAuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGNoKSB7IEVTQ0FQRURbY2guY2hhckNvZGVBdCgwKV0gPSAxIH0pXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGVzY2FwZSAoc3RhdGUsIHNpbGVudCkge1xuICBsZXQgcG9zID0gc3RhdGUucG9zXG4gIGNvbnN0IG1heCA9IHN0YXRlLnBvc01heFxuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDVDLyogXFwgKi8pIHJldHVybiBmYWxzZVxuICBwb3MrK1xuXG4gIC8vICdcXCcgYXQgdGhlIGVuZCBvZiB0aGUgaW5saW5lIGJsb2NrXG4gIGlmIChwb3MgPj0gbWF4KSByZXR1cm4gZmFsc2VcblxuICBsZXQgY2gxID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKVxuXG4gIGlmIChjaDEgPT09IDB4MEEpIHtcbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgc3RhdGUucHVzaCgnaGFyZGJyZWFrJywgJ2JyJywgMClcbiAgICB9XG5cbiAgICBwb3MrK1xuICAgIC8vIHNraXAgbGVhZGluZyB3aGl0ZXNwYWNlcyBmcm9tIG5leHQgbGluZVxuICAgIHdoaWxlIChwb3MgPCBtYXgpIHtcbiAgICAgIGNoMSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcbiAgICAgIGlmICghaXNTcGFjZShjaDEpKSBicmVha1xuICAgICAgcG9zKytcbiAgICB9XG5cbiAgICBzdGF0ZS5wb3MgPSBwb3NcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgbGV0IGVzY2FwZWRTdHIgPSBzdGF0ZS5zcmNbcG9zXVxuXG4gIGlmIChjaDEgPj0gMHhEODAwICYmIGNoMSA8PSAweERCRkYgJiYgcG9zICsgMSA8IG1heCkge1xuICAgIGNvbnN0IGNoMiA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyArIDEpXG5cbiAgICBpZiAoY2gyID49IDB4REMwMCAmJiBjaDIgPD0gMHhERkZGKSB7XG4gICAgICBlc2NhcGVkU3RyICs9IHN0YXRlLnNyY1twb3MgKyAxXVxuICAgICAgcG9zKytcbiAgICB9XG4gIH1cblxuICBjb25zdCBvcmlnU3RyID0gJ1xcXFwnICsgZXNjYXBlZFN0clxuXG4gIGlmICghc2lsZW50KSB7XG4gICAgY29uc3QgdG9rZW4gPSBzdGF0ZS5wdXNoKCd0ZXh0X3NwZWNpYWwnLCAnJywgMClcblxuICAgIGlmIChjaDEgPCAyNTYgJiYgRVNDQVBFRFtjaDFdICE9PSAwKSB7XG4gICAgICB0b2tlbi5jb250ZW50ID0gZXNjYXBlZFN0clxuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbi5jb250ZW50ID0gb3JpZ1N0clxuICAgIH1cblxuICAgIHRva2VuLm1hcmt1cCA9IG9yaWdTdHJcbiAgICB0b2tlbi5pbmZvICAgPSAnZXNjYXBlJ1xuICB9XG5cbiAgc3RhdGUucG9zID0gcG9zICsgMVxuICByZXR1cm4gdHJ1ZVxufVxuIiwgIi8vIFBhcnNlIGJhY2t0aWNrc1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBiYWNrdGljayAoc3RhdGUsIHNpbGVudCkge1xuICBsZXQgcG9zID0gc3RhdGUucG9zXG4gIGNvbnN0IGNoID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKVxuXG4gIGlmIChjaCAhPT0gMHg2MC8qIGAgKi8pIHsgcmV0dXJuIGZhbHNlIH1cblxuICBjb25zdCBzdGFydCA9IHBvc1xuICBwb3MrK1xuICBjb25zdCBtYXggPSBzdGF0ZS5wb3NNYXhcblxuICAvLyBzY2FuIG1hcmtlciBsZW5ndGhcbiAgd2hpbGUgKHBvcyA8IG1heCAmJiBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDYwLyogYCAqLykgeyBwb3MrKyB9XG5cbiAgY29uc3QgbWFya2VyID0gc3RhdGUuc3JjLnNsaWNlKHN0YXJ0LCBwb3MpXG4gIGNvbnN0IG9wZW5lckxlbmd0aCA9IG1hcmtlci5sZW5ndGhcblxuICBpZiAoc3RhdGUuYmFja3RpY2tzU2Nhbm5lZCAmJiAoc3RhdGUuYmFja3RpY2tzW29wZW5lckxlbmd0aF0gfHwgMCkgPD0gc3RhcnQpIHtcbiAgICBpZiAoIXNpbGVudCkgc3RhdGUucGVuZGluZyArPSBtYXJrZXJcbiAgICBzdGF0ZS5wb3MgKz0gb3BlbmVyTGVuZ3RoXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIGxldCBtYXRjaEVuZCA9IHBvc1xuICBsZXQgbWF0Y2hTdGFydFxuXG4gIC8vIE5vdGhpbmcgZm91bmQgaW4gdGhlIGNhY2hlLCBzY2FuIHVudGlsIHRoZSBlbmQgb2YgdGhlIGxpbmUgKG9yIHVudGlsIG1hcmtlciBpcyBmb3VuZClcbiAgd2hpbGUgKChtYXRjaFN0YXJ0ID0gc3RhdGUuc3JjLmluZGV4T2YoJ2AnLCBtYXRjaEVuZCkpICE9PSAtMSkge1xuICAgIG1hdGNoRW5kID0gbWF0Y2hTdGFydCArIDFcblxuICAgIC8vIHNjYW4gbWFya2VyIGxlbmd0aFxuICAgIHdoaWxlIChtYXRjaEVuZCA8IG1heCAmJiBzdGF0ZS5zcmMuY2hhckNvZGVBdChtYXRjaEVuZCkgPT09IDB4NjAvKiBgICovKSB7IG1hdGNoRW5kKysgfVxuXG4gICAgY29uc3QgY2xvc2VyTGVuZ3RoID0gbWF0Y2hFbmQgLSBtYXRjaFN0YXJ0XG5cbiAgICBpZiAoY2xvc2VyTGVuZ3RoID09PSBvcGVuZXJMZW5ndGgpIHtcbiAgICAgIC8vIEZvdW5kIG1hdGNoaW5nIGNsb3NlciBsZW5ndGguXG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHN0YXRlLnB1c2goJ2NvZGVfaW5saW5lJywgJ2NvZGUnLCAwKVxuICAgICAgICB0b2tlbi5tYXJrdXAgPSBtYXJrZXJcbiAgICAgICAgdG9rZW4uY29udGVudCA9IHN0YXRlLnNyYy5zbGljZShwb3MsIG1hdGNoU3RhcnQpXG4gICAgICAgICAgLnJlcGxhY2UoL1xcbi9nLCAnICcpXG4gICAgICAgICAgLnJlcGxhY2UoL14gKC4rKSAkLywgJyQxJylcbiAgICAgIH1cbiAgICAgIHN0YXRlLnBvcyA9IG1hdGNoRW5kXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIC8vIFNvbWUgZGlmZmVyZW50IGxlbmd0aCBmb3VuZCwgcHV0IGl0IGluIGNhY2hlIGFzIHVwcGVyIGxpbWl0IG9mIHdoZXJlIGNsb3NlciBjYW4gYmUgZm91bmRcbiAgICBzdGF0ZS5iYWNrdGlja3NbY2xvc2VyTGVuZ3RoXSA9IG1hdGNoU3RhcnRcbiAgfVxuXG4gIC8vIFNjYW5uZWQgdGhyb3VnaCB0aGUgZW5kLCBkaWRuJ3QgZmluZCBhbnl0aGluZ1xuICBzdGF0ZS5iYWNrdGlja3NTY2FubmVkID0gdHJ1ZVxuXG4gIGlmICghc2lsZW50KSBzdGF0ZS5wZW5kaW5nICs9IG1hcmtlclxuICBzdGF0ZS5wb3MgKz0gb3BlbmVyTGVuZ3RoXG4gIHJldHVybiB0cnVlXG59XG4iLCAiLy8gfn5zdHJpa2UgdGhyb3VnaH5+XG4vL1xuXG4vLyBJbnNlcnQgZWFjaCBtYXJrZXIgYXMgYSBzZXBhcmF0ZSB0ZXh0IHRva2VuLCBhbmQgYWRkIGl0IHRvIGRlbGltaXRlciBsaXN0XG4vL1xuZnVuY3Rpb24gc3RyaWtldGhyb3VnaF90b2tlbml6ZSAoc3RhdGUsIHNpbGVudCkge1xuICBjb25zdCBzdGFydCA9IHN0YXRlLnBvc1xuICBjb25zdCBtYXJrZXIgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGFydClcblxuICBpZiAoc2lsZW50KSB7IHJldHVybiBmYWxzZSB9XG5cbiAgaWYgKG1hcmtlciAhPT0gMHg3RS8qIH4gKi8pIHsgcmV0dXJuIGZhbHNlIH1cblxuICBjb25zdCBzY2FubmVkID0gc3RhdGUuc2NhbkRlbGltcyhzdGF0ZS5wb3MsIHRydWUpXG4gIGxldCBsZW4gPSBzY2FubmVkLmxlbmd0aFxuICBjb25zdCBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUobWFya2VyKVxuXG4gIGlmIChsZW4gPCAyKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgbGV0IHRva2VuXG5cbiAgaWYgKGxlbiAlIDIpIHtcbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKVxuICAgIHRva2VuLmNvbnRlbnQgPSBjaFxuICAgIGxlbi0tXG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSArPSAyKSB7XG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMClcbiAgICB0b2tlbi5jb250ZW50ID0gY2ggKyBjaFxuXG4gICAgc3RhdGUuZGVsaW1pdGVycy5wdXNoKHtcbiAgICAgIG1hcmtlcixcbiAgICAgIGxlbmd0aDogMCwgICAgIC8vIGRpc2FibGUgXCJydWxlIG9mIDNcIiBsZW5ndGggY2hlY2tzIG1lYW50IGZvciBlbXBoYXNpc1xuICAgICAgdG9rZW46IHN0YXRlLnRva2Vucy5sZW5ndGggLSAxLFxuICAgICAgZW5kOiAtMSxcbiAgICAgIG9wZW46IHNjYW5uZWQuY2FuX29wZW4sXG4gICAgICBjbG9zZTogc2Nhbm5lZC5jYW5fY2xvc2VcbiAgICB9KVxuICB9XG5cbiAgc3RhdGUucG9zICs9IHNjYW5uZWQubGVuZ3RoXG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gcG9zdFByb2Nlc3MgKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIGxldCB0b2tlblxuICBjb25zdCBsb25lTWFya2VycyA9IFtdXG4gIGNvbnN0IG1heCA9IGRlbGltaXRlcnMubGVuZ3RoXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXg7IGkrKykge1xuICAgIGNvbnN0IHN0YXJ0RGVsaW0gPSBkZWxpbWl0ZXJzW2ldXG5cbiAgICBpZiAoc3RhcnREZWxpbS5tYXJrZXIgIT09IDB4N0UvKiB+ICovKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChzdGFydERlbGltLmVuZCA9PT0gLTEpIHtcbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgY29uc3QgZW5kRGVsaW0gPSBkZWxpbWl0ZXJzW3N0YXJ0RGVsaW0uZW5kXVxuXG4gICAgdG9rZW4gICAgICAgICA9IHN0YXRlLnRva2Vuc1tzdGFydERlbGltLnRva2VuXVxuICAgIHRva2VuLnR5cGUgICAgPSAnc19vcGVuJ1xuICAgIHRva2VuLnRhZyAgICAgPSAncydcbiAgICB0b2tlbi5uZXN0aW5nID0gMVxuICAgIHRva2VuLm1hcmt1cCAgPSAnfn4nXG4gICAgdG9rZW4uY29udGVudCA9ICcnXG5cbiAgICB0b2tlbiAgICAgICAgID0gc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuXVxuICAgIHRva2VuLnR5cGUgICAgPSAnc19jbG9zZSdcbiAgICB0b2tlbi50YWcgICAgID0gJ3MnXG4gICAgdG9rZW4ubmVzdGluZyA9IC0xXG4gICAgdG9rZW4ubWFya3VwICA9ICd+fidcbiAgICB0b2tlbi5jb250ZW50ID0gJydcblxuICAgIGlmIChzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW4gLSAxXS50eXBlID09PSAndGV4dCcgJiZcbiAgICAgICAgc3RhdGUudG9rZW5zW2VuZERlbGltLnRva2VuIC0gMV0uY29udGVudCA9PT0gJ34nKSB7XG4gICAgICBsb25lTWFya2Vycy5wdXNoKGVuZERlbGltLnRva2VuIC0gMSlcbiAgICB9XG4gIH1cblxuICAvLyBJZiBhIG1hcmtlciBzZXF1ZW5jZSBoYXMgYW4gb2RkIG51bWJlciBvZiBjaGFyYWN0ZXJzLCBpdCdzIHNwbGl0dGVkXG4gIC8vIGxpa2UgdGhpczogYH5+fn5+YCAtPiBgfmAgKyBgfn5gICsgYH5+YCwgbGVhdmluZyBvbmUgbWFya2VyIGF0IHRoZVxuICAvLyBzdGFydCBvZiB0aGUgc2VxdWVuY2UuXG4gIC8vXG4gIC8vIFNvLCB3ZSBoYXZlIHRvIG1vdmUgYWxsIHRob3NlIG1hcmtlcnMgYWZ0ZXIgc3Vic2VxdWVudCBzX2Nsb3NlIHRhZ3MuXG4gIC8vXG4gIHdoaWxlIChsb25lTWFya2Vycy5sZW5ndGgpIHtcbiAgICBjb25zdCBpID0gbG9uZU1hcmtlcnMucG9wKClcbiAgICBsZXQgaiA9IGkgKyAxXG5cbiAgICB3aGlsZSAoaiA8IHN0YXRlLnRva2Vucy5sZW5ndGggJiYgc3RhdGUudG9rZW5zW2pdLnR5cGUgPT09ICdzX2Nsb3NlJykge1xuICAgICAgaisrXG4gICAgfVxuXG4gICAgai0tXG5cbiAgICBpZiAoaSAhPT0gaikge1xuICAgICAgdG9rZW4gPSBzdGF0ZS50b2tlbnNbal1cbiAgICAgIHN0YXRlLnRva2Vuc1tqXSA9IHN0YXRlLnRva2Vuc1tpXVxuICAgICAgc3RhdGUudG9rZW5zW2ldID0gdG9rZW5cbiAgICB9XG4gIH1cbn1cblxuLy8gV2FsayB0aHJvdWdoIGRlbGltaXRlciBsaXN0IGFuZCByZXBsYWNlIHRleHQgdG9rZW5zIHdpdGggdGFnc1xuLy9cbmZ1bmN0aW9uIHN0cmlrZXRocm91Z2hfcG9zdFByb2Nlc3MgKHN0YXRlKSB7XG4gIGNvbnN0IHRva2Vuc19tZXRhID0gc3RhdGUudG9rZW5zX21ldGFcbiAgY29uc3QgbWF4ID0gc3RhdGUudG9rZW5zX21ldGEubGVuZ3RoXG5cbiAgcG9zdFByb2Nlc3Moc3RhdGUsIHN0YXRlLmRlbGltaXRlcnMpXG5cbiAgZm9yIChsZXQgY3VyciA9IDA7IGN1cnIgPCBtYXg7IGN1cnIrKykge1xuICAgIGlmICh0b2tlbnNfbWV0YVtjdXJyXSAmJiB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKSB7XG4gICAgICBwb3N0UHJvY2VzcyhzdGF0ZSwgdG9rZW5zX21ldGFbY3Vycl0uZGVsaW1pdGVycylcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICB0b2tlbml6ZTogc3RyaWtldGhyb3VnaF90b2tlbml6ZSxcbiAgcG9zdFByb2Nlc3M6IHN0cmlrZXRocm91Z2hfcG9zdFByb2Nlc3Ncbn1cbiIsICIvLyBQcm9jZXNzICp0aGlzKiBhbmQgX3RoYXRfXG4vL1xuXG4vLyBJbnNlcnQgZWFjaCBtYXJrZXIgYXMgYSBzZXBhcmF0ZSB0ZXh0IHRva2VuLCBhbmQgYWRkIGl0IHRvIGRlbGltaXRlciBsaXN0XG4vL1xuZnVuY3Rpb24gZW1waGFzaXNfdG9rZW5pemUgKHN0YXRlLCBzaWxlbnQpIHtcbiAgY29uc3Qgc3RhcnQgPSBzdGF0ZS5wb3NcbiAgY29uc3QgbWFya2VyID0gc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhcnQpXG5cbiAgaWYgKHNpbGVudCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGlmIChtYXJrZXIgIT09IDB4NUYgLyogXyAqLyAmJiBtYXJrZXIgIT09IDB4MkEgLyogKiAqLykgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGNvbnN0IHNjYW5uZWQgPSBzdGF0ZS5zY2FuRGVsaW1zKHN0YXRlLnBvcywgbWFya2VyID09PSAweDJBKVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2Nhbm5lZC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHRva2VuID0gc3RhdGUucHVzaCgndGV4dCcsICcnLCAwKVxuICAgIHRva2VuLmNvbnRlbnQgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG1hcmtlcilcblxuICAgIHN0YXRlLmRlbGltaXRlcnMucHVzaCh7XG4gICAgICAvLyBDaGFyIGNvZGUgb2YgdGhlIHN0YXJ0aW5nIG1hcmtlciAobnVtYmVyKS5cbiAgICAgIC8vXG4gICAgICBtYXJrZXIsXG5cbiAgICAgIC8vIFRvdGFsIGxlbmd0aCBvZiB0aGVzZSBzZXJpZXMgb2YgZGVsaW1pdGVycy5cbiAgICAgIC8vXG4gICAgICBsZW5ndGg6IHNjYW5uZWQubGVuZ3RoLFxuXG4gICAgICAvLyBBIHBvc2l0aW9uIG9mIHRoZSB0b2tlbiB0aGlzIGRlbGltaXRlciBjb3JyZXNwb25kcyB0by5cbiAgICAgIC8vXG4gICAgICB0b2tlbjogc3RhdGUudG9rZW5zLmxlbmd0aCAtIDEsXG5cbiAgICAgIC8vIElmIHRoaXMgZGVsaW1pdGVyIGlzIG1hdGNoZWQgYXMgYSB2YWxpZCBvcGVuZXIsIGBlbmRgIHdpbGwgYmVcbiAgICAgIC8vIGVxdWFsIHRvIGl0cyBwb3NpdGlvbiwgb3RoZXJ3aXNlIGl0J3MgYC0xYC5cbiAgICAgIC8vXG4gICAgICBlbmQ6IC0xLFxuXG4gICAgICAvLyBCb29sZWFuIGZsYWdzIHRoYXQgZGV0ZXJtaW5lIGlmIHRoaXMgZGVsaW1pdGVyIGNvdWxkIG9wZW4gb3IgY2xvc2VcbiAgICAgIC8vIGFuIGVtcGhhc2lzLlxuICAgICAgLy9cbiAgICAgIG9wZW46IHNjYW5uZWQuY2FuX29wZW4sXG4gICAgICBjbG9zZTogc2Nhbm5lZC5jYW5fY2xvc2VcbiAgICB9KVxuICB9XG5cbiAgc3RhdGUucG9zICs9IHNjYW5uZWQubGVuZ3RoXG5cbiAgcmV0dXJuIHRydWVcbn1cblxuZnVuY3Rpb24gcG9zdFByb2Nlc3MgKHN0YXRlLCBkZWxpbWl0ZXJzKSB7XG4gIGNvbnN0IG1heCA9IGRlbGltaXRlcnMubGVuZ3RoXG5cbiAgZm9yIChsZXQgaSA9IG1heCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgY29uc3Qgc3RhcnREZWxpbSA9IGRlbGltaXRlcnNbaV1cblxuICAgIGlmIChzdGFydERlbGltLm1hcmtlciAhPT0gMHg1Ri8qIF8gKi8gJiYgc3RhcnREZWxpbS5tYXJrZXIgIT09IDB4MkEvKiAqICovKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIC8vIFByb2Nlc3Mgb25seSBvcGVuaW5nIG1hcmtlcnNcbiAgICBpZiAoc3RhcnREZWxpbS5lbmQgPT09IC0xKSB7XG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGNvbnN0IGVuZERlbGltID0gZGVsaW1pdGVyc1tzdGFydERlbGltLmVuZF1cblxuICAgIC8vIElmIHRoZSBwcmV2aW91cyBkZWxpbWl0ZXIgaGFzIHRoZSBzYW1lIG1hcmtlciBhbmQgaXMgYWRqYWNlbnQgdG8gdGhpcyBvbmUsXG4gICAgLy8gbWVyZ2UgdGhvc2UgaW50byBvbmUgc3Ryb25nIGRlbGltaXRlci5cbiAgICAvL1xuICAgIC8vIGA8ZW0+PGVtPndoYXRldmVyPC9lbT48L2VtPmAgLT4gYDxzdHJvbmc+d2hhdGV2ZXI8L3N0cm9uZz5gXG4gICAgLy9cbiAgICBjb25zdCBpc1N0cm9uZyA9IGkgPiAwICYmXG4gICAgICAgICAgICAgICBkZWxpbWl0ZXJzW2kgLSAxXS5lbmQgPT09IHN0YXJ0RGVsaW0uZW5kICsgMSAmJlxuICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCBmaXJzdCB0d28gbWFya2VycyBtYXRjaCBhbmQgYWRqYWNlbnRcbiAgICAgICAgICAgICAgIGRlbGltaXRlcnNbaSAtIDFdLm1hcmtlciA9PT0gc3RhcnREZWxpbS5tYXJrZXIgJiZcbiAgICAgICAgICAgICAgIGRlbGltaXRlcnNbaSAtIDFdLnRva2VuID09PSBzdGFydERlbGltLnRva2VuIC0gMSAmJlxuICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhhdCBsYXN0IHR3byBtYXJrZXJzIGFyZSBhZGphY2VudCAod2UgY2FuIHNhZmVseSBhc3N1bWUgdGhleSBtYXRjaClcbiAgICAgICAgICAgICAgIGRlbGltaXRlcnNbc3RhcnREZWxpbS5lbmQgKyAxXS50b2tlbiA9PT0gZW5kRGVsaW0udG9rZW4gKyAxXG5cbiAgICBjb25zdCBjaCA9IFN0cmluZy5mcm9tQ2hhckNvZGUoc3RhcnREZWxpbS5tYXJrZXIpXG5cbiAgICBjb25zdCB0b2tlbl9vICAgPSBzdGF0ZS50b2tlbnNbc3RhcnREZWxpbS50b2tlbl1cbiAgICB0b2tlbl9vLnR5cGUgICAgPSBpc1N0cm9uZyA/ICdzdHJvbmdfb3BlbicgOiAnZW1fb3BlbidcbiAgICB0b2tlbl9vLnRhZyAgICAgPSBpc1N0cm9uZyA/ICdzdHJvbmcnIDogJ2VtJ1xuICAgIHRva2VuX28ubmVzdGluZyA9IDFcbiAgICB0b2tlbl9vLm1hcmt1cCAgPSBpc1N0cm9uZyA/IGNoICsgY2ggOiBjaFxuICAgIHRva2VuX28uY29udGVudCA9ICcnXG5cbiAgICBjb25zdCB0b2tlbl9jICAgPSBzdGF0ZS50b2tlbnNbZW5kRGVsaW0udG9rZW5dXG4gICAgdG9rZW5fYy50eXBlICAgID0gaXNTdHJvbmcgPyAnc3Ryb25nX2Nsb3NlJyA6ICdlbV9jbG9zZSdcbiAgICB0b2tlbl9jLnRhZyAgICAgPSBpc1N0cm9uZyA/ICdzdHJvbmcnIDogJ2VtJ1xuICAgIHRva2VuX2MubmVzdGluZyA9IC0xXG4gICAgdG9rZW5fYy5tYXJrdXAgID0gaXNTdHJvbmcgPyBjaCArIGNoIDogY2hcbiAgICB0b2tlbl9jLmNvbnRlbnQgPSAnJ1xuXG4gICAgaWYgKGlzU3Ryb25nKSB7XG4gICAgICBzdGF0ZS50b2tlbnNbZGVsaW1pdGVyc1tpIC0gMV0udG9rZW5dLmNvbnRlbnQgPSAnJ1xuICAgICAgc3RhdGUudG9rZW5zW2RlbGltaXRlcnNbc3RhcnREZWxpbS5lbmQgKyAxXS50b2tlbl0uY29udGVudCA9ICcnXG4gICAgICBpLS1cbiAgICB9XG4gIH1cbn1cblxuLy8gV2FsayB0aHJvdWdoIGRlbGltaXRlciBsaXN0IGFuZCByZXBsYWNlIHRleHQgdG9rZW5zIHdpdGggdGFnc1xuLy9cbmZ1bmN0aW9uIGVtcGhhc2lzX3Bvc3RfcHJvY2VzcyAoc3RhdGUpIHtcbiAgY29uc3QgdG9rZW5zX21ldGEgPSBzdGF0ZS50b2tlbnNfbWV0YVxuICBjb25zdCBtYXggPSBzdGF0ZS50b2tlbnNfbWV0YS5sZW5ndGhcblxuICBwb3N0UHJvY2VzcyhzdGF0ZSwgc3RhdGUuZGVsaW1pdGVycylcblxuICBmb3IgKGxldCBjdXJyID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgaWYgKHRva2Vuc19tZXRhW2N1cnJdICYmIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpIHtcbiAgICAgIHBvc3RQcm9jZXNzKHN0YXRlLCB0b2tlbnNfbWV0YVtjdXJyXS5kZWxpbWl0ZXJzKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIHRva2VuaXplOiBlbXBoYXNpc190b2tlbml6ZSxcbiAgcG9zdFByb2Nlc3M6IGVtcGhhc2lzX3Bvc3RfcHJvY2Vzc1xufVxuIiwgIi8vIFByb2Nlc3MgW2xpbmtdKDx0bz4gXCJzdHVmZlwiKVxuXG5pbXBvcnQgeyBub3JtYWxpemVSZWZlcmVuY2UsIGlzU3BhY2UgfSBmcm9tICcuLi9jb21tb24vdXRpbHMubWpzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsaW5rIChzdGF0ZSwgc2lsZW50KSB7XG4gIGxldCBjb2RlLCBsYWJlbCwgcmVzLCByZWZcbiAgbGV0IGhyZWYgPSAnJ1xuICBsZXQgdGl0bGUgPSAnJ1xuICBsZXQgc3RhcnQgPSBzdGF0ZS5wb3NcbiAgbGV0IHBhcnNlUmVmZXJlbmNlID0gdHJ1ZVxuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChzdGF0ZS5wb3MpICE9PSAweDVCLyogWyAqLykgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGNvbnN0IG9sZFBvcyA9IHN0YXRlLnBvc1xuICBjb25zdCBtYXggPSBzdGF0ZS5wb3NNYXhcbiAgY29uc3QgbGFiZWxTdGFydCA9IHN0YXRlLnBvcyArIDFcbiAgY29uc3QgbGFiZWxFbmQgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua0xhYmVsKHN0YXRlLCBzdGF0ZS5wb3MsIHRydWUpXG5cbiAgLy8gcGFyc2VyIGZhaWxlZCB0byBmaW5kICddJywgc28gaXQncyBub3QgYSB2YWxpZCBsaW5rXG4gIGlmIChsYWJlbEVuZCA8IDApIHsgcmV0dXJuIGZhbHNlIH1cblxuICBsZXQgcG9zID0gbGFiZWxFbmQgKyAxXG4gIGlmIChwb3MgPCBtYXggJiYgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSA9PT0gMHgyOC8qICggKi8pIHtcbiAgICAvL1xuICAgIC8vIElubGluZSBsaW5rXG4gICAgLy9cblxuICAgIC8vIG1pZ2h0IGhhdmUgZm91bmQgYSB2YWxpZCBzaG9ydGN1dCBsaW5rLCBkaXNhYmxlIHJlZmVyZW5jZSBwYXJzaW5nXG4gICAgcGFyc2VSZWZlcmVuY2UgPSBmYWxzZVxuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgcG9zKytcbiAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgY29kZSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrIH1cbiAgICB9XG4gICAgaWYgKHBvcyA+PSBtYXgpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgICAgXl5eXl5eIHBhcnNpbmcgbGluayBkZXN0aW5hdGlvblxuICAgIHN0YXJ0ID0gcG9zXG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KVxuICAgIGlmIChyZXMub2spIHtcbiAgICAgIGhyZWYgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKHJlcy5zdHIpXG4gICAgICBpZiAoc3RhdGUubWQudmFsaWRhdGVMaW5rKGhyZWYpKSB7XG4gICAgICAgIHBvcyA9IHJlcy5wb3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyZWYgPSAnJ1xuICAgICAgfVxuXG4gICAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgICAgLy8gICAgICAgICAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgICBzdGFydCA9IHBvc1xuICAgICAgZm9yICg7IHBvcyA8IG1heDsgcG9zKyspIHtcbiAgICAgICAgY29kZSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcbiAgICAgICAgaWYgKCFpc1NwYWNlKGNvZGUpICYmIGNvZGUgIT09IDB4MEEpIHsgYnJlYWsgfVxuICAgICAgfVxuXG4gICAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgICAgLy8gICAgICAgICAgICAgICAgICBeXl5eXl5eIHBhcnNpbmcgbGluayB0aXRsZVxuICAgICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtUaXRsZShzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KVxuICAgICAgaWYgKHBvcyA8IG1heCAmJiBzdGFydCAhPT0gcG9zICYmIHJlcy5vaykge1xuICAgICAgICB0aXRsZSA9IHJlcy5zdHJcbiAgICAgICAgcG9zID0gcmVzLnBvc1xuXG4gICAgICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIF5eIHNraXBwaW5nIHRoZXNlIHNwYWNlc1xuICAgICAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgICAgIGNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpXG4gICAgICAgICAgaWYgKCFpc1NwYWNlKGNvZGUpICYmIGNvZGUgIT09IDB4MEEpIHsgYnJlYWsgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHBvcyA+PSBtYXggfHwgc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgyOS8qICkgKi8pIHtcbiAgICAgIC8vIHBhcnNpbmcgYSB2YWxpZCBzaG9ydGN1dCBsaW5rIGZhaWxlZCwgZmFsbGJhY2sgdG8gcmVmZXJlbmNlXG4gICAgICBwYXJzZVJlZmVyZW5jZSA9IHRydWVcbiAgICB9XG4gICAgcG9zKytcbiAgfVxuXG4gIGlmIChwYXJzZVJlZmVyZW5jZSkge1xuICAgIC8vXG4gICAgLy8gTGluayByZWZlcmVuY2VcbiAgICAvL1xuICAgIGlmICh0eXBlb2Ygc3RhdGUuZW52LnJlZmVyZW5jZXMgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4NUIvKiBbICovKSB7XG4gICAgICBzdGFydCA9IHBvcyArIDFcbiAgICAgIHBvcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHBvcylcbiAgICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAgICBsYWJlbCA9IHN0YXRlLnNyYy5zbGljZShzdGFydCwgcG9zKyspXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgPSBsYWJlbEVuZCArIDFcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zID0gbGFiZWxFbmQgKyAxXG4gICAgfVxuXG4gICAgLy8gY292ZXJzIGxhYmVsID09PSAnJyBhbmQgbGFiZWwgPT09IHVuZGVmaW5lZFxuICAgIC8vIChjb2xsYXBzZWQgcmVmZXJlbmNlIGxpbmsgYW5kIHNob3J0Y3V0IHJlZmVyZW5jZSBsaW5rIHJlc3BlY3RpdmVseSlcbiAgICBpZiAoIWxhYmVsKSB7IGxhYmVsID0gc3RhdGUuc3JjLnNsaWNlKGxhYmVsU3RhcnQsIGxhYmVsRW5kKSB9XG5cbiAgICByZWYgPSBzdGF0ZS5lbnYucmVmZXJlbmNlc1tub3JtYWxpemVSZWZlcmVuY2UobGFiZWwpXVxuICAgIGlmICghcmVmKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3NcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBocmVmID0gcmVmLmhyZWZcbiAgICB0aXRsZSA9IHJlZi50aXRsZVxuICB9XG5cbiAgLy9cbiAgLy8gV2UgZm91bmQgdGhlIGVuZCBvZiB0aGUgbGluaywgYW5kIGtub3cgZm9yIGEgZmFjdCBpdCdzIGEgdmFsaWQgbGluaztcbiAgLy8gc28gYWxsIHRoYXQncyBsZWZ0IHRvIGRvIGlzIHRvIGNhbGwgdG9rZW5pemVyLlxuICAvL1xuICBpZiAoIXNpbGVudCkge1xuICAgIHN0YXRlLnBvcyA9IGxhYmVsU3RhcnRcbiAgICBzdGF0ZS5wb3NNYXggPSBsYWJlbEVuZFxuXG4gICAgY29uc3QgdG9rZW5fbyA9IHN0YXRlLnB1c2goJ2xpbmtfb3BlbicsICdhJywgMSlcbiAgICBjb25zdCBhdHRycyA9IFtbJ2hyZWYnLCBocmVmXV1cbiAgICB0b2tlbl9vLmF0dHJzICA9IGF0dHJzXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBhdHRycy5wdXNoKFsndGl0bGUnLCB0aXRsZV0pXG4gICAgfVxuXG4gICAgc3RhdGUubGlua0xldmVsKytcbiAgICBzdGF0ZS5tZC5pbmxpbmUudG9rZW5pemUoc3RhdGUpXG4gICAgc3RhdGUubGlua0xldmVsLS1cblxuICAgIHN0YXRlLnB1c2goJ2xpbmtfY2xvc2UnLCAnYScsIC0xKVxuICB9XG5cbiAgc3RhdGUucG9zID0gcG9zXG4gIHN0YXRlLnBvc01heCA9IG1heFxuICByZXR1cm4gdHJ1ZVxufVxuIiwgIi8vIFByb2Nlc3MgIVtpbWFnZV0oPHNyYz4gXCJ0aXRsZVwiKVxuXG5pbXBvcnQgeyBub3JtYWxpemVSZWZlcmVuY2UsIGlzU3BhY2UgfSBmcm9tICcuLi9jb21tb24vdXRpbHMubWpzJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpbWFnZSAoc3RhdGUsIHNpbGVudCkge1xuICBsZXQgY29kZSwgY29udGVudCwgbGFiZWwsIHBvcywgcmVmLCByZXMsIHRpdGxlLCBzdGFydFxuICBsZXQgaHJlZiA9ICcnXG4gIGNvbnN0IG9sZFBvcyA9IHN0YXRlLnBvc1xuICBjb25zdCBtYXggPSBzdGF0ZS5wb3NNYXhcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQoc3RhdGUucG9zKSAhPT0gMHgyMS8qICEgKi8pIHsgcmV0dXJuIGZhbHNlIH1cbiAgaWYgKHN0YXRlLnNyYy5jaGFyQ29kZUF0KHN0YXRlLnBvcyArIDEpICE9PSAweDVCLyogWyAqLykgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGNvbnN0IGxhYmVsU3RhcnQgPSBzdGF0ZS5wb3MgKyAyXG4gIGNvbnN0IGxhYmVsRW5kID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtMYWJlbChzdGF0ZSwgc3RhdGUucG9zICsgMSwgZmFsc2UpXG5cbiAgLy8gcGFyc2VyIGZhaWxlZCB0byBmaW5kICddJywgc28gaXQncyBub3QgYSB2YWxpZCBsaW5rXG4gIGlmIChsYWJlbEVuZCA8IDApIHsgcmV0dXJuIGZhbHNlIH1cblxuICBwb3MgPSBsYWJlbEVuZCArIDFcbiAgaWYgKHBvcyA8IG1heCAmJiBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpID09PSAweDI4LyogKCAqLykge1xuICAgIC8vXG4gICAgLy8gSW5saW5lIGxpbmtcbiAgICAvL1xuXG4gICAgLy8gW2xpbmtdKCAgPGhyZWY+ICBcInRpdGxlXCIgIClcbiAgICAvLyAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgcG9zKytcbiAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgY29kZSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrIH1cbiAgICB9XG4gICAgaWYgKHBvcyA+PSBtYXgpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgICAgXl5eXl5eIHBhcnNpbmcgbGluayBkZXN0aW5hdGlvblxuICAgIHN0YXJ0ID0gcG9zXG4gICAgcmVzID0gc3RhdGUubWQuaGVscGVycy5wYXJzZUxpbmtEZXN0aW5hdGlvbihzdGF0ZS5zcmMsIHBvcywgc3RhdGUucG9zTWF4KVxuICAgIGlmIChyZXMub2spIHtcbiAgICAgIGhyZWYgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKHJlcy5zdHIpXG4gICAgICBpZiAoc3RhdGUubWQudmFsaWRhdGVMaW5rKGhyZWYpKSB7XG4gICAgICAgIHBvcyA9IHJlcy5wb3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhyZWYgPSAnJ1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgLy8gICAgICAgICAgICAgICAgXl4gc2tpcHBpbmcgdGhlc2Ugc3BhY2VzXG4gICAgc3RhcnQgPSBwb3NcbiAgICBmb3IgKDsgcG9zIDwgbWF4OyBwb3MrKykge1xuICAgICAgY29kZSA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcbiAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrIH1cbiAgICB9XG5cbiAgICAvLyBbbGlua10oICA8aHJlZj4gIFwidGl0bGVcIiAgKVxuICAgIC8vICAgICAgICAgICAgICAgICAgXl5eXl5eXiBwYXJzaW5nIGxpbmsgdGl0bGVcbiAgICByZXMgPSBzdGF0ZS5tZC5oZWxwZXJzLnBhcnNlTGlua1RpdGxlKHN0YXRlLnNyYywgcG9zLCBzdGF0ZS5wb3NNYXgpXG4gICAgaWYgKHBvcyA8IG1heCAmJiBzdGFydCAhPT0gcG9zICYmIHJlcy5vaykge1xuICAgICAgdGl0bGUgPSByZXMuc3RyXG4gICAgICBwb3MgPSByZXMucG9zXG5cbiAgICAgIC8vIFtsaW5rXSggIDxocmVmPiAgXCJ0aXRsZVwiICApXG4gICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBeXiBza2lwcGluZyB0aGVzZSBzcGFjZXNcbiAgICAgIGZvciAoOyBwb3MgPCBtYXg7IHBvcysrKSB7XG4gICAgICAgIGNvZGUgPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpXG4gICAgICAgIGlmICghaXNTcGFjZShjb2RlKSAmJiBjb2RlICE9PSAweDBBKSB7IGJyZWFrIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGl0bGUgPSAnJ1xuICAgIH1cblxuICAgIGlmIChwb3MgPj0gbWF4IHx8IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgIT09IDB4MjkvKiApICovKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3NcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBwb3MrK1xuICB9IGVsc2Uge1xuICAgIC8vXG4gICAgLy8gTGluayByZWZlcmVuY2VcbiAgICAvL1xuICAgIGlmICh0eXBlb2Ygc3RhdGUuZW52LnJlZmVyZW5jZXMgPT09ICd1bmRlZmluZWQnKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBpZiAocG9zIDwgbWF4ICYmIHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcykgPT09IDB4NUIvKiBbICovKSB7XG4gICAgICBzdGFydCA9IHBvcyArIDFcbiAgICAgIHBvcyA9IHN0YXRlLm1kLmhlbHBlcnMucGFyc2VMaW5rTGFiZWwoc3RhdGUsIHBvcylcbiAgICAgIGlmIChwb3MgPj0gMCkge1xuICAgICAgICBsYWJlbCA9IHN0YXRlLnNyYy5zbGljZShzdGFydCwgcG9zKyspXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwb3MgPSBsYWJlbEVuZCArIDFcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcG9zID0gbGFiZWxFbmQgKyAxXG4gICAgfVxuXG4gICAgLy8gY292ZXJzIGxhYmVsID09PSAnJyBhbmQgbGFiZWwgPT09IHVuZGVmaW5lZFxuICAgIC8vIChjb2xsYXBzZWQgcmVmZXJlbmNlIGxpbmsgYW5kIHNob3J0Y3V0IHJlZmVyZW5jZSBsaW5rIHJlc3BlY3RpdmVseSlcbiAgICBpZiAoIWxhYmVsKSB7IGxhYmVsID0gc3RhdGUuc3JjLnNsaWNlKGxhYmVsU3RhcnQsIGxhYmVsRW5kKSB9XG5cbiAgICByZWYgPSBzdGF0ZS5lbnYucmVmZXJlbmNlc1tub3JtYWxpemVSZWZlcmVuY2UobGFiZWwpXVxuICAgIGlmICghcmVmKSB7XG4gICAgICBzdGF0ZS5wb3MgPSBvbGRQb3NcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgICBocmVmID0gcmVmLmhyZWZcbiAgICB0aXRsZSA9IHJlZi50aXRsZVxuICB9XG5cbiAgLy9cbiAgLy8gV2UgZm91bmQgdGhlIGVuZCBvZiB0aGUgbGluaywgYW5kIGtub3cgZm9yIGEgZmFjdCBpdCdzIGEgdmFsaWQgbGluaztcbiAgLy8gc28gYWxsIHRoYXQncyBsZWZ0IHRvIGRvIGlzIHRvIGNhbGwgdG9rZW5pemVyLlxuICAvL1xuICBpZiAoIXNpbGVudCkge1xuICAgIGNvbnRlbnQgPSBzdGF0ZS5zcmMuc2xpY2UobGFiZWxTdGFydCwgbGFiZWxFbmQpXG5cbiAgICBjb25zdCB0b2tlbnMgPSBbXVxuICAgIHN0YXRlLm1kLmlubGluZS5wYXJzZShcbiAgICAgIGNvbnRlbnQsXG4gICAgICBzdGF0ZS5tZCxcbiAgICAgIHN0YXRlLmVudixcbiAgICAgIHRva2Vuc1xuICAgIClcblxuICAgIGNvbnN0IHRva2VuID0gc3RhdGUucHVzaCgnaW1hZ2UnLCAnaW1nJywgMClcbiAgICBjb25zdCBhdHRycyA9IFtbJ3NyYycsIGhyZWZdLCBbJ2FsdCcsICcnXV1cbiAgICB0b2tlbi5hdHRycyA9IGF0dHJzXG4gICAgdG9rZW4uY2hpbGRyZW4gPSB0b2tlbnNcbiAgICB0b2tlbi5jb250ZW50ID0gY29udGVudFxuXG4gICAgaWYgKHRpdGxlKSB7XG4gICAgICBhdHRycy5wdXNoKFsndGl0bGUnLCB0aXRsZV0pXG4gICAgfVxuICB9XG5cbiAgc3RhdGUucG9zID0gcG9zXG4gIHN0YXRlLnBvc01heCA9IG1heFxuICByZXR1cm4gdHJ1ZVxufVxuIiwgIi8vIFByb2Nlc3MgYXV0b2xpbmtzICc8cHJvdG9jb2w6Li4uPidcblxuLyogZXNsaW50IG1heC1sZW46MCAqL1xuY29uc3QgRU1BSUxfUkUgICAgPSAvXihbYS16QS1aMC05LiEjJCUmJyorLz0/Xl9ge3x9fi1dK0BbYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8oPzpcXC5bYS16QS1aMC05XSg/OlthLXpBLVowLTktXXswLDYxfVthLXpBLVowLTldKT8pKikkL1xuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnRyb2wtcmVnZXggKi9cbmNvbnN0IEFVVE9MSU5LX1JFID0gL14oW2EtekEtWl1bYS16QS1aMC05Ky4tXXsxLDMxfSk6KFtePD5cXHgwMC1cXHgyMF0qKSQvXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGF1dG9saW5rIChzdGF0ZSwgc2lsZW50KSB7XG4gIGxldCBwb3MgPSBzdGF0ZS5wb3NcblxuICBpZiAoc3RhdGUuc3JjLmNoYXJDb2RlQXQocG9zKSAhPT0gMHgzQy8qIDwgKi8pIHsgcmV0dXJuIGZhbHNlIH1cblxuICBjb25zdCBzdGFydCA9IHN0YXRlLnBvc1xuICBjb25zdCBtYXggPSBzdGF0ZS5wb3NNYXhcblxuICBmb3IgKDs7KSB7XG4gICAgaWYgKCsrcG9zID49IG1heCkgcmV0dXJuIGZhbHNlXG5cbiAgICBjb25zdCBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcylcblxuICAgIGlmIChjaCA9PT0gMHgzQyAvKiA8ICovKSByZXR1cm4gZmFsc2VcbiAgICBpZiAoY2ggPT09IDB4M0UgLyogPiAqLykgYnJlYWtcbiAgfVxuXG4gIGNvbnN0IHVybCA9IHN0YXRlLnNyYy5zbGljZShzdGFydCArIDEsIHBvcylcblxuICBpZiAoQVVUT0xJTktfUkUudGVzdCh1cmwpKSB7XG4gICAgY29uc3QgZnVsbFVybCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmsodXJsKVxuICAgIGlmICghc3RhdGUubWQudmFsaWRhdGVMaW5rKGZ1bGxVcmwpKSB7IHJldHVybiBmYWxzZSB9XG5cbiAgICBpZiAoIXNpbGVudCkge1xuICAgICAgY29uc3QgdG9rZW5fbyAgID0gc3RhdGUucHVzaCgnbGlua19vcGVuJywgJ2EnLCAxKVxuICAgICAgdG9rZW5fby5hdHRycyAgID0gW1snaHJlZicsIGZ1bGxVcmxdXVxuICAgICAgdG9rZW5fby5tYXJrdXAgID0gJ2F1dG9saW5rJ1xuICAgICAgdG9rZW5fby5pbmZvICAgID0gJ2F1dG8nXG5cbiAgICAgIGNvbnN0IHRva2VuX3QgICA9IHN0YXRlLnB1c2goJ3RleHQnLCAnJywgMClcbiAgICAgIHRva2VuX3QuY29udGVudCA9IHN0YXRlLm1kLm5vcm1hbGl6ZUxpbmtUZXh0KHVybClcblxuICAgICAgY29uc3QgdG9rZW5fYyAgID0gc3RhdGUucHVzaCgnbGlua19jbG9zZScsICdhJywgLTEpXG4gICAgICB0b2tlbl9jLm1hcmt1cCAgPSAnYXV0b2xpbmsnXG4gICAgICB0b2tlbl9jLmluZm8gICAgPSAnYXV0bydcbiAgICB9XG5cbiAgICBzdGF0ZS5wb3MgKz0gdXJsLmxlbmd0aCArIDJcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKEVNQUlMX1JFLnRlc3QodXJsKSkge1xuICAgIGNvbnN0IGZ1bGxVcmwgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rKCdtYWlsdG86JyArIHVybClcbiAgICBpZiAoIXN0YXRlLm1kLnZhbGlkYXRlTGluayhmdWxsVXJsKSkgeyByZXR1cm4gZmFsc2UgfVxuXG4gICAgaWYgKCFzaWxlbnQpIHtcbiAgICAgIGNvbnN0IHRva2VuX28gICA9IHN0YXRlLnB1c2goJ2xpbmtfb3BlbicsICdhJywgMSlcbiAgICAgIHRva2VuX28uYXR0cnMgICA9IFtbJ2hyZWYnLCBmdWxsVXJsXV1cbiAgICAgIHRva2VuX28ubWFya3VwICA9ICdhdXRvbGluaydcbiAgICAgIHRva2VuX28uaW5mbyAgICA9ICdhdXRvJ1xuXG4gICAgICBjb25zdCB0b2tlbl90ICAgPSBzdGF0ZS5wdXNoKCd0ZXh0JywgJycsIDApXG4gICAgICB0b2tlbl90LmNvbnRlbnQgPSBzdGF0ZS5tZC5ub3JtYWxpemVMaW5rVGV4dCh1cmwpXG5cbiAgICAgIGNvbnN0IHRva2VuX2MgICA9IHN0YXRlLnB1c2goJ2xpbmtfY2xvc2UnLCAnYScsIC0xKVxuICAgICAgdG9rZW5fYy5tYXJrdXAgID0gJ2F1dG9saW5rJ1xuICAgICAgdG9rZW5fYy5pbmZvICAgID0gJ2F1dG8nXG4gICAgfVxuXG4gICAgc3RhdGUucG9zICs9IHVybC5sZW5ndGggKyAyXG4gICAgcmV0dXJuIHRydWVcbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuIiwgIi8vIFByb2Nlc3MgaHRtbCB0YWdzXG5cbmltcG9ydCB7IEhUTUxfVEFHX1JFIH0gZnJvbSAnLi4vY29tbW9uL2h0bWxfcmUubWpzJ1xuXG5mdW5jdGlvbiBpc0xpbmtPcGVuIChzdHIpIHtcbiAgcmV0dXJuIC9ePGFbPlxcc10vaS50ZXN0KHN0cilcbn1cbmZ1bmN0aW9uIGlzTGlua0Nsb3NlIChzdHIpIHtcbiAgcmV0dXJuIC9ePFxcL2FcXHMqPi9pLnRlc3Qoc3RyKVxufVxuXG5mdW5jdGlvbiBpc0xldHRlciAoY2gpIHtcbiAgLyogZXNsaW50IG5vLWJpdHdpc2U6MCAqL1xuICBjb25zdCBsYyA9IGNoIHwgMHgyMCAvLyB0byBsb3dlciBjYXNlXG4gIHJldHVybiAobGMgPj0gMHg2MS8qIGEgKi8pICYmIChsYyA8PSAweDdhLyogeiAqLylcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaHRtbF9pbmxpbmUgKHN0YXRlLCBzaWxlbnQpIHtcbiAgaWYgKCFzdGF0ZS5tZC5vcHRpb25zLmh0bWwpIHsgcmV0dXJuIGZhbHNlIH1cblxuICAvLyBDaGVjayBzdGFydFxuICBjb25zdCBtYXggPSBzdGF0ZS5wb3NNYXhcbiAgY29uc3QgcG9zID0gc3RhdGUucG9zXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDNDLyogPCAqLyB8fFxuICAgICAgcG9zICsgMiA+PSBtYXgpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIC8vIFF1aWNrIGZhaWwgb24gc2Vjb25kIGNoYXJcbiAgY29uc3QgY2ggPSBzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MgKyAxKVxuICBpZiAoY2ggIT09IDB4MjEvKiAhICovICYmXG4gICAgICBjaCAhPT0gMHgzRi8qID8gKi8gJiZcbiAgICAgIGNoICE9PSAweDJGLyogLyAqLyAmJlxuICAgICAgIWlzTGV0dGVyKGNoKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChIVE1MX1RBR19SRSlcbiAgaWYgKCFtYXRjaCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGlmICghc2lsZW50KSB7XG4gICAgY29uc3QgdG9rZW4gPSBzdGF0ZS5wdXNoKCdodG1sX2lubGluZScsICcnLCAwKVxuICAgIHRva2VuLmNvbnRlbnQgPSBtYXRjaFswXVxuXG4gICAgaWYgKGlzTGlua09wZW4odG9rZW4uY29udGVudCkpICBzdGF0ZS5saW5rTGV2ZWwrK1xuICAgIGlmIChpc0xpbmtDbG9zZSh0b2tlbi5jb250ZW50KSkgc3RhdGUubGlua0xldmVsLS1cbiAgfVxuICBzdGF0ZS5wb3MgKz0gbWF0Y2hbMF0ubGVuZ3RoXG4gIHJldHVybiB0cnVlXG59XG4iLCAiLy8gUHJvY2VzcyBodG1sIGVudGl0eSAtICYjMTIzOywgJiN4QUY7LCAmcXVvdDssIC4uLlxuXG5pbXBvcnQgeyBkZWNvZGVIVE1MIH0gZnJvbSAnZW50aXRpZXMnXG5pbXBvcnQgeyBpc1ZhbGlkRW50aXR5Q29kZSwgZnJvbUNvZGVQb2ludCB9IGZyb20gJy4uL2NvbW1vbi91dGlscy5tanMnXG5cbmNvbnN0IERJR0lUQUxfUkUgPSAvXiYjKCg/OnhbYS1mMC05XXsxLDZ9fFswLTldezEsN30pKTsvaVxuY29uc3QgTkFNRURfUkUgICA9IC9eJihbYS16XVthLXowLTldezEsMzF9KTsvaVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBlbnRpdHkgKHN0YXRlLCBzaWxlbnQpIHtcbiAgY29uc3QgcG9zID0gc3RhdGUucG9zXG4gIGNvbnN0IG1heCA9IHN0YXRlLnBvc01heFxuXG4gIGlmIChzdGF0ZS5zcmMuY2hhckNvZGVBdChwb3MpICE9PSAweDI2LyogJiAqLykgcmV0dXJuIGZhbHNlXG5cbiAgaWYgKHBvcyArIDEgPj0gbWF4KSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBjaCA9IHN0YXRlLnNyYy5jaGFyQ29kZUF0KHBvcyArIDEpXG5cbiAgaWYgKGNoID09PSAweDIzIC8qICMgKi8pIHtcbiAgICBjb25zdCBtYXRjaCA9IHN0YXRlLnNyYy5zbGljZShwb3MpLm1hdGNoKERJR0lUQUxfUkUpXG4gICAgaWYgKG1hdGNoKSB7XG4gICAgICBpZiAoIXNpbGVudCkge1xuICAgICAgICBjb25zdCBjb2RlID0gbWF0Y2hbMV1bMF0udG9Mb3dlckNhc2UoKSA9PT0gJ3gnID8gcGFyc2VJbnQobWF0Y2hbMV0uc2xpY2UoMSksIDE2KSA6IHBhcnNlSW50KG1hdGNoWzFdLCAxMClcblxuICAgICAgICBjb25zdCB0b2tlbiAgID0gc3RhdGUucHVzaCgndGV4dF9zcGVjaWFsJywgJycsIDApXG4gICAgICAgIHRva2VuLmNvbnRlbnQgPSBpc1ZhbGlkRW50aXR5Q29kZShjb2RlKSA/IGZyb21Db2RlUG9pbnQoY29kZSkgOiBmcm9tQ29kZVBvaW50KDB4RkZGRClcbiAgICAgICAgdG9rZW4ubWFya3VwICA9IG1hdGNoWzBdXG4gICAgICAgIHRva2VuLmluZm8gICAgPSAnZW50aXR5J1xuICAgICAgfVxuICAgICAgc3RhdGUucG9zICs9IG1hdGNoWzBdLmxlbmd0aFxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2UocG9zKS5tYXRjaChOQU1FRF9SRSlcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGNvbnN0IGRlY29kZWQgPSBkZWNvZGVIVE1MKG1hdGNoWzBdKVxuICAgICAgaWYgKGRlY29kZWQgIT09IG1hdGNoWzBdKSB7XG4gICAgICAgIGlmICghc2lsZW50KSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gICA9IHN0YXRlLnB1c2goJ3RleHRfc3BlY2lhbCcsICcnLCAwKVxuICAgICAgICAgIHRva2VuLmNvbnRlbnQgPSBkZWNvZGVkXG4gICAgICAgICAgdG9rZW4ubWFya3VwICA9IG1hdGNoWzBdXG4gICAgICAgICAgdG9rZW4uaW5mbyAgICA9ICdlbnRpdHknXG4gICAgICAgIH1cbiAgICAgICAgc3RhdGUucG9zICs9IG1hdGNoWzBdLmxlbmd0aFxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZVxufVxuIiwgIi8vIEZvciBlYWNoIG9wZW5pbmcgZW1waGFzaXMtbGlrZSBtYXJrZXIgZmluZCBhIG1hdGNoaW5nIGNsb3Npbmcgb25lXG4vL1xuXG5mdW5jdGlvbiBwcm9jZXNzRGVsaW1pdGVycyAoZGVsaW1pdGVycykge1xuICBjb25zdCBvcGVuZXJzQm90dG9tID0ge31cbiAgY29uc3QgbWF4ID0gZGVsaW1pdGVycy5sZW5ndGhcblxuICBpZiAoIW1heCkgcmV0dXJuXG5cbiAgLy8gaGVhZGVySWR4IGlzIHRoZSBmaXJzdCBkZWxpbWl0ZXIgb2YgdGhlIGN1cnJlbnQgKHdoZXJlIGNsb3NlciBpcykgZGVsaW1pdGVyIHJ1blxuICBsZXQgaGVhZGVySWR4ID0gMFxuICBsZXQgbGFzdFRva2VuSWR4ID0gLTIgLy8gbmVlZHMgYW55IHZhbHVlIGxvd2VyIHRoYW4gLTFcbiAgY29uc3QganVtcHMgPSBbXVxuXG4gIGZvciAobGV0IGNsb3NlcklkeCA9IDA7IGNsb3NlcklkeCA8IG1heDsgY2xvc2VySWR4KyspIHtcbiAgICBjb25zdCBjbG9zZXIgPSBkZWxpbWl0ZXJzW2Nsb3NlcklkeF1cblxuICAgIGp1bXBzLnB1c2goMClcblxuICAgIC8vIG1hcmtlcnMgYmVsb25nIHRvIHNhbWUgZGVsaW1pdGVyIHJ1biBpZjpcbiAgICAvLyAgLSB0aGV5IGhhdmUgYWRqYWNlbnQgdG9rZW5zXG4gICAgLy8gIC0gQU5EIG1hcmtlcnMgYXJlIHRoZSBzYW1lXG4gICAgLy9cbiAgICBpZiAoZGVsaW1pdGVyc1toZWFkZXJJZHhdLm1hcmtlciAhPT0gY2xvc2VyLm1hcmtlciB8fCBsYXN0VG9rZW5JZHggIT09IGNsb3Nlci50b2tlbiAtIDEpIHtcbiAgICAgIGhlYWRlcklkeCA9IGNsb3NlcklkeFxuICAgIH1cblxuICAgIGxhc3RUb2tlbklkeCA9IGNsb3Nlci50b2tlblxuXG4gICAgLy8gTGVuZ3RoIGlzIG9ubHkgdXNlZCBmb3IgZW1waGFzaXMtc3BlY2lmaWMgXCJydWxlIG9mIDNcIixcbiAgICAvLyBpZiBpdCdzIG5vdCBkZWZpbmVkIChpbiBzdHJpa2V0aHJvdWdoIG9yIDNyZCBwYXJ0eSBwbHVnaW5zKSxcbiAgICAvLyB3ZSBjYW4gZGVmYXVsdCBpdCB0byAwIHRvIGRpc2FibGUgdGhvc2UgY2hlY2tzLlxuICAgIC8vXG4gICAgY2xvc2VyLmxlbmd0aCA9IGNsb3Nlci5sZW5ndGggfHwgMFxuXG4gICAgaWYgKCFjbG9zZXIuY2xvc2UpIGNvbnRpbnVlXG5cbiAgICAvLyBQcmV2aW91c2x5IGNhbGN1bGF0ZWQgbG93ZXIgYm91bmRzIChwcmV2aW91cyBmYWlscylcbiAgICAvLyBmb3IgZWFjaCBtYXJrZXIsIGVhY2ggZGVsaW1pdGVyIGxlbmd0aCBtb2R1bG8gMyxcbiAgICAvLyBhbmQgZm9yIHdoZXRoZXIgdGhpcyBjbG9zZXIgY2FuIGJlIGFuIG9wZW5lcjtcbiAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vY29tbW9ubWFyay9jbWFyay9jb21taXQvMzQyNTBlMTJjY2ViZGM2MzcyYjhiNDljNDRmYWI1N2M3MjQ0MzQ2MFxuICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbiAgICBpZiAoIW9wZW5lcnNCb3R0b20uaGFzT3duUHJvcGVydHkoY2xvc2VyLm1hcmtlcikpIHtcbiAgICAgIG9wZW5lcnNCb3R0b21bY2xvc2VyLm1hcmtlcl0gPSBbLTEsIC0xLCAtMSwgLTEsIC0xLCAtMV1cbiAgICB9XG5cbiAgICBjb25zdCBtaW5PcGVuZXJJZHggPSBvcGVuZXJzQm90dG9tW2Nsb3Nlci5tYXJrZXJdWyhjbG9zZXIub3BlbiA/IDMgOiAwKSArIChjbG9zZXIubGVuZ3RoICUgMyldXG5cbiAgICBsZXQgb3BlbmVySWR4ID0gaGVhZGVySWR4IC0ganVtcHNbaGVhZGVySWR4XSAtIDFcblxuICAgIGxldCBuZXdNaW5PcGVuZXJJZHggPSBvcGVuZXJJZHhcblxuICAgIGZvciAoOyBvcGVuZXJJZHggPiBtaW5PcGVuZXJJZHg7IG9wZW5lcklkeCAtPSBqdW1wc1tvcGVuZXJJZHhdICsgMSkge1xuICAgICAgY29uc3Qgb3BlbmVyID0gZGVsaW1pdGVyc1tvcGVuZXJJZHhdXG5cbiAgICAgIGlmIChvcGVuZXIubWFya2VyICE9PSBjbG9zZXIubWFya2VyKSBjb250aW51ZVxuXG4gICAgICBpZiAob3BlbmVyLm9wZW4gJiYgb3BlbmVyLmVuZCA8IDApIHtcbiAgICAgICAgbGV0IGlzT2RkTWF0Y2ggPSBmYWxzZVxuXG4gICAgICAgIC8vIGZyb20gc3BlYzpcbiAgICAgICAgLy9cbiAgICAgICAgLy8gSWYgb25lIG9mIHRoZSBkZWxpbWl0ZXJzIGNhbiBib3RoIG9wZW4gYW5kIGNsb3NlIGVtcGhhc2lzLCB0aGVuIHRoZVxuICAgICAgICAvLyBzdW0gb2YgdGhlIGxlbmd0aHMgb2YgdGhlIGRlbGltaXRlciBydW5zIGNvbnRhaW5pbmcgdGhlIG9wZW5pbmcgYW5kXG4gICAgICAgIC8vIGNsb3NpbmcgZGVsaW1pdGVycyBtdXN0IG5vdCBiZSBhIG11bHRpcGxlIG9mIDMgdW5sZXNzIGJvdGggbGVuZ3Roc1xuICAgICAgICAvLyBhcmUgbXVsdGlwbGVzIG9mIDMuXG4gICAgICAgIC8vXG4gICAgICAgIGlmIChvcGVuZXIuY2xvc2UgfHwgY2xvc2VyLm9wZW4pIHtcbiAgICAgICAgICBpZiAoKG9wZW5lci5sZW5ndGggKyBjbG9zZXIubGVuZ3RoKSAlIDMgPT09IDApIHtcbiAgICAgICAgICAgIGlmIChvcGVuZXIubGVuZ3RoICUgMyAhPT0gMCB8fCBjbG9zZXIubGVuZ3RoICUgMyAhPT0gMCkge1xuICAgICAgICAgICAgICBpc09kZE1hdGNoID0gdHJ1ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaXNPZGRNYXRjaCkge1xuICAgICAgICAgIC8vIElmIHByZXZpb3VzIGRlbGltaXRlciBjYW5ub3QgYmUgYW4gb3BlbmVyLCB3ZSBjYW4gc2FmZWx5IHNraXBcbiAgICAgICAgICAvLyB0aGUgZW50aXJlIHNlcXVlbmNlIGluIGZ1dHVyZSBjaGVja3MuIFRoaXMgaXMgcmVxdWlyZWQgdG8gbWFrZVxuICAgICAgICAgIC8vIHN1cmUgYWxnb3JpdGhtIGhhcyBsaW5lYXIgY29tcGxleGl0eSAoc2VlICpfKl8qXypfKl8uLi4gY2FzZSkuXG4gICAgICAgICAgLy9cbiAgICAgICAgICBjb25zdCBsYXN0SnVtcCA9IG9wZW5lcklkeCA+IDAgJiYgIWRlbGltaXRlcnNbb3BlbmVySWR4IC0gMV0ub3BlblxuICAgICAgICAgICAgPyBqdW1wc1tvcGVuZXJJZHggLSAxXSArIDFcbiAgICAgICAgICAgIDogMFxuXG4gICAgICAgICAganVtcHNbY2xvc2VySWR4XSA9IGNsb3NlcklkeCAtIG9wZW5lcklkeCArIGxhc3RKdW1wXG4gICAgICAgICAganVtcHNbb3BlbmVySWR4XSA9IGxhc3RKdW1wXG5cbiAgICAgICAgICBjbG9zZXIub3BlbiAgPSBmYWxzZVxuICAgICAgICAgIG9wZW5lci5lbmQgICA9IGNsb3NlcklkeFxuICAgICAgICAgIG9wZW5lci5jbG9zZSA9IGZhbHNlXG4gICAgICAgICAgbmV3TWluT3BlbmVySWR4ID0gLTFcbiAgICAgICAgICAvLyB0cmVhdCBuZXh0IHRva2VuIGFzIHN0YXJ0IG9mIHJ1bixcbiAgICAgICAgICAvLyBpdCBvcHRpbWl6ZXMgc2tpcHMgaW4gKio8Li4uPioqYSoqPC4uLj4qKiBwYXRob2xvZ2ljYWwgY2FzZVxuICAgICAgICAgIGxhc3RUb2tlbklkeCA9IC0yXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXdNaW5PcGVuZXJJZHggIT09IC0xKSB7XG4gICAgICAvLyBJZiBtYXRjaCBmb3IgdGhpcyBkZWxpbWl0ZXIgcnVuIGZhaWxlZCwgd2Ugd2FudCB0byBzZXQgbG93ZXIgYm91bmQgZm9yXG4gICAgICAvLyBmdXR1cmUgbG9va3Vwcy4gVGhpcyBpcyByZXF1aXJlZCB0byBtYWtlIHN1cmUgYWxnb3JpdGhtIGhhcyBsaW5lYXJcbiAgICAgIC8vIGNvbXBsZXhpdHkuXG4gICAgICAvL1xuICAgICAgLy8gU2VlIGRldGFpbHMgaGVyZTpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9jb21tb25tYXJrL2NtYXJrL2lzc3Vlcy8xNzgjaXNzdWVjb21tZW50LTI3MDQxNzQ0MlxuICAgICAgLy9cbiAgICAgIG9wZW5lcnNCb3R0b21bY2xvc2VyLm1hcmtlcl1bKGNsb3Nlci5vcGVuID8gMyA6IDApICsgKChjbG9zZXIubGVuZ3RoIHx8IDApICUgMyldID0gbmV3TWluT3BlbmVySWR4XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpbmtfcGFpcnMgKHN0YXRlKSB7XG4gIGNvbnN0IHRva2Vuc19tZXRhID0gc3RhdGUudG9rZW5zX21ldGFcbiAgY29uc3QgbWF4ID0gc3RhdGUudG9rZW5zX21ldGEubGVuZ3RoXG5cbiAgcHJvY2Vzc0RlbGltaXRlcnMoc3RhdGUuZGVsaW1pdGVycylcblxuICBmb3IgKGxldCBjdXJyID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgaWYgKHRva2Vuc19tZXRhW2N1cnJdICYmIHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpIHtcbiAgICAgIHByb2Nlc3NEZWxpbWl0ZXJzKHRva2Vuc19tZXRhW2N1cnJdLmRlbGltaXRlcnMpXG4gICAgfVxuICB9XG59XG4iLCAiLy8gQ2xlYW4gdXAgdG9rZW5zIGFmdGVyIGVtcGhhc2lzIGFuZCBzdHJpa2V0aHJvdWdoIHBvc3Rwcm9jZXNzaW5nOlxuLy8gbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2RlcyBpbnRvIG9uZSBhbmQgcmUtY2FsY3VsYXRlIGFsbCB0b2tlbiBsZXZlbHNcbi8vXG4vLyBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGluaXRpYWxseSBlbXBoYXNpcyBkZWxpbWl0ZXIgbWFya2VycyAoKiwgXywgfilcbi8vIGFyZSB0cmVhdGVkIGFzIHRoZWlyIG93biBzZXBhcmF0ZSB0ZXh0IHRva2Vucy4gVGhlbiBlbXBoYXNpcyBydWxlIGVpdGhlclxuLy8gbGVhdmVzIHRoZW0gYXMgdGV4dCAobmVlZGVkIHRvIG1lcmdlIHdpdGggYWRqYWNlbnQgdGV4dCkgb3IgdHVybnMgdGhlbVxuLy8gaW50byBvcGVuaW5nL2Nsb3NpbmcgdGFncyAod2hpY2ggbWVzc2VzIHVwIGxldmVscyBpbnNpZGUpLlxuLy9cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZnJhZ21lbnRzX2pvaW4gKHN0YXRlKSB7XG4gIGxldCBjdXJyLCBsYXN0XG4gIGxldCBsZXZlbCA9IDBcbiAgY29uc3QgdG9rZW5zID0gc3RhdGUudG9rZW5zXG4gIGNvbnN0IG1heCA9IHN0YXRlLnRva2Vucy5sZW5ndGhcblxuICBmb3IgKGN1cnIgPSBsYXN0ID0gMDsgY3VyciA8IG1heDsgY3VycisrKSB7XG4gICAgLy8gcmUtY2FsY3VsYXRlIGxldmVscyBhZnRlciBlbXBoYXNpcy9zdHJpa2V0aHJvdWdoIHR1cm5zIHNvbWUgdGV4dCBub2Rlc1xuICAgIC8vIGludG8gb3BlbmluZy9jbG9zaW5nIHRhZ3NcbiAgICBpZiAodG9rZW5zW2N1cnJdLm5lc3RpbmcgPCAwKSBsZXZlbC0tIC8vIGNsb3NpbmcgdGFnXG4gICAgdG9rZW5zW2N1cnJdLmxldmVsID0gbGV2ZWxcbiAgICBpZiAodG9rZW5zW2N1cnJdLm5lc3RpbmcgPiAwKSBsZXZlbCsrIC8vIG9wZW5pbmcgdGFnXG5cbiAgICBpZiAodG9rZW5zW2N1cnJdLnR5cGUgPT09ICd0ZXh0JyAmJlxuICAgICAgICBjdXJyICsgMSA8IG1heCAmJlxuICAgICAgICB0b2tlbnNbY3VyciArIDFdLnR5cGUgPT09ICd0ZXh0Jykge1xuICAgICAgLy8gY29sbGFwc2UgdHdvIGFkamFjZW50IHRleHQgbm9kZXNcbiAgICAgIHRva2Vuc1tjdXJyICsgMV0uY29udGVudCA9IHRva2Vuc1tjdXJyXS5jb250ZW50ICsgdG9rZW5zW2N1cnIgKyAxXS5jb250ZW50XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjdXJyICE9PSBsYXN0KSB7IHRva2Vuc1tsYXN0XSA9IHRva2Vuc1tjdXJyXSB9XG5cbiAgICAgIGxhc3QrK1xuICAgIH1cbiAgfVxuXG4gIGlmIChjdXJyICE9PSBsYXN0KSB7XG4gICAgdG9rZW5zLmxlbmd0aCA9IGxhc3RcbiAgfVxufVxuIiwgIi8qKiBpbnRlcm5hbFxuICogY2xhc3MgUGFyc2VySW5saW5lXG4gKlxuICogVG9rZW5pemVzIHBhcmFncmFwaCBjb250ZW50LlxuICoqL1xuXG5pbXBvcnQgUnVsZXIgZnJvbSAnLi9ydWxlci5tanMnXG5pbXBvcnQgU3RhdGVJbmxpbmUgZnJvbSAnLi9ydWxlc19pbmxpbmUvc3RhdGVfaW5saW5lLm1qcydcblxuaW1wb3J0IHJfdGV4dCBmcm9tICcuL3J1bGVzX2lubGluZS90ZXh0Lm1qcydcbmltcG9ydCByX2xpbmtpZnkgZnJvbSAnLi9ydWxlc19pbmxpbmUvbGlua2lmeS5tanMnXG5pbXBvcnQgcl9uZXdsaW5lIGZyb20gJy4vcnVsZXNfaW5saW5lL25ld2xpbmUubWpzJ1xuaW1wb3J0IHJfZXNjYXBlIGZyb20gJy4vcnVsZXNfaW5saW5lL2VzY2FwZS5tanMnXG5pbXBvcnQgcl9iYWNrdGlja3MgZnJvbSAnLi9ydWxlc19pbmxpbmUvYmFja3RpY2tzLm1qcydcbmltcG9ydCByX3N0cmlrZXRocm91Z2ggZnJvbSAnLi9ydWxlc19pbmxpbmUvc3RyaWtldGhyb3VnaC5tanMnXG5pbXBvcnQgcl9lbXBoYXNpcyBmcm9tICcuL3J1bGVzX2lubGluZS9lbXBoYXNpcy5tanMnXG5pbXBvcnQgcl9saW5rIGZyb20gJy4vcnVsZXNfaW5saW5lL2xpbmsubWpzJ1xuaW1wb3J0IHJfaW1hZ2UgZnJvbSAnLi9ydWxlc19pbmxpbmUvaW1hZ2UubWpzJ1xuaW1wb3J0IHJfYXV0b2xpbmsgZnJvbSAnLi9ydWxlc19pbmxpbmUvYXV0b2xpbmsubWpzJ1xuaW1wb3J0IHJfaHRtbF9pbmxpbmUgZnJvbSAnLi9ydWxlc19pbmxpbmUvaHRtbF9pbmxpbmUubWpzJ1xuaW1wb3J0IHJfZW50aXR5IGZyb20gJy4vcnVsZXNfaW5saW5lL2VudGl0eS5tanMnXG5cbmltcG9ydCByX2JhbGFuY2VfcGFpcnMgZnJvbSAnLi9ydWxlc19pbmxpbmUvYmFsYW5jZV9wYWlycy5tanMnXG5pbXBvcnQgcl9mcmFnbWVudHNfam9pbiBmcm9tICcuL3J1bGVzX2lubGluZS9mcmFnbWVudHNfam9pbi5tanMnXG5cbi8vIFBhcnNlciBydWxlc1xuXG5jb25zdCBfcnVsZXMgPSBbXG4gIFsndGV4dCcsICAgICAgICAgICAgcl90ZXh0XSxcbiAgWydsaW5raWZ5JywgICAgICAgICByX2xpbmtpZnldLFxuICBbJ25ld2xpbmUnLCAgICAgICAgIHJfbmV3bGluZV0sXG4gIFsnZXNjYXBlJywgICAgICAgICAgcl9lc2NhcGVdLFxuICBbJ2JhY2t0aWNrcycsICAgICAgIHJfYmFja3RpY2tzXSxcbiAgWydzdHJpa2V0aHJvdWdoJywgICByX3N0cmlrZXRocm91Z2gudG9rZW5pemVdLFxuICBbJ2VtcGhhc2lzJywgICAgICAgIHJfZW1waGFzaXMudG9rZW5pemVdLFxuICBbJ2xpbmsnLCAgICAgICAgICAgIHJfbGlua10sXG4gIFsnaW1hZ2UnLCAgICAgICAgICAgcl9pbWFnZV0sXG4gIFsnYXV0b2xpbmsnLCAgICAgICAgcl9hdXRvbGlua10sXG4gIFsnaHRtbF9pbmxpbmUnLCAgICAgcl9odG1sX2lubGluZV0sXG4gIFsnZW50aXR5JywgICAgICAgICAgcl9lbnRpdHldXG5dXG5cbi8vIGBydWxlMmAgcnVsZXNldCB3YXMgY3JlYXRlZCBzcGVjaWZpY2FsbHkgZm9yIGVtcGhhc2lzL3N0cmlrZXRocm91Z2hcbi8vIHBvc3QtcHJvY2Vzc2luZyBhbmQgbWF5IGJlIGNoYW5nZWQgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBEb24ndCB1c2UgdGhpcyBmb3IgYW55dGhpbmcgZXhjZXB0IHBhaXJzIChwbHVnaW5zIHdvcmtpbmcgd2l0aCBgYmFsYW5jZV9wYWlyc2ApLlxuLy9cbmNvbnN0IF9ydWxlczIgPSBbXG4gIFsnYmFsYW5jZV9wYWlycycsICAgcl9iYWxhbmNlX3BhaXJzXSxcbiAgWydzdHJpa2V0aHJvdWdoJywgICByX3N0cmlrZXRocm91Z2gucG9zdFByb2Nlc3NdLFxuICBbJ2VtcGhhc2lzJywgICAgICAgIHJfZW1waGFzaXMucG9zdFByb2Nlc3NdLFxuICAvLyBydWxlcyBmb3IgcGFpcnMgc2VwYXJhdGUgJyoqJyBpbnRvIGl0cyBvd24gdGV4dCB0b2tlbnMsIHdoaWNoIG1heSBiZSBsZWZ0IHVudXNlZCxcbiAgLy8gcnVsZSBiZWxvdyBtZXJnZXMgdW51c2VkIHNlZ21lbnRzIGJhY2sgd2l0aCB0aGUgcmVzdCBvZiB0aGUgdGV4dFxuICBbJ2ZyYWdtZW50c19qb2luJywgIHJfZnJhZ21lbnRzX2pvaW5dXG5dXG5cbi8qKlxuICogbmV3IFBhcnNlcklubGluZSgpXG4gKiovXG5mdW5jdGlvbiBQYXJzZXJJbmxpbmUgKCkge1xuICAvKipcbiAgICogUGFyc2VySW5saW5lI3J1bGVyIC0+IFJ1bGVyXG4gICAqXG4gICAqIFtbUnVsZXJdXSBpbnN0YW5jZS4gS2VlcCBjb25maWd1cmF0aW9uIG9mIGlubGluZSBydWxlcy5cbiAgICoqL1xuICB0aGlzLnJ1bGVyID0gbmV3IFJ1bGVyKClcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IF9ydWxlcy5sZW5ndGg7IGkrKykge1xuICAgIHRoaXMucnVsZXIucHVzaChfcnVsZXNbaV1bMF0sIF9ydWxlc1tpXVsxXSlcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZXJJbmxpbmUjcnVsZXIyIC0+IFJ1bGVyXG4gICAqXG4gICAqIFtbUnVsZXJdXSBpbnN0YW5jZS4gU2Vjb25kIHJ1bGVyIHVzZWQgZm9yIHBvc3QtcHJvY2Vzc2luZ1xuICAgKiAoZS5nLiBpbiBlbXBoYXNpcy1saWtlIHJ1bGVzKS5cbiAgICoqL1xuICB0aGlzLnJ1bGVyMiA9IG5ldyBSdWxlcigpXG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBfcnVsZXMyLmxlbmd0aDsgaSsrKSB7XG4gICAgdGhpcy5ydWxlcjIucHVzaChfcnVsZXMyW2ldWzBdLCBfcnVsZXMyW2ldWzFdKVxuICB9XG59XG5cbi8vIFNraXAgc2luZ2xlIHRva2VuIGJ5IHJ1bm5pbmcgYWxsIHJ1bGVzIGluIHZhbGlkYXRpb24gbW9kZTtcbi8vIHJldHVybnMgYHRydWVgIGlmIGFueSBydWxlIHJlcG9ydGVkIHN1Y2Nlc3Ncbi8vXG5QYXJzZXJJbmxpbmUucHJvdG90eXBlLnNraXBUb2tlbiA9IGZ1bmN0aW9uIChzdGF0ZSkge1xuICBjb25zdCBwb3MgPSBzdGF0ZS5wb3NcbiAgY29uc3QgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKCcnKVxuICBjb25zdCBsZW4gPSBydWxlcy5sZW5ndGhcbiAgY29uc3QgbWF4TmVzdGluZyA9IHN0YXRlLm1kLm9wdGlvbnMubWF4TmVzdGluZ1xuICBjb25zdCBjYWNoZSA9IHN0YXRlLmNhY2hlXG5cbiAgaWYgKHR5cGVvZiBjYWNoZVtwb3NdICE9PSAndW5kZWZpbmVkJykge1xuICAgIHN0YXRlLnBvcyA9IGNhY2hlW3Bvc11cbiAgICByZXR1cm5cbiAgfVxuXG4gIGxldCBvayA9IGZhbHNlXG5cbiAgaWYgKHN0YXRlLmxldmVsIDwgbWF4TmVzdGluZykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIC8vIEluY3JlbWVudCBzdGF0ZS5sZXZlbCBhbmQgZGVjcmVtZW50IGl0IGxhdGVyIHRvIGxpbWl0IHJlY3Vyc2lvbi5cbiAgICAgIC8vIEl0J3MgaGFybWxlc3MgdG8gZG8gaGVyZSwgYmVjYXVzZSBubyB0b2tlbnMgYXJlIGNyZWF0ZWQuIEJ1dCBpZGVhbGx5LFxuICAgICAgLy8gd2UnZCBuZWVkIGEgc2VwYXJhdGUgcHJpdmF0ZSBzdGF0ZSB2YXJpYWJsZSBmb3IgdGhpcyBwdXJwb3NlLlxuICAgICAgLy9cbiAgICAgIHN0YXRlLmxldmVsKytcbiAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIHRydWUpXG4gICAgICBzdGF0ZS5sZXZlbC0tXG5cbiAgICAgIGlmIChvaykge1xuICAgICAgICBpZiAocG9zID49IHN0YXRlLnBvcykgeyB0aHJvdyBuZXcgRXJyb3IoXCJpbmxpbmUgcnVsZSBkaWRuJ3QgaW5jcmVtZW50IHN0YXRlLnBvc1wiKSB9XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIFRvbyBtdWNoIG5lc3RpbmcsIGp1c3Qgc2tpcCB1bnRpbCB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGguXG4gICAgLy9cbiAgICAvLyBOT1RFOiB0aGlzIHdpbGwgY2F1c2UgbGlua3MgdG8gYmVoYXZlIGluY29ycmVjdGx5IGluIHRoZSBmb2xsb3dpbmcgY2FzZSxcbiAgICAvLyAgICAgICB3aGVuIGFuIGFtb3VudCBvZiBgW2AgaXMgZXhhY3RseSBlcXVhbCB0byBgbWF4TmVzdGluZyArIDFgOlxuICAgIC8vXG4gICAgLy8gICAgICAgW1tbW1tbW1tbW1tbW1tbW1tbW1tbZm9vXSgpXG4gICAgLy9cbiAgICAvLyBUT0RPOiByZW1vdmUgdGhpcyB3b3JrYXJvdW5kIHdoZW4gQ00gc3RhbmRhcmQgd2lsbCBhbGxvdyBuZXN0ZWQgbGlua3NcbiAgICAvLyAgICAgICAod2UgY2FuIHJlcGxhY2UgaXQgYnkgcHJldmVudGluZyBsaW5rcyBmcm9tIGJlaW5nIHBhcnNlZCBpblxuICAgIC8vICAgICAgIHZhbGlkYXRpb24gbW9kZSlcbiAgICAvL1xuICAgIHN0YXRlLnBvcyA9IHN0YXRlLnBvc01heFxuICB9XG5cbiAgaWYgKCFvaykgeyBzdGF0ZS5wb3MrKyB9XG4gIGNhY2hlW3Bvc10gPSBzdGF0ZS5wb3Ncbn1cblxuLy8gR2VuZXJhdGUgdG9rZW5zIGZvciBpbnB1dCByYW5nZVxuLy9cblBhcnNlcklubGluZS5wcm90b3R5cGUudG9rZW5pemUgPSBmdW5jdGlvbiAoc3RhdGUpIHtcbiAgY29uc3QgcnVsZXMgPSB0aGlzLnJ1bGVyLmdldFJ1bGVzKCcnKVxuICBjb25zdCBsZW4gPSBydWxlcy5sZW5ndGhcbiAgY29uc3QgZW5kID0gc3RhdGUucG9zTWF4XG4gIGNvbnN0IG1heE5lc3RpbmcgPSBzdGF0ZS5tZC5vcHRpb25zLm1heE5lc3RpbmdcblxuICB3aGlsZSAoc3RhdGUucG9zIDwgZW5kKSB7XG4gICAgLy8gVHJ5IGFsbCBwb3NzaWJsZSBydWxlcy5cbiAgICAvLyBPbiBzdWNjZXNzLCBydWxlIHNob3VsZDpcbiAgICAvL1xuICAgIC8vIC0gdXBkYXRlIGBzdGF0ZS5wb3NgXG4gICAgLy8gLSB1cGRhdGUgYHN0YXRlLnRva2Vuc2BcbiAgICAvLyAtIHJldHVybiB0cnVlXG4gICAgY29uc3QgcHJldlBvcyA9IHN0YXRlLnBvc1xuICAgIGxldCBvayA9IGZhbHNlXG5cbiAgICBpZiAoc3RhdGUubGV2ZWwgPCBtYXhOZXN0aW5nKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIG9rID0gcnVsZXNbaV0oc3RhdGUsIGZhbHNlKVxuICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICBpZiAocHJldlBvcyA+PSBzdGF0ZS5wb3MpIHsgdGhyb3cgbmV3IEVycm9yKFwiaW5saW5lIHJ1bGUgZGlkbid0IGluY3JlbWVudCBzdGF0ZS5wb3NcIikgfVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob2spIHtcbiAgICAgIGlmIChzdGF0ZS5wb3MgPj0gZW5kKSB7IGJyZWFrIH1cbiAgICAgIGNvbnRpbnVlXG4gICAgfVxuXG4gICAgc3RhdGUucGVuZGluZyArPSBzdGF0ZS5zcmNbc3RhdGUucG9zKytdXG4gIH1cblxuICBpZiAoc3RhdGUucGVuZGluZykge1xuICAgIHN0YXRlLnB1c2hQZW5kaW5nKClcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcklubGluZS5wYXJzZShzdHIsIG1kLCBlbnYsIG91dFRva2VucylcbiAqXG4gKiBQcm9jZXNzIGlucHV0IHN0cmluZyBhbmQgcHVzaCBpbmxpbmUgdG9rZW5zIGludG8gYG91dFRva2Vuc2BcbiAqKi9cblBhcnNlcklubGluZS5wcm90b3R5cGUucGFyc2UgPSBmdW5jdGlvbiAoc3RyLCBtZCwgZW52LCBvdXRUb2tlbnMpIHtcbiAgY29uc3Qgc3RhdGUgPSBuZXcgdGhpcy5TdGF0ZShzdHIsIG1kLCBlbnYsIG91dFRva2VucylcblxuICB0aGlzLnRva2VuaXplKHN0YXRlKVxuXG4gIGNvbnN0IHJ1bGVzID0gdGhpcy5ydWxlcjIuZ2V0UnVsZXMoJycpXG4gIGNvbnN0IGxlbiA9IHJ1bGVzLmxlbmd0aFxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBydWxlc1tpXShzdGF0ZSlcbiAgfVxufVxuXG5QYXJzZXJJbmxpbmUucHJvdG90eXBlLlN0YXRlID0gU3RhdGVJbmxpbmVcblxuZXhwb3J0IGRlZmF1bHQgUGFyc2VySW5saW5lXG4iLCAiaW1wb3J0IHsgQW55LCBDYywgWiwgUCB9IGZyb20gJ3VjLm1pY3JvJ1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAob3B0cykge1xuICBjb25zdCByZSA9IHt9XG4gIG9wdHMgPSBvcHRzIHx8IHt9XG5cbiAgcmUuc3JjX0FueSA9IEFueS5zb3VyY2VcbiAgcmUuc3JjX0NjID0gQ2Muc291cmNlXG4gIHJlLnNyY19aID0gWi5zb3VyY2VcbiAgcmUuc3JjX1AgPSBQLnNvdXJjZVxuXG4gIC8vIFxccHtcXFpcXFBcXENjXFxDRn0gKHdoaXRlIHNwYWNlcyArIGNvbnRyb2wgKyBmb3JtYXQgKyBwdW5jdHVhdGlvbilcbiAgcmUuc3JjX1pQQ2MgPSBbcmUuc3JjX1osIHJlLnNyY19QLCByZS5zcmNfQ2NdLmpvaW4oJ3wnKVxuXG4gIC8vIFxccHtcXFpcXENjfSAod2hpdGUgc3BhY2VzICsgY29udHJvbClcbiAgcmUuc3JjX1pDYyA9IFtyZS5zcmNfWiwgcmUuc3JjX0NjXS5qb2luKCd8JylcblxuICAvLyBFeHBlcmltZW50YWwuIExpc3Qgb2YgY2hhcnMsIGNvbXBsZXRlbHkgcHJvaGliaXRlZCBpbiBsaW5rc1xuICAvLyBiZWNhdXNlIGNhbiBzZXBhcmF0ZSBpdCBmcm9tIG90aGVyIHBhcnQgb2YgdGV4dFxuICBjb25zdCB0ZXh0X3NlcGFyYXRvcnMgPSAnWz48XFx1ZmY1Y10nXG5cbiAgLy8gQWxsIHBvc3NpYmxlIHdvcmQgY2hhcmFjdGVycyAoZXZlcnl0aGluZyB3aXRob3V0IHB1bmN0dWF0aW9uLCBzcGFjZXMgJiBjb250cm9scylcbiAgLy8gRGVmaW5lZCB2aWEgcHVuY3R1YXRpb24gJiBzcGFjZXMgdG8gc2F2ZSBzcGFjZVxuICAvLyBTaG91bGQgYmUgc29tZXRoaW5nIGxpa2UgXFxwe1xcTFxcTlxcU1xcTX0gKFxcdyBidXQgd2l0aG91dCBgX2ApXG4gIHJlLnNyY19wc2V1ZG9fbGV0dGVyID0gJyg/Oig/IScgKyB0ZXh0X3NlcGFyYXRvcnMgKyAnfCcgKyByZS5zcmNfWlBDYyArICcpJyArIHJlLnNyY19BbnkgKyAnKSdcbiAgLy8gVGhlIHNhbWUgYXMgYWJvdGhlIGJ1dCB3aXRob3V0IFswLTldXG4gIC8vIHZhciBzcmNfcHNldWRvX2xldHRlcl9ub25fZCA9ICcoPzooPyFbMC05XXwnICsgc3JjX1pQQ2MgKyAnKScgKyBzcmNfQW55ICsgJyknO1xuXG4gIHJlLnNyY19pcDQgPVxuXG4gICAgJyg/OigyNVswLTVdfDJbMC00XVswLTldfFswMV0/WzAtOV1bMC05XT8pXFxcXC4pezN9KDI1WzAtNV18MlswLTRdWzAtOV18WzAxXT9bMC05XVswLTldPyknXG5cbiAgLy8gUHJvaGliaXQgYW55IG9mIFwiQC9bXSgpXCIgaW4gdXNlci9wYXNzIHRvIGF2b2lkIHdyb25nIGRvbWFpbiBmZXRjaC5cbiAgcmUuc3JjX2F1dGggPSAnKD86KD86KD8hJyArIHJlLnNyY19aQ2MgKyAnfFtAL1xcXFxbXFxcXF0oKV0pLikrQCk/J1xuXG4gIHJlLnNyY19wb3J0ID1cblxuICAgICcoPzo6KD86Nig/OlswLTRdXFxcXGR7M318NSg/OlswLTRdXFxcXGR7Mn18NSg/OlswLTJdXFxcXGR8M1swLTVdKSkpfFsxLTVdP1xcXFxkezEsNH0pKT8nXG5cbiAgcmUuc3JjX2hvc3RfdGVybWluYXRvciA9XG5cbiAgICAnKD89JHwnICsgdGV4dF9zZXBhcmF0b3JzICsgJ3wnICsgcmUuc3JjX1pQQ2MgKyAnKScgK1xuICAgICcoPyEnICsgKG9wdHNbJy0tLSddID8gJy0oPyEtLSl8JyA6ICctfCcpICsgJ198OlxcXFxkfFxcXFwuLXxcXFxcLig/ISR8JyArIHJlLnNyY19aUENjICsgJykpJ1xuXG4gIHJlLnNyY19wYXRoID1cblxuICAgICcoPzonICtcbiAgICAgICdbLz8jXScgK1xuICAgICAgICAnKD86JyArXG4gICAgICAgICAgJyg/IScgKyByZS5zcmNfWkNjICsgJ3wnICsgdGV4dF9zZXBhcmF0b3JzICsgJ3xbKClbXFxcXF17fS4sXCJcXCc/IVxcXFwtO10pLnwnICtcbiAgICAgICAgICAnXFxcXFsoPzooPyEnICsgcmUuc3JjX1pDYyArICd8XFxcXF0pLikqXFxcXF18JyArXG4gICAgICAgICAgJ1xcXFwoKD86KD8hJyArIHJlLnNyY19aQ2MgKyAnfFspXSkuKSpcXFxcKXwnICtcbiAgICAgICAgICAnXFxcXHsoPzooPyEnICsgcmUuc3JjX1pDYyArICd8W31dKS4pKlxcXFx9fCcgK1xuICAgICAgICAgICdcXFxcXCIoPzooPyEnICsgcmUuc3JjX1pDYyArICd8W1wiXSkuKStcXFxcXCJ8JyArXG4gICAgICAgICAgXCJcXFxcJyg/Oig/IVwiICsgcmUuc3JjX1pDYyArIFwifFsnXSkuKStcXFxcJ3xcIiArXG5cbiAgICAgICAgICAvLyBhbGxvdyBgSSdtX2tpbmdgIGlmIG5vIHBhaXIgZm91bmRcbiAgICAgICAgICBcIlxcXFwnKD89XCIgKyByZS5zcmNfcHNldWRvX2xldHRlciArICd8Wy1dKXwnICtcblxuICAgICAgICAgIC8vIGdvb2dsZSBoYXMgbWFueSBkb3RzIGluIFwiZ29vZ2xlIHNlYXJjaFwiIGxpbmtzICgjNjYsICM4MSkuXG4gICAgICAgICAgLy8gZ2l0aHViIGhhcyAuLi4gaW4gY29tbWl0IHJhbmdlIGxpbmtzLFxuICAgICAgICAgIC8vIFJlc3RyaWN0IHRvXG4gICAgICAgICAgLy8gLSBlbmdsaXNoXG4gICAgICAgICAgLy8gLSBwZXJjZW50LWVuY29kZWRcbiAgICAgICAgICAvLyAtIHBhcnRzIG9mIGZpbGUgcGF0aFxuICAgICAgICAgIC8vIC0gcGFyYW1zIHNlcGFyYXRvclxuICAgICAgICAgIC8vIHVudGlsIG1vcmUgZXhhbXBsZXMgZm91bmQuXG4gICAgICAgICAgJ1xcXFwuezIsfVthLXpBLVowLTklLyZdfCcgK1xuXG4gICAgICAgICAgJ1xcXFwuKD8hJyArIHJlLnNyY19aQ2MgKyAnfFsuXXwkKXwnICtcbiAgICAgICAgICAob3B0c1snLS0tJ11cbiAgICAgICAgICAgID8gJ1xcXFwtKD8hLS0oPzpbXi1dfCQpKSg/Oi0qKXwnIC8vIGAtLS1gID0+IGxvbmcgZGFzaCwgdGVybWluYXRlXG4gICAgICAgICAgICA6ICdcXFxcLSt8J1xuICAgICAgICAgICkgK1xuICAgICAgICAgIC8vIGFsbG93IGAsLCxgIGluIHBhdGhzXG4gICAgICAgICAgJywoPyEnICsgcmUuc3JjX1pDYyArICd8JCl8JyArXG5cbiAgICAgICAgICAvLyBhbGxvdyBgO2AgaWYgbm90IGZvbGxvd2VkIGJ5IHNwYWNlLWxpa2UgY2hhclxuICAgICAgICAgICc7KD8hJyArIHJlLnNyY19aQ2MgKyAnfCQpfCcgK1xuXG4gICAgICAgICAgLy8gYWxsb3cgYCEhIWAgaW4gcGF0aHMsIGJ1dCBub3QgYXQgdGhlIGVuZFxuICAgICAgICAgICdcXFxcISsoPyEnICsgcmUuc3JjX1pDYyArICd8WyFdfCQpfCcgK1xuXG4gICAgICAgICAgJ1xcXFw/KD8hJyArIHJlLnNyY19aQ2MgKyAnfFs/XXwkKScgK1xuICAgICAgICAnKSsnICtcbiAgICAgICd8XFxcXC8nICtcbiAgICAnKT8nXG5cbiAgLy8gQWxsb3cgYW55dGhpbmcgaW4gbWFya2Rvd24gc3BlYywgZm9yYmlkIHF1b3RlIChcIikgYXQgdGhlIGZpcnN0IHBvc2l0aW9uXG4gIC8vIGJlY2F1c2UgZW1haWxzIGVuY2xvc2VkIGluIHF1b3RlcyBhcmUgZmFyIG1vcmUgY29tbW9uXG4gIHJlLnNyY19lbWFpbF9uYW1lID1cblxuICAgICdbXFxcXC07OiY9XFxcXCtcXFxcJCxcXFxcLmEtekEtWjAtOV9dW1xcXFwtOzomPVxcXFwrXFxcXCQsXFxcXFwiXFxcXC5hLXpBLVowLTlfXSonXG5cbiAgcmUuc3JjX3huID1cblxuICAgICd4bi0tW2EtejAtOVxcXFwtXXsxLDU5fSdcblxuICAvLyBNb3JlIHRvIHJlYWQgYWJvdXQgZG9tYWluIG5hbWVzXG4gIC8vIGh0dHA6Ly9zZXJ2ZXJmYXVsdC5jb20vcXVlc3Rpb25zLzYzODI2MC9cblxuICByZS5zcmNfZG9tYWluX3Jvb3QgPVxuXG4gICAgLy8gQWxsb3cgbGV0dGVycyAmIGRpZ2l0cyAoaHR0cDovL3Rlc3QxKVxuICAgICcoPzonICtcbiAgICAgIHJlLnNyY194biArXG4gICAgICAnfCcgK1xuICAgICAgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnezEsNjN9JyArXG4gICAgJyknXG5cbiAgcmUuc3JjX2RvbWFpbiA9XG5cbiAgICAnKD86JyArXG4gICAgICByZS5zcmNfeG4gK1xuICAgICAgJ3wnICtcbiAgICAgICcoPzonICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKScgK1xuICAgICAgJ3wnICtcbiAgICAgICcoPzonICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKD86LXwnICsgcmUuc3JjX3BzZXVkb19sZXR0ZXIgKyAnKXswLDYxfScgKyByZS5zcmNfcHNldWRvX2xldHRlciArICcpJyArXG4gICAgJyknXG5cbiAgcmUuc3JjX2hvc3QgPVxuXG4gICAgJyg/OicgK1xuICAgIC8vIERvbid0IG5lZWQgSVAgY2hlY2ssIGJlY2F1c2UgZGlnaXRzIGFyZSBhbHJlYWR5IGFsbG93ZWQgaW4gbm9ybWFsIGRvbWFpbiBuYW1lc1xuICAgIC8vICAgc3JjX2lwNCArXG4gICAgLy8gJ3wnICtcbiAgICAgICcoPzooPzooPzonICsgcmUuc3JjX2RvbWFpbiArICcpXFxcXC4pKicgKyByZS5zcmNfZG9tYWluLyogX3Jvb3QgKi8gKyAnKScgK1xuICAgICcpJ1xuXG4gIHJlLnRwbF9ob3N0X2Z1enp5ID1cblxuICAgICcoPzonICtcbiAgICAgIHJlLnNyY19pcDQgK1xuICAgICd8JyArXG4gICAgICAnKD86KD86KD86JyArIHJlLnNyY19kb21haW4gKyAnKVxcXFwuKSsoPzolVExEUyUpKScgK1xuICAgICcpJ1xuXG4gIHJlLnRwbF9ob3N0X25vX2lwX2Z1enp5ID1cblxuICAgICcoPzooPzooPzonICsgcmUuc3JjX2RvbWFpbiArICcpXFxcXC4pKyg/OiVUTERTJSkpJ1xuXG4gIHJlLnNyY19ob3N0X3N0cmljdCA9XG5cbiAgICByZS5zcmNfaG9zdCArIHJlLnNyY19ob3N0X3Rlcm1pbmF0b3JcblxuICByZS50cGxfaG9zdF9mdXp6eV9zdHJpY3QgPVxuXG4gICAgcmUudHBsX2hvc3RfZnV6enkgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yXG5cbiAgcmUuc3JjX2hvc3RfcG9ydF9zdHJpY3QgPVxuXG4gICAgcmUuc3JjX2hvc3QgKyByZS5zcmNfcG9ydCArIHJlLnNyY19ob3N0X3Rlcm1pbmF0b3JcblxuICByZS50cGxfaG9zdF9wb3J0X2Z1enp5X3N0cmljdCA9XG5cbiAgICByZS50cGxfaG9zdF9mdXp6eSArIHJlLnNyY19wb3J0ICsgcmUuc3JjX2hvc3RfdGVybWluYXRvclxuXG4gIHJlLnRwbF9ob3N0X3BvcnRfbm9faXBfZnV6enlfc3RyaWN0ID1cblxuICAgIHJlLnRwbF9ob3N0X25vX2lwX2Z1enp5ICsgcmUuc3JjX3BvcnQgKyByZS5zcmNfaG9zdF90ZXJtaW5hdG9yXG5cbiAgLy9cbiAgLy8gTWFpbiBydWxlc1xuICAvL1xuXG4gIC8vIFJ1ZGUgdGVzdCBmdXp6eSBsaW5rcyBieSBob3N0LCBmb3IgcXVpY2sgZGVueVxuICByZS50cGxfaG9zdF9mdXp6eV90ZXN0ID1cblxuICAgICdsb2NhbGhvc3R8d3d3XFxcXC58XFxcXC5cXFxcZHsxLDN9XFxcXC58KD86XFxcXC4oPzolVExEUyUpKD86JyArIHJlLnNyY19aUENjICsgJ3w+fCQpKSdcblxuICByZS50cGxfZW1haWxfZnV6enkgPVxuXG4gICAgICAnKF58JyArIHRleHRfc2VwYXJhdG9ycyArICd8XCJ8XFxcXCh8JyArIHJlLnNyY19aQ2MgKyAnKScgK1xuICAgICAgJygnICsgcmUuc3JjX2VtYWlsX25hbWUgKyAnQCcgKyByZS50cGxfaG9zdF9mdXp6eV9zdHJpY3QgKyAnKSdcblxuICByZS50cGxfbGlua19mdXp6eSA9XG4gICAgICAvLyBGdXp6eSBsaW5rIGNhbid0IGJlIHByZXBlbmRlZCB3aXRoIC46L1xcLSBhbmQgbm9uIHB1bmN0dWF0aW9uLlxuICAgICAgLy8gYnV0IGNhbiBzdGFydCB3aXRoID4gKG1hcmtkb3duIGJsb2NrcXVvdGUpXG4gICAgICAnKF58KD8hWy46L1xcXFwtX0BdKSg/OlskKzw9Pl5gfFxcdWZmNWNdfCcgKyByZS5zcmNfWlBDYyArICcpKScgK1xuICAgICAgJygoPyFbJCs8PT5eYHxcXHVmZjVjXSknICsgcmUudHBsX2hvc3RfcG9ydF9mdXp6eV9zdHJpY3QgKyByZS5zcmNfcGF0aCArICcpJ1xuXG4gIHJlLnRwbF9saW5rX25vX2lwX2Z1enp5ID1cbiAgICAgIC8vIEZ1enp5IGxpbmsgY2FuJ3QgYmUgcHJlcGVuZGVkIHdpdGggLjovXFwtIGFuZCBub24gcHVuY3R1YXRpb24uXG4gICAgICAvLyBidXQgY2FuIHN0YXJ0IHdpdGggPiAobWFya2Rvd24gYmxvY2txdW90ZSlcbiAgICAgICcoXnwoPyFbLjovXFxcXC1fQF0pKD86WyQrPD0+XmB8XFx1ZmY1Y118JyArIHJlLnNyY19aUENjICsgJykpJyArXG4gICAgICAnKCg/IVskKzw9Pl5gfFxcdWZmNWNdKScgKyByZS50cGxfaG9zdF9wb3J0X25vX2lwX2Z1enp5X3N0cmljdCArIHJlLnNyY19wYXRoICsgJyknXG5cbiAgcmV0dXJuIHJlXG59XG4iLCAiaW1wb3J0IHJlRmFjdG9yeSBmcm9tICcuL2xpYi9yZS5tanMnXG5cbi8vXG4vLyBIZWxwZXJzXG4vL1xuXG4vLyBNZXJnZSBvYmplY3RzXG4vL1xuZnVuY3Rpb24gYXNzaWduIChvYmogLyogZnJvbTEsIGZyb20yLCBmcm9tMywgLi4uICovKSB7XG4gIGNvbnN0IHNvdXJjZXMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpXG5cbiAgc291cmNlcy5mb3JFYWNoKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICBpZiAoIXNvdXJjZSkgeyByZXR1cm4gfVxuXG4gICAgT2JqZWN0LmtleXMoc291cmNlKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIG9ialtrZXldID0gc291cmNlW2tleV1cbiAgICB9KVxuICB9KVxuXG4gIHJldHVybiBvYmpcbn1cblxuZnVuY3Rpb24gX2NsYXNzIChvYmopIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopIH1cbmZ1bmN0aW9uIGlzU3RyaW5nIChvYmopIHsgcmV0dXJuIF9jbGFzcyhvYmopID09PSAnW29iamVjdCBTdHJpbmddJyB9XG5mdW5jdGlvbiBpc09iamVjdCAob2JqKSB7IHJldHVybiBfY2xhc3Mob2JqKSA9PT0gJ1tvYmplY3QgT2JqZWN0XScgfVxuZnVuY3Rpb24gaXNSZWdFeHAgKG9iaikgeyByZXR1cm4gX2NsYXNzKG9iaikgPT09ICdbb2JqZWN0IFJlZ0V4cF0nIH1cbmZ1bmN0aW9uIGlzRnVuY3Rpb24gKG9iaikgeyByZXR1cm4gX2NsYXNzKG9iaikgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXScgfVxuXG5mdW5jdGlvbiBlc2NhcGVSRSAoc3RyKSB7IHJldHVybiBzdHIucmVwbGFjZSgvWy4/KiteJFtcXF1cXFxcKCl7fXwtXS9nLCAnXFxcXCQmJykgfVxuXG4vL1xuXG5jb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgZnV6enlMaW5rOiB0cnVlLFxuICBmdXp6eUVtYWlsOiB0cnVlLFxuICBmdXp6eUlQOiBmYWxzZVxufVxuXG5mdW5jdGlvbiBpc09wdGlvbnNPYmogKG9iaikge1xuICByZXR1cm4gT2JqZWN0LmtleXMob2JqIHx8IHt9KS5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgaykge1xuICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbiAgICByZXR1cm4gYWNjIHx8IGRlZmF1bHRPcHRpb25zLmhhc093blByb3BlcnR5KGspXG4gIH0sIGZhbHNlKVxufVxuXG5jb25zdCBkZWZhdWx0U2NoZW1hcyA9IHtcbiAgJ2h0dHA6Jzoge1xuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAodGV4dCwgcG9zLCBzZWxmKSB7XG4gICAgICBjb25zdCB0YWlsID0gdGV4dC5zbGljZShwb3MpXG5cbiAgICAgIGlmICghc2VsZi5yZS5odHRwKSB7XG4gICAgICAgIC8vIGNvbXBpbGUgbGF6aWx5LCBiZWNhdXNlIFwiaG9zdFwiLWNvbnRhaW5pbmcgdmFyaWFibGVzIGNhbiBjaGFuZ2Ugb24gdGxkcyB1cGRhdGUuXG4gICAgICAgIHNlbGYucmUuaHR0cCA9IG5ldyBSZWdFeHAoXG4gICAgICAgICAgJ15cXFxcL1xcXFwvJyArIHNlbGYucmUuc3JjX2F1dGggKyBzZWxmLnJlLnNyY19ob3N0X3BvcnRfc3RyaWN0ICsgc2VsZi5yZS5zcmNfcGF0aCwgJ2knXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmIChzZWxmLnJlLmh0dHAudGVzdCh0YWlsKSkge1xuICAgICAgICByZXR1cm4gdGFpbC5tYXRjaChzZWxmLnJlLmh0dHApWzBdLmxlbmd0aFxuICAgICAgfVxuICAgICAgcmV0dXJuIDBcbiAgICB9XG4gIH0sXG4gICdodHRwczonOiAnaHR0cDonLFxuICAnZnRwOic6ICdodHRwOicsXG4gICcvLyc6IHtcbiAgICB2YWxpZGF0ZTogZnVuY3Rpb24gKHRleHQsIHBvcywgc2VsZikge1xuICAgICAgY29uc3QgdGFpbCA9IHRleHQuc2xpY2UocG9zKVxuXG4gICAgICBpZiAoIXNlbGYucmUubm9faHR0cCkge1xuICAgICAgLy8gY29tcGlsZSBsYXppbHksIGJlY2F1c2UgXCJob3N0XCItY29udGFpbmluZyB2YXJpYWJsZXMgY2FuIGNoYW5nZSBvbiB0bGRzIHVwZGF0ZS5cbiAgICAgICAgc2VsZi5yZS5ub19odHRwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgICAnXicgK1xuICAgICAgICAgIHNlbGYucmUuc3JjX2F1dGggK1xuICAgICAgICAgIC8vIERvbid0IGFsbG93IHNpbmdsZS1sZXZlbCBkb21haW5zLCBiZWNhdXNlIG9mIGZhbHNlIHBvc2l0aXZlcyBsaWtlICcvL3Rlc3QnXG4gICAgICAgICAgLy8gd2l0aCBjb2RlIGNvbW1lbnRzXG4gICAgICAgICAgJyg/OmxvY2FsaG9zdHwoPzooPzonICsgc2VsZi5yZS5zcmNfZG9tYWluICsgJylcXFxcLikrJyArIHNlbGYucmUuc3JjX2RvbWFpbl9yb290ICsgJyknICtcbiAgICAgICAgICBzZWxmLnJlLnNyY19wb3J0ICtcbiAgICAgICAgICBzZWxmLnJlLnNyY19ob3N0X3Rlcm1pbmF0b3IgK1xuICAgICAgICAgIHNlbGYucmUuc3JjX3BhdGgsXG5cbiAgICAgICAgICAnaSdcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2VsZi5yZS5ub19odHRwLnRlc3QodGFpbCkpIHtcbiAgICAgICAgLy8gc2hvdWxkIG5vdCBiZSBgOi8vYCAmIGAvLy9gLCB0aGF0IHByb3RlY3RzIGZyb20gZXJyb3JzIGluIHByb3RvY29sIG5hbWVcbiAgICAgICAgaWYgKHBvcyA+PSAzICYmIHRleHRbcG9zIC0gM10gPT09ICc6JykgeyByZXR1cm4gMCB9XG4gICAgICAgIGlmIChwb3MgPj0gMyAmJiB0ZXh0W3BvcyAtIDNdID09PSAnLycpIHsgcmV0dXJuIDAgfVxuICAgICAgICByZXR1cm4gdGFpbC5tYXRjaChzZWxmLnJlLm5vX2h0dHApWzBdLmxlbmd0aFxuICAgICAgfVxuICAgICAgcmV0dXJuIDBcbiAgICB9XG4gIH0sXG4gICdtYWlsdG86Jzoge1xuICAgIHZhbGlkYXRlOiBmdW5jdGlvbiAodGV4dCwgcG9zLCBzZWxmKSB7XG4gICAgICBjb25zdCB0YWlsID0gdGV4dC5zbGljZShwb3MpXG5cbiAgICAgIGlmICghc2VsZi5yZS5tYWlsdG8pIHtcbiAgICAgICAgc2VsZi5yZS5tYWlsdG8gPSBuZXcgUmVnRXhwKFxuICAgICAgICAgICdeJyArIHNlbGYucmUuc3JjX2VtYWlsX25hbWUgKyAnQCcgKyBzZWxmLnJlLnNyY19ob3N0X3N0cmljdCwgJ2knXG4gICAgICAgIClcbiAgICAgIH1cbiAgICAgIGlmIChzZWxmLnJlLm1haWx0by50ZXN0KHRhaWwpKSB7XG4gICAgICAgIHJldHVybiB0YWlsLm1hdGNoKHNlbGYucmUubWFpbHRvKVswXS5sZW5ndGhcbiAgICAgIH1cbiAgICAgIHJldHVybiAwXG4gICAgfVxuICB9XG59XG5cbi8vIFJFIHBhdHRlcm4gZm9yIDItY2hhcmFjdGVyIHRsZHMgKGF1dG9nZW5lcmF0ZWQgYnkgLi9zdXBwb3J0L3RsZHNfMmNoYXJfZ2VuLmpzKVxuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW4gKi9cbmNvbnN0IHRsZHNfMmNoX3NyY19yZSA9ICdhW2NkZWZnaWxtbm9xcnN0dXd4el18YlthYmRlZmdoaWptbm9yc3R2d3l6XXxjW2FjZGZnaGlrbG1ub3J1dnd4eXpdfGRbZWprbW96XXxlW2NlZ3JzdHVdfGZbaWprbW9yXXxnW2FiZGVmZ2hpbG1ucHFyc3R1d3ldfGhba21ucnR1XXxpW2RlbG1ub3Fyc3RdfGpbZW1vcF18a1tlZ2hpbW5wcnd5el18bFthYmNpa3JzdHV2eV18bVthY2RlZ2hrbG1ub3BxcnN0dXZ3eHl6XXxuW2FjZWZnaWxvcHJ1el18b218cFthZWZnaGtsbW5yc3R3eV18cWF8cltlb3N1d118c1thYmNkZWdoaWprbG1ub3J0dXZ4eXpdfHRbY2RmZ2hqa2xtbm9ydHZ3el18dVthZ2tzeXpdfHZbYWNlZ2ludV18d1tmc118eVtldF18elthbXddJ1xuXG4vLyBET04nVCB0cnkgdG8gbWFrZSBQUnMgd2l0aCBjaGFuZ2VzLiBFeHRlbmQgVExEcyB3aXRoIExpbmtpZnlJdC50bGRzKCkgaW5zdGVhZFxuY29uc3QgdGxkc19kZWZhdWx0ID0gJ2Jpenxjb218ZWR1fGdvdnxuZXR8b3JnfHByb3x3ZWJ8eHh4fGFlcm98YXNpYXxjb29wfGluZm98bXVzZXVtfG5hbWV8c2hvcHxcdTA0NDBcdTA0NDQnLnNwbGl0KCd8JylcblxuZnVuY3Rpb24gcmVzZXRTY2FuQ2FjaGUgKHNlbGYpIHtcbiAgc2VsZi5fX2luZGV4X18gPSAtMVxuICBzZWxmLl9fdGV4dF9jYWNoZV9fID0gJydcbn1cblxuZnVuY3Rpb24gY3JlYXRlVmFsaWRhdG9yIChyZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKHRleHQsIHBvcykge1xuICAgIGNvbnN0IHRhaWwgPSB0ZXh0LnNsaWNlKHBvcylcblxuICAgIGlmIChyZS50ZXN0KHRhaWwpKSB7XG4gICAgICByZXR1cm4gdGFpbC5tYXRjaChyZSlbMF0ubGVuZ3RoXG4gICAgfVxuICAgIHJldHVybiAwXG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlTm9ybWFsaXplciAoKSB7XG4gIHJldHVybiBmdW5jdGlvbiAobWF0Y2gsIHNlbGYpIHtcbiAgICBzZWxmLm5vcm1hbGl6ZShtYXRjaClcbiAgfVxufVxuXG4vLyBTY2hlbWFzIGNvbXBpbGVyLiBCdWlsZCByZWdleHBzLlxuLy9cbmZ1bmN0aW9uIGNvbXBpbGUgKHNlbGYpIHtcbiAgLy8gTG9hZCAmIGNsb25lIFJFIHBhdHRlcm5zLlxuICBjb25zdCByZSA9IHNlbGYucmUgPSByZUZhY3Rvcnkoc2VsZi5fX29wdHNfXylcblxuICAvLyBEZWZpbmUgZHluYW1pYyBwYXR0ZXJuc1xuICBjb25zdCB0bGRzID0gc2VsZi5fX3RsZHNfXy5zbGljZSgpXG5cbiAgc2VsZi5vbkNvbXBpbGUoKVxuXG4gIGlmICghc2VsZi5fX3RsZHNfcmVwbGFjZWRfXykge1xuICAgIHRsZHMucHVzaCh0bGRzXzJjaF9zcmNfcmUpXG4gIH1cbiAgdGxkcy5wdXNoKHJlLnNyY194bilcblxuICByZS5zcmNfdGxkcyA9IHRsZHMuam9pbignfCcpXG5cbiAgZnVuY3Rpb24gdW50cGwgKHRwbCkgeyByZXR1cm4gdHBsLnJlcGxhY2UoJyVUTERTJScsIHJlLnNyY190bGRzKSB9XG5cbiAgcmUuZW1haWxfZnV6enkgPSBSZWdFeHAodW50cGwocmUudHBsX2VtYWlsX2Z1enp5KSwgJ2knKVxuICByZS5saW5rX2Z1enp5ID0gUmVnRXhwKHVudHBsKHJlLnRwbF9saW5rX2Z1enp5KSwgJ2knKVxuICByZS5saW5rX25vX2lwX2Z1enp5ID0gUmVnRXhwKHVudHBsKHJlLnRwbF9saW5rX25vX2lwX2Z1enp5KSwgJ2knKVxuICByZS5ob3N0X2Z1enp5X3Rlc3QgPSBSZWdFeHAodW50cGwocmUudHBsX2hvc3RfZnV6enlfdGVzdCksICdpJylcblxuICAvL1xuICAvLyBDb21waWxlIGVhY2ggc2NoZW1hXG4gIC8vXG5cbiAgY29uc3QgYWxpYXNlcyA9IFtdXG5cbiAgc2VsZi5fX2NvbXBpbGVkX18gPSB7fSAvLyBSZXNldCBjb21waWxlZCBkYXRhXG5cbiAgZnVuY3Rpb24gc2NoZW1hRXJyb3IgKG5hbWUsIHZhbCkge1xuICAgIHRocm93IG5ldyBFcnJvcignKExpbmtpZnlJdCkgSW52YWxpZCBzY2hlbWEgXCInICsgbmFtZSArICdcIjogJyArIHZhbClcbiAgfVxuXG4gIE9iamVjdC5rZXlzKHNlbGYuX19zY2hlbWFzX18pLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICBjb25zdCB2YWwgPSBzZWxmLl9fc2NoZW1hc19fW25hbWVdXG5cbiAgICAvLyBza2lwIGRpc2FibGVkIG1ldGhvZHNcbiAgICBpZiAodmFsID09PSBudWxsKSB7IHJldHVybiB9XG5cbiAgICBjb25zdCBjb21waWxlZCA9IHsgdmFsaWRhdGU6IG51bGwsIGxpbms6IG51bGwgfVxuXG4gICAgc2VsZi5fX2NvbXBpbGVkX19bbmFtZV0gPSBjb21waWxlZFxuXG4gICAgaWYgKGlzT2JqZWN0KHZhbCkpIHtcbiAgICAgIGlmIChpc1JlZ0V4cCh2YWwudmFsaWRhdGUpKSB7XG4gICAgICAgIGNvbXBpbGVkLnZhbGlkYXRlID0gY3JlYXRlVmFsaWRhdG9yKHZhbC52YWxpZGF0ZSlcbiAgICAgIH0gZWxzZSBpZiAoaXNGdW5jdGlvbih2YWwudmFsaWRhdGUpKSB7XG4gICAgICAgIGNvbXBpbGVkLnZhbGlkYXRlID0gdmFsLnZhbGlkYXRlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpXG4gICAgICB9XG5cbiAgICAgIGlmIChpc0Z1bmN0aW9uKHZhbC5ub3JtYWxpemUpKSB7XG4gICAgICAgIGNvbXBpbGVkLm5vcm1hbGl6ZSA9IHZhbC5ub3JtYWxpemVcbiAgICAgIH0gZWxzZSBpZiAoIXZhbC5ub3JtYWxpemUpIHtcbiAgICAgICAgY29tcGlsZWQubm9ybWFsaXplID0gY3JlYXRlTm9ybWFsaXplcigpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzY2hlbWFFcnJvcihuYW1lLCB2YWwpXG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmIChpc1N0cmluZyh2YWwpKSB7XG4gICAgICBhbGlhc2VzLnB1c2gobmFtZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNjaGVtYUVycm9yKG5hbWUsIHZhbClcbiAgfSlcblxuICAvL1xuICAvLyBDb21waWxlIHBvc3Rwb25lZCBhbGlhc2VzXG4gIC8vXG5cbiAgYWxpYXNlcy5mb3JFYWNoKGZ1bmN0aW9uIChhbGlhcykge1xuICAgIGlmICghc2VsZi5fX2NvbXBpbGVkX19bc2VsZi5fX3NjaGVtYXNfX1thbGlhc11dKSB7XG4gICAgICAvLyBTaWxlbnRseSBmYWlsIG9uIG1pc3NlZCBzY2hlbWFzIHRvIGF2b2lkIGVycm9ucyBvbiBkaXNhYmxlLlxuICAgICAgLy8gc2NoZW1hRXJyb3IoYWxpYXMsIHNlbGYuX19zY2hlbWFzX19bYWxpYXNdKTtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNlbGYuX19jb21waWxlZF9fW2FsaWFzXS52YWxpZGF0ZSA9XG4gICAgICBzZWxmLl9fY29tcGlsZWRfX1tzZWxmLl9fc2NoZW1hc19fW2FsaWFzXV0udmFsaWRhdGVcbiAgICBzZWxmLl9fY29tcGlsZWRfX1thbGlhc10ubm9ybWFsaXplID1cbiAgICAgIHNlbGYuX19jb21waWxlZF9fW3NlbGYuX19zY2hlbWFzX19bYWxpYXNdXS5ub3JtYWxpemVcbiAgfSlcblxuICAvL1xuICAvLyBGYWtlIHJlY29yZCBmb3IgZ3Vlc3NlZCBsaW5rc1xuICAvL1xuICBzZWxmLl9fY29tcGlsZWRfX1snJ10gPSB7IHZhbGlkYXRlOiBudWxsLCBub3JtYWxpemU6IGNyZWF0ZU5vcm1hbGl6ZXIoKSB9XG5cbiAgLy9cbiAgLy8gQnVpbGQgc2NoZW1hIGNvbmRpdGlvblxuICAvL1xuICBjb25zdCBzbGlzdCA9IE9iamVjdC5rZXlzKHNlbGYuX19jb21waWxlZF9fKVxuICAgIC5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIC8vIEZpbHRlciBkaXNhYmxlZCAmIGZha2Ugc2NoZW1hc1xuICAgICAgcmV0dXJuIG5hbWUubGVuZ3RoID4gMCAmJiBzZWxmLl9fY29tcGlsZWRfX1tuYW1lXVxuICAgIH0pXG4gICAgLm1hcChlc2NhcGVSRSlcbiAgICAuam9pbignfCcpXG4gIC8vICg/IV8pIGNhdXNlIDEuNXggc2xvd2Rvd25cbiAgc2VsZi5yZS5zY2hlbWFfdGVzdCA9IFJlZ0V4cCgnKF58KD8hXykoPzpbPjxcXHVmZjVjXXwnICsgcmUuc3JjX1pQQ2MgKyAnKSkoJyArIHNsaXN0ICsgJyknLCAnaScpXG4gIHNlbGYucmUuc2NoZW1hX3NlYXJjaCA9IFJlZ0V4cCgnKF58KD8hXykoPzpbPjxcXHVmZjVjXXwnICsgcmUuc3JjX1pQQ2MgKyAnKSkoJyArIHNsaXN0ICsgJyknLCAnaWcnKVxuICBzZWxmLnJlLnNjaGVtYV9hdF9zdGFydCA9IFJlZ0V4cCgnXicgKyBzZWxmLnJlLnNjaGVtYV9zZWFyY2guc291cmNlLCAnaScpXG5cbiAgc2VsZi5yZS5wcmV0ZXN0ID0gUmVnRXhwKFxuICAgICcoJyArIHNlbGYucmUuc2NoZW1hX3Rlc3Quc291cmNlICsgJyl8KCcgKyBzZWxmLnJlLmhvc3RfZnV6enlfdGVzdC5zb3VyY2UgKyAnKXxAJyxcbiAgICAnaSdcbiAgKVxuXG4gIC8vXG4gIC8vIENsZWFudXBcbiAgLy9cblxuICByZXNldFNjYW5DYWNoZShzZWxmKVxufVxuXG4vKipcbiAqIGNsYXNzIE1hdGNoXG4gKlxuICogTWF0Y2ggcmVzdWx0LiBTaW5nbGUgZWxlbWVudCBvZiBhcnJheSwgcmV0dXJuZWQgYnkgW1tMaW5raWZ5SXQjbWF0Y2hdXVxuICoqL1xuZnVuY3Rpb24gTWF0Y2ggKHNlbGYsIHNoaWZ0KSB7XG4gIGNvbnN0IHN0YXJ0ID0gc2VsZi5fX2luZGV4X19cbiAgY29uc3QgZW5kID0gc2VsZi5fX2xhc3RfaW5kZXhfX1xuICBjb25zdCB0ZXh0ID0gc2VsZi5fX3RleHRfY2FjaGVfXy5zbGljZShzdGFydCwgZW5kKVxuXG4gIC8qKlxuICAgKiBNYXRjaCNzY2hlbWEgLT4gU3RyaW5nXG4gICAqXG4gICAqIFByZWZpeCAocHJvdG9jb2wpIGZvciBtYXRjaGVkIHN0cmluZy5cbiAgICoqL1xuICB0aGlzLnNjaGVtYSA9IHNlbGYuX19zY2hlbWFfXy50b0xvd2VyQ2FzZSgpXG4gIC8qKlxuICAgKiBNYXRjaCNpbmRleCAtPiBOdW1iZXJcbiAgICpcbiAgICogRmlyc3QgcG9zaXRpb24gb2YgbWF0Y2hlZCBzdHJpbmcuXG4gICAqKi9cbiAgdGhpcy5pbmRleCA9IHN0YXJ0ICsgc2hpZnRcbiAgLyoqXG4gICAqIE1hdGNoI2xhc3RJbmRleCAtPiBOdW1iZXJcbiAgICpcbiAgICogTmV4dCBwb3NpdGlvbiBhZnRlciBtYXRjaGVkIHN0cmluZy5cbiAgICoqL1xuICB0aGlzLmxhc3RJbmRleCA9IGVuZCArIHNoaWZ0XG4gIC8qKlxuICAgKiBNYXRjaCNyYXcgLT4gU3RyaW5nXG4gICAqXG4gICAqIE1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMucmF3ID0gdGV4dFxuICAvKipcbiAgICogTWF0Y2gjdGV4dCAtPiBTdHJpbmdcbiAgICpcbiAgICogTm90bWFsaXplZCB0ZXh0IG9mIG1hdGNoZWQgc3RyaW5nLlxuICAgKiovXG4gIHRoaXMudGV4dCA9IHRleHRcbiAgLyoqXG4gICAqIE1hdGNoI3VybCAtPiBTdHJpbmdcbiAgICpcbiAgICogTm9ybWFsaXplZCB1cmwgb2YgbWF0Y2hlZCBzdHJpbmcuXG4gICAqKi9cbiAgdGhpcy51cmwgPSB0ZXh0XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZU1hdGNoIChzZWxmLCBzaGlmdCkge1xuICBjb25zdCBtYXRjaCA9IG5ldyBNYXRjaChzZWxmLCBzaGlmdClcblxuICBzZWxmLl9fY29tcGlsZWRfX1ttYXRjaC5zY2hlbWFdLm5vcm1hbGl6ZShtYXRjaCwgc2VsZilcblxuICByZXR1cm4gbWF0Y2hcbn1cblxuLyoqXG4gKiBjbGFzcyBMaW5raWZ5SXRcbiAqKi9cblxuLyoqXG4gKiBuZXcgTGlua2lmeUl0KHNjaGVtYXMsIG9wdGlvbnMpXG4gKiAtIHNjaGVtYXMgKE9iamVjdCk6IE9wdGlvbmFsLiBBZGRpdGlvbmFsIHNjaGVtYXMgdG8gdmFsaWRhdGUgKHByZWZpeC92YWxpZGF0b3IpXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHsgZnV6enlMaW5rfGZ1enp5RW1haWx8ZnV6enlJUDogdHJ1ZXxmYWxzZSB9XG4gKlxuICogQ3JlYXRlcyBuZXcgbGlua2lmaWVyIGluc3RhbmNlIHdpdGggb3B0aW9uYWwgYWRkaXRpb25hbCBzY2hlbWFzLlxuICogQ2FuIGJlIGNhbGxlZCB3aXRob3V0IGBuZXdgIGtleXdvcmQgZm9yIGNvbnZlbmllbmNlLlxuICpcbiAqIEJ5IGRlZmF1bHQgdW5kZXJzdGFuZHM6XG4gKlxuICogLSBgaHR0cChzKTovLy4uLmAgLCBgZnRwOi8vLi4uYCwgYG1haWx0bzouLi5gICYgYC8vLi4uYCBsaW5rc1xuICogLSBcImZ1enp5XCIgbGlua3MgYW5kIGVtYWlscyAoZXhhbXBsZS5jb20sIGZvb0BiYXIuY29tKS5cbiAqXG4gKiBgc2NoZW1hc2AgaXMgYW4gb2JqZWN0LCB3aGVyZSBlYWNoIGtleS92YWx1ZSBkZXNjcmliZXMgcHJvdG9jb2wvcnVsZTpcbiAqXG4gKiAtIF9fa2V5X18gLSBsaW5rIHByZWZpeCAodXN1YWxseSwgcHJvdG9jb2wgbmFtZSB3aXRoIGA6YCBhdCB0aGUgZW5kLCBgc2t5cGU6YFxuICogICBmb3IgZXhhbXBsZSkuIGBsaW5raWZ5LWl0YCBtYWtlcyBzaHVyZSB0aGF0IHByZWZpeCBpcyBub3QgcHJlY2VlZGVkIHdpdGhcbiAqICAgYWxwaGFudW1lcmljIGNoYXIgYW5kIHN5bWJvbHMuIE9ubHkgd2hpdGVzcGFjZXMgYW5kIHB1bmN0dWF0aW9uIGFsbG93ZWQuXG4gKiAtIF9fdmFsdWVfXyAtIHJ1bGUgdG8gY2hlY2sgdGFpbCBhZnRlciBsaW5rIHByZWZpeFxuICogICAtIF9TdHJpbmdfIC0ganVzdCBhbGlhcyB0byBleGlzdGluZyBydWxlXG4gKiAgIC0gX09iamVjdF9cbiAqICAgICAtIF92YWxpZGF0ZV8gLSB2YWxpZGF0b3IgZnVuY3Rpb24gKHNob3VsZCByZXR1cm4gbWF0Y2hlZCBsZW5ndGggb24gc3VjY2VzcyksXG4gKiAgICAgICBvciBgUmVnRXhwYC5cbiAqICAgICAtIF9ub3JtYWxpemVfIC0gb3B0aW9uYWwgZnVuY3Rpb24gdG8gbm9ybWFsaXplIHRleHQgJiB1cmwgb2YgbWF0Y2hlZCByZXN1bHRcbiAqICAgICAgIChmb3IgZXhhbXBsZSwgZm9yIEB0d2l0dGVyIG1lbnRpb25zKS5cbiAqXG4gKiBgb3B0aW9uc2A6XG4gKlxuICogLSBfX2Z1enp5TGlua19fIC0gcmVjb2duaWdlIFVSTC1zIHdpdGhvdXQgYGh0dHAocyk6YCBwcmVmaXguIERlZmF1bHQgYHRydWVgLlxuICogLSBfX2Z1enp5SVBfXyAtIGFsbG93IElQcyBpbiBmdXp6eSBsaW5rcyBhYm92ZS4gQ2FuIGNvbmZsaWN0IHdpdGggc29tZSB0ZXh0c1xuICogICBsaWtlIHZlcnNpb24gbnVtYmVycy4gRGVmYXVsdCBgZmFsc2VgLlxuICogLSBfX2Z1enp5RW1haWxfXyAtIHJlY29nbml6ZSBlbWFpbHMgd2l0aG91dCBgbWFpbHRvOmAgcHJlZml4LlxuICpcbiAqKi9cbmZ1bmN0aW9uIExpbmtpZnlJdCAoc2NoZW1hcywgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTGlua2lmeUl0KSkge1xuICAgIHJldHVybiBuZXcgTGlua2lmeUl0KHNjaGVtYXMsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBpZiAoaXNPcHRpb25zT2JqKHNjaGVtYXMpKSB7XG4gICAgICBvcHRpb25zID0gc2NoZW1hc1xuICAgICAgc2NoZW1hcyA9IHt9XG4gICAgfVxuICB9XG5cbiAgdGhpcy5fX29wdHNfXyA9IGFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIG9wdGlvbnMpXG5cbiAgLy8gQ2FjaGUgbGFzdCB0ZXN0ZWQgcmVzdWx0LiBVc2VkIHRvIHNraXAgcmVwZWF0aW5nIHN0ZXBzIG9uIG5leHQgYG1hdGNoYCBjYWxsLlxuICB0aGlzLl9faW5kZXhfXyA9IC0xXG4gIHRoaXMuX19sYXN0X2luZGV4X18gPSAtMSAvLyBOZXh0IHNjYW4gcG9zaXRpb25cbiAgdGhpcy5fX3NjaGVtYV9fID0gJydcbiAgdGhpcy5fX3RleHRfY2FjaGVfXyA9ICcnXG5cbiAgdGhpcy5fX3NjaGVtYXNfXyA9IGFzc2lnbih7fSwgZGVmYXVsdFNjaGVtYXMsIHNjaGVtYXMpXG4gIHRoaXMuX19jb21waWxlZF9fID0ge31cblxuICB0aGlzLl9fdGxkc19fID0gdGxkc19kZWZhdWx0XG4gIHRoaXMuX190bGRzX3JlcGxhY2VkX18gPSBmYWxzZVxuXG4gIHRoaXMucmUgPSB7fVxuXG4gIGNvbXBpbGUodGhpcylcbn1cblxuLyoqIGNoYWluYWJsZVxuICogTGlua2lmeUl0I2FkZChzY2hlbWEsIGRlZmluaXRpb24pXG4gKiAtIHNjaGVtYSAoU3RyaW5nKTogcnVsZSBuYW1lIChmaXhlZCBwYXR0ZXJuIHByZWZpeClcbiAqIC0gZGVmaW5pdGlvbiAoU3RyaW5nfFJlZ0V4cHxPYmplY3QpOiBzY2hlbWEgZGVmaW5pdGlvblxuICpcbiAqIEFkZCBuZXcgcnVsZSBkZWZpbml0aW9uLiBTZWUgY29uc3RydWN0b3IgZGVzY3JpcHRpb24gZm9yIGRldGFpbHMuXG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIGFkZCAoc2NoZW1hLCBkZWZpbml0aW9uKSB7XG4gIHRoaXMuX19zY2hlbWFzX19bc2NoZW1hXSA9IGRlZmluaXRpb25cbiAgY29tcGlsZSh0aGlzKVxuICByZXR1cm4gdGhpc1xufVxuXG4vKiogY2hhaW5hYmxlXG4gKiBMaW5raWZ5SXQjc2V0KG9wdGlvbnMpXG4gKiAtIG9wdGlvbnMgKE9iamVjdCk6IHsgZnV6enlMaW5rfGZ1enp5RW1haWx8ZnV6enlJUDogdHJ1ZXxmYWxzZSB9XG4gKlxuICogU2V0IHJlY29nbml0aW9uIG9wdGlvbnMgZm9yIGxpbmtzIHdpdGhvdXQgc2NoZW1hLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiBzZXQgKG9wdGlvbnMpIHtcbiAgdGhpcy5fX29wdHNfXyA9IGFzc2lnbih0aGlzLl9fb3B0c19fLCBvcHRpb25zKVxuICByZXR1cm4gdGhpc1xufVxuXG4vKipcbiAqIExpbmtpZnlJdCN0ZXN0KHRleHQpIC0+IEJvb2xlYW5cbiAqXG4gKiBTZWFyY2hlcyBsaW5raWZpYWJsZSBwYXR0ZXJuIGFuZCByZXR1cm5zIGB0cnVlYCBvbiBzdWNjZXNzIG9yIGBmYWxzZWAgb24gZmFpbC5cbiAqKi9cbkxpbmtpZnlJdC5wcm90b3R5cGUudGVzdCA9IGZ1bmN0aW9uIHRlc3QgKHRleHQpIHtcbiAgLy8gUmVzZXQgc2NhbiBjYWNoZVxuICB0aGlzLl9fdGV4dF9jYWNoZV9fID0gdGV4dFxuICB0aGlzLl9faW5kZXhfXyA9IC0xXG5cbiAgaWYgKCF0ZXh0Lmxlbmd0aCkgeyByZXR1cm4gZmFsc2UgfVxuXG4gIGxldCBtLCBtbCwgbWUsIGxlbiwgc2hpZnQsIG5leHQsIHJlLCB0bGRfcG9zLCBhdF9wb3NcblxuICAvLyB0cnkgdG8gc2NhbiBmb3IgbGluayB3aXRoIHNjaGVtYSAtIHRoYXQncyB0aGUgbW9zdCBzaW1wbGUgcnVsZVxuICBpZiAodGhpcy5yZS5zY2hlbWFfdGVzdC50ZXN0KHRleHQpKSB7XG4gICAgcmUgPSB0aGlzLnJlLnNjaGVtYV9zZWFyY2hcbiAgICByZS5sYXN0SW5kZXggPSAwXG4gICAgd2hpbGUgKChtID0gcmUuZXhlYyh0ZXh0KSkgIT09IG51bGwpIHtcbiAgICAgIGxlbiA9IHRoaXMudGVzdFNjaGVtYUF0KHRleHQsIG1bMl0sIHJlLmxhc3RJbmRleClcbiAgICAgIGlmIChsZW4pIHtcbiAgICAgICAgdGhpcy5fX3NjaGVtYV9fID0gbVsyXVxuICAgICAgICB0aGlzLl9faW5kZXhfXyA9IG0uaW5kZXggKyBtWzFdLmxlbmd0aFxuICAgICAgICB0aGlzLl9fbGFzdF9pbmRleF9fID0gbS5pbmRleCArIG1bMF0ubGVuZ3RoICsgbGVuXG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHRoaXMuX19vcHRzX18uZnV6enlMaW5rICYmIHRoaXMuX19jb21waWxlZF9fWydodHRwOiddKSB7XG4gICAgLy8gZ3Vlc3Mgc2NoZW1hbGVzcyBsaW5rc1xuICAgIHRsZF9wb3MgPSB0ZXh0LnNlYXJjaCh0aGlzLnJlLmhvc3RfZnV6enlfdGVzdClcbiAgICBpZiAodGxkX3BvcyA+PSAwKSB7XG4gICAgICAvLyBpZiB0bGQgaXMgbG9jYXRlZCBhZnRlciBmb3VuZCBsaW5rIC0gbm8gbmVlZCB0byBjaGVjayBmdXp6eSBwYXR0ZXJuXG4gICAgICBpZiAodGhpcy5fX2luZGV4X18gPCAwIHx8IHRsZF9wb3MgPCB0aGlzLl9faW5kZXhfXykge1xuICAgICAgICBpZiAoKG1sID0gdGV4dC5tYXRjaCh0aGlzLl9fb3B0c19fLmZ1enp5SVAgPyB0aGlzLnJlLmxpbmtfZnV6enkgOiB0aGlzLnJlLmxpbmtfbm9faXBfZnV6enkpKSAhPT0gbnVsbCkge1xuICAgICAgICAgIHNoaWZ0ID0gbWwuaW5kZXggKyBtbFsxXS5sZW5ndGhcblxuICAgICAgICAgIGlmICh0aGlzLl9faW5kZXhfXyA8IDAgfHwgc2hpZnQgPCB0aGlzLl9faW5kZXhfXykge1xuICAgICAgICAgICAgdGhpcy5fX3NjaGVtYV9fID0gJydcbiAgICAgICAgICAgIHRoaXMuX19pbmRleF9fID0gc2hpZnRcbiAgICAgICAgICAgIHRoaXMuX19sYXN0X2luZGV4X18gPSBtbC5pbmRleCArIG1sWzBdLmxlbmd0aFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0aGlzLl9fb3B0c19fLmZ1enp5RW1haWwgJiYgdGhpcy5fX2NvbXBpbGVkX19bJ21haWx0bzonXSkge1xuICAgIC8vIGd1ZXNzIHNjaGVtYWxlc3MgZW1haWxzXG4gICAgYXRfcG9zID0gdGV4dC5pbmRleE9mKCdAJylcbiAgICBpZiAoYXRfcG9zID49IDApIHtcbiAgICAgIC8vIFdlIGNhbid0IHNraXAgdGhpcyBjaGVjaywgYmVjYXVzZSB0aGlzIGNhc2VzIGFyZSBwb3NzaWJsZTpcbiAgICAgIC8vIDE5Mi4xNjguMS4xQGdtYWlsLmNvbSwgbXkuaW5AZXhhbXBsZS5jb21cbiAgICAgIGlmICgobWUgPSB0ZXh0Lm1hdGNoKHRoaXMucmUuZW1haWxfZnV6enkpKSAhPT0gbnVsbCkge1xuICAgICAgICBzaGlmdCA9IG1lLmluZGV4ICsgbWVbMV0ubGVuZ3RoXG4gICAgICAgIG5leHQgPSBtZS5pbmRleCArIG1lWzBdLmxlbmd0aFxuXG4gICAgICAgIGlmICh0aGlzLl9faW5kZXhfXyA8IDAgfHwgc2hpZnQgPCB0aGlzLl9faW5kZXhfXyB8fFxuICAgICAgICAgICAgKHNoaWZ0ID09PSB0aGlzLl9faW5kZXhfXyAmJiBuZXh0ID4gdGhpcy5fX2xhc3RfaW5kZXhfXykpIHtcbiAgICAgICAgICB0aGlzLl9fc2NoZW1hX18gPSAnbWFpbHRvOidcbiAgICAgICAgICB0aGlzLl9faW5kZXhfXyA9IHNoaWZ0XG4gICAgICAgICAgdGhpcy5fX2xhc3RfaW5kZXhfXyA9IG5leHRcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0aGlzLl9faW5kZXhfXyA+PSAwXG59XG5cbi8qKlxuICogTGlua2lmeUl0I3ByZXRlc3QodGV4dCkgLT4gQm9vbGVhblxuICpcbiAqIFZlcnkgcXVpY2sgY2hlY2ssIHRoYXQgY2FuIGdpdmUgZmFsc2UgcG9zaXRpdmVzLiBSZXR1cm5zIHRydWUgaWYgbGluayBNQVkgQkVcbiAqIGNhbiBleGlzdHMuIENhbiBiZSB1c2VkIGZvciBzcGVlZCBvcHRpbWl6YXRpb24sIHdoZW4geW91IG5lZWQgdG8gY2hlY2sgdGhhdFxuICogbGluayBOT1QgZXhpc3RzLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS5wcmV0ZXN0ID0gZnVuY3Rpb24gcHJldGVzdCAodGV4dCkge1xuICByZXR1cm4gdGhpcy5yZS5wcmV0ZXN0LnRlc3QodGV4dClcbn1cblxuLyoqXG4gKiBMaW5raWZ5SXQjdGVzdFNjaGVtYUF0KHRleHQsIG5hbWUsIHBvc2l0aW9uKSAtPiBOdW1iZXJcbiAqIC0gdGV4dCAoU3RyaW5nKTogdGV4dCB0byBzY2FuXG4gKiAtIG5hbWUgKFN0cmluZyk6IHJ1bGUgKHNjaGVtYSkgbmFtZVxuICogLSBwb3NpdGlvbiAoTnVtYmVyKTogdGV4dCBvZmZzZXQgdG8gY2hlY2sgZnJvbVxuICpcbiAqIFNpbWlsYXIgdG8gW1tMaW5raWZ5SXQjdGVzdF1dIGJ1dCBjaGVja3Mgb25seSBzcGVjaWZpYyBwcm90b2NvbCB0YWlsIGV4YWN0bHlcbiAqIGF0IGdpdmVuIHBvc2l0aW9uLiBSZXR1cm5zIGxlbmd0aCBvZiBmb3VuZCBwYXR0ZXJuICgwIG9uIGZhaWwpLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS50ZXN0U2NoZW1hQXQgPSBmdW5jdGlvbiB0ZXN0U2NoZW1hQXQgKHRleHQsIHNjaGVtYSwgcG9zKSB7XG4gIC8vIElmIG5vdCBzdXBwb3J0ZWQgc2NoZW1hIGNoZWNrIHJlcXVlc3RlZCAtIHRlcm1pbmF0ZVxuICBpZiAoIXRoaXMuX19jb21waWxlZF9fW3NjaGVtYS50b0xvd2VyQ2FzZSgpXSkge1xuICAgIHJldHVybiAwXG4gIH1cbiAgcmV0dXJuIHRoaXMuX19jb21waWxlZF9fW3NjaGVtYS50b0xvd2VyQ2FzZSgpXS52YWxpZGF0ZSh0ZXh0LCBwb3MsIHRoaXMpXG59XG5cbi8qKlxuICogTGlua2lmeUl0I21hdGNoKHRleHQpIC0+IEFycmF5fG51bGxcbiAqXG4gKiBSZXR1cm5zIGFycmF5IG9mIGZvdW5kIGxpbmsgZGVzY3JpcHRpb25zIG9yIGBudWxsYCBvbiBmYWlsLiBXZSBzdHJvbmdseVxuICogcmVjb21tZW5kIHRvIHVzZSBbW0xpbmtpZnlJdCN0ZXN0XV0gZmlyc3QsIGZvciBiZXN0IHNwZWVkLlxuICpcbiAqICMjIyMjIFJlc3VsdCBtYXRjaCBkZXNjcmlwdGlvblxuICpcbiAqIC0gX19zY2hlbWFfXyAtIGxpbmsgc2NoZW1hLCBjYW4gYmUgZW1wdHkgZm9yIGZ1enp5IGxpbmtzLCBvciBgLy9gIGZvclxuICogICBwcm90b2NvbC1uZXV0cmFsICBsaW5rcy5cbiAqIC0gX19pbmRleF9fIC0gb2Zmc2V0IG9mIG1hdGNoZWQgdGV4dFxuICogLSBfX2xhc3RJbmRleF9fIC0gaW5kZXggb2YgbmV4dCBjaGFyIGFmdGVyIG1hdGhjaCBlbmRcbiAqIC0gX19yYXdfXyAtIG1hdGNoZWQgdGV4dFxuICogLSBfX3RleHRfXyAtIG5vcm1hbGl6ZWQgdGV4dFxuICogLSBfX3VybF9fIC0gbGluaywgZ2VuZXJhdGVkIGZyb20gbWF0Y2hlZCB0ZXh0XG4gKiovXG5MaW5raWZ5SXQucHJvdG90eXBlLm1hdGNoID0gZnVuY3Rpb24gbWF0Y2ggKHRleHQpIHtcbiAgY29uc3QgcmVzdWx0ID0gW11cbiAgbGV0IHNoaWZ0ID0gMFxuXG4gIC8vIFRyeSB0byB0YWtlIHByZXZpb3VzIGVsZW1lbnQgZnJvbSBjYWNoZSwgaWYgLnRlc3QoKSBjYWxsZWQgYmVmb3JlXG4gIGlmICh0aGlzLl9faW5kZXhfXyA+PSAwICYmIHRoaXMuX190ZXh0X2NhY2hlX18gPT09IHRleHQpIHtcbiAgICByZXN1bHQucHVzaChjcmVhdGVNYXRjaCh0aGlzLCBzaGlmdCkpXG4gICAgc2hpZnQgPSB0aGlzLl9fbGFzdF9pbmRleF9fXG4gIH1cblxuICAvLyBDdXQgaGVhZCBpZiBjYWNoZSB3YXMgdXNlZFxuICBsZXQgdGFpbCA9IHNoaWZ0ID8gdGV4dC5zbGljZShzaGlmdCkgOiB0ZXh0XG5cbiAgLy8gU2NhbiBzdHJpbmcgdW50aWwgZW5kIHJlYWNoZWRcbiAgd2hpbGUgKHRoaXMudGVzdCh0YWlsKSkge1xuICAgIHJlc3VsdC5wdXNoKGNyZWF0ZU1hdGNoKHRoaXMsIHNoaWZ0KSlcblxuICAgIHRhaWwgPSB0YWlsLnNsaWNlKHRoaXMuX19sYXN0X2luZGV4X18pXG4gICAgc2hpZnQgKz0gdGhpcy5fX2xhc3RfaW5kZXhfX1xuICB9XG5cbiAgaWYgKHJlc3VsdC5sZW5ndGgpIHtcbiAgICByZXR1cm4gcmVzdWx0XG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIExpbmtpZnlJdCNtYXRjaEF0U3RhcnQodGV4dCkgLT4gTWF0Y2h8bnVsbFxuICpcbiAqIFJldHVybnMgZnVsbHktZm9ybWVkIChub3QgZnV6enkpIGxpbmsgaWYgaXQgc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmdcbiAqIG9mIHRoZSBzdHJpbmcsIGFuZCBudWxsIG90aGVyd2lzZS5cbiAqKi9cbkxpbmtpZnlJdC5wcm90b3R5cGUubWF0Y2hBdFN0YXJ0ID0gZnVuY3Rpb24gbWF0Y2hBdFN0YXJ0ICh0ZXh0KSB7XG4gIC8vIFJlc2V0IHNjYW4gY2FjaGVcbiAgdGhpcy5fX3RleHRfY2FjaGVfXyA9IHRleHRcbiAgdGhpcy5fX2luZGV4X18gPSAtMVxuXG4gIGlmICghdGV4dC5sZW5ndGgpIHJldHVybiBudWxsXG5cbiAgY29uc3QgbSA9IHRoaXMucmUuc2NoZW1hX2F0X3N0YXJ0LmV4ZWModGV4dClcbiAgaWYgKCFtKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGxlbiA9IHRoaXMudGVzdFNjaGVtYUF0KHRleHQsIG1bMl0sIG1bMF0ubGVuZ3RoKVxuICBpZiAoIWxlbikgcmV0dXJuIG51bGxcblxuICB0aGlzLl9fc2NoZW1hX18gPSBtWzJdXG4gIHRoaXMuX19pbmRleF9fID0gbS5pbmRleCArIG1bMV0ubGVuZ3RoXG4gIHRoaXMuX19sYXN0X2luZGV4X18gPSBtLmluZGV4ICsgbVswXS5sZW5ndGggKyBsZW5cblxuICByZXR1cm4gY3JlYXRlTWF0Y2godGhpcywgMClcbn1cblxuLyoqIGNoYWluYWJsZVxuICogTGlua2lmeUl0I3RsZHMobGlzdCBbLCBrZWVwT2xkXSkgLT4gdGhpc1xuICogLSBsaXN0IChBcnJheSk6IGxpc3Qgb2YgdGxkc1xuICogLSBrZWVwT2xkIChCb29sZWFuKTogbWVyZ2Ugd2l0aCBjdXJyZW50IGxpc3QgaWYgYHRydWVgIChgZmFsc2VgIGJ5IGRlZmF1bHQpXG4gKlxuICogTG9hZCAob3IgbWVyZ2UpIG5ldyB0bGRzIGxpc3QuIFRob3NlIGFyZSB1c2VyIGZvciBmdXp6eSBsaW5rcyAod2l0aG91dCBwcmVmaXgpXG4gKiB0byBhdm9pZCBmYWxzZSBwb3NpdGl2ZXMuIEJ5IGRlZmF1bHQgdGhpcyBhbGdvcnl0aG0gdXNlZDpcbiAqXG4gKiAtIGhvc3RuYW1lIHdpdGggYW55IDItbGV0dGVyIHJvb3Qgem9uZXMgYXJlIG9rLlxuICogLSBiaXp8Y29tfGVkdXxnb3Z8bmV0fG9yZ3xwcm98d2VifHh4eHxhZXJvfGFzaWF8Y29vcHxpbmZvfG11c2V1bXxuYW1lfHNob3B8XHUwNDQwXHUwNDQ0XG4gKiAgIGFyZSBvay5cbiAqIC0gZW5jb2RlZCAoYHhuLS0uLi5gKSByb290IHpvbmVzIGFyZSBvay5cbiAqXG4gKiBJZiBsaXN0IGlzIHJlcGxhY2VkLCB0aGVuIGV4YWN0IG1hdGNoIGZvciAyLWNoYXJzIHJvb3Qgem9uZXMgd2lsbCBiZSBjaGVja2VkLlxuICoqL1xuTGlua2lmeUl0LnByb3RvdHlwZS50bGRzID0gZnVuY3Rpb24gdGxkcyAobGlzdCwga2VlcE9sZCkge1xuICBsaXN0ID0gQXJyYXkuaXNBcnJheShsaXN0KSA/IGxpc3QgOiBbbGlzdF1cblxuICBpZiAoIWtlZXBPbGQpIHtcbiAgICB0aGlzLl9fdGxkc19fID0gbGlzdC5zbGljZSgpXG4gICAgdGhpcy5fX3RsZHNfcmVwbGFjZWRfXyA9IHRydWVcbiAgICBjb21waWxlKHRoaXMpXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIHRoaXMuX190bGRzX18gPSB0aGlzLl9fdGxkc19fLmNvbmNhdChsaXN0KVxuICAgIC5zb3J0KClcbiAgICAuZmlsdGVyKGZ1bmN0aW9uIChlbCwgaWR4LCBhcnIpIHtcbiAgICAgIHJldHVybiBlbCAhPT0gYXJyW2lkeCAtIDFdXG4gICAgfSlcbiAgICAucmV2ZXJzZSgpXG5cbiAgY29tcGlsZSh0aGlzKVxuICByZXR1cm4gdGhpc1xufVxuXG4vKipcbiAqIExpbmtpZnlJdCNub3JtYWxpemUobWF0Y2gpXG4gKlxuICogRGVmYXVsdCBub3JtYWxpemVyIChpZiBzY2hlbWEgZG9lcyBub3QgZGVmaW5lIGl0J3Mgb3duKS5cbiAqKi9cbkxpbmtpZnlJdC5wcm90b3R5cGUubm9ybWFsaXplID0gZnVuY3Rpb24gbm9ybWFsaXplIChtYXRjaCkge1xuICAvLyBEbyBtaW5pbWFsIHBvc3NpYmxlIGNoYW5nZXMgYnkgZGVmYXVsdC4gTmVlZCB0byBjb2xsZWN0IGZlZWRiYWNrIHByaW9yXG4gIC8vIHRvIG1vdmUgZm9yd2FyZCBodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbGlua2lmeS1pdC9pc3N1ZXMvMVxuXG4gIGlmICghbWF0Y2guc2NoZW1hKSB7IG1hdGNoLnVybCA9ICdodHRwOi8vJyArIG1hdGNoLnVybCB9XG5cbiAgaWYgKG1hdGNoLnNjaGVtYSA9PT0gJ21haWx0bzonICYmICEvXm1haWx0bzovaS50ZXN0KG1hdGNoLnVybCkpIHtcbiAgICBtYXRjaC51cmwgPSAnbWFpbHRvOicgKyBtYXRjaC51cmxcbiAgfVxufVxuXG4vKipcbiAqIExpbmtpZnlJdCNvbkNvbXBpbGUoKVxuICpcbiAqIE92ZXJyaWRlIHRvIG1vZGlmeSBiYXNpYyBSZWdFeHAtcy5cbiAqKi9cbkxpbmtpZnlJdC5wcm90b3R5cGUub25Db21waWxlID0gZnVuY3Rpb24gb25Db21waWxlICgpIHtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlua2lmeUl0XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG4vKiogSGlnaGVzdCBwb3NpdGl2ZSBzaWduZWQgMzItYml0IGZsb2F0IHZhbHVlICovXG5jb25zdCBtYXhJbnQgPSAyMTQ3NDgzNjQ3OyAvLyBha2EuIDB4N0ZGRkZGRkYgb3IgMl4zMS0xXG5cbi8qKiBCb290c3RyaW5nIHBhcmFtZXRlcnMgKi9cbmNvbnN0IGJhc2UgPSAzNjtcbmNvbnN0IHRNaW4gPSAxO1xuY29uc3QgdE1heCA9IDI2O1xuY29uc3Qgc2tldyA9IDM4O1xuY29uc3QgZGFtcCA9IDcwMDtcbmNvbnN0IGluaXRpYWxCaWFzID0gNzI7XG5jb25zdCBpbml0aWFsTiA9IDEyODsgLy8gMHg4MFxuY29uc3QgZGVsaW1pdGVyID0gJy0nOyAvLyAnXFx4MkQnXG5cbi8qKiBSZWd1bGFyIGV4cHJlc3Npb25zICovXG5jb25zdCByZWdleFB1bnljb2RlID0gL154bi0tLztcbmNvbnN0IHJlZ2V4Tm9uQVNDSUkgPSAvW15cXDAtXFx4N0ZdLzsgLy8gTm90ZTogVSswMDdGIERFTCBpcyBleGNsdWRlZCB0b28uXG5jb25zdCByZWdleFNlcGFyYXRvcnMgPSAvW1xceDJFXFx1MzAwMlxcdUZGMEVcXHVGRjYxXS9nOyAvLyBSRkMgMzQ5MCBzZXBhcmF0b3JzXG5cbi8qKiBFcnJvciBtZXNzYWdlcyAqL1xuY29uc3QgZXJyb3JzID0ge1xuXHQnb3ZlcmZsb3cnOiAnT3ZlcmZsb3c6IGlucHV0IG5lZWRzIHdpZGVyIGludGVnZXJzIHRvIHByb2Nlc3MnLFxuXHQnbm90LWJhc2ljJzogJ0lsbGVnYWwgaW5wdXQgPj0gMHg4MCAobm90IGEgYmFzaWMgY29kZSBwb2ludCknLFxuXHQnaW52YWxpZC1pbnB1dCc6ICdJbnZhbGlkIGlucHV0J1xufTtcblxuLyoqIENvbnZlbmllbmNlIHNob3J0Y3V0cyAqL1xuY29uc3QgYmFzZU1pbnVzVE1pbiA9IGJhc2UgLSB0TWluO1xuY29uc3QgZmxvb3IgPSBNYXRoLmZsb29yO1xuY29uc3Qgc3RyaW5nRnJvbUNoYXJDb2RlID0gU3RyaW5nLmZyb21DaGFyQ29kZTtcblxuLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5cbi8qKlxuICogQSBnZW5lcmljIGVycm9yIHV0aWxpdHkgZnVuY3Rpb24uXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IHR5cGUgVGhlIGVycm9yIHR5cGUuXG4gKiBAcmV0dXJucyB7RXJyb3J9IFRocm93cyBhIGBSYW5nZUVycm9yYCB3aXRoIHRoZSBhcHBsaWNhYmxlIGVycm9yIG1lc3NhZ2UuXG4gKi9cbmZ1bmN0aW9uIGVycm9yKHR5cGUpIHtcblx0dGhyb3cgbmV3IFJhbmdlRXJyb3IoZXJyb3JzW3R5cGVdKTtcbn1cblxuLyoqXG4gKiBBIGdlbmVyaWMgYEFycmF5I21hcGAgdXRpbGl0eSBmdW5jdGlvbi5cbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge0FycmF5fSBhcnJheSBUaGUgYXJyYXkgdG8gaXRlcmF0ZSBvdmVyLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gY2FsbGJhY2sgVGhlIGZ1bmN0aW9uIHRoYXQgZ2V0cyBjYWxsZWQgZm9yIGV2ZXJ5IGFycmF5XG4gKiBpdGVtLlxuICogQHJldHVybnMge0FycmF5fSBBIG5ldyBhcnJheSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBtYXAoYXJyYXksIGNhbGxiYWNrKSB7XG5cdGNvbnN0IHJlc3VsdCA9IFtdO1xuXHRsZXQgbGVuZ3RoID0gYXJyYXkubGVuZ3RoO1xuXHR3aGlsZSAobGVuZ3RoLS0pIHtcblx0XHRyZXN1bHRbbGVuZ3RoXSA9IGNhbGxiYWNrKGFycmF5W2xlbmd0aF0pO1xuXHR9XG5cdHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQSBzaW1wbGUgYEFycmF5I21hcGAtbGlrZSB3cmFwcGVyIHRvIHdvcmsgd2l0aCBkb21haW4gbmFtZSBzdHJpbmdzIG9yIGVtYWlsXG4gKiBhZGRyZXNzZXMuXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtTdHJpbmd9IGRvbWFpbiBUaGUgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcy5cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIFRoZSBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGZvciBldmVyeVxuICogY2hhcmFjdGVyLlxuICogQHJldHVybnMge1N0cmluZ30gQSBuZXcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgcmV0dXJuZWQgYnkgdGhlIGNhbGxiYWNrXG4gKiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gbWFwRG9tYWluKGRvbWFpbiwgY2FsbGJhY2spIHtcblx0Y29uc3QgcGFydHMgPSBkb21haW4uc3BsaXQoJ0AnKTtcblx0bGV0IHJlc3VsdCA9ICcnO1xuXHRpZiAocGFydHMubGVuZ3RoID4gMSkge1xuXHRcdC8vIEluIGVtYWlsIGFkZHJlc3Nlcywgb25seSB0aGUgZG9tYWluIG5hbWUgc2hvdWxkIGJlIHB1bnljb2RlZC4gTGVhdmVcblx0XHQvLyB0aGUgbG9jYWwgcGFydCAoaS5lLiBldmVyeXRoaW5nIHVwIHRvIGBAYCkgaW50YWN0LlxuXHRcdHJlc3VsdCA9IHBhcnRzWzBdICsgJ0AnO1xuXHRcdGRvbWFpbiA9IHBhcnRzWzFdO1xuXHR9XG5cdC8vIEF2b2lkIGBzcGxpdChyZWdleClgIGZvciBJRTggY29tcGF0aWJpbGl0eS4gU2VlICMxNy5cblx0ZG9tYWluID0gZG9tYWluLnJlcGxhY2UocmVnZXhTZXBhcmF0b3JzLCAnXFx4MkUnKTtcblx0Y29uc3QgbGFiZWxzID0gZG9tYWluLnNwbGl0KCcuJyk7XG5cdGNvbnN0IGVuY29kZWQgPSBtYXAobGFiZWxzLCBjYWxsYmFjaykuam9pbignLicpO1xuXHRyZXR1cm4gcmVzdWx0ICsgZW5jb2RlZDtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG51bWVyaWMgY29kZSBwb2ludHMgb2YgZWFjaCBVbmljb2RlXG4gKiBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZy4gV2hpbGUgSmF2YVNjcmlwdCB1c2VzIFVDUy0yIGludGVybmFsbHksXG4gKiB0aGlzIGZ1bmN0aW9uIHdpbGwgY29udmVydCBhIHBhaXIgb2Ygc3Vycm9nYXRlIGhhbHZlcyAoZWFjaCBvZiB3aGljaFxuICogVUNTLTIgZXhwb3NlcyBhcyBzZXBhcmF0ZSBjaGFyYWN0ZXJzKSBpbnRvIGEgc2luZ2xlIGNvZGUgcG9pbnQsXG4gKiBtYXRjaGluZyBVVEYtMTYuXG4gKiBAc2VlIGBwdW55Y29kZS51Y3MyLmVuY29kZWBcbiAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuICogQG1lbWJlck9mIHB1bnljb2RlLnVjczJcbiAqIEBuYW1lIGRlY29kZVxuICogQHBhcmFtIHtTdHJpbmd9IHN0cmluZyBUaGUgVW5pY29kZSBpbnB1dCBzdHJpbmcgKFVDUy0yKS5cbiAqIEByZXR1cm5zIHtBcnJheX0gVGhlIG5ldyBhcnJheSBvZiBjb2RlIHBvaW50cy5cbiAqL1xuZnVuY3Rpb24gdWNzMmRlY29kZShzdHJpbmcpIHtcblx0Y29uc3Qgb3V0cHV0ID0gW107XG5cdGxldCBjb3VudGVyID0gMDtcblx0Y29uc3QgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblx0d2hpbGUgKGNvdW50ZXIgPCBsZW5ndGgpIHtcblx0XHRjb25zdCB2YWx1ZSA9IHN0cmluZy5jaGFyQ29kZUF0KGNvdW50ZXIrKyk7XG5cdFx0aWYgKHZhbHVlID49IDB4RDgwMCAmJiB2YWx1ZSA8PSAweERCRkYgJiYgY291bnRlciA8IGxlbmd0aCkge1xuXHRcdFx0Ly8gSXQncyBhIGhpZ2ggc3Vycm9nYXRlLCBhbmQgdGhlcmUgaXMgYSBuZXh0IGNoYXJhY3Rlci5cblx0XHRcdGNvbnN0IGV4dHJhID0gc3RyaW5nLmNoYXJDb2RlQXQoY291bnRlcisrKTtcblx0XHRcdGlmICgoZXh0cmEgJiAweEZDMDApID09IDB4REMwMCkgeyAvLyBMb3cgc3Vycm9nYXRlLlxuXHRcdFx0XHRvdXRwdXQucHVzaCgoKHZhbHVlICYgMHgzRkYpIDw8IDEwKSArIChleHRyYSAmIDB4M0ZGKSArIDB4MTAwMDApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Ly8gSXQncyBhbiB1bm1hdGNoZWQgc3Vycm9nYXRlOyBvbmx5IGFwcGVuZCB0aGlzIGNvZGUgdW5pdCwgaW4gY2FzZSB0aGVcblx0XHRcdFx0Ly8gbmV4dCBjb2RlIHVuaXQgaXMgdGhlIGhpZ2ggc3Vycm9nYXRlIG9mIGEgc3Vycm9nYXRlIHBhaXIuXG5cdFx0XHRcdG91dHB1dC5wdXNoKHZhbHVlKTtcblx0XHRcdFx0Y291bnRlci0tO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRvdXRwdXQucHVzaCh2YWx1ZSk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBvdXRwdXQ7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0cmluZyBiYXNlZCBvbiBhbiBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuICogQHNlZSBgcHVueWNvZGUudWNzMi5kZWNvZGVgXG4gKiBAbWVtYmVyT2YgcHVueWNvZGUudWNzMlxuICogQG5hbWUgZW5jb2RlXG4gKiBAcGFyYW0ge0FycmF5fSBjb2RlUG9pbnRzIFRoZSBhcnJheSBvZiBudW1lcmljIGNvZGUgcG9pbnRzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIG5ldyBVbmljb2RlIHN0cmluZyAoVUNTLTIpLlxuICovXG5jb25zdCB1Y3MyZW5jb2RlID0gY29kZVBvaW50cyA9PiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5jb2RlUG9pbnRzKTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGJhc2ljIGNvZGUgcG9pbnQgaW50byBhIGRpZ2l0L2ludGVnZXIuXG4gKiBAc2VlIGBkaWdpdFRvQmFzaWMoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gY29kZVBvaW50IFRoZSBiYXNpYyBudW1lcmljIGNvZGUgcG9pbnQgdmFsdWUuXG4gKiBAcmV0dXJucyB7TnVtYmVyfSBUaGUgbnVtZXJpYyB2YWx1ZSBvZiBhIGJhc2ljIGNvZGUgcG9pbnQgKGZvciB1c2UgaW5cbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaW4gdGhlIHJhbmdlIGAwYCB0byBgYmFzZSAtIDFgLCBvciBgYmFzZWAgaWZcbiAqIHRoZSBjb2RlIHBvaW50IGRvZXMgbm90IHJlcHJlc2VudCBhIHZhbHVlLlxuICovXG5jb25zdCBiYXNpY1RvRGlnaXQgPSBmdW5jdGlvbihjb2RlUG9pbnQpIHtcblx0aWYgKGNvZGVQb2ludCA+PSAweDMwICYmIGNvZGVQb2ludCA8IDB4M0EpIHtcblx0XHRyZXR1cm4gMjYgKyAoY29kZVBvaW50IC0gMHgzMCk7XG5cdH1cblx0aWYgKGNvZGVQb2ludCA+PSAweDQxICYmIGNvZGVQb2ludCA8IDB4NUIpIHtcblx0XHRyZXR1cm4gY29kZVBvaW50IC0gMHg0MTtcblx0fVxuXHRpZiAoY29kZVBvaW50ID49IDB4NjEgJiYgY29kZVBvaW50IDwgMHg3Qikge1xuXHRcdHJldHVybiBjb2RlUG9pbnQgLSAweDYxO1xuXHR9XG5cdHJldHVybiBiYXNlO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIGRpZ2l0L2ludGVnZXIgaW50byBhIGJhc2ljIGNvZGUgcG9pbnQuXG4gKiBAc2VlIGBiYXNpY1RvRGlnaXQoKWBcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0ge051bWJlcn0gZGlnaXQgVGhlIG51bWVyaWMgdmFsdWUgb2YgYSBiYXNpYyBjb2RlIHBvaW50LlxuICogQHJldHVybnMge051bWJlcn0gVGhlIGJhc2ljIGNvZGUgcG9pbnQgd2hvc2UgdmFsdWUgKHdoZW4gdXNlZCBmb3JcbiAqIHJlcHJlc2VudGluZyBpbnRlZ2VycykgaXMgYGRpZ2l0YCwgd2hpY2ggbmVlZHMgdG8gYmUgaW4gdGhlIHJhbmdlXG4gKiBgMGAgdG8gYGJhc2UgLSAxYC4gSWYgYGZsYWdgIGlzIG5vbi16ZXJvLCB0aGUgdXBwZXJjYXNlIGZvcm0gaXNcbiAqIHVzZWQ7IGVsc2UsIHRoZSBsb3dlcmNhc2UgZm9ybSBpcyB1c2VkLiBUaGUgYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gKiBpZiBgZmxhZ2AgaXMgbm9uLXplcm8gYW5kIGBkaWdpdGAgaGFzIG5vIHVwcGVyY2FzZSBmb3JtLlxuICovXG5jb25zdCBkaWdpdFRvQmFzaWMgPSBmdW5jdGlvbihkaWdpdCwgZmxhZykge1xuXHQvLyAgMC4uMjUgbWFwIHRvIEFTQ0lJIGEuLnogb3IgQS4uWlxuXHQvLyAyNi4uMzUgbWFwIHRvIEFTQ0lJIDAuLjlcblx0cmV0dXJuIGRpZ2l0ICsgMjIgKyA3NSAqIChkaWdpdCA8IDI2KSAtICgoZmxhZyAhPSAwKSA8PCA1KTtcbn07XG5cbi8qKlxuICogQmlhcyBhZGFwdGF0aW9uIGZ1bmN0aW9uIGFzIHBlciBzZWN0aW9uIDMuNCBvZiBSRkMgMzQ5Mi5cbiAqIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmMzNDkyI3NlY3Rpb24tMy40XG4gKiBAcHJpdmF0ZVxuICovXG5jb25zdCBhZGFwdCA9IGZ1bmN0aW9uKGRlbHRhLCBudW1Qb2ludHMsIGZpcnN0VGltZSkge1xuXHRsZXQgayA9IDA7XG5cdGRlbHRhID0gZmlyc3RUaW1lID8gZmxvb3IoZGVsdGEgLyBkYW1wKSA6IGRlbHRhID4+IDE7XG5cdGRlbHRhICs9IGZsb29yKGRlbHRhIC8gbnVtUG9pbnRzKTtcblx0Zm9yICgvKiBubyBpbml0aWFsaXphdGlvbiAqLzsgZGVsdGEgPiBiYXNlTWludXNUTWluICogdE1heCA+PiAxOyBrICs9IGJhc2UpIHtcblx0XHRkZWx0YSA9IGZsb29yKGRlbHRhIC8gYmFzZU1pbnVzVE1pbik7XG5cdH1cblx0cmV0dXJuIGZsb29yKGsgKyAoYmFzZU1pbnVzVE1pbiArIDEpICogZGVsdGEgLyAoZGVsdGEgKyBza2V3KSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scyB0byBhIHN0cmluZyBvZiBVbmljb2RlXG4gKiBzeW1ib2xzLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIFB1bnljb2RlIHN0cmluZyBvZiBBU0NJSS1vbmx5IHN5bWJvbHMuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgcmVzdWx0aW5nIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMuXG4gKi9cbmNvbnN0IGRlY29kZSA9IGZ1bmN0aW9uKGlucHV0KSB7XG5cdC8vIERvbid0IHVzZSBVQ1MtMi5cblx0Y29uc3Qgb3V0cHV0ID0gW107XG5cdGNvbnN0IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXHRsZXQgaSA9IDA7XG5cdGxldCBuID0gaW5pdGlhbE47XG5cdGxldCBiaWFzID0gaW5pdGlhbEJpYXM7XG5cblx0Ly8gSGFuZGxlIHRoZSBiYXNpYyBjb2RlIHBvaW50czogbGV0IGBiYXNpY2AgYmUgdGhlIG51bWJlciBvZiBpbnB1dCBjb2RlXG5cdC8vIHBvaW50cyBiZWZvcmUgdGhlIGxhc3QgZGVsaW1pdGVyLCBvciBgMGAgaWYgdGhlcmUgaXMgbm9uZSwgdGhlbiBjb3B5XG5cdC8vIHRoZSBmaXJzdCBiYXNpYyBjb2RlIHBvaW50cyB0byB0aGUgb3V0cHV0LlxuXG5cdGxldCBiYXNpYyA9IGlucHV0Lmxhc3RJbmRleE9mKGRlbGltaXRlcik7XG5cdGlmIChiYXNpYyA8IDApIHtcblx0XHRiYXNpYyA9IDA7XG5cdH1cblxuXHRmb3IgKGxldCBqID0gMDsgaiA8IGJhc2ljOyArK2opIHtcblx0XHQvLyBpZiBpdCdzIG5vdCBhIGJhc2ljIGNvZGUgcG9pbnRcblx0XHRpZiAoaW5wdXQuY2hhckNvZGVBdChqKSA+PSAweDgwKSB7XG5cdFx0XHRlcnJvcignbm90LWJhc2ljJyk7XG5cdFx0fVxuXHRcdG91dHB1dC5wdXNoKGlucHV0LmNoYXJDb2RlQXQoaikpO1xuXHR9XG5cblx0Ly8gTWFpbiBkZWNvZGluZyBsb29wOiBzdGFydCBqdXN0IGFmdGVyIHRoZSBsYXN0IGRlbGltaXRlciBpZiBhbnkgYmFzaWMgY29kZVxuXHQvLyBwb2ludHMgd2VyZSBjb3BpZWQ7IHN0YXJ0IGF0IHRoZSBiZWdpbm5pbmcgb3RoZXJ3aXNlLlxuXG5cdGZvciAobGV0IGluZGV4ID0gYmFzaWMgPiAwID8gYmFzaWMgKyAxIDogMDsgaW5kZXggPCBpbnB1dExlbmd0aDsgLyogbm8gZmluYWwgZXhwcmVzc2lvbiAqLykge1xuXG5cdFx0Ly8gYGluZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIG5leHQgY2hhcmFjdGVyIHRvIGJlIGNvbnN1bWVkLlxuXHRcdC8vIERlY29kZSBhIGdlbmVyYWxpemVkIHZhcmlhYmxlLWxlbmd0aCBpbnRlZ2VyIGludG8gYGRlbHRhYCxcblx0XHQvLyB3aGljaCBnZXRzIGFkZGVkIHRvIGBpYC4gVGhlIG92ZXJmbG93IGNoZWNraW5nIGlzIGVhc2llclxuXHRcdC8vIGlmIHdlIGluY3JlYXNlIGBpYCBhcyB3ZSBnbywgdGhlbiBzdWJ0cmFjdCBvZmYgaXRzIHN0YXJ0aW5nXG5cdFx0Ly8gdmFsdWUgYXQgdGhlIGVuZCB0byBvYnRhaW4gYGRlbHRhYC5cblx0XHRjb25zdCBvbGRpID0gaTtcblx0XHRmb3IgKGxldCB3ID0gMSwgayA9IGJhc2U7IC8qIG5vIGNvbmRpdGlvbiAqLzsgayArPSBiYXNlKSB7XG5cblx0XHRcdGlmIChpbmRleCA+PSBpbnB1dExlbmd0aCkge1xuXHRcdFx0XHRlcnJvcignaW52YWxpZC1pbnB1dCcpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkaWdpdCA9IGJhc2ljVG9EaWdpdChpbnB1dC5jaGFyQ29kZUF0KGluZGV4KyspKTtcblxuXHRcdFx0aWYgKGRpZ2l0ID49IGJhc2UpIHtcblx0XHRcdFx0ZXJyb3IoJ2ludmFsaWQtaW5wdXQnKTtcblx0XHRcdH1cblx0XHRcdGlmIChkaWdpdCA+IGZsb29yKChtYXhJbnQgLSBpKSAvIHcpKSB7XG5cdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHRpICs9IGRpZ2l0ICogdztcblx0XHRcdGNvbnN0IHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXG5cdFx0XHRpZiAoZGlnaXQgPCB0KSB7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRpZiAodyA+IGZsb29yKG1heEludCAvIGJhc2VNaW51c1QpKSB7XG5cdFx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdFx0fVxuXG5cdFx0XHR3ICo9IGJhc2VNaW51c1Q7XG5cblx0XHR9XG5cblx0XHRjb25zdCBvdXQgPSBvdXRwdXQubGVuZ3RoICsgMTtcblx0XHRiaWFzID0gYWRhcHQoaSAtIG9sZGksIG91dCwgb2xkaSA9PSAwKTtcblxuXHRcdC8vIGBpYCB3YXMgc3VwcG9zZWQgdG8gd3JhcCBhcm91bmQgZnJvbSBgb3V0YCB0byBgMGAsXG5cdFx0Ly8gaW5jcmVtZW50aW5nIGBuYCBlYWNoIHRpbWUsIHNvIHdlJ2xsIGZpeCB0aGF0IG5vdzpcblx0XHRpZiAoZmxvb3IoaSAvIG91dCkgPiBtYXhJbnQgLSBuKSB7XG5cdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHR9XG5cblx0XHRuICs9IGZsb29yKGkgLyBvdXQpO1xuXHRcdGkgJT0gb3V0O1xuXG5cdFx0Ly8gSW5zZXJ0IGBuYCBhdCBwb3NpdGlvbiBgaWAgb2YgdGhlIG91dHB1dC5cblx0XHRvdXRwdXQuc3BsaWNlKGkrKywgMCwgbik7XG5cblx0fVxuXG5cdHJldHVybiBTdHJpbmcuZnJvbUNvZGVQb2ludCguLi5vdXRwdXQpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIHN0cmluZyBvZiBVbmljb2RlIHN5bWJvbHMgKGUuZy4gYSBkb21haW4gbmFtZSBsYWJlbCkgdG8gYVxuICogUHVueWNvZGUgc3RyaW5nIG9mIEFTQ0lJLW9ubHkgc3ltYm9scy5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBzdHJpbmcgb2YgVW5pY29kZSBzeW1ib2xzLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIHJlc3VsdGluZyBQdW55Y29kZSBzdHJpbmcgb2YgQVNDSUktb25seSBzeW1ib2xzLlxuICovXG5jb25zdCBlbmNvZGUgPSBmdW5jdGlvbihpbnB1dCkge1xuXHRjb25zdCBvdXRwdXQgPSBbXTtcblxuXHQvLyBDb252ZXJ0IHRoZSBpbnB1dCBpbiBVQ1MtMiB0byBhbiBhcnJheSBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLlxuXHRpbnB1dCA9IHVjczJkZWNvZGUoaW5wdXQpO1xuXG5cdC8vIENhY2hlIHRoZSBsZW5ndGguXG5cdGNvbnN0IGlucHV0TGVuZ3RoID0gaW5wdXQubGVuZ3RoO1xuXG5cdC8vIEluaXRpYWxpemUgdGhlIHN0YXRlLlxuXHRsZXQgbiA9IGluaXRpYWxOO1xuXHRsZXQgZGVsdGEgPSAwO1xuXHRsZXQgYmlhcyA9IGluaXRpYWxCaWFzO1xuXG5cdC8vIEhhbmRsZSB0aGUgYmFzaWMgY29kZSBwb2ludHMuXG5cdGZvciAoY29uc3QgY3VycmVudFZhbHVlIG9mIGlucHV0KSB7XG5cdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IDB4ODApIHtcblx0XHRcdG91dHB1dC5wdXNoKHN0cmluZ0Zyb21DaGFyQ29kZShjdXJyZW50VmFsdWUpKTtcblx0XHR9XG5cdH1cblxuXHRjb25zdCBiYXNpY0xlbmd0aCA9IG91dHB1dC5sZW5ndGg7XG5cdGxldCBoYW5kbGVkQ1BDb3VudCA9IGJhc2ljTGVuZ3RoO1xuXG5cdC8vIGBoYW5kbGVkQ1BDb3VudGAgaXMgdGhlIG51bWJlciBvZiBjb2RlIHBvaW50cyB0aGF0IGhhdmUgYmVlbiBoYW5kbGVkO1xuXHQvLyBgYmFzaWNMZW5ndGhgIGlzIHRoZSBudW1iZXIgb2YgYmFzaWMgY29kZSBwb2ludHMuXG5cblx0Ly8gRmluaXNoIHRoZSBiYXNpYyBzdHJpbmcgd2l0aCBhIGRlbGltaXRlciB1bmxlc3MgaXQncyBlbXB0eS5cblx0aWYgKGJhc2ljTGVuZ3RoKSB7XG5cdFx0b3V0cHV0LnB1c2goZGVsaW1pdGVyKTtcblx0fVxuXG5cdC8vIE1haW4gZW5jb2RpbmcgbG9vcDpcblx0d2hpbGUgKGhhbmRsZWRDUENvdW50IDwgaW5wdXRMZW5ndGgpIHtcblxuXHRcdC8vIEFsbCBub24tYmFzaWMgY29kZSBwb2ludHMgPCBuIGhhdmUgYmVlbiBoYW5kbGVkIGFscmVhZHkuIEZpbmQgdGhlIG5leHRcblx0XHQvLyBsYXJnZXIgb25lOlxuXHRcdGxldCBtID0gbWF4SW50O1xuXHRcdGZvciAoY29uc3QgY3VycmVudFZhbHVlIG9mIGlucHV0KSB7XG5cdFx0XHRpZiAoY3VycmVudFZhbHVlID49IG4gJiYgY3VycmVudFZhbHVlIDwgbSkge1xuXHRcdFx0XHRtID0gY3VycmVudFZhbHVlO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdC8vIEluY3JlYXNlIGBkZWx0YWAgZW5vdWdoIHRvIGFkdmFuY2UgdGhlIGRlY29kZXIncyA8bixpPiBzdGF0ZSB0byA8bSwwPixcblx0XHQvLyBidXQgZ3VhcmQgYWdhaW5zdCBvdmVyZmxvdy5cblx0XHRjb25zdCBoYW5kbGVkQ1BDb3VudFBsdXNPbmUgPSBoYW5kbGVkQ1BDb3VudCArIDE7XG5cdFx0aWYgKG0gLSBuID4gZmxvb3IoKG1heEludCAtIGRlbHRhKSAvIGhhbmRsZWRDUENvdW50UGx1c09uZSkpIHtcblx0XHRcdGVycm9yKCdvdmVyZmxvdycpO1xuXHRcdH1cblxuXHRcdGRlbHRhICs9IChtIC0gbikgKiBoYW5kbGVkQ1BDb3VudFBsdXNPbmU7XG5cdFx0biA9IG07XG5cblx0XHRmb3IgKGNvbnN0IGN1cnJlbnRWYWx1ZSBvZiBpbnB1dCkge1xuXHRcdFx0aWYgKGN1cnJlbnRWYWx1ZSA8IG4gJiYgKytkZWx0YSA+IG1heEludCkge1xuXHRcdFx0XHRlcnJvcignb3ZlcmZsb3cnKTtcblx0XHRcdH1cblx0XHRcdGlmIChjdXJyZW50VmFsdWUgPT09IG4pIHtcblx0XHRcdFx0Ly8gUmVwcmVzZW50IGRlbHRhIGFzIGEgZ2VuZXJhbGl6ZWQgdmFyaWFibGUtbGVuZ3RoIGludGVnZXIuXG5cdFx0XHRcdGxldCBxID0gZGVsdGE7XG5cdFx0XHRcdGZvciAobGV0IGsgPSBiYXNlOyAvKiBubyBjb25kaXRpb24gKi87IGsgKz0gYmFzZSkge1xuXHRcdFx0XHRcdGNvbnN0IHQgPSBrIDw9IGJpYXMgPyB0TWluIDogKGsgPj0gYmlhcyArIHRNYXggPyB0TWF4IDogayAtIGJpYXMpO1xuXHRcdFx0XHRcdGlmIChxIDwgdCkge1xuXHRcdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IHFNaW51c1QgPSBxIC0gdDtcblx0XHRcdFx0XHRjb25zdCBiYXNlTWludXNUID0gYmFzZSAtIHQ7XG5cdFx0XHRcdFx0b3V0cHV0LnB1c2goXG5cdFx0XHRcdFx0XHRzdHJpbmdGcm9tQ2hhckNvZGUoZGlnaXRUb0Jhc2ljKHQgKyBxTWludXNUICUgYmFzZU1pbnVzVCwgMCkpXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRxID0gZmxvb3IocU1pbnVzVCAvIGJhc2VNaW51c1QpO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0b3V0cHV0LnB1c2goc3RyaW5nRnJvbUNoYXJDb2RlKGRpZ2l0VG9CYXNpYyhxLCAwKSkpO1xuXHRcdFx0XHRiaWFzID0gYWRhcHQoZGVsdGEsIGhhbmRsZWRDUENvdW50UGx1c09uZSwgaGFuZGxlZENQQ291bnQgPT09IGJhc2ljTGVuZ3RoKTtcblx0XHRcdFx0ZGVsdGEgPSAwO1xuXHRcdFx0XHQrK2hhbmRsZWRDUENvdW50O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdCsrZGVsdGE7XG5cdFx0KytuO1xuXG5cdH1cblx0cmV0dXJuIG91dHB1dC5qb2luKCcnKTtcbn07XG5cbi8qKlxuICogQ29udmVydHMgYSBQdW55Y29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzc1xuICogdG8gVW5pY29kZS4gT25seSB0aGUgUHVueWNvZGVkIHBhcnRzIG9mIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCwgaS5lLlxuICogaXQgZG9lc24ndCBtYXR0ZXIgaWYgeW91IGNhbGwgaXQgb24gYSBzdHJpbmcgdGhhdCBoYXMgYWxyZWFkeSBiZWVuXG4gKiBjb252ZXJ0ZWQgdG8gVW5pY29kZS5cbiAqIEBtZW1iZXJPZiBwdW55Y29kZVxuICogQHBhcmFtIHtTdHJpbmd9IGlucHV0IFRoZSBQdW55Y29kZWQgZG9tYWluIG5hbWUgb3IgZW1haWwgYWRkcmVzcyB0b1xuICogY29udmVydCB0byBVbmljb2RlLlxuICogQHJldHVybnMge1N0cmluZ30gVGhlIFVuaWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIFB1bnljb2RlXG4gKiBzdHJpbmcuXG4gKi9cbmNvbnN0IHRvVW5pY29kZSA9IGZ1bmN0aW9uKGlucHV0KSB7XG5cdHJldHVybiBtYXBEb21haW4oaW5wdXQsIGZ1bmN0aW9uKHN0cmluZykge1xuXHRcdHJldHVybiByZWdleFB1bnljb2RlLnRlc3Qoc3RyaW5nKVxuXHRcdFx0PyBkZWNvZGUoc3RyaW5nLnNsaWNlKDQpLnRvTG93ZXJDYXNlKCkpXG5cdFx0XHQ6IHN0cmluZztcblx0fSk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGEgVW5pY29kZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZG9tYWluIG5hbWUgb3IgYW4gZW1haWwgYWRkcmVzcyB0b1xuICogUHVueWNvZGUuIE9ubHkgdGhlIG5vbi1BU0NJSSBwYXJ0cyBvZiB0aGUgZG9tYWluIG5hbWUgd2lsbCBiZSBjb252ZXJ0ZWQsXG4gKiBpLmUuIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHlvdSBjYWxsIGl0IHdpdGggYSBkb21haW4gdGhhdCdzIGFscmVhZHkgaW5cbiAqIEFTQ0lJLlxuICogQG1lbWJlck9mIHB1bnljb2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gaW5wdXQgVGhlIGRvbWFpbiBuYW1lIG9yIGVtYWlsIGFkZHJlc3MgdG8gY29udmVydCwgYXMgYVxuICogVW5pY29kZSBzdHJpbmcuXG4gKiBAcmV0dXJucyB7U3RyaW5nfSBUaGUgUHVueWNvZGUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvbWFpbiBuYW1lIG9yXG4gKiBlbWFpbCBhZGRyZXNzLlxuICovXG5jb25zdCB0b0FTQ0lJID0gZnVuY3Rpb24oaW5wdXQpIHtcblx0cmV0dXJuIG1hcERvbWFpbihpbnB1dCwgZnVuY3Rpb24oc3RyaW5nKSB7XG5cdFx0cmV0dXJuIHJlZ2V4Tm9uQVNDSUkudGVzdChzdHJpbmcpXG5cdFx0XHQ/ICd4bi0tJyArIGVuY29kZShzdHJpbmcpXG5cdFx0XHQ6IHN0cmluZztcblx0fSk7XG59O1xuXG4vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuLyoqIERlZmluZSB0aGUgcHVibGljIEFQSSAqL1xuY29uc3QgcHVueWNvZGUgPSB7XG5cdC8qKlxuXHQgKiBBIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGN1cnJlbnQgUHVueWNvZGUuanMgdmVyc2lvbiBudW1iZXIuXG5cdCAqIEBtZW1iZXJPZiBwdW55Y29kZVxuXHQgKiBAdHlwZSBTdHJpbmdcblx0ICovXG5cdCd2ZXJzaW9uJzogJzIuMy4xJyxcblx0LyoqXG5cdCAqIEFuIG9iamVjdCBvZiBtZXRob2RzIHRvIGNvbnZlcnQgZnJvbSBKYXZhU2NyaXB0J3MgaW50ZXJuYWwgY2hhcmFjdGVyXG5cdCAqIHJlcHJlc2VudGF0aW9uIChVQ1MtMikgdG8gVW5pY29kZSBjb2RlIHBvaW50cywgYW5kIGJhY2suXG5cdCAqIEBzZWUgPGh0dHBzOi8vbWF0aGlhc2J5bmVucy5iZS9ub3Rlcy9qYXZhc2NyaXB0LWVuY29kaW5nPlxuXHQgKiBAbWVtYmVyT2YgcHVueWNvZGVcblx0ICogQHR5cGUgT2JqZWN0XG5cdCAqL1xuXHQndWNzMic6IHtcblx0XHQnZGVjb2RlJzogdWNzMmRlY29kZSxcblx0XHQnZW5jb2RlJzogdWNzMmVuY29kZVxuXHR9LFxuXHQnZGVjb2RlJzogZGVjb2RlLFxuXHQnZW5jb2RlJzogZW5jb2RlLFxuXHQndG9BU0NJSSc6IHRvQVNDSUksXG5cdCd0b1VuaWNvZGUnOiB0b1VuaWNvZGVcbn07XG5cbmV4cG9ydCB7IHVjczJkZWNvZGUsIHVjczJlbmNvZGUsIGRlY29kZSwgZW5jb2RlLCB0b0FTQ0lJLCB0b1VuaWNvZGUgfTtcbmV4cG9ydCBkZWZhdWx0IHB1bnljb2RlO1xuIiwgIi8vIG1hcmtkb3duLWl0IGRlZmF1bHQgb3B0aW9uc1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG9wdGlvbnM6IHtcbiAgICAvLyBFbmFibGUgSFRNTCB0YWdzIGluIHNvdXJjZVxuICAgIGh0bWw6IGZhbHNlLFxuXG4gICAgLy8gVXNlICcvJyB0byBjbG9zZSBzaW5nbGUgdGFncyAoPGJyIC8+KVxuICAgIHhodG1sT3V0OiBmYWxzZSxcblxuICAgIC8vIENvbnZlcnQgJ1xcbicgaW4gcGFyYWdyYXBocyBpbnRvIDxicj5cbiAgICBicmVha3M6IGZhbHNlLFxuXG4gICAgLy8gQ1NTIGxhbmd1YWdlIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrc1xuICAgIGxhbmdQcmVmaXg6ICdsYW5ndWFnZS0nLFxuXG4gICAgLy8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dHMgdG8gbGlua3NcbiAgICBsaW5raWZ5OiBmYWxzZSxcblxuICAgIC8vIEVuYWJsZSBzb21lIGxhbmd1YWdlLW5ldXRyYWwgcmVwbGFjZW1lbnRzICsgcXVvdGVzIGJlYXV0aWZpY2F0aW9uXG4gICAgdHlwb2dyYXBoZXI6IGZhbHNlLFxuXG4gICAgLy8gRG91YmxlICsgc2luZ2xlIHF1b3RlcyByZXBsYWNlbWVudCBwYWlycywgd2hlbiB0eXBvZ3JhcGhlciBlbmFibGVkLFxuICAgIC8vIGFuZCBzbWFydHF1b3RlcyBvbi4gQ291bGQgYmUgZWl0aGVyIGEgU3RyaW5nIG9yIGFuIEFycmF5LlxuICAgIC8vXG4gICAgLy8gRm9yIGV4YW1wbGUsIHlvdSBjYW4gdXNlICdcdTAwQUJcdTAwQkJcdTIwMUVcdTIwMUMnIGZvciBSdXNzaWFuLCAnXHUyMDFFXHUyMDFDXHUyMDFBXHUyMDE4JyBmb3IgR2VybWFuLFxuICAgIC8vIGFuZCBbJ1x1MDBBQlxceEEwJywgJ1xceEEwXHUwMEJCJywgJ1x1MjAzOVxceEEwJywgJ1xceEEwXHUyMDNBJ10gZm9yIEZyZW5jaCAoaW5jbHVkaW5nIG5ic3ApLlxuICAgIHF1b3RlczogJ1xcdTIwMWNcXHUyMDFkXFx1MjAxOFxcdTIwMTknLCAvKiBcdTIwMUNcdTIwMURcdTIwMThcdTIwMTkgKi9cblxuICAgIC8vIEhpZ2hsaWdodGVyIGZ1bmN0aW9uLiBTaG91bGQgcmV0dXJuIGVzY2FwZWQgSFRNTCxcbiAgICAvLyBvciAnJyBpZiB0aGUgc291cmNlIHN0cmluZyBpcyBub3QgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGVzY2FwZWQgZXh0ZXJuYWx5LlxuICAgIC8vIElmIHJlc3VsdCBzdGFydHMgd2l0aCA8cHJlLi4uIGludGVybmFsIHdyYXBwZXIgaXMgc2tpcHBlZC5cbiAgICAvL1xuICAgIC8vIGZ1bmN0aW9uICgvKnN0ciwgbGFuZyovKSB7IHJldHVybiAnJzsgfVxuICAgIC8vXG4gICAgaGlnaGxpZ2h0OiBudWxsLFxuXG4gICAgLy8gSW50ZXJuYWwgcHJvdGVjdGlvbiwgcmVjdXJzaW9uIGxpbWl0XG4gICAgbWF4TmVzdGluZzogMTAwXG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuICAgIGNvcmU6IHt9LFxuICAgIGJsb2NrOiB7fSxcbiAgICBpbmxpbmU6IHt9XG4gIH1cbn1cbiIsICIvLyBcIlplcm9cIiBwcmVzZXQsIHdpdGggbm90aGluZyBlbmFibGVkLiBVc2VmdWwgZm9yIG1hbnVhbCBjb25maWd1cmluZyBvZiBzaW1wbGVcbi8vIG1vZGVzLiBGb3IgZXhhbXBsZSwgdG8gcGFyc2UgYm9sZC9pdGFsaWMgb25seS5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBvcHRpb25zOiB7XG4gICAgLy8gRW5hYmxlIEhUTUwgdGFncyBpbiBzb3VyY2VcbiAgICBodG1sOiBmYWxzZSxcblxuICAgIC8vIFVzZSAnLycgdG8gY2xvc2Ugc2luZ2xlIHRhZ3MgKDxiciAvPilcbiAgICB4aHRtbE91dDogZmFsc2UsXG5cbiAgICAvLyBDb252ZXJ0ICdcXG4nIGluIHBhcmFncmFwaHMgaW50byA8YnI+XG4gICAgYnJlYWtzOiBmYWxzZSxcblxuICAgIC8vIENTUyBsYW5ndWFnZSBwcmVmaXggZm9yIGZlbmNlZCBibG9ja3NcbiAgICBsYW5nUHJlZml4OiAnbGFuZ3VhZ2UtJyxcblxuICAgIC8vIGF1dG9jb252ZXJ0IFVSTC1saWtlIHRleHRzIHRvIGxpbmtzXG4gICAgbGlua2lmeTogZmFsc2UsXG5cbiAgICAvLyBFbmFibGUgc29tZSBsYW5ndWFnZS1uZXV0cmFsIHJlcGxhY2VtZW50cyArIHF1b3RlcyBiZWF1dGlmaWNhdGlvblxuICAgIHR5cG9ncmFwaGVyOiBmYWxzZSxcblxuICAgIC8vIERvdWJsZSArIHNpbmdsZSBxdW90ZXMgcmVwbGFjZW1lbnQgcGFpcnMsIHdoZW4gdHlwb2dyYXBoZXIgZW5hYmxlZCxcbiAgICAvLyBhbmQgc21hcnRxdW90ZXMgb24uIENvdWxkIGJlIGVpdGhlciBhIFN0cmluZyBvciBhbiBBcnJheS5cbiAgICAvL1xuICAgIC8vIEZvciBleGFtcGxlLCB5b3UgY2FuIHVzZSAnXHUwMEFCXHUwMEJCXHUyMDFFXHUyMDFDJyBmb3IgUnVzc2lhbiwgJ1x1MjAxRVx1MjAxQ1x1MjAxQVx1MjAxOCcgZm9yIEdlcm1hbixcbiAgICAvLyBhbmQgWydcdTAwQUJcXHhBMCcsICdcXHhBMFx1MDBCQicsICdcdTIwMzlcXHhBMCcsICdcXHhBMFx1MjAzQSddIGZvciBGcmVuY2ggKGluY2x1ZGluZyBuYnNwKS5cbiAgICBxdW90ZXM6ICdcXHUyMDFjXFx1MjAxZFxcdTIwMThcXHUyMDE5JywgLyogXHUyMDFDXHUyMDFEXHUyMDE4XHUyMDE5ICovXG5cbiAgICAvLyBIaWdobGlnaHRlciBmdW5jdGlvbi4gU2hvdWxkIHJldHVybiBlc2NhcGVkIEhUTUwsXG4gICAgLy8gb3IgJycgaWYgdGhlIHNvdXJjZSBzdHJpbmcgaXMgbm90IGNoYW5nZWQgYW5kIHNob3VsZCBiZSBlc2NhcGVkIGV4dGVybmFseS5cbiAgICAvLyBJZiByZXN1bHQgc3RhcnRzIHdpdGggPHByZS4uLiBpbnRlcm5hbCB3cmFwcGVyIGlzIHNraXBwZWQuXG4gICAgLy9cbiAgICAvLyBmdW5jdGlvbiAoLypzdHIsIGxhbmcqLykgeyByZXR1cm4gJyc7IH1cbiAgICAvL1xuICAgIGhpZ2hsaWdodDogbnVsbCxcblxuICAgIC8vIEludGVybmFsIHByb3RlY3Rpb24sIHJlY3Vyc2lvbiBsaW1pdFxuICAgIG1heE5lc3Rpbmc6IDIwXG4gIH0sXG5cbiAgY29tcG9uZW50czoge1xuXG4gICAgY29yZToge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ25vcm1hbGl6ZScsXG4gICAgICAgICdibG9jaycsXG4gICAgICAgICdpbmxpbmUnLFxuICAgICAgICAndGV4dF9qb2luJ1xuICAgICAgXVxuICAgIH0sXG5cbiAgICBibG9jazoge1xuICAgICAgcnVsZXM6IFtcbiAgICAgICAgJ3BhcmFncmFwaCdcbiAgICAgIF1cbiAgICB9LFxuXG4gICAgaW5saW5lOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICAndGV4dCdcbiAgICAgIF0sXG4gICAgICBydWxlczI6IFtcbiAgICAgICAgJ2JhbGFuY2VfcGFpcnMnLFxuICAgICAgICAnZnJhZ21lbnRzX2pvaW4nXG4gICAgICBdXG4gICAgfVxuICB9XG59XG4iLCAiLy8gQ29tbW9ubWFyayBkZWZhdWx0IG9wdGlvbnNcblxuZXhwb3J0IGRlZmF1bHQge1xuICBvcHRpb25zOiB7XG4gICAgLy8gRW5hYmxlIEhUTUwgdGFncyBpbiBzb3VyY2VcbiAgICBodG1sOiB0cnVlLFxuXG4gICAgLy8gVXNlICcvJyB0byBjbG9zZSBzaW5nbGUgdGFncyAoPGJyIC8+KVxuICAgIHhodG1sT3V0OiB0cnVlLFxuXG4gICAgLy8gQ29udmVydCAnXFxuJyBpbiBwYXJhZ3JhcGhzIGludG8gPGJyPlxuICAgIGJyZWFrczogZmFsc2UsXG5cbiAgICAvLyBDU1MgbGFuZ3VhZ2UgcHJlZml4IGZvciBmZW5jZWQgYmxvY2tzXG4gICAgbGFuZ1ByZWZpeDogJ2xhbmd1YWdlLScsXG5cbiAgICAvLyBhdXRvY29udmVydCBVUkwtbGlrZSB0ZXh0cyB0byBsaW5rc1xuICAgIGxpbmtpZnk6IGZhbHNlLFxuXG4gICAgLy8gRW5hYmxlIHNvbWUgbGFuZ3VhZ2UtbmV1dHJhbCByZXBsYWNlbWVudHMgKyBxdW90ZXMgYmVhdXRpZmljYXRpb25cbiAgICB0eXBvZ3JhcGhlcjogZmFsc2UsXG5cbiAgICAvLyBEb3VibGUgKyBzaW5nbGUgcXVvdGVzIHJlcGxhY2VtZW50IHBhaXJzLCB3aGVuIHR5cG9ncmFwaGVyIGVuYWJsZWQsXG4gICAgLy8gYW5kIHNtYXJ0cXVvdGVzIG9uLiBDb3VsZCBiZSBlaXRoZXIgYSBTdHJpbmcgb3IgYW4gQXJyYXkuXG4gICAgLy9cbiAgICAvLyBGb3IgZXhhbXBsZSwgeW91IGNhbiB1c2UgJ1x1MDBBQlx1MDBCQlx1MjAxRVx1MjAxQycgZm9yIFJ1c3NpYW4sICdcdTIwMUVcdTIwMUNcdTIwMUFcdTIwMTgnIGZvciBHZXJtYW4sXG4gICAgLy8gYW5kIFsnXHUwMEFCXFx4QTAnLCAnXFx4QTBcdTAwQkInLCAnXHUyMDM5XFx4QTAnLCAnXFx4QTBcdTIwM0EnXSBmb3IgRnJlbmNoIChpbmNsdWRpbmcgbmJzcCkuXG4gICAgcXVvdGVzOiAnXFx1MjAxY1xcdTIwMWRcXHUyMDE4XFx1MjAxOScsIC8qIFx1MjAxQ1x1MjAxRFx1MjAxOFx1MjAxOSAqL1xuXG4gICAgLy8gSGlnaGxpZ2h0ZXIgZnVuY3Rpb24uIFNob3VsZCByZXR1cm4gZXNjYXBlZCBIVE1MLFxuICAgIC8vIG9yICcnIGlmIHRoZSBzb3VyY2Ugc3RyaW5nIGlzIG5vdCBjaGFuZ2VkIGFuZCBzaG91bGQgYmUgZXNjYXBlZCBleHRlcm5hbHkuXG4gICAgLy8gSWYgcmVzdWx0IHN0YXJ0cyB3aXRoIDxwcmUuLi4gaW50ZXJuYWwgd3JhcHBlciBpcyBza2lwcGVkLlxuICAgIC8vXG4gICAgLy8gZnVuY3Rpb24gKC8qc3RyLCBsYW5nKi8pIHsgcmV0dXJuICcnOyB9XG4gICAgLy9cbiAgICBoaWdobGlnaHQ6IG51bGwsXG5cbiAgICAvLyBJbnRlcm5hbCBwcm90ZWN0aW9uLCByZWN1cnNpb24gbGltaXRcbiAgICBtYXhOZXN0aW5nOiAyMFxuICB9LFxuXG4gIGNvbXBvbmVudHM6IHtcblxuICAgIGNvcmU6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgICdub3JtYWxpemUnLFxuICAgICAgICAnYmxvY2snLFxuICAgICAgICAnaW5saW5lJyxcbiAgICAgICAgJ3RleHRfam9pbidcbiAgICAgIF1cbiAgICB9LFxuXG4gICAgYmxvY2s6IHtcbiAgICAgIHJ1bGVzOiBbXG4gICAgICAgICdibG9ja3F1b3RlJyxcbiAgICAgICAgJ2NvZGUnLFxuICAgICAgICAnZmVuY2UnLFxuICAgICAgICAnaGVhZGluZycsXG4gICAgICAgICdocicsXG4gICAgICAgICdodG1sX2Jsb2NrJyxcbiAgICAgICAgJ2xoZWFkaW5nJyxcbiAgICAgICAgJ2xpc3QnLFxuICAgICAgICAncmVmZXJlbmNlJyxcbiAgICAgICAgJ3BhcmFncmFwaCdcbiAgICAgIF1cbiAgICB9LFxuXG4gICAgaW5saW5lOiB7XG4gICAgICBydWxlczogW1xuICAgICAgICAnYXV0b2xpbmsnLFxuICAgICAgICAnYmFja3RpY2tzJyxcbiAgICAgICAgJ2VtcGhhc2lzJyxcbiAgICAgICAgJ2VudGl0eScsXG4gICAgICAgICdlc2NhcGUnLFxuICAgICAgICAnaHRtbF9pbmxpbmUnLFxuICAgICAgICAnaW1hZ2UnLFxuICAgICAgICAnbGluaycsXG4gICAgICAgICduZXdsaW5lJyxcbiAgICAgICAgJ3RleHQnXG4gICAgICBdLFxuICAgICAgcnVsZXMyOiBbXG4gICAgICAgICdiYWxhbmNlX3BhaXJzJyxcbiAgICAgICAgJ2VtcGhhc2lzJyxcbiAgICAgICAgJ2ZyYWdtZW50c19qb2luJ1xuICAgICAgXVxuICAgIH1cbiAgfVxufVxuIiwgIi8vIE1haW4gcGFyc2VyIGNsYXNzXG5cbmltcG9ydCAqIGFzIHV0aWxzIGZyb20gJy4vY29tbW9uL3V0aWxzLm1qcydcbmltcG9ydCAqIGFzIGhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzL2luZGV4Lm1qcydcbmltcG9ydCBSZW5kZXJlciBmcm9tICcuL3JlbmRlcmVyLm1qcydcbmltcG9ydCBQYXJzZXJDb3JlIGZyb20gJy4vcGFyc2VyX2NvcmUubWpzJ1xuaW1wb3J0IFBhcnNlckJsb2NrIGZyb20gJy4vcGFyc2VyX2Jsb2NrLm1qcydcbmltcG9ydCBQYXJzZXJJbmxpbmUgZnJvbSAnLi9wYXJzZXJfaW5saW5lLm1qcydcbmltcG9ydCBMaW5raWZ5SXQgZnJvbSAnbGlua2lmeS1pdCdcbmltcG9ydCAqIGFzIG1kdXJsIGZyb20gJ21kdXJsJ1xuaW1wb3J0IHB1bnljb2RlIGZyb20gJ3B1bnljb2RlLmpzJ1xuXG5pbXBvcnQgY2ZnX2RlZmF1bHQgZnJvbSAnLi9wcmVzZXRzL2RlZmF1bHQubWpzJ1xuaW1wb3J0IGNmZ196ZXJvIGZyb20gJy4vcHJlc2V0cy96ZXJvLm1qcydcbmltcG9ydCBjZmdfY29tbW9ubWFyayBmcm9tICcuL3ByZXNldHMvY29tbW9ubWFyay5tanMnXG5cbmNvbnN0IGNvbmZpZyA9IHtcbiAgZGVmYXVsdDogY2ZnX2RlZmF1bHQsXG4gIHplcm86IGNmZ196ZXJvLFxuICBjb21tb25tYXJrOiBjZmdfY29tbW9ubWFya1xufVxuXG4vL1xuLy8gVGhpcyB2YWxpZGF0b3IgY2FuIHByb2hpYml0IG1vcmUgdGhhbiByZWFsbHkgbmVlZGVkIHRvIHByZXZlbnQgWFNTLiBJdCdzIGFcbi8vIHRyYWRlb2ZmIHRvIGtlZXAgY29kZSBzaW1wbGUgYW5kIHRvIGJlIHNlY3VyZSBieSBkZWZhdWx0LlxuLy9cbi8vIElmIHlvdSBuZWVkIGRpZmZlcmVudCBzZXR1cCAtIG92ZXJyaWRlIHZhbGlkYXRvciBtZXRob2QgYXMgeW91IHdpc2guIE9yXG4vLyByZXBsYWNlIGl0IHdpdGggZHVtbXkgZnVuY3Rpb24gYW5kIHVzZSBleHRlcm5hbCBzYW5pdGl6ZXIuXG4vL1xuXG5jb25zdCBCQURfUFJPVE9fUkUgPSAvXih2YnNjcmlwdHxqYXZhc2NyaXB0fGZpbGV8ZGF0YSk6L1xuY29uc3QgR09PRF9EQVRBX1JFID0gL15kYXRhOmltYWdlXFwvKGdpZnxwbmd8anBlZ3x3ZWJwKTsvXG5cbmZ1bmN0aW9uIHZhbGlkYXRlTGluayAodXJsKSB7XG4gIC8vIHVybCBzaG91bGQgYmUgbm9ybWFsaXplZCBhdCB0aGlzIHBvaW50LCBhbmQgZXhpc3RpbmcgZW50aXRpZXMgYXJlIGRlY29kZWRcbiAgY29uc3Qgc3RyID0gdXJsLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG5cbiAgcmV0dXJuIEJBRF9QUk9UT19SRS50ZXN0KHN0cikgPyBHT09EX0RBVEFfUkUudGVzdChzdHIpIDogdHJ1ZVxufVxuXG5jb25zdCBSRUNPREVfSE9TVE5BTUVfRk9SID0gWydodHRwOicsICdodHRwczonLCAnbWFpbHRvOiddXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmsgKHVybCkge1xuICBjb25zdCBwYXJzZWQgPSBtZHVybC5wYXJzZSh1cmwsIHRydWUpXG5cbiAgaWYgKHBhcnNlZC5ob3N0bmFtZSkge1xuICAgIC8vIEVuY29kZSBob3N0bmFtZXMgaW4gdXJscyBsaWtlOlxuICAgIC8vIGBodHRwOi8vaG9zdC9gLCBgaHR0cHM6Ly9ob3N0L2AsIGBtYWlsdG86dXNlckBob3N0YCwgYC8vaG9zdC9gXG4gICAgLy9cbiAgICAvLyBXZSBkb24ndCBlbmNvZGUgdW5rbm93biBzY2hlbWFzLCBiZWNhdXNlIGl0J3MgbGlrZWx5IHRoYXQgd2UgZW5jb2RlXG4gICAgLy8gc29tZXRoaW5nIHdlIHNob3VsZG4ndCAoZS5nLiBgc2t5cGU6bmFtZWAgdHJlYXRlZCBhcyBgc2t5cGU6aG9zdGApXG4gICAgLy9cbiAgICBpZiAoIXBhcnNlZC5wcm90b2NvbCB8fCBSRUNPREVfSE9TVE5BTUVfRk9SLmluZGV4T2YocGFyc2VkLnByb3RvY29sKSA+PSAwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBwYXJzZWQuaG9zdG5hbWUgPSBwdW55Y29kZS50b0FTQ0lJKHBhcnNlZC5ob3N0bmFtZSlcbiAgICAgIH0gY2F0Y2ggKGVyKSB7IC8qKi8gfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtZHVybC5lbmNvZGUobWR1cmwuZm9ybWF0KHBhcnNlZCkpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmtUZXh0ICh1cmwpIHtcbiAgY29uc3QgcGFyc2VkID0gbWR1cmwucGFyc2UodXJsLCB0cnVlKVxuXG4gIGlmIChwYXJzZWQuaG9zdG5hbWUpIHtcbiAgICAvLyBFbmNvZGUgaG9zdG5hbWVzIGluIHVybHMgbGlrZTpcbiAgICAvLyBgaHR0cDovL2hvc3QvYCwgYGh0dHBzOi8vaG9zdC9gLCBgbWFpbHRvOnVzZXJAaG9zdGAsIGAvL2hvc3QvYFxuICAgIC8vXG4gICAgLy8gV2UgZG9uJ3QgZW5jb2RlIHVua25vd24gc2NoZW1hcywgYmVjYXVzZSBpdCdzIGxpa2VseSB0aGF0IHdlIGVuY29kZVxuICAgIC8vIHNvbWV0aGluZyB3ZSBzaG91bGRuJ3QgKGUuZy4gYHNreXBlOm5hbWVgIHRyZWF0ZWQgYXMgYHNreXBlOmhvc3RgKVxuICAgIC8vXG4gICAgaWYgKCFwYXJzZWQucHJvdG9jb2wgfHwgUkVDT0RFX0hPU1ROQU1FX0ZPUi5pbmRleE9mKHBhcnNlZC5wcm90b2NvbCkgPj0gMCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcGFyc2VkLmhvc3RuYW1lID0gcHVueWNvZGUudG9Vbmljb2RlKHBhcnNlZC5ob3N0bmFtZSlcbiAgICAgIH0gY2F0Y2ggKGVyKSB7IC8qKi8gfVxuICAgIH1cbiAgfVxuXG4gIC8vIGFkZCAnJScgdG8gZXhjbHVkZSBsaXN0IGJlY2F1c2Ugb2YgaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2lzc3Vlcy83MjBcbiAgcmV0dXJuIG1kdXJsLmRlY29kZShtZHVybC5mb3JtYXQocGFyc2VkKSwgbWR1cmwuZGVjb2RlLmRlZmF1bHRDaGFycyArICclJylcbn1cblxuLyoqXG4gKiBjbGFzcyBNYXJrZG93bkl0XG4gKlxuICogTWFpbiBwYXJzZXIvcmVuZGVyZXIgY2xhc3MuXG4gKlxuICogIyMjIyMgVXNhZ2VcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiAvLyBub2RlLmpzLCBcImNsYXNzaWNcIiB3YXk6XG4gKiB2YXIgTWFya2Rvd25JdCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0JyksXG4gKiAgICAgbWQgPSBuZXcgTWFya2Rvd25JdCgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKlxuICogLy8gbm9kZS5qcywgdGhlIHNhbWUsIGJ1dCB3aXRoIHN1Z2FyOlxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKlxuICogLy8gYnJvd3NlciB3aXRob3V0IEFNRCwgYWRkZWQgdG8gXCJ3aW5kb3dcIiBvbiBzY3JpcHQgbG9hZFxuICogLy8gTm90ZSwgdGhlcmUgYXJlIG5vIGRhc2guXG4gKiB2YXIgbWQgPSB3aW5kb3cubWFya2Rvd25pdCgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcignIyBtYXJrZG93bi1pdCBydWxlenohJyk7XG4gKiBgYGBcbiAqXG4gKiBTaW5nbGUgbGluZSByZW5kZXJpbmcsIHdpdGhvdXQgcGFyYWdyYXBoIHdyYXA6XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICogdmFyIHJlc3VsdCA9IG1kLnJlbmRlcklubGluZSgnX19tYXJrZG93bi1pdF9fIHJ1bGV6eiEnKTtcbiAqIGBgYFxuICoqL1xuXG4vKipcbiAqIG5ldyBNYXJrZG93bkl0KFtwcmVzZXROYW1lLCBvcHRpb25zXSlcbiAqIC0gcHJlc2V0TmFtZSAoU3RyaW5nKTogb3B0aW9uYWwsIGBjb21tb25tYXJrYCAvIGB6ZXJvYFxuICogLSBvcHRpb25zIChPYmplY3QpXG4gKlxuICogQ3JlYXRlcyBwYXJzZXIgaW5zdGFuc2Ugd2l0aCBnaXZlbiBjb25maWcuIENhbiBiZSBjYWxsZWQgd2l0aG91dCBgbmV3YC5cbiAqXG4gKiAjIyMjIyBwcmVzZXROYW1lXG4gKlxuICogTWFya2Rvd25JdCBwcm92aWRlcyBuYW1lZCBwcmVzZXRzIGFzIGEgY29udmVuaWVuY2UgdG8gcXVpY2tseVxuICogZW5hYmxlL2Rpc2FibGUgYWN0aXZlIHN5bnRheCBydWxlcyBhbmQgb3B0aW9ucyBmb3IgY29tbW9uIHVzZSBjYXNlcy5cbiAqXG4gKiAtIFtcImNvbW1vbm1hcmtcIl0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L2Jsb2IvbWFzdGVyL2xpYi9wcmVzZXRzL2NvbW1vbm1hcmsubWpzKSAtXG4gKiAgIGNvbmZpZ3VyZXMgcGFyc2VyIHRvIHN0cmljdCBbQ29tbW9uTWFya10oaHR0cDovL2NvbW1vbm1hcmsub3JnLykgbW9kZS5cbiAqIC0gW2RlZmF1bHRdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcHJlc2V0cy9kZWZhdWx0Lm1qcykgLVxuICogICBzaW1pbGFyIHRvIEdGTSwgdXNlZCB3aGVuIG5vIHByZXNldCBuYW1lIGdpdmVuLiBFbmFibGVzIGFsbCBhdmFpbGFibGUgcnVsZXMsXG4gKiAgIGJ1dCBzdGlsbCB3aXRob3V0IGh0bWwsIHR5cG9ncmFwaGVyICYgYXV0b2xpbmtlci5cbiAqIC0gW1wiemVyb1wiXShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL3ByZXNldHMvemVyby5tanMpIC1cbiAqICAgYWxsIHJ1bGVzIGRpc2FibGVkLiBVc2VmdWwgdG8gcXVpY2tseSBzZXR1cCB5b3VyIGNvbmZpZyB2aWEgYC5lbmFibGUoKWAuXG4gKiAgIEZvciBleGFtcGxlLCB3aGVuIHlvdSBuZWVkIG9ubHkgYGJvbGRgIGFuZCBgaXRhbGljYCBtYXJrdXAgYW5kIG5vdGhpbmcgZWxzZS5cbiAqXG4gKiAjIyMjIyBvcHRpb25zOlxuICpcbiAqIC0gX19odG1sX18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGVuYWJsZSBIVE1MIHRhZ3MgaW4gc291cmNlLiBCZSBjYXJlZnVsIVxuICogICBUaGF0J3Mgbm90IHNhZmUhIFlvdSBtYXkgbmVlZCBleHRlcm5hbCBzYW5pdGl6ZXIgdG8gcHJvdGVjdCBvdXRwdXQgZnJvbSBYU1MuXG4gKiAgIEl0J3MgYmV0dGVyIHRvIGV4dGVuZCBmZWF0dXJlcyB2aWEgcGx1Z2lucywgaW5zdGVhZCBvZiBlbmFibGluZyBIVE1MLlxuICogLSBfX3hodG1sT3V0X18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGFkZCAnLycgd2hlbiBjbG9zaW5nIHNpbmdsZSB0YWdzXG4gKiAgIChgPGJyIC8+YCkuIFRoaXMgaXMgbmVlZGVkIG9ubHkgZm9yIGZ1bGwgQ29tbW9uTWFyayBjb21wYXRpYmlsaXR5LiBJbiByZWFsXG4gKiAgIHdvcmxkIHlvdSB3aWxsIG5lZWQgSFRNTCBvdXRwdXQuXG4gKiAtIF9fYnJlYWtzX18gLSBgZmFsc2VgLiBTZXQgYHRydWVgIHRvIGNvbnZlcnQgYFxcbmAgaW4gcGFyYWdyYXBocyBpbnRvIGA8YnI+YC5cbiAqIC0gX19sYW5nUHJlZml4X18gLSBgbGFuZ3VhZ2UtYC4gQ1NTIGxhbmd1YWdlIGNsYXNzIHByZWZpeCBmb3IgZmVuY2VkIGJsb2Nrcy5cbiAqICAgQ2FuIGJlIHVzZWZ1bCBmb3IgZXh0ZXJuYWwgaGlnaGxpZ2h0ZXJzLlxuICogLSBfX2xpbmtpZnlfXyAtIGBmYWxzZWAuIFNldCBgdHJ1ZWAgdG8gYXV0b2NvbnZlcnQgVVJMLWxpa2UgdGV4dCB0byBsaW5rcy5cbiAqIC0gX190eXBvZ3JhcGhlcl9fICAtIGBmYWxzZWAuIFNldCBgdHJ1ZWAgdG8gZW5hYmxlIFtzb21lIGxhbmd1YWdlLW5ldXRyYWxcbiAqICAgcmVwbGFjZW1lbnRdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcnVsZXNfY29yZS9yZXBsYWNlbWVudHMubWpzKSArXG4gKiAgIHF1b3RlcyBiZWF1dGlmaWNhdGlvbiAoc21hcnRxdW90ZXMpLlxuICogLSBfX3F1b3Rlc19fIC0gYFx1MjAxQ1x1MjAxRFx1MjAxOFx1MjAxOWAsIFN0cmluZyBvciBBcnJheS4gRG91YmxlICsgc2luZ2xlIHF1b3RlcyByZXBsYWNlbWVudFxuICogICBwYWlycywgd2hlbiB0eXBvZ3JhcGhlciBlbmFibGVkIGFuZCBzbWFydHF1b3RlcyBvbi4gRm9yIGV4YW1wbGUsIHlvdSBjYW5cbiAqICAgdXNlIGAnXHUwMEFCXHUwMEJCXHUyMDFFXHUyMDFDJ2AgZm9yIFJ1c3NpYW4sIGAnXHUyMDFFXHUyMDFDXHUyMDFBXHUyMDE4J2AgZm9yIEdlcm1hbiwgYW5kXG4gKiAgIGBbJ1x1MDBBQlxceEEwJywgJ1xceEEwXHUwMEJCJywgJ1x1MjAzOVxceEEwJywgJ1xceEEwXHUyMDNBJ11gIGZvciBGcmVuY2ggKGluY2x1ZGluZyBuYnNwKS5cbiAqIC0gX19oaWdobGlnaHRfXyAtIGBudWxsYC4gSGlnaGxpZ2h0ZXIgZnVuY3Rpb24gZm9yIGZlbmNlZCBjb2RlIGJsb2Nrcy5cbiAqICAgSGlnaGxpZ2h0ZXIgYGZ1bmN0aW9uIChzdHIsIGxhbmcpYCBzaG91bGQgcmV0dXJuIGVzY2FwZWQgSFRNTC4gSXQgY2FuIGFsc29cbiAqICAgcmV0dXJuIGVtcHR5IHN0cmluZyBpZiB0aGUgc291cmNlIHdhcyBub3QgY2hhbmdlZCBhbmQgc2hvdWxkIGJlIGVzY2FwZWRcbiAqICAgZXh0ZXJuYWx5LiBJZiByZXN1bHQgc3RhcnRzIHdpdGggPHByZS4uLiBpbnRlcm5hbCB3cmFwcGVyIGlzIHNraXBwZWQuXG4gKlxuICogIyMjIyMgRXhhbXBsZVxuICpcbiAqIGBgYGphdmFzY3JpcHRcbiAqIC8vIGNvbW1vbm1hcmsgbW9kZVxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgnY29tbW9ubWFyaycpO1xuICpcbiAqIC8vIGRlZmF1bHQgbW9kZVxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICpcbiAqIC8vIGVuYWJsZSBldmVyeXRoaW5nXG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKHtcbiAqICAgaHRtbDogdHJ1ZSxcbiAqICAgbGlua2lmeTogdHJ1ZSxcbiAqICAgdHlwb2dyYXBoZXI6IHRydWVcbiAqIH0pO1xuICogYGBgXG4gKlxuICogIyMjIyMgU3ludGF4IGhpZ2hsaWdodGluZ1xuICpcbiAqIGBgYGpzXG4gKiB2YXIgaGxqcyA9IHJlcXVpcmUoJ2hpZ2hsaWdodC5qcycpIC8vIGh0dHBzOi8vaGlnaGxpZ2h0anMub3JnL1xuICpcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0Jykoe1xuICogICBoaWdobGlnaHQ6IGZ1bmN0aW9uIChzdHIsIGxhbmcpIHtcbiAqICAgICBpZiAobGFuZyAmJiBobGpzLmdldExhbmd1YWdlKGxhbmcpKSB7XG4gKiAgICAgICB0cnkge1xuICogICAgICAgICByZXR1cm4gaGxqcy5oaWdobGlnaHQoc3RyLCB7IGxhbmd1YWdlOiBsYW5nLCBpZ25vcmVJbGxlZ2FsczogdHJ1ZSB9KS52YWx1ZTtcbiAqICAgICAgIH0gY2F0Y2ggKF9fKSB7fVxuICogICAgIH1cbiAqXG4gKiAgICAgcmV0dXJuICcnOyAvLyB1c2UgZXh0ZXJuYWwgZGVmYXVsdCBlc2NhcGluZ1xuICogICB9XG4gKiB9KTtcbiAqIGBgYFxuICpcbiAqIE9yIHdpdGggZnVsbCB3cmFwcGVyIG92ZXJyaWRlIChpZiB5b3UgbmVlZCBhc3NpZ24gY2xhc3MgdG8gYDxwcmU+YCBvciBgPGNvZGU+YCk6XG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIGhsanMgPSByZXF1aXJlKCdoaWdobGlnaHQuanMnKSAvLyBodHRwczovL2hpZ2hsaWdodGpzLm9yZy9cbiAqXG4gKiAvLyBBY3R1YWwgZGVmYXVsdCB2YWx1ZXNcbiAqIHZhciBtZCA9IHJlcXVpcmUoJ21hcmtkb3duLWl0Jykoe1xuICogICBoaWdobGlnaHQ6IGZ1bmN0aW9uIChzdHIsIGxhbmcpIHtcbiAqICAgICBpZiAobGFuZyAmJiBobGpzLmdldExhbmd1YWdlKGxhbmcpKSB7XG4gKiAgICAgICB0cnkge1xuICogICAgICAgICByZXR1cm4gJzxwcmU+PGNvZGUgY2xhc3M9XCJobGpzXCI+JyArXG4gKiAgICAgICAgICAgICAgICBobGpzLmhpZ2hsaWdodChzdHIsIHsgbGFuZ3VhZ2U6IGxhbmcsIGlnbm9yZUlsbGVnYWxzOiB0cnVlIH0pLnZhbHVlICtcbiAqICAgICAgICAgICAgICAgICc8L2NvZGU+PC9wcmU+JztcbiAqICAgICAgIH0gY2F0Y2ggKF9fKSB7fVxuICogICAgIH1cbiAqXG4gKiAgICAgcmV0dXJuICc8cHJlPjxjb2RlIGNsYXNzPVwiaGxqc1wiPicgKyBtZC51dGlscy5lc2NhcGVIdG1sKHN0cikgKyAnPC9jb2RlPjwvcHJlPic7XG4gKiAgIH1cbiAqIH0pO1xuICogYGBgXG4gKlxuICoqL1xuZnVuY3Rpb24gTWFya2Rvd25JdCAocHJlc2V0TmFtZSwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgTWFya2Rvd25JdCkpIHtcbiAgICByZXR1cm4gbmV3IE1hcmtkb3duSXQocHJlc2V0TmFtZSwgb3B0aW9ucylcbiAgfVxuXG4gIGlmICghb3B0aW9ucykge1xuICAgIGlmICghdXRpbHMuaXNTdHJpbmcocHJlc2V0TmFtZSkpIHtcbiAgICAgIG9wdGlvbnMgPSBwcmVzZXROYW1lIHx8IHt9XG4gICAgICBwcmVzZXROYW1lID0gJ2RlZmF1bHQnXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjaW5saW5lIC0+IFBhcnNlcklubGluZVxuICAgKlxuICAgKiBJbnN0YW5jZSBvZiBbW1BhcnNlcklubGluZV1dLiBZb3UgbWF5IG5lZWQgaXQgdG8gYWRkIG5ldyBydWxlcyB3aGVuXG4gICAqIHdyaXRpbmcgcGx1Z2lucy4gRm9yIHNpbXBsZSBydWxlcyBjb250cm9sIHVzZSBbW01hcmtkb3duSXQuZGlzYWJsZV1dIGFuZFxuICAgKiBbW01hcmtkb3duSXQuZW5hYmxlXV0uXG4gICAqKi9cbiAgdGhpcy5pbmxpbmUgPSBuZXcgUGFyc2VySW5saW5lKClcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNibG9jayAtPiBQYXJzZXJCbG9ja1xuICAgKlxuICAgKiBJbnN0YW5jZSBvZiBbW1BhcnNlckJsb2NrXV0uIFlvdSBtYXkgbmVlZCBpdCB0byBhZGQgbmV3IHJ1bGVzIHdoZW5cbiAgICogd3JpdGluZyBwbHVnaW5zLiBGb3Igc2ltcGxlIHJ1bGVzIGNvbnRyb2wgdXNlIFtbTWFya2Rvd25JdC5kaXNhYmxlXV0gYW5kXG4gICAqIFtbTWFya2Rvd25JdC5lbmFibGVdXS5cbiAgICoqL1xuICB0aGlzLmJsb2NrID0gbmV3IFBhcnNlckJsb2NrKClcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNjb3JlIC0+IENvcmVcbiAgICpcbiAgICogSW5zdGFuY2Ugb2YgW1tDb3JlXV0gY2hhaW4gZXhlY3V0b3IuIFlvdSBtYXkgbmVlZCBpdCB0byBhZGQgbmV3IHJ1bGVzIHdoZW5cbiAgICogd3JpdGluZyBwbHVnaW5zLiBGb3Igc2ltcGxlIHJ1bGVzIGNvbnRyb2wgdXNlIFtbTWFya2Rvd25JdC5kaXNhYmxlXV0gYW5kXG4gICAqIFtbTWFya2Rvd25JdC5lbmFibGVdXS5cbiAgICoqL1xuICB0aGlzLmNvcmUgPSBuZXcgUGFyc2VyQ29yZSgpXG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjcmVuZGVyZXIgLT4gUmVuZGVyZXJcbiAgICpcbiAgICogSW5zdGFuY2Ugb2YgW1tSZW5kZXJlcl1dLiBVc2UgaXQgdG8gbW9kaWZ5IG91dHB1dCBsb29rLiBPciB0byBhZGQgcmVuZGVyaW5nXG4gICAqIHJ1bGVzIGZvciBuZXcgdG9rZW4gdHlwZXMsIGdlbmVyYXRlZCBieSBwbHVnaW5zLlxuICAgKlxuICAgKiAjIyMjIyBFeGFtcGxlXG4gICAqXG4gICAqIGBgYGphdmFzY3JpcHRcbiAgICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpO1xuICAgKlxuICAgKiBmdW5jdGlvbiBteVRva2VuKHRva2VucywgaWR4LCBvcHRpb25zLCBlbnYsIHNlbGYpIHtcbiAgICogICAvLy4uLlxuICAgKiAgIHJldHVybiByZXN1bHQ7XG4gICAqIH07XG4gICAqXG4gICAqIG1kLnJlbmRlcmVyLnJ1bGVzWydteV90b2tlbiddID0gbXlUb2tlblxuICAgKiBgYGBcbiAgICpcbiAgICogU2VlIFtbUmVuZGVyZXJdXSBkb2NzIGFuZCBbc291cmNlIGNvZGVdKGh0dHBzOi8vZ2l0aHViLmNvbS9tYXJrZG93bi1pdC9tYXJrZG93bi1pdC9ibG9iL21hc3Rlci9saWIvcmVuZGVyZXIubWpzKS5cbiAgICoqL1xuICB0aGlzLnJlbmRlcmVyID0gbmV3IFJlbmRlcmVyKClcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNsaW5raWZ5IC0+IExpbmtpZnlJdFxuICAgKlxuICAgKiBbbGlua2lmeS1pdF0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L2xpbmtpZnktaXQpIGluc3RhbmNlLlxuICAgKiBVc2VkIGJ5IFtsaW5raWZ5XShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL3J1bGVzX2NvcmUvbGlua2lmeS5tanMpXG4gICAqIHJ1bGUuXG4gICAqKi9cbiAgdGhpcy5saW5raWZ5ID0gbmV3IExpbmtpZnlJdCgpXG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjdmFsaWRhdGVMaW5rKHVybCkgLT4gQm9vbGVhblxuICAgKlxuICAgKiBMaW5rIHZhbGlkYXRpb24gZnVuY3Rpb24uIENvbW1vbk1hcmsgYWxsb3dzIHRvbyBtdWNoIGluIGxpbmtzLiBCeSBkZWZhdWx0XG4gICAqIHdlIGRpc2FibGUgYGphdmFzY3JpcHQ6YCwgYHZic2NyaXB0OmAsIGBmaWxlOmAgc2NoZW1hcywgYW5kIGFsbW9zdCBhbGwgYGRhdGE6Li4uYCBzY2hlbWFzXG4gICAqIGV4Y2VwdCBzb21lIGVtYmVkZGVkIGltYWdlIHR5cGVzLlxuICAgKlxuICAgKiBZb3UgY2FuIGNoYW5nZSB0aGlzIGJlaGF2aW91cjpcbiAgICpcbiAgICogYGBgamF2YXNjcmlwdFxuICAgKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKCk7XG4gICAqIC8vIGVuYWJsZSBldmVyeXRoaW5nXG4gICAqIG1kLnZhbGlkYXRlTGluayA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRydWU7IH1cbiAgICogYGBgXG4gICAqKi9cbiAgdGhpcy52YWxpZGF0ZUxpbmsgPSB2YWxpZGF0ZUxpbmtcblxuICAvKipcbiAgICogTWFya2Rvd25JdCNub3JtYWxpemVMaW5rKHVybCkgLT4gU3RyaW5nXG4gICAqXG4gICAqIEZ1bmN0aW9uIHVzZWQgdG8gZW5jb2RlIGxpbmsgdXJsIHRvIGEgbWFjaGluZS1yZWFkYWJsZSBmb3JtYXQsXG4gICAqIHdoaWNoIGluY2x1ZGVzIHVybC1lbmNvZGluZywgcHVueWNvZGUsIGV0Yy5cbiAgICoqL1xuICB0aGlzLm5vcm1hbGl6ZUxpbmsgPSBub3JtYWxpemVMaW5rXG5cbiAgLyoqXG4gICAqIE1hcmtkb3duSXQjbm9ybWFsaXplTGlua1RleHQodXJsKSAtPiBTdHJpbmdcbiAgICpcbiAgICogRnVuY3Rpb24gdXNlZCB0byBkZWNvZGUgbGluayB1cmwgdG8gYSBodW1hbi1yZWFkYWJsZSBmb3JtYXRgXG4gICAqKi9cbiAgdGhpcy5ub3JtYWxpemVMaW5rVGV4dCA9IG5vcm1hbGl6ZUxpbmtUZXh0XG5cbiAgLy8gRXhwb3NlIHV0aWxzICYgaGVscGVycyBmb3IgZWFzeSBhY2NlcyBmcm9tIHBsdWdpbnNcblxuICAvKipcbiAgICogTWFya2Rvd25JdCN1dGlscyAtPiB1dGlsc1xuICAgKlxuICAgKiBBc3NvcnRlZCB1dGlsaXR5IGZ1bmN0aW9ucywgdXNlZnVsIHRvIHdyaXRlIHBsdWdpbnMuIFNlZSBkZXRhaWxzXG4gICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL2NvbW1vbi91dGlscy5tanMpLlxuICAgKiovXG4gIHRoaXMudXRpbHMgPSB1dGlsc1xuXG4gIC8qKlxuICAgKiBNYXJrZG93bkl0I2hlbHBlcnMgLT4gaGVscGVyc1xuICAgKlxuICAgKiBMaW5rIGNvbXBvbmVudHMgcGFyc2VyIGZ1bmN0aW9ucywgdXNlZnVsIHRvIHdyaXRlIHBsdWdpbnMuIFNlZSBkZXRhaWxzXG4gICAqIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vbWFya2Rvd24taXQvbWFya2Rvd24taXQvYmxvYi9tYXN0ZXIvbGliL2hlbHBlcnMpLlxuICAgKiovXG4gIHRoaXMuaGVscGVycyA9IHV0aWxzLmFzc2lnbih7fSwgaGVscGVycylcblxuICB0aGlzLm9wdGlvbnMgPSB7fVxuICB0aGlzLmNvbmZpZ3VyZShwcmVzZXROYW1lKVxuXG4gIGlmIChvcHRpb25zKSB7IHRoaXMuc2V0KG9wdGlvbnMpIH1cbn1cblxuLyoqIGNoYWluYWJsZVxuICogTWFya2Rvd25JdC5zZXQob3B0aW9ucylcbiAqXG4gKiBTZXQgcGFyc2VyIG9wdGlvbnMgKGluIHRoZSBzYW1lIGZvcm1hdCBhcyBpbiBjb25zdHJ1Y3RvcikuIFByb2JhYmx5LCB5b3VcbiAqIHdpbGwgbmV2ZXIgbmVlZCBpdCwgYnV0IHlvdSBjYW4gY2hhbmdlIG9wdGlvbnMgYWZ0ZXIgY29uc3RydWN0b3IgY2FsbC5cbiAqXG4gKiAjIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpXG4gKiAgICAgICAgICAgICAuc2V0KHsgaHRtbDogdHJ1ZSwgYnJlYWtzOiB0cnVlIH0pXG4gKiAgICAgICAgICAgICAuc2V0KHsgdHlwb2dyYXBoZXIsIHRydWUgfSk7XG4gKiBgYGBcbiAqXG4gKiBfX05vdGU6X18gVG8gYWNoaWV2ZSB0aGUgYmVzdCBwb3NzaWJsZSBwZXJmb3JtYW5jZSwgZG9uJ3QgbW9kaWZ5IGFcbiAqIGBtYXJrZG93bi1pdGAgaW5zdGFuY2Ugb3B0aW9ucyBvbiB0aGUgZmx5LiBJZiB5b3UgbmVlZCBtdWx0aXBsZSBjb25maWd1cmF0aW9uc1xuICogaXQncyBiZXN0IHRvIGNyZWF0ZSBtdWx0aXBsZSBpbnN0YW5jZXMgYW5kIGluaXRpYWxpemUgZWFjaCB3aXRoIHNlcGFyYXRlXG4gKiBjb25maWcuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICB1dGlscy5hc3NpZ24odGhpcy5vcHRpb25zLCBvcHRpb25zKVxuICByZXR1cm4gdGhpc1xufVxuXG4vKiogY2hhaW5hYmxlLCBpbnRlcm5hbFxuICogTWFya2Rvd25JdC5jb25maWd1cmUocHJlc2V0cylcbiAqXG4gKiBCYXRjaCBsb2FkIG9mIGFsbCBvcHRpb25zIGFuZCBjb21wZW5lbnQgc2V0dGluZ3MuIFRoaXMgaXMgaW50ZXJuYWwgbWV0aG9kLFxuICogYW5kIHlvdSBwcm9iYWJseSB3aWxsIG5vdCBuZWVkIGl0LiBCdXQgaWYgeW91IHdpbGwgLSBzZWUgYXZhaWxhYmxlIHByZXNldHNcbiAqIGFuZCBkYXRhIHN0cnVjdHVyZSBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL21hcmtkb3duLWl0L21hcmtkb3duLWl0L3RyZWUvbWFzdGVyL2xpYi9wcmVzZXRzKVxuICpcbiAqIFdlIHN0cm9uZ2x5IHJlY29tbWVuZCB0byB1c2UgcHJlc2V0cyBpbnN0ZWFkIG9mIGRpcmVjdCBjb25maWcgbG9hZHMuIFRoYXRcbiAqIHdpbGwgZ2l2ZSBiZXR0ZXIgY29tcGF0aWJpbGl0eSB3aXRoIG5leHQgdmVyc2lvbnMuXG4gKiovXG5NYXJrZG93bkl0LnByb3RvdHlwZS5jb25maWd1cmUgPSBmdW5jdGlvbiAocHJlc2V0cykge1xuICBjb25zdCBzZWxmID0gdGhpc1xuXG4gIGlmICh1dGlscy5pc1N0cmluZyhwcmVzZXRzKSkge1xuICAgIGNvbnN0IHByZXNldE5hbWUgPSBwcmVzZXRzXG4gICAgcHJlc2V0cyA9IGNvbmZpZ1twcmVzZXROYW1lXVxuICAgIGlmICghcHJlc2V0cykgeyB0aHJvdyBuZXcgRXJyb3IoJ1dyb25nIGBtYXJrZG93bi1pdGAgcHJlc2V0IFwiJyArIHByZXNldE5hbWUgKyAnXCIsIGNoZWNrIG5hbWUnKSB9XG4gIH1cblxuICBpZiAoIXByZXNldHMpIHsgdGhyb3cgbmV3IEVycm9yKCdXcm9uZyBgbWFya2Rvd24taXRgIHByZXNldCwgY2FuXFwndCBiZSBlbXB0eScpIH1cblxuICBpZiAocHJlc2V0cy5vcHRpb25zKSB7IHNlbGYuc2V0KHByZXNldHMub3B0aW9ucykgfVxuXG4gIGlmIChwcmVzZXRzLmNvbXBvbmVudHMpIHtcbiAgICBPYmplY3Qua2V5cyhwcmVzZXRzLmNvbXBvbmVudHMpLmZvckVhY2goZnVuY3Rpb24gKG5hbWUpIHtcbiAgICAgIGlmIChwcmVzZXRzLmNvbXBvbmVudHNbbmFtZV0ucnVsZXMpIHtcbiAgICAgICAgc2VsZltuYW1lXS5ydWxlci5lbmFibGVPbmx5KHByZXNldHMuY29tcG9uZW50c1tuYW1lXS5ydWxlcylcbiAgICAgIH1cbiAgICAgIGlmIChwcmVzZXRzLmNvbXBvbmVudHNbbmFtZV0ucnVsZXMyKSB7XG4gICAgICAgIHNlbGZbbmFtZV0ucnVsZXIyLmVuYWJsZU9ubHkocHJlc2V0cy5jb21wb25lbnRzW25hbWVdLnJ1bGVzMilcbiAgICAgIH1cbiAgICB9KVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbi8qKiBjaGFpbmFibGVcbiAqIE1hcmtkb3duSXQuZW5hYmxlKGxpc3QsIGlnbm9yZUludmFsaWQpXG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IHJ1bGUgbmFtZSBvciBsaXN0IG9mIHJ1bGUgbmFtZXMgdG8gZW5hYmxlXG4gKiAtIGlnbm9yZUludmFsaWQgKEJvb2xlYW4pOiBzZXQgYHRydWVgIHRvIGlnbm9yZSBlcnJvcnMgd2hlbiBydWxlIG5vdCBmb3VuZC5cbiAqXG4gKiBFbmFibGUgbGlzdCBvciBydWxlcy4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgYXBwcm9wcmlhdGUgY29tcG9uZW50cyxcbiAqIGNvbnRhaW5pbmcgcnVsZXMgd2l0aCBnaXZlbiBuYW1lcy4gSWYgcnVsZSBub3QgZm91bmQsIGFuZCBgaWdub3JlSW52YWxpZGBcbiAqIG5vdCBzZXQgLSB0aHJvd3MgZXhjZXB0aW9uLlxuICpcbiAqICMjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiB2YXIgbWQgPSByZXF1aXJlKCdtYXJrZG93bi1pdCcpKClcbiAqICAgICAgICAgICAgIC5lbmFibGUoWydzdWInLCAnc3VwJ10pXG4gKiAgICAgICAgICAgICAuZGlzYWJsZSgnc21hcnRxdW90ZXMnKTtcbiAqIGBgYFxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24gKGxpc3QsIGlnbm9yZUludmFsaWQpIHtcbiAgbGV0IHJlc3VsdCA9IFtdXG5cbiAgaWYgKCFBcnJheS5pc0FycmF5KGxpc3QpKSB7IGxpc3QgPSBbbGlzdF0gfVxuXG4gIFsnY29yZScsICdibG9jaycsICdpbmxpbmUnXS5mb3JFYWNoKGZ1bmN0aW9uIChjaGFpbikge1xuICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpc1tjaGFpbl0ucnVsZXIuZW5hYmxlKGxpc3QsIHRydWUpKVxuICB9LCB0aGlzKVxuXG4gIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpcy5pbmxpbmUucnVsZXIyLmVuYWJsZShsaXN0LCB0cnVlKSlcblxuICBjb25zdCBtaXNzZWQgPSBsaXN0LmZpbHRlcihmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gcmVzdWx0LmluZGV4T2YobmFtZSkgPCAwIH0pXG5cbiAgaWYgKG1pc3NlZC5sZW5ndGggJiYgIWlnbm9yZUludmFsaWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01hcmtkb3duSXQuIEZhaWxlZCB0byBlbmFibGUgdW5rbm93biBydWxlKHMpOiAnICsgbWlzc2VkKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLyoqIGNoYWluYWJsZVxuICogTWFya2Rvd25JdC5kaXNhYmxlKGxpc3QsIGlnbm9yZUludmFsaWQpXG4gKiAtIGxpc3QgKFN0cmluZ3xBcnJheSk6IHJ1bGUgbmFtZSBvciBsaXN0IG9mIHJ1bGUgbmFtZXMgdG8gZGlzYWJsZS5cbiAqIC0gaWdub3JlSW52YWxpZCAoQm9vbGVhbik6IHNldCBgdHJ1ZWAgdG8gaWdub3JlIGVycm9ycyB3aGVuIHJ1bGUgbm90IGZvdW5kLlxuICpcbiAqIFRoZSBzYW1lIGFzIFtbTWFya2Rvd25JdC5lbmFibGVdXSwgYnV0IHR1cm4gc3BlY2lmaWVkIHJ1bGVzIG9mZi5cbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbiAobGlzdCwgaWdub3JlSW52YWxpZCkge1xuICBsZXQgcmVzdWx0ID0gW11cblxuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHsgbGlzdCA9IFtsaXN0XSB9XG5cbiAgWydjb3JlJywgJ2Jsb2NrJywgJ2lubGluZSddLmZvckVhY2goZnVuY3Rpb24gKGNoYWluKSB7XG4gICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCh0aGlzW2NoYWluXS5ydWxlci5kaXNhYmxlKGxpc3QsIHRydWUpKVxuICB9LCB0aGlzKVxuXG4gIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQodGhpcy5pbmxpbmUucnVsZXIyLmRpc2FibGUobGlzdCwgdHJ1ZSkpXG5cbiAgY29uc3QgbWlzc2VkID0gbGlzdC5maWx0ZXIoZnVuY3Rpb24gKG5hbWUpIHsgcmV0dXJuIHJlc3VsdC5pbmRleE9mKG5hbWUpIDwgMCB9KVxuXG4gIGlmIChtaXNzZWQubGVuZ3RoICYmICFpZ25vcmVJbnZhbGlkKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNYXJrZG93bkl0LiBGYWlsZWQgdG8gZGlzYWJsZSB1bmtub3duIHJ1bGUocyk6ICcgKyBtaXNzZWQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuLyoqIGNoYWluYWJsZVxuICogTWFya2Rvd25JdC51c2UocGx1Z2luLCBwYXJhbXMpXG4gKlxuICogTG9hZCBzcGVjaWZpZWQgcGx1Z2luIHdpdGggZ2l2ZW4gcGFyYW1zIGludG8gY3VycmVudCBwYXJzZXIgaW5zdGFuY2UuXG4gKiBJdCdzIGp1c3QgYSBzdWdhciB0byBjYWxsIGBwbHVnaW4obWQsIHBhcmFtcylgIHdpdGggY3VycmluZy5cbiAqXG4gKiAjIyMjIyBFeGFtcGxlXG4gKlxuICogYGBgamF2YXNjcmlwdFxuICogdmFyIGl0ZXJhdG9yID0gcmVxdWlyZSgnbWFya2Rvd24taXQtZm9yLWlubGluZScpO1xuICogdmFyIG1kID0gcmVxdWlyZSgnbWFya2Rvd24taXQnKSgpXG4gKiAgICAgICAgICAgICAudXNlKGl0ZXJhdG9yLCAnZm9vX3JlcGxhY2UnLCAndGV4dCcsIGZ1bmN0aW9uICh0b2tlbnMsIGlkeCkge1xuICogICAgICAgICAgICAgICB0b2tlbnNbaWR4XS5jb250ZW50ID0gdG9rZW5zW2lkeF0uY29udGVudC5yZXBsYWNlKC9mb28vZywgJ2JhcicpO1xuICogICAgICAgICAgICAgfSk7XG4gKiBgYGBcbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnVzZSA9IGZ1bmN0aW9uIChwbHVnaW4gLyosIHBhcmFtcywgLi4uICovKSB7XG4gIGNvbnN0IGFyZ3MgPSBbdGhpc10uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSkpXG4gIHBsdWdpbi5hcHBseShwbHVnaW4sIGFyZ3MpXG4gIHJldHVybiB0aGlzXG59XG5cbi8qKiBpbnRlcm5hbFxuICogTWFya2Rvd25JdC5wYXJzZShzcmMsIGVudikgLT4gQXJyYXlcbiAqIC0gc3JjIChTdHJpbmcpOiBzb3VyY2Ugc3RyaW5nXG4gKiAtIGVudiAoT2JqZWN0KTogZW52aXJvbm1lbnQgc2FuZGJveFxuICpcbiAqIFBhcnNlIGlucHV0IHN0cmluZyBhbmQgcmV0dXJuIGxpc3Qgb2YgYmxvY2sgdG9rZW5zIChzcGVjaWFsIHRva2VuIHR5cGVcbiAqIFwiaW5saW5lXCIgd2lsbCBjb250YWluIGxpc3Qgb2YgaW5saW5lIHRva2VucykuIFlvdSBzaG91bGQgbm90IGNhbGwgdGhpc1xuICogbWV0aG9kIGRpcmVjdGx5LCB1bnRpbCB5b3Ugd3JpdGUgY3VzdG9tIHJlbmRlcmVyIChmb3IgZXhhbXBsZSwgdG8gcHJvZHVjZVxuICogQVNUKS5cbiAqXG4gKiBgZW52YCBpcyB1c2VkIHRvIHBhc3MgZGF0YSBiZXR3ZWVuIFwiZGlzdHJpYnV0ZWRcIiBydWxlcyBhbmQgcmV0dXJuIGFkZGl0aW9uYWxcbiAqIG1ldGFkYXRhIGxpa2UgcmVmZXJlbmNlIGluZm8sIG5lZWRlZCBmb3IgdGhlIHJlbmRlcmVyLiBJdCBhbHNvIGNhbiBiZSB1c2VkIHRvXG4gKiBpbmplY3QgZGF0YSBpbiBzcGVjaWZpYyBjYXNlcy4gVXN1YWxseSwgeW91IHdpbGwgYmUgb2sgdG8gcGFzcyBge31gLFxuICogYW5kIHRoZW4gcGFzcyB1cGRhdGVkIG9iamVjdCB0byByZW5kZXJlci5cbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnBhcnNlID0gZnVuY3Rpb24gKHNyYywgZW52KSB7XG4gIGlmICh0eXBlb2Ygc3JjICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcignSW5wdXQgZGF0YSBzaG91bGQgYmUgYSBTdHJpbmcnKVxuICB9XG5cbiAgY29uc3Qgc3RhdGUgPSBuZXcgdGhpcy5jb3JlLlN0YXRlKHNyYywgdGhpcywgZW52KVxuXG4gIHRoaXMuY29yZS5wcm9jZXNzKHN0YXRlKVxuXG4gIHJldHVybiBzdGF0ZS50b2tlbnNcbn1cblxuLyoqXG4gKiBNYXJrZG93bkl0LnJlbmRlcihzcmMgWywgZW52XSkgLT4gU3RyaW5nXG4gKiAtIHNyYyAoU3RyaW5nKTogc291cmNlIHN0cmluZ1xuICogLSBlbnYgKE9iamVjdCk6IGVudmlyb25tZW50IHNhbmRib3hcbiAqXG4gKiBSZW5kZXIgbWFya2Rvd24gc3RyaW5nIGludG8gaHRtbC4gSXQgZG9lcyBhbGwgbWFnaWMgZm9yIHlvdSA6KS5cbiAqXG4gKiBgZW52YCBjYW4gYmUgdXNlZCB0byBpbmplY3QgYWRkaXRpb25hbCBtZXRhZGF0YSAoYHt9YCBieSBkZWZhdWx0KS5cbiAqIEJ1dCB5b3Ugd2lsbCBub3QgbmVlZCBpdCB3aXRoIGhpZ2ggcHJvYmFiaWxpdHkuIFNlZSBhbHNvIGNvbW1lbnRcbiAqIGluIFtbTWFya2Rvd25JdC5wYXJzZV1dLlxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKHNyYywgZW52KSB7XG4gIGVudiA9IGVudiB8fCB7fVxuXG4gIHJldHVybiB0aGlzLnJlbmRlcmVyLnJlbmRlcih0aGlzLnBhcnNlKHNyYywgZW52KSwgdGhpcy5vcHRpb25zLCBlbnYpXG59XG5cbi8qKiBpbnRlcm5hbFxuICogTWFya2Rvd25JdC5wYXJzZUlubGluZShzcmMsIGVudikgLT4gQXJyYXlcbiAqIC0gc3JjIChTdHJpbmcpOiBzb3VyY2Ugc3RyaW5nXG4gKiAtIGVudiAoT2JqZWN0KTogZW52aXJvbm1lbnQgc2FuZGJveFxuICpcbiAqIFRoZSBzYW1lIGFzIFtbTWFya2Rvd25JdC5wYXJzZV1dIGJ1dCBza2lwIGFsbCBibG9jayBydWxlcy4gSXQgcmV0dXJucyB0aGVcbiAqIGJsb2NrIHRva2VucyBsaXN0IHdpdGggdGhlIHNpbmdsZSBgaW5saW5lYCBlbGVtZW50LCBjb250YWluaW5nIHBhcnNlZCBpbmxpbmVcbiAqIHRva2VucyBpbiBgY2hpbGRyZW5gIHByb3BlcnR5LiBBbHNvIHVwZGF0ZXMgYGVudmAgb2JqZWN0LlxuICoqL1xuTWFya2Rvd25JdC5wcm90b3R5cGUucGFyc2VJbmxpbmUgPSBmdW5jdGlvbiAoc3JjLCBlbnYpIHtcbiAgY29uc3Qgc3RhdGUgPSBuZXcgdGhpcy5jb3JlLlN0YXRlKHNyYywgdGhpcywgZW52KVxuXG4gIHN0YXRlLmlubGluZU1vZGUgPSB0cnVlXG4gIHRoaXMuY29yZS5wcm9jZXNzKHN0YXRlKVxuXG4gIHJldHVybiBzdGF0ZS50b2tlbnNcbn1cblxuLyoqXG4gKiBNYXJrZG93bkl0LnJlbmRlcklubGluZShzcmMgWywgZW52XSkgLT4gU3RyaW5nXG4gKiAtIHNyYyAoU3RyaW5nKTogc291cmNlIHN0cmluZ1xuICogLSBlbnYgKE9iamVjdCk6IGVudmlyb25tZW50IHNhbmRib3hcbiAqXG4gKiBTaW1pbGFyIHRvIFtbTWFya2Rvd25JdC5yZW5kZXJdXSBidXQgZm9yIHNpbmdsZSBwYXJhZ3JhcGggY29udGVudC4gUmVzdWx0XG4gKiB3aWxsIE5PVCBiZSB3cmFwcGVkIGludG8gYDxwPmAgdGFncy5cbiAqKi9cbk1hcmtkb3duSXQucHJvdG90eXBlLnJlbmRlcklubGluZSA9IGZ1bmN0aW9uIChzcmMsIGVudikge1xuICBlbnYgPSBlbnYgfHwge31cblxuICByZXR1cm4gdGhpcy5yZW5kZXJlci5yZW5kZXIodGhpcy5wYXJzZUlubGluZShzcmMsIGVudiksIHRoaXMub3B0aW9ucywgZW52KVxufVxuXG5leHBvcnQgZGVmYXVsdCBNYXJrZG93bkl0XG4iLCAiaW1wb3J0IE1hcmtkb3duSXQgZnJvbSAnbWFya2Rvd24taXQnO1xyXG5pbXBvcnQgVG9rZW4gZnJvbSAnbWFya2Rvd24taXQvbGliL3Rva2VuJztcclxuaW1wb3J0IHsgdHJpbSB9IGZyb20gJ2xvZGFzaC1lcyc7XHJcblxyXG5cclxuY29uc3QgdG9rZW5UeXBlID0gJ29iX2ltZyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1hcmtkb3duSXRJbWFnZUFjdGlvblBhcmFtcyB7XHJcbiAgc3JjOiBzdHJpbmc7XHJcbiAgd2lkdGg/OiBzdHJpbmc7XHJcbiAgaGVpZ2h0Pzogc3RyaW5nO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgTWFya2Rvd25JdEltYWdlUGx1Z2luT3B0aW9ucyB7XHJcbiAgZG9XaXRoSW1hZ2U6IChpbWc6IE1hcmtkb3duSXRJbWFnZUFjdGlvblBhcmFtcykgPT4gdm9pZDtcclxufVxyXG5cclxuY29uc3QgcGx1Z2luT3B0aW9uczogTWFya2Rvd25JdEltYWdlUGx1Z2luT3B0aW9ucyA9IHtcclxuICBkb1dpdGhJbWFnZTogKCkgPT4ge30sXHJcbn1cclxuXHJcbmV4cG9ydCBjb25zdCBNYXJrZG93bkl0SW1hZ2VQbHVnaW5JbnN0YW5jZSA9IHtcclxuICBwbHVnaW46IHBsdWdpbixcclxuICBkb1dpdGhJbWFnZTogKGFjdGlvbjogKGltZzogTWFya2Rvd25JdEltYWdlQWN0aW9uUGFyYW1zKSA9PiB2b2lkKSA9PiB7XHJcbiAgICBwbHVnaW5PcHRpb25zLmRvV2l0aEltYWdlID0gYWN0aW9uO1xyXG4gIH0sXHJcbn1cclxuXHJcbmZ1bmN0aW9uIHBsdWdpbihtZDogTWFya2Rvd25JdCk6IHZvaWQge1xyXG4gIG1kLmlubGluZS5ydWxlci5hZnRlcignaW1hZ2UnLCB0b2tlblR5cGUsIChzdGF0ZSwgc2lsZW50KSA9PiB7XHJcbiAgICBjb25zdCByZWdleCA9IC9eIVxcW1xcWyhbXnxcXF1cXG5dKykoXFx8KFteXFxdXFxuXSspKT9cXF1cXF0vO1xyXG4gICAgY29uc3QgbWF0Y2ggPSBzdGF0ZS5zcmMuc2xpY2Uoc3RhdGUucG9zKS5tYXRjaChyZWdleCk7XHJcbiAgICBpZiAobWF0Y2gpIHtcclxuICAgICAgaWYgKHNpbGVudCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IHRva2VuID0gc3RhdGUucHVzaCh0b2tlblR5cGUsICdpbWcnLCAwKTtcclxuICAgICAgY29uc3QgbWF0Y2hlZCA9IG1hdGNoWzBdO1xyXG4gICAgICBjb25zdCBzcmMgPSBtYXRjaFsxXTtcclxuICAgICAgY29uc3Qgc2l6ZSA9IG1hdGNoWzNdO1xyXG4gICAgICBsZXQgd2lkdGg6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgICAgbGV0IGhlaWdodDogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gICAgICBpZiAoc2l6ZSkge1xyXG4gICAgICAgIGNvbnN0IHNlcEluZGV4ID0gc2l6ZS5pbmRleE9mKCd4Jyk7IC8vIHdpZHRoIHggaGVpZ2h0XHJcbiAgICAgICAgaWYgKHNlcEluZGV4ID4gMCkge1xyXG4gICAgICAgICAgd2lkdGggPSB0cmltKHNpemUuc3Vic3RyaW5nKDAsIHNlcEluZGV4KSk7XHJcbiAgICAgICAgICBoZWlnaHQgPSB0cmltKHNpemUuc3Vic3RyaW5nKHNlcEluZGV4ICsgMSkpO1xyXG4gICAgICAgICAgdG9rZW4uYXR0cnMgPSBbXHJcbiAgICAgICAgICAgIFsgJ3NyYycsIHNyYyBdLFxyXG4gICAgICAgICAgICBbICd3aWR0aCcsIHdpZHRoIF0sXHJcbiAgICAgICAgICAgIFsgJ2hlaWdodCcsIGhlaWdodCBdLFxyXG4gICAgICAgICAgXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgd2lkdGggPSB0cmltKHNpemUpO1xyXG4gICAgICAgICAgdG9rZW4uYXR0cnMgPSBbXHJcbiAgICAgICAgICAgIFsgJ3NyYycsIHNyYyBdLFxyXG4gICAgICAgICAgICBbICd3aWR0aCcsIHdpZHRoIF0sXHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0b2tlbi5hdHRycyA9IFtcclxuICAgICAgICAgIFsgJ3NyYycsIHNyYyBdLFxyXG4gICAgICAgIF07XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHBsdWdpbk9wdGlvbnMuZG9XaXRoSW1hZ2UpIHtcclxuICAgICAgICBwbHVnaW5PcHRpb25zLmRvV2l0aEltYWdlKHtcclxuICAgICAgICAgIHNyYzogdG9rZW4uYXR0cnM/LlswXT8uWzFdLFxyXG4gICAgICAgICAgd2lkdGg6IHRva2VuLmF0dHJzPy5bMV0/LlsxXSxcclxuICAgICAgICAgIGhlaWdodDogdG9rZW4uYXR0cnM/LlsyXT8uWzFdLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHN0YXRlLnBvcyArPSBtYXRjaGVkLmxlbmd0aDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgbWQucmVuZGVyZXIucnVsZXMub2JfaW1nID0gKHRva2VuczogVG9rZW5bXSwgaWR4OiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2lkeF07XHJcbiAgICBjb25zdCBzcmMgPSB0b2tlbi5hdHRycz8uWzBdPy5bMV07XHJcbiAgICBjb25zdCB3aWR0aCA9IHRva2VuLmF0dHJzPy5bMV0/LlsxXTtcclxuICAgIGNvbnN0IGhlaWdodCA9IHRva2VuLmF0dHJzPy5bMl0/LlsxXTtcclxuICAgIGlmICh3aWR0aCkge1xyXG4gICAgICBpZiAoaGVpZ2h0KSB7XHJcbiAgICAgICAgcmV0dXJuIGA8aW1nIHNyYz1cIiR7c3JjfVwiIHdpZHRoPVwiJHt3aWR0aH1cIiBoZWlnaHQ9XCIke2hlaWdodH1cIiBhbHQ9XCJcIj5gO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBgPGltZyBzcmM9XCIke3NyY31cIiB3aWR0aD1cIiR7d2lkdGh9XCIgYWx0PVwiXCI+YDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBgPGltZyBzcmM9XCIke3NyY31cIiBhbHQ9XCJcIj5gO1xyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuIiwgImltcG9ydCBNYXJrZG93bkl0IGZyb20gJ21hcmtkb3duLWl0JztcclxuaW1wb3J0IHsgQ29tbWVudENvbnZlcnRNb2RlIH0gZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MnO1xyXG5cclxuY29uc3QgdG9rZW5UeXBlID0gJ29iX2NvbW1lbnQnO1xyXG5cclxuaW50ZXJmYWNlIE1hcmtkb3duSXRDb21tZW50UGx1Z2luT3B0aW9ucyB7XHJcbiAgY29udmVydE1vZGU6IENvbW1lbnRDb252ZXJ0TW9kZTtcclxufVxyXG5cclxuY29uc3QgcGx1Z2luT3B0aW9uczogTWFya2Rvd25JdENvbW1lbnRQbHVnaW5PcHRpb25zID0ge1xyXG4gIGNvbnZlcnRNb2RlOiBDb21tZW50Q29udmVydE1vZGUuSWdub3JlLFxyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTWFya2Rvd25JdENvbW1lbnRQbHVnaW5JbnN0YW5jZSA9IHtcclxuICBwbHVnaW46IHBsdWdpbixcclxuICB1cGRhdGVDb252ZXJ0TW9kZTogKG1vZGU6IENvbW1lbnRDb252ZXJ0TW9kZSkgPT4ge1xyXG4gICAgcGx1Z2luT3B0aW9ucy5jb252ZXJ0TW9kZSA9IG1vZGU7XHJcbiAgfSxcclxufVxyXG5cclxuZnVuY3Rpb24gcGx1Z2luKG1kOiBNYXJrZG93bkl0KTogdm9pZCB7XHJcbiAgbWQuaW5saW5lLnJ1bGVyLmJlZm9yZSgnZW1waGFzaXMnLCB0b2tlblR5cGUsIChzdGF0ZSwgc2lsZW50KSA9PiB7XHJcbiAgICBjb25zdCBzdGFydCA9IHN0YXRlLnBvcztcclxuICAgIGNvbnN0IG1heCA9IHN0YXRlLnBvc01heDtcclxuICAgIGNvbnN0IHNyYyA9IHN0YXRlLnNyYztcclxuXHJcbiAgICAvLyBjaGVjayBpZiBzdGFydCB3aXRoICUlXHJcbiAgICBpZiAoc3JjLmNoYXJDb2RlQXQoc3RhcnQpICE9PSAweDI1IC8qICUgKi8gfHwgc3RhcnQgKyA0ID49IG1heCkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBpZiAoc3JjLmNoYXJDb2RlQXQoc3RhcnQgKyAxKSAhPT0gMHgyNSAvKiAlICovKSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBmaW5kIGVuZGVkICUlXHJcbiAgICBsZXQgZW5kID0gc3RhcnQgKyAyO1xyXG4gICAgd2hpbGUgKGVuZCA8IG1heCAmJiAoc3JjLmNoYXJDb2RlQXQoZW5kKSAhPT0gMHgyNSAvKiAlICovIHx8IHNyYy5jaGFyQ29kZUF0KGVuZCArIDEpICE9PSAweDI1IC8qICUgKi8pKSB7XHJcbiAgICAgIGVuZCsrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlbmQgPj0gbWF4KSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBlbmQgKz0gMjsgLy8gc2tpcCBlbmRlZCAlJVxyXG5cclxuICAgIGlmICghc2lsZW50KSB7XHJcbiAgICAgIGNvbnN0IHRva2VuID0gc3RhdGUucHVzaCh0b2tlblR5cGUsICdjb21tZW50JywgMCk7XHJcbiAgICAgIHRva2VuLmNvbnRlbnQgPSBzcmMuc2xpY2Uoc3RhcnQgKyAyLCBlbmQgLSAyKS50cmltKCk7XHJcbiAgICAgIHN0YXRlLnBvcyA9IGVuZDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGUucG9zID0gZW5kO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfSk7XHJcblxyXG4gIG1kLnJlbmRlcmVyLnJ1bGVzW3Rva2VuVHlwZV0gPSAodG9rZW5zLCBpZHgpID0+IHtcclxuICAgIGlmIChwbHVnaW5PcHRpb25zLmNvbnZlcnRNb2RlID09PSBDb21tZW50Q29udmVydE1vZGUuSFRNTCkge1xyXG4gICAgICByZXR1cm4gYDwhLS0gJHt0b2tlbnNbaWR4XS5jb250ZW50fSAtLT5gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gIH07XHJcbn1cclxuIiwgImltcG9ydCB7IE1vZGFsLCBTZXR0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUtleSB9IGZyb20gJy4vaTE4bic7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIG9wZW5Qb3N0UHVibGlzaGVkTW9kYWwoXHJcbiAgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbik6IFByb21pc2U8dm9pZD4ge1xyXG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBuZXcgUG9zdFB1Ymxpc2hlZE1vZGFsKHBsdWdpbiwgKG1vZGFsKSA9PiB7XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgICAgbW9kYWwuY2xvc2UoKTtcclxuICAgIH0pO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogV29yZFByZXNzIHBvc3QgcHVibGlzaGVkIG1vZGFsLlxyXG4gKi9cclxuY2xhc3MgUG9zdFB1Ymxpc2hlZE1vZGFsIGV4dGVuZHMgTW9kYWwge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9uT3BlbkNsaWNrZWQ6IChtb2RhbDogTW9kYWwpID0+IHZvaWRcclxuICApIHtcclxuICAgIHN1cGVyKHBsdWdpbi5hcHApO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuKCkge1xyXG4gICAgY29uc3QgdCA9IChrZXk6IFRyYW5zbGF0ZUtleSwgdmFycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5wbHVnaW4uaTE4bi50KGtleSwgdmFycyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG5cclxuICAgIGNvbnRlbnRFbC5jcmVhdGVFbCgnaDEnLCB7IHRleHQ6IHQoJ3B1Ymxpc2hlZE1vZGFsX3RpdGxlJykgfSk7XHJcblxyXG4gICAgbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgICAuc2V0TmFtZSh0KCdwdWJsaXNoZWRNb2RhbF9jb25maXJtRWRpdEluV1AnKSk7XHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5hZGRCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgIC5zZXRCdXR0b25UZXh0KHQoJ3B1Ymxpc2hlZE1vZGFsX2NhbmNlbCcpKVxyXG4gICAgICAgIC5vbkNsaWNrKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIC5hZGRCdXR0b24oYnV0dG9uID0+IGJ1dHRvblxyXG4gICAgICAgIC5zZXRCdXR0b25UZXh0KHQoJ3B1Ymxpc2hlZE1vZGFsX29wZW4nKSlcclxuICAgICAgICAuc2V0Q3RhKClcclxuICAgICAgICAub25DbGljaygoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm9uT3BlbkNsaWNrZWQodGhpcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIiwgImltcG9ydCB7IE1vZGFsLCBTZXR0aW5nIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7IFdwUHJvZmlsZSB9IGZyb20gJy4vd3AtcHJvZmlsZSc7XHJcbmltcG9ydCB7IFdvcmRQcmVzc0F1dGhQYXJhbXMgfSBmcm9tICcuL3dwLWNsaWVudCc7XHJcbmltcG9ydCB7IHNob3dFcnJvciB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdE1vZGFsIH0gZnJvbSAnLi9hYnN0cmFjdC1tb2RhbCc7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb3BlbkxvZ2luTW9kYWwoXHJcbiAgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgcHJvZmlsZTogV3BQcm9maWxlLFxyXG4gIHZhbGlkYXRlVXNlcjogKGF1dGg6IFdvcmRQcmVzc0F1dGhQYXJhbXMpID0+IFByb21pc2U8Ym9vbGVhbj4sXHJcbik6IFByb21pc2U8eyBhdXRoOiBXb3JkUHJlc3NBdXRoUGFyYW1zLCBsb2dpbk1vZGFsOiBNb2RhbCB9PiB7XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIGNvbnN0IG1vZGFsID0gbmV3IFdwTG9naW5Nb2RhbChwbHVnaW4sIHByb2ZpbGUsIGFzeW5jIChhdXRoLCBsb2dpbk1vZGFsKSA9PiB7XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRlID0gYXdhaXQgdmFsaWRhdGVVc2VyKGF1dGgpO1xyXG4gICAgICBpZiAodmFsaWRhdGUpIHtcclxuICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgIGF1dGgsXHJcbiAgICAgICAgICBsb2dpbk1vZGFsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbW9kYWwuY2xvc2UoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzaG93RXJyb3IocGx1Z2luLmkxOG4udCgnZXJyb3JfaW52YWxpZFVzZXInKSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbW9kYWwub3BlbigpO1xyXG4gIH0pO1xyXG59XHJcblxyXG4vKipcclxuICogV29yZFByZXNzIGxvZ2luIG1vZGFsIHdpdGggdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGlucHV0cy5cclxuICovXHJcbmV4cG9ydCBjbGFzcyBXcExvZ2luTW9kYWwgZXh0ZW5kcyBBYnN0cmFjdE1vZGFsIHtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICByZWFkb25seSBwbHVnaW46IFdvcmRwcmVzc1BsdWdpbixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZmlsZTogV3BQcm9maWxlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBvblN1Ym1pdDogKGF1dGg6IFdvcmRQcmVzc0F1dGhQYXJhbXMsIG1vZGFsOiBNb2RhbCkgPT4gdm9pZFxyXG4gICkge1xyXG4gICAgc3VwZXIocGx1Z2luKTtcclxuICB9XHJcblxyXG4gIG9uT3BlbigpIHtcclxuICAgIGNvbnN0IHsgY29udGVudEVsIH0gPSB0aGlzO1xyXG5cclxuICAgIHRoaXMuY3JlYXRlSGVhZGVyKHRoaXMudCgnbG9naW5Nb2RhbF90aXRsZScpKTtcclxuXHJcbiAgICBsZXQgdXNlcm5hbWUgPSB0aGlzLnByb2ZpbGUudXNlcm5hbWU7XHJcbiAgICBsZXQgcGFzc3dvcmQgPSB0aGlzLnByb2ZpbGUucGFzc3dvcmQ7XHJcbiAgICBuZXcgU2V0dGluZyhjb250ZW50RWwpXHJcbiAgICAgIC5zZXROYW1lKHRoaXMudCgnbG9naW5Nb2RhbF91c2VybmFtZScpKVxyXG4gICAgICAuc2V0RGVzYyh0aGlzLnQoJ2xvZ2luTW9kYWxfdXNlcm5hbWVEZXNjJywgeyB1cmw6IHRoaXMucHJvZmlsZS5lbmRwb2ludCB9KSlcclxuICAgICAgLmFkZFRleHQodGV4dCA9PiB7XHJcbiAgICAgICAgdGV4dFxyXG4gICAgICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZS51c2VybmFtZSA/PyAnJylcclxuICAgICAgICAgIC5vbkNoYW5nZShhc3luYyAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgdXNlcm5hbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucHJvZmlsZS5zYXZlVXNlcm5hbWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLnByb2ZpbGUudXNlcm5hbWUgPSB2YWx1ZTtcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGUuc2F2ZVVzZXJuYW1lKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGV4dC5pbnB1dEVsLmZvY3VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgICAuc2V0TmFtZSh0aGlzLnQoJ2xvZ2luTW9kYWxfcGFzc3dvcmQnKSlcclxuICAgICAgLnNldERlc2ModGhpcy50KCdsb2dpbk1vZGFsX3Bhc3N3b3JkRGVzYycsIHsgdXJsOiB0aGlzLnByb2ZpbGUuZW5kcG9pbnQgfSkpXHJcbiAgICAgIC5hZGRUZXh0KHRleHQgPT4ge1xyXG4gICAgICAgIHRleHRcclxuICAgICAgICAgIC5zZXRWYWx1ZSh0aGlzLnByb2ZpbGUucGFzc3dvcmQgPz8gJycpXHJcbiAgICAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHBhc3N3b3JkID0gdmFsdWU7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb2ZpbGUuc2F2ZVBhc3N3b3JkKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9maWxlLnBhc3N3b3JkID0gdmFsdWU7XHJcbiAgICAgICAgICAgICAgYXdhaXQgdGhpcy5wbHVnaW4uc2F2ZVNldHRpbmdzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIGlmICh0aGlzLnByb2ZpbGUuc2F2ZVVzZXJuYW1lKSB7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGV4dC5pbnB1dEVsLmZvY3VzKCk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgLy8gbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgLy8gICAuc2V0TmFtZSh0aGlzLnQoJ2xvZ2luTW9kYWxfcmVtZW1iZXJVc2VybmFtZScpKVxyXG4gICAgLy8gICAuc2V0RGVzYyh0aGlzLnQoJ2xvZ2luTW9kYWxfcmVtZW1iZXJVc2VybmFtZURlc2MnKSlcclxuICAgIC8vICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgLy8gICAgIHRvZ2dsZVxyXG4gICAgLy8gICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZS5zYXZlVXNlcm5hbWUpXHJcbiAgICAvLyAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMucHJvZmlsZS5zYXZlVXNlcm5hbWUgPSB2YWx1ZTtcclxuICAgIC8vICAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGUuc2F2ZVVzZXJuYW1lKSB7XHJcbiAgICAvLyAgICAgICAgICAgZGVsZXRlIHRoaXMucHJvZmlsZS51c2VybmFtZTtcclxuICAgIC8vICAgICAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICB0aGlzLnByb2ZpbGUudXNlcm5hbWUgPSB1c2VybmFtZTtcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgIC8vICAgICAgIH0pLFxyXG4gICAgLy8gICApO1xyXG4gICAgLy8gbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgLy8gICAuc2V0TmFtZSh0aGlzLnQoJ2xvZ2luTW9kYWxfcmVtZW1iZXJQYXNzd29yZCcpKVxyXG4gICAgLy8gICAuc2V0RGVzYyh0aGlzLnQoJ2xvZ2luTW9kYWxfcmVtZW1iZXJQYXNzd29yZERlc2MnKSlcclxuICAgIC8vICAgLmFkZFRvZ2dsZSgodG9nZ2xlKSA9PlxyXG4gICAgLy8gICAgIHRvZ2dsZVxyXG4gICAgLy8gICAgICAgLnNldFZhbHVlKHRoaXMucHJvZmlsZS5zYXZlUGFzc3dvcmQpXHJcbiAgICAvLyAgICAgICAub25DaGFuZ2UoYXN5bmMgKHZhbHVlKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIHRoaXMucHJvZmlsZS5zYXZlUGFzc3dvcmQgPSB2YWx1ZTtcclxuICAgIC8vICAgICAgICAgaWYgKCF0aGlzLnByb2ZpbGUuc2F2ZVBhc3N3b3JkKSB7XHJcbiAgICAvLyAgICAgICAgICAgZGVsZXRlIHRoaXMucHJvZmlsZS5wYXNzd29yZDtcclxuICAgIC8vICAgICAgICAgfSBlbHNlIHtcclxuICAgIC8vICAgICAgICAgICB0aGlzLnByb2ZpbGUucGFzc3dvcmQgPSBwYXNzd29yZDtcclxuICAgIC8vICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICBhd2FpdCB0aGlzLnBsdWdpbi5zYXZlU2V0dGluZ3MoKTtcclxuICAgIC8vICAgICAgIH0pLFxyXG4gICAgLy8gICApO1xyXG4gICAgbmV3IFNldHRpbmcoY29udGVudEVsKVxyXG4gICAgICAuYWRkQnV0dG9uKGJ1dHRvbiA9PiBidXR0b25cclxuICAgICAgICAuc2V0QnV0dG9uVGV4dCh0aGlzLnQoJ2xvZ2luTW9kYWxfbG9naW5CdXR0b25UZXh0JykpXHJcbiAgICAgICAgLnNldEN0YSgpXHJcbiAgICAgICAgLm9uQ2xpY2soKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKCF1c2VybmFtZSkge1xyXG4gICAgICAgICAgICBzaG93RXJyb3IodGhpcy50KCdlcnJvcl9ub1VzZXJuYW1lJykpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICghcGFzc3dvcmQpIHtcclxuICAgICAgICAgICAgc2hvd0Vycm9yKHRoaXMudCgnZXJyb3Jfbm9QYXNzd29yZCcpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICh1c2VybmFtZSAmJiBwYXNzd29yZCkge1xyXG4gICAgICAgICAgICB0aGlzLm9uU3VibWl0KHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0sIHRoaXMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkNsb3NlKCkge1xyXG4gICAgY29uc3QgeyBjb250ZW50RWwgfSA9IHRoaXM7XHJcbiAgICBjb250ZW50RWwuZW1wdHkoKTtcclxuICB9XHJcbn1cclxuIiwgImltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHtcclxuICBXb3JkUHJlc3NBdXRoUGFyYW1zLFxyXG4gIFdvcmRQcmVzc0NsaWVudFJlc3VsdCxcclxuICBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLFxyXG4gIFdvcmRQcmVzc01lZGlhVXBsb2FkUmVzdWx0LFxyXG4gIFdvcmRQcmVzc1Bvc3RQYXJhbXMsXHJcbiAgV29yZFByZXNzUHVibGlzaFJlc3VsdFxyXG59IGZyb20gJy4vd3AtY2xpZW50JztcclxuaW1wb3J0IHsgWG1sUnBjQ2xpZW50IH0gZnJvbSAnLi94bWxycGMtY2xpZW50JztcclxuaW1wb3J0IHsgQWJzdHJhY3RXb3JkUHJlc3NDbGllbnQgfSBmcm9tICcuL2Fic3RyYWN0LXdwLWNsaWVudCc7XHJcbmltcG9ydCB7IFBvc3RTdGF0dXMsIFBvc3RUeXBlLCBQb3N0VHlwZUNvbnN0LCBUZXJtIH0gZnJvbSAnLi93cC1hcGknO1xyXG5pbXBvcnQgeyBTYWZlQW55LCBzaG93RXJyb3IgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuaW1wb3J0IHsgTWVkaWEgfSBmcm9tICcuL3R5cGVzJztcclxuXHJcbmludGVyZmFjZSBGYXVsdFJlc3BvbnNlIHtcclxuICBmYXVsdENvZGU6IHN0cmluZztcclxuICBmYXVsdFN0cmluZzogc3RyaW5nO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0ZhdWx0UmVzcG9uc2UocmVzcG9uc2U6IHVua25vd24pOiByZXNwb25zZSBpcyBGYXVsdFJlc3BvbnNlIHtcclxuICByZXR1cm4gKHJlc3BvbnNlIGFzIEZhdWx0UmVzcG9uc2UpLmZhdWx0Q29kZSAhPT0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV3BYbWxScGNDbGllbnQgZXh0ZW5kcyBBYnN0cmFjdFdvcmRQcmVzc0NsaWVudCB7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50OiBYbWxScGNDbGllbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICByZWFkb25seSBwcm9maWxlOiBXcFByb2ZpbGVcclxuICApIHtcclxuICAgIHN1cGVyKHBsdWdpbiwgcHJvZmlsZSk7XHJcbiAgICB0aGlzLm5hbWUgPSAnV3BYbWxScGNDbGllbnQnO1xyXG4gICAgdGhpcy5jbGllbnQgPSBuZXcgWG1sUnBjQ2xpZW50KHtcclxuICAgICAgdXJsOiBuZXcgVVJMKHByb2ZpbGUuZW5kcG9pbnQpLFxyXG4gICAgICB4bWxScGNQYXRoOiBwcm9maWxlLnhtbFJwY1BhdGggPz8gJydcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHVibGlzaChcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBjb250ZW50OiBzdHJpbmcsXHJcbiAgICBwb3N0UGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zLFxyXG4gICAgY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXNcclxuICApOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdDxXb3JkUHJlc3NQdWJsaXNoUmVzdWx0Pj4ge1xyXG4gICAgbGV0IHB1Ymxpc2hDb250ZW50O1xyXG4gICAgaWYgKHBvc3RQYXJhbXMucG9zdFR5cGUgPT09IFBvc3RUeXBlQ29uc3QuUGFnZSkge1xyXG4gICAgICBwdWJsaXNoQ29udGVudCA9IHtcclxuICAgICAgICBwb3N0X3R5cGU6IHBvc3RQYXJhbXMucG9zdFR5cGUsXHJcbiAgICAgICAgcG9zdF9zdGF0dXM6IHBvc3RQYXJhbXMuc3RhdHVzLFxyXG4gICAgICAgIGNvbW1lbnRfc3RhdHVzOiBwb3N0UGFyYW1zLmNvbW1lbnRTdGF0dXMsXHJcbiAgICAgICAgcG9zdF90aXRsZTogdGl0bGUsXHJcbiAgICAgICAgcG9zdF9jb250ZW50OiBjb250ZW50LFxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcHVibGlzaENvbnRlbnQgPSB7XHJcbiAgICAgICAgcG9zdF90eXBlOiBwb3N0UGFyYW1zLnBvc3RUeXBlLFxyXG4gICAgICAgIHBvc3Rfc3RhdHVzOiBwb3N0UGFyYW1zLnN0YXR1cyxcclxuICAgICAgICBjb21tZW50X3N0YXR1czogcG9zdFBhcmFtcy5jb21tZW50U3RhdHVzLFxyXG4gICAgICAgIHBvc3RfdGl0bGU6IHRpdGxlLFxyXG4gICAgICAgIHBvc3RfY29udGVudDogY29udGVudCxcclxuICAgICAgICB0ZXJtczoge1xyXG4gICAgICAgICAgJ2NhdGVnb3J5JzogcG9zdFBhcmFtcy5jYXRlZ29yaWVzXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0ZXJtc19uYW1lczoge1xyXG4gICAgICAgICAgJ3Bvc3RfdGFnJzogcG9zdFBhcmFtcy50YWdzXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgaWYgKHBvc3RQYXJhbXMuc3RhdHVzID09PSBQb3N0U3RhdHVzLkZ1dHVyZSkge1xyXG4gICAgICBwdWJsaXNoQ29udGVudCA9IHtcclxuICAgICAgICAuLi5wdWJsaXNoQ29udGVudCxcclxuICAgICAgICBwb3N0X2RhdGU6IHBvc3RQYXJhbXMuZGF0ZXRpbWUgPz8gbmV3IERhdGUoKVxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IHB1Ymxpc2hQcm9taXNlO1xyXG4gICAgaWYgKHBvc3RQYXJhbXMucG9zdElkKSB7XHJcbiAgICAgIHB1Ymxpc2hQcm9taXNlID0gdGhpcy5jbGllbnQubWV0aG9kQ2FsbCgnd3AuZWRpdFBvc3QnLCBbXHJcbiAgICAgICAgMCxcclxuICAgICAgICBjZXJ0aWZpY2F0ZS51c2VybmFtZSxcclxuICAgICAgICBjZXJ0aWZpY2F0ZS5wYXNzd29yZCxcclxuICAgICAgICBwb3N0UGFyYW1zLnBvc3RJZCxcclxuICAgICAgICBwdWJsaXNoQ29udGVudFxyXG4gICAgICBdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHB1Ymxpc2hQcm9taXNlID0gdGhpcy5jbGllbnQubWV0aG9kQ2FsbCgnd3AubmV3UG9zdCcsIFtcclxuICAgICAgICAwLFxyXG4gICAgICAgIGNlcnRpZmljYXRlLnVzZXJuYW1lLFxyXG4gICAgICAgIGNlcnRpZmljYXRlLnBhc3N3b3JkLFxyXG4gICAgICAgIHB1Ymxpc2hDb250ZW50XHJcbiAgICAgIF0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBwdWJsaXNoUHJvbWlzZTtcclxuICAgIGlmIChpc0ZhdWx0UmVzcG9uc2UocmVzcG9uc2UpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcixcclxuICAgICAgICBlcnJvcjoge1xyXG4gICAgICAgICAgY29kZTogcmVzcG9uc2UuZmF1bHRDb2RlLFxyXG4gICAgICAgICAgbWVzc2FnZTogcmVzcG9uc2UuZmF1bHRTdHJpbmdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc3BvbnNlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLk9LLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgcG9zdElkOiBwb3N0UGFyYW1zLnBvc3RJZCA/PyAocmVzcG9uc2UgYXMgc3RyaW5nKSxcclxuICAgICAgICBjYXRlZ29yaWVzOiBwb3N0UGFyYW1zLmNhdGVnb3JpZXNcclxuICAgICAgfSxcclxuICAgICAgcmVzcG9uc2VcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRDYXRlZ29yaWVzKGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxUZXJtW10+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQubWV0aG9kQ2FsbCgnd3AuZ2V0VGVybXMnLCBbXHJcbiAgICAgIDAsXHJcbiAgICAgIGNlcnRpZmljYXRlLnVzZXJuYW1lLFxyXG4gICAgICBjZXJ0aWZpY2F0ZS5wYXNzd29yZCxcclxuICAgICAgJ2NhdGVnb3J5J1xyXG4gICAgXSk7XHJcbiAgICBpZiAoaXNGYXVsdFJlc3BvbnNlKHJlc3BvbnNlKSkge1xyXG4gICAgICBjb25zdCBmYXVsdCA9IGAke3Jlc3BvbnNlLmZhdWx0Q29kZX06ICR7cmVzcG9uc2UuZmF1bHRTdHJpbmd9YDtcclxuICAgICAgc2hvd0Vycm9yKGZhdWx0KTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKGZhdWx0KTtcclxuICAgIH1cclxuICAgIHJldHVybiAocmVzcG9uc2UgYXMgU2FmZUFueSkubWFwKChpdDogU2FmZUFueSkgPT4gKHtcclxuICAgICAgLi4uaXQsXHJcbiAgICAgIGlkOiBpdC50ZXJtX2lkXHJcbiAgICB9KSkgPz8gW107XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRQb3N0VHlwZXMoY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXMpOiBQcm9taXNlPFBvc3RUeXBlW10+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQubWV0aG9kQ2FsbCgnd3AuZ2V0UG9zdFR5cGVzJywgW1xyXG4gICAgICAwLFxyXG4gICAgICBjZXJ0aWZpY2F0ZS51c2VybmFtZSxcclxuICAgICAgY2VydGlmaWNhdGUucGFzc3dvcmQsXHJcbiAgICBdKTtcclxuICAgIGlmIChpc0ZhdWx0UmVzcG9uc2UocmVzcG9uc2UpKSB7XHJcbiAgICAgIGNvbnN0IGZhdWx0ID0gYCR7cmVzcG9uc2UuZmF1bHRDb2RlfTogJHtyZXNwb25zZS5mYXVsdFN0cmluZ31gO1xyXG4gICAgICBzaG93RXJyb3IoZmF1bHQpO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZmF1bHQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHJlc3BvbnNlIGFzIFNhZmVBbnkpID8/IFtdO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdmFsaWRhdGVVc2VyKGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxXb3JkUHJlc3NDbGllbnRSZXN1bHQ8Ym9vbGVhbj4+IHtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQubWV0aG9kQ2FsbCgnd3AuZ2V0UHJvZmlsZScsIFtcclxuICAgICAgMCxcclxuICAgICAgY2VydGlmaWNhdGUudXNlcm5hbWUsXHJcbiAgICAgIGNlcnRpZmljYXRlLnBhc3N3b3JkXHJcbiAgICBdKTtcclxuICAgIGlmIChpc0ZhdWx0UmVzcG9uc2UocmVzcG9uc2UpKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcixcclxuICAgICAgICBlcnJvcjoge1xyXG4gICAgICAgICAgY29kZTogcmVzcG9uc2UuZmF1bHRDb2RlLFxyXG4gICAgICAgICAgbWVzc2FnZTogYCR7cmVzcG9uc2UuZmF1bHRDb2RlfTogJHtyZXNwb25zZS5mYXVsdFN0cmluZ31gXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNwb25zZVxyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLk9LLFxyXG4gICAgICAgIGRhdGE6ICEhcmVzcG9uc2UsXHJcbiAgICAgICAgcmVzcG9uc2VcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldFRhZyhuYW1lOiBzdHJpbmcsIGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxUZXJtPiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcclxuICAgICAgaWQ6IG5hbWUsXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIHNsdWc6IG5hbWUsXHJcbiAgICAgIHRheG9ub215OiAncG9zdF90YWcnLFxyXG4gICAgICBkZXNjcmlwdGlvbjogbmFtZSxcclxuICAgICAgY291bnQ6IDBcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkTWVkaWEobWVkaWE6IE1lZGlhLCBjZXJ0aWZpY2F0ZTogV29yZFByZXNzQXV0aFBhcmFtcyk6IFByb21pc2U8V29yZFByZXNzQ2xpZW50UmVzdWx0PFdvcmRQcmVzc01lZGlhVXBsb2FkUmVzdWx0Pj4ge1xyXG4gICAgY29uc3Qgd3BNZWRpYSA9IHtcclxuICAgICAgbmFtZTogbWVkaWEuZmlsZU5hbWUsXHJcbiAgICAgIHR5cGU6IG1lZGlhLm1pbWVUeXBlLFxyXG4gICAgICBiaXRzOiBtZWRpYS5jb250ZW50LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbGllbnQubWV0aG9kQ2FsbCgnd3AudXBsb2FkRmlsZScsIFtcclxuICAgICAgMCxcclxuICAgICAgY2VydGlmaWNhdGUudXNlcm5hbWUsXHJcbiAgICAgIGNlcnRpZmljYXRlLnBhc3N3b3JkLFxyXG4gICAgICB3cE1lZGlhLFxyXG4gICAgXSk7XHJcbiAgICBpZiAoaXNGYXVsdFJlc3BvbnNlKHJlc3BvbnNlKSkge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuRXJyb3IsXHJcbiAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgIGNvZGU6IHJlc3BvbnNlLmZhdWx0Q29kZSxcclxuICAgICAgICAgIG1lc3NhZ2U6IGAke3Jlc3BvbnNlLmZhdWx0Q29kZX06ICR7cmVzcG9uc2UuZmF1bHRTdHJpbmd9YFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzcG9uc2VcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5PSyxcclxuICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICB1cmw6IChyZXNwb25zZSBhcyBTYWZlQW55KS51cmxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc3BvbnNlXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG4iLCAiaW1wb3J0IHsgcmVxdWVzdFVybCB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IHsgZ2V0Qm91bmRhcnksIFNhZmVBbnkgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgRm9ybUl0ZW1OYW1lTWFwcGVyLCBGb3JtSXRlbXMgfSBmcm9tICcuL3R5cGVzJztcclxuXHJcbmludGVyZmFjZSBSZXN0T3B0aW9ucyB7XHJcbiAgdXJsOiBVUkw7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZXN0Q2xpZW50IHtcclxuXHJcbiAgLyoqXHJcbiAgICogSHJlZiB3aXRob3V0ICcvJyBhdCB0aGUgdmVyeSBlbmQuXHJcbiAgICogQHByaXZhdGVcclxuICAgKi9cclxuICBwcml2YXRlIHJlYWRvbmx5IGhyZWY6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbnM6IFJlc3RPcHRpb25zXHJcbiAgKSB7XHJcbiAgICBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuXHJcbiAgICB0aGlzLmhyZWYgPSB0aGlzLm9wdGlvbnMudXJsLmhyZWY7XHJcbiAgICBpZiAodGhpcy5ocmVmLmVuZHNXaXRoKCcvJykpIHtcclxuICAgICAgdGhpcy5ocmVmID0gdGhpcy5ocmVmLnN1YnN0cmluZygwLCB0aGlzLmhyZWYubGVuZ3RoIC0gMSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBodHRwR2V0KFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgb3B0aW9ucz86IHtcclxuICAgICAgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxyXG4gICAgfVxyXG4gICk6IFByb21pc2U8dW5rbm93bj4ge1xyXG4gICAgbGV0IHJlYWxQYXRoID0gcGF0aDtcclxuICAgIGlmIChyZWFsUGF0aC5zdGFydHNXaXRoKCcvJykpIHtcclxuICAgICAgcmVhbFBhdGggPSByZWFsUGF0aC5zdWJzdHJpbmcoMSk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHt0aGlzLmhyZWZ9LyR7cmVhbFBhdGh9YDtcclxuICAgIGNvbnN0IG9wdHMgPSB7XHJcbiAgICAgIGhlYWRlcnM6IHt9LFxyXG4gICAgICAuLi5vcHRpb25zXHJcbiAgICB9O1xyXG4gICAgY29uc29sZS5sb2coJ1JFU1QgR0VUJywgZW5kcG9pbnQsIG9wdHMpO1xyXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCByZXF1ZXN0VXJsKHtcclxuICAgICAgdXJsOiBlbmRwb2ludCxcclxuICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICAgJ3VzZXItYWdlbnQnOiAnb2JzaWRpYW4ubWQnLFxyXG4gICAgICAgIC4uLm9wdHMuaGVhZGVyc1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnNvbGUubG9nKCdHRVQgcmVzcG9uc2UnLCByZXNwb25zZSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UuanNvbjtcclxuICB9XHJcblxyXG4gIGFzeW5jIGh0dHBQb3N0KFxyXG4gICAgcGF0aDogc3RyaW5nLFxyXG4gICAgYm9keTogU2FmZUFueSxcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgaGVhZGVycz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcbiAgICAgIGZvcm1JdGVtTmFtZU1hcHBlcj86IEZvcm1JdGVtTmFtZU1hcHBlcjtcclxuICAgIH0pOiBQcm9taXNlPHVua25vd24+IHtcclxuICAgIGxldCByZWFsUGF0aCA9IHBhdGg7XHJcbiAgICBpZiAocmVhbFBhdGguc3RhcnRzV2l0aCgnLycpKSB7XHJcbiAgICAgIHJlYWxQYXRoID0gcmVhbFBhdGguc3Vic3RyaW5nKDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7dGhpcy5ocmVmfS8ke3JlYWxQYXRofWA7XHJcbiAgICBjb25zdCBwcmVkZWZpbmVkSGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG4gICAgbGV0IHJlcXVlc3RCb2R5OiBTYWZlQW55O1xyXG4gICAgaWYgKGJvZHkgaW5zdGFuY2VvZiBGb3JtSXRlbXMpIHtcclxuICAgICAgY29uc3QgYm91bmRhcnkgPSBnZXRCb3VuZGFyeSgpO1xyXG4gICAgICByZXF1ZXN0Qm9keSA9IGF3YWl0IGJvZHkudG9BcnJheUJ1ZmZlcih7XHJcbiAgICAgICAgYm91bmRhcnksXHJcbiAgICAgICAgbmFtZU1hcHBlcjogb3B0aW9ucy5mb3JtSXRlbU5hbWVNYXBwZXJcclxuICAgICAgfSk7XHJcbiAgICAgIHByZWRlZmluZWRIZWFkZXJzWydjb250ZW50LXR5cGUnXSA9IGBtdWx0aXBhcnQvZm9ybS1kYXRhOyBib3VuZGFyeT0ke2JvdW5kYXJ5fWA7XHJcbiAgICB9IGVsc2UgaWYgKGJvZHkgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikge1xyXG4gICAgICByZXF1ZXN0Qm9keSA9IGJvZHk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXF1ZXN0Qm9keSA9IEpTT04uc3RyaW5naWZ5KGJvZHkpO1xyXG4gICAgICBwcmVkZWZpbmVkSGVhZGVyc1snY29udGVudC10eXBlJ10gPSAnYXBwbGljYXRpb24vanNvbic7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHJlcXVlc3RVcmwoe1xyXG4gICAgICB1cmw6IGVuZHBvaW50LFxyXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICd1c2VyLWFnZW50JzogJ29ic2lkaWFuLm1kJyxcclxuICAgICAgICAuLi5wcmVkZWZpbmVkSGVhZGVycyxcclxuICAgICAgICAuLi5vcHRpb25zLmhlYWRlcnNcclxuICAgICAgfSxcclxuICAgICAgYm9keTogcmVxdWVzdEJvZHlcclxuICAgIH0pO1xyXG4gICAgY29uc29sZS5sb2coJ1BPU1QgcmVzcG9uc2UnLCByZXNwb25zZSk7XHJcbiAgICByZXR1cm4gcmVzcG9uc2UuanNvbjtcclxuICB9XHJcblxyXG59XHJcbiIsICJpbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzU3RyaW5nIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWFya2Rvd25JdFBsdWdpbiB7XHJcbiAgdXBkYXRlT3B0aW9uczogKG9wdHM6IFNhZmVBbnkpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIE1hdHRlckRhdGEgPSB7IFtwOiBzdHJpbmddOiBTYWZlQW55IH07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lZGlhIHtcclxuICBtaW1lVHlwZTogc3RyaW5nO1xyXG4gIGZpbGVOYW1lOiBzdHJpbmc7XHJcbiAgY29udGVudDogQXJyYXlCdWZmZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBpc01lZGlhKG9iajogU2FmZUFueSk6IG9iaiBpcyBNZWRpYSB7XHJcbiAgcmV0dXJuIChcclxuICAgIHR5cGVvZiBvYmogPT09ICdvYmplY3QnXHJcbiAgICAmJiBvYmogIT09IG51bGxcclxuICAgICYmICdtaW1lVHlwZScgaW4gb2JqICYmIHR5cGVvZiBvYmoubWltZVR5cGUgPT09ICdzdHJpbmcnXHJcbiAgICAmJiAnZmlsZU5hbWUnIGluIG9iaiAmJiB0eXBlb2Ygb2JqLmZpbGVOYW1lID09PSAnc3RyaW5nJ1xyXG4gICAgJiYgJ2NvbnRlbnQnIGluIG9iaiAmJiBvYmouY29udGVudCBpbnN0YW5jZW9mIEFycmF5QnVmZmVyXHJcbiAgKTtcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbnZlcnQgb3JpZ2luYWwgaXRlbSBuYW1lIHRvIGN1c3RvbSBvbmUuXHJcbiAqXHJcbiAqIEBwYXJhbSBuYW1lIG9yaWdpbmFsIGl0ZW0gbmFtZS4gSWYgYGlzQXJyYXlgIGlzIGB0cnVlYCwgd2hpY2ggbWVhbnMgaXMgaW4gYW4gYXJyYXksIHRoZSBgbmFtZWAgd2lsbCBiZSBhcHBlbmRlZCBieSBgW11gXHJcbiAqIEBwYXJhbSBpc0FycmF5IHdoZXRoZXIgdGhpcyBpdGVtIGlzIGluIGFuIGFycmF5XHJcbiAqL1xyXG5leHBvcnQgdHlwZSBGb3JtSXRlbU5hbWVNYXBwZXIgPSAobmFtZTogc3RyaW5nLCBpc0FycmF5OiBib29sZWFuKSA9PiBzdHJpbmc7XHJcblxyXG5leHBvcnQgY2xhc3MgRm9ybUl0ZW1zIHtcclxuICAjZm9ybURhdGE6IFJlY29yZDxzdHJpbmcsIFNhZmVBbnk+ID0ge307XHJcblxyXG4gIGFwcGVuZChuYW1lOiBzdHJpbmcsIGRhdGE6IHN0cmluZyk6IEZvcm1JdGVtcztcclxuICBhcHBlbmQobmFtZTogc3RyaW5nLCBkYXRhOiBNZWRpYSk6IEZvcm1JdGVtcztcclxuICBhcHBlbmQobmFtZTogc3RyaW5nLCBkYXRhOiBzdHJpbmcgfCBNZWRpYSk6IEZvcm1JdGVtcyB7XHJcbiAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuI2Zvcm1EYXRhW25hbWVdO1xyXG4gICAgaWYgKGV4aXN0aW5nKSB7XHJcbiAgICAgIHRoaXMuI2Zvcm1EYXRhW25hbWVdID0gWyBleGlzdGluZyBdO1xyXG4gICAgICB0aGlzLiNmb3JtRGF0YVtuYW1lXS5wdXNoKGRhdGEpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy4jZm9ybURhdGFbbmFtZV0gPSBkYXRhO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICB0b0FycmF5QnVmZmVyKG9wdGlvbjoge1xyXG4gICAgYm91bmRhcnk6IHN0cmluZztcclxuICAgIG5hbWVNYXBwZXI/OiBGb3JtSXRlbU5hbWVNYXBwZXI7XHJcbiAgfSk6IFByb21pc2U8QXJyYXlCdWZmZXI+IHtcclxuICAgIGNvbnN0IENSTEYgPSAnXFxyXFxuJztcclxuICAgIGNvbnN0IGl0ZW1QYXJ0ID0gKG5hbWU6IHN0cmluZywgZGF0YTogc3RyaW5nIHwgTWVkaWEsIGlzQXJyYXk6IGJvb2xlYW4pID0+IHtcclxuICAgICAgbGV0IGl0ZW1OYW1lID0gbmFtZTtcclxuICAgICAgaWYgKG9wdGlvbi5uYW1lTWFwcGVyKSB7XHJcbiAgICAgICAgaXRlbU5hbWUgPSBvcHRpb24ubmFtZU1hcHBlcihuYW1lLCBpc0FycmF5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgYm9keS5wdXNoKGVuY29kZWRJdGVtU3RhcnQpO1xyXG4gICAgICBpZiAoaXNTdHJpbmcoZGF0YSkpIHtcclxuICAgICAgICBib2R5LnB1c2goZW5jb2Rlci5lbmNvZGUoYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiR7aXRlbU5hbWV9XCIke0NSTEZ9JHtDUkxGfWApKTtcclxuICAgICAgICBib2R5LnB1c2goZW5jb2Rlci5lbmNvZGUoZGF0YSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGNvbnN0IG1lZGlhID0gZGF0YTtcclxuICAgICAgICBib2R5LnB1c2goZW5jb2Rlci5lbmNvZGUoYENvbnRlbnQtRGlzcG9zaXRpb246IGZvcm0tZGF0YTsgbmFtZT1cIiR7aXRlbU5hbWV9XCI7IGZpbGVuYW1lPVwiJHttZWRpYS5maWxlTmFtZX1cIiR7Q1JMRn1Db250ZW50LVR5cGU6ICR7bWVkaWEubWltZVR5cGV9JHtDUkxGfSR7Q1JMRn1gKSk7XHJcbiAgICAgICAgYm9keS5wdXNoKG1lZGlhLmNvbnRlbnQpO1xyXG4gICAgICB9XHJcbiAgICAgIGJvZHkucHVzaChlbmNvZGVyLmVuY29kZShDUkxGKSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcclxuICAgIGNvbnN0IGVuY29kZWRJdGVtU3RhcnQgPSBlbmNvZGVyLmVuY29kZShgLS0ke29wdGlvbi5ib3VuZGFyeX0ke0NSTEZ9YCk7XHJcbiAgICBjb25zdCBib2R5OiBBcnJheUJ1ZmZlcltdID0gW107XHJcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLiNmb3JtRGF0YSkuZm9yRWFjaCgoWyBuYW1lLCBkYXRhIF0pID0+IHtcclxuICAgICAgaWYgKGlzQXJyYXkoZGF0YSkpIHtcclxuICAgICAgICBkYXRhLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICBpdGVtUGFydChgJHtuYW1lfVtdYCwgaXRlbSwgdHJ1ZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaXRlbVBhcnQobmFtZSwgZGF0YSwgZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGJvZHkucHVzaChlbmNvZGVyLmVuY29kZShgLS0ke29wdGlvbi5ib3VuZGFyeX0tLWApKTtcclxuICAgIHJldHVybiBuZXcgQmxvYihib2R5KS5hcnJheUJ1ZmZlcigpO1xyXG4gIH1cclxufVxyXG4iLCAiaW1wb3J0IHtcclxuICBXb3JkUHJlc3NBdXRoUGFyYW1zLFxyXG4gIFdvcmRQcmVzc0NsaWVudFJlc3VsdCxcclxuICBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLFxyXG4gIFdvcmRQcmVzc01lZGlhVXBsb2FkUmVzdWx0LFxyXG4gIFdvcmRQcmVzc1Bvc3RQYXJhbXMsXHJcbiAgV29yZFByZXNzUHVibGlzaFJlc3VsdFxyXG59IGZyb20gJy4vd3AtY2xpZW50JztcclxuaW1wb3J0IHsgQWJzdHJhY3RXb3JkUHJlc3NDbGllbnQgfSBmcm9tICcuL2Fic3RyYWN0LXdwLWNsaWVudCc7XHJcbmltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgUG9zdFN0YXR1cywgUG9zdFR5cGUsIFRlcm0gfSBmcm9tICcuL3dwLWFwaSc7XHJcbmltcG9ydCB7IFJlc3RDbGllbnQgfSBmcm9tICcuL3Jlc3QtY2xpZW50JztcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNGdW5jdGlvbiwgaXNOdW1iZXIsIGlzT2JqZWN0LCBpc1N0cmluZywgdGVtcGxhdGUgfSBmcm9tICdsb2Rhc2gtZXMnO1xyXG5pbXBvcnQgeyBTYWZlQW55IH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IFdwUHJvZmlsZSB9IGZyb20gJy4vd3AtcHJvZmlsZSc7XHJcbmltcG9ydCB7IEZvcm1JdGVtTmFtZU1hcHBlciwgRm9ybUl0ZW1zLCBNZWRpYSB9IGZyb20gJy4vdHlwZXMnO1xyXG5pbXBvcnQgeyBmb3JtYXRJU08gfSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG5cclxuaW50ZXJmYWNlIFdwUmVzdEVuZHBvaW50IHtcclxuICBiYXNlOiBzdHJpbmcgfCBVcmxHZXR0ZXI7XHJcbiAgbmV3UG9zdDogc3RyaW5nIHwgVXJsR2V0dGVyO1xyXG4gIGVkaXRQb3N0OiBzdHJpbmcgfCBVcmxHZXR0ZXI7XHJcbiAgZ2V0Q2F0ZWdvcmllczogc3RyaW5nIHwgVXJsR2V0dGVyO1xyXG4gIG5ld1RhZzogc3RyaW5nIHwgVXJsR2V0dGVyO1xyXG4gIGdldFRhZzogc3RyaW5nIHwgVXJsR2V0dGVyO1xyXG4gIHZhbGlkYXRlVXNlcjogc3RyaW5nIHwgVXJsR2V0dGVyO1xyXG4gIHVwbG9hZEZpbGU6IHN0cmluZyB8IFVybEdldHRlcjtcclxuICBnZXRQb3N0VHlwZXM6IHN0cmluZyB8IFVybEdldHRlcjtcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFdwUmVzdENsaWVudCBleHRlbmRzIEFic3RyYWN0V29yZFByZXNzQ2xpZW50IHtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IFJlc3RDbGllbnQ7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgICByZWFkb25seSBwcm9maWxlOiBXcFByb2ZpbGUsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IFdwUmVzdENsaWVudENvbnRleHRcclxuICApIHtcclxuICAgIHN1cGVyKHBsdWdpbiwgcHJvZmlsZSk7XHJcbiAgICB0aGlzLm5hbWUgPSAnV3BSZXN0Q2xpZW50JztcclxuICAgIHRoaXMuY2xpZW50ID0gbmV3IFJlc3RDbGllbnQoe1xyXG4gICAgICB1cmw6IG5ldyBVUkwoZ2V0VXJsKHRoaXMuY29udGV4dC5lbmRwb2ludHM/LmJhc2UsIHByb2ZpbGUuZW5kcG9pbnQpKVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgbmVlZExvZ2luKCk6IGJvb2xlYW4ge1xyXG4gICAgaWYgKHRoaXMuY29udGV4dC5uZWVkTG9naW5Nb2RhbCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmNvbnRleHQubmVlZExvZ2luTW9kYWw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gIHN1cGVyLm5lZWRMb2dpbigpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgcHVibGlzaChcclxuICAgIHRpdGxlOiBzdHJpbmcsXHJcbiAgICBjb250ZW50OiBzdHJpbmcsXHJcbiAgICBwb3N0UGFyYW1zOiBXb3JkUHJlc3NQb3N0UGFyYW1zLFxyXG4gICAgY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXNcclxuICApOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdDxXb3JkUHJlc3NQdWJsaXNoUmVzdWx0Pj4ge1xyXG4gICAgbGV0IHVybDogc3RyaW5nO1xyXG4gICAgaWYgKHBvc3RQYXJhbXMucG9zdElkKSB7XHJcbiAgICAgIHVybCA9IGdldFVybCh0aGlzLmNvbnRleHQuZW5kcG9pbnRzPy5lZGl0UG9zdCwgJ3dwLWpzb24vd3AvdjIvcG9zdHMvPCU9IHBvc3RJZCAlPicsIHtcclxuICAgICAgICBwb3N0SWQ6IHBvc3RQYXJhbXMucG9zdElkXHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdXJsID0gZ2V0VXJsKHRoaXMuY29udGV4dC5lbmRwb2ludHM/Lm5ld1Bvc3QsICd3cC1qc29uL3dwL3YyL3Bvc3RzJyk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBleHRyYTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xyXG4gICAgaWYgKHBvc3RQYXJhbXMuc3RhdHVzID09PSBQb3N0U3RhdHVzLkZ1dHVyZSkge1xyXG4gICAgICBleHRyYS5kYXRlID0gZm9ybWF0SVNPKHBvc3RQYXJhbXMuZGF0ZXRpbWUgPz8gbmV3IERhdGUoKSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXNwOiBTYWZlQW55ID0gYXdhaXQgdGhpcy5jbGllbnQuaHR0cFBvc3QoXHJcbiAgICAgIHVybCxcclxuICAgICAge1xyXG4gICAgICAgIHRpdGxlLFxyXG4gICAgICAgIGNvbnRlbnQsXHJcbiAgICAgICAgc3RhdHVzOiBwb3N0UGFyYW1zLnN0YXR1cyxcclxuICAgICAgICBjb21tZW50X3N0YXR1czogcG9zdFBhcmFtcy5jb21tZW50U3RhdHVzLFxyXG4gICAgICAgIGNhdGVnb3JpZXM6IHBvc3RQYXJhbXMuY2F0ZWdvcmllcyxcclxuICAgICAgICB0YWdzOiBwb3N0UGFyYW1zLnRhZ3MgPz8gW10sXHJcbiAgICAgICAgLi4uZXh0cmFcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29udGV4dC5nZXRIZWFkZXJzKGNlcnRpZmljYXRlKVxyXG4gICAgICB9KTtcclxuICAgIGNvbnNvbGUubG9nKCdXcFJlc3RDbGllbnQgcmVzcG9uc2UnLCByZXNwKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuY29udGV4dC5yZXNwb25zZVBhcnNlci50b1dvcmRQcmVzc1B1Ymxpc2hSZXN1bHQocG9zdFBhcmFtcywgcmVzcCk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5PSyxcclxuICAgICAgICBkYXRhOiByZXN1bHQsXHJcbiAgICAgICAgcmVzcG9uc2U6IHJlc3BcclxuICAgICAgfTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLkVycm9yLFxyXG4gICAgICAgIGVycm9yOiB7XHJcbiAgICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLlNlcnZlckludGVybmFsRXJyb3IsXHJcbiAgICAgICAgICBtZXNzYWdlOiB0aGlzLnBsdWdpbi5pMThuLnQoJ2Vycm9yX2Nhbm5vdFBhcnNlUmVzcG9uc2UnKVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcmVzcG9uc2U6IHJlc3BcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldENhdGVnb3JpZXMoY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXMpOiBQcm9taXNlPFRlcm1bXT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50Lmh0dHBHZXQoXHJcbiAgICAgIGdldFVybCh0aGlzLmNvbnRleHQuZW5kcG9pbnRzPy5nZXRDYXRlZ29yaWVzLCAnd3AtanNvbi93cC92Mi9jYXRlZ29yaWVzP3Blcl9wYWdlPTEwMCcpLFxyXG4gICAgICB7XHJcbiAgICAgICAgaGVhZGVyczogdGhpcy5jb250ZXh0LmdldEhlYWRlcnMoY2VydGlmaWNhdGUpXHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIHRoaXMuY29udGV4dC5yZXNwb25zZVBhcnNlci50b1Rlcm1zKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0UG9zdFR5cGVzKGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxQb3N0VHlwZVtdPiB7XHJcbiAgICBjb25zdCBkYXRhOiBTYWZlQW55ID0gYXdhaXQgdGhpcy5jbGllbnQuaHR0cEdldChcclxuICAgICAgZ2V0VXJsKHRoaXMuY29udGV4dC5lbmRwb2ludHM/LmdldFBvc3RUeXBlcywgJ3dwLWpzb24vd3AvdjIvdHlwZXMnKSxcclxuICAgICAge1xyXG4gICAgICAgIGhlYWRlcnM6IHRoaXMuY29udGV4dC5nZXRIZWFkZXJzKGNlcnRpZmljYXRlKVxyXG4gICAgICB9KTtcclxuICAgIHJldHVybiB0aGlzLmNvbnRleHQucmVzcG9uc2VQYXJzZXIudG9Qb3N0VHlwZXMoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB2YWxpZGF0ZVVzZXIoY2VydGlmaWNhdGU6IFdvcmRQcmVzc0F1dGhQYXJhbXMpOiBQcm9taXNlPFdvcmRQcmVzc0NsaWVudFJlc3VsdDxib29sZWFuPj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuY2xpZW50Lmh0dHBHZXQoXHJcbiAgICAgICAgZ2V0VXJsKHRoaXMuY29udGV4dC5lbmRwb2ludHM/LnZhbGlkYXRlVXNlciwgYHdwLWpzb24vd3AvdjIvdXNlcnMvbWVgKSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbnRleHQuZ2V0SGVhZGVycyhjZXJ0aWZpY2F0ZSlcclxuICAgICAgICB9KTtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICBjb2RlOiBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlLk9LLFxyXG4gICAgICAgIGRhdGE6ICEhZGF0YSxcclxuICAgICAgICByZXNwb25zZTogZGF0YVxyXG4gICAgICB9O1xyXG4gICAgfSBjYXRjaChlcnJvcikge1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuRXJyb3IsXHJcbiAgICAgICAgZXJyb3I6IHtcclxuICAgICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuRXJyb3IsXHJcbiAgICAgICAgICBtZXNzYWdlOiB0aGlzLnBsdWdpbi5pMThuLnQoJ2Vycm9yX2ludmFsaWRVc2VyJyksXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNwb25zZTogZXJyb3JcclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRhZyhuYW1lOiBzdHJpbmcsIGNlcnRpZmljYXRlOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUHJvbWlzZTxUZXJtPiB7XHJcbiAgICBjb25zdCB0ZXJtUmVzcDogU2FmZUFueSA9IGF3YWl0IHRoaXMuY2xpZW50Lmh0dHBHZXQoXHJcbiAgICAgIGdldFVybCh0aGlzLmNvbnRleHQuZW5kcG9pbnRzPy5nZXRUYWcsICd3cC1qc29uL3dwL3YyL3RhZ3M/bnVtYmVyPTEmc2VhcmNoPTwlPSBuYW1lICU+Jywge1xyXG4gICAgICAgIG5hbWVcclxuICAgICAgfSksXHJcbiAgICApO1xyXG4gICAgY29uc3QgZXhpc3RzID0gdGhpcy5jb250ZXh0LnJlc3BvbnNlUGFyc2VyLnRvVGVybXModGVybVJlc3ApO1xyXG4gICAgaWYgKGV4aXN0cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgY29uc3QgcmVzcCA9IGF3YWl0IHRoaXMuY2xpZW50Lmh0dHBQb3N0KFxyXG4gICAgICAgIGdldFVybCh0aGlzLmNvbnRleHQuZW5kcG9pbnRzPy5uZXdUYWcsICd3cC1qc29uL3dwL3YyL3RhZ3MnKSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBoZWFkZXJzOiB0aGlzLmNvbnRleHQuZ2V0SGVhZGVycyhjZXJ0aWZpY2F0ZSlcclxuICAgICAgICB9KTtcclxuICAgICAgY29uc29sZS5sb2coJ1dwUmVzdENsaWVudCBuZXdUYWcgcmVzcG9uc2UnLCByZXNwKTtcclxuICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5yZXNwb25zZVBhcnNlci50b1Rlcm0ocmVzcCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gZXhpc3RzWzBdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkTWVkaWEobWVkaWE6IE1lZGlhLCBjZXJ0aWZpY2F0ZTogV29yZFByZXNzQXV0aFBhcmFtcyk6IFByb21pc2U8V29yZFByZXNzQ2xpZW50UmVzdWx0PFdvcmRQcmVzc01lZGlhVXBsb2FkUmVzdWx0Pj4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZm9ybUl0ZW1zID0gbmV3IEZvcm1JdGVtcygpO1xyXG4gICAgICBmb3JtSXRlbXMuYXBwZW5kKCdmaWxlJywgbWVkaWEpO1xyXG5cclxuICAgICAgY29uc3QgcmVzcG9uc2U6IFNhZmVBbnkgPSBhd2FpdCB0aGlzLmNsaWVudC5odHRwUG9zdChcclxuICAgICAgICBnZXRVcmwodGhpcy5jb250ZXh0LmVuZHBvaW50cz8udXBsb2FkRmlsZSwgJ3dwLWpzb24vd3AvdjIvbWVkaWEnKSxcclxuICAgICAgICBmb3JtSXRlbXMsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgICAgICAuLi50aGlzLmNvbnRleHQuZ2V0SGVhZGVycyhjZXJ0aWZpY2F0ZSlcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmb3JtSXRlbU5hbWVNYXBwZXI6IHRoaXMuY29udGV4dC5mb3JtSXRlbU5hbWVNYXBwZXJcclxuICAgICAgICB9KTtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jb250ZXh0LnJlc3BvbnNlUGFyc2VyLnRvV29yZFByZXNzTWVkaWFVcGxvYWRSZXN1bHQocmVzcG9uc2UpO1xyXG4gICAgICByZXR1cm4ge1xyXG4gICAgICAgIGNvZGU6IFdvcmRQcmVzc0NsaWVudFJldHVybkNvZGUuT0ssXHJcbiAgICAgICAgZGF0YTogcmVzdWx0LFxyXG4gICAgICAgIHJlc3BvbnNlXHJcbiAgICAgIH07XHJcbiAgICB9IGNhdGNoIChlOiBTYWZlQW55KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ3VwbG9hZE1lZGlhJywgZSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcixcclxuICAgICAgICBlcnJvcjoge1xyXG4gICAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5TZXJ2ZXJJbnRlcm5hbEVycm9yLFxyXG4gICAgICAgICAgbWVzc2FnZTogZS50b1N0cmluZygpXHJcbiAgICAgICAgfSxcclxuICAgICAgICByZXNwb25zZTogdW5kZWZpbmVkXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufVxyXG5cclxudHlwZSBVcmxHZXR0ZXIgPSAoKSA9PiBzdHJpbmc7XHJcblxyXG5mdW5jdGlvbiBnZXRVcmwoXHJcbiAgdXJsOiBzdHJpbmcgfCBVcmxHZXR0ZXIgfCB1bmRlZmluZWQsXHJcbiAgZGVmYXVsdFZhbHVlOiBzdHJpbmcsXHJcbiAgcGFyYW1zPzogeyBbcDogc3RyaW5nXTogc3RyaW5nIHwgbnVtYmVyIH1cclxuKTogc3RyaW5nIHtcclxuICBsZXQgcmVzdWx0VXJsOiBzdHJpbmc7XHJcbiAgaWYgKGlzU3RyaW5nKHVybCkpIHtcclxuICAgIHJlc3VsdFVybCA9IHVybDtcclxuICB9IGVsc2UgaWYgKGlzRnVuY3Rpb24odXJsKSkge1xyXG4gICAgcmVzdWx0VXJsID0gdXJsKCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJlc3VsdFVybCA9IGRlZmF1bHRWYWx1ZTtcclxuICB9XHJcbiAgaWYgKHBhcmFtcykge1xyXG4gICAgY29uc3QgY29tcGlsZWQgPSB0ZW1wbGF0ZShyZXN1bHRVcmwpO1xyXG4gICAgcmV0dXJuIGNvbXBpbGVkKHBhcmFtcyk7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiByZXN1bHRVcmw7XHJcbiAgfVxyXG59XHJcblxyXG5pbnRlcmZhY2UgV3BSZXN0Q2xpZW50Q29udGV4dCB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG5cclxuICByZXNwb25zZVBhcnNlcjoge1xyXG4gICAgdG9Xb3JkUHJlc3NQdWJsaXNoUmVzdWx0OiAocG9zdFBhcmFtczogV29yZFByZXNzUG9zdFBhcmFtcywgcmVzcG9uc2U6IFNhZmVBbnkpID0+IFdvcmRQcmVzc1B1Ymxpc2hSZXN1bHQ7XHJcbiAgICAvKipcclxuICAgICAqIENvbnZlcnQgcmVzcG9uc2UgdG8gYFdvcmRQcmVzc01lZGlhVXBsb2FkUmVzdWx0YC5cclxuICAgICAqXHJcbiAgICAgKiBJZiB0aGVyZSBpcyBhbnkgZXJyb3IsIHRocm93IG5ldyBlcnJvciBkaXJlY3RseS5cclxuICAgICAqIEBwYXJhbSByZXNwb25zZSByZXNwb25zZSBmcm9tIHJlbW90ZSBzZXJ2ZXJcclxuICAgICAqL1xyXG4gICAgdG9Xb3JkUHJlc3NNZWRpYVVwbG9hZFJlc3VsdDogKHJlc3BvbnNlOiBTYWZlQW55KSA9PiBXb3JkUHJlc3NNZWRpYVVwbG9hZFJlc3VsdDtcclxuICAgIHRvVGVybXM6IChyZXNwb25zZTogU2FmZUFueSkgPT4gVGVybVtdO1xyXG4gICAgdG9UZXJtOiAocmVzcG9uc2U6IFNhZmVBbnkpID0+IFRlcm07XHJcbiAgICB0b1Bvc3RUeXBlczogKHJlc3BvbnNlOiBTYWZlQW55KSA9PiBQb3N0VHlwZVtdO1xyXG4gIH07XHJcblxyXG4gIGVuZHBvaW50cz86IFBhcnRpYWw8V3BSZXN0RW5kcG9pbnQ+O1xyXG5cclxuICBuZWVkTG9naW5Nb2RhbD86IGJvb2xlYW47XHJcblxyXG4gIGZvcm1JdGVtTmFtZU1hcHBlcj86IEZvcm1JdGVtTmFtZU1hcHBlcjtcclxuXHJcbiAgZ2V0SGVhZGVycyh3cDogV29yZFByZXNzQXV0aFBhcmFtcyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XHJcblxyXG59XHJcblxyXG5jbGFzcyBXcFJlc3RDbGllbnRDb21tb25Db250ZXh0IGltcGxlbWVudHMgV3BSZXN0Q2xpZW50Q29udGV4dCB7XHJcbiAgbmFtZSA9ICdXcFJlc3RDbGllbnRDb21tb25Db250ZXh0JztcclxuXHJcbiAgZ2V0SGVhZGVycyh3cDogV29yZFByZXNzQXV0aFBhcmFtcyk6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgJ2F1dGhvcml6YXRpb24nOiBgQmFzaWMgJHtidG9hKGAke3dwLnVzZXJuYW1lfToke3dwLnBhc3N3b3JkfWApfWBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZXNwb25zZVBhcnNlciA9IHtcclxuICAgIHRvV29yZFByZXNzUHVibGlzaFJlc3VsdDogKHBvc3RQYXJhbXM6IFdvcmRQcmVzc1Bvc3RQYXJhbXMsIHJlc3BvbnNlOiBTYWZlQW55KTogV29yZFByZXNzUHVibGlzaFJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5pZCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBwb3N0SWQ6IHBvc3RQYXJhbXMucG9zdElkID8/IHJlc3BvbnNlLmlkLFxyXG4gICAgICAgICAgY2F0ZWdvcmllczogcG9zdFBhcmFtcy5jYXRlZ29yaWVzID8/IHJlc3BvbnNlLmNhdGVnb3JpZXNcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCd4eCcpO1xyXG4gICAgfSxcclxuICAgIHRvV29yZFByZXNzTWVkaWFVcGxvYWRSZXN1bHQ6IChyZXNwb25zZTogU2FmZUFueSk6IFdvcmRQcmVzc01lZGlhVXBsb2FkUmVzdWx0ID0+IHtcclxuICAgICAgcmV0dXJuIHtcclxuICAgICAgICB1cmw6IHJlc3BvbnNlLnNvdXJjZV91cmxcclxuICAgICAgfTtcclxuICAgIH0sXHJcbiAgICB0b1Rlcm1zOiAocmVzcG9uc2U6IFNhZmVBbnkpOiBUZXJtW10gPT4ge1xyXG4gICAgICBpZiAoaXNBcnJheShyZXNwb25zZSkpIHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2UgYXMgVGVybVtdO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH0sXHJcbiAgICB0b1Rlcm06IChyZXNwb25zZTogU2FmZUFueSk6IFRlcm0gPT4gKHtcclxuICAgICAgLi4ucmVzcG9uc2UsXHJcbiAgICAgIGlkOiByZXNwb25zZS5pZFxyXG4gICAgfSksXHJcbiAgICB0b1Bvc3RUeXBlczogKHJlc3BvbnNlOiBTYWZlQW55KTogUG9zdFR5cGVbXSA9PiB7XHJcbiAgICAgIGlmIChpc09iamVjdChyZXNwb25zZSkpIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0LmtleXMocmVzcG9uc2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV3BSZXN0Q2xpZW50TWluaU9yYW5nZUNvbnRleHQgZXh0ZW5kcyBXcFJlc3RDbGllbnRDb21tb25Db250ZXh0IHtcclxuICBuYW1lID0gJ1dwUmVzdENsaWVudE1pbmlPcmFuZ2VDb250ZXh0JztcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICBzdXBlcigpO1xyXG4gICAgY29uc29sZS5sb2coYCR7dGhpcy5uYW1lfSBsb2FkZWRgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBXcFJlc3RDbGllbnRBcHBQYXNzd29yZENvbnRleHQgZXh0ZW5kcyBXcFJlc3RDbGllbnRDb21tb25Db250ZXh0IHtcclxuICBuYW1lID0gJ1dwUmVzdENsaWVudEFwcFBhc3N3b3JkQ29udGV4dCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgc3VwZXIoKTtcclxuICAgIGNvbnNvbGUubG9nKGAke3RoaXMubmFtZX0gbG9hZGVkYCk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV3BSZXN0Q2xpZW50V3BDb21PQXV0aDJDb250ZXh0IGltcGxlbWVudHMgV3BSZXN0Q2xpZW50Q29udGV4dCB7XHJcbiAgbmFtZSA9ICdXcFJlc3RDbGllbnRXcENvbU9BdXRoMkNvbnRleHQnO1xyXG5cclxuICBuZWVkTG9naW5Nb2RhbCA9IGZhbHNlO1xyXG5cclxuICBlbmRwb2ludHM6IFdwUmVzdEVuZHBvaW50ID0ge1xyXG4gICAgYmFzZTogJ2h0dHBzOi8vcHVibGljLWFwaS53b3JkcHJlc3MuY29tJyxcclxuICAgIG5ld1Bvc3Q6ICgpID0+IGAvcmVzdC92MS4xL3NpdGVzLyR7dGhpcy5zaXRlfS9wb3N0cy9uZXdgLFxyXG4gICAgZWRpdFBvc3Q6ICgpID0+IGAvcmVzdC92MS4xL3NpdGVzLyR7dGhpcy5zaXRlfS9wb3N0cy88JT0gcG9zdElkICU+YCxcclxuICAgIGdldENhdGVnb3JpZXM6ICgpID0+IGAvcmVzdC92MS4xL3NpdGVzLyR7dGhpcy5zaXRlfS9jYXRlZ29yaWVzYCxcclxuICAgIG5ld1RhZzogKCkgPT4gYC9yZXN0L3YxLjEvc2l0ZXMvJHt0aGlzLnNpdGV9L3RhZ3MvbmV3YCxcclxuICAgIGdldFRhZzogKCkgPT4gYC9yZXN0L3YxLjEvc2l0ZXMvJHt0aGlzLnNpdGV9L3RhZ3M/bnVtYmVyPTEmc2VhcmNoPTwlPSBuYW1lICU+YCxcclxuICAgIHZhbGlkYXRlVXNlcjogKCkgPT4gYC9yZXN0L3YxLjEvc2l0ZXMvJHt0aGlzLnNpdGV9L3Bvc3RzP251bWJlcj0xYCxcclxuICAgIHVwbG9hZEZpbGU6ICgpID0+IGAvcmVzdC92MS4xL3NpdGVzLyR7dGhpcy5zaXRlfS9tZWRpYS9uZXdgLFxyXG4gICAgZ2V0UG9zdFR5cGVzOiAoKSA9PiBgL3Jlc3QvdjEuMS9zaXRlcy8ke3RoaXMuc2l0ZX0vcG9zdC10eXBlc2AsXHJcbiAgfTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNpdGU6IHN0cmluZyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWNjZXNzVG9rZW46IHN0cmluZ1xyXG4gICkge1xyXG4gICAgY29uc29sZS5sb2coYCR7dGhpcy5uYW1lfSBsb2FkZWRgKTtcclxuICB9XHJcblxyXG4gIGZvcm1JdGVtTmFtZU1hcHBlcihuYW1lOiBzdHJpbmcsIGlzQXJyYXk6IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKG5hbWUgPT09ICdmaWxlJyAmJiAhaXNBcnJheSkge1xyXG4gICAgICByZXR1cm4gJ21lZGlhW10nO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJzKHdwOiBXb3JkUHJlc3NBdXRoUGFyYW1zKTogUmVjb3JkPHN0cmluZywgc3RyaW5nPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAnYXV0aG9yaXphdGlvbic6IGBCRUFSRVIgJHt0aGlzLmFjY2Vzc1Rva2VufWBcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICByZXNwb25zZVBhcnNlciA9IHtcclxuICAgIHRvV29yZFByZXNzUHVibGlzaFJlc3VsdDogKHBvc3RQYXJhbXM6IFdvcmRQcmVzc1Bvc3RQYXJhbXMsIHJlc3BvbnNlOiBTYWZlQW55KTogV29yZFByZXNzUHVibGlzaFJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5JRCkge1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBwb3N0SWQ6IHBvc3RQYXJhbXMucG9zdElkID8/IHJlc3BvbnNlLklELFxyXG4gICAgICAgICAgY2F0ZWdvcmllczogcG9zdFBhcmFtcy5jYXRlZ29yaWVzID8/IE9iamVjdC52YWx1ZXMocmVzcG9uc2UuY2F0ZWdvcmllcykubWFwKChjYXQ6IFNhZmVBbnkpID0+IGNhdC5JRClcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcigneHgnKTtcclxuICAgIH0sXHJcbiAgICB0b1dvcmRQcmVzc01lZGlhVXBsb2FkUmVzdWx0OiAocmVzcG9uc2U6IFNhZmVBbnkpOiBXb3JkUHJlc3NNZWRpYVVwbG9hZFJlc3VsdCA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5tZWRpYS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgY29uc3QgbWVkaWEgPSByZXNwb25zZS5tZWRpYVswXTtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgdXJsOiBtZWRpYS5saW5rXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIGlmIChyZXNwb25zZS5lcnJvcnMpIHtcclxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2UuZXJyb3JzLmVycm9yLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVXBsb2FkIGZhaWxlZCcpO1xyXG4gICAgfSxcclxuICAgIHRvVGVybXM6IChyZXNwb25zZTogU2FmZUFueSk6IFRlcm1bXSA9PiB7XHJcbiAgICAgIGlmIChpc051bWJlcihyZXNwb25zZS5mb3VuZCkpIHtcclxuICAgICAgICByZXR1cm4gcmVzcG9uc2VcclxuICAgICAgICAgIC5jYXRlZ29yaWVzXHJcbiAgICAgICAgICAubWFwKChpdDogVGVybSAmIHsgSUQ6IG51bWJlcjsgfSkgPT4gKHtcclxuICAgICAgICAgICAgLi4uaXQsXHJcbiAgICAgICAgICAgIGlkOiBTdHJpbmcoaXQuSUQpXHJcbiAgICAgICAgICB9KSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfSxcclxuICAgIHRvVGVybTogKHJlc3BvbnNlOiBTYWZlQW55KTogVGVybSA9PiAoe1xyXG4gICAgICAuLi5yZXNwb25zZSxcclxuICAgICAgaWQ6IHJlc3BvbnNlLklEXHJcbiAgICB9KSxcclxuICAgIHRvUG9zdFR5cGVzOiAocmVzcG9uc2U6IFNhZmVBbnkpOiBQb3N0VHlwZVtdID0+IHtcclxuICAgICAgaWYgKGlzTnVtYmVyKHJlc3BvbnNlLmZvdW5kKSkge1xyXG4gICAgICAgIHJldHVybiByZXNwb25zZVxyXG4gICAgICAgICAgLnBvc3RfdHlwZXNcclxuICAgICAgICAgIC5tYXAoKGl0OiB7IG5hbWU6IHN0cmluZyB9KSA9PiAoaXQubmFtZSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9O1xyXG59XHJcbiIsICJpbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7IFdwWG1sUnBjQ2xpZW50IH0gZnJvbSAnLi93cC14bWwtcnBjLWNsaWVudCc7XHJcbmltcG9ydCB7XHJcbiAgV3BSZXN0Q2xpZW50LFxyXG4gIFdwUmVzdENsaWVudEFwcFBhc3N3b3JkQ29udGV4dCxcclxuICBXcFJlc3RDbGllbnRNaW5pT3JhbmdlQ29udGV4dCxcclxuICBXcFJlc3RDbGllbnRXcENvbU9BdXRoMkNvbnRleHRcclxufSBmcm9tICcuL3dwLXJlc3QtY2xpZW50JztcclxuaW1wb3J0IHsgV29yZFByZXNzQ2xpZW50IH0gZnJvbSAnLi93cC1jbGllbnQnO1xyXG5pbXBvcnQgeyBXcFByb2ZpbGUgfSBmcm9tICcuL3dwLXByb2ZpbGUnO1xyXG5pbXBvcnQgeyBBcGlUeXBlIH0gZnJvbSAnLi9wbHVnaW4tc2V0dGluZ3MnO1xyXG5pbXBvcnQgeyBzaG93RXJyb3IgfSBmcm9tICcuL3V0aWxzJztcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3JkUHJlc3NDbGllbnQoXHJcbiAgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4sXHJcbiAgcHJvZmlsZTogV3BQcm9maWxlXHJcbik6IFdvcmRQcmVzc0NsaWVudCB8IG51bGwge1xyXG4gIGlmICghcHJvZmlsZS5lbmRwb2ludCB8fCBwcm9maWxlLmVuZHBvaW50Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgc2hvd0Vycm9yKHBsdWdpbi5pMThuLnQoJ2Vycm9yX25vRW5kcG9pbnQnKSk7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcbiAgbGV0IGNsaWVudDogV29yZFByZXNzQ2xpZW50IHwgbnVsbCA9IG51bGw7XHJcbiAgc3dpdGNoIChwcm9maWxlLmFwaVR5cGUpIHtcclxuICAgIGNhc2UgQXBpVHlwZS5YTUxfUlBDOlxyXG4gICAgICBjbGllbnQgPSBuZXcgV3BYbWxScGNDbGllbnQocGx1Z2luLCBwcm9maWxlKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIEFwaVR5cGUuUmVzdEFQSV9taW5pT3JhbmdlOlxyXG4gICAgICBjbGllbnQgPSBuZXcgV3BSZXN0Q2xpZW50KHBsdWdpbiwgcHJvZmlsZSwgbmV3IFdwUmVzdENsaWVudE1pbmlPcmFuZ2VDb250ZXh0KCkpO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgQXBpVHlwZS5SZXN0QXBpX0FwcGxpY2F0aW9uUGFzc3dvcmRzOlxyXG4gICAgICBjbGllbnQgPSBuZXcgV3BSZXN0Q2xpZW50KHBsdWdpbiwgcHJvZmlsZSwgbmV3IFdwUmVzdENsaWVudEFwcFBhc3N3b3JkQ29udGV4dCgpKTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlIEFwaVR5cGUuUmVzdEFwaV9XcENvbU9BdXRoMjpcclxuICAgICAgaWYgKHByb2ZpbGUud3BDb21PQXV0aDJUb2tlbikge1xyXG4gICAgICAgIGNsaWVudCA9IG5ldyBXcFJlc3RDbGllbnQocGx1Z2luLCBwcm9maWxlLCBuZXcgV3BSZXN0Q2xpZW50V3BDb21PQXV0aDJDb250ZXh0KFxyXG4gICAgICAgICAgcHJvZmlsZS53cENvbU9BdXRoMlRva2VuLmJsb2dJZCxcclxuICAgICAgICAgIHByb2ZpbGUud3BDb21PQXV0aDJUb2tlbi5hY2Nlc3NUb2tlblxyXG4gICAgICAgICkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNob3dFcnJvcihwbHVnaW4uaTE4bi50KCdlcnJvcl9pbnZhbGlkV3BDb21Ub2tlbicpKTtcclxuICAgICAgfVxyXG4gICAgICBicmVhaztcclxuICAgIGRlZmF1bHQ6XHJcbiAgICAgIGNsaWVudCA9IG51bGw7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxuICByZXR1cm4gY2xpZW50O1xyXG59XHJcbiIsICJpbXBvcnQgeyBnZW5lcmF0ZVF1ZXJ5U3RyaW5nLCBvcGVuV2l0aEJyb3dzZXIgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgcmVxdWVzdFVybCB9IGZyb20gJ29ic2lkaWFuJztcclxuaW1wb3J0IHsgV29yZFByZXNzQ2xpZW50UmVzdWx0LCBXb3JkUHJlc3NDbGllbnRSZXR1cm5Db2RlIH0gZnJvbSAnLi93cC1jbGllbnQnO1xyXG5pbXBvcnQgV29yZHByZXNzUGx1Z2luIGZyb20gJy4vbWFpbic7XHJcbmltcG9ydCB7XHJcbiAgV1BfT0FVVEgyX0FVVEhPUklaRV9FTkRQT0lOVCxcclxuICBXUF9PQVVUSDJfQ0xJRU5UX0lELFxyXG4gIFdQX09BVVRIMl9DTElFTlRfU0VDUkVULFxyXG4gIFdQX09BVVRIMl9UT0tFTl9FTkRQT0lOVCxcclxuICBXUF9PQVVUSDJfVkFMSURBVEVfVE9LRU5fRU5EUE9JTlRcclxufSBmcm9tICcuL2NvbnN0cyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoMlRva2VuIHtcclxuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdvcmRQcmVzc09BdXRoMlRva2VuIGV4dGVuZHMgT0F1dGgyVG9rZW4ge1xyXG4gIHRva2VuVHlwZTogc3RyaW5nO1xyXG4gIGJsb2dJZDogc3RyaW5nO1xyXG4gIGJsb2dVcmw6IHN0cmluZztcclxuICBzY29wZTogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEdldEF1dGhvcml6ZUNvZGVQYXJhbXMge1xyXG4gIHJlZGlyZWN0VXJpOiBzdHJpbmc7XHJcbiAgc2NvcGU/OiBzdHJpbmdbXTtcclxuICBibG9nPzogc3RyaW5nO1xyXG4gIGNvZGVWZXJpZmllcj86IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBHZXRUb2tlblBhcmFtcyB7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIHJlZGlyZWN0VXJpOiBzdHJpbmc7XHJcbiAgY29kZVZlcmlmaWVyPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRlVG9rZW5QYXJhbXMge1xyXG4gIHRva2VuOiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGgyT3B0aW9ucyB7XHJcbiAgY2xpZW50SWQ6IHN0cmluZztcclxuICBjbGllbnRTZWNyZXQ6IHN0cmluZztcclxuICB0b2tlbkVuZHBvaW50OiBzdHJpbmc7XHJcbiAgYXV0aG9yaXplRW5kcG9pbnQ6IHN0cmluZztcclxuICB2YWxpZGF0ZVRva2VuRW5kcG9pbnQ/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBPQXV0aDJDbGllbnQge1xyXG5cclxuICBzdGF0aWMgZ2V0V3BPQXV0aDJDbGllbnQocGx1Z2luOiBXb3JkcHJlc3NQbHVnaW4pOiBPQXV0aDJDbGllbnQge1xyXG4gICAgcmV0dXJuIG5ldyBPQXV0aDJDbGllbnQoe1xyXG4gICAgICBjbGllbnRJZDogV1BfT0FVVEgyX0NMSUVOVF9JRCxcclxuICAgICAgY2xpZW50U2VjcmV0OiBXUF9PQVVUSDJfQ0xJRU5UX1NFQ1JFVCxcclxuICAgICAgdG9rZW5FbmRwb2ludDogV1BfT0FVVEgyX1RPS0VOX0VORFBPSU5ULFxyXG4gICAgICBhdXRob3JpemVFbmRwb2ludDogV1BfT0FVVEgyX0FVVEhPUklaRV9FTkRQT0lOVCxcclxuICAgICAgdmFsaWRhdGVUb2tlbkVuZHBvaW50OiBXUF9PQVVUSDJfVkFMSURBVEVfVE9LRU5fRU5EUE9JTlRcclxuICAgIH0sIHBsdWdpbik7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogT0F1dGgyT3B0aW9ucyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW5cclxuICApIHtcclxuICAgIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0QXV0aG9yaXplQ29kZShwYXJhbXM6IEdldEF1dGhvcml6ZUNvZGVQYXJhbXMpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGNvbnN0IHF1ZXJ5OiB7XHJcbiAgICAgIGNsaWVudF9pZDogc3RyaW5nO1xyXG4gICAgICByZXNwb25zZV90eXBlOiAnY29kZSc7XHJcbiAgICAgIHJlZGlyZWN0X3VyaTogc3RyaW5nO1xyXG4gICAgICBjb2RlX2NoYWxsZW5nZV9tZXRob2Q/OiAncGxhaW4nIHwgJ1MyNTYnO1xyXG4gICAgICBjb2RlX2NoYWxsZW5nZT86IHN0cmluZztcclxuICAgICAgYmxvZz86IHN0cmluZztcclxuICAgICAgc2NvcGU/OiBzdHJpbmc7XHJcbiAgICB9ID0ge1xyXG4gICAgICBjbGllbnRfaWQ6IHRoaXMub3B0aW9ucy5jbGllbnRJZCxcclxuICAgICAgcmVzcG9uc2VfdHlwZTogJ2NvZGUnLFxyXG4gICAgICByZWRpcmVjdF91cmk6IHBhcmFtcy5yZWRpcmVjdFVyaSxcclxuICAgICAgYmxvZzogcGFyYW1zLmJsb2csXHJcbiAgICAgIHNjb3BlOiB1bmRlZmluZWRcclxuICAgIH07XHJcbiAgICBpZiAocGFyYW1zLnNjb3BlKSB7XHJcbiAgICAgIHF1ZXJ5LnNjb3BlID0gcGFyYW1zLnNjb3BlLmpvaW4oJyAnKTtcclxuICAgIH1cclxuICAgIGlmIChwYXJhbXMuY29kZVZlcmlmaWVyKSB7XHJcbiAgICAgIGNvbnN0IGNvZGVDaGFsbGVuZ2UgPSBhd2FpdCBnZXRDb2RlQ2hhbGxlbmdlKHBhcmFtcy5jb2RlVmVyaWZpZXIpO1xyXG4gICAgICBxdWVyeS5jb2RlX2NoYWxsZW5nZV9tZXRob2QgPSBjb2RlQ2hhbGxlbmdlPy5bMF07XHJcbiAgICAgIHF1ZXJ5LmNvZGVfY2hhbGxlbmdlID0gY29kZUNoYWxsZW5nZT8uWzFdO1xyXG4gICAgfVxyXG4gICAgb3BlbldpdGhCcm93c2VyKHRoaXMub3B0aW9ucy5hdXRob3JpemVFbmRwb2ludCwgcXVlcnkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VG9rZW4ocGFyYW1zOiBHZXRUb2tlblBhcmFtcyk6IFByb21pc2U8V29yZFByZXNzT0F1dGgyVG9rZW4+IHtcclxuICAgIGNvbnN0IGJvZHk6IHtcclxuICAgICAgZ3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZSc7XHJcbiAgICAgIGNsaWVudF9pZDogc3RyaW5nO1xyXG4gICAgICBjb2RlOiBzdHJpbmc7XHJcbiAgICAgIHJlZGlyZWN0X3VyaTogc3RyaW5nO1xyXG4gICAgfSA9IHtcclxuICAgICAgZ3JhbnRfdHlwZTogJ2F1dGhvcml6YXRpb25fY29kZScsXHJcbiAgICAgIGNsaWVudF9pZDogdGhpcy5vcHRpb25zLmNsaWVudElkLFxyXG4gICAgICBjb2RlOiBwYXJhbXMuY29kZSxcclxuICAgICAgcmVkaXJlY3RfdXJpOiBwYXJhbXMucmVkaXJlY3RVcmlcclxuICAgIH07XHJcbiAgICByZXR1cm4gcmVxdWVzdFVybCh7XHJcbiAgICAgIHVybDogdGhpcy5vcHRpb25zLnRva2VuRW5kcG9pbnQsXHJcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxyXG4gICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnLFxyXG4gICAgICAgICdVc2VyLUFnZW50JzogJ29ic2lkaWFuLm1kJ1xyXG4gICAgICB9LFxyXG4gICAgICBib2R5OiBnZW5lcmF0ZVF1ZXJ5U3RyaW5nKGJvZHkpXHJcbiAgICB9KVxyXG4gICAgICAudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2dldFRva2VuIHJlc3BvbnNlJywgcmVzcG9uc2UpO1xyXG4gICAgICAgIGNvbnN0IHJlc3AgPSByZXNwb25zZS5qc29uO1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICBhY2Nlc3NUb2tlbjogcmVzcC5hY2Nlc3NfdG9rZW4sXHJcbiAgICAgICAgICB0b2tlblR5cGU6IHJlc3AudG9rZW5fdHlwZSxcclxuICAgICAgICAgIGJsb2dJZDogcmVzcC5ibG9nX2lkLFxyXG4gICAgICAgICAgYmxvZ1VybDogcmVzcC5ibG9nX3VybCxcclxuICAgICAgICAgIHNjb3BlOiByZXNwLnNjb3BlXHJcbiAgICAgICAgfTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB2YWxpZGF0ZVRva2VuKHBhcmFtczogVmFsaWRhdGVUb2tlblBhcmFtcyk6IFByb21pc2U8V29yZFByZXNzQ2xpZW50UmVzdWx0PHN0cmluZz4+IHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnZhbGlkYXRlVG9rZW5FbmRwb2ludCkge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHZhbGlkYXRlIHRva2VuIGVuZHBvaW50IHNldC4nKTtcclxuICAgIH1cclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVxdWVzdFVybCh7XHJcbiAgICAgICAgdXJsOiBgJHt0aGlzLm9wdGlvbnMudmFsaWRhdGVUb2tlbkVuZHBvaW50fT9jbGllbnRfaWQ9JHt0aGlzLm9wdGlvbnMuY2xpZW50SWR9JnRva2VuPSR7cGFyYW1zLnRva2VufWAsXHJcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICBoZWFkZXJzOiB7XHJcbiAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxyXG4gICAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2JzaWRpYW4ubWQnXHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgY29uc29sZS5sb2coJ3ZhbGlkYXRlVG9rZW4gcmVzcG9uc2UnLCByZXNwb25zZSk7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5PSyxcclxuICAgICAgICBkYXRhOiAnZG9uZScsXHJcbiAgICAgICAgcmVzcG9uc2VcclxuICAgICAgfTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHJldHVybiB7XHJcbiAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcixcclxuICAgICAgICBlcnJvcjoge1xyXG4gICAgICAgICAgY29kZTogV29yZFByZXNzQ2xpZW50UmV0dXJuQ29kZS5FcnJvcixcclxuICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucGx1Z2luLmkxOG4udCgnZXJyb3JfaW52YWxpZFdwQ29tVG9rZW4nKSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHJlc3BvbnNlOiBlcnJvclxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQ29kZVZlcmlmaWVyKCk6IHN0cmluZyB7XHJcbiAgY29uc3QgYXJyID0gbmV3IFVpbnQ4QXJyYXkoMzIpO1xyXG4gIGNyeXB0by5nZXRSYW5kb21WYWx1ZXMoYXJyKTtcclxuICByZXR1cm4gYmFzZTY0VXJsKGFycik7XHJcbn1cclxuXHJcbmFzeW5jIGZ1bmN0aW9uIGdldENvZGVDaGFsbGVuZ2UoY29kZVZlcmlmaWVyOiBzdHJpbmcpOiBQcm9taXNlPFsncGxhaW4nIHwgJ1MyNTYnLCBzdHJpbmddPiB7XHJcbiAgcmV0dXJuIFsnUzI1NicsIGJhc2U2NFVybChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIHN0cmluZ1RvQnVmZmVyKGNvZGVWZXJpZmllcikpKV07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHN0cmluZ1RvQnVmZmVyKGlucHV0OiBzdHJpbmcpOiBBcnJheUJ1ZmZlciB7XHJcbiAgY29uc3QgYnVmID0gbmV3IFVpbnQ4QXJyYXkoaW5wdXQubGVuZ3RoKTtcclxuICBmb3IobGV0IGkgPSAwOyBpIDwgaW5wdXQubGVuZ3RoOyBpKyspIHtcclxuICAgIGJ1ZltpXSA9IGlucHV0LmNoYXJDb2RlQXQoaSkgJiAweEZGO1xyXG4gIH1cclxuICByZXR1cm4gYnVmO1xyXG59XHJcblxyXG5mdW5jdGlvbiBiYXNlNjRVcmwoYnVmOiBBcnJheUJ1ZmZlcik6IHN0cmluZyB7XHJcbiAgcmV0dXJuIGJ0b2EoU3RyaW5nLmZyb21DaGFyQ29kZSguLi5uZXcgVWludDhBcnJheShidWYpKSlcclxuICAgIC5yZXBsYWNlKC9cXCsvZywgJy0nKVxyXG4gICAgLnJlcGxhY2UoL1xcLy9nLCAnXycpXHJcbiAgICAucmVwbGFjZSgvPSskLywgJycpO1xyXG59XHJcbiIsICJpbXBvcnQgeyBhZGRJY29uIH0gZnJvbSAnb2JzaWRpYW4nO1xyXG5cclxuY29uc3QgaWNvbnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XHJcbiAgJ3dwLWxvZ28nOiBgXHJcbjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiPlxyXG4gIDxnIGZpbGw9XCJjdXJyZW50Q29sb3JcIj5cclxuICAgIDxwYXRoIGQ9XCJNIDcuMTA5Mzc1IDUwIEMgNy4xMDkzNzUgNjYuOTc2NTYyIDE2Ljk3NjU2MiA4MS42NDg0MzggMzEuMjgxMjUgODguNjAxNTYyIEwgMTAuODIwMzEyIDMyLjU0Mjk2OSBDIDguNDQxNDA2IDM3Ljg3ODkwNiA3LjEwOTM3NSA0My43ODEyNSA3LjEwOTM3NSA1MCBaIE0gNy4xMDkzNzUgNTAgXCIvPlxyXG4gICAgPHBhdGggZD1cIk0gNzguOTU3MDMxIDQ3LjgzNTkzOCBDIDc4Ljk1NzAzMSA0Mi41MzUxNTYgNzcuMDU0Njg4IDM4Ljg2MzI4MSA3NS40MjE4NzUgMzYuMDAzOTA2IEMgNzMuMjQ2MDk0IDMyLjQ3MjY1NiA3MS4yMDcwMzEgMjkuNDgwNDY5IDcxLjIwNzAzMSAyNS45NDUzMTIgQyA3MS4yMDcwMzEgMjIuMDAzOTA2IDc0LjE5OTIxOSAxOC4zMzIwMzEgNzguNDEwMTU2IDE4LjMzMjAzMSBDIDc4LjYwMTU2MiAxOC4zMzIwMzEgNzguNzgxMjUgMTguMzU1NDY5IDc4Ljk2ODc1IDE4LjM2NzE4OCBDIDcxLjMzNTkzOCAxMS4zNzUgNjEuMTY3OTY5IDcuMTA1NDY5IDUwIDcuMTA1NDY5IEMgMzUuMDE1NjI1IDcuMTA1NDY5IDIxLjgzMjAzMSAxNC43OTY4NzUgMTQuMTY0MDYyIDI2LjQ0MTQwNiBDIDE1LjE2Nzk2OSAyNi40NzI2NTYgMTYuMTE3MTg4IDI2LjQ5MjE4OCAxNi45MjE4NzUgMjYuNDkyMTg4IEMgMjEuNDEwMTU2IDI2LjQ5MjE4OCAyOC4zNTU0NjkgMjUuOTQ5MjE5IDI4LjM1NTQ2OSAyNS45NDkyMTkgQyAzMC42Njc5NjkgMjUuODEyNSAzMC45NDE0MDYgMjkuMjA3MDMxIDI4LjYyODkwNiAyOS40ODA0NjkgQyAyOC42Mjg5MDYgMjkuNDgwNDY5IDI2LjMwNDY4OCAyOS43NTM5MDYgMjMuNzIyNjU2IDI5Ljg5MDYyNSBMIDM5LjMzOTg0NCA3Ni4zNTE1NjIgTCA0OC43MjY1NjIgNDguMTk5MjE5IEwgNDIuMDQyOTY5IDI5Ljg4NjcxOSBDIDM5LjczNDM3NSAyOS43NTM5MDYgMzcuNTQ2ODc1IDI5LjQ4MDQ2OSAzNy41NDY4NzUgMjkuNDgwNDY5IEMgMzUuMjM0Mzc1IDI5LjM0Mzc1IDM1LjUwNzgxMiAyNS44MDg1OTQgMzcuODE2NDA2IDI1Ljk0NTMxMiBDIDM3LjgxNjQwNiAyNS45NDUzMTIgNDQuOTAyMzQ0IDI2LjQ5MjE4OCA0OS4xMTcxODggMjYuNDkyMTg4IEMgNTMuNjAxNTYyIDI2LjQ5MjE4OCA2MC41NDY4NzUgMjUuOTQ1MzEyIDYwLjU0Njg3NSAyNS45NDUzMTIgQyA2Mi44NTkzNzUgMjUuODA4NTk0IDYzLjEzMjgxMiAyOS4yMDcwMzEgNjAuODI0MjE5IDI5LjQ4MDQ2OSBDIDYwLjgyNDIxOSAyOS40ODA0NjkgNTguNDkyMTg4IDI5Ljc1MzkwNiA1NS45MTQwNjIgMjkuODg2NzE5IEwgNzEuNDE0MDYyIDc1Ljk5NjA5NCBMIDc1LjY5MTQwNiA2MS42OTkyMTkgQyA3Ny41NDY4NzUgNTUuNzY1NjI1IDc4Ljk1NzAzMSA1MS41MDc4MTIgNzguOTU3MDMxIDQ3LjgzNTkzOCBaIE0gNzguOTU3MDMxIDQ3LjgzNTkzOCBcIi8+XHJcbiAgICA8cGF0aCBkPVwiTSA1MC43NTM5MDYgNTMuNzUgTCAzNy44ODI4MTIgOTEuMTQ4NDM4IEMgNDEuNzI2NTYyIDkyLjI3NzM0NCA0NS43ODkwNjIgOTIuODk0NTMxIDUwIDkyLjg5NDUzMSBDIDU0Ljk5NjA5NCA5Mi44OTQ1MzEgNTkuNzg1MTU2IDkyLjAzMTI1IDY0LjI0NjA5NCA5MC40NjQ4NDQgQyA2NC4xMjg5MDYgOTAuMjgxMjUgNjQuMDI3MzQ0IDkwLjA4NTkzOCA2My45NDE0MDYgODkuODcxMDk0IFogTSA1MC43NTM5MDYgNTMuNzUgXCIvPlxyXG4gICAgPHBhdGggZD1cIk0gODcuNjM2NzE5IDI5LjQxNzk2OSBDIDg3LjgyNDIxOSAzMC43ODUxNTYgODcuOTI1NzgxIDMyLjI1MzkwNiA4Ny45MjU3ODEgMzMuODMyMDMxIEMgODcuOTI1NzgxIDM4LjE4MzU5NCA4Ny4xMTMyODEgNDMuMDc0MjE5IDg0LjY2Nzk2OSA0OS4xOTUzMTIgTCA3MS41NjI1IDg3LjA3NDIxOSBDIDg0LjMxNjQwNiA3OS42NDA2MjUgOTIuODk0NTMxIDY1LjgyNDIxOSA5Mi44OTQ1MzEgNTAgQyA5Mi44OTQ1MzEgNDIuNTQyOTY5IDkwLjk4ODI4MSAzNS41MzEyNSA4Ny42MzY3MTkgMjkuNDE3OTY5IFogTSA4Ny42MzY3MTkgMjkuNDE3OTY5IFwiLz5cclxuICAgIDxwYXRoIGQ9XCJNIDUwIDAgQyAyMi40MzM1OTQgMCAwIDIyLjQyOTY4OCAwIDUwIEMgMCA3Ny41NzAzMTIgMjIuNDMzNTk0IDEwMCA1MCAxMDAgQyA3Ny41NzAzMTIgMTAwIDEwMC4wMDM5MDYgNzcuNTcwMzEyIDEwMC4wMDM5MDYgNTAgQyAxMDAuMDAzOTA2IDIyLjQyOTY4OCA3Ny41NzAzMTIgMCA1MCAwIFogTSA1MCA5Ny43MDcwMzEgQyAyMy42OTUzMTIgOTcuNzA3MDMxIDIuMjkyOTY5IDc2LjMwNDY4OCAyLjI5Mjk2OSA1MCBDIDIuMjkyOTY5IDIzLjY5NTMxMiAyMy42OTUzMTIgMi4yOTI5NjkgNTAgMi4yOTI5NjkgQyA3Ni4zMDQ2ODggMi4yOTI5NjkgOTcuNzA3MDMxIDIzLjY5NTMxMiA5Ny43MDcwMzEgNTAgQyA5Ny43MDcwMzEgNzYuMzA0Njg4IDc2LjMwNDY4OCA5Ny43MDcwMzEgNTAgOTcuNzA3MDMxIFogTSA1MCA5Ny43MDcwMzEgXCIvPlxyXG4gIDwvZz5cclxuPC9zdmc+YFxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IGFkZEljb25zID0gKCk6IHZvaWQgPT4ge1xyXG4gIE9iamVjdC5rZXlzKGljb25zKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgIGFkZEljb24oa2V5LCBpY29uc1trZXldKTtcclxuICB9KTtcclxufTtcclxuIiwgIntcclxuICBcImVycm9yX25vRW5kcG9pbnRcIjogXCJObyBXb3JkUHJlc3MgVVJMIHNldC5cIixcclxuICBcImVycm9yX25vdFdwQ29tXCI6IFwiVGhlIFVSTCBpcyBub3Qgd29yZHByZXNzLmNvbSwgcGxlYXNlIGNoZWNrIGFnYWluLlwiLFxyXG4gIFwiZXJyb3Jfbm9Vc2VybmFtZVwiOiBcIk5vIHVzZXJuYW1lXCIsXHJcbiAgXCJlcnJvcl9ub1Bhc3N3b3JkXCI6IFwiTm8gcGFzc3dvcmRcIixcclxuICBcImVycm9yX25vUHJvZmlsZVwiOiBcIk5vIHByb2ZpbGUsIHBsZWFzZSBhZGQgb25lIGF0IGxlYXN0XCIsXHJcbiAgXCJlcnJvcl9ub1Byb2ZpbGVOYW1lXCI6IFwiTm8gcHJvZmlsZSBuYW1lXCIsXHJcbiAgXCJlcnJvcl9ub1N1Y2hQcm9maWxlXCI6IFwiTm8gcHJvZmlsZSB3aXRoIG5hbWUgPCU9IHByb2ZpbGVOYW1lICU+XCIsXHJcbiAgXCJlcnJvcl9pbnZhbGlkVXJsXCI6IFwiSW52YWxpZCBVUkxcIixcclxuICBcImVycm9yX2ludmFsaWRVc2VyXCI6IFwiSW52YWxpZCB1c2VybmFtZSBvciBwYXNzd29yZFwiLFxyXG4gIFwiZXJyb3JfcHVibGlzaEZhaWxlZFwiOiBcIlBvc3QgcHVibGlzaGVkIGZhaWxlZCFcXG48JT0gY29kZSAlPjogPCU9IG1lc3NhZ2UgJT5cIixcclxuICBcImVycm9yX3dwQ29tQXV0aEZhaWxlZFwiOiBcIldvcmRQcmVzcyBhdXRob3JpemUgZmFpbGVkIVxcbjwlPSBlcnJvciAlPjogPCU9IGRlc2MgJT5cIixcclxuICBcImVycm9yX2ludmFsaWRXcENvbVRva2VuXCI6IFwiSW52YWxpZCB3b3JkcHJlc3MuY29tIHRva2VuXCIsXHJcbiAgXCJlcnJvcl9jYW5ub3RQYXJzZVJlc3BvbnNlXCI6IFwiQ2Fubm90IHBhcnNlIFdvcmRQcmVzcyBzZXJ2ZXIgcmVzcG9uc2UuXCIsXHJcbiAgXCJlcnJvcl9ub0RlZmF1bHRQcm9maWxlXCI6IFwiTm8gZGVmYXVsdCBwcm9maWxlIGZvdW5kLlwiLFxyXG4gIFwiZXJyb3JfcHJvZmlsZU5vdE1hdGNoXCI6IFwiV29yZFByZXNzIHByb2ZpbGUgbm90IG1hdGNoLiBXaGljaCBvbmUgZG8geW91IHdhbnQgdG8gdXNlP1wiLFxyXG4gIFwiZXJyb3Jfbm9BY3RpdmVGaWxlXCI6IFwiTm8gYWN0aXZlIGRvY3VtZW50IG9wZW5lZC5cIixcclxuICBcImVycm9yX21lZGlhVXBsb2FkRmFpbGVkXCI6IFwiTWVkaWEgZmlsZSA8JT0gbmFtZSAlPiB1cGxvYWQgZmFpbGVkLlwiLFxyXG4gIFwiZXJyb3Jfbm9FZGl0b3JPckZpbGVcIjogXCJObyBlZGl0b3Igb3IgZmlsZSBmb3VuZFwiLFxyXG4gIFwibWVzc2FnZV9wdWJsaXNoU3VjY2Vzc2Z1bGx5XCI6IFwiUG9zdCBwdWJsaXNoZWQgc3VjY2Vzc2Z1bGx5IVwiLFxyXG4gIFwibWVzc2FnZV9wdWJsaXNoRmFpbGVkXCI6IFwiUG9zdCBwdWJsaXNoZWQgZmFpbGVkIVwiLFxyXG4gIFwibWVzc2FnZV93cENvbVRva2VuVmFsaWRhdGVkXCI6IFwiV29yZHByZXNzLmNvbSB0b2tlbiB2YWxpZGF0ZWQgc3VjY2Vzc2Z1bGx5IVwiLFxyXG4gIFwicmliYm9uX2ljb25UaXRsZVwiOiBcIldvcmRQcmVzcyBQdWJsaXNoXCIsXHJcbiAgXCJjb21tYW5kX3B1Ymxpc2hcIjogXCJQdWJsaXNoIGN1cnJlbnQgbm90ZVwiLFxyXG4gIFwiY29tbWFuZF9wdWJsaXNoV2l0aERlZmF1bHRcIjogXCJQdWJsaXNoIGN1cnJlbnQgbm90ZSB3aXRoIGRlZmF1bHQgb3B0aW9uc1wiLFxyXG4gIFwiY29tbW9uX2JhY2tcIjogXCJCYWNrXCIsXHJcbiAgXCJjb25maXJtTW9kYWxfdGl0bGVcIjogXCJDb25maXJtYXRpb25cIixcclxuICBcImNvbmZpcm1Nb2RhbF9jYW5jZWxcIjogXCJDYW5jZWxcIixcclxuICBcImNvbmZpcm1Nb2RhbF9jb25maXJtXCI6IFwiQ29uZmlybVwiLFxyXG4gIFwic2V0dGluZ3NfdGl0bGVcIjogXCJXb3JkUHJlc3MgUHVibGlzaFwiLFxyXG4gIFwic2V0dGluZ3NfcHJvZmlsZXNcIjogXCJQcm9maWxlc1wiLFxyXG4gIFwic2V0dGluZ3NfcHJvZmlsZXNEZXNjXCI6IFwiTWFuYWdlIFdvcmRQcmVzcyBwcm9maWxlcy5cIixcclxuICBcInNldHRpbmdzX3Byb2ZpbGVzTW9kYWxcIjogXCJPcGVuXCIsXHJcbiAgXCJzZXR0aW5nc191cmxcIjogXCJXb3JkUHJlc3MgVVJMXCIsXHJcbiAgXCJzZXR0aW5nc191cmxEZXNjXCI6IFwiRnVsbCBwYXRoIG9mIGluc3RhbGxlZCBXb3JkUHJlc3MsIGZvciBleGFtcGxlLCBodHRwczovL2V4YW1wbGUuY29tL3dvcmRwcmVzc1wiLFxyXG4gIFwic2V0dGluZ3NfdXJsUGxhY2Vob2xkZXJcIjogXCJodHRwczovL2V4YW1wbGUuY29tL3dvcmRwcmVzc1wiLFxyXG4gIFwic2V0dGluZ3NfYXBpVHlwZVwiOiBcIkFQSSBUeXBlXCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlRGVzY1wiOiBcIlNlbGVjdCB3aGljaCBBUEkgeW91IHdhbnQgdG8gdXNlLlwiLFxyXG4gIFwic2V0dGluZ3NfYXBpVHlwZVhtbFJwY1wiOiBcIlhNTC1SUENcIixcclxuICBcInNldHRpbmdzX2FwaVR5cGVYbWxScGNEZXNjXCI6IFwiWE1MLVJQQyB3YXMgZW5hYmxlZCBieSBkZWZhdWx0IGJ1dCBzb21lIHNpdGVzIG1heSBkaXNhYmxlIGl0IGJlY2F1c2Ugb2Ygc2VjdXJpdHkgcHJvYmxlbXMuXCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlUmVzdE1pbmlPcmFuZ2VcIjogXCJSRVNUIEFQSSBBdXRoZW50aWNhdGlvbiBieSBtaW5pT3JhbmdlXCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlUmVzdE1pbmlPcmFuZ2VEZXNjXCI6IFwiUkVTVCBBUEkgd2FzIGVuYWJsZWQgYnkgZGVmYXVsdCBpbiBXb3JkUHJlc3MgNC43Ky4gVGhlc2UgQVBJcyBzaG91bGQgYmUgYXV0aGVudGljYXRlZCBieSBleHRyYSBwbHVnaW4gbWluaU9yYW5nZSB3aGljaCBzaG91bGQgYmUgaW5zdGFsbGVkIGFuZCBlbmFibGVkIGluIFdvcmRQcmVzcyBzZXJ2ZXIuXCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlUmVzdEFwcGxpY2F0aW9uUGFzc3dvcmRzXCI6IFwiUkVTVCBBUEkgQXV0aGVudGljYXRpb24gYnkgYXBwbGljYXRpb24gcGFzc3dvcmRzXCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlUmVzdEFwcGxpY2F0aW9uUGFzc3dvcmRzRGVzY1wiOiBcIlJFU1QgQVBJIHdhcyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gV29yZFByZXNzIDQuNysgd2hpbGUgYXBwbGljYXRpb24gcGFzc3dvcmRzIHdhcyBpbnRyb2R1Y2VkIGluIFdvcmRQcmVzcyA1LjYrLlwiLFxyXG4gIFwic2V0dGluZ3NfYXBpVHlwZVJlc3RXcENvbU9BdXRoMlwiOiBcIlJFU1QgQVBJIGZvciB3b3JkcHJlc3MuY29tXCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlUmVzdFdwQ29tT0F1dGgyRGVzY1wiOiBcIlJFU1QgQVBJIGZvciB3b3JkcHJlc3MuY29tIG9ubHkuXCIsXHJcbiAgXCJzZXR0aW5nc19zaG93UmliYm9uSWNvblwiOiBcIlNob3cgaWNvbiBpbiBzaWRlYmFyXCIsXHJcbiAgXCJzZXR0aW5nc19zaG93UmliYm9uSWNvbkRlc2NcIjogXCJJZiBlbmFibGVkLCBhIGJ1dHRvbiB3aGljaCBvcGVucyBwdWJsaXNoIHBhbmVsIHdpbGwgYmUgYWRkZWQgdG8gdGhlIE9ic2lkaWFuIHNpZGViYXIuXCIsXHJcbiAgXCJzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1c1wiOiBcIkRlZmF1bHQgUG9zdCBTdGF0dXNcIixcclxuICBcInNldHRpbmdzX2RlZmF1bHRQb3N0U3RhdHVzRGVzY1wiOiBcIlBvc3Qgc3RhdHVzIHdoaWNoIHdpbGwgYmUgcHVibGlzaGVkIHRvIFdvcmRQcmVzcy5cIixcclxuICBcInNldHRpbmdzX2RlZmF1bHRQb3N0U3RhdHVzRHJhZnRcIjogXCJEcmFmdFwiLFxyXG4gIFwic2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNQdWJsaXNoXCI6IFwiUHVibGlzaFwiLFxyXG4gIFwic2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNQcml2YXRlXCI6IFwiUHJpdmF0ZVwiLFxyXG4gIFwic2V0dGluZ3NfcmVtZW1iZXJMYXN0U2VsZWN0ZWRDYXRlZ29yaWVzXCI6IFwiUmVtZW1iZXIgbGFzdCBzZWxlY3RlZCBjYXRlZ29yaWVzXCIsXHJcbiAgXCJzZXR0aW5nc19yZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXNEZXNjXCI6IFwiUmVtZW1iZXIgbGFzdCBzZWxlY3RlZCBwb3N0IGNhdGVnb3JpZXMgb2YgdGhpcyBzaXRlLlwiLFxyXG4gIFwic2V0dGluZ3Nfc2hvd1dvcmRQcmVzc0VkaXRQYWdlTW9kYWxcIjogXCJTaG93IFdvcmRQcmVzcyBlZGl0IGNvbmZpcm1hdGlvblwiLFxyXG4gIFwic2V0dGluZ3Nfc2hvd1dvcmRQcmVzc0VkaXRQYWdlTW9kYWxEZXNjXCI6IFwiU2hvdyBvcGVuIFdvcmRQcmVzcyBlZGl0IHBhZ2UgY29uZmlybWF0aW9uIHdoZW4gcHVibGlzaCBzdWNjZXNzZnVsbHlcIixcclxuICBcInNldHRpbmdzX3htbFJwY1BhdGhcIjogXCJYTUwtUlBDIFBhdGhcIixcclxuICBcInNldHRpbmdzX3htbFJwY1BhdGhEZXNjXCI6IFwiWE1MLVJQQyBQYXRoLCBkZWZhdWx0IGlzIC94bWxycGMucGhwXCIsXHJcbiAgXCJzZXR0aW5nc193cENvbU9BdXRoMlJlZnJlc2hUb2tlblwiOiBcIlJlZnJlc2ggd29yZHByZXNzLmNvbSBPQXV0aDIgdG9rZW5cIixcclxuICBcInNldHRpbmdzX3dwQ29tT0F1dGgyUmVmcmVzaFRva2VuRGVzY1wiOiBcIkNsaWNrIHJpZ2h0IGJ1dHRvbiB0byB2YWxpZGF0ZSBvciByZWZyZXNoIHdvcmRwcmVzcy5jb20gT0F1dGgyIHRva2VuLlwiLFxyXG4gIFwic2V0dGluZ3Nfd3BDb21PQXV0aDJWYWxpZGF0ZVRva2VuQnV0dG9uVGV4dFwiOiBcIlZhbGlkYXRlXCIsXHJcbiAgXCJzZXR0aW5nc193cENvbU9BdXRoMlJlZnJlc2hUb2tlbkJ1dHRvblRleHRcIjogXCJSZWZyZXNoXCIsXHJcbiAgXCJzZXR0aW5nc19kZWZhdWx0UG9zdENvbW1lbnRcIjogXCJEZWZhdWx0IENvbW1lbnQgU3RhdHVzXCIsXHJcbiAgXCJzZXR0aW5nc19kZWZhdWx0UG9zdENvbW1lbnREZXNjXCI6IFwiQ29tbWVudCBzdGF0dXMgd2hpY2ggd2lsbCBiZSBwdWJsaXNoZWQgdG8gV29yZFByZXNzLlwiLFxyXG4gIFwic2V0dGluZ3NfZGVmYXVsdFBvc3RDb21tZW50T3BlblwiOiBcIk9wZW5cIixcclxuICBcInNldHRpbmdzX2RlZmF1bHRQb3N0Q29tbWVudENsb3NlZFwiOiBcIkNsb3NlZFwiLFxyXG4gIFwic2V0dGluZ3NfbWF0aEpheE91dHB1dFR5cGVcIjogXCJNYXRoSmF4IE91dHB1dCBGb3JtYXRcIixcclxuICBcInNldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlRGVzY1wiOiBcIlNlbGVjdCBNYXRoSmF4IG91dHB1dCBmb3JtYXQuXCIsXHJcbiAgXCJzZXR0aW5nc19tYXRoSmF4T3V0cHV0VHlwZVRlWFwiOiBcIlRlWFwiLFxyXG4gIFwic2V0dGluZ3NfTWF0aEpheE91dHB1dFR5cGVUZVhEZXNjXCI6IFwiQ29udmVydCBNYXRoSmF4IHRvIFRlWCBkaXJlY3RseS4gV29yZFByZXNzIG5lZWRzIGluc3RhbGwgTWF0aEpheCByZWxhdGVkIHBsdWdpbiwgc3VjaCBhcyBzaW1wbGUtbWF0aGpheC5cIixcclxuICBcInNldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlU1ZHXCI6IFwiU1ZHXCIsXHJcbiAgXCJzZXR0aW5nc19NYXRoSmF4T3V0cHV0VHlwZVNWR0Rlc2NcIjogXCJDb252ZXJ0IE1hdGhKYXggdG8gU1ZHLiBCcm93c2VyIHJlbmRlciBTVkcsIG5vIHBsdWdpbiBuZWVkZWQgZm9yIFdvcmRQcmVzcy5cIixcclxuICBcInNldHRpbmdzX2NvbW1lbnRDb252ZXJ0TW9kZVwiOiBcIkNvbW1lbnQgY29udmVydFwiLFxyXG4gIFwic2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlRGVzY1wiOiBcIlNlbGVjdCBob3cgdG8gY29udmVydCBPYnNpZGlhbiBub3RlcyBjb21tZW50cy5cIixcclxuICBcInNldHRpbmdzX2NvbW1lbnRDb252ZXJ0TW9kZUlnbm9yZVwiOiBcIklnbm9yZVwiLFxyXG4gIFwic2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlSWdub3JlRGVzY1wiOiBcIkp1c3QgaWdub3JlIGFsbCBjb21tZW50cyBhbmQgY29udmVydCBjb21tZW50cyB0byBlbXB0eS5cIixcclxuICBcInNldHRpbmdzX2NvbW1lbnRDb252ZXJ0TW9kZUhUTUxcIjogXCJIVE1MXCIsXHJcbiAgXCJzZXR0aW5nc19jb21tZW50Q29udmVydE1vZGVIVE1MRGVzY1wiOiBcIkNvbnZlcnQgT2JzaWRpYW4gbm90ZXMgY29tbWVudHMgdG8gSFRNTCBjb21tZW50cy5cIixcclxuICBcInNldHRpbmdzX2VuYWJsZUh0bWxcIjogXCJFbmFibGUgSFRNTFwiLFxyXG4gIFwic2V0dGluZ3NfZW5hYmxlSHRtbERlc2NcIjogXCJFbmFibGUgSFRNTCB0YWdzIGluIG5vdGVzLiBUaGlzIG1pZ2h0IGNhdXNlIFhTUyBhdHRhY2sgdG8geW91ciBXb3JkUHJlc3MuXCIsXHJcbiAgXCJzZXR0aW5nc19yZXBsYWNlTWVkaWFMaW5rc1wiOiBcIlJlcGxhY2UgbWVkaWEgbGlua3NcIixcclxuICBcInNldHRpbmdzX3JlcGxhY2VNZWRpYUxpbmtzRGVzY1wiOiBcIlJlcGxhY2UgbWVkaWEgbGlua3MgdG8gV29yZFByZXNzIFVSTHMgYWZ0ZXIgdXBsb2FkaW5nLlwiLFxyXG4gIFwibG9naW5Nb2RhbF90aXRsZVwiOiBcIldvcmRQcmVzcyBMb2dpblwiLFxyXG4gIFwibG9naW5Nb2RhbF91c2VybmFtZVwiOiBcIlVzZXJuYW1lXCIsXHJcbiAgXCJsb2dpbk1vZGFsX3VzZXJuYW1lRGVzY1wiOiBcIlVzZXJuYW1lIGZvciA8JT0gdXJsICU+XCIsXHJcbiAgXCJsb2dpbk1vZGFsX3Bhc3N3b3JkXCI6IFwiUGFzc3dvcmRcIixcclxuICBcImxvZ2luTW9kYWxfcGFzc3dvcmREZXNjXCI6IFwiUGFzc3dvcmQgZm9yIDwlPSB1cmwgJT5cIixcclxuICBcImxvZ2luTW9kYWxfcmVtZW1iZXJVc2VybmFtZVwiOiBcIlJlbWVtYmVyIFVzZXJuYW1lXCIsXHJcbiAgXCJsb2dpbk1vZGFsX3JlbWVtYmVyVXNlcm5hbWVEZXNjXCI6IFwiSWYgZW5hYmxlZCwgdGhlIFdvcmRQcmVzcyB1c2VybmFtZSB5b3UgdHlwZWQgd2lsbCBiZSBzYXZlZCBpbiBsb2NhbCBkYXRhLiBUaGlzIG1pZ2h0IGJlIGRpc2Nsb3N1cmUgaW4gc3luY2hyb25pemUgc2VydmljZXMuXCIsXHJcbiAgXCJsb2dpbk1vZGFsX3JlbWVtYmVyUGFzc3dvcmRcIjogXCJSZW1lbWJlciBQYXNzd29yZFwiLFxyXG4gIFwibG9naW5Nb2RhbF9yZW1lbWJlclBhc3N3b3JkRGVzY1wiOiBcIklmIGVuYWJsZWQsIHRoZSBXb3JkUHJlc3MgcGFzc3dvcmQgeW91IHR5cGVkIHdpbGwgYmUgc2F2ZWQgaW4gbG9jYWwgZGF0YS4gVGhpcyBtaWdodCBiZSBkaXNjbG9zdXJlIGluIHN5bmNocm9uaXplIHNlcnZpY2VzLlwiLFxyXG4gIFwibG9naW5Nb2RhbF9sb2dpbkJ1dHRvblRleHRcIjogXCJMb2dpblwiLFxyXG4gIFwicHVibGlzaE1vZGFsX3RpdGxlXCI6IFwiUHVibGlzaCB0byBXb3JkUHJlc3NcIixcclxuICBcInB1Ymxpc2hNb2RhbF9wb3N0U3RhdHVzXCI6IFwiUG9zdCBTdGF0dXNcIixcclxuICBcInB1Ymxpc2hNb2RhbF9wb3N0U3RhdHVzRHJhZnRcIjogXCJEcmFmdFwiLFxyXG4gIFwicHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNQdWJsaXNoXCI6IFwiUHVibGlzaFwiLFxyXG4gIFwicHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNQcml2YXRlXCI6IFwiUHJpdmF0ZVwiLFxyXG4gIFwicHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNGdXR1cmVcIjogXCJGdXR1cmVcIixcclxuICBcInB1Ymxpc2hNb2RhbF9wb3N0RGF0ZVRpbWVcIjogXCJQb3N0IERhdGVcIixcclxuICBcInB1Ymxpc2hNb2RhbF9wb3N0RGF0ZVRpbWVEZXNjXCI6IFwiV2l0aCBmb3JtYXQgWVlZWS1NTS1ERCBvciBZWVlZLU1NLUREIEhIOk1NOlNTXCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfY29tbWVudFN0YXR1c1wiOiBcIkNvbW1lbnQgU3RhdHVzXCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfY29tbWVudFN0YXR1c09wZW5cIjogXCJPcGVuXCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfY29tbWVudFN0YXR1c0Nsb3NlZFwiOiBcIkNsb3NlZFwiLFxyXG4gIFwicHVibGlzaE1vZGFsX2NhdGVnb3J5XCI6IFwiQ2F0ZWdvcnlcIixcclxuICBcInB1Ymxpc2hNb2RhbF9wb3N0VHlwZVwiOiBcIlBvc3QgVHlwZVwiLFxyXG4gIFwicHVibGlzaE1vZGFsX3B1Ymxpc2hCdXR0b25UZXh0XCI6IFwiUHVibGlzaFwiLFxyXG4gIFwicHVibGlzaE1vZGFsX3dyb25nTWF0dGVyRGF0YUZvclBhZ2VcIjogXCJUaGVyZSBhcmUgdGFncyBvciBjYXRlZ29yaWVzIGluIG1hdHRlci1kYXRhIHdoaWNoIGFyZSBub3QgYWxsb3dlZCBmb3IgcGFnZS4gQXJlIHlvdSBzdXJlIHRvIGRlbGV0ZSB0aGVzZSBkYXRhP1wiLFxyXG4gIFwicHVibGlzaGVkTW9kYWxfdGl0bGVcIjogXCJQb3N0IHB1Ymxpc2hlZCBzdWNjZXNzZnVsbHkhXCIsXHJcbiAgXCJwdWJsaXNoZWRNb2RhbF9jb25maXJtRWRpdEluV1BcIjogXCJEbyB5b3Ugd2FudCB0byBvcGVuIFdvcmRQcmVzcyBlZGl0IHBhZ2UgaW4gYnJvd3Nlcj9cIixcclxuICBcInB1Ymxpc2hlZE1vZGFsX2NhbmNlbFwiOiBcIkNhbmNlbFwiLFxyXG4gIFwicHVibGlzaGVkTW9kYWxfb3BlblwiOiBcIk9wZW5cIixcclxuICBcInByb2ZpbGVzTWFuYWdlTW9kYWxfc2V0RGVmYXVsdFwiOiBcIlNldCBEZWZhdWx0XCIsXHJcbiAgXCJwcm9maWxlc01hbmFnZU1vZGFsX3Nob3dEZXRhaWxzXCI6IFwiRWRpdFwiLFxyXG4gIFwicHJvZmlsZXNNYW5hZ2VNb2RhbF9kZWxldGVUb29sdGlwXCI6IFwiRGVsZXRlXCIsXHJcbiAgXCJwcm9maWxlc01hbmFnZU1vZGFsX3RpdGxlXCI6IFwiUHJvZmlsZXNcIixcclxuICBcInByb2ZpbGVzTWFuYWdlTW9kYWxfY3JlYXRlXCI6IFwiQ3JlYXRlXCIsXHJcbiAgXCJwcm9maWxlc01hbmFnZU1vZGFsX2NyZWF0ZURlc2NcIjogXCJDcmVhdGVzIGEgbmV3IFdvcmRQcmVzcyBwcm9maWxlLlwiLFxyXG4gIFwicHJvZmlsZU1vZGFsX3RpdGxlXCI6IFwiUHJvZmlsZVwiLFxyXG4gIFwicHJvZmlsZU1vZGFsX1NhdmVcIjogXCJTYXZlXCIsXHJcbiAgXCJwcm9maWxlTW9kYWxfbmFtZVwiOiBcIk5hbWVcIixcclxuICBcInByb2ZpbGVNb2RhbF9uYW1lRGVzY1wiOiBcIldvcmRQcmVzcyBuYW1lIG9mIHRoaXMgcHJvZmlsZS5cIixcclxuICBcInByb2ZpbGVNb2RhbF9yZW1lbWJlclVzZXJuYW1lXCI6IFwiUmVtZW1iZXIgVXNlcm5hbWVcIixcclxuICBcInByb2ZpbGVNb2RhbF9yZW1lbWJlclBhc3N3b3JkXCI6IFwiUmVtZW1iZXIgUGFzc3dvcmRcIixcclxuICBcInByb2ZpbGVNb2RhbF9zZXREZWZhdWx0XCI6IFwiU2V0IERlZmF1bHRcIixcclxuICBcInByb2ZpbGVzQ2hvb3Nlck1vZGFsX3RpdGxlXCI6IFwiUHJvZmlsZXNcIixcclxuICBcInByb2ZpbGVzQ2hvb3Nlck1vZGFsX3BpY2tPbmVcIjogXCJDbGljayB0byBwaWNrIG9uZSBwcm9maWxlIHRvIHB1Ymxpc2guXCIsXHJcbiAgXCJwcm9maWxlc19kZWZhdWx0XCI6IFwiRGVmYXVsdCBQcm9maWxlXCIsXHJcbiAgXCJwcm9maWxlTm90TWF0Y2hfdXNlT2xkXCI6IFwiVXNlIFxcXCI8JT0gcHJvZmlsZU5hbWUgJT5cXFwiIGluIHRoZSBub3RlXCIsXHJcbiAgXCJwcm9maWxlTm90TWF0Y2hfdXNlTmV3XCI6IFwiQ3JlYXRlIGEgbmV3IHBvc3QgdXNpbmcgXFxcIjwlPSBwcm9maWxlTmFtZSAlPlxcXCJcIlxyXG59XHJcbiIsICJ7XHJcbiAgXCJlcnJvcl9ub0VuZHBvaW50XCI6IFwiXHU2Q0ExXHU2NzA5XHU4QkJFXHU3RjZFIFdvcmRQcmVzcyBVUkxcIixcclxuICBcImVycm9yX25vdFdwQ29tXCI6IFwiXHU0RTBEXHU2NjJGXHU1NDA4XHU2Q0Q1XHU3Njg0IHdvcmRwcmVzcy5jb20gXHU1NzMwXHU1NzQwXHVGRjBDXHU4QkY3XHU2OEMwXHU2N0U1XCIsXHJcbiAgXCJlcnJvcl9ub1VzZXJuYW1lXCI6IFwiXHU2Q0ExXHU2NzA5XHU4QkJFXHU3RjZFXHU3NTI4XHU2MjM3XHU1NDBEXCIsXHJcbiAgXCJlcnJvcl9ub1Bhc3N3b3JkXCI6IFwiXHU2Q0ExXHU2NzA5XHU4QkJFXHU3RjZFXHU1QkM2XHU3ODAxXCIsXHJcbiAgXCJlcnJvcl9ub1Byb2ZpbGVcIjogXCJcdTZDQTFcdTY3MDlcdThEMjZcdTUzRjdcdUZGMENcdThCRjdcdTgxRjNcdTVDMTFcdTZERkJcdTUyQTBcdTRFMDBcdTRFMkEgV29yZFByZXNzIFx1OEQyNlx1NTNGN1wiLFxyXG4gIFwiZXJyb3Jfbm9Qcm9maWxlTmFtZVwiOiBcIlx1NkNBMVx1NjcwOVx1OEJCRVx1N0Y2RVx1OEQyNlx1NTNGN1x1NTQwRFwiLFxyXG4gIFwiZXJyb3Jfbm9TdWNoUHJvZmlsZVwiOiBcIlx1OEQyNlx1NTNGNyA8JT0gcHJvZmlsZU5hbWUgJT4gXHU0RTBEXHU1QjU4XHU1NzI4XCIsXHJcbiAgXCJlcnJvcl9pbnZhbGlkVXJsXCI6IFwiVVJMIFx1NjgzQ1x1NUYwRlx1OTUxOVx1OEJFRlwiLFxyXG4gIFwiZXJyb3JfaW52YWxpZFVzZXJcIjogXCJcdTc1MjhcdTYyMzdcdTU0MERcdTYyMTZcdTVCQzZcdTc4MDFcdTk1MTlcdThCRUZcIixcclxuICBcImVycm9yX3B1Ymxpc2hGYWlsZWRcIjogXCJcdTY1ODdcdTdBRTBcdTUzRDFcdTVFMDNcdTU5MzFcdThEMjVcXG48JT0gY29kZSAlPjogPCU9IG1lc3NhZ2UgJT5cIixcclxuICBcImVycm9yX3dwQ29tQXV0aEZhaWxlZFwiOiBcIldvcmRQcmVzcyBcdThCQTRcdThCQzFcdTU5MzFcdThEMjVcdUZGMDFcXG48JT0gZXJyb3IgJT46IDwlPSBkZXNjICU+XCIsXHJcbiAgXCJlcnJvcl9pbnZhbGlkV3BDb21Ub2tlblwiOiBcIlx1OTc1RVx1NkNENVx1NzY4NCB3b3JkcHJlc3MuY29tIFx1NEVFNFx1NzI0Q1wiLFxyXG4gIFwiZXJyb3JfY2Fubm90UGFyc2VSZXNwb25zZVwiOiBcIlx1NjVFMFx1NkNENVx1OEJDNlx1NTIyQiBXb3JkUHJlc3MgXHU2NzBEXHU1MkExXHU1NjY4XHU3Njg0XHU1NENEXHU1RTk0XCIsXHJcbiAgXCJlcnJvcl9ub0RlZmF1bHRQcm9maWxlXCI6IFwiXHU2NUUwXHU2Q0Q1XHU2MjdFXHU1MjMwXHU5RUQ4XHU4QkE0XHU4RDI2XHU1M0Y3XCIsXHJcbiAgXCJlcnJvcl9wcm9maWxlTm90TWF0Y2hcIjogXCJXb3JkUHJlc3MgXHU4RDI2XHU1M0Y3XHU0RTBEXHU1MzM5XHU5MTREXHVGRjBDXHU0RjdGXHU3NTI4XHU1NEVBXHU0RTAwXHU0RTJBXHU4RDI2XHU1M0Y3XHVGRjFGXCIsXHJcbiAgXCJlcnJvcl9ub0FjdGl2ZUZpbGVcIjogXCJcdTZDQTFcdTY3MDlcdTYyNTNcdTVGMDBcdTc2ODRcdTY1ODdcdTY4NjNcIixcclxuICBcImVycm9yX21lZGlhVXBsb2FkRmFpbGVkXCI6IFwiXHU1QTkyXHU0RjUzXHU2NTg3XHU0RUY2IDwlPSBuYW1lICU+IFx1NEUwQVx1NEYyMFx1NTkzMVx1OEQyNVwiLFxyXG4gIFwiZXJyb3Jfbm9FZGl0b3JPckZpbGVcIjogXCJcdTZDQTFcdTY3MDlcdTdGMTZcdThGOTFcdTU2NjhcdTYyMTZcdTY1ODdcdTRFRjZcIixcclxuICBcIm1lc3NhZ2VfcHVibGlzaFN1Y2Nlc3NmdWxseVwiOiBcIlx1NjU4N1x1N0FFMFx1NTNEMVx1NUUwM1x1NjIxMFx1NTI5RlwiLFxyXG4gIFwibWVzc2FnZV9wdWJsaXNoRmFpbGVkXCI6IFwiXHU2NTg3XHU3QUUwXHU1M0QxXHU1RTAzXHU1OTMxXHU4RDI1XCIsXHJcbiAgXCJtZXNzYWdlX3dwQ29tVG9rZW5WYWxpZGF0ZWRcIjogXCJXb3JkcHJlc3MuY29tIFx1NEVFNFx1NzI0Q1x1OUE4Q1x1OEJDMVx1OTAxQVx1OEZDN1wiLFxyXG4gIFwicmliYm9uX2ljb25UaXRsZVwiOiBcIlx1NTNEMVx1NUUwM1x1NTIzMCBXb3JkUHJlc3NcIixcclxuICBcImNvbW1hbmRfcHVibGlzaFwiOiBcIlx1NTNEMVx1NUUwM1x1NUY1M1x1NTI0RFx1N0IxNFx1OEJCMFwiLFxyXG4gIFwiY29tbWFuZF9wdWJsaXNoV2l0aERlZmF1bHRcIjogXCJcdTRGN0ZcdTc1MjhcdTlFRDhcdThCQTRcdTUzQzJcdTY1NzBcdTUzRDFcdTVFMDNcdTVGNTNcdTUyNERcdTdCMTRcdThCQjBcIixcclxuICBcImNvbW1vbl9iYWNrXCI6IFwiXHU4RkQ0XHU1NkRFXCIsXHJcbiAgXCJjb25maXJtTW9kYWxfdGl0bGVcIjogXCJcdTk3MDBcdTg5ODFcdTc4NkVcdThCQTRcIixcclxuICBcImNvbmZpcm1Nb2RhbF9jYW5jZWxcIjogXCJcdTUzRDZcdTZEODhcIixcclxuICBcImNvbmZpcm1Nb2RhbF9jb25maXJtXCI6IFwiXHU3ODZFXHU4QkE0XCIsXHJcbiAgXCJzZXR0aW5nc190aXRsZVwiOiBcIldvcmRQcmVzcyBcdTUzRDFcdTVFMDNcdTYzRDJcdTRFRjZcIixcclxuICBcInNldHRpbmdzX3Byb2ZpbGVzXCI6IFwiV29yZFByZXNzIFx1OEQyNlx1NjIzN1wiLFxyXG4gIFwic2V0dGluZ3NfcHJvZmlsZXNEZXNjXCI6IFwiXHU3QkExXHU3NDA2IFdvcmRQcmVzcyBcdThEMjZcdTYyMzdcIixcclxuICBcInNldHRpbmdzX3Byb2ZpbGVzTW9kYWxcIjogXCJcdTYyNTNcdTVGMDBcIixcclxuICBcInNldHRpbmdzX3VybFwiOiBcIldvcmRQcmVzcyBVUkxcIixcclxuICBcInNldHRpbmdzX3VybERlc2NcIjogXCJXb3JkUHJlc3MgXHU1QjhDXHU2NTc0XHU4REVGXHU1Rjg0XHVGRjBDXHU0RjhCXHU1OTgyIGh0dHBzOi8vZXhhbXBsZS5jb20vd29yZHByZXNzXCIsXHJcbiAgXCJzZXR0aW5nc191cmxQbGFjZWhvbGRlclwiOiBcImh0dHBzOi8vZXhhbXBsZS5jb20vd29yZHByZXNzXCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlXCI6IFwiQVBJIFx1N0M3Qlx1NTc4QlwiLFxyXG4gIFwic2V0dGluZ3NfYXBpVHlwZURlc2NcIjogXCJcdTkwMDlcdTYyRTlcdTk3MDBcdTg5ODFcdTRGN0ZcdTc1MjhcdTc2ODQgQVBJIFx1N0M3Qlx1NTc4QlwiLFxyXG4gIFwic2V0dGluZ3NfYXBpVHlwZVhtbFJwY1wiOiBcIlhNTC1SUENcIixcclxuICBcInNldHRpbmdzX2FwaVR5cGVYbWxScGNEZXNjXCI6IFwiWE1MLVJQQyBcdTUzNEZcdThCQUVcdTlFRDhcdThCQTRcdTVGMDBcdTU0MkZcdUZGMENcdTRGNDZcdTY3RDBcdTRFOUJcdTYyNThcdTdCQTFcdTdBRDlcdTcwQjlcdTUzRUZcdTgwRkRcdTRGMUFcdTUxRkFcdTRFOEVcdTVCODlcdTUxNjhcdTUzOUZcdTU2RTBcdTc5ODFcdTc1MjhcIixcclxuICBcInNldHRpbmdzX2FwaVR5cGVSZXN0TWluaU9yYW5nZVwiOiBcIlJFU1QgQVBJXHVGRjA4XHU3NTMxIG1pbmlPcmFuZ2UgXHU2M0QwXHU0RjlCXHU5QThDXHU4QkMxXHVGRjA5XCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlUmVzdE1pbmlPcmFuZ2VEZXNjXCI6IFwiUkVTVCBBUEkgXHU1NzI4IFdvcmRQcmVzcyA0LjcrIFx1OUVEOFx1OEJBNFx1NUYwMFx1NTQyRlx1MzAwMlJFU1QgQVBJIFx1NzUzMVx1N0IyQ1x1NEUwOVx1NjVCOVx1NjNEMlx1NEVGNiBtaW5pT3JhbmdlIFx1NjNEMFx1NEY5Qlx1OUE4Q1x1OEJDMVx1MzAwMlx1OEJFNVx1NjNEMlx1NEVGNlx1OTcwMFx1ODk4MVx1NTcyOCBXb3JkUHJlc3MgXHU2NzBEXHU1MkExXHU1NjY4XHU1Qjg5XHU4OEM1XHU1RTc2XHU1NDJGXHU3NTI4XCIsXHJcbiAgXCJzZXR0aW5nc19hcGlUeXBlUmVzdEFwcGxpY2F0aW9uUGFzc3dvcmRzXCI6IFwiUkVTVCBBUElcdUZGMDhcdTc1MzFcdTVFOTRcdTc1MjhcdTdBMEJcdTVFOEZcdTVCQzZcdTc4MDFcdTYzRDBcdTRGOUJcdTlBOENcdThCQzFcdUZGMDlcIixcclxuICBcInNldHRpbmdzX2FwaVR5cGVSZXN0QXBwbGljYXRpb25QYXNzd29yZHNEZXNjXCI6IFwiUkVTVCBBUEkgXHU1NzI4IFdvcmRQcmVzcyA0LjcrIFx1OUVEOFx1OEJBNFx1NUYwMFx1NTQyRlx1RkYwQ1x1NUU5NFx1NzUyOFx1N0EwQlx1NUU4Rlx1NUJDNlx1NzgwMVx1NTcyOCBXb3JkUHJlc3MgNS42KyBcdTVGMTVcdTUxNjVcIixcclxuICBcInNldHRpbmdzX2FwaVR5cGVSZXN0V3BDb21PQXV0aDJcIjogXCJSRVNUIEFQSVx1RkYwOHdvcmRwcmVzcy5jb21cdUZGMDlcIixcclxuICBcInNldHRpbmdzX2FwaVR5cGVSZXN0V3BDb21PQXV0aDJEZXNjXCI6IFwiXHU0RTEzXHU0RjlCIHdvcmRwcmVzcy5jb20gXHU0RjdGXHU3NTI4XHU3Njg0IFJFU1QgQVBJXCIsXHJcbiAgXCJzZXR0aW5nc19zaG93UmliYm9uSWNvblwiOiBcIlx1NTcyOFx1OEZCOVx1NEZBN1x1NjgwRlx1NjYzRVx1NzkzQVx1NTZGRVx1NjgwN1wiLFxyXG4gIFwic2V0dGluZ3Nfc2hvd1JpYmJvbkljb25EZXNjXCI6IFwiXHU1OTgyXHU2NzlDXHU1RjAwXHU1NDJGXHVGRjBDXHU4RkI5XHU0RkE3XHU2ODBGXHU1QzA2XHU2NjNFXHU3OTNBXHU2M0QyXHU0RUY2XHU1NkZFXHU2ODA3XCIsXHJcbiAgXCJzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1c1wiOiBcIlx1OUVEOFx1OEJBNFx1NjU4N1x1N0FFMFx1NzJCNlx1NjAwMVwiLFxyXG4gIFwic2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNEZXNjXCI6IFwiXHU1M0QxXHU1RTAzXHU1MjMwIFdvcmRQcmVzcyBcdTc2ODRcdTY1ODdcdTdBRTBcdTlFRDhcdThCQTRcdTcyQjZcdTYwMDFcIixcclxuICBcInNldHRpbmdzX2RlZmF1bHRQb3N0U3RhdHVzRHJhZnRcIjogXCJcdTgzNDlcdTdBM0ZcIixcclxuICBcInNldHRpbmdzX2RlZmF1bHRQb3N0U3RhdHVzUHVibGlzaFwiOiBcIlx1NkI2M1x1NUYwRlx1NTNEMVx1NUUwM1wiLFxyXG4gIFwic2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNQcml2YXRlXCI6IFwiXHU3OUMxXHU2NzA5XCIsXHJcbiAgXCJzZXR0aW5nc19yZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXNcIjogXCJcdThCQjBcdTRGNEZcdTRFMEFcdTZCMjFcdTkwMDlcdTYyRTlcdTc2ODRcdTUyMDZcdTdDN0JcIixcclxuICBcInNldHRpbmdzX3JlbWVtYmVyTGFzdFNlbGVjdGVkQ2F0ZWdvcmllc0Rlc2NcIjogXCJcdThCQjBcdTRGNEZcdThCRTVcdTdBRDlcdTcwQjlcdTRFMEFcdTZCMjFcdTUzRDFcdTVFMDNcdTY1RjZcdTkwMDlcdTYyRTlcdTc2ODRcdTUyMDZcdTdDN0JcIixcclxuICBcInNldHRpbmdzX3Nob3dXb3JkUHJlc3NFZGl0UGFnZU1vZGFsXCI6IFwiXHU2NjNFXHU3OTNBIFdvcmRQcmVzcyBcdTdGMTZcdThGOTFcdTc4NkVcdThCQTRcdTY4NDZcIixcclxuICBcInNldHRpbmdzX3Nob3dXb3JkUHJlc3NFZGl0UGFnZU1vZGFsRGVzY1wiOiBcIlx1NTNEMVx1NUUwM1x1NjIxMFx1NTI5Rlx1NTQwRVx1NUYzOVx1NTFGQVx1NjYyRlx1NTQyNlx1OERGM1x1OEY2Q1x1NTIzMCBXb3JkUHJlc3MgXHU3RjE2XHU4RjkxXHU5ODc1XHU5NzYyXHU3Njg0XHU3ODZFXHU4QkE0XHU2ODQ2XCIsXHJcbiAgXCJzZXR0aW5nc194bWxScGNQYXRoXCI6IFwiWE1MLVJQQyBcdThERUZcdTVGODRcIixcclxuICBcInNldHRpbmdzX3htbFJwY1BhdGhEZXNjXCI6IFwiWE1MLVJQQyBcdThERUZcdTVGODRcdUZGMENcdTlFRDhcdThCQTRcdTUwM0NcdTRFM0EgL3htbHJwYy5waHBcIixcclxuICBcInNldHRpbmdzX3dwQ29tT0F1dGgyUmVmcmVzaFRva2VuXCI6IFwiXHU1MjM3XHU2NUIwIHdvcmRwcmVzcy5jb20gT0F1dGgyIFx1NEVFNFx1NzI0Q1wiLFxyXG4gIFwic2V0dGluZ3Nfd3BDb21PQXV0aDJSZWZyZXNoVG9rZW5EZXNjXCI6IFwiXHU3MEI5XHU1MUZCXHU1M0YzXHU0RkE3XHU2MzA5XHU5NEFFXHU5QThDXHU4QkMxXHU2MjE2XHU1MjM3XHU2NUIwIHdvcmRwcmVzcy5jb20gT0F1dGgyIFx1NEVFNFx1NzI0Q1wiLFxyXG4gIFwic2V0dGluZ3Nfd3BDb21PQXV0aDJWYWxpZGF0ZVRva2VuQnV0dG9uVGV4dFwiOiBcIlx1OUE4Q1x1OEJDMVwiLFxyXG4gIFwic2V0dGluZ3Nfd3BDb21PQXV0aDJSZWZyZXNoVG9rZW5CdXR0b25UZXh0XCI6IFwiXHU1MjM3XHU2NUIwXCIsXHJcbiAgXCJzZXR0aW5nc19kZWZhdWx0UG9zdENvbW1lbnRcIjogXCJcdTlFRDhcdThCQTRcdThCQzRcdThCQkFcdTcyQjZcdTYwMDFcIixcclxuICBcInNldHRpbmdzX2RlZmF1bHRQb3N0Q29tbWVudERlc2NcIjogXCJcdTUzRDFcdTVFMDNcdTUyMzAgV29yZFByZXNzIFx1NzY4NFx1NjU4N1x1N0FFMFx1OEJDNFx1OEJCQVx1OUVEOFx1OEJBNFx1NzJCNlx1NjAwMVwiLFxyXG4gIFwic2V0dGluZ3NfZGVmYXVsdFBvc3RDb21tZW50T3BlblwiOiBcIlx1NUYwMFx1NTQyRlwiLFxyXG4gIFwic2V0dGluZ3NfZGVmYXVsdFBvc3RDb21tZW50Q2xvc2VkXCI6IFwiXHU1MTczXHU5NUVEXCIsXHJcbiAgXCJzZXR0aW5nc19tYXRoSmF4T3V0cHV0VHlwZVwiOiBcIk1hdGhKYXggXHU4RjkzXHU1MUZBXHU2ODNDXHU1RjBGXCIsXHJcbiAgXCJzZXR0aW5nc19tYXRoSmF4T3V0cHV0VHlwZURlc2NcIjogXCJcdTkwMDlcdTYyRTkgTWF0aEpheCBcdTc2ODRcdThGOTNcdTUxRkFcdTY4M0NcdTVGMEZcIixcclxuICBcInNldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlVGVYXCI6IFwiVGVYXCIsXHJcbiAgXCJzZXR0aW5nc19NYXRoSmF4T3V0cHV0VHlwZVRlWERlc2NcIjogXCJcdTVDMDYgTWF0aEpheCBcdTUxNkNcdTVGMEZcdThGOTNcdTUxRkFcdTRFM0EgVGVYIFx1NjgzQ1x1NUYwRlx1MzAwMldvcmRQcmVzcyBcdTk3MDBcdTg5ODFcdTVCODlcdTg4QzUgTWF0aEpheCBcdTc2RjhcdTUxNzNcdTYzRDJcdTRFRjZcdUZGMENcdTRGOEJcdTU5ODIgc2ltcGxlLW1hdGhqYXhcIixcclxuICBcInNldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlU1ZHXCI6IFwiU1ZHXCIsXHJcbiAgXCJzZXR0aW5nc19NYXRoSmF4T3V0cHV0VHlwZVNWR0Rlc2NcIjogXCJcdTVDMDYgTWF0aEpheCBcdTUxNkNcdTVGMEZcdThGOTNcdTUxRkFcdTRFM0EgU1ZHIFx1NjgzQ1x1NUYwRlx1MzAwMlx1NkQ0Rlx1ODlDOFx1NTY2OFx1NTNFRlx1NEVFNVx1NzZGNFx1NjNBNVx1NjYzRVx1NzkzQSBTVkcgXHU3N0UyXHU5MUNGXHU1NkZFXHVGRjBDV29yZFByZXNzIFx1NjVFMFx1OTcwMFx1NEVGQlx1NEY1NVx1NTkwNFx1NzQwNlwiLFxyXG4gIFwic2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlXCI6IFwiXHU2Q0U4XHU5MUNBXHU4RjZDXHU2MzYyXCIsXHJcbiAgXCJzZXR0aW5nc19jb21tZW50Q29udmVydE1vZGVEZXNjXCI6IFwiXHU5MDA5XHU2MkU5XHU1OTgyXHU0RjU1XHU1OTA0XHU3NDA2XHU3QjE0XHU4QkIwXHU0RTJEXHU3Njg0XHU2Q0U4XHU5MUNBXCIsXHJcbiAgXCJzZXR0aW5nc19jb21tZW50Q29udmVydE1vZGVJZ25vcmVcIjogXCJcdTVGRkRcdTc1NjVcIixcclxuICBcInNldHRpbmdzX2NvbW1lbnRDb252ZXJ0TW9kZUlnbm9yZURlc2NcIjogXCJcdTVGRkRcdTc1NjVcdTYyNDBcdTY3MDlcdTZDRThcdTkxQ0FcdUZGMENcdTVDMDZcdTUxNzZcdThGNkNcdTYzNjJcdTRFM0FcdTdBN0FcdTc2N0RcdTVCNTdcdTdCMjZcdTRFMzJcIixcclxuICBcInNldHRpbmdzX2NvbW1lbnRDb252ZXJ0TW9kZUhUTUxcIjogXCJIVE1MXCIsXHJcbiAgXCJzZXR0aW5nc19jb21tZW50Q29udmVydE1vZGVIVE1MRGVzY1wiOiBcIlx1NUMwNlx1N0IxNFx1OEJCMFx1NEUyRFx1NzY4NFx1NkNFOFx1OTFDQVx1OEY2Q1x1NjM2Mlx1NEUzQSBIVE1MIFx1NkNFOFx1OTFDQVwiLFxyXG4gIFwic2V0dGluZ3NfZW5hYmxlSHRtbFwiOiBcIlx1NTQyRlx1NzUyOCBIVE1MXCIsXHJcbiAgXCJzZXR0aW5nc19lbmFibGVIdG1sRGVzY1wiOiBcIlx1NTQyRlx1NzUyOFx1N0IxNFx1OEJCMFx1NEUyRFx1NzY4NCBIVE1MIFx1NjgwN1x1N0I3RVx1MzAwMlx1OEZEOVx1NTNFRlx1ODBGRFx1NUJGQ1x1ODFGNFx1OTQ4OFx1NUJGOSBXb3JkUHJlc3MgXHU3Njg0IFhTUyBcdTY1M0JcdTUxRkJcIixcclxuICBcInNldHRpbmdzX3JlcGxhY2VNZWRpYUxpbmtzXCI6IFwiXHU2NkZGXHU2MzYyXHU1QTkyXHU0RjUzXHU5NEZFXHU2M0E1XCIsXHJcbiAgXCJzZXR0aW5nc19yZXBsYWNlTWVkaWFMaW5rc0Rlc2NcIjogXCJcdTRFMEFcdTRGMjBcdTYyMTBcdTUyOUZcdTRFNEJcdTU0MEVcdUZGMENcdTVDMDZcdTY1ODdcdTY4NjNcdTRFMkRcdTc2ODRcdThERUZcdTVGODRcdTY2RkZcdTYzNjJcdTRFM0EgV29yZFByZXNzIFx1OTRGRVx1NjNBNVwiLFxyXG4gIFwibG9naW5Nb2RhbF90aXRsZVwiOiBcIldvcmRQcmVzcyBcdTc2N0JcdTVGNTVcIixcclxuICBcImxvZ2luTW9kYWxfdXNlcm5hbWVcIjogXCJcdTc1MjhcdTYyMzdcdTU0MERcIixcclxuICBcImxvZ2luTW9kYWxfdXNlcm5hbWVEZXNjXCI6IFwiPCU9IHVybCAlPiBcdTc1MjhcdTYyMzdcdTU0MERcIixcclxuICBcImxvZ2luTW9kYWxfcGFzc3dvcmRcIjogXCJcdTVCQzZcdTc4MDFcIixcclxuICBcImxvZ2luTW9kYWxfcGFzc3dvcmREZXNjXCI6IFwiPCU9IHVybCAlPiBcdTVCQzZcdTc4MDFcIixcclxuICBcImxvZ2luTW9kYWxfcmVtZW1iZXJVc2VybmFtZVwiOiBcIlx1OEJCMFx1NEY0Rlx1NzUyOFx1NjIzN1x1NTQwRFwiLFxyXG4gIFwibG9naW5Nb2RhbF9yZW1lbWJlclVzZXJuYW1lRGVzY1wiOiBcIlx1NTk4Mlx1Njc5Q1x1NUYwMFx1NTQyRlx1RkYwQ1dvcmRQcmVzcyBcdTc1MjhcdTYyMzdcdTU0MERcdTRGMUFcdTg4QUJcdTRGRERcdTVCNThcdTU3MjhcdTY3MkNcdTU3MzBcdTY1NzBcdTYzNkVcdTMwMDJcdTU3MjhcdTY3RDBcdTRFOUJcdTU0MENcdTZCNjVcdTY3MERcdTUyQTFcdTRFMkRcdTUzRUZcdTgwRkRcdTVCRkNcdTgxRjRcdTZDQzRcdTk3MzJcdTMwMDJcIixcclxuICBcImxvZ2luTW9kYWxfcmVtZW1iZXJQYXNzd29yZFwiOiBcIlx1OEJCMFx1NEY0Rlx1NUJDNlx1NzgwMVwiLFxyXG4gIFwibG9naW5Nb2RhbF9yZW1lbWJlclBhc3N3b3JkRGVzY1wiOiBcIlx1NTk4Mlx1Njc5Q1x1NUYwMFx1NTQyRlx1RkYwQ1dvcmRQcmVzcyBcdTVCQzZcdTc4MDFcdTRGMUFcdTg4QUJcdTRGRERcdTVCNThcdTU3MjhcdTY3MkNcdTU3MzBcdTY1NzBcdTYzNkVcdTMwMDJcdTU3MjhcdTY3RDBcdTRFOUJcdTU0MENcdTZCNjVcdTY3MERcdTUyQTFcdTRFMkRcdTUzRUZcdTgwRkRcdTVCRkNcdTgxRjRcdTZDQzRcdTk3MzJcdTMwMDJcIixcclxuICBcImxvZ2luTW9kYWxfbG9naW5CdXR0b25UZXh0XCI6IFwiXHU3NjdCXHU1RjU1XCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfdGl0bGVcIjogXCJcdTUzRDFcdTVFMDNcdTUyMzAgV29yZFByZXNzXCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfcG9zdFN0YXR1c1wiOiBcIlx1NjU4N1x1N0FFMFx1NzJCNlx1NjAwMVwiLFxyXG4gIFwicHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNEcmFmdFwiOiBcIlx1ODM0OVx1N0EzRlwiLFxyXG4gIFwicHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNQdWJsaXNoXCI6IFwiXHU2QjYzXHU1RjBGXHU1M0QxXHU1RTAzXCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfcG9zdFN0YXR1c1ByaXZhdGVcIjogXCJcdTc5QzFcdTY3MDlcIixcclxuICBcInB1Ymxpc2hNb2RhbF9wb3N0U3RhdHVzRnV0dXJlXCI6IFwiXHU1QjlBXHU2NUY2XCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfcG9zdERhdGVUaW1lXCI6IFwiXHU2NUY2XHU5NUY0XCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfcG9zdERhdGVUaW1lRGVzY1wiOiBcIlx1NjgzQ1x1NUYwRiBZWVlZLU1NLUREIFx1NjIxNiBZWVlZLU1NLUREIEhIOk1NOlNTXCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfY29tbWVudFN0YXR1c1wiOiBcIlx1OEJDNFx1OEJCQVx1NzJCNlx1NjAwMVwiLFxyXG4gIFwicHVibGlzaE1vZGFsX2NvbW1lbnRTdGF0dXNPcGVuXCI6IFwiXHU1RjAwXHU1NDJGXCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfY29tbWVudFN0YXR1c0Nsb3NlZFwiOiBcIlx1NTE3M1x1OTVFRFwiLFxyXG4gIFwicHVibGlzaE1vZGFsX2NhdGVnb3J5XCI6IFwiXHU1MjA2XHU3QzdCXCIsXHJcbiAgXCJwdWJsaXNoTW9kYWxfcG9zdFR5cGVcIjogXCJcdTdDN0JcdTU3OEJcIixcclxuICBcInB1Ymxpc2hNb2RhbF9wdWJsaXNoQnV0dG9uVGV4dFwiOiBcIlx1NTNEMVx1NUUwM1wiLFxyXG4gIFwicHVibGlzaE1vZGFsX3dyb25nTWF0dGVyRGF0YUZvclBhZ2VcIjogXCJcdTUxNDNcdTY1NzBcdTYzNkVcdTRFMkRcdTUzMDVcdTU0MkJcdTRFODZcdTY4MDdcdTdCN0VcdTYyMTZcdTUyMDZcdTdDN0JcdUZGMENwYWdlIFx1N0M3Qlx1NTc4Qlx1NEUwRFx1NTE0MVx1OEJCOFx1OEJFNVx1NjU3MFx1NjM2RVx1MzAwMlx1Nzg2RVx1NUI5QVx1ODk4MVx1NTIyMFx1OTY2NFx1OEZEOVx1NEU5Qlx1NjU3MFx1NjM2RVx1NTQxN1x1RkYxRlwiLFxyXG4gIFwicHVibGlzaGVkTW9kYWxfdGl0bGVcIjogXCJcdTY1ODdcdTdBRTBcdTUzRDFcdTVFMDNcdTYyMTBcdTUyOUZcIixcclxuICBcInB1Ymxpc2hlZE1vZGFsX2NvbmZpcm1FZGl0SW5XUFwiOiBcIlx1OTcwMFx1ODk4MVx1NEY3Rlx1NzUyOFx1NkQ0Rlx1ODlDOFx1NTY2OFx1NjI1M1x1NUYwMCBXb3JkUHJlc3MgXHU3RjE2XHU4RjkxXHU5ODc1XHU5NzYyXHU1NDE3XHVGRjFGXCIsXHJcbiAgXCJwdWJsaXNoZWRNb2RhbF9jYW5jZWxcIjogXCJcdTUzRDZcdTZEODhcIixcclxuICBcInB1Ymxpc2hlZE1vZGFsX29wZW5cIjogXCJcdTYyNTNcdTVGMDBcIixcclxuICBcInByb2ZpbGVzTWFuYWdlTW9kYWxfc2V0RGVmYXVsdFwiOiBcIlx1OEJCRVx1NEUzQVx1OUVEOFx1OEJBNFwiLFxyXG4gIFwicHJvZmlsZXNNYW5hZ2VNb2RhbF9zaG93RGV0YWlsc1wiOiBcIlx1N0YxNlx1OEY5MVwiLFxyXG4gIFwicHJvZmlsZXNNYW5hZ2VNb2RhbF9kZWxldGVUb29sdGlwXCI6IFwiXHU1MjIwXHU5NjY0XCIsXHJcbiAgXCJwcm9maWxlc01hbmFnZU1vZGFsX3RpdGxlXCI6IFwiV29yZFByZXNzIFx1NUUxMFx1NjIzN1wiLFxyXG4gIFwicHJvZmlsZXNNYW5hZ2VNb2RhbF9jcmVhdGVcIjogXCJcdTUyMUJcdTVFRkFcIixcclxuICBcInByb2ZpbGVzTWFuYWdlTW9kYWxfY3JlYXRlRGVzY1wiOiBcIlx1NTIxQlx1NUVGQVx1NjVCMFx1NzY4NCBXb3JkUHJlc3MgXHU1RTEwXHU2MjM3XCIsXHJcbiAgXCJwcm9maWxlTW9kYWxfdGl0bGVcIjogXCJXb3JkUHJlc3MgXHU1RTEwXHU2MjM3XCIsXHJcbiAgXCJwcm9maWxlTW9kYWxfU2F2ZVwiOiBcIlx1NEZERFx1NUI1OFwiLFxyXG4gIFwicHJvZmlsZU1vZGFsX25hbWVcIjogXCJcdTU0MERcdTc5RjBcIixcclxuICBcInByb2ZpbGVNb2RhbF9uYW1lRGVzY1wiOiBcIldvcmRQcmVzcyBcdThEMjZcdTYyMzdcdTU0MERcdTc5RjBcIixcclxuICBcInByb2ZpbGVNb2RhbF9yZW1lbWJlclVzZXJuYW1lXCI6IFwiXHU4QkIwXHU0RjRGXHU3NTI4XHU2MjM3XHU1NDBEXCIsXHJcbiAgXCJwcm9maWxlTW9kYWxfcmVtZW1iZXJQYXNzd29yZFwiOiBcIlx1OEJCMFx1NEY0Rlx1NUJDNlx1NzgwMVwiLFxyXG4gIFwicHJvZmlsZU1vZGFsX3NldERlZmF1bHRcIjogXCJcdThCQkVcdTRFM0FcdTlFRDhcdThCQTRcIixcclxuICBcInByb2ZpbGVzQ2hvb3Nlck1vZGFsX3RpdGxlXCI6IFwiV29yZFByZXNzIFx1OEQyNlx1NjIzN1wiLFxyXG4gIFwicHJvZmlsZXNDaG9vc2VyTW9kYWxfcGlja09uZVwiOiBcIlx1NzBCOVx1NTFGQlx1OTAwOVx1NjJFOVx1NEUwMFx1NEUyQVx1OTcwMFx1ODk4MVx1NTNEMVx1NUUwM1x1NTIzMFx1NzY4NCBXb3JkUHJlc3MgXHU4RDI2XHU2MjM3XCIsXHJcbiAgXCJwcm9maWxlc19kZWZhdWx0XCI6IFwiXHU5RUQ4XHU4QkE0XHU4RDI2XHU2MjM3XCIsXHJcbiAgXCJwcm9maWxlTm90TWF0Y2hfdXNlT2xkXCI6IFwiXHU0RjdGXHU3NTI4XHU3QjE0XHU4QkIwXHU0RTJEXHU3Njg0IFxcXCI8JT0gcHJvZmlsZU5hbWUgJT5cXFwiXCIsXHJcbiAgXCJwcm9maWxlTm90TWF0Y2hfdXNlTmV3XCI6IFwiXHU0RjdGXHU3NTI4IFxcXCI8JT0gcHJvZmlsZU5hbWUgJT5cXFwiIFx1NTIxQlx1NUVGQVx1NjVCMFx1NzY4NFx1NjU4N1x1N0FFMFwiXHJcbn1cclxuIiwgImltcG9ydCAqIGFzIGVuIGZyb20gJy4vZW4uanNvbic7XHJcbmltcG9ydCAqIGFzIHpoX2NuIGZyb20gJy4vemgtY24uanNvbic7XHJcblxyXG5leHBvcnQgY29uc3QgTEFOR1VBR0VTID0ge1xyXG4gIGVuLFxyXG4gIHpoX2NuXHJcbn07XHJcbiIsICJpbXBvcnQgeyBMQU5HVUFHRVMgfSBmcm9tICcuL2kxOG4vbGFuZ3MnO1xyXG5pbXBvcnQgeyBtb21lbnQgfSBmcm9tICdvYnNpZGlhbic7XHJcbmltcG9ydCB7IHRlbXBsYXRlIH0gZnJvbSAnbG9kYXNoLWVzJztcclxuXHJcbmV4cG9ydCB0eXBlIExhbmd1YWdlID0ga2V5b2YgdHlwZW9mIExBTkdVQUdFUztcclxuZXhwb3J0IHR5cGUgTGFuZ3VhZ2VXaXRoQXV0byA9IExhbmd1YWdlIHwgJ2F1dG8nO1xyXG5leHBvcnQgdHlwZSBUcmFuc2xhdGVLZXkgPSBrZXlvZiB0eXBlb2YgTEFOR1VBR0VTWydlbiddO1xyXG5cclxuZXhwb3J0IGNsYXNzIEkxOG4ge1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgbGFuZzogTGFuZ3VhZ2VXaXRoQXV0byA9ICdhdXRvJ1xyXG4gICkge1xyXG4gICAgdGhpcy5sYW5nID0gbGFuZztcclxuICB9XHJcblxyXG4gIHQoa2V5OiBUcmFuc2xhdGVLZXksIHZhcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcclxuICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuI2dldChrZXkpO1xyXG4gICAgaWYgKHZhcnMpIHtcclxuICAgICAgY29uc3QgY29tcGlsZWQgPSB0ZW1wbGF0ZShzdHJpbmcpO1xyXG4gICAgICByZXR1cm4gY29tcGlsZWQodmFycyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gc3RyaW5nO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgI2dldChrZXk6IFRyYW5zbGF0ZUtleSk6IHN0cmluZyB7XHJcbiAgICBsZXQgbGFuZzogTGFuZ3VhZ2U7XHJcbiAgICBpZiAodGhpcy5sYW5nID09PSAnYXV0bycgJiYgbW9tZW50LmxvY2FsZSgpLnJlcGxhY2UoJy0nLCAnXycpIGluIExBTkdVQUdFUykge1xyXG4gICAgICBsYW5nID0gbW9tZW50LmxvY2FsZSgpLnJlcGxhY2UoJy0nLCAnXycpIGFzIExhbmd1YWdlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGFuZyA9ICdlbic7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gTEFOR1VBR0VTW2xhbmddW2tleV0gfHwgTEFOR1VBR0VTWydlbiddW2tleV0gfHwga2V5O1xyXG4gIH1cclxuXHJcbn1cclxuIiwgImltcG9ydCBXb3JkcHJlc3NQbHVnaW4gZnJvbSAnLi9tYWluJztcclxuaW1wb3J0IHsgV3BQcm9maWxlIH0gZnJvbSAnLi93cC1wcm9maWxlJztcclxuaW1wb3J0IHsgcmVuZGVyZXJQcm9maWxlIH0gZnJvbSAnLi91dGlscyc7XHJcbmltcG9ydCB7IEFic3RyYWN0TW9kYWwgfSBmcm9tICcuL2Fic3RyYWN0LW1vZGFsJztcclxuXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gb3BlblByb2ZpbGVDaG9vc2VyTW9kYWwoXHJcbiAgcGx1Z2luOiBXb3JkcHJlc3NQbHVnaW5cclxuKTogUHJvbWlzZTxXcFByb2ZpbGU+IHtcclxuICByZXR1cm4gbmV3IFByb21pc2U8V3BQcm9maWxlPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICBjb25zdCBtb2RhbCA9IG5ldyBXcFByb2ZpbGVDaG9vc2VyTW9kYWwocGx1Z2luLCAocHJvZmlsZSkgPT4ge1xyXG4gICAgICByZXNvbHZlKHByb2ZpbGUpO1xyXG4gICAgfSk7XHJcbiAgICBtb2RhbC5vcGVuKCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBXb3JkUHJlc3MgcHJvZmlsZXMgY2hvb3NlciBtb2RhbC5cclxuICovXHJcbmNsYXNzIFdwUHJvZmlsZUNob29zZXJNb2RhbCBleHRlbmRzIEFic3RyYWN0TW9kYWwge1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IHByb2ZpbGVzOiBXcFByb2ZpbGVbXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICByZWFkb25seSBwbHVnaW46IFdvcmRwcmVzc1BsdWdpbixcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgb25DaG9vc2U6IChwcm9maWxlOiBXcFByb2ZpbGUpID0+IHZvaWRcclxuICApIHtcclxuICAgIHN1cGVyKHBsdWdpbik7XHJcblxyXG4gICAgdGhpcy5wcm9maWxlcyA9IHBsdWdpbi5zZXR0aW5ncy5wcm9maWxlcztcclxuICB9XHJcblxyXG4gIG9uT3BlbigpIHtcclxuICAgIGNvbnN0IGNob29zZVByb2ZpbGUgPSAocHJvZmlsZTogV3BQcm9maWxlKTogdm9pZCA9PiB7XHJcbiAgICAgIHRoaXMub25DaG9vc2UocHJvZmlsZSk7XHJcbiAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCByZW5kZXJQcm9maWxlcyA9ICgpOiB2b2lkID0+IHtcclxuICAgICAgY29udGVudC5lbXB0eSgpO1xyXG4gICAgICB0aGlzLnByb2ZpbGVzLmZvckVhY2goKHByb2ZpbGUpID0+IHtcclxuICAgICAgICBjb25zdCBzZXR0aW5nID0gcmVuZGVyZXJQcm9maWxlKHByb2ZpbGUsIGNvbnRlbnQpO1xyXG4gICAgICAgIHNldHRpbmcuc2V0dGluZ0VsLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgKCkgPT4ge1xyXG4gICAgICAgICAgY2hvb3NlUHJvZmlsZShwcm9maWxlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jcmVhdGVIZWFkZXIodGhpcy50KCdwcm9maWxlc0Nob29zZXJNb2RhbF90aXRsZScpKTtcclxuXHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuICAgIGNvbnN0IGNvbnRlbnQgPSBjb250ZW50RWwuY3JlYXRlRWwoJ2RpdicpO1xyXG4gICAgcmVuZGVyUHJvZmlsZXMoKTtcclxuICB9XHJcblxyXG4gIG9uQ2xvc2UoKSB7XHJcbiAgICBjb25zdCB7IGNvbnRlbnRFbCB9ID0gdGhpcztcclxuICAgIGNvbnRlbnRFbC5lbXB0eSgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBLFFBQU0sU0FBUyxDQUFBLEVBQUc7QUFLbEIsYUFBZ0JBLFVBQVMsS0FBUTtBQUMvQixhQUFPLE9BQU8sUUFBUSxZQUFZLFFBQVEsU0FDdkMsSUFBSSxnQkFBZ0IsVUFBVSxJQUFJLGdCQUFnQjtJQUN2RDtBQUhBLElBQUFDLFNBQUEsV0FBQUQ7QUF1QmEsSUFBQUMsU0FBQSxTQUFTO0FBY1QsSUFBQUEsU0FBQSxTQUFTO0FBTVQsSUFBQUEsU0FBQSxVQUFVO01BQ3JCLGVBQWU7TUFPZixhQUFhLFNBQUNDLFVBQWlCLE1BQVk7QUFDekMsWUFBSUQsU0FBQSxRQUFRLGtCQUFrQixTQUFTO0FBQ3JDLGdCQUFNLElBQUksTUFBTUMsUUFBTzs7QUFFekIsZ0JBQVEsS0FBSyxjQUFjQSxRQUFPO01BQ3BDOztBQU9GLFFBQUEsYUFBQSwyQkFBQTtBQUFBLGVBQUFDLGNBQUE7TUFBeUI7QUFBQSxhQUFBQTtJQUFBLEVBQXpCO0FBQWEsSUFBQUYsU0FBQSxhQUFBO0FBdUJiLGFBQWdCLFdBQVcsS0FBZTtBQUN4QyxhQUFPLE9BQU8sT0FBTyxPQUFPLE9BQU8sV0FBVyxTQUFTLEdBQUcsR0FBRztJQUMvRDtBQUZBLElBQUFBLFNBQUEsYUFBQTtBQVFBLGFBQWdCLFVBQVUsR0FBTTtBQUM5QixhQUFPLE1BQU0sUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7SUFDbEM7QUFGQSxJQUFBQSxTQUFBLFlBQUE7QUFXQSxhQUFnQkcsTUFBSyxLQUFlO0FBQ2xDLFVBQUksQ0FBQyxLQUFLO0FBQ1IsZUFBTyxDQUFBOztBQUVULGFBQVEsT0FBTyxLQUFLLEdB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Q3BDLE1BQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEdBQUc7TUFDcEMsU0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLFVBQVUsS0FBSSxDQUFDO01BQ3RELE9BQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxTQUFTLE1BQU0sZUFBZSxLQUFJLENBQUM7TUFDMUUsS0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsR0FBRztNQUNwQyxNQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsVUFBVSxLQUFJLENBQUM7TUFDdEQsTUFBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsR0FBRztNQUNwQyxZQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsVUFBVSxLQUFJLENBQUM7TUFDdEQsV0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLFFBQVEsS0FBSSxDQUFDO01BQ3BELFNBQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxRQUFRLE1BQU0sVUFBVSxLQUFJLENBQUM7TUFDcEUsTUFBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsTUFBTSxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7TUFDckYsT0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsT0FBTyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7TUFDdEYsT0FBWSxNQUFNLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSztNQUN0QyxPQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLO01BQ3RDLFFBQVksTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxRQUFRLEtBQUksQ0FBQztNQUNwRCxZQUFZLE1BQU0sR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsUUFBUSxNQUFNLFVBQVUsS0FBSSxDQUFDOztBQU16RCxJQUFBQSxTQUFBLFNBQXFCO01BQ2hDLENBQUMsSUFBUSxLQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxLQUFRLEtBQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLEtBQVEsS0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsS0FBUSxLQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxLQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsTUFBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsTUFBUSxNQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxNQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsTUFBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsTUFBUSxNQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxNQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsTUFBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsTUFBUSxNQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxNQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsTUFBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsTUFBUSxNQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxNQUFRLE1BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE1BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssT0FBTztNQUN0QyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssTUFBTSxRQUFRO01BQzdDLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssTUFBTSxRQUFRO01BQzdDLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVEsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNuQyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLE1BQU0sUUFBUTtNQUM3QyxDQUFDLE9BQVEsT0FBUSxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ25DLENBQUMsT0FBUSxPQUFRLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDbkMsQ0FBQyxPQUFRLE9BQVMsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNwQyxDQUFDLE9BQVMsT0FBUyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ3JDLENBQUMsT0FBUyxPQUFTLGFBQUEsU0FBUyxLQUFLLE1BQU0sUUFBUTtNQUMvQyxDQUFDLE9BQVMsT0FBUyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ3JDLENBQUMsT0FBUyxRQUFTLGFBQUEsU0FBUyxLQUFLLE1BQU0sUUFBUTtNQUMvQyxDQUFDLFFBQVMsUUFBUyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ3JDLENBQUMsUUFBUyxRQUFTLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDckMsQ0FBQyxRQUFTLFFBQVMsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNyQyxDQUFDLFFBQVMsUUFBUyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ3JDLENBQUMsUUFBUyxRQUFTLGFBQUEsU0FBUyxLQUFLLElBQUk7TUFDckMsQ0FBQyxRQUFTLFFBQVMsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNyQyxDQUFDLFFBQVMsUUFBUyxhQUFBLFNBQVMsS0FBSyxJQUFJO01BQ3JDLENBQUMsUUFBUyxRQUFTLGFBQUEsU0FBUyxLQUFLLE1BQU0sU0FBUzs7QUFTbEQsYUFBZ0IsU0FBU0MsT0FBWTs7QUFDbkMsVUFBTSxJQUFJQSxNQUFLLFlBQVksQ0FBQzs7QUFDNUIsaUJBQW9CLFdBQUEsU0FBQUQsU0FBQSxNQUFNLEdBQUEsYUFBQSxTQUFBLEtBQUEsR0FBQSxDQUFBLFdBQUEsTUFBQSxhQUFBLFNBQUEsS0FBQSxHQUFFO0FBQXZCLGNBQU0sUUFBSyxXQUFBO0FBQ2QsY0FBSSxLQUFLLE1BQU0sQ0FBQyxHQUFHO0FBQ2pCLGdCQUFJLEtBQUssTUFBTSxDQUFDLEdBQUc7QUFDakIscUJBQU87O0FBRVQ7Ozs7Ozs7Ozs7OztBQUdKLGFBQU87SUFDVDtBQVhBLElBQUFBLFNBQUEsV0FBQTtBQWdCYSxJQUFBQSxTQUFBLGFBQWE7TUFDeEIsQ0FBQyxHQUFHLENBQUM7TUFDTCxDQUFDLEdBQUcsQ0FBQztNQUNMLENBQUMsR0FBRyxDQUFDO01BQ0wsQ0FBQyxHQUFHLENBQUM7TUFDTCxDQUFDLEdBQUcsQ0FBQztNQUNMLENBQUMsR0FBRyxDQUFDO01BQ0wsQ0FBQyxHQUFHLENBQUM7O0FBTU0sSUFBQUEsU0FBQSxVQUEwQztNQUNyRCxRQUFRO1FBQ04sS0FBS0EsU0FBQSxHQUFHO1FBQ1IsS0FBS0EsU0FBQSxHQUFHO1FBQ1IsS0FBS0EsU0FBQSxHQUFHO1FBQ1IsS0FBS0EsU0FBQSxHQUFHO1FBQ1IsS0FBS0EsU0FBQSxHQUFHO1FBQ1IsS0FBS0EsU0FBQSxHQUFHO1FBQ1IsTUFBTSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7UUFDekUsT0FBTyxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLE1BQU0sV0FBVyxLQUFJLENBQUM7UUFDMUUsUUFBVUEsU0FBQSxHQUFHO1FBQ2IsUUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLEtBQUksQ0FBQztRQUM1RCxVQUFVLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxNQUFNLEVBQUMsT0FBTyxLQUFJLENBQUM7UUFDN0MsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsTUFBTSxFQUFDLE9BQU8sS0FBSSxDQUFDO1FBQzdDLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVUsTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEdBQUc7UUFDbEMsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLFVBQVUsS0FBSSxDQUFDO1FBQy9DLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVUsQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxPQUFPLE1BQU0sVUFBVSxLQUFJLENBQUM7UUFDNUQsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHOztNQUVmLFNBQVM7UUFDUCxNQUFNLE1BQU0sR0FBRyxDQUFDO1FBQ2hCLEtBQUssQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLE9BQU8sSUFBSTtRQUNoQyxLQUFLQSxTQUFBLEdBQUc7UUFDUixLQUFLQSxTQUFBLEdBQUc7UUFDUixLQUFLQSxTQUFBLEdBQUc7UUFDUixNQUFNLE1BQU0sR0FBRyxDQUFDO1FBQ2hCLE1BQU0sTUFBTSxHQUFHLENBQUM7UUFDaEIsTUFBTSxNQUFNLEdBQUcsQ0FBQztRQUNoQixPQUFPQSxTQUFBLEdBQUc7UUFDVixLQUFNQSxTQUFBLEdBQUc7UUFDVCxLQUFLQSxTQUFBLEdBQUc7UUFDUixLQUFLQSxTQUFBLEdBQUc7UUFDUixLQUFLQSxTQUFBLEdBQUc7UUFDUixLQUFLQSxTQUFBLEdBQUc7UUFDUixLQUFLQSxTQUFBLEdBQUc7UUFDUixLQUFLQSxTQUFBLEdBQUc7UUFDUixLQUFLQSxTQUFBLEdBQUc7UUFDUixNQUFNLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsT0FBTyxNQUFNLFVBQVUsTUFBTSxXQUFXLEtBQUksQ0FBQztRQUN6RSxPQUFPLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsT0FBTyxNQUFNLFVBQVUsTUFBTSxXQUFXLEtBQUksQ0FBQztRQUMxRSxRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixRQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxLQUFLLEVBQUMsT0FBTyxNQUFNLFVBQVUsS0FBSSxDQUFDO1FBQzVELFVBQVUsQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLE9BQU8sRUFBQyxPQUFPLEtBQUksQ0FBQztRQUM5QyxVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVLENBQUMsR0FBRyxHQUFHLGFBQUEsU0FBUyxPQUFPLEVBQUMsT0FBTyxLQUFJLENBQUM7UUFDOUMsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsS0FBSyxFQUFDLE9BQU8sTUFBTSxVQUFVLEtBQUksQ0FBQztRQUM1RCxVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7O01BRWYsT0FBTztRQUNMLE1BQU1BLFNBQUEsR0FBRztRQUNULEtBQUtBLFNBQUEsR0FBRztRQUNSLEtBQUtBLFNBQUEsR0FBRztRQUNSLEtBQUssQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssSUFB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R0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVUsTUFBTSxHQUFHLEdBQUcsYUFBQSxTQUFTLEdBQUc7UUFDbEMsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsZ0JBQWdCQSxTQUFBLEdBQUc7UUFDbkIsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVUEsU0FBQSxHQUFHO1FBQ2IsVUFBVSxDQUFDLEdBQUcsR0FBRyxhQUFBLFNBQVMsT0FBTyxJQUFJO1FBQ3JDLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVVBLFNBQUEsR0FBRztRQUNiLFVBQVUsQ0FBQyxHQUFHLEdBQUcsYUFBQSxTQUFTLEtBQUssRUFBQyxVQUFVLEtBQUksQ0FBQztRQUMvQyxVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixnQkFBZ0JBLFNBQUEsR0FBRztRQUNuQixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdBQUc7UUFDYixVQUFVQSxTQUFBLEdB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LGFBQWEsa0JBQUEsWUFBWSxRQUFRLE9BQU0sQ0FBQztNQUNsRSxPQUFjLENBQUMsVUFBVSxFQUFDLGFBQWEsa0JBQUEsWUFBWSxRQUFRLE9BQU0sQ0FBQztNQUNsRSxNQUFjLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQzVDLE9BQWM7TUFDZCxPQUFjO01BQ2QsS0FBYztNQUNkLElBQWMsQ0FBQyxVQUFVLEVBQUMsYUFBYSxrQkFBQSxZQUFZLFFBQVEsT0FBTSxDQUFDO01BQ2xFLElBQWMsQ0FBQyxVQUFVLEVBQUMsYUFBYSxrQkFBQSxZQUFZLFFBQVEsT0FBTSxDQUFDO01BQ2xFLElBQWMsQ0FBQyxVQUFVLEVBQUMsYUFBYSxrQkFBQSxZQUFZLFFBQVEsT0FBTSxDQUFDO01BQ2xFLFNBQWMsQ0FBQyxVQUFVLEVBQUMsYUFBYSxrQkFBQSxZQUFZLFFBQVEsT0FBTSxDQUFDO01BQ2xFLE9BQWMsQ0FBQyxVQUFVLEVBQUMsYUFBYSxrQkFBQSxZQUFZLFFBQVEsT0FBTSxDQUFDO01BQ2xFLE9BQWMsQ0FBQyxVQUFVLEVBQUMsYUFBYSxLQUFJLENBQUM7TUFDNUMsVUFBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsT0FBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsS0FBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsS0FBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsT0FBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsVUFBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsV0FBYyxDQUFDLFVBQVUsRUFBQyxhQUFhLGtCQUFBLFlBQVksUUFBUSxPQUFNLENBQUM7TUFDbEUsUUFBYyxDQUFD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TUFDZCxLQUFjO01BQ2QsS0FBYztNQUNkLEtBQWM7TUFDZCxLQUFjO01BQ2QsU0FBYztNQUNkLFFBQWM7TUFDZCxPQUFjO01BQ2QsT0FBYztNQUNkLE9BQWM7TUFDZCxPQUFjO01BQ2QsU0FBYztNQUNkLFFBQWM7TUFDZCxJQUFjO01BQ2QsS0FBYztNQUNkLFdBQWM7TUFDZCxNQUFjLENBQUMsVUFBVSxFQUFDLFNBQVMsTUFBSyxDQUFDO01BQ3pDLFFBQWMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxNQUFLLENBQUM7TUFDekMsUUFBYyxDQUFDLFVBQVUsRUFBQyxTQUFTLE1BQUssQ0FBQztNQUN6QyxRQUFjLENBQUMsVUFBVSxFQUFDLFNBQVMsTUFBSyxDQUFDO01BQ3pDLE9BQWMsQ0FBQyxVQUFVLEVBQUMsU0FBUyxNQUFLLENBQUM7TUFDekMsSUFBYztNQUNkLElBQWM7TUFDZCxNQUFjO01BQ2QsU0FBYztNQUNkLFVBQWM7TUFDZCxNQUFjO01BQ2QsS0FBYztNQUNkLE9BQWM7TUFDZCxNQUFjO01BSWQsUUFBYztNQUNkLFlBQWM7TUFDZCxZQUFjO01BQ2QsVUFBYztNQUNkLEtBQWM7TUFDZCxPQUFjO01BQ2QsT0FBYztNQUNkLEtBQWM7TUFDZCxJQUFjO01BQ2QsS0FBYztNQUNkLElBQWM7TUFDZCxJQUFjO01BQ2QsSUFBYztNQUNkLE1BQWM7TUFDZCxNQUFjO01BQ2QsUUFBYztNQUNkLFFBQWM7TUFDZCxRQUFjO01BQ2QsUUFBYztNQUNkLFFBQWM7TUFDZCxVQUFjO01BQ2QsVUFBYztNQUNkLE1BQWM7TUFDZCxJQUFjO01BQ2QsT0FBYztNQUNkLE1BQWM7TUFDZCxJQUFjO01BQ2QsSUFBYztNQUNkLEtBQWM7TUFDZCxPQUFjO01BQ2QsTUFBYztNQUNkLE9BQWM7TUFDZCxPQUFjO01BQ2QsT0FBYztNQUNkLE9BQWM7TUFDZCxJQUFjO01BQ2QsS0FBYztNQUNkLE1BQWM7TUFDZCxPQUFjO01BQ2QsUUFBYztNQUNkLFFBQWM7TUFFZCxTQUFjO01BSWQsZ0JBQW9CO01BQ3BCLFdBQW9CO01BQ3BCLFlBQW9CO01BQ3BCLGdCQUFvQjtNQUNwQixXQUFvQjtNQUNwQixNQUFvQjtNQUNwQixZQUFvQjtNQUNwQixJQUFtQixDQUFDLFVBQVUsRUFBQyxRQUFRLE1BQUssQ0FBQztNQUM3QyxRQUFvQjtNQUNwQixlQUFvQjtNQUNwQixpQkFBb0I7TUFDcEIsZ0JBQW9CO01BQ3BCLGtCQUFvQjtNQUNwQixTQUFvQjtNQUNwQixTQUFvQjtNQUNwQixTQUFvQjtNQUNwQixTQUFvQjtNQUNwQixtQkFBb0I7TUFDcEIsZ0JBQW9CO01BQ3BCLGVBQW9CO01BQ3BCLGVBQW9CO01BQ3BCLGVBQW9CO01BQ3BCLGdCQUFvQjtNQUNwQixnQkFBb0I7TUFDcEIsb0JBQW9CO01BQ3BCLG9CQUFvQjtNQUNwQixZQUFvQjtNQUlwQixPQUFrQjtNQUNsQixPQUFrQjtNQUNsQixPQUFrQjtNQUNsQixPQUFrQjtNQUNsQixPQUFrQjtNQUNsQixPQUFrQjtNQUNsQixPQUFrQjtNQUNsQixPQUFrQjtNQUNsQixPQUFrQjtNQUVsQixPQUFrQixDQUFDLEtBQVUsRUFBQyxVQUFVLGFBQUEsU0FBUyxNQUFLLENBQUM7TUFDdkQsT0FBa0IsQ0FBQyxVQUFVLEVBQUMsVUFBVSxhQUFBLFNBQVMsTUFBSyxDQUFDO01BQ3ZELE9BQWtCLENBQUMsS0FBVSxFQUFDLFVBQVUsYUFBQSxTQUFTLE1BQUssQ0FBQztLQUN4RDtBQU1ELFFBQUksR0FBRyxhQUFhLGFBQWEsa0JBQUEsUUFBYSxXQUFXO01BQ3ZELE9BQWM7TUFDZCxPQUFjO01BQ2QsT0FBYztNQUNkLFFBQWM7TUFDZCxJQUFjO01BQ2QsSUFBYztNQUNkLE9BQWM7TUFDZCxTQUFjO01BQ2QsS0FBYztNQUNkLEtBQWM7TUFDZCxPQUFjO01BRWQsS0FBYztNQUNkLEtBQWM7TUFDZCxLQUFjO01BQ2QsS0FBYztNQUNkLEtBQWM7TUFDZCxLQUFjO0tBQ2Y7QUFNRCxRQUFJLEdBQUcsYUFBYSxhQUFhLGtCQUFBLFFBQWEsV0FBVztNQUN2RCxLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixRQUFvQjtNQUNwQixRQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQixDQUFDLEtBQUssRUFBQyxVQUFVLGFBQUEsU0FBUyxJQUFHLENBQUM7TUFDbEQsS0FBb0I7TUFDcEIsUUFBb0I7TUFDcEIsZ0JBQW9CO01BQ3BCLGdCQUFvQjtNQUNwQixZQUFvQjtNQUNwQixZQUFvQjtNQUNwQixlQUFvQjtNQUNwQixlQUFvQjtNQUNwQixlQUFvQjtNQUNwQixVQUFvQixDQUFDLFVBQVUsRUFBQyxVQUFVLGFBQUEsU0FBUyxJQUFHLENBQUM7TUFDdkQsT0FBb0IsQ0FBQyxVQUFVLEVBQUMsVUFBVSxhQUFBLFNBQVMsSUFBRyxDQUFDO01BQ3ZELFVBQW9CLENBQUMsS0FBSyxFQUFDLFVBQVUsYUFBQSxTQUFTLElBQUcsQ0FBQztNQUNsRCxhQUFvQjtNQUNwQixlQUFvQjtNQUNwQixpQkFBb0I7TUFDcEIsYUFBb0I7TUFDcEIsZUFBb0I7TUFDcEIsaUJBQW9CO01BQ3BCLGVBQW9CO01BQ3BCLFlBQW9CO01BQ3BCLFlBQW9CO01BQ3BCLFlBQW9CO01BQ3BCLFlBQW9CO01BQ3BCLE9BQW9CO01BQ3BCLE9BQW9CO01BQ3BCLFdBQW9CO01BQ3BCLFdBQW9CO01BQ3BCLFlBQW9CO01BQ3BCLFlBQW9CO01BQ3BCLFlBQW9CO01BQ3BCLFlBQW9CO0tBQ3JCO0FBTUQsUUFBSSxHQUFHLFdBQVcsVUFBVTtNQUMxQixjQUFtQixDQUFDLFlBQVksS0FBSyxNQUFNLENBQUM7TUFDNUMsV0FBbUIsQ0FBQyxZQUFZLEtBQUssT0FBTyxDQUFDO01BQzdDLGFBQW1CLENBQUMsWUFBWSxLQUFLLE9BQU8sQ0FBQztNQUM3QyxtQkFBbUIsQ0FBQyxZQUFZLE1BQU0sT0FBTyxDQUFDO01BRTlDLElBQW1CLENBQUMsV0FBVyxrQkFBQSxZQUFZLFFBQVEsTUFBTTtNQUN6RCxLQUFtQixDQUFDLFdBQVcsa0JBQUEsWUFBWSxRQUFRLE1BQU07TUFDekQsVUFBbUIsQ0FBQyxXQUFXLGtCQUFBLFlBQVksUUFBUSxRQUFRO01BQzNELEtBQW1CLENBQUMsV0FBVyxrQkFBQSxZQUFZLFFBQVEsWUFBWTtNQUMvRCxJQUFtQixDQUFDLFdBQVcsa0JBQUEsWUFBWSxRQUFRLFVBQVU7TUFDN0QsSUFBbUIsQ0FBQyxXQUFXLGtCQUFBLFlBQVksUUFBUSxJQUFJO01BQ3ZELFFBQW1CLENBQUMsV0FBVyxrQkFBQSxZQUFZLFFBQVEsWUFBWTtNQUMvRCxLQUFtQixDQUFDLFdBQVcsa0JBQUEsWUFBWSxRQUFRLE1BQU07TUFDekQsTUFBbUIsQ0FBQyxXQUFXLGtCQUFBLFlBQVksUUFBUSxPQUFPO01BQzFELElBQW1CLENBQUMsV0FBVyxrQkFBQSxZQUFZLFFBQVEsU0FBUztNQUM1RCxJQUFtQixDQUFDLFdBQVcsa0JBQUEsWUFBWSxRQUFRLFNBQVM7TUFFNUQsUUFBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxNQUFNO01BQzFELFFBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsTUFBTTtNQUMxRCxZQUFtQixDQUFDLFlBQVksRUFBRTtNQUNsQyxRQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLElBQUk7TUFDeEQsVUFBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxJQUFJO01BQ3hELFFBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsVUFBVTtNQUM5RCxVQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLFVBQVU7TUFDOUQsUUFBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxZQUFZO01BQ2hFLEtBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsWUFBWTtNQUNoRSxVQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLE9BQU87TUFDM0QsWUFBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxXQUFXO01BQy9ELFNBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsTUFBTTtNQUMxRCxXQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLFVBQVU7TUFDOUQsUUFBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxTQUFTO01BQzdELFVBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsU0FBUztNQUM3RCxVQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLGFBQWE7TUFDakUsWUFBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxhQUFhO01BQ2pFLFVBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsZUFBZTtNQUNuRSxZQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLG1CQUFtQjtNQUN2RSxRQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLFNBQVM7TUFDN0QsU0FBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxZQUFZO01BQ2hFLFdBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsZ0JBQWdCO01BRXBFLE9BQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsTUFBTTtNQUMxRCxPQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLE1BQU07TUFDMUQsV0FBbUIsQ0FBQyxZQUFZLEVBQUU7TUFDbEMsT0FBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxJQUFJO01BQ3hELFNBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsSUFBSTtNQUN4RCxPQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLE1BQU07TUFDMUQsU0FBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxVQUFVO01BQzlELE9BQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsWUFBWTtNQUNoRSxTQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLE9BQU87TUFDM0QsV0FBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxXQUFXO01BQy9ELFFBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsTUFBTTtNQUMxRCxVQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLFVBQVU7TUFDOUQsT0FBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxTQUFTO01BQzdELFNBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsU0FBUztNQUM3RCxTQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLGFBQWE7TUFDakUsV0FBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxhQUFhO01BQ2pFLFNBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsZUFBZTtNQUNuRSxXQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLG1CQUFtQjtNQUN2RSxPQUFtQixDQUFDLFlBQVksa0JBQUEsWUFBWSxRQUFRLFNBQVM7TUFDN0QsUUFBbUIsQ0FBQyxZQUFZLGtCQUFBLFlBQVksUUFBUSxZQUFZO01BQ2hFLFVBQW1CLENBQUMsWUFBWSxrQkFBQSxZQUFZLFFBQVEsZ0JBQWdCO01BRXBFLFFBQW1CLENBQUMsUUFBUSxNQUFNLGtCQUFBLFlBQVksUUFBUSxNQUFNO01BQzVELFFBQW1CLENBQUMsUUFBUSxNQUFNLGtCQUFBLFlBQVksUUFBUSxNQUFNO01BQzVELFlBQW1CLENBQUMsTUFBTTtNQUMxQixRQUFtQixDQUFDLFFBQVEsTUFBTSxrQkFBQSxZQUFZLFFBQVEsTUFBTTtNQUM1RCxRQUFtQixDQUFDLFFBQVEsTUFBTSxrQkFBQSxZQUFZLFFBQVEsSUFBSTtNQUMxRCxRQUFtQixDQUFDLFFBQVEsTUFBTSxrQkFBQSxZQUFZLFFBQVEsU0FBUztNQUMvRCxRQUFtQixDQUFDLFFBQVEsTUFBTSxrQkFBQSxZQUFZLFFBQVEsU0FBUztNQUUvRCxNQUFtQixDQUFDLFdBQVcsR0FBRztNQUNsQyxNQUFtQixDQUFDLFdBQVcsR0FBRztNQUNsQyxZQUFtQixDQUFDLFdBQVcsR0FBRztNQUNsQyxPQUFtQixDQUFDLFdBQVcsSUFBSTtNQUNuQyxZQUFtQixDQUFDLFdBQVcsQ0FBRztNQUNsQyxPQUFtQixDQUFDLFdBQVcsR0FBRztNQUNsQyxPQUFtQixDQUFDLFdBQVcsSUFBSTtNQUNuQyxPQUFtQixDQUFDLFdBQVcsSUFBSTtNQUNuQyxNQUFtQixDQUFDLFdBQVcsSUFBSTtNQUNuQyxNQUFtQixDQUFDLFdBQVcsSUFBSTtNQUVuQyxRQUFvQjtNQUNwQixRQUFvQjtNQUNwQixRQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixNQUFvQjtNQUNwQixLQUFvQjtNQUNwQixNQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixLQUFvQjtNQUNwQixJQUFvQjtNQUNwQixLQUFvQjtNQUNwQixRQUFtQixDQUFDLFdBQVcsZ0JBQWdCO01BQy9DLFFBQW1CLENBQUMsV0FBVyxnQkFBZ0I7TUFDL0MsSUFBb0I7TUFDcEIsS0FBb0I7TUFDcEIsS0FBb0I7TUFDcEIsS0FBb0I7TUFDcEIsSUFBb0I7TUFDcEIsS0FBb0I7TUFDcEIsS0FBb0I7TUFDcEIsTUFBb0I7TUFDcEIsS0FBb0I7TUFDcEIsS0FBb0I7TUFDcEIsTUFBb0I7TUFFcEIsUUFBbUIsQ0FBQyxVQUFVLENBQUM7TUFDL0IsVUFBbUIsQ0FBQyxVQUFVLENBQUM7TUFFL0IsVUFBcUIsQ0FBQyxhQUFhLE1BQU07TUFDekMsV0FBcUIsQ0FBQyxhQUFhLE1BQU07TUFDekMsV0FBcUIsQ0FBQyxhQUFhLFFBQVEsQ0FBQztNQUM1QyxZQUFxQixDQUFDLGFBQWEsUUFBUSxDQUFDO01BQzVDLFdBQXFCLENBQUMsYUFBYSxNQUFNO01BQ3pDLFlBQXFCLENBQUMsYUFBYSxNQUFNO01BQ3pDLGdCQUFxQixDQUFDLGFBQWEsTUFBTTtNQUN6QyxpQkFBcUIsQ0FBQyxhQUFhLE1BQU07TUFDekMsZUFBcUIsQ0FBQyxhQUFhLE1BQU07TUFDekMsZ0JBQXFCLENBQUMsYUFBYSxNQUFNO01BQ3pDLG9CQUFxQixDQUFDLGFBQWEsTUFBTTtNQUN6QyxxQkFBcUIsQ0FBQyxhQUFhLE1BQU07TUFFekMsU0FBb0I7TUFDcEIsVUFBb0I7TUFDcEIsY0FBb0I7TUFDcEIsVUFBb0IsQ0FBQyxTQUFTLHdDQUF3QyxDQUFDO01BQ3ZFLFVBQW9CLENBQUMsU0FBUyx3Q0FBd0MsQ0FBQztNQUV2RSxNQUFvQjtNQUNwQixnQkFBb0I7TUFDcEIsTUFBb0I7TUFDcEIsZ0JBQW9CO01BQ3BCLE9BQW9CO01BQ3BCLGlCQUFvQjtNQUNwQixPQUFtQixDQUFDLFFBQVEsS0FBSyxHQUFHO01BQ3BDLE9BQW1CLENBQUMsUUFBUSxLQUFLLEdBQUc7TUFDcEMsUUFBbUIsQ0FBQyxRQUFRLEtBQUssR0FBRztNQUVwQyxNQUFvQjtNQUNwQixNQUFvQjtNQUNwQixNQUFvQjtNQUNwQixRQUFtQixDQUFDLFlBQVksUUFBUTtNQUN4QyxVQUFtQixDQUFDLFlBQVksVUFBVTtNQUUxQyxNQUFvQjtNQUNwQixPQUFvQjtNQUNwQixRQUFvQjtNQUVwQixNQUFvQjtNQUNwQixNQUFvQjtNQUNwQixPQUFvQjtNQUNwQixPQUFvQjtNQUNwQixVQUFvQjtNQUNwQixXQUFvQjtNQUVwQixLQUFtQixDQUFDLFVBQVUsYUFBQSxVQUFVLGFBQWE7TUFDckQsS0FBbUIsQ0FBQyxVQUFVLGFBQUEsVUFBVSxlQUFlO01BQ3ZELEtBQW1CLENBQUMsVUFBVSxhQUFBLFVBQVUsZUFBZTtNQUN2RCxLQUFtQixDQUFDLFVBQVUsYUFBQSxVQUFVLGNBQWM7TUFDdEQsS0FBbUIsQ0FBQyxVQUFVLGFBQUEsVUFBVSxxQkFBcUI7TUFDN0QsU0FBbUIsQ0FBQyxVQUFVLEdBQUU7TUFDaEMsTUFBbUIsQ0FBQyxVQUFVLENBQUM7TUFDL0IsT0FBbUIsQ0FBQyxVQUFVLENBQUM7TUFDL0IsV0FBbUIsQ0FBQyxVQUFVLGFBQUEsVUFBVSxhQUFhO01BQ3JELGNBQW1CLENBQUMsVUFBVSxhQUFBLFVBQVUscUJBQXFCO01BRTdELE9BQW9CO01BQ3BCLFFBQW9CO01BQ3BCLE1BQW9CO01BQ3BCLE9BQW9CO01BQ3BCLFFBQW9CO01BQ3BCLE9BQW9CO01BQ3BCLE1BQW9CO01BQ3BCLE1BQW1CLENBQUMsTUFBTTtNQUMxQixPQUFtQixDQUFDLFFBQVEsT0FBTztNQUNuQyxXQUFvQjtNQUVwQixLQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNqRCxLQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNqRCxNQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNqRCxNQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNqRCxNQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLE1BQU0sSUFBSTtNQUNsRCxNQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLE1BQU0sSUFBSTtNQUNsRCxPQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLE1BQU0sSUFBSTtNQUNsRCxPQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLE1BQU0sSUFBSTtNQUNsRCxNQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLE9BQU8sSUFBSTtNQUNuRCxNQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLE9BQU8sSUFBSTtNQUNuRCxPQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLE9BQU8sSUFBSTtNQUNuRCxPQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLE9BQU8sSUFBSTtNQUNuRCxNQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNqRCxNQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNqRCxPQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUNqRCxPQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUssSUFBSTtNQUVqRCxTQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEdBQUc7TUFDM0MsUUFBbUIsQ0FBQyxXQUFXLGFBQUEsU0FBUyxFQUFFO01BQzFDLFVBQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsSUFBSTtNQUM1QyxXQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUs7TUFDN0MsU0FBbUIsQ0FBQyxXQUFXLGFBQUEsU0FBUyxHQUFHO01BQzNDLFNBQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsR0FBRztNQUMzQyxXQUFtQixDQUFDLFdBQVcsYUFBQSxTQUFTLEtBQUs7TUFDN0MsV0FBbUIsQ0FBQyxXQUFXLGFBQUEsU0FBUyxLQUFLO01BRTdDLFNBQW1CLENBQUMsV0FBVyxhQUFBLFNBQVMsT0FBTztNQUUvQyxVQUFvQjtNQUVwQixNQUFvQixDQUFDLFFBQVEsQ0FBQztNQUM5QixNQUFvQjtNQUNwQixNQUFvQixDQUFDLFFBQVEsQ0FBQztNQUM5QixNQUFvQjtNQUNwQixPQUFvQixDQUFDLFNBQVMsZ0NBQWdDLENBQUM7TUFDL0QsVUFBb0I7TUFFcEIsT0FBb0I7TUFDcEIsV0FBbUIsQ0FBQyxTQUFTLGVBQWU7TUFDNUMsU0FBb0I7TUFDcEIsVUFBbUIsQ0FBQyxXQUFXLEdBQUcsQ0FBQztNQUNuQyxVQUFtQixDQUFDLFdBQVcsR0FBRyxDQUFDO01BQ25DLE9BQW9CO01BRXBCLE9BQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLE9BQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLE1BQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLE9BQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLEtBQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLE9BQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLE9BQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLEtBQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLEtBQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLEtBQW1CLENBQUMsVUFBVSxNQUFNO01BQ3BDLFdBQW1CLENBQUMsVUFBVSxRQUFRLENBQUM7TUFDdkMsU0FBbUIsQ0FBQyxVQUFVLFFBQVEsQ0FBQztNQUV2QyxRQUFvQjtNQUNwQixPQUFvQjtNQUNwQixTQUFtQixDQUFDLFVBQVUsS0FBSyxHQUFHO01BQ3RDLE9BQW1CO1FBQUM7UUFBVTtRQUFLO1FBQUk7UUFBYTtRQUFNO1FBQVE7UUFDOUM7TUFBSTtNQUN4QixTQUFtQjtRQUFDO1FBQVU7UUFBTTtRQUFNO1NBQ3RCLEdBQUEsYUFBQSxJQUFHLGFBQUEsVUFBVSxjQUFjO1FBQUc7UUFBUTtNQUFHO01BQzdELGNBQW1CLENBQUMsVUFBVSxNQUFNLE1BQU0sVUFBVSxNQUFNLFFBQVEsR0FBRztNQUNyRSxJQUFvQjtNQUNwQixNQUFvQjtNQUNwQixTQUFtQixDQUFDLFdBQVcsSUFBSTtNQUNuQyxPQUFtQixDQUFDLFNBQVMsT0FBTztNQUNwQyxXQUFtQixDQUFDLFNBQVMsUUFBUTtNQUVyQyxXQUFtQjtRQUFDO1FBQVU7UUFBTTtRQUFNO1NBQ3RCLEdBQUEsYUFBQSxJQUFHLGFBQUEsVUFBVSxjQUFjO1FBQUc7UUFBUTtRQUFLO1FBQzNDO01BQU87TUFDM0IsWUFBbUI7UUFBQztRQUFVO1FBQU07UUFBTTtTQUN0QixHQUFBLGFBQUEsSUFBRyxhQUFBLFVBQVUsY0FBYztRQUFHO1FBQVE7UUFBSztRQUMzQztNQUFNO01BQzFCLE9BQW9CO01BQ3BCLE1BQW9CO01BQ3BCLFFBQW9CO01BR3BCLE1BQW1CLENBQUMsU0FBUyxzRUFDdUI7TUFDcEQsTUFBbUIsQ0FBQyxTQUFTLDJDQUEyQyxDQUFDO01BQ3pFLEtBQW1CO1FBQUM7UUFBUztRQUVUO01BQUM7TUFDckIsS0FBbUIsQ0FBQyxTQUFTLGlFQUNxQixDQUFDO01BQ25ELEtBQW1CLENBQUMsU0FBUyw0QkFBNEI7TUFDekQsTUFBbUIsQ0FBQyxTQUFTLHVDQUF1QyxDQUFDO01BRXJFLEtBQW1CLENBQUMsU0FBUywyQkFBMkIsQ0FBQztNQUN6RCxLQUFtQixDQUFDLFNBQVMsNENBQTRDO01BQ3pFLE9BQW1CLENBQUMsU0FBUywrREFDNEI7TUFDekQsS0FBbUIsQ0FBQyxTQUFTLFdBQVc7TUFHeEMsS0FBb0I7TUFDcEIsTUFBb0I7TUFDcEIsT0FBb0I7TUFDcEIsUUFBb0I7TUFJcEIsT0FBb0I7TUFDcEIsS0FBb0I7TUFFcEIsT0FBb0I7TUFDcEIsS0FBb0I7TUFDcEIsVUFBb0I7TUFHcEIsWUFBb0I7TUFDcEIsVUFBb0I7T0FDbkIsaUJBQUEsT0FBVztBQU1kLFFBQUksR0FBRyxlQUFlLGVBQWUsa0JBQUEsUUFBYSxhQUFhO01BQzdELE9BQWUsQ0FBQyxjQUFjO01BQzlCLFVBQWUsQ0FBQyxZQUFZLE1BQU0sSUFBSTtNQUN0QyxVQUFlO1FBQUM7UUFBWTtRQUFNO1FBQU07UUFBTTtRQUM5QixlQUFBLFFBQVUsS0FBSyxHQUFHLGFBQUEsVUFBVSxjQUFjO1FBQUc7TUFBTTtPQUNsRSxpQkFBQSxPQUFXO0FBTWQsUUFBSSxHQUFHLGFBQWEsYUFBYSxNQUFNO01BQ3JDLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsS0FBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixLQUFVO01BQ1YsVUFBVTtNQUNWLEtBQVU7TUFDVixLQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtNQUNWLFVBQVU7TUFDVixVQUFVO01BQ1YsVUFBVTtLQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy90QkQsUUFBQSxxQkFBQTtBQUNBLFFBQUEsa0JBQUE7QUFDQSxRQUFBLGdCQUFBLGdCQUFBLGtCQUFBO0FBQ0EsUUFBQSxnQkFBQSxnQkFBQSxrQkFBQTtBQUVBLFFBQUEsaUJBQUE7QUFDQSxRQUFBLFFBQUEsYUFBQSxtQkFBQTtBQUNBLFFBQUEsWUFBQTtBQUNBO0FBQ0EsUUFBQSwwQkFBQTtBQU9BLFFBQUksZUFBQSxhQUFhLFNBQVMsTUFBTTtNQUM5QixLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87S0FDUjtBQVFELGFBQWdCLE1BQU0sUUFBbUIsTUFBWTtBQUNuRCxVQUFNLE9BQU8sT0FBTyxNQUFNLElBQUksTUFBTTtBQUNwQyxVQUFJLE1BQU0sT0FFUixFQUFDLGFBQWEsT0FBTyxNQUFNLElBQUksTUFBTSxFQUFDLElBQUksQ0FBQTtBQUM1QyxVQUFNLFFBQVMsZ0JBQUEsV0FBVyxPQUFPLE9BQU8sRUFBbUIsT0FBTyxJQUFJO0FBQ3RFLFVBQU0sU0FBUSxHQUFBLHdCQUFBLFVBQVMsSUFBSTtBQUMzQixVQUFNLE9BQVEsUUFBUSxNQUFNLENBQUMsSUFBSTtBQUdqQyxVQUFJLEtBQUssT0FBTyxPQUFPLFNBQVMsTUFBTSxLQUFNLFFBQVEsTUFBTSxPQUFPLElBQUs7QUFDdEUsWUFBTSxDQUFDLEtBQUssR0FBRyxXQUFXLElBQUksZUFBZSxNQUFNLENBQUMsQ0FBQztBQUNyRCxVQUFJLFNBQVMsTUFBTTtBQUNqQixzQkFBQSxRQUFTLFlBQVksSUFBSSxlQUFlLElBQUk7QUFDNUMsZUFBTyxjQUFjLFFBQVEsZUFBZSxFQUFFOztBQUVoRCxhQUFPLEtBQUssRUFBRTtJQUNoQjtBQWpCQSxJQUFBQyxTQUFBLFFBQUE7QUF5QkEsYUFBUyxZQUFZLFNBQW9CLE1BQVk7QUFFbkQsWUFBTSxJQUFJLGNBQUEsUUFBUyw0QkFDQyxpQ0FBaUMsT0FBTyxJQUFJO0lBQ2xFO0FBUUEsYUFBUyxhQUFhLFNBQW9CLEtBQVc7QUFFbkQsWUFBTSxJQUFJLGNBQUEsUUFBUyxjQUFjLDRCQUE4QixHQUFHO0lBQ3BFO0FBTUEsYUFBUyxnQkFBZ0JDLEtBQTRCOztVQUEzQkMsUUFBSUQsSUFBQTs7QUFDNUIsaUJBQWtCLEtBQUEsU0FBQUMsTUFBSyxRQUFRLFdBQVcsQ0FBQyxHQUFBLEtBQUEsR0FBQSxLQUFBLEdBQUEsQ0FBQSxHQUFBLE1BQUEsS0FBQSxHQUFBLEtBQUEsR0FBRTtBQUF4QyxjQUFNLE1BQUcsR0FBQTtBQUtaLGNBQUksSUFBSSxXQUFXLElBQUksYUFBYSxJQUFJLEdBQUc7QUFLekMsZ0JBQU0sV0FBUyxJQUFJO0FBQ25CLHFCQUFPLFdBQVcsT0FBTyxTQUFPLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFDbEQsWUFBQUEsTUFBSyxlQUFlLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQztBQU1uQyxnQkFBSSxJQUFJLE9BQU8sTUFBTSxHQUFHO0FBQ3RCLGtCQUFNLFNBQVMsSUFBSSxXQUFXLENBQUM7QUFDL0IsY0FBQUEsTUFBSyxlQUFlLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDdEMsY0FBQUEsTUFBSyxlQUFlLFVBQVUsT0FBTyxXQUFXLENBQUMsRUFBRSxVQUF1Qjs7cUJBRW5FLElBQUksT0FBTyxNQUFNLEdBQUc7QUFLN0IsZ0JBQUksT0FBTyxhQUFhLElBQUksV0FBVyxDQUFDLEdBQUcsR0FBRztBQUM5QyxZQUFBQSxNQUFLLGVBQWUsUUFBUSxDQUFDLEdBQUcsQ0FBQzs7Ozs7Ozs7Ozs7O0lBR3ZDO0FBT0EsUUFBQSxXQUFBLFNBQUEsUUFBQTtBQUE4QixnQkFBQUMsV0FBQSxNQUFBO0FBQTlCLGVBQUFBLFlBQUE7O01BQTZDO0FBQUEsYUFBQUE7SUFBQSxFQUFmLFVBQUEsWUFBWTtBQUE3QixJQUFBSCxTQUFBLFdBQUE7QUFPQSxJQUFBQSxTQUFBLG9CQUFtQyxtQkFBQSxjQUFjLE9BQzVELFFBQVM7TUFDUCxTQUFTO1FBQ1AsV0FBVyxDQUFDLFdBQVcsV0FBVyxVQUFVLE9BQU87UUFDbkQsV0FBVyxDQUFDLFdBQVc7UUFFdkIsT0FBTyxDQUFDLGFBQWEsVUFBVSxlQUFlLGVBQWUsV0FBVztRQUN4RSxhQUFhLENBQUMsYUFBYTs7TUFFN0IsVUFBVTtRQUNSLFdBQVc7UUFDWCxPQUFPO1FBQ1AsYUFBYTs7TUFFZixRQUFLQyxNQUFBLENBQUEsR0FFSEEsSUFBQyxNQUFNLFVBQVUsVUFBVSxJQUFJLElBQUcsTUFBTSxXQUN4Q0EsSUFBQyxNQUFNLFNBQVMsVUFBVSxJQUFJLElBQUcsTUFBTSxVQUN2Q0EsSUFBQyxNQUFNLFNBQVMsVUFBVSxJQUFJLElBQUcsTUFBTSxVQUN2Q0EsSUFBQyxNQUFNLFVBQVUsVUFBVSxJQUFJLElBQUcsTUFBTSxXQUN4Q0EsSUFBQyxNQUFNLFVBQVUsVUFBVSxJQUFJLElBQUcsTUFBTSxXQUN4Q0EsSUFBQyxNQUFNLFdBQVcsVUFBVSxJQUFJLElBQUcsTUFBTSxZQUN6Q0EsSUFBQyxNQUFNLFNBQVMsVUFBVSxJQUFJLElBQUcsTUFBTSxVQUN2Q0EsSUFBQyxNQUFNLFNBQVMsVUFBVSxJQUFJLElBQUcsTUFBTSxVQUN2Q0EsSUFBQyxNQUFNLE9BQU8sVUFBVSxJQUFJLElBQUcsTUFBTSxRQUNyQ0EsSUFBQyxNQUFNLFVBQVUsVUFBVSxJQUFJLElBQUcsTUFBTSxXQUN4Q0EsSUFBQyxNQUFNLFVBQVUsVUFBVSxJQUFJLElBQUcsTUFBTSxXQUN4Q0EsSUFBQyxNQUFNLFFBQVEsVUFBVSxJQUFJLElBQUcsTUFBTSxTQUN0Q0EsSUFBQyxNQUFNLFVBQVUsVUFBVSxJQUFJLElBQUcsTUFBTSxXQUN4Q0EsSUFBQyxNQUFNLGFBQWEsVUFBVSxJQUFJLElBQUcsTUFBTSxjQUMzQ0EsSUFBQyxNQUFNLFNBQVMsVUFBVSxJQUFJLElBQUcsTUFBTSxVQUN2Q0EsSUFBQyxNQUFNLFFBQVEsVUFBVSxJQUFJLElBQUcsTUFBTSxTQUN0Q0EsSUFBQyxNQUFNLE9BQU8sVUFBVSxJQUFJLElBQUcsTUFBTSxRQUNyQ0EsSUFBQyxNQUFNLFFBQVEsVUFBVSxJQUFJLElBQUcsTUFBTSxTQUN0Q0EsSUFBQyxNQUFNLGNBQWMsVUFBVSxJQUFJLElBQUcsTUFBTSxlQUM1Q0EsSUFBQyxNQUFNLFNBQVMsVUFBVSxJQUFJLElBQUcsTUFBTSxVQUN2Q0EsSUFBQyxNQUFNLFVBQVUsVUFBVSxJQUFJLElBQUcsTUFBTSxXQUN4Q0EsSUFBQyxNQUFNLGFBQWEsVUFBVSxJQUFJLElBQUcsTUFBTSxjQUMzQ0EsSUFBQyxNQUFNLGFBQWEsVUFBVSxJQUFJLElBQUcsTUFBTTtNQUU3QyxTQUFTO1FBQ1As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QUFhLEtBQUksQ0FBQztNQUN0RCxRQUF3QjtNQUN4QixTQUF3QjtNQUN4QixRQUF3QjtNQUN4QixXQUF3QjtNQUN4QixXQUF3QixDQUFDLFVBQVUsRUFBQyxhQUFhLEtBQUksQ0FBQztNQUN0RCxhQUF3QjtNQUN4QixtQkFBd0I7TUFDeEIsb0JBQXdCO01BQ3hCLFdBQXdCO01BQ3hCLFNBQXdCO01BQ3hCLE9BQXdCO01BQ3hCLGFBQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELE1BQXdCO01BR3hCLE9BQXdCO01BQ3hCLE1BQXdCO01BQ3hCLE1BQXdCO01BQ3hCLE1BQXdCO01BQ3hCLFdBQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELFdBQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELE9BQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELE9BQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELE1BQXdCO01BQ3hCLE1BQXdCO01BQ3hCLE9BQXdCO01BQ3hCLE9BQXdCO01BQ3hCLFdBQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELFdBQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELE9BQXdCO01BQ3hCLE9BQXdCO01BQ3hCLFVBQXdCO01BQ3hCLFVBQXdCO01BQ3hCLE9BQXdCO01BQ3hCLE9BQXdCO01BQ3hCLFNBQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELFNBQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELFVBQXdCO01BQ3hCLFVBQXdCO01BQ3hCLFVBQXdCO01BQ3hCLFVBQXdCO01BQ3hCLGFBQXdCO01BQ3hCLGFBQXdCO01BQ3hCLE1BQXdCO01BQ3hCLE9BQXdCO01BQ3hCLFdBQXdCLENBQUMsVUFBVSxFQUFDLGFBQWEsS0FBSSxDQUFDO01BQ3RELGdCQUF3QixDQUFDLFVBQVUsRUFB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RUFBQyxJQUFJLFFBQU8sQ0FBQztNQUN4QyxNQUFRLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxNQUFRLENBQUMsT0FBTSxNQUFLLElBQUc7TUFDdkIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxNQUFLLElBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxJQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE1BQVEsQ0FBQyxPQUFNLE1BQUssSUFBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFPLElBQUk7TUFDMUIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU8sSUFBSTtNQUMxQixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssSUFBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLElBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxJQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsTUFBSyxNQUFLLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxNQUFRLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLElBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsTUFBSyxPQUFNLENBQUM7TUFDckIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFLO01BQzVCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSztNQUM1QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxJQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsSUFBSTtNQUMzQixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSztNQUN2QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUs7TUFDdkIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxLQUFJLE1BQUssS0FBSztNQUN2QixNQUFRLENBQUMsS0FBSSxNQUFLLEtBQUs7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixPQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixPQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsT0FBUSxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3BCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTs7Ozs7Ozs7Ozs7QUNsUTVCLFFBQUEsZ0JBQUE7QUFDQSxRQUFBLFlBQUE7QUFFYSxJQUFBQyxTQUFBLFFBQW1CLEdBQUEsY0FBQSxVQUFTLFVBQUEsTUFBTTtNQUMzQyxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7T0FDVjtNQUNFLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtLQUNYOzs7Ozs7Ozs7O0FDalFZLElBQUFDLFNBQUEsZUFBcUMsQ0FBQTs7Ozs7Ozs7OztBQ0hsRCxRQUFBLHFCQUFBO0FBQVEsV0FBQSxlQUFBQyxVQUFBLGdCQUFBLEVBQUEsWUFBQSxNQUFBLEtBQUEsV0FBQTtBQUFBLGFBQUEsbUJBQUE7SUFBWSxFQUFBLENBQUE7Ozs7Ozs7Ozs7QUNHUCxJQUFBQyxTQUFBLGNBQW9DO01BQzdDLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLFFBQVEsSUFBRztNQUN4QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUN6QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUN6QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3RCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3RCLElBQU0sQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUN6QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3JCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxRQUFRLElBQUc7TUFDeEIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7Ozs7Ozs7Ozs7O0FDMUM3QixRQUFBLGdCQUFBO0FBQ0EsUUFBQSxvQkFBQTtBQUVhLElBQUFDLFNBQUEsZUFBMEIsR0FBQSxjQUFBLFVBQVMsa0JBQUEsYUFBTTtNQUNsRCxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7T0FDVixDQUFBLENBQ0Q7Ozs7Ozs7Ozs7QUN6Q1ksSUFBQUMsU0FBQSxVQUFnQztNQUN6QyxJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQ3pCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsS0FBSSxPQUFNLEtBQUk7TUFDckIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN0QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUNyQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQU8sS0FBSTtNQUMxQixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE9BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDOzs7Ozs7Ozs7OztBQzNDekMsUUFBQSxnQkFBQTtBQUNBLFFBQUEsZUFBQTtBQUVhLElBQUFDLFNBQUEsV0FBc0IsR0FBQSxjQUFBLFVBQVMsYUFBQSxTQUFNO01BQzlDLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7T0FDVixDQUFBLENBQ0Q7Ozs7Ozs7Ozs7QUMxQ1ksSUFBQUMsU0FBQSxTQUErQjtNQUN4QyxJQUFNLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNoQyxJQUFNLENBQUMsT0FBTSxRQUFRLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxJQUFNLENBQUMsTUFBSyxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNsQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxRQUFRLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNwQyxJQUFNLENBQUMsTUFBSyxNQUFLLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxJQUFNLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDckIsSUFBTSxDQUFDLE1BQUssT0FBTyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFPLEtBQUk7TUFDeEIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQ3pCLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQy9CLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxNQUFLLE1BQUssT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLElBQU0sQ0FBQyxNQUFLLE1BQUssT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLElBQU0sQ0FBQyxPQUFNLFFBQVEsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLElBQU0sQ0FBQyxRQUFRLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLEtBQU0sQ0FBQyxPQUFNLFFBQVEsT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQ3BDLEtBQU8sQ0FBQyxPQUFNLE1BQUssT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLEtBQU8sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN4QixLQUFPLENBQUMsT0FBTSxNQUFNLENBQUM7TUFDckIsS0FBTyxDQUFDLE9BQU0sTUFBTSxHQUFHLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFHLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFHLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbEMsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFHLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFHLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxRQUFRLEdBQUcsRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxLQUFPLENBQUMsT0FBTSxRQUFRLEdBQUcsRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxLQUFPLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sUUFBUSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdkMsTUFBUSxDQUFDLE9BQU0sUUFBUSxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDeEMsTUFBUSxDQUFDLE9BQU0sUUFBUSxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDeEMsTUFBUSxDQUFDLFFBQVEsT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdkMsTUFBUSxDQUFDLE9BQU0sUUFBUSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdkMsTUFBUSxDQUFDLE9BQU0sUUFBUSxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDdEMsTUFBUSxDQUFDLE9BQU0sUUFBUSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdkMsTUFBUSxDQUFDLE9BQU0sUUFBUSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdkMsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sTUFBSyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3BDLE1BQVEsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2xDLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTs7Ozs7Ozs7Ozs7QUMvRDdCLFFBQUEsZ0JBQUE7QUFDQSxRQUFBLGNBQUE7QUFFYSxJQUFBQyxTQUFBLFVBQXFCLEdBQUEsY0FBQSxVQUFTLFlBQUEsUUFBTTtNQUM3QyxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixLQUFNO01BQ04sS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE9BQVE7T0FDVixDQUFBLENBQ0Q7Ozs7Ozs7Ozs7QUM5RFksSUFBQUMsU0FBQSxVQUFnQztNQUN6QyxJQUFNLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxNQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxNQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsTUFBSyxRQUFRLENBQUM7TUFDdEIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxNQUFLLFFBQVEsQ0FBQztNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxLQUFJLEdBQUcsS0FBSTtNQUNwQixNQUFRLENBQUMsS0FBSSxHQUFHLEtBQUk7TUFDcEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxLQUFJLEdBQUcsS0FBSTtNQUNwQixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUs7TUFDeEIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFLO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSztNQUN4QixNQUFRLENBQUMsTUFBTSxNQUFLLEdBQUcsRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNoQyxNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE1BQVEsQ0FBQyxNQUFNLE9BQU0sT0FBTyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLE1BQVEsQ0FBQyxNQUFNLE9BQU0sT0FBTyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLE1BQVEsQ0FBQyxNQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSztNQUN4QixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUs7TUFDeEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFLO01BQ3pCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSztNQUN6QixNQUFRLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxNQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFLO01BQ3pCLE9BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSztNQUN4QixPQUFRLENBQUMsTUFBTSxPQUFNLE9BQU8sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxPQUFRLENBQUMsTUFBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQU0sT0FBTSxLQUFJOzs7Ozs7Ozs7OztBQ3JEN0IsUUFBQSxnQkFBQTtBQUNBLFFBQUEsZUFBQTtBQUVhLElBQUFDLFNBQUEsV0FBc0IsR0FBQSxjQUFBLFVBQVMsYUFBQSxTQUFNO01BQzlDLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7T0FDVjtNQUNFLE9BQVE7S0FDWDs7Ozs7Ozs7OztBQ3BEWSxJQUFBQyxTQUFBLFlBQWtDO01BQzNDLElBQU0sQ0FBQyxHQUFHLEdBQUcsS0FBSTtNQUNqQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQ3pCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsTUFBSyxPQUFPLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQ3pCLElBQU0sQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN0QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsSUFBTSxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ25CLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUN6QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsSUFBTSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQ3pCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTyxLQUFJO01BQ3hCLElBQU0sQ0FBQyxRQUFRLE9BQU0sS0FBSTtNQUN6QixJQUFNLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDekIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQ3pCLEtBQU0sQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUN6QixLQUFNLENBQUMsR0FBRyxHQUFHLEtBQUk7TUFDakIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN4QixLQUFPLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDMUIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxPQUFPLENBQUM7TUFDdEIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLE1BQU0sQ0FBQztNQUNyQixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN2QixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDdkIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsTUFBUSxDQUFDLFFBQVEsT0FBTSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxHQUFHLElBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFLO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEdBQUc7TUFDckIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJOzs7Ozs7Ozs7OztBQ2pGMUIsUUFBQSxnQkFBQTtBQUNBLFFBQUEsaUJBQUE7QUFFYSxJQUFBQyxTQUFBLGFBQXdCLEdBQUEsY0FBQSxVQUFTLGVBQUEsV0FBTTtNQUNoRCxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7T0FDVjtNQUNFLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtLQUNYOzs7Ozs7Ozs7O0FDaEZZLElBQUFDLFNBQUEsU0FBK0I7TUFDeEMsSUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFHO01BQ2hCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxRQUFRLEdBQUU7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxNQUFLLE9BQU0sR0FBRTtNQUNwQixJQUFNLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDdEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUN6QixJQUFNLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDckIsSUFBTSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3JCLElBQU0sQ0FBQyxNQUFLLE9BQU8sR0FBRTtNQUNyQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUN6QixJQUFNLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDbkIsSUFBTSxDQUFDLE1BQUssTUFBSyxHQUFFO01BQ25CLElBQU0sQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUNyQixJQUFNLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDbEIsSUFBTSxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ2xCLElBQU0sQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUNyQixJQUFNLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDbEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3JCLElBQU0sQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUNyQixJQUFNLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDckIsSUFBTSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3JCLElBQU0sQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUNyQixJQUFNLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDbkIsSUFBTSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3RCLElBQU0sQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUNyQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3JCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ25CLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUNuQixJQUFNLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDbkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLEdBQUcsSUFBRztNQUNuQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLEdBQUcsSUFBRztNQUNuQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDdEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3RCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUN4QixJQUFNLENBQUMsT0FBTSxHQUFHLElBQUc7TUFDbkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ25CLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDckIsSUFBTSxDQUFDLE1BQUssTUFBSyxHQUFFO01BQ25CLElBQU0sQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUNyQixJQUFNLENBQUMsT0FBTSxRQUFRLEdBQUU7TUFDdkIsSUFBTSxDQUFDLFFBQVEsT0FBTSxHQUFFO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDckIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2hDLEtBQU0sQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUNyQixLQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsS0FBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsS0FBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLEtBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixLQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsS0FBTSxDQUFDLE9BQU0sTUFBSyxHQUFFO01BQ3BCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDdEIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFN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QU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDL0MsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUMvQyxNQUFRLENBQUMsT0FBTSxNQUFLLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDOUMsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksTUFBSSxDQUFDO01BQzlDLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDL0MsTUFBUSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQy9DLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxNQUFLLE1BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDOUMsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQ3BDLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sQ0FBQztNQUNyQixNQUFRLENBQUMsTUFBSyxPQUFNLENBQUM7TUFDckIsTUFBUSxDQUFDLE9BQU0sTUFBSyxDQUFDO01BQ3JCLE1BQVEsQ0FBQyxPQUFNLE1BQUssQ0FBQztNQUNyQixNQUFRLENBQUMsT0FBTSxPQUFPLENBQUM7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTyxDQUFDO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN4QixNQUFRLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDeEIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFLO01BQzVCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSztNQUM1QixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSztNQUM1QixNQUFRLENBQUMsT0FBTSxPQUFPLENBQUM7TUFDdkIsTUFBUSxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3BCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsR0FBRTtNQUNwQixNQUFRLENBQUMsT0FBTSxHQUFHLENBQUM7TUFDbkIsTUFBUSxDQUFDLE1BQUssR0FBRyxDQUFDO01BQ2xCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTyxDQUFDO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sQ0FBQztNQUNyQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU8sQ0FBQztNQUN2QixNQUFRLENBQUMsTUFBSyxPQUFNLENBQUM7TUFDckIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLENBQUM7TUFDbkIsTUFBUSxDQUFDLE9BQU0sR0FBRyxDQUFDO01BQ25CLE1BQVEsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSztNQUM1QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUs7TUFDNUIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDaEQsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDdkIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQUssR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUs7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxLQUFJLE9BQU0sS0FBSTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE1BQUssTUFBSyxHQUFFO01BQ3JCLE1BQVEsQ0FBQyxNQUFLLE1BQUssR0FBRTtNQUNyQixNQUFRLENBQUMsT0FBTSxRQUFRLEdBQUU7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN6QixNQUFRLENBQUMsS0FBSSxLQUFJLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNoQyxNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxNQUFRLENBQUMsTUFBSyxNQUFLLEdBQUU7TUFDckIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE1BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE1BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLE1BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLE9BQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE1BQUssUUFBUSxLQUFJO01BQzFCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdEIsTUFBUSxDQUFDLE1BQUssTUFBSyxHQUFFO01BQ3JCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFLO01BQzVCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxRQUFRLEdBQUU7TUFDekIsTUFBUSxDQUFDLE1BQUssT0FBTyxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBTSxHQUFFO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxPQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxRQUFRLEtBQUk7TUFDM0IsTUFBUSxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN4QixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLEtBQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE9BQU8sS0FBSztNQUMxQixNQUFRLENBQUMsTUFBTSxNQUFNLEtBQUs7TUFDMUIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN4QixNQUFRLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDeEIsTUFBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE1BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsR0FBRTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBTSxHQUFFO01BQ3ZCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsS0FBSSxPQUFNLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxLQUFJLE9BQU0sS0FBSTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQU0sR0FBRTtNQUN2QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxDQUFDO01BQ3RCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixPQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsT0FBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE1BQUssTUFBSyxLQUFLO01BQ3hCLE9BQVEsQ0FBQyxNQUFLLE1BQUssS0FBSztNQUN4QixPQUFRLENBQUMsTUFBSyxNQUFLLEtBQUs7TUFDeEIsT0FBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE9BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixPQUFRLENBQUMsT0FBTSxPQUFNLE9BQU8sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxPQUFRLENBQUMsT0FBTSxPQUFRLEtBQUk7TUFDM0IsT0FBUSxDQUFDLE9BQU0sR0FBRyxJQUFHO01BQ3JCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixPQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFPLE9BQU0sS0FBSTtNQUMxQixPQUFRLENBQUMsT0FBTyxPQUFNLEtBQUk7TUFDMUIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsT0FBUSxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3ZCLE9BQVEsQ0FBQyxNQUFLLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3BDLE9BQVEsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ3RCLFFBQVMsQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUN0QixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUs7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFLO01BQzNCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLEtBQUksR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sS0FBSSxLQUFJO01BQ3hCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ3RCLFFBQVMsQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUN0QixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDdEIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxNQUFNLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sS0FBSSxLQUFJO01BQ3hCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLE1BQUssRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNsQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE1BQUssR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxNQUFLLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQzVDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQ2pELFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE1BQUssTUFBSyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sTUFBSyxFQUFDLElBQUksTUFBSyxJQUFJLE1BQUksQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3hCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxNQUFLLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE1BQUssR0FBRyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzVDLFFBQVMsQ0FBQyxNQUFLLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE9BQUssQ0FBQztNQUM1QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFPLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQy9DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsTUFBSyxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQ2pELFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUksRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDL0MsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxNQUFLLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksUUFBTyxDQUFDO01BQ3pDLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSztNQUMzQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxNQUFLLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDaEQsUUFBUyxDQUFDLE9BQU0sT0FBTSxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksS0FBRyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTyxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxNQUFJLENBQUM7TUFDL0MsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU8sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUksRUFBQyxJQUFJLE1BQUssSUFBSSxLQUFHLENBQUM7TUFDNUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQ2hELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLEtBQUcsQ0FBQztNQUMvQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDaEQsUUFBUyxDQUFDLE9BQU0sT0FBTSxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQy9DLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sSUFBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzNCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE1BQUssT0FBTSxHQUFFO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFLLElBQUc7TUFDeEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3hCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE1BQUssT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLENBQUM7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFLO01BQzNCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMzQixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFLLE1BQUssRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNyQyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFLO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLElBQUc7TUFDeEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE1BQUssTUFBSyxLQUFJO01BQ3hCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDeEIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUN0QixRQUFTLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxNQUFLLE1BQUssR0FBRTtNQUN0QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDeEIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUs7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDekIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEdBQUU7TUFDckIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsR0FBRTtNQUNyQixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxNQUFLLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxNQUFLLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLFFBQVMsQ0FBQyxPQUFNLE1BQUssT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLFFBQVMsQ0FBQyxNQUFLLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3JDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsTUFBSyxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNsQyxRQUFTLENBQUMsTUFBSyxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE1BQUssT0FBTSxFQUFDLElBQUksS0FBRyxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxNQUFNLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxNQUFLLE1BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxNQUFLLE1BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDckMsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxNQUFLLE1BQU0sS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDdEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxNQUFLLEdBQUcsS0FBSTtNQUN0QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUs7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE1BQUssR0FBRyxHQUFFO01BQ3BCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsTUFBSyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2xDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxNQUFLLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsTUFBSyxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDNUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLFFBQVMsQ0FBQyxPQUFNLEdBQUcsTUFBSyxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxNQUFLLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE9BQUssQ0FBQztNQUM3QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxNQUFLLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQ2pELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE1BQUssT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE1BQUssT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSyxJQUFJLE9BQUssQ0FBQztNQUNoRCxRQUFTLENBQUMsT0FBTSxNQUFLLE1BQUssRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNyQyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQ2pELFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsTUFBSyxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxPQUFLLENBQUM7TUFDNUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsUUFBUyxDQUFDLE1BQUssR0FBRyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzVDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU8sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDL0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsTUFBSyxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDN0MsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3BDLFFBQVMsQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN0QyxRQUFTLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNyQyxRQUFTLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDakQsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDckMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUN2QyxRQUFTLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUNqRCxRQUFTLENBQUMsT0FBTSxNQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQ2pELFFBQVMsQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3ZDLFFBQVMsQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ3RDLFFBQVMsQ0FBQyxPQUFNLE1BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsTUFBSyxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDaEQsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdEMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDdkMsUUFBUyxDQUFDLE9BQU0sTUFBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN2QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDMUIsUUFBUyxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQzFCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsR0FBRTtNQUNyQixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ3JCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN4QixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxHQUFFO01BQ3hCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sR0FBRTtNQUN4QixRQUFTLENBQUMsT0FBTSxPQUFNLEdBQUU7TUFDeEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsSUFBRztNQUN0QixRQUFTLENBQUMsT0FBTSxHQUFHLElBQUc7TUFDdEIsUUFBUyxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLEdBQUcsSUFBRztNQUN0QixRQUFTLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN6QixRQUFTLENBQUMsT0FBTSxPQUFNLElBQUc7TUFDekIsUUFBUyxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN6QixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3ZCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdkIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUMxQixRQUFTLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDekIsUUFBUyxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3pCLFFBQVMsQ0FBQyxPQUFNLE9BQU0sS0FBSTs7Ozs7Ozs7Ozs7QUNyeEM5QixRQUFBLGdCQUFBO0FBQ0EsUUFBQSxjQUFBO0FBRWEsSUFBQUMsU0FBQSxVQUFxQixHQUFBLGNBQUEsVUFBUyxZQUFBLFFBQU07TUFDN0MsSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7TUFDVCxRQUFTO01BQ1QsUUFBUztNQUNULFFBQVM7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LENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE1BQUssTUFBSyxLQUFJLEVBQUMsSUFBSSxJQUFFLENBQUM7TUFDN0IsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsSUFBTSxDQUFDLE9BQU0sR0FBRyxHQUFFO01BQ2xCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQzlCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQzlCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE1BQUssT0FBTyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDaEMsSUFBTSxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDakMsSUFBTSxDQUFDLE1BQUssTUFBSyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsSUFBTSxDQUFDLE1BQUssTUFBSyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsSUFBTSxDQUFDLE9BQU0sUUFBUSxLQUFJLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLFFBQVEsT0FBTSxLQUFJLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsS0FBTSxDQUFDLE9BQU0sUUFBUSxLQUFJLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbEMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDcEMsS0FBTyxDQUFDLE9BQU0sUUFBUSxDQUFDO01BQ3ZCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRyxFQUFDLElBQUksS0FBRyxDQUFDO01BQ2xDLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLEtBQU8sQ0FBQyxNQUFLLFFBQVEsQ0FBQztNQUN0QixLQUFPLENBQUMsTUFBSyxRQUFRLEdBQUcsRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFHLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsS0FBTyxDQUFDLE9BQU0sUUFBUSxHQUFHLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbEMsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLEtBQU8sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ2pDLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNoQyxLQUFPLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNoQyxLQUFPLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDcEMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDaEMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDakMsS0FBTyxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFD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QUFRLENBQUM7TUFDdkIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN4QixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDeEIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsS0FBTyxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3JCLEtBQU8sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNyQixLQUFPLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDckIsTUFBUSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN4QixNQUFRLENBQUMsT0FBTSxRQUFRLENBQUM7TUFDeEIsTUFBUSxDQUFDLFFBQVEsT0FBTSxHQUFFO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLFFB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LFNBQUEsc0JBQTRDO01BQ3JELElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxJQUFNLENBQUMsT0FBTSxNQUFLLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNqQyxJQUFNLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNqQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxNQUFJLENBQUM7TUFDNUMsSUFBTSxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQzVDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUMzQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbkMsSUFBTSxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sTUFBSyxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxLQUFHLENBQUM7TUFDNUMsSUFBTSxDQUFDLE1BQUssT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzdDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQy9DLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLEtBQUcsQ0FBQztNQUN6QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksS0FBRyxDQUFDO01BQ3pDLEtBQU8sQ0FBQyxPQUFNLE1BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3JDLEtBQU8sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDOzs7Ozs7Ozs7OztBQy9CekMsUUFBQSxnQkFBQTtBQUNBLFFBQUEsNkJBQUE7QUFFYSxJQUFBQyxTQUFBLHVCQUFrQyxHQUFBLGNBQUEsVUFBUywyQkFBQSxxQkFBTTtNQUMxRCxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLEtBQU87TUFDUCxLQUFPO09BQ1QsQ0FBQSxDQUNEOzs7Ozs7Ozs7O0FDOUJZLElBQUFDLFNBQUEsa0JBQXdDO01BQ2pELElBQU0sQ0FBQyxPQUFNLE1BQUssT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM1QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNqQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFLLElBQUksTUFBSSxDQUFDO01BQzVDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUMzQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxNQUFLLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbEMsSUFBTSxDQUFDLE9BQU0sTUFBSyxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLE9BQU0sTUFBSyxNQUFLLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzVDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUM5QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUMxQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDOzs7Ozs7Ozs7OztBQzdCOUMsUUFBQSxnQkFBQTtBQUNBLFFBQUEsd0JBQUE7QUFFYSxJQUFBQyxTQUFBLG1CQUE4QixHQUFBLGNBQUEsVUFBUyxzQkFBQSxpQkFBTTtNQUN0RCxJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtPQUNSLENBQUEsQ0FDRDs7Ozs7Ozs7OztBQzVCWSxJQUFBQyxTQUFBLFlBQWtDO01BQzNDLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDbkIsSUFBTSxDQUFDLE1BQUssR0FBRyxLQUFJO01BQ25CLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3BCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDcEIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN0QixJQUFNLENBQUMsT0FBTSxNQUFLLElBQUc7TUFDckIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE1BQUssSUFBRztNQUNyQixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxJQUFHO01BQ3RCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDdEIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN0QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sSUFBRztNQUN0QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sTUFBSyxJQUFHO01BQ3JCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixLQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsS0FBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLEtBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTs7Ozs7Ozs7Ozs7QUN2RDNCLFFBQUEsZ0JBQUE7QUFDQSxRQUFBLGtCQUFBO0FBRWEsSUFBQUMsU0FBQSxhQUF3QixHQUFBLGNBQUEsVUFBUyxnQkFBQSxXQUFNO01BQ2hELElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07T0FDUixDQUFBLENBQ0Q7Ozs7Ozs7Ozs7QUN0RFksSUFBQUMsU0FBQSxrQkFBd0M7TUFDakQsSUFBTSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3RCLElBQU0sQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUNwQixJQUFNLENBQUMsTUFBSyxHQUFHLEtBQUk7TUFDbkIsSUFBTSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3ZCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3RCLElBQU0sQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN2QixJQUFNLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDdkIsSUFBTSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3RCLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxJQUFNLENBQUMsT0FBTSxNQUFLLE9BQU0sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNqQyxJQUFNLENBQUMsT0FBTSxHQUFHLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNqQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxNQUFJLENBQUM7TUFDNUMsSUFBTSxDQUFDLE9BQU0sTUFBSyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksTUFBSSxDQUFDO01BQzVDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLEdBQUcsT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE9BQUssQ0FBQztNQUMzQyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxNQUFJLENBQUM7TUFDN0MsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFLLENBQUM7TUFDcEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbEMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFPLEVBQUMsSUFBSSxLQUFHLENBQUM7TUFDbkMsSUFBTSxD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QU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUssSUFBSSxNQUFJLENBQUM7TUFDNUMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLE9BQU0sR0FBRyxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzNDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQUssQ0FBQztNQUNwQyxJQUFNLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNsQyxJQUFNLENBQUMsT0FBTSxNQUFLLE9BQU8sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxJQUFNLENBQUMsT0FBTSxNQUFLLE1BQUssRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDNUMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDbkMsSUFBTSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxPQUFNLElBQUksT0FBSyxDQUFDO01BQzlDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBSyxDQUFDO01BQ3BDLElBQU0sQ0FBQyxPQUFNLE9BQU0sT0FBTSxFQUFDLElBQUksT0FBTSxJQUFJLE1BQUksQ0FBQztNQUM3QyxJQUFNLENBQUMsT0FBTSxPQUFNLE9BQU0sRUFBQyxJQUFJLE9BQU0sSUFBSSxPQUFLLENBQUM7TUFDOUMsSUFBTSxDQUFDLE9BQU0sT0FBTSxP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QUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE9BQU8sT0FBTSxLQUFJO01BQzFCLE1BQVEsQ0FBQyxPQUFPLE9BQU0sS0FBSTtNQUMxQixNQUFRLENBQUMsTUFBSyxNQUFLLEtBQUk7TUFDdkIsTUFBUSxDQUFDLE9BQU8sT0FBTSxLQUFJO01BQzFCLE1BQVEsQ0FBQyxPQUFPLE9BQU0sS0FBSTtNQUMxQixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU8sT0FBTSxLQUFJO01BQzFCLE1BQVEsQ0FBQyxPQUFPLE9BQU0sS0FBSTtNQUMxQixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU8sT0FBTSxLQUFJO01BQzFCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQUssT0FBTSxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE1BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUs7TUFDMUIsT0FBUSxDQUFDLE1BQU0sT0FBTyxLQUFJO01BQzFCLE9BQVEsQ0FBQyxNQUFNLE9BQU8sS0FBSTtNQUMxQixPQUFRLENBQUMsTUFBTSxPQUFPLEtBQUk7TUFDMUIsT0FBUSxDQUFDLE1BQU0sT0FBTyxLQUFJO01BQzFCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSztNQUMxQixPQUFRLENBQUMsT0FBTSxPQUFNLE9BQU8sRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNyQyxPQUFRLENBQUMsTUFBSyxPQUFNLE1BQUssRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNsQyxPQUFRLENBQUMsTUFBSyxPQUFNLE1BQUssRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNuQyxPQUFRLENBQUMsT0FBTSxHQUFHLE1BQUssRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUNoQyxPQUFRLENBQUMsT0FBTSxHQUFHLE1BQUssRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNqQyxPQUFRLENBQUMsTUFBSyxLQUFJLEtBQUksRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUMvQixPQUFRLENBQUMsT0FBTSxHQUFHLEtBQUksRUFBQyxJQUFJLEtBQUcsQ0FBQztNQUMvQixPQUFRLENBQUMsTUFBSyxPQUFNLEtBQUksRUFBQyxJQUFJLEtBQUcsQ0FBQzs7Ozs7Ozs7Ozs7QUN4RHJDLFFBQUEsZ0JBQUE7QUFDQSxRQUFBLGlCQUFBO0FBRWEsSUFBQUMsU0FBQSxZQUF1QixHQUFBLGNBQUEsVUFBUyxlQUFBLFVBQU07TUFDL0MsSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sSUFBTTtNQUNOLElBQU07TUFDTixJQUFNO01BQ04sS0FBTTtNQUNOLEtBQU07TUFDTixLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxLQUFPO01BQ1AsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO09BQ1Y7TUFDRSxPQUFRO01BQ1IsT0FBUTtLQUNYOzs7Ozs7Ozs7O0FDdkRZLElBQUFDLFNBQUEsYUFBbUM7TUFDNUMsS0FBTyxDQUFDLE9BQU0sUUFBUSxPQUFPLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDdkMsS0FBTyxDQUFDLE9BQU0sUUFBUSxLQUFLO01BQzNCLEtBQU8sQ0FBQyxPQUFNLFFBQVEsR0FBRyxFQUFDLElBQUksTUFBSSxDQUFDO01BQ25DLEtBQU8sQ0FBQyxPQUFNLFFBQVEsQ0FBQztNQUN2QixNQUFPLENBQUMsT0FBTSxNQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxNQUFRLENBQUMsT0FBTSxPQUFNLE1BQUssRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxNQUFRLENBQUMsT0FBTSxRQUFRLEdBQUU7TUFDekIsTUFBUSxDQUFDLE9BQU0sUUFBUSxHQUFFO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sQ0FBQztNQUN0QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sR0FBRyxLQUFJO01BQ3RCLE1BQVEsQ0FBQyxNQUFLLE9BQU8sR0FBRTtNQUN2QixNQUFRLENBQUMsTUFBSyxPQUFNLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxNQUFLLE9BQU0sS0FBSTtNQUN4QixNQUFRLENBQUMsTUFBSyxPQUFNLE9BQU0sRUFBQyxJQUFJLE1BQUksQ0FBQztNQUNwQyxNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxPQUFNLEVBQUMsSUFBSSxNQUFJLENBQUM7TUFDckMsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLE9BQU8sS0FBSTtNQUMxQixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sTUFBSyxLQUFJO01BQ3hCLE1BQVEsQ0FBQyxPQUFNLE1BQUssS0FBSTtNQUN4QixNQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE1BQVEsQ0FBQyxPQUFNLEdBQUcsS0FBSTtNQUN0QixNQUFRLENBQUMsT0FBTSxHQUFHLEtBQUk7TUFDdEIsTUFBUSxDQUFDLE9BQU0sUUFBUSxLQUFJO01BQzNCLE1BQVEsQ0FBQyxPQUFNLFFBQVEsS0FBSTtNQUMzQixNQUFRLENBQUMsT0FBTSxNQUFLLEtBQUk7TUFDeEIsTUFBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTtNQUN6QixPQUFRLENBQUMsT0FBTSxPQUFNLEtBQUk7TUFDekIsT0FBUSxDQUFDLE9BQU0sT0FBTSxLQUFJO01BQ3pCLE9BQVEsQ0FBQyxPQUFNLE9BQU0sS0FBSTs7Ozs7Ozs7Ozs7QUN6QzdCLFFBQUEsZ0JBQUE7QUFDQSxRQUFBLG1CQUFBO0FBRWEsSUFBQUMsU0FBQSxjQUF5QixHQUFBLGNBQUEsVUFBUyxpQkFBQSxZQUFNO01BQ2pELEtBQU87TUFDUCxLQUFPO01BQ1AsS0FBTztNQUNQLEtBQU87TUFDUCxNQUFPO01BQ1AsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixNQUFRO01BQ1IsTUFBUTtNQUNSLE1BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO09BQ1YsQ0FBQSxDQUNEOzs7Ozs7Ozs7O0FDMUNELFFBQUEsZ0JBQUE7QUFFYSxJQUFBQyxTQUFBLE9BQU8sQ0FBQyxNQUFLLE1BQUssS0FBSTtBQUN0QixJQUFBQSxTQUFBLE9BQU8sQ0FBQyxNQUFLLE9BQU0sS0FBSTtBQUN2QixJQUFBQSxTQUFBLE9BQU8sQ0FBQyxPQUFNLE9BQU0sR0FBRTtBQUN0QixJQUFBQSxTQUFBLFNBQVMsQ0FBQyxHQUFHLEtBQUssS0FBSyxLQUFLLENBQUM7QUFFMUMsUUFBTSxVQUFVLEVBQUMsR0FBRyxJQUFNLEtBQUssY0FBQSxHQUFHLE9BQU9BLFNBQUEsT0FBTTtBQUMvQyxRQUFNLFVBQVUsRUFBQyxHQUFHLEtBQU0sS0FBSyxjQUFBLEdBQUcsT0FBTyxDQUFDLEdBQUUsR0FBRyxTQUFTLENBQUMsR0FBRyxHQUFJLEdBQUcsS0FBSyxDQUFDLE1BQUssUUFBUSxHQUFFLEVBQUM7QUFDekYsUUFBTSxXQUFXLEVBQUMsR0FBRyxLQUFPLEtBQUssY0FBQSxHQUFHLE9BQU8sQ0FBQyxLQUFJLE9BQU0sR0FBRyxPQUFPLEtBQUssRUFBQztBQUN0RSxRQUFNLFdBQVcsRUFBQyxHQUFHLEtBQU8sS0FBSyxjQUFBLEdBQUcsT0FBTyxDQUFDLEtBQUksT0FBTSxHQUFHLE9BQU8sS0FBSyxFQUFDO0FBQ3RFLFFBQU0sWUFBWSxFQUFDLEdBQUcsTUFBUSxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsR0FBRSxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQU0sR0FBRyxLQUFLLENBQUMsT0FBTSxRQUFRLEdBQUUsRUFBQztBQUNoRyxRQUFNLFlBQVksRUFBQyxHQUFHLE1BQVEsS0FBSyxjQUFBLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBUSxJQUFNLEdBQUcsS0FBS0EsU0FBQSxLQUFJO0FBQ3RGLFFBQU0sWUFBWSxFQUFDLEdBQUcsTUFBUSxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsS0FBSTtBQUN6RixRQUFNLFlBQVksRUFBQyxHQUFHLE1BQVEsS0FBSyxjQUFBLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBUSxNQUFRLElBQU0sR0FBRyxLQUFLQSxTQUFBLEtBQUk7QUFDOUYsUUFBTSxZQUFZLEVBQUMsR0FBRyxNQUFRLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLE1BQUs7QUFDOUYsUUFBTSxZQUFZLEVBQUMsR0FBRyxNQUFRLEtBQUssY0FBQSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQVEsTUFBUSxJQUFNLEdBQUcsS0FBS0EsU0FBQSxLQUFJO0FBQzlGLFFBQU0sWUFBWSxFQUFDLEdBQUcsTUFBUSxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFRLEVBQUksR0FBRyxLQUFLQSxTQUFBLEtBQUk7QUFDcEYsUUFBTSxZQUFZLEVBQUMsR0FBRyxNQUFRLEtBQUssY0FBQSxHQUFHLE9BQU8sQ0FBQyxDQUFDLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBTSxJQUFNLEdBQUcsS0FBS0EsU0FBQSxLQUFJO0FBQ3ZGLFFBQU0sWUFBWSxFQUFDLEdBQUcsTUFBUSxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFRLElBQU0sSUFBTSxHQUFHLEtBQUtBLFNBQUEsS0FBSTtBQUM1RixRQUFNLFlBQVksRUFBQyxHQUFHLE1BQVEsS0FBSyxjQUFBLEdBQUcsT0FBTyxDQUFDLEtBQUksR0FBRyxTQUFTLENBQUMsR0FBRyxJQUFNLEdBQUcsS0FBS0EsU0FBQSxLQUFJO0FBQ3BGLFFBQU0sWUFBWSxFQUFDLEdBQUcsTUFBUSxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLElBQU0sR0FBRyxLQUFLLENBQUMsT0FBTSxPQUFNLEtBQUksRUFBQztBQUMvRixRQUFNLFlBQVk7TUFBQyxH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QUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLE1BQUs7TUFDekUsTUFBUTtNQUNSLE1BQVEsRUFBQyxLQUFLLGNBQUEsR0FBRyxTQUFTLENBQUMsTUFBUSxNQUFRLElBQU0sR0FBRyxLQUFLQSxTQUFBLE1BQU0sS0FBSyxNQUFLO01BQ3pFLE1BQVEsRUFBQyxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsS0FBSSxHQUFHLFNBQVMsQ0FBQyxNQUFRLElBQU0sR0FBRyxLQUFLQSxTQUFBLEtBQUk7TUFDcEUsTUFBUSxFQUFDLEtBQUssY0FBQSxHQUFHLE9BQU8sQ0FBQyxLQUFJLEdBQUcsU0FBUyxDQUFDLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsS0FBSTtNQUNwRSxNQUFRLEVBQUMsS0FBSyxjQUFBLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsTUFBUSxJQUFNLEdBQUcsS0FBS0EsU0FBQSxLQUFJO01BQ2pFLE1BQVEsRUFBQyxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxNQUFRLElBQU0sR0FBRyxLQUFLQSxTQUFBLEtBQUk7TUFDakUsTUFBUSxFQUFDLEtBQUssY0FBQSxHQUFHLE9BQU8sQ0FBQyxLQUFJLEdBQUcsU0FBUyxDQUFDLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsS0FBSTtNQUNwRSxNQUFRLEVBQUMsS0FBSyxjQUFBLEdBQUcsT0FBTyxDQUFDLEtBQUksR0FBRyxTQUFTLENBQUMsTUFBUSxJQUFNLEdBQUcsS0FBS0EsU0FBQSxLQUFJO01BQ3BFLE1BQVEsRUFBQyxLQUFLLGNBQUEsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxHQUFHLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsS0FBSTtNQUNwRSxNQUFRLEVBQUMsS0FBSyxjQUFBLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxTQUFTLENBQUMsR0FBRyxNQUFRLElBQU0sR0FB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TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUTtNQUNSLE9BQVE7TUFDUixPQUFRO01BQ1IsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLEVBQUM7TUFDckUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLE1BQUs7TUFDekUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLEVBQUM7TUFDckUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLElBQUU7TUFDdEUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLE1BQUs7TUFDekUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLE1BQUs7TUFDekUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLE1BQUs7TUFDekUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLE1BQUs7TUFDekUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1BQVEsSUFBTSxHQUFHLEtBQUtBLFNBQUEsTUFBTSxLQUFLLE1BQUs7TUFDekUsT0FBUSxFQUFDLEtBQUssY0FBQSxHQUFHLFNBQVMsQ0FBQyxNQUFRLE1B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QUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxZQUFXLEdBQUUsTUFBSyxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsS0FBSSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLGFBQWEsR0FBRSxDQUFDLEtBQUksU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsTUFBSyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsdUJBQXVCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSx5QkFBeUIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxpQkFBZ0IsR0FBRSxNQUFLLEdBQUUsZUFBYyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLG9CQUFvQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSw0QkFBNEIsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsTUFBSyxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsYUFBWSxHQUFFLEtBQUksR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxhQUFZLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsZUFBYyxHQUFFLE1BQUssR0FBRSxZQUFXLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLElBQUksSUFBa0MsNEJBQVksQ0FBQyxDQUFDLEtBQUksUUFBUSxHQUFFLENBQUMsTUFBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLElBQUksSUFBa0MsNEJBQVksQ0FBQyxDQUFDLEtBQUksUUFBUSxHQUFFLENBQUMsTUFBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUscUJBQW9CLENBQUMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsTUFBSyxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE1BQUssR0FBRSxnQkFBZSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLE9BQU0sR0FBRSxpQkFBZ0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLE9BQU0sR0FBRSxpQkFBZ0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsb0JBQW1CLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsc0JBQXFCLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsT0FBTSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLE9BQU0sR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsdUJBQXNCLEdBQUUsTUFBSyxHQUFFLFlBQVcsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsd0JBQXVCLEdBQUUsTUFBSyxHQUFFLFlBQVcsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSx5QkFBeUIsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLDBCQUEwQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxLQUFJLEdBQUUsYUFBWSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxXQUFXLEdBQUUsQ0FBQyxJQUFHLGNBQWMsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsSUFBRyxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsS0FBSSxZQUFZLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxLQUFJLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLElBQUcscUJBQXFCLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLElBQUcscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSx1QkFBdUIsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLDRCQUE0QixHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEtBQUksVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsdUJBQXVCLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxxQkFBb0IsR0FBRSxLQUFJLEdBQUUsdUJBQXNCLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLHNCQUFxQixHQUFFLEtBQUksR0FBRSx3QkFBdUIsQ0FBQyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxJQUFHLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxhQUFZLEdBQUUsS0FBSSxHQUFFLGFBQVksQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxLQUFJLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsY0FBYSxHQUFFLEtBQUksR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGNBQWEsR0FBRSxLQUFJLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsY0FBYSxHQUFFLEtBQUksR0FBRSxzQkFBcUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsb0JBQW1CLEdBQUUsS0FBSSxHQUFFLDRCQUEyQixDQUFDLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLE9BQU0sR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxPQUFNLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLG1CQUFrQixHQUFFLEtBQUksR0FBRSxxQkFBb0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLEtBQUksR0FBRSxxQkFBb0IsQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLE9BQU0sR0FBRSxrQkFBaUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLE9BQU0sR0FBRSxrQkFBaUIsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLE1BQUssR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLE9BQU0sRUFBQyxHQUFFLElBQUksSUFBa0MsNEJBQVksQ0FBQyxDQUFDLE9BQU0sUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxJQUFHLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRSxDQUFDLE1BQUssU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLENBQUMsQ0FBQyxDQUFDOzs7OztBQ2U1OXRCLFNBQVUsVUFBVSxLQUFXO0FBQ2pDLE1BQUksTUFBTTtBQUNWLE1BQUksVUFBVTtBQUNkLE1BQUlDO0FBRUosVUFBUUEsU0FBUSxZQUFZLEtBQUssR0FBRyxPQUFPLE1BQU07QUFDN0MsVUFBTSxJQUFJQSxPQUFNO0FBQ2hCLFVB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QTtBQXZDYjtBQUFBO0FBQU8sSUFBTSxlQUFlLElBQUksSUFBSTtBQUFBLE1BQ2hDO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDSixFQUFFLElBQUksQ0FBQ0MsU0FBUSxDQUFDQSxLQUFJLFlBQVksR0FBR0EsSUFBRyxDQUFDLENBQUM7QUFDakMsSUFBTSxpQkFBaUIsSUFBSSxJQUFJO0FBQUEsTUFDbEM7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFB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bEIsTUFBQUEsV0FBVSxRQUFRLElBQUk7QUFDdEIsTUFBQUEsV0FBVSxTQUFTLElBQUk7QUFDdkIsTUFBQUEsV0FBVSxRQUFRLElBQUk7QUFDdEIsTUFBQUEsV0FBVSxNQUFNLElBQUk7QUFDcEIsTUFBQUEsV0FBVSxLQUFLLElBQUk7QUFDbkIsTUFBQUEsV0FBVSxVQUFVLElBQUk7QUFDeEIsTUFBQUEsV0FBVSxJQUFJLElBQUk7QUFDbEIsTUFBQUEsV0FBVSxNQUFNLElBQUk7QUFDcEIsTUFBQUEsV0FBVSxTQUFTLElBQUk7QUFDdkIsTUFBQUEsV0FBVSxRQUFRLElBQUk7QUFDdEIsTUFBQUEsV0FBVSxLQUFLLElBQUk7QUFDbkIsTUFBQUEsV0FBVSxLQUFLLElBQUk7QUFDbkIsTUFBQUEsV0FBVSxJQUFJLElBQUk7QUFDbEIsTUFBQUEsV0FBVSxJQUFJLElBQUk7QUFDbEIsTUFBQUEsV0FBVSxJQUFJLElBQUk7QUFDbEIsTUFBQUEsV0FBVSxPQUFPLElBQUk7QUFDckIsTUFBQUEsV0FBVSxVQUFVLElBQUk7QUFDeEIsTUFBQUEsV0FBVSxZQUFZLElBQUk7QUFDMUIsTUFBQUEsV0FBVSxRQUFRLElBQUk7QUFDdEIsTUFBQUEsV0FBVSxNQUFNLElBQUk7QUFDcEIsTUFBQUEsV0FBVSxRQUFRLElBQUk7QUFDdEIsTUFBQUEsV0FBVSxnQkFBZ0IsSUFBSTtBQUM5QixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLFVBQVUsSUFBSTtBQUN4QixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLEdBQUcsSUFBSTtBQUNqQixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLFNBQVMsSUFBSTtBQUN2QixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLFlBQVksSUFBSTtBQUMxQixNQUFBQSxXQUFVLFNBQVMsSUFBSTtBQUN2QixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLFVBQVUsSUFBSTtBQUN4QixNQUFBQSxXQUFVLFNBQVMsSUFBSTtBQUN2QixNQUFBQSxXQUFVLFVBQVUsSUFBSTtBQUN4QixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLFVBQVUsSUFBSTtBQUN4QixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLEdBQUcsSUFBSTtBQUNqQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLFdBQVcsSUFBSTtBQUN6QixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLEdBQUcsSUFBSTtBQUNqQixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLFNBQVMsSUFBSTtBQUN2QixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLE1BQU0sSUFBSTtBQUNwQixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLFFBQVEsSUFBSTtBQUN0QixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLFNBQVMsSUFBSTtBQUN2QixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLFVBQVUsSUFBSTtBQUN4QixNQUFBQSxXQUFVLFVBQVUsSUFBSTtBQUN4QixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLE9BQU8sSUFBSTtBQUNyQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLEdBQUcsSUFBSTtBQUNqQixNQUFBQSxXQUFVLElBQUksSUFBSTtBQUNsQixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUNuQixNQUFBQSxXQUFVLEtBQUssSUFBSTtBQUFBLElBQ3ZCLEdBQUcsY0FBYyxZQUFZLENBQUMsRUFBRTtBQU9oQyxLQUFDLFNBQVVDLFNBQVE7QUFDZixNQUFBQSxRQUFPQSxRQUFPLFNBQVMsSUFBSSxDQUFDLElBQUk7QUFDaEMsTUFBQUEsUUFBT0EsUUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJO0FBQzFCLE1BQUFBLFFBQU9BLFFBQU8sU0FBUyxJQUFJLENBQUMsSUFBSTtBQUNoQyxNQUFBQSxRQUFPQSxRQUFPLGdCQUFnQixJQUFJLENBQUMsSUFBSTtBQUN2QyxNQUFBQSxRQUFPQSxRQUFPLFFBQVEsSUFBSSxDQUFDLElBQUk7QUFDL0IsTUFBQUEsUUFBT0EsUUFBTyxNQUFNLElBQUksQ0FBQyxJQUFJO0FBQzdCLE1BQUFBLFFBQU9BLFFBQU8sU0FBUyxJQUFJLENBQUMsSUFBSTtBQUNoQyxNQUFBQSxRQUFPQSxRQUFPLE9BQU8sSUFBSSxDQUFDLElBQUk7QUFDOUIsTUFBQUEsUUFBT0EsUUFBTyxHQUFHLElBQUksQ0FBQyxJQUFJO0FBQzFCLE1BQUFBLFFBQU9BLFFBQU8sTUFBTSxJQUFJLENBQUMsSUFBSTtBQUM3QixNQUFBQSxRQUFPQSxRQUFPLFVBQVUsSUFBSSxFQUFFLElBQUk7QUFDbEMsTUFBQUEsUUFBT0EsUUFBTyxTQUFTLElBQUksRUFBRSxJQUFJO0FBQ2pDLE1BQUFBLFFBQU9BLFFBQU8sS0FBSyxJQUFJLEVBQUUsSUFBSTtBQUM3QixNQUFBQSxRQUFPQSxRQUFPLFlBQVksSUFBSSxFQUFFLElBQUk7QUFDcEMsTUFBQUEsUUFBT0EsUUFBTyxNQUFNLElBQUksRUFBRSxJQUFJO0FBQzlCLE1BQUFBLFFBQU9BLFFBQU8sSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUM1QixNQUFBQSxRQUFPQSxRQUFPLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFDaEMsTUFBQUEsUUFBT0EsUUFBTyxTQUFTLElBQUksRUFBRSxJQUFJO0FBQ2pDLE1BQUFBLFFBQU9BLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNoQyxNQUFBQSxRQUFPQSxRQUFPLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDOUIsTUFBQUEsUUFBT0EsUUFBTyxLQUFLLElBQUksRUFBRSxJQUFJO0FBQzdCLE1BQUFBLFFBQU9BLFFBQU8sVUFBVSxJQUFJLEVBQUUsSUFBSTtBQUNsQyxNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxNQUFNLElBQUksRUFBRSxJQUFJO0FBQzlCLE1BQUFBLFFBQU9BLFFBQU8sU0FBUyxJQUFJLEVBQUUsSUFBSTtBQUNqQyxNQUFBQSxRQUFPQSxRQUFPLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFDaEMsTUFBQUEsUUFBT0EsUUFBTyxLQUFLLElBQUksRUFBRSxJQUFJO0FBQzdCLE1BQUFBLFFBQU9BLFFBQU8sS0FBSyxJQUFJLEVBQUUsSUFBSTtBQUM3QixNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxJQUFJLElBQUksRUFBRSxJQUFJO0FBQzVCLE1BQUFBLFFBQU9BLFFBQU8sSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUM1QixNQUFBQSxRQUFPQSxRQUFPLE9BQU8sSUFBSSxFQUFFLElBQUk7QUFDL0IsTUFBQUEsUUFBT0EsUUFBTyxVQUFVLElBQUksRUFBRSxJQUFJO0FBQ2xDLE1BQUFBLFFBQU9BLFFBQU8sWUFBWSxJQUFJLEVBQUUsSUFBSTtBQUNwQyxNQUFBQSxRQUFPQSxRQUFPLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFDaEMsTUFBQUEsUUFBT0EsUUFBTyxNQUFNLElBQUksRUFBRSxJQUFJO0FBQzlCLE1BQUFBLFFBQU9BLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNoQyxNQUFBQSxRQUFPQSxRQUFPLGdCQUFnQixJQUFJLEVBQUUsSUFBSTtBQUN4QyxNQUFBQSxRQUFPQSxRQUFPLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDOUIsTUFBQUEsUUFBT0EsUUFBTyxPQUFPLElBQUksRUFBRSxJQUFJO0FBQy9CLE1BQUFBLFFBQU9BLFFBQU8sVUFBVSxJQUFJLEVBQUUsSUFBSTtBQUNsQyxNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxJQUFJLElBQUksRUFBRSxJQUFJO0FBQzVCLE1BQUFBLFFBQU9BLFFBQU8sSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUM1QixNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxJQUFJLElBQUksRUFBRSxJQUFJO0FBQzVCLE1BQUFBLFFBQU9BLFFBQU8sSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUM1QixNQUFBQSxRQUFPQSxRQUFPLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDOUIsTUFBQUEsUUFBT0EsUUFBTyxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2hDLE1BQUFBLFFBQU9BLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNoQyxNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxNQUFNLElBQUksRUFBRSxJQUFJO0FBQzlCLE1BQUFBLFFBQU9BLFFBQU8sR0FBRyxJQUFJLEVBQUUsSUFBSTtBQUMzQixNQUFBQSxRQUFPQSxRQUFPLEtBQUssSUFBSSxFQUFFLElBQUk7QUFDN0IsTUFBQUEsUUFBT0EsUUFBTyxPQUFPLElBQUksRUFBRSxJQUFJO0FBQy9CLE1BQUFBLFFBQU9BLFFBQU8sT0FBTyxJQUFJLEVBQUUsSUFBSTtBQUMvQixNQUFBQSxRQUFPQSxRQUFPLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFDaEMsTUFBQUEsUUFBT0EsUUFBTyxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2hDLE1BQUFBLFFBQU9BLFFBQU8sT0FBTyxJQUFJLEVBQUUsSUFBSTtBQUMvQixNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxNQUFNLElBQUksRUFBRSxJQUFJO0FBQzlCLE1BQUFBLFFBQU9BLFFBQU8sU0FBUyxJQUFJLEVBQUUsSUFBSTtBQUNqQyxNQUFBQSxRQUFPQSxRQUFPLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDOUIsTUFBQUEsUUFBT0EsUUFBTyxZQUFZLElBQUksRUFBRSxJQUFJO0FBQ3BDLE1BQUFBLFFBQU9BLFFBQU8sU0FBUyxJQUFJLEVBQUUsSUFBSTtBQUNqQyxNQUFBQSxRQUFPQSxRQUFPLE1BQU0sSUFBSSxFQUFFLElBQUk7QUFDOUIsTUFBQUEsUUFBT0EsUUFBTyxNQUFNLElBQUksRUFBRSxJQUFJO0FBQzlCLE1BQUFBLFFBQU9BLFFBQU8sTUFBTSxJQUFJLEVBQUUsSUFBSTtBQUM5QixNQUFBQSxRQUFPQSxRQUFPLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFDaEMsTUFBQUEsUUFBT0EsUUFBTyxJQUFJLElBQUksRUFBRSxJQUFJO0FBQzVCLE1BQUFBLFFBQU9BLFFBQU8sSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUM1QixNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxJQUFJLElBQUksRUFBRSxJQUFJO0FBQzVCLE1BQUFBLFFBQU9BLFFBQU8sT0FBTyxJQUFJLEVBQUUsSUFBSTtBQUMvQixNQUFBQSxRQUFPQSxRQUFPLEtBQUssSUFBSSxFQUFFLElBQUk7QUFDN0IsTUFBQUEsUUFBT0EsUUFBTyxNQUFNLElBQUksRUFBRSxJQUFJO0FBQzlCLE1BQUFBLFFBQU9BLFFBQU8sVUFBVSxJQUFJLEVBQUUsSUFBSTtBQUNsQyxNQUFBQSxRQUFPQSxRQUFPLFNBQVMsSUFBSSxFQUFFLElBQUk7QUFDakMsTUFBQUEsUUFBT0EsUUFBTyxVQUFVLElBQUksRUFBRSxJQUFJO0FBQ2xDLE1BQUFBLFFBQU9BLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNoQyxNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxVQUFVLElBQUksRUFBRSxJQUFJO0FBQ2xDLE1BQUFBLFFBQU9BLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNoQyxNQUFBQSxRQUFPQSxRQUFPLEdBQUcsSUFBSSxFQUFFLElBQUk7QUFDM0IsTUFBQUEsUUFBT0EsUUFBTyxPQUFPLElBQUksRUFBRSxJQUFJO0FBQy9CLE1BQUFBLFFBQU9BLFFBQU8sV0FBVyxJQUFJLEVBQUUsSUFBSTtBQUNuQyxNQUFBQSxRQUFPQSxRQUFPLEtBQUssSUFBSSxFQUFFLElBQUk7QUFDN0IsTUFBQUEsUUFBT0EsUUFBTyxJQUFJLElBQUksRUFBRSxJQUFJO0FBQzVCLE1BQUFBLFFBQU9BLFFBQU8sSUFBSSxJQUFJLEVBQUUsSUFBSTtBQUM1QixNQUFBQSxRQUFPQSxRQUFPLElBQUksSUFBSSxFQUFFLElBQUk7QUFDNUIsTUFBQUEsUUFBT0EsUUFBTyxLQUFLLElBQUksRUFBRSxJQUFJO0FBQzdCLE1BQUFBLFFBQU9BLFFBQU8sTUFBTSxJQUFJLEVBQUUsSUFBSTtBQUM5QixNQUFBQSxRQUFPQSxRQUFPLEdBQUcsSUFBSSxFQUFFLElBQUk7QUFDM0IsTUFBQUEsUUFBT0EsUUFBTyxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2hDLE1BQUFBLFFBQU9BLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNoQyxNQUFBQSxRQUFPQSxRQUFPLFNBQVMsSUFBSSxFQUFFLElBQUk7QUFDakMsTUFBQUEsUUFBT0EsUUFBTyxRQUFRLElBQUksRUFBRSxJQUFJO0FBQ2hDLE1BQUFBLFFBQU9BLFFBQU8sUUFBUSxJQUFJLEVBQUUsSUFBSTtBQUNoQyxNQUFB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QUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxLQUFLLE9BQU8sR0FBRztBQUFBLE1BQzFCLENBQUMsVUFBVSxVQUFVLE9BQU8sUUFBUTtBQUFBLE1BQ3BDLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxTQUFTLE9BQU8sT0FBTztBQUFBLE1BQ2xDLENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxLQUFLLE9BQU8sR0FBRztBQUFBLE1BQzFCLENBQUMsVUFBVSxLQUFLLE9BQU8sR0FBRztBQUFBLE1BQzFCLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxJQUFJLE9BQU8sRUFBRTtBQUFBLE1BQ3hCLENBQUMsVUFBVSxPQUFPLE9BQU8sS0FBSztBQUFBLE1BQzlCLENBQUMsVUFBVSxVQUFVLE9BQU8sUUFBUTtBQUFBLE1BQ3BDLENBQUMsVUFBVSxZQUFZLE9BQU8sVUFBVTtBQUFBLE1BQ3hDLENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxNQUFNLE9BQU8sSUFBSTtBQUFBLE1BQzVCLENBQUMsVUFBVSxRQUFRLE9BQU8sTUFBTTtBQUFBLE1BQ2hDLENBQUMsVUFBVSxnQkFBZ0IsT0FBTyxjQUFjO0FBQUEsTUFDaEQsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsTUFDdEIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFlBQVksT0FBTyxVQUFVO0FBQUEsTUFDeEMsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsTUFDdEIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLFdBQVcsT0FBTyxTQUFTO0FBQUEsTUFDdEMsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsTUFDdEIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLE1BQU0sT0FBTyxJQUFJO0FBQUEsTUFDNUIsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLFFBQVEsT0FBTyxNQUFNO0FBQUEsTUFDaEMsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLFNBQVMsT0FBTyxPQUFPO0FBQUEsTUFDbEMsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLFVBQVUsT0FBTyxRQUFRO0FBQUEsTUFDcEMsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLE9BQU8sT0FBTyxLQUFLO0FBQUEsTUFDOUIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBQUEsTUFDdEIsQ0FBQyxVQUFVLElBQUksT0FBTyxFQUFFO0FBQUEsTUFDeEIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsTUFDMUIsQ0FBQyxVQUFVLEtBQUssT0FBTyxHQUFHO0FBQUEsSUFDOUIsQ0FBQztBQUtELElBQU0sSUFBSTtBQUNILElBQU0sbUJBQW1CO0FBQUEsTUFDNUIsQ0FBQyxHQUFHLElBQUksR0FBRyxvQkFBSSxJQUFJO0FBQUEsUUFDZixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsUUFDRixFQUFFO0FBQUEsTUFDTixDQUFDO0FBQUEsTUFDRCxDQUFDLEdBQUcsTUFBTSxHQUFHLG9CQUFJLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsY0FBYyxDQUFDO0FBQUEsTUFDeEUsQ0FBQyxHQUFHLEdBQUcsR0FBRyxvQkFBSSxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDO0FBQUEsTUFDckQsQ0FBQyxHQUFHLEtBQUssR0FBRyxvQkFBSSxJQUFJO0FBQUEsTUFDcEIsQ0FBQyxHQUFHLEdBQUcsR0FBRyxvQkFBSSxJ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QUM1QyxNQUFBQSxPQUFNQSxPQUFNLHNCQUFzQixJQUFJLEVBQUUsSUFBSTtBQUM1QyxNQUFBQSxPQUFNQSxPQUFNLDRCQUE0QixJQUFJLEVBQUUsSUFBSTtBQUNsRCxNQUFBQSxPQUFNQSxPQUFNLDBCQUEwQixJQUFJLEVBQUUsSUFBSTtBQUNoRCxNQUFBQSxPQUFNQSxPQUFNLDBCQUEwQixJQUFJLEVBQUUsSUFBSTtBQUNoRCxNQUFBQSxPQUFNQSxPQUFNLDBCQUEwQixJQUFJLEVBQUUsSUFBSTtBQUNoRCxNQUFBQSxPQUFNQSxPQUFNLCtCQUErQixJQUFJLEVBQUUsSUFBSTtBQUNyRCxNQUFBQSxPQUFNQSxPQUFNLHFCQUFxQixJQUFJLEVBQUUsSUFBSTtBQUMzQyxNQUFBQSxPQUFNQSxPQUFNLDBCQUEwQixJQUFJLEVBQUUsSUFBSTtBQUNoRCxNQUFBQSxPQUFNQSxPQUFNLCtCQUErQixJQUFJLEVBQUUsSUFBSTtBQUNyRCxNQUFBQSxPQUFNQSxPQUFNLG9DQUFvQyxJQUFJLEVBQUUsSUFBSTtBQUMxRCxNQUFBQSxPQUFNQSxPQUFNLGtDQUFrQyxJQUFJLEVBQUUsSUFBSTtBQUN4RCxNQUFBQSxPQUFNQSxPQUFNLGtDQUFrQyxJQUFJLEVBQUUsSUFBSTtBQUN4RCxNQUFBQSxPQUFNQSxPQUFNLGlDQUFpQyxJQUFJLEVBQUUsSUFBSTtBQUN2RCxNQUFBQSxPQUFNQSxPQUFNLDRCQUE0QixJQUFJLEVBQUUsSUFBSTtBQUNsRCxNQUFBQSxPQUFNQSxPQUFNLGlDQUFpQyxJQUFJLEVBQUUsSUFBSTtBQUN2RCxNQUFBQSxPQUFNQSxPQUFNLHNDQUFzQyxJQUFJLEVBQUUsSUFBSTtBQUM1RCxNQUFBQSxPQUFNQSxPQUFNLDJDQUEyQyxJQUFJLEVBQUUsSUFBSTtBQUNqRSxNQUFBQSxPQUFNQSxPQUFNLCtCQUErQixJQUFJLEVBQUUsSUFBSTtBQUNyRCxNQUFBQSxPQUFNQSxPQUFNLHVCQUF1QixJQUFJLEVBQUUsSUFBSTtBQUM3QyxNQUFBQSxPQUFNQSxPQUFNLGdCQUFnQixJQUFJLEVBQUUsSUFBSTtB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QUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBO0FBQUEsSUFDSixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxZQUFZLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFFckMsSUFBTSx3QkFBd0Isb0JBQUksSUFBSTtBQUFBLE1BQ2xDLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxNQUNGLE9BQUU7QUFBQSxN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V0FBQUEsV0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxLQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxhQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxhQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxPQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxNQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxJQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxJQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxJQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxjQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxRQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxRQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxRQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxRQUFBLElBQUEsR0FBQSxJQUFBO0FBQ0EsTUFBQUEsV0FBQUEsV0FBQSxzQkFBQSxJQUFBLEVBQUEsSUFBQTtJQUNKLEdBNUJXQSxlQUFBQSxhQUFTLENBQUEsRUFBQTtBQStCcEIsS0FBQSxTQUFXQyxRQUFLO0FBQ1osTUFBQUEsT0FBQUEsT0FBQSxNQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsT0FBQUEsT0FBQSxlQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsT0FBQUEsT0FBQSxXQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsT0FBQUEsT0FBQSxrQkFBQSxJQUFBLENBQUEsSUFBQTtBQUNBLE1BQUFBLE9BQUFBLE9BQUEsc0JBQUEsSUFBQSxDQUFBLElBQUE7QUFDQSxNQUFBQSxPQUFBQSxPQUFBLGtCQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsT0FBQUEsT0FBQSxxQkFBQSxJQUFBLENBQUEsSUFBQTtBQUdBLE1BQUFBLE9BQUFBLE9BQUEscUJBQUEsSUFBQSxDQUFBLElBQUE7QUFDQSxNQUFBQSxPQUFBQSxPQUFBLGlCQUFBLElBQUEsQ0FBQSxJQUFBO0FBQ0EsTUFBQUEsT0FBQUEsT0FBQSxvQkFBQSxJQUFBLEVBQUEsSUFBQTtBQUNBLE1BQUFBLE9BQUFBLE9BQUEsc0JBQUEsSUFBQSxFQUFBLElBQUE7QUFDQSxNQUFBQSxPQUFBQSxPQUFBLG9CQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsT0FBQUEsT0FBQSxvQkFBQSxJQUFBLEVBQUEsSUFBQTtBQUNBLE1BQUFBLE9BQUFBLE9BQUEsb0JBQUEsSUFBQSxFQUFBLElBQUE7QUFHQSxNQUFBQSxPQUFBQSxPQUFBLG1CQUFBLElBQUEsRUFBQSxJQUFBO0FBQ0EsTUFBQUEsT0FBQUEsT0FBQSxlQUFBLElBQUEsRUFBQSxJQUFBO0FBR0EsTUFBQUEsT0FBQUEsT0FBQSx5QkFBQSxJQUFBLEVBQUEsSUFBQTtBQUdBLE1BQUFBLE9BQUFBLE9BQUEsZUFBQSxJQUFBLEVBQUEsSUFBQTtBQUNBLE1BQUFBLE9BQUFBLE9BQUEsZUFBQSxJQUFBLEVBQUEsSUFBQTtBQUNBLE1BQUFBLE9BQUFBLE9BQUEsa0JBQUEsSUFBQSxFQUFBLElBQUE7QUFDQSxNQUFBQSxPQUFBQSxP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UyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsWUFBVyxHQUFFLE1BQUssR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLFFBQVEsR0FBRSxDQUFDLElBQUcsU0FBUyxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEtBQUksUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxhQUFhLEdBQUUsQ0FBQyxLQUFJLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLE1BQUssUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsaUJBQWdCLEdBQUUsTUFBSyxHQUFFLGVBQWMsQ0FBQyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxJQUFHLHdCQUF3QixHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsSUFBRyxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsdUJBQXVCLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsdUJBQXVCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxjQUFjLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsb0JBQW9CLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsSUFBRyxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsd0JBQXdCLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsNEJBQTRCLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE1BQUssR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGFBQVksR0FBRSxLQUFJLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsVUFBUyxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsYUFBWSxHQUFFLE1BQUssR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLEtBQUksR0FBRSxVQUFTLENBQUMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGVBQWMsR0FBRSxNQUFLLEdBQUUsWUFBVyxDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxNQUFLLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsTUFBSyxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsUUFBTyxHQUFFLEtBQUksR0FBRSxRQUFPLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsT0FBTSxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxJQUFJLElBQWtDLGdCQUFBQSxhQUFZLENBQUMsQ0FBQyxLQUFJLFFBQVEsR0FBRSxDQUFDLE1BQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxJQUFJLElBQWtDLGdCQUFBQSxhQUFZLENBQUMsQ0FBQyxLQUFJLFFBQVEsR0FBRSxDQUFDLE1BQUssT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFDLENBQUMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLHFCQUFvQixDQUFDLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE1BQUssR0FBRSxjQUFhLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxNQUFLLEdBQUUsZ0JBQWUsQ0FBQyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsaUJBQWdCLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsaUJBQWdCLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLG9CQUFtQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLHNCQUFxQixDQUFDLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsV0FBVSxHQUFFLE9BQU0sR0FBRSxXQUFVLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxlQUFlLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxrQkFBa0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGdCQUFnQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLHVCQUFzQixHQUFFLE1BQUssR0FBRSxZQUFXLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLHdCQUF1QixHQUFFLE1BQUssR0FBRSxZQUFXLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFFBQU8sR0FBRSxLQUFJLEdBQUUsUUFBTyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxRQUFPLEdBQUUsS0FBSSxHQUFFLFFBQU8sQ0FBQyxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsU0FBUSxHQUFFLE9BQU0sR0FBRSxTQUFRLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxPQUFNLEdBQUUsU0FBUSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSx5QkFBeUIsR0FBRSxDQUFDLEdBQUUseUJBQXlCLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSwwQkFBMEIsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLHlCQUF5QixHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxhQUFZLEdBQUUsS0FBSSxHQUFFLGFBQVksQ0FBQyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxLQUFJLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLGFBQWEsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLElBQUcsV0FBVyxHQUFFLENBQUMsSUFBRyxjQUFjLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLElBQUcsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxhQUFhLEdBQUUsQ0FBQyxHQUFFLGNBQWMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEtBQUksWUFBWSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSx3QkFBd0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGlCQUFpQixHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLG1CQUFtQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxxQkFBcUIsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxJQUFHLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsS0FBSSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsSUFBRyxRQUFRLEdBQUUsQ0FBQyxJQUFHLHFCQUFxQixHQUFFLENBQUMsSUFBRyxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLElBQUcsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxJQUFHLHFCQUFxQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsdUJBQXVCLEdBQUUsQ0FBQyxHQUFFLHdCQUF3QixHQUFFLENBQUMsR0FBRSw0QkFBNEIsR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxLQUFJLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsY0FBYyxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxXQUFVLEdBQUUsS0FBSSxHQUFFLFdBQVUsQ0FBQyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHVCQUF1QixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsaUJBQWlCLEdBQUUsQ0FBQyxHQUFFLGtCQUFrQixHQUFFLENBQUMsR0FBRSxvQkFBb0IsR0FBRSxDQUFDLEdBQUUsc0JBQXNCLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUsbUJBQW1CLEdBQUUsQ0FBQyxHQUFFLHFCQUFxQixHQUFFLENBQUMsR0FBRSxpQkFBaUIsR0FBRSxDQUFDLEdBQUUsa0JBQWtCLEdBQUUsQ0FBQyxHQUFFLG9CQUFvQixHQUFFLENBQUMsR0FBRSxzQkFBc0IsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLHNCQUFzQixHQUFFLENBQUMsR0FBRSxtQkFBbUIsR0FBRSxDQUFDLEdBQUUscUJBQXFCLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxnQkFBZ0IsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUscUJBQW9CLEdBQUUsS0FBSSxHQUFFLHVCQUFzQixDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxzQkFBcUIsR0FBRSxLQUFJLEdBQUUsd0JBQXVCLENBQUMsR0FBRSxDQUFDLElBQUcsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsZ0JBQWdCLEdBQUUsQ0FBQyxHQUFFLGVBQWUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsYUFBYSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsSUFBRyxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxZQUFZLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxFQUFDLEdBQUUsYUFBWSxHQUFFLEtBQUksR0FBRSxhQUFZLENBQUMsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxTQUFRLEdBQUUsS0FBSSxHQUFFLFNBQVEsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGNBQWEsR0FBRSxLQUFJLEdBQUUsY0FBYSxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxjQUFhLEdBQUUsS0FBSSxHQUFFLGNBQWEsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsWUFBWSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxNQUFNLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLGNBQWEsR0FBRSxLQUFJLEdBQUUsc0JBQXFCLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLG9CQUFtQixHQUFFLEtBQUksR0FBRSw0QkFBMkIsQ0FBQyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxPQUFNLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsT0FBTSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxtQkFBa0IsR0FBRSxLQUFJLEdBQUUscUJBQW9CLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFNBQVEsR0FBRSxLQUFJLEdBQUUscUJBQW9CLENBQUMsR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFlBQVksR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsZUFBZSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLE1BQU0sR0FBRSxDQUFDLEdBQUUsTUFBTSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxXQUFXLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFVBQVMsR0FBRSxLQUFJLEdBQUUsVUFBUyxDQUFDLEdBQUUsQ0FBQyxHQUFFLEVBQUMsR0FBRSxVQUFTLEdBQUUsS0FBSSxHQUFFLFVBQVMsQ0FBQyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsa0JBQWlCLENBQUMsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxPQUFNLEdBQUUsa0JBQWlCLENBQUMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsV0FBVyxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFdBQVcsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFNBQVMsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsU0FBUyxHQUFFLENBQUMsR0FBRSxVQUFVLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsVUFBVSxHQUFFLENBQUMsR0FBRSxTQUFTLEdBQUUsQ0FBQyxHQUFFLFVBQVUsR0FBRSxDQUFDLEdBQUUsRUFBQyxHQUFFLFdBQVUsR0FBRSxNQUFLLEdBQUUsV0FBVSxDQUFDLEdBQUUsQ0FBQyxPQUFNLEVBQUMsR0FBRSxJQUFJLElBQWtDLGdCQUFBQSxhQUFZLENBQUMsQ0FBQyxPQUFNLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsSUFBRyxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsT0FBTyxHQUFFLENBQUMsR0FBRSxPQUFPLEdBQUUsQ0FBQyxHQUFFLE9BQU8sR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFBUSxHQUFFLENBQUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLFFBQVEsR0FBRSxDQUFDLEdBQUUsUUFB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QUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFBQSxFQUNBO0FBQUEsRUFDQTtBQUFBLEVBQ0E7QUFDRjs7O0FDbElBO0FBQUE7QUFBQSx5QkFBQUM7QUFBQSxFQUFBLGtDQUFBQztBQUFBLEVBQUEsbUJBQUFDO0FBQUEsRUFBQSwyQkFBQUM7QUFBQSxFQUFBLDRCQUFBQztBQUFBLEVBQUEsMEJBQUFDO0FBQUEsRUFBQTtBQUFBLG1DQUFBQztBQUFBLEVBQUEsd0JBQUFDO0FBQUEsRUFBQSx5QkFBQUM7QUFBQSxFQUFBLCtCQUFBQztBQUFBLEVBQUEsK0JBQUFDO0FBQUEsRUFBQSwwQkFBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUEsNEJBQUFDO0FBQUEsRUFBQSx3QkFBQUM7QUFBQSxFQUFBLHdCQUFBQztBQUFBLEVBQUEsdUJBQUFDO0FBQUEsRUFBQSwyQkFBQUM7QUFBQSxFQUFBLDJCQUFBQztBQUFBLEVBQUEsd0JBQUFDO0FBQUEsRUFBQSxzQkFBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSw2QkFBQUM7QUFBQSxFQUFBLGtDQUFBQztBQUFBLEVBQUEsMkJBQUFDO0FBQUEsRUFBQSwrQkFBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUEsRUFBQSxtQ0FBQUM7QUFBQSxFQUFBLHVDQUFBQztBQUFBLEVBQUEsd0JBQUFDO0FBQUEsRUFBQSwyQkFBQUM7QUFBQSxFQUFBLCtCQUFBQztBQUFBLEVBQUEsNkJBQUFDO0FBQUEsRUFBQSxtQ0FBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEseUJBQUFDO0FBQUEsRUFBQSx5QkFBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEscUNBQUFDO0FBQUEsRUFBQSxxQ0FBQUM7QUFBQSxFQUFBLCtCQUFBQztBQUFBLEVBQUEsMEJBQUFDO0FBQUEsRUFBQSw4QkFBQUM7QUFBQSxFQUFBLDhCQUFBQztBQUFBLEVBQUEsb0NBQUFDO0FBQUEsRUFBQSxrQ0FBQUM7QUFBQSxFQUFBLGtDQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUEsRUFBQSx5Q0FBQUM7QUFBQSxFQUFBLHNDQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLHdCQUFBQztBQUFBLEVBQUEsNkJBQUFDO0FBQUEsRUFBQSxrQ0FBQUM7QUFBQSxFQUFBLHdDQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUEsRUFBQSxpQ0FBQUM7QUFBQSxFQUFBLHFDQUFBQztBQUFBLEVBQUEsK0JBQUFDO0FBQUEsRUFBQSxvQ0FBQUM7QUFBQSxFQUFBLHFDQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUEsRUFBQSxzQ0FBQUM7QUFBQSxFQUFBLDZCQUFBQztBQUFBLEVBQUEsc0NBQUFDO0FBQUEsRUFBQSwwQkFBQUM7QUFBQSxFQUFBLDJDQUFBQztBQUFBLEVBQUEsNkJBQUFDO0FBQUEsRUFBQSxzQ0FBQUM7QUFBQSxFQUFBLDJCQUFBQztBQUFBLEVBQUEsNEJBQUFDO0FBQUEsRUFBQSx3QkFBQUM7QUFBQSxFQUFBLHlDQUFBQztBQUFBLEVBQUEseUNBQUFDO0FBQUEsRUFBQSx3QkFBQUM7QUFBQSxFQUFBLDRCQUFBQztBQUFBLEVBQUEsZ0RBQUFDO0FBQUEsRUFBQSxvREFBQUM7QUFBQSxFQUFBLHNDQUFBQztBQUFBLEVBQUEsMENBQUFDO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLDJDQUFBQztBQUFBLEVBQUEsOEJBQUFDO0FBQUEsRUFBQSxrQ0FBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEsdUNBQUFDO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLDJDQUFBQztBQUFBLEVBQUEseUNBQUFDO0FBQUEsRUFBQSw2Q0FBQUM7QUFBQSxFQUFBLG1DQUFBQztBQUFBLEVBQUEseUNBQUFDO0FBQUEsRUFBQSx1Q0FBQUM7QUFBQSxFQUFBLHVDQUFBQztBQUFBLEVBQUEsa0NBQUFDO0FBQUEsRUFBQSxzQ0FBQUM7QUFBQSxFQUFBLHVDQUFBQztBQUFBLEVBQUEseUNB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QUFTLFNBQVMsQ0FBQyxDQUFDO0FBQUEsSUFDakQsV0FBVyxLQUFLLFNBQVMsU0FBUyxTQUFTLEdBQUc7QUFDNUMsWUFBTSxVQUFVLE1BQU0sd0JBQXdCLElBQUk7QUFDbEQsc0JBQWdCLE1BQU0sT0FBTztBQUFBLElBQy9CLE9BQU87QUFDTCxnQkFBVSxLQUFLLEtBQUssRUFBRSxpQkFBaUIsQ0FBQztBQUFBLElBQzFDO0FBQUEsRUFDRjtBQUFBLEVBRVEsMEJBQWdDO0FBQ3RDLFNBQUssZ0NBQWdDLHNCQUFzQixPQUFPLE1BQU07QUFDdEUsVUFBSSxFQUFFLFdBQVcsc0JBQXNCO0FBQ3JDLFlBQUksRUFBRSxPQUFPO0FBQ1gsY0FBSSxFQUFFLE9BQU87QUFDWCxzQkFBVSxLQUFLLEtBQUssRUFBRSx5QkFBeUI7QUFBQSxjQUM3QyxPQUFPLEVBQUU7QUFBQSxjQUNULE1BQU0sRUFBRSxrQkFBa0IsUUFBUSxPQUFNLEdBQUc7QUFBQSxZQUM3QyxDQUFDLENBQUM7QUFDRixxQkFBUyxPQUFPLG1EQUFvQyxNQUFTO0FBQUEsVUFDL0QsV0FBVyxFQUFFLE1BQU07QUFDakIsa0JBQU0sUUFBUSxNQUFNLGFBQWEsa0JBQWtCLElBQUksRUFBRSxTQUFTO0FBQUEsY0FDaEUsTUFBTSxFQUFFO0FBQUEsY0FDUixhQUFhO0FBQUEsY0FDYixjQUFjLFNBQVM7QUFBQSxZQUN6QixDQUFDO0FBQ0Qsb0JBQVEsSUFBSSxLQUFLO0FBQ2pCLHFCQUFTLE9BQU8sbURBQW9DLEtBQUs7QUFBQSxVQUMzRDtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsSUFDRixDQUFDO0FBQUEsRUFDSDtBQUVGO0FBeEpFO0FBTUE7IiwKICAibmFtZXMiOiBbImlzT2JqZWN0IiwgImV4cG9ydHMiLCAibWVzc2FnZSIsICJFeHBhbmRhYmxlIiwgImtleXMiLCAicHJvcCIsICJrZXkiLCAiZGVmYXVsdE9wdGlvbnMiLCAibG9va3VwIiwgIlByaW9yaXRpemVkTGlzdCIsICJleHBvcnRzIiwgIkZ1bmN0aW9uTGlzdCIsICJkYXRhIiwgIl9hIiwgImV4cG9ydHMiLCAiQWJzdHJhY3RJbnB1dEpheCIsICJmaWx0ZXJzIiwgImRvY3VtZW50IiwgImRhdGEiLCAiZXhwb3J0cyIsICJBYnN0cmFjdEZpbmRNYXRoIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJ0ZXh0IiwgImRhdGEiLCAiZW5kIiwgImV4cG9ydHMiLCAiQWJzdHJhY3RNYXRoSXRlbSIsICJkb2N1bWVudCIsICJGaW5kVGVYIiwgImRlbGltcyIsICJfYSIsICJlbmQiLCAidGV4dCIsICJtYXRjaCIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiQXR0cmlidXRlcyIsICJnbG9iYWwiLCAibGlzdCIsICJBYnN0cmFjdE5vZGUiLCAiY2hpbGRyZW4iLCAiZGF0YSIsICJleHBvcnRzIiwgIkFic3RyYWN0RW1wdHlOb2RlIiwgImV4cG9ydHMiLCAiQWJzdHJhY3RNbWxOb2RlIiwgImF0dHJpYnV0ZXMiLCAiY2hpbGRyZW4iLCAicGFyZW50IiwgInByZXYiLCAibWVzc2FnZSIsICJ0ZXh0IiwgIkFic3RyYWN0TW1sVG9rZW5Ob2RlIiwgImRhdGEiLCAiQWJzdHJhY3RNbWxMYXlvdXROb2RlIiwgIkFic3RyYWN0TW1sQmFzZU5vZGUiLCAiYmFzZSIsICJBYnN0cmFjdE1tbEVtcHR5Tm9kZSIsICJUZXh0Tm9kZSIsICJYTUxOb2RlIiwgInhtbCIsICJyc3BhY2UiLCAiZXhwb3J0cyIsICJ0ZXh0IiwgIk1tbE1vIiwgIl9hIiwgInBhcmVudCIsICJwcmV2IiwgImZlbmNlIiwgImF0dHJpYnV0ZXMiLCAiYmFzZSIsICJleHBvcnRzIiwgIk5vZGVVdGlsIiwgImNvZGUiLCAiZ2V0Q2hpbGRyZW4iLCAiZ2V0VGV4dCIsICJjaGlsZHJlbiIsICJhdHRyaWJ1dGUiLCAiYXR0ciIsICJpc05vZGUiLCAiZXhwb3J0cyIsICJGaWx0ZXJVdGlsIiwgInJlbW92ZSIsICJjaGlsZHJlbiIsICJuZXh0IiwgImF0dHIiLCAiZmlsdGVyIiwgImJhc2UiLCAiZXhwb3J0cyIsICJUZXhFcnJvciIsICJtZXNzYWdlIiwgIm1hdGNoIiwgImNvZGUiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIkhhbmRsZXJMaXN0IiwgImRvY3VtZW50IiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJkb2N1bWVudCIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiYWRkIiwgInJlbW92ZSIsICJlbnRpdHkiLCAidGV4dCIsICJyZXBsYWNlIiwgIm1hdGNoIiwgIlBhcnNlVXRpbCIsICJtYXRjaCIsICJfYSIsICJ1bml0IiwgImZlbmNlIiwgInRleHQiLCAiYmFzZSIsICJsaXN0IiwgImVycm9yIiwgImVuZCIsICJ2YWwiLCAiaW5kZXgiLCAiZXhwb3J0cyIsICJTdGFjayIsICJUZXhQYXJzZXIiLCAiY29uZmlnIiwgImNvZGUiLCAiX2EiLCAiTW1sU3RhY2siLCAiX2EiLCAiZXhwb3J0cyIsICJCYXNlSXRlbSIsICJtZXNzYWdlIiwgIkFic3RyYWN0RmFjdG9yeSIsICJleHBvcnRzIiwgIkR1bW15SXRlbSIsICJTdGFja0l0ZW1GYWN0b3J5IiwgIl9hIiwgIk5vZGVGYWN0b3J5IiwgImNoaWxkcmVuIiwgInRleHQiLCAibWVzc2FnZSIsICJlcnJvciIsICJleHBvcnRzIiwgIlBhcnNlT3B0aW9ucyIsICJsaXN0IiwgIkxhYmVsIiwgImV4cG9ydHMiLCAiVGFnSW5mbyIsICJBYnN0cmFjdFRhZ3MiLCAidGFibGUiLCAiYmFzZSIsICJOb1RhZ3MiLCAiQWxsVGFncyIsICJUYWdzRmFjdG9yeSIsICJNYXBIYW5kbGVyIiwgIm1hcCIsICJleHBvcnRzIiwgIlN1YkhhbmRsZXIiLCAibWVzc2FnZSIsICJTdWJIYW5kbGVycyIsICJDb25maWd1cmF0aW9uIiwgImNvbmZpZyIsICJleHBvcnRzIiwgIkNvbmZpZ3VyYXRpb25IYW5kbGVyIiwgIm1hcCIsICJQYXJzZXJDb25maWd1cmF0aW9uIiwgInBhcnNlcnMiLCAiU3ltYm9sIiwgImV4cG9ydHMiLCAiTWFjcm8iLCAiZXhwb3J0cyIsICJBYnN0cmFjdFN5bWJvbE1hcCIsICJfYSIsICJSZWdFeHBNYXAiLCAiQWJzdHJhY3RQYXJzZU1hcCIsICJDaGFyYWN0ZXJNYXAiLCAiRGVsaW1pdGVyTWFwIiwgIk1hY3JvTWFwIiwgIkNvbW1hbmRNYXAiLCAiRW52aXJvbm1lbnRNYXAiLCAiU3RhcnRJdGVtIiwgImdsb2JhbCIsICJleHBvcnRzIiwgIlN0b3BJdGVtIiwgIk9wZW5JdGVtIiwgIkNsb3NlSXRlbSIsICJQcmltZUl0ZW0iLCAiX2EiLCAiU3Vic3VwSXRlbSIsICJlcnJvciIsICJPdmVySXRlbSIsICJMZWZ0SXRlbSIsICJNaWRkbGUiLCAiUmlnaHRJdGVtIiwgIkJlZ2luSXRlbSIsICJFbmRJdGVtIiwgIlN0eWxlSXRlbSIsICJQb3NpdGlvbkl0ZW0iLCAiQ2VsbEl0ZW0iLCAiTW1sSXRlbSIsICJGbkl0ZW0iLCAiTm90SXRlbSIsICJOb25zY3JpcHRJdGVtIiwgIkRvdHNJdGVtIiwgIkFycmF5SXRlbSIsICJFcW5BcnJheUl0ZW0iLCAiRXF1YXRpb25JdGVtIiwgIlRleENvbnN0YW50IiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJlbSIsICJtYXRjaCIsICJiYXNlIiwgIl9hIiwgInRleHQiLCAiZmlyc3QiLCAiZ2xvYmFsIiwgImVudGl0eSIsICJtYXRjaCIsICJhdHRyIiwgImVuZCIsICJleHBvcnRzIiwgIlBhcnNlTWV0aG9kcyIsICJkZWxpbWl0ZXIiLCAiZW5kIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJfYSIsICJkYXRhIiwgIkJhc2VUYWdzIiwgIlRlWCIsICJfYSIsICJmaW5kIiwgImRvY3VtZW50IiwgIm1lc3NhZ2UiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImNoaWxkcmVuIiwgIk11bHRsaW5lSXRlbSIsICJleHBvcnRzIiwgIkZsYWxpZ25JdGVtIiwgImV4cG9ydHMiLCAiX2EiLCAiYmFzZSIsICJuZXh0IiwgImZpcnN0IiwgIkFtc1RhZ3MiLCAiZXhwb3J0cyIsICJjb25maWciLCAiX2EiLCAiZmlyc3QiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAibWF0Y2giLCAiZXhwb3J0cyIsICJ0ZXh0IiwgIkJyYWtldEl0ZW0iLCAiZXhwb3J0cyIsICJuZXh0IiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJfYSIsICJleHBvcnRzIiwgImNoaWxkcmVuIiwgImluZGV4IiwgImNvbmZpZyIsICJfYSIsICJhdHRyIiwgIlByb29mVHJlZUl0ZW0iLCAiZXhwb3J0cyIsICJjaGlsZHJlbiIsICJ0YWJsZSIsICJfYSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiX2EiLCAiZXhwb3J0cyIsICJhdHRyIiwgImV4cG9ydHMiLCAiYXR0ciIsICJleHBvcnRzIiwgInRleHQiLCAidGFibGUiLCAiQ2FzZXNCZWdpbkl0ZW0iLCAiZXhwb3J0cyIsICJDYXNlc1RhZ3MiLCAidGFibGUiLCAidGV4dCIsICJfYSIsICJiYXNlIiwgIl9hIiwgImRhdGEiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiQ29sb3JNb2RlbCIsICJleHBvcnRzIiwgImNvbmZpZyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiQ29sb3JBcnJheUl0ZW0iLCAidGFibGUiLCAiZXhwb3J0cyIsICJjb25maWciLCAiTmV3Y29tbWFuZFV0aWwiLCAibWF0Y2giLCAiYXR0ciIsICJleHBvcnRzIiwgInRleHQiLCAiZXhwb3J0cyIsICJCZWdpbkVudkl0ZW0iLCAiZXhwb3J0cyIsICJjb25maWciLCAiZXhwb3J0cyIsICJfYSIsICJFbXBoZXFCZWdpbkl0ZW0iLCAiZXhwb3J0cyIsICJfYSIsICJjb25maWciLCAiZXhwb3J0cyIsICJfYSIsICJleHBvcnRzIiwgImNvbmZpZyIsICJleHBvcnRzIiwgImNoaWxkcmVuIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIl9hIiwgImNvbmZpZyIsICJkZWxpbXMiLCAiZm9ybWF0IiwgImV4cG9ydHMiLCAiX2EiLCAiYmFzZSIsICJmb3JtYXQiLCAiaWQiLCAia2V5cyIsICJjb25maWciLCAiVGFnRm9ybWF0IiwgIl9hIiwgImZvcm1hdCIsICJleHBvcnRzIiwgIk11bHRsaW5lZEl0ZW0iLCAiZmlyc3QiLCAibGFzdCIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiY29uZmlnIiwgIl9hIiwgImRhdGEiLCAiZXhwb3J0cyIsICJtaGNoZW1QYXJzZXIiLCAibWF0Y2giLCAiaW5wdXQiLCAiZXhwb3J0cyIsICJtZXNzYWdlIiwgImVycm9yIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJBdXRvT3BlbiIsICJleHBvcnRzIiwgIm5leHQiLCAiZW1wdHkiLCAicmVwbGFjZSIsICJ0ZXh0IiwgImNvZGUiLCAiZmlyc3QiLCAiX2EiLCAiZmVuY2UiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIl9hIiwgImV4cG9ydHMiLCAiY29uZmlnIiwgIl9hIiwgInJlcXVpcmUiLCAiY29uZmlnIiwgIlRhZ0Zvcm1hdCIsICJiYXNlIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJjb25maWciLCAiYmFzZSIsICJUZXh0UGFyc2VyIiwgInRleHQiLCAibWVzc2FnZSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJfYSIsICJ0ZXh0IiwgImNvbmZpZyIsICJkYXRhIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgInRleHQiLCAiZXhwb3J0cyIsICJBYnN0cmFjdE91dHB1dEpheCIsICJmaWx0ZXJzIiwgImRvY3VtZW50IiwgImRhdGEiLCAiZXhwb3J0cyIsICJ0ZXh0IiwgImNoaWxkcmVuIiwgIlN0eWxlcyIsICJwYXJlbnQiLCAiX2EiLCAiZXhwb3J0cyIsICJDc3NTdHlsZXMiLCAiZXhwb3J0cyIsICJDb21tb25PdXRwdXRKYXgiLCAiX2EiLCAiaHRtbCIsICJtYXAiLCAidGVzdCIsICJ0ZXh0IiwgInhtbCIsICJiYXNlIiwgImV4cG9ydHMiLCAiQWJzdHJhY3RXcmFwcGVyRmFjdG9yeSIsICJleHBvcnRzIiwgIkNvbW1vbldyYXBwZXJGYWN0b3J5IiwgImV4cG9ydHMiLCAiQkJveCIsICJleHBvcnRzIiwgIkFic3RyYWN0V3JhcHBlciIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiRm9udERhdGEiLCAibGluayIsICJiYXNlIiwgImRlbGltcyIsICJtYXAiLCAiQ29tbW9uV3JhcHBlciIsICJwYXJlbnQiLCAiZmlyc3QiLCAibGFzdCIsICJhdHRyaWJ1dGVzIiwgInByZXYiLCAidGV4dCIsICJfYSIsICJjaGlsZHJlbiIsICJleHBvcnRzIiwgIlNWR1dyYXBwZXIiLCAicGFyZW50IiwgIl9hIiwgImF0dHJpYnV0ZXMiLCAiY2hpbGRyZW4iLCAiZGF0YSIsICJ0ZXh0IiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJNbWxNYXRoIiwgImF0dHJpYnV0ZXMiLCAiZXhwb3J0cyIsICJTVkdtYXRoIiwgInBhcmVudCIsICJfYSIsICJhdHRyaWJ1dGVzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJNbWxNcm93IiwgInByZXYiLCAiZXhwb3J0cyIsICJNbWxJbmZlcnJlZE1yb3ciLCAiU1ZHbXJvdyIsICJwYXJlbnQiLCAiZXhwb3J0cyIsICJTVkdpbmZlcnJlZE1yb3ciLCAiZXhwb3J0cyIsICJNbWxNaSIsICJhdHRyaWJ1dGVzIiwgInRleHQiLCAicHJldiIsICJleHBvcnRzIiwgIlNWR21pIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJfYSIsICJhdHRyaWJ1dGVzIiwgIm1hcCIsICJ0ZXh0IiwgIlNWR21vIiwgInBhcmVudCIsICJhdHRyaWJ1dGVzIiwgIl9hIiwgIngiLCAiZXhwb3J0cyIsICJ0ZXh0IiwgImV4cG9ydHMiLCAiTW1sTW4iLCAiZXhwb3J0cyIsICJTVkdtbiIsICJleHBvcnRzIiwgImF0dHJpYnV0ZXMiLCAidGV4dCIsICJleHBvcnRzIiwgIk1tbE1zIiwgImV4cG9ydHMiLCAiU1ZHbXMiLCAiZXhwb3J0cyIsICJfYSIsICJkYXRhIiwgImV4cG9ydHMiLCAiTW1sTXRleHQiLCAiZXhwb3J0cyIsICJTVkdtdGV4dCIsICJleHBvcnRzIiwgIk1tbE1lcnJvciIsICJleHBvcnRzIiwgIlNWR21lcnJvciIsICJwYXJlbnQiLCAiX2EiLCAiZXhwb3J0cyIsICJhdHRyaWJ1dGVzIiwgImV4cG9ydHMiLCAiTW1sTXNwYWNlIiwgInByZXYiLCAiYXR0cmlidXRlcyIsICJleHBvcnRzIiwgIlNWR21zcGFjZSIsICJleHBvcnRzIiwgIm1hdGNoIiwgIl9hIiwgImV4cG9ydHMiLCAiTW1sTXBhZGRlZCIsICJleHBvcnRzIiwgIlNWR21wYWRkZWQiLCAicGFyZW50IiwgIl9hIiwgImV4cG9ydHMiLCAiTW1sTXBoYW50b20iLCAiZXhwb3J0cyIsICJTVkdtcGhhbnRvbSIsICJwYXJlbnQiLCAiZXhwb3J0cyIsICJfYSIsICJhdHRyaWJ1dGVzIiwgImV4cG9ydHMiLCAiTW1sTWZyYWMiLCAicHJldiIsICJhdHRyaWJ1dGVzIiwgImV4cG9ydHMiLCAiU1ZHbWZyYWMiLCAicGFyZW50IiwgIl9hIiwgImV4cG9ydHMiLCAiX2EiLCAidGV4dCIsICJleHBvcnRzIiwgIk1tbE1zcXJ0IiwgInByZXYiLCAiYXR0cmlidXRlcyIsICJleHBvcnRzIiwgIlNWR21zcXJ0IiwgInBhcmVudCIsICJiYXNlIiwgInJvb3QiLCAiU1ZHIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJNbWxNcm9vdCIsICJwcmV2IiwgImF0dHJpYnV0ZXMiLCAiZXhwb3J0cyIsICJTVkdtcm9vdCIsICJyb290IiwgIl9hIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJNbWxNZmVuY2VkIiwgInByZXYiLCAiYXR0cmlidXRlcyIsICJ0ZXh0IiwgImV4cG9ydHMiLCAiU1ZHbWZlbmNlZCIsICJwYXJlbnQiLCAiZXhwb3J0cyIsICJfYSIsICJmZW5jZSIsICJiYXNlIiwgImF0dHIiLCAiaSIsICJleHBvcnRzIiwgIlNWR3NjcmlwdGJhc2UiLCAicGFyZW50IiwgIl9hIiwgImV4cG9ydHMiLCAiX2EiLCAiZXhwb3J0cyIsICJNbWxNc3Vic3VwIiwgImF0dHJpYnV0ZXMiLCAiZXhwb3J0cyIsICJNbWxNc3ViIiwgIk1tbE1zdXAiLCAiU1ZHbXN1YiIsICJleHBvcnRzIiwgIlNWR21zdXAiLCAiU1ZHbXN1YnN1cCIsICJwYXJlbnQiLCAiX2EiLCAiYmFzZSIsICJfYSIsICJleHBvcnRzIiwgIk1tbE11bmRlcm92ZXIiLCAiYXR0cmlidXRlcyIsICJleHBvcnRzIiwgIk1tbE11bmRlciIsICJNbWxNb3ZlciIsICJTVkdtdW5kZXIiLCAicGFyZW50IiwgIl9hIiwgImJhc2UiLCAiZXhwb3J0cyIsICJTVkdtb3ZlciIsICJTVkdtdW5kZXJvdmVyIiwgImV4cG9ydHMiLCAiZGF0YSIsICJfYSIsICJNbWxNbXVsdGlzY3JpcHRzIiwgImF0dHJpYnV0ZXMiLCAiZXhwb3J0cyIsICJNbWxNcHJlc2NyaXB0cyIsICJNbWxOb25lIiwgImV4cG9ydHMiLCAiU1ZHbW11bHRpc2NyaXB0cyIsICJwYXJlbnQiLCAiZGF0YSIsICJfYSIsICJiYXNlIiwgImV4cG9ydHMiLCAiYXR0cmlidXRlcyIsICJwYXJlbnQiLCAiX2EiLCAibGlzdCIsICJleHBvcnRzIiwgIk1tbE10YWJsZSIsICJhdHRyaWJ1dGVzIiwgInByZXYiLCAiZXhwb3J0cyIsICJTVkdtdGFibGUiLCAicGFyZW50IiwgIl9hIiwgInRhYmxlIiwgImF0dHJpYnV0ZXMiLCAiZXhwb3J0cyIsICJjaGlsZHJlbiIsICJleHBvcnRzIiwgIk1tbE10ciIsICJhdHRyaWJ1dGVzIiwgInByZXYiLCAiZXhwb3J0cyIsICJNbWxNbGFiZWxlZHRyIiwgIlNWR210ciIsICJwYXJlbnQiLCAiX2EiLCAiZXhwb3J0cyIsICJTVkdtbGFiZWxlZHRyIiwgInRhYmxlIiwgImV4cG9ydHMiLCAiTW1sTXRkIiwgInByZXYiLCAiZXhwb3J0cyIsICJTVkdtdGQiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImRhdGEiLCAiX2EiLCAiTW1sTWFjdGlvbiIsICJhdHRyaWJ1dGVzIiwgInByZXYiLCAiZXhwb3J0cyIsICJTVkdtYWN0aW9uIiwgInBhcmVudCIsICJfYSIsICJkb2N1bWVudCIsICJkYXRhIiwgInRleHQiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIl9hIiwgInJlbmRlciIsICJyZW1vdmUiLCAiYXR0cmlidXRlcyIsICJyZW1vdmUiLCAiX2EiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIl9hIiwgImRhdGEiLCAiTW1sTWVuY2xvc2UiLCAicHJldiIsICJleHBvcnRzIiwgIlNWR21lbmNsb3NlIiwgInBhcmVudCIsICJibG9jayIsICJfYSIsICJleHBvcnRzIiwgIl9hIiwgImV4cG9ydHMiLCAiTW1sU2VtYW50aWNzIiwgImV4cG9ydHMiLCAiTW1sQW5ub3RhdGlvblhNTCIsICJNbWxBbm5vdGF0aW9uIiwgIlNWR3NlbWFudGljcyIsICJwYXJlbnQiLCAiZXhwb3J0cyIsICJTVkdhbm5vdGF0aW9uIiwgIlNWR2Fubm90YXRpb25YTUwiLCAiU1ZHeG1sIiwgInhtbCIsICJfYSIsICJfYSIsICJpbmRleCIsICJ0ZXh0IiwgImV4cG9ydHMiLCAiTW1sTWdseXBoIiwgIl9hIiwgImluZGV4IiwgImV4cG9ydHMiLCAiU1ZHbWdseXBoIiwgInBhcmVudCIsICJfYSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiVGVYQXRvbSIsICJhdHRyaWJ1dGVzIiwgImNoaWxkcmVuIiwgInByZXYiLCAiZXhwb3J0cyIsICJTVkdUZVhBdG9tIiwgInBhcmVudCIsICJleHBvcnRzIiwgInRleHQiLCAiZGF0YSIsICJleHBvcnRzIiwgIlNWR1RleHROb2RlIiwgInBhcmVudCIsICJ0ZXh0IiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJfYSIsICJTVkdXcmFwcGVyRmFjdG9yeSIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiU1ZHRm9udERhdGEiLCAiX2EiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIlRlWEZvbnQiLCAiZXhwb3J0cyIsICJGb250Q2FjaGUiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIlNWRyIsICJodG1sIiwgInBhcmVudCIsICJfYSIsICJjaGlsZHJlbiIsICJ0ZXh0IiwgIkFic3RyYWN0RE9NQWRhcHRvciIsICJkb2N1bWVudCIsICJjaGlsZHJlbiIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiX2EiLCAidGV4dCIsICJMaXRlRWxlbWVudCIsICJhdHRyaWJ1dGVzIiwgImNoaWxkcmVuIiwgImV4cG9ydHMiLCAiTGl0ZURvY3VtZW50IiwgImV4cG9ydHMiLCAiTGl0ZVRleHQiLCAidGV4dCIsICJleHBvcnRzIiwgIkxpdGVDb21tZW50IiwgIkxpdGVMaXN0IiwgImNoaWxkcmVuIiwgImV4cG9ydHMiLCAiUEFUVEVSTlMiLCAiZXhwb3J0cyIsICJMaXRlUGFyc2VyIiwgInRleHQiLCAicm9vdCIsICJjb21tZW50IiwgImF0dHJpYnV0ZXMiLCAiX2EiLCAieG1sIiwgIkNEQVRBIiwgImh0bWwiLCAiTGl0ZVdpbmRvdyIsICJleHBvcnRzIiwgIkxpdGVCYXNlIiwgInRleHQiLCAiZm9ybWF0IiwgImRvY3VtZW50IiwgInBhcmVudCIsICJhdHRyaWJ1dGVzIiwgImxpc3QiLCAiZXhwb3J0cyIsICJMaXRlQWRhcHRvciIsICJsaXRlQWRhcHRvciIsICJleHBvcnRzIiwgIkxpc3RJdGVtIiwgImRhdGEiLCAiTGlua2VkTGlzdCIsICJtYXAiLCAibmV4dCIsICJfYSIsICJsaXN0IiwgIkFic3RyYWN0TWF0aExpc3QiLCAiZXhwb3J0cyIsICJBYnN0cmFjdE5vZGVGYWN0b3J5IiwgImNoaWxkcmVuIiwgImV4cG9ydHMiLCAiTW1sTXN0eWxlIiwgImF0dHJpYnV0ZXMiLCAiZXhwb3J0cyIsICJNbWxNYWxpZ25ncm91cCIsICJhdHRyaWJ1dGVzIiwgImV4cG9ydHMiLCAiTW1sTWFsaWdubWFyayIsICJleHBvcnRzIiwgIk1hdGhDaG9pY2UiLCAiYXR0cmlidXRlcyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiX2EiLCAiTW1sRmFjdG9yeSIsICJleHBvcnRzIiwgIkJpdEZpZWxkIiwgImV4cG9ydHMiLCAiQml0cyIsICJSZW5kZXJMaXN0IiwgImxpc3QiLCAicmVuZGVyTWF0aCIsICJfYSIsICJkb2N1bWVudCIsICJlbmQiLCAiZXhwb3J0cyIsICJEZWZhdWx0SW5wdXRKYXgiLCAiRGVmYXVsdE91dHB1dEpheCIsICJEZWZhdWx0TWF0aExpc3QiLCAiRGVmYXVsdE1hdGhJdGVtIiwgIkFic3RyYWN0TWF0aERvY3VtZW50IiwgImZvcm1hdCIsICJqYXgiLCAiZGF0YSIsICJEZWZhdWx0TWF0aERvY3VtZW50IiwgIkFic3RyYWN0SGFuZGxlciIsICJkb2N1bWVudCIsICJleHBvcnRzIiwgIkhUTUxNYXRoSXRlbSIsICJlbmQiLCAibmV4dCIsICJkb2N1bWVudCIsICJ0ZXh0IiwgImV4cG9ydHMiLCAiSFRNTE1hdGhMaXN0IiwgImV4cG9ydHMiLCAiSFRNTERvbVN0cmluZ3MiLCAicHJvY2VzcyIsICJ0ZXh0IiwgIm5leHQiLCAiX2EiLCAiZXhwb3J0cyIsICJIVE1MRG9jdW1lbnQiLCAiZG9jdW1lbnQiLCAiX2EiLCAiaHRtbCIsICJpbmRleCIsICJsaXN0IiwgImVuZCIsICJleHBvcnRzIiwgIkhUTUxIYW5kbGVyIiwgImRvY3VtZW50IiwgImV4cG9ydHMiLCAiUmVnaXN0ZXJIVE1MSGFuZGxlciIsICJleHBvcnRzIiwgIkFic3RyYWN0VmlzaXRvciIsICJleHBvcnRzIiwgIk1tbFZpc2l0b3IiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIlNlcmlhbGl6ZWRNbWxWaXNpdG9yIiwgImNoaWxkcmVuIiwgIl9hIiwgImF0dHIiLCAiYXR0cmlidXRlcyIsICJkYXRhIiwgIkxpbWl0ZWRNbWxWaXNpdG9yIiwgImV4cG9ydHMiLCAiZG9jdW1lbnQiLCAiX2EiLCAiQXNzaXN0aXZlTW1sSGFuZGxlciIsICJFbGVtZW50VHlwZSIsICJpc1RhZyIsICJUZXh0IiwgIkNvbW1lbnQiLCAiY2hpbGRyZW4iLCAiY2xvbmUiLCAiQ0RBVEEiLCAicGFyZW50IiwgInByZXYiLCAibmV4dCIsICJkYXRhIiwgIl9hIiwgImluaXRfZXNtIiwgImVycm9yIiwgImRhdGEiLCAiVGV4dCIsICJDb21tZW50IiwgInRleHQiLCAiQ0RBVEEiLCAicGFyZW50IiwgIl9hIiwgImNvZGUiLCAiQ2hhckNvZGVzIiwgIkJpblRyaWVGbGFncyIsICJFbnRpdHlEZWNvZGVyU3RhdGUiLCAiRGVjb2RpbmdNb2RlIiwgImVycm9ycyIsICJlbmQiLCAiYmFzZSIsICJfYSIsICJtYXRjaCIsICJuZXh0IiwgIm1hcCIsICJlc2NhcGUiLCAiZGF0YSIsICJpbmRleCIsICJpbml0X2VzbSIsICJFbnRpdHlMZXZlbCIsICJFbmNvZGluZ01vZGUiLCAidmFsIiwgImF0dHJpYnV0ZXMiLCAiX2EiLCAiZW5jb2RlIiwgImRhdGEiLCAiaW5pdF9lc20iLCAibm9kZSIsICJpc1RhZyIsICJpbml0X2VzbSIsICJwYXJlbnQiLCAic2libGluZ3MiLCAicHJldiIsICJuZXh0IiwgIl9hIiwgImlzVGFnIiwgImluaXRfZXNtIiwgInByZXYiLCAibmV4dCIsICJwYXJlbnQiLCAidGVzdCIsICJpc1RhZyIsICJpbml0X2VzbSIsICJpc1RhZyIsICJ0ZXN0IiwgImluaXRfZXNtIiwgImRhdGEiLCAic2libGluZ3MiLCAiaW5pdF9lc20iLCAiRG9jdW1lbnRQb3NpdGlvbiIsICJjaGlsZHJlbiIsICJocmVmIiwgIl9hIiwgInByb3AiLCAidmFsIiwgImVzbV9leHBvcnRzIiwgImlzVGFnIiwgImluaXRfZXNtIiwgImRlZmF1bHRPcHRzIiwgInJlbmRlciIsICJkYXRhIiwgIm5leHQiLCAibWFwIiwgImluaXRfZXNtIiwgIkNoYXJhY3RlckNvZGVzIiwgImlzVGFnIiwgIl9hIiwgImtleXMiLCAicHJvcCIsICJ2YWwiLCAiZGF0YSIsICJlbmQiLCAiaW5kZXgiLCAiaW5pdF9lc20iLCAiU2VsZWN0b3JUeXBlIiwgIkF0dHJpYnV0ZUFjdGlvbiIsICJzdWJzZWxlY3RzIiwgImdldE5hbWUiLCAibWF0Y2giLCAiZGF0YSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ0cnVlRnVuYyIsICJpc1RyYXZlcnNhbCIsICJfYSIsICJpbml0X2F0dHJpYnV0ZXMiLCAibmV4dCIsICJkYXRhIiwgImFkYXB0ZXIiLCAiYXR0ciIsICJib29sYmFzZSIsICJfYSIsICJwYXJzZSIsICJpbml0X3BhcnNlIiwgImJvb2xiYXNlIiwgImluZGV4IiwgImltcG9ydF9ib29sYmFzZSIsICJwYXJzZSIsICJpbml0X2VzbSIsICJpbml0X3BhcnNlIiwgIm5leHQiLCAiYWRhcHRlciIsICJwYXJlbnQiLCAiYm9vbGJhc2UiLCAiaW1wb3J0X2Jvb2xiYXNlIiwgImluaXRfZXNtIiwgInRleHQiLCAiY29udGFpbnMiLCAic2libGluZ3MiLCAiYWRhcHRlciIsICJlbGVtIiwgInNpYmxpbmdzIiwgIm5leHQiLCAiYWRhcHRlciIsICJib29sYmFzZSIsICJzaWJsaW5ncyIsICJpbXBvcnRfYm9vbGJhc2UiLCAiY29tcGlsZVRva2VuIiwgImlzVHJhdmVyc2FsIiwgIm5leHQiLCAiY29tcGlsZVRva2VuIiwgImRhdGEiLCAiX2EiLCAiYWRhcHRlciIsICJwYXJlbnQiLCAibmV4dCIsICJjb21waWxlVG9rZW4iLCAiZWxlbSIsICJzaWJsaW5ncyIsICJpbml0X2F0dHJpYnV0ZXMiLCAiY29tcGlsZSIsICJuZXh0IiwgImRhdGEiLCAiYWRhcHRlciIsICJwYXJlbnQiLCAiaXNUcmF2ZXJzYWwiLCAiX2EiLCAiZmlyc3QiLCAiYm9vbGJhc2UiLCAiaW1wb3J0X2Jvb2xiYXNlIiwgImluaXRfY29tcGlsZSIsICJfYSIsICJlc21fZXhwb3J0cyIsICJzZWxlY3QiLCAiYWRhcHRlciIsICJpbXBvcnRfYm9vbGJhc2UiLCAiY29tcGlsZSIsICJpbml0X2VzbSIsICJpbml0X2NvbXBpbGUiLCAiYm9vbGJhc2UiLCAicyIsICJmaWx0ZXIiLCAiZGF0YSIsICJpbml0X2hlbHBlcnMiLCAiaXMiLCAiZmlsdGVyIiwgImRhdGEiLCAiaXNUYWciLCAicm9vdCIsICJfYSIsICJmaW5kIiwgImVzbV9leHBvcnRzIiwgImJvb2xiYXNlIiwgImluaXRfZXNtIiwgImluaXRfaGVscGVycyIsICJmaWx0ZXIiLCAiZmluZCIsICJpcyIsICJfYSIsICJmbiIsICJuZXh0RWxlbSIsICJuZXh0IiwgInNldCIsICJpc1RhZyIsICJ2YWwiLCAibWF0Y2giLCAicm9vdCIsICJlbmQiLCAiY29udGVudHMiLCAiaW5pdF9lc20iLCAicGFyZW50IiwgInBhcnNlIiwgImlzRG9jdW1lbnQiLCAicm9vdCIsICJwYXJlbnQiLCAiaW5pdF9wYXJzZSIsICJpbml0X2VzbSIsICJhcHBlbmQiLCAiaHRtbCIsICJwcmVwZW5kIiwgInRleHQiLCAiY2xvbmUiLCAicGFyZW50IiwgInByZXYiLCAibmV4dCIsICJfYSIsICJ3cmFwIiwgImlzVGFnIiwgInNpYmxpbmdzIiwgImluZGV4IiwgIlRleHQiLCAicm9vdCIsICJpbml0X21hbmlwdWxhdGlvbiIsICJpbml0X2VzbSIsICJpbml0X3BhcnNlIiwgImNoaWxkcmVuIiwgInByb3AiLCAidmFsIiwgImlzVGFnIiwgImtleXMiLCAicGFyc2UiLCAiaW5pdF9lc20iLCAiZGF0YSIsICJpc1RhZyIsICJfYSIsICJ2YWwiLCAiaW5pdF9lc20iLCAiZXh0cmFjdCIsICJfYSIsICJtYXAiLCAiaXNBcnJheSIsICIkIiwgImluaXRfbWFuaXB1bGF0aW9uIiwgInJvb3QiLCAicGFyc2UiLCAicmVuZGVyIiwgImxvYWQiLCAiaXNEb2N1bWVudCIsICJjb250ZW50IiwgIm9wdGlvbnMiLCAicm9vdCIsICJDT0RFX1BPSU5UUyIsICJFUlIiLCAiY29kZSIsICJUb2tlblR5cGUiLCAiX2EiLCAiTlMiLCAiQVRUUlMiLCAiRE9DVU1FTlRfTU9ERSIsICJUQUdfTkFNRVMiLCAiVEFHX0lEIiwgImlzQXNjaWlBbHBoYU51bWVyaWMiLCAiaXNXaGl0ZXNwYWNlIiwgImNvZGUiLCAiU3RhdGUiLCAiZXJyb3IiLCAiX2EiLCAiZG9jdW1lbnQiLCAiRW50cnlUeXBlIiwgImVudHJ5IiwgImRhdGEiLCAiZG9jdW1lbnQiLCAidGV4dCIsICJhdHRyIiwgImF0dHIiLCAiX2EiLCAiSW5zZXJ0aW9uTW9kZSIsICJkb2N1bWVudCIsICJodG1sIiwgImNvZGUiLCAicGFyZW50IiwgInNpYmxpbmdzIiwgImRlZmF1bHRPcHRzIiwgImh0bWwiLCAiYXR0ciIsICJwYXJlbnQiLCAicGFyc2UiLCAiaHRtbCIsICJpbml0X2Rpc3QiLCAiaW5pdF9lc20iLCAiaXNUYWciLCAiZGF0YSIsICJDb21tZW50IiwgIlRleHQiLCAicHJldiIsICJkb2N1bWVudCIsICJuZXh0IiwgInRleHQiLCAiX2EiLCAiaXNEb2N1bWVudCIsICJfYSIsICJwYXJzZSIsICJpbmRleCIsICJpbml0X2VzbSIsICJpbml0X2Rpc3QiLCAiaXNXaGl0ZXNwYWNlIiwgIkNoYXJDb2RlcyIsICJTdGF0ZSIsICJUb2tlbml6ZXIiLCAiUXVvdGVUeXBlIiwgIlBhcnNlciIsICJfYSIsICJUb2tlbml6ZXIiLCAiZGF0YSIsICJpbmRleCIsICJlbmQiLCAic2xpY2UiLCAiZGF0YSIsICJQYXJzZXIiLCAiaW5pdF9lc20iLCAicGFyc2UiLCAiaW5pdF9wYXJzZSIsICJpbml0X2VzbSIsICJpc0RvY3VtZW50IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImNzcyIsICJpbmRleCIsICJzdGFydCIsICJmaW5kIiwgInBvcyIsICJjaCIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJwYXJzZSIsICJjc3MiLCAibmV4dCIsICJrZXlzIiwgInBhcnNlU2VsZWN0b3IiLCAidHJpbSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJzdHJpbmdpZnkiLCAiY3NzIiwgImNoaWxkcmVuIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfcGFyc2VyIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImVzY2FwZSIsICJQYXJ0IiwgIkV4cHJlc3Npb24iLCAiRXhwcmVzc2lvbnMiLCAic2VsZiIsICJwYXJzZSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJ0ZXh0IiwgInBhcnNlIiwgInBzZXVkb3MiLCAibm90IiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInByb3AiLCAiZXhwb3J0cyIsICJleHRyYWN0IiwgImF0dHIiLCAiY3NzIiwgInRleHQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaHRtbCIsICJtYXRjaCIsICJpbmRleCIsICIkIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJkZWNvZGVNYXAiLCAiZXhwb3J0cyIsICJfYSIsICJyZXBsYWNlQ29kZVBvaW50IiwgImRlY29kZUNvZGVQb2ludCIsICJleHBvcnRzIiwgIkNoYXJDb2RlcyIsICJUT19MT1dFUl9CSVQiLCAiQmluVHJpZUZsYWdzIiwgImlzTnVtYmVyIiwgImNvZGUiLCAiaXNIZXhhZGVjaW1hbENoYXJhY3RlciIsICJpc0FzY2lpQWxwaGFOdW1lcmljIiwgImlzRW50aXR5SW5BdHRyaWJ1dGVJbnZhbGlkRW5kIiwgIkVudGl0eURlY29kZXJTdGF0ZSIsICJEZWNvZGluZ01vZGUiLCAiRW50aXR5RGVjb2RlciIsICJlcnJvcnMiLCAiZW5kIiwgImJhc2UiLCAiX2EiLCAiZGV0ZXJtaW5lQnJhbmNoIiwgImdldERlY29kZXIiLCAiaHRtbERlY29kZXIiLCAieG1sRGVjb2RlciIsICJkZWNvZGVIVE1MIiwgImRlY29kZUhUTUxBdHRyaWJ1dGUiLCAiZGVjb2RlSFRNTFN0cmljdCIsICJkZWNvZGVYTUwiLCAicmVzdG9yZURpZmYiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgInhtbENvZGVNYXAiLCAiaW5kZXgiLCAiZW5jb2RlWE1MIiwgIm1hdGNoIiwgIm5leHQiLCAiZ2V0RXNjYXBlciIsICJtYXAiLCAiZXNjYXBlIiwgImRhdGEiLCAiZW5jb2RlSFRNTCIsICJkYXRhIiwgImV4cG9ydHMiLCAiZW5jb2RlTm9uQXNjaWlIVE1MIiwgIm1hdGNoIiwgIm5leHQiLCAiRW50aXR5TGV2ZWwiLCAiZXhwb3J0cyIsICJFbmNvZGluZ01vZGUiLCAiZGVjb2RlIiwgImRhdGEiLCAiX2EiLCAiZW5jb2RlIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAibWF0Y2giLCAiaSIsICJleHBvcnRzIiwgIm1vZHVsZSIsICJkZWNvZGUiLCAiJCIsICJjc3MiLCAibGFzdCIsICJwc2V1ZG9zIiwgImVsIiwgImoiLCAic3R5bGUiLCAic2VsZWN0b3IiLCAiaSIsICJwcm9wIiwgInBhcmVudCIsICJhdHRyIiwgInRleHQiLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiaHRtbCIsICJjc3MiLCAicmVxdWlyZV91dGlscyIsICJleHBvcnRzIiwgInByb3AiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgInJlcXVpcmVfYXVkaW8iLCAiZXhwb3J0cyIsICJyZXF1aXJlX2NvbXByZXNzZWQiLCAiZXhwb3J0cyIsICJyZXF1aXJlX2ltYWdlIiwgImV4cG9ydHMiLCAiaXNBVklGIiwgImlzSEVJQyIsICJyZXF1aXJlX290aGVyIiwgImV4cG9ydHMiLCAicmVxdWlyZV92aWRlbyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiX2EiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgImV4cG9ydHMiLCAiZXhwb3J0cyIsICJleHBvcnRzIiwgIl9hIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgImZpbGVUeXBlQ2hlY2tlciIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9odG1sIiwgInJvb3QiLCAiU3ltYm9sIiwgIm9iamVjdFByb3RvIiwgIm5hdGl2ZU9iamVjdFRvU3RyaW5nIiwgInN5bVRvU3RyaW5nVGFnIiwgImluZGV4IiwgImluZGV4IiwgIklORklOSVRZIiwgImZ1bmNQcm90byIsICJvYmplY3RQcm90byIsICJmdW5jVG9TdHJpbmciLCAiaGFzT3duUHJvcGVydHkiLCAiV2Vha01hcCIsICJpbmRleCIsICJpbmRleCIsICJpbmRleCIsICJpbmRleCIsICJlcSIsICJvYmplY3RQcm90byIsICJoYXNPd25Qcm9wZXJ0eSIsICJpbmRleCIsICJpbmRleCIsICJNQVhfU0FGRV9JTlRFR0VSIiwgImlzQXJyYXlMaWtlIiwgImluZGV4IiwgImluZGV4IiwgIm9iamVjdFByb3RvIiwgImluZGV4IiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgIkJ1ZmZlciIsICJhcmdzVGFnIiwgImZ1bmNUYWciLCAiZnJlZUV4cG9ydHMiLCAiZnJlZU1vZHVsZSIsICJtb2R1bGVFeHBvcnRzIiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgImRhdGEiLCAib2JqZWN0UHJvdG8iLCAiaGFzT3duUHJvcGVydHkiLCAiZGF0YSIsICJIQVNIX1VOREVGSU5FRCIsICJkYXRhIiwgImluZGV4IiwgImRhdGEiLCAiaW5kZXgiLCAiZGF0YSIsICJpbmRleCIsICJkYXRhIiwgImluZGV4IiwgImluZGV4IiwgIk1hcCIsICJtYXAiLCAiZGF0YSIsICJkYXRhIiwgImluZGV4IiwgInRvU3RyaW5nIiwgImluZGV4IiwgIm9iamVjdFRhZyIsICJmdW5jUHJvdG8iLCAib2JqZWN0UHJvdG8iLCAiZnVuY1RvU3RyaW5nIiwgImhhc093blByb3BlcnR5IiwgImVycm9yVGFnIiwgImVuZCIsICJpbmRleCIsICJlbmQiLCAicnNBc3RyYWxSYW5nZSIsICJyc0NvbWJvTWFya3NSYW5nZSIsICJyZUNvbWJvSGFsZk1hcmtzUmFuZ2UiLCAicnNDb21ib1N5bWJvbHNSYW5nZSIsICJyc0NvbWJvUmFuZ2UiLCAicnNWYXJSYW5nZSIsICJyc1pXSiIsICJkYXRhIiwgImRhdGEiLCAiZGF0YSIsICJmcmVlRXhwb3J0cyIsICJmcmVlTW9kdWxlIiwgIm1vZHVsZUV4cG9ydHMiLCAiQnVmZmVyIiwgImluZGV4IiwgIm9iamVjdFByb3RvIiwgInByb3BlcnR5SXNFbnVtZXJhYmxlIiwgIm5hdGl2ZUdldFN5bWJvbHMiLCAiUHJvbWlzZSIsICJTZXQiLCAibWFwVGFnIiwgIm9iamVjdFRhZyIsICJzZXRUYWciLCAid2Vha01hcFRhZyIsICJkYXRhVmlld1RhZyIsICJvYmplY3RQcm90byIsICJoYXNPd25Qcm9wZXJ0eSIsICJVaW50OEFycmF5IiwgInN5bWJvbFByb3RvIiwgImJvb2xUYWciLCAiZGF0ZVRhZyIsICJtYXBUYWciLCAibnVtYmVyVGFnIiwgInJlZ2V4cFRhZyIsICJzZXRUYWciLCAic3RyaW5nVGFnIiwgInN5bWJvbFRhZyIsICJhcnJheUJ1ZmZlclRhZyIsICJkYXRhVmlld1RhZyIsICJmbG9hdDMyVGFnIiwgImZsb2F0NjRUYWciLCAiaW50OFRhZyIsICJpbnQxNlRhZyIsICJpbnQzMlRhZyIsICJ1aW50OFRhZyIsICJ1aW50OENsYW1wZWRUYWciLCAidWludDE2VGFnIiwgInVpbnQzMlRhZyIsICJtYXBUYWciLCAic2V0VGFnIiwgImFyZ3NUYWciLCAiYXJyYXlUYWciLCAiYm9vbFRhZyIsICJkYXRlVGFnIiwgImVycm9yVGFnIiwgImZ1bmNUYWciLCAiZ2VuVGFnIiwgIm1hcFRhZyIsICJudW1iZXJUYWciLCAib2JqZWN0VGFnIiwgInJlZ2V4cFRhZyIsICJzZXRUYWciLCAic3RyaW5nVGFnIiwgInN5bWJvbFRhZyIsICJ3ZWFrTWFwVGFnIiwgImFycmF5QnVmZmVyVGFnIiwgImRhdGFWaWV3VGFnIiwgImZsb2F0MzJUYWciLCAiZmxvYXQ2NFRhZyIsICJpbnQ4VGFnIiwgImludDE2VGFnIiwgImludDMyVGFnIiwgInVpbnQ4VGFnIiwgInVpbnQ4Q2xhbXBlZFRhZyIsICJ1aW50MTZUYWciLCAidWludDMyVGFnIiwgImtleSIsICJDTE9ORV9ERUVQX0ZMQUciLCAiQ0xPTkVfU1lNQk9MU19GTEFHIiwgImVzY2FwZSIsICJzdHJpbmdUYWciLCAiYXJyYXlCdWZmZXJUYWciLCAiYm9vbFRhZyIsICJkYXRlVGFnIiwgIm51bWJlclRhZyIsICJpc051bWJlciIsICJNQVhfU0FGRV9JTlRFR0VSIiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgInJlRXNjYXBlIiwgIm9iamVjdFByb3RvIiwgImhhc093blByb3BlcnR5IiwgImluZGV4IiwgIm1hdGNoIiwgImluZGV4IiwgImluZGV4IiwgImVuZCIsICJtZXNzYWdlIiwgImNyeXB0byIsICJodG1sIiwgImp1aWNlIiwgIm1hdGNoIiwgImVuZCIsICJuZXh0IiwgImRlZmF1bHRPcHRpb25zIiwgIl9hIiwgImRlZmF1bHRPcHRpb25zIiwgIm5vcm1hbGl6ZSIsICJpc0RhdGUiLCAiaXNEYXRlIiwgImZvcm1hdCIsICJpbmRleCIsICJpbmRleCIsICJfYSIsICJkZWZhdWx0T3B0aW9ucyIsICJfYSIsICJkZWZhdWx0T3B0aW9ucyIsICJsb2NhbGl6ZSIsICJkZWxpbWl0ZXIiLCAiZm9ybWF0TG9uZyIsICJmb3JtYXQiLCAiX2EiLCAiZGVmYXVsdE9wdGlvbnMiLCAiX2EiLCAiZm9ybWF0IiwgImdldERlZmF1bHRPcHRpb25zIiwgIl9hIiwgInJlZmVyZW5jZSIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIm1hdGNoIiwgIlBhcnNlciIsICJtYXRjaCIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIlBhcnNlciIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIm1hdGNoIiwgIlBhcnNlciIsICJtYXRjaCIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIm1hdGNoIiwgIlBhcnNlciIsICJtYXRjaCIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIm1hdGNoIiwgIl9hIiwgImRlZmF1bHRPcHRpb25zIiwgIlBhcnNlciIsICJtYXRjaCIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIm1hdGNoIiwgIlBhcnNlciIsICJtYXRjaCIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIm1hdGNoIiwgIlBhcnNlciIsICJtYXRjaCIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIm1hdGNoIiwgIlBhcnNlciIsICJtYXRjaCIsICJQYXJzZXIiLCAibWF0Y2giLCAiUGFyc2VyIiwgIm1hdGNoIiwgIlBhcnNlciIsICJtYXRjaCIsICJQYXJzZXIiLCAiUGFyc2VyIiwgIlBhcnNlciIsICJQYXJzZXIiLCAiUGFyc2VyIiwgImZvcm1hdHRpbmdUb2tlbnNSZWdFeHAiLCAibG9uZ0Zvcm1hdHRpbmdUb2tlbnNSZWdFeHAiLCAiZXNjYXBlZFN0cmluZ1JlZ0V4cCIsICJkb3VibGVRdW90ZVJlZ0V4cCIsICJ1bmVzY2FwZWRMYXRpbkNoYXJhY3RlclJlZ0V4cCIsICJwYXJzZSIsICJfYSIsICJkZWZhdWx0T3B0aW9ucyIsICJnZXREZWZhdWx0T3B0aW9ucyIsICJjbGVhbkVzY2FwZWRTdHJpbmciLCAiaW5kZXgiLCAiX2EiLCAieG1sIiwgImRhdGEiLCAicGFyZW50IiwgImNkYXRhIiwgInBhcnNlIiwgInByb3AiLCAiaW1wb3J0X29ic2lkaWFuIiwgImltcG9ydF9vYnNpZGlhbiIsICJpbXBvcnRfb2JzaWRpYW4iLCAicGx1Z2luIiwgImNvZGUiLCAibW9kYWwiLCAiX2EiLCAiaW1wb3J0X29ic2lkaWFuIiwgInBsdWdpbiIsICJpc1N0cmluZyIsICJpc09iamVjdCIsICJrZXlzIiwgImlzU3RyaW5nIiwgImlzT2JqZWN0IiwgImVuZCIsICJlbmQiLCAicm9vdCIsICJlbmQiLCAidmFsIiwgImlzU3RyaW5nIiwgImlzU3RyaW5nIiwgImluZGV4IiwgImlzU3RyaW5nIiwgInBhcmVudCIsICJiTmFtZSIsICJibG9jayIsICJmcm9tUG9zIiwgInRvUG9zIiwgImlzU3RyaW5nIiwgImluZGV4IiwgIl9NYXNrZWROdW1iZXIiLCAiZW5kIiwgInNsaWNlIiwgIm1hdGNoIiwgImJsb2NrIiwgInBsdWdpbiIsICJfYSIsICJ0ZXh0IiwgInBhcnNlIiwgImltcG9ydF9vYnNpZGlhbiIsICJmcm9tQ29kZVBvaW50IiwgImhhcyIsICJpc1N0cmluZyIsICJmb3JtYXQiLCAiY29kZSIsICJmb3JtYXQiLCAicmVnZXhfZGVmYXVsdCIsICJyZWdleF9kZWZhdWx0IiwgInJlZ2V4X2RlZmF1bHQiLCAicmVnZXhfZGVmYXVsdCIsICJyZWdleF9kZWZhdWx0IiwgInJlZ2V4X2RlZmF1bHQiLCAiaW5pdF9lc20iLCAiaXNTdHJpbmciLCAiaGFzIiwgImZyb21Db2RlUG9pbnQiLCAibWF0Y2giLCAiY29kZSIsICJlbnRpdHkiLCAicmVnZXhfZGVmYXVsdCIsICJjb2RlIiwgImNvZGUiLCAic2VsZiIsICJpbmRleCIsICJsaXN0IiwgInRleHQiLCAibWF0Y2giLCAiaW5kZXgiLCAidGV4dCIsICJsYXN0IiwgImNvZGUiLCAiZW5kIiwgImZpcnN0IiwgImxhc3QiLCAibGFzdCIsICJuZXh0TGluZSIsICJwb3MiLCAibWF4IiwgIl9ydWxlcyIsICJ0ZXh0IiwgImxpbmtpZnkiLCAibWF0Y2giLCAibGluayIsICJlc2NhcGUiLCAicG9zdFByb2Nlc3MiLCAiY29kZSIsICJjb2RlIiwgImlzTGlua09wZW4iLCAiaXNMaW5rQ2xvc2UiLCAibWF0Y2giLCAiaW5pdF9lc20iLCAibWF0Y2giLCAiY29kZSIsICJmcm9tQ29kZVBvaW50IiwgImxhc3QiLCAiX3J1bGVzIiwgInRleHQiLCAibGlua2lmeSIsICJlc2NhcGUiLCAiX3J1bGVzMiIsICJlbmQiLCAicmVnZXhfZGVmYXVsdCIsICJhc3NpZ24iLCAiX2NsYXNzIiwgImlzU3RyaW5nIiwgImlzT2JqZWN0IiwgImlzRnVuY3Rpb24iLCAiZXNjYXBlUkUiLCAiZGVmYXVsdE9wdGlvbnMiLCAidGV4dCIsICJzZWxmIiwgIm1hdGNoIiwgImNvbXBpbGUiLCAidGxkcyIsICJhbGlhc2VzIiwgInZhbCIsICJlbmQiLCAiYWRkIiwgIm5leHQiLCAibGlzdCIsICJub3JtYWxpemUiLCAibWFwIiwgImRlY29kZSIsICJpbmRleCIsICJlbmNvZGUiLCAiZm9ybWF0IiwgImlzU3RyaW5nIiwgInNlbGYiLCAibGlzdCIsICJwbHVnaW4iLCAicGx1Z2luT3B0aW9ucyIsICJwbHVnaW4iLCAiX2EiLCAibWF0Y2giLCAidG9rZW5UeXBlIiwgInBsdWdpbk9wdGlvbnMiLCAicGx1Z2luIiwgImVuZCIsICJpbXBvcnRfb2JzaWRpYW4iLCAicGx1Z2luIiwgImltcG9ydF9vYnNpZGlhbiIsICJwbHVnaW4iLCAidGV4dCIsICJfYSIsICJwbHVnaW4iLCAiZXJyb3IiLCAiYXV0aCIsICJfYSIsICJodG1sIiwgImZpbGVUeXBlQ2hlY2tlciIsICJwb3N0UGFyYW1zIiwgIm1hdGNoIiwgInBsdWdpbiIsICJfYSIsICJpbXBvcnRfb2JzaWRpYW4iLCAiZGF0YSIsICJpc0FycmF5IiwgInBsdWdpbiIsICJfYSIsICJkYXRhIiwgImVycm9yIiwgImlzQXJyYXkiLCAicGx1Z2luIiwgInBsdWdpbiIsICJlcnJvciIsICJfYSIsICJpbXBvcnRfb2JzaWRpYW4iLCAicGx1Z2luIiwgImVycm9yIiwgInBsdWdpbiIsICJwcm9maWxlIiwgImF0SW5kZXgiLCAidGV4dCIsICJfYSIsICJwbHVnaW4iLCAiaW5kZXgiLCAicGx1Z2luIiwgImltcG9ydF9vYnNpZGlhbiIsICJjb21tYW5kX3B1Ymxpc2giLCAiY29tbWFuZF9wdWJsaXNoV2l0aERlZmF1bHQiLCAiY29tbW9uX2JhY2siLCAiY29uZmlybU1vZGFsX2NhbmNlbCIsICJjb25maXJtTW9kYWxfY29uZmlybSIsICJjb25maXJtTW9kYWxfdGl0bGUiLCAiZXJyb3JfY2Fubm90UGFyc2VSZXNwb25zZSIsICJlcnJvcl9pbnZhbGlkVXJsIiwgImVycm9yX2ludmFsaWRVc2VyIiwgImVycm9yX2ludmFsaWRXcENvbVRva2VuIiwgImVycm9yX21lZGlhVXBsb2FkRmFpbGVkIiwgImVycm9yX25vQWN0aXZlRmlsZSIsICJlcnJvcl9ub0RlZmF1bHRQcm9maWxlIiwgImVycm9yX25vRWRpdG9yT3JGaWxlIiwgImVycm9yX25vRW5kcG9pbnQiLCAiZXJyb3Jfbm9QYXNzd29yZCIsICJlcnJvcl9ub1Byb2ZpbGUiLCAiZXJyb3Jfbm9Qcm9maWxlTmFtZSIsICJlcnJvcl9ub1N1Y2hQcm9maWxlIiwgImVycm9yX25vVXNlcm5hbWUiLCAiZXJyb3Jfbm90V3BDb20iLCAiZXJyb3JfcHJvZmlsZU5vdE1hdGNoIiwgImVycm9yX3B1Ymxpc2hGYWlsZWQiLCAiZXJyb3Jfd3BDb21BdXRoRmFpbGVkIiwgImxvZ2luTW9kYWxfbG9naW5CdXR0b25UZXh0IiwgImxvZ2luTW9kYWxfcGFzc3dvcmQiLCAibG9naW5Nb2RhbF9wYXNzd29yZERlc2MiLCAibG9naW5Nb2RhbF9yZW1lbWJlclBhc3N3b3JkIiwgImxvZ2luTW9kYWxfcmVtZW1iZXJQYXNzd29yZERlc2MiLCAibG9naW5Nb2RhbF9yZW1lbWJlclVzZXJuYW1lIiwgImxvZ2luTW9kYWxfcmVtZW1iZXJVc2VybmFtZURlc2MiLCAibG9naW5Nb2RhbF90aXRsZSIsICJsb2dpbk1vZGFsX3VzZXJuYW1lIiwgImxvZ2luTW9kYWxfdXNlcm5hbWVEZXNjIiwgIm1lc3NhZ2VfcHVibGlzaEZhaWxlZCIsICJtZXNzYWdlX3B1Ymxpc2hTdWNjZXNzZnVsbHkiLCAibWVzc2FnZV93cENvbVRva2VuVmFsaWRhdGVkIiwgInByb2ZpbGVNb2RhbF9TYXZlIiwgInByb2ZpbGVNb2RhbF9uYW1lIiwgInByb2ZpbGVNb2RhbF9uYW1lRGVzYyIsICJwcm9maWxlTW9kYWxfcmVtZW1iZXJQYXNzd29yZCIsICJwcm9maWxlTW9kYWxfcmVtZW1iZXJVc2VybmFtZSIsICJwcm9maWxlTW9kYWxfc2V0RGVmYXVsdCIsICJwcm9maWxlTW9kYWxfdGl0bGUiLCAicHJvZmlsZU5vdE1hdGNoX3VzZU5ldyIsICJwcm9maWxlTm90TWF0Y2hfdXNlT2xkIiwgInByb2ZpbGVzQ2hvb3Nlck1vZGFsX3BpY2tPbmUiLCAicHJvZmlsZXNDaG9vc2VyTW9kYWxfdGl0bGUiLCAicHJvZmlsZXNNYW5hZ2VNb2RhbF9jcmVhdGUiLCAicHJvZmlsZXNNYW5hZ2VNb2RhbF9jcmVhdGVEZXNjIiwgInByb2ZpbGVzTWFuYWdlTW9kYWxfZGVsZXRlVG9vbHRpcCIsICJwcm9maWxlc01hbmFnZU1vZGFsX3NldERlZmF1bHQiLCAicHJvZmlsZXNNYW5hZ2VNb2RhbF9zaG93RGV0YWlscyIsICJwcm9maWxlc01hbmFnZU1vZGFsX3RpdGxlIiwgInByb2ZpbGVzX2RlZmF1bHQiLCAicHVibGlzaE1vZGFsX2NhdGVnb3J5IiwgInB1Ymxpc2hNb2RhbF9jb21tZW50U3RhdHVzIiwgInB1Ymxpc2hNb2RhbF9jb21tZW50U3RhdHVzQ2xvc2VkIiwgInB1Ymxpc2hNb2RhbF9jb21tZW50U3RhdHVzT3BlbiIsICJwdWJsaXNoTW9kYWxfcG9zdERhdGVUaW1lIiwgInB1Ymxpc2hNb2RhbF9wb3N0RGF0ZVRpbWVEZXNjIiwgInB1Ymxpc2hNb2RhbF9wb3N0U3RhdHVzIiwgInB1Ymxpc2hNb2RhbF9wb3N0U3RhdHVzRHJhZnQiLCAicHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNGdXR1cmUiLCAicHVibGlzaE1vZGFsX3Bvc3RTdGF0dXNQcml2YXRlIiwgInB1Ymxpc2hNb2RhbF9wb3N0U3RhdHVzUHVibGlzaCIsICJwdWJsaXNoTW9kYWxfcG9zdFR5cGUiLCAicHVibGlzaE1vZGFsX3B1Ymxpc2hCdXR0b25UZXh0IiwgInB1Ymxpc2hNb2RhbF90aXRsZSIsICJwdWJsaXNoTW9kYWxfd3JvbmdNYXR0ZXJEYXRhRm9yUGFnZSIsICJwdWJsaXNoZWRNb2RhbF9jYW5jZWwiLCAicHVibGlzaGVkTW9kYWxfY29uZmlybUVkaXRJbldQIiwgInB1Ymxpc2hlZE1vZGFsX29wZW4iLCAicHVibGlzaGVkTW9kYWxfdGl0bGUiLCAicmliYm9uX2ljb25UaXRsZSIsICJzZXR0aW5nc19NYXRoSmF4T3V0cHV0VHlwZVNWR0Rlc2MiLCAic2V0dGluZ3NfTWF0aEpheE91dHB1dFR5cGVUZVhEZXNjIiwgInNldHRpbmdzX2FwaVR5cGUiLCAic2V0dGluZ3NfYXBpVHlwZURlc2MiLCAic2V0dGluZ3NfYXBpVHlwZVJlc3RBcHBsaWNhdGlvblBhc3N3b3JkcyIsICJzZXR0aW5nc19hcGlUeXBlUmVzdEFwcGxpY2F0aW9uUGFzc3dvcmRzRGVzYyIsICJzZXR0aW5nc19hcGlUeXBlUmVzdE1pbmlPcmFuZ2UiLCAic2V0dGluZ3NfYXBpVHlwZVJlc3RNaW5pT3JhbmdlRGVzYyIsICJzZXR0aW5nc19hcGlUeXBlUmVzdFdwQ29tT0F1dGgyIiwgInNldHRpbmdzX2FwaVR5cGVSZXN0V3BDb21PQXV0aDJEZXNjIiwgInNldHRpbmdzX2FwaVR5cGVYbWxScGMiLCAic2V0dGluZ3NfYXBpVHlwZVhtbFJwY0Rlc2MiLCAic2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlIiwgInNldHRpbmdzX2NvbW1lbnRDb252ZXJ0TW9kZURlc2MiLCAic2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlSFRNTCIsICJzZXR0aW5nc19jb21tZW50Q29udmVydE1vZGVIVE1MRGVzYyIsICJzZXR0aW5nc19jb21tZW50Q29udmVydE1vZGVJZ25vcmUiLCAic2V0dGluZ3NfY29tbWVudENvbnZlcnRNb2RlSWdub3JlRGVzYyIsICJzZXR0aW5nc19kZWZhdWx0UG9zdENvbW1lbnQiLCAic2V0dGluZ3NfZGVmYXVsdFBvc3RDb21tZW50Q2xvc2VkIiwgInNldHRpbmdzX2RlZmF1bHRQb3N0Q29tbWVudERlc2MiLCAic2V0dGluZ3NfZGVmYXVsdFBvc3RDb21tZW50T3BlbiIsICJzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1cyIsICJzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1c0Rlc2MiLCAic2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNEcmFmdCIsICJzZXR0aW5nc19kZWZhdWx0UG9zdFN0YXR1c1ByaXZhdGUiLCAic2V0dGluZ3NfZGVmYXVsdFBvc3RTdGF0dXNQdWJsaXNoIiwgInNldHRpbmdzX2VuYWJsZUh0bWwiLCAic2V0dGluZ3NfZW5hYmxlSHRtbERlc2MiLCAic2V0dGluZ3NfbWF0aEpheE91dHB1dFR5cGUiLCAic2V0dGluZ3NfbWF0aEpheE91dHB1dFR5cGVEZXNjIiwgInNldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlU1ZHIiwgInNldHRpbmdzX21hdGhKYXhPdXRwdXRUeXBlVGVYIiwgInNldHRpbmdzX3Byb2ZpbGVzIiwgInNldHRpbmdzX3Byb2ZpbGVzRGVzYyIsICJzZXR0aW5nc19wcm9maWxlc01vZGFsIiwgInNldHRpbmdzX3JlbWVtYmVyTGFzdFNlbGVjdGVkQ2F0ZWdvcmllcyIsICJzZXR0aW5nc19yZW1lbWJlckxhc3RTZWxlY3RlZENhdGVnb3JpZXNEZXNjIiwgInNldHRpbmdzX3JlcGxhY2VNZWRpYUxpbmtzIiwgInNldHRpbmdzX3JlcGxhY2VNZWRpYUxpbmtzRGVzYyIsICJzZXR0aW5nc19zaG93UmliYm9uSWNvbiIsICJzZXR0aW5nc19zaG93UmliYm9uSWNvbkRlc2MiLCAic2V0dGluZ3Nfc2hvd1dvcmRQcmVzc0VkaXRQYWdlTW9kYWwiLCAic2V0dGluZ3Nfc2hvd1dvcmRQcmVzc0VkaXRQYWdlTW9kYWxEZXNjIiwgInNldHRpbmdzX3RpdGxlIiwgInNldHRpbmdzX3VybCIsICJzZXR0aW5nc191cmxEZXNjIiwgInNldHRpbmdzX3VybFBsYWNlaG9sZGVyIiwgInNldHRpbmdzX3dwQ29tT0F1dGgyUmVmcmVzaFRva2VuIiwgInNldHRpbmdzX3dwQ29tT0F1dGgyUmVmcmVzaFRva2VuQnV0dG9uVGV4dCIsICJzZXR0aW5nc193cENvbU9BdXRoMlJlZnJlc2hUb2tlbkRlc2MiLCAic2V0dGluZ3Nfd3BDb21PQXV0aDJWYWxpZGF0ZVRva2VuQnV0dG9uVGV4dCIsICJzZXR0aW5nc194bWxScGNQYXRoIiwgInNldHRpbmdzX3htbFJwY1BhdGhEZXNjIiwgImltcG9ydF9vYnNpZGlhbiIsICJwbHVnaW4iLCAiX2EiLCAiY3J5cHRvIl0KfQo= diff --git a/src/abstract-wp-client.ts b/src/abstract-wp-client.ts index 5af845f..3dd2191 100644 --- a/src/abstract-wp-client.ts +++ b/src/abstract-wp-client.ts @@ -21,6 +21,7 @@ import { MatterData, Media } from './types'; import { openPostPublishedModal } from './post-published-modal'; import { openLoginModal } from './wp-login-modal'; import { isFunction } from 'lodash-es'; +import { convertPandocCitationsToZotpress } from './zotpress-citation-resolver'; export abstract class AbstractWordPressClient implements WordPressClient { @@ -129,7 +130,8 @@ export abstract class AbstractWordPressClient implements WordPressClient { auth, postParams }); - const html = AppState.markdownParser.render(postParams.content); + const publishContent = await this.preparePublishContent(postParams.content); + const html = AppState.markdownParser.render(publishContent); const result = await this.publish( postParams.title ?? 'A post from Obsidian!', html, @@ -181,6 +183,66 @@ export abstract class AbstractWordPressClient implements WordPressClient { return result; } + private async preparePublishContent(content: string): Promise { + if (!this.plugin.settings.formatZotpressShortcodes) { + return content; + } + + let publishContent = content; + if (this.plugin.settings.zotpressResolveViaBetterBibTeX) { + const conversion = await convertPandocCitationsToZotpress(content, { + enabled: true, + endpointUrl: this.plugin.settings.zotpressBetterBibTeXEndpointUrl, + librarySelector: this.plugin.settings.zotpressBetterBibTeXLibrarySelector, + fallbackLibraryId: this.plugin.settings.zotpressLibraryId, + }); + publishContent = conversion.content; + + if (conversion.lookupError) { + new Notice(this.plugin.i18n.t('message_zotpressLookupFailed', { + message: conversion.lookupError, + }), ERROR_NOTICE_TIMEOUT); + } + + if (conversion.unresolvedCitekeys.length > 0) { + new Notice(this.plugin.i18n.t('message_zotpressUnresolvedCitekeys', { + citekeys: conversion.unresolvedCitekeys.join(', '), + }), ERROR_NOTICE_TIMEOUT); + } + } + + if (this.hasZotpressInTextBibliography(publishContent)) { + return publishContent; + } + + const hasZotpressCitations = this.hasZotpressInTextCitation(publishContent); + const hasLegacyDoubleBracketCitations = this.hasConvertibleDoubleBracketCitation(publishContent); + const shouldAppendBib = hasZotpressCitations + || (!this.plugin.settings.zotpressResolveViaBetterBibTeX && hasLegacyDoubleBracketCitations); + if (!shouldAppendBib) { + return publishContent; + } + + const separator = publishContent.endsWith('\n') ? '' : '\n\n'; + return `${publishContent}${separator}---\n\n# Bibliography\n\n[zotpressInTextBib style="apa" sortby="author" sort="ASC"]`; + } + + private hasConvertibleDoubleBracketCitation(content: string): boolean { + const citationRegex = /\[\[\s*@[^\]\n]+\s*\]\]/; + return citationRegex.test(content); + } + + private hasZotpressInTextBibliography(content: string): boolean { + const bibliographyRegex = /\[zotpressInTextBib(\s[^\]]*)?\]/i; + return bibliographyRegex.test(content); + } + + private hasZotpressInTextCitation(content: string): boolean { + // Matches both single ([zotpressInText item=]) and multi ([zotpress items=]) shortcodes + const citationRegex = /\[zotpress(?:InText)?\s+items?=/i; + return citationRegex.test(content); + } + private async updatePostImages(params: { postParams: WordPressPostParams, auth: WordPressAuthParams, diff --git a/src/app-state.ts b/src/app-state.ts index 4e6ab52..36cd627 100644 --- a/src/app-state.ts +++ b/src/app-state.ts @@ -3,6 +3,7 @@ import MarkdownIt from 'markdown-it'; import { MarkdownItImagePluginInstance } from './markdown-it-image-plugin'; import { MarkdownItCommentPluginInstance } from './markdown-it-comment-plugin'; import { MarkdownItMathJax3PluginInstance } from './markdown-it-mathjax3-plugin'; +import { MarkdownItCitationPluginInstance } from './markdown-it-citation-plugin'; class AppStore { @@ -19,4 +20,5 @@ export const AppState = new AppStore(); AppState.markdownParser .use(MarkdownItCommentPluginInstance.plugin) .use(MarkdownItMathJax3PluginInstance.plugin) - .use(MarkdownItImagePluginInstance.plugin); + .use(MarkdownItImagePluginInstance.plugin) + .use(MarkdownItCitationPluginInstance.plugin); diff --git a/src/i18n/en.json b/src/i18n/en.json index 4119369..67ea716 100644 --- a/src/i18n/en.json +++ b/src/i18n/en.json @@ -81,6 +81,18 @@ "settings_enableHtmlDesc": "Enable HTML tags in notes. This might cause XSS attack to your WordPress.", "settings_replaceMediaLinks": "Replace media links", "settings_replaceMediaLinksDesc": "Replace media links to WordPress URLs after uploading.", + "settings_formatZotpressShortcodes": "Format Zotpress shortcodes", + "settings_formatZotpressShortcodesDesc": "Convert pandoc citations like [[@key]] to Zotpress shortcodes during publish.", + "settings_zotpressResolveViaBetterBibTeX": "Resolve citekeys via Better BibTeX", + "settings_zotpressResolveViaBetterBibTeXDesc": "Resolve [[@citekey]] to Zotero item references before creating Zotpress shortcodes.", + "settings_zotpressBetterBibTeXEndpointUrl": "Better BibTeX JSON-RPC endpoint", + "settings_zotpressBetterBibTeXEndpointUrlDesc": "Local Better BibTeX endpoint, usually http://localhost:23119/better-bibtex/json-rpc", + "settings_zotpressBetterBibTeXLibrarySelector": "Better BibTeX library selector", + "settings_zotpressBetterBibTeXLibrarySelectorDesc": "Optional library selector passed to Better BibTeX, such as My Library, *, or a library id.", + "settings_zotpressLibraryId": "Fallback Zotpress library id", + "settings_zotpressLibraryIdDesc": "Fallback id used when library id cannot be inferred from Better BibTeX response.", + "message_zotpressLookupFailed": "Better BibTeX citation lookup failed: <%= message %>", + "message_zotpressUnresolvedCitekeys": "Some citekeys could not be resolved and were left unchanged: <%= citekeys %>", "loginModal_title": "WordPress Login", "loginModal_username": "Username", "loginModal_usernameDesc": "Username for <%= url %>", diff --git a/src/i18n/zh-cn.json b/src/i18n/zh-cn.json index 85caa4e..ac2ab3a 100644 --- a/src/i18n/zh-cn.json +++ b/src/i18n/zh-cn.json @@ -81,6 +81,18 @@ "settings_enableHtmlDesc": "启用笔记中的 HTML 标签。这可能导致针对 WordPress 的 XSS 攻击", "settings_replaceMediaLinks": "替换媒体链接", "settings_replaceMediaLinksDesc": "上传成功之后,将文档中的路径替换为 WordPress 链接", + "settings_formatZotpressShortcodes": "格式化 Zotpress 短代码", + "settings_formatZotpressShortcodesDesc": "发布时将类似 [[@key]] 的 pandoc 引用转换为 Zotpress 短代码", + "settings_zotpressResolveViaBetterBibTeX": "通过 Better BibTeX 解析 citekey", + "settings_zotpressResolveViaBetterBibTeXDesc": "在生成 Zotpress 短代码前,将 [[@citekey]] 解析为 Zotero 条目引用", + "settings_zotpressBetterBibTeXEndpointUrl": "Better BibTeX JSON-RPC 地址", + "settings_zotpressBetterBibTeXEndpointUrlDesc": "本地 Better BibTeX 接口地址,通常是 http://localhost:23119/better-bibtex/json-rpc", + "settings_zotpressBetterBibTeXLibrarySelector": "Better BibTeX 文库选择器", + "settings_zotpressBetterBibTeXLibrarySelectorDesc": "可选,传给 Better BibTeX 的文库参数,例如 My Library、* 或文库 id", + "settings_zotpressLibraryId": "Zotpress 回退文库 id", + "settings_zotpressLibraryIdDesc": "当 Better BibTeX 返回中无法推断文库 id 时使用的回退值", + "message_zotpressLookupFailed": "Better BibTeX 引用查询失败:<%= message %>", + "message_zotpressUnresolvedCitekeys": "部分 citekey 未解析,已保留原样:<%= citekeys %>", "loginModal_title": "WordPress 登录", "loginModal_username": "用户名", "loginModal_usernameDesc": "<%= url %> 用户名", diff --git a/src/markdown-it-citation-plugin.ts b/src/markdown-it-citation-plugin.ts new file mode 100644 index 0000000..e97740b --- /dev/null +++ b/src/markdown-it-citation-plugin.ts @@ -0,0 +1,108 @@ +import MarkdownIt from 'markdown-it'; +import { trim } from 'lodash-es'; + +const tokenType = 'ob_pandoc_citation'; + +interface MarkdownItCitationPluginOptions { + enabled: boolean; +} + +const pluginOptions: MarkdownItCitationPluginOptions = { + enabled: false, +}; + +interface CitationEntry { + key: string; + locator?: string; +} + +function parseCitationEntry(value: string): CitationEntry | null { + const entry = trim(value); + if (entry.length === 0 || !entry.startsWith('@')) { + return null; + } + + const withoutPrefix = trim(entry.slice(1)); + if (withoutPrefix.length === 0) { + return null; + } + + const separatorIndex = withoutPrefix.indexOf(','); + if (separatorIndex < 0) { + return { + key: withoutPrefix, + }; + } + + const key = trim(withoutPrefix.slice(0, separatorIndex)); + const locator = trim(withoutPrefix.slice(separatorIndex + 1)); + if (key.length === 0) { + return null; + } + + if (locator.length === 0) { + return { + key, + }; + } + + return { + key, + locator, + }; +} + +function toZotpressInTextShortcode(entries: CitationEntry[]): string { + const itemValue = entries + .map((entry) => { + if (entry.locator) { + return `{${entry.key},${entry.locator}}`; + } + return `{${entry.key}}`; + }) + .join(';'); + + return `[zotpressInText item="${itemValue}"]`; +} + +export const MarkdownItCitationPluginInstance = { + plugin, + updateEnabled: (enabled: boolean) => { + pluginOptions.enabled = enabled; + }, +}; + +function plugin(md: MarkdownIt): void { + md.inline.ruler.after('backticks', tokenType, (state, silent) => { + if (!pluginOptions.enabled) { + return false; + } + const regex = /^\[\[\s*(@[^\]\n]+?)\s*\]\]/; + const match = state.src.slice(state.pos).match(regex); + if (!match) { + return false; + } + + const rawBody = match[1]; + const entries = rawBody + .split(';') + .map(parseCitationEntry); + + if (entries.length === 0 || entries.some((entry) => entry === null)) { + return false; + } + + if (silent) { + return true; + } + + const token = state.push(tokenType, 'span', 0); + token.content = toZotpressInTextShortcode(entries as CitationEntry[]); + state.pos += match[0].length; + return true; + }); + + md.renderer.rules[tokenType] = (tokens, idx) => { + return tokens[idx].content; + }; +} diff --git a/src/markdown-it-image-plugin.ts b/src/markdown-it-image-plugin.ts index 2f26915..fe2eefd 100644 --- a/src/markdown-it-image-plugin.ts +++ b/src/markdown-it-image-plugin.ts @@ -1,5 +1,4 @@ import MarkdownIt from 'markdown-it'; -import Token from 'markdown-it/lib/token'; import { trim } from 'lodash-es'; @@ -75,7 +74,7 @@ function plugin(md: MarkdownIt): void { return false; } }); - md.renderer.rules.ob_img = (tokens: Token[], idx: number) => { + md.renderer.rules.ob_img = (tokens, idx) => { const token = tokens[idx]; const src = token.attrs?.[0]?.[1]; const width = token.attrs?.[1]?.[1]; diff --git a/src/markdown-it-mathjax3-plugin.ts b/src/markdown-it-mathjax3-plugin.ts index e1d6938..d653da9 100644 --- a/src/markdown-it-mathjax3-plugin.ts +++ b/src/markdown-it-mathjax3-plugin.ts @@ -1,10 +1,7 @@ import MarkdownIt from 'markdown-it'; -import StateInline from 'markdown-it/lib/rules_inline/state_inline'; -import StateBlock from 'markdown-it/lib/rules_block/state_block'; import { TeX } from 'mathjax-full/js/input/tex'; import { AllPackages } from 'mathjax-full/js/input/tex/AllPackages'; import { SVG } from 'mathjax-full/js/output/svg'; -import Token from 'markdown-it/lib/token'; import { liteAdaptor } from 'mathjax-full/js/adaptors/liteAdaptor'; import { RegisterHTMLHandler } from 'mathjax-full/js/handlers/html'; import { AssistiveMmlHandler } from 'mathjax-full/js/a11y/assistive-mml'; @@ -13,6 +10,9 @@ import juice from 'juice'; import { SafeAny } from './utils'; import { MathJaxOutputType } from './plugin-settings'; +type StateInline = SafeAny; +type StateBlock = SafeAny; + const inlineTokenType = 'math_inline'; const blockTokenType = 'math_block'; @@ -41,12 +41,12 @@ function plugin(md: MarkdownIt): void { md.block.ruler.after('blockquote', blockTokenType, mathBlock, { alt: ['paragraph', 'reference', 'blockquote', 'list'], }); - md.renderer.rules[inlineTokenType] = (tokens: Token[], idx: number) => { + md.renderer.rules[inlineTokenType] = (tokens, idx) => { return renderMath(tokens[idx].content, { display: false }); }; - md.renderer.rules[blockTokenType] = (tokens: Token[], idx: number) => { + md.renderer.rules[blockTokenType] = (tokens, idx) => { return renderMath(tokens[idx].content, { display: true }); diff --git a/src/plugin-settings.ts b/src/plugin-settings.ts index 419404f..50a120e 100644 --- a/src/plugin-settings.ts +++ b/src/plugin-settings.ts @@ -74,6 +74,31 @@ export interface WordpressPluginSettings { * Whether media links should be replaced after uploading to WordPress. */ replaceMediaLinks: boolean; + + /** + * Whether pandoc-style citations should be converted to Zotpress shortcodes. + */ + formatZotpressShortcodes: boolean; + + /** + * Resolve pandoc citekeys via Better BibTeX before formatting Zotpress shortcodes. + */ + zotpressResolveViaBetterBibTeX: boolean; + + /** + * Better BibTeX JSON-RPC endpoint URL. + */ + zotpressBetterBibTeXEndpointUrl: string; + + /** + * Optional selector for Better BibTeX library parameter. + */ + zotpressBetterBibTeXLibrarySelector: string; + + /** + * Fallback Zotpress library id used when it cannot be inferred from lookup responses. + */ + zotpressLibraryId: string; } export const DEFAULT_SETTINGS: WordpressPluginSettings = { @@ -88,6 +113,11 @@ export const DEFAULT_SETTINGS: WordpressPluginSettings = { commentConvertMode: CommentConvertMode.Ignore, enableHtml: false, replaceMediaLinks: true, + formatZotpressShortcodes: false, + zotpressResolveViaBetterBibTeX: true, + zotpressBetterBibTeXEndpointUrl: 'http://localhost:23119/better-bibtex/json-rpc', + zotpressBetterBibTeXLibrarySelector: '', + zotpressLibraryId: '', } export async function upgradeSettings( diff --git a/src/settings.ts b/src/settings.ts index 6418df7..97ea58e 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -208,6 +208,78 @@ export class WordpressSettingTab extends PluginSettingTab { await this.plugin.saveSettings(); }), ); + + new Setting(containerEl) + .setName(t('settings_formatZotpressShortcodes')) + .setDesc(t('settings_formatZotpressShortcodesDesc')) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.formatZotpressShortcodes) + .onChange(async (value) => { + this.plugin.settings.formatZotpressShortcodes = value; + await this.plugin.saveSettings(); + + setupMarkdownParser(this.plugin.settings); + }), + ); + + new Setting(containerEl) + .setName(t('settings_zotpressResolveViaBetterBibTeX')) + .setDesc(t('settings_zotpressResolveViaBetterBibTeXDesc')) + .addToggle((toggle) => + toggle + .setValue(this.plugin.settings.zotpressResolveViaBetterBibTeX) + .setDisabled(!this.plugin.settings.formatZotpressShortcodes) + .onChange(async (value) => { + this.plugin.settings.zotpressResolveViaBetterBibTeX = value; + await this.plugin.saveSettings(); + + setupMarkdownParser(this.plugin.settings); + this.display(); + }), + ); + + new Setting(containerEl) + .setName(t('settings_zotpressBetterBibTeXEndpointUrl')) + .setDesc(t('settings_zotpressBetterBibTeXEndpointUrlDesc')) + .addText((text) => + text + .setPlaceholder('http://localhost:23119/better-bibtex/json-rpc') + .setValue(this.plugin.settings.zotpressBetterBibTeXEndpointUrl) + .setDisabled(!this.plugin.settings.zotpressResolveViaBetterBibTeX || !this.plugin.settings.formatZotpressShortcodes) + .onChange(async (value) => { + this.plugin.settings.zotpressBetterBibTeXEndpointUrl = value.trim(); + await this.plugin.saveSettings(); + }), + ); + + new Setting(containerEl) + .setName(t('settings_zotpressBetterBibTeXLibrarySelector')) + .setDesc(t('settings_zotpressBetterBibTeXLibrarySelectorDesc')) + .addText((text) => + text + .setPlaceholder('My Library') + .setValue(this.plugin.settings.zotpressBetterBibTeXLibrarySelector) + .setDisabled(!this.plugin.settings.zotpressResolveViaBetterBibTeX || !this.plugin.settings.formatZotpressShortcodes) + .onChange(async (value) => { + this.plugin.settings.zotpressBetterBibTeXLibrarySelector = value.trim(); + await this.plugin.saveSettings(); + }), + ); + + new Setting(containerEl) + .setName(t('settings_zotpressLibraryId')) + .setDesc(t('settings_zotpressLibraryIdDesc')) + .addText((text) => + text + .setPlaceholder('16058788') + .setValue(this.plugin.settings.zotpressLibraryId) + .setDisabled(!this.plugin.settings.zotpressResolveViaBetterBibTeX || !this.plugin.settings.formatZotpressShortcodes) + .onChange(async (value) => { + this.plugin.settings.zotpressLibraryId = value.trim(); + await this.plugin.saveSettings(); + }), + ); } } diff --git a/src/utils.ts b/src/utils.ts index 7ccf761..053603d 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -10,6 +10,7 @@ import { ERROR_NOTICE_TIMEOUT } from './consts'; import { format } from 'date-fns'; import { MatterData } from './types'; import { MarkdownItCommentPluginInstance } from './markdown-it-comment-plugin'; +import { MarkdownItCitationPluginInstance } from './markdown-it-citation-plugin'; export type SafeAny = any; // eslint-disable-line @typescript-eslint/no-explicit-any @@ -32,6 +33,9 @@ export function isPromiseFulfilledResult(obj: SafeAny): obj is PromiseFulfill export function setupMarkdownParser(settings: WordpressPluginSettings): void { MarkdownItMathJax3PluginInstance.updateOutputType(settings.mathJaxOutputType); MarkdownItCommentPluginInstance.updateConvertMode(settings.commentConvertMode); + MarkdownItCitationPluginInstance.updateEnabled( + settings.formatZotpressShortcodes && !settings.zotpressResolveViaBetterBibTeX, + ); } diff --git a/src/wp-profile-modal.ts b/src/wp-profile-modal.ts index b964ca1..35ef2ed 100644 --- a/src/wp-profile-modal.ts +++ b/src/wp-profile-modal.ts @@ -8,6 +8,7 @@ import { AppState } from './app-state'; import { isValidUrl, showError } from './utils'; import { ApiType } from './plugin-settings'; import { AbstractModal } from './abstract-modal'; +import { WordPressOAuth2Token } from './oauth2-client'; export function openProfileModal( @@ -63,10 +64,11 @@ class WpProfileModal extends AbstractModal { this.profileData = Object.assign({}, profile); this.tokenGotRef = AppState.events.on(EventType.OAUTH2_TOKEN_GOT, async token => { - this.profileData.wpComOAuth2Token = token; + const tokenData = token as WordPressOAuth2Token | undefined; + this.profileData.wpComOAuth2Token = tokenData; if (atIndex >= 0) { // if token is undefined, just remove it - this.plugin.settings.profiles[atIndex].wpComOAuth2Token = token; + this.plugin.settings.profiles[atIndex].wpComOAuth2Token = tokenData; await this.plugin.saveSettings(); } }); diff --git a/src/zotpress-citation-resolver.ts b/src/zotpress-citation-resolver.ts new file mode 100644 index 0000000..ca0bee3 --- /dev/null +++ b/src/zotpress-citation-resolver.ts @@ -0,0 +1,473 @@ +import * as http from 'http'; +import * as https from 'https'; +import { trim } from 'lodash-es'; + +interface CitationEntry { + key: string; + locator?: string; +} + +interface CitationMatch { + raw: string; + start: number; + end: number; + entries: CitationEntry[]; +} + +interface ResolvedCitation { + libraryId: string; + itemKey: string; +} + +interface ResolveCitekeysOptions { + endpointUrl: string; + librarySelector?: string; + fallbackLibraryId?: string; +} + +interface ResolveCitekeysResult { + mapped: Record; + unresolved: string[]; + error?: string; +} + +export interface ConvertCitationsOptions extends ResolveCitekeysOptions { + enabled: boolean; + timeoutMs?: number; // unused, kept for API compatibility +} + +export interface ConvertCitationsResult { + content: string; + unresolvedCitekeys: string[]; + lookupError?: string; +} + +interface JsonRpcSuccess { + jsonrpc: '2.0'; + id: string; + result: T; +} + +interface JsonRpcErrorResponse { + jsonrpc: '2.0'; + id: string; + error: { + code: number; + message: string; + }; +} + +type JsonRpcResponse = JsonRpcSuccess | JsonRpcErrorResponse; + +function parseCitationEntry(value: string): CitationEntry | null { + const entry = trim(value); + if (entry.length === 0 || !entry.startsWith('@')) { + return null; + } + + const withoutPrefix = trim(entry.slice(1)); + if (withoutPrefix.length === 0) { + return null; + } + + const separatorIndex = withoutPrefix.indexOf(','); + if (separatorIndex < 0) { + return { + key: withoutPrefix, + }; + } + + const key = trim(withoutPrefix.slice(0, separatorIndex)); + const locator = trim(withoutPrefix.slice(separatorIndex + 1)); + if (key.length === 0) { + return null; + } + + if (locator.length === 0) { + return { + key, + }; + } + + return { + key, + locator, + }; +} + +function findCitationMatches(content: string): CitationMatch[] { + const regex = /\[\[\s*(@[^\]\n]+?)\s*\]\]/g; + const matches: CitationMatch[] = []; + + let match = regex.exec(content); + while (match !== null) { + const body = match[1]; + const entries = body + .split(';') + .map(parseCitationEntry); + + if (entries.length > 0 && entries.every((entry) => entry !== null)) { + matches.push({ + raw: match[0], + start: match.index, + end: match.index + match[0].length, + entries: entries as CitationEntry[], + }); + } + match = regex.exec(content); + } + + return matches; +} + +function toZotpressInTextShortcode(entries: CitationEntry[], mapped: Record): string { + const tuples = entries.map((entry) => { + const resolved = mapped[entry.key]; + if (entry.locator) { + return `{${resolved.libraryId}:${resolved.itemKey},${entry.locator}}`; + } + return `{${resolved.libraryId}:${resolved.itemKey}}`; + }); + + if (tuples.length === 1) { + // Single citation: [zotpressInText item="{libraryId:itemKey}"] + return `[zotpressInText item="${tuples[0]}"]`; + } + + // Multiple citations: [zotpressInText item="{lib:key},{lib:key}"] + return `[zotpressInText item="${tuples.join(',')}"]`; +} + +function collectStringValues(value: unknown): string[] { + if (!value || typeof value !== 'object') { + return []; + } + + const values: string[] = []; + const queue: unknown[] = [value]; + while (queue.length > 0) { + const next = queue.shift(); + if (!next || typeof next !== 'object') { + continue; + } + + for (const currentValue of Object.values(next as Record)) { + if (typeof currentValue === 'string') { + values.push(currentValue); + } else if (currentValue && typeof currentValue === 'object') { + queue.push(currentValue); + } + } + } + + return values; +} + +function parseItemReferenceFromUri(uri: string): { libraryId: string; itemKey: string } | null { + const pattern = /\/(users|groups)\/(\d+)\/items\/([A-Z0-9]{8})\b/i; + const match = uri.match(pattern); + if (!match) { + return null; + } + return { + libraryId: match[2], + itemKey: match[3], + }; +} + +function asString(value: unknown): string | null { + if (typeof value === 'string' && value.trim().length > 0) { + return value.trim(); + } + if (typeof value === 'number') { + return `${value}`; + } + return null; +} + +function extractFromUnknownItem(value: unknown, fallbackLibraryId?: string): ResolvedCitation | null { + if (!value || typeof value !== 'object') { + return null; + } + + const source = value as Record; + let libraryId = asString(source.libraryID) + || asString(source.libraryId) + || asString(source.userID) + || asString(source.groupID) + || null; + let itemKey = asString(source.itemKey) + || asString(source.key) + || null; + + for (const str of collectStringValues(value)) { + const parsed = parseItemReferenceFromUri(str); + if (parsed) { + libraryId = parsed.libraryId; + itemKey = itemKey || parsed.itemKey; + break; + } + } + + if (!itemKey) { + const id = asString(source.id); + if (id && /^[A-Z0-9]{8}$/i.test(id)) { + itemKey = id; + } + } + + if (!libraryId && fallbackLibraryId) { + libraryId = fallbackLibraryId; + } + + if (!libraryId || !itemKey) { + return null; + } + + return { + libraryId, + itemKey, + }; +} + +/** + * Low-level HTTP POST using Node.js http/https modules. + * This avoids Electron's net module (used by requestUrl / fetch) which causes + * net::ERR_EMPTY_RESPONSE when connecting to Zotero's plain HTTP/1.1 server. + */ +function httpPost(endpointUrl: string, body: string): Promise { + return new Promise((resolve, reject) => { + let parsed: URL; + try { + parsed = new URL(endpointUrl); + } catch (e) { + reject(new Error(`Invalid endpoint URL: ${endpointUrl}`)); + return; + } + + const isHttps = parsed.protocol === 'https:'; + const lib = isHttps ? https : http; + const port = parsed.port ? parseInt(parsed.port, 10) : (isHttps ? 443 : 80); + const bodyBuf = Buffer.from(body, 'utf8'); + + const req = lib.request( + { + hostname: parsed.hostname, + port, + path: parsed.pathname + (parsed.search ?? ''), + method: 'POST', + headers: { + 'Content-Type': 'application/json', + Accept: 'application/json', + 'Content-Length': bodyBuf.byteLength, + }, + }, + (res) => { + const chunks: Buffer[] = []; + res.on('data', (chunk: Buffer) => chunks.push(chunk)); + res.on('end', () => resolve(Buffer.concat(chunks).toString('utf8'))); + res.on('error', reject); + }, + ); + + req.on('error', reject); + req.write(bodyBuf); + req.end(); + }); +} + +async function callJsonRpc( + endpointUrl: string, + method: string, + params: unknown[], +): Promise { + const body = JSON.stringify({ + jsonrpc: '2.0', + id: `${Date.now()}-${Math.random().toString(36).slice(2)}`, + method, + params, + }); + + const responseText = await httpPost(endpointUrl, body); + + let payload: JsonRpcResponse; + try { + payload = JSON.parse(responseText) as JsonRpcResponse; + } catch { + throw new Error(`Invalid JSON from Better BibTeX: ${responseText.slice(0, 120)}`); + } + + if ('error' in payload && payload.error) { + throw new Error((payload as JsonRpcErrorResponse).error.message); + } + + return (payload as JsonRpcSuccess).result; +} + +/** + * Primary lookup: use item.search (string query) which returns CSL JSON with the Zotero + * item URI in the 'id' field and the resolved citation key in the 'citekey' field. + * This is the most reliable method because the URI format is stable and contains + * both the library identifier and the item key needed for Zotpress shortcodes. + */ +async function resolveWithSearch( + citekeys: string[], + options: ResolveCitekeysOptions, +): Promise { + const mapped: Record = {}; + + for (const citekey of citekeys) { + try { + // BBT item.search with a plain string searches citationKey among other fields + const results = await callJsonRpc>>( + options.endpointUrl, + 'item.search', + [citekey], + ); + + if (!Array.isArray(results) || results.length === 0) { + console.warn(`[Zotpress] No BBT search results for citekey "${citekey}"`); + continue; + } + + // Prefer an exact citekey match; fall back to the sole result + const item: Record = + results.find((r) => asString(r.citekey) === citekey) ?? + (results.length === 1 ? results[0] : null) as Record; + + if (!item) { + console.warn(`[Zotpress] Exact match not found for "${citekey}" among`, results.map((r) => r.citekey)); + continue; + } + + // The CSL JSON 'id' field is the Zotero item URI, e.g. + // http://zotero.org/users/16058788/items/9ZU64DIJ + const uri = asString(item.id); + if (uri) { + const parsed = parseItemReferenceFromUri(uri); + if (parsed) { + mapped[citekey] = parsed; + console.log(`[Zotpress] Resolved "${citekey}" → ${parsed.libraryId}:${parsed.itemKey}`); + continue; + } + } + + // URI parse failed — try direct field extraction + fallback library id + const extracted = extractFromUnknownItem(item, options.fallbackLibraryId); + if (extracted) { + mapped[citekey] = extracted; + console.log(`[Zotpress] Resolved "${citekey}" via fields → ${extracted.libraryId}:${extracted.itemKey}`); + } else { + console.warn(`[Zotpress] Could not extract libraryId/itemKey for "${citekey}". URI: "${uri}"`); + } + } catch (err) { + console.error(`[Zotpress] item.search failed for "${citekey}":`, err); + } + } + + return { mapped, unresolved: citekeys.filter((k) => !mapped[k]) }; +} + +/** + * Fallback lookup: export the unresolved citekeys via BBT JSON translator. + * BBT JSON includes 'libraryID' and 'itemKey' directly on each item object. + */ +async function resolveWithBbtJsonExport( + citekeys: string[], + options: ResolveCitekeysOptions, +): Promise { + const params: unknown[] = [citekeys, 'BetterBibTeX JSON']; + if (options.librarySelector && options.librarySelector.trim().length > 0) { + params.push(options.librarySelector.trim()); + } + + const exportRaw = await callJsonRpc(options.endpointUrl, 'item.export', params); + const exportJson = JSON.parse(exportRaw) as { + items?: Array>; + }; + + const mapped: Record = {}; + for (const item of exportJson.items ?? []) { + const citekey = asString(item.citationKey); + if (!citekey || !citekeys.includes(citekey)) { + continue; + } + // Try URI first, then direct field extraction + const uriStr = collectStringValues(item).find((s) => parseItemReferenceFromUri(s) !== null); + const parsed = uriStr ? parseItemReferenceFromUri(uriStr) : null; + const resolved = parsed ?? extractFromUnknownItem(item, options.fallbackLibraryId); + if (resolved) { + mapped[citekey] = resolved; + console.log(`[Zotpress] Fallback resolved "${citekey}" → ${resolved.libraryId}:${resolved.itemKey}`); + } + } + + return { mapped, unresolved: citekeys.filter((k) => !mapped[k]) }; +} + +async function resolveCitekeys(citekeys: string[], options: ResolveCitekeysOptions): Promise { + if (citekeys.length === 0) { + return { mapped: {}, unresolved: [] }; + } + + try { + const primary = await resolveWithSearch(citekeys, options); + if (primary.unresolved.length === 0) { + return primary; + } + + console.log(`[Zotpress] ${primary.unresolved.length} citekey(s) unresolved after search, trying export fallback`); + const fallback = await resolveWithBbtJsonExport(primary.unresolved, options); + return { + mapped: { ...primary.mapped, ...fallback.mapped }, + unresolved: fallback.unresolved, + }; + } catch (error) { + const message = error instanceof Error ? error.message : 'Unknown Better BibTeX lookup error'; + console.error('[Zotpress] resolveCitekeys failed:', message); + return { mapped: {}, unresolved: citekeys, error: message }; + } +} + +export async function convertPandocCitationsToZotpress( + content: string, + options: ConvertCitationsOptions, +): Promise { + if (!options.enabled) { + return { + content, + unresolvedCitekeys: [], + }; + } + + const matches = findCitationMatches(content); + if (matches.length === 0) { + return { + content, + unresolvedCitekeys: [], + }; + } + + const citekeys = Array.from(new Set(matches.flatMap((match) => match.entries.map((entry) => entry.key)))); + const resolved = await resolveCitekeys(citekeys, { + endpointUrl: options.endpointUrl, + librarySelector: options.librarySelector, + fallbackLibraryId: options.fallbackLibraryId, + }); + + let output = ''; + let cursor = 0; + for (const match of matches) { + output += content.slice(cursor, match.start); + const canReplace = match.entries.every((entry) => !!resolved.mapped[entry.key]); + output += canReplace ? toZotpressInTextShortcode(match.entries, resolved.mapped) : match.raw; + cursor = match.end; + } + output += content.slice(cursor); + + return { + content: output, + unresolvedCitekeys: resolved.unresolved, + lookupError: resolved.error, + }; +}