pkg-pr-new 0.0.5 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +189 -114
- package/environments.ts +2 -0
- package/index.ts +198 -88
- package/package.json +6 -3
package/dist/index.js
CHANGED
|
@@ -17,28 +17,28 @@ function _defu(baseObject, defaults2, namespace = ".", merger) {
|
|
|
17
17
|
return _defu(baseObject, {}, namespace, merger);
|
|
18
18
|
}
|
|
19
19
|
const object = Object.assign({}, defaults2);
|
|
20
|
-
for (const
|
|
21
|
-
if (
|
|
20
|
+
for (const key in baseObject) {
|
|
21
|
+
if (key === "__proto__" || key === "constructor") {
|
|
22
22
|
continue;
|
|
23
23
|
}
|
|
24
|
-
const value = baseObject[
|
|
24
|
+
const value = baseObject[key];
|
|
25
25
|
if (value === null || value === void 0) {
|
|
26
26
|
continue;
|
|
27
27
|
}
|
|
28
|
-
if (merger && merger(object,
|
|
28
|
+
if (merger && merger(object, key, value, namespace)) {
|
|
29
29
|
continue;
|
|
30
30
|
}
|
|
31
|
-
if (Array.isArray(value) && Array.isArray(object[
|
|
32
|
-
object[
|
|
33
|
-
} else if (isObject(value) && isObject(object[
|
|
34
|
-
object[
|
|
31
|
+
if (Array.isArray(value) && Array.isArray(object[key])) {
|
|
32
|
+
object[key] = [...value, ...object[key]];
|
|
33
|
+
} else if (isObject(value) && isObject(object[key])) {
|
|
34
|
+
object[key] = _defu(
|
|
35
35
|
value,
|
|
36
|
-
object[
|
|
37
|
-
(namespace ? `${namespace}.` : "") +
|
|
36
|
+
object[key],
|
|
37
|
+
(namespace ? `${namespace}.` : "") + key.toString(),
|
|
38
38
|
merger
|
|
39
39
|
);
|
|
40
40
|
} else {
|
|
41
|
-
object[
|
|
41
|
+
object[key] = value;
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
return object;
|
|
@@ -507,7 +507,7 @@ function init(open, close, replace) {
|
|
|
507
507
|
return filterEmpty(`\x1B[${open}m`, `\x1B[${close}m`, replace);
|
|
508
508
|
}
|
|
509
509
|
function createColors(useColor = isColorSupported) {
|
|
510
|
-
return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((
|
|
510
|
+
return useColor ? colorDefs : Object.fromEntries(Object.keys(colorDefs).map((key) => [key, String]));
|
|
511
511
|
}
|
|
512
512
|
function getColor(color, fallback = "reset") {
|
|
513
513
|
return colors[color] || colors[fallback];
|
|
@@ -530,9 +530,9 @@ function box(text2, _opts = {}) {
|
|
|
530
530
|
...typeof opts.style.borderStyle === "string" ? boxStylePresets[opts.style.borderStyle] || boxStylePresets.solid : opts.style.borderStyle
|
|
531
531
|
};
|
|
532
532
|
if (_color) {
|
|
533
|
-
for (const
|
|
534
|
-
borderStyle[
|
|
535
|
-
borderStyle[
|
|
533
|
+
for (const key in borderStyle) {
|
|
534
|
+
borderStyle[key] = _color(
|
|
535
|
+
borderStyle[key]
|
|
536
536
|
);
|
|
537
537
|
}
|
|
538
538
|
}
|
|
@@ -1980,11 +1980,11 @@ function kebabCase(str, joiner) {
|
|
|
1980
1980
|
function toArr(any) {
|
|
1981
1981
|
return any == void 0 ? [] : Array.isArray(any) ? any : [any];
|
|
1982
1982
|
}
|
|
1983
|
-
function toVal(out,
|
|
1983
|
+
function toVal(out, key, val, opts) {
|
|
1984
1984
|
let x;
|
|
1985
|
-
const old = out[
|
|
1986
|
-
const nxt = ~opts.string.indexOf(
|
|
1987
|
-
out[
|
|
1985
|
+
const old = out[key];
|
|
1986
|
+
const nxt = ~opts.string.indexOf(key) ? val == void 0 || val === true ? "" : String(val) : typeof val === "boolean" ? val : ~opts.boolean.indexOf(key) ? val === "false" ? false : val === "true" || (out._.push((x = +val, x * 0 === 0) ? x : val), !!val) : (x = +val, x * 0 === 0) ? x : val;
|
|
1987
|
+
out[key] = old == void 0 ? nxt : Array.isArray(old) ? old.concat(nxt) : [old, nxt];
|
|
1988
1988
|
}
|
|
1989
1989
|
function parseRawArgs(args = [], opts = {}) {
|
|
1990
1990
|
let k;
|
|
@@ -2339,6 +2339,7 @@ async function runMain(cmd, opts = {}) {
|
|
|
2339
2339
|
import assert from "node:assert";
|
|
2340
2340
|
import path from "path";
|
|
2341
2341
|
import ezSpawn from "@jsdevtools/ez-spawn";
|
|
2342
|
+
import { createHash } from "node:crypto";
|
|
2342
2343
|
|
|
2343
2344
|
// ../../node_modules/.pnpm/ohash@1.1.3/node_modules/ohash/dist/index.mjs
|
|
2344
2345
|
var defaults = Object.freeze({
|
|
@@ -2427,27 +2428,27 @@ function createHasher(options) {
|
|
|
2427
2428
|
extraKeys = defaultPrototypesKeys;
|
|
2428
2429
|
}
|
|
2429
2430
|
if (options.excludeKeys) {
|
|
2430
|
-
keys = keys.filter((
|
|
2431
|
-
return !options.excludeKeys(
|
|
2431
|
+
keys = keys.filter((key) => {
|
|
2432
|
+
return !options.excludeKeys(key);
|
|
2432
2433
|
});
|
|
2433
|
-
extraKeys = extraKeys.filter((
|
|
2434
|
-
return !options.excludeKeys(
|
|
2434
|
+
extraKeys = extraKeys.filter((key) => {
|
|
2435
|
+
return !options.excludeKeys(key);
|
|
2435
2436
|
});
|
|
2436
2437
|
}
|
|
2437
2438
|
write("object:" + (keys.length + extraKeys.length) + ":");
|
|
2438
|
-
const dispatchForKey = (
|
|
2439
|
-
this.dispatch(
|
|
2439
|
+
const dispatchForKey = (key) => {
|
|
2440
|
+
this.dispatch(key);
|
|
2440
2441
|
write(":");
|
|
2441
2442
|
if (!options.excludeValues) {
|
|
2442
|
-
this.dispatch(object[
|
|
2443
|
+
this.dispatch(object[key]);
|
|
2443
2444
|
}
|
|
2444
2445
|
write(",");
|
|
2445
2446
|
};
|
|
2446
|
-
for (const
|
|
2447
|
-
dispatchForKey(
|
|
2447
|
+
for (const key of keys) {
|
|
2448
|
+
dispatchForKey(key);
|
|
2448
2449
|
}
|
|
2449
|
-
for (const
|
|
2450
|
-
dispatchForKey(
|
|
2450
|
+
for (const key of extraKeys) {
|
|
2451
|
+
dispatchForKey(key);
|
|
2451
2452
|
}
|
|
2452
2453
|
}
|
|
2453
2454
|
},
|
|
@@ -2464,8 +2465,8 @@ function createHasher(options) {
|
|
|
2464
2465
|
const entries = arr.map((entry) => {
|
|
2465
2466
|
const hasher = createHasher(options);
|
|
2466
2467
|
hasher.dispatch(entry);
|
|
2467
|
-
for (const [
|
|
2468
|
-
contextAdditions.set(
|
|
2468
|
+
for (const [key, value] of hasher.getContext()) {
|
|
2469
|
+
contextAdditions.set(key, value);
|
|
2469
2470
|
}
|
|
2470
2471
|
return hasher.toString();
|
|
2471
2472
|
});
|
|
@@ -2572,8 +2573,8 @@ function createHasher(options) {
|
|
|
2572
2573
|
write("arraybuffer:");
|
|
2573
2574
|
return this.dispatch(new Uint8Array(arr));
|
|
2574
2575
|
},
|
|
2575
|
-
url(
|
|
2576
|
-
return write("url:" +
|
|
2576
|
+
url(url) {
|
|
2577
|
+
return write("url:" + url.toString());
|
|
2577
2578
|
},
|
|
2578
2579
|
map(map) {
|
|
2579
2580
|
write("map:");
|
|
@@ -2943,9 +2944,9 @@ function hash(object, options = {}) {
|
|
|
2943
2944
|
}
|
|
2944
2945
|
|
|
2945
2946
|
// index.ts
|
|
2947
|
+
import fsSync from "fs";
|
|
2946
2948
|
import fs from "fs/promises";
|
|
2947
2949
|
import { Octokit } from "@octokit/action";
|
|
2948
|
-
import { pathToFileURL } from "node:url";
|
|
2949
2950
|
import { getPackageManifest } from "query-registry";
|
|
2950
2951
|
|
|
2951
2952
|
// ../utils/index.ts
|
|
@@ -2953,8 +2954,8 @@ var githubUrlRegex = /(?:git\+)?https?:\/\/github\.com\/([^\/]+\/[^\/]+)\.git/;
|
|
|
2953
2954
|
function extractOwnerAndRepo(repositoryUrl) {
|
|
2954
2955
|
const match = repositoryUrl.match(githubUrlRegex);
|
|
2955
2956
|
if (match) {
|
|
2956
|
-
const [
|
|
2957
|
-
return [
|
|
2957
|
+
const [owner, repo] = match[1].split("/");
|
|
2958
|
+
return [owner, repo];
|
|
2958
2959
|
} else {
|
|
2959
2960
|
return null;
|
|
2960
2961
|
}
|
|
@@ -2965,11 +2966,12 @@ function extractRepository(manifest) {
|
|
|
2965
2966
|
|
|
2966
2967
|
// index.ts
|
|
2967
2968
|
import fg from "fast-glob";
|
|
2969
|
+
import ignore from "ignore";
|
|
2968
2970
|
|
|
2969
2971
|
// package.json
|
|
2970
2972
|
var package_default = {
|
|
2971
2973
|
name: "pkg-pr-new",
|
|
2972
|
-
version: "0.0.
|
|
2974
|
+
version: "0.0.7",
|
|
2973
2975
|
description: "",
|
|
2974
2976
|
main: "index.js",
|
|
2975
2977
|
type: "module",
|
|
@@ -2986,9 +2988,12 @@ var package_default = {
|
|
|
2986
2988
|
license: "ISC",
|
|
2987
2989
|
dependencies: {
|
|
2988
2990
|
"@jsdevtools/ez-spawn": "^3.0.4",
|
|
2991
|
+
"@octokit/action": "^6.1.0",
|
|
2989
2992
|
"fast-glob": "^3.3.2",
|
|
2990
|
-
|
|
2991
|
-
|
|
2993
|
+
ignore: "^5.3.1",
|
|
2994
|
+
isbinaryfile: "^5.0.2",
|
|
2995
|
+
"pkg-types": "^1.1.1",
|
|
2996
|
+
"query-registry": "^3.0.0"
|
|
2992
2997
|
},
|
|
2993
2998
|
devDependencies: {
|
|
2994
2999
|
"@pkg-pr-new/utils": "workspace:^",
|
|
@@ -2998,45 +3003,9 @@ var package_default = {
|
|
|
2998
3003
|
};
|
|
2999
3004
|
|
|
3000
3005
|
// index.ts
|
|
3006
|
+
import { isBinaryFile } from "isbinaryfile";
|
|
3007
|
+
import { readPackageJSON, writePackageJSON } from "pkg-types";
|
|
3001
3008
|
var publishUrl = new URL("/publish", "https://pkg.pr.new/");
|
|
3002
|
-
if (!process.env.TEST && process.env.GITHUB_ACTIONS !== "true") {
|
|
3003
|
-
console.error("Continuous Releases are only available in Github Actions.");
|
|
3004
|
-
process.exit(1);
|
|
3005
|
-
}
|
|
3006
|
-
var octokit = new Octokit();
|
|
3007
|
-
var {
|
|
3008
|
-
GITHUB_SERVER_URL,
|
|
3009
|
-
GITHUB_REPOSITORY,
|
|
3010
|
-
GITHUB_RUN_ID,
|
|
3011
|
-
GITHUB_RUN_ATTEMPT,
|
|
3012
|
-
GITHUB_ACTOR_ID,
|
|
3013
|
-
GITHUB_SHA
|
|
3014
|
-
} = process.env;
|
|
3015
|
-
var [owner, repo] = GITHUB_REPOSITORY.split("/");
|
|
3016
|
-
var checkResponse = await fetch(new URL("/check", "https://pkg.pr.new/"), {
|
|
3017
|
-
method: "POST",
|
|
3018
|
-
body: JSON.stringify({
|
|
3019
|
-
owner,
|
|
3020
|
-
repo
|
|
3021
|
-
})
|
|
3022
|
-
});
|
|
3023
|
-
if (!checkResponse.ok) {
|
|
3024
|
-
console.log(await checkResponse.text());
|
|
3025
|
-
process.exit(1);
|
|
3026
|
-
}
|
|
3027
|
-
var commit = await octokit.git.getCommit({
|
|
3028
|
-
owner,
|
|
3029
|
-
repo,
|
|
3030
|
-
commit_sha: GITHUB_SHA
|
|
3031
|
-
});
|
|
3032
|
-
var commitTimestamp = Date.parse(commit.data.committer.date);
|
|
3033
|
-
var url = `${GITHUB_SERVER_URL}/${owner}/${repo}/actions/runs/${GITHUB_RUN_ID}`;
|
|
3034
|
-
var metadata = {
|
|
3035
|
-
url,
|
|
3036
|
-
attempt: Number(GITHUB_RUN_ATTEMPT),
|
|
3037
|
-
actor: Number(GITHUB_ACTOR_ID)
|
|
3038
|
-
};
|
|
3039
|
-
var key = hash(metadata);
|
|
3040
3009
|
var main = defineCommand({
|
|
3041
3010
|
meta: {
|
|
3042
3011
|
version: package_default.version,
|
|
@@ -3050,65 +3019,147 @@ var main = defineCommand({
|
|
|
3050
3019
|
compact: {
|
|
3051
3020
|
type: "boolean",
|
|
3052
3021
|
description: "compact urls. The shortest form of urls like pkg.pr.new/tinybench@a832a55)"
|
|
3022
|
+
},
|
|
3023
|
+
pnpm: {
|
|
3024
|
+
type: "boolean",
|
|
3025
|
+
description: "use `pnpm pack` instead of `npm pack --json`"
|
|
3026
|
+
},
|
|
3027
|
+
template: {
|
|
3028
|
+
type: "string",
|
|
3029
|
+
description: "generate stackblitz templates out of directories in the current repo with the new built packages"
|
|
3053
3030
|
}
|
|
3054
3031
|
},
|
|
3055
3032
|
run: async ({ args }) => {
|
|
3056
|
-
const compact = !!args.compact;
|
|
3057
3033
|
const paths = (args._.length ? args._ : ["."]).flatMap((p2) => fg.isDynamicPattern(p2) ? fg.sync(p2) : p2).map((p2) => path.resolve(p2));
|
|
3034
|
+
const templates = (typeof args.template === "string" ? [args.template] : [...args.template ?? []]).flatMap((p2) => fg.isDynamicPattern(p2) ? fg.sync(p2) : p2).map((p2) => path.resolve(p2));
|
|
3035
|
+
const formData = new FormData();
|
|
3036
|
+
const isCompact = !!args.compact;
|
|
3037
|
+
const isPnpm = !!args.pnpm;
|
|
3038
|
+
if (!process.env.TEST && process.env.GITHUB_ACTIONS !== "true") {
|
|
3039
|
+
console.error(
|
|
3040
|
+
"Continuous Releases are only available in Github Actions."
|
|
3041
|
+
);
|
|
3042
|
+
process.exit(1);
|
|
3043
|
+
}
|
|
3044
|
+
new Octokit();
|
|
3045
|
+
const {
|
|
3046
|
+
GITHUB_REPOSITORY,
|
|
3047
|
+
GITHUB_RUN_ID,
|
|
3048
|
+
GITHUB_RUN_ATTEMPT,
|
|
3049
|
+
GITHUB_ACTOR_ID,
|
|
3050
|
+
GITHUB_JOB
|
|
3051
|
+
} = process.env;
|
|
3052
|
+
const [owner, repo] = GITHUB_REPOSITORY.split("/");
|
|
3053
|
+
const metadata = {
|
|
3054
|
+
owner,
|
|
3055
|
+
repo,
|
|
3056
|
+
job: GITHUB_JOB,
|
|
3057
|
+
runId: Number(GITHUB_RUN_ID),
|
|
3058
|
+
attempt: Number(GITHUB_RUN_ATTEMPT),
|
|
3059
|
+
actor: Number(GITHUB_ACTOR_ID)
|
|
3060
|
+
};
|
|
3061
|
+
const key = hash(metadata);
|
|
3062
|
+
const checkResponse = await fetch(new URL("/check", "https://pkg.pr.new/"), {
|
|
3063
|
+
method: "POST",
|
|
3064
|
+
body: JSON.stringify({
|
|
3065
|
+
owner,
|
|
3066
|
+
repo,
|
|
3067
|
+
key
|
|
3068
|
+
})
|
|
3069
|
+
});
|
|
3070
|
+
if (!checkResponse.ok) {
|
|
3071
|
+
console.log(await checkResponse.text());
|
|
3072
|
+
process.exit(1);
|
|
3073
|
+
}
|
|
3074
|
+
const { sha } = await checkResponse.json();
|
|
3058
3075
|
const deps = /* @__PURE__ */ new Map();
|
|
3059
|
-
const pJsonContent = /* @__PURE__ */ new Map();
|
|
3060
3076
|
for (const p2 of paths) {
|
|
3061
3077
|
const pJsonPath = path.resolve(p2, "package.json");
|
|
3062
|
-
const
|
|
3063
|
-
if (
|
|
3064
|
-
|
|
3078
|
+
const pJson = await readPackageJSON(pJsonPath);
|
|
3079
|
+
if (!pJson.name) {
|
|
3080
|
+
throw new Error(`"name" field in ${pJsonPath} should be defined`);
|
|
3081
|
+
}
|
|
3082
|
+
if (isCompact) {
|
|
3083
|
+
await verifyCompactMode(pJson.name);
|
|
3065
3084
|
}
|
|
3066
3085
|
deps.set(
|
|
3067
|
-
name,
|
|
3086
|
+
pJson.name,
|
|
3068
3087
|
new URL(
|
|
3069
|
-
`/${owner}/${repo}/${name}@${
|
|
3088
|
+
`/${owner}/${repo}/${pJson.name}@${sha}`,
|
|
3070
3089
|
"https://pkg.pr.new/"
|
|
3071
3090
|
).href
|
|
3072
3091
|
);
|
|
3073
3092
|
}
|
|
3093
|
+
for (const templateDir of templates) {
|
|
3094
|
+
const pJsonPath = path.resolve(templateDir, "package.json");
|
|
3095
|
+
const pJson = await readPackageJSON(pJsonPath);
|
|
3096
|
+
if (!pJson.name) {
|
|
3097
|
+
throw new Error(`"name" field in ${pJsonPath} should be defined`);
|
|
3098
|
+
}
|
|
3099
|
+
console.log("preparing template:", pJson.name);
|
|
3100
|
+
const restore = await writeDeps(templateDir, deps);
|
|
3101
|
+
const gitignorePath = path.join(templateDir, ".gitignore");
|
|
3102
|
+
const ig = ignore();
|
|
3103
|
+
ig.add("node_modules");
|
|
3104
|
+
if (fsSync.existsSync(gitignorePath)) {
|
|
3105
|
+
const gitignoreContent = await fs.readFile(gitignorePath, "utf8");
|
|
3106
|
+
ig.add(gitignoreContent);
|
|
3107
|
+
}
|
|
3108
|
+
const files = await fg(["**/*"], {
|
|
3109
|
+
cwd: templateDir,
|
|
3110
|
+
dot: true,
|
|
3111
|
+
onlyFiles: true
|
|
3112
|
+
});
|
|
3113
|
+
const filteredFiles = files.filter((file) => !ig.ignores(file));
|
|
3114
|
+
for (const filePath of filteredFiles) {
|
|
3115
|
+
const file = await fs.readFile(path.join(templateDir, filePath));
|
|
3116
|
+
const isBinary = await isBinaryFile(file);
|
|
3117
|
+
const blob = new Blob([file.buffer], {
|
|
3118
|
+
type: "application/octet-stream"
|
|
3119
|
+
});
|
|
3120
|
+
formData.append(
|
|
3121
|
+
`template:${pJson.name}:${encodeURIComponent(filePath)}`,
|
|
3122
|
+
isBinary ? blob : await blob.text()
|
|
3123
|
+
);
|
|
3124
|
+
}
|
|
3125
|
+
await restore();
|
|
3126
|
+
}
|
|
3127
|
+
const restoreMap = /* @__PURE__ */ new Map();
|
|
3074
3128
|
for (const p2 of paths) {
|
|
3075
|
-
|
|
3076
|
-
const content = await fs.readFile(pJsonPath, "utf-8");
|
|
3077
|
-
pJsonContent.set(pJsonPath, content);
|
|
3078
|
-
const pJson = await importPackageJson(pJsonPath);
|
|
3079
|
-
hijackDeps(deps, pJson.dependencies);
|
|
3080
|
-
hijackDeps(deps, pJson.devDependencies);
|
|
3081
|
-
await fs.writeFile(pJsonPath, JSON.stringify(pJson));
|
|
3129
|
+
restoreMap.set(p2, await writeDeps(p2, deps));
|
|
3082
3130
|
}
|
|
3083
|
-
const formData = new FormData();
|
|
3084
3131
|
const shasums = {};
|
|
3085
3132
|
for (const p2 of paths) {
|
|
3086
3133
|
const pJsonPath = path.resolve(p2, "package.json");
|
|
3087
3134
|
try {
|
|
3088
|
-
const
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3135
|
+
const pJson = await readPackageJSON(pJsonPath);
|
|
3136
|
+
if (!pJson.name) {
|
|
3137
|
+
throw new Error(
|
|
3138
|
+
`"name" field in ${pJsonPath} should be defined`
|
|
3139
|
+
);
|
|
3140
|
+
}
|
|
3141
|
+
const { filename, shasum } = await resolveTarball(
|
|
3142
|
+
isPnpm ? "pnpm" : "npm",
|
|
3143
|
+
p2
|
|
3144
|
+
);
|
|
3145
|
+
shasums[pJson.name] = shasum;
|
|
3146
|
+
console.log(`shasum for ${pJson.name}(${filename}): ${shasum}`);
|
|
3096
3147
|
const file = await fs.readFile(path.resolve(p2, filename));
|
|
3097
3148
|
const blob = new Blob([file], {
|
|
3098
3149
|
type: "application/octet-stream"
|
|
3099
3150
|
});
|
|
3100
|
-
formData.append(name
|
|
3151
|
+
formData.append(`package:${pJson.name}`, blob, filename);
|
|
3101
3152
|
} finally {
|
|
3102
|
-
await
|
|
3153
|
+
await restoreMap.get(pJsonPath)?.();
|
|
3103
3154
|
}
|
|
3104
3155
|
}
|
|
3105
3156
|
const res = await fetch(publishUrl, {
|
|
3106
3157
|
method: "POST",
|
|
3107
3158
|
headers: {
|
|
3108
|
-
"sb-compact": `${
|
|
3159
|
+
"sb-compact": `${isCompact}`,
|
|
3109
3160
|
"sb-key": key,
|
|
3110
3161
|
"sb-shasums": JSON.stringify(shasums),
|
|
3111
|
-
"sb-
|
|
3162
|
+
"sb-run-id": GITHUB_RUN_ID
|
|
3112
3163
|
},
|
|
3113
3164
|
body: formData
|
|
3114
3165
|
});
|
|
@@ -3121,7 +3172,9 @@ var main = defineCommand({
|
|
|
3121
3172
|
console.log("\n");
|
|
3122
3173
|
console.log(
|
|
3123
3174
|
`\u26A1\uFE0F Your npm packages are published.
|
|
3124
|
-
${[...formData.keys()].
|
|
3175
|
+
${[...formData.keys()].filter((k) => k.startsWith("package:")).map(
|
|
3176
|
+
(name, i) => `${name.slice("package:".length)}: npm i ${laterRes.urls[i]}`
|
|
3177
|
+
).join("\n")}`
|
|
3125
3178
|
);
|
|
3126
3179
|
}
|
|
3127
3180
|
};
|
|
@@ -3136,19 +3189,41 @@ ${[...formData.keys()].map((name, i) => `${name}: \`npm i ${laterRes.urls[i]}\``
|
|
|
3136
3189
|
}
|
|
3137
3190
|
});
|
|
3138
3191
|
runMain(main);
|
|
3139
|
-
async function
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3192
|
+
async function resolveTarball(pm, p2) {
|
|
3193
|
+
if (pm === "npm") {
|
|
3194
|
+
const { stdout: stdout2 } = await ezSpawn.async("npm pack --json", {
|
|
3195
|
+
stdio: "overlapped",
|
|
3196
|
+
cwd: p2
|
|
3197
|
+
});
|
|
3198
|
+
const { filename, shasum } = JSON.parse(stdout2)[0];
|
|
3199
|
+
return { filename, shasum };
|
|
3200
|
+
} else if (pm === "pnpm") {
|
|
3201
|
+
const { stdout: stdout2 } = await ezSpawn.async("pnpm pack", {
|
|
3202
|
+
stdio: "overlapped",
|
|
3203
|
+
cwd: p2
|
|
3204
|
+
});
|
|
3205
|
+
const filename = stdout2.trim();
|
|
3206
|
+
const shasum = createHash("sha1").update(await fs.readFile(path.resolve(p2, filename))).digest("hex");
|
|
3207
|
+
return { filename, shasum };
|
|
3208
|
+
}
|
|
3209
|
+
throw new Error("Could not resolve package manager");
|
|
3210
|
+
}
|
|
3211
|
+
async function writeDeps(p2, deps) {
|
|
3212
|
+
const pJsonPath = path.resolve(p2, "package.json");
|
|
3213
|
+
const content = await fs.readFile(pJsonPath, "utf-8");
|
|
3214
|
+
const pJson = await readPackageJSON(pJsonPath);
|
|
3215
|
+
hijackDeps(deps, pJson.dependencies);
|
|
3216
|
+
hijackDeps(deps, pJson.devDependencies);
|
|
3217
|
+
await writePackageJSON(pJsonPath, pJson);
|
|
3218
|
+
return () => fs.writeFile(pJsonPath, content);
|
|
3144
3219
|
}
|
|
3145
3220
|
function hijackDeps(newDeps, oldDeps) {
|
|
3146
3221
|
if (!oldDeps) {
|
|
3147
3222
|
return;
|
|
3148
3223
|
}
|
|
3149
|
-
for (const [newDep,
|
|
3224
|
+
for (const [newDep, url] of newDeps) {
|
|
3150
3225
|
if (newDep in oldDeps) {
|
|
3151
|
-
oldDeps[newDep] =
|
|
3226
|
+
oldDeps[newDep] = url;
|
|
3152
3227
|
}
|
|
3153
3228
|
}
|
|
3154
3229
|
}
|
|
@@ -3171,4 +3246,4 @@ Make sure to have your package on npm first or configure the 'repository' field
|
|
|
3171
3246
|
throw error;
|
|
3172
3247
|
}
|
|
3173
3248
|
}
|
|
3174
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4yLjMvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9jb3JlLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLjA2YWQ4YTY0Lm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3V0aWxzLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L2NodW5rcy9wcm9tcHQubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3Qvc2hhcmVkL2NvbnNvbGEuMzZjMDAzNGYubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3QvaW5kZXgubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaXR0eUAwLjEuNi9ub2RlX21vZHVsZXMvY2l0dHkvZGlzdC9pbmRleC5tanMiLCAiLi4vaW5kZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL29oYXNoQDEuMS4zL25vZGVfbW9kdWxlcy9vaGFzaC9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi91dGlscy9pbmRleC50cyIsICIuLi9wYWNrYWdlLmpzb24iXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IExvZ0xldmVscyA9IHtcbiAgc2lsZW50OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgbG9nOiAyLFxuICBpbmZvOiAzLFxuICBzdWNjZXNzOiAzLFxuICBmYWlsOiAzLFxuICByZWFkeTogMyxcbiAgc3RhcnQ6IDMsXG4gIGJveDogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxuICB2ZXJib3NlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbn07XG5jb25zdCBMb2dUeXBlcyA9IHtcbiAgLy8gU2lsZW50XG4gIHNpbGVudDoge1xuICAgIGxldmVsOiAtMVxuICB9LFxuICAvLyBMZXZlbCAwXG4gIGZhdGFsOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5mYXRhbFxuICB9LFxuICBlcnJvcjoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZXJyb3JcbiAgfSxcbiAgLy8gTGV2ZWwgMVxuICB3YXJuOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy53YXJuXG4gIH0sXG4gIC8vIExldmVsIDJcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5sb2dcbiAgfSxcbiAgLy8gTGV2ZWwgM1xuICBpbmZvOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5pbmZvXG4gIH0sXG4gIHN1Y2Nlc3M6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLnN1Y2Nlc3NcbiAgfSxcbiAgZmFpbDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZmFpbFxuICB9LFxuICByZWFkeToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBzdGFydDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBib3g6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLmluZm9cbiAgfSxcbiAgLy8gTGV2ZWwgNFxuICBkZWJ1Zzoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZGVidWdcbiAgfSxcbiAgLy8gTGV2ZWwgNVxuICB0cmFjZToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMudHJhY2VcbiAgfSxcbiAgLy8gVmVyYm9zZVxuICB2ZXJib3NlOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy52ZXJib3NlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBfZGVmdShiYXNlT2JqZWN0LCBkZWZhdWx0cywgbmFtZXNwYWNlID0gXCIuXCIsIG1lcmdlcikge1xuICBpZiAoIWlzT2JqZWN0KGRlZmF1bHRzKSkge1xuICAgIHJldHVybiBfZGVmdShiYXNlT2JqZWN0LCB7fSwgbmFtZXNwYWNlLCBtZXJnZXIpO1xuICB9XG4gIGNvbnN0IG9iamVjdCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKTtcbiAgZm9yIChjb25zdCBrZXkgaW4gYmFzZU9iamVjdCkge1xuICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIgfHwga2V5ID09PSBcImNvbnN0cnVjdG9yXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGJhc2VPYmplY3Rba2V5XTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChtZXJnZXIgJiYgbWVyZ2VyKG9iamVjdCwga2V5LCB2YWx1ZSwgbmFtZXNwYWNlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KG9iamVjdFtrZXldKSkge1xuICAgICAgb2JqZWN0W2tleV0gPSBbLi4udmFsdWUsIC4uLm9iamVjdFtrZXldXTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSAmJiBpc09iamVjdChvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gX2RlZnUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvYmplY3Rba2V5XSxcbiAgICAgICAgKG5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX0uYCA6IFwiXCIpICsga2V5LnRvU3RyaW5nKCksXG4gICAgICAgIG1lcmdlclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZnUobWVyZ2VyKSB7XG4gIHJldHVybiAoLi4uYXJndW1lbnRzXykgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LXJlZHVjZVxuICAgIGFyZ3VtZW50c18ucmVkdWNlKChwLCBjKSA9PiBfZGVmdShwLCBjLCBcIlwiLCBtZXJnZXIpLCB7fSlcbiAgKTtcbn1cbmNvbnN0IGRlZnUgPSBjcmVhdGVEZWZ1KCk7XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbn1cbmZ1bmN0aW9uIGlzTG9nT2JqKGFyZykge1xuICBpZiAoIWlzUGxhaW5PYmplY3QoYXJnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWFyZy5tZXNzYWdlICYmICFhcmcuYXJncykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYXJnLnN0YWNrKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5sZXQgcGF1c2VkID0gZmFsc2U7XG5jb25zdCBxdWV1ZSA9IFtdO1xuY2xhc3MgQ29uc29sYSB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHR5cGVzID0gb3B0aW9ucy50eXBlcyB8fCBMb2dUeXBlcztcbiAgICB0aGlzLm9wdGlvbnMgPSBkZWZ1KFxuICAgICAge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBkZWZhdWx0czogeyAuLi5vcHRpb25zLmRlZmF1bHRzIH0sXG4gICAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwob3B0aW9ucy5sZXZlbCwgdHlwZXMpLFxuICAgICAgICByZXBvcnRlcnM6IFsuLi5vcHRpb25zLnJlcG9ydGVycyB8fCBbXV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGVzOiBMb2dUeXBlcyxcbiAgICAgICAgdGhyb3R0bGU6IDFlMyxcbiAgICAgICAgdGhyb3R0bGVNaW46IDUsXG4gICAgICAgIGZvcm1hdE9wdGlvbnM6IHtcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGNvbG9yczogZmFsc2UsXG4gICAgICAgICAgY29tcGFjdDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdHlwZXMpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgICB0eXBlLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVmYXVsdHMsXG4gICAgICAgIC4uLnR5cGVzW3R5cGVdXG4gICAgICB9O1xuICAgICAgdGhpc1t0eXBlXSA9IHRoaXMuX3dyYXBMb2dGbihkZWZhdWx0cyk7XG4gICAgICB0aGlzW3R5cGVdLnJhdyA9IHRoaXMuX3dyYXBMb2dGbihcbiAgICAgICAgZGVmYXVsdHMsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMubW9ja0ZuKSB7XG4gICAgICB0aGlzLm1vY2tUeXBlcygpO1xuICAgIH1cbiAgICB0aGlzLl9sYXN0TG9nID0ge307XG4gIH1cbiAgZ2V0IGxldmVsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGV2ZWw7XG4gIH1cbiAgc2V0IGxldmVsKGxldmVsKSB7XG4gICAgdGhpcy5vcHRpb25zLmxldmVsID0gX25vcm1hbGl6ZUxvZ0xldmVsKFxuICAgICAgbGV2ZWwsXG4gICAgICB0aGlzLm9wdGlvbnMudHlwZXMsXG4gICAgICB0aGlzLm9wdGlvbnMubGV2ZWxcbiAgICApO1xuICB9XG4gIHByb21wdChtZXNzYWdlLCBvcHRzKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucHJvbXB0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcm9tcHQgaXMgbm90IHN1cHBvcnRlZCFcIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJvbXB0KG1lc3NhZ2UsIG9wdHMpO1xuICB9XG4gIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ29uc29sYSh7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuX21vY2tGbikge1xuICAgICAgaW5zdGFuY2UubW9ja1R5cGVzKHRoaXMuX21vY2tGbik7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuICB3aXRoRGVmYXVsdHMoZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi5kZWZhdWx0c1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHdpdGhUYWcodGFnKSB7XG4gICAgcmV0dXJuIHRoaXMud2l0aERlZmF1bHRzKHtcbiAgICAgIHRhZzogdGhpcy5vcHRpb25zLmRlZmF1bHRzLnRhZyA/IHRoaXMub3B0aW9ucy5kZWZhdWx0cy50YWcgKyBcIjpcIiArIHRhZyA6IHRhZ1xuICAgIH0pO1xuICB9XG4gIGFkZFJlcG9ydGVyKHJlcG9ydGVyKSB7XG4gICAgdGhpcy5vcHRpb25zLnJlcG9ydGVycy5wdXNoKHJlcG9ydGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICByZW1vdmVSZXBvcnRlcihyZXBvcnRlcikge1xuICAgIGlmIChyZXBvcnRlcikge1xuICAgICAgY29uc3QgaSA9IHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuaW5kZXhPZihyZXBvcnRlcik7XG4gICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zLnJlcG9ydGVycy5zcGxpY2UoMCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHNldFJlcG9ydGVycyhyZXBvcnRlcnMpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzID0gQXJyYXkuaXNBcnJheShyZXBvcnRlcnMpID8gcmVwb3J0ZXJzIDogW3JlcG9ydGVyc107XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgd3JhcEFsbCgpIHtcbiAgICB0aGlzLndyYXBDb25zb2xlKCk7XG4gICAgdGhpcy53cmFwU3RkKCk7XG4gIH1cbiAgcmVzdG9yZUFsbCgpIHtcbiAgICB0aGlzLnJlc3RvcmVDb25zb2xlKCk7XG4gICAgdGhpcy5yZXN0b3JlU3RkKCk7XG4gIH1cbiAgd3JhcENvbnNvbGUoKSB7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHRoaXMub3B0aW9ucy50eXBlcykge1xuICAgICAgaWYgKCFjb25zb2xlW1wiX19cIiArIHR5cGVdKSB7XG4gICAgICAgIGNvbnNvbGVbXCJfX1wiICsgdHlwZV0gPSBjb25zb2xlW3R5cGVdO1xuICAgICAgfVxuICAgICAgY29uc29sZVt0eXBlXSA9IHRoaXNbdHlwZV0ucmF3O1xuICAgIH1cbiAgfVxuICByZXN0b3JlQ29uc29sZSgpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdGhpcy5vcHRpb25zLnR5cGVzKSB7XG4gICAgICBpZiAoY29uc29sZVtcIl9fXCIgKyB0eXBlXSkge1xuICAgICAgICBjb25zb2xlW3R5cGVdID0gY29uc29sZVtcIl9fXCIgKyB0eXBlXTtcbiAgICAgICAgZGVsZXRlIGNvbnNvbGVbXCJfX1wiICsgdHlwZV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHdyYXBTdGQoKSB7XG4gICAgdGhpcy5fd3JhcFN0cmVhbSh0aGlzLm9wdGlvbnMuc3Rkb3V0LCBcImxvZ1wiKTtcbiAgICB0aGlzLl93cmFwU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRlcnIsIFwibG9nXCIpO1xuICB9XG4gIF93cmFwU3RyZWFtKHN0cmVhbSwgdHlwZSkge1xuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghc3RyZWFtLl9fd3JpdGUpIHtcbiAgICAgIHN0cmVhbS5fX3dyaXRlID0gc3RyZWFtLndyaXRlO1xuICAgIH1cbiAgICBzdHJlYW0ud3JpdGUgPSAoZGF0YSkgPT4ge1xuICAgICAgdGhpc1t0eXBlXS5yYXcoU3RyaW5nKGRhdGEpLnRyaW0oKSk7XG4gICAgfTtcbiAgfVxuICByZXN0b3JlU3RkKCkge1xuICAgIHRoaXMuX3Jlc3RvcmVTdHJlYW0odGhpcy5vcHRpb25zLnN0ZG91dCk7XG4gICAgdGhpcy5fcmVzdG9yZVN0cmVhbSh0aGlzLm9wdGlvbnMuc3RkZXJyKTtcbiAgfVxuICBfcmVzdG9yZVN0cmVhbShzdHJlYW0pIHtcbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RyZWFtLl9fd3JpdGUpIHtcbiAgICAgIHN0cmVhbS53cml0ZSA9IHN0cmVhbS5fX3dyaXRlO1xuICAgICAgZGVsZXRlIHN0cmVhbS5fX3dyaXRlO1xuICAgIH1cbiAgfVxuICBwYXVzZUxvZ3MoKSB7XG4gICAgcGF1c2VkID0gdHJ1ZTtcbiAgfVxuICByZXN1bWVMb2dzKCkge1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGNvbnN0IF9xdWV1ZSA9IHF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgX3F1ZXVlKSB7XG4gICAgICBpdGVtWzBdLl9sb2dGbihpdGVtWzFdLCBpdGVtWzJdKTtcbiAgICB9XG4gIH1cbiAgbW9ja1R5cGVzKG1vY2tGbikge1xuICAgIGNvbnN0IF9tb2NrRm4gPSBtb2NrRm4gfHwgdGhpcy5vcHRpb25zLm1vY2tGbjtcbiAgICB0aGlzLl9tb2NrRm4gPSBfbW9ja0ZuO1xuICAgIGlmICh0eXBlb2YgX21vY2tGbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIHRoaXNbdHlwZV0gPSBfbW9ja0ZuKHR5cGUsIHRoaXMub3B0aW9ucy50eXBlc1t0eXBlXSkgfHwgdGhpc1t0eXBlXTtcbiAgICAgIHRoaXNbdHlwZV0ucmF3ID0gdGhpc1t0eXBlXTtcbiAgICB9XG4gIH1cbiAgX3dyYXBMb2dGbihkZWZhdWx0cywgaXNSYXcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGlmIChwYXVzZWQpIHtcbiAgICAgICAgcXVldWUucHVzaChbdGhpcywgZGVmYXVsdHMsIGFyZ3MsIGlzUmF3XSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9sb2dGbihkZWZhdWx0cywgYXJncywgaXNSYXcpO1xuICAgIH07XG4gIH1cbiAgX2xvZ0ZuKGRlZmF1bHRzLCBhcmdzLCBpc1Jhdykge1xuICAgIGlmICgoZGVmYXVsdHMubGV2ZWwgfHwgMCkgPiB0aGlzLmxldmVsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxvZ09iaiA9IHtcbiAgICAgIGRhdGU6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpLFxuICAgICAgYXJnczogW10sXG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwoZGVmYXVsdHMubGV2ZWwsIHRoaXMub3B0aW9ucy50eXBlcylcbiAgICB9O1xuICAgIGlmICghaXNSYXcgJiYgYXJncy5sZW5ndGggPT09IDEgJiYgaXNMb2dPYmooYXJnc1swXSkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24obG9nT2JqLCBhcmdzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nT2JqLmFyZ3MgPSBbLi4uYXJnc107XG4gICAgfVxuICAgIGlmIChsb2dPYmoubWVzc2FnZSkge1xuICAgICAgbG9nT2JqLmFyZ3MudW5zaGlmdChsb2dPYmoubWVzc2FnZSk7XG4gICAgICBkZWxldGUgbG9nT2JqLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmIChsb2dPYmouYWRkaXRpb25hbCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxvZ09iai5hZGRpdGlvbmFsKSkge1xuICAgICAgICBsb2dPYmouYWRkaXRpb25hbCA9IGxvZ09iai5hZGRpdGlvbmFsLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgfVxuICAgICAgbG9nT2JqLmFyZ3MucHVzaChcIlxcblwiICsgbG9nT2JqLmFkZGl0aW9uYWwuam9pbihcIlxcblwiKSk7XG4gICAgICBkZWxldGUgbG9nT2JqLmFkZGl0aW9uYWw7XG4gICAgfVxuICAgIGxvZ09iai50eXBlID0gdHlwZW9mIGxvZ09iai50eXBlID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnR5cGUudG9Mb3dlckNhc2UoKSA6IFwibG9nXCI7XG4gICAgbG9nT2JqLnRhZyA9IHR5cGVvZiBsb2dPYmoudGFnID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnRhZyA6IFwiXCI7XG4gICAgY29uc3QgcmVzb2x2ZUxvZyA9IChuZXdMb2cgPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgcmVwZWF0ZWQgPSAodGhpcy5fbGFzdExvZy5jb3VudCB8fCAwKSAtIHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbjtcbiAgICAgIGlmICh0aGlzLl9sYXN0TG9nLm9iamVjdCAmJiByZXBlYXRlZCA+IDApIHtcbiAgICAgICAgY29uc3QgYXJnczIgPSBbLi4udGhpcy5fbGFzdExvZy5vYmplY3QuYXJnc107XG4gICAgICAgIGlmIChyZXBlYXRlZCA+IDEpIHtcbiAgICAgICAgICBhcmdzMi5wdXNoKGAocmVwZWF0ZWQgJHtyZXBlYXRlZH0gdGltZXMpYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbG9nKHsgLi4udGhpcy5fbGFzdExvZy5vYmplY3QsIGFyZ3M6IGFyZ3MyIH0pO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLmNvdW50ID0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXdMb2cpIHtcbiAgICAgICAgdGhpcy5fbGFzdExvZy5vYmplY3QgPSBsb2dPYmo7XG4gICAgICAgIHRoaXMuX2xvZyhsb2dPYmopO1xuICAgICAgfVxuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xhc3RMb2cudGltZW91dCk7XG4gICAgY29uc3QgZGlmZlRpbWUgPSB0aGlzLl9sYXN0TG9nLnRpbWUgJiYgbG9nT2JqLmRhdGUgPyBsb2dPYmouZGF0ZS5nZXRUaW1lKCkgLSB0aGlzLl9sYXN0TG9nLnRpbWUuZ2V0VGltZSgpIDogMDtcbiAgICB0aGlzLl9sYXN0TG9nLnRpbWUgPSBsb2dPYmouZGF0ZTtcbiAgICBpZiAoZGlmZlRpbWUgPCB0aGlzLm9wdGlvbnMudGhyb3R0bGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRMb2cgPSBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgbG9nT2JqLnR5cGUsXG4gICAgICAgICAgbG9nT2JqLnRhZyxcbiAgICAgICAgICBsb2dPYmouYXJnc1xuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgaXNTYW1lTG9nID0gdGhpcy5fbGFzdExvZy5zZXJpYWxpemVkID09PSBzZXJpYWxpemVkTG9nO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLnNlcmlhbGl6ZWQgPSBzZXJpYWxpemVkTG9nO1xuICAgICAgICBpZiAoaXNTYW1lTG9nKSB7XG4gICAgICAgICAgdGhpcy5fbGFzdExvZy5jb3VudCA9ICh0aGlzLl9sYXN0TG9nLmNvdW50IHx8IDApICsgMTtcbiAgICAgICAgICBpZiAodGhpcy5fbGFzdExvZy5jb3VudCA+IHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbikge1xuICAgICAgICAgICAgdGhpcy5fbGFzdExvZy50aW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICAgcmVzb2x2ZUxvZyxcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRocm90dGxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc29sdmVMb2codHJ1ZSk7XG4gIH1cbiAgX2xvZyhsb2dPYmopIHtcbiAgICBmb3IgKGNvbnN0IHJlcG9ydGVyIG9mIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMpIHtcbiAgICAgIHJlcG9ydGVyLmxvZyhsb2dPYmosIHtcbiAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVMb2dMZXZlbChpbnB1dCwgdHlwZXMgPSB7fSwgZGVmYXVsdExldmVsID0gMykge1xuICBpZiAoaW5wdXQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0TGV2ZWw7XG4gIH1cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICBpZiAodHlwZXNbaW5wdXRdICYmIHR5cGVzW2lucHV0XS5sZXZlbCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHR5cGVzW2lucHV0XS5sZXZlbDtcbiAgfVxuICByZXR1cm4gZGVmYXVsdExldmVsO1xufVxuQ29uc29sYS5wcm90b3R5cGUuYWRkID0gQ29uc29sYS5wcm90b3R5cGUuYWRkUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS5yZW1vdmUgPSBDb25zb2xhLnByb3RvdHlwZS5yZW1vdmVSZXBvcnRlcjtcbkNvbnNvbGEucHJvdG90eXBlLmNsZWFyID0gQ29uc29sYS5wcm90b3R5cGUucmVtb3ZlUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS53aXRoU2NvcGUgPSBDb25zb2xhLnByb3RvdHlwZS53aXRoVGFnO1xuQ29uc29sYS5wcm90b3R5cGUubW9jayA9IENvbnNvbGEucHJvdG90eXBlLm1vY2tUeXBlcztcbkNvbnNvbGEucHJvdG90eXBlLnBhdXNlID0gQ29uc29sYS5wcm90b3R5cGUucGF1c2VMb2dzO1xuQ29uc29sYS5wcm90b3R5cGUucmVzdW1lID0gQ29uc29sYS5wcm90b3R5cGUucmVzdW1lTG9ncztcbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBuZXcgQ29uc29sYShvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgQ29uc29sYSwgTG9nTGV2ZWxzLCBMb2dUeXBlcywgY3JlYXRlQ29uc29sYSB9O1xuIiwgImltcG9ydCB7IGZvcm1hdFdpdGhPcHRpb25zIH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHNlcCB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmZ1bmN0aW9uIHBhcnNlU3RhY2soc3RhY2spIHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKSArIHNlcDtcbiAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdChcIlxcblwiKS5zcGxpY2UoMSkubWFwKChsKSA9PiBsLnRyaW0oKS5yZXBsYWNlKFwiZmlsZTovL1wiLCBcIlwiKS5yZXBsYWNlKGN3ZCwgXCJcIikpO1xuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3RyZWFtKGRhdGEsIHN0cmVhbSkge1xuICBjb25zdCB3cml0ZSA9IHN0cmVhbS5fX3dyaXRlIHx8IHN0cmVhbS53cml0ZTtcbiAgcmV0dXJuIHdyaXRlLmNhbGwoc3RyZWFtLCBkYXRhKTtcbn1cblxuY29uc3QgYnJhY2tldCA9ICh4KSA9PiB4ID8gYFske3h9XWAgOiBcIlwiO1xuY2xhc3MgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgcmV0dXJuIFwiICBcIiArIHBhcnNlU3RhY2soc3RhY2spLmpvaW4oXCJcXG4gIFwiKTtcbiAgfVxuICBmb3JtYXRBcmdzKGFyZ3MsIG9wdHMpIHtcbiAgICBjb25zdCBfYXJncyA9IGFyZ3MubWFwKChhcmcpID0+IHtcbiAgICAgIGlmIChhcmcgJiYgdHlwZW9mIGFyZy5zdGFjayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gYXJnLm1lc3NhZ2UgKyBcIlxcblwiICsgdGhpcy5mb3JtYXRTdGFjayhhcmcuc3RhY2ssIG9wdHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFyZztcbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybWF0V2l0aE9wdGlvbnMob3B0cywgLi4uX2FyZ3MpO1xuICB9XG4gIGZvcm1hdERhdGUoZGF0ZSwgb3B0cykge1xuICAgIHJldHVybiBvcHRzLmRhdGUgPyBkYXRlLnRvTG9jYWxlVGltZVN0cmluZygpIDogXCJcIjtcbiAgfVxuICBmaWx0ZXJBbmRKb2luKGFycikge1xuICAgIHJldHVybiBhcnIuZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICB9XG4gIGZvcm1hdExvZ09iaihsb2dPYmosIG9wdHMpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKTtcbiAgICBpZiAobG9nT2JqLnR5cGUgPT09IFwiYm94XCIpIHtcbiAgICAgIHJldHVybiBcIlxcblwiICsgW1xuICAgICAgICBicmFja2V0KGxvZ09iai50YWcpLFxuICAgICAgICBsb2dPYmoudGl0bGUgJiYgbG9nT2JqLnRpdGxlLFxuICAgICAgICAuLi5tZXNzYWdlLnNwbGl0KFwiXFxuXCIpXG4gICAgICBdLmZpbHRlcihCb29sZWFuKS5tYXAoKGwpID0+IFwiID4gXCIgKyBsKS5qb2luKFwiXFxuXCIpICsgXCJcXG5cIjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQW5kSm9pbihbXG4gICAgICBicmFja2V0KGxvZ09iai50eXBlKSxcbiAgICAgIGJyYWNrZXQobG9nT2JqLnRhZyksXG4gICAgICBtZXNzYWdlXG4gICAgXSk7XG4gIH1cbiAgbG9nKGxvZ09iaiwgY3R4KSB7XG4gICAgY29uc3QgbGluZSA9IHRoaXMuZm9ybWF0TG9nT2JqKGxvZ09iaiwge1xuICAgICAgY29sdW1uczogY3R4Lm9wdGlvbnMuc3Rkb3V0LmNvbHVtbnMgfHwgMCxcbiAgICAgIC4uLmN0eC5vcHRpb25zLmZvcm1hdE9wdGlvbnNcbiAgICB9KTtcbiAgICByZXR1cm4gd3JpdGVTdHJlYW0oXG4gICAgICBsaW5lICsgXCJcXG5cIixcbiAgICAgIGxvZ09iai5sZXZlbCA8IDIgPyBjdHgub3B0aW9ucy5zdGRlcnIgfHwgcHJvY2Vzcy5zdGRlcnIgOiBjdHgub3B0aW9ucy5zdGRvdXQgfHwgcHJvY2Vzcy5zdGRvdXRcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB7IEJhc2ljUmVwb3J0ZXIgYXMgQiwgcGFyc2VTdGFjayBhcyBwIH07XG4iLCAiaW1wb3J0ICogYXMgdHR5IGZyb20gJ25vZGU6dHR5JztcblxuY29uc3Qge1xuICBlbnYgPSB7fSxcbiAgYXJndiA9IFtdLFxuICBwbGF0Zm9ybSA9IFwiXCJcbn0gPSB0eXBlb2YgcHJvY2VzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IHt9IDogcHJvY2VzcztcbmNvbnN0IGlzRGlzYWJsZWQgPSBcIk5PX0NPTE9SXCIgaW4gZW52IHx8IGFyZ3YuaW5jbHVkZXMoXCItLW5vLWNvbG9yXCIpO1xuY29uc3QgaXNGb3JjZWQgPSBcIkZPUkNFX0NPTE9SXCIgaW4gZW52IHx8IGFyZ3YuaW5jbHVkZXMoXCItLWNvbG9yXCIpO1xuY29uc3QgaXNXaW5kb3dzID0gcGxhdGZvcm0gPT09IFwid2luMzJcIjtcbmNvbnN0IGlzRHVtYlRlcm1pbmFsID0gZW52LlRFUk0gPT09IFwiZHVtYlwiO1xuY29uc3QgaXNDb21wYXRpYmxlVGVybWluYWwgPSB0dHkgJiYgdHR5LmlzYXR0eSAmJiB0dHkuaXNhdHR5KDEpICYmIGVudi5URVJNICYmICFpc0R1bWJUZXJtaW5hbDtcbmNvbnN0IGlzQ0kgPSBcIkNJXCIgaW4gZW52ICYmIChcIkdJVEhVQl9BQ1RJT05TXCIgaW4gZW52IHx8IFwiR0lUTEFCX0NJXCIgaW4gZW52IHx8IFwiQ0lSQ0xFQ0lcIiBpbiBlbnYpO1xuY29uc3QgaXNDb2xvclN1cHBvcnRlZCA9ICFpc0Rpc2FibGVkICYmIChpc0ZvcmNlZCB8fCBpc1dpbmRvd3MgJiYgIWlzRHVtYlRlcm1pbmFsIHx8IGlzQ29tcGF0aWJsZVRlcm1pbmFsIHx8IGlzQ0kpO1xuZnVuY3Rpb24gcmVwbGFjZUNsb3NlKGluZGV4LCBzdHJpbmcsIGNsb3NlLCByZXBsYWNlLCBoZWFkID0gc3RyaW5nLnNsaWNlKDAsIE1hdGgubWF4KDAsIGluZGV4KSkgKyByZXBsYWNlLCB0YWlsID0gc3RyaW5nLnNsaWNlKE1hdGgubWF4KDAsIGluZGV4ICsgY2xvc2UubGVuZ3RoKSksIG5leHQgPSB0YWlsLmluZGV4T2YoY2xvc2UpKSB7XG4gIHJldHVybiBoZWFkICsgKG5leHQgPCAwID8gdGFpbCA6IHJlcGxhY2VDbG9zZShuZXh0LCB0YWlsLCBjbG9zZSwgcmVwbGFjZSkpO1xufVxuZnVuY3Rpb24gY2xlYXJCbGVlZChpbmRleCwgc3RyaW5nLCBvcGVuLCBjbG9zZSwgcmVwbGFjZSkge1xuICByZXR1cm4gaW5kZXggPCAwID8gb3BlbiArIHN0cmluZyArIGNsb3NlIDogb3BlbiArIHJlcGxhY2VDbG9zZShpbmRleCwgc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSkgKyBjbG9zZTtcbn1cbmZ1bmN0aW9uIGZpbHRlckVtcHR5KG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3BlbiwgYXQgPSBvcGVuLmxlbmd0aCArIDEpIHtcbiAgcmV0dXJuIChzdHJpbmcpID0+IHN0cmluZyB8fCAhKHN0cmluZyA9PT0gXCJcIiB8fCBzdHJpbmcgPT09IHZvaWQgMCkgPyBjbGVhckJsZWVkKFxuICAgIChcIlwiICsgc3RyaW5nKS5pbmRleE9mKGNsb3NlLCBhdCksXG4gICAgc3RyaW5nLFxuICAgIG9wZW4sXG4gICAgY2xvc2UsXG4gICAgcmVwbGFjZVxuICApIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGluaXQob3BlbiwgY2xvc2UsIHJlcGxhY2UpIHtcbiAgcmV0dXJuIGZpbHRlckVtcHR5KGBcXHgxQlske29wZW59bWAsIGBcXHgxQlske2Nsb3NlfW1gLCByZXBsYWNlKTtcbn1cbmNvbnN0IGNvbG9yRGVmcyA9IHtcbiAgcmVzZXQ6IGluaXQoMCwgMCksXG4gIGJvbGQ6IGluaXQoMSwgMjIsIFwiXFx4MUJbMjJtXFx4MUJbMW1cIiksXG4gIGRpbTogaW5pdCgyLCAyMiwgXCJcXHgxQlsyMm1cXHgxQlsybVwiKSxcbiAgaXRhbGljOiBpbml0KDMsIDIzKSxcbiAgdW5kZXJsaW5lOiBpbml0KDQsIDI0KSxcbiAgaW52ZXJzZTogaW5pdCg3LCAyNyksXG4gIGhpZGRlbjogaW5pdCg4LCAyOCksXG4gIHN0cmlrZXRocm91Z2g6IGluaXQoOSwgMjkpLFxuICBibGFjazogaW5pdCgzMCwgMzkpLFxuICByZWQ6IGluaXQoMzEsIDM5KSxcbiAgZ3JlZW46IGluaXQoMzIsIDM5KSxcbiAgeWVsbG93OiBpbml0KDMzLCAzOSksXG4gIGJsdWU6IGluaXQoMzQsIDM5KSxcbiAgbWFnZW50YTogaW5pdCgzNSwgMzkpLFxuICBjeWFuOiBpbml0KDM2LCAzOSksXG4gIHdoaXRlOiBpbml0KDM3LCAzOSksXG4gIGdyYXk6IGluaXQoOTAsIDM5KSxcbiAgYmdCbGFjazogaW5pdCg0MCwgNDkpLFxuICBiZ1JlZDogaW5pdCg0MSwgNDkpLFxuICBiZ0dyZWVuOiBpbml0KDQyLCA0OSksXG4gIGJnWWVsbG93OiBpbml0KDQzLCA0OSksXG4gIGJnQmx1ZTogaW5pdCg0NCwgNDkpLFxuICBiZ01hZ2VudGE6IGluaXQoNDUsIDQ5KSxcbiAgYmdDeWFuOiBpbml0KDQ2LCA0OSksXG4gIGJnV2hpdGU6IGluaXQoNDcsIDQ5KSxcbiAgYmxhY2tCcmlnaHQ6IGluaXQoOTAsIDM5KSxcbiAgcmVkQnJpZ2h0OiBpbml0KDkxLCAzOSksXG4gIGdyZWVuQnJpZ2h0OiBpbml0KDkyLCAzOSksXG4gIHllbGxvd0JyaWdodDogaW5pdCg5MywgMzkpLFxuICBibHVlQnJpZ2h0OiBpbml0KDk0LCAzOSksXG4gIG1hZ2VudGFCcmlnaHQ6IGluaXQoOTUsIDM5KSxcbiAgY3lhbkJyaWdodDogaW5pdCg5NiwgMzkpLFxuICB3aGl0ZUJyaWdodDogaW5pdCg5NywgMzkpLFxuICBiZ0JsYWNrQnJpZ2h0OiBpbml0KDEwMCwgNDkpLFxuICBiZ1JlZEJyaWdodDogaW5pdCgxMDEsIDQ5KSxcbiAgYmdHcmVlbkJyaWdodDogaW5pdCgxMDIsIDQ5KSxcbiAgYmdZZWxsb3dCcmlnaHQ6IGluaXQoMTAzLCA0OSksXG4gIGJnQmx1ZUJyaWdodDogaW5pdCgxMDQsIDQ5KSxcbiAgYmdNYWdlbnRhQnJpZ2h0OiBpbml0KDEwNSwgNDkpLFxuICBiZ0N5YW5CcmlnaHQ6IGluaXQoMTA2LCA0OSksXG4gIGJnV2hpdGVCcmlnaHQ6IGluaXQoMTA3LCA0OSlcbn07XG5mdW5jdGlvbiBjcmVhdGVDb2xvcnModXNlQ29sb3IgPSBpc0NvbG9yU3VwcG9ydGVkKSB7XG4gIHJldHVybiB1c2VDb2xvciA/IGNvbG9yRGVmcyA6IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3Qua2V5cyhjb2xvckRlZnMpLm1hcCgoa2V5KSA9PiBba2V5LCBTdHJpbmddKSk7XG59XG5jb25zdCBjb2xvcnMgPSBjcmVhdGVDb2xvcnMoKTtcbmZ1bmN0aW9uIGdldENvbG9yKGNvbG9yLCBmYWxsYmFjayA9IFwicmVzZXRcIikge1xuICByZXR1cm4gY29sb3JzW2NvbG9yXSB8fCBjb2xvcnNbZmFsbGJhY2tdO1xufVxuZnVuY3Rpb24gY29sb3JpemUoY29sb3IsIHRleHQpIHtcbiAgcmV0dXJuIGdldENvbG9yKGNvbG9yKSh0ZXh0KTtcbn1cblxuY29uc3QgYW5zaVJlZ2V4ID0gW1xuICBcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNylcIixcbiAgXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKVwiXG5dLmpvaW4oXCJ8XCIpO1xuZnVuY3Rpb24gc3RyaXBBbnNpKHRleHQpIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZShuZXcgUmVnRXhwKGFuc2lSZWdleCwgXCJnXCIpLCBcIlwiKTtcbn1cbmZ1bmN0aW9uIGNlbnRlckFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGNvbnN0IGZyZWUgPSBsZW4gLSBzdHIubGVuZ3RoO1xuICBpZiAoZnJlZSA8PSAwKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBjb25zdCBmcmVlTGVmdCA9IE1hdGguZmxvb3IoZnJlZSAvIDIpO1xuICBsZXQgX3N0ciA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBfc3RyICs9IGkgPCBmcmVlTGVmdCB8fCBpID49IGZyZWVMZWZ0ICsgc3RyLmxlbmd0aCA/IHNwYWNlIDogc3RyW2kgLSBmcmVlTGVmdF07XG4gIH1cbiAgcmV0dXJuIF9zdHI7XG59XG5mdW5jdGlvbiByaWdodEFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGNvbnN0IGZyZWUgPSBsZW4gLSBzdHIubGVuZ3RoO1xuICBpZiAoZnJlZSA8PSAwKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBsZXQgX3N0ciA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBfc3RyICs9IGkgPCBmcmVlID8gc3BhY2UgOiBzdHJbaSAtIGZyZWVdO1xuICB9XG4gIHJldHVybiBfc3RyO1xufVxuZnVuY3Rpb24gbGVmdEFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IHN0ci5sZW5ndGggPyBzdHJbaV0gOiBzcGFjZTtcbiAgfVxuICByZXR1cm4gX3N0cjtcbn1cbmZ1bmN0aW9uIGFsaWduKGFsaWdubWVudCwgc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICBjYXNlIFwibGVmdFwiOiB7XG4gICAgICByZXR1cm4gbGVmdEFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGNhc2UgXCJyaWdodFwiOiB7XG4gICAgICByZXR1cm4gcmlnaHRBbGlnbihzdHIsIGxlbiwgc3BhY2UpO1xuICAgIH1cbiAgICBjYXNlIFwiY2VudGVyXCI6IHtcbiAgICAgIHJldHVybiBjZW50ZXJBbGlnbihzdHIsIGxlbiwgc3BhY2UpO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBib3hTdHlsZVByZXNldHMgPSB7XG4gIHNvbGlkOiB7XG4gICAgdGw6IFwiXFx1MjUwQ1wiLFxuICAgIHRyOiBcIlxcdTI1MTBcIixcbiAgICBibDogXCJcXHUyNTE0XCIsXG4gICAgYnI6IFwiXFx1MjUxOFwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH0sXG4gIGRvdWJsZToge1xuICAgIHRsOiBcIlxcdTI1NTRcIixcbiAgICB0cjogXCJcXHUyNTU3XCIsXG4gICAgYmw6IFwiXFx1MjU1QVwiLFxuICAgIGJyOiBcIlxcdTI1NURcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBkb3VibGVTaW5nbGU6IHtcbiAgICB0bDogXCJcXHUyNTUzXCIsXG4gICAgdHI6IFwiXFx1MjU1NlwiLFxuICAgIGJsOiBcIlxcdTI1NTlcIixcbiAgICBicjogXCJcXHUyNTVDXCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTUxXCJcbiAgfSxcbiAgZG91YmxlU2luZ2xlUm91bmRlZDoge1xuICAgIHRsOiBcIlxcdTI1NkRcIixcbiAgICB0cjogXCJcXHUyNTZFXCIsXG4gICAgYmw6IFwiXFx1MjU3MFwiLFxuICAgIGJyOiBcIlxcdTI1NkZcIixcbiAgICBoOiBcIlxcdTI1MDBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBzaW5nbGVUaGljazoge1xuICAgIHRsOiBcIlxcdTI1MEZcIixcbiAgICB0cjogXCJcXHUyNTEzXCIsXG4gICAgYmw6IFwiXFx1MjUxN1wiLFxuICAgIGJyOiBcIlxcdTI1MUJcIixcbiAgICBoOiBcIlxcdTI1MDFcIixcbiAgICB2OiBcIlxcdTI1MDNcIlxuICB9LFxuICBzaW5nbGVEb3VibGU6IHtcbiAgICB0bDogXCJcXHUyNTUyXCIsXG4gICAgdHI6IFwiXFx1MjU1NVwiLFxuICAgIGJsOiBcIlxcdTI1NThcIixcbiAgICBicjogXCJcXHUyNTVCXCIsXG4gICAgaDogXCJcXHUyNTUwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfSxcbiAgc2luZ2xlRG91YmxlUm91bmRlZDoge1xuICAgIHRsOiBcIlxcdTI1NkRcIixcbiAgICB0cjogXCJcXHUyNTZFXCIsXG4gICAgYmw6IFwiXFx1MjU3MFwiLFxuICAgIGJyOiBcIlxcdTI1NkZcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1MDJcIlxuICB9LFxuICByb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH1cbn07XG5jb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gIGJvcmRlckNvbG9yOiBcIndoaXRlXCIsXG4gIGJvcmRlclN0eWxlOiBcInJvdW5kZWRcIixcbiAgdmFsaWduOiBcImNlbnRlclwiLFxuICBwYWRkaW5nOiAyLFxuICBtYXJnaW5MZWZ0OiAxLFxuICBtYXJnaW5Ub3A6IDEsXG4gIG1hcmdpbkJvdHRvbTogMVxufTtcbmZ1bmN0aW9uIGJveCh0ZXh0LCBfb3B0cyA9IHt9KSB7XG4gIGNvbnN0IG9wdHMgPSB7XG4gICAgLi4uX29wdHMsXG4gICAgc3R5bGU6IHtcbiAgICAgIC4uLmRlZmF1bHRTdHlsZSxcbiAgICAgIC4uLl9vcHRzLnN0eWxlXG4gICAgfVxuICB9O1xuICBjb25zdCB0ZXh0TGluZXMgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xuICBjb25zdCBib3hMaW5lcyA9IFtdO1xuICBjb25zdCBfY29sb3IgPSBnZXRDb2xvcihvcHRzLnN0eWxlLmJvcmRlckNvbG9yKTtcbiAgY29uc3QgYm9yZGVyU3R5bGUgPSB7XG4gICAgLi4udHlwZW9mIG9wdHMuc3R5bGUuYm9yZGVyU3R5bGUgPT09IFwic3RyaW5nXCIgPyBib3hTdHlsZVByZXNldHNbb3B0cy5zdHlsZS5ib3JkZXJTdHlsZV0gfHwgYm94U3R5bGVQcmVzZXRzLnNvbGlkIDogb3B0cy5zdHlsZS5ib3JkZXJTdHlsZVxuICB9O1xuICBpZiAoX2NvbG9yKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gYm9yZGVyU3R5bGUpIHtcbiAgICAgIGJvcmRlclN0eWxlW2tleV0gPSBfY29sb3IoXG4gICAgICAgIGJvcmRlclN0eWxlW2tleV1cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhZGRpbmdPZmZzZXQgPSBvcHRzLnN0eWxlLnBhZGRpbmcgJSAyID09PSAwID8gb3B0cy5zdHlsZS5wYWRkaW5nIDogb3B0cy5zdHlsZS5wYWRkaW5nICsgMTtcbiAgY29uc3QgaGVpZ2h0ID0gdGV4dExpbmVzLmxlbmd0aCArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IHdpZHRoID0gTWF0aC5tYXgoLi4udGV4dExpbmVzLm1hcCgobGluZSkgPT4gbGluZS5sZW5ndGgpKSArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IHdpZHRoT2Zmc2V0ID0gd2lkdGggKyBwYWRkaW5nT2Zmc2V0O1xuICBjb25zdCBsZWZ0U3BhY2UgPSBvcHRzLnN0eWxlLm1hcmdpbkxlZnQgPiAwID8gXCIgXCIucmVwZWF0KG9wdHMuc3R5bGUubWFyZ2luTGVmdCkgOiBcIlwiO1xuICBpZiAob3B0cy5zdHlsZS5tYXJnaW5Ub3AgPiAwKSB7XG4gICAgYm94TGluZXMucHVzaChcIlwiLnJlcGVhdChvcHRzLnN0eWxlLm1hcmdpblRvcCkpO1xuICB9XG4gIGlmIChvcHRzLnRpdGxlKSB7XG4gICAgY29uc3QgbGVmdCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgTWF0aC5mbG9vcigod2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoKSAvIDIpXG4gICAgKTtcbiAgICBjb25zdCByaWdodCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgd2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoIC0gc3RyaXBBbnNpKGxlZnQpLmxlbmd0aCArIHBhZGRpbmdPZmZzZXRcbiAgICApO1xuICAgIGJveExpbmVzLnB1c2goXG4gICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS50bH0ke2xlZnR9JHtvcHRzLnRpdGxlfSR7cmlnaHR9JHtib3JkZXJTdHlsZS50cn1gXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBib3hMaW5lcy5wdXNoKFxuICAgICAgYCR7bGVmdFNwYWNlfSR7Ym9yZGVyU3R5bGUudGx9JHtib3JkZXJTdHlsZS5oLnJlcGVhdCh3aWR0aE9mZnNldCl9JHtib3JkZXJTdHlsZS50cn1gXG4gICAgKTtcbiAgfVxuICBjb25zdCB2YWxpZ25PZmZzZXQgPSBvcHRzLnN0eWxlLnZhbGlnbiA9PT0gXCJjZW50ZXJcIiA/IE1hdGguZmxvb3IoKGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGgpIC8gMikgOiBvcHRzLnN0eWxlLnZhbGlnbiA9PT0gXCJ0b3BcIiA/IGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGggLSBwYWRkaW5nT2Zmc2V0IDogaGVpZ2h0IC0gdGV4dExpbmVzLmxlbmd0aDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykge1xuICAgIGlmIChpIDwgdmFsaWduT2Zmc2V0IHx8IGkgPj0gdmFsaWduT2Zmc2V0ICsgdGV4dExpbmVzLmxlbmd0aCkge1xuICAgICAgYm94TGluZXMucHVzaChcbiAgICAgICAgYCR7bGVmdFNwYWNlfSR7Ym9yZGVyU3R5bGUudn0ke1wiIFwiLnJlcGVhdCh3aWR0aE9mZnNldCl9JHtib3JkZXJTdHlsZS52fWBcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmUgPSB0ZXh0TGluZXNbaSAtIHZhbGlnbk9mZnNldF07XG4gICAgICBjb25zdCBsZWZ0ID0gXCIgXCIucmVwZWF0KHBhZGRpbmdPZmZzZXQpO1xuICAgICAgY29uc3QgcmlnaHQgPSBcIiBcIi5yZXBlYXQod2lkdGggLSBzdHJpcEFuc2kobGluZSkubGVuZ3RoKTtcbiAgICAgIGJveExpbmVzLnB1c2goXG4gICAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnZ9JHtsZWZ0fSR7bGluZX0ke3JpZ2h0fSR7Ym9yZGVyU3R5bGUudn1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBib3hMaW5lcy5wdXNoKFxuICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLmJsfSR7Ym9yZGVyU3R5bGUuaC5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUuYnJ9YFxuICApO1xuICBpZiAob3B0cy5zdHlsZS5tYXJnaW5Cb3R0b20gPiAwKSB7XG4gICAgYm94TGluZXMucHVzaChcIlwiLnJlcGVhdChvcHRzLnN0eWxlLm1hcmdpbkJvdHRvbSkpO1xuICB9XG4gIHJldHVybiBib3hMaW5lcy5qb2luKFwiXFxuXCIpO1xufVxuXG5leHBvcnQgeyBhbGlnbiwgYm94LCBjZW50ZXJBbGlnbiwgY29sb3JpemUsIGNvbG9ycywgZ2V0Q29sb3IsIGxlZnRBbGlnbiwgcmlnaHRBbGlnbiwgc3RyaXBBbnNpIH07XG4iLCAiaW1wb3J0IHsgc3RkaW4sIHN0ZG91dCB9IGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgZiBmcm9tICdub2RlOnJlYWRsaW5lJztcbmltcG9ydCB7IFdyaXRlU3RyZWFtIH0gZnJvbSAnbm9kZTp0dHknO1xuaW1wb3J0IHsgZyBhcyBnZXREZWZhdWx0RXhwb3J0RnJvbUNqcywgaSBhcyBpc1VuaWNvZGVTdXBwb3J0ZWQgfSBmcm9tICcuLi9zaGFyZWQvY29uc29sYS4zNmMwMDM0Zi5tanMnO1xuaW1wb3J0IHJlcXVpcmUkJDAgZnJvbSAndHR5JztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJy4uL3V0aWxzLm1qcyc7XG5pbXBvcnQgJy4uL2NvcmUubWpzJztcbmltcG9ydCAnLi4vc2hhcmVkL2NvbnNvbGEuMDZhZDhhNjQubWpzJztcbmltcG9ydCAnbm9kZTp1dGlsJztcbmltcG9ydCAnbm9kZTpwYXRoJztcblxuY29uc3QgRVNDID0gJ1xceDFCJztcbmNvbnN0IENTSSA9IGAke0VTQ31bYDtcbmNvbnN0IGJlZXAgPSAnXFx1MDAwNyc7XG5cbmNvbnN0IGN1cnNvciA9IHtcbiAgdG8oeCwgeSkge1xuICAgIGlmICgheSkgcmV0dXJuIGAke0NTSX0ke3ggKyAxfUdgO1xuICAgIHJldHVybiBgJHtDU0l9JHt5ICsgMX07JHt4ICsgMX1IYDtcbiAgfSxcbiAgbW92ZSh4LCB5KSB7XG4gICAgbGV0IHJldCA9ICcnO1xuXG4gICAgaWYgKHggPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXh9RGA7XG4gICAgZWxzZSBpZiAoeCA+IDApIHJldCArPSBgJHtDU0l9JHt4fUNgO1xuXG4gICAgaWYgKHkgPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG4gICAgZWxzZSBpZiAoeSA+IDApIHJldCArPSBgJHtDU0l9JHt5fUJgO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fUFgLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1CYCxcbiAgZm9yd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9Q2AsXG4gIGJhY2t3YXJkOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1EYCxcbiAgbmV4dExpbmU6IChjb3VudCA9IDEpID0+IGAke0NTSX1FYC5yZXBlYXQoY291bnQpLFxuICBwcmV2TGluZTogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUZgLnJlcGVhdChjb3VudCksXG4gIGxlZnQ6IGAke0NTSX1HYCxcbiAgaGlkZTogYCR7Q1NJfT8yNWxgLFxuICBzaG93OiBgJHtDU0l9PzI1aGAsXG4gIHNhdmU6IGAke0VTQ303YCxcbiAgcmVzdG9yZTogYCR7RVNDfThgXG59O1xuXG5jb25zdCBzY3JvbGwgPSB7XG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9U2AucmVwZWF0KGNvdW50KSxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVRgLnJlcGVhdChjb3VudClcbn07XG5cbmNvbnN0IGVyYXNlID0ge1xuICBzY3JlZW46IGAke0NTSX0ySmAsXG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9MUpgLnJlcGVhdChjb3VudCksXG4gIGRvd246IChjb3VudCA9IDEpID0+IGAke0NTSX1KYC5yZXBlYXQoY291bnQpLFxuICBsaW5lOiBgJHtDU0l9MktgLFxuICBsaW5lRW5kOiBgJHtDU0l9S2AsXG4gIGxpbmVTdGFydDogYCR7Q1NJfTFLYCxcbiAgbGluZXMoY291bnQpIHtcbiAgICBsZXQgY2xlYXIgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspXG4gICAgICBjbGVhciArPSB0aGlzLmxpbmUgKyAoaSA8IGNvdW50IC0gMSA/IGN1cnNvci51cCgpIDogJycpO1xuICAgIGlmIChjb3VudClcbiAgICAgIGNsZWFyICs9IGN1cnNvci5sZWZ0O1xuICAgIHJldHVybiBjbGVhcjtcbiAgfVxufTtcblxudmFyIHNyYyA9IHsgY3Vyc29yLCBzY3JvbGwsIGVyYXNlLCBiZWVwIH07XG5cbnZhciBwaWNvY29sb3JzID0ge2V4cG9ydHM6IHt9fTtcblxubGV0IHR0eSA9IHJlcXVpcmUkJDA7XG5cbmxldCBpc0NvbG9yU3VwcG9ydGVkID1cblx0IShcIk5PX0NPTE9SXCIgaW4gcHJvY2Vzcy5lbnYgfHwgcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiZcblx0KFwiRk9SQ0VfQ09MT1JcIiBpbiBwcm9jZXNzLmVudiB8fFxuXHRcdHByb2Nlc3MuYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHxcblx0XHRwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgfHxcblx0XHQodHR5LmlzYXR0eSgxKSAmJiBwcm9jZXNzLmVudi5URVJNICE9PSBcImR1bWJcIikgfHxcblx0XHRcIkNJXCIgaW4gcHJvY2Vzcy5lbnYpO1xuXG5sZXQgZm9ybWF0dGVyID1cblx0KG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3BlbikgPT5cblx0aW5wdXQgPT4ge1xuXHRcdGxldCBzdHJpbmcgPSBcIlwiICsgaW5wdXQ7XG5cdFx0bGV0IGluZGV4ID0gc3RyaW5nLmluZGV4T2YoY2xvc2UsIG9wZW4ubGVuZ3RoKTtcblx0XHRyZXR1cm4gfmluZGV4XG5cdFx0XHQ/IG9wZW4gKyByZXBsYWNlQ2xvc2Uoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpICsgY2xvc2Vcblx0XHRcdDogb3BlbiArIHN0cmluZyArIGNsb3NlXG5cdH07XG5cbmxldCByZXBsYWNlQ2xvc2UgPSAoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpID0+IHtcblx0bGV0IHN0YXJ0ID0gc3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlO1xuXHRsZXQgZW5kID0gc3RyaW5nLnN1YnN0cmluZyhpbmRleCArIGNsb3NlLmxlbmd0aCk7XG5cdGxldCBuZXh0SW5kZXggPSBlbmQuaW5kZXhPZihjbG9zZSk7XG5cdHJldHVybiB+bmV4dEluZGV4ID8gc3RhcnQgKyByZXBsYWNlQ2xvc2UoZW5kLCBjbG9zZSwgcmVwbGFjZSwgbmV4dEluZGV4KSA6IHN0YXJ0ICsgZW5kXG59O1xuXG5sZXQgY3JlYXRlQ29sb3JzID0gKGVuYWJsZWQgPSBpc0NvbG9yU3VwcG9ydGVkKSA9PiAoe1xuXHRpc0NvbG9yU3VwcG9ydGVkOiBlbmFibGVkLFxuXHRyZXNldDogZW5hYmxlZCA/IHMgPT4gYFxceDFiWzBtJHtzfVxceDFiWzBtYCA6IFN0cmluZyxcblx0Ym9sZDogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzFtXCIsIFwiXFx4MWJbMjJtXCIsIFwiXFx4MWJbMjJtXFx4MWJbMW1cIikgOiBTdHJpbmcsXG5cdGRpbTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzJtXCIsIFwiXFx4MWJbMjJtXCIsIFwiXFx4MWJbMjJtXFx4MWJbMm1cIikgOiBTdHJpbmcsXG5cdGl0YWxpYzogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzNtXCIsIFwiXFx4MWJbMjNtXCIpIDogU3RyaW5nLFxuXHR1bmRlcmxpbmU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0bVwiLCBcIlxceDFiWzI0bVwiKSA6IFN0cmluZyxcblx0aW52ZXJzZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzdtXCIsIFwiXFx4MWJbMjdtXCIpIDogU3RyaW5nLFxuXHRoaWRkZW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls4bVwiLCBcIlxceDFiWzI4bVwiKSA6IFN0cmluZyxcblx0c3RyaWtldGhyb3VnaDogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzltXCIsIFwiXFx4MWJbMjltXCIpIDogU3RyaW5nLFxuXHRibGFjazogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzMwbVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0cmVkOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzFtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRncmVlbjogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzMybVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0eWVsbG93OiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzNtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRibHVlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzRtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRtYWdlbnRhOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzVtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRjeWFuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzZtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHR3aGl0ZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzM3bVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0Z3JheTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzkwbVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0YmdCbGFjazogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQwbVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdSZWQ6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0MW1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnR3JlZW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0Mm1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnWWVsbG93OiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDNtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ0JsdWU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0NG1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnTWFnZW50YTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQ1bVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdDeWFuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDZtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ1doaXRlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDdtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxufSk7XG5cbnBpY29jb2xvcnMuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpO1xucGljb2NvbG9ycy5leHBvcnRzLmNyZWF0ZUNvbG9ycyA9IGNyZWF0ZUNvbG9ycztcblxudmFyIHBpY29jb2xvcnNFeHBvcnRzID0gcGljb2NvbG9ycy5leHBvcnRzO1xuY29uc3QgbCA9IC8qQF9fUFVSRV9fKi9nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhwaWNvY29sb3JzRXhwb3J0cyk7XG5cbmZ1bmN0aW9uIHooe29ubHlGaXJzdDp0PSExfT17fSl7Y29uc3QgdT1bXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpXCIsXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiXS5qb2luKFwifFwiKTtyZXR1cm4gbmV3IFJlZ0V4cCh1LHQ/dm9pZCAwOlwiZ1wiKX1mdW5jdGlvbiAkKHQpe2lmKHR5cGVvZiB0IT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIGEgXFxgc3RyaW5nXFxgLCBnb3QgXFxgJHt0eXBlb2YgdH1cXGBgKTtyZXR1cm4gdC5yZXBsYWNlKHooKSxcIlwiKX12YXIgbT17fSxHPXtnZXQgZXhwb3J0cygpe3JldHVybiBtfSxzZXQgZXhwb3J0cyh0KXttPXQ7fX07KGZ1bmN0aW9uKHQpe3ZhciB1PXt9O3QuZXhwb3J0cz11LHUuZWFzdEFzaWFuV2lkdGg9ZnVuY3Rpb24oZSl7dmFyIHM9ZS5jaGFyQ29kZUF0KDApLEM9ZS5sZW5ndGg9PTI/ZS5jaGFyQ29kZUF0KDEpOjAsRD1zO3JldHVybiA1NTI5Njw9cyYmczw9NTYzMTkmJjU2MzIwPD1DJiZDPD01NzM0MyYmKHMmPTEwMjMsQyY9MTAyMyxEPXM8PDEwfEMsRCs9NjU1MzYpLEQ9PTEyMjg4fHw2NTI4MTw9RCYmRDw9NjUzNzZ8fDY1NTA0PD1EJiZEPD02NTUxMD9cIkZcIjpEPT04MzYxfHw2NTM3Nzw9RCYmRDw9NjU0NzB8fDY1NDc0PD1EJiZEPD02NTQ3OXx8NjU0ODI8PUQmJkQ8PTY1NDg3fHw2NTQ5MDw9RCYmRDw9NjU0OTV8fDY1NDk4PD1EJiZEPD02NTUwMHx8NjU1MTI8PUQmJkQ8PTY1NTE4P1wiSFwiOjQzNTI8PUQmJkQ8PTQ0NDd8fDQ1MTU8PUQmJkQ8PTQ1MTl8fDQ2MDI8PUQmJkQ8PTQ2MDd8fDkwMDE8PUQmJkQ8PTkwMDJ8fDExOTA0PD1EJiZEPD0xMTkyOXx8MTE5MzE8PUQmJkQ8PTEyMDE5fHwxMjAzMjw9RCYmRDw9MTIyNDV8fDEyMjcyPD1EJiZEPD0xMjI4M3x8MTIyODk8PUQmJkQ8PTEyMzUwfHwxMjM1Mzw9RCYmRDw9MTI0Mzh8fDEyNDQxPD1EJiZEPD0xMjU0M3x8MTI1NDk8PUQmJkQ8PTEyNTg5fHwxMjU5Mzw9RCYmRDw9MTI2ODZ8fDEyNjg4PD1EJiZEPD0xMjczMHx8MTI3MzY8PUQmJkQ8PTEyNzcxfHwxMjc4NDw9RCYmRDw9MTI4MzB8fDEyODMyPD1EJiZEPD0xMjg3MXx8MTI4ODA8PUQmJkQ8PTEzMDU0fHwxMzA1Njw9RCYmRDw9MTk5MDN8fDE5OTY4PD1EJiZEPD00MjEyNHx8NDIxMjg8PUQmJkQ8PTQyMTgyfHw0MzM2MDw9RCYmRDw9NDMzODh8fDQ0MDMyPD1EJiZEPD01NTIwM3x8NTUyMTY8PUQmJkQ8PTU1MjM4fHw1NTI0Mzw9RCYmRDw9NTUyOTF8fDYzNzQ0PD1EJiZEPD02NDI1NXx8NjUwNDA8PUQmJkQ8PTY1MDQ5fHw2NTA3Mjw9RCYmRDw9NjUxMDZ8fDY1MTA4PD1EJiZEPD02NTEyNnx8NjUxMjg8PUQmJkQ8PTY1MTMxfHwxMTA1OTI8PUQmJkQ8PTExMDU5M3x8MTI3NDg4PD1EJiZEPD0xMjc0OTB8fDEyNzUwNDw9RCYmRDw9MTI3NTQ2fHwxMjc1NTI8PUQmJkQ8PTEyNzU2MHx8MTI3NTY4PD1EJiZEPD0xMjc1Njl8fDEzMTA3Mjw9RCYmRDw9MTk0MzY3fHwxNzc5ODQ8PUQmJkQ8PTE5NjYwNXx8MTk2NjA4PD1EJiZEPD0yNjIxNDE/XCJXXCI6MzI8PUQmJkQ8PTEyNnx8MTYyPD1EJiZEPD0xNjN8fDE2NTw9RCYmRDw9MTY2fHxEPT0xNzJ8fEQ9PTE3NXx8MTAyMTQ8PUQmJkQ8PTEwMjIxfHwxMDYyOTw9RCYmRDw9MTA2MzA/XCJOYVwiOkQ9PTE2MXx8RD09MTY0fHwxNjc8PUQmJkQ8PTE2OHx8RD09MTcwfHwxNzM8PUQmJkQ8PTE3NHx8MTc2PD1EJiZEPD0xODB8fDE4Mjw9RCYmRDw9MTg2fHwxODg8PUQmJkQ8PTE5MXx8RD09MTk4fHxEPT0yMDh8fDIxNTw9RCYmRDw9MjE2fHwyMjI8PUQmJkQ8PTIyNXx8RD09MjMwfHwyMzI8PUQmJkQ8PTIzNHx8MjM2PD1EJiZEPD0yMzd8fEQ9PTI0MHx8MjQyPD1EJiZEPD0yNDN8fDI0Nzw9RCYmRDw9MjUwfHxEPT0yNTJ8fEQ9PTI1NHx8RD09MjU3fHxEPT0yNzN8fEQ9PTI3NXx8RD09MjgzfHwyOTQ8PUQmJkQ8PTI5NXx8RD09Mjk5fHwzMDU8PUQmJkQ8PTMwN3x8RD09MzEyfHwzMTk8PUQmJkQ8PTMyMnx8RD09MzI0fHwzMjg8PUQmJkQ8PTMzMXx8RD09MzMzfHwzMzg8PUQmJkQ8PTMzOXx8MzU4PD1EJiZEPD0zNTl8fEQ9PTM2M3x8RD09NDYyfHxEPT00NjR8fEQ9PTQ2Nnx8RD09NDY4fHxEPT00NzB8fEQ9PTQ3Mnx8RD09NDc0fHxEPT00NzZ8fEQ9PTU5M3x8RD09NjA5fHxEPT03MDh8fEQ9PTcxMXx8NzEzPD1EJiZEPD03MTV8fEQ9PTcxN3x8RD09NzIwfHw3Mjg8PUQmJkQ8PTczMXx8RD09NzMzfHxEPT03MzV8fDc2ODw9RCYmRDw9ODc5fHw5MTM8PUQmJkQ8PTkyOXx8OTMxPD1EJiZEPD05Mzd8fDk0NTw9RCYmRDw9OTYxfHw5NjM8PUQmJkQ8PTk2OXx8RD09MTAyNXx8MTA0MDw9RCYmRDw9MTEwM3x8RD09MTEwNXx8RD09ODIwOHx8ODIxMTw9RCYmRDw9ODIxNHx8ODIxNjw9RCYmRDw9ODIxN3x8ODIyMDw9RCYmRDw9ODIyMXx8ODIyNDw9RCYmRDw9ODIyNnx8ODIyODw9RCYmRDw9ODIzMXx8RD09ODI0MHx8ODI0Mjw9RCYmRDw9ODI0M3x8RD09ODI0NXx8RD09ODI1MXx8RD09ODI1NHx8RD09ODMwOHx8RD09ODMxOXx8ODMyMTw9RCYmRDw9ODMyNHx8RD09ODM2NHx8RD09ODQ1MXx8RD09ODQ1M3x8RD09ODQ1N3x8RD09ODQ2N3x8RD09ODQ3MHx8ODQ4MTw9RCYmRDw9ODQ4Mnx8RD09ODQ4Nnx8RD09ODQ5MXx8ODUzMTw9RCYmRDw9ODUzMnx8ODUzOTw9RCYmRDw9ODU0Mnx8ODU0NDw9RCYmRDw9ODU1NXx8ODU2MDw9RCYmRDw9ODU2OXx8RD09ODU4NXx8ODU5Mjw9RCYmRDw9ODYwMXx8ODYzMjw9RCYmRDw9ODYzM3x8RD09ODY1OHx8RD09ODY2MHx8RD09ODY3OXx8RD09ODcwNHx8ODcwNjw9RCYmRDw9ODcwN3x8ODcxMTw9RCYmRDw9ODcxMnx8RD09ODcxNXx8RD09ODcxOXx8RD09ODcyMXx8RD09ODcyNXx8RD09ODczMHx8ODczMzw9RCYmRDw9ODczNnx8RD09ODczOXx8RD09ODc0MXx8ODc0Mzw9RCYmRDw9ODc0OHx8RD09ODc1MHx8ODc1Njw9RCYmRDw9ODc1OXx8ODc2NDw9RCYmRDw9ODc2NXx8RD09ODc3Nnx8RD09ODc4MHx8RD09ODc4Nnx8ODgwMDw9RCYmRDw9ODgwMXx8ODgwNDw9RCYmRDw9ODgwN3x8ODgxMDw9RCYmRDw9ODgxMXx8ODgxNDw9RCYmRDw9ODgxNXx8ODgzNDw9RCYmRDw9ODgzNXx8ODgzODw9RCYmRDw9ODgzOXx8RD09ODg1M3x8RD09ODg1N3x8RD09ODg2OXx8RD09ODg5NXx8RD09ODk3OHx8OTMxMjw9RCYmRDw9OTQ0OXx8OTQ1MTw9RCYmRDw9OTU0N3x8OTU1Mjw9RCYmRDw9OTU4N3x8OTYwMDw9RCYmRDw9OTYxNXx8OTYxODw9RCYmRDw9OTYyMXx8OTYzMjw9RCYmRDw9OTYzM3x8OTYzNTw9RCYmRDw9OTY0MXx8OTY1MDw9RCYmRDw9OTY1MXx8OTY1NDw9RCYmRDw9OTY1NXx8OTY2MDw9RCYmRDw9OTY2MXx8OTY2NDw9RCYmRDw9OTY2NXx8OTY3MDw9RCYmRDw9OTY3Mnx8RD09OTY3NXx8OTY3ODw9RCYmRDw9OTY4MXx8OTY5ODw9RCYmRDw9OTcwMXx8RD09OTcxMXx8OTczMzw9RCYmRDw9OTczNHx8RD09OTczN3x8OTc0Mjw9RCYmRDw9OTc0M3x8OTc0ODw9RCYmRDw9OTc0OXx8RD09OTc1Nnx8RD09OTc1OHx8RD09OTc5Mnx8RD09OTc5NHx8OTgyNDw9RCYmRDw9OTgyNXx8OTgyNzw9RCYmRDw9OTgyOXx8OTgzMTw9RCYmRDw9OTgzNHx8OTgzNjw9RCYmRDw9OTgzN3x8RD09OTgzOXx8OTg4Njw9RCYmRDw9OTg4N3x8OTkxODw9RCYmRDw9OTkxOXx8OTkyNDw9RCYmRDw9OTkzM3x8OTkzNTw9RCYmRDw9OTk1M3x8RD09OTk1NXx8OTk2MDw9RCYmRDw9OTk4M3x8RD09MTAwNDV8fEQ9PTEwMDcxfHwxMDEwMjw9RCYmRDw9MTAxMTF8fDExMDkzPD1EJiZEPD0xMTA5N3x8MTI4NzI8PUQmJkQ8PTEyODc5fHw1NzM0NDw9RCYmRDw9NjM3NDN8fDY1MDI0PD1EJiZEPD02NTAzOXx8RD09NjU1MzN8fDEyNzIzMjw9RCYmRDw9MTI3MjQyfHwxMjcyNDg8PUQmJkQ8PTEyNzI3N3x8MTI3MjgwPD1EJiZEPD0xMjczMzd8fDEyNzM0NDw9RCYmRDw9MTI3Mzg2fHw5MTc3NjA8PUQmJkQ8PTkxNzk5OXx8OTgzMDQwPD1EJiZEPD0xMDQ4NTczfHwxMDQ4NTc2PD1EJiZEPD0xMTE0MTA5P1wiQVwiOlwiTlwifSx1LmNoYXJhY3Rlckxlbmd0aD1mdW5jdGlvbihlKXt2YXIgcz10aGlzLmVhc3RBc2lhbldpZHRoKGUpO3JldHVybiBzPT1cIkZcInx8cz09XCJXXCJ8fHM9PVwiQVwiPzI6MX07ZnVuY3Rpb24gRihlKXtyZXR1cm4gZS5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZyl8fFtdfXUubGVuZ3RoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcz1GKGUpLEM9MCxEPTA7RDxzLmxlbmd0aDtEKyspQz1DK3RoaXMuY2hhcmFjdGVyTGVuZ3RoKHNbRF0pO3JldHVybiBDfSx1LnNsaWNlPWZ1bmN0aW9uKGUscyxDKXt0ZXh0TGVuPXUubGVuZ3RoKGUpLHM9c3x8MCxDPUN8fDEsczwwJiYocz10ZXh0TGVuK3MpLEM8MCYmKEM9dGV4dExlbitDKTtmb3IodmFyIEQ9XCJcIixpPTAsbz1GKGUpLEU9MDtFPG8ubGVuZ3RoO0UrKyl7dmFyIGE9b1tFXSxuPXUubGVuZ3RoKGEpO2lmKGk+PXMtKG49PTI/MTowKSlpZihpK248PUMpRCs9YTtlbHNlIGJyZWFrO2krPW47fXJldHVybiBEfTt9KShHKTtjb25zdCBLPW07dmFyIFk9ZnVuY3Rpb24oKXtyZXR1cm4gL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ307ZnVuY3Rpb24gYyh0LHU9e30pe2lmKHR5cGVvZiB0IT1cInN0cmluZ1wifHx0Lmxlbmd0aD09PTB8fCh1PXthbWJpZ3VvdXNJc05hcnJvdzohMCwuLi51fSx0PSQodCksdC5sZW5ndGg9PT0wKSlyZXR1cm4gMDt0PXQucmVwbGFjZShZKCksXCIgIFwiKTtjb25zdCBGPXUuYW1iaWd1b3VzSXNOYXJyb3c/MToyO2xldCBlPTA7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgQz1zLmNvZGVQb2ludEF0KDApO2lmKEM8PTMxfHxDPj0xMjcmJkM8PTE1OXx8Qz49NzY4JiZDPD04NzkpY29udGludWU7c3dpdGNoKEsuZWFzdEFzaWFuV2lkdGgocykpe2Nhc2VcIkZcIjpjYXNlXCJXXCI6ZSs9MjticmVhaztjYXNlXCJBXCI6ZSs9RjticmVhaztkZWZhdWx0OmUrPTE7fX1yZXR1cm4gZX1jb25zdCB2PTEwLEw9KHQ9MCk9PnU9PmBcXHgxQlske3UrdH1tYCxNPSh0PTApPT51PT5gXFx4MUJbJHszOCt0fTs1OyR7dX1tYCxUPSh0PTApPT4odSxGLGUpPT5gXFx4MUJbJHszOCt0fTsyOyR7dX07JHtGfTske2V9bWAscj17bW9kaWZpZXI6e3Jlc2V0OlswLDBdLGJvbGQ6WzEsMjJdLGRpbTpbMiwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLG92ZXJsaW5lOls1Myw1NV0saW52ZXJzZTpbNywyN10saGlkZGVuOls4LDI4XSxzdHJpa2V0aHJvdWdoOls5LDI5XX0sY29sb3I6e2JsYWNrOlszMCwzOV0scmVkOlszMSwzOV0sZ3JlZW46WzMyLDM5XSx5ZWxsb3c6WzMzLDM5XSxibHVlOlszNCwzOV0sbWFnZW50YTpbMzUsMzldLGN5YW46WzM2LDM5XSx3aGl0ZTpbMzcsMzldLGJsYWNrQnJpZ2h0Ols5MCwzOV0sZ3JheTpbOTAsMzldLGdyZXk6WzkwLDM5XSxyZWRCcmlnaHQ6WzkxLDM5XSxncmVlbkJyaWdodDpbOTIsMzldLHllbGxvd0JyaWdodDpbOTMsMzldLGJsdWVCcmlnaHQ6Wzk0LDM5XSxtYWdlbnRhQnJpZ2h0Ols5NSwzOV0sY3lhbkJyaWdodDpbOTYsMzldLHdoaXRlQnJpZ2h0Ols5NywzOV19LGJnQ29sb3I6e2JnQmxhY2s6WzQwLDQ5XSxiZ1JlZDpbNDEsNDldLGJnR3JlZW46WzQyLDQ5XSxiZ1llbGxvdzpbNDMsNDldLGJnQmx1ZTpbNDQsNDldLGJnTWFnZW50YTpbNDUsNDldLGJnQ3lhbjpbNDYsNDldLGJnV2hpdGU6WzQ3LDQ5XSxiZ0JsYWNrQnJpZ2h0OlsxMDAsNDldLGJnR3JheTpbMTAwLDQ5XSxiZ0dyZXk6WzEwMCw0OV0sYmdSZWRCcmlnaHQ6WzEwMSw0OV0sYmdHcmVlbkJyaWdodDpbMTAyLDQ5XSxiZ1llbGxvd0JyaWdodDpbMTAzLDQ5XSxiZ0JsdWVCcmlnaHQ6WzEwNCw0OV0sYmdNYWdlbnRhQnJpZ2h0OlsxMDUsNDldLGJnQ3lhbkJyaWdodDpbMTA2LDQ5XSxiZ1doaXRlQnJpZ2h0OlsxMDcsNDldfX07T2JqZWN0LmtleXMoci5tb2RpZmllcik7Y29uc3QgWj1PYmplY3Qua2V5cyhyLmNvbG9yKSxIPU9iamVjdC5rZXlzKHIuYmdDb2xvcik7Wy4uLlosLi4uSF07ZnVuY3Rpb24gVSgpe2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbdSxGXW9mIE9iamVjdC5lbnRyaWVzKHIpKXtmb3IoY29uc3RbZSxzXW9mIE9iamVjdC5lbnRyaWVzKEYpKXJbZV09e29wZW46YFxceDFCWyR7c1swXX1tYCxjbG9zZTpgXFx4MUJbJHtzWzFdfW1gfSxGW2VdPXJbZV0sdC5zZXQoc1swXSxzWzFdKTtPYmplY3QuZGVmaW5lUHJvcGVydHkocix1LHt2YWx1ZTpGLGVudW1lcmFibGU6ITF9KTt9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiY29kZXNcIix7dmFsdWU6dCxlbnVtZXJhYmxlOiExfSksci5jb2xvci5jbG9zZT1cIlxceDFCWzM5bVwiLHIuYmdDb2xvci5jbG9zZT1cIlxceDFCWzQ5bVwiLHIuY29sb3IuYW5zaT1MKCksci5jb2xvci5hbnNpMjU2PU0oKSxyLmNvbG9yLmFuc2kxNm09VCgpLHIuYmdDb2xvci5hbnNpPUwodiksci5iZ0NvbG9yLmFuc2kyNTY9TSh2KSxyLmJnQ29sb3IuYW5zaTE2bT1UKHYpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHIse3JnYlRvQW5zaTI1Njp7dmFsdWU6KHUsRixlKT0+dT09PUYmJkY9PT1lP3U8OD8xNjp1PjI0OD8yMzE6TWF0aC5yb3VuZCgodS04KS8yNDcqMjQpKzIzMjoxNiszNipNYXRoLnJvdW5kKHUvMjU1KjUpKzYqTWF0aC5yb3VuZChGLzI1NSo1KStNYXRoLnJvdW5kKGUvMjU1KjUpLGVudW1lcmFibGU6ITF9LGhleFRvUmdiOnt2YWx1ZTp1PT57Y29uc3QgRj0vW2EtZlxcZF17Nn18W2EtZlxcZF17M30vaS5leGVjKHUudG9TdHJpbmcoMTYpKTtpZighRilyZXR1cm4gWzAsMCwwXTtsZXRbZV09RjtlLmxlbmd0aD09PTMmJihlPVsuLi5lXS5tYXAoQz0+QytDKS5qb2luKFwiXCIpKTtjb25zdCBzPU51bWJlci5wYXJzZUludChlLDE2KTtyZXR1cm4gW3M+PjE2JjI1NSxzPj44JjI1NSxzJjI1NV19LGVudW1lcmFibGU6ITF9LGhleFRvQW5zaTI1Njp7dmFsdWU6dT0+ci5yZ2JUb0Fuc2kyNTYoLi4uci5oZXhUb1JnYih1KSksZW51bWVyYWJsZTohMX0sYW5zaTI1NlRvQW5zaTp7dmFsdWU6dT0+e2lmKHU8OClyZXR1cm4gMzArdTtpZih1PDE2KXJldHVybiA5MCsodS04KTtsZXQgRixlLHM7aWYodT49MjMyKUY9KCh1LTIzMikqMTArOCkvMjU1LGU9RixzPUY7ZWxzZSB7dS09MTY7Y29uc3QgaT11JTM2O0Y9TWF0aC5mbG9vcih1LzM2KS81LGU9TWF0aC5mbG9vcihpLzYpLzUscz1pJTYvNTt9Y29uc3QgQz1NYXRoLm1heChGLGUscykqMjtpZihDPT09MClyZXR1cm4gMzA7bGV0IEQ9MzArKE1hdGgucm91bmQocyk8PDJ8TWF0aC5yb3VuZChlKTw8MXxNYXRoLnJvdW5kKEYpKTtyZXR1cm4gQz09PTImJihEKz02MCksRH0sZW51bWVyYWJsZTohMX0scmdiVG9BbnNpOnt2YWx1ZToodSxGLGUpPT5yLmFuc2kyNTZUb0Fuc2koci5yZ2JUb0Fuc2kyNTYodSxGLGUpKSxlbnVtZXJhYmxlOiExfSxoZXhUb0Fuc2k6e3ZhbHVlOnU9PnIuYW5zaTI1NlRvQW5zaShyLmhleFRvQW5zaTI1Nih1KSksZW51bWVyYWJsZTohMX19KSxyfWNvbnN0IHE9VSgpLHA9bmV3IFNldChbXCJcXHgxQlwiLFwiXFx4OUJcIl0pLEo9MzksYj1cIlxceDA3XCIsVz1cIltcIixRPVwiXVwiLEk9XCJtXCIsdz1gJHtRfTg7O2AsTj10PT5gJHtwLnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke1d9JHt0fSR7SX1gLGo9dD0+YCR7cC52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHt3fSR7dH0ke2J9YCxYPXQ9PnQuc3BsaXQoXCIgXCIpLm1hcCh1PT5jKHUpKSxfPSh0LHUsRik9Pntjb25zdCBlPVsuLi51XTtsZXQgcz0hMSxDPSExLEQ9YygkKHRbdC5sZW5ndGgtMV0pKTtmb3IoY29uc3RbaSxvXW9mIGUuZW50cmllcygpKXtjb25zdCBFPWMobyk7aWYoRCtFPD1GP3RbdC5sZW5ndGgtMV0rPW86KHQucHVzaChvKSxEPTApLHAuaGFzKG8pJiYocz0hMCxDPWUuc2xpY2UoaSsxKS5qb2luKFwiXCIpLnN0YXJ0c1dpdGgodykpLHMpe0M/bz09PWImJihzPSExLEM9ITEpOm89PT1JJiYocz0hMSk7Y29udGludWV9RCs9RSxEPT09RiYmaTxlLmxlbmd0aC0xJiYodC5wdXNoKFwiXCIpLEQ9MCk7fSFEJiZ0W3QubGVuZ3RoLTFdLmxlbmd0aD4wJiZ0Lmxlbmd0aD4xJiYodFt0Lmxlbmd0aC0yXSs9dC5wb3AoKSk7fSxERD10PT57Y29uc3QgdT10LnNwbGl0KFwiIFwiKTtsZXQgRj11Lmxlbmd0aDtmb3IoO0Y+MCYmIShjKHVbRi0xXSk+MCk7KUYtLTtyZXR1cm4gRj09PXUubGVuZ3RoP3Q6dS5zbGljZSgwLEYpLmpvaW4oXCIgXCIpK3Uuc2xpY2UoRikuam9pbihcIlwiKX0sdUQ9KHQsdSxGPXt9KT0+e2lmKEYudHJpbSE9PSExJiZ0LnRyaW0oKT09PVwiXCIpcmV0dXJuIFwiXCI7bGV0IGU9XCJcIixzLEM7Y29uc3QgRD1YKHQpO2xldCBpPVtcIlwiXTtmb3IoY29uc3RbRSxhXW9mIHQuc3BsaXQoXCIgXCIpLmVudHJpZXMoKSl7Ri50cmltIT09ITEmJihpW2kubGVuZ3RoLTFdPWlbaS5sZW5ndGgtMV0udHJpbVN0YXJ0KCkpO2xldCBuPWMoaVtpLmxlbmd0aC0xXSk7aWYoRSE9PTAmJihuPj11JiYoRi53b3JkV3JhcD09PSExfHxGLnRyaW09PT0hMSkmJihpLnB1c2goXCJcIiksbj0wKSwobj4wfHxGLnRyaW09PT0hMSkmJihpW2kubGVuZ3RoLTFdKz1cIiBcIixuKyspKSxGLmhhcmQmJkRbRV0+dSl7Y29uc3QgQj11LW4sQT0xK01hdGguZmxvb3IoKERbRV0tQi0xKS91KTtNYXRoLmZsb29yKChEW0VdLTEpL3UpPEEmJmkucHVzaChcIlwiKSxfKGksYSx1KTtjb250aW51ZX1pZihuK0RbRV0+dSYmbj4wJiZEW0VdPjApe2lmKEYud29yZFdyYXA9PT0hMSYmbjx1KXtfKGksYSx1KTtjb250aW51ZX1pLnB1c2goXCJcIik7fWlmKG4rRFtFXT51JiZGLndvcmRXcmFwPT09ITEpe18oaSxhLHUpO2NvbnRpbnVlfWlbaS5sZW5ndGgtMV0rPWE7fUYudHJpbSE9PSExJiYoaT1pLm1hcChFPT5ERChFKSkpO2NvbnN0IG89Wy4uLmkuam9pbihgXG5gKV07Zm9yKGNvbnN0W0UsYV1vZiBvLmVudHJpZXMoKSl7aWYoZSs9YSxwLmhhcyhhKSl7Y29uc3R7Z3JvdXBzOkJ9PW5ldyBSZWdFeHAoYCg/OlxcXFwke1d9KD88Y29kZT5cXFxcZCspbXxcXFxcJHt3fSg/PHVyaT4uKikke2J9KWApLmV4ZWMoby5zbGljZShFKS5qb2luKFwiXCIpKXx8e2dyb3Vwczp7fX07aWYoQi5jb2RlIT09dm9pZCAwKXtjb25zdCBBPU51bWJlci5wYXJzZUZsb2F0KEIuY29kZSk7cz1BPT09Sj92b2lkIDA6QTt9ZWxzZSBCLnVyaSE9PXZvaWQgMCYmKEM9Qi51cmkubGVuZ3RoPT09MD92b2lkIDA6Qi51cmkpO31jb25zdCBuPXEuY29kZXMuZ2V0KE51bWJlcihzKSk7b1tFKzFdPT09YFxuYD8oQyYmKGUrPWooXCJcIikpLHMmJm4mJihlKz1OKG4pKSk6YT09PWBcbmAmJihzJiZuJiYoZSs9TihzKSksQyYmKGUrPWooQykpKTt9cmV0dXJuIGV9O2Z1bmN0aW9uIFAodCx1LEYpe3JldHVybiBTdHJpbmcodCkubm9ybWFsaXplKCkucmVwbGFjZSgvXFxyXFxuL2csYFxuYCkuc3BsaXQoYFxuYCkubWFwKGU9PnVEKGUsdSxGKSkuam9pbihgXG5gKX1mdW5jdGlvbiBGRCh0LHUpe2lmKHQ9PT11KXJldHVybjtjb25zdCBGPXQuc3BsaXQoYFxuYCksZT11LnNwbGl0KGBcbmApLHM9W107Zm9yKGxldCBDPTA7QzxNYXRoLm1heChGLmxlbmd0aCxlLmxlbmd0aCk7QysrKUZbQ10hPT1lW0NdJiZzLnB1c2goQyk7cmV0dXJuIHN9Y29uc3QgUj1TeW1ib2woXCJjbGFjazpjYW5jZWxcIik7ZnVuY3Rpb24gZyh0LHUpe3QuaXNUVFkmJnQuc2V0UmF3TW9kZSh1KTt9Y29uc3QgVj1uZXcgTWFwKFtbXCJrXCIsXCJ1cFwiXSxbXCJqXCIsXCJkb3duXCJdLFtcImhcIixcImxlZnRcIl0sW1wibFwiLFwicmlnaHRcIl1dKSx0RD1uZXcgU2V0KFtcInVwXCIsXCJkb3duXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwic3BhY2VcIixcImVudGVyXCJdKTtjbGFzcyBoe2NvbnN0cnVjdG9yKHtyZW5kZXI6dSxpbnB1dDpGPXN0ZGluLG91dHB1dDplPXN0ZG91dCwuLi5zfSxDPSEwKXt0aGlzLl90cmFjaz0hMSx0aGlzLl9jdXJzb3I9MCx0aGlzLnN0YXRlPVwiaW5pdGlhbFwiLHRoaXMuZXJyb3I9XCJcIix0aGlzLnN1YnNjcmliZXJzPW5ldyBNYXAsdGhpcy5fcHJldkZyYW1lPVwiXCIsdGhpcy5vcHRzPXMsdGhpcy5vbktleXByZXNzPXRoaXMub25LZXlwcmVzcy5iaW5kKHRoaXMpLHRoaXMuY2xvc2U9dGhpcy5jbG9zZS5iaW5kKHRoaXMpLHRoaXMucmVuZGVyPXRoaXMucmVuZGVyLmJpbmQodGhpcyksdGhpcy5fcmVuZGVyPXUuYmluZCh0aGlzKSx0aGlzLl90cmFjaz1DLHRoaXMuaW5wdXQ9Rix0aGlzLm91dHB1dD1lO31wcm9tcHQoKXtjb25zdCB1PW5ldyBXcml0ZVN0cmVhbSgwKTtyZXR1cm4gdS5fd3JpdGU9KEYsZSxzKT0+e3RoaXMuX3RyYWNrJiYodGhpcy52YWx1ZT10aGlzLnJsLmxpbmUucmVwbGFjZSgvXFx0L2csXCJcIiksdGhpcy5fY3Vyc29yPXRoaXMucmwuY3Vyc29yLHRoaXMuZW1pdChcInZhbHVlXCIsdGhpcy52YWx1ZSkpLHMoKTt9LHRoaXMuaW5wdXQucGlwZSh1KSx0aGlzLnJsPWYuY3JlYXRlSW50ZXJmYWNlKHtpbnB1dDp0aGlzLmlucHV0LG91dHB1dDp1LHRhYlNpemU6Mixwcm9tcHQ6XCJcIixlc2NhcGVDb2RlVGltZW91dDo1MH0pLGYuZW1pdEtleXByZXNzRXZlbnRzKHRoaXMuaW5wdXQsdGhpcy5ybCksdGhpcy5ybC5wcm9tcHQoKSx0aGlzLm9wdHMuaW5pdGlhbFZhbHVlIT09dm9pZCAwJiZ0aGlzLl90cmFjayYmdGhpcy5ybC53cml0ZSh0aGlzLm9wdHMuaW5pdGlhbFZhbHVlKSx0aGlzLmlucHV0Lm9uKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLGcodGhpcy5pbnB1dCwhMCksdGhpcy5vdXRwdXQub24oXCJyZXNpemVcIix0aGlzLnJlbmRlciksdGhpcy5yZW5kZXIoKSxuZXcgUHJvbWlzZSgoRixlKT0+e3RoaXMub25jZShcInN1Ym1pdFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZyh0aGlzLmlucHV0LCExKSxGKHRoaXMudmFsdWUpO30pLHRoaXMub25jZShcImNhbmNlbFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZyh0aGlzLmlucHV0LCExKSxGKFIpO30pO30pfW9uKHUsRil7Y29uc3QgZT10aGlzLnN1YnNjcmliZXJzLmdldCh1KT8/W107ZS5wdXNoKHtjYjpGfSksdGhpcy5zdWJzY3JpYmVycy5zZXQodSxlKTt9b25jZSh1LEYpe2NvbnN0IGU9dGhpcy5zdWJzY3JpYmVycy5nZXQodSk/P1tdO2UucHVzaCh7Y2I6RixvbmNlOiEwfSksdGhpcy5zdWJzY3JpYmVycy5zZXQodSxlKTt9ZW1pdCh1LC4uLkYpe2NvbnN0IGU9dGhpcy5zdWJzY3JpYmVycy5nZXQodSk/P1tdLHM9W107Zm9yKGNvbnN0IEMgb2YgZSlDLmNiKC4uLkYpLEMub25jZSYmcy5wdXNoKCgpPT5lLnNwbGljZShlLmluZGV4T2YoQyksMSkpO2Zvcihjb25zdCBDIG9mIHMpQygpO311bnN1YnNjcmliZSgpe3RoaXMuc3Vic2NyaWJlcnMuY2xlYXIoKTt9b25LZXlwcmVzcyh1LEYpe2lmKHRoaXMuc3RhdGU9PT1cImVycm9yXCImJih0aGlzLnN0YXRlPVwiYWN0aXZlXCIpLEY/Lm5hbWUmJiF0aGlzLl90cmFjayYmVi5oYXMoRi5uYW1lKSYmdGhpcy5lbWl0KFwiY3Vyc29yXCIsVi5nZXQoRi5uYW1lKSksRj8ubmFtZSYmdEQuaGFzKEYubmFtZSkmJnRoaXMuZW1pdChcImN1cnNvclwiLEYubmFtZSksdSYmKHUudG9Mb3dlckNhc2UoKT09PVwieVwifHx1LnRvTG93ZXJDYXNlKCk9PT1cIm5cIikmJnRoaXMuZW1pdChcImNvbmZpcm1cIix1LnRvTG93ZXJDYXNlKCk9PT1cInlcIiksdSYmdGhpcy5lbWl0KFwia2V5XCIsdS50b0xvd2VyQ2FzZSgpKSxGPy5uYW1lPT09XCJyZXR1cm5cIil7aWYodGhpcy5vcHRzLnZhbGlkYXRlKXtjb25zdCBlPXRoaXMub3B0cy52YWxpZGF0ZSh0aGlzLnZhbHVlKTtlJiYodGhpcy5lcnJvcj1lLHRoaXMuc3RhdGU9XCJlcnJvclwiLHRoaXMucmwud3JpdGUodGhpcy52YWx1ZSkpO310aGlzLnN0YXRlIT09XCJlcnJvclwiJiYodGhpcy5zdGF0ZT1cInN1Ym1pdFwiKTt9dT09PVwiXHUwMDAzXCImJih0aGlzLnN0YXRlPVwiY2FuY2VsXCIpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmVtaXQoXCJmaW5hbGl6ZVwiKSx0aGlzLnJlbmRlcigpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmNsb3NlKCk7fWNsb3NlKCl7dGhpcy5pbnB1dC51bnBpcGUoKSx0aGlzLmlucHV0LnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLHRoaXMub3V0cHV0LndyaXRlKGBcbmApLGcodGhpcy5pbnB1dCwhMSksdGhpcy5ybC5jbG9zZSgpLHRoaXMuZW1pdChgJHt0aGlzLnN0YXRlfWAsdGhpcy52YWx1ZSksdGhpcy51bnN1YnNjcmliZSgpO31yZXN0b3JlQ3Vyc29yKCl7Y29uc3QgdT1QKHRoaXMuX3ByZXZGcmFtZSxwcm9jZXNzLnN0ZG91dC5jb2x1bW5zLHtoYXJkOiEwfSkuc3BsaXQoYFxuYCkubGVuZ3RoLTE7dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKC05OTksdSotMSkpO31yZW5kZXIoKXtjb25zdCB1PVAodGhpcy5fcmVuZGVyKHRoaXMpPz9cIlwiLHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMse2hhcmQ6ITB9KTtpZih1IT09dGhpcy5fcHJldkZyYW1lKXtpZih0aGlzLnN0YXRlPT09XCJpbml0aWFsXCIpdGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5oaWRlKTtlbHNlIHtjb25zdCBGPUZEKHRoaXMuX3ByZXZGcmFtZSx1KTtpZih0aGlzLnJlc3RvcmVDdXJzb3IoKSxGJiZGPy5sZW5ndGg9PT0xKXtjb25zdCBlPUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKDAsZSkpLHRoaXMub3V0cHV0LndyaXRlKHNyYy5lcmFzZS5saW5lcygxKSk7Y29uc3Qgcz11LnNwbGl0KGBcbmApO3RoaXMub3V0cHV0LndyaXRlKHNbZV0pLHRoaXMuX3ByZXZGcmFtZT11LHRoaXMub3V0cHV0LndyaXRlKHNyYy5jdXJzb3IubW92ZSgwLHMubGVuZ3RoLWUtMSkpO3JldHVybn1lbHNlIGlmKEYmJkY/Lmxlbmd0aD4xKXtjb25zdCBlPUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKDAsZSkpLHRoaXMub3V0cHV0LndyaXRlKHNyYy5lcmFzZS5kb3duKCkpO2NvbnN0IEM9dS5zcGxpdChgXG5gKS5zbGljZShlKTt0aGlzLm91dHB1dC53cml0ZShDLmpvaW4oYFxuYCkpLHRoaXMuX3ByZXZGcmFtZT11O3JldHVybn10aGlzLm91dHB1dC53cml0ZShzcmMuZXJhc2UuZG93bigpKTt9dGhpcy5vdXRwdXQud3JpdGUodSksdGhpcy5zdGF0ZT09PVwiaW5pdGlhbFwiJiYodGhpcy5zdGF0ZT1cImFjdGl2ZVwiKSx0aGlzLl9wcmV2RnJhbWU9dTt9fX1jbGFzcyBzRCBleHRlbmRzIGh7Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLnZhbHVlPzA6MX1nZXQgX3ZhbHVlKCl7cmV0dXJuIHRoaXMuY3Vyc29yPT09MH1jb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLnZhbHVlPSEhdS5pbml0aWFsVmFsdWUsdGhpcy5vbihcInZhbHVlXCIsKCk9Pnt0aGlzLnZhbHVlPXRoaXMuX3ZhbHVlO30pLHRoaXMub24oXCJjb25maXJtXCIsRj0+e3RoaXMub3V0cHV0LndyaXRlKHNyYy5jdXJzb3IubW92ZSgwLC0xKSksdGhpcy52YWx1ZT1GLHRoaXMuc3RhdGU9XCJzdWJtaXRcIix0aGlzLmNsb3NlKCk7fSksdGhpcy5vbihcImN1cnNvclwiLCgpPT57dGhpcy52YWx1ZT0hdGhpcy52YWx1ZTt9KTt9fWNsYXNzIGlEIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLmN1cnNvcj0wLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy52YWx1ZT1bLi4udS5pbml0aWFsVmFsdWVzPz9bXV0sdGhpcy5jdXJzb3I9TWF0aC5tYXgodGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuY3Vyc29yQXQpLDApLHRoaXMub24oXCJrZXlcIixGPT57Rj09PVwiYVwiJiZ0aGlzLnRvZ2dsZUFsbCgpO30pLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWs7Y2FzZVwic3BhY2VcIjp0aGlzLnRvZ2dsZVZhbHVlKCk7YnJlYWt9fSk7fWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZX10b2dnbGVBbGwoKXtjb25zdCB1PXRoaXMudmFsdWUubGVuZ3RoPT09dGhpcy5vcHRpb25zLmxlbmd0aDt0aGlzLnZhbHVlPXU/W106dGhpcy5vcHRpb25zLm1hcChGPT5GLnZhbHVlKTt9dG9nZ2xlVmFsdWUoKXtjb25zdCB1PXRoaXMudmFsdWUuaW5jbHVkZXModGhpcy5fdmFsdWUpO3RoaXMudmFsdWU9dT90aGlzLnZhbHVlLmZpbHRlcihGPT5GIT09dGhpcy5fdmFsdWUpOlsuLi50aGlzLnZhbHVlLHRoaXMuX3ZhbHVlXTt9fWNsYXNzIEVEIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLmN1cnNvcj0wLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy5jdXJzb3I9dGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuaW5pdGlhbFZhbHVlKSx0aGlzLmN1cnNvcj09PS0xJiYodGhpcy5jdXJzb3I9MCksdGhpcy5jaGFuZ2VWYWx1ZSgpLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWt9dGhpcy5jaGFuZ2VWYWx1ZSgpO30pO31nZXQgX3ZhbHVlKCl7cmV0dXJuIHRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl19Y2hhbmdlVmFsdWUoKXt0aGlzLnZhbHVlPXRoaXMuX3ZhbHVlLnZhbHVlO319Y2xhc3Mgb0QgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUpLHRoaXMudmFsdWVXaXRoQ3Vyc29yPVwiXCIsdGhpcy5vbihcImZpbmFsaXplXCIsKCk9Pnt0aGlzLnZhbHVlfHwodGhpcy52YWx1ZT11LmRlZmF1bHRWYWx1ZSksdGhpcy52YWx1ZVdpdGhDdXJzb3I9dGhpcy52YWx1ZTt9KSx0aGlzLm9uKFwidmFsdWVcIiwoKT0+e2lmKHRoaXMuY3Vyc29yPj10aGlzLnZhbHVlLmxlbmd0aCl0aGlzLnZhbHVlV2l0aEN1cnNvcj1gJHt0aGlzLnZhbHVlfSR7bC5pbnZlcnNlKGwuaGlkZGVuKFwiX1wiKSl9YDtlbHNlIHtjb25zdCBGPXRoaXMudmFsdWUuc2xpY2UoMCx0aGlzLmN1cnNvciksZT10aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTt0aGlzLnZhbHVlV2l0aEN1cnNvcj1gJHtGfSR7bC5pbnZlcnNlKGVbMF0pfSR7ZS5zbGljZSgxKX1gO319KTt9Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLl9jdXJzb3J9fVxuXG5jb25zdCB1bmljb2RlID0gaXNVbmljb2RlU3VwcG9ydGVkKCk7XG5jb25zdCBzID0gKGMsIGZhbGxiYWNrKSA9PiB1bmljb2RlID8gYyA6IGZhbGxiYWNrO1xuY29uc3QgU19TVEVQX0FDVElWRSA9IHMoXCJcXHUyNzZGXCIsIFwiPlwiKTtcbmNvbnN0IFNfU1RFUF9DQU5DRUwgPSBzKFwiXFx1MjVBMFwiLCBcInhcIik7XG5jb25zdCBTX1NURVBfRVJST1IgPSBzKFwiXFx1MjVCMlwiLCBcInhcIik7XG5jb25zdCBTX1NURVBfU1VCTUlUID0gcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpO1xuY29uc3QgU19CQVIgPSBcIlwiO1xuY29uc3QgU19CQVJfRU5EID0gXCJcIjtcbmNvbnN0IFNfUkFESU9fQUNUSVZFID0gcyhcIlxcdTI1Q0ZcIiwgXCI+XCIpO1xuY29uc3QgU19SQURJT19JTkFDVElWRSA9IHMoXCJcXHUyNUNCXCIsIFwiIFwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfQUNUSVZFID0gcyhcIlxcdTI1RkJcIiwgXCJbXFx1MjAyMl1cIik7XG5jb25zdCBTX0NIRUNLQk9YX1NFTEVDVEVEID0gcyhcIlxcdTI1RkNcIiwgXCJbK11cIik7XG5jb25zdCBTX0NIRUNLQk9YX0lOQUNUSVZFID0gcyhcIlxcdTI1RkJcIiwgXCJbIF1cIik7XG5jb25zdCBzeW1ib2wgPSAoc3RhdGUpID0+IHtcbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgXCJpbml0aWFsXCI6XG4gICAgY2FzZSBcImFjdGl2ZVwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLmN5YW4oU19TVEVQX0FDVElWRSk7XG4gICAgfVxuICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgcmV0dXJuIGNvbG9ycy5yZWQoU19TVEVQX0NBTkNFTCk7XG4gICAgfVxuICAgIGNhc2UgXCJlcnJvclwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLnllbGxvdyhTX1NURVBfRVJST1IpO1xuICAgIH1cbiAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMuZ3JlZW4oU19TVEVQX1NVQk1JVCk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgdGV4dCA9IChvcHRzKSA9PiB7XG4gIHJldHVybiBuZXcgb0Qoe1xuICAgIHZhbGlkYXRlOiBvcHRzLnZhbGlkYXRlLFxuICAgIHBsYWNlaG9sZGVyOiBvcHRzLnBsYWNlaG9sZGVyLFxuICAgIGRlZmF1bHRWYWx1ZTogb3B0cy5kZWZhdWx0VmFsdWUsXG4gICAgaW5pdGlhbFZhbHVlOiBvcHRzLmluaXRpYWxWYWx1ZSxcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB0aXRsZSA9IGAke2NvbG9ycy5ncmF5KFNfQkFSKX1cbiR7c3ltYm9sKHRoaXMuc3RhdGUpfSAke29wdHMubWVzc2FnZX1cbmA7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IG9wdHMucGxhY2Vob2xkZXIgPyBjb2xvcnMuaW52ZXJzZShvcHRzLnBsYWNlaG9sZGVyWzBdKSArIGNvbG9ycy5kaW0ob3B0cy5wbGFjZWhvbGRlci5zbGljZSgxKSkgOiBjb2xvcnMuaW52ZXJzZShjb2xvcnMuaGlkZGVuKFwiX1wiKSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlV2l0aEN1cnNvciA6IHBsYWNlaG9sZGVyO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJlcnJvclwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlLnRyaW0oKX1cbiR7Y29sb3JzLnllbGxvdyhcbiAgICAgICAgICAgIFNfQkFSXG4gICAgICAgICAgKX0gJHt2YWx1ZX1cbiR7Y29sb3JzLnllbGxvdyhTX0JBUl9FTkQpfSAke2NvbG9ycy55ZWxsb3coXG4gICAgICAgICAgICB0aGlzLmVycm9yXG4gICAgICAgICAgKX1cbmA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInN1Ym1pdFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5kaW0oXG4gICAgICAgICAgICB0aGlzLnZhbHVlIHx8IG9wdHMucGxhY2Vob2xkZXJcbiAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKFxuICAgICAgICAgICAgY29sb3JzLmRpbSh0aGlzLnZhbHVlID8/IFwiXCIpXG4gICAgICAgICAgKX0ke3RoaXMudmFsdWU/LnRyaW0oKSA/IFwiXFxuXCIgKyBjb2xvcnMuZ3JheShTX0JBUikgOiBcIlwifWA7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5jeWFuKFNfQkFSKX0gJHt2YWx1ZX1cbiR7Y29sb3JzLmN5YW4oXG4gICAgICAgICAgICBTX0JBUl9FTkRcbiAgICAgICAgICApfVxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSkucHJvbXB0KCk7XG59O1xuY29uc3QgY29uZmlybSA9IChvcHRzKSA9PiB7XG4gIGNvbnN0IGFjdGl2ZSA9IG9wdHMuYWN0aXZlID8/IFwiWWVzXCI7XG4gIGNvbnN0IGluYWN0aXZlID0gb3B0cy5pbmFjdGl2ZSA/PyBcIk5vXCI7XG4gIHJldHVybiBuZXcgc0Qoe1xuICAgIGFjdGl2ZSxcbiAgICBpbmFjdGl2ZSxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlID8/IHRydWUsXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlID8gYWN0aXZlIDogaW5hY3RpdmU7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgY2FzZSBcInN1Ym1pdFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5kaW0odmFsdWUpfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKFxuICAgICAgICAgICAgY29sb3JzLmRpbSh2YWx1ZSlcbiAgICAgICAgICApfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMudmFsdWUgPyBgJHtjb2xvcnMuZ3JlZW4oU19SQURJT19BQ1RJVkUpfSAke2FjdGl2ZX1gIDogYCR7Y29sb3JzLmRpbShTX1JBRElPX0lOQUNUSVZFKX0gJHtjb2xvcnMuZGltKGFjdGl2ZSl9YH0gJHtjb2xvcnMuZGltKFwiL1wiKX0gJHt0aGlzLnZhbHVlID8gYCR7Y29sb3JzLmRpbShTX1JBRElPX0lOQUNUSVZFKX0gJHtjb2xvcnMuZGltKGluYWN0aXZlKX1gIDogYCR7Y29sb3JzLmdyZWVuKFNfUkFESU9fQUNUSVZFKX0gJHtpbmFjdGl2ZX1gfVxuJHtjb2xvcnMuY3lhbihTX0JBUl9FTkQpfVxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSkucHJvbXB0KCk7XG59O1xuY29uc3Qgc2VsZWN0ID0gKG9wdHMpID0+IHtcbiAgY29uc3Qgb3B0ID0gKG9wdGlvbiwgc3RhdGUpID0+IHtcbiAgICBjb25zdCBsYWJlbCA9IG9wdGlvbi5sYWJlbCA/PyBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5ncmVlbihTX1JBRElPX0FDVElWRSl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic2VsZWN0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjYW5jZWxsZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLnN0cmlrZXRocm91Z2goY29sb3JzLmRpbShsYWJlbCkpfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gIH07XG4gIHJldHVybiBuZXcgRUQoe1xuICAgIG9wdGlvbnM6IG9wdHMub3B0aW9ucyxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlLFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7b3B0KFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXSxcbiAgICAgICAgICAgIFwic2VsZWN0ZWRcIlxuICAgICAgICAgICl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7b3B0KFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXSxcbiAgICAgICAgICAgIFwiY2FuY2VsbGVkXCJcbiAgICAgICAgICApfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMub3B0aW9ucy5tYXAoXG4gICAgICAgICAgICAob3B0aW9uLCBpKSA9PiBvcHQob3B0aW9uLCBpID09PSB0aGlzLmN1cnNvciA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpXG4gICAgICAgICAgKS5qb2luKGBcbiR7Y29sb3JzLmN5YW4oU19CQVIpfSAgYCl9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBtdWx0aXNlbGVjdCA9IChvcHRzKSA9PiB7XG4gIGNvbnN0IG9wdCA9IChvcHRpb24sIHN0YXRlKSA9PiB7XG4gICAgY29uc3QgbGFiZWwgPSBvcHRpb24ubGFiZWwgPz8gU3RyaW5nKG9wdGlvbi52YWx1ZSk7XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSBcImFjdGl2ZVwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuY3lhbihTX0NIRUNLQk9YX0FDVElWRSl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic2VsZWN0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmdyZWVuKFNfQ0hFQ0tCT1hfU0VMRUNURUQpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwiY2FuY2VsbGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKGNvbG9ycy5kaW0obGFiZWwpKX1gO1xuICAgICAgfVxuICAgICAgY2FzZSBcImFjdGl2ZS1zZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZ3JlZW4oU19DSEVDS0JPWF9TRUxFQ1RFRCl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic3VibWl0dGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtjb2xvcnMuZGltKFNfQ0hFQ0tCT1hfSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gIH07XG4gIHJldHVybiBuZXcgaUQoe1xuICAgIG9wdGlvbnM6IG9wdHMub3B0aW9ucyxcbiAgICBpbml0aWFsVmFsdWVzOiBvcHRzLmluaXRpYWxWYWx1ZXMsXG4gICAgcmVxdWlyZWQ6IG9wdHMucmVxdWlyZWQgPz8gdHJ1ZSxcbiAgICBjdXJzb3JBdDogb3B0cy5jdXJzb3JBdCxcbiAgICB2YWxpZGF0ZShzZWxlY3RlZCkge1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBgUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgb3B0aW9uLlxuJHtjb2xvcnMucmVzZXQoXG4gICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgIGBQcmVzcyAke2NvbG9ycy5ncmF5KFxuICAgICAgICAgICAgICBjb2xvcnMuYmdXaGl0ZShjb2xvcnMuaW52ZXJzZShcIiBzcGFjZSBcIikpXG4gICAgICAgICAgICApfSB0byBzZWxlY3QsICR7Y29sb3JzLmdyYXkoXG4gICAgICAgICAgICAgIGNvbG9ycy5iZ1doaXRlKGNvbG9ycy5pbnZlcnNlKFwiIGVudGVyIFwiKSlcbiAgICAgICAgICAgICl9IHRvIHN1Ym1pdGBcbiAgICAgICAgICApXG4gICAgICAgICl9YDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7dGhpcy5vcHRpb25zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB0aGlzLnZhbHVlLmluY2x1ZGVzKHZhbHVlKSkubWFwKChvcHRpb24pID0+IG9wdChvcHRpb24sIFwic3VibWl0dGVkXCIpKS5qb2luKGNvbG9ycy5kaW0oXCIsIFwiKSkgfHwgY29sb3JzLmRpbShcIm5vbmVcIil9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHsgdmFsdWUgfSkgPT4gdGhpcy52YWx1ZS5pbmNsdWRlcyh2YWx1ZSkpLm1hcCgob3B0aW9uKSA9PiBvcHQob3B0aW9uLCBcImNhbmNlbGxlZFwiKSkuam9pbihjb2xvcnMuZGltKFwiLCBcIikpO1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtsYWJlbC50cmltKCkgPyBgJHtsYWJlbH1cbiR7Y29sb3JzLmdyYXkoU19CQVIpfWAgOiBcIlwifWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgICAgICBjb25zdCBmb290ZXIgPSB0aGlzLmVycm9yLnNwbGl0KFwiXFxuXCIpLm1hcChcbiAgICAgICAgICAgIChsbiwgaSkgPT4gaSA9PT0gMCA/IGAke2NvbG9ycy55ZWxsb3coU19CQVJfRU5EKX0gJHtjb2xvcnMueWVsbG93KGxuKX1gIDogYCAgICR7bG59YFxuICAgICAgICAgICkuam9pbihcIlxcblwiKTtcbiAgICAgICAgICByZXR1cm4gdGl0bGUgKyBjb2xvcnMueWVsbG93KFNfQkFSKSArIFwiICBcIiArIHRoaXMub3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBpID09PSB0aGlzLmN1cnNvcjtcbiAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwiYWN0aXZlLXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcInNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIGFjdGl2ZSA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpO1xuICAgICAgICAgIH0pLmpvaW4oYFxuJHtjb2xvcnMueWVsbG93KFNfQkFSKX0gIGApICsgXCJcXG5cIiArIGZvb3RlciArIFwiXFxuXCI7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5jeWFuKFNfQkFSKX0gJHt0aGlzLm9wdGlvbnMubWFwKChvcHRpb24sIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy52YWx1ZS5pbmNsdWRlcyhvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gaSA9PT0gdGhpcy5jdXJzb3I7XG4gICAgICAgICAgICBpZiAoYWN0aXZlICYmIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcImFjdGl2ZS1zZWxlY3RlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBhY3RpdmUgPyBcImFjdGl2ZVwiIDogXCJpbmFjdGl2ZVwiKTtcbiAgICAgICAgICB9KS5qb2luKGBcbiR7Y29sb3JzLmN5YW4oU19CQVIpfSAgYCl9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHByb21wdChtZXNzYWdlLCBvcHRzID0ge30pIHtcbiAgaWYgKCFvcHRzLnR5cGUgfHwgb3B0cy50eXBlID09PSBcInRleHRcIikge1xuICAgIHJldHVybiBhd2FpdCB0ZXh0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkZWZhdWx0VmFsdWU6IG9wdHMuZGVmYXVsdCxcbiAgICAgIHBsYWNlaG9sZGVyOiBvcHRzLnBsYWNlaG9sZGVyLFxuICAgICAgaW5pdGlhbFZhbHVlOiBvcHRzLmluaXRpYWxcbiAgICB9KTtcbiAgfVxuICBpZiAob3B0cy50eXBlID09PSBcImNvbmZpcm1cIikge1xuICAgIHJldHVybiBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFxuICAgIH0pO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwic2VsZWN0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBvcHRpb25zOiBvcHRzLm9wdGlvbnMubWFwKFxuICAgICAgICAobykgPT4gdHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB7IHZhbHVlOiBvLCBsYWJlbDogbyB9IDogb1xuICAgICAgKVxuICAgIH0pO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwibXVsdGlzZWxlY3RcIikge1xuICAgIHJldHVybiBhd2FpdCBtdWx0aXNlbGVjdCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgb3B0aW9uczogb3B0cy5vcHRpb25zLm1hcChcbiAgICAgICAgKG8pID0+IHR5cGVvZiBvID09PSBcInN0cmluZ1wiID8geyB2YWx1ZTogbywgbGFiZWw6IG8gfSA6IG9cbiAgICAgICksXG4gICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZFxuICAgIH0pO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwcm9tcHQgdHlwZTogJHtvcHRzLnR5cGV9YCk7XG59XG5cbmV4cG9ydCB7IHByb21wdCB9O1xuIiwgImltcG9ydCB7IGNyZWF0ZUNvbnNvbGEgYXMgY3JlYXRlQ29uc29sYSQxLCBMb2dMZXZlbHMgfSBmcm9tICcuLi9jb3JlLm1qcyc7XG5pbXBvcnQgeyBCIGFzIEJhc2ljUmVwb3J0ZXIsIHAgYXMgcGFyc2VTdGFjayB9IGZyb20gJy4vY29uc29sYS4wNmFkOGE2NC5tanMnO1xuaW1wb3J0IHByb2Nlc3MkMSBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgY29sb3JzLCBib3gsIHN0cmlwQW5zaSBhcyBzdHJpcEFuc2kkMSB9IGZyb20gJy4uL3V0aWxzLm1qcyc7XG5cbmNvbnN0IHByb3ZpZGVycyA9IFtcbiAgW1wiQVBQVkVZT1JcIl0sXG4gIFtcIkFaVVJFX1BJUEVMSU5FU1wiLCBcIlNZU1RFTV9URUFNRk9VTkRBVElPTkNPTExFQ1RJT05VUklcIl0sXG4gIFtcIkFaVVJFX1NUQVRJQ1wiLCBcIklOUFVUX0FaVVJFX1NUQVRJQ19XRUJfQVBQU19BUElfVE9LRU5cIl0sXG4gIFtcIkFQUENJUkNMRVwiLCBcIkFDX0FQUENJUkNMRVwiXSxcbiAgW1wiQkFNQk9PXCIsIFwiYmFtYm9vX3BsYW5LZXlcIl0sXG4gIFtcIkJJVEJVQ0tFVFwiLCBcIkJJVEJVQ0tFVF9DT01NSVRcIl0sXG4gIFtcIkJJVFJJU0VcIiwgXCJCSVRSSVNFX0lPXCJdLFxuICBbXCJCVUREWVwiLCBcIkJVRERZX1dPUktTUEFDRV9JRFwiXSxcbiAgW1wiQlVJTERLSVRFXCJdLFxuICBbXCJDSVJDTEVcIiwgXCJDSVJDTEVDSVwiXSxcbiAgW1wiQ0lSUlVTXCIsIFwiQ0lSUlVTX0NJXCJdLFxuICBbXCJDTE9VREZMQVJFX1BBR0VTXCIsIFwiQ0ZfUEFHRVNcIiwgeyBjaTogdHJ1ZSB9XSxcbiAgW1wiQ09ERUJVSUxEXCIsIFwiQ09ERUJVSUxEX0JVSUxEX0FSTlwiXSxcbiAgW1wiQ09ERUZSRVNIXCIsIFwiQ0ZfQlVJTERfSURcIl0sXG4gIFtcIkRST05FXCJdLFxuICBbXCJEUk9ORVwiLCBcIkRST05FX0JVSUxEX0VWRU5UXCJdLFxuICBbXCJEU0FSSVwiXSxcbiAgW1wiR0lUSFVCX0FDVElPTlNcIl0sXG4gIFtcIkdJVExBQlwiLCBcIkdJVExBQl9DSVwiXSxcbiAgW1wiR0lUTEFCXCIsIFwiQ0lfTUVSR0VfUkVRVUVTVF9JRFwiXSxcbiAgW1wiR09DRFwiLCBcIkdPX1BJUEVMSU5FX0xBQkVMXCJdLFxuICBbXCJMQVlFUkNJXCJdLFxuICBbXCJIVURTT05cIiwgXCJIVURTT05fVVJMXCJdLFxuICBbXCJKRU5LSU5TXCIsIFwiSkVOS0lOU19VUkxcIl0sXG4gIFtcIk1BR05VTVwiXSxcbiAgW1wiTkVUTElGWVwiXSxcbiAgW1wiTkVUTElGWVwiLCBcIk5FVExJRllfTE9DQUxcIiwgeyBjaTogZmFsc2UgfV0sXG4gIFtcIk5FVkVSQ09ERVwiXSxcbiAgW1wiUkVOREVSXCJdLFxuICBbXCJTQUlMXCIsIFwiU0FJTENJXCJdLFxuICBbXCJTRU1BUEhPUkVcIl0sXG4gIFtcIlNDUkVXRFJJVkVSXCJdLFxuICBbXCJTSElQUEFCTEVcIl0sXG4gIFtcIlNPTEFOT1wiLCBcIlRERElVTVwiXSxcbiAgW1wiU1RSSURFUlwiXSxcbiAgW1wiVEVBTUNJVFlcIiwgXCJURUFNQ0lUWV9WRVJTSU9OXCJdLFxuICBbXCJUUkFWSVNcIl0sXG4gIFtcIlZFUkNFTFwiLCBcIk5PV19CVUlMREVSXCJdLFxuICBbXCJBUFBDRU5URVJcIiwgXCJBUFBDRU5URVJfQlVJTERfSURcIl0sXG4gIFtcIkNPREVTQU5EQk9YXCIsIFwiQ09ERVNBTkRCT1hfU1NFXCIsIHsgY2k6IGZhbHNlIH1dLFxuICBbXCJTVEFDS0JMSVRaXCJdLFxuICBbXCJTVE9STUtJVFwiXSxcbiAgW1wiQ0xFQVZSXCJdXG5dO1xuZnVuY3Rpb24gZGV0ZWN0UHJvdmlkZXIoZW52KSB7XG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgcHJvdmlkZXJzKSB7XG4gICAgY29uc3QgZW52TmFtZSA9IHByb3ZpZGVyWzFdIHx8IHByb3ZpZGVyWzBdO1xuICAgIGlmIChlbnZbZW52TmFtZV0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHByb3ZpZGVyWzBdLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIC4uLnByb3ZpZGVyWzJdXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBpZiAoZW52LlNIRUxMICYmIGVudi5TSEVMTCA9PT0gXCIvYmluL2pzaFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IFwic3RhY2tibGl0elwiLFxuICAgICAgY2k6IGZhbHNlXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiXCIsXG4gICAgY2k6IGZhbHNlXG4gIH07XG59XG5cbmNvbnN0IHByb2Nlc3NTaGltID0gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzIDoge307XG5jb25zdCBlbnZTaGltID0gcHJvY2Vzc1NoaW0uZW52IHx8IHt9O1xuY29uc3QgcHJvdmlkZXJJbmZvID0gZGV0ZWN0UHJvdmlkZXIoZW52U2hpbSk7XG5jb25zdCBub2RlRU5WID0gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgXCJcIjtcbnByb2Nlc3NTaGltLnBsYXRmb3JtO1xucHJvdmlkZXJJbmZvLm5hbWU7XG5jb25zdCBpc0NJID0gdG9Cb29sZWFuKGVudlNoaW0uQ0kpIHx8IHByb3ZpZGVySW5mby5jaSAhPT0gZmFsc2U7XG5jb25zdCBoYXNUVFkgPSB0b0Jvb2xlYW4ocHJvY2Vzc1NoaW0uc3Rkb3V0ICYmIHByb2Nlc3NTaGltLnN0ZG91dC5pc1RUWSk7XG5jb25zdCBpc0RlYnVnID0gdG9Cb29sZWFuKGVudlNoaW0uREVCVUcpO1xuY29uc3QgaXNUZXN0ID0gbm9kZUVOViA9PT0gXCJ0ZXN0XCIgfHwgdG9Cb29sZWFuKGVudlNoaW0uVEVTVCk7XG50b0Jvb2xlYW4oZW52U2hpbS5NSU5JTUFMKSB8fCBpc0NJIHx8IGlzVGVzdCB8fCAhaGFzVFRZO1xuZnVuY3Rpb24gdG9Cb29sZWFuKHZhbCkge1xuICByZXR1cm4gdmFsID8gdmFsICE9PSBcImZhbHNlXCIgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYW5zaVJlZ2V4KHtvbmx5Rmlyc3QgPSBmYWxzZX0gPSB7fSkge1xuXHRjb25zdCBwYXR0ZXJuID0gW1xuXHQgICAgJ1tcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNyknLFxuXHRcdCcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKSdcblx0XS5qb2luKCd8Jyk7XG5cblx0cmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgb25seUZpcnN0ID8gdW5kZWZpbmVkIDogJ2cnKTtcbn1cblxuY29uc3QgcmVnZXggPSBhbnNpUmVnZXgoKTtcblxuZnVuY3Rpb24gc3RyaXBBbnNpKHN0cmluZykge1xuXHRpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIFxcYHN0cmluZ1xcYCwgZ290IFxcYCR7dHlwZW9mIHN0cmluZ31cXGBgKTtcblx0fVxuXG5cdC8vIEV2ZW4gdGhvdWdoIHRoZSByZWdleCBpcyBnbG9iYWwsIHdlIGRvbid0IG5lZWQgdG8gcmVzZXQgdGhlIGAubGFzdEluZGV4YFxuXHQvLyBiZWNhdXNlIHVubGlrZSBgLmV4ZWMoKWAgYW5kIGAudGVzdCgpYCwgYC5yZXBsYWNlKClgIGRvZXMgaXQgYXV0b21hdGljYWxseVxuXHQvLyBhbmQgZG9pbmcgaXQgbWFudWFsbHkgaGFzIGEgcGVyZm9ybWFuY2UgcGVuYWx0eS5cblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlZ2V4LCAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzICh4KSB7XG5cdHJldHVybiB4ICYmIHguX19lc01vZHVsZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeCwgJ2RlZmF1bHQnKSA/IHhbJ2RlZmF1bHQnXSA6IHg7XG59XG5cbnZhciBlYXN0YXNpYW53aWR0aCA9IHtleHBvcnRzOiB7fX07XG5cbihmdW5jdGlvbiAobW9kdWxlKSB7XG5cdHZhciBlYXcgPSB7fTtcblxuXHR7XG5cdCAgbW9kdWxlLmV4cG9ydHMgPSBlYXc7XG5cdH1cblxuXHRlYXcuZWFzdEFzaWFuV2lkdGggPSBmdW5jdGlvbihjaGFyYWN0ZXIpIHtcblx0ICB2YXIgeCA9IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApO1xuXHQgIHZhciB5ID0gKGNoYXJhY3Rlci5sZW5ndGggPT0gMikgPyBjaGFyYWN0ZXIuY2hhckNvZGVBdCgxKSA6IDA7XG5cdCAgdmFyIGNvZGVQb2ludCA9IHg7XG5cdCAgaWYgKCgweEQ4MDAgPD0geCAmJiB4IDw9IDB4REJGRikgJiYgKDB4REMwMCA8PSB5ICYmIHkgPD0gMHhERkZGKSkge1xuXHQgICAgeCAmPSAweDNGRjtcblx0ICAgIHkgJj0gMHgzRkY7XG5cdCAgICBjb2RlUG9pbnQgPSAoeCA8PCAxMCkgfCB5O1xuXHQgICAgY29kZVBvaW50ICs9IDB4MTAwMDA7XG5cdCAgfVxuXG5cdCAgaWYgKCgweDMwMDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHhGRjAxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRjYwKSB8fFxuXHQgICAgICAoMHhGRkUwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkU2KSkge1xuXHQgICAgcmV0dXJuICdGJztcblx0ICB9XG5cdCAgaWYgKCgweDIwQTkgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHhGRjYxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkJFKSB8fFxuXHQgICAgICAoMHhGRkMyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkM3KSB8fFxuXHQgICAgICAoMHhGRkNBIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkNGKSB8fFxuXHQgICAgICAoMHhGRkQyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkQ3KSB8fFxuXHQgICAgICAoMHhGRkRBIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkRDKSB8fFxuXHQgICAgICAoMHhGRkU4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkVFKSkge1xuXHQgICAgcmV0dXJuICdIJztcblx0ICB9XG5cdCAgaWYgKCgweDExMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExNUYpIHx8XG5cdCAgICAgICgweDExQTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExQTcpIHx8XG5cdCAgICAgICgweDExRkEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExRkYpIHx8XG5cdCAgICAgICgweDIzMjkgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIzMkEpIHx8XG5cdCAgICAgICgweDJFODAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJFOTkpIHx8XG5cdCAgICAgICgweDJFOUIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJFRjMpIHx8XG5cdCAgICAgICgweDJGMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJGRDUpIHx8XG5cdCAgICAgICgweDJGRjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJGRkIpIHx8XG5cdCAgICAgICgweDMwMDEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwM0UpIHx8XG5cdCAgICAgICgweDMwNDEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwOTYpIHx8XG5cdCAgICAgICgweDMwOTkgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwRkYpIHx8XG5cdCAgICAgICgweDMxMDUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxMkQpIHx8XG5cdCAgICAgICgweDMxMzEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxOEUpIHx8XG5cdCAgICAgICgweDMxOTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxQkEpIHx8XG5cdCAgICAgICgweDMxQzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxRTMpIHx8XG5cdCAgICAgICgweDMxRjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyMUUpIHx8XG5cdCAgICAgICgweDMyMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyNDcpIHx8XG5cdCAgICAgICgweDMyNTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyRkUpIHx8XG5cdCAgICAgICgweDMzMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDREQkYpIHx8XG5cdCAgICAgICgweDRFMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE0OEMpIHx8XG5cdCAgICAgICgweEE0OTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE0QzYpIHx8XG5cdCAgICAgICgweEE5NjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE5N0MpIHx8XG5cdCAgICAgICgweEFDMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3QTMpIHx8XG5cdCAgICAgICgweEQ3QjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3QzYpIHx8XG5cdCAgICAgICgweEQ3Q0IgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3RkIpIHx8XG5cdCAgICAgICgweEY5MDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZBRkYpIHx8XG5cdCAgICAgICgweEZFMTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFMTkpIHx8XG5cdCAgICAgICgweEZFMzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNTIpIHx8XG5cdCAgICAgICgweEZFNTQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNjYpIHx8XG5cdCAgICAgICgweEZFNjggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNkIpIHx8XG5cdCAgICAgICgweDFCMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxQjAwMSkgfHxcblx0ICAgICAgKDB4MUYyMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMjAyKSB8fFxuXHQgICAgICAoMHgxRjIxMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MUYyM0EpIHx8XG5cdCAgICAgICgweDFGMjQwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRjI0OCkgfHxcblx0ICAgICAgKDB4MUYyNTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMjUxKSB8fFxuXHQgICAgICAoMHgyMDAwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MkY3M0YpIHx8XG5cdCAgICAgICgweDJCNzQwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyRkZGRCkgfHxcblx0ICAgICAgKDB4MzAwMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDNGRkZEKSkge1xuXHQgICAgcmV0dXJuICdXJztcblx0ICB9XG5cdCAgaWYgKCgweDAwMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwN0UpIHx8XG5cdCAgICAgICgweDAwQTIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwQTMpIHx8XG5cdCAgICAgICgweDAwQTUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwQTYpIHx8XG5cdCAgICAgICgweDAwQUMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEFGID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjdFNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjdFRCkgfHxcblx0ICAgICAgKDB4Mjk4NSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4Mjk4NikpIHtcblx0ICAgIHJldHVybiAnTmEnO1xuXHQgIH1cblx0ICBpZiAoKDB4MDBBMSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwQTQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEE3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEE4KSB8fFxuXHQgICAgICAoMHgwMEFBID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDBBRCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBBRSkgfHxcblx0ICAgICAgKDB4MDBCMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCNCkgfHxcblx0ICAgICAgKDB4MDBCNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCQSkgfHxcblx0ICAgICAgKDB4MDBCQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCRikgfHxcblx0ICAgICAgKDB4MDBDNiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEQ3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEQ4KSB8fFxuXHQgICAgICAoMHgwMERFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEUxKSB8fFxuXHQgICAgICAoMHgwMEU2ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDBFOCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBFQSkgfHxcblx0ICAgICAgKDB4MDBFQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBFRCkgfHxcblx0ICAgICAgKDB4MDBGMCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwRjIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwRjMpIHx8XG5cdCAgICAgICgweDAwRjcgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwRkEpIHx8XG5cdCAgICAgICgweDAwRkMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEZFID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDEwMSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxMTEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTEzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDExQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxMjYgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAxMjcpIHx8XG5cdCAgICAgICgweDAxMkIgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTMxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTMzKSB8fFxuXHQgICAgICAoMHgwMTM4ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDEzRiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDE0MikgfHxcblx0ICAgICAgKDB4MDE0NCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxNDggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAxNEIpIHx8XG5cdCAgICAgICgweDAxNEQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTUyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTUzKSB8fFxuXHQgICAgICAoMHgwMTY2IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTY3KSB8fFxuXHQgICAgICAoMHgwMTZCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFDRSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMUQyID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFENCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxRDYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMUQ4ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFEQSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxREMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMjUxID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDI2MSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAyQzQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMkM3ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDJDOSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDJDQikgfHxcblx0ICAgICAgKDB4MDJDRCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAyRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMkQ4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMkRCKSB8fFxuXHQgICAgICAoMHgwMkREID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDJERiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAzMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzNkYpIHx8XG5cdCAgICAgICgweDAzOTEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQTEpIHx8XG5cdCAgICAgICgweDAzQTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQTkpIHx8XG5cdCAgICAgICgweDAzQjEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQzEpIHx8XG5cdCAgICAgICgweDAzQzMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQzkpIHx8XG5cdCAgICAgICgweDA0MDEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwNDEwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwNDRGKSB8fFxuXHQgICAgICAoMHgwNDUxID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjAxMCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwMTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMTYpIHx8XG5cdCAgICAgICgweDIwMTggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMTkpIHx8XG5cdCAgICAgICgweDIwMUMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMUQpIHx8XG5cdCAgICAgICgweDIwMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMjIpIHx8XG5cdCAgICAgICgweDIwMjQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMjcpIHx8XG5cdCAgICAgICgweDIwMzAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMDMyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMDMzKSB8fFxuXHQgICAgICAoMHgyMDM1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjAzQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwM0UgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMDc0ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjA3RiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwODEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwODQpIHx8XG5cdCAgICAgICgweDIwQUMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTAzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjEwNSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxMDkgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTEzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjExNiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxMjEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxMjIpIHx8XG5cdCAgICAgICgweDIxMjYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTJCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjE1MyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE1NCkgfHxcblx0ICAgICAgKDB4MjE1QiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE1RSkgfHxcblx0ICAgICAgKDB4MjE2MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE2QikgfHxcblx0ICAgICAgKDB4MjE3MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE3OSkgfHxcblx0ICAgICAgKDB4MjE4OSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxOTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxOTkpIHx8XG5cdCAgICAgICgweDIxQjggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxQjkpIHx8XG5cdCAgICAgICgweDIxRDIgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMUQ0ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjFFNyA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjAyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMjAzKSB8fFxuXHQgICAgICAoMHgyMjA3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMjA4KSB8fFxuXHQgICAgICAoMHgyMjBCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIwRiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMTEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjE1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIxQSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMUQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyMjApIHx8XG5cdCAgICAgICgweDIyMjMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjI1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIyNyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjIyQykgfHxcblx0ICAgICAgKDB4MjIyRSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMzQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyMzcpIHx8XG5cdCAgICAgICgweDIyM0MgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyM0QpIHx8XG5cdCAgICAgICgweDIyNDggPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjRDID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjI1MiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyNjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNjEpIHx8XG5cdCAgICAgICgweDIyNjQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNjcpIHx8XG5cdCAgICAgICgweDIyNkEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNkIpIHx8XG5cdCAgICAgICgweDIyNkUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNkYpIHx8XG5cdCAgICAgICgweDIyODIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyODMpIHx8XG5cdCAgICAgICgweDIyODYgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyODcpIHx8XG5cdCAgICAgICgweDIyOTUgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjk5ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjJBNSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyQkYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMzEyID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjQ2MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjRFOSkgfHxcblx0ICAgICAgKDB4MjRFQiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU0QikgfHxcblx0ICAgICAgKDB4MjU1MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU3MykgfHxcblx0ICAgICAgKDB4MjU4MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU4RikgfHxcblx0ICAgICAgKDB4MjU5MiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU5NSkgfHxcblx0ICAgICAgKDB4MjVBMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVBMSkgfHxcblx0ICAgICAgKDB4MjVBMyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVBOSkgfHxcblx0ICAgICAgKDB4MjVCMiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCMykgfHxcblx0ICAgICAgKDB4MjVCNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCNykgfHxcblx0ICAgICAgKDB4MjVCQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCRCkgfHxcblx0ICAgICAgKDB4MjVDMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVDMSkgfHxcblx0ICAgICAgKDB4MjVDNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVDOCkgfHxcblx0ICAgICAgKDB4MjVDQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI1Q0UgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI1RDEpIHx8XG5cdCAgICAgICgweDI1RTIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI1RTUpIHx8XG5cdCAgICAgICgweDI1RUYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjA1IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNjA2KSB8fFxuXHQgICAgICAoMHgyNjA5ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjYwRSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjYwRikgfHxcblx0ICAgICAgKDB4MjYxNCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjYxNSkgfHxcblx0ICAgICAgKDB4MjYxQyA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI2MUUgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjQwID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjY0MiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI2NjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NjEpIHx8XG5cdCAgICAgICgweDI2NjMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NjUpIHx8XG5cdCAgICAgICgweDI2NjcgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NkEpIHx8XG5cdCAgICAgICgweDI2NkMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NkQpIHx8XG5cdCAgICAgICgweDI2NkYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjlFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNjlGKSB8fFxuXHQgICAgICAoMHgyNkJFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkJGKSB8fFxuXHQgICAgICAoMHgyNkM0IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkNEKSB8fFxuXHQgICAgICAoMHgyNkNGIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkUxKSB8fFxuXHQgICAgICAoMHgyNkUzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjZFOCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjZGRikgfHxcblx0ICAgICAgKDB4MjczRCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI3NTcgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNzc2IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNzdGKSB8fFxuXHQgICAgICAoMHgyQjU1IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyQjU5KSB8fFxuXHQgICAgICAoMHgzMjQ4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgzMjRGKSB8fFxuXHQgICAgICAoMHhFMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGOEZGKSB8fFxuXHQgICAgICAoMHhGRTAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRTBGKSB8fFxuXHQgICAgICAoMHhGRkZEID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MUYxMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMTBBKSB8fFxuXHQgICAgICAoMHgxRjExMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MUYxMkQpIHx8XG5cdCAgICAgICgweDFGMTMwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRjE2OSkgfHxcblx0ICAgICAgKDB4MUYxNzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMTlBKSB8fFxuXHQgICAgICAoMHhFMDEwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4RTAxRUYpIHx8XG5cdCAgICAgICgweEYwMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkZGRCkgfHxcblx0ICAgICAgKDB4MTAwMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxMEZGRkQpKSB7XG5cdCAgICByZXR1cm4gJ0EnO1xuXHQgIH1cblxuXHQgIHJldHVybiAnTic7XG5cdH07XG5cblx0ZWF3LmNoYXJhY3Rlckxlbmd0aCA9IGZ1bmN0aW9uKGNoYXJhY3Rlcikge1xuXHQgIHZhciBjb2RlID0gdGhpcy5lYXN0QXNpYW5XaWR0aChjaGFyYWN0ZXIpO1xuXHQgIGlmIChjb2RlID09ICdGJyB8fCBjb2RlID09ICdXJyB8fCBjb2RlID09ICdBJykge1xuXHQgICAgcmV0dXJuIDI7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiAxO1xuXHQgIH1cblx0fTtcblxuXHQvLyBTcGxpdCBhIHN0cmluZyBjb25zaWRlcmluZyBzdXJyb2dhdGUtcGFpcnMuXG5cdGZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG5cdCAgcmV0dXJuIHN0cmluZy5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZykgfHwgW107XG5cdH1cblxuXHRlYXcubGVuZ3RoID0gZnVuY3Rpb24oc3RyaW5nKSB7XG5cdCAgdmFyIGNoYXJhY3RlcnMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG5cdCAgdmFyIGxlbiA9IDA7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICBsZW4gPSBsZW4gKyB0aGlzLmNoYXJhY3Rlckxlbmd0aChjaGFyYWN0ZXJzW2ldKTtcblx0ICB9XG5cdCAgcmV0dXJuIGxlbjtcblx0fTtcblxuXHRlYXcuc2xpY2UgPSBmdW5jdGlvbih0ZXh0LCBzdGFydCwgZW5kKSB7XG5cdCAgdGV4dExlbiA9IGVhdy5sZW5ndGgodGV4dCk7XG5cdCAgc3RhcnQgPSBzdGFydCA/IHN0YXJ0IDogMDtcblx0ICBlbmQgPSBlbmQgPyBlbmQgOiAxO1xuXHQgIGlmIChzdGFydCA8IDApIHtcblx0ICAgICAgc3RhcnQgPSB0ZXh0TGVuICsgc3RhcnQ7XG5cdCAgfVxuXHQgIGlmIChlbmQgPCAwKSB7XG5cdCAgICAgIGVuZCA9IHRleHRMZW4gKyBlbmQ7XG5cdCAgfVxuXHQgIHZhciByZXN1bHQgPSAnJztcblx0ICB2YXIgZWF3TGVuID0gMDtcblx0ICB2YXIgY2hhcnMgPSBzdHJpbmdUb0FycmF5KHRleHQpO1xuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBjaGFyID0gY2hhcnNbaV07XG5cdCAgICB2YXIgY2hhckxlbiA9IGVhdy5sZW5ndGgoY2hhcik7XG5cdCAgICBpZiAoZWF3TGVuID49IHN0YXJ0IC0gKGNoYXJMZW4gPT0gMiA/IDEgOiAwKSkge1xuXHQgICAgICAgIGlmIChlYXdMZW4gKyBjaGFyTGVuIDw9IGVuZCkge1xuXHQgICAgICAgICAgICByZXN1bHQgKz0gY2hhcjtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cdCAgICB9XG5cdCAgICBlYXdMZW4gKz0gY2hhckxlbjtcblx0ICB9XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTsgXG59IChlYXN0YXNpYW53aWR0aCkpO1xuXG52YXIgZWFzdGFzaWFud2lkdGhFeHBvcnRzID0gZWFzdGFzaWFud2lkdGguZXhwb3J0cztcbmNvbnN0IGVhc3RBc2lhbldpZHRoID0gLypAX19QVVJFX18qL2dldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGVhc3Rhc2lhbndpZHRoRXhwb3J0cyk7XG5cbmNvbnN0IGVtb2ppUmVnZXggPSAoKSA9PiB7XG5cdC8vIGh0dHBzOi8vbXRocy5iZS9lbW9qaVxuXHRyZXR1cm4gL1sjKjAtOV1cXHVGRTBGP1xcdTIwRTN8W1xceEE5XFx4QUVcXHUyMDNDXFx1MjA0OVxcdTIxMjJcXHUyMTM5XFx1MjE5NC1cXHUyMTk5XFx1MjFBOVxcdTIxQUFcXHUyMzFBXFx1MjMxQlxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjVGRVxcdTI2MDAtXFx1MjYwNFxcdTI2MEVcXHUyNjExXFx1MjYxNFxcdTI2MTVcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5MlxcdTI2OTQtXFx1MjY5N1xcdTI2OTlcXHUyNjlCXFx1MjY5Q1xcdTI2QTBcXHUyNkE3XFx1MjZBQVxcdTI2QjBcXHUyNkIxXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDOFxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RTlcXHUyNkYwLVxcdTI2RjVcXHUyNkY3XFx1MjZGOFxcdTI2RkFcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc1N1xcdTI3NjNcXHUyN0ExXFx1MjkzNFxcdTI5MzVcXHUyQjA1LVxcdTJCMDdcXHUyQjFCXFx1MkIxQ1xcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XVxcdUZFMEY/fFtcXHUyNjFEXFx1MjcwQ1xcdTI3MERdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1MjcwQVxcdTI3MEJdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI2OTNcXHUyNkExXFx1MjZBQlxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkZEXFx1MjcwNVxcdTI3MjhcXHUyNzRDXFx1Mjc0RVxcdTI3NTMtXFx1Mjc1NVxcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkI1MF18XFx1MjZGOSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1Mjc2NFxcdUZFMEY/KD86XFx1MjAwRCg/OlxcdUQ4M0RcXHVERDI1fFxcdUQ4M0VcXHVERTc5KSk/fFxcdUQ4M0MoPzpbXFx1REMwNFxcdURENzBcXHVERDcxXFx1REQ3RVxcdUREN0ZcXHVERTAyXFx1REUzN1xcdURGMjFcXHVERjI0LVxcdURGMkNcXHVERjM2XFx1REY3RFxcdURGOTZcXHVERjk3XFx1REY5OS1cXHVERjlCXFx1REY5RVxcdURGOUZcXHVERkNEXFx1REZDRVxcdURGRDQtXFx1REZERlxcdURGRjVcXHVERkY3XVxcdUZFMEY/fFtcXHVERjg1XFx1REZDMlxcdURGQzddKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURGQzNcXHVERkM0XFx1REZDQV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REZDQlxcdURGQ0NdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY4NFxcdURGODYtXFx1REY5M1xcdURGQTAtXFx1REZDMVxcdURGQzVcXHVERkM2XFx1REZDOFxcdURGQzlcXHVERkNGLVxcdURGRDNcXHVERkUwLVxcdURGRjBcXHVERkY4LVxcdURGRkZdfFxcdURERTZcXHVEODNDW1xcdURERTgtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGMlxcdURERjRcXHVEREY2LVxcdURERkFcXHVEREZDXFx1RERGRFxcdURERkZdfFxcdURERTdcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVGXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERFOFxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl18XFx1RERFOVxcdUQ4M0NbXFx1RERFQVxcdURERUNcXHVEREVGXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGRl18XFx1RERFQVxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERURcXHVEREY3LVxcdURERkFdfFxcdURERUJcXHVEODNDW1xcdURERUUtXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGN118XFx1RERFQ1xcdUQ4M0NbXFx1RERFNlxcdURERTdcXHVEREU5LVxcdURERUVcXHVEREYxLVxcdURERjNcXHVEREY1LVxcdURERkFcXHVEREZDXFx1RERGRV18XFx1RERFRFxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXXxcXHVEREVFXFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldfFxcdURERUZcXHVEODNDW1xcdURERUFcXHVEREYyXFx1RERGNFxcdURERjVdfFxcdURERjBcXHVEODNDW1xcdURERUFcXHVEREVDLVxcdURERUVcXHVEREYyXFx1RERGM1xcdURERjVcXHVEREY3XFx1RERGQ1xcdURERkVcXHVEREZGXXxcXHVEREYxXFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdfFxcdURERjJcXHVEODNDW1xcdURERTZcXHVEREU4LVxcdURERURcXHVEREYwLVxcdURERkZdfFxcdURERjNcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQS1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREY0XFx1RERGNVxcdURERjdcXHVEREZBXFx1RERGRl18XFx1RERGNFxcdUQ4M0NcXHVEREYyfFxcdURERjVcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV18XFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdURERjdcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXXxcXHVEREY4XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXXxcXHVEREY5XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl18XFx1RERGQVxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl18XFx1RERGQlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERUVcXHVEREYzXFx1RERGQV18XFx1RERGQ1xcdUQ4M0NbXFx1RERFQlxcdURERjhdfFxcdURERkRcXHVEODNDXFx1RERGMHxcXHVEREZFXFx1RDgzQ1tcXHVEREVBXFx1RERGOV18XFx1RERGRlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXXxcXHVERkYzXFx1RkUwRj8oPzpcXHUyMDBEKD86XFx1MjZBN1xcdUZFMEY/fFxcdUQ4M0NcXHVERjA4KSk/fFxcdURGRjQoPzpcXHUyMDBEXFx1MjYyMFxcdUZFMEY/fFxcdURCNDBcXHVEQzY3XFx1REI0MFxcdURDNjJcXHVEQjQwKD86XFx1REM2NVxcdURCNDBcXHVEQzZFXFx1REI0MFxcdURDNjd8XFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REM3N1xcdURCNDBcXHVEQzZDXFx1REI0MFxcdURDNzMpXFx1REI0MFxcdURDN0YpPyl8XFx1RDgzRCg/OltcXHVEQzA4XFx1REMyNl0oPzpcXHUyMDBEXFx1MkIxQik/fFtcXHVEQzNGXFx1RENGRFxcdURENDlcXHVERDRBXFx1REQ2RlxcdURENzBcXHVERDczXFx1REQ3Ni1cXHVERDc5XFx1REQ4N1xcdUREOEEtXFx1REQ4RFxcdUREQTVcXHVEREE4XFx1RERCMVxcdUREQjJcXHVEREJDXFx1RERDMi1cXHVEREM0XFx1REREMS1cXHVEREQzXFx1REREQy1cXHVERERFXFx1RERFMVxcdURERTNcXHVEREU4XFx1RERFRlxcdURERjNcXHVEREZBXFx1REVDQlxcdURFQ0QtXFx1REVDRlxcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUYwXFx1REVGM11cXHVGRTBGP3xbXFx1REM0MlxcdURDNDNcXHVEQzQ2LVxcdURDNTBcXHVEQzY2XFx1REM2N1xcdURDNkItXFx1REM2RFxcdURDNzJcXHVEQzc0LVxcdURDNzZcXHVEQzc4XFx1REM3Q1xcdURDODNcXHVEQzg1XFx1REM4RlxcdURDOTFcXHVEQ0FBXFx1REQ3QVxcdUREOTVcXHVERDk2XFx1REU0Q1xcdURFNEZcXHVERUMwXFx1REVDQ10oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQ3NFxcdUREOTBdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REMwMC1cXHVEQzA3XFx1REMwOS1cXHVEQzE0XFx1REMxNi1cXHVEQzI1XFx1REMyNy1cXHVEQzNBXFx1REMzQy1cXHVEQzNFXFx1REM0MFxcdURDNDRcXHVEQzQ1XFx1REM1MS1cXHVEQzY1XFx1REM2QVxcdURDNzktXFx1REM3QlxcdURDN0QtXFx1REM4MFxcdURDODRcXHVEQzg4LVxcdURDOEVcXHVEQzkwXFx1REM5Mi1cXHVEQ0E5XFx1RENBQi1cXHVEQ0ZDXFx1RENGRi1cXHVERDNEXFx1REQ0Qi1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1RERBNFxcdURERkItXFx1REUyRFxcdURFMkYtXFx1REUzNFxcdURFMzctXFx1REU0NFxcdURFNDgtXFx1REU0QVxcdURFODAtXFx1REVBMlxcdURFQTQtXFx1REVCM1xcdURFQjctXFx1REVCRlxcdURFQzEtXFx1REVDNVxcdURFRDAtXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFREMtXFx1REVERlxcdURFRUJcXHVERUVDXFx1REVGNC1cXHVERUZDXFx1REZFMC1cXHVERkVCXFx1REZGMF18XFx1REMxNSg/OlxcdTIwMERcXHVEODNFXFx1RERCQSk/fFxcdURDM0IoPzpcXHUyMDBEXFx1Mjc0NFxcdUZFMEY/KT98XFx1REM0MVxcdUZFMEY/KD86XFx1MjAwRFxcdUQ4M0RcXHVEREU4XFx1RkUwRj8pP3xcXHVEQzY4KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjh8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV1cXHUyMDBEXFx1RDgzRCg/OlxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKSkpP3xcXHVERkZFKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRV0pKSk/KSk/fFxcdURDNjkoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/W1xcdURDNjhcXHVEQzY5XXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEKD86W1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pP3xcXHVEQzY5XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KSl8XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKSkpPykpP3xcXHVEQzZGKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdURENzUoPzpcXHVGRTBGfFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdURFMkUoPzpcXHUyMDBEXFx1RDgzRFxcdURDQTgpP3xcXHVERTM1KD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCKT98XFx1REUzNig/OlxcdTIwMERcXHVEODNDXFx1REYyQlxcdUZFMEY/KT8pfFxcdUQ4M0UoPzpbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDMwLVxcdUREMzRcXHVERDM2XFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCQlxcdURERDJcXHVEREQzXFx1RERENVxcdURFQzMtXFx1REVDNVxcdURFRjBcXHVERUYyLVxcdURFRjhdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdUREREVcXHVERERGXSg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDIwLVxcdUREMjVcXHVERDI3LVxcdUREMkZcXHVERDNBXFx1REQzRi1cXHVERDQ1XFx1REQ0Ny1cXHVERDc2XFx1REQ3OC1cXHVEREI0XFx1RERCN1xcdUREQkFcXHVEREJDLVxcdUREQ0NcXHVEREQwXFx1RERFMC1cXHVEREZGXFx1REU3MC1cXHVERTdDXFx1REU4MC1cXHVERTg4XFx1REU5MC1cXHVERUJEXFx1REVCRi1cXHVERUMyXFx1REVDRS1cXHVERURCXFx1REVFMC1cXHVERUU4XXxcXHVERDNDKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGP3xcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xcXHVEREQxKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxKSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkMoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkYoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/KSk/fFxcdURFRjEoPzpcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSk/fFxcdURGRkMoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKT98XFx1REZGRCg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pP3xcXHVERkZFKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSk/fFxcdURGRkYoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkItXFx1REZGRV0pPykpPykvZztcbn07XG5cbmZ1bmN0aW9uIHN0cmluZ1dpZHRoJDEoc3RyaW5nLCBvcHRpb25zKSB7XG5cdGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJyB8fCBzdHJpbmcubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRvcHRpb25zID0ge1xuXHRcdGFtYmlndW91c0lzTmFycm93OiB0cnVlLFxuXHRcdGNvdW50QW5zaUVzY2FwZUNvZGVzOiBmYWxzZSxcblx0XHQuLi5vcHRpb25zLFxuXHR9O1xuXG5cdGlmICghb3B0aW9ucy5jb3VudEFuc2lFc2NhcGVDb2Rlcykge1xuXHRcdHN0cmluZyA9IHN0cmlwQW5zaShzdHJpbmcpO1xuXHR9XG5cblx0aWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGNvbnN0IGFtYmlndW91c0NoYXJhY3RlcldpZHRoID0gb3B0aW9ucy5hbWJpZ3VvdXNJc05hcnJvdyA/IDEgOiAyO1xuXHRsZXQgd2lkdGggPSAwO1xuXG5cdGZvciAoY29uc3Qge3NlZ21lbnQ6IGNoYXJhY3Rlcn0gb2YgbmV3IEludGwuU2VnbWVudGVyKCkuc2VnbWVudChzdHJpbmcpKSB7XG5cdFx0Y29uc3QgY29kZVBvaW50ID0gY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApO1xuXG5cdFx0Ly8gSWdub3JlIGNvbnRyb2wgY2hhcmFjdGVyc1xuXHRcdGlmIChjb2RlUG9pbnQgPD0gMHgxRiB8fCAoY29kZVBvaW50ID49IDB4N0YgJiYgY29kZVBvaW50IDw9IDB4OUYpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBJZ25vcmUgY29tYmluaW5nIGNoYXJhY3RlcnNcblx0XHRpZiAoY29kZVBvaW50ID49IDB4M18wMCAmJiBjb2RlUG9pbnQgPD0gMHgzXzZGKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRpZiAoZW1vamlSZWdleCgpLnRlc3QoY2hhcmFjdGVyKSkge1xuXHRcdFx0d2lkdGggKz0gMjtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNvZGUgPSBlYXN0QXNpYW5XaWR0aC5lYXN0QXNpYW5XaWR0aChjaGFyYWN0ZXIpO1xuXHRcdHN3aXRjaCAoY29kZSkge1xuXHRcdFx0Y2FzZSAnRic6XG5cdFx0XHRjYXNlICdXJzoge1xuXHRcdFx0XHR3aWR0aCArPSAyO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Y2FzZSAnQSc6IHtcblx0XHRcdFx0d2lkdGggKz0gYW1iaWd1b3VzQ2hhcmFjdGVyV2lkdGg7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdHdpZHRoICs9IDE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHdpZHRoO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVTdXBwb3J0ZWQoKSB7XG5cdGlmIChwcm9jZXNzJDEucGxhdGZvcm0gIT09ICd3aW4zMicpIHtcblx0XHRyZXR1cm4gcHJvY2VzcyQxLmVudi5URVJNICE9PSAnbGludXgnOyAvLyBMaW51eCBjb25zb2xlIChrZXJuZWwpXG5cdH1cblxuXHRyZXR1cm4gQm9vbGVhbihwcm9jZXNzJDEuZW52LkNJKVxuXHRcdHx8IEJvb2xlYW4ocHJvY2VzcyQxLmVudi5XVF9TRVNTSU9OKSAvLyBXaW5kb3dzIFRlcm1pbmFsXG5cdFx0fHwgQm9vbGVhbihwcm9jZXNzJDEuZW52LlRFUk1JTlVTX1NVQkxJTUUpIC8vIFRlcm1pbnVzICg8MC4yLjI3KVxuXHRcdHx8IHByb2Nlc3MkMS5lbnYuQ29uRW11VGFzayA9PT0gJ3tjbWQ6OkNtZGVyfScgLy8gQ29uRW11IGFuZCBjbWRlclxuXHRcdHx8IHByb2Nlc3MkMS5lbnYuVEVSTV9QUk9HUkFNID09PSAnVGVybWludXMtU3VibGltZSdcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk1fUFJPR1JBTSA9PT0gJ3ZzY29kZSdcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk0gPT09ICd4dGVybS0yNTZjb2xvcidcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk0gPT09ICdhbGFjcml0dHknXG5cdFx0fHwgcHJvY2VzcyQxLmVudi5URVJNSU5BTF9FTVVMQVRPUiA9PT0gJ0pldEJyYWlucy1KZWRpVGVybSc7XG59XG5cbmNvbnN0IFRZUEVfQ09MT1JfTUFQID0ge1xuICBpbmZvOiBcImN5YW5cIixcbiAgZmFpbDogXCJyZWRcIixcbiAgc3VjY2VzczogXCJncmVlblwiLFxuICByZWFkeTogXCJncmVlblwiLFxuICBzdGFydDogXCJtYWdlbnRhXCJcbn07XG5jb25zdCBMRVZFTF9DT0xPUl9NQVAgPSB7XG4gIDA6IFwicmVkXCIsXG4gIDE6IFwieWVsbG93XCJcbn07XG5jb25zdCB1bmljb2RlID0gaXNVbmljb2RlU3VwcG9ydGVkKCk7XG5jb25zdCBzID0gKGMsIGZhbGxiYWNrKSA9PiB1bmljb2RlID8gYyA6IGZhbGxiYWNrO1xuY29uc3QgVFlQRV9JQ09OUyA9IHtcbiAgZXJyb3I6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIGZhdGFsOiBzKFwiXFx1MjcxNlwiLCBcIlxceEQ3XCIpLFxuICByZWFkeTogcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpLFxuICB3YXJuOiBzKFwiXFx1MjZBMFwiLCBcIlxcdTIwM0NcIiksXG4gIGluZm86IHMoXCJcXHUyMTM5XCIsIFwiaVwiKSxcbiAgc3VjY2VzczogcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpLFxuICBkZWJ1ZzogcyhcIlxcdTI2OTlcIiwgXCJEXCIpLFxuICB0cmFjZTogcyhcIlxcdTIxOTJcIiwgXCJcXHUyMTkyXCIpLFxuICBmYWlsOiBzKFwiXFx1MjcxNlwiLCBcIlxceEQ3XCIpLFxuICBzdGFydDogcyhcIlxcdTI1RDBcIiwgXCJvXCIpLFxuICBsb2c6IFwiXCJcbn07XG5mdW5jdGlvbiBzdHJpbmdXaWR0aChzdHIpIHtcbiAgaWYgKCFJbnRsLlNlZ21lbnRlcikge1xuICAgIHJldHVybiBzdHJpcEFuc2kkMShzdHIpLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gc3RyaW5nV2lkdGgkMShzdHIpO1xufVxuY2xhc3MgRmFuY3lSZXBvcnRlciBleHRlbmRzIEJhc2ljUmVwb3J0ZXIge1xuICBmb3JtYXRTdGFjayhzdGFjaykge1xuICAgIHJldHVybiBcIlxcblwiICsgcGFyc2VTdGFjayhzdGFjaykubWFwKFxuICAgICAgKGxpbmUpID0+IFwiICBcIiArIGxpbmUucmVwbGFjZSgvXmF0ICsvLCAobSkgPT4gY29sb3JzLmdyYXkobSkpLnJlcGxhY2UoL1xcKCguKylcXCkvLCAoXywgbSkgPT4gYCgke2NvbG9ycy5jeWFuKG0pfSlgKVxuICAgICkuam9pbihcIlxcblwiKTtcbiAgfVxuICBmb3JtYXRUeXBlKGxvZ09iaiwgaXNCYWRnZSwgb3B0cykge1xuICAgIGNvbnN0IHR5cGVDb2xvciA9IFRZUEVfQ09MT1JfTUFQW2xvZ09iai50eXBlXSB8fCBMRVZFTF9DT0xPUl9NQVBbbG9nT2JqLmxldmVsXSB8fCBcImdyYXlcIjtcbiAgICBpZiAoaXNCYWRnZSkge1xuICAgICAgcmV0dXJuIGdldEJnQ29sb3IodHlwZUNvbG9yKShcbiAgICAgICAgY29sb3JzLmJsYWNrKGAgJHtsb2dPYmoudHlwZS50b1VwcGVyQ2FzZSgpfSBgKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgX3R5cGUgPSB0eXBlb2YgVFlQRV9JQ09OU1tsb2dPYmoudHlwZV0gPT09IFwic3RyaW5nXCIgPyBUWVBFX0lDT05TW2xvZ09iai50eXBlXSA6IGxvZ09iai5pY29uIHx8IGxvZ09iai50eXBlO1xuICAgIHJldHVybiBfdHlwZSA/IGdldENvbG9yKHR5cGVDb2xvcikoX3R5cGUpIDogXCJcIjtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgW21lc3NhZ2UsIC4uLmFkZGl0aW9uYWxdID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKS5zcGxpdChcbiAgICAgIFwiXFxuXCJcbiAgICApO1xuICAgIGlmIChsb2dPYmoudHlwZSA9PT0gXCJib3hcIikge1xuICAgICAgcmV0dXJuIGJveChcbiAgICAgICAgY2hhcmFjdGVyRm9ybWF0KFxuICAgICAgICAgIG1lc3NhZ2UgKyAoYWRkaXRpb25hbC5sZW5ndGggPiAwID8gXCJcXG5cIiArIGFkZGl0aW9uYWwuam9pbihcIlxcblwiKSA6IFwiXCIpXG4gICAgICAgICksXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogbG9nT2JqLnRpdGxlID8gY2hhcmFjdGVyRm9ybWF0KGxvZ09iai50aXRsZSkgOiB2b2lkIDAsXG4gICAgICAgICAgc3R5bGU6IGxvZ09iai5zdHlsZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gdGhpcy5mb3JtYXREYXRlKGxvZ09iai5kYXRlLCBvcHRzKTtcbiAgICBjb25zdCBjb2xvcmVkRGF0ZSA9IGRhdGUgJiYgY29sb3JzLmdyYXkoZGF0ZSk7XG4gICAgY29uc3QgaXNCYWRnZSA9IGxvZ09iai5iYWRnZSA/PyBsb2dPYmoubGV2ZWwgPCAyO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm1hdFR5cGUobG9nT2JqLCBpc0JhZGdlLCBvcHRzKTtcbiAgICBjb25zdCB0YWcgPSBsb2dPYmoudGFnID8gY29sb3JzLmdyYXkobG9nT2JqLnRhZykgOiBcIlwiO1xuICAgIGxldCBsaW5lO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmZpbHRlckFuZEpvaW4oW3R5cGUsIGNoYXJhY3RlckZvcm1hdChtZXNzYWdlKV0pO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5maWx0ZXJBbmRKb2luKG9wdHMuY29sdW1ucyA/IFt0YWcsIGNvbG9yZWREYXRlXSA6IFt0YWddKTtcbiAgICBjb25zdCBzcGFjZSA9IChvcHRzLmNvbHVtbnMgfHwgMCkgLSBzdHJpbmdXaWR0aChsZWZ0KSAtIHN0cmluZ1dpZHRoKHJpZ2h0KSAtIDI7XG4gICAgbGluZSA9IHNwYWNlID4gMCAmJiAob3B0cy5jb2x1bW5zIHx8IDApID49IDgwID8gbGVmdCArIFwiIFwiLnJlcGVhdChzcGFjZSkgKyByaWdodCA6IChyaWdodCA/IGAke2NvbG9ycy5ncmF5KGBbJHtyaWdodH1dYCl9IGAgOiBcIlwiKSArIGxlZnQ7XG4gICAgbGluZSArPSBjaGFyYWN0ZXJGb3JtYXQoXG4gICAgICBhZGRpdGlvbmFsLmxlbmd0aCA+IDAgPyBcIlxcblwiICsgYWRkaXRpb25hbC5qb2luKFwiXFxuXCIpIDogXCJcIlxuICAgICk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcInRyYWNlXCIpIHtcbiAgICAgIGNvbnN0IF9lcnIgPSBuZXcgRXJyb3IoXCJUcmFjZTogXCIgKyBsb2dPYmoubWVzc2FnZSk7XG4gICAgICBsaW5lICs9IHRoaXMuZm9ybWF0U3RhY2soX2Vyci5zdGFjayB8fCBcIlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQmFkZ2UgPyBcIlxcblwiICsgbGluZSArIFwiXFxuXCIgOiBsaW5lO1xuICB9XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJGb3JtYXQoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvYChbXmBdKylgL2dtLCAoXywgbSkgPT4gY29sb3JzLmN5YW4obSkpLnJlcGxhY2UoL1xccytfKFteX10rKV9cXHMrL2dtLCAoXywgbSkgPT4gYCAke2NvbG9ycy51bmRlcmxpbmUobSl9IGApO1xufVxuZnVuY3Rpb24gZ2V0Q29sb3IoY29sb3IgPSBcIndoaXRlXCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzLndoaXRlO1xufVxuZnVuY3Rpb24gZ2V0QmdDb2xvcihjb2xvciA9IFwiYmdXaGl0ZVwiKSB7XG4gIHJldHVybiBjb2xvcnNbYGJnJHtjb2xvclswXS50b1VwcGVyQ2FzZSgpfSR7Y29sb3Iuc2xpY2UoMSl9YF0gfHwgY29sb3JzLmJnV2hpdGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIGxldCBsZXZlbCA9IF9nZXREZWZhdWx0TG9nTGV2ZWwoKTtcbiAgaWYgKHByb2Nlc3MuZW52LkNPTlNPTEFfTEVWRUwpIHtcbiAgICBsZXZlbCA9IE51bWJlci5wYXJzZUludChwcm9jZXNzLmVudi5DT05TT0xBX0xFVkVMKSA/PyBsZXZlbDtcbiAgfVxuICBjb25zdCBjb25zb2xhMiA9IGNyZWF0ZUNvbnNvbGEkMSh7XG4gICAgbGV2ZWwsXG4gICAgZGVmYXVsdHM6IHsgbGV2ZWwgfSxcbiAgICBzdGRvdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICAgIHN0ZGVycjogcHJvY2Vzcy5zdGRlcnIsXG4gICAgcHJvbXB0OiAoLi4uYXJncykgPT4gaW1wb3J0KCcuLi9jaHVua3MvcHJvbXB0Lm1qcycpLnRoZW4oKG0pID0+IG0ucHJvbXB0KC4uLmFyZ3MpKSxcbiAgICByZXBvcnRlcnM6IG9wdGlvbnMucmVwb3J0ZXJzIHx8IFtcbiAgICAgIG9wdGlvbnMuZmFuY3kgPz8gIShpc0NJIHx8IGlzVGVzdCkgPyBuZXcgRmFuY3lSZXBvcnRlcigpIDogbmV3IEJhc2ljUmVwb3J0ZXIoKVxuICAgIF0sXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcbiAgcmV0dXJuIGNvbnNvbGEyO1xufVxuZnVuY3Rpb24gX2dldERlZmF1bHRMb2dMZXZlbCgpIHtcbiAgaWYgKGlzRGVidWcpIHtcbiAgICByZXR1cm4gTG9nTGV2ZWxzLmRlYnVnO1xuICB9XG4gIGlmIChpc1Rlc3QpIHtcbiAgICByZXR1cm4gTG9nTGV2ZWxzLndhcm47XG4gIH1cbiAgcmV0dXJuIExvZ0xldmVscy5pbmZvO1xufVxuY29uc3QgY29uc29sYSA9IGNyZWF0ZUNvbnNvbGEoKTtcblxuZXhwb3J0IHsgY29uc29sYSBhcyBhLCBjcmVhdGVDb25zb2xhIGFzIGMsIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzIGFzIGcsIGlzVW5pY29kZVN1cHBvcnRlZCBhcyBpIH07XG4iLCAiZXhwb3J0IHsgYSBhcyBjb25zb2xhLCBjIGFzIGNyZWF0ZUNvbnNvbGEsIGEgYXMgZGVmYXVsdCB9IGZyb20gJy4vc2hhcmVkL2NvbnNvbGEuMzZjMDAzNGYubWpzJztcbmV4cG9ydCB7IENvbnNvbGEsIExvZ0xldmVscywgTG9nVHlwZXMgfSBmcm9tICcuL2NvcmUubWpzJztcbmltcG9ydCAnLi9zaGFyZWQvY29uc29sYS4wNmFkOGE2NC5tanMnO1xuaW1wb3J0ICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0ICcuL3V0aWxzLm1qcyc7XG5pbXBvcnQgJ25vZGU6dHR5JztcbmltcG9ydCAnbm9kZTp1dGlsJztcbmltcG9ydCAnbm9kZTpwYXRoJztcbiIsICJpbXBvcnQgY29uc29sYSBmcm9tICdjb25zb2xhJztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJ2NvbnNvbGEvdXRpbHMnO1xuXG5mdW5jdGlvbiB0b0FycmF5KHZhbCkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuICByZXR1cm4gdmFsID09PSB2b2lkIDAgPyBbXSA6IFt2YWxdO1xufVxuZnVuY3Rpb24gZm9ybWF0TGluZUNvbHVtbnMobGluZXMsIGxpbmVQcmVmaXggPSBcIlwiKSB7XG4gIGNvbnN0IG1heExlbmdoID0gW107XG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGZvciAoY29uc3QgW2ksIGVsZW1lbnRdIG9mIGxpbmUuZW50cmllcygpKSB7XG4gICAgICBtYXhMZW5naFtpXSA9IE1hdGgubWF4KG1heExlbmdoW2ldIHx8IDAsIGVsZW1lbnQubGVuZ3RoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpbmVzLm1hcChcbiAgICAobCkgPT4gbC5tYXAoXG4gICAgICAoYywgaSkgPT4gbGluZVByZWZpeCArIGNbaSA9PT0gMCA/IFwicGFkU3RhcnRcIiA6IFwicGFkRW5kXCJdKG1heExlbmdoW2ldKVxuICAgICkuam9pbihcIiAgXCIpXG4gICkuam9pbihcIlxcblwiKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVWYWx1ZShpbnB1dCkge1xuICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSBcImZ1bmN0aW9uXCIgPyBpbnB1dCgpIDogaW5wdXQ7XG59XG5jbGFzcyBDTElFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSwgY29kZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5uYW1lID0gXCJDTElFcnJvclwiO1xuICB9XG59XG5cbmNvbnN0IE5VTUJFUl9DSEFSX1JFID0gL1xcZC87XG5jb25zdCBTVFJfU1BMSVRURVJTID0gW1wiLVwiLCBcIl9cIiwgXCIvXCIsIFwiLlwiXTtcbmZ1bmN0aW9uIGlzVXBwZXJjYXNlKGNoYXIgPSBcIlwiKSB7XG4gIGlmIChOVU1CRVJfQ0hBUl9SRS50ZXN0KGNoYXIpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICByZXR1cm4gY2hhciAhPT0gY2hhci50b0xvd2VyQ2FzZSgpO1xufVxuZnVuY3Rpb24gc3BsaXRCeUNhc2Uoc3RyLCBzZXBhcmF0b3JzKSB7XG4gIGNvbnN0IHNwbGl0dGVycyA9IHNlcGFyYXRvcnMgPz8gU1RSX1NQTElUVEVSUztcbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgaWYgKCFzdHIgfHwgdHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuICBsZXQgYnVmZiA9IFwiXCI7XG4gIGxldCBwcmV2aW91c1VwcGVyO1xuICBsZXQgcHJldmlvdXNTcGxpdHRlcjtcbiAgZm9yIChjb25zdCBjaGFyIG9mIHN0cikge1xuICAgIGNvbnN0IGlzU3BsaXR0ZXIgPSBzcGxpdHRlcnMuaW5jbHVkZXMoY2hhcik7XG4gICAgaWYgKGlzU3BsaXR0ZXIgPT09IHRydWUpIHtcbiAgICAgIHBhcnRzLnB1c2goYnVmZik7XG4gICAgICBidWZmID0gXCJcIjtcbiAgICAgIHByZXZpb3VzVXBwZXIgPSB2b2lkIDA7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNVcHBlciA9IGlzVXBwZXJjYXNlKGNoYXIpO1xuICAgIGlmIChwcmV2aW91c1NwbGl0dGVyID09PSBmYWxzZSkge1xuICAgICAgaWYgKHByZXZpb3VzVXBwZXIgPT09IGZhbHNlICYmIGlzVXBwZXIgPT09IHRydWUpIHtcbiAgICAgICAgcGFydHMucHVzaChidWZmKTtcbiAgICAgICAgYnVmZiA9IGNoYXI7XG4gICAgICAgIHByZXZpb3VzVXBwZXIgPSBpc1VwcGVyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2aW91c1VwcGVyID09PSB0cnVlICYmIGlzVXBwZXIgPT09IGZhbHNlICYmIGJ1ZmYubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBsYXN0Q2hhciA9IGJ1ZmYuYXQoLTEpO1xuICAgICAgICBwYXJ0cy5wdXNoKGJ1ZmYuc2xpY2UoMCwgTWF0aC5tYXgoMCwgYnVmZi5sZW5ndGggLSAxKSkpO1xuICAgICAgICBidWZmID0gbGFzdENoYXIgKyBjaGFyO1xuICAgICAgICBwcmV2aW91c1VwcGVyID0gaXNVcHBlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIGJ1ZmYgKz0gY2hhcjtcbiAgICBwcmV2aW91c1VwcGVyID0gaXNVcHBlcjtcbiAgICBwcmV2aW91c1NwbGl0dGVyID0gaXNTcGxpdHRlcjtcbiAgfVxuICBwYXJ0cy5wdXNoKGJ1ZmYpO1xuICByZXR1cm4gcGFydHM7XG59XG5mdW5jdGlvbiB1cHBlckZpcnN0KHN0cikge1xuICByZXR1cm4gc3RyID8gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkgOiBcIlwiO1xufVxuZnVuY3Rpb24gbG93ZXJGaXJzdChzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b0xvd2VyQ2FzZSgpICsgc3RyLnNsaWNlKDEpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIHBhc2NhbENhc2Uoc3RyLCBvcHRzKSB7XG4gIHJldHVybiBzdHIgPyAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyIDogc3BsaXRCeUNhc2Uoc3RyKSkubWFwKChwKSA9PiB1cHBlckZpcnN0KG9wdHM/Lm5vcm1hbGl6ZSA/IHAudG9Mb3dlckNhc2UoKSA6IHApKS5qb2luKFwiXCIpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGNhbWVsQ2FzZShzdHIsIG9wdHMpIHtcbiAgcmV0dXJuIGxvd2VyRmlyc3QocGFzY2FsQ2FzZShzdHIgfHwgXCJcIiwgb3B0cykpO1xufVxuZnVuY3Rpb24ga2ViYWJDYXNlKHN0ciwgam9pbmVyKSB7XG4gIHJldHVybiBzdHIgPyAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyIDogc3BsaXRCeUNhc2Uoc3RyKSkubWFwKChwKSA9PiBwLnRvTG93ZXJDYXNlKCkpLmpvaW4oam9pbmVyID8/IFwiLVwiKSA6IFwiXCI7XG59XG5cbmZ1bmN0aW9uIHRvQXJyKGFueSkge1xuICByZXR1cm4gYW55ID09IHZvaWQgMCA/IFtdIDogQXJyYXkuaXNBcnJheShhbnkpID8gYW55IDogW2FueV07XG59XG5mdW5jdGlvbiB0b1ZhbChvdXQsIGtleSwgdmFsLCBvcHRzKSB7XG4gIGxldCB4O1xuICBjb25zdCBvbGQgPSBvdXRba2V5XTtcbiAgY29uc3Qgbnh0ID0gfm9wdHMuc3RyaW5nLmluZGV4T2Yoa2V5KSA/IHZhbCA9PSB2b2lkIDAgfHwgdmFsID09PSB0cnVlID8gXCJcIiA6IFN0cmluZyh2YWwpIDogdHlwZW9mIHZhbCA9PT0gXCJib29sZWFuXCIgPyB2YWwgOiB+b3B0cy5ib29sZWFuLmluZGV4T2Yoa2V5KSA/IHZhbCA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOiB2YWwgPT09IFwidHJ1ZVwiIHx8IChvdXQuXy5wdXNoKCh4ID0gK3ZhbCwgeCAqIDAgPT09IDApID8geCA6IHZhbCksICEhdmFsKSA6ICh4ID0gK3ZhbCwgeCAqIDAgPT09IDApID8geCA6IHZhbDtcbiAgb3V0W2tleV0gPSBvbGQgPT0gdm9pZCAwID8gbnh0IDogQXJyYXkuaXNBcnJheShvbGQpID8gb2xkLmNvbmNhdChueHQpIDogW29sZCwgbnh0XTtcbn1cbmZ1bmN0aW9uIHBhcnNlUmF3QXJncyhhcmdzID0gW10sIG9wdHMgPSB7fSkge1xuICBsZXQgaztcbiAgbGV0IGFycjtcbiAgbGV0IGFyZztcbiAgbGV0IG5hbWU7XG4gIGxldCB2YWw7XG4gIGNvbnN0IG91dCA9IHsgXzogW10gfTtcbiAgbGV0IGkgPSAwO1xuICBsZXQgaiA9IDA7XG4gIGxldCBpZHggPSAwO1xuICBjb25zdCBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgY29uc3QgYWxpYmkgPSBvcHRzLmFsaWFzICE9PSB2b2lkIDA7XG4gIGNvbnN0IHN0cmljdCA9IG9wdHMudW5rbm93biAhPT0gdm9pZCAwO1xuICBjb25zdCBkZWZhdWx0cyA9IG9wdHMuZGVmYXVsdCAhPT0gdm9pZCAwO1xuICBvcHRzLmFsaWFzID0gb3B0cy5hbGlhcyB8fCB7fTtcbiAgb3B0cy5zdHJpbmcgPSB0b0FycihvcHRzLnN0cmluZyk7XG4gIG9wdHMuYm9vbGVhbiA9IHRvQXJyKG9wdHMuYm9vbGVhbik7XG4gIGlmIChhbGliaSkge1xuICAgIGZvciAoayBpbiBvcHRzLmFsaWFzKSB7XG4gICAgICBhcnIgPSBvcHRzLmFsaWFzW2tdID0gdG9BcnIob3B0cy5hbGlhc1trXSk7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIChvcHRzLmFsaWFzW2FycltpXV0gPSBhcnIuY29uY2F0KGspKS5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IG9wdHMuYm9vbGVhbi5sZW5ndGg7IGktLSA+IDA7ICkge1xuICAgIGFyciA9IG9wdHMuYWxpYXNbb3B0cy5ib29sZWFuW2ldXSB8fCBbXTtcbiAgICBmb3IgKGogPSBhcnIubGVuZ3RoOyBqLS0gPiAwOyApIHtcbiAgICAgIG9wdHMuYm9vbGVhbi5wdXNoKGFycltqXSk7XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IG9wdHMuc3RyaW5nLmxlbmd0aDsgaS0tID4gMDsgKSB7XG4gICAgYXJyID0gb3B0cy5hbGlhc1tvcHRzLnN0cmluZ1tpXV0gfHwgW107XG4gICAgZm9yIChqID0gYXJyLmxlbmd0aDsgai0tID4gMDsgKSB7XG4gICAgICBvcHRzLnN0cmluZy5wdXNoKGFycltqXSk7XG4gICAgfVxuICB9XG4gIGlmIChkZWZhdWx0cykge1xuICAgIGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcbiAgICAgIG5hbWUgPSB0eXBlb2Ygb3B0cy5kZWZhdWx0W2tdO1xuICAgICAgYXJyID0gb3B0cy5hbGlhc1trXSA9IG9wdHMuYWxpYXNba10gfHwgW107XG4gICAgICBpZiAob3B0c1tuYW1lXSAhPT0gdm9pZCAwKSB7XG4gICAgICAgIG9wdHNbbmFtZV0ucHVzaChrKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG9wdHNbbmFtZV0ucHVzaChhcnJbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IGtleXMgPSBzdHJpY3QgPyBPYmplY3Qua2V5cyhvcHRzLmFsaWFzKSA6IFtdO1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT09IFwiLS1cIikge1xuICAgICAgb3V0Ll8gPSBvdXQuXy5jb25jYXQoYXJncy5zbGljZSgrK2kpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmb3IgKGogPSAwOyBqIDwgYXJnLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoYXJnLmNoYXJDb2RlQXQoaikgIT09IDQ1KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaiA9PT0gMCkge1xuICAgICAgb3V0Ll8ucHVzaChhcmcpO1xuICAgIH0gZWxzZSBpZiAoYXJnLnN1YnN0cmluZyhqLCBqICsgMykgPT09IFwibm8tXCIpIHtcbiAgICAgIG5hbWUgPSBhcmcuc2xpY2UoTWF0aC5tYXgoMCwgaiArIDMpKTtcbiAgICAgIGlmIChzdHJpY3QgJiYgIX5rZXlzLmluZGV4T2YobmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIG9wdHMudW5rbm93bihhcmcpO1xuICAgICAgfVxuICAgICAgb3V0W25hbWVdID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaWR4ID0gaiArIDE7IGlkeCA8IGFyZy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgIGlmIChhcmcuY2hhckNvZGVBdChpZHgpID09PSA2MSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuYW1lID0gYXJnLnN1YnN0cmluZyhqLCBpZHgpO1xuICAgICAgdmFsID0gYXJnLnNsaWNlKE1hdGgubWF4KDAsICsraWR4KSkgfHwgaSArIDEgPT09IGxlbiB8fCAoXCJcIiArIGFyZ3NbaSArIDFdKS5jaGFyQ29kZUF0KDApID09PSA0NSB8fCBhcmdzWysraV07XG4gICAgICBhcnIgPSBqID09PSAyID8gW25hbWVdIDogbmFtZTtcbiAgICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgYXJyLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgbmFtZSA9IGFycltpZHhdO1xuICAgICAgICBpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdHMudW5rbm93bihcIi1cIi5yZXBlYXQoaikgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0b1ZhbChvdXQsIG5hbWUsIGlkeCArIDEgPCBhcnIubGVuZ3RoIHx8IHZhbCwgb3B0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChkZWZhdWx0cykge1xuICAgIGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcbiAgICAgIGlmIChvdXRba10gPT09IHZvaWQgMCkge1xuICAgICAgICBvdXRba10gPSBvcHRzLmRlZmF1bHRba107XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChhbGliaSkge1xuICAgIGZvciAoayBpbiBvdXQpIHtcbiAgICAgIGFyciA9IG9wdHMuYWxpYXNba10gfHwgW107XG4gICAgICB3aGlsZSAoYXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3V0W2Fyci5zaGlmdCgpXSA9IG91dFtrXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2VBcmdzKHJhd0FyZ3MsIGFyZ3NEZWYpIHtcbiAgY29uc3QgcGFyc2VPcHRpb25zID0ge1xuICAgIGJvb2xlYW46IFtdLFxuICAgIHN0cmluZzogW10sXG4gICAgbWl4ZWQ6IFtdLFxuICAgIGFsaWFzOiB7fSxcbiAgICBkZWZhdWx0OiB7fVxuICB9O1xuICBjb25zdCBhcmdzID0gcmVzb2x2ZUFyZ3MoYXJnc0RlZik7XG4gIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICBpZiAoYXJnLnR5cGUgPT09IFwicG9zaXRpb25hbFwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFyZy50eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuc3RyaW5nLnB1c2goYXJnLm5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXJnLnR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuYm9vbGVhbi5wdXNoKGFyZy5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGFyZy5kZWZhdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgIHBhcnNlT3B0aW9ucy5kZWZhdWx0W2FyZy5uYW1lXSA9IGFyZy5kZWZhdWx0O1xuICAgIH1cbiAgICBpZiAoYXJnLmFsaWFzKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuYWxpYXNbYXJnLm5hbWVdID0gYXJnLmFsaWFzO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXJzZWQgPSBwYXJzZVJhd0FyZ3MocmF3QXJncywgcGFyc2VPcHRpb25zKTtcbiAgY29uc3QgWy4uLnBvc2l0aW9uYWxBcmd1bWVudHNdID0gcGFyc2VkLl87XG4gIGNvbnN0IHBhcnNlZEFyZ3NQcm94eSA9IG5ldyBQcm94eShwYXJzZWQsIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdID8/IHRhcmdldFtjYW1lbENhc2UocHJvcCldID8/IHRhcmdldFtrZWJhYkNhc2UocHJvcCldO1xuICAgIH1cbiAgfSk7XG4gIGZvciAoY29uc3QgWywgYXJnXSBvZiBhcmdzLmVudHJpZXMoKSkge1xuICAgIGlmIChhcmcudHlwZSA9PT0gXCJwb3NpdGlvbmFsXCIpIHtcbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbmFsQXJndW1lbnQgPSBwb3NpdGlvbmFsQXJndW1lbnRzLnNoaWZ0KCk7XG4gICAgICBpZiAobmV4dFBvc2l0aW9uYWxBcmd1bWVudCAhPT0gdm9pZCAwKSB7XG4gICAgICAgIHBhcnNlZEFyZ3NQcm94eVthcmcubmFtZV0gPSBuZXh0UG9zaXRpb25hbEFyZ3VtZW50O1xuICAgICAgfSBlbHNlIGlmIChhcmcuZGVmYXVsdCA9PT0gdm9pZCAwICYmIGFyZy5yZXF1aXJlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKFxuICAgICAgICAgIGBNaXNzaW5nIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICR7YXJnLm5hbWUudG9VcHBlckNhc2UoKX1gLFxuICAgICAgICAgIFwiRUFSR1wiXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRBcmdzUHJveHlbYXJnLm5hbWVdID0gYXJnLmRlZmF1bHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcmcucmVxdWlyZWQgJiYgcGFyc2VkQXJnc1Byb3h5W2FyZy5uYW1lXSA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQ6IC0tJHthcmcubmFtZX1gLCBcIkVBUkdcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJzZWRBcmdzUHJveHk7XG59XG5mdW5jdGlvbiByZXNvbHZlQXJncyhhcmdzRGVmKSB7XG4gIGNvbnN0IGFyZ3MgPSBbXTtcbiAgZm9yIChjb25zdCBbbmFtZSwgYXJnRGVmXSBvZiBPYmplY3QuZW50cmllcyhhcmdzRGVmIHx8IHt9KSkge1xuICAgIGFyZ3MucHVzaCh7XG4gICAgICAuLi5hcmdEZWYsXG4gICAgICBuYW1lLFxuICAgICAgYWxpYXM6IHRvQXJyYXkoYXJnRGVmLmFsaWFzKVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBhcmdzO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVDb21tYW5kKGRlZikge1xuICByZXR1cm4gZGVmO1xufVxuYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjbWQsIG9wdHMpIHtcbiAgY29uc3QgY21kQXJncyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuYXJncyB8fCB7fSk7XG4gIGNvbnN0IHBhcnNlZEFyZ3MgPSBwYXJzZUFyZ3Mob3B0cy5yYXdBcmdzLCBjbWRBcmdzKTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICByYXdBcmdzOiBvcHRzLnJhd0FyZ3MsXG4gICAgYXJnczogcGFyc2VkQXJncyxcbiAgICBkYXRhOiBvcHRzLmRhdGEsXG4gICAgY21kXG4gIH07XG4gIGlmICh0eXBlb2YgY21kLnNldHVwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBhd2FpdCBjbWQuc2V0dXAoY29udGV4dCk7XG4gIH1cbiAgbGV0IHJlc3VsdDtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdWJDb21tYW5kcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuc3ViQ29tbWFuZHMpO1xuICAgIGlmIChzdWJDb21tYW5kcyAmJiBPYmplY3Qua2V5cyhzdWJDb21tYW5kcykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3ViQ29tbWFuZEFyZ0luZGV4ID0gb3B0cy5yYXdBcmdzLmZpbmRJbmRleChcbiAgICAgICAgKGFyZykgPT4gIWFyZy5zdGFydHNXaXRoKFwiLVwiKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1YkNvbW1hbmROYW1lID0gb3B0cy5yYXdBcmdzW3N1YkNvbW1hbmRBcmdJbmRleF07XG4gICAgICBpZiAoc3ViQ29tbWFuZE5hbWUpIHtcbiAgICAgICAgaWYgKCFzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXG4gICAgICAgICAgICBgVW5rbm93biBjb21tYW5kIFxcYCR7c3ViQ29tbWFuZE5hbWV9XFxgYCxcbiAgICAgICAgICAgIFwiRV9VTktOT1dOX0NPTU1BTkRcIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3ViQ29tbWFuZCA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pO1xuICAgICAgICBpZiAoc3ViQ29tbWFuZCkge1xuICAgICAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoc3ViQ29tbWFuZCwge1xuICAgICAgICAgICAgcmF3QXJnczogb3B0cy5yYXdBcmdzLnNsaWNlKHN1YkNvbW1hbmRBcmdJbmRleCArIDEpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWNtZC5ydW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKGBObyBjb21tYW5kIHNwZWNpZmllZC5gLCBcIkVfTk9fQ09NTUFORFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjbWQucnVuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGNtZC5ydW4oY29udGV4dCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGlmICh0eXBlb2YgY21kLmNsZWFudXAgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgYXdhaXQgY21kLmNsZWFudXAoY29udGV4dCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJlc3VsdCB9O1xufVxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVN1YkNvbW1hbmQoY21kLCByYXdBcmdzLCBwYXJlbnQpIHtcbiAgY29uc3Qgc3ViQ29tbWFuZHMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLnN1YkNvbW1hbmRzKTtcbiAgaWYgKHN1YkNvbW1hbmRzICYmIE9iamVjdC5rZXlzKHN1YkNvbW1hbmRzKS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgc3ViQ29tbWFuZEFyZ0luZGV4ID0gcmF3QXJncy5maW5kSW5kZXgoKGFyZykgPT4gIWFyZy5zdGFydHNXaXRoKFwiLVwiKSk7XG4gICAgY29uc3Qgc3ViQ29tbWFuZE5hbWUgPSByYXdBcmdzW3N1YkNvbW1hbmRBcmdJbmRleF07XG4gICAgY29uc3Qgc3ViQ29tbWFuZCA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pO1xuICAgIGlmIChzdWJDb21tYW5kKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVN1YkNvbW1hbmQoXG4gICAgICAgIHN1YkNvbW1hbmQsXG4gICAgICAgIHJhd0FyZ3Muc2xpY2Uoc3ViQ29tbWFuZEFyZ0luZGV4ICsgMSksXG4gICAgICAgIGNtZFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtjbWQsIHBhcmVudF07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNob3dVc2FnZShjbWQsIHBhcmVudCkge1xuICB0cnkge1xuICAgIGNvbnNvbGEubG9nKGF3YWl0IHJlbmRlclVzYWdlKGNtZCwgcGFyZW50KSArIFwiXFxuXCIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGEuZXJyb3IoZXJyb3IpO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiByZW5kZXJVc2FnZShjbWQsIHBhcmVudCkge1xuICBjb25zdCBjbWRNZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5tZXRhIHx8IHt9KTtcbiAgY29uc3QgY21kQXJncyA9IHJlc29sdmVBcmdzKGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuYXJncyB8fCB7fSkpO1xuICBjb25zdCBwYXJlbnRNZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHBhcmVudD8ubWV0YSB8fCB7fSk7XG4gIGNvbnN0IGNvbW1hbmROYW1lID0gYCR7cGFyZW50TWV0YS5uYW1lID8gYCR7cGFyZW50TWV0YS5uYW1lfSBgIDogXCJcIn1gICsgKGNtZE1ldGEubmFtZSB8fCBwcm9jZXNzLmFyZ3ZbMV0pO1xuICBjb25zdCBhcmdMaW5lcyA9IFtdO1xuICBjb25zdCBwb3NMaW5lcyA9IFtdO1xuICBjb25zdCBjb21tYW5kc0xpbmVzID0gW107XG4gIGNvbnN0IHVzYWdlTGluZSA9IFtdO1xuICBmb3IgKGNvbnN0IGFyZyBvZiBjbWRBcmdzKSB7XG4gICAgaWYgKGFyZy50eXBlID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29uc3QgbmFtZSA9IGFyZy5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gYXJnLnJlcXVpcmVkICE9PSBmYWxzZSAmJiBhcmcuZGVmYXVsdCA9PT0gdm9pZCAwO1xuICAgICAgY29uc3QgZGVmYXVsdEhpbnQgPSBhcmcuZGVmYXVsdCA/IGA9XCIke2FyZy5kZWZhdWx0fVwiYCA6IFwiXCI7XG4gICAgICBwb3NMaW5lcy5wdXNoKFtcbiAgICAgICAgXCJgXCIgKyBuYW1lICsgZGVmYXVsdEhpbnQgKyBcImBcIixcbiAgICAgICAgYXJnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgIGFyZy52YWx1ZUhpbnQgPyBgPCR7YXJnLnZhbHVlSGludH0+YCA6IFwiXCJcbiAgICAgIF0pO1xuICAgICAgdXNhZ2VMaW5lLnB1c2goaXNSZXF1aXJlZCA/IGA8JHtuYW1lfT5gIDogYFske25hbWV9XWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gYXJnLnJlcXVpcmVkID09PSB0cnVlICYmIGFyZy5kZWZhdWx0ID09PSB2b2lkIDA7XG4gICAgICBjb25zdCBhcmdTdHIgPSAoYXJnLnR5cGUgPT09IFwiYm9vbGVhblwiICYmIGFyZy5kZWZhdWx0ID09PSB0cnVlID8gW1xuICAgICAgICAuLi4oYXJnLmFsaWFzIHx8IFtdKS5tYXAoKGEpID0+IGAtLW5vLSR7YX1gKSxcbiAgICAgICAgYC0tbm8tJHthcmcubmFtZX1gXG4gICAgICBdLmpvaW4oXCIsIFwiKSA6IFsuLi4oYXJnLmFsaWFzIHx8IFtdKS5tYXAoKGEpID0+IGAtJHthfWApLCBgLS0ke2FyZy5uYW1lfWBdLmpvaW4oXG4gICAgICAgIFwiLCBcIlxuICAgICAgKSkgKyAoYXJnLnR5cGUgPT09IFwic3RyaW5nXCIgJiYgKGFyZy52YWx1ZUhpbnQgfHwgYXJnLmRlZmF1bHQpID8gYD0ke2FyZy52YWx1ZUhpbnQgPyBgPCR7YXJnLnZhbHVlSGludH0+YCA6IGBcIiR7YXJnLmRlZmF1bHQgfHwgXCJcIn1cImB9YCA6IFwiXCIpO1xuICAgICAgYXJnTGluZXMucHVzaChbXG4gICAgICAgIFwiYFwiICsgYXJnU3RyICsgKGlzUmVxdWlyZWQgPyBcIiAocmVxdWlyZWQpXCIgOiBcIlwiKSArIFwiYFwiLFxuICAgICAgICBhcmcuZGVzY3JpcHRpb24gfHwgXCJcIlxuICAgICAgXSk7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICB1c2FnZUxpbmUucHVzaChhcmdTdHIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoY21kLnN1YkNvbW1hbmRzKSB7XG4gICAgY29uc3QgY29tbWFuZE5hbWVzID0gW107XG4gICAgY29uc3Qgc3ViQ29tbWFuZHMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLnN1YkNvbW1hbmRzKTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBzdWJdIG9mIE9iamVjdC5lbnRyaWVzKHN1YkNvbW1hbmRzKSkge1xuICAgICAgY29uc3Qgc3ViQ21kID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHN1Yik7XG4gICAgICBjb25zdCBtZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHN1YkNtZD8ubWV0YSk7XG4gICAgICBjb21tYW5kc0xpbmVzLnB1c2goW2BcXGAke25hbWV9XFxgYCwgbWV0YT8uZGVzY3JpcHRpb24gfHwgXCJcIl0pO1xuICAgICAgY29tbWFuZE5hbWVzLnB1c2gobmFtZSk7XG4gICAgfVxuICAgIHVzYWdlTGluZS5wdXNoKGNvbW1hbmROYW1lcy5qb2luKFwifFwiKSk7XG4gIH1cbiAgY29uc3QgdXNhZ2VMaW5lcyA9IFtdO1xuICBjb25zdCB2ZXJzaW9uID0gY21kTWV0YS52ZXJzaW9uIHx8IHBhcmVudE1ldGEudmVyc2lvbjtcbiAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgIGNvbG9ycy5ncmF5KFxuICAgICAgYCR7Y21kTWV0YS5kZXNjcmlwdGlvbn0gKCR7Y29tbWFuZE5hbWUgKyAodmVyc2lvbiA/IGAgdiR7dmVyc2lvbn1gIDogXCJcIil9KWBcbiAgICApLFxuICAgIFwiXCJcbiAgKTtcbiAgY29uc3QgaGFzT3B0aW9ucyA9IGFyZ0xpbmVzLmxlbmd0aCA+IDAgfHwgcG9zTGluZXMubGVuZ3RoID4gMDtcbiAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgIGAke2NvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJVU0FHRVwiKSl9IFxcYCR7Y29tbWFuZE5hbWV9JHtoYXNPcHRpb25zID8gXCIgW09QVElPTlNdXCIgOiBcIlwifSAke3VzYWdlTGluZS5qb2luKFwiIFwiKX1cXGBgLFxuICAgIFwiXCJcbiAgKTtcbiAgaWYgKHBvc0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB1c2FnZUxpbmVzLnB1c2goY29sb3JzLnVuZGVybGluZShjb2xvcnMuYm9sZChcIkFSR1VNRU5UU1wiKSksIFwiXCIpO1xuICAgIHVzYWdlTGluZXMucHVzaChmb3JtYXRMaW5lQ29sdW1ucyhwb3NMaW5lcywgXCIgIFwiKSk7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKFwiXCIpO1xuICB9XG4gIGlmIChhcmdMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGNvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJPUFRJT05TXCIpKSwgXCJcIik7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGZvcm1hdExpbmVDb2x1bW5zKGFyZ0xpbmVzLCBcIiAgXCIpKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goXCJcIik7XG4gIH1cbiAgaWYgKGNvbW1hbmRzTGluZXMubGVuZ3RoID4gMCkge1xuICAgIHVzYWdlTGluZXMucHVzaChjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKFwiQ09NTUFORFNcIikpLCBcIlwiKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goZm9ybWF0TGluZUNvbHVtbnMoY29tbWFuZHNMaW5lcywgXCIgIFwiKSk7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgICAgXCJcIixcbiAgICAgIGBVc2UgXFxgJHtjb21tYW5kTmFtZX0gPGNvbW1hbmQ+IC0taGVscFxcYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbW1hbmQuYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHVzYWdlTGluZXMuZmlsdGVyKChsKSA9PiB0eXBlb2YgbCA9PT0gXCJzdHJpbmdcIikuam9pbihcIlxcblwiKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuTWFpbihjbWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCByYXdBcmdzID0gb3B0cy5yYXdBcmdzIHx8IHByb2Nlc3MuYXJndi5zbGljZSgyKTtcbiAgY29uc3Qgc2hvd1VzYWdlJDEgPSBvcHRzLnNob3dVc2FnZSB8fCBzaG93VXNhZ2U7XG4gIHRyeSB7XG4gICAgaWYgKHJhd0FyZ3MuaW5jbHVkZXMoXCItLWhlbHBcIikgfHwgcmF3QXJncy5pbmNsdWRlcyhcIi1oXCIpKSB7XG4gICAgICBhd2FpdCBzaG93VXNhZ2UkMSguLi5hd2FpdCByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MpKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9IGVsc2UgaWYgKHJhd0FyZ3MubGVuZ3RoID09PSAxICYmIHJhd0FyZ3NbMF0gPT09IFwiLS12ZXJzaW9uXCIpIHtcbiAgICAgIGNvbnN0IG1ldGEgPSB0eXBlb2YgY21kLm1ldGEgPT09IFwiZnVuY3Rpb25cIiA/IGF3YWl0IGNtZC5tZXRhKCkgOiBhd2FpdCBjbWQubWV0YTtcbiAgICAgIGlmICghbWV0YT8udmVyc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXCJObyB2ZXJzaW9uIHNwZWNpZmllZFwiLCBcIkVfTk9fVkVSU0lPTlwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGEubG9nKG1ldGEudmVyc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoY21kLCB7IHJhd0FyZ3MgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGlzQ0xJRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIENMSUVycm9yO1xuICAgIGlmICghaXNDTElFcnJvcikge1xuICAgICAgY29uc29sYS5lcnJvcihlcnJvciwgXCJcXG5cIik7XG4gICAgfVxuICAgIGlmIChpc0NMSUVycm9yKSB7XG4gICAgICBhd2FpdCBzaG93VXNhZ2UkMSguLi5hd2FpdCByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MpKTtcbiAgICB9XG4gICAgY29uc29sYS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZU1haW4oY21kKSB7XG4gIHJldHVybiAob3B0cyA9IHt9KSA9PiBydW5NYWluKGNtZCwgb3B0cyk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZU1haW4sIGRlZmluZUNvbW1hbmQsIHBhcnNlQXJncywgcmVuZGVyVXNhZ2UsIHJ1bkNvbW1hbmQsIHJ1bk1haW4sIHNob3dVc2FnZSB9O1xuIiwgImltcG9ydCB7IGRlZmluZUNvbW1hbmQsIHJ1bk1haW4sIHBhcnNlQXJncyB9IGZyb20gXCJjaXR0eVwiO1xuaW1wb3J0IGFzc2VydCBmcm9tIFwibm9kZTphc3NlcnRcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZXpTcGF3biBmcm9tIFwiQGpzZGV2dG9vbHMvZXotc3Bhd25cIjtcbi8vIGltcG9ydCB7IGNyZWF0ZVJlcXVpcmUgfSBmcm9tIFwibW9kdWxlXCI7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSBcIm9oYXNoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzL3Byb21pc2VzXCI7XG5pbXBvcnQgeyBPY3Rva2l0IH0gZnJvbSBcIkBvY3Rva2l0L2FjdGlvblwiO1xuaW1wb3J0IHsgcGF0aFRvRmlsZVVSTCB9IGZyb20gXCJub2RlOnVybFwiO1xuaW1wb3J0IHsgZ2V0UGFja2FnZU1hbmlmZXN0IH0gZnJvbSBcInF1ZXJ5LXJlZ2lzdHJ5XCI7XG5pbXBvcnQgeyBleHRyYWN0T3duZXJBbmRSZXBvLCBleHRyYWN0UmVwb3NpdG9yeSB9IGZyb20gXCJAcGtnLXByLW5ldy91dGlsc1wiO1xuaW1wb3J0IGZnIGZyb20gXCJmYXN0LWdsb2JcIjtcbmltcG9ydCBcIi4vZW52aXJvbm1lbnRzXCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuL3BhY2thZ2UuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIHZhciBBUElfVVJMOiBzdHJpbmc7XG59XG5cbmNvbnN0IHB1Ymxpc2hVcmwgPSBuZXcgVVJMKFwiL3B1Ymxpc2hcIiwgQVBJX1VSTCk7XG5cbmlmICghcHJvY2Vzcy5lbnYuVEVTVCAmJiBwcm9jZXNzLmVudi5HSVRIVUJfQUNUSU9OUyAhPT0gXCJ0cnVlXCIpIHtcbiAgY29uc29sZS5lcnJvcihcIkNvbnRpbnVvdXMgUmVsZWFzZXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIEdpdGh1YiBBY3Rpb25zLlwiKTtcbiAgcHJvY2Vzcy5leGl0KDEpO1xufVxuY29uc3Qgb2N0b2tpdCA9IG5ldyBPY3Rva2l0KCk7XG5cbmNvbnN0IHtcbiAgR0lUSFVCX1NFUlZFUl9VUkwsXG4gIEdJVEhVQl9SRVBPU0lUT1JZLFxuICBHSVRIVUJfUlVOX0lELFxuICBHSVRIVUJfUlVOX0FUVEVNUFQsXG4gIEdJVEhVQl9BQ1RPUl9JRCxcbiAgR0lUSFVCX1NIQSxcbn0gPSBwcm9jZXNzLmVudjtcblxuY29uc3QgW293bmVyLCByZXBvXSA9IEdJVEhVQl9SRVBPU0lUT1JZLnNwbGl0KFwiL1wiKTtcblxuY29uc3QgY2hlY2tSZXNwb25zZSA9IGF3YWl0IGZldGNoKG5ldyBVUkwoXCIvY2hlY2tcIiwgQVBJX1VSTCksIHtcbiAgbWV0aG9kOiBcIlBPU1RcIixcbiAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgIG93bmVyLFxuICAgIHJlcG8sXG4gIH0pLFxufSk7XG5cbmlmICghY2hlY2tSZXNwb25zZS5vaykge1xuICBjb25zb2xlLmxvZyhhd2FpdCBjaGVja1Jlc3BvbnNlLnRleHQoKSk7XG4gIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgY29tbWl0ID0gYXdhaXQgb2N0b2tpdC5naXQuZ2V0Q29tbWl0KHtcbiAgb3duZXIsXG4gIHJlcG8sXG4gIGNvbW1pdF9zaGE6IEdJVEhVQl9TSEEsXG59KTtcblxuY29uc3QgY29tbWl0VGltZXN0YW1wID0gRGF0ZS5wYXJzZShjb21taXQuZGF0YS5jb21taXR0ZXIuZGF0ZSk7XG5cbi8vIE5vdGU6IElmIHlvdSBuZWVkIHRvIHVzZSBhIHdvcmtmbG93IHJ1bidzIFVSTCBmcm9tIHdpdGhpbiBhIGpvYiwgeW91IGNhbiBjb21iaW5lIHRoZXNlIHZhcmlhYmxlczogJEdJVEhVQl9TRVJWRVJfVVJMLyRHSVRIVUJfUkVQT1NJVE9SWS9hY3Rpb25zL3J1bnMvJEdJVEhVQl9SVU5fSURcbmNvbnN0IHVybCA9IGAke0dJVEhVQl9TRVJWRVJfVVJMfS8ke293bmVyfS8ke3JlcG99L2FjdGlvbnMvcnVucy8ke0dJVEhVQl9SVU5fSUR9YDtcblxuY29uc3QgbWV0YWRhdGEgPSB7XG4gIHVybCxcbiAgYXR0ZW1wdDogTnVtYmVyKEdJVEhVQl9SVU5fQVRURU1QVCksXG4gIGFjdG9yOiBOdW1iZXIoR0lUSFVCX0FDVE9SX0lEKSxcbn07XG5cbmNvbnN0IGtleSA9IGhhc2gobWV0YWRhdGEpO1xuXG5jb25zdCBtYWluID0gZGVmaW5lQ29tbWFuZCh7XG4gIG1ldGE6IHtcbiAgICB2ZXJzaW9uOiBwa2cudmVyc2lvbixcbiAgICBuYW1lOiBcInN0YWNrYmxpdHpcIixcbiAgICBkZXNjcmlwdGlvbjogXCJBIENMSSBmb3IgcGtnLnByLm5ldyAoQ29udGludW91cyBSZWxlYXNlcylcIixcbiAgfSxcbiAgc3ViQ29tbWFuZHM6IHtcbiAgICBwdWJsaXNoOiAoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgY29tcGFjdDoge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJjb21wYWN0IHVybHMuIFRoZSBzaG9ydGVzdCBmb3JtIG9mIHVybHMgbGlrZSBwa2cucHIubmV3L3RpbnliZW5jaEBhODMyYTU1KVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJ1bjogYXN5bmMgKHsgYXJncyB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgY29tcGFjdCA9ICEhYXJncy5jb21wYWN0O1xuXG4gICAgICAgICAgY29uc3QgcGF0aHMgPSAoYXJncy5fLmxlbmd0aCA/IGFyZ3MuXyA6IFtcIi5cIl0pXG4gICAgICAgICAgICAuZmxhdE1hcCgocCkgPT4gKGZnLmlzRHluYW1pY1BhdHRlcm4ocCkgPyBmZy5zeW5jKHApIDogcCkpXG4gICAgICAgICAgICAubWFwKChwKSA9PiBwYXRoLnJlc29sdmUocCkpO1xuXG4gICAgICAgICAgY29uc3QgZGVwczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTtcbiAgICAgICAgICBjb25zdCBwSnNvbkNvbnRlbnQ6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCB7IG5hbWUgfSA9IGF3YWl0IGltcG9ydFBhY2thZ2VKc29uKHBKc29uUGF0aCk7XG5cbiAgICAgICAgICAgIGlmIChjb21wYWN0KSB7XG4gICAgICAgICAgICAgIGF3YWl0IHZlcmlmeUNvbXBhY3RNb2RlKG5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBkZXBzLnNldChcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgbmV3IFVSTChcbiAgICAgICAgICAgICAgICBgLyR7b3duZXJ9LyR7cmVwb30vJHtuYW1lfUAke0dJVEhVQl9TSEEuc3Vic3RyaW5nKDAsIDcpfWAsXG4gICAgICAgICAgICAgICAgQVBJX1VSTCxcbiAgICAgICAgICAgICAgKS5ocmVmLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocEpzb25QYXRoLCBcInV0Zi04XCIpO1xuICAgICAgICAgICAgcEpzb25Db250ZW50LnNldChwSnNvblBhdGgsIGNvbnRlbnQpO1xuXG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IGltcG9ydFBhY2thZ2VKc29uKHBKc29uUGF0aCk7XG4gICAgICAgICAgICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLmRlcGVuZGVuY2llcyk7XG4gICAgICAgICAgICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLmRldkRlcGVuZGVuY2llcyk7XG4gICAgICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUocEpzb25QYXRoLCBKU09OLnN0cmluZ2lmeShwSnNvbikpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICAgIGNvbnN0IHNoYXN1bXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHAgb2YgcGF0aHMpIHtcbiAgICAgICAgICAgIGNvbnN0IHBKc29uUGF0aCA9IHBhdGgucmVzb2x2ZShwLCBcInBhY2thZ2UuanNvblwiKTtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgbmFtZSB9ID0gYXdhaXQgaW1wb3J0UGFja2FnZUpzb24ocEpzb25QYXRoKTtcbiAgICAgICAgICAgICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV6U3Bhd24uYXN5bmMoXCJucG0gcGFjayAtLWpzb25cIiwge1xuICAgICAgICAgICAgICAgIHN0ZGlvOiBcIm92ZXJsYXBwZWRcIixcbiAgICAgICAgICAgICAgICBjd2Q6IHAsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBjb25zdCB7IGZpbGVuYW1lLCBzaGFzdW0gfTogeyBmaWxlbmFtZTogc3RyaW5nOyBzaGFzdW06IHN0cmluZyB9ID1cbiAgICAgICAgICAgICAgICBKU09OLnBhcnNlKHN0ZG91dClbMF07XG5cbiAgICAgICAgICAgICAgc2hhc3Vtc1tuYW1lXSA9IHNoYXN1bTtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNoYXN1bSBmb3IgJHtuYW1lfSgke2ZpbGVuYW1lfSk6ICR7c2hhc3VtfWApO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLnJlc29sdmUocCwgZmlsZW5hbWUpKTtcblxuICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGVdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChuYW1lLCBibG9iLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUocEpzb25QYXRoLCBwSnNvbkNvbnRlbnQuZ2V0KHBKc29uUGF0aCkhKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChwdWJsaXNoVXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICBcInNiLWNvbXBhY3RcIjogYCR7Y29tcGFjdH1gLFxuICAgICAgICAgICAgICBcInNiLWtleVwiOiBrZXksXG4gICAgICAgICAgICAgIFwic2Itc2hhc3Vtc1wiOiBKU09OLnN0cmluZ2lmeShzaGFzdW1zKSxcbiAgICAgICAgICAgICAgXCJzYi1jb21taXQtdGltZXN0YW1wXCI6IGNvbW1pdFRpbWVzdGFtcC50b1N0cmluZygpLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGxhdGVyUmVzID0gYXdhaXQgcmVzLmNsb25lKCkuanNvbigpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgICAgIHJlcy5zdGF0dXMsXG4gICAgICAgICAgICAyMDAsXG4gICAgICAgICAgICBgcHVibGlzaGluZyBmYWlsZWQ6ICR7YXdhaXQgcmVzLnRleHQoKX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlxcblwiKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBcdTI2QTFcdUZFMEYgWW91ciBucG0gcGFja2FnZXMgYXJlIHB1Ymxpc2hlZC5cXG4ke1suLi5mb3JtRGF0YS5rZXlzKCldLm1hcCgobmFtZSwgaSkgPT4gYCR7bmFtZX06IFxcYG5wbSBpICR7bGF0ZXJSZXMudXJsc1tpXX1cXGBgKS5qb2luKFwiXFxuXCIpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBsaW5rOiAoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRhOiB7fSxcbiAgICAgICAgcnVuOiAoKSA9PiB7fSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbn0pO1xuXG5ydW5NYWluKG1haW4pO1xuXG5hc3luYyBmdW5jdGlvbiBpbXBvcnRQYWNrYWdlSnNvbihwOiBzdHJpbmcpOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+IHtcbiAgY29uc3QgeyBkZWZhdWx0OiBvYmogfSA9IGF3YWl0IGltcG9ydChwYXRoVG9GaWxlVVJMKHApLmhyZWYsIHtcbiAgICB3aXRoOiB7IHR5cGU6IFwianNvblwiIH0sXG4gIH0pO1xuXG4gIHJldHVybiBvYmo7XG59XG5cbmZ1bmN0aW9uIGhpamFja0RlcHMoXG4gIG5ld0RlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4sXG4gIG9sZERlcHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKSB7XG4gIGlmICghb2xkRGVwcykge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKGNvbnN0IFtuZXdEZXAsIHVybF0gb2YgbmV3RGVwcykge1xuICAgIGlmIChuZXdEZXAgaW4gb2xkRGVwcykge1xuICAgICAgb2xkRGVwc1tuZXdEZXBdID0gdXJsO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlDb21wYWN0TW9kZShwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgIGBwa2ctcHItbmV3IGNhbm5vdCByZXNvbHZlICR7cGFja2FnZU5hbWV9IGZyb20gbnBtLiAtLWNvbXBhY3QgZmxhZyBkZXBlbmRzIG9uIHRoZSBwYWNrYWdlIGJlaW5nIGF2YWlsYWJsZSBpbiBucG0uXG5NYWtlIHN1cmUgdG8gaGF2ZSB5b3VyIHBhY2thZ2Ugb24gbnBtIGZpcnN0IG9yIGNvbmZpZ3VyZSB0aGUgJ3JlcG9zaXRvcnknIGZpZWxkIGluIHlvdXIgcGFja2FnZS5qc29uIHByb3Blcmx5LmAsXG4gICk7XG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBnZXRQYWNrYWdlTWFuaWZlc3QocGFja2FnZU5hbWUpO1xuXG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IGV4dHJhY3RSZXBvc2l0b3J5KG1hbmlmZXN0KTtcbiAgICBpZiAoIXJlcG9zaXRvcnkpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoID0gZXh0cmFjdE93bmVyQW5kUmVwbyhyZXBvc2l0b3J5KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG4iLCAiY29uc3QgZGVmYXVsdHMgPSBPYmplY3QuZnJlZXplKHtcbiAgaWdub3JlVW5rbm93bjogZmFsc2UsXG4gIHJlc3BlY3RUeXBlOiBmYWxzZSxcbiAgcmVzcGVjdEZ1bmN0aW9uTmFtZXM6IGZhbHNlLFxuICByZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzOiBmYWxzZSxcbiAgdW5vcmRlcmVkT2JqZWN0czogdHJ1ZSxcbiAgdW5vcmRlcmVkQXJyYXlzOiBmYWxzZSxcbiAgdW5vcmRlcmVkU2V0czogZmFsc2UsXG4gIGV4Y2x1ZGVLZXlzOiB2b2lkIDAsXG4gIGV4Y2x1ZGVWYWx1ZXM6IHZvaWQgMCxcbiAgcmVwbGFjZXI6IHZvaWQgMFxufSk7XG5mdW5jdGlvbiBvYmplY3RIYXNoKG9iamVjdCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IGRlZmF1bHRzO1xuICB9XG4gIGNvbnN0IGhhc2hlciA9IGNyZWF0ZUhhc2hlcihvcHRpb25zKTtcbiAgaGFzaGVyLmRpc3BhdGNoKG9iamVjdCk7XG4gIHJldHVybiBoYXNoZXIudG9TdHJpbmcoKTtcbn1cbmNvbnN0IGRlZmF1bHRQcm90b3R5cGVzS2V5cyA9IE9iamVjdC5mcmVlemUoW1xuICBcInByb3RvdHlwZVwiLFxuICBcIl9fcHJvdG9fX1wiLFxuICBcImNvbnN0cnVjdG9yXCJcbl0pO1xuZnVuY3Rpb24gY3JlYXRlSGFzaGVyKG9wdGlvbnMpIHtcbiAgbGV0IGJ1ZmYgPSBcIlwiO1xuICBsZXQgY29udGV4dCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGNvbnN0IHdyaXRlID0gKHN0cikgPT4ge1xuICAgIGJ1ZmYgKz0gc3RyO1xuICB9O1xuICByZXR1cm4ge1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfSxcbiAgICBnZXRDb250ZXh0KCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfSxcbiAgICBkaXNwYXRjaCh2YWx1ZSkge1xuICAgICAgaWYgKG9wdGlvbnMucmVwbGFjZXIpIHtcbiAgICAgICAgdmFsdWUgPSBvcHRpb25zLnJlcGxhY2VyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXNbdHlwZV0odmFsdWUpO1xuICAgIH0sXG4gICAgb2JqZWN0KG9iamVjdCkge1xuICAgICAgaWYgKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LnRvSlNPTiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9iamVjdChvYmplY3QudG9KU09OKCkpO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2JqU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCk7XG4gICAgICBsZXQgb2JqVHlwZSA9IFwiXCI7XG4gICAgICBjb25zdCBvYmplY3RMZW5ndGggPSBvYmpTdHJpbmcubGVuZ3RoO1xuICAgICAgaWYgKG9iamVjdExlbmd0aCA8IDEwKSB7XG4gICAgICAgIG9ialR5cGUgPSBcInVua25vd246W1wiICsgb2JqU3RyaW5nICsgXCJdXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpUeXBlID0gb2JqU3RyaW5nLnNsaWNlKDgsIG9iamVjdExlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgb2JqVHlwZSA9IG9ialR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCBvYmplY3ROdW1iZXIgPSBudWxsO1xuICAgICAgaWYgKChvYmplY3ROdW1iZXIgPSBjb250ZXh0LmdldChvYmplY3QpKSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnRleHQuc2V0KG9iamVjdCwgY29udGV4dC5zaXplKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFwiW0NJUkNVTEFSOlwiICsgb2JqZWN0TnVtYmVyICsgXCJdXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBCdWZmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgQnVmZmVyLmlzQnVmZmVyICYmIEJ1ZmZlci5pc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIHdyaXRlKFwiYnVmZmVyOlwiKTtcbiAgICAgICAgcmV0dXJuIHdyaXRlKG9iamVjdC50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgICAgfVxuICAgICAgaWYgKG9ialR5cGUgIT09IFwib2JqZWN0XCIgJiYgb2JqVHlwZSAhPT0gXCJmdW5jdGlvblwiICYmIG9ialR5cGUgIT09IFwiYXN5bmNmdW5jdGlvblwiKSB7XG4gICAgICAgIGlmICh0aGlzW29ialR5cGVdKSB7XG4gICAgICAgICAgdGhpc1tvYmpUeXBlXShvYmplY3QpO1xuICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLmlnbm9yZVVua25vd24pIHtcbiAgICAgICAgICB0aGlzLnVua293bihvYmplY3QsIG9ialR5cGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gICAgICAgIGlmIChvcHRpb25zLnVub3JkZXJlZE9iamVjdHMpIHtcbiAgICAgICAgICBrZXlzID0ga2V5cy5zb3J0KCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGV4dHJhS2V5cyA9IFtdO1xuICAgICAgICBpZiAob3B0aW9ucy5yZXNwZWN0VHlwZSAhPT0gZmFsc2UgJiYgIWlzTmF0aXZlRnVuY3Rpb24ob2JqZWN0KSkge1xuICAgICAgICAgIGV4dHJhS2V5cyA9IGRlZmF1bHRQcm90b3R5cGVzS2V5cztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5leGNsdWRlS2V5cykge1xuICAgICAgICAgIGtleXMgPSBrZXlzLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnMuZXhjbHVkZUtleXMoa2V5KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBleHRyYUtleXMgPSBleHRyYUtleXMuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhb3B0aW9ucy5leGNsdWRlS2V5cyhrZXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlKFwib2JqZWN0OlwiICsgKGtleXMubGVuZ3RoICsgZXh0cmFLZXlzLmxlbmd0aCkgKyBcIjpcIik7XG4gICAgICAgIGNvbnN0IGRpc3BhdGNoRm9yS2V5ID0gKGtleSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goa2V5KTtcbiAgICAgICAgICB3cml0ZShcIjpcIik7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLmV4Y2x1ZGVWYWx1ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2gob2JqZWN0W2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3cml0ZShcIixcIik7XG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICBkaXNwYXRjaEZvcktleShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICAgIGRpc3BhdGNoRm9yS2V5KGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFycmF5KGFyciwgdW5vcmRlcmVkKSB7XG4gICAgICB1bm9yZGVyZWQgPSB1bm9yZGVyZWQgPT09IHZvaWQgMCA/IG9wdGlvbnMudW5vcmRlcmVkQXJyYXlzICE9PSBmYWxzZSA6IHVub3JkZXJlZDtcbiAgICAgIHdyaXRlKFwiYXJyYXk6XCIgKyBhcnIubGVuZ3RoICsgXCI6XCIpO1xuICAgICAgaWYgKCF1bm9yZGVyZWQgfHwgYXJyLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgYXJyKSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaChlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dEFkZGl0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICBjb25zdCBlbnRyaWVzID0gYXJyLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgaGFzaGVyID0gY3JlYXRlSGFzaGVyKG9wdGlvbnMpO1xuICAgICAgICBoYXNoZXIuZGlzcGF0Y2goZW50cnkpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBoYXNoZXIuZ2V0Q29udGV4dCgpKSB7XG4gICAgICAgICAgY29udGV4dEFkZGl0aW9ucy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2hlci50b1N0cmluZygpO1xuICAgICAgfSk7XG4gICAgICBjb250ZXh0ID0gY29udGV4dEFkZGl0aW9ucztcbiAgICAgIGVudHJpZXMuc29ydCgpO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoZW50cmllcywgZmFsc2UpO1xuICAgIH0sXG4gICAgZGF0ZShkYXRlKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJkYXRlOlwiICsgZGF0ZS50b0pTT04oKSk7XG4gICAgfSxcbiAgICBzeW1ib2woc3ltKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzeW1ib2w6XCIgKyBzeW0udG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICB1bmtvd24odmFsdWUsIHR5cGUpIHtcbiAgICAgIHdyaXRlKHR5cGUpO1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3cml0ZShcIjpcIik7XG4gICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheShcbiAgICAgICAgICBBcnJheS5mcm9tKHZhbHVlLmVudHJpZXMoKSksXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICAgIC8qIG9yZGVyZWQgKi9cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVycm9yKGVycikge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZXJyb3I6XCIgKyBlcnIudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICBib29sZWFuKGJvb2wpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImJvb2w6XCIgKyBib29sKTtcbiAgICB9LFxuICAgIHN0cmluZyhzdHJpbmcpIHtcbiAgICAgIHdyaXRlKFwic3RyaW5nOlwiICsgc3RyaW5nLmxlbmd0aCArIFwiOlwiKTtcbiAgICAgIHdyaXRlKHN0cmluZyk7XG4gICAgfSxcbiAgICBmdW5jdGlvbihmbikge1xuICAgICAgd3JpdGUoXCJmbjpcIik7XG4gICAgICBpZiAoaXNOYXRpdmVGdW5jdGlvbihmbikpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChcIltuYXRpdmVdXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChmbi50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnJlc3BlY3RGdW5jdGlvbk5hbWVzICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKFwiZnVuY3Rpb24tbmFtZTpcIiArIFN0cmluZyhmbi5uYW1lKSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5yZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMub2JqZWN0KGZuKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG51bWJlcihudW1iZXIpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIm51bWJlcjpcIiArIG51bWJlcik7XG4gICAgfSxcbiAgICB4bWwoeG1sKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ4bWw6XCIgKyB4bWwudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICBudWxsKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiTnVsbFwiKTtcbiAgICB9LFxuICAgIHVuZGVmaW5lZCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIlVuZGVmaW5lZFwiKTtcbiAgICB9LFxuICAgIHJlZ2V4cChyZWdleCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicmVnZXg6XCIgKyByZWdleC50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIHVpbnQ4YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcInVpbnQ4YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICB1aW50OGNsYW1wZWRhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDhjbGFtcGVkYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBpbnQ4YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImludDhhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIHVpbnQxNmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJ1aW50MTZhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGludDE2YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImludDE2YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICB1aW50MzJhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDMyYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBpbnQzMmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJpbnQzMmFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgZmxvYXQzMmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJmbG9hdDMyYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBmbG9hdDY0YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImZsb2F0NjRhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGFycmF5YnVmZmVyKGFycikge1xuICAgICAgd3JpdGUoXCJhcnJheWJ1ZmZlcjpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChuZXcgVWludDhBcnJheShhcnIpKTtcbiAgICB9LFxuICAgIHVybCh1cmwpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInVybDpcIiArIHVybC50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIG1hcChtYXApIHtcbiAgICAgIHdyaXRlKFwibWFwOlwiKTtcbiAgICAgIGNvbnN0IGFyciA9IFsuLi5tYXBdO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoYXJyLCBvcHRpb25zLnVub3JkZXJlZFNldHMgIT09IGZhbHNlKTtcbiAgICB9LFxuICAgIHNldChzZXQpIHtcbiAgICAgIHdyaXRlKFwic2V0OlwiKTtcbiAgICAgIGNvbnN0IGFyciA9IFsuLi5zZXRdO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoYXJyLCBvcHRpb25zLnVub3JkZXJlZFNldHMgIT09IGZhbHNlKTtcbiAgICB9LFxuICAgIGZpbGUoZmlsZSkge1xuICAgICAgd3JpdGUoXCJmaWxlOlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtmaWxlLm5hbWUsIGZpbGUuc2l6ZSwgZmlsZS50eXBlLCBmaWxlLmxhc3RNb2RmaWVkXSk7XG4gICAgfSxcbiAgICBibG9iKCkge1xuICAgICAgaWYgKG9wdGlvbnMuaWdub3JlVW5rbm93bikge1xuICAgICAgICByZXR1cm4gd3JpdGUoXCJbYmxvYl1cIik7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdIYXNoaW5nIEJsb2Igb2JqZWN0cyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZFxcblVzZSBcIm9wdGlvbnMucmVwbGFjZXJcIiBvciBcIm9wdGlvbnMuaWdub3JlVW5rbm93blwiXFxuJ1xuICAgICAgKTtcbiAgICB9LFxuICAgIGRvbXdpbmRvdygpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImRvbXdpbmRvd1wiKTtcbiAgICB9LFxuICAgIGJpZ2ludChudW1iZXIpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImJpZ2ludDpcIiArIG51bWJlci50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIC8qIE5vZGUuanMgc3RhbmRhcmQgbmF0aXZlIG9iamVjdHMgKi9cbiAgICBwcm9jZXNzKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicHJvY2Vzc1wiKTtcbiAgICB9LFxuICAgIHRpbWVyKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidGltZXJcIik7XG4gICAgfSxcbiAgICBwaXBlKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicGlwZVwiKTtcbiAgICB9LFxuICAgIHRjcCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInRjcFwiKTtcbiAgICB9LFxuICAgIHVkcCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInVkcFwiKTtcbiAgICB9LFxuICAgIHR0eSgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInR0eVwiKTtcbiAgICB9LFxuICAgIHN0YXR3YXRjaGVyKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic3RhdHdhdGNoZXJcIik7XG4gICAgfSxcbiAgICBzZWN1cmVjb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic2VjdXJlY29udGV4dFwiKTtcbiAgICB9LFxuICAgIGNvbm5lY3Rpb24oKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJjb25uZWN0aW9uXCIpO1xuICAgIH0sXG4gICAgemxpYigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInpsaWJcIik7XG4gICAgfSxcbiAgICBjb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiY29udGV4dFwiKTtcbiAgICB9LFxuICAgIG5vZGVzY3JpcHQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJub2Rlc2NyaXB0XCIpO1xuICAgIH0sXG4gICAgaHR0cHBhcnNlcigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImh0dHBwYXJzZXJcIik7XG4gICAgfSxcbiAgICBkYXRhdmlldygpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImRhdGF2aWV3XCIpO1xuICAgIH0sXG4gICAgc2lnbmFsKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic2lnbmFsXCIpO1xuICAgIH0sXG4gICAgZnNldmVudCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImZzZXZlbnRcIik7XG4gICAgfSxcbiAgICB0bHN3cmFwKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidGxzd3JhcFwiKTtcbiAgICB9XG4gIH07XG59XG5jb25zdCBuYXRpdmVGdW5jID0gXCJbbmF0aXZlIGNvZGVdIH1cIjtcbmNvbnN0IG5hdGl2ZUZ1bmNMZW5ndGggPSBuYXRpdmVGdW5jLmxlbmd0aDtcbmZ1bmN0aW9uIGlzTmF0aXZlRnVuY3Rpb24oZikge1xuICBpZiAodHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZikuc2xpY2UoLW5hdGl2ZUZ1bmNMZW5ndGgpID09PSBuYXRpdmVGdW5jO1xufVxuXG5jbGFzcyBXb3JkQXJyYXkge1xuICBjb25zdHJ1Y3Rvcih3b3Jkcywgc2lnQnl0ZXMpIHtcbiAgICB3b3JkcyA9IHRoaXMud29yZHMgPSB3b3JkcyB8fCBbXTtcbiAgICB0aGlzLnNpZ0J5dGVzID0gc2lnQnl0ZXMgPT09IHZvaWQgMCA/IHdvcmRzLmxlbmd0aCAqIDQgOiBzaWdCeXRlcztcbiAgfVxuICB0b1N0cmluZyhlbmNvZGVyKSB7XG4gICAgcmV0dXJuIChlbmNvZGVyIHx8IEhleCkuc3RyaW5naWZ5KHRoaXMpO1xuICB9XG4gIGNvbmNhdCh3b3JkQXJyYXkpIHtcbiAgICB0aGlzLmNsYW1wKCk7XG4gICAgaWYgKHRoaXMuc2lnQnl0ZXMgJSA0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHRoYXRCeXRlID0gd29yZEFycmF5LndvcmRzW2kgPj4+IDJdID4+PiAyNCAtIGkgJSA0ICogOCAmIDI1NTtcbiAgICAgICAgdGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzICsgaSA+Pj4gMl0gfD0gdGhhdEJ5dGUgPDwgMjQgLSAodGhpcy5zaWdCeXRlcyArIGkpICUgNCAqIDg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBqICs9IDQpIHtcbiAgICAgICAgdGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzICsgaiA+Pj4gMl0gPSB3b3JkQXJyYXkud29yZHNbaiA+Pj4gMl07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2lnQnl0ZXMgKz0gd29yZEFycmF5LnNpZ0J5dGVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGNsYW1wKCkge1xuICAgIHRoaXMud29yZHNbdGhpcy5zaWdCeXRlcyA+Pj4gMl0gJj0gNDI5NDk2NzI5NSA8PCAzMiAtIHRoaXMuc2lnQnl0ZXMgJSA0ICogODtcbiAgICB0aGlzLndvcmRzLmxlbmd0aCA9IE1hdGguY2VpbCh0aGlzLnNpZ0J5dGVzIC8gNCk7XG4gIH1cbiAgY2xvbmUoKSB7XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkoWy4uLnRoaXMud29yZHNdKTtcbiAgfVxufVxuY29uc3QgSGV4ID0ge1xuICBzdHJpbmdpZnkod29yZEFycmF5KSB7XG4gICAgY29uc3QgaGV4Q2hhcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSsrKSB7XG4gICAgICBjb25zdCBiaXRlID0gd29yZEFycmF5LndvcmRzW2kgPj4+IDJdID4+PiAyNCAtIGkgJSA0ICogOCAmIDI1NTtcbiAgICAgIGhleENoYXJzLnB1c2goKGJpdGUgPj4+IDQpLnRvU3RyaW5nKDE2KSwgKGJpdGUgJiAxNSkudG9TdHJpbmcoMTYpKTtcbiAgICB9XG4gICAgcmV0dXJuIGhleENoYXJzLmpvaW4oXCJcIik7XG4gIH1cbn07XG5jb25zdCBCYXNlNjQgPSB7XG4gIHN0cmluZ2lmeSh3b3JkQXJyYXkpIHtcbiAgICBjb25zdCBrZXlTdHIgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCI7XG4gICAgY29uc3QgYmFzZTY0Q2hhcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSArPSAzKSB7XG4gICAgICBjb25zdCBieXRlMSA9IHdvcmRBcnJheS53b3Jkc1tpID4+PiAyXSA+Pj4gMjQgLSBpICUgNCAqIDggJiAyNTU7XG4gICAgICBjb25zdCBieXRlMiA9IHdvcmRBcnJheS53b3Jkc1tpICsgMSA+Pj4gMl0gPj4+IDI0IC0gKGkgKyAxKSAlIDQgKiA4ICYgMjU1O1xuICAgICAgY29uc3QgYnl0ZTMgPSB3b3JkQXJyYXkud29yZHNbaSArIDIgPj4+IDJdID4+PiAyNCAtIChpICsgMikgJSA0ICogOCAmIDI1NTtcbiAgICAgIGNvbnN0IHRyaXBsZXQgPSBieXRlMSA8PCAxNiB8IGJ5dGUyIDw8IDggfCBieXRlMztcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgNCAmJiBpICogOCArIGogKiA2IDwgd29yZEFycmF5LnNpZ0J5dGVzICogODsgaisrKSB7XG4gICAgICAgIGJhc2U2NENoYXJzLnB1c2goa2V5U3RyLmNoYXJBdCh0cmlwbGV0ID4+PiA2ICogKDMgLSBqKSAmIDYzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiYXNlNjRDaGFycy5qb2luKFwiXCIpO1xuICB9XG59O1xuY29uc3QgTGF0aW4xID0ge1xuICBwYXJzZShsYXRpbjFTdHIpIHtcbiAgICBjb25zdCBsYXRpbjFTdHJMZW5ndGggPSBsYXRpbjFTdHIubGVuZ3RoO1xuICAgIGNvbnN0IHdvcmRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXRpbjFTdHJMZW5ndGg7IGkrKykge1xuICAgICAgd29yZHNbaSA+Pj4gMl0gfD0gKGxhdGluMVN0ci5jaGFyQ29kZUF0KGkpICYgMjU1KSA8PCAyNCAtIGkgJSA0ICogODtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkod29yZHMsIGxhdGluMVN0ckxlbmd0aCk7XG4gIH1cbn07XG5jb25zdCBVdGY4ID0ge1xuICBwYXJzZSh1dGY4U3RyKSB7XG4gICAgcmV0dXJuIExhdGluMS5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodXRmOFN0cikpKTtcbiAgfVxufTtcbmNsYXNzIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9kYXRhID0gbmV3IFdvcmRBcnJheSgpO1xuICAgIHRoaXMuX25EYXRhQnl0ZXMgPSAwO1xuICAgIHRoaXMuX21pbkJ1ZmZlclNpemUgPSAwO1xuICAgIHRoaXMuYmxvY2tTaXplID0gNTEyIC8gMzI7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5fZGF0YSA9IG5ldyBXb3JkQXJyYXkoKTtcbiAgICB0aGlzLl9uRGF0YUJ5dGVzID0gMDtcbiAgfVxuICBfYXBwZW5kKGRhdGEpIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGRhdGEgPSBVdGY4LnBhcnNlKGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLl9kYXRhLmNvbmNhdChkYXRhKTtcbiAgICB0aGlzLl9uRGF0YUJ5dGVzICs9IGRhdGEuc2lnQnl0ZXM7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBfZG9Qcm9jZXNzQmxvY2soX2RhdGFXb3JkcywgX29mZnNldCkge1xuICB9XG4gIF9wcm9jZXNzKGRvRmx1c2gpIHtcbiAgICBsZXQgcHJvY2Vzc2VkV29yZHM7XG4gICAgbGV0IG5CbG9ja3NSZWFkeSA9IHRoaXMuX2RhdGEuc2lnQnl0ZXMgLyAodGhpcy5ibG9ja1NpemUgKiA0KTtcbiAgICBpZiAoZG9GbHVzaCkge1xuICAgICAgbkJsb2Nrc1JlYWR5ID0gTWF0aC5jZWlsKG5CbG9ja3NSZWFkeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5CbG9ja3NSZWFkeSA9IE1hdGgubWF4KChuQmxvY2tzUmVhZHkgfCAwKSAtIHRoaXMuX21pbkJ1ZmZlclNpemUsIDApO1xuICAgIH1cbiAgICBjb25zdCBuV29yZHNSZWFkeSA9IG5CbG9ja3NSZWFkeSAqIHRoaXMuYmxvY2tTaXplO1xuICAgIGNvbnN0IG5CeXRlc1JlYWR5ID0gTWF0aC5taW4obldvcmRzUmVhZHkgKiA0LCB0aGlzLl9kYXRhLnNpZ0J5dGVzKTtcbiAgICBpZiAobldvcmRzUmVhZHkpIHtcbiAgICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IG5Xb3Jkc1JlYWR5OyBvZmZzZXQgKz0gdGhpcy5ibG9ja1NpemUpIHtcbiAgICAgICAgdGhpcy5fZG9Qcm9jZXNzQmxvY2sodGhpcy5fZGF0YS53b3Jkcywgb2Zmc2V0KTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3NlZFdvcmRzID0gdGhpcy5fZGF0YS53b3Jkcy5zcGxpY2UoMCwgbldvcmRzUmVhZHkpO1xuICAgICAgdGhpcy5fZGF0YS5zaWdCeXRlcyAtPSBuQnl0ZXNSZWFkeTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkocHJvY2Vzc2VkV29yZHMsIG5CeXRlc1JlYWR5KTtcbiAgfVxufVxuY2xhc3MgSGFzaGVyIGV4dGVuZHMgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSB7XG4gIHVwZGF0ZShtZXNzYWdlVXBkYXRlKSB7XG4gICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuICAgIHRoaXMuX3Byb2Nlc3MoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBmaW5hbGl6ZShtZXNzYWdlVXBkYXRlKSB7XG4gICAgaWYgKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICAgIHRoaXMuX2FwcGVuZChtZXNzYWdlVXBkYXRlKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgSCA9IFtcbiAgMTc3OTAzMzcwMyxcbiAgLTExNTA4MzMwMTksXG4gIDEwMTM5MDQyNDIsXG4gIC0xNTIxNDg2NTM0LFxuICAxMzU5ODkzMTE5LFxuICAtMTY5NDE0NDM3MixcbiAgNTI4NzM0NjM1LFxuICAxNTQxNDU5MjI1XG5dO1xuY29uc3QgSyA9IFtcbiAgMTExNjM1MjQwOCxcbiAgMTg5OTQ0NzQ0MSxcbiAgLTEyNDU2NDM4MjUsXG4gIC0zNzM5NTc3MjMsXG4gIDk2MTk4NzE2MyxcbiAgMTUwODk3MDk5MyxcbiAgLTE4NDEzMzE1NDgsXG4gIC0xNDI0MjA0MDc1LFxuICAtNjcwNTg2MjE2LFxuICAzMTA1OTg0MDEsXG4gIDYwNzIyNTI3OCxcbiAgMTQyNjg4MTk4NyxcbiAgMTkyNTA3ODM4OCxcbiAgLTIxMzI4ODkwOTAsXG4gIC0xNjgwMDc5MTkzLFxuICAtMTA0Njc0NDcxNixcbiAgLTQ1OTU3Njg5NSxcbiAgLTI3Mjc0MjUyMixcbiAgMjY0MzQ3MDc4LFxuICA2MDQ4MDc2MjgsXG4gIDc3MDI1NTk4MyxcbiAgMTI0OTE1MDEyMixcbiAgMTU1NTA4MTY5MixcbiAgMTk5NjA2NDk4NixcbiAgLTE3NDA3NDY0MTQsXG4gIC0xNDczMTMyOTQ3LFxuICAtMTM0MTk3MDQ4OCxcbiAgLTEwODQ2NTM2MjUsXG4gIC05NTgzOTU0MDUsXG4gIC03MTA0Mzg1ODUsXG4gIDExMzkyNjk5MyxcbiAgMzM4MjQxODk1LFxuICA2NjYzMDcyMDUsXG4gIDc3MzUyOTkxMixcbiAgMTI5NDc1NzM3MixcbiAgMTM5NjE4MjI5MSxcbiAgMTY5NTE4MzcwMCxcbiAgMTk4NjY2MTA1MSxcbiAgLTIxMTc5NDA5NDYsXG4gIC0xODM4MDExMjU5LFxuICAtMTU2NDQ4MTM3NSxcbiAgLTE0NzQ2NjQ4ODUsXG4gIC0xMDM1MjM2NDk2LFxuICAtOTQ5MjAyNTI1LFxuICAtNzc4OTAxNDc5LFxuICAtNjk0NjE0NDkyLFxuICAtMjAwMzk1Mzg3LFxuICAyNzU0MjMzNDQsXG4gIDQzMDIyNzczNCxcbiAgNTA2OTQ4NjE2LFxuICA2NTkwNjA1NTYsXG4gIDg4Mzk5Nzg3NyxcbiAgOTU4MTM5NTcxLFxuICAxMzIyODIyMjE4LFxuICAxNTM3MDAyMDYzLFxuICAxNzQ3ODczNzc5LFxuICAxOTU1NTYyMjIyLFxuICAyMDI0MTA0ODE1LFxuICAtMjA2NzIzNjg0NCxcbiAgLTE5MzMxMTQ4NzIsXG4gIC0xODY2NTMwODIyLFxuICAtMTUzODIzMzEwOSxcbiAgLTEwOTA5MzU4MTcsXG4gIC05NjU2NDE5OThcbl07XG5jb25zdCBXID0gW107XG5jbGFzcyBTSEEyNTYgZXh0ZW5kcyBIYXNoZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5KFsuLi5IXSk7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgc3VwZXIucmVzZXQoKTtcbiAgICB0aGlzLl9oYXNoID0gbmV3IFdvcmRBcnJheShbLi4uSF0pO1xuICB9XG4gIF9kb1Byb2Nlc3NCbG9jayhNLCBvZmZzZXQpIHtcbiAgICBjb25zdCBIMiA9IHRoaXMuX2hhc2gud29yZHM7XG4gICAgbGV0IGEgPSBIMlswXTtcbiAgICBsZXQgYiA9IEgyWzFdO1xuICAgIGxldCBjID0gSDJbMl07XG4gICAgbGV0IGQgPSBIMlszXTtcbiAgICBsZXQgZSA9IEgyWzRdO1xuICAgIGxldCBmID0gSDJbNV07XG4gICAgbGV0IGcgPSBIMls2XTtcbiAgICBsZXQgaCA9IEgyWzddO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNjQ7IGkrKykge1xuICAgICAgaWYgKGkgPCAxNikge1xuICAgICAgICBXW2ldID0gTVtvZmZzZXQgKyBpXSB8IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBnYW1tYTB4ID0gV1tpIC0gMTVdO1xuICAgICAgICBjb25zdCBnYW1tYTAgPSAoZ2FtbWEweCA8PCAyNSB8IGdhbW1hMHggPj4+IDcpIF4gKGdhbW1hMHggPDwgMTQgfCBnYW1tYTB4ID4+PiAxOCkgXiBnYW1tYTB4ID4+PiAzO1xuICAgICAgICBjb25zdCBnYW1tYTF4ID0gV1tpIC0gMl07XG4gICAgICAgIGNvbnN0IGdhbW1hMSA9IChnYW1tYTF4IDw8IDE1IHwgZ2FtbWExeCA+Pj4gMTcpIF4gKGdhbW1hMXggPDwgMTMgfCBnYW1tYTF4ID4+PiAxOSkgXiBnYW1tYTF4ID4+PiAxMDtcbiAgICAgICAgV1tpXSA9IGdhbW1hMCArIFdbaSAtIDddICsgZ2FtbWExICsgV1tpIC0gMTZdO1xuICAgICAgfVxuICAgICAgY29uc3QgY2ggPSBlICYgZiBeIH5lICYgZztcbiAgICAgIGNvbnN0IG1haiA9IGEgJiBiIF4gYSAmIGMgXiBiICYgYztcbiAgICAgIGNvbnN0IHNpZ21hMCA9IChhIDw8IDMwIHwgYSA+Pj4gMikgXiAoYSA8PCAxOSB8IGEgPj4+IDEzKSBeIChhIDw8IDEwIHwgYSA+Pj4gMjIpO1xuICAgICAgY29uc3Qgc2lnbWExID0gKGUgPDwgMjYgfCBlID4+PiA2KSBeIChlIDw8IDIxIHwgZSA+Pj4gMTEpIF4gKGUgPDwgNyB8IGUgPj4+IDI1KTtcbiAgICAgIGNvbnN0IHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tpXSArIFdbaV07XG4gICAgICBjb25zdCB0MiA9IHNpZ21hMCArIG1hajtcbiAgICAgIGggPSBnO1xuICAgICAgZyA9IGY7XG4gICAgICBmID0gZTtcbiAgICAgIGUgPSBkICsgdDEgfCAwO1xuICAgICAgZCA9IGM7XG4gICAgICBjID0gYjtcbiAgICAgIGIgPSBhO1xuICAgICAgYSA9IHQxICsgdDIgfCAwO1xuICAgIH1cbiAgICBIMlswXSA9IEgyWzBdICsgYSB8IDA7XG4gICAgSDJbMV0gPSBIMlsxXSArIGIgfCAwO1xuICAgIEgyWzJdID0gSDJbMl0gKyBjIHwgMDtcbiAgICBIMlszXSA9IEgyWzNdICsgZCB8IDA7XG4gICAgSDJbNF0gPSBIMls0XSArIGUgfCAwO1xuICAgIEgyWzVdID0gSDJbNV0gKyBmIHwgMDtcbiAgICBIMls2XSA9IEgyWzZdICsgZyB8IDA7XG4gICAgSDJbN10gPSBIMls3XSArIGggfCAwO1xuICB9XG4gIGZpbmFsaXplKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICBzdXBlci5maW5hbGl6ZShtZXNzYWdlVXBkYXRlKTtcbiAgICBjb25zdCBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG4gICAgY29uc3QgbkJpdHNMZWZ0ID0gdGhpcy5fZGF0YS5zaWdCeXRlcyAqIDg7XG4gICAgdGhpcy5fZGF0YS53b3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDEyOCA8PCAyNCAtIG5CaXRzTGVmdCAlIDMyO1xuICAgIHRoaXMuX2RhdGEud29yZHNbKG5CaXRzTGVmdCArIDY0ID4+PiA5IDw8IDQpICsgMTRdID0gTWF0aC5mbG9vcihcbiAgICAgIG5CaXRzVG90YWwgLyA0Mjk0OTY3Mjk2XG4gICAgKTtcbiAgICB0aGlzLl9kYXRhLndvcmRzWyhuQml0c0xlZnQgKyA2NCA+Pj4gOSA8PCA0KSArIDE1XSA9IG5CaXRzVG90YWw7XG4gICAgdGhpcy5fZGF0YS5zaWdCeXRlcyA9IHRoaXMuX2RhdGEud29yZHMubGVuZ3RoICogNDtcbiAgICB0aGlzLl9wcm9jZXNzKCk7XG4gICAgcmV0dXJuIHRoaXMuX2hhc2g7XG4gIH1cbn1cbmZ1bmN0aW9uIHNoYTI1NihtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgU0hBMjU2KCkuZmluYWxpemUobWVzc2FnZSkudG9TdHJpbmcoKTtcbn1cbmZ1bmN0aW9uIHNoYTI1NmJhc2U2NChtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgU0hBMjU2KCkuZmluYWxpemUobWVzc2FnZSkudG9TdHJpbmcoQmFzZTY0KTtcbn1cblxuZnVuY3Rpb24gaGFzaChvYmplY3QsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBoYXNoZWQgPSB0eXBlb2Ygb2JqZWN0ID09PSBcInN0cmluZ1wiID8gb2JqZWN0IDogb2JqZWN0SGFzaChvYmplY3QsIG9wdGlvbnMpO1xuICByZXR1cm4gc2hhMjU2YmFzZTY0KGhhc2hlZCkuc2xpY2UoMCwgMTApO1xufVxuXG5mdW5jdGlvbiBtdXJtdXJIYXNoKGtleSwgc2VlZCA9IDApIHtcbiAgaWYgKHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIpIHtcbiAgICBrZXkgPSBjcmVhdGVCdWZmZXIoa2V5KTtcbiAgfVxuICBsZXQgaSA9IDA7XG4gIGxldCBoMSA9IHNlZWQ7XG4gIGxldCBrMTtcbiAgbGV0IGgxYjtcbiAgY29uc3QgcmVtYWluZGVyID0ga2V5Lmxlbmd0aCAmIDM7XG4gIGNvbnN0IGJ5dGVzID0ga2V5Lmxlbmd0aCAtIHJlbWFpbmRlcjtcbiAgY29uc3QgYzEgPSAzNDMyOTE4MzUzO1xuICBjb25zdCBjMiA9IDQ2MTg0NTkwNztcbiAgd2hpbGUgKGkgPCBieXRlcykge1xuICAgIGsxID0ga2V5W2ldICYgMjU1IHwgKGtleVsrK2ldICYgMjU1KSA8PCA4IHwgKGtleVsrK2ldICYgMjU1KSA8PCAxNiB8IChrZXlbKytpXSAmIDI1NSkgPDwgMjQ7XG4gICAgKytpO1xuICAgIGsxID0gKGsxICYgNjU1MzUpICogYzEgKyAoKChrMSA+Pj4gMTYpICogYzEgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICBrMSA9IGsxIDw8IDE1IHwgazEgPj4+IDE3O1xuICAgIGsxID0gKGsxICYgNjU1MzUpICogYzIgKyAoKChrMSA+Pj4gMTYpICogYzIgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICBoMSBePSBrMTtcbiAgICBoMSA9IGgxIDw8IDEzIHwgaDEgPj4+IDE5O1xuICAgIGgxYiA9IChoMSAmIDY1NTM1KSAqIDUgKyAoKChoMSA+Pj4gMTYpICogNSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgIGgxID0gKGgxYiAmIDY1NTM1KSArIDI3NDkyICsgKCgoaDFiID4+PiAxNikgKyA1ODk2NCAmIDY1NTM1KSA8PCAxNik7XG4gIH1cbiAgazEgPSAwO1xuICBzd2l0Y2ggKHJlbWFpbmRlcikge1xuICAgIGNhc2UgMzoge1xuICAgICAgazEgXj0gKGtleVtpICsgMl0gJiAyNTUpIDw8IDE2O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgazEgXj0gKGtleVtpICsgMV0gJiAyNTUpIDw8IDg7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAxOiB7XG4gICAgICBrMSBePSBrZXlbaV0gJiAyNTU7XG4gICAgICBrMSA9IChrMSAmIDY1NTM1KSAqIGMxICsgKCgoazEgPj4+IDE2KSAqIGMxICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgICBrMSA9IGsxIDw8IDE1IHwgazEgPj4+IDE3O1xuICAgICAgazEgPSAoazEgJiA2NTUzNSkgKiBjMiArICgoKGsxID4+PiAxNikgKiBjMiAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgICAgaDEgXj0gazE7XG4gICAgfVxuICB9XG4gIGgxIF49IGtleS5sZW5ndGg7XG4gIGgxIF49IGgxID4+PiAxNjtcbiAgaDEgPSAoaDEgJiA2NTUzNSkgKiAyMjQ2ODIyNTA3ICsgKCgoaDEgPj4+IDE2KSAqIDIyNDY4MjI1MDcgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgaDEgXj0gaDEgPj4+IDEzO1xuICBoMSA9IChoMSAmIDY1NTM1KSAqIDMyNjY0ODk5MDkgKyAoKChoMSA+Pj4gMTYpICogMzI2NjQ4OTkwOSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICBoMSBePSBoMSA+Pj4gMTY7XG4gIHJldHVybiBoMSA+Pj4gMDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh2YWwpO1xufVxuXG5mdW5jdGlvbiBpc0VxdWFsKG9iamVjdDEsIG9iamVjdDIsIGhhc2hPcHRpb25zID0ge30pIHtcbiAgaWYgKG9iamVjdDEgPT09IG9iamVjdDIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAob2JqZWN0SGFzaChvYmplY3QxLCBoYXNoT3B0aW9ucykgPT09IG9iamVjdEhhc2gob2JqZWN0MiwgaGFzaE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBkaWZmKG9iajEsIG9iajIsIG9wdHMgPSB7fSkge1xuICBjb25zdCBoMSA9IF90b0hhc2hlZE9iamVjdChvYmoxLCBvcHRzKTtcbiAgY29uc3QgaDIgPSBfdG9IYXNoZWRPYmplY3Qob2JqMiwgb3B0cyk7XG4gIHJldHVybiBfZGlmZihoMSwgaDIsIG9wdHMpO1xufVxuZnVuY3Rpb24gX2RpZmYoaDEsIGgyLCBvcHRzID0ge30pIHtcbiAgY29uc3QgZGlmZnMgPSBbXTtcbiAgY29uc3QgYWxsUHJvcHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gICAgLi4uT2JqZWN0LmtleXMoaDEucHJvcHMgfHwge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKGgyLnByb3BzIHx8IHt9KVxuICBdKTtcbiAgaWYgKGgxLnByb3BzICYmIGgyLnByb3BzKSB7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGFsbFByb3BzKSB7XG4gICAgICBjb25zdCBwMSA9IGgxLnByb3BzW3Byb3BdO1xuICAgICAgY29uc3QgcDIgPSBoMi5wcm9wc1twcm9wXTtcbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICBkaWZmcy5wdXNoKC4uLl9kaWZmKGgxLnByb3BzPy5bcHJvcF0sIGgyLnByb3BzPy5bcHJvcF0sIG9wdHMpKTtcbiAgICAgIH0gZWxzZSBpZiAocDEgfHwgcDIpIHtcbiAgICAgICAgZGlmZnMucHVzaChcbiAgICAgICAgICBuZXcgRGlmZkVudHJ5KChwMiB8fCBwMSkua2V5LCBwMSA/IFwicmVtb3ZlZFwiIDogXCJhZGRlZFwiLCBwMiwgcDEpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChhbGxQcm9wcy5zaXplID09PSAwICYmIGgxLmhhc2ggIT09IGgyLmhhc2gpIHtcbiAgICBkaWZmcy5wdXNoKG5ldyBEaWZmRW50cnkoKGgyIHx8IGgxKS5rZXksIFwiY2hhbmdlZFwiLCBoMiwgaDEpKTtcbiAgfVxuICByZXR1cm4gZGlmZnM7XG59XG5mdW5jdGlvbiBfdG9IYXNoZWRPYmplY3Qob2JqLCBvcHRzLCBrZXkgPSBcIlwiKSB7XG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBuZXcgRGlmZkhhc2hlZE9iamVjdChrZXksIG9iaiwgb2JqZWN0SGFzaChvYmosIG9wdHMpKTtcbiAgfVxuICBjb25zdCBwcm9wcyA9IHt9O1xuICBjb25zdCBoYXNoZXMgPSBbXTtcbiAgZm9yIChjb25zdCBfa2V5IGluIG9iaikge1xuICAgIHByb3BzW19rZXldID0gX3RvSGFzaGVkT2JqZWN0KFxuICAgICAgb2JqW19rZXldLFxuICAgICAgb3B0cyxcbiAgICAgIGtleSA/IGAke2tleX0uJHtfa2V5fWAgOiBfa2V5XG4gICAgKTtcbiAgICBoYXNoZXMucHVzaChwcm9wc1tfa2V5XS5oYXNoKTtcbiAgfVxuICByZXR1cm4gbmV3IERpZmZIYXNoZWRPYmplY3Qoa2V5LCBvYmosIGB7JHtoYXNoZXMuam9pbihcIjpcIil9fWAsIHByb3BzKTtcbn1cbmNsYXNzIERpZmZFbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKGtleSwgdHlwZSwgbmV3VmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnRvSlNPTigpO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBcImFkZGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBBZGRlZCAgIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJyZW1vdmVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBSZW1vdmVkIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjaGFuZ2VkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBDaGFuZ2VkIFxcYCR7dGhpcy5rZXl9XFxgIGZyb20gXFxgJHt0aGlzLm9sZFZhbHVlPy50b1N0cmluZygpIHx8IFwiLVwifVxcYCB0byBcXGAke3RoaXMubmV3VmFsdWUudG9TdHJpbmcoKX1cXGBgO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY2xhc3MgRGlmZkhhc2hlZE9iamVjdCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUsIGhhc2gsIHByb3BzKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaGFzaCA9IGhhc2g7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIGlmICh0aGlzLnByb3BzKSB7XG4gICAgICByZXR1cm4gYHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oXCIsXCIpfX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBrID0gdGhpcy5rZXkgfHwgXCIuXCI7XG4gICAgaWYgKHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiBgJHtrfSh7JHtPYmplY3Qua2V5cyh0aGlzLnByb3BzKS5qb2luKFwiLFwiKX19KWA7XG4gICAgfVxuICAgIHJldHVybiBgJHtrfSgke3RoaXMudmFsdWV9KWA7XG4gIH1cbn1cblxuZXhwb3J0IHsgZGlmZiwgaGFzaCwgaXNFcXVhbCwgbXVybXVySGFzaCwgb2JqZWN0SGFzaCwgc2hhMjU2LCBzaGEyNTZiYXNlNjQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuXG5jb25zdCBnaXRodWJVcmxSZWdleCA9XG4gIC8oPzpnaXRcXCspP2h0dHBzPzpcXC9cXC9naXRodWJcXC5jb21cXC8oW15cXC9dK1xcL1teXFwvXSspXFwuZ2l0LzsgLy8gVE9ETzogRG9uJ3QgdHJ1c3QgdGhpcywgaXQncyBjaGF0Z2JkIDopXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0T3duZXJBbmRSZXBvKFxuICByZXBvc2l0b3J5VXJsOiBzdHJpbmcsXG4pOiBbc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoID0gcmVwb3NpdG9yeVVybC5tYXRjaChnaXRodWJVcmxSZWdleCk7XG5cbiAgaWYgKG1hdGNoKSB7XG4gICAgY29uc3QgW293bmVyLCByZXBvXSA9IG1hdGNoWzFdLnNwbGl0KFwiL1wiKTtcbiAgICByZXR1cm4gW293bmVyLCByZXBvXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFJlcG9zaXRvcnkobWFuaWZlc3Q6IFBhY2thZ2VNYW5pZmVzdCkge1xuICByZXR1cm4gdHlwZW9mIG1hbmlmZXN0LnJlcG9zaXRvcnkgPT09IFwic3RyaW5nXCJcbiAgICA/IG1hbmlmZXN0LnJlcG9zaXRvcnlcbiAgICA6IG1hbmlmZXN0LnJlcG9zaXRvcnk/LnVybDtcbn1cblxuY29uc3QgY29tbWl0TGVuZ3RoID0gNztcblxuLypcbiAqIFwiMDllZmQwNTUzMzc0ZmY3ZDNlNjJiNzkzNzhlMzE4NGY1ZWI1NzU3MVwiID0+IFwiMDllZmQwNVwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhYmJyZXZpYXRlQ29tbWl0SGFzaChmdWxsSGFzaDogc3RyaW5nKSB7XG4gIHJldHVybiBmdWxsSGFzaC5zdWJzdHJpbmcoMCwgY29tbWl0TGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHVsbFJlcXVlc3QocmVmOiBzdHJpbmcpIHtcbiAgcmV0dXJuICFOdW1iZXIuaXNOYU4oTnVtYmVyKHJlZikpXG59XG4iLCAie1xuICBcIm5hbWVcIjogXCJwa2ctcHItbmV3XCIsXG4gIFwidmVyc2lvblwiOiBcIjAuMC41XCIsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJcIixcbiAgXCJtYWluXCI6IFwiaW5kZXguanNcIixcbiAgXCJ0eXBlXCI6IFwibW9kdWxlXCIsXG4gIFwiYmluXCI6IHtcbiAgICBcInBrZy1wci1uZXdcIjogXCJiaW4vY2xpLmpzXCJcbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImRldlwiOiBcInRzdXAgLS13YXRjaFwiLFxuICAgIFwiYnVpbGRcIjogXCJ0c3VwXCIsXG4gICAgXCJidWlsZDpwdWJsaXNoXCI6IFwiQVBJX1VSTD1odHRwczovL3BrZy5wci5uZXcvIHRzdXBcIlxuICB9LFxuICBcImtleXdvcmRzXCI6IFtdLFxuICBcImF1dGhvclwiOiBcIlwiLFxuICBcImxpY2Vuc2VcIjogXCJJU0NcIixcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGpzZGV2dG9vbHMvZXotc3Bhd25cIjogXCJeMy4wLjRcIixcbiAgICBcImZhc3QtZ2xvYlwiOiBcIl4zLjMuMlwiLFxuICAgIFwicXVlcnktcmVnaXN0cnlcIjogXCJeMy4wLjBcIixcbiAgICBcIkBvY3Rva2l0L2FjdGlvblwiOiBcIl42LjEuMFwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBwa2ctcHItbmV3L3V0aWxzXCI6IFwid29ya3NwYWNlOl5cIixcbiAgICBcImNpdHR5XCI6IFwiXjAuMS42XCIsXG4gICAgXCJ0c3VwXCI6IFwiXjguMC4yXCJcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7QUFxRUEsU0FBUyxTQUFTLE9BQU87QUFDdkIsU0FBTyxVQUFVLFFBQVEsT0FBTyxVQUFVO0FBQzVDO0FBQ0EsU0FBUyxNQUFNLFlBQVlBLFdBQVUsWUFBWSxLQUFLLFFBQVE7QUFDNUQsTUFBSSxDQUFDLFNBQVNBLFNBQVEsR0FBRztBQUN2QixXQUFPLE1BQU0sWUFBWSxDQUFDLEdBQUcsV0FBVyxNQUFNO0FBQUEsRUFDaEQ7QUFDQSxRQUFNLFNBQVMsT0FBTyxPQUFPLENBQUMsR0FBR0EsU0FBUTtBQUN6QyxhQUFXQyxRQUFPLFlBQVk7QUFDNUIsUUFBSUEsU0FBUSxlQUFlQSxTQUFRLGVBQWU7QUFDaEQ7QUFBQSxJQUNGO0FBQ0EsVUFBTSxRQUFRLFdBQVdBLElBQUc7QUFDNUIsUUFBSSxVQUFVLFFBQVEsVUFBVSxRQUFRO0FBQ3RDO0FBQUEsSUFDRjtBQUNBLFFBQUksVUFBVSxPQUFPLFFBQVFBLE1BQUssT0FBTyxTQUFTLEdBQUc7QUFDbkQ7QUFBQSxJQUNGO0FBQ0EsUUFBSSxNQUFNLFFBQVEsS0FBSyxLQUFLLE1BQU0sUUFBUSxPQUFPQSxJQUFHLENBQUMsR0FBRztBQUN0RCxhQUFPQSxJQUFHLElBQUksQ0FBQyxHQUFHLE9BQU8sR0FBRyxPQUFPQSxJQUFHLENBQUM7QUFBQSxJQUN6QyxXQUFXLFNBQVMsS0FBSyxLQUFLLFNBQVMsT0FBT0EsSUFBRyxDQUFDLEdBQUc7QUFDbkQsYUFBT0EsSUFBRyxJQUFJO0FBQUEsUUFDWjtBQUFBLFFBQ0EsT0FBT0EsSUFBRztBQUFBLFNBQ1QsWUFBWSxHQUFHLFNBQVMsTUFBTSxNQUFNQSxLQUFJLFNBQVM7QUFBQSxRQUNsRDtBQUFBLE1BQ0Y7QUFBQSxJQUNGLE9BQU87QUFDTCxhQUFPQSxJQUFHLElBQUk7QUFBQSxJQUNoQjtBQUFBLEVBQ0Y7QUFDQSxTQUFPO0FBQ1Q7QUFDQSxTQUFTLFdBQVcsUUFBUTtBQUMxQixTQUFPLElBQUk7QUFBQTtBQUFBLElBRVQsV0FBVyxPQUFPLENBQUNDLElBQUdDLE9BQU0sTUFBTUQsSUFBR0MsSUFBRyxJQUFJLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFBQTtBQUUzRDtBQUdBLFNBQVMsY0FBYyxLQUFLO0FBQzFCLFNBQU8sT0FBTyxVQUFVLFNBQVMsS0FBSyxHQUFHLE1BQU07QUFDakQ7QUFDQSxTQUFTLFNBQVMsS0FBSztBQUNyQixNQUFJLENBQUMsY0FBYyxHQUFHLEdBQUc7QUFDdkIsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLENBQUMsSUFBSSxXQUFXLENBQUMsSUFBSSxNQUFNO0FBQzdCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxJQUFJLE9BQU87QUFDYixXQUFPO0FBQUEsRUFDVDtBQUNBLFNBQU87QUFDVDtBQXFRQSxTQUFTLG1CQUFtQixPQUFPLFFBQVEsQ0FBQyxHQUFHLGVBQWUsR0FBRztBQUMvRCxNQUFJLFVBQVUsUUFBUTtBQUNwQixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUksT0FBTyxVQUFVLFVBQVU7QUFDN0IsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLE1BQU0sS0FBSyxLQUFLLE1BQU0sS0FBSyxFQUFFLFVBQVUsUUFBUTtBQUNqRCxXQUFPLE1BQU0sS0FBSyxFQUFFO0FBQUEsRUFDdEI7QUFDQSxTQUFPO0FBQ1Q7QUFRQSxTQUFTLGNBQWMsVUFBVSxDQUFDLEdBQUc7QUFDbkMsU0FBTyxJQUFJLFFBQVEsT0FBTztBQUM1QjtBQXZaQSxJQUFNLFdBZ0JBLFVBNkZBLE1Ba0JGLFFBQ0UsT0FDQTtBQWpJTjtBQUFBO0FBQUE7QUFBQSxJQUFNLFlBQVk7QUFBQSxNQUNoQixRQUFRLE9BQU87QUFBQSxNQUNmLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUNQLE1BQU07QUFBQSxNQUNOLEtBQUs7QUFBQSxNQUNMLE1BQU07QUFBQSxNQUNOLFNBQVM7QUFBQSxNQUNULE1BQU07QUFBQSxNQUNOLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUNQLEtBQUs7QUFBQSxNQUNMLE9BQU87QUFBQSxNQUNQLE9BQU87QUFBQSxNQUNQLFNBQVMsT0FBTztBQUFBLElBQ2xCO0FBQ0EsSUFBTSxXQUFXO0FBQUE7QUFBQSxNQUVmLFFBQVE7QUFBQSxRQUNOLE9BQU87QUFBQSxNQUNUO0FBQUE7QUFBQSxNQUVBLE9BQU87QUFBQSxRQUNMLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUEsTUFDQSxPQUFPO0FBQUEsUUFDTCxPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBO0FBQUEsTUFFQSxNQUFNO0FBQUEsUUFDSixPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBO0FBQUEsTUFFQSxLQUFLO0FBQUEsUUFDSCxPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBO0FBQUEsTUFFQSxNQUFNO0FBQUEsUUFDSixPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBLE1BQ0EsU0FBUztBQUFBLFFBQ1AsT0FBTyxVQUFVO0FBQUEsTUFDbkI7QUFBQSxNQUNBLE1BQU07QUFBQSxRQUNKLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUEsTUFDQSxPQUFPO0FBQUEsUUFDTCxPQUFPLFVBQVU7QUFBQSxNQUNuQjtBQUFBLE1BQ0EsT0FBTztBQUFBLFFBQ0wsT0FBTyxVQUFVO0FBQUEsTUFDbkI7QUFBQSxNQUNBLEtBQUs7QUFBQSxRQUNILE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUE7QUFBQSxNQUVBLE9BQU87QUFBQSxRQUNMLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUE7QUFBQSxNQUVBLE9BQU87QUFBQSxRQUNMLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUE7QUFBQSxNQUVBLFNBQVM7QUFBQSxRQUNQLE9BQU8sVUFBVTtBQUFBLE1BQ25CO0FBQUEsSUFDRjtBQTBDQSxJQUFNLE9BQU8sV0FBVztBQWtCeEIsSUFBSSxTQUFTO0FBQ2IsSUFBTSxRQUFRLENBQUM7QUFDZixJQUFNLFVBQU4sTUFBTSxTQUFRO0FBQUEsTUFDWixZQUFZLFVBQVUsQ0FBQyxHQUFHO0FBQ3hCLGNBQU0sUUFBUSxRQUFRLFNBQVM7QUFDL0IsYUFBSyxVQUFVO0FBQUEsVUFDYjtBQUFBLFlBQ0UsR0FBRztBQUFBLFlBQ0gsVUFBVSxFQUFFLEdBQUcsUUFBUSxTQUFTO0FBQUEsWUFDaEMsT0FBTyxtQkFBbUIsUUFBUSxPQUFPLEtBQUs7QUFBQSxZQUM5QyxXQUFXLENBQUMsR0FBRyxRQUFRLGFBQWEsQ0FBQyxDQUFDO0FBQUEsVUFDeEM7QUFBQSxVQUNBO0FBQUEsWUFDRSxPQUFPO0FBQUEsWUFDUCxVQUFVO0FBQUEsWUFDVixhQUFhO0FBQUEsWUFDYixlQUFlO0FBQUEsY0FDYixNQUFNO0FBQUEsY0FDTixRQUFRO0FBQUEsY0FDUixTQUFTO0FBQUEsWUFDWDtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQ0EsbUJBQVcsUUFBUSxPQUFPO0FBQ3hCLGdCQUFNSCxZQUFXO0FBQUEsWUFDZjtBQUFBLFlBQ0EsR0FBRyxLQUFLLFFBQVE7QUFBQSxZQUNoQixHQUFHLE1BQU0sSUFBSTtBQUFBLFVBQ2Y7QUFDQSxlQUFLLElBQUksSUFBSSxLQUFLLFdBQVdBLFNBQVE7QUFDckMsZUFBSyxJQUFJLEVBQUUsTUFBTSxLQUFLO0FBQUEsWUFDcEJBO0FBQUEsWUFDQTtBQUFBLFVBQ0Y7QUFBQSxRQUNGO0FBQ0EsWUFBSSxLQUFLLFFBQVEsUUFBUTtBQUN2QixlQUFLLFVBQVU7QUFBQSxRQUNqQjtBQUNBLGFBQUssV0FBVyxDQUFDO0FBQUEsTUFDbkI7QUFBQSxNQUNBLElBQUksUUFBUTtBQUNWLGVBQU8sS0FBSyxRQUFRO0FBQUEsTUFDdEI7QUFBQSxNQUNBLElBQUksTUFBTSxPQUFPO0FBQ2YsYUFBSyxRQUFRLFFBQVE7QUFBQSxVQUNuQjtBQUFBLFVBQ0EsS0FBSyxRQUFRO0FBQUEsVUFDYixLQUFLLFFBQVE7QUFBQSxRQUNmO0FBQUEsTUFDRjtBQUFBLE1BQ0EsT0FBTyxTQUFTLE1BQU07QUFDcEIsWUFBSSxDQUFDLEtBQUssUUFBUSxRQUFRO0FBQ3hCLGdCQUFNLElBQUksTUFBTSwwQkFBMEI7QUFBQSxRQUM1QztBQUNBLGVBQU8sS0FBSyxRQUFRLE9BQU8sU0FBUyxJQUFJO0FBQUEsTUFDMUM7QUFBQSxNQUNBLE9BQU8sU0FBUztBQUNkLGNBQU0sV0FBVyxJQUFJLFNBQVE7QUFBQSxVQUMzQixHQUFHLEtBQUs7QUFBQSxVQUNSLEdBQUc7QUFBQSxRQUNMLENBQUM7QUFDRCxZQUFJLEtBQUssU0FBUztBQUNoQixtQkFBUyxVQUFVLEtBQUssT0FBTztBQUFBLFFBQ2pDO0FBQ0EsZUFBTztBQUFBLE1BQ1Q7QUFBQSxNQUNBLGFBQWFBLFdBQVU7QUFDckIsZUFBTyxLQUFLLE9BQU87QUFBQSxVQUNqQixHQUFHLEtBQUs7QUFBQSxVQUNSLFVBQVU7QUFBQSxZQUNSLEdBQUcsS0FBSyxRQUFRO0FBQUEsWUFDaEIsR0FBR0E7QUFBQSxVQUNMO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0EsUUFBUSxLQUFLO0FBQ1gsZUFBTyxLQUFLLGFBQWE7QUFBQSxVQUN2QixLQUFLLEtBQUssUUFBUSxTQUFTLE1BQU0sS0FBSyxRQUFRLFNBQVMsTUFBTSxNQUFNLE1BQU07QUFBQSxRQUMzRSxDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0EsWUFBWSxVQUFVO0FBQ3BCLGFBQUssUUFBUSxVQUFVLEtBQUssUUFBUTtBQUNwQyxlQUFPO0FBQUEsTUFDVDtBQUFBLE1BQ0EsZUFBZSxVQUFVO0FBQ3ZCLFlBQUksVUFBVTtBQUNaLGdCQUFNLElBQUksS0FBSyxRQUFRLFVBQVUsUUFBUSxRQUFRO0FBQ2pELGNBQUksS0FBSyxHQUFHO0FBQ1YsbUJBQU8sS0FBSyxRQUFRLFVBQVUsT0FBTyxHQUFHLENBQUM7QUFBQSxVQUMzQztBQUFBLFFBQ0YsT0FBTztBQUNMLGVBQUssUUFBUSxVQUFVLE9BQU8sQ0FBQztBQUFBLFFBQ2pDO0FBQ0EsZUFBTztBQUFBLE1BQ1Q7QUFBQSxNQUNBLGFBQWEsV0FBVztBQUN0QixhQUFLLFFBQVEsWUFBWSxNQUFNLFFBQVEsU0FBUyxJQUFJLFlBQVksQ0FBQyxTQUFTO0FBQzFFLGVBQU87QUFBQSxNQUNUO0FBQUEsTUFDQSxVQUFVO0FBQ1IsYUFBSyxZQUFZO0FBQ2pCLGFBQUssUUFBUTtBQUFBLE1BQ2Y7QUFBQSxNQUNBLGFBQWE7QUFDWCxhQUFLLGVBQWU7QUFDcEIsYUFBSyxXQUFXO0FBQUEsTUFDbEI7QUFBQSxNQUNBLGNBQWM7QUFDWixtQkFBVyxRQUFRLEtBQUssUUFBUSxPQUFPO0FBQ3JDLGNBQUksQ0FBQyxRQUFRLE9BQU8sSUFBSSxHQUFHO0FBQ3pCLG9CQUFRLE9BQU8sSUFBSSxJQUFJLFFBQVEsSUFBSTtBQUFBLFVBQ3JDO0FBQ0Esa0JBQVEsSUFBSSxJQUFJLEtBQUssSUFBSSxFQUFFO0FBQUEsUUFDN0I7QUFBQSxNQUNGO0FBQUEsTUFDQSxpQkFBaUI7QUFDZixtQkFBVyxRQUFRLEtBQUssUUFBUSxPQUFPO0FBQ3JDLGNBQUksUUFBUSxPQUFPLElBQUksR0FBRztBQUN4QixvQkFBUSxJQUFJLElBQUksUUFBUSxPQUFPLElBQUk7QUFDbkMsbUJBQU8sUUFBUSxPQUFPLElBQUk7QUFBQSxVQUM1QjtBQUFBLFFBQ0Y7QUFBQSxNQUNGO0FBQUEsTUFDQSxVQUFVO0FBQ1IsYUFBSyxZQUFZLEtBQUssUUFBUSxRQUFRLEtBQUs7QUFDM0MsYUFBSyxZQUFZLEtBQUssUUFBUSxRQUFRLEtBQUs7QUFBQSxNQUM3QztBQUFBLE1BQ0EsWUFBWSxRQUFRLE1BQU07QUFDeEIsWUFBSSxDQUFDLFFBQVE7QUFDWDtBQUFBLFFBQ0Y7QUFDQSxZQUFJLENBQUMsT0FBTyxTQUFTO0FBQ25CLGlCQUFPLFVBQVUsT0FBTztBQUFBLFFBQzFCO0FBQ0EsZUFBTyxRQUFRLENBQUMsU0FBUztBQUN2QixlQUFLLElBQUksRUFBRSxJQUFJLE9BQU8sSUFBSSxFQUFFLEtBQUssQ0FBQztBQUFBLFFBQ3BDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsYUFBYTtBQUNYLGFBQUssZUFBZSxLQUFLLFFBQVEsTUFBTTtBQUN2QyxhQUFLLGVBQWUsS0FBSyxRQUFRLE1BQU07QUFBQSxNQUN6QztBQUFBLE1BQ0EsZUFBZSxRQUFRO0FBQ3JCLFlBQUksQ0FBQyxRQUFRO0FBQ1g7QUFBQSxRQUNGO0FBQ0EsWUFBSSxPQUFPLFNBQVM7QUFDbEIsaUJBQU8sUUFBUSxPQUFPO0FBQ3RCLGlCQUFPLE9BQU87QUFBQSxRQUNoQjtBQUFBLE1BQ0Y7QUFBQSxNQUNBLFlBQVk7QUFDVixpQkFBUztBQUFBLE1BQ1g7QUFBQSxNQUNBLGFBQWE7QUFDWCxpQkFBUztBQUNULGNBQU0sU0FBUyxNQUFNLE9BQU8sQ0FBQztBQUM3QixtQkFBVyxRQUFRLFFBQVE7QUFDekIsZUFBSyxDQUFDLEVBQUUsT0FBTyxLQUFLLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztBQUFBLFFBQ2pDO0FBQUEsTUFDRjtBQUFBLE1BQ0EsVUFBVSxRQUFRO0FBQ2hCLGNBQU0sVUFBVSxVQUFVLEtBQUssUUFBUTtBQUN2QyxhQUFLLFVBQVU7QUFDZixZQUFJLE9BQU8sWUFBWSxZQUFZO0FBQ2pDO0FBQUEsUUFDRjtBQUNBLG1CQUFXLFFBQVEsS0FBSyxRQUFRLE9BQU87QUFDckMsZUFBSyxJQUFJLElBQUksUUFBUSxNQUFNLEtBQUssUUFBUSxNQUFNLElBQUksQ0FBQyxLQUFLLEtBQUssSUFBSTtBQUNqRSxlQUFLLElBQUksRUFBRSxNQUFNLEtBQUssSUFBSTtBQUFBLFFBQzVCO0FBQUEsTUFDRjtBQUFBLE1BQ0EsV0FBV0EsV0FBVSxPQUFPO0FBQzFCLGVBQU8sSUFBSSxTQUFTO0FBQ2xCLGNBQUksUUFBUTtBQUNWLGtCQUFNLEtBQUssQ0FBQyxNQUFNQSxXQUFVLE1BQU0sS0FBSyxDQUFDO0FBQ3hDO0FBQUEsVUFDRjtBQUNBLGlCQUFPLEtBQUssT0FBT0EsV0FBVSxNQUFNLEtBQUs7QUFBQSxRQUMxQztBQUFBLE1BQ0Y7QUFBQSxNQUNBLE9BQU9BLFdBQVUsTUFBTSxPQUFPO0FBQzVCLGFBQUtBLFVBQVMsU0FBUyxLQUFLLEtBQUssT0FBTztBQUN0QyxpQkFBTztBQUFBLFFBQ1Q7QUFDQSxjQUFNLFNBQVM7QUFBQSxVQUNiLE1BQXNCLG9CQUFJLEtBQUs7QUFBQSxVQUMvQixNQUFNLENBQUM7QUFBQSxVQUNQLEdBQUdBO0FBQUEsVUFDSCxPQUFPLG1CQUFtQkEsVUFBUyxPQUFPLEtBQUssUUFBUSxLQUFLO0FBQUEsUUFDOUQ7QUFDQSxZQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsS0FBSyxTQUFTLEtBQUssQ0FBQyxDQUFDLEdBQUc7QUFDcEQsaUJBQU8sT0FBTyxRQUFRLEtBQUssQ0FBQyxDQUFDO0FBQUEsUUFDL0IsT0FBTztBQUNMLGlCQUFPLE9BQU8sQ0FBQyxHQUFHLElBQUk7QUFBQSxRQUN4QjtBQUNBLFlBQUksT0FBTyxTQUFTO0FBQ2xCLGlCQUFPLEtBQUssUUFBUSxPQUFPLE9BQU87QUFDbEMsaUJBQU8sT0FBTztBQUFBLFFBQ2hCO0FBQ0EsWUFBSSxPQUFPLFlBQVk7QUFDckIsY0FBSSxDQUFDLE1BQU0sUUFBUSxPQUFPLFVBQVUsR0FBRztBQUNyQyxtQkFBTyxhQUFhLE9BQU8sV0FBVyxNQUFNLElBQUk7QUFBQSxVQUNsRDtBQUNBLGlCQUFPLEtBQUssS0FBSyxPQUFPLE9BQU8sV0FBVyxLQUFLLElBQUksQ0FBQztBQUNwRCxpQkFBTyxPQUFPO0FBQUEsUUFDaEI7QUFDQSxlQUFPLE9BQU8sT0FBTyxPQUFPLFNBQVMsV0FBVyxPQUFPLEtBQUssWUFBWSxJQUFJO0FBQzVFLGVBQU8sTUFBTSxPQUFPLE9BQU8sUUFBUSxXQUFXLE9BQU8sTUFBTTtBQUMzRCxjQUFNLGFBQWEsQ0FBQyxTQUFTLFVBQVU7QUFDckMsZ0JBQU0sWUFBWSxLQUFLLFNBQVMsU0FBUyxLQUFLLEtBQUssUUFBUTtBQUMzRCxjQUFJLEtBQUssU0FBUyxVQUFVLFdBQVcsR0FBRztBQUN4QyxrQkFBTSxRQUFRLENBQUMsR0FBRyxLQUFLLFNBQVMsT0FBTyxJQUFJO0FBQzNDLGdCQUFJLFdBQVcsR0FBRztBQUNoQixvQkFBTSxLQUFLLGFBQWEsUUFBUSxTQUFTO0FBQUEsWUFDM0M7QUFDQSxpQkFBSyxLQUFLLEVBQUUsR0FBRyxLQUFLLFNBQVMsUUFBUSxNQUFNLE1BQU0sQ0FBQztBQUNsRCxpQkFBSyxTQUFTLFFBQVE7QUFBQSxVQUN4QjtBQUNBLGNBQUksUUFBUTtBQUNWLGlCQUFLLFNBQVMsU0FBUztBQUN2QixpQkFBSyxLQUFLLE1BQU07QUFBQSxVQUNsQjtBQUFBLFFBQ0Y7QUFDQSxxQkFBYSxLQUFLLFNBQVMsT0FBTztBQUNsQyxjQUFNLFdBQVcsS0FBSyxTQUFTLFFBQVEsT0FBTyxPQUFPLE9BQU8sS0FBSyxRQUFRLElBQUksS0FBSyxTQUFTLEtBQUssUUFBUSxJQUFJO0FBQzVHLGFBQUssU0FBUyxPQUFPLE9BQU87QUFDNUIsWUFBSSxXQUFXLEtBQUssUUFBUSxVQUFVO0FBQ3BDLGNBQUk7QUFDRixrQkFBTSxnQkFBZ0IsS0FBSyxVQUFVO0FBQUEsY0FDbkMsT0FBTztBQUFBLGNBQ1AsT0FBTztBQUFBLGNBQ1AsT0FBTztBQUFBLFlBQ1QsQ0FBQztBQUNELGtCQUFNLFlBQVksS0FBSyxTQUFTLGVBQWU7QUFDL0MsaUJBQUssU0FBUyxhQUFhO0FBQzNCLGdCQUFJLFdBQVc7QUFDYixtQkFBSyxTQUFTLFNBQVMsS0FBSyxTQUFTLFNBQVMsS0FBSztBQUNuRCxrQkFBSSxLQUFLLFNBQVMsUUFBUSxLQUFLLFFBQVEsYUFBYTtBQUNsRCxxQkFBSyxTQUFTLFVBQVU7QUFBQSxrQkFDdEI7QUFBQSxrQkFDQSxLQUFLLFFBQVE7QUFBQSxnQkFDZjtBQUNBO0FBQUEsY0FDRjtBQUFBLFlBQ0Y7QUFBQSxVQUNGLFFBQVE7QUFBQSxVQUNSO0FBQUEsUUFDRjtBQUNBLG1CQUFXLElBQUk7QUFBQSxNQUNqQjtBQUFBLE1BQ0EsS0FBSyxRQUFRO0FBQ1gsbUJBQVcsWUFBWSxLQUFLLFFBQVEsV0FBVztBQUM3QyxtQkFBUyxJQUFJLFFBQVE7QUFBQSxZQUNuQixTQUFTLEtBQUs7QUFBQSxVQUNoQixDQUFDO0FBQUEsUUFDSDtBQUFBLE1BQ0Y7QUFBQSxJQUNGO0FBYUEsWUFBUSxVQUFVLE1BQU0sUUFBUSxVQUFVO0FBQzFDLFlBQVEsVUFBVSxTQUFTLFFBQVEsVUFBVTtBQUM3QyxZQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVU7QUFDNUMsWUFBUSxVQUFVLFlBQVksUUFBUSxVQUFVO0FBQ2hELFlBQVEsVUFBVSxPQUFPLFFBQVEsVUFBVTtBQUMzQyxZQUFRLFVBQVUsUUFBUSxRQUFRLFVBQVU7QUFDNUMsWUFBUSxVQUFVLFNBQVMsUUFBUSxVQUFVO0FBQUE7QUFBQTs7O0FDcFo3QyxTQUFTLHlCQUF5QjtBQUNsQyxTQUFTLFdBQVc7QUFFcEIsU0FBUyxXQUFXLE9BQU87QUFDekIsUUFBTSxNQUFNLFFBQVEsSUFBSSxJQUFJO0FBQzVCLFFBQU0sUUFBUSxNQUFNLE1BQU0sSUFBSSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQ0ksT0FBTUEsR0FBRSxLQUFLLEVBQUUsUUFBUSxXQUFXLEVBQUUsRUFBRSxRQUFRLEtBQUssRUFBRSxDQUFDO0FBQ3JHLFNBQU87QUFDVDtBQUVBLFNBQVMsWUFBWSxNQUFNLFFBQVE7QUFDakMsUUFBTSxRQUFRLE9BQU8sV0FBVyxPQUFPO0FBQ3ZDLFNBQU8sTUFBTSxLQUFLLFFBQVEsSUFBSTtBQUNoQztBQVpBLElBY00sU0FDQTtBQWZOO0FBQUE7QUFBQTtBQWNBLElBQU0sVUFBVSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTTtBQUN0QyxJQUFNLGdCQUFOLE1BQW9CO0FBQUEsTUFDbEIsWUFBWSxPQUFPLE1BQU07QUFDdkIsZUFBTyxPQUFPLFdBQVcsS0FBSyxFQUFFLEtBQUssTUFBTTtBQUFBLE1BQzdDO0FBQUEsTUFDQSxXQUFXLE1BQU0sTUFBTTtBQUNyQixjQUFNLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUTtBQUM5QixjQUFJLE9BQU8sT0FBTyxJQUFJLFVBQVUsVUFBVTtBQUN4QyxtQkFBTyxJQUFJLFVBQVUsT0FBTyxLQUFLLFlBQVksSUFBSSxPQUFPLElBQUk7QUFBQSxVQUM5RDtBQUNBLGlCQUFPO0FBQUEsUUFDVCxDQUFDO0FBQ0QsZUFBTyxrQkFBa0IsTUFBTSxHQUFHLEtBQUs7QUFBQSxNQUN6QztBQUFBLE1BQ0EsV0FBVyxNQUFNLE1BQU07QUFDckIsZUFBTyxLQUFLLE9BQU8sS0FBSyxtQkFBbUIsSUFBSTtBQUFBLE1BQ2pEO0FBQUEsTUFDQSxjQUFjLEtBQUs7QUFDakIsZUFBTyxJQUFJLE9BQU8sT0FBTyxFQUFFLEtBQUssR0FBRztBQUFBLE1BQ3JDO0FBQUEsTUFDQSxhQUFhLFFBQVEsTUFBTTtBQUN6QixjQUFNLFVBQVUsS0FBSyxXQUFXLE9BQU8sTUFBTSxJQUFJO0FBQ2pELFlBQUksT0FBTyxTQUFTLE9BQU87QUFDekIsaUJBQU8sT0FBTztBQUFBLFlBQ1osUUFBUSxPQUFPLEdBQUc7QUFBQSxZQUNsQixPQUFPLFNBQVMsT0FBTztBQUFBLFlBQ3ZCLEdBQUcsUUFBUSxNQUFNLElBQUk7QUFBQSxVQUN2QixFQUFFLE9BQU8sT0FBTyxFQUFFLElBQUksQ0FBQ0EsT0FBTSxRQUFRQSxFQUFDLEVBQUUsS0FBSyxJQUFJLElBQUk7QUFBQSxRQUN2RDtBQUNBLGVBQU8sS0FBSyxjQUFjO0FBQUEsVUFDeEIsUUFBUSxPQUFPLElBQUk7QUFBQSxVQUNuQixRQUFRLE9BQU8sR0FBRztBQUFBLFVBQ2xCO0FBQUEsUUFDRixDQUFDO0FBQUEsTUFDSDtBQUFBLE1BQ0EsSUFBSSxRQUFRLEtBQUs7QUFDZixjQUFNLE9BQU8sS0FBSyxhQUFhLFFBQVE7QUFBQSxVQUNyQyxTQUFTLElBQUksUUFBUSxPQUFPLFdBQVc7QUFBQSxVQUN2QyxHQUFHLElBQUksUUFBUTtBQUFBLFFBQ2pCLENBQUM7QUFDRCxlQUFPO0FBQUEsVUFDTCxPQUFPO0FBQUEsVUFDUCxPQUFPLFFBQVEsSUFBSSxJQUFJLFFBQVEsVUFBVSxRQUFRLFNBQVMsSUFBSSxRQUFRLFVBQVUsUUFBUTtBQUFBLFFBQzFGO0FBQUEsTUFDRjtBQUFBLElBQ0Y7QUFBQTtBQUFBOzs7QUMzREEsWUFBWSxTQUFTO0FBY3JCLFNBQVMsYUFBYSxPQUFPLFFBQVEsT0FBTyxTQUFTLE9BQU8sT0FBTyxNQUFNLEdBQUcsS0FBSyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksU0FBUyxPQUFPLE9BQU8sTUFBTSxLQUFLLElBQUksR0FBRyxRQUFRLE1BQU0sTUFBTSxDQUFDLEdBQUcsT0FBTyxLQUFLLFFBQVEsS0FBSyxHQUFHO0FBQzdMLFNBQU8sUUFBUSxPQUFPLElBQUksT0FBTyxhQUFhLE1BQU0sTUFBTSxPQUFPLE9BQU87QUFDMUU7QUFDQSxTQUFTLFdBQVcsT0FBTyxRQUFRLE1BQU0sT0FBTyxTQUFTO0FBQ3ZELFNBQU8sUUFBUSxJQUFJLE9BQU8sU0FBUyxRQUFRLE9BQU8sYUFBYSxPQUFPLFFBQVEsT0FBTyxPQUFPLElBQUk7QUFDbEc7QUFDQSxTQUFTLFlBQVksTUFBTSxPQUFPLFVBQVUsTUFBTSxLQUFLLEtBQUssU0FBUyxHQUFHO0FBQ3RFLFNBQU8sQ0FBQyxXQUFXLFVBQVUsRUFBRSxXQUFXLE1BQU0sV0FBVyxVQUFVO0FBQUEsS0FDbEUsS0FBSyxRQUFRLFFBQVEsT0FBTyxFQUFFO0FBQUEsSUFDL0I7QUFBQSxJQUNBO0FBQUEsSUFDQTtBQUFBLElBQ0E7QUFBQSxFQUNGLElBQUk7QUFDTjtBQUNBLFNBQVMsS0FBSyxNQUFNLE9BQU8sU0FBUztBQUNsQyxTQUFPLFlBQVksUUFBUSxJQUFJLEtBQUssUUFBUSxLQUFLLEtBQUssT0FBTztBQUMvRDtBQTRDQSxTQUFTLGFBQWEsV0FBVyxrQkFBa0I7QUFDakQsU0FBTyxXQUFXLFlBQVksT0FBTyxZQUFZLE9BQU8sS0FBSyxTQUFTLEVBQUUsSUFBSSxDQUFDQyxTQUFRLENBQUNBLE1BQUssTUFBTSxDQUFDLENBQUM7QUFDckc7QUFFQSxTQUFTLFNBQVMsT0FBTyxXQUFXLFNBQVM7QUFDM0MsU0FBTyxPQUFPLEtBQUssS0FBSyxPQUFPLFFBQVE7QUFDekM7QUFTQSxTQUFTLFVBQVVDLE9BQU07QUFDdkIsU0FBT0EsTUFBSyxRQUFRLElBQUksT0FBTyxXQUFXLEdBQUcsR0FBRyxFQUFFO0FBQ3BEO0FBMkhBLFNBQVMsSUFBSUEsT0FBTSxRQUFRLENBQUMsR0FBRztBQUM3QixRQUFNLE9BQU87QUFBQSxJQUNYLEdBQUc7QUFBQSxJQUNILE9BQU87QUFBQSxNQUNMLEdBQUc7QUFBQSxNQUNILEdBQUcsTUFBTTtBQUFBLElBQ1g7QUFBQSxFQUNGO0FBQ0EsUUFBTSxZQUFZQSxNQUFLLE1BQU0sSUFBSTtBQUNqQyxRQUFNLFdBQVcsQ0FBQztBQUNsQixRQUFNLFNBQVMsU0FBUyxLQUFLLE1BQU0sV0FBVztBQUM5QyxRQUFNLGNBQWM7QUFBQSxJQUNsQixHQUFHLE9BQU8sS0FBSyxNQUFNLGdCQUFnQixXQUFXLGdCQUFnQixLQUFLLE1BQU0sV0FBVyxLQUFLLGdCQUFnQixRQUFRLEtBQUssTUFBTTtBQUFBLEVBQ2hJO0FBQ0EsTUFBSSxRQUFRO0FBQ1YsZUFBV0QsUUFBTyxhQUFhO0FBQzdCLGtCQUFZQSxJQUFHLElBQUk7QUFBQSxRQUNqQixZQUFZQSxJQUFHO0FBQUEsTUFDakI7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFFBQU0sZ0JBQWdCLEtBQUssTUFBTSxVQUFVLE1BQU0sSUFBSSxLQUFLLE1BQU0sVUFBVSxLQUFLLE1BQU0sVUFBVTtBQUMvRixRQUFNLFNBQVMsVUFBVSxTQUFTO0FBQ2xDLFFBQU0sUUFBUSxLQUFLLElBQUksR0FBRyxVQUFVLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxDQUFDLElBQUk7QUFDbEUsUUFBTSxjQUFjLFFBQVE7QUFDNUIsUUFBTSxZQUFZLEtBQUssTUFBTSxhQUFhLElBQUksSUFBSSxPQUFPLEtBQUssTUFBTSxVQUFVLElBQUk7QUFDbEYsTUFBSSxLQUFLLE1BQU0sWUFBWSxHQUFHO0FBQzVCLGFBQVMsS0FBSyxHQUFHLE9BQU8sS0FBSyxNQUFNLFNBQVMsQ0FBQztBQUFBLEVBQy9DO0FBQ0EsTUFBSSxLQUFLLE9BQU87QUFDZCxVQUFNLE9BQU8sWUFBWSxFQUFFO0FBQUEsTUFDekIsS0FBSyxPQUFPLFFBQVEsVUFBVSxLQUFLLEtBQUssRUFBRSxVQUFVLENBQUM7QUFBQSxJQUN2RDtBQUNBLFVBQU0sUUFBUSxZQUFZLEVBQUU7QUFBQSxNQUMxQixRQUFRLFVBQVUsS0FBSyxLQUFLLEVBQUUsU0FBUyxVQUFVLElBQUksRUFBRSxTQUFTO0FBQUEsSUFDbEU7QUFDQSxhQUFTO0FBQUEsTUFDUCxHQUFHLFNBQVMsR0FBRyxZQUFZLEVBQUUsR0FBRyxJQUFJLEdBQUcsS0FBSyxLQUFLLEdBQUcsS0FBSyxHQUFHLFlBQVksRUFBRTtBQUFBLElBQzVFO0FBQUEsRUFDRixPQUFPO0FBQ0wsYUFBUztBQUFBLE1BQ1AsR0FBRyxTQUFTLEdBQUcsWUFBWSxFQUFFLEdBQUcsWUFBWSxFQUFFLE9BQU8sV0FBVyxDQUFDLEdBQUcsWUFBWSxFQUFFO0FBQUEsSUFDcEY7QUFBQSxFQUNGO0FBQ0EsUUFBTSxlQUFlLEtBQUssTUFBTSxXQUFXLFdBQVcsS0FBSyxPQUFPLFNBQVMsVUFBVSxVQUFVLENBQUMsSUFBSSxLQUFLLE1BQU0sV0FBVyxRQUFRLFNBQVMsVUFBVSxTQUFTLGdCQUFnQixTQUFTLFVBQVU7QUFDak0sV0FBUyxJQUFJLEdBQUcsSUFBSSxRQUFRLEtBQUs7QUFDL0IsUUFBSSxJQUFJLGdCQUFnQixLQUFLLGVBQWUsVUFBVSxRQUFRO0FBQzVELGVBQVM7QUFBQSxRQUNQLEdBQUcsU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLElBQUksT0FBTyxXQUFXLENBQUMsR0FBRyxZQUFZLENBQUM7QUFBQSxNQUN4RTtBQUFBLElBQ0YsT0FBTztBQUNMLFlBQU0sT0FBTyxVQUFVLElBQUksWUFBWTtBQUN2QyxZQUFNLE9BQU8sSUFBSSxPQUFPLGFBQWE7QUFDckMsWUFBTSxRQUFRLElBQUksT0FBTyxRQUFRLFVBQVUsSUFBSSxFQUFFLE1BQU07QUFDdkQsZUFBUztBQUFBLFFBQ1AsR0FBRyxTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLEdBQUcsWUFBWSxDQUFDO0FBQUEsTUFDcEU7QUFBQSxJQUNGO0FBQUEsRUFDRjtBQUNBLFdBQVM7QUFBQSxJQUNQLEdBQUcsU0FBUyxHQUFHLFlBQVksRUFBRSxHQUFHLFlBQVksRUFBRSxPQUFPLFdBQVcsQ0FBQyxHQUFHLFlBQVksRUFBRTtBQUFBLEVBQ3BGO0FBQ0EsTUFBSSxLQUFLLE1BQU0sZUFBZSxHQUFHO0FBQy9CLGFBQVMsS0FBSyxHQUFHLE9BQU8sS0FBSyxNQUFNLFlBQVksQ0FBQztBQUFBLEVBQ2xEO0FBQ0EsU0FBTyxTQUFTLEtBQUssSUFBSTtBQUMzQjtBQXpSQSxJQUdFLEtBQ0EsTUFDQSxVQUVJLFlBQ0EsVUFDQSxXQUNBLGdCQUNBLHNCQUNBLE1BQ0Esa0JBbUJBLFdBOENBLFFBUUEsV0FzREEsaUJBa0VBO0FBOU1OO0FBQUE7QUFBQTtBQUVBLEtBQU07QUFBQSxNQUNKLE1BQU0sQ0FBQztBQUFBLE1BQ1AsT0FBTyxDQUFDO0FBQUEsTUFDUixXQUFXO0FBQUEsUUFDVCxPQUFPLFlBQVksY0FBYyxDQUFDLElBQUk7QUFDMUMsSUFBTSxhQUFhLGNBQWMsT0FBTyxLQUFLLFNBQVMsWUFBWTtBQUNsRSxJQUFNLFdBQVcsaUJBQWlCLE9BQU8sS0FBSyxTQUFTLFNBQVM7QUFDaEUsSUFBTSxZQUFZLGFBQWE7QUFDL0IsSUFBTSxpQkFBaUIsSUFBSSxTQUFTO0FBQ3BDLElBQU0sdUJBQXVCLE9BQVcsY0FBYyxXQUFPLENBQUMsS0FBSyxJQUFJLFFBQVEsQ0FBQztBQUNoRixJQUFNLE9BQU8sUUFBUSxRQUFRLG9CQUFvQixPQUFPLGVBQWUsT0FBTyxjQUFjO0FBQzVGLElBQU0sbUJBQW1CLENBQUMsZUFBZSxZQUFZLGFBQWEsQ0FBQyxrQkFBa0Isd0JBQXdCO0FBbUI3RyxJQUFNLFlBQVk7QUFBQSxNQUNoQixPQUFPLEtBQUssR0FBRyxDQUFDO0FBQUEsTUFDaEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxpQkFBaUI7QUFBQSxNQUNuQyxLQUFLLEtBQUssR0FBRyxJQUFJLGlCQUFpQjtBQUFBLE1BQ2xDLFFBQVEsS0FBSyxHQUFHLEVBQUU7QUFBQSxNQUNsQixXQUFXLEtBQUssR0FBRyxFQUFFO0FBQUEsTUFDckIsU0FBUyxLQUFLLEdBQUcsRUFBRTtBQUFBLE1BQ25CLFFBQVEsS0FBSyxHQUFHLEVBQUU7QUFBQSxNQUNsQixlQUFlLEtBQUssR0FBRyxFQUFFO0FBQUEsTUFDekIsT0FBTyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ2xCLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNoQixPQUFPLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDbEIsUUFBUSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ25CLE1BQU0sS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNqQixTQUFTLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDcEIsTUFBTSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ2pCLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNsQixNQUFNLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDakIsU0FBUyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3BCLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNsQixTQUFTLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDcEIsVUFBVSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3JCLFFBQVEsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNuQixXQUFXLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDdEIsUUFBUSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ25CLFNBQVMsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUNwQixhQUFhLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDeEIsV0FBVyxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3RCLGFBQWEsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUN4QixjQUFjLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDekIsWUFBWSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3ZCLGVBQWUsS0FBSyxJQUFJLEVBQUU7QUFBQSxNQUMxQixZQUFZLEtBQUssSUFBSSxFQUFFO0FBQUEsTUFDdkIsYUFBYSxLQUFLLElBQUksRUFBRTtBQUFBLE1BQ3hCLGVBQWUsS0FBSyxLQUFLLEVBQUU7QUFBQSxNQUMzQixhQUFhLEtBQUssS0FBSyxFQUFFO0FBQUEsTUFDekIsZUFBZSxLQUFLLEtBQUssRUFBRTtBQUFBLE1BQzNCLGdCQUFnQixLQUFLLEtBQUssRUFBRTtBQUFBLE1BQzVCLGNBQWMsS0FBSyxLQUFLLEVBQUU7QUFBQSxNQUMxQixpQkFBaUIsS0FBSyxLQUFLLEVBQUU7QUFBQSxNQUM3QixjQUFjLEtBQUssS0FBSyxFQUFFO0FBQUEsTUFDMUIsZUFBZSxLQUFLLEtBQUssRUFBRTtBQUFBLElBQzdCO0FBSUEsSUFBTSxTQUFTLGFBQWE7QUFRNUIsSUFBTSxZQUFZO0FBQUEsTUFDaEI7QUFBQSxNQUNBO0FBQUEsSUFDRixFQUFFLEtBQUssR0FBRztBQW1EVixJQUFNLGtCQUFrQjtBQUFBLE1BQ3RCLE9BQU87QUFBQSxRQUNMLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLEdBQUc7QUFBQSxRQUNILEdBQUc7QUFBQSxNQUNMO0FBQUEsTUFDQSxRQUFRO0FBQUEsUUFDTixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixHQUFHO0FBQUEsUUFDSCxHQUFHO0FBQUEsTUFDTDtBQUFBLE1BQ0EsY0FBYztBQUFBLFFBQ1osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osR0FBRztBQUFBLFFBQ0gsR0FBRztBQUFBLE1BQ0w7QUFBQSxNQUNBLHFCQUFxQjtBQUFBLFFBQ25CLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLEdBQUc7QUFBQSxRQUNILEdBQUc7QUFBQSxNQUNMO0FBQUEsTUFDQSxhQUFhO0FBQUEsUUFDWCxJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixHQUFHO0FBQUEsUUFDSCxHQUFHO0FBQUEsTUFDTDtBQUFBLE1BQ0EsY0FBYztBQUFBLFFBQ1osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osSUFBSTtBQUFBLFFBQ0osR0FBRztBQUFBLFFBQ0gsR0FBRztBQUFBLE1BQ0w7QUFBQSxNQUNBLHFCQUFxQjtBQUFBLFFBQ25CLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLElBQUk7QUFBQSxRQUNKLEdBQUc7QUFBQSxRQUNILEdBQUc7QUFBQSxNQUNMO0FBQUEsTUFDQSxTQUFTO0FBQUEsUUFDUCxJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixJQUFJO0FBQUEsUUFDSixHQUFHO0FBQUEsUUFDSCxHQUFHO0FBQUEsTUFDTDtBQUFBLElBQ0Y7QUFDQSxJQUFNLGVBQWU7QUFBQSxNQUNuQixhQUFhO0FBQUEsTUFDYixhQUFhO0FBQUEsTUFDYixRQUFRO0FBQUEsTUFDUixTQUFTO0FBQUEsTUFDVCxZQUFZO0FBQUEsTUFDWixXQUFXO0FBQUEsTUFDWCxjQUFjO0FBQUEsSUFDaEI7QUFBQTtBQUFBOzs7QUN0TkE7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQUFTLE9BQU8sY0FBYztBQUM5QixPQUFPLE9BQU87QUFDZCxTQUFTLG1CQUFtQjtBQUU1QixPQUFPLGdCQUFnQjtBQWdJdkIsU0FBUyxFQUFFLEVBQUMsV0FBVSxJQUFFLE1BQUUsSUFBRSxDQUFDLEdBQUU7QUFBQyxRQUFNLElBQUUsQ0FBQyxnSUFBK0gsMERBQTBELEVBQUUsS0FBSyxHQUFHO0FBQUUsU0FBTyxJQUFJLE9BQU8sR0FBRSxJQUFFLFNBQU8sR0FBRztBQUFDO0FBQUMsU0FBUyxFQUFFLEdBQUU7QUFBQyxNQUFHLE9BQU8sS0FBRztBQUFTLFVBQU0sSUFBSSxVQUFVLGdDQUFnQyxPQUFPLENBQUMsSUFBSTtBQUFFLFNBQU8sRUFBRSxRQUFRLEVBQUUsR0FBRSxFQUFFO0FBQUM7QUFBMDRtQixTQUFTLEVBQUUsR0FBRSxJQUFFLENBQUMsR0FBRTtBQUFDLE1BQUcsT0FBTyxLQUFHLFlBQVUsRUFBRSxXQUFTLE1BQUksSUFBRSxFQUFDLG1CQUFrQixNQUFHLEdBQUcsRUFBQyxHQUFFLElBQUUsRUFBRSxDQUFDLEdBQUUsRUFBRSxXQUFTO0FBQUcsV0FBTztBQUFFLE1BQUUsRUFBRSxRQUFRLEVBQUUsR0FBRSxJQUFJO0FBQUUsUUFBTSxJQUFFLEVBQUUsb0JBQWtCLElBQUU7QUFBRSxNQUFJLElBQUU7QUFBRSxhQUFVRSxNQUFLLEdBQUU7QUFBQyxVQUFNLElBQUVBLEdBQUUsWUFBWSxDQUFDO0FBQUUsUUFBRyxLQUFHLE1BQUksS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRztBQUFJO0FBQVMsWUFBTyxFQUFFLGVBQWVBLEVBQUMsR0FBRTtBQUFBLE1BQUMsS0FBSTtBQUFBLE1BQUksS0FBSTtBQUFJLGFBQUc7QUFBRTtBQUFBLE1BQU0sS0FBSTtBQUFJLGFBQUc7QUFBRTtBQUFBLE1BQU07QUFBUSxhQUFHO0FBQUEsSUFBRTtBQUFBLEVBQUM7QUFBQyxTQUFPO0FBQUM7QUFBMi9CLFNBQVMsSUFBRztBQUFDLFFBQU0sSUFBRSxvQkFBSTtBQUFJLGFBQVMsQ0FBQyxHQUFFLENBQUMsS0FBSSxPQUFPLFFBQVEsQ0FBQyxHQUFFO0FBQUMsZUFBUyxDQUFDLEdBQUVBLEVBQUMsS0FBSSxPQUFPLFFBQVEsQ0FBQztBQUFFLFFBQUUsQ0FBQyxJQUFFLEVBQUMsTUFBSyxRQUFRQSxHQUFFLENBQUMsQ0FBQyxLQUFJLE9BQU0sUUFBUUEsR0FBRSxDQUFDLENBQUMsSUFBRyxHQUFFLEVBQUUsQ0FBQyxJQUFFLEVBQUUsQ0FBQyxHQUFFLEVBQUUsSUFBSUEsR0FBRSxDQUFDLEdBQUVBLEdBQUUsQ0FBQyxDQUFDO0FBQUUsV0FBTyxlQUFlLEdBQUUsR0FBRSxFQUFDLE9BQU0sR0FBRSxZQUFXLE1BQUUsQ0FBQztBQUFBLEVBQUU7QUFBQyxTQUFPLE9BQU8sZUFBZSxHQUFFLFNBQVEsRUFBQyxPQUFNLEdBQUUsWUFBVyxNQUFFLENBQUMsR0FBRSxFQUFFLE1BQU0sUUFBTSxZQUFXLEVBQUUsUUFBUSxRQUFNLFlBQVcsRUFBRSxNQUFNLE9BQUssRUFBRSxHQUFFLEVBQUUsTUFBTSxVQUFRLEVBQUUsR0FBRSxFQUFFLE1BQU0sVUFBUSxFQUFFLEdBQUUsRUFBRSxRQUFRLE9BQUssRUFBRSxDQUFDLEdBQUUsRUFBRSxRQUFRLFVBQVEsRUFBRSxDQUFDLEdBQUUsRUFBRSxRQUFRLFVBQVEsRUFBRSxDQUFDLEdBQUUsT0FBTyxpQkFBaUIsR0FBRSxFQUFDLGNBQWEsRUFBQyxPQUFNLENBQUMsR0FBRSxHQUFFLE1BQUksTUFBSSxLQUFHLE1BQUksSUFBRSxJQUFFLElBQUUsS0FBRyxJQUFFLE1BQUksTUFBSSxLQUFLLE9BQU8sSUFBRSxLQUFHLE1BQUksRUFBRSxJQUFFLE1BQUksS0FBRyxLQUFHLEtBQUssTUFBTSxJQUFFLE1BQUksQ0FBQyxJQUFFLElBQUUsS0FBSyxNQUFNLElBQUUsTUFBSSxDQUFDLElBQUUsS0FBSyxNQUFNLElBQUUsTUFBSSxDQUFDLEdBQUUsWUFBVyxNQUFFLEdBQUUsVUFBUyxFQUFDLE9BQU0sT0FBRztBQUFDLFVBQU0sSUFBRSx5QkFBeUIsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQUUsUUFBRyxDQUFDO0FBQUUsYUFBTyxDQUFDLEdBQUUsR0FBRSxDQUFDO0FBQUUsUUFBRyxDQUFDLENBQUMsSUFBRTtBQUFFLE1BQUUsV0FBUyxNQUFJLElBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxJQUFJLE9BQUcsSUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFO0FBQUcsVUFBTUEsS0FBRSxPQUFPLFNBQVMsR0FBRSxFQUFFO0FBQUUsV0FBTyxDQUFDQSxNQUFHLEtBQUcsS0FBSUEsTUFBRyxJQUFFLEtBQUlBLEtBQUUsR0FBRztBQUFBLEVBQUMsR0FBRSxZQUFXLE1BQUUsR0FBRSxjQUFhLEVBQUMsT0FBTSxPQUFHLEVBQUUsYUFBYSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRSxZQUFXLE1BQUUsR0FBRSxlQUFjLEVBQUMsT0FBTSxPQUFHO0FBQUMsUUFBRyxJQUFFO0FBQUUsYUFBTyxLQUFHO0FBQUUsUUFBRyxJQUFFO0FBQUcsYUFBTyxNQUFJLElBQUU7QUFBRyxRQUFJLEdBQUUsR0FBRUE7QUFBRSxRQUFHLEtBQUc7QUFBSSxZQUFJLElBQUUsT0FBSyxLQUFHLEtBQUcsS0FBSSxJQUFFLEdBQUVBLEtBQUU7QUFBQSxTQUFPO0FBQUMsV0FBRztBQUFHLFlBQU0sSUFBRSxJQUFFO0FBQUcsVUFBRSxLQUFLLE1BQU0sSUFBRSxFQUFFLElBQUUsR0FBRSxJQUFFLEtBQUssTUFBTSxJQUFFLENBQUMsSUFBRSxHQUFFQSxLQUFFLElBQUUsSUFBRTtBQUFBLElBQUU7QUFBQyxVQUFNLElBQUUsS0FBSyxJQUFJLEdBQUUsR0FBRUEsRUFBQyxJQUFFO0FBQUUsUUFBRyxNQUFJO0FBQUUsYUFBTztBQUFHLFFBQUksSUFBRSxNQUFJLEtBQUssTUFBTUEsRUFBQyxLQUFHLElBQUUsS0FBSyxNQUFNLENBQUMsS0FBRyxJQUFFLEtBQUssTUFBTSxDQUFDO0FBQUcsV0FBTyxNQUFJLE1BQUksS0FBRyxLQUFJO0FBQUEsRUFBQyxHQUFFLFlBQVcsTUFBRSxHQUFFLFdBQVUsRUFBQyxPQUFNLENBQUMsR0FBRSxHQUFFLE1BQUksRUFBRSxjQUFjLEVBQUUsYUFBYSxHQUFFLEdBQUUsQ0FBQyxDQUFDLEdBQUUsWUFBVyxNQUFFLEdBQUUsV0FBVSxFQUFDLE9BQU0sT0FBRyxFQUFFLGNBQWMsRUFBRSxhQUFhLENBQUMsQ0FBQyxHQUFFLFlBQVcsTUFBRSxFQUFDLENBQUMsR0FBRTtBQUFDO0FBR3ZndEIsU0FBUyxFQUFFLEdBQUUsR0FBRSxHQUFFO0FBQUMsU0FBTyxPQUFPLENBQUMsRUFBRSxVQUFVLEVBQUUsUUFBUSxTQUFRO0FBQUEsQ0FDM0csRUFBRSxNQUFNO0FBQUEsQ0FDUixFQUFFLElBQUksT0FBRyxHQUFHLEdBQUUsR0FBRSxDQUFDLENBQUMsRUFBRSxLQUFLO0FBQUEsQ0FDekI7QUFBQztBQUFDLFNBQVMsR0FBRyxHQUFFLEdBQUU7QUFBQyxNQUFHLE1BQUk7QUFBRTtBQUFPLFFBQU0sSUFBRSxFQUFFLE1BQU07QUFBQSxDQUNuRCxHQUFFLElBQUUsRUFBRSxNQUFNO0FBQUEsQ0FDWixHQUFFQSxLQUFFLENBQUM7QUFBRSxXQUFRLElBQUUsR0FBRSxJQUFFLEtBQUssSUFBSSxFQUFFLFFBQU8sRUFBRSxNQUFNLEdBQUU7QUFBSSxNQUFFLENBQUMsTUFBSSxFQUFFLENBQUMsS0FBR0EsR0FBRSxLQUFLLENBQUM7QUFBRSxTQUFPQTtBQUFDO0FBQWdDLFNBQVMsRUFBRSxHQUFFLEdBQUU7QUFBQyxJQUFFLFNBQU8sRUFBRSxXQUFXLENBQUM7QUFBRTtBQTZQOUosZUFBZSxPQUFPLFNBQVMsT0FBTyxDQUFDLEdBQUc7QUFDeEMsTUFBSSxDQUFDLEtBQUssUUFBUSxLQUFLLFNBQVMsUUFBUTtBQUN0QyxXQUFPLE1BQU0sS0FBSztBQUFBLE1BQ2hCO0FBQUEsTUFDQSxjQUFjLEtBQUs7QUFBQSxNQUNuQixhQUFhLEtBQUs7QUFBQSxNQUNsQixjQUFjLEtBQUs7QUFBQSxJQUNyQixDQUFDO0FBQUEsRUFDSDtBQUNBLE1BQUksS0FBSyxTQUFTLFdBQVc7QUFDM0IsV0FBTyxNQUFNLFFBQVE7QUFBQSxNQUNuQjtBQUFBLE1BQ0EsY0FBYyxLQUFLO0FBQUEsSUFDckIsQ0FBQztBQUFBLEVBQ0g7QUFDQSxNQUFJLEtBQUssU0FBUyxVQUFVO0FBQzFCLFdBQU8sTUFBTSxPQUFPO0FBQUEsTUFDbEI7QUFBQSxNQUNBLFNBQVMsS0FBSyxRQUFRO0FBQUEsUUFDcEIsQ0FBQyxNQUFNLE9BQU8sTUFBTSxXQUFXLEVBQUUsT0FBTyxHQUFHLE9BQU8sRUFBRSxJQUFJO0FBQUEsTUFDMUQ7QUFBQSxJQUNGLENBQUM7QUFBQSxFQUNIO0FBQ0EsTUFBSSxLQUFLLFNBQVMsZUFBZTtBQUMvQixXQUFPLE1BQU0sWUFBWTtBQUFBLE1BQ3ZCO0FBQUEsTUFDQSxTQUFTLEtBQUssUUFBUTtBQUFBLFFBQ3BCLENBQUMsTUFBTSxPQUFPLE1BQU0sV0FBVyxFQUFFLE9BQU8sR0FBRyxPQUFPLEVBQUUsSUFBSTtBQUFBLE1BQzFEO0FBQUEsTUFDQSxVQUFVLEtBQUs7QUFBQSxJQUNqQixDQUFDO0FBQUEsRUFDSDtBQUNBLFFBQU0sSUFBSSxNQUFNLHdCQUF3QixLQUFLLElBQUksRUFBRTtBQUNyRDtBQTFhQSxJQVdNLEtBQ0EsS0FDQSxNQUVBLFFBNkJBLFFBS0EsT0FpQkYsS0FFQSxZQUVBQyxNQUVBQyxtQkFRQSxXQVVBQyxlQU9BQyxlQWdDQSxtQkFDRSxHQUU2WSxHQUFLLEdBQWtrSSxHQUFRLEdBQThxZixHQUFLLEdBQTJCLEdBQW1DLEdBQW1ELEdBQWswQixHQUF1QixHQUE0OUMsR0FBTSxHQUEyQixHQUFLLEdBQVMsR0FBTSxHQUFNLEdBQU0sR0FBWSxHQUE4QyxHQUE4QyxHQUErQixHQUEwVyxJQUEySSxJQVE1cHVCLEdBQXlFLEdBQWdFLElBQStELEdBS3BJLElBQWtXLElBQXV4QixJQUFvaEIsSUFFdnlELFNBQ0EsR0FDQSxlQUNBLGVBQ0EsY0FDQSxlQUNBLE9BQ0EsV0FDQSxnQkFDQSxrQkFDQSxtQkFDQSxxQkFDQSxxQkFDQSxRQWlCQSxNQTRDQSxTQStCQSxRQWlEQTtBQTdTTjtBQUFBO0FBQUE7QUFHQTtBQUVBO0FBQ0E7QUFDQTtBQUlBLElBQU0sTUFBTTtBQUNaLElBQU0sTUFBTSxHQUFHLEdBQUc7QUFDbEIsSUFBTSxPQUFPO0FBRWIsSUFBTSxTQUFTO0FBQUEsTUFDYixHQUFHLEdBQUcsR0FBRztBQUNQLFlBQUksQ0FBQztBQUFHLGlCQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQztBQUM3QixlQUFPLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQztBQUFBLE1BQ2hDO0FBQUEsTUFDQSxLQUFLLEdBQUcsR0FBRztBQUNULFlBQUksTUFBTTtBQUVWLFlBQUksSUFBSTtBQUFHLGlCQUFPLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUFBLGlCQUNwQixJQUFJO0FBQUcsaUJBQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQztBQUVqQyxZQUFJLElBQUk7QUFBRyxpQkFBTyxHQUFHLEdBQUcsR0FBRyxDQUFDLENBQUM7QUFBQSxpQkFDcEIsSUFBSTtBQUFHLGlCQUFPLEdBQUcsR0FBRyxHQUFHLENBQUM7QUFFakMsZUFBTztBQUFBLE1BQ1Q7QUFBQSxNQUNBLElBQUksQ0FBQyxRQUFRLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSztBQUFBLE1BQ2pDLE1BQU0sQ0FBQyxRQUFRLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSztBQUFBLE1BQ25DLFNBQVMsQ0FBQyxRQUFRLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSztBQUFBLE1BQ3RDLFVBQVUsQ0FBQyxRQUFRLE1BQU0sR0FBRyxHQUFHLEdBQUcsS0FBSztBQUFBLE1BQ3ZDLFVBQVUsQ0FBQyxRQUFRLE1BQU0sR0FBRyxHQUFHLElBQUksT0FBTyxLQUFLO0FBQUEsTUFDL0MsVUFBVSxDQUFDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEtBQUs7QUFBQSxNQUMvQyxNQUFNLEdBQUcsR0FBRztBQUFBLE1BQ1osTUFBTSxHQUFHLEdBQUc7QUFBQSxNQUNaLE1BQU0sR0FBRyxHQUFHO0FBQUEsTUFDWixNQUFNLEdBQUcsR0FBRztBQUFBLE1BQ1osU0FBUyxHQUFHLEdBQUc7QUFBQSxJQUNqQjtBQUVBLElBQU0sU0FBUztBQUFBLE1BQ2IsSUFBSSxDQUFDLFFBQVEsTUFBTSxHQUFHLEdBQUcsSUFBSSxPQUFPLEtBQUs7QUFBQSxNQUN6QyxNQUFNLENBQUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sS0FBSztBQUFBLElBQzdDO0FBRUEsSUFBTSxRQUFRO0FBQUEsTUFDWixRQUFRLEdBQUcsR0FBRztBQUFBLE1BQ2QsSUFBSSxDQUFDLFFBQVEsTUFBTSxHQUFHLEdBQUcsS0FBSyxPQUFPLEtBQUs7QUFBQSxNQUMxQyxNQUFNLENBQUMsUUFBUSxNQUFNLEdBQUcsR0FBRyxJQUFJLE9BQU8sS0FBSztBQUFBLE1BQzNDLE1BQU0sR0FBRyxHQUFHO0FBQUEsTUFDWixTQUFTLEdBQUcsR0FBRztBQUFBLE1BQ2YsV0FBVyxHQUFHLEdBQUc7QUFBQSxNQUNqQixNQUFNLE9BQU87QUFDWCxZQUFJLFFBQVE7QUFDWixpQkFBUyxJQUFJLEdBQUcsSUFBSSxPQUFPO0FBQ3pCLG1CQUFTLEtBQUssUUFBUSxJQUFJLFFBQVEsSUFBSSxPQUFPLEdBQUcsSUFBSTtBQUN0RCxZQUFJO0FBQ0YsbUJBQVMsT0FBTztBQUNsQixlQUFPO0FBQUEsTUFDVDtBQUFBLElBQ0Y7QUFFQSxJQUFJLE1BQU0sRUFBRSxRQUFRLFFBQVEsT0FBTyxLQUFLO0FBRXhDLElBQUksYUFBYSxFQUFDLFNBQVMsQ0FBQyxFQUFDO0FBRTdCLElBQUlILE9BQU07QUFFVixJQUFJQyxvQkFDSCxFQUFFLGNBQWMsUUFBUSxPQUFPLFFBQVEsS0FBSyxTQUFTLFlBQVksT0FDaEUsaUJBQWlCLFFBQVEsT0FDekIsUUFBUSxLQUFLLFNBQVMsU0FBUyxLQUMvQixRQUFRLGFBQWEsV0FDcEJELEtBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLFNBQVMsVUFDdkMsUUFBUSxRQUFRO0FBRWxCLElBQUksWUFDSCxDQUFDLE1BQU0sT0FBTyxVQUFVLFNBQ3hCLFdBQVM7QUFDUixVQUFJLFNBQVMsS0FBSztBQUNsQixVQUFJLFFBQVEsT0FBTyxRQUFRLE9BQU8sS0FBSyxNQUFNO0FBQzdDLGFBQU8sQ0FBQyxRQUNMLE9BQU9FLGNBQWEsUUFBUSxPQUFPLFNBQVMsS0FBSyxJQUFJLFFBQ3JELE9BQU8sU0FBUztBQUFBLElBQ3BCO0FBRUQsSUFBSUEsZ0JBQWUsQ0FBQyxRQUFRLE9BQU8sU0FBUyxVQUFVO0FBQ3JELFVBQUksUUFBUSxPQUFPLFVBQVUsR0FBRyxLQUFLLElBQUk7QUFDekMsVUFBSSxNQUFNLE9BQU8sVUFBVSxRQUFRLE1BQU0sTUFBTTtBQUMvQyxVQUFJLFlBQVksSUFBSSxRQUFRLEtBQUs7QUFDakMsYUFBTyxDQUFDLFlBQVksUUFBUUEsY0FBYSxLQUFLLE9BQU8sU0FBUyxTQUFTLElBQUksUUFBUTtBQUFBLElBQ3BGO0FBRUEsSUFBSUMsZ0JBQWUsQ0FBQyxVQUFVRix1QkFBc0I7QUFBQSxNQUNuRCxrQkFBa0I7QUFBQSxNQUNsQixPQUFPLFVBQVUsQ0FBQUYsT0FBSyxVQUFVQSxFQUFDLFlBQVk7QUFBQSxNQUM3QyxNQUFNLFVBQVUsVUFBVSxXQUFXLFlBQVksaUJBQWlCLElBQUk7QUFBQSxNQUN0RSxLQUFLLFVBQVUsVUFBVSxXQUFXLFlBQVksaUJBQWlCLElBQUk7QUFBQSxNQUNyRSxRQUFRLFVBQVUsVUFBVSxXQUFXLFVBQVUsSUFBSTtBQUFBLE1BQ3JELFdBQVcsVUFBVSxVQUFVLFdBQVcsVUFBVSxJQUFJO0FBQUEsTUFDeEQsU0FBUyxVQUFVLFVBQVUsV0FBVyxVQUFVLElBQUk7QUFBQSxNQUN0RCxRQUFRLFVBQVUsVUFBVSxXQUFXLFVBQVUsSUFBSTtBQUFBLE1BQ3JELGVBQWUsVUFBVSxVQUFVLFdBQVcsVUFBVSxJQUFJO0FBQUEsTUFDNUQsT0FBTyxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUNyRCxLQUFLLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ25ELE9BQU8sVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDckQsUUFBUSxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUN0RCxNQUFNLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3BELFNBQVMsVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDdkQsTUFBTSxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUNwRCxPQUFPLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3JELE1BQU0sVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDcEQsU0FBUyxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUN2RCxPQUFPLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3JELFNBQVMsVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDdkQsVUFBVSxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUN4RCxRQUFRLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLE1BQ3RELFdBQVcsVUFBVSxVQUFVLFlBQVksVUFBVSxJQUFJO0FBQUEsTUFDekQsUUFBUSxVQUFVLFVBQVUsWUFBWSxVQUFVLElBQUk7QUFBQSxNQUN0RCxTQUFTLFVBQVUsVUFBVSxZQUFZLFVBQVUsSUFBSTtBQUFBLElBQ3hEO0FBRUEsZUFBVyxVQUFVSSxjQUFhO0FBQ2xDLGVBQVcsUUFBUSxlQUFlQTtBQUVsQyxJQUFJLG9CQUFvQixXQUFXO0FBQ25DLElBQU0sSUFBaUIsd0NBQXdCLGlCQUFpQjtBQUUrVSxJQUFJLElBQUUsQ0FBQztBQUFQLElBQVMsSUFBRSxFQUFDLElBQUksVUFBUztBQUFDLGFBQU87QUFBQSxJQUFDLEdBQUUsSUFBSSxRQUFRLEdBQUU7QUFBQyxVQUFFO0FBQUEsSUFBRSxFQUFDO0FBQUUsS0FBQyxTQUFTLEdBQUU7QUFBQyxVQUFJLElBQUUsQ0FBQztBQUFFLFFBQUUsVUFBUSxHQUFFLEVBQUUsaUJBQWUsU0FBUyxHQUFFO0FBQUMsWUFBSUosS0FBRSxFQUFFLFdBQVcsQ0FBQyxHQUFFLElBQUUsRUFBRSxVQUFRLElBQUUsRUFBRSxXQUFXLENBQUMsSUFBRSxHQUFFLElBQUVBO0FBQUUsZUFBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsVUFBUUEsTUFBRyxNQUFLLEtBQUcsTUFBSyxJQUFFQSxNQUFHLEtBQUcsR0FBRSxLQUFHLFFBQU8sS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsUUFBTSxNQUFJLEtBQUcsUUFBTSxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsUUFBTSxNQUFJLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsU0FBTyxNQUFJLE1BQUksS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxRQUFNLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsU0FBTyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLEtBQUcsU0FBTyxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsV0FBUyxXQUFTLEtBQUcsS0FBRyxVQUFRLE1BQUk7QUFBQSxNQUFHLEdBQUUsRUFBRSxrQkFBZ0IsU0FBUyxHQUFFO0FBQUMsWUFBSUEsS0FBRSxLQUFLLGVBQWUsQ0FBQztBQUFFLGVBQU9BLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE1BQUksSUFBRTtBQUFBLE1BQUM7QUFBRSxlQUFTLEVBQUUsR0FBRTtBQUFDLGVBQU8sRUFBRSxNQUFNLGtEQUFrRCxLQUFHLENBQUM7QUFBQSxNQUFDO0FBQUMsUUFBRSxTQUFPLFNBQVMsR0FBRTtBQUFDLGlCQUFRQSxLQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRUEsR0FBRSxRQUFPO0FBQUksY0FBRSxJQUFFLEtBQUssZ0JBQWdCQSxHQUFFLENBQUMsQ0FBQztBQUFFLGVBQU87QUFBQSxNQUFDLEdBQUUsRUFBRSxRQUFNLFNBQVMsR0FBRUEsSUFBRSxHQUFFO0FBQUMsa0JBQVEsRUFBRSxPQUFPLENBQUMsR0FBRUEsS0FBRUEsTUFBRyxHQUFFLElBQUUsS0FBRyxHQUFFQSxLQUFFLE1BQUlBLEtBQUUsVUFBUUEsS0FBRyxJQUFFLE1BQUksSUFBRSxVQUFRO0FBQUcsaUJBQVEsSUFBRSxJQUFHLElBQUUsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsY0FBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFPLENBQUM7QUFBRSxjQUFHLEtBQUdBLE1BQUcsS0FBRyxJQUFFLElBQUU7QUFBRyxnQkFBRyxJQUFFLEtBQUc7QUFBRSxtQkFBRztBQUFBO0FBQU87QUFBTSxlQUFHO0FBQUEsUUFBRTtBQUFDLGVBQU87QUFBQSxNQUFDO0FBQUEsSUFBRSxHQUFHLENBQUM7QUFBRSxJQUFNLElBQUU7QUFBRSxJQUFJLElBQUUsV0FBVTtBQUFDLGFBQU87QUFBQSxJQUFneWU7QUFBb1gsSUFBTSxJQUFFO0FBQVIsSUFBVyxJQUFFLENBQUMsSUFBRSxNQUFJLE9BQUcsUUFBUSxJQUFFLENBQUM7QUFBbEMsSUFBc0MsSUFBRSxDQUFDLElBQUUsTUFBSSxPQUFHLFFBQVEsS0FBRyxDQUFDLE1BQU0sQ0FBQztBQUFyRSxJQUF5RSxJQUFFLENBQUMsSUFBRSxNQUFJLENBQUMsR0FBRSxHQUFFLE1BQUksUUFBUSxLQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFBeEgsSUFBNEgsSUFBRSxFQUFDLFVBQVMsRUFBQyxPQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxRQUFPLENBQUMsR0FBRSxFQUFFLEdBQUUsV0FBVSxDQUFDLEdBQUUsRUFBRSxHQUFFLFVBQVMsQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsR0FBRSxFQUFFLEdBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxHQUFFLGVBQWMsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLE9BQU0sRUFBQyxPQUFNLENBQUMsSUFBRyxFQUFFLEdBQUUsS0FBSSxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxRQUFPLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLFNBQVEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxNQUFLLENBQUMsSUFBRyxFQUFFLEdBQUUsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLGFBQVksQ0FBQyxJQUFHLEVBQUUsR0FBRSxNQUFLLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLFdBQVUsQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEdBQUUsY0FBYSxDQUFDLElBQUcsRUFBRSxHQUFFLFlBQVcsQ0FBQyxJQUFHLEVBQUUsR0FBRSxlQUFjLENBQUMsSUFBRyxFQUFFLEdBQUUsWUFBVyxDQUFDLElBQUcsRUFBRSxHQUFFLGFBQVksQ0FBQyxJQUFHLEVBQUUsRUFBQyxHQUFFLFNBQVEsRUFBQyxTQUFRLENBQUMsSUFBRyxFQUFF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LENBQUMsS0FBRyxDQUFDO0FBQUUsVUFBRSxLQUFLLEVBQUMsSUFBRyxHQUFFLE1BQUssS0FBRSxDQUFDLEdBQUUsS0FBSyxZQUFZLElBQUksR0FBRSxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSyxNQUFLLEdBQUU7QUFBQyxjQUFNLElBQUUsS0FBSyxZQUFZLElBQUksQ0FBQyxLQUFHLENBQUMsR0FBRUEsS0FBRSxDQUFDO0FBQUUsbUJBQVUsS0FBSztBQUFFLFlBQUUsR0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLFFBQU1BLEdBQUUsS0FBSyxNQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLG1CQUFVLEtBQUtBO0FBQUUsWUFBRTtBQUFBLE1BQUU7QUFBQSxNQUFDLGNBQWE7QUFBQyxhQUFLLFlBQVksTUFBTTtBQUFBLE1BQUU7QUFBQSxNQUFDLFdBQVcsR0FBRSxHQUFFO0FBQUMsWUFBRyxLQUFLLFVBQVEsWUFBVSxLQUFLLFFBQU0sV0FBVSxHQUFHLFFBQU0sQ0FBQyxLQUFLLFVBQVEsRUFBRSxJQUFJLEVBQUUsSUFBSSxLQUFHLEtBQUssS0FBSyxVQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxHQUFFLEdBQUcsUUFBTSxHQUFHLElBQUksRUFBRSxJQUFJLEtBQUcsS0FBSyxLQUFLLFVBQVMsRUFBRSxJQUFJLEdBQUUsTUFBSSxFQUFFLFlBQVksTUFBSSxPQUFLLEVBQUUsWUFBWSxNQUFJLFFBQU0sS0FBSyxLQUFLLFdBQVUsRUFBRSxZQUFZLE1BQUksR0FBRyxHQUFFLEtBQUcsS0FBSyxLQUFLLE9BQU0sRUFBRSxZQUFZLENBQUMsR0FBRSxHQUFHLFNBQU8sVUFBUztBQUFDLGNBQUcsS0FBSyxLQUFLLFVBQVM7QUFBQyxrQkFBTSxJQUFFLEtBQUssS0FBSyxTQUFTLEtBQUssS0FBSztBQUFFLGtCQUFJLEtBQUssUUFBTSxHQUFFLEtBQUssUUFBTSxTQUFRLEtBQUssR0FBRyxNQUFNLEtBQUssS0FBSztBQUFBLFVBQUc7QUFBQyxlQUFLLFVB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UUFBVSxhQUNWLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLE9BQVM7QUFDaEQsaUJBQU87QUFBQSxRQUNUO0FBQ0EsWUFBSyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxRQUFVO0FBQ2xELGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUssTUFBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxPQUFTO0FBQ2hELGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUssT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsU0FBVSxhQUNWLFNBQVUsYUFDVixT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QUFXO0FBQUE7QUFBQSxFQUUxQztBQUNBLE1BQUk7QUFDRixVQUFNLFdBQVcsTUFBTSxtQkFBbUIsV0FBVztBQUVyRCxVQUFNLGFBQWEsa0JBQWtCLFFBQVE7QUFDN0MsUUFBSSxDQUFDLFlBQVk7QUFDZixZQUFNO0FBQUEsSUFDUjtBQUVBLFVBQU0sUUFBUSxvQkFBb0IsVUFBVTtBQUM1QyxRQUFJLENBQUMsT0FBTztBQUNWLFlBQU07QUFBQSxJQUNSO0FBQUEsRUFDRixRQUFRO0FBQ04sVUFBTTtBQUFBLEVBQ1I7QUFDRjsiLAogICJuYW1lcyI6IFsiZGVmYXVsdHMiLCAia2V5IiwgInAiLCAiYyIsICJsIiwgImtleSIsICJ0ZXh0IiwgInMiLCAidHR5IiwgImlzQ29sb3JTdXBwb3J0ZWQiLCAicmVwbGFjZUNsb3NlIiwgImNyZWF0ZUNvbG9ycyIsICJjIiwgImVudiIsICJhbnNpUmVnZXgiLCAic3RyaXBBbnNpIiwgIl8iLCAibSIsICJnZXRDb2xvciIsICJjcmVhdGVDb25zb2xhIiwgImlzQ0kiLCAidW5pY29kZSIsICJzIiwgInRleHQiLCAiYyIsICJsIiwgImMiLCAicCIsICJrZXkiLCAiaiIsICJkZWZhdWx0cyIsICJrZXkiLCAicmVnZXgiLCAidXJsIiwgImYiLCAiaiIsICJIIiwgIksiLCAiVyIsICJNIiwgIkgyIiwgImIiLCAiYyIsICJnIiwgImgiLCAib3duZXIiLCAicmVwbyIsICJwIiwgInN0ZG91dCIsICJ1cmwiXQp9Cg==
|
|
3249
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4yLjMvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9jb3JlLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLjA2YWQ4YTY0Lm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3V0aWxzLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L2NodW5rcy9wcm9tcHQubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3Qvc2hhcmVkL2NvbnNvbGEuMzZjMDAzNGYubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3QvaW5kZXgubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jaXR0eUAwLjEuNi9ub2RlX21vZHVsZXMvY2l0dHkvZGlzdC9pbmRleC5tanMiLCAiLi4vaW5kZXgudHMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL29oYXNoQDEuMS4zL25vZGVfbW9kdWxlcy9vaGFzaC9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi91dGlscy9pbmRleC50cyIsICIuLi9wYWNrYWdlLmpzb24iXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IExvZ0xldmVscyA9IHtcbiAgc2lsZW50OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgbG9nOiAyLFxuICBpbmZvOiAzLFxuICBzdWNjZXNzOiAzLFxuICBmYWlsOiAzLFxuICByZWFkeTogMyxcbiAgc3RhcnQ6IDMsXG4gIGJveDogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxuICB2ZXJib3NlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbn07XG5jb25zdCBMb2dUeXBlcyA9IHtcbiAgLy8gU2lsZW50XG4gIHNpbGVudDoge1xuICAgIGxldmVsOiAtMVxuICB9LFxuICAvLyBMZXZlbCAwXG4gIGZhdGFsOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5mYXRhbFxuICB9LFxuICBlcnJvcjoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZXJyb3JcbiAgfSxcbiAgLy8gTGV2ZWwgMVxuICB3YXJuOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy53YXJuXG4gIH0sXG4gIC8vIExldmVsIDJcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5sb2dcbiAgfSxcbiAgLy8gTGV2ZWwgM1xuICBpbmZvOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5pbmZvXG4gIH0sXG4gIHN1Y2Nlc3M6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLnN1Y2Nlc3NcbiAgfSxcbiAgZmFpbDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZmFpbFxuICB9LFxuICByZWFkeToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBzdGFydDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBib3g6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLmluZm9cbiAgfSxcbiAgLy8gTGV2ZWwgNFxuICBkZWJ1Zzoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZGVidWdcbiAgfSxcbiAgLy8gTGV2ZWwgNVxuICB0cmFjZToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMudHJhY2VcbiAgfSxcbiAgLy8gVmVyYm9zZVxuICB2ZXJib3NlOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy52ZXJib3NlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBfZGVmdShiYXNlT2JqZWN0LCBkZWZhdWx0cywgbmFtZXNwYWNlID0gXCIuXCIsIG1lcmdlcikge1xuICBpZiAoIWlzT2JqZWN0KGRlZmF1bHRzKSkge1xuICAgIHJldHVybiBfZGVmdShiYXNlT2JqZWN0LCB7fSwgbmFtZXNwYWNlLCBtZXJnZXIpO1xuICB9XG4gIGNvbnN0IG9iamVjdCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKTtcbiAgZm9yIChjb25zdCBrZXkgaW4gYmFzZU9iamVjdCkge1xuICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIgfHwga2V5ID09PSBcImNvbnN0cnVjdG9yXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGJhc2VPYmplY3Rba2V5XTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChtZXJnZXIgJiYgbWVyZ2VyKG9iamVjdCwga2V5LCB2YWx1ZSwgbmFtZXNwYWNlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KG9iamVjdFtrZXldKSkge1xuICAgICAgb2JqZWN0W2tleV0gPSBbLi4udmFsdWUsIC4uLm9iamVjdFtrZXldXTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSAmJiBpc09iamVjdChvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gX2RlZnUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvYmplY3Rba2V5XSxcbiAgICAgICAgKG5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX0uYCA6IFwiXCIpICsga2V5LnRvU3RyaW5nKCksXG4gICAgICAgIG1lcmdlclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZnUobWVyZ2VyKSB7XG4gIHJldHVybiAoLi4uYXJndW1lbnRzXykgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LXJlZHVjZVxuICAgIGFyZ3VtZW50c18ucmVkdWNlKChwLCBjKSA9PiBfZGVmdShwLCBjLCBcIlwiLCBtZXJnZXIpLCB7fSlcbiAgKTtcbn1cbmNvbnN0IGRlZnUgPSBjcmVhdGVEZWZ1KCk7XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbn1cbmZ1bmN0aW9uIGlzTG9nT2JqKGFyZykge1xuICBpZiAoIWlzUGxhaW5PYmplY3QoYXJnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWFyZy5tZXNzYWdlICYmICFhcmcuYXJncykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYXJnLnN0YWNrKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5sZXQgcGF1c2VkID0gZmFsc2U7XG5jb25zdCBxdWV1ZSA9IFtdO1xuY2xhc3MgQ29uc29sYSB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHR5cGVzID0gb3B0aW9ucy50eXBlcyB8fCBMb2dUeXBlcztcbiAgICB0aGlzLm9wdGlvbnMgPSBkZWZ1KFxuICAgICAge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBkZWZhdWx0czogeyAuLi5vcHRpb25zLmRlZmF1bHRzIH0sXG4gICAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwob3B0aW9ucy5sZXZlbCwgdHlwZXMpLFxuICAgICAgICByZXBvcnRlcnM6IFsuLi5vcHRpb25zLnJlcG9ydGVycyB8fCBbXV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGVzOiBMb2dUeXBlcyxcbiAgICAgICAgdGhyb3R0bGU6IDFlMyxcbiAgICAgICAgdGhyb3R0bGVNaW46IDUsXG4gICAgICAgIGZvcm1hdE9wdGlvbnM6IHtcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGNvbG9yczogZmFsc2UsXG4gICAgICAgICAgY29tcGFjdDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdHlwZXMpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgICB0eXBlLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVmYXVsdHMsXG4gICAgICAgIC4uLnR5cGVzW3R5cGVdXG4gICAgICB9O1xuICAgICAgdGhpc1t0eXBlXSA9IHRoaXMuX3dyYXBMb2dGbihkZWZhdWx0cyk7XG4gICAgICB0aGlzW3R5cGVdLnJhdyA9IHRoaXMuX3dyYXBMb2dGbihcbiAgICAgICAgZGVmYXVsdHMsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMubW9ja0ZuKSB7XG4gICAgICB0aGlzLm1vY2tUeXBlcygpO1xuICAgIH1cbiAgICB0aGlzLl9sYXN0TG9nID0ge307XG4gIH1cbiAgZ2V0IGxldmVsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGV2ZWw7XG4gIH1cbiAgc2V0IGxldmVsKGxldmVsKSB7XG4gICAgdGhpcy5vcHRpb25zLmxldmVsID0gX25vcm1hbGl6ZUxvZ0xldmVsKFxuICAgICAgbGV2ZWwsXG4gICAgICB0aGlzLm9wdGlvbnMudHlwZXMsXG4gICAgICB0aGlzLm9wdGlvbnMubGV2ZWxcbiAgICApO1xuICB9XG4gIHByb21wdChtZXNzYWdlLCBvcHRzKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucHJvbXB0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcm9tcHQgaXMgbm90IHN1cHBvcnRlZCFcIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJvbXB0KG1lc3NhZ2UsIG9wdHMpO1xuICB9XG4gIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ29uc29sYSh7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuX21vY2tGbikge1xuICAgICAgaW5zdGFuY2UubW9ja1R5cGVzKHRoaXMuX21vY2tGbik7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuICB3aXRoRGVmYXVsdHMoZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi5kZWZhdWx0c1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHdpdGhUYWcodGFnKSB7XG4gICAgcmV0dXJuIHRoaXMud2l0aERlZmF1bHRzKHtcbiAgICAgIHRhZzogdGhpcy5vcHRpb25zLmRlZmF1bHRzLnRhZyA/IHRoaXMub3B0aW9ucy5kZWZhdWx0cy50YWcgKyBcIjpcIiArIHRhZyA6IHRhZ1xuICAgIH0pO1xuICB9XG4gIGFkZFJlcG9ydGVyKHJlcG9ydGVyKSB7XG4gICAgdGhpcy5vcHRpb25zLnJlcG9ydGVycy5wdXNoKHJlcG9ydGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICByZW1vdmVSZXBvcnRlcihyZXBvcnRlcikge1xuICAgIGlmIChyZXBvcnRlcikge1xuICAgICAgY29uc3QgaSA9IHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuaW5kZXhPZihyZXBvcnRlcik7XG4gICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zLnJlcG9ydGVycy5zcGxpY2UoMCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHNldFJlcG9ydGVycyhyZXBvcnRlcnMpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzID0gQXJyYXkuaXNBcnJheShyZXBvcnRlcnMpID8gcmVwb3J0ZXJzIDogW3JlcG9ydGVyc107XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgd3JhcEFsbCgpIHtcbiAgICB0aGlzLndyYXBDb25zb2xlKCk7XG4gICAgdGhpcy53cmFwU3RkKCk7XG4gIH1cbiAgcmVzdG9yZUFsbCgpIHtcbiAgICB0aGlzLnJlc3RvcmVDb25zb2xlKCk7XG4gICAgdGhpcy5yZXN0b3JlU3RkKCk7XG4gIH1cbiAgd3JhcENvbnNvbGUoKSB7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHRoaXMub3B0aW9ucy50eXBlcykge1xuICAgICAgaWYgKCFjb25zb2xlW1wiX19cIiArIHR5cGVdKSB7XG4gICAgICAgIGNvbnNvbGVbXCJfX1wiICsgdHlwZV0gPSBjb25zb2xlW3R5cGVdO1xuICAgICAgfVxuICAgICAgY29uc29sZVt0eXBlXSA9IHRoaXNbdHlwZV0ucmF3O1xuICAgIH1cbiAgfVxuICByZXN0b3JlQ29uc29sZSgpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdGhpcy5vcHRpb25zLnR5cGVzKSB7XG4gICAgICBpZiAoY29uc29sZVtcIl9fXCIgKyB0eXBlXSkge1xuICAgICAgICBjb25zb2xlW3R5cGVdID0gY29uc29sZVtcIl9fXCIgKyB0eXBlXTtcbiAgICAgICAgZGVsZXRlIGNvbnNvbGVbXCJfX1wiICsgdHlwZV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHdyYXBTdGQoKSB7XG4gICAgdGhpcy5fd3JhcFN0cmVhbSh0aGlzLm9wdGlvbnMuc3Rkb3V0LCBcImxvZ1wiKTtcbiAgICB0aGlzLl93cmFwU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRlcnIsIFwibG9nXCIpO1xuICB9XG4gIF93cmFwU3RyZWFtKHN0cmVhbSwgdHlwZSkge1xuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghc3RyZWFtLl9fd3JpdGUpIHtcbiAgICAgIHN0cmVhbS5fX3dyaXRlID0gc3RyZWFtLndyaXRlO1xuICAgIH1cbiAgICBzdHJlYW0ud3JpdGUgPSAoZGF0YSkgPT4ge1xuICAgICAgdGhpc1t0eXBlXS5yYXcoU3RyaW5nKGRhdGEpLnRyaW0oKSk7XG4gICAgfTtcbiAgfVxuICByZXN0b3JlU3RkKCkge1xuICAgIHRoaXMuX3Jlc3RvcmVTdHJlYW0odGhpcy5vcHRpb25zLnN0ZG91dCk7XG4gICAgdGhpcy5fcmVzdG9yZVN0cmVhbSh0aGlzLm9wdGlvbnMuc3RkZXJyKTtcbiAgfVxuICBfcmVzdG9yZVN0cmVhbShzdHJlYW0pIHtcbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RyZWFtLl9fd3JpdGUpIHtcbiAgICAgIHN0cmVhbS53cml0ZSA9IHN0cmVhbS5fX3dyaXRlO1xuICAgICAgZGVsZXRlIHN0cmVhbS5fX3dyaXRlO1xuICAgIH1cbiAgfVxuICBwYXVzZUxvZ3MoKSB7XG4gICAgcGF1c2VkID0gdHJ1ZTtcbiAgfVxuICByZXN1bWVMb2dzKCkge1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGNvbnN0IF9xdWV1ZSA9IHF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgX3F1ZXVlKSB7XG4gICAgICBpdGVtWzBdLl9sb2dGbihpdGVtWzFdLCBpdGVtWzJdKTtcbiAgICB9XG4gIH1cbiAgbW9ja1R5cGVzKG1vY2tGbikge1xuICAgIGNvbnN0IF9tb2NrRm4gPSBtb2NrRm4gfHwgdGhpcy5vcHRpb25zLm1vY2tGbjtcbiAgICB0aGlzLl9tb2NrRm4gPSBfbW9ja0ZuO1xuICAgIGlmICh0eXBlb2YgX21vY2tGbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIHRoaXNbdHlwZV0gPSBfbW9ja0ZuKHR5cGUsIHRoaXMub3B0aW9ucy50eXBlc1t0eXBlXSkgfHwgdGhpc1t0eXBlXTtcbiAgICAgIHRoaXNbdHlwZV0ucmF3ID0gdGhpc1t0eXBlXTtcbiAgICB9XG4gIH1cbiAgX3dyYXBMb2dGbihkZWZhdWx0cywgaXNSYXcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGlmIChwYXVzZWQpIHtcbiAgICAgICAgcXVldWUucHVzaChbdGhpcywgZGVmYXVsdHMsIGFyZ3MsIGlzUmF3XSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9sb2dGbihkZWZhdWx0cywgYXJncywgaXNSYXcpO1xuICAgIH07XG4gIH1cbiAgX2xvZ0ZuKGRlZmF1bHRzLCBhcmdzLCBpc1Jhdykge1xuICAgIGlmICgoZGVmYXVsdHMubGV2ZWwgfHwgMCkgPiB0aGlzLmxldmVsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxvZ09iaiA9IHtcbiAgICAgIGRhdGU6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpLFxuICAgICAgYXJnczogW10sXG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwoZGVmYXVsdHMubGV2ZWwsIHRoaXMub3B0aW9ucy50eXBlcylcbiAgICB9O1xuICAgIGlmICghaXNSYXcgJiYgYXJncy5sZW5ndGggPT09IDEgJiYgaXNMb2dPYmooYXJnc1swXSkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24obG9nT2JqLCBhcmdzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nT2JqLmFyZ3MgPSBbLi4uYXJnc107XG4gICAgfVxuICAgIGlmIChsb2dPYmoubWVzc2FnZSkge1xuICAgICAgbG9nT2JqLmFyZ3MudW5zaGlmdChsb2dPYmoubWVzc2FnZSk7XG4gICAgICBkZWxldGUgbG9nT2JqLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmIChsb2dPYmouYWRkaXRpb25hbCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxvZ09iai5hZGRpdGlvbmFsKSkge1xuICAgICAgICBsb2dPYmouYWRkaXRpb25hbCA9IGxvZ09iai5hZGRpdGlvbmFsLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgfVxuICAgICAgbG9nT2JqLmFyZ3MucHVzaChcIlxcblwiICsgbG9nT2JqLmFkZGl0aW9uYWwuam9pbihcIlxcblwiKSk7XG4gICAgICBkZWxldGUgbG9nT2JqLmFkZGl0aW9uYWw7XG4gICAgfVxuICAgIGxvZ09iai50eXBlID0gdHlwZW9mIGxvZ09iai50eXBlID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnR5cGUudG9Mb3dlckNhc2UoKSA6IFwibG9nXCI7XG4gICAgbG9nT2JqLnRhZyA9IHR5cGVvZiBsb2dPYmoudGFnID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnRhZyA6IFwiXCI7XG4gICAgY29uc3QgcmVzb2x2ZUxvZyA9IChuZXdMb2cgPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgcmVwZWF0ZWQgPSAodGhpcy5fbGFzdExvZy5jb3VudCB8fCAwKSAtIHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbjtcbiAgICAgIGlmICh0aGlzLl9sYXN0TG9nLm9iamVjdCAmJiByZXBlYXRlZCA+IDApIHtcbiAgICAgICAgY29uc3QgYXJnczIgPSBbLi4udGhpcy5fbGFzdExvZy5vYmplY3QuYXJnc107XG4gICAgICAgIGlmIChyZXBlYXRlZCA+IDEpIHtcbiAgICAgICAgICBhcmdzMi5wdXNoKGAocmVwZWF0ZWQgJHtyZXBlYXRlZH0gdGltZXMpYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbG9nKHsgLi4udGhpcy5fbGFzdExvZy5vYmplY3QsIGFyZ3M6IGFyZ3MyIH0pO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLmNvdW50ID0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXdMb2cpIHtcbiAgICAgICAgdGhpcy5fbGFzdExvZy5vYmplY3QgPSBsb2dPYmo7XG4gICAgICAgIHRoaXMuX2xvZyhsb2dPYmopO1xuICAgICAgfVxuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xhc3RMb2cudGltZW91dCk7XG4gICAgY29uc3QgZGlmZlRpbWUgPSB0aGlzLl9sYXN0TG9nLnRpbWUgJiYgbG9nT2JqLmRhdGUgPyBsb2dPYmouZGF0ZS5nZXRUaW1lKCkgLSB0aGlzLl9sYXN0TG9nLnRpbWUuZ2V0VGltZSgpIDogMDtcbiAgICB0aGlzLl9sYXN0TG9nLnRpbWUgPSBsb2dPYmouZGF0ZTtcbiAgICBpZiAoZGlmZlRpbWUgPCB0aGlzLm9wdGlvbnMudGhyb3R0bGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRMb2cgPSBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgbG9nT2JqLnR5cGUsXG4gICAgICAgICAgbG9nT2JqLnRhZyxcbiAgICAgICAgICBsb2dPYmouYXJnc1xuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgaXNTYW1lTG9nID0gdGhpcy5fbGFzdExvZy5zZXJpYWxpemVkID09PSBzZXJpYWxpemVkTG9nO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLnNlcmlhbGl6ZWQgPSBzZXJpYWxpemVkTG9nO1xuICAgICAgICBpZiAoaXNTYW1lTG9nKSB7XG4gICAgICAgICAgdGhpcy5fbGFzdExvZy5jb3VudCA9ICh0aGlzLl9sYXN0TG9nLmNvdW50IHx8IDApICsgMTtcbiAgICAgICAgICBpZiAodGhpcy5fbGFzdExvZy5jb3VudCA+IHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbikge1xuICAgICAgICAgICAgdGhpcy5fbGFzdExvZy50aW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICAgcmVzb2x2ZUxvZyxcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRocm90dGxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc29sdmVMb2codHJ1ZSk7XG4gIH1cbiAgX2xvZyhsb2dPYmopIHtcbiAgICBmb3IgKGNvbnN0IHJlcG9ydGVyIG9mIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMpIHtcbiAgICAgIHJlcG9ydGVyLmxvZyhsb2dPYmosIHtcbiAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVMb2dMZXZlbChpbnB1dCwgdHlwZXMgPSB7fSwgZGVmYXVsdExldmVsID0gMykge1xuICBpZiAoaW5wdXQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0TGV2ZWw7XG4gIH1cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICBpZiAodHlwZXNbaW5wdXRdICYmIHR5cGVzW2lucHV0XS5sZXZlbCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHR5cGVzW2lucHV0XS5sZXZlbDtcbiAgfVxuICByZXR1cm4gZGVmYXVsdExldmVsO1xufVxuQ29uc29sYS5wcm90b3R5cGUuYWRkID0gQ29uc29sYS5wcm90b3R5cGUuYWRkUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS5yZW1vdmUgPSBDb25zb2xhLnByb3RvdHlwZS5yZW1vdmVSZXBvcnRlcjtcbkNvbnNvbGEucHJvdG90eXBlLmNsZWFyID0gQ29uc29sYS5wcm90b3R5cGUucmVtb3ZlUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS53aXRoU2NvcGUgPSBDb25zb2xhLnByb3RvdHlwZS53aXRoVGFnO1xuQ29uc29sYS5wcm90b3R5cGUubW9jayA9IENvbnNvbGEucHJvdG90eXBlLm1vY2tUeXBlcztcbkNvbnNvbGEucHJvdG90eXBlLnBhdXNlID0gQ29uc29sYS5wcm90b3R5cGUucGF1c2VMb2dzO1xuQ29uc29sYS5wcm90b3R5cGUucmVzdW1lID0gQ29uc29sYS5wcm90b3R5cGUucmVzdW1lTG9ncztcbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBuZXcgQ29uc29sYShvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgQ29uc29sYSwgTG9nTGV2ZWxzLCBMb2dUeXBlcywgY3JlYXRlQ29uc29sYSB9O1xuIiwgImltcG9ydCB7IGZvcm1hdFdpdGhPcHRpb25zIH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHNlcCB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmZ1bmN0aW9uIHBhcnNlU3RhY2soc3RhY2spIHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKSArIHNlcDtcbiAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdChcIlxcblwiKS5zcGxpY2UoMSkubWFwKChsKSA9PiBsLnRyaW0oKS5yZXBsYWNlKFwiZmlsZTovL1wiLCBcIlwiKS5yZXBsYWNlKGN3ZCwgXCJcIikpO1xuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3RyZWFtKGRhdGEsIHN0cmVhbSkge1xuICBjb25zdCB3cml0ZSA9IHN0cmVhbS5fX3dyaXRlIHx8IHN0cmVhbS53cml0ZTtcbiAgcmV0dXJuIHdyaXRlLmNhbGwoc3RyZWFtLCBkYXRhKTtcbn1cblxuY29uc3QgYnJhY2tldCA9ICh4KSA9PiB4ID8gYFske3h9XWAgOiBcIlwiO1xuY2xhc3MgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgcmV0dXJuIFwiICBcIiArIHBhcnNlU3RhY2soc3RhY2spLmpvaW4oXCJcXG4gIFwiKTtcbiAgfVxuICBmb3JtYXRBcmdzKGFyZ3MsIG9wdHMpIHtcbiAgICBjb25zdCBfYXJncyA9IGFyZ3MubWFwKChhcmcpID0+IHtcbiAgICAgIGlmIChhcmcgJiYgdHlwZW9mIGFyZy5zdGFjayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gYXJnLm1lc3NhZ2UgKyBcIlxcblwiICsgdGhpcy5mb3JtYXRTdGFjayhhcmcuc3RhY2ssIG9wdHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFyZztcbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybWF0V2l0aE9wdGlvbnMob3B0cywgLi4uX2FyZ3MpO1xuICB9XG4gIGZvcm1hdERhdGUoZGF0ZSwgb3B0cykge1xuICAgIHJldHVybiBvcHRzLmRhdGUgPyBkYXRlLnRvTG9jYWxlVGltZVN0cmluZygpIDogXCJcIjtcbiAgfVxuICBmaWx0ZXJBbmRKb2luKGFycikge1xuICAgIHJldHVybiBhcnIuZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICB9XG4gIGZvcm1hdExvZ09iaihsb2dPYmosIG9wdHMpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKTtcbiAgICBpZiAobG9nT2JqLnR5cGUgPT09IFwiYm94XCIpIHtcbiAgICAgIHJldHVybiBcIlxcblwiICsgW1xuICAgICAgICBicmFja2V0KGxvZ09iai50YWcpLFxuICAgICAgICBsb2dPYmoudGl0bGUgJiYgbG9nT2JqLnRpdGxlLFxuICAgICAgICAuLi5tZXNzYWdlLnNwbGl0KFwiXFxuXCIpXG4gICAgICBdLmZpbHRlcihCb29sZWFuKS5tYXAoKGwpID0+IFwiID4gXCIgKyBsKS5qb2luKFwiXFxuXCIpICsgXCJcXG5cIjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQW5kSm9pbihbXG4gICAgICBicmFja2V0KGxvZ09iai50eXBlKSxcbiAgICAgIGJyYWNrZXQobG9nT2JqLnRhZyksXG4gICAgICBtZXNzYWdlXG4gICAgXSk7XG4gIH1cbiAgbG9nKGxvZ09iaiwgY3R4KSB7XG4gICAgY29uc3QgbGluZSA9IHRoaXMuZm9ybWF0TG9nT2JqKGxvZ09iaiwge1xuICAgICAgY29sdW1uczogY3R4Lm9wdGlvbnMuc3Rkb3V0LmNvbHVtbnMgfHwgMCxcbiAgICAgIC4uLmN0eC5vcHRpb25zLmZvcm1hdE9wdGlvbnNcbiAgICB9KTtcbiAgICByZXR1cm4gd3JpdGVTdHJlYW0oXG4gICAgICBsaW5lICsgXCJcXG5cIixcbiAgICAgIGxvZ09iai5sZXZlbCA8IDIgPyBjdHgub3B0aW9ucy5zdGRlcnIgfHwgcHJvY2Vzcy5zdGRlcnIgOiBjdHgub3B0aW9ucy5zdGRvdXQgfHwgcHJvY2Vzcy5zdGRvdXRcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB7IEJhc2ljUmVwb3J0ZXIgYXMgQiwgcGFyc2VTdGFjayBhcyBwIH07XG4iLCAiaW1wb3J0ICogYXMgdHR5IGZyb20gJ25vZGU6dHR5JztcblxuY29uc3Qge1xuICBlbnYgPSB7fSxcbiAgYXJndiA9IFtdLFxuICBwbGF0Zm9ybSA9IFwiXCJcbn0gPSB0eXBlb2YgcHJvY2VzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IHt9IDogcHJvY2VzcztcbmNvbnN0IGlzRGlzYWJsZWQgPSBcIk5PX0NPTE9SXCIgaW4gZW52IHx8IGFyZ3YuaW5jbHVkZXMoXCItLW5vLWNvbG9yXCIpO1xuY29uc3QgaXNGb3JjZWQgPSBcIkZPUkNFX0NPTE9SXCIgaW4gZW52IHx8IGFyZ3YuaW5jbHVkZXMoXCItLWNvbG9yXCIpO1xuY29uc3QgaXNXaW5kb3dzID0gcGxhdGZvcm0gPT09IFwid2luMzJcIjtcbmNvbnN0IGlzRHVtYlRlcm1pbmFsID0gZW52LlRFUk0gPT09IFwiZHVtYlwiO1xuY29uc3QgaXNDb21wYXRpYmxlVGVybWluYWwgPSB0dHkgJiYgdHR5LmlzYXR0eSAmJiB0dHkuaXNhdHR5KDEpICYmIGVudi5URVJNICYmICFpc0R1bWJUZXJtaW5hbDtcbmNvbnN0IGlzQ0kgPSBcIkNJXCIgaW4gZW52ICYmIChcIkdJVEhVQl9BQ1RJT05TXCIgaW4gZW52IHx8IFwiR0lUTEFCX0NJXCIgaW4gZW52IHx8IFwiQ0lSQ0xFQ0lcIiBpbiBlbnYpO1xuY29uc3QgaXNDb2xvclN1cHBvcnRlZCA9ICFpc0Rpc2FibGVkICYmIChpc0ZvcmNlZCB8fCBpc1dpbmRvd3MgJiYgIWlzRHVtYlRlcm1pbmFsIHx8IGlzQ29tcGF0aWJsZVRlcm1pbmFsIHx8IGlzQ0kpO1xuZnVuY3Rpb24gcmVwbGFjZUNsb3NlKGluZGV4LCBzdHJpbmcsIGNsb3NlLCByZXBsYWNlLCBoZWFkID0gc3RyaW5nLnNsaWNlKDAsIE1hdGgubWF4KDAsIGluZGV4KSkgKyByZXBsYWNlLCB0YWlsID0gc3RyaW5nLnNsaWNlKE1hdGgubWF4KDAsIGluZGV4ICsgY2xvc2UubGVuZ3RoKSksIG5leHQgPSB0YWlsLmluZGV4T2YoY2xvc2UpKSB7XG4gIHJldHVybiBoZWFkICsgKG5leHQgPCAwID8gdGFpbCA6IHJlcGxhY2VDbG9zZShuZXh0LCB0YWlsLCBjbG9zZSwgcmVwbGFjZSkpO1xufVxuZnVuY3Rpb24gY2xlYXJCbGVlZChpbmRleCwgc3RyaW5nLCBvcGVuLCBjbG9zZSwgcmVwbGFjZSkge1xuICByZXR1cm4gaW5kZXggPCAwID8gb3BlbiArIHN0cmluZyArIGNsb3NlIDogb3BlbiArIHJlcGxhY2VDbG9zZShpbmRleCwgc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSkgKyBjbG9zZTtcbn1cbmZ1bmN0aW9uIGZpbHRlckVtcHR5KG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3BlbiwgYXQgPSBvcGVuLmxlbmd0aCArIDEpIHtcbiAgcmV0dXJuIChzdHJpbmcpID0+IHN0cmluZyB8fCAhKHN0cmluZyA9PT0gXCJcIiB8fCBzdHJpbmcgPT09IHZvaWQgMCkgPyBjbGVhckJsZWVkKFxuICAgIChcIlwiICsgc3RyaW5nKS5pbmRleE9mKGNsb3NlLCBhdCksXG4gICAgc3RyaW5nLFxuICAgIG9wZW4sXG4gICAgY2xvc2UsXG4gICAgcmVwbGFjZVxuICApIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGluaXQob3BlbiwgY2xvc2UsIHJlcGxhY2UpIHtcbiAgcmV0dXJuIGZpbHRlckVtcHR5KGBcXHgxQlske29wZW59bWAsIGBcXHgxQlske2Nsb3NlfW1gLCByZXBsYWNlKTtcbn1cbmNvbnN0IGNvbG9yRGVmcyA9IHtcbiAgcmVzZXQ6IGluaXQoMCwgMCksXG4gIGJvbGQ6IGluaXQoMSwgMjIsIFwiXFx4MUJbMjJtXFx4MUJbMW1cIiksXG4gIGRpbTogaW5pdCgyLCAyMiwgXCJcXHgxQlsyMm1cXHgxQlsybVwiKSxcbiAgaXRhbGljOiBpbml0KDMsIDIzKSxcbiAgdW5kZXJsaW5lOiBpbml0KDQsIDI0KSxcbiAgaW52ZXJzZTogaW5pdCg3LCAyNyksXG4gIGhpZGRlbjogaW5pdCg4LCAyOCksXG4gIHN0cmlrZXRocm91Z2g6IGluaXQoOSwgMjkpLFxuICBibGFjazogaW5pdCgzMCwgMzkpLFxuICByZWQ6IGluaXQoMzEsIDM5KSxcbiAgZ3JlZW46IGluaXQoMzIsIDM5KSxcbiAgeWVsbG93OiBpbml0KDMzLCAzOSksXG4gIGJsdWU6IGluaXQoMzQsIDM5KSxcbiAgbWFnZW50YTogaW5pdCgzNSwgMzkpLFxuICBjeWFuOiBpbml0KDM2LCAzOSksXG4gIHdoaXRlOiBpbml0KDM3LCAzOSksXG4gIGdyYXk6IGluaXQoOTAsIDM5KSxcbiAgYmdCbGFjazogaW5pdCg0MCwgNDkpLFxuICBiZ1JlZDogaW5pdCg0MSwgNDkpLFxuICBiZ0dyZWVuOiBpbml0KDQyLCA0OSksXG4gIGJnWWVsbG93OiBpbml0KDQzLCA0OSksXG4gIGJnQmx1ZTogaW5pdCg0NCwgNDkpLFxuICBiZ01hZ2VudGE6IGluaXQoNDUsIDQ5KSxcbiAgYmdDeWFuOiBpbml0KDQ2LCA0OSksXG4gIGJnV2hpdGU6IGluaXQoNDcsIDQ5KSxcbiAgYmxhY2tCcmlnaHQ6IGluaXQoOTAsIDM5KSxcbiAgcmVkQnJpZ2h0OiBpbml0KDkxLCAzOSksXG4gIGdyZWVuQnJpZ2h0OiBpbml0KDkyLCAzOSksXG4gIHllbGxvd0JyaWdodDogaW5pdCg5MywgMzkpLFxuICBibHVlQnJpZ2h0OiBpbml0KDk0LCAzOSksXG4gIG1hZ2VudGFCcmlnaHQ6IGluaXQoOTUsIDM5KSxcbiAgY3lhbkJyaWdodDogaW5pdCg5NiwgMzkpLFxuICB3aGl0ZUJyaWdodDogaW5pdCg5NywgMzkpLFxuICBiZ0JsYWNrQnJpZ2h0OiBpbml0KDEwMCwgNDkpLFxuICBiZ1JlZEJyaWdodDogaW5pdCgxMDEsIDQ5KSxcbiAgYmdHcmVlbkJyaWdodDogaW5pdCgxMDIsIDQ5KSxcbiAgYmdZZWxsb3dCcmlnaHQ6IGluaXQoMTAzLCA0OSksXG4gIGJnQmx1ZUJyaWdodDogaW5pdCgxMDQsIDQ5KSxcbiAgYmdNYWdlbnRhQnJpZ2h0OiBpbml0KDEwNSwgNDkpLFxuICBiZ0N5YW5CcmlnaHQ6IGluaXQoMTA2LCA0OSksXG4gIGJnV2hpdGVCcmlnaHQ6IGluaXQoMTA3LCA0OSlcbn07XG5mdW5jdGlvbiBjcmVhdGVDb2xvcnModXNlQ29sb3IgPSBpc0NvbG9yU3VwcG9ydGVkKSB7XG4gIHJldHVybiB1c2VDb2xvciA/IGNvbG9yRGVmcyA6IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3Qua2V5cyhjb2xvckRlZnMpLm1hcCgoa2V5KSA9PiBba2V5LCBTdHJpbmddKSk7XG59XG5jb25zdCBjb2xvcnMgPSBjcmVhdGVDb2xvcnMoKTtcbmZ1bmN0aW9uIGdldENvbG9yKGNvbG9yLCBmYWxsYmFjayA9IFwicmVzZXRcIikge1xuICByZXR1cm4gY29sb3JzW2NvbG9yXSB8fCBjb2xvcnNbZmFsbGJhY2tdO1xufVxuZnVuY3Rpb24gY29sb3JpemUoY29sb3IsIHRleHQpIHtcbiAgcmV0dXJuIGdldENvbG9yKGNvbG9yKSh0ZXh0KTtcbn1cblxuY29uc3QgYW5zaVJlZ2V4ID0gW1xuICBcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNylcIixcbiAgXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKVwiXG5dLmpvaW4oXCJ8XCIpO1xuZnVuY3Rpb24gc3RyaXBBbnNpKHRleHQpIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZShuZXcgUmVnRXhwKGFuc2lSZWdleCwgXCJnXCIpLCBcIlwiKTtcbn1cbmZ1bmN0aW9uIGNlbnRlckFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGNvbnN0IGZyZWUgPSBsZW4gLSBzdHIubGVuZ3RoO1xuICBpZiAoZnJlZSA8PSAwKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBjb25zdCBmcmVlTGVmdCA9IE1hdGguZmxvb3IoZnJlZSAvIDIpO1xuICBsZXQgX3N0ciA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBfc3RyICs9IGkgPCBmcmVlTGVmdCB8fCBpID49IGZyZWVMZWZ0ICsgc3RyLmxlbmd0aCA/IHNwYWNlIDogc3RyW2kgLSBmcmVlTGVmdF07XG4gIH1cbiAgcmV0dXJuIF9zdHI7XG59XG5mdW5jdGlvbiByaWdodEFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGNvbnN0IGZyZWUgPSBsZW4gLSBzdHIubGVuZ3RoO1xuICBpZiAoZnJlZSA8PSAwKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBsZXQgX3N0ciA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBfc3RyICs9IGkgPCBmcmVlID8gc3BhY2UgOiBzdHJbaSAtIGZyZWVdO1xuICB9XG4gIHJldHVybiBfc3RyO1xufVxuZnVuY3Rpb24gbGVmdEFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IHN0ci5sZW5ndGggPyBzdHJbaV0gOiBzcGFjZTtcbiAgfVxuICByZXR1cm4gX3N0cjtcbn1cbmZ1bmN0aW9uIGFsaWduKGFsaWdubWVudCwgc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICBjYXNlIFwibGVmdFwiOiB7XG4gICAgICByZXR1cm4gbGVmdEFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGNhc2UgXCJyaWdodFwiOiB7XG4gICAgICByZXR1cm4gcmlnaHRBbGlnbihzdHIsIGxlbiwgc3BhY2UpO1xuICAgIH1cbiAgICBjYXNlIFwiY2VudGVyXCI6IHtcbiAgICAgIHJldHVybiBjZW50ZXJBbGlnbihzdHIsIGxlbiwgc3BhY2UpO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBib3hTdHlsZVByZXNldHMgPSB7XG4gIHNvbGlkOiB7XG4gICAgdGw6IFwiXFx1MjUwQ1wiLFxuICAgIHRyOiBcIlxcdTI1MTBcIixcbiAgICBibDogXCJcXHUyNTE0XCIsXG4gICAgYnI6IFwiXFx1MjUxOFwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH0sXG4gIGRvdWJsZToge1xuICAgIHRsOiBcIlxcdTI1NTRcIixcbiAgICB0cjogXCJcXHUyNTU3XCIsXG4gICAgYmw6IFwiXFx1MjU1QVwiLFxuICAgIGJyOiBcIlxcdTI1NURcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBkb3VibGVTaW5nbGU6IHtcbiAgICB0bDogXCJcXHUyNTUzXCIsXG4gICAgdHI6IFwiXFx1MjU1NlwiLFxuICAgIGJsOiBcIlxcdTI1NTlcIixcbiAgICBicjogXCJcXHUyNTVDXCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTUxXCJcbiAgfSxcbiAgZG91YmxlU2luZ2xlUm91bmRlZDoge1xuICAgIHRsOiBcIlxcdTI1NkRcIixcbiAgICB0cjogXCJcXHUyNTZFXCIsXG4gICAgYmw6IFwiXFx1MjU3MFwiLFxuICAgIGJyOiBcIlxcdTI1NkZcIixcbiAgICBoOiBcIlxcdTI1MDBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBzaW5nbGVUaGljazoge1xuICAgIHRsOiBcIlxcdTI1MEZcIixcbiAgICB0cjogXCJcXHUyNTEzXCIsXG4gICAgYmw6IFwiXFx1MjUxN1wiLFxuICAgIGJyOiBcIlxcdTI1MUJcIixcbiAgICBoOiBcIlxcdTI1MDFcIixcbiAgICB2OiBcIlxcdTI1MDNcIlxuICB9LFxuICBzaW5nbGVEb3VibGU6IHtcbiAgICB0bDogXCJcXHUyNTUyXCIsXG4gICAgdHI6IFwiXFx1MjU1NVwiLFxuICAgIGJsOiBcIlxcdTI1NThcIixcbiAgICBicjogXCJcXHUyNTVCXCIsXG4gICAgaDogXCJcXHUyNTUwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfSxcbiAgc2luZ2xlRG91YmxlUm91bmRlZDoge1xuICAgIHRsOiBcIlxcdTI1NkRcIixcbiAgICB0cjogXCJcXHUyNTZFXCIsXG4gICAgYmw6IFwiXFx1MjU3MFwiLFxuICAgIGJyOiBcIlxcdTI1NkZcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1MDJcIlxuICB9LFxuICByb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH1cbn07XG5jb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gIGJvcmRlckNvbG9yOiBcIndoaXRlXCIsXG4gIGJvcmRlclN0eWxlOiBcInJvdW5kZWRcIixcbiAgdmFsaWduOiBcImNlbnRlclwiLFxuICBwYWRkaW5nOiAyLFxuICBtYXJnaW5MZWZ0OiAxLFxuICBtYXJnaW5Ub3A6IDEsXG4gIG1hcmdpbkJvdHRvbTogMVxufTtcbmZ1bmN0aW9uIGJveCh0ZXh0LCBfb3B0cyA9IHt9KSB7XG4gIGNvbnN0IG9wdHMgPSB7XG4gICAgLi4uX29wdHMsXG4gICAgc3R5bGU6IHtcbiAgICAgIC4uLmRlZmF1bHRTdHlsZSxcbiAgICAgIC4uLl9vcHRzLnN0eWxlXG4gICAgfVxuICB9O1xuICBjb25zdCB0ZXh0TGluZXMgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xuICBjb25zdCBib3hMaW5lcyA9IFtdO1xuICBjb25zdCBfY29sb3IgPSBnZXRDb2xvcihvcHRzLnN0eWxlLmJvcmRlckNvbG9yKTtcbiAgY29uc3QgYm9yZGVyU3R5bGUgPSB7XG4gICAgLi4udHlwZW9mIG9wdHMuc3R5bGUuYm9yZGVyU3R5bGUgPT09IFwic3RyaW5nXCIgPyBib3hTdHlsZVByZXNldHNbb3B0cy5zdHlsZS5ib3JkZXJTdHlsZV0gfHwgYm94U3R5bGVQcmVzZXRzLnNvbGlkIDogb3B0cy5zdHlsZS5ib3JkZXJTdHlsZVxuICB9O1xuICBpZiAoX2NvbG9yKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gYm9yZGVyU3R5bGUpIHtcbiAgICAgIGJvcmRlclN0eWxlW2tleV0gPSBfY29sb3IoXG4gICAgICAgIGJvcmRlclN0eWxlW2tleV1cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhZGRpbmdPZmZzZXQgPSBvcHRzLnN0eWxlLnBhZGRpbmcgJSAyID09PSAwID8gb3B0cy5zdHlsZS5wYWRkaW5nIDogb3B0cy5zdHlsZS5wYWRkaW5nICsgMTtcbiAgY29uc3QgaGVpZ2h0ID0gdGV4dExpbmVzLmxlbmd0aCArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IHdpZHRoID0gTWF0aC5tYXgoLi4udGV4dExpbmVzLm1hcCgobGluZSkgPT4gbGluZS5sZW5ndGgpKSArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IHdpZHRoT2Zmc2V0ID0gd2lkdGggKyBwYWRkaW5nT2Zmc2V0O1xuICBjb25zdCBsZWZ0U3BhY2UgPSBvcHRzLnN0eWxlLm1hcmdpbkxlZnQgPiAwID8gXCIgXCIucmVwZWF0KG9wdHMuc3R5bGUubWFyZ2luTGVmdCkgOiBcIlwiO1xuICBpZiAob3B0cy5zdHlsZS5tYXJnaW5Ub3AgPiAwKSB7XG4gICAgYm94TGluZXMucHVzaChcIlwiLnJlcGVhdChvcHRzLnN0eWxlLm1hcmdpblRvcCkpO1xuICB9XG4gIGlmIChvcHRzLnRpdGxlKSB7XG4gICAgY29uc3QgbGVmdCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgTWF0aC5mbG9vcigod2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoKSAvIDIpXG4gICAgKTtcbiAgICBjb25zdCByaWdodCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgd2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoIC0gc3RyaXBBbnNpKGxlZnQpLmxlbmd0aCArIHBhZGRpbmdPZmZzZXRcbiAgICApO1xuICAgIGJveExpbmVzLnB1c2goXG4gICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS50bH0ke2xlZnR9JHtvcHRzLnRpdGxlfSR7cmlnaHR9JHtib3JkZXJTdHlsZS50cn1gXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBib3hMaW5lcy5wdXNoKFxuICAgICAgYCR7bGVmdFNwYWNlfSR7Ym9yZGVyU3R5bGUudGx9JHtib3JkZXJTdHlsZS5oLnJlcGVhdCh3aWR0aE9mZnNldCl9JHtib3JkZXJTdHlsZS50cn1gXG4gICAgKTtcbiAgfVxuICBjb25zdCB2YWxpZ25PZmZzZXQgPSBvcHRzLnN0eWxlLnZhbGlnbiA9PT0gXCJjZW50ZXJcIiA/IE1hdGguZmxvb3IoKGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGgpIC8gMikgOiBvcHRzLnN0eWxlLnZhbGlnbiA9PT0gXCJ0b3BcIiA/IGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGggLSBwYWRkaW5nT2Zmc2V0IDogaGVpZ2h0IC0gdGV4dExpbmVzLmxlbmd0aDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykge1xuICAgIGlmIChpIDwgdmFsaWduT2Zmc2V0IHx8IGkgPj0gdmFsaWduT2Zmc2V0ICsgdGV4dExpbmVzLmxlbmd0aCkge1xuICAgICAgYm94TGluZXMucHVzaChcbiAgICAgICAgYCR7bGVmdFNwYWNlfSR7Ym9yZGVyU3R5bGUudn0ke1wiIFwiLnJlcGVhdCh3aWR0aE9mZnNldCl9JHtib3JkZXJTdHlsZS52fWBcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmUgPSB0ZXh0TGluZXNbaSAtIHZhbGlnbk9mZnNldF07XG4gICAgICBjb25zdCBsZWZ0ID0gXCIgXCIucmVwZWF0KHBhZGRpbmdPZmZzZXQpO1xuICAgICAgY29uc3QgcmlnaHQgPSBcIiBcIi5yZXBlYXQod2lkdGggLSBzdHJpcEFuc2kobGluZSkubGVuZ3RoKTtcbiAgICAgIGJveExpbmVzLnB1c2goXG4gICAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnZ9JHtsZWZ0fSR7bGluZX0ke3JpZ2h0fSR7Ym9yZGVyU3R5bGUudn1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBib3hMaW5lcy5wdXNoKFxuICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLmJsfSR7Ym9yZGVyU3R5bGUuaC5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUuYnJ9YFxuICApO1xuICBpZiAob3B0cy5zdHlsZS5tYXJnaW5Cb3R0b20gPiAwKSB7XG4gICAgYm94TGluZXMucHVzaChcIlwiLnJlcGVhdChvcHRzLnN0eWxlLm1hcmdpbkJvdHRvbSkpO1xuICB9XG4gIHJldHVybiBib3hMaW5lcy5qb2luKFwiXFxuXCIpO1xufVxuXG5leHBvcnQgeyBhbGlnbiwgYm94LCBjZW50ZXJBbGlnbiwgY29sb3JpemUsIGNvbG9ycywgZ2V0Q29sb3IsIGxlZnRBbGlnbiwgcmlnaHRBbGlnbiwgc3RyaXBBbnNpIH07XG4iLCAiaW1wb3J0IHsgc3RkaW4sIHN0ZG91dCB9IGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgZiBmcm9tICdub2RlOnJlYWRsaW5lJztcbmltcG9ydCB7IFdyaXRlU3RyZWFtIH0gZnJvbSAnbm9kZTp0dHknO1xuaW1wb3J0IHsgZyBhcyBnZXREZWZhdWx0RXhwb3J0RnJvbUNqcywgaSBhcyBpc1VuaWNvZGVTdXBwb3J0ZWQgfSBmcm9tICcuLi9zaGFyZWQvY29uc29sYS4zNmMwMDM0Zi5tanMnO1xuaW1wb3J0IHJlcXVpcmUkJDAgZnJvbSAndHR5JztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJy4uL3V0aWxzLm1qcyc7XG5pbXBvcnQgJy4uL2NvcmUubWpzJztcbmltcG9ydCAnLi4vc2hhcmVkL2NvbnNvbGEuMDZhZDhhNjQubWpzJztcbmltcG9ydCAnbm9kZTp1dGlsJztcbmltcG9ydCAnbm9kZTpwYXRoJztcblxuY29uc3QgRVNDID0gJ1xceDFCJztcbmNvbnN0IENTSSA9IGAke0VTQ31bYDtcbmNvbnN0IGJlZXAgPSAnXFx1MDAwNyc7XG5cbmNvbnN0IGN1cnNvciA9IHtcbiAgdG8oeCwgeSkge1xuICAgIGlmICgheSkgcmV0dXJuIGAke0NTSX0ke3ggKyAxfUdgO1xuICAgIHJldHVybiBgJHtDU0l9JHt5ICsgMX07JHt4ICsgMX1IYDtcbiAgfSxcbiAgbW92ZSh4LCB5KSB7XG4gICAgbGV0IHJldCA9ICcnO1xuXG4gICAgaWYgKHggPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXh9RGA7XG4gICAgZWxzZSBpZiAoeCA+IDApIHJldCArPSBgJHtDU0l9JHt4fUNgO1xuXG4gICAgaWYgKHkgPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG4gICAgZWxzZSBpZiAoeSA+IDApIHJldCArPSBgJHtDU0l9JHt5fUJgO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fUFgLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1CYCxcbiAgZm9yd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9Q2AsXG4gIGJhY2t3YXJkOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1EYCxcbiAgbmV4dExpbmU6IChjb3VudCA9IDEpID0+IGAke0NTSX1FYC5yZXBlYXQoY291bnQpLFxuICBwcmV2TGluZTogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUZgLnJlcGVhdChjb3VudCksXG4gIGxlZnQ6IGAke0NTSX1HYCxcbiAgaGlkZTogYCR7Q1NJfT8yNWxgLFxuICBzaG93OiBgJHtDU0l9PzI1aGAsXG4gIHNhdmU6IGAke0VTQ303YCxcbiAgcmVzdG9yZTogYCR7RVNDfThgXG59O1xuXG5jb25zdCBzY3JvbGwgPSB7XG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9U2AucmVwZWF0KGNvdW50KSxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVRgLnJlcGVhdChjb3VudClcbn07XG5cbmNvbnN0IGVyYXNlID0ge1xuICBzY3JlZW46IGAke0NTSX0ySmAsXG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9MUpgLnJlcGVhdChjb3VudCksXG4gIGRvd246IChjb3VudCA9IDEpID0+IGAke0NTSX1KYC5yZXBlYXQoY291bnQpLFxuICBsaW5lOiBgJHtDU0l9MktgLFxuICBsaW5lRW5kOiBgJHtDU0l9S2AsXG4gIGxpbmVTdGFydDogYCR7Q1NJfTFLYCxcbiAgbGluZXMoY291bnQpIHtcbiAgICBsZXQgY2xlYXIgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspXG4gICAgICBjbGVhciArPSB0aGlzLmxpbmUgKyAoaSA8IGNvdW50IC0gMSA/IGN1cnNvci51cCgpIDogJycpO1xuICAgIGlmIChjb3VudClcbiAgICAgIGNsZWFyICs9IGN1cnNvci5sZWZ0O1xuICAgIHJldHVybiBjbGVhcjtcbiAgfVxufTtcblxudmFyIHNyYyA9IHsgY3Vyc29yLCBzY3JvbGwsIGVyYXNlLCBiZWVwIH07XG5cbnZhciBwaWNvY29sb3JzID0ge2V4cG9ydHM6IHt9fTtcblxubGV0IHR0eSA9IHJlcXVpcmUkJDA7XG5cbmxldCBpc0NvbG9yU3VwcG9ydGVkID1cblx0IShcIk5PX0NPTE9SXCIgaW4gcHJvY2Vzcy5lbnYgfHwgcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiZcblx0KFwiRk9SQ0VfQ09MT1JcIiBpbiBwcm9jZXNzLmVudiB8fFxuXHRcdHByb2Nlc3MuYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHxcblx0XHRwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgfHxcblx0XHQodHR5LmlzYXR0eSgxKSAmJiBwcm9jZXNzLmVudi5URVJNICE9PSBcImR1bWJcIikgfHxcblx0XHRcIkNJXCIgaW4gcHJvY2Vzcy5lbnYpO1xuXG5sZXQgZm9ybWF0dGVyID1cblx0KG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3BlbikgPT5cblx0aW5wdXQgPT4ge1xuXHRcdGxldCBzdHJpbmcgPSBcIlwiICsgaW5wdXQ7XG5cdFx0bGV0IGluZGV4ID0gc3RyaW5nLmluZGV4T2YoY2xvc2UsIG9wZW4ubGVuZ3RoKTtcblx0XHRyZXR1cm4gfmluZGV4XG5cdFx0XHQ/IG9wZW4gKyByZXBsYWNlQ2xvc2Uoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpICsgY2xvc2Vcblx0XHRcdDogb3BlbiArIHN0cmluZyArIGNsb3NlXG5cdH07XG5cbmxldCByZXBsYWNlQ2xvc2UgPSAoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpID0+IHtcblx0bGV0IHN0YXJ0ID0gc3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlO1xuXHRsZXQgZW5kID0gc3RyaW5nLnN1YnN0cmluZyhpbmRleCArIGNsb3NlLmxlbmd0aCk7XG5cdGxldCBuZXh0SW5kZXggPSBlbmQuaW5kZXhPZihjbG9zZSk7XG5cdHJldHVybiB+bmV4dEluZGV4ID8gc3RhcnQgKyByZXBsYWNlQ2xvc2UoZW5kLCBjbG9zZSwgcmVwbGFjZSwgbmV4dEluZGV4KSA6IHN0YXJ0ICsgZW5kXG59O1xuXG5sZXQgY3JlYXRlQ29sb3JzID0gKGVuYWJsZWQgPSBpc0NvbG9yU3VwcG9ydGVkKSA9PiAoe1xuXHRpc0NvbG9yU3VwcG9ydGVkOiBlbmFibGVkLFxuXHRyZXNldDogZW5hYmxlZCA/IHMgPT4gYFxceDFiWzBtJHtzfVxceDFiWzBtYCA6IFN0cmluZyxcblx0Ym9sZDogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzFtXCIsIFwiXFx4MWJbMjJtXCIsIFwiXFx4MWJbMjJtXFx4MWJbMW1cIikgOiBTdHJpbmcsXG5cdGRpbTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzJtXCIsIFwiXFx4MWJbMjJtXCIsIFwiXFx4MWJbMjJtXFx4MWJbMm1cIikgOiBTdHJpbmcsXG5cdGl0YWxpYzogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzNtXCIsIFwiXFx4MWJbMjNtXCIpIDogU3RyaW5nLFxuXHR1bmRlcmxpbmU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0bVwiLCBcIlxceDFiWzI0bVwiKSA6IFN0cmluZyxcblx0aW52ZXJzZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzdtXCIsIFwiXFx4MWJbMjdtXCIpIDogU3RyaW5nLFxuXHRoaWRkZW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls4bVwiLCBcIlxceDFiWzI4bVwiKSA6IFN0cmluZyxcblx0c3RyaWtldGhyb3VnaDogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzltXCIsIFwiXFx4MWJbMjltXCIpIDogU3RyaW5nLFxuXHRibGFjazogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzMwbVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0cmVkOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzFtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRncmVlbjogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzMybVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0eWVsbG93OiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzNtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRibHVlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzRtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRtYWdlbnRhOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzVtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRjeWFuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzZtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHR3aGl0ZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzM3bVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0Z3JheTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzkwbVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0YmdCbGFjazogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQwbVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdSZWQ6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0MW1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnR3JlZW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0Mm1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnWWVsbG93OiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDNtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ0JsdWU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0NG1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnTWFnZW50YTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQ1bVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdDeWFuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDZtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ1doaXRlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDdtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxufSk7XG5cbnBpY29jb2xvcnMuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpO1xucGljb2NvbG9ycy5leHBvcnRzLmNyZWF0ZUNvbG9ycyA9IGNyZWF0ZUNvbG9ycztcblxudmFyIHBpY29jb2xvcnNFeHBvcnRzID0gcGljb2NvbG9ycy5leHBvcnRzO1xuY29uc3QgbCA9IC8qQF9fUFVSRV9fKi9nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhwaWNvY29sb3JzRXhwb3J0cyk7XG5cbmZ1bmN0aW9uIHooe29ubHlGaXJzdDp0PSExfT17fSl7Y29uc3QgdT1bXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpXCIsXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiXS5qb2luKFwifFwiKTtyZXR1cm4gbmV3IFJlZ0V4cCh1LHQ/dm9pZCAwOlwiZ1wiKX1mdW5jdGlvbiAkKHQpe2lmKHR5cGVvZiB0IT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIGEgXFxgc3RyaW5nXFxgLCBnb3QgXFxgJHt0eXBlb2YgdH1cXGBgKTtyZXR1cm4gdC5yZXBsYWNlKHooKSxcIlwiKX12YXIgbT17fSxHPXtnZXQgZXhwb3J0cygpe3JldHVybiBtfSxzZXQgZXhwb3J0cyh0KXttPXQ7fX07KGZ1bmN0aW9uKHQpe3ZhciB1PXt9O3QuZXhwb3J0cz11LHUuZWFzdEFzaWFuV2lkdGg9ZnVuY3Rpb24oZSl7dmFyIHM9ZS5jaGFyQ29kZUF0KDApLEM9ZS5sZW5ndGg9PTI/ZS5jaGFyQ29kZUF0KDEpOjAsRD1zO3JldHVybiA1NTI5Njw9cyYmczw9NTYzMTkmJjU2MzIwPD1DJiZDPD01NzM0MyYmKHMmPTEwMjMsQyY9MTAyMyxEPXM8PDEwfEMsRCs9NjU1MzYpLEQ9PTEyMjg4fHw2NTI4MTw9RCYmRDw9NjUzNzZ8fDY1NTA0PD1EJiZEPD02NTUxMD9cIkZcIjpEPT04MzYxfHw2NTM3Nzw9RCYmRDw9NjU0NzB8fDY1NDc0PD1EJiZEPD02NTQ3OXx8NjU0ODI8PUQmJkQ8PTY1NDg3fHw2NTQ5MDw9RCYmRDw9NjU0OTV8fDY1NDk4PD1EJiZEPD02NTUwMHx8NjU1MTI8PUQmJkQ8PTY1NTE4P1wiSFwiOjQzNTI8PUQmJkQ8PTQ0NDd8fDQ1MTU8PUQmJkQ8PTQ1MTl8fDQ2MDI8PUQmJkQ8PTQ2MDd8fDkwMDE8PUQmJkQ8PTkwMDJ8fDExOTA0PD1EJiZEPD0xMTkyOXx8MTE5MzE8PUQmJkQ8PTEyMDE5fHwxMjAzMjw9RCYmRDw9MTIyNDV8fDEyMjcyPD1EJiZEPD0xMjI4M3x8MTIyODk8PUQmJkQ8PTEyMzUwfHwxMjM1Mzw9RCYmRDw9MTI0Mzh8fDEyNDQxPD1EJiZEPD0xMjU0M3x8MTI1NDk8PUQmJkQ8PTEyNTg5fHwxMjU5Mzw9RCYmRDw9MTI2ODZ8fDEyNjg4PD1EJiZEPD0xMjczMHx8MTI3MzY8PUQmJkQ8PTEyNzcxfHwxMjc4NDw9RCYmRDw9MTI4MzB8fDEyODMyPD1EJiZEPD0xMjg3MXx8MTI4ODA8PUQmJkQ8PTEzMDU0fHwxMzA1Njw9RCYmRDw9MTk5MDN8fDE5OTY4PD1EJiZEPD00MjEyNHx8NDIxMjg8PUQmJkQ8PTQyMTgyfHw0MzM2MDw9RCYmRDw9NDMzODh8fDQ0MDMyPD1EJiZEPD01NTIwM3x8NTUyMTY8PUQmJkQ8PTU1MjM4fHw1NTI0Mzw9RCYmRDw9NTUyOTF8fDYzNzQ0PD1EJiZEPD02NDI1NXx8NjUwNDA8PUQmJkQ8PTY1MDQ5fHw2NTA3Mjw9RCYmRDw9NjUxMDZ8fDY1MTA4PD1EJiZEPD02NTEyNnx8NjUxMjg8PUQmJkQ8PTY1MTMxfHwxMTA1OTI8PUQmJkQ8PTExMDU5M3x8MTI3NDg4PD1EJiZEPD0xMjc0OTB8fDEyNzUwNDw9RCYmRDw9MTI3NTQ2fHwxMjc1NTI8PUQmJkQ8PTEyNzU2MHx8MTI3NTY4PD1EJiZEPD0xMjc1Njl8fDEzMTA3Mjw9RCYmRDw9MTk0MzY3fHwxNzc5ODQ8PUQmJkQ8PTE5NjYwNXx8MTk2NjA4PD1EJiZEPD0yNjIxNDE/XCJXXCI6MzI8PUQmJkQ8PTEyNnx8MTYyPD1EJiZEPD0xNjN8fDE2NTw9RCYmRDw9MTY2fHxEPT0xNzJ8fEQ9PTE3NXx8MTAyMTQ8PUQmJkQ8PTEwMjIxfHwxMDYyOTw9RCYmRDw9MTA2MzA/XCJOYVwiOkQ9PTE2MXx8RD09MTY0fHwxNjc8PUQmJkQ8PTE2OHx8RD09MTcwfHwxNzM8PUQmJkQ8PTE3NHx8MTc2PD1EJiZEPD0xODB8fDE4Mjw9RCYmRDw9MTg2fHwxODg8PUQmJkQ8PTE5MXx8RD09MTk4fHxEPT0yMDh8fDIxNTw9RCYmRDw9MjE2fHwyMjI8PUQmJkQ8PTIyNXx8RD09MjMwfHwyMzI8PUQmJkQ8PTIzNHx8MjM2PD1EJiZEPD0yMzd8fEQ9PTI0MHx8MjQyPD1EJiZEPD0yNDN8fDI0Nzw9RCYmRDw9MjUwfHxEPT0yNTJ8fEQ9PTI1NHx8RD09MjU3fHxEPT0yNzN8fEQ9PTI3NXx8RD09MjgzfHwyOTQ8PUQmJkQ8PTI5NXx8RD09Mjk5fHwzMDU8PUQmJkQ8PTMwN3x8RD09MzEyfHwzMTk8PUQmJkQ8PTMyMnx8RD09MzI0fHwzMjg8PUQmJkQ8PTMzMXx8RD09MzMzfHwzMzg8PUQmJkQ8PTMzOXx8MzU4PD1EJiZEPD0zNTl8fEQ9PTM2M3x8RD09NDYyfHxEPT00NjR8fEQ9PTQ2Nnx8RD09NDY4fHxEPT00NzB8fEQ9PTQ3Mnx8RD09NDc0fHxEPT00NzZ8fEQ9PTU5M3x8RD09NjA5fHxEPT03MDh8fEQ9PTcxMXx8NzEzPD1EJiZEPD03MTV8fEQ9PTcxN3x8RD09NzIwfHw3Mjg8PUQmJkQ8PTczMXx8RD09NzMzfHxEPT03MzV8fDc2ODw9RCYmRDw9ODc5fHw5MTM8PUQmJkQ8PTkyOXx8OTMxPD1EJiZEPD05Mzd8fDk0NTw9RCYmRDw9OTYxfHw5NjM8PUQmJkQ8PTk2OXx8RD09MTAyNXx8MTA0MDw9RCYmRDw9MTEwM3x8RD09MTEwNXx8RD09ODIwOHx8ODIxMTw9RCYmRDw9ODIxNHx8ODIxNjw9RCYmRDw9ODIxN3x8ODIyMDw9RCYmRDw9ODIyMXx8ODIyNDw9RCYmRDw9ODIyNnx8ODIyODw9RCYmRDw9ODIzMXx8RD09ODI0MHx8ODI0Mjw9RCYmRDw9ODI0M3x8RD09ODI0NXx8RD09ODI1MXx8RD09ODI1NHx8RD09ODMwOHx8RD09ODMxOXx8ODMyMTw9RCYmRDw9ODMyNHx8RD09ODM2NHx8RD09ODQ1MXx8RD09ODQ1M3x8RD09ODQ1N3x8RD09ODQ2N3x8RD09ODQ3MHx8ODQ4MTw9RCYmRDw9ODQ4Mnx8RD09ODQ4Nnx8RD09ODQ5MXx8ODUzMTw9RCYmRDw9ODUzMnx8ODUzOTw9RCYmRDw9ODU0Mnx8ODU0NDw9RCYmRDw9ODU1NXx8ODU2MDw9RCYmRDw9ODU2OXx8RD09ODU4NXx8ODU5Mjw9RCYmRDw9ODYwMXx8ODYzMjw9RCYmRDw9ODYzM3x8RD09ODY1OHx8RD09ODY2MHx8RD09ODY3OXx8RD09ODcwNHx8ODcwNjw9RCYmRDw9ODcwN3x8ODcxMTw9RCYmRDw9ODcxMnx8RD09ODcxNXx8RD09ODcxOXx8RD09ODcyMXx8RD09ODcyNXx8RD09ODczMHx8ODczMzw9RCYmRDw9ODczNnx8RD09ODczOXx8RD09ODc0MXx8ODc0Mzw9RCYmRDw9ODc0OHx8RD09ODc1MHx8ODc1Njw9RCYmRDw9ODc1OXx8ODc2NDw9RCYmRDw9ODc2NXx8RD09ODc3Nnx8RD09ODc4MHx8RD09ODc4Nnx8ODgwMDw9RCYmRDw9ODgwMXx8ODgwNDw9RCYmRDw9ODgwN3x8ODgxMDw9RCYmRDw9ODgxMXx8ODgxNDw9RCYmRDw9ODgxNXx8ODgzNDw9RCYmRDw9ODgzNXx8ODgzODw9RCYmRDw9ODgzOXx8RD09ODg1M3x8RD09ODg1N3x8RD09ODg2OXx8RD09ODg5NXx8RD09ODk3OHx8OTMxMjw9RCYmRDw9OTQ0OXx8OTQ1MTw9RCYmRDw9OTU0N3x8OTU1Mjw9RCYmRDw9OTU4N3x8OTYwMDw9RCYmRDw9OTYxNXx8OTYxODw9RCYmRDw9OTYyMXx8OTYzMjw9RCYmRDw9OTYzM3x8OTYzNTw9RCYmRDw9OTY0MXx8OTY1MDw9RCYmRDw9OTY1MXx8OTY1NDw9RCYmRDw9OTY1NXx8OTY2MDw9RCYmRDw9OTY2MXx8OTY2NDw9RCYmRDw9OTY2NXx8OTY3MDw9RCYmRDw9OTY3Mnx8RD09OTY3NXx8OTY3ODw9RCYmRDw9OTY4MXx8OTY5ODw9RCYmRDw9OTcwMXx8RD09OTcxMXx8OTczMzw9RCYmRDw9OTczNHx8RD09OTczN3x8OTc0Mjw9RCYmRDw9OTc0M3x8OTc0ODw9RCYmRDw9OTc0OXx8RD09OTc1Nnx8RD09OTc1OHx8RD09OTc5Mnx8RD09OTc5NHx8OTgyNDw9RCYmRDw9OTgyNXx8OTgyNzw9RCYmRDw9OTgyOXx8OTgzMTw9RCYmRDw9OTgzNHx8OTgzNjw9RCYmRDw9OTgzN3x8RD09OTgzOXx8OTg4Njw9RCYmRDw9OTg4N3x8OTkxODw9RCYmRDw9OTkxOXx8OTkyNDw9RCYmRDw9OTkzM3x8OTkzNTw9RCYmRDw9OTk1M3x8RD09OTk1NXx8OTk2MDw9RCYmRDw9OTk4M3x8RD09MTAwNDV8fEQ9PTEwMDcxfHwxMDEwMjw9RCYmRDw9MTAxMTF8fDExMDkzPD1EJiZEPD0xMTA5N3x8MTI4NzI8PUQmJkQ8PTEyODc5fHw1NzM0NDw9RCYmRDw9NjM3NDN8fDY1MDI0PD1EJiZEPD02NTAzOXx8RD09NjU1MzN8fDEyNzIzMjw9RCYmRDw9MTI3MjQyfHwxMjcyNDg8PUQmJkQ8PTEyNzI3N3x8MTI3MjgwPD1EJiZEPD0xMjczMzd8fDEyNzM0NDw9RCYmRDw9MTI3Mzg2fHw5MTc3NjA8PUQmJkQ8PTkxNzk5OXx8OTgzMDQwPD1EJiZEPD0xMDQ4NTczfHwxMDQ4NTc2PD1EJiZEPD0xMTE0MTA5P1wiQVwiOlwiTlwifSx1LmNoYXJhY3Rlckxlbmd0aD1mdW5jdGlvbihlKXt2YXIgcz10aGlzLmVhc3RBc2lhbldpZHRoKGUpO3JldHVybiBzPT1cIkZcInx8cz09XCJXXCJ8fHM9PVwiQVwiPzI6MX07ZnVuY3Rpb24gRihlKXtyZXR1cm4gZS5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZyl8fFtdfXUubGVuZ3RoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcz1GKGUpLEM9MCxEPTA7RDxzLmxlbmd0aDtEKyspQz1DK3RoaXMuY2hhcmFjdGVyTGVuZ3RoKHNbRF0pO3JldHVybiBDfSx1LnNsaWNlPWZ1bmN0aW9uKGUscyxDKXt0ZXh0TGVuPXUubGVuZ3RoKGUpLHM9c3x8MCxDPUN8fDEsczwwJiYocz10ZXh0TGVuK3MpLEM8MCYmKEM9dGV4dExlbitDKTtmb3IodmFyIEQ9XCJcIixpPTAsbz1GKGUpLEU9MDtFPG8ubGVuZ3RoO0UrKyl7dmFyIGE9b1tFXSxuPXUubGVuZ3RoKGEpO2lmKGk+PXMtKG49PTI/MTowKSlpZihpK248PUMpRCs9YTtlbHNlIGJyZWFrO2krPW47fXJldHVybiBEfTt9KShHKTtjb25zdCBLPW07dmFyIFk9ZnVuY3Rpb24oKXtyZXR1cm4gL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ307ZnVuY3Rpb24gYyh0LHU9e30pe2lmKHR5cGVvZiB0IT1cInN0cmluZ1wifHx0Lmxlbmd0aD09PTB8fCh1PXthbWJpZ3VvdXNJc05hcnJvdzohMCwuLi51fSx0PSQodCksdC5sZW5ndGg9PT0wKSlyZXR1cm4gMDt0PXQucmVwbGFjZShZKCksXCIgIFwiKTtjb25zdCBGPXUuYW1iaWd1b3VzSXNOYXJyb3c/MToyO2xldCBlPTA7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgQz1zLmNvZGVQb2ludEF0KDApO2lmKEM8PTMxfHxDPj0xMjcmJkM8PTE1OXx8Qz49NzY4JiZDPD04NzkpY29udGludWU7c3dpdGNoKEsuZWFzdEFzaWFuV2lkdGgocykpe2Nhc2VcIkZcIjpjYXNlXCJXXCI6ZSs9MjticmVhaztjYXNlXCJBXCI6ZSs9RjticmVhaztkZWZhdWx0OmUrPTE7fX1yZXR1cm4gZX1jb25zdCB2PTEwLEw9KHQ9MCk9PnU9PmBcXHgxQlske3UrdH1tYCxNPSh0PTApPT51PT5gXFx4MUJbJHszOCt0fTs1OyR7dX1tYCxUPSh0PTApPT4odSxGLGUpPT5gXFx4MUJbJHszOCt0fTsyOyR7dX07JHtGfTske2V9bWAscj17bW9kaWZpZXI6e3Jlc2V0OlswLDBdLGJvbGQ6WzEsMjJdLGRpbTpbMiwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLG92ZXJsaW5lOls1Myw1NV0saW52ZXJzZTpbNywyN10saGlkZGVuOls4LDI4XSxzdHJpa2V0aHJvdWdoOls5LDI5XX0sY29sb3I6e2JsYWNrOlszMCwzOV0scmVkOlszMSwzOV0sZ3JlZW46WzMyLDM5XSx5ZWxsb3c6WzMzLDM5XSxibHVlOlszNCwzOV0sbWFnZW50YTpbMzUsMzldLGN5YW46WzM2LDM5XSx3aGl0ZTpbMzcsMzldLGJsYWNrQnJpZ2h0Ols5MCwzOV0sZ3JheTpbOTAsMzldLGdyZXk6WzkwLDM5XSxyZWRCcmlnaHQ6WzkxLDM5XSxncmVlbkJyaWdodDpbOTIsMzldLHllbGxvd0JyaWdodDpbOTMsMzldLGJsdWVCcmlnaHQ6Wzk0LDM5XSxtYWdlbnRhQnJpZ2h0Ols5NSwzOV0sY3lhbkJyaWdodDpbOTYsMzldLHdoaXRlQnJpZ2h0Ols5NywzOV19LGJnQ29sb3I6e2JnQmxhY2s6WzQwLDQ5XSxiZ1JlZDpbNDEsNDldLGJnR3JlZW46WzQyLDQ5XSxiZ1llbGxvdzpbNDMsNDldLGJnQmx1ZTpbNDQsNDldLGJnTWFnZW50YTpbNDUsNDldLGJnQ3lhbjpbNDYsNDldLGJnV2hpdGU6WzQ3LDQ5XSxiZ0JsYWNrQnJpZ2h0OlsxMDAsNDldLGJnR3JheTpbMTAwLDQ5XSxiZ0dyZXk6WzEwMCw0OV0sYmdSZWRCcmlnaHQ6WzEwMSw0OV0sYmdHcmVlbkJyaWdodDpbMTAyLDQ5XSxiZ1llbGxvd0JyaWdodDpbMTAzLDQ5XSxiZ0JsdWVCcmlnaHQ6WzEwNCw0OV0sYmdNYWdlbnRhQnJpZ2h0OlsxMDUsNDldLGJnQ3lhbkJyaWdodDpbMTA2LDQ5XSxiZ1doaXRlQnJpZ2h0OlsxMDcsNDldfX07T2JqZWN0LmtleXMoci5tb2RpZmllcik7Y29uc3QgWj1PYmplY3Qua2V5cyhyLmNvbG9yKSxIPU9iamVjdC5rZXlzKHIuYmdDb2xvcik7Wy4uLlosLi4uSF07ZnVuY3Rpb24gVSgpe2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbdSxGXW9mIE9iamVjdC5lbnRyaWVzKHIpKXtmb3IoY29uc3RbZSxzXW9mIE9iamVjdC5lbnRyaWVzKEYpKXJbZV09e29wZW46YFxceDFCWyR7c1swXX1tYCxjbG9zZTpgXFx4MUJbJHtzWzFdfW1gfSxGW2VdPXJbZV0sdC5zZXQoc1swXSxzWzFdKTtPYmplY3QuZGVmaW5lUHJvcGVydHkocix1LHt2YWx1ZTpGLGVudW1lcmFibGU6ITF9KTt9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiY29kZXNcIix7dmFsdWU6dCxlbnVtZXJhYmxlOiExfSksci5jb2xvci5jbG9zZT1cIlxceDFCWzM5bVwiLHIuYmdDb2xvci5jbG9zZT1cIlxceDFCWzQ5bVwiLHIuY29sb3IuYW5zaT1MKCksci5jb2xvci5hbnNpMjU2PU0oKSxyLmNvbG9yLmFuc2kxNm09VCgpLHIuYmdDb2xvci5hbnNpPUwodiksci5iZ0NvbG9yLmFuc2kyNTY9TSh2KSxyLmJnQ29sb3IuYW5zaTE2bT1UKHYpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHIse3JnYlRvQW5zaTI1Njp7dmFsdWU6KHUsRixlKT0+dT09PUYmJkY9PT1lP3U8OD8xNjp1PjI0OD8yMzE6TWF0aC5yb3VuZCgodS04KS8yNDcqMjQpKzIzMjoxNiszNipNYXRoLnJvdW5kKHUvMjU1KjUpKzYqTWF0aC5yb3VuZChGLzI1NSo1KStNYXRoLnJvdW5kKGUvMjU1KjUpLGVudW1lcmFibGU6ITF9LGhleFRvUmdiOnt2YWx1ZTp1PT57Y29uc3QgRj0vW2EtZlxcZF17Nn18W2EtZlxcZF17M30vaS5leGVjKHUudG9TdHJpbmcoMTYpKTtpZighRilyZXR1cm4gWzAsMCwwXTtsZXRbZV09RjtlLmxlbmd0aD09PTMmJihlPVsuLi5lXS5tYXAoQz0+QytDKS5qb2luKFwiXCIpKTtjb25zdCBzPU51bWJlci5wYXJzZUludChlLDE2KTtyZXR1cm4gW3M+PjE2JjI1NSxzPj44JjI1NSxzJjI1NV19LGVudW1lcmFibGU6ITF9LGhleFRvQW5zaTI1Njp7dmFsdWU6dT0+ci5yZ2JUb0Fuc2kyNTYoLi4uci5oZXhUb1JnYih1KSksZW51bWVyYWJsZTohMX0sYW5zaTI1NlRvQW5zaTp7dmFsdWU6dT0+e2lmKHU8OClyZXR1cm4gMzArdTtpZih1PDE2KXJldHVybiA5MCsodS04KTtsZXQgRixlLHM7aWYodT49MjMyKUY9KCh1LTIzMikqMTArOCkvMjU1LGU9RixzPUY7ZWxzZSB7dS09MTY7Y29uc3QgaT11JTM2O0Y9TWF0aC5mbG9vcih1LzM2KS81LGU9TWF0aC5mbG9vcihpLzYpLzUscz1pJTYvNTt9Y29uc3QgQz1NYXRoLm1heChGLGUscykqMjtpZihDPT09MClyZXR1cm4gMzA7bGV0IEQ9MzArKE1hdGgucm91bmQocyk8PDJ8TWF0aC5yb3VuZChlKTw8MXxNYXRoLnJvdW5kKEYpKTtyZXR1cm4gQz09PTImJihEKz02MCksRH0sZW51bWVyYWJsZTohMX0scmdiVG9BbnNpOnt2YWx1ZToodSxGLGUpPT5yLmFuc2kyNTZUb0Fuc2koci5yZ2JUb0Fuc2kyNTYodSxGLGUpKSxlbnVtZXJhYmxlOiExfSxoZXhUb0Fuc2k6e3ZhbHVlOnU9PnIuYW5zaTI1NlRvQW5zaShyLmhleFRvQW5zaTI1Nih1KSksZW51bWVyYWJsZTohMX19KSxyfWNvbnN0IHE9VSgpLHA9bmV3IFNldChbXCJcXHgxQlwiLFwiXFx4OUJcIl0pLEo9MzksYj1cIlxceDA3XCIsVz1cIltcIixRPVwiXVwiLEk9XCJtXCIsdz1gJHtRfTg7O2AsTj10PT5gJHtwLnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke1d9JHt0fSR7SX1gLGo9dD0+YCR7cC52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHt3fSR7dH0ke2J9YCxYPXQ9PnQuc3BsaXQoXCIgXCIpLm1hcCh1PT5jKHUpKSxfPSh0LHUsRik9Pntjb25zdCBlPVsuLi51XTtsZXQgcz0hMSxDPSExLEQ9YygkKHRbdC5sZW5ndGgtMV0pKTtmb3IoY29uc3RbaSxvXW9mIGUuZW50cmllcygpKXtjb25zdCBFPWMobyk7aWYoRCtFPD1GP3RbdC5sZW5ndGgtMV0rPW86KHQucHVzaChvKSxEPTApLHAuaGFzKG8pJiYocz0hMCxDPWUuc2xpY2UoaSsxKS5qb2luKFwiXCIpLnN0YXJ0c1dpdGgodykpLHMpe0M/bz09PWImJihzPSExLEM9ITEpOm89PT1JJiYocz0hMSk7Y29udGludWV9RCs9RSxEPT09RiYmaTxlLmxlbmd0aC0xJiYodC5wdXNoKFwiXCIpLEQ9MCk7fSFEJiZ0W3QubGVuZ3RoLTFdLmxlbmd0aD4wJiZ0Lmxlbmd0aD4xJiYodFt0Lmxlbmd0aC0yXSs9dC5wb3AoKSk7fSxERD10PT57Y29uc3QgdT10LnNwbGl0KFwiIFwiKTtsZXQgRj11Lmxlbmd0aDtmb3IoO0Y+MCYmIShjKHVbRi0xXSk+MCk7KUYtLTtyZXR1cm4gRj09PXUubGVuZ3RoP3Q6dS5zbGljZSgwLEYpLmpvaW4oXCIgXCIpK3Uuc2xpY2UoRikuam9pbihcIlwiKX0sdUQ9KHQsdSxGPXt9KT0+e2lmKEYudHJpbSE9PSExJiZ0LnRyaW0oKT09PVwiXCIpcmV0dXJuIFwiXCI7bGV0IGU9XCJcIixzLEM7Y29uc3QgRD1YKHQpO2xldCBpPVtcIlwiXTtmb3IoY29uc3RbRSxhXW9mIHQuc3BsaXQoXCIgXCIpLmVudHJpZXMoKSl7Ri50cmltIT09ITEmJihpW2kubGVuZ3RoLTFdPWlbaS5sZW5ndGgtMV0udHJpbVN0YXJ0KCkpO2xldCBuPWMoaVtpLmxlbmd0aC0xXSk7aWYoRSE9PTAmJihuPj11JiYoRi53b3JkV3JhcD09PSExfHxGLnRyaW09PT0hMSkmJihpLnB1c2goXCJcIiksbj0wKSwobj4wfHxGLnRyaW09PT0hMSkmJihpW2kubGVuZ3RoLTFdKz1cIiBcIixuKyspKSxGLmhhcmQmJkRbRV0+dSl7Y29uc3QgQj11LW4sQT0xK01hdGguZmxvb3IoKERbRV0tQi0xKS91KTtNYXRoLmZsb29yKChEW0VdLTEpL3UpPEEmJmkucHVzaChcIlwiKSxfKGksYSx1KTtjb250aW51ZX1pZihuK0RbRV0+dSYmbj4wJiZEW0VdPjApe2lmKEYud29yZFdyYXA9PT0hMSYmbjx1KXtfKGksYSx1KTtjb250aW51ZX1pLnB1c2goXCJcIik7fWlmKG4rRFtFXT51JiZGLndvcmRXcmFwPT09ITEpe18oaSxhLHUpO2NvbnRpbnVlfWlbaS5sZW5ndGgtMV0rPWE7fUYudHJpbSE9PSExJiYoaT1pLm1hcChFPT5ERChFKSkpO2NvbnN0IG89Wy4uLmkuam9pbihgXG5gKV07Zm9yKGNvbnN0W0UsYV1vZiBvLmVudHJpZXMoKSl7aWYoZSs9YSxwLmhhcyhhKSl7Y29uc3R7Z3JvdXBzOkJ9PW5ldyBSZWdFeHAoYCg/OlxcXFwke1d9KD88Y29kZT5cXFxcZCspbXxcXFxcJHt3fSg/PHVyaT4uKikke2J9KWApLmV4ZWMoby5zbGljZShFKS5qb2luKFwiXCIpKXx8e2dyb3Vwczp7fX07aWYoQi5jb2RlIT09dm9pZCAwKXtjb25zdCBBPU51bWJlci5wYXJzZUZsb2F0KEIuY29kZSk7cz1BPT09Sj92b2lkIDA6QTt9ZWxzZSBCLnVyaSE9PXZvaWQgMCYmKEM9Qi51cmkubGVuZ3RoPT09MD92b2lkIDA6Qi51cmkpO31jb25zdCBuPXEuY29kZXMuZ2V0KE51bWJlcihzKSk7b1tFKzFdPT09YFxuYD8oQyYmKGUrPWooXCJcIikpLHMmJm4mJihlKz1OKG4pKSk6YT09PWBcbmAmJihzJiZuJiYoZSs9TihzKSksQyYmKGUrPWooQykpKTt9cmV0dXJuIGV9O2Z1bmN0aW9uIFAodCx1LEYpe3JldHVybiBTdHJpbmcodCkubm9ybWFsaXplKCkucmVwbGFjZSgvXFxyXFxuL2csYFxuYCkuc3BsaXQoYFxuYCkubWFwKGU9PnVEKGUsdSxGKSkuam9pbihgXG5gKX1mdW5jdGlvbiBGRCh0LHUpe2lmKHQ9PT11KXJldHVybjtjb25zdCBGPXQuc3BsaXQoYFxuYCksZT11LnNwbGl0KGBcbmApLHM9W107Zm9yKGxldCBDPTA7QzxNYXRoLm1heChGLmxlbmd0aCxlLmxlbmd0aCk7QysrKUZbQ10hPT1lW0NdJiZzLnB1c2goQyk7cmV0dXJuIHN9Y29uc3QgUj1TeW1ib2woXCJjbGFjazpjYW5jZWxcIik7ZnVuY3Rpb24gZyh0LHUpe3QuaXNUVFkmJnQuc2V0UmF3TW9kZSh1KTt9Y29uc3QgVj1uZXcgTWFwKFtbXCJrXCIsXCJ1cFwiXSxbXCJqXCIsXCJkb3duXCJdLFtcImhcIixcImxlZnRcIl0sW1wibFwiLFwicmlnaHRcIl1dKSx0RD1uZXcgU2V0KFtcInVwXCIsXCJkb3duXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwic3BhY2VcIixcImVudGVyXCJdKTtjbGFzcyBoe2NvbnN0cnVjdG9yKHtyZW5kZXI6dSxpbnB1dDpGPXN0ZGluLG91dHB1dDplPXN0ZG91dCwuLi5zfSxDPSEwKXt0aGlzLl90cmFjaz0hMSx0aGlzLl9jdXJzb3I9MCx0aGlzLnN0YXRlPVwiaW5pdGlhbFwiLHRoaXMuZXJyb3I9XCJcIix0aGlzLnN1YnNjcmliZXJzPW5ldyBNYXAsdGhpcy5fcHJldkZyYW1lPVwiXCIsdGhpcy5vcHRzPXMsdGhpcy5vbktleXByZXNzPXRoaXMub25LZXlwcmVzcy5iaW5kKHRoaXMpLHRoaXMuY2xvc2U9dGhpcy5jbG9zZS5iaW5kKHRoaXMpLHRoaXMucmVuZGVyPXRoaXMucmVuZGVyLmJpbmQodGhpcyksdGhpcy5fcmVuZGVyPXUuYmluZCh0aGlzKSx0aGlzLl90cmFjaz1DLHRoaXMuaW5wdXQ9Rix0aGlzLm91dHB1dD1lO31wcm9tcHQoKXtjb25zdCB1PW5ldyBXcml0ZVN0cmVhbSgwKTtyZXR1cm4gdS5fd3JpdGU9KEYsZSxzKT0+e3RoaXMuX3RyYWNrJiYodGhpcy52YWx1ZT10aGlzLnJsLmxpbmUucmVwbGFjZSgvXFx0L2csXCJcIiksdGhpcy5fY3Vyc29yPXRoaXMucmwuY3Vyc29yLHRoaXMuZW1pdChcInZhbHVlXCIsdGhpcy52YWx1ZSkpLHMoKTt9LHRoaXMuaW5wdXQucGlwZSh1KSx0aGlzLnJsPWYuY3JlYXRlSW50ZXJmYWNlKHtpbnB1dDp0aGlzLmlucHV0LG91dHB1dDp1LHRhYlNpemU6Mixwcm9tcHQ6XCJcIixlc2NhcGVDb2RlVGltZW91dDo1MH0pLGYuZW1pdEtleXByZXNzRXZlbnRzKHRoaXMuaW5wdXQsdGhpcy5ybCksdGhpcy5ybC5wcm9tcHQoKSx0aGlzLm9wdHMuaW5pdGlhbFZhbHVlIT09dm9pZCAwJiZ0aGlzLl90cmFjayYmdGhpcy5ybC53cml0ZSh0aGlzLm9wdHMuaW5pdGlhbFZhbHVlKSx0aGlzLmlucHV0Lm9uKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLGcodGhpcy5pbnB1dCwhMCksdGhpcy5vdXRwdXQub24oXCJyZXNpemVcIix0aGlzLnJlbmRlciksdGhpcy5yZW5kZXIoKSxuZXcgUHJvbWlzZSgoRixlKT0+e3RoaXMub25jZShcInN1Ym1pdFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZyh0aGlzLmlucHV0LCExKSxGKHRoaXMudmFsdWUpO30pLHRoaXMub25jZShcImNhbmNlbFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZyh0aGlzLmlucHV0LCExKSxGKFIpO30pO30pfW9uKHUsRil7Y29uc3QgZT10aGlzLnN1YnNjcmliZXJzLmdldCh1KT8/W107ZS5wdXNoKHtjYjpGfSksdGhpcy5zdWJzY3JpYmVycy5zZXQodSxlKTt9b25jZSh1LEYpe2NvbnN0IGU9dGhpcy5zdWJzY3JpYmVycy5nZXQodSk/P1tdO2UucHVzaCh7Y2I6RixvbmNlOiEwfSksdGhpcy5zdWJzY3JpYmVycy5zZXQodSxlKTt9ZW1pdCh1LC4uLkYpe2NvbnN0IGU9dGhpcy5zdWJzY3JpYmVycy5nZXQodSk/P1tdLHM9W107Zm9yKGNvbnN0IEMgb2YgZSlDLmNiKC4uLkYpLEMub25jZSYmcy5wdXNoKCgpPT5lLnNwbGljZShlLmluZGV4T2YoQyksMSkpO2Zvcihjb25zdCBDIG9mIHMpQygpO311bnN1YnNjcmliZSgpe3RoaXMuc3Vic2NyaWJlcnMuY2xlYXIoKTt9b25LZXlwcmVzcyh1LEYpe2lmKHRoaXMuc3RhdGU9PT1cImVycm9yXCImJih0aGlzLnN0YXRlPVwiYWN0aXZlXCIpLEY/Lm5hbWUmJiF0aGlzLl90cmFjayYmVi5oYXMoRi5uYW1lKSYmdGhpcy5lbWl0KFwiY3Vyc29yXCIsVi5nZXQoRi5uYW1lKSksRj8ubmFtZSYmdEQuaGFzKEYubmFtZSkmJnRoaXMuZW1pdChcImN1cnNvclwiLEYubmFtZSksdSYmKHUudG9Mb3dlckNhc2UoKT09PVwieVwifHx1LnRvTG93ZXJDYXNlKCk9PT1cIm5cIikmJnRoaXMuZW1pdChcImNvbmZpcm1cIix1LnRvTG93ZXJDYXNlKCk9PT1cInlcIiksdSYmdGhpcy5lbWl0KFwia2V5XCIsdS50b0xvd2VyQ2FzZSgpKSxGPy5uYW1lPT09XCJyZXR1cm5cIil7aWYodGhpcy5vcHRzLnZhbGlkYXRlKXtjb25zdCBlPXRoaXMub3B0cy52YWxpZGF0ZSh0aGlzLnZhbHVlKTtlJiYodGhpcy5lcnJvcj1lLHRoaXMuc3RhdGU9XCJlcnJvclwiLHRoaXMucmwud3JpdGUodGhpcy52YWx1ZSkpO310aGlzLnN0YXRlIT09XCJlcnJvclwiJiYodGhpcy5zdGF0ZT1cInN1Ym1pdFwiKTt9dT09PVwiXHUwMDAzXCImJih0aGlzLnN0YXRlPVwiY2FuY2VsXCIpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmVtaXQoXCJmaW5hbGl6ZVwiKSx0aGlzLnJlbmRlcigpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmNsb3NlKCk7fWNsb3NlKCl7dGhpcy5pbnB1dC51bnBpcGUoKSx0aGlzLmlucHV0LnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLHRoaXMub3V0cHV0LndyaXRlKGBcbmApLGcodGhpcy5pbnB1dCwhMSksdGhpcy5ybC5jbG9zZSgpLHRoaXMuZW1pdChgJHt0aGlzLnN0YXRlfWAsdGhpcy52YWx1ZSksdGhpcy51bnN1YnNjcmliZSgpO31yZXN0b3JlQ3Vyc29yKCl7Y29uc3QgdT1QKHRoaXMuX3ByZXZGcmFtZSxwcm9jZXNzLnN0ZG91dC5jb2x1bW5zLHtoYXJkOiEwfSkuc3BsaXQoYFxuYCkubGVuZ3RoLTE7dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKC05OTksdSotMSkpO31yZW5kZXIoKXtjb25zdCB1PVAodGhpcy5fcmVuZGVyKHRoaXMpPz9cIlwiLHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMse2hhcmQ6ITB9KTtpZih1IT09dGhpcy5fcHJldkZyYW1lKXtpZih0aGlzLnN0YXRlPT09XCJpbml0aWFsXCIpdGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5oaWRlKTtlbHNlIHtjb25zdCBGPUZEKHRoaXMuX3ByZXZGcmFtZSx1KTtpZih0aGlzLnJlc3RvcmVDdXJzb3IoKSxGJiZGPy5sZW5ndGg9PT0xKXtjb25zdCBlPUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKDAsZSkpLHRoaXMub3V0cHV0LndyaXRlKHNyYy5lcmFzZS5saW5lcygxKSk7Y29uc3Qgcz11LnNwbGl0KGBcbmApO3RoaXMub3V0cHV0LndyaXRlKHNbZV0pLHRoaXMuX3ByZXZGcmFtZT11LHRoaXMub3V0cHV0LndyaXRlKHNyYy5jdXJzb3IubW92ZSgwLHMubGVuZ3RoLWUtMSkpO3JldHVybn1lbHNlIGlmKEYmJkY/Lmxlbmd0aD4xKXtjb25zdCBlPUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKDAsZSkpLHRoaXMub3V0cHV0LndyaXRlKHNyYy5lcmFzZS5kb3duKCkpO2NvbnN0IEM9dS5zcGxpdChgXG5gKS5zbGljZShlKTt0aGlzLm91dHB1dC53cml0ZShDLmpvaW4oYFxuYCkpLHRoaXMuX3ByZXZGcmFtZT11O3JldHVybn10aGlzLm91dHB1dC53cml0ZShzcmMuZXJhc2UuZG93bigpKTt9dGhpcy5vdXRwdXQud3JpdGUodSksdGhpcy5zdGF0ZT09PVwiaW5pdGlhbFwiJiYodGhpcy5zdGF0ZT1cImFjdGl2ZVwiKSx0aGlzLl9wcmV2RnJhbWU9dTt9fX1jbGFzcyBzRCBleHRlbmRzIGh7Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLnZhbHVlPzA6MX1nZXQgX3ZhbHVlKCl7cmV0dXJuIHRoaXMuY3Vyc29yPT09MH1jb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLnZhbHVlPSEhdS5pbml0aWFsVmFsdWUsdGhpcy5vbihcInZhbHVlXCIsKCk9Pnt0aGlzLnZhbHVlPXRoaXMuX3ZhbHVlO30pLHRoaXMub24oXCJjb25maXJtXCIsRj0+e3RoaXMub3V0cHV0LndyaXRlKHNyYy5jdXJzb3IubW92ZSgwLC0xKSksdGhpcy52YWx1ZT1GLHRoaXMuc3RhdGU9XCJzdWJtaXRcIix0aGlzLmNsb3NlKCk7fSksdGhpcy5vbihcImN1cnNvclwiLCgpPT57dGhpcy52YWx1ZT0hdGhpcy52YWx1ZTt9KTt9fWNsYXNzIGlEIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLmN1cnNvcj0wLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy52YWx1ZT1bLi4udS5pbml0aWFsVmFsdWVzPz9bXV0sdGhpcy5jdXJzb3I9TWF0aC5tYXgodGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuY3Vyc29yQXQpLDApLHRoaXMub24oXCJrZXlcIixGPT57Rj09PVwiYVwiJiZ0aGlzLnRvZ2dsZUFsbCgpO30pLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWs7Y2FzZVwic3BhY2VcIjp0aGlzLnRvZ2dsZVZhbHVlKCk7YnJlYWt9fSk7fWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZX10b2dnbGVBbGwoKXtjb25zdCB1PXRoaXMudmFsdWUubGVuZ3RoPT09dGhpcy5vcHRpb25zLmxlbmd0aDt0aGlzLnZhbHVlPXU/W106dGhpcy5vcHRpb25zLm1hcChGPT5GLnZhbHVlKTt9dG9nZ2xlVmFsdWUoKXtjb25zdCB1PXRoaXMudmFsdWUuaW5jbHVkZXModGhpcy5fdmFsdWUpO3RoaXMudmFsdWU9dT90aGlzLnZhbHVlLmZpbHRlcihGPT5GIT09dGhpcy5fdmFsdWUpOlsuLi50aGlzLnZhbHVlLHRoaXMuX3ZhbHVlXTt9fWNsYXNzIEVEIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLmN1cnNvcj0wLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy5jdXJzb3I9dGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuaW5pdGlhbFZhbHVlKSx0aGlzLmN1cnNvcj09PS0xJiYodGhpcy5jdXJzb3I9MCksdGhpcy5jaGFuZ2VWYWx1ZSgpLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWt9dGhpcy5jaGFuZ2VWYWx1ZSgpO30pO31nZXQgX3ZhbHVlKCl7cmV0dXJuIHRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl19Y2hhbmdlVmFsdWUoKXt0aGlzLnZhbHVlPXRoaXMuX3ZhbHVlLnZhbHVlO319Y2xhc3Mgb0QgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUpLHRoaXMudmFsdWVXaXRoQ3Vyc29yPVwiXCIsdGhpcy5vbihcImZpbmFsaXplXCIsKCk9Pnt0aGlzLnZhbHVlfHwodGhpcy52YWx1ZT11LmRlZmF1bHRWYWx1ZSksdGhpcy52YWx1ZVdpdGhDdXJzb3I9dGhpcy52YWx1ZTt9KSx0aGlzLm9uKFwidmFsdWVcIiwoKT0+e2lmKHRoaXMuY3Vyc29yPj10aGlzLnZhbHVlLmxlbmd0aCl0aGlzLnZhbHVlV2l0aEN1cnNvcj1gJHt0aGlzLnZhbHVlfSR7bC5pbnZlcnNlKGwuaGlkZGVuKFwiX1wiKSl9YDtlbHNlIHtjb25zdCBGPXRoaXMudmFsdWUuc2xpY2UoMCx0aGlzLmN1cnNvciksZT10aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTt0aGlzLnZhbHVlV2l0aEN1cnNvcj1gJHtGfSR7bC5pbnZlcnNlKGVbMF0pfSR7ZS5zbGljZSgxKX1gO319KTt9Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLl9jdXJzb3J9fVxuXG5jb25zdCB1bmljb2RlID0gaXNVbmljb2RlU3VwcG9ydGVkKCk7XG5jb25zdCBzID0gKGMsIGZhbGxiYWNrKSA9PiB1bmljb2RlID8gYyA6IGZhbGxiYWNrO1xuY29uc3QgU19TVEVQX0FDVElWRSA9IHMoXCJcXHUyNzZGXCIsIFwiPlwiKTtcbmNvbnN0IFNfU1RFUF9DQU5DRUwgPSBzKFwiXFx1MjVBMFwiLCBcInhcIik7XG5jb25zdCBTX1NURVBfRVJST1IgPSBzKFwiXFx1MjVCMlwiLCBcInhcIik7XG5jb25zdCBTX1NURVBfU1VCTUlUID0gcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpO1xuY29uc3QgU19CQVIgPSBcIlwiO1xuY29uc3QgU19CQVJfRU5EID0gXCJcIjtcbmNvbnN0IFNfUkFESU9fQUNUSVZFID0gcyhcIlxcdTI1Q0ZcIiwgXCI+XCIpO1xuY29uc3QgU19SQURJT19JTkFDVElWRSA9IHMoXCJcXHUyNUNCXCIsIFwiIFwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfQUNUSVZFID0gcyhcIlxcdTI1RkJcIiwgXCJbXFx1MjAyMl1cIik7XG5jb25zdCBTX0NIRUNLQk9YX1NFTEVDVEVEID0gcyhcIlxcdTI1RkNcIiwgXCJbK11cIik7XG5jb25zdCBTX0NIRUNLQk9YX0lOQUNUSVZFID0gcyhcIlxcdTI1RkJcIiwgXCJbIF1cIik7XG5jb25zdCBzeW1ib2wgPSAoc3RhdGUpID0+IHtcbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgXCJpbml0aWFsXCI6XG4gICAgY2FzZSBcImFjdGl2ZVwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLmN5YW4oU19TVEVQX0FDVElWRSk7XG4gICAgfVxuICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgcmV0dXJuIGNvbG9ycy5yZWQoU19TVEVQX0NBTkNFTCk7XG4gICAgfVxuICAgIGNhc2UgXCJlcnJvclwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLnllbGxvdyhTX1NURVBfRVJST1IpO1xuICAgIH1cbiAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMuZ3JlZW4oU19TVEVQX1NVQk1JVCk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgdGV4dCA9IChvcHRzKSA9PiB7XG4gIHJldHVybiBuZXcgb0Qoe1xuICAgIHZhbGlkYXRlOiBvcHRzLnZhbGlkYXRlLFxuICAgIHBsYWNlaG9sZGVyOiBvcHRzLnBsYWNlaG9sZGVyLFxuICAgIGRlZmF1bHRWYWx1ZTogb3B0cy5kZWZhdWx0VmFsdWUsXG4gICAgaW5pdGlhbFZhbHVlOiBvcHRzLmluaXRpYWxWYWx1ZSxcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB0aXRsZSA9IGAke2NvbG9ycy5ncmF5KFNfQkFSKX1cbiR7c3ltYm9sKHRoaXMuc3RhdGUpfSAke29wdHMubWVzc2FnZX1cbmA7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IG9wdHMucGxhY2Vob2xkZXIgPyBjb2xvcnMuaW52ZXJzZShvcHRzLnBsYWNlaG9sZGVyWzBdKSArIGNvbG9ycy5kaW0ob3B0cy5wbGFjZWhvbGRlci5zbGljZSgxKSkgOiBjb2xvcnMuaW52ZXJzZShjb2xvcnMuaGlkZGVuKFwiX1wiKSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlV2l0aEN1cnNvciA6IHBsYWNlaG9sZGVyO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJlcnJvclwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlLnRyaW0oKX1cbiR7Y29sb3JzLnllbGxvdyhcbiAgICAgICAgICAgIFNfQkFSXG4gICAgICAgICAgKX0gJHt2YWx1ZX1cbiR7Y29sb3JzLnllbGxvdyhTX0JBUl9FTkQpfSAke2NvbG9ycy55ZWxsb3coXG4gICAgICAgICAgICB0aGlzLmVycm9yXG4gICAgICAgICAgKX1cbmA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInN1Ym1pdFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5kaW0oXG4gICAgICAgICAgICB0aGlzLnZhbHVlIHx8IG9wdHMucGxhY2Vob2xkZXJcbiAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKFxuICAgICAgICAgICAgY29sb3JzLmRpbSh0aGlzLnZhbHVlID8/IFwiXCIpXG4gICAgICAgICAgKX0ke3RoaXMudmFsdWU/LnRyaW0oKSA/IFwiXFxuXCIgKyBjb2xvcnMuZ3JheShTX0JBUikgOiBcIlwifWA7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5jeWFuKFNfQkFSKX0gJHt2YWx1ZX1cbiR7Y29sb3JzLmN5YW4oXG4gICAgICAgICAgICBTX0JBUl9FTkRcbiAgICAgICAgICApfVxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSkucHJvbXB0KCk7XG59O1xuY29uc3QgY29uZmlybSA9IChvcHRzKSA9PiB7XG4gIGNvbnN0IGFjdGl2ZSA9IG9wdHMuYWN0aXZlID8/IFwiWWVzXCI7XG4gIGNvbnN0IGluYWN0aXZlID0gb3B0cy5pbmFjdGl2ZSA/PyBcIk5vXCI7XG4gIHJldHVybiBuZXcgc0Qoe1xuICAgIGFjdGl2ZSxcbiAgICBpbmFjdGl2ZSxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlID8/IHRydWUsXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlID8gYWN0aXZlIDogaW5hY3RpdmU7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgY2FzZSBcInN1Ym1pdFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5kaW0odmFsdWUpfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKFxuICAgICAgICAgICAgY29sb3JzLmRpbSh2YWx1ZSlcbiAgICAgICAgICApfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMudmFsdWUgPyBgJHtjb2xvcnMuZ3JlZW4oU19SQURJT19BQ1RJVkUpfSAke2FjdGl2ZX1gIDogYCR7Y29sb3JzLmRpbShTX1JBRElPX0lOQUNUSVZFKX0gJHtjb2xvcnMuZGltKGFjdGl2ZSl9YH0gJHtjb2xvcnMuZGltKFwiL1wiKX0gJHt0aGlzLnZhbHVlID8gYCR7Y29sb3JzLmRpbShTX1JBRElPX0lOQUNUSVZFKX0gJHtjb2xvcnMuZGltKGluYWN0aXZlKX1gIDogYCR7Y29sb3JzLmdyZWVuKFNfUkFESU9fQUNUSVZFKX0gJHtpbmFjdGl2ZX1gfVxuJHtjb2xvcnMuY3lhbihTX0JBUl9FTkQpfVxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSkucHJvbXB0KCk7XG59O1xuY29uc3Qgc2VsZWN0ID0gKG9wdHMpID0+IHtcbiAgY29uc3Qgb3B0ID0gKG9wdGlvbiwgc3RhdGUpID0+IHtcbiAgICBjb25zdCBsYWJlbCA9IG9wdGlvbi5sYWJlbCA/PyBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5ncmVlbihTX1JBRElPX0FDVElWRSl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic2VsZWN0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjYW5jZWxsZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLnN0cmlrZXRocm91Z2goY29sb3JzLmRpbShsYWJlbCkpfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gIH07XG4gIHJldHVybiBuZXcgRUQoe1xuICAgIG9wdGlvbnM6IG9wdHMub3B0aW9ucyxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlLFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7b3B0KFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXSxcbiAgICAgICAgICAgIFwic2VsZWN0ZWRcIlxuICAgICAgICAgICl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7b3B0KFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXSxcbiAgICAgICAgICAgIFwiY2FuY2VsbGVkXCJcbiAgICAgICAgICApfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMub3B0aW9ucy5tYXAoXG4gICAgICAgICAgICAob3B0aW9uLCBpKSA9PiBvcHQob3B0aW9uLCBpID09PSB0aGlzLmN1cnNvciA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpXG4gICAgICAgICAgKS5qb2luKGBcbiR7Y29sb3JzLmN5YW4oU19CQVIpfSAgYCl9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBtdWx0aXNlbGVjdCA9IChvcHRzKSA9PiB7XG4gIGNvbnN0IG9wdCA9IChvcHRpb24sIHN0YXRlKSA9PiB7XG4gICAgY29uc3QgbGFiZWwgPSBvcHRpb24ubGFiZWwgPz8gU3RyaW5nKG9wdGlvbi52YWx1ZSk7XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSBcImFjdGl2ZVwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuY3lhbihTX0NIRUNLQk9YX0FDVElWRSl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic2VsZWN0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmdyZWVuKFNfQ0hFQ0tCT1hfU0VMRUNURUQpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwiY2FuY2VsbGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKGNvbG9ycy5kaW0obGFiZWwpKX1gO1xuICAgICAgfVxuICAgICAgY2FzZSBcImFjdGl2ZS1zZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZ3JlZW4oU19DSEVDS0JPWF9TRUxFQ1RFRCl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic3VibWl0dGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtjb2xvcnMuZGltKFNfQ0hFQ0tCT1hfSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gIH07XG4gIHJldHVybiBuZXcgaUQoe1xuICAgIG9wdGlvbnM6IG9wdHMub3B0aW9ucyxcbiAgICBpbml0aWFsVmFsdWVzOiBvcHRzLmluaXRpYWxWYWx1ZXMsXG4gICAgcmVxdWlyZWQ6IG9wdHMucmVxdWlyZWQgPz8gdHJ1ZSxcbiAgICBjdXJzb3JBdDogb3B0cy5jdXJzb3JBdCxcbiAgICB2YWxpZGF0ZShzZWxlY3RlZCkge1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBgUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgb3B0aW9uLlxuJHtjb2xvcnMucmVzZXQoXG4gICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgIGBQcmVzcyAke2NvbG9ycy5ncmF5KFxuICAgICAgICAgICAgICBjb2xvcnMuYmdXaGl0ZShjb2xvcnMuaW52ZXJzZShcIiBzcGFjZSBcIikpXG4gICAgICAgICAgICApfSB0byBzZWxlY3QsICR7Y29sb3JzLmdyYXkoXG4gICAgICAgICAgICAgIGNvbG9ycy5iZ1doaXRlKGNvbG9ycy5pbnZlcnNlKFwiIGVudGVyIFwiKSlcbiAgICAgICAgICAgICl9IHRvIHN1Ym1pdGBcbiAgICAgICAgICApXG4gICAgICAgICl9YDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7dGhpcy5vcHRpb25zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB0aGlzLnZhbHVlLmluY2x1ZGVzKHZhbHVlKSkubWFwKChvcHRpb24pID0+IG9wdChvcHRpb24sIFwic3VibWl0dGVkXCIpKS5qb2luKGNvbG9ycy5kaW0oXCIsIFwiKSkgfHwgY29sb3JzLmRpbShcIm5vbmVcIil9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHsgdmFsdWUgfSkgPT4gdGhpcy52YWx1ZS5pbmNsdWRlcyh2YWx1ZSkpLm1hcCgob3B0aW9uKSA9PiBvcHQob3B0aW9uLCBcImNhbmNlbGxlZFwiKSkuam9pbihjb2xvcnMuZGltKFwiLCBcIikpO1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtsYWJlbC50cmltKCkgPyBgJHtsYWJlbH1cbiR7Y29sb3JzLmdyYXkoU19CQVIpfWAgOiBcIlwifWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgICAgICBjb25zdCBmb290ZXIgPSB0aGlzLmVycm9yLnNwbGl0KFwiXFxuXCIpLm1hcChcbiAgICAgICAgICAgIChsbiwgaSkgPT4gaSA9PT0gMCA/IGAke2NvbG9ycy55ZWxsb3coU19CQVJfRU5EKX0gJHtjb2xvcnMueWVsbG93KGxuKX1gIDogYCAgICR7bG59YFxuICAgICAgICAgICkuam9pbihcIlxcblwiKTtcbiAgICAgICAgICByZXR1cm4gdGl0bGUgKyBjb2xvcnMueWVsbG93KFNfQkFSKSArIFwiICBcIiArIHRoaXMub3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBpID09PSB0aGlzLmN1cnNvcjtcbiAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwiYWN0aXZlLXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcInNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIGFjdGl2ZSA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpO1xuICAgICAgICAgIH0pLmpvaW4oYFxuJHtjb2xvcnMueWVsbG93KFNfQkFSKX0gIGApICsgXCJcXG5cIiArIGZvb3RlciArIFwiXFxuXCI7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5jeWFuKFNfQkFSKX0gJHt0aGlzLm9wdGlvbnMubWFwKChvcHRpb24sIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy52YWx1ZS5pbmNsdWRlcyhvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gaSA9PT0gdGhpcy5jdXJzb3I7XG4gICAgICAgICAgICBpZiAoYWN0aXZlICYmIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcImFjdGl2ZS1zZWxlY3RlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBhY3RpdmUgPyBcImFjdGl2ZVwiIDogXCJpbmFjdGl2ZVwiKTtcbiAgICAgICAgICB9KS5qb2luKGBcbiR7Y29sb3JzLmN5YW4oU19CQVIpfSAgYCl9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHByb21wdChtZXNzYWdlLCBvcHRzID0ge30pIHtcbiAgaWYgKCFvcHRzLnR5cGUgfHwgb3B0cy50eXBlID09PSBcInRleHRcIikge1xuICAgIHJldHVybiBhd2FpdCB0ZXh0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkZWZhdWx0VmFsdWU6IG9wdHMuZGVmYXVsdCxcbiAgICAgIHBsYWNlaG9sZGVyOiBvcHRzLnBsYWNlaG9sZGVyLFxuICAgICAgaW5pdGlhbFZhbHVlOiBvcHRzLmluaXRpYWxcbiAgICB9KTtcbiAgfVxuICBpZiAob3B0cy50eXBlID09PSBcImNvbmZpcm1cIikge1xuICAgIHJldHVybiBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFxuICAgIH0pO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwic2VsZWN0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBvcHRpb25zOiBvcHRzLm9wdGlvbnMubWFwKFxuICAgICAgICAobykgPT4gdHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB7IHZhbHVlOiBvLCBsYWJlbDogbyB9IDogb1xuICAgICAgKVxuICAgIH0pO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwibXVsdGlzZWxlY3RcIikge1xuICAgIHJldHVybiBhd2FpdCBtdWx0aXNlbGVjdCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgb3B0aW9uczogb3B0cy5vcHRpb25zLm1hcChcbiAgICAgICAgKG8pID0+IHR5cGVvZiBvID09PSBcInN0cmluZ1wiID8geyB2YWx1ZTogbywgbGFiZWw6IG8gfSA6IG9cbiAgICAgICksXG4gICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZFxuICAgIH0pO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwcm9tcHQgdHlwZTogJHtvcHRzLnR5cGV9YCk7XG59XG5cbmV4cG9ydCB7IHByb21wdCB9O1xuIiwgImltcG9ydCB7IGNyZWF0ZUNvbnNvbGEgYXMgY3JlYXRlQ29uc29sYSQxLCBMb2dMZXZlbHMgfSBmcm9tICcuLi9jb3JlLm1qcyc7XG5pbXBvcnQgeyBCIGFzIEJhc2ljUmVwb3J0ZXIsIHAgYXMgcGFyc2VTdGFjayB9IGZyb20gJy4vY29uc29sYS4wNmFkOGE2NC5tanMnO1xuaW1wb3J0IHByb2Nlc3MkMSBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgY29sb3JzLCBib3gsIHN0cmlwQW5zaSBhcyBzdHJpcEFuc2kkMSB9IGZyb20gJy4uL3V0aWxzLm1qcyc7XG5cbmNvbnN0IHByb3ZpZGVycyA9IFtcbiAgW1wiQVBQVkVZT1JcIl0sXG4gIFtcIkFaVVJFX1BJUEVMSU5FU1wiLCBcIlNZU1RFTV9URUFNRk9VTkRBVElPTkNPTExFQ1RJT05VUklcIl0sXG4gIFtcIkFaVVJFX1NUQVRJQ1wiLCBcIklOUFVUX0FaVVJFX1NUQVRJQ19XRUJfQVBQU19BUElfVE9LRU5cIl0sXG4gIFtcIkFQUENJUkNMRVwiLCBcIkFDX0FQUENJUkNMRVwiXSxcbiAgW1wiQkFNQk9PXCIsIFwiYmFtYm9vX3BsYW5LZXlcIl0sXG4gIFtcIkJJVEJVQ0tFVFwiLCBcIkJJVEJVQ0tFVF9DT01NSVRcIl0sXG4gIFtcIkJJVFJJU0VcIiwgXCJCSVRSSVNFX0lPXCJdLFxuICBbXCJCVUREWVwiLCBcIkJVRERZX1dPUktTUEFDRV9JRFwiXSxcbiAgW1wiQlVJTERLSVRFXCJdLFxuICBbXCJDSVJDTEVcIiwgXCJDSVJDTEVDSVwiXSxcbiAgW1wiQ0lSUlVTXCIsIFwiQ0lSUlVTX0NJXCJdLFxuICBbXCJDTE9VREZMQVJFX1BBR0VTXCIsIFwiQ0ZfUEFHRVNcIiwgeyBjaTogdHJ1ZSB9XSxcbiAgW1wiQ09ERUJVSUxEXCIsIFwiQ09ERUJVSUxEX0JVSUxEX0FSTlwiXSxcbiAgW1wiQ09ERUZSRVNIXCIsIFwiQ0ZfQlVJTERfSURcIl0sXG4gIFtcIkRST05FXCJdLFxuICBbXCJEUk9ORVwiLCBcIkRST05FX0JVSUxEX0VWRU5UXCJdLFxuICBbXCJEU0FSSVwiXSxcbiAgW1wiR0lUSFVCX0FDVElPTlNcIl0sXG4gIFtcIkdJVExBQlwiLCBcIkdJVExBQl9DSVwiXSxcbiAgW1wiR0lUTEFCXCIsIFwiQ0lfTUVSR0VfUkVRVUVTVF9JRFwiXSxcbiAgW1wiR09DRFwiLCBcIkdPX1BJUEVMSU5FX0xBQkVMXCJdLFxuICBbXCJMQVlFUkNJXCJdLFxuICBbXCJIVURTT05cIiwgXCJIVURTT05fVVJMXCJdLFxuICBbXCJKRU5LSU5TXCIsIFwiSkVOS0lOU19VUkxcIl0sXG4gIFtcIk1BR05VTVwiXSxcbiAgW1wiTkVUTElGWVwiXSxcbiAgW1wiTkVUTElGWVwiLCBcIk5FVExJRllfTE9DQUxcIiwgeyBjaTogZmFsc2UgfV0sXG4gIFtcIk5FVkVSQ09ERVwiXSxcbiAgW1wiUkVOREVSXCJdLFxuICBbXCJTQUlMXCIsIFwiU0FJTENJXCJdLFxuICBbXCJTRU1BUEhPUkVcIl0sXG4gIFtcIlNDUkVXRFJJVkVSXCJdLFxuICBbXCJTSElQUEFCTEVcIl0sXG4gIFtcIlNPTEFOT1wiLCBcIlRERElVTVwiXSxcbiAgW1wiU1RSSURFUlwiXSxcbiAgW1wiVEVBTUNJVFlcIiwgXCJURUFNQ0lUWV9WRVJTSU9OXCJdLFxuICBbXCJUUkFWSVNcIl0sXG4gIFtcIlZFUkNFTFwiLCBcIk5PV19CVUlMREVSXCJdLFxuICBbXCJBUFBDRU5URVJcIiwgXCJBUFBDRU5URVJfQlVJTERfSURcIl0sXG4gIFtcIkNPREVTQU5EQk9YXCIsIFwiQ09ERVNBTkRCT1hfU1NFXCIsIHsgY2k6IGZhbHNlIH1dLFxuICBbXCJTVEFDS0JMSVRaXCJdLFxuICBbXCJTVE9STUtJVFwiXSxcbiAgW1wiQ0xFQVZSXCJdXG5dO1xuZnVuY3Rpb24gZGV0ZWN0UHJvdmlkZXIoZW52KSB7XG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgcHJvdmlkZXJzKSB7XG4gICAgY29uc3QgZW52TmFtZSA9IHByb3ZpZGVyWzFdIHx8IHByb3ZpZGVyWzBdO1xuICAgIGlmIChlbnZbZW52TmFtZV0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHByb3ZpZGVyWzBdLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIC4uLnByb3ZpZGVyWzJdXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBpZiAoZW52LlNIRUxMICYmIGVudi5TSEVMTCA9PT0gXCIvYmluL2pzaFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IFwic3RhY2tibGl0elwiLFxuICAgICAgY2k6IGZhbHNlXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiXCIsXG4gICAgY2k6IGZhbHNlXG4gIH07XG59XG5cbmNvbnN0IHByb2Nlc3NTaGltID0gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzIDoge307XG5jb25zdCBlbnZTaGltID0gcHJvY2Vzc1NoaW0uZW52IHx8IHt9O1xuY29uc3QgcHJvdmlkZXJJbmZvID0gZGV0ZWN0UHJvdmlkZXIoZW52U2hpbSk7XG5jb25zdCBub2RlRU5WID0gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgXCJcIjtcbnByb2Nlc3NTaGltLnBsYXRmb3JtO1xucHJvdmlkZXJJbmZvLm5hbWU7XG5jb25zdCBpc0NJID0gdG9Cb29sZWFuKGVudlNoaW0uQ0kpIHx8IHByb3ZpZGVySW5mby5jaSAhPT0gZmFsc2U7XG5jb25zdCBoYXNUVFkgPSB0b0Jvb2xlYW4ocHJvY2Vzc1NoaW0uc3Rkb3V0ICYmIHByb2Nlc3NTaGltLnN0ZG91dC5pc1RUWSk7XG5jb25zdCBpc0RlYnVnID0gdG9Cb29sZWFuKGVudlNoaW0uREVCVUcpO1xuY29uc3QgaXNUZXN0ID0gbm9kZUVOViA9PT0gXCJ0ZXN0XCIgfHwgdG9Cb29sZWFuKGVudlNoaW0uVEVTVCk7XG50b0Jvb2xlYW4oZW52U2hpbS5NSU5JTUFMKSB8fCBpc0NJIHx8IGlzVGVzdCB8fCAhaGFzVFRZO1xuZnVuY3Rpb24gdG9Cb29sZWFuKHZhbCkge1xuICByZXR1cm4gdmFsID8gdmFsICE9PSBcImZhbHNlXCIgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYW5zaVJlZ2V4KHtvbmx5Rmlyc3QgPSBmYWxzZX0gPSB7fSkge1xuXHRjb25zdCBwYXR0ZXJuID0gW1xuXHQgICAgJ1tcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNyknLFxuXHRcdCcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKSdcblx0XS5qb2luKCd8Jyk7XG5cblx0cmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgb25seUZpcnN0ID8gdW5kZWZpbmVkIDogJ2cnKTtcbn1cblxuY29uc3QgcmVnZXggPSBhbnNpUmVnZXgoKTtcblxuZnVuY3Rpb24gc3RyaXBBbnNpKHN0cmluZykge1xuXHRpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIFxcYHN0cmluZ1xcYCwgZ290IFxcYCR7dHlwZW9mIHN0cmluZ31cXGBgKTtcblx0fVxuXG5cdC8vIEV2ZW4gdGhvdWdoIHRoZSByZWdleCBpcyBnbG9iYWwsIHdlIGRvbid0IG5lZWQgdG8gcmVzZXQgdGhlIGAubGFzdEluZGV4YFxuXHQvLyBiZWNhdXNlIHVubGlrZSBgLmV4ZWMoKWAgYW5kIGAudGVzdCgpYCwgYC5yZXBsYWNlKClgIGRvZXMgaXQgYXV0b21hdGljYWxseVxuXHQvLyBhbmQgZG9pbmcgaXQgbWFudWFsbHkgaGFzIGEgcGVyZm9ybWFuY2UgcGVuYWx0eS5cblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlZ2V4LCAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzICh4KSB7XG5cdHJldHVybiB4ICYmIHguX19lc01vZHVsZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeCwgJ2RlZmF1bHQnKSA/IHhbJ2RlZmF1bHQnXSA6IHg7XG59XG5cbnZhciBlYXN0YXNpYW53aWR0aCA9IHtleHBvcnRzOiB7fX07XG5cbihmdW5jdGlvbiAobW9kdWxlKSB7XG5cdHZhciBlYXcgPSB7fTtcblxuXHR7XG5cdCAgbW9kdWxlLmV4cG9ydHMgPSBlYXc7XG5cdH1cblxuXHRlYXcuZWFzdEFzaWFuV2lkdGggPSBmdW5jdGlvbihjaGFyYWN0ZXIpIHtcblx0ICB2YXIgeCA9IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApO1xuXHQgIHZhciB5ID0gKGNoYXJhY3Rlci5sZW5ndGggPT0gMikgPyBjaGFyYWN0ZXIuY2hhckNvZGVBdCgxKSA6IDA7XG5cdCAgdmFyIGNvZGVQb2ludCA9IHg7XG5cdCAgaWYgKCgweEQ4MDAgPD0geCAmJiB4IDw9IDB4REJGRikgJiYgKDB4REMwMCA8PSB5ICYmIHkgPD0gMHhERkZGKSkge1xuXHQgICAgeCAmPSAweDNGRjtcblx0ICAgIHkgJj0gMHgzRkY7XG5cdCAgICBjb2RlUG9pbnQgPSAoeCA8PCAxMCkgfCB5O1xuXHQgICAgY29kZVBvaW50ICs9IDB4MTAwMDA7XG5cdCAgfVxuXG5cdCAgaWYgKCgweDMwMDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHhGRjAxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRjYwKSB8fFxuXHQgICAgICAoMHhGRkUwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkU2KSkge1xuXHQgICAgcmV0dXJuICdGJztcblx0ICB9XG5cdCAgaWYgKCgweDIwQTkgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHhGRjYxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkJFKSB8fFxuXHQgICAgICAoMHhGRkMyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkM3KSB8fFxuXHQgICAgICAoMHhGRkNBIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkNGKSB8fFxuXHQgICAgICAoMHhGRkQyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkQ3KSB8fFxuXHQgICAgICAoMHhGRkRBIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkRDKSB8fFxuXHQgICAgICAoMHhGRkU4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkVFKSkge1xuXHQgICAgcmV0dXJuICdIJztcblx0ICB9XG5cdCAgaWYgKCgweDExMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExNUYpIHx8XG5cdCAgICAgICgweDExQTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExQTcpIHx8XG5cdCAgICAgICgweDExRkEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExRkYpIHx8XG5cdCAgICAgICgweDIzMjkgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIzMkEpIHx8XG5cdCAgICAgICgweDJFODAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJFOTkpIHx8XG5cdCAgICAgICgweDJFOUIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJFRjMpIHx8XG5cdCAgICAgICgweDJGMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJGRDUpIHx8XG5cdCAgICAgICgweDJGRjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJGRkIpIHx8XG5cdCAgICAgICgweDMwMDEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwM0UpIHx8XG5cdCAgICAgICgweDMwNDEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwOTYpIHx8XG5cdCAgICAgICgweDMwOTkgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwRkYpIHx8XG5cdCAgICAgICgweDMxMDUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxMkQpIHx8XG5cdCAgICAgICgweDMxMzEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxOEUpIHx8XG5cdCAgICAgICgweDMxOTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxQkEpIHx8XG5cdCAgICAgICgweDMxQzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxRTMpIHx8XG5cdCAgICAgICgweDMxRjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyMUUpIHx8XG5cdCAgICAgICgweDMyMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyNDcpIHx8XG5cdCAgICAgICgweDMyNTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyRkUpIHx8XG5cdCAgICAgICgweDMzMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDREQkYpIHx8XG5cdCAgICAgICgweDRFMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE0OEMpIHx8XG5cdCAgICAgICgweEE0OTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE0QzYpIHx8XG5cdCAgICAgICgweEE5NjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE5N0MpIHx8XG5cdCAgICAgICgweEFDMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3QTMpIHx8XG5cdCAgICAgICgweEQ3QjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3QzYpIHx8XG5cdCAgICAgICgweEQ3Q0IgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3RkIpIHx8XG5cdCAgICAgICgweEY5MDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZBRkYpIHx8XG5cdCAgICAgICgweEZFMTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFMTkpIHx8XG5cdCAgICAgICgweEZFMzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNTIpIHx8XG5cdCAgICAgICgweEZFNTQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNjYpIHx8XG5cdCAgICAgICgweEZFNjggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNkIpIHx8XG5cdCAgICAgICgweDFCMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxQjAwMSkgfHxcblx0ICAgICAgKDB4MUYyMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMjAyKSB8fFxuXHQgICAgICAoMHgxRjIxMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MUYyM0EpIHx8XG5cdCAgICAgICgweDFGMjQwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRjI0OCkgfHxcblx0ICAgICAgKDB4MUYyNTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMjUxKSB8fFxuXHQgICAgICAoMHgyMDAwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MkY3M0YpIHx8XG5cdCAgICAgICgweDJCNzQwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyRkZGRCkgfHxcblx0ICAgICAgKDB4MzAwMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDNGRkZEKSkge1xuXHQgICAgcmV0dXJuICdXJztcblx0ICB9XG5cdCAgaWYgKCgweDAwMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwN0UpIHx8XG5cdCAgICAgICgweDAwQTIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwQTMpIHx8XG5cdCAgICAgICgweDAwQTUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwQTYpIHx8XG5cdCAgICAgICgweDAwQUMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEFGID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjdFNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjdFRCkgfHxcblx0ICAgICAgKDB4Mjk4NSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4Mjk4NikpIHtcblx0ICAgIHJldHVybiAnTmEnO1xuXHQgIH1cblx0ICBpZiAoKDB4MDBBMSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwQTQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEE3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEE4KSB8fFxuXHQgICAgICAoMHgwMEFBID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDBBRCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBBRSkgfHxcblx0ICAgICAgKDB4MDBCMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCNCkgfHxcblx0ICAgICAgKDB4MDBCNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCQSkgfHxcblx0ICAgICAgKDB4MDBCQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCRikgfHxcblx0ICAgICAgKDB4MDBDNiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEQ3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEQ4KSB8fFxuXHQgICAgICAoMHgwMERFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEUxKSB8fFxuXHQgICAgICAoMHgwMEU2ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDBFOCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBFQSkgfHxcblx0ICAgICAgKDB4MDBFQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBFRCkgfHxcblx0ICAgICAgKDB4MDBGMCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwRjIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwRjMpIHx8XG5cdCAgICAgICgweDAwRjcgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwRkEpIHx8XG5cdCAgICAgICgweDAwRkMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEZFID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDEwMSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxMTEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTEzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDExQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxMjYgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAxMjcpIHx8XG5cdCAgICAgICgweDAxMkIgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTMxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTMzKSB8fFxuXHQgICAgICAoMHgwMTM4ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDEzRiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDE0MikgfHxcblx0ICAgICAgKDB4MDE0NCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxNDggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAxNEIpIHx8XG5cdCAgICAgICgweDAxNEQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTUyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTUzKSB8fFxuXHQgICAgICAoMHgwMTY2IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTY3KSB8fFxuXHQgICAgICAoMHgwMTZCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFDRSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMUQyID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFENCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxRDYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMUQ4ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFEQSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxREMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMjUxID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDI2MSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAyQzQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMkM3ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDJDOSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDJDQikgfHxcblx0ICAgICAgKDB4MDJDRCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAyRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMkQ4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMkRCKSB8fFxuXHQgICAgICAoMHgwMkREID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDJERiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAzMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzNkYpIHx8XG5cdCAgICAgICgweDAzOTEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQTEpIHx8XG5cdCAgICAgICgweDAzQTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQTkpIHx8XG5cdCAgICAgICgweDAzQjEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQzEpIHx8XG5cdCAgICAgICgweDAzQzMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQzkpIHx8XG5cdCAgICAgICgweDA0MDEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwNDEwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwNDRGKSB8fFxuXHQgICAgICAoMHgwNDUxID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjAxMCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwMTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMTYpIHx8XG5cdCAgICAgICgweDIwMTggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMTkpIHx8XG5cdCAgICAgICgweDIwMUMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMUQpIHx8XG5cdCAgICAgICgweDIwMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMjIpIHx8XG5cdCAgICAgICgweDIwMjQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMjcpIHx8XG5cdCAgICAgICgweDIwMzAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMDMyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMDMzKSB8fFxuXHQgICAgICAoMHgyMDM1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjAzQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwM0UgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMDc0ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjA3RiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwODEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwODQpIHx8XG5cdCAgICAgICgweDIwQUMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTAzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjEwNSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxMDkgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTEzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjExNiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxMjEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxMjIpIHx8XG5cdCAgICAgICgweDIxMjYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTJCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjE1MyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE1NCkgfHxcblx0ICAgICAgKDB4MjE1QiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE1RSkgfHxcblx0ICAgICAgKDB4MjE2MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE2QikgfHxcblx0ICAgICAgKDB4MjE3MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE3OSkgfHxcblx0ICAgICAgKDB4MjE4OSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxOTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxOTkpIHx8XG5cdCAgICAgICgweDIxQjggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxQjkpIHx8XG5cdCAgICAgICgweDIxRDIgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMUQ0ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjFFNyA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjAyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMjAzKSB8fFxuXHQgICAgICAoMHgyMjA3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMjA4KSB8fFxuXHQgICAgICAoMHgyMjBCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIwRiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMTEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjE1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIxQSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMUQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyMjApIHx8XG5cdCAgICAgICgweDIyMjMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjI1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIyNyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjIyQykgfHxcblx0ICAgICAgKDB4MjIyRSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMzQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyMzcpIHx8XG5cdCAgICAgICgweDIyM0MgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyM0QpIHx8XG5cdCAgICAgICgweDIyNDggPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjRDID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjI1MiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyNjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNjEpIHx8XG5cdCAgICAgICgweDIyNjQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNjcpIHx8XG5cdCAgICAgICgweDIyNkEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNkIpIHx8XG5cdCAgICAgICgweDIyNkUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNkYpIHx8XG5cdCAgICAgICgweDIyODIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyODMpIHx8XG5cdCAgICAgICgweDIyODYgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyODcpIHx8XG5cdCAgICAgICgweDIyOTUgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjk5ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjJBNSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyQkYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMzEyID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjQ2MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjRFOSkgfHxcblx0ICAgICAgKDB4MjRFQiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU0QikgfHxcblx0ICAgICAgKDB4MjU1MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU3MykgfHxcblx0ICAgICAgKDB4MjU4MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU4RikgfHxcblx0ICAgICAgKDB4MjU5MiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU5NSkgfHxcblx0ICAgICAgKDB4MjVBMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVBMSkgfHxcblx0ICAgICAgKDB4MjVBMyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVBOSkgfHxcblx0ICAgICAgKDB4MjVCMiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCMykgfHxcblx0ICAgICAgKDB4MjVCNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCNykgfHxcblx0ICAgICAgKDB4MjVCQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCRCkgfHxcblx0ICAgICAgKDB4MjVDMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVDMSkgfHxcblx0ICAgICAgKDB4MjVDNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVDOCkgfHxcblx0ICAgICAgKDB4MjVDQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI1Q0UgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI1RDEpIHx8XG5cdCAgICAgICgweDI1RTIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI1RTUpIHx8XG5cdCAgICAgICgweDI1RUYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjA1IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNjA2KSB8fFxuXHQgICAgICAoMHgyNjA5ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjYwRSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjYwRikgfHxcblx0ICAgICAgKDB4MjYxNCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjYxNSkgfHxcblx0ICAgICAgKDB4MjYxQyA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI2MUUgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjQwID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjY0MiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI2NjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NjEpIHx8XG5cdCAgICAgICgweDI2NjMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NjUpIHx8XG5cdCAgICAgICgweDI2NjcgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NkEpIHx8XG5cdCAgICAgICgweDI2NkMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NkQpIHx8XG5cdCAgICAgICgweDI2NkYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjlFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNjlGKSB8fFxuXHQgICAgICAoMHgyNkJFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkJGKSB8fFxuXHQgICAgICAoMHgyNkM0IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkNEKSB8fFxuXHQgICAgICAoMHgyNkNGIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkUxKSB8fFxuXHQgICAgICAoMHgyNkUzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjZFOCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjZGRikgfHxcblx0ICAgICAgKDB4MjczRCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI3NTcgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNzc2IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNzdGKSB8fFxuXHQgICAgICAoMHgyQjU1IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyQjU5KSB8fFxuXHQgICAgICAoMHgzMjQ4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgzMjRGKSB8fFxuXHQgICAgICAoMHhFMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGOEZGKSB8fFxuXHQgICAgICAoMHhGRTAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRTBGKSB8fFxuXHQgICAgICAoMHhGRkZEID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MUYxMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMTBBKSB8fFxuXHQgICAgICAoMHgxRjExMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MUYxMkQpIHx8XG5cdCAgICAgICgweDFGMTMwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRjE2OSkgfHxcblx0ICAgICAgKDB4MUYxNzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMTlBKSB8fFxuXHQgICAgICAoMHhFMDEwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4RTAxRUYpIHx8XG5cdCAgICAgICgweEYwMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkZGRCkgfHxcblx0ICAgICAgKDB4MTAwMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxMEZGRkQpKSB7XG5cdCAgICByZXR1cm4gJ0EnO1xuXHQgIH1cblxuXHQgIHJldHVybiAnTic7XG5cdH07XG5cblx0ZWF3LmNoYXJhY3Rlckxlbmd0aCA9IGZ1bmN0aW9uKGNoYXJhY3Rlcikge1xuXHQgIHZhciBjb2RlID0gdGhpcy5lYXN0QXNpYW5XaWR0aChjaGFyYWN0ZXIpO1xuXHQgIGlmIChjb2RlID09ICdGJyB8fCBjb2RlID09ICdXJyB8fCBjb2RlID09ICdBJykge1xuXHQgICAgcmV0dXJuIDI7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiAxO1xuXHQgIH1cblx0fTtcblxuXHQvLyBTcGxpdCBhIHN0cmluZyBjb25zaWRlcmluZyBzdXJyb2dhdGUtcGFpcnMuXG5cdGZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG5cdCAgcmV0dXJuIHN0cmluZy5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZykgfHwgW107XG5cdH1cblxuXHRlYXcubGVuZ3RoID0gZnVuY3Rpb24oc3RyaW5nKSB7XG5cdCAgdmFyIGNoYXJhY3RlcnMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG5cdCAgdmFyIGxlbiA9IDA7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICBsZW4gPSBsZW4gKyB0aGlzLmNoYXJhY3Rlckxlbmd0aChjaGFyYWN0ZXJzW2ldKTtcblx0ICB9XG5cdCAgcmV0dXJuIGxlbjtcblx0fTtcblxuXHRlYXcuc2xpY2UgPSBmdW5jdGlvbih0ZXh0LCBzdGFydCwgZW5kKSB7XG5cdCAgdGV4dExlbiA9IGVhdy5sZW5ndGgodGV4dCk7XG5cdCAgc3RhcnQgPSBzdGFydCA/IHN0YXJ0IDogMDtcblx0ICBlbmQgPSBlbmQgPyBlbmQgOiAxO1xuXHQgIGlmIChzdGFydCA8IDApIHtcblx0ICAgICAgc3RhcnQgPSB0ZXh0TGVuICsgc3RhcnQ7XG5cdCAgfVxuXHQgIGlmIChlbmQgPCAwKSB7XG5cdCAgICAgIGVuZCA9IHRleHRMZW4gKyBlbmQ7XG5cdCAgfVxuXHQgIHZhciByZXN1bHQgPSAnJztcblx0ICB2YXIgZWF3TGVuID0gMDtcblx0ICB2YXIgY2hhcnMgPSBzdHJpbmdUb0FycmF5KHRleHQpO1xuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBjaGFyID0gY2hhcnNbaV07XG5cdCAgICB2YXIgY2hhckxlbiA9IGVhdy5sZW5ndGgoY2hhcik7XG5cdCAgICBpZiAoZWF3TGVuID49IHN0YXJ0IC0gKGNoYXJMZW4gPT0gMiA/IDEgOiAwKSkge1xuXHQgICAgICAgIGlmIChlYXdMZW4gKyBjaGFyTGVuIDw9IGVuZCkge1xuXHQgICAgICAgICAgICByZXN1bHQgKz0gY2hhcjtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cdCAgICB9XG5cdCAgICBlYXdMZW4gKz0gY2hhckxlbjtcblx0ICB9XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTsgXG59IChlYXN0YXNpYW53aWR0aCkpO1xuXG52YXIgZWFzdGFzaWFud2lkdGhFeHBvcnRzID0gZWFzdGFzaWFud2lkdGguZXhwb3J0cztcbmNvbnN0IGVhc3RBc2lhbldpZHRoID0gLypAX19QVVJFX18qL2dldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGVhc3Rhc2lhbndpZHRoRXhwb3J0cyk7XG5cbmNvbnN0IGVtb2ppUmVnZXggPSAoKSA9PiB7XG5cdC8vIGh0dHBzOi8vbXRocy5iZS9lbW9qaVxuXHRyZXR1cm4gL1sjKjAtOV1cXHVGRTBGP1xcdTIwRTN8W1xceEE5XFx4QUVcXHUyMDNDXFx1MjA0OVxcdTIxMjJcXHUyMTM5XFx1MjE5NC1cXHUyMTk5XFx1MjFBOVxcdTIxQUFcXHUyMzFBXFx1MjMxQlxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjVGRVxcdTI2MDAtXFx1MjYwNFxcdTI2MEVcXHUyNjExXFx1MjYxNFxcdTI2MTVcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5MlxcdTI2OTQtXFx1MjY5N1xcdTI2OTlcXHUyNjlCXFx1MjY5Q1xcdTI2QTBcXHUyNkE3XFx1MjZBQVxcdTI2QjBcXHUyNkIxXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDOFxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RTlcXHUyNkYwLVxcdTI2RjVcXHUyNkY3XFx1MjZGOFxcdTI2RkFcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc1N1xcdTI3NjNcXHUyN0ExXFx1MjkzNFxcdTI5MzVcXHUyQjA1LVxcdTJCMDdcXHUyQjFCXFx1MkIxQ1xcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XVxcdUZFMEY/fFtcXHUyNjFEXFx1MjcwQ1xcdTI3MERdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1MjcwQVxcdTI3MEJdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI2OTNcXHUyNkExXFx1MjZBQlxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkZEXFx1MjcwNVxcdTI3MjhcXHUyNzRDXFx1Mjc0RVxcdTI3NTMtXFx1Mjc1NVxcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkI1MF18XFx1MjZGOSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1Mjc2NFxcdUZFMEY/KD86XFx1MjAwRCg/OlxcdUQ4M0RcXHVERDI1fFxcdUQ4M0VcXHVERTc5KSk/fFxcdUQ4M0MoPzpbXFx1REMwNFxcdURENzBcXHVERDcxXFx1REQ3RVxcdUREN0ZcXHVERTAyXFx1REUzN1xcdURGMjFcXHVERjI0LVxcdURGMkNcXHVERjM2XFx1REY3RFxcdURGOTZcXHVERjk3XFx1REY5OS1cXHVERjlCXFx1REY5RVxcdURGOUZcXHVERkNEXFx1REZDRVxcdURGRDQtXFx1REZERlxcdURGRjVcXHVERkY3XVxcdUZFMEY/fFtcXHVERjg1XFx1REZDMlxcdURGQzddKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURGQzNcXHVERkM0XFx1REZDQV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REZDQlxcdURGQ0NdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY4NFxcdURGODYtXFx1REY5M1xcdURGQTAtXFx1REZDMVxcdURGQzVcXHVERkM2XFx1REZDOFxcdURGQzlcXHVERkNGLVxcdURGRDNcXHVERkUwLVxcdURGRjBcXHVERkY4LVxcdURGRkZdfFxcdURERTZcXHVEODNDW1xcdURERTgtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGMlxcdURERjRcXHVEREY2LVxcdURERkFcXHVEREZDXFx1RERGRFxcdURERkZdfFxcdURERTdcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVGXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERFOFxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl18XFx1RERFOVxcdUQ4M0NbXFx1RERFQVxcdURERUNcXHVEREVGXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGRl18XFx1RERFQVxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERURcXHVEREY3LVxcdURERkFdfFxcdURERUJcXHVEODNDW1xcdURERUUtXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGN118XFx1RERFQ1xcdUQ4M0NbXFx1RERFNlxcdURERTdcXHVEREU5LVxcdURERUVcXHVEREYxLVxcdURERjNcXHVEREY1LVxcdURERkFcXHVEREZDXFx1RERGRV18XFx1RERFRFxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXXxcXHVEREVFXFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldfFxcdURERUZcXHVEODNDW1xcdURERUFcXHVEREYyXFx1RERGNFxcdURERjVdfFxcdURERjBcXHVEODNDW1xcdURERUFcXHVEREVDLVxcdURERUVcXHVEREYyXFx1RERGM1xcdURERjVcXHVEREY3XFx1RERGQ1xcdURERkVcXHVEREZGXXxcXHVEREYxXFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdfFxcdURERjJcXHVEODNDW1xcdURERTZcXHVEREU4LVxcdURERURcXHVEREYwLVxcdURERkZdfFxcdURERjNcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQS1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREY0XFx1RERGNVxcdURERjdcXHVEREZBXFx1RERGRl18XFx1RERGNFxcdUQ4M0NcXHVEREYyfFxcdURERjVcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV18XFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdURERjdcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXXxcXHVEREY4XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXXxcXHVEREY5XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl18XFx1RERGQVxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl18XFx1RERGQlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERUVcXHVEREYzXFx1RERGQV18XFx1RERGQ1xcdUQ4M0NbXFx1RERFQlxcdURERjhdfFxcdURERkRcXHVEODNDXFx1RERGMHxcXHVEREZFXFx1RDgzQ1tcXHVEREVBXFx1RERGOV18XFx1RERGRlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXXxcXHVERkYzXFx1RkUwRj8oPzpcXHUyMDBEKD86XFx1MjZBN1xcdUZFMEY/fFxcdUQ4M0NcXHVERjA4KSk/fFxcdURGRjQoPzpcXHUyMDBEXFx1MjYyMFxcdUZFMEY/fFxcdURCNDBcXHVEQzY3XFx1REI0MFxcdURDNjJcXHVEQjQwKD86XFx1REM2NVxcdURCNDBcXHVEQzZFXFx1REI0MFxcdURDNjd8XFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REM3N1xcdURCNDBcXHVEQzZDXFx1REI0MFxcdURDNzMpXFx1REI0MFxcdURDN0YpPyl8XFx1RDgzRCg/OltcXHVEQzA4XFx1REMyNl0oPzpcXHUyMDBEXFx1MkIxQik/fFtcXHVEQzNGXFx1RENGRFxcdURENDlcXHVERDRBXFx1REQ2RlxcdURENzBcXHVERDczXFx1REQ3Ni1cXHVERDc5XFx1REQ4N1xcdUREOEEtXFx1REQ4RFxcdUREQTVcXHVEREE4XFx1RERCMVxcdUREQjJcXHVEREJDXFx1RERDMi1cXHVEREM0XFx1REREMS1cXHVEREQzXFx1REREQy1cXHVERERFXFx1RERFMVxcdURERTNcXHVEREU4XFx1RERFRlxcdURERjNcXHVEREZBXFx1REVDQlxcdURFQ0QtXFx1REVDRlxcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUYwXFx1REVGM11cXHVGRTBGP3xbXFx1REM0MlxcdURDNDNcXHVEQzQ2LVxcdURDNTBcXHVEQzY2XFx1REM2N1xcdURDNkItXFx1REM2RFxcdURDNzJcXHVEQzc0LVxcdURDNzZcXHVEQzc4XFx1REM3Q1xcdURDODNcXHVEQzg1XFx1REM4RlxcdURDOTFcXHVEQ0FBXFx1REQ3QVxcdUREOTVcXHVERDk2XFx1REU0Q1xcdURFNEZcXHVERUMwXFx1REVDQ10oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQ3NFxcdUREOTBdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REMwMC1cXHVEQzA3XFx1REMwOS1cXHVEQzE0XFx1REMxNi1cXHVEQzI1XFx1REMyNy1cXHVEQzNBXFx1REMzQy1cXHVEQzNFXFx1REM0MFxcdURDNDRcXHVEQzQ1XFx1REM1MS1cXHVEQzY1XFx1REM2QVxcdURDNzktXFx1REM3QlxcdURDN0QtXFx1REM4MFxcdURDODRcXHVEQzg4LVxcdURDOEVcXHVEQzkwXFx1REM5Mi1cXHVEQ0E5XFx1RENBQi1cXHVEQ0ZDXFx1RENGRi1cXHVERDNEXFx1REQ0Qi1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1RERBNFxcdURERkItXFx1REUyRFxcdURFMkYtXFx1REUzNFxcdURFMzctXFx1REU0NFxcdURFNDgtXFx1REU0QVxcdURFODAtXFx1REVBMlxcdURFQTQtXFx1REVCM1xcdURFQjctXFx1REVCRlxcdURFQzEtXFx1REVDNVxcdURFRDAtXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFREMtXFx1REVERlxcdURFRUJcXHVERUVDXFx1REVGNC1cXHVERUZDXFx1REZFMC1cXHVERkVCXFx1REZGMF18XFx1REMxNSg/OlxcdTIwMERcXHVEODNFXFx1RERCQSk/fFxcdURDM0IoPzpcXHUyMDBEXFx1Mjc0NFxcdUZFMEY/KT98XFx1REM0MVxcdUZFMEY/KD86XFx1MjAwRFxcdUQ4M0RcXHVEREU4XFx1RkUwRj8pP3xcXHVEQzY4KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjh8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV1cXHUyMDBEXFx1RDgzRCg/OlxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKSkpP3xcXHVERkZFKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRV0pKSk/KSk/fFxcdURDNjkoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/W1xcdURDNjhcXHVEQzY5XXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEKD86W1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pP3xcXHVEQzY5XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KSl8XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKSkpPykpP3xcXHVEQzZGKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdURENzUoPzpcXHVGRTBGfFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdURFMkUoPzpcXHUyMDBEXFx1RDgzRFxcdURDQTgpP3xcXHVERTM1KD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCKT98XFx1REUzNig/OlxcdTIwMERcXHVEODNDXFx1REYyQlxcdUZFMEY/KT8pfFxcdUQ4M0UoPzpbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDMwLVxcdUREMzRcXHVERDM2XFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCQlxcdURERDJcXHVEREQzXFx1RERENVxcdURFQzMtXFx1REVDNVxcdURFRjBcXHVERUYyLVxcdURFRjhdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdUREREVcXHVERERGXSg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDIwLVxcdUREMjVcXHVERDI3LVxcdUREMkZcXHVERDNBXFx1REQzRi1cXHVERDQ1XFx1REQ0Ny1cXHVERDc2XFx1REQ3OC1cXHVEREI0XFx1RERCN1xcdUREQkFcXHVEREJDLVxcdUREQ0NcXHVEREQwXFx1RERFMC1cXHVEREZGXFx1REU3MC1cXHVERTdDXFx1REU4MC1cXHVERTg4XFx1REU5MC1cXHVERUJEXFx1REVCRi1cXHVERUMyXFx1REVDRS1cXHVERURCXFx1REVFMC1cXHVERUU4XXxcXHVERDNDKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGP3xcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xcXHVEREQxKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxKSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkMoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkYoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/KSk/fFxcdURFRjEoPzpcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSk/fFxcdURGRkMoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKT98XFx1REZGRCg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pP3xcXHVERkZFKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSk/fFxcdURGRkYoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkItXFx1REZGRV0pPykpPykvZztcbn07XG5cbmZ1bmN0aW9uIHN0cmluZ1dpZHRoJDEoc3RyaW5nLCBvcHRpb25zKSB7XG5cdGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJyB8fCBzdHJpbmcubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRvcHRpb25zID0ge1xuXHRcdGFtYmlndW91c0lzTmFycm93OiB0cnVlLFxuXHRcdGNvdW50QW5zaUVzY2FwZUNvZGVzOiBmYWxzZSxcblx0XHQuLi5vcHRpb25zLFxuXHR9O1xuXG5cdGlmICghb3B0aW9ucy5jb3VudEFuc2lFc2NhcGVDb2Rlcykge1xuXHRcdHN0cmluZyA9IHN0cmlwQW5zaShzdHJpbmcpO1xuXHR9XG5cblx0aWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGNvbnN0IGFtYmlndW91c0NoYXJhY3RlcldpZHRoID0gb3B0aW9ucy5hbWJpZ3VvdXNJc05hcnJvdyA/IDEgOiAyO1xuXHRsZXQgd2lkdGggPSAwO1xuXG5cdGZvciAoY29uc3Qge3NlZ21lbnQ6IGNoYXJhY3Rlcn0gb2YgbmV3IEludGwuU2VnbWVudGVyKCkuc2VnbWVudChzdHJpbmcpKSB7XG5cdFx0Y29uc3QgY29kZVBvaW50ID0gY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApO1xuXG5cdFx0Ly8gSWdub3JlIGNvbnRyb2wgY2hhcmFjdGVyc1xuXHRcdGlmIChjb2RlUG9pbnQgPD0gMHgxRiB8fCAoY29kZVBvaW50ID49IDB4N0YgJiYgY29kZVBvaW50IDw9IDB4OUYpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBJZ25vcmUgY29tYmluaW5nIGNoYXJhY3RlcnNcblx0XHRpZiAoY29kZVBvaW50ID49IDB4M18wMCAmJiBjb2RlUG9pbnQgPD0gMHgzXzZGKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRpZiAoZW1vamlSZWdleCgpLnRlc3QoY2hhcmFjdGVyKSkge1xuXHRcdFx0d2lkdGggKz0gMjtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNvZGUgPSBlYXN0QXNpYW5XaWR0aC5lYXN0QXNpYW5XaWR0aChjaGFyYWN0ZXIpO1xuXHRcdHN3aXRjaCAoY29kZSkge1xuXHRcdFx0Y2FzZSAnRic6XG5cdFx0XHRjYXNlICdXJzoge1xuXHRcdFx0XHR3aWR0aCArPSAyO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Y2FzZSAnQSc6IHtcblx0XHRcdFx0d2lkdGggKz0gYW1iaWd1b3VzQ2hhcmFjdGVyV2lkdGg7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdHdpZHRoICs9IDE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHdpZHRoO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVTdXBwb3J0ZWQoKSB7XG5cdGlmIChwcm9jZXNzJDEucGxhdGZvcm0gIT09ICd3aW4zMicpIHtcblx0XHRyZXR1cm4gcHJvY2VzcyQxLmVudi5URVJNICE9PSAnbGludXgnOyAvLyBMaW51eCBjb25zb2xlIChrZXJuZWwpXG5cdH1cblxuXHRyZXR1cm4gQm9vbGVhbihwcm9jZXNzJDEuZW52LkNJKVxuXHRcdHx8IEJvb2xlYW4ocHJvY2VzcyQxLmVudi5XVF9TRVNTSU9OKSAvLyBXaW5kb3dzIFRlcm1pbmFsXG5cdFx0fHwgQm9vbGVhbihwcm9jZXNzJDEuZW52LlRFUk1JTlVTX1NVQkxJTUUpIC8vIFRlcm1pbnVzICg8MC4yLjI3KVxuXHRcdHx8IHByb2Nlc3MkMS5lbnYuQ29uRW11VGFzayA9PT0gJ3tjbWQ6OkNtZGVyfScgLy8gQ29uRW11IGFuZCBjbWRlclxuXHRcdHx8IHByb2Nlc3MkMS5lbnYuVEVSTV9QUk9HUkFNID09PSAnVGVybWludXMtU3VibGltZSdcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk1fUFJPR1JBTSA9PT0gJ3ZzY29kZSdcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk0gPT09ICd4dGVybS0yNTZjb2xvcidcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk0gPT09ICdhbGFjcml0dHknXG5cdFx0fHwgcHJvY2VzcyQxLmVudi5URVJNSU5BTF9FTVVMQVRPUiA9PT0gJ0pldEJyYWlucy1KZWRpVGVybSc7XG59XG5cbmNvbnN0IFRZUEVfQ09MT1JfTUFQID0ge1xuICBpbmZvOiBcImN5YW5cIixcbiAgZmFpbDogXCJyZWRcIixcbiAgc3VjY2VzczogXCJncmVlblwiLFxuICByZWFkeTogXCJncmVlblwiLFxuICBzdGFydDogXCJtYWdlbnRhXCJcbn07XG5jb25zdCBMRVZFTF9DT0xPUl9NQVAgPSB7XG4gIDA6IFwicmVkXCIsXG4gIDE6IFwieWVsbG93XCJcbn07XG5jb25zdCB1bmljb2RlID0gaXNVbmljb2RlU3VwcG9ydGVkKCk7XG5jb25zdCBzID0gKGMsIGZhbGxiYWNrKSA9PiB1bmljb2RlID8gYyA6IGZhbGxiYWNrO1xuY29uc3QgVFlQRV9JQ09OUyA9IHtcbiAgZXJyb3I6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIGZhdGFsOiBzKFwiXFx1MjcxNlwiLCBcIlxceEQ3XCIpLFxuICByZWFkeTogcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpLFxuICB3YXJuOiBzKFwiXFx1MjZBMFwiLCBcIlxcdTIwM0NcIiksXG4gIGluZm86IHMoXCJcXHUyMTM5XCIsIFwiaVwiKSxcbiAgc3VjY2VzczogcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpLFxuICBkZWJ1ZzogcyhcIlxcdTI2OTlcIiwgXCJEXCIpLFxuICB0cmFjZTogcyhcIlxcdTIxOTJcIiwgXCJcXHUyMTkyXCIpLFxuICBmYWlsOiBzKFwiXFx1MjcxNlwiLCBcIlxceEQ3XCIpLFxuICBzdGFydDogcyhcIlxcdTI1RDBcIiwgXCJvXCIpLFxuICBsb2c6IFwiXCJcbn07XG5mdW5jdGlvbiBzdHJpbmdXaWR0aChzdHIpIHtcbiAgaWYgKCFJbnRsLlNlZ21lbnRlcikge1xuICAgIHJldHVybiBzdHJpcEFuc2kkMShzdHIpLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gc3RyaW5nV2lkdGgkMShzdHIpO1xufVxuY2xhc3MgRmFuY3lSZXBvcnRlciBleHRlbmRzIEJhc2ljUmVwb3J0ZXIge1xuICBmb3JtYXRTdGFjayhzdGFjaykge1xuICAgIHJldHVybiBcIlxcblwiICsgcGFyc2VTdGFjayhzdGFjaykubWFwKFxuICAgICAgKGxpbmUpID0+IFwiICBcIiArIGxpbmUucmVwbGFjZSgvXmF0ICsvLCAobSkgPT4gY29sb3JzLmdyYXkobSkpLnJlcGxhY2UoL1xcKCguKylcXCkvLCAoXywgbSkgPT4gYCgke2NvbG9ycy5jeWFuKG0pfSlgKVxuICAgICkuam9pbihcIlxcblwiKTtcbiAgfVxuICBmb3JtYXRUeXBlKGxvZ09iaiwgaXNCYWRnZSwgb3B0cykge1xuICAgIGNvbnN0IHR5cGVDb2xvciA9IFRZUEVfQ09MT1JfTUFQW2xvZ09iai50eXBlXSB8fCBMRVZFTF9DT0xPUl9NQVBbbG9nT2JqLmxldmVsXSB8fCBcImdyYXlcIjtcbiAgICBpZiAoaXNCYWRnZSkge1xuICAgICAgcmV0dXJuIGdldEJnQ29sb3IodHlwZUNvbG9yKShcbiAgICAgICAgY29sb3JzLmJsYWNrKGAgJHtsb2dPYmoudHlwZS50b1VwcGVyQ2FzZSgpfSBgKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgX3R5cGUgPSB0eXBlb2YgVFlQRV9JQ09OU1tsb2dPYmoudHlwZV0gPT09IFwic3RyaW5nXCIgPyBUWVBFX0lDT05TW2xvZ09iai50eXBlXSA6IGxvZ09iai5pY29uIHx8IGxvZ09iai50eXBlO1xuICAgIHJldHVybiBfdHlwZSA/IGdldENvbG9yKHR5cGVDb2xvcikoX3R5cGUpIDogXCJcIjtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgW21lc3NhZ2UsIC4uLmFkZGl0aW9uYWxdID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKS5zcGxpdChcbiAgICAgIFwiXFxuXCJcbiAgICApO1xuICAgIGlmIChsb2dPYmoudHlwZSA9PT0gXCJib3hcIikge1xuICAgICAgcmV0dXJuIGJveChcbiAgICAgICAgY2hhcmFjdGVyRm9ybWF0KFxuICAgICAgICAgIG1lc3NhZ2UgKyAoYWRkaXRpb25hbC5sZW5ndGggPiAwID8gXCJcXG5cIiArIGFkZGl0aW9uYWwuam9pbihcIlxcblwiKSA6IFwiXCIpXG4gICAgICAgICksXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogbG9nT2JqLnRpdGxlID8gY2hhcmFjdGVyRm9ybWF0KGxvZ09iai50aXRsZSkgOiB2b2lkIDAsXG4gICAgICAgICAgc3R5bGU6IGxvZ09iai5zdHlsZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gdGhpcy5mb3JtYXREYXRlKGxvZ09iai5kYXRlLCBvcHRzKTtcbiAgICBjb25zdCBjb2xvcmVkRGF0ZSA9IGRhdGUgJiYgY29sb3JzLmdyYXkoZGF0ZSk7XG4gICAgY29uc3QgaXNCYWRnZSA9IGxvZ09iai5iYWRnZSA/PyBsb2dPYmoubGV2ZWwgPCAyO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm1hdFR5cGUobG9nT2JqLCBpc0JhZGdlLCBvcHRzKTtcbiAgICBjb25zdCB0YWcgPSBsb2dPYmoudGFnID8gY29sb3JzLmdyYXkobG9nT2JqLnRhZykgOiBcIlwiO1xuICAgIGxldCBsaW5lO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmZpbHRlckFuZEpvaW4oW3R5cGUsIGNoYXJhY3RlckZvcm1hdChtZXNzYWdlKV0pO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5maWx0ZXJBbmRKb2luKG9wdHMuY29sdW1ucyA/IFt0YWcsIGNvbG9yZWREYXRlXSA6IFt0YWddKTtcbiAgICBjb25zdCBzcGFjZSA9IChvcHRzLmNvbHVtbnMgfHwgMCkgLSBzdHJpbmdXaWR0aChsZWZ0KSAtIHN0cmluZ1dpZHRoKHJpZ2h0KSAtIDI7XG4gICAgbGluZSA9IHNwYWNlID4gMCAmJiAob3B0cy5jb2x1bW5zIHx8IDApID49IDgwID8gbGVmdCArIFwiIFwiLnJlcGVhdChzcGFjZSkgKyByaWdodCA6IChyaWdodCA/IGAke2NvbG9ycy5ncmF5KGBbJHtyaWdodH1dYCl9IGAgOiBcIlwiKSArIGxlZnQ7XG4gICAgbGluZSArPSBjaGFyYWN0ZXJGb3JtYXQoXG4gICAgICBhZGRpdGlvbmFsLmxlbmd0aCA+IDAgPyBcIlxcblwiICsgYWRkaXRpb25hbC5qb2luKFwiXFxuXCIpIDogXCJcIlxuICAgICk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcInRyYWNlXCIpIHtcbiAgICAgIGNvbnN0IF9lcnIgPSBuZXcgRXJyb3IoXCJUcmFjZTogXCIgKyBsb2dPYmoubWVzc2FnZSk7XG4gICAgICBsaW5lICs9IHRoaXMuZm9ybWF0U3RhY2soX2Vyci5zdGFjayB8fCBcIlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQmFkZ2UgPyBcIlxcblwiICsgbGluZSArIFwiXFxuXCIgOiBsaW5lO1xuICB9XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJGb3JtYXQoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvYChbXmBdKylgL2dtLCAoXywgbSkgPT4gY29sb3JzLmN5YW4obSkpLnJlcGxhY2UoL1xccytfKFteX10rKV9cXHMrL2dtLCAoXywgbSkgPT4gYCAke2NvbG9ycy51bmRlcmxpbmUobSl9IGApO1xufVxuZnVuY3Rpb24gZ2V0Q29sb3IoY29sb3IgPSBcIndoaXRlXCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzLndoaXRlO1xufVxuZnVuY3Rpb24gZ2V0QmdDb2xvcihjb2xvciA9IFwiYmdXaGl0ZVwiKSB7XG4gIHJldHVybiBjb2xvcnNbYGJnJHtjb2xvclswXS50b1VwcGVyQ2FzZSgpfSR7Y29sb3Iuc2xpY2UoMSl9YF0gfHwgY29sb3JzLmJnV2hpdGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIGxldCBsZXZlbCA9IF9nZXREZWZhdWx0TG9nTGV2ZWwoKTtcbiAgaWYgKHByb2Nlc3MuZW52LkNPTlNPTEFfTEVWRUwpIHtcbiAgICBsZXZlbCA9IE51bWJlci5wYXJzZUludChwcm9jZXNzLmVudi5DT05TT0xBX0xFVkVMKSA/PyBsZXZlbDtcbiAgfVxuICBjb25zdCBjb25zb2xhMiA9IGNyZWF0ZUNvbnNvbGEkMSh7XG4gICAgbGV2ZWwsXG4gICAgZGVmYXVsdHM6IHsgbGV2ZWwgfSxcbiAgICBzdGRvdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICAgIHN0ZGVycjogcHJvY2Vzcy5zdGRlcnIsXG4gICAgcHJvbXB0OiAoLi4uYXJncykgPT4gaW1wb3J0KCcuLi9jaHVua3MvcHJvbXB0Lm1qcycpLnRoZW4oKG0pID0+IG0ucHJvbXB0KC4uLmFyZ3MpKSxcbiAgICByZXBvcnRlcnM6IG9wdGlvbnMucmVwb3J0ZXJzIHx8IFtcbiAgICAgIG9wdGlvbnMuZmFuY3kgPz8gIShpc0NJIHx8IGlzVGVzdCkgPyBuZXcgRmFuY3lSZXBvcnRlcigpIDogbmV3IEJhc2ljUmVwb3J0ZXIoKVxuICAgIF0sXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcbiAgcmV0dXJuIGNvbnNvbGEyO1xufVxuZnVuY3Rpb24gX2dldERlZmF1bHRMb2dMZXZlbCgpIHtcbiAgaWYgKGlzRGVidWcpIHtcbiAgICByZXR1cm4gTG9nTGV2ZWxzLmRlYnVnO1xuICB9XG4gIGlmIChpc1Rlc3QpIHtcbiAgICByZXR1cm4gTG9nTGV2ZWxzLndhcm47XG4gIH1cbiAgcmV0dXJuIExvZ0xldmVscy5pbmZvO1xufVxuY29uc3QgY29uc29sYSA9IGNyZWF0ZUNvbnNvbGEoKTtcblxuZXhwb3J0IHsgY29uc29sYSBhcyBhLCBjcmVhdGVDb25zb2xhIGFzIGMsIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzIGFzIGcsIGlzVW5pY29kZVN1cHBvcnRlZCBhcyBpIH07XG4iLCAiZXhwb3J0IHsgYSBhcyBjb25zb2xhLCBjIGFzIGNyZWF0ZUNvbnNvbGEsIGEgYXMgZGVmYXVsdCB9IGZyb20gJy4vc2hhcmVkL2NvbnNvbGEuMzZjMDAzNGYubWpzJztcbmV4cG9ydCB7IENvbnNvbGEsIExvZ0xldmVscywgTG9nVHlwZXMgfSBmcm9tICcuL2NvcmUubWpzJztcbmltcG9ydCAnLi9zaGFyZWQvY29uc29sYS4wNmFkOGE2NC5tanMnO1xuaW1wb3J0ICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0ICcuL3V0aWxzLm1qcyc7XG5pbXBvcnQgJ25vZGU6dHR5JztcbmltcG9ydCAnbm9kZTp1dGlsJztcbmltcG9ydCAnbm9kZTpwYXRoJztcbiIsICJpbXBvcnQgY29uc29sYSBmcm9tICdjb25zb2xhJztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJ2NvbnNvbGEvdXRpbHMnO1xuXG5mdW5jdGlvbiB0b0FycmF5KHZhbCkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh2YWwpKSB7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuICByZXR1cm4gdmFsID09PSB2b2lkIDAgPyBbXSA6IFt2YWxdO1xufVxuZnVuY3Rpb24gZm9ybWF0TGluZUNvbHVtbnMobGluZXMsIGxpbmVQcmVmaXggPSBcIlwiKSB7XG4gIGNvbnN0IG1heExlbmdoID0gW107XG4gIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgIGZvciAoY29uc3QgW2ksIGVsZW1lbnRdIG9mIGxpbmUuZW50cmllcygpKSB7XG4gICAgICBtYXhMZW5naFtpXSA9IE1hdGgubWF4KG1heExlbmdoW2ldIHx8IDAsIGVsZW1lbnQubGVuZ3RoKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGxpbmVzLm1hcChcbiAgICAobCkgPT4gbC5tYXAoXG4gICAgICAoYywgaSkgPT4gbGluZVByZWZpeCArIGNbaSA9PT0gMCA/IFwicGFkU3RhcnRcIiA6IFwicGFkRW5kXCJdKG1heExlbmdoW2ldKVxuICAgICkuam9pbihcIiAgXCIpXG4gICkuam9pbihcIlxcblwiKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVWYWx1ZShpbnB1dCkge1xuICByZXR1cm4gdHlwZW9mIGlucHV0ID09PSBcImZ1bmN0aW9uXCIgPyBpbnB1dCgpIDogaW5wdXQ7XG59XG5jbGFzcyBDTElFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSwgY29kZSkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMuY29kZSA9IGNvZGU7XG4gICAgdGhpcy5uYW1lID0gXCJDTElFcnJvclwiO1xuICB9XG59XG5cbmNvbnN0IE5VTUJFUl9DSEFSX1JFID0gL1xcZC87XG5jb25zdCBTVFJfU1BMSVRURVJTID0gW1wiLVwiLCBcIl9cIiwgXCIvXCIsIFwiLlwiXTtcbmZ1bmN0aW9uIGlzVXBwZXJjYXNlKGNoYXIgPSBcIlwiKSB7XG4gIGlmIChOVU1CRVJfQ0hBUl9SRS50ZXN0KGNoYXIpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuICByZXR1cm4gY2hhciAhPT0gY2hhci50b0xvd2VyQ2FzZSgpO1xufVxuZnVuY3Rpb24gc3BsaXRCeUNhc2Uoc3RyLCBzZXBhcmF0b3JzKSB7XG4gIGNvbnN0IHNwbGl0dGVycyA9IHNlcGFyYXRvcnMgPz8gU1RSX1NQTElUVEVSUztcbiAgY29uc3QgcGFydHMgPSBbXTtcbiAgaWYgKCFzdHIgfHwgdHlwZW9mIHN0ciAhPT0gXCJzdHJpbmdcIikge1xuICAgIHJldHVybiBwYXJ0cztcbiAgfVxuICBsZXQgYnVmZiA9IFwiXCI7XG4gIGxldCBwcmV2aW91c1VwcGVyO1xuICBsZXQgcHJldmlvdXNTcGxpdHRlcjtcbiAgZm9yIChjb25zdCBjaGFyIG9mIHN0cikge1xuICAgIGNvbnN0IGlzU3BsaXR0ZXIgPSBzcGxpdHRlcnMuaW5jbHVkZXMoY2hhcik7XG4gICAgaWYgKGlzU3BsaXR0ZXIgPT09IHRydWUpIHtcbiAgICAgIHBhcnRzLnB1c2goYnVmZik7XG4gICAgICBidWZmID0gXCJcIjtcbiAgICAgIHByZXZpb3VzVXBwZXIgPSB2b2lkIDA7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgaXNVcHBlciA9IGlzVXBwZXJjYXNlKGNoYXIpO1xuICAgIGlmIChwcmV2aW91c1NwbGl0dGVyID09PSBmYWxzZSkge1xuICAgICAgaWYgKHByZXZpb3VzVXBwZXIgPT09IGZhbHNlICYmIGlzVXBwZXIgPT09IHRydWUpIHtcbiAgICAgICAgcGFydHMucHVzaChidWZmKTtcbiAgICAgICAgYnVmZiA9IGNoYXI7XG4gICAgICAgIHByZXZpb3VzVXBwZXIgPSBpc1VwcGVyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcmV2aW91c1VwcGVyID09PSB0cnVlICYmIGlzVXBwZXIgPT09IGZhbHNlICYmIGJ1ZmYubGVuZ3RoID4gMSkge1xuICAgICAgICBjb25zdCBsYXN0Q2hhciA9IGJ1ZmYuYXQoLTEpO1xuICAgICAgICBwYXJ0cy5wdXNoKGJ1ZmYuc2xpY2UoMCwgTWF0aC5tYXgoMCwgYnVmZi5sZW5ndGggLSAxKSkpO1xuICAgICAgICBidWZmID0gbGFzdENoYXIgKyBjaGFyO1xuICAgICAgICBwcmV2aW91c1VwcGVyID0gaXNVcHBlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgfVxuICAgIGJ1ZmYgKz0gY2hhcjtcbiAgICBwcmV2aW91c1VwcGVyID0gaXNVcHBlcjtcbiAgICBwcmV2aW91c1NwbGl0dGVyID0gaXNTcGxpdHRlcjtcbiAgfVxuICBwYXJ0cy5wdXNoKGJ1ZmYpO1xuICByZXR1cm4gcGFydHM7XG59XG5mdW5jdGlvbiB1cHBlckZpcnN0KHN0cikge1xuICByZXR1cm4gc3RyID8gc3RyWzBdLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkgOiBcIlwiO1xufVxuZnVuY3Rpb24gbG93ZXJGaXJzdChzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b0xvd2VyQ2FzZSgpICsgc3RyLnNsaWNlKDEpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIHBhc2NhbENhc2Uoc3RyLCBvcHRzKSB7XG4gIHJldHVybiBzdHIgPyAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyIDogc3BsaXRCeUNhc2Uoc3RyKSkubWFwKChwKSA9PiB1cHBlckZpcnN0KG9wdHM/Lm5vcm1hbGl6ZSA/IHAudG9Mb3dlckNhc2UoKSA6IHApKS5qb2luKFwiXCIpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGNhbWVsQ2FzZShzdHIsIG9wdHMpIHtcbiAgcmV0dXJuIGxvd2VyRmlyc3QocGFzY2FsQ2FzZShzdHIgfHwgXCJcIiwgb3B0cykpO1xufVxuZnVuY3Rpb24ga2ViYWJDYXNlKHN0ciwgam9pbmVyKSB7XG4gIHJldHVybiBzdHIgPyAoQXJyYXkuaXNBcnJheShzdHIpID8gc3RyIDogc3BsaXRCeUNhc2Uoc3RyKSkubWFwKChwKSA9PiBwLnRvTG93ZXJDYXNlKCkpLmpvaW4oam9pbmVyID8/IFwiLVwiKSA6IFwiXCI7XG59XG5cbmZ1bmN0aW9uIHRvQXJyKGFueSkge1xuICByZXR1cm4gYW55ID09IHZvaWQgMCA/IFtdIDogQXJyYXkuaXNBcnJheShhbnkpID8gYW55IDogW2FueV07XG59XG5mdW5jdGlvbiB0b1ZhbChvdXQsIGtleSwgdmFsLCBvcHRzKSB7XG4gIGxldCB4O1xuICBjb25zdCBvbGQgPSBvdXRba2V5XTtcbiAgY29uc3Qgbnh0ID0gfm9wdHMuc3RyaW5nLmluZGV4T2Yoa2V5KSA/IHZhbCA9PSB2b2lkIDAgfHwgdmFsID09PSB0cnVlID8gXCJcIiA6IFN0cmluZyh2YWwpIDogdHlwZW9mIHZhbCA9PT0gXCJib29sZWFuXCIgPyB2YWwgOiB+b3B0cy5ib29sZWFuLmluZGV4T2Yoa2V5KSA/IHZhbCA9PT0gXCJmYWxzZVwiID8gZmFsc2UgOiB2YWwgPT09IFwidHJ1ZVwiIHx8IChvdXQuXy5wdXNoKCh4ID0gK3ZhbCwgeCAqIDAgPT09IDApID8geCA6IHZhbCksICEhdmFsKSA6ICh4ID0gK3ZhbCwgeCAqIDAgPT09IDApID8geCA6IHZhbDtcbiAgb3V0W2tleV0gPSBvbGQgPT0gdm9pZCAwID8gbnh0IDogQXJyYXkuaXNBcnJheShvbGQpID8gb2xkLmNvbmNhdChueHQpIDogW29sZCwgbnh0XTtcbn1cbmZ1bmN0aW9uIHBhcnNlUmF3QXJncyhhcmdzID0gW10sIG9wdHMgPSB7fSkge1xuICBsZXQgaztcbiAgbGV0IGFycjtcbiAgbGV0IGFyZztcbiAgbGV0IG5hbWU7XG4gIGxldCB2YWw7XG4gIGNvbnN0IG91dCA9IHsgXzogW10gfTtcbiAgbGV0IGkgPSAwO1xuICBsZXQgaiA9IDA7XG4gIGxldCBpZHggPSAwO1xuICBjb25zdCBsZW4gPSBhcmdzLmxlbmd0aDtcbiAgY29uc3QgYWxpYmkgPSBvcHRzLmFsaWFzICE9PSB2b2lkIDA7XG4gIGNvbnN0IHN0cmljdCA9IG9wdHMudW5rbm93biAhPT0gdm9pZCAwO1xuICBjb25zdCBkZWZhdWx0cyA9IG9wdHMuZGVmYXVsdCAhPT0gdm9pZCAwO1xuICBvcHRzLmFsaWFzID0gb3B0cy5hbGlhcyB8fCB7fTtcbiAgb3B0cy5zdHJpbmcgPSB0b0FycihvcHRzLnN0cmluZyk7XG4gIG9wdHMuYm9vbGVhbiA9IHRvQXJyKG9wdHMuYm9vbGVhbik7XG4gIGlmIChhbGliaSkge1xuICAgIGZvciAoayBpbiBvcHRzLmFsaWFzKSB7XG4gICAgICBhcnIgPSBvcHRzLmFsaWFzW2tdID0gdG9BcnIob3B0cy5hbGlhc1trXSk7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIChvcHRzLmFsaWFzW2FycltpXV0gPSBhcnIuY29uY2F0KGspKS5zcGxpY2UoaSwgMSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IG9wdHMuYm9vbGVhbi5sZW5ndGg7IGktLSA+IDA7ICkge1xuICAgIGFyciA9IG9wdHMuYWxpYXNbb3B0cy5ib29sZWFuW2ldXSB8fCBbXTtcbiAgICBmb3IgKGogPSBhcnIubGVuZ3RoOyBqLS0gPiAwOyApIHtcbiAgICAgIG9wdHMuYm9vbGVhbi5wdXNoKGFycltqXSk7XG4gICAgfVxuICB9XG4gIGZvciAoaSA9IG9wdHMuc3RyaW5nLmxlbmd0aDsgaS0tID4gMDsgKSB7XG4gICAgYXJyID0gb3B0cy5hbGlhc1tvcHRzLnN0cmluZ1tpXV0gfHwgW107XG4gICAgZm9yIChqID0gYXJyLmxlbmd0aDsgai0tID4gMDsgKSB7XG4gICAgICBvcHRzLnN0cmluZy5wdXNoKGFycltqXSk7XG4gICAgfVxuICB9XG4gIGlmIChkZWZhdWx0cykge1xuICAgIGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcbiAgICAgIG5hbWUgPSB0eXBlb2Ygb3B0cy5kZWZhdWx0W2tdO1xuICAgICAgYXJyID0gb3B0cy5hbGlhc1trXSA9IG9wdHMuYWxpYXNba10gfHwgW107XG4gICAgICBpZiAob3B0c1tuYW1lXSAhPT0gdm9pZCAwKSB7XG4gICAgICAgIG9wdHNbbmFtZV0ucHVzaChrKTtcbiAgICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIG9wdHNbbmFtZV0ucHVzaChhcnJbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGNvbnN0IGtleXMgPSBzdHJpY3QgPyBPYmplY3Qua2V5cyhvcHRzLmFsaWFzKSA6IFtdO1xuICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBhcmcgPSBhcmdzW2ldO1xuICAgIGlmIChhcmcgPT09IFwiLS1cIikge1xuICAgICAgb3V0Ll8gPSBvdXQuXy5jb25jYXQoYXJncy5zbGljZSgrK2kpKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmb3IgKGogPSAwOyBqIDwgYXJnLmxlbmd0aDsgaisrKSB7XG4gICAgICBpZiAoYXJnLmNoYXJDb2RlQXQoaikgIT09IDQ1KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoaiA9PT0gMCkge1xuICAgICAgb3V0Ll8ucHVzaChhcmcpO1xuICAgIH0gZWxzZSBpZiAoYXJnLnN1YnN0cmluZyhqLCBqICsgMykgPT09IFwibm8tXCIpIHtcbiAgICAgIG5hbWUgPSBhcmcuc2xpY2UoTWF0aC5tYXgoMCwgaiArIDMpKTtcbiAgICAgIGlmIChzdHJpY3QgJiYgIX5rZXlzLmluZGV4T2YobmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIG9wdHMudW5rbm93bihhcmcpO1xuICAgICAgfVxuICAgICAgb3V0W25hbWVdID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoaWR4ID0gaiArIDE7IGlkeCA8IGFyZy5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgIGlmIChhcmcuY2hhckNvZGVBdChpZHgpID09PSA2MSkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuYW1lID0gYXJnLnN1YnN0cmluZyhqLCBpZHgpO1xuICAgICAgdmFsID0gYXJnLnNsaWNlKE1hdGgubWF4KDAsICsraWR4KSkgfHwgaSArIDEgPT09IGxlbiB8fCAoXCJcIiArIGFyZ3NbaSArIDFdKS5jaGFyQ29kZUF0KDApID09PSA0NSB8fCBhcmdzWysraV07XG4gICAgICBhcnIgPSBqID09PSAyID8gW25hbWVdIDogbmFtZTtcbiAgICAgIGZvciAoaWR4ID0gMDsgaWR4IDwgYXJyLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgbmFtZSA9IGFycltpZHhdO1xuICAgICAgICBpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdHMudW5rbm93bihcIi1cIi5yZXBlYXQoaikgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICB0b1ZhbChvdXQsIG5hbWUsIGlkeCArIDEgPCBhcnIubGVuZ3RoIHx8IHZhbCwgb3B0cyk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChkZWZhdWx0cykge1xuICAgIGZvciAoayBpbiBvcHRzLmRlZmF1bHQpIHtcbiAgICAgIGlmIChvdXRba10gPT09IHZvaWQgMCkge1xuICAgICAgICBvdXRba10gPSBvcHRzLmRlZmF1bHRba107XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChhbGliaSkge1xuICAgIGZvciAoayBpbiBvdXQpIHtcbiAgICAgIGFyciA9IG9wdHMuYWxpYXNba10gfHwgW107XG4gICAgICB3aGlsZSAoYXJyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgb3V0W2Fyci5zaGlmdCgpXSA9IG91dFtrXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG91dDtcbn1cblxuZnVuY3Rpb24gcGFyc2VBcmdzKHJhd0FyZ3MsIGFyZ3NEZWYpIHtcbiAgY29uc3QgcGFyc2VPcHRpb25zID0ge1xuICAgIGJvb2xlYW46IFtdLFxuICAgIHN0cmluZzogW10sXG4gICAgbWl4ZWQ6IFtdLFxuICAgIGFsaWFzOiB7fSxcbiAgICBkZWZhdWx0OiB7fVxuICB9O1xuICBjb25zdCBhcmdzID0gcmVzb2x2ZUFyZ3MoYXJnc0RlZik7XG4gIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICBpZiAoYXJnLnR5cGUgPT09IFwicG9zaXRpb25hbFwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKGFyZy50eXBlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuc3RyaW5nLnB1c2goYXJnLm5hbWUpO1xuICAgIH0gZWxzZSBpZiAoYXJnLnR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuYm9vbGVhbi5wdXNoKGFyZy5uYW1lKTtcbiAgICB9XG4gICAgaWYgKGFyZy5kZWZhdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgIHBhcnNlT3B0aW9ucy5kZWZhdWx0W2FyZy5uYW1lXSA9IGFyZy5kZWZhdWx0O1xuICAgIH1cbiAgICBpZiAoYXJnLmFsaWFzKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuYWxpYXNbYXJnLm5hbWVdID0gYXJnLmFsaWFzO1xuICAgIH1cbiAgfVxuICBjb25zdCBwYXJzZWQgPSBwYXJzZVJhd0FyZ3MocmF3QXJncywgcGFyc2VPcHRpb25zKTtcbiAgY29uc3QgWy4uLnBvc2l0aW9uYWxBcmd1bWVudHNdID0gcGFyc2VkLl87XG4gIGNvbnN0IHBhcnNlZEFyZ3NQcm94eSA9IG5ldyBQcm94eShwYXJzZWQsIHtcbiAgICBnZXQodGFyZ2V0LCBwcm9wKSB7XG4gICAgICByZXR1cm4gdGFyZ2V0W3Byb3BdID8/IHRhcmdldFtjYW1lbENhc2UocHJvcCldID8/IHRhcmdldFtrZWJhYkNhc2UocHJvcCldO1xuICAgIH1cbiAgfSk7XG4gIGZvciAoY29uc3QgWywgYXJnXSBvZiBhcmdzLmVudHJpZXMoKSkge1xuICAgIGlmIChhcmcudHlwZSA9PT0gXCJwb3NpdGlvbmFsXCIpIHtcbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbmFsQXJndW1lbnQgPSBwb3NpdGlvbmFsQXJndW1lbnRzLnNoaWZ0KCk7XG4gICAgICBpZiAobmV4dFBvc2l0aW9uYWxBcmd1bWVudCAhPT0gdm9pZCAwKSB7XG4gICAgICAgIHBhcnNlZEFyZ3NQcm94eVthcmcubmFtZV0gPSBuZXh0UG9zaXRpb25hbEFyZ3VtZW50O1xuICAgICAgfSBlbHNlIGlmIChhcmcuZGVmYXVsdCA9PT0gdm9pZCAwICYmIGFyZy5yZXF1aXJlZCAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKFxuICAgICAgICAgIGBNaXNzaW5nIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJndW1lbnQ6ICR7YXJnLm5hbWUudG9VcHBlckNhc2UoKX1gLFxuICAgICAgICAgIFwiRUFSR1wiXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJzZWRBcmdzUHJveHlbYXJnLm5hbWVdID0gYXJnLmRlZmF1bHQ7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChhcmcucmVxdWlyZWQgJiYgcGFyc2VkQXJnc1Byb3h5W2FyZy5uYW1lXSA9PT0gdm9pZCAwKSB7XG4gICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoYE1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQ6IC0tJHthcmcubmFtZX1gLCBcIkVBUkdcIik7XG4gICAgfVxuICB9XG4gIHJldHVybiBwYXJzZWRBcmdzUHJveHk7XG59XG5mdW5jdGlvbiByZXNvbHZlQXJncyhhcmdzRGVmKSB7XG4gIGNvbnN0IGFyZ3MgPSBbXTtcbiAgZm9yIChjb25zdCBbbmFtZSwgYXJnRGVmXSBvZiBPYmplY3QuZW50cmllcyhhcmdzRGVmIHx8IHt9KSkge1xuICAgIGFyZ3MucHVzaCh7XG4gICAgICAuLi5hcmdEZWYsXG4gICAgICBuYW1lLFxuICAgICAgYWxpYXM6IHRvQXJyYXkoYXJnRGVmLmFsaWFzKVxuICAgIH0pO1xuICB9XG4gIHJldHVybiBhcmdzO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVDb21tYW5kKGRlZikge1xuICByZXR1cm4gZGVmO1xufVxuYXN5bmMgZnVuY3Rpb24gcnVuQ29tbWFuZChjbWQsIG9wdHMpIHtcbiAgY29uc3QgY21kQXJncyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuYXJncyB8fCB7fSk7XG4gIGNvbnN0IHBhcnNlZEFyZ3MgPSBwYXJzZUFyZ3Mob3B0cy5yYXdBcmdzLCBjbWRBcmdzKTtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICByYXdBcmdzOiBvcHRzLnJhd0FyZ3MsXG4gICAgYXJnczogcGFyc2VkQXJncyxcbiAgICBkYXRhOiBvcHRzLmRhdGEsXG4gICAgY21kXG4gIH07XG4gIGlmICh0eXBlb2YgY21kLnNldHVwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICBhd2FpdCBjbWQuc2V0dXAoY29udGV4dCk7XG4gIH1cbiAgbGV0IHJlc3VsdDtcbiAgdHJ5IHtcbiAgICBjb25zdCBzdWJDb21tYW5kcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuc3ViQ29tbWFuZHMpO1xuICAgIGlmIChzdWJDb21tYW5kcyAmJiBPYmplY3Qua2V5cyhzdWJDb21tYW5kcykubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3Qgc3ViQ29tbWFuZEFyZ0luZGV4ID0gb3B0cy5yYXdBcmdzLmZpbmRJbmRleChcbiAgICAgICAgKGFyZykgPT4gIWFyZy5zdGFydHNXaXRoKFwiLVwiKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHN1YkNvbW1hbmROYW1lID0gb3B0cy5yYXdBcmdzW3N1YkNvbW1hbmRBcmdJbmRleF07XG4gICAgICBpZiAoc3ViQ29tbWFuZE5hbWUpIHtcbiAgICAgICAgaWYgKCFzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXG4gICAgICAgICAgICBgVW5rbm93biBjb21tYW5kIFxcYCR7c3ViQ29tbWFuZE5hbWV9XFxgYCxcbiAgICAgICAgICAgIFwiRV9VTktOT1dOX0NPTU1BTkRcIlxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3ViQ29tbWFuZCA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pO1xuICAgICAgICBpZiAoc3ViQ29tbWFuZCkge1xuICAgICAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoc3ViQ29tbWFuZCwge1xuICAgICAgICAgICAgcmF3QXJnczogb3B0cy5yYXdBcmdzLnNsaWNlKHN1YkNvbW1hbmRBcmdJbmRleCArIDEpXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoIWNtZC5ydW4pIHtcbiAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKGBObyBjb21tYW5kIHNwZWNpZmllZC5gLCBcIkVfTk9fQ09NTUFORFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBjbWQucnVuID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlc3VsdCA9IGF3YWl0IGNtZC5ydW4oY29udGV4dCk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGlmICh0eXBlb2YgY21kLmNsZWFudXAgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgYXdhaXQgY21kLmNsZWFudXAoY29udGV4dCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB7IHJlc3VsdCB9O1xufVxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVN1YkNvbW1hbmQoY21kLCByYXdBcmdzLCBwYXJlbnQpIHtcbiAgY29uc3Qgc3ViQ29tbWFuZHMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLnN1YkNvbW1hbmRzKTtcbiAgaWYgKHN1YkNvbW1hbmRzICYmIE9iamVjdC5rZXlzKHN1YkNvbW1hbmRzKS5sZW5ndGggPiAwKSB7XG4gICAgY29uc3Qgc3ViQ29tbWFuZEFyZ0luZGV4ID0gcmF3QXJncy5maW5kSW5kZXgoKGFyZykgPT4gIWFyZy5zdGFydHNXaXRoKFwiLVwiKSk7XG4gICAgY29uc3Qgc3ViQ29tbWFuZE5hbWUgPSByYXdBcmdzW3N1YkNvbW1hbmRBcmdJbmRleF07XG4gICAgY29uc3Qgc3ViQ29tbWFuZCA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWJDb21tYW5kc1tzdWJDb21tYW5kTmFtZV0pO1xuICAgIGlmIChzdWJDb21tYW5kKSB7XG4gICAgICByZXR1cm4gcmVzb2x2ZVN1YkNvbW1hbmQoXG4gICAgICAgIHN1YkNvbW1hbmQsXG4gICAgICAgIHJhd0FyZ3Muc2xpY2Uoc3ViQ29tbWFuZEFyZ0luZGV4ICsgMSksXG4gICAgICAgIGNtZFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtjbWQsIHBhcmVudF07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNob3dVc2FnZShjbWQsIHBhcmVudCkge1xuICB0cnkge1xuICAgIGNvbnNvbGEubG9nKGF3YWl0IHJlbmRlclVzYWdlKGNtZCwgcGFyZW50KSArIFwiXFxuXCIpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGEuZXJyb3IoZXJyb3IpO1xuICB9XG59XG5hc3luYyBmdW5jdGlvbiByZW5kZXJVc2FnZShjbWQsIHBhcmVudCkge1xuICBjb25zdCBjbWRNZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5tZXRhIHx8IHt9KTtcbiAgY29uc3QgY21kQXJncyA9IHJlc29sdmVBcmdzKGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuYXJncyB8fCB7fSkpO1xuICBjb25zdCBwYXJlbnRNZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHBhcmVudD8ubWV0YSB8fCB7fSk7XG4gIGNvbnN0IGNvbW1hbmROYW1lID0gYCR7cGFyZW50TWV0YS5uYW1lID8gYCR7cGFyZW50TWV0YS5uYW1lfSBgIDogXCJcIn1gICsgKGNtZE1ldGEubmFtZSB8fCBwcm9jZXNzLmFyZ3ZbMV0pO1xuICBjb25zdCBhcmdMaW5lcyA9IFtdO1xuICBjb25zdCBwb3NMaW5lcyA9IFtdO1xuICBjb25zdCBjb21tYW5kc0xpbmVzID0gW107XG4gIGNvbnN0IHVzYWdlTGluZSA9IFtdO1xuICBmb3IgKGNvbnN0IGFyZyBvZiBjbWRBcmdzKSB7XG4gICAgaWYgKGFyZy50eXBlID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29uc3QgbmFtZSA9IGFyZy5uYW1lLnRvVXBwZXJDYXNlKCk7XG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gYXJnLnJlcXVpcmVkICE9PSBmYWxzZSAmJiBhcmcuZGVmYXVsdCA9PT0gdm9pZCAwO1xuICAgICAgY29uc3QgZGVmYXVsdEhpbnQgPSBhcmcuZGVmYXVsdCA/IGA9XCIke2FyZy5kZWZhdWx0fVwiYCA6IFwiXCI7XG4gICAgICBwb3NMaW5lcy5wdXNoKFtcbiAgICAgICAgXCJgXCIgKyBuYW1lICsgZGVmYXVsdEhpbnQgKyBcImBcIixcbiAgICAgICAgYXJnLmRlc2NyaXB0aW9uIHx8IFwiXCIsXG4gICAgICAgIGFyZy52YWx1ZUhpbnQgPyBgPCR7YXJnLnZhbHVlSGludH0+YCA6IFwiXCJcbiAgICAgIF0pO1xuICAgICAgdXNhZ2VMaW5lLnB1c2goaXNSZXF1aXJlZCA/IGA8JHtuYW1lfT5gIDogYFske25hbWV9XWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBpc1JlcXVpcmVkID0gYXJnLnJlcXVpcmVkID09PSB0cnVlICYmIGFyZy5kZWZhdWx0ID09PSB2b2lkIDA7XG4gICAgICBjb25zdCBhcmdTdHIgPSAoYXJnLnR5cGUgPT09IFwiYm9vbGVhblwiICYmIGFyZy5kZWZhdWx0ID09PSB0cnVlID8gW1xuICAgICAgICAuLi4oYXJnLmFsaWFzIHx8IFtdKS5tYXAoKGEpID0+IGAtLW5vLSR7YX1gKSxcbiAgICAgICAgYC0tbm8tJHthcmcubmFtZX1gXG4gICAgICBdLmpvaW4oXCIsIFwiKSA6IFsuLi4oYXJnLmFsaWFzIHx8IFtdKS5tYXAoKGEpID0+IGAtJHthfWApLCBgLS0ke2FyZy5uYW1lfWBdLmpvaW4oXG4gICAgICAgIFwiLCBcIlxuICAgICAgKSkgKyAoYXJnLnR5cGUgPT09IFwic3RyaW5nXCIgJiYgKGFyZy52YWx1ZUhpbnQgfHwgYXJnLmRlZmF1bHQpID8gYD0ke2FyZy52YWx1ZUhpbnQgPyBgPCR7YXJnLnZhbHVlSGludH0+YCA6IGBcIiR7YXJnLmRlZmF1bHQgfHwgXCJcIn1cImB9YCA6IFwiXCIpO1xuICAgICAgYXJnTGluZXMucHVzaChbXG4gICAgICAgIFwiYFwiICsgYXJnU3RyICsgKGlzUmVxdWlyZWQgPyBcIiAocmVxdWlyZWQpXCIgOiBcIlwiKSArIFwiYFwiLFxuICAgICAgICBhcmcuZGVzY3JpcHRpb24gfHwgXCJcIlxuICAgICAgXSk7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkge1xuICAgICAgICB1c2FnZUxpbmUucHVzaChhcmdTdHIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoY21kLnN1YkNvbW1hbmRzKSB7XG4gICAgY29uc3QgY29tbWFuZE5hbWVzID0gW107XG4gICAgY29uc3Qgc3ViQ29tbWFuZHMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLnN1YkNvbW1hbmRzKTtcbiAgICBmb3IgKGNvbnN0IFtuYW1lLCBzdWJdIG9mIE9iamVjdC5lbnRyaWVzKHN1YkNvbW1hbmRzKSkge1xuICAgICAgY29uc3Qgc3ViQ21kID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHN1Yik7XG4gICAgICBjb25zdCBtZXRhID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHN1YkNtZD8ubWV0YSk7XG4gICAgICBjb21tYW5kc0xpbmVzLnB1c2goW2BcXGAke25hbWV9XFxgYCwgbWV0YT8uZGVzY3JpcHRpb24gfHwgXCJcIl0pO1xuICAgICAgY29tbWFuZE5hbWVzLnB1c2gobmFtZSk7XG4gICAgfVxuICAgIHVzYWdlTGluZS5wdXNoKGNvbW1hbmROYW1lcy5qb2luKFwifFwiKSk7XG4gIH1cbiAgY29uc3QgdXNhZ2VMaW5lcyA9IFtdO1xuICBjb25zdCB2ZXJzaW9uID0gY21kTWV0YS52ZXJzaW9uIHx8IHBhcmVudE1ldGEudmVyc2lvbjtcbiAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgIGNvbG9ycy5ncmF5KFxuICAgICAgYCR7Y21kTWV0YS5kZXNjcmlwdGlvbn0gKCR7Y29tbWFuZE5hbWUgKyAodmVyc2lvbiA/IGAgdiR7dmVyc2lvbn1gIDogXCJcIil9KWBcbiAgICApLFxuICAgIFwiXCJcbiAgKTtcbiAgY29uc3QgaGFzT3B0aW9ucyA9IGFyZ0xpbmVzLmxlbmd0aCA+IDAgfHwgcG9zTGluZXMubGVuZ3RoID4gMDtcbiAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgIGAke2NvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJVU0FHRVwiKSl9IFxcYCR7Y29tbWFuZE5hbWV9JHtoYXNPcHRpb25zID8gXCIgW09QVElPTlNdXCIgOiBcIlwifSAke3VzYWdlTGluZS5qb2luKFwiIFwiKX1cXGBgLFxuICAgIFwiXCJcbiAgKTtcbiAgaWYgKHBvc0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB1c2FnZUxpbmVzLnB1c2goY29sb3JzLnVuZGVybGluZShjb2xvcnMuYm9sZChcIkFSR1VNRU5UU1wiKSksIFwiXCIpO1xuICAgIHVzYWdlTGluZXMucHVzaChmb3JtYXRMaW5lQ29sdW1ucyhwb3NMaW5lcywgXCIgIFwiKSk7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKFwiXCIpO1xuICB9XG4gIGlmIChhcmdMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGNvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJPUFRJT05TXCIpKSwgXCJcIik7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGZvcm1hdExpbmVDb2x1bW5zKGFyZ0xpbmVzLCBcIiAgXCIpKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goXCJcIik7XG4gIH1cbiAgaWYgKGNvbW1hbmRzTGluZXMubGVuZ3RoID4gMCkge1xuICAgIHVzYWdlTGluZXMucHVzaChjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKFwiQ09NTUFORFNcIikpLCBcIlwiKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goZm9ybWF0TGluZUNvbHVtbnMoY29tbWFuZHNMaW5lcywgXCIgIFwiKSk7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKFxuICAgICAgXCJcIixcbiAgICAgIGBVc2UgXFxgJHtjb21tYW5kTmFtZX0gPGNvbW1hbmQ+IC0taGVscFxcYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbW1hbmQuYFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHVzYWdlTGluZXMuZmlsdGVyKChsKSA9PiB0eXBlb2YgbCA9PT0gXCJzdHJpbmdcIikuam9pbihcIlxcblwiKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcnVuTWFpbihjbWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCByYXdBcmdzID0gb3B0cy5yYXdBcmdzIHx8IHByb2Nlc3MuYXJndi5zbGljZSgyKTtcbiAgY29uc3Qgc2hvd1VzYWdlJDEgPSBvcHRzLnNob3dVc2FnZSB8fCBzaG93VXNhZ2U7XG4gIHRyeSB7XG4gICAgaWYgKHJhd0FyZ3MuaW5jbHVkZXMoXCItLWhlbHBcIikgfHwgcmF3QXJncy5pbmNsdWRlcyhcIi1oXCIpKSB7XG4gICAgICBhd2FpdCBzaG93VXNhZ2UkMSguLi5hd2FpdCByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MpKTtcbiAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9IGVsc2UgaWYgKHJhd0FyZ3MubGVuZ3RoID09PSAxICYmIHJhd0FyZ3NbMF0gPT09IFwiLS12ZXJzaW9uXCIpIHtcbiAgICAgIGNvbnN0IG1ldGEgPSB0eXBlb2YgY21kLm1ldGEgPT09IFwiZnVuY3Rpb25cIiA/IGF3YWl0IGNtZC5tZXRhKCkgOiBhd2FpdCBjbWQubWV0YTtcbiAgICAgIGlmICghbWV0YT8udmVyc2lvbikge1xuICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXCJObyB2ZXJzaW9uIHNwZWNpZmllZFwiLCBcIkVfTk9fVkVSU0lPTlwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnNvbGEubG9nKG1ldGEudmVyc2lvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoY21kLCB7IHJhd0FyZ3MgfSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnN0IGlzQ0xJRXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIENMSUVycm9yO1xuICAgIGlmICghaXNDTElFcnJvcikge1xuICAgICAgY29uc29sYS5lcnJvcihlcnJvciwgXCJcXG5cIik7XG4gICAgfVxuICAgIGlmIChpc0NMSUVycm9yKSB7XG4gICAgICBhd2FpdCBzaG93VXNhZ2UkMSguLi5hd2FpdCByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MpKTtcbiAgICB9XG4gICAgY29uc29sYS5lcnJvcihlcnJvci5tZXNzYWdlKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNyZWF0ZU1haW4oY21kKSB7XG4gIHJldHVybiAob3B0cyA9IHt9KSA9PiBydW5NYWluKGNtZCwgb3B0cyk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZU1haW4sIGRlZmluZUNvbW1hbmQsIHBhcnNlQXJncywgcmVuZGVyVXNhZ2UsIHJ1bkNvbW1hbmQsIHJ1bk1haW4sIHNob3dVc2FnZSB9O1xuIiwgImltcG9ydCB7IGRlZmluZUNvbW1hbmQsIHJ1bk1haW4gfSBmcm9tIFwiY2l0dHlcIjtcbmltcG9ydCBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0XCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IGV6U3Bhd24gZnJvbSBcIkBqc2RldnRvb2xzL2V6LXNwYXduXCI7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgeyBoYXNoIH0gZnJvbSBcIm9oYXNoXCI7XG5pbXBvcnQgZnNTeW5jIGZyb20gXCJmc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgT2N0b2tpdCB9IGZyb20gXCJAb2N0b2tpdC9hY3Rpb25cIjtcbmltcG9ydCB7IGdldFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuaW1wb3J0IHsgZXh0cmFjdE93bmVyQW5kUmVwbywgZXh0cmFjdFJlcG9zaXRvcnkgfSBmcm9tIFwiQHBrZy1wci1uZXcvdXRpbHNcIjtcbmltcG9ydCBmZyBmcm9tIFwiZmFzdC1nbG9iXCI7XG5pbXBvcnQgaWdub3JlIGZyb20gXCJpZ25vcmVcIjtcbmltcG9ydCBcIi4vZW52aXJvbm1lbnRzXCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuL3BhY2thZ2UuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9O1xuaW1wb3J0IHsgaXNCaW5hcnlGaWxlIH0gZnJvbSBcImlzYmluYXJ5ZmlsZVwiO1xuaW1wb3J0IHsgcmVhZFBhY2thZ2VKU09OLCB3cml0ZVBhY2thZ2VKU09OIH0gZnJvbSBcInBrZy10eXBlc1wiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIHZhciBBUElfVVJMOiBzdHJpbmc7XG59XG5cbmNvbnN0IHB1Ymxpc2hVcmwgPSBuZXcgVVJMKFwiL3B1Ymxpc2hcIiwgQVBJX1VSTCk7XG5cbmNvbnN0IG1haW4gPSBkZWZpbmVDb21tYW5kKHtcbiAgbWV0YToge1xuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5hbWU6IFwic3RhY2tibGl0elwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgQ0xJIGZvciBwa2cucHIubmV3IChDb250aW51b3VzIFJlbGVhc2VzKVwiLFxuICB9LFxuICBzdWJDb21tYW5kczoge1xuICAgIHB1Ymxpc2g6ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBjb21wYWN0OiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImNvbXBhY3QgdXJscy4gVGhlIHNob3J0ZXN0IGZvcm0gb2YgdXJscyBsaWtlIHBrZy5wci5uZXcvdGlueWJlbmNoQGE4MzJhNTUpXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwbnBtOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcInVzZSBgcG5wbSBwYWNrYCBpbnN0ZWFkIG9mIGBucG0gcGFjayAtLWpzb25gXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZW1wbGF0ZToge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImdlbmVyYXRlIHN0YWNrYmxpdHogdGVtcGxhdGVzIG91dCBvZiBkaXJlY3RvcmllcyBpbiB0aGUgY3VycmVudCByZXBvIHdpdGggdGhlIG5ldyBidWlsdCBwYWNrYWdlc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJ1bjogYXN5bmMgKHsgYXJncyB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aHMgPSAoYXJncy5fLmxlbmd0aCA/IGFyZ3MuXyA6IFtcIi5cIl0pXG4gICAgICAgICAgICAuZmxhdE1hcCgocCkgPT4gKGZnLmlzRHluYW1pY1BhdHRlcm4ocCkgPyBmZy5zeW5jKHApIDogcCkpXG4gICAgICAgICAgICAubWFwKChwKSA9PiBwYXRoLnJlc29sdmUocCkpO1xuXG4gICAgICAgICAgY29uc3QgdGVtcGxhdGVzID0gKFxuICAgICAgICAgICAgdHlwZW9mIGFyZ3MudGVtcGxhdGUgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgPyBbYXJncy50ZW1wbGF0ZV1cbiAgICAgICAgICAgICAgOiAoWy4uLihhcmdzLnRlbXBsYXRlID8/IFtdKV0gYXMgc3RyaW5nW10pXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLmZsYXRNYXAoKHApID0+IChmZy5pc0R5bmFtaWNQYXR0ZXJuKHApID8gZmcuc3luYyhwKSA6IHApKVxuICAgICAgICAgICAgLm1hcCgocCkgPT4gcGF0aC5yZXNvbHZlKHApKTtcblxuICAgICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgICBjb25zdCBpc0NvbXBhY3QgPSAhIWFyZ3MuY29tcGFjdDtcbiAgICAgICAgICBjb25zdCBpc1BucG0gPSAhIWFyZ3MucG5wbTtcblxuICAgICAgICAgIGlmICghcHJvY2Vzcy5lbnYuVEVTVCAmJiBwcm9jZXNzLmVudi5HSVRIVUJfQUNUSU9OUyAhPT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiQ29udGludW91cyBSZWxlYXNlcyBhcmUgb25seSBhdmFpbGFibGUgaW4gR2l0aHViIEFjdGlvbnMuXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5ldyBPY3Rva2l0KCk7IC8vIGdoIGF1dGhlbnRpY2F0aW9uXG5cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBHSVRIVUJfUkVQT1NJVE9SWSxcbiAgICAgICAgICAgIEdJVEhVQl9SVU5fSUQsXG4gICAgICAgICAgICBHSVRIVUJfUlVOX0FUVEVNUFQsXG4gICAgICAgICAgICBHSVRIVUJfQUNUT1JfSUQsXG4gICAgICAgICAgICBHSVRIVUJfSk9CXG4gICAgICAgICAgfSA9IHByb2Nlc3MuZW52O1xuXG4gICAgICAgICAgY29uc3QgW293bmVyLCByZXBvXSA9IEdJVEhVQl9SRVBPU0lUT1JZLnNwbGl0KFwiL1wiKTtcblxuICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICByZXBvLFxuICAgICAgICAgICAgam9iOiBHSVRIVUJfSk9CLFxuICAgICAgICAgICAgcnVuSWQ6IE51bWJlcihHSVRIVUJfUlVOX0lEKSxcbiAgICAgICAgICAgIGF0dGVtcHQ6IE51bWJlcihHSVRIVUJfUlVOX0FUVEVNUFQpLFxuICAgICAgICAgICAgYWN0b3I6IE51bWJlcihHSVRIVUJfQUNUT1JfSUQpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBrZXkgPSBoYXNoKG1ldGFkYXRhKTtcblxuICAgICAgICAgIGNvbnN0IGNoZWNrUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChuZXcgVVJMKFwiL2NoZWNrXCIsIEFQSV9VUkwpLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBvd25lcixcbiAgICAgICAgICAgICAgcmVwbyxcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoIWNoZWNrUmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGF3YWl0IGNoZWNrUmVzcG9uc2UudGV4dCgpKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7IHNoYSB9ID0gYXdhaXQgY2hlY2tSZXNwb25zZS5qc29uKCk7XG5cbiAgICAgICAgICBjb25zdCBkZXBzOiBNYXA8c3RyaW5nLCBzdHJpbmc+ID0gbmV3IE1hcCgpO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSlNPTihwSnNvblBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzQ29tcGFjdCkge1xuICAgICAgICAgICAgICBhd2FpdCB2ZXJpZnlDb21wYWN0TW9kZShwSnNvbi5uYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGVwcy5zZXQoXG4gICAgICAgICAgICAgIHBKc29uLm5hbWUsXG4gICAgICAgICAgICAgIG5ldyBVUkwoXG4gICAgICAgICAgICAgICAgYC8ke293bmVyfS8ke3JlcG99LyR7cEpzb24ubmFtZX1AJHtzaGF9YCxcbiAgICAgICAgICAgICAgICBBUElfVVJMLFxuICAgICAgICAgICAgICApLmhyZWYsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgdGVtcGxhdGVEaXIgb2YgdGVtcGxhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUodGVtcGxhdGVEaXIsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpTT04ocEpzb25QYXRoKTtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbi5uYW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwicHJlcGFyaW5nIHRlbXBsYXRlOlwiLCBwSnNvbi5uYW1lKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdG9yZSA9IGF3YWl0IHdyaXRlRGVwcyh0ZW1wbGF0ZURpciwgZGVwcyk7XG5cbiAgICAgICAgICAgIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4odGVtcGxhdGVEaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGlnID0gaWdub3JlKCk7XG4gICAgICAgICAgICBpZy5hZGQoXCJub2RlX21vZHVsZXNcIik7XG5cbiAgICAgICAgICAgIGlmIChmc1N5bmMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgICAgICAgICAgICBjb25zdCBnaXRpZ25vcmVDb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZ2l0aWdub3JlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICBpZy5hZGQoZ2l0aWdub3JlQ29udGVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZmcoW1wiKiovKlwiXSwge1xuICAgICAgICAgICAgICBjd2Q6IHRlbXBsYXRlRGlyLFxuICAgICAgICAgICAgICBkb3Q6IHRydWUsXG4gICAgICAgICAgICAgIG9ubHlGaWxlczogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEZpbGVzID0gZmlsZXMuZmlsdGVyKChmaWxlKSA9PiAhaWcuaWdub3JlcyhmaWxlKSk7XG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgZmlsdGVyZWRGaWxlcykge1xuICAgICAgICAgICAgICBjb25zdCBmaWxlID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5qb2luKHRlbXBsYXRlRGlyLCBmaWxlUGF0aCkpO1xuICAgICAgICAgICAgICBjb25zdCBpc0JpbmFyeSA9IGF3YWl0IGlzQmluYXJ5RmlsZShmaWxlKTtcbiAgICAgICAgICAgICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtmaWxlLmJ1ZmZlcl0sIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKFxuICAgICAgICAgICAgICAgIGB0ZW1wbGF0ZToke3BKc29uLm5hbWV9OiR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVQYXRoKX1gLFxuICAgICAgICAgICAgICAgIGlzQmluYXJ5ID8gYmxvYiA6IGF3YWl0IGJsb2IudGV4dCgpLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgcmVzdG9yZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHJlc3RvcmVNYXAgPSBuZXcgTWFwPFxuICAgICAgICAgICAgc3RyaW5nLFxuICAgICAgICAgICAgQXdhaXRlZDxSZXR1cm5UeXBlPHR5cGVvZiB3cml0ZURlcHM+PlxuICAgICAgICAgID4oKTtcbiAgICAgICAgICBmb3IgKGNvbnN0IHAgb2YgcGF0aHMpIHtcbiAgICAgICAgICAgIHJlc3RvcmVNYXAuc2V0KHAsIGF3YWl0IHdyaXRlRGVwcyhwLCBkZXBzKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2hhc3VtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpTT04ocEpzb25QYXRoKTtcblxuICAgICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgeyBmaWxlbmFtZSwgc2hhc3VtIH0gPSBhd2FpdCByZXNvbHZlVGFyYmFsbChcbiAgICAgICAgICAgICAgICBpc1BucG0gPyBcInBucG1cIiA6IFwibnBtXCIsXG4gICAgICAgICAgICAgICAgcCxcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICBzaGFzdW1zW3BKc29uLm5hbWVdID0gc2hhc3VtO1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgc2hhc3VtIGZvciAke3BKc29uLm5hbWV9KCR7ZmlsZW5hbWV9KTogJHtzaGFzdW19YCk7XG5cbiAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGgucmVzb2x2ZShwLCBmaWxlbmFtZSkpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmlsZV0sIHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGBwYWNrYWdlOiR7cEpzb24ubmFtZX1gLCBibG9iLCBmaWxlbmFtZSk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBhd2FpdCByZXN0b3JlTWFwLmdldChwSnNvblBhdGgpPy4oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChwdWJsaXNoVXJsLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICBcInNiLWNvbXBhY3RcIjogYCR7aXNDb21wYWN0fWAsXG4gICAgICAgICAgICAgIFwic2Ita2V5XCI6IGtleSxcbiAgICAgICAgICAgICAgXCJzYi1zaGFzdW1zXCI6IEpTT04uc3RyaW5naWZ5KHNoYXN1bXMpLFxuICAgICAgICAgICAgICBcInNiLXJ1bi1pZFwiOiBHSVRIVUJfUlVOX0lELFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGJvZHk6IGZvcm1EYXRhLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGxhdGVyUmVzID0gYXdhaXQgcmVzLmNsb25lKCkuanNvbigpO1xuICAgICAgICAgIGFzc2VydC5lcXVhbChcbiAgICAgICAgICAgIHJlcy5zdGF0dXMsXG4gICAgICAgICAgICAyMDAsXG4gICAgICAgICAgICBgcHVibGlzaGluZyBmYWlsZWQ6ICR7YXdhaXQgcmVzLnRleHQoKX1gLFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhcIlxcblwiKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGBcdTI2QTFcdUZFMEYgWW91ciBucG0gcGFja2FnZXMgYXJlIHB1Ymxpc2hlZC5cXG4ke1suLi5mb3JtRGF0YS5rZXlzKCldXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGspID0+IGsuc3RhcnRzV2l0aChcInBhY2thZ2U6XCIpKVxuICAgICAgICAgICAgICAubWFwKFxuICAgICAgICAgICAgICAgIChuYW1lLCBpKSA9PlxuICAgICAgICAgICAgICAgICAgYCR7bmFtZS5zbGljZShcInBhY2thZ2U6XCIubGVuZ3RoKX06IG5wbSBpICR7bGF0ZXJSZXMudXJsc1tpXX1gLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5qb2luKFwiXFxuXCIpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSxcbiAgICBsaW5rOiAoKSA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtZXRhOiB7fSxcbiAgICAgICAgcnVuOiAoKSA9PiB7fSxcbiAgICAgIH07XG4gICAgfSxcbiAgfSxcbn0pO1xuXG5ydW5NYWluKG1haW4pO1xuXG4vLyBUT0RPOiB3ZSdsbCBhZGQgc3VwcG9ydCBmb3IgeWFybiBpZiB1c2VycyBoaXQgaXNzdWVzIHdpdGggbnBtXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlVGFyYmFsbChwbTogXCJucG1cIiB8IFwicG5wbVwiLCBwOiBzdHJpbmcpIHtcbiAgaWYgKHBtID09PSBcIm5wbVwiKSB7XG4gICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV6U3Bhd24uYXN5bmMoXCJucG0gcGFjayAtLWpzb25cIiwge1xuICAgICAgc3RkaW86IFwib3ZlcmxhcHBlZFwiLFxuICAgICAgY3dkOiBwLFxuICAgIH0pO1xuXG4gICAgY29uc3QgeyBmaWxlbmFtZSwgc2hhc3VtIH06IHsgZmlsZW5hbWU6IHN0cmluZzsgc2hhc3VtOiBzdHJpbmcgfSA9XG4gICAgICBKU09OLnBhcnNlKHN0ZG91dClbMF07XG5cbiAgICByZXR1cm4geyBmaWxlbmFtZSwgc2hhc3VtIH07XG4gIH0gZWxzZSBpZiAocG0gPT09IFwicG5wbVwiKSB7XG4gICAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV6U3Bhd24uYXN5bmMoXCJwbnBtIHBhY2tcIiwge1xuICAgICAgc3RkaW86IFwib3ZlcmxhcHBlZFwiLFxuICAgICAgY3dkOiBwLFxuICAgIH0pO1xuICAgIGNvbnN0IGZpbGVuYW1lID0gc3Rkb3V0LnRyaW0oKTtcblxuICAgIGNvbnN0IHNoYXN1bSA9IGNyZWF0ZUhhc2goXCJzaGExXCIpXG4gICAgICAudXBkYXRlKGF3YWl0IGZzLnJlYWRGaWxlKHBhdGgucmVzb2x2ZShwLCBmaWxlbmFtZSkpKVxuICAgICAgLmRpZ2VzdChcImhleFwiKTtcblxuICAgIHJldHVybiB7IGZpbGVuYW1lLCBzaGFzdW0gfTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZCBub3QgcmVzb2x2ZSBwYWNrYWdlIG1hbmFnZXJcIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRGVwcyhwOiBzdHJpbmcsIGRlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocEpzb25QYXRoLCBcInV0Zi04XCIpO1xuXG4gIGNvbnN0IHBKc29uID0gYXdhaXQgcmVhZFBhY2thZ2VKU09OKHBKc29uUGF0aCk7XG5cbiAgaGlqYWNrRGVwcyhkZXBzLCBwSnNvbi5kZXBlbmRlbmNpZXMpO1xuICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLmRldkRlcGVuZGVuY2llcyk7XG5cbiAgYXdhaXQgd3JpdGVQYWNrYWdlSlNPTihwSnNvblBhdGgsIHBKc29uKTtcblxuICByZXR1cm4gKCkgPT4gZnMud3JpdGVGaWxlKHBKc29uUGF0aCwgY29udGVudCk7XG59XG5cbmZ1bmN0aW9uIGhpamFja0RlcHMoXG4gIG5ld0RlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4sXG4gIG9sZERlcHM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKSB7XG4gIGlmICghb2xkRGVwcykge1xuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKGNvbnN0IFtuZXdEZXAsIHVybF0gb2YgbmV3RGVwcykge1xuICAgIGlmIChuZXdEZXAgaW4gb2xkRGVwcykge1xuICAgICAgb2xkRGVwc1tuZXdEZXBdID0gdXJsO1xuICAgIH1cbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlDb21wYWN0TW9kZShwYWNrYWdlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IGVycm9yID0gbmV3IEVycm9yKFxuICAgIGBwa2ctcHItbmV3IGNhbm5vdCByZXNvbHZlICR7cGFja2FnZU5hbWV9IGZyb20gbnBtLiAtLWNvbXBhY3QgZmxhZyBkZXBlbmRzIG9uIHRoZSBwYWNrYWdlIGJlaW5nIGF2YWlsYWJsZSBpbiBucG0uXG5NYWtlIHN1cmUgdG8gaGF2ZSB5b3VyIHBhY2thZ2Ugb24gbnBtIGZpcnN0IG9yIGNvbmZpZ3VyZSB0aGUgJ3JlcG9zaXRvcnknIGZpZWxkIGluIHlvdXIgcGFja2FnZS5qc29uIHByb3Blcmx5LmAsXG4gICk7XG4gIHRyeSB7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBnZXRQYWNrYWdlTWFuaWZlc3QocGFja2FnZU5hbWUpO1xuXG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IGV4dHJhY3RSZXBvc2l0b3J5KG1hbmlmZXN0KTtcbiAgICBpZiAoIXJlcG9zaXRvcnkpIHtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoID0gZXh0cmFjdE93bmVyQW5kUmVwbyhyZXBvc2l0b3J5KTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIHRocm93IGVycm9yO1xuICB9XG59XG4iLCAiY29uc3QgZGVmYXVsdHMgPSBPYmplY3QuZnJlZXplKHtcbiAgaWdub3JlVW5rbm93bjogZmFsc2UsXG4gIHJlc3BlY3RUeXBlOiBmYWxzZSxcbiAgcmVzcGVjdEZ1bmN0aW9uTmFtZXM6IGZhbHNlLFxuICByZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzOiBmYWxzZSxcbiAgdW5vcmRlcmVkT2JqZWN0czogdHJ1ZSxcbiAgdW5vcmRlcmVkQXJyYXlzOiBmYWxzZSxcbiAgdW5vcmRlcmVkU2V0czogZmFsc2UsXG4gIGV4Y2x1ZGVLZXlzOiB2b2lkIDAsXG4gIGV4Y2x1ZGVWYWx1ZXM6IHZvaWQgMCxcbiAgcmVwbGFjZXI6IHZvaWQgMFxufSk7XG5mdW5jdGlvbiBvYmplY3RIYXNoKG9iamVjdCwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7IC4uLmRlZmF1bHRzLCAuLi5vcHRpb25zIH07XG4gIH0gZWxzZSB7XG4gICAgb3B0aW9ucyA9IGRlZmF1bHRzO1xuICB9XG4gIGNvbnN0IGhhc2hlciA9IGNyZWF0ZUhhc2hlcihvcHRpb25zKTtcbiAgaGFzaGVyLmRpc3BhdGNoKG9iamVjdCk7XG4gIHJldHVybiBoYXNoZXIudG9TdHJpbmcoKTtcbn1cbmNvbnN0IGRlZmF1bHRQcm90b3R5cGVzS2V5cyA9IE9iamVjdC5mcmVlemUoW1xuICBcInByb3RvdHlwZVwiLFxuICBcIl9fcHJvdG9fX1wiLFxuICBcImNvbnN0cnVjdG9yXCJcbl0pO1xuZnVuY3Rpb24gY3JlYXRlSGFzaGVyKG9wdGlvbnMpIHtcbiAgbGV0IGJ1ZmYgPSBcIlwiO1xuICBsZXQgY29udGV4dCA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gIGNvbnN0IHdyaXRlID0gKHN0cikgPT4ge1xuICAgIGJ1ZmYgKz0gc3RyO1xuICB9O1xuICByZXR1cm4ge1xuICAgIHRvU3RyaW5nKCkge1xuICAgICAgcmV0dXJuIGJ1ZmY7XG4gICAgfSxcbiAgICBnZXRDb250ZXh0KCkge1xuICAgICAgcmV0dXJuIGNvbnRleHQ7XG4gICAgfSxcbiAgICBkaXNwYXRjaCh2YWx1ZSkge1xuICAgICAgaWYgKG9wdGlvbnMucmVwbGFjZXIpIHtcbiAgICAgICAgdmFsdWUgPSBvcHRpb25zLnJlcGxhY2VyKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHR5cGUgPSB2YWx1ZSA9PT0gbnVsbCA/IFwibnVsbFwiIDogdHlwZW9mIHZhbHVlO1xuICAgICAgcmV0dXJuIHRoaXNbdHlwZV0odmFsdWUpO1xuICAgIH0sXG4gICAgb2JqZWN0KG9iamVjdCkge1xuICAgICAgaWYgKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LnRvSlNPTiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9iamVjdChvYmplY3QudG9KU09OKCkpO1xuICAgICAgfVxuICAgICAgY29uc3Qgb2JqU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iamVjdCk7XG4gICAgICBsZXQgb2JqVHlwZSA9IFwiXCI7XG4gICAgICBjb25zdCBvYmplY3RMZW5ndGggPSBvYmpTdHJpbmcubGVuZ3RoO1xuICAgICAgaWYgKG9iamVjdExlbmd0aCA8IDEwKSB7XG4gICAgICAgIG9ialR5cGUgPSBcInVua25vd246W1wiICsgb2JqU3RyaW5nICsgXCJdXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvYmpUeXBlID0gb2JqU3RyaW5nLnNsaWNlKDgsIG9iamVjdExlbmd0aCAtIDEpO1xuICAgICAgfVxuICAgICAgb2JqVHlwZSA9IG9ialR5cGUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCBvYmplY3ROdW1iZXIgPSBudWxsO1xuICAgICAgaWYgKChvYmplY3ROdW1iZXIgPSBjb250ZXh0LmdldChvYmplY3QpKSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGNvbnRleHQuc2V0KG9iamVjdCwgY29udGV4dC5zaXplKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFwiW0NJUkNVTEFSOlwiICsgb2JqZWN0TnVtYmVyICsgXCJdXCIpO1xuICAgICAgfVxuICAgICAgaWYgKHR5cGVvZiBCdWZmZXIgIT09IFwidW5kZWZpbmVkXCIgJiYgQnVmZmVyLmlzQnVmZmVyICYmIEJ1ZmZlci5pc0J1ZmZlcihvYmplY3QpKSB7XG4gICAgICAgIHdyaXRlKFwiYnVmZmVyOlwiKTtcbiAgICAgICAgcmV0dXJuIHdyaXRlKG9iamVjdC50b1N0cmluZyhcInV0ZjhcIikpO1xuICAgICAgfVxuICAgICAgaWYgKG9ialR5cGUgIT09IFwib2JqZWN0XCIgJiYgb2JqVHlwZSAhPT0gXCJmdW5jdGlvblwiICYmIG9ialR5cGUgIT09IFwiYXN5bmNmdW5jdGlvblwiKSB7XG4gICAgICAgIGlmICh0aGlzW29ialR5cGVdKSB7XG4gICAgICAgICAgdGhpc1tvYmpUeXBlXShvYmplY3QpO1xuICAgICAgICB9IGVsc2UgaWYgKCFvcHRpb25zLmlnbm9yZVVua25vd24pIHtcbiAgICAgICAgICB0aGlzLnVua293bihvYmplY3QsIG9ialR5cGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdCk7XG4gICAgICAgIGlmIChvcHRpb25zLnVub3JkZXJlZE9iamVjdHMpIHtcbiAgICAgICAgICBrZXlzID0ga2V5cy5zb3J0KCk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGV4dHJhS2V5cyA9IFtdO1xuICAgICAgICBpZiAob3B0aW9ucy5yZXNwZWN0VHlwZSAhPT0gZmFsc2UgJiYgIWlzTmF0aXZlRnVuY3Rpb24ob2JqZWN0KSkge1xuICAgICAgICAgIGV4dHJhS2V5cyA9IGRlZmF1bHRQcm90b3R5cGVzS2V5cztcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5leGNsdWRlS2V5cykge1xuICAgICAgICAgIGtleXMgPSBrZXlzLmZpbHRlcigoa2V5KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gIW9wdGlvbnMuZXhjbHVkZUtleXMoa2V5KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBleHRyYUtleXMgPSBleHRyYUtleXMuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhb3B0aW9ucy5leGNsdWRlS2V5cyhrZXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHdyaXRlKFwib2JqZWN0OlwiICsgKGtleXMubGVuZ3RoICsgZXh0cmFLZXlzLmxlbmd0aCkgKyBcIjpcIik7XG4gICAgICAgIGNvbnN0IGRpc3BhdGNoRm9yS2V5ID0gKGtleSkgPT4ge1xuICAgICAgICAgIHRoaXMuZGlzcGF0Y2goa2V5KTtcbiAgICAgICAgICB3cml0ZShcIjpcIik7XG4gICAgICAgICAgaWYgKCFvcHRpb25zLmV4Y2x1ZGVWYWx1ZXMpIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2gob2JqZWN0W2tleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB3cml0ZShcIixcIik7XG4gICAgICAgIH07XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgICAgICBkaXNwYXRjaEZvcktleShrZXkpO1xuICAgICAgICB9XG4gICAgICAgIGZvciAoY29uc3Qga2V5IG9mIGV4dHJhS2V5cykge1xuICAgICAgICAgIGRpc3BhdGNoRm9yS2V5KGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIGFycmF5KGFyciwgdW5vcmRlcmVkKSB7XG4gICAgICB1bm9yZGVyZWQgPSB1bm9yZGVyZWQgPT09IHZvaWQgMCA/IG9wdGlvbnMudW5vcmRlcmVkQXJyYXlzICE9PSBmYWxzZSA6IHVub3JkZXJlZDtcbiAgICAgIHdyaXRlKFwiYXJyYXk6XCIgKyBhcnIubGVuZ3RoICsgXCI6XCIpO1xuICAgICAgaWYgKCF1bm9yZGVyZWQgfHwgYXJyLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgYXJyKSB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaChlbnRyeSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dEFkZGl0aW9ucyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCk7XG4gICAgICBjb25zdCBlbnRyaWVzID0gYXJyLm1hcCgoZW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgaGFzaGVyID0gY3JlYXRlSGFzaGVyKG9wdGlvbnMpO1xuICAgICAgICBoYXNoZXIuZGlzcGF0Y2goZW50cnkpO1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBoYXNoZXIuZ2V0Q29udGV4dCgpKSB7XG4gICAgICAgICAgY29udGV4dEFkZGl0aW9ucy5zZXQoa2V5LCB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc2hlci50b1N0cmluZygpO1xuICAgICAgfSk7XG4gICAgICBjb250ZXh0ID0gY29udGV4dEFkZGl0aW9ucztcbiAgICAgIGVudHJpZXMuc29ydCgpO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoZW50cmllcywgZmFsc2UpO1xuICAgIH0sXG4gICAgZGF0ZShkYXRlKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJkYXRlOlwiICsgZGF0ZS50b0pTT04oKSk7XG4gICAgfSxcbiAgICBzeW1ib2woc3ltKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzeW1ib2w6XCIgKyBzeW0udG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICB1bmtvd24odmFsdWUsIHR5cGUpIHtcbiAgICAgIHdyaXRlKHR5cGUpO1xuICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB3cml0ZShcIjpcIik7XG4gICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlLmVudHJpZXMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gdGhpcy5hcnJheShcbiAgICAgICAgICBBcnJheS5mcm9tKHZhbHVlLmVudHJpZXMoKSksXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICAgIC8qIG9yZGVyZWQgKi9cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGVycm9yKGVycikge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZXJyb3I6XCIgKyBlcnIudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICBib29sZWFuKGJvb2wpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImJvb2w6XCIgKyBib29sKTtcbiAgICB9LFxuICAgIHN0cmluZyhzdHJpbmcpIHtcbiAgICAgIHdyaXRlKFwic3RyaW5nOlwiICsgc3RyaW5nLmxlbmd0aCArIFwiOlwiKTtcbiAgICAgIHdyaXRlKHN0cmluZyk7XG4gICAgfSxcbiAgICBmdW5jdGlvbihmbikge1xuICAgICAgd3JpdGUoXCJmbjpcIik7XG4gICAgICBpZiAoaXNOYXRpdmVGdW5jdGlvbihmbikpIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChcIltuYXRpdmVdXCIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXNwYXRjaChmbi50b1N0cmluZygpKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnJlc3BlY3RGdW5jdGlvbk5hbWVzICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKFwiZnVuY3Rpb24tbmFtZTpcIiArIFN0cmluZyhmbi5uYW1lKSk7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9ucy5yZXNwZWN0RnVuY3Rpb25Qcm9wZXJ0aWVzKSB7XG4gICAgICAgIHRoaXMub2JqZWN0KGZuKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG51bWJlcihudW1iZXIpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIm51bWJlcjpcIiArIG51bWJlcik7XG4gICAgfSxcbiAgICB4bWwoeG1sKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ4bWw6XCIgKyB4bWwudG9TdHJpbmcoKSk7XG4gICAgfSxcbiAgICBudWxsKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiTnVsbFwiKTtcbiAgICB9LFxuICAgIHVuZGVmaW5lZCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIlVuZGVmaW5lZFwiKTtcbiAgICB9LFxuICAgIHJlZ2V4cChyZWdleCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicmVnZXg6XCIgKyByZWdleC50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIHVpbnQ4YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcInVpbnQ4YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICB1aW50OGNsYW1wZWRhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDhjbGFtcGVkYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBpbnQ4YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImludDhhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIHVpbnQxNmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJ1aW50MTZhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGludDE2YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImludDE2YXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICB1aW50MzJhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDMyYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBpbnQzMmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJpbnQzMmFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgZmxvYXQzMmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJmbG9hdDMyYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBmbG9hdDY0YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImZsb2F0NjRhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGFycmF5YnVmZmVyKGFycikge1xuICAgICAgd3JpdGUoXCJhcnJheWJ1ZmZlcjpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChuZXcgVWludDhBcnJheShhcnIpKTtcbiAgICB9LFxuICAgIHVybCh1cmwpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInVybDpcIiArIHVybC50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIG1hcChtYXApIHtcbiAgICAgIHdyaXRlKFwibWFwOlwiKTtcbiAgICAgIGNvbnN0IGFyciA9IFsuLi5tYXBdO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoYXJyLCBvcHRpb25zLnVub3JkZXJlZFNldHMgIT09IGZhbHNlKTtcbiAgICB9LFxuICAgIHNldChzZXQpIHtcbiAgICAgIHdyaXRlKFwic2V0OlwiKTtcbiAgICAgIGNvbnN0IGFyciA9IFsuLi5zZXRdO1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXkoYXJyLCBvcHRpb25zLnVub3JkZXJlZFNldHMgIT09IGZhbHNlKTtcbiAgICB9LFxuICAgIGZpbGUoZmlsZSkge1xuICAgICAgd3JpdGUoXCJmaWxlOlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKFtmaWxlLm5hbWUsIGZpbGUuc2l6ZSwgZmlsZS50eXBlLCBmaWxlLmxhc3RNb2RmaWVkXSk7XG4gICAgfSxcbiAgICBibG9iKCkge1xuICAgICAgaWYgKG9wdGlvbnMuaWdub3JlVW5rbm93bikge1xuICAgICAgICByZXR1cm4gd3JpdGUoXCJbYmxvYl1cIik7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdIYXNoaW5nIEJsb2Igb2JqZWN0cyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZFxcblVzZSBcIm9wdGlvbnMucmVwbGFjZXJcIiBvciBcIm9wdGlvbnMuaWdub3JlVW5rbm93blwiXFxuJ1xuICAgICAgKTtcbiAgICB9LFxuICAgIGRvbXdpbmRvdygpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImRvbXdpbmRvd1wiKTtcbiAgICB9LFxuICAgIGJpZ2ludChudW1iZXIpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImJpZ2ludDpcIiArIG51bWJlci50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIC8qIE5vZGUuanMgc3RhbmRhcmQgbmF0aXZlIG9iamVjdHMgKi9cbiAgICBwcm9jZXNzKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicHJvY2Vzc1wiKTtcbiAgICB9LFxuICAgIHRpbWVyKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidGltZXJcIik7XG4gICAgfSxcbiAgICBwaXBlKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwicGlwZVwiKTtcbiAgICB9LFxuICAgIHRjcCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInRjcFwiKTtcbiAgICB9LFxuICAgIHVkcCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInVkcFwiKTtcbiAgICB9LFxuICAgIHR0eSgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInR0eVwiKTtcbiAgICB9LFxuICAgIHN0YXR3YXRjaGVyKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic3RhdHdhdGNoZXJcIik7XG4gICAgfSxcbiAgICBzZWN1cmVjb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic2VjdXJlY29udGV4dFwiKTtcbiAgICB9LFxuICAgIGNvbm5lY3Rpb24oKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJjb25uZWN0aW9uXCIpO1xuICAgIH0sXG4gICAgemxpYigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInpsaWJcIik7XG4gICAgfSxcbiAgICBjb250ZXh0KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiY29udGV4dFwiKTtcbiAgICB9LFxuICAgIG5vZGVzY3JpcHQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJub2Rlc2NyaXB0XCIpO1xuICAgIH0sXG4gICAgaHR0cHBhcnNlcigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImh0dHBwYXJzZXJcIik7XG4gICAgfSxcbiAgICBkYXRhdmlldygpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImRhdGF2aWV3XCIpO1xuICAgIH0sXG4gICAgc2lnbmFsKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwic2lnbmFsXCIpO1xuICAgIH0sXG4gICAgZnNldmVudCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImZzZXZlbnRcIik7XG4gICAgfSxcbiAgICB0bHN3cmFwKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidGxzd3JhcFwiKTtcbiAgICB9XG4gIH07XG59XG5jb25zdCBuYXRpdmVGdW5jID0gXCJbbmF0aXZlIGNvZGVdIH1cIjtcbmNvbnN0IG5hdGl2ZUZ1bmNMZW5ndGggPSBuYXRpdmVGdW5jLmxlbmd0aDtcbmZ1bmN0aW9uIGlzTmF0aXZlRnVuY3Rpb24oZikge1xuICBpZiAodHlwZW9mIGYgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZikuc2xpY2UoLW5hdGl2ZUZ1bmNMZW5ndGgpID09PSBuYXRpdmVGdW5jO1xufVxuXG5jbGFzcyBXb3JkQXJyYXkge1xuICBjb25zdHJ1Y3Rvcih3b3Jkcywgc2lnQnl0ZXMpIHtcbiAgICB3b3JkcyA9IHRoaXMud29yZHMgPSB3b3JkcyB8fCBbXTtcbiAgICB0aGlzLnNpZ0J5dGVzID0gc2lnQnl0ZXMgPT09IHZvaWQgMCA/IHdvcmRzLmxlbmd0aCAqIDQgOiBzaWdCeXRlcztcbiAgfVxuICB0b1N0cmluZyhlbmNvZGVyKSB7XG4gICAgcmV0dXJuIChlbmNvZGVyIHx8IEhleCkuc3RyaW5naWZ5KHRoaXMpO1xuICB9XG4gIGNvbmNhdCh3b3JkQXJyYXkpIHtcbiAgICB0aGlzLmNsYW1wKCk7XG4gICAgaWYgKHRoaXMuc2lnQnl0ZXMgJSA0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHRoYXRCeXRlID0gd29yZEFycmF5LndvcmRzW2kgPj4+IDJdID4+PiAyNCAtIGkgJSA0ICogOCAmIDI1NTtcbiAgICAgICAgdGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzICsgaSA+Pj4gMl0gfD0gdGhhdEJ5dGUgPDwgMjQgLSAodGhpcy5zaWdCeXRlcyArIGkpICUgNCAqIDg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBqICs9IDQpIHtcbiAgICAgICAgdGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzICsgaiA+Pj4gMl0gPSB3b3JkQXJyYXkud29yZHNbaiA+Pj4gMl07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2lnQnl0ZXMgKz0gd29yZEFycmF5LnNpZ0J5dGVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGNsYW1wKCkge1xuICAgIHRoaXMud29yZHNbdGhpcy5zaWdCeXRlcyA+Pj4gMl0gJj0gNDI5NDk2NzI5NSA8PCAzMiAtIHRoaXMuc2lnQnl0ZXMgJSA0ICogODtcbiAgICB0aGlzLndvcmRzLmxlbmd0aCA9IE1hdGguY2VpbCh0aGlzLnNpZ0J5dGVzIC8gNCk7XG4gIH1cbiAgY2xvbmUoKSB7XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkoWy4uLnRoaXMud29yZHNdKTtcbiAgfVxufVxuY29uc3QgSGV4ID0ge1xuICBzdHJpbmdpZnkod29yZEFycmF5KSB7XG4gICAgY29uc3QgaGV4Q2hhcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSsrKSB7XG4gICAgICBjb25zdCBiaXRlID0gd29yZEFycmF5LndvcmRzW2kgPj4+IDJdID4+PiAyNCAtIGkgJSA0ICogOCAmIDI1NTtcbiAgICAgIGhleENoYXJzLnB1c2goKGJpdGUgPj4+IDQpLnRvU3RyaW5nKDE2KSwgKGJpdGUgJiAxNSkudG9TdHJpbmcoMTYpKTtcbiAgICB9XG4gICAgcmV0dXJuIGhleENoYXJzLmpvaW4oXCJcIik7XG4gIH1cbn07XG5jb25zdCBCYXNlNjQgPSB7XG4gIHN0cmluZ2lmeSh3b3JkQXJyYXkpIHtcbiAgICBjb25zdCBrZXlTdHIgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCI7XG4gICAgY29uc3QgYmFzZTY0Q2hhcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSArPSAzKSB7XG4gICAgICBjb25zdCBieXRlMSA9IHdvcmRBcnJheS53b3Jkc1tpID4+PiAyXSA+Pj4gMjQgLSBpICUgNCAqIDggJiAyNTU7XG4gICAgICBjb25zdCBieXRlMiA9IHdvcmRBcnJheS53b3Jkc1tpICsgMSA+Pj4gMl0gPj4+IDI0IC0gKGkgKyAxKSAlIDQgKiA4ICYgMjU1O1xuICAgICAgY29uc3QgYnl0ZTMgPSB3b3JkQXJyYXkud29yZHNbaSArIDIgPj4+IDJdID4+PiAyNCAtIChpICsgMikgJSA0ICogOCAmIDI1NTtcbiAgICAgIGNvbnN0IHRyaXBsZXQgPSBieXRlMSA8PCAxNiB8IGJ5dGUyIDw8IDggfCBieXRlMztcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgNCAmJiBpICogOCArIGogKiA2IDwgd29yZEFycmF5LnNpZ0J5dGVzICogODsgaisrKSB7XG4gICAgICAgIGJhc2U2NENoYXJzLnB1c2goa2V5U3RyLmNoYXJBdCh0cmlwbGV0ID4+PiA2ICogKDMgLSBqKSAmIDYzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiYXNlNjRDaGFycy5qb2luKFwiXCIpO1xuICB9XG59O1xuY29uc3QgTGF0aW4xID0ge1xuICBwYXJzZShsYXRpbjFTdHIpIHtcbiAgICBjb25zdCBsYXRpbjFTdHJMZW5ndGggPSBsYXRpbjFTdHIubGVuZ3RoO1xuICAgIGNvbnN0IHdvcmRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXRpbjFTdHJMZW5ndGg7IGkrKykge1xuICAgICAgd29yZHNbaSA+Pj4gMl0gfD0gKGxhdGluMVN0ci5jaGFyQ29kZUF0KGkpICYgMjU1KSA8PCAyNCAtIGkgJSA0ICogODtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkod29yZHMsIGxhdGluMVN0ckxlbmd0aCk7XG4gIH1cbn07XG5jb25zdCBVdGY4ID0ge1xuICBwYXJzZSh1dGY4U3RyKSB7XG4gICAgcmV0dXJuIExhdGluMS5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodXRmOFN0cikpKTtcbiAgfVxufTtcbmNsYXNzIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLl9kYXRhID0gbmV3IFdvcmRBcnJheSgpO1xuICAgIHRoaXMuX25EYXRhQnl0ZXMgPSAwO1xuICAgIHRoaXMuX21pbkJ1ZmZlclNpemUgPSAwO1xuICAgIHRoaXMuYmxvY2tTaXplID0gNTEyIC8gMzI7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5fZGF0YSA9IG5ldyBXb3JkQXJyYXkoKTtcbiAgICB0aGlzLl9uRGF0YUJ5dGVzID0gMDtcbiAgfVxuICBfYXBwZW5kKGRhdGEpIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGRhdGEgPSBVdGY4LnBhcnNlKGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLl9kYXRhLmNvbmNhdChkYXRhKTtcbiAgICB0aGlzLl9uRGF0YUJ5dGVzICs9IGRhdGEuc2lnQnl0ZXM7XG4gIH1cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBfZG9Qcm9jZXNzQmxvY2soX2RhdGFXb3JkcywgX29mZnNldCkge1xuICB9XG4gIF9wcm9jZXNzKGRvRmx1c2gpIHtcbiAgICBsZXQgcHJvY2Vzc2VkV29yZHM7XG4gICAgbGV0IG5CbG9ja3NSZWFkeSA9IHRoaXMuX2RhdGEuc2lnQnl0ZXMgLyAodGhpcy5ibG9ja1NpemUgKiA0KTtcbiAgICBpZiAoZG9GbHVzaCkge1xuICAgICAgbkJsb2Nrc1JlYWR5ID0gTWF0aC5jZWlsKG5CbG9ja3NSZWFkeSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5CbG9ja3NSZWFkeSA9IE1hdGgubWF4KChuQmxvY2tzUmVhZHkgfCAwKSAtIHRoaXMuX21pbkJ1ZmZlclNpemUsIDApO1xuICAgIH1cbiAgICBjb25zdCBuV29yZHNSZWFkeSA9IG5CbG9ja3NSZWFkeSAqIHRoaXMuYmxvY2tTaXplO1xuICAgIGNvbnN0IG5CeXRlc1JlYWR5ID0gTWF0aC5taW4obldvcmRzUmVhZHkgKiA0LCB0aGlzLl9kYXRhLnNpZ0J5dGVzKTtcbiAgICBpZiAobldvcmRzUmVhZHkpIHtcbiAgICAgIGZvciAobGV0IG9mZnNldCA9IDA7IG9mZnNldCA8IG5Xb3Jkc1JlYWR5OyBvZmZzZXQgKz0gdGhpcy5ibG9ja1NpemUpIHtcbiAgICAgICAgdGhpcy5fZG9Qcm9jZXNzQmxvY2sodGhpcy5fZGF0YS53b3Jkcywgb2Zmc2V0KTtcbiAgICAgIH1cbiAgICAgIHByb2Nlc3NlZFdvcmRzID0gdGhpcy5fZGF0YS53b3Jkcy5zcGxpY2UoMCwgbldvcmRzUmVhZHkpO1xuICAgICAgdGhpcy5fZGF0YS5zaWdCeXRlcyAtPSBuQnl0ZXNSZWFkeTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkocHJvY2Vzc2VkV29yZHMsIG5CeXRlc1JlYWR5KTtcbiAgfVxufVxuY2xhc3MgSGFzaGVyIGV4dGVuZHMgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSB7XG4gIHVwZGF0ZShtZXNzYWdlVXBkYXRlKSB7XG4gICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuICAgIHRoaXMuX3Byb2Nlc3MoKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBmaW5hbGl6ZShtZXNzYWdlVXBkYXRlKSB7XG4gICAgaWYgKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICAgIHRoaXMuX2FwcGVuZChtZXNzYWdlVXBkYXRlKTtcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgSCA9IFtcbiAgMTc3OTAzMzcwMyxcbiAgLTExNTA4MzMwMTksXG4gIDEwMTM5MDQyNDIsXG4gIC0xNTIxNDg2NTM0LFxuICAxMzU5ODkzMTE5LFxuICAtMTY5NDE0NDM3MixcbiAgNTI4NzM0NjM1LFxuICAxNTQxNDU5MjI1XG5dO1xuY29uc3QgSyA9IFtcbiAgMTExNjM1MjQwOCxcbiAgMTg5OTQ0NzQ0MSxcbiAgLTEyNDU2NDM4MjUsXG4gIC0zNzM5NTc3MjMsXG4gIDk2MTk4NzE2MyxcbiAgMTUwODk3MDk5MyxcbiAgLTE4NDEzMzE1NDgsXG4gIC0xNDI0MjA0MDc1LFxuICAtNjcwNTg2MjE2LFxuICAzMTA1OTg0MDEsXG4gIDYwNzIyNTI3OCxcbiAgMTQyNjg4MTk4NyxcbiAgMTkyNTA3ODM4OCxcbiAgLTIxMzI4ODkwOTAsXG4gIC0xNjgwMDc5MTkzLFxuICAtMTA0Njc0NDcxNixcbiAgLTQ1OTU3Njg5NSxcbiAgLTI3Mjc0MjUyMixcbiAgMjY0MzQ3MDc4LFxuICA2MDQ4MDc2MjgsXG4gIDc3MDI1NTk4MyxcbiAgMTI0OTE1MDEyMixcbiAgMTU1NTA4MTY5MixcbiAgMTk5NjA2NDk4NixcbiAgLTE3NDA3NDY0MTQsXG4gIC0xNDczMTMyOTQ3LFxuICAtMTM0MTk3MDQ4OCxcbiAgLTEwODQ2NTM2MjUsXG4gIC05NTgzOTU0MDUsXG4gIC03MTA0Mzg1ODUsXG4gIDExMzkyNjk5MyxcbiAgMzM4MjQxODk1LFxuICA2NjYzMDcyMDUsXG4gIDc3MzUyOTkxMixcbiAgMTI5NDc1NzM3MixcbiAgMTM5NjE4MjI5MSxcbiAgMTY5NTE4MzcwMCxcbiAgMTk4NjY2MTA1MSxcbiAgLTIxMTc5NDA5NDYsXG4gIC0xODM4MDExMjU5LFxuICAtMTU2NDQ4MTM3NSxcbiAgLTE0NzQ2NjQ4ODUsXG4gIC0xMDM1MjM2NDk2LFxuICAtOTQ5MjAyNTI1LFxuICAtNzc4OTAxNDc5LFxuICAtNjk0NjE0NDkyLFxuICAtMjAwMzk1Mzg3LFxuICAyNzU0MjMzNDQsXG4gIDQzMDIyNzczNCxcbiAgNTA2OTQ4NjE2LFxuICA2NTkwNjA1NTYsXG4gIDg4Mzk5Nzg3NyxcbiAgOTU4MTM5NTcxLFxuICAxMzIyODIyMjE4LFxuICAxNTM3MDAyMDYzLFxuICAxNzQ3ODczNzc5LFxuICAxOTU1NTYyMjIyLFxuICAyMDI0MTA0ODE1LFxuICAtMjA2NzIzNjg0NCxcbiAgLTE5MzMxMTQ4NzIsXG4gIC0xODY2NTMwODIyLFxuICAtMTUzODIzMzEwOSxcbiAgLTEwOTA5MzU4MTcsXG4gIC05NjU2NDE5OThcbl07XG5jb25zdCBXID0gW107XG5jbGFzcyBTSEEyNTYgZXh0ZW5kcyBIYXNoZXIge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5KFsuLi5IXSk7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgc3VwZXIucmVzZXQoKTtcbiAgICB0aGlzLl9oYXNoID0gbmV3IFdvcmRBcnJheShbLi4uSF0pO1xuICB9XG4gIF9kb1Byb2Nlc3NCbG9jayhNLCBvZmZzZXQpIHtcbiAgICBjb25zdCBIMiA9IHRoaXMuX2hhc2gud29yZHM7XG4gICAgbGV0IGEgPSBIMlswXTtcbiAgICBsZXQgYiA9IEgyWzFdO1xuICAgIGxldCBjID0gSDJbMl07XG4gICAgbGV0IGQgPSBIMlszXTtcbiAgICBsZXQgZSA9IEgyWzRdO1xuICAgIGxldCBmID0gSDJbNV07XG4gICAgbGV0IGcgPSBIMls2XTtcbiAgICBsZXQgaCA9IEgyWzddO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgNjQ7IGkrKykge1xuICAgICAgaWYgKGkgPCAxNikge1xuICAgICAgICBXW2ldID0gTVtvZmZzZXQgKyBpXSB8IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBnYW1tYTB4ID0gV1tpIC0gMTVdO1xuICAgICAgICBjb25zdCBnYW1tYTAgPSAoZ2FtbWEweCA8PCAyNSB8IGdhbW1hMHggPj4+IDcpIF4gKGdhbW1hMHggPDwgMTQgfCBnYW1tYTB4ID4+PiAxOCkgXiBnYW1tYTB4ID4+PiAzO1xuICAgICAgICBjb25zdCBnYW1tYTF4ID0gV1tpIC0gMl07XG4gICAgICAgIGNvbnN0IGdhbW1hMSA9IChnYW1tYTF4IDw8IDE1IHwgZ2FtbWExeCA+Pj4gMTcpIF4gKGdhbW1hMXggPDwgMTMgfCBnYW1tYTF4ID4+PiAxOSkgXiBnYW1tYTF4ID4+PiAxMDtcbiAgICAgICAgV1tpXSA9IGdhbW1hMCArIFdbaSAtIDddICsgZ2FtbWExICsgV1tpIC0gMTZdO1xuICAgICAgfVxuICAgICAgY29uc3QgY2ggPSBlICYgZiBeIH5lICYgZztcbiAgICAgIGNvbnN0IG1haiA9IGEgJiBiIF4gYSAmIGMgXiBiICYgYztcbiAgICAgIGNvbnN0IHNpZ21hMCA9IChhIDw8IDMwIHwgYSA+Pj4gMikgXiAoYSA8PCAxOSB8IGEgPj4+IDEzKSBeIChhIDw8IDEwIHwgYSA+Pj4gMjIpO1xuICAgICAgY29uc3Qgc2lnbWExID0gKGUgPDwgMjYgfCBlID4+PiA2KSBeIChlIDw8IDIxIHwgZSA+Pj4gMTEpIF4gKGUgPDwgNyB8IGUgPj4+IDI1KTtcbiAgICAgIGNvbnN0IHQxID0gaCArIHNpZ21hMSArIGNoICsgS1tpXSArIFdbaV07XG4gICAgICBjb25zdCB0MiA9IHNpZ21hMCArIG1hajtcbiAgICAgIGggPSBnO1xuICAgICAgZyA9IGY7XG4gICAgICBmID0gZTtcbiAgICAgIGUgPSBkICsgdDEgfCAwO1xuICAgICAgZCA9IGM7XG4gICAgICBjID0gYjtcbiAgICAgIGIgPSBhO1xuICAgICAgYSA9IHQxICsgdDIgfCAwO1xuICAgIH1cbiAgICBIMlswXSA9IEgyWzBdICsgYSB8IDA7XG4gICAgSDJbMV0gPSBIMlsxXSArIGIgfCAwO1xuICAgIEgyWzJdID0gSDJbMl0gKyBjIHwgMDtcbiAgICBIMlszXSA9IEgyWzNdICsgZCB8IDA7XG4gICAgSDJbNF0gPSBIMls0XSArIGUgfCAwO1xuICAgIEgyWzVdID0gSDJbNV0gKyBmIHwgMDtcbiAgICBIMls2XSA9IEgyWzZdICsgZyB8IDA7XG4gICAgSDJbN10gPSBIMls3XSArIGggfCAwO1xuICB9XG4gIGZpbmFsaXplKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICBzdXBlci5maW5hbGl6ZShtZXNzYWdlVXBkYXRlKTtcbiAgICBjb25zdCBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG4gICAgY29uc3QgbkJpdHNMZWZ0ID0gdGhpcy5fZGF0YS5zaWdCeXRlcyAqIDg7XG4gICAgdGhpcy5fZGF0YS53b3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDEyOCA8PCAyNCAtIG5CaXRzTGVmdCAlIDMyO1xuICAgIHRoaXMuX2RhdGEud29yZHNbKG5CaXRzTGVmdCArIDY0ID4+PiA5IDw8IDQpICsgMTRdID0gTWF0aC5mbG9vcihcbiAgICAgIG5CaXRzVG90YWwgLyA0Mjk0OTY3Mjk2XG4gICAgKTtcbiAgICB0aGlzLl9kYXRhLndvcmRzWyhuQml0c0xlZnQgKyA2NCA+Pj4gOSA8PCA0KSArIDE1XSA9IG5CaXRzVG90YWw7XG4gICAgdGhpcy5fZGF0YS5zaWdCeXRlcyA9IHRoaXMuX2RhdGEud29yZHMubGVuZ3RoICogNDtcbiAgICB0aGlzLl9wcm9jZXNzKCk7XG4gICAgcmV0dXJuIHRoaXMuX2hhc2g7XG4gIH1cbn1cbmZ1bmN0aW9uIHNoYTI1NihtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgU0hBMjU2KCkuZmluYWxpemUobWVzc2FnZSkudG9TdHJpbmcoKTtcbn1cbmZ1bmN0aW9uIHNoYTI1NmJhc2U2NChtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgU0hBMjU2KCkuZmluYWxpemUobWVzc2FnZSkudG9TdHJpbmcoQmFzZTY0KTtcbn1cblxuZnVuY3Rpb24gaGFzaChvYmplY3QsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBoYXNoZWQgPSB0eXBlb2Ygb2JqZWN0ID09PSBcInN0cmluZ1wiID8gb2JqZWN0IDogb2JqZWN0SGFzaChvYmplY3QsIG9wdGlvbnMpO1xuICByZXR1cm4gc2hhMjU2YmFzZTY0KGhhc2hlZCkuc2xpY2UoMCwgMTApO1xufVxuXG5mdW5jdGlvbiBtdXJtdXJIYXNoKGtleSwgc2VlZCA9IDApIHtcbiAgaWYgKHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIpIHtcbiAgICBrZXkgPSBjcmVhdGVCdWZmZXIoa2V5KTtcbiAgfVxuICBsZXQgaSA9IDA7XG4gIGxldCBoMSA9IHNlZWQ7XG4gIGxldCBrMTtcbiAgbGV0IGgxYjtcbiAgY29uc3QgcmVtYWluZGVyID0ga2V5Lmxlbmd0aCAmIDM7XG4gIGNvbnN0IGJ5dGVzID0ga2V5Lmxlbmd0aCAtIHJlbWFpbmRlcjtcbiAgY29uc3QgYzEgPSAzNDMyOTE4MzUzO1xuICBjb25zdCBjMiA9IDQ2MTg0NTkwNztcbiAgd2hpbGUgKGkgPCBieXRlcykge1xuICAgIGsxID0ga2V5W2ldICYgMjU1IHwgKGtleVsrK2ldICYgMjU1KSA8PCA4IHwgKGtleVsrK2ldICYgMjU1KSA8PCAxNiB8IChrZXlbKytpXSAmIDI1NSkgPDwgMjQ7XG4gICAgKytpO1xuICAgIGsxID0gKGsxICYgNjU1MzUpICogYzEgKyAoKChrMSA+Pj4gMTYpICogYzEgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICBrMSA9IGsxIDw8IDE1IHwgazEgPj4+IDE3O1xuICAgIGsxID0gKGsxICYgNjU1MzUpICogYzIgKyAoKChrMSA+Pj4gMTYpICogYzIgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICBoMSBePSBrMTtcbiAgICBoMSA9IGgxIDw8IDEzIHwgaDEgPj4+IDE5O1xuICAgIGgxYiA9IChoMSAmIDY1NTM1KSAqIDUgKyAoKChoMSA+Pj4gMTYpICogNSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgIGgxID0gKGgxYiAmIDY1NTM1KSArIDI3NDkyICsgKCgoaDFiID4+PiAxNikgKyA1ODk2NCAmIDY1NTM1KSA8PCAxNik7XG4gIH1cbiAgazEgPSAwO1xuICBzd2l0Y2ggKHJlbWFpbmRlcikge1xuICAgIGNhc2UgMzoge1xuICAgICAgazEgXj0gKGtleVtpICsgMl0gJiAyNTUpIDw8IDE2O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgMjoge1xuICAgICAgazEgXj0gKGtleVtpICsgMV0gJiAyNTUpIDw8IDg7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAxOiB7XG4gICAgICBrMSBePSBrZXlbaV0gJiAyNTU7XG4gICAgICBrMSA9IChrMSAmIDY1NTM1KSAqIGMxICsgKCgoazEgPj4+IDE2KSAqIGMxICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgICBrMSA9IGsxIDw8IDE1IHwgazEgPj4+IDE3O1xuICAgICAgazEgPSAoazEgJiA2NTUzNSkgKiBjMiArICgoKGsxID4+PiAxNikgKiBjMiAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgICAgaDEgXj0gazE7XG4gICAgfVxuICB9XG4gIGgxIF49IGtleS5sZW5ndGg7XG4gIGgxIF49IGgxID4+PiAxNjtcbiAgaDEgPSAoaDEgJiA2NTUzNSkgKiAyMjQ2ODIyNTA3ICsgKCgoaDEgPj4+IDE2KSAqIDIyNDY4MjI1MDcgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgaDEgXj0gaDEgPj4+IDEzO1xuICBoMSA9IChoMSAmIDY1NTM1KSAqIDMyNjY0ODk5MDkgKyAoKChoMSA+Pj4gMTYpICogMzI2NjQ4OTkwOSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICBoMSBePSBoMSA+Pj4gMTY7XG4gIHJldHVybiBoMSA+Pj4gMDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlcih2YWwpIHtcbiAgcmV0dXJuIG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZSh2YWwpO1xufVxuXG5mdW5jdGlvbiBpc0VxdWFsKG9iamVjdDEsIG9iamVjdDIsIGhhc2hPcHRpb25zID0ge30pIHtcbiAgaWYgKG9iamVjdDEgPT09IG9iamVjdDIpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAob2JqZWN0SGFzaChvYmplY3QxLCBoYXNoT3B0aW9ucykgPT09IG9iamVjdEhhc2gob2JqZWN0MiwgaGFzaE9wdGlvbnMpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5mdW5jdGlvbiBkaWZmKG9iajEsIG9iajIsIG9wdHMgPSB7fSkge1xuICBjb25zdCBoMSA9IF90b0hhc2hlZE9iamVjdChvYmoxLCBvcHRzKTtcbiAgY29uc3QgaDIgPSBfdG9IYXNoZWRPYmplY3Qob2JqMiwgb3B0cyk7XG4gIHJldHVybiBfZGlmZihoMSwgaDIsIG9wdHMpO1xufVxuZnVuY3Rpb24gX2RpZmYoaDEsIGgyLCBvcHRzID0ge30pIHtcbiAgY29uc3QgZGlmZnMgPSBbXTtcbiAgY29uc3QgYWxsUHJvcHMgPSAvKiBAX19QVVJFX18gKi8gbmV3IFNldChbXG4gICAgLi4uT2JqZWN0LmtleXMoaDEucHJvcHMgfHwge30pLFxuICAgIC4uLk9iamVjdC5rZXlzKGgyLnByb3BzIHx8IHt9KVxuICBdKTtcbiAgaWYgKGgxLnByb3BzICYmIGgyLnByb3BzKSB7XG4gICAgZm9yIChjb25zdCBwcm9wIG9mIGFsbFByb3BzKSB7XG4gICAgICBjb25zdCBwMSA9IGgxLnByb3BzW3Byb3BdO1xuICAgICAgY29uc3QgcDIgPSBoMi5wcm9wc1twcm9wXTtcbiAgICAgIGlmIChwMSAmJiBwMikge1xuICAgICAgICBkaWZmcy5wdXNoKC4uLl9kaWZmKGgxLnByb3BzPy5bcHJvcF0sIGgyLnByb3BzPy5bcHJvcF0sIG9wdHMpKTtcbiAgICAgIH0gZWxzZSBpZiAocDEgfHwgcDIpIHtcbiAgICAgICAgZGlmZnMucHVzaChcbiAgICAgICAgICBuZXcgRGlmZkVudHJ5KChwMiB8fCBwMSkua2V5LCBwMSA/IFwicmVtb3ZlZFwiIDogXCJhZGRlZFwiLCBwMiwgcDEpXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChhbGxQcm9wcy5zaXplID09PSAwICYmIGgxLmhhc2ggIT09IGgyLmhhc2gpIHtcbiAgICBkaWZmcy5wdXNoKG5ldyBEaWZmRW50cnkoKGgyIHx8IGgxKS5rZXksIFwiY2hhbmdlZFwiLCBoMiwgaDEpKTtcbiAgfVxuICByZXR1cm4gZGlmZnM7XG59XG5mdW5jdGlvbiBfdG9IYXNoZWRPYmplY3Qob2JqLCBvcHRzLCBrZXkgPSBcIlwiKSB7XG4gIGlmIChvYmogJiYgdHlwZW9mIG9iaiAhPT0gXCJvYmplY3RcIikge1xuICAgIHJldHVybiBuZXcgRGlmZkhhc2hlZE9iamVjdChrZXksIG9iaiwgb2JqZWN0SGFzaChvYmosIG9wdHMpKTtcbiAgfVxuICBjb25zdCBwcm9wcyA9IHt9O1xuICBjb25zdCBoYXNoZXMgPSBbXTtcbiAgZm9yIChjb25zdCBfa2V5IGluIG9iaikge1xuICAgIHByb3BzW19rZXldID0gX3RvSGFzaGVkT2JqZWN0KFxuICAgICAgb2JqW19rZXldLFxuICAgICAgb3B0cyxcbiAgICAgIGtleSA/IGAke2tleX0uJHtfa2V5fWAgOiBfa2V5XG4gICAgKTtcbiAgICBoYXNoZXMucHVzaChwcm9wc1tfa2V5XS5oYXNoKTtcbiAgfVxuICByZXR1cm4gbmV3IERpZmZIYXNoZWRPYmplY3Qoa2V5LCBvYmosIGB7JHtoYXNoZXMuam9pbihcIjpcIil9fWAsIHByb3BzKTtcbn1cbmNsYXNzIERpZmZFbnRyeSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKGtleSwgdHlwZSwgbmV3VmFsdWUsIG9sZFZhbHVlKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLm5ld1ZhbHVlID0gbmV3VmFsdWU7XG4gICAgdGhpcy5vbGRWYWx1ZSA9IG9sZFZhbHVlO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLnRvSlNPTigpO1xuICB9XG4gIHRvSlNPTigpIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgY2FzZSBcImFkZGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBBZGRlZCAgIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJyZW1vdmVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBSZW1vdmVkIFxcYCR7dGhpcy5rZXl9XFxgYDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjaGFuZ2VkXCI6IHtcbiAgICAgICAgcmV0dXJuIGBDaGFuZ2VkIFxcYCR7dGhpcy5rZXl9XFxgIGZyb20gXFxgJHt0aGlzLm9sZFZhbHVlPy50b1N0cmluZygpIHx8IFwiLVwifVxcYCB0byBcXGAke3RoaXMubmV3VmFsdWUudG9TdHJpbmcoKX1cXGBgO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY2xhc3MgRGlmZkhhc2hlZE9iamVjdCB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2VsZXNzLWNvbnN0cnVjdG9yXG4gIGNvbnN0cnVjdG9yKGtleSwgdmFsdWUsIGhhc2gsIHByb3BzKSB7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuaGFzaCA9IGhhc2g7XG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB9XG4gIHRvU3RyaW5nKCkge1xuICAgIGlmICh0aGlzLnByb3BzKSB7XG4gICAgICByZXR1cm4gYHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oXCIsXCIpfX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCBrID0gdGhpcy5rZXkgfHwgXCIuXCI7XG4gICAgaWYgKHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiBgJHtrfSh7JHtPYmplY3Qua2V5cyh0aGlzLnByb3BzKS5qb2luKFwiLFwiKX19KWA7XG4gICAgfVxuICAgIHJldHVybiBgJHtrfSgke3RoaXMudmFsdWV9KWA7XG4gIH1cbn1cblxuZXhwb3J0IHsgZGlmZiwgaGFzaCwgaXNFcXVhbCwgbXVybXVySGFzaCwgb2JqZWN0SGFzaCwgc2hhMjU2LCBzaGEyNTZiYXNlNjQgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuXG5jb25zdCBnaXRodWJVcmxSZWdleCA9XG4gIC8oPzpnaXRcXCspP2h0dHBzPzpcXC9cXC9naXRodWJcXC5jb21cXC8oW15cXC9dK1xcL1teXFwvXSspXFwuZ2l0LzsgLy8gVE9ETzogRG9uJ3QgdHJ1c3QgdGhpcywgaXQncyBjaGF0Z2JkIDopXG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0T3duZXJBbmRSZXBvKFxuICByZXBvc2l0b3J5VXJsOiBzdHJpbmcsXG4pOiBbc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoID0gcmVwb3NpdG9yeVVybC5tYXRjaChnaXRodWJVcmxSZWdleCk7XG5cbiAgaWYgKG1hdGNoKSB7XG4gICAgY29uc3QgW293bmVyLCByZXBvXSA9IG1hdGNoWzFdLnNwbGl0KFwiL1wiKTtcbiAgICByZXR1cm4gW293bmVyLCByZXBvXTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdFJlcG9zaXRvcnkobWFuaWZlc3Q6IFBhY2thZ2VNYW5pZmVzdCkge1xuICByZXR1cm4gdHlwZW9mIG1hbmlmZXN0LnJlcG9zaXRvcnkgPT09IFwic3RyaW5nXCJcbiAgICA/IG1hbmlmZXN0LnJlcG9zaXRvcnlcbiAgICA6IG1hbmlmZXN0LnJlcG9zaXRvcnk/LnVybDtcbn1cblxuY29uc3QgY29tbWl0TGVuZ3RoID0gNztcblxuLypcbiAqIFwiMDllZmQwNTUzMzc0ZmY3ZDNlNjJiNzkzNzhlMzE4NGY1ZWI1NzU3MVwiID0+IFwiMDllZmQwNVwiXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhYmJyZXZpYXRlQ29tbWl0SGFzaChmdWxsSGFzaDogc3RyaW5nKSB7XG4gIHJldHVybiBmdWxsSGFzaC5zdWJzdHJpbmcoMCwgY29tbWl0TGVuZ3RoKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHVsbFJlcXVlc3QocmVmOiBzdHJpbmcpIHtcbiAgcmV0dXJuICFOdW1iZXIuaXNOYU4oTnVtYmVyKHJlZikpXG59XG4iLCAie1xuICBcIm5hbWVcIjogXCJwa2ctcHItbmV3XCIsXG4gIFwidmVyc2lvblwiOiBcIjAuMC43XCIsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJcIixcbiAgXCJtYWluXCI6IFwiaW5kZXguanNcIixcbiAgXCJ0eXBlXCI6IFwibW9kdWxlXCIsXG4gIFwiYmluXCI6IHtcbiAgICBcInBrZy1wci1uZXdcIjogXCJiaW4vY2xpLmpzXCJcbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImRldlwiOiBcInRzdXAgLS13YXRjaFwiLFxuICAgIFwiYnVpbGRcIjogXCJ0c3VwXCIsXG4gICAgXCJidWlsZDpwdWJsaXNoXCI6IFwiQVBJX1VSTD1odHRwczovL3BrZy5wci5uZXcvIHRzdXBcIlxuICB9LFxuICBcImtleXdvcmRzXCI6IFtdLFxuICBcImF1dGhvclwiOiBcIlwiLFxuICBcImxpY2Vuc2VcIjogXCJJU0NcIixcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGpzZGV2dG9vbHMvZXotc3Bhd25cIjogXCJeMy4wLjRcIixcbiAgICBcIkBvY3Rva2l0L2FjdGlvblwiOiBcIl42LjEuMFwiLFxuICAgIFwiZmFzdC1nbG9iXCI6IFwiXjMuMy4yXCIsXG4gICAgXCJpZ25vcmVcIjogXCJeNS4zLjFcIixcbiAgICBcImlzYmluYXJ5ZmlsZVwiOiBcIl41LjAuMlwiLFxuICAgIFwicGtnLXR5cGVzXCI6IFwiXjEuMS4xXCIsXG4gICAgXCJxdWVyeS1yZWdpc3RyeVwiOiBcIl4zLjAuMFwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBwa2ctcHItbmV3L3V0aWxzXCI6IFwid29ya3NwYWNlOl5cIixcbiAgICBcImNpdHR5XCI6IFwiXjAuMS42XCIsXG4gICAgXCJ0c3VwXCI6IFwiXjguMC4yXCJcbiAgfVxufVxuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7QUFxRUEsU0FBUyxTQUFTLE9BQU87QUFDdkIsU0FBTyxVQUFVLFFBQVEsT0FBTyxVQUFVO0FBQzVDO0FBQ0EsU0FBUyxNQUFNLFlBQVlBLFdBQVUsWUFBWSxLQUFLLFFBQVE7QUFDNUQsTUFBSSxDQUFDLFNBQVNBLFNBQVEsR0FBRztBQUN2QixXQUFPLE1BQU0sWUFBWSxDQUFDLEdBQUcsV0FBVyxNQUFNO0FBQUEsRUFDaEQ7QUFDQSxRQUFNLFNBQVMsT0FBTyxPQUFPLENBQUMsR0FBR0EsU0FBUTtBQUN6QyxhQUFXLE9BQU8sWUFBWTtBQUM1QixRQUFJLFFBQVEsZUFBZSxRQUFRLGVBQWU7QUFDaEQ7QUFBQSxJQUNGO0FBQ0EsVUFBTSxRQUFRLFdBQVcsR0FBRztBQUM1QixRQUFJLFVBQVUsUUFBUSxVQUFVLFFBQVE7QUFDdEM7QUFBQSxJQUNGO0FBQ0EsUUFBSSxVQUFVLE9BQU8sUUFBUSxLQUFLLE9BQU8sU0FBUyxHQUFHO0FBQ25EO0FBQUEsSUFDRjtBQUNBLFFBQUksTUFBTSxRQUFRLEtBQUssS0FBSyxNQUFNLFFBQVEsT0FBTyxHQUFHLENBQUMsR0FBRztBQUN0RCxhQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsT0FBTyxHQUFHLE9BQU8sR0FBRyxDQUFDO0FBQUEsSUFDekMsV0FBVyxTQUFTLEtBQUssS0FBSyxT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QUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsUUFBTSxNQUFJLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsU0FBTyxNQUFJLE1BQUksS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxRQUFNLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsU0FBTyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLEtBQUcsU0FBTyxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsV0FBUyxXQUFTLEtBQUcsS0FBRyxVQUFRLE1BQUk7QUFBQSxNQUFHLEdBQUUsRUFBRSxrQkFBZ0IsU0FBUyxHQUFFO0FBQUMsWUFBSUEsS0FBRSxLQUFLLGVBQWUsQ0FBQztBQUFFLGVBQU9BLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE1BQUksSUFBRTtBQUFBLE1BQUM7QUFBRSxlQUFTLEVBQUUsR0FBRTtBQUFDLGVBQU8sRUFBRSxNQUFNLGtEQUFrRCxLQUFHLENBQUM7QUFBQSxNQUFDO0FBQUMsUUFBRSxTQUFPLFNBQVMsR0FBRTtBQUFDLGlCQUFRQSxLQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRUEsR0FBRSxRQUFPO0FBQUksY0FBRSxJQUFFLEtBQUssZ0JBQWdCQSxHQUFFLENBQUMsQ0FBQztBQUFFLGVBQU87QUFBQSxNQUFDLEdBQUUsRUFBRSxRQUFNLFNBQVMsR0FBRUEsSUFBRSxHQUFFO0FBQUMsa0JBQVEsRUFBRSxPQUFPLENBQUMsR0FBRUEsS0FBRUEsTUFBRyxHQUFFLElBQUUsS0FBRyxHQUFFQSxLQUFFLE1BQUlBLEtBQUUsVUFBUUEsS0FBRyxJQUFFLE1BQUksSUFBRSxVQUFRO0FBQUcsaUJBQVEsSUFBRSxJQUFHLElBQUUsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsY0FBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFPLENBQUM7QUFBRSxjQUFHLEtBQUdBLE1BQUcsS0FBRyxJQUFFLElBQUU7QUFBRyxnQkFBRyxJQUFFLEtBQUc7QUFBRSxtQkFBRztBQUFBO0FBQU87QUFBTSxlQUFHO0FBQUEsUUFBRTtBQUFDLGVBQU87QUFBQSxNQUFDO0FBQUEsSUFBRSxHQUFHLENBQUM7QUFBRSxJQUFNLElBQUU7QUFBRSxJQUFJLElBQUUsV0FBVTtBQUFDLGFBQU87QUFBQSxJQUFneWU7QUFBb1gsSUFBTSxJQUFFO0FBQVIsSUFBVyxJQUFFLENBQUMsSUFBRSxNQUFJLE9BQUcsUUFBUSxJQUFFLENBQUM7QUFBbEMsSUFBc0MsSUFBRSxDQUFDLElBQUUsTUFBSSxPQUFHLFFBQVEsS0FBRyxDQUFDLE1BQU0sQ0FBQztBQUFyRSxJQUF5RSxJQUFFLENBQUMsSUFBRSxNQUFJLENBQUMsR0FBRSxHQUFFLE1BQUksUUFBUSxLQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7QUFBeEgsSUFBNEgsSUFBRSxFQUFDLFVBQVMsRUFBQyxPQUFNLENBQUMsR0FBRSxDQUFDLEdBQUUsTUFBSyxDQUFDLEdBQUUsRUFBRSxHQUFFLEtBQUksQ0FBQyxHQUFFLEVBQUUsR0FBRSxRQUFPLENBQUMsR0FBRSxFQUFFLEdBQUUsV0FBVSxDQUFDLEdBQUUsRUFBRSxHQUFFLFVBQVMsQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsR0FBRSxFQUFFLEdBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxHQUFFLGVBQWMsQ0FBQyxHQUFFLEVBQUUsRUFBQyxHQUFFLE9BQU0sRUFBQyxPQUFNLENBQUMsSUFBRyxFQUFFLEdBQUUsS0FBSSxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxRQUFPLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLFNBQVEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxNQUFLLENBQUMsSUFBRyxFQUFFLEdBQUUsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLGFBQVksQ0FBQyxJQUFHLEVBQUUsR0FBRSxNQUFLLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLFdBQVUsQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEdBQUUsY0FBYSxDQUFDLElBQUcsRUFBRSxHQUFFLFlBQVcsQ0FBQyxJQUFHLEVBQUUsR0FBRSxlQUFjLENBQUMsSUFBRyxFQUFFLEdBQUUsWUFBVyxDQUFDLElBQUcsRUFBRSxHQUFFLGFBQVksQ0FBQyxJQUFHLEVBQUUsRUFB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QUFTO0FBQ2hELGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUssUUFBVSxhQUNWLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLFNBQ3BDLFNBQVUsYUFBYSxhQUFhLE9BQVM7QUFDaEQsaUJBQU87QUFBQSxRQUNUO0FBQ0EsWUFBSyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxRQUFVO0FBQ2xELGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUssTUFBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxPQUFTO0FBQ2hELGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUssT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxh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RyxLQUFLLFNBQVM7QUFDbkMsUUFBSSxVQUFVLFNBQVM7QUFDckIsY0FBUSxNQUFNLElBQUk7QUFBQSxJQUNwQjtBQUFBLEVBQ0Y7QUFDRjtBQUVBLGVBQWUsa0JBQWtCLGFBQXFCO0FBQ3BELFFBQU0sUUFBUSxJQUFJO0FBQUEsSUFDaEIsNkJBQTZCLFdBQVc7QUFBQTtBQUFBLEVBRTFDO0FBQ0EsTUFBSTtBQUNGLFVBQU0sV0FBVyxNQUFNLG1CQUFtQixXQUFXO0FBRXJELFVBQU0sYUFBYSxrQkFBa0IsUUFBUTtBQUM3QyxRQUFJLENBQUMsWUFBWTtBQUNmLFlBQU07QUFBQSxJQUNSO0FBRUEsVUFBTSxRQUFRLG9CQUFvQixVQUFVO0FBQzVDLFFBQUksQ0FBQyxPQUFPO0FBQ1YsWUFBTTtBQUFBLElBQ1I7QUFBQSxFQUNGLFFBQVE7QUFDTixVQUFNO0FBQUEsRUFDUjtBQUNGOyIsCiAgIm5hbWVzIjogWyJkZWZhdWx0cyIsICJwIiwgImMiLCAibCIsICJ0ZXh0IiwgInMiLCAidHR5IiwgImlzQ29sb3JTdXBwb3J0ZWQiLCAicmVwbGFjZUNsb3NlIiwgImNyZWF0ZUNvbG9ycyIsICJjIiwgImVudiIsICJhbnNpUmVnZXgiLCAic3RyaXBBbnNpIiwgIl8iLCAibSIsICJnZXRDb2xvciIsICJjcmVhdGVDb25zb2xhIiwgImlzQ0kiLCAidW5pY29kZSIsICJzIiwgInRleHQiLCAiYyIsICJsIiwgImMiLCAicCIsICJqIiwgImRlZmF1bHRzIiwgInJlZ2V4IiwgImYiLCAiaiIsICJIIiwgIksiLCAiVyIsICJNIiwgIkgyIiwgImIiLCAiYyIsICJnIiwgImgiLCAicCIsICJzdGRvdXQiXQp9Cg==
|